diff --git a/assets/Script/GameManager.ts b/assets/Script/GameManager.ts index 8db84e2..a50095f 100644 --- a/assets/Script/GameManager.ts +++ b/assets/Script/GameManager.ts @@ -8,7 +8,7 @@ import { MiniGameManager } from "./Sdk/MiniGameManager"; import { MiniGameSdk } from "./Sdk/MiniGameSdk"; -const {ccclass, property} = cc._decorator; +const { ccclass, property } = cc._decorator; @ccclass export default class GameManager extends cc.Component { @@ -18,33 +18,33 @@ export default class GameManager extends cc.Component { @property text: string = 'hello'; - static _instance : GameManager = null; + static _instance: GameManager = null; - @property({type: [cc.Prefab], tooltip:"方块数组"}) - Block_Array : Array = []; + @property({ type: [cc.Prefab], tooltip: "方块数组" }) + Block_Array: Array = []; - @property({type: [cc.Prefab], tooltip:"墙壁数组"}) - Wall_Prefab : Array = []; + @property({ type: [cc.Prefab], tooltip: "墙壁数组" }) + Wall_Prefab: Array = []; - @property({type: [cc.SpriteAtlas], tooltip:"方块颜色"}) - Block_Color : Array = []; + @property({ type: [cc.SpriteAtlas], tooltip: "方块颜色" }) + Block_Color: Array = []; particleEffects: cc.ParticleAsset[]; // @property({type: [cc.ParticleSystem], tooltip:"粒子数组"}) // particleEffects : Array = []; - load1 :boolean = false; - load2 :boolean = false; - load3 :boolean = false; - load4 :boolean = false; - load5 :boolean = false; + load1: boolean = false; + load2: boolean = false; + load3: boolean = false; + load4: boolean = false; + load5: boolean = false; scheduleCallback: any; timeNumber: number; - + // LIFE-CYCLE CALLBACKS: - onLoad () { + onLoad() { window.initMgr(); this.timeNumber = 3; @@ -52,14 +52,14 @@ export default class GameManager extends cc.Component { cc.fx.GameConfig.init(true); cc.fx.GameConfig.GM_INFO.gameState = false; this.readMusicConfig(); - console.log("音乐开关",cc.fx.GameConfig.GM_INFO.musicOpen); + console.log("音乐开关", cc.fx.GameConfig.GM_INFO.musicOpen); cc.fx.AudioManager._instance.playMusicGame(); - this.load1 = this.load2 = this.load3 = this.load4 = this.load5 =false; + this.load1 = this.load2 = this.load3 = this.load4 = this.load5 = false; setTimeout(() => { this.readUserData(); }, 200); - + if (GameManager._instance == null) { GameManager._instance = this; @@ -73,8 +73,7 @@ export default class GameManager extends cc.Component { const path2 = 'prefab/wall'; cc.resources.loadDir(path, cc.Prefab, (err, assets: cc.Prefab[]) => { if (err) { - - console.error('动态加载 Prefab 失败:', err); + console.log('动态加载 block 失败:', err); cc.director.loadScene("LoadScene"); return; } @@ -87,7 +86,7 @@ export default class GameManager extends cc.Component { cc.resources.loadDir(path2, cc.Prefab, (err, assets: cc.Prefab[]) => { if (err) { - console.error('动态加载 Prefab 失败:', err); + console.log('动态加载 wall 失败:', err); cc.director.loadScene("LoadScene"); return; } @@ -98,18 +97,8 @@ export default class GameManager extends cc.Component { this.setWallPrefabSort(); }); - // debugger; - // setTimeout(() => { - // cc.director.preloadScene("HomeScene", (err) => { - // if (err) { - // console.error('预加载 HomeScene 场景失败:', err); - // return; - // } - // }); - // }, 1000); - - // 检测微信小游戏切到后台 + // 检测微信小游戏切到后台 if (cc.sys.platform === cc.sys.WECHAT_GAME) { //@ts-ignore wx.onHide(() => { @@ -124,12 +113,12 @@ export default class GameManager extends cc.Component { } - onHide () { + onHide() { cc.audioEngine.stopMusic(); cc.game.pause(); } - onShow () { + onShow() { cc.audioEngine.resumeMusic(); cc.game.resume(); } @@ -138,10 +127,10 @@ export default class GameManager extends cc.Component { } - + setWallPrefabSort() { - const order = ['down', 'downLeft', 'downRight', 'left','right','up','upLeft','upRight']; + const order = ['down', 'downLeft', 'downRight', 'left', 'right', 'up', 'upLeft', 'upRight']; this.Wall_Prefab.sort((a, b) => { const indexA = order.indexOf(a.name); const indexB = order.indexOf(b.name); @@ -149,21 +138,21 @@ export default class GameManager extends cc.Component { if (indexB === -1) return -1; return indexA - indexB; }); - + } setParticleSort() { const order = ['top', 'bot', 'rig', 'lef']; this.particleEffects.sort((a, b) => { - const indexA = order.indexOf(a.name.substr(0,3)); - const indexB = order.indexOf(b.name.substr(0,3)); + const indexA = order.indexOf(a.name.substr(0, 3)); + const indexB = order.indexOf(b.name.substr(0, 3)); if (indexA === -1) return 1; if (indexB === -1) return -1; return indexA - indexB; }); } - setSort(){ + setSort() { this.Block_Array.sort((a, b) => { // 从名称中提取数字部分 const numberA = parseInt(a.name.match(/\d+/)?.[0] || '0', 10); @@ -172,20 +161,20 @@ export default class GameManager extends cc.Component { }); } - start () { + start() { } - startGame(){ - console.log("进入场景之前_____________",cc.fx.GameConfig.GM_INFO.first); + startGame() { + console.log("进入场景之前_____________", cc.fx.GameConfig.GM_INFO.first); cc.director.loadScene("HomeScene"); } - returnHome(){ + returnHome() { cc.tween(this.node.getChildByName("Game")) - .to(0.5, {opacity: 100}) + .to(0.5, { opacity: 100 }) .call(() => { - + // 预加载成功后加载场景 cc.director.loadScene("HomeScene", (err) => { if (err) { @@ -197,86 +186,86 @@ export default class GameManager extends cc.Component { }) .start(); - cc.tween(this.node.getChildByName("mask")) - .to(0.5,{opacity: 255}) + cc.tween(this.node.getChildByName("mask")) + .to(0.5, { opacity: 255 }) .start(); // cc.loader.releaseAll(); // 预加载 HomeScene 场景 - + } - readUserData(retryCount = 0){ + readUserData(retryCount = 0) { //@ts-ignore - if (typeof wx !== 'undefined' && wx !== null) { - let levelInfo = cc.fx.StorageMessage.getStorage("level"); - //旧的读取数据设置数据方法,以强联网为主 - if(levelInfo == undefined || levelInfo == "" || levelInfo == null){ - this.oldReadData(retryCount); - } - //新的读取数据设置方法,以本地为主 - else{ - this.newReadData(); - } - console.log("即将读取体力值"); - cc.fx.GameTool.getHealth((data)=>{ - console.log("体力值完成进入游戏"); - this.load5 = true; - }); + if (typeof wx !== 'undefined' && wx !== null) { + let levelInfo = cc.fx.StorageMessage.getStorage("level"); + //旧的读取数据设置数据方法,以强联网为主 + if (levelInfo == undefined || levelInfo == "" || levelInfo == null) { + this.oldReadData(retryCount); + } + //新的读取数据设置方法,以本地为主 + else { + this.newReadData(); + } + console.log("即将读取体力值"); + cc.fx.GameTool.getHealth((data) => { + console.log("体力值完成进入游戏"); + this.load5 = true; + }); - } - else{ + } + else { this.load3 = true; this.load4 = true; this.load5 = true; cc.fx.GameTool.getHealth(null); - } + } // 存储用户数据 } - readMusicConfig(){ + readMusicConfig() { let audioInfo = cc.fx.StorageMessage.getStorage("music"); - if(audioInfo == undefined || audioInfo == "" || audioInfo == null){ + if (audioInfo == undefined || audioInfo == "" || audioInfo == null) { audioInfo = { "musicOpen": true, //音乐 "effectOpen": true, //音效 "vibrateOpen": true, //震动 } - cc.fx.StorageMessage.setStorage("music",audioInfo); + cc.fx.StorageMessage.setStorage("music", audioInfo); } - else{ + else { cc.fx.GameConfig.GM_INFO.musicOpen = audioInfo.musicOpen; cc.fx.GameConfig.GM_INFO.effectOpen = audioInfo.effectOpen; cc.fx.GameConfig.GM_INFO.vibrateOpen = audioInfo.vibrateOpen; } } - + //新用户,有本地缓存读取配置 - newReadData(){ + newReadData() { console.log("读取新信息"); let openid = cc.fx.StorageMessage.getStorage("openid"); - if(openid == null || openid == "" || openid == undefined){ + if (openid == null || openid == "" || openid == undefined) { console.log("没有openid"); //@ts-ignore wx.cloud.callFunction({ - name: 'userData', + name: 'userData', data: { action: 'read' }, success: res => { console.log('读取用户数据成功', res.result) - if(res.result.code == 404 && res.result.message == "未找到用户数据"){ + if (res.result.code == 404 && res.result.message == "未找到用户数据") { } - else if(res.result.code == 200){ - if(res.result.data){ + else if (res.result.code == 200) { + if (res.result.data) { cc.fx.GameConfig.GM_INFO.openid = res.result.openid; cc.fx.GameConfig.GM_INFO.username = res.result.data.username; cc.fx.GameConfig.GM_INFO.useravatar = res.result.data.useravatar; const register_time = res.result.data.register_time; MiniGameSdk.API.shushu_userSet(register_time); - cc.fx.StorageMessage.setStorage("openid",cc.fx.GameConfig.GM_INFO.openid); + cc.fx.StorageMessage.setStorage("openid", cc.fx.GameConfig.GM_INFO.openid); } } }, @@ -285,118 +274,118 @@ export default class GameManager extends cc.Component { } }) } - else{ - if(openid) + else { + if (openid) cc.fx.GameConfig.GM_INFO.openid = openid; } - + //等级信息 - cc.fx.GameTool.getUserLevel((data) =>{ + cc.fx.GameTool.getUserLevel((data) => { const timestamp = Date.now(); let levelInfo = cc.fx.StorageMessage.getStorage("level"); - if(data.result.code == 404 && data.result.message == "未找到关卡数据"){ + if (data.result.code == 404 && data.result.message == "未找到关卡数据") { // console.log("没有等级信息,从用户接口拿到数据"); - if(levelInfo.level){ + if (levelInfo.level) { cc.fx.GameConfig.GM_INFO.level = levelInfo.level; } this.load4 = true; - cc.fx.GameTool.setUserLevel((data)=>{ + cc.fx.GameTool.setUserLevel((data) => { }); - } - else if(data.result.code == 200){ + } + else if (data.result.code == 200) { // console.log("有等级信息,从关卡接口拿到数据",data.result.data); //游戏前端存储 新于服务器端,以游戏前端信息为主,放服务器存储 let temp = data.result.timestamp - levelInfo.timestamp; - console.log("等级时间差:",temp); - if((data.result.timestamp - levelInfo.timestamp) < 10000){ - if(levelInfo.level){ - console.log("以游戏前端等级为准",data.result.data); + console.log("等级时间差:", temp); + if ((data.result.timestamp - levelInfo.timestamp) < 10000) { + if (levelInfo.level) { + console.log("以游戏前端等级为准", data.result.data); cc.fx.GameConfig.GM_INFO.level = levelInfo.level; // console.log("等级为:",cc.fx.GameConfig.GM_INFO.level); - cc.fx.GameTool.setUserLevel((data)=>{ + cc.fx.GameTool.setUserLevel((data) => { }); } } //服务器端存储时间新于游戏端,以服务器端为主,往前端存储 - else{ - console.log("以服务器等级为准",data.result.data); - cc.fx.GameConfig.GM_INFO.level = data.result.data; + else { + console.log("以服务器等级为准", data.result.data); + cc.fx.GameConfig.GM_INFO.level = data.result.data; levelInfo.level = cc.fx.GameConfig.GM_INFO.level; levelInfo.timestamp = timestamp; // console.log("1111111存储关卡数据:",cc.fx.GameConfig.GM_INFO.level); - cc.fx.StorageMessage.setStorage("level",levelInfo); + cc.fx.StorageMessage.setStorage("level", levelInfo); } this.load4 = true; } }); //金币信息 - cc.fx.GameTool.getUserCoin((data) =>{ + cc.fx.GameTool.getUserCoin((data) => { const timestamp = Date.now(); let coinInfo = cc.fx.StorageMessage.getStorage("coin"); - if(data.result.code == 404 && data.result.message == "未找到金币数据"){ - if(coinInfo.coin) + if (data.result.code == 404 && data.result.message == "未找到金币数据") { + if (coinInfo.coin) cc.fx.GameConfig.GM_INFO.coin = coinInfo.coin; - console.log("没有金币信息,从用户接口拿到数据",cc.fx.GameConfig.GM_INFO.coin); + console.log("没有金币信息,从用户接口拿到数据", cc.fx.GameConfig.GM_INFO.coin); this.load3 = true; - cc.fx.GameTool.setUserCoin((data)=>{ + cc.fx.GameTool.setUserCoin((data) => { }); - } - else if(data.result.code == 200){ + } + else if (data.result.code == 200) { // console.log("有金币信息,从金币接口拿到数据",data.result.data); //游戏前端存储 新于服务器端,以游戏前端信息为主,放服务器存储 let temp = data.result.timestamp - coinInfo.timestamp; - console.log("金币时间差:",temp); - if((data.result.timestamp - coinInfo.timestamp) < 10000){ - console.log("以前端金幣为准:",coinInfo); - if(coinInfo.coin) + console.log("金币时间差:", temp); + if ((data.result.timestamp - coinInfo.timestamp) < 10000) { + console.log("以前端金幣为准:", coinInfo); + if (coinInfo.coin) cc.fx.GameConfig.GM_INFO.coin = coinInfo.coin; - else{ + else { cc.fx.GameConfig.GM_INFO.coin = data.result.data; coinInfo.coin = cc.fx.GameConfig.GM_INFO.coin; coinInfo.timestamp = timestamp; console.log("11111111111"); - cc.fx.StorageMessage.setStorage("coin",coinInfo); + cc.fx.StorageMessage.setStorage("coin", coinInfo); } - console.log("改变后金币:",cc.fx.GameConfig.GM_INFO.coin); - cc.fx.GameTool.setUserCoin((data)=>{ + console.log("改变后金币:", cc.fx.GameConfig.GM_INFO.coin); + cc.fx.GameTool.setUserCoin((data) => { }); } //服务器端存储时间新于游戏端,以服务器端为主,往前端存储 - else{ - console.log("以服务器金幣为准:",data.result.data); - cc.fx.GameConfig.GM_INFO.coin = data.result.data; + else { + console.log("以服务器金幣为准:", data.result.data); + cc.fx.GameConfig.GM_INFO.coin = data.result.data; coinInfo.coin = cc.fx.GameConfig.GM_INFO.coin; coinInfo.timestamp = timestamp; console.log("2222222222"); - cc.fx.StorageMessage.setStorage("coin",coinInfo); + cc.fx.StorageMessage.setStorage("coin", coinInfo); } this.load3 = true; - } + } }); //道具信息 - cc.fx.GameTool.getUserProp((data) =>{ + cc.fx.GameTool.getUserProp((data) => { const timestamp = Date.now(); let propInfo = cc.fx.StorageMessage.getStorage("prop"); - if(data.result.code == 404 && data.result.message == "未找到道具数据"){ - console.log("没有道具信息,从用户接口拿到数据",propInfo); - if(propInfo.freezeAmount == undefined || propInfo.hammerAmount == undefined || propInfo.magicAmount == undefined){ - console.log("2222222道具数据异常"); - cc.fx.GameConfig.GM_INFO.freezeAmount = 0; - cc.fx.GameConfig.GM_INFO.hammerAmount = 0; - cc.fx.GameConfig.GM_INFO.magicAmoun = 0; - let propInfoNew = { - "freezeAmount":cc.fx.GameConfig.GM_INFO.freezeAmount, - "hammerAmount":cc.fx.GameConfig.GM_INFO.hammerAmount, - "magicAmount":cc.fx.GameConfig.GM_INFO.magicAmoun, - "timestamp":timestamp - } - console.log("1111111上传道具信息:",propInfoNew); - cc.fx.StorageMessage.setStorage("prop",propInfoNew); + if (data.result.code == 404 && data.result.message == "未找到道具数据") { + console.log("没有道具信息,从用户接口拿到数据", propInfo); + if (propInfo.freezeAmount == undefined || propInfo.hammerAmount == undefined || propInfo.magicAmount == undefined) { + console.log("2222222道具数据异常"); + cc.fx.GameConfig.GM_INFO.freezeAmount = 0; + cc.fx.GameConfig.GM_INFO.hammerAmount = 0; + cc.fx.GameConfig.GM_INFO.magicAmoun = 0; + let propInfoNew = { + "freezeAmount": cc.fx.GameConfig.GM_INFO.freezeAmount, + "hammerAmount": cc.fx.GameConfig.GM_INFO.hammerAmount, + "magicAmount": cc.fx.GameConfig.GM_INFO.magicAmoun, + "timestamp": timestamp + } + console.log("1111111上传道具信息:", propInfoNew); + cc.fx.StorageMessage.setStorage("prop", propInfoNew); } - else{ + else { // cc.fx.GameConfig.GM_INFO.freezeAmount = data.result.data.freeze; // cc.fx.GameConfig.GM_INFO.hammerAmount = data.result.data.hammer; // cc.fx.GameConfig.GM_INFO.magicAmount = data.result.data.magic_wand; @@ -405,235 +394,235 @@ export default class GameManager extends cc.Component { cc.fx.GameConfig.GM_INFO.magicAmount = propInfo.magicAmount; } - + // cc.fx.GameConfig.GM_INFO.freezeAmount = propInfo.freezeAmount; // cc.fx.GameConfig.GM_INFO.hammerAmount = propInfo.hammerAmount; // cc.fx.GameConfig.GM_INFO.magicAmount = propInfo.magicAmount; - cc.fx.GameTool.setUserProp(0,0,(data)=>{ + cc.fx.GameTool.setUserProp(0, 0, (data) => { }); - } - else if(data.result.code == 200){ + } + else if (data.result.code == 200) { // console.log("本地时间戳",propInfo.timestamp,"服务器时间戳",data.result.timestamp); - if((data.result.timestamp - propInfo.timestamp) < 10000){ - console.log("以前端道具为主:",propInfo); - if(propInfo.freezeAmount == undefined || propInfo.hammerAmount == undefined || propInfo.magicAmount == undefined){ - console.log("111111道具数据异常",data.result.data); + if ((data.result.timestamp - propInfo.timestamp) < 10000) { + console.log("以前端道具为主:", propInfo); + if (propInfo.freezeAmount == undefined || propInfo.hammerAmount == undefined || propInfo.magicAmount == undefined) { + console.log("111111道具数据异常", data.result.data); cc.fx.GameConfig.GM_INFO.freezeAmount = data.result.data.freeze; cc.fx.GameConfig.GM_INFO.hammerAmount = data.result.data.hammer; cc.fx.GameConfig.GM_INFO.magicAmount = data.result.data.magic_wand; let propInfoNew = { - "freezeAmount":cc.fx.GameConfig.GM_INFO.freezeAmount, - "hammerAmount":cc.fx.GameConfig.GM_INFO.hammerAmount, - "magicAmount":cc.fx.GameConfig.GM_INFO.magicAmount, - "timestamp":timestamp + "freezeAmount": cc.fx.GameConfig.GM_INFO.freezeAmount, + "hammerAmount": cc.fx.GameConfig.GM_INFO.hammerAmount, + "magicAmount": cc.fx.GameConfig.GM_INFO.magicAmount, + "timestamp": timestamp } - console.log("333333上传道具信息:",propInfoNew); - cc.fx.StorageMessage.setStorage("prop",propInfoNew); + console.log("333333上传道具信息:", propInfoNew); + cc.fx.StorageMessage.setStorage("prop", propInfoNew); } - else{ + else { console.log("道具数据正常"); cc.fx.GameConfig.GM_INFO.freezeAmount = propInfo.freezeAmount; cc.fx.GameConfig.GM_INFO.hammerAmount = propInfo.hammerAmount; cc.fx.GameConfig.GM_INFO.magicAmount = propInfo.magicAmount; - cc.fx.GameTool.setUserProp(0,0,(data)=>{ + cc.fx.GameTool.setUserProp(0, 0, (data) => { }); } } - else{ + else { cc.fx.GameConfig.GM_INFO.freezeAmount = data.result.data.freeze; cc.fx.GameConfig.GM_INFO.hammerAmount = data.result.data.hammer; cc.fx.GameConfig.GM_INFO.magicAmount = data.result.data.magic_wand; let propInfoNew = { - "freezeAmount":cc.fx.GameConfig.GM_INFO.freezeAmount, - "hammerAmount":cc.fx.GameConfig.GM_INFO.hammerAmount, - "magicAmount":cc.fx.GameConfig.GM_INFO.magicAmount, - "timestamp":timestamp + "freezeAmount": cc.fx.GameConfig.GM_INFO.freezeAmount, + "hammerAmount": cc.fx.GameConfig.GM_INFO.hammerAmount, + "magicAmount": cc.fx.GameConfig.GM_INFO.magicAmount, + "timestamp": timestamp } - console.log("22222222上传道具信息:",propInfoNew,data.result); - cc.fx.StorageMessage.setStorage("prop",propInfoNew); + console.log("22222222上传道具信息:", propInfoNew, data.result); + cc.fx.StorageMessage.setStorage("prop", propInfoNew); } - } + } }); } //旧用户,无本地缓存读取配置 - oldReadData(retryCount:number){ + oldReadData(retryCount: number) { console.log("读取旧信息"); const MAX_RETRIES = 15; const timestamp = Date.now(); // 读取用户数据 //@ts-ignore wx.cloud.callFunction({ - name: 'userData', - data: { - action: 'read' - }, - success: res => { - console.log('读取用户数据成功', res.result) - if(res.result.code == 404 && res.result.message == "未找到用户数据"){ - if(res.result.openid){ - cc.fx.GameConfig.GM_INFO.openid = res.result.openid - } - cc.fx.GameConfig.GM_INFO.first = true; - this.load3 = true; - this.load4 = true; - let levelInfo = {"level":0,"timestamp":timestamp}; - cc.fx.StorageMessage.setStorage("level",levelInfo); - let coinInfo = {"coin":0,"timestamp":timestamp}; - console.log("33333333333"); - cc.fx.StorageMessage.setStorage("coin",coinInfo); - let propInfo = { - "freezeAmount":0, - "hammerAmount":0, - "magicAmount":0, - "timestamp":timestamp, - } - cc.fx.StorageMessage.setStorage("prop",propInfo); - - - cc.fx.GameTool.setUserInfo((data)=>{ - if(data.result.code == 200){ - console.log("上传用户信息成功",data); - //@ts-ignore - wx.cloud.callFunction({ - name: 'userData', - data: { - action: 'read' - }, - success: res => { - console.log("上传后,读取用户信息,为上报注册时间") - if(res.result.code == 200){ - const time = res.result.data.register_time; - MiniGameSdk.API.shushu_userSet(time); - } - } - }) + name: 'userData', + data: { + action: 'read' + }, + success: res => { + console.log('读取用户数据成功', res.result) + if (res.result.code == 404 && res.result.message == "未找到用户数据") { + if (res.result.openid) { + cc.fx.GameConfig.GM_INFO.openid = res.result.openid } - }); - console.log("服务器也没有金币信息",cc.fx.GameConfig.GM_INFO.coin); - cc.fx.GameTool.setUserCoin(cc.fx.GameConfig.GM_INFO.coin,(data)=>{ - - }); - cc.fx.GameTool.setUserLevel((data)=>{ - }); - setTimeout(() => { - cc.fx.GameConfig.GM_INFO.freezeAmount = 0; - cc.fx.GameConfig.GM_INFO.hammerAmount = 0; - cc.fx.GameConfig.GM_INFO.magicAmount = 0; - cc.fx.GameTool.setUserProp(0,0,(data)=>{ - if(data.result.code == 200){ - console.log("上传道具信息成功",data); - } - else{ - MiniGameSdk.API.showToast("网络异常,正在努力加载"); - setTimeout(() => { - this.oldReadData(0); - }, 1000); + cc.fx.GameConfig.GM_INFO.first = true; + this.load3 = true; + this.load4 = true; + let levelInfo = { "level": 0, "timestamp": timestamp }; + cc.fx.StorageMessage.setStorage("level", levelInfo); + let coinInfo = { "coin": 0, "timestamp": timestamp }; + console.log("33333333333"); + cc.fx.StorageMessage.setStorage("coin", coinInfo); + let propInfo = { + "freezeAmount": 0, + "hammerAmount": 0, + "magicAmount": 0, + "timestamp": timestamp, + } + cc.fx.StorageMessage.setStorage("prop", propInfo); + + + cc.fx.GameTool.setUserInfo((data) => { + if (data.result.code == 200) { + console.log("上传用户信息成功", data); + //@ts-ignore + wx.cloud.callFunction({ + name: 'userData', + data: { + action: 'read' + }, + success: res => { + console.log("上传后,读取用户信息,为上报注册时间") + if (res.result.code == 200) { + const time = res.result.data.register_time; + MiniGameSdk.API.shushu_userSet(time); + } + } + }) } }); - }, 0); - } - else if(res.result.code == 200){ - if(res.result.data){ - cc.fx.GameConfig.GM_INFO.openid = res.result.openid; - cc.fx.GameConfig.GM_INFO.level = res.result.data.level; - cc.fx.GameConfig.GM_INFO.coin = res.result.data.coinAmount; - cc.fx.GameConfig.GM_INFO.freezeAmount = res.result.data.freezeAmount; - cc.fx.GameConfig.GM_INFO.hammerAmount = res.result.data.hammerAmount; - cc.fx.GameConfig.GM_INFO.magicAmount = res.result.data.magicAmount; - cc.fx.GameConfig.GM_INFO.username = res.result.data.username; - cc.fx.GameConfig.GM_INFO.useravatar = res.result.data.useravatar; - cc.fx.StorageMessage.setStorage("openid",cc.fx.GameConfig.GM_INFO.openid); - const register_time = res.result.data.register_time; - MiniGameSdk.API.shushu_userSet(register_time); - } - setTimeout(() => { - cc.fx.GameTool.getUserCoin((data) =>{ - if(data.result.code == 404 && data.result.message == "未找到金币数据"){ - - let coinInfo = {"coin":0,"timestamp":timestamp}; - cc.fx.GameConfig.GM_INFO.coin = 0; - cc.fx.StorageMessage.setStorage("coin",coinInfo); - console.log("没有金币信息,从用户接口拿到数据",cc.fx.GameConfig.GM_INFO.coin); - cc.fx.GameTool.setUserCoin((data)=>{ - // console.log("上传",data); - this.load3 = true; - }); - } - else if(data.result.code == 200){ - // console.log("有金币信息,从金币接口拿到数据",data.result.data); - cc.fx.GameConfig.GM_INFO.coin = data.result.data; - let coinInfo = {"coin":cc.fx.GameConfig.GM_INFO.coin,"timestamp":timestamp}; - console.log("存储金币信息:",cc.fx.GameConfig.GM_INFO.coin); - console.log("4444444444"); - cc.fx.StorageMessage.setStorage("coin",coinInfo); - this.load3 = true; - } - }) - }, 500); + console.log("服务器也没有金币信息", cc.fx.GameConfig.GM_INFO.coin); + cc.fx.GameTool.setUserCoin(cc.fx.GameConfig.GM_INFO.coin, (data) => { - cc.fx.GameTool.getUserLevel((data) =>{ - if(data.result.code == 404 && data.result.message == "未找到关卡数据"){ - console.log("没有等级信息,从用户接口拿到数据"); - let levelInfo = {"level":0,"timestamp":timestamp}; - // console.log("333333存储关卡数据:",levelInfo); - cc.fx.GameConfig.GM_INFO.level = 0; - cc.fx.StorageMessage.setStorage("level",levelInfo); - cc.fx.GameTool.setUserLevel((data)=>{ - console.log("拿到的数据",data); - this.load4 = true; + }); + cc.fx.GameTool.setUserLevel((data) => { + }); + setTimeout(() => { + cc.fx.GameConfig.GM_INFO.freezeAmount = 0; + cc.fx.GameConfig.GM_INFO.hammerAmount = 0; + cc.fx.GameConfig.GM_INFO.magicAmount = 0; + cc.fx.GameTool.setUserProp(0, 0, (data) => { + if (data.result.code == 200) { + console.log("上传道具信息成功", data); + } + else { + MiniGameSdk.API.showToast("网络异常,正在努力加载"); + setTimeout(() => { + this.oldReadData(0); + }, 1000); + } }); - } - else if(data.result.code == 200){ - console.log("有等级信息,从关卡接口拿到数据",data.result.data); - cc.fx.GameConfig.GM_INFO.level = data.result.data; - let levelInfo = {"level":cc.fx.GameConfig.GM_INFO.level,"timestamp":timestamp}; - // console.log("444444存储关卡信息:",levelInfo); - cc.fx.StorageMessage.setStorage("level",levelInfo); - this.load4 = true; + }, 0); + } + else if (res.result.code == 200) { + if (res.result.data) { + cc.fx.GameConfig.GM_INFO.openid = res.result.openid; + cc.fx.GameConfig.GM_INFO.level = res.result.data.level; + cc.fx.GameConfig.GM_INFO.coin = res.result.data.coinAmount; + cc.fx.GameConfig.GM_INFO.freezeAmount = res.result.data.freezeAmount; + cc.fx.GameConfig.GM_INFO.hammerAmount = res.result.data.hammerAmount; + cc.fx.GameConfig.GM_INFO.magicAmount = res.result.data.magicAmount; + cc.fx.GameConfig.GM_INFO.username = res.result.data.username; + cc.fx.GameConfig.GM_INFO.useravatar = res.result.data.useravatar; + cc.fx.StorageMessage.setStorage("openid", cc.fx.GameConfig.GM_INFO.openid); + const register_time = res.result.data.register_time; + MiniGameSdk.API.shushu_userSet(register_time); } - }) - setTimeout(() => { - cc.fx.GameTool.getUserProp((data) =>{ - if(data.result.code == 404 && data.result.message == "未找到道具数据"){ - console.log("没有道具信息,从用户接口拿到数据"); - cc.fx.GameConfig.GM_INFO.freezeAmount = 0; - cc.fx.GameConfig.GM_INFO.hammerAmount = 0; - cc.fx.GameConfig.GM_INFO.magicAmount = 0; - let propInfo = { - "freezeAmount":0, - "hammerAmount":0, - "magicAmount":0, - "timestamp":timestamp, - } - console.log("上传道具信息:",propInfo); - cc.fx.StorageMessage.setStorage("prop",propInfo); - cc.fx.GameTool.setUserProp(0,0,(data)=>{ - }); - } - else if(data.result.code == 200){ - console.log("有道具信息,从道具接口拿到数据",data.result.data); - cc.fx.GameConfig.GM_INFO.freezeAmount = data.result.data.freeze || 0; - cc.fx.GameConfig.GM_INFO.hammerAmount = data.result.data.hammer || 0; - cc.fx.GameConfig.GM_INFO.magicAmount = data.result.data.magic_wand || 0; - let propInfo = { - "freezeAmount":cc.fx.GameConfig.GM_INFO.freezeAmount, - "hammerAmount":cc.fx.GameConfig.GM_INFO.hammerAmount, - "magicAmount":cc.fx.GameConfig.GM_INFO.magicAmount, - "timestamp":timestamp, - } - console.log("上传道具信息:",propInfo); - cc.fx.StorageMessage.setStorage("prop",propInfo); + setTimeout(() => { + cc.fx.GameTool.getUserCoin((data) => { + if (data.result.code == 404 && data.result.message == "未找到金币数据") { + let coinInfo = { "coin": 0, "timestamp": timestamp }; + cc.fx.GameConfig.GM_INFO.coin = 0; + cc.fx.StorageMessage.setStorage("coin", coinInfo); + console.log("没有金币信息,从用户接口拿到数据", cc.fx.GameConfig.GM_INFO.coin); + cc.fx.GameTool.setUserCoin((data) => { + // console.log("上传",data); + this.load3 = true; + }); + } + else if (data.result.code == 200) { + // console.log("有金币信息,从金币接口拿到数据",data.result.data); + cc.fx.GameConfig.GM_INFO.coin = data.result.data; + let coinInfo = { "coin": cc.fx.GameConfig.GM_INFO.coin, "timestamp": timestamp }; + console.log("存储金币信息:", cc.fx.GameConfig.GM_INFO.coin); + console.log("4444444444"); + cc.fx.StorageMessage.setStorage("coin", coinInfo); + this.load3 = true; + } + }) + }, 500); + + cc.fx.GameTool.getUserLevel((data) => { + if (data.result.code == 404 && data.result.message == "未找到关卡数据") { + console.log("没有等级信息,从用户接口拿到数据"); + let levelInfo = { "level": 0, "timestamp": timestamp }; + // console.log("333333存储关卡数据:",levelInfo); + cc.fx.GameConfig.GM_INFO.level = 0; + cc.fx.StorageMessage.setStorage("level", levelInfo); + cc.fx.GameTool.setUserLevel((data) => { + console.log("拿到的数据", data); + this.load4 = true; + }); + } + else if (data.result.code == 200) { + console.log("有等级信息,从关卡接口拿到数据", data.result.data); + cc.fx.GameConfig.GM_INFO.level = data.result.data; + let levelInfo = { "level": cc.fx.GameConfig.GM_INFO.level, "timestamp": timestamp }; + // console.log("444444存储关卡信息:",levelInfo); + cc.fx.StorageMessage.setStorage("level", levelInfo); + this.load4 = true; } }) - }, 0); - - } + setTimeout(() => { + cc.fx.GameTool.getUserProp((data) => { + if (data.result.code == 404 && data.result.message == "未找到道具数据") { + console.log("没有道具信息,从用户接口拿到数据"); + cc.fx.GameConfig.GM_INFO.freezeAmount = 0; + cc.fx.GameConfig.GM_INFO.hammerAmount = 0; + cc.fx.GameConfig.GM_INFO.magicAmount = 0; + let propInfo = { + "freezeAmount": 0, + "hammerAmount": 0, + "magicAmount": 0, + "timestamp": timestamp, + } + console.log("上传道具信息:", propInfo); + cc.fx.StorageMessage.setStorage("prop", propInfo); + cc.fx.GameTool.setUserProp(0, 0, (data) => { + }); + } + else if (data.result.code == 200) { + console.log("有道具信息,从道具接口拿到数据", data.result.data); + cc.fx.GameConfig.GM_INFO.freezeAmount = data.result.data.freeze || 0; + cc.fx.GameConfig.GM_INFO.hammerAmount = data.result.data.hammer || 0; + cc.fx.GameConfig.GM_INFO.magicAmount = data.result.data.magic_wand || 0; + let propInfo = { + "freezeAmount": cc.fx.GameConfig.GM_INFO.freezeAmount, + "hammerAmount": cc.fx.GameConfig.GM_INFO.hammerAmount, + "magicAmount": cc.fx.GameConfig.GM_INFO.magicAmount, + "timestamp": timestamp, + } + console.log("上传道具信息:", propInfo); + cc.fx.StorageMessage.setStorage("prop", propInfo); - }, - fail: err => { - console.error('读取用户数据失败', err) - if (retryCount < MAX_RETRIES) { + } + }) + }, 0); + + } + + }, + fail: err => { + console.error('读取用户数据失败', err) + if (retryCount < MAX_RETRIES) { console.error(`读取用户数据失败,第 ${retryCount + 1} 次重试,错误信息:`, err); // 延迟 2 秒后重试 setTimeout(() => { @@ -648,32 +637,32 @@ export default class GameManager extends cc.Component { }) } - setUserData(){ - cc.fx.GameConfig.GameTool((data)=>{ - console.log("上传",data); + setUserData() { + cc.fx.GameConfig.GameTool((data) => { + console.log("上传", data); }) } - startTimeCutDown(){ - this.scheduleCallback = function(){ - if(this.timeNumber <= 0){ + startTimeCutDown() { + this.scheduleCallback = function () { + if (this.timeNumber <= 0) { this.stopTimeCutDown(); } - else{ + else { this.timeNumber -= 1; } }.bind(this); this.schedule(this.scheduleCallback, 1); } - stopTimeCutDown(){ - if(this.scheduleCallback){ + stopTimeCutDown() { + if (this.scheduleCallback) { this.unschedule(this.scheduleCallback); } } - update (dt) { - if(this.load1 && this.load2 && this.load3 && this.load4 && this.load5 && this.timeNumber <= 0){ + update(dt) { + if (this.load1 && this.load2 && this.load3 && this.load4 && this.load5 && this.timeNumber <= 0) { this.load1 = this.load2 = false; MiniGameSdk.API.shushu_Init(); this.startGame(); diff --git a/assets/Script/Map.ts b/assets/Script/Map.ts index df615e5..d39f3f4 100644 --- a/assets/Script/Map.ts +++ b/assets/Script/Map.ts @@ -137,13 +137,10 @@ export default class MapConroler extends cc.Component { this.homeCanTouch = true; this.againCanTouch = true; this.new_mode = 0; -<<<<<<< HEAD this.count_Time = 0; this.add_Time = 0; - -======= ->>>>>>> 0a31a7a5abc2c505bf743aa596e1c765a0405152 + this.iceLabel.string = cc.fx.GameConfig.GM_INFO.freezeAmount.toString(); this.hammerLabel.string = cc.fx.GameConfig.GM_INFO.hammerAmount.toString(); this.magicLabel.string = cc.fx.GameConfig.GM_INFO.magicAmount.toString(); @@ -191,14 +188,10 @@ export default class MapConroler extends cc.Component { this.timeLabel = this.node.parent.getChildByName("Top").getChildByName("time"); this.levelLabel = this.node.parent.getChildByName("Top").getChildByName("level"); this.timeNumber = cc.fx.GameConfig.LEVEL_INFO[0].time; -<<<<<<< HEAD - NumberToImage.getTimeMargin(this.timeNumber,50,"time_",this.timeLabel) -======= this.count_Time = 0; this.add_Time = 0; NumberToImage.getTimeMargin(this.timeNumber, 50, "time_", this.timeLabel) ->>>>>>> 0a31a7a5abc2c505bf743aa596e1c765a0405152 // var timeTemp = cc.fx.GameTool.getTimeMargin(this.timeNumber); // this.timeLabel.string = timeTemp.toString(); NumberToImage.numberToImageNodes((cc.fx.GameConfig.GM_INFO.level + 1), 50, 20, "level_", this.levelLabel, false) @@ -225,18 +218,12 @@ export default class MapConroler extends cc.Component { this.mapBlockArray = []; this.freezeArray = []; this.loackArray = []; -<<<<<<< HEAD this.count_Time = 0; this.add_Time = 0; - - let startX = this.mapWidth%2==0?-(this.mapWidth-1)*60:-(this.mapWidth-1)*60; - let startY = this.mapHeight%2==0?-(this.mapHeight-1)*60:-(this.mapHeight-1)*60; -======= let startX = this.mapWidth % 2 == 0 ? -(this.mapWidth - 1) * 60 : -(this.mapWidth - 1) * 60; let startY = this.mapHeight % 2 == 0 ? -(this.mapHeight - 1) * 60 : -(this.mapHeight - 1) * 60; ->>>>>>> 0a31a7a5abc2c505bf743aa596e1c765a0405152 // startX =(this.mapWidth-1)*60 + 60; // startY =-(this.mapHeight-1)*60 - 60; @@ -1298,15 +1285,7 @@ export default class MapConroler extends cc.Component { this.stopTimeCutDown(); // console.log("成功消除一个"); cc.fx.GameTool.changeCoin(40); -<<<<<<< HEAD - cc.fx.GameTool.addLevel(this.count_Time,this.add_Time); -======= - let timeData = { - count_Time: this.count_Time, - add_Time: this.add_Time - } - cc.fx.GameTool.addLevel(timeData); ->>>>>>> 0a31a7a5abc2c505bf743aa596e1c765a0405152 + cc.fx.GameTool.addLevel(this.count_Time, this.add_Time); this.check_NewMode(); setTimeout(() => { @@ -1333,15 +1312,9 @@ export default class MapConroler extends cc.Component { cc.fx.AudioManager._instance.playEffect("anniu_Big", null); if (cc.fx.GameConfig.GM_INFO.level > 156) { cc.fx.GameConfig.GM_INFO.level = 156; -<<<<<<< HEAD // MapConroler._instance = null; - - if(this.new_mode == 3){ -======= - MapConroler._instance = null; if (this.new_mode == 3) { ->>>>>>> 0a31a7a5abc2c505bf743aa596e1c765a0405152 this.node.parent.parent.getChildByName("Win").active = false; this.openNewMode(2); cc.fx.GameConfig.LEVEL_INFO_init(false, 0); @@ -1371,15 +1344,9 @@ export default class MapConroler extends cc.Component { else { // console.log("下一关"); -<<<<<<< HEAD // MapConroler._instance = null; - - if(this.new_mode == 3){ -======= - MapConroler._instance = null; if (this.new_mode == 3) { ->>>>>>> 0a31a7a5abc2c505bf743aa596e1c765a0405152 this.node.parent.parent.getChildByName("Win").active = false; this.openNewMode(2); cc.fx.GameConfig.LEVEL_INFO_init(false, 0); @@ -1412,15 +1379,9 @@ export default class MapConroler extends cc.Component { if (!this.againCanTouch) return; this.againCanTouch = false; -<<<<<<< HEAD - - // MapConroler._instance = null; - cc.fx.AudioManager._instance.playEffect("zhuan1",null); -======= - MapConroler._instance = null; + // MapConroler._instance = null; cc.fx.AudioManager._instance.playEffect("zhuan1", null); ->>>>>>> 0a31a7a5abc2c505bf743aa596e1c765a0405152 this.node.parent.parent.parent.getChildByName("zhuanchang").active = true; this.node.parent.parent.parent.getChildByName("zhuanchang").getComponent(sp.Skeleton).setAnimation(1, "up", false); // this.node.parent.parent.parent.getChildByName("zhuanchang").getComponent(sp.Skeleton).setCompleteListener((entry) => { @@ -1497,15 +1458,9 @@ export default class MapConroler extends cc.Component { return; } // MiniGameSdk.API.showToast("体力值减少"); -<<<<<<< HEAD // MapConroler._instance = null; - cc.fx.GameConfig.LEVEL_INFO_init(false,0); - if(this.new_mode == 3){ -======= - MapConroler._instance = null; cc.fx.GameConfig.LEVEL_INFO_init(false, 0); if (this.new_mode == 3) { ->>>>>>> 0a31a7a5abc2c505bf743aa596e1c765a0405152 this.node.parent.parent.getChildByName("Win").active = false; this.openNewMode(1); return; diff --git a/assets/TextureBlock/block/down.plist b/assets/TextureBlock/block/down.plist index bd84983..000f8b0 100644 --- a/assets/TextureBlock/block/down.plist +++ b/assets/TextureBlock/block/down.plist @@ -4,6 +4,96 @@ frames + 10down1.png + + aliases + + spriteOffset + {0,0} + spriteSize + {122,45} + spriteSourceSize + {122,45} + textureRect + {{1,565},{122,45}} + textureRotated + + + 10down2.png + + aliases + + spriteOffset + {0,0} + spriteSize + {243,45} + spriteSourceSize + {243,45} + textureRect + {{125,565},{243,45}} + textureRotated + + + 10down3.png + + aliases + + spriteOffset + {0,0} + spriteSize + {363,45} + spriteSourceSize + {363,45} + textureRect + {{370,565},{363,45}} + textureRotated + + + 10down4.png + + aliases + + spriteOffset + {0,0} + spriteSize + {45,124} + spriteSourceSize + {45,124} + textureRect + {{735,565},{45,124}} + textureRotated + + + 10down5.png + + aliases + + spriteOffset + {0,0} + spriteSize + {45,245} + spriteSourceSize + {45,245} + textureRect + {{1,612},{45,245}} + textureRotated + + + 10down6.png + + aliases + + spriteOffset + {0,0} + spriteSize + {45,365} + spriteSourceSize + {45,365} + textureRect + {{248,612},{45,365}} + textureRotated + + 1down1.png aliases @@ -15,9 +105,9 @@ spriteSourceSize {122,45} textureRect - {{424,366},{122,45}} + {{1,1},{122,45}} textureRotated - + 1down2.png @@ -30,9 +120,9 @@ spriteSourceSize {243,45} textureRect - {{1035,248},{243,45}} + {{125,1},{243,45}} textureRotated - + 1down3.png @@ -45,9 +135,9 @@ spriteSourceSize {363,45} textureRect - {{424,1},{363,45}} + {{370,1},{363,45}} textureRotated - + 1down4.png @@ -60,9 +150,9 @@ spriteSourceSize {45,124} textureRect - {{1,368},{45,124}} + {{735,1},{45,124}} textureRotated - + 1down5.png @@ -75,9 +165,9 @@ spriteSourceSize {45,245} textureRect - {{847,1},{45,245}} + {{1,48},{45,245}} textureRotated - + 1down6.png @@ -90,9 +180,9 @@ spriteSourceSize {45,365} textureRect - {{1,1},{45,365}} + {{248,48},{45,365}} textureRotated - + 2down1.png @@ -105,9 +195,9 @@ spriteSourceSize {122,45} textureRect - {{471,366},{122,45}} + {{861,1},{122,45}} textureRotated - + 2down2.png @@ -120,9 +210,9 @@ spriteSourceSize {243,45} textureRect - {{1082,1},{243,45}} + {{615,48},{243,45}} textureRotated - + 2down3.png @@ -135,9 +225,9 @@ spriteSourceSize {363,45} textureRect - {{471,1},{363,45}} + {{1,95},{363,45}} textureRotated - + 2down4.png @@ -150,9 +240,9 @@ spriteSourceSize {45,124} textureRect - {{48,368},{45,124}} + {{860,48},{45,124}} textureRotated - + 2down5.png @@ -165,9 +255,9 @@ spriteSourceSize {45,245} textureRect - {{847,248},{45,245}} + {{366,95},{45,245}} textureRotated - + 2down6.png @@ -180,9 +270,9 @@ spriteSourceSize {45,365} textureRect - {{48,1},{45,365}} + {{613,95},{45,365}} textureRotated - + 3down1.png @@ -195,9 +285,9 @@ spriteSourceSize {122,45} textureRect - {{518,366},{122,45}} + {{1,142},{122,45}} textureRotated - + 3down2.png @@ -210,9 +300,9 @@ spriteSourceSize {243,45} textureRect - {{1082,246},{243,45}} + {{125,142},{243,45}} textureRotated - + 3down3.png @@ -225,9 +315,9 @@ spriteSourceSize {363,45} textureRect - {{518,1},{363,45}} + {{370,142},{363,45}} textureRotated - + 3down4.png @@ -240,9 +330,9 @@ spriteSourceSize {45,124} textureRect - {{95,368},{45,124}} + {{735,142},{45,124}} textureRotated - + 3down5.png @@ -255,9 +345,9 @@ spriteSourceSize {45,245} textureRect - {{894,1},{45,245}} + {{1,189},{45,245}} textureRotated - + 3down6.png @@ -270,9 +360,9 @@ spriteSourceSize {45,365} textureRect - {{95,1},{45,365}} + {{248,189},{45,365}} textureRotated - + 4down1.png @@ -285,9 +375,9 @@ spriteSourceSize {122,45} textureRect - {{565,366},{122,45}} + {{861,142},{122,45}} textureRotated - + 4down2.png @@ -300,9 +390,9 @@ spriteSourceSize {243,45} textureRect - {{1129,1},{243,45}} + {{615,189},{243,45}} textureRotated - + 4down3.png @@ -315,9 +405,9 @@ spriteSourceSize {363,45} textureRect - {{565,1},{363,45}} + {{1,236},{363,45}} textureRotated - + 4down4.png @@ -330,9 +420,9 @@ spriteSourceSize {45,124} textureRect - {{142,368},{45,124}} + {{860,189},{45,124}} textureRotated - + 4down5.png @@ -345,9 +435,9 @@ spriteSourceSize {45,245} textureRect - {{894,248},{45,245}} + {{366,236},{45,245}} textureRotated - + 4down6.png @@ -360,9 +450,9 @@ spriteSourceSize {45,365} textureRect - {{142,1},{45,365}} + {{613,236},{45,365}} textureRotated - + 5down1.png @@ -375,9 +465,9 @@ spriteSourceSize {122,45} textureRect - {{612,366},{122,45}} + {{1,283},{122,45}} textureRotated - + 5down2.png @@ -390,9 +480,9 @@ spriteSourceSize {243,45} textureRect - {{1129,246},{243,45}} + {{125,283},{243,45}} textureRotated - + 5down3.png @@ -405,9 +495,9 @@ spriteSourceSize {363,45} textureRect - {{612,1},{363,45}} + {{370,283},{363,45}} textureRotated - + 5down4.png @@ -420,9 +510,9 @@ spriteSourceSize {45,124} textureRect - {{189,368},{45,124}} + {{735,283},{45,124}} textureRotated - + 5down5.png @@ -435,9 +525,9 @@ spriteSourceSize {45,245} textureRect - {{941,1},{45,245}} + {{1,330},{45,245}} textureRotated - + 5down6.png @@ -450,9 +540,9 @@ spriteSourceSize {45,365} textureRect - {{189,1},{45,365}} + {{248,330},{45,365}} textureRotated - + 6down1.png @@ -465,9 +555,9 @@ spriteSourceSize {122,45} textureRect - {{659,366},{122,45}} + {{861,283},{122,45}} textureRotated - + 6down2.png @@ -480,9 +570,9 @@ spriteSourceSize {243,45} textureRect - {{1176,1},{243,45}} + {{615,330},{243,45}} textureRotated - + 6down3.png @@ -495,9 +585,9 @@ spriteSourceSize {363,45} textureRect - {{659,1},{363,45}} + {{1,377},{363,45}} textureRotated - + 6down4.png @@ -510,9 +600,9 @@ spriteSourceSize {45,124} textureRect - {{236,368},{45,124}} + {{860,330},{45,124}} textureRotated - + 6down5.png @@ -525,9 +615,9 @@ spriteSourceSize {45,245} textureRect - {{941,248},{45,245}} + {{366,377},{45,245}} textureRotated - + 6down6.png @@ -540,9 +630,9 @@ spriteSourceSize {45,365} textureRect - {{236,1},{45,365}} + {{613,377},{45,365}} textureRotated - + 7down1.png @@ -551,13 +641,13 @@ spriteOffset {0,0} spriteSize - {122,45} + {122,46} spriteSourceSize - {122,45} + {122,46} textureRect - {{706,366},{122,45}} + {{861,565},{122,46}} textureRotated - + 7down2.png @@ -566,13 +656,13 @@ spriteOffset {0,0} spriteSize - {243,45} + {244,46} spriteSourceSize - {243,45} + {244,46} textureRect - {{1176,246},{243,45}} + {{615,612},{244,46}} textureRotated - + 7down3.png @@ -581,13 +671,13 @@ spriteOffset {0,0} spriteSize - {363,45} + {364,46} spriteSourceSize - {363,45} + {364,46} textureRect - {{706,1},{363,45}} + {{1,659},{364,46}} textureRotated - + 7down4.png @@ -596,13 +686,13 @@ spriteOffset {0,0} spriteSize - {45,124} + {46,124} spriteSourceSize - {45,124} + {46,124} textureRect - {{283,368},{45,124}} + {{861,613},{46,124}} textureRotated - + 7down5.png @@ -611,13 +701,13 @@ spriteOffset {0,0} spriteSize - {45,245} + {46,246} spriteSourceSize - {45,245} + {46,246} textureRect - {{988,1},{45,245}} + {{367,659},{46,246}} textureRotated - + 7down6.png @@ -626,13 +716,13 @@ spriteOffset {0,0} spriteSize - {45,365} + {46,366} spriteSourceSize - {45,365} + {46,366} textureRect - {{283,1},{45,365}} + {{615,661},{46,366}} textureRotated - + 8down1.png @@ -645,9 +735,9 @@ spriteSourceSize {122,45} textureRect - {{753,366},{122,45}} + {{1,424},{122,45}} textureRotated - + 8down2.png @@ -660,9 +750,9 @@ spriteSourceSize {243,45} textureRect - {{1223,1},{243,45}} + {{125,424},{243,45}} textureRotated - + 8down3.png @@ -675,9 +765,9 @@ spriteSourceSize {363,45} textureRect - {{753,1},{363,45}} + {{370,424},{363,45}} textureRotated - + 8down4.png @@ -690,9 +780,9 @@ spriteSourceSize {45,124} textureRect - {{330,368},{45,124}} + {{735,424},{45,124}} textureRotated - + 8down5.png @@ -705,9 +795,9 @@ spriteSourceSize {45,245} textureRect - {{988,248},{45,245}} + {{1,471},{45,245}} textureRotated - + 8down6.png @@ -720,9 +810,9 @@ spriteSourceSize {45,365} textureRect - {{330,1},{45,365}} + {{248,471},{45,365}} textureRotated - + 9down1.png @@ -735,9 +825,9 @@ spriteSourceSize {122,45} textureRect - {{800,366},{122,45}} + {{861,424},{122,45}} textureRotated - + 9down2.png @@ -750,9 +840,9 @@ spriteSourceSize {243,45} textureRect - {{1223,246},{243,45}} + {{615,471},{243,45}} textureRotated - + 9down3.png @@ -765,9 +855,9 @@ spriteSourceSize {363,45} textureRect - {{800,1},{363,45}} + {{1,518},{363,45}} textureRotated - + 9down4.png @@ -780,9 +870,9 @@ spriteSourceSize {45,124} textureRect - {{377,368},{45,124}} + {{860,471},{45,124}} textureRotated - + 9down5.png @@ -795,9 +885,9 @@ spriteSourceSize {45,245} textureRect - {{1035,1},{45,245}} + {{366,518},{45,245}} textureRotated - + 9down6.png @@ -810,9 +900,9 @@ spriteSourceSize {45,365} textureRect - {{377,1},{45,365}} + {{613,518},{45,365}} textureRotated - + metadata @@ -826,9 +916,9 @@ realTextureFileName down.png size - {1269,494} + {986,708} smartupdate - $TexturePacker:SmartUpdate:7a4c22871339652baf28bd6011424c2d:f70ceb55bdca44a4d81feac4e49d40ac:1f82f659e2591d395bca4b2a7c74dd8a$ + $TexturePacker:SmartUpdate:e71e00cbca228ccc0b15a23585e90eb3:c43c34fe0ac0b70e0467bdecae7396c0:1f82f659e2591d395bca4b2a7c74dd8a$ textureFileName down.png diff --git a/assets/TextureBlock/block/down.plist.meta b/assets/TextureBlock/block/down.plist.meta index 6ebaabc..4a28f1f 100644 --- a/assets/TextureBlock/block/down.plist.meta +++ b/assets/TextureBlock/block/down.plist.meta @@ -1,26 +1,164 @@ { "ver": "1.2.6", - "uuid": "d7e227ab-cc06-48f5-a2ac-092b19ec7f6f", + "uuid": "3d019ed8-3019-436d-add0-ceeb02a5baaf", "importer": "asset", - "rawTextureUuid": "ed2c3a21-0522-445d-9904-76843208705f", + "rawTextureUuid": "c660c59d-e175-4194-aaf3-33d1d03b783f", "size": { - "width": 1269, - "height": 494 + "width": 986, + "height": 708 }, "type": "Texture Packer", "subMetas": { - "1down1.png": { + "10down1.png": { "ver": "1.0.6", - "uuid": "2b4bc898-9d58-4cc9-97d4-5258405df035", + "uuid": "c8f5862b-373d-4a40-b7b4-b550d4ed958a", "importer": "sprite-frame", - "rawTextureUuid": "ed2c3a21-0522-445d-9904-76843208705f", + "rawTextureUuid": "c660c59d-e175-4194-aaf3-33d1d03b783f", + "trimType": "auto", + "trimThreshold": 1, + "rotated": false, + "offsetX": 0, + "offsetY": 0, + "trimX": 1, + "trimY": 565, + "width": 122, + "height": 45, + "rawWidth": 122, + "rawHeight": 45, + "borderTop": 0, + "borderBottom": 0, + "borderLeft": 0, + "borderRight": 0, + "spriteType": "normal", + "subMetas": {} + }, + "10down2.png": { + "ver": "1.0.6", + "uuid": "51e06d9e-23ca-4762-8aef-cd8bab1d33dd", + "importer": "sprite-frame", + "rawTextureUuid": "c660c59d-e175-4194-aaf3-33d1d03b783f", + "trimType": "auto", + "trimThreshold": 1, + "rotated": false, + "offsetX": 0, + "offsetY": 0, + "trimX": 125, + "trimY": 565, + "width": 243, + "height": 45, + "rawWidth": 243, + "rawHeight": 45, + "borderTop": 0, + "borderBottom": 0, + "borderLeft": 0, + "borderRight": 0, + "spriteType": "normal", + "subMetas": {} + }, + "10down3.png": { + "ver": "1.0.6", + "uuid": "0c09885e-4d8d-43c8-9f7d-e97bccb67e77", + "importer": "sprite-frame", + "rawTextureUuid": "c660c59d-e175-4194-aaf3-33d1d03b783f", + "trimType": "auto", + "trimThreshold": 1, + "rotated": false, + "offsetX": 0, + "offsetY": 0, + "trimX": 370, + "trimY": 565, + "width": 363, + "height": 45, + "rawWidth": 363, + "rawHeight": 45, + "borderTop": 0, + "borderBottom": 0, + "borderLeft": 0, + "borderRight": 0, + "spriteType": "normal", + "subMetas": {} + }, + "10down4.png": { + "ver": "1.0.6", + "uuid": "ca5f78b1-730f-4ad9-a695-9f72982d7cce", + "importer": "sprite-frame", + "rawTextureUuid": "c660c59d-e175-4194-aaf3-33d1d03b783f", "trimType": "auto", "trimThreshold": 1, "rotated": true, "offsetX": 0, "offsetY": 0, - "trimX": 424, - "trimY": 366, + "trimX": 735, + "trimY": 565, + "width": 45, + "height": 124, + "rawWidth": 45, + "rawHeight": 124, + "borderTop": 0, + "borderBottom": 0, + "borderLeft": 0, + "borderRight": 0, + "spriteType": "normal", + "subMetas": {} + }, + "10down5.png": { + "ver": "1.0.6", + "uuid": "362edd73-b6b5-4a1d-82bc-7714ae28b209", + "importer": "sprite-frame", + "rawTextureUuid": "c660c59d-e175-4194-aaf3-33d1d03b783f", + "trimType": "auto", + "trimThreshold": 1, + "rotated": true, + "offsetX": 0, + "offsetY": 0, + "trimX": 1, + "trimY": 612, + "width": 45, + "height": 245, + "rawWidth": 45, + "rawHeight": 245, + "borderTop": 0, + "borderBottom": 0, + "borderLeft": 0, + "borderRight": 0, + "spriteType": "normal", + "subMetas": {} + }, + "10down6.png": { + "ver": "1.0.6", + "uuid": "07594a6b-77fb-448b-89f1-653cdd63f516", + "importer": "sprite-frame", + "rawTextureUuid": "c660c59d-e175-4194-aaf3-33d1d03b783f", + "trimType": "auto", + "trimThreshold": 1, + "rotated": true, + "offsetX": 0, + "offsetY": 0, + "trimX": 248, + "trimY": 612, + "width": 45, + "height": 365, + "rawWidth": 45, + "rawHeight": 365, + "borderTop": 0, + "borderBottom": 0, + "borderLeft": 0, + "borderRight": 0, + "spriteType": "normal", + "subMetas": {} + }, + "1down1.png": { + "ver": "1.0.6", + "uuid": "c983d847-cfc4-4288-aef4-81f7614c015e", + "importer": "sprite-frame", + "rawTextureUuid": "c660c59d-e175-4194-aaf3-33d1d03b783f", + "trimType": "auto", + "trimThreshold": 1, + "rotated": false, + "offsetX": 0, + "offsetY": 0, + "trimX": 1, + "trimY": 1, "width": 122, "height": 45, "rawWidth": 122, @@ -34,16 +172,16 @@ }, "1down2.png": { "ver": "1.0.6", - "uuid": "cd18678b-7524-486e-bb38-39a44cb94e44", + "uuid": "abfddfc6-a384-4b25-8868-90354a9531d9", "importer": "sprite-frame", - "rawTextureUuid": "ed2c3a21-0522-445d-9904-76843208705f", + "rawTextureUuid": "c660c59d-e175-4194-aaf3-33d1d03b783f", "trimType": "auto", "trimThreshold": 1, - "rotated": true, + "rotated": false, "offsetX": 0, "offsetY": 0, - "trimX": 1035, - "trimY": 248, + "trimX": 125, + "trimY": 1, "width": 243, "height": 45, "rawWidth": 243, @@ -57,15 +195,15 @@ }, "1down3.png": { "ver": "1.0.6", - "uuid": "cdd06e33-9d9b-4cd3-837d-58789aa4607b", + "uuid": "37292117-0184-47bb-9029-40e2bf9f2e3b", "importer": "sprite-frame", - "rawTextureUuid": "ed2c3a21-0522-445d-9904-76843208705f", + "rawTextureUuid": "c660c59d-e175-4194-aaf3-33d1d03b783f", "trimType": "auto", "trimThreshold": 1, - "rotated": true, + "rotated": false, "offsetX": 0, "offsetY": 0, - "trimX": 424, + "trimX": 370, "trimY": 1, "width": 363, "height": 45, @@ -80,16 +218,16 @@ }, "1down4.png": { "ver": "1.0.6", - "uuid": "2aa0942a-3b6b-4e7f-9873-b12eea8600e9", + "uuid": "aeab228a-209e-49fc-8bf5-c02865b9e02e", "importer": "sprite-frame", - "rawTextureUuid": "ed2c3a21-0522-445d-9904-76843208705f", + "rawTextureUuid": "c660c59d-e175-4194-aaf3-33d1d03b783f", "trimType": "auto", "trimThreshold": 1, - "rotated": false, + "rotated": true, "offsetX": 0, "offsetY": 0, - "trimX": 1, - "trimY": 368, + "trimX": 735, + "trimY": 1, "width": 45, "height": 124, "rawWidth": 45, @@ -103,16 +241,16 @@ }, "1down5.png": { "ver": "1.0.6", - "uuid": "6e6d4d1c-d136-480b-8a0d-38ea4cacf4f3", + "uuid": "257d5583-e4b0-4dfc-910b-6efdc382de04", "importer": "sprite-frame", - "rawTextureUuid": "ed2c3a21-0522-445d-9904-76843208705f", + "rawTextureUuid": "c660c59d-e175-4194-aaf3-33d1d03b783f", "trimType": "auto", "trimThreshold": 1, - "rotated": false, + "rotated": true, "offsetX": 0, "offsetY": 0, - "trimX": 847, - "trimY": 1, + "trimX": 1, + "trimY": 48, "width": 45, "height": 245, "rawWidth": 45, @@ -126,16 +264,16 @@ }, "1down6.png": { "ver": "1.0.6", - "uuid": "dbd3a947-1747-4785-8385-8bb177e1307c", + "uuid": "5fa4d829-4ef3-47a4-b9b0-5367ea5deadb", "importer": "sprite-frame", - "rawTextureUuid": "ed2c3a21-0522-445d-9904-76843208705f", + "rawTextureUuid": "c660c59d-e175-4194-aaf3-33d1d03b783f", "trimType": "auto", "trimThreshold": 1, - "rotated": false, + "rotated": true, "offsetX": 0, "offsetY": 0, - "trimX": 1, - "trimY": 1, + "trimX": 248, + "trimY": 48, "width": 45, "height": 365, "rawWidth": 45, @@ -149,16 +287,16 @@ }, "2down1.png": { "ver": "1.0.6", - "uuid": "50604593-fce5-4e85-931a-15cbb6d48233", + "uuid": "085f8402-f610-4636-862f-22fd6bc2e7ca", "importer": "sprite-frame", - "rawTextureUuid": "ed2c3a21-0522-445d-9904-76843208705f", + "rawTextureUuid": "c660c59d-e175-4194-aaf3-33d1d03b783f", "trimType": "auto", "trimThreshold": 1, - "rotated": true, + "rotated": false, "offsetX": 0, "offsetY": 0, - "trimX": 471, - "trimY": 366, + "trimX": 861, + "trimY": 1, "width": 122, "height": 45, "rawWidth": 122, @@ -172,16 +310,16 @@ }, "2down2.png": { "ver": "1.0.6", - "uuid": "68390f8e-3b1b-454e-a7b9-c1fcc86de881", + "uuid": "b6e07f67-9d56-45ff-be78-5375b5265998", "importer": "sprite-frame", - "rawTextureUuid": "ed2c3a21-0522-445d-9904-76843208705f", + "rawTextureUuid": "c660c59d-e175-4194-aaf3-33d1d03b783f", "trimType": "auto", "trimThreshold": 1, - "rotated": true, + "rotated": false, "offsetX": 0, "offsetY": 0, - "trimX": 1082, - "trimY": 1, + "trimX": 615, + "trimY": 48, "width": 243, "height": 45, "rawWidth": 243, @@ -195,16 +333,16 @@ }, "2down3.png": { "ver": "1.0.6", - "uuid": "089bdab6-7e5d-4f20-b02e-3d6a0009f2cf", + "uuid": "42fbefea-6ea1-4889-9e5f-f3873953f13b", "importer": "sprite-frame", - "rawTextureUuid": "ed2c3a21-0522-445d-9904-76843208705f", + "rawTextureUuid": "c660c59d-e175-4194-aaf3-33d1d03b783f", "trimType": "auto", "trimThreshold": 1, - "rotated": true, + "rotated": false, "offsetX": 0, "offsetY": 0, - "trimX": 471, - "trimY": 1, + "trimX": 1, + "trimY": 95, "width": 363, "height": 45, "rawWidth": 363, @@ -218,16 +356,16 @@ }, "2down4.png": { "ver": "1.0.6", - "uuid": "6a933777-ee45-4b3b-96ca-6a68ad3c5328", + "uuid": "c9235f60-abf4-4de9-b0f0-45056ad4eec0", "importer": "sprite-frame", - "rawTextureUuid": "ed2c3a21-0522-445d-9904-76843208705f", + "rawTextureUuid": "c660c59d-e175-4194-aaf3-33d1d03b783f", "trimType": "auto", "trimThreshold": 1, - "rotated": false, + "rotated": true, "offsetX": 0, "offsetY": 0, - "trimX": 48, - "trimY": 368, + "trimX": 860, + "trimY": 48, "width": 45, "height": 124, "rawWidth": 45, @@ -241,16 +379,16 @@ }, "2down5.png": { "ver": "1.0.6", - "uuid": "d087ded4-16f9-4bf8-b327-274637687f5d", + "uuid": "cfda791a-aa61-49c2-a331-117740c80b87", "importer": "sprite-frame", - "rawTextureUuid": "ed2c3a21-0522-445d-9904-76843208705f", + "rawTextureUuid": "c660c59d-e175-4194-aaf3-33d1d03b783f", "trimType": "auto", "trimThreshold": 1, - "rotated": false, + "rotated": true, "offsetX": 0, "offsetY": 0, - "trimX": 847, - "trimY": 248, + "trimX": 366, + "trimY": 95, "width": 45, "height": 245, "rawWidth": 45, @@ -264,16 +402,16 @@ }, "2down6.png": { "ver": "1.0.6", - "uuid": "18584761-426f-48a3-a9d0-c3ecad434a5b", + "uuid": "66736e80-5092-4271-8c58-17f8352c7b8d", "importer": "sprite-frame", - "rawTextureUuid": "ed2c3a21-0522-445d-9904-76843208705f", + "rawTextureUuid": "c660c59d-e175-4194-aaf3-33d1d03b783f", "trimType": "auto", "trimThreshold": 1, - "rotated": false, + "rotated": true, "offsetX": 0, "offsetY": 0, - "trimX": 48, - "trimY": 1, + "trimX": 613, + "trimY": 95, "width": 45, "height": 365, "rawWidth": 45, @@ -287,16 +425,16 @@ }, "3down1.png": { "ver": "1.0.6", - "uuid": "f8efcd45-c7e5-4fbd-a6ac-78f524598889", + "uuid": "dbf12764-e7df-4736-923b-4e613402fd70", "importer": "sprite-frame", - "rawTextureUuid": "ed2c3a21-0522-445d-9904-76843208705f", + "rawTextureUuid": "c660c59d-e175-4194-aaf3-33d1d03b783f", "trimType": "auto", "trimThreshold": 1, - "rotated": true, + "rotated": false, "offsetX": 0, "offsetY": 0, - "trimX": 518, - "trimY": 366, + "trimX": 1, + "trimY": 142, "width": 122, "height": 45, "rawWidth": 122, @@ -310,16 +448,16 @@ }, "3down2.png": { "ver": "1.0.6", - "uuid": "61d0cd1b-24d9-404a-9c06-879ac780b2fe", + "uuid": "0681c1ff-5cf4-4fe7-bc91-5e38c70ce46b", "importer": "sprite-frame", - "rawTextureUuid": "ed2c3a21-0522-445d-9904-76843208705f", + "rawTextureUuid": "c660c59d-e175-4194-aaf3-33d1d03b783f", "trimType": "auto", "trimThreshold": 1, - "rotated": true, + "rotated": false, "offsetX": 0, "offsetY": 0, - "trimX": 1082, - "trimY": 246, + "trimX": 125, + "trimY": 142, "width": 243, "height": 45, "rawWidth": 243, @@ -333,16 +471,16 @@ }, "3down3.png": { "ver": "1.0.6", - "uuid": "18850366-326d-4822-bf43-3eca366b7762", + "uuid": "59e058ad-134c-4311-a1f4-59e93f8f8586", "importer": "sprite-frame", - "rawTextureUuid": "ed2c3a21-0522-445d-9904-76843208705f", + "rawTextureUuid": "c660c59d-e175-4194-aaf3-33d1d03b783f", "trimType": "auto", "trimThreshold": 1, - "rotated": true, + "rotated": false, "offsetX": 0, "offsetY": 0, - "trimX": 518, - "trimY": 1, + "trimX": 370, + "trimY": 142, "width": 363, "height": 45, "rawWidth": 363, @@ -356,16 +494,16 @@ }, "3down4.png": { "ver": "1.0.6", - "uuid": "4bed4b40-03a0-4ec4-8cf9-2b0863b561a5", + "uuid": "6168773e-4720-4796-9d76-84266915596b", "importer": "sprite-frame", - "rawTextureUuid": "ed2c3a21-0522-445d-9904-76843208705f", + "rawTextureUuid": "c660c59d-e175-4194-aaf3-33d1d03b783f", "trimType": "auto", "trimThreshold": 1, - "rotated": false, + "rotated": true, "offsetX": 0, "offsetY": 0, - "trimX": 95, - "trimY": 368, + "trimX": 735, + "trimY": 142, "width": 45, "height": 124, "rawWidth": 45, @@ -379,16 +517,16 @@ }, "3down5.png": { "ver": "1.0.6", - "uuid": "80f975f0-0e3b-47f5-9128-88aa34d1bd80", + "uuid": "e086948a-d672-4693-a773-355c1aaf8819", "importer": "sprite-frame", - "rawTextureUuid": "ed2c3a21-0522-445d-9904-76843208705f", + "rawTextureUuid": "c660c59d-e175-4194-aaf3-33d1d03b783f", "trimType": "auto", "trimThreshold": 1, - "rotated": false, + "rotated": true, "offsetX": 0, "offsetY": 0, - "trimX": 894, - "trimY": 1, + "trimX": 1, + "trimY": 189, "width": 45, "height": 245, "rawWidth": 45, @@ -402,16 +540,16 @@ }, "3down6.png": { "ver": "1.0.6", - "uuid": "51af1f04-c786-43e0-a377-79d9fe9ce2cb", + "uuid": "20a13038-b67b-4c07-89fd-38267efdc0e5", "importer": "sprite-frame", - "rawTextureUuid": "ed2c3a21-0522-445d-9904-76843208705f", + "rawTextureUuid": "c660c59d-e175-4194-aaf3-33d1d03b783f", "trimType": "auto", "trimThreshold": 1, - "rotated": false, + "rotated": true, "offsetX": 0, "offsetY": 0, - "trimX": 95, - "trimY": 1, + "trimX": 248, + "trimY": 189, "width": 45, "height": 365, "rawWidth": 45, @@ -425,16 +563,16 @@ }, "4down1.png": { "ver": "1.0.6", - "uuid": "ec5316c1-ec42-4609-9d87-2e0f9a8a5ca0", + "uuid": "f68ebe9a-38e9-4208-8ac6-77d20462d9d6", "importer": "sprite-frame", - "rawTextureUuid": "ed2c3a21-0522-445d-9904-76843208705f", + "rawTextureUuid": "c660c59d-e175-4194-aaf3-33d1d03b783f", "trimType": "auto", "trimThreshold": 1, - "rotated": true, + "rotated": false, "offsetX": 0, "offsetY": 0, - "trimX": 565, - "trimY": 366, + "trimX": 861, + "trimY": 142, "width": 122, "height": 45, "rawWidth": 122, @@ -448,16 +586,16 @@ }, "4down2.png": { "ver": "1.0.6", - "uuid": "ccd13857-62d3-4492-bd72-d8418ed44197", + "uuid": "678b10b4-1068-409c-82ea-15c65801d0a5", "importer": "sprite-frame", - "rawTextureUuid": "ed2c3a21-0522-445d-9904-76843208705f", + "rawTextureUuid": "c660c59d-e175-4194-aaf3-33d1d03b783f", "trimType": "auto", "trimThreshold": 1, - "rotated": true, + "rotated": false, "offsetX": 0, "offsetY": 0, - "trimX": 1129, - "trimY": 1, + "trimX": 615, + "trimY": 189, "width": 243, "height": 45, "rawWidth": 243, @@ -471,16 +609,16 @@ }, "4down3.png": { "ver": "1.0.6", - "uuid": "01713157-8648-451e-9061-5be0089e39f8", + "uuid": "6ca2b413-78a7-4e32-bf03-b4a2b80f024b", "importer": "sprite-frame", - "rawTextureUuid": "ed2c3a21-0522-445d-9904-76843208705f", + "rawTextureUuid": "c660c59d-e175-4194-aaf3-33d1d03b783f", "trimType": "auto", "trimThreshold": 1, - "rotated": true, + "rotated": false, "offsetX": 0, "offsetY": 0, - "trimX": 565, - "trimY": 1, + "trimX": 1, + "trimY": 236, "width": 363, "height": 45, "rawWidth": 363, @@ -494,16 +632,16 @@ }, "4down4.png": { "ver": "1.0.6", - "uuid": "df5bc245-50a2-404a-a208-c187d44c6e25", + "uuid": "40dd76f4-1ba0-40ce-9e2e-92f82d7da381", "importer": "sprite-frame", - "rawTextureUuid": "ed2c3a21-0522-445d-9904-76843208705f", + "rawTextureUuid": "c660c59d-e175-4194-aaf3-33d1d03b783f", "trimType": "auto", "trimThreshold": 1, - "rotated": false, + "rotated": true, "offsetX": 0, "offsetY": 0, - "trimX": 142, - "trimY": 368, + "trimX": 860, + "trimY": 189, "width": 45, "height": 124, "rawWidth": 45, @@ -517,16 +655,16 @@ }, "4down5.png": { "ver": "1.0.6", - "uuid": "ca22313c-ac3f-41f8-ad87-37668e1416e1", + "uuid": "eb033dba-ae5e-4147-ad46-241ab27df770", "importer": "sprite-frame", - "rawTextureUuid": "ed2c3a21-0522-445d-9904-76843208705f", + "rawTextureUuid": "c660c59d-e175-4194-aaf3-33d1d03b783f", "trimType": "auto", "trimThreshold": 1, - "rotated": false, + "rotated": true, "offsetX": 0, "offsetY": 0, - "trimX": 894, - "trimY": 248, + "trimX": 366, + "trimY": 236, "width": 45, "height": 245, "rawWidth": 45, @@ -540,16 +678,16 @@ }, "4down6.png": { "ver": "1.0.6", - "uuid": "83995ec4-b926-496e-9287-b486424e3bd2", + "uuid": "accbb35a-b43d-49b8-97dc-c7e939ca052c", "importer": "sprite-frame", - "rawTextureUuid": "ed2c3a21-0522-445d-9904-76843208705f", + "rawTextureUuid": "c660c59d-e175-4194-aaf3-33d1d03b783f", "trimType": "auto", "trimThreshold": 1, - "rotated": false, + "rotated": true, "offsetX": 0, "offsetY": 0, - "trimX": 142, - "trimY": 1, + "trimX": 613, + "trimY": 236, "width": 45, "height": 365, "rawWidth": 45, @@ -563,16 +701,16 @@ }, "5down1.png": { "ver": "1.0.6", - "uuid": "c9f113a0-f3a4-4e0e-9e38-33dedda84d88", + "uuid": "48cddc96-39c7-449c-8280-55dd44b65377", "importer": "sprite-frame", - "rawTextureUuid": "ed2c3a21-0522-445d-9904-76843208705f", + "rawTextureUuid": "c660c59d-e175-4194-aaf3-33d1d03b783f", "trimType": "auto", "trimThreshold": 1, - "rotated": true, + "rotated": false, "offsetX": 0, "offsetY": 0, - "trimX": 612, - "trimY": 366, + "trimX": 1, + "trimY": 283, "width": 122, "height": 45, "rawWidth": 122, @@ -586,16 +724,16 @@ }, "5down2.png": { "ver": "1.0.6", - "uuid": "5c8a3a48-5cdf-406f-8977-8e8b41188a10", + "uuid": "34494a3a-6ae1-43cc-a102-e6f66a620e20", "importer": "sprite-frame", - "rawTextureUuid": "ed2c3a21-0522-445d-9904-76843208705f", + "rawTextureUuid": "c660c59d-e175-4194-aaf3-33d1d03b783f", "trimType": "auto", "trimThreshold": 1, - "rotated": true, + "rotated": false, "offsetX": 0, "offsetY": 0, - "trimX": 1129, - "trimY": 246, + "trimX": 125, + "trimY": 283, "width": 243, "height": 45, "rawWidth": 243, @@ -609,16 +747,16 @@ }, "5down3.png": { "ver": "1.0.6", - "uuid": "dcd0323e-c1d4-43fe-8052-29f8677a60bd", + "uuid": "5282d649-8ede-4c7e-aeed-37beb78e860a", "importer": "sprite-frame", - "rawTextureUuid": "ed2c3a21-0522-445d-9904-76843208705f", + "rawTextureUuid": "c660c59d-e175-4194-aaf3-33d1d03b783f", "trimType": "auto", "trimThreshold": 1, - "rotated": true, + "rotated": false, "offsetX": 0, "offsetY": 0, - "trimX": 612, - "trimY": 1, + "trimX": 370, + "trimY": 283, "width": 363, "height": 45, "rawWidth": 363, @@ -632,16 +770,16 @@ }, "5down4.png": { "ver": "1.0.6", - "uuid": "d09bc3df-abc4-42f6-bab8-6da7e2b45893", + "uuid": "5e92ffdd-e62a-480f-93f2-852830ea2d1e", "importer": "sprite-frame", - "rawTextureUuid": "ed2c3a21-0522-445d-9904-76843208705f", + "rawTextureUuid": "c660c59d-e175-4194-aaf3-33d1d03b783f", "trimType": "auto", "trimThreshold": 1, - "rotated": false, + "rotated": true, "offsetX": 0, "offsetY": 0, - "trimX": 189, - "trimY": 368, + "trimX": 735, + "trimY": 283, "width": 45, "height": 124, "rawWidth": 45, @@ -655,16 +793,16 @@ }, "5down5.png": { "ver": "1.0.6", - "uuid": "a36546af-228b-4f2c-bb43-5d5eccc382d3", + "uuid": "fa7e8b5f-2600-4a98-8b15-1d95d419fbdb", "importer": "sprite-frame", - "rawTextureUuid": "ed2c3a21-0522-445d-9904-76843208705f", + "rawTextureUuid": "c660c59d-e175-4194-aaf3-33d1d03b783f", "trimType": "auto", "trimThreshold": 1, - "rotated": false, + "rotated": true, "offsetX": 0, "offsetY": 0, - "trimX": 941, - "trimY": 1, + "trimX": 1, + "trimY": 330, "width": 45, "height": 245, "rawWidth": 45, @@ -678,16 +816,16 @@ }, "5down6.png": { "ver": "1.0.6", - "uuid": "40c8322e-6517-40e8-91a7-f73febcc16d8", + "uuid": "2cb2dbcb-4868-4668-8fd8-fde9b1bd8dba", "importer": "sprite-frame", - "rawTextureUuid": "ed2c3a21-0522-445d-9904-76843208705f", + "rawTextureUuid": "c660c59d-e175-4194-aaf3-33d1d03b783f", "trimType": "auto", "trimThreshold": 1, - "rotated": false, + "rotated": true, "offsetX": 0, "offsetY": 0, - "trimX": 189, - "trimY": 1, + "trimX": 248, + "trimY": 330, "width": 45, "height": 365, "rawWidth": 45, @@ -701,16 +839,16 @@ }, "6down1.png": { "ver": "1.0.6", - "uuid": "51f517ae-4273-4f6a-8d64-3265c9bc941c", + "uuid": "805ed668-1b05-44ff-98f9-2e8fc101a705", "importer": "sprite-frame", - "rawTextureUuid": "ed2c3a21-0522-445d-9904-76843208705f", + "rawTextureUuid": "c660c59d-e175-4194-aaf3-33d1d03b783f", "trimType": "auto", "trimThreshold": 1, - "rotated": true, + "rotated": false, "offsetX": 0, "offsetY": 0, - "trimX": 659, - "trimY": 366, + "trimX": 861, + "trimY": 283, "width": 122, "height": 45, "rawWidth": 122, @@ -724,16 +862,16 @@ }, "6down2.png": { "ver": "1.0.6", - "uuid": "5826977f-dfd6-4954-9358-7dc05913fa70", + "uuid": "b8ef6026-86e6-481d-b285-65489050ac48", "importer": "sprite-frame", - "rawTextureUuid": "ed2c3a21-0522-445d-9904-76843208705f", + "rawTextureUuid": "c660c59d-e175-4194-aaf3-33d1d03b783f", "trimType": "auto", "trimThreshold": 1, - "rotated": true, + "rotated": false, "offsetX": 0, "offsetY": 0, - "trimX": 1176, - "trimY": 1, + "trimX": 615, + "trimY": 330, "width": 243, "height": 45, "rawWidth": 243, @@ -747,16 +885,16 @@ }, "6down3.png": { "ver": "1.0.6", - "uuid": "58d2857e-4c27-4eaa-a162-92d81bc6fa18", + "uuid": "0a02963d-dd42-42ad-be69-c78af29eec3b", "importer": "sprite-frame", - "rawTextureUuid": "ed2c3a21-0522-445d-9904-76843208705f", + "rawTextureUuid": "c660c59d-e175-4194-aaf3-33d1d03b783f", "trimType": "auto", "trimThreshold": 1, - "rotated": true, + "rotated": false, "offsetX": 0, "offsetY": 0, - "trimX": 659, - "trimY": 1, + "trimX": 1, + "trimY": 377, "width": 363, "height": 45, "rawWidth": 363, @@ -770,16 +908,16 @@ }, "6down4.png": { "ver": "1.0.6", - "uuid": "5802ac2a-fd76-49c8-820b-7c0d04f003d5", + "uuid": "8398ddf1-296c-47cd-9d55-2ed4885f9509", "importer": "sprite-frame", - "rawTextureUuid": "ed2c3a21-0522-445d-9904-76843208705f", + "rawTextureUuid": "c660c59d-e175-4194-aaf3-33d1d03b783f", "trimType": "auto", "trimThreshold": 1, - "rotated": false, + "rotated": true, "offsetX": 0, "offsetY": 0, - "trimX": 236, - "trimY": 368, + "trimX": 860, + "trimY": 330, "width": 45, "height": 124, "rawWidth": 45, @@ -793,16 +931,16 @@ }, "6down5.png": { "ver": "1.0.6", - "uuid": "eca53869-fec9-4954-bc2b-750bc2ed8598", + "uuid": "3b3e5789-e908-47aa-9adb-61ff566da72f", "importer": "sprite-frame", - "rawTextureUuid": "ed2c3a21-0522-445d-9904-76843208705f", + "rawTextureUuid": "c660c59d-e175-4194-aaf3-33d1d03b783f", "trimType": "auto", "trimThreshold": 1, - "rotated": false, + "rotated": true, "offsetX": 0, "offsetY": 0, - "trimX": 941, - "trimY": 248, + "trimX": 366, + "trimY": 377, "width": 45, "height": 245, "rawWidth": 45, @@ -816,16 +954,16 @@ }, "6down6.png": { "ver": "1.0.6", - "uuid": "5e4a496f-3214-4364-ae25-e0424712c6ca", + "uuid": "1ecae730-c650-43a7-8c0a-560373777137", "importer": "sprite-frame", - "rawTextureUuid": "ed2c3a21-0522-445d-9904-76843208705f", + "rawTextureUuid": "c660c59d-e175-4194-aaf3-33d1d03b783f", "trimType": "auto", "trimThreshold": 1, - "rotated": false, + "rotated": true, "offsetX": 0, "offsetY": 0, - "trimX": 236, - "trimY": 1, + "trimX": 613, + "trimY": 377, "width": 45, "height": 365, "rawWidth": 45, @@ -839,20 +977,20 @@ }, "7down1.png": { "ver": "1.0.6", - "uuid": "12ccf01f-c412-4ca1-a908-30002ebfc9f4", + "uuid": "9c2db1a3-6fc0-44c8-b56b-c6d42033dffb", "importer": "sprite-frame", - "rawTextureUuid": "ed2c3a21-0522-445d-9904-76843208705f", + "rawTextureUuid": "c660c59d-e175-4194-aaf3-33d1d03b783f", "trimType": "auto", "trimThreshold": 1, - "rotated": true, + "rotated": false, "offsetX": 0, "offsetY": 0, - "trimX": 706, - "trimY": 366, + "trimX": 861, + "trimY": 565, "width": 122, - "height": 45, + "height": 46, "rawWidth": 122, - "rawHeight": 45, + "rawHeight": 46, "borderTop": 0, "borderBottom": 0, "borderLeft": 0, @@ -862,20 +1000,20 @@ }, "7down2.png": { "ver": "1.0.6", - "uuid": "d4657390-adb1-449b-a006-2d13f4a09138", + "uuid": "a5f933cc-d81e-4cab-92f3-86f1ba938126", "importer": "sprite-frame", - "rawTextureUuid": "ed2c3a21-0522-445d-9904-76843208705f", + "rawTextureUuid": "c660c59d-e175-4194-aaf3-33d1d03b783f", "trimType": "auto", "trimThreshold": 1, - "rotated": true, + "rotated": false, "offsetX": 0, "offsetY": 0, - "trimX": 1176, - "trimY": 246, - "width": 243, - "height": 45, - "rawWidth": 243, - "rawHeight": 45, + "trimX": 615, + "trimY": 612, + "width": 244, + "height": 46, + "rawWidth": 244, + "rawHeight": 46, "borderTop": 0, "borderBottom": 0, "borderLeft": 0, @@ -885,20 +1023,20 @@ }, "7down3.png": { "ver": "1.0.6", - "uuid": "15feda8b-1d2e-4894-9e42-0888d4bd127b", + "uuid": "18775144-2f12-48f0-9d3d-b737e7417b5a", "importer": "sprite-frame", - "rawTextureUuid": "ed2c3a21-0522-445d-9904-76843208705f", + "rawTextureUuid": "c660c59d-e175-4194-aaf3-33d1d03b783f", "trimType": "auto", "trimThreshold": 1, - "rotated": true, + "rotated": false, "offsetX": 0, "offsetY": 0, - "trimX": 706, - "trimY": 1, - "width": 363, - "height": 45, - "rawWidth": 363, - "rawHeight": 45, + "trimX": 1, + "trimY": 659, + "width": 364, + "height": 46, + "rawWidth": 364, + "rawHeight": 46, "borderTop": 0, "borderBottom": 0, "borderLeft": 0, @@ -908,19 +1046,19 @@ }, "7down4.png": { "ver": "1.0.6", - "uuid": "a7a7b806-c49d-45bd-b181-2a1583f9ae67", + "uuid": "690702de-7290-431c-8cf9-89157165ca91", "importer": "sprite-frame", - "rawTextureUuid": "ed2c3a21-0522-445d-9904-76843208705f", + "rawTextureUuid": "c660c59d-e175-4194-aaf3-33d1d03b783f", "trimType": "auto", "trimThreshold": 1, - "rotated": false, + "rotated": true, "offsetX": 0, "offsetY": 0, - "trimX": 283, - "trimY": 368, - "width": 45, + "trimX": 861, + "trimY": 613, + "width": 46, "height": 124, - "rawWidth": 45, + "rawWidth": 46, "rawHeight": 124, "borderTop": 0, "borderBottom": 0, @@ -931,20 +1069,20 @@ }, "7down5.png": { "ver": "1.0.6", - "uuid": "4626c7d9-db5b-4d89-821a-a50d6aa8be02", + "uuid": "355cc718-8d59-4f73-ae85-54d1899fe7be", "importer": "sprite-frame", - "rawTextureUuid": "ed2c3a21-0522-445d-9904-76843208705f", + "rawTextureUuid": "c660c59d-e175-4194-aaf3-33d1d03b783f", "trimType": "auto", "trimThreshold": 1, - "rotated": false, + "rotated": true, "offsetX": 0, "offsetY": 0, - "trimX": 988, - "trimY": 1, - "width": 45, - "height": 245, - "rawWidth": 45, - "rawHeight": 245, + "trimX": 367, + "trimY": 659, + "width": 46, + "height": 246, + "rawWidth": 46, + "rawHeight": 246, "borderTop": 0, "borderBottom": 0, "borderLeft": 0, @@ -954,20 +1092,20 @@ }, "7down6.png": { "ver": "1.0.6", - "uuid": "e14df810-ed05-418a-98ff-1aabc5685cd4", + "uuid": "569c479b-0e5d-4830-87a0-249867696779", "importer": "sprite-frame", - "rawTextureUuid": "ed2c3a21-0522-445d-9904-76843208705f", + "rawTextureUuid": "c660c59d-e175-4194-aaf3-33d1d03b783f", "trimType": "auto", "trimThreshold": 1, - "rotated": false, + "rotated": true, "offsetX": 0, "offsetY": 0, - "trimX": 283, - "trimY": 1, - "width": 45, - "height": 365, - "rawWidth": 45, - "rawHeight": 365, + "trimX": 615, + "trimY": 661, + "width": 46, + "height": 366, + "rawWidth": 46, + "rawHeight": 366, "borderTop": 0, "borderBottom": 0, "borderLeft": 0, @@ -977,16 +1115,16 @@ }, "8down1.png": { "ver": "1.0.6", - "uuid": "8709b13e-b16a-4bee-8b77-623bdf487a33", + "uuid": "05be34a9-d8ee-43d3-ae9c-ea9f9fa663ab", "importer": "sprite-frame", - "rawTextureUuid": "ed2c3a21-0522-445d-9904-76843208705f", + "rawTextureUuid": "c660c59d-e175-4194-aaf3-33d1d03b783f", "trimType": "auto", "trimThreshold": 1, - "rotated": true, + "rotated": false, "offsetX": 0, "offsetY": 0, - "trimX": 753, - "trimY": 366, + "trimX": 1, + "trimY": 424, "width": 122, "height": 45, "rawWidth": 122, @@ -1000,16 +1138,16 @@ }, "8down2.png": { "ver": "1.0.6", - "uuid": "9059fc98-5811-4ec3-a70d-0922b3163305", + "uuid": "55e0ff42-6f24-4b09-ab71-9baa61ede941", "importer": "sprite-frame", - "rawTextureUuid": "ed2c3a21-0522-445d-9904-76843208705f", + "rawTextureUuid": "c660c59d-e175-4194-aaf3-33d1d03b783f", "trimType": "auto", "trimThreshold": 1, - "rotated": true, + "rotated": false, "offsetX": 0, "offsetY": 0, - "trimX": 1223, - "trimY": 1, + "trimX": 125, + "trimY": 424, "width": 243, "height": 45, "rawWidth": 243, @@ -1023,16 +1161,16 @@ }, "8down3.png": { "ver": "1.0.6", - "uuid": "dd68dd77-048c-49ba-8ce9-1212226f595e", + "uuid": "34717e3a-f954-4de3-95a1-9337ea702d6a", "importer": "sprite-frame", - "rawTextureUuid": "ed2c3a21-0522-445d-9904-76843208705f", + "rawTextureUuid": "c660c59d-e175-4194-aaf3-33d1d03b783f", "trimType": "auto", "trimThreshold": 1, - "rotated": true, + "rotated": false, "offsetX": 0, "offsetY": 0, - "trimX": 753, - "trimY": 1, + "trimX": 370, + "trimY": 424, "width": 363, "height": 45, "rawWidth": 363, @@ -1046,16 +1184,16 @@ }, "8down4.png": { "ver": "1.0.6", - "uuid": "da42455b-0546-4bcc-a03b-beaa77b3d569", + "uuid": "b8f7c2fe-525a-434f-ab7e-41bdc9c91155", "importer": "sprite-frame", - "rawTextureUuid": "ed2c3a21-0522-445d-9904-76843208705f", + "rawTextureUuid": "c660c59d-e175-4194-aaf3-33d1d03b783f", "trimType": "auto", "trimThreshold": 1, - "rotated": false, + "rotated": true, "offsetX": 0, "offsetY": 0, - "trimX": 330, - "trimY": 368, + "trimX": 735, + "trimY": 424, "width": 45, "height": 124, "rawWidth": 45, @@ -1069,16 +1207,16 @@ }, "8down5.png": { "ver": "1.0.6", - "uuid": "7de5502c-6595-418a-a613-a271ffb06b82", + "uuid": "2b6d3d1e-8527-4810-a096-c3743fa6f668", "importer": "sprite-frame", - "rawTextureUuid": "ed2c3a21-0522-445d-9904-76843208705f", + "rawTextureUuid": "c660c59d-e175-4194-aaf3-33d1d03b783f", "trimType": "auto", "trimThreshold": 1, - "rotated": false, + "rotated": true, "offsetX": 0, "offsetY": 0, - "trimX": 988, - "trimY": 248, + "trimX": 1, + "trimY": 471, "width": 45, "height": 245, "rawWidth": 45, @@ -1092,16 +1230,16 @@ }, "8down6.png": { "ver": "1.0.6", - "uuid": "b262e73b-3160-45f7-8293-3f419844e08e", + "uuid": "c1342fe3-26bf-44b8-9163-aacbee5d6684", "importer": "sprite-frame", - "rawTextureUuid": "ed2c3a21-0522-445d-9904-76843208705f", + "rawTextureUuid": "c660c59d-e175-4194-aaf3-33d1d03b783f", "trimType": "auto", "trimThreshold": 1, - "rotated": false, + "rotated": true, "offsetX": 0, "offsetY": 0, - "trimX": 330, - "trimY": 1, + "trimX": 248, + "trimY": 471, "width": 45, "height": 365, "rawWidth": 45, @@ -1115,16 +1253,16 @@ }, "9down1.png": { "ver": "1.0.6", - "uuid": "3d8762c1-946b-4b96-be97-d153143d2b8a", + "uuid": "9e3650ed-bc7c-46ae-8c98-22c6001075b1", "importer": "sprite-frame", - "rawTextureUuid": "ed2c3a21-0522-445d-9904-76843208705f", + "rawTextureUuid": "c660c59d-e175-4194-aaf3-33d1d03b783f", "trimType": "auto", "trimThreshold": 1, - "rotated": true, + "rotated": false, "offsetX": 0, "offsetY": 0, - "trimX": 800, - "trimY": 366, + "trimX": 861, + "trimY": 424, "width": 122, "height": 45, "rawWidth": 122, @@ -1138,16 +1276,16 @@ }, "9down2.png": { "ver": "1.0.6", - "uuid": "8c800863-99c9-4779-b54e-feded5ca9f43", + "uuid": "ccaae0e5-ef39-4909-8249-afb1cd2d6ada", "importer": "sprite-frame", - "rawTextureUuid": "ed2c3a21-0522-445d-9904-76843208705f", + "rawTextureUuid": "c660c59d-e175-4194-aaf3-33d1d03b783f", "trimType": "auto", "trimThreshold": 1, - "rotated": true, + "rotated": false, "offsetX": 0, "offsetY": 0, - "trimX": 1223, - "trimY": 246, + "trimX": 615, + "trimY": 471, "width": 243, "height": 45, "rawWidth": 243, @@ -1161,16 +1299,16 @@ }, "9down3.png": { "ver": "1.0.6", - "uuid": "4b95b89d-4e79-4cd0-9dd1-3be2087ceae8", + "uuid": "dfd68eea-a8ae-4141-b080-f6cfefbad8cd", "importer": "sprite-frame", - "rawTextureUuid": "ed2c3a21-0522-445d-9904-76843208705f", + "rawTextureUuid": "c660c59d-e175-4194-aaf3-33d1d03b783f", "trimType": "auto", "trimThreshold": 1, - "rotated": true, + "rotated": false, "offsetX": 0, "offsetY": 0, - "trimX": 800, - "trimY": 1, + "trimX": 1, + "trimY": 518, "width": 363, "height": 45, "rawWidth": 363, @@ -1184,16 +1322,16 @@ }, "9down4.png": { "ver": "1.0.6", - "uuid": "cf230e1b-b0c2-41a7-b495-69b7e166eb98", + "uuid": "23fb16a5-4b81-4d2d-8fda-baffb1561c23", "importer": "sprite-frame", - "rawTextureUuid": "ed2c3a21-0522-445d-9904-76843208705f", + "rawTextureUuid": "c660c59d-e175-4194-aaf3-33d1d03b783f", "trimType": "auto", "trimThreshold": 1, - "rotated": false, + "rotated": true, "offsetX": 0, "offsetY": 0, - "trimX": 377, - "trimY": 368, + "trimX": 860, + "trimY": 471, "width": 45, "height": 124, "rawWidth": 45, @@ -1207,16 +1345,16 @@ }, "9down5.png": { "ver": "1.0.6", - "uuid": "10a7cd8b-3f3d-4561-a678-e919de57f01a", + "uuid": "01a57769-e8df-4d79-91f9-900b3485adce", "importer": "sprite-frame", - "rawTextureUuid": "ed2c3a21-0522-445d-9904-76843208705f", + "rawTextureUuid": "c660c59d-e175-4194-aaf3-33d1d03b783f", "trimType": "auto", "trimThreshold": 1, - "rotated": false, + "rotated": true, "offsetX": 0, "offsetY": 0, - "trimX": 1035, - "trimY": 1, + "trimX": 366, + "trimY": 518, "width": 45, "height": 245, "rawWidth": 45, @@ -1230,16 +1368,16 @@ }, "9down6.png": { "ver": "1.0.6", - "uuid": "a23e23b9-45af-41f2-8a45-272db024e81c", + "uuid": "c8c757f3-a7c1-446f-847e-f079db95fc71", "importer": "sprite-frame", - "rawTextureUuid": "ed2c3a21-0522-445d-9904-76843208705f", + "rawTextureUuid": "c660c59d-e175-4194-aaf3-33d1d03b783f", "trimType": "auto", "trimThreshold": 1, - "rotated": false, + "rotated": true, "offsetX": 0, "offsetY": 0, - "trimX": 377, - "trimY": 1, + "trimX": 613, + "trimY": 518, "width": 45, "height": 365, "rawWidth": 45, diff --git a/assets/TextureBlock/block/down.png b/assets/TextureBlock/block/down.png index 089dda2..096d32a 100644 Binary files a/assets/TextureBlock/block/down.png and b/assets/TextureBlock/block/down.png differ diff --git a/assets/TextureBlock/block/down.png.meta b/assets/TextureBlock/block/down.png.meta index 755ee80..918b867 100644 --- a/assets/TextureBlock/block/down.png.meta +++ b/assets/TextureBlock/block/down.png.meta @@ -1,6 +1,6 @@ { "ver": "2.3.7", - "uuid": "ed2c3a21-0522-445d-9904-76843208705f", + "uuid": "c660c59d-e175-4194-aaf3-33d1d03b783f", "importer": "texture", "type": "raw", "wrapMode": "clamp", @@ -8,8 +8,8 @@ "premultiplyAlpha": false, "genMipmaps": false, "packable": true, - "width": 1269, - "height": 494, + "width": 986, + "height": 708, "platformSettings": {}, "subMetas": {} } \ No newline at end of file diff --git a/assets/prefab/alert.meta b/assets/prefab/alert.meta new file mode 100644 index 0000000..1e34c90 --- /dev/null +++ b/assets/prefab/alert.meta @@ -0,0 +1,13 @@ +{ + "ver": "1.1.3", + "uuid": "84dfdbbd-ae68-4dec-b5e2-aa1e4d28c38f", + "importer": "folder", + "isBundle": false, + "bundleName": "", + "priority": 1, + "compressionType": {}, + "optimizeHotUpdate": {}, + "inlineSpriteFrames": {}, + "isRemoteBundle": {}, + "subMetas": {} +} \ No newline at end of file diff --git a/assets/res/music.meta b/assets/res/music.meta new file mode 100644 index 0000000..9c80bc5 --- /dev/null +++ b/assets/res/music.meta @@ -0,0 +1,13 @@ +{ + "ver": "1.1.3", + "uuid": "99be851f-9f4f-4fdd-bd43-3e3f86dd78d2", + "importer": "folder", + "isBundle": false, + "bundleName": "", + "priority": 1, + "compressionType": {}, + "optimizeHotUpdate": {}, + "inlineSpriteFrames": {}, + "isRemoteBundle": {}, + "subMetas": {} +} \ No newline at end of file diff --git a/assets/res/texture_Block.meta b/assets/res/texture_Block.meta new file mode 100644 index 0000000..7a52c9e --- /dev/null +++ b/assets/res/texture_Block.meta @@ -0,0 +1,13 @@ +{ + "ver": "1.1.3", + "uuid": "2ef5a7c6-04f5-418a-85b6-bf39220cd512", + "importer": "folder", + "isBundle": false, + "bundleName": "", + "priority": 1, + "compressionType": {}, + "optimizeHotUpdate": {}, + "inlineSpriteFrames": {}, + "isRemoteBundle": {}, + "subMetas": {} +} \ No newline at end of file diff --git a/assets/res/texture_Block/door.plist b/assets/res/texture_Block/door.plist new file mode 100644 index 0000000..26ca369 --- /dev/null +++ b/assets/res/texture_Block/door.plist @@ -0,0 +1,1226 @@ + + + + + frames + + 10color1.png + + aliases + + spriteOffset + {0,0} + spriteSize + {138,69} + spriteSourceSize + {138,69} + textureRect + {{801,900},{138,69}} + textureRotated + + + 10color2.png + + aliases + + spriteOffset + {0,0} + spriteSize + {258,69} + spriteSourceSize + {258,69} + textureRect + {{840,467},{258,69}} + textureRotated + + + 10color3.png + + aliases + + spriteOffset + {0,0} + spriteSize + {378,69} + spriteSourceSize + {378,69} + textureRect + {{889,206},{378,69}} + textureRotated + + + 10color4.png + + aliases + + spriteOffset + {0,0} + spriteSize + {61,146} + spriteSourceSize + {61,146} + textureRect + {{1092,816},{61,146}} + textureRotated + + + 10color5.png + + aliases + + spriteOffset + {0,0} + spriteSize + {61,266} + spriteSourceSize + {61,266} + textureRect + {{388,537},{61,266}} + textureRotated + + + 10color6.png + + aliases + + spriteOffset + {0,0} + spriteSize + {61,386} + spriteSourceSize + {61,386} + textureRect + {{889,277},{61,386}} + textureRotated + + + 1color1.png + + aliases + + spriteOffset + {0,0} + spriteSize + {138,69} + spriteSourceSize + {138,69} + textureRect + {{989,538},{138,69}} + textureRotated + + + 1color2.png + + aliases + + spriteOffset + {0,0} + spriteSize + {258,69} + spriteSourceSize + {258,69} + textureRect + {{127,538},{258,69}} + textureRotated + + + 1color3.png + + aliases + + spriteOffset + {0,0} + spriteSize + {378,69} + spriteSourceSize + {378,69} + textureRect + {{518,64},{378,69}} + textureRotated + + + 1color4.png + + aliases + + spriteOffset + {0,0} + spriteSize + {61,146} + spriteSourceSize + {61,146} + textureRect + {{593,758},{61,146}} + textureRotated + + + 1color5.png + + aliases + + spriteOffset + {0,0} + spriteSize + {61,267} + spriteSourceSize + {61,267} + textureRect + {{889,404},{61,267}} + textureRotated + + + 1color6.png + + aliases + + spriteOffset + {0,0} + spriteSize + {61,387} + spriteSourceSize + {61,387} + textureRect + {{1,390},{61,387}} + textureRotated + + + 2color1.png + + aliases + + spriteOffset + {0,0} + spriteSize + {138,69} + spriteSourceSize + {138,69} + textureRect + {{795,618},{138,69}} + textureRotated + + + 2color2.png + + aliases + + spriteOffset + {0,0} + spriteSize + {258,69} + spriteSourceSize + {258,69} + textureRect + {{127,609},{258,69}} + textureRotated + + + 2color3.png + + aliases + + spriteOffset + {0,0} + spriteSize + {378,69} + spriteSourceSize + {378,69} + textureRect + {{129,190},{378,69}} + textureRotated + + + 2color4.png + + aliases + + spriteOffset + {0,0} + spriteSize + {61,146} + spriteSourceSize + {61,146} + textureRect + {{1127,627},{61,146}} + textureRotated + + + 2color5.png + + aliases + + spriteOffset + {0,0} + spriteSize + {62,266} + spriteSourceSize + {62,266} + textureRect + {{127,403},{62,266}} + textureRotated + + + 2color6.png + + aliases + + spriteOffset + {0,0} + spriteSize + {62,386} + spriteSourceSize + {62,386} + textureRect + {{65,1},{62,386}} + textureRotated + + + 3color1.png + + aliases + + spriteOffset + {0,0} + spriteSize + {138,69} + spriteSourceSize + {138,69} + textureRect + {{741,758},{138,69}} + textureRotated + + + 3color2.png + + aliases + + spriteOffset + {0,0} + spriteSize + {258,69} + spriteSourceSize + {258,69} + textureRect + {{1,869},{258,69}} + textureRotated + + + 3color3.png + + aliases + + spriteOffset + {0,0} + spriteSize + {378,69} + spriteSourceSize + {378,69} + textureRect + {{129,261},{378,69}} + textureRotated + + + 3color4.png + + aliases + + spriteOffset + {0,0} + spriteSize + {61,146} + spriteSourceSize + {61,146} + textureRect + {{1275,636},{61,146}} + textureRotated + + + 3color5.png + + aliases + + spriteOffset + {0,0} + spriteSize + {61,267} + spriteSourceSize + {61,267} + textureRect + {{64,390},{61,267}} + textureRotated + + + 3color6.png + + aliases + + spriteOffset + {0,0} + spriteSize + {61,387} + spriteSourceSize + {61,387} + textureRect + {{129,1},{61,387}} + textureRotated + + + 4color1.png + + aliases + + spriteOffset + {0,0} + spriteSize + {138,69} + spriteSourceSize + {138,69} + textureRect + {{881,758},{138,69}} + textureRotated + + + 4color2.png + + aliases + + spriteOffset + {0,0} + spriteSize + {258,69} + spriteSourceSize + {258,69} + textureRect + {{387,600},{258,69}} + textureRotated + + + 4color3.png + + aliases + + spriteOffset + {0,0} + spriteSize + {378,69} + spriteSourceSize + {378,69} + textureRect + {{898,64},{378,69}} + textureRotated + + + 4color4.png + + aliases + + spriteOffset + {0,0} + spriteSize + {61,146} + spriteSourceSize + {61,146} + textureRect + {{1127,690},{61,146}} + textureRotated + + + 4color5.png + + aliases + + spriteOffset + {0,0} + spriteSize + {61,267} + spriteSourceSize + {61,267} + textureRect + {{64,680},{61,267}} + textureRotated + + + 4color6.png + + aliases + + spriteOffset + {0,0} + spriteSize + {61,387} + spriteSourceSize + {61,387} + textureRect + {{129,64},{61,387}} + textureRotated + + + 5color1.png + + aliases + + spriteOffset + {0,0} + spriteSize + {138,69} + spriteSourceSize + {138,69} + textureRect + {{521,884},{138,69}} + textureRotated + + + 5color2.png + + aliases + + spriteOffset + {0,0} + spriteSize + {258,69} + spriteSourceSize + {258,69} + textureRect + {{387,671},{258,69}} + textureRotated + + + 5color3.png + + aliases + + spriteOffset + {0,0} + spriteSize + {378,69} + spriteSourceSize + {378,69} + textureRect + {{509,198},{378,69}} + textureRotated + + + 5color4.png + + aliases + + spriteOffset + {0,0} + spriteSize + {61,146} + spriteSourceSize + {61,146} + textureRect + {{530,821},{61,146}} + textureRotated + + + 5color5.png + + aliases + + spriteOffset + {0,0} + spriteSize + {61,266} + spriteSourceSize + {61,266} + textureRect + {{395,411},{61,266}} + textureRotated + + + 5color6.png + + aliases + + spriteOffset + {0,0} + spriteSize + {61,386} + spriteSourceSize + {61,386} + textureRect + {{907,1},{61,386}} + textureRotated + + + 6color1.png + + aliases + + spriteOffset + {0,0} + spriteSize + {138,69} + spriteSourceSize + {138,69} + textureRect + {{1021,743},{138,69}} + textureRotated + + + 6color2.png + + aliases + + spriteOffset + {0,0} + spriteSize + {258,69} + spriteSourceSize + {258,69} + textureRect + {{333,742},{258,69}} + textureRotated + + + 6color3.png + + aliases + + spriteOffset + {0,0} + spriteSize + {378,69} + spriteSourceSize + {378,69} + textureRect + {{509,269},{378,69}} + textureRotated + + + 6color4.png + + aliases + + spriteOffset + {0,0} + spriteSize + {61,146} + spriteSourceSize + {61,146} + textureRect + {{1092,753},{61,146}} + textureRotated + + + 6color5.png + + aliases + + spriteOffset + {0,0} + spriteSize + {61,267} + spriteSourceSize + {61,267} + textureRect + {{64,743},{61,267}} + textureRotated + + + 6color6.png + + aliases + + spriteOffset + {0,0} + spriteSize + {61,387} + spriteSourceSize + {61,387} + textureRect + {{518,1},{61,387}} + textureRotated + + + 7color1.png + + aliases + + spriteOffset + {0,0} + spriteSize + {138,69} + spriteSourceSize + {138,69} + textureRect + {{1240,784},{138,69}} + textureRotated + + + 7color2.png + + aliases + + spriteOffset + {0,0} + spriteSize + {258,69} + spriteSourceSize + {258,69} + textureRect + {{270,813},{258,69}} + textureRotated + + + 7color3.png + + aliases + + spriteOffset + {0,0} + spriteSize + {378,69} + spriteSourceSize + {378,69} + textureRect + {{129,332},{378,69}} + textureRotated + + + 7color4.png + + aliases + + spriteOffset + {0,0} + spriteSize + {62,147} + spriteSourceSize + {62,147} + textureRect + {{840,538},{62,147}} + textureRotated + + + 7color5.png + + aliases + + spriteOffset + {0,0} + spriteSize + {62,267} + spriteSourceSize + {62,267} + textureRect + {{889,340},{62,267}} + textureRotated + + + 7color6.png + + aliases + + spriteOffset + {0,0} + spriteSize + {62,387} + spriteSourceSize + {62,387} + textureRect + {{1,1},{62,387}} + textureRotated + + + 8color1.png + + aliases + + spriteOffset + {0,0} + spriteSize + {138,69} + spriteSourceSize + {138,69} + textureRect + {{825,829},{138,69}} + textureRotated + + + 8color2.png + + aliases + + spriteOffset + {0,0} + spriteSize + {259,69} + spriteSourceSize + {259,69} + textureRect + {{127,467},{259,69}} + textureRotated + + + 8color3.png + + aliases + + spriteOffset + {0,0} + spriteSize + {378,69} + spriteSourceSize + {378,69} + textureRect + {{509,340},{378,69}} + textureRotated + + + 8color4.png + + aliases + + spriteOffset + {0,0} + spriteSize + {61,145} + spriteSourceSize + {61,145} + textureRect + {{678,829},{61,145}} + textureRotated + + + 8color5.png + + aliases + + spriteOffset + {0,0} + spriteSize + {61,266} + spriteSourceSize + {61,266} + textureRect + {{388,474},{61,266}} + textureRotated + + + 8color6.png + + aliases + + spriteOffset + {0,0} + spriteSize + {61,386} + spriteSourceSize + {61,386} + textureRect + {{518,135},{61,386}} + textureRotated + + + 9color1.png + + aliases + + spriteOffset + {0,0} + spriteSize + {138,69} + spriteSourceSize + {138,69} + textureRect + {{661,892},{138,69}} + textureRotated + + + 9color2.png + + aliases + + spriteOffset + {0,0} + spriteSize + {258,69} + spriteSourceSize + {258,69} + textureRect + {{261,884},{258,69}} + textureRotated + + + 9color3.png + + aliases + + spriteOffset + {0,0} + spriteSize + {378,69} + spriteSourceSize + {378,69} + textureRect + {{906,135},{378,69}} + textureRotated + + + 9color4.png + + aliases + + spriteOffset + {0,0} + spriteSize + {60,146} + spriteSourceSize + {60,146} + textureRect + {{1276,488},{60,146}} + textureRotated + + + 9color5.png + + aliases + + spriteOffset + {0,0} + spriteSize + {61,267} + spriteSourceSize + {61,267} + textureRect + {{1,806},{61,267}} + textureRotated + + + 9color6.png + + aliases + + spriteOffset + {0,0} + spriteSize + {61,387} + spriteSourceSize + {61,387} + textureRect + {{129,127},{61,387}} + textureRotated + + + dikuai.png + + aliases + + spriteOffset + {0,0} + spriteSize + {120,120} + spriteSourceSize + {120,120} + textureRect + {{866,602},{120,120}} + textureRotated + + + shu_zl1.png + + aliases + + spriteOffset + {0,0} + spriteSize + {9,42} + spriteSourceSize + {9,42} + textureRect + {{1081,883},{9,42}} + textureRotated + + + shu_zl1_1.png + + aliases + + spriteOffset + {0,0} + spriteSize + {58,34} + spriteSourceSize + {58,34} + textureRect + {{333,680},{58,34}} + textureRotated + + + shu_zl1_2.png + + aliases + + spriteOffset + {0,0} + spriteSize + {118,34} + spriteSourceSize + {118,34} + textureRect + {{804,479},{118,34}} + textureRotated + + + shu_zl1_3.png + + aliases + + spriteOffset + {0,0} + spriteSize + {178,34} + spriteSourceSize + {178,34} + textureRect + {{1,940},{178,34}} + textureRotated + + + shu_zl2.png + + aliases + + spriteOffset + {0,0} + spriteSize + {40,10} + spriteSourceSize + {40,10} + textureRect + {{64,659},{40,10}} + textureRotated + + + shu_zl2_1.png + + aliases + + spriteOffset + {0,0} + spriteSize + {32,54} + spriteSourceSize + {32,54} + textureRect + {{965,829},{32,54}} + textureRotated + + + shu_zl2_11.png + + aliases + + spriteOffset + {0,0} + spriteSize + {32,59} + spriteSourceSize + {32,59} + textureRect + {{1277,277},{32,59}} + textureRotated + + + shu_zl2_2.png + + aliases + + spriteOffset + {0,0} + spriteSize + {32,114} + spriteSourceSize + {32,114} + textureRect + {{1295,1},{32,114}} + textureRotated + + + shu_zl2_22.png + + aliases + + spriteOffset + {0,0} + spriteSize + {32,120} + spriteSourceSize + {32,120} + textureRect + {{866,724},{32,120}} + textureRotated + + + shu_zl2_3.png + + aliases + + spriteOffset + {0,0} + spriteSize + {32,175} + spriteSourceSize + {32,175} + textureRect + {{663,445},{32,175}} + textureRotated + + + shu_zl2_33.png + + aliases + + spriteOffset + {0,0} + spriteSize + {32,180} + spriteSourceSize + {32,180} + textureRect + {{663,411},{32,180}} + textureRotated + + + wall1.png + + aliases + + spriteOffset + {0,0} + spriteSize + {138,69} + spriteSourceSize + {138,69} + textureRect + {{941,900},{138,69}} + textureRotated + + + wall2.png + + aliases + + spriteOffset + {0,0} + spriteSize + {61,146} + spriteSourceSize + {61,146} + textureRect + {{1092,879},{61,146}} + textureRotated + + + wall3.png + + aliases + + spriteOffset + {0,0} + spriteSize + {138,146} + spriteSourceSize + {138,146} + textureRect + {{1158,340},{138,146}} + textureRotated + + + wall4.png + + aliases + + spriteOffset + {0,0} + spriteSize + {137,145} + spriteSourceSize + {137,145} + textureRect + {{1129,488},{137,145}} + textureRotated + + + wall5.png + + aliases + + spriteOffset + {0,0} + spriteSize + {137,146} + spriteSourceSize + {137,146} + textureRect + {{656,479},{137,146}} + textureRotated + + + wall6.png + + aliases + + spriteOffset + {0,0} + spriteSize + {138,146} + spriteSourceSize + {138,146} + textureRect + {{647,618},{138,146}} + textureRotated + + + wall7.png + + aliases + + spriteOffset + {0,0} + spriteSize + {61,69} + spriteSourceSize + {61,69} + textureRect + {{1269,206},{61,69}} + textureRotated + + + zhangai.png + + aliases + + spriteOffset + {0,0} + spriteSize + {132,137} + spriteSourceSize + {132,137} + textureRect + {{988,609},{132,137}} + textureRotated + + + + metadata + + format + 3 + pixelFormat + RGBA8888 + premultiplyAlpha + + realTextureFileName + door.png + size + {1337,975} + smartupdate + $TexturePacker:SmartUpdate:846c0a6799b01f438b3dc94f1e82f6b0:2c95b75b17a22ae2e0b2e5e34a58e1fe:db7a2f380db9915dc051ce2c1170bc84$ + textureFileName + door.png + + + diff --git a/assets/res/texture_Block/door.plist.meta b/assets/res/texture_Block/door.plist.meta new file mode 100644 index 0000000..c370e8d --- /dev/null +++ b/assets/res/texture_Block/door.plist.meta @@ -0,0 +1,1853 @@ +{ + "ver": "1.2.6", + "uuid": "cc01997d-495e-480d-871e-be405a6c38b5", + "importer": "asset", + "rawTextureUuid": "418b4767-01bf-4ac2-823b-9880f2a79215", + "size": { + "width": 1337, + "height": 975 + }, + "type": "Texture Packer", + "subMetas": { + "10color1.png": { + "ver": "1.0.6", + "uuid": "f9de4f9f-c4fa-49af-a8c5-7299bbbc26c6", + "importer": "sprite-frame", + "rawTextureUuid": "418b4767-01bf-4ac2-823b-9880f2a79215", + "trimType": "auto", + "trimThreshold": 1, + "rotated": false, + "offsetX": 0, + "offsetY": 0, + "trimX": 801, + "trimY": 900, + "width": 138, + "height": 69, + "rawWidth": 138, + "rawHeight": 69, + "borderTop": 0, + "borderBottom": 0, + "borderLeft": 0, + "borderRight": 0, + "spriteType": "normal", + "subMetas": {} + }, + "10color2.png": { + "ver": "1.0.6", + "uuid": "cddc81e8-863d-4e14-91ac-4eb044ef5f96", + "importer": "sprite-frame", + "rawTextureUuid": "418b4767-01bf-4ac2-823b-9880f2a79215", + "trimType": "auto", + "trimThreshold": 1, + "rotated": false, + "offsetX": 0, + "offsetY": 0, + "trimX": 840, + "trimY": 467, + "width": 258, + "height": 69, + "rawWidth": 258, + "rawHeight": 69, + "borderTop": 0, + "borderBottom": 0, + "borderLeft": 0, + "borderRight": 0, + "spriteType": "normal", + "subMetas": {} + }, + "10color3.png": { + "ver": "1.0.6", + "uuid": "c84b719d-af4e-4688-b270-b5b3ebe7f7f0", + "importer": "sprite-frame", + "rawTextureUuid": "418b4767-01bf-4ac2-823b-9880f2a79215", + "trimType": "auto", + "trimThreshold": 1, + "rotated": false, + "offsetX": 0, + "offsetY": 0, + "trimX": 889, + "trimY": 206, + "width": 378, + "height": 69, + "rawWidth": 378, + "rawHeight": 69, + "borderTop": 0, + "borderBottom": 0, + "borderLeft": 0, + "borderRight": 0, + "spriteType": "normal", + "subMetas": {} + }, + "10color4.png": { + "ver": "1.0.6", + "uuid": "2f23c78c-a279-4428-81a7-098cc67b3640", + "importer": "sprite-frame", + "rawTextureUuid": "418b4767-01bf-4ac2-823b-9880f2a79215", + "trimType": "auto", + "trimThreshold": 1, + "rotated": true, + "offsetX": 0, + "offsetY": 0, + "trimX": 1092, + "trimY": 816, + "width": 61, + "height": 146, + "rawWidth": 61, + "rawHeight": 146, + "borderTop": 0, + "borderBottom": 0, + "borderLeft": 0, + "borderRight": 0, + "spriteType": "normal", + "subMetas": {} + }, + "10color5.png": { + "ver": "1.0.6", + "uuid": "cbf87552-edd2-496f-827c-a59a22552fbb", + "importer": "sprite-frame", + "rawTextureUuid": "418b4767-01bf-4ac2-823b-9880f2a79215", + "trimType": "auto", + "trimThreshold": 1, + "rotated": true, + "offsetX": 0, + "offsetY": 0, + "trimX": 388, + "trimY": 537, + "width": 61, + "height": 266, + "rawWidth": 61, + "rawHeight": 266, + "borderTop": 0, + "borderBottom": 0, + "borderLeft": 0, + "borderRight": 0, + "spriteType": "normal", + "subMetas": {} + }, + "10color6.png": { + "ver": "1.0.6", + "uuid": "747709de-f3f7-4042-8ac9-9ff807c4b7cf", + "importer": "sprite-frame", + "rawTextureUuid": "418b4767-01bf-4ac2-823b-9880f2a79215", + "trimType": "auto", + "trimThreshold": 1, + "rotated": true, + "offsetX": 0, + "offsetY": 0, + "trimX": 889, + "trimY": 277, + "width": 61, + "height": 386, + "rawWidth": 61, + "rawHeight": 386, + "borderTop": 0, + "borderBottom": 0, + "borderLeft": 0, + "borderRight": 0, + "spriteType": "normal", + "subMetas": {} + }, + "1color1.png": { + "ver": "1.0.6", + "uuid": "d94491c5-a3e8-48d2-b260-3b8d516f564e", + "importer": "sprite-frame", + "rawTextureUuid": "418b4767-01bf-4ac2-823b-9880f2a79215", + "trimType": "auto", + "trimThreshold": 1, + "rotated": false, + "offsetX": 0, + "offsetY": 0, + "trimX": 989, + "trimY": 538, + "width": 138, + "height": 69, + "rawWidth": 138, + "rawHeight": 69, + "borderTop": 0, + "borderBottom": 0, + "borderLeft": 0, + "borderRight": 0, + "spriteType": "normal", + "subMetas": {} + }, + "1color2.png": { + "ver": "1.0.6", + "uuid": "cd704b98-c709-4fb6-a3b1-873723c82e14", + "importer": "sprite-frame", + "rawTextureUuid": "418b4767-01bf-4ac2-823b-9880f2a79215", + "trimType": "auto", + "trimThreshold": 1, + "rotated": false, + "offsetX": 0, + "offsetY": 0, + "trimX": 127, + "trimY": 538, + "width": 258, + "height": 69, + "rawWidth": 258, + "rawHeight": 69, + "borderTop": 0, + "borderBottom": 0, + "borderLeft": 0, + "borderRight": 0, + "spriteType": "normal", + "subMetas": {} + }, + "1color3.png": { + "ver": "1.0.6", + "uuid": "edd195cc-2af5-4a7a-bf49-2af75e60d50a", + "importer": "sprite-frame", + "rawTextureUuid": "418b4767-01bf-4ac2-823b-9880f2a79215", + "trimType": "auto", + "trimThreshold": 1, + "rotated": false, + "offsetX": 0, + "offsetY": 0, + "trimX": 518, + "trimY": 64, + "width": 378, + "height": 69, + "rawWidth": 378, + "rawHeight": 69, + "borderTop": 0, + "borderBottom": 0, + "borderLeft": 0, + "borderRight": 0, + "spriteType": "normal", + "subMetas": {} + }, + "1color4.png": { + "ver": "1.0.6", + "uuid": "6b1b5072-9a41-44e7-9923-3855864d5120", + "importer": "sprite-frame", + "rawTextureUuid": "418b4767-01bf-4ac2-823b-9880f2a79215", + "trimType": "auto", + "trimThreshold": 1, + "rotated": true, + "offsetX": 0, + "offsetY": 0, + "trimX": 593, + "trimY": 758, + "width": 61, + "height": 146, + "rawWidth": 61, + "rawHeight": 146, + "borderTop": 0, + "borderBottom": 0, + "borderLeft": 0, + "borderRight": 0, + "spriteType": "normal", + "subMetas": {} + }, + "1color5.png": { + "ver": "1.0.6", + "uuid": "6899ee49-88e4-44ff-b7f9-421031d84e6e", + "importer": "sprite-frame", + "rawTextureUuid": "418b4767-01bf-4ac2-823b-9880f2a79215", + "trimType": "auto", + "trimThreshold": 1, + "rotated": true, + "offsetX": 0, + "offsetY": 0, + "trimX": 889, + "trimY": 404, + "width": 61, + "height": 267, + "rawWidth": 61, + "rawHeight": 267, + "borderTop": 0, + "borderBottom": 0, + "borderLeft": 0, + "borderRight": 0, + "spriteType": "normal", + "subMetas": {} + }, + "1color6.png": { + "ver": "1.0.6", + "uuid": "917a86f2-c688-4cf5-9568-37632e1964b1", + "importer": "sprite-frame", + "rawTextureUuid": "418b4767-01bf-4ac2-823b-9880f2a79215", + "trimType": "auto", + "trimThreshold": 1, + "rotated": false, + "offsetX": 0, + "offsetY": 0, + "trimX": 1, + "trimY": 390, + "width": 61, + "height": 387, + "rawWidth": 61, + "rawHeight": 387, + "borderTop": 0, + "borderBottom": 0, + "borderLeft": 0, + "borderRight": 0, + "spriteType": "normal", + "subMetas": {} + }, + "2color1.png": { + "ver": "1.0.6", + "uuid": "287c291c-a6f2-4f5f-9c2e-af814874901b", + "importer": "sprite-frame", + "rawTextureUuid": "418b4767-01bf-4ac2-823b-9880f2a79215", + "trimType": "auto", + "trimThreshold": 1, + "rotated": true, + "offsetX": 0, + "offsetY": 0, + "trimX": 795, + "trimY": 618, + "width": 138, + "height": 69, + "rawWidth": 138, + "rawHeight": 69, + "borderTop": 0, + "borderBottom": 0, + "borderLeft": 0, + "borderRight": 0, + "spriteType": "normal", + "subMetas": {} + }, + "2color2.png": { + "ver": "1.0.6", + "uuid": "d8ed1577-eef1-42b8-986a-a9619e068d41", + "importer": "sprite-frame", + "rawTextureUuid": "418b4767-01bf-4ac2-823b-9880f2a79215", + "trimType": "auto", + "trimThreshold": 1, + "rotated": false, + "offsetX": 0, + "offsetY": 0, + "trimX": 127, + "trimY": 609, + "width": 258, + "height": 69, + "rawWidth": 258, + "rawHeight": 69, + "borderTop": 0, + "borderBottom": 0, + "borderLeft": 0, + "borderRight": 0, + "spriteType": "normal", + "subMetas": {} + }, + "2color3.png": { + "ver": "1.0.6", + "uuid": "39687b17-060f-401d-b776-9597fd00d95c", + "importer": "sprite-frame", + "rawTextureUuid": "418b4767-01bf-4ac2-823b-9880f2a79215", + "trimType": "auto", + "trimThreshold": 1, + "rotated": false, + "offsetX": 0, + "offsetY": 0, + "trimX": 129, + "trimY": 190, + "width": 378, + "height": 69, + "rawWidth": 378, + "rawHeight": 69, + "borderTop": 0, + "borderBottom": 0, + "borderLeft": 0, + "borderRight": 0, + "spriteType": "normal", + "subMetas": {} + }, + "2color4.png": { + "ver": "1.0.6", + "uuid": "f895411c-ea37-4419-9f12-057e76049b29", + "importer": "sprite-frame", + "rawTextureUuid": "418b4767-01bf-4ac2-823b-9880f2a79215", + "trimType": "auto", + "trimThreshold": 1, + "rotated": true, + "offsetX": 0, + "offsetY": 0, + "trimX": 1127, + "trimY": 627, + "width": 61, + "height": 146, + "rawWidth": 61, + "rawHeight": 146, + "borderTop": 0, + "borderBottom": 0, + "borderLeft": 0, + "borderRight": 0, + "spriteType": "normal", + "subMetas": {} + }, + "2color5.png": { + "ver": "1.0.6", + "uuid": "c74f5c84-d250-4e6a-a6dc-5ce8b9e46633", + "importer": "sprite-frame", + "rawTextureUuid": "418b4767-01bf-4ac2-823b-9880f2a79215", + "trimType": "auto", + "trimThreshold": 1, + "rotated": true, + "offsetX": 0, + "offsetY": 0, + "trimX": 127, + "trimY": 403, + "width": 62, + "height": 266, + "rawWidth": 62, + "rawHeight": 266, + "borderTop": 0, + "borderBottom": 0, + "borderLeft": 0, + "borderRight": 0, + "spriteType": "normal", + "subMetas": {} + }, + "2color6.png": { + "ver": "1.0.6", + "uuid": "21696b26-2ba1-410c-a02f-c7cf63fdb349", + "importer": "sprite-frame", + "rawTextureUuid": "418b4767-01bf-4ac2-823b-9880f2a79215", + "trimType": "auto", + "trimThreshold": 1, + "rotated": false, + "offsetX": 0, + "offsetY": 0, + "trimX": 65, + "trimY": 1, + "width": 62, + "height": 386, + "rawWidth": 62, + "rawHeight": 386, + "borderTop": 0, + "borderBottom": 0, + "borderLeft": 0, + "borderRight": 0, + "spriteType": "normal", + "subMetas": {} + }, + "3color1.png": { + "ver": "1.0.6", + "uuid": "433a5eb9-bd88-4fcf-9811-8b58f93dea65", + "importer": "sprite-frame", + "rawTextureUuid": "418b4767-01bf-4ac2-823b-9880f2a79215", + "trimType": "auto", + "trimThreshold": 1, + "rotated": false, + "offsetX": 0, + "offsetY": 0, + "trimX": 741, + "trimY": 758, + "width": 138, + "height": 69, + "rawWidth": 138, + "rawHeight": 69, + "borderTop": 0, + "borderBottom": 0, + "borderLeft": 0, + "borderRight": 0, + "spriteType": "normal", + "subMetas": {} + }, + "3color2.png": { + "ver": "1.0.6", + "uuid": "ef5bfdc0-6a9e-4866-bc77-9c69a629796b", + "importer": "sprite-frame", + "rawTextureUuid": "418b4767-01bf-4ac2-823b-9880f2a79215", + "trimType": "auto", + "trimThreshold": 1, + "rotated": false, + "offsetX": 0, + "offsetY": 0, + "trimX": 1, + "trimY": 869, + "width": 258, + "height": 69, + "rawWidth": 258, + "rawHeight": 69, + "borderTop": 0, + "borderBottom": 0, + "borderLeft": 0, + "borderRight": 0, + "spriteType": "normal", + "subMetas": {} + }, + "3color3.png": { + "ver": "1.0.6", + "uuid": "e6235cef-05a1-44b7-aa4c-46b51bc91632", + "importer": "sprite-frame", + "rawTextureUuid": "418b4767-01bf-4ac2-823b-9880f2a79215", + "trimType": "auto", + "trimThreshold": 1, + "rotated": false, + "offsetX": 0, + "offsetY": 0, + "trimX": 129, + "trimY": 261, + "width": 378, + "height": 69, + "rawWidth": 378, + "rawHeight": 69, + "borderTop": 0, + "borderBottom": 0, + "borderLeft": 0, + "borderRight": 0, + "spriteType": "normal", + "subMetas": {} + }, + "3color4.png": { + "ver": "1.0.6", + "uuid": "bc920137-4c10-41ac-b55d-afaa7a733177", + "importer": "sprite-frame", + "rawTextureUuid": "418b4767-01bf-4ac2-823b-9880f2a79215", + "trimType": "auto", + "trimThreshold": 1, + "rotated": false, + "offsetX": 0, + "offsetY": 0, + "trimX": 1275, + "trimY": 636, + "width": 61, + "height": 146, + "rawWidth": 61, + "rawHeight": 146, + "borderTop": 0, + "borderBottom": 0, + "borderLeft": 0, + "borderRight": 0, + "spriteType": "normal", + "subMetas": {} + }, + "3color5.png": { + "ver": "1.0.6", + "uuid": "0f1dcd5c-03b8-4f85-9edc-9002472876e3", + "importer": "sprite-frame", + "rawTextureUuid": "418b4767-01bf-4ac2-823b-9880f2a79215", + "trimType": "auto", + "trimThreshold": 1, + "rotated": false, + "offsetX": 0, + "offsetY": 0, + "trimX": 64, + "trimY": 390, + "width": 61, + "height": 267, + "rawWidth": 61, + "rawHeight": 267, + "borderTop": 0, + "borderBottom": 0, + "borderLeft": 0, + "borderRight": 0, + "spriteType": "normal", + "subMetas": {} + }, + "3color6.png": { + "ver": "1.0.6", + "uuid": "daad8024-c803-4b18-bb58-77a8620fd0ec", + "importer": "sprite-frame", + "rawTextureUuid": "418b4767-01bf-4ac2-823b-9880f2a79215", + "trimType": "auto", + "trimThreshold": 1, + "rotated": true, + "offsetX": 0, + "offsetY": 0, + "trimX": 129, + "trimY": 1, + "width": 61, + "height": 387, + "rawWidth": 61, + "rawHeight": 387, + "borderTop": 0, + "borderBottom": 0, + "borderLeft": 0, + "borderRight": 0, + "spriteType": "normal", + "subMetas": {} + }, + "4color1.png": { + "ver": "1.0.6", + "uuid": "1405acc7-1f74-46f3-9975-839e5337673d", + "importer": "sprite-frame", + "rawTextureUuid": "418b4767-01bf-4ac2-823b-9880f2a79215", + "trimType": "auto", + "trimThreshold": 1, + "rotated": false, + "offsetX": 0, + "offsetY": 0, + "trimX": 881, + "trimY": 758, + "width": 138, + "height": 69, + "rawWidth": 138, + "rawHeight": 69, + "borderTop": 0, + "borderBottom": 0, + "borderLeft": 0, + "borderRight": 0, + "spriteType": "normal", + "subMetas": {} + }, + "4color2.png": { + "ver": "1.0.6", + "uuid": "3718b4a0-0fb3-490b-85d4-64a2ac95c437", + "importer": "sprite-frame", + "rawTextureUuid": "418b4767-01bf-4ac2-823b-9880f2a79215", + "trimType": "auto", + "trimThreshold": 1, + "rotated": false, + "offsetX": 0, + "offsetY": 0, + "trimX": 387, + "trimY": 600, + "width": 258, + "height": 69, + "rawWidth": 258, + "rawHeight": 69, + "borderTop": 0, + "borderBottom": 0, + "borderLeft": 0, + "borderRight": 0, + "spriteType": "normal", + "subMetas": {} + }, + "4color3.png": { + "ver": "1.0.6", + "uuid": "bbafd681-01fb-47b0-a2ff-b15b926a240b", + "importer": "sprite-frame", + "rawTextureUuid": "418b4767-01bf-4ac2-823b-9880f2a79215", + "trimType": "auto", + "trimThreshold": 1, + "rotated": false, + "offsetX": 0, + "offsetY": 0, + "trimX": 898, + "trimY": 64, + "width": 378, + "height": 69, + "rawWidth": 378, + "rawHeight": 69, + "borderTop": 0, + "borderBottom": 0, + "borderLeft": 0, + "borderRight": 0, + "spriteType": "normal", + "subMetas": {} + }, + "4color4.png": { + "ver": "1.0.6", + "uuid": "ac5d82a3-1111-4557-b9f7-0b4ba525fbd5", + "importer": "sprite-frame", + "rawTextureUuid": "418b4767-01bf-4ac2-823b-9880f2a79215", + "trimType": "auto", + "trimThreshold": 1, + "rotated": true, + "offsetX": 0, + "offsetY": 0, + "trimX": 1127, + "trimY": 690, + "width": 61, + "height": 146, + "rawWidth": 61, + "rawHeight": 146, + "borderTop": 0, + "borderBottom": 0, + "borderLeft": 0, + "borderRight": 0, + "spriteType": "normal", + "subMetas": {} + }, + "4color5.png": { + "ver": "1.0.6", + "uuid": "9c999eaf-168d-480a-9a0e-175e787630c9", + "importer": "sprite-frame", + "rawTextureUuid": "418b4767-01bf-4ac2-823b-9880f2a79215", + "trimType": "auto", + "trimThreshold": 1, + "rotated": true, + "offsetX": 0, + "offsetY": 0, + "trimX": 64, + "trimY": 680, + "width": 61, + "height": 267, + "rawWidth": 61, + "rawHeight": 267, + "borderTop": 0, + "borderBottom": 0, + "borderLeft": 0, + "borderRight": 0, + "spriteType": "normal", + "subMetas": {} + }, + "4color6.png": { + "ver": "1.0.6", + "uuid": "dc7d898f-98f6-45e3-a908-1eab888d9383", + "importer": "sprite-frame", + "rawTextureUuid": "418b4767-01bf-4ac2-823b-9880f2a79215", + "trimType": "auto", + "trimThreshold": 1, + "rotated": true, + "offsetX": 0, + "offsetY": 0, + "trimX": 129, + "trimY": 64, + "width": 61, + "height": 387, + "rawWidth": 61, + "rawHeight": 387, + "borderTop": 0, + "borderBottom": 0, + "borderLeft": 0, + "borderRight": 0, + "spriteType": "normal", + "subMetas": {} + }, + "5color1.png": { + "ver": "1.0.6", + "uuid": "4b6d2792-ce59-4597-8d54-3e667f5e4ad7", + "importer": "sprite-frame", + "rawTextureUuid": "418b4767-01bf-4ac2-823b-9880f2a79215", + "trimType": "auto", + "trimThreshold": 1, + "rotated": false, + "offsetX": 0, + "offsetY": 0, + "trimX": 521, + "trimY": 884, + "width": 138, + "height": 69, + "rawWidth": 138, + "rawHeight": 69, + "borderTop": 0, + "borderBottom": 0, + "borderLeft": 0, + "borderRight": 0, + "spriteType": "normal", + "subMetas": {} + }, + "5color2.png": { + "ver": "1.0.6", + "uuid": "01a25c6d-3527-4d0b-8ac0-f3e54bd2863e", + "importer": "sprite-frame", + "rawTextureUuid": "418b4767-01bf-4ac2-823b-9880f2a79215", + "trimType": "auto", + "trimThreshold": 1, + "rotated": false, + "offsetX": 0, + "offsetY": 0, + "trimX": 387, + "trimY": 671, + "width": 258, + "height": 69, + "rawWidth": 258, + "rawHeight": 69, + "borderTop": 0, + "borderBottom": 0, + "borderLeft": 0, + "borderRight": 0, + "spriteType": "normal", + "subMetas": {} + }, + "5color3.png": { + "ver": "1.0.6", + "uuid": "3bd263ae-509c-4b63-8c11-c545402c77b8", + "importer": "sprite-frame", + "rawTextureUuid": "418b4767-01bf-4ac2-823b-9880f2a79215", + "trimType": "auto", + "trimThreshold": 1, + "rotated": false, + "offsetX": 0, + "offsetY": 0, + "trimX": 509, + "trimY": 198, + "width": 378, + "height": 69, + "rawWidth": 378, + "rawHeight": 69, + "borderTop": 0, + "borderBottom": 0, + "borderLeft": 0, + "borderRight": 0, + "spriteType": "normal", + "subMetas": {} + }, + "5color4.png": { + "ver": "1.0.6", + "uuid": "a39ecd5d-7cdf-4caf-865d-81f806b582f3", + "importer": "sprite-frame", + "rawTextureUuid": "418b4767-01bf-4ac2-823b-9880f2a79215", + "trimType": "auto", + "trimThreshold": 1, + "rotated": true, + "offsetX": 0, + "offsetY": 0, + "trimX": 530, + "trimY": 821, + "width": 61, + "height": 146, + "rawWidth": 61, + "rawHeight": 146, + "borderTop": 0, + "borderBottom": 0, + "borderLeft": 0, + "borderRight": 0, + "spriteType": "normal", + "subMetas": {} + }, + "5color5.png": { + "ver": "1.0.6", + "uuid": "f05b3170-ab5d-4af5-96fa-ca996cc795e3", + "importer": "sprite-frame", + "rawTextureUuid": "418b4767-01bf-4ac2-823b-9880f2a79215", + "trimType": "auto", + "trimThreshold": 1, + "rotated": true, + "offsetX": 0, + "offsetY": 0, + "trimX": 395, + "trimY": 411, + "width": 61, + "height": 266, + "rawWidth": 61, + "rawHeight": 266, + "borderTop": 0, + "borderBottom": 0, + "borderLeft": 0, + "borderRight": 0, + "spriteType": "normal", + "subMetas": {} + }, + "5color6.png": { + "ver": "1.0.6", + "uuid": "20e22b3b-684d-405d-ac5b-5cd9ba4f9b66", + "importer": "sprite-frame", + "rawTextureUuid": "418b4767-01bf-4ac2-823b-9880f2a79215", + "trimType": "auto", + "trimThreshold": 1, + "rotated": true, + "offsetX": 0, + "offsetY": 0, + "trimX": 907, + "trimY": 1, + "width": 61, + "height": 386, + "rawWidth": 61, + "rawHeight": 386, + "borderTop": 0, + "borderBottom": 0, + "borderLeft": 0, + "borderRight": 0, + "spriteType": "normal", + "subMetas": {} + }, + "6color1.png": { + "ver": "1.0.6", + "uuid": "28e0793b-62a9-41b7-9512-082ce55eca71", + "importer": "sprite-frame", + "rawTextureUuid": "418b4767-01bf-4ac2-823b-9880f2a79215", + "trimType": "auto", + "trimThreshold": 1, + "rotated": true, + "offsetX": 0, + "offsetY": 0, + "trimX": 1021, + "trimY": 743, + "width": 138, + "height": 69, + "rawWidth": 138, + "rawHeight": 69, + "borderTop": 0, + "borderBottom": 0, + "borderLeft": 0, + "borderRight": 0, + "spriteType": "normal", + "subMetas": {} + }, + "6color2.png": { + "ver": "1.0.6", + "uuid": "550602d1-08e8-467e-8bd0-5295c4981fec", + "importer": "sprite-frame", + "rawTextureUuid": "418b4767-01bf-4ac2-823b-9880f2a79215", + "trimType": "auto", + "trimThreshold": 1, + "rotated": false, + "offsetX": 0, + "offsetY": 0, + "trimX": 333, + "trimY": 742, + "width": 258, + "height": 69, + "rawWidth": 258, + "rawHeight": 69, + "borderTop": 0, + "borderBottom": 0, + "borderLeft": 0, + "borderRight": 0, + "spriteType": "normal", + "subMetas": {} + }, + "6color3.png": { + "ver": "1.0.6", + "uuid": "e538a058-80c2-49b8-aea0-f39d69183437", + "importer": "sprite-frame", + "rawTextureUuid": "418b4767-01bf-4ac2-823b-9880f2a79215", + "trimType": "auto", + "trimThreshold": 1, + "rotated": false, + "offsetX": 0, + "offsetY": 0, + "trimX": 509, + "trimY": 269, + "width": 378, + "height": 69, + "rawWidth": 378, + "rawHeight": 69, + "borderTop": 0, + "borderBottom": 0, + "borderLeft": 0, + "borderRight": 0, + "spriteType": "normal", + "subMetas": {} + }, + "6color4.png": { + "ver": "1.0.6", + "uuid": "9cca10f3-7a1a-402a-83d4-30597d8144c7", + "importer": "sprite-frame", + "rawTextureUuid": "418b4767-01bf-4ac2-823b-9880f2a79215", + "trimType": "auto", + "trimThreshold": 1, + "rotated": true, + "offsetX": 0, + "offsetY": 0, + "trimX": 1092, + "trimY": 753, + "width": 61, + "height": 146, + "rawWidth": 61, + "rawHeight": 146, + "borderTop": 0, + "borderBottom": 0, + "borderLeft": 0, + "borderRight": 0, + "spriteType": "normal", + "subMetas": {} + }, + "6color5.png": { + "ver": "1.0.6", + "uuid": "a3f51e26-9f3f-4a35-8d40-dfff45754b25", + "importer": "sprite-frame", + "rawTextureUuid": "418b4767-01bf-4ac2-823b-9880f2a79215", + "trimType": "auto", + "trimThreshold": 1, + "rotated": true, + "offsetX": 0, + "offsetY": 0, + "trimX": 64, + "trimY": 743, + "width": 61, + "height": 267, + "rawWidth": 61, + "rawHeight": 267, + "borderTop": 0, + "borderBottom": 0, + "borderLeft": 0, + "borderRight": 0, + "spriteType": "normal", + "subMetas": {} + }, + "6color6.png": { + "ver": "1.0.6", + "uuid": "fe897368-c5ca-4c14-a316-afe70f5e80cc", + "importer": "sprite-frame", + "rawTextureUuid": "418b4767-01bf-4ac2-823b-9880f2a79215", + "trimType": "auto", + "trimThreshold": 1, + "rotated": true, + "offsetX": 0, + "offsetY": 0, + "trimX": 518, + "trimY": 1, + "width": 61, + "height": 387, + "rawWidth": 61, + "rawHeight": 387, + "borderTop": 0, + "borderBottom": 0, + "borderLeft": 0, + "borderRight": 0, + "spriteType": "normal", + "subMetas": {} + }, + "7color1.png": { + "ver": "1.0.6", + "uuid": "e712ba83-24ff-404f-8699-61c4902001c9", + "importer": "sprite-frame", + "rawTextureUuid": "418b4767-01bf-4ac2-823b-9880f2a79215", + "trimType": "auto", + "trimThreshold": 1, + "rotated": true, + "offsetX": 0, + "offsetY": 0, + "trimX": 1240, + "trimY": 784, + "width": 138, + "height": 69, + "rawWidth": 138, + "rawHeight": 69, + "borderTop": 0, + "borderBottom": 0, + "borderLeft": 0, + "borderRight": 0, + "spriteType": "normal", + "subMetas": {} + }, + "7color2.png": { + "ver": "1.0.6", + "uuid": "dd2060c3-db79-48ff-b6b2-346e357ec7ed", + "importer": "sprite-frame", + "rawTextureUuid": "418b4767-01bf-4ac2-823b-9880f2a79215", + "trimType": "auto", + "trimThreshold": 1, + "rotated": false, + "offsetX": 0, + "offsetY": 0, + "trimX": 270, + "trimY": 813, + "width": 258, + "height": 69, + "rawWidth": 258, + "rawHeight": 69, + "borderTop": 0, + "borderBottom": 0, + "borderLeft": 0, + "borderRight": 0, + "spriteType": "normal", + "subMetas": {} + }, + "7color3.png": { + "ver": "1.0.6", + "uuid": "880acb82-9636-4221-b533-3c9f826c4d9c", + "importer": "sprite-frame", + "rawTextureUuid": "418b4767-01bf-4ac2-823b-9880f2a79215", + "trimType": "auto", + "trimThreshold": 1, + "rotated": false, + "offsetX": 0, + "offsetY": 0, + "trimX": 129, + "trimY": 332, + "width": 378, + "height": 69, + "rawWidth": 378, + "rawHeight": 69, + "borderTop": 0, + "borderBottom": 0, + "borderLeft": 0, + "borderRight": 0, + "spriteType": "normal", + "subMetas": {} + }, + "7color4.png": { + "ver": "1.0.6", + "uuid": "c97d0dd9-8a86-4d84-a51c-4451beea4e1a", + "importer": "sprite-frame", + "rawTextureUuid": "418b4767-01bf-4ac2-823b-9880f2a79215", + "trimType": "auto", + "trimThreshold": 1, + "rotated": true, + "offsetX": 0, + "offsetY": 0, + "trimX": 840, + "trimY": 538, + "width": 62, + "height": 147, + "rawWidth": 62, + "rawHeight": 147, + "borderTop": 0, + "borderBottom": 0, + "borderLeft": 0, + "borderRight": 0, + "spriteType": "normal", + "subMetas": {} + }, + "7color5.png": { + "ver": "1.0.6", + "uuid": "2defa794-ed61-4edf-a314-b8cda4b029aa", + "importer": "sprite-frame", + "rawTextureUuid": "418b4767-01bf-4ac2-823b-9880f2a79215", + "trimType": "auto", + "trimThreshold": 1, + "rotated": true, + "offsetX": 0, + "offsetY": 0, + "trimX": 889, + "trimY": 340, + "width": 62, + "height": 267, + "rawWidth": 62, + "rawHeight": 267, + "borderTop": 0, + "borderBottom": 0, + "borderLeft": 0, + "borderRight": 0, + "spriteType": "normal", + "subMetas": {} + }, + "7color6.png": { + "ver": "1.0.6", + "uuid": "1672955d-283c-47be-a394-28cac1c6ba5b", + "importer": "sprite-frame", + "rawTextureUuid": "418b4767-01bf-4ac2-823b-9880f2a79215", + "trimType": "auto", + "trimThreshold": 1, + "rotated": false, + "offsetX": 0, + "offsetY": 0, + "trimX": 1, + "trimY": 1, + "width": 62, + "height": 387, + "rawWidth": 62, + "rawHeight": 387, + "borderTop": 0, + "borderBottom": 0, + "borderLeft": 0, + "borderRight": 0, + "spriteType": "normal", + "subMetas": {} + }, + "8color1.png": { + "ver": "1.0.6", + "uuid": "6abff37f-5b52-4658-bd2b-c146e6dea162", + "importer": "sprite-frame", + "rawTextureUuid": "418b4767-01bf-4ac2-823b-9880f2a79215", + "trimType": "auto", + "trimThreshold": 1, + "rotated": false, + "offsetX": 0, + "offsetY": 0, + "trimX": 825, + "trimY": 829, + "width": 138, + "height": 69, + "rawWidth": 138, + "rawHeight": 69, + "borderTop": 0, + "borderBottom": 0, + "borderLeft": 0, + "borderRight": 0, + "spriteType": "normal", + "subMetas": {} + }, + "8color2.png": { + "ver": "1.0.6", + "uuid": "e91b0b84-c90c-4f76-b1e4-b8976cb6dede", + "importer": "sprite-frame", + "rawTextureUuid": "418b4767-01bf-4ac2-823b-9880f2a79215", + "trimType": "auto", + "trimThreshold": 1, + "rotated": false, + "offsetX": 0, + "offsetY": 0, + "trimX": 127, + "trimY": 467, + "width": 259, + "height": 69, + "rawWidth": 259, + "rawHeight": 69, + "borderTop": 0, + "borderBottom": 0, + "borderLeft": 0, + "borderRight": 0, + "spriteType": "normal", + "subMetas": {} + }, + "8color3.png": { + "ver": "1.0.6", + "uuid": "582183eb-bd29-403e-848d-164b9ac0ed50", + "importer": "sprite-frame", + "rawTextureUuid": "418b4767-01bf-4ac2-823b-9880f2a79215", + "trimType": "auto", + "trimThreshold": 1, + "rotated": false, + "offsetX": 0, + "offsetY": 0, + "trimX": 509, + "trimY": 340, + "width": 378, + "height": 69, + "rawWidth": 378, + "rawHeight": 69, + "borderTop": 0, + "borderBottom": 0, + "borderLeft": 0, + "borderRight": 0, + "spriteType": "normal", + "subMetas": {} + }, + "8color4.png": { + "ver": "1.0.6", + "uuid": "43ba2e3e-eb31-41b2-98d0-74bf98cad885", + "importer": "sprite-frame", + "rawTextureUuid": "418b4767-01bf-4ac2-823b-9880f2a79215", + "trimType": "auto", + "trimThreshold": 1, + "rotated": true, + "offsetX": 0, + "offsetY": 0, + "trimX": 678, + "trimY": 829, + "width": 61, + "height": 145, + "rawWidth": 61, + "rawHeight": 145, + "borderTop": 0, + "borderBottom": 0, + "borderLeft": 0, + "borderRight": 0, + "spriteType": "normal", + "subMetas": {} + }, + "8color5.png": { + "ver": "1.0.6", + "uuid": "74c1ec31-91eb-423e-97c9-68c93ffde355", + "importer": "sprite-frame", + "rawTextureUuid": "418b4767-01bf-4ac2-823b-9880f2a79215", + "trimType": "auto", + "trimThreshold": 1, + "rotated": true, + "offsetX": 0, + "offsetY": 0, + "trimX": 388, + "trimY": 474, + "width": 61, + "height": 266, + "rawWidth": 61, + "rawHeight": 266, + "borderTop": 0, + "borderBottom": 0, + "borderLeft": 0, + "borderRight": 0, + "spriteType": "normal", + "subMetas": {} + }, + "8color6.png": { + "ver": "1.0.6", + "uuid": "e468d8cc-1332-4516-b4d6-f4dd61e6ab54", + "importer": "sprite-frame", + "rawTextureUuid": "418b4767-01bf-4ac2-823b-9880f2a79215", + "trimType": "auto", + "trimThreshold": 1, + "rotated": true, + "offsetX": 0, + "offsetY": 0, + "trimX": 518, + "trimY": 135, + "width": 61, + "height": 386, + "rawWidth": 61, + "rawHeight": 386, + "borderTop": 0, + "borderBottom": 0, + "borderLeft": 0, + "borderRight": 0, + "spriteType": "normal", + "subMetas": {} + }, + "9color1.png": { + "ver": "1.0.6", + "uuid": "360ebdc2-02ca-4937-8d15-8224b0950ab2", + "importer": "sprite-frame", + "rawTextureUuid": "418b4767-01bf-4ac2-823b-9880f2a79215", + "trimType": "auto", + "trimThreshold": 1, + "rotated": false, + "offsetX": 0, + "offsetY": 0, + "trimX": 661, + "trimY": 892, + "width": 138, + "height": 69, + "rawWidth": 138, + "rawHeight": 69, + "borderTop": 0, + "borderBottom": 0, + "borderLeft": 0, + "borderRight": 0, + "spriteType": "normal", + "subMetas": {} + }, + "9color2.png": { + "ver": "1.0.6", + "uuid": "3d4ca3d9-74fd-4408-99e3-0f9b0101c7b3", + "importer": "sprite-frame", + "rawTextureUuid": "418b4767-01bf-4ac2-823b-9880f2a79215", + "trimType": "auto", + "trimThreshold": 1, + "rotated": false, + "offsetX": 0, + "offsetY": 0, + "trimX": 261, + "trimY": 884, + "width": 258, + "height": 69, + "rawWidth": 258, + "rawHeight": 69, + "borderTop": 0, + "borderBottom": 0, + "borderLeft": 0, + "borderRight": 0, + "spriteType": "normal", + "subMetas": {} + }, + "9color3.png": { + "ver": "1.0.6", + "uuid": "88a9a994-1d0b-49c1-a081-3f33c864b120", + "importer": "sprite-frame", + "rawTextureUuid": "418b4767-01bf-4ac2-823b-9880f2a79215", + "trimType": "auto", + "trimThreshold": 1, + "rotated": false, + "offsetX": 0, + "offsetY": 0, + "trimX": 906, + "trimY": 135, + "width": 378, + "height": 69, + "rawWidth": 378, + "rawHeight": 69, + "borderTop": 0, + "borderBottom": 0, + "borderLeft": 0, + "borderRight": 0, + "spriteType": "normal", + "subMetas": {} + }, + "9color4.png": { + "ver": "1.0.6", + "uuid": "006ec77b-2f24-4f23-8685-898cc6802c7f", + "importer": "sprite-frame", + "rawTextureUuid": "418b4767-01bf-4ac2-823b-9880f2a79215", + "trimType": "auto", + "trimThreshold": 1, + "rotated": false, + "offsetX": 0, + "offsetY": 0, + "trimX": 1276, + "trimY": 488, + "width": 60, + "height": 146, + "rawWidth": 60, + "rawHeight": 146, + "borderTop": 0, + "borderBottom": 0, + "borderLeft": 0, + "borderRight": 0, + "spriteType": "normal", + "subMetas": {} + }, + "9color5.png": { + "ver": "1.0.6", + "uuid": "dab229f9-0033-4f2e-a766-b34f445fe773", + "importer": "sprite-frame", + "rawTextureUuid": "418b4767-01bf-4ac2-823b-9880f2a79215", + "trimType": "auto", + "trimThreshold": 1, + "rotated": true, + "offsetX": 0, + "offsetY": 0, + "trimX": 1, + "trimY": 806, + "width": 61, + "height": 267, + "rawWidth": 61, + "rawHeight": 267, + "borderTop": 0, + "borderBottom": 0, + "borderLeft": 0, + "borderRight": 0, + "spriteType": "normal", + "subMetas": {} + }, + "9color6.png": { + "ver": "1.0.6", + "uuid": "a5543b75-5f2f-4355-8b34-7770803e78bc", + "importer": "sprite-frame", + "rawTextureUuid": "418b4767-01bf-4ac2-823b-9880f2a79215", + "trimType": "auto", + "trimThreshold": 1, + "rotated": true, + "offsetX": 0, + "offsetY": 0, + "trimX": 129, + "trimY": 127, + "width": 61, + "height": 387, + "rawWidth": 61, + "rawHeight": 387, + "borderTop": 0, + "borderBottom": 0, + "borderLeft": 0, + "borderRight": 0, + "spriteType": "normal", + "subMetas": {} + }, + "dikuai.png": { + "ver": "1.0.6", + "uuid": "b1760ce5-36c7-4d8b-bb5f-069a448ebbf2", + "importer": "sprite-frame", + "rawTextureUuid": "418b4767-01bf-4ac2-823b-9880f2a79215", + "trimType": "auto", + "trimThreshold": 1, + "rotated": false, + "offsetX": 0, + "offsetY": 0, + "trimX": 866, + "trimY": 602, + "width": 120, + "height": 120, + "rawWidth": 120, + "rawHeight": 120, + "borderTop": 0, + "borderBottom": 0, + "borderLeft": 0, + "borderRight": 0, + "spriteType": "normal", + "subMetas": {} + }, + "shu_zl1.png": { + "ver": "1.0.6", + "uuid": "66c27f02-719e-422c-9277-42063833c0af", + "importer": "sprite-frame", + "rawTextureUuid": "418b4767-01bf-4ac2-823b-9880f2a79215", + "trimType": "auto", + "trimThreshold": 1, + "rotated": false, + "offsetX": 0, + "offsetY": 0, + "trimX": 1081, + "trimY": 883, + "width": 9, + "height": 42, + "rawWidth": 9, + "rawHeight": 42, + "borderTop": 0, + "borderBottom": 0, + "borderLeft": 0, + "borderRight": 0, + "spriteType": "normal", + "subMetas": {} + }, + "shu_zl1_1.png": { + "ver": "1.0.6", + "uuid": "9b80c949-4fcd-4e45-afa9-ad91683ef7b7", + "importer": "sprite-frame", + "rawTextureUuid": "418b4767-01bf-4ac2-823b-9880f2a79215", + "trimType": "auto", + "trimThreshold": 1, + "rotated": true, + "offsetX": 0, + "offsetY": 0, + "trimX": 333, + "trimY": 680, + "width": 58, + "height": 34, + "rawWidth": 58, + "rawHeight": 34, + "borderTop": 0, + "borderBottom": 0, + "borderLeft": 0, + "borderRight": 0, + "spriteType": "normal", + "subMetas": {} + }, + "shu_zl1_2.png": { + "ver": "1.0.6", + "uuid": "36c23619-6422-47be-aa02-f78b7618bb3c", + "importer": "sprite-frame", + "rawTextureUuid": "418b4767-01bf-4ac2-823b-9880f2a79215", + "trimType": "auto", + "trimThreshold": 1, + "rotated": true, + "offsetX": 0, + "offsetY": 0, + "trimX": 804, + "trimY": 479, + "width": 118, + "height": 34, + "rawWidth": 118, + "rawHeight": 34, + "borderTop": 0, + "borderBottom": 0, + "borderLeft": 0, + "borderRight": 0, + "spriteType": "normal", + "subMetas": {} + }, + "shu_zl1_3.png": { + "ver": "1.0.6", + "uuid": "2c8edc9c-c130-4c61-98f1-0a9b2edf3270", + "importer": "sprite-frame", + "rawTextureUuid": "418b4767-01bf-4ac2-823b-9880f2a79215", + "trimType": "auto", + "trimThreshold": 1, + "rotated": false, + "offsetX": 0, + "offsetY": 0, + "trimX": 1, + "trimY": 940, + "width": 178, + "height": 34, + "rawWidth": 178, + "rawHeight": 34, + "borderTop": 0, + "borderBottom": 0, + "borderLeft": 0, + "borderRight": 0, + "spriteType": "normal", + "subMetas": {} + }, + "shu_zl2.png": { + "ver": "1.0.6", + "uuid": "894c0780-7f4a-4a9f-ad92-de3471abb5c5", + "importer": "sprite-frame", + "rawTextureUuid": "418b4767-01bf-4ac2-823b-9880f2a79215", + "trimType": "auto", + "trimThreshold": 1, + "rotated": false, + "offsetX": 0, + "offsetY": 0, + "trimX": 64, + "trimY": 659, + "width": 40, + "height": 10, + "rawWidth": 40, + "rawHeight": 10, + "borderTop": 0, + "borderBottom": 0, + "borderLeft": 0, + "borderRight": 0, + "spriteType": "normal", + "subMetas": {} + }, + "shu_zl2_1.png": { + "ver": "1.0.6", + "uuid": "18d68fd0-41ef-430e-9de2-d38b9e55b08c", + "importer": "sprite-frame", + "rawTextureUuid": "418b4767-01bf-4ac2-823b-9880f2a79215", + "trimType": "auto", + "trimThreshold": 1, + "rotated": true, + "offsetX": 0, + "offsetY": 0, + "trimX": 965, + "trimY": 829, + "width": 32, + "height": 54, + "rawWidth": 32, + "rawHeight": 54, + "borderTop": 0, + "borderBottom": 0, + "borderLeft": 0, + "borderRight": 0, + "spriteType": "normal", + "subMetas": {} + }, + "shu_zl2_11.png": { + "ver": "1.0.6", + "uuid": "a8c7af66-0323-4bbd-b41b-ae9ed5671c84", + "importer": "sprite-frame", + "rawTextureUuid": "418b4767-01bf-4ac2-823b-9880f2a79215", + "trimType": "auto", + "trimThreshold": 1, + "rotated": true, + "offsetX": 0, + "offsetY": 0, + "trimX": 1277, + "trimY": 277, + "width": 32, + "height": 59, + "rawWidth": 32, + "rawHeight": 59, + "borderTop": 0, + "borderBottom": 0, + "borderLeft": 0, + "borderRight": 0, + "spriteType": "normal", + "subMetas": {} + }, + "shu_zl2_2.png": { + "ver": "1.0.6", + "uuid": "90d2bb3b-aeca-4ea8-9afa-c2ae9871791b", + "importer": "sprite-frame", + "rawTextureUuid": "418b4767-01bf-4ac2-823b-9880f2a79215", + "trimType": "auto", + "trimThreshold": 1, + "rotated": false, + "offsetX": 0, + "offsetY": 0, + "trimX": 1295, + "trimY": 1, + "width": 32, + "height": 114, + "rawWidth": 32, + "rawHeight": 114, + "borderTop": 0, + "borderBottom": 0, + "borderLeft": 0, + "borderRight": 0, + "spriteType": "normal", + "subMetas": {} + }, + "shu_zl2_22.png": { + "ver": "1.0.6", + "uuid": "aa13f028-c4c4-4978-bc3e-56b1ef1f2843", + "importer": "sprite-frame", + "rawTextureUuid": "418b4767-01bf-4ac2-823b-9880f2a79215", + "trimType": "auto", + "trimThreshold": 1, + "rotated": true, + "offsetX": 0, + "offsetY": 0, + "trimX": 866, + "trimY": 724, + "width": 32, + "height": 120, + "rawWidth": 32, + "rawHeight": 120, + "borderTop": 0, + "borderBottom": 0, + "borderLeft": 0, + "borderRight": 0, + "spriteType": "normal", + "subMetas": {} + }, + "shu_zl2_3.png": { + "ver": "1.0.6", + "uuid": "ac2a29e0-63e5-4f9d-b088-dd6682f8bde4", + "importer": "sprite-frame", + "rawTextureUuid": "418b4767-01bf-4ac2-823b-9880f2a79215", + "trimType": "auto", + "trimThreshold": 1, + "rotated": true, + "offsetX": 0, + "offsetY": 0, + "trimX": 663, + "trimY": 445, + "width": 32, + "height": 175, + "rawWidth": 32, + "rawHeight": 175, + "borderTop": 0, + "borderBottom": 0, + "borderLeft": 0, + "borderRight": 0, + "spriteType": "normal", + "subMetas": {} + }, + "shu_zl2_33.png": { + "ver": "1.0.6", + "uuid": "6012f579-6820-44ee-89c4-87c6c9b25f44", + "importer": "sprite-frame", + "rawTextureUuid": "418b4767-01bf-4ac2-823b-9880f2a79215", + "trimType": "auto", + "trimThreshold": 1, + "rotated": true, + "offsetX": 0, + "offsetY": 0, + "trimX": 663, + "trimY": 411, + "width": 32, + "height": 180, + "rawWidth": 32, + "rawHeight": 180, + "borderTop": 0, + "borderBottom": 0, + "borderLeft": 0, + "borderRight": 0, + "spriteType": "normal", + "subMetas": {} + }, + "wall1.png": { + "ver": "1.0.6", + "uuid": "fc8fd6fa-3cc2-4a69-a2f7-2c521de510b1", + "importer": "sprite-frame", + "rawTextureUuid": "418b4767-01bf-4ac2-823b-9880f2a79215", + "trimType": "auto", + "trimThreshold": 1, + "rotated": false, + "offsetX": 0, + "offsetY": 0, + "trimX": 941, + "trimY": 900, + "width": 138, + "height": 69, + "rawWidth": 138, + "rawHeight": 69, + "borderTop": 0, + "borderBottom": 0, + "borderLeft": 0, + "borderRight": 0, + "spriteType": "normal", + "subMetas": {} + }, + "wall2.png": { + "ver": "1.0.6", + "uuid": "52f7fc1c-b560-4b6d-b15e-b38b6584a5d8", + "importer": "sprite-frame", + "rawTextureUuid": "418b4767-01bf-4ac2-823b-9880f2a79215", + "trimType": "auto", + "trimThreshold": 1, + "rotated": true, + "offsetX": 0, + "offsetY": 0, + "trimX": 1092, + "trimY": 879, + "width": 61, + "height": 146, + "rawWidth": 61, + "rawHeight": 146, + "borderTop": 0, + "borderBottom": 0, + "borderLeft": 0, + "borderRight": 0, + "spriteType": "normal", + "subMetas": {} + }, + "wall3.png": { + "ver": "1.0.6", + "uuid": "865e12b4-8506-4026-ab52-9c8421100cc4", + "importer": "sprite-frame", + "rawTextureUuid": "418b4767-01bf-4ac2-823b-9880f2a79215", + "trimType": "auto", + "trimThreshold": 1, + "rotated": false, + "offsetX": 0, + "offsetY": 0, + "trimX": 1158, + "trimY": 340, + "width": 138, + "height": 146, + "rawWidth": 138, + "rawHeight": 146, + "borderTop": 0, + "borderBottom": 0, + "borderLeft": 0, + "borderRight": 0, + "spriteType": "normal", + "subMetas": {} + }, + "wall4.png": { + "ver": "1.0.6", + "uuid": "02a22e2f-85e0-4ce1-a955-6ea4bf514319", + "importer": "sprite-frame", + "rawTextureUuid": "418b4767-01bf-4ac2-823b-9880f2a79215", + "trimType": "auto", + "trimThreshold": 1, + "rotated": true, + "offsetX": 0, + "offsetY": 0, + "trimX": 1129, + "trimY": 488, + "width": 137, + "height": 145, + "rawWidth": 137, + "rawHeight": 145, + "borderTop": 0, + "borderBottom": 0, + "borderLeft": 0, + "borderRight": 0, + "spriteType": "normal", + "subMetas": {} + }, + "wall5.png": { + "ver": "1.0.6", + "uuid": "ee73bdf1-0624-464f-a268-cb0ff3f2952b", + "importer": "sprite-frame", + "rawTextureUuid": "418b4767-01bf-4ac2-823b-9880f2a79215", + "trimType": "auto", + "trimThreshold": 1, + "rotated": true, + "offsetX": 0, + "offsetY": 0, + "trimX": 656, + "trimY": 479, + "width": 137, + "height": 146, + "rawWidth": 137, + "rawHeight": 146, + "borderTop": 0, + "borderBottom": 0, + "borderLeft": 0, + "borderRight": 0, + "spriteType": "normal", + "subMetas": {} + }, + "wall6.png": { + "ver": "1.0.6", + "uuid": "e7bbdb15-5185-4c6e-a2f6-1c337b60b460", + "importer": "sprite-frame", + "rawTextureUuid": "418b4767-01bf-4ac2-823b-9880f2a79215", + "trimType": "auto", + "trimThreshold": 1, + "rotated": true, + "offsetX": 0, + "offsetY": 0, + "trimX": 647, + "trimY": 618, + "width": 138, + "height": 146, + "rawWidth": 138, + "rawHeight": 146, + "borderTop": 0, + "borderBottom": 0, + "borderLeft": 0, + "borderRight": 0, + "spriteType": "normal", + "subMetas": {} + }, + "wall7.png": { + "ver": "1.0.6", + "uuid": "3042034a-eafb-4920-aacc-79bd4f56d417", + "importer": "sprite-frame", + "rawTextureUuid": "418b4767-01bf-4ac2-823b-9880f2a79215", + "trimType": "auto", + "trimThreshold": 1, + "rotated": false, + "offsetX": 0, + "offsetY": 0, + "trimX": 1269, + "trimY": 206, + "width": 61, + "height": 69, + "rawWidth": 61, + "rawHeight": 69, + "borderTop": 0, + "borderBottom": 0, + "borderLeft": 0, + "borderRight": 0, + "spriteType": "normal", + "subMetas": {} + }, + "zhangai.png": { + "ver": "1.0.6", + "uuid": "e200ed15-b2bf-49eb-864b-d0ead7b9fbd6", + "importer": "sprite-frame", + "rawTextureUuid": "418b4767-01bf-4ac2-823b-9880f2a79215", + "trimType": "auto", + "trimThreshold": 1, + "rotated": true, + "offsetX": 0, + "offsetY": 0, + "trimX": 988, + "trimY": 609, + "width": 132, + "height": 137, + "rawWidth": 132, + "rawHeight": 137, + "borderTop": 0, + "borderBottom": 0, + "borderLeft": 0, + "borderRight": 0, + "spriteType": "normal", + "subMetas": {} + } + } +} \ No newline at end of file diff --git a/assets/res/texture_Block/door.png b/assets/res/texture_Block/door.png new file mode 100644 index 0000000..ca9aaf4 Binary files /dev/null and b/assets/res/texture_Block/door.png differ diff --git a/assets/res/texture_Block/door.png.meta b/assets/res/texture_Block/door.png.meta new file mode 100644 index 0000000..28d623f --- /dev/null +++ b/assets/res/texture_Block/door.png.meta @@ -0,0 +1,15 @@ +{ + "ver": "2.3.7", + "uuid": "418b4767-01bf-4ac2-823b-9880f2a79215", + "importer": "texture", + "type": "raw", + "wrapMode": "clamp", + "filterMode": "bilinear", + "premultiplyAlpha": false, + "genMipmaps": false, + "packable": true, + "width": 1337, + "height": 975, + "platformSettings": {}, + "subMetas": {} +} \ No newline at end of file diff --git a/assets/resources/prefab/prop.meta b/assets/resources/prefab/prop.meta new file mode 100644 index 0000000..6c5b1f7 --- /dev/null +++ b/assets/resources/prefab/prop.meta @@ -0,0 +1,13 @@ +{ + "ver": "1.1.3", + "uuid": "c8878cfa-dda2-45ac-9204-7b3c4da0d5c4", + "importer": "folder", + "isBundle": false, + "bundleName": "", + "priority": 1, + "compressionType": {}, + "optimizeHotUpdate": {}, + "inlineSpriteFrames": {}, + "isRemoteBundle": {}, + "subMetas": {} +} \ No newline at end of file diff --git a/assets/resources/prefab/wall/down.prefab b/assets/resources/prefab/wall/down.prefab index 8b1c1d1..c6fa3d9 100644 --- a/assets/resources/prefab/wall/down.prefab +++ b/assets/resources/prefab/wall/down.prefab @@ -281,7 +281,7 @@ "_srcBlendFactor": 770, "_dstBlendFactor": 771, "_spriteFrame": { - "__uuid__": "fc8fd6fa-3cc2-4a69-a2f7-2c521de510b1" + "__uuid__": "6db2aafd-c221-4be9-a20b-5bb361fe22ef" }, "_type": 0, "_sizeMode": 1, @@ -295,7 +295,7 @@ "_fillRange": 0, "_isTrimmedMode": true, "_atlas": { - "__uuid__": "cc01997d-495e-480d-871e-be405a6c38b5" + "__uuid__": "f2c494b7-b6df-488f-b194-358235b0f180" }, "_id": "" }, @@ -315,7 +315,7 @@ "__uuid__": "f2c494b7-b6df-488f-b194-358235b0f180" }, "down_SpriteFrames": { - "__uuid__": "31479c6e-5626-4598-97ab-f94303e9efe7" + "__uuid__": "3d019ed8-3019-436d-add0-ceeb02a5baaf" }, "_id": "" }, @@ -2042,7 +2042,7 @@ "_srcBlendFactor": 770, "_dstBlendFactor": 771, "_spriteFrame": { - "__uuid__": "66c27f02-719e-422c-9277-42063833c0af" + "__uuid__": "4c2ac211-077a-4783-92b7-42964571ebfe" }, "_type": 0, "_sizeMode": 1, @@ -2056,7 +2056,7 @@ "_fillRange": 0, "_isTrimmedMode": true, "_atlas": { - "__uuid__": "cc01997d-495e-480d-871e-be405a6c38b5" + "__uuid__": "f2c494b7-b6df-488f-b194-358235b0f180" }, "_id": "" }, @@ -2087,7 +2087,7 @@ "_srcBlendFactor": 770, "_dstBlendFactor": 771, "_spriteFrame": { - "__uuid__": "9b80c949-4fcd-4e45-afa9-ad91683ef7b7" + "__uuid__": "1f53a670-99ab-4671-932f-3227940876cc" }, "_type": 3, "_sizeMode": 0, @@ -2101,7 +2101,7 @@ "_fillRange": 1, "_isTrimmedMode": true, "_atlas": { - "__uuid__": "cc01997d-495e-480d-871e-be405a6c38b5" + "__uuid__": "f2c494b7-b6df-488f-b194-358235b0f180" }, "_id": "" }, @@ -2264,7 +2264,7 @@ "_srcBlendFactor": 770, "_dstBlendFactor": 771, "_spriteFrame": { - "__uuid__": "66c27f02-719e-422c-9277-42063833c0af" + "__uuid__": "4c2ac211-077a-4783-92b7-42964571ebfe" }, "_type": 0, "_sizeMode": 1, @@ -2278,7 +2278,7 @@ "_fillRange": 0, "_isTrimmedMode": true, "_atlas": { - "__uuid__": "cc01997d-495e-480d-871e-be405a6c38b5" + "__uuid__": "f2c494b7-b6df-488f-b194-358235b0f180" }, "_id": "" }, @@ -2309,7 +2309,7 @@ "_srcBlendFactor": 770, "_dstBlendFactor": 771, "_spriteFrame": { - "__uuid__": "9b80c949-4fcd-4e45-afa9-ad91683ef7b7" + "__uuid__": "1f53a670-99ab-4671-932f-3227940876cc" }, "_type": 3, "_sizeMode": 0, @@ -2323,7 +2323,7 @@ "_fillRange": 1, "_isTrimmedMode": true, "_atlas": { - "__uuid__": "cc01997d-495e-480d-871e-be405a6c38b5" + "__uuid__": "f2c494b7-b6df-488f-b194-358235b0f180" }, "_id": "" }, @@ -2418,7 +2418,7 @@ "_srcBlendFactor": 770, "_dstBlendFactor": 771, "_spriteFrame": { - "__uuid__": "66c27f02-719e-422c-9277-42063833c0af" + "__uuid__": "4c2ac211-077a-4783-92b7-42964571ebfe" }, "_type": 0, "_sizeMode": 1, @@ -2432,7 +2432,7 @@ "_fillRange": 0, "_isTrimmedMode": true, "_atlas": { - "__uuid__": "cc01997d-495e-480d-871e-be405a6c38b5" + "__uuid__": "f2c494b7-b6df-488f-b194-358235b0f180" }, "_id": "" }, @@ -2527,7 +2527,7 @@ "_srcBlendFactor": 770, "_dstBlendFactor": 771, "_spriteFrame": { - "__uuid__": "66c27f02-719e-422c-9277-42063833c0af" + "__uuid__": "4c2ac211-077a-4783-92b7-42964571ebfe" }, "_type": 0, "_sizeMode": 1, @@ -2541,7 +2541,7 @@ "_fillRange": 0, "_isTrimmedMode": true, "_atlas": { - "__uuid__": "cc01997d-495e-480d-871e-be405a6c38b5" + "__uuid__": "f2c494b7-b6df-488f-b194-358235b0f180" }, "_id": "" }, @@ -2788,7 +2788,7 @@ "_srcBlendFactor": 770, "_dstBlendFactor": 771, "_spriteFrame": { - "__uuid__": "66c27f02-719e-422c-9277-42063833c0af" + "__uuid__": "4c2ac211-077a-4783-92b7-42964571ebfe" }, "_type": 0, "_sizeMode": 1, @@ -2802,7 +2802,7 @@ "_fillRange": 0, "_isTrimmedMode": true, "_atlas": { - "__uuid__": "cc01997d-495e-480d-871e-be405a6c38b5" + "__uuid__": "f2c494b7-b6df-488f-b194-358235b0f180" }, "_id": "" }, @@ -2833,7 +2833,7 @@ "_srcBlendFactor": 770, "_dstBlendFactor": 771, "_spriteFrame": { - "__uuid__": "36c23619-6422-47be-aa02-f78b7618bb3c" + "__uuid__": "b48abaaa-d7d1-45b6-8a24-8f259163122a" }, "_type": 3, "_sizeMode": 0, @@ -2847,7 +2847,7 @@ "_fillRange": 1, "_isTrimmedMode": true, "_atlas": { - "__uuid__": "cc01997d-495e-480d-871e-be405a6c38b5" + "__uuid__": "f2c494b7-b6df-488f-b194-358235b0f180" }, "_id": "" }, @@ -3010,7 +3010,7 @@ "_srcBlendFactor": 770, "_dstBlendFactor": 771, "_spriteFrame": { - "__uuid__": "66c27f02-719e-422c-9277-42063833c0af" + "__uuid__": "4c2ac211-077a-4783-92b7-42964571ebfe" }, "_type": 0, "_sizeMode": 1, @@ -3024,7 +3024,7 @@ "_fillRange": 0, "_isTrimmedMode": true, "_atlas": { - "__uuid__": "cc01997d-495e-480d-871e-be405a6c38b5" + "__uuid__": "f2c494b7-b6df-488f-b194-358235b0f180" }, "_id": "" }, @@ -3055,7 +3055,7 @@ "_srcBlendFactor": 770, "_dstBlendFactor": 771, "_spriteFrame": { - "__uuid__": "36c23619-6422-47be-aa02-f78b7618bb3c" + "__uuid__": "b48abaaa-d7d1-45b6-8a24-8f259163122a" }, "_type": 3, "_sizeMode": 0, @@ -3069,7 +3069,7 @@ "_fillRange": 1, "_isTrimmedMode": true, "_atlas": { - "__uuid__": "cc01997d-495e-480d-871e-be405a6c38b5" + "__uuid__": "f2c494b7-b6df-488f-b194-358235b0f180" }, "_id": "" }, @@ -3164,7 +3164,7 @@ "_srcBlendFactor": 770, "_dstBlendFactor": 771, "_spriteFrame": { - "__uuid__": "66c27f02-719e-422c-9277-42063833c0af" + "__uuid__": "4c2ac211-077a-4783-92b7-42964571ebfe" }, "_type": 0, "_sizeMode": 1, @@ -3178,7 +3178,7 @@ "_fillRange": 0, "_isTrimmedMode": true, "_atlas": { - "__uuid__": "cc01997d-495e-480d-871e-be405a6c38b5" + "__uuid__": "f2c494b7-b6df-488f-b194-358235b0f180" }, "_id": "" }, @@ -3273,7 +3273,7 @@ "_srcBlendFactor": 770, "_dstBlendFactor": 771, "_spriteFrame": { - "__uuid__": "66c27f02-719e-422c-9277-42063833c0af" + "__uuid__": "4c2ac211-077a-4783-92b7-42964571ebfe" }, "_type": 0, "_sizeMode": 1, @@ -3287,7 +3287,7 @@ "_fillRange": 0, "_isTrimmedMode": true, "_atlas": { - "__uuid__": "cc01997d-495e-480d-871e-be405a6c38b5" + "__uuid__": "f2c494b7-b6df-488f-b194-358235b0f180" }, "_id": "" }, @@ -3534,7 +3534,7 @@ "_srcBlendFactor": 770, "_dstBlendFactor": 771, "_spriteFrame": { - "__uuid__": "66c27f02-719e-422c-9277-42063833c0af" + "__uuid__": "4c2ac211-077a-4783-92b7-42964571ebfe" }, "_type": 0, "_sizeMode": 1, @@ -3548,7 +3548,7 @@ "_fillRange": 0, "_isTrimmedMode": true, "_atlas": { - "__uuid__": "cc01997d-495e-480d-871e-be405a6c38b5" + "__uuid__": "f2c494b7-b6df-488f-b194-358235b0f180" }, "_id": "" }, @@ -3579,7 +3579,7 @@ "_srcBlendFactor": 770, "_dstBlendFactor": 771, "_spriteFrame": { - "__uuid__": "2c8edc9c-c130-4c61-98f1-0a9b2edf3270" + "__uuid__": "e122aac4-873c-4996-bbc8-7fdbd2cd0e60" }, "_type": 3, "_sizeMode": 0, @@ -3593,7 +3593,7 @@ "_fillRange": 1, "_isTrimmedMode": true, "_atlas": { - "__uuid__": "cc01997d-495e-480d-871e-be405a6c38b5" + "__uuid__": "f2c494b7-b6df-488f-b194-358235b0f180" }, "_id": "" }, @@ -3756,7 +3756,7 @@ "_srcBlendFactor": 770, "_dstBlendFactor": 771, "_spriteFrame": { - "__uuid__": "66c27f02-719e-422c-9277-42063833c0af" + "__uuid__": "4c2ac211-077a-4783-92b7-42964571ebfe" }, "_type": 0, "_sizeMode": 1, @@ -3770,7 +3770,7 @@ "_fillRange": 0, "_isTrimmedMode": true, "_atlas": { - "__uuid__": "cc01997d-495e-480d-871e-be405a6c38b5" + "__uuid__": "f2c494b7-b6df-488f-b194-358235b0f180" }, "_id": "" }, @@ -3801,7 +3801,7 @@ "_srcBlendFactor": 770, "_dstBlendFactor": 771, "_spriteFrame": { - "__uuid__": "2c8edc9c-c130-4c61-98f1-0a9b2edf3270" + "__uuid__": "e122aac4-873c-4996-bbc8-7fdbd2cd0e60" }, "_type": 3, "_sizeMode": 0, @@ -3815,7 +3815,7 @@ "_fillRange": 1, "_isTrimmedMode": true, "_atlas": { - "__uuid__": "cc01997d-495e-480d-871e-be405a6c38b5" + "__uuid__": "f2c494b7-b6df-488f-b194-358235b0f180" }, "_id": "" }, @@ -3910,7 +3910,7 @@ "_srcBlendFactor": 770, "_dstBlendFactor": 771, "_spriteFrame": { - "__uuid__": "66c27f02-719e-422c-9277-42063833c0af" + "__uuid__": "4c2ac211-077a-4783-92b7-42964571ebfe" }, "_type": 0, "_sizeMode": 1, @@ -3924,7 +3924,7 @@ "_fillRange": 0, "_isTrimmedMode": true, "_atlas": { - "__uuid__": "cc01997d-495e-480d-871e-be405a6c38b5" + "__uuid__": "f2c494b7-b6df-488f-b194-358235b0f180" }, "_id": "" }, @@ -4019,7 +4019,7 @@ "_srcBlendFactor": 770, "_dstBlendFactor": 771, "_spriteFrame": { - "__uuid__": "66c27f02-719e-422c-9277-42063833c0af" + "__uuid__": "4c2ac211-077a-4783-92b7-42964571ebfe" }, "_type": 0, "_sizeMode": 1, @@ -4033,7 +4033,7 @@ "_fillRange": 0, "_isTrimmedMode": true, "_atlas": { - "__uuid__": "cc01997d-495e-480d-871e-be405a6c38b5" + "__uuid__": "f2c494b7-b6df-488f-b194-358235b0f180" }, "_id": "" }, diff --git a/assets/resources/prefab/wall/downLeft.prefab b/assets/resources/prefab/wall/downLeft.prefab index 7ba1abf..4252244 100644 --- a/assets/resources/prefab/wall/downLeft.prefab +++ b/assets/resources/prefab/wall/downLeft.prefab @@ -159,7 +159,7 @@ "_srcBlendFactor": 770, "_dstBlendFactor": 771, "_spriteFrame": { - "__uuid__": "ee73bdf1-0624-464f-a268-cb0ff3f2952b" + "__uuid__": "4891e811-ae55-4277-b9de-7592e8016504" }, "_type": 0, "_sizeMode": 1, @@ -173,7 +173,7 @@ "_fillRange": 0, "_isTrimmedMode": true, "_atlas": { - "__uuid__": "cc01997d-495e-480d-871e-be405a6c38b5" + "__uuid__": "f2c494b7-b6df-488f-b194-358235b0f180" }, "_id": "" }, diff --git a/assets/resources/prefab/wall/downRight.prefab b/assets/resources/prefab/wall/downRight.prefab index 1c5a4d9..349c141 100644 --- a/assets/resources/prefab/wall/downRight.prefab +++ b/assets/resources/prefab/wall/downRight.prefab @@ -159,7 +159,7 @@ "_srcBlendFactor": 770, "_dstBlendFactor": 771, "_spriteFrame": { - "__uuid__": "e7bbdb15-5185-4c6e-a2f6-1c337b60b460" + "__uuid__": "6aba7f92-7bd5-4b20-8a55-7730e1bfa75d" }, "_type": 0, "_sizeMode": 1, @@ -173,7 +173,7 @@ "_fillRange": 0, "_isTrimmedMode": true, "_atlas": { - "__uuid__": "cc01997d-495e-480d-871e-be405a6c38b5" + "__uuid__": "f2c494b7-b6df-488f-b194-358235b0f180" }, "_id": "" }, diff --git a/assets/resources/prefab/wall/left.prefab b/assets/resources/prefab/wall/left.prefab index 58b4257..3ee858d 100644 --- a/assets/resources/prefab/wall/left.prefab +++ b/assets/resources/prefab/wall/left.prefab @@ -281,7 +281,7 @@ "_srcBlendFactor": 770, "_dstBlendFactor": 771, "_spriteFrame": { - "__uuid__": "52f7fc1c-b560-4b6d-b15e-b38b6584a5d8" + "__uuid__": "4f65ed94-5d59-48ce-b94f-e199044365cf" }, "_type": 0, "_sizeMode": 1, @@ -295,7 +295,7 @@ "_fillRange": 0, "_isTrimmedMode": true, "_atlas": { - "__uuid__": "cc01997d-495e-480d-871e-be405a6c38b5" + "__uuid__": "f2c494b7-b6df-488f-b194-358235b0f180" }, "_id": "" }, @@ -315,7 +315,7 @@ "__uuid__": "f2c494b7-b6df-488f-b194-358235b0f180" }, "down_SpriteFrames": { - "__uuid__": "31479c6e-5626-4598-97ab-f94303e9efe7" + "__uuid__": "3d019ed8-3019-436d-add0-ceeb02a5baaf" }, "_id": "" }, @@ -486,9 +486,7 @@ "_fillStart": 0, "_fillRange": 0, "_isTrimmedMode": true, - "_atlas": { - "__uuid__": "31479c6e-5626-4598-97ab-f94303e9efe7" - }, + "_atlas": null, "_id": "" }, { @@ -2044,7 +2042,7 @@ "_srcBlendFactor": 770, "_dstBlendFactor": 771, "_spriteFrame": { - "__uuid__": "66c27f02-719e-422c-9277-42063833c0af" + "__uuid__": "4c2ac211-077a-4783-92b7-42964571ebfe" }, "_type": 0, "_sizeMode": 1, @@ -2058,7 +2056,7 @@ "_fillRange": 0, "_isTrimmedMode": true, "_atlas": { - "__uuid__": "cc01997d-495e-480d-871e-be405a6c38b5" + "__uuid__": "f2c494b7-b6df-488f-b194-358235b0f180" }, "_id": "" }, @@ -2089,7 +2087,7 @@ "_srcBlendFactor": 770, "_dstBlendFactor": 771, "_spriteFrame": { - "__uuid__": "9b80c949-4fcd-4e45-afa9-ad91683ef7b7" + "__uuid__": "1f53a670-99ab-4671-932f-3227940876cc" }, "_type": 3, "_sizeMode": 0, @@ -2103,7 +2101,7 @@ "_fillRange": 1, "_isTrimmedMode": true, "_atlas": { - "__uuid__": "cc01997d-495e-480d-871e-be405a6c38b5" + "__uuid__": "f2c494b7-b6df-488f-b194-358235b0f180" }, "_id": "" }, @@ -2266,7 +2264,7 @@ "_srcBlendFactor": 770, "_dstBlendFactor": 771, "_spriteFrame": { - "__uuid__": "66c27f02-719e-422c-9277-42063833c0af" + "__uuid__": "4c2ac211-077a-4783-92b7-42964571ebfe" }, "_type": 0, "_sizeMode": 1, @@ -2280,7 +2278,7 @@ "_fillRange": 0, "_isTrimmedMode": true, "_atlas": { - "__uuid__": "cc01997d-495e-480d-871e-be405a6c38b5" + "__uuid__": "f2c494b7-b6df-488f-b194-358235b0f180" }, "_id": "" }, @@ -2311,7 +2309,7 @@ "_srcBlendFactor": 770, "_dstBlendFactor": 771, "_spriteFrame": { - "__uuid__": "9b80c949-4fcd-4e45-afa9-ad91683ef7b7" + "__uuid__": "1f53a670-99ab-4671-932f-3227940876cc" }, "_type": 3, "_sizeMode": 0, @@ -2325,7 +2323,7 @@ "_fillRange": 1, "_isTrimmedMode": true, "_atlas": { - "__uuid__": "cc01997d-495e-480d-871e-be405a6c38b5" + "__uuid__": "f2c494b7-b6df-488f-b194-358235b0f180" }, "_id": "" }, @@ -2420,7 +2418,7 @@ "_srcBlendFactor": 770, "_dstBlendFactor": 771, "_spriteFrame": { - "__uuid__": "66c27f02-719e-422c-9277-42063833c0af" + "__uuid__": "4c2ac211-077a-4783-92b7-42964571ebfe" }, "_type": 0, "_sizeMode": 1, @@ -2434,7 +2432,7 @@ "_fillRange": 0, "_isTrimmedMode": true, "_atlas": { - "__uuid__": "cc01997d-495e-480d-871e-be405a6c38b5" + "__uuid__": "f2c494b7-b6df-488f-b194-358235b0f180" }, "_id": "" }, @@ -2529,7 +2527,7 @@ "_srcBlendFactor": 770, "_dstBlendFactor": 771, "_spriteFrame": { - "__uuid__": "66c27f02-719e-422c-9277-42063833c0af" + "__uuid__": "4c2ac211-077a-4783-92b7-42964571ebfe" }, "_type": 0, "_sizeMode": 1, @@ -2543,7 +2541,7 @@ "_fillRange": 0, "_isTrimmedMode": true, "_atlas": { - "__uuid__": "cc01997d-495e-480d-871e-be405a6c38b5" + "__uuid__": "f2c494b7-b6df-488f-b194-358235b0f180" }, "_id": "" }, @@ -2790,7 +2788,7 @@ "_srcBlendFactor": 770, "_dstBlendFactor": 771, "_spriteFrame": { - "__uuid__": "66c27f02-719e-422c-9277-42063833c0af" + "__uuid__": "4c2ac211-077a-4783-92b7-42964571ebfe" }, "_type": 0, "_sizeMode": 1, @@ -2804,7 +2802,7 @@ "_fillRange": 0, "_isTrimmedMode": true, "_atlas": { - "__uuid__": "cc01997d-495e-480d-871e-be405a6c38b5" + "__uuid__": "f2c494b7-b6df-488f-b194-358235b0f180" }, "_id": "" }, @@ -2835,7 +2833,7 @@ "_srcBlendFactor": 770, "_dstBlendFactor": 771, "_spriteFrame": { - "__uuid__": "36c23619-6422-47be-aa02-f78b7618bb3c" + "__uuid__": "b48abaaa-d7d1-45b6-8a24-8f259163122a" }, "_type": 3, "_sizeMode": 0, @@ -2849,7 +2847,7 @@ "_fillRange": 1, "_isTrimmedMode": true, "_atlas": { - "__uuid__": "cc01997d-495e-480d-871e-be405a6c38b5" + "__uuid__": "f2c494b7-b6df-488f-b194-358235b0f180" }, "_id": "" }, @@ -3012,7 +3010,7 @@ "_srcBlendFactor": 770, "_dstBlendFactor": 771, "_spriteFrame": { - "__uuid__": "66c27f02-719e-422c-9277-42063833c0af" + "__uuid__": "4c2ac211-077a-4783-92b7-42964571ebfe" }, "_type": 0, "_sizeMode": 1, @@ -3026,7 +3024,7 @@ "_fillRange": 0, "_isTrimmedMode": true, "_atlas": { - "__uuid__": "cc01997d-495e-480d-871e-be405a6c38b5" + "__uuid__": "f2c494b7-b6df-488f-b194-358235b0f180" }, "_id": "" }, @@ -3057,7 +3055,7 @@ "_srcBlendFactor": 770, "_dstBlendFactor": 771, "_spriteFrame": { - "__uuid__": "36c23619-6422-47be-aa02-f78b7618bb3c" + "__uuid__": "b48abaaa-d7d1-45b6-8a24-8f259163122a" }, "_type": 3, "_sizeMode": 0, @@ -3071,7 +3069,7 @@ "_fillRange": 1, "_isTrimmedMode": true, "_atlas": { - "__uuid__": "cc01997d-495e-480d-871e-be405a6c38b5" + "__uuid__": "f2c494b7-b6df-488f-b194-358235b0f180" }, "_id": "" }, @@ -3166,7 +3164,7 @@ "_srcBlendFactor": 770, "_dstBlendFactor": 771, "_spriteFrame": { - "__uuid__": "66c27f02-719e-422c-9277-42063833c0af" + "__uuid__": "4c2ac211-077a-4783-92b7-42964571ebfe" }, "_type": 0, "_sizeMode": 1, @@ -3180,7 +3178,7 @@ "_fillRange": 0, "_isTrimmedMode": true, "_atlas": { - "__uuid__": "cc01997d-495e-480d-871e-be405a6c38b5" + "__uuid__": "f2c494b7-b6df-488f-b194-358235b0f180" }, "_id": "" }, @@ -3275,7 +3273,7 @@ "_srcBlendFactor": 770, "_dstBlendFactor": 771, "_spriteFrame": { - "__uuid__": "66c27f02-719e-422c-9277-42063833c0af" + "__uuid__": "4c2ac211-077a-4783-92b7-42964571ebfe" }, "_type": 0, "_sizeMode": 1, @@ -3289,7 +3287,7 @@ "_fillRange": 0, "_isTrimmedMode": true, "_atlas": { - "__uuid__": "cc01997d-495e-480d-871e-be405a6c38b5" + "__uuid__": "f2c494b7-b6df-488f-b194-358235b0f180" }, "_id": "" }, @@ -3536,7 +3534,7 @@ "_srcBlendFactor": 770, "_dstBlendFactor": 771, "_spriteFrame": { - "__uuid__": "66c27f02-719e-422c-9277-42063833c0af" + "__uuid__": "4c2ac211-077a-4783-92b7-42964571ebfe" }, "_type": 0, "_sizeMode": 1, @@ -3550,7 +3548,7 @@ "_fillRange": 0, "_isTrimmedMode": true, "_atlas": { - "__uuid__": "cc01997d-495e-480d-871e-be405a6c38b5" + "__uuid__": "f2c494b7-b6df-488f-b194-358235b0f180" }, "_id": "" }, @@ -3581,7 +3579,7 @@ "_srcBlendFactor": 770, "_dstBlendFactor": 771, "_spriteFrame": { - "__uuid__": "2c8edc9c-c130-4c61-98f1-0a9b2edf3270" + "__uuid__": "e122aac4-873c-4996-bbc8-7fdbd2cd0e60" }, "_type": 3, "_sizeMode": 0, @@ -3595,7 +3593,7 @@ "_fillRange": 1, "_isTrimmedMode": true, "_atlas": { - "__uuid__": "cc01997d-495e-480d-871e-be405a6c38b5" + "__uuid__": "f2c494b7-b6df-488f-b194-358235b0f180" }, "_id": "" }, @@ -3758,7 +3756,7 @@ "_srcBlendFactor": 770, "_dstBlendFactor": 771, "_spriteFrame": { - "__uuid__": "66c27f02-719e-422c-9277-42063833c0af" + "__uuid__": "4c2ac211-077a-4783-92b7-42964571ebfe" }, "_type": 0, "_sizeMode": 1, @@ -3772,7 +3770,7 @@ "_fillRange": 0, "_isTrimmedMode": true, "_atlas": { - "__uuid__": "cc01997d-495e-480d-871e-be405a6c38b5" + "__uuid__": "f2c494b7-b6df-488f-b194-358235b0f180" }, "_id": "" }, @@ -3803,7 +3801,7 @@ "_srcBlendFactor": 770, "_dstBlendFactor": 771, "_spriteFrame": { - "__uuid__": "2c8edc9c-c130-4c61-98f1-0a9b2edf3270" + "__uuid__": "e122aac4-873c-4996-bbc8-7fdbd2cd0e60" }, "_type": 3, "_sizeMode": 0, @@ -3817,7 +3815,7 @@ "_fillRange": 1, "_isTrimmedMode": true, "_atlas": { - "__uuid__": "cc01997d-495e-480d-871e-be405a6c38b5" + "__uuid__": "f2c494b7-b6df-488f-b194-358235b0f180" }, "_id": "" }, @@ -3912,7 +3910,7 @@ "_srcBlendFactor": 770, "_dstBlendFactor": 771, "_spriteFrame": { - "__uuid__": "66c27f02-719e-422c-9277-42063833c0af" + "__uuid__": "4c2ac211-077a-4783-92b7-42964571ebfe" }, "_type": 0, "_sizeMode": 1, @@ -3926,7 +3924,7 @@ "_fillRange": 0, "_isTrimmedMode": true, "_atlas": { - "__uuid__": "cc01997d-495e-480d-871e-be405a6c38b5" + "__uuid__": "f2c494b7-b6df-488f-b194-358235b0f180" }, "_id": "" }, @@ -4021,7 +4019,7 @@ "_srcBlendFactor": 770, "_dstBlendFactor": 771, "_spriteFrame": { - "__uuid__": "66c27f02-719e-422c-9277-42063833c0af" + "__uuid__": "4c2ac211-077a-4783-92b7-42964571ebfe" }, "_type": 0, "_sizeMode": 1, @@ -4035,7 +4033,7 @@ "_fillRange": 0, "_isTrimmedMode": true, "_atlas": { - "__uuid__": "cc01997d-495e-480d-871e-be405a6c38b5" + "__uuid__": "f2c494b7-b6df-488f-b194-358235b0f180" }, "_id": "" }, diff --git a/assets/resources/prefab/wall/right.prefab b/assets/resources/prefab/wall/right.prefab index 92d5fba..15bbabb 100644 --- a/assets/resources/prefab/wall/right.prefab +++ b/assets/resources/prefab/wall/right.prefab @@ -281,7 +281,7 @@ "_srcBlendFactor": 770, "_dstBlendFactor": 771, "_spriteFrame": { - "__uuid__": "52f7fc1c-b560-4b6d-b15e-b38b6584a5d8" + "__uuid__": "4f65ed94-5d59-48ce-b94f-e199044365cf" }, "_type": 0, "_sizeMode": 1, @@ -295,7 +295,7 @@ "_fillRange": 0, "_isTrimmedMode": true, "_atlas": { - "__uuid__": "cc01997d-495e-480d-871e-be405a6c38b5" + "__uuid__": "f2c494b7-b6df-488f-b194-358235b0f180" }, "_id": "" }, @@ -315,7 +315,7 @@ "__uuid__": "f2c494b7-b6df-488f-b194-358235b0f180" }, "down_SpriteFrames": { - "__uuid__": "31479c6e-5626-4598-97ab-f94303e9efe7" + "__uuid__": "3d019ed8-3019-436d-add0-ceeb02a5baaf" }, "_id": "" }, @@ -486,9 +486,7 @@ "_fillStart": 0, "_fillRange": 0, "_isTrimmedMode": true, - "_atlas": { - "__uuid__": "31479c6e-5626-4598-97ab-f94303e9efe7" - }, + "_atlas": null, "_id": "" }, { @@ -2044,7 +2042,7 @@ "_srcBlendFactor": 770, "_dstBlendFactor": 771, "_spriteFrame": { - "__uuid__": "66c27f02-719e-422c-9277-42063833c0af" + "__uuid__": "4c2ac211-077a-4783-92b7-42964571ebfe" }, "_type": 0, "_sizeMode": 1, @@ -2058,7 +2056,7 @@ "_fillRange": 0, "_isTrimmedMode": true, "_atlas": { - "__uuid__": "cc01997d-495e-480d-871e-be405a6c38b5" + "__uuid__": "f2c494b7-b6df-488f-b194-358235b0f180" }, "_id": "" }, @@ -2089,7 +2087,7 @@ "_srcBlendFactor": 770, "_dstBlendFactor": 771, "_spriteFrame": { - "__uuid__": "9b80c949-4fcd-4e45-afa9-ad91683ef7b7" + "__uuid__": "1f53a670-99ab-4671-932f-3227940876cc" }, "_type": 3, "_sizeMode": 0, @@ -2103,7 +2101,7 @@ "_fillRange": 1, "_isTrimmedMode": true, "_atlas": { - "__uuid__": "cc01997d-495e-480d-871e-be405a6c38b5" + "__uuid__": "f2c494b7-b6df-488f-b194-358235b0f180" }, "_id": "" }, @@ -2266,7 +2264,7 @@ "_srcBlendFactor": 770, "_dstBlendFactor": 771, "_spriteFrame": { - "__uuid__": "66c27f02-719e-422c-9277-42063833c0af" + "__uuid__": "4c2ac211-077a-4783-92b7-42964571ebfe" }, "_type": 0, "_sizeMode": 1, @@ -2280,7 +2278,7 @@ "_fillRange": 0, "_isTrimmedMode": true, "_atlas": { - "__uuid__": "cc01997d-495e-480d-871e-be405a6c38b5" + "__uuid__": "f2c494b7-b6df-488f-b194-358235b0f180" }, "_id": "" }, @@ -2311,7 +2309,7 @@ "_srcBlendFactor": 770, "_dstBlendFactor": 771, "_spriteFrame": { - "__uuid__": "9b80c949-4fcd-4e45-afa9-ad91683ef7b7" + "__uuid__": "1f53a670-99ab-4671-932f-3227940876cc" }, "_type": 3, "_sizeMode": 0, @@ -2325,7 +2323,7 @@ "_fillRange": 1, "_isTrimmedMode": true, "_atlas": { - "__uuid__": "cc01997d-495e-480d-871e-be405a6c38b5" + "__uuid__": "f2c494b7-b6df-488f-b194-358235b0f180" }, "_id": "" }, @@ -2420,7 +2418,7 @@ "_srcBlendFactor": 770, "_dstBlendFactor": 771, "_spriteFrame": { - "__uuid__": "66c27f02-719e-422c-9277-42063833c0af" + "__uuid__": "4c2ac211-077a-4783-92b7-42964571ebfe" }, "_type": 0, "_sizeMode": 1, @@ -2434,7 +2432,7 @@ "_fillRange": 0, "_isTrimmedMode": true, "_atlas": { - "__uuid__": "cc01997d-495e-480d-871e-be405a6c38b5" + "__uuid__": "f2c494b7-b6df-488f-b194-358235b0f180" }, "_id": "" }, @@ -2529,7 +2527,7 @@ "_srcBlendFactor": 770, "_dstBlendFactor": 771, "_spriteFrame": { - "__uuid__": "66c27f02-719e-422c-9277-42063833c0af" + "__uuid__": "4c2ac211-077a-4783-92b7-42964571ebfe" }, "_type": 0, "_sizeMode": 1, @@ -2543,7 +2541,7 @@ "_fillRange": 0, "_isTrimmedMode": true, "_atlas": { - "__uuid__": "cc01997d-495e-480d-871e-be405a6c38b5" + "__uuid__": "f2c494b7-b6df-488f-b194-358235b0f180" }, "_id": "" }, @@ -2790,7 +2788,7 @@ "_srcBlendFactor": 770, "_dstBlendFactor": 771, "_spriteFrame": { - "__uuid__": "66c27f02-719e-422c-9277-42063833c0af" + "__uuid__": "4c2ac211-077a-4783-92b7-42964571ebfe" }, "_type": 0, "_sizeMode": 1, @@ -2804,7 +2802,7 @@ "_fillRange": 0, "_isTrimmedMode": true, "_atlas": { - "__uuid__": "cc01997d-495e-480d-871e-be405a6c38b5" + "__uuid__": "f2c494b7-b6df-488f-b194-358235b0f180" }, "_id": "" }, @@ -2835,7 +2833,7 @@ "_srcBlendFactor": 770, "_dstBlendFactor": 771, "_spriteFrame": { - "__uuid__": "36c23619-6422-47be-aa02-f78b7618bb3c" + "__uuid__": "b48abaaa-d7d1-45b6-8a24-8f259163122a" }, "_type": 3, "_sizeMode": 0, @@ -2849,7 +2847,7 @@ "_fillRange": 1, "_isTrimmedMode": true, "_atlas": { - "__uuid__": "cc01997d-495e-480d-871e-be405a6c38b5" + "__uuid__": "f2c494b7-b6df-488f-b194-358235b0f180" }, "_id": "" }, @@ -3012,7 +3010,7 @@ "_srcBlendFactor": 770, "_dstBlendFactor": 771, "_spriteFrame": { - "__uuid__": "66c27f02-719e-422c-9277-42063833c0af" + "__uuid__": "4c2ac211-077a-4783-92b7-42964571ebfe" }, "_type": 0, "_sizeMode": 1, @@ -3026,7 +3024,7 @@ "_fillRange": 0, "_isTrimmedMode": true, "_atlas": { - "__uuid__": "cc01997d-495e-480d-871e-be405a6c38b5" + "__uuid__": "f2c494b7-b6df-488f-b194-358235b0f180" }, "_id": "" }, @@ -3057,7 +3055,7 @@ "_srcBlendFactor": 770, "_dstBlendFactor": 771, "_spriteFrame": { - "__uuid__": "36c23619-6422-47be-aa02-f78b7618bb3c" + "__uuid__": "b48abaaa-d7d1-45b6-8a24-8f259163122a" }, "_type": 3, "_sizeMode": 0, @@ -3071,7 +3069,7 @@ "_fillRange": 1, "_isTrimmedMode": true, "_atlas": { - "__uuid__": "cc01997d-495e-480d-871e-be405a6c38b5" + "__uuid__": "f2c494b7-b6df-488f-b194-358235b0f180" }, "_id": "" }, @@ -3166,7 +3164,7 @@ "_srcBlendFactor": 770, "_dstBlendFactor": 771, "_spriteFrame": { - "__uuid__": "66c27f02-719e-422c-9277-42063833c0af" + "__uuid__": "4c2ac211-077a-4783-92b7-42964571ebfe" }, "_type": 0, "_sizeMode": 1, @@ -3180,7 +3178,7 @@ "_fillRange": 0, "_isTrimmedMode": true, "_atlas": { - "__uuid__": "cc01997d-495e-480d-871e-be405a6c38b5" + "__uuid__": "f2c494b7-b6df-488f-b194-358235b0f180" }, "_id": "" }, @@ -3275,7 +3273,7 @@ "_srcBlendFactor": 770, "_dstBlendFactor": 771, "_spriteFrame": { - "__uuid__": "66c27f02-719e-422c-9277-42063833c0af" + "__uuid__": "4c2ac211-077a-4783-92b7-42964571ebfe" }, "_type": 0, "_sizeMode": 1, @@ -3289,7 +3287,7 @@ "_fillRange": 0, "_isTrimmedMode": true, "_atlas": { - "__uuid__": "cc01997d-495e-480d-871e-be405a6c38b5" + "__uuid__": "f2c494b7-b6df-488f-b194-358235b0f180" }, "_id": "" }, @@ -3536,7 +3534,7 @@ "_srcBlendFactor": 770, "_dstBlendFactor": 771, "_spriteFrame": { - "__uuid__": "66c27f02-719e-422c-9277-42063833c0af" + "__uuid__": "4c2ac211-077a-4783-92b7-42964571ebfe" }, "_type": 0, "_sizeMode": 1, @@ -3550,7 +3548,7 @@ "_fillRange": 0, "_isTrimmedMode": true, "_atlas": { - "__uuid__": "cc01997d-495e-480d-871e-be405a6c38b5" + "__uuid__": "f2c494b7-b6df-488f-b194-358235b0f180" }, "_id": "" }, @@ -3581,7 +3579,7 @@ "_srcBlendFactor": 770, "_dstBlendFactor": 771, "_spriteFrame": { - "__uuid__": "2c8edc9c-c130-4c61-98f1-0a9b2edf3270" + "__uuid__": "e122aac4-873c-4996-bbc8-7fdbd2cd0e60" }, "_type": 3, "_sizeMode": 0, @@ -3595,7 +3593,7 @@ "_fillRange": 1, "_isTrimmedMode": true, "_atlas": { - "__uuid__": "cc01997d-495e-480d-871e-be405a6c38b5" + "__uuid__": "f2c494b7-b6df-488f-b194-358235b0f180" }, "_id": "" }, @@ -3758,7 +3756,7 @@ "_srcBlendFactor": 770, "_dstBlendFactor": 771, "_spriteFrame": { - "__uuid__": "66c27f02-719e-422c-9277-42063833c0af" + "__uuid__": "4c2ac211-077a-4783-92b7-42964571ebfe" }, "_type": 0, "_sizeMode": 1, @@ -3772,7 +3770,7 @@ "_fillRange": 0, "_isTrimmedMode": true, "_atlas": { - "__uuid__": "cc01997d-495e-480d-871e-be405a6c38b5" + "__uuid__": "f2c494b7-b6df-488f-b194-358235b0f180" }, "_id": "" }, @@ -3803,7 +3801,7 @@ "_srcBlendFactor": 770, "_dstBlendFactor": 771, "_spriteFrame": { - "__uuid__": "2c8edc9c-c130-4c61-98f1-0a9b2edf3270" + "__uuid__": "e122aac4-873c-4996-bbc8-7fdbd2cd0e60" }, "_type": 3, "_sizeMode": 0, @@ -3817,7 +3815,7 @@ "_fillRange": 1, "_isTrimmedMode": true, "_atlas": { - "__uuid__": "cc01997d-495e-480d-871e-be405a6c38b5" + "__uuid__": "f2c494b7-b6df-488f-b194-358235b0f180" }, "_id": "" }, @@ -3912,7 +3910,7 @@ "_srcBlendFactor": 770, "_dstBlendFactor": 771, "_spriteFrame": { - "__uuid__": "66c27f02-719e-422c-9277-42063833c0af" + "__uuid__": "4c2ac211-077a-4783-92b7-42964571ebfe" }, "_type": 0, "_sizeMode": 1, @@ -3926,7 +3924,7 @@ "_fillRange": 0, "_isTrimmedMode": true, "_atlas": { - "__uuid__": "cc01997d-495e-480d-871e-be405a6c38b5" + "__uuid__": "f2c494b7-b6df-488f-b194-358235b0f180" }, "_id": "" }, @@ -4021,7 +4019,7 @@ "_srcBlendFactor": 770, "_dstBlendFactor": 771, "_spriteFrame": { - "__uuid__": "66c27f02-719e-422c-9277-42063833c0af" + "__uuid__": "4c2ac211-077a-4783-92b7-42964571ebfe" }, "_type": 0, "_sizeMode": 1, @@ -4035,7 +4033,7 @@ "_fillRange": 0, "_isTrimmedMode": true, "_atlas": { - "__uuid__": "cc01997d-495e-480d-871e-be405a6c38b5" + "__uuid__": "f2c494b7-b6df-488f-b194-358235b0f180" }, "_id": "" }, diff --git a/assets/resources/prefab/wall/up.prefab b/assets/resources/prefab/wall/up.prefab index 428c968..03d8208 100644 --- a/assets/resources/prefab/wall/up.prefab +++ b/assets/resources/prefab/wall/up.prefab @@ -281,7 +281,7 @@ "_srcBlendFactor": 770, "_dstBlendFactor": 771, "_spriteFrame": { - "__uuid__": "fc8fd6fa-3cc2-4a69-a2f7-2c521de510b1" + "__uuid__": "6db2aafd-c221-4be9-a20b-5bb361fe22ef" }, "_type": 0, "_sizeMode": 1, @@ -295,7 +295,7 @@ "_fillRange": 0, "_isTrimmedMode": true, "_atlas": { - "__uuid__": "cc01997d-495e-480d-871e-be405a6c38b5" + "__uuid__": "f2c494b7-b6df-488f-b194-358235b0f180" }, "_id": "" }, @@ -315,7 +315,7 @@ "__uuid__": "f2c494b7-b6df-488f-b194-358235b0f180" }, "down_SpriteFrames": { - "__uuid__": "31479c6e-5626-4598-97ab-f94303e9efe7" + "__uuid__": "3d019ed8-3019-436d-add0-ceeb02a5baaf" }, "_id": "" }, @@ -2042,7 +2042,7 @@ "_srcBlendFactor": 770, "_dstBlendFactor": 771, "_spriteFrame": { - "__uuid__": "66c27f02-719e-422c-9277-42063833c0af" + "__uuid__": "4c2ac211-077a-4783-92b7-42964571ebfe" }, "_type": 0, "_sizeMode": 1, @@ -2056,7 +2056,7 @@ "_fillRange": 0, "_isTrimmedMode": true, "_atlas": { - "__uuid__": "cc01997d-495e-480d-871e-be405a6c38b5" + "__uuid__": "f2c494b7-b6df-488f-b194-358235b0f180" }, "_id": "" }, @@ -2087,7 +2087,7 @@ "_srcBlendFactor": 770, "_dstBlendFactor": 771, "_spriteFrame": { - "__uuid__": "9b80c949-4fcd-4e45-afa9-ad91683ef7b7" + "__uuid__": "1f53a670-99ab-4671-932f-3227940876cc" }, "_type": 3, "_sizeMode": 0, @@ -2101,7 +2101,7 @@ "_fillRange": 1, "_isTrimmedMode": true, "_atlas": { - "__uuid__": "cc01997d-495e-480d-871e-be405a6c38b5" + "__uuid__": "f2c494b7-b6df-488f-b194-358235b0f180" }, "_id": "" }, @@ -2264,7 +2264,7 @@ "_srcBlendFactor": 770, "_dstBlendFactor": 771, "_spriteFrame": { - "__uuid__": "66c27f02-719e-422c-9277-42063833c0af" + "__uuid__": "4c2ac211-077a-4783-92b7-42964571ebfe" }, "_type": 0, "_sizeMode": 1, @@ -2278,7 +2278,7 @@ "_fillRange": 0, "_isTrimmedMode": true, "_atlas": { - "__uuid__": "cc01997d-495e-480d-871e-be405a6c38b5" + "__uuid__": "f2c494b7-b6df-488f-b194-358235b0f180" }, "_id": "" }, @@ -2309,7 +2309,7 @@ "_srcBlendFactor": 770, "_dstBlendFactor": 771, "_spriteFrame": { - "__uuid__": "9b80c949-4fcd-4e45-afa9-ad91683ef7b7" + "__uuid__": "1f53a670-99ab-4671-932f-3227940876cc" }, "_type": 3, "_sizeMode": 0, @@ -2323,7 +2323,7 @@ "_fillRange": 1, "_isTrimmedMode": true, "_atlas": { - "__uuid__": "cc01997d-495e-480d-871e-be405a6c38b5" + "__uuid__": "f2c494b7-b6df-488f-b194-358235b0f180" }, "_id": "" }, @@ -2418,7 +2418,7 @@ "_srcBlendFactor": 770, "_dstBlendFactor": 771, "_spriteFrame": { - "__uuid__": "66c27f02-719e-422c-9277-42063833c0af" + "__uuid__": "4c2ac211-077a-4783-92b7-42964571ebfe" }, "_type": 0, "_sizeMode": 1, @@ -2432,7 +2432,7 @@ "_fillRange": 0, "_isTrimmedMode": true, "_atlas": { - "__uuid__": "cc01997d-495e-480d-871e-be405a6c38b5" + "__uuid__": "f2c494b7-b6df-488f-b194-358235b0f180" }, "_id": "" }, @@ -2527,7 +2527,7 @@ "_srcBlendFactor": 770, "_dstBlendFactor": 771, "_spriteFrame": { - "__uuid__": "66c27f02-719e-422c-9277-42063833c0af" + "__uuid__": "4c2ac211-077a-4783-92b7-42964571ebfe" }, "_type": 0, "_sizeMode": 1, @@ -2541,7 +2541,7 @@ "_fillRange": 0, "_isTrimmedMode": true, "_atlas": { - "__uuid__": "cc01997d-495e-480d-871e-be405a6c38b5" + "__uuid__": "f2c494b7-b6df-488f-b194-358235b0f180" }, "_id": "" }, @@ -2788,7 +2788,7 @@ "_srcBlendFactor": 770, "_dstBlendFactor": 771, "_spriteFrame": { - "__uuid__": "66c27f02-719e-422c-9277-42063833c0af" + "__uuid__": "4c2ac211-077a-4783-92b7-42964571ebfe" }, "_type": 0, "_sizeMode": 1, @@ -2802,7 +2802,7 @@ "_fillRange": 0, "_isTrimmedMode": true, "_atlas": { - "__uuid__": "cc01997d-495e-480d-871e-be405a6c38b5" + "__uuid__": "f2c494b7-b6df-488f-b194-358235b0f180" }, "_id": "" }, @@ -2833,7 +2833,7 @@ "_srcBlendFactor": 770, "_dstBlendFactor": 771, "_spriteFrame": { - "__uuid__": "36c23619-6422-47be-aa02-f78b7618bb3c" + "__uuid__": "b48abaaa-d7d1-45b6-8a24-8f259163122a" }, "_type": 3, "_sizeMode": 0, @@ -2847,7 +2847,7 @@ "_fillRange": 1, "_isTrimmedMode": true, "_atlas": { - "__uuid__": "cc01997d-495e-480d-871e-be405a6c38b5" + "__uuid__": "f2c494b7-b6df-488f-b194-358235b0f180" }, "_id": "" }, @@ -3010,7 +3010,7 @@ "_srcBlendFactor": 770, "_dstBlendFactor": 771, "_spriteFrame": { - "__uuid__": "66c27f02-719e-422c-9277-42063833c0af" + "__uuid__": "4c2ac211-077a-4783-92b7-42964571ebfe" }, "_type": 0, "_sizeMode": 1, @@ -3024,7 +3024,7 @@ "_fillRange": 0, "_isTrimmedMode": true, "_atlas": { - "__uuid__": "cc01997d-495e-480d-871e-be405a6c38b5" + "__uuid__": "f2c494b7-b6df-488f-b194-358235b0f180" }, "_id": "" }, @@ -3055,7 +3055,7 @@ "_srcBlendFactor": 770, "_dstBlendFactor": 771, "_spriteFrame": { - "__uuid__": "36c23619-6422-47be-aa02-f78b7618bb3c" + "__uuid__": "b48abaaa-d7d1-45b6-8a24-8f259163122a" }, "_type": 3, "_sizeMode": 0, @@ -3069,7 +3069,7 @@ "_fillRange": 1, "_isTrimmedMode": true, "_atlas": { - "__uuid__": "cc01997d-495e-480d-871e-be405a6c38b5" + "__uuid__": "f2c494b7-b6df-488f-b194-358235b0f180" }, "_id": "" }, @@ -3164,7 +3164,7 @@ "_srcBlendFactor": 770, "_dstBlendFactor": 771, "_spriteFrame": { - "__uuid__": "66c27f02-719e-422c-9277-42063833c0af" + "__uuid__": "4c2ac211-077a-4783-92b7-42964571ebfe" }, "_type": 0, "_sizeMode": 1, @@ -3178,7 +3178,7 @@ "_fillRange": 0, "_isTrimmedMode": true, "_atlas": { - "__uuid__": "cc01997d-495e-480d-871e-be405a6c38b5" + "__uuid__": "f2c494b7-b6df-488f-b194-358235b0f180" }, "_id": "" }, @@ -3273,7 +3273,7 @@ "_srcBlendFactor": 770, "_dstBlendFactor": 771, "_spriteFrame": { - "__uuid__": "66c27f02-719e-422c-9277-42063833c0af" + "__uuid__": "4c2ac211-077a-4783-92b7-42964571ebfe" }, "_type": 0, "_sizeMode": 1, @@ -3287,7 +3287,7 @@ "_fillRange": 0, "_isTrimmedMode": true, "_atlas": { - "__uuid__": "cc01997d-495e-480d-871e-be405a6c38b5" + "__uuid__": "f2c494b7-b6df-488f-b194-358235b0f180" }, "_id": "" }, @@ -3534,7 +3534,7 @@ "_srcBlendFactor": 770, "_dstBlendFactor": 771, "_spriteFrame": { - "__uuid__": "66c27f02-719e-422c-9277-42063833c0af" + "__uuid__": "4c2ac211-077a-4783-92b7-42964571ebfe" }, "_type": 0, "_sizeMode": 1, @@ -3548,7 +3548,7 @@ "_fillRange": 0, "_isTrimmedMode": true, "_atlas": { - "__uuid__": "cc01997d-495e-480d-871e-be405a6c38b5" + "__uuid__": "f2c494b7-b6df-488f-b194-358235b0f180" }, "_id": "" }, @@ -3579,7 +3579,7 @@ "_srcBlendFactor": 770, "_dstBlendFactor": 771, "_spriteFrame": { - "__uuid__": "2c8edc9c-c130-4c61-98f1-0a9b2edf3270" + "__uuid__": "e122aac4-873c-4996-bbc8-7fdbd2cd0e60" }, "_type": 3, "_sizeMode": 0, @@ -3593,7 +3593,7 @@ "_fillRange": 1, "_isTrimmedMode": true, "_atlas": { - "__uuid__": "cc01997d-495e-480d-871e-be405a6c38b5" + "__uuid__": "f2c494b7-b6df-488f-b194-358235b0f180" }, "_id": "" }, @@ -3756,7 +3756,7 @@ "_srcBlendFactor": 770, "_dstBlendFactor": 771, "_spriteFrame": { - "__uuid__": "66c27f02-719e-422c-9277-42063833c0af" + "__uuid__": "4c2ac211-077a-4783-92b7-42964571ebfe" }, "_type": 0, "_sizeMode": 1, @@ -3770,7 +3770,7 @@ "_fillRange": 0, "_isTrimmedMode": true, "_atlas": { - "__uuid__": "cc01997d-495e-480d-871e-be405a6c38b5" + "__uuid__": "f2c494b7-b6df-488f-b194-358235b0f180" }, "_id": "" }, @@ -3801,7 +3801,7 @@ "_srcBlendFactor": 770, "_dstBlendFactor": 771, "_spriteFrame": { - "__uuid__": "2c8edc9c-c130-4c61-98f1-0a9b2edf3270" + "__uuid__": "e122aac4-873c-4996-bbc8-7fdbd2cd0e60" }, "_type": 3, "_sizeMode": 0, @@ -3815,7 +3815,7 @@ "_fillRange": 1, "_isTrimmedMode": true, "_atlas": { - "__uuid__": "cc01997d-495e-480d-871e-be405a6c38b5" + "__uuid__": "f2c494b7-b6df-488f-b194-358235b0f180" }, "_id": "" }, @@ -3910,7 +3910,7 @@ "_srcBlendFactor": 770, "_dstBlendFactor": 771, "_spriteFrame": { - "__uuid__": "66c27f02-719e-422c-9277-42063833c0af" + "__uuid__": "4c2ac211-077a-4783-92b7-42964571ebfe" }, "_type": 0, "_sizeMode": 1, @@ -3924,7 +3924,7 @@ "_fillRange": 0, "_isTrimmedMode": true, "_atlas": { - "__uuid__": "cc01997d-495e-480d-871e-be405a6c38b5" + "__uuid__": "f2c494b7-b6df-488f-b194-358235b0f180" }, "_id": "" }, @@ -4019,7 +4019,7 @@ "_srcBlendFactor": 770, "_dstBlendFactor": 771, "_spriteFrame": { - "__uuid__": "66c27f02-719e-422c-9277-42063833c0af" + "__uuid__": "4c2ac211-077a-4783-92b7-42964571ebfe" }, "_type": 0, "_sizeMode": 1, @@ -4033,7 +4033,7 @@ "_fillRange": 0, "_isTrimmedMode": true, "_atlas": { - "__uuid__": "cc01997d-495e-480d-871e-be405a6c38b5" + "__uuid__": "f2c494b7-b6df-488f-b194-358235b0f180" }, "_id": "" }, diff --git a/assets/resources/prefab/wall/upLeft.prefab b/assets/resources/prefab/wall/upLeft.prefab index f4120aa..5cca3fa 100644 --- a/assets/resources/prefab/wall/upLeft.prefab +++ b/assets/resources/prefab/wall/upLeft.prefab @@ -159,7 +159,7 @@ "_srcBlendFactor": 770, "_dstBlendFactor": 771, "_spriteFrame": { - "__uuid__": "865e12b4-8506-4026-ab52-9c8421100cc4" + "__uuid__": "232d4cf2-be5a-4a98-8d4d-10edb8325e08" }, "_type": 0, "_sizeMode": 1, @@ -173,7 +173,7 @@ "_fillRange": 0, "_isTrimmedMode": true, "_atlas": { - "__uuid__": "cc01997d-495e-480d-871e-be405a6c38b5" + "__uuid__": "f2c494b7-b6df-488f-b194-358235b0f180" }, "_id": "" }, diff --git a/assets/resources/prefab/wall/upRight.prefab b/assets/resources/prefab/wall/upRight.prefab index a906bb2..6dba6af 100644 --- a/assets/resources/prefab/wall/upRight.prefab +++ b/assets/resources/prefab/wall/upRight.prefab @@ -159,7 +159,7 @@ "_srcBlendFactor": 770, "_dstBlendFactor": 771, "_spriteFrame": { - "__uuid__": "02a22e2f-85e0-4ce1-a955-6ea4bf514319" + "__uuid__": "b679c771-a901-4df3-a592-4ebd4cad002e" }, "_type": 0, "_sizeMode": 1, @@ -173,7 +173,7 @@ "_fillRange": 0, "_isTrimmedMode": true, "_atlas": { - "__uuid__": "cc01997d-495e-480d-871e-be405a6c38b5" + "__uuid__": "f2c494b7-b6df-488f-b194-358235b0f180" }, "_id": "" }, diff --git a/assets/shop/prefab/shop.prefab b/assets/shop/prefab/shop.prefab index f05775f..8f08ff7 100644 --- a/assets/shop/prefab/shop.prefab +++ b/assets/shop/prefab/shop.prefab @@ -46,16 +46,19 @@ }, { "__id__": 212 + }, + { + "__id__": 216 } ], "_active": true, "_components": [ { - "__id__": 216 + "__id__": 219 } ], "_prefab": { - "__id__": 217 + "__id__": 220 }, "_opacity": 255, "_color": { @@ -255,7 +258,7 @@ "_contentSize": { "__type__": "cc.Size", "width": 1080, - "height": 2340 + "height": 1920 }, "_anchorPoint": { "__type__": "cc.Vec2", @@ -338,8 +341,8 @@ "_alignFlags": 45, "_left": 0, "_right": 0, - "_top": -210, - "_bottom": -210, + "_top": 0, + "_bottom": 0, "_verticalCenter": 0, "_horizontalCenter": 0, "_isAbsLeft": true, @@ -7745,6 +7748,108 @@ "fileId": "c5IbgSqWhDerwgA0hdz30t", "sync": false }, + { + "__type__": "cc.Node", + "_name": "Top", + "_objFlags": 0, + "_parent": { + "__id__": 1 + }, + "_children": [], + "_active": true, + "_components": [ + { + "__id__": 217 + } + ], + "_prefab": { + "__id__": 218 + }, + "_opacity": 255, + "_color": { + "__type__": "cc.Color", + "r": 255, + "g": 255, + "b": 255, + "a": 255 + }, + "_contentSize": { + "__type__": "cc.Size", + "width": 0, + "height": 0 + }, + "_anchorPoint": { + "__type__": "cc.Vec2", + "x": 0.5, + "y": 0.5 + }, + "_trs": { + "__type__": "TypedArray", + "ctor": "Float64Array", + "array": [ + 0, + 0, + 0, + 0, + 0, + 0, + 1, + 1, + 1, + 1 + ] + }, + "_eulerAngles": { + "__type__": "cc.Vec3", + "x": 0, + "y": 0, + "z": 0 + }, + "_skewX": 0, + "_skewY": 0, + "_is3DNode": false, + "_groupIndex": 0, + "groupIndex": 0, + "_id": "" + }, + { + "__type__": "cc.Widget", + "_name": "", + "_objFlags": 0, + "node": { + "__id__": 216 + }, + "_enabled": true, + "alignMode": 1, + "_target": null, + "_alignFlags": 0, + "_left": 0, + "_right": 0, + "_top": 0, + "_bottom": 0, + "_verticalCenter": 0, + "_horizontalCenter": 0, + "_isAbsLeft": true, + "_isAbsRight": true, + "_isAbsTop": true, + "_isAbsBottom": true, + "_isAbsHorizontalCenter": true, + "_isAbsVerticalCenter": true, + "_originalWidth": 0, + "_originalHeight": 0, + "_id": "" + }, + { + "__type__": "cc.PrefabInfo", + "root": { + "__id__": 1 + }, + "asset": { + "__id__": 0 + }, + "fileId": "e5881p4DhA2o2G5SieRWXh", + "sync": false + }, { "__type__": "48bfeZuYFZE2qmgxbW2IigB", "_name": "", diff --git a/library/imports/00/006ec77b-2f24-4f23-8685-898cc6802c7f.json b/library/imports/00/006ec77b-2f24-4f23-8685-898cc6802c7f.json new file mode 100644 index 0000000..4ff6e46 --- /dev/null +++ b/library/imports/00/006ec77b-2f24-4f23-8685-898cc6802c7f.json @@ -0,0 +1,28 @@ +{ + "__type__": "cc.SpriteFrame", + "content": { + "name": "9color4", + "texture": "418b4767-01bf-4ac2-823b-9880f2a79215", + "atlas": "cc01997d-495e-480d-871e-be405a6c38b5", + "rect": [ + 1276, + 488, + 60, + 146 + ], + "offset": [ + 0, + 0 + ], + "originalSize": [ + 60, + 146 + ], + "capInsets": [ + 0, + 0, + 0, + 0 + ] + } +} \ No newline at end of file diff --git a/library/imports/01/01a25c6d-3527-4d0b-8ac0-f3e54bd2863e.json b/library/imports/01/01a25c6d-3527-4d0b-8ac0-f3e54bd2863e.json new file mode 100644 index 0000000..3ff1717 --- /dev/null +++ b/library/imports/01/01a25c6d-3527-4d0b-8ac0-f3e54bd2863e.json @@ -0,0 +1,28 @@ +{ + "__type__": "cc.SpriteFrame", + "content": { + "name": "5color2", + "texture": "418b4767-01bf-4ac2-823b-9880f2a79215", + "atlas": "cc01997d-495e-480d-871e-be405a6c38b5", + "rect": [ + 387, + 671, + 258, + 69 + ], + "offset": [ + 0, + 0 + ], + "originalSize": [ + 258, + 69 + ], + "capInsets": [ + 0, + 0, + 0, + 0 + ] + } +} \ No newline at end of file diff --git a/library/imports/10/10a7cd8b-3f3d-4561-a678-e919de57f01a.json b/library/imports/01/01a57769-e8df-4d79-91f9-900b3485adce.json similarity index 64% rename from library/imports/10/10a7cd8b-3f3d-4561-a678-e919de57f01a.json rename to library/imports/01/01a57769-e8df-4d79-91f9-900b3485adce.json index 3e16415..69e5bad 100644 --- a/library/imports/10/10a7cd8b-3f3d-4561-a678-e919de57f01a.json +++ b/library/imports/01/01a57769-e8df-4d79-91f9-900b3485adce.json @@ -2,11 +2,11 @@ "__type__": "cc.SpriteFrame", "content": { "name": "9down5", - "texture": "ed2c3a21-0522-445d-9904-76843208705f", - "atlas": "d7e227ab-cc06-48f5-a2ac-092b19ec7f6f", + "texture": "c660c59d-e175-4194-aaf3-33d1d03b783f", + "atlas": "3d019ed8-3019-436d-add0-ceeb02a5baaf", "rect": [ - 1035, - 1, + 366, + 518, 45, 245 ], @@ -18,6 +18,7 @@ 45, 245 ], + "rotated": 1, "capInsets": [ 0, 0, diff --git a/library/imports/02/02a22e2f-85e0-4ce1-a955-6ea4bf514319.json b/library/imports/02/02a22e2f-85e0-4ce1-a955-6ea4bf514319.json new file mode 100644 index 0000000..b050245 --- /dev/null +++ b/library/imports/02/02a22e2f-85e0-4ce1-a955-6ea4bf514319.json @@ -0,0 +1,29 @@ +{ + "__type__": "cc.SpriteFrame", + "content": { + "name": "wall4", + "texture": "418b4767-01bf-4ac2-823b-9880f2a79215", + "atlas": "cc01997d-495e-480d-871e-be405a6c38b5", + "rect": [ + 1129, + 488, + 137, + 145 + ], + "offset": [ + 0, + 0 + ], + "originalSize": [ + 137, + 145 + ], + "rotated": 1, + "capInsets": [ + 0, + 0, + 0, + 0 + ] + } +} \ No newline at end of file diff --git a/library/imports/87/8709b13e-b16a-4bee-8b77-623bdf487a33.json b/library/imports/05/05be34a9-d8ee-43d3-ae9c-ea9f9fa663ab.json similarity index 64% rename from library/imports/87/8709b13e-b16a-4bee-8b77-623bdf487a33.json rename to library/imports/05/05be34a9-d8ee-43d3-ae9c-ea9f9fa663ab.json index 95f4d25..2956e52 100644 --- a/library/imports/87/8709b13e-b16a-4bee-8b77-623bdf487a33.json +++ b/library/imports/05/05be34a9-d8ee-43d3-ae9c-ea9f9fa663ab.json @@ -2,11 +2,11 @@ "__type__": "cc.SpriteFrame", "content": { "name": "8down1", - "texture": "ed2c3a21-0522-445d-9904-76843208705f", - "atlas": "d7e227ab-cc06-48f5-a2ac-092b19ec7f6f", + "texture": "c660c59d-e175-4194-aaf3-33d1d03b783f", + "atlas": "3d019ed8-3019-436d-add0-ceeb02a5baaf", "rect": [ - 753, - 366, + 1, + 424, 122, 45 ], @@ -18,7 +18,6 @@ 122, 45 ], - "rotated": 1, "capInsets": [ 0, 0, diff --git a/library/imports/61/61d0cd1b-24d9-404a-9c06-879ac780b2fe.json b/library/imports/06/0681c1ff-5cf4-4fe7-bc91-5e38c70ce46b.json similarity index 63% rename from library/imports/61/61d0cd1b-24d9-404a-9c06-879ac780b2fe.json rename to library/imports/06/0681c1ff-5cf4-4fe7-bc91-5e38c70ce46b.json index f410cd5..c8541ce 100644 --- a/library/imports/61/61d0cd1b-24d9-404a-9c06-879ac780b2fe.json +++ b/library/imports/06/0681c1ff-5cf4-4fe7-bc91-5e38c70ce46b.json @@ -2,11 +2,11 @@ "__type__": "cc.SpriteFrame", "content": { "name": "3down2", - "texture": "ed2c3a21-0522-445d-9904-76843208705f", - "atlas": "d7e227ab-cc06-48f5-a2ac-092b19ec7f6f", + "texture": "c660c59d-e175-4194-aaf3-33d1d03b783f", + "atlas": "3d019ed8-3019-436d-add0-ceeb02a5baaf", "rect": [ - 1082, - 246, + 125, + 142, 243, 45 ], @@ -18,7 +18,6 @@ 243, 45 ], - "rotated": 1, "capInsets": [ 0, 0, diff --git a/library/imports/07/07594a6b-77fb-448b-89f1-653cdd63f516.json b/library/imports/07/07594a6b-77fb-448b-89f1-653cdd63f516.json new file mode 100644 index 0000000..0cdb093 --- /dev/null +++ b/library/imports/07/07594a6b-77fb-448b-89f1-653cdd63f516.json @@ -0,0 +1,29 @@ +{ + "__type__": "cc.SpriteFrame", + "content": { + "name": "10down6", + "texture": "c660c59d-e175-4194-aaf3-33d1d03b783f", + "atlas": "3d019ed8-3019-436d-add0-ceeb02a5baaf", + "rect": [ + 248, + 612, + 45, + 365 + ], + "offset": [ + 0, + 0 + ], + "originalSize": [ + 45, + 365 + ], + "rotated": 1, + "capInsets": [ + 0, + 0, + 0, + 0 + ] + } +} \ No newline at end of file diff --git a/library/imports/50/50604593-fce5-4e85-931a-15cbb6d48233.json b/library/imports/08/085f8402-f610-4636-862f-22fd6bc2e7ca.json similarity index 64% rename from library/imports/50/50604593-fce5-4e85-931a-15cbb6d48233.json rename to library/imports/08/085f8402-f610-4636-862f-22fd6bc2e7ca.json index 0a2c490..233d4e7 100644 --- a/library/imports/50/50604593-fce5-4e85-931a-15cbb6d48233.json +++ b/library/imports/08/085f8402-f610-4636-862f-22fd6bc2e7ca.json @@ -2,11 +2,11 @@ "__type__": "cc.SpriteFrame", "content": { "name": "2down1", - "texture": "ed2c3a21-0522-445d-9904-76843208705f", - "atlas": "d7e227ab-cc06-48f5-a2ac-092b19ec7f6f", + "texture": "c660c59d-e175-4194-aaf3-33d1d03b783f", + "atlas": "3d019ed8-3019-436d-add0-ceeb02a5baaf", "rect": [ - 471, - 366, + 861, + 1, 122, 45 ], @@ -18,7 +18,6 @@ 122, 45 ], - "rotated": 1, "capInsets": [ 0, 0, diff --git a/library/imports/58/58d2857e-4c27-4eaa-a162-92d81bc6fa18.json b/library/imports/0a/0a02963d-dd42-42ad-be69-c78af29eec3b.json similarity index 66% rename from library/imports/58/58d2857e-4c27-4eaa-a162-92d81bc6fa18.json rename to library/imports/0a/0a02963d-dd42-42ad-be69-c78af29eec3b.json index 99c954d..4ebfd9d 100644 --- a/library/imports/58/58d2857e-4c27-4eaa-a162-92d81bc6fa18.json +++ b/library/imports/0a/0a02963d-dd42-42ad-be69-c78af29eec3b.json @@ -2,11 +2,11 @@ "__type__": "cc.SpriteFrame", "content": { "name": "6down3", - "texture": "ed2c3a21-0522-445d-9904-76843208705f", - "atlas": "d7e227ab-cc06-48f5-a2ac-092b19ec7f6f", + "texture": "c660c59d-e175-4194-aaf3-33d1d03b783f", + "atlas": "3d019ed8-3019-436d-add0-ceeb02a5baaf", "rect": [ - 659, 1, + 377, 363, 45 ], @@ -18,7 +18,6 @@ 363, 45 ], - "rotated": 1, "capInsets": [ 0, 0, diff --git a/library/imports/15/15feda8b-1d2e-4894-9e42-0888d4bd127b.json b/library/imports/0c/0c09885e-4d8d-43c8-9f7d-e97bccb67e77.json similarity index 58% rename from library/imports/15/15feda8b-1d2e-4894-9e42-0888d4bd127b.json rename to library/imports/0c/0c09885e-4d8d-43c8-9f7d-e97bccb67e77.json index c553543..2672739 100644 --- a/library/imports/15/15feda8b-1d2e-4894-9e42-0888d4bd127b.json +++ b/library/imports/0c/0c09885e-4d8d-43c8-9f7d-e97bccb67e77.json @@ -1,12 +1,12 @@ { "__type__": "cc.SpriteFrame", "content": { - "name": "7down3", - "texture": "ed2c3a21-0522-445d-9904-76843208705f", - "atlas": "d7e227ab-cc06-48f5-a2ac-092b19ec7f6f", + "name": "10down3", + "texture": "c660c59d-e175-4194-aaf3-33d1d03b783f", + "atlas": "3d019ed8-3019-436d-add0-ceeb02a5baaf", "rect": [ - 706, - 1, + 370, + 565, 363, 45 ], @@ -18,7 +18,6 @@ 363, 45 ], - "rotated": 1, "capInsets": [ 0, 0, diff --git a/library/imports/0e/0e005ec2-f5a3-41d3-8a99-7ea6d784440d.json b/library/imports/0e/0e005ec2-f5a3-41d3-8a99-7ea6d784440d.json deleted file mode 100644 index f356d1c..0000000 --- a/library/imports/0e/0e005ec2-f5a3-41d3-8a99-7ea6d784440d.json +++ /dev/null @@ -1,660 +0,0 @@ -{ - "__type__": "sp.SkeletonData", - "_name": "skeleton", - "_objFlags": 0, - "_native": "", - "_skeletonJson": { - "skeleton": { - "hash": "8JO/UTer3ajOZPnOtjA7VMfz2+I", - "spine": "3.8.99", - "x": -476.91, - "y": -152.86, - "width": 795, - "height": 728, - "images": "", - "audio": "D:/work/block/做完的/解扣" - }, - "bones": [ - { - "name": "root", - "x": 8.64, - "y": -17.49 - }, - { - "name": "bone3", - "parent": "root", - "x": -11.52, - "y": 52.57 - }, - { - "name": "kou1", - "parent": "bone3", - "x": 17.41, - "y": -32.85 - }, - { - "name": "bone", - "parent": "bone3", - "x": 16.62, - "y": -45.84 - }, - { - "name": "luosi", - "parent": "bone", - "x": 0.3, - "y": 0.82, - "scaleX": 0.6, - "scaleY": 0.6 - }, - { - "name": "bone2", - "parent": "bone3", - "x": 16.9, - "y": -19.1 - }, - { - "name": "luosi2", - "parent": "bone2", - "x": 0.3, - "y": 0.82, - "scaleX": 0.6, - "scaleY": 0.6 - }, - { - "name": "bone4", - "parent": "root", - "x": -40.06, - "y": 52.8 - }, - { - "name": "kou2", - "parent": "bone4", - "x": 17.41, - "y": -32.85 - }, - { - "name": "bone5", - "parent": "bone4", - "x": 16.42, - "y": -45.84 - }, - { - "name": "luosi3", - "parent": "bone5", - "x": 0.3, - "y": 0.82, - "scaleX": 0.6, - "scaleY": 0.6 - }, - { - "name": "bone6", - "parent": "bone4", - "x": 16.5, - "y": -18.9 - }, - { - "name": "luosi4", - "parent": "bone6", - "x": 0.3, - "y": 0.82, - "scaleX": 0.6, - "scaleY": 0.6 - } - ], - "slots": [ - { - "name": "连接块/连接块", - "bone": "root" - }, - { - "name": "连接块/kou1", - "bone": "kou1", - "attachment": "连接块/kou2shu" - }, - { - "name": "连接块/kou2", - "bone": "kou2", - "attachment": "连接块/kou2shu" - }, - { - "name": "连接块/luosi", - "bone": "luosi", - "attachment": "连接块/luosi" - }, - { - "name": "连接块/luosi6", - "bone": "luosi3", - "attachment": "连接块/luosi" - }, - { - "name": "连接块/luosi4", - "bone": "luosi2", - "attachment": "连接块/luosi" - }, - { - "name": "连接块/luosi8", - "bone": "luosi4", - "attachment": "连接块/luosi" - }, - { - "name": "连接块/luosi2", - "bone": "bone", - "attachment": "连接块/luosi2" - }, - { - "name": "连接块/luosi5", - "bone": "bone5", - "attachment": "连接块/luosi2" - }, - { - "name": "连接块/luosi3", - "bone": "bone2", - "attachment": "连接块/luosi2" - }, - { - "name": "连接块/luosi7", - "bone": "bone6", - "attachment": "连接块/luosi2" - } - ], - "skins": [ - { - "name": "default", - "attachments": { - "连接块/kou1": { - "连接块/kou2shu": { - "width": 24, - "height": 52 - } - }, - "连接块/kou2": { - "连接块/kou2shu": { - "width": 24, - "height": 52 - } - }, - "连接块/luosi": { - "连接块/luosi": { - "x": -0.28, - "y": -3.1, - "width": 23, - "height": 21 - } - }, - "连接块/luosi2": { - "连接块/luosi2": { - "x": -0.06, - "y": -0.22, - "width": 12, - "height": 12 - } - }, - "连接块/luosi3": { - "连接块/luosi2": { - "x": -0.06, - "y": -0.22, - "width": 12, - "height": 12 - } - }, - "连接块/luosi4": { - "连接块/luosi": { - "x": -0.28, - "y": -3.1, - "width": 23, - "height": 21 - } - }, - "连接块/luosi5": { - "连接块/luosi2": { - "x": -0.06, - "y": -0.22, - "width": 12, - "height": 12 - } - }, - "连接块/luosi6": { - "连接块/luosi": { - "x": -0.28, - "y": -3.1, - "width": 23, - "height": 21 - } - }, - "连接块/luosi7": { - "连接块/luosi2": { - "x": -0.06, - "y": -0.22, - "width": 12, - "height": 12 - } - }, - "连接块/luosi8": { - "连接块/luosi": { - "x": -0.28, - "y": -3.1, - "width": 23, - "height": 21 - } - } - } - } - ], - "animations": { - "animation": { - "slots": { - "连接块/kou1": { - "color": [ - { - "time": 0.3333, - "color": "ffffffff" - }, - { - "time": 0.6, - "color": "ffffff00" - } - ] - }, - "连接块/kou2": { - "color": [ - { - "time": 0.6667, - "color": "ffffffff" - }, - { - "time": 0.9333, - "color": "ffffff00" - } - ] - }, - "连接块/luosi": { - "color": [ - { - "color": "ffffff00", - "curve": "stepped" - }, - { - "time": 0.3333, - "color": "ffffff00" - }, - { - "time": 0.3667, - "color": "ffffffff" - }, - { - "time": 0.6667, - "color": "ffffff00" - } - ] - }, - "连接块/luosi2": { - "color": [ - { - "time": 0.3333, - "color": "ffffffff" - }, - { - "time": 0.3667, - "color": "ffffff00" - } - ] - }, - "连接块/luosi3": { - "color": [ - { - "time": 0.4667, - "color": "ffffffff" - }, - { - "time": 0.5, - "color": "ffffff00" - } - ] - }, - "连接块/luosi4": { - "color": [ - { - "color": "ffffff00", - "curve": "stepped" - }, - { - "time": 0.4667, - "color": "ffffff00" - }, - { - "time": 0.5, - "color": "ffffffff" - }, - { - "time": 0.8, - "color": "ffffff00" - } - ] - }, - "连接块/luosi5": { - "color": [ - { - "time": 0.5, - "color": "ffffffff" - }, - { - "time": 0.5333, - "color": "ffffff00" - } - ] - }, - "连接块/luosi6": { - "color": [ - { - "color": "ffffff00", - "curve": "stepped" - }, - { - "time": 0.3333, - "color": "ffffff00" - }, - { - "time": 0.3667, - "color": "ffffffff" - }, - { - "time": 0.6667, - "color": "ffffff00" - } - ] - }, - "连接块/luosi7": { - "color": [ - { - "time": 0.6333, - "color": "ffffffff" - }, - { - "time": 0.6667, - "color": "ffffff00" - } - ] - }, - "连接块/luosi8": { - "color": [ - { - "color": "ffffff00", - "curve": "stepped" - }, - { - "time": 0.4667, - "color": "ffffff00" - }, - { - "time": 0.5, - "color": "ffffffff" - }, - { - "time": 0.8, - "color": "ffffff00" - } - ] - } - }, - "bones": { - "kou1": { - "rotate": [ - { - "time": 0.3333 - }, - { - "time": 0.4667, - "angle": 35.85 - }, - { - "time": 0.6, - "angle": -136.48 - } - ], - "translate": [ - { - "time": 0.3333 - }, - { - "time": 0.6, - "x": 160.21, - "y": -504.28 - } - ] - }, - "luosi": { - "rotate": [ - { - "time": 0.3667 - }, - { - "time": 0.6667, - "angle": -120.91 - } - ] - }, - "bone": { - "rotate": [ - {}, - { - "time": 0.1667, - "angle": -177 - }, - { - "time": 0.3333, - "angle": 81.64 - } - ], - "translate": [ - { - "time": 0.3333 - }, - { - "time": 0.6667, - "x": -231.71, - "y": 365.51 - } - ], - "scale": [ - {}, - { - "time": 0.3333, - "x": 1.1, - "y": 1.1 - }, - { - "time": 0.6667, - "x": 3, - "y": 3 - } - ] - }, - "bone2": { - "rotate": [ - { - "time": 0.1333 - }, - { - "time": 0.3, - "angle": -177 - }, - { - "time": 0.4667, - "angle": 81.64 - } - ], - "translate": [ - { - "time": 0.4667 - }, - { - "time": 0.8, - "x": 258.57, - "y": 206.19 - } - ], - "scale": [ - { - "time": 0.1333 - }, - { - "time": 0.4667, - "x": 1.1, - "y": 1.1 - }, - { - "time": 0.8, - "x": 3, - "y": 3 - } - ] - }, - "luosi2": { - "rotate": [ - { - "time": 0.5 - }, - { - "time": 0.8, - "angle": -120.91 - } - ] - }, - "kou2": { - "rotate": [ - { - "time": 0.6667 - }, - { - "time": 0.9333, - "angle": -112.36 - } - ], - "translate": [ - { - "time": 0.6667 - }, - { - "time": 0.9333, - "x": -410.73, - "y": -378.57 - } - ] - }, - "bone5": { - "rotate": [ - { - "time": 0.1667 - }, - { - "time": 0.3333, - "angle": -177 - }, - { - "time": 0.5, - "angle": 81.64 - } - ], - "translate": [ - { - "time": 0.5 - }, - { - "time": 0.8333, - "x": -351.46, - "y": -250.38 - } - ], - "scale": [ - { - "time": 0.1667 - }, - { - "time": 0.5, - "x": 1.1, - "y": 1.1 - }, - { - "time": 0.8333, - "x": 3, - "y": 3 - } - ] - }, - "luosi3": { - "rotate": [ - { - "time": 0.3667 - }, - { - "time": 0.6667, - "angle": -120.91 - } - ] - }, - "bone6": { - "rotate": [ - { - "time": 0.3 - }, - { - "time": 0.4667, - "angle": -177 - }, - { - "time": 0.6333, - "angle": 81.64 - } - ], - "translate": [ - { - "time": 0.6333 - }, - { - "time": 0.9667, - "x": 173.03, - "y": -292.38 - } - ], - "scale": [ - { - "time": 0.3 - }, - { - "time": 0.6333, - "x": 1.1, - "y": 1.1 - }, - { - "time": 0.9667, - "x": 3, - "y": 3 - } - ] - }, - "luosi4": { - "rotate": [ - { - "time": 0.5 - }, - { - "time": 0.8, - "angle": -120.91 - } - ] - } - } - } - } - }, - "_atlasText": "\r\nskeleton.png\r\nsize: 96,96\r\nformat: RGBA8888\r\nfilter: Linear,Linear\r\nrepeat: none\r\n连接块/kou2shu\r\n rotate: false\r\n xy: 2, 39\r\n size: 24, 52\r\n orig: 24, 52\r\n offset: 0, 0\r\n index: -1\r\n连接块/luosi\r\n rotate: false\r\n xy: 2, 16\r\n size: 23, 21\r\n orig: 23, 21\r\n offset: 0, 0\r\n index: -1\r\n连接块/luosi2\r\n rotate: false\r\n xy: 2, 2\r\n size: 12, 12\r\n orig: 12, 12\r\n offset: 0, 0\r\n index: -1\r\n", - "textures": [ - { - "__uuid__": "dca5e70b-8d3f-4ac0-abe7-d0c5647f7837" - } - ], - "textureNames": [ - "skeleton.png" - ], - "scale": 1 -} \ No newline at end of file diff --git a/library/imports/0f/0f1dcd5c-03b8-4f85-9edc-9002472876e3.json b/library/imports/0f/0f1dcd5c-03b8-4f85-9edc-9002472876e3.json new file mode 100644 index 0000000..f470445 --- /dev/null +++ b/library/imports/0f/0f1dcd5c-03b8-4f85-9edc-9002472876e3.json @@ -0,0 +1,28 @@ +{ + "__type__": "cc.SpriteFrame", + "content": { + "name": "3color5", + "texture": "418b4767-01bf-4ac2-823b-9880f2a79215", + "atlas": "cc01997d-495e-480d-871e-be405a6c38b5", + "rect": [ + 64, + 390, + 61, + 267 + ], + "offset": [ + 0, + 0 + ], + "originalSize": [ + 61, + 267 + ], + "capInsets": [ + 0, + 0, + 0, + 0 + ] + } +} \ No newline at end of file diff --git a/library/imports/10/1024689e-c2b8-4ef4-91de-02732703334f.json b/library/imports/10/1024689e-c2b8-4ef4-91de-02732703334f.json index 4b67647..5f66fbf 100644 --- a/library/imports/10/1024689e-c2b8-4ef4-91de-02732703334f.json +++ b/library/imports/10/1024689e-c2b8-4ef4-91de-02732703334f.json @@ -159,7 +159,7 @@ "_srcBlendFactor": 770, "_dstBlendFactor": 771, "_spriteFrame": { - "__uuid__": "865e12b4-8506-4026-ab52-9c8421100cc4" + "__uuid__": "232d4cf2-be5a-4a98-8d4d-10edb8325e08" }, "_type": 0, "_sizeMode": 1, @@ -173,7 +173,7 @@ "_fillRange": 0, "_isTrimmedMode": true, "_atlas": { - "__uuid__": "cc01997d-495e-480d-871e-be405a6c38b5" + "__uuid__": "f2c494b7-b6df-488f-b194-358235b0f180" }, "_id": "" }, diff --git a/library/imports/14/1405acc7-1f74-46f3-9975-839e5337673d.json b/library/imports/14/1405acc7-1f74-46f3-9975-839e5337673d.json new file mode 100644 index 0000000..b57d92c --- /dev/null +++ b/library/imports/14/1405acc7-1f74-46f3-9975-839e5337673d.json @@ -0,0 +1,28 @@ +{ + "__type__": "cc.SpriteFrame", + "content": { + "name": "4color1", + "texture": "418b4767-01bf-4ac2-823b-9880f2a79215", + "atlas": "cc01997d-495e-480d-871e-be405a6c38b5", + "rect": [ + 881, + 758, + 138, + 69 + ], + "offset": [ + 0, + 0 + ], + "originalSize": [ + 138, + 69 + ], + "capInsets": [ + 0, + 0, + 0, + 0 + ] + } +} \ No newline at end of file diff --git a/library/imports/16/1672955d-283c-47be-a394-28cac1c6ba5b.json b/library/imports/16/1672955d-283c-47be-a394-28cac1c6ba5b.json new file mode 100644 index 0000000..a3d4158 --- /dev/null +++ b/library/imports/16/1672955d-283c-47be-a394-28cac1c6ba5b.json @@ -0,0 +1,28 @@ +{ + "__type__": "cc.SpriteFrame", + "content": { + "name": "7color6", + "texture": "418b4767-01bf-4ac2-823b-9880f2a79215", + "atlas": "cc01997d-495e-480d-871e-be405a6c38b5", + "rect": [ + 1, + 1, + 62, + 387 + ], + "offset": [ + 0, + 0 + ], + "originalSize": [ + 62, + 387 + ], + "capInsets": [ + 0, + 0, + 0, + 0 + ] + } +} \ No newline at end of file diff --git a/library/imports/18/18775144-2f12-48f0-9d3d-b737e7417b5a.json b/library/imports/18/18775144-2f12-48f0-9d3d-b737e7417b5a.json new file mode 100644 index 0000000..72ddda8 --- /dev/null +++ b/library/imports/18/18775144-2f12-48f0-9d3d-b737e7417b5a.json @@ -0,0 +1,28 @@ +{ + "__type__": "cc.SpriteFrame", + "content": { + "name": "7down3", + "texture": "c660c59d-e175-4194-aaf3-33d1d03b783f", + "atlas": "3d019ed8-3019-436d-add0-ceeb02a5baaf", + "rect": [ + 1, + 659, + 364, + 46 + ], + "offset": [ + 0, + 0 + ], + "originalSize": [ + 364, + 46 + ], + "capInsets": [ + 0, + 0, + 0, + 0 + ] + } +} \ No newline at end of file diff --git a/library/imports/18/18d68fd0-41ef-430e-9de2-d38b9e55b08c.json b/library/imports/18/18d68fd0-41ef-430e-9de2-d38b9e55b08c.json new file mode 100644 index 0000000..68cc47b --- /dev/null +++ b/library/imports/18/18d68fd0-41ef-430e-9de2-d38b9e55b08c.json @@ -0,0 +1,29 @@ +{ + "__type__": "cc.SpriteFrame", + "content": { + "name": "shu_zl2_1", + "texture": "418b4767-01bf-4ac2-823b-9880f2a79215", + "atlas": "cc01997d-495e-480d-871e-be405a6c38b5", + "rect": [ + 965, + 829, + 32, + 54 + ], + "offset": [ + 0, + 0 + ], + "originalSize": [ + 32, + 54 + ], + "rotated": 1, + "capInsets": [ + 0, + 0, + 0, + 0 + ] + } +} \ No newline at end of file diff --git a/library/imports/5e/5e4a496f-3214-4364-ae25-e0424712c6ca.json b/library/imports/1e/1ecae730-c650-43a7-8c0a-560373777137.json similarity index 64% rename from library/imports/5e/5e4a496f-3214-4364-ae25-e0424712c6ca.json rename to library/imports/1e/1ecae730-c650-43a7-8c0a-560373777137.json index 3eb0ab6..2cccfbc 100644 --- a/library/imports/5e/5e4a496f-3214-4364-ae25-e0424712c6ca.json +++ b/library/imports/1e/1ecae730-c650-43a7-8c0a-560373777137.json @@ -2,11 +2,11 @@ "__type__": "cc.SpriteFrame", "content": { "name": "6down6", - "texture": "ed2c3a21-0522-445d-9904-76843208705f", - "atlas": "d7e227ab-cc06-48f5-a2ac-092b19ec7f6f", + "texture": "c660c59d-e175-4194-aaf3-33d1d03b783f", + "atlas": "3d019ed8-3019-436d-add0-ceeb02a5baaf", "rect": [ - 236, - 1, + 613, + 377, 45, 365 ], @@ -18,6 +18,7 @@ 45, 365 ], + "rotated": 1, "capInsets": [ 0, 0, diff --git a/library/imports/51/51af1f04-c786-43e0-a377-79d9fe9ce2cb.json b/library/imports/20/20a13038-b67b-4c07-89fd-38267efdc0e5.json similarity index 64% rename from library/imports/51/51af1f04-c786-43e0-a377-79d9fe9ce2cb.json rename to library/imports/20/20a13038-b67b-4c07-89fd-38267efdc0e5.json index 7c20af0..737fc09 100644 --- a/library/imports/51/51af1f04-c786-43e0-a377-79d9fe9ce2cb.json +++ b/library/imports/20/20a13038-b67b-4c07-89fd-38267efdc0e5.json @@ -2,11 +2,11 @@ "__type__": "cc.SpriteFrame", "content": { "name": "3down6", - "texture": "ed2c3a21-0522-445d-9904-76843208705f", - "atlas": "d7e227ab-cc06-48f5-a2ac-092b19ec7f6f", + "texture": "c660c59d-e175-4194-aaf3-33d1d03b783f", + "atlas": "3d019ed8-3019-436d-add0-ceeb02a5baaf", "rect": [ - 95, - 1, + 248, + 189, 45, 365 ], @@ -18,6 +18,7 @@ 45, 365 ], + "rotated": 1, "capInsets": [ 0, 0, diff --git a/library/imports/20/20e22b3b-684d-405d-ac5b-5cd9ba4f9b66.json b/library/imports/20/20e22b3b-684d-405d-ac5b-5cd9ba4f9b66.json new file mode 100644 index 0000000..ef27906 --- /dev/null +++ b/library/imports/20/20e22b3b-684d-405d-ac5b-5cd9ba4f9b66.json @@ -0,0 +1,29 @@ +{ + "__type__": "cc.SpriteFrame", + "content": { + "name": "5color6", + "texture": "418b4767-01bf-4ac2-823b-9880f2a79215", + "atlas": "cc01997d-495e-480d-871e-be405a6c38b5", + "rect": [ + 907, + 1, + 61, + 386 + ], + "offset": [ + 0, + 0 + ], + "originalSize": [ + 61, + 386 + ], + "rotated": 1, + "capInsets": [ + 0, + 0, + 0, + 0 + ] + } +} \ No newline at end of file diff --git a/library/imports/21/21696b26-2ba1-410c-a02f-c7cf63fdb349.json b/library/imports/21/21696b26-2ba1-410c-a02f-c7cf63fdb349.json new file mode 100644 index 0000000..31835a2 --- /dev/null +++ b/library/imports/21/21696b26-2ba1-410c-a02f-c7cf63fdb349.json @@ -0,0 +1,28 @@ +{ + "__type__": "cc.SpriteFrame", + "content": { + "name": "2color6", + "texture": "418b4767-01bf-4ac2-823b-9880f2a79215", + "atlas": "cc01997d-495e-480d-871e-be405a6c38b5", + "rect": [ + 65, + 1, + 62, + 386 + ], + "offset": [ + 0, + 0 + ], + "originalSize": [ + 62, + 386 + ], + "capInsets": [ + 0, + 0, + 0, + 0 + ] + } +} \ No newline at end of file diff --git a/library/imports/22/2234ab2c-a7b4-48be-90e0-ae7aa58e9d91.js b/library/imports/22/2234ab2c-a7b4-48be-90e0-ae7aa58e9d91.js index 5a213f6..bc7e672 100644 --- a/library/imports/22/2234ab2c-a7b4-48be-90e0-ae7aa58e9d91.js +++ b/library/imports/22/2234ab2c-a7b4-48be-90e0-ae7aa58e9d91.js @@ -145,6 +145,8 @@ var MapConroler = /** @class */ (function (_super) { this.timeLabel = this.node.parent.getChildByName("Top").getChildByName("time"); this.levelLabel = this.node.parent.getChildByName("Top").getChildByName("level"); this.timeNumber = cc.fx.GameConfig.LEVEL_INFO[0].time; + this.count_Time = 0; + this.add_Time = 0; NumberToImage_1.default.getTimeMargin(this.timeNumber, 50, "time_", this.timeLabel); // var timeTemp = cc.fx.GameTool.getTimeMargin(this.timeNumber); // this.timeLabel.string = timeTemp.toString(); diff --git a/library/imports/22/2234ab2c-a7b4-48be-90e0-ae7aa58e9d91.js.map b/library/imports/22/2234ab2c-a7b4-48be-90e0-ae7aa58e9d91.js.map index df9d00e..37fdef4 100644 --- a/library/imports/22/2234ab2c-a7b4-48be-90e0-ae7aa58e9d91.js.map +++ b/library/imports/22/2234ab2c-a7b4-48be-90e0-ae7aa58e9d91.js.map @@ -1,5 +1 @@ -<<<<<<< HEAD -{"version":3,"sources":["assets\\Script\\Map.ts"],"names":[],"mappings":"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","file":"","sourceRoot":"/","sourcesContent":["// Learn TypeScript:\r\n// - https://docs.cocos.com/creator/manual/en/scripting/typescript.html\r\n// Learn Attribute:\r\n// - https://docs.cocos.com/creator/manual/en/scripting/reference/attributes.html\r\n// Learn life-cycle callbacks:\r\n// - https://docs.cocos.com/creator/manual/en/scripting/life-cycle-callbacks.html\r\n\r\nimport GameManager from \"./GameManager\";\r\nimport { LQCollide } from \"./lq_collide_system/lq_collide\";\r\nimport NumberToImage from \"./NumberToImage\";\r\nimport { MiniGameSdk } from \"./Sdk/MiniGameSdk\";\r\n\r\nconst {ccclass, property} = cc._decorator;\r\n\r\n\r\n\r\n@ccclass\r\nexport default class MapConroler extends cc.Component {\r\n static _instance: any;\r\n\r\n\r\n @property({type: [cc.Prefab], tooltip:\"方块数组\"})\r\n Block_Array : Array = [];\r\n\r\n @property({type: [cc.Prefab], tooltip:\"方块道具数组\"})\r\n Block_Prop : Array = [];\r\n\r\n @property(cc.Prefab)\r\n MapBlockPrefab: cc.Prefab = null;\r\n\r\n @property({type: [cc.SpriteAtlas], tooltip:\"方块颜色\"})\r\n Block_Color : Array = [];\r\n\r\n\r\n @property({type: [cc.Prefab], tooltip:\"墙壁数组\"})\r\n Wall_Prefab : Array = [];\r\n\r\n \r\n\r\n @property(cc.Prefab)\r\n wallTurnPrefab: cc.Prefab = null;\r\n\r\n @property(cc.Button)\r\n timeBtn: cc.Button = null;\r\n @property(cc.Button)\r\n destroyBtn: cc.Button = null;\r\n @property(cc.Button)\r\n magicBtn: cc.Button = null;\r\n\r\n @property(cc.Node)\r\n mask: cc.Node = null;\r\n\r\n @property(cc.Label)\r\n iceLabel: cc.Label = null;\r\n @property(cc.Label)\r\n hammerLabel: cc.Label = null;\r\n @property(cc.Label)\r\n magicLabel: cc.Label = null;\r\n\r\n @property(cc.Node)\r\n magicMask: cc.Node = null;\r\n\r\n @property(cc.Node)\r\n hammerMask: cc.Node = null;\r\n\r\n @property(cc.Node)\r\n freezeMask: cc.Node = null;\r\n\r\n \r\n @property(cc.Node)\r\n coinPop: cc.Node = null;\r\n\r\n timeLabel: cc.Node = null;\r\n levelLabel: cc.Node = null;\r\n\r\n new_mode: number = 0;\r\n mapWidth: number = 0;\r\n mapHeight: number = 0;\r\n wallNum: number = 0;\r\n blockNum: number = 0;\r\n mapBlocksWall: any; //地图的所有底块\r\n mapInfo: any; //地图除了底块的其他信息\r\n blocks: any; //方块数组\r\n wallInfo: any; //墙壁数组\r\n wallArray:any; //\r\n openWall: any; //开关墙数组\r\n freezeWall: any; //冻结墙数组\r\n riseFallBlcok:any; //升降地块数组\r\n scheduleCallback: any;//倒计时用\r\n homeCanTouch:boolean = true;//按钮可用状态\r\n againCanTouch:boolean = true;//重玩按钮可以用状态\r\n gameOver: boolean = false;//游戏结束状态\r\n gameWin: boolean = false;//游戏胜利状态\r\n gameStart: boolean = false;//游戏开始状态\r\n timeNumber: number = 0; //游戏时间 用于倒计时\r\n count_Time: number = 0; //用于统计总游戏时长\r\n add_Time: number = 0; //复活时间\r\n mapBlockArray: any; //地图的所有格子状态存储\r\n pause:boolean = false;//暂停状态\r\n hammer:boolean = false;//锤子状态\r\n freezeArray: any; //冻结\r\n loackArray: any; //上锁\r\n particleEffects: cc.ParticleAsset[];\r\n // leftDoors: []; //左门\r\n rightDoors: any; //右门\r\n topDoors: any; //上门\r\n bottomDoors: any; //下门\r\n leftDoors: any;\r\n\r\n\r\n // mapInfo: number[][] = [];\r\n\r\n onLoad () {\r\n\r\n cc.fx.GameConfig.GM_INFO.review = 0;\r\n cc.fx.GameConfig.GM_INFO.gameState = true;\r\n this.mask.opacity = 0;\r\n this.node.getChildByName(\"Adhesive\").zIndex = 500;\r\n cc.game.setFrameRate(63); \r\n cc.fx.AudioManager._instance.playEffect(\"zhuan2\",null);\r\n this.node.parent.parent.parent.getChildByName(\"zhuanchang\").active = true;\r\n this.node.parent.parent.parent.getChildByName(\"zhuanchang\").getComponent(sp.Skeleton).setAnimation(1,\"down\",false);\r\n this.node.parent.parent.parent.getChildByName(\"zhuanchang\").getComponent(sp.Skeleton).setCompleteListener((entry) => {\r\n if (entry.animation.name === \"down\") {\r\n // 动画播放结束后执行的逻辑\r\n this.node.parent.parent.parent.getChildByName(\"zhuanchang\").active = false;\r\n }\r\n });\r\n this.blocks = [];\r\n this.leftDoors = []; //左门\r\n this.rightDoors = []; //右门\r\n this.topDoors = []; //上门\r\n this.bottomDoors = []; //下门\r\n this.gameWin = false;\r\n this.gameOver = false;\r\n this.gameStart = false; \r\n this.homeCanTouch = true;\r\n this.againCanTouch = true;\r\n this.new_mode = 0;\r\n this.count_Time = 0;\r\n this.add_Time = 0;\r\n \r\n this.iceLabel.string = cc.fx.GameConfig.GM_INFO.freezeAmount.toString();\r\n this.hammerLabel.string = cc.fx.GameConfig.GM_INFO.hammerAmount.toString();\r\n this.magicLabel.string = cc.fx.GameConfig.GM_INFO.magicAmount.toString();\r\n \r\n // cc.game.addPersistRootNode(this.node);\r\n MapConroler._instance = this;\r\n } \r\n\r\n start () {\r\n setTimeout(() => {\r\n cc.director.preloadScene(\"HomeScene\", (err, asset) => {\r\n if (err) {\r\n console.error('动态加载 HomeScene 失败:', err);\r\n return;\r\n }\r\n });\r\n }, 1000);\r\n // console.log(\"进入GameScene\");\r\n this.Block_Array = GameManager._instance.Block_Array;\r\n this.Wall_Prefab = GameManager._instance.Wall_Prefab;\r\n this.Block_Color = GameManager._instance.Block_Color;\r\n // this.particleEffects = GameManager._instance.particleEffects;\r\n \r\n this.initMap();\r\n \r\n }\r\n\r\n startUpdate(){\r\n if(this.gameStart == false){\r\n this.gameStart = true;\r\n //发送数数事件——进入关卡\r\n console.log(\"准备进入下一关,发送下一关进入\");\r\n cc.fx.GameTool.shushu_Track(\"enter_stage\");\r\n this.startTimeCutDown();\r\n for(let i =0; i {\r\n const startTime = performance.now();\r\n for (let i = 0; i < BLOCKS_PER_FRAME && index < blockArray.length; i++) {\r\n let blockInfo = blockArray[index];\r\n // 缓存 Block_Array 访问\r\n const blockPrefab = this.Block_Array[blockInfo.block]; \r\n let block = cc.instantiate(blockPrefab);\r\n block.parent = this.node;\r\n block.setPosition(cc.v2(blockInfo.position.x, blockInfo.position.y));\r\n if (blockInfo.block != 23) {\r\n this.blockNum += 1;\r\n this.blocks.push(block);\r\n if (blockInfo.type == 1) {\r\n let info = {\r\n id: blockInfo.id + 1,\r\n block: blockInfo.block,\r\n color: blockInfo.stacking,\r\n type: 10,\r\n position: blockInfo.position,\r\n stacking: blockInfo.color\r\n };\r\n // 缓存 Block_Array 访问\r\n const blockUpPrefab = this.Block_Array[info.block]; \r\n let blockUp = cc.instantiate(blockUpPrefab);\r\n blockUp.parent = this.node;\r\n blockUp.setPosition(cc.v2(info.position.x, info.position.y));\r\n\r\n this.blocks.push(blockUp);\r\n block.getComponent(\"Block\").init(blockInfo, null, null, blockUp);\r\n blockUp.getComponent(\"Block\").init(info, null, null, block);\r\n \r\n this.blockNum += 1;\r\n } else if (blockInfo.type == 9) {\r\n if(blockInfo.adhesiveTime < 2){\r\n index++;\r\n continue;\r\n }\r\n index++;\r\n let info = blockArray[index];\r\n // 缓存 Block_Array 访问\r\n const blockUpPrefab = this.Block_Array[info.block]; \r\n let blockUp = cc.instantiate(blockUpPrefab);\r\n blockUp.parent = this.node;\r\n blockUp.setPosition(cc.v2(info.position.x, info.position.y));\r\n\r\n this.blocks.push(blockUp);\r\n block.getComponent(\"Block\").init(blockInfo, null, null, blockUp,false);\r\n setTimeout(() => {\r\n blockUp.getComponent(\"Block\").init(info, null, null, block,true);\r\n }, 100);\r\n this.blockNum += 1;\r\n } else {\r\n block.getComponent(\"Block\").init(blockInfo);\r\n } \r\n }\r\n else{\r\n block.getComponent(\"Barrier\").init(blockInfo);\r\n }\r\n index++;\r\n }\r\n const endTime = performance.now();\r\n const frameTime = endTime - startTime;\r\n // 如果当前帧执行时间过长,减少每帧创建数量\r\n if (frameTime > 16) { \r\n BLOCKS_PER_FRAME = Math.max(BLOCKS_PER_FRAME - 1, MIN_PER_FRAME);\r\n } else {\r\n BLOCKS_PER_FRAME = Math.min(BLOCKS_PER_FRAME + 1, MAX_PER_FRAME);\r\n }\r\n\r\n // 如果还有方块未创建,下一帧继续创建\r\n if (index < blockArray.length) {\r\n // 使用 scheduleOnce 在下一帧执行 createBlocks\r\n this.scheduleOnce(() => {\r\n createBlocks();\r\n }, 0);\r\n } else {\r\n\r\n }\r\n };\r\n\r\n // 开始分帧创建方块\r\n createBlocks();\r\n}\r\n//给创建方块排序,用来降低drawcall 合批\r\nsortBlock(allBlocks: { color: number; block: number; type: number }[]) {\r\n return allBlocks.sort((a, b) => {\r\n // 先处理 type 为 1 的情况,将其放到最后\r\n if (a.type === 1 && b.type !== 1) {\r\n return 1;\r\n }\r\n if (a.type !== 1 && b.type === 1) {\r\n return -1;\r\n }\r\n\r\n // 对 type 不为 0 的元素按 type 排序\r\n if (a.type !== 0 && b.type !== 0) {\r\n return a.type - b.type;\r\n }\r\n if (a.type !== 0 && b.type === 0) {\r\n return 1;\r\n }\r\n if (a.type === 0 && b.type !== 0) {\r\n return -1;\r\n }\r\n\r\n // 再处理 block 为 23 的情况,将其放到最前面\r\n if (a.block === 23 && b.block !== 23) {\r\n return -1;\r\n }\r\n if (a.block !== 23 && b.block === 23) {\r\n return 1;\r\n }\r\n\r\n // 其余按 color 升序排列\r\n return a.color - b.color;\r\n });\r\n}\r\n\r\n\r\n//创建墙壁\r\n\r\nwallInit() {\r\n let index = 0; // 当前要创建的墙壁索引\r\n let WALLS_PER_FRAME = 1; // 初始每帧创建的墙壁数量\r\n const MAX_PER_FRAME = 10; // 每帧最大创建数量\r\n const MIN_PER_FRAME = 1; // 每帧最小创建数量\r\n\r\n const createWalls = () => {\r\n const startTime = performance.now();\r\n for (let i = 0; i < WALLS_PER_FRAME && index < this.wallInfo.length; i++) {\r\n let block = this.wallInfo[index];\r\n let dir = this.getWllDiraction(\"wall\", cc.v2(block.getComponent(\"MapBlock\").posX, block.getComponent(\"MapBlock\").posY));\r\n if (dir != null) {\r\n this.createWall(dir, block);\r\n }\r\n index++;\r\n }\r\n const endTime = performance.now();\r\n const frameTime = endTime - startTime;\r\n // 如果当前帧执行时间过长,减少每帧创建数量\r\n if (frameTime > 16) { \r\n WALLS_PER_FRAME = Math.max(WALLS_PER_FRAME - 1, MIN_PER_FRAME);\r\n } else {\r\n WALLS_PER_FRAME = Math.min(WALLS_PER_FRAME + 1, MAX_PER_FRAME);\r\n }\r\n\r\n // 如果还有墙壁未创建,下一帧继续创建\r\n if (index < this.wallInfo.length) {\r\n this.scheduleOnce(() => {\r\n createWalls();\r\n }, 0);\r\n } else {\r\n // 所有墙壁创建完成后,创建拐角节点\r\n this.createCornerNodes();\r\n }\r\n };\r\n\r\n // 开始分帧创建墙壁\r\n createWalls();\r\n}\r\n\r\n// ... 已有代码 ...\r\n\r\n getWllDiraction(type,pointA){\r\n let dir = [];\r\n let pointB = cc.v2(pointA.x + 1,pointA.y);\r\n let pointC = cc.v2(pointA.x - 1,pointA.y);\r\n let pointD = cc.v2(pointA.x,pointA.y + 1);\r\n let pointE = cc.v2(pointA.x,pointA.y - 1);\r\n let opacity = 0;\r\n if(type == \"wall\") opacity = 255;\r\n if(type == \"turn\") opacity = 250;\r\n \r\n if(pointB.x < this.mapWidth){\r\n if(this.mapBlocksWall[pointB.x][pointB.y].opacity == opacity ){\r\n if(type == \"turn\" && this.mapBlocksWall[pointB.x][pointB.y].getComponent(\"MapBlock\").direction == \"right\"){\r\n \r\n }\r\n else dir.push(\"right\");\r\n }\r\n }\r\n if(pointC.x >= 0){\r\n if(this.mapBlocksWall[pointC.x][pointC.y].opacity == opacity){\r\n if(type == \"turn\" && this.mapBlocksWall[pointC.x][pointC.y].getComponent(\"MapBlock\").direction == \"left\"){\r\n \r\n }\r\n else dir.push(\"left\");\r\n }\r\n }\r\n if(pointD.y < this.mapHeight){\r\n if(this.mapBlocksWall[pointD.x][pointD.y].opacity == opacity){\r\n if(type == \"turn\" && this.mapBlocksWall[pointD.x][pointD.y].getComponent(\"MapBlock\").direction == \"up\"){\r\n \r\n }\r\n else dir.push(\"up\");\r\n }\r\n }\r\n if(pointE.y >= 0){\r\n if(this.mapBlocksWall[pointE.x][pointE.y].opacity == opacity){\r\n if(type == \"turn\" && this.mapBlocksWall[pointE.x][pointE.y].getComponent(\"MapBlock\").direction == \"down\"){\r\n \r\n }\r\n else dir.push(\"down\");\r\n }\r\n }\r\n if(dir.length > 2){\r\n\r\n return null;\r\n }\r\n if(dir.length == 1){\r\n if(type == \"wall\")\r\n return dir[0];\r\n else \r\n return null;\r\n }\r\n else if(dir.length == 2){\r\n return dir[0] + dir[1];\r\n }\r\n }\r\n\r\n createCornerNodes() {\r\n // 定义拐角位置\r\n for(let i=0; i 3) maxX = maxX-1;\r\n }\r\n else if(block.name == \"block11\"){\r\n minX = width-2;\r\n if(this.mapWidth > 3) maxX = maxX-2;\r\n }\r\n\r\n else if(block.name == \"block14\"){\r\n minX = width-1;\r\n maxX = maxX-1;\r\n }\r\n else if(block.name == \"block16\"){\r\n minX = width-1;\r\n maxX = maxX-1;\r\n }\r\n else if(block.name == \"block18\"){\r\n minX = width-1;\r\n maxX = maxX-1;\r\n }\r\n else if(block.name == \"block21\"){\r\n minX = width-1;\r\n maxX = maxX-1;\r\n }\r\n \r\n return {minX:minX,maxX:maxX,minY:minY,maxY:maxY};\r\n }\r\n\r\n //检测落点是否可以消除\r\n checkPass(node,blocks) {\r\n let minAndMax = this.getMinAndMax(node);\r\n let minX = minAndMax.minX;\r\n let maxX = minAndMax.maxX;\r\n let minY = minAndMax.minY;\r\n let maxY = minAndMax.maxY;\r\n\r\n let nodePos = cc.v2(node.getComponent(\"Block\").posX, node.getComponent(\"Block\").posY);\r\n\r\n // 获取地图边界信息\r\n\r\n let allBlocks = [];\r\n for(let i=0;i wallPos.x){\r\n // console.log(\"id:\",wall.getChildByName(\"num\").getComponent(cc.Label).string);\r\n leftWalls.push(wallLeft);\r\n }\r\n }\r\n }\r\n // console.log(\"得到左边墙壁数组\",date6);\r\n if(leftWalls.length != 0){\r\n let result = this.detectingBlock(\"left\",node.getComponent(\"Block\").posX,node.getComponent(\"Block\").posY,allBlocks);\r\n if(result == true) result = this.passWall(result,leftWalls,node);\r\n // console.log(\"碰到左边缘结果:\",jg);\r\n if(result){\r\n \r\n this.blockNum -= 1;\r\n this.special_Treatment(node);\r\n jg = 2;\r\n this.createParticle(node,jg);\r\n return jg;\r\n }\r\n }\r\n }\r\n if (nodePos.x >= maxX || direction[1] == true) {\r\n // const date3 = new Date().getTime();\r\n // console.log(\"碰到右边缘\",date3);\r\n pz += 1;\r\n let rightWalls = [];\r\n for(let i = 0; i < this.rightDoors.length; i++){\r\n let wallRight = this.rightDoors[i].getChildByName(\"wall\");\r\n let wallPos = cc.v2(wallRight.getComponent(\"Wall\").posX,wallRight.getComponent(\"Wall\").posY);\r\n for(let i = 0; i < allBlocks.length; i++){\r\n if(allBlocks[i].y == wallPos.y && allBlocks[i].x < wallPos.x){\r\n // console.log(\"id:\",wall.getChildByName(\"num\").getComponent(cc.Label).string);\r\n rightWalls.push(wallRight);\r\n }\r\n }\r\n }\r\n\r\n if(rightWalls.length != 0){\r\n let result = this.detectingBlock(\"right\",node.getComponent(\"Block\").posX,node.getComponent(\"Block\").posY,allBlocks);\r\n \r\n if(result == true) result = this.passWall(result,rightWalls,node);\r\n // console.log(\"碰到右边缘结果:\",jg);\r\n if(result){\r\n \r\n this.blockNum -= 1;\r\n this.special_Treatment(node);\r\n jg = 3;\r\n this.createParticle(node,jg);\r\n return jg;\r\n }\r\n }\r\n\r\n \r\n }\r\n if (nodePos.y <= minY || direction[2] == true) {\r\n pz += 1;\r\n // const date4 = new Date().getTime();\r\n // console.log(\"碰到下边缘\",date4);\r\n let downWalls = [];\r\n for(let i = 0; i < this.topDoors.length; i++){\r\n let wallBottom = this.topDoors[i].getChildByName(\"wall\");\r\n let wallPos = cc.v2(wallBottom.getComponent(\"Wall\").posX,wallBottom.getComponent(\"Wall\").posY);\r\n for(let i = 0; i < allBlocks.length; i++){\r\n let luocha = Math.abs(allBlocks[i].y - wallPos.y)\r\n if(allBlocks[i].x == wallPos.x && allBlocks[i].y > wallPos.y && luocha <= node.getComponent(\"Block\").shu){\r\n // console.log(\"id:\",wall.getChildByName(\"num\").getComponent(cc.Label).string);\r\n downWalls.push(wallBottom);\r\n }\r\n }\r\n }\r\n\r\n if(downWalls.length != 0){\r\n let result = this.detectingBlock(\"down\",node.getComponent(\"Block\").posX,node.getComponent(\"Block\").posY,allBlocks);\r\n if(result == true) result = this.passWall(result,downWalls,node);\r\n // console.log(\"碰到下边缘结果:\",jg);\r\n if(result){\r\n \r\n this.blockNum -= 1;\r\n this.special_Treatment(node);\r\n jg = 1;\r\n this.createParticle(node,jg);\r\n return jg;\r\n }\r\n }\r\n \r\n\r\n }\r\n if (nodePos.y >= maxY || direction[3] == true) {\r\n pz += 1;\r\n // const date5 = new Date().getTime();\r\n // console.log(\"碰到上边缘\",date5);\r\n let upWalls = [];\r\n for(let i = 0; i < this.bottomDoors.length; i++){\r\n let wallTop = this.bottomDoors[i].getChildByName(\"wall\");\r\n let wallPos = cc.v2(wallTop.getComponent(\"Wall\").posX,wallTop.getComponent(\"Wall\").posY);\r\n for(let i = 0; i < allBlocks.length; i++){\r\n let luocha = Math.abs(allBlocks[i].y - wallPos.y)\r\n if(allBlocks[i].x == wallPos.x && allBlocks[i].y < wallPos.y && luocha <= node.getComponent(\"Block\").shu){\r\n upWalls.push(wallTop);\r\n }\r\n }\r\n }\r\n\r\n if(upWalls.length != 0){\r\n let result = this.detectingBlock(\"up\",node.getComponent(\"Block\").posX,node.getComponent(\"Block\").posY,allBlocks);\r\n if(result == true) result = this.passWall(result,upWalls,node);\r\n // console.log(\"碰到上边缘结果:\",result);\r\n if(result){\r\n \r\n this.blockNum -= 1;\r\n this.special_Treatment(node);\r\n jg = 0;\r\n this.createParticle(node,jg);\r\n return jg;\r\n }\r\n }\r\n\r\n }\r\n if(pz == 0 )jg = -1;\r\n // const date10 = new Date().getTime();\r\n // console.log(\"所有检测结束耗时\",date10,jg);\r\n return jg;\r\n }\r\n\r\n changeState(){\r\n if(this.openWall.length != 0){\r\n for(let i=0; i 0){\r\n for(let i=0; i= 0){\r\n if(this.mapBlocksWall[x-2][y].getComponent(\"MapBlock\").block_Id != \"\" && this.mapBlocksWall[x-2][y].getComponent(\"MapBlock\").block_Id!= \"Wall\"\r\n && this.mapBlocksWall[x-2][y].getComponent(\"MapBlock\").block_Id != id ){\r\n // console.log(\"左侧有物体\")\r\n jg = false;\r\n return jg;\r\n }\r\n if(this.mapBlocksWall[x-2][y].opacity == 249){\r\n jg = false;\r\n return jg;\r\n }\r\n }\r\n }\r\n else if(direction == \"right\"){\r\n if(this.mapBlocksWall[x+1][y].getComponent(\"MapBlock\").block_Id != \"\" && this.mapBlocksWall[x+1][y].getComponent(\"MapBlock\").block_Id!= \"Wall\"\r\n && this.mapBlocksWall[x+1][y].getComponent(\"MapBlock\").block_Id != id ){\r\n // console.log(\"右侧有物体\")\r\n jg = false;\r\n return jg;\r\n }\r\n if(this.mapBlocksWall[x+1][y].opacity == 249){\r\n jg = false;\r\n return jg;\r\n }\r\n if((x + 2) <= this.mapBlocksWall.length-1){\r\n if(this.mapBlocksWall[x+2][y].getComponent(\"MapBlock\").block_Id != \"\" && this.mapBlocksWall[x+2][y].getComponent(\"MapBlock\").block_Id!= \"Wall\"\r\n && this.mapBlocksWall[x+2][y].getComponent(\"MapBlock\").block_Id != id ){\r\n // console.log(\"右侧有物体\")\r\n jg = false;\r\n return jg;\r\n }\r\n if(this.mapBlocksWall[x+2][y].opacity == 249){\r\n jg = false;\r\n return jg;\r\n }\r\n }\r\n }\r\n if(direction == \"up\"){\r\n if(this.mapBlocksWall[x][y+1].getComponent(\"MapBlock\").block_Id != \"\" && this.mapBlocksWall[x][y+1].getComponent(\"MapBlock\").block_Id!= \"Wall\"\r\n && this.mapBlocksWall[x][y+1].getComponent(\"MapBlock\").block_Id != id ){\r\n // console.log(\"上侧有物体\")\r\n jg = false;\r\n return jg;\r\n }\r\n if(this.mapBlocksWall[x][y+1].opacity == 249){\r\n jg = false;\r\n return jg;\r\n }\r\n if((y + 2) <= this.mapBlocksWall[x].length-1){\r\n if(this.mapBlocksWall[x][y+2].getComponent(\"MapBlock\").block_Id != \"\" && this.mapBlocksWall[x][y+2].getComponent(\"MapBlock\").block_Id!= \"Wall\"\r\n && this.mapBlocksWall[x][y+2].getComponent(\"MapBlock\").block_Id != id ){\r\n // console.log(\"上侧有物体\")\r\n jg = false;\r\n return jg;\r\n }\r\n if(this.mapBlocksWall[x][y+2].opacity == 249){\r\n jg = false;\r\n return jg;\r\n }\r\n }\r\n }\r\n if(direction == \"down\"){\r\n if(this.mapBlocksWall[x][y-1].getComponent(\"MapBlock\").block_Id != \"\" && this.mapBlocksWall[x][y-1].getComponent(\"MapBlock\").block_Id!= \"Wall\"\r\n && this.mapBlocksWall[x][y-1].getComponent(\"MapBlock\").block_Id != id ){\r\n // console.log(\"下侧有物体\")\r\n jg = false;\r\n return jg;\r\n }\r\n if(this.mapBlocksWall[x][y-1].opacity == 249){\r\n jg = false;\r\n return jg;\r\n }\r\n if((y - 2) >= 0){\r\n if(this.mapBlocksWall[x][y-2].getComponent(\"MapBlock\").block_Id != \"\" && this.mapBlocksWall[x][y-2].getComponent(\"MapBlock\").block_Id!= \"Wall\"\r\n && this.mapBlocksWall[x][y-2].getComponent(\"MapBlock\").block_Id != id ){\r\n // console.log(\"下侧有物体\")\r\n jg = false;\r\n return jg;\r\n }\r\n if(this.mapBlocksWall[x][y-2].opacity == 249){\r\n jg = false;\r\n return jg;\r\n }\r\n }\r\n }\r\n // console.log(\"检测物体各方向是否有别的物块\",jg);\r\n return jg;\r\n }\r\n\r\n checkDiraction(allBlocks,maxX,maxY){\r\n let jg = [false,false,false,false];\r\n for(let i=0; i 0 && jg[0] == false){\r\n if(this.mapBlocksWall[allBlocks[i].x-1][allBlocks[i].y].opacity == 250){\r\n jg[0] = true;\r\n } \r\n }\r\n if( jg[1] == false){\r\n if(this.mapBlocksWall[allBlocks[i].x+1][allBlocks[i].y].opacity == 250){\r\n jg[1] = true;\r\n } \r\n }\r\n if(allBlocks[i].y > 0 && jg[2] == false){\r\n if(this.mapBlocksWall[allBlocks[i].x][allBlocks[i].y-1].opacity == 250){\r\n jg[2] = true;\r\n } \r\n }\r\n if(jg[3] == false){\r\n if(this.mapBlocksWall[allBlocks[i].x][allBlocks[i].y+1].opacity == 250){\r\n jg[3] = true;\r\n } \r\n }\r\n }\r\n return jg;\r\n }\r\n\r\n checkLeft(allBlocks){\r\n let jg = false;\r\n return jg;\r\n }\r\n\r\n checkRight(allBlocks,max){\r\n let jg = false;\r\n for(let i=0; i {\r\n if(child.getComponent(\"Block\")){\r\n if(child.getComponent(\"Block\").type == 4)\r\n return child\r\n }\r\n });\r\n if(freezeBlock.length > 0){\r\n for(let i=0; i {\r\n if(child.getComponent(\"Block\")){\r\n if(child.getComponent(\"Block\").type == 3)\r\n return child\r\n }\r\n });\r\n if(lockBlock.length > 0)\r\n for(let i=0; i {\r\n this.node.parent.parent.getChildByName(\"Win\").active = true;\r\n }, 660);\r\n // console.log(\"游戏成功\");\r\n }\r\n else{\r\n if(this.gameOver == true){\r\n this.failLevel(null);\r\n }\r\n }\r\n }\r\n\r\n check_NewMode(){\r\n for(let i=0; i 156){\r\n cc.fx.GameConfig.GM_INFO.level = 156;\r\n // MapConroler._instance = null;\r\n \r\n if(this.new_mode == 3){\r\n this.node.parent.parent.getChildByName(\"Win\").active = false;\r\n this.openNewMode(2);\r\n cc.fx.GameConfig.LEVEL_INFO_init(false,0);\r\n return;\r\n }\r\n // cc.fx.GameConfig.LEVEL_INFO_init(true);\r\n cc.fx.AudioManager._instance.playEffect(\"zhuan1\",null);\r\n this.node.parent.parent.parent.getChildByName(\"zhuanchang\").active = true;\r\n this.node.parent.parent.parent.getChildByName(\"zhuanchang\").getComponent(sp.Skeleton).setAnimation(1,\"up\",false);\r\n // this.node.parent.parent.parent.getChildByName(\"zhuanchang\").getComponent(sp.Skeleton).setCompleteListener((entry) => {\r\n // if (entry.animation.name === \"up\") {\r\n // // 动画播放结束后执行的逻辑\r\n // this.node.parent.parent.parent.getChildByName(\"zhuanchang\").active = false;\r\n // }\r\n // });\r\n\r\n cc.director.preloadScene(\"HomeScene\", (err, asset) => {\r\n if (err) {\r\n console.error('动态加载 Prefab 失败:', err);\r\n return;\r\n }\r\n });\r\n setTimeout(() => {\r\n cc.director.loadScene(\"HomeScene\");\r\n }, 1200);\r\n } \r\n else{\r\n \r\n // console.log(\"下一关\");\r\n // MapConroler._instance = null;\r\n \r\n if(this.new_mode == 3){\r\n this.node.parent.parent.getChildByName(\"Win\").active = false;\r\n this.openNewMode(2);\r\n cc.fx.GameConfig.LEVEL_INFO_init(false,0);\r\n return;\r\n }\r\n cc.fx.AudioManager._instance.playEffect(\"zhuan1\",null);\r\n this.node.parent.parent.parent.getChildByName(\"zhuanchang\").active = true;\r\n this.node.parent.parent.parent.getChildByName(\"zhuanchang\").getComponent(sp.Skeleton).setAnimation(1,\"up\",false);\r\n // this.node.parent.parent.parent.getChildByName(\"zhuanchang\").getComponent(sp.Skeleton).setCompleteListener((entry) => {\r\n // if (entry.animation.name === \"up\") {\r\n // // 动画播放结束后执行的逻辑\r\n // this.node.parent.parent.parent.getChildByName(\"zhuanchang\").active = false;\r\n // }\r\n // });\r\n setTimeout(() => {\r\n cc.fx.GameConfig.LEVEL_INFO_init(true,0);\r\n }, 1200);\r\n \r\n // this.node.parent.parent.parent.destroy();\r\n \r\n }\r\n }\r\n\r\n againLevel(){\r\n cc.fx.AudioManager._instance.playEffect(\"anniu_Big\",null);\r\n if(cc.fx.GameConfig.GM_INFO.hp < 1){\r\n MiniGameSdk.API.showToast(\"体力值不足\");\r\n return;\r\n } \r\n if(!this.againCanTouch) return;\r\n \r\n this.againCanTouch = false;\r\n \r\n // MapConroler._instance = null;\r\n cc.fx.AudioManager._instance.playEffect(\"zhuan1\",null);\r\n this.node.parent.parent.parent.getChildByName(\"zhuanchang\").active = true;\r\n this.node.parent.parent.parent.getChildByName(\"zhuanchang\").getComponent(sp.Skeleton).setAnimation(1,\"up\",false);\r\n // this.node.parent.parent.parent.getChildByName(\"zhuanchang\").getComponent(sp.Skeleton).setCompleteListener((entry) => {\r\n // if (entry.animation.name === \"up\") {\r\n // // 动画播放结束后执行的逻辑\r\n // this.node.parent.parent.parent.getChildByName(\"zhuanchang\").active = false;\r\n // }\r\n // });\r\n setTimeout(() => {\r\n cc.fx.GameConfig.LEVEL_INFO_init(true,0);\r\n }, 1200);\r\n // this.node.parent.parent.parent.destroy();\r\n }\r\n\r\n reviewLevel(){\r\n cc.fx.AudioManager._instance.playEffect(\"anniu_Big\",null);\r\n let coin = 900;\r\n if(cc.fx.GameConfig.GM_INFO.review == 1) coin = 1900;\r\n else if(cc.fx.GameConfig.GM_INFO.review == 2) coin = 2500;\r\n // console.log(\"自身金币:\",cc.fx.GameConfig.GM_INFO.coin,\"消耗金币:\",coin);\r\n if(cc.fx.GameConfig.GM_INFO.coin < Math.abs(coin)){\r\n MiniGameSdk.API.showToast(\"金币不足,无法加时间\");\r\n return;\r\n }\r\n else{\r\n this.runRewive(-coin);\r\n }\r\n }\r\n\r\n runRewive(data){\r\n console.log(\"复活回调函数内\",data);\r\n cc.fx.GameTool.changeCoin(data);\r\n MiniGameSdk.API.showToast(\"继续游戏\");\r\n \r\n if(cc.fx.GameConfig.GM_INFO.review < 2)\r\n cc.fx.GameConfig.GM_INFO.review += 1;\r\n \r\n this.gameOver = false;\r\n this.timeNumber = 21;\r\n this.add_Time += 20;\r\n this.pause = false;\r\n this.node.parent.parent.getChildByName(\"Lose\").active = false;\r\n this.startTimeCutDown();\r\n }\r\n\r\n\r\n \r\n homeBtn(){\r\n // alert(\"游戏失败\");\r\n cc.fx.AudioManager._instance.playEffect(\"anniu_Big\",null);\r\n if(!this.homeCanTouch) return;\r\n this.homeCanTouch = false;\r\n this.node.parent.parent.getChildByName(\"Lose\").active = true;\r\n this.node.parent.parent.getChildByName(\"Lose\").getChildByName(\"Time\").active = false;\r\n this.node.parent.parent.getChildByName(\"Lose\").getChildByName(\"Boom\").active = false;\r\n this.node.parent.parent.getChildByName(\"Lose\").getChildByName(\"Lock\").active = false;\r\n this.node.parent.parent.getChildByName(\"Lose\").getChildByName(\"Health\").active = true;\r\n let data = {\r\n time:this.count_Time, \r\n add_Time:this.add_Time,\r\n result:\"fail\"\r\n }\r\n cc.fx.GameTool.shushu_Track(\"finish_stage\",data);\r\n if(this.gameStart == true){\r\n cc.fx.GameTool.setUserHealth(-1,(data)=>{\r\n })\r\n }\r\n // this.node.parent.parent.parent.destroy();\r\n }\r\n\r\n returnHome(){\r\n cc.fx.AudioManager._instance.playEffect(\"anniu_Big\",null);\r\n if(MapConroler._instance = null){\r\n return;\r\n }\r\n // MiniGameSdk.API.showToast(\"体力值减少\");\r\n // MapConroler._instance = null;\r\n cc.fx.GameConfig.LEVEL_INFO_init(false,0);\r\n if(this.new_mode == 3){\r\n this.node.parent.parent.getChildByName(\"Win\").active = false;\r\n this.openNewMode(1);\r\n return;\r\n }\r\n cc.fx.AudioManager._instance.playEffect(\"zhuan1\",null);\r\n this.node.parent.parent.parent.getChildByName(\"zhuanchang\").active = true;\r\n this.node.parent.parent.parent.getChildByName(\"zhuanchang\").getComponent(sp.Skeleton).setAnimation(1,\"up\",false);\r\n cc.director.preloadScene(\"HomeScene\", (err, asset) => {\r\n if (err) {\r\n console.error('动态加载 Prefab 失败:', err);\r\n return;\r\n }\r\n \r\n });\r\n\r\n setTimeout(() => {\r\n cc.director.loadScene(\"HomeScene\");\r\n }, 1200);\r\n }\r\n\r\n //判断游戏失败\r\n failLevel(type){\r\n this.stopTimeCutDown();\r\n if(this.gameOver== true ||this.gameWin == true){\r\n return;\r\n }\r\n\r\n let time = 0;\r\n this.gameOver = true;\r\n if(type == \"boom\"){\r\n time = 2000;\r\n }\r\n setTimeout(() => {\r\n this.node.parent.parent.getChildByName(\"Lose\").active = true;\r\n this.node.parent.parent.getChildByName(\"Lose\").getChildByName(\"Time\").active = true;\r\n this.node.parent.parent.getChildByName(\"Lose\").getChildByName(\"Boom\").active = false;\r\n let buyBtn = this.node.parent.parent.getChildByName(\"Lose\").getChildByName(\"Time\").getChildByName(\"buyBtn\");\r\n buyBtn.getChildByName(\"coin1\").active = buyBtn.getChildByName(\"coin2\").active = buyBtn.getChildByName(\"coin3\").active =false; \r\n if(cc.fx.GameConfig.GM_INFO.review == 0)buyBtn.getChildByName(\"coin1\").active = true;\r\n else if(cc.fx.GameConfig.GM_INFO.review == 1) buyBtn.getChildByName(\"coin2\").active = true;\r\n else if(cc.fx.GameConfig.GM_INFO.review == 2) buyBtn.getChildByName(\"coin3\").active = true;\r\n if(type){\r\n if(type == \"boom\"){\r\n this.node.parent.parent.getChildByName(\"Lose\").getChildByName(\"Time\").active = false;\r\n this.node.parent.parent.getChildByName(\"Lose\").getChildByName(\"Boom\").active = true;\r\n }\r\n }\r\n }, time);\r\n \r\n // console.log(\"游戏失败\");\r\n }\r\n\r\n //打开新模式弹窗\r\n openNewMode(type){\r\n let index = 0;\r\n const BLOCKS_PER_FRAME = 5; // 每帧销毁的方块数量\r\n const destroyBlocks = () => {\r\n const endIndex = Math.min(index + BLOCKS_PER_FRAME, this.blocks.length);\r\n for (; index < endIndex; index++) {\r\n if (this.blocks[index]) {\r\n this.blocks[index].destroy();\r\n }\r\n }\r\n // 如果还有方块未销毁,下一帧继续\r\n if (index < this.blocks.length) {\r\n this.scheduleOnce(destroyBlocks, 0);\r\n } else {\r\n }\r\n };\r\n // 开始分帧销毁方块\r\n destroyBlocks();\r\n this.node.parent.parent.getChildByName(\"NewMode\").active = true;\r\n this.node.parent.parent.getChildByName(\"NewMode\").getComponent(\"NewMode\").setMode(type);\r\n }\r\n\r\n \r\n downDoor(color,type){\r\n for(let i=0; i{\r\n })\r\n let data = {\r\n id:\"2001\",\r\n num:-1\r\n }\r\n cc.fx.GameTool.shushu_Track(\"resource_cost\",data);\r\n }\r\n else MiniGameSdk.API.showToast(\"道具使用中,请稍后再试\");\r\n }\r\n }\r\n\r\n\r\n }\r\n\r\n //解开时间冻结\r\n openIce(){\r\n if(this.node.parent.getChildByName(\"Ice\").active){\r\n this.freezeMask.active = false;\r\n let freezeBtn = this.node.parent.getChildByName(\"Bottom\").getChildByName(\"timeBtn\");\r\n freezeBtn.getComponent(\"btnControl\").setTouch(true);\r\n this.node.parent.getChildByName(\"Ice\").active = false;\r\n this.node.parent.getChildByName(\"Top\").getChildByName(\"Ice\").active = false;\r\n this.pause = false;\r\n // this.startTimeCutDown();\r\n }\r\n }\r\n \r\n handleBuySuccess(data){\r\n this.pause = false;\r\n const timestamp = Date.now();\r\n // console.log(\"回调函数内:\",this.pause);\r\n let freezeBtn = this.node.parent.getChildByName(\"Bottom\").getChildByName(\"timeBtn\");\r\n let hammerBtn = this.node.parent.getChildByName(\"Bottom\").getChildByName(\"destroyBtn\");\r\n let magicBtn = this.node.parent.getChildByName(\"Bottom\").getChildByName(\"magicBtn\");\r\n if(data == \"freezeAmount\") freezeBtn.getComponent(\"btnControl\").setTouch(true);\r\n else if(data == \"hammerAmount\") hammerBtn.getComponent(\"btnControl\").setTouch(true); \r\n else if(data == \"magicAmount\") magicBtn.getComponent(\"btnControl\").setTouch(true);\r\n if(data == \"freezeAmount\"){\r\n cc.fx.GameConfig.GM_INFO.freezeAmount += 3;\r\n let propInfo = cc.fx.StorageMessage.getStorage(\"prop\");\r\n propInfo.freezeAmount = cc.fx.GameConfig.GM_INFO.freezeAmount;\r\n propInfo.timestamp = timestamp;\r\n cc.fx.StorageMessage.setStorage(\"prop\",propInfo);\r\n this.node.parent.parent.parent.getComponent(\"SceneManager\").closePropBuy();\r\n setTimeout(() => {\r\n this.iceLabel.string = cc.fx.GameConfig.GM_INFO.freezeAmount.toString();\r\n MiniGameSdk.API.showToast(\"购买冻结时间道具成功\");\r\n }, 200);\r\n\r\n \r\n }\r\n else if(data == \"magicAmount\"){\r\n cc.fx.GameConfig.GM_INFO.magicAmount += 3;\r\n let propInfo = cc.fx.StorageMessage.getStorage(\"prop\");\r\n propInfo.magicAmount = cc.fx.GameConfig.GM_INFO.magicAmount;\r\n propInfo.timestamp = timestamp;\r\n cc.fx.StorageMessage.setStorage(\"prop\",propInfo);\r\n this.node.parent.parent.parent.getComponent(\"SceneManager\").closePropBuy();\r\n setTimeout(() => {\r\n MiniGameSdk.API.showToast(\"购买锤子道具成功\");\r\n this.magicLabel.string = cc.fx.GameConfig.GM_INFO.magicAmount.toString();\r\n }, 200);\r\n \r\n }\r\n else if(data == \"hammerAmount\"){\r\n cc.fx.GameConfig.GM_INFO.hammerAmount += 3;\r\n let propInfo = cc.fx.StorageMessage.getStorage(\"prop\");\r\n propInfo.hammerAmount = cc.fx.GameConfig.GM_INFO.hammerAmount;\r\n propInfo.timestamp = timestamp;\r\n cc.fx.StorageMessage.setStorage(\"prop\",propInfo);\r\n this.node.parent.parent.parent.getComponent(\"SceneManager\").closePropBuy();\r\n setTimeout(() => {\r\n this.hammerLabel.string = cc.fx.GameConfig.GM_INFO.hammerAmount.toString();\r\n MiniGameSdk.API.showToast(\"购买魔法棒道具成功\");\r\n }, 200);\r\n\r\n }\r\n \r\n \r\n\r\n }\r\n\r\n //使用锤子道具\r\n useHammer(){\r\n if(this.node.parent.getChildByName(\"Ice\").active == true || this.hammer == true \r\n || this.magicMask.active== true || this.timeNumber <= 1){\r\n return;\r\n }\r\n let hammerBtn = this.node.parent.getChildByName(\"Bottom\").getChildByName(\"destroyBtn\");\r\n if(hammerBtn.getComponent(\"btnControl\")._touch){\r\n hammerBtn.getComponent(\"btnControl\").setTouch(false);\r\n if(cc.fx.GameConfig.GM_INFO.hammerAmount < 1){\r\n if(cc.fx.GameConfig.GM_INFO.coin < 1500){\r\n MiniGameSdk.API.showToast(\"金币不足,无法购买道具\");\r\n hammerBtn.getComponent(\"btnControl\").setTouch(true);\r\n return;\r\n }\r\n this.node.parent.parent.getChildByName(\"propWindow\").active = true;\r\n this.node.parent.parent.parent.getComponent(\"SceneManager\").openPropBuy(\"hammer\");\r\n }\r\n else{\r\n if(!this.hammer){\r\n const timestamp = Date.now();\r\n this.hammerMask.active = true;\r\n\r\n this.hammer = true;\r\n cc.fx.GameConfig.GM_INFO.hammerAmount -= 1;\r\n if(cc.fx.GameConfig.GM_INFO.hammerAmount < 0) \r\n cc.fx.GameConfig.GM_INFO.hammerAmount = 0;\r\n this.hammerLabel.string = cc.fx.GameConfig.GM_INFO.hammerAmount.toString();\r\n let propInfo = cc.fx.StorageMessage.getStorage(\"prop\");\r\n console.log(\"锤子道具信息:\",propInfo);\r\n propInfo.hammerAmount = cc.fx.GameConfig.GM_INFO.hammerAmount;\r\n propInfo.timestamp = timestamp;\r\n cc.fx.StorageMessage.setStorage(\"prop\",propInfo);\r\n cc.fx.GameTool.setUserProp(2002,cc.fx.GameConfig.GM_INFO.hammerAmount,(data)=>{\r\n })\r\n let data = {\r\n id:\"2002\",\r\n num:-1\r\n }\r\n cc.fx.GameTool.shushu_Track(\"resource_cost\",data);\r\n }\r\n else MiniGameSdk.API.showToast(\"道具使用中,请稍后再试\");\r\n }\r\n\r\n }\r\n\r\n }\r\n \r\n buyMagic(){\r\n if(cc.fx.GameConfig.GM_INFO.coin < 1500){\r\n MiniGameSdk.API.showToast(\"金币不足,无法购买道具\");\r\n return;\r\n }\r\n cc.fx.GameTool.buyProp(2003,this.handleBuySuccess.bind(this,\"magicAmount\"));\r\n }\r\n\r\n buyHammer(){\r\n if(cc.fx.GameConfig.GM_INFO.coin < 1500){\r\n MiniGameSdk.API.showToast(\"金币不足,无法购买道具\");\r\n return;\r\n }\r\n cc.fx.GameTool.buyProp(2002, this.handleBuySuccess.bind(this,\"hammerAmount\"));\r\n }\r\n\r\n buyFreeze(){\r\n if(cc.fx.GameConfig.GM_INFO.coin < 1500){\r\n MiniGameSdk.API.showToast(\"金币不足,无法购买道具\");\r\n return;\r\n }\r\n cc.fx.GameTool.buyProp(2001,this.handleBuySuccess.bind(this,\"freezeAmount\"));\r\n }\r\n\r\n //使用魔法棒随机消除两个方块\r\n useMagic(){\r\n if(this.node.parent.getChildByName(\"Ice\").active == true || this.hammer == true \r\n || this.magicMask.active== true || this.timeNumber <= 1){\r\n return;\r\n }\r\n let magicBtn = this.node.parent.getChildByName(\"Bottom\").getChildByName(\"magicBtn\");\r\n if(magicBtn.getComponent(\"btnControl\")._touch){\r\n magicBtn.getComponent(\"btnControl\").setTouch(false);\r\n if(cc.fx.GameConfig.GM_INFO.magicAmount < 1){\r\n if(cc.fx.GameConfig.GM_INFO.coin < 1500){\r\n MiniGameSdk.API.showToast(\"金币不足,无法购买道具\");\r\n magicBtn.getComponent(\"btnControl\").setTouch(true);\r\n return;\r\n }\r\n this.node.parent.parent.getChildByName(\"propWindow\").active = true;\r\n this.node.parent.parent.parent.getComponent(\"SceneManager\").openPropBuy(\"magic\");\r\n // MiniGameSdk.API.showToast(\"魔法棒数量不足,自动购买魔法棒\");\r\n }\r\n else{\r\n const timestamp = Date.now();\r\n this.magicMask.active = true;\r\n setTimeout(() => {\r\n this.magicMask.active = false;\r\n magicBtn.getComponent(\"btnControl\").setTouch(true);\r\n }, 1000);\r\n \r\n cc.fx.GameConfig.GM_INFO.magicAmount -= 1;\r\n if(cc.fx.GameConfig.GM_INFO.magicAmount < 0) \r\n cc.fx.GameConfig.GM_INFO.magicAmount = 0;\r\n this.magicLabel.string = cc.fx.GameConfig.GM_INFO.magicAmount.toString();\r\n let propInfo = cc.fx.StorageMessage.getStorage(\"prop\");\r\n propInfo.magicAmount = cc.fx.GameConfig.GM_INFO.magicAmount;\r\n propInfo.timestamp = timestamp;\r\n cc.fx.StorageMessage.setStorage(\"prop\",propInfo);\r\n cc.fx.GameTool.setUserProp(2003,cc.fx.GameConfig.GM_INFO.magicAmount,(data)=>{\r\n })\r\n let data = {\r\n id:\"2003\",\r\n num:-1\r\n }\r\n cc.fx.GameTool.shushu_Track(\"resource_cost\",data);\r\n let nomalArray = [];\r\n // this.magicBtn.node.active = false;\r\n for(let i =0; i 1){\r\n nomalArray = cc.fx.GameTool.shuffleArray(nomalArray);\r\n nomalArray[0].getComponent(\"Block\").eliminate();\r\n let time = 0;\r\n if(nomalArray[0].getComponent(\"Block\").type == 1 || nomalArray[0].getComponent(\"Block\").type == 9){\r\n time = 200;\r\n }\r\n if(time > 0){\r\n setTimeout(() => {\r\n nomalArray[1].getComponent(\"Block\").eliminate();\r\n }, time);\r\n return;\r\n }\r\n else{\r\n nomalArray[1].getComponent(\"Block\").eliminate();\r\n return;\r\n }\r\n }\r\n else if(nomalArray.length == 1){\r\n nomalArray[0].getComponent(\"Block\").eliminate();\r\n let time = 0;\r\n if(nomalArray[0].getComponent(\"Block\").type == 1 || nomalArray[0].getComponent(\"Block\").type == 9){\r\n time = 200;\r\n }\r\n setTimeout(() => {\r\n if(this.freezeArray.length == 0 && this.loackArray.length == 0){\r\n // console.log(\"只剩下一个块道具使用完毕\");\r\n }\r\n else{\r\n if(this.loackArray.length != 0){\r\n // console.log(\"消除一个普通块后,消除一个带锁块\");\r\n this.loackArray[0].getComponent(\"Block\").eliminate();\r\n return;\r\n }\r\n else if(this.freezeArray.length!= 0){\r\n // console.log(\"消除一个普通块后,消除一个冻结块\");\r\n this.freezeArray[0].getComponent(\"Block\").eliminate();\r\n return; \r\n }\r\n }\r\n }, 200+time);\r\n }\r\n else{\r\n let count = 2;\r\n if(this.loackArray.length!= 0){\r\n for(let i=0; i {\r\n if(count != 0){\r\n for(let i=0; i 13){\r\n this.node.scale = 1;\r\n }\r\n\r\n // this.node.scale = 1;\r\n cc.fx.GameConfig.GM_INFO.scale = this.node.scale;\r\n // this.node.scale = 0.5;\r\n // console.log(this.node.scale);\r\n // this.node.scale = 1;\r\n }\r\n\r\n //创建门的粒子特效\r\n createParticle(block,jg){\r\n let particle = cc.instantiate(MapConroler._instance.Block_Prop[9]);\r\n particle.parent = this.node;\r\n particle.zIndex = 1000;\r\n let width = Math.floor(block.width / 120);\r\n let height = Math.floor(block.height / 120);\r\n let name = \"\";\r\n\r\n if(jg == 0 || jg == 1){\r\n let y = block.y + block.height;\r\n let x = block.x - block.width/2;\r\n name = \"top_\" + width + \"_\" + height;\r\n if(jg == 1){\r\n name = \"bot_\" + width + \"_\" + height;\r\n y = block.y;\r\n }\r\n if(block.anchorX == 0.5){\r\n x = block.x;\r\n }\r\n else if(block.anchorX == 0.33){\r\n x = block.x + block.width*(0.5-0.33);\r\n }\r\n else if(block.anchorX == 0.66){\r\n x = block.x + block.width*(0.5-0.66); \r\n }\r\n particle.setPosition(x, y); \r\n } \r\n else if(jg == 2 || jg == 3){\r\n name = \"left_\" + height + \"_\" + width;\r\n let x = block.x - block.width;\r\n let y = block.y + block.height/2;\r\n if(block.anchorX == 0.5){\r\n x = block.x - block.width/2;\r\n }\r\n else if(block.anchorX == 0.33){\r\n x = block.x - block.width*0.33;\r\n }\r\n else if(block.anchorX == 0.66){\r\n x = block.x + block.width*0.66; \r\n }\r\n if(jg == 3){\r\n name = \"right_\" + height + \"_\" + width;\r\n x = block.x;\r\n if(block.anchorX == 0.5){\r\n x = block.x + block.width/2;\r\n }\r\n else if(block.anchorX == 0.33){\r\n x = block.x + block.width*0.66;\r\n }\r\n else if(block.anchorX == 0.66){\r\n x = block.x + block.width*0.33; \r\n }\r\n }\r\n\r\n particle.setPosition(x, y); \r\n } \r\n\r\n let particleNode = particle.getChildByName(name);\r\n let color = block.getComponent(\"Block\").color - 1;\r\n\r\n particleNode.getComponent(cc.ParticleSystem).spriteFrame = particle.getComponent(\"Reduce\").Block_Color[color];\r\n particleNode.active = true;\r\n setTimeout(() => {\r\n cc.tween(particle)\r\n .to(2, {opacity: 0})\r\n .call(() => {\r\n particle.destroy(); \r\n })\r\n .start();\r\n }, 1200);\r\n }\r\n\r\n removeOneBlock() {\r\n // 移除所有方块\r\n for(let i =0 ; i = [];\r\n\r\n @property({ type: [cc.Prefab], tooltip: \"方块道具数组\" })\r\n Block_Prop: Array = [];\r\n\r\n @property(cc.Prefab)\r\n MapBlockPrefab: cc.Prefab = null;\r\n\r\n @property({ type: [cc.SpriteAtlas], tooltip: \"方块颜色\" })\r\n Block_Color: Array = [];\r\n\r\n\r\n @property({ type: [cc.Prefab], tooltip: \"墙壁数组\" })\r\n Wall_Prefab: Array = [];\r\n\r\n\r\n\r\n @property(cc.Prefab)\r\n wallTurnPrefab: cc.Prefab = null;\r\n\r\n @property(cc.Button)\r\n timeBtn: cc.Button = null;\r\n @property(cc.Button)\r\n destroyBtn: cc.Button = null;\r\n @property(cc.Button)\r\n magicBtn: cc.Button = null;\r\n\r\n @property(cc.Node)\r\n mask: cc.Node = null;\r\n\r\n @property(cc.Label)\r\n iceLabel: cc.Label = null;\r\n @property(cc.Label)\r\n hammerLabel: cc.Label = null;\r\n @property(cc.Label)\r\n magicLabel: cc.Label = null;\r\n\r\n @property(cc.Node)\r\n magicMask: cc.Node = null;\r\n\r\n @property(cc.Node)\r\n hammerMask: cc.Node = null;\r\n\r\n @property(cc.Node)\r\n freezeMask: cc.Node = null;\r\n\r\n\r\n @property(cc.Node)\r\n coinPop: cc.Node = null;\r\n\r\n timeLabel: cc.Node = null;\r\n levelLabel: cc.Node = null;\r\n\r\n new_mode: number = 0;\r\n mapWidth: number = 0;\r\n mapHeight: number = 0;\r\n wallNum: number = 0;\r\n blockNum: number = 0;\r\n mapBlocksWall: any; //地图的所有底块\r\n mapInfo: any; //地图除了底块的其他信息\r\n blocks: any; //方块数组\r\n wallInfo: any; //墙壁数组\r\n wallArray: any; //\r\n openWall: any; //开关墙数组\r\n freezeWall: any; //冻结墙数组\r\n riseFallBlcok: any; //升降地块数组\r\n scheduleCallback: any;//倒计时用\r\n homeCanTouch: boolean = true;//按钮可用状态\r\n againCanTouch: boolean = true;//重玩按钮可以用状态\r\n gameOver: boolean = false;//游戏结束状态\r\n gameWin: boolean = false;//游戏胜利状态\r\n gameStart: boolean = false;//游戏开始状态\r\n timeNumber: number = 0; //游戏时间 用于倒计时\r\n count_Time: number = 0; //用于统计总游戏时长\r\n add_Time: number = 0; //复活时间\r\n mapBlockArray: any; //地图的所有格子状态存储\r\n pause: boolean = false;//暂停状态\r\n hammer: boolean = false;//锤子状态\r\n freezeArray: any; //冻结\r\n loackArray: any; //上锁\r\n particleEffects: cc.ParticleAsset[];\r\n // leftDoors: []; //左门\r\n rightDoors: any; //右门\r\n topDoors: any; //上门\r\n bottomDoors: any; //下门\r\n leftDoors: any;\r\n\r\n\r\n // mapInfo: number[][] = [];\r\n\r\n onLoad() {\r\n\r\n cc.fx.GameConfig.GM_INFO.review = 0;\r\n cc.fx.GameConfig.GM_INFO.gameState = true;\r\n this.mask.opacity = 0;\r\n this.node.getChildByName(\"Adhesive\").zIndex = 500;\r\n cc.game.setFrameRate(63);\r\n cc.fx.AudioManager._instance.playEffect(\"zhuan2\", null);\r\n this.node.parent.parent.parent.getChildByName(\"zhuanchang\").active = true;\r\n this.node.parent.parent.parent.getChildByName(\"zhuanchang\").getComponent(sp.Skeleton).setAnimation(1, \"down\", false);\r\n this.node.parent.parent.parent.getChildByName(\"zhuanchang\").getComponent(sp.Skeleton).setCompleteListener((entry) => {\r\n if (entry.animation.name === \"down\") {\r\n // 动画播放结束后执行的逻辑\r\n this.node.parent.parent.parent.getChildByName(\"zhuanchang\").active = false;\r\n }\r\n });\r\n this.blocks = [];\r\n this.leftDoors = []; //左门\r\n this.rightDoors = []; //右门\r\n this.topDoors = []; //上门\r\n this.bottomDoors = []; //下门\r\n this.gameWin = false;\r\n this.gameOver = false;\r\n this.gameStart = false;\r\n this.homeCanTouch = true;\r\n this.againCanTouch = true;\r\n this.new_mode = 0;\r\n\r\n this.iceLabel.string = cc.fx.GameConfig.GM_INFO.freezeAmount.toString();\r\n this.hammerLabel.string = cc.fx.GameConfig.GM_INFO.hammerAmount.toString();\r\n this.magicLabel.string = cc.fx.GameConfig.GM_INFO.magicAmount.toString();\r\n\r\n // cc.game.addPersistRootNode(this.node);\r\n MapConroler._instance = this;\r\n }\r\n\r\n start() {\r\n setTimeout(() => {\r\n cc.director.preloadScene(\"HomeScene\", (err, asset) => {\r\n if (err) {\r\n console.error('动态加载 HomeScene 失败:', err);\r\n return;\r\n }\r\n });\r\n }, 1000);\r\n // console.log(\"进入GameScene\");\r\n this.Block_Array = GameManager._instance.Block_Array;\r\n this.Wall_Prefab = GameManager._instance.Wall_Prefab;\r\n this.Block_Color = GameManager._instance.Block_Color;\r\n // this.particleEffects = GameManager._instance.particleEffects;\r\n\r\n this.initMap();\r\n\r\n }\r\n\r\n startUpdate() {\r\n if (this.gameStart == false) {\r\n this.gameStart = true;\r\n //发送数数事件——进入关卡\r\n console.log(\"准备进入下一关,发送下一关进入\");\r\n cc.fx.GameTool.shushu_Track(\"enter_stage\");\r\n this.startTimeCutDown();\r\n for (let i = 0; i < this.blocks.length; i++) {\r\n if (this.blocks[i].getComponent(\"Block\").type == 6) {\r\n this.blocks[i].getChildByName(\"boom\").getComponent(\"Boom\").startBoom();\r\n }\r\n }\r\n }\r\n }\r\n\r\n initMap() {\r\n // this.node.getChildByName(\"Wall\").zIndex = 10;\r\n this.timeLabel = this.node.parent.getChildByName(\"Top\").getChildByName(\"time\");\r\n this.levelLabel = this.node.parent.getChildByName(\"Top\").getChildByName(\"level\");\r\n this.timeNumber = cc.fx.GameConfig.LEVEL_INFO[0].time;\r\n this.count_Time = 0;\r\n this.add_Time = 0;\r\n NumberToImage.getTimeMargin(this.timeNumber, 50, \"time_\", this.timeLabel)\r\n // var timeTemp = cc.fx.GameTool.getTimeMargin(this.timeNumber);\r\n // this.timeLabel.string = timeTemp.toString();\r\n NumberToImage.numberToImageNodes((cc.fx.GameConfig.GM_INFO.level + 1), 50, 20, \"level_\", this.levelLabel, false)\r\n\r\n //this.startTimeCutDown();\r\n\r\n this.mapWidth = cc.fx.GameConfig.LEVEL_INFO[0].map[0];\r\n this.mapHeight = cc.fx.GameConfig.LEVEL_INFO[0].map[1];\r\n let gap = cc.fx.GameConfig.LEVEL_INFO[0].gap;\r\n let risefall = cc.fx.GameConfig.LEVEL_INFO[0].risefall;\r\n\r\n this.pause = false;\r\n this.hammer = false;\r\n this.wallNum = 0;\r\n this.setMapInfo();\r\n this.blocks = [];\r\n this.mapBlocksWall = [];\r\n this.mapInfo = [];\r\n this.wallInfo = [];\r\n this.openWall = [];\r\n this.wallArray = [];\r\n this.freezeWall = [];\r\n this.riseFallBlcok = [];\r\n this.mapBlockArray = [];\r\n this.freezeArray = [];\r\n this.loackArray = [];\r\n\r\n\r\n let startX = this.mapWidth % 2 == 0 ? -(this.mapWidth - 1) * 60 : -(this.mapWidth - 1) * 60;\r\n let startY = this.mapHeight % 2 == 0 ? -(this.mapHeight - 1) * 60 : -(this.mapHeight - 1) * 60;\r\n // startX =(this.mapWidth-1)*60 + 60;\r\n // startY =-(this.mapHeight-1)*60 - 60;\r\n\r\n for (let i = 0; i < this.mapWidth; i++) {\r\n this.mapBlocksWall[i] = [];\r\n\r\n for (let j = 0; j < this.mapHeight; j++) {\r\n let block = cc.instantiate(this.MapBlockPrefab);\r\n block.parent = this.node.getChildByName(\"mapBlock\");\r\n block.getComponent(\"MapBlock\").init(i, j);\r\n // block.getChildByName(\"num\").getComponent(cc.Label).string = i + \":\" + j;\r\n block.setPosition(cc.v2(startX + i * 120, startY + j * 120))\r\n if (risefall != null) {\r\n if (this.mapRiseFall(cc.v2(i, j), risefall, block)) {\r\n this.riseFallBlcok.push(block);\r\n }\r\n }\r\n if (gap != null) {\r\n if (!this.mapGap(cc.v2(i, j), gap) || i == 0 || i == this.mapWidth - 1\r\n || j == 0 || j == this.mapHeight - 1) {\r\n block.opacity = 254;\r\n block.removeComponent(cc.Sprite);\r\n block.removeAllChildren();\r\n this.wallInfo.push(block);\r\n }\r\n else this.mapInfo.push(block);\r\n }\r\n else {\r\n if (i == 0 || i == this.mapWidth - 1\r\n || j == 0 || j == this.mapHeight - 1) {\r\n block.opacity = 254;\r\n block.removeComponent(cc.Sprite);\r\n block.removeAllChildren();\r\n this.wallInfo.push(block);\r\n }\r\n else this.mapInfo.push(block);\r\n }\r\n\r\n this.mapBlocksWall[i].push(block);\r\n }\r\n }\r\n\r\n this.wallInit();\r\n this.blockInit();\r\n\r\n }\r\n\r\n //创建方块\r\n // ... 已有代码 ...\r\n\r\n //创建方块\r\n // ... 已有代码 ...\r\n\r\n\r\n\r\n\r\n blockInit() {\r\n let blockArray = cc.fx.GameConfig.BLOCK_INFO[0];\r\n blockArray = this.sortBlock(blockArray);\r\n console.log(\"创建方块\", blockArray);\r\n let index = 0; // 当前要创建的方块索引\r\n let BLOCKS_PER_FRAME = 1; // 初始每帧创建的方块数量\r\n const MAX_PER_FRAME = 10; // 每帧最大创建数量\r\n const MIN_PER_FRAME = 1; // 每帧最小创建数量\r\n\r\n const createBlocks = () => {\r\n const startTime = performance.now();\r\n for (let i = 0; i < BLOCKS_PER_FRAME && index < blockArray.length; i++) {\r\n let blockInfo = blockArray[index];\r\n // 缓存 Block_Array 访问\r\n const blockPrefab = this.Block_Array[blockInfo.block];\r\n let block = cc.instantiate(blockPrefab);\r\n block.parent = this.node;\r\n block.setPosition(cc.v2(blockInfo.position.x, blockInfo.position.y));\r\n if (blockInfo.block != 23) {\r\n this.blockNum += 1;\r\n this.blocks.push(block);\r\n if (blockInfo.type == 1) {\r\n let info = {\r\n id: blockInfo.id + 1,\r\n block: blockInfo.block,\r\n color: blockInfo.stacking,\r\n type: 10,\r\n position: blockInfo.position,\r\n stacking: blockInfo.color\r\n };\r\n // 缓存 Block_Array 访问\r\n const blockUpPrefab = this.Block_Array[info.block];\r\n let blockUp = cc.instantiate(blockUpPrefab);\r\n blockUp.parent = this.node;\r\n blockUp.setPosition(cc.v2(info.position.x, info.position.y));\r\n\r\n this.blocks.push(blockUp);\r\n block.getComponent(\"Block\").init(blockInfo, null, null, blockUp);\r\n blockUp.getComponent(\"Block\").init(info, null, null, block);\r\n\r\n this.blockNum += 1;\r\n } else if (blockInfo.type == 9) {\r\n if (blockInfo.adhesiveTime < 2) {\r\n index++;\r\n continue;\r\n }\r\n index++;\r\n let info = blockArray[index];\r\n // 缓存 Block_Array 访问\r\n const blockUpPrefab = this.Block_Array[info.block];\r\n let blockUp = cc.instantiate(blockUpPrefab);\r\n blockUp.parent = this.node;\r\n blockUp.setPosition(cc.v2(info.position.x, info.position.y));\r\n\r\n this.blocks.push(blockUp);\r\n block.getComponent(\"Block\").init(blockInfo, null, null, blockUp, false);\r\n setTimeout(() => {\r\n blockUp.getComponent(\"Block\").init(info, null, null, block, true);\r\n }, 100);\r\n this.blockNum += 1;\r\n } else {\r\n block.getComponent(\"Block\").init(blockInfo);\r\n }\r\n }\r\n else {\r\n block.getComponent(\"Barrier\").init(blockInfo);\r\n }\r\n index++;\r\n }\r\n const endTime = performance.now();\r\n const frameTime = endTime - startTime;\r\n // 如果当前帧执行时间过长,减少每帧创建数量\r\n if (frameTime > 16) {\r\n BLOCKS_PER_FRAME = Math.max(BLOCKS_PER_FRAME - 1, MIN_PER_FRAME);\r\n } else {\r\n BLOCKS_PER_FRAME = Math.min(BLOCKS_PER_FRAME + 1, MAX_PER_FRAME);\r\n }\r\n\r\n // 如果还有方块未创建,下一帧继续创建\r\n if (index < blockArray.length) {\r\n // 使用 scheduleOnce 在下一帧执行 createBlocks\r\n this.scheduleOnce(() => {\r\n createBlocks();\r\n }, 0);\r\n } else {\r\n\r\n }\r\n };\r\n\r\n // 开始分帧创建方块\r\n createBlocks();\r\n }\r\n //给创建方块排序,用来降低drawcall 合批\r\n sortBlock(allBlocks: { color: number; block: number; type: number }[]) {\r\n return allBlocks.sort((a, b) => {\r\n // 先处理 type 为 1 的情况,将其放到最后\r\n if (a.type === 1 && b.type !== 1) {\r\n return 1;\r\n }\r\n if (a.type !== 1 && b.type === 1) {\r\n return -1;\r\n }\r\n\r\n // 对 type 不为 0 的元素按 type 排序\r\n if (a.type !== 0 && b.type !== 0) {\r\n return a.type - b.type;\r\n }\r\n if (a.type !== 0 && b.type === 0) {\r\n return 1;\r\n }\r\n if (a.type === 0 && b.type !== 0) {\r\n return -1;\r\n }\r\n\r\n // 再处理 block 为 23 的情况,将其放到最前面\r\n if (a.block === 23 && b.block !== 23) {\r\n return -1;\r\n }\r\n if (a.block !== 23 && b.block === 23) {\r\n return 1;\r\n }\r\n\r\n // 其余按 color 升序排列\r\n return a.color - b.color;\r\n });\r\n }\r\n\r\n\r\n //创建墙壁\r\n\r\n wallInit() {\r\n let index = 0; // 当前要创建的墙壁索引\r\n let WALLS_PER_FRAME = 1; // 初始每帧创建的墙壁数量\r\n const MAX_PER_FRAME = 10; // 每帧最大创建数量\r\n const MIN_PER_FRAME = 1; // 每帧最小创建数量\r\n\r\n const createWalls = () => {\r\n const startTime = performance.now();\r\n for (let i = 0; i < WALLS_PER_FRAME && index < this.wallInfo.length; i++) {\r\n let block = this.wallInfo[index];\r\n let dir = this.getWllDiraction(\"wall\", cc.v2(block.getComponent(\"MapBlock\").posX, block.getComponent(\"MapBlock\").posY));\r\n if (dir != null) {\r\n this.createWall(dir, block);\r\n }\r\n index++;\r\n }\r\n const endTime = performance.now();\r\n const frameTime = endTime - startTime;\r\n // 如果当前帧执行时间过长,减少每帧创建数量\r\n if (frameTime > 16) {\r\n WALLS_PER_FRAME = Math.max(WALLS_PER_FRAME - 1, MIN_PER_FRAME);\r\n } else {\r\n WALLS_PER_FRAME = Math.min(WALLS_PER_FRAME + 1, MAX_PER_FRAME);\r\n }\r\n\r\n // 如果还有墙壁未创建,下一帧继续创建\r\n if (index < this.wallInfo.length) {\r\n this.scheduleOnce(() => {\r\n createWalls();\r\n }, 0);\r\n } else {\r\n // 所有墙壁创建完成后,创建拐角节点\r\n this.createCornerNodes();\r\n }\r\n };\r\n\r\n // 开始分帧创建墙壁\r\n createWalls();\r\n }\r\n\r\n // ... 已有代码 ...\r\n\r\n getWllDiraction(type, pointA) {\r\n let dir = [];\r\n let pointB = cc.v2(pointA.x + 1, pointA.y);\r\n let pointC = cc.v2(pointA.x - 1, pointA.y);\r\n let pointD = cc.v2(pointA.x, pointA.y + 1);\r\n let pointE = cc.v2(pointA.x, pointA.y - 1);\r\n let opacity = 0;\r\n if (type == \"wall\") opacity = 255;\r\n if (type == \"turn\") opacity = 250;\r\n\r\n if (pointB.x < this.mapWidth) {\r\n if (this.mapBlocksWall[pointB.x][pointB.y].opacity == opacity) {\r\n if (type == \"turn\" && this.mapBlocksWall[pointB.x][pointB.y].getComponent(\"MapBlock\").direction == \"right\") {\r\n\r\n }\r\n else dir.push(\"right\");\r\n }\r\n }\r\n if (pointC.x >= 0) {\r\n if (this.mapBlocksWall[pointC.x][pointC.y].opacity == opacity) {\r\n if (type == \"turn\" && this.mapBlocksWall[pointC.x][pointC.y].getComponent(\"MapBlock\").direction == \"left\") {\r\n\r\n }\r\n else dir.push(\"left\");\r\n }\r\n }\r\n if (pointD.y < this.mapHeight) {\r\n if (this.mapBlocksWall[pointD.x][pointD.y].opacity == opacity) {\r\n if (type == \"turn\" && this.mapBlocksWall[pointD.x][pointD.y].getComponent(\"MapBlock\").direction == \"up\") {\r\n\r\n }\r\n else dir.push(\"up\");\r\n }\r\n }\r\n if (pointE.y >= 0) {\r\n if (this.mapBlocksWall[pointE.x][pointE.y].opacity == opacity) {\r\n if (type == \"turn\" && this.mapBlocksWall[pointE.x][pointE.y].getComponent(\"MapBlock\").direction == \"down\") {\r\n\r\n }\r\n else dir.push(\"down\");\r\n }\r\n }\r\n if (dir.length > 2) {\r\n\r\n return null;\r\n }\r\n if (dir.length == 1) {\r\n if (type == \"wall\")\r\n return dir[0];\r\n else\r\n return null;\r\n }\r\n else if (dir.length == 2) {\r\n return dir[0] + dir[1];\r\n }\r\n }\r\n\r\n createCornerNodes() {\r\n // 定义拐角位置\r\n for (let i = 0; i < this.wallInfo.length; i++) {\r\n let block = this.wallInfo[i];\r\n if (block.opacity != 250) {\r\n let dir = this.getWllDiraction(\"turn\", cc.v2(block.getComponent(\"MapBlock\").posX, block.getComponent(\"MapBlock\").posY));\r\n if (dir != null) {\r\n this.createTurn(dir, block, block.getComponent(\"MapBlock\").posX, block.getComponent(\"MapBlock\").posY);\r\n }\r\n }\r\n\r\n }\r\n\r\n }\r\n\r\n createWall(direction, node) {\r\n let wall = null;\r\n node.getComponent(\"MapBlock\").setDiraction(direction);\r\n switch (direction) {\r\n case \"right\":\r\n node.opacity = 250;\r\n wall = cc.instantiate(this.Wall_Prefab[4]);\r\n this.leftDoors.push(wall);\r\n // wall.parent = this.node.getChildByName(\"Wall\");\r\n wall.parent = this.node;\r\n wall.setPosition(cc.v2(node.x, node.y));\r\n node.opacity = 250;\r\n wall.getChildByName(\"wall\").getComponent(\"Wall\").init(null, node.getComponent(\"MapBlock\").posX, node.getComponent(\"MapBlock\").posY, direction);\r\n //wall.getChildByName(\"wall\").getChildByName(\"num\").getComponent(cc.Label).string = this.wallNum.toString();\r\n this.setDoorInfo(wall.getChildByName(\"wall\"));\r\n this.wallNum += 1;\r\n if (wall.getChildByName(\"wall\").getComponent(\"Wall\").special == 2)\r\n this.openWall.push(wall);\r\n else if (wall.getChildByName(\"wall\").getComponent(\"Wall\").special == 3)\r\n this.freezeWall.push(wall);\r\n\r\n break;\r\n case \"left\":\r\n node.opacity = 250;\r\n wall = cc.instantiate(this.Wall_Prefab[3]);\r\n // wall.parent = this.node.getChildByName(\"Wall\");\r\n this.rightDoors.push(wall);\r\n wall.parent = this.node;\r\n wall.setPosition(cc.v2(node.x, node.y));\r\n wall.getChildByName(\"wall\").getComponent(\"Wall\").init(null, node.getComponent(\"MapBlock\").posX, node.getComponent(\"MapBlock\").posY, direction);\r\n this.setDoorInfo(wall.getChildByName(\"wall\"));\r\n //wall.getChildByName(\"wall\").getChildByName(\"num\").getComponent(cc.Label).string = this.wallNum.toString();\r\n this.wallNum += 1;\r\n if (wall.getChildByName(\"wall\").getComponent(\"Wall\").special == 2)\r\n this.openWall.push(wall);\r\n else if (wall.getChildByName(\"wall\").getComponent(\"Wall\").special == 3)\r\n this.freezeWall.push(wall);\r\n break;\r\n case \"up\":\r\n node.opacity = 250;\r\n wall = cc.instantiate(this.Wall_Prefab[5]);\r\n\r\n this.topDoors.push(wall);\r\n // wall.parent = this.node.getChildByName(\"Wall\");\r\n wall.parent = this.node;\r\n wall.setPosition(cc.v2(node.x, node.y));\r\n\r\n wall.getChildByName(\"wall\").getComponent(\"Wall\").init(null, node.getComponent(\"MapBlock\").posX, node.getComponent(\"MapBlock\").posY, direction);\r\n this.setDoorInfo(wall.getChildByName(\"wall\"));\r\n //wall.getChildByName(\"wall\").getChildByName(\"num\").getComponent(cc.Label).string = this.wallNum.toString();\r\n this.wallNum += 1;\r\n if (wall.getChildByName(\"wall\").getComponent(\"Wall\").special == 2)\r\n this.openWall.push(wall);\r\n else if (wall.getChildByName(\"wall\").getComponent(\"Wall\").special == 3)\r\n this.freezeWall.push(wall);\r\n break;\r\n case \"down\":\r\n node.opacity = 250;\r\n wall = cc.instantiate(this.Wall_Prefab[0]);\r\n this.bottomDoors.push(wall);\r\n // wall.parent = this.node.getChildByName(\"Wall\");\r\n wall.parent = this.node;\r\n wall.setPosition(cc.v2(node.x, node.y));\r\n // this.setDoorInfo(wall.getChildByName(\"wall\"));\r\n wall.getChildByName(\"wall\").getComponent(\"Wall\").init(null, node.getComponent(\"MapBlock\").posX, node.getComponent(\"MapBlock\").posY, direction);\r\n this.setDoorInfo(wall.getChildByName(\"wall\"));\r\n //wall.getChildByName(\"wall\").getChildByName(\"num\").getComponent(cc.Label).string = this.wallNum.toString();\r\n this.wallNum += 1;\r\n if (wall.getChildByName(\"wall\").getComponent(\"Wall\").special == 2)\r\n this.openWall.push(wall);\r\n else if (wall.getChildByName(\"wall\").getComponent(\"Wall\").special == 3)\r\n this.freezeWall.push(wall);\r\n break;\r\n case \"upright\": case \"rightup\":\r\n node.opacity = 249;\r\n wall = cc.instantiate(this.Wall_Prefab[7]);\r\n // wall.parent = this.node.getChildByName(\"Wall\");\r\n wall.parent = this.node;\r\n wall.setPosition(cc.v2(node.x, node.y));\r\n wall.children[1].getComponent(\"Wall\").init(null, node.getComponent(\"MapBlock\").posX, node.getComponent(\"MapBlock\").posY, direction);\r\n wall.children[2].getComponent(\"Wall\").init(null, node.getComponent(\"MapBlock\").posX, node.getComponent(\"MapBlock\").posY, direction);\r\n //wall.children[0].getChildByName(\"num\").getComponent(cc.Label).string = this.wallNum.toString();\r\n this.setDoorInfo(wall.children[0]);\r\n this.wallNum += 1;\r\n //wall.children[1].getChildByName(\"num\").getComponent(cc.Label).string = this.wallNum.toString();\r\n this.setDoorInfo(wall.children[1]);\r\n this.wallNum += 1;\r\n\r\n break;\r\n case \"upleft\": case \"leftup\":\r\n node.opacity = 249;\r\n wall = cc.instantiate(this.Wall_Prefab[6]);\r\n // wall.parent = this.node.getChildByName(\"Wall\");\r\n wall.parent = this.node;\r\n wall.setPosition(cc.v2(node.x, node.y));\r\n wall.children[1].getComponent(\"Wall\").init(null, node.getComponent(\"MapBlock\").posX, node.getComponent(\"MapBlock\").posY, direction);\r\n wall.children[2].getComponent(\"Wall\").init(null, node.getComponent(\"MapBlock\").posX, node.getComponent(\"MapBlock\").posY, direction);\r\n //wall.children[0].getChildByName(\"num\").getComponent(cc.Label).string = this.wallNum.toString();\r\n this.setDoorInfo(wall.children[0]);\r\n this.wallNum += 1;\r\n //wall.children[1].getChildByName(\"num\").getComponent(cc.Label).string = this.wallNum.toString();\r\n this.setDoorInfo(wall.children[1]);\r\n this.wallNum += 1;\r\n\r\n break;\r\n case \"downright\": case \"rightdown\":\r\n node.opacity = 249;\r\n wall = cc.instantiate(this.Wall_Prefab[2]);\r\n // wall.parent = this.node.getChildByName(\"Wall\");\r\n wall.parent = this.node;\r\n wall.setPosition(cc.v2(node.x, node.y));\r\n wall.children[1].getComponent(\"Wall\").init(null, node.getComponent(\"MapBlock\").posX, node.getComponent(\"MapBlock\").posY, direction);\r\n wall.children[2].getComponent(\"Wall\").init(null, node.getComponent(\"MapBlock\").posX, node.getComponent(\"MapBlock\").posY, direction);\r\n //wall.children[0].getChildByName(\"num\").getComponent(cc.Label).string = this.wallNum.toString();\r\n this.setDoorInfo(wall.children[0]);\r\n this.wallNum += 1;\r\n //wall.children[1].getChildByName(\"num\").getComponent(cc.Label).string = this.wallNum.toString();\r\n this.setDoorInfo(wall.children[1]);\r\n this.wallNum += 1;\r\n\r\n break;\r\n case \"downleft\": case \"leftdown\":\r\n node.opacity = 249;\r\n wall = cc.instantiate(this.Wall_Prefab[1]);\r\n // wall.parent = this.node.getChildByName(\"Wall\");\r\n wall.parent = this.node;\r\n wall.setPosition(cc.v2(node.x, node.y));\r\n wall.children[1].getComponent(\"Wall\").init(null, node.getComponent(\"MapBlock\").posX, node.getComponent(\"MapBlock\").posY, direction);\r\n wall.children[2].getComponent(\"Wall\").init(null, node.getComponent(\"MapBlock\").posX, node.getComponent(\"MapBlock\").posY, direction);\r\n //wall.children[0].getChildByName(\"num\").getComponent(cc.Label).string = this.wallNum.toString();\r\n this.setDoorInfo(wall.children[0]);\r\n this.wallNum += 1;\r\n //wall.children[1].getChildByName(\"num\").getComponent(cc.Label).string = this.wallNum.toString();\r\n this.setDoorInfo(wall.children[1]);\r\n this.wallNum += 1;\r\n\r\n break;\r\n\r\n }\r\n\r\n\r\n // if(wallTurn){\r\n // wallTurn.getComponent(\"wallTunr\").init(wall);\r\n // }\r\n }\r\n\r\n setDoorInfo(wall) {\r\n let doorInfo = cc.fx.GameConfig.WALL_INFO[0];\r\n\r\n if (doorInfo) {\r\n for (let j = 0; j < doorInfo.length; j++) {\r\n if (doorInfo[j].num == this.wallNum) {\r\n wall.getComponent(\"Wall\").init(doorInfo[j], null, null, null);\r\n this.wallArray.push(wall.parent);\r\n }\r\n }\r\n }\r\n }\r\n\r\n createTurn(direction, node, posX, posY) {\r\n let wall = null;\r\n wall = cc.instantiate(this.wallTurnPrefab);\r\n wall.parent = this.node;\r\n wall.setPosition(cc.v2(node.x, node.y));\r\n switch (direction) {\r\n case \"upright\": case \"rightup\":\r\n wall.angle = 0;\r\n wall.getChildByName(\"icon\").angle = 0;\r\n\r\n break;\r\n case \"upleft\": case \"leftup\":\r\n wall.angle = 90;\r\n wall.getChildByName(\"icon\").angle = -90;\r\n wall.getChildByName(\"icon\").y += 5;\r\n wall.getChildByName(\"icon\").x -= 1.3;\r\n break;\r\n case \"downright\": case \"rightdown\":\r\n wall.angle = 270;\r\n wall.getChildByName(\"icon\").angle = -270;\r\n wall.getChildByName(\"icon\").x += 2.5;\r\n wall.getChildByName(\"icon\").y += 1;\r\n break;\r\n case \"downleft\": case \"leftdown\":\r\n wall.angle = 180;\r\n wall.getChildByName(\"icon\").angle = -180;\r\n wall.getChildByName(\"icon\").x += 4.5;\r\n wall.getChildByName(\"icon\").y += 3.2;\r\n break;\r\n }\r\n\r\n // if(direction == \"rightdown\" || direction == \"downright\") {\r\n // wall.zIndex = 50 + posX - posY*3;\r\n // }\r\n // else \r\n // wall.zIndex = 50 + posX - posY*3;\r\n\r\n if (direction == \"up\" || direction == \"leftup\" || direction == \"upleft\"\r\n ) {\r\n wall.zIndex = 100 + posX - posY * 3;\r\n }\r\n else if (direction == \"rightup\" || direction == \"upright\" || direction == \"rightdown\" || direction == \"downright\" || direction == \"downleft\") {\r\n wall.zIndex = 30 + posX - posY * 3;\r\n }\r\n else if (direction == \"left\" || direction == \"leftdown\") {\r\n wall.zIndex = 70 + posX - posY * 3;\r\n }\r\n else wall.zIndex = 70 + posX - posY * 3;\r\n\r\n // wall.getChildByName(\"num\").angle = -wall.angle;\r\n //wall.getChildByName(\"num\").getComponent(cc.Label).string = direction;\r\n //wall.getChildByName(\"num\").getComponent(cc.Label).string = wall.zIndex+ \"\";\r\n // console.log(posX,posY,wall.zIndex);\r\n // this.wallNum += 1;\r\n // wall.getChildByName(\"num\").getComponent(cc.Label).string = this.wallNum + \"\";\r\n }\r\n\r\n //地图底块缺口判断\r\n mapGap(point, gap) {\r\n for (let i = 0; i < gap.length; i++) {\r\n if (point.x == gap[i].x && point.y == gap[i].y) {\r\n return false;\r\n }\r\n }\r\n return true;\r\n }\r\n\r\n //升降地块判断\r\n mapRiseFall(point, risefall, block) {\r\n for (let i = 0; i < risefall.length; i++) {\r\n if (point.x == risefall[i].pos.x && point.y == risefall[i].pos.y) {\r\n block.getChildByName(\"risefall\").active = true;\r\n block.getChildByName('risefall').getChildByName(\"color\").getComponent(cc.Label).string = risefall[i].color + \"\";\r\n block.getChildByName('risefall').addComponent(cc.BoxCollider);\r\n block.getChildByName('risefall').getComponent(cc.BoxCollider).size = cc.size(110, 110);\r\n return true;\r\n }\r\n }\r\n return false;\r\n }\r\n //升降地块\r\n changeRiseFall(color, down) {\r\n color = color.toString();\r\n for (let i = 0; i < this.riseFallBlcok.length; i++) {\r\n if (color == this.riseFallBlcok[i].getChildByName(\"risefall\").getChildByName(\"color\").getComponent(cc.Label).string) {\r\n if (down) {\r\n this.riseFallBlcok[i].getChildByName(\"risefall\").active = false;\r\n this.riseFallBlcok[i].getChildByName('risefall').removeComponent(cc.BoxCollider);\r\n }\r\n else {\r\n this.riseFallBlcok[i].getChildByName(\"risefall\").active = true;\r\n this.riseFallBlcok[i].getChildByName('risefall').addComponent(cc.BoxCollider);\r\n this.riseFallBlcok[i].getChildByName('risefall').getComponent(cc.BoxCollider).size = cc.size(110, 110);\r\n }\r\n }\r\n\r\n }\r\n }\r\n\r\n\r\n\r\n //查询叠加快id\r\n foundDownBlock(id) {\r\n for (let i = 0; i < this.blocks.length; i++) {\r\n if (this.blocks[i].getComponent(\"Block\").blockId == id) {\r\n return this.blocks[i];\r\n }\r\n }\r\n return null;\r\n }\r\n\r\n //删除块\r\n removeBlock(id) {\r\n for (let i = 0; i < this.blocks.length; i++) {\r\n if (this.blocks[i].getComponent(\"Block\").blockId == id) {\r\n return this.blocks[i];\r\n }\r\n }\r\n return null;\r\n }\r\n\r\n getMinAndMax(block) {\r\n let width = Math.floor(block.width / 120);\r\n let height = Math.floor(block.height / 120);\r\n\r\n let minX = width;\r\n let maxX = this.mapWidth - 2;\r\n let minY = 1;\r\n let maxY = this.mapHeight - 2 - height + 1;\r\n\r\n if (block.name == \"block10\") {\r\n minX = width - 1;\r\n if (this.mapWidth > 3) maxX = maxX - 1;\r\n }\r\n else if (block.name == \"block11\") {\r\n minX = width - 2;\r\n if (this.mapWidth > 3) maxX = maxX - 2;\r\n }\r\n\r\n else if (block.name == \"block14\") {\r\n minX = width - 1;\r\n maxX = maxX - 1;\r\n }\r\n else if (block.name == \"block16\") {\r\n minX = width - 1;\r\n maxX = maxX - 1;\r\n }\r\n else if (block.name == \"block18\") {\r\n minX = width - 1;\r\n maxX = maxX - 1;\r\n }\r\n else if (block.name == \"block21\") {\r\n minX = width - 1;\r\n maxX = maxX - 1;\r\n }\r\n\r\n return { minX: minX, maxX: maxX, minY: minY, maxY: maxY };\r\n }\r\n\r\n //检测落点是否可以消除\r\n checkPass(node, blocks) {\r\n let minAndMax = this.getMinAndMax(node);\r\n let minX = minAndMax.minX;\r\n let maxX = minAndMax.maxX;\r\n let minY = minAndMax.minY;\r\n let maxY = minAndMax.maxY;\r\n\r\n let nodePos = cc.v2(node.getComponent(\"Block\").posX, node.getComponent(\"Block\").posY);\r\n\r\n // 获取地图边界信息\r\n\r\n let allBlocks = [];\r\n for (let i = 0; i < blocks.length; i++) {\r\n allBlocks.push(cc.v2(nodePos.x + blocks[i].x, nodePos.y + blocks[i].y));\r\n }\r\n\r\n // const date1 = new Date().getTime();\r\n // console.log(\"将小块放入数组的时间\",date1);\r\n\r\n let jg = -1;\r\n let pz = 0;\r\n // 获取所有墙壁节点\r\n // let wall = this.node;\r\n let direction = this.checkDiraction(allBlocks, maxX, maxY);\r\n\r\n // 判断方块是否在地图边缘\r\n if (nodePos.x <= minX || direction[0] == true) {\r\n // const date2 = new Date().getTime();\r\n // console.log(\"碰到左边缘\",date2);\r\n pz += 1;\r\n let leftWalls = [];\r\n for (let i = 0; i < this.leftDoors.length; i++) {\r\n let wallLeft = this.leftDoors[i].getChildByName(\"wall\");\r\n let wallPos = cc.v2(wallLeft.getComponent(\"Wall\").posX, wallLeft.getComponent(\"Wall\").posY);\r\n for (let i = 0; i < allBlocks.length; i++) {\r\n if (allBlocks[i].y == wallPos.y && allBlocks[i].x > wallPos.x) {\r\n // console.log(\"id:\",wall.getChildByName(\"num\").getComponent(cc.Label).string);\r\n leftWalls.push(wallLeft);\r\n }\r\n }\r\n }\r\n // console.log(\"得到左边墙壁数组\",date6);\r\n if (leftWalls.length != 0) {\r\n let result = this.detectingBlock(\"left\", node.getComponent(\"Block\").posX, node.getComponent(\"Block\").posY, allBlocks);\r\n if (result == true) result = this.passWall(result, leftWalls, node);\r\n // console.log(\"碰到左边缘结果:\",jg);\r\n if (result) {\r\n\r\n this.blockNum -= 1;\r\n this.special_Treatment(node);\r\n jg = 2;\r\n this.createParticle(node, jg);\r\n return jg;\r\n }\r\n }\r\n }\r\n if (nodePos.x >= maxX || direction[1] == true) {\r\n // const date3 = new Date().getTime();\r\n // console.log(\"碰到右边缘\",date3);\r\n pz += 1;\r\n let rightWalls = [];\r\n for (let i = 0; i < this.rightDoors.length; i++) {\r\n let wallRight = this.rightDoors[i].getChildByName(\"wall\");\r\n let wallPos = cc.v2(wallRight.getComponent(\"Wall\").posX, wallRight.getComponent(\"Wall\").posY);\r\n for (let i = 0; i < allBlocks.length; i++) {\r\n if (allBlocks[i].y == wallPos.y && allBlocks[i].x < wallPos.x) {\r\n // console.log(\"id:\",wall.getChildByName(\"num\").getComponent(cc.Label).string);\r\n rightWalls.push(wallRight);\r\n }\r\n }\r\n }\r\n\r\n if (rightWalls.length != 0) {\r\n let result = this.detectingBlock(\"right\", node.getComponent(\"Block\").posX, node.getComponent(\"Block\").posY, allBlocks);\r\n\r\n if (result == true) result = this.passWall(result, rightWalls, node);\r\n // console.log(\"碰到右边缘结果:\",jg);\r\n if (result) {\r\n\r\n this.blockNum -= 1;\r\n this.special_Treatment(node);\r\n jg = 3;\r\n this.createParticle(node, jg);\r\n return jg;\r\n }\r\n }\r\n\r\n\r\n }\r\n if (nodePos.y <= minY || direction[2] == true) {\r\n pz += 1;\r\n // const date4 = new Date().getTime();\r\n // console.log(\"碰到下边缘\",date4);\r\n let downWalls = [];\r\n for (let i = 0; i < this.topDoors.length; i++) {\r\n let wallBottom = this.topDoors[i].getChildByName(\"wall\");\r\n let wallPos = cc.v2(wallBottom.getComponent(\"Wall\").posX, wallBottom.getComponent(\"Wall\").posY);\r\n for (let i = 0; i < allBlocks.length; i++) {\r\n let luocha = Math.abs(allBlocks[i].y - wallPos.y)\r\n if (allBlocks[i].x == wallPos.x && allBlocks[i].y > wallPos.y && luocha <= node.getComponent(\"Block\").shu) {\r\n // console.log(\"id:\",wall.getChildByName(\"num\").getComponent(cc.Label).string);\r\n downWalls.push(wallBottom);\r\n }\r\n }\r\n }\r\n\r\n if (downWalls.length != 0) {\r\n let result = this.detectingBlock(\"down\", node.getComponent(\"Block\").posX, node.getComponent(\"Block\").posY, allBlocks);\r\n if (result == true) result = this.passWall(result, downWalls, node);\r\n // console.log(\"碰到下边缘结果:\",jg);\r\n if (result) {\r\n\r\n this.blockNum -= 1;\r\n this.special_Treatment(node);\r\n jg = 1;\r\n this.createParticle(node, jg);\r\n return jg;\r\n }\r\n }\r\n\r\n\r\n }\r\n if (nodePos.y >= maxY || direction[3] == true) {\r\n pz += 1;\r\n // const date5 = new Date().getTime();\r\n // console.log(\"碰到上边缘\",date5);\r\n let upWalls = [];\r\n for (let i = 0; i < this.bottomDoors.length; i++) {\r\n let wallTop = this.bottomDoors[i].getChildByName(\"wall\");\r\n let wallPos = cc.v2(wallTop.getComponent(\"Wall\").posX, wallTop.getComponent(\"Wall\").posY);\r\n for (let i = 0; i < allBlocks.length; i++) {\r\n let luocha = Math.abs(allBlocks[i].y - wallPos.y)\r\n if (allBlocks[i].x == wallPos.x && allBlocks[i].y < wallPos.y && luocha <= node.getComponent(\"Block\").shu) {\r\n upWalls.push(wallTop);\r\n }\r\n }\r\n }\r\n\r\n if (upWalls.length != 0) {\r\n let result = this.detectingBlock(\"up\", node.getComponent(\"Block\").posX, node.getComponent(\"Block\").posY, allBlocks);\r\n if (result == true) result = this.passWall(result, upWalls, node);\r\n // console.log(\"碰到上边缘结果:\",result);\r\n if (result) {\r\n\r\n this.blockNum -= 1;\r\n this.special_Treatment(node);\r\n jg = 0;\r\n this.createParticle(node, jg);\r\n return jg;\r\n }\r\n }\r\n\r\n }\r\n if (pz == 0) jg = -1;\r\n // const date10 = new Date().getTime();\r\n // console.log(\"所有检测结束耗时\",date10,jg);\r\n return jg;\r\n }\r\n\r\n changeState() {\r\n if (this.openWall.length != 0) {\r\n for (let i = 0; i < this.openWall.length; i++) {\r\n this.openWall[i].getChildByName(\"wall\").getComponent(\"Wall\").changeLock();\r\n }\r\n }\r\n\r\n if (this.freezeWall.length != 0) {\r\n for (let i = 0; i < this.freezeWall.length; i++) {\r\n this.freezeWall[i].getChildByName(\"wall\").getComponent(\"Wall\").changeFreeze();\r\n }\r\n }\r\n }\r\n\r\n //检测是否可以通过门\r\n passWall(jg, wallArray, node) {\r\n for (let i = 0; i < wallArray.length; i++) {\r\n if (wallArray[i].getComponent(\"Wall\").special == 2) {\r\n console.log(\"尝试通过开关门:\", wallArray[i].getComponent(\"Wall\").open);\r\n }\r\n if (wallArray[i].getComponent(\"Wall\").special == 2 && wallArray[i].getComponent(\"Wall\").open == false) {\r\n jg = false;\r\n break;\r\n }\r\n //console.log(wallArray[i].getChildByName(\"wall\").getComponent(\"Wall\").color,node.getComponent(\"Block\").color)\r\n if (wallArray[i].getComponent(\"Wall\").color != node.getComponent(\"Block\").color) {\r\n\r\n jg = false;\r\n break;\r\n }\r\n if (node.getComponent(\"Block\").type == 5) {\r\n if (wallArray[i].getComponent(\"Wall\").special != 1) {\r\n jg = false;\r\n break;\r\n }\r\n }\r\n }\r\n if (jg == true && node.getComponent(\"Block\").type == 5) {\r\n for (let j = 0; j < wallArray.length; j++) {\r\n if (wallArray[j].getComponent(\"Wall\").special == 1 && wallArray[j].getComponent(\"Wall\").wall_Info.length != 0) {\r\n wallArray[j].getComponent(\"Wall\").playStarDoor();\r\n }\r\n }\r\n }\r\n // const date8 = new Date().getTime();\r\n // console.log(\"检测颜色是否能够通过门\",date8);\r\n return jg;\r\n }\r\n\r\n //检测方块和门中间有没有夹杂其他块\r\n detectingBlock(direction, posX, posY, blocks) {\r\n let jg = true;\r\n let id = \"\";\r\n if (blocks.length > 0) {\r\n for (let i = 0; i < blocks.length; i++) {\r\n let pos = blocks[i];\r\n let x = pos.x;\r\n let y = pos.y;\r\n id = this.mapBlocksWall[x][y].getComponent(\"MapBlock\").block_Id;\r\n jg = this.checkAllDirections(id, direction, x, y);\r\n if (!jg) {\r\n // console.log(\"方向检测没过\");\r\n i = 1000000;\r\n return jg;\r\n }\r\n }\r\n }\r\n // const date7 = new Date().getTime();\r\n // console.log(\"方向检测通过\",date7,jg);\r\n return jg;\r\n }\r\n\r\n //检测物体各方向是否有别的物块,防止碰到墙壁了但是是凹凸形状,墙与块之间有阻挡物块\r\n checkAllDirections(id, direction, x, y) {\r\n let jg = true;\r\n\r\n if (direction == \"left\") {\r\n if (this.mapBlocksWall[x - 1][y].getComponent(\"MapBlock\").block_Id != \"\" && this.mapBlocksWall[x - 1][y].getComponent(\"MapBlock\").block_Id != \"Wall\"\r\n && this.mapBlocksWall[x - 1][y].getComponent(\"MapBlock\").block_Id != id) {\r\n // console.log(\"左侧有物体\")\r\n jg = false;\r\n return jg;\r\n }\r\n if (this.mapBlocksWall[x - 1][y].opacity == 249) {\r\n jg = false;\r\n return jg;\r\n }\r\n if ((x - 2) >= 0) {\r\n if (this.mapBlocksWall[x - 2][y].getComponent(\"MapBlock\").block_Id != \"\" && this.mapBlocksWall[x - 2][y].getComponent(\"MapBlock\").block_Id != \"Wall\"\r\n && this.mapBlocksWall[x - 2][y].getComponent(\"MapBlock\").block_Id != id) {\r\n // console.log(\"左侧有物体\")\r\n jg = false;\r\n return jg;\r\n }\r\n if (this.mapBlocksWall[x - 2][y].opacity == 249) {\r\n jg = false;\r\n return jg;\r\n }\r\n }\r\n }\r\n else if (direction == \"right\") {\r\n if (this.mapBlocksWall[x + 1][y].getComponent(\"MapBlock\").block_Id != \"\" && this.mapBlocksWall[x + 1][y].getComponent(\"MapBlock\").block_Id != \"Wall\"\r\n && this.mapBlocksWall[x + 1][y].getComponent(\"MapBlock\").block_Id != id) {\r\n // console.log(\"右侧有物体\")\r\n jg = false;\r\n return jg;\r\n }\r\n if (this.mapBlocksWall[x + 1][y].opacity == 249) {\r\n jg = false;\r\n return jg;\r\n }\r\n if ((x + 2) <= this.mapBlocksWall.length - 1) {\r\n if (this.mapBlocksWall[x + 2][y].getComponent(\"MapBlock\").block_Id != \"\" && this.mapBlocksWall[x + 2][y].getComponent(\"MapBlock\").block_Id != \"Wall\"\r\n && this.mapBlocksWall[x + 2][y].getComponent(\"MapBlock\").block_Id != id) {\r\n // console.log(\"右侧有物体\")\r\n jg = false;\r\n return jg;\r\n }\r\n if (this.mapBlocksWall[x + 2][y].opacity == 249) {\r\n jg = false;\r\n return jg;\r\n }\r\n }\r\n }\r\n if (direction == \"up\") {\r\n if (this.mapBlocksWall[x][y + 1].getComponent(\"MapBlock\").block_Id != \"\" && this.mapBlocksWall[x][y + 1].getComponent(\"MapBlock\").block_Id != \"Wall\"\r\n && this.mapBlocksWall[x][y + 1].getComponent(\"MapBlock\").block_Id != id) {\r\n // console.log(\"上侧有物体\")\r\n jg = false;\r\n return jg;\r\n }\r\n if (this.mapBlocksWall[x][y + 1].opacity == 249) {\r\n jg = false;\r\n return jg;\r\n }\r\n if ((y + 2) <= this.mapBlocksWall[x].length - 1) {\r\n if (this.mapBlocksWall[x][y + 2].getComponent(\"MapBlock\").block_Id != \"\" && this.mapBlocksWall[x][y + 2].getComponent(\"MapBlock\").block_Id != \"Wall\"\r\n && this.mapBlocksWall[x][y + 2].getComponent(\"MapBlock\").block_Id != id) {\r\n // console.log(\"上侧有物体\")\r\n jg = false;\r\n return jg;\r\n }\r\n if (this.mapBlocksWall[x][y + 2].opacity == 249) {\r\n jg = false;\r\n return jg;\r\n }\r\n }\r\n }\r\n if (direction == \"down\") {\r\n if (this.mapBlocksWall[x][y - 1].getComponent(\"MapBlock\").block_Id != \"\" && this.mapBlocksWall[x][y - 1].getComponent(\"MapBlock\").block_Id != \"Wall\"\r\n && this.mapBlocksWall[x][y - 1].getComponent(\"MapBlock\").block_Id != id) {\r\n // console.log(\"下侧有物体\")\r\n jg = false;\r\n return jg;\r\n }\r\n if (this.mapBlocksWall[x][y - 1].opacity == 249) {\r\n jg = false;\r\n return jg;\r\n }\r\n if ((y - 2) >= 0) {\r\n if (this.mapBlocksWall[x][y - 2].getComponent(\"MapBlock\").block_Id != \"\" && this.mapBlocksWall[x][y - 2].getComponent(\"MapBlock\").block_Id != \"Wall\"\r\n && this.mapBlocksWall[x][y - 2].getComponent(\"MapBlock\").block_Id != id) {\r\n // console.log(\"下侧有物体\")\r\n jg = false;\r\n return jg;\r\n }\r\n if (this.mapBlocksWall[x][y - 2].opacity == 249) {\r\n jg = false;\r\n return jg;\r\n }\r\n }\r\n }\r\n // console.log(\"检测物体各方向是否有别的物块\",jg);\r\n return jg;\r\n }\r\n\r\n checkDiraction(allBlocks, maxX, maxY) {\r\n let jg = [false, false, false, false];\r\n for (let i = 0; i < allBlocks.length; i++) {\r\n if (allBlocks[i].x > 0 && jg[0] == false) {\r\n if (this.mapBlocksWall[allBlocks[i].x - 1][allBlocks[i].y].opacity == 250) {\r\n jg[0] = true;\r\n }\r\n }\r\n if (jg[1] == false) {\r\n if (this.mapBlocksWall[allBlocks[i].x + 1][allBlocks[i].y].opacity == 250) {\r\n jg[1] = true;\r\n }\r\n }\r\n if (allBlocks[i].y > 0 && jg[2] == false) {\r\n if (this.mapBlocksWall[allBlocks[i].x][allBlocks[i].y - 1].opacity == 250) {\r\n jg[2] = true;\r\n }\r\n }\r\n if (jg[3] == false) {\r\n if (this.mapBlocksWall[allBlocks[i].x][allBlocks[i].y + 1].opacity == 250) {\r\n jg[3] = true;\r\n }\r\n }\r\n }\r\n return jg;\r\n }\r\n\r\n checkLeft(allBlocks) {\r\n let jg = false;\r\n return jg;\r\n }\r\n\r\n checkRight(allBlocks, max) {\r\n let jg = false;\r\n for (let i = 0; i < allBlocks.length; i++) {\r\n\r\n }\r\n return jg;\r\n }\r\n\r\n checkDown(allBlocks) {\r\n let jg = false;\r\n for (let i = 0; i < allBlocks.length; i++) {\r\n\r\n }\r\n return jg;\r\n }\r\n\r\n checkUp(allBlocks, max) {\r\n let jg = false;\r\n for (let i = 0; i < allBlocks.length; i++) {\r\n\r\n }\r\n return jg;\r\n }\r\n\r\n\r\n //特殊处理,方块带道具或者需要消除冰块\r\n special_Treatment(node) {\r\n let freezeBlock = this.node.children.filter(child => {\r\n if (child.getComponent(\"Block\")) {\r\n if (child.getComponent(\"Block\").type == 4)\r\n return child\r\n }\r\n });\r\n if (freezeBlock.length > 0) {\r\n for (let i = 0; i < freezeBlock.length; i++) {\r\n freezeBlock[i].getChildByName(\"freeze\").getComponent(\"Freeze\").reduce(1);\r\n }\r\n }\r\n\r\n if (node.getComponent(\"Block\").type == 2 || node.getComponent(\"Block\").type == 4) {\r\n let lockBlock = this.node.children.filter(child => {\r\n if (child.getComponent(\"Block\")) {\r\n if (child.getComponent(\"Block\").type == 3)\r\n return child\r\n }\r\n });\r\n if (lockBlock.length > 0)\r\n for (let i = 0; i < lockBlock.length; i++) {\r\n lockBlock[i].getChildByName(\"lock\").getComponent(\"Lock\").reduce();\r\n }\r\n\r\n }\r\n\r\n for (let i = 0; i < this.blocks.length; i++) {\r\n if (this.blocks[i] == node) {\r\n this.blocks.splice(i, 1);\r\n }\r\n }\r\n\r\n }\r\n\r\n //判断游戏成功下一关\r\n nextLevel() {\r\n this.pause = false;\r\n this.openIce();\r\n\r\n this.blockNum = this.blocks.length;\r\n\r\n if (this.blockNum == 0 && !this.gameWin && !this.gameOver) {\r\n // alert(\"游戏成功\");\r\n this.gameWin = true;\r\n\r\n this.stopTimeCutDown();\r\n // console.log(\"成功消除一个\");\r\n cc.fx.GameTool.changeCoin(40);\r\n let timeData = {\r\n count_Time: this.count_Time,\r\n add_Time: this.add_Time\r\n }\r\n cc.fx.GameTool.addLevel(timeData);\r\n\r\n this.check_NewMode();\r\n setTimeout(() => {\r\n this.node.parent.parent.getChildByName(\"Win\").active = true;\r\n }, 660);\r\n // console.log(\"游戏成功\");\r\n }\r\n else {\r\n if (this.gameOver == true) {\r\n this.failLevel(null);\r\n }\r\n }\r\n }\r\n\r\n check_NewMode() {\r\n for (let i = 0; i < cc.fx.GameConfig.NEW_LEVEL.length; i++) {\r\n if ((cc.fx.GameConfig.GM_INFO.level + 1) == cc.fx.GameConfig.NEW_LEVEL[i].level) {\r\n this.new_mode = 3;\r\n }\r\n }\r\n }\r\n\r\n winLevel() {\r\n cc.fx.AudioManager._instance.playEffect(\"anniu_Big\", null);\r\n if (cc.fx.GameConfig.GM_INFO.level > 156) {\r\n cc.fx.GameConfig.GM_INFO.level = 156;\r\n MapConroler._instance = null;\r\n\r\n if (this.new_mode == 3) {\r\n this.node.parent.parent.getChildByName(\"Win\").active = false;\r\n this.openNewMode(2);\r\n cc.fx.GameConfig.LEVEL_INFO_init(false, 0);\r\n return;\r\n }\r\n // cc.fx.GameConfig.LEVEL_INFO_init(true);\r\n cc.fx.AudioManager._instance.playEffect(\"zhuan1\", null);\r\n this.node.parent.parent.parent.getChildByName(\"zhuanchang\").active = true;\r\n this.node.parent.parent.parent.getChildByName(\"zhuanchang\").getComponent(sp.Skeleton).setAnimation(1, \"up\", false);\r\n // this.node.parent.parent.parent.getChildByName(\"zhuanchang\").getComponent(sp.Skeleton).setCompleteListener((entry) => {\r\n // if (entry.animation.name === \"up\") {\r\n // // 动画播放结束后执行的逻辑\r\n // this.node.parent.parent.parent.getChildByName(\"zhuanchang\").active = false;\r\n // }\r\n // });\r\n\r\n cc.director.preloadScene(\"HomeScene\", (err, asset) => {\r\n if (err) {\r\n console.error('动态加载 Prefab 失败:', err);\r\n return;\r\n }\r\n });\r\n setTimeout(() => {\r\n cc.director.loadScene(\"HomeScene\");\r\n }, 1200);\r\n }\r\n else {\r\n\r\n // console.log(\"下一关\");\r\n MapConroler._instance = null;\r\n\r\n if (this.new_mode == 3) {\r\n this.node.parent.parent.getChildByName(\"Win\").active = false;\r\n this.openNewMode(2);\r\n cc.fx.GameConfig.LEVEL_INFO_init(false, 0);\r\n return;\r\n }\r\n cc.fx.AudioManager._instance.playEffect(\"zhuan1\", null);\r\n this.node.parent.parent.parent.getChildByName(\"zhuanchang\").active = true;\r\n this.node.parent.parent.parent.getChildByName(\"zhuanchang\").getComponent(sp.Skeleton).setAnimation(1, \"up\", false);\r\n // this.node.parent.parent.parent.getChildByName(\"zhuanchang\").getComponent(sp.Skeleton).setCompleteListener((entry) => {\r\n // if (entry.animation.name === \"up\") {\r\n // // 动画播放结束后执行的逻辑\r\n // this.node.parent.parent.parent.getChildByName(\"zhuanchang\").active = false;\r\n // }\r\n // });\r\n setTimeout(() => {\r\n cc.fx.GameConfig.LEVEL_INFO_init(true, 0);\r\n }, 1200);\r\n\r\n // this.node.parent.parent.parent.destroy();\r\n\r\n }\r\n }\r\n\r\n againLevel() {\r\n cc.fx.AudioManager._instance.playEffect(\"anniu_Big\", null);\r\n if (cc.fx.GameConfig.GM_INFO.hp < 1) {\r\n MiniGameSdk.API.showToast(\"体力值不足\");\r\n return;\r\n }\r\n if (!this.againCanTouch) return;\r\n\r\n this.againCanTouch = false;\r\n\r\n MapConroler._instance = null;\r\n cc.fx.AudioManager._instance.playEffect(\"zhuan1\", null);\r\n this.node.parent.parent.parent.getChildByName(\"zhuanchang\").active = true;\r\n this.node.parent.parent.parent.getChildByName(\"zhuanchang\").getComponent(sp.Skeleton).setAnimation(1, \"up\", false);\r\n // this.node.parent.parent.parent.getChildByName(\"zhuanchang\").getComponent(sp.Skeleton).setCompleteListener((entry) => {\r\n // if (entry.animation.name === \"up\") {\r\n // // 动画播放结束后执行的逻辑\r\n // this.node.parent.parent.parent.getChildByName(\"zhuanchang\").active = false;\r\n // }\r\n // });\r\n setTimeout(() => {\r\n cc.fx.GameConfig.LEVEL_INFO_init(true, 0);\r\n }, 1200);\r\n // this.node.parent.parent.parent.destroy();\r\n }\r\n\r\n reviewLevel() {\r\n cc.fx.AudioManager._instance.playEffect(\"anniu_Big\", null);\r\n let coin = 900;\r\n if (cc.fx.GameConfig.GM_INFO.review == 1) coin = 1900;\r\n else if (cc.fx.GameConfig.GM_INFO.review == 2) coin = 2500;\r\n // console.log(\"自身金币:\",cc.fx.GameConfig.GM_INFO.coin,\"消耗金币:\",coin);\r\n if (cc.fx.GameConfig.GM_INFO.coin < Math.abs(coin)) {\r\n MiniGameSdk.API.showToast(\"金币不足,无法加时间\");\r\n return;\r\n }\r\n else {\r\n this.runRewive(-coin);\r\n }\r\n }\r\n\r\n runRewive(data) {\r\n console.log(\"复活回调函数内\", data);\r\n cc.fx.GameTool.changeCoin(data);\r\n MiniGameSdk.API.showToast(\"继续游戏\");\r\n\r\n if (cc.fx.GameConfig.GM_INFO.review < 2)\r\n cc.fx.GameConfig.GM_INFO.review += 1;\r\n\r\n this.gameOver = false;\r\n this.timeNumber = 21;\r\n this.add_Time += 20;\r\n this.pause = false;\r\n this.node.parent.parent.getChildByName(\"Lose\").active = false;\r\n this.startTimeCutDown();\r\n }\r\n\r\n\r\n\r\n homeBtn() {\r\n // alert(\"游戏失败\");\r\n cc.fx.AudioManager._instance.playEffect(\"anniu_Big\", null);\r\n if (!this.homeCanTouch) return;\r\n this.homeCanTouch = false;\r\n this.node.parent.parent.getChildByName(\"Lose\").active = true;\r\n this.node.parent.parent.getChildByName(\"Lose\").getChildByName(\"Time\").active = false;\r\n this.node.parent.parent.getChildByName(\"Lose\").getChildByName(\"Boom\").active = false;\r\n this.node.parent.parent.getChildByName(\"Lose\").getChildByName(\"Lock\").active = false;\r\n this.node.parent.parent.getChildByName(\"Lose\").getChildByName(\"Health\").active = true;\r\n let data = {\r\n time: this.count_Time,\r\n add_Time: this.add_Time,\r\n result: \"fail\"\r\n }\r\n cc.fx.GameTool.shushu_Track(\"finish_stage\", data);\r\n if (this.gameStart == true) {\r\n cc.fx.GameTool.setUserHealth(-1, (data) => {\r\n })\r\n }\r\n // this.node.parent.parent.parent.destroy();\r\n }\r\n\r\n returnHome() {\r\n cc.fx.AudioManager._instance.playEffect(\"anniu_Big\", null);\r\n if (MapConroler._instance = null) {\r\n return;\r\n }\r\n // MiniGameSdk.API.showToast(\"体力值减少\");\r\n MapConroler._instance = null;\r\n cc.fx.GameConfig.LEVEL_INFO_init(false, 0);\r\n if (this.new_mode == 3) {\r\n this.node.parent.parent.getChildByName(\"Win\").active = false;\r\n this.openNewMode(1);\r\n return;\r\n }\r\n cc.fx.AudioManager._instance.playEffect(\"zhuan1\", null);\r\n this.node.parent.parent.parent.getChildByName(\"zhuanchang\").active = true;\r\n this.node.parent.parent.parent.getChildByName(\"zhuanchang\").getComponent(sp.Skeleton).setAnimation(1, \"up\", false);\r\n cc.director.preloadScene(\"HomeScene\", (err, asset) => {\r\n if (err) {\r\n console.error('动态加载 Prefab 失败:', err);\r\n return;\r\n }\r\n\r\n });\r\n\r\n setTimeout(() => {\r\n cc.director.loadScene(\"HomeScene\");\r\n }, 1200);\r\n }\r\n\r\n //判断游戏失败\r\n failLevel(type) {\r\n this.stopTimeCutDown();\r\n if (this.gameOver == true || this.gameWin == true) {\r\n return;\r\n }\r\n\r\n let time = 0;\r\n this.gameOver = true;\r\n if (type == \"boom\") {\r\n time = 2000;\r\n }\r\n setTimeout(() => {\r\n this.node.parent.parent.getChildByName(\"Lose\").active = true;\r\n this.node.parent.parent.getChildByName(\"Lose\").getChildByName(\"Time\").active = true;\r\n this.node.parent.parent.getChildByName(\"Lose\").getChildByName(\"Boom\").active = false;\r\n let buyBtn = this.node.parent.parent.getChildByName(\"Lose\").getChildByName(\"Time\").getChildByName(\"buyBtn\");\r\n buyBtn.getChildByName(\"coin1\").active = buyBtn.getChildByName(\"coin2\").active = buyBtn.getChildByName(\"coin3\").active = false;\r\n if (cc.fx.GameConfig.GM_INFO.review == 0) buyBtn.getChildByName(\"coin1\").active = true;\r\n else if (cc.fx.GameConfig.GM_INFO.review == 1) buyBtn.getChildByName(\"coin2\").active = true;\r\n else if (cc.fx.GameConfig.GM_INFO.review == 2) buyBtn.getChildByName(\"coin3\").active = true;\r\n if (type) {\r\n if (type == \"boom\") {\r\n this.node.parent.parent.getChildByName(\"Lose\").getChildByName(\"Time\").active = false;\r\n this.node.parent.parent.getChildByName(\"Lose\").getChildByName(\"Boom\").active = true;\r\n }\r\n }\r\n }, time);\r\n\r\n // console.log(\"游戏失败\");\r\n }\r\n\r\n //打开新模式弹窗\r\n openNewMode(type) {\r\n let index = 0;\r\n const BLOCKS_PER_FRAME = 5; // 每帧销毁的方块数量\r\n const destroyBlocks = () => {\r\n const endIndex = Math.min(index + BLOCKS_PER_FRAME, this.blocks.length);\r\n for (; index < endIndex; index++) {\r\n if (this.blocks[index]) {\r\n this.blocks[index].destroy();\r\n }\r\n }\r\n // 如果还有方块未销毁,下一帧继续\r\n if (index < this.blocks.length) {\r\n this.scheduleOnce(destroyBlocks, 0);\r\n } else {\r\n }\r\n };\r\n // 开始分帧销毁方块\r\n destroyBlocks();\r\n this.node.parent.parent.getChildByName(\"NewMode\").active = true;\r\n this.node.parent.parent.getChildByName(\"NewMode\").getComponent(\"NewMode\").setMode(type);\r\n }\r\n\r\n\r\n downDoor(color, type) {\r\n for (let i = 0; i < this.wallArray.length; i++) {\r\n if (this.wallArray[i].getChildByName(\"wall\").getComponent(\"Wall\").color == color) {\r\n if (type) {\r\n if (type == 5) {\r\n if (this.wallArray[i].getChildByName(\"wall\").getComponent(\"Wall\").special == 1) {\r\n this.wallArray[i].getChildByName(\"wall\").getComponent(\"Wall\").downDoor();\r\n }\r\n }\r\n else this.wallArray[i].getChildByName(\"wall\").getComponent(\"Wall\").downDoor();\r\n }\r\n else this.wallArray[i].getChildByName(\"wall\").getComponent(\"Wall\").downDoor();\r\n }\r\n }\r\n }\r\n\r\n upDoor() {\r\n for (let i = 0; i < this.wallArray.length; i++) {\r\n if (this.wallArray[i].getChildByName(\"wall\").opacity == 0) {\r\n this.wallArray[i].getChildByName(\"wall\").getComponent(\"Wall\").upDoor();\r\n }\r\n }\r\n }\r\n\r\n //开始倒计时\r\n startTimeCutDown() {\r\n this.scheduleCallback = function () {\r\n if (this.pause) return;\r\n if (this.timeNumber <= 0) {\r\n this.stopTimeCutDown();\r\n var timeTemp = cc.fx.GameTool.getTimeMargin(this.timeNumber);\r\n NumberToImage.getTimeMargin(this.timeNumber, 50, \"time_\", this.timeLabel)\r\n // this.timeLabel.string = timeTemp.toString();\r\n if (!this.pause) this.failLevel(\"time\");\r\n }\r\n else {\r\n this.timeNumber -= 1;\r\n this.count_Time += 1;\r\n var timeTemp = cc.fx.GameTool.getTimeMargin(this.timeNumber);\r\n NumberToImage.getTimeMargin(this.timeNumber, 50, \"time_\", this.timeLabel)\r\n // this.timeLabel.string = timeTemp.toString();\r\n }\r\n }.bind(this);\r\n this.schedule(this.scheduleCallback, 1);\r\n }\r\n // 停止倒计时\r\n stopTimeCutDown() {\r\n if (this.scheduleCallback) {\r\n this.unschedule(this.scheduleCallback);\r\n }\r\n }\r\n\r\n //使用时间道具\r\n useTimeProp() {\r\n if (this.node.parent.getChildByName(\"Ice\").active == true || this.hammer == true\r\n || this.magicMask.active == true || this.timeNumber <= 1) {\r\n return;\r\n }\r\n let freezeBtn = this.node.parent.getChildByName(\"Bottom\").getChildByName(\"timeBtn\");\r\n if (freezeBtn.getComponent(\"btnControl\")._touch) {\r\n freezeBtn.getComponent(\"btnControl\").setTouch(false);\r\n if (cc.fx.GameConfig.GM_INFO.freezeAmount < 1) {\r\n if (cc.fx.GameConfig.GM_INFO.coin < 1500) {\r\n MiniGameSdk.API.showToast(\"金币不足,无法购买道具\");\r\n freezeBtn.getComponent(\"btnControl\").setTouch(true);\r\n return;\r\n }\r\n this.node.parent.parent.getChildByName(\"propWindow\").active = true;\r\n this.node.parent.parent.parent.getComponent(\"SceneManager\").openPropBuy(\"freeze\");\r\n }\r\n else {\r\n if (!this.node.parent.getChildByName(\"Ice\").active && !this.pause) {\r\n const timestamp = Date.now();\r\n this.freezeMask.active = true;\r\n\r\n this.pause = true;\r\n this.node.parent.getChildByName(\"Ice\").active = true;\r\n this.node.parent.getChildByName(\"Top\").getChildByName(\"Ice\").active = true;\r\n\r\n cc.fx.GameConfig.GM_INFO.freezeAmount -= 1;\r\n if (cc.fx.GameConfig.GM_INFO.freezeAmount < 0)\r\n cc.fx.GameConfig.GM_INFO.freezeAmount = 0;\r\n this.iceLabel.string = cc.fx.GameConfig.GM_INFO.freezeAmount.toString();\r\n let propInfo = cc.fx.StorageMessage.getStorage(\"prop\");\r\n propInfo.freezeAmount = cc.fx.GameConfig.GM_INFO.freezeAmount;\r\n propInfo.timestamp = timestamp;\r\n cc.fx.StorageMessage.setStorage(\"prop\", propInfo);\r\n cc.fx.GameTool.setUserProp(2001, cc.fx.GameConfig.GM_INFO.freezeAmount, (data) => {\r\n })\r\n let data = {\r\n id: \"2001\",\r\n num: -1\r\n }\r\n cc.fx.GameTool.shushu_Track(\"resource_cost\", data);\r\n }\r\n else MiniGameSdk.API.showToast(\"道具使用中,请稍后再试\");\r\n }\r\n }\r\n\r\n\r\n }\r\n\r\n //解开时间冻结\r\n openIce() {\r\n if (this.node.parent.getChildByName(\"Ice\").active) {\r\n this.freezeMask.active = false;\r\n let freezeBtn = this.node.parent.getChildByName(\"Bottom\").getChildByName(\"timeBtn\");\r\n freezeBtn.getComponent(\"btnControl\").setTouch(true);\r\n this.node.parent.getChildByName(\"Ice\").active = false;\r\n this.node.parent.getChildByName(\"Top\").getChildByName(\"Ice\").active = false;\r\n this.pause = false;\r\n // this.startTimeCutDown();\r\n }\r\n }\r\n\r\n handleBuySuccess(data) {\r\n this.pause = false;\r\n const timestamp = Date.now();\r\n // console.log(\"回调函数内:\",this.pause);\r\n let freezeBtn = this.node.parent.getChildByName(\"Bottom\").getChildByName(\"timeBtn\");\r\n let hammerBtn = this.node.parent.getChildByName(\"Bottom\").getChildByName(\"destroyBtn\");\r\n let magicBtn = this.node.parent.getChildByName(\"Bottom\").getChildByName(\"magicBtn\");\r\n if (data == \"freezeAmount\") freezeBtn.getComponent(\"btnControl\").setTouch(true);\r\n else if (data == \"hammerAmount\") hammerBtn.getComponent(\"btnControl\").setTouch(true);\r\n else if (data == \"magicAmount\") magicBtn.getComponent(\"btnControl\").setTouch(true);\r\n if (data == \"freezeAmount\") {\r\n cc.fx.GameConfig.GM_INFO.freezeAmount += 3;\r\n let propInfo = cc.fx.StorageMessage.getStorage(\"prop\");\r\n propInfo.freezeAmount = cc.fx.GameConfig.GM_INFO.freezeAmount;\r\n propInfo.timestamp = timestamp;\r\n cc.fx.StorageMessage.setStorage(\"prop\", propInfo);\r\n this.node.parent.parent.parent.getComponent(\"SceneManager\").closePropBuy();\r\n setTimeout(() => {\r\n this.iceLabel.string = cc.fx.GameConfig.GM_INFO.freezeAmount.toString();\r\n MiniGameSdk.API.showToast(\"购买冻结时间道具成功\");\r\n }, 200);\r\n\r\n\r\n }\r\n else if (data == \"magicAmount\") {\r\n cc.fx.GameConfig.GM_INFO.magicAmount += 3;\r\n let propInfo = cc.fx.StorageMessage.getStorage(\"prop\");\r\n propInfo.magicAmount = cc.fx.GameConfig.GM_INFO.magicAmount;\r\n propInfo.timestamp = timestamp;\r\n cc.fx.StorageMessage.setStorage(\"prop\", propInfo);\r\n this.node.parent.parent.parent.getComponent(\"SceneManager\").closePropBuy();\r\n setTimeout(() => {\r\n MiniGameSdk.API.showToast(\"购买锤子道具成功\");\r\n this.magicLabel.string = cc.fx.GameConfig.GM_INFO.magicAmount.toString();\r\n }, 200);\r\n\r\n }\r\n else if (data == \"hammerAmount\") {\r\n cc.fx.GameConfig.GM_INFO.hammerAmount += 3;\r\n let propInfo = cc.fx.StorageMessage.getStorage(\"prop\");\r\n propInfo.hammerAmount = cc.fx.GameConfig.GM_INFO.hammerAmount;\r\n propInfo.timestamp = timestamp;\r\n cc.fx.StorageMessage.setStorage(\"prop\", propInfo);\r\n this.node.parent.parent.parent.getComponent(\"SceneManager\").closePropBuy();\r\n setTimeout(() => {\r\n this.hammerLabel.string = cc.fx.GameConfig.GM_INFO.hammerAmount.toString();\r\n MiniGameSdk.API.showToast(\"购买魔法棒道具成功\");\r\n }, 200);\r\n\r\n }\r\n\r\n\r\n\r\n }\r\n\r\n //使用锤子道具\r\n useHammer() {\r\n if (this.node.parent.getChildByName(\"Ice\").active == true || this.hammer == true\r\n || this.magicMask.active == true || this.timeNumber <= 1) {\r\n return;\r\n }\r\n let hammerBtn = this.node.parent.getChildByName(\"Bottom\").getChildByName(\"destroyBtn\");\r\n if (hammerBtn.getComponent(\"btnControl\")._touch) {\r\n hammerBtn.getComponent(\"btnControl\").setTouch(false);\r\n if (cc.fx.GameConfig.GM_INFO.hammerAmount < 1) {\r\n if (cc.fx.GameConfig.GM_INFO.coin < 1500) {\r\n MiniGameSdk.API.showToast(\"金币不足,无法购买道具\");\r\n hammerBtn.getComponent(\"btnControl\").setTouch(true);\r\n return;\r\n }\r\n this.node.parent.parent.getChildByName(\"propWindow\").active = true;\r\n this.node.parent.parent.parent.getComponent(\"SceneManager\").openPropBuy(\"hammer\");\r\n }\r\n else {\r\n if (!this.hammer) {\r\n const timestamp = Date.now();\r\n this.hammerMask.active = true;\r\n\r\n this.hammer = true;\r\n cc.fx.GameConfig.GM_INFO.hammerAmount -= 1;\r\n if (cc.fx.GameConfig.GM_INFO.hammerAmount < 0)\r\n cc.fx.GameConfig.GM_INFO.hammerAmount = 0;\r\n this.hammerLabel.string = cc.fx.GameConfig.GM_INFO.hammerAmount.toString();\r\n let propInfo = cc.fx.StorageMessage.getStorage(\"prop\");\r\n console.log(\"锤子道具信息:\", propInfo);\r\n propInfo.hammerAmount = cc.fx.GameConfig.GM_INFO.hammerAmount;\r\n propInfo.timestamp = timestamp;\r\n cc.fx.StorageMessage.setStorage(\"prop\", propInfo);\r\n cc.fx.GameTool.setUserProp(2002, cc.fx.GameConfig.GM_INFO.hammerAmount, (data) => {\r\n })\r\n let data = {\r\n id: \"2002\",\r\n num: -1\r\n }\r\n cc.fx.GameTool.shushu_Track(\"resource_cost\", data);\r\n }\r\n else MiniGameSdk.API.showToast(\"道具使用中,请稍后再试\");\r\n }\r\n\r\n }\r\n\r\n }\r\n\r\n buyMagic() {\r\n if (cc.fx.GameConfig.GM_INFO.coin < 1500) {\r\n MiniGameSdk.API.showToast(\"金币不足,无法购买道具\");\r\n return;\r\n }\r\n cc.fx.GameTool.buyProp(2003, this.handleBuySuccess.bind(this, \"magicAmount\"));\r\n }\r\n\r\n buyHammer() {\r\n if (cc.fx.GameConfig.GM_INFO.coin < 1500) {\r\n MiniGameSdk.API.showToast(\"金币不足,无法购买道具\");\r\n return;\r\n }\r\n cc.fx.GameTool.buyProp(2002, this.handleBuySuccess.bind(this, \"hammerAmount\"));\r\n }\r\n\r\n buyFreeze() {\r\n if (cc.fx.GameConfig.GM_INFO.coin < 1500) {\r\n MiniGameSdk.API.showToast(\"金币不足,无法购买道具\");\r\n return;\r\n }\r\n cc.fx.GameTool.buyProp(2001, this.handleBuySuccess.bind(this, \"freezeAmount\"));\r\n }\r\n\r\n //使用魔法棒随机消除两个方块\r\n useMagic() {\r\n if (this.node.parent.getChildByName(\"Ice\").active == true || this.hammer == true\r\n || this.magicMask.active == true || this.timeNumber <= 1) {\r\n return;\r\n }\r\n let magicBtn = this.node.parent.getChildByName(\"Bottom\").getChildByName(\"magicBtn\");\r\n if (magicBtn.getComponent(\"btnControl\")._touch) {\r\n magicBtn.getComponent(\"btnControl\").setTouch(false);\r\n if (cc.fx.GameConfig.GM_INFO.magicAmount < 1) {\r\n if (cc.fx.GameConfig.GM_INFO.coin < 1500) {\r\n MiniGameSdk.API.showToast(\"金币不足,无法购买道具\");\r\n magicBtn.getComponent(\"btnControl\").setTouch(true);\r\n return;\r\n }\r\n this.node.parent.parent.getChildByName(\"propWindow\").active = true;\r\n this.node.parent.parent.parent.getComponent(\"SceneManager\").openPropBuy(\"magic\");\r\n // MiniGameSdk.API.showToast(\"魔法棒数量不足,自动购买魔法棒\");\r\n }\r\n else {\r\n const timestamp = Date.now();\r\n this.magicMask.active = true;\r\n setTimeout(() => {\r\n this.magicMask.active = false;\r\n magicBtn.getComponent(\"btnControl\").setTouch(true);\r\n }, 1000);\r\n\r\n cc.fx.GameConfig.GM_INFO.magicAmount -= 1;\r\n if (cc.fx.GameConfig.GM_INFO.magicAmount < 0)\r\n cc.fx.GameConfig.GM_INFO.magicAmount = 0;\r\n this.magicLabel.string = cc.fx.GameConfig.GM_INFO.magicAmount.toString();\r\n let propInfo = cc.fx.StorageMessage.getStorage(\"prop\");\r\n propInfo.magicAmount = cc.fx.GameConfig.GM_INFO.magicAmount;\r\n propInfo.timestamp = timestamp;\r\n cc.fx.StorageMessage.setStorage(\"prop\", propInfo);\r\n cc.fx.GameTool.setUserProp(2003, cc.fx.GameConfig.GM_INFO.magicAmount, (data) => {\r\n })\r\n let data = {\r\n id: \"2003\",\r\n num: -1\r\n }\r\n cc.fx.GameTool.shushu_Track(\"resource_cost\", data);\r\n let nomalArray = [];\r\n // this.magicBtn.node.active = false;\r\n for (let i = 0; i < this.blocks.length; i++) {\r\n // console.log(\"方块类型\",this.blocks[i].getComponent(\"Block\").type);\r\n if (this.blocks[i].getComponent(\"Block\").type == 3) {\r\n this.loackArray.push(this.blocks[i]);\r\n }\r\n else if (this.blocks[i].getComponent(\"Block\").type == 4) {\r\n this.freezeArray.push(this.blocks[i]);\r\n }\r\n else if (this.blocks[i].getComponent(\"Block\").type == 10) {\r\n if (this.blocks[i].getComponent(\"Block\").block_Info.node) {\r\n nomalArray.push(this.blocks[i].getComponent(\"Block\").block_Info.node);\r\n }\r\n else nomalArray.push(this.blocks[i]);\r\n }\r\n else {\r\n nomalArray.push(this.blocks[i]);\r\n }\r\n }\r\n if (nomalArray.length > 1) {\r\n nomalArray = cc.fx.GameTool.shuffleArray(nomalArray);\r\n nomalArray[0].getComponent(\"Block\").eliminate();\r\n let time = 0;\r\n if (nomalArray[0].getComponent(\"Block\").type == 1 || nomalArray[0].getComponent(\"Block\").type == 9) {\r\n time = 200;\r\n }\r\n if (time > 0) {\r\n setTimeout(() => {\r\n nomalArray[1].getComponent(\"Block\").eliminate();\r\n }, time);\r\n return;\r\n }\r\n else {\r\n nomalArray[1].getComponent(\"Block\").eliminate();\r\n return;\r\n }\r\n }\r\n else if (nomalArray.length == 1) {\r\n nomalArray[0].getComponent(\"Block\").eliminate();\r\n let time = 0;\r\n if (nomalArray[0].getComponent(\"Block\").type == 1 || nomalArray[0].getComponent(\"Block\").type == 9) {\r\n time = 200;\r\n }\r\n setTimeout(() => {\r\n if (this.freezeArray.length == 0 && this.loackArray.length == 0) {\r\n // console.log(\"只剩下一个块道具使用完毕\");\r\n }\r\n else {\r\n if (this.loackArray.length != 0) {\r\n // console.log(\"消除一个普通块后,消除一个带锁块\");\r\n this.loackArray[0].getComponent(\"Block\").eliminate();\r\n return;\r\n }\r\n else if (this.freezeArray.length != 0) {\r\n // console.log(\"消除一个普通块后,消除一个冻结块\");\r\n this.freezeArray[0].getComponent(\"Block\").eliminate();\r\n return;\r\n }\r\n }\r\n }, 200 + time);\r\n }\r\n else {\r\n let count = 2;\r\n if (this.loackArray.length != 0) {\r\n for (let i = 0; i < this.loackArray.length; i++) {\r\n // console.log(\"没有普通快,魔法消除一个带锁块\");\r\n this.loackArray[i].getComponent(\"Block\").eliminate();\r\n count -= 1;\r\n if (count == 0) {\r\n break;\r\n }\r\n }\r\n }\r\n\r\n setTimeout(() => {\r\n if (count != 0) {\r\n for (let i = 0; i < this.freezeArray.length; i++) {\r\n // console.log(\"没有普通快,魔法消除一个冻结块\");\r\n // this.freezeArray[i].getComponent(\"Block\").eliminate();\r\n count -= 1;\r\n if (count == 0) {\r\n break;\r\n }\r\n }\r\n }\r\n }, 100);\r\n }\r\n }\r\n }\r\n }\r\n\r\n //按下暂停按钮\r\n usePause() {\r\n if (this.pause) {\r\n this.pause = false;\r\n }\r\n else {\r\n this.pause = true;\r\n }\r\n }\r\n\r\n\r\n\r\n //根据关卡设置地图大小\r\n setMapInfo() {\r\n let width = 0;\r\n if (this.mapWidth < 10) {\r\n width = 0.2;\r\n }\r\n else if (this.mapWidth < 17) {\r\n width = 0.15 - (this.mapWidth - 11) * 0.01;\r\n }\r\n\r\n this.node.scale = 1.6 + (6 - this.mapWidth) * width;\r\n\r\n if (this.mapWidth == 8 && this.mapHeight > 13) {\r\n this.node.scale = 1;\r\n }\r\n\r\n // this.node.scale = 1;\r\n cc.fx.GameConfig.GM_INFO.scale = this.node.scale;\r\n // this.node.scale = 0.5;\r\n // console.log(this.node.scale);\r\n // this.node.scale = 1;\r\n }\r\n\r\n //创建门的粒子特效\r\n createParticle(block, jg) {\r\n let particle = cc.instantiate(MapConroler._instance.Block_Prop[9]);\r\n particle.parent = this.node;\r\n particle.zIndex = 1000;\r\n let width = Math.floor(block.width / 120);\r\n let height = Math.floor(block.height / 120);\r\n let name = \"\";\r\n\r\n if (jg == 0 || jg == 1) {\r\n let y = block.y + block.height;\r\n let x = block.x - block.width / 2;\r\n name = \"top_\" + width + \"_\" + height;\r\n if (jg == 1) {\r\n name = \"bot_\" + width + \"_\" + height;\r\n y = block.y;\r\n }\r\n if (block.anchorX == 0.5) {\r\n x = block.x;\r\n }\r\n else if (block.anchorX == 0.33) {\r\n x = block.x + block.width * (0.5 - 0.33);\r\n }\r\n else if (block.anchorX == 0.66) {\r\n x = block.x + block.width * (0.5 - 0.66);\r\n }\r\n particle.setPosition(x, y);\r\n }\r\n else if (jg == 2 || jg == 3) {\r\n name = \"left_\" + height + \"_\" + width;\r\n let x = block.x - block.width;\r\n let y = block.y + block.height / 2;\r\n if (block.anchorX == 0.5) {\r\n x = block.x - block.width / 2;\r\n }\r\n else if (block.anchorX == 0.33) {\r\n x = block.x - block.width * 0.33;\r\n }\r\n else if (block.anchorX == 0.66) {\r\n x = block.x + block.width * 0.66;\r\n }\r\n if (jg == 3) {\r\n name = \"right_\" + height + \"_\" + width;\r\n x = block.x;\r\n if (block.anchorX == 0.5) {\r\n x = block.x + block.width / 2;\r\n }\r\n else if (block.anchorX == 0.33) {\r\n x = block.x + block.width * 0.66;\r\n }\r\n else if (block.anchorX == 0.66) {\r\n x = block.x + block.width * 0.33;\r\n }\r\n }\r\n\r\n particle.setPosition(x, y);\r\n }\r\n\r\n let particleNode = particle.getChildByName(name);\r\n let color = block.getComponent(\"Block\").color - 1;\r\n\r\n particleNode.getComponent(cc.ParticleSystem).spriteFrame = particle.getComponent(\"Reduce\").Block_Color[color];\r\n particleNode.active = true;\r\n setTimeout(() => {\r\n cc.tween(particle)\r\n .to(2, { opacity: 0 })\r\n .call(() => {\r\n particle.destroy();\r\n })\r\n .start();\r\n }, 1200);\r\n }\r\n\r\n removeOneBlock() {\r\n // 移除所有方块\r\n for (let i = 0; i < this.blocks.length; i++) {\r\n if (this.blocks[i].opacity == 0) {\r\n this.blocks[i].destroy();\r\n this.blocks.splice(i, 1);\r\n }\r\n }\r\n }\r\n\r\n\r\n\r\n update(dt) {\r\n\r\n }\r\n}\r\n"]} ->>>>>>> 0a31a7a5abc2c505bf743aa596e1c765a0405152 +{"version":3,"sources":["assets\\Script\\Map.ts"],"names":[],"mappings":"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","file":"","sourceRoot":"/","sourcesContent":["// Learn TypeScript:\r\n// - https://docs.cocos.com/creator/manual/en/scripting/typescript.html\r\n// Learn Attribute:\r\n// - https://docs.cocos.com/creator/manual/en/scripting/reference/attributes.html\r\n// Learn life-cycle callbacks:\r\n// - https://docs.cocos.com/creator/manual/en/scripting/life-cycle-callbacks.html\r\n\r\nimport GameManager from \"./GameManager\";\r\nimport { LQCollide } from \"./lq_collide_system/lq_collide\";\r\nimport NumberToImage from \"./NumberToImage\";\r\nimport { MiniGameSdk } from \"./Sdk/MiniGameSdk\";\r\n\r\nconst { ccclass, property } = cc._decorator;\r\n\r\n\r\n\r\n@ccclass\r\nexport default class MapConroler extends cc.Component {\r\n static _instance: any;\r\n\r\n\r\n @property({ type: [cc.Prefab], tooltip: \"方块数组\" })\r\n Block_Array: Array = [];\r\n\r\n @property({ type: [cc.Prefab], tooltip: \"方块道具数组\" })\r\n Block_Prop: Array = [];\r\n\r\n @property(cc.Prefab)\r\n MapBlockPrefab: cc.Prefab = null;\r\n\r\n @property({ type: [cc.SpriteAtlas], tooltip: \"方块颜色\" })\r\n Block_Color: Array = [];\r\n\r\n\r\n @property({ type: [cc.Prefab], tooltip: \"墙壁数组\" })\r\n Wall_Prefab: Array = [];\r\n\r\n\r\n\r\n @property(cc.Prefab)\r\n wallTurnPrefab: cc.Prefab = null;\r\n\r\n @property(cc.Button)\r\n timeBtn: cc.Button = null;\r\n @property(cc.Button)\r\n destroyBtn: cc.Button = null;\r\n @property(cc.Button)\r\n magicBtn: cc.Button = null;\r\n\r\n @property(cc.Node)\r\n mask: cc.Node = null;\r\n\r\n @property(cc.Label)\r\n iceLabel: cc.Label = null;\r\n @property(cc.Label)\r\n hammerLabel: cc.Label = null;\r\n @property(cc.Label)\r\n magicLabel: cc.Label = null;\r\n\r\n @property(cc.Node)\r\n magicMask: cc.Node = null;\r\n\r\n @property(cc.Node)\r\n hammerMask: cc.Node = null;\r\n\r\n @property(cc.Node)\r\n freezeMask: cc.Node = null;\r\n\r\n\r\n @property(cc.Node)\r\n coinPop: cc.Node = null;\r\n\r\n timeLabel: cc.Node = null;\r\n levelLabel: cc.Node = null;\r\n\r\n new_mode: number = 0;\r\n mapWidth: number = 0;\r\n mapHeight: number = 0;\r\n wallNum: number = 0;\r\n blockNum: number = 0;\r\n mapBlocksWall: any; //地图的所有底块\r\n mapInfo: any; //地图除了底块的其他信息\r\n blocks: any; //方块数组\r\n wallInfo: any; //墙壁数组\r\n wallArray: any; //\r\n openWall: any; //开关墙数组\r\n freezeWall: any; //冻结墙数组\r\n riseFallBlcok: any; //升降地块数组\r\n scheduleCallback: any;//倒计时用\r\n homeCanTouch: boolean = true;//按钮可用状态\r\n againCanTouch: boolean = true;//重玩按钮可以用状态\r\n gameOver: boolean = false;//游戏结束状态\r\n gameWin: boolean = false;//游戏胜利状态\r\n gameStart: boolean = false;//游戏开始状态\r\n timeNumber: number = 0; //游戏时间 用于倒计时\r\n count_Time: number = 0; //用于统计总游戏时长\r\n add_Time: number = 0; //复活时间\r\n mapBlockArray: any; //地图的所有格子状态存储\r\n pause: boolean = false;//暂停状态\r\n hammer: boolean = false;//锤子状态\r\n freezeArray: any; //冻结\r\n loackArray: any; //上锁\r\n particleEffects: cc.ParticleAsset[];\r\n // leftDoors: []; //左门\r\n rightDoors: any; //右门\r\n topDoors: any; //上门\r\n bottomDoors: any; //下门\r\n leftDoors: any;\r\n\r\n\r\n // mapInfo: number[][] = [];\r\n\r\n onLoad() {\r\n\r\n cc.fx.GameConfig.GM_INFO.review = 0;\r\n cc.fx.GameConfig.GM_INFO.gameState = true;\r\n this.mask.opacity = 0;\r\n this.node.getChildByName(\"Adhesive\").zIndex = 500;\r\n cc.game.setFrameRate(63);\r\n cc.fx.AudioManager._instance.playEffect(\"zhuan2\", null);\r\n this.node.parent.parent.parent.getChildByName(\"zhuanchang\").active = true;\r\n this.node.parent.parent.parent.getChildByName(\"zhuanchang\").getComponent(sp.Skeleton).setAnimation(1, \"down\", false);\r\n this.node.parent.parent.parent.getChildByName(\"zhuanchang\").getComponent(sp.Skeleton).setCompleteListener((entry) => {\r\n if (entry.animation.name === \"down\") {\r\n // 动画播放结束后执行的逻辑\r\n this.node.parent.parent.parent.getChildByName(\"zhuanchang\").active = false;\r\n }\r\n });\r\n this.blocks = [];\r\n this.leftDoors = []; //左门\r\n this.rightDoors = []; //右门\r\n this.topDoors = []; //上门\r\n this.bottomDoors = []; //下门\r\n this.gameWin = false;\r\n this.gameOver = false;\r\n this.gameStart = false;\r\n this.homeCanTouch = true;\r\n this.againCanTouch = true;\r\n this.new_mode = 0;\r\n this.count_Time = 0;\r\n this.add_Time = 0;\r\n\r\n\r\n this.iceLabel.string = cc.fx.GameConfig.GM_INFO.freezeAmount.toString();\r\n this.hammerLabel.string = cc.fx.GameConfig.GM_INFO.hammerAmount.toString();\r\n this.magicLabel.string = cc.fx.GameConfig.GM_INFO.magicAmount.toString();\r\n\r\n // cc.game.addPersistRootNode(this.node);\r\n MapConroler._instance = this;\r\n }\r\n\r\n start() {\r\n setTimeout(() => {\r\n cc.director.preloadScene(\"HomeScene\", (err, asset) => {\r\n if (err) {\r\n console.error('动态加载 HomeScene 失败:', err);\r\n return;\r\n }\r\n });\r\n }, 1000);\r\n // console.log(\"进入GameScene\");\r\n this.Block_Array = GameManager._instance.Block_Array;\r\n this.Wall_Prefab = GameManager._instance.Wall_Prefab;\r\n this.Block_Color = GameManager._instance.Block_Color;\r\n // this.particleEffects = GameManager._instance.particleEffects;\r\n\r\n this.initMap();\r\n\r\n }\r\n\r\n startUpdate() {\r\n if (this.gameStart == false) {\r\n this.gameStart = true;\r\n //发送数数事件——进入关卡\r\n console.log(\"准备进入下一关,发送下一关进入\");\r\n cc.fx.GameTool.shushu_Track(\"enter_stage\");\r\n this.startTimeCutDown();\r\n for (let i = 0; i < this.blocks.length; i++) {\r\n if (this.blocks[i].getComponent(\"Block\").type == 6) {\r\n this.blocks[i].getChildByName(\"boom\").getComponent(\"Boom\").startBoom();\r\n }\r\n }\r\n }\r\n }\r\n\r\n initMap() {\r\n // this.node.getChildByName(\"Wall\").zIndex = 10;\r\n this.timeLabel = this.node.parent.getChildByName(\"Top\").getChildByName(\"time\");\r\n this.levelLabel = this.node.parent.getChildByName(\"Top\").getChildByName(\"level\");\r\n this.timeNumber = cc.fx.GameConfig.LEVEL_INFO[0].time;\r\n\r\n this.count_Time = 0;\r\n this.add_Time = 0;\r\n NumberToImage.getTimeMargin(this.timeNumber, 50, \"time_\", this.timeLabel)\r\n // var timeTemp = cc.fx.GameTool.getTimeMargin(this.timeNumber);\r\n // this.timeLabel.string = timeTemp.toString();\r\n NumberToImage.numberToImageNodes((cc.fx.GameConfig.GM_INFO.level + 1), 50, 20, \"level_\", this.levelLabel, false)\r\n\r\n //this.startTimeCutDown();\r\n\r\n this.mapWidth = cc.fx.GameConfig.LEVEL_INFO[0].map[0];\r\n this.mapHeight = cc.fx.GameConfig.LEVEL_INFO[0].map[1];\r\n let gap = cc.fx.GameConfig.LEVEL_INFO[0].gap;\r\n let risefall = cc.fx.GameConfig.LEVEL_INFO[0].risefall;\r\n\r\n this.pause = false;\r\n this.hammer = false;\r\n this.wallNum = 0;\r\n this.setMapInfo();\r\n this.blocks = [];\r\n this.mapBlocksWall = [];\r\n this.mapInfo = [];\r\n this.wallInfo = [];\r\n this.openWall = [];\r\n this.wallArray = [];\r\n this.freezeWall = [];\r\n this.riseFallBlcok = [];\r\n this.mapBlockArray = [];\r\n this.freezeArray = [];\r\n this.loackArray = [];\r\n this.count_Time = 0;\r\n this.add_Time = 0;\r\n\r\n\r\n let startX = this.mapWidth % 2 == 0 ? -(this.mapWidth - 1) * 60 : -(this.mapWidth - 1) * 60;\r\n let startY = this.mapHeight % 2 == 0 ? -(this.mapHeight - 1) * 60 : -(this.mapHeight - 1) * 60;\r\n // startX =(this.mapWidth-1)*60 + 60;\r\n // startY =-(this.mapHeight-1)*60 - 60;\r\n\r\n for (let i = 0; i < this.mapWidth; i++) {\r\n this.mapBlocksWall[i] = [];\r\n\r\n for (let j = 0; j < this.mapHeight; j++) {\r\n let block = cc.instantiate(this.MapBlockPrefab);\r\n block.parent = this.node.getChildByName(\"mapBlock\");\r\n block.getComponent(\"MapBlock\").init(i, j);\r\n // block.getChildByName(\"num\").getComponent(cc.Label).string = i + \":\" + j;\r\n block.setPosition(cc.v2(startX + i * 120, startY + j * 120))\r\n if (risefall != null) {\r\n if (this.mapRiseFall(cc.v2(i, j), risefall, block)) {\r\n this.riseFallBlcok.push(block);\r\n }\r\n }\r\n if (gap != null) {\r\n if (!this.mapGap(cc.v2(i, j), gap) || i == 0 || i == this.mapWidth - 1\r\n || j == 0 || j == this.mapHeight - 1) {\r\n block.opacity = 254;\r\n block.removeComponent(cc.Sprite);\r\n block.removeAllChildren();\r\n this.wallInfo.push(block);\r\n }\r\n else this.mapInfo.push(block);\r\n }\r\n else {\r\n if (i == 0 || i == this.mapWidth - 1\r\n || j == 0 || j == this.mapHeight - 1) {\r\n block.opacity = 254;\r\n block.removeComponent(cc.Sprite);\r\n block.removeAllChildren();\r\n this.wallInfo.push(block);\r\n }\r\n else this.mapInfo.push(block);\r\n }\r\n\r\n this.mapBlocksWall[i].push(block);\r\n }\r\n }\r\n\r\n this.wallInit();\r\n this.blockInit();\r\n\r\n }\r\n\r\n //创建方块\r\n // ... 已有代码 ...\r\n\r\n //创建方块\r\n // ... 已有代码 ...\r\n\r\n\r\n\r\n\r\n blockInit() {\r\n let blockArray = cc.fx.GameConfig.BLOCK_INFO[0];\r\n blockArray = this.sortBlock(blockArray);\r\n console.log(\"创建方块\", blockArray);\r\n let index = 0; // 当前要创建的方块索引\r\n let BLOCKS_PER_FRAME = 1; // 初始每帧创建的方块数量\r\n const MAX_PER_FRAME = 10; // 每帧最大创建数量\r\n const MIN_PER_FRAME = 1; // 每帧最小创建数量\r\n\r\n const createBlocks = () => {\r\n const startTime = performance.now();\r\n for (let i = 0; i < BLOCKS_PER_FRAME && index < blockArray.length; i++) {\r\n let blockInfo = blockArray[index];\r\n // 缓存 Block_Array 访问\r\n const blockPrefab = this.Block_Array[blockInfo.block];\r\n let block = cc.instantiate(blockPrefab);\r\n block.parent = this.node;\r\n block.setPosition(cc.v2(blockInfo.position.x, blockInfo.position.y));\r\n if (blockInfo.block != 23) {\r\n this.blockNum += 1;\r\n this.blocks.push(block);\r\n if (blockInfo.type == 1) {\r\n let info = {\r\n id: blockInfo.id + 1,\r\n block: blockInfo.block,\r\n color: blockInfo.stacking,\r\n type: 10,\r\n position: blockInfo.position,\r\n stacking: blockInfo.color\r\n };\r\n // 缓存 Block_Array 访问\r\n const blockUpPrefab = this.Block_Array[info.block];\r\n let blockUp = cc.instantiate(blockUpPrefab);\r\n blockUp.parent = this.node;\r\n blockUp.setPosition(cc.v2(info.position.x, info.position.y));\r\n\r\n this.blocks.push(blockUp);\r\n block.getComponent(\"Block\").init(blockInfo, null, null, blockUp);\r\n blockUp.getComponent(\"Block\").init(info, null, null, block);\r\n\r\n this.blockNum += 1;\r\n } else if (blockInfo.type == 9) {\r\n if (blockInfo.adhesiveTime < 2) {\r\n index++;\r\n continue;\r\n }\r\n index++;\r\n let info = blockArray[index];\r\n // 缓存 Block_Array 访问\r\n const blockUpPrefab = this.Block_Array[info.block];\r\n let blockUp = cc.instantiate(blockUpPrefab);\r\n blockUp.parent = this.node;\r\n blockUp.setPosition(cc.v2(info.position.x, info.position.y));\r\n\r\n this.blocks.push(blockUp);\r\n block.getComponent(\"Block\").init(blockInfo, null, null, blockUp, false);\r\n setTimeout(() => {\r\n blockUp.getComponent(\"Block\").init(info, null, null, block, true);\r\n }, 100);\r\n this.blockNum += 1;\r\n } else {\r\n block.getComponent(\"Block\").init(blockInfo);\r\n }\r\n }\r\n else {\r\n block.getComponent(\"Barrier\").init(blockInfo);\r\n }\r\n index++;\r\n }\r\n const endTime = performance.now();\r\n const frameTime = endTime - startTime;\r\n // 如果当前帧执行时间过长,减少每帧创建数量\r\n if (frameTime > 16) {\r\n BLOCKS_PER_FRAME = Math.max(BLOCKS_PER_FRAME - 1, MIN_PER_FRAME);\r\n } else {\r\n BLOCKS_PER_FRAME = Math.min(BLOCKS_PER_FRAME + 1, MAX_PER_FRAME);\r\n }\r\n\r\n // 如果还有方块未创建,下一帧继续创建\r\n if (index < blockArray.length) {\r\n // 使用 scheduleOnce 在下一帧执行 createBlocks\r\n this.scheduleOnce(() => {\r\n createBlocks();\r\n }, 0);\r\n } else {\r\n\r\n }\r\n };\r\n\r\n // 开始分帧创建方块\r\n createBlocks();\r\n }\r\n //给创建方块排序,用来降低drawcall 合批\r\n sortBlock(allBlocks: { color: number; block: number; type: number }[]) {\r\n return allBlocks.sort((a, b) => {\r\n // 先处理 type 为 1 的情况,将其放到最后\r\n if (a.type === 1 && b.type !== 1) {\r\n return 1;\r\n }\r\n if (a.type !== 1 && b.type === 1) {\r\n return -1;\r\n }\r\n\r\n // 对 type 不为 0 的元素按 type 排序\r\n if (a.type !== 0 && b.type !== 0) {\r\n return a.type - b.type;\r\n }\r\n if (a.type !== 0 && b.type === 0) {\r\n return 1;\r\n }\r\n if (a.type === 0 && b.type !== 0) {\r\n return -1;\r\n }\r\n\r\n // 再处理 block 为 23 的情况,将其放到最前面\r\n if (a.block === 23 && b.block !== 23) {\r\n return -1;\r\n }\r\n if (a.block !== 23 && b.block === 23) {\r\n return 1;\r\n }\r\n\r\n // 其余按 color 升序排列\r\n return a.color - b.color;\r\n });\r\n }\r\n\r\n\r\n //创建墙壁\r\n\r\n wallInit() {\r\n let index = 0; // 当前要创建的墙壁索引\r\n let WALLS_PER_FRAME = 1; // 初始每帧创建的墙壁数量\r\n const MAX_PER_FRAME = 10; // 每帧最大创建数量\r\n const MIN_PER_FRAME = 1; // 每帧最小创建数量\r\n\r\n const createWalls = () => {\r\n const startTime = performance.now();\r\n for (let i = 0; i < WALLS_PER_FRAME && index < this.wallInfo.length; i++) {\r\n let block = this.wallInfo[index];\r\n let dir = this.getWllDiraction(\"wall\", cc.v2(block.getComponent(\"MapBlock\").posX, block.getComponent(\"MapBlock\").posY));\r\n if (dir != null) {\r\n this.createWall(dir, block);\r\n }\r\n index++;\r\n }\r\n const endTime = performance.now();\r\n const frameTime = endTime - startTime;\r\n // 如果当前帧执行时间过长,减少每帧创建数量\r\n if (frameTime > 16) {\r\n WALLS_PER_FRAME = Math.max(WALLS_PER_FRAME - 1, MIN_PER_FRAME);\r\n } else {\r\n WALLS_PER_FRAME = Math.min(WALLS_PER_FRAME + 1, MAX_PER_FRAME);\r\n }\r\n\r\n // 如果还有墙壁未创建,下一帧继续创建\r\n if (index < this.wallInfo.length) {\r\n this.scheduleOnce(() => {\r\n createWalls();\r\n }, 0);\r\n } else {\r\n // 所有墙壁创建完成后,创建拐角节点\r\n this.createCornerNodes();\r\n }\r\n };\r\n\r\n // 开始分帧创建墙壁\r\n createWalls();\r\n }\r\n\r\n // ... 已有代码 ...\r\n\r\n getWllDiraction(type, pointA) {\r\n let dir = [];\r\n let pointB = cc.v2(pointA.x + 1, pointA.y);\r\n let pointC = cc.v2(pointA.x - 1, pointA.y);\r\n let pointD = cc.v2(pointA.x, pointA.y + 1);\r\n let pointE = cc.v2(pointA.x, pointA.y - 1);\r\n let opacity = 0;\r\n if (type == \"wall\") opacity = 255;\r\n if (type == \"turn\") opacity = 250;\r\n\r\n if (pointB.x < this.mapWidth) {\r\n if (this.mapBlocksWall[pointB.x][pointB.y].opacity == opacity) {\r\n if (type == \"turn\" && this.mapBlocksWall[pointB.x][pointB.y].getComponent(\"MapBlock\").direction == \"right\") {\r\n\r\n }\r\n else dir.push(\"right\");\r\n }\r\n }\r\n if (pointC.x >= 0) {\r\n if (this.mapBlocksWall[pointC.x][pointC.y].opacity == opacity) {\r\n if (type == \"turn\" && this.mapBlocksWall[pointC.x][pointC.y].getComponent(\"MapBlock\").direction == \"left\") {\r\n\r\n }\r\n else dir.push(\"left\");\r\n }\r\n }\r\n if (pointD.y < this.mapHeight) {\r\n if (this.mapBlocksWall[pointD.x][pointD.y].opacity == opacity) {\r\n if (type == \"turn\" && this.mapBlocksWall[pointD.x][pointD.y].getComponent(\"MapBlock\").direction == \"up\") {\r\n\r\n }\r\n else dir.push(\"up\");\r\n }\r\n }\r\n if (pointE.y >= 0) {\r\n if (this.mapBlocksWall[pointE.x][pointE.y].opacity == opacity) {\r\n if (type == \"turn\" && this.mapBlocksWall[pointE.x][pointE.y].getComponent(\"MapBlock\").direction == \"down\") {\r\n\r\n }\r\n else dir.push(\"down\");\r\n }\r\n }\r\n if (dir.length > 2) {\r\n\r\n return null;\r\n }\r\n if (dir.length == 1) {\r\n if (type == \"wall\")\r\n return dir[0];\r\n else\r\n return null;\r\n }\r\n else if (dir.length == 2) {\r\n return dir[0] + dir[1];\r\n }\r\n }\r\n\r\n createCornerNodes() {\r\n // 定义拐角位置\r\n for (let i = 0; i < this.wallInfo.length; i++) {\r\n let block = this.wallInfo[i];\r\n if (block.opacity != 250) {\r\n let dir = this.getWllDiraction(\"turn\", cc.v2(block.getComponent(\"MapBlock\").posX, block.getComponent(\"MapBlock\").posY));\r\n if (dir != null) {\r\n this.createTurn(dir, block, block.getComponent(\"MapBlock\").posX, block.getComponent(\"MapBlock\").posY);\r\n }\r\n }\r\n\r\n }\r\n\r\n }\r\n\r\n createWall(direction, node) {\r\n let wall = null;\r\n node.getComponent(\"MapBlock\").setDiraction(direction);\r\n switch (direction) {\r\n case \"right\":\r\n node.opacity = 250;\r\n wall = cc.instantiate(this.Wall_Prefab[4]);\r\n this.leftDoors.push(wall);\r\n // wall.parent = this.node.getChildByName(\"Wall\");\r\n wall.parent = this.node;\r\n wall.setPosition(cc.v2(node.x, node.y));\r\n node.opacity = 250;\r\n wall.getChildByName(\"wall\").getComponent(\"Wall\").init(null, node.getComponent(\"MapBlock\").posX, node.getComponent(\"MapBlock\").posY, direction);\r\n //wall.getChildByName(\"wall\").getChildByName(\"num\").getComponent(cc.Label).string = this.wallNum.toString();\r\n this.setDoorInfo(wall.getChildByName(\"wall\"));\r\n this.wallNum += 1;\r\n if (wall.getChildByName(\"wall\").getComponent(\"Wall\").special == 2)\r\n this.openWall.push(wall);\r\n else if (wall.getChildByName(\"wall\").getComponent(\"Wall\").special == 3)\r\n this.freezeWall.push(wall);\r\n\r\n break;\r\n case \"left\":\r\n node.opacity = 250;\r\n wall = cc.instantiate(this.Wall_Prefab[3]);\r\n // wall.parent = this.node.getChildByName(\"Wall\");\r\n this.rightDoors.push(wall);\r\n wall.parent = this.node;\r\n wall.setPosition(cc.v2(node.x, node.y));\r\n wall.getChildByName(\"wall\").getComponent(\"Wall\").init(null, node.getComponent(\"MapBlock\").posX, node.getComponent(\"MapBlock\").posY, direction);\r\n this.setDoorInfo(wall.getChildByName(\"wall\"));\r\n //wall.getChildByName(\"wall\").getChildByName(\"num\").getComponent(cc.Label).string = this.wallNum.toString();\r\n this.wallNum += 1;\r\n if (wall.getChildByName(\"wall\").getComponent(\"Wall\").special == 2)\r\n this.openWall.push(wall);\r\n else if (wall.getChildByName(\"wall\").getComponent(\"Wall\").special == 3)\r\n this.freezeWall.push(wall);\r\n break;\r\n case \"up\":\r\n node.opacity = 250;\r\n wall = cc.instantiate(this.Wall_Prefab[5]);\r\n\r\n this.topDoors.push(wall);\r\n // wall.parent = this.node.getChildByName(\"Wall\");\r\n wall.parent = this.node;\r\n wall.setPosition(cc.v2(node.x, node.y));\r\n\r\n wall.getChildByName(\"wall\").getComponent(\"Wall\").init(null, node.getComponent(\"MapBlock\").posX, node.getComponent(\"MapBlock\").posY, direction);\r\n this.setDoorInfo(wall.getChildByName(\"wall\"));\r\n //wall.getChildByName(\"wall\").getChildByName(\"num\").getComponent(cc.Label).string = this.wallNum.toString();\r\n this.wallNum += 1;\r\n if (wall.getChildByName(\"wall\").getComponent(\"Wall\").special == 2)\r\n this.openWall.push(wall);\r\n else if (wall.getChildByName(\"wall\").getComponent(\"Wall\").special == 3)\r\n this.freezeWall.push(wall);\r\n break;\r\n case \"down\":\r\n node.opacity = 250;\r\n wall = cc.instantiate(this.Wall_Prefab[0]);\r\n this.bottomDoors.push(wall);\r\n // wall.parent = this.node.getChildByName(\"Wall\");\r\n wall.parent = this.node;\r\n wall.setPosition(cc.v2(node.x, node.y));\r\n // this.setDoorInfo(wall.getChildByName(\"wall\"));\r\n wall.getChildByName(\"wall\").getComponent(\"Wall\").init(null, node.getComponent(\"MapBlock\").posX, node.getComponent(\"MapBlock\").posY, direction);\r\n this.setDoorInfo(wall.getChildByName(\"wall\"));\r\n //wall.getChildByName(\"wall\").getChildByName(\"num\").getComponent(cc.Label).string = this.wallNum.toString();\r\n this.wallNum += 1;\r\n if (wall.getChildByName(\"wall\").getComponent(\"Wall\").special == 2)\r\n this.openWall.push(wall);\r\n else if (wall.getChildByName(\"wall\").getComponent(\"Wall\").special == 3)\r\n this.freezeWall.push(wall);\r\n break;\r\n case \"upright\": case \"rightup\":\r\n node.opacity = 249;\r\n wall = cc.instantiate(this.Wall_Prefab[7]);\r\n // wall.parent = this.node.getChildByName(\"Wall\");\r\n wall.parent = this.node;\r\n wall.setPosition(cc.v2(node.x, node.y));\r\n wall.children[1].getComponent(\"Wall\").init(null, node.getComponent(\"MapBlock\").posX, node.getComponent(\"MapBlock\").posY, direction);\r\n wall.children[2].getComponent(\"Wall\").init(null, node.getComponent(\"MapBlock\").posX, node.getComponent(\"MapBlock\").posY, direction);\r\n //wall.children[0].getChildByName(\"num\").getComponent(cc.Label).string = this.wallNum.toString();\r\n this.setDoorInfo(wall.children[0]);\r\n this.wallNum += 1;\r\n //wall.children[1].getChildByName(\"num\").getComponent(cc.Label).string = this.wallNum.toString();\r\n this.setDoorInfo(wall.children[1]);\r\n this.wallNum += 1;\r\n\r\n break;\r\n case \"upleft\": case \"leftup\":\r\n node.opacity = 249;\r\n wall = cc.instantiate(this.Wall_Prefab[6]);\r\n // wall.parent = this.node.getChildByName(\"Wall\");\r\n wall.parent = this.node;\r\n wall.setPosition(cc.v2(node.x, node.y));\r\n wall.children[1].getComponent(\"Wall\").init(null, node.getComponent(\"MapBlock\").posX, node.getComponent(\"MapBlock\").posY, direction);\r\n wall.children[2].getComponent(\"Wall\").init(null, node.getComponent(\"MapBlock\").posX, node.getComponent(\"MapBlock\").posY, direction);\r\n //wall.children[0].getChildByName(\"num\").getComponent(cc.Label).string = this.wallNum.toString();\r\n this.setDoorInfo(wall.children[0]);\r\n this.wallNum += 1;\r\n //wall.children[1].getChildByName(\"num\").getComponent(cc.Label).string = this.wallNum.toString();\r\n this.setDoorInfo(wall.children[1]);\r\n this.wallNum += 1;\r\n\r\n break;\r\n case \"downright\": case \"rightdown\":\r\n node.opacity = 249;\r\n wall = cc.instantiate(this.Wall_Prefab[2]);\r\n // wall.parent = this.node.getChildByName(\"Wall\");\r\n wall.parent = this.node;\r\n wall.setPosition(cc.v2(node.x, node.y));\r\n wall.children[1].getComponent(\"Wall\").init(null, node.getComponent(\"MapBlock\").posX, node.getComponent(\"MapBlock\").posY, direction);\r\n wall.children[2].getComponent(\"Wall\").init(null, node.getComponent(\"MapBlock\").posX, node.getComponent(\"MapBlock\").posY, direction);\r\n //wall.children[0].getChildByName(\"num\").getComponent(cc.Label).string = this.wallNum.toString();\r\n this.setDoorInfo(wall.children[0]);\r\n this.wallNum += 1;\r\n //wall.children[1].getChildByName(\"num\").getComponent(cc.Label).string = this.wallNum.toString();\r\n this.setDoorInfo(wall.children[1]);\r\n this.wallNum += 1;\r\n\r\n break;\r\n case \"downleft\": case \"leftdown\":\r\n node.opacity = 249;\r\n wall = cc.instantiate(this.Wall_Prefab[1]);\r\n // wall.parent = this.node.getChildByName(\"Wall\");\r\n wall.parent = this.node;\r\n wall.setPosition(cc.v2(node.x, node.y));\r\n wall.children[1].getComponent(\"Wall\").init(null, node.getComponent(\"MapBlock\").posX, node.getComponent(\"MapBlock\").posY, direction);\r\n wall.children[2].getComponent(\"Wall\").init(null, node.getComponent(\"MapBlock\").posX, node.getComponent(\"MapBlock\").posY, direction);\r\n //wall.children[0].getChildByName(\"num\").getComponent(cc.Label).string = this.wallNum.toString();\r\n this.setDoorInfo(wall.children[0]);\r\n this.wallNum += 1;\r\n //wall.children[1].getChildByName(\"num\").getComponent(cc.Label).string = this.wallNum.toString();\r\n this.setDoorInfo(wall.children[1]);\r\n this.wallNum += 1;\r\n\r\n break;\r\n\r\n }\r\n\r\n\r\n // if(wallTurn){\r\n // wallTurn.getComponent(\"wallTunr\").init(wall);\r\n // }\r\n }\r\n\r\n setDoorInfo(wall) {\r\n let doorInfo = cc.fx.GameConfig.WALL_INFO[0];\r\n\r\n if (doorInfo) {\r\n for (let j = 0; j < doorInfo.length; j++) {\r\n if (doorInfo[j].num == this.wallNum) {\r\n wall.getComponent(\"Wall\").init(doorInfo[j], null, null, null);\r\n this.wallArray.push(wall.parent);\r\n }\r\n }\r\n }\r\n }\r\n\r\n createTurn(direction, node, posX, posY) {\r\n let wall = null;\r\n wall = cc.instantiate(this.wallTurnPrefab);\r\n wall.parent = this.node;\r\n wall.setPosition(cc.v2(node.x, node.y));\r\n switch (direction) {\r\n case \"upright\": case \"rightup\":\r\n wall.angle = 0;\r\n wall.getChildByName(\"icon\").angle = 0;\r\n\r\n break;\r\n case \"upleft\": case \"leftup\":\r\n wall.angle = 90;\r\n wall.getChildByName(\"icon\").angle = -90;\r\n wall.getChildByName(\"icon\").y += 5;\r\n wall.getChildByName(\"icon\").x -= 1.3;\r\n break;\r\n case \"downright\": case \"rightdown\":\r\n wall.angle = 270;\r\n wall.getChildByName(\"icon\").angle = -270;\r\n wall.getChildByName(\"icon\").x += 2.5;\r\n wall.getChildByName(\"icon\").y += 1;\r\n break;\r\n case \"downleft\": case \"leftdown\":\r\n wall.angle = 180;\r\n wall.getChildByName(\"icon\").angle = -180;\r\n wall.getChildByName(\"icon\").x += 4.5;\r\n wall.getChildByName(\"icon\").y += 3.2;\r\n break;\r\n }\r\n\r\n // if(direction == \"rightdown\" || direction == \"downright\") {\r\n // wall.zIndex = 50 + posX - posY*3;\r\n // }\r\n // else \r\n // wall.zIndex = 50 + posX - posY*3;\r\n\r\n if (direction == \"up\" || direction == \"leftup\" || direction == \"upleft\"\r\n ) {\r\n wall.zIndex = 100 + posX - posY * 3;\r\n }\r\n else if (direction == \"rightup\" || direction == \"upright\" || direction == \"rightdown\" || direction == \"downright\" || direction == \"downleft\") {\r\n wall.zIndex = 30 + posX - posY * 3;\r\n }\r\n else if (direction == \"left\" || direction == \"leftdown\") {\r\n wall.zIndex = 70 + posX - posY * 3;\r\n }\r\n else wall.zIndex = 70 + posX - posY * 3;\r\n\r\n // wall.getChildByName(\"num\").angle = -wall.angle;\r\n //wall.getChildByName(\"num\").getComponent(cc.Label).string = direction;\r\n //wall.getChildByName(\"num\").getComponent(cc.Label).string = wall.zIndex+ \"\";\r\n // console.log(posX,posY,wall.zIndex);\r\n // this.wallNum += 1;\r\n // wall.getChildByName(\"num\").getComponent(cc.Label).string = this.wallNum + \"\";\r\n }\r\n\r\n //地图底块缺口判断\r\n mapGap(point, gap) {\r\n for (let i = 0; i < gap.length; i++) {\r\n if (point.x == gap[i].x && point.y == gap[i].y) {\r\n return false;\r\n }\r\n }\r\n return true;\r\n }\r\n\r\n //升降地块判断\r\n mapRiseFall(point, risefall, block) {\r\n for (let i = 0; i < risefall.length; i++) {\r\n if (point.x == risefall[i].pos.x && point.y == risefall[i].pos.y) {\r\n block.getChildByName(\"risefall\").active = true;\r\n block.getChildByName('risefall').getChildByName(\"color\").getComponent(cc.Label).string = risefall[i].color + \"\";\r\n block.getChildByName('risefall').addComponent(cc.BoxCollider);\r\n block.getChildByName('risefall').getComponent(cc.BoxCollider).size = cc.size(110, 110);\r\n return true;\r\n }\r\n }\r\n return false;\r\n }\r\n //升降地块\r\n changeRiseFall(color, down) {\r\n color = color.toString();\r\n for (let i = 0; i < this.riseFallBlcok.length; i++) {\r\n if (color == this.riseFallBlcok[i].getChildByName(\"risefall\").getChildByName(\"color\").getComponent(cc.Label).string) {\r\n if (down) {\r\n this.riseFallBlcok[i].getChildByName(\"risefall\").active = false;\r\n this.riseFallBlcok[i].getChildByName('risefall').removeComponent(cc.BoxCollider);\r\n }\r\n else {\r\n this.riseFallBlcok[i].getChildByName(\"risefall\").active = true;\r\n this.riseFallBlcok[i].getChildByName('risefall').addComponent(cc.BoxCollider);\r\n this.riseFallBlcok[i].getChildByName('risefall').getComponent(cc.BoxCollider).size = cc.size(110, 110);\r\n }\r\n }\r\n\r\n }\r\n }\r\n\r\n\r\n\r\n //查询叠加快id\r\n foundDownBlock(id) {\r\n for (let i = 0; i < this.blocks.length; i++) {\r\n if (this.blocks[i].getComponent(\"Block\").blockId == id) {\r\n return this.blocks[i];\r\n }\r\n }\r\n return null;\r\n }\r\n\r\n //删除块\r\n removeBlock(id) {\r\n for (let i = 0; i < this.blocks.length; i++) {\r\n if (this.blocks[i].getComponent(\"Block\").blockId == id) {\r\n return this.blocks[i];\r\n }\r\n }\r\n return null;\r\n }\r\n\r\n getMinAndMax(block) {\r\n let width = Math.floor(block.width / 120);\r\n let height = Math.floor(block.height / 120);\r\n\r\n let minX = width;\r\n let maxX = this.mapWidth - 2;\r\n let minY = 1;\r\n let maxY = this.mapHeight - 2 - height + 1;\r\n\r\n if (block.name == \"block10\") {\r\n minX = width - 1;\r\n if (this.mapWidth > 3) maxX = maxX - 1;\r\n }\r\n else if (block.name == \"block11\") {\r\n minX = width - 2;\r\n if (this.mapWidth > 3) maxX = maxX - 2;\r\n }\r\n\r\n else if (block.name == \"block14\") {\r\n minX = width - 1;\r\n maxX = maxX - 1;\r\n }\r\n else if (block.name == \"block16\") {\r\n minX = width - 1;\r\n maxX = maxX - 1;\r\n }\r\n else if (block.name == \"block18\") {\r\n minX = width - 1;\r\n maxX = maxX - 1;\r\n }\r\n else if (block.name == \"block21\") {\r\n minX = width - 1;\r\n maxX = maxX - 1;\r\n }\r\n\r\n return { minX: minX, maxX: maxX, minY: minY, maxY: maxY };\r\n }\r\n\r\n //检测落点是否可以消除\r\n checkPass(node, blocks) {\r\n let minAndMax = this.getMinAndMax(node);\r\n let minX = minAndMax.minX;\r\n let maxX = minAndMax.maxX;\r\n let minY = minAndMax.minY;\r\n let maxY = minAndMax.maxY;\r\n\r\n let nodePos = cc.v2(node.getComponent(\"Block\").posX, node.getComponent(\"Block\").posY);\r\n\r\n // 获取地图边界信息\r\n\r\n let allBlocks = [];\r\n for (let i = 0; i < blocks.length; i++) {\r\n allBlocks.push(cc.v2(nodePos.x + blocks[i].x, nodePos.y + blocks[i].y));\r\n }\r\n\r\n // const date1 = new Date().getTime();\r\n // console.log(\"将小块放入数组的时间\",date1);\r\n\r\n let jg = -1;\r\n let pz = 0;\r\n // 获取所有墙壁节点\r\n // let wall = this.node;\r\n let direction = this.checkDiraction(allBlocks, maxX, maxY);\r\n\r\n // 判断方块是否在地图边缘\r\n if (nodePos.x <= minX || direction[0] == true) {\r\n // const date2 = new Date().getTime();\r\n // console.log(\"碰到左边缘\",date2);\r\n pz += 1;\r\n let leftWalls = [];\r\n for (let i = 0; i < this.leftDoors.length; i++) {\r\n let wallLeft = this.leftDoors[i].getChildByName(\"wall\");\r\n let wallPos = cc.v2(wallLeft.getComponent(\"Wall\").posX, wallLeft.getComponent(\"Wall\").posY);\r\n for (let i = 0; i < allBlocks.length; i++) {\r\n if (allBlocks[i].y == wallPos.y && allBlocks[i].x > wallPos.x) {\r\n // console.log(\"id:\",wall.getChildByName(\"num\").getComponent(cc.Label).string);\r\n leftWalls.push(wallLeft);\r\n }\r\n }\r\n }\r\n // console.log(\"得到左边墙壁数组\",date6);\r\n if (leftWalls.length != 0) {\r\n let result = this.detectingBlock(\"left\", node.getComponent(\"Block\").posX, node.getComponent(\"Block\").posY, allBlocks);\r\n if (result == true) result = this.passWall(result, leftWalls, node);\r\n // console.log(\"碰到左边缘结果:\",jg);\r\n if (result) {\r\n\r\n this.blockNum -= 1;\r\n this.special_Treatment(node);\r\n jg = 2;\r\n this.createParticle(node, jg);\r\n return jg;\r\n }\r\n }\r\n }\r\n if (nodePos.x >= maxX || direction[1] == true) {\r\n // const date3 = new Date().getTime();\r\n // console.log(\"碰到右边缘\",date3);\r\n pz += 1;\r\n let rightWalls = [];\r\n for (let i = 0; i < this.rightDoors.length; i++) {\r\n let wallRight = this.rightDoors[i].getChildByName(\"wall\");\r\n let wallPos = cc.v2(wallRight.getComponent(\"Wall\").posX, wallRight.getComponent(\"Wall\").posY);\r\n for (let i = 0; i < allBlocks.length; i++) {\r\n if (allBlocks[i].y == wallPos.y && allBlocks[i].x < wallPos.x) {\r\n // console.log(\"id:\",wall.getChildByName(\"num\").getComponent(cc.Label).string);\r\n rightWalls.push(wallRight);\r\n }\r\n }\r\n }\r\n\r\n if (rightWalls.length != 0) {\r\n let result = this.detectingBlock(\"right\", node.getComponent(\"Block\").posX, node.getComponent(\"Block\").posY, allBlocks);\r\n\r\n if (result == true) result = this.passWall(result, rightWalls, node);\r\n // console.log(\"碰到右边缘结果:\",jg);\r\n if (result) {\r\n\r\n this.blockNum -= 1;\r\n this.special_Treatment(node);\r\n jg = 3;\r\n this.createParticle(node, jg);\r\n return jg;\r\n }\r\n }\r\n\r\n\r\n }\r\n if (nodePos.y <= minY || direction[2] == true) {\r\n pz += 1;\r\n // const date4 = new Date().getTime();\r\n // console.log(\"碰到下边缘\",date4);\r\n let downWalls = [];\r\n for (let i = 0; i < this.topDoors.length; i++) {\r\n let wallBottom = this.topDoors[i].getChildByName(\"wall\");\r\n let wallPos = cc.v2(wallBottom.getComponent(\"Wall\").posX, wallBottom.getComponent(\"Wall\").posY);\r\n for (let i = 0; i < allBlocks.length; i++) {\r\n let luocha = Math.abs(allBlocks[i].y - wallPos.y)\r\n if (allBlocks[i].x == wallPos.x && allBlocks[i].y > wallPos.y && luocha <= node.getComponent(\"Block\").shu) {\r\n // console.log(\"id:\",wall.getChildByName(\"num\").getComponent(cc.Label).string);\r\n downWalls.push(wallBottom);\r\n }\r\n }\r\n }\r\n\r\n if (downWalls.length != 0) {\r\n let result = this.detectingBlock(\"down\", node.getComponent(\"Block\").posX, node.getComponent(\"Block\").posY, allBlocks);\r\n if (result == true) result = this.passWall(result, downWalls, node);\r\n // console.log(\"碰到下边缘结果:\",jg);\r\n if (result) {\r\n\r\n this.blockNum -= 1;\r\n this.special_Treatment(node);\r\n jg = 1;\r\n this.createParticle(node, jg);\r\n return jg;\r\n }\r\n }\r\n\r\n\r\n }\r\n if (nodePos.y >= maxY || direction[3] == true) {\r\n pz += 1;\r\n // const date5 = new Date().getTime();\r\n // console.log(\"碰到上边缘\",date5);\r\n let upWalls = [];\r\n for (let i = 0; i < this.bottomDoors.length; i++) {\r\n let wallTop = this.bottomDoors[i].getChildByName(\"wall\");\r\n let wallPos = cc.v2(wallTop.getComponent(\"Wall\").posX, wallTop.getComponent(\"Wall\").posY);\r\n for (let i = 0; i < allBlocks.length; i++) {\r\n let luocha = Math.abs(allBlocks[i].y - wallPos.y)\r\n if (allBlocks[i].x == wallPos.x && allBlocks[i].y < wallPos.y && luocha <= node.getComponent(\"Block\").shu) {\r\n upWalls.push(wallTop);\r\n }\r\n }\r\n }\r\n\r\n if (upWalls.length != 0) {\r\n let result = this.detectingBlock(\"up\", node.getComponent(\"Block\").posX, node.getComponent(\"Block\").posY, allBlocks);\r\n if (result == true) result = this.passWall(result, upWalls, node);\r\n // console.log(\"碰到上边缘结果:\",result);\r\n if (result) {\r\n\r\n this.blockNum -= 1;\r\n this.special_Treatment(node);\r\n jg = 0;\r\n this.createParticle(node, jg);\r\n return jg;\r\n }\r\n }\r\n\r\n }\r\n if (pz == 0) jg = -1;\r\n // const date10 = new Date().getTime();\r\n // console.log(\"所有检测结束耗时\",date10,jg);\r\n return jg;\r\n }\r\n\r\n changeState() {\r\n if (this.openWall.length != 0) {\r\n for (let i = 0; i < this.openWall.length; i++) {\r\n this.openWall[i].getChildByName(\"wall\").getComponent(\"Wall\").changeLock();\r\n }\r\n }\r\n\r\n if (this.freezeWall.length != 0) {\r\n for (let i = 0; i < this.freezeWall.length; i++) {\r\n this.freezeWall[i].getChildByName(\"wall\").getComponent(\"Wall\").changeFreeze();\r\n }\r\n }\r\n }\r\n\r\n //检测是否可以通过门\r\n passWall(jg, wallArray, node) {\r\n for (let i = 0; i < wallArray.length; i++) {\r\n if (wallArray[i].getComponent(\"Wall\").special == 2) {\r\n console.log(\"尝试通过开关门:\", wallArray[i].getComponent(\"Wall\").open);\r\n }\r\n if (wallArray[i].getComponent(\"Wall\").special == 2 && wallArray[i].getComponent(\"Wall\").open == false) {\r\n jg = false;\r\n break;\r\n }\r\n //console.log(wallArray[i].getChildByName(\"wall\").getComponent(\"Wall\").color,node.getComponent(\"Block\").color)\r\n if (wallArray[i].getComponent(\"Wall\").color != node.getComponent(\"Block\").color) {\r\n\r\n jg = false;\r\n break;\r\n }\r\n if (node.getComponent(\"Block\").type == 5) {\r\n if (wallArray[i].getComponent(\"Wall\").special != 1) {\r\n jg = false;\r\n break;\r\n }\r\n }\r\n }\r\n if (jg == true && node.getComponent(\"Block\").type == 5) {\r\n for (let j = 0; j < wallArray.length; j++) {\r\n if (wallArray[j].getComponent(\"Wall\").special == 1 && wallArray[j].getComponent(\"Wall\").wall_Info.length != 0) {\r\n wallArray[j].getComponent(\"Wall\").playStarDoor();\r\n }\r\n }\r\n }\r\n // const date8 = new Date().getTime();\r\n // console.log(\"检测颜色是否能够通过门\",date8);\r\n return jg;\r\n }\r\n\r\n //检测方块和门中间有没有夹杂其他块\r\n detectingBlock(direction, posX, posY, blocks) {\r\n let jg = true;\r\n let id = \"\";\r\n if (blocks.length > 0) {\r\n for (let i = 0; i < blocks.length; i++) {\r\n let pos = blocks[i];\r\n let x = pos.x;\r\n let y = pos.y;\r\n id = this.mapBlocksWall[x][y].getComponent(\"MapBlock\").block_Id;\r\n jg = this.checkAllDirections(id, direction, x, y);\r\n if (!jg) {\r\n // console.log(\"方向检测没过\");\r\n i = 1000000;\r\n return jg;\r\n }\r\n }\r\n }\r\n // const date7 = new Date().getTime();\r\n // console.log(\"方向检测通过\",date7,jg);\r\n return jg;\r\n }\r\n\r\n //检测物体各方向是否有别的物块,防止碰到墙壁了但是是凹凸形状,墙与块之间有阻挡物块\r\n checkAllDirections(id, direction, x, y) {\r\n let jg = true;\r\n\r\n if (direction == \"left\") {\r\n if (this.mapBlocksWall[x - 1][y].getComponent(\"MapBlock\").block_Id != \"\" && this.mapBlocksWall[x - 1][y].getComponent(\"MapBlock\").block_Id != \"Wall\"\r\n && this.mapBlocksWall[x - 1][y].getComponent(\"MapBlock\").block_Id != id) {\r\n // console.log(\"左侧有物体\")\r\n jg = false;\r\n return jg;\r\n }\r\n if (this.mapBlocksWall[x - 1][y].opacity == 249) {\r\n jg = false;\r\n return jg;\r\n }\r\n if ((x - 2) >= 0) {\r\n if (this.mapBlocksWall[x - 2][y].getComponent(\"MapBlock\").block_Id != \"\" && this.mapBlocksWall[x - 2][y].getComponent(\"MapBlock\").block_Id != \"Wall\"\r\n && this.mapBlocksWall[x - 2][y].getComponent(\"MapBlock\").block_Id != id) {\r\n // console.log(\"左侧有物体\")\r\n jg = false;\r\n return jg;\r\n }\r\n if (this.mapBlocksWall[x - 2][y].opacity == 249) {\r\n jg = false;\r\n return jg;\r\n }\r\n }\r\n }\r\n else if (direction == \"right\") {\r\n if (this.mapBlocksWall[x + 1][y].getComponent(\"MapBlock\").block_Id != \"\" && this.mapBlocksWall[x + 1][y].getComponent(\"MapBlock\").block_Id != \"Wall\"\r\n && this.mapBlocksWall[x + 1][y].getComponent(\"MapBlock\").block_Id != id) {\r\n // console.log(\"右侧有物体\")\r\n jg = false;\r\n return jg;\r\n }\r\n if (this.mapBlocksWall[x + 1][y].opacity == 249) {\r\n jg = false;\r\n return jg;\r\n }\r\n if ((x + 2) <= this.mapBlocksWall.length - 1) {\r\n if (this.mapBlocksWall[x + 2][y].getComponent(\"MapBlock\").block_Id != \"\" && this.mapBlocksWall[x + 2][y].getComponent(\"MapBlock\").block_Id != \"Wall\"\r\n && this.mapBlocksWall[x + 2][y].getComponent(\"MapBlock\").block_Id != id) {\r\n // console.log(\"右侧有物体\")\r\n jg = false;\r\n return jg;\r\n }\r\n if (this.mapBlocksWall[x + 2][y].opacity == 249) {\r\n jg = false;\r\n return jg;\r\n }\r\n }\r\n }\r\n if (direction == \"up\") {\r\n if (this.mapBlocksWall[x][y + 1].getComponent(\"MapBlock\").block_Id != \"\" && this.mapBlocksWall[x][y + 1].getComponent(\"MapBlock\").block_Id != \"Wall\"\r\n && this.mapBlocksWall[x][y + 1].getComponent(\"MapBlock\").block_Id != id) {\r\n // console.log(\"上侧有物体\")\r\n jg = false;\r\n return jg;\r\n }\r\n if (this.mapBlocksWall[x][y + 1].opacity == 249) {\r\n jg = false;\r\n return jg;\r\n }\r\n if ((y + 2) <= this.mapBlocksWall[x].length - 1) {\r\n if (this.mapBlocksWall[x][y + 2].getComponent(\"MapBlock\").block_Id != \"\" && this.mapBlocksWall[x][y + 2].getComponent(\"MapBlock\").block_Id != \"Wall\"\r\n && this.mapBlocksWall[x][y + 2].getComponent(\"MapBlock\").block_Id != id) {\r\n // console.log(\"上侧有物体\")\r\n jg = false;\r\n return jg;\r\n }\r\n if (this.mapBlocksWall[x][y + 2].opacity == 249) {\r\n jg = false;\r\n return jg;\r\n }\r\n }\r\n }\r\n if (direction == \"down\") {\r\n if (this.mapBlocksWall[x][y - 1].getComponent(\"MapBlock\").block_Id != \"\" && this.mapBlocksWall[x][y - 1].getComponent(\"MapBlock\").block_Id != \"Wall\"\r\n && this.mapBlocksWall[x][y - 1].getComponent(\"MapBlock\").block_Id != id) {\r\n // console.log(\"下侧有物体\")\r\n jg = false;\r\n return jg;\r\n }\r\n if (this.mapBlocksWall[x][y - 1].opacity == 249) {\r\n jg = false;\r\n return jg;\r\n }\r\n if ((y - 2) >= 0) {\r\n if (this.mapBlocksWall[x][y - 2].getComponent(\"MapBlock\").block_Id != \"\" && this.mapBlocksWall[x][y - 2].getComponent(\"MapBlock\").block_Id != \"Wall\"\r\n && this.mapBlocksWall[x][y - 2].getComponent(\"MapBlock\").block_Id != id) {\r\n // console.log(\"下侧有物体\")\r\n jg = false;\r\n return jg;\r\n }\r\n if (this.mapBlocksWall[x][y - 2].opacity == 249) {\r\n jg = false;\r\n return jg;\r\n }\r\n }\r\n }\r\n // console.log(\"检测物体各方向是否有别的物块\",jg);\r\n return jg;\r\n }\r\n\r\n checkDiraction(allBlocks, maxX, maxY) {\r\n let jg = [false, false, false, false];\r\n for (let i = 0; i < allBlocks.length; i++) {\r\n if (allBlocks[i].x > 0 && jg[0] == false) {\r\n if (this.mapBlocksWall[allBlocks[i].x - 1][allBlocks[i].y].opacity == 250) {\r\n jg[0] = true;\r\n }\r\n }\r\n if (jg[1] == false) {\r\n if (this.mapBlocksWall[allBlocks[i].x + 1][allBlocks[i].y].opacity == 250) {\r\n jg[1] = true;\r\n }\r\n }\r\n if (allBlocks[i].y > 0 && jg[2] == false) {\r\n if (this.mapBlocksWall[allBlocks[i].x][allBlocks[i].y - 1].opacity == 250) {\r\n jg[2] = true;\r\n }\r\n }\r\n if (jg[3] == false) {\r\n if (this.mapBlocksWall[allBlocks[i].x][allBlocks[i].y + 1].opacity == 250) {\r\n jg[3] = true;\r\n }\r\n }\r\n }\r\n return jg;\r\n }\r\n\r\n checkLeft(allBlocks) {\r\n let jg = false;\r\n return jg;\r\n }\r\n\r\n checkRight(allBlocks, max) {\r\n let jg = false;\r\n for (let i = 0; i < allBlocks.length; i++) {\r\n\r\n }\r\n return jg;\r\n }\r\n\r\n checkDown(allBlocks) {\r\n let jg = false;\r\n for (let i = 0; i < allBlocks.length; i++) {\r\n\r\n }\r\n return jg;\r\n }\r\n\r\n checkUp(allBlocks, max) {\r\n let jg = false;\r\n for (let i = 0; i < allBlocks.length; i++) {\r\n\r\n }\r\n return jg;\r\n }\r\n\r\n\r\n //特殊处理,方块带道具或者需要消除冰块\r\n special_Treatment(node) {\r\n let freezeBlock = this.node.children.filter(child => {\r\n if (child.getComponent(\"Block\")) {\r\n if (child.getComponent(\"Block\").type == 4)\r\n return child\r\n }\r\n });\r\n if (freezeBlock.length > 0) {\r\n for (let i = 0; i < freezeBlock.length; i++) {\r\n freezeBlock[i].getChildByName(\"freeze\").getComponent(\"Freeze\").reduce(1);\r\n }\r\n }\r\n\r\n if (node.getComponent(\"Block\").type == 2 || node.getComponent(\"Block\").type == 4) {\r\n let lockBlock = this.node.children.filter(child => {\r\n if (child.getComponent(\"Block\")) {\r\n if (child.getComponent(\"Block\").type == 3)\r\n return child\r\n }\r\n });\r\n if (lockBlock.length > 0)\r\n for (let i = 0; i < lockBlock.length; i++) {\r\n lockBlock[i].getChildByName(\"lock\").getComponent(\"Lock\").reduce();\r\n }\r\n\r\n }\r\n\r\n for (let i = 0; i < this.blocks.length; i++) {\r\n if (this.blocks[i] == node) {\r\n this.blocks.splice(i, 1);\r\n }\r\n }\r\n\r\n }\r\n\r\n //判断游戏成功下一关\r\n nextLevel() {\r\n this.pause = false;\r\n this.openIce();\r\n\r\n this.blockNum = this.blocks.length;\r\n\r\n if (this.blockNum == 0 && !this.gameWin && !this.gameOver) {\r\n // alert(\"游戏成功\");\r\n this.gameWin = true;\r\n\r\n this.stopTimeCutDown();\r\n // console.log(\"成功消除一个\");\r\n cc.fx.GameTool.changeCoin(40);\r\n cc.fx.GameTool.addLevel(this.count_Time, this.add_Time);\r\n\r\n this.check_NewMode();\r\n setTimeout(() => {\r\n this.node.parent.parent.getChildByName(\"Win\").active = true;\r\n }, 660);\r\n // console.log(\"游戏成功\");\r\n }\r\n else {\r\n if (this.gameOver == true) {\r\n this.failLevel(null);\r\n }\r\n }\r\n }\r\n\r\n check_NewMode() {\r\n for (let i = 0; i < cc.fx.GameConfig.NEW_LEVEL.length; i++) {\r\n if ((cc.fx.GameConfig.GM_INFO.level + 1) == cc.fx.GameConfig.NEW_LEVEL[i].level) {\r\n this.new_mode = 3;\r\n }\r\n }\r\n }\r\n\r\n winLevel() {\r\n cc.fx.AudioManager._instance.playEffect(\"anniu_Big\", null);\r\n if (cc.fx.GameConfig.GM_INFO.level > 156) {\r\n cc.fx.GameConfig.GM_INFO.level = 156;\r\n // MapConroler._instance = null;\r\n\r\n if (this.new_mode == 3) {\r\n this.node.parent.parent.getChildByName(\"Win\").active = false;\r\n this.openNewMode(2);\r\n cc.fx.GameConfig.LEVEL_INFO_init(false, 0);\r\n return;\r\n }\r\n // cc.fx.GameConfig.LEVEL_INFO_init(true);\r\n cc.fx.AudioManager._instance.playEffect(\"zhuan1\", null);\r\n this.node.parent.parent.parent.getChildByName(\"zhuanchang\").active = true;\r\n this.node.parent.parent.parent.getChildByName(\"zhuanchang\").getComponent(sp.Skeleton).setAnimation(1, \"up\", false);\r\n // this.node.parent.parent.parent.getChildByName(\"zhuanchang\").getComponent(sp.Skeleton).setCompleteListener((entry) => {\r\n // if (entry.animation.name === \"up\") {\r\n // // 动画播放结束后执行的逻辑\r\n // this.node.parent.parent.parent.getChildByName(\"zhuanchang\").active = false;\r\n // }\r\n // });\r\n\r\n cc.director.preloadScene(\"HomeScene\", (err, asset) => {\r\n if (err) {\r\n console.error('动态加载 Prefab 失败:', err);\r\n return;\r\n }\r\n });\r\n setTimeout(() => {\r\n cc.director.loadScene(\"HomeScene\");\r\n }, 1200);\r\n }\r\n else {\r\n\r\n // console.log(\"下一关\");\r\n // MapConroler._instance = null;\r\n\r\n if (this.new_mode == 3) {\r\n this.node.parent.parent.getChildByName(\"Win\").active = false;\r\n this.openNewMode(2);\r\n cc.fx.GameConfig.LEVEL_INFO_init(false, 0);\r\n return;\r\n }\r\n cc.fx.AudioManager._instance.playEffect(\"zhuan1\", null);\r\n this.node.parent.parent.parent.getChildByName(\"zhuanchang\").active = true;\r\n this.node.parent.parent.parent.getChildByName(\"zhuanchang\").getComponent(sp.Skeleton).setAnimation(1, \"up\", false);\r\n // this.node.parent.parent.parent.getChildByName(\"zhuanchang\").getComponent(sp.Skeleton).setCompleteListener((entry) => {\r\n // if (entry.animation.name === \"up\") {\r\n // // 动画播放结束后执行的逻辑\r\n // this.node.parent.parent.parent.getChildByName(\"zhuanchang\").active = false;\r\n // }\r\n // });\r\n setTimeout(() => {\r\n cc.fx.GameConfig.LEVEL_INFO_init(true, 0);\r\n }, 1200);\r\n\r\n // this.node.parent.parent.parent.destroy();\r\n\r\n }\r\n }\r\n\r\n againLevel() {\r\n cc.fx.AudioManager._instance.playEffect(\"anniu_Big\", null);\r\n if (cc.fx.GameConfig.GM_INFO.hp < 1) {\r\n MiniGameSdk.API.showToast(\"体力值不足\");\r\n return;\r\n }\r\n if (!this.againCanTouch) return;\r\n\r\n this.againCanTouch = false;\r\n\r\n // MapConroler._instance = null;\r\n cc.fx.AudioManager._instance.playEffect(\"zhuan1\", null);\r\n this.node.parent.parent.parent.getChildByName(\"zhuanchang\").active = true;\r\n this.node.parent.parent.parent.getChildByName(\"zhuanchang\").getComponent(sp.Skeleton).setAnimation(1, \"up\", false);\r\n // this.node.parent.parent.parent.getChildByName(\"zhuanchang\").getComponent(sp.Skeleton).setCompleteListener((entry) => {\r\n // if (entry.animation.name === \"up\") {\r\n // // 动画播放结束后执行的逻辑\r\n // this.node.parent.parent.parent.getChildByName(\"zhuanchang\").active = false;\r\n // }\r\n // });\r\n setTimeout(() => {\r\n cc.fx.GameConfig.LEVEL_INFO_init(true, 0);\r\n }, 1200);\r\n // this.node.parent.parent.parent.destroy();\r\n }\r\n\r\n reviewLevel() {\r\n cc.fx.AudioManager._instance.playEffect(\"anniu_Big\", null);\r\n let coin = 900;\r\n if (cc.fx.GameConfig.GM_INFO.review == 1) coin = 1900;\r\n else if (cc.fx.GameConfig.GM_INFO.review == 2) coin = 2500;\r\n // console.log(\"自身金币:\",cc.fx.GameConfig.GM_INFO.coin,\"消耗金币:\",coin);\r\n if (cc.fx.GameConfig.GM_INFO.coin < Math.abs(coin)) {\r\n MiniGameSdk.API.showToast(\"金币不足,无法加时间\");\r\n return;\r\n }\r\n else {\r\n this.runRewive(-coin);\r\n }\r\n }\r\n\r\n runRewive(data) {\r\n console.log(\"复活回调函数内\", data);\r\n cc.fx.GameTool.changeCoin(data);\r\n MiniGameSdk.API.showToast(\"继续游戏\");\r\n\r\n if (cc.fx.GameConfig.GM_INFO.review < 2)\r\n cc.fx.GameConfig.GM_INFO.review += 1;\r\n\r\n this.gameOver = false;\r\n this.timeNumber = 21;\r\n this.add_Time += 20;\r\n this.pause = false;\r\n this.node.parent.parent.getChildByName(\"Lose\").active = false;\r\n this.startTimeCutDown();\r\n }\r\n\r\n\r\n\r\n homeBtn() {\r\n // alert(\"游戏失败\");\r\n cc.fx.AudioManager._instance.playEffect(\"anniu_Big\", null);\r\n if (!this.homeCanTouch) return;\r\n this.homeCanTouch = false;\r\n this.node.parent.parent.getChildByName(\"Lose\").active = true;\r\n this.node.parent.parent.getChildByName(\"Lose\").getChildByName(\"Time\").active = false;\r\n this.node.parent.parent.getChildByName(\"Lose\").getChildByName(\"Boom\").active = false;\r\n this.node.parent.parent.getChildByName(\"Lose\").getChildByName(\"Lock\").active = false;\r\n this.node.parent.parent.getChildByName(\"Lose\").getChildByName(\"Health\").active = true;\r\n let data = {\r\n time: this.count_Time,\r\n add_Time: this.add_Time,\r\n result: \"fail\"\r\n }\r\n cc.fx.GameTool.shushu_Track(\"finish_stage\", data);\r\n if (this.gameStart == true) {\r\n cc.fx.GameTool.setUserHealth(-1, (data) => {\r\n })\r\n }\r\n // this.node.parent.parent.parent.destroy();\r\n }\r\n\r\n returnHome() {\r\n cc.fx.AudioManager._instance.playEffect(\"anniu_Big\", null);\r\n if (MapConroler._instance = null) {\r\n return;\r\n }\r\n // MiniGameSdk.API.showToast(\"体力值减少\");\r\n // MapConroler._instance = null;\r\n cc.fx.GameConfig.LEVEL_INFO_init(false, 0);\r\n if (this.new_mode == 3) {\r\n this.node.parent.parent.getChildByName(\"Win\").active = false;\r\n this.openNewMode(1);\r\n return;\r\n }\r\n cc.fx.AudioManager._instance.playEffect(\"zhuan1\", null);\r\n this.node.parent.parent.parent.getChildByName(\"zhuanchang\").active = true;\r\n this.node.parent.parent.parent.getChildByName(\"zhuanchang\").getComponent(sp.Skeleton).setAnimation(1, \"up\", false);\r\n cc.director.preloadScene(\"HomeScene\", (err, asset) => {\r\n if (err) {\r\n console.error('动态加载 Prefab 失败:', err);\r\n return;\r\n }\r\n\r\n });\r\n\r\n setTimeout(() => {\r\n cc.director.loadScene(\"HomeScene\");\r\n }, 1200);\r\n }\r\n\r\n //判断游戏失败\r\n failLevel(type) {\r\n this.stopTimeCutDown();\r\n if (this.gameOver == true || this.gameWin == true) {\r\n return;\r\n }\r\n\r\n let time = 0;\r\n this.gameOver = true;\r\n if (type == \"boom\") {\r\n time = 2000;\r\n }\r\n setTimeout(() => {\r\n this.node.parent.parent.getChildByName(\"Lose\").active = true;\r\n this.node.parent.parent.getChildByName(\"Lose\").getChildByName(\"Time\").active = true;\r\n this.node.parent.parent.getChildByName(\"Lose\").getChildByName(\"Boom\").active = false;\r\n let buyBtn = this.node.parent.parent.getChildByName(\"Lose\").getChildByName(\"Time\").getChildByName(\"buyBtn\");\r\n buyBtn.getChildByName(\"coin1\").active = buyBtn.getChildByName(\"coin2\").active = buyBtn.getChildByName(\"coin3\").active = false;\r\n if (cc.fx.GameConfig.GM_INFO.review == 0) buyBtn.getChildByName(\"coin1\").active = true;\r\n else if (cc.fx.GameConfig.GM_INFO.review == 1) buyBtn.getChildByName(\"coin2\").active = true;\r\n else if (cc.fx.GameConfig.GM_INFO.review == 2) buyBtn.getChildByName(\"coin3\").active = true;\r\n if (type) {\r\n if (type == \"boom\") {\r\n this.node.parent.parent.getChildByName(\"Lose\").getChildByName(\"Time\").active = false;\r\n this.node.parent.parent.getChildByName(\"Lose\").getChildByName(\"Boom\").active = true;\r\n }\r\n }\r\n }, time);\r\n\r\n // console.log(\"游戏失败\");\r\n }\r\n\r\n //打开新模式弹窗\r\n openNewMode(type) {\r\n let index = 0;\r\n const BLOCKS_PER_FRAME = 5; // 每帧销毁的方块数量\r\n const destroyBlocks = () => {\r\n const endIndex = Math.min(index + BLOCKS_PER_FRAME, this.blocks.length);\r\n for (; index < endIndex; index++) {\r\n if (this.blocks[index]) {\r\n this.blocks[index].destroy();\r\n }\r\n }\r\n // 如果还有方块未销毁,下一帧继续\r\n if (index < this.blocks.length) {\r\n this.scheduleOnce(destroyBlocks, 0);\r\n } else {\r\n }\r\n };\r\n // 开始分帧销毁方块\r\n destroyBlocks();\r\n this.node.parent.parent.getChildByName(\"NewMode\").active = true;\r\n this.node.parent.parent.getChildByName(\"NewMode\").getComponent(\"NewMode\").setMode(type);\r\n }\r\n\r\n\r\n downDoor(color, type) {\r\n for (let i = 0; i < this.wallArray.length; i++) {\r\n if (this.wallArray[i].getChildByName(\"wall\").getComponent(\"Wall\").color == color) {\r\n if (type) {\r\n if (type == 5) {\r\n if (this.wallArray[i].getChildByName(\"wall\").getComponent(\"Wall\").special == 1) {\r\n this.wallArray[i].getChildByName(\"wall\").getComponent(\"Wall\").downDoor();\r\n }\r\n }\r\n else this.wallArray[i].getChildByName(\"wall\").getComponent(\"Wall\").downDoor();\r\n }\r\n else this.wallArray[i].getChildByName(\"wall\").getComponent(\"Wall\").downDoor();\r\n }\r\n }\r\n }\r\n\r\n upDoor() {\r\n for (let i = 0; i < this.wallArray.length; i++) {\r\n if (this.wallArray[i].getChildByName(\"wall\").opacity == 0) {\r\n this.wallArray[i].getChildByName(\"wall\").getComponent(\"Wall\").upDoor();\r\n }\r\n }\r\n }\r\n\r\n //开始倒计时\r\n startTimeCutDown() {\r\n this.scheduleCallback = function () {\r\n if (this.pause) return;\r\n if (this.timeNumber <= 0) {\r\n this.stopTimeCutDown();\r\n var timeTemp = cc.fx.GameTool.getTimeMargin(this.timeNumber);\r\n NumberToImage.getTimeMargin(this.timeNumber, 50, \"time_\", this.timeLabel)\r\n // this.timeLabel.string = timeTemp.toString();\r\n if (!this.pause) this.failLevel(\"time\");\r\n }\r\n else {\r\n this.timeNumber -= 1;\r\n this.count_Time += 1;\r\n var timeTemp = cc.fx.GameTool.getTimeMargin(this.timeNumber);\r\n NumberToImage.getTimeMargin(this.timeNumber, 50, \"time_\", this.timeLabel)\r\n // this.timeLabel.string = timeTemp.toString();\r\n }\r\n }.bind(this);\r\n this.schedule(this.scheduleCallback, 1);\r\n }\r\n // 停止倒计时\r\n stopTimeCutDown() {\r\n if (this.scheduleCallback) {\r\n this.unschedule(this.scheduleCallback);\r\n }\r\n }\r\n\r\n //使用时间道具\r\n useTimeProp() {\r\n if (this.node.parent.getChildByName(\"Ice\").active == true || this.hammer == true\r\n || this.magicMask.active == true || this.timeNumber <= 1) {\r\n return;\r\n }\r\n let freezeBtn = this.node.parent.getChildByName(\"Bottom\").getChildByName(\"timeBtn\");\r\n if (freezeBtn.getComponent(\"btnControl\")._touch) {\r\n freezeBtn.getComponent(\"btnControl\").setTouch(false);\r\n if (cc.fx.GameConfig.GM_INFO.freezeAmount < 1) {\r\n if (cc.fx.GameConfig.GM_INFO.coin < 1500) {\r\n MiniGameSdk.API.showToast(\"金币不足,无法购买道具\");\r\n freezeBtn.getComponent(\"btnControl\").setTouch(true);\r\n return;\r\n }\r\n this.node.parent.parent.getChildByName(\"propWindow\").active = true;\r\n this.node.parent.parent.parent.getComponent(\"SceneManager\").openPropBuy(\"freeze\");\r\n }\r\n else {\r\n if (!this.node.parent.getChildByName(\"Ice\").active && !this.pause) {\r\n const timestamp = Date.now();\r\n this.freezeMask.active = true;\r\n\r\n this.pause = true;\r\n this.node.parent.getChildByName(\"Ice\").active = true;\r\n this.node.parent.getChildByName(\"Top\").getChildByName(\"Ice\").active = true;\r\n\r\n cc.fx.GameConfig.GM_INFO.freezeAmount -= 1;\r\n if (cc.fx.GameConfig.GM_INFO.freezeAmount < 0)\r\n cc.fx.GameConfig.GM_INFO.freezeAmount = 0;\r\n this.iceLabel.string = cc.fx.GameConfig.GM_INFO.freezeAmount.toString();\r\n let propInfo = cc.fx.StorageMessage.getStorage(\"prop\");\r\n propInfo.freezeAmount = cc.fx.GameConfig.GM_INFO.freezeAmount;\r\n propInfo.timestamp = timestamp;\r\n cc.fx.StorageMessage.setStorage(\"prop\", propInfo);\r\n cc.fx.GameTool.setUserProp(2001, cc.fx.GameConfig.GM_INFO.freezeAmount, (data) => {\r\n })\r\n let data = {\r\n id: \"2001\",\r\n num: -1\r\n }\r\n cc.fx.GameTool.shushu_Track(\"resource_cost\", data);\r\n }\r\n else MiniGameSdk.API.showToast(\"道具使用中,请稍后再试\");\r\n }\r\n }\r\n\r\n\r\n }\r\n\r\n //解开时间冻结\r\n openIce() {\r\n if (this.node.parent.getChildByName(\"Ice\").active) {\r\n this.freezeMask.active = false;\r\n let freezeBtn = this.node.parent.getChildByName(\"Bottom\").getChildByName(\"timeBtn\");\r\n freezeBtn.getComponent(\"btnControl\").setTouch(true);\r\n this.node.parent.getChildByName(\"Ice\").active = false;\r\n this.node.parent.getChildByName(\"Top\").getChildByName(\"Ice\").active = false;\r\n this.pause = false;\r\n // this.startTimeCutDown();\r\n }\r\n }\r\n\r\n handleBuySuccess(data) {\r\n this.pause = false;\r\n const timestamp = Date.now();\r\n // console.log(\"回调函数内:\",this.pause);\r\n let freezeBtn = this.node.parent.getChildByName(\"Bottom\").getChildByName(\"timeBtn\");\r\n let hammerBtn = this.node.parent.getChildByName(\"Bottom\").getChildByName(\"destroyBtn\");\r\n let magicBtn = this.node.parent.getChildByName(\"Bottom\").getChildByName(\"magicBtn\");\r\n if (data == \"freezeAmount\") freezeBtn.getComponent(\"btnControl\").setTouch(true);\r\n else if (data == \"hammerAmount\") hammerBtn.getComponent(\"btnControl\").setTouch(true);\r\n else if (data == \"magicAmount\") magicBtn.getComponent(\"btnControl\").setTouch(true);\r\n if (data == \"freezeAmount\") {\r\n cc.fx.GameConfig.GM_INFO.freezeAmount += 3;\r\n let propInfo = cc.fx.StorageMessage.getStorage(\"prop\");\r\n propInfo.freezeAmount = cc.fx.GameConfig.GM_INFO.freezeAmount;\r\n propInfo.timestamp = timestamp;\r\n cc.fx.StorageMessage.setStorage(\"prop\", propInfo);\r\n this.node.parent.parent.parent.getComponent(\"SceneManager\").closePropBuy();\r\n setTimeout(() => {\r\n this.iceLabel.string = cc.fx.GameConfig.GM_INFO.freezeAmount.toString();\r\n MiniGameSdk.API.showToast(\"购买冻结时间道具成功\");\r\n }, 200);\r\n\r\n\r\n }\r\n else if (data == \"magicAmount\") {\r\n cc.fx.GameConfig.GM_INFO.magicAmount += 3;\r\n let propInfo = cc.fx.StorageMessage.getStorage(\"prop\");\r\n propInfo.magicAmount = cc.fx.GameConfig.GM_INFO.magicAmount;\r\n propInfo.timestamp = timestamp;\r\n cc.fx.StorageMessage.setStorage(\"prop\", propInfo);\r\n this.node.parent.parent.parent.getComponent(\"SceneManager\").closePropBuy();\r\n setTimeout(() => {\r\n MiniGameSdk.API.showToast(\"购买锤子道具成功\");\r\n this.magicLabel.string = cc.fx.GameConfig.GM_INFO.magicAmount.toString();\r\n }, 200);\r\n\r\n }\r\n else if (data == \"hammerAmount\") {\r\n cc.fx.GameConfig.GM_INFO.hammerAmount += 3;\r\n let propInfo = cc.fx.StorageMessage.getStorage(\"prop\");\r\n propInfo.hammerAmount = cc.fx.GameConfig.GM_INFO.hammerAmount;\r\n propInfo.timestamp = timestamp;\r\n cc.fx.StorageMessage.setStorage(\"prop\", propInfo);\r\n this.node.parent.parent.parent.getComponent(\"SceneManager\").closePropBuy();\r\n setTimeout(() => {\r\n this.hammerLabel.string = cc.fx.GameConfig.GM_INFO.hammerAmount.toString();\r\n MiniGameSdk.API.showToast(\"购买魔法棒道具成功\");\r\n }, 200);\r\n\r\n }\r\n\r\n\r\n\r\n }\r\n\r\n //使用锤子道具\r\n useHammer() {\r\n if (this.node.parent.getChildByName(\"Ice\").active == true || this.hammer == true\r\n || this.magicMask.active == true || this.timeNumber <= 1) {\r\n return;\r\n }\r\n let hammerBtn = this.node.parent.getChildByName(\"Bottom\").getChildByName(\"destroyBtn\");\r\n if (hammerBtn.getComponent(\"btnControl\")._touch) {\r\n hammerBtn.getComponent(\"btnControl\").setTouch(false);\r\n if (cc.fx.GameConfig.GM_INFO.hammerAmount < 1) {\r\n if (cc.fx.GameConfig.GM_INFO.coin < 1500) {\r\n MiniGameSdk.API.showToast(\"金币不足,无法购买道具\");\r\n hammerBtn.getComponent(\"btnControl\").setTouch(true);\r\n return;\r\n }\r\n this.node.parent.parent.getChildByName(\"propWindow\").active = true;\r\n this.node.parent.parent.parent.getComponent(\"SceneManager\").openPropBuy(\"hammer\");\r\n }\r\n else {\r\n if (!this.hammer) {\r\n const timestamp = Date.now();\r\n this.hammerMask.active = true;\r\n\r\n this.hammer = true;\r\n cc.fx.GameConfig.GM_INFO.hammerAmount -= 1;\r\n if (cc.fx.GameConfig.GM_INFO.hammerAmount < 0)\r\n cc.fx.GameConfig.GM_INFO.hammerAmount = 0;\r\n this.hammerLabel.string = cc.fx.GameConfig.GM_INFO.hammerAmount.toString();\r\n let propInfo = cc.fx.StorageMessage.getStorage(\"prop\");\r\n console.log(\"锤子道具信息:\", propInfo);\r\n propInfo.hammerAmount = cc.fx.GameConfig.GM_INFO.hammerAmount;\r\n propInfo.timestamp = timestamp;\r\n cc.fx.StorageMessage.setStorage(\"prop\", propInfo);\r\n cc.fx.GameTool.setUserProp(2002, cc.fx.GameConfig.GM_INFO.hammerAmount, (data) => {\r\n })\r\n let data = {\r\n id: \"2002\",\r\n num: -1\r\n }\r\n cc.fx.GameTool.shushu_Track(\"resource_cost\", data);\r\n }\r\n else MiniGameSdk.API.showToast(\"道具使用中,请稍后再试\");\r\n }\r\n\r\n }\r\n\r\n }\r\n\r\n buyMagic() {\r\n if (cc.fx.GameConfig.GM_INFO.coin < 1500) {\r\n MiniGameSdk.API.showToast(\"金币不足,无法购买道具\");\r\n return;\r\n }\r\n cc.fx.GameTool.buyProp(2003, this.handleBuySuccess.bind(this, \"magicAmount\"));\r\n }\r\n\r\n buyHammer() {\r\n if (cc.fx.GameConfig.GM_INFO.coin < 1500) {\r\n MiniGameSdk.API.showToast(\"金币不足,无法购买道具\");\r\n return;\r\n }\r\n cc.fx.GameTool.buyProp(2002, this.handleBuySuccess.bind(this, \"hammerAmount\"));\r\n }\r\n\r\n buyFreeze() {\r\n if (cc.fx.GameConfig.GM_INFO.coin < 1500) {\r\n MiniGameSdk.API.showToast(\"金币不足,无法购买道具\");\r\n return;\r\n }\r\n cc.fx.GameTool.buyProp(2001, this.handleBuySuccess.bind(this, \"freezeAmount\"));\r\n }\r\n\r\n //使用魔法棒随机消除两个方块\r\n useMagic() {\r\n if (this.node.parent.getChildByName(\"Ice\").active == true || this.hammer == true\r\n || this.magicMask.active == true || this.timeNumber <= 1) {\r\n return;\r\n }\r\n let magicBtn = this.node.parent.getChildByName(\"Bottom\").getChildByName(\"magicBtn\");\r\n if (magicBtn.getComponent(\"btnControl\")._touch) {\r\n magicBtn.getComponent(\"btnControl\").setTouch(false);\r\n if (cc.fx.GameConfig.GM_INFO.magicAmount < 1) {\r\n if (cc.fx.GameConfig.GM_INFO.coin < 1500) {\r\n MiniGameSdk.API.showToast(\"金币不足,无法购买道具\");\r\n magicBtn.getComponent(\"btnControl\").setTouch(true);\r\n return;\r\n }\r\n this.node.parent.parent.getChildByName(\"propWindow\").active = true;\r\n this.node.parent.parent.parent.getComponent(\"SceneManager\").openPropBuy(\"magic\");\r\n // MiniGameSdk.API.showToast(\"魔法棒数量不足,自动购买魔法棒\");\r\n }\r\n else {\r\n const timestamp = Date.now();\r\n this.magicMask.active = true;\r\n setTimeout(() => {\r\n this.magicMask.active = false;\r\n magicBtn.getComponent(\"btnControl\").setTouch(true);\r\n }, 1000);\r\n\r\n cc.fx.GameConfig.GM_INFO.magicAmount -= 1;\r\n if (cc.fx.GameConfig.GM_INFO.magicAmount < 0)\r\n cc.fx.GameConfig.GM_INFO.magicAmount = 0;\r\n this.magicLabel.string = cc.fx.GameConfig.GM_INFO.magicAmount.toString();\r\n let propInfo = cc.fx.StorageMessage.getStorage(\"prop\");\r\n propInfo.magicAmount = cc.fx.GameConfig.GM_INFO.magicAmount;\r\n propInfo.timestamp = timestamp;\r\n cc.fx.StorageMessage.setStorage(\"prop\", propInfo);\r\n cc.fx.GameTool.setUserProp(2003, cc.fx.GameConfig.GM_INFO.magicAmount, (data) => {\r\n })\r\n let data = {\r\n id: \"2003\",\r\n num: -1\r\n }\r\n cc.fx.GameTool.shushu_Track(\"resource_cost\", data);\r\n let nomalArray = [];\r\n // this.magicBtn.node.active = false;\r\n for (let i = 0; i < this.blocks.length; i++) {\r\n // console.log(\"方块类型\",this.blocks[i].getComponent(\"Block\").type);\r\n if (this.blocks[i].getComponent(\"Block\").type == 3) {\r\n this.loackArray.push(this.blocks[i]);\r\n }\r\n else if (this.blocks[i].getComponent(\"Block\").type == 4) {\r\n this.freezeArray.push(this.blocks[i]);\r\n }\r\n else if (this.blocks[i].getComponent(\"Block\").type == 10) {\r\n if (this.blocks[i].getComponent(\"Block\").block_Info.node) {\r\n nomalArray.push(this.blocks[i].getComponent(\"Block\").block_Info.node);\r\n }\r\n else nomalArray.push(this.blocks[i]);\r\n }\r\n else {\r\n nomalArray.push(this.blocks[i]);\r\n }\r\n }\r\n if (nomalArray.length > 1) {\r\n nomalArray = cc.fx.GameTool.shuffleArray(nomalArray);\r\n nomalArray[0].getComponent(\"Block\").eliminate();\r\n let time = 0;\r\n if (nomalArray[0].getComponent(\"Block\").type == 1 || nomalArray[0].getComponent(\"Block\").type == 9) {\r\n time = 200;\r\n }\r\n if (time > 0) {\r\n setTimeout(() => {\r\n nomalArray[1].getComponent(\"Block\").eliminate();\r\n }, time);\r\n return;\r\n }\r\n else {\r\n nomalArray[1].getComponent(\"Block\").eliminate();\r\n return;\r\n }\r\n }\r\n else if (nomalArray.length == 1) {\r\n nomalArray[0].getComponent(\"Block\").eliminate();\r\n let time = 0;\r\n if (nomalArray[0].getComponent(\"Block\").type == 1 || nomalArray[0].getComponent(\"Block\").type == 9) {\r\n time = 200;\r\n }\r\n setTimeout(() => {\r\n if (this.freezeArray.length == 0 && this.loackArray.length == 0) {\r\n // console.log(\"只剩下一个块道具使用完毕\");\r\n }\r\n else {\r\n if (this.loackArray.length != 0) {\r\n // console.log(\"消除一个普通块后,消除一个带锁块\");\r\n this.loackArray[0].getComponent(\"Block\").eliminate();\r\n return;\r\n }\r\n else if (this.freezeArray.length != 0) {\r\n // console.log(\"消除一个普通块后,消除一个冻结块\");\r\n this.freezeArray[0].getComponent(\"Block\").eliminate();\r\n return;\r\n }\r\n }\r\n }, 200 + time);\r\n }\r\n else {\r\n let count = 2;\r\n if (this.loackArray.length != 0) {\r\n for (let i = 0; i < this.loackArray.length; i++) {\r\n // console.log(\"没有普通快,魔法消除一个带锁块\");\r\n this.loackArray[i].getComponent(\"Block\").eliminate();\r\n count -= 1;\r\n if (count == 0) {\r\n break;\r\n }\r\n }\r\n }\r\n\r\n setTimeout(() => {\r\n if (count != 0) {\r\n for (let i = 0; i < this.freezeArray.length; i++) {\r\n // console.log(\"没有普通快,魔法消除一个冻结块\");\r\n // this.freezeArray[i].getComponent(\"Block\").eliminate();\r\n count -= 1;\r\n if (count == 0) {\r\n break;\r\n }\r\n }\r\n }\r\n }, 100);\r\n }\r\n }\r\n }\r\n }\r\n\r\n //按下暂停按钮\r\n usePause() {\r\n if (this.pause) {\r\n this.pause = false;\r\n }\r\n else {\r\n this.pause = true;\r\n }\r\n }\r\n\r\n\r\n\r\n //根据关卡设置地图大小\r\n setMapInfo() {\r\n let width = 0;\r\n if (this.mapWidth < 10) {\r\n width = 0.2;\r\n }\r\n else if (this.mapWidth < 17) {\r\n width = 0.15 - (this.mapWidth - 11) * 0.01;\r\n }\r\n\r\n this.node.scale = 1.6 + (6 - this.mapWidth) * width;\r\n\r\n if (this.mapWidth == 8 && this.mapHeight > 13) {\r\n this.node.scale = 1;\r\n }\r\n\r\n // this.node.scale = 1;\r\n cc.fx.GameConfig.GM_INFO.scale = this.node.scale;\r\n // this.node.scale = 0.5;\r\n // console.log(this.node.scale);\r\n // this.node.scale = 1;\r\n }\r\n\r\n //创建门的粒子特效\r\n createParticle(block, jg) {\r\n let particle = cc.instantiate(MapConroler._instance.Block_Prop[9]);\r\n particle.parent = this.node;\r\n particle.zIndex = 1000;\r\n let width = Math.floor(block.width / 120);\r\n let height = Math.floor(block.height / 120);\r\n let name = \"\";\r\n\r\n if (jg == 0 || jg == 1) {\r\n let y = block.y + block.height;\r\n let x = block.x - block.width / 2;\r\n name = \"top_\" + width + \"_\" + height;\r\n if (jg == 1) {\r\n name = \"bot_\" + width + \"_\" + height;\r\n y = block.y;\r\n }\r\n if (block.anchorX == 0.5) {\r\n x = block.x;\r\n }\r\n else if (block.anchorX == 0.33) {\r\n x = block.x + block.width * (0.5 - 0.33);\r\n }\r\n else if (block.anchorX == 0.66) {\r\n x = block.x + block.width * (0.5 - 0.66);\r\n }\r\n particle.setPosition(x, y);\r\n }\r\n else if (jg == 2 || jg == 3) {\r\n name = \"left_\" + height + \"_\" + width;\r\n let x = block.x - block.width;\r\n let y = block.y + block.height / 2;\r\n if (block.anchorX == 0.5) {\r\n x = block.x - block.width / 2;\r\n }\r\n else if (block.anchorX == 0.33) {\r\n x = block.x - block.width * 0.33;\r\n }\r\n else if (block.anchorX == 0.66) {\r\n x = block.x + block.width * 0.66;\r\n }\r\n if (jg == 3) {\r\n name = \"right_\" + height + \"_\" + width;\r\n x = block.x;\r\n if (block.anchorX == 0.5) {\r\n x = block.x + block.width / 2;\r\n }\r\n else if (block.anchorX == 0.33) {\r\n x = block.x + block.width * 0.66;\r\n }\r\n else if (block.anchorX == 0.66) {\r\n x = block.x + block.width * 0.33;\r\n }\r\n }\r\n\r\n particle.setPosition(x, y);\r\n }\r\n\r\n let particleNode = particle.getChildByName(name);\r\n let color = block.getComponent(\"Block\").color - 1;\r\n\r\n particleNode.getComponent(cc.ParticleSystem).spriteFrame = particle.getComponent(\"Reduce\").Block_Color[color];\r\n particleNode.active = true;\r\n setTimeout(() => {\r\n cc.tween(particle)\r\n .to(2, { opacity: 0 })\r\n .call(() => {\r\n particle.destroy();\r\n })\r\n .start();\r\n }, 1200);\r\n }\r\n\r\n removeOneBlock() {\r\n // 移除所有方块\r\n for (let i = 0; i < this.blocks.length; i++) {\r\n if (this.blocks[i].opacity == 0) {\r\n this.blocks[i].destroy();\r\n this.blocks.splice(i, 1);\r\n }\r\n }\r\n }\r\n\r\n\r\n\r\n update(dt) {\r\n\r\n }\r\n}\r\n"]} \ No newline at end of file diff --git a/library/imports/cf/cf230e1b-b0c2-41a7-b495-69b7e166eb98.json b/library/imports/23/23fb16a5-4b81-4d2d-8fda-baffb1561c23.json similarity index 64% rename from library/imports/cf/cf230e1b-b0c2-41a7-b495-69b7e166eb98.json rename to library/imports/23/23fb16a5-4b81-4d2d-8fda-baffb1561c23.json index 7ef7173..20a0055 100644 --- a/library/imports/cf/cf230e1b-b0c2-41a7-b495-69b7e166eb98.json +++ b/library/imports/23/23fb16a5-4b81-4d2d-8fda-baffb1561c23.json @@ -2,11 +2,11 @@ "__type__": "cc.SpriteFrame", "content": { "name": "9down4", - "texture": "ed2c3a21-0522-445d-9904-76843208705f", - "atlas": "d7e227ab-cc06-48f5-a2ac-092b19ec7f6f", + "texture": "c660c59d-e175-4194-aaf3-33d1d03b783f", + "atlas": "3d019ed8-3019-436d-add0-ceeb02a5baaf", "rect": [ - 377, - 368, + 860, + 471, 45, 124 ], @@ -18,6 +18,7 @@ 45, 124 ], + "rotated": 1, "capInsets": [ 0, 0, diff --git a/library/imports/6e/6e6d4d1c-d136-480b-8a0d-38ea4cacf4f3.json b/library/imports/25/257d5583-e4b0-4dfc-910b-6efdc382de04.json similarity index 66% rename from library/imports/6e/6e6d4d1c-d136-480b-8a0d-38ea4cacf4f3.json rename to library/imports/25/257d5583-e4b0-4dfc-910b-6efdc382de04.json index ebe6667..e5bb482 100644 --- a/library/imports/6e/6e6d4d1c-d136-480b-8a0d-38ea4cacf4f3.json +++ b/library/imports/25/257d5583-e4b0-4dfc-910b-6efdc382de04.json @@ -2,11 +2,11 @@ "__type__": "cc.SpriteFrame", "content": { "name": "1down5", - "texture": "ed2c3a21-0522-445d-9904-76843208705f", - "atlas": "d7e227ab-cc06-48f5-a2ac-092b19ec7f6f", + "texture": "c660c59d-e175-4194-aaf3-33d1d03b783f", + "atlas": "3d019ed8-3019-436d-add0-ceeb02a5baaf", "rect": [ - 847, 1, + 48, 45, 245 ], @@ -18,6 +18,7 @@ 45, 245 ], + "rotated": 1, "capInsets": [ 0, 0, diff --git a/library/imports/28/287c291c-a6f2-4f5f-9c2e-af814874901b.json b/library/imports/28/287c291c-a6f2-4f5f-9c2e-af814874901b.json new file mode 100644 index 0000000..839e09a --- /dev/null +++ b/library/imports/28/287c291c-a6f2-4f5f-9c2e-af814874901b.json @@ -0,0 +1,29 @@ +{ + "__type__": "cc.SpriteFrame", + "content": { + "name": "2color1", + "texture": "418b4767-01bf-4ac2-823b-9880f2a79215", + "atlas": "cc01997d-495e-480d-871e-be405a6c38b5", + "rect": [ + 795, + 618, + 138, + 69 + ], + "offset": [ + 0, + 0 + ], + "originalSize": [ + 138, + 69 + ], + "rotated": 1, + "capInsets": [ + 0, + 0, + 0, + 0 + ] + } +} \ No newline at end of file diff --git a/library/imports/28/28e0793b-62a9-41b7-9512-082ce55eca71.json b/library/imports/28/28e0793b-62a9-41b7-9512-082ce55eca71.json new file mode 100644 index 0000000..2cd2966 --- /dev/null +++ b/library/imports/28/28e0793b-62a9-41b7-9512-082ce55eca71.json @@ -0,0 +1,29 @@ +{ + "__type__": "cc.SpriteFrame", + "content": { + "name": "6color1", + "texture": "418b4767-01bf-4ac2-823b-9880f2a79215", + "atlas": "cc01997d-495e-480d-871e-be405a6c38b5", + "rect": [ + 1021, + 743, + 138, + 69 + ], + "offset": [ + 0, + 0 + ], + "originalSize": [ + 138, + 69 + ], + "rotated": 1, + "capInsets": [ + 0, + 0, + 0, + 0 + ] + } +} \ No newline at end of file diff --git a/library/imports/2a/2a1bffdc-6b63-425c-9710-a32b4d93ea4b.json b/library/imports/2a/2a1bffdc-6b63-425c-9710-a32b4d93ea4b.json deleted file mode 100644 index 88e9eb1..0000000 --- a/library/imports/2a/2a1bffdc-6b63-425c-9710-a32b4d93ea4b.json +++ /dev/null @@ -1,459 +0,0 @@ -{ - "__type__": "sp.SkeletonData", - "_name": "zhandan", - "_objFlags": 0, - "_native": "", - "_skeletonJson": { - "skeleton": { - "hash": "k+H2C+mXFNRS2OlTrDJIvQAbPQ4", - "spine": "3.8.99", - "x": -35.7, - "y": -33.01, - "width": 62, - "height": 95, - "images": "./0/", - "audio": "" - }, - "bones": [ - { - "name": "root" - }, - { - "name": "banyuan0001", - "parent": "root", - "x": 107.34, - "y": 35.2 - }, - { - "name": "huoquan0001", - "parent": "root", - "x": 104.99, - "y": -67.86, - "scaleX": 2, - "scaleY": 2 - }, - { - "name": "zaza0001", - "parent": "root", - "x": 238.73, - "y": -87.12, - "scaleX": 2, - "scaleY": 2 - }, - { - "name": "banyuan2", - "parent": "root", - "x": -4.44, - "y": -26.16 - }, - { - "name": "banyuan1", - "parent": "banyuan2", - "x": -0.25, - "y": 40.16 - } - ], - "slots": [ - { - "name": "bg", - "bone": "root" - }, - { - "name": "huoquan0001", - "bone": "huoquan0001" - }, - { - "name": "zaza0001", - "bone": "zaza0001" - }, - { - "name": "banyuan0001", - "bone": "banyuan0001" - }, - { - "name": "zhadan", - "bone": "banyuan1", - "attachment": "zhadan1" - } - ], - "skins": [ - { - "name": "default", - "attachments": { - "banyuan0001": { - "banyuan0001": { - "x": 4.37, - "y": 34.83, - "width": 265, - "height": 209 - }, - "banyuan0004": { - "x": 4.37, - "y": 34.83, - "width": 265, - "height": 209 - }, - "banyuan0007": { - "x": 4.37, - "y": 34.83, - "width": 265, - "height": 209 - }, - "banyuan0010": { - "x": 4.37, - "y": 34.83, - "width": 265, - "height": 209 - }, - "banyuan0013": { - "x": 4.37, - "y": 34.83, - "width": 265, - "height": 209 - }, - "banyuan0016": { - "x": 4.37, - "y": 34.83, - "width": 265, - "height": 209 - } - }, - "huoquan0001": { - "huoquan0001": { - "x": -0.96, - "y": -3.35, - "width": 222, - "height": 151 - }, - "huoquan0004": { - "x": -0.96, - "y": -3.35, - "width": 222, - "height": 151 - }, - "huoquan0006": { - "x": -0.96, - "y": -3.35, - "width": 222, - "height": 151 - }, - "huoquan0009": { - "x": -0.96, - "y": -3.35, - "width": 222, - "height": 151 - }, - "huoquan0012": { - "x": -0.96, - "y": -3.35, - "width": 222, - "height": 151 - }, - "huoquan0015": { - "x": -0.96, - "y": -3.35, - "width": 222, - "height": 151 - } - }, - "zaza0001": { - "zaza0001": { - "x": -4.18, - "y": 21.34, - "width": 251, - "height": 223 - }, - "zaza0003": { - "x": -4.18, - "y": 21.34, - "width": 251, - "height": 223 - }, - "zaza0004": { - "x": -4.18, - "y": 21.34, - "width": 251, - "height": 223 - }, - "zaza0008": { - "x": -4.18, - "y": 21.34, - "width": 251, - "height": 223 - }, - "zaza0012": { - "x": -4.18, - "y": 21.34, - "width": 251, - "height": 223 - }, - "zaza0016": { - "x": -4.18, - "y": 21.34, - "width": 251, - "height": 223 - }, - "zaza0020": { - "x": -4.18, - "y": 21.34, - "width": 251, - "height": 223 - }, - "zaza0024": { - "x": -4.18, - "y": 21.34, - "width": 251, - "height": 223 - }, - "zaza0028": { - "x": -4.18, - "y": 21.34, - "width": 251, - "height": 223 - }, - "zaza0032": { - "x": -4.18, - "y": 21.34, - "width": 251, - "height": 223 - } - }, - "zhadan": { - "zhadan1": { - "y": 0.5, - "width": 62, - "height": 95 - }, - "zhadan2": { - "y": 0.5, - "width": 62, - "height": 95 - }, - "zhadan3": { - "y": 0.5, - "width": 62, - "height": 95 - } - } - } - } - ], - "animations": { - "eff": { - "slots": { - "banyuan0001": { - "attachment": [ - { - "time": 0.3333, - "name": "banyuan0001" - }, - { - "time": 0.4333, - "name": "banyuan0004" - }, - { - "time": 0.5333, - "name": "banyuan0007" - }, - { - "time": 0.6333, - "name": "banyuan0010" - }, - { - "time": 0.7333, - "name": "banyuan0013" - }, - { - "time": 0.8333, - "name": "banyuan0016" - }, - { - "time": 0.9333, - "name": null - } - ] - }, - "huoquan0001": { - "attachment": [ - { - "time": 0.3333, - "name": "huoquan0001" - }, - { - "time": 0.4333, - "name": "huoquan0004" - }, - { - "time": 0.5, - "name": "huoquan0006" - }, - { - "time": 0.6, - "name": "huoquan0009" - }, - { - "time": 0.7, - "name": "huoquan0012" - }, - { - "time": 0.8, - "name": "huoquan0015" - }, - { - "time": 0.8333, - "name": null - } - ] - }, - "zaza0001": { - "color": [ - { - "time": 1.1333, - "color": "ffffffff" - }, - { - "time": 1.4, - "color": "ffffff00" - } - ], - "attachment": [ - { - "time": 0.3333, - "name": "zaza0001" - }, - { - "time": 0.4, - "name": "zaza0003" - }, - { - "time": 0.4333, - "name": "zaza0004" - }, - { - "time": 0.5667, - "name": "zaza0008" - }, - { - "time": 0.7, - "name": "zaza0012" - }, - { - "time": 0.8333, - "name": "zaza0016" - }, - { - "time": 0.9667, - "name": "zaza0020" - }, - { - "time": 1.1, - "name": "zaza0024" - }, - { - "time": 1.2333, - "name": "zaza0028" - }, - { - "time": 1.3333, - "name": "zaza0032" - }, - { - "time": 1.4, - "name": null - } - ] - }, - "zhadan": { - "color": [ - { - "time": 0.2667, - "color": "ffffffff" - }, - { - "time": 0.3333, - "color": "ffffff00" - } - ], - "attachment": [ - { - "time": 0.0667, - "name": "zhadan2" - }, - { - "time": 0.1333, - "name": "zhadan3" - } - ] - } - }, - "bones": { - "banyuan0001": { - "translate": [ - { - "time": 0.3333, - "x": -111.11, - "y": -28.42 - } - ] - }, - "huoquan0001": { - "translate": [ - { - "time": 0.3333, - "x": -104.86, - "y": 63.21 - } - ] - }, - "zaza0001": { - "translate": [ - { - "time": 0.3333, - "x": -240.31, - "y": 91.73 - } - ] - }, - "banyuan2": { - "scale": [ - {}, - { - "time": 0.0667, - "x": 1.2, - "y": 1.2 - }, - { - "time": 0.1333, - "x": 0.9, - "y": 0.9 - }, - { - "time": 0.2, - "x": 1.1, - "y": 1.1 - }, - { - "time": 0.2667 - }, - { - "time": 0.3333, - "x": 1.2, - "y": 1.2 - } - ] - } - } - } - } - }, - "_atlasText": "\r\nzhandan.png\r\nsize: 1020,1020\r\nformat: RGBA8888\r\nfilter: Linear,Linear\r\nrepeat: none\r\nbanyuan0001\r\n rotate: true\r\n xy: 758, 692\r\n size: 86, 79\r\n orig: 265, 209\r\n offset: 87, 34\r\n index: -1\r\nbanyuan0004\r\n rotate: true\r\n xy: 633, 273\r\n size: 172, 133\r\n orig: 265, 209\r\n offset: 46, 11\r\n index: -1\r\nbanyuan0007\r\n rotate: false\r\n xy: 2, 4\r\n size: 242, 188\r\n orig: 265, 209\r\n offset: 10, 6\r\n index: -1\r\nbanyuan0010\r\n rotate: false\r\n xy: 2, 194\r\n size: 253, 195\r\n orig: 265, 209\r\n offset: 5, 7\r\n index: -1\r\nbanyuan0013\r\n rotate: false\r\n xy: 2, 611\r\n size: 259, 199\r\n orig: 265, 209\r\n offset: 2, 5\r\n index: -1\r\nbanyuan0016\r\n rotate: false\r\n xy: 2, 812\r\n size: 262, 203\r\n orig: 265, 209\r\n offset: 1, 3\r\n index: -1\r\nhuoquan0001\r\n rotate: true\r\n xy: 758, 780\r\n size: 123, 80\r\n orig: 222, 151\r\n offset: 52, 41\r\n index: -1\r\nhuoquan0004\r\n rotate: true\r\n xy: 633, 17\r\n size: 193, 140\r\n orig: 222, 151\r\n offset: 16, 9\r\n index: -1\r\nhuoquan0006\r\n rotate: true\r\n xy: 463, 615\r\n size: 209, 148\r\n orig: 222, 151\r\n offset: 7, 3\r\n index: -1\r\nhuoquan0009\r\n rotate: false\r\n xy: 468, 870\r\n size: 213, 145\r\n orig: 222, 151\r\n offset: 5, 2\r\n index: -1\r\nhuoquan0012\r\n rotate: true\r\n xy: 613, 655\r\n size: 213, 143\r\n orig: 222, 151\r\n offset: 5, 1\r\n index: -1\r\nhuoquan0015\r\n rotate: true\r\n xy: 633, 447\r\n size: 206, 140\r\n orig: 222, 151\r\n offset: 9, 1\r\n index: -1\r\nzaza0001\r\n rotate: true\r\n xy: 683, 905\r\n size: 110, 98\r\n orig: 251, 223\r\n offset: 74, 45\r\n index: -1\r\nzaza0003\r\n rotate: false\r\n xy: 240, 408\r\n size: 218, 201\r\n orig: 251, 223\r\n offset: 28, 0\r\n index: -1\r\nzaza0004\r\n rotate: false\r\n xy: 2, 391\r\n size: 236, 218\r\n orig: 251, 223\r\n offset: 15, 0\r\n index: -1\r\nzaza0008\r\n rotate: true\r\n xy: 266, 612\r\n size: 212, 195\r\n orig: 251, 223\r\n offset: 27, 6\r\n index: -1\r\nzaza0012\r\n rotate: true\r\n xy: 257, 191\r\n size: 215, 198\r\n orig: 251, 223\r\n offset: 24, 6\r\n index: -1\r\nzaza0016\r\n rotate: true\r\n xy: 266, 826\r\n size: 189, 200\r\n orig: 251, 223\r\n offset: 28, 4\r\n index: -1\r\nzaza0020\r\n rotate: true\r\n xy: 246, 2\r\n size: 187, 205\r\n orig: 251, 223\r\n offset: 24, 2\r\n index: -1\r\nzaza0024\r\n rotate: false\r\n xy: 457, 212\r\n size: 174, 194\r\n orig: 251, 223\r\n offset: 30, 6\r\n index: -1\r\nzaza0028\r\n rotate: false\r\n xy: 457, 16\r\n size: 174, 194\r\n orig: 251, 223\r\n offset: 30, 6\r\n index: -1\r\nzaza0032\r\n rotate: false\r\n xy: 460, 415\r\n size: 171, 194\r\n orig: 251, 223\r\n offset: 30, 6\r\n index: -1\r\nzhadan1\r\n rotate: false\r\n xy: 768, 352\r\n size: 60, 93\r\n orig: 62, 95\r\n offset: 1, 1\r\n index: -1\r\nzhadan2\r\n rotate: false\r\n xy: 768, 267\r\n size: 59, 83\r\n orig: 62, 95\r\n offset: 1, 1\r\n index: -1\r\nzhadan3\r\n rotate: false\r\n xy: 775, 447\r\n size: 59, 76\r\n orig: 62, 95\r\n offset: 1, 1\r\n index: -1\r\n", - "textures": [ - { - "__uuid__": "15f7f173-be51-47f3-8314-66d14e63471f" - } - ], - "textureNames": [ - "zhandan.png" - ], - "scale": 1 -} \ No newline at end of file diff --git a/library/imports/7d/7de5502c-6595-418a-a613-a271ffb06b82.json b/library/imports/2b/2b6d3d1e-8527-4810-a096-c3743fa6f668.json similarity index 64% rename from library/imports/7d/7de5502c-6595-418a-a613-a271ffb06b82.json rename to library/imports/2b/2b6d3d1e-8527-4810-a096-c3743fa6f668.json index f393997..1e7ed74 100644 --- a/library/imports/7d/7de5502c-6595-418a-a613-a271ffb06b82.json +++ b/library/imports/2b/2b6d3d1e-8527-4810-a096-c3743fa6f668.json @@ -2,11 +2,11 @@ "__type__": "cc.SpriteFrame", "content": { "name": "8down5", - "texture": "ed2c3a21-0522-445d-9904-76843208705f", - "atlas": "d7e227ab-cc06-48f5-a2ac-092b19ec7f6f", + "texture": "c660c59d-e175-4194-aaf3-33d1d03b783f", + "atlas": "3d019ed8-3019-436d-add0-ceeb02a5baaf", "rect": [ - 988, - 248, + 1, + 471, 45, 245 ], @@ -18,6 +18,7 @@ 45, 245 ], + "rotated": 1, "capInsets": [ 0, 0, diff --git a/library/imports/2c/2c8edc9c-c130-4c61-98f1-0a9b2edf3270.json b/library/imports/2c/2c8edc9c-c130-4c61-98f1-0a9b2edf3270.json new file mode 100644 index 0000000..03587d1 --- /dev/null +++ b/library/imports/2c/2c8edc9c-c130-4c61-98f1-0a9b2edf3270.json @@ -0,0 +1,28 @@ +{ + "__type__": "cc.SpriteFrame", + "content": { + "name": "shu_zl1_3", + "texture": "418b4767-01bf-4ac2-823b-9880f2a79215", + "atlas": "cc01997d-495e-480d-871e-be405a6c38b5", + "rect": [ + 1, + 940, + 178, + 34 + ], + "offset": [ + 0, + 0 + ], + "originalSize": [ + 178, + 34 + ], + "capInsets": [ + 0, + 0, + 0, + 0 + ] + } +} \ No newline at end of file diff --git a/library/imports/40/40c8322e-6517-40e8-91a7-f73febcc16d8.json b/library/imports/2c/2cb2dbcb-4868-4668-8fd8-fde9b1bd8dba.json similarity index 64% rename from library/imports/40/40c8322e-6517-40e8-91a7-f73febcc16d8.json rename to library/imports/2c/2cb2dbcb-4868-4668-8fd8-fde9b1bd8dba.json index 600d963..2c33b4e 100644 --- a/library/imports/40/40c8322e-6517-40e8-91a7-f73febcc16d8.json +++ b/library/imports/2c/2cb2dbcb-4868-4668-8fd8-fde9b1bd8dba.json @@ -2,11 +2,11 @@ "__type__": "cc.SpriteFrame", "content": { "name": "5down6", - "texture": "ed2c3a21-0522-445d-9904-76843208705f", - "atlas": "d7e227ab-cc06-48f5-a2ac-092b19ec7f6f", + "texture": "c660c59d-e175-4194-aaf3-33d1d03b783f", + "atlas": "3d019ed8-3019-436d-add0-ceeb02a5baaf", "rect": [ - 189, - 1, + 248, + 330, 45, 365 ], @@ -18,6 +18,7 @@ 45, 365 ], + "rotated": 1, "capInsets": [ 0, 0, diff --git a/library/imports/2d/2defa794-ed61-4edf-a314-b8cda4b029aa.json b/library/imports/2d/2defa794-ed61-4edf-a314-b8cda4b029aa.json new file mode 100644 index 0000000..2d078ed --- /dev/null +++ b/library/imports/2d/2defa794-ed61-4edf-a314-b8cda4b029aa.json @@ -0,0 +1,29 @@ +{ + "__type__": "cc.SpriteFrame", + "content": { + "name": "7color5", + "texture": "418b4767-01bf-4ac2-823b-9880f2a79215", + "atlas": "cc01997d-495e-480d-871e-be405a6c38b5", + "rect": [ + 889, + 340, + 62, + 267 + ], + "offset": [ + 0, + 0 + ], + "originalSize": [ + 62, + 267 + ], + "rotated": 1, + "capInsets": [ + 0, + 0, + 0, + 0 + ] + } +} \ No newline at end of file diff --git a/library/imports/2f/2f23c78c-a279-4428-81a7-098cc67b3640.json b/library/imports/2f/2f23c78c-a279-4428-81a7-098cc67b3640.json new file mode 100644 index 0000000..c589531 --- /dev/null +++ b/library/imports/2f/2f23c78c-a279-4428-81a7-098cc67b3640.json @@ -0,0 +1,29 @@ +{ + "__type__": "cc.SpriteFrame", + "content": { + "name": "10color4", + "texture": "418b4767-01bf-4ac2-823b-9880f2a79215", + "atlas": "cc01997d-495e-480d-871e-be405a6c38b5", + "rect": [ + 1092, + 816, + 61, + 146 + ], + "offset": [ + 0, + 0 + ], + "originalSize": [ + 61, + 146 + ], + "rotated": 1, + "capInsets": [ + 0, + 0, + 0, + 0 + ] + } +} \ No newline at end of file diff --git a/library/imports/30/3042034a-eafb-4920-aacc-79bd4f56d417.json b/library/imports/30/3042034a-eafb-4920-aacc-79bd4f56d417.json new file mode 100644 index 0000000..4fd3b19 --- /dev/null +++ b/library/imports/30/3042034a-eafb-4920-aacc-79bd4f56d417.json @@ -0,0 +1,28 @@ +{ + "__type__": "cc.SpriteFrame", + "content": { + "name": "wall7", + "texture": "418b4767-01bf-4ac2-823b-9880f2a79215", + "atlas": "cc01997d-495e-480d-871e-be405a6c38b5", + "rect": [ + 1269, + 206, + 61, + 69 + ], + "offset": [ + 0, + 0 + ], + "originalSize": [ + 61, + 69 + ], + "capInsets": [ + 0, + 0, + 0, + 0 + ] + } +} \ No newline at end of file diff --git a/library/imports/5c/5c8a3a48-5cdf-406f-8977-8e8b41188a10.json b/library/imports/34/34494a3a-6ae1-43cc-a102-e6f66a620e20.json similarity index 63% rename from library/imports/5c/5c8a3a48-5cdf-406f-8977-8e8b41188a10.json rename to library/imports/34/34494a3a-6ae1-43cc-a102-e6f66a620e20.json index 39ad656..15fe8ea 100644 --- a/library/imports/5c/5c8a3a48-5cdf-406f-8977-8e8b41188a10.json +++ b/library/imports/34/34494a3a-6ae1-43cc-a102-e6f66a620e20.json @@ -2,11 +2,11 @@ "__type__": "cc.SpriteFrame", "content": { "name": "5down2", - "texture": "ed2c3a21-0522-445d-9904-76843208705f", - "atlas": "d7e227ab-cc06-48f5-a2ac-092b19ec7f6f", + "texture": "c660c59d-e175-4194-aaf3-33d1d03b783f", + "atlas": "3d019ed8-3019-436d-add0-ceeb02a5baaf", "rect": [ - 1129, - 246, + 125, + 283, 243, 45 ], @@ -18,7 +18,6 @@ 243, 45 ], - "rotated": 1, "capInsets": [ 0, 0, diff --git a/library/imports/dd/dd68dd77-048c-49ba-8ce9-1212226f595e.json b/library/imports/34/34717e3a-f954-4de3-95a1-9337ea702d6a.json similarity index 64% rename from library/imports/dd/dd68dd77-048c-49ba-8ce9-1212226f595e.json rename to library/imports/34/34717e3a-f954-4de3-95a1-9337ea702d6a.json index 8c06995..84eba9f 100644 --- a/library/imports/dd/dd68dd77-048c-49ba-8ce9-1212226f595e.json +++ b/library/imports/34/34717e3a-f954-4de3-95a1-9337ea702d6a.json @@ -2,11 +2,11 @@ "__type__": "cc.SpriteFrame", "content": { "name": "8down3", - "texture": "ed2c3a21-0522-445d-9904-76843208705f", - "atlas": "d7e227ab-cc06-48f5-a2ac-092b19ec7f6f", + "texture": "c660c59d-e175-4194-aaf3-33d1d03b783f", + "atlas": "3d019ed8-3019-436d-add0-ceeb02a5baaf", "rect": [ - 753, - 1, + 370, + 424, 363, 45 ], @@ -18,7 +18,6 @@ 363, 45 ], - "rotated": 1, "capInsets": [ 0, 0, diff --git a/library/imports/35/355cc718-8d59-4f73-ae85-54d1899fe7be.json b/library/imports/35/355cc718-8d59-4f73-ae85-54d1899fe7be.json new file mode 100644 index 0000000..bb65fd8 --- /dev/null +++ b/library/imports/35/355cc718-8d59-4f73-ae85-54d1899fe7be.json @@ -0,0 +1,29 @@ +{ + "__type__": "cc.SpriteFrame", + "content": { + "name": "7down5", + "texture": "c660c59d-e175-4194-aaf3-33d1d03b783f", + "atlas": "3d019ed8-3019-436d-add0-ceeb02a5baaf", + "rect": [ + 367, + 659, + 46, + 246 + ], + "offset": [ + 0, + 0 + ], + "originalSize": [ + 46, + 246 + ], + "rotated": 1, + "capInsets": [ + 0, + 0, + 0, + 0 + ] + } +} \ No newline at end of file diff --git a/library/imports/36/360ebdc2-02ca-4937-8d15-8224b0950ab2.json b/library/imports/36/360ebdc2-02ca-4937-8d15-8224b0950ab2.json new file mode 100644 index 0000000..387b6ca --- /dev/null +++ b/library/imports/36/360ebdc2-02ca-4937-8d15-8224b0950ab2.json @@ -0,0 +1,28 @@ +{ + "__type__": "cc.SpriteFrame", + "content": { + "name": "9color1", + "texture": "418b4767-01bf-4ac2-823b-9880f2a79215", + "atlas": "cc01997d-495e-480d-871e-be405a6c38b5", + "rect": [ + 661, + 892, + 138, + 69 + ], + "offset": [ + 0, + 0 + ], + "originalSize": [ + 138, + 69 + ], + "capInsets": [ + 0, + 0, + 0, + 0 + ] + } +} \ No newline at end of file diff --git a/library/imports/46/4626c7d9-db5b-4d89-821a-a50d6aa8be02.json b/library/imports/36/362edd73-b6b5-4a1d-82bc-7714ae28b209.json similarity index 61% rename from library/imports/46/4626c7d9-db5b-4d89-821a-a50d6aa8be02.json rename to library/imports/36/362edd73-b6b5-4a1d-82bc-7714ae28b209.json index 7e54a05..efb0bf5 100644 --- a/library/imports/46/4626c7d9-db5b-4d89-821a-a50d6aa8be02.json +++ b/library/imports/36/362edd73-b6b5-4a1d-82bc-7714ae28b209.json @@ -1,12 +1,12 @@ { "__type__": "cc.SpriteFrame", "content": { - "name": "7down5", - "texture": "ed2c3a21-0522-445d-9904-76843208705f", - "atlas": "d7e227ab-cc06-48f5-a2ac-092b19ec7f6f", + "name": "10down5", + "texture": "c660c59d-e175-4194-aaf3-33d1d03b783f", + "atlas": "3d019ed8-3019-436d-add0-ceeb02a5baaf", "rect": [ - 988, 1, + 612, 45, 245 ], @@ -18,6 +18,7 @@ 45, 245 ], + "rotated": 1, "capInsets": [ 0, 0, diff --git a/library/imports/36/36c23619-6422-47be-aa02-f78b7618bb3c.json b/library/imports/36/36c23619-6422-47be-aa02-f78b7618bb3c.json new file mode 100644 index 0000000..27bc04e --- /dev/null +++ b/library/imports/36/36c23619-6422-47be-aa02-f78b7618bb3c.json @@ -0,0 +1,29 @@ +{ + "__type__": "cc.SpriteFrame", + "content": { + "name": "shu_zl1_2", + "texture": "418b4767-01bf-4ac2-823b-9880f2a79215", + "atlas": "cc01997d-495e-480d-871e-be405a6c38b5", + "rect": [ + 804, + 479, + 118, + 34 + ], + "offset": [ + 0, + 0 + ], + "originalSize": [ + 118, + 34 + ], + "rotated": 1, + "capInsets": [ + 0, + 0, + 0, + 0 + ] + } +} \ No newline at end of file diff --git a/library/imports/37/3718b4a0-0fb3-490b-85d4-64a2ac95c437.json b/library/imports/37/3718b4a0-0fb3-490b-85d4-64a2ac95c437.json new file mode 100644 index 0000000..fee6265 --- /dev/null +++ b/library/imports/37/3718b4a0-0fb3-490b-85d4-64a2ac95c437.json @@ -0,0 +1,28 @@ +{ + "__type__": "cc.SpriteFrame", + "content": { + "name": "4color2", + "texture": "418b4767-01bf-4ac2-823b-9880f2a79215", + "atlas": "cc01997d-495e-480d-871e-be405a6c38b5", + "rect": [ + 387, + 600, + 258, + 69 + ], + "offset": [ + 0, + 0 + ], + "originalSize": [ + 258, + 69 + ], + "capInsets": [ + 0, + 0, + 0, + 0 + ] + } +} \ No newline at end of file diff --git a/library/imports/cd/cdd06e33-9d9b-4cd3-837d-58789aa4607b.json b/library/imports/37/37292117-0184-47bb-9029-40e2bf9f2e3b.json similarity index 66% rename from library/imports/cd/cdd06e33-9d9b-4cd3-837d-58789aa4607b.json rename to library/imports/37/37292117-0184-47bb-9029-40e2bf9f2e3b.json index 8b7a81f..291fd2b 100644 --- a/library/imports/cd/cdd06e33-9d9b-4cd3-837d-58789aa4607b.json +++ b/library/imports/37/37292117-0184-47bb-9029-40e2bf9f2e3b.json @@ -2,10 +2,10 @@ "__type__": "cc.SpriteFrame", "content": { "name": "1down3", - "texture": "ed2c3a21-0522-445d-9904-76843208705f", - "atlas": "d7e227ab-cc06-48f5-a2ac-092b19ec7f6f", + "texture": "c660c59d-e175-4194-aaf3-33d1d03b783f", + "atlas": "3d019ed8-3019-436d-add0-ceeb02a5baaf", "rect": [ - 424, + 370, 1, 363, 45 @@ -18,7 +18,6 @@ 363, 45 ], - "rotated": 1, "capInsets": [ 0, 0, diff --git a/library/imports/39/39687b17-060f-401d-b776-9597fd00d95c.json b/library/imports/39/39687b17-060f-401d-b776-9597fd00d95c.json new file mode 100644 index 0000000..fe62b47 --- /dev/null +++ b/library/imports/39/39687b17-060f-401d-b776-9597fd00d95c.json @@ -0,0 +1,28 @@ +{ + "__type__": "cc.SpriteFrame", + "content": { + "name": "2color3", + "texture": "418b4767-01bf-4ac2-823b-9880f2a79215", + "atlas": "cc01997d-495e-480d-871e-be405a6c38b5", + "rect": [ + 129, + 190, + 378, + 69 + ], + "offset": [ + 0, + 0 + ], + "originalSize": [ + 378, + 69 + ], + "capInsets": [ + 0, + 0, + 0, + 0 + ] + } +} \ No newline at end of file diff --git a/library/imports/ec/eca53869-fec9-4954-bc2b-750bc2ed8598.json b/library/imports/3b/3b3e5789-e908-47aa-9adb-61ff566da72f.json similarity index 64% rename from library/imports/ec/eca53869-fec9-4954-bc2b-750bc2ed8598.json rename to library/imports/3b/3b3e5789-e908-47aa-9adb-61ff566da72f.json index 3d4ca18..0a7e702 100644 --- a/library/imports/ec/eca53869-fec9-4954-bc2b-750bc2ed8598.json +++ b/library/imports/3b/3b3e5789-e908-47aa-9adb-61ff566da72f.json @@ -2,11 +2,11 @@ "__type__": "cc.SpriteFrame", "content": { "name": "6down5", - "texture": "ed2c3a21-0522-445d-9904-76843208705f", - "atlas": "d7e227ab-cc06-48f5-a2ac-092b19ec7f6f", + "texture": "c660c59d-e175-4194-aaf3-33d1d03b783f", + "atlas": "3d019ed8-3019-436d-add0-ceeb02a5baaf", "rect": [ - 941, - 248, + 366, + 377, 45, 245 ], @@ -18,6 +18,7 @@ 45, 245 ], + "rotated": 1, "capInsets": [ 0, 0, diff --git a/library/imports/3b/3bd263ae-509c-4b63-8c11-c545402c77b8.json b/library/imports/3b/3bd263ae-509c-4b63-8c11-c545402c77b8.json new file mode 100644 index 0000000..2c5d210 --- /dev/null +++ b/library/imports/3b/3bd263ae-509c-4b63-8c11-c545402c77b8.json @@ -0,0 +1,28 @@ +{ + "__type__": "cc.SpriteFrame", + "content": { + "name": "5color3", + "texture": "418b4767-01bf-4ac2-823b-9880f2a79215", + "atlas": "cc01997d-495e-480d-871e-be405a6c38b5", + "rect": [ + 509, + 198, + 378, + 69 + ], + "offset": [ + 0, + 0 + ], + "originalSize": [ + 378, + 69 + ], + "capInsets": [ + 0, + 0, + 0, + 0 + ] + } +} \ No newline at end of file diff --git a/library/imports/3d/3d019ed8-3019-436d-add0-ceeb02a5baaf.json b/library/imports/3d/3d019ed8-3019-436d-add0-ceeb02a5baaf.json new file mode 100644 index 0000000..c47cb43 --- /dev/null +++ b/library/imports/3d/3d019ed8-3019-436d-add0-ceeb02a5baaf.json @@ -0,0 +1,188 @@ +{ + "__type__": "cc.SpriteAtlas", + "_name": "down.plist", + "_objFlags": 0, + "_native": "", + "_spriteFrames": { + "10down1": { + "__uuid__": "c8f5862b-373d-4a40-b7b4-b550d4ed958a" + }, + "10down2": { + "__uuid__": "51e06d9e-23ca-4762-8aef-cd8bab1d33dd" + }, + "10down3": { + "__uuid__": "0c09885e-4d8d-43c8-9f7d-e97bccb67e77" + }, + "10down4": { + "__uuid__": "ca5f78b1-730f-4ad9-a695-9f72982d7cce" + }, + "10down5": { + "__uuid__": "362edd73-b6b5-4a1d-82bc-7714ae28b209" + }, + "10down6": { + "__uuid__": "07594a6b-77fb-448b-89f1-653cdd63f516" + }, + "1down1": { + "__uuid__": "c983d847-cfc4-4288-aef4-81f7614c015e" + }, + "1down2": { + "__uuid__": "abfddfc6-a384-4b25-8868-90354a9531d9" + }, + "1down3": { + "__uuid__": "37292117-0184-47bb-9029-40e2bf9f2e3b" + }, + "1down4": { + "__uuid__": "aeab228a-209e-49fc-8bf5-c02865b9e02e" + }, + "1down5": { + "__uuid__": "257d5583-e4b0-4dfc-910b-6efdc382de04" + }, + "1down6": { + "__uuid__": "5fa4d829-4ef3-47a4-b9b0-5367ea5deadb" + }, + "2down1": { + "__uuid__": "085f8402-f610-4636-862f-22fd6bc2e7ca" + }, + "2down2": { + "__uuid__": "b6e07f67-9d56-45ff-be78-5375b5265998" + }, + "2down3": { + "__uuid__": "42fbefea-6ea1-4889-9e5f-f3873953f13b" + }, + "2down4": { + "__uuid__": "c9235f60-abf4-4de9-b0f0-45056ad4eec0" + }, + "2down5": { + "__uuid__": "cfda791a-aa61-49c2-a331-117740c80b87" + }, + "2down6": { + "__uuid__": "66736e80-5092-4271-8c58-17f8352c7b8d" + }, + "3down1": { + "__uuid__": "dbf12764-e7df-4736-923b-4e613402fd70" + }, + "3down2": { + "__uuid__": "0681c1ff-5cf4-4fe7-bc91-5e38c70ce46b" + }, + "3down3": { + "__uuid__": "59e058ad-134c-4311-a1f4-59e93f8f8586" + }, + "3down4": { + "__uuid__": "6168773e-4720-4796-9d76-84266915596b" + }, + "3down5": { + "__uuid__": "e086948a-d672-4693-a773-355c1aaf8819" + }, + "3down6": { + "__uuid__": "20a13038-b67b-4c07-89fd-38267efdc0e5" + }, + "4down1": { + "__uuid__": "f68ebe9a-38e9-4208-8ac6-77d20462d9d6" + }, + "4down2": { + "__uuid__": "678b10b4-1068-409c-82ea-15c65801d0a5" + }, + "4down3": { + "__uuid__": "6ca2b413-78a7-4e32-bf03-b4a2b80f024b" + }, + "4down4": { + "__uuid__": "40dd76f4-1ba0-40ce-9e2e-92f82d7da381" + }, + "4down5": { + "__uuid__": "eb033dba-ae5e-4147-ad46-241ab27df770" + }, + "4down6": { + "__uuid__": "accbb35a-b43d-49b8-97dc-c7e939ca052c" + }, + "5down1": { + "__uuid__": "48cddc96-39c7-449c-8280-55dd44b65377" + }, + "5down2": { + "__uuid__": "34494a3a-6ae1-43cc-a102-e6f66a620e20" + }, + "5down3": { + "__uuid__": "5282d649-8ede-4c7e-aeed-37beb78e860a" + }, + "5down4": { + "__uuid__": "5e92ffdd-e62a-480f-93f2-852830ea2d1e" + }, + "5down5": { + "__uuid__": "fa7e8b5f-2600-4a98-8b15-1d95d419fbdb" + }, + "5down6": { + "__uuid__": "2cb2dbcb-4868-4668-8fd8-fde9b1bd8dba" + }, + "6down1": { + "__uuid__": "805ed668-1b05-44ff-98f9-2e8fc101a705" + }, + "6down2": { + "__uuid__": "b8ef6026-86e6-481d-b285-65489050ac48" + }, + "6down3": { + "__uuid__": "0a02963d-dd42-42ad-be69-c78af29eec3b" + }, + "6down4": { + "__uuid__": "8398ddf1-296c-47cd-9d55-2ed4885f9509" + }, + "6down5": { + "__uuid__": "3b3e5789-e908-47aa-9adb-61ff566da72f" + }, + "6down6": { + "__uuid__": "1ecae730-c650-43a7-8c0a-560373777137" + }, + "7down1": { + "__uuid__": "9c2db1a3-6fc0-44c8-b56b-c6d42033dffb" + }, + "7down2": { + "__uuid__": "a5f933cc-d81e-4cab-92f3-86f1ba938126" + }, + "7down3": { + "__uuid__": "18775144-2f12-48f0-9d3d-b737e7417b5a" + }, + "7down4": { + "__uuid__": "690702de-7290-431c-8cf9-89157165ca91" + }, + "7down5": { + "__uuid__": "355cc718-8d59-4f73-ae85-54d1899fe7be" + }, + "7down6": { + "__uuid__": "569c479b-0e5d-4830-87a0-249867696779" + }, + "8down1": { + "__uuid__": "05be34a9-d8ee-43d3-ae9c-ea9f9fa663ab" + }, + "8down2": { + "__uuid__": "55e0ff42-6f24-4b09-ab71-9baa61ede941" + }, + "8down3": { + "__uuid__": "34717e3a-f954-4de3-95a1-9337ea702d6a" + }, + "8down4": { + "__uuid__": "b8f7c2fe-525a-434f-ab7e-41bdc9c91155" + }, + "8down5": { + "__uuid__": "2b6d3d1e-8527-4810-a096-c3743fa6f668" + }, + "8down6": { + "__uuid__": "c1342fe3-26bf-44b8-9163-aacbee5d6684" + }, + "9down1": { + "__uuid__": "9e3650ed-bc7c-46ae-8c98-22c6001075b1" + }, + "9down2": { + "__uuid__": "ccaae0e5-ef39-4909-8249-afb1cd2d6ada" + }, + "9down3": { + "__uuid__": "dfd68eea-a8ae-4141-b080-f6cfefbad8cd" + }, + "9down4": { + "__uuid__": "23fb16a5-4b81-4d2d-8fda-baffb1561c23" + }, + "9down5": { + "__uuid__": "01a57769-e8df-4d79-91f9-900b3485adce" + }, + "9down6": { + "__uuid__": "c8c757f3-a7c1-446f-847e-f079db95fc71" + } + } +} \ No newline at end of file diff --git a/library/imports/3d/3d4ca3d9-74fd-4408-99e3-0f9b0101c7b3.json b/library/imports/3d/3d4ca3d9-74fd-4408-99e3-0f9b0101c7b3.json new file mode 100644 index 0000000..f1813f0 --- /dev/null +++ b/library/imports/3d/3d4ca3d9-74fd-4408-99e3-0f9b0101c7b3.json @@ -0,0 +1,28 @@ +{ + "__type__": "cc.SpriteFrame", + "content": { + "name": "9color2", + "texture": "418b4767-01bf-4ac2-823b-9880f2a79215", + "atlas": "cc01997d-495e-480d-871e-be405a6c38b5", + "rect": [ + 261, + 884, + 258, + 69 + ], + "offset": [ + 0, + 0 + ], + "originalSize": [ + 258, + 69 + ], + "capInsets": [ + 0, + 0, + 0, + 0 + ] + } +} \ No newline at end of file diff --git a/library/imports/df/df5bc245-50a2-404a-a208-c187d44c6e25.json b/library/imports/40/40dd76f4-1ba0-40ce-9e2e-92f82d7da381.json similarity index 64% rename from library/imports/df/df5bc245-50a2-404a-a208-c187d44c6e25.json rename to library/imports/40/40dd76f4-1ba0-40ce-9e2e-92f82d7da381.json index fe43002..99bd5dd 100644 --- a/library/imports/df/df5bc245-50a2-404a-a208-c187d44c6e25.json +++ b/library/imports/40/40dd76f4-1ba0-40ce-9e2e-92f82d7da381.json @@ -2,11 +2,11 @@ "__type__": "cc.SpriteFrame", "content": { "name": "4down4", - "texture": "ed2c3a21-0522-445d-9904-76843208705f", - "atlas": "d7e227ab-cc06-48f5-a2ac-092b19ec7f6f", + "texture": "c660c59d-e175-4194-aaf3-33d1d03b783f", + "atlas": "3d019ed8-3019-436d-add0-ceeb02a5baaf", "rect": [ - 142, - 368, + 860, + 189, 45, 124 ], @@ -18,6 +18,7 @@ 45, 124 ], + "rotated": 1, "capInsets": [ 0, 0, diff --git a/library/imports/ed/ed2c3a21-0522-445d-9904-76843208705f.json b/library/imports/41/418b4767-01bf-4ac2-823b-9880f2a79215.json similarity index 100% rename from library/imports/ed/ed2c3a21-0522-445d-9904-76843208705f.json rename to library/imports/41/418b4767-01bf-4ac2-823b-9880f2a79215.json diff --git a/library/imports/41/418b4767-01bf-4ac2-823b-9880f2a79215.png b/library/imports/41/418b4767-01bf-4ac2-823b-9880f2a79215.png new file mode 100644 index 0000000..ca9aaf4 Binary files /dev/null and b/library/imports/41/418b4767-01bf-4ac2-823b-9880f2a79215.png differ diff --git a/library/imports/08/089bdab6-7e5d-4f20-b02e-3d6a0009f2cf.json b/library/imports/42/42fbefea-6ea1-4889-9e5f-f3873953f13b.json similarity index 66% rename from library/imports/08/089bdab6-7e5d-4f20-b02e-3d6a0009f2cf.json rename to library/imports/42/42fbefea-6ea1-4889-9e5f-f3873953f13b.json index 9a18d52..4e2b6b4 100644 --- a/library/imports/08/089bdab6-7e5d-4f20-b02e-3d6a0009f2cf.json +++ b/library/imports/42/42fbefea-6ea1-4889-9e5f-f3873953f13b.json @@ -2,11 +2,11 @@ "__type__": "cc.SpriteFrame", "content": { "name": "2down3", - "texture": "ed2c3a21-0522-445d-9904-76843208705f", - "atlas": "d7e227ab-cc06-48f5-a2ac-092b19ec7f6f", + "texture": "c660c59d-e175-4194-aaf3-33d1d03b783f", + "atlas": "3d019ed8-3019-436d-add0-ceeb02a5baaf", "rect": [ - 471, 1, + 95, 363, 45 ], @@ -18,7 +18,6 @@ 363, 45 ], - "rotated": 1, "capInsets": [ 0, 0, diff --git a/library/imports/43/433a5eb9-bd88-4fcf-9811-8b58f93dea65.json b/library/imports/43/433a5eb9-bd88-4fcf-9811-8b58f93dea65.json new file mode 100644 index 0000000..15674ef --- /dev/null +++ b/library/imports/43/433a5eb9-bd88-4fcf-9811-8b58f93dea65.json @@ -0,0 +1,28 @@ +{ + "__type__": "cc.SpriteFrame", + "content": { + "name": "3color1", + "texture": "418b4767-01bf-4ac2-823b-9880f2a79215", + "atlas": "cc01997d-495e-480d-871e-be405a6c38b5", + "rect": [ + 741, + 758, + 138, + 69 + ], + "offset": [ + 0, + 0 + ], + "originalSize": [ + 138, + 69 + ], + "capInsets": [ + 0, + 0, + 0, + 0 + ] + } +} \ No newline at end of file diff --git a/library/imports/43/43ba2e3e-eb31-41b2-98d0-74bf98cad885.json b/library/imports/43/43ba2e3e-eb31-41b2-98d0-74bf98cad885.json new file mode 100644 index 0000000..9001b96 --- /dev/null +++ b/library/imports/43/43ba2e3e-eb31-41b2-98d0-74bf98cad885.json @@ -0,0 +1,29 @@ +{ + "__type__": "cc.SpriteFrame", + "content": { + "name": "8color4", + "texture": "418b4767-01bf-4ac2-823b-9880f2a79215", + "atlas": "cc01997d-495e-480d-871e-be405a6c38b5", + "rect": [ + 678, + 829, + 61, + 145 + ], + "offset": [ + 0, + 0 + ], + "originalSize": [ + 61, + 145 + ], + "rotated": 1, + "capInsets": [ + 0, + 0, + 0, + 0 + ] + } +} \ No newline at end of file diff --git a/library/imports/48/48bfe66e-6056-44da-a9a0-c5b5b6222801.js.map b/library/imports/48/48bfe66e-6056-44da-a9a0-c5b5b6222801.js.map index 0e61fc5..8a9f08a 100644 --- a/library/imports/48/48bfe66e-6056-44da-a9a0-c5b5b6222801.js.map +++ b/library/imports/48/48bfe66e-6056-44da-a9a0-c5b5b6222801.js.map @@ -1 +1 @@ -{"version":3,"sources":["assets\\shop\\script\\shop.ts"],"names":[],"mappings":"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","file":"","sourceRoot":"/","sourcesContent":["import List from \"../../Script/module/RankList/List\";\n\nconst { ccclass, property } = cc._decorator;\n\n@ccclass\nexport default class NewClass extends cc.Component {\n //商店界面\n @property(cc.Node)\n shop: cc.Node = null;\n //商品列表\n @property(cc.Node)\n itemList: cc.Node = null;\n // onLoad () {}\n\n start() {\n this.openShop();\n }\n //打开商店界面\n openShop() {\n // 商品数据数组\n const products = [\n { product_id: \"gold_pack_1\", name: \"金币包1\", price: 600, title: \"3x2六档金币\" },\n { product_id: \"gold_pack_2\", name: \"金币包2\", price: 3600, title: \"\" },\n { product_id: \"gold_pack_3\", name: \"金币包3\", price: 6800, title: \"\" },\n { product_id: \"gold_pack_4\", name: \"金币包4\", price: 12800, title: \"\" },\n { product_id: \"gold_pack_5\", name: \"金币包5\", price: 32800, title: \"\" },\n { product_id: \"gold_pack_6\", name: \"金币包6\", price: 64800, title: \"\" },\n { product_id: \"unlimited_health_bundle_1\", name: \"无限体力组合包1\", price: 1800, title: \"3个横版礼包\" },\n { product_id: \"unlimited_health_bundle_2\", name: \"无限体力组合包2\", price: 6600, title: \"\" }\n ];\n for (let i = 1; i <= 8 && i < this.itemList.children.length; i++) {\n const spriteComp = this.itemList.children[i].children[0].getComponent(cc.Sprite);\n const price = this.itemList.children[i].children[1].getComponent(cc.Label);\n const title = this.itemList.children[i].children[2].getComponent(cc.Label);\n const product = products[i - 1];\n if (spriteComp && product) {\n // TODO: 根据 product_id 或 name 设置 spriteComp.spriteFrame\n }\n if (price && product) {\n price.string = (product.price / 100).toString() + \"元\";\n }\n if (title && product) {\n title.string = product.name;\n }\n }\n }\n\n\n //关闭商店界面\n closeShop() {\n //销毁预制体\n this.shop.destroy();\n }\n\n // update (dt) {}\n}\n"]} \ No newline at end of file +{"version":3,"sources":["assets\\shop\\script\\shop.ts"],"names":[],"mappings":"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","file":"","sourceRoot":"/","sourcesContent":["import List from \"../../Script/module/RankList/List\";\r\n\r\nconst { ccclass, property } = cc._decorator;\r\n\r\n@ccclass\r\nexport default class NewClass extends cc.Component {\r\n //商店界面\r\n @property(cc.Node)\r\n shop: cc.Node = null;\r\n //商品列表\r\n @property(cc.Node)\r\n itemList: cc.Node = null;\r\n // onLoad () {}\r\n\r\n start() {\r\n this.openShop();\r\n }\r\n //打开商店界面\r\n openShop() {\r\n // 商品数据数组\r\n const products = [\r\n { product_id: \"gold_pack_1\", name: \"金币包1\", price: 600, title: \"3x2六档金币\" },\r\n { product_id: \"gold_pack_2\", name: \"金币包2\", price: 3600, title: \"\" },\r\n { product_id: \"gold_pack_3\", name: \"金币包3\", price: 6800, title: \"\" },\r\n { product_id: \"gold_pack_4\", name: \"金币包4\", price: 12800, title: \"\" },\r\n { product_id: \"gold_pack_5\", name: \"金币包5\", price: 32800, title: \"\" },\r\n { product_id: \"gold_pack_6\", name: \"金币包6\", price: 64800, title: \"\" },\r\n { product_id: \"unlimited_health_bundle_1\", name: \"无限体力组合包1\", price: 1800, title: \"3个横版礼包\" },\r\n { product_id: \"unlimited_health_bundle_2\", name: \"无限体力组合包2\", price: 6600, title: \"\" }\r\n ];\r\n for (let i = 1; i <= 8 && i < this.itemList.children.length; i++) {\r\n const spriteComp = this.itemList.children[i].children[0].getComponent(cc.Sprite);\r\n const price = this.itemList.children[i].children[1].getComponent(cc.Label);\r\n const title = this.itemList.children[i].children[2].getComponent(cc.Label);\r\n const product = products[i - 1];\r\n if (spriteComp && product) {\r\n // TODO: 根据 product_id 或 name 设置 spriteComp.spriteFrame\r\n }\r\n if (price && product) {\r\n price.string = (product.price / 100).toString() + \"元\";\r\n }\r\n if (title && product) {\r\n title.string = product.name;\r\n }\r\n }\r\n }\r\n\r\n\r\n //关闭商店界面\r\n closeShop() {\r\n //销毁预制体\r\n this.shop.destroy();\r\n }\r\n\r\n // update (dt) {}\r\n}\r\n"]} \ No newline at end of file diff --git a/library/imports/c9/c9f113a0-f3a4-4e0e-9e38-33dedda84d88.json b/library/imports/48/48cddc96-39c7-449c-8280-55dd44b65377.json similarity index 64% rename from library/imports/c9/c9f113a0-f3a4-4e0e-9e38-33dedda84d88.json rename to library/imports/48/48cddc96-39c7-449c-8280-55dd44b65377.json index 8168ec9..80b2964 100644 --- a/library/imports/c9/c9f113a0-f3a4-4e0e-9e38-33dedda84d88.json +++ b/library/imports/48/48cddc96-39c7-449c-8280-55dd44b65377.json @@ -2,11 +2,11 @@ "__type__": "cc.SpriteFrame", "content": { "name": "5down1", - "texture": "ed2c3a21-0522-445d-9904-76843208705f", - "atlas": "d7e227ab-cc06-48f5-a2ac-092b19ec7f6f", + "texture": "c660c59d-e175-4194-aaf3-33d1d03b783f", + "atlas": "3d019ed8-3019-436d-add0-ceeb02a5baaf", "rect": [ - 612, - 366, + 1, + 283, 122, 45 ], @@ -18,7 +18,6 @@ 122, 45 ], - "rotated": 1, "capInsets": [ 0, 0, diff --git a/library/imports/4b/4b6d2792-ce59-4597-8d54-3e667f5e4ad7.json b/library/imports/4b/4b6d2792-ce59-4597-8d54-3e667f5e4ad7.json new file mode 100644 index 0000000..3eebc78 --- /dev/null +++ b/library/imports/4b/4b6d2792-ce59-4597-8d54-3e667f5e4ad7.json @@ -0,0 +1,28 @@ +{ + "__type__": "cc.SpriteFrame", + "content": { + "name": "5color1", + "texture": "418b4767-01bf-4ac2-823b-9880f2a79215", + "atlas": "cc01997d-495e-480d-871e-be405a6c38b5", + "rect": [ + 521, + 884, + 138, + 69 + ], + "offset": [ + 0, + 0 + ], + "originalSize": [ + 138, + 69 + ], + "capInsets": [ + 0, + 0, + 0, + 0 + ] + } +} \ No newline at end of file diff --git a/library/imports/51/51e06d9e-23ca-4762-8aef-cd8bab1d33dd.json b/library/imports/51/51e06d9e-23ca-4762-8aef-cd8bab1d33dd.json new file mode 100644 index 0000000..7d48d0d --- /dev/null +++ b/library/imports/51/51e06d9e-23ca-4762-8aef-cd8bab1d33dd.json @@ -0,0 +1,28 @@ +{ + "__type__": "cc.SpriteFrame", + "content": { + "name": "10down2", + "texture": "c660c59d-e175-4194-aaf3-33d1d03b783f", + "atlas": "3d019ed8-3019-436d-add0-ceeb02a5baaf", + "rect": [ + 125, + 565, + 243, + 45 + ], + "offset": [ + 0, + 0 + ], + "originalSize": [ + 243, + 45 + ], + "capInsets": [ + 0, + 0, + 0, + 0 + ] + } +} \ No newline at end of file diff --git a/library/imports/dc/dcd0323e-c1d4-43fe-8052-29f8677a60bd.json b/library/imports/52/5282d649-8ede-4c7e-aeed-37beb78e860a.json similarity index 64% rename from library/imports/dc/dcd0323e-c1d4-43fe-8052-29f8677a60bd.json rename to library/imports/52/5282d649-8ede-4c7e-aeed-37beb78e860a.json index c375e52..e21dcfb 100644 --- a/library/imports/dc/dcd0323e-c1d4-43fe-8052-29f8677a60bd.json +++ b/library/imports/52/5282d649-8ede-4c7e-aeed-37beb78e860a.json @@ -2,11 +2,11 @@ "__type__": "cc.SpriteFrame", "content": { "name": "5down3", - "texture": "ed2c3a21-0522-445d-9904-76843208705f", - "atlas": "d7e227ab-cc06-48f5-a2ac-092b19ec7f6f", + "texture": "c660c59d-e175-4194-aaf3-33d1d03b783f", + "atlas": "3d019ed8-3019-436d-add0-ceeb02a5baaf", "rect": [ - 612, - 1, + 370, + 283, 363, 45 ], @@ -18,7 +18,6 @@ 363, 45 ], - "rotated": 1, "capInsets": [ 0, 0, diff --git a/library/imports/52/52f7fc1c-b560-4b6d-b15e-b38b6584a5d8.json b/library/imports/52/52f7fc1c-b560-4b6d-b15e-b38b6584a5d8.json new file mode 100644 index 0000000..414819e --- /dev/null +++ b/library/imports/52/52f7fc1c-b560-4b6d-b15e-b38b6584a5d8.json @@ -0,0 +1,29 @@ +{ + "__type__": "cc.SpriteFrame", + "content": { + "name": "wall2", + "texture": "418b4767-01bf-4ac2-823b-9880f2a79215", + "atlas": "cc01997d-495e-480d-871e-be405a6c38b5", + "rect": [ + 1092, + 879, + 61, + 146 + ], + "offset": [ + 0, + 0 + ], + "originalSize": [ + 61, + 146 + ], + "rotated": 1, + "capInsets": [ + 0, + 0, + 0, + 0 + ] + } +} \ No newline at end of file diff --git a/library/imports/55/550602d1-08e8-467e-8bd0-5295c4981fec.json b/library/imports/55/550602d1-08e8-467e-8bd0-5295c4981fec.json new file mode 100644 index 0000000..2dd23f7 --- /dev/null +++ b/library/imports/55/550602d1-08e8-467e-8bd0-5295c4981fec.json @@ -0,0 +1,28 @@ +{ + "__type__": "cc.SpriteFrame", + "content": { + "name": "6color2", + "texture": "418b4767-01bf-4ac2-823b-9880f2a79215", + "atlas": "cc01997d-495e-480d-871e-be405a6c38b5", + "rect": [ + 333, + 742, + 258, + 69 + ], + "offset": [ + 0, + 0 + ], + "originalSize": [ + 258, + 69 + ], + "capInsets": [ + 0, + 0, + 0, + 0 + ] + } +} \ No newline at end of file diff --git a/library/imports/90/9059fc98-5811-4ec3-a70d-0922b3163305.json b/library/imports/55/55e0ff42-6f24-4b09-ab71-9baa61ede941.json similarity index 64% rename from library/imports/90/9059fc98-5811-4ec3-a70d-0922b3163305.json rename to library/imports/55/55e0ff42-6f24-4b09-ab71-9baa61ede941.json index f1a6b6f..508b41c 100644 --- a/library/imports/90/9059fc98-5811-4ec3-a70d-0922b3163305.json +++ b/library/imports/55/55e0ff42-6f24-4b09-ab71-9baa61ede941.json @@ -2,11 +2,11 @@ "__type__": "cc.SpriteFrame", "content": { "name": "8down2", - "texture": "ed2c3a21-0522-445d-9904-76843208705f", - "atlas": "d7e227ab-cc06-48f5-a2ac-092b19ec7f6f", + "texture": "c660c59d-e175-4194-aaf3-33d1d03b783f", + "atlas": "3d019ed8-3019-436d-add0-ceeb02a5baaf", "rect": [ - 1223, - 1, + 125, + 424, 243, 45 ], @@ -18,7 +18,6 @@ 243, 45 ], - "rotated": 1, "capInsets": [ 0, 0, diff --git a/library/imports/e1/e14df810-ed05-418a-98ff-1aabc5685cd4.json b/library/imports/56/569c479b-0e5d-4830-87a0-249867696779.json similarity index 54% rename from library/imports/e1/e14df810-ed05-418a-98ff-1aabc5685cd4.json rename to library/imports/56/569c479b-0e5d-4830-87a0-249867696779.json index 2277eed..0a38d35 100644 --- a/library/imports/e1/e14df810-ed05-418a-98ff-1aabc5685cd4.json +++ b/library/imports/56/569c479b-0e5d-4830-87a0-249867696779.json @@ -2,22 +2,23 @@ "__type__": "cc.SpriteFrame", "content": { "name": "7down6", - "texture": "ed2c3a21-0522-445d-9904-76843208705f", - "atlas": "d7e227ab-cc06-48f5-a2ac-092b19ec7f6f", + "texture": "c660c59d-e175-4194-aaf3-33d1d03b783f", + "atlas": "3d019ed8-3019-436d-add0-ceeb02a5baaf", "rect": [ - 283, - 1, - 45, - 365 + 615, + 661, + 46, + 366 ], "offset": [ 0, 0 ], "originalSize": [ - 45, - 365 + 46, + 366 ], + "rotated": 1, "capInsets": [ 0, 0, diff --git a/library/imports/58/582183eb-bd29-403e-848d-164b9ac0ed50.json b/library/imports/58/582183eb-bd29-403e-848d-164b9ac0ed50.json new file mode 100644 index 0000000..a36ab90 --- /dev/null +++ b/library/imports/58/582183eb-bd29-403e-848d-164b9ac0ed50.json @@ -0,0 +1,28 @@ +{ + "__type__": "cc.SpriteFrame", + "content": { + "name": "8color3", + "texture": "418b4767-01bf-4ac2-823b-9880f2a79215", + "atlas": "cc01997d-495e-480d-871e-be405a6c38b5", + "rect": [ + 509, + 340, + 378, + 69 + ], + "offset": [ + 0, + 0 + ], + "originalSize": [ + 378, + 69 + ], + "capInsets": [ + 0, + 0, + 0, + 0 + ] + } +} \ No newline at end of file diff --git a/library/imports/18/18850366-326d-4822-bf43-3eca366b7762.json b/library/imports/59/59e058ad-134c-4311-a1f4-59e93f8f8586.json similarity index 64% rename from library/imports/18/18850366-326d-4822-bf43-3eca366b7762.json rename to library/imports/59/59e058ad-134c-4311-a1f4-59e93f8f8586.json index fb142d7..45b9db4 100644 --- a/library/imports/18/18850366-326d-4822-bf43-3eca366b7762.json +++ b/library/imports/59/59e058ad-134c-4311-a1f4-59e93f8f8586.json @@ -2,11 +2,11 @@ "__type__": "cc.SpriteFrame", "content": { "name": "3down3", - "texture": "ed2c3a21-0522-445d-9904-76843208705f", - "atlas": "d7e227ab-cc06-48f5-a2ac-092b19ec7f6f", + "texture": "c660c59d-e175-4194-aaf3-33d1d03b783f", + "atlas": "3d019ed8-3019-436d-add0-ceeb02a5baaf", "rect": [ - 518, - 1, + 370, + 142, 363, 45 ], @@ -18,7 +18,6 @@ 363, 45 ], - "rotated": 1, "capInsets": [ 0, 0, diff --git a/library/imports/d0/d09bc3df-abc4-42f6-bab8-6da7e2b45893.json b/library/imports/5e/5e92ffdd-e62a-480f-93f2-852830ea2d1e.json similarity index 64% rename from library/imports/d0/d09bc3df-abc4-42f6-bab8-6da7e2b45893.json rename to library/imports/5e/5e92ffdd-e62a-480f-93f2-852830ea2d1e.json index eea7111..785d7b5 100644 --- a/library/imports/d0/d09bc3df-abc4-42f6-bab8-6da7e2b45893.json +++ b/library/imports/5e/5e92ffdd-e62a-480f-93f2-852830ea2d1e.json @@ -2,11 +2,11 @@ "__type__": "cc.SpriteFrame", "content": { "name": "5down4", - "texture": "ed2c3a21-0522-445d-9904-76843208705f", - "atlas": "d7e227ab-cc06-48f5-a2ac-092b19ec7f6f", + "texture": "c660c59d-e175-4194-aaf3-33d1d03b783f", + "atlas": "3d019ed8-3019-436d-add0-ceeb02a5baaf", "rect": [ - 189, - 368, + 735, + 283, 45, 124 ], @@ -18,6 +18,7 @@ 45, 124 ], + "rotated": 1, "capInsets": [ 0, 0, diff --git a/library/imports/db/dbd3a947-1747-4785-8385-8bb177e1307c.json b/library/imports/5f/5fa4d829-4ef3-47a4-b9b0-5367ea5deadb.json similarity index 64% rename from library/imports/db/dbd3a947-1747-4785-8385-8bb177e1307c.json rename to library/imports/5f/5fa4d829-4ef3-47a4-b9b0-5367ea5deadb.json index 8cff906..2896a13 100644 --- a/library/imports/db/dbd3a947-1747-4785-8385-8bb177e1307c.json +++ b/library/imports/5f/5fa4d829-4ef3-47a4-b9b0-5367ea5deadb.json @@ -2,11 +2,11 @@ "__type__": "cc.SpriteFrame", "content": { "name": "1down6", - "texture": "ed2c3a21-0522-445d-9904-76843208705f", - "atlas": "d7e227ab-cc06-48f5-a2ac-092b19ec7f6f", + "texture": "c660c59d-e175-4194-aaf3-33d1d03b783f", + "atlas": "3d019ed8-3019-436d-add0-ceeb02a5baaf", "rect": [ - 1, - 1, + 248, + 48, 45, 365 ], @@ -18,6 +18,7 @@ 45, 365 ], + "rotated": 1, "capInsets": [ 0, 0, diff --git a/library/imports/60/6012f579-6820-44ee-89c4-87c6c9b25f44.json b/library/imports/60/6012f579-6820-44ee-89c4-87c6c9b25f44.json new file mode 100644 index 0000000..c59405b --- /dev/null +++ b/library/imports/60/6012f579-6820-44ee-89c4-87c6c9b25f44.json @@ -0,0 +1,29 @@ +{ + "__type__": "cc.SpriteFrame", + "content": { + "name": "shu_zl2_33", + "texture": "418b4767-01bf-4ac2-823b-9880f2a79215", + "atlas": "cc01997d-495e-480d-871e-be405a6c38b5", + "rect": [ + 663, + 411, + 32, + 180 + ], + "offset": [ + 0, + 0 + ], + "originalSize": [ + 32, + 180 + ], + "rotated": 1, + "capInsets": [ + 0, + 0, + 0, + 0 + ] + } +} \ No newline at end of file diff --git a/library/imports/4b/4bed4b40-03a0-4ec4-8cf9-2b0863b561a5.json b/library/imports/61/6168773e-4720-4796-9d76-84266915596b.json similarity index 64% rename from library/imports/4b/4bed4b40-03a0-4ec4-8cf9-2b0863b561a5.json rename to library/imports/61/6168773e-4720-4796-9d76-84266915596b.json index e6ad4e9..fd21e04 100644 --- a/library/imports/4b/4bed4b40-03a0-4ec4-8cf9-2b0863b561a5.json +++ b/library/imports/61/6168773e-4720-4796-9d76-84266915596b.json @@ -2,11 +2,11 @@ "__type__": "cc.SpriteFrame", "content": { "name": "3down4", - "texture": "ed2c3a21-0522-445d-9904-76843208705f", - "atlas": "d7e227ab-cc06-48f5-a2ac-092b19ec7f6f", + "texture": "c660c59d-e175-4194-aaf3-33d1d03b783f", + "atlas": "3d019ed8-3019-436d-add0-ceeb02a5baaf", "rect": [ - 95, - 368, + 735, + 142, 45, 124 ], @@ -18,6 +18,7 @@ 45, 124 ], + "rotated": 1, "capInsets": [ 0, 0, diff --git a/library/imports/18/18584761-426f-48a3-a9d0-c3ecad434a5b.json b/library/imports/66/66736e80-5092-4271-8c58-17f8352c7b8d.json similarity index 64% rename from library/imports/18/18584761-426f-48a3-a9d0-c3ecad434a5b.json rename to library/imports/66/66736e80-5092-4271-8c58-17f8352c7b8d.json index 5fbff8d..07dc0a1 100644 --- a/library/imports/18/18584761-426f-48a3-a9d0-c3ecad434a5b.json +++ b/library/imports/66/66736e80-5092-4271-8c58-17f8352c7b8d.json @@ -2,11 +2,11 @@ "__type__": "cc.SpriteFrame", "content": { "name": "2down6", - "texture": "ed2c3a21-0522-445d-9904-76843208705f", - "atlas": "d7e227ab-cc06-48f5-a2ac-092b19ec7f6f", + "texture": "c660c59d-e175-4194-aaf3-33d1d03b783f", + "atlas": "3d019ed8-3019-436d-add0-ceeb02a5baaf", "rect": [ - 48, - 1, + 613, + 95, 45, 365 ], @@ -18,6 +18,7 @@ 45, 365 ], + "rotated": 1, "capInsets": [ 0, 0, diff --git a/library/imports/66/66c27f02-719e-422c-9277-42063833c0af.json b/library/imports/66/66c27f02-719e-422c-9277-42063833c0af.json new file mode 100644 index 0000000..0fb3105 --- /dev/null +++ b/library/imports/66/66c27f02-719e-422c-9277-42063833c0af.json @@ -0,0 +1,28 @@ +{ + "__type__": "cc.SpriteFrame", + "content": { + "name": "shu_zl1", + "texture": "418b4767-01bf-4ac2-823b-9880f2a79215", + "atlas": "cc01997d-495e-480d-871e-be405a6c38b5", + "rect": [ + 1081, + 883, + 9, + 42 + ], + "offset": [ + 0, + 0 + ], + "originalSize": [ + 9, + 42 + ], + "capInsets": [ + 0, + 0, + 0, + 0 + ] + } +} \ No newline at end of file diff --git a/library/imports/cc/ccd13857-62d3-4492-bd72-d8418ed44197.json b/library/imports/67/678b10b4-1068-409c-82ea-15c65801d0a5.json similarity index 64% rename from library/imports/cc/ccd13857-62d3-4492-bd72-d8418ed44197.json rename to library/imports/67/678b10b4-1068-409c-82ea-15c65801d0a5.json index 5fb933d..ca86ec5 100644 --- a/library/imports/cc/ccd13857-62d3-4492-bd72-d8418ed44197.json +++ b/library/imports/67/678b10b4-1068-409c-82ea-15c65801d0a5.json @@ -2,11 +2,11 @@ "__type__": "cc.SpriteFrame", "content": { "name": "4down2", - "texture": "ed2c3a21-0522-445d-9904-76843208705f", - "atlas": "d7e227ab-cc06-48f5-a2ac-092b19ec7f6f", + "texture": "c660c59d-e175-4194-aaf3-33d1d03b783f", + "atlas": "3d019ed8-3019-436d-add0-ceeb02a5baaf", "rect": [ - 1129, - 1, + 615, + 189, 243, 45 ], @@ -18,7 +18,6 @@ 243, 45 ], - "rotated": 1, "capInsets": [ 0, 0, diff --git a/library/imports/68/6899ee49-88e4-44ff-b7f9-421031d84e6e.json b/library/imports/68/6899ee49-88e4-44ff-b7f9-421031d84e6e.json new file mode 100644 index 0000000..5948584 --- /dev/null +++ b/library/imports/68/6899ee49-88e4-44ff-b7f9-421031d84e6e.json @@ -0,0 +1,29 @@ +{ + "__type__": "cc.SpriteFrame", + "content": { + "name": "1color5", + "texture": "418b4767-01bf-4ac2-823b-9880f2a79215", + "atlas": "cc01997d-495e-480d-871e-be405a6c38b5", + "rect": [ + 889, + 404, + 61, + 267 + ], + "offset": [ + 0, + 0 + ], + "originalSize": [ + 61, + 267 + ], + "rotated": 1, + "capInsets": [ + 0, + 0, + 0, + 0 + ] + } +} \ No newline at end of file diff --git a/library/imports/a7/a7a7b806-c49d-45bd-b181-2a1583f9ae67.json b/library/imports/69/690702de-7290-431c-8cf9-89157165ca91.json similarity index 59% rename from library/imports/a7/a7a7b806-c49d-45bd-b181-2a1583f9ae67.json rename to library/imports/69/690702de-7290-431c-8cf9-89157165ca91.json index 0dcf38c..7c496bf 100644 --- a/library/imports/a7/a7a7b806-c49d-45bd-b181-2a1583f9ae67.json +++ b/library/imports/69/690702de-7290-431c-8cf9-89157165ca91.json @@ -2,12 +2,12 @@ "__type__": "cc.SpriteFrame", "content": { "name": "7down4", - "texture": "ed2c3a21-0522-445d-9904-76843208705f", - "atlas": "d7e227ab-cc06-48f5-a2ac-092b19ec7f6f", + "texture": "c660c59d-e175-4194-aaf3-33d1d03b783f", + "atlas": "3d019ed8-3019-436d-add0-ceeb02a5baaf", "rect": [ - 283, - 368, - 45, + 861, + 613, + 46, 124 ], "offset": [ @@ -15,9 +15,10 @@ 0 ], "originalSize": [ - 45, + 46, 124 ], + "rotated": 1, "capInsets": [ 0, 0, diff --git a/library/imports/6a/6abff37f-5b52-4658-bd2b-c146e6dea162.json b/library/imports/6a/6abff37f-5b52-4658-bd2b-c146e6dea162.json new file mode 100644 index 0000000..823e95b --- /dev/null +++ b/library/imports/6a/6abff37f-5b52-4658-bd2b-c146e6dea162.json @@ -0,0 +1,28 @@ +{ + "__type__": "cc.SpriteFrame", + "content": { + "name": "8color1", + "texture": "418b4767-01bf-4ac2-823b-9880f2a79215", + "atlas": "cc01997d-495e-480d-871e-be405a6c38b5", + "rect": [ + 825, + 829, + 138, + 69 + ], + "offset": [ + 0, + 0 + ], + "originalSize": [ + 138, + 69 + ], + "capInsets": [ + 0, + 0, + 0, + 0 + ] + } +} \ No newline at end of file diff --git a/library/imports/6b/6b1b5072-9a41-44e7-9923-3855864d5120.json b/library/imports/6b/6b1b5072-9a41-44e7-9923-3855864d5120.json new file mode 100644 index 0000000..af80f6e --- /dev/null +++ b/library/imports/6b/6b1b5072-9a41-44e7-9923-3855864d5120.json @@ -0,0 +1,29 @@ +{ + "__type__": "cc.SpriteFrame", + "content": { + "name": "1color4", + "texture": "418b4767-01bf-4ac2-823b-9880f2a79215", + "atlas": "cc01997d-495e-480d-871e-be405a6c38b5", + "rect": [ + 593, + 758, + 61, + 146 + ], + "offset": [ + 0, + 0 + ], + "originalSize": [ + 61, + 146 + ], + "rotated": 1, + "capInsets": [ + 0, + 0, + 0, + 0 + ] + } +} \ No newline at end of file diff --git a/library/imports/01/01713157-8648-451e-9061-5be0089e39f8.json b/library/imports/6c/6ca2b413-78a7-4e32-bf03-b4a2b80f024b.json similarity index 66% rename from library/imports/01/01713157-8648-451e-9061-5be0089e39f8.json rename to library/imports/6c/6ca2b413-78a7-4e32-bf03-b4a2b80f024b.json index c5433ee..53ffaef 100644 --- a/library/imports/01/01713157-8648-451e-9061-5be0089e39f8.json +++ b/library/imports/6c/6ca2b413-78a7-4e32-bf03-b4a2b80f024b.json @@ -2,11 +2,11 @@ "__type__": "cc.SpriteFrame", "content": { "name": "4down3", - "texture": "ed2c3a21-0522-445d-9904-76843208705f", - "atlas": "d7e227ab-cc06-48f5-a2ac-092b19ec7f6f", + "texture": "c660c59d-e175-4194-aaf3-33d1d03b783f", + "atlas": "3d019ed8-3019-436d-add0-ceeb02a5baaf", "rect": [ - 565, 1, + 236, 363, 45 ], @@ -18,7 +18,6 @@ 363, 45 ], - "rotated": 1, "capInsets": [ 0, 0, diff --git a/library/imports/74/747709de-f3f7-4042-8ac9-9ff807c4b7cf.json b/library/imports/74/747709de-f3f7-4042-8ac9-9ff807c4b7cf.json new file mode 100644 index 0000000..dfbdceb --- /dev/null +++ b/library/imports/74/747709de-f3f7-4042-8ac9-9ff807c4b7cf.json @@ -0,0 +1,29 @@ +{ + "__type__": "cc.SpriteFrame", + "content": { + "name": "10color6", + "texture": "418b4767-01bf-4ac2-823b-9880f2a79215", + "atlas": "cc01997d-495e-480d-871e-be405a6c38b5", + "rect": [ + 889, + 277, + 61, + 386 + ], + "offset": [ + 0, + 0 + ], + "originalSize": [ + 61, + 386 + ], + "rotated": 1, + "capInsets": [ + 0, + 0, + 0, + 0 + ] + } +} \ No newline at end of file diff --git a/library/imports/74/74c1ec31-91eb-423e-97c9-68c93ffde355.json b/library/imports/74/74c1ec31-91eb-423e-97c9-68c93ffde355.json new file mode 100644 index 0000000..51aa319 --- /dev/null +++ b/library/imports/74/74c1ec31-91eb-423e-97c9-68c93ffde355.json @@ -0,0 +1,29 @@ +{ + "__type__": "cc.SpriteFrame", + "content": { + "name": "8color5", + "texture": "418b4767-01bf-4ac2-823b-9880f2a79215", + "atlas": "cc01997d-495e-480d-871e-be405a6c38b5", + "rect": [ + 388, + 474, + 61, + 266 + ], + "offset": [ + 0, + 0 + ], + "originalSize": [ + 61, + 266 + ], + "rotated": 1, + "capInsets": [ + 0, + 0, + 0, + 0 + ] + } +} \ No newline at end of file diff --git a/library/imports/51/51f517ae-4273-4f6a-8d64-3265c9bc941c.json b/library/imports/80/805ed668-1b05-44ff-98f9-2e8fc101a705.json similarity index 64% rename from library/imports/51/51f517ae-4273-4f6a-8d64-3265c9bc941c.json rename to library/imports/80/805ed668-1b05-44ff-98f9-2e8fc101a705.json index 4882328..fee56ac 100644 --- a/library/imports/51/51f517ae-4273-4f6a-8d64-3265c9bc941c.json +++ b/library/imports/80/805ed668-1b05-44ff-98f9-2e8fc101a705.json @@ -2,11 +2,11 @@ "__type__": "cc.SpriteFrame", "content": { "name": "6down1", - "texture": "ed2c3a21-0522-445d-9904-76843208705f", - "atlas": "d7e227ab-cc06-48f5-a2ac-092b19ec7f6f", + "texture": "c660c59d-e175-4194-aaf3-33d1d03b783f", + "atlas": "3d019ed8-3019-436d-add0-ceeb02a5baaf", "rect": [ - 659, - 366, + 861, + 283, 122, 45 ], @@ -18,7 +18,6 @@ 122, 45 ], - "rotated": 1, "capInsets": [ 0, 0, diff --git a/library/imports/80/809984f5-0183-4d45-9751-c6c56f5d1eb9.js.map b/library/imports/80/809984f5-0183-4d45-9751-c6c56f5d1eb9.js.map index 563f7ee..bce9e8f 100644 --- a/library/imports/80/809984f5-0183-4d45-9751-c6c56f5d1eb9.js.map +++ b/library/imports/80/809984f5-0183-4d45-9751-c6c56f5d1eb9.js.map @@ -1,5 +1 @@ -<<<<<<< HEAD -{"version":3,"sources":["assets\\Script\\SceneManager.ts"],"names":[],"mappings":"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","file":"","sourceRoot":"/","sourcesContent":["// Learn TypeScript:\r\n// - https://docs.cocos.com/creator/manual/en/scripting/typescript.html\r\n// Learn Attribute:\r\n// - https://docs.cocos.com/creator/manual/en/scripting/reference/attributes.html\r\n// Learn life-cycle callbacks:\r\n// - https://docs.cocos.com/creator/manual/en/scripting/life-cycle-callbacks.html\r\n\r\nimport MapConroler from \"./Map\";\r\nimport { MiniGameSdk } from \"./Sdk/MiniGameSdk\";\r\n\r\nconst {ccclass, property} = cc._decorator;\r\n\r\n@ccclass\r\nexport default class SceneManager extends cc.Component {\r\n\r\n @property(cc.Label)\r\n label: cc.Label = null;\r\n\r\n @property\r\n text: string = 'hello';\r\n\r\n @property(cc.Node)\r\n freeze: cc.Node = null;\r\n\r\n @property(cc.Node)\r\n hammer: cc.Node = null;\r\n\r\n @property(cc.Node)\r\n magic_wand: cc.Node = null;\r\n\r\n @property(cc.Node)\r\n pause: cc.Node = null;\r\n\r\n\r\n @property({type: [cc.Prefab], tooltip:\"方块数组\"})\r\n Block_Array : Array = [];\r\n\r\n @property({type: [cc.Prefab], tooltip:\"墙壁数组\"})\r\n Wall_Prefab : Array = [];\r\n\r\n particleEffects: cc.ParticleAsset[];\r\n // @property({type: [cc.ParticleSystem], tooltip:\"粒子数组\"})\r\n // particleEffects : Array = [];\r\n\r\n load1 :boolean = false;\r\n load2 :boolean = false;\r\n load3 :boolean = false;\r\n btnName: string = '';\r\n callBack: any;\r\n\r\n \r\n // LIFE-CYCLE CALLBACKS:\r\n\r\n onLoad () {\r\n cc.game.setFrameRate(63); \r\n this.changeBg();\r\n\r\n setTimeout(() => {\r\n cc.director.preloadScene(\"HomeScene\", (err) => {\r\n if (err) {\r\n // console.error('预加载 HomeScene 场景失败:', err);\r\n return;\r\n }\r\n // console.log('成功预加载 HomeScene 场景');\r\n });\r\n }, 1000);\r\n \r\n }\r\n \r\n changeBg(){\r\n let number = Math.floor(Math.random() * 8) + 1;\r\n const path = 'bg/bg' + number;\r\n cc.resources.load(path, cc.SpriteFrame, (err, spriteFrame: cc.SpriteFrame) => {\r\n if (err) {\r\n console.error('动态加载背景图失败:', err);\r\n return;\r\n } \r\n this.node.getChildByName(\"Game\").getChildByName(\"bg\").getComponent(cc.Sprite).spriteFrame = spriteFrame;\r\n })\r\n }\r\n\r\n loadParticleEffects() {\r\n const path = 'Particle';\r\n cc.resources.loadDir(path, cc.ParticleAsset, (err, assets: cc.ParticleAsset[]) => {\r\n if (err) {\r\n console.error('动态加载粒子特效失败:', err);\r\n return;\r\n }\r\n\r\n this.particleEffects = assets;\r\n this.setParticleSort();\r\n this.load3 = true;\r\n //console.log('粒子特效加载成功,共加载了', this.particleEffects.length, '个粒子特效');\r\n });\r\n }\r\n\r\n setWallPrefabSort() {\r\n const order = ['down', 'downLeft', 'downRight', 'left','right','up','upLeft','upRight'];\r\n this.Wall_Prefab.sort((a, b) => {\r\n const indexA = order.indexOf(a.name);\r\n const indexB = order.indexOf(b.name);\r\n if (indexA === -1) return 1;\r\n if (indexB === -1) return -1;\r\n return indexA - indexB;\r\n });\r\n \r\n }\r\n\r\n setParticleSort() {\r\n const order = ['top', 'bot', 'rig', 'lef'];\r\n this.particleEffects.sort((a, b) => {\r\n // console.log(a.name.substr(0,3),b.name.substr(0,3));\r\n const indexA = order.indexOf(a.name.substr(0,3));\r\n const indexB = order.indexOf(b.name.substr(0,3));\r\n if (indexA === -1) return 1;\r\n if (indexB === -1) return -1;\r\n return indexA - indexB;\r\n });\r\n }\r\n\r\n setSort(){\r\n this.Block_Array.sort((a, b) => {\r\n // 从名称中提取数字部分\r\n const numberA = parseInt(a.name.match(/\\d+/)?.[0] || '0', 10);\r\n const numberB = parseInt(b.name.match(/\\d+/)?.[0] || '0', 10);\r\n return numberA - numberB;\r\n });\r\n }\r\n\r\n start () {\r\n\r\n }\r\n\r\n startGame(){\r\n cc.director.loadScene(\"HomeScene\", (err) => {\r\n if (err) {\r\n console.error('加载 HomeScene 场景失败:', err);\r\n } else {\r\n // console.log('成功切换到 HomeScene 场景');\r\n cc.director.loadScene(\"HomeScene\");\r\n }\r\n });\r\n\r\n }\r\n\r\n returnHome(){\r\n if(this.node.getChildByName(\"Pause\").getChildByName(\"btn\").getComponent(\"btnControl\")._touch){\r\n if(MapConroler._instance.gameStart == true){\r\n MiniGameSdk.API.showToast(\"体力值减少\");\r\n cc.fx.GameTool.setUserHealth(-1,(data)=>{\r\n })\r\n if(MapConroler._instance.count_Time){\r\n let count_Time = MapConroler._instance.count_Time;\r\n let add_Time = MapConroler._instance.add_Time;\r\n let data = {\r\n time:count_Time, \r\n add_Time:add_Time,\r\n result:\"give_up\"\r\n }\r\n cc.fx.GameTool.shushu_Track(\"finish_stage\",data);\r\n }\r\n }\r\n this.node.getChildByName(\"Pause\").getChildByName(\"btn\").getComponent(\"btnControl\").setTouch(false);\r\n cc.fx.AudioManager._instance.playEffect(\"zhuan1\",null);\r\n this.node.getChildByName(\"zhuanchang\").active = true;\r\n this.node.getChildByName(\"zhuanchang\").getComponent(sp.Skeleton).setAnimation(1,\"up\",false);\r\n cc.director.preloadScene(\"HomeScene\", (err, asset) => {\r\n if (err) {\r\n console.error('动态加载 Prefab 失败:', err);\r\n return;\r\n }\r\n \r\n });\r\n setTimeout(() => {\r\n cc.director.loadScene(\"HomeScene\");\r\n }, 1200);\r\n }\r\n }\r\n\r\n\r\n destroyNodesInFrames(nodes: cc.Node[], callback: () => void) {\r\n const BATCH_SIZE = 10; // 每帧销毁的节点数量\r\n let index = 0;\r\n\r\n const destroyBatch = () => {\r\n let count = 0;\r\n while (index < nodes.length && count < BATCH_SIZE) {\r\n const node = nodes[index];\r\n if (node) {\r\n\r\n node.active = false;\r\n }\r\n index++;\r\n count++;\r\n }\r\n\r\n if (index < nodes.length) {\r\n this.scheduleOnce(destroyBatch, 6);\r\n } else {\r\n callback();\r\n }\r\n };\r\n\r\n destroyBatch();\r\n }\r\n\r\n // 改进后的切换场景方法\r\n switchToEmptyScene() {\r\n const allNodes = cc.director.getScene().children;\r\n this.destroyNodesInFrames(allNodes, () => {\r\n cc.director.loadScene(\"HomeScene\");\r\n });\r\n }\r\n\r\n openPause(){\r\n cc.fx.AudioManager._instance.playEffect(\"anniu_little\",null);\r\n if(this.pause.getComponent(\"btnControl\")._touch){\r\n this.pause.getComponent(\"btnControl\").setTouch(false);\r\n this.node.getChildByName(\"Pause\").active = true;\r\n MapConroler._instance.pause = true;\r\n }\r\n\r\n }\r\n\r\n closePause(){\r\n cc.fx.AudioManager._instance.playEffect(\"anniu_little\",null);\r\n this.pause.getComponent(\"btnControl\").setTouch(true);\r\n this.node.getChildByName(\"Pause\").active = false; \r\n if(MapConroler._instance.node.parent.getChildByName(\"Ice\").active == false){\r\n MapConroler._instance.pause = false;\r\n } \r\n }\r\n\r\n openPropBuy(name){\r\n MapConroler._instance.pause = true;\r\n this.btnName = name;\r\n let propWindow = this.node.getChildByName(\"Game\").getChildByName(\"propWindow\");\r\n propWindow.active = true;\r\n propWindow.getChildByName(\"freeze\").active = false;\r\n propWindow.getChildByName(\"hammer\").active = false;\r\n propWindow.getChildByName(\"magic\").active = false;\r\n propWindow.getChildByName(\"buy_Btn\").getComponent(\"btnControl\").setTouch(true);\r\n propWindow.getChildByName(name).active = true;\r\n }\r\n\r\n clickBtn(){\r\n cc.fx.AudioManager._instance.playEffect(\"anniu_Big\",null);\r\n let propWindow = this.node.getChildByName(\"Game\").getChildByName(\"propWindow\");\r\n if(propWindow.getChildByName(\"buy_Btn\").getComponent(\"btnControl\")._touch){\r\n propWindow.getChildByName(\"buy_Btn\").getComponent(\"btnControl\").setTouch(false);\r\n if(this.btnName == \"freeze\")\r\n MapConroler._instance.buyFreeze();\r\n else if(this.btnName == \"hammer\")\r\n MapConroler._instance.buyHammer();\r\n else if(this.btnName == \"magic\")\r\n MapConroler._instance.buyMagic();\r\n }\r\n }\r\n\r\n\r\n\r\n closePropBuy(){\r\n MapConroler._instance.pause = false;\r\n let freezeBtn = MapConroler._instance.node.parent.getChildByName(\"Bottom\").getChildByName(\"timeBtn\");\r\n let hammerBtn = MapConroler._instance.node.parent.getChildByName(\"Bottom\").getChildByName(\"destroyBtn\");\r\n let magicBtn = MapConroler._instance.node.parent.getChildByName(\"Bottom\").getChildByName(\"magicBtn\");\r\n if(this.btnName == \"freeze\") freezeBtn.getComponent(\"btnControl\").setTouch(true);\r\n else if(this.btnName == \"hammer\") hammerBtn.getComponent(\"btnControl\").setTouch(true); \r\n else if(this.btnName == \"magic\") magicBtn.getComponent(\"btnControl\").setTouch(true);\r\n\r\n this.node.getChildByName(\"Game\").getChildByName(\"propWindow\").active = false;\r\n }\r\n\r\n update (dt) {\r\n\r\n }\r\n}\r\n"]} -======= -{"version":3,"sources":["assets\\Script\\SceneManager.ts"],"names":[],"mappings":"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","file":"","sourceRoot":"/","sourcesContent":["// Learn TypeScript:\r\n// - https://docs.cocos.com/creator/manual/en/scripting/typescript.html\r\n// Learn Attribute:\r\n// - https://docs.cocos.com/creator/manual/en/scripting/reference/attributes.html\r\n// Learn life-cycle callbacks:\r\n// - https://docs.cocos.com/creator/manual/en/scripting/life-cycle-callbacks.html\r\n\r\nimport MapConroler from \"./Map\";\r\nimport { MiniGameSdk } from \"./Sdk/MiniGameSdk\";\r\n\r\nconst { ccclass, property } = cc._decorator;\r\n\r\n@ccclass\r\nexport default class SceneManager extends cc.Component {\r\n\r\n @property(cc.Label)\r\n label: cc.Label = null;\r\n\r\n @property\r\n text: string = 'hello';\r\n\r\n @property(cc.Node)\r\n freeze: cc.Node = null;\r\n\r\n @property(cc.Node)\r\n hammer: cc.Node = null;\r\n\r\n @property(cc.Node)\r\n magic_wand: cc.Node = null;\r\n\r\n @property(cc.Node)\r\n pause: cc.Node = null;\r\n\r\n\r\n @property({ type: [cc.Prefab], tooltip: \"方块数组\" })\r\n Block_Array: Array = [];\r\n\r\n @property({ type: [cc.Prefab], tooltip: \"墙壁数组\" })\r\n Wall_Prefab: Array = [];\r\n\r\n particleEffects: cc.ParticleAsset[];\r\n // @property({type: [cc.ParticleSystem], tooltip:\"粒子数组\"})\r\n // particleEffects : Array = [];\r\n\r\n load1: boolean = false;\r\n load2: boolean = false;\r\n load3: boolean = false;\r\n btnName: string = '';\r\n callBack: any;\r\n\r\n\r\n // LIFE-CYCLE CALLBACKS:\r\n\r\n onLoad() {\r\n cc.game.setFrameRate(63);\r\n this.changeBg();\r\n\r\n setTimeout(() => {\r\n cc.director.preloadScene(\"HomeScene\", (err) => {\r\n if (err) {\r\n // console.error('预加载 HomeScene 场景失败:', err);\r\n return;\r\n }\r\n // console.log('成功预加载 HomeScene 场景');\r\n });\r\n }, 1000);\r\n\r\n }\r\n\r\n changeBg() {\r\n let number = Math.floor(Math.random() * 8) + 1;\r\n const path = 'bg/bg' + number;\r\n cc.resources.load(path, cc.SpriteFrame, (err, spriteFrame: cc.SpriteFrame) => {\r\n if (err) {\r\n console.error('动态加载背景图失败:', err);\r\n return;\r\n }\r\n this.node.getChildByName(\"Game\").getChildByName(\"bg\").getComponent(cc.Sprite).spriteFrame = spriteFrame;\r\n })\r\n }\r\n\r\n loadParticleEffects() {\r\n const path = 'Particle';\r\n cc.resources.loadDir(path, cc.ParticleAsset, (err, assets: cc.ParticleAsset[]) => {\r\n if (err) {\r\n console.error('动态加载粒子特效失败:', err);\r\n return;\r\n }\r\n\r\n this.particleEffects = assets;\r\n this.setParticleSort();\r\n this.load3 = true;\r\n //console.log('粒子特效加载成功,共加载了', this.particleEffects.length, '个粒子特效');\r\n });\r\n }\r\n\r\n setWallPrefabSort() {\r\n const order = ['down', 'downLeft', 'downRight', 'left', 'right', 'up', 'upLeft', 'upRight'];\r\n this.Wall_Prefab.sort((a, b) => {\r\n const indexA = order.indexOf(a.name);\r\n const indexB = order.indexOf(b.name);\r\n if (indexA === -1) return 1;\r\n if (indexB === -1) return -1;\r\n return indexA - indexB;\r\n });\r\n\r\n }\r\n\r\n setParticleSort() {\r\n const order = ['top', 'bot', 'rig', 'lef'];\r\n this.particleEffects.sort((a, b) => {\r\n // console.log(a.name.substr(0,3),b.name.substr(0,3));\r\n const indexA = order.indexOf(a.name.substr(0, 3));\r\n const indexB = order.indexOf(b.name.substr(0, 3));\r\n if (indexA === -1) return 1;\r\n if (indexB === -1) return -1;\r\n return indexA - indexB;\r\n });\r\n }\r\n\r\n setSort() {\r\n this.Block_Array.sort((a, b) => {\r\n // 从名称中提取数字部分\r\n const numberA = parseInt(a.name.match(/\\d+/)?.[0] || '0', 10);\r\n const numberB = parseInt(b.name.match(/\\d+/)?.[0] || '0', 10);\r\n return numberA - numberB;\r\n });\r\n }\r\n\r\n start() {\r\n\r\n }\r\n\r\n startGame() {\r\n cc.director.loadScene(\"HomeScene\", (err) => {\r\n if (err) {\r\n console.error('加载 HomeScene 场景失败:', err);\r\n } else {\r\n // console.log('成功切换到 HomeScene 场景');\r\n cc.director.loadScene(\"HomeScene\");\r\n }\r\n });\r\n\r\n }\r\n\r\n returnHome() {\r\n if (this.node.getChildByName(\"Pause\").getChildByName(\"btn\").getComponent(\"btnControl\")._touch) {\r\n if (MapConroler._instance.gameStart == true) {\r\n MiniGameSdk.API.showToast(\"体力值减少\");\r\n cc.fx.GameTool.setUserHealth(-1, (data) => {\r\n })\r\n let data = {\r\n time: MapConroler._instance.count_Time,\r\n add_Time: MapConroler._instance.add_Time,\r\n result: \"give_up\"\r\n }\r\n cc.fx.GameTool.shushu_Track(\"finish_stage\", data);\r\n }\r\n this.node.getChildByName(\"Pause\").getChildByName(\"btn\").getComponent(\"btnControl\").setTouch(false);\r\n cc.fx.AudioManager._instance.playEffect(\"zhuan1\", null);\r\n this.node.getChildByName(\"zhuanchang\").active = true;\r\n this.node.getChildByName(\"zhuanchang\").getComponent(sp.Skeleton).setAnimation(1, \"up\", false);\r\n cc.director.preloadScene(\"HomeScene\", (err, asset) => {\r\n if (err) {\r\n console.error('动态加载 Prefab 失败:', err);\r\n return;\r\n }\r\n\r\n });\r\n setTimeout(() => {\r\n cc.director.loadScene(\"HomeScene\");\r\n }, 1200);\r\n }\r\n }\r\n\r\n\r\n destroyNodesInFrames(nodes: cc.Node[], callback: () => void) {\r\n const BATCH_SIZE = 10; // 每帧销毁的节点数量\r\n let index = 0;\r\n\r\n const destroyBatch = () => {\r\n let count = 0;\r\n while (index < nodes.length && count < BATCH_SIZE) {\r\n const node = nodes[index];\r\n if (node) {\r\n\r\n node.active = false;\r\n }\r\n index++;\r\n count++;\r\n }\r\n\r\n if (index < nodes.length) {\r\n this.scheduleOnce(destroyBatch, 6);\r\n } else {\r\n callback();\r\n }\r\n };\r\n\r\n destroyBatch();\r\n }\r\n\r\n // 改进后的切换场景方法\r\n switchToEmptyScene() {\r\n const allNodes = cc.director.getScene().children;\r\n this.destroyNodesInFrames(allNodes, () => {\r\n cc.director.loadScene(\"HomeScene\");\r\n });\r\n }\r\n\r\n openPause() {\r\n cc.fx.AudioManager._instance.playEffect(\"anniu_little\", null);\r\n if (this.pause.getComponent(\"btnControl\")._touch) {\r\n this.pause.getComponent(\"btnControl\").setTouch(false);\r\n this.node.getChildByName(\"Pause\").active = true;\r\n MapConroler._instance.pause = true;\r\n }\r\n\r\n }\r\n\r\n closePause() {\r\n cc.fx.AudioManager._instance.playEffect(\"anniu_little\", null);\r\n this.pause.getComponent(\"btnControl\").setTouch(true);\r\n this.node.getChildByName(\"Pause\").active = false;\r\n if (MapConroler._instance.node.parent.getChildByName(\"Ice\").active == false) {\r\n MapConroler._instance.pause = false;\r\n }\r\n }\r\n\r\n openPropBuy(name) {\r\n MapConroler._instance.pause = true;\r\n this.btnName = name;\r\n let propWindow = this.node.getChildByName(\"Game\").getChildByName(\"propWindow\");\r\n propWindow.active = true;\r\n propWindow.getChildByName(\"freeze\").active = false;\r\n propWindow.getChildByName(\"hammer\").active = false;\r\n propWindow.getChildByName(\"magic\").active = false;\r\n propWindow.getChildByName(\"buy_Btn\").getComponent(\"btnControl\").setTouch(true);\r\n propWindow.getChildByName(name).active = true;\r\n }\r\n\r\n clickBtn() {\r\n cc.fx.AudioManager._instance.playEffect(\"anniu_Big\", null);\r\n let propWindow = this.node.getChildByName(\"Game\").getChildByName(\"propWindow\");\r\n if (propWindow.getChildByName(\"buy_Btn\").getComponent(\"btnControl\")._touch) {\r\n propWindow.getChildByName(\"buy_Btn\").getComponent(\"btnControl\").setTouch(false);\r\n if (this.btnName == \"freeze\")\r\n MapConroler._instance.buyFreeze();\r\n else if (this.btnName == \"hammer\")\r\n MapConroler._instance.buyHammer();\r\n else if (this.btnName == \"magic\")\r\n MapConroler._instance.buyMagic();\r\n }\r\n }\r\n //打开商店\r\n openShop() {\r\n // 加载 shop bundle\r\n cc.assetManager.loadBundle('shop', (err: Error, bundle: cc.AssetManager.Bundle) => {\r\n bundle.load('prefab/shop', cc.Prefab, (err: Error, prefab: cc.Prefab) => {\r\n if (err) {\r\n cc.error(err.message || err);\r\n return;\r\n }\r\n if (prefab) {\r\n const shopNode = cc.instantiate(prefab);\r\n this.node.addChild(shopNode);\r\n console.log(\"shopNode parent:\", shopNode.parent);\r\n }\r\n });\r\n });\r\n }\r\n\r\n\r\n closePropBuy() {\r\n MapConroler._instance.pause = false;\r\n let freezeBtn = MapConroler._instance.node.parent.getChildByName(\"Bottom\").getChildByName(\"timeBtn\");\r\n let hammerBtn = MapConroler._instance.node.parent.getChildByName(\"Bottom\").getChildByName(\"destroyBtn\");\r\n let magicBtn = MapConroler._instance.node.parent.getChildByName(\"Bottom\").getChildByName(\"magicBtn\");\r\n if (this.btnName == \"freeze\") freezeBtn.getComponent(\"btnControl\").setTouch(true);\r\n else if (this.btnName == \"hammer\") hammerBtn.getComponent(\"btnControl\").setTouch(true);\r\n else if (this.btnName == \"magic\") magicBtn.getComponent(\"btnControl\").setTouch(true);\r\n\r\n this.node.getChildByName(\"Game\").getChildByName(\"propWindow\").active = false;\r\n }\r\n\r\n update(dt) {\r\n\r\n }\r\n}\r\n"]} ->>>>>>> 0a31a7a5abc2c505bf743aa596e1c765a0405152 +{"version":3,"sources":["assets\\Script\\SceneManager.ts"],"names":[],"mappings":"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","file":"","sourceRoot":"/","sourcesContent":["// Learn TypeScript:\r\n// - https://docs.cocos.com/creator/manual/en/scripting/typescript.html\r\n// Learn Attribute:\r\n// - https://docs.cocos.com/creator/manual/en/scripting/reference/attributes.html\r\n// Learn life-cycle callbacks:\r\n// - https://docs.cocos.com/creator/manual/en/scripting/life-cycle-callbacks.html\r\n\r\nimport MapConroler from \"./Map\";\r\nimport { MiniGameSdk } from \"./Sdk/MiniGameSdk\";\r\n\r\nconst { ccclass, property } = cc._decorator;\r\n\r\n@ccclass\r\nexport default class SceneManager extends cc.Component {\r\n\r\n @property(cc.Label)\r\n label: cc.Label = null;\r\n\r\n @property\r\n text: string = 'hello';\r\n\r\n @property(cc.Node)\r\n freeze: cc.Node = null;\r\n\r\n @property(cc.Node)\r\n hammer: cc.Node = null;\r\n\r\n @property(cc.Node)\r\n magic_wand: cc.Node = null;\r\n\r\n @property(cc.Node)\r\n pause: cc.Node = null;\r\n\r\n\r\n @property({ type: [cc.Prefab], tooltip: \"方块数组\" })\r\n Block_Array: Array = [];\r\n\r\n @property({ type: [cc.Prefab], tooltip: \"墙壁数组\" })\r\n Wall_Prefab: Array = [];\r\n\r\n particleEffects: cc.ParticleAsset[];\r\n // @property({type: [cc.ParticleSystem], tooltip:\"粒子数组\"})\r\n // particleEffects : Array = [];\r\n\r\n load1: boolean = false;\r\n load2: boolean = false;\r\n load3: boolean = false;\r\n btnName: string = '';\r\n callBack: any;\r\n\r\n\r\n // LIFE-CYCLE CALLBACKS:\r\n\r\n onLoad() {\r\n cc.game.setFrameRate(63);\r\n this.changeBg();\r\n\r\n setTimeout(() => {\r\n cc.director.preloadScene(\"HomeScene\", (err) => {\r\n if (err) {\r\n // console.error('预加载 HomeScene 场景失败:', err);\r\n return;\r\n }\r\n // console.log('成功预加载 HomeScene 场景');\r\n });\r\n }, 1000);\r\n\r\n }\r\n\r\n changeBg() {\r\n let number = Math.floor(Math.random() * 8) + 1;\r\n const path = 'bg/bg' + number;\r\n cc.resources.load(path, cc.SpriteFrame, (err, spriteFrame: cc.SpriteFrame) => {\r\n if (err) {\r\n console.error('动态加载背景图失败:', err);\r\n return;\r\n }\r\n this.node.getChildByName(\"Game\").getChildByName(\"bg\").getComponent(cc.Sprite).spriteFrame = spriteFrame;\r\n })\r\n }\r\n\r\n loadParticleEffects() {\r\n const path = 'Particle';\r\n cc.resources.loadDir(path, cc.ParticleAsset, (err, assets: cc.ParticleAsset[]) => {\r\n if (err) {\r\n console.error('动态加载粒子特效失败:', err);\r\n return;\r\n }\r\n\r\n this.particleEffects = assets;\r\n this.setParticleSort();\r\n this.load3 = true;\r\n //console.log('粒子特效加载成功,共加载了', this.particleEffects.length, '个粒子特效');\r\n });\r\n }\r\n\r\n setWallPrefabSort() {\r\n const order = ['down', 'downLeft', 'downRight', 'left', 'right', 'up', 'upLeft', 'upRight'];\r\n this.Wall_Prefab.sort((a, b) => {\r\n const indexA = order.indexOf(a.name);\r\n const indexB = order.indexOf(b.name);\r\n if (indexA === -1) return 1;\r\n if (indexB === -1) return -1;\r\n return indexA - indexB;\r\n });\r\n\r\n }\r\n\r\n setParticleSort() {\r\n const order = ['top', 'bot', 'rig', 'lef'];\r\n this.particleEffects.sort((a, b) => {\r\n // console.log(a.name.substr(0,3),b.name.substr(0,3));\r\n const indexA = order.indexOf(a.name.substr(0, 3));\r\n const indexB = order.indexOf(b.name.substr(0, 3));\r\n if (indexA === -1) return 1;\r\n if (indexB === -1) return -1;\r\n return indexA - indexB;\r\n });\r\n }\r\n\r\n setSort() {\r\n this.Block_Array.sort((a, b) => {\r\n // 从名称中提取数字部分\r\n const numberA = parseInt(a.name.match(/\\d+/)?.[0] || '0', 10);\r\n const numberB = parseInt(b.name.match(/\\d+/)?.[0] || '0', 10);\r\n return numberA - numberB;\r\n });\r\n }\r\n\r\n start() {\r\n\r\n }\r\n\r\n startGame() {\r\n cc.director.loadScene(\"HomeScene\", (err) => {\r\n if (err) {\r\n console.error('加载 HomeScene 场景失败:', err);\r\n } else {\r\n // console.log('成功切换到 HomeScene 场景');\r\n cc.director.loadScene(\"HomeScene\");\r\n }\r\n });\r\n\r\n }\r\n\r\n returnHome() {\r\n if (this.node.getChildByName(\"Pause\").getChildByName(\"btn\").getComponent(\"btnControl\")._touch) {\r\n if (MapConroler._instance.gameStart == true) {\r\n MiniGameSdk.API.showToast(\"体力值减少\");\r\n cc.fx.GameTool.setUserHealth(-1, (data) => {\r\n })\r\n<<<<<<< HEAD\r\n if(MapConroler._instance.count_Time){\r\n let count_Time = MapConroler._instance.count_Time;\r\n let add_Time = MapConroler._instance.add_Time;\r\n let data = {\r\n time:count_Time, \r\n add_Time:add_Time,\r\n result:\"give_up\"\r\n }\r\n cc.fx.GameTool.shushu_Track(\"finish_stage\",data);\r\n }\r\n=======\r\n let data = {\r\n time: MapConroler._instance.count_Time,\r\n add_Time: MapConroler._instance.add_Time,\r\n result: \"give_up\"\r\n }\r\n cc.fx.GameTool.shushu_Track(\"finish_stage\", data);\r\n>>>>>>> 0a31a7a5abc2c505bf743aa596e1c765a0405152\r\n }\r\n this.node.getChildByName(\"Pause\").getChildByName(\"btn\").getComponent(\"btnControl\").setTouch(false);\r\n cc.fx.AudioManager._instance.playEffect(\"zhuan1\", null);\r\n this.node.getChildByName(\"zhuanchang\").active = true;\r\n this.node.getChildByName(\"zhuanchang\").getComponent(sp.Skeleton).setAnimation(1, \"up\", false);\r\n cc.director.preloadScene(\"HomeScene\", (err, asset) => {\r\n if (err) {\r\n console.error('动态加载 Prefab 失败:', err);\r\n return;\r\n }\r\n\r\n });\r\n setTimeout(() => {\r\n cc.director.loadScene(\"HomeScene\");\r\n }, 1200);\r\n }\r\n }\r\n\r\n\r\n destroyNodesInFrames(nodes: cc.Node[], callback: () => void) {\r\n const BATCH_SIZE = 10; // 每帧销毁的节点数量\r\n let index = 0;\r\n\r\n const destroyBatch = () => {\r\n let count = 0;\r\n while (index < nodes.length && count < BATCH_SIZE) {\r\n const node = nodes[index];\r\n if (node) {\r\n\r\n node.active = false;\r\n }\r\n index++;\r\n count++;\r\n }\r\n\r\n if (index < nodes.length) {\r\n this.scheduleOnce(destroyBatch, 6);\r\n } else {\r\n callback();\r\n }\r\n };\r\n\r\n destroyBatch();\r\n }\r\n\r\n // 改进后的切换场景方法\r\n switchToEmptyScene() {\r\n const allNodes = cc.director.getScene().children;\r\n this.destroyNodesInFrames(allNodes, () => {\r\n cc.director.loadScene(\"HomeScene\");\r\n });\r\n }\r\n\r\n openPause() {\r\n cc.fx.AudioManager._instance.playEffect(\"anniu_little\", null);\r\n if (this.pause.getComponent(\"btnControl\")._touch) {\r\n this.pause.getComponent(\"btnControl\").setTouch(false);\r\n this.node.getChildByName(\"Pause\").active = true;\r\n MapConroler._instance.pause = true;\r\n }\r\n\r\n }\r\n\r\n closePause() {\r\n cc.fx.AudioManager._instance.playEffect(\"anniu_little\", null);\r\n this.pause.getComponent(\"btnControl\").setTouch(true);\r\n this.node.getChildByName(\"Pause\").active = false;\r\n if (MapConroler._instance.node.parent.getChildByName(\"Ice\").active == false) {\r\n MapConroler._instance.pause = false;\r\n }\r\n }\r\n\r\n openPropBuy(name) {\r\n MapConroler._instance.pause = true;\r\n this.btnName = name;\r\n let propWindow = this.node.getChildByName(\"Game\").getChildByName(\"propWindow\");\r\n propWindow.active = true;\r\n propWindow.getChildByName(\"freeze\").active = false;\r\n propWindow.getChildByName(\"hammer\").active = false;\r\n propWindow.getChildByName(\"magic\").active = false;\r\n propWindow.getChildByName(\"buy_Btn\").getComponent(\"btnControl\").setTouch(true);\r\n propWindow.getChildByName(name).active = true;\r\n }\r\n\r\n clickBtn() {\r\n cc.fx.AudioManager._instance.playEffect(\"anniu_Big\", null);\r\n let propWindow = this.node.getChildByName(\"Game\").getChildByName(\"propWindow\");\r\n if (propWindow.getChildByName(\"buy_Btn\").getComponent(\"btnControl\")._touch) {\r\n propWindow.getChildByName(\"buy_Btn\").getComponent(\"btnControl\").setTouch(false);\r\n if (this.btnName == \"freeze\")\r\n MapConroler._instance.buyFreeze();\r\n else if (this.btnName == \"hammer\")\r\n MapConroler._instance.buyHammer();\r\n else if (this.btnName == \"magic\")\r\n MapConroler._instance.buyMagic();\r\n }\r\n }\r\n //打开商店\r\n openShop() {\r\n // 加载 shop bundle\r\n cc.assetManager.loadBundle('shop', (err: Error, bundle: cc.AssetManager.Bundle) => {\r\n bundle.load('prefab/shop', cc.Prefab, (err: Error, prefab: cc.Prefab) => {\r\n if (err) {\r\n cc.error(err.message || err);\r\n return;\r\n }\r\n if (prefab) {\r\n const shopNode = cc.instantiate(prefab);\r\n this.node.addChild(shopNode);\r\n console.log(\"shopNode parent:\", shopNode.parent);\r\n }\r\n });\r\n });\r\n }\r\n\r\n\r\n closePropBuy() {\r\n MapConroler._instance.pause = false;\r\n let freezeBtn = MapConroler._instance.node.parent.getChildByName(\"Bottom\").getChildByName(\"timeBtn\");\r\n let hammerBtn = MapConroler._instance.node.parent.getChildByName(\"Bottom\").getChildByName(\"destroyBtn\");\r\n let magicBtn = MapConroler._instance.node.parent.getChildByName(\"Bottom\").getChildByName(\"magicBtn\");\r\n if (this.btnName == \"freeze\") freezeBtn.getComponent(\"btnControl\").setTouch(true);\r\n else if (this.btnName == \"hammer\") hammerBtn.getComponent(\"btnControl\").setTouch(true);\r\n else if (this.btnName == \"magic\") magicBtn.getComponent(\"btnControl\").setTouch(true);\r\n\r\n this.node.getChildByName(\"Game\").getChildByName(\"propWindow\").active = false;\r\n }\r\n\r\n update(dt) {\r\n\r\n }\r\n}\r\n"]} \ No newline at end of file diff --git a/library/imports/58/5802ac2a-fd76-49c8-820b-7c0d04f003d5.json b/library/imports/83/8398ddf1-296c-47cd-9d55-2ed4885f9509.json similarity index 64% rename from library/imports/58/5802ac2a-fd76-49c8-820b-7c0d04f003d5.json rename to library/imports/83/8398ddf1-296c-47cd-9d55-2ed4885f9509.json index d73ddeb..621f06b 100644 --- a/library/imports/58/5802ac2a-fd76-49c8-820b-7c0d04f003d5.json +++ b/library/imports/83/8398ddf1-296c-47cd-9d55-2ed4885f9509.json @@ -2,11 +2,11 @@ "__type__": "cc.SpriteFrame", "content": { "name": "6down4", - "texture": "ed2c3a21-0522-445d-9904-76843208705f", - "atlas": "d7e227ab-cc06-48f5-a2ac-092b19ec7f6f", + "texture": "c660c59d-e175-4194-aaf3-33d1d03b783f", + "atlas": "3d019ed8-3019-436d-add0-ceeb02a5baaf", "rect": [ - 236, - 368, + 860, + 330, 45, 124 ], @@ -18,6 +18,7 @@ 45, 124 ], + "rotated": 1, "capInsets": [ 0, 0, diff --git a/library/imports/86/8600d9b3-b4ad-4c84-b458-42b4f31addcd.json b/library/imports/86/8600d9b3-b4ad-4c84-b458-42b4f31addcd.json index 4b813a3..0bbd595 100644 --- a/library/imports/86/8600d9b3-b4ad-4c84-b458-42b4f31addcd.json +++ b/library/imports/86/8600d9b3-b4ad-4c84-b458-42b4f31addcd.json @@ -281,7 +281,7 @@ "_srcBlendFactor": 770, "_dstBlendFactor": 771, "_spriteFrame": { - "__uuid__": "52f7fc1c-b560-4b6d-b15e-b38b6584a5d8" + "__uuid__": "4f65ed94-5d59-48ce-b94f-e199044365cf" }, "_type": 0, "_sizeMode": 1, @@ -295,7 +295,7 @@ "_fillRange": 0, "_isTrimmedMode": true, "_atlas": { - "__uuid__": "cc01997d-495e-480d-871e-be405a6c38b5" + "__uuid__": "f2c494b7-b6df-488f-b194-358235b0f180" }, "_id": "" }, @@ -315,7 +315,7 @@ "__uuid__": "f2c494b7-b6df-488f-b194-358235b0f180" }, "down_SpriteFrames": { - "__uuid__": "31479c6e-5626-4598-97ab-f94303e9efe7" + "__uuid__": "3d019ed8-3019-436d-add0-ceeb02a5baaf" }, "_id": "" }, @@ -486,9 +486,7 @@ "_fillStart": 0, "_fillRange": 0, "_isTrimmedMode": true, - "_atlas": { - "__uuid__": "31479c6e-5626-4598-97ab-f94303e9efe7" - }, + "_atlas": null, "_id": "" }, { @@ -2044,7 +2042,7 @@ "_srcBlendFactor": 770, "_dstBlendFactor": 771, "_spriteFrame": { - "__uuid__": "66c27f02-719e-422c-9277-42063833c0af" + "__uuid__": "4c2ac211-077a-4783-92b7-42964571ebfe" }, "_type": 0, "_sizeMode": 1, @@ -2058,7 +2056,7 @@ "_fillRange": 0, "_isTrimmedMode": true, "_atlas": { - "__uuid__": "cc01997d-495e-480d-871e-be405a6c38b5" + "__uuid__": "f2c494b7-b6df-488f-b194-358235b0f180" }, "_id": "" }, @@ -2089,7 +2087,7 @@ "_srcBlendFactor": 770, "_dstBlendFactor": 771, "_spriteFrame": { - "__uuid__": "9b80c949-4fcd-4e45-afa9-ad91683ef7b7" + "__uuid__": "1f53a670-99ab-4671-932f-3227940876cc" }, "_type": 3, "_sizeMode": 0, @@ -2103,7 +2101,7 @@ "_fillRange": 1, "_isTrimmedMode": true, "_atlas": { - "__uuid__": "cc01997d-495e-480d-871e-be405a6c38b5" + "__uuid__": "f2c494b7-b6df-488f-b194-358235b0f180" }, "_id": "" }, @@ -2266,7 +2264,7 @@ "_srcBlendFactor": 770, "_dstBlendFactor": 771, "_spriteFrame": { - "__uuid__": "66c27f02-719e-422c-9277-42063833c0af" + "__uuid__": "4c2ac211-077a-4783-92b7-42964571ebfe" }, "_type": 0, "_sizeMode": 1, @@ -2280,7 +2278,7 @@ "_fillRange": 0, "_isTrimmedMode": true, "_atlas": { - "__uuid__": "cc01997d-495e-480d-871e-be405a6c38b5" + "__uuid__": "f2c494b7-b6df-488f-b194-358235b0f180" }, "_id": "" }, @@ -2311,7 +2309,7 @@ "_srcBlendFactor": 770, "_dstBlendFactor": 771, "_spriteFrame": { - "__uuid__": "9b80c949-4fcd-4e45-afa9-ad91683ef7b7" + "__uuid__": "1f53a670-99ab-4671-932f-3227940876cc" }, "_type": 3, "_sizeMode": 0, @@ -2325,7 +2323,7 @@ "_fillRange": 1, "_isTrimmedMode": true, "_atlas": { - "__uuid__": "cc01997d-495e-480d-871e-be405a6c38b5" + "__uuid__": "f2c494b7-b6df-488f-b194-358235b0f180" }, "_id": "" }, @@ -2420,7 +2418,7 @@ "_srcBlendFactor": 770, "_dstBlendFactor": 771, "_spriteFrame": { - "__uuid__": "66c27f02-719e-422c-9277-42063833c0af" + "__uuid__": "4c2ac211-077a-4783-92b7-42964571ebfe" }, "_type": 0, "_sizeMode": 1, @@ -2434,7 +2432,7 @@ "_fillRange": 0, "_isTrimmedMode": true, "_atlas": { - "__uuid__": "cc01997d-495e-480d-871e-be405a6c38b5" + "__uuid__": "f2c494b7-b6df-488f-b194-358235b0f180" }, "_id": "" }, @@ -2529,7 +2527,7 @@ "_srcBlendFactor": 770, "_dstBlendFactor": 771, "_spriteFrame": { - "__uuid__": "66c27f02-719e-422c-9277-42063833c0af" + "__uuid__": "4c2ac211-077a-4783-92b7-42964571ebfe" }, "_type": 0, "_sizeMode": 1, @@ -2543,7 +2541,7 @@ "_fillRange": 0, "_isTrimmedMode": true, "_atlas": { - "__uuid__": "cc01997d-495e-480d-871e-be405a6c38b5" + "__uuid__": "f2c494b7-b6df-488f-b194-358235b0f180" }, "_id": "" }, @@ -2790,7 +2788,7 @@ "_srcBlendFactor": 770, "_dstBlendFactor": 771, "_spriteFrame": { - "__uuid__": "66c27f02-719e-422c-9277-42063833c0af" + "__uuid__": "4c2ac211-077a-4783-92b7-42964571ebfe" }, "_type": 0, "_sizeMode": 1, @@ -2804,7 +2802,7 @@ "_fillRange": 0, "_isTrimmedMode": true, "_atlas": { - "__uuid__": "cc01997d-495e-480d-871e-be405a6c38b5" + "__uuid__": "f2c494b7-b6df-488f-b194-358235b0f180" }, "_id": "" }, @@ -2835,7 +2833,7 @@ "_srcBlendFactor": 770, "_dstBlendFactor": 771, "_spriteFrame": { - "__uuid__": "36c23619-6422-47be-aa02-f78b7618bb3c" + "__uuid__": "b48abaaa-d7d1-45b6-8a24-8f259163122a" }, "_type": 3, "_sizeMode": 0, @@ -2849,7 +2847,7 @@ "_fillRange": 1, "_isTrimmedMode": true, "_atlas": { - "__uuid__": "cc01997d-495e-480d-871e-be405a6c38b5" + "__uuid__": "f2c494b7-b6df-488f-b194-358235b0f180" }, "_id": "" }, @@ -3012,7 +3010,7 @@ "_srcBlendFactor": 770, "_dstBlendFactor": 771, "_spriteFrame": { - "__uuid__": "66c27f02-719e-422c-9277-42063833c0af" + "__uuid__": "4c2ac211-077a-4783-92b7-42964571ebfe" }, "_type": 0, "_sizeMode": 1, @@ -3026,7 +3024,7 @@ "_fillRange": 0, "_isTrimmedMode": true, "_atlas": { - "__uuid__": "cc01997d-495e-480d-871e-be405a6c38b5" + "__uuid__": "f2c494b7-b6df-488f-b194-358235b0f180" }, "_id": "" }, @@ -3057,7 +3055,7 @@ "_srcBlendFactor": 770, "_dstBlendFactor": 771, "_spriteFrame": { - "__uuid__": "36c23619-6422-47be-aa02-f78b7618bb3c" + "__uuid__": "b48abaaa-d7d1-45b6-8a24-8f259163122a" }, "_type": 3, "_sizeMode": 0, @@ -3071,7 +3069,7 @@ "_fillRange": 1, "_isTrimmedMode": true, "_atlas": { - "__uuid__": "cc01997d-495e-480d-871e-be405a6c38b5" + "__uuid__": "f2c494b7-b6df-488f-b194-358235b0f180" }, "_id": "" }, @@ -3166,7 +3164,7 @@ "_srcBlendFactor": 770, "_dstBlendFactor": 771, "_spriteFrame": { - "__uuid__": "66c27f02-719e-422c-9277-42063833c0af" + "__uuid__": "4c2ac211-077a-4783-92b7-42964571ebfe" }, "_type": 0, "_sizeMode": 1, @@ -3180,7 +3178,7 @@ "_fillRange": 0, "_isTrimmedMode": true, "_atlas": { - "__uuid__": "cc01997d-495e-480d-871e-be405a6c38b5" + "__uuid__": "f2c494b7-b6df-488f-b194-358235b0f180" }, "_id": "" }, @@ -3275,7 +3273,7 @@ "_srcBlendFactor": 770, "_dstBlendFactor": 771, "_spriteFrame": { - "__uuid__": "66c27f02-719e-422c-9277-42063833c0af" + "__uuid__": "4c2ac211-077a-4783-92b7-42964571ebfe" }, "_type": 0, "_sizeMode": 1, @@ -3289,7 +3287,7 @@ "_fillRange": 0, "_isTrimmedMode": true, "_atlas": { - "__uuid__": "cc01997d-495e-480d-871e-be405a6c38b5" + "__uuid__": "f2c494b7-b6df-488f-b194-358235b0f180" }, "_id": "" }, @@ -3536,7 +3534,7 @@ "_srcBlendFactor": 770, "_dstBlendFactor": 771, "_spriteFrame": { - "__uuid__": "66c27f02-719e-422c-9277-42063833c0af" + "__uuid__": "4c2ac211-077a-4783-92b7-42964571ebfe" }, "_type": 0, "_sizeMode": 1, @@ -3550,7 +3548,7 @@ "_fillRange": 0, "_isTrimmedMode": true, "_atlas": { - "__uuid__": "cc01997d-495e-480d-871e-be405a6c38b5" + "__uuid__": "f2c494b7-b6df-488f-b194-358235b0f180" }, "_id": "" }, @@ -3581,7 +3579,7 @@ "_srcBlendFactor": 770, "_dstBlendFactor": 771, "_spriteFrame": { - "__uuid__": "2c8edc9c-c130-4c61-98f1-0a9b2edf3270" + "__uuid__": "e122aac4-873c-4996-bbc8-7fdbd2cd0e60" }, "_type": 3, "_sizeMode": 0, @@ -3595,7 +3593,7 @@ "_fillRange": 1, "_isTrimmedMode": true, "_atlas": { - "__uuid__": "cc01997d-495e-480d-871e-be405a6c38b5" + "__uuid__": "f2c494b7-b6df-488f-b194-358235b0f180" }, "_id": "" }, @@ -3758,7 +3756,7 @@ "_srcBlendFactor": 770, "_dstBlendFactor": 771, "_spriteFrame": { - "__uuid__": "66c27f02-719e-422c-9277-42063833c0af" + "__uuid__": "4c2ac211-077a-4783-92b7-42964571ebfe" }, "_type": 0, "_sizeMode": 1, @@ -3772,7 +3770,7 @@ "_fillRange": 0, "_isTrimmedMode": true, "_atlas": { - "__uuid__": "cc01997d-495e-480d-871e-be405a6c38b5" + "__uuid__": "f2c494b7-b6df-488f-b194-358235b0f180" }, "_id": "" }, @@ -3803,7 +3801,7 @@ "_srcBlendFactor": 770, "_dstBlendFactor": 771, "_spriteFrame": { - "__uuid__": "2c8edc9c-c130-4c61-98f1-0a9b2edf3270" + "__uuid__": "e122aac4-873c-4996-bbc8-7fdbd2cd0e60" }, "_type": 3, "_sizeMode": 0, @@ -3817,7 +3815,7 @@ "_fillRange": 1, "_isTrimmedMode": true, "_atlas": { - "__uuid__": "cc01997d-495e-480d-871e-be405a6c38b5" + "__uuid__": "f2c494b7-b6df-488f-b194-358235b0f180" }, "_id": "" }, @@ -3912,7 +3910,7 @@ "_srcBlendFactor": 770, "_dstBlendFactor": 771, "_spriteFrame": { - "__uuid__": "66c27f02-719e-422c-9277-42063833c0af" + "__uuid__": "4c2ac211-077a-4783-92b7-42964571ebfe" }, "_type": 0, "_sizeMode": 1, @@ -3926,7 +3924,7 @@ "_fillRange": 0, "_isTrimmedMode": true, "_atlas": { - "__uuid__": "cc01997d-495e-480d-871e-be405a6c38b5" + "__uuid__": "f2c494b7-b6df-488f-b194-358235b0f180" }, "_id": "" }, @@ -4021,7 +4019,7 @@ "_srcBlendFactor": 770, "_dstBlendFactor": 771, "_spriteFrame": { - "__uuid__": "66c27f02-719e-422c-9277-42063833c0af" + "__uuid__": "4c2ac211-077a-4783-92b7-42964571ebfe" }, "_type": 0, "_sizeMode": 1, @@ -4035,7 +4033,7 @@ "_fillRange": 0, "_isTrimmedMode": true, "_atlas": { - "__uuid__": "cc01997d-495e-480d-871e-be405a6c38b5" + "__uuid__": "f2c494b7-b6df-488f-b194-358235b0f180" }, "_id": "" }, diff --git a/library/imports/86/865e12b4-8506-4026-ab52-9c8421100cc4.json b/library/imports/86/865e12b4-8506-4026-ab52-9c8421100cc4.json new file mode 100644 index 0000000..47271fa --- /dev/null +++ b/library/imports/86/865e12b4-8506-4026-ab52-9c8421100cc4.json @@ -0,0 +1,28 @@ +{ + "__type__": "cc.SpriteFrame", + "content": { + "name": "wall3", + "texture": "418b4767-01bf-4ac2-823b-9880f2a79215", + "atlas": "cc01997d-495e-480d-871e-be405a6c38b5", + "rect": [ + 1158, + 340, + 138, + 146 + ], + "offset": [ + 0, + 0 + ], + "originalSize": [ + 138, + 146 + ], + "capInsets": [ + 0, + 0, + 0, + 0 + ] + } +} \ No newline at end of file diff --git a/library/imports/86/86f338ab-4874-40d7-ac5e-06e2bf339c6c.json b/library/imports/86/86f338ab-4874-40d7-ac5e-06e2bf339c6c.json deleted file mode 100644 index 836c90a..0000000 --- a/library/imports/86/86f338ab-4874-40d7-ac5e-06e2bf339c6c.json +++ /dev/null @@ -1,772 +0,0 @@ -{ - "__type__": "sp.SkeletonData", - "_name": "mofabang_texiao", - "_objFlags": 0, - "_native": "", - "_skeletonJson": { - "skeleton": { - "hash": "KwnUpLoFTPi0z5vmLJV6Z4zmnmE", - "spine": "3.8.99", - "x": -152.76, - "y": -158.93, - "width": 316.61, - "height": 310, - "images": "", - "audio": "C:\\Users\\EDY\\Desktop\\common\\battle\\特效\\500210_skill1" - }, - "bones": [ - { - "name": "root" - }, - { - "name": "all", - "parent": "root" - }, - { - "name": "shifa", - "parent": "all", - "scaleX": 1.5, - "scaleY": 1.5 - }, - { - "name": "chixu", - "parent": "shifa" - }, - { - "name": "chixu1", - "parent": "chixu" - }, - { - "name": "chixu2", - "parent": "chixu", - "scaleX": -1 - }, - { - "name": "bone", - "parent": "root", - "x": 0.19, - "y": -0.13 - }, - { - "name": "bone2", - "parent": "root", - "x": -2.4, - "y": -1.65 - }, - { - "name": "bone3", - "parent": "root", - "x": -2.4, - "y": -1.65 - }, - { - "name": "bone4", - "parent": "root", - "x": -2.4, - "y": -1.65 - }, - { - "name": "bone5", - "parent": "root", - "x": -2.4, - "y": -1.65 - }, - { - "name": "bone6", - "parent": "root", - "x": -2.4, - "y": -1.65 - }, - { - "name": "bone7", - "parent": "root", - "x": -2.4, - "y": -1.65 - }, - { - "name": "bone8", - "parent": "root", - "x": -2.4, - "y": -1.65 - } - ], - "slots": [ - { - "name": "images/effects/bg", - "bone": "root" - }, - { - "name": "images/effects/chixu/chixu_0", - "bone": "chixu2", - "color": "d120a1ca", - "blend": "additive" - }, - { - "name": "images/effects/微信图片_20250515181822", - "bone": "bone", - "attachment": "images/effects/微信图片_20250515181822" - }, - { - "name": "images/effects/chixu/chixu_00", - "bone": "chixu1", - "blend": "additive" - }, - { - "name": "images/effects/huiguang", - "bone": "all", - "attachment": "images/effects/huiguang", - "blend": "additive" - }, - { - "name": "images/effects/guangdian", - "bone": "bone2", - "attachment": "images/effects/guangdian", - "blend": "additive" - }, - { - "name": "images/effects/guangdian2", - "bone": "bone3", - "attachment": "images/effects/guangdian", - "blend": "additive" - }, - { - "name": "images/effects/guangdian4", - "bone": "bone5", - "attachment": "images/effects/guangdian", - "blend": "additive" - }, - { - "name": "images/effects/guangdian7", - "bone": "bone8", - "attachment": "images/effects/guangdian", - "blend": "additive" - }, - { - "name": "images/effects/guangdian5", - "bone": "bone6", - "attachment": "images/effects/guangdian", - "blend": "additive" - }, - { - "name": "images/effects/guangdian3", - "bone": "bone4", - "attachment": "images/effects/guangdian", - "blend": "additive" - }, - { - "name": "images/effects/guangdian6", - "bone": "bone7", - "attachment": "images/effects/guangdian", - "blend": "additive" - } - ], - "skins": [ - { - "name": "default", - "attachments": { - "images/effects/chixu/chixu_0": { - "images/effects/chixu/chixu_00": { - "width": 200, - "height": 200 - }, - "images/effects/chixu/chixu_01": { - "width": 200, - "height": 200 - }, - "images/effects/chixu/chixu_02": { - "width": 200, - "height": 200 - }, - "images/effects/chixu/chixu_03": { - "width": 200, - "height": 200 - }, - "images/effects/chixu/chixu_04": { - "width": 200, - "height": 200 - }, - "images/effects/chixu/chixu_05": { - "width": 200, - "height": 200 - }, - "images/effects/chixu/chixu_06": { - "width": 200, - "height": 200 - }, - "images/effects/chixu/chixu_07": { - "width": 200, - "height": 200 - }, - "images/effects/chixu/chixu_08": { - "width": 200, - "height": 200 - }, - "images/effects/chixu/chixu_09": { - "width": 200, - "height": 200 - }, - "images/effects/chixu/chixu_10": { - "width": 200, - "height": 200 - } - }, - "images/effects/chixu/chixu_00": { - "images/effects/chixu/chixu_00": { - "width": 200, - "height": 200 - }, - "images/effects/chixu/chixu_01": { - "width": 200, - "height": 200 - }, - "images/effects/chixu/chixu_02": { - "width": 200, - "height": 200 - }, - "images/effects/chixu/chixu_03": { - "width": 200, - "height": 200 - }, - "images/effects/chixu/chixu_04": { - "width": 200, - "height": 200 - }, - "images/effects/chixu/chixu_05": { - "width": 200, - "height": 200 - }, - "images/effects/chixu/chixu_06": { - "width": 200, - "height": 200 - }, - "images/effects/chixu/chixu_07": { - "width": 200, - "height": 200 - }, - "images/effects/chixu/chixu_08": { - "width": 200, - "height": 200 - }, - "images/effects/chixu/chixu_09": { - "width": 200, - "height": 200 - }, - "images/effects/chixu/chixu_10": { - "width": 200, - "height": 200 - } - }, - "images/effects/guangdian": { - "images/effects/guangdian": { - "x": -0.53, - "scaleX": 2, - "scaleY": 2, - "width": 5, - "height": 5 - } - }, - "images/effects/guangdian2": { - "images/effects/guangdian": { - "x": -0.53, - "scaleX": 2, - "scaleY": 2, - "width": 5, - "height": 5 - } - }, - "images/effects/guangdian3": { - "images/effects/guangdian": { - "x": -0.53, - "scaleX": 2, - "scaleY": 2, - "width": 5, - "height": 5 - } - }, - "images/effects/guangdian4": { - "images/effects/guangdian": { - "x": -0.53, - "scaleX": 2, - "scaleY": 2, - "width": 5, - "height": 5 - } - }, - "images/effects/guangdian5": { - "images/effects/guangdian": { - "x": -0.53, - "scaleX": 2, - "scaleY": 2, - "width": 5, - "height": 5 - } - }, - "images/effects/guangdian6": { - "images/effects/guangdian": { - "x": -0.53, - "scaleX": 2, - "scaleY": 2, - "width": 5, - "height": 5 - } - }, - "images/effects/guangdian7": { - "images/effects/guangdian": { - "x": -0.53, - "scaleX": 2, - "scaleY": 2, - "width": 5, - "height": 5 - } - }, - "images/effects/huiguang": { - "images/effects/huiguang": { - "x": 2.74, - "y": -3.93, - "rotation": 180, - "width": 311, - "height": 310 - } - }, - "images/effects/微信图片_20250515181822": { - "images/effects/微信图片_20250515181822": { - "x": 36.11, - "y": -31.15, - "scaleX": 2, - "scaleY": 2, - "rotation": 76.63, - "width": 93, - "height": 109 - } - } - } - } - ], - "animations": { - "play": { - "slots": { - "images/effects/chixu/chixu_0": { - "attachment": [ - { - "time": 0.1333, - "name": "images/effects/chixu/chixu_00" - }, - { - "time": 0.2, - "name": "images/effects/chixu/chixu_01" - }, - { - "time": 0.2667, - "name": "images/effects/chixu/chixu_02" - }, - { - "time": 0.3333, - "name": "images/effects/chixu/chixu_03" - }, - { - "time": 0.4, - "name": "images/effects/chixu/chixu_04" - }, - { - "time": 0.4667, - "name": "images/effects/chixu/chixu_05" - }, - { - "time": 0.5333, - "name": "images/effects/chixu/chixu_06" - }, - { - "time": 0.6, - "name": "images/effects/chixu/chixu_07" - }, - { - "time": 0.6667, - "name": "images/effects/chixu/chixu_08" - }, - { - "time": 0.7333, - "name": "images/effects/chixu/chixu_09" - }, - { - "time": 0.8, - "name": "images/effects/chixu/chixu_10" - }, - { - "time": 0.8667, - "name": null - } - ] - }, - "images/effects/chixu/chixu_00": { - "attachment": [ - { - "name": "images/effects/chixu/chixu_06" - }, - { - "time": 0.0667, - "name": "images/effects/chixu/chixu_07" - }, - { - "time": 0.1333, - "name": "images/effects/chixu/chixu_08" - }, - { - "time": 0.2, - "name": "images/effects/chixu/chixu_09" - }, - { - "time": 0.2667, - "name": "images/effects/chixu/chixu_10" - }, - { - "time": 0.3333, - "name": null - }, - { - "time": 0.6, - "name": "images/effects/chixu/chixu_00" - }, - { - "time": 0.6667, - "name": "images/effects/chixu/chixu_01" - }, - { - "time": 0.7333, - "name": "images/effects/chixu/chixu_02" - }, - { - "time": 0.8, - "name": "images/effects/chixu/chixu_03" - }, - { - "time": 0.8667, - "name": "images/effects/chixu/chixu_04" - }, - { - "time": 0.9333, - "name": "images/effects/chixu/chixu_05" - } - ] - }, - "images/effects/guangdian": { - "color": [ - { - "color": "ffffff00", - "curve": "stepped" - }, - { - "time": 0.1333, - "color": "ffffff00" - }, - { - "time": 0.1667, - "color": "ffffffff" - }, - { - "time": 0.2667, - "color": "ffffff00" - }, - { - "time": 0.3667, - "color": "ffffffed" - }, - { - "time": 0.4333, - "color": "fffffff5" - }, - { - "time": 0.5333, - "color": "ffffff33" - }, - { - "time": 0.5667, - "color": "ffffffff", - "curve": "stepped" - }, - { - "time": 0.6667, - "color": "ffffffff" - }, - { - "time": 0.8333, - "color": "ffffff00" - } - ] - }, - "images/effects/guangdian2": { - "color": [ - { - "time": 0.3667, - "color": "ffffffff" - }, - { - "time": 0.5333, - "color": "ffffff00", - "curve": "stepped" - }, - { - "time": 0.9, - "color": "ffffff00" - }, - { - "time": 0.9333, - "color": "ffffffff" - } - ] - }, - "images/effects/guangdian3": { - "color": [ - { - "time": 0.2333, - "color": "ffffffff" - }, - { - "time": 0.4, - "color": "ffffff00", - "curve": "stepped" - }, - { - "time": 0.6333, - "color": "ffffff00" - }, - { - "time": 0.6667, - "color": "ffffffff" - } - ] - }, - "images/effects/guangdian4": { - "color": [ - { - "color": "ffffff00", - "curve": "stepped" - }, - { - "time": 0.2, - "color": "ffffff00" - }, - { - "time": 0.2333, - "color": "ffffffff", - "curve": "stepped" - }, - { - "time": 0.7333, - "color": "ffffffff" - }, - { - "time": 0.9, - "color": "ffffff00" - } - ] - }, - "images/effects/guangdian5": { - "color": [ - { - "color": "ffffff00" - }, - { - "time": 0.0333, - "color": "ffffffff", - "curve": "stepped" - }, - { - "time": 0.5333, - "color": "ffffffff" - }, - { - "time": 0.7, - "color": "ffffff00" - } - ] - }, - "images/effects/guangdian6": { - "color": [ - { - "time": 0.2333, - "color": "ffffffff" - }, - { - "time": 0.4, - "color": "ffffff00", - "curve": "stepped" - }, - { - "time": 0.6333, - "color": "ffffff00" - }, - { - "time": 0.6667, - "color": "ffffffff" - } - ] - }, - "images/effects/guangdian7": { - "color": [ - { - "color": "ffffff00", - "curve": "stepped" - }, - { - "time": 0.1333, - "color": "ffffff00" - }, - { - "time": 0.1667, - "color": "ffffffff", - "curve": "stepped" - }, - { - "time": 0.6667, - "color": "ffffffff" - }, - { - "time": 0.8333, - "color": "ffffff00" - } - ] - }, - "images/effects/huiguang": { - "color": [ - { - "color": "ffffffff" - }, - { - "time": 0.4667, - "color": "ffffff71" - }, - { - "time": 0.9333, - "color": "ffffffff" - } - ] - } - }, - "bones": { - "bone2": { - "translate": [ - { - "time": 0.1667 - }, - { - "time": 0.8333, - "x": 18.29, - "y": 73.14 - } - ] - }, - "bone3": { - "translate": [ - { - "x": 34.13, - "y": -4.63 - }, - { - "time": 0.5333, - "x": 170.66, - "y": -23.16, - "curve": "stepped" - }, - { - "time": 0.8667, - "x": 170.66, - "y": -23.16 - }, - { - "time": 0.9333 - } - ] - }, - "bone4": { - "translate": [ - { - "x": 33.29, - "y": 31.52 - }, - { - "time": 0.4, - "x": -69.48, - "y": -142.62 - }, - { - "time": 0.6667 - }, - { - "time": 0.9333, - "x": 33.29, - "y": 31.52 - } - ] - }, - "bone5": { - "translate": [ - { - "time": 0.2333 - }, - { - "time": 0.9, - "x": -128.62, - "y": -19.54 - } - ] - }, - "bone6": { - "translate": [ - { - "time": 0.0333 - }, - { - "time": 0.7, - "x": -57.7, - "y": 131.91 - } - ] - }, - "bone7": { - "translate": [ - { - "x": 18.08, - "y": 13.84 - }, - { - "time": 0.4, - "x": 98.49, - "y": 94.57 - }, - { - "time": 0.6667 - }, - { - "time": 0.9333, - "x": 18.08, - "y": 13.84 - } - ] - }, - "bone8": { - "translate": [ - { - "time": 0.1667 - }, - { - "time": 0.8333, - "x": 97.32, - "y": 76.27 - } - ] - } - } - } - } - }, - "_atlasText": "\r\nmofabang_texiao.png\r\nsize: 1000,1000\r\nformat: RGBA8888\r\nfilter: Linear,Linear\r\nrepeat: none\r\nimages/effects/chixu/chixu_00\r\n rotate: false\r\n xy: 2, 334\r\n size: 151, 124\r\n orig: 200, 200\r\n offset: 12, 44\r\n index: -1\r\nimages/effects/chixu/chixu_01\r\n rotate: true\r\n xy: 159, 567\r\n size: 148, 132\r\n orig: 200, 200\r\n offset: 12, 37\r\n index: -1\r\nimages/effects/chixu/chixu_02\r\n rotate: false\r\n xy: 2, 460\r\n size: 153, 125\r\n orig: 200, 200\r\n offset: 15, 37\r\n index: -1\r\nimages/effects/chixu/chixu_03\r\n rotate: false\r\n xy: 2, 587\r\n size: 155, 128\r\n orig: 200, 200\r\n offset: 15, 36\r\n index: -1\r\nimages/effects/chixu/chixu_04\r\n rotate: true\r\n xy: 157, 416\r\n size: 149, 126\r\n orig: 200, 200\r\n offset: 21, 36\r\n index: -1\r\nimages/effects/chixu/chixu_05\r\n rotate: true\r\n xy: 155, 265\r\n size: 149, 123\r\n orig: 200, 200\r\n offset: 21, 36\r\n index: -1\r\nimages/effects/chixu/chixu_06\r\n rotate: false\r\n xy: 148, 143\r\n size: 147, 120\r\n orig: 200, 200\r\n offset: 23, 38\r\n index: -1\r\nimages/effects/chixu/chixu_07\r\n rotate: true\r\n xy: 2, 61\r\n size: 145, 119\r\n orig: 200, 200\r\n offset: 24, 39\r\n index: -1\r\nimages/effects/chixu/chixu_08\r\n rotate: false\r\n xy: 2, 208\r\n size: 144, 124\r\n orig: 200, 200\r\n offset: 23, 41\r\n index: -1\r\nimages/effects/chixu/chixu_09\r\n rotate: false\r\n xy: 123, 23\r\n size: 140, 118\r\n orig: 200, 200\r\n offset: 23, 43\r\n index: -1\r\nimages/effects/chixu/chixu_10\r\n rotate: true\r\n xy: 265, 2\r\n size: 139, 117\r\n orig: 200, 200\r\n offset: 23, 43\r\n index: -1\r\nimages/effects/guangdian\r\n rotate: false\r\n xy: 2, 54\r\n size: 5, 5\r\n orig: 5, 5\r\n offset: 0, 0\r\n index: -1\r\nimages/effects/huiguang\r\n rotate: false\r\n xy: 2, 717\r\n size: 278, 278\r\n orig: 311, 310\r\n offset: 17, 16\r\n index: -1\r\nimages/effects/微信图片_20250515181822\r\n rotate: false\r\n xy: 280, 305\r\n size: 93, 109\r\n orig: 93, 109\r\n offset: 0, 0\r\n index: -1\r\n", - "textures": [ - { - "__uuid__": "363ef00a-0ca9-4ccd-b4bc-62a7dec9b6de" - } - ], - "textureNames": [ - "mofabang_texiao.png" - ], - "scale": 1 -} \ No newline at end of file diff --git a/library/imports/88/880acb82-9636-4221-b533-3c9f826c4d9c.json b/library/imports/88/880acb82-9636-4221-b533-3c9f826c4d9c.json new file mode 100644 index 0000000..454fe60 --- /dev/null +++ b/library/imports/88/880acb82-9636-4221-b533-3c9f826c4d9c.json @@ -0,0 +1,28 @@ +{ + "__type__": "cc.SpriteFrame", + "content": { + "name": "7color3", + "texture": "418b4767-01bf-4ac2-823b-9880f2a79215", + "atlas": "cc01997d-495e-480d-871e-be405a6c38b5", + "rect": [ + 129, + 332, + 378, + 69 + ], + "offset": [ + 0, + 0 + ], + "originalSize": [ + 378, + 69 + ], + "capInsets": [ + 0, + 0, + 0, + 0 + ] + } +} \ No newline at end of file diff --git a/library/imports/88/88a9a994-1d0b-49c1-a081-3f33c864b120.json b/library/imports/88/88a9a994-1d0b-49c1-a081-3f33c864b120.json new file mode 100644 index 0000000..1abba42 --- /dev/null +++ b/library/imports/88/88a9a994-1d0b-49c1-a081-3f33c864b120.json @@ -0,0 +1,28 @@ +{ + "__type__": "cc.SpriteFrame", + "content": { + "name": "9color3", + "texture": "418b4767-01bf-4ac2-823b-9880f2a79215", + "atlas": "cc01997d-495e-480d-871e-be405a6c38b5", + "rect": [ + 906, + 135, + 378, + 69 + ], + "offset": [ + 0, + 0 + ], + "originalSize": [ + 378, + 69 + ], + "capInsets": [ + 0, + 0, + 0, + 0 + ] + } +} \ No newline at end of file diff --git a/library/imports/88/88cf729e-5501-40cb-9039-36e92ee9c49b.json b/library/imports/88/88cf729e-5501-40cb-9039-36e92ee9c49b.json deleted file mode 100644 index da7d70f..0000000 --- a/library/imports/88/88cf729e-5501-40cb-9039-36e92ee9c49b.json +++ /dev/null @@ -1,500 +0,0 @@ -{ - "__type__": "sp.SkeletonData", - "_name": "mofabang_baozha", - "_objFlags": 0, - "_native": "", - "_skeletonJson": { - "skeleton": { - "hash": "hZHGx+scAEPxWQrFsM0GBbRcUg0", - "spine": "3.8.99", - "x": -273.93, - "y": -795.48, - "width": 640, - "height": 1136, - "images": "", - "audio": "C:\\Users\\EDY\\Desktop\\common\\battle\\特效\\300970_skill_hit" - }, - "bones": [ - { - "name": "root" - }, - { - "name": "all", - "parent": "root" - }, - { - "name": "hit", - "parent": "all" - }, - { - "name": "hit2", - "parent": "all" - }, - { - "name": "glow", - "parent": "all" - }, - { - "name": "lizi2", - "parent": "root", - "rotation": 90, - "x": 1.13, - "y": -2.39 - } - ], - "slots": [ - { - "name": "images/bg", - "bone": "root" - }, - { - "name": "images/effects/hit/hit_00", - "bone": "hit", - "attachment": "images/effects/hit/hit_00", - "blend": "screen" - }, - { - "name": "images/effects/hit/hit_0", - "bone": "hit2" - }, - { - "name": "images/effects/Glow1", - "bone": "glow", - "blend": "additive" - }, - { - "name": "images/lizi/shoujibaodian_34", - "bone": "lizi2", - "attachment": "images/lizi/shoujibaodian_34", - "blend": "additive" - } - ], - "skins": [ - { - "name": "default", - "attachments": { - "images/effects/Glow1": { - "images/effects/Glow1": { - "width": 256, - "height": 256 - } - }, - "images/effects/hit/hit_0": { - "images/effects/hit/hit_02": { - "width": 400, - "height": 400 - }, - "images/effects/hit/hit_03": { - "width": 400, - "height": 400 - }, - "images/effects/hit/hit_04": { - "width": 400, - "height": 400 - }, - "images/effects/hit/hit_05": { - "width": 400, - "height": 400 - }, - "images/effects/hit/hit_06": { - "width": 400, - "height": 400 - }, - "images/effects/hit/hit_07": { - "width": 400, - "height": 400 - }, - "images/effects/hit/hit_08": { - "width": 400, - "height": 400 - }, - "images/effects/hit/hit_09": { - "width": 400, - "height": 400 - }, - "images/effects/hit/hit_10": { - "width": 400, - "height": 400 - }, - "images/effects/hit/hit_11": { - "width": 400, - "height": 400 - }, - "images/effects/hit/hit_12": { - "width": 400, - "height": 400 - }, - "images/effects/hit/hit_13": { - "width": 400, - "height": 400 - }, - "images/effects/hit/hit_14": { - "width": 1, - "height": 1 - } - }, - "images/effects/hit/hit_00": { - "images/effects/hit/hit_00": { - "width": 400, - "height": 400 - }, - "images/effects/hit/hit_01": { - "width": 400, - "height": 400 - } - }, - "images/lizi/shoujibaodian_34": { - "images/lizi/shoujibaodian_34": { - "x": -225.09, - "y": -44.94, - "width": 1136, - "height": 640 - }, - "images/lizi/shoujibaodian_35": { - "x": -225.09, - "y": -44.94, - "width": 1136, - "height": 640 - }, - "images/lizi/shoujibaodian_36": { - "x": -225.09, - "y": -44.94, - "width": 1136, - "height": 640 - }, - "images/lizi/shoujibaodian_37": { - "x": -225.09, - "y": -44.94, - "width": 1136, - "height": 640 - }, - "images/lizi/shoujibaodian_38": { - "x": -225.09, - "y": -44.94, - "width": 1136, - "height": 640 - }, - "images/lizi/shoujibaodian_39": { - "x": -225.09, - "y": -44.94, - "width": 1136, - "height": 640 - }, - "images/lizi/shoujibaodian_40": { - "x": -225.09, - "y": -44.94, - "width": 1136, - "height": 640 - }, - "images/lizi/shoujibaodian_41": { - "x": -225.09, - "y": -44.94, - "width": 1136, - "height": 640 - }, - "images/lizi/shoujibaodian_42": { - "x": -225.09, - "y": -44.94, - "width": 1136, - "height": 640 - }, - "images/lizi/shoujibaodian_43": { - "x": -225.09, - "y": -44.94, - "width": 1136, - "height": 640 - }, - "images/lizi/shoujibaodian_44": { - "x": -225.09, - "y": -44.94, - "width": 1136, - "height": 640 - }, - "images/lizi/shoujibaodian_45": { - "x": -225.09, - "y": -44.94, - "width": 1136, - "height": 640 - }, - "images/lizi/shoujibaodian_46": { - "x": -225.09, - "y": -44.94, - "width": 1136, - "height": 640 - }, - "images/lizi/shoujibaodian_47": { - "x": -225.09, - "y": -44.94, - "width": 1136, - "height": 640 - }, - "images/lizi/shoujibaodian_48": { - "x": -225.09, - "y": -44.94, - "width": 1136, - "height": 640 - } - } - } - } - ], - "animations": { - "play": { - "slots": { - "images/effects/Glow1": { - "color": [ - { - "time": 0.0333, - "color": "5a05ffff" - }, - { - "time": 0.4667, - "color": "bd00ff00" - } - ], - "attachment": [ - { - "time": 0.0333, - "name": "images/effects/Glow1" - } - ] - }, - "images/effects/hit/hit_0": { - "attachment": [ - { - "time": 0.1333, - "name": "images/effects/hit/hit_02" - }, - { - "time": 0.1667, - "name": "images/effects/hit/hit_03" - }, - { - "time": 0.2, - "name": "images/effects/hit/hit_04" - }, - { - "time": 0.2333, - "name": "images/effects/hit/hit_05" - }, - { - "time": 0.2667, - "name": "images/effects/hit/hit_06" - }, - { - "time": 0.3, - "name": "images/effects/hit/hit_07" - }, - { - "time": 0.3333, - "name": "images/effects/hit/hit_08" - }, - { - "time": 0.3667, - "name": "images/effects/hit/hit_09" - }, - { - "time": 0.4, - "name": "images/effects/hit/hit_10" - }, - { - "time": 0.4333, - "name": "images/effects/hit/hit_11" - }, - { - "time": 0.4667, - "name": "images/effects/hit/hit_12" - }, - { - "time": 0.5, - "name": "images/effects/hit/hit_13" - }, - { - "time": 0.5333, - "name": "images/effects/hit/hit_14" - }, - { - "time": 0.5667, - "name": null - } - ] - }, - "images/effects/hit/hit_00": { - "color": [ - { - "color": "ffffff00" - }, - { - "time": 0.0333, - "color": "ffffffff" - } - ], - "attachment": [ - { - "time": 0.0667, - "name": "images/effects/hit/hit_01" - }, - { - "time": 0.1, - "name": null - } - ] - }, - "images/lizi/shoujibaodian_34": { - "color": [ - { - "color": "ffffff00", - "curve": "stepped" - }, - { - "time": 0.3333, - "color": "ffffff00" - }, - { - "time": 0.3667, - "color": "ffffffff", - "curve": "stepped" - }, - { - "time": 1.3, - "color": "ffffffff" - }, - { - "time": 1.3667, - "color": "ffffff00" - } - ], - "attachment": [ - { - "time": 0.4333, - "name": "images/lizi/shoujibaodian_35" - }, - { - "time": 0.5, - "name": "images/lizi/shoujibaodian_36" - }, - { - "time": 0.5667, - "name": "images/lizi/shoujibaodian_37" - }, - { - "time": 0.6333, - "name": "images/lizi/shoujibaodian_38" - }, - { - "time": 0.7, - "name": "images/lizi/shoujibaodian_39" - }, - { - "time": 0.7667, - "name": "images/lizi/shoujibaodian_40" - }, - { - "time": 0.8333, - "name": "images/lizi/shoujibaodian_41" - }, - { - "time": 0.9, - "name": "images/lizi/shoujibaodian_42" - }, - { - "time": 0.9667, - "name": "images/lizi/shoujibaodian_43" - }, - { - "time": 1.0333, - "name": "images/lizi/shoujibaodian_44" - }, - { - "time": 1.1, - "name": "images/lizi/shoujibaodian_45" - }, - { - "time": 1.1667, - "name": "images/lizi/shoujibaodian_46" - }, - { - "time": 1.2333, - "name": "images/lizi/shoujibaodian_47" - }, - { - "time": 1.3, - "name": "images/lizi/shoujibaodian_48" - } - ] - } - }, - "bones": { - "glow": { - "scale": [ - { - "time": 0.0333, - "x": 0.5, - "y": 0.5 - }, - { - "time": 0.1333, - "x": 2, - "y": 2 - }, - { - "time": 0.4667, - "x": 3, - "y": 3 - } - ] - }, - "hit": { - "scale": [ - { - "time": 0.0333, - "x": 1.5, - "y": 1.5 - } - ] - }, - "lizi2": { - "translate": [ - { - "time": 0.3667 - }, - { - "time": 0.7667, - "y": 6 - }, - { - "time": 1.3, - "y": -20.01 - } - ], - "scale": [ - { - "x": 0.7, - "y": 0.7, - "curve": "stepped" - }, - { - "time": 0.3667, - "x": 0.7, - "y": 0.7 - }, - { - "time": 1.3 - } - ] - } - } - } - } - }, - "_atlasText": "\r\nmofabang_baozha.png\r\nsize: 2040,2040\r\nformat: RGBA8888\r\nfilter: Linear,Linear\r\nrepeat: none\r\nimages/effects/Glow1\r\n rotate: false\r\n xy: 862, 1516\r\n size: 216, 216\r\n orig: 256, 256\r\n offset: 20, 19\r\n index: -1\r\nimages/effects/hit/hit_00\r\n rotate: true\r\n xy: 1379, 1762\r\n size: 276, 272\r\n orig: 400, 400\r\n offset: 61, 64\r\n index: -1\r\nimages/effects/hit/hit_01\r\n rotate: false\r\n xy: 1395, 1520\r\n size: 248, 240\r\n orig: 400, 400\r\n offset: 76, 80\r\n index: -1\r\nimages/effects/hit/hit_02\r\n rotate: false\r\n xy: 2, 1734\r\n size: 332, 304\r\n orig: 400, 400\r\n offset: 39, 51\r\n index: -1\r\nimages/effects/hit/hit_03\r\n rotate: true\r\n xy: 604, 1726\r\n size: 312, 252\r\n orig: 400, 400\r\n offset: 50, 83\r\n index: -1\r\nimages/effects/hit/hit_04\r\n rotate: false\r\n xy: 270, 1524\r\n size: 272, 208\r\n orig: 400, 400\r\n offset: 78, 108\r\n index: -1\r\nimages/effects/hit/hit_05\r\n rotate: false\r\n xy: 2, 1512\r\n size: 266, 220\r\n orig: 400, 400\r\n offset: 79, 103\r\n index: -1\r\nimages/effects/hit/hit_06\r\n rotate: false\r\n xy: 1117, 1496\r\n size: 276, 240\r\n orig: 400, 400\r\n offset: 73, 94\r\n index: -1\r\nimages/effects/hit/hit_07\r\n rotate: true\r\n xy: 1117, 1738\r\n size: 300, 260\r\n orig: 400, 400\r\n offset: 67, 85\r\n index: -1\r\nimages/effects/hit/hit_08\r\n rotate: true\r\n xy: 858, 1734\r\n size: 304, 257\r\n orig: 400, 400\r\n offset: 69, 82\r\n index: -1\r\nimages/effects/hit/hit_09\r\n rotate: true\r\n xy: 336, 1738\r\n size: 300, 266\r\n orig: 400, 400\r\n offset: 70, 74\r\n index: -1\r\nimages/effects/hit/hit_10\r\n rotate: true\r\n xy: 1645, 1380\r\n size: 162, 230\r\n orig: 400, 400\r\n offset: 95, 114\r\n index: -1\r\nimages/effects/hit/hit_11\r\n rotate: false\r\n xy: 1148, 1399\r\n size: 101, 95\r\n orig: 400, 400\r\n offset: 99, 119\r\n index: -1\r\nimages/effects/hit/hit_12\r\n rotate: false\r\n xy: 2037, 2037\r\n size: 1, 1\r\n orig: 400, 400\r\n offset: 198, 213\r\n index: -1\r\nimages/lizi/shoujibaodian_34\r\n rotate: false\r\n xy: 1653, 1719\r\n size: 211, 319\r\n orig: 1136, 640\r\n offset: 696, 201\r\n index: -1\r\nimages/lizi/shoujibaodian_35\r\n rotate: true\r\n xy: 544, 1546\r\n size: 178, 316\r\n orig: 1136, 640\r\n offset: 694, 201\r\n index: -1\r\nimages/lizi/shoujibaodian_36\r\n rotate: true\r\n xy: 1645, 1544\r\n size: 173, 313\r\n orig: 1136, 640\r\n offset: 696, 200\r\n index: -1\r\nimages/lizi/shoujibaodian_37\r\n rotate: false\r\n xy: 1866, 1810\r\n size: 169, 228\r\n orig: 1136, 640\r\n offset: 698, 233\r\n index: -1\r\nimages/lizi/shoujibaodian_38\r\n rotate: true\r\n xy: 544, 1378\r\n size: 166, 228\r\n orig: 1136, 640\r\n offset: 702, 235\r\n index: -1\r\nimages/lizi/shoujibaodian_39\r\n rotate: true\r\n xy: 270, 1358\r\n size: 164, 219\r\n orig: 1136, 640\r\n offset: 703, 241\r\n index: -1\r\nimages/lizi/shoujibaodian_40\r\n rotate: true\r\n xy: 1395, 1361\r\n size: 157, 208\r\n orig: 1136, 640\r\n offset: 710, 249\r\n index: -1\r\nimages/lizi/shoujibaodian_41\r\n rotate: true\r\n xy: 774, 1396\r\n size: 118, 189\r\n orig: 1136, 640\r\n offset: 749, 266\r\n index: -1\r\nimages/lizi/shoujibaodian_42\r\n rotate: true\r\n xy: 2, 1430\r\n size: 80, 187\r\n orig: 1136, 640\r\n offset: 751, 268\r\n index: -1\r\nimages/lizi/shoujibaodian_43\r\n rotate: true\r\n xy: 965, 1418\r\n size: 76, 181\r\n orig: 1136, 640\r\n offset: 752, 269\r\n index: -1\r\nimages/lizi/shoujibaodian_44\r\n rotate: false\r\n xy: 1960, 1665\r\n size: 72, 143\r\n orig: 1136, 640\r\n offset: 753, 305\r\n index: -1\r\nimages/lizi/shoujibaodian_45\r\n rotate: false\r\n xy: 1960, 1520\r\n size: 69, 143\r\n orig: 1136, 640\r\n offset: 754, 304\r\n index: -1\r\nimages/lizi/shoujibaodian_46\r\n rotate: false\r\n xy: 1947, 1376\r\n size: 67, 142\r\n orig: 1136, 640\r\n offset: 755, 304\r\n index: -1\r\nimages/lizi/shoujibaodian_47\r\n rotate: false\r\n xy: 191, 1369\r\n size: 67, 141\r\n orig: 1136, 640\r\n offset: 755, 304\r\n index: -1\r\nimages/lizi/shoujibaodian_48\r\n rotate: false\r\n xy: 1877, 1400\r\n size: 68, 142\r\n orig: 1136, 640\r\n offset: 754, 303\r\n index: -1\r\n", - "textures": [ - { - "__uuid__": "ff0d5773-ca66-4087-b1b7-4777121d85be" - } - ], - "textureNames": [ - "mofabang_baozha.png" - ], - "scale": 1 -} \ No newline at end of file diff --git a/library/imports/89/894c0780-7f4a-4a9f-ad92-de3471abb5c5.json b/library/imports/89/894c0780-7f4a-4a9f-ad92-de3471abb5c5.json new file mode 100644 index 0000000..885efeb --- /dev/null +++ b/library/imports/89/894c0780-7f4a-4a9f-ad92-de3471abb5c5.json @@ -0,0 +1,28 @@ +{ + "__type__": "cc.SpriteFrame", + "content": { + "name": "shu_zl2", + "texture": "418b4767-01bf-4ac2-823b-9880f2a79215", + "atlas": "cc01997d-495e-480d-871e-be405a6c38b5", + "rect": [ + 64, + 659, + 40, + 10 + ], + "offset": [ + 0, + 0 + ], + "originalSize": [ + 40, + 10 + ], + "capInsets": [ + 0, + 0, + 0, + 0 + ] + } +} \ No newline at end of file diff --git a/library/imports/90/90d2bb3b-aeca-4ea8-9afa-c2ae9871791b.json b/library/imports/90/90d2bb3b-aeca-4ea8-9afa-c2ae9871791b.json new file mode 100644 index 0000000..667ddd3 --- /dev/null +++ b/library/imports/90/90d2bb3b-aeca-4ea8-9afa-c2ae9871791b.json @@ -0,0 +1,28 @@ +{ + "__type__": "cc.SpriteFrame", + "content": { + "name": "shu_zl2_2", + "texture": "418b4767-01bf-4ac2-823b-9880f2a79215", + "atlas": "cc01997d-495e-480d-871e-be405a6c38b5", + "rect": [ + 1295, + 1, + 32, + 114 + ], + "offset": [ + 0, + 0 + ], + "originalSize": [ + 32, + 114 + ], + "capInsets": [ + 0, + 0, + 0, + 0 + ] + } +} \ No newline at end of file diff --git a/library/imports/91/917a86f2-c688-4cf5-9568-37632e1964b1.json b/library/imports/91/917a86f2-c688-4cf5-9568-37632e1964b1.json new file mode 100644 index 0000000..4fa1853 --- /dev/null +++ b/library/imports/91/917a86f2-c688-4cf5-9568-37632e1964b1.json @@ -0,0 +1,28 @@ +{ + "__type__": "cc.SpriteFrame", + "content": { + "name": "1color6", + "texture": "418b4767-01bf-4ac2-823b-9880f2a79215", + "atlas": "cc01997d-495e-480d-871e-be405a6c38b5", + "rect": [ + 1, + 390, + 61, + 387 + ], + "offset": [ + 0, + 0 + ], + "originalSize": [ + 61, + 387 + ], + "capInsets": [ + 0, + 0, + 0, + 0 + ] + } +} \ No newline at end of file diff --git a/library/imports/9b/9b80c949-4fcd-4e45-afa9-ad91683ef7b7.json b/library/imports/9b/9b80c949-4fcd-4e45-afa9-ad91683ef7b7.json new file mode 100644 index 0000000..200efd7 --- /dev/null +++ b/library/imports/9b/9b80c949-4fcd-4e45-afa9-ad91683ef7b7.json @@ -0,0 +1,29 @@ +{ + "__type__": "cc.SpriteFrame", + "content": { + "name": "shu_zl1_1", + "texture": "418b4767-01bf-4ac2-823b-9880f2a79215", + "atlas": "cc01997d-495e-480d-871e-be405a6c38b5", + "rect": [ + 333, + 680, + 58, + 34 + ], + "offset": [ + 0, + 0 + ], + "originalSize": [ + 58, + 34 + ], + "rotated": 1, + "capInsets": [ + 0, + 0, + 0, + 0 + ] + } +} \ No newline at end of file diff --git a/library/imports/12/12ccf01f-c412-4ca1-a908-30002ebfc9f4.json b/library/imports/9c/9c2db1a3-6fc0-44c8-b56b-c6d42033dffb.json similarity index 59% rename from library/imports/12/12ccf01f-c412-4ca1-a908-30002ebfc9f4.json rename to library/imports/9c/9c2db1a3-6fc0-44c8-b56b-c6d42033dffb.json index ad34305..c471c79 100644 --- a/library/imports/12/12ccf01f-c412-4ca1-a908-30002ebfc9f4.json +++ b/library/imports/9c/9c2db1a3-6fc0-44c8-b56b-c6d42033dffb.json @@ -2,13 +2,13 @@ "__type__": "cc.SpriteFrame", "content": { "name": "7down1", - "texture": "ed2c3a21-0522-445d-9904-76843208705f", - "atlas": "d7e227ab-cc06-48f5-a2ac-092b19ec7f6f", + "texture": "c660c59d-e175-4194-aaf3-33d1d03b783f", + "atlas": "3d019ed8-3019-436d-add0-ceeb02a5baaf", "rect": [ - 706, - 366, + 861, + 565, 122, - 45 + 46 ], "offset": [ 0, @@ -16,9 +16,8 @@ ], "originalSize": [ 122, - 45 + 46 ], - "rotated": 1, "capInsets": [ 0, 0, diff --git a/library/imports/9c/9c999eaf-168d-480a-9a0e-175e787630c9.json b/library/imports/9c/9c999eaf-168d-480a-9a0e-175e787630c9.json new file mode 100644 index 0000000..4d0ce4d --- /dev/null +++ b/library/imports/9c/9c999eaf-168d-480a-9a0e-175e787630c9.json @@ -0,0 +1,29 @@ +{ + "__type__": "cc.SpriteFrame", + "content": { + "name": "4color5", + "texture": "418b4767-01bf-4ac2-823b-9880f2a79215", + "atlas": "cc01997d-495e-480d-871e-be405a6c38b5", + "rect": [ + 64, + 680, + 61, + 267 + ], + "offset": [ + 0, + 0 + ], + "originalSize": [ + 61, + 267 + ], + "rotated": 1, + "capInsets": [ + 0, + 0, + 0, + 0 + ] + } +} \ No newline at end of file diff --git a/library/imports/9c/9cca10f3-7a1a-402a-83d4-30597d8144c7.json b/library/imports/9c/9cca10f3-7a1a-402a-83d4-30597d8144c7.json new file mode 100644 index 0000000..358361b --- /dev/null +++ b/library/imports/9c/9cca10f3-7a1a-402a-83d4-30597d8144c7.json @@ -0,0 +1,29 @@ +{ + "__type__": "cc.SpriteFrame", + "content": { + "name": "6color4", + "texture": "418b4767-01bf-4ac2-823b-9880f2a79215", + "atlas": "cc01997d-495e-480d-871e-be405a6c38b5", + "rect": [ + 1092, + 753, + 61, + 146 + ], + "offset": [ + 0, + 0 + ], + "originalSize": [ + 61, + 146 + ], + "rotated": 1, + "capInsets": [ + 0, + 0, + 0, + 0 + ] + } +} \ No newline at end of file diff --git a/library/imports/3d/3d8762c1-946b-4b96-be97-d153143d2b8a.json b/library/imports/9e/9e3650ed-bc7c-46ae-8c98-22c6001075b1.json similarity index 64% rename from library/imports/3d/3d8762c1-946b-4b96-be97-d153143d2b8a.json rename to library/imports/9e/9e3650ed-bc7c-46ae-8c98-22c6001075b1.json index fecc0a0..1f3aa3e 100644 --- a/library/imports/3d/3d8762c1-946b-4b96-be97-d153143d2b8a.json +++ b/library/imports/9e/9e3650ed-bc7c-46ae-8c98-22c6001075b1.json @@ -2,11 +2,11 @@ "__type__": "cc.SpriteFrame", "content": { "name": "9down1", - "texture": "ed2c3a21-0522-445d-9904-76843208705f", - "atlas": "d7e227ab-cc06-48f5-a2ac-092b19ec7f6f", + "texture": "c660c59d-e175-4194-aaf3-33d1d03b783f", + "atlas": "3d019ed8-3019-436d-add0-ceeb02a5baaf", "rect": [ - 800, - 366, + 861, + 424, 122, 45 ], @@ -18,7 +18,6 @@ 122, 45 ], - "rotated": 1, "capInsets": [ 0, 0, diff --git a/library/imports/a3/a39ecd5d-7cdf-4caf-865d-81f806b582f3.json b/library/imports/a3/a39ecd5d-7cdf-4caf-865d-81f806b582f3.json new file mode 100644 index 0000000..da1cbc1 --- /dev/null +++ b/library/imports/a3/a39ecd5d-7cdf-4caf-865d-81f806b582f3.json @@ -0,0 +1,29 @@ +{ + "__type__": "cc.SpriteFrame", + "content": { + "name": "5color4", + "texture": "418b4767-01bf-4ac2-823b-9880f2a79215", + "atlas": "cc01997d-495e-480d-871e-be405a6c38b5", + "rect": [ + 530, + 821, + 61, + 146 + ], + "offset": [ + 0, + 0 + ], + "originalSize": [ + 61, + 146 + ], + "rotated": 1, + "capInsets": [ + 0, + 0, + 0, + 0 + ] + } +} \ No newline at end of file diff --git a/library/imports/a3/a3f51e26-9f3f-4a35-8d40-dfff45754b25.json b/library/imports/a3/a3f51e26-9f3f-4a35-8d40-dfff45754b25.json new file mode 100644 index 0000000..671c837 --- /dev/null +++ b/library/imports/a3/a3f51e26-9f3f-4a35-8d40-dfff45754b25.json @@ -0,0 +1,29 @@ +{ + "__type__": "cc.SpriteFrame", + "content": { + "name": "6color5", + "texture": "418b4767-01bf-4ac2-823b-9880f2a79215", + "atlas": "cc01997d-495e-480d-871e-be405a6c38b5", + "rect": [ + 64, + 743, + 61, + 267 + ], + "offset": [ + 0, + 0 + ], + "originalSize": [ + 61, + 267 + ], + "rotated": 1, + "capInsets": [ + 0, + 0, + 0, + 0 + ] + } +} \ No newline at end of file diff --git a/library/imports/a5/a5543b75-5f2f-4355-8b34-7770803e78bc.json b/library/imports/a5/a5543b75-5f2f-4355-8b34-7770803e78bc.json new file mode 100644 index 0000000..9de9541 --- /dev/null +++ b/library/imports/a5/a5543b75-5f2f-4355-8b34-7770803e78bc.json @@ -0,0 +1,29 @@ +{ + "__type__": "cc.SpriteFrame", + "content": { + "name": "9color6", + "texture": "418b4767-01bf-4ac2-823b-9880f2a79215", + "atlas": "cc01997d-495e-480d-871e-be405a6c38b5", + "rect": [ + 129, + 127, + 61, + 387 + ], + "offset": [ + 0, + 0 + ], + "originalSize": [ + 61, + 387 + ], + "rotated": 1, + "capInsets": [ + 0, + 0, + 0, + 0 + ] + } +} \ No newline at end of file diff --git a/library/imports/d4/d4657390-adb1-449b-a006-2d13f4a09138.json b/library/imports/a5/a5f933cc-d81e-4cab-92f3-86f1ba938126.json similarity index 54% rename from library/imports/d4/d4657390-adb1-449b-a006-2d13f4a09138.json rename to library/imports/a5/a5f933cc-d81e-4cab-92f3-86f1ba938126.json index babf877..f2fa800 100644 --- a/library/imports/d4/d4657390-adb1-449b-a006-2d13f4a09138.json +++ b/library/imports/a5/a5f933cc-d81e-4cab-92f3-86f1ba938126.json @@ -2,23 +2,22 @@ "__type__": "cc.SpriteFrame", "content": { "name": "7down2", - "texture": "ed2c3a21-0522-445d-9904-76843208705f", - "atlas": "d7e227ab-cc06-48f5-a2ac-092b19ec7f6f", + "texture": "c660c59d-e175-4194-aaf3-33d1d03b783f", + "atlas": "3d019ed8-3019-436d-add0-ceeb02a5baaf", "rect": [ - 1176, - 246, - 243, - 45 + 615, + 612, + 244, + 46 ], "offset": [ 0, 0 ], "originalSize": [ - 243, - 45 + 244, + 46 ], - "rotated": 1, "capInsets": [ 0, 0, diff --git a/library/imports/a6/a63ade2f-c476-4f26-84e6-b978db27c435.json b/library/imports/a6/a63ade2f-c476-4f26-84e6-b978db27c435.json index d690da5..9a31c7a 100644 --- a/library/imports/a6/a63ade2f-c476-4f26-84e6-b978db27c435.json +++ b/library/imports/a6/a63ade2f-c476-4f26-84e6-b978db27c435.json @@ -159,7 +159,7 @@ "_srcBlendFactor": 770, "_dstBlendFactor": 771, "_spriteFrame": { - "__uuid__": "e7bbdb15-5185-4c6e-a2f6-1c337b60b460" + "__uuid__": "6aba7f92-7bd5-4b20-8a55-7730e1bfa75d" }, "_type": 0, "_sizeMode": 1, @@ -173,7 +173,7 @@ "_fillRange": 0, "_isTrimmedMode": true, "_atlas": { - "__uuid__": "cc01997d-495e-480d-871e-be405a6c38b5" + "__uuid__": "f2c494b7-b6df-488f-b194-358235b0f180" }, "_id": "" }, diff --git a/library/imports/a7/a710c09b-ab49-4276-9660-b882fcff8b24.json b/library/imports/a7/a710c09b-ab49-4276-9660-b882fcff8b24.json index 0669db0..f07ad67 100644 --- a/library/imports/a7/a710c09b-ab49-4276-9660-b882fcff8b24.json +++ b/library/imports/a7/a710c09b-ab49-4276-9660-b882fcff8b24.json @@ -159,7 +159,7 @@ "_srcBlendFactor": 770, "_dstBlendFactor": 771, "_spriteFrame": { - "__uuid__": "ee73bdf1-0624-464f-a268-cb0ff3f2952b" + "__uuid__": "4891e811-ae55-4277-b9de-7592e8016504" }, "_type": 0, "_sizeMode": 1, @@ -173,7 +173,7 @@ "_fillRange": 0, "_isTrimmedMode": true, "_atlas": { - "__uuid__": "cc01997d-495e-480d-871e-be405a6c38b5" + "__uuid__": "f2c494b7-b6df-488f-b194-358235b0f180" }, "_id": "" }, diff --git a/library/imports/a8/a8c7af66-0323-4bbd-b41b-ae9ed5671c84.json b/library/imports/a8/a8c7af66-0323-4bbd-b41b-ae9ed5671c84.json new file mode 100644 index 0000000..d88285c --- /dev/null +++ b/library/imports/a8/a8c7af66-0323-4bbd-b41b-ae9ed5671c84.json @@ -0,0 +1,29 @@ +{ + "__type__": "cc.SpriteFrame", + "content": { + "name": "shu_zl2_11", + "texture": "418b4767-01bf-4ac2-823b-9880f2a79215", + "atlas": "cc01997d-495e-480d-871e-be405a6c38b5", + "rect": [ + 1277, + 277, + 32, + 59 + ], + "offset": [ + 0, + 0 + ], + "originalSize": [ + 32, + 59 + ], + "rotated": 1, + "capInsets": [ + 0, + 0, + 0, + 0 + ] + } +} \ No newline at end of file diff --git a/library/imports/aa/aa13f028-c4c4-4978-bc3e-56b1ef1f2843.json b/library/imports/aa/aa13f028-c4c4-4978-bc3e-56b1ef1f2843.json new file mode 100644 index 0000000..23dadf9 --- /dev/null +++ b/library/imports/aa/aa13f028-c4c4-4978-bc3e-56b1ef1f2843.json @@ -0,0 +1,29 @@ +{ + "__type__": "cc.SpriteFrame", + "content": { + "name": "shu_zl2_22", + "texture": "418b4767-01bf-4ac2-823b-9880f2a79215", + "atlas": "cc01997d-495e-480d-871e-be405a6c38b5", + "rect": [ + 866, + 724, + 32, + 120 + ], + "offset": [ + 0, + 0 + ], + "originalSize": [ + 32, + 120 + ], + "rotated": 1, + "capInsets": [ + 0, + 0, + 0, + 0 + ] + } +} \ No newline at end of file diff --git a/library/imports/cd/cd18678b-7524-486e-bb38-39a44cb94e44.json b/library/imports/ab/abfddfc6-a384-4b25-8868-90354a9531d9.json similarity index 63% rename from library/imports/cd/cd18678b-7524-486e-bb38-39a44cb94e44.json rename to library/imports/ab/abfddfc6-a384-4b25-8868-90354a9531d9.json index 80d4dd1..e3fb889 100644 --- a/library/imports/cd/cd18678b-7524-486e-bb38-39a44cb94e44.json +++ b/library/imports/ab/abfddfc6-a384-4b25-8868-90354a9531d9.json @@ -2,11 +2,11 @@ "__type__": "cc.SpriteFrame", "content": { "name": "1down2", - "texture": "ed2c3a21-0522-445d-9904-76843208705f", - "atlas": "d7e227ab-cc06-48f5-a2ac-092b19ec7f6f", + "texture": "c660c59d-e175-4194-aaf3-33d1d03b783f", + "atlas": "3d019ed8-3019-436d-add0-ceeb02a5baaf", "rect": [ - 1035, - 248, + 125, + 1, 243, 45 ], @@ -18,7 +18,6 @@ 243, 45 ], - "rotated": 1, "capInsets": [ 0, 0, diff --git a/library/imports/ac/ac2a29e0-63e5-4f9d-b088-dd6682f8bde4.json b/library/imports/ac/ac2a29e0-63e5-4f9d-b088-dd6682f8bde4.json new file mode 100644 index 0000000..0cd6748 --- /dev/null +++ b/library/imports/ac/ac2a29e0-63e5-4f9d-b088-dd6682f8bde4.json @@ -0,0 +1,29 @@ +{ + "__type__": "cc.SpriteFrame", + "content": { + "name": "shu_zl2_3", + "texture": "418b4767-01bf-4ac2-823b-9880f2a79215", + "atlas": "cc01997d-495e-480d-871e-be405a6c38b5", + "rect": [ + 663, + 445, + 32, + 175 + ], + "offset": [ + 0, + 0 + ], + "originalSize": [ + 32, + 175 + ], + "rotated": 1, + "capInsets": [ + 0, + 0, + 0, + 0 + ] + } +} \ No newline at end of file diff --git a/library/imports/ac/ac5d82a3-1111-4557-b9f7-0b4ba525fbd5.json b/library/imports/ac/ac5d82a3-1111-4557-b9f7-0b4ba525fbd5.json new file mode 100644 index 0000000..eb6ed8e --- /dev/null +++ b/library/imports/ac/ac5d82a3-1111-4557-b9f7-0b4ba525fbd5.json @@ -0,0 +1,29 @@ +{ + "__type__": "cc.SpriteFrame", + "content": { + "name": "4color4", + "texture": "418b4767-01bf-4ac2-823b-9880f2a79215", + "atlas": "cc01997d-495e-480d-871e-be405a6c38b5", + "rect": [ + 1127, + 690, + 61, + 146 + ], + "offset": [ + 0, + 0 + ], + "originalSize": [ + 61, + 146 + ], + "rotated": 1, + "capInsets": [ + 0, + 0, + 0, + 0 + ] + } +} \ No newline at end of file diff --git a/library/imports/83/83995ec4-b926-496e-9287-b486424e3bd2.json b/library/imports/ac/accbb35a-b43d-49b8-97dc-c7e939ca052c.json similarity index 64% rename from library/imports/83/83995ec4-b926-496e-9287-b486424e3bd2.json rename to library/imports/ac/accbb35a-b43d-49b8-97dc-c7e939ca052c.json index 85f9761..47344f5 100644 --- a/library/imports/83/83995ec4-b926-496e-9287-b486424e3bd2.json +++ b/library/imports/ac/accbb35a-b43d-49b8-97dc-c7e939ca052c.json @@ -2,11 +2,11 @@ "__type__": "cc.SpriteFrame", "content": { "name": "4down6", - "texture": "ed2c3a21-0522-445d-9904-76843208705f", - "atlas": "d7e227ab-cc06-48f5-a2ac-092b19ec7f6f", + "texture": "c660c59d-e175-4194-aaf3-33d1d03b783f", + "atlas": "3d019ed8-3019-436d-add0-ceeb02a5baaf", "rect": [ - 142, - 1, + 613, + 236, 45, 365 ], @@ -18,6 +18,7 @@ 45, 365 ], + "rotated": 1, "capInsets": [ 0, 0, diff --git a/library/imports/2a/2aa0942a-3b6b-4e7f-9873-b12eea8600e9.json b/library/imports/ae/aeab228a-209e-49fc-8bf5-c02865b9e02e.json similarity index 66% rename from library/imports/2a/2aa0942a-3b6b-4e7f-9873-b12eea8600e9.json rename to library/imports/ae/aeab228a-209e-49fc-8bf5-c02865b9e02e.json index 6f0513a..84eaa62 100644 --- a/library/imports/2a/2aa0942a-3b6b-4e7f-9873-b12eea8600e9.json +++ b/library/imports/ae/aeab228a-209e-49fc-8bf5-c02865b9e02e.json @@ -2,11 +2,11 @@ "__type__": "cc.SpriteFrame", "content": { "name": "1down4", - "texture": "ed2c3a21-0522-445d-9904-76843208705f", - "atlas": "d7e227ab-cc06-48f5-a2ac-092b19ec7f6f", + "texture": "c660c59d-e175-4194-aaf3-33d1d03b783f", + "atlas": "3d019ed8-3019-436d-add0-ceeb02a5baaf", "rect": [ + 735, 1, - 368, 45, 124 ], @@ -18,6 +18,7 @@ 45, 124 ], + "rotated": 1, "capInsets": [ 0, 0, diff --git a/library/imports/b0/b01ef5c5-2755-455d-acb4-ba3818f5e331.json b/library/imports/b0/b01ef5c5-2755-455d-acb4-ba3818f5e331.json index 042fa27..d749bed 100644 --- a/library/imports/b0/b01ef5c5-2755-455d-acb4-ba3818f5e331.json +++ b/library/imports/b0/b01ef5c5-2755-455d-acb4-ba3818f5e331.json @@ -46,16 +46,19 @@ }, { "__id__": 212 + }, + { + "__id__": 216 } ], "_active": true, "_components": [ { - "__id__": 216 + "__id__": 219 } ], "_prefab": { - "__id__": 217 + "__id__": 220 }, "_opacity": 255, "_color": { @@ -255,7 +258,7 @@ "_contentSize": { "__type__": "cc.Size", "width": 1080, - "height": 2340 + "height": 1920 }, "_anchorPoint": { "__type__": "cc.Vec2", @@ -338,8 +341,8 @@ "_alignFlags": 45, "_left": 0, "_right": 0, - "_top": -210, - "_bottom": -210, + "_top": 0, + "_bottom": 0, "_verticalCenter": 0, "_horizontalCenter": 0, "_isAbsLeft": true, @@ -7745,6 +7748,108 @@ "fileId": "c5IbgSqWhDerwgA0hdz30t", "sync": false }, + { + "__type__": "cc.Node", + "_name": "Top", + "_objFlags": 0, + "_parent": { + "__id__": 1 + }, + "_children": [], + "_active": true, + "_components": [ + { + "__id__": 217 + } + ], + "_prefab": { + "__id__": 218 + }, + "_opacity": 255, + "_color": { + "__type__": "cc.Color", + "r": 255, + "g": 255, + "b": 255, + "a": 255 + }, + "_contentSize": { + "__type__": "cc.Size", + "width": 0, + "height": 0 + }, + "_anchorPoint": { + "__type__": "cc.Vec2", + "x": 0.5, + "y": 0.5 + }, + "_trs": { + "__type__": "TypedArray", + "ctor": "Float64Array", + "array": [ + 0, + 0, + 0, + 0, + 0, + 0, + 1, + 1, + 1, + 1 + ] + }, + "_eulerAngles": { + "__type__": "cc.Vec3", + "x": 0, + "y": 0, + "z": 0 + }, + "_skewX": 0, + "_skewY": 0, + "_is3DNode": false, + "_groupIndex": 0, + "groupIndex": 0, + "_id": "" + }, + { + "__type__": "cc.Widget", + "_name": "", + "_objFlags": 0, + "node": { + "__id__": 216 + }, + "_enabled": true, + "alignMode": 1, + "_target": null, + "_alignFlags": 0, + "_left": 0, + "_right": 0, + "_top": 0, + "_bottom": 0, + "_verticalCenter": 0, + "_horizontalCenter": 0, + "_isAbsLeft": true, + "_isAbsRight": true, + "_isAbsTop": true, + "_isAbsBottom": true, + "_isAbsHorizontalCenter": true, + "_isAbsVerticalCenter": true, + "_originalWidth": 0, + "_originalHeight": 0, + "_id": "" + }, + { + "__type__": "cc.PrefabInfo", + "root": { + "__id__": 1 + }, + "asset": { + "__id__": 0 + }, + "fileId": "e5881p4DhA2o2G5SieRWXh", + "sync": false + }, { "__type__": "48bfeZuYFZE2qmgxbW2IigB", "_name": "", diff --git a/library/imports/b1/b1760ce5-36c7-4d8b-bb5f-069a448ebbf2.json b/library/imports/b1/b1760ce5-36c7-4d8b-bb5f-069a448ebbf2.json new file mode 100644 index 0000000..8c5c37c --- /dev/null +++ b/library/imports/b1/b1760ce5-36c7-4d8b-bb5f-069a448ebbf2.json @@ -0,0 +1,28 @@ +{ + "__type__": "cc.SpriteFrame", + "content": { + "name": "dikuai", + "texture": "418b4767-01bf-4ac2-823b-9880f2a79215", + "atlas": "cc01997d-495e-480d-871e-be405a6c38b5", + "rect": [ + 866, + 602, + 120, + 120 + ], + "offset": [ + 0, + 0 + ], + "originalSize": [ + 120, + 120 + ], + "capInsets": [ + 0, + 0, + 0, + 0 + ] + } +} \ No newline at end of file diff --git a/library/imports/b6/b6ab43fe-8e9a-48ac-9dc9-9107a47de661.json b/library/imports/b6/b6ab43fe-8e9a-48ac-9dc9-9107a47de661.json index 8508dc1..33a8f5a 100644 --- a/library/imports/b6/b6ab43fe-8e9a-48ac-9dc9-9107a47de661.json +++ b/library/imports/b6/b6ab43fe-8e9a-48ac-9dc9-9107a47de661.json @@ -281,7 +281,7 @@ "_srcBlendFactor": 770, "_dstBlendFactor": 771, "_spriteFrame": { - "__uuid__": "52f7fc1c-b560-4b6d-b15e-b38b6584a5d8" + "__uuid__": "4f65ed94-5d59-48ce-b94f-e199044365cf" }, "_type": 0, "_sizeMode": 1, @@ -295,7 +295,7 @@ "_fillRange": 0, "_isTrimmedMode": true, "_atlas": { - "__uuid__": "cc01997d-495e-480d-871e-be405a6c38b5" + "__uuid__": "f2c494b7-b6df-488f-b194-358235b0f180" }, "_id": "" }, @@ -315,7 +315,7 @@ "__uuid__": "f2c494b7-b6df-488f-b194-358235b0f180" }, "down_SpriteFrames": { - "__uuid__": "31479c6e-5626-4598-97ab-f94303e9efe7" + "__uuid__": "3d019ed8-3019-436d-add0-ceeb02a5baaf" }, "_id": "" }, @@ -486,9 +486,7 @@ "_fillStart": 0, "_fillRange": 0, "_isTrimmedMode": true, - "_atlas": { - "__uuid__": "31479c6e-5626-4598-97ab-f94303e9efe7" - }, + "_atlas": null, "_id": "" }, { @@ -2044,7 +2042,7 @@ "_srcBlendFactor": 770, "_dstBlendFactor": 771, "_spriteFrame": { - "__uuid__": "66c27f02-719e-422c-9277-42063833c0af" + "__uuid__": "4c2ac211-077a-4783-92b7-42964571ebfe" }, "_type": 0, "_sizeMode": 1, @@ -2058,7 +2056,7 @@ "_fillRange": 0, "_isTrimmedMode": true, "_atlas": { - "__uuid__": "cc01997d-495e-480d-871e-be405a6c38b5" + "__uuid__": "f2c494b7-b6df-488f-b194-358235b0f180" }, "_id": "" }, @@ -2089,7 +2087,7 @@ "_srcBlendFactor": 770, "_dstBlendFactor": 771, "_spriteFrame": { - "__uuid__": "9b80c949-4fcd-4e45-afa9-ad91683ef7b7" + "__uuid__": "1f53a670-99ab-4671-932f-3227940876cc" }, "_type": 3, "_sizeMode": 0, @@ -2103,7 +2101,7 @@ "_fillRange": 1, "_isTrimmedMode": true, "_atlas": { - "__uuid__": "cc01997d-495e-480d-871e-be405a6c38b5" + "__uuid__": "f2c494b7-b6df-488f-b194-358235b0f180" }, "_id": "" }, @@ -2266,7 +2264,7 @@ "_srcBlendFactor": 770, "_dstBlendFactor": 771, "_spriteFrame": { - "__uuid__": "66c27f02-719e-422c-9277-42063833c0af" + "__uuid__": "4c2ac211-077a-4783-92b7-42964571ebfe" }, "_type": 0, "_sizeMode": 1, @@ -2280,7 +2278,7 @@ "_fillRange": 0, "_isTrimmedMode": true, "_atlas": { - "__uuid__": "cc01997d-495e-480d-871e-be405a6c38b5" + "__uuid__": "f2c494b7-b6df-488f-b194-358235b0f180" }, "_id": "" }, @@ -2311,7 +2309,7 @@ "_srcBlendFactor": 770, "_dstBlendFactor": 771, "_spriteFrame": { - "__uuid__": "9b80c949-4fcd-4e45-afa9-ad91683ef7b7" + "__uuid__": "1f53a670-99ab-4671-932f-3227940876cc" }, "_type": 3, "_sizeMode": 0, @@ -2325,7 +2323,7 @@ "_fillRange": 1, "_isTrimmedMode": true, "_atlas": { - "__uuid__": "cc01997d-495e-480d-871e-be405a6c38b5" + "__uuid__": "f2c494b7-b6df-488f-b194-358235b0f180" }, "_id": "" }, @@ -2420,7 +2418,7 @@ "_srcBlendFactor": 770, "_dstBlendFactor": 771, "_spriteFrame": { - "__uuid__": "66c27f02-719e-422c-9277-42063833c0af" + "__uuid__": "4c2ac211-077a-4783-92b7-42964571ebfe" }, "_type": 0, "_sizeMode": 1, @@ -2434,7 +2432,7 @@ "_fillRange": 0, "_isTrimmedMode": true, "_atlas": { - "__uuid__": "cc01997d-495e-480d-871e-be405a6c38b5" + "__uuid__": "f2c494b7-b6df-488f-b194-358235b0f180" }, "_id": "" }, @@ -2529,7 +2527,7 @@ "_srcBlendFactor": 770, "_dstBlendFactor": 771, "_spriteFrame": { - "__uuid__": "66c27f02-719e-422c-9277-42063833c0af" + "__uuid__": "4c2ac211-077a-4783-92b7-42964571ebfe" }, "_type": 0, "_sizeMode": 1, @@ -2543,7 +2541,7 @@ "_fillRange": 0, "_isTrimmedMode": true, "_atlas": { - "__uuid__": "cc01997d-495e-480d-871e-be405a6c38b5" + "__uuid__": "f2c494b7-b6df-488f-b194-358235b0f180" }, "_id": "" }, @@ -2790,7 +2788,7 @@ "_srcBlendFactor": 770, "_dstBlendFactor": 771, "_spriteFrame": { - "__uuid__": "66c27f02-719e-422c-9277-42063833c0af" + "__uuid__": "4c2ac211-077a-4783-92b7-42964571ebfe" }, "_type": 0, "_sizeMode": 1, @@ -2804,7 +2802,7 @@ "_fillRange": 0, "_isTrimmedMode": true, "_atlas": { - "__uuid__": "cc01997d-495e-480d-871e-be405a6c38b5" + "__uuid__": "f2c494b7-b6df-488f-b194-358235b0f180" }, "_id": "" }, @@ -2835,7 +2833,7 @@ "_srcBlendFactor": 770, "_dstBlendFactor": 771, "_spriteFrame": { - "__uuid__": "36c23619-6422-47be-aa02-f78b7618bb3c" + "__uuid__": "b48abaaa-d7d1-45b6-8a24-8f259163122a" }, "_type": 3, "_sizeMode": 0, @@ -2849,7 +2847,7 @@ "_fillRange": 1, "_isTrimmedMode": true, "_atlas": { - "__uuid__": "cc01997d-495e-480d-871e-be405a6c38b5" + "__uuid__": "f2c494b7-b6df-488f-b194-358235b0f180" }, "_id": "" }, @@ -3012,7 +3010,7 @@ "_srcBlendFactor": 770, "_dstBlendFactor": 771, "_spriteFrame": { - "__uuid__": "66c27f02-719e-422c-9277-42063833c0af" + "__uuid__": "4c2ac211-077a-4783-92b7-42964571ebfe" }, "_type": 0, "_sizeMode": 1, @@ -3026,7 +3024,7 @@ "_fillRange": 0, "_isTrimmedMode": true, "_atlas": { - "__uuid__": "cc01997d-495e-480d-871e-be405a6c38b5" + "__uuid__": "f2c494b7-b6df-488f-b194-358235b0f180" }, "_id": "" }, @@ -3057,7 +3055,7 @@ "_srcBlendFactor": 770, "_dstBlendFactor": 771, "_spriteFrame": { - "__uuid__": "36c23619-6422-47be-aa02-f78b7618bb3c" + "__uuid__": "b48abaaa-d7d1-45b6-8a24-8f259163122a" }, "_type": 3, "_sizeMode": 0, @@ -3071,7 +3069,7 @@ "_fillRange": 1, "_isTrimmedMode": true, "_atlas": { - "__uuid__": "cc01997d-495e-480d-871e-be405a6c38b5" + "__uuid__": "f2c494b7-b6df-488f-b194-358235b0f180" }, "_id": "" }, @@ -3166,7 +3164,7 @@ "_srcBlendFactor": 770, "_dstBlendFactor": 771, "_spriteFrame": { - "__uuid__": "66c27f02-719e-422c-9277-42063833c0af" + "__uuid__": "4c2ac211-077a-4783-92b7-42964571ebfe" }, "_type": 0, "_sizeMode": 1, @@ -3180,7 +3178,7 @@ "_fillRange": 0, "_isTrimmedMode": true, "_atlas": { - "__uuid__": "cc01997d-495e-480d-871e-be405a6c38b5" + "__uuid__": "f2c494b7-b6df-488f-b194-358235b0f180" }, "_id": "" }, @@ -3275,7 +3273,7 @@ "_srcBlendFactor": 770, "_dstBlendFactor": 771, "_spriteFrame": { - "__uuid__": "66c27f02-719e-422c-9277-42063833c0af" + "__uuid__": "4c2ac211-077a-4783-92b7-42964571ebfe" }, "_type": 0, "_sizeMode": 1, @@ -3289,7 +3287,7 @@ "_fillRange": 0, "_isTrimmedMode": true, "_atlas": { - "__uuid__": "cc01997d-495e-480d-871e-be405a6c38b5" + "__uuid__": "f2c494b7-b6df-488f-b194-358235b0f180" }, "_id": "" }, @@ -3536,7 +3534,7 @@ "_srcBlendFactor": 770, "_dstBlendFactor": 771, "_spriteFrame": { - "__uuid__": "66c27f02-719e-422c-9277-42063833c0af" + "__uuid__": "4c2ac211-077a-4783-92b7-42964571ebfe" }, "_type": 0, "_sizeMode": 1, @@ -3550,7 +3548,7 @@ "_fillRange": 0, "_isTrimmedMode": true, "_atlas": { - "__uuid__": "cc01997d-495e-480d-871e-be405a6c38b5" + "__uuid__": "f2c494b7-b6df-488f-b194-358235b0f180" }, "_id": "" }, @@ -3581,7 +3579,7 @@ "_srcBlendFactor": 770, "_dstBlendFactor": 771, "_spriteFrame": { - "__uuid__": "2c8edc9c-c130-4c61-98f1-0a9b2edf3270" + "__uuid__": "e122aac4-873c-4996-bbc8-7fdbd2cd0e60" }, "_type": 3, "_sizeMode": 0, @@ -3595,7 +3593,7 @@ "_fillRange": 1, "_isTrimmedMode": true, "_atlas": { - "__uuid__": "cc01997d-495e-480d-871e-be405a6c38b5" + "__uuid__": "f2c494b7-b6df-488f-b194-358235b0f180" }, "_id": "" }, @@ -3758,7 +3756,7 @@ "_srcBlendFactor": 770, "_dstBlendFactor": 771, "_spriteFrame": { - "__uuid__": "66c27f02-719e-422c-9277-42063833c0af" + "__uuid__": "4c2ac211-077a-4783-92b7-42964571ebfe" }, "_type": 0, "_sizeMode": 1, @@ -3772,7 +3770,7 @@ "_fillRange": 0, "_isTrimmedMode": true, "_atlas": { - "__uuid__": "cc01997d-495e-480d-871e-be405a6c38b5" + "__uuid__": "f2c494b7-b6df-488f-b194-358235b0f180" }, "_id": "" }, @@ -3803,7 +3801,7 @@ "_srcBlendFactor": 770, "_dstBlendFactor": 771, "_spriteFrame": { - "__uuid__": "2c8edc9c-c130-4c61-98f1-0a9b2edf3270" + "__uuid__": "e122aac4-873c-4996-bbc8-7fdbd2cd0e60" }, "_type": 3, "_sizeMode": 0, @@ -3817,7 +3815,7 @@ "_fillRange": 1, "_isTrimmedMode": true, "_atlas": { - "__uuid__": "cc01997d-495e-480d-871e-be405a6c38b5" + "__uuid__": "f2c494b7-b6df-488f-b194-358235b0f180" }, "_id": "" }, @@ -3912,7 +3910,7 @@ "_srcBlendFactor": 770, "_dstBlendFactor": 771, "_spriteFrame": { - "__uuid__": "66c27f02-719e-422c-9277-42063833c0af" + "__uuid__": "4c2ac211-077a-4783-92b7-42964571ebfe" }, "_type": 0, "_sizeMode": 1, @@ -3926,7 +3924,7 @@ "_fillRange": 0, "_isTrimmedMode": true, "_atlas": { - "__uuid__": "cc01997d-495e-480d-871e-be405a6c38b5" + "__uuid__": "f2c494b7-b6df-488f-b194-358235b0f180" }, "_id": "" }, @@ -4021,7 +4019,7 @@ "_srcBlendFactor": 770, "_dstBlendFactor": 771, "_spriteFrame": { - "__uuid__": "66c27f02-719e-422c-9277-42063833c0af" + "__uuid__": "4c2ac211-077a-4783-92b7-42964571ebfe" }, "_type": 0, "_sizeMode": 1, @@ -4035,7 +4033,7 @@ "_fillRange": 0, "_isTrimmedMode": true, "_atlas": { - "__uuid__": "cc01997d-495e-480d-871e-be405a6c38b5" + "__uuid__": "f2c494b7-b6df-488f-b194-358235b0f180" }, "_id": "" }, diff --git a/library/imports/68/68390f8e-3b1b-454e-a7b9-c1fcc86de881.json b/library/imports/b6/b6e07f67-9d56-45ff-be78-5375b5265998.json similarity index 64% rename from library/imports/68/68390f8e-3b1b-454e-a7b9-c1fcc86de881.json rename to library/imports/b6/b6e07f67-9d56-45ff-be78-5375b5265998.json index fd41216..26b3c7e 100644 --- a/library/imports/68/68390f8e-3b1b-454e-a7b9-c1fcc86de881.json +++ b/library/imports/b6/b6e07f67-9d56-45ff-be78-5375b5265998.json @@ -2,11 +2,11 @@ "__type__": "cc.SpriteFrame", "content": { "name": "2down2", - "texture": "ed2c3a21-0522-445d-9904-76843208705f", - "atlas": "d7e227ab-cc06-48f5-a2ac-092b19ec7f6f", + "texture": "c660c59d-e175-4194-aaf3-33d1d03b783f", + "atlas": "3d019ed8-3019-436d-add0-ceeb02a5baaf", "rect": [ - 1082, - 1, + 615, + 48, 243, 45 ], @@ -18,7 +18,6 @@ 243, 45 ], - "rotated": 1, "capInsets": [ 0, 0, diff --git a/library/imports/58/5826977f-dfd6-4954-9358-7dc05913fa70.json b/library/imports/b8/b8ef6026-86e6-481d-b285-65489050ac48.json similarity index 64% rename from library/imports/58/5826977f-dfd6-4954-9358-7dc05913fa70.json rename to library/imports/b8/b8ef6026-86e6-481d-b285-65489050ac48.json index 82c705e..97dfb38 100644 --- a/library/imports/58/5826977f-dfd6-4954-9358-7dc05913fa70.json +++ b/library/imports/b8/b8ef6026-86e6-481d-b285-65489050ac48.json @@ -2,11 +2,11 @@ "__type__": "cc.SpriteFrame", "content": { "name": "6down2", - "texture": "ed2c3a21-0522-445d-9904-76843208705f", - "atlas": "d7e227ab-cc06-48f5-a2ac-092b19ec7f6f", + "texture": "c660c59d-e175-4194-aaf3-33d1d03b783f", + "atlas": "3d019ed8-3019-436d-add0-ceeb02a5baaf", "rect": [ - 1176, - 1, + 615, + 330, 243, 45 ], @@ -18,7 +18,6 @@ 243, 45 ], - "rotated": 1, "capInsets": [ 0, 0, diff --git a/library/imports/da/da42455b-0546-4bcc-a03b-beaa77b3d569.json b/library/imports/b8/b8f7c2fe-525a-434f-ab7e-41bdc9c91155.json similarity index 64% rename from library/imports/da/da42455b-0546-4bcc-a03b-beaa77b3d569.json rename to library/imports/b8/b8f7c2fe-525a-434f-ab7e-41bdc9c91155.json index a9e4dde..c9ed31a 100644 --- a/library/imports/da/da42455b-0546-4bcc-a03b-beaa77b3d569.json +++ b/library/imports/b8/b8f7c2fe-525a-434f-ab7e-41bdc9c91155.json @@ -2,11 +2,11 @@ "__type__": "cc.SpriteFrame", "content": { "name": "8down4", - "texture": "ed2c3a21-0522-445d-9904-76843208705f", - "atlas": "d7e227ab-cc06-48f5-a2ac-092b19ec7f6f", + "texture": "c660c59d-e175-4194-aaf3-33d1d03b783f", + "atlas": "3d019ed8-3019-436d-add0-ceeb02a5baaf", "rect": [ - 330, - 368, + 735, + 424, 45, 124 ], @@ -18,6 +18,7 @@ 45, 124 ], + "rotated": 1, "capInsets": [ 0, 0, diff --git a/library/imports/bb/bbafd681-01fb-47b0-a2ff-b15b926a240b.json b/library/imports/bb/bbafd681-01fb-47b0-a2ff-b15b926a240b.json new file mode 100644 index 0000000..24cbbfb --- /dev/null +++ b/library/imports/bb/bbafd681-01fb-47b0-a2ff-b15b926a240b.json @@ -0,0 +1,28 @@ +{ + "__type__": "cc.SpriteFrame", + "content": { + "name": "4color3", + "texture": "418b4767-01bf-4ac2-823b-9880f2a79215", + "atlas": "cc01997d-495e-480d-871e-be405a6c38b5", + "rect": [ + 898, + 64, + 378, + 69 + ], + "offset": [ + 0, + 0 + ], + "originalSize": [ + 378, + 69 + ], + "capInsets": [ + 0, + 0, + 0, + 0 + ] + } +} \ No newline at end of file diff --git a/library/imports/bc/bc920137-4c10-41ac-b55d-afaa7a733177.json b/library/imports/bc/bc920137-4c10-41ac-b55d-afaa7a733177.json new file mode 100644 index 0000000..52f32ae --- /dev/null +++ b/library/imports/bc/bc920137-4c10-41ac-b55d-afaa7a733177.json @@ -0,0 +1,28 @@ +{ + "__type__": "cc.SpriteFrame", + "content": { + "name": "3color4", + "texture": "418b4767-01bf-4ac2-823b-9880f2a79215", + "atlas": "cc01997d-495e-480d-871e-be405a6c38b5", + "rect": [ + 1275, + 636, + 61, + 146 + ], + "offset": [ + 0, + 0 + ], + "originalSize": [ + 61, + 146 + ], + "capInsets": [ + 0, + 0, + 0, + 0 + ] + } +} \ No newline at end of file diff --git a/library/imports/b2/b262e73b-3160-45f7-8293-3f419844e08e.json b/library/imports/c1/c1342fe3-26bf-44b8-9163-aacbee5d6684.json similarity index 64% rename from library/imports/b2/b262e73b-3160-45f7-8293-3f419844e08e.json rename to library/imports/c1/c1342fe3-26bf-44b8-9163-aacbee5d6684.json index 59fda6d..50927b6 100644 --- a/library/imports/b2/b262e73b-3160-45f7-8293-3f419844e08e.json +++ b/library/imports/c1/c1342fe3-26bf-44b8-9163-aacbee5d6684.json @@ -2,11 +2,11 @@ "__type__": "cc.SpriteFrame", "content": { "name": "8down6", - "texture": "ed2c3a21-0522-445d-9904-76843208705f", - "atlas": "d7e227ab-cc06-48f5-a2ac-092b19ec7f6f", + "texture": "c660c59d-e175-4194-aaf3-33d1d03b783f", + "atlas": "3d019ed8-3019-436d-add0-ceeb02a5baaf", "rect": [ - 330, - 1, + 248, + 471, 45, 365 ], @@ -18,6 +18,7 @@ 45, 365 ], + "rotated": 1, "capInsets": [ 0, 0, diff --git a/library/imports/c6/c660c59d-e175-4194-aaf3-33d1d03b783f.json b/library/imports/c6/c660c59d-e175-4194-aaf3-33d1d03b783f.json new file mode 100644 index 0000000..e7522d6 --- /dev/null +++ b/library/imports/c6/c660c59d-e175-4194-aaf3-33d1d03b783f.json @@ -0,0 +1,4 @@ +{ + "__type__": "cc.Texture2D", + "content": "0,9729,9729,33071,33071,0,0,1" +} \ No newline at end of file diff --git a/library/imports/c6/c660c59d-e175-4194-aaf3-33d1d03b783f.png b/library/imports/c6/c660c59d-e175-4194-aaf3-33d1d03b783f.png new file mode 100644 index 0000000..096d32a Binary files /dev/null and b/library/imports/c6/c660c59d-e175-4194-aaf3-33d1d03b783f.png differ diff --git a/library/imports/c7/c74f5c84-d250-4e6a-a6dc-5ce8b9e46633.json b/library/imports/c7/c74f5c84-d250-4e6a-a6dc-5ce8b9e46633.json new file mode 100644 index 0000000..7b5518f --- /dev/null +++ b/library/imports/c7/c74f5c84-d250-4e6a-a6dc-5ce8b9e46633.json @@ -0,0 +1,29 @@ +{ + "__type__": "cc.SpriteFrame", + "content": { + "name": "2color5", + "texture": "418b4767-01bf-4ac2-823b-9880f2a79215", + "atlas": "cc01997d-495e-480d-871e-be405a6c38b5", + "rect": [ + 127, + 403, + 62, + 266 + ], + "offset": [ + 0, + 0 + ], + "originalSize": [ + 62, + 266 + ], + "rotated": 1, + "capInsets": [ + 0, + 0, + 0, + 0 + ] + } +} \ No newline at end of file diff --git a/library/imports/c8/c84b719d-af4e-4688-b270-b5b3ebe7f7f0.json b/library/imports/c8/c84b719d-af4e-4688-b270-b5b3ebe7f7f0.json new file mode 100644 index 0000000..e46c727 --- /dev/null +++ b/library/imports/c8/c84b719d-af4e-4688-b270-b5b3ebe7f7f0.json @@ -0,0 +1,28 @@ +{ + "__type__": "cc.SpriteFrame", + "content": { + "name": "10color3", + "texture": "418b4767-01bf-4ac2-823b-9880f2a79215", + "atlas": "cc01997d-495e-480d-871e-be405a6c38b5", + "rect": [ + 889, + 206, + 378, + 69 + ], + "offset": [ + 0, + 0 + ], + "originalSize": [ + 378, + 69 + ], + "capInsets": [ + 0, + 0, + 0, + 0 + ] + } +} \ No newline at end of file diff --git a/library/imports/a2/a23e23b9-45af-41f2-8a45-272db024e81c.json b/library/imports/c8/c8c757f3-a7c1-446f-847e-f079db95fc71.json similarity index 64% rename from library/imports/a2/a23e23b9-45af-41f2-8a45-272db024e81c.json rename to library/imports/c8/c8c757f3-a7c1-446f-847e-f079db95fc71.json index 2fd6caf..78bc7f8 100644 --- a/library/imports/a2/a23e23b9-45af-41f2-8a45-272db024e81c.json +++ b/library/imports/c8/c8c757f3-a7c1-446f-847e-f079db95fc71.json @@ -2,11 +2,11 @@ "__type__": "cc.SpriteFrame", "content": { "name": "9down6", - "texture": "ed2c3a21-0522-445d-9904-76843208705f", - "atlas": "d7e227ab-cc06-48f5-a2ac-092b19ec7f6f", + "texture": "c660c59d-e175-4194-aaf3-33d1d03b783f", + "atlas": "3d019ed8-3019-436d-add0-ceeb02a5baaf", "rect": [ - 377, - 1, + 613, + 518, 45, 365 ], @@ -18,6 +18,7 @@ 45, 365 ], + "rotated": 1, "capInsets": [ 0, 0, diff --git a/library/imports/c8/c8f5862b-373d-4a40-b7b4-b550d4ed958a.json b/library/imports/c8/c8f5862b-373d-4a40-b7b4-b550d4ed958a.json new file mode 100644 index 0000000..cb11dca --- /dev/null +++ b/library/imports/c8/c8f5862b-373d-4a40-b7b4-b550d4ed958a.json @@ -0,0 +1,28 @@ +{ + "__type__": "cc.SpriteFrame", + "content": { + "name": "10down1", + "texture": "c660c59d-e175-4194-aaf3-33d1d03b783f", + "atlas": "3d019ed8-3019-436d-add0-ceeb02a5baaf", + "rect": [ + 1, + 565, + 122, + 45 + ], + "offset": [ + 0, + 0 + ], + "originalSize": [ + 122, + 45 + ], + "capInsets": [ + 0, + 0, + 0, + 0 + ] + } +} \ No newline at end of file diff --git a/library/imports/6a/6a933777-ee45-4b3b-96ca-6a68ad3c5328.json b/library/imports/c9/c9235f60-abf4-4de9-b0f0-45056ad4eec0.json similarity index 66% rename from library/imports/6a/6a933777-ee45-4b3b-96ca-6a68ad3c5328.json rename to library/imports/c9/c9235f60-abf4-4de9-b0f0-45056ad4eec0.json index 74b2982..84fd6c4 100644 --- a/library/imports/6a/6a933777-ee45-4b3b-96ca-6a68ad3c5328.json +++ b/library/imports/c9/c9235f60-abf4-4de9-b0f0-45056ad4eec0.json @@ -2,11 +2,11 @@ "__type__": "cc.SpriteFrame", "content": { "name": "2down4", - "texture": "ed2c3a21-0522-445d-9904-76843208705f", - "atlas": "d7e227ab-cc06-48f5-a2ac-092b19ec7f6f", + "texture": "c660c59d-e175-4194-aaf3-33d1d03b783f", + "atlas": "3d019ed8-3019-436d-add0-ceeb02a5baaf", "rect": [ + 860, 48, - 368, 45, 124 ], @@ -18,6 +18,7 @@ 45, 124 ], + "rotated": 1, "capInsets": [ 0, 0, diff --git a/library/imports/c9/c97d0dd9-8a86-4d84-a51c-4451beea4e1a.json b/library/imports/c9/c97d0dd9-8a86-4d84-a51c-4451beea4e1a.json new file mode 100644 index 0000000..3a59436 --- /dev/null +++ b/library/imports/c9/c97d0dd9-8a86-4d84-a51c-4451beea4e1a.json @@ -0,0 +1,29 @@ +{ + "__type__": "cc.SpriteFrame", + "content": { + "name": "7color4", + "texture": "418b4767-01bf-4ac2-823b-9880f2a79215", + "atlas": "cc01997d-495e-480d-871e-be405a6c38b5", + "rect": [ + 840, + 538, + 62, + 147 + ], + "offset": [ + 0, + 0 + ], + "originalSize": [ + 62, + 147 + ], + "rotated": 1, + "capInsets": [ + 0, + 0, + 0, + 0 + ] + } +} \ No newline at end of file diff --git a/library/imports/2b/2b4bc898-9d58-4cc9-97d4-5258405df035.json b/library/imports/c9/c983d847-cfc4-4288-aef4-81f7614c015e.json similarity index 64% rename from library/imports/2b/2b4bc898-9d58-4cc9-97d4-5258405df035.json rename to library/imports/c9/c983d847-cfc4-4288-aef4-81f7614c015e.json index 0e0abc1..dd3aa07 100644 --- a/library/imports/2b/2b4bc898-9d58-4cc9-97d4-5258405df035.json +++ b/library/imports/c9/c983d847-cfc4-4288-aef4-81f7614c015e.json @@ -2,11 +2,11 @@ "__type__": "cc.SpriteFrame", "content": { "name": "1down1", - "texture": "ed2c3a21-0522-445d-9904-76843208705f", - "atlas": "d7e227ab-cc06-48f5-a2ac-092b19ec7f6f", + "texture": "c660c59d-e175-4194-aaf3-33d1d03b783f", + "atlas": "3d019ed8-3019-436d-add0-ceeb02a5baaf", "rect": [ - 424, - 366, + 1, + 1, 122, 45 ], @@ -18,7 +18,6 @@ 122, 45 ], - "rotated": 1, "capInsets": [ 0, 0, diff --git a/library/imports/ca/ca1fbdcb-5180-4815-8751-4b66146e74de.json b/library/imports/ca/ca1fbdcb-5180-4815-8751-4b66146e74de.json deleted file mode 100644 index e3b3c3b..0000000 --- a/library/imports/ca/ca1fbdcb-5180-4815-8751-4b66146e74de.json +++ /dev/null @@ -1,670 +0,0 @@ -{ - "__type__": "sp.SkeletonData", - "_name": "jiekou_heng", - "_objFlags": 0, - "_native": "", - "_skeletonJson": { - "skeleton": { - "hash": "SglAgIli7zPuz0syxY5xlYrKWAw", - "spine": "3.8.99", - "x": -34.31, - "y": -28.63, - "width": 52, - "height": 60.36, - "images": "", - "audio": "" - }, - "bones": [ - { - "name": "root" - }, - { - "name": "bone3", - "parent": "root", - "x": -11.52, - "y": 52.57 - }, - { - "name": "kou1", - "parent": "bone3", - "x": 17.41, - "y": -32.85 - }, - { - "name": "bone", - "parent": "bone3", - "x": -10.72, - "y": -32.17 - }, - { - "name": "luosi", - "parent": "bone", - "x": 0.3, - "y": 0.82, - "scaleX": 0.6, - "scaleY": 0.6 - }, - { - "name": "bone2", - "parent": "bone3", - "x": 17.3, - "y": -32.17 - }, - { - "name": "luosi2", - "parent": "bone2", - "x": 0.3, - "y": 0.82, - "scaleX": 0.6, - "scaleY": 0.6 - }, - { - "name": "bone4", - "parent": "root", - "x": -11.52, - "y": 16.22 - }, - { - "name": "kou2", - "parent": "bone4", - "x": 17.41, - "y": -32.85 - }, - { - "name": "bone5", - "parent": "bone4", - "x": -10.72, - "y": -32.17 - }, - { - "name": "luosi3", - "parent": "bone5", - "x": 0.3, - "y": 0.82, - "scaleX": 0.6, - "scaleY": 0.6 - }, - { - "name": "bone6", - "parent": "bone4", - "x": 17.3, - "y": -32.17 - }, - { - "name": "luosi4", - "parent": "bone6", - "x": 0.3, - "y": 0.82, - "scaleX": 0.6, - "scaleY": 0.6 - } - ], - "slots": [ - { - "name": "连接块/连接块", - "bone": "root" - }, - { - "name": "连接块/kou1", - "bone": "kou1", - "attachment": "连接块/kou2" - }, - { - "name": "连接块/kou2", - "bone": "kou2", - "attachment": "连接块/kou2" - }, - { - "name": "连接块/luosi", - "bone": "luosi", - "attachment": "连接块/luosi" - }, - { - "name": "连接块/luosi6", - "bone": "luosi3", - "attachment": "连接块/luosi" - }, - { - "name": "连接块/luosi4", - "bone": "luosi2", - "attachment": "连接块/luosi" - }, - { - "name": "连接块/luosi8", - "bone": "luosi4", - "attachment": "连接块/luosi" - }, - { - "name": "连接块/luosi2", - "bone": "bone", - "attachment": "连接块/luosi2" - }, - { - "name": "连接块/luosi5", - "bone": "bone5", - "attachment": "连接块/luosi2" - }, - { - "name": "连接块/luosi3", - "bone": "bone2", - "attachment": "连接块/luosi2" - }, - { - "name": "连接块/luosi7", - "bone": "bone6", - "attachment": "连接块/luosi2" - } - ], - "skins": [ - { - "name": "default", - "attachments": { - "连接块/kou1": { - "连接块/kou1": { - "x": 13.89, - "width": 52, - "height": 24 - }, - "连接块/kou2": { - "x": -14.21, - "width": 52, - "height": 24 - } - }, - "连接块/kou2": { - "连接块/kou1": { - "x": 13.89, - "width": 52, - "height": 24 - }, - "连接块/kou2": { - "x": -14.21, - "width": 52, - "height": 24 - } - }, - "连接块/luosi": { - "连接块/luosi": { - "x": -0.28, - "y": -3.1, - "width": 23, - "height": 21 - } - }, - "连接块/luosi2": { - "连接块/luosi2": { - "x": -0.06, - "y": -0.22, - "width": 12, - "height": 12 - } - }, - "连接块/luosi3": { - "连接块/luosi2": { - "x": -0.06, - "y": -0.22, - "width": 12, - "height": 12 - } - }, - "连接块/luosi4": { - "连接块/luosi": { - "x": -0.28, - "y": -3.1, - "width": 23, - "height": 21 - } - }, - "连接块/luosi5": { - "连接块/luosi2": { - "x": -0.06, - "y": -0.22, - "width": 12, - "height": 12 - } - }, - "连接块/luosi6": { - "连接块/luosi": { - "x": -0.28, - "y": -3.1, - "width": 23, - "height": 21 - } - }, - "连接块/luosi7": { - "连接块/luosi2": { - "x": -0.06, - "y": -0.22, - "width": 12, - "height": 12 - } - }, - "连接块/luosi8": { - "连接块/luosi": { - "x": -0.28, - "y": -3.1, - "width": 23, - "height": 21 - } - } - } - } - ], - "animations": { - "animation": { - "slots": { - "连接块/kou1": { - "color": [ - { - "time": 0.3333, - "color": "ffffffff" - }, - { - "time": 0.6, - "color": "ffffff00" - } - ] - }, - "连接块/kou2": { - "color": [ - { - "time": 0.6667, - "color": "ffffffff" - }, - { - "time": 0.9333, - "color": "ffffff00" - } - ] - }, - "连接块/luosi": { - "color": [ - { - "color": "ffffff00", - "curve": "stepped" - }, - { - "time": 0.3333, - "color": "ffffff00" - }, - { - "time": 0.3667, - "color": "ffffffff" - }, - { - "time": 0.6667, - "color": "ffffff00" - } - ] - }, - "连接块/luosi2": { - "color": [ - { - "time": 0.3333, - "color": "ffffffff" - }, - { - "time": 0.3667, - "color": "ffffff00" - } - ] - }, - "连接块/luosi3": { - "color": [ - { - "time": 0.4667, - "color": "ffffffff" - }, - { - "time": 0.5, - "color": "ffffff00" - } - ] - }, - "连接块/luosi4": { - "color": [ - { - "color": "ffffff00", - "curve": "stepped" - }, - { - "time": 0.4667, - "color": "ffffff00" - }, - { - "time": 0.5, - "color": "ffffffff" - }, - { - "time": 0.8, - "color": "ffffff00" - } - ] - }, - "连接块/luosi5": { - "color": [ - { - "time": 0.5, - "color": "ffffffff" - }, - { - "time": 0.5333, - "color": "ffffff00" - } - ] - }, - "连接块/luosi6": { - "color": [ - { - "color": "ffffff00", - "curve": "stepped" - }, - { - "time": 0.3333, - "color": "ffffff00" - }, - { - "time": 0.3667, - "color": "ffffffff" - }, - { - "time": 0.6667, - "color": "ffffff00" - } - ] - }, - "连接块/luosi7": { - "color": [ - { - "time": 0.6333, - "color": "ffffffff" - }, - { - "time": 0.6667, - "color": "ffffff00" - } - ] - }, - "连接块/luosi8": { - "color": [ - { - "color": "ffffff00", - "curve": "stepped" - }, - { - "time": 0.4667, - "color": "ffffff00" - }, - { - "time": 0.5, - "color": "ffffffff" - }, - { - "time": 0.8, - "color": "ffffff00" - } - ] - } - }, - "bones": { - "kou1": { - "rotate": [ - { - "time": 0.3333 - }, - { - "time": 0.4667, - "angle": 35.85 - }, - { - "time": 0.6, - "angle": -136.48 - } - ], - "translate": [ - { - "time": 0.3333 - }, - { - "time": 0.6, - "x": 160.21, - "y": -504.28 - } - ] - }, - "luosi": { - "rotate": [ - { - "time": 0.3667 - }, - { - "time": 0.6667, - "angle": -120.91 - } - ] - }, - "bone": { - "rotate": [ - {}, - { - "time": 0.1667, - "angle": -177 - }, - { - "time": 0.3333, - "angle": 81.64 - } - ], - "translate": [ - { - "time": 0.3333 - }, - { - "time": 0.6667, - "x": -231.71, - "y": 365.51 - } - ], - "scale": [ - {}, - { - "time": 0.3333, - "x": 1.1, - "y": 1.1 - }, - { - "time": 0.6667, - "x": 3, - "y": 3 - } - ] - }, - "bone2": { - "rotate": [ - { - "time": 0.1333 - }, - { - "time": 0.3, - "angle": -177 - }, - { - "time": 0.4667, - "angle": 81.64 - } - ], - "translate": [ - { - "time": 0.4667 - }, - { - "time": 0.8, - "x": 258.57, - "y": 206.19 - } - ], - "scale": [ - { - "time": 0.1333 - }, - { - "time": 0.4667, - "x": 1.1, - "y": 1.1 - }, - { - "time": 0.8, - "x": 3, - "y": 3 - } - ] - }, - "luosi2": { - "rotate": [ - { - "time": 0.5 - }, - { - "time": 0.8, - "angle": -120.91 - } - ] - }, - "kou2": { - "rotate": [ - { - "time": 0.6667 - }, - { - "time": 0.9333, - "angle": -136.48 - } - ], - "translate": [ - { - "time": 0.6667 - }, - { - "time": 0.9333, - "x": -410.73, - "y": -378.57 - } - ] - }, - "bone5": { - "rotate": [ - { - "time": 0.1667 - }, - { - "time": 0.3333, - "angle": -177 - }, - { - "time": 0.5, - "angle": 81.64 - } - ], - "translate": [ - { - "time": 0.5 - }, - { - "time": 0.8333, - "x": -351.46, - "y": -250.38 - } - ], - "scale": [ - { - "time": 0.1667 - }, - { - "time": 0.5, - "x": 1.1, - "y": 1.1 - }, - { - "time": 0.8333, - "x": 3, - "y": 3 - } - ] - }, - "luosi3": { - "rotate": [ - { - "time": 0.3667 - }, - { - "time": 0.6667, - "angle": -120.91 - } - ] - }, - "bone6": { - "rotate": [ - { - "time": 0.3 - }, - { - "time": 0.4667, - "angle": -177 - }, - { - "time": 0.6333, - "angle": 81.64 - } - ], - "translate": [ - { - "time": 0.6333 - }, - { - "time": 0.9667, - "x": 173.03, - "y": -292.38 - } - ], - "scale": [ - { - "time": 0.3 - }, - { - "time": 0.6333, - "x": 1.1, - "y": 1.1 - }, - { - "time": 0.9667, - "x": 3, - "y": 3 - } - ] - }, - "luosi4": { - "rotate": [ - { - "time": 0.5 - }, - { - "time": 0.8, - "angle": -120.91 - } - ] - } - } - } - } - }, - "_atlasText": "\r\njiekou_heng.png\r\nsize: 148,148\r\nformat: RGBA8888\r\nfilter: Linear,Linear\r\nrepeat: none\r\n连接块/kou1\r\n rotate: false\r\n xy: 2, 121\r\n size: 52, 24\r\n orig: 52, 24\r\n offset: 0, 0\r\n index: -1\r\n连接块/kou2\r\n rotate: false\r\n xy: 56, 121\r\n size: 52, 24\r\n orig: 52, 24\r\n offset: 0, 0\r\n index: -1\r\n连接块/luosi\r\n rotate: true\r\n xy: 110, 122\r\n size: 23, 21\r\n orig: 23, 21\r\n offset: 0, 0\r\n index: -1\r\n连接块/luosi2\r\n rotate: false\r\n xy: 133, 133\r\n size: 12, 12\r\n orig: 12, 12\r\n offset: 0, 0\r\n index: -1\r\n", - "textures": [ - { - "__uuid__": "b422f3cf-81f1-4bda-9b15-c5ef7a9687b8" - } - ], - "textureNames": [ - "jiekou_heng.png" - ], - "scale": 1 -} \ No newline at end of file diff --git a/library/imports/ca/ca5f78b1-730f-4ad9-a695-9f72982d7cce.json b/library/imports/ca/ca5f78b1-730f-4ad9-a695-9f72982d7cce.json new file mode 100644 index 0000000..a482a9f --- /dev/null +++ b/library/imports/ca/ca5f78b1-730f-4ad9-a695-9f72982d7cce.json @@ -0,0 +1,29 @@ +{ + "__type__": "cc.SpriteFrame", + "content": { + "name": "10down4", + "texture": "c660c59d-e175-4194-aaf3-33d1d03b783f", + "atlas": "3d019ed8-3019-436d-add0-ceeb02a5baaf", + "rect": [ + 735, + 565, + 45, + 124 + ], + "offset": [ + 0, + 0 + ], + "originalSize": [ + 45, + 124 + ], + "rotated": 1, + "capInsets": [ + 0, + 0, + 0, + 0 + ] + } +} \ No newline at end of file diff --git a/library/imports/cb/cbf87552-edd2-496f-827c-a59a22552fbb.json b/library/imports/cb/cbf87552-edd2-496f-827c-a59a22552fbb.json new file mode 100644 index 0000000..6ae5d74 --- /dev/null +++ b/library/imports/cb/cbf87552-edd2-496f-827c-a59a22552fbb.json @@ -0,0 +1,29 @@ +{ + "__type__": "cc.SpriteFrame", + "content": { + "name": "10color5", + "texture": "418b4767-01bf-4ac2-823b-9880f2a79215", + "atlas": "cc01997d-495e-480d-871e-be405a6c38b5", + "rect": [ + 388, + 537, + 61, + 266 + ], + "offset": [ + 0, + 0 + ], + "originalSize": [ + 61, + 266 + ], + "rotated": 1, + "capInsets": [ + 0, + 0, + 0, + 0 + ] + } +} \ No newline at end of file diff --git a/library/imports/cc/cc01997d-495e-480d-871e-be405a6c38b5.json b/library/imports/cc/cc01997d-495e-480d-871e-be405a6c38b5.json new file mode 100644 index 0000000..90b1800 --- /dev/null +++ b/library/imports/cc/cc01997d-495e-480d-871e-be405a6c38b5.json @@ -0,0 +1,248 @@ +{ + "__type__": "cc.SpriteAtlas", + "_name": "door.plist", + "_objFlags": 0, + "_native": "", + "_spriteFrames": { + "10color1": { + "__uuid__": "f9de4f9f-c4fa-49af-a8c5-7299bbbc26c6" + }, + "10color2": { + "__uuid__": "cddc81e8-863d-4e14-91ac-4eb044ef5f96" + }, + "10color3": { + "__uuid__": "c84b719d-af4e-4688-b270-b5b3ebe7f7f0" + }, + "10color4": { + "__uuid__": "2f23c78c-a279-4428-81a7-098cc67b3640" + }, + "10color5": { + "__uuid__": "cbf87552-edd2-496f-827c-a59a22552fbb" + }, + "10color6": { + "__uuid__": "747709de-f3f7-4042-8ac9-9ff807c4b7cf" + }, + "1color1": { + "__uuid__": "d94491c5-a3e8-48d2-b260-3b8d516f564e" + }, + "1color2": { + "__uuid__": "cd704b98-c709-4fb6-a3b1-873723c82e14" + }, + "1color3": { + "__uuid__": "edd195cc-2af5-4a7a-bf49-2af75e60d50a" + }, + "1color4": { + "__uuid__": "6b1b5072-9a41-44e7-9923-3855864d5120" + }, + "1color5": { + "__uuid__": "6899ee49-88e4-44ff-b7f9-421031d84e6e" + }, + "1color6": { + "__uuid__": "917a86f2-c688-4cf5-9568-37632e1964b1" + }, + "2color1": { + "__uuid__": "287c291c-a6f2-4f5f-9c2e-af814874901b" + }, + "2color2": { + "__uuid__": "d8ed1577-eef1-42b8-986a-a9619e068d41" + }, + "2color3": { + "__uuid__": "39687b17-060f-401d-b776-9597fd00d95c" + }, + "2color4": { + "__uuid__": "f895411c-ea37-4419-9f12-057e76049b29" + }, + "2color5": { + "__uuid__": "c74f5c84-d250-4e6a-a6dc-5ce8b9e46633" + }, + "2color6": { + "__uuid__": "21696b26-2ba1-410c-a02f-c7cf63fdb349" + }, + "3color1": { + "__uuid__": "433a5eb9-bd88-4fcf-9811-8b58f93dea65" + }, + "3color2": { + "__uuid__": "ef5bfdc0-6a9e-4866-bc77-9c69a629796b" + }, + "3color3": { + "__uuid__": "e6235cef-05a1-44b7-aa4c-46b51bc91632" + }, + "3color4": { + "__uuid__": "bc920137-4c10-41ac-b55d-afaa7a733177" + }, + "3color5": { + "__uuid__": "0f1dcd5c-03b8-4f85-9edc-9002472876e3" + }, + "3color6": { + "__uuid__": "daad8024-c803-4b18-bb58-77a8620fd0ec" + }, + "4color1": { + "__uuid__": "1405acc7-1f74-46f3-9975-839e5337673d" + }, + "4color2": { + "__uuid__": "3718b4a0-0fb3-490b-85d4-64a2ac95c437" + }, + "4color3": { + "__uuid__": "bbafd681-01fb-47b0-a2ff-b15b926a240b" + }, + "4color4": { + "__uuid__": "ac5d82a3-1111-4557-b9f7-0b4ba525fbd5" + }, + "4color5": { + "__uuid__": "9c999eaf-168d-480a-9a0e-175e787630c9" + }, + "4color6": { + "__uuid__": "dc7d898f-98f6-45e3-a908-1eab888d9383" + }, + "5color1": { + "__uuid__": "4b6d2792-ce59-4597-8d54-3e667f5e4ad7" + }, + "5color2": { + "__uuid__": "01a25c6d-3527-4d0b-8ac0-f3e54bd2863e" + }, + "5color3": { + "__uuid__": "3bd263ae-509c-4b63-8c11-c545402c77b8" + }, + "5color4": { + "__uuid__": "a39ecd5d-7cdf-4caf-865d-81f806b582f3" + }, + "5color5": { + "__uuid__": "f05b3170-ab5d-4af5-96fa-ca996cc795e3" + }, + "5color6": { + "__uuid__": "20e22b3b-684d-405d-ac5b-5cd9ba4f9b66" + }, + "6color1": { + "__uuid__": "28e0793b-62a9-41b7-9512-082ce55eca71" + }, + "6color2": { + "__uuid__": "550602d1-08e8-467e-8bd0-5295c4981fec" + }, + "6color3": { + "__uuid__": "e538a058-80c2-49b8-aea0-f39d69183437" + }, + "6color4": { + "__uuid__": "9cca10f3-7a1a-402a-83d4-30597d8144c7" + }, + "6color5": { + "__uuid__": "a3f51e26-9f3f-4a35-8d40-dfff45754b25" + }, + "6color6": { + "__uuid__": "fe897368-c5ca-4c14-a316-afe70f5e80cc" + }, + "7color1": { + "__uuid__": "e712ba83-24ff-404f-8699-61c4902001c9" + }, + "7color2": { + "__uuid__": "dd2060c3-db79-48ff-b6b2-346e357ec7ed" + }, + "7color3": { + "__uuid__": "880acb82-9636-4221-b533-3c9f826c4d9c" + }, + "7color4": { + "__uuid__": "c97d0dd9-8a86-4d84-a51c-4451beea4e1a" + }, + "7color5": { + "__uuid__": "2defa794-ed61-4edf-a314-b8cda4b029aa" + }, + "7color6": { + "__uuid__": "1672955d-283c-47be-a394-28cac1c6ba5b" + }, + "8color1": { + "__uuid__": "6abff37f-5b52-4658-bd2b-c146e6dea162" + }, + "8color2": { + "__uuid__": "e91b0b84-c90c-4f76-b1e4-b8976cb6dede" + }, + "8color3": { + "__uuid__": "582183eb-bd29-403e-848d-164b9ac0ed50" + }, + "8color4": { + "__uuid__": "43ba2e3e-eb31-41b2-98d0-74bf98cad885" + }, + "8color5": { + "__uuid__": "74c1ec31-91eb-423e-97c9-68c93ffde355" + }, + "8color6": { + "__uuid__": "e468d8cc-1332-4516-b4d6-f4dd61e6ab54" + }, + "9color1": { + "__uuid__": "360ebdc2-02ca-4937-8d15-8224b0950ab2" + }, + "9color2": { + "__uuid__": "3d4ca3d9-74fd-4408-99e3-0f9b0101c7b3" + }, + "9color3": { + "__uuid__": "88a9a994-1d0b-49c1-a081-3f33c864b120" + }, + "9color4": { + "__uuid__": "006ec77b-2f24-4f23-8685-898cc6802c7f" + }, + "9color5": { + "__uuid__": "dab229f9-0033-4f2e-a766-b34f445fe773" + }, + "9color6": { + "__uuid__": "a5543b75-5f2f-4355-8b34-7770803e78bc" + }, + "dikuai": { + "__uuid__": "b1760ce5-36c7-4d8b-bb5f-069a448ebbf2" + }, + "shu_zl1": { + "__uuid__": "66c27f02-719e-422c-9277-42063833c0af" + }, + "shu_zl1_1": { + "__uuid__": "9b80c949-4fcd-4e45-afa9-ad91683ef7b7" + }, + "shu_zl1_2": { + "__uuid__": "36c23619-6422-47be-aa02-f78b7618bb3c" + }, + "shu_zl1_3": { + "__uuid__": "2c8edc9c-c130-4c61-98f1-0a9b2edf3270" + }, + "shu_zl2": { + "__uuid__": "894c0780-7f4a-4a9f-ad92-de3471abb5c5" + }, + "shu_zl2_1": { + "__uuid__": "18d68fd0-41ef-430e-9de2-d38b9e55b08c" + }, + "shu_zl2_11": { + "__uuid__": "a8c7af66-0323-4bbd-b41b-ae9ed5671c84" + }, + "shu_zl2_2": { + "__uuid__": "90d2bb3b-aeca-4ea8-9afa-c2ae9871791b" + }, + "shu_zl2_22": { + "__uuid__": "aa13f028-c4c4-4978-bc3e-56b1ef1f2843" + }, + "shu_zl2_3": { + "__uuid__": "ac2a29e0-63e5-4f9d-b088-dd6682f8bde4" + }, + "shu_zl2_33": { + "__uuid__": "6012f579-6820-44ee-89c4-87c6c9b25f44" + }, + "wall1": { + "__uuid__": "fc8fd6fa-3cc2-4a69-a2f7-2c521de510b1" + }, + "wall2": { + "__uuid__": "52f7fc1c-b560-4b6d-b15e-b38b6584a5d8" + }, + "wall3": { + "__uuid__": "865e12b4-8506-4026-ab52-9c8421100cc4" + }, + "wall4": { + "__uuid__": "02a22e2f-85e0-4ce1-a955-6ea4bf514319" + }, + "wall5": { + "__uuid__": "ee73bdf1-0624-464f-a268-cb0ff3f2952b" + }, + "wall6": { + "__uuid__": "e7bbdb15-5185-4c6e-a2f6-1c337b60b460" + }, + "wall7": { + "__uuid__": "3042034a-eafb-4920-aacc-79bd4f56d417" + }, + "zhangai": { + "__uuid__": "e200ed15-b2bf-49eb-864b-d0ead7b9fbd6" + } + } +} \ No newline at end of file diff --git a/library/imports/8c/8c800863-99c9-4779-b54e-feded5ca9f43.json b/library/imports/cc/ccaae0e5-ef39-4909-8249-afb1cd2d6ada.json similarity index 63% rename from library/imports/8c/8c800863-99c9-4779-b54e-feded5ca9f43.json rename to library/imports/cc/ccaae0e5-ef39-4909-8249-afb1cd2d6ada.json index f459e33..fa0a40f 100644 --- a/library/imports/8c/8c800863-99c9-4779-b54e-feded5ca9f43.json +++ b/library/imports/cc/ccaae0e5-ef39-4909-8249-afb1cd2d6ada.json @@ -2,11 +2,11 @@ "__type__": "cc.SpriteFrame", "content": { "name": "9down2", - "texture": "ed2c3a21-0522-445d-9904-76843208705f", - "atlas": "d7e227ab-cc06-48f5-a2ac-092b19ec7f6f", + "texture": "c660c59d-e175-4194-aaf3-33d1d03b783f", + "atlas": "3d019ed8-3019-436d-add0-ceeb02a5baaf", "rect": [ - 1223, - 246, + 615, + 471, 243, 45 ], @@ -18,7 +18,6 @@ 243, 45 ], - "rotated": 1, "capInsets": [ 0, 0, diff --git a/library/imports/cd/cd704b98-c709-4fb6-a3b1-873723c82e14.json b/library/imports/cd/cd704b98-c709-4fb6-a3b1-873723c82e14.json new file mode 100644 index 0000000..4e95523 --- /dev/null +++ b/library/imports/cd/cd704b98-c709-4fb6-a3b1-873723c82e14.json @@ -0,0 +1,28 @@ +{ + "__type__": "cc.SpriteFrame", + "content": { + "name": "1color2", + "texture": "418b4767-01bf-4ac2-823b-9880f2a79215", + "atlas": "cc01997d-495e-480d-871e-be405a6c38b5", + "rect": [ + 127, + 538, + 258, + 69 + ], + "offset": [ + 0, + 0 + ], + "originalSize": [ + 258, + 69 + ], + "capInsets": [ + 0, + 0, + 0, + 0 + ] + } +} \ No newline at end of file diff --git a/library/imports/cd/cddc81e8-863d-4e14-91ac-4eb044ef5f96.json b/library/imports/cd/cddc81e8-863d-4e14-91ac-4eb044ef5f96.json new file mode 100644 index 0000000..14b53bd --- /dev/null +++ b/library/imports/cd/cddc81e8-863d-4e14-91ac-4eb044ef5f96.json @@ -0,0 +1,28 @@ +{ + "__type__": "cc.SpriteFrame", + "content": { + "name": "10color2", + "texture": "418b4767-01bf-4ac2-823b-9880f2a79215", + "atlas": "cc01997d-495e-480d-871e-be405a6c38b5", + "rect": [ + 840, + 467, + 258, + 69 + ], + "offset": [ + 0, + 0 + ], + "originalSize": [ + 258, + 69 + ], + "capInsets": [ + 0, + 0, + 0, + 0 + ] + } +} \ No newline at end of file diff --git a/library/imports/ce/cef92b6b-13fd-44c8-a4af-848b55a7ba57.json b/library/imports/ce/cef92b6b-13fd-44c8-a4af-848b55a7ba57.json index 1ab474c..39a5828 100644 --- a/library/imports/ce/cef92b6b-13fd-44c8-a4af-848b55a7ba57.json +++ b/library/imports/ce/cef92b6b-13fd-44c8-a4af-848b55a7ba57.json @@ -281,7 +281,7 @@ "_srcBlendFactor": 770, "_dstBlendFactor": 771, "_spriteFrame": { - "__uuid__": "fc8fd6fa-3cc2-4a69-a2f7-2c521de510b1" + "__uuid__": "6db2aafd-c221-4be9-a20b-5bb361fe22ef" }, "_type": 0, "_sizeMode": 1, @@ -295,7 +295,7 @@ "_fillRange": 0, "_isTrimmedMode": true, "_atlas": { - "__uuid__": "cc01997d-495e-480d-871e-be405a6c38b5" + "__uuid__": "f2c494b7-b6df-488f-b194-358235b0f180" }, "_id": "" }, @@ -315,7 +315,7 @@ "__uuid__": "f2c494b7-b6df-488f-b194-358235b0f180" }, "down_SpriteFrames": { - "__uuid__": "31479c6e-5626-4598-97ab-f94303e9efe7" + "__uuid__": "3d019ed8-3019-436d-add0-ceeb02a5baaf" }, "_id": "" }, @@ -2042,7 +2042,7 @@ "_srcBlendFactor": 770, "_dstBlendFactor": 771, "_spriteFrame": { - "__uuid__": "66c27f02-719e-422c-9277-42063833c0af" + "__uuid__": "4c2ac211-077a-4783-92b7-42964571ebfe" }, "_type": 0, "_sizeMode": 1, @@ -2056,7 +2056,7 @@ "_fillRange": 0, "_isTrimmedMode": true, "_atlas": { - "__uuid__": "cc01997d-495e-480d-871e-be405a6c38b5" + "__uuid__": "f2c494b7-b6df-488f-b194-358235b0f180" }, "_id": "" }, @@ -2087,7 +2087,7 @@ "_srcBlendFactor": 770, "_dstBlendFactor": 771, "_spriteFrame": { - "__uuid__": "9b80c949-4fcd-4e45-afa9-ad91683ef7b7" + "__uuid__": "1f53a670-99ab-4671-932f-3227940876cc" }, "_type": 3, "_sizeMode": 0, @@ -2101,7 +2101,7 @@ "_fillRange": 1, "_isTrimmedMode": true, "_atlas": { - "__uuid__": "cc01997d-495e-480d-871e-be405a6c38b5" + "__uuid__": "f2c494b7-b6df-488f-b194-358235b0f180" }, "_id": "" }, @@ -2264,7 +2264,7 @@ "_srcBlendFactor": 770, "_dstBlendFactor": 771, "_spriteFrame": { - "__uuid__": "66c27f02-719e-422c-9277-42063833c0af" + "__uuid__": "4c2ac211-077a-4783-92b7-42964571ebfe" }, "_type": 0, "_sizeMode": 1, @@ -2278,7 +2278,7 @@ "_fillRange": 0, "_isTrimmedMode": true, "_atlas": { - "__uuid__": "cc01997d-495e-480d-871e-be405a6c38b5" + "__uuid__": "f2c494b7-b6df-488f-b194-358235b0f180" }, "_id": "" }, @@ -2309,7 +2309,7 @@ "_srcBlendFactor": 770, "_dstBlendFactor": 771, "_spriteFrame": { - "__uuid__": "9b80c949-4fcd-4e45-afa9-ad91683ef7b7" + "__uuid__": "1f53a670-99ab-4671-932f-3227940876cc" }, "_type": 3, "_sizeMode": 0, @@ -2323,7 +2323,7 @@ "_fillRange": 1, "_isTrimmedMode": true, "_atlas": { - "__uuid__": "cc01997d-495e-480d-871e-be405a6c38b5" + "__uuid__": "f2c494b7-b6df-488f-b194-358235b0f180" }, "_id": "" }, @@ -2418,7 +2418,7 @@ "_srcBlendFactor": 770, "_dstBlendFactor": 771, "_spriteFrame": { - "__uuid__": "66c27f02-719e-422c-9277-42063833c0af" + "__uuid__": "4c2ac211-077a-4783-92b7-42964571ebfe" }, "_type": 0, "_sizeMode": 1, @@ -2432,7 +2432,7 @@ "_fillRange": 0, "_isTrimmedMode": true, "_atlas": { - "__uuid__": "cc01997d-495e-480d-871e-be405a6c38b5" + "__uuid__": "f2c494b7-b6df-488f-b194-358235b0f180" }, "_id": "" }, @@ -2527,7 +2527,7 @@ "_srcBlendFactor": 770, "_dstBlendFactor": 771, "_spriteFrame": { - "__uuid__": "66c27f02-719e-422c-9277-42063833c0af" + "__uuid__": "4c2ac211-077a-4783-92b7-42964571ebfe" }, "_type": 0, "_sizeMode": 1, @@ -2541,7 +2541,7 @@ "_fillRange": 0, "_isTrimmedMode": true, "_atlas": { - "__uuid__": "cc01997d-495e-480d-871e-be405a6c38b5" + "__uuid__": "f2c494b7-b6df-488f-b194-358235b0f180" }, "_id": "" }, @@ -2788,7 +2788,7 @@ "_srcBlendFactor": 770, "_dstBlendFactor": 771, "_spriteFrame": { - "__uuid__": "66c27f02-719e-422c-9277-42063833c0af" + "__uuid__": "4c2ac211-077a-4783-92b7-42964571ebfe" }, "_type": 0, "_sizeMode": 1, @@ -2802,7 +2802,7 @@ "_fillRange": 0, "_isTrimmedMode": true, "_atlas": { - "__uuid__": "cc01997d-495e-480d-871e-be405a6c38b5" + "__uuid__": "f2c494b7-b6df-488f-b194-358235b0f180" }, "_id": "" }, @@ -2833,7 +2833,7 @@ "_srcBlendFactor": 770, "_dstBlendFactor": 771, "_spriteFrame": { - "__uuid__": "36c23619-6422-47be-aa02-f78b7618bb3c" + "__uuid__": "b48abaaa-d7d1-45b6-8a24-8f259163122a" }, "_type": 3, "_sizeMode": 0, @@ -2847,7 +2847,7 @@ "_fillRange": 1, "_isTrimmedMode": true, "_atlas": { - "__uuid__": "cc01997d-495e-480d-871e-be405a6c38b5" + "__uuid__": "f2c494b7-b6df-488f-b194-358235b0f180" }, "_id": "" }, @@ -3010,7 +3010,7 @@ "_srcBlendFactor": 770, "_dstBlendFactor": 771, "_spriteFrame": { - "__uuid__": "66c27f02-719e-422c-9277-42063833c0af" + "__uuid__": "4c2ac211-077a-4783-92b7-42964571ebfe" }, "_type": 0, "_sizeMode": 1, @@ -3024,7 +3024,7 @@ "_fillRange": 0, "_isTrimmedMode": true, "_atlas": { - "__uuid__": "cc01997d-495e-480d-871e-be405a6c38b5" + "__uuid__": "f2c494b7-b6df-488f-b194-358235b0f180" }, "_id": "" }, @@ -3055,7 +3055,7 @@ "_srcBlendFactor": 770, "_dstBlendFactor": 771, "_spriteFrame": { - "__uuid__": "36c23619-6422-47be-aa02-f78b7618bb3c" + "__uuid__": "b48abaaa-d7d1-45b6-8a24-8f259163122a" }, "_type": 3, "_sizeMode": 0, @@ -3069,7 +3069,7 @@ "_fillRange": 1, "_isTrimmedMode": true, "_atlas": { - "__uuid__": "cc01997d-495e-480d-871e-be405a6c38b5" + "__uuid__": "f2c494b7-b6df-488f-b194-358235b0f180" }, "_id": "" }, @@ -3164,7 +3164,7 @@ "_srcBlendFactor": 770, "_dstBlendFactor": 771, "_spriteFrame": { - "__uuid__": "66c27f02-719e-422c-9277-42063833c0af" + "__uuid__": "4c2ac211-077a-4783-92b7-42964571ebfe" }, "_type": 0, "_sizeMode": 1, @@ -3178,7 +3178,7 @@ "_fillRange": 0, "_isTrimmedMode": true, "_atlas": { - "__uuid__": "cc01997d-495e-480d-871e-be405a6c38b5" + "__uuid__": "f2c494b7-b6df-488f-b194-358235b0f180" }, "_id": "" }, @@ -3273,7 +3273,7 @@ "_srcBlendFactor": 770, "_dstBlendFactor": 771, "_spriteFrame": { - "__uuid__": "66c27f02-719e-422c-9277-42063833c0af" + "__uuid__": "4c2ac211-077a-4783-92b7-42964571ebfe" }, "_type": 0, "_sizeMode": 1, @@ -3287,7 +3287,7 @@ "_fillRange": 0, "_isTrimmedMode": true, "_atlas": { - "__uuid__": "cc01997d-495e-480d-871e-be405a6c38b5" + "__uuid__": "f2c494b7-b6df-488f-b194-358235b0f180" }, "_id": "" }, @@ -3534,7 +3534,7 @@ "_srcBlendFactor": 770, "_dstBlendFactor": 771, "_spriteFrame": { - "__uuid__": "66c27f02-719e-422c-9277-42063833c0af" + "__uuid__": "4c2ac211-077a-4783-92b7-42964571ebfe" }, "_type": 0, "_sizeMode": 1, @@ -3548,7 +3548,7 @@ "_fillRange": 0, "_isTrimmedMode": true, "_atlas": { - "__uuid__": "cc01997d-495e-480d-871e-be405a6c38b5" + "__uuid__": "f2c494b7-b6df-488f-b194-358235b0f180" }, "_id": "" }, @@ -3579,7 +3579,7 @@ "_srcBlendFactor": 770, "_dstBlendFactor": 771, "_spriteFrame": { - "__uuid__": "2c8edc9c-c130-4c61-98f1-0a9b2edf3270" + "__uuid__": "e122aac4-873c-4996-bbc8-7fdbd2cd0e60" }, "_type": 3, "_sizeMode": 0, @@ -3593,7 +3593,7 @@ "_fillRange": 1, "_isTrimmedMode": true, "_atlas": { - "__uuid__": "cc01997d-495e-480d-871e-be405a6c38b5" + "__uuid__": "f2c494b7-b6df-488f-b194-358235b0f180" }, "_id": "" }, @@ -3756,7 +3756,7 @@ "_srcBlendFactor": 770, "_dstBlendFactor": 771, "_spriteFrame": { - "__uuid__": "66c27f02-719e-422c-9277-42063833c0af" + "__uuid__": "4c2ac211-077a-4783-92b7-42964571ebfe" }, "_type": 0, "_sizeMode": 1, @@ -3770,7 +3770,7 @@ "_fillRange": 0, "_isTrimmedMode": true, "_atlas": { - "__uuid__": "cc01997d-495e-480d-871e-be405a6c38b5" + "__uuid__": "f2c494b7-b6df-488f-b194-358235b0f180" }, "_id": "" }, @@ -3801,7 +3801,7 @@ "_srcBlendFactor": 770, "_dstBlendFactor": 771, "_spriteFrame": { - "__uuid__": "2c8edc9c-c130-4c61-98f1-0a9b2edf3270" + "__uuid__": "e122aac4-873c-4996-bbc8-7fdbd2cd0e60" }, "_type": 3, "_sizeMode": 0, @@ -3815,7 +3815,7 @@ "_fillRange": 1, "_isTrimmedMode": true, "_atlas": { - "__uuid__": "cc01997d-495e-480d-871e-be405a6c38b5" + "__uuid__": "f2c494b7-b6df-488f-b194-358235b0f180" }, "_id": "" }, @@ -3910,7 +3910,7 @@ "_srcBlendFactor": 770, "_dstBlendFactor": 771, "_spriteFrame": { - "__uuid__": "66c27f02-719e-422c-9277-42063833c0af" + "__uuid__": "4c2ac211-077a-4783-92b7-42964571ebfe" }, "_type": 0, "_sizeMode": 1, @@ -3924,7 +3924,7 @@ "_fillRange": 0, "_isTrimmedMode": true, "_atlas": { - "__uuid__": "cc01997d-495e-480d-871e-be405a6c38b5" + "__uuid__": "f2c494b7-b6df-488f-b194-358235b0f180" }, "_id": "" }, @@ -4019,7 +4019,7 @@ "_srcBlendFactor": 770, "_dstBlendFactor": 771, "_spriteFrame": { - "__uuid__": "66c27f02-719e-422c-9277-42063833c0af" + "__uuid__": "4c2ac211-077a-4783-92b7-42964571ebfe" }, "_type": 0, "_sizeMode": 1, @@ -4033,7 +4033,7 @@ "_fillRange": 0, "_isTrimmedMode": true, "_atlas": { - "__uuid__": "cc01997d-495e-480d-871e-be405a6c38b5" + "__uuid__": "f2c494b7-b6df-488f-b194-358235b0f180" }, "_id": "" }, diff --git a/library/imports/d0/d087ded4-16f9-4bf8-b327-274637687f5d.json b/library/imports/cf/cfda791a-aa61-49c2-a331-117740c80b87.json similarity index 64% rename from library/imports/d0/d087ded4-16f9-4bf8-b327-274637687f5d.json rename to library/imports/cf/cfda791a-aa61-49c2-a331-117740c80b87.json index f686411..df6b222 100644 --- a/library/imports/d0/d087ded4-16f9-4bf8-b327-274637687f5d.json +++ b/library/imports/cf/cfda791a-aa61-49c2-a331-117740c80b87.json @@ -2,11 +2,11 @@ "__type__": "cc.SpriteFrame", "content": { "name": "2down5", - "texture": "ed2c3a21-0522-445d-9904-76843208705f", - "atlas": "d7e227ab-cc06-48f5-a2ac-092b19ec7f6f", + "texture": "c660c59d-e175-4194-aaf3-33d1d03b783f", + "atlas": "3d019ed8-3019-436d-add0-ceeb02a5baaf", "rect": [ - 847, - 248, + 366, + 95, 45, 245 ], @@ -18,6 +18,7 @@ 45, 245 ], + "rotated": 1, "capInsets": [ 0, 0, diff --git a/library/imports/d7/d7e227ab-cc06-48f5-a2ac-092b19ec7f6f.json b/library/imports/d7/d7e227ab-cc06-48f5-a2ac-092b19ec7f6f.json deleted file mode 100644 index d8449fb..0000000 --- a/library/imports/d7/d7e227ab-cc06-48f5-a2ac-092b19ec7f6f.json +++ /dev/null @@ -1,170 +0,0 @@ -{ - "__type__": "cc.SpriteAtlas", - "_name": "down.plist", - "_objFlags": 0, - "_native": "", - "_spriteFrames": { - "1down1": { - "__uuid__": "2b4bc898-9d58-4cc9-97d4-5258405df035" - }, - "1down2": { - "__uuid__": "cd18678b-7524-486e-bb38-39a44cb94e44" - }, - "1down3": { - "__uuid__": "cdd06e33-9d9b-4cd3-837d-58789aa4607b" - }, - "1down4": { - "__uuid__": "2aa0942a-3b6b-4e7f-9873-b12eea8600e9" - }, - "1down5": { - "__uuid__": "6e6d4d1c-d136-480b-8a0d-38ea4cacf4f3" - }, - "1down6": { - "__uuid__": "dbd3a947-1747-4785-8385-8bb177e1307c" - }, - "2down1": { - "__uuid__": "50604593-fce5-4e85-931a-15cbb6d48233" - }, - "2down2": { - "__uuid__": "68390f8e-3b1b-454e-a7b9-c1fcc86de881" - }, - "2down3": { - "__uuid__": "089bdab6-7e5d-4f20-b02e-3d6a0009f2cf" - }, - "2down4": { - "__uuid__": "6a933777-ee45-4b3b-96ca-6a68ad3c5328" - }, - "2down5": { - "__uuid__": "d087ded4-16f9-4bf8-b327-274637687f5d" - }, - "2down6": { - "__uuid__": "18584761-426f-48a3-a9d0-c3ecad434a5b" - }, - "3down1": { - "__uuid__": "f8efcd45-c7e5-4fbd-a6ac-78f524598889" - }, - "3down2": { - "__uuid__": "61d0cd1b-24d9-404a-9c06-879ac780b2fe" - }, - "3down3": { - "__uuid__": "18850366-326d-4822-bf43-3eca366b7762" - }, - "3down4": { - "__uuid__": "4bed4b40-03a0-4ec4-8cf9-2b0863b561a5" - }, - "3down5": { - "__uuid__": "80f975f0-0e3b-47f5-9128-88aa34d1bd80" - }, - "3down6": { - "__uuid__": "51af1f04-c786-43e0-a377-79d9fe9ce2cb" - }, - "4down1": { - "__uuid__": "ec5316c1-ec42-4609-9d87-2e0f9a8a5ca0" - }, - "4down2": { - "__uuid__": "ccd13857-62d3-4492-bd72-d8418ed44197" - }, - "4down3": { - "__uuid__": "01713157-8648-451e-9061-5be0089e39f8" - }, - "4down4": { - "__uuid__": "df5bc245-50a2-404a-a208-c187d44c6e25" - }, - "4down5": { - "__uuid__": "ca22313c-ac3f-41f8-ad87-37668e1416e1" - }, - "4down6": { - "__uuid__": "83995ec4-b926-496e-9287-b486424e3bd2" - }, - "5down1": { - "__uuid__": "c9f113a0-f3a4-4e0e-9e38-33dedda84d88" - }, - "5down2": { - "__uuid__": "5c8a3a48-5cdf-406f-8977-8e8b41188a10" - }, - "5down3": { - "__uuid__": "dcd0323e-c1d4-43fe-8052-29f8677a60bd" - }, - "5down4": { - "__uuid__": "d09bc3df-abc4-42f6-bab8-6da7e2b45893" - }, - "5down5": { - "__uuid__": "a36546af-228b-4f2c-bb43-5d5eccc382d3" - }, - "5down6": { - "__uuid__": "40c8322e-6517-40e8-91a7-f73febcc16d8" - }, - "6down1": { - "__uuid__": "51f517ae-4273-4f6a-8d64-3265c9bc941c" - }, - "6down2": { - "__uuid__": "5826977f-dfd6-4954-9358-7dc05913fa70" - }, - "6down3": { - "__uuid__": "58d2857e-4c27-4eaa-a162-92d81bc6fa18" - }, - "6down4": { - "__uuid__": "5802ac2a-fd76-49c8-820b-7c0d04f003d5" - }, - "6down5": { - "__uuid__": "eca53869-fec9-4954-bc2b-750bc2ed8598" - }, - "6down6": { - "__uuid__": "5e4a496f-3214-4364-ae25-e0424712c6ca" - }, - "7down1": { - "__uuid__": "12ccf01f-c412-4ca1-a908-30002ebfc9f4" - }, - "7down2": { - "__uuid__": "d4657390-adb1-449b-a006-2d13f4a09138" - }, - "7down3": { - "__uuid__": "15feda8b-1d2e-4894-9e42-0888d4bd127b" - }, - "7down4": { - "__uuid__": "a7a7b806-c49d-45bd-b181-2a1583f9ae67" - }, - "7down5": { - "__uuid__": "4626c7d9-db5b-4d89-821a-a50d6aa8be02" - }, - "7down6": { - "__uuid__": "e14df810-ed05-418a-98ff-1aabc5685cd4" - }, - "8down1": { - "__uuid__": "8709b13e-b16a-4bee-8b77-623bdf487a33" - }, - "8down2": { - "__uuid__": "9059fc98-5811-4ec3-a70d-0922b3163305" - }, - "8down3": { - "__uuid__": "dd68dd77-048c-49ba-8ce9-1212226f595e" - }, - "8down4": { - "__uuid__": "da42455b-0546-4bcc-a03b-beaa77b3d569" - }, - "8down5": { - "__uuid__": "7de5502c-6595-418a-a613-a271ffb06b82" - }, - "8down6": { - "__uuid__": "b262e73b-3160-45f7-8293-3f419844e08e" - }, - "9down1": { - "__uuid__": "3d8762c1-946b-4b96-be97-d153143d2b8a" - }, - "9down2": { - "__uuid__": "8c800863-99c9-4779-b54e-feded5ca9f43" - }, - "9down3": { - "__uuid__": "4b95b89d-4e79-4cd0-9dd1-3be2087ceae8" - }, - "9down4": { - "__uuid__": "cf230e1b-b0c2-41a7-b495-69b7e166eb98" - }, - "9down5": { - "__uuid__": "10a7cd8b-3f3d-4561-a678-e919de57f01a" - }, - "9down6": { - "__uuid__": "a23e23b9-45af-41f2-8a45-272db024e81c" - } - } -} \ No newline at end of file diff --git a/library/imports/d8/d8ed1577-eef1-42b8-986a-a9619e068d41.json b/library/imports/d8/d8ed1577-eef1-42b8-986a-a9619e068d41.json new file mode 100644 index 0000000..94ad35b --- /dev/null +++ b/library/imports/d8/d8ed1577-eef1-42b8-986a-a9619e068d41.json @@ -0,0 +1,28 @@ +{ + "__type__": "cc.SpriteFrame", + "content": { + "name": "2color2", + "texture": "418b4767-01bf-4ac2-823b-9880f2a79215", + "atlas": "cc01997d-495e-480d-871e-be405a6c38b5", + "rect": [ + 127, + 609, + 258, + 69 + ], + "offset": [ + 0, + 0 + ], + "originalSize": [ + 258, + 69 + ], + "capInsets": [ + 0, + 0, + 0, + 0 + ] + } +} \ No newline at end of file diff --git a/library/imports/d9/d94491c5-a3e8-48d2-b260-3b8d516f564e.json b/library/imports/d9/d94491c5-a3e8-48d2-b260-3b8d516f564e.json new file mode 100644 index 0000000..f433889 --- /dev/null +++ b/library/imports/d9/d94491c5-a3e8-48d2-b260-3b8d516f564e.json @@ -0,0 +1,28 @@ +{ + "__type__": "cc.SpriteFrame", + "content": { + "name": "1color1", + "texture": "418b4767-01bf-4ac2-823b-9880f2a79215", + "atlas": "cc01997d-495e-480d-871e-be405a6c38b5", + "rect": [ + 989, + 538, + 138, + 69 + ], + "offset": [ + 0, + 0 + ], + "originalSize": [ + 138, + 69 + ], + "capInsets": [ + 0, + 0, + 0, + 0 + ] + } +} \ No newline at end of file diff --git a/library/imports/da/daad8024-c803-4b18-bb58-77a8620fd0ec.json b/library/imports/da/daad8024-c803-4b18-bb58-77a8620fd0ec.json new file mode 100644 index 0000000..abfe271 --- /dev/null +++ b/library/imports/da/daad8024-c803-4b18-bb58-77a8620fd0ec.json @@ -0,0 +1,29 @@ +{ + "__type__": "cc.SpriteFrame", + "content": { + "name": "3color6", + "texture": "418b4767-01bf-4ac2-823b-9880f2a79215", + "atlas": "cc01997d-495e-480d-871e-be405a6c38b5", + "rect": [ + 129, + 1, + 61, + 387 + ], + "offset": [ + 0, + 0 + ], + "originalSize": [ + 61, + 387 + ], + "rotated": 1, + "capInsets": [ + 0, + 0, + 0, + 0 + ] + } +} \ No newline at end of file diff --git a/library/imports/da/dab229f9-0033-4f2e-a766-b34f445fe773.json b/library/imports/da/dab229f9-0033-4f2e-a766-b34f445fe773.json new file mode 100644 index 0000000..2c9c0d8 --- /dev/null +++ b/library/imports/da/dab229f9-0033-4f2e-a766-b34f445fe773.json @@ -0,0 +1,29 @@ +{ + "__type__": "cc.SpriteFrame", + "content": { + "name": "9color5", + "texture": "418b4767-01bf-4ac2-823b-9880f2a79215", + "atlas": "cc01997d-495e-480d-871e-be405a6c38b5", + "rect": [ + 1, + 806, + 61, + 267 + ], + "offset": [ + 0, + 0 + ], + "originalSize": [ + 61, + 267 + ], + "rotated": 1, + "capInsets": [ + 0, + 0, + 0, + 0 + ] + } +} \ No newline at end of file diff --git a/library/imports/f8/f8efcd45-c7e5-4fbd-a6ac-78f524598889.json b/library/imports/db/dbf12764-e7df-4736-923b-4e613402fd70.json similarity index 64% rename from library/imports/f8/f8efcd45-c7e5-4fbd-a6ac-78f524598889.json rename to library/imports/db/dbf12764-e7df-4736-923b-4e613402fd70.json index 1f0b743..f1a70ec 100644 --- a/library/imports/f8/f8efcd45-c7e5-4fbd-a6ac-78f524598889.json +++ b/library/imports/db/dbf12764-e7df-4736-923b-4e613402fd70.json @@ -2,11 +2,11 @@ "__type__": "cc.SpriteFrame", "content": { "name": "3down1", - "texture": "ed2c3a21-0522-445d-9904-76843208705f", - "atlas": "d7e227ab-cc06-48f5-a2ac-092b19ec7f6f", + "texture": "c660c59d-e175-4194-aaf3-33d1d03b783f", + "atlas": "3d019ed8-3019-436d-add0-ceeb02a5baaf", "rect": [ - 518, - 366, + 1, + 142, 122, 45 ], @@ -18,7 +18,6 @@ 122, 45 ], - "rotated": 1, "capInsets": [ 0, 0, diff --git a/library/imports/dc/dc7d898f-98f6-45e3-a908-1eab888d9383.json b/library/imports/dc/dc7d898f-98f6-45e3-a908-1eab888d9383.json new file mode 100644 index 0000000..245c755 --- /dev/null +++ b/library/imports/dc/dc7d898f-98f6-45e3-a908-1eab888d9383.json @@ -0,0 +1,29 @@ +{ + "__type__": "cc.SpriteFrame", + "content": { + "name": "4color6", + "texture": "418b4767-01bf-4ac2-823b-9880f2a79215", + "atlas": "cc01997d-495e-480d-871e-be405a6c38b5", + "rect": [ + 129, + 64, + 61, + 387 + ], + "offset": [ + 0, + 0 + ], + "originalSize": [ + 61, + 387 + ], + "rotated": 1, + "capInsets": [ + 0, + 0, + 0, + 0 + ] + } +} \ No newline at end of file diff --git a/library/imports/dd/dd2060c3-db79-48ff-b6b2-346e357ec7ed.json b/library/imports/dd/dd2060c3-db79-48ff-b6b2-346e357ec7ed.json new file mode 100644 index 0000000..82188de --- /dev/null +++ b/library/imports/dd/dd2060c3-db79-48ff-b6b2-346e357ec7ed.json @@ -0,0 +1,28 @@ +{ + "__type__": "cc.SpriteFrame", + "content": { + "name": "7color2", + "texture": "418b4767-01bf-4ac2-823b-9880f2a79215", + "atlas": "cc01997d-495e-480d-871e-be405a6c38b5", + "rect": [ + 270, + 813, + 258, + 69 + ], + "offset": [ + 0, + 0 + ], + "originalSize": [ + 258, + 69 + ], + "capInsets": [ + 0, + 0, + 0, + 0 + ] + } +} \ No newline at end of file diff --git a/library/imports/de/de906884-fc75-47a4-8e95-3bb20cbca688.js.map b/library/imports/de/de906884-fc75-47a4-8e95-3bb20cbca688.js.map index 42d5b3f..ffa4cec 100644 --- a/library/imports/de/de906884-fc75-47a4-8e95-3bb20cbca688.js.map +++ b/library/imports/de/de906884-fc75-47a4-8e95-3bb20cbca688.js.map @@ -1 +1 @@ -{"version":3,"sources":["assets\\shop\\script\\item.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;AAEM,IAAA,KAAwB,EAAE,CAAC,UAAU,EAAnC,OAAO,aAAA,EAAE,QAAQ,cAAkB,CAAC;AAG5C;IAAsC,4BAAY;IAAlD;QAAA,qEA2BC;QAxBG,WAAK,GAAa,IAAI,CAAC;QAGvB,UAAI,GAAW,OAAO,CAAC;;QAoBvB,iBAAiB;IACrB,CAAC;IApBG,wBAAwB;IAExB,eAAe;IAEf,wBAAK,GAAL;IAEA,CAAC;IAED,QAAQ;IACR,0BAAO,GAAP,UAAQ,QAAQ;QACZ,4CAA4C;QAC5C,gDAAgD;QAChD,cAAc;QACd,IAAI;QACJ,yEAAyE;QACzE,6BAA6B;QAC7B,yCAAyC;IAC7C,CAAC;IArBD;QADC,QAAQ,CAAC,EAAE,CAAC,KAAK,CAAC;2CACI;IAGvB;QADC,QAAQ;0CACc;IANN,QAAQ;QAD5B,OAAO;OACa,QAAQ,CA2B5B;IAAD,eAAC;CA3BD,AA2BC,CA3BqC,EAAE,CAAC,SAAS,GA2BjD;kBA3BoB,QAAQ","file":"","sourceRoot":"/","sourcesContent":["\n\nconst { ccclass, property } = cc._decorator;\n\n@ccclass\nexport default class NewClass extends cc.Component {\n\n @property(cc.Label)\n label: cc.Label = null;\n\n @property\n text: string = 'hello';\n // LIFE-CYCLE CALLBACKS:\n\n // onLoad () {}\n\n start() {\n\n }\n\n //购买商品道具\n buyProp(propName) {\n // if(cc.fx.GameConfig.GM_INFO.coin < 1500){\n // MiniGameSdk.API.showToast(\"金币不足,无法购买道具\");\n // return;\n // }\n // let propWindow = this.node.parent.parent.getChildByName(\"propWindow\");\n // propWindow.active = false;\n // cc.fx.GameConfig.GM_INFO.coin -= 1500;\n }\n\n // update (dt) {}\n}\n"]} \ No newline at end of file +{"version":3,"sources":["assets\\shop\\script\\item.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;AAEM,IAAA,KAAwB,EAAE,CAAC,UAAU,EAAnC,OAAO,aAAA,EAAE,QAAQ,cAAkB,CAAC;AAG5C;IAAsC,4BAAY;IAAlD;QAAA,qEA2BC;QAxBG,WAAK,GAAa,IAAI,CAAC;QAGvB,UAAI,GAAW,OAAO,CAAC;;QAoBvB,iBAAiB;IACrB,CAAC;IApBG,wBAAwB;IAExB,eAAe;IAEf,wBAAK,GAAL;IAEA,CAAC;IAED,QAAQ;IACR,0BAAO,GAAP,UAAQ,QAAQ;QACZ,4CAA4C;QAC5C,gDAAgD;QAChD,cAAc;QACd,IAAI;QACJ,yEAAyE;QACzE,6BAA6B;QAC7B,yCAAyC;IAC7C,CAAC;IArBD;QADC,QAAQ,CAAC,EAAE,CAAC,KAAK,CAAC;2CACI;IAGvB;QADC,QAAQ;0CACc;IANN,QAAQ;QAD5B,OAAO;OACa,QAAQ,CA2B5B;IAAD,eAAC;CA3BD,AA2BC,CA3BqC,EAAE,CAAC,SAAS,GA2BjD;kBA3BoB,QAAQ","file":"","sourceRoot":"/","sourcesContent":["\r\n\r\nconst { ccclass, property } = cc._decorator;\r\n\r\n@ccclass\r\nexport default class NewClass extends cc.Component {\r\n\r\n @property(cc.Label)\r\n label: cc.Label = null;\r\n\r\n @property\r\n text: string = 'hello';\r\n // LIFE-CYCLE CALLBACKS:\r\n\r\n // onLoad () {}\r\n\r\n start() {\r\n\r\n }\r\n\r\n //购买商品道具\r\n buyProp(propName) {\r\n // if(cc.fx.GameConfig.GM_INFO.coin < 1500){\r\n // MiniGameSdk.API.showToast(\"金币不足,无法购买道具\");\r\n // return;\r\n // }\r\n // let propWindow = this.node.parent.parent.getChildByName(\"propWindow\");\r\n // propWindow.active = false;\r\n // cc.fx.GameConfig.GM_INFO.coin -= 1500;\r\n }\r\n\r\n // update (dt) {}\r\n}\r\n"]} \ No newline at end of file diff --git a/library/imports/df/df248952-2e59-4e66-9087-c06a90e587b7.js b/library/imports/df/df248952-2e59-4e66-9087-c06a90e587b7.js index 699782e..ab4b5f8 100644 --- a/library/imports/df/df248952-2e59-4e66-9087-c06a90e587b7.js +++ b/library/imports/df/df248952-2e59-4e66-9087-c06a90e587b7.js @@ -76,7 +76,7 @@ var GameManager = /** @class */ (function (_super) { var path2 = 'prefab/wall'; cc.resources.loadDir(path, cc.Prefab, function (err, assets) { if (err) { - console.error('动态加载 Prefab 失败:', err); + console.log('动态加载 block 失败:', err); cc.director.loadScene("LoadScene"); return; } @@ -88,7 +88,7 @@ var GameManager = /** @class */ (function (_super) { }); cc.resources.loadDir(path2, cc.Prefab, function (err, assets) { if (err) { - console.error('动态加载 Prefab 失败:', err); + console.log('动态加载 wall 失败:', err); cc.director.loadScene("LoadScene"); return; } @@ -98,15 +98,6 @@ var GameManager = /** @class */ (function (_super) { console.log('墙加载成功,共加载了', _this.Wall_Prefab.length, '个墙'); _this.setWallPrefabSort(); }); - // debugger; - // setTimeout(() => { - // cc.director.preloadScene("HomeScene", (err) => { - // if (err) { - // console.error('预加载 HomeScene 场景失败:', err); - // return; - // } - // }); - // }, 1000); // 检测微信小游戏切到后台 if (cc.sys.platform === cc.sys.WECHAT_GAME) { //@ts-ignore diff --git a/library/imports/df/df248952-2e59-4e66-9087-c06a90e587b7.js.map b/library/imports/df/df248952-2e59-4e66-9087-c06a90e587b7.js.map index 7ae4554..14edc38 100644 --- a/library/imports/df/df248952-2e59-4e66-9087-c06a90e587b7.js.map +++ b/library/imports/df/df248952-2e59-4e66-9087-c06a90e587b7.js.map @@ -1,5 +1 @@ -<<<<<<< HEAD -{"version":3,"sources":["assets\\Script\\GameManager.ts"],"names":[],"mappings":"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","file":"","sourceRoot":"/","sourcesContent":["// Learn TypeScript:\r\n// - https://docs.cocos.com/creator/manual/en/scripting/typescript.html\r\n// Learn Attribute:\r\n// - https://docs.cocos.com/creator/manual/en/scripting/reference/attributes.html\r\n// Learn life-cycle callbacks:\r\n// - https://docs.cocos.com/creator/manual/en/scripting/life-cycle-callbacks.html\r\n\r\nimport { MiniGameManager } from \"./Sdk/MiniGameManager\";\r\nimport { MiniGameSdk } from \"./Sdk/MiniGameSdk\";\r\n\r\nconst {ccclass, property} = cc._decorator;\r\n\r\n@ccclass\r\nexport default class GameManager extends cc.Component {\r\n\r\n @property(cc.Label)\r\n label: cc.Label = null;\r\n\r\n @property\r\n text: string = 'hello';\r\n static _instance : GameManager = null;\r\n\r\n @property({type: [cc.Prefab], tooltip:\"方块数组\"})\r\n Block_Array : Array = [];\r\n\r\n @property({type: [cc.Prefab], tooltip:\"墙壁数组\"})\r\n Wall_Prefab : Array = [];\r\n\r\n @property({type: [cc.SpriteAtlas], tooltip:\"方块颜色\"})\r\n Block_Color : Array = [];\r\n\r\n particleEffects: cc.ParticleAsset[];\r\n // @property({type: [cc.ParticleSystem], tooltip:\"粒子数组\"})\r\n // particleEffects : Array = [];\r\n\r\n load1 :boolean = false;\r\n load2 :boolean = false;\r\n load3 :boolean = false;\r\n load4 :boolean = false;\r\n load5 :boolean = false;\r\n scheduleCallback: any;\r\n timeNumber: number;\r\n\r\n \r\n // LIFE-CYCLE CALLBACKS:\r\n\r\n onLoad () {\r\n\r\n window.initMgr();\r\n this.timeNumber = 3;\r\n this.startTimeCutDown();\r\n cc.fx.GameConfig.init(true);\r\n cc.fx.GameConfig.GM_INFO.gameState = false;\r\n this.readMusicConfig();\r\n console.log(\"音乐开关\",cc.fx.GameConfig.GM_INFO.musicOpen);\r\n cc.fx.AudioManager._instance.playMusicGame();\r\n\r\n this.load1 = this.load2 = this.load3 = this.load4 = this.load5 =false;\r\n setTimeout(() => {\r\n this.readUserData();\r\n }, 200);\r\n \r\n\r\n if (GameManager._instance == null) {\r\n GameManager._instance = this;\r\n cc.game.addPersistRootNode(this.node);\r\n }\r\n else {\r\n return;\r\n }\r\n\r\n const path = 'prefab/block';\r\n const path2 = 'prefab/wall';\r\n cc.resources.loadDir(path, cc.Prefab, (err, assets: cc.Prefab[]) => {\r\n if (err) {\r\n \r\n console.error('动态加载 Prefab 失败:', err);\r\n cc.director.loadScene(\"LoadScene\");\r\n return;\r\n }\r\n // 将加载的 Prefab 赋值给 Block_Array\r\n this.Block_Array = assets;\r\n this.setSort();\r\n this.load1 = true;\r\n });\r\n\r\n cc.resources.loadDir(path2, cc.Prefab, (err, assets: cc.Prefab[]) => {\r\n if (err) {\r\n console.error('动态加载 Prefab 失败:', err);\r\n cc.director.loadScene(\"LoadScene\");\r\n return;\r\n }\r\n // 将加载的 Prefab 赋值给 Block_Array\r\n this.Wall_Prefab = assets;\r\n this.load2 = true;\r\n this.setWallPrefabSort();\r\n });\r\n\r\n // debugger;\r\n\r\n // setTimeout(() => {\r\n // cc.director.preloadScene(\"HomeScene\", (err) => {\r\n // if (err) {\r\n // console.error('预加载 HomeScene 场景失败:', err);\r\n // return;\r\n // }\r\n // });\r\n // }, 1000);\r\n\r\n // 检测微信小游戏切到后台\r\n if (cc.sys.platform === cc.sys.WECHAT_GAME) {\r\n //@ts-ignore\r\n wx.onHide(() => {\r\n this.onHide();\r\n });\r\n // 检测微信小游戏回到前台\r\n //@ts-ignore\r\n wx.onShow(() => {\r\n this.onShow();\r\n });\r\n }\r\n\r\n }\r\n\r\n onHide () {\r\n cc.audioEngine.stopMusic();\r\n cc.game.pause();\r\n }\r\n\r\n onShow () {\r\n cc.audioEngine.resumeMusic();\r\n cc.game.resume();\r\n }\r\n\r\n loadParticleEffects() {\r\n }\r\n\r\n\r\n \r\n\r\n setWallPrefabSort() {\r\n const order = ['down', 'downLeft', 'downRight', 'left','right','up','upLeft','upRight'];\r\n this.Wall_Prefab.sort((a, b) => {\r\n const indexA = order.indexOf(a.name);\r\n const indexB = order.indexOf(b.name);\r\n if (indexA === -1) return 1;\r\n if (indexB === -1) return -1;\r\n return indexA - indexB;\r\n });\r\n \r\n }\r\n\r\n setParticleSort() {\r\n const order = ['top', 'bot', 'rig', 'lef'];\r\n this.particleEffects.sort((a, b) => {\r\n const indexA = order.indexOf(a.name.substr(0,3));\r\n const indexB = order.indexOf(b.name.substr(0,3));\r\n if (indexA === -1) return 1;\r\n if (indexB === -1) return -1;\r\n return indexA - indexB;\r\n });\r\n }\r\n\r\n setSort(){\r\n this.Block_Array.sort((a, b) => {\r\n // 从名称中提取数字部分\r\n const numberA = parseInt(a.name.match(/\\d+/)?.[0] || '0', 10);\r\n const numberB = parseInt(b.name.match(/\\d+/)?.[0] || '0', 10);\r\n return numberA - numberB;\r\n });\r\n }\r\n\r\n start () {\r\n\r\n }\r\n\r\n startGame(){\r\n console.log(\"进入场景之前_____________\",cc.fx.GameConfig.GM_INFO.first);\r\n cc.director.loadScene(\"HomeScene\");\r\n }\r\n\r\n returnHome(){\r\n cc.tween(this.node.getChildByName(\"Game\"))\r\n .to(0.5, {opacity: 100})\r\n .call(() => {\r\n \r\n // 预加载成功后加载场景\r\n cc.director.loadScene(\"HomeScene\", (err) => {\r\n if (err) {\r\n console.error('加载 HomeScene 场景失败:', err);\r\n } else {\r\n cc.director.loadScene(\"HomeScene\");\r\n }\r\n });\r\n })\r\n .start();\r\n\r\n cc.tween(this.node.getChildByName(\"mask\"))\r\n .to(0.5,{opacity: 255})\r\n .start();\r\n\r\n // cc.loader.releaseAll();\r\n // 预加载 HomeScene 场景\r\n\r\n \r\n }\r\n\r\n\r\n readUserData(retryCount = 0){\r\n //@ts-ignore\r\n if (typeof wx !== 'undefined' && wx !== null) { \r\n let levelInfo = cc.fx.StorageMessage.getStorage(\"level\");\r\n //旧的读取数据设置数据方法,以强联网为主\r\n if(levelInfo == undefined || levelInfo == \"\" || levelInfo == null){\r\n this.oldReadData(retryCount);\r\n }\r\n //新的读取数据设置方法,以本地为主\r\n else{\r\n this.newReadData();\r\n }\r\n console.log(\"即将读取体力值\");\r\n cc.fx.GameTool.getHealth((data)=>{\r\n console.log(\"体力值完成进入游戏\");\r\n this.load5 = true;\r\n });\r\n\r\n }\r\n else{\r\n this.load3 = true;\r\n this.load4 = true;\r\n this.load5 = true;\r\n cc.fx.GameTool.getHealth(null);\r\n }\r\n // 存储用户数据\r\n }\r\n\r\n readMusicConfig(){\r\n let audioInfo = cc.fx.StorageMessage.getStorage(\"music\");\r\n if(audioInfo == undefined || audioInfo == \"\" || audioInfo == null){\r\n audioInfo = {\r\n \"musicOpen\": true, //音乐\r\n \"effectOpen\": true, //音效\r\n \"vibrateOpen\": true, //震动\r\n }\r\n cc.fx.StorageMessage.setStorage(\"music\",audioInfo);\r\n }\r\n else{\r\n cc.fx.GameConfig.GM_INFO.musicOpen = audioInfo.musicOpen;\r\n cc.fx.GameConfig.GM_INFO.effectOpen = audioInfo.effectOpen;\r\n cc.fx.GameConfig.GM_INFO.vibrateOpen = audioInfo.vibrateOpen;\r\n }\r\n }\r\n \r\n //新用户,有本地缓存读取配置\r\n newReadData(){\r\n console.log(\"读取新信息\");\r\n let openid = cc.fx.StorageMessage.getStorage(\"openid\");\r\n if(openid == null || openid == \"\" || openid == undefined){\r\n console.log(\"没有openid\");\r\n //@ts-ignore\r\n wx.cloud.callFunction({\r\n name: 'userData',\r\n data: {\r\n action: 'read'\r\n },\r\n success: res => {\r\n console.log('读取用户数据成功', res.result)\r\n if(res.result.code == 404 && res.result.message == \"未找到用户数据\"){\r\n }\r\n else if(res.result.code == 200){\r\n if(res.result.data){\r\n cc.fx.GameConfig.GM_INFO.openid = res.result.openid;\r\n cc.fx.GameConfig.GM_INFO.username = res.result.data.username;\r\n cc.fx.GameConfig.GM_INFO.useravatar = res.result.data.useravatar;\r\n const register_time = res.result.data.register_time;\r\n MiniGameSdk.API.shushu_userSet(register_time);\r\n cc.fx.StorageMessage.setStorage(\"openid\",cc.fx.GameConfig.GM_INFO.openid);\r\n }\r\n }\r\n },\r\n fail: err => {\r\n console.error('读取用户数据失败', err)\r\n }\r\n })\r\n }\r\n else{\r\n if(openid)\r\n cc.fx.GameConfig.GM_INFO.openid = openid;\r\n }\r\n \r\n\r\n\r\n //等级信息\r\n cc.fx.GameTool.getUserLevel((data) =>{\r\n const timestamp = Date.now();\r\n let levelInfo = cc.fx.StorageMessage.getStorage(\"level\");\r\n if(data.result.code == 404 && data.result.message == \"未找到关卡数据\"){\r\n // console.log(\"没有等级信息,从用户接口拿到数据\");\r\n if(levelInfo.level){\r\n cc.fx.GameConfig.GM_INFO.level = levelInfo.level;\r\n }\r\n this.load4 = true;\r\n cc.fx.GameTool.setUserLevel((data)=>{\r\n });\r\n } \r\n else if(data.result.code == 200){\r\n // console.log(\"有等级信息,从关卡接口拿到数据\",data.result.data);\r\n //游戏前端存储 新于服务器端,以游戏前端信息为主,放服务器存储\r\n let temp = data.result.timestamp - levelInfo.timestamp;\r\n console.log(\"等级时间差:\",temp);\r\n if((data.result.timestamp - levelInfo.timestamp) < 10000){\r\n if(levelInfo.level){\r\n console.log(\"以游戏前端等级为准\",data.result.data);\r\n cc.fx.GameConfig.GM_INFO.level = levelInfo.level;\r\n // console.log(\"等级为:\",cc.fx.GameConfig.GM_INFO.level);\r\n cc.fx.GameTool.setUserLevel((data)=>{\r\n });\r\n }\r\n\r\n }\r\n //服务器端存储时间新于游戏端,以服务器端为主,往前端存储\r\n else{\r\n console.log(\"以服务器等级为准\",data.result.data);\r\n cc.fx.GameConfig.GM_INFO.level = data.result.data; \r\n levelInfo.level = cc.fx.GameConfig.GM_INFO.level;\r\n levelInfo.timestamp = timestamp;\r\n // console.log(\"1111111存储关卡数据:\",cc.fx.GameConfig.GM_INFO.level);\r\n cc.fx.StorageMessage.setStorage(\"level\",levelInfo);\r\n }\r\n this.load4 = true;\r\n }\r\n });\r\n //金币信息\r\n cc.fx.GameTool.getUserCoin((data) =>{\r\n const timestamp = Date.now();\r\n let coinInfo = cc.fx.StorageMessage.getStorage(\"coin\");\r\n if(data.result.code == 404 && data.result.message == \"未找到金币数据\"){\r\n if(coinInfo.coin)\r\n cc.fx.GameConfig.GM_INFO.coin = coinInfo.coin;\r\n console.log(\"没有金币信息,从用户接口拿到数据\",cc.fx.GameConfig.GM_INFO.coin);\r\n this.load3 = true;\r\n cc.fx.GameTool.setUserCoin((data)=>{\r\n });\r\n } \r\n else if(data.result.code == 200){\r\n // console.log(\"有金币信息,从金币接口拿到数据\",data.result.data);\r\n //游戏前端存储 新于服务器端,以游戏前端信息为主,放服务器存储\r\n let temp = data.result.timestamp - coinInfo.timestamp;\r\n console.log(\"金币时间差:\",temp);\r\n if((data.result.timestamp - coinInfo.timestamp) < 10000){\r\n console.log(\"以前端金幣为准:\",coinInfo);\r\n if(coinInfo.coin)\r\n cc.fx.GameConfig.GM_INFO.coin = coinInfo.coin;\r\n else{\r\n cc.fx.GameConfig.GM_INFO.coin = data.result.data;\r\n coinInfo.coin = cc.fx.GameConfig.GM_INFO.coin;\r\n coinInfo.timestamp = timestamp;\r\n console.log(\"11111111111\");\r\n cc.fx.StorageMessage.setStorage(\"coin\",coinInfo);\r\n }\r\n console.log(\"改变后金币:\",cc.fx.GameConfig.GM_INFO.coin);\r\n cc.fx.GameTool.setUserCoin((data)=>{\r\n });\r\n }\r\n //服务器端存储时间新于游戏端,以服务器端为主,往前端存储\r\n else{\r\n console.log(\"以服务器金幣为准:\",data.result.data);\r\n cc.fx.GameConfig.GM_INFO.coin = data.result.data; \r\n coinInfo.coin = cc.fx.GameConfig.GM_INFO.coin;\r\n coinInfo.timestamp = timestamp;\r\n console.log(\"2222222222\");\r\n cc.fx.StorageMessage.setStorage(\"coin\",coinInfo);\r\n }\r\n this.load3 = true;\r\n } \r\n });\r\n //道具信息\r\n cc.fx.GameTool.getUserProp((data) =>{\r\n const timestamp = Date.now();\r\n let propInfo = cc.fx.StorageMessage.getStorage(\"prop\");\r\n if(data.result.code == 404 && data.result.message == \"未找到道具数据\"){\r\n console.log(\"没有道具信息,从用户接口拿到数据\",propInfo);\r\n if(propInfo.freezeAmount == undefined || propInfo.hammerAmount == undefined || propInfo.magicAmount == undefined){\r\n console.log(\"2222222道具数据异常\");\r\n cc.fx.GameConfig.GM_INFO.freezeAmount = 0;\r\n cc.fx.GameConfig.GM_INFO.hammerAmount = 0;\r\n cc.fx.GameConfig.GM_INFO.magicAmoun = 0;\r\n let propInfoNew = {\r\n \"freezeAmount\":cc.fx.GameConfig.GM_INFO.freezeAmount,\r\n \"hammerAmount\":cc.fx.GameConfig.GM_INFO.hammerAmount,\r\n \"magicAmount\":cc.fx.GameConfig.GM_INFO.magicAmoun,\r\n \"timestamp\":timestamp\r\n }\r\n console.log(\"1111111上传道具信息:\",propInfoNew);\r\n cc.fx.StorageMessage.setStorage(\"prop\",propInfoNew);\r\n }\r\n else{\r\n // cc.fx.GameConfig.GM_INFO.freezeAmount = data.result.data.freeze;\r\n // cc.fx.GameConfig.GM_INFO.hammerAmount = data.result.data.hammer;\r\n // cc.fx.GameConfig.GM_INFO.magicAmount = data.result.data.magic_wand;\r\n cc.fx.GameConfig.GM_INFO.freezeAmount = propInfo.freezeAmount;\r\n cc.fx.GameConfig.GM_INFO.hammerAmount = propInfo.hammerAmount;\r\n cc.fx.GameConfig.GM_INFO.magicAmount = propInfo.magicAmount;\r\n }\r\n\r\n \r\n // cc.fx.GameConfig.GM_INFO.freezeAmount = propInfo.freezeAmount;\r\n // cc.fx.GameConfig.GM_INFO.hammerAmount = propInfo.hammerAmount;\r\n // cc.fx.GameConfig.GM_INFO.magicAmount = propInfo.magicAmount;\r\n cc.fx.GameTool.setUserProp(0,0,(data)=>{\r\n });\r\n } \r\n else if(data.result.code == 200){\r\n // console.log(\"本地时间戳\",propInfo.timestamp,\"服务器时间戳\",data.result.timestamp);\r\n if((data.result.timestamp - propInfo.timestamp) < 10000){\r\n console.log(\"以前端道具为主:\",propInfo);\r\n if(propInfo.freezeAmount == undefined || propInfo.hammerAmount == undefined || propInfo.magicAmount == undefined){\r\n console.log(\"111111道具数据异常\",data.result.data);\r\n cc.fx.GameConfig.GM_INFO.freezeAmount = data.result.data.freeze;\r\n cc.fx.GameConfig.GM_INFO.hammerAmount = data.result.data.hammer;\r\n cc.fx.GameConfig.GM_INFO.magicAmount = data.result.data.magic_wand;\r\n let propInfoNew = {\r\n \"freezeAmount\":cc.fx.GameConfig.GM_INFO.freezeAmount,\r\n \"hammerAmount\":cc.fx.GameConfig.GM_INFO.hammerAmount,\r\n \"magicAmount\":cc.fx.GameConfig.GM_INFO.magicAmount,\r\n \"timestamp\":timestamp\r\n }\r\n console.log(\"333333上传道具信息:\",propInfoNew);\r\n cc.fx.StorageMessage.setStorage(\"prop\",propInfoNew);\r\n }\r\n else{\r\n console.log(\"道具数据正常\");\r\n cc.fx.GameConfig.GM_INFO.freezeAmount = propInfo.freezeAmount;\r\n cc.fx.GameConfig.GM_INFO.hammerAmount = propInfo.hammerAmount;\r\n cc.fx.GameConfig.GM_INFO.magicAmount = propInfo.magicAmount;\r\n cc.fx.GameTool.setUserProp(0,0,(data)=>{\r\n });\r\n }\r\n }\r\n else{\r\n cc.fx.GameConfig.GM_INFO.freezeAmount = data.result.data.freeze;\r\n cc.fx.GameConfig.GM_INFO.hammerAmount = data.result.data.hammer;\r\n cc.fx.GameConfig.GM_INFO.magicAmount = data.result.data.magic_wand;\r\n let propInfoNew = {\r\n \"freezeAmount\":cc.fx.GameConfig.GM_INFO.freezeAmount,\r\n \"hammerAmount\":cc.fx.GameConfig.GM_INFO.hammerAmount,\r\n \"magicAmount\":cc.fx.GameConfig.GM_INFO.magicAmount,\r\n \"timestamp\":timestamp\r\n }\r\n console.log(\"22222222上传道具信息:\",propInfoNew,data.result);\r\n cc.fx.StorageMessage.setStorage(\"prop\",propInfoNew);\r\n }\r\n } \r\n });\r\n }\r\n //旧用户,无本地缓存读取配置\r\n oldReadData(retryCount:number){\r\n console.log(\"读取旧信息\");\r\n const MAX_RETRIES = 15;\r\n const timestamp = Date.now();\r\n // 读取用户数据\r\n //@ts-ignore\r\n wx.cloud.callFunction({\r\n name: 'userData',\r\n data: {\r\n action: 'read'\r\n },\r\n success: res => { \r\n console.log('读取用户数据成功', res.result)\r\n if(res.result.code == 404 && res.result.message == \"未找到用户数据\"){\r\n if(res.result.openid){\r\n cc.fx.GameConfig.GM_INFO.openid = res.result.openid\r\n }\r\n cc.fx.GameConfig.GM_INFO.first = true;\r\n this.load3 = true;\r\n this.load4 = true;\r\n let levelInfo = {\"level\":0,\"timestamp\":timestamp};\r\n cc.fx.StorageMessage.setStorage(\"level\",levelInfo);\r\n let coinInfo = {\"coin\":0,\"timestamp\":timestamp};\r\n console.log(\"33333333333\");\r\n cc.fx.StorageMessage.setStorage(\"coin\",coinInfo);\r\n let propInfo = {\r\n \"freezeAmount\":0,\r\n \"hammerAmount\":0,\r\n \"magicAmount\":0,\r\n \"timestamp\":timestamp,\r\n }\r\n cc.fx.StorageMessage.setStorage(\"prop\",propInfo);\r\n\r\n\r\n cc.fx.GameTool.setUserInfo((data)=>{\r\n if(data.result.code == 200){\r\n console.log(\"上传用户信息成功\",data);\r\n //@ts-ignore\r\n wx.cloud.callFunction({\r\n name: 'userData',\r\n data: {\r\n action: 'read'\r\n }, \r\n success: res => {\r\n console.log(\"上传后,读取用户信息,为上报注册时间\")\r\n if(res.result.code == 200){\r\n const time = res.result.data.register_time;\r\n MiniGameSdk.API.shushu_userSet(time);\r\n }\r\n }\r\n })\r\n }\r\n });\r\n console.log(\"服务器也没有金币信息\",cc.fx.GameConfig.GM_INFO.coin);\r\n cc.fx.GameTool.setUserCoin(cc.fx.GameConfig.GM_INFO.coin,(data)=>{\r\n \r\n });\r\n cc.fx.GameTool.setUserLevel((data)=>{\r\n });\r\n setTimeout(() => {\r\n cc.fx.GameConfig.GM_INFO.freezeAmount = 0;\r\n cc.fx.GameConfig.GM_INFO.hammerAmount = 0;\r\n cc.fx.GameConfig.GM_INFO.magicAmount = 0;\r\n cc.fx.GameTool.setUserProp(0,0,(data)=>{\r\n if(data.result.code == 200){\r\n console.log(\"上传道具信息成功\",data);\r\n }\r\n else{\r\n MiniGameSdk.API.showToast(\"网络异常,正在努力加载\");\r\n setTimeout(() => {\r\n this.oldReadData(0);\r\n }, 1000);\r\n }\r\n });\r\n }, 0);\r\n }\r\n else if(res.result.code == 200){\r\n if(res.result.data){\r\n cc.fx.GameConfig.GM_INFO.openid = res.result.openid;\r\n cc.fx.GameConfig.GM_INFO.level = res.result.data.level;\r\n cc.fx.GameConfig.GM_INFO.coin = res.result.data.coinAmount;\r\n cc.fx.GameConfig.GM_INFO.freezeAmount = res.result.data.freezeAmount;\r\n cc.fx.GameConfig.GM_INFO.hammerAmount = res.result.data.hammerAmount;\r\n cc.fx.GameConfig.GM_INFO.magicAmount = res.result.data.magicAmount;\r\n cc.fx.GameConfig.GM_INFO.username = res.result.data.username;\r\n cc.fx.GameConfig.GM_INFO.useravatar = res.result.data.useravatar;\r\n cc.fx.StorageMessage.setStorage(\"openid\",cc.fx.GameConfig.GM_INFO.openid);\r\n const register_time = res.result.data.register_time;\r\n MiniGameSdk.API.shushu_userSet(register_time);\r\n }\r\n setTimeout(() => {\r\n cc.fx.GameTool.getUserCoin((data) =>{\r\n if(data.result.code == 404 && data.result.message == \"未找到金币数据\"){\r\n \r\n let coinInfo = {\"coin\":0,\"timestamp\":timestamp};\r\n cc.fx.GameConfig.GM_INFO.coin = 0;\r\n cc.fx.StorageMessage.setStorage(\"coin\",coinInfo);\r\n console.log(\"没有金币信息,从用户接口拿到数据\",cc.fx.GameConfig.GM_INFO.coin);\r\n cc.fx.GameTool.setUserCoin((data)=>{\r\n // console.log(\"上传\",data);\r\n this.load3 = true;\r\n });\r\n }\r\n else if(data.result.code == 200){\r\n // console.log(\"有金币信息,从金币接口拿到数据\",data.result.data);\r\n cc.fx.GameConfig.GM_INFO.coin = data.result.data;\r\n let coinInfo = {\"coin\":cc.fx.GameConfig.GM_INFO.coin,\"timestamp\":timestamp};\r\n console.log(\"存储金币信息:\",cc.fx.GameConfig.GM_INFO.coin);\r\n console.log(\"4444444444\");\r\n cc.fx.StorageMessage.setStorage(\"coin\",coinInfo);\r\n this.load3 = true;\r\n }\r\n })\r\n }, 500);\r\n\r\n cc.fx.GameTool.getUserLevel((data) =>{\r\n if(data.result.code == 404 && data.result.message == \"未找到关卡数据\"){\r\n console.log(\"没有等级信息,从用户接口拿到数据\");\r\n let levelInfo = {\"level\":0,\"timestamp\":timestamp};\r\n // console.log(\"333333存储关卡数据:\",levelInfo);\r\n cc.fx.GameConfig.GM_INFO.level = 0;\r\n cc.fx.StorageMessage.setStorage(\"level\",levelInfo);\r\n cc.fx.GameTool.setUserLevel((data)=>{\r\n console.log(\"拿到的数据\",data);\r\n this.load4 = true;\r\n });\r\n } \r\n else if(data.result.code == 200){\r\n console.log(\"有等级信息,从关卡接口拿到数据\",data.result.data);\r\n cc.fx.GameConfig.GM_INFO.level = data.result.data; \r\n let levelInfo = {\"level\":cc.fx.GameConfig.GM_INFO.level,\"timestamp\":timestamp};\r\n // console.log(\"444444存储关卡信息:\",levelInfo);\r\n cc.fx.StorageMessage.setStorage(\"level\",levelInfo);\r\n this.load4 = true;\r\n }\r\n })\r\n setTimeout(() => {\r\n cc.fx.GameTool.getUserProp((data) =>{\r\n if(data.result.code == 404 && data.result.message == \"未找到道具数据\"){\r\n console.log(\"没有道具信息,从用户接口拿到数据\");\r\n cc.fx.GameConfig.GM_INFO.freezeAmount = 0;\r\n cc.fx.GameConfig.GM_INFO.hammerAmount = 0;\r\n cc.fx.GameConfig.GM_INFO.magicAmount = 0;\r\n let propInfo = {\r\n \"freezeAmount\":0,\r\n \"hammerAmount\":0,\r\n \"magicAmount\":0,\r\n \"timestamp\":timestamp,\r\n }\r\n console.log(\"上传道具信息:\",propInfo);\r\n cc.fx.StorageMessage.setStorage(\"prop\",propInfo);\r\n cc.fx.GameTool.setUserProp(0,0,(data)=>{\r\n });\r\n } \r\n else if(data.result.code == 200){\r\n console.log(\"有道具信息,从道具接口拿到数据\",data.result.data);\r\n cc.fx.GameConfig.GM_INFO.freezeAmount = data.result.data.freeze || 0;\r\n cc.fx.GameConfig.GM_INFO.hammerAmount = data.result.data.hammer || 0;\r\n cc.fx.GameConfig.GM_INFO.magicAmount = data.result.data.magic_wand || 0;\r\n let propInfo = {\r\n \"freezeAmount\":cc.fx.GameConfig.GM_INFO.freezeAmount,\r\n \"hammerAmount\":cc.fx.GameConfig.GM_INFO.hammerAmount,\r\n \"magicAmount\":cc.fx.GameConfig.GM_INFO.magicAmount,\r\n \"timestamp\":timestamp,\r\n }\r\n console.log(\"上传道具信息:\",propInfo);\r\n cc.fx.StorageMessage.setStorage(\"prop\",propInfo);\r\n\r\n }\r\n })\r\n }, 0);\r\n \r\n }\r\n\r\n },\r\n fail: err => {\r\n console.error('读取用户数据失败', err)\r\n if (retryCount < MAX_RETRIES) {\r\n console.error(`读取用户数据失败,第 ${retryCount + 1} 次重试,错误信息:`, err);\r\n // 延迟 2 秒后重试\r\n setTimeout(() => {\r\n this.readUserData(retryCount + 1);\r\n }, 2000);\r\n } else {\r\n console.error('读取用户数据失败,达到最大重试次数,退出游戏', err);\r\n // 退出游戏\r\n cc.game.end();\r\n }\r\n }\r\n })\r\n }\r\n\r\n setUserData(){\r\n cc.fx.GameConfig.GameTool((data)=>{\r\n console.log(\"上传\",data);\r\n })\r\n }\r\n\r\n startTimeCutDown(){\r\n this.scheduleCallback = function(){\r\n if(this.timeNumber <= 0){\r\n this.stopTimeCutDown();\r\n }\r\n else{\r\n this.timeNumber -= 1;\r\n }\r\n }.bind(this);\r\n this.schedule(this.scheduleCallback, 1);\r\n }\r\n\r\n stopTimeCutDown(){\r\n if(this.scheduleCallback){\r\n this.unschedule(this.scheduleCallback);\r\n }\r\n }\r\n\r\n update (dt) {\r\n if(this.load1 && this.load2 && this.load3 && this.load4 && this.load5 && this.timeNumber <= 0){\r\n this.load1 = this.load2 = false;\r\n MiniGameSdk.API.shushu_Init();\r\n this.startGame();\r\n }\r\n }\r\n}\r\n"]} -======= -{"version":3,"sources":["assets\\Script\\GameManager.ts"],"names":[],"mappings":"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","file":"","sourceRoot":"/","sourcesContent":["// Learn TypeScript:\r\n// - https://docs.cocos.com/creator/manual/en/scripting/typescript.html\r\n// Learn Attribute:\r\n// - https://docs.cocos.com/creator/manual/en/scripting/reference/attributes.html\r\n// Learn life-cycle callbacks:\r\n// - https://docs.cocos.com/creator/manual/en/scripting/life-cycle-callbacks.html\r\n\r\nimport { MiniGameManager } from \"./Sdk/MiniGameManager\";\r\nimport { MiniGameSdk } from \"./Sdk/MiniGameSdk\";\r\n\r\nconst {ccclass, property} = cc._decorator;\r\n\r\n@ccclass\r\nexport default class GameManager extends cc.Component {\r\n\r\n @property(cc.Label)\r\n label: cc.Label = null;\r\n\r\n @property\r\n text: string = 'hello';\r\n static _instance : GameManager = null;\r\n\r\n @property({type: [cc.Prefab], tooltip:\"方块数组\"})\r\n Block_Array : Array = [];\r\n\r\n @property({type: [cc.Prefab], tooltip:\"墙壁数组\"})\r\n Wall_Prefab : Array = [];\r\n\r\n @property({type: [cc.SpriteAtlas], tooltip:\"方块颜色\"})\r\n Block_Color : Array = [];\r\n\r\n particleEffects: cc.ParticleAsset[];\r\n // @property({type: [cc.ParticleSystem], tooltip:\"粒子数组\"})\r\n // particleEffects : Array = [];\r\n\r\n load1 :boolean = false;\r\n load2 :boolean = false;\r\n load3 :boolean = false;\r\n load4 :boolean = false;\r\n load5 :boolean = false;\r\n scheduleCallback: any;\r\n timeNumber: number;\r\n\r\n \r\n // LIFE-CYCLE CALLBACKS:\r\n\r\n onLoad () {\r\n\r\n window.initMgr();\r\n this.timeNumber = 3;\r\n this.startTimeCutDown();\r\n cc.fx.GameConfig.init(true);\r\n cc.fx.GameConfig.GM_INFO.gameState = false;\r\n this.readMusicConfig();\r\n console.log(\"音乐开关\",cc.fx.GameConfig.GM_INFO.musicOpen);\r\n cc.fx.AudioManager._instance.playMusicGame();\r\n\r\n this.load1 = this.load2 = this.load3 = this.load4 = this.load5 =false;\r\n setTimeout(() => {\r\n this.readUserData();\r\n }, 200);\r\n \r\n\r\n if (GameManager._instance == null) {\r\n GameManager._instance = this;\r\n cc.game.addPersistRootNode(this.node);\r\n }\r\n else {\r\n return;\r\n }\r\n\r\n const path = 'prefab/block';\r\n const path2 = 'prefab/wall';\r\n cc.resources.loadDir(path, cc.Prefab, (err, assets: cc.Prefab[]) => {\r\n if (err) {\r\n \r\n console.error('动态加载 Prefab 失败:', err);\r\n cc.director.loadScene(\"LoadScene\");\r\n return;\r\n }\r\n // 将加载的 Prefab 赋值给 Block_Array\r\n this.Block_Array = assets;\r\n console.log('方块加载成功,共加载了', this.Block_Array.length, '个方块');\r\n this.setSort();\r\n this.load1 = true;\r\n });\r\n\r\n cc.resources.loadDir(path2, cc.Prefab, (err, assets: cc.Prefab[]) => {\r\n if (err) {\r\n console.error('动态加载 Prefab 失败:', err);\r\n cc.director.loadScene(\"LoadScene\");\r\n return;\r\n }\r\n // 将加载的 Prefab 赋值给 Block_Array\r\n this.Wall_Prefab = assets;\r\n this.load2 = true;\r\n console.log('墙加载成功,共加载了', this.Wall_Prefab.length, '个墙');\r\n this.setWallPrefabSort();\r\n });\r\n\r\n // debugger;\r\n\r\n // setTimeout(() => {\r\n // cc.director.preloadScene(\"HomeScene\", (err) => {\r\n // if (err) {\r\n // console.error('预加载 HomeScene 场景失败:', err);\r\n // return;\r\n // }\r\n // });\r\n // }, 1000);\r\n\r\n // 检测微信小游戏切到后台\r\n if (cc.sys.platform === cc.sys.WECHAT_GAME) {\r\n //@ts-ignore\r\n wx.onHide(() => {\r\n this.onHide();\r\n });\r\n // 检测微信小游戏回到前台\r\n //@ts-ignore\r\n wx.onShow(() => {\r\n this.onShow();\r\n });\r\n }\r\n\r\n }\r\n\r\n onHide () {\r\n cc.audioEngine.stopMusic();\r\n cc.game.pause();\r\n }\r\n\r\n onShow () {\r\n cc.audioEngine.resumeMusic();\r\n cc.game.resume();\r\n }\r\n\r\n loadParticleEffects() {\r\n }\r\n\r\n\r\n \r\n\r\n setWallPrefabSort() {\r\n const order = ['down', 'downLeft', 'downRight', 'left','right','up','upLeft','upRight'];\r\n this.Wall_Prefab.sort((a, b) => {\r\n const indexA = order.indexOf(a.name);\r\n const indexB = order.indexOf(b.name);\r\n if (indexA === -1) return 1;\r\n if (indexB === -1) return -1;\r\n return indexA - indexB;\r\n });\r\n \r\n }\r\n\r\n setParticleSort() {\r\n const order = ['top', 'bot', 'rig', 'lef'];\r\n this.particleEffects.sort((a, b) => {\r\n const indexA = order.indexOf(a.name.substr(0,3));\r\n const indexB = order.indexOf(b.name.substr(0,3));\r\n if (indexA === -1) return 1;\r\n if (indexB === -1) return -1;\r\n return indexA - indexB;\r\n });\r\n }\r\n\r\n setSort(){\r\n this.Block_Array.sort((a, b) => {\r\n // 从名称中提取数字部分\r\n const numberA = parseInt(a.name.match(/\\d+/)?.[0] || '0', 10);\r\n const numberB = parseInt(b.name.match(/\\d+/)?.[0] || '0', 10);\r\n return numberA - numberB;\r\n });\r\n }\r\n\r\n start () {\r\n\r\n }\r\n\r\n startGame(){\r\n console.log(\"进入场景之前_____________\",cc.fx.GameConfig.GM_INFO.first);\r\n cc.director.loadScene(\"HomeScene\");\r\n }\r\n\r\n returnHome(){\r\n cc.tween(this.node.getChildByName(\"Game\"))\r\n .to(0.5, {opacity: 100})\r\n .call(() => {\r\n \r\n // 预加载成功后加载场景\r\n cc.director.loadScene(\"HomeScene\", (err) => {\r\n if (err) {\r\n console.error('加载 HomeScene 场景失败:', err);\r\n } else {\r\n cc.director.loadScene(\"HomeScene\");\r\n }\r\n });\r\n })\r\n .start();\r\n\r\n cc.tween(this.node.getChildByName(\"mask\"))\r\n .to(0.5,{opacity: 255})\r\n .start();\r\n\r\n // cc.loader.releaseAll();\r\n // 预加载 HomeScene 场景\r\n\r\n \r\n }\r\n\r\n\r\n readUserData(retryCount = 0){\r\n //@ts-ignore\r\n if (typeof wx !== 'undefined' && wx !== null) { \r\n let levelInfo = cc.fx.StorageMessage.getStorage(\"level\");\r\n //旧的读取数据设置数据方法,以强联网为主\r\n if(levelInfo == undefined || levelInfo == \"\" || levelInfo == null){\r\n this.oldReadData(retryCount);\r\n }\r\n //新的读取数据设置方法,以本地为主\r\n else{\r\n this.newReadData();\r\n }\r\n console.log(\"即将读取体力值\");\r\n cc.fx.GameTool.getHealth((data)=>{\r\n console.log(\"体力值完成进入游戏\");\r\n this.load5 = true;\r\n });\r\n\r\n }\r\n else{\r\n this.load3 = true;\r\n this.load4 = true;\r\n this.load5 = true;\r\n cc.fx.GameTool.getHealth(null);\r\n }\r\n // 存储用户数据\r\n }\r\n\r\n readMusicConfig(){\r\n let audioInfo = cc.fx.StorageMessage.getStorage(\"music\");\r\n if(audioInfo == undefined || audioInfo == \"\" || audioInfo == null){\r\n audioInfo = {\r\n \"musicOpen\": true, //音乐\r\n \"effectOpen\": true, //音效\r\n \"vibrateOpen\": true, //震动\r\n }\r\n cc.fx.StorageMessage.setStorage(\"music\",audioInfo);\r\n }\r\n else{\r\n cc.fx.GameConfig.GM_INFO.musicOpen = audioInfo.musicOpen;\r\n cc.fx.GameConfig.GM_INFO.effectOpen = audioInfo.effectOpen;\r\n cc.fx.GameConfig.GM_INFO.vibrateOpen = audioInfo.vibrateOpen;\r\n }\r\n }\r\n \r\n //新用户,有本地缓存读取配置\r\n newReadData(){\r\n console.log(\"读取新信息\");\r\n let openid = cc.fx.StorageMessage.getStorage(\"openid\");\r\n if(openid == null || openid == \"\" || openid == undefined){\r\n console.log(\"没有openid\");\r\n //@ts-ignore\r\n wx.cloud.callFunction({\r\n name: 'userData',\r\n data: {\r\n action: 'read'\r\n },\r\n success: res => {\r\n console.log('读取用户数据成功', res.result)\r\n if(res.result.code == 404 && res.result.message == \"未找到用户数据\"){\r\n }\r\n else if(res.result.code == 200){\r\n if(res.result.data){\r\n cc.fx.GameConfig.GM_INFO.openid = res.result.openid;\r\n cc.fx.GameConfig.GM_INFO.username = res.result.data.username;\r\n cc.fx.GameConfig.GM_INFO.useravatar = res.result.data.useravatar;\r\n const register_time = res.result.data.register_time;\r\n MiniGameSdk.API.shushu_userSet(register_time);\r\n cc.fx.StorageMessage.setStorage(\"openid\",cc.fx.GameConfig.GM_INFO.openid);\r\n }\r\n }\r\n },\r\n fail: err => {\r\n console.error('读取用户数据失败', err)\r\n }\r\n })\r\n }\r\n else{\r\n if(openid)\r\n cc.fx.GameConfig.GM_INFO.openid = openid;\r\n }\r\n \r\n\r\n\r\n //等级信息\r\n cc.fx.GameTool.getUserLevel((data) =>{\r\n const timestamp = Date.now();\r\n let levelInfo = cc.fx.StorageMessage.getStorage(\"level\");\r\n if(data.result.code == 404 && data.result.message == \"未找到关卡数据\"){\r\n // console.log(\"没有等级信息,从用户接口拿到数据\");\r\n if(levelInfo.level){\r\n cc.fx.GameConfig.GM_INFO.level = levelInfo.level;\r\n }\r\n this.load4 = true;\r\n cc.fx.GameTool.setUserLevel((data)=>{\r\n });\r\n } \r\n else if(data.result.code == 200){\r\n // console.log(\"有等级信息,从关卡接口拿到数据\",data.result.data);\r\n //游戏前端存储 新于服务器端,以游戏前端信息为主,放服务器存储\r\n let temp = data.result.timestamp - levelInfo.timestamp;\r\n console.log(\"等级时间差:\",temp);\r\n if((data.result.timestamp - levelInfo.timestamp) < 10000){\r\n if(levelInfo.level){\r\n console.log(\"以游戏前端等级为准\",data.result.data);\r\n cc.fx.GameConfig.GM_INFO.level = levelInfo.level;\r\n // console.log(\"等级为:\",cc.fx.GameConfig.GM_INFO.level);\r\n cc.fx.GameTool.setUserLevel((data)=>{\r\n });\r\n }\r\n\r\n }\r\n //服务器端存储时间新于游戏端,以服务器端为主,往前端存储\r\n else{\r\n console.log(\"以服务器等级为准\",data.result.data);\r\n cc.fx.GameConfig.GM_INFO.level = data.result.data; \r\n levelInfo.level = cc.fx.GameConfig.GM_INFO.level;\r\n levelInfo.timestamp = timestamp;\r\n // console.log(\"1111111存储关卡数据:\",cc.fx.GameConfig.GM_INFO.level);\r\n cc.fx.StorageMessage.setStorage(\"level\",levelInfo);\r\n }\r\n this.load4 = true;\r\n }\r\n });\r\n //金币信息\r\n cc.fx.GameTool.getUserCoin((data) =>{\r\n const timestamp = Date.now();\r\n let coinInfo = cc.fx.StorageMessage.getStorage(\"coin\");\r\n if(data.result.code == 404 && data.result.message == \"未找到金币数据\"){\r\n if(coinInfo.coin)\r\n cc.fx.GameConfig.GM_INFO.coin = coinInfo.coin;\r\n console.log(\"没有金币信息,从用户接口拿到数据\",cc.fx.GameConfig.GM_INFO.coin);\r\n this.load3 = true;\r\n cc.fx.GameTool.setUserCoin((data)=>{\r\n });\r\n } \r\n else if(data.result.code == 200){\r\n // console.log(\"有金币信息,从金币接口拿到数据\",data.result.data);\r\n //游戏前端存储 新于服务器端,以游戏前端信息为主,放服务器存储\r\n let temp = data.result.timestamp - coinInfo.timestamp;\r\n console.log(\"金币时间差:\",temp);\r\n if((data.result.timestamp - coinInfo.timestamp) < 10000){\r\n console.log(\"以前端金幣为准:\",coinInfo);\r\n if(coinInfo.coin)\r\n cc.fx.GameConfig.GM_INFO.coin = coinInfo.coin;\r\n else{\r\n cc.fx.GameConfig.GM_INFO.coin = data.result.data;\r\n coinInfo.coin = cc.fx.GameConfig.GM_INFO.coin;\r\n coinInfo.timestamp = timestamp;\r\n console.log(\"11111111111\");\r\n cc.fx.StorageMessage.setStorage(\"coin\",coinInfo);\r\n }\r\n console.log(\"改变后金币:\",cc.fx.GameConfig.GM_INFO.coin);\r\n cc.fx.GameTool.setUserCoin((data)=>{\r\n });\r\n }\r\n //服务器端存储时间新于游戏端,以服务器端为主,往前端存储\r\n else{\r\n console.log(\"以服务器金幣为准:\",data.result.data);\r\n cc.fx.GameConfig.GM_INFO.coin = data.result.data; \r\n coinInfo.coin = cc.fx.GameConfig.GM_INFO.coin;\r\n coinInfo.timestamp = timestamp;\r\n console.log(\"2222222222\");\r\n cc.fx.StorageMessage.setStorage(\"coin\",coinInfo);\r\n }\r\n this.load3 = true;\r\n } \r\n });\r\n //道具信息\r\n cc.fx.GameTool.getUserProp((data) =>{\r\n const timestamp = Date.now();\r\n let propInfo = cc.fx.StorageMessage.getStorage(\"prop\");\r\n if(data.result.code == 404 && data.result.message == \"未找到道具数据\"){\r\n console.log(\"没有道具信息,从用户接口拿到数据\",propInfo);\r\n if(propInfo.freezeAmount == undefined || propInfo.hammerAmount == undefined || propInfo.magicAmount == undefined){\r\n console.log(\"2222222道具数据异常\");\r\n cc.fx.GameConfig.GM_INFO.freezeAmount = 0;\r\n cc.fx.GameConfig.GM_INFO.hammerAmount = 0;\r\n cc.fx.GameConfig.GM_INFO.magicAmoun = 0;\r\n let propInfoNew = {\r\n \"freezeAmount\":cc.fx.GameConfig.GM_INFO.freezeAmount,\r\n \"hammerAmount\":cc.fx.GameConfig.GM_INFO.hammerAmount,\r\n \"magicAmount\":cc.fx.GameConfig.GM_INFO.magicAmoun,\r\n \"timestamp\":timestamp\r\n }\r\n console.log(\"1111111上传道具信息:\",propInfoNew);\r\n cc.fx.StorageMessage.setStorage(\"prop\",propInfoNew);\r\n }\r\n else{\r\n cc.fx.GameConfig.GM_INFO.freezeAmount = data.result.data.freeze;\r\n cc.fx.GameConfig.GM_INFO.hammerAmount = data.result.data.hammer;\r\n cc.fx.GameConfig.GM_INFO.magicAmount = data.result.data.magic_wand;\r\n }\r\n\r\n \r\n cc.fx.GameConfig.GM_INFO.freezeAmount = propInfo.freezeAmount;\r\n cc.fx.GameConfig.GM_INFO.hammerAmount = propInfo.hammerAmount;\r\n cc.fx.GameConfig.GM_INFO.magicAmount = propInfo.magicAmount;\r\n cc.fx.GameTool.setUserProp(0,0,(data)=>{\r\n });\r\n } \r\n else if(data.result.code == 200){\r\n // console.log(\"本地时间戳\",propInfo.timestamp,\"服务器时间戳\",data.result.timestamp);\r\n if((data.result.timestamp - propInfo.timestamp) < 10000){\r\n console.log(\"以前端道具为主:\",propInfo);\r\n if(propInfo.freezeAmount == undefined || propInfo.hammerAmount == undefined || propInfo.magicAmount == undefined){\r\n console.log(\"111111道具数据异常\",data.result.data);\r\n cc.fx.GameConfig.GM_INFO.freezeAmount = data.result.data.freeze;\r\n cc.fx.GameConfig.GM_INFO.hammerAmount = data.result.data.hammer;\r\n cc.fx.GameConfig.GM_INFO.magicAmount = data.result.data.magic_wand;\r\n let propInfoNew = {\r\n \"freezeAmount\":cc.fx.GameConfig.GM_INFO.freezeAmount,\r\n \"hammerAmount\":cc.fx.GameConfig.GM_INFO.hammerAmount,\r\n \"magicAmount\":cc.fx.GameConfig.GM_INFO.magicAmount,\r\n \"timestamp\":timestamp\r\n }\r\n console.log(\"333333上传道具信息:\",propInfoNew);\r\n cc.fx.StorageMessage.setStorage(\"prop\",propInfoNew);\r\n }\r\n else{\r\n console.log(\"道具数据正常\");\r\n cc.fx.GameConfig.GM_INFO.freezeAmount = propInfo.freezeAmount;\r\n cc.fx.GameConfig.GM_INFO.hammerAmount = propInfo.hammerAmount;\r\n cc.fx.GameConfig.GM_INFO.magicAmount = propInfo.magicAmount;\r\n cc.fx.GameTool.setUserProp(0,0,(data)=>{\r\n });\r\n }\r\n }\r\n else{\r\n cc.fx.GameConfig.GM_INFO.freezeAmount = data.result.data.freeze;\r\n cc.fx.GameConfig.GM_INFO.hammerAmount = data.result.data.hammer;\r\n cc.fx.GameConfig.GM_INFO.magicAmount = data.result.data.magic_wand;\r\n let propInfoNew = {\r\n \"freezeAmount\":cc.fx.GameConfig.GM_INFO.freezeAmount,\r\n \"hammerAmount\":cc.fx.GameConfig.GM_INFO.hammerAmount,\r\n \"magicAmount\":cc.fx.GameConfig.GM_INFO.magicAmount,\r\n \"timestamp\":timestamp\r\n }\r\n console.log(\"22222222上传道具信息:\",propInfoNew,data.result);\r\n cc.fx.StorageMessage.setStorage(\"prop\",propInfoNew);\r\n }\r\n } \r\n });\r\n }\r\n //旧用户,无本地缓存读取配置\r\n oldReadData(retryCount:number){\r\n console.log(\"读取旧信息\");\r\n const MAX_RETRIES = 15;\r\n const timestamp = Date.now();\r\n // 读取用户数据\r\n //@ts-ignore\r\n wx.cloud.callFunction({\r\n name: 'userData',\r\n data: {\r\n action: 'read'\r\n },\r\n success: res => { \r\n console.log('读取用户数据成功', res.result)\r\n if(res.result.code == 404 && res.result.message == \"未找到用户数据\"){\r\n if(res.result.openid){\r\n cc.fx.GameConfig.GM_INFO.openid = res.result.openid\r\n }\r\n cc.fx.GameConfig.GM_INFO.first = true;\r\n this.load3 = true;\r\n this.load4 = true;\r\n let levelInfo = {\"level\":0,\"timestamp\":timestamp};\r\n cc.fx.StorageMessage.setStorage(\"level\",levelInfo);\r\n let coinInfo = {\"coin\":0,\"timestamp\":timestamp};\r\n console.log(\"33333333333\");\r\n cc.fx.StorageMessage.setStorage(\"coin\",coinInfo);\r\n let propInfo = {\r\n \"freezeAmount\":0,\r\n \"hammerAmount\":0,\r\n \"magicAmount\":0,\r\n \"timestamp\":timestamp,\r\n }\r\n cc.fx.StorageMessage.setStorage(\"prop\",propInfo);\r\n\r\n\r\n cc.fx.GameTool.setUserInfo((data)=>{\r\n if(data.result.code == 200){\r\n console.log(\"上传用户信息成功\",data);\r\n //@ts-ignore\r\n wx.cloud.callFunction({\r\n name: 'userData',\r\n data: {\r\n action: 'read'\r\n }, \r\n success: res => {\r\n console.log(\"上传后,读取用户信息,为上报注册时间\")\r\n if(res.result.code == 200){\r\n const time = res.result.data.register_time;\r\n MiniGameSdk.API.shushu_userSet(time);\r\n }\r\n }\r\n })\r\n }\r\n });\r\n console.log(\"服务器也没有金币信息\",cc.fx.GameConfig.GM_INFO.coin);\r\n cc.fx.GameTool.setUserCoin(cc.fx.GameConfig.GM_INFO.coin,(data)=>{\r\n \r\n });\r\n cc.fx.GameTool.setUserLevel((data)=>{\r\n });\r\n setTimeout(() => {\r\n cc.fx.GameConfig.GM_INFO.freezeAmount = 0;\r\n cc.fx.GameConfig.GM_INFO.hammerAmount = 0;\r\n cc.fx.GameConfig.GM_INFO.magicAmount = 0;\r\n cc.fx.GameTool.setUserProp(0,0,(data)=>{\r\n if(data.result.code == 200){\r\n console.log(\"上传道具信息成功\",data);\r\n }\r\n else{\r\n MiniGameSdk.API.showToast(\"网络异常,正在努力加载\");\r\n setTimeout(() => {\r\n this.oldReadData(0);\r\n }, 1000);\r\n }\r\n });\r\n }, 0);\r\n }\r\n else if(res.result.code == 200){\r\n if(res.result.data){\r\n cc.fx.GameConfig.GM_INFO.openid = res.result.openid;\r\n cc.fx.GameConfig.GM_INFO.level = res.result.data.level;\r\n cc.fx.GameConfig.GM_INFO.coin = res.result.data.coinAmount;\r\n cc.fx.GameConfig.GM_INFO.freezeAmount = res.result.data.freezeAmount;\r\n cc.fx.GameConfig.GM_INFO.hammerAmount = res.result.data.hammerAmount;\r\n cc.fx.GameConfig.GM_INFO.magicAmount = res.result.data.magicAmount;\r\n cc.fx.GameConfig.GM_INFO.username = res.result.data.username;\r\n cc.fx.GameConfig.GM_INFO.useravatar = res.result.data.useravatar;\r\n cc.fx.StorageMessage.setStorage(\"openid\",cc.fx.GameConfig.GM_INFO.openid);\r\n const register_time = res.result.data.register_time;\r\n MiniGameSdk.API.shushu_userSet(register_time);\r\n }\r\n setTimeout(() => {\r\n cc.fx.GameTool.getUserCoin((data) =>{\r\n if(data.result.code == 404 && data.result.message == \"未找到金币数据\"){\r\n \r\n let coinInfo = {\"coin\":0,\"timestamp\":timestamp};\r\n cc.fx.GameConfig.GM_INFO.coin = 0;\r\n cc.fx.StorageMessage.setStorage(\"coin\",coinInfo);\r\n console.log(\"没有金币信息,从用户接口拿到数据\",cc.fx.GameConfig.GM_INFO.coin);\r\n cc.fx.GameTool.setUserCoin((data)=>{\r\n // console.log(\"上传\",data);\r\n this.load3 = true;\r\n });\r\n }\r\n else if(data.result.code == 200){\r\n // console.log(\"有金币信息,从金币接口拿到数据\",data.result.data);\r\n cc.fx.GameConfig.GM_INFO.coin = data.result.data;\r\n let coinInfo = {\"coin\":cc.fx.GameConfig.GM_INFO.coin,\"timestamp\":timestamp};\r\n console.log(\"存储金币信息:\",cc.fx.GameConfig.GM_INFO.coin);\r\n console.log(\"4444444444\");\r\n cc.fx.StorageMessage.setStorage(\"coin\",coinInfo);\r\n this.load3 = true;\r\n }\r\n })\r\n }, 500);\r\n\r\n cc.fx.GameTool.getUserLevel((data) =>{\r\n if(data.result.code == 404 && data.result.message == \"未找到关卡数据\"){\r\n console.log(\"没有等级信息,从用户接口拿到数据\");\r\n let levelInfo = {\"level\":0,\"timestamp\":timestamp};\r\n // console.log(\"333333存储关卡数据:\",levelInfo);\r\n cc.fx.GameConfig.GM_INFO.level = 0;\r\n cc.fx.StorageMessage.setStorage(\"level\",levelInfo);\r\n cc.fx.GameTool.setUserLevel((data)=>{\r\n console.log(\"拿到的数据\",data);\r\n this.load4 = true;\r\n });\r\n } \r\n else if(data.result.code == 200){\r\n console.log(\"有等级信息,从关卡接口拿到数据\",data.result.data);\r\n cc.fx.GameConfig.GM_INFO.level = data.result.data; \r\n let levelInfo = {\"level\":cc.fx.GameConfig.GM_INFO.level,\"timestamp\":timestamp};\r\n // console.log(\"444444存储关卡信息:\",levelInfo);\r\n cc.fx.StorageMessage.setStorage(\"level\",levelInfo);\r\n this.load4 = true;\r\n }\r\n })\r\n setTimeout(() => {\r\n cc.fx.GameTool.getUserProp((data) =>{\r\n if(data.result.code == 404 && data.result.message == \"未找到道具数据\"){\r\n console.log(\"没有道具信息,从用户接口拿到数据\");\r\n cc.fx.GameConfig.GM_INFO.freezeAmount = 0;\r\n cc.fx.GameConfig.GM_INFO.hammerAmount = 0;\r\n cc.fx.GameConfig.GM_INFO.magicAmount = 0;\r\n let propInfo = {\r\n \"freezeAmount\":0,\r\n \"hammerAmount\":0,\r\n \"magicAmount\":0,\r\n \"timestamp\":timestamp,\r\n }\r\n console.log(\"上传道具信息:\",propInfo);\r\n cc.fx.StorageMessage.setStorage(\"prop\",propInfo);\r\n cc.fx.GameTool.setUserProp(0,0,(data)=>{\r\n });\r\n } \r\n else if(data.result.code == 200){\r\n console.log(\"有道具信息,从道具接口拿到数据\",data.result.data);\r\n cc.fx.GameConfig.GM_INFO.freezeAmount = data.result.data.freeze || 0;\r\n cc.fx.GameConfig.GM_INFO.hammerAmount = data.result.data.hammer || 0;\r\n cc.fx.GameConfig.GM_INFO.magicAmount = data.result.data.magic_wand || 0;\r\n let propInfo = {\r\n \"freezeAmount\":cc.fx.GameConfig.GM_INFO.freezeAmount,\r\n \"hammerAmount\":cc.fx.GameConfig.GM_INFO.hammerAmount,\r\n \"magicAmount\":cc.fx.GameConfig.GM_INFO.magicAmount,\r\n \"timestamp\":timestamp,\r\n }\r\n console.log(\"上传道具信息:\",propInfo);\r\n cc.fx.StorageMessage.setStorage(\"prop\",propInfo);\r\n\r\n }\r\n })\r\n }, 0);\r\n \r\n }\r\n\r\n },\r\n fail: err => {\r\n console.error('读取用户数据失败', err)\r\n if (retryCount < MAX_RETRIES) {\r\n console.error(`读取用户数据失败,第 ${retryCount + 1} 次重试,错误信息:`, err);\r\n // 延迟 2 秒后重试\r\n setTimeout(() => {\r\n this.readUserData(retryCount + 1);\r\n }, 2000);\r\n } else {\r\n console.error('读取用户数据失败,达到最大重试次数,退出游戏', err);\r\n // 退出游戏\r\n cc.game.end();\r\n }\r\n }\r\n })\r\n }\r\n\r\n setUserData(){\r\n cc.fx.GameConfig.GameTool((data)=>{\r\n console.log(\"上传\",data);\r\n })\r\n }\r\n\r\n startTimeCutDown(){\r\n this.scheduleCallback = function(){\r\n if(this.timeNumber <= 0){\r\n this.stopTimeCutDown();\r\n }\r\n else{\r\n this.timeNumber -= 1;\r\n }\r\n }.bind(this);\r\n this.schedule(this.scheduleCallback, 1);\r\n }\r\n\r\n stopTimeCutDown(){\r\n if(this.scheduleCallback){\r\n this.unschedule(this.scheduleCallback);\r\n }\r\n }\r\n\r\n update (dt) {\r\n if(this.load1 && this.load2 && this.load3 && this.load4 && this.load5 && this.timeNumber <= 0){\r\n this.load1 = this.load2 = false;\r\n MiniGameSdk.API.shushu_Init();\r\n this.startGame();\r\n }\r\n }\r\n}\r\n"]} ->>>>>>> 0a31a7a5abc2c505bf743aa596e1c765a0405152 +{"version":3,"sources":["assets\\Script\\GameManager.ts"],"names":[],"mappings":"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","file":"","sourceRoot":"/","sourcesContent":["// Learn TypeScript:\r\n// - https://docs.cocos.com/creator/manual/en/scripting/typescript.html\r\n// Learn Attribute:\r\n// - https://docs.cocos.com/creator/manual/en/scripting/reference/attributes.html\r\n// Learn life-cycle callbacks:\r\n// - https://docs.cocos.com/creator/manual/en/scripting/life-cycle-callbacks.html\r\n\r\nimport { MiniGameManager } from \"./Sdk/MiniGameManager\";\r\nimport { MiniGameSdk } from \"./Sdk/MiniGameSdk\";\r\n\r\nconst { ccclass, property } = cc._decorator;\r\n\r\n@ccclass\r\nexport default class GameManager extends cc.Component {\r\n\r\n @property(cc.Label)\r\n label: cc.Label = null;\r\n\r\n @property\r\n text: string = 'hello';\r\n static _instance: GameManager = null;\r\n\r\n @property({ type: [cc.Prefab], tooltip: \"方块数组\" })\r\n Block_Array: Array = [];\r\n\r\n @property({ type: [cc.Prefab], tooltip: \"墙壁数组\" })\r\n Wall_Prefab: Array = [];\r\n\r\n @property({ type: [cc.SpriteAtlas], tooltip: \"方块颜色\" })\r\n Block_Color: Array = [];\r\n\r\n particleEffects: cc.ParticleAsset[];\r\n // @property({type: [cc.ParticleSystem], tooltip:\"粒子数组\"})\r\n // particleEffects : Array = [];\r\n\r\n load1: boolean = false;\r\n load2: boolean = false;\r\n load3: boolean = false;\r\n load4: boolean = false;\r\n load5: boolean = false;\r\n scheduleCallback: any;\r\n timeNumber: number;\r\n\r\n\r\n // LIFE-CYCLE CALLBACKS:\r\n\r\n onLoad() {\r\n\r\n window.initMgr();\r\n this.timeNumber = 3;\r\n this.startTimeCutDown();\r\n cc.fx.GameConfig.init(true);\r\n cc.fx.GameConfig.GM_INFO.gameState = false;\r\n this.readMusicConfig();\r\n console.log(\"音乐开关\", cc.fx.GameConfig.GM_INFO.musicOpen);\r\n cc.fx.AudioManager._instance.playMusicGame();\r\n\r\n this.load1 = this.load2 = this.load3 = this.load4 = this.load5 = false;\r\n setTimeout(() => {\r\n this.readUserData();\r\n }, 200);\r\n\r\n\r\n if (GameManager._instance == null) {\r\n GameManager._instance = this;\r\n cc.game.addPersistRootNode(this.node);\r\n }\r\n else {\r\n return;\r\n }\r\n\r\n const path = 'prefab/block';\r\n const path2 = 'prefab/wall';\r\n cc.resources.loadDir(path, cc.Prefab, (err, assets: cc.Prefab[]) => {\r\n if (err) {\r\n console.log('动态加载 block 失败:', err);\r\n cc.director.loadScene(\"LoadScene\");\r\n return;\r\n }\r\n // 将加载的 Prefab 赋值给 Block_Array\r\n this.Block_Array = assets;\r\n console.log('方块加载成功,共加载了', this.Block_Array.length, '个方块');\r\n this.setSort();\r\n this.load1 = true;\r\n });\r\n\r\n cc.resources.loadDir(path2, cc.Prefab, (err, assets: cc.Prefab[]) => {\r\n if (err) {\r\n console.log('动态加载 wall 失败:', err);\r\n cc.director.loadScene(\"LoadScene\");\r\n return;\r\n }\r\n // 将加载的 Prefab 赋值给 Block_Array\r\n this.Wall_Prefab = assets;\r\n this.load2 = true;\r\n console.log('墙加载成功,共加载了', this.Wall_Prefab.length, '个墙');\r\n this.setWallPrefabSort();\r\n });\r\n\r\n\r\n // 检测微信小游戏切到后台\r\n if (cc.sys.platform === cc.sys.WECHAT_GAME) {\r\n //@ts-ignore\r\n wx.onHide(() => {\r\n this.onHide();\r\n });\r\n // 检测微信小游戏回到前台\r\n //@ts-ignore\r\n wx.onShow(() => {\r\n this.onShow();\r\n });\r\n }\r\n\r\n }\r\n\r\n onHide() {\r\n cc.audioEngine.stopMusic();\r\n cc.game.pause();\r\n }\r\n\r\n onShow() {\r\n cc.audioEngine.resumeMusic();\r\n cc.game.resume();\r\n }\r\n\r\n loadParticleEffects() {\r\n }\r\n\r\n\r\n\r\n\r\n setWallPrefabSort() {\r\n const order = ['down', 'downLeft', 'downRight', 'left', 'right', 'up', 'upLeft', 'upRight'];\r\n this.Wall_Prefab.sort((a, b) => {\r\n const indexA = order.indexOf(a.name);\r\n const indexB = order.indexOf(b.name);\r\n if (indexA === -1) return 1;\r\n if (indexB === -1) return -1;\r\n return indexA - indexB;\r\n });\r\n\r\n }\r\n\r\n setParticleSort() {\r\n const order = ['top', 'bot', 'rig', 'lef'];\r\n this.particleEffects.sort((a, b) => {\r\n const indexA = order.indexOf(a.name.substr(0, 3));\r\n const indexB = order.indexOf(b.name.substr(0, 3));\r\n if (indexA === -1) return 1;\r\n if (indexB === -1) return -1;\r\n return indexA - indexB;\r\n });\r\n }\r\n\r\n setSort() {\r\n this.Block_Array.sort((a, b) => {\r\n // 从名称中提取数字部分\r\n const numberA = parseInt(a.name.match(/\\d+/)?.[0] || '0', 10);\r\n const numberB = parseInt(b.name.match(/\\d+/)?.[0] || '0', 10);\r\n return numberA - numberB;\r\n });\r\n }\r\n\r\n start() {\r\n\r\n }\r\n\r\n startGame() {\r\n console.log(\"进入场景之前_____________\", cc.fx.GameConfig.GM_INFO.first);\r\n cc.director.loadScene(\"HomeScene\");\r\n }\r\n\r\n returnHome() {\r\n cc.tween(this.node.getChildByName(\"Game\"))\r\n .to(0.5, { opacity: 100 })\r\n .call(() => {\r\n\r\n // 预加载成功后加载场景\r\n cc.director.loadScene(\"HomeScene\", (err) => {\r\n if (err) {\r\n console.error('加载 HomeScene 场景失败:', err);\r\n } else {\r\n cc.director.loadScene(\"HomeScene\");\r\n }\r\n });\r\n })\r\n .start();\r\n\r\n cc.tween(this.node.getChildByName(\"mask\"))\r\n .to(0.5, { opacity: 255 })\r\n .start();\r\n\r\n // cc.loader.releaseAll();\r\n // 预加载 HomeScene 场景\r\n\r\n\r\n }\r\n\r\n\r\n readUserData(retryCount = 0) {\r\n //@ts-ignore\r\n if (typeof wx !== 'undefined' && wx !== null) {\r\n let levelInfo = cc.fx.StorageMessage.getStorage(\"level\");\r\n //旧的读取数据设置数据方法,以强联网为主\r\n if (levelInfo == undefined || levelInfo == \"\" || levelInfo == null) {\r\n this.oldReadData(retryCount);\r\n }\r\n //新的读取数据设置方法,以本地为主\r\n else {\r\n this.newReadData();\r\n }\r\n console.log(\"即将读取体力值\");\r\n cc.fx.GameTool.getHealth((data) => {\r\n console.log(\"体力值完成进入游戏\");\r\n this.load5 = true;\r\n });\r\n\r\n }\r\n else {\r\n this.load3 = true;\r\n this.load4 = true;\r\n this.load5 = true;\r\n cc.fx.GameTool.getHealth(null);\r\n }\r\n // 存储用户数据\r\n }\r\n\r\n readMusicConfig() {\r\n let audioInfo = cc.fx.StorageMessage.getStorage(\"music\");\r\n if (audioInfo == undefined || audioInfo == \"\" || audioInfo == null) {\r\n audioInfo = {\r\n \"musicOpen\": true, //音乐\r\n \"effectOpen\": true, //音效\r\n \"vibrateOpen\": true, //震动\r\n }\r\n cc.fx.StorageMessage.setStorage(\"music\", audioInfo);\r\n }\r\n else {\r\n cc.fx.GameConfig.GM_INFO.musicOpen = audioInfo.musicOpen;\r\n cc.fx.GameConfig.GM_INFO.effectOpen = audioInfo.effectOpen;\r\n cc.fx.GameConfig.GM_INFO.vibrateOpen = audioInfo.vibrateOpen;\r\n }\r\n }\r\n\r\n //新用户,有本地缓存读取配置\r\n newReadData() {\r\n console.log(\"读取新信息\");\r\n let openid = cc.fx.StorageMessage.getStorage(\"openid\");\r\n if (openid == null || openid == \"\" || openid == undefined) {\r\n console.log(\"没有openid\");\r\n //@ts-ignore\r\n wx.cloud.callFunction({\r\n name: 'userData',\r\n data: {\r\n action: 'read'\r\n },\r\n success: res => {\r\n console.log('读取用户数据成功', res.result)\r\n if (res.result.code == 404 && res.result.message == \"未找到用户数据\") {\r\n }\r\n else if (res.result.code == 200) {\r\n if (res.result.data) {\r\n cc.fx.GameConfig.GM_INFO.openid = res.result.openid;\r\n cc.fx.GameConfig.GM_INFO.username = res.result.data.username;\r\n cc.fx.GameConfig.GM_INFO.useravatar = res.result.data.useravatar;\r\n const register_time = res.result.data.register_time;\r\n MiniGameSdk.API.shushu_userSet(register_time);\r\n cc.fx.StorageMessage.setStorage(\"openid\", cc.fx.GameConfig.GM_INFO.openid);\r\n }\r\n }\r\n },\r\n fail: err => {\r\n console.error('读取用户数据失败', err)\r\n }\r\n })\r\n }\r\n else {\r\n if (openid)\r\n cc.fx.GameConfig.GM_INFO.openid = openid;\r\n }\r\n\r\n\r\n\r\n //等级信息\r\n cc.fx.GameTool.getUserLevel((data) => {\r\n const timestamp = Date.now();\r\n let levelInfo = cc.fx.StorageMessage.getStorage(\"level\");\r\n if (data.result.code == 404 && data.result.message == \"未找到关卡数据\") {\r\n // console.log(\"没有等级信息,从用户接口拿到数据\");\r\n if (levelInfo.level) {\r\n cc.fx.GameConfig.GM_INFO.level = levelInfo.level;\r\n }\r\n this.load4 = true;\r\n cc.fx.GameTool.setUserLevel((data) => {\r\n });\r\n }\r\n else if (data.result.code == 200) {\r\n // console.log(\"有等级信息,从关卡接口拿到数据\",data.result.data);\r\n //游戏前端存储 新于服务器端,以游戏前端信息为主,放服务器存储\r\n let temp = data.result.timestamp - levelInfo.timestamp;\r\n console.log(\"等级时间差:\", temp);\r\n if ((data.result.timestamp - levelInfo.timestamp) < 10000) {\r\n if (levelInfo.level) {\r\n console.log(\"以游戏前端等级为准\", data.result.data);\r\n cc.fx.GameConfig.GM_INFO.level = levelInfo.level;\r\n // console.log(\"等级为:\",cc.fx.GameConfig.GM_INFO.level);\r\n cc.fx.GameTool.setUserLevel((data) => {\r\n });\r\n }\r\n\r\n }\r\n //服务器端存储时间新于游戏端,以服务器端为主,往前端存储\r\n else {\r\n console.log(\"以服务器等级为准\", data.result.data);\r\n cc.fx.GameConfig.GM_INFO.level = data.result.data;\r\n levelInfo.level = cc.fx.GameConfig.GM_INFO.level;\r\n levelInfo.timestamp = timestamp;\r\n // console.log(\"1111111存储关卡数据:\",cc.fx.GameConfig.GM_INFO.level);\r\n cc.fx.StorageMessage.setStorage(\"level\", levelInfo);\r\n }\r\n this.load4 = true;\r\n }\r\n });\r\n //金币信息\r\n cc.fx.GameTool.getUserCoin((data) => {\r\n const timestamp = Date.now();\r\n let coinInfo = cc.fx.StorageMessage.getStorage(\"coin\");\r\n if (data.result.code == 404 && data.result.message == \"未找到金币数据\") {\r\n if (coinInfo.coin)\r\n cc.fx.GameConfig.GM_INFO.coin = coinInfo.coin;\r\n console.log(\"没有金币信息,从用户接口拿到数据\", cc.fx.GameConfig.GM_INFO.coin);\r\n this.load3 = true;\r\n cc.fx.GameTool.setUserCoin((data) => {\r\n });\r\n }\r\n else if (data.result.code == 200) {\r\n // console.log(\"有金币信息,从金币接口拿到数据\",data.result.data);\r\n //游戏前端存储 新于服务器端,以游戏前端信息为主,放服务器存储\r\n let temp = data.result.timestamp - coinInfo.timestamp;\r\n console.log(\"金币时间差:\", temp);\r\n if ((data.result.timestamp - coinInfo.timestamp) < 10000) {\r\n console.log(\"以前端金幣为准:\", coinInfo);\r\n if (coinInfo.coin)\r\n cc.fx.GameConfig.GM_INFO.coin = coinInfo.coin;\r\n else {\r\n cc.fx.GameConfig.GM_INFO.coin = data.result.data;\r\n coinInfo.coin = cc.fx.GameConfig.GM_INFO.coin;\r\n coinInfo.timestamp = timestamp;\r\n console.log(\"11111111111\");\r\n cc.fx.StorageMessage.setStorage(\"coin\", coinInfo);\r\n }\r\n console.log(\"改变后金币:\", cc.fx.GameConfig.GM_INFO.coin);\r\n cc.fx.GameTool.setUserCoin((data) => {\r\n });\r\n }\r\n //服务器端存储时间新于游戏端,以服务器端为主,往前端存储\r\n else {\r\n console.log(\"以服务器金幣为准:\", data.result.data);\r\n cc.fx.GameConfig.GM_INFO.coin = data.result.data;\r\n coinInfo.coin = cc.fx.GameConfig.GM_INFO.coin;\r\n coinInfo.timestamp = timestamp;\r\n console.log(\"2222222222\");\r\n cc.fx.StorageMessage.setStorage(\"coin\", coinInfo);\r\n }\r\n this.load3 = true;\r\n }\r\n });\r\n //道具信息\r\n cc.fx.GameTool.getUserProp((data) => {\r\n const timestamp = Date.now();\r\n let propInfo = cc.fx.StorageMessage.getStorage(\"prop\");\r\n if (data.result.code == 404 && data.result.message == \"未找到道具数据\") {\r\n console.log(\"没有道具信息,从用户接口拿到数据\", propInfo);\r\n if (propInfo.freezeAmount == undefined || propInfo.hammerAmount == undefined || propInfo.magicAmount == undefined) {\r\n console.log(\"2222222道具数据异常\");\r\n cc.fx.GameConfig.GM_INFO.freezeAmount = 0;\r\n cc.fx.GameConfig.GM_INFO.hammerAmount = 0;\r\n cc.fx.GameConfig.GM_INFO.magicAmoun = 0;\r\n let propInfoNew = {\r\n \"freezeAmount\": cc.fx.GameConfig.GM_INFO.freezeAmount,\r\n \"hammerAmount\": cc.fx.GameConfig.GM_INFO.hammerAmount,\r\n \"magicAmount\": cc.fx.GameConfig.GM_INFO.magicAmoun,\r\n \"timestamp\": timestamp\r\n }\r\n console.log(\"1111111上传道具信息:\", propInfoNew);\r\n cc.fx.StorageMessage.setStorage(\"prop\", propInfoNew);\r\n }\r\n else {\r\n // cc.fx.GameConfig.GM_INFO.freezeAmount = data.result.data.freeze;\r\n // cc.fx.GameConfig.GM_INFO.hammerAmount = data.result.data.hammer;\r\n // cc.fx.GameConfig.GM_INFO.magicAmount = data.result.data.magic_wand;\r\n cc.fx.GameConfig.GM_INFO.freezeAmount = propInfo.freezeAmount;\r\n cc.fx.GameConfig.GM_INFO.hammerAmount = propInfo.hammerAmount;\r\n cc.fx.GameConfig.GM_INFO.magicAmount = propInfo.magicAmount;\r\n }\r\n\r\n\r\n // cc.fx.GameConfig.GM_INFO.freezeAmount = propInfo.freezeAmount;\r\n // cc.fx.GameConfig.GM_INFO.hammerAmount = propInfo.hammerAmount;\r\n // cc.fx.GameConfig.GM_INFO.magicAmount = propInfo.magicAmount;\r\n cc.fx.GameTool.setUserProp(0, 0, (data) => {\r\n });\r\n }\r\n else if (data.result.code == 200) {\r\n // console.log(\"本地时间戳\",propInfo.timestamp,\"服务器时间戳\",data.result.timestamp);\r\n if ((data.result.timestamp - propInfo.timestamp) < 10000) {\r\n console.log(\"以前端道具为主:\", propInfo);\r\n if (propInfo.freezeAmount == undefined || propInfo.hammerAmount == undefined || propInfo.magicAmount == undefined) {\r\n console.log(\"111111道具数据异常\", data.result.data);\r\n cc.fx.GameConfig.GM_INFO.freezeAmount = data.result.data.freeze;\r\n cc.fx.GameConfig.GM_INFO.hammerAmount = data.result.data.hammer;\r\n cc.fx.GameConfig.GM_INFO.magicAmount = data.result.data.magic_wand;\r\n let propInfoNew = {\r\n \"freezeAmount\": cc.fx.GameConfig.GM_INFO.freezeAmount,\r\n \"hammerAmount\": cc.fx.GameConfig.GM_INFO.hammerAmount,\r\n \"magicAmount\": cc.fx.GameConfig.GM_INFO.magicAmount,\r\n \"timestamp\": timestamp\r\n }\r\n console.log(\"333333上传道具信息:\", propInfoNew);\r\n cc.fx.StorageMessage.setStorage(\"prop\", propInfoNew);\r\n }\r\n else {\r\n console.log(\"道具数据正常\");\r\n cc.fx.GameConfig.GM_INFO.freezeAmount = propInfo.freezeAmount;\r\n cc.fx.GameConfig.GM_INFO.hammerAmount = propInfo.hammerAmount;\r\n cc.fx.GameConfig.GM_INFO.magicAmount = propInfo.magicAmount;\r\n cc.fx.GameTool.setUserProp(0, 0, (data) => {\r\n });\r\n }\r\n }\r\n else {\r\n cc.fx.GameConfig.GM_INFO.freezeAmount = data.result.data.freeze;\r\n cc.fx.GameConfig.GM_INFO.hammerAmount = data.result.data.hammer;\r\n cc.fx.GameConfig.GM_INFO.magicAmount = data.result.data.magic_wand;\r\n let propInfoNew = {\r\n \"freezeAmount\": cc.fx.GameConfig.GM_INFO.freezeAmount,\r\n \"hammerAmount\": cc.fx.GameConfig.GM_INFO.hammerAmount,\r\n \"magicAmount\": cc.fx.GameConfig.GM_INFO.magicAmount,\r\n \"timestamp\": timestamp\r\n }\r\n console.log(\"22222222上传道具信息:\", propInfoNew, data.result);\r\n cc.fx.StorageMessage.setStorage(\"prop\", propInfoNew);\r\n }\r\n }\r\n });\r\n }\r\n //旧用户,无本地缓存读取配置\r\n oldReadData(retryCount: number) {\r\n console.log(\"读取旧信息\");\r\n const MAX_RETRIES = 15;\r\n const timestamp = Date.now();\r\n // 读取用户数据\r\n //@ts-ignore\r\n wx.cloud.callFunction({\r\n name: 'userData',\r\n data: {\r\n action: 'read'\r\n },\r\n success: res => {\r\n console.log('读取用户数据成功', res.result)\r\n if (res.result.code == 404 && res.result.message == \"未找到用户数据\") {\r\n if (res.result.openid) {\r\n cc.fx.GameConfig.GM_INFO.openid = res.result.openid\r\n }\r\n cc.fx.GameConfig.GM_INFO.first = true;\r\n this.load3 = true;\r\n this.load4 = true;\r\n let levelInfo = { \"level\": 0, \"timestamp\": timestamp };\r\n cc.fx.StorageMessage.setStorage(\"level\", levelInfo);\r\n let coinInfo = { \"coin\": 0, \"timestamp\": timestamp };\r\n console.log(\"33333333333\");\r\n cc.fx.StorageMessage.setStorage(\"coin\", coinInfo);\r\n let propInfo = {\r\n \"freezeAmount\": 0,\r\n \"hammerAmount\": 0,\r\n \"magicAmount\": 0,\r\n \"timestamp\": timestamp,\r\n }\r\n cc.fx.StorageMessage.setStorage(\"prop\", propInfo);\r\n\r\n\r\n cc.fx.GameTool.setUserInfo((data) => {\r\n if (data.result.code == 200) {\r\n console.log(\"上传用户信息成功\", data);\r\n //@ts-ignore\r\n wx.cloud.callFunction({\r\n name: 'userData',\r\n data: {\r\n action: 'read'\r\n },\r\n success: res => {\r\n console.log(\"上传后,读取用户信息,为上报注册时间\")\r\n if (res.result.code == 200) {\r\n const time = res.result.data.register_time;\r\n MiniGameSdk.API.shushu_userSet(time);\r\n }\r\n }\r\n })\r\n }\r\n });\r\n console.log(\"服务器也没有金币信息\", cc.fx.GameConfig.GM_INFO.coin);\r\n cc.fx.GameTool.setUserCoin(cc.fx.GameConfig.GM_INFO.coin, (data) => {\r\n\r\n });\r\n cc.fx.GameTool.setUserLevel((data) => {\r\n });\r\n setTimeout(() => {\r\n cc.fx.GameConfig.GM_INFO.freezeAmount = 0;\r\n cc.fx.GameConfig.GM_INFO.hammerAmount = 0;\r\n cc.fx.GameConfig.GM_INFO.magicAmount = 0;\r\n cc.fx.GameTool.setUserProp(0, 0, (data) => {\r\n if (data.result.code == 200) {\r\n console.log(\"上传道具信息成功\", data);\r\n }\r\n else {\r\n MiniGameSdk.API.showToast(\"网络异常,正在努力加载\");\r\n setTimeout(() => {\r\n this.oldReadData(0);\r\n }, 1000);\r\n }\r\n });\r\n }, 0);\r\n }\r\n else if (res.result.code == 200) {\r\n if (res.result.data) {\r\n cc.fx.GameConfig.GM_INFO.openid = res.result.openid;\r\n cc.fx.GameConfig.GM_INFO.level = res.result.data.level;\r\n cc.fx.GameConfig.GM_INFO.coin = res.result.data.coinAmount;\r\n cc.fx.GameConfig.GM_INFO.freezeAmount = res.result.data.freezeAmount;\r\n cc.fx.GameConfig.GM_INFO.hammerAmount = res.result.data.hammerAmount;\r\n cc.fx.GameConfig.GM_INFO.magicAmount = res.result.data.magicAmount;\r\n cc.fx.GameConfig.GM_INFO.username = res.result.data.username;\r\n cc.fx.GameConfig.GM_INFO.useravatar = res.result.data.useravatar;\r\n cc.fx.StorageMessage.setStorage(\"openid\", cc.fx.GameConfig.GM_INFO.openid);\r\n const register_time = res.result.data.register_time;\r\n MiniGameSdk.API.shushu_userSet(register_time);\r\n }\r\n setTimeout(() => {\r\n cc.fx.GameTool.getUserCoin((data) => {\r\n if (data.result.code == 404 && data.result.message == \"未找到金币数据\") {\r\n\r\n let coinInfo = { \"coin\": 0, \"timestamp\": timestamp };\r\n cc.fx.GameConfig.GM_INFO.coin = 0;\r\n cc.fx.StorageMessage.setStorage(\"coin\", coinInfo);\r\n console.log(\"没有金币信息,从用户接口拿到数据\", cc.fx.GameConfig.GM_INFO.coin);\r\n cc.fx.GameTool.setUserCoin((data) => {\r\n // console.log(\"上传\",data);\r\n this.load3 = true;\r\n });\r\n }\r\n else if (data.result.code == 200) {\r\n // console.log(\"有金币信息,从金币接口拿到数据\",data.result.data);\r\n cc.fx.GameConfig.GM_INFO.coin = data.result.data;\r\n let coinInfo = { \"coin\": cc.fx.GameConfig.GM_INFO.coin, \"timestamp\": timestamp };\r\n console.log(\"存储金币信息:\", cc.fx.GameConfig.GM_INFO.coin);\r\n console.log(\"4444444444\");\r\n cc.fx.StorageMessage.setStorage(\"coin\", coinInfo);\r\n this.load3 = true;\r\n }\r\n })\r\n }, 500);\r\n\r\n cc.fx.GameTool.getUserLevel((data) => {\r\n if (data.result.code == 404 && data.result.message == \"未找到关卡数据\") {\r\n console.log(\"没有等级信息,从用户接口拿到数据\");\r\n let levelInfo = { \"level\": 0, \"timestamp\": timestamp };\r\n // console.log(\"333333存储关卡数据:\",levelInfo);\r\n cc.fx.GameConfig.GM_INFO.level = 0;\r\n cc.fx.StorageMessage.setStorage(\"level\", levelInfo);\r\n cc.fx.GameTool.setUserLevel((data) => {\r\n console.log(\"拿到的数据\", data);\r\n this.load4 = true;\r\n });\r\n }\r\n else if (data.result.code == 200) {\r\n console.log(\"有等级信息,从关卡接口拿到数据\", data.result.data);\r\n cc.fx.GameConfig.GM_INFO.level = data.result.data;\r\n let levelInfo = { \"level\": cc.fx.GameConfig.GM_INFO.level, \"timestamp\": timestamp };\r\n // console.log(\"444444存储关卡信息:\",levelInfo);\r\n cc.fx.StorageMessage.setStorage(\"level\", levelInfo);\r\n this.load4 = true;\r\n }\r\n })\r\n setTimeout(() => {\r\n cc.fx.GameTool.getUserProp((data) => {\r\n if (data.result.code == 404 && data.result.message == \"未找到道具数据\") {\r\n console.log(\"没有道具信息,从用户接口拿到数据\");\r\n cc.fx.GameConfig.GM_INFO.freezeAmount = 0;\r\n cc.fx.GameConfig.GM_INFO.hammerAmount = 0;\r\n cc.fx.GameConfig.GM_INFO.magicAmount = 0;\r\n let propInfo = {\r\n \"freezeAmount\": 0,\r\n \"hammerAmount\": 0,\r\n \"magicAmount\": 0,\r\n \"timestamp\": timestamp,\r\n }\r\n console.log(\"上传道具信息:\", propInfo);\r\n cc.fx.StorageMessage.setStorage(\"prop\", propInfo);\r\n cc.fx.GameTool.setUserProp(0, 0, (data) => {\r\n });\r\n }\r\n else if (data.result.code == 200) {\r\n console.log(\"有道具信息,从道具接口拿到数据\", data.result.data);\r\n cc.fx.GameConfig.GM_INFO.freezeAmount = data.result.data.freeze || 0;\r\n cc.fx.GameConfig.GM_INFO.hammerAmount = data.result.data.hammer || 0;\r\n cc.fx.GameConfig.GM_INFO.magicAmount = data.result.data.magic_wand || 0;\r\n let propInfo = {\r\n \"freezeAmount\": cc.fx.GameConfig.GM_INFO.freezeAmount,\r\n \"hammerAmount\": cc.fx.GameConfig.GM_INFO.hammerAmount,\r\n \"magicAmount\": cc.fx.GameConfig.GM_INFO.magicAmount,\r\n \"timestamp\": timestamp,\r\n }\r\n console.log(\"上传道具信息:\", propInfo);\r\n cc.fx.StorageMessage.setStorage(\"prop\", propInfo);\r\n\r\n }\r\n })\r\n }, 0);\r\n\r\n }\r\n\r\n },\r\n fail: err => {\r\n console.error('读取用户数据失败', err)\r\n if (retryCount < MAX_RETRIES) {\r\n console.error(`读取用户数据失败,第 ${retryCount + 1} 次重试,错误信息:`, err);\r\n // 延迟 2 秒后重试\r\n setTimeout(() => {\r\n this.readUserData(retryCount + 1);\r\n }, 2000);\r\n } else {\r\n console.error('读取用户数据失败,达到最大重试次数,退出游戏', err);\r\n // 退出游戏\r\n cc.game.end();\r\n }\r\n }\r\n })\r\n }\r\n\r\n setUserData() {\r\n cc.fx.GameConfig.GameTool((data) => {\r\n console.log(\"上传\", data);\r\n })\r\n }\r\n\r\n startTimeCutDown() {\r\n this.scheduleCallback = function () {\r\n if (this.timeNumber <= 0) {\r\n this.stopTimeCutDown();\r\n }\r\n else {\r\n this.timeNumber -= 1;\r\n }\r\n }.bind(this);\r\n this.schedule(this.scheduleCallback, 1);\r\n }\r\n\r\n stopTimeCutDown() {\r\n if (this.scheduleCallback) {\r\n this.unschedule(this.scheduleCallback);\r\n }\r\n }\r\n\r\n update(dt) {\r\n if (this.load1 && this.load2 && this.load3 && this.load4 && this.load5 && this.timeNumber <= 0) {\r\n this.load1 = this.load2 = false;\r\n MiniGameSdk.API.shushu_Init();\r\n this.startGame();\r\n }\r\n }\r\n}\r\n"]} \ No newline at end of file diff --git a/library/imports/4b/4b95b89d-4e79-4cd0-9dd1-3be2087ceae8.json b/library/imports/df/dfd68eea-a8ae-4141-b080-f6cfefbad8cd.json similarity index 66% rename from library/imports/4b/4b95b89d-4e79-4cd0-9dd1-3be2087ceae8.json rename to library/imports/df/dfd68eea-a8ae-4141-b080-f6cfefbad8cd.json index 3cc99bc..08baad9 100644 --- a/library/imports/4b/4b95b89d-4e79-4cd0-9dd1-3be2087ceae8.json +++ b/library/imports/df/dfd68eea-a8ae-4141-b080-f6cfefbad8cd.json @@ -2,11 +2,11 @@ "__type__": "cc.SpriteFrame", "content": { "name": "9down3", - "texture": "ed2c3a21-0522-445d-9904-76843208705f", - "atlas": "d7e227ab-cc06-48f5-a2ac-092b19ec7f6f", + "texture": "c660c59d-e175-4194-aaf3-33d1d03b783f", + "atlas": "3d019ed8-3019-436d-add0-ceeb02a5baaf", "rect": [ - 800, 1, + 518, 363, 45 ], @@ -18,7 +18,6 @@ 363, 45 ], - "rotated": 1, "capInsets": [ 0, 0, diff --git a/library/imports/80/80f975f0-0e3b-47f5-9128-88aa34d1bd80.json b/library/imports/e0/e086948a-d672-4693-a773-355c1aaf8819.json similarity index 66% rename from library/imports/80/80f975f0-0e3b-47f5-9128-88aa34d1bd80.json rename to library/imports/e0/e086948a-d672-4693-a773-355c1aaf8819.json index fcc2b22..1f8e959 100644 --- a/library/imports/80/80f975f0-0e3b-47f5-9128-88aa34d1bd80.json +++ b/library/imports/e0/e086948a-d672-4693-a773-355c1aaf8819.json @@ -2,11 +2,11 @@ "__type__": "cc.SpriteFrame", "content": { "name": "3down5", - "texture": "ed2c3a21-0522-445d-9904-76843208705f", - "atlas": "d7e227ab-cc06-48f5-a2ac-092b19ec7f6f", + "texture": "c660c59d-e175-4194-aaf3-33d1d03b783f", + "atlas": "3d019ed8-3019-436d-add0-ceeb02a5baaf", "rect": [ - 894, 1, + 189, 45, 245 ], @@ -18,6 +18,7 @@ 45, 245 ], + "rotated": 1, "capInsets": [ 0, 0, diff --git a/library/imports/e2/e200ed15-b2bf-49eb-864b-d0ead7b9fbd6.json b/library/imports/e2/e200ed15-b2bf-49eb-864b-d0ead7b9fbd6.json new file mode 100644 index 0000000..e772e76 --- /dev/null +++ b/library/imports/e2/e200ed15-b2bf-49eb-864b-d0ead7b9fbd6.json @@ -0,0 +1,29 @@ +{ + "__type__": "cc.SpriteFrame", + "content": { + "name": "zhangai", + "texture": "418b4767-01bf-4ac2-823b-9880f2a79215", + "atlas": "cc01997d-495e-480d-871e-be405a6c38b5", + "rect": [ + 988, + 609, + 132, + 137 + ], + "offset": [ + 0, + 0 + ], + "originalSize": [ + 132, + 137 + ], + "rotated": 1, + "capInsets": [ + 0, + 0, + 0, + 0 + ] + } +} \ No newline at end of file diff --git a/library/imports/e4/e468d8cc-1332-4516-b4d6-f4dd61e6ab54.json b/library/imports/e4/e468d8cc-1332-4516-b4d6-f4dd61e6ab54.json new file mode 100644 index 0000000..05ccf29 --- /dev/null +++ b/library/imports/e4/e468d8cc-1332-4516-b4d6-f4dd61e6ab54.json @@ -0,0 +1,29 @@ +{ + "__type__": "cc.SpriteFrame", + "content": { + "name": "8color6", + "texture": "418b4767-01bf-4ac2-823b-9880f2a79215", + "atlas": "cc01997d-495e-480d-871e-be405a6c38b5", + "rect": [ + 518, + 135, + 61, + 386 + ], + "offset": [ + 0, + 0 + ], + "originalSize": [ + 61, + 386 + ], + "rotated": 1, + "capInsets": [ + 0, + 0, + 0, + 0 + ] + } +} \ No newline at end of file diff --git a/library/imports/e5/e538a058-80c2-49b8-aea0-f39d69183437.json b/library/imports/e5/e538a058-80c2-49b8-aea0-f39d69183437.json new file mode 100644 index 0000000..d9f6700 --- /dev/null +++ b/library/imports/e5/e538a058-80c2-49b8-aea0-f39d69183437.json @@ -0,0 +1,28 @@ +{ + "__type__": "cc.SpriteFrame", + "content": { + "name": "6color3", + "texture": "418b4767-01bf-4ac2-823b-9880f2a79215", + "atlas": "cc01997d-495e-480d-871e-be405a6c38b5", + "rect": [ + 509, + 269, + 378, + 69 + ], + "offset": [ + 0, + 0 + ], + "originalSize": [ + 378, + 69 + ], + "capInsets": [ + 0, + 0, + 0, + 0 + ] + } +} \ No newline at end of file diff --git a/library/imports/e6/e6235cef-05a1-44b7-aa4c-46b51bc91632.json b/library/imports/e6/e6235cef-05a1-44b7-aa4c-46b51bc91632.json new file mode 100644 index 0000000..2421d7e --- /dev/null +++ b/library/imports/e6/e6235cef-05a1-44b7-aa4c-46b51bc91632.json @@ -0,0 +1,28 @@ +{ + "__type__": "cc.SpriteFrame", + "content": { + "name": "3color3", + "texture": "418b4767-01bf-4ac2-823b-9880f2a79215", + "atlas": "cc01997d-495e-480d-871e-be405a6c38b5", + "rect": [ + 129, + 261, + 378, + 69 + ], + "offset": [ + 0, + 0 + ], + "originalSize": [ + 378, + 69 + ], + "capInsets": [ + 0, + 0, + 0, + 0 + ] + } +} \ No newline at end of file diff --git a/library/imports/e7/e712ba83-24ff-404f-8699-61c4902001c9.json b/library/imports/e7/e712ba83-24ff-404f-8699-61c4902001c9.json new file mode 100644 index 0000000..6febb47 --- /dev/null +++ b/library/imports/e7/e712ba83-24ff-404f-8699-61c4902001c9.json @@ -0,0 +1,29 @@ +{ + "__type__": "cc.SpriteFrame", + "content": { + "name": "7color1", + "texture": "418b4767-01bf-4ac2-823b-9880f2a79215", + "atlas": "cc01997d-495e-480d-871e-be405a6c38b5", + "rect": [ + 1240, + 784, + 138, + 69 + ], + "offset": [ + 0, + 0 + ], + "originalSize": [ + 138, + 69 + ], + "rotated": 1, + "capInsets": [ + 0, + 0, + 0, + 0 + ] + } +} \ No newline at end of file diff --git a/library/imports/e7/e7bbdb15-5185-4c6e-a2f6-1c337b60b460.json b/library/imports/e7/e7bbdb15-5185-4c6e-a2f6-1c337b60b460.json new file mode 100644 index 0000000..e3179cb --- /dev/null +++ b/library/imports/e7/e7bbdb15-5185-4c6e-a2f6-1c337b60b460.json @@ -0,0 +1,29 @@ +{ + "__type__": "cc.SpriteFrame", + "content": { + "name": "wall6", + "texture": "418b4767-01bf-4ac2-823b-9880f2a79215", + "atlas": "cc01997d-495e-480d-871e-be405a6c38b5", + "rect": [ + 647, + 618, + 138, + 146 + ], + "offset": [ + 0, + 0 + ], + "originalSize": [ + 138, + 146 + ], + "rotated": 1, + "capInsets": [ + 0, + 0, + 0, + 0 + ] + } +} \ No newline at end of file diff --git a/library/imports/e9/e91b0b84-c90c-4f76-b1e4-b8976cb6dede.json b/library/imports/e9/e91b0b84-c90c-4f76-b1e4-b8976cb6dede.json new file mode 100644 index 0000000..4f18549 --- /dev/null +++ b/library/imports/e9/e91b0b84-c90c-4f76-b1e4-b8976cb6dede.json @@ -0,0 +1,28 @@ +{ + "__type__": "cc.SpriteFrame", + "content": { + "name": "8color2", + "texture": "418b4767-01bf-4ac2-823b-9880f2a79215", + "atlas": "cc01997d-495e-480d-871e-be405a6c38b5", + "rect": [ + 127, + 467, + 259, + 69 + ], + "offset": [ + 0, + 0 + ], + "originalSize": [ + 259, + 69 + ], + "capInsets": [ + 0, + 0, + 0, + 0 + ] + } +} \ No newline at end of file diff --git a/library/imports/ca/ca22313c-ac3f-41f8-ad87-37668e1416e1.json b/library/imports/eb/eb033dba-ae5e-4147-ad46-241ab27df770.json similarity index 64% rename from library/imports/ca/ca22313c-ac3f-41f8-ad87-37668e1416e1.json rename to library/imports/eb/eb033dba-ae5e-4147-ad46-241ab27df770.json index 00ad383..14d9ad1 100644 --- a/library/imports/ca/ca22313c-ac3f-41f8-ad87-37668e1416e1.json +++ b/library/imports/eb/eb033dba-ae5e-4147-ad46-241ab27df770.json @@ -2,11 +2,11 @@ "__type__": "cc.SpriteFrame", "content": { "name": "4down5", - "texture": "ed2c3a21-0522-445d-9904-76843208705f", - "atlas": "d7e227ab-cc06-48f5-a2ac-092b19ec7f6f", + "texture": "c660c59d-e175-4194-aaf3-33d1d03b783f", + "atlas": "3d019ed8-3019-436d-add0-ceeb02a5baaf", "rect": [ - 894, - 248, + 366, + 236, 45, 245 ], @@ -18,6 +18,7 @@ 45, 245 ], + "rotated": 1, "capInsets": [ 0, 0, diff --git a/library/imports/ed/ed2c3a21-0522-445d-9904-76843208705f.png b/library/imports/ed/ed2c3a21-0522-445d-9904-76843208705f.png deleted file mode 100644 index 089dda2..0000000 Binary files a/library/imports/ed/ed2c3a21-0522-445d-9904-76843208705f.png and /dev/null differ diff --git a/library/imports/ed/edd195cc-2af5-4a7a-bf49-2af75e60d50a.json b/library/imports/ed/edd195cc-2af5-4a7a-bf49-2af75e60d50a.json new file mode 100644 index 0000000..8d7a907 --- /dev/null +++ b/library/imports/ed/edd195cc-2af5-4a7a-bf49-2af75e60d50a.json @@ -0,0 +1,28 @@ +{ + "__type__": "cc.SpriteFrame", + "content": { + "name": "1color3", + "texture": "418b4767-01bf-4ac2-823b-9880f2a79215", + "atlas": "cc01997d-495e-480d-871e-be405a6c38b5", + "rect": [ + 518, + 64, + 378, + 69 + ], + "offset": [ + 0, + 0 + ], + "originalSize": [ + 378, + 69 + ], + "capInsets": [ + 0, + 0, + 0, + 0 + ] + } +} \ No newline at end of file diff --git a/library/imports/ee/ee73bdf1-0624-464f-a268-cb0ff3f2952b.json b/library/imports/ee/ee73bdf1-0624-464f-a268-cb0ff3f2952b.json new file mode 100644 index 0000000..e77ff21 --- /dev/null +++ b/library/imports/ee/ee73bdf1-0624-464f-a268-cb0ff3f2952b.json @@ -0,0 +1,29 @@ +{ + "__type__": "cc.SpriteFrame", + "content": { + "name": "wall5", + "texture": "418b4767-01bf-4ac2-823b-9880f2a79215", + "atlas": "cc01997d-495e-480d-871e-be405a6c38b5", + "rect": [ + 656, + 479, + 137, + 146 + ], + "offset": [ + 0, + 0 + ], + "originalSize": [ + 137, + 146 + ], + "rotated": 1, + "capInsets": [ + 0, + 0, + 0, + 0 + ] + } +} \ No newline at end of file diff --git a/library/imports/ef/ef5bfdc0-6a9e-4866-bc77-9c69a629796b.json b/library/imports/ef/ef5bfdc0-6a9e-4866-bc77-9c69a629796b.json new file mode 100644 index 0000000..2002588 --- /dev/null +++ b/library/imports/ef/ef5bfdc0-6a9e-4866-bc77-9c69a629796b.json @@ -0,0 +1,28 @@ +{ + "__type__": "cc.SpriteFrame", + "content": { + "name": "3color2", + "texture": "418b4767-01bf-4ac2-823b-9880f2a79215", + "atlas": "cc01997d-495e-480d-871e-be405a6c38b5", + "rect": [ + 1, + 869, + 258, + 69 + ], + "offset": [ + 0, + 0 + ], + "originalSize": [ + 258, + 69 + ], + "capInsets": [ + 0, + 0, + 0, + 0 + ] + } +} \ No newline at end of file diff --git a/library/imports/f0/f05b3170-ab5d-4af5-96fa-ca996cc795e3.json b/library/imports/f0/f05b3170-ab5d-4af5-96fa-ca996cc795e3.json new file mode 100644 index 0000000..8b8a646 --- /dev/null +++ b/library/imports/f0/f05b3170-ab5d-4af5-96fa-ca996cc795e3.json @@ -0,0 +1,29 @@ +{ + "__type__": "cc.SpriteFrame", + "content": { + "name": "5color5", + "texture": "418b4767-01bf-4ac2-823b-9880f2a79215", + "atlas": "cc01997d-495e-480d-871e-be405a6c38b5", + "rect": [ + 395, + 411, + 61, + 266 + ], + "offset": [ + 0, + 0 + ], + "originalSize": [ + 61, + 266 + ], + "rotated": 1, + "capInsets": [ + 0, + 0, + 0, + 0 + ] + } +} \ No newline at end of file diff --git a/library/imports/f0/f0da65e3-27d4-43c7-9945-ace5c5d815e5.json b/library/imports/f0/f0da65e3-27d4-43c7-9945-ace5c5d815e5.json index ddbc127..932d7e1 100644 --- a/library/imports/f0/f0da65e3-27d4-43c7-9945-ace5c5d815e5.json +++ b/library/imports/f0/f0da65e3-27d4-43c7-9945-ace5c5d815e5.json @@ -281,7 +281,7 @@ "_srcBlendFactor": 770, "_dstBlendFactor": 771, "_spriteFrame": { - "__uuid__": "fc8fd6fa-3cc2-4a69-a2f7-2c521de510b1" + "__uuid__": "6db2aafd-c221-4be9-a20b-5bb361fe22ef" }, "_type": 0, "_sizeMode": 1, @@ -295,7 +295,7 @@ "_fillRange": 0, "_isTrimmedMode": true, "_atlas": { - "__uuid__": "cc01997d-495e-480d-871e-be405a6c38b5" + "__uuid__": "f2c494b7-b6df-488f-b194-358235b0f180" }, "_id": "" }, @@ -315,7 +315,7 @@ "__uuid__": "f2c494b7-b6df-488f-b194-358235b0f180" }, "down_SpriteFrames": { - "__uuid__": "31479c6e-5626-4598-97ab-f94303e9efe7" + "__uuid__": "3d019ed8-3019-436d-add0-ceeb02a5baaf" }, "_id": "" }, @@ -2042,7 +2042,7 @@ "_srcBlendFactor": 770, "_dstBlendFactor": 771, "_spriteFrame": { - "__uuid__": "66c27f02-719e-422c-9277-42063833c0af" + "__uuid__": "4c2ac211-077a-4783-92b7-42964571ebfe" }, "_type": 0, "_sizeMode": 1, @@ -2056,7 +2056,7 @@ "_fillRange": 0, "_isTrimmedMode": true, "_atlas": { - "__uuid__": "cc01997d-495e-480d-871e-be405a6c38b5" + "__uuid__": "f2c494b7-b6df-488f-b194-358235b0f180" }, "_id": "" }, @@ -2087,7 +2087,7 @@ "_srcBlendFactor": 770, "_dstBlendFactor": 771, "_spriteFrame": { - "__uuid__": "9b80c949-4fcd-4e45-afa9-ad91683ef7b7" + "__uuid__": "1f53a670-99ab-4671-932f-3227940876cc" }, "_type": 3, "_sizeMode": 0, @@ -2101,7 +2101,7 @@ "_fillRange": 1, "_isTrimmedMode": true, "_atlas": { - "__uuid__": "cc01997d-495e-480d-871e-be405a6c38b5" + "__uuid__": "f2c494b7-b6df-488f-b194-358235b0f180" }, "_id": "" }, @@ -2264,7 +2264,7 @@ "_srcBlendFactor": 770, "_dstBlendFactor": 771, "_spriteFrame": { - "__uuid__": "66c27f02-719e-422c-9277-42063833c0af" + "__uuid__": "4c2ac211-077a-4783-92b7-42964571ebfe" }, "_type": 0, "_sizeMode": 1, @@ -2278,7 +2278,7 @@ "_fillRange": 0, "_isTrimmedMode": true, "_atlas": { - "__uuid__": "cc01997d-495e-480d-871e-be405a6c38b5" + "__uuid__": "f2c494b7-b6df-488f-b194-358235b0f180" }, "_id": "" }, @@ -2309,7 +2309,7 @@ "_srcBlendFactor": 770, "_dstBlendFactor": 771, "_spriteFrame": { - "__uuid__": "9b80c949-4fcd-4e45-afa9-ad91683ef7b7" + "__uuid__": "1f53a670-99ab-4671-932f-3227940876cc" }, "_type": 3, "_sizeMode": 0, @@ -2323,7 +2323,7 @@ "_fillRange": 1, "_isTrimmedMode": true, "_atlas": { - "__uuid__": "cc01997d-495e-480d-871e-be405a6c38b5" + "__uuid__": "f2c494b7-b6df-488f-b194-358235b0f180" }, "_id": "" }, @@ -2418,7 +2418,7 @@ "_srcBlendFactor": 770, "_dstBlendFactor": 771, "_spriteFrame": { - "__uuid__": "66c27f02-719e-422c-9277-42063833c0af" + "__uuid__": "4c2ac211-077a-4783-92b7-42964571ebfe" }, "_type": 0, "_sizeMode": 1, @@ -2432,7 +2432,7 @@ "_fillRange": 0, "_isTrimmedMode": true, "_atlas": { - "__uuid__": "cc01997d-495e-480d-871e-be405a6c38b5" + "__uuid__": "f2c494b7-b6df-488f-b194-358235b0f180" }, "_id": "" }, @@ -2527,7 +2527,7 @@ "_srcBlendFactor": 770, "_dstBlendFactor": 771, "_spriteFrame": { - "__uuid__": "66c27f02-719e-422c-9277-42063833c0af" + "__uuid__": "4c2ac211-077a-4783-92b7-42964571ebfe" }, "_type": 0, "_sizeMode": 1, @@ -2541,7 +2541,7 @@ "_fillRange": 0, "_isTrimmedMode": true, "_atlas": { - "__uuid__": "cc01997d-495e-480d-871e-be405a6c38b5" + "__uuid__": "f2c494b7-b6df-488f-b194-358235b0f180" }, "_id": "" }, @@ -2788,7 +2788,7 @@ "_srcBlendFactor": 770, "_dstBlendFactor": 771, "_spriteFrame": { - "__uuid__": "66c27f02-719e-422c-9277-42063833c0af" + "__uuid__": "4c2ac211-077a-4783-92b7-42964571ebfe" }, "_type": 0, "_sizeMode": 1, @@ -2802,7 +2802,7 @@ "_fillRange": 0, "_isTrimmedMode": true, "_atlas": { - "__uuid__": "cc01997d-495e-480d-871e-be405a6c38b5" + "__uuid__": "f2c494b7-b6df-488f-b194-358235b0f180" }, "_id": "" }, @@ -2833,7 +2833,7 @@ "_srcBlendFactor": 770, "_dstBlendFactor": 771, "_spriteFrame": { - "__uuid__": "36c23619-6422-47be-aa02-f78b7618bb3c" + "__uuid__": "b48abaaa-d7d1-45b6-8a24-8f259163122a" }, "_type": 3, "_sizeMode": 0, @@ -2847,7 +2847,7 @@ "_fillRange": 1, "_isTrimmedMode": true, "_atlas": { - "__uuid__": "cc01997d-495e-480d-871e-be405a6c38b5" + "__uuid__": "f2c494b7-b6df-488f-b194-358235b0f180" }, "_id": "" }, @@ -3010,7 +3010,7 @@ "_srcBlendFactor": 770, "_dstBlendFactor": 771, "_spriteFrame": { - "__uuid__": "66c27f02-719e-422c-9277-42063833c0af" + "__uuid__": "4c2ac211-077a-4783-92b7-42964571ebfe" }, "_type": 0, "_sizeMode": 1, @@ -3024,7 +3024,7 @@ "_fillRange": 0, "_isTrimmedMode": true, "_atlas": { - "__uuid__": "cc01997d-495e-480d-871e-be405a6c38b5" + "__uuid__": "f2c494b7-b6df-488f-b194-358235b0f180" }, "_id": "" }, @@ -3055,7 +3055,7 @@ "_srcBlendFactor": 770, "_dstBlendFactor": 771, "_spriteFrame": { - "__uuid__": "36c23619-6422-47be-aa02-f78b7618bb3c" + "__uuid__": "b48abaaa-d7d1-45b6-8a24-8f259163122a" }, "_type": 3, "_sizeMode": 0, @@ -3069,7 +3069,7 @@ "_fillRange": 1, "_isTrimmedMode": true, "_atlas": { - "__uuid__": "cc01997d-495e-480d-871e-be405a6c38b5" + "__uuid__": "f2c494b7-b6df-488f-b194-358235b0f180" }, "_id": "" }, @@ -3164,7 +3164,7 @@ "_srcBlendFactor": 770, "_dstBlendFactor": 771, "_spriteFrame": { - "__uuid__": "66c27f02-719e-422c-9277-42063833c0af" + "__uuid__": "4c2ac211-077a-4783-92b7-42964571ebfe" }, "_type": 0, "_sizeMode": 1, @@ -3178,7 +3178,7 @@ "_fillRange": 0, "_isTrimmedMode": true, "_atlas": { - "__uuid__": "cc01997d-495e-480d-871e-be405a6c38b5" + "__uuid__": "f2c494b7-b6df-488f-b194-358235b0f180" }, "_id": "" }, @@ -3273,7 +3273,7 @@ "_srcBlendFactor": 770, "_dstBlendFactor": 771, "_spriteFrame": { - "__uuid__": "66c27f02-719e-422c-9277-42063833c0af" + "__uuid__": "4c2ac211-077a-4783-92b7-42964571ebfe" }, "_type": 0, "_sizeMode": 1, @@ -3287,7 +3287,7 @@ "_fillRange": 0, "_isTrimmedMode": true, "_atlas": { - "__uuid__": "cc01997d-495e-480d-871e-be405a6c38b5" + "__uuid__": "f2c494b7-b6df-488f-b194-358235b0f180" }, "_id": "" }, @@ -3534,7 +3534,7 @@ "_srcBlendFactor": 770, "_dstBlendFactor": 771, "_spriteFrame": { - "__uuid__": "66c27f02-719e-422c-9277-42063833c0af" + "__uuid__": "4c2ac211-077a-4783-92b7-42964571ebfe" }, "_type": 0, "_sizeMode": 1, @@ -3548,7 +3548,7 @@ "_fillRange": 0, "_isTrimmedMode": true, "_atlas": { - "__uuid__": "cc01997d-495e-480d-871e-be405a6c38b5" + "__uuid__": "f2c494b7-b6df-488f-b194-358235b0f180" }, "_id": "" }, @@ -3579,7 +3579,7 @@ "_srcBlendFactor": 770, "_dstBlendFactor": 771, "_spriteFrame": { - "__uuid__": "2c8edc9c-c130-4c61-98f1-0a9b2edf3270" + "__uuid__": "e122aac4-873c-4996-bbc8-7fdbd2cd0e60" }, "_type": 3, "_sizeMode": 0, @@ -3593,7 +3593,7 @@ "_fillRange": 1, "_isTrimmedMode": true, "_atlas": { - "__uuid__": "cc01997d-495e-480d-871e-be405a6c38b5" + "__uuid__": "f2c494b7-b6df-488f-b194-358235b0f180" }, "_id": "" }, @@ -3756,7 +3756,7 @@ "_srcBlendFactor": 770, "_dstBlendFactor": 771, "_spriteFrame": { - "__uuid__": "66c27f02-719e-422c-9277-42063833c0af" + "__uuid__": "4c2ac211-077a-4783-92b7-42964571ebfe" }, "_type": 0, "_sizeMode": 1, @@ -3770,7 +3770,7 @@ "_fillRange": 0, "_isTrimmedMode": true, "_atlas": { - "__uuid__": "cc01997d-495e-480d-871e-be405a6c38b5" + "__uuid__": "f2c494b7-b6df-488f-b194-358235b0f180" }, "_id": "" }, @@ -3801,7 +3801,7 @@ "_srcBlendFactor": 770, "_dstBlendFactor": 771, "_spriteFrame": { - "__uuid__": "2c8edc9c-c130-4c61-98f1-0a9b2edf3270" + "__uuid__": "e122aac4-873c-4996-bbc8-7fdbd2cd0e60" }, "_type": 3, "_sizeMode": 0, @@ -3815,7 +3815,7 @@ "_fillRange": 1, "_isTrimmedMode": true, "_atlas": { - "__uuid__": "cc01997d-495e-480d-871e-be405a6c38b5" + "__uuid__": "f2c494b7-b6df-488f-b194-358235b0f180" }, "_id": "" }, @@ -3910,7 +3910,7 @@ "_srcBlendFactor": 770, "_dstBlendFactor": 771, "_spriteFrame": { - "__uuid__": "66c27f02-719e-422c-9277-42063833c0af" + "__uuid__": "4c2ac211-077a-4783-92b7-42964571ebfe" }, "_type": 0, "_sizeMode": 1, @@ -3924,7 +3924,7 @@ "_fillRange": 0, "_isTrimmedMode": true, "_atlas": { - "__uuid__": "cc01997d-495e-480d-871e-be405a6c38b5" + "__uuid__": "f2c494b7-b6df-488f-b194-358235b0f180" }, "_id": "" }, @@ -4019,7 +4019,7 @@ "_srcBlendFactor": 770, "_dstBlendFactor": 771, "_spriteFrame": { - "__uuid__": "66c27f02-719e-422c-9277-42063833c0af" + "__uuid__": "4c2ac211-077a-4783-92b7-42964571ebfe" }, "_type": 0, "_sizeMode": 1, @@ -4033,7 +4033,7 @@ "_fillRange": 0, "_isTrimmedMode": true, "_atlas": { - "__uuid__": "cc01997d-495e-480d-871e-be405a6c38b5" + "__uuid__": "f2c494b7-b6df-488f-b194-358235b0f180" }, "_id": "" }, diff --git a/library/imports/ec/ec5316c1-ec42-4609-9d87-2e0f9a8a5ca0.json b/library/imports/f6/f68ebe9a-38e9-4208-8ac6-77d20462d9d6.json similarity index 64% rename from library/imports/ec/ec5316c1-ec42-4609-9d87-2e0f9a8a5ca0.json rename to library/imports/f6/f68ebe9a-38e9-4208-8ac6-77d20462d9d6.json index 91565aa..2f8aaac 100644 --- a/library/imports/ec/ec5316c1-ec42-4609-9d87-2e0f9a8a5ca0.json +++ b/library/imports/f6/f68ebe9a-38e9-4208-8ac6-77d20462d9d6.json @@ -2,11 +2,11 @@ "__type__": "cc.SpriteFrame", "content": { "name": "4down1", - "texture": "ed2c3a21-0522-445d-9904-76843208705f", - "atlas": "d7e227ab-cc06-48f5-a2ac-092b19ec7f6f", + "texture": "c660c59d-e175-4194-aaf3-33d1d03b783f", + "atlas": "3d019ed8-3019-436d-add0-ceeb02a5baaf", "rect": [ - 565, - 366, + 861, + 142, 122, 45 ], @@ -18,7 +18,6 @@ 122, 45 ], - "rotated": 1, "capInsets": [ 0, 0, diff --git a/library/imports/f8/f895411c-ea37-4419-9f12-057e76049b29.json b/library/imports/f8/f895411c-ea37-4419-9f12-057e76049b29.json new file mode 100644 index 0000000..127e109 --- /dev/null +++ b/library/imports/f8/f895411c-ea37-4419-9f12-057e76049b29.json @@ -0,0 +1,29 @@ +{ + "__type__": "cc.SpriteFrame", + "content": { + "name": "2color4", + "texture": "418b4767-01bf-4ac2-823b-9880f2a79215", + "atlas": "cc01997d-495e-480d-871e-be405a6c38b5", + "rect": [ + 1127, + 627, + 61, + 146 + ], + "offset": [ + 0, + 0 + ], + "originalSize": [ + 61, + 146 + ], + "rotated": 1, + "capInsets": [ + 0, + 0, + 0, + 0 + ] + } +} \ No newline at end of file diff --git a/library/imports/f9/f9de4f9f-c4fa-49af-a8c5-7299bbbc26c6.json b/library/imports/f9/f9de4f9f-c4fa-49af-a8c5-7299bbbc26c6.json new file mode 100644 index 0000000..7937204 --- /dev/null +++ b/library/imports/f9/f9de4f9f-c4fa-49af-a8c5-7299bbbc26c6.json @@ -0,0 +1,28 @@ +{ + "__type__": "cc.SpriteFrame", + "content": { + "name": "10color1", + "texture": "418b4767-01bf-4ac2-823b-9880f2a79215", + "atlas": "cc01997d-495e-480d-871e-be405a6c38b5", + "rect": [ + 801, + 900, + 138, + 69 + ], + "offset": [ + 0, + 0 + ], + "originalSize": [ + 138, + 69 + ], + "capInsets": [ + 0, + 0, + 0, + 0 + ] + } +} \ No newline at end of file diff --git a/library/imports/a3/a36546af-228b-4f2c-bb43-5d5eccc382d3.json b/library/imports/fa/fa7e8b5f-2600-4a98-8b15-1d95d419fbdb.json similarity index 66% rename from library/imports/a3/a36546af-228b-4f2c-bb43-5d5eccc382d3.json rename to library/imports/fa/fa7e8b5f-2600-4a98-8b15-1d95d419fbdb.json index cf568fa..94152e6 100644 --- a/library/imports/a3/a36546af-228b-4f2c-bb43-5d5eccc382d3.json +++ b/library/imports/fa/fa7e8b5f-2600-4a98-8b15-1d95d419fbdb.json @@ -2,11 +2,11 @@ "__type__": "cc.SpriteFrame", "content": { "name": "5down5", - "texture": "ed2c3a21-0522-445d-9904-76843208705f", - "atlas": "d7e227ab-cc06-48f5-a2ac-092b19ec7f6f", + "texture": "c660c59d-e175-4194-aaf3-33d1d03b783f", + "atlas": "3d019ed8-3019-436d-add0-ceeb02a5baaf", "rect": [ - 941, 1, + 330, 45, 245 ], @@ -18,6 +18,7 @@ 45, 245 ], + "rotated": 1, "capInsets": [ 0, 0, diff --git a/library/imports/fc/fc41ae6e-8743-4057-86fa-bff2f8ff171b.json b/library/imports/fc/fc41ae6e-8743-4057-86fa-bff2f8ff171b.json index a6ade7c..9274f33 100644 --- a/library/imports/fc/fc41ae6e-8743-4057-86fa-bff2f8ff171b.json +++ b/library/imports/fc/fc41ae6e-8743-4057-86fa-bff2f8ff171b.json @@ -159,7 +159,7 @@ "_srcBlendFactor": 770, "_dstBlendFactor": 771, "_spriteFrame": { - "__uuid__": "02a22e2f-85e0-4ce1-a955-6ea4bf514319" + "__uuid__": "b679c771-a901-4df3-a592-4ebd4cad002e" }, "_type": 0, "_sizeMode": 1, @@ -173,7 +173,7 @@ "_fillRange": 0, "_isTrimmedMode": true, "_atlas": { - "__uuid__": "cc01997d-495e-480d-871e-be405a6c38b5" + "__uuid__": "f2c494b7-b6df-488f-b194-358235b0f180" }, "_id": "" }, diff --git a/library/imports/fc/fc8fd6fa-3cc2-4a69-a2f7-2c521de510b1.json b/library/imports/fc/fc8fd6fa-3cc2-4a69-a2f7-2c521de510b1.json new file mode 100644 index 0000000..fe9d663 --- /dev/null +++ b/library/imports/fc/fc8fd6fa-3cc2-4a69-a2f7-2c521de510b1.json @@ -0,0 +1,28 @@ +{ + "__type__": "cc.SpriteFrame", + "content": { + "name": "wall1", + "texture": "418b4767-01bf-4ac2-823b-9880f2a79215", + "atlas": "cc01997d-495e-480d-871e-be405a6c38b5", + "rect": [ + 941, + 900, + 138, + 69 + ], + "offset": [ + 0, + 0 + ], + "originalSize": [ + 138, + 69 + ], + "capInsets": [ + 0, + 0, + 0, + 0 + ] + } +} \ No newline at end of file diff --git a/library/imports/fe/fe897368-c5ca-4c14-a316-afe70f5e80cc.json b/library/imports/fe/fe897368-c5ca-4c14-a316-afe70f5e80cc.json new file mode 100644 index 0000000..4ce2328 --- /dev/null +++ b/library/imports/fe/fe897368-c5ca-4c14-a316-afe70f5e80cc.json @@ -0,0 +1,29 @@ +{ + "__type__": "cc.SpriteFrame", + "content": { + "name": "6color6", + "texture": "418b4767-01bf-4ac2-823b-9880f2a79215", + "atlas": "cc01997d-495e-480d-871e-be405a6c38b5", + "rect": [ + 518, + 1, + 61, + 387 + ], + "offset": [ + 0, + 0 + ], + "originalSize": [ + 61, + 387 + ], + "rotated": 1, + "capInsets": [ + 0, + 0, + 0, + 0 + ] + } +} \ No newline at end of file diff --git a/library/uuid-to-mtime.json b/library/uuid-to-mtime.json index 6385171..1b5a117 100644 --- a/library/uuid-to-mtime.json +++ b/library/uuid-to-mtime.json @@ -1,43 +1,27 @@ { "2e3d6223-9889-4122-8121-c6d837f5367e": { -<<<<<<< HEAD "asset": 1750920249178, "meta": 1751250884665, "relativePath": "migration" }, "29f52784-2fca-467b-92e7-8fd9ef8c57b7": { - "asset": 1750920250061, - "meta": 1751250884680, + "asset": 1751264990546, + "meta": 1751265754020, "relativePath": "Scene" }, "4734c20c-0db8-4eb2-92ea-e692f4d70934": { - "asset": 1750920250250, - "meta": 1751250884682, -======= - "asset": 1750920400385, - "meta": 1750920534748, - "relativePath": "migration" - }, - "29f52784-2fca-467b-92e7-8fd9ef8c57b7": { - "asset": 1750920400216, - "meta": 1750920534753, - "relativePath": "Scene" - }, - "4734c20c-0db8-4eb2-92ea-e692f4d70934": { - "asset": 1750920400254, - "meta": 1750920534753, ->>>>>>> 0a31a7a5abc2c505bf743aa596e1c765a0405152 + "asset": 1751264990552, + "meta": 1751265754021, "relativePath": "Script" }, "7a231473-d1df-4b05-8620-6376c36252c1": { - "asset": 1750920400384, - "meta": 1750920534816, + "asset": 1594224021434, + "meta": 1715325874879, "relativePath": "migration\\use_v2.1-2.2.1_cc.Toggle_event.js" }, "7c1d6faa-66b9-4423-aa04-8c38a15768cf": { -<<<<<<< HEAD - "asset": 1750920249005, - "meta": 1751250884665, + "asset": 1751264990560, + "meta": 1751265754016, "relativePath": "animation" }, "6ebfe2d9-539a-4853-8b16-fca5c89cf2ce": { @@ -46,8 +30,8 @@ "relativePath": "music" }, "bf3935ca-518a-42f4-84e4-ad96badfd1b4": { - "asset": 1750920249225, - "meta": 1751250884678, + "asset": 1751265193383, + "meta": 1751265754017, "relativePath": "prefab" }, "52e78fe3-9095-42ad-8e4d-f9bb12dc69ce": { @@ -56,8 +40,8 @@ "relativePath": "resources" }, "2880dc26-5b38-48bd-baba-daaec97499cb": { - "asset": 1751253653508, - "meta": 1751254278271, + "asset": 1751268493348, + "meta": 1751268533997, "relativePath": "res" }, "eaa8b84d-69d0-4170-9f7d-8179ea948cde": { @@ -103,224 +87,119 @@ "2a81f82d-8d16-44af-b947-44eea4dde54f": { "asset": 1750920250234, "meta": 1751250884741, -======= - "asset": 1751017162421, - "meta": 1751249638014, - "relativePath": "animation" - }, - "6ebfe2d9-539a-4853-8b16-fca5c89cf2ce": { - "asset": 1750920400407, - "meta": 1750920534748, - "relativePath": "music" - }, - "bf3935ca-518a-42f4-84e4-ad96badfd1b4": { - "asset": 1750920532628, - "meta": 1750920534748, - "relativePath": "prefab" - }, - "52e78fe3-9095-42ad-8e4d-f9bb12dc69ce": { - "asset": 1750920400633, - "meta": 1750920534748, - "relativePath": "resources" - }, - "afa9e39a-94ca-477f-8a2a-25082d9092c3": { - "asset": 1750920400272, - "meta": 1750920534753, - "relativePath": "Shader" - }, - "2880dc26-5b38-48bd-baba-daaec97499cb": { - "asset": 1750920532628, - "meta": 1750920534748, - "relativePath": "res" - }, - "eaa8b84d-69d0-4170-9f7d-8179ea948cde": { - "asset": 1750920400247, - "meta": 1750920535717, - "relativePath": "Script\\module" - }, - "8848cd9b-8115-456d-a656-2abcda1dadbe": { - "asset": 1750920400240, - "meta": 1750920537037, - "relativePath": "Script\\module\\Config" - }, - "13a0b173-d59e-4a9d-b5e3-4dbe4dc37cc1": { - "asset": 1750920400242, - "meta": 1750920537043, - "relativePath": "Script\\module\\Crypto" - }, - "b4e113c6-a987-4133-bfa0-3355d8ab4bd1": { - "asset": 1750920400242, - "meta": 1750920537053, - "relativePath": "Script\\module\\GameStart" - }, - "0487cacb-b94a-4ab6-a301-b6402ab0ac5d": { - "asset": 1750920400243, - "meta": 1750920537068, - "relativePath": "Script\\module\\Music" - }, - "ff6560d9-676d-42ad-8ec7-e44acb84ad9e": { - "asset": 1750920400244, - "meta": 1750920537068, - "relativePath": "Script\\module\\Notification" - }, - "d3520299-33dc-43d2-b522-d424efb5575d": { - "asset": 1750920400245, - "meta": 1750920537073, - "relativePath": "Script\\module\\RankList" - }, - "2af8f2ef-b8a0-43ad-a144-ef4a887f2fa9": { - "asset": 1750920400247, - "meta": 1750920537078, - "relativePath": "Script\\module\\Storage" - }, - "2a81f82d-8d16-44af-b947-44eea4dde54f": { - "asset": 1750920400248, - "meta": 1750920537085, ->>>>>>> 0a31a7a5abc2c505bf743aa596e1c765a0405152 "relativePath": "Script\\module\\Tool" }, "e64e1a97-c93f-4257-ab34-80341d8ff79d": { - "asset": 1750920400242, - "meta": 1750920539825, + "asset": 1627607030000, + "meta": 1718260711110, "relativePath": "Script\\module\\Crypto\\crypto-js.min.js" }, "55403563-1a5a-4f2f-9eb8-82c762641837": { - "asset": 1750920400243, - "meta": 1750920540003, + "asset": 1718260279375, + "meta": 1718260711215, "relativePath": "Script\\module\\Notification\\Notification.ts" }, "5c9b8159-89a3-4b32-b303-b3d4f7ac1c9f": { - "asset": 1750920400220, - "meta": 1750920535287, + "asset": 1626178655932, + "meta": 1718265038280, "relativePath": "Script\\DynamicAtlasManager.js" }, "2cddbdcb-5dba-4b13-960c-9ebe6d17a7db": { - "asset": 1750920400437, - "meta": 1750920536538, + "asset": 1718692696758, + "meta": 1719800322876, "relativePath": "resources\\Json\\LEVEL_INFO.json" }, "066e91c2-fc55-407c-b061-9e4de4a9f224": { -<<<<<<< HEAD "asset": 1750920249666, "meta": 1751250884706, -======= - "asset": 1750920400542, - "meta": 1750920534846, ->>>>>>> 0a31a7a5abc2c505bf743aa596e1c765a0405152 "relativePath": "resources\\Json" }, "e8b23e56-8d10-44ad-a8f0-2e637cc45533": { - "asset": 1750920400222, - "meta": 1750920535441, + "asset": 1718681194622, + "meta": 1718681195177, "relativePath": "Script\\GameScene.js" }, "e92938d8-5d93-4823-8770-fd489523a2f5": { -<<<<<<< HEAD - "asset": 1750920250470, - "meta": 1751250884727, + "asset": 1751264990554, + "meta": 1751265754026, "relativePath": "UI\\UI" }, "bdc76845-baea-4381-911e-af437cccf839": { "asset": 1750920250218, "meta": 1751250884739, -======= - "asset": 1751016612166, - "meta": 1751249638015, - "relativePath": "UI\\UI" - }, - "bdc76845-baea-4381-911e-af437cccf839": { - "asset": 1750920400246, - "meta": 1750920537076, ->>>>>>> 0a31a7a5abc2c505bf743aa596e1c765a0405152 "relativePath": "Script\\module\\Share" }, "b42c4fc1-4cd1-4b12-b206-930cea3d49ca": { - "asset": 1750920400245, - "meta": 1750920537714, + "asset": 1720419330469, + "meta": 1720607873884, "relativePath": "Script\\module\\Share.zip" }, "d54211e0-2d28-4528-88e3-e5fd7c9b59a2": { - "asset": 1750920400245, - "meta": 1750920540411, + "asset": 1721812722990, + "meta": 1721814802300, "relativePath": "Script\\module\\RankList\\List.ts" }, "e74a9f7d-2031-4e69-bcb2-9998174088b2": { - "asset": 1750920400225, - "meta": 1750920535820, + "asset": 1722825953945, + "meta": 1722825954677, "relativePath": "Script\\RankManager.ts" }, "9c08062d-4cf1-4b6e-a8ba-4a3881cc7e7d": { - "asset": 1750920400215, - "meta": 1750920535198, + "asset": 1750235430515, + "meta": 1750235430521, "relativePath": "Scene\\LoadScene.fire" }, "93c9bdf3-8205-46e5-a8f1-3576b0dbc836": { -<<<<<<< HEAD "asset": 1750920250250, "meta": 1751250884715, -======= - "asset": 1750920400228, - "meta": 1750920535855, ->>>>>>> 0a31a7a5abc2c505bf743aa596e1c765a0405152 "relativePath": "Script\\Sdk" }, "ca0f9934-a015-436e-9402-f8e30d4c5de6": { - "asset": 1750920400244, - "meta": 1750920540039, + "asset": 1725446198136, + "meta": 1725446199111, "relativePath": "Script\\module\\RankList\\ItemRender.ts" }, "3bad2bb2-3b0e-4ccc-bab7-6f983d6879f6": { - "asset": 1750920400229, - "meta": 1750920535895, + "asset": 1725867716734, + "meta": 1725867724437, "relativePath": "Script\\Window.ts" }, "e35ab717-e554-40a0-8b4e-ea6805718c97": { - "asset": 1750920400220, - "meta": 1750920535275, + "asset": 1725869717168, + "meta": 1725869717675, "relativePath": "Script\\ControlManager.ts" }, "771a3d9a-4013-4654-a777-fbaea0c93280": { - "asset": 1750920400241, - "meta": 1750920539863, + "asset": 1744193262345, + "meta": 1744193408326, "relativePath": "Script\\module\\Crypto\\HttpUtil.ts" }, "dbc5acf2-1061-4d14-a2c5-61c3b03f302f": { -<<<<<<< HEAD - "asset": 1750920249225, - "meta": 1751250884700, -======= - "asset": 1750920400410, - "meta": 1750920534840, ->>>>>>> 0a31a7a5abc2c505bf743aa596e1c765a0405152 + "asset": 1751264990561, + "meta": 1751265754022, "relativePath": "prefab\\map" }, "805c69df-dfdf-4759-97ae-5a7341f424c7": { - "asset": 1750920400221, - "meta": 1750920535430, + "asset": 1742440857125, + "meta": 1742440898761, "relativePath": "Script\\GameOver.ts" }, "4fc739bf-784a-4b9a-b36f-3752a98df628": { -<<<<<<< HEAD "asset": 1750920249147, "meta": 1751250884665, -======= - "asset": 1750920400381, - "meta": 1750920534748, ->>>>>>> 0a31a7a5abc2c505bf743aa596e1c765a0405152 "relativePath": "effect" }, "edf0e3d4-4233-4e7b-a725-a1a37209b53a": { - "asset": 1750920400364, - "meta": 1750920534779, + "asset": 1744016572170, + "meta": 1748437823787, "relativePath": "effect\\mohu.effect" }, "4b6dcf92-bde1-46a0-9d58-f3abd25cd3fd": { - "asset": 1750920400350, - "meta": 1750920534773, + "asset": 1744021741725, + "meta": 1748437823777, "relativePath": "effect\\full.effect" }, "7929eb2c-aa5c-4d48-bceb-0312f46aede8": { -<<<<<<< HEAD "asset": 1750920250250, "meta": 1751250884715, "relativePath": "Script\\prop" @@ -328,88 +207,56 @@ "c390fa89-6858-4fdd-a0df-42f78cb37275": { "asset": 1750920249242, "meta": 1751250884702, -======= - "asset": 1750920400253, - "meta": 1750920535793, - "relativePath": "Script\\prop" - }, - "c390fa89-6858-4fdd-a0df-42f78cb37275": { - "asset": 1750920400415, - "meta": 1750920534841, ->>>>>>> 0a31a7a5abc2c505bf743aa596e1c765a0405152 "relativePath": "prefab\\prop" }, "92465aa7-5132-43c3-9493-ab5b7ba1e968": { - "asset": 1750920400253, - "meta": 1750920537207, + "asset": 1744100334038, + "meta": 1744100338251, "relativePath": "Script\\prop\\Key.ts" }, "a496b103-90e1-421c-94c5-500167b26227": { - "asset": 1750920400413, - "meta": 1750920536081, + "asset": 1749019402739, + "meta": 1749019402742, "relativePath": "prefab\\prop\\key.prefab" }, "725f6dd5-18b0-44f9-997a-d89b23ac1fc0": { - "asset": 1750920400413, - "meta": 1750920536136, + "asset": 1749019413554, + "meta": 1749019413559, "relativePath": "prefab\\prop\\lock.prefab" }, "a99d5bb3-6216-4c6e-bfb6-f793289870df": { - "asset": 1750920400412, - "meta": 1750920536074, + "asset": 1749118099108, + "meta": 1749118099113, "relativePath": "prefab\\prop\\heng.prefab" }, "b5a00886-b32d-4185-a4a6-fd9f7a8dbe90": { - "asset": 1750920400414, - "meta": 1750920536141, + "asset": 1749118121705, + "meta": 1749118121709, "relativePath": "prefab\\prop\\shu.prefab" }, "7290c680-dfdc-4c59-9736-a614cc2a8bcf": { - "asset": 1750920400246, - "meta": 1750920540413, + "asset": 1744193586570, + "meta": 1744193608920, "relativePath": "Script\\module\\Share\\share.ts" }, "75a77063-a5a9-456a-8b4f-bfde10c137e8": { -<<<<<<< HEAD "asset": 1751254988503, "meta": 1751254988509, -======= - "asset": 1750920400409, - "meta": 1750920536038, ->>>>>>> 0a31a7a5abc2c505bf743aa596e1c765a0405152 "relativePath": "prefab\\map\\turn_Wall.prefab" }, - "1c619601-a6ae-4c45-be2c-20b0d95e950f": { - "asset": 1750933801913, - "meta": 1750933801916, - "relativePath": "prefab\\map\\wall.prefab" - }, "0cf46635-8a58-4196-b24e-d075875778d0": { - "asset": 1750920400411, - "meta": 1750920536063, + "asset": 1749019434200, + "meta": 1749019434204, "relativePath": "prefab\\prop\\boom.prefab" }, -<<<<<<< HEAD - "99be851f-9f4f-4fdd-bd43-3e3f86dd78d2": { - "asset": 1741855414503, - "meta": 1744793852733, - "relativePath": "res\\music" -======= - "79bddc67-afa7-4275-9dc3-a2986648eeff": { - "asset": 1750920400435, - "meta": 1750920534846, - "relativePath": "res\\texture_Block" ->>>>>>> 0a31a7a5abc2c505bf743aa596e1c765a0405152 - }, "7d8008d1-2a44-467e-a492-ddf8527addba": { - "asset": 1750920400248, - "meta": 1750920535765, + "asset": 1744794871178, + "meta": 1744794875511, "relativePath": "Script\\peizhi.ts" }, "4e7ff711-8a91-49f7-8580-bf07609eaaa9": { -<<<<<<< HEAD - "asset": 1750920249966, - "meta": 1751250884710, + "asset": 1751265193385, + "meta": 1751265754024, "relativePath": "resources\\prefab" }, "a500df91-fa68-49df-9b91-3087fab64e20": { @@ -428,8 +275,8 @@ "relativePath": "resources\\prefab\\block\\block12.prefab" }, "4c1187d9-40bd-4210-acd7-0eecf4b2706f": { - "asset": 1751254125782, - "meta": 1751254125793, + "asset": 1751266378121, + "meta": 1751266378128, "relativePath": "resources\\prefab\\block\\block13.prefab" }, "4df8b354-d4c6-4219-852d-37ea032eb450": { @@ -505,964 +352,779 @@ "74a04df7-a212-4b10-b77c-99e06c88867a": { "asset": 1750920249997, "meta": 1751250884729, -======= - "asset": 1750920532643, - "meta": 1750920534860, - "relativePath": "resources\\prefab" - }, - "a500df91-fa68-49df-9b91-3087fab64e20": { - "asset": 1750920400652, - "meta": 1750920536599, - "relativePath": "resources\\prefab\\block" - }, - "2ea4f287-fa08-4f3e-8c66-6f9738b0fd0a": { - "asset": 1750920400638, - "meta": 1750920538413, - "relativePath": "resources\\prefab\\block\\block11.prefab" - }, - "3f275c96-62b0-417f-9224-aeb073192f1d": { - "asset": 1750920400638, - "meta": 1750920538423, - "relativePath": "resources\\prefab\\block\\block12.prefab" - }, - "4c1187d9-40bd-4210-acd7-0eecf4b2706f": { - "asset": 1750920400639, - "meta": 1750920538426, - "relativePath": "resources\\prefab\\block\\block13.prefab" - }, - "4df8b354-d4c6-4219-852d-37ea032eb450": { - "asset": 1750920400641, - "meta": 1750920538453, - "relativePath": "resources\\prefab\\block\\block16.prefab" - }, - "b54f9b14-fdec-476f-98f8-f0a519f7e844": { - "asset": 1750920400640, - "meta": 1750920538443, - "relativePath": "resources\\prefab\\block\\block14.prefab" - }, - "fe980cba-a552-4d61-a357-19c19262f33e": { - "asset": 1750920400642, - "meta": 1750920538458, - "relativePath": "resources\\prefab\\block\\block17.prefab" - }, - "6acd6f05-53d0-4866-b1a3-3fdc05bea16e": { - "asset": 1750920400643, - "meta": 1750920538477, - "relativePath": "resources\\prefab\\block\\block20.prefab" - }, - "be5782f3-3dc7-43b8-a66a-ec50c83d0077": { - "asset": 1750920400640, - "meta": 1750920538448, - "relativePath": "resources\\prefab\\block\\block15.prefab" - }, - "3a3098c2-78cb-4f85-834f-9a282d864462": { - "asset": 1750920400642, - "meta": 1750920538463, - "relativePath": "resources\\prefab\\block\\block19.prefab" - }, - "503530e7-cfb4-4bcb-ac38-d4dd3ce3d1af": { - "asset": 1750920400643, - "meta": 1750920538468, - "relativePath": "resources\\prefab\\block\\block2.prefab" - }, - "bc027956-4f24-4f96-b705-359a19cccb53": { - "asset": 1750920400644, - "meta": 1750920538478, - "relativePath": "resources\\prefab\\block\\block21.prefab" - }, - "59a8c009-6f37-4960-b842-18f457d55412": { - "asset": 1750920400645, - "meta": 1750920538483, - "relativePath": "resources\\prefab\\block\\block22.prefab" - }, - "90a9eb51-3d7f-4094-add0-ad20f9379337": { - "asset": 1750928390962, - "meta": 1750928390966, - "relativePath": "resources\\prefab\\block\\block3.prefab" - }, - "7e0a9fcf-7599-443b-814d-05bf5cca516a": { - "asset": 1750920400649, - "meta": 1750920539128, - "relativePath": "resources\\prefab\\block\\block7.prefab" - }, - "5b0aa537-7f4b-4132-ac45-2101f453a688": { - "asset": 1750920400650, - "meta": 1750920539829, - "relativePath": "resources\\prefab\\block\\block8.prefab" - }, - "0237ad36-2cdb-4e29-944a-8720564056bc": { - "asset": 1750920400651, - "meta": 1750920539877, - "relativePath": "resources\\prefab\\block\\block9.prefab" - }, - "b38991fe-2e45-431c-8f23-974e7905dfaa": { - "asset": 1750920400648, - "meta": 1750920538608, - "relativePath": "resources\\prefab\\block\\block6.prefab" - }, - "74a04df7-a212-4b10-b77c-99e06c88867a": { - "asset": 1750920400660, - "meta": 1750920536599, ->>>>>>> 0a31a7a5abc2c505bf743aa596e1c765a0405152 "relativePath": "resources\\prefab\\wall" }, "a63ade2f-c476-4f26-84e6-b978db27c435": { - "asset": 1750920400655, - "meta": 1750920540691, + "asset": 1751266992986, + "meta": 1751266992991, "relativePath": "resources\\prefab\\wall\\downRight.prefab" }, "fc41ae6e-8743-4057-86fa-bff2f8ff171b": { - "asset": 1750920400659, - "meta": 1750920540735, + "asset": 1751268863599, + "meta": 1751268863605, "relativePath": "resources\\prefab\\wall\\upRight.prefab" }, "a710c09b-ab49-4276-9660-b882fcff8b24": { - "asset": 1750920400654, - "meta": 1750920540687, + "asset": 1751266977982, + "meta": 1751266977987, "relativePath": "resources\\prefab\\wall\\downLeft.prefab" }, "2ad95b5e-51fe-4864-ad40-6743b8fac9d5": { - "asset": 1750920400414, - "meta": 1750920536140, + "asset": 1744881186883, + "meta": 1744881186886, "relativePath": "prefab\\prop\\risefall.prefab" }, "6023e99b-9806-44e9-8325-487a6cfdf3e5": { -<<<<<<< HEAD "asset": 1751254255980, "meta": 1751254255984, -======= - "asset": 1750920400408, - "meta": 1750920536028, ->>>>>>> 0a31a7a5abc2c505bf743aa596e1c765a0405152 "relativePath": "prefab\\map\\MapBlock.prefab" }, "eec86efa-7642-410f-934a-7af388c0311a": { - "asset": 1750920400645, - "meta": 1750920538488, + "asset": 1749540308756, + "meta": 1749540308778, "relativePath": "resources\\prefab\\block\\block23.prefab" }, "b6ab43fe-8e9a-48ac-9dc9-9107a47de661": { - "asset": 1750920400656, - "meta": 1750920540696, + "asset": 1751268465856, + "meta": 1751268465862, "relativePath": "resources\\prefab\\wall\\left.prefab" }, "cef92b6b-13fd-44c8-a4af-848b55a7ba57": { - "asset": 1750920400654, - "meta": 1750920540683, + "asset": 1751268154576, + "meta": 1751268154583, "relativePath": "resources\\prefab\\wall\\down.prefab" }, "8600d9b3-b4ad-4c84-b458-42b4f31addcd": { - "asset": 1750920400657, - "meta": 1750920540703, + "asset": 1751268460610, + "meta": 1751268460618, "relativePath": "resources\\prefab\\wall\\right.prefab" }, "f0da65e3-27d4-43c7-9945-ace5c5d815e5": { - "asset": 1750920400658, - "meta": 1750920540728, + "asset": 1751268823943, + "meta": 1751268823948, "relativePath": "resources\\prefab\\wall\\up.prefab" }, "2873d380-eeb8-4805-af74-462d711f466a": { -<<<<<<< HEAD "asset": 1751254098759, "meta": 1751254098769, -======= - "asset": 1750920400637, - "meta": 1750920538403, ->>>>>>> 0a31a7a5abc2c505bf743aa596e1c765a0405152 "relativePath": "resources\\prefab\\block\\block10.prefab" }, + "e0e349ff-f854-45e4-9764-50b9babdd4f4": { + "asset": 1745394054739, + "meta": 1745394231033, + "relativePath": "Script\\position.ts" + }, "d773d6d6-5bab-40cf-a17e-6742f7217531": { - "asset": 1750920400253, - "meta": 1750920537253, + "asset": 1745396686155, + "meta": 1745396686598, "relativePath": "Script\\prop\\Star.ts" }, "2a1b17d6-1191-49f5-9d22-584e0776462b": { - "asset": 1750920400478, - "meta": 1750920536433, + "asset": 1745394376000, + "meta": 1745405584681, "relativePath": "resources\\Json\\level16.json" }, "b77a22b4-309b-44fa-abd8-2969a04f40c1": { - "asset": 1750920400479, - "meta": 1750920536435, + "asset": 1745397707000, + "meta": 1745405584684, "relativePath": "resources\\Json\\level18.json" }, "9b2dd653-8198-4221-b239-f531220b63e9": { - "asset": 1750920400481, - "meta": 1750920536435, + "asset": 1745403002000, + "meta": 1745405584687, "relativePath": "resources\\Json\\level22.json" }, "ecd6848d-38d5-46d2-996f-30b47678d91e": { - "asset": 1750920400483, - "meta": 1750920536443, + "asset": 1745403504000, + "meta": 1745405584693, "relativePath": "resources\\Json\\level24.json" }, "2982813d-b86d-476a-b7f0-4aa5db975110": { - "asset": 1750920400480, - "meta": 1750920536440, + "asset": 1745402187000, + "meta": 1745405584699, "relativePath": "resources\\Json\\level20.json" }, "051d3cb4-82a8-434d-8c54-db90891e921a": { - "asset": 1750920400486, - "meta": 1750920536443, + "asset": 1745404470000, + "meta": 1745405584707, "relativePath": "resources\\Json\\level27.json" }, "b70aeb1f-01ce-4fdd-be00-c62f1119cbcc": { - "asset": 1750920400487, - "meta": 1750920536445, + "asset": 1745404916000, + "meta": 1745405584708, "relativePath": "resources\\Json\\level28.json" }, "6ae06208-a2c9-4a04-8c00-afdf3893db50": { - "asset": 1750920400489, - "meta": 1750920536450, + "asset": 1745406160000, + "meta": 1745479622030, "relativePath": "resources\\Json\\level30.json" }, "8a0fe43e-e606-48f4-bed9-5354abd6ca9e": { - "asset": 1750920400488, - "meta": 1750920536445, + "asset": 1745405636000, + "meta": 1745479622030, "relativePath": "resources\\Json\\level29.json" }, "18986fd3-d6c9-4343-9052-bb3bb4361be1": { - "asset": 1750920400490, - "meta": 1750920536453, + "asset": 1745487706000, + "meta": 1745550983303, "relativePath": "resources\\Json\\level31.json" }, "c6199a6f-b313-437d-8b9c-165e1466b659": { - "asset": 1750920400494, - "meta": 1750920536459, + "asset": 1745487716000, + "meta": 1745550983308, "relativePath": "resources\\Json\\level38.json" }, "33709cdd-1903-43f6-9791-ffcdeaefcf92": { - "asset": 1750920400493, - "meta": 1750920536458, + "asset": 1745465902000, + "meta": 1745479622062, "relativePath": "resources\\Json\\level36.json" }, "5a13c40d-c6ea-4902-a528-aa45a249bbd0": { - "asset": 1750920400494, - "meta": 1750920536460, + "asset": 1745475730000, + "meta": 1745479622062, "relativePath": "resources\\Json\\level39.json" }, "e95a2979-58a0-4f26-a874-6b1648ed524f": { - "asset": 1750920400498, - "meta": 1750920536470, + "asset": 1745486441000, + "meta": 1745550983337, "relativePath": "resources\\Json\\level43.json" }, "6e749de9-76c8-4528-8894-a6b38757e70a": { - "asset": 1750920400505, - "meta": 1750920536473, + "asset": 1745495270000, + "meta": 1745550983365, "relativePath": "resources\\Json\\level50.json" }, "806d1742-26ea-42a9-ac9e-4be66adb4122": { - "asset": 1750920400502, - "meta": 1750920536471, + "asset": 1745488624000, + "meta": 1745550983355, "relativePath": "resources\\Json\\level47.json" }, "15e917cb-b4e4-4694-a025-45bd3a31ccc3": { -<<<<<<< HEAD "asset": 1751254163888, "meta": 1751254163897, -======= - "asset": 1750920400642, - "meta": 1750920538458, ->>>>>>> 0a31a7a5abc2c505bf743aa596e1c765a0405152 "relativePath": "resources\\prefab\\block\\block18.prefab" }, "52958c6c-bab5-40a7-9e16-328fb1143a3a": { - "asset": 1750920400224, - "meta": 1750920535713, + "asset": 1745485058335, + "meta": 1745485470601, "relativePath": "Script\\MapBlock.ts" }, "d4a58722-34f3-4a67-a943-53c8c6a2f040": { - "asset": 1750920400328, - "meta": 1750920538625, + "asset": 1745548862095, + "meta": 1745550741559, "relativePath": "UI\\UI\\icon.png" }, "1024689e-c2b8-4ef4-91de-02732703334f": { - "asset": 1750920400659, - "meta": 1750920540717, + "asset": 1751267006288, + "meta": 1751267006293, "relativePath": "resources\\prefab\\wall\\upLeft.prefab" }, "340590d7-f501-4626-8c74-a8246476d27e": { -<<<<<<< HEAD "asset": 1750920249273, "meta": 1751250884704, -======= - "asset": 1750920400423, - "meta": 1750920534845, ->>>>>>> 0a31a7a5abc2c505bf743aa596e1c765a0405152 "relativePath": "res\\spine" }, "34fa006b-b745-41c9-8260-44a60254952b": { - "asset": 1750920400423, - "meta": 1750920541408, + "asset": 1745742957504, + "meta": 1745821252684, "relativePath": "res\\spine\\破碎.plist" }, "c83397a1-d62d-4546-9599-4561e767d33f": { - "asset": 1750920400422, - "meta": 1750920536209, + "asset": 1744962657274, + "meta": 1745821252626, "relativePath": "res\\spine\\star.png" }, "e1d57e63-4f2f-467d-9c55-0a889d5533a8": { - "asset": 1750920400436, - "meta": 1750920536277, + "asset": 1745228724000, + "meta": 1745834136422, "relativePath": "resources\\Json\\CLICK_DATA.json" }, "8c09ea35-2933-437e-9de7-bb94ad1c019e": { - "asset": 1750920400439, - "meta": 1750920536313, + "asset": 1745315037000, + "meta": 1745834136423, "relativePath": "resources\\Json\\level10.json" }, "933d4cfc-5ecb-43c2-a7ec-f0b8ac153140": { - "asset": 1750920400459, - "meta": 1750920536396, + "asset": 1745317845000, + "meta": 1745834136424, "relativePath": "resources\\Json\\level13.json" }, "92dc8a08-509a-4c12-b296-f37d8e0bd4b7": { - "asset": 1750920400453, - "meta": 1750920536376, + "asset": 1745316492000, + "meta": 1745834136428, "relativePath": "resources\\Json\\level12.json" }, "7e2d7a92-92bd-4774-863b-73f079fd6f86": { - "asset": 1750920400445, - "meta": 1750920536356, + "asset": 1745316128000, + "meta": 1745834136430, "relativePath": "resources\\Json\\level11.json" }, "059e1eb6-2d96-4ad8-83c6-eb9c43d16925": { - "asset": 1750920400474, - "meta": 1750920536427, + "asset": 1745396864000, + "meta": 1745834136434, "relativePath": "resources\\Json\\level15.json" }, "4083be8e-2350-48c4-8beb-6df4c6173240": { - "asset": 1750920400438, - "meta": 1750920536300, + "asset": 1722322206000, + "meta": 1745834136438, "relativePath": "resources\\Json\\dayu_config.json" }, "e480c6e1-3b6f-479e-a4af-c06173b519ea": { - "asset": 1750920400478, - "meta": 1750920536435, + "asset": 1745828826000, + "meta": 1745834136448, "relativePath": "resources\\Json\\level17.json" }, "af87aa67-fec6-4e59-8e5c-e6a5331acc40": { - "asset": 1750920400505, - "meta": 1750920536478, + "asset": 1745309965000, + "meta": 1745834136451, "relativePath": "resources\\Json\\level5.json" }, "e2d961de-5add-4097-a2ba-cc92954a5747": { - "asset": 1750920400495, - "meta": 1750920536461, + "asset": 1745314309000, + "meta": 1745834136453, "relativePath": "resources\\Json\\level4.json" }, "2d69a479-18ec-4787-b35f-e9a9b3247435": { - "asset": 1750920400437, - "meta": 1750920536303, + "asset": 1718613752000, + "meta": 1745834136454, "relativePath": "resources\\Json\\GM_INFO.json" }, "d42cfa1a-14e6-427c-ad23-2cee3474ca86": { - "asset": 1750920400511, - "meta": 1750920536488, + "asset": 1745310786000, + "meta": 1745834136458, "relativePath": "resources\\Json\\level6.json" }, "c1046fe0-8030-42b7-80d1-002890db1a07": { - "asset": 1750920400526, - "meta": 1750920536511, + "asset": 1745314351000, + "meta": 1745834136460, "relativePath": "resources\\Json\\level8.json" }, "b4c32c3b-1ddc-47da-b926-093b56074e4f": { - "asset": 1750920400533, - "meta": 1750920536522, + "asset": 1745314622000, + "meta": 1745834136467, "relativePath": "resources\\Json\\level9.json" }, "ee202f7f-e6c8-47ef-b7fd-86021066be83": { - "asset": 1750920400520, - "meta": 1750920536503, + "asset": 1745313953000, + "meta": 1745834136473, "relativePath": "resources\\Json\\level7.json" }, "f4cdb20d-19b1-4bdf-ace4-709363ecabc5": { - "asset": 1750920400511, - "meta": 1750920536488, + "asset": 1745569874000, + "meta": 1745834136485, "relativePath": "resources\\Json\\level60.json" }, "7e27fe4e-f930-480a-8d92-0c3107d28e74": { - "asset": 1750920400512, - "meta": 1750920536488, + "asset": 1745570132000, + "meta": 1745834136486, "relativePath": "resources\\Json\\level61.json" }, "060510e3-3b32-4b9c-8f09-d72f9b820eda": { - "asset": 1750920400513, - "meta": 1750920536488, + "asset": 1745572200000, + "meta": 1745834136490, "relativePath": "resources\\Json\\level63.json" }, "c59bbf88-51e4-47a8-8290-7f93cd2e8748": { - "asset": 1750920400514, - "meta": 1750920536495, + "asset": 1745573247000, + "meta": 1745834136491, "relativePath": "resources\\Json\\level64.json" }, "ec4fd522-e3c4-4f7d-870c-f8a4e9ad722a": { - "asset": 1750920400515, - "meta": 1750920536493, + "asset": 1745830765000, + "meta": 1745834136492, "relativePath": "resources\\Json\\level65.json" }, "1b839414-50d7-4a44-92ce-e3ae734be929": { - "asset": 1750920400516, - "meta": 1750920536496, + "asset": 1745830634000, + "meta": 1745834136494, "relativePath": "resources\\Json\\level67.json" }, "baef7421-d845-44a8-b30c-616eb0b30b1f": { - "asset": 1750920400515, - "meta": 1750920536493, + "asset": 1745830758000, + "meta": 1745834136496, "relativePath": "resources\\Json\\level66.json" }, "257c6394-95e2-415a-b84f-aa8079faeb97": { - "asset": 1750920400464, - "meta": 1750920536405, + "asset": 1745834174348, + "meta": 1745834181067, "relativePath": "resources\\Json\\level14.json" }, "e08a7960-96e0-4c20-85a3-daecc3c215db": { - "asset": 1750920400512, - "meta": 1750920536488, + "asset": 1745834204964, + "meta": 1745834212082, "relativePath": "resources\\Json\\level62.json" }, "cb1d6907-6e2b-4c96-ae04-20f4be8eca78": { -<<<<<<< HEAD "asset": 1750920250438, "meta": 1751250884688, -======= - "asset": 1750920400319, - "meta": 1750920534753, ->>>>>>> 0a31a7a5abc2c505bf743aa596e1c765a0405152 "relativePath": "UI" }, "a5a1fd16-fffe-4e74-8bf9-7fd966fce8b7": { - "asset": 1750920400482, - "meta": 1750920536445, + "asset": 1745999667397, + "meta": 1745999674098, "relativePath": "resources\\Json\\level23.json" }, "7575a6bd-a21d-491e-aad2-e40a189683e9": { - "asset": 1750920400387, - "meta": 1750920536424, + "asset": 1746000024920, + "meta": 1746000148798, "relativePath": "music\\hit.mp3" }, "ec293610-1767-46e8-b6b6-4a9a79ef2233": { - "asset": 1750920400386, - "meta": 1750920536421, + "asset": 1746000025640, + "meta": 1746000148800, "relativePath": "music\\down.mp3" }, "8d67c864-c7f4-4305-8b3b-2d66eb69e349": { - "asset": 1750920400405, - "meta": 1750920536423, + "asset": 1746000102638, + "meta": 1746000148801, "relativePath": "music\\xiaochu.mp3" }, "61d4c718-db3b-4b31-8221-f16bea3cf030": { - "asset": 1750920400242, - "meta": 1750920539908, + "asset": 1750315683427, + "meta": 1750325562701, "relativePath": "Script\\module\\GameStart\\GameAppStart.ts" }, "825f4992-deeb-4f19-8c4e-9a65b191753b": { -<<<<<<< HEAD "asset": 1750920249871, "meta": 1751250884708, -======= - "asset": 1750920400608, - "meta": 1750920534858, ->>>>>>> 0a31a7a5abc2c505bf743aa596e1c765a0405152 "relativePath": "resources\\Particle" }, "e3319d66-f8c4-44d7-8e31-d0decdefcacc": { - "asset": 1750920400490, - "meta": 1750920536454, + "asset": 1746003674850, + "meta": 1746003698356, "relativePath": "resources\\Json\\level32.json" }, "e382f149-9fe7-435f-b800-434f8203afe3": { - "asset": 1750920400492, - "meta": 1750920536456, + "asset": 1746004843292, + "meta": 1746004873879, "relativePath": "resources\\Json\\level35.json" }, "9a2c5cbb-404d-4802-8d16-b7dc44bc9b63": { - "asset": 1750920400491, - "meta": 1750920536455, + "asset": 1746005640491, + "meta": 1746005750406, "relativePath": "resources\\Json\\level33.json" }, "7271b947-0876-411a-816b-d6bb158d1490": { - "asset": 1750920400493, - "meta": 1750920536462, + "asset": 1746007994885, + "meta": 1746008162669, "relativePath": "resources\\Json\\level37.json" }, "c2861659-2172-4217-8bac-8daaca836f4f": { - "asset": 1750920400495, - "meta": 1750920536463, + "asset": 1746007574206, + "meta": 1746008162671, "relativePath": "resources\\Json\\level40.json" }, "9c856152-685e-4679-951a-e49978ae6b2a": { - "asset": 1750920400497, - "meta": 1750920536466, + "asset": 1746008540669, + "meta": 1746008542101, "relativePath": "resources\\Json\\level42.json" }, "36a3a2e9-11ae-4359-bb93-01f8f61c92bf": { - "asset": 1750920400496, - "meta": 1750920536465, + "asset": 1746008535367, + "meta": 1746008542107, "relativePath": "resources\\Json\\level41.json" }, "84916af2-bab0-43e5-91fc-07108bd831ed": { - "asset": 1750920400502, - "meta": 1750920536473, + "asset": 1746009877154, + "meta": 1746009887239, "relativePath": "resources\\Json\\level46.json" }, "55a0b4dc-93a3-4a1e-8238-bd44427943ae": { - "asset": 1750920400504, - "meta": 1750920536473, + "asset": 1746500414194, + "meta": 1746500461290, "relativePath": "resources\\Json\\level49.json" }, "10029dfc-5454-4977-bd11-8809e8f48cac": { - "asset": 1750920400247, - "meta": 1750920540437, + "asset": 1746683841330, + "meta": 1746683842661, "relativePath": "Script\\module\\Storage\\Storage.ts" }, "e98498e1-12bf-4280-8def-6f8e543fb934": { - "asset": 1750920400409, - "meta": 1750920536038, + "asset": 1747886188004, + "meta": 1747886188009, "relativePath": "prefab\\map\\reduce.prefab" }, "ca599214-e611-4461-8af3-a0de7d60ea53": { - "asset": 1750920400226, - "meta": 1750920535826, + "asset": 1746696453753, + "meta": 1746696482648, "relativePath": "Script\\Reduce.ts" }, "d2e9f95d-f8f9-45a8-8a3b-67a1f370a18d": { - "asset": 1750920400542, - "meta": 1750920541765, + "asset": 1746685509000, + "meta": 1746696858052, "relativePath": "resources\\Particle\\bot_1_1.plist" }, "3a6e128b-d998-4c0b-b1ff-762130a580a2": { - "asset": 1750920400545, - "meta": 1750920541760, + "asset": 1746685566000, + "meta": 1746696858052, "relativePath": "resources\\Particle\\bot_1_3.plist" }, "4386a35e-0b50-4e89-a827-6319df821ec2": { - "asset": 1750920400544, - "meta": 1750920541756, + "asset": 1746685533000, + "meta": 1746696858063, "relativePath": "resources\\Particle\\bot_1_2.plist" }, "a8a0985f-7251-4998-a641-c2333fbef6c6": { - "asset": 1750920400549, - "meta": 1750920541790, + "asset": 1746685740000, + "meta": 1746696858063, "relativePath": "resources\\Particle\\bot_2_3.plist" }, "d8d32fc1-13ba-435c-a2b5-b6afb5ead4c3": { - "asset": 1750920400547, - "meta": 1750920541775, + "asset": 1746685589000, + "meta": 1746696858064, "relativePath": "resources\\Particle\\bot_2_1.plist" }, "49e6cc86-2188-4109-87fd-e23e3a6bb1d3": { - "asset": 1750920400551, - "meta": 1750920541797, + "asset": 1746685761000, + "meta": 1746696858065, "relativePath": "resources\\Particle\\bot_3_1.plist" }, "cc1282c3-e268-4bbb-a5a6-895a475cfc7e": { - "asset": 1750920400553, - "meta": 1750920541805, + "asset": 1746696424000, + "meta": 1746696858065, "relativePath": "resources\\Particle\\bot_3_2.plist" }, "870ec0a5-ac62-49c6-b365-09e22bdf9448": { - "asset": 1750920400555, - "meta": 1750920541868, + "asset": 1746687083000, + "meta": 1746696858065, "relativePath": "resources\\Particle\\bot_3_3.plist" }, "cf99e49b-06ca-454a-9a13-29c4e96328c6": { - "asset": 1750920400557, - "meta": 1750920541878, + "asset": 1746686024000, + "meta": 1746696858066, "relativePath": "resources\\Particle\\left_1_1.plist" }, "b180f2e0-f364-4832-bcd7-c0727c15c5e0": { - "asset": 1750920400558, - "meta": 1750920541886, + "asset": 1746686056000, + "meta": 1746696858066, "relativePath": "resources\\Particle\\left_1_2.plist" }, "2cd94fa9-72c6-4357-88c2-697eeb061de3": { - "asset": 1750920400559, - "meta": 1750920541888, + "asset": 1746686397000, + "meta": 1746696858066, "relativePath": "resources\\Particle\\left_1_3.plist" }, "ed81d2b1-5dbe-4eca-a472-3a22134ea19e": { - "asset": 1750920400561, - "meta": 1750920541893, + "asset": 1746686875000, + "meta": 1746696858066, "relativePath": "resources\\Particle\\left_2_2.plist" }, "15604d4e-0b1d-47bb-ae71-6ddc8d6d8a96": { - "asset": 1750920400560, - "meta": 1750920541893, + "asset": 1746686907000, + "meta": 1746696858066, "relativePath": "resources\\Particle\\left_2_1.plist" }, "23f7b3b3-2805-44bf-8204-d1135244b9ae": { - "asset": 1750920400565, - "meta": 1750920541909, + "asset": 1746687038000, + "meta": 1746696858066, "relativePath": "resources\\Particle\\left_3_1.plist" }, "87bc6933-4c65-48f7-ac9e-347b2145d2ef": { - "asset": 1750920400563, - "meta": 1750920541903, + "asset": 1746686844000, + "meta": 1746696858066, "relativePath": "resources\\Particle\\left_2_3.plist" }, "e5c15f0a-718a-47b6-82dc-ea181130859b": { - "asset": 1750920400548, - "meta": 1750920541783, + "asset": 1746686810000, + "meta": 1746696858066, "relativePath": "resources\\Particle\\bot_2_2.plist" }, "9bcf0f0b-4390-407a-b338-9727ef89750a": { - "asset": 1750920400566, - "meta": 1750920541975, + "asset": 1746687057000, + "meta": 1746696858091, "relativePath": "resources\\Particle\\left_3_2.plist" }, "246d7311-437e-4184-8547-664b85645015": { - "asset": 1750920400570, - "meta": 1750920542000, + "asset": 1746687507000, + "meta": 1746696858091, "relativePath": "resources\\Particle\\right_1_1.plist" }, "abe40804-998a-4602-a647-ea4bffb74929": { - "asset": 1750920400572, - "meta": 1750920541998, + "asset": 1746693333000, + "meta": 1746696858091, "relativePath": "resources\\Particle\\right_1_2.plist" }, "471933f9-e1c4-4830-a7a4-db3e48eff87c": { - "asset": 1750920400576, - "meta": 1750920542022, + "asset": 1746694123000, + "meta": 1746696858091, "relativePath": "resources\\Particle\\right_2_3.plist" }, "523feab4-8c80-4417-90c3-47e34cf18f66": { - "asset": 1750920400569, - "meta": 1750920541983, + "asset": 1746687098000, + "meta": 1746696858098, "relativePath": "resources\\Particle\\left_3_3.plist" }, "259cbf2f-a53d-49c6-9c0d-c28875e8bcd4": { - "asset": 1750920400573, - "meta": 1750920541996, + "asset": 1746693363000, + "meta": 1746696858098, "relativePath": "resources\\Particle\\right_1_3.plist" }, "636f36f4-76c6-43be-b0de-95c017bc0749": { - "asset": 1750920400577, - "meta": 1750920542059, + "asset": 1746694419000, + "meta": 1746696858098, "relativePath": "resources\\Particle\\right_3_1.plist" }, "d6d986d6-5774-4d13-9207-4b44d4396852": { - "asset": 1750920400580, - "meta": 1750920542075, + "asset": 1746695341000, + "meta": 1746696858098, "relativePath": "resources\\Particle\\right_3_3.plist" }, "7d728925-7cba-4ba2-83ac-9902652f55bf": { - "asset": 1750920400574, - "meta": 1750920542002, + "asset": 1746693940000, + "meta": 1746696858098, "relativePath": "resources\\Particle\\right_2_1.plist" }, "40f60783-36f6-4831-b55c-3f7aef910438": { - "asset": 1750920400596, - "meta": 1750920542079, + "asset": 1746695524000, + "meta": 1746696858098, "relativePath": "resources\\Particle\\top_1_2.plist" }, "514ab07a-7f5c-46a5-87f0-88cb5dadc0cf": { - "asset": 1750920400578, - "meta": 1750920542073, + "asset": 1746695306000, + "meta": 1746696858098, "relativePath": "resources\\Particle\\right_3_2.plist" }, "01fcca73-6a36-405e-98fb-9e6f37cd2c13": { - "asset": 1750920400595, - "meta": 1750920542079, + "asset": 1746695365000, + "meta": 1746696858098, "relativePath": "resources\\Particle\\top_1_1.plist" }, "27f92c6a-8bde-4a6e-a6a9-9c187bba0ef9": { - "asset": 1750920400597, - "meta": 1750920542084, + "asset": 1746696103000, + "meta": 1746696858098, "relativePath": "resources\\Particle\\top_1_3.plist" }, "68e20e2a-61c1-4058-8cdb-4994aec5f8ce": { - "asset": 1750920400575, - "meta": 1750920542011, + "asset": 1746696176000, + "meta": 1746696858098, "relativePath": "resources\\Particle\\right_2_2.plist" }, "829311c5-ad5c-4756-9a8e-f0968c6e0162": { - "asset": 1750920400599, - "meta": 1750920542093, + "asset": 1746696154000, + "meta": 1746696858098, "relativePath": "resources\\Particle\\top_2_1.plist" }, "fe21168e-d899-4afc-82a6-e9c7585df025": { - "asset": 1750920400601, - "meta": 1750920542093, + "asset": 1746696263000, + "meta": 1746696858106, "relativePath": "resources\\Particle\\top_2_2.plist" }, "63e77e87-7700-4af5-afcc-c540b8af10a0": { - "asset": 1750920400607, - "meta": 1750920542187, + "asset": 1746696368000, + "meta": 1746696858106, "relativePath": "resources\\Particle\\top_3_3.plist" }, "1b494dbb-d786-4f0c-a69d-e4f4db0d889b": { - "asset": 1750920400603, - "meta": 1750920542153, + "asset": 1746696287000, + "meta": 1746696858106, "relativePath": "resources\\Particle\\top_2_3.plist" }, "75feb7e8-e734-4102-b055-93e74d5aed50": { - "asset": 1750920400605, - "meta": 1750920542160, + "asset": 1746696323000, + "meta": 1746696858114, "relativePath": "resources\\Particle\\top_3_1.plist" }, "89d0ea0c-b527-4f7a-a1da-9c0047f9e40e": { - "asset": 1750920400606, - "meta": 1750920542167, + "asset": 1746696349000, + "meta": 1746696858114, "relativePath": "resources\\Particle\\top_3_2.plist" }, "c5ee34da-68b8-453a-996d-dcb9cd04c942": { -<<<<<<< HEAD - "asset": 1750920249257, - "meta": 1751250884704, -======= - "asset": 1750920400420, - "meta": 1750920534845, ->>>>>>> 0a31a7a5abc2c505bf743aa596e1c765a0405152 + "asset": 1751264990561, + "meta": 1751265754022, "relativePath": "res\\font" }, "297683d0-3b76-4fa0-befa-20deae2e66c4": { - "asset": 1750920400484, - "meta": 1750920536443, + "asset": 1746778758765, + "meta": 1746778759678, "relativePath": "resources\\Json\\level25.json" }, "5ed13d95-5b93-4407-b770-0dedeb674b0f": { - "asset": 1750920400412, - "meta": 1750920536073, + "asset": 1749038860317, + "meta": 1749038860321, "relativePath": "prefab\\prop\\freeze.prefab" }, "20379a36-3946-47df-b5c0-96ac9d277b7d": { - "asset": 1750920400500, - "meta": 1750920536469, + "asset": 1746779222301, + "meta": 1746779227524, "relativePath": "resources\\Json\\level45.json" }, "68eef335-f67e-41c3-a232-f99c4ea6797e": { - "asset": 1750920400499, - "meta": 1750920536468, + "asset": 1746779334200, + "meta": 1746779335071, "relativePath": "resources\\Json\\level44.json" }, "563da8e2-de9f-46ff-9eae-3f58663508f1": { - "asset": 1750920400523, - "meta": 1750920536503, + "asset": 1746524583000, + "meta": 1746779797923, "relativePath": "resources\\Json\\level74.json" }, "340d8651-c630-4ee0-a083-7835c3d0eb51": { - "asset": 1750920400522, - "meta": 1750920536503, + "asset": 1746524355000, + "meta": 1746779797924, "relativePath": "resources\\Json\\level73.json" }, "a059709c-98ea-4ff7-b95d-1147b409e547": { - "asset": 1750920400523, - "meta": 1750920536506, + "asset": 1746524898000, + "meta": 1746779797925, "relativePath": "resources\\Json\\level75.json" }, "9014f392-1f3d-42dc-820c-81454dde192d": { - "asset": 1750920400521, - "meta": 1750920536498, + "asset": 1746523884000, + "meta": 1746779797926, "relativePath": "resources\\Json\\level71.json" }, "6db06cce-ee05-4014-ac50-77f548822135": { - "asset": 1750920400522, - "meta": 1750920536498, + "asset": 1746524178000, + "meta": 1746779797927, "relativePath": "resources\\Json\\level72.json" }, "41916418-405c-4025-8e60-c3fdb4a83154": { -<<<<<<< HEAD "asset": 1750920250375, "meta": 1751250884686, "relativePath": "TextureBlock" }, "6713016b-5658-4a59-ac4a-ce9d84f47b8d": { - "asset": 1751253550181, - "meta": 1751254278272, -======= - "asset": 1750920400287, - "meta": 1750920534753, - "relativePath": "TextureBlock" - }, - "6713016b-5658-4a59-ac4a-ce9d84f47b8d": { - "asset": 1750923547584, - "meta": 1750987168164, ->>>>>>> 0a31a7a5abc2c505bf743aa596e1c765a0405152 + "asset": 1751264990553, + "meta": 1751265754025, "relativePath": "TextureBlock\\block" }, "8f9cd656-30c2-4d3f-88dd-ef00d02b3f3e": { - "asset": 1750920400295, - "meta": 1750920542413, + "asset": 1746782667237, + "meta": 1746785425448, "relativePath": "TextureBlock\\block\\block3.plist" }, "e29d7af1-7e79-4793-b052-bfeb02003e1b": { - "asset": 1750920400304, - "meta": 1750920542474, + "asset": 1746782737124, + "meta": 1746785425474, "relativePath": "TextureBlock\\block\\block4.plist" }, "4f97daea-3e76-4e62-b579-e2b6b25bffd2": { - "asset": 1750920400307, - "meta": 1750920542537, + "asset": 1746782810375, + "meta": 1746785425497, "relativePath": "TextureBlock\\block\\block5.plist" }, "f2c494b7-b6df-488f-b194-358235b0f180": { - "asset": 1750920400311, - "meta": 1750920542653, + "asset": 1749622717622, + "meta": 1749692957709, "relativePath": "TextureBlock\\block\\door.plist" }, - "d7e227ab-cc06-48f5-a2ac-092b19ec7f6f": { - "asset": 1750920400313, - "meta": 1750920542743, - "relativePath": "TextureBlock\\block\\down.plist" - }, -<<<<<<< HEAD -======= - "f5eb32ae-c97b-4173-abf2-83de016c2ace": { - "asset": 1750920400428, - "meta": 1750920536203, - "relativePath": "res\\texture_Block\\down.png" - }, ->>>>>>> 0a31a7a5abc2c505bf743aa596e1c765a0405152 "d01519e3-ffe3-4b8f-980b-50811cc6eb58": { - "asset": 1750920400312, - "meta": 1750920538177, + "asset": 1749622845471, + "meta": 1749692957651, "relativePath": "TextureBlock\\block\\door.png" }, - "ed2c3a21-0522-445d-9904-76843208705f": { - "asset": 1750920400314, - "meta": 1750920538165, - "relativePath": "TextureBlock\\block\\down.png" - }, "8be8182e-f38a-459c-875e-8b4c5d4c53ef": { - "asset": 1750920400310, - "meta": 1750920538263, + "asset": 1746782846484, + "meta": 1746785425326, "relativePath": "TextureBlock\\block\\block5.png" }, "48449cea-32d6-42d9-8499-1fd116440432": { - "asset": 1750920400307, - "meta": 1750920538237, + "asset": 1746782842958, + "meta": 1746785425327, "relativePath": "TextureBlock\\block\\block4.png" }, "d4dfa9d3-985d-4d58-9c06-fc12d3df7d28": { - "asset": 1750920400303, - "meta": 1750920538249, + "asset": 1746782839452, + "meta": 1746785425331, "relativePath": "TextureBlock\\block\\block3.png" }, "04e50346-1a72-40e7-84f4-34fc35145f86": { - "asset": 1750920400287, - "meta": 1750920542264, + "asset": 1746788471263, + "meta": 1746788501154, "relativePath": "TextureBlock\\block\\block1.plist" }, "4415f278-50b1-46b5-bdf1-0dd7fa4b461b": { - "asset": 1750920400290, - "meta": 1750920538155, + "asset": 1746788486306, + "meta": 1746788501121, "relativePath": "TextureBlock\\block\\block1.png" }, -<<<<<<< HEAD - "90c37607-5145-4fb1-8d26-94d9a89baeee": { - "asset": 1748318266184, - "meta": 1748437823886, - "relativePath": "Script\\Barrier.ts" -======= - "8b6fd107-6aa0-4523-8fd3-c0f064524b0c": { - "asset": 1750920400429, - "meta": 1750920541423, - "relativePath": "res\\texture_Block\\freeze.plist" - }, - "484f1896-8707-4cc7-8e61-9995a2133f09": { - "asset": 1750920400434, - "meta": 1750920536256, - "relativePath": "res\\texture_Block\\freeze.png" - }, - "0a33af4a-6c55-4b97-a88e-80ce9d1a2321": { - "asset": 1750920400435, - "meta": 1750920536223, - "relativePath": "res\\texture_Block\\zhangai.png" ->>>>>>> 0a31a7a5abc2c505bf743aa596e1c765a0405152 - }, "363f650c-0113-40a7-b8d0-1e941f51f056": { - "asset": 1750920400581, - "meta": 1750920536573, + "asset": 1747037900326, + "meta": 1747037915382, "relativePath": "resources\\Particle\\sp1.png" }, "3041839a-879f-4de0-aac8-11fc29132a3a": { - "asset": 1750920400594, - "meta": 1750920536665, + "asset": 1747037900699, + "meta": 1747037915385, "relativePath": "resources\\Particle\\sp9.png" }, "7fd24a6a-f4ee-4180-8a76-97d073262354": { - "asset": 1750920400589, - "meta": 1750920536589, + "asset": 1747037900515, + "meta": 1747037915386, "relativePath": "resources\\Particle\\sp5.png" }, "f3366754-10f0-45e6-91f6-39784b12abd5": { - "asset": 1750920400582, - "meta": 1750920536578, + "asset": 1747037900273, + "meta": 1747037915391, "relativePath": "resources\\Particle\\sp10.png" }, "5cd8d33e-2fec-4ca3-aaad-d0fd7b123bf2": { - "asset": 1750920400584, - "meta": 1750920536593, + "asset": 1747037900374, + "meta": 1747037915399, "relativePath": "resources\\Particle\\sp2.png" }, "d5e17fe2-ec17-4842-8bfb-7d68719eecaf": { - "asset": 1750920400588, - "meta": 1750920536620, + "asset": 1747037900468, + "meta": 1747037915403, "relativePath": "resources\\Particle\\sp4.png" }, "68620429-1b3d-400e-832c-25e8358d9062": { - "asset": 1750920400586, - "meta": 1750920536583, + "asset": 1747037900420, + "meta": 1747037915406, "relativePath": "resources\\Particle\\sp3.png" }, "91339250-5bb5-461e-9d46-aa86181e755c": { - "asset": 1750920400590, - "meta": 1750920536605, + "asset": 1747037900560, + "meta": 1747037915408, "relativePath": "resources\\Particle\\sp6.png" }, "f5f04e60-a876-43ed-b0f6-f829aee17c65": { - "asset": 1750920400592, - "meta": 1750920536666, + "asset": 1747037900654, + "meta": 1747037915410, "relativePath": "resources\\Particle\\sp8.png" }, "5dc63b37-a57d-4a7c-a696-95e0f14daf93": { - "asset": 1750920400591, - "meta": 1750920536623, + "asset": 1747037900607, + "meta": 1747037915411, "relativePath": "resources\\Particle\\sp7.png" }, "c8f0a088-7a76-4057-b546-8e50c5b105c8": { -<<<<<<< HEAD "asset": 1750920249257, "meta": 1751250884702, -======= - "asset": 1750920400418, - "meta": 1750920534842, ->>>>>>> 0a31a7a5abc2c505bf743aa596e1c765a0405152 "relativePath": "res\\effect" }, "a546d6f3-5346-4f7c-b2cb-e369cab36b48": { - "asset": 1750920400373, - "meta": 1750920535941, + "asset": 1747042601477, + "meta": 1748437824648, "relativePath": "effect\\texture.png" }, "7ee58a72-2111-450d-b4de-496f4b3ad9a7": { - "asset": 1750920400417, - "meta": 1750920541426, + "asset": 1747047159947, + "meta": 1747047159950, "relativePath": "res\\effect\\New Material.mtl" }, "fff54feb-03db-4d8a-b079-57eedca8a644": { - "asset": 1750920400343, - "meta": 1750920540944, + "asset": 1747120564208, + "meta": 1748437825590, "relativePath": "effect\\New Material.mtl" }, "6970f0a1-4487-4ec7-9623-cfabdaeab39c": { - "asset": 1750920400370, - "meta": 1750920534789, + "asset": 1747050236464, + "meta": 1748437823798, "relativePath": "effect\\ronghua.effect" }, "5a2ab061-e5f5-4caa-b4ee-4a27ff8e7db7": { - "asset": 1750920400380, - "meta": 1750920534795, + "asset": 1747104459028, + "meta": 1748437823809, "relativePath": "effect\\融化.effect" }, "341aecd6-8bf0-4219-adaa-dbc54ef22a32": { - "asset": 1750920400381, - "meta": 1750920534806, + "asset": 1747117357281, + "meta": 1748437823821, "relativePath": "effect\\融化.ts" }, "daf4fd67-c532-4d40-ac76-f104d2e011fc": { -<<<<<<< HEAD "asset": 1750920255338, "meta": 1751250884150, "relativePath": "Map" @@ -1470,1175 +1132,974 @@ "f20c7bea-752c-4521-bba7-facfb396bd0f": { "asset": 1750920255354, "meta": 1751250884151, -======= - "asset": 1750920401690, - "meta": 1750920528225, - "relativePath": "Map" - }, - "f20c7bea-752c-4521-bba7-facfb396bd0f": { - "asset": 1750920401692, - "meta": 1750920528226, ->>>>>>> 0a31a7a5abc2c505bf743aa596e1c765a0405152 "relativePath": "Material" }, "40181e0c-789f-47f1-ba3c-d92486df52dd": { - "asset": 1750920401691, - "meta": 1750920528259, + "asset": 1719888368058, + "meta": 1747125841647, "relativePath": "Material\\TmoEffect.effect" }, "f2c5d7aa-95bc-4b34-a4c1-01ef2cf23d19": { -<<<<<<< HEAD "asset": 1750920255369, "meta": 1751250884152, -======= - "asset": 1750920401697, - "meta": 1750920528227, ->>>>>>> 0a31a7a5abc2c505bf743aa596e1c765a0405152 "relativePath": "Script" }, "18d1ce4e-6c1b-4279-acac-c8ee5b30881b": { - "asset": 1750920401693, - "meta": 1750920528439, + "asset": 1719888368063, + "meta": 1747125841708, "relativePath": "Script\\TmoAssembler.js" }, "30e2e490-5833-4a23-af45-6da61f37ada3": { - "asset": 1750920401694, - "meta": 1750920528499, + "asset": 1719888368065, + "meta": 1747125841739, "relativePath": "Script\\TmoObjectGroup.js" }, "4fa6c3b4-e5a0-4a1a-833e-e445fdce1902": { - "asset": 1750920401695, - "meta": 1750920528511, + "asset": 1719888368066, + "meta": 1747125841748, "relativePath": "Script\\TmoSprite.js" }, "d60cfac6-6d70-4b05-ba65-2e84fb4c19fb": { - "asset": 1750920401696, - "meta": 1750920528543, + "asset": 1719888368068, + "meta": 1747125841772, "relativePath": "Script\\TmoTiledLayer.js" }, "0b9eeb66-4947-4945-9090-4bdd53602c3f": { - "asset": 1750920401697, - "meta": 1750920528568, + "asset": 1719888368071, + "meta": 1747125841791, "relativePath": "Script\\TmoTiledMap.js" }, "9a04d176-199d-4828-99e4-f04c825a7d21": { - "asset": 1750920401691, - "meta": 1750920528613, + "asset": 1719888368060, + "meta": 1747125841841, "relativePath": "Material\\TmoMaterial.mtl" }, "d0ea6fbd-3d02-4764-951b-66f01e10443c": { - "asset": 1750920401686, - "meta": 1750920528613, + "asset": 1719888368055, + "meta": 1747125841842, "relativePath": "Map\\TmoMap.tmx" }, "1bec116d-72a4-4268-8396-f530996ffb22": { - "asset": 1750920401688, - "meta": 1750920528608, + "asset": 1719888368048, + "meta": 1747125841835, "relativePath": "Map\\roguelikeSheet_transparent.png" }, "d9b8a450-e449-4113-8295-a26af54393cb": { - "asset": 1750920401690, - "meta": 1750920528608, + "asset": 1719888368053, + "meta": 1747125841836, "relativePath": "Map\\roguelikeSheet_transparent2.png" }, "e8f06cd0-a6df-473e-8c1c-c2dca70b1193": { - "asset": 1750920400354, - "meta": 1750920535790, + "asset": 1745303526000, + "meta": 1747388064817, "relativePath": "effect\\lianjie_2.png" }, "82acc72d-a7fc-4411-a357-fe2ea85ffd5c": { - "asset": 1750920400353, - "meta": 1750920535768, + "asset": 1745303526000, + "meta": 1747388064818, "relativePath": "effect\\lianjie_1.png" }, -<<<<<<< HEAD -======= - "8b8ec6d3-f576-46ed-beea-a154efe1621c": { - "asset": 1750920400262, - "meta": 1750920535897, - "relativePath": "Shader\\mofabang_baozha" - }, - "afcb829a-5254-4c11-9105-dfd8221fb5a9": { - "asset": 1750920400258, - "meta": 1750920535897, - "relativePath": "Shader\\jiekou" - }, - "52d6fee1-c5ed-4712-8dbf-cbea31617bd1": { - "asset": 1750920400257, - "meta": 1750920537650, - "relativePath": "Shader\\jiekou\\横" - }, - "eec9349a-c7f0-4791-9e85-caba15e44e97": { - "asset": 1750920400259, - "meta": 1750920537653, - "relativePath": "Shader\\jiekou\\竖" - }, - "f5c90851-ef9a-44a5-96de-54f17b7a766b": { - "asset": 1750920400265, - "meta": 1750920535897, - "relativePath": "Shader\\mofabang_texiao" - }, - "fe7bac61-99b4-4653-9428-8e258da15302": { - "asset": 1750920400272, - "meta": 1750920535899, - "relativePath": "Shader\\mofabang_tuowei" - }, - "b6ed74f8-9e62-419d-9ea7-59972f6e1a52": { - "asset": 1750920400256, - "meta": 1750920540767, - "relativePath": "Shader\\jiekou\\横\\jiekou_heng.atlas" - }, - "319e830d-24b7-499e-b9ab-e6484934d981": { - "asset": 1750920400258, - "meta": 1750920540764, - "relativePath": "Shader\\jiekou\\竖\\skeleton.atlas" - }, - "97459c20-5c45-444d-b533-f50d2406fe43": { - "asset": 1750920400260, - "meta": 1750920537765, - "relativePath": "Shader\\mofabang_baozha\\mofabang_baozha.atlas" - }, - "13f1b3eb-4cde-4c8e-9dee-16929acd6d24": { - "asset": 1750920400263, - "meta": 1750920537804, - "relativePath": "Shader\\mofabang_texiao\\mofabang_texiao.atlas" - }, - "a4736a35-1bd8-4751-89b4-d0bc089a2614": { - "asset": 1750920400275, - "meta": 1750920535899, - "relativePath": "Shader\\zhadan" - }, - "dca5e70b-8d3f-4ac0-abe7-d0c5647f7837": { - "asset": 1750920400259, - "meta": 1750920540796, - "relativePath": "Shader\\jiekou\\竖\\skeleton.png" - }, - "b422f3cf-81f1-4bda-9b15-c5ef7a9687b8": { - "asset": 1750920400257, - "meta": 1750920540827, - "relativePath": "Shader\\jiekou\\横\\jiekou_heng.png" - }, - "a2a2084f-96a0-4646-a699-ba9714473c81": { - "asset": 1750920400272, - "meta": 1750920537888, - "relativePath": "Shader\\zhadan\\zhandan.atlas" - }, - "88cf729e-5501-40cb-9039-36e92ee9c49b": { - "asset": 1750920400260, - "meta": 1750920542469, - "relativePath": "Shader\\mofabang_baozha\\mofabang_baozha.json" - }, - "0e005ec2-f5a3-41d3-8a99-7ea6d784440d": { - "asset": 1750920400258, - "meta": 1750920543225, - "relativePath": "Shader\\jiekou\\竖\\skeleton.json" - }, - "86f338ab-4874-40d7-ac5e-06e2bf339c6c": { - "asset": 1750920400263, - "meta": 1750920542473, - "relativePath": "Shader\\mofabang_texiao\\mofabang_texiao.json" - }, - "ca1fbdcb-5180-4815-8751-4b66146e74de": { - "asset": 1750920400257, - "meta": 1750920543231, - "relativePath": "Shader\\jiekou\\横\\jiekou_heng.json" - }, - "2a1bffdc-6b63-425c-9710-a32b4d93ea4b": { - "asset": 1750920400273, - "meta": 1750920542701, - "relativePath": "Shader\\zhadan\\zhandan.json" - }, - "43aa6fa9-d440-4a11-93ae-e92a87fc2c4a": { - "asset": 1750920400267, - "meta": 1750920537673, - "relativePath": "Shader\\mofabang_tuowei\\2D and UI trailing effects" - }, - "1aa36344-6803-464b-9ccd-bd47a2dc65d7": { - "asset": 1750920400268, - "meta": 1750920540707, - "relativePath": "Shader\\mofabang_tuowei\\2D and UI trailing effects\\2D和UI的拖尾效果3.x" - }, - "a016c003-4b29-4f55-8f78-f3b6dd5abab6": { - "asset": 1750920400268, - "meta": 1750920540728, - "relativePath": "Shader\\mofabang_tuowei\\2D and UI trailing effects\\2D和UI的拖尾效果3.x\\textures" - }, - "866e4be5-7181-407b-8a74-8822bf3e46db": { - "asset": 1750920400270, - "meta": 1750920540737, - "relativePath": "Shader\\mofabang_tuowei\\2D and UI trailing effects\\2D和UI的拖尾效果3.x\\textures\\particle" - }, - "32ec5e41-9aeb-475a-9ad2-1d0a81b8dfc2": { - "asset": 1750920400271, - "meta": 1750920537757, - "relativePath": "Shader\\mofabang_tuowei\\tuowei1.prefab" - }, - "118d4d54-d313-4f52-b49f-593effa13423": { - "asset": 1750920400270, - "meta": 1750920540880, - "relativePath": "Shader\\mofabang_tuowei\\2D and UI trailing effects\\2D和UI的拖尾效果3.x\\textures\\particle\\flash.png" - }, - "c88c6283-3de7-4606-b65a-fa3e18c95049": { - "asset": 1750920400269, - "meta": 1750920540867, - "relativePath": "Shader\\mofabang_tuowei\\2D and UI trailing effects\\2D和UI的拖尾效果3.x\\textures\\particle\\circle_00.png" - }, - "727ab669-af95-43be-9818-2065a98b84a5": { - "asset": 1750920400269, - "meta": 1750920540876, - "relativePath": "Shader\\mofabang_tuowei\\2D and UI trailing effects\\2D和UI的拖尾效果3.x\\textures\\particle\\LiZi1.png" - }, - "363ef00a-0ca9-4ccd-b4bc-62a7dec9b6de": { - "asset": 1750920400265, - "meta": 1750920537960, - "relativePath": "Shader\\mofabang_texiao\\mofabang_texiao.png" - }, - "071c697b-6b3e-4294-a6bb-e433ef19e445": { - "asset": 1750920400271, - "meta": 1750920537937, - "relativePath": "Shader\\mofabang_tuowei\\bang.png" - }, - "15f7f173-be51-47f3-8314-66d14e63471f": { - "asset": 1750920400275, - "meta": 1750920538107, - "relativePath": "Shader\\zhadan\\zhandan.png" - }, - "ff0d5773-ca66-4087-b1b7-4777121d85be": { - "asset": 1750920400262, - "meta": 1750920538076, - "relativePath": "Shader\\mofabang_baozha\\mofabang_baozha.png" - }, ->>>>>>> 0a31a7a5abc2c505bf743aa596e1c765a0405152 "3d20e513-a37f-4e1f-81b2-ad82655fbae7": { - "asset": 1750920400507, - "meta": 1750920536478, + "asset": 1747385177000, + "meta": 1747825104791, "relativePath": "resources\\Json\\level53.json" }, "d7bd43d2-5cca-4b6c-9e82-a6cc63527ca2": { - "asset": 1750920400510, - "meta": 1750920536483, + "asset": 1747797714000, + "meta": 1747825104796, "relativePath": "resources\\Json\\level58.json" }, "77335854-4a1a-4f26-9901-c790758a1ad8": { - "asset": 1750920400507, - "meta": 1750920536478, + "asset": 1747384577000, + "meta": 1747825104800, "relativePath": "resources\\Json\\level52.json" }, "9fab4afa-0132-4bff-a174-be0bf9309e99": { - "asset": 1750920400510, - "meta": 1750920536483, + "asset": 1747810131000, + "meta": 1747825104803, "relativePath": "resources\\Json\\level59.json" }, "da9fa04e-0928-44bc-8a94-069188915bc3": { - "asset": 1750920400526, - "meta": 1750920536511, + "asset": 1747383994000, + "meta": 1747825104804, "relativePath": "resources\\Json\\level80.json" }, "847af5ce-99e2-4928-a762-6cf0be6e0313": { - "asset": 1750920400527, - "meta": 1750920536511, + "asset": 1747813582000, + "meta": 1747825104806, "relativePath": "resources\\Json\\level81.json" }, "61ccb2ff-6d22-465b-a4c2-e30a8362e201": { - "asset": 1750920400529, - "meta": 1750920536518, + "asset": 1747374087000, + "meta": 1747825104807, "relativePath": "resources\\Json\\level84.json" }, "08ba6e2c-b755-496e-8698-1b49e2137e72": { - "asset": 1750920400527, - "meta": 1750920536515, + "asset": 1747367055000, + "meta": 1747825104810, "relativePath": "resources\\Json\\level82.json" }, "4eefa689-9a3c-4525-90f7-02e393e84cea": { - "asset": 1750920400530, - "meta": 1750920536517, + "asset": 1747816655000, + "meta": 1747825104811, "relativePath": "resources\\Json\\level86.json" }, "7deeab69-13fa-4f8b-8366-de153a780366": { - "asset": 1750920400530, - "meta": 1750920536518, + "asset": 1747815568000, + "meta": 1747825104813, "relativePath": "resources\\Json\\level85.json" }, "aae84cd2-d30f-40b7-9e29-503635e78ad3": { - "asset": 1750920400509, - "meta": 1750920536483, + "asset": 1747806207000, + "meta": 1747825104814, "relativePath": "resources\\Json\\level57.json" }, "a1c4796f-77bf-49c5-9b6a-fc680ac4fd90": { - "asset": 1750920400508, - "meta": 1750920536482, + "asset": 1747392192000, + "meta": 1747825104816, "relativePath": "resources\\Json\\level55.json" }, "8ededb2a-b535-494b-b582-046a008ff748": { - "asset": 1750920400532, - "meta": 1750920536518, + "asset": 1747819333000, + "meta": 1747825104820, "relativePath": "resources\\Json\\level87.json" }, "7b899124-e65f-42ca-9360-04616684e7c1": { - "asset": 1750920400533, - "meta": 1750920536520, + "asset": 1747379533000, + "meta": 1747825104821, "relativePath": "resources\\Json\\level89.json" }, "cc263886-aec5-4fa8-9734-b52d9e578e48": { - "asset": 1750920400535, - "meta": 1750920536523, + "asset": 1747824759000, + "meta": 1747825104822, "relativePath": "resources\\Json\\level90.json" }, "c63bea39-61e5-4b89-b514-d84a84d5b3cf": { - "asset": 1750920400519, - "meta": 1750920536498, + "asset": 1747884575000, + "meta": 1747893824029, "relativePath": "resources\\Json\\level69.json" }, "8ccfd006-2c8d-426d-8d3a-3560e61de24e": { - "asset": 1750920400525, - "meta": 1750920536508, + "asset": 1747362753000, + "meta": 1747893824031, "relativePath": "resources\\Json\\level79.json" }, "3518f8c0-d85b-48fb-99ed-41718f2bcff1": { - "asset": 1750920400524, - "meta": 1750920536508, + "asset": 1747887167000, + "meta": 1747893824033, "relativePath": "resources\\Json\\level77.json" }, "da943e93-7ecf-4ff8-936c-5a9c26a88a32": { - "asset": 1750920400525, - "meta": 1750920536508, + "asset": 1747300259000, + "meta": 1747893824035, "relativePath": "resources\\Json\\level78.json" }, "5f6898a9-23b4-4e9c-b751-017617017813": { - "asset": 1750920400524, - "meta": 1750920536506, + "asset": 1747885479000, + "meta": 1747893824037, "relativePath": "resources\\Json\\level76.json" }, "e9baff1b-7642-4be9-88ca-f3f9a4e2f510": { -<<<<<<< HEAD "asset": 1750920249320, "meta": 1751250884706, -======= - "asset": 1750920400632, - "meta": 1750920534846, ->>>>>>> 0a31a7a5abc2c505bf743aa596e1c765a0405152 "relativePath": "resources\\bg" }, "02990639-fe0f-4ad3-803c-df7b0f848c77": { - "asset": 1750920400624, - "meta": 1750920536253, + "asset": 1747986598423, + "meta": 1747986908493, "relativePath": "resources\\bg\\bg1.jpg" }, "352b95f2-1985-4a53-975f-76dcf7d4b46b": { - "asset": 1750920400627, - "meta": 1750920536273, + "asset": 1747986314598, + "meta": 1747986908500, "relativePath": "resources\\bg\\bg4.jpg" }, "984f38d2-a029-4f40-926d-e83a6d99809a": { - "asset": 1750920400630, - "meta": 1750920536363, + "asset": 1747986518706, + "meta": 1747986908505, "relativePath": "resources\\bg\\bg7.jpg" }, "90680057-c6bd-4b0a-a386-8c948af5a7b4": { - "asset": 1750920400628, - "meta": 1750920536314, + "asset": 1747986363897, + "meta": 1747986908510, "relativePath": "resources\\bg\\bg5.jpg" }, "400ebc7f-8b6d-4fab-9510-228f4a852233": { - "asset": 1750920400629, - "meta": 1750920536318, + "asset": 1747986487018, + "meta": 1747986908537, "relativePath": "resources\\bg\\bg6.jpg" }, "f2ea2a0e-1212-40d4-9a37-340cec0bb051": { - "asset": 1750920400627, - "meta": 1750920536288, + "asset": 1747986266850, + "meta": 1747986908539, "relativePath": "resources\\bg\\bg3.jpg" }, "78991791-82f2-4a52-a829-5bd78ecf9e09": { - "asset": 1750920400631, - "meta": 1750920536358, + "asset": 1747986556313, + "meta": 1747986908547, "relativePath": "resources\\bg\\bg8.jpg" }, "932f20e4-718e-42cd-a735-f39449ebb955": { - "asset": 1750920400626, - "meta": 1750920536283, + "asset": 1747986188235, + "meta": 1747986908549, "relativePath": "resources\\bg\\bg2.jpg" }, "034840bc-3824-492a-9542-0b64edfb4046": { -<<<<<<< HEAD "asset": 1750920250045, "meta": 1751250884712, -======= - "asset": 1750920400623, - "meta": 1750920534860, ->>>>>>> 0a31a7a5abc2c505bf743aa596e1c765a0405152 "relativePath": "resources\\Window_Prop" }, "1c111e49-b82d-4996-b6e9-bc78e698c880": { - "asset": 1750920400611, - "meta": 1750920536823, + "asset": 1747987595874, + "meta": 1747988051909, "relativePath": "resources\\Window_Prop\\daoju1.png" }, "b6ae8682-943e-426b-a202-84f37dc1e843": { - "asset": 1750920400612, - "meta": 1750920536704, + "asset": 1747987597648, + "meta": 1747988051922, "relativePath": "resources\\Window_Prop\\daoju3.png" }, "0b24a717-3022-47c4-8739-9b8de223209a": { - "asset": 1750920400613, - "meta": 1750920537033, + "asset": 1747987598677, + "meta": 1747988051932, "relativePath": "resources\\Window_Prop\\daoju4.png" }, "485efaf3-8f31-441b-8264-6597e43bedea": { - "asset": 1750920400608, - "meta": 1750920536698, + "asset": 1747987592593, + "meta": 1747988051935, "relativePath": "resources\\Window_Prop\\ban.png" }, "10bd800c-0cf0-4fd1-b081-59bdb30d45c3": { - "asset": 1750920400610, - "meta": 1750920536683, + "asset": 1747987594995, + "meta": 1747988051938, "relativePath": "resources\\Window_Prop\\btn.png" }, "f3638483-b203-466d-bd77-27450b756fa9": { - "asset": 1750920400620, - "meta": 1750920537798, + "asset": 1747987593163, + "meta": 1747988051940, "relativePath": "resources\\Window_Prop\\light1.png" }, "97c09743-de26-4de2-b679-165a0f109674": { - "asset": 1750920400615, - "meta": 1750920537052, + "asset": 1747987600435, + "meta": 1747988051944, "relativePath": "resources\\Window_Prop\\daoju6.png" }, "4f0a5f34-c7eb-40f1-b9d4-f05d45bf9157": { - "asset": 1750920400622, - "meta": 1750920537743, + "asset": 1747987594481, + "meta": 1747988051946, "relativePath": "resources\\Window_Prop\\next.png" }, "9c5c2e4c-dc57-4743-ba73-189a3050d7af": { - "asset": 1750920400616, - "meta": 1750920537083, + "asset": 1747987601327, + "meta": 1747988051963, "relativePath": "resources\\Window_Prop\\daoju7.png" }, "b56981d3-e42d-455f-81b9-418f92cd72ef": { - "asset": 1750920400609, - "meta": 1750920536683, + "asset": 1747987594827, + "meta": 1747988051972, "relativePath": "resources\\Window_Prop\\btn 2.png" }, "5e6f2066-cb12-41b7-a171-fc2003da60cf": { - "asset": 1750920400614, - "meta": 1750920537039, + "asset": 1747987599524, + "meta": 1747988051974, "relativePath": "resources\\Window_Prop\\daoju5.png" }, "31334095-1bce-4819-afb1-b9f04de73f2a": { - "asset": 1750920400621, - "meta": 1750920537753, + "asset": 1747987593750, + "meta": 1747988051977, "relativePath": "resources\\Window_Prop\\light2.png" }, "0049e9ab-7e39-49fa-abfd-27482b158ae2": { - "asset": 1750920400611, - "meta": 1750920536822, + "asset": 1747987596759, + "meta": 1747988051979, "relativePath": "resources\\Window_Prop\\daoju2.png" }, "6a766e17-7786-4eb0-9786-3e420d1dbfab": { - "asset": 1750920400623, - "meta": 1750920537761, + "asset": 1747987594427, + "meta": 1747988051982, "relativePath": "resources\\Window_Prop\\return.png" }, "f0d6a1ff-e29a-4846-b6a9-9c96f90bd6df": { - "asset": 1750920400622, - "meta": 1750920537783, + "asset": 1747987594364, + "meta": 1747988051984, "relativePath": "resources\\Window_Prop\\light3.png" }, "1fb08231-41e8-4fdb-86e3-ab67463b088f": { - "asset": 1750920400623, - "meta": 1750920537735, + "asset": 1747987594684, + "meta": 1747988052004, "relativePath": "resources\\Window_Prop\\title.png" }, "9c73e774-538e-4a64-9d46-b5905174e08b": { - "asset": 1750920400541, - "meta": 1750920536535, + "asset": 1747898684000, + "meta": 1747992743341, "relativePath": "resources\\Json\\level97.json" }, "6a78a951-d0ee-4089-ad88-c0361caed2c8": { - "asset": 1750920400440, - "meta": 1750920536323, + "asset": 1747903293000, + "meta": 1747992743343, "relativePath": "resources\\Json\\level100.json" }, "581928fd-74e9-493a-94b3-1a64313909d3": { - "asset": 1750920400442, - "meta": 1750920536338, + "asset": 1747967366000, + "meta": 1747992743346, "relativePath": "resources\\Json\\level105.json" }, "438b7ec6-23dd-471a-9137-3cab7726c687": { - "asset": 1750920400441, - "meta": 1750920536333, + "asset": 1747905455000, + "meta": 1747992743347, "relativePath": "resources\\Json\\level102.json" }, "6b3f5d56-3637-404e-a4e5-189874cd71f3": { - "asset": 1750920400443, - "meta": 1750920536343, + "asset": 1747968552000, + "meta": 1747992743349, "relativePath": "resources\\Json\\level106.json" }, "8e981011-d4c6-41b9-91f8-015f8d9b041d": { - "asset": 1750920400443, - "meta": 1750920536343, + "asset": 1747969059000, + "meta": 1747992743353, "relativePath": "resources\\Json\\level107.json" }, "615e1c78-bbf8-4aef-b55f-025f7c3aa7bb": { - "asset": 1750920400440, - "meta": 1750920536323, + "asset": 1747903996000, + "meta": 1747992743355, "relativePath": "resources\\Json\\level101.json" }, "0a0f446a-b0fc-4929-a9cc-616f502d0dcb": { - "asset": 1750920400444, - "meta": 1750920536351, + "asset": 1747970377000, + "meta": 1747992743357, "relativePath": "resources\\Json\\level108.json" }, "d8431941-00e1-4638-b2a2-1bd96d9fc5b8": { - "asset": 1750920400442, - "meta": 1750920536336, + "asset": 1747910130000, + "meta": 1747992743359, "relativePath": "resources\\Json\\level104.json" }, "0ddde8cc-1b17-454b-8696-be34361845ef": { - "asset": 1750920400445, - "meta": 1750920536358, + "asset": 1747972719000, + "meta": 1747992743360, "relativePath": "resources\\Json\\level110.json" }, "2b0f8eb4-2355-4f65-ae3a-ee6458fc3eb6": { - "asset": 1750920400441, - "meta": 1750920536338, + "asset": 1747906686000, + "meta": 1747992743362, "relativePath": "resources\\Json\\level103.json" }, "69f4fb9f-c1a8-4ffe-bd04-f77c92671be7": { - "asset": 1750920400444, - "meta": 1750920536354, + "asset": 1749636706869, + "meta": 1749692957638, "relativePath": "resources\\Json\\level109.json" }, "0c986bfc-7618-4c66-994d-e406c1da0b24": { - "asset": 1750920400447, - "meta": 1750920536369, + "asset": 1747981248000, + "meta": 1747992743369, "relativePath": "resources\\Json\\level113.json" }, "78522b60-9651-4017-8f9e-38238b0945ad": { - "asset": 1750920400446, - "meta": 1750920536358, + "asset": 1747979775000, + "meta": 1747992743370, "relativePath": "resources\\Json\\level111.json" }, "3876286a-8804-470f-9dbe-1ab37566bf3b": { - "asset": 1750920400448, - "meta": 1750920536372, + "asset": 1747982621000, + "meta": 1747992743372, "relativePath": "resources\\Json\\level114.json" }, "48e7b0d8-05ea-4fd5-8f29-925fb0ba8845": { - "asset": 1750920400447, - "meta": 1750920536363, + "asset": 1747980403000, + "meta": 1747992743374, "relativePath": "resources\\Json\\level112.json" }, "46e711be-b11e-402a-a24c-75e2e394a75b": { - "asset": 1750920400448, - "meta": 1750920536371, + "asset": 1747984981000, + "meta": 1747992743376, "relativePath": "resources\\Json\\level115.json" }, "092ba8f5-46a8-4401-b1c3-46c05efbb12b": { - "asset": 1750920400535, - "meta": 1750920536523, + "asset": 1747883244000, + "meta": 1747992743378, "relativePath": "resources\\Json\\level91.json" }, "d906f930-7480-418b-a3ce-caacbd4ecf2c": { - "asset": 1750920400451, - "meta": 1750920536378, + "asset": 1747990510000, + "meta": 1747992743378, "relativePath": "resources\\Json\\level119.json" }, "c8f0cf5f-c48c-4ca8-9399-47e3adc3a2ba": { - "asset": 1750920400450, - "meta": 1750920536373, + "asset": 1747988913000, + "meta": 1747992743379, "relativePath": "resources\\Json\\level118.json" }, "9e607042-800f-425b-94f4-774ab34c3b91": { - "asset": 1750920400449, - "meta": 1750920536377, + "asset": 1747986734000, + "meta": 1747992743379, "relativePath": "resources\\Json\\level116.json" }, "e1b9030d-905f-4f54-b854-19269ca283c7": { - "asset": 1750920400538, - "meta": 1750920536525, + "asset": 1747896374000, + "meta": 1747992743382, "relativePath": "resources\\Json\\level94.json" }, "d0c255a3-8e36-4dde-94fc-98b0a17104d5": { - "asset": 1750920400537, - "meta": 1750920536528, + "asset": 1747895170000, + "meta": 1747992743383, "relativePath": "resources\\Json\\level93.json" }, "4a6da822-ad56-4f66-a3ba-e1076dcfab32": { - "asset": 1750920400542, - "meta": 1750920536537, + "asset": 1747902270000, + "meta": 1747992743384, "relativePath": "resources\\Json\\level99.json" }, "3661505d-2c18-40dc-aa00-7997d7b19469": { - "asset": 1750920400540, - "meta": 1750920536533, + "asset": 1747898025000, + "meta": 1747992743385, "relativePath": "resources\\Json\\level96.json" }, "169c9fa2-bd83-427d-ad93-a1cce985228c": { - "asset": 1750920400539, - "meta": 1750920536525, + "asset": 1747897318000, + "meta": 1747992743388, "relativePath": "resources\\Json\\level95.json" }, "fd8b0857-2666-45ba-b857-5d08887b91dd": { - "asset": 1750920400536, - "meta": 1750920536525, + "asset": 1747894825000, + "meta": 1747992743389, "relativePath": "resources\\Json\\level92.json" }, "6ceee93b-a101-47f1-9178-07ed9270e9fb": { - "asset": 1750920400509, - "meta": 1750920536483, + "asset": 1748228746644, + "meta": 1748228747360, "relativePath": "resources\\Json\\level56.json" }, -<<<<<<< HEAD -======= - "cc01997d-495e-480d-871e-be405a6c38b5": { - "asset": 1750920400424, - "meta": 1750920541283, - "relativePath": "res\\texture_Block\\door.plist" - }, ->>>>>>> 0a31a7a5abc2c505bf743aa596e1c765a0405152 "0320e925-da03-488f-9e62-0018a6fdbb83": { - "asset": 1750920400291, - "meta": 1750920542319, + "asset": 1748249803539, + "meta": 1748249848882, "relativePath": "TextureBlock\\block\\block2.plist" }, - "e401e735-bc45-4c02-ab15-ac8f4afbed44": { - "asset": 1750920400295, - "meta": 1750920538188, - "relativePath": "TextureBlock\\block\\block2.png" - }, "9836134e-b892-4283-b6b2-78b5acf3ed45": { - "asset": 1750905745131, - "meta": 1750920528663, + "asset": 1748260441106, + "meta": 1748512139383, "relativePath": "effects" }, "abc2cb62-7852-4525-a90d-d474487b88f2": { - "asset": 1750905745116, - "meta": 1750920528748, + "asset": 1748260441092, + "meta": 1748512139492, "relativePath": "effects\\builtin-phong.effect" }, "e2f00085-c597-422d-9759-52c360279106": { - "asset": 1750905745118, - "meta": 1750920528784, + "asset": 1748260441096, + "meta": 1748512139534, "relativePath": "effects\\builtin-toon.effect" }, "430eccbf-bf2c-4e6e-8c0c-884bbb487f32": { - "asset": 1750905745118, - "meta": 1750920528794, + "asset": 1748260441101, + "meta": 1748512139546, "relativePath": "effects\\__builtin-editor-gizmo-line.effect" }, "6c5cf6e1-b044-4eac-9431-835644d57381": { - "asset": 1750905745129, - "meta": 1750920528799, + "asset": 1748260441102, + "meta": 1748512139553, "relativePath": "effects\\__builtin-editor-gizmo-unlit.effect" }, "115286d1-2e10-49ee-aab4-341583f607e8": { - "asset": 1750905745131, - "meta": 1750920528810, + "asset": 1748260441106, + "meta": 1748512139574, "relativePath": "effects\\__builtin-editor-gizmo.effect" }, "f8e6b000-5643-4b86-9080-aa680ce1f599": { - "asset": 1750905745217, - "meta": 1750920528663, + "asset": 1748260441164, + "meta": 1748512139385, "relativePath": "image" }, "5c3eedba-6c41-4c0c-9ba7-d91f813cbd1c": { - "asset": 1750905745224, - "meta": 1750920528664, + "asset": 1748260441169, + "meta": 1748512139386, "relativePath": "materials" }, "fc09f9bd-2cce-4605-b630-8145ef809ed6": { - "asset": 1750905745233, - "meta": 1750920528664, + "asset": 1748260441176, + "meta": 1748512139387, "relativePath": "misc" }, "edd215b9-2796-4a05-aaf5-81f96c9281ce": { - "asset": 1750905745165, - "meta": 1750920528841, + "asset": 1748260441121, + "meta": 1748512139630, "relativePath": "image\\default_editbox_bg.png" }, "db019bf7-f71c-4111-98cf-918ea180cb48": { - "asset": 1750905745263, - "meta": 1750920528665, + "asset": 1748260441211, + "meta": 1748512139388, "relativePath": "model" }, "cfef78f1-c8df-49b7-8ed0-4c953ace2621": { - "asset": 1750905745166, - "meta": 1750920528852, + "asset": 1748260441125, + "meta": 1748512139625, "relativePath": "image\\default_progressbar.png" }, "e39e96e6-6f6e-413f-bcf1-ac7679bb648a": { - "asset": 1750905745261, - "meta": 1750920528853, + "asset": 1748260441204, + "meta": 1748512139638, "relativePath": "model\\prefab" }, "71561142-4c83-4933-afca-cb7a17f67053": { - "asset": 1750905745150, - "meta": 1750920528850, + "asset": 1748260441115, + "meta": 1748512139688, "relativePath": "image\\default_btn_disabled.png" }, "600301aa-3357-4a10-b086-84f011fa32ba": { - "asset": 1750905745131, - "meta": 1750920528845, + "asset": 1748260441112, + "meta": 1748512139709, "relativePath": "image\\default-particle.png" }, "b43ff3c2-02bb-4874-81f7-f2dea6970f18": { - "asset": 1750905745150, - "meta": 1750920528844, + "asset": 1748260441119, + "meta": 1748512139623, "relativePath": "image\\default_btn_pressed.png" }, "9d60001f-b5f4-4726-a629-2659e3ded0b8": { - "asset": 1750905745182, - "meta": 1750920529052, + "asset": 1748260441134, + "meta": 1748512139707, "relativePath": "image\\default_radio_button_on.png" }, "e851e89b-faa2-4484-bea6-5c01dd9f06e2": { - "asset": 1750905745150, - "meta": 1750920528842, + "asset": 1748260441117, + "meta": 1748512139628, "relativePath": "image\\default_btn_normal.png" }, "d81ec8ad-247c-4e62-aa3c-d35c4193c7af": { - "asset": 1750905745166, - "meta": 1750920529054, + "asset": 1748260441124, + "meta": 1748512139690, "relativePath": "image\\default_panel.png" }, "567dcd80-8bf4-4535-8a5a-313f1caf078a": { - "asset": 1750905745179, - "meta": 1750920529050, + "asset": 1748260441132, + "meta": 1748512139635, "relativePath": "image\\default_radio_button_off.png" }, "f6e6dd15-71d1-4ffe-ace7-24fd39942c05": { - "asset": 1750905745263, - "meta": 1750920528665, + "asset": 1748260441219, + "meta": 1748512139389, "relativePath": "obsolete" }, "4bab67cb-18e6-4099-b840-355f0473f890": { - "asset": 1750905745182, - "meta": 1750920529051, + "asset": 1748260441139, + "meta": 1748512139696, "relativePath": "image\\default_scrollbar_bg.png" }, "c4480a0a-6ac5-443f-8b40-361a14257fc8": { - "asset": 1750905745217, - "meta": 1750920529301, + "asset": 1748260441167, + "meta": 1748512140013, "relativePath": "materials\\builtin-phong.mtl" }, "f743d2b6-b7ea-4c14-a55b-547ed4d0a045": { - "asset": 1750905745285, - "meta": 1750920528666, + "asset": 1748260441226, + "meta": 1748512139390, "relativePath": "particle" }, "99170b0b-d210-46f1-b213-7d9e3f23098a": { - "asset": 1750905745166, - "meta": 1750920528851, + "asset": 1748260441128, + "meta": 1748512139702, "relativePath": "image\\default_progressbar_bg.png" }, "a87cc147-01b2-43f8-8e42-a7ca90b0c757": { - "asset": 1750905745233, - "meta": 1750920529228, + "asset": 1748260441183, + "meta": 1748512139922, "relativePath": "model\\prefab\\box.prefab" }, "0291c134-b3da-4098-b7b5-e397edbe947f": { - "asset": 1750905745182, - "meta": 1750920529048, + "asset": 1748260441137, + "meta": 1748512139637, "relativePath": "image\\default_scrollbar.png" }, "fe1417b6-fe6b-46a4-ae7c-9fd331f33a2a": { - "asset": 1750905745233, - "meta": 1750920529231, + "asset": 1748260441186, + "meta": 1748512139915, "relativePath": "model\\prefab\\capsule.prefab" }, "ae6c6c98-11e4-452f-8758-75f5c6a56e83": { - "asset": 1750905745397, - "meta": 1750920528666, + "asset": 1748260441310, + "meta": 1748512139391, "relativePath": "prefab" }, "0275e94c-56a7-410f-bd1a-fc7483f7d14a": { - "asset": 1750905745198, - "meta": 1750920529055, + "asset": 1748260441152, + "meta": 1748512139632, "relativePath": "image\\default_sprite_splash.png" }, "b5fc2cf2-7942-483d-be1f-bbeadc4714ad": { - "asset": 1750905745233, - "meta": 1750920529230, + "asset": 1748260441188, + "meta": 1748512139942, "relativePath": "model\\prefab\\cone.prefab" }, "1c5e4038-953a-44c2-b620-0bbfc6170477": { - "asset": 1750905745248, - "meta": 1750920529233, + "asset": 1748260441191, + "meta": 1748512139939, "relativePath": "model\\prefab\\cylinder.prefab" }, "d6d3ca85-4681-47c1-b5dd-d036a9d39ea2": { - "asset": 1750905745182, - "meta": 1750920529056, + "asset": 1748260441141, + "meta": 1748512139694, "relativePath": "image\\default_scrollbar_vertical.png" }, "6c9ef10d-b479-420b-bfe6-39cdda6a8ae0": { - "asset": 1750905745253, - "meta": 1750920529234, + "asset": 1748260441198, + "meta": 1748512139948, "relativePath": "model\\prefab\\quad.prefab" }, "3f376125-a699-40ca-ad05-04d662eaa1f2": { - "asset": 1750905745250, - "meta": 1750920529235, + "asset": 1748260441193, + "meta": 1748512139943, "relativePath": "model\\prefab\\plane.prefab" }, "617323dd-11f4-4dd3-8eec-0caf6b3b45b9": { - "asset": 1750905745182, - "meta": 1750920529056, + "asset": 1748260441145, + "meta": 1748512139699, "relativePath": "image\\default_scrollbar_vertical_bg.png" }, "2d9a4b85-b0ab-4c46-84c5-18f393ab2058": { - "asset": 1750905745256, - "meta": 1750920529232, + "asset": 1748260441200, + "meta": 1748512139947, "relativePath": "model\\prefab\\sphere.prefab" }, "de510076-056b-484f-b94c-83bef217d0e1": { - "asset": 1750905745260, - "meta": 1750920529236, + "asset": 1748260441204, + "meta": 1748512139945, "relativePath": "model\\prefab\\torus.prefab" }, "6e056173-d285-473c-b206-40a7fff5386e": { - "asset": 1750905745198, - "meta": 1750920529053, + "asset": 1748260441149, + "meta": 1748512139704, "relativePath": "image\\default_sprite.png" }, "897ef7a1-4860-4f64-968d-f5924b18668a": { - "asset": 1750905745290, - "meta": 1750920529064, + "asset": 1748260441231, + "meta": 1748512139721, "relativePath": "prefab\\2d-camera.prefab" }, "70d7cdb0-04cd-41bb-9480-c06a4785f386": { - "asset": 1750905745296, - "meta": 1750920529063, + "asset": 1748260441233, + "meta": 1748512139724, "relativePath": "prefab\\3d-camera.prefab" }, "a3ee0214-b432-4865-9666-4a3211814282": { - "asset": 1750905745330, - "meta": 1750920529064, + "asset": 1748260441267, + "meta": 1748512139725, "relativePath": "prefab\\light" }, "ed88f13d-fcad-4848-aa35-65a2cb973584": { - "asset": 1750905745300, - "meta": 1750920529065, + "asset": 1748260441239, + "meta": 1748512139727, "relativePath": "prefab\\3d-stage.prefab" }, "2c937608-2562-40ea-b264-7395df6f0cea": { - "asset": 1750905745307, - "meta": 1750920529068, + "asset": 1748260441245, + "meta": 1748512139731, "relativePath": "prefab\\canvas.prefab" }, "61aeb05b-3b32-452b-8eed-2b76deeed554": { - "asset": 1750905745310, - "meta": 1750920529069, + "asset": 1748260441249, + "meta": 1748512139735, "relativePath": "prefab\\editbox.prefab" }, "972b9a4d-47ee-4c74-b5c3-61d8a69bc29f": { - "asset": 1750905745303, - "meta": 1750920529066, + "asset": 1748260441241, + "meta": 1748512139730, "relativePath": "prefab\\button.prefab" }, "70bbeb73-6dc2-4ee4-8faf-76b3a0e34ec4": { - "asset": 1750905745298, - "meta": 1750920529067, + "asset": 1748260441236, + "meta": 1748512139734, "relativePath": "prefab\\3d-particle.prefab" }, "27756ebb-3d33-44b0-9b96-e858fadd4dd4": { - "asset": 1750905745312, - "meta": 1750920529073, + "asset": 1748260441251, + "meta": 1748512139740, "relativePath": "prefab\\label.prefab" }, "2be36297-9abb-4fee-8049-9ed5e271da8a": { - "asset": 1750905745232, - "meta": 1750920529103, + "asset": 1748260441175, + "meta": 1748512139801, "relativePath": "misc\\default_video.mp4" }, "785a442c-3ceb-45be-a46e-7317f625f3b9": { - "asset": 1750905745312, - "meta": 1750920529075, + "asset": 1748260441253, + "meta": 1748512139744, "relativePath": "prefab\\layout.prefab" }, "ca8401fe-ad6e-41a8-bd46-8e3e4e9945be": { - "asset": 1750905745330, - "meta": 1750920529078, + "asset": 1748260441268, + "meta": 1748512139748, "relativePath": "prefab\\pageview.prefab" }, "32044bd2-481f-4cf1-a656-e2b2fb1594eb": { - "asset": 1750905745348, - "meta": 1750920529080, + "asset": 1748260441281, + "meta": 1748512139759, "relativePath": "prefab\\scrollview.prefab" }, "5965ffac-69da-4b55-bcde-9225d0613c28": { - "asset": 1750905745346, - "meta": 1750920529078, + "asset": 1748260441272, + "meta": 1748512139754, "relativePath": "prefab\\progressBar.prefab" }, "cd33edea-55f5-46c2-958d-357a01384a36": { - "asset": 1750905745345, - "meta": 1750920529077, + "asset": 1748260441269, + "meta": 1748512139749, "relativePath": "prefab\\particlesystem.prefab" }, "4a37dd57-78cd-4cec-aad4-f11a73d12b63": { - "asset": 1750905745347, - "meta": 1750920529079, + "asset": 1748260441275, + "meta": 1748512139753, "relativePath": "prefab\\richtext.prefab" }, "d29077ba-1627-4a72-9579-7b56a235340c": { - "asset": 1750905745198, - "meta": 1750920529100, + "asset": 1748260441159, + "meta": 1748512139780, "relativePath": "image\\default_toggle_normal.png" }, "0004d1cf-a0ad-47d8-ab17-34d3db9d35a3": { - "asset": 1750905745349, - "meta": 1750920529081, + "asset": 1748260441284, + "meta": 1748512139756, "relativePath": "prefab\\slider.prefab" }, "c25b9d50-c8fc-4d27-beeb-6e7c1f2e5c0f": { - "asset": 1750905745198, - "meta": 1750920529118, + "asset": 1748260441157, + "meta": 1748512139784, "relativePath": "image\\default_toggle_disabled.png" }, "d8afc78c-4eac-4a9f-83dd-67bc70344d33": { - "asset": 1750905745446, - "meta": 1750920528667, + "asset": 1748260441342, + "meta": 1748512139391, "relativePath": "resources" }, "96083d03-c332-4a3f-9386-d03e2d19e8ee": { - "asset": 1750905745350, - "meta": 1750920529089, + "asset": 1748260441285, + "meta": 1748512139787, "relativePath": "prefab\\sprite.prefab" }, "73a0903d-d80e-4e3c-aa67-f999543c08f5": { - "asset": 1750905745198, - "meta": 1750920529097, + "asset": 1748260441154, + "meta": 1748512139792, "relativePath": "image\\default_toggle_checkmark.png" }, "294c1663-4adf-4a1e-a795-53808011a38a": { - "asset": 1750905745446, - "meta": 1750920529097, + "asset": 1748260441339, + "meta": 1748512139786, "relativePath": "resources\\effects" }, "bbee2217-c261-49bd-a8ce-708d6bcc3500": { - "asset": 1750905745466, - "meta": 1750920529097, + "asset": 1748260441367, + "meta": 1748512139788, "relativePath": "resources\\materials" }, "b181c1e4-0a72-4a91-bfb0-ae6f36ca60bd": { - "asset": 1750905745215, - "meta": 1750920529107, + "asset": 1748260441163, + "meta": 1748512139795, "relativePath": "image\\default_toggle_pressed.png" }, "30682f87-9f0d-4f17-8a44-72863791461b": { - "asset": 1750905745397, - "meta": 1750920529113, + "asset": 1748260441317, + "meta": 1748512139814, "relativePath": "resources\\effects\\builtin-2d-graphics.effect" }, "144c3297-af63-49e8-b8ef-1cfa29b3be28": { - "asset": 1750905745397, - "meta": 1750920529124, + "asset": 1748260441319, + "meta": 1748512139821, "relativePath": "resources\\effects\\builtin-2d-gray-sprite.effect" }, "f18742d7-56d2-4eb5-ae49-2d9d710b37c8": { - "asset": 1750905745397, - "meta": 1750920529129, + "asset": 1748260441320, + "meta": 1748512139830, "relativePath": "resources\\effects\\builtin-2d-label.effect" }, "0e93aeaa-0b53-4e40-b8e0-6268b4e07bd7": { - "asset": 1750905745397, - "meta": 1750920529134, + "asset": 1748260441323, + "meta": 1748512139838, "relativePath": "resources\\effects\\builtin-2d-spine.effect" }, "2874f8dd-416c-4440-81b7-555975426e93": { - "asset": 1750905745397, - "meta": 1750920529140, + "asset": 1748260441325, + "meta": 1748512139846, "relativePath": "resources\\effects\\builtin-2d-sprite.effect" }, "1f55e3be-b89b-4b79-88de-47fd31018044": { - "asset": 1750905745352, - "meta": 1750920529103, + "asset": 1748260441287, + "meta": 1748512139793, "relativePath": "prefab\\sprite_splash.prefab" }, "8a96b965-2dc0-4e03-aa90-3b79cb93b5b4": { - "asset": 1750905745263, - "meta": 1750920529100, + "asset": 1748260441218, + "meta": 1748512139796, "relativePath": "obsolete\\atom.png" }, "829a282c-b049-4019-bd38-5ace8d8a6417": { - "asset": 1750905745397, - "meta": 1750920529185, + "asset": 1748260441329, + "meta": 1748512139893, "relativePath": "resources\\effects\\builtin-3d-particle.effect" }, "7de03a80-4457-438d-95a7-3e7cdffd6086": { - "asset": 1750905745353, - "meta": 1750920529103, + "asset": 1748260441289, + "meta": 1748512139799, "relativePath": "prefab\\tiledmap.prefab" }, "2a7c0036-e0b3-4fe1-8998-89a54b8a2bec": { - "asset": 1750905745429, - "meta": 1750920529206, + "asset": 1748260441333, + "meta": 1748512139914, "relativePath": "resources\\effects\\builtin-3d-trail.effect" }, "c0040c95-c57f-49cd-9cbc-12316b73d0d4": { - "asset": 1750905745446, - "meta": 1750920529211, + "asset": 1748260441335, + "meta": 1748512139921, "relativePath": "resources\\effects\\builtin-clear-stencil.effect" }, "6d91e591-4ce0-465c-809f-610ec95019c6": { - "asset": 1750905745446, - "meta": 1750920529221, + "asset": 1748260441338, + "meta": 1748512139932, "relativePath": "resources\\effects\\builtin-unlit.effect" }, "0e42ba95-1fa1-46aa-b2cf-143cd1bcee2c": { - "asset": 1750905745353, - "meta": 1750920529103, + "asset": 1748260441291, + "meta": 1748512139800, "relativePath": "prefab\\tiledtile.prefab" }, "0d784963-d024-4ea6-a7db-03be0ad63010": { - "asset": 1750905745377, - "meta": 1750920529107, + "asset": 1748260441294, + "meta": 1748512139804, "relativePath": "prefab\\toggle.prefab" }, "d0a82d39-bede-46c4-b698-c81ff0dedfff": { - "asset": 1750905745284, - "meta": 1750920529113, + "asset": 1748260441225, + "meta": 1748512139797, "relativePath": "particle\\atom.png" }, "d1b8be49-b0a0-435c-83b7-552bed4bbe35": { - "asset": 1750905745397, - "meta": 1750920529107, + "asset": 1748260441302, + "meta": 1748512139808, "relativePath": "prefab\\toggleGroup.prefab" }, "bf0a434c-84dd-4a8e-a08a-7a36f180cc75": { - "asset": 1750905745396, - "meta": 1750920529107, + "asset": 1748260441298, + "meta": 1748512139815, "relativePath": "prefab\\toggleContainer.prefab" }, "61906da3-7003-4bda-9abc-5769c76faee4": { - "asset": 1750905745327, - "meta": 1750920529237, + "asset": 1748260441257, + "meta": 1748512139950, "relativePath": "prefab\\light\\ambient.prefab" }, "8c5001fd-07ee-4a4b-a8a0-63e15195e94d": { - "asset": 1750905745397, - "meta": 1750920529190, + "asset": 1748260441307, + "meta": 1748512139900, "relativePath": "prefab\\webview.prefab" }, "232d2782-c4bd-4bb4-9e01-909f03d6d3b9": { - "asset": 1750905745397, - "meta": 1750920529107, + "asset": 1748260441305, + "meta": 1748512139806, "relativePath": "prefab\\videoplayer.prefab" }, "ddb99b39-7004-47cd-9705-751905c43c46": { - "asset": 1750905745330, - "meta": 1750920529239, + "asset": 1748260441261, + "meta": 1748512139949, "relativePath": "prefab\\light\\directional.prefab" }, "f5331fd2-bf42-4ee3-a3fd-3e1657600eff": { - "asset": 1750905745330, - "meta": 1750920529240, + "asset": 1748260441267, + "meta": 1748512139951, "relativePath": "prefab\\light\\spot.prefab" }, "0cf30284-9073-46bc-9eba-e62b69dbbff3": { - "asset": 1750905745330, - "meta": 1750920529239, + "asset": 1748260441265, + "meta": 1748512139952, "relativePath": "prefab\\light\\point.prefab" }, "6f801092-0c37-4f30-89ef-c8d960825b36": { - "asset": 1750905745446, - "meta": 1750920529319, + "asset": 1748260441344, + "meta": 1748512140043, "relativePath": "resources\\materials\\builtin-2d-base.mtl" }, "3a7bb79f-32fd-422e-ada2-96f518fed422": { - "asset": 1750905745463, - "meta": 1750920529327, + "asset": 1748260441351, + "meta": 1748512140044, "relativePath": "resources\\materials\\builtin-2d-gray-sprite.mtl" }, "a153945d-2511-4c14-be7b-05d242f47d57": { - "asset": 1750905745461, - "meta": 1750920529320, + "asset": 1748260441348, + "meta": 1748512140041, "relativePath": "resources\\materials\\builtin-2d-graphics.mtl" }, "eca5d2f2-8ef6-41c2-bbe6-f9c79d09c432": { - "asset": 1750905745466, - "meta": 1750920529321, + "asset": 1748260441358, + "meta": 1748512140045, "relativePath": "resources\\materials\\builtin-2d-sprite.mtl" }, "e02d87d4-e599-4d16-8001-e14891ac6506": { - "asset": 1750905745464, - "meta": 1750920529320, + "asset": 1748260441354, + "meta": 1748512140040, "relativePath": "resources\\materials\\builtin-2d-label.mtl" }, "7afd064b-113f-480e-b793-8817d19f63c3": { - "asset": 1750905745466, - "meta": 1750920529321, + "asset": 1748260441355, + "meta": 1748512140042, "relativePath": "resources\\materials\\builtin-2d-spine.mtl" }, "cf7e0bb8-a81c-44a9-ad79-d28d43991032": { - "asset": 1750905745466, - "meta": 1750920529327, + "asset": 1748260441366, + "meta": 1748512140048, "relativePath": "resources\\materials\\builtin-clear-stencil.mtl" }, "466d4f9b-e5f4-4ea8-85d5-3c6e9a65658a": { - "asset": 1750905745466, - "meta": 1750920529326, + "asset": 1748260441362, + "meta": 1748512140050, "relativePath": "resources\\materials\\builtin-3d-trail.mtl" }, "432fa09c-cf03-4cff-a186-982604408a07": { - "asset": 1750905745466, - "meta": 1750920529322, + "asset": 1748260441359, + "meta": 1748512140049, "relativePath": "resources\\materials\\builtin-3d-particle.mtl" }, "2a296057-247c-4a1c-bbeb-0548b6c98650": { - "asset": 1750905745466, - "meta": 1750920529326, + "asset": 1748260441367, + "meta": 1748512140049, "relativePath": "resources\\materials\\builtin-unlit.mtl" }, "b8223619-7e38-47c4-841f-9160c232495a": { - "asset": 1750905745263, - "meta": 1750920529361, + "asset": 1748260441216, + "meta": 1748512140111, "relativePath": "obsolete\\atom.plist" }, "b2687ac4-099e-403c-a192-ff477686f4f5": { - "asset": 1750905745280, - "meta": 1750920529362, + "asset": 1748260441222, + "meta": 1748512140111, "relativePath": "particle\\atom.plist" }, "954fec8b-cd16-4bb9-a3b7-7719660e7558": { - "asset": 1750905745263, - "meta": 1750920532445, + "asset": 1748260441209, + "meta": 1748512143543, "relativePath": "model\\primitives.fbx" }, "bb571474-49d3-4334-91c9-6c535fca4acc": { - "asset": 1750920400532, - "meta": 1750920536520, + "asset": 1748251951379, + "meta": 1748251955936, "relativePath": "resources\\Json\\level88.json" }, "f1883a57-ccc5-48a7-9fc0-4430167d9ee3": { - "asset": 1750920400219, - "meta": 1750920535228, + "asset": 1748253245269, + "meta": 1748253259364, "relativePath": "Script\\CollisionDetection.ts" }, "9f736ed8-71dc-43c5-9d96-bfbf81ade90d": { - "asset": 1750920400517, - "meta": 1750920536496, + "asset": 1748253682095, + "meta": 1748253683010, "relativePath": "resources\\Json\\level68.json" }, "f307257e-fd8b-4b22-88e1-40d22df34759": { -<<<<<<< HEAD "asset": 1750920249178, "meta": 1751250884665, -======= - "asset": 1750920400383, - "meta": 1750920534748, ->>>>>>> 0a31a7a5abc2c505bf743aa596e1c765a0405152 "relativePath": "libs" }, "2cd54f87-8181-484e-915e-e902e5bea0c1": { - "asset": 1750920400342, - "meta": 1750920534763, + "asset": 1742460335692, + "meta": 1748437823762, "relativePath": "animation\\NewScript.js" }, "19d0cfc7-d042-4f1c-803a-556069623174": { -<<<<<<< HEAD "asset": 1750920249052, "meta": 1751250884688, "relativePath": "effect\\boom" @@ -2681,469 +2142,419 @@ "6cbb4c39-cc05-40b9-ade7-d861892eec7d": { "asset": 1750920249147, "meta": 1751250884698, -======= - "asset": 1750920400347, - "meta": 1750920534764, - "relativePath": "effect\\boom" - }, - "4848d7c0-2271-44f9-b68c-8af7c82e7d39": { - "asset": 1750920400349, - "meta": 1750920534764, - "relativePath": "effect\\freeze" - }, - "515bdb91-ddae-43df-aa2d-c51b6c703979": { - "asset": 1750920400353, - "meta": 1750920534773, - "relativePath": "effect\\good" - }, - "fb664eba-5060-4ce6-b405-1f291dbc4aef": { - "asset": 1750920400360, - "meta": 1750920534774, - "relativePath": "effect\\load" - }, - "9ecf33ff-c969-4fec-abd0-12b243dc28a9": { - "asset": 1750920400364, - "meta": 1750920534774, - "relativePath": "effect\\magic" - }, - "f3e6bd15-b228-457b-a153-3c060d0ed521": { - "asset": 1750920400370, - "meta": 1750920534779, - "relativePath": "effect\\nianhe" - }, - "4521acf8-e934-426e-b598-0e3130cff6e4": { - "asset": 1750920400372, - "meta": 1750920534789, - "relativePath": "effect\\star" - }, - "fb8c4ca9-3797-49ea-9e0b-aba6bf29a72c": { - "asset": 1750920400375, - "meta": 1750920534790, - "relativePath": "effect\\touch" - }, - "6cbb4c39-cc05-40b9-ade7-d861892eec7d": { - "asset": 1750920400380, - "meta": 1750920534790, ->>>>>>> 0a31a7a5abc2c505bf743aa596e1c765a0405152 "relativePath": "effect\\tuowei" }, "c9ad1894-4c1d-4fca-a277-726b4c189df5": { - "asset": 1750920400385, - "meta": 1750920534821, + "asset": 1594224021434, + "meta": 1748437823831, "relativePath": "migration\\use_v2.1-2.2.1_cc.Toggle_event_1.js" }, "07f20dc4-bce8-41f5-94b8-896b4ab7fbaf": { - "asset": 1750920400383, - "meta": 1750920534859, + "asset": 1695644846000, + "meta": 1748437824495, "relativePath": "libs\\ThinkingAnalyticsSDK.d.ts" }, "19659ed7-1823-42a9-b8e8-1884c19df817": { - "asset": 1750929988198, - "meta": 1750929988204, + "asset": 1747050237066, + "meta": 1748437824554, "relativePath": "Scene\\New Scene.fire" }, "84e11f32-3c7c-4f05-8a5d-1777127f6370": { - "asset": 1750920400351, - "meta": 1750920535908, + "asset": 1747685960000, + "meta": 1748437824578, "relativePath": "effect\\good\\bang.anim" }, "59cd32c1-278f-4aba-a2b6-0e0c4f73e063": { - "asset": 1750920400352, - "meta": 1750920535910, + "asset": 1749037319744, + "meta": 1749037319747, "relativePath": "effect\\good\\bang.prefab" }, "1ac64874-02fc-4f77-861a-4886a752e380": { - "asset": 1750920400344, - "meta": 1750920535915, + "asset": 1747710233734, + "meta": 1748437824592, "relativePath": "effect\\boom\\zhandan.atlas" }, "9a528c07-9fc2-4096-a26c-ca35c67d20e9": { - "asset": 1750920400347, - "meta": 1750920535913, + "asset": 1748336555154, + "meta": 1748437824594, "relativePath": "effect\\freeze\\bingkuai.atlas" }, "ba473983-3802-46d5-965d-b3cd59b7f66e": { - "asset": 1750920400363, - "meta": 1750920535968, + "asset": 1747709904309, + "meta": 1748437824606, "relativePath": "effect\\magic\\mofabang_texiao.atlas" }, "94d219c4-f6f5-4afb-9a95-370850366448": { - "asset": 1750920400360, - "meta": 1750920535959, + "asset": 1747709651535, + "meta": 1748437824608, "relativePath": "effect\\magic\\mofabang_baozha.atlas" }, "85a570c7-dd1e-40cd-89ac-a5a0de5429c8": { - "asset": 1750920400353, - "meta": 1750920535936, + "asset": 1747685960000, + "meta": 1748437824621, "relativePath": "effect\\good\\太棒了-.png" }, "7edcbf54-d8ee-4027-950d-7d5e0086d76d": { -<<<<<<< HEAD "asset": 1750920249147, "meta": 1751250884727, -======= - "asset": 1750920400376, - "meta": 1750920536013, ->>>>>>> 0a31a7a5abc2c505bf743aa596e1c765a0405152 "relativePath": "effect\\tuowei\\2D and UI trailing effects" }, "fe2e1147-b4a4-4f5d-885b-e2bac6b7b42e": { - "asset": 1750920400349, - "meta": 1750920535957, + "asset": 1748419489728, + "meta": 1748437824645, "relativePath": "effect\\freeze\\bingkuai.png" }, "71c185fc-f396-4366-8375-c40af9c2fd99": { - "asset": 1750920400369, - "meta": 1750920535980, + "asset": 1747710140423, + "meta": 1748437824668, "relativePath": "effect\\nianhe\\skeleton.atlas" }, "a13dd92f-bf7e-4b75-ab24-d443ea0a0221": { - "asset": 1750920400380, - "meta": 1750920536023, + "asset": 1748419386072, + "meta": 1748437824673, "relativePath": "effect\\tuowei\\tuowei1.prefab" }, "1c573e47-78cc-4fdb-a80b-970b2e06f16b": { - "asset": 1750920400371, - "meta": 1750920536013, + "asset": 1748336784077, + "meta": 1748437824676, "relativePath": "effect\\star\\taopao.atlas" }, "849d9729-23bc-455e-b9e5-f3bf7dc96375": { - "asset": 1750920400346, - "meta": 1750920535961, + "asset": 1748419489066, + "meta": 1748437824657, "relativePath": "effect\\boom\\zhandan.png" }, "8a50cadc-e025-4bd4-bf6e-9a8a87b63c36": { - "asset": 1750920400374, - "meta": 1750920536028, + "asset": 1748336647907, + "meta": 1748437824691, "relativePath": "effect\\touch\\fankui.atlas" }, "b11462e5-9624-4020-98f8-6418dfebaa5c": { - "asset": 1750920400364, - "meta": 1750920536013, + "asset": 1748419494362, + "meta": 1748437824696, "relativePath": "effect\\magic\\mofabang_texiao.png" }, "27f94295-c1af-4dae-a599-ec9e97060967": { - "asset": 1750920400370, - "meta": 1750920536018, + "asset": 1747710140422, + "meta": 1748437824710, "relativePath": "effect\\nianhe\\skeleton.png" }, "48588bbe-3361-44a5-b782-53ef975a9355": { - "asset": 1750920400362, - "meta": 1750920536053, + "asset": 1748419493339, + "meta": 1748437824726, "relativePath": "effect\\magic\\mofabang_baozha.png" }, "d853d588-0e29-4488-a9f9-8be43e2a8bd6": { - "asset": 1750920400372, - "meta": 1750920536058, + "asset": 1748419495069, + "meta": 1748437824730, "relativePath": "effect\\star\\taopao.png" }, "faeaa6a2-5e23-43cd-9acb-baa4eba7e32d": { - "asset": 1750920400344, - "meta": 1750920541093, + "asset": 1747710233511, + "meta": 1748437825653, "relativePath": "effect\\boom\\zhandan.json" }, "303417e6-891a-4bda-950c-4d2a04a1f4aa": { - "asset": 1750920400361, - "meta": 1750920541103, + "asset": 1747709650847, + "meta": 1748437825655, "relativePath": "effect\\magic\\mofabang_baozha.json" }, "0fb8590a-1468-4e6a-8ba6-c595642e4880": { - "asset": 1750920400363, - "meta": 1750920541114, + "asset": 1747709904145, + "meta": 1748437825660, "relativePath": "effect\\magic\\mofabang_texiao.json" }, "b98ab73e-af9c-47fa-862c-144da3071249": { - "asset": 1750920400348, - "meta": 1750920541095, + "asset": 1748336554901, + "meta": 1748437825662, "relativePath": "effect\\freeze\\bingkuai.json" }, "90e4657e-f478-47b1-91df-c5ac8b836069": { - "asset": 1750920400371, - "meta": 1750920541137, + "asset": 1748336783830, + "meta": 1748437825665, "relativePath": "effect\\star\\taopao.json" }, "4e6cd31e-a247-42dd-bae5-376b5be4059d": { - "asset": 1750920400374, - "meta": 1750920541169, + "asset": 1748336647861, + "meta": 1748437825667, "relativePath": "effect\\touch\\fankui.json" }, "e47e7785-a214-441f-8ecb-dfbec124ab29": { - "asset": 1750920400369, - "meta": 1750920541136, + "asset": 1747710140407, + "meta": 1748437825670, "relativePath": "effect\\nianhe\\skeleton.json" }, "e5b945cf-640c-4249-87eb-0c07aead8b86": { - "asset": 1750920400423, - "meta": 1750920541404, + "asset": 1745742957504, + "meta": 1748437825781, "relativePath": "res\\spine\\破碎_1.plist" }, "10b3c05c-cb90-4a2e-8872-2a8b3e890ab5": { - "asset": 1750920400375, - "meta": 1750920536076, + "asset": 1748336647906, + "meta": 1748437824774, "relativePath": "effect\\touch\\fankui.png" }, "89eea05d-23f3-4c5b-a6ce-28a491b1ed8b": { - "asset": 1750920400379, - "meta": 1750920536079, + "asset": 1747341686000, + "meta": 1748437824776, "relativePath": "effect\\tuowei\\bang.png" }, "ed1b749f-7091-4610-a494-425bb9686d4f": { - "asset": 1750920400418, - "meta": 1750920541367, + "asset": 1747047159947, + "meta": 1748437825790, "relativePath": "res\\effect\\New Material_1.mtl" }, "a43f913e-6184-42e9-bb9e-3deb36d8bcbc": { - "asset": 1750920400422, - "meta": 1750920536215, + "asset": 1744962657274, + "meta": 1748437824822, "relativePath": "res\\spine\\star_1.png" }, "e04b3e89-8b08-4014-9e5e-d36b3cf8d5a0": { - "asset": 1750920400498, - "meta": 1750920536467, + "asset": 1746008540669, + "meta": 1748437824909, "relativePath": "resources\\Json\\level42_1.json" }, "67768a91-f989-4ae1-aa68-3302f9e3cc53": { - "asset": 1750920400552, - "meta": 1750920541800, + "asset": 1746685761000, + "meta": 1748437825844, "relativePath": "resources\\Particle\\bot_3_1_1.plist" }, "7cf74208-27a8-4df5-9258-870a2746868e": { - "asset": 1750920400557, - "meta": 1750920541888, + "asset": 1746686024000, + "meta": 1748437825844, "relativePath": "resources\\Particle\\left_1_1_1.plist" }, "12306819-582e-4ee1-9e35-c24b0b935bc5": { - "asset": 1750920400543, - "meta": 1750920541780, + "asset": 1746685509000, + "meta": 1748437825845, "relativePath": "resources\\Particle\\bot_1_1_1.plist" }, "c7650af3-4db3-4d9f-a502-e0c0fce90eea": { - "asset": 1750920400549, - "meta": 1750920541785, + "asset": 1746686810000, + "meta": 1748437825846, "relativePath": "resources\\Particle\\bot_2_2_1.plist" }, "adb713c6-0fe0-4631-9c9b-adec61911be9": { - "asset": 1750920400554, - "meta": 1750920541800, + "asset": 1746696424000, + "meta": 1748437825846, "relativePath": "resources\\Particle\\bot_3_2_1.plist" }, "f8a9dd4c-54ba-48d6-bac6-38624a421af3": { - "asset": 1750920400546, - "meta": 1750920541793, + "asset": 1746685566000, + "meta": 1748437825847, "relativePath": "resources\\Particle\\bot_1_3_1.plist" }, "b6763ed3-58ec-4788-8c2c-a425e5f35f8a": { - "asset": 1750920400550, - "meta": 1750920541792, + "asset": 1746685740000, + "meta": 1748437825848, "relativePath": "resources\\Particle\\bot_2_3_1.plist" }, "52e04d9a-add5-4d61-8aed-2a2576c268eb": { - "asset": 1750920400558, - "meta": 1750920541883, + "asset": 1746686056000, + "meta": 1748437825848, "relativePath": "resources\\Particle\\left_1_2_1.plist" }, "7aef84fa-1599-4e26-9f9f-f03c57555402": { - "asset": 1750920400561, - "meta": 1750920541898, + "asset": 1746686907000, + "meta": 1748437825849, "relativePath": "resources\\Particle\\left_2_1_1.plist" }, "613e8900-5acd-4d64-af09-04e3a3bcd4b1": { - "asset": 1750920400541, - "meta": 1750920536535, + "asset": 1747376177553, + "meta": 1748437824984, "relativePath": "resources\\Json\\level97_1.json" }, "a96e9590-d76b-46a9-bc22-78fabd5f5074": { - "asset": 1750920400544, - "meta": 1750920541771, + "asset": 1746685533000, + "meta": 1748437825849, "relativePath": "resources\\Particle\\bot_1_2_1.plist" }, "e7bf65df-6953-437a-9551-5c4e7b6f1b5e": { - "asset": 1750920400559, - "meta": 1750920541873, + "asset": 1746686397000, + "meta": 1748437825851, "relativePath": "resources\\Particle\\left_1_3_1.plist" }, "9f9ed084-4b2f-470c-af4c-da9fe4685238": { - "asset": 1750920400556, - "meta": 1750920541873, + "asset": 1746687083000, + "meta": 1748437825852, "relativePath": "resources\\Particle\\bot_3_3_1.plist" }, "f6b05315-94c5-41a5-a0f1-187fca3c0f04": { - "asset": 1750920400547, - "meta": 1750920541779, + "asset": 1746685589000, + "meta": 1748437825852, "relativePath": "resources\\Particle\\bot_2_1_1.plist" }, "5949d3bc-f476-4f63-b038-22fa8cba4e62": { - "asset": 1750920400562, - "meta": 1750920541898, + "asset": 1746686875000, + "meta": 1748437825853, "relativePath": "resources\\Particle\\left_2_2_1.plist" }, "8312f0f9-6f26-423d-aaa2-ff9ee5122ca2": { - "asset": 1750920400438, - "meta": 1750920536542, + "asset": 1748338955455, + "meta": 1748437824993, "relativePath": "resources\\Json\\NEW_LEVEL.json" }, "369304fd-101d-46ed-92be-ecbd8fad18ec": { - "asset": 1750920400564, - "meta": 1750920541904, + "asset": 1746686844000, + "meta": 1748437825855, "relativePath": "resources\\Particle\\left_2_3_1.plist" }, "1413285e-fbb4-449b-aae6-ed678dfc570d": { - "asset": 1750920400565, - "meta": 1750920541909, + "asset": 1746687038000, + "meta": 1748437825855, "relativePath": "resources\\Particle\\left_3_1_1.plist" }, "aefab8fc-93d1-46a4-bcad-37868e23ed88": { - "asset": 1750920400571, - "meta": 1750920541988, + "asset": 1746687507000, + "meta": 1748437825873, "relativePath": "resources\\Particle\\right_1_1_1.plist" }, "4785d85b-8f9b-4bda-a3e6-db6fda98448d": { - "asset": 1750920400570, - "meta": 1750920541985, + "asset": 1746687098000, + "meta": 1748437825873, "relativePath": "resources\\Particle\\left_3_3_1.plist" }, "12e1b849-ce38-42b3-ad4c-afc5ecc39f53": { - "asset": 1750920400572, - "meta": 1750920541993, + "asset": 1746693333000, + "meta": 1748437825874, "relativePath": "resources\\Particle\\right_1_2_1.plist" }, "72db9548-9c2d-44a5-9b20-b2e1bc503bde": { - "asset": 1750920400567, - "meta": 1750920541978, + "asset": 1746687057000, + "meta": 1748437825874, "relativePath": "resources\\Particle\\left_3_2_1.plist" }, "e9fa150a-0934-49b2-8ff1-7a3731a51ef5": { - "asset": 1750920400574, - "meta": 1750920542008, + "asset": 1746693940000, + "meta": 1748437825876, "relativePath": "resources\\Particle\\right_2_1_1.plist" }, "91939f84-461f-4e10-8fc6-9d5d1c0a755f": { - "asset": 1750920400573, - "meta": 1750920542003, + "asset": 1746693363000, + "meta": 1748437825877, "relativePath": "resources\\Particle\\right_1_3_1.plist" }, "3ca8a558-0473-46b4-bf9e-8219bd053d31": { - "asset": 1750920400579, - "meta": 1750920542075, + "asset": 1746695306000, + "meta": 1748437825879, "relativePath": "resources\\Particle\\right_3_2_1.plist" }, "4f669477-e069-48c9-8ac4-3a78a906acdc": { - "asset": 1750920400577, - "meta": 1750920542068, + "asset": 1746694419000, + "meta": 1748437825880, "relativePath": "resources\\Particle\\right_3_1_1.plist" }, "7cd70a8a-d647-4879-bb5d-581af7354952": { - "asset": 1750920400580, - "meta": 1750920542077, + "asset": 1746695341000, + "meta": 1748437825881, "relativePath": "resources\\Particle\\right_3_3_1.plist" }, "ce0d2338-8b1e-46ac-b938-9e2e78bec2c4": { - "asset": 1750920400576, - "meta": 1750920542023, + "asset": 1746694123000, + "meta": 1748437825881, "relativePath": "resources\\Particle\\right_2_3_1.plist" }, "08e0f120-6617-416b-8415-9d1e8df99eac": { - "asset": 1750920400575, - "meta": 1750920542013, + "asset": 1746696176000, + "meta": 1748437825885, "relativePath": "resources\\Particle\\right_2_2_1.plist" }, "a2c01fb9-38c6-4c61-90ae-ebf10eb9ed97": { - "asset": 1750920400597, - "meta": 1750920542084, + "asset": 1746695524000, + "meta": 1748437825885, "relativePath": "resources\\Particle\\top_1_2_1.plist" }, "cd676662-9e94-4ce6-a646-75e290df3035": { - "asset": 1750920400595, - "meta": 1750920542079, + "asset": 1746695365000, + "meta": 1748437825886, "relativePath": "resources\\Particle\\top_1_1_1.plist" }, "acf7e102-5bfb-43d0-baba-dc86655425c7": { - "asset": 1750920400598, - "meta": 1750920542090, + "asset": 1746696103000, + "meta": 1748437825896, "relativePath": "resources\\Particle\\top_1_3_1.plist" }, "7ac2cc5d-cb5e-46e6-b8fd-a0d0fab58f94": { - "asset": 1750920400600, - "meta": 1750920542092, + "asset": 1746696154000, + "meta": 1748437825896, "relativePath": "resources\\Particle\\top_2_1_1.plist" }, "9b32ae82-e69e-4dd1-a8fa-5dcbc2f557d6": { - "asset": 1750920400602, - "meta": 1750920542094, + "asset": 1746696263000, + "meta": 1748437825908, "relativePath": "resources\\Particle\\top_2_2_1.plist" }, "904fab90-af16-403d-ae7d-92cda0ffdf88": { - "asset": 1750920400604, - "meta": 1750920542166, + "asset": 1746696287000, + "meta": 1748437825933, "relativePath": "resources\\Particle\\top_2_3_1.plist" }, "5efe1712-3acb-4700-a318-3f851110e111": { - "asset": 1750920400605, - "meta": 1750920542163, + "asset": 1746696323000, + "meta": 1748437825939, "relativePath": "resources\\Particle\\top_3_1_1.plist" }, "c86193d7-6eb3-416b-bc19-43fd0106e56e": { - "asset": 1750920400606, - "meta": 1750920542171, + "asset": 1746696349000, + "meta": 1748437825940, "relativePath": "resources\\Particle\\top_3_2_1.plist" }, "ff5bc8e1-d5a7-4667-9a01-6eb1173dee63": { - "asset": 1750920400607, - "meta": 1750920542192, + "asset": 1746696368000, + "meta": 1748437825940, "relativePath": "resources\\Particle\\top_3_3_1.plist" }, "a31899db-3035-4aa4-a9fe-7fded073dd86": { - "asset": 1750920400582, - "meta": 1750920536578, + "asset": 1747037900273, + "meta": 1748437825076, "relativePath": "resources\\Particle\\sp10_1.png" }, "939ebf75-c659-407b-9c0f-d7076254b88f": { - "asset": 1750920400593, - "meta": 1750920536676, + "asset": 1747037900654, + "meta": 1748437825084, "relativePath": "resources\\Particle\\sp8_1.png" }, "d3490b80-4d19-4947-813e-0bcc1befc7c8": { - "asset": 1750920400583, - "meta": 1750920536589, + "asset": 1747037900326, + "meta": 1748437825092, "relativePath": "resources\\Particle\\sp1_1.png" }, "5b2973a1-a163-4dc2-819f-2b5e6857af9c": { - "asset": 1750920400589, - "meta": 1750920536630, + "asset": 1747037900515, + "meta": 1748437825093, "relativePath": "resources\\Particle\\sp5_1.png" }, "c4aa25d1-758f-43cd-a8ee-a3dbacc15789": { - "asset": 1750920400591, - "meta": 1750920536630, + "asset": 1747037900560, + "meta": 1748437825106, "relativePath": "resources\\Particle\\sp6_1.png" }, "613e4638-41b7-425b-a51a-6b79fa173623": { - "asset": 1750920400587, - "meta": 1750920536605, + "asset": 1747037900420, + "meta": 1748437825107, "relativePath": "resources\\Particle\\sp3_1.png" }, "7c24de34-6445-4eb1-8e25-e67099420921": { - "asset": 1750920400592, - "meta": 1750920536666, + "asset": 1747037900607, + "meta": 1748437825111, "relativePath": "resources\\Particle\\sp7_1.png" }, "a6a556b5-3b8d-4783-b187-5c19590004c4": { - "asset": 1750920400594, - "meta": 1750920536671, + "asset": 1747037900699, + "meta": 1748437825113, "relativePath": "resources\\Particle\\sp9_1.png" }, "e70e4bb3-725c-48ca-a6ff-be6a51cecab6": { - "asset": 1750920400588, - "meta": 1750920536627, + "asset": 1747037900468, + "meta": 1748437825115, "relativePath": "resources\\Particle\\sp4_1.png" }, "13185b79-88d9-48ff-95ad-2f6cb45b602a": { - "asset": 1750920400585, - "meta": 1750920536573, + "asset": 1747037900374, + "meta": 1748437825116, "relativePath": "resources\\Particle\\sp2_1.png" }, "b7dfc157-1e68-4278-a452-23541de3bab7": { -<<<<<<< HEAD "asset": 1750920249162, "meta": 1751250884745, "relativePath": "effect\\tuowei\\2D and UI trailing effects\\2D和UI的拖尾效果3.x" @@ -3156,39 +2567,24 @@ "e0b3973d-fd82-4d03-a0db-8ec2dd56271a": { "asset": 1750920249162, "meta": 1751250884752, -======= - "asset": 1750920400377, - "meta": 1750920538265, - "relativePath": "effect\\tuowei\\2D and UI trailing effects\\2D和UI的拖尾效果3.x" - }, - "9d39798c-3312-4cfe-b597-73c0057c8e99": { - "asset": 1750920400377, - "meta": 1750920540723, - "relativePath": "effect\\tuowei\\2D and UI trailing effects\\2D和UI的拖尾效果3.x\\textures" - }, - "e0b3973d-fd82-4d03-a0db-8ec2dd56271a": { - "asset": 1750920400379, - "meta": 1750920540735, ->>>>>>> 0a31a7a5abc2c505bf743aa596e1c765a0405152 "relativePath": "effect\\tuowei\\2D and UI trailing effects\\2D和UI的拖尾效果3.x\\textures\\particle" }, "05875bd1-0240-40cc-b2d9-0166038382ba": { - "asset": 1750920400378, - "meta": 1750920540843, + "asset": 1747341686000, + "meta": 1748437825544, "relativePath": "effect\\tuowei\\2D and UI trailing effects\\2D和UI的拖尾效果3.x\\textures\\particle\\circle_00.png" }, "b706673f-e777-40bc-af87-422aec7626a4": { - "asset": 1750920400379, - "meta": 1750920540839, + "asset": 1747341686000, + "meta": 1748437825551, "relativePath": "effect\\tuowei\\2D and UI trailing effects\\2D和UI的拖尾效果3.x\\textures\\particle\\flash.png" }, "4728bb0d-1617-4105-b140-fcfc14969a6b": { - "asset": 1750920400377, - "meta": 1750920540846, + "asset": 1747341686000, + "meta": 1748437825559, "relativePath": "effect\\tuowei\\2D and UI trailing effects\\2D和UI的拖尾效果3.x\\textures\\particle\\LiZi1.png" }, "6c53e21f-0dfa-4273-b08a-951f6792467b": { -<<<<<<< HEAD "asset": 1751253708450, "meta": 1751253708459, "relativePath": "resources\\prefab\\block\\block4.prefab" @@ -3201,74 +2597,59 @@ "0432403f-8c23-4a3e-813a-1a9a1d88aeed": { "asset": 1750920250155, "meta": 1751250884731, -======= - "asset": 1750920400646, - "meta": 1750920538508, - "relativePath": "resources\\prefab\\block\\block4.prefab" - }, - "6413d7ad-bfc3-4b8c-bc1c-c1d819e9d892": { - "asset": 1750920400232, - "meta": 1750920536700, - "relativePath": "Script\\lq_base\\data" - }, - "0432403f-8c23-4a3e-813a-1a9a1d88aeed": { - "asset": 1750920400236, - "meta": 1750920536702, ->>>>>>> 0a31a7a5abc2c505bf743aa596e1c765a0405152 "relativePath": "Script\\lq_base\\util" }, "c22a3c1c-53fb-4174-9fea-8e7fd0eaeb80": { - "asset": 1750920400237, - "meta": 1750920536815, + "asset": 1748499413325, + "meta": 1748513630748, "relativePath": "Script\\lq_collide_system\\lq_collide_base.ts" }, "81314984-dc17-444a-bf3b-48014af5caaf": { - "asset": 1750920400239, - "meta": 1750920537013, + "asset": 1748499413326, + "meta": 1748513630950, "relativePath": "Script\\lq_collide_system\\lq_collide_system.js" }, "ad6beb84-3361-4f58-ac42-8c77980b3384": { - "asset": 1750920400238, - "meta": 1750920537671, + "asset": 1748499413326, + "meta": 1748513631114, "relativePath": "Script\\lq_collide_system\\lq_collide_system.d.ts" }, "a5470d94-355f-4d03-ba58-81077a780e7f": { - "asset": 1750920400231, - "meta": 1750920538608, + "asset": 1748499413804, + "meta": 1748513631012, "relativePath": "Script\\lq_base\\data\\lq_data.ts" }, "41e4557a-fef0-4dcf-97ed-8070a81667a2": { - "asset": 1750920400232, - "meta": 1750920538613, + "asset": 1748499413804, + "meta": 1748513631014, "relativePath": "Script\\lq_base\\data\\lq_interface.ts" }, "9830980f-5d4c-4417-acc1-7bd7bbe4a9db": { - "asset": 1750920400231, - "meta": 1750920538573, + "asset": 1748499413804, + "meta": 1748513630993, "relativePath": "Script\\lq_base\\data\\lq_const.ts" }, "cd21fb93-658e-4b3a-8897-b4deba47bc31": { - "asset": 1750920400233, - "meta": 1750920538684, + "asset": 1748499414034, + "meta": 1748513631049, "relativePath": "Script\\lq_base\\util\\lq_base_util.ts" }, "98488d9e-d9da-43d7-b2ef-0909d30f2904": { - "asset": 1750920400236, - "meta": 1750920538864, + "asset": 1748499414034, + "meta": 1748513631107, "relativePath": "Script\\lq_base\\util\\lq_pool_util.ts" }, "997fce7c-cb7f-4e14-b7e5-87a4f9f1f643": { - "asset": 1750920400235, - "meta": 1750920538778, + "asset": 1748499414034, + "meta": 1748513631064, "relativePath": "Script\\lq_base\\util\\lq_math_util.ts" }, "63c53081-f5d8-4bfe-9845-38fb537ae17b": { - "asset": 1750920400234, - "meta": 1750920538743, + "asset": 1748513423363, + "meta": 1748513475485, "relativePath": "Script\\lq_base\\util\\lq_game_util.ts" }, "b6fd3869-f3bc-4fcb-9660-e4cbe0824ad3": { -<<<<<<< HEAD "asset": 1750920250139, "meta": 1751250884712, "relativePath": "Script\\lq_base" @@ -3281,99 +2662,74 @@ "92f23179-46e7-4f6c-8d1f-3b68910937db": { "asset": 1751254045760, "meta": 1751254045768, -======= - "asset": 1750920400232, - "meta": 1750920535491, - "relativePath": "Script\\lq_base" - }, - "7262f828-3947-4d61-ab6b-0c5ef01a6473": { - "asset": 1750920400239, - "meta": 1750920535491, - "relativePath": "Script\\lq_collide_system" - }, - "92f23179-46e7-4f6c-8d1f-3b68910937db": { - "asset": 1750920400647, - "meta": 1750920538521, ->>>>>>> 0a31a7a5abc2c505bf743aa596e1c765a0405152 "relativePath": "resources\\prefab\\block\\block5.prefab" }, "4bd218bc-f09f-4a7e-8581-e9faa4ee85b5": { - "asset": 1750920400238, - "meta": 1750920536822, + "asset": 1748518631814, + "meta": 1748518632693, "relativePath": "Script\\lq_collide_system\\lq_collide_config.ts" }, "e1e1fde9-4548-4234-97c0-b571d29d6964": { -<<<<<<< HEAD "asset": 1751253674536, "meta": 1751253674549, -======= - "asset": 1750920400636, - "meta": 1750920538352, ->>>>>>> 0a31a7a5abc2c505bf743aa596e1c765a0405152 "relativePath": "resources\\prefab\\block\\block1.prefab" }, "92586008-06b8-4305-818c-ab9e69997bd3": { - "asset": 1750920400541, - "meta": 1750920536537, + "asset": 1748946820858, + "meta": 1748946822183, "relativePath": "resources\\Json\\level98.json" }, "4ecec063-d01a-4047-a6bf-2af9daa39c0e": { - "asset": 1750920400528, - "meta": 1750920536515, + "asset": 1749006904091, + "meta": 1749007053259, "relativePath": "resources\\Json\\level83.json" }, "3c71c961-6f67-4945-8fc8-4423bde5a407": { -<<<<<<< HEAD "asset": 1750920250486, "meta": 1751250884745, -======= - "asset": 1750920400341, - "meta": 1750920538249, ->>>>>>> 0a31a7a5abc2c505bf743aa596e1c765a0405152 "relativePath": "UI\\UI\\start" }, "e1b9ccf5-5ce0-4f3a-98b3-be03da8aa0b1": { - "asset": 1750920400340, - "meta": 1750920540813, + "asset": 1744703447500, + "meta": 1749019355803, "relativePath": "UI\\UI\\start\\jiazai3.png" }, "a599dccc-d5a2-4fff-86ea-f3a03ce9b7b8": { - "asset": 1750920400339, - "meta": 1750920540823, + "asset": 1744703447383, + "meta": 1749019355803, "relativePath": "UI\\UI\\start\\jiazai1.png" }, "c8d5d71b-f258-4537-9490-86e913376bf6": { - "asset": 1750920400341, - "meta": 1750920540807, + "asset": 1744703447686, + "meta": 1749019355819, "relativePath": "UI\\UI\\start\\logo.png" }, "5446346a-3fb9-4f57-bd44-4858f8fd3af2": { - "asset": 1750920400338, - "meta": 1750920540907, + "asset": 1747986063424, + "meta": 1749019355851, "relativePath": "UI\\UI\\start\\bg.jpg" }, "4ef763e2-6a9f-4632-8dd6-5f6394e2c593": { - "asset": 1750920400339, - "meta": 1750920540875, + "asset": 1744703594000, + "meta": 1749019355867, "relativePath": "UI\\UI\\start\\bg_1.jpg" }, "707d9e1d-7462-4b68-abd1-ae01b980fde2": { - "asset": 1750920400326, - "meta": 1750920538439, + "asset": 1749022072739, + "meta": 1749022347427, "relativePath": "UI\\UI\\ice2.png" }, "07fe1d60-1325-4d4f-8cb6-0ef546f3bfe9": { - "asset": 1750920400321, - "meta": 1750920538339, + "asset": 1749022073336, + "meta": 1749022347433, "relativePath": "UI\\UI\\gx1.png" }, "e823ecf2-4cd3-49b7-ad41-785d1977e9f9": { - "asset": 1750920400325, - "meta": 1750920538688, + "asset": 1749022075753, + "meta": 1749022347498, "relativePath": "UI\\UI\\ice1.png" }, "a8367177-3aba-42cd-9f77-1f1ad166b0ac": { -<<<<<<< HEAD "asset": 1750920250360, "meta": 1751250884686, "relativePath": "TextureBg" @@ -3381,556 +2737,488 @@ "89c216a8-80c9-4e97-a06f-864e5640fcc8": { "asset": 1750920250375, "meta": 1751250884724, -======= - "asset": 1750920400276, - "meta": 1750920534753, - "relativePath": "TextureBg" - }, - "89c216a8-80c9-4e97-a06f-864e5640fcc8": { - "asset": 1750920400286, - "meta": 1750920535900, ->>>>>>> 0a31a7a5abc2c505bf743aa596e1c765a0405152 "relativePath": "TextureBg\\pop_Bg" }, "22bce3a4-1d59-4e46-a06c-530039f813b8": { - "asset": 1750920400286, - "meta": 1750920538103, + "asset": 1749022080209, + "meta": 1749022636401, "relativePath": "TextureBg\\pop_Bg\\yinYing.png" }, "46fd55f0-7f2d-444c-ad65-9dfff081c008": { - "asset": 1750920400277, - "meta": 1750920538047, + "asset": 1749022082580, + "meta": 1749022636409, "relativePath": "TextureBg\\pop_Bg\\pauseBg.png" }, "669a5a6c-68ca-412c-9321-a0af32085234": { - "asset": 1750920400281, - "meta": 1750920538243, + "asset": 1749022078056, + "meta": 1749022636418, "relativePath": "TextureBg\\pop_Bg\\result_bg2.png" }, "cf67e4b5-6705-4eb0-809f-69efa4a5883e": { - "asset": 1750920400279, - "meta": 1750920538247, + "asset": 1749022085336, + "meta": 1749022636427, "relativePath": "TextureBg\\pop_Bg\\result_bg1.png" }, "8ac53103-5eab-4857-b56c-2d055f0be6e3": { - "asset": 1750920400285, - "meta": 1750920538433, + "asset": 1749022079508, + "meta": 1749022636451, "relativePath": "TextureBg\\pop_Bg\\tanchuang1.png" }, "6d618c9c-dc6d-48d0-a203-3304725f885b": { - "asset": 1750920400340, - "meta": 1750920540803, + "asset": 1744703447453, + "meta": 1749022882221, "relativePath": "UI\\UI\\start\\jiazai2.png" }, "3c749884-1309-4030-a3f2-8c6124c14da5": { - "asset": 1750920400252, - "meta": 1750920537155, + "asset": 1749026725983, + "meta": 1749026770270, "relativePath": "Script\\prop\\Boom.ts" }, "41cb8ba0-2d20-47ff-968d-867b09e655fb": { - "asset": 1750920400253, - "meta": 1750920537228, + "asset": 1749026745970, + "meta": 1749026770305, "relativePath": "Script\\prop\\Lock.ts" }, "669f44ae-4a5f-4e46-a6b0-05c6f008da46": { - "asset": 1750920400225, - "meta": 1750920535733, + "asset": 1749027220793, + "meta": 1749027222141, "relativePath": "Script\\NumberToImage.ts" }, "3890fe43-f2f3-4d6e-acfa-07ba7794f7b6": { - "asset": 1750920400521, - "meta": 1750920536498, + "asset": 1749035384566, + "meta": 1749035454458, "relativePath": "resources\\Json\\level70.json" }, "bf502854-8e31-40c1-9d27-ac480682b4c4": { - "asset": 1750920400415, - "meta": 1750920536145, + "asset": 1750236731095, + "meta": 1750236731100, "relativePath": "prefab\\prop\\star.prefab" }, "ad8cb6f3-0a88-4247-9ba2-7ecb1d4537fe": { - "asset": 1750920400252, - "meta": 1750920537186, + "asset": 1749038829891, + "meta": 1749038830504, "relativePath": "Script\\prop\\Freeze.ts" }, "7b34e903-ce39-4cc8-bb62-11e9068ad7a0": { - "asset": 1750920400314, - "meta": 1750920538233, + "asset": 1745303526000, + "meta": 1749094519908, "relativePath": "TextureBlock\\block\\lianjie_1.png" }, "bee79baf-7ab4-4603-bd5f-9b7b367bb87f": { - "asset": 1750920400316, - "meta": 1750920538305, + "asset": 1745303526000, + "meta": 1749094519909, "relativePath": "TextureBlock\\block\\lianjie_2.png" }, "25bab75a-d0a5-42a2-b0d4-f1aca4ac8d80": { - "asset": 1750920400411, - "meta": 1750920536068, + "asset": 1749535522491, + "meta": 1749535522498, "relativePath": "prefab\\prop\\adhesive.prefab" }, "d1e47425-52fd-46a4-b2e0-ca7eb4035219": { - "asset": 1750920400365, - "meta": 1750920535973, + "asset": 1749111459159, + "meta": 1749111531179, "relativePath": "effect\\nianhe\\jiekou_heng.atlas" }, "4811f779-3bd2-4074-b313-6b217df626ad": { - "asset": 1750920400367, - "meta": 1750920535993, + "asset": 1749111459158, + "meta": 1749111531194, "relativePath": "effect\\nianhe\\jiekou_heng.png" }, "8b100987-aed3-4feb-ba02-557888c6784e": { - "asset": 1750920400366, - "meta": 1750920541098, + "asset": 1749111459120, + "meta": 1749111531210, "relativePath": "effect\\nianhe\\jiekou_heng.json" }, "d2add891-a975-4a43-8604-a7ab0ae5de91": { - "asset": 1750920400237, - "meta": 1750920536802, + "asset": 1749181658130, + "meta": 1749181658566, "relativePath": "Script\\lq_collide_system\\lq_collide.ts" }, "b5a3ac74-65d0-495a-a1ca-fa356fa27044": { - "asset": 1750920400503, - "meta": 1750920536473, + "asset": 1749193070000, + "meta": 1749195518139, "relativePath": "resources\\Json\\level48.json" }, "f12e967c-5941-4412-aec3-a0f685bbd348": { - "asset": 1750920400481, - "meta": 1750920536440, + "asset": 1749183226000, + "meta": 1749195518140, "relativePath": "resources\\Json\\level21.json" }, "92a55f0e-c363-4a6c-8f90-184e94ab3627": { - "asset": 1750920400479, - "meta": 1750920536435, + "asset": 1749182307000, + "meta": 1749195518143, "relativePath": "resources\\Json\\level19.json" }, "529f3c90-8582-4ee9-ad0e-a03537b58dbe": { - "asset": 1750920400485, - "meta": 1750920536445, + "asset": 1749189827000, + "meta": 1749195518145, "relativePath": "resources\\Json\\level26.json" }, "b8cbb874-456c-45e9-a26d-bcf67373d057": { - "asset": 1750920400355, - "meta": 1750920535920, + "asset": 1749006686343, + "meta": 1749201359103, "relativePath": "effect\\load\\skeleton.atlas" }, "904053d8-a235-4912-a613-9c55b49a1fcf": { - "asset": 1750920400360, - "meta": 1750920536136, + "asset": 1749201299713, + "meta": 1749201359262, "relativePath": "effect\\load\\skeleton.png" }, "83fdf834-580f-49fa-ab44-3f234c89d1c2": { - "asset": 1750920400355, - "meta": 1750920541111, + "asset": 1749006685475, + "meta": 1749201359280, "relativePath": "effect\\load\\skeleton.json" }, "dc0c1cff-b811-45ac-a0bb-85669ed178f7": { - "asset": 1750920400457, - "meta": 1750920536389, + "asset": 1748402748000, + "meta": 1749203150848, "relativePath": "resources\\Json\\level125.json" }, "2eb31c5e-4f7a-42d8-a961-3b5e60583d3e": { - "asset": 1750920400460, - "meta": 1750920536398, + "asset": 1748413842000, + "meta": 1749203150849, "relativePath": "resources\\Json\\level130.json" }, "510edcae-1f66-45f1-8bb4-3db4986cfa22": { - "asset": 1750920400459, - "meta": 1750920536390, + "asset": 1748411907000, + "meta": 1749203150851, "relativePath": "resources\\Json\\level128.json" }, "5080d509-53d2-44d1-90c4-349c2e006a19": { - "asset": 1750920400463, - "meta": 1750920536400, + "asset": 1748420393000, + "meta": 1749203150852, "relativePath": "resources\\Json\\level135.json" }, "fa10390d-fc46-4025-b791-04d326c1f013": { - "asset": 1750920400461, - "meta": 1750920536403, + "asset": 1748419328000, + "meta": 1749203150854, "relativePath": "resources\\Json\\level133.json" }, "abae2d80-f428-4585-870a-295a24697637": { - "asset": 1750920400462, - "meta": 1750920536402, + "asset": 1748416596000, + "meta": 1749203150856, "relativePath": "resources\\Json\\level134.json" }, "a0412d3a-5dcc-4671-af2e-aa9794f7e08f": { - "asset": 1750920400458, - "meta": 1750920536387, + "asset": 1748403832000, + "meta": 1749203150857, "relativePath": "resources\\Json\\level126.json" }, "4bd2d099-e112-49c5-b0ec-680470952c3e": { - "asset": 1750920400465, - "meta": 1750920536406, + "asset": 1748487887000, + "meta": 1749203150859, "relativePath": "resources\\Json\\level140.json" }, "f6714297-00e0-44fb-b706-e3fbef1f486d": { - "asset": 1750920400464, - "meta": 1750920536404, + "asset": 1748487286000, + "meta": 1749203150860, "relativePath": "resources\\Json\\level138.json" }, "f539cbbc-12a9-42a4-9a80-05013ba69d0b": { - "asset": 1750920400467, - "meta": 1750920536409, + "asset": 1748489625000, + "meta": 1749203150861, "relativePath": "resources\\Json\\level143.json" }, "407bfb1e-6181-40c6-8b1f-6bd368cb9507": { - "asset": 1750920400466, - "meta": 1750920536408, + "asset": 1748488631000, + "meta": 1749203150861, "relativePath": "resources\\Json\\level141.json" }, "5417765e-1eff-4053-9572-b1d1197db88a": { - "asset": 1750920400468, - "meta": 1750920536413, + "asset": 1749004853000, + "meta": 1749203150863, "relativePath": "resources\\Json\\level144.json" }, "dfae9728-10ae-4338-9000-1844255e36d6": { - "asset": 1750920400457, - "meta": 1750920536385, + "asset": 1748400420000, + "meta": 1749203150864, "relativePath": "resources\\Json\\level124.json" }, "87a1f7e1-e195-4224-9223-90f9bfcf81c8": { - "asset": 1750920400469, - "meta": 1750920536410, + "asset": 1749005652000, + "meta": 1749203150866, "relativePath": "resources\\Json\\level145.json" }, "c23a8d9a-37a2-4ee6-b9e3-3adf2f1d82be": { - "asset": 1750920400475, - "meta": 1750920536427, + "asset": 1749116284000, + "meta": 1749203150869, "relativePath": "resources\\Json\\level152.json" }, "892e12ad-70db-468f-b4bd-a2cd65677298": { - "asset": 1750920400475, - "meta": 1750920536430, + "asset": 1749114485000, + "meta": 1749203150870, "relativePath": "resources\\Json\\level151.json" }, "dc754672-6abb-4801-910e-98ba5a873885": { - "asset": 1750920400474, - "meta": 1750920536427, + "asset": 1749017386000, + "meta": 1749203150871, "relativePath": "resources\\Json\\level150.json" }, "3b669f8e-12ad-4d16-9561-6fd9ace64638": { - "asset": 1750920400476, - "meta": 1750920536433, + "asset": 1749119877000, + "meta": 1749203150872, "relativePath": "resources\\Json\\level156.json" }, "a81ff75b-b73d-433f-abf4-18849599cdff": { - "asset": 1750920400476, - "meta": 1750920536430, + "asset": 1749117900000, + "meta": 1749203150872, "relativePath": "resources\\Json\\level154.json" }, "b97dfffc-df55-4efa-a2b5-66c748fa8992": { - "asset": 1750920400477, - "meta": 1750920536433, + "asset": 1749178609000, + "meta": 1749203150873, "relativePath": "resources\\Json\\level157.json" }, "0f9aab89-5e08-423d-8030-259fe54c4d74": { - "asset": 1750920400276, - "meta": 1750920538103, + "asset": 1749207306943, + "meta": 1749207335877, "relativePath": "TextureBg\\pop_Bg\\loadBg.jpg" }, "75b4f368-70b5-452d-9afd-ca7a6f1e2e60": { - "asset": 1750920400404, - "meta": 1750920536635, + "asset": 1749208553577, + "meta": 1749208583656, "relativePath": "music\\main_bgm.mp3" }, "41760d65-2f00-4cc3-9b87-00d2592e91dd": { - "asset": 1750920400492, - "meta": 1750920536457, + "asset": 1749459335413, + "meta": 1749459340526, "relativePath": "resources\\Json\\level34.json" }, "358754f4-96c4-4bde-bce1-36451d5f8fc6": { - "asset": 1750920400236, - "meta": 1750920538817, + "asset": 1749460616755, + "meta": 1749460861066, "relativePath": "Script\\lq_base\\util\\lq_platform_util.ts" }, "8a024faa-e4af-4cae-9c5c-693bee7120c1": { - "asset": 1750920400227, - "meta": 1750920537267, + "asset": 1723104058083, + "meta": 1749467157753, "relativePath": "Script\\Sdk\\DouyinEntranceView.ts" }, "24976052-1e2b-4093-8a2f-ea8a6de66515": { - "asset": 1750920400632, - "meta": 1750920534866, + "asset": 1749470251684, + "meta": 1749470252921, "relativePath": "resources\\level51.json" }, "f6dd9161-ac72-46f4-b977-9943277a79b9": { - "asset": 1750920400506, - "meta": 1750920536473, + "asset": 1749470323688, + "meta": 1749470324880, "relativePath": "resources\\Json\\level51.json" }, "5fc5bcf5-695e-4f28-8049-421f7d8e99b6": { - "asset": 1750920400251, - "meta": 1750920537115, + "asset": 1749537069914, + "meta": 1749537221099, "relativePath": "Script\\prop\\Adhesive.ts" }, "92dfa35c-14f5-48b7-8f57-583c7a23d434": { -<<<<<<< HEAD "asset": 1751253635838, "meta": 1751253635849, -======= - "asset": 1750920400635, - "meta": 1750920538323, ->>>>>>> 0a31a7a5abc2c505bf743aa596e1c765a0405152 "relativePath": "resources\\prefab\\block\\block0.prefab" }, "a57bdbd8-3153-459e-b71c-9dc08d255d09": { - "asset": 1750920400619, - "meta": 1750920537735, + "asset": 1747987602221, + "meta": 1749543933648, "relativePath": "resources\\Window_Prop\\daoju9.png" }, "6c12637c-2bb7-4e7f-881b-96809e32c6cb": { - "asset": 1750920400618, - "meta": 1750920537704, + "asset": 1749543513675, + "meta": 1749543933658, "relativePath": "resources\\Window_Prop\\daoju8.png" }, "454ad829-851a-40ea-8ab9-941e828357ca": { - "asset": 1750920400222, - "meta": 1750920535490, + "asset": 1749544806827, + "meta": 1749544834281, "relativePath": "Script\\Load.ts" }, "0d272a57-5428-450e-a8b9-1574c3d89951": { - "asset": 1750920400227, - "meta": 1750920537333, + "asset": 1749718336723, + "meta": 1749720601981, "relativePath": "Script\\Sdk\\MiniGameManager.ts" }, "38201fb6-580d-498d-818a-9b513cd981ea": { - "asset": 1750920400473, - "meta": 1750920536421, + "asset": 1749726700055, + "meta": 1749726721742, "relativePath": "resources\\Json\\level149.json" }, - "6ee6ccc9-e1e5-4d6f-815e-8aaa6ce5221a": { - "asset": 1750933271781, - "meta": 1750987168162, - "relativePath": "Script\\btnControl.ts" - }, "b3fc0972-de1d-4a54-a194-62f91a766878": { - "asset": 1750920400320, - "meta": 1750920538311, + "asset": 1749798858423, + "meta": 1749798860525, "relativePath": "UI\\UI\\btn_yellow.png" }, "8a5504e1-4ecb-4d59-b9ec-5351a09d7442": { - "asset": 1750920400319, - "meta": 1750920538323, + "asset": 1749798858307, + "meta": 1749798860527, "relativePath": "UI\\UI\\btn_blue.png" }, "46fd7fa0-2fd8-4c2d-96ef-4df704c27b9b": { - "asset": 1750920400341, - "meta": 1750920538398, + "asset": 1749798858124, + "meta": 1749799000111, "relativePath": "UI\\UI\\tanchuang1.png" }, "f0797bd4-cc39-44cf-84d7-c7ce8ae1c9e6": { - "asset": 1750920400342, - "meta": 1750920538433, + "asset": 1749798858194, + "meta": 1749799072039, "relativePath": "UI\\UI\\tanchuang2.png" }, "fa9a438e-1f24-47fe-bbcd-b75abcff2ea8": { - "asset": 1750920400419, - "meta": 1750920541184, + "asset": 1749799335535, + "meta": 1749799360542, "relativePath": "res\\font\\font.plist" }, - "f8d067a0-98d0-4a97-8159-506946262d4b": { - "asset": 1750920400420, - "meta": 1750920536207, - "relativePath": "res\\font\\font.png" - }, "4b15a631-612d-4c2a-8507-96df5812ec08": { - "asset": 1750920400334, - "meta": 1750920538376, + "asset": 1749807157281, + "meta": 1749809683377, "relativePath": "UI\\UI\\result_btn1.png" }, "ba2b6483-46df-41a9-b5f8-76ad05164bf3": { - "asset": 1750920400336, - "meta": 1750920538418, + "asset": 1749807157095, + "meta": 1749809683378, "relativePath": "UI\\UI\\result_btn3.png" }, "62e825ca-bd6a-4e05-8b08-cba467c91243": { - "asset": 1750920400335, - "meta": 1750920538392, + "asset": 1749807156752, + "meta": 1749809683379, "relativePath": "UI\\UI\\result_btn2.png" }, - "eb639914-71d8-4def-a989-c4469533754d": { - "asset": 1750920400333, - "meta": 1750920540704, - "relativePath": "UI\\UI\\publicUI.png" - }, "d2adfa00-68ea-4d63-97a0-44fca153a2d7": { - "asset": 1750920400328, - "meta": 1750920542955, + "asset": 1749809059537, + "meta": 1749809094033, "relativePath": "UI\\UI\\publicUI.plist" }, - "4eaf518b-35ec-4262-928d-4d497c3f2830": { -<<<<<<< HEAD - "asset": 1751254209243, - "meta": 1751254209259, -======= - "asset": 1750992706714, - "meta": 1750992706723, ->>>>>>> 0a31a7a5abc2c505bf743aa596e1c765a0405152 - "relativePath": "Scene\\GameScene.fire" - }, "c58de376-bb53-4664-bf27-270be7bb53d1": { - "asset": 1750920400219, - "meta": 1750920535195, + "asset": 1750042622364, + "meta": 1750042623994, "relativePath": "Script\\Block.ts" }, "aabd80cb-b51f-44d9-b9db-0bd736acd045": { - "asset": 1750920400439, - "meta": 1750920536308, + "asset": 1750143645587, + "meta": 1750143648746, "relativePath": "resources\\Json\\level1.json" }, "71910b3b-2542-4863-8a81-cec3f15bbb41": { - "asset": 1750920400318, - "meta": 1750920538280, + "asset": 1750145338230, + "meta": 1750145376877, "relativePath": "TextureBlock\\block\\star.png" }, "7c245d33-7161-42a1-a713-d944b39d83fa": { - "asset": 1750920400316, - "meta": 1750920542820, + "asset": 1750145321392, + "meta": 1750145376899, "relativePath": "TextureBlock\\block\\star.plist" }, -<<<<<<< HEAD -======= - "31479c6e-5626-4598-97ab-f94303e9efe7": { - "asset": 1750920400427, - "meta": 1750920541363, - "relativePath": "res\\texture_Block\\down.plist" - }, - "418b4767-01bf-4ac2-823b-9880f2a79215": { - "asset": 1750920400427, - "meta": 1750920536219, - "relativePath": "res\\texture_Block\\door.png" - }, ->>>>>>> 0a31a7a5abc2c505bf743aa596e1c765a0405152 - "66281f32-0047-4af8-8237-90c93fc4b0e8": { - "asset": 1751253214827, - "meta": 1751253214833, - "relativePath": "Scene\\HomeScene.fire" - }, "76cfa326-3d21-4ca5-8ecf-d35cf4bd383b": { - "asset": 1750920400480, - "meta": 1750920536435, + "asset": 1750230727856, + "meta": 1750231085016, "relativePath": "resources\\Json\\level2.json" }, "2b67b348-a49b-45af-b4d2-690221b03a93": { - "asset": 1750920400489, - "meta": 1750920536450, + "asset": 1750233736819, + "meta": 1750233737936, "relativePath": "resources\\Json\\level3.json" }, "998a24bd-ffa0-4f96-bc39-a9789f42bd9b": { - "asset": 1750920400406, - "meta": 1750920536425, + "asset": 1750233817725, + "meta": 1750233918742, "relativePath": "music\\zhuan2.mp3" }, "7fe14751-1506-4a48-a280-a049f84bb394": { - "asset": 1750920400224, - "meta": 1750920535723, + "asset": 1750234866736, + "meta": 1750234867380, "relativePath": "Script\\NewMode.ts" }, "a5518b0f-7ed3-46f0-aa78-93f02f4579cc": { - "asset": 1750920400386, - "meta": 1750920536417, + "asset": 1750239223593, + "meta": 1750239320969, "relativePath": "music\\anniu_little.mp3" }, "7362cac7-12b5-4704-af6d-5b110c5e9fcf": { - "asset": 1750920400385, - "meta": 1750920536420, + "asset": 1750239222626, + "meta": 1750239320971, "relativePath": "music\\anniu_Big.mp3" }, "e4d2f16e-7663-4ee5-a479-06ae0eae91d5": { - "asset": 1750920400406, - "meta": 1750920536425, + "asset": 1750239221409, + "meta": 1750239320971, "relativePath": "music\\zhuan1.mp3" }, "f3f0dece-8b63-488c-92b9-3a0a93554ed0": { - "asset": 1750920400254, - "meta": 1750920535855, + "asset": 1749196521000, + "meta": 1750242263606, "relativePath": "Script\\tdanalytics.mg.cocoscreator.min.js" }, "aca4abad-df73-42bc-80b4-ca0dc9998d21": { - "asset": 1750920400225, - "meta": 1750920535754, + "asset": 1750412679731, + "meta": 1750412716128, "relativePath": "Script\\Pause.ts" }, "58403fe7-d7a2-426b-9b19-84d3236731a8": { - "asset": 1750920400243, - "meta": 1750920539985, + "asset": 1750412803083, + "meta": 1750412804914, "relativePath": "Script\\module\\Music\\AudioManager.ts" }, "c5692be7-8703-45e4-9f67-23b54d290356": { - "asset": 1750920400240, - "meta": 1750920539121, + "asset": 1750752541531, + "meta": 1750753878689, "relativePath": "Script\\module\\Config\\GameConfig.ts" }, "a790b6e5-b51f-4d1a-aa85-2832e8fcfc9f": { - "asset": 1750920400463, - "meta": 1750920536399, + "asset": 1750755345320, + "meta": 1750755469968, "relativePath": "resources\\Json\\level137.json" }, "f41d602c-b8df-4067-a88a-16c4ba168356": { - "asset": 1750920400454, - "meta": 1750920536375, + "asset": 1750389088000, + "meta": 1750820043751, "relativePath": "resources\\Json\\level120.json" }, "96acc152-cb32-45fb-806d-dbda87fd435b": { - "asset": 1750920400455, - "meta": 1750920536384, + "asset": 1750395879000, + "meta": 1750820043754, "relativePath": "resources\\Json\\level122.json" }, "8b4fe7f9-ceba-43bb-bb53-6ae24b9d9244": { - "asset": 1750920400461, - "meta": 1750920536401, + "asset": 1750403988000, + "meta": 1750820043756, "relativePath": "resources\\Json\\level132.json" }, "1f01b045-4882-4eae-9c4d-37103df09d36": { - "asset": 1750920400470, - "meta": 1750920536412, + "asset": 1750407621000, + "meta": 1750820043759, "relativePath": "resources\\Json\\level146.json" }, "cfddd1e3-dca7-4b95-9892-46a6948315ca": { - "asset": 1750920400460, - "meta": 1750920536397, + "asset": 1750402528000, + "meta": 1750820043765, "relativePath": "resources\\Json\\level131.json" }, "301e6610-6a5d-46db-a4d0-3b707a3e6bb9": { - "asset": 1750920400456, - "meta": 1750920536383, + "asset": 1750397654000, + "meta": 1750820043769, "relativePath": "resources\\Json\\level123.json" }, "2af3d18b-c59a-483c-ac3a-ec6056ba053e": { - "asset": 1750920400471, - "meta": 1750920536418, + "asset": 1750416138000, + "meta": 1750820043771, "relativePath": "resources\\Json\\level147.json" }, "7d884300-fa5a-466c-8a20-6acdbe42ceda": { - "asset": 1750920400472, - "meta": 1750920536419, + "asset": 1750818540000, + "meta": 1750820043775, "relativePath": "resources\\Json\\level148.json" }, "4ae3e51b-8215-4c9f-b09c-e1632c85bd7d": { - "asset": 1750920400455, - "meta": 1750920536381, + "asset": 1750390723000, + "meta": 1750820043782, "relativePath": "resources\\Json\\level121.json" }, "1e896a42-b9b2-4865-afaa-6aabd7f7a627": { - "asset": 1750920400458, - "meta": 1750920536388, + "asset": 1750400534000, + "meta": 1750820043789, "relativePath": "resources\\Json\\level127.json" }, -<<<<<<< HEAD - "1dc936f8-7de8-4eae-91a0-4e48a1047e20": { - "asset": 1750848051026, - "meta": 1750848888061, - "relativePath": "Script\\JiaZai.ts" - }, "c1af99dd-ee03-40f7-9609-d3887d0dd357": { "asset": 1750848799605, "meta": 1750848800986, "relativePath": "Script\\Sdk\\MiniGameSdk.ts" }, - "df248952-2e59-4e66-9087-c06a90e587b7": { - "asset": 1750920932621, - "meta": 1750920933587, - "relativePath": "Script\\GameManager.ts" - }, "87a449b9-7ffa-4f00-a22b-b3202b4abfd5": { "asset": 1751253182979, "meta": 1751253295959, @@ -3951,390 +3239,434 @@ "meta": 1751254030790, "relativePath": "Script\\module\\Tool\\GameTool.ts" }, - "2234ab2c-a7b4-48be-90e0-ae7aa58e9d91": { - "asset": 1751263945555, - "meta": 1751264007407, - "relativePath": "Script\\Map.ts" + "84dfdbbd-ae68-4dec-b5e2-aa1e4d28c38f": { + "asset": 1745474175661, + "meta": 1751265193806, + "relativePath": "prefab\\alert" }, - "809984f5-0183-4d45-9751-c6c56f5d1eb9": { - "asset": 1751263859517, - "meta": 1751264007473, - "relativePath": "Script\\SceneManager.ts" -======= - "c1af99dd-ee03-40f7-9609-d3887d0dd357": { - "asset": 1750920400228, - "meta": 1750920537650, - "relativePath": "Script\\Sdk\\MiniGameSdk.ts" + "99be851f-9f4f-4fdd-bd43-3e3f86dd78d2": { + "asset": 1741855414503, + "meta": 1751265193807, + "relativePath": "res\\music" }, - "9df3aaf8-59bc-4eff-aa56-554ab3d4d2cb": { - "asset": 1750923547582, - "meta": 1750923547584, - "relativePath": "TextureBlock\\block\\AutoAtlas.pac" + "c8878cfa-dda2-45ac-9204-7b3c4da0d5c4": { + "asset": 1748420676403, + "meta": 1751265193808, + "relativePath": "resources\\prefab\\prop" }, - "df248952-2e59-4e66-9087-c06a90e587b7": { - "asset": 1750925358418, - "meta": 1750925641846, - "relativePath": "Script\\GameManager.ts" + "90c37607-5145-4fb1-8d26-94d9a89baeee": { + "asset": 1751264990548, + "meta": 1751265193835, + "relativePath": "Script\\Barrier.ts" }, - "28d9b746-520c-4ddc-95f8-401692d28ffc": { - "asset": 1750928978747, - "meta": 1750933783901, - "relativePath": "shop" - }, - "e4b11ec6-5712-4dba-ba33-eb23129e396a": { - "asset": 1750993864940, - "meta": 1751249638014, - "relativePath": "shop\\img" - }, - "ac030bb2-163b-4609-8553-0d6e7e662d03": { - "asset": 1750994492622, - "meta": 1751249638015, - "relativePath": "shop\\prefab" - }, - "c35d8611-3d61-4523-8ec7-3e961e2c46ab": { - "asset": 1750932889591, - "meta": 1750987168164, - "relativePath": "shop\\script" - }, - "a81d74d9-943b-4d0e-aad5-2999276d3447": { - "asset": 1751253177880, - "meta": 1751253177884, - "relativePath": "shop\\prefab\\item.prefab" - }, - "b01ef5c5-2755-455d-acb4-ba3818f5e331": { - "asset": 1751253125696, - "meta": 1751253125703, - "relativePath": "shop\\prefab\\shop.prefab" - }, - "4466b8d6-b468-4cb5-bc57-7a2bd3df12e4": { - "asset": 1750994492617, - "meta": 1750994492622, - "relativePath": "shop\\prefab\\Tops.prefab" + "6ee6ccc9-e1e5-4d6f-815e-8aaa6ce5221a": { + "asset": 1751264990552, + "meta": 1751265193843, + "relativePath": "Script\\btnControl.ts" }, "1dc936f8-7de8-4eae-91a0-4e48a1047e20": { - "asset": 1750997218893, - "meta": 1750997246301, + "asset": 1751264990549, + "meta": 1751265194057, "relativePath": "Script\\JiaZai.ts" }, "809984f5-0183-4d45-9751-c6c56f5d1eb9": { - "asset": 1750997225859, - "meta": 1750997246378, + "asset": 1751264990552, + "meta": 1751265194338, "relativePath": "Script\\SceneManager.ts" }, - "48bfe66e-6056-44da-a9a0-c5b5b6222801": { - "asset": 1751009016793, - "meta": 1751009018212, - "relativePath": "shop\\script\\shop.ts" + "28d9b746-520c-4ddc-95f8-401692d28ffc": { + "asset": 1751264990615, + "meta": 1751265194341, + "relativePath": "shop" }, - "87a449b9-7ffa-4f00-a22b-b3202b4abfd5": { - "asset": 1751011463220, - "meta": 1751011525151, - "relativePath": "Script\\Wall.ts" + "e4b11ec6-5712-4dba-ba33-eb23129e396a": { + "asset": 1751264990610, + "meta": 1751265194342, + "relativePath": "shop\\img" }, - "e0e349ff-f854-45e4-9764-50b9babdd4f4": { - "asset": 1751011954456, - "meta": 1751012012245, - "relativePath": "Script\\position.ts" + "ac030bb2-163b-4609-8553-0d6e7e662d03": { + "asset": 1751264990615, + "meta": 1751265194344, + "relativePath": "shop\\prefab" }, - "90c37607-5145-4fb1-8d26-94d9a89baeee": { - "asset": 1751012894344, - "meta": 1751012895628, - "relativePath": "Script\\Barrier.ts" + "c35d8611-3d61-4523-8ec7-3e961e2c46ab": { + "asset": 1751264990616, + "meta": 1751265194346, + "relativePath": "shop\\script" }, - "de906884-fc75-47a4-8e95-3bb20cbca688": { - "asset": 1751012865566, - "meta": 1751012895637, - "relativePath": "shop\\script\\item.ts" + "1c619601-a6ae-4c45-be2c-20b0d95e950f": { + "asset": 1751264990561, + "meta": 1751265194366, + "relativePath": "prefab\\map\\wall.prefab" }, - "2234ab2c-a7b4-48be-90e0-ae7aa58e9d91": { - "asset": 1751013628239, - "meta": 1751013676535, - "relativePath": "Script\\Map.ts" + "66281f32-0047-4af8-8237-90c93fc4b0e8": { + "asset": 1751268559741, + "meta": 1751268559747, + "relativePath": "Scene\\HomeScene.fire" }, - "c31c74ba-a2b0-4b6f-ac21-5c87b44aea4a": { - "asset": 1751016612169, - "meta": 1751016612171, - "relativePath": "UI\\UI\\set" - }, - "fcaa412a-64a2-4cdc-937f-1f4fbc527dfc": { - "asset": 1750931972000, - "meta": 1751016612234, - "relativePath": "UI\\UI\\set\\tiaodik.png" - }, - "f5f584ca-c27f-40a2-96e6-6bc312eb3c21": { - "asset": 1750932144000, - "meta": 1751016612236, - "relativePath": "UI\\UI\\set\\闊充箰01.png" - }, - "964de756-e8ea-44b4-9371-ea2af234714a": { - "asset": 1750932156000, - "meta": 1751016612241, - "relativePath": "UI\\UI\\set\\闊充箰00.png" - }, - "dfa1190c-5129-4775-b495-d2aca6a3a5bf": { - "asset": 1750932132000, - "meta": 1751016612242, - "relativePath": "UI\\UI\\set\\闊虫晥01.png" - }, - "306b721d-bd6d-4dc2-9c7e-0d42021be3b3": { - "asset": 1750932108000, - "meta": 1751016612243, - "relativePath": "UI\\UI\\set\\闇囧姩00.png" - }, - "f8ebdf98-79f3-41fd-8663-8abd3225fa66": { - "asset": 1750932098000, - "meta": 1751016612245, - "relativePath": "UI\\UI\\set\\闇囧姩01.png" - }, - "ea182daa-7a43-48b5-9a08-f20f71980deb": { - "asset": 1750932120000, - "meta": 1751016612251, - "relativePath": "UI\\UI\\set\\闊虫晥00.png" + "4eaf518b-35ec-4262-928d-4d497c3f2830": { + "asset": 1751264990545, + "meta": 1751265194383, + "relativePath": "Scene\\GameScene.fire" }, "50c01dd8-431f-43cc-820e-abb2a859d031": { - "asset": 1751019455152, - "meta": 1751019455156, + "asset": 1751264990560, + "meta": 1751265194385, "relativePath": "animation\\set.anim" }, - "43bfc27a-ff6e-45b3-87c7-504d0f781397": { - "asset": 1751251435227, - "meta": 1751252071537, - "relativePath": "Script\\module\\Tool\\GameTool.ts" + "f8d067a0-98d0-4a97-8159-506946262d4b": { + "asset": 1749799346569, + "meta": 1751265194434, + "relativePath": "res\\font\\font.png" }, - "0734a70a-118d-4d9d-9a9f-9a61c11641d2": { - "asset": 1750302976000, - "meta": 1751252737758, - "relativePath": "shop\\img\\coins_sz0.png" - }, - "58481a2a-4229-43d2-bd30-69e4f09cfe4b": { - "asset": 1750302976000, - "meta": 1751252737761, - "relativePath": "shop\\img\\coins_sz1.png" - }, - "efc62fa5-f8bc-4661-8eb9-f6e2cb5b4ad7": { - "asset": 1750302976000, - "meta": 1751252737764, - "relativePath": "shop\\img\\coins_sz13.png" - }, - "852ff94f-f07c-447b-93fa-a9adcb1a069b": { - "asset": 1750302976000, - "meta": 1751252737767, - "relativePath": "shop\\img\\coins_sz11.png" - }, - "e9077dbb-d18e-45d5-aae4-9f46b103ed05": { - "asset": 1750302976000, - "meta": 1751252737781, - "relativePath": "shop\\img\\coins_sz3.png" - }, - "1217c0be-cc7e-41be-b105-7c26baf444ff": { - "asset": 1750302976000, - "meta": 1751252737784, - "relativePath": "shop\\img\\coins_sz2.png" - }, - "08a0b3cf-1219-46ba-8171-206dfe24151b": { - "asset": 1750302976000, - "meta": 1751252737786, - "relativePath": "shop\\img\\coins_sz6.png" - }, - "774d1aad-d081-44e1-9d68-9a3fd767aba3": { - "asset": 1750302976000, - "meta": 1751252737789, - "relativePath": "shop\\img\\coins_sz5.png" - }, - "74db3129-e7a8-4b0b-baf9-e271bdfab9ba": { - "asset": 1750302976000, - "meta": 1751252737802, - "relativePath": "shop\\img\\coins_sz8.png" - }, - "6c076da3-bb21-4e43-9e7e-d88b44bd01f4": { - "asset": 1750302976000, - "meta": 1751252737804, - "relativePath": "shop\\img\\coins_sz10.png" - }, - "47d4dd52-9152-4724-ab77-4e9d15e14c2e": { - "asset": 1750302976000, - "meta": 1751252737808, - "relativePath": "shop\\img\\coins_sz7.png" - }, - "3b8e0a01-7634-402d-a8d2-349fbbc809f6": { - "asset": 1750302976000, - "meta": 1751252737810, - "relativePath": "shop\\img\\coins_sz9.png" - }, - "12c63ed2-bf61-4b5b-8d37-781d02f4386c": { - "asset": 1750302744000, - "meta": 1751252737818, - "relativePath": "shop\\img\\cost_0.png" - }, - "6112faa1-3935-48de-a5a8-3369a63cead8": { - "asset": 1750302976000, - "meta": 1751252737822, - "relativePath": "shop\\img\\coins_sz12.png" - }, - "76467e5a-9a87-4d17-afae-777d7ff638a1": { - "asset": 1750302976000, - "meta": 1751252737823, - "relativePath": "shop\\img\\coins_sz4.png" - }, - "b6cc00c9-4bc9-48a7-b075-af04e0f8cfe8": { - "asset": 1750302744000, - "meta": 1751252737855, - "relativePath": "shop\\img\\cost_1.png" - }, - "1019c0e2-cc2c-4dde-93e4-86b676bc69cd": { - "asset": 1750302744000, - "meta": 1751252737858, - "relativePath": "shop\\img\\cost_11.png" - }, - "76a01e2d-248a-494c-a56c-c14e4f26a3b0": { - "asset": 1750302744000, - "meta": 1751252737860, - "relativePath": "shop\\img\\cost_10.png" - }, - "227db116-a70e-4157-b553-bfe8d6d18a6a": { - "asset": 1750302744000, - "meta": 1751252737881, - "relativePath": "shop\\img\\cost_2.png" - }, - "f1cd9c7b-a0b7-41fc-94c2-db60d6a51281": { - "asset": 1750302744000, - "meta": 1751252737887, - "relativePath": "shop\\img\\cost_4.png" - }, - "db683201-2fb0-4753-bf65-3ae7ef314627": { - "asset": 1750302744000, - "meta": 1751252737894, - "relativePath": "shop\\img\\cost_3.png" - }, - "d8bf615a-752c-47ba-84e3-8ef47d9c4de1": { - "asset": 1750302214000, - "meta": 1751252737896, - "relativePath": "shop\\img\\鍟嗗煄.jpg" - }, - "9ffc3971-f097-4de5-b88a-2e5e6d78104a": { - "asset": 1750302744000, - "meta": 1751252737902, - "relativePath": "shop\\img\\cost_5.png" - }, - "f0c1b219-0608-4a6c-aef0-59fc9db4955e": { - "asset": 1750302744000, - "meta": 1751252737907, - "relativePath": "shop\\img\\cost_7.png" - }, - "c8b66182-996c-4377-8d0a-024d8b17e581": { - "asset": 1750302744000, - "meta": 1751252737911, - "relativePath": "shop\\img\\cost_6.png" - }, - "c6022e1d-b8c5-498b-a3c1-740387f6d647": { - "asset": 1750302744000, - "meta": 1751252737915, - "relativePath": "shop\\img\\cost_8.png" - }, - "6b7f9211-7903-45b4-b2e2-d388ba17e935": { - "asset": 1750302744000, - "meta": 1751252737918, - "relativePath": "shop\\img\\cost_yuan.png" - }, - "621ae85f-f4e4-48a1-9e97-1cdfd769677d": { - "asset": 1750302744000, - "meta": 1751252737925, - "relativePath": "shop\\img\\cost_9.png" - }, - "06097023-184a-44ab-be97-104b5b23de45": { - "asset": 1750302244000, - "meta": 1751252737947, - "relativePath": "shop\\img\\txt2.png" - }, - "1e3dbd9c-6c1c-420b-9320-e27f3195e6d0": { - "asset": 1750302562000, - "meta": 1751252737954, - "relativePath": "shop\\img\\coins_di.png" + "49148440-dbc5-4936-b168-ac7707f80098": { + "asset": 1751264990567, + "meta": 1751265194517, + "relativePath": "shop\\img\\coins3.png" }, "ea09c71c-5b5d-4b24-9b62-d93b291d93c2": { - "asset": 1750302280000, - "meta": 1751252737956, + "asset": 1751264990564, + "meta": 1751265194519, "relativePath": "shop\\img\\btn1.png" }, "5f5f473c-d88a-4bff-bb6b-2a5f6b2208e8": { - "asset": 1750302354000, - "meta": 1751252737959, + "asset": 1751264990565, + "meta": 1751265194522, "relativePath": "shop\\img\\coins2.png" }, - "49148440-dbc5-4936-b168-ac7707f80098": { - "asset": 1750302354000, - "meta": 1751252737974, - "relativePath": "shop\\img\\coins3.png" - }, "1c56a793-7cd3-412f-a040-8a754a2f4d41": { - "asset": 1750302354000, - "meta": 1751252737976, + "asset": 1751264990565, + "meta": 1751265194525, "relativePath": "shop\\img\\coins1.png" }, - "14a00731-8325-4675-8abd-da6b581a7266": { - "asset": 1750302354000, - "meta": 1751252737979, - "relativePath": "shop\\img\\coins4.png" - }, - "30543705-d10e-4279-a2fb-d2225b570bb4": { - "asset": 1750302354000, - "meta": 1751252737983, - "relativePath": "shop\\img\\coins6.png" - }, "270ef871-ac9d-4ba7-91d1-7d7624c3aed9": { - "asset": 1750302354000, - "meta": 1751252737998, + "asset": 1751264990569, + "meta": 1751265194529, "relativePath": "shop\\img\\coins5.png" }, - "a7020897-1d42-416a-ab6f-b99429684626": { - "asset": 1750303042000, - "meta": 1751252738000, - "relativePath": "shop\\img\\tx.png" + "30543705-d10e-4279-a2fb-d2225b570bb4": { + "asset": 1751264990570, + "meta": 1751265194533, + "relativePath": "shop\\img\\coins6.png" + }, + "e401e735-bc45-4c02-ab15-ac8f4afbed44": { + "asset": 1748249818200, + "meta": 1751265194594, + "relativePath": "TextureBlock\\block\\block2.png" + }, + "eb639914-71d8-4def-a989-c4469533754d": { + "asset": 1749809077518, + "meta": 1751265194605, + "relativePath": "UI\\UI\\publicUI.png" + }, + "14a00731-8325-4675-8abd-da6b581a7266": { + "asset": 1751264990569, + "meta": 1751265194540, + "relativePath": "shop\\img\\coins4.png" }, "96c15f9c-935e-4e9d-b5c0-f95e5d429f5c": { - "asset": 1750302354000, - "meta": 1751252738002, + "asset": 1751264990571, + "meta": 1751265194556, "relativePath": "shop\\img\\coins7.png" }, "4dbc349a-8dbd-4753-8e82-378b916ea36b": { - "asset": 1750302354000, - "meta": 1751252738003, + "asset": 1751264990572, + "meta": 1751265194558, "relativePath": "shop\\img\\coins8.png" }, - "d824166e-71a9-461c-bd7d-2be020ff85b7": { - "asset": 1750302244000, - "meta": 1751252738019, - "relativePath": "shop\\img\\txt1.png" + "58481a2a-4229-43d2-bd30-69e4f09cfe4b": { + "asset": 1751264990575, + "meta": 1751265194576, + "relativePath": "shop\\img\\coins_sz1.png" }, - "58c32817-0174-4337-a981-3e35167eb35c": { - "asset": 1750303030000, - "meta": 1751252738046, - "relativePath": "shop\\img\\shop_1.png" + "6c076da3-bb21-4e43-9e7e-d88b44bd01f4": { + "asset": 1751264990576, + "meta": 1751265194578, + "relativePath": "shop\\img\\coins_sz10.png" }, - "abd65429-c263-4d3a-84f3-1c26b1433094": { - "asset": 1750303022000, - "meta": 1751252738048, - "relativePath": "shop\\img\\shop_2.jpg" + "0734a70a-118d-4d9d-9a9f-9a61c11641d2": { + "asset": 1751264990575, + "meta": 1751265194582, + "relativePath": "shop\\img\\coins_sz0.png" + }, + "1e3dbd9c-6c1c-420b-9320-e27f3195e6d0": { + "asset": 1751264990573, + "meta": 1751265194586, + "relativePath": "shop\\img\\coins_di.png" + }, + "852ff94f-f07c-447b-93fa-a9adcb1a069b": { + "asset": 1751264990577, + "meta": 1751265194640, + "relativePath": "shop\\img\\coins_sz11.png" + }, + "6112faa1-3935-48de-a5a8-3369a63cead8": { + "asset": 1751264990577, + "meta": 1751265194654, + "relativePath": "shop\\img\\coins_sz12.png" + }, + "76467e5a-9a87-4d17-afae-777d7ff638a1": { + "asset": 1751264990579, + "meta": 1751265194660, + "relativePath": "shop\\img\\coins_sz4.png" + }, + "1217c0be-cc7e-41be-b105-7c26baf444ff": { + "asset": 1751264990578, + "meta": 1751265194663, + "relativePath": "shop\\img\\coins_sz2.png" + }, + "efc62fa5-f8bc-4661-8eb9-f6e2cb5b4ad7": { + "asset": 1751264990578, + "meta": 1751265194679, + "relativePath": "shop\\img\\coins_sz13.png" + }, + "e9077dbb-d18e-45d5-aae4-9f46b103ed05": { + "asset": 1751264990579, + "meta": 1751265194683, + "relativePath": "shop\\img\\coins_sz3.png" + }, + "774d1aad-d081-44e1-9d68-9a3fd767aba3": { + "asset": 1751264990580, + "meta": 1751265194686, + "relativePath": "shop\\img\\coins_sz5.png" + }, + "08a0b3cf-1219-46ba-8171-206dfe24151b": { + "asset": 1751264990580, + "meta": 1751265194695, + "relativePath": "shop\\img\\coins_sz6.png" + }, + "74db3129-e7a8-4b0b-baf9-e271bdfab9ba": { + "asset": 1751264990581, + "meta": 1751265194706, + "relativePath": "shop\\img\\coins_sz8.png" + }, + "47d4dd52-9152-4724-ab77-4e9d15e14c2e": { + "asset": 1751264990581, + "meta": 1751265194708, + "relativePath": "shop\\img\\coins_sz7.png" + }, + "3b8e0a01-7634-402d-a8d2-349fbbc809f6": { + "asset": 1751264990583, + "meta": 1751265194718, + "relativePath": "shop\\img\\coins_sz9.png" }, "406e8a3f-3b78-4541-90bb-ca79eefc1cb2": { - "asset": 1751252868237, - "meta": 1751252893403, + "asset": 1751264990596, + "meta": 1751265195078, "relativePath": "shop\\img\\texture_atlas-0.plist" }, - "6a34fed9-0090-400c-8845-15234002c44a": { - "asset": 1751252868233, - "meta": 1751252893384, - "relativePath": "shop\\img\\texture_atlas-0.png" - }, - "6971355d-0542-42f6-96ec-4244dbcc5897": { - "asset": 1751252868243, - "meta": 1751252893386, - "relativePath": "shop\\img\\texture_atlas-1.png" + "12c63ed2-bf61-4b5b-8d37-781d02f4386c": { + "asset": 1751264990584, + "meta": 1751265194727, + "relativePath": "shop\\img\\cost_0.png" }, "88f4116d-72c2-46cc-9f06-d164a85a9275": { - "asset": 1751252868247, - "meta": 1751252893406, + "asset": 1751264990600, + "meta": 1751265195082, "relativePath": "shop\\img\\texture_atlas-1.plist" ->>>>>>> 0a31a7a5abc2c505bf743aa596e1c765a0405152 + }, + "76a01e2d-248a-494c-a56c-c14e4f26a3b0": { + "asset": 1751264990585, + "meta": 1751265194736, + "relativePath": "shop\\img\\cost_10.png" + }, + "de906884-fc75-47a4-8e95-3bb20cbca688": { + "asset": 1751264990615, + "meta": 1751265194832, + "relativePath": "shop\\script\\item.ts" + }, + "48bfe66e-6056-44da-a9a0-c5b5b6222801": { + "asset": 1751264990616, + "meta": 1751265194853, + "relativePath": "shop\\script\\shop.ts" + }, + "b6cc00c9-4bc9-48a7-b075-af04e0f8cfe8": { + "asset": 1751264990585, + "meta": 1751265194742, + "relativePath": "shop\\img\\cost_1.png" + }, + "1019c0e2-cc2c-4dde-93e4-86b676bc69cd": { + "asset": 1751264990586, + "meta": 1751265194746, + "relativePath": "shop\\img\\cost_11.png" + }, + "9df3aaf8-59bc-4eff-aa56-554ab3d4d2cb": { + "asset": 1751264990552, + "meta": 1751265194859, + "relativePath": "TextureBlock\\block\\AutoAtlas.pac" + }, + "c31c74ba-a2b0-4b6f-ac21-5c87b44aea4a": { + "asset": 1751264990560, + "meta": 1751265194860, + "relativePath": "UI\\UI\\set" + }, + "227db116-a70e-4157-b553-bfe8d6d18a6a": { + "asset": 1751264990587, + "meta": 1751265194758, + "relativePath": "shop\\img\\cost_2.png" + }, + "db683201-2fb0-4753-bf65-3ae7ef314627": { + "asset": 1751264990587, + "meta": 1751265194790, + "relativePath": "shop\\img\\cost_3.png" + }, + "c8b66182-996c-4377-8d0a-024d8b17e581": { + "asset": 1751264990590, + "meta": 1751265194803, + "relativePath": "shop\\img\\cost_6.png" + }, + "b01ef5c5-2755-455d-acb4-ba3818f5e331": { + "asset": 1751267207256, + "meta": 1751267207264, + "relativePath": "shop\\prefab\\shop.prefab" + }, + "a81d74d9-943b-4d0e-aad5-2999276d3447": { + "asset": 1751264990613, + "meta": 1751265194892, + "relativePath": "shop\\prefab\\item.prefab" + }, + "f1cd9c7b-a0b7-41fc-94c2-db60d6a51281": { + "asset": 1751264990588, + "meta": 1751265194807, + "relativePath": "shop\\img\\cost_4.png" + }, + "9ffc3971-f097-4de5-b88a-2e5e6d78104a": { + "asset": 1751264990588, + "meta": 1751265194817, + "relativePath": "shop\\img\\cost_5.png" + }, + "4466b8d6-b468-4cb5-bc57-7a2bd3df12e4": { + "asset": 1751264990613, + "meta": 1751265194903, + "relativePath": "shop\\prefab\\Tops.prefab" + }, + "c6022e1d-b8c5-498b-a3c1-740387f6d647": { + "asset": 1751264990591, + "meta": 1751265194855, + "relativePath": "shop\\img\\cost_8.png" + }, + "f0c1b219-0608-4a6c-aef0-59fc9db4955e": { + "asset": 1751264990591, + "meta": 1751265194866, + "relativePath": "shop\\img\\cost_7.png" + }, + "6a34fed9-0090-400c-8845-15234002c44a": { + "asset": 1751264990599, + "meta": 1751265194943, + "relativePath": "shop\\img\\texture_atlas-0.png" + }, + "6b7f9211-7903-45b4-b2e2-d388ba17e935": { + "asset": 1751264990592, + "meta": 1751265194869, + "relativePath": "shop\\img\\cost_yuan.png" + }, + "6971355d-0542-42f6-96ec-4244dbcc5897": { + "asset": 1751264990605, + "meta": 1751265194954, + "relativePath": "shop\\img\\texture_atlas-1.png" + }, + "621ae85f-f4e4-48a1-9e97-1cdfd769677d": { + "asset": 1751264990592, + "meta": 1751265194897, + "relativePath": "shop\\img\\cost_9.png" + }, + "a7020897-1d42-416a-ab6f-b99429684626": { + "asset": 1751264990606, + "meta": 1751265194907, + "relativePath": "shop\\img\\tx.png" + }, + "06097023-184a-44ab-be97-104b5b23de45": { + "asset": 1751264990607, + "meta": 1751265194916, + "relativePath": "shop\\img\\txt2.png" + }, + "d824166e-71a9-461c-bd7d-2be020ff85b7": { + "asset": 1751264990606, + "meta": 1751265194918, + "relativePath": "shop\\img\\txt1.png" + }, + "abd65429-c263-4d3a-84f3-1c26b1433094": { + "asset": 1751264990596, + "meta": 1751265194936, + "relativePath": "shop\\img\\shop_2.jpg" + }, + "306b721d-bd6d-4dc2-9c7e-0d42021be3b3": { + "asset": 1751264990556, + "meta": 1751265194971, + "relativePath": "UI\\UI\\set\\闇囧姩00.png" + }, + "fcaa412a-64a2-4cdc-937f-1f4fbc527dfc": { + "asset": 1751264990554, + "meta": 1751265194974, + "relativePath": "UI\\UI\\set\\tiaodik.png" + }, + "964de756-e8ea-44b4-9371-ea2af234714a": { + "asset": 1751264990558, + "meta": 1751265194976, + "relativePath": "UI\\UI\\set\\闊充箰00.png" + }, + "58c32817-0174-4337-a981-3e35167eb35c": { + "asset": 1751264990594, + "meta": 1751265194984, + "relativePath": "shop\\img\\shop_1.png" + }, + "f8ebdf98-79f3-41fd-8663-8abd3225fa66": { + "asset": 1751264990557, + "meta": 1751265195000, + "relativePath": "UI\\UI\\set\\闇囧姩01.png" + }, + "f5f584ca-c27f-40a2-96e6-6bc312eb3c21": { + "asset": 1751264990558, + "meta": 1751265195002, + "relativePath": "UI\\UI\\set\\闊充箰01.png" + }, + "dfa1190c-5129-4775-b495-d2aca6a3a5bf": { + "asset": 1751264990560, + "meta": 1751265195004, + "relativePath": "UI\\UI\\set\\闊虫晥01.png" + }, + "ea182daa-7a43-48b5-9a08-f20f71980deb": { + "asset": 1751264990559, + "meta": 1751265195009, + "relativePath": "UI\\UI\\set\\闊虫晥00.png" + }, + "d8bf615a-752c-47ba-84e3-8ef47d9c4de1": { + "asset": 1751264990610, + "meta": 1751265195039, + "relativePath": "shop\\img\\鍟嗗煄.jpg" + }, + "2234ab2c-a7b4-48be-90e0-ae7aa58e9d91": { + "asset": 1751266150728, + "meta": 1751266292298, + "relativePath": "Script\\Map.ts" + }, + "3d019ed8-3019-436d-add0-ceeb02a5baaf": { + "asset": 1746785313569, + "meta": 1751266787337, + "relativePath": "TextureBlock\\block\\down.plist" + }, + "c660c59d-e175-4194-aaf3-33d1d03b783f": { + "asset": 1746785322424, + "meta": 1751266787293, + "relativePath": "TextureBlock\\block\\down.png" + }, + "df248952-2e59-4e66-9087-c06a90e587b7": { + "asset": 1751267446731, + "meta": 1751267447255, + "relativePath": "Script\\GameManager.ts" + }, + "2ef5a7c6-04f5-418a-85b6-bf39220cd512": { + "asset": 1751268521295, + "meta": 1751268533998, + "relativePath": "res\\texture_Block" + }, + "cc01997d-495e-480d-871e-be405a6c38b5": { + "asset": 1748243270785, + "meta": 1751268886474, + "relativePath": "res\\texture_Block\\door.plist" + }, + "418b4767-01bf-4ac2-823b-9880f2a79215": { + "asset": 1748243270783, + "meta": 1751268886406, + "relativePath": "res\\texture_Block\\door.png" } } \ No newline at end of file diff --git a/local/layout.editor.json b/local/layout.editor.json index 47a75e8..3d445cc 100644 --- a/local/layout.editor.json +++ b/local/layout.editor.json @@ -5,38 +5,21 @@ "main": true, "url": "app://editor/index.html", "windowType": "dockable", -<<<<<<< HEAD - "x": 0, - "y": 0, - "width": 1280, - "height": 672, -======= "x": -8, "y": -8, "width": 1296, "height": 688, ->>>>>>> 0a31a7a5abc2c505bf743aa596e1c765a0405152 "layout": { "type": "dock-h", "children": [ { -<<<<<<< HEAD - "width": 204.64584350585938, - "height": 556.3333740234375, - "type": "dock-v", - "children": [ - { - "width": 204.64584350585938, - "height": 226, -======= - "width": 396, + "width": 207.28125, "height": 568.5, "type": "dock-v", "children": [ { - "width": 396, - "height": 319.28125, ->>>>>>> 0a31a7a5abc2c505bf743aa596e1c765a0405152 + "width": 207.28125, + "height": 231.9479217529297, "type": "panel", "active": 0, "children": [ @@ -44,13 +27,8 @@ ] }, { -<<<<<<< HEAD - "width": 204.64584350585938, - "height": 327.3333435058594, -======= - "width": 396, - "height": 246.21875, ->>>>>>> 0a31a7a5abc2c505bf743aa596e1c765a0405152 + "width": 207.28125, + "height": 333.5520935058594, "type": "panel", "active": 0, "children": [ @@ -60,13 +38,8 @@ ] }, { -<<<<<<< HEAD - "width": 751.34375, - "height": 556.3333740234375, -======= - "width": 557, + "width": 759.3333740234375, "height": 568.5, ->>>>>>> 0a31a7a5abc2c505bf743aa596e1c765a0405152 "type": "panel", "active": 0, "children": [ @@ -74,13 +47,8 @@ ] }, { -<<<<<<< HEAD - "width": 304, - "height": 556.3333740234375, -======= - "width": 321, + "width": 307.375, "height": 568.5, ->>>>>>> 0a31a7a5abc2c505bf743aa596e1c765a0405152 "type": "panel", "active": 0, "children": [ @@ -97,48 +65,6 @@ "inspector", "cocos-services" ] - }, -<<<<<<< HEAD - "window-1751254982251": { - "main": false, - "url": "unpack://static/window.html", - "windowType": "dockable", - "x": 6, - "y": 50, - "width": 1292, - "height": 700, -======= - "window-1751252741263": { - "main": false, - "url": "unpack://static/window.html", - "windowType": "dockable", - "x": -162, - "y": 74, - "width": 1303, - "height": 708, ->>>>>>> 0a31a7a5abc2c505bf743aa596e1c765a0405152 - "layout": { - "type": "dock-v", - "children": [ - { -<<<<<<< HEAD - "width": 1278, - "height": 663.3333740234375, -======= - "width": 1287.3333740234375, - "height": 670, ->>>>>>> 0a31a7a5abc2c505bf743aa596e1c765a0405152 - "type": "panel", - "active": 0, - "children": [ - "console" - ] - } - ] - }, - "panels": [ - "console" - ] } }, "panels": { @@ -155,10 +81,10 @@ "height": 688 }, "console": { - "x": -162, - "y": 74, - "width": 1303, - "height": 708 + "x": 6, + "y": 50, + "width": 1292, + "height": 700 }, "store": { "x": -8, @@ -189,12 +115,6 @@ "y": 2, "width": 380, "height": 954 - }, - "timeline": { - "x": 175, - "y": 330, - "width": 1095, - "height": 643 } }, "panelLabelWidth": {} diff --git a/local/local.json b/local/local.json index 3ca7e77..6d839b6 100644 --- a/local/local.json +++ b/local/local.json @@ -1,87 +1,23 @@ { "last-edit": "66281f32-0047-4af8-8237-90c93fc4b0e8", "recent-items": [ - "7a90e76c-37f8-4f8c-84e9-f05b34afe481", - "9e91c351-bd17-446b-b773-3b715fe6ba48", - "4b9c5a7e-c645-48a4-9aca-5df381ce4ef5", - "2d2f792f-a40c-49bb-a189-ed176a246e49", - "c930d64e-2707-474f-b691-6220e2932ddd", - "16336f9d-bef4-4878-a6cc-67120bc544c0", - "6ca8aa89-ae6a-4d6b-969f-524ff4b14e36", - "eb7974bb-2c9f-484a-8bad-e1196001f798", - "3a6ac62c-c1ce-4353-8983-37ab472b9c1d", - "320bfb31-5041-4649-8f9d-c5f8838d4fa1", - "85eca7ef-b4e0-43a9-b0b9-a708d9f507e8", - "5c8fe57f-c739-4106-9d9e-eb76f6a513ad", - "c751973d-e0ab-43dd-99b5-b15f04c049ee", - "02f4a2cc-c45e-4e6d-b0dc-818daf6811ec", - "8f294531-a0d1-4562-b14d-4c933831b2ed", - "7575824b-0e58-4e56-80ef-36803378b11c", - "1275944a-8df1-4f2a-aea2-674a5c004bbf", - "8e849619-3331-4f9e-b222-e7129dcf7425", - "44c35fd1-cc96-436a-808c-4df4a7a00970", - "5ca792eb-c169-44d4-b937-12b717e04565", - "b4d4f412-dba0-4c73-9c3a-8ba0f0671e5e", - "17e69d83-789d-473d-88c5-c51569fa72c8", - "69eb71f8-0af6-4b5c-87ae-5b6a63ad8f90", - "2309cb6d-afe6-454f-81b7-590fcfd8671d", - "28861e49-f7d6-4f26-8a30-c47ceb586af6", - "caaa2f83-a5bb-48d0-9cfc-3c6cfea8311a", - "297b0d3f-18a2-47bd-82f4-93c633d1c49b", - "05e8f77a-3216-4135-acbc-28b00ca6d8b1", - "f18fd47a-3a2d-4ede-988d-8357fb0c2ae5", - "8c60ae4b-1ba5-4f56-a323-977cf192f629", - "c5c1d0ff-6ef5-4915-9a37-8dad0cdcde15", - "d07e12f1-5b8f-414c-a2ee-87b89adb9b7a", - "3fe60688-8e7c-4fcc-a00a-25028128cc9f", - "afa81b81-ba65-434f-9200-ce8063d644c8", - "cb94267d-6332-4a12-89fa-e9f3b9fc1fd9", - "bd49d655-b1f0-4f43-a2cc-0c04356d3564", - "a0f299a4-646f-4531-89a8-418f56f4152b", - "7cff5eda-b5f8-430d-bbd6-cbf94481672d", - "1617e8d5-0a78-4503-9e0f-6c5b5f0276ff", - "d25c56cd-5b91-4667-84d9-af0e0f47557b", - "d249e837-ed36-4afa-9b60-1360a0f7ee81", - "8ee785c4-83f8-41d0-89ab-846c2cb4decc", - "29d83020-5c48-42f4-899e-f8e1de2963f3", - "f5037fa2-99f5-4e8e-9baf-3874ab215f45", - "2435886f-bb3e-499b-b10c-501be670130a", - "9a3fd471-26c7-4910-8e23-84a783b3358f", - "59cd32c1-278f-4aba-a2b6-0e0c4f73e063", -<<<<<<< HEAD - "1c619601-a6ae-4c45-be2c-20b0d95e950f", - "e98498e1-12bf-4280-8def-6f8e543fb934", - "a496b103-90e1-421c-94c5-500167b26227", - "725f6dd5-18b0-44f9-997a-d89b23ac1fc0", - "2ad95b5e-51fe-4864-ad40-6743b8fac9d5", - "b5a00886-b32d-4185-a4a6-fd9f7a8dbe90", -======= ->>>>>>> 0a31a7a5abc2c505bf743aa596e1c765a0405152 - "ec5b9995-a54c-47bd-adb5-27ec0160146e", - "a99d5bb3-6216-4c6e-bfb6-f793289870df", - "25bab75a-d0a5-42a2-b0d4-f1aca4ac8d80", - "0cf46635-8a58-4196-b24e-d075875778d0", - "a710c09b-ab49-4276-9660-b882fcff8b24", - "a63ade2f-c476-4f26-84e6-b978db27c435", - "1024689e-c2b8-4ef4-91de-02732703334f", - "fc41ae6e-8743-4057-86fa-bff2f8ff171b", - "cef92b6b-13fd-44c8-a4af-848b55a7ba57", - "bf502854-8e31-40c1-9d27-ac480682b4c4", - "f0da65e3-27d4-43c7-9945-ace5c5d815e5", - "8600d9b3-b4ad-4c84-b458-42b4f31addcd", + "9c08062d-4cf1-4b6e-a8ba-4a3881cc7e7d", + "4eaf518b-35ec-4262-928d-4d497c3f2830", + "66281f32-0047-4af8-8237-90c93fc4b0e8", "5ed13d95-5b93-4407-b770-0dedeb674b0f", - "b6ab43fe-8e9a-48ac-9dc9-9107a47de661", + "bf502854-8e31-40c1-9d27-ac480682b4c4", + "b01ef5c5-2755-455d-acb4-ba3818f5e331", "92dfa35c-14f5-48b7-8f57-583c7a23d434", - "e1e1fde9-4548-4234-97c0-b571d29d6964", -<<<<<<< HEAD - "503530e7-cfb4-4bcb-ac38-d4dd3ce3d1af", -======= ->>>>>>> 0a31a7a5abc2c505bf743aa596e1c765a0405152 - "6c53e21f-0dfa-4273-b08a-951f6792467b", + "b38991fe-2e45-431c-8f23-974e7905dfaa", "92f23179-46e7-4f6c-8d1f-3b68910937db", + "6c53e21f-0dfa-4273-b08a-951f6792467b", + "90a9eb51-3d7f-4094-add0-ad20f9379337", + "503530e7-cfb4-4bcb-ac38-d4dd3ce3d1af", "7e0a9fcf-7599-443b-814d-05bf5cca516a", "5b0aa537-7f4b-4132-ac45-2101f453a688", + "0237ad36-2cdb-4e29-944a-8720564056bc", "2873d380-eeb8-4805-af74-462d711f466a", + "2ea4f287-fa08-4f3e-8c66-6f9738b0fd0a", "3f275c96-62b0-417f-9224-aeb073192f1d", "4c1187d9-40bd-4210-acd7-0eecf4b2706f", "b54f9b14-fdec-476f-98f8-f0a519f7e844", @@ -89,53 +25,18 @@ "4df8b354-d4c6-4219-852d-37ea032eb450", "fe980cba-a552-4d61-a357-19c19262f33e", "15e917cb-b4e4-4694-a025-45bd3a31ccc3", - "3a3098c2-78cb-4f85-834f-9a282d864462", - "6acd6f05-53d0-4866-b1a3-3fdc05bea16e", "bc027956-4f24-4f96-b705-359a19cccb53", - "59a8c009-6f37-4960-b842-18f457d55412", "eec86efa-7642-410f-934a-7af388c0311a", -<<<<<<< HEAD - "b38991fe-2e45-431c-8f23-974e7905dfaa", - "0237ad36-2cdb-4e29-944a-8720564056bc", - "2ea4f287-fa08-4f3e-8c66-6f9738b0fd0a", - "4eaf518b-35ec-4262-928d-4d497c3f2830", - "6023e99b-9806-44e9-8325-487a6cfdf3e5", - "75a77063-a5a9-456a-8b4f-bfde10c137e8", - "90a9eb51-3d7f-4094-add0-ad20f9379337", - "9c08062d-4cf1-4b6e-a8ba-4a3881cc7e7d", - "66281f32-0047-4af8-8237-90c93fc4b0e8" -======= - "503530e7-cfb4-4bcb-ac38-d4dd3ce3d1af", - "25bab75a-d0a5-42a2-b0d4-f1aca4ac8d80", - "92dfa35c-14f5-48b7-8f57-583c7a23d434", - "90a9eb51-3d7f-4094-add0-ad20f9379337", - "19659ed7-1823-42a9-b8e8-1884c19df817", - "6023e99b-9806-44e9-8325-487a6cfdf3e5", - "e98498e1-12bf-4280-8def-6f8e543fb934", - "9c08062d-4cf1-4b6e-a8ba-4a3881cc7e7d", - "2ad95b5e-51fe-4864-ad40-6743b8fac9d5", - "725f6dd5-18b0-44f9-997a-d89b23ac1fc0", - "a496b103-90e1-421c-94c5-500167b26227", - "a99d5bb3-6216-4c6e-bfb6-f793289870df", - "5ed13d95-5b93-4407-b770-0dedeb674b0f", - "0cf46635-8a58-4196-b24e-d075875778d0", - "bf502854-8e31-40c1-9d27-ac480682b4c4", - "b5a00886-b32d-4185-a4a6-fd9f7a8dbe90", - "1c619601-a6ae-4c45-be2c-20b0d95e950f", - "75a77063-a5a9-456a-8b4f-bfde10c137e8", + "59a8c009-6f37-4960-b842-18f457d55412", + "6acd6f05-53d0-4866-b1a3-3fdc05bea16e", + "e1e1fde9-4548-4234-97c0-b571d29d6964", + "cef92b6b-13fd-44c8-a4af-848b55a7ba57", "a710c09b-ab49-4276-9660-b882fcff8b24", "a63ade2f-c476-4f26-84e6-b978db27c435", "b6ab43fe-8e9a-48ac-9dc9-9107a47de661", "8600d9b3-b4ad-4c84-b458-42b4f31addcd", "f0da65e3-27d4-43c7-9945-ace5c5d815e5", "1024689e-c2b8-4ef4-91de-02732703334f", - "fc41ae6e-8743-4057-86fa-bff2f8ff171b", - "cef92b6b-13fd-44c8-a4af-848b55a7ba57", - "4eaf518b-35ec-4262-928d-4d497c3f2830", - "66281f32-0047-4af8-8237-90c93fc4b0e8", - "b01ef5c5-2755-455d-acb4-ba3818f5e331", - "4466b8d6-b468-4cb5-bc57-7a2bd3df12e4", - "a81d74d9-943b-4d0e-aad5-2999276d3447" ->>>>>>> 0a31a7a5abc2c505bf743aa596e1c765a0405152 + "fc41ae6e-8743-4057-86fa-bff2f8ff171b" ] } diff --git a/local/node-tree-state.json b/local/node-tree-state.json index ab03034..117d7fd 100644 --- a/local/node-tree-state.json +++ b/local/node-tree-state.json @@ -1,98 +1,5 @@ { "nodeFoldStates": [ -<<<<<<< HEAD - "a8YKids/pBo7a6DhcKC/x6", - "2dETzylNRCQqKpL2ZTQgkQ", - "73C9Kx3DVLIauCEDxAkpJQ", - "97sKS5ee1EMIiiO2r4hqKk", - "d9M2KCmcdGbJN9OkXY9vWH", - "8b7j5v2t9Mvqj+quZ+lsEf", - "8ctWtsTtlHGbnvVpSzZomt", - "2fKJx1aQBBi4ORJdbjzeLl", - "b6UFO3Jr9NlIdwDS8B/h2H", - "91ysp8zHlDGaVf4Sj2DLkj", - "22Ntp+x31JVYx8NXr2hd7a", - "4ageW6mt5DCoall3D43DGb", - "98LmihmtNMspeChAahwVGH", - "69b94rRhxMKLFvNQUJQioS", - "84oGLDFOxCKoYLqlSdhDnN", - "142gkmsDhC55cLQTra/tql", - "b2Apl6fq5ECprQK79hReWY", - "070osvNaBKkYTMd3oePPnZ", - "25F70aGLtDkoh9PCVQDjbf", - "d8I6uforVAxKtRFGWR0VN1", - "d5223BVQtNVZqGZK8LH+RP", - "8ftoIQupFPvbdyI30WTWu+", - "8d2CPUrWZG9riW8RKy1kPG", - "42vBVEncNHob+lzhZN2h12", - "57U1lGn7FGKoyq+G7x2GR+", - "14pOInL1tDGrmGJMiVb75s", - "dc0dx4w8tKpJ38i0Vrfnkd", - "35d/+GtYVNYrapY0UV8HWm", - "26sqM0yt5Jq59B42mpqTow", - "b1OQU+IaFP+KUi5zSgeN2J", - "176T0mvwVI0oIohksK8VQ4", - "a7U02I4SdI/44Ea9axEc1O", - "b8BIsBxkZOarWWxZ0aa5tD", - "51rBFzrR1Cd4PK5gRmTg3l", - "25QUVZ+FJKMZBwwBRNJVWG", - "05Xhl4XeFHGLad2i00tXF+", - "657sQmSTNPoIEpLHjBEgJr", - "d49qUG/RVHG6Y03LNzsNqx", - "afc9//40BDtovWmW0+o6YD", - "fcJJ/zX5BBDJKx3pw8b+h0", - "36y428bz1PkqFETFmHr++a", - "5eClwAlVdJvoYVmu9F9yC/", - "b9a6vDg59N/K7O8NwW9JyS", - "46nmdHkLZCVJYY76R7Hu/K", - "20ZQrEUtFG1q1JYM7uvSab", - "34+K2c3hxIv4LudzpWJvck", - "5dTDGrUT9GNZgZMK+cpqup", - "1f+2y/Qi1Ev5BWlnl5Pu5N", - "e4lqwiNZhC6rvsMxj+DejU", - "f3Zkjoy8VBZacKF0t/H6v0", - "82SkEwGvBAr7SnARdiQu+r", - "be++5Zar5BYb6spnYh8eQe", - "deF+w7F+dOCqsUCBJqXit9", - "7c2RGR/idIP6Wj6IJFl/5J", - "9eHuFPW01Ia69TlTRr+Zb8", - "c2XxSShVlEUbfanY0Mj935", - "386XXm/ZNOhJifw94bx6wO", - "39TsGpOghGfpVOh07aBe4k", - "848By9tFJEu4nHhcMOZiqn", - "b7KnNRoIlIf5H2EJ7ERzi7", - "6bW3sz8dRD96OBixVQYaGA", - "adJ2ifk95AgrTFqhneoaFU", - "87h9dIh7VNr5If4rHVQcjE", - "a8gANv7ntBGp+HWPZtNqlm", - "a6rWw99aNPC5Hsb8gHsKAM", - "85T9FzNCdAcqsvAPLkqntZ", - "9aox+zMhBJ4ZRAo1/1N811", - "66MBA+TW9IGJRoC3TK8l8t", - "c4XFaGqrpB+b5M1jw8Oh8x", - "efBYhe3q1A8oCWBa90X4lt", - "f1gGuLR3NDV6BhJhtbvJaU", - "9dTNkOGABCtbqQYZWgwIk2", - "baxBqiGxFLR7GfVIgcLsZ6", - "36q8qXB7pO+LD8jzPc1tVB", - "e3WCpXxWhGW7eVW55RXlcD", - "29VNkHTapHsIZgt+CWou6j", - "a6LB3YgY5MAqIDUJ7iYjzt", - "e2iITY4PJMRYtGWEF1naMU", - "ffygMh7ZNOKaXM2tAmsAkb", - "0c/lRG6yNFs4bpB4hSZKbL", - "e7CHRxziFIbrPONNezXTFZ", - "b1QLmr4etNc7wYO/GZtfB7", - "d84SixDhlJQ6H9RifaBKP4", - "cd2t92j65NXoED2KfNQapf", - "7aQWv8CNlGIaLtQRyg1yF9", - "b6VSIei0FGqbHW0lBodN9N", - "66Rp7KRtVKaL5kfyBTWpeu", - "eaQrk9yMxED5lkExXZO0R1", - "c3nipMhuRO8pDkJ+gSghLb", - "6euovT6vpH3IdUmx4Sb4t9", - "860bFd63RGyK0mgicNVZ/V", - "cf7RKFcOlAqpKPtSICzE6+", "597YMPt2ZLdp8UXicPiUux", "1fM9vyxOpMQIeyNsBTXuNa", "a8Ew7LWbNFL67xjq5GCb07", @@ -436,8 +343,6 @@ "bbqli31MZIp7/+29SZo7Ij", "d0tw7nxfFHkpa8GES8uo9O", "45NVjwO61KIqJnYK8F/3S3", -======= ->>>>>>> 0a31a7a5abc2c505bf743aa596e1c765a0405152 "37HXz6Ex5L87Rtb/0KvWlY", "554jhi1U1C7b+xpkH9T4po", "2ewVkYkn9A8bzo2ZCXhrsq", @@ -451,7 +356,19 @@ "a7jIwfGu1Av740fROBsdss", "bdzrc829VLQ5doPrje4iyU", "d7PnSbi11Kfq9uQTo378x0", + "a5esZu+45LA5mBpvttspPD", + "5bWWPTPWhMvbOJcMi50EIm", + "eadrEk6sZOIaE5o/oMPM2G", + "92YD+h90NJhp8U6bJYnT/u", + "51hcJ2oCpB6701uBYymjqZ", + "a1VkYOiSNKQ45FN4rUFgET", + "03jXCZORFJG6n9jpa+2OeV", + "9b5vl6YSJCV4KJSug+nQjT", + "dfWlPEN7RFR6XchLehCcdE", "c7Fb9h/RNNYIhjS4XnDMCj", + "edGku/mxZPxJszZ+KWAxf0", + "1a1t6flR5NCp3ArthNU739", + "b0VHqWWqlJ4qVyuwnLGCWw", "0ax3zoOJNIz6JXjKysnJeM", "1auUaeui9F7aTcgWoL0qOd", "23+hcrCppO9K+g5+gLlS6C", @@ -473,290 +390,16 @@ "ac5KpKiZ9FOZM7xeVnT0gM", "3fmK7vjpRGrZbzW1qimReD", "dddVUK6TBKo6QFOrmmDU7m", + "1eERHUg2hDxZesih/09x+A", + "75/8o7Uo5GK5UOksSb0Vaf", + "faTUOwCO9I+5u+/Z51XIk/", "8cioaWxzdBwaC5lZHRaEyQ", -<<<<<<< HEAD "b2/1NmDPVCXovcyHPoKEHX", "2a7fKXbxNM+7oVc5ylGZS3", -======= ->>>>>>> 0a31a7a5abc2c505bf743aa596e1c765a0405152 "bbsXTvcuBLUr67DsG2oE8g", "39zlXmZYZOXKpd5NRIFb8h", "349IYUpJ9GgqafnciDCl3J", - "53+9Bo4+pHvb4nnQ5uISDT", - "01TURmMI1JzaK0C/mxNNK1", - "cfwDZMVTRA9rByB3Q33b6/", - "abIjiE8WJGnYsqW6MBvVvK", - "63wJUV++BM5aYO8jbi3g5s", - "3a4XRZitZGp6oGx/HxpOep", - "63TvetoX1DGLo7v7mCPTcR", - "7aI1kRnMlO2L6SyFOAeNqB", - "cdTuY63pVCQZUoAwkXr7yY", - "39BBg+6S9CsZV62K3azhzx", - "e8fPs/U2pPFLcjDAGVvF2P", - "e0llqvSDBJz4+r0yAVo1d5", - "64khbP/qxDooMtxbTMnAt5", - "7enhUdF45MyqpI9fR1TsmR", - "29OYK6wfdNMqik6fsgL59I", - "57yNzHRHhPfq4DrH/zHDmI", - "c7KgEVudFBFb8M70n3w6MN", - "a5HoJq/B5KQZ42QFNePWQU", - "12l+PkbrlDqp3PVOwJnEXC", - "4dlDYqOxtGB6ZqdsJsLGPK", - "b9pRPxsPxDdKF+yHTOeWNn", - "2eJl28NW1EKYN/U2LpLc/y", - "033Ir6avtDQ5Ma9XtTRaTN", - "19vhlwjHRBM6+l0pTCfUEk", - "d2ieJ0E/JL25Mp8n3ciufe", - "fd+IY4d7FGxI8bkdn0Uc2f", - "a6lTkgwCFNoacomXx3nS7h", - "81N6GDADpKabHHTxRhd31p", - "90SNqBh5RKcrbrgXVvXKRO", - "a3C3ez6X9BIKmvs26iydXX", - "768yk/OidPmpj5bV9NOtgR", - "c26CFCPj1BjoeR1Iw5JUjV", - "e3ijIpcBBEpb14h1VoA13m", - "a2ihBeQA9L5btrl5qQXyyB", - "a5mzuVGg9Azbo0iTbtKt/u", - "68qkPD3W9CV5FfsXqM8amb", - "11W3FBcPNPLJa20TCk0gJN", - "14EdwKldBHLYePXC7Ia/Gx", - "9d0mhbZqtAoa3Ju7h9IhuO", - "2dRdqXawlKDYKGZd9CC0X2", - "f1dQ7dukROna8Fon2m0nja", - "29r6GiFA5MVrKkYATjKfst", - "a6nlXFSqRGfaRBzmf+2lL2", - "855GACMqdHQbQihZpmF829", - "63WhTquflKfZjTlGOhtWFd", - "d8kkGhpsNFPYYfJt809vhY", - "38YttGXnlCuoRMpfwLQHzD", - "deuiS/TTdAapsNc1IvBK22", - "7aEogOJDtPR699wAh0vZvN", - "f1QCQX5yBD5au3Abs6PQax", - "37MqiBHplKXK/eB84r/GQA", - "bbQSKi9iFI/bmBpY/MvPSy", - "c3VLiZmHxHuojeVr3bcC27", - "7c2f00g9hK5a9Y0xdN/UUJ", - "99GU9T155AWbkUgaGaLmCP", - "b53zz0y0FKEav8EXN5Moaw", - "d6aLrDGiRPEKhzYT0kxYFE", - "602Hs0X/9K34mGukYaBLvg", - "37eq5LBAZKjr9TPVGoqiXO", - "00KHPJoehJ3YjJewJUhNIH", - "98JMvkkr5NFZSr1AC8dYk6", - "29+up7oz1KOJdF1NDrQKbQ", - "ecD6UM8bBBH6E+fSlvo+jZ", - "d7L/j+qrNJm4i9ya/nezGZ", - "18A+/FiWxBf7wBIycfy2W6", - "31f9UeJfxNur9i3jObe7Nj", - "7f86O+EhJOAILEuR8SMgPZ", - "056u7zB7BKDJZ388YYOMPQ", - "e4tysHynVBIbMmn7pS2jkG", - "feeZsYndJBXaq6oCOejf4h", - "c1fRbqgnFLFYhbqkVhqYFj", - "dauM1qek1GrJ/dx6XP+WnS", - "1akrcNr3dDmLoKIkoL10Sh", - "de+eU3PshOY7sqzyB9bw6v", - "c1EeN28E1J5oH72cHgXmz3", - "61fziBLPNNNZV+C8t7Z7KX", - "04vdkrriJD276xJ4JYBBfg", - "70NnybEZRBHYKac/WGTLRa", - "b4CptA6YxCXL8QZSny0CYe", - "ef3WKyecVADKGZJMoErOy/", - "ecuqOHnx5Np5TKkHitYoEP", - "90hNDkOJBL4q/8BkxJ9BEv", - "e102CthglJDLzDXWDvJhXO", - "84a+/JsSRPf5VjQHADLbi5", - "f637CRJcRCOaCr7WN5EFaH", - "b43iJ+LzRFeJHNGyuFFh7v", - "9cyDdhF3RGbJLPSaCSbDus", - "caniOumohLNqxLGYkcPlOI", - "5fcF05qUVAPY/Ax06+JL3G", - "08G5fTXtZP4J6IbqIM3Mf8", - "ddCb82Eq1K67wOCecUkhae", - "32e3AZLLdMq4+KlRvjEVkp", - "caePjyWvlM36sqvVbTj2Xi", - "95uF2748hKO5cdNA0sEDw4", - "c2KyqNTLdPwKVTmkfIxCzp", - "20upEUBspD46w40cvEySPN", - "7cyAGFkG1OFqS9QpbK3ac1", - "52EAT59GJAb42Wtv8f1Q3O", - "08CNWu0ihEAqxPhgmM3FlB", - "5a2P8r9hpNPpLyZWUa9Y2v", - "d9c0+4Z61Di58PznH/lg0P", - "c3/GyR8w9ATbCA26pS+Gt6", - "32uxEeslVJ4rOOQRVXTgYd", - "8a6uffvmpNLZpYCneoKhZo", - "3cVfvNE4RC55jIrkMt4sc1", - "4d50EgBTNHkqS8Csi+Az1u", - "faAQa+y1ZFUpDM3Uwaew19", - "d0/km/3GJOXI53FxKXMbz4", - "6438k/PItLhLj6+nIDsiZN", - "5aqjjItFlIUYVqMHy2y/K1", - "08iRnQGktCkbJWMdxdM/gC", - "a1a1i3caVCDLfkhGmI5lUB", - "19CaBwn2pEU6Bm3FEP9KVN", - "1acSEDdDlNx41gP8V/c34j", - "eaT7KFI8NGgK9hECZfr6me", - "8dL5xKlQhG4pP4GyYgpZPE", - "a7wXRxpClDEbmk+rvt9uSc", - "1fvxF5HV5Kc5yLKhcLJazx", - "e5ovyMXpVFE7UgwtjaLY8D", - "45qPlMJf9FxqlLZVrJThxi", - "9a2qdRPCxBWLolu4QKv7a/", - "0bnMLYNYlFPJIPJ6URAGjM", - "e6g2Y+qNlNV6rfEtA4XqAL", - "14Vm+ri+JEOpxjr21zKrmG", - "7fnirLiIVF5rfUVY+NUao0", - "9adUWmbT1ODbwnBle/iJu9", - "90pR1RRwdEfIIddFE1sDvE", - "51Qo7ypyBP3Yh/QF5eBvpu", - "13UqxjknJGpJ6o7JNgrgzE", - "01rokaM6lBj5vEMr8SAO3M", - "50mgGCr2NMDoQCCKuWg/W5", - "afvVUWduxBmYa9YAawFVkv", - "c40/PIfmVH054PMj3A0fnD", - "88aBPKtipIf7BhdR4Rue+I", - "9ffI8As0JDfpKXIsPbtJPr", - "58htUBKPZMt6MynoZYS/4W", - "acwZ08ATNIWJhyY8rtHvZv", - "achHqEi2pBwqoBL7AREONK", - "e2xwcmjXxNAIOdt4JP00o6", - "0bkpDfUZtIxrE68enOTwV2", - "065r5ZRfxE77zDWB3T18I/", - "6800PNI+9Ej5RnPUveGv4g", - "03dtT02OREnqFe873M3SZg", - "b7tCLhvo9IO4AGgGAORdil", - "9bovlAZXhH4YZw+2/VsyyL", - "ad5wvjn6lIkLmuUTzeI80j", - "f6RpguDqNE8rYz1FAJZk3A", - "f1WWG6F5tOoaVgNCyeK99Q", - "deKdXa4ZZJXLCq7OitOFvU", - "91ppc9KxBJsp0QYNk4O1RT", - "caVBinP9RJPpSUUp5vwpZo", - "a75P9+9V5K7JWsKBOQh8Ry", - "eel61R48hNeJi0SPCeG+he", - "b1KGist7ZNubSpFYO5MD3S", - "7aHGf2oZVEJarSkJt4mwFS", - "7cmIp2i39HjaxlJxOglA9v", - "b1PeAyCkhGd6JoOB6W1UZn", - "dcn8H2PjpAtaXr0FCokI7s", - "bd5kvAzXBKxKFRv3Mm9bLF", - "58jDzGX85CVJmRXrl1k+cv", - "70OyTDnPhL9pLyyEUuLCwJ", - "db4wQVG/NICYGfzMuKVonB", - "d8BL+dmRNJ+ZoB/rDL5a9d", - "1b8/V7DFJFa4gRp+tLkwo9", - "b6DgBAHEdI/LFmFHxVxFU+", - "8cba6CiNZBOYJNzQ5iBA7N", - "a4423XXQdP9JejDnitZ7O1", - "f7QSxhAStH84NuNBQ3LFmY", - "a0epO+Ji9MyKerWylYBxc9", - "5b7iyGowNLtYqvV+g6uzZY", - "47MCk7WrFJKa3GrMdsobnR", - "66kxHPHj9GUJ8+zsh+qBp4", - "b29VDX9zJF+5D0/7njLm0M", - "adyuVylOFFCpaJQExdHIvI", - "f3YrL/fyRPjqyiCMgWGmWJ", - "f9cr3EW4REYp7P+9PnyIW7", - "baZ4GvhQZCuI/uHrQCX/OA", - "36MeIWHWtFVKuLx82OqP64", - "8fgylxxONGbqG1NRMWc05e", - "7974Tgw2lB6KlX1vt8p5AA", - "12XZGSCOtOIZUow3qZiflX", - "baZxbx0n5AHLR3MhnpxIDj", - "86+0c7slBKRpVSlwo7X2JX", - "88kfElCixIXL1cv6gGFWeb", - "4acsgwji9HrZyNWt8ytpmg", - "1cTarwVkxA2rMFL1h7Y8bZ", - "c20R7/GrJP3oOtw95sIr+5", - "b3vriXu+ZEiI4REJv30tyB", - "6bklhXqjRI+Z2UxwCGz7fP", - "946ToFzkJEKp8Voi3M6Te/", - "2dewxMvSFPwbv5wItdmQEd", - "a4GjEapg9A16ZyRBsWWnCa", - "dfsRbNr/FMybE+d1KajrT2", - "6atkbwqPBGqoWGwuXD2LFn", - "333mzQabdJ4rQjCmcmFsXZ", - "7cla6T78VCOqYBC5K21CYR", - "36qTAdtolAk70J4XdtoWTr", - "d1tBFBmdFBjYq3JSwOWZq0", - "87Wjhs8yNOurPgfA/pFGXJ", - "b6Ndgcjc5A44HmSslhFNe5", - "f537J7vjlNL46XeGXbCoAT", - "68IZg/GbdC5LogtMfOXdXN", - "1etnknvBhBY7m4lAa403DZ", - "6anhTm/6tOsrejQuO1TgXc", - "435gbTUfxBApmQ3l2kalve", - "98Kke/dIBC8p2elnXAgn1t", - "9bc54O+odNpa+XyPCkbaTq", - "9f78Dw+dhGxIw8IyAjIYNy", - "5bwDrB0V5EQ4wJ33ZkV9xm", - "5aYCUL1MNDhJtBMYLihDzJ", - "e6us4NgLdP4Jiyk68pcHP1", - "2fkAG9iZxGpo+B1tpZBdqO", - "60m1uBEXdOSpiKWAIqEetK", - "51sIEAfPpJGrTz41mp0cg0", - "90Db2M8DVJFa4MtkD9uQgG", - "edyEUuOJ9EKJdrjwgFYJyV", - "275MRBntRE85lK3EUq718s", - "b3loBRbZxEA7dZ3m+NCpnX", - "1aI+elTmJIiZrfGdWq/SpQ", - "96RGjTuYNOp4SKb/ope0B1", - "f4OD2Px5lI3ZMXBDUjTeqX", - "96Cjc1pzxELqmCeTSfsfKd", - "4cxZxZ4vxDtLmkycG4+7yE", - "bbLQd6xE1LPJQuFPQ7ISjw", - "ackio8sQ5PC459e9dkZNGe", - "c4wxXxBRVHxr+j1uXCRbUm", - "74RDII609EipDFXECxW1cC", - "3cIkC7PPVC3JElGsOKlTQB", - "0deJbCn39OO72pTFLBNjbV", - "b3fb/y4v5P/K7buXl4h/im", - "9e/2EkHuBLHYJdovtx99Vz", - "ccR66TgmFGhLSzfiGw/ddY", - "2anJjKsP9EKbloFEb7gPFl", - "e1XkN+H4JPQJKdD8e3PYs9", - "74ifLN5GpFTph+9Fz/tIDC", - "b3cCOZh8RJ/JuFe96Nt5zr", - "0bJ2pdJw1I6J1dtG1QR6DV", - "c8B1Dy/IpIKovEMJOxje5X", - "39VLCWuzRAOa8ygLKjqbRo", - "62m0l2EHVEuLlWyHouRyzH", - "f2gwRIMw5O0YrZ63zplK0u", - "2f+B9609VDML1BDNvvUEON", - "2ahk3QuM5JuKON8NxBhw0G", - "94T+smFQhBr47hIKoec9SC", - "99POCdRrpD+bOzyDlT+qEw", - "bfF6oqslBE848qilknxMbg", - "8dXYzDgnFKHoqsKWed9/+W", - "38eoOOIwVDEpwxW7JpnKwH", - "edGku/mxZPxJszZ+KWAxf0", - "b0VHqWWqlJ4qVyuwnLGCWw", - "07afITpORHfqPONAypAM0J", - "d0UzByGLlHhZBro9lAsDtj", - "2815t66ENIBbMKekyuNztH", - "20S5a4AntF7bQMioy3DQ5W", - "af5gW0TTdD4Itn7//ex/Py", - "e6aPbMYBRJFrmKxQqHlWGo", - "29yzpDdCVO0bwXn3gxV4r8", - "06QwEECpxEUq4YhPB+9y0p", - "05nqhrJzpEt7DuCenZsPoI", - "82Jt4S2qdHYZMMldq9zZbZ", - "1334deGtNHoJv2OUhIFG1z", - "21CBGRIrFDVZL6iWk1q1xp", - "4d20lTFktAWbFIVakFkTqr", - "8bS/yFRV5OaZOyOudFSRLm", - "383wJWC0dJuop5Q5/zNTG3", - "cezIxmNxRO6JVpiC2ekT1U", - "9b5vl6YSJCV4KJSug+nQjT", - "92TMdAzkxLV7OMfVwPKRcc", - "92YD+h90NJhp8U6bJYnT/u", - "2a7fKXbxNM+7oVc5ylGZS3", - "dfWlPEN7RFR6XchLehCcdE", - "44blZFeNdFYaDafI+ABKyL", - "67LZTVWmpEAYT6hpcfFqx4", "366Lx63TdOsbhMMswe7QCc", -<<<<<<< HEAD "1100mE3D9NOZt7Z7LNDlJY", "63u0GWwYBHQYonYh/K0LnP", "2bLO47dXNKSZvDbXHMD3j8", @@ -764,179 +407,98 @@ "0diNuzxEBDO5wPCjOf+aqe", "98xw+IhclIt6YWRiX2ipvR", "7caCsCl3pCKJyr7HLfz28L", - "f8ATbGJ+ZAo7ZtWPoOc15o" -======= - "99k/frMy1Lz6U4YMjy0tug", - "5digBgV6FFa55bp8ApLXqu", - "f3vGOwuVlH8rNh3ga21IiB", - "44vQhnjcpFGbUVYviBzL5J", - "04/AY/hQRBIp270nF8kX7Z", - "d8CZbzYdlK2oRflAbWkM5v", - "52m0+B99tBDI20UvzW7VQW", - "1100mE3D9NOZt7Z7LNDlJY", - "78Fl/8dnVGur/T2tCF1Awd", - "1eERHUg2hDxZesih/09x+A", - "0bk5X+UdtG+o7m0EXRTFdu", - "9bQzWjtadN+KeTGC326Cxf", - "64cC23cEdDy7+MguJh0fUR", - "75/8o7Uo5GK5UOksSb0Vaf", - "faTUOwCO9I+5u+/Z51XIk/", - "7fhIJPcv1JVoYYa9kWQOKz", - "edksWoJnZFk7HCcTx1SM2H", - "78JrwC6KJKp7MrMcRq8D3n", - "84eA0uLwBDMpVbOAwT4zIf", - "cbllED8F9AHbQ/HaHPQ5eH", - "a8dp5X5NxAg5E6iqlNgXlQ", - "1a1t6flR5NCp3ArthNU739", - "98zKsnQv5KlZnu3BRVezhS", - "b0RzOCbnNGmK/JZG0iv6WK", - "c2EO192dJGGZ0+Bn8A7FXb", - "c8ff1b/ZNFsK3k3TU6vor+", - "81v6t1y/pIV4wqNM6kk9/h", - "c5gS/+ExpFpJfhfKzLmjak", - "c3TLYogSVGpYB58j30givw", - "083oeCFpZEO5zFxRJKACZ2", - "beKOIuQo5HNZdeQU4g2cqN", - "0bKd6MhBhPYpeYkPEonI5d", - "03r2IPEXdEooEbPUVnYOi+", - "38CCyWV49GS6ZiQyU/cmW5", - "e8s4MAZS9IfIstdDeaHmsr", - "89Eik2rlhAHKhZnmOu6LZy", - "589KOByitPi4lP33TEE3jt", - "3dmhQWC11Dr7ShVgwaZE0V", - "65176niLBJV7d05bpaFt0L", - "d8vzX4uiVKL5N82jGxAI2D", - "6bD8zyDtZEDoGeTKXqaY/4", - "b2NAsT56JAqqxiHiZhAVQD", - "3bN7vrqm9K6b5qi7vjHyXG", - "f5lREP7JpBcpT/OgA53J+e", - "99VP30SnpOaINJWXErpmey", - "b7rwfpMHtPZJ2JJfKX9nkY", - "37DvOClOFHSq7FghkSUmfw", - "394FO5TkJKq5oFbdhF3pa7", - "25cBRYpupFKJVjit03WeC1", - "e9rYdVkX5BHIP6kU07p682", - "4cWzxSXOJH/pmK3Kyh+O9V", - "05hpUoqtNPFrGWbQNCw0G+", - "f2nWfGtllLXrf4MiDEbnQx", - "26iwQkBudH7Zr4geUHqlFq", - "85nrq4guxGbpjWSLKkH6P+", - "741LA4r7ZBe4H8hhsJeS7A", - "1fJFIdsSdPG4vUQM3kNiZH", - "e6AMz2Oq5HmrP7i1Ue/fvu", - "c4p0q7ovNJqYBsc4LwVIll", - "e32VfzbBZHmIWIYEhvY/mp", - "990IgEk4RPnL+uMnWKShE+", - "fcEbhgfyNNmpRBSfNObkne", - "5bygU22UFO9brKYQ+eNzC1", - "b1KKqFm9hMtpLUtxEY0uFW", - "5e/vqIjVNG8rD7fZi+6ZNQ", - "93bDTD4opNW52RBb7mjd99", - "eeJicNA0NIObnsBUDm2Rhf", - "00AOzuP/pGpYODxF+MwBOK", - "963hDdB59HJaC/k5Nu/Rz5", - "6eIl60RrBKgLuEpLH1vCUR", - "5fqrXuPkFM3KzLVSZCjE/x", - "a751BimHtKroMIKV1crwE5", - "6a1STCubhHpY/nOP1qcPG/", - "14VGk0GaNHEpo+mEMiHh/a", - "6azBxfOfNE/LmJUEuncIfg", - "6akmXWrvFI/JDFGxxlO9t8", - "74/5j851NKN6cCHsZ2DAPF", - "f4fodrgjNPGIKVhZInkAqo", - "2fDv+Jab5CcZ0D376t5cwM", - "40TFpsl+FMR4bmCo+l6D4H", - "95ZqMGkShM44r+2nGKKoix", - "37whVgoSNOfLrDnAj3rvtr", - "dbvOZsQuhHBaCr5lGBQyZ4", - "1flYPFnQ5DArPH0zVCviJX", - "55xM1wU1xL/ICUkQGjJtCw", - "09Be2amSxKMIaFSmWPBhVl", - "4crLE4PZpIErMk6rulmdrR", - "10dZqzxFhKHaz8Hd46AYnX", - "08biakwtJJbpAZx9rZCEL/", - "b0cmDdbDBHmp+Mt3zhLxhd", - "8frQCpSgpGs4fZOgGBqvW6", - "f1i1q9JdZB26wn6FrPP9am", - "d5CxhxRHFLj466aBmRlj3n", - "3d/HNRuY9LxI8kfYCLsZW4", - "caCQ0E9wZO/LKVCMZ0cdDH", - "318oTGJOlKfIDdMZYM/YrB", - "6bZRJZ0DNKHb1pVefbJQx5", - "93eZEKNK5IeKFfZ8l26U/a", - "54Ba5jta5EkrrZ5TbNDPd/", - "7c7l7msHZNbratos9DrJ+b", - "c5czyWq29CmKZexd6/o9w5", - "49NeFbKudFpp/7zC6U4Wt/", - "9bsHzek95FoaJrAaIEGohJ", - "30ieG3aZ1Ps5w5FsRPsc8B", - "6fbwciWd5IjZZg0gzZfOj0", - "25EpeQG0VNP4ixgII4/Xox", - "07cFnfz2hK4b6lLVfwNS4M", - "7bnf3aikFA470Kjizj0iQn", - "efgaftUfFM0oJHC1+1mBxj", - "40l6P+FGBCfpULy1TVSXtZ", - "88Y2Bz3OpAW4F/IWHiuZJw", - "c0ViNfjFNAurrBXhThXJLV", - "26CvLoGhtIh5lUSWs1YVKU", - "d4M3FYeHVBmaiYDmDW8Jky", - "58EKTRbHJJ/JXoUDPIs8+L", - "b6eS2eegtBjL27YfckNs7a", - "begebo5hRIiLBWgduYPXVv", - "be33UvBWtM4YlUNkFutqja", - "4cVDLdyfFOi6QACibrZWei", - "3aa8zU9o5AFJLqwp2py0L8", - "2f6gRiC+lN97p1cjU+15Oz", - "e9+OpdE35KD79c8ebmTsJ/", - "7fYvTwTKBEC7/us0g75ii2", - "7bXSMa2eRDEoo/Bj2fop8G", - "55fNt4P4pIfIgWGgTyaBeP", - "d0FV1zCQ9E1r0ceghyEYq0", - "4c/XswSg5NFIsuiipaiIQD", - "05JyaeNyxB9oC8kQMSfhpO", - "dbhJ7mC2dA3aatMTOunxGA", - "c5LJRTzhJAL4aemIj7LOQZ", - "0e2dMtxkhJoquLqH3lWhiq", - "f8SbAoe/JL9ovG25DMvbFl", - "4b041MIrxGCYO0WmQaCKmN", - "61VrtK3exHsq/p2HX9hX8V", - "86em4ylBtP159JvKxMLvRr", - "782BbR3QhGBaiuJINvWQY5", - "fdC8YNxhVMbYejAOzN0flH", - "beCk62MM9PiLQwGJwGaKpL", - "9bhxXu579E/YLP1plKq/kz", - "0fiCvyKO9IlITodi0Wx08J", - "44XSkRO71BLaqR2eqsE1Dy", - "b1AF6QF4FA9oMCAZIk+rhR", - "16aEeaXTNA76uv+qTrW7wN", - "68wkGS/LJCMqjHJxJig6ew", - "322jElgRJCjpE1m2rFVFUi", - "6eZ8Dt/ZpC3L1Hi2ZmMEtq", - "ecAj8O2BZIL6JvWUfRBdQ/", - "60oLVaHLZEHrf0mFOS5PLx", - "5bVTFF1X5FUagXwzcC62Er", - "a8sg97Ie5Ew4oR8ZyMGBbj", - "9cq3HT0thNSZryJdso/jt5", - "35xMp71txI+bV/h42eOB72", - "71FHzLnqFJPJrIhOWMTqjA", - "cfUWcQ2LxLhqbYo4k7xq6a", - "e1QEqvBNdJzaZNTGcHzbTe", - "75l526l/5E7Ineo+1wstLG", - "b2zRy4LEZPvpMoBXeR4GHH", - "9eMhPSY35LP6BvV2vKnzxK", - "92bnWXuABGGpaatxOca2SK", - "41hoNRAbRKwLwOjpJ2atUY", - "e1HwyvE5VIsYOtfdOarvuO", - "0e5UriBM5M9ZTolO4Nyptn", - "d41P4C9UZJbrTcwZLXB956", - "d7SVfveQRGCYyYfPAxNTUS", - "b92CZ90S9PQL/swR+/AUm+", - "afWjoGjJtDq76qJgBigmMr", - "a5esZu+45LA5mBpvttspPD", - "b2/1NmDPVCXovcyHPoKEHX", - "6dqgv+aKdPoakjPzpvDNA5", - "01N1oAxMtFlatBhgv2WzYs", - "71cNsfALdAbJ6TMbqIMEDs" ->>>>>>> 0a31a7a5abc2c505bf743aa596e1c765a0405152 + "f8ATbGJ+ZAo7ZtWPoOc15o", + "66RkEhH9ZJtp441GE8zCbe", + "c8JGytzSVI57ym11EmKS+E", + "a51dXmh5VGDrh3JixaxEO3", + "6a7QtFkodKFoACswdGivdJ", + "52qpSaiKZLgpRIopq8vgyy", + "28ke0OjAFBnbXmuR7sm2YJ", + "53lWqmibpP6YDA/8BLxrIE", + "deckDirkZP06o5Jb9pG3fT", + "22H9t3CUxBKLCckeQDfb+T", + "6a1fX+KHBBHpWHQ9NT4vKx", + "28GPqBRp1CJKQdq26LBHat", + "8cU8FLsfFMaaF1W2CBoO3i", + "9cNjKSP5lO56ZFjo8LyPNN", + "f3aHsleARFeIvyb8C1jpsO", + "afJeq5GChBKLOnZt+q1WEA", + "b4g2mDty1E+LgMU54LsV+9", + "fd9DWsMTRJB4OtgASaAmtO", + "7at6WRJqRFi4gP0T6W4tuW", + "1fRxcdvX1EbJ6XGWcU4CLQ", + "dbp1zZgf5E46cyYFRnTCLg", + "b4+BYLFehCGrRpF9fNV8mr", + "b3iyc+PDZFGK7cDLEZf+lD", + "80T5n6uClA47TCCodBRXb/", + "bbC7sOH2lF3IiTY5/RcW28", + "62EBr39rhAmYOQK38VR8tW", + "dbfVnKtaJJYJFc+l59C8EA", + "21TG1pmPVJBaxtra+R9BXR", + "b67L0BEOlJ/q91bss+1b6V", + "afj3Q4HD1CZIZzemi2ktwa", + "3f8kZiyVNP/5FWU2U2MV0e", + "26JGgOPu1HBIkjYlxRVv5n", + "3bmTC0/F1LHrMO3my2Znps", + "8bHGOBQ1hIaZ2lRNKsSTbD", + "96Y3RuywRLSq9TJXYiQKNS", + "63b7PdC5ZNXIEFUUkgA8Fu", + "82TjjnU05PM40CMxgQx275", + "3atd5794hOzIjk4AlyiUxc", + "78smpnQ0VKeqRCjoRW6+Dt", + "61zCwiFmVBaqrChTO119Ra", + "adRY0FOQdOpqNxR9/MOu/2", + "c5Xyrw8bRHQ6DrPaS5e7Fy", + "59IEiWWt9IIpElQi9lIJ9X", + "f1JNW9NtRJFo8LBisDWL55", + "72hfEvv/lM8qfCCXUEl5LF", + "05T+1OpeBHEoAVW13+yxyv", + "d6eIby1c9ClI0b0/NihRr5", + "ccOsf6HolID70LLPcsq/gI", + "a3nEEWudBOmrb4CBZJ44sM", + "a4Joh0NqBH5ZAnNkOLQD9W", + "9bkHVuy7ZAxo2L1exqepv8", + "cbMzWKQcdC8K31SY/Dj6fZ", + "f624NROCFLRICTMwYgS01A", + "1btkY4XfZIJpBMZyKeFMYH", + "efRtpJKzNFH4S/xvpt9kNK", + "8d7BikldBBNrRg7iAuA0Lh", + "b0U60LsnRNI6iuh/TyRuOf", + "e0Y8npWrJAw7CtR3b/riyy", + "ebxR3kTxdBMofyH12QlZ/3", + "40GRhyHjlMn5hsWORKCWjq", + "9032tH4B5FALSxJxkYvfNg", + "90YZXYHu5B6K1GwM3o2qdD", + "52agPX+vROBYkzJ9sL0Q/f", + "acB9bdFfNFo6+fb5BdvJAL", + "57yMFLlXBHiJ3H6Nz2dQut", + "9b3DIcIexHW61orreCLgjU", + "b984lJ8G9EXIglq+ChR3kN", + "0cTM3E57FKSqVYakVJSNGj", + "a85SvlhENJbp3GXhWvW1yb", + "60WT+r8qxDILCxnqgxZP5W", + "60Ute4DVxJV4vOoX/FCNrD", + "b3OpuWHehAOpMGP/7WMwp3", + "91tZcIJh5Jqq8pI0faiuoN", + "efkl2i1atOH7lYIWxiUPjl", + "862997QYhGLrsDVA/umtq5", + "637bW3X1RMWJXV/DfbOtsG", + "69RtFfYcdJ2IF4yjO6kcYN", + "a1jOlw0NtFk6g9/aaRK9hX", + "8fumSMgJJDsor9bOEDkokB", + "226D4SZnRHuqy/7DhvY6Tr", + "28d9ohoLZPxpumugxqdnbH", + "ad5bU+3+xITKIDwiREQMAr", + "6c7h19K/9G4as9Nsocuhuz", + "8e3xxNXgFJILy949jYwKh8", + "fbQF50kZ9L0ZJXJ02ZvUtn", + "de8Fn0i9pEd5z50pOLP6mJ", + "8eJz88J2VL/J3+W0sQ6Q5L", + "49w5JBF61GeoMEPnnu/0G2", + "0e7voM935Lirnt5oL+Xdz+", + "d4Cg2JM2NK0L0wfKFQeg6i", + "13I4RiGftKJ6g7Wnc3EX9m", + "d3ajDTgv5N949f58uGtp7d", + "1ePTP3SAxHF78/fucx4khs" ] } diff --git a/temp/BackupAssets/assets/resources/prefab/wall/down.prefab b/temp/BackupAssets/assets/resources/prefab/wall/down.prefab index 8b1c1d1..c6fa3d9 100644 --- a/temp/BackupAssets/assets/resources/prefab/wall/down.prefab +++ b/temp/BackupAssets/assets/resources/prefab/wall/down.prefab @@ -281,7 +281,7 @@ "_srcBlendFactor": 770, "_dstBlendFactor": 771, "_spriteFrame": { - "__uuid__": "fc8fd6fa-3cc2-4a69-a2f7-2c521de510b1" + "__uuid__": "6db2aafd-c221-4be9-a20b-5bb361fe22ef" }, "_type": 0, "_sizeMode": 1, @@ -295,7 +295,7 @@ "_fillRange": 0, "_isTrimmedMode": true, "_atlas": { - "__uuid__": "cc01997d-495e-480d-871e-be405a6c38b5" + "__uuid__": "f2c494b7-b6df-488f-b194-358235b0f180" }, "_id": "" }, @@ -315,7 +315,7 @@ "__uuid__": "f2c494b7-b6df-488f-b194-358235b0f180" }, "down_SpriteFrames": { - "__uuid__": "31479c6e-5626-4598-97ab-f94303e9efe7" + "__uuid__": "3d019ed8-3019-436d-add0-ceeb02a5baaf" }, "_id": "" }, @@ -2042,7 +2042,7 @@ "_srcBlendFactor": 770, "_dstBlendFactor": 771, "_spriteFrame": { - "__uuid__": "66c27f02-719e-422c-9277-42063833c0af" + "__uuid__": "4c2ac211-077a-4783-92b7-42964571ebfe" }, "_type": 0, "_sizeMode": 1, @@ -2056,7 +2056,7 @@ "_fillRange": 0, "_isTrimmedMode": true, "_atlas": { - "__uuid__": "cc01997d-495e-480d-871e-be405a6c38b5" + "__uuid__": "f2c494b7-b6df-488f-b194-358235b0f180" }, "_id": "" }, @@ -2087,7 +2087,7 @@ "_srcBlendFactor": 770, "_dstBlendFactor": 771, "_spriteFrame": { - "__uuid__": "9b80c949-4fcd-4e45-afa9-ad91683ef7b7" + "__uuid__": "1f53a670-99ab-4671-932f-3227940876cc" }, "_type": 3, "_sizeMode": 0, @@ -2101,7 +2101,7 @@ "_fillRange": 1, "_isTrimmedMode": true, "_atlas": { - "__uuid__": "cc01997d-495e-480d-871e-be405a6c38b5" + "__uuid__": "f2c494b7-b6df-488f-b194-358235b0f180" }, "_id": "" }, @@ -2264,7 +2264,7 @@ "_srcBlendFactor": 770, "_dstBlendFactor": 771, "_spriteFrame": { - "__uuid__": "66c27f02-719e-422c-9277-42063833c0af" + "__uuid__": "4c2ac211-077a-4783-92b7-42964571ebfe" }, "_type": 0, "_sizeMode": 1, @@ -2278,7 +2278,7 @@ "_fillRange": 0, "_isTrimmedMode": true, "_atlas": { - "__uuid__": "cc01997d-495e-480d-871e-be405a6c38b5" + "__uuid__": "f2c494b7-b6df-488f-b194-358235b0f180" }, "_id": "" }, @@ -2309,7 +2309,7 @@ "_srcBlendFactor": 770, "_dstBlendFactor": 771, "_spriteFrame": { - "__uuid__": "9b80c949-4fcd-4e45-afa9-ad91683ef7b7" + "__uuid__": "1f53a670-99ab-4671-932f-3227940876cc" }, "_type": 3, "_sizeMode": 0, @@ -2323,7 +2323,7 @@ "_fillRange": 1, "_isTrimmedMode": true, "_atlas": { - "__uuid__": "cc01997d-495e-480d-871e-be405a6c38b5" + "__uuid__": "f2c494b7-b6df-488f-b194-358235b0f180" }, "_id": "" }, @@ -2418,7 +2418,7 @@ "_srcBlendFactor": 770, "_dstBlendFactor": 771, "_spriteFrame": { - "__uuid__": "66c27f02-719e-422c-9277-42063833c0af" + "__uuid__": "4c2ac211-077a-4783-92b7-42964571ebfe" }, "_type": 0, "_sizeMode": 1, @@ -2432,7 +2432,7 @@ "_fillRange": 0, "_isTrimmedMode": true, "_atlas": { - "__uuid__": "cc01997d-495e-480d-871e-be405a6c38b5" + "__uuid__": "f2c494b7-b6df-488f-b194-358235b0f180" }, "_id": "" }, @@ -2527,7 +2527,7 @@ "_srcBlendFactor": 770, "_dstBlendFactor": 771, "_spriteFrame": { - "__uuid__": "66c27f02-719e-422c-9277-42063833c0af" + "__uuid__": "4c2ac211-077a-4783-92b7-42964571ebfe" }, "_type": 0, "_sizeMode": 1, @@ -2541,7 +2541,7 @@ "_fillRange": 0, "_isTrimmedMode": true, "_atlas": { - "__uuid__": "cc01997d-495e-480d-871e-be405a6c38b5" + "__uuid__": "f2c494b7-b6df-488f-b194-358235b0f180" }, "_id": "" }, @@ -2788,7 +2788,7 @@ "_srcBlendFactor": 770, "_dstBlendFactor": 771, "_spriteFrame": { - "__uuid__": "66c27f02-719e-422c-9277-42063833c0af" + "__uuid__": "4c2ac211-077a-4783-92b7-42964571ebfe" }, "_type": 0, "_sizeMode": 1, @@ -2802,7 +2802,7 @@ "_fillRange": 0, "_isTrimmedMode": true, "_atlas": { - "__uuid__": "cc01997d-495e-480d-871e-be405a6c38b5" + "__uuid__": "f2c494b7-b6df-488f-b194-358235b0f180" }, "_id": "" }, @@ -2833,7 +2833,7 @@ "_srcBlendFactor": 770, "_dstBlendFactor": 771, "_spriteFrame": { - "__uuid__": "36c23619-6422-47be-aa02-f78b7618bb3c" + "__uuid__": "b48abaaa-d7d1-45b6-8a24-8f259163122a" }, "_type": 3, "_sizeMode": 0, @@ -2847,7 +2847,7 @@ "_fillRange": 1, "_isTrimmedMode": true, "_atlas": { - "__uuid__": "cc01997d-495e-480d-871e-be405a6c38b5" + "__uuid__": "f2c494b7-b6df-488f-b194-358235b0f180" }, "_id": "" }, @@ -3010,7 +3010,7 @@ "_srcBlendFactor": 770, "_dstBlendFactor": 771, "_spriteFrame": { - "__uuid__": "66c27f02-719e-422c-9277-42063833c0af" + "__uuid__": "4c2ac211-077a-4783-92b7-42964571ebfe" }, "_type": 0, "_sizeMode": 1, @@ -3024,7 +3024,7 @@ "_fillRange": 0, "_isTrimmedMode": true, "_atlas": { - "__uuid__": "cc01997d-495e-480d-871e-be405a6c38b5" + "__uuid__": "f2c494b7-b6df-488f-b194-358235b0f180" }, "_id": "" }, @@ -3055,7 +3055,7 @@ "_srcBlendFactor": 770, "_dstBlendFactor": 771, "_spriteFrame": { - "__uuid__": "36c23619-6422-47be-aa02-f78b7618bb3c" + "__uuid__": "b48abaaa-d7d1-45b6-8a24-8f259163122a" }, "_type": 3, "_sizeMode": 0, @@ -3069,7 +3069,7 @@ "_fillRange": 1, "_isTrimmedMode": true, "_atlas": { - "__uuid__": "cc01997d-495e-480d-871e-be405a6c38b5" + "__uuid__": "f2c494b7-b6df-488f-b194-358235b0f180" }, "_id": "" }, @@ -3164,7 +3164,7 @@ "_srcBlendFactor": 770, "_dstBlendFactor": 771, "_spriteFrame": { - "__uuid__": "66c27f02-719e-422c-9277-42063833c0af" + "__uuid__": "4c2ac211-077a-4783-92b7-42964571ebfe" }, "_type": 0, "_sizeMode": 1, @@ -3178,7 +3178,7 @@ "_fillRange": 0, "_isTrimmedMode": true, "_atlas": { - "__uuid__": "cc01997d-495e-480d-871e-be405a6c38b5" + "__uuid__": "f2c494b7-b6df-488f-b194-358235b0f180" }, "_id": "" }, @@ -3273,7 +3273,7 @@ "_srcBlendFactor": 770, "_dstBlendFactor": 771, "_spriteFrame": { - "__uuid__": "66c27f02-719e-422c-9277-42063833c0af" + "__uuid__": "4c2ac211-077a-4783-92b7-42964571ebfe" }, "_type": 0, "_sizeMode": 1, @@ -3287,7 +3287,7 @@ "_fillRange": 0, "_isTrimmedMode": true, "_atlas": { - "__uuid__": "cc01997d-495e-480d-871e-be405a6c38b5" + "__uuid__": "f2c494b7-b6df-488f-b194-358235b0f180" }, "_id": "" }, @@ -3534,7 +3534,7 @@ "_srcBlendFactor": 770, "_dstBlendFactor": 771, "_spriteFrame": { - "__uuid__": "66c27f02-719e-422c-9277-42063833c0af" + "__uuid__": "4c2ac211-077a-4783-92b7-42964571ebfe" }, "_type": 0, "_sizeMode": 1, @@ -3548,7 +3548,7 @@ "_fillRange": 0, "_isTrimmedMode": true, "_atlas": { - "__uuid__": "cc01997d-495e-480d-871e-be405a6c38b5" + "__uuid__": "f2c494b7-b6df-488f-b194-358235b0f180" }, "_id": "" }, @@ -3579,7 +3579,7 @@ "_srcBlendFactor": 770, "_dstBlendFactor": 771, "_spriteFrame": { - "__uuid__": "2c8edc9c-c130-4c61-98f1-0a9b2edf3270" + "__uuid__": "e122aac4-873c-4996-bbc8-7fdbd2cd0e60" }, "_type": 3, "_sizeMode": 0, @@ -3593,7 +3593,7 @@ "_fillRange": 1, "_isTrimmedMode": true, "_atlas": { - "__uuid__": "cc01997d-495e-480d-871e-be405a6c38b5" + "__uuid__": "f2c494b7-b6df-488f-b194-358235b0f180" }, "_id": "" }, @@ -3756,7 +3756,7 @@ "_srcBlendFactor": 770, "_dstBlendFactor": 771, "_spriteFrame": { - "__uuid__": "66c27f02-719e-422c-9277-42063833c0af" + "__uuid__": "4c2ac211-077a-4783-92b7-42964571ebfe" }, "_type": 0, "_sizeMode": 1, @@ -3770,7 +3770,7 @@ "_fillRange": 0, "_isTrimmedMode": true, "_atlas": { - "__uuid__": "cc01997d-495e-480d-871e-be405a6c38b5" + "__uuid__": "f2c494b7-b6df-488f-b194-358235b0f180" }, "_id": "" }, @@ -3801,7 +3801,7 @@ "_srcBlendFactor": 770, "_dstBlendFactor": 771, "_spriteFrame": { - "__uuid__": "2c8edc9c-c130-4c61-98f1-0a9b2edf3270" + "__uuid__": "e122aac4-873c-4996-bbc8-7fdbd2cd0e60" }, "_type": 3, "_sizeMode": 0, @@ -3815,7 +3815,7 @@ "_fillRange": 1, "_isTrimmedMode": true, "_atlas": { - "__uuid__": "cc01997d-495e-480d-871e-be405a6c38b5" + "__uuid__": "f2c494b7-b6df-488f-b194-358235b0f180" }, "_id": "" }, @@ -3910,7 +3910,7 @@ "_srcBlendFactor": 770, "_dstBlendFactor": 771, "_spriteFrame": { - "__uuid__": "66c27f02-719e-422c-9277-42063833c0af" + "__uuid__": "4c2ac211-077a-4783-92b7-42964571ebfe" }, "_type": 0, "_sizeMode": 1, @@ -3924,7 +3924,7 @@ "_fillRange": 0, "_isTrimmedMode": true, "_atlas": { - "__uuid__": "cc01997d-495e-480d-871e-be405a6c38b5" + "__uuid__": "f2c494b7-b6df-488f-b194-358235b0f180" }, "_id": "" }, @@ -4019,7 +4019,7 @@ "_srcBlendFactor": 770, "_dstBlendFactor": 771, "_spriteFrame": { - "__uuid__": "66c27f02-719e-422c-9277-42063833c0af" + "__uuid__": "4c2ac211-077a-4783-92b7-42964571ebfe" }, "_type": 0, "_sizeMode": 1, @@ -4033,7 +4033,7 @@ "_fillRange": 0, "_isTrimmedMode": true, "_atlas": { - "__uuid__": "cc01997d-495e-480d-871e-be405a6c38b5" + "__uuid__": "f2c494b7-b6df-488f-b194-358235b0f180" }, "_id": "" }, diff --git a/temp/BackupAssets/assets/resources/prefab/wall/downLeft.prefab b/temp/BackupAssets/assets/resources/prefab/wall/downLeft.prefab index 7ba1abf..4252244 100644 --- a/temp/BackupAssets/assets/resources/prefab/wall/downLeft.prefab +++ b/temp/BackupAssets/assets/resources/prefab/wall/downLeft.prefab @@ -159,7 +159,7 @@ "_srcBlendFactor": 770, "_dstBlendFactor": 771, "_spriteFrame": { - "__uuid__": "ee73bdf1-0624-464f-a268-cb0ff3f2952b" + "__uuid__": "4891e811-ae55-4277-b9de-7592e8016504" }, "_type": 0, "_sizeMode": 1, @@ -173,7 +173,7 @@ "_fillRange": 0, "_isTrimmedMode": true, "_atlas": { - "__uuid__": "cc01997d-495e-480d-871e-be405a6c38b5" + "__uuid__": "f2c494b7-b6df-488f-b194-358235b0f180" }, "_id": "" }, diff --git a/temp/BackupAssets/assets/resources/prefab/wall/downRight.prefab b/temp/BackupAssets/assets/resources/prefab/wall/downRight.prefab index 1c5a4d9..349c141 100644 --- a/temp/BackupAssets/assets/resources/prefab/wall/downRight.prefab +++ b/temp/BackupAssets/assets/resources/prefab/wall/downRight.prefab @@ -159,7 +159,7 @@ "_srcBlendFactor": 770, "_dstBlendFactor": 771, "_spriteFrame": { - "__uuid__": "e7bbdb15-5185-4c6e-a2f6-1c337b60b460" + "__uuid__": "6aba7f92-7bd5-4b20-8a55-7730e1bfa75d" }, "_type": 0, "_sizeMode": 1, @@ -173,7 +173,7 @@ "_fillRange": 0, "_isTrimmedMode": true, "_atlas": { - "__uuid__": "cc01997d-495e-480d-871e-be405a6c38b5" + "__uuid__": "f2c494b7-b6df-488f-b194-358235b0f180" }, "_id": "" }, diff --git a/temp/BackupAssets/assets/resources/prefab/wall/left.prefab b/temp/BackupAssets/assets/resources/prefab/wall/left.prefab index 58b4257..3ee858d 100644 --- a/temp/BackupAssets/assets/resources/prefab/wall/left.prefab +++ b/temp/BackupAssets/assets/resources/prefab/wall/left.prefab @@ -281,7 +281,7 @@ "_srcBlendFactor": 770, "_dstBlendFactor": 771, "_spriteFrame": { - "__uuid__": "52f7fc1c-b560-4b6d-b15e-b38b6584a5d8" + "__uuid__": "4f65ed94-5d59-48ce-b94f-e199044365cf" }, "_type": 0, "_sizeMode": 1, @@ -295,7 +295,7 @@ "_fillRange": 0, "_isTrimmedMode": true, "_atlas": { - "__uuid__": "cc01997d-495e-480d-871e-be405a6c38b5" + "__uuid__": "f2c494b7-b6df-488f-b194-358235b0f180" }, "_id": "" }, @@ -315,7 +315,7 @@ "__uuid__": "f2c494b7-b6df-488f-b194-358235b0f180" }, "down_SpriteFrames": { - "__uuid__": "31479c6e-5626-4598-97ab-f94303e9efe7" + "__uuid__": "3d019ed8-3019-436d-add0-ceeb02a5baaf" }, "_id": "" }, @@ -486,9 +486,7 @@ "_fillStart": 0, "_fillRange": 0, "_isTrimmedMode": true, - "_atlas": { - "__uuid__": "31479c6e-5626-4598-97ab-f94303e9efe7" - }, + "_atlas": null, "_id": "" }, { @@ -2044,7 +2042,7 @@ "_srcBlendFactor": 770, "_dstBlendFactor": 771, "_spriteFrame": { - "__uuid__": "66c27f02-719e-422c-9277-42063833c0af" + "__uuid__": "4c2ac211-077a-4783-92b7-42964571ebfe" }, "_type": 0, "_sizeMode": 1, @@ -2058,7 +2056,7 @@ "_fillRange": 0, "_isTrimmedMode": true, "_atlas": { - "__uuid__": "cc01997d-495e-480d-871e-be405a6c38b5" + "__uuid__": "f2c494b7-b6df-488f-b194-358235b0f180" }, "_id": "" }, @@ -2089,7 +2087,7 @@ "_srcBlendFactor": 770, "_dstBlendFactor": 771, "_spriteFrame": { - "__uuid__": "9b80c949-4fcd-4e45-afa9-ad91683ef7b7" + "__uuid__": "1f53a670-99ab-4671-932f-3227940876cc" }, "_type": 3, "_sizeMode": 0, @@ -2103,7 +2101,7 @@ "_fillRange": 1, "_isTrimmedMode": true, "_atlas": { - "__uuid__": "cc01997d-495e-480d-871e-be405a6c38b5" + "__uuid__": "f2c494b7-b6df-488f-b194-358235b0f180" }, "_id": "" }, @@ -2266,7 +2264,7 @@ "_srcBlendFactor": 770, "_dstBlendFactor": 771, "_spriteFrame": { - "__uuid__": "66c27f02-719e-422c-9277-42063833c0af" + "__uuid__": "4c2ac211-077a-4783-92b7-42964571ebfe" }, "_type": 0, "_sizeMode": 1, @@ -2280,7 +2278,7 @@ "_fillRange": 0, "_isTrimmedMode": true, "_atlas": { - "__uuid__": "cc01997d-495e-480d-871e-be405a6c38b5" + "__uuid__": "f2c494b7-b6df-488f-b194-358235b0f180" }, "_id": "" }, @@ -2311,7 +2309,7 @@ "_srcBlendFactor": 770, "_dstBlendFactor": 771, "_spriteFrame": { - "__uuid__": "9b80c949-4fcd-4e45-afa9-ad91683ef7b7" + "__uuid__": "1f53a670-99ab-4671-932f-3227940876cc" }, "_type": 3, "_sizeMode": 0, @@ -2325,7 +2323,7 @@ "_fillRange": 1, "_isTrimmedMode": true, "_atlas": { - "__uuid__": "cc01997d-495e-480d-871e-be405a6c38b5" + "__uuid__": "f2c494b7-b6df-488f-b194-358235b0f180" }, "_id": "" }, @@ -2420,7 +2418,7 @@ "_srcBlendFactor": 770, "_dstBlendFactor": 771, "_spriteFrame": { - "__uuid__": "66c27f02-719e-422c-9277-42063833c0af" + "__uuid__": "4c2ac211-077a-4783-92b7-42964571ebfe" }, "_type": 0, "_sizeMode": 1, @@ -2434,7 +2432,7 @@ "_fillRange": 0, "_isTrimmedMode": true, "_atlas": { - "__uuid__": "cc01997d-495e-480d-871e-be405a6c38b5" + "__uuid__": "f2c494b7-b6df-488f-b194-358235b0f180" }, "_id": "" }, @@ -2529,7 +2527,7 @@ "_srcBlendFactor": 770, "_dstBlendFactor": 771, "_spriteFrame": { - "__uuid__": "66c27f02-719e-422c-9277-42063833c0af" + "__uuid__": "4c2ac211-077a-4783-92b7-42964571ebfe" }, "_type": 0, "_sizeMode": 1, @@ -2543,7 +2541,7 @@ "_fillRange": 0, "_isTrimmedMode": true, "_atlas": { - "__uuid__": "cc01997d-495e-480d-871e-be405a6c38b5" + "__uuid__": "f2c494b7-b6df-488f-b194-358235b0f180" }, "_id": "" }, @@ -2790,7 +2788,7 @@ "_srcBlendFactor": 770, "_dstBlendFactor": 771, "_spriteFrame": { - "__uuid__": "66c27f02-719e-422c-9277-42063833c0af" + "__uuid__": "4c2ac211-077a-4783-92b7-42964571ebfe" }, "_type": 0, "_sizeMode": 1, @@ -2804,7 +2802,7 @@ "_fillRange": 0, "_isTrimmedMode": true, "_atlas": { - "__uuid__": "cc01997d-495e-480d-871e-be405a6c38b5" + "__uuid__": "f2c494b7-b6df-488f-b194-358235b0f180" }, "_id": "" }, @@ -2835,7 +2833,7 @@ "_srcBlendFactor": 770, "_dstBlendFactor": 771, "_spriteFrame": { - "__uuid__": "36c23619-6422-47be-aa02-f78b7618bb3c" + "__uuid__": "b48abaaa-d7d1-45b6-8a24-8f259163122a" }, "_type": 3, "_sizeMode": 0, @@ -2849,7 +2847,7 @@ "_fillRange": 1, "_isTrimmedMode": true, "_atlas": { - "__uuid__": "cc01997d-495e-480d-871e-be405a6c38b5" + "__uuid__": "f2c494b7-b6df-488f-b194-358235b0f180" }, "_id": "" }, @@ -3012,7 +3010,7 @@ "_srcBlendFactor": 770, "_dstBlendFactor": 771, "_spriteFrame": { - "__uuid__": "66c27f02-719e-422c-9277-42063833c0af" + "__uuid__": "4c2ac211-077a-4783-92b7-42964571ebfe" }, "_type": 0, "_sizeMode": 1, @@ -3026,7 +3024,7 @@ "_fillRange": 0, "_isTrimmedMode": true, "_atlas": { - "__uuid__": "cc01997d-495e-480d-871e-be405a6c38b5" + "__uuid__": "f2c494b7-b6df-488f-b194-358235b0f180" }, "_id": "" }, @@ -3057,7 +3055,7 @@ "_srcBlendFactor": 770, "_dstBlendFactor": 771, "_spriteFrame": { - "__uuid__": "36c23619-6422-47be-aa02-f78b7618bb3c" + "__uuid__": "b48abaaa-d7d1-45b6-8a24-8f259163122a" }, "_type": 3, "_sizeMode": 0, @@ -3071,7 +3069,7 @@ "_fillRange": 1, "_isTrimmedMode": true, "_atlas": { - "__uuid__": "cc01997d-495e-480d-871e-be405a6c38b5" + "__uuid__": "f2c494b7-b6df-488f-b194-358235b0f180" }, "_id": "" }, @@ -3166,7 +3164,7 @@ "_srcBlendFactor": 770, "_dstBlendFactor": 771, "_spriteFrame": { - "__uuid__": "66c27f02-719e-422c-9277-42063833c0af" + "__uuid__": "4c2ac211-077a-4783-92b7-42964571ebfe" }, "_type": 0, "_sizeMode": 1, @@ -3180,7 +3178,7 @@ "_fillRange": 0, "_isTrimmedMode": true, "_atlas": { - "__uuid__": "cc01997d-495e-480d-871e-be405a6c38b5" + "__uuid__": "f2c494b7-b6df-488f-b194-358235b0f180" }, "_id": "" }, @@ -3275,7 +3273,7 @@ "_srcBlendFactor": 770, "_dstBlendFactor": 771, "_spriteFrame": { - "__uuid__": "66c27f02-719e-422c-9277-42063833c0af" + "__uuid__": "4c2ac211-077a-4783-92b7-42964571ebfe" }, "_type": 0, "_sizeMode": 1, @@ -3289,7 +3287,7 @@ "_fillRange": 0, "_isTrimmedMode": true, "_atlas": { - "__uuid__": "cc01997d-495e-480d-871e-be405a6c38b5" + "__uuid__": "f2c494b7-b6df-488f-b194-358235b0f180" }, "_id": "" }, @@ -3536,7 +3534,7 @@ "_srcBlendFactor": 770, "_dstBlendFactor": 771, "_spriteFrame": { - "__uuid__": "66c27f02-719e-422c-9277-42063833c0af" + "__uuid__": "4c2ac211-077a-4783-92b7-42964571ebfe" }, "_type": 0, "_sizeMode": 1, @@ -3550,7 +3548,7 @@ "_fillRange": 0, "_isTrimmedMode": true, "_atlas": { - "__uuid__": "cc01997d-495e-480d-871e-be405a6c38b5" + "__uuid__": "f2c494b7-b6df-488f-b194-358235b0f180" }, "_id": "" }, @@ -3581,7 +3579,7 @@ "_srcBlendFactor": 770, "_dstBlendFactor": 771, "_spriteFrame": { - "__uuid__": "2c8edc9c-c130-4c61-98f1-0a9b2edf3270" + "__uuid__": "e122aac4-873c-4996-bbc8-7fdbd2cd0e60" }, "_type": 3, "_sizeMode": 0, @@ -3595,7 +3593,7 @@ "_fillRange": 1, "_isTrimmedMode": true, "_atlas": { - "__uuid__": "cc01997d-495e-480d-871e-be405a6c38b5" + "__uuid__": "f2c494b7-b6df-488f-b194-358235b0f180" }, "_id": "" }, @@ -3758,7 +3756,7 @@ "_srcBlendFactor": 770, "_dstBlendFactor": 771, "_spriteFrame": { - "__uuid__": "66c27f02-719e-422c-9277-42063833c0af" + "__uuid__": "4c2ac211-077a-4783-92b7-42964571ebfe" }, "_type": 0, "_sizeMode": 1, @@ -3772,7 +3770,7 @@ "_fillRange": 0, "_isTrimmedMode": true, "_atlas": { - "__uuid__": "cc01997d-495e-480d-871e-be405a6c38b5" + "__uuid__": "f2c494b7-b6df-488f-b194-358235b0f180" }, "_id": "" }, @@ -3803,7 +3801,7 @@ "_srcBlendFactor": 770, "_dstBlendFactor": 771, "_spriteFrame": { - "__uuid__": "2c8edc9c-c130-4c61-98f1-0a9b2edf3270" + "__uuid__": "e122aac4-873c-4996-bbc8-7fdbd2cd0e60" }, "_type": 3, "_sizeMode": 0, @@ -3817,7 +3815,7 @@ "_fillRange": 1, "_isTrimmedMode": true, "_atlas": { - "__uuid__": "cc01997d-495e-480d-871e-be405a6c38b5" + "__uuid__": "f2c494b7-b6df-488f-b194-358235b0f180" }, "_id": "" }, @@ -3912,7 +3910,7 @@ "_srcBlendFactor": 770, "_dstBlendFactor": 771, "_spriteFrame": { - "__uuid__": "66c27f02-719e-422c-9277-42063833c0af" + "__uuid__": "4c2ac211-077a-4783-92b7-42964571ebfe" }, "_type": 0, "_sizeMode": 1, @@ -3926,7 +3924,7 @@ "_fillRange": 0, "_isTrimmedMode": true, "_atlas": { - "__uuid__": "cc01997d-495e-480d-871e-be405a6c38b5" + "__uuid__": "f2c494b7-b6df-488f-b194-358235b0f180" }, "_id": "" }, @@ -4021,7 +4019,7 @@ "_srcBlendFactor": 770, "_dstBlendFactor": 771, "_spriteFrame": { - "__uuid__": "66c27f02-719e-422c-9277-42063833c0af" + "__uuid__": "4c2ac211-077a-4783-92b7-42964571ebfe" }, "_type": 0, "_sizeMode": 1, @@ -4035,7 +4033,7 @@ "_fillRange": 0, "_isTrimmedMode": true, "_atlas": { - "__uuid__": "cc01997d-495e-480d-871e-be405a6c38b5" + "__uuid__": "f2c494b7-b6df-488f-b194-358235b0f180" }, "_id": "" }, diff --git a/temp/BackupAssets/assets/resources/prefab/wall/right.prefab b/temp/BackupAssets/assets/resources/prefab/wall/right.prefab index 92d5fba..15bbabb 100644 --- a/temp/BackupAssets/assets/resources/prefab/wall/right.prefab +++ b/temp/BackupAssets/assets/resources/prefab/wall/right.prefab @@ -281,7 +281,7 @@ "_srcBlendFactor": 770, "_dstBlendFactor": 771, "_spriteFrame": { - "__uuid__": "52f7fc1c-b560-4b6d-b15e-b38b6584a5d8" + "__uuid__": "4f65ed94-5d59-48ce-b94f-e199044365cf" }, "_type": 0, "_sizeMode": 1, @@ -295,7 +295,7 @@ "_fillRange": 0, "_isTrimmedMode": true, "_atlas": { - "__uuid__": "cc01997d-495e-480d-871e-be405a6c38b5" + "__uuid__": "f2c494b7-b6df-488f-b194-358235b0f180" }, "_id": "" }, @@ -315,7 +315,7 @@ "__uuid__": "f2c494b7-b6df-488f-b194-358235b0f180" }, "down_SpriteFrames": { - "__uuid__": "31479c6e-5626-4598-97ab-f94303e9efe7" + "__uuid__": "3d019ed8-3019-436d-add0-ceeb02a5baaf" }, "_id": "" }, @@ -486,9 +486,7 @@ "_fillStart": 0, "_fillRange": 0, "_isTrimmedMode": true, - "_atlas": { - "__uuid__": "31479c6e-5626-4598-97ab-f94303e9efe7" - }, + "_atlas": null, "_id": "" }, { @@ -2044,7 +2042,7 @@ "_srcBlendFactor": 770, "_dstBlendFactor": 771, "_spriteFrame": { - "__uuid__": "66c27f02-719e-422c-9277-42063833c0af" + "__uuid__": "4c2ac211-077a-4783-92b7-42964571ebfe" }, "_type": 0, "_sizeMode": 1, @@ -2058,7 +2056,7 @@ "_fillRange": 0, "_isTrimmedMode": true, "_atlas": { - "__uuid__": "cc01997d-495e-480d-871e-be405a6c38b5" + "__uuid__": "f2c494b7-b6df-488f-b194-358235b0f180" }, "_id": "" }, @@ -2089,7 +2087,7 @@ "_srcBlendFactor": 770, "_dstBlendFactor": 771, "_spriteFrame": { - "__uuid__": "9b80c949-4fcd-4e45-afa9-ad91683ef7b7" + "__uuid__": "1f53a670-99ab-4671-932f-3227940876cc" }, "_type": 3, "_sizeMode": 0, @@ -2103,7 +2101,7 @@ "_fillRange": 1, "_isTrimmedMode": true, "_atlas": { - "__uuid__": "cc01997d-495e-480d-871e-be405a6c38b5" + "__uuid__": "f2c494b7-b6df-488f-b194-358235b0f180" }, "_id": "" }, @@ -2266,7 +2264,7 @@ "_srcBlendFactor": 770, "_dstBlendFactor": 771, "_spriteFrame": { - "__uuid__": "66c27f02-719e-422c-9277-42063833c0af" + "__uuid__": "4c2ac211-077a-4783-92b7-42964571ebfe" }, "_type": 0, "_sizeMode": 1, @@ -2280,7 +2278,7 @@ "_fillRange": 0, "_isTrimmedMode": true, "_atlas": { - "__uuid__": "cc01997d-495e-480d-871e-be405a6c38b5" + "__uuid__": "f2c494b7-b6df-488f-b194-358235b0f180" }, "_id": "" }, @@ -2311,7 +2309,7 @@ "_srcBlendFactor": 770, "_dstBlendFactor": 771, "_spriteFrame": { - "__uuid__": "9b80c949-4fcd-4e45-afa9-ad91683ef7b7" + "__uuid__": "1f53a670-99ab-4671-932f-3227940876cc" }, "_type": 3, "_sizeMode": 0, @@ -2325,7 +2323,7 @@ "_fillRange": 1, "_isTrimmedMode": true, "_atlas": { - "__uuid__": "cc01997d-495e-480d-871e-be405a6c38b5" + "__uuid__": "f2c494b7-b6df-488f-b194-358235b0f180" }, "_id": "" }, @@ -2420,7 +2418,7 @@ "_srcBlendFactor": 770, "_dstBlendFactor": 771, "_spriteFrame": { - "__uuid__": "66c27f02-719e-422c-9277-42063833c0af" + "__uuid__": "4c2ac211-077a-4783-92b7-42964571ebfe" }, "_type": 0, "_sizeMode": 1, @@ -2434,7 +2432,7 @@ "_fillRange": 0, "_isTrimmedMode": true, "_atlas": { - "__uuid__": "cc01997d-495e-480d-871e-be405a6c38b5" + "__uuid__": "f2c494b7-b6df-488f-b194-358235b0f180" }, "_id": "" }, @@ -2529,7 +2527,7 @@ "_srcBlendFactor": 770, "_dstBlendFactor": 771, "_spriteFrame": { - "__uuid__": "66c27f02-719e-422c-9277-42063833c0af" + "__uuid__": "4c2ac211-077a-4783-92b7-42964571ebfe" }, "_type": 0, "_sizeMode": 1, @@ -2543,7 +2541,7 @@ "_fillRange": 0, "_isTrimmedMode": true, "_atlas": { - "__uuid__": "cc01997d-495e-480d-871e-be405a6c38b5" + "__uuid__": "f2c494b7-b6df-488f-b194-358235b0f180" }, "_id": "" }, @@ -2790,7 +2788,7 @@ "_srcBlendFactor": 770, "_dstBlendFactor": 771, "_spriteFrame": { - "__uuid__": "66c27f02-719e-422c-9277-42063833c0af" + "__uuid__": "4c2ac211-077a-4783-92b7-42964571ebfe" }, "_type": 0, "_sizeMode": 1, @@ -2804,7 +2802,7 @@ "_fillRange": 0, "_isTrimmedMode": true, "_atlas": { - "__uuid__": "cc01997d-495e-480d-871e-be405a6c38b5" + "__uuid__": "f2c494b7-b6df-488f-b194-358235b0f180" }, "_id": "" }, @@ -2835,7 +2833,7 @@ "_srcBlendFactor": 770, "_dstBlendFactor": 771, "_spriteFrame": { - "__uuid__": "36c23619-6422-47be-aa02-f78b7618bb3c" + "__uuid__": "b48abaaa-d7d1-45b6-8a24-8f259163122a" }, "_type": 3, "_sizeMode": 0, @@ -2849,7 +2847,7 @@ "_fillRange": 1, "_isTrimmedMode": true, "_atlas": { - "__uuid__": "cc01997d-495e-480d-871e-be405a6c38b5" + "__uuid__": "f2c494b7-b6df-488f-b194-358235b0f180" }, "_id": "" }, @@ -3012,7 +3010,7 @@ "_srcBlendFactor": 770, "_dstBlendFactor": 771, "_spriteFrame": { - "__uuid__": "66c27f02-719e-422c-9277-42063833c0af" + "__uuid__": "4c2ac211-077a-4783-92b7-42964571ebfe" }, "_type": 0, "_sizeMode": 1, @@ -3026,7 +3024,7 @@ "_fillRange": 0, "_isTrimmedMode": true, "_atlas": { - "__uuid__": "cc01997d-495e-480d-871e-be405a6c38b5" + "__uuid__": "f2c494b7-b6df-488f-b194-358235b0f180" }, "_id": "" }, @@ -3057,7 +3055,7 @@ "_srcBlendFactor": 770, "_dstBlendFactor": 771, "_spriteFrame": { - "__uuid__": "36c23619-6422-47be-aa02-f78b7618bb3c" + "__uuid__": "b48abaaa-d7d1-45b6-8a24-8f259163122a" }, "_type": 3, "_sizeMode": 0, @@ -3071,7 +3069,7 @@ "_fillRange": 1, "_isTrimmedMode": true, "_atlas": { - "__uuid__": "cc01997d-495e-480d-871e-be405a6c38b5" + "__uuid__": "f2c494b7-b6df-488f-b194-358235b0f180" }, "_id": "" }, @@ -3166,7 +3164,7 @@ "_srcBlendFactor": 770, "_dstBlendFactor": 771, "_spriteFrame": { - "__uuid__": "66c27f02-719e-422c-9277-42063833c0af" + "__uuid__": "4c2ac211-077a-4783-92b7-42964571ebfe" }, "_type": 0, "_sizeMode": 1, @@ -3180,7 +3178,7 @@ "_fillRange": 0, "_isTrimmedMode": true, "_atlas": { - "__uuid__": "cc01997d-495e-480d-871e-be405a6c38b5" + "__uuid__": "f2c494b7-b6df-488f-b194-358235b0f180" }, "_id": "" }, @@ -3275,7 +3273,7 @@ "_srcBlendFactor": 770, "_dstBlendFactor": 771, "_spriteFrame": { - "__uuid__": "66c27f02-719e-422c-9277-42063833c0af" + "__uuid__": "4c2ac211-077a-4783-92b7-42964571ebfe" }, "_type": 0, "_sizeMode": 1, @@ -3289,7 +3287,7 @@ "_fillRange": 0, "_isTrimmedMode": true, "_atlas": { - "__uuid__": "cc01997d-495e-480d-871e-be405a6c38b5" + "__uuid__": "f2c494b7-b6df-488f-b194-358235b0f180" }, "_id": "" }, @@ -3536,7 +3534,7 @@ "_srcBlendFactor": 770, "_dstBlendFactor": 771, "_spriteFrame": { - "__uuid__": "66c27f02-719e-422c-9277-42063833c0af" + "__uuid__": "4c2ac211-077a-4783-92b7-42964571ebfe" }, "_type": 0, "_sizeMode": 1, @@ -3550,7 +3548,7 @@ "_fillRange": 0, "_isTrimmedMode": true, "_atlas": { - "__uuid__": "cc01997d-495e-480d-871e-be405a6c38b5" + "__uuid__": "f2c494b7-b6df-488f-b194-358235b0f180" }, "_id": "" }, @@ -3581,7 +3579,7 @@ "_srcBlendFactor": 770, "_dstBlendFactor": 771, "_spriteFrame": { - "__uuid__": "2c8edc9c-c130-4c61-98f1-0a9b2edf3270" + "__uuid__": "e122aac4-873c-4996-bbc8-7fdbd2cd0e60" }, "_type": 3, "_sizeMode": 0, @@ -3595,7 +3593,7 @@ "_fillRange": 1, "_isTrimmedMode": true, "_atlas": { - "__uuid__": "cc01997d-495e-480d-871e-be405a6c38b5" + "__uuid__": "f2c494b7-b6df-488f-b194-358235b0f180" }, "_id": "" }, @@ -3758,7 +3756,7 @@ "_srcBlendFactor": 770, "_dstBlendFactor": 771, "_spriteFrame": { - "__uuid__": "66c27f02-719e-422c-9277-42063833c0af" + "__uuid__": "4c2ac211-077a-4783-92b7-42964571ebfe" }, "_type": 0, "_sizeMode": 1, @@ -3772,7 +3770,7 @@ "_fillRange": 0, "_isTrimmedMode": true, "_atlas": { - "__uuid__": "cc01997d-495e-480d-871e-be405a6c38b5" + "__uuid__": "f2c494b7-b6df-488f-b194-358235b0f180" }, "_id": "" }, @@ -3803,7 +3801,7 @@ "_srcBlendFactor": 770, "_dstBlendFactor": 771, "_spriteFrame": { - "__uuid__": "2c8edc9c-c130-4c61-98f1-0a9b2edf3270" + "__uuid__": "e122aac4-873c-4996-bbc8-7fdbd2cd0e60" }, "_type": 3, "_sizeMode": 0, @@ -3817,7 +3815,7 @@ "_fillRange": 1, "_isTrimmedMode": true, "_atlas": { - "__uuid__": "cc01997d-495e-480d-871e-be405a6c38b5" + "__uuid__": "f2c494b7-b6df-488f-b194-358235b0f180" }, "_id": "" }, @@ -3912,7 +3910,7 @@ "_srcBlendFactor": 770, "_dstBlendFactor": 771, "_spriteFrame": { - "__uuid__": "66c27f02-719e-422c-9277-42063833c0af" + "__uuid__": "4c2ac211-077a-4783-92b7-42964571ebfe" }, "_type": 0, "_sizeMode": 1, @@ -3926,7 +3924,7 @@ "_fillRange": 0, "_isTrimmedMode": true, "_atlas": { - "__uuid__": "cc01997d-495e-480d-871e-be405a6c38b5" + "__uuid__": "f2c494b7-b6df-488f-b194-358235b0f180" }, "_id": "" }, @@ -4021,7 +4019,7 @@ "_srcBlendFactor": 770, "_dstBlendFactor": 771, "_spriteFrame": { - "__uuid__": "66c27f02-719e-422c-9277-42063833c0af" + "__uuid__": "4c2ac211-077a-4783-92b7-42964571ebfe" }, "_type": 0, "_sizeMode": 1, @@ -4035,7 +4033,7 @@ "_fillRange": 0, "_isTrimmedMode": true, "_atlas": { - "__uuid__": "cc01997d-495e-480d-871e-be405a6c38b5" + "__uuid__": "f2c494b7-b6df-488f-b194-358235b0f180" }, "_id": "" }, diff --git a/temp/BackupAssets/assets/resources/prefab/wall/up.prefab b/temp/BackupAssets/assets/resources/prefab/wall/up.prefab index 428c968..03d8208 100644 --- a/temp/BackupAssets/assets/resources/prefab/wall/up.prefab +++ b/temp/BackupAssets/assets/resources/prefab/wall/up.prefab @@ -281,7 +281,7 @@ "_srcBlendFactor": 770, "_dstBlendFactor": 771, "_spriteFrame": { - "__uuid__": "fc8fd6fa-3cc2-4a69-a2f7-2c521de510b1" + "__uuid__": "6db2aafd-c221-4be9-a20b-5bb361fe22ef" }, "_type": 0, "_sizeMode": 1, @@ -295,7 +295,7 @@ "_fillRange": 0, "_isTrimmedMode": true, "_atlas": { - "__uuid__": "cc01997d-495e-480d-871e-be405a6c38b5" + "__uuid__": "f2c494b7-b6df-488f-b194-358235b0f180" }, "_id": "" }, @@ -315,7 +315,7 @@ "__uuid__": "f2c494b7-b6df-488f-b194-358235b0f180" }, "down_SpriteFrames": { - "__uuid__": "31479c6e-5626-4598-97ab-f94303e9efe7" + "__uuid__": "3d019ed8-3019-436d-add0-ceeb02a5baaf" }, "_id": "" }, @@ -2042,7 +2042,7 @@ "_srcBlendFactor": 770, "_dstBlendFactor": 771, "_spriteFrame": { - "__uuid__": "66c27f02-719e-422c-9277-42063833c0af" + "__uuid__": "4c2ac211-077a-4783-92b7-42964571ebfe" }, "_type": 0, "_sizeMode": 1, @@ -2056,7 +2056,7 @@ "_fillRange": 0, "_isTrimmedMode": true, "_atlas": { - "__uuid__": "cc01997d-495e-480d-871e-be405a6c38b5" + "__uuid__": "f2c494b7-b6df-488f-b194-358235b0f180" }, "_id": "" }, @@ -2087,7 +2087,7 @@ "_srcBlendFactor": 770, "_dstBlendFactor": 771, "_spriteFrame": { - "__uuid__": "9b80c949-4fcd-4e45-afa9-ad91683ef7b7" + "__uuid__": "1f53a670-99ab-4671-932f-3227940876cc" }, "_type": 3, "_sizeMode": 0, @@ -2101,7 +2101,7 @@ "_fillRange": 1, "_isTrimmedMode": true, "_atlas": { - "__uuid__": "cc01997d-495e-480d-871e-be405a6c38b5" + "__uuid__": "f2c494b7-b6df-488f-b194-358235b0f180" }, "_id": "" }, @@ -2264,7 +2264,7 @@ "_srcBlendFactor": 770, "_dstBlendFactor": 771, "_spriteFrame": { - "__uuid__": "66c27f02-719e-422c-9277-42063833c0af" + "__uuid__": "4c2ac211-077a-4783-92b7-42964571ebfe" }, "_type": 0, "_sizeMode": 1, @@ -2278,7 +2278,7 @@ "_fillRange": 0, "_isTrimmedMode": true, "_atlas": { - "__uuid__": "cc01997d-495e-480d-871e-be405a6c38b5" + "__uuid__": "f2c494b7-b6df-488f-b194-358235b0f180" }, "_id": "" }, @@ -2309,7 +2309,7 @@ "_srcBlendFactor": 770, "_dstBlendFactor": 771, "_spriteFrame": { - "__uuid__": "9b80c949-4fcd-4e45-afa9-ad91683ef7b7" + "__uuid__": "1f53a670-99ab-4671-932f-3227940876cc" }, "_type": 3, "_sizeMode": 0, @@ -2323,7 +2323,7 @@ "_fillRange": 1, "_isTrimmedMode": true, "_atlas": { - "__uuid__": "cc01997d-495e-480d-871e-be405a6c38b5" + "__uuid__": "f2c494b7-b6df-488f-b194-358235b0f180" }, "_id": "" }, @@ -2418,7 +2418,7 @@ "_srcBlendFactor": 770, "_dstBlendFactor": 771, "_spriteFrame": { - "__uuid__": "66c27f02-719e-422c-9277-42063833c0af" + "__uuid__": "4c2ac211-077a-4783-92b7-42964571ebfe" }, "_type": 0, "_sizeMode": 1, @@ -2432,7 +2432,7 @@ "_fillRange": 0, "_isTrimmedMode": true, "_atlas": { - "__uuid__": "cc01997d-495e-480d-871e-be405a6c38b5" + "__uuid__": "f2c494b7-b6df-488f-b194-358235b0f180" }, "_id": "" }, @@ -2527,7 +2527,7 @@ "_srcBlendFactor": 770, "_dstBlendFactor": 771, "_spriteFrame": { - "__uuid__": "66c27f02-719e-422c-9277-42063833c0af" + "__uuid__": "4c2ac211-077a-4783-92b7-42964571ebfe" }, "_type": 0, "_sizeMode": 1, @@ -2541,7 +2541,7 @@ "_fillRange": 0, "_isTrimmedMode": true, "_atlas": { - "__uuid__": "cc01997d-495e-480d-871e-be405a6c38b5" + "__uuid__": "f2c494b7-b6df-488f-b194-358235b0f180" }, "_id": "" }, @@ -2788,7 +2788,7 @@ "_srcBlendFactor": 770, "_dstBlendFactor": 771, "_spriteFrame": { - "__uuid__": "66c27f02-719e-422c-9277-42063833c0af" + "__uuid__": "4c2ac211-077a-4783-92b7-42964571ebfe" }, "_type": 0, "_sizeMode": 1, @@ -2802,7 +2802,7 @@ "_fillRange": 0, "_isTrimmedMode": true, "_atlas": { - "__uuid__": "cc01997d-495e-480d-871e-be405a6c38b5" + "__uuid__": "f2c494b7-b6df-488f-b194-358235b0f180" }, "_id": "" }, @@ -2833,7 +2833,7 @@ "_srcBlendFactor": 770, "_dstBlendFactor": 771, "_spriteFrame": { - "__uuid__": "36c23619-6422-47be-aa02-f78b7618bb3c" + "__uuid__": "b48abaaa-d7d1-45b6-8a24-8f259163122a" }, "_type": 3, "_sizeMode": 0, @@ -2847,7 +2847,7 @@ "_fillRange": 1, "_isTrimmedMode": true, "_atlas": { - "__uuid__": "cc01997d-495e-480d-871e-be405a6c38b5" + "__uuid__": "f2c494b7-b6df-488f-b194-358235b0f180" }, "_id": "" }, @@ -3010,7 +3010,7 @@ "_srcBlendFactor": 770, "_dstBlendFactor": 771, "_spriteFrame": { - "__uuid__": "66c27f02-719e-422c-9277-42063833c0af" + "__uuid__": "4c2ac211-077a-4783-92b7-42964571ebfe" }, "_type": 0, "_sizeMode": 1, @@ -3024,7 +3024,7 @@ "_fillRange": 0, "_isTrimmedMode": true, "_atlas": { - "__uuid__": "cc01997d-495e-480d-871e-be405a6c38b5" + "__uuid__": "f2c494b7-b6df-488f-b194-358235b0f180" }, "_id": "" }, @@ -3055,7 +3055,7 @@ "_srcBlendFactor": 770, "_dstBlendFactor": 771, "_spriteFrame": { - "__uuid__": "36c23619-6422-47be-aa02-f78b7618bb3c" + "__uuid__": "b48abaaa-d7d1-45b6-8a24-8f259163122a" }, "_type": 3, "_sizeMode": 0, @@ -3069,7 +3069,7 @@ "_fillRange": 1, "_isTrimmedMode": true, "_atlas": { - "__uuid__": "cc01997d-495e-480d-871e-be405a6c38b5" + "__uuid__": "f2c494b7-b6df-488f-b194-358235b0f180" }, "_id": "" }, @@ -3164,7 +3164,7 @@ "_srcBlendFactor": 770, "_dstBlendFactor": 771, "_spriteFrame": { - "__uuid__": "66c27f02-719e-422c-9277-42063833c0af" + "__uuid__": "4c2ac211-077a-4783-92b7-42964571ebfe" }, "_type": 0, "_sizeMode": 1, @@ -3178,7 +3178,7 @@ "_fillRange": 0, "_isTrimmedMode": true, "_atlas": { - "__uuid__": "cc01997d-495e-480d-871e-be405a6c38b5" + "__uuid__": "f2c494b7-b6df-488f-b194-358235b0f180" }, "_id": "" }, @@ -3273,7 +3273,7 @@ "_srcBlendFactor": 770, "_dstBlendFactor": 771, "_spriteFrame": { - "__uuid__": "66c27f02-719e-422c-9277-42063833c0af" + "__uuid__": "4c2ac211-077a-4783-92b7-42964571ebfe" }, "_type": 0, "_sizeMode": 1, @@ -3287,7 +3287,7 @@ "_fillRange": 0, "_isTrimmedMode": true, "_atlas": { - "__uuid__": "cc01997d-495e-480d-871e-be405a6c38b5" + "__uuid__": "f2c494b7-b6df-488f-b194-358235b0f180" }, "_id": "" }, @@ -3534,7 +3534,7 @@ "_srcBlendFactor": 770, "_dstBlendFactor": 771, "_spriteFrame": { - "__uuid__": "66c27f02-719e-422c-9277-42063833c0af" + "__uuid__": "4c2ac211-077a-4783-92b7-42964571ebfe" }, "_type": 0, "_sizeMode": 1, @@ -3548,7 +3548,7 @@ "_fillRange": 0, "_isTrimmedMode": true, "_atlas": { - "__uuid__": "cc01997d-495e-480d-871e-be405a6c38b5" + "__uuid__": "f2c494b7-b6df-488f-b194-358235b0f180" }, "_id": "" }, @@ -3579,7 +3579,7 @@ "_srcBlendFactor": 770, "_dstBlendFactor": 771, "_spriteFrame": { - "__uuid__": "2c8edc9c-c130-4c61-98f1-0a9b2edf3270" + "__uuid__": "e122aac4-873c-4996-bbc8-7fdbd2cd0e60" }, "_type": 3, "_sizeMode": 0, @@ -3593,7 +3593,7 @@ "_fillRange": 1, "_isTrimmedMode": true, "_atlas": { - "__uuid__": "cc01997d-495e-480d-871e-be405a6c38b5" + "__uuid__": "f2c494b7-b6df-488f-b194-358235b0f180" }, "_id": "" }, @@ -3756,7 +3756,7 @@ "_srcBlendFactor": 770, "_dstBlendFactor": 771, "_spriteFrame": { - "__uuid__": "66c27f02-719e-422c-9277-42063833c0af" + "__uuid__": "4c2ac211-077a-4783-92b7-42964571ebfe" }, "_type": 0, "_sizeMode": 1, @@ -3770,7 +3770,7 @@ "_fillRange": 0, "_isTrimmedMode": true, "_atlas": { - "__uuid__": "cc01997d-495e-480d-871e-be405a6c38b5" + "__uuid__": "f2c494b7-b6df-488f-b194-358235b0f180" }, "_id": "" }, @@ -3801,7 +3801,7 @@ "_srcBlendFactor": 770, "_dstBlendFactor": 771, "_spriteFrame": { - "__uuid__": "2c8edc9c-c130-4c61-98f1-0a9b2edf3270" + "__uuid__": "e122aac4-873c-4996-bbc8-7fdbd2cd0e60" }, "_type": 3, "_sizeMode": 0, @@ -3815,7 +3815,7 @@ "_fillRange": 1, "_isTrimmedMode": true, "_atlas": { - "__uuid__": "cc01997d-495e-480d-871e-be405a6c38b5" + "__uuid__": "f2c494b7-b6df-488f-b194-358235b0f180" }, "_id": "" }, @@ -3910,7 +3910,7 @@ "_srcBlendFactor": 770, "_dstBlendFactor": 771, "_spriteFrame": { - "__uuid__": "66c27f02-719e-422c-9277-42063833c0af" + "__uuid__": "4c2ac211-077a-4783-92b7-42964571ebfe" }, "_type": 0, "_sizeMode": 1, @@ -3924,7 +3924,7 @@ "_fillRange": 0, "_isTrimmedMode": true, "_atlas": { - "__uuid__": "cc01997d-495e-480d-871e-be405a6c38b5" + "__uuid__": "f2c494b7-b6df-488f-b194-358235b0f180" }, "_id": "" }, @@ -4019,7 +4019,7 @@ "_srcBlendFactor": 770, "_dstBlendFactor": 771, "_spriteFrame": { - "__uuid__": "66c27f02-719e-422c-9277-42063833c0af" + "__uuid__": "4c2ac211-077a-4783-92b7-42964571ebfe" }, "_type": 0, "_sizeMode": 1, @@ -4033,7 +4033,7 @@ "_fillRange": 0, "_isTrimmedMode": true, "_atlas": { - "__uuid__": "cc01997d-495e-480d-871e-be405a6c38b5" + "__uuid__": "f2c494b7-b6df-488f-b194-358235b0f180" }, "_id": "" }, diff --git a/temp/BackupAssets/assets/resources/prefab/wall/upLeft.prefab b/temp/BackupAssets/assets/resources/prefab/wall/upLeft.prefab index f4120aa..5cca3fa 100644 --- a/temp/BackupAssets/assets/resources/prefab/wall/upLeft.prefab +++ b/temp/BackupAssets/assets/resources/prefab/wall/upLeft.prefab @@ -159,7 +159,7 @@ "_srcBlendFactor": 770, "_dstBlendFactor": 771, "_spriteFrame": { - "__uuid__": "865e12b4-8506-4026-ab52-9c8421100cc4" + "__uuid__": "232d4cf2-be5a-4a98-8d4d-10edb8325e08" }, "_type": 0, "_sizeMode": 1, @@ -173,7 +173,7 @@ "_fillRange": 0, "_isTrimmedMode": true, "_atlas": { - "__uuid__": "cc01997d-495e-480d-871e-be405a6c38b5" + "__uuid__": "f2c494b7-b6df-488f-b194-358235b0f180" }, "_id": "" }, diff --git a/temp/BackupAssets/assets/resources/prefab/wall/upRight.prefab b/temp/BackupAssets/assets/resources/prefab/wall/upRight.prefab index a906bb2..6dba6af 100644 --- a/temp/BackupAssets/assets/resources/prefab/wall/upRight.prefab +++ b/temp/BackupAssets/assets/resources/prefab/wall/upRight.prefab @@ -159,7 +159,7 @@ "_srcBlendFactor": 770, "_dstBlendFactor": 771, "_spriteFrame": { - "__uuid__": "02a22e2f-85e0-4ce1-a955-6ea4bf514319" + "__uuid__": "b679c771-a901-4df3-a592-4ebd4cad002e" }, "_type": 0, "_sizeMode": 1, @@ -173,7 +173,7 @@ "_fillRange": 0, "_isTrimmedMode": true, "_atlas": { - "__uuid__": "cc01997d-495e-480d-871e-be405a6c38b5" + "__uuid__": "f2c494b7-b6df-488f-b194-358235b0f180" }, "_id": "" }, diff --git a/temp/BackupAssets/assets/shop/prefab/shop.prefab b/temp/BackupAssets/assets/shop/prefab/shop.prefab index 4110e6c..8f08ff7 100644 --- a/temp/BackupAssets/assets/shop/prefab/shop.prefab +++ b/temp/BackupAssets/assets/shop/prefab/shop.prefab @@ -46,16 +46,19 @@ }, { "__id__": 212 + }, + { + "__id__": 216 } ], "_active": true, "_components": [ { - "__id__": 216 + "__id__": 219 } ], "_prefab": { - "__id__": 217 + "__id__": 220 }, "_opacity": 255, "_color": { @@ -255,7 +258,7 @@ "_contentSize": { "__type__": "cc.Size", "width": 1080, - "height": 2340 + "height": 1920 }, "_anchorPoint": { "__type__": "cc.Vec2", @@ -338,8 +341,8 @@ "_alignFlags": 45, "_left": 0, "_right": 0, - "_top": -210, - "_bottom": -210, + "_top": 0, + "_bottom": 0, "_verticalCenter": 0, "_horizontalCenter": 0, "_isAbsLeft": true, @@ -3208,7 +3211,7 @@ "_N$verticalAlign": 1, "_N$fontFamily": "Arial", "_N$overflow": 0, - "_N$cacheMode": 0, + "_N$cacheMode": 1, "_id": "" }, { @@ -3319,7 +3322,7 @@ "_N$verticalAlign": 1, "_N$fontFamily": "Arial", "_N$overflow": 0, - "_N$cacheMode": 0, + "_N$cacheMode": 1, "_id": "" }, { @@ -3773,7 +3776,7 @@ "_N$verticalAlign": 1, "_N$fontFamily": "Arial", "_N$overflow": 0, - "_N$cacheMode": 0, + "_N$cacheMode": 1, "_id": "" }, { @@ -3884,7 +3887,7 @@ "_N$verticalAlign": 1, "_N$fontFamily": "Arial", "_N$overflow": 0, - "_N$cacheMode": 0, + "_N$cacheMode": 1, "_id": "" }, { @@ -4338,7 +4341,7 @@ "_N$verticalAlign": 1, "_N$fontFamily": "Arial", "_N$overflow": 0, - "_N$cacheMode": 0, + "_N$cacheMode": 1, "_id": "" }, { @@ -4449,7 +4452,7 @@ "_N$verticalAlign": 1, "_N$fontFamily": "Arial", "_N$overflow": 0, - "_N$cacheMode": 0, + "_N$cacheMode": 1, "_id": "" }, { @@ -4903,7 +4906,7 @@ "_N$verticalAlign": 1, "_N$fontFamily": "Arial", "_N$overflow": 0, - "_N$cacheMode": 0, + "_N$cacheMode": 1, "_id": "" }, { @@ -5014,7 +5017,7 @@ "_N$verticalAlign": 1, "_N$fontFamily": "Arial", "_N$overflow": 0, - "_N$cacheMode": 0, + "_N$cacheMode": 1, "_id": "" }, { @@ -5468,7 +5471,7 @@ "_N$verticalAlign": 1, "_N$fontFamily": "Arial", "_N$overflow": 0, - "_N$cacheMode": 0, + "_N$cacheMode": 1, "_id": "" }, { @@ -5579,7 +5582,7 @@ "_N$verticalAlign": 1, "_N$fontFamily": "Arial", "_N$overflow": 0, - "_N$cacheMode": 0, + "_N$cacheMode": 1, "_id": "" }, { @@ -6033,7 +6036,7 @@ "_N$verticalAlign": 1, "_N$fontFamily": "Arial", "_N$overflow": 0, - "_N$cacheMode": 0, + "_N$cacheMode": 1, "_id": "" }, { @@ -6144,7 +6147,7 @@ "_N$verticalAlign": 1, "_N$fontFamily": "Arial", "_N$overflow": 0, - "_N$cacheMode": 0, + "_N$cacheMode": 1, "_id": "" }, { @@ -6598,7 +6601,7 @@ "_N$verticalAlign": 1, "_N$fontFamily": "Arial", "_N$overflow": 0, - "_N$cacheMode": 0, + "_N$cacheMode": 1, "_id": "" }, { @@ -6709,7 +6712,7 @@ "_N$verticalAlign": 1, "_N$fontFamily": "Arial", "_N$overflow": 0, - "_N$cacheMode": 0, + "_N$cacheMode": 1, "_id": "" }, { @@ -7163,7 +7166,7 @@ "_N$verticalAlign": 1, "_N$fontFamily": "Arial", "_N$overflow": 0, - "_N$cacheMode": 0, + "_N$cacheMode": 1, "_id": "" }, { @@ -7274,7 +7277,7 @@ "_N$verticalAlign": 1, "_N$fontFamily": "Arial", "_N$overflow": 0, - "_N$cacheMode": 0, + "_N$cacheMode": 1, "_id": "" }, { @@ -7745,6 +7748,108 @@ "fileId": "c5IbgSqWhDerwgA0hdz30t", "sync": false }, + { + "__type__": "cc.Node", + "_name": "Top", + "_objFlags": 0, + "_parent": { + "__id__": 1 + }, + "_children": [], + "_active": true, + "_components": [ + { + "__id__": 217 + } + ], + "_prefab": { + "__id__": 218 + }, + "_opacity": 255, + "_color": { + "__type__": "cc.Color", + "r": 255, + "g": 255, + "b": 255, + "a": 255 + }, + "_contentSize": { + "__type__": "cc.Size", + "width": 0, + "height": 0 + }, + "_anchorPoint": { + "__type__": "cc.Vec2", + "x": 0.5, + "y": 0.5 + }, + "_trs": { + "__type__": "TypedArray", + "ctor": "Float64Array", + "array": [ + 0, + 0, + 0, + 0, + 0, + 0, + 1, + 1, + 1, + 1 + ] + }, + "_eulerAngles": { + "__type__": "cc.Vec3", + "x": 0, + "y": 0, + "z": 0 + }, + "_skewX": 0, + "_skewY": 0, + "_is3DNode": false, + "_groupIndex": 0, + "groupIndex": 0, + "_id": "" + }, + { + "__type__": "cc.Widget", + "_name": "", + "_objFlags": 0, + "node": { + "__id__": 216 + }, + "_enabled": true, + "alignMode": 1, + "_target": null, + "_alignFlags": 0, + "_left": 0, + "_right": 0, + "_top": 0, + "_bottom": 0, + "_verticalCenter": 0, + "_horizontalCenter": 0, + "_isAbsLeft": true, + "_isAbsRight": true, + "_isAbsTop": true, + "_isAbsBottom": true, + "_isAbsHorizontalCenter": true, + "_isAbsVerticalCenter": true, + "_originalWidth": 0, + "_originalHeight": 0, + "_id": "" + }, + { + "__type__": "cc.PrefabInfo", + "root": { + "__id__": 1 + }, + "asset": { + "__id__": 0 + }, + "fileId": "e5881p4DhA2o2G5SieRWXh", + "sync": false + }, { "__type__": "48bfeZuYFZE2qmgxbW2IigB", "_name": "", diff --git a/temp/RemovedMetas/res/texture_Block.meta b/temp/RemovedMetas/res/texture_Block.meta index c4b4dcc..8e877c4 100644 --- a/temp/RemovedMetas/res/texture_Block.meta +++ b/temp/RemovedMetas/res/texture_Block.meta @@ -1,6 +1,6 @@ { "ver": "1.1.3", - "uuid": "79bddc67-afa7-4275-9dc3-a2986648eeff", + "uuid": "7ce7d94e-eee5-4a87-8fe8-ec9f17766357", "importer": "folder", "isBundle": false, "bundleName": "", diff --git a/assets/res/texture_Block/down.png.meta b/temp/RemovedMetas/res/texture_Block/down.png.meta similarity index 100% rename from assets/res/texture_Block/down.png.meta rename to temp/RemovedMetas/res/texture_Block/down.png.meta diff --git a/temp/quick-scripts/dst/__file_stats__.json b/temp/quick-scripts/dst/__file_stats__.json index ec0bca6..0db052c 100644 --- a/temp/quick-scripts/dst/__file_stats__.json +++ b/temp/quick-scripts/dst/__file_stats__.json @@ -1,5 +1 @@ -<<<<<<< HEAD -{"version":"1.0.8","stats":{"C:/Work/Project/cb/temp/quick-scripts/src/__qc_index__.js":"2025-06-30T03:31:18.892Z","C:/Work/Project/cb/temp/quick-scripts/src/assets/Script/Sdk/MiniGameManager.js":"2025-06-30T03:31:18.585Z","C:/Work/Project/cb/temp/quick-scripts/src/assets/Script/lq_base/util/lq_game_util.js":"2025-06-30T03:31:18.636Z","C:/Work/Project/cb/temp/quick-scripts/src/assets/Script/module/Crypto/HttpUtil.js":"2025-06-30T03:31:18.646Z","C:/Work/Project/cb/temp/quick-scripts/src/tiledmap-optimize-resource/Script/TmoTiledLayer.js":"2025-06-30T03:31:18.704Z","C:/Work/Project/cb/temp/quick-scripts/src/assets/Script/CollisionDetection.js":"2025-06-30T03:31:18.761Z","C:/Work/Project/cb/temp/quick-scripts/src/assets/Script/prop/Star.js":"2025-06-30T03:31:18.706Z","C:/Work/Project/cb/temp/quick-scripts/src/assets/Script/lq_collide_system/lq_collide_base.js":"2025-06-30T03:31:18.684Z","C:/Work/Project/cb/temp/quick-scripts/src/assets/migration/use_v2.1-2.2.1_cc.Toggle_event_1.js":"2025-06-30T03:31:18.690Z","C:/Work/Project/cb/temp/quick-scripts/src/assets/animation/NewScript.js":"2025-06-30T03:31:18.593Z","C:/Work/Project/cb/temp/quick-scripts/src/assets/Script/lq_base/data/lq_interface.js":"2025-06-30T03:31:18.607Z","C:/Work/Project/cb/temp/quick-scripts/src/assets/effect/融化.js":"2025-06-30T03:31:18.597Z","C:/Work/Project/cb/temp/quick-scripts/src/assets/Script/module/Notification/Notification.js":"2025-06-30T03:31:18.624Z","C:/Work/Project/cb/temp/quick-scripts/src/assets/Script/module/Storage/Storage.js":"2025-06-30T03:31:18.587Z","C:/Work/Project/cb/temp/quick-scripts/src/assets/Script/module/GameStart/GameAppStart.js":"2025-06-30T03:31:18.635Z","C:/Work/Project/cb/temp/quick-scripts/src/assets/Script/module/RankList/List.js":"2025-06-30T03:31:18.702Z","C:/Work/Project/cb/temp/quick-scripts/src/assets/Script/module/Config/GameConfig.js":"2025-06-30T03:31:18.686Z","C:/Work/Project/cb/temp/quick-scripts/src/assets/Script/DynamicAtlasManager.js":"2025-06-30T03:31:18.628Z","C:/Work/Project/cb/temp/quick-scripts/src/assets/Script/module/Music/AudioManager.js":"2025-06-30T03:31:18.626Z","C:/Work/Project/cb/temp/quick-scripts/src/assets/Script/module/Tool/GameTool.js":"2025-06-30T03:31:18.610Z","C:/Work/Project/cb/temp/quick-scripts/src/assets/Script/module/Share/share.js":"2025-06-30T03:31:18.643Z","C:/Work/Project/cb/temp/quick-scripts/src/assets/Script/Load.js":"2025-06-30T03:31:18.615Z","C:/Work/Project/cb/temp/quick-scripts/src/assets/Script/ControlManager.js":"2025-06-30T03:31:18.722Z","C:/Work/Project/cb/temp/quick-scripts/src/assets/Script/JiaZai.js":"2025-06-30T03:31:18.590Z","C:/Work/Project/cb/temp/quick-scripts/src/assets/Script/NumberToImage.js":"2025-06-30T03:31:18.639Z","C:/Work/Project/cb/temp/quick-scripts/src/assets/Script/GameManager.js":"2025-06-30T03:31:18.709Z","C:/Work/Project/cb/temp/quick-scripts/src/assets/Script/Pause.js":"2025-06-30T03:31:18.677Z","C:/Work/Project/cb/temp/quick-scripts/src/assets/Script/GameScene.js":"2025-06-30T03:31:18.759Z","C:/Work/Project/cb/temp/quick-scripts/src/assets/Script/NewMode.js":"2025-06-30T03:31:18.653Z","C:/Work/Project/cb/temp/quick-scripts/src/assets/Script/SceneManager.js":"2025-06-30T03:31:18.657Z","C:/Work/Project/cb/temp/quick-scripts/src/assets/Script/MapBlock.js":"2025-06-30T03:31:18.621Z","C:/Work/Project/cb/temp/quick-scripts/src/assets/Script/Sdk/DouyinEntranceView.js":"2025-06-30T03:31:18.664Z","C:/Work/Project/cb/temp/quick-scripts/src/assets/Script/RankManager.js":"2025-06-30T03:31:18.756Z","C:/Work/Project/cb/temp/quick-scripts/src/assets/Script/Map.js":"2025-06-30T03:31:18.591Z","C:/Work/Project/cb/temp/quick-scripts/src/assets/Script/peizhi.js":"2025-06-30T03:31:18.651Z","C:/Work/Project/cb/temp/quick-scripts/src/assets/Script/Reduce.js":"2025-06-30T03:31:18.696Z","C:/Work/Project/cb/temp/quick-scripts/src/assets/Script/GameOver.js":"2025-06-30T03:31:18.655Z","C:/Work/Project/cb/temp/quick-scripts/src/assets/Script/btnControl.js":"2025-06-30T03:31:18.641Z","C:/Work/Project/cb/temp/quick-scripts/src/assets/Script/position.js":"2025-06-30T03:31:18.711Z","C:/Work/Project/cb/temp/quick-scripts/src/assets/Script/Window.js":"2025-06-30T03:31:18.603Z","C:/Work/Project/cb/temp/quick-scripts/src/assets/Script/Wall.js":"2025-06-30T03:31:18.661Z","C:/Work/Project/cb/temp/quick-scripts/src/assets/Script/prop/Lock.js":"2025-06-30T03:31:18.606Z","C:/Work/Project/cb/temp/quick-scripts/src/assets/Script/Sdk/MiniGameSdk.js":"2025-06-30T03:31:18.681Z","C:/Work/Project/cb/temp/quick-scripts/src/assets/Script/lq_collide_system/lq_collide_system.js":"2025-06-30T03:31:18.659Z","C:/Work/Project/cb/temp/quick-scripts/src/assets/Script/prop/Key.js":"2025-06-30T03:31:18.668Z","C:/Work/Project/cb/temp/quick-scripts/src/assets/Script/Barrier.js":"2025-06-30T03:31:18.666Z","C:/Work/Project/cb/temp/quick-scripts/src/assets/Script/prop/Boom.js":"2025-06-30T03:31:18.605Z","C:/Work/Project/cb/temp/quick-scripts/src/assets/Script/prop/Freeze.js":"2025-06-30T03:31:18.679Z","C:/Work/Project/cb/temp/quick-scripts/src/assets/Script/prop/Adhesive.js":"2025-06-30T03:31:18.631Z","C:/Work/Project/cb/temp/quick-scripts/src/assets/Script/lq_collide_system/lq_collide_config.js":"2025-06-30T03:31:18.618Z","C:/Work/Project/cb/temp/quick-scripts/src/assets/migration/use_v2.1-2.2.1_cc.Toggle_event.js":"2025-06-30T03:31:18.649Z","C:/Work/Project/cb/temp/quick-scripts/src/assets/Script/lq_collide_system/lq_collide.js":"2025-06-30T03:31:18.699Z","C:/Work/Project/cb/temp/quick-scripts/src/assets/Script/lq_base/util/lq_base_util.js":"2025-06-30T03:31:18.697Z","C:/Work/Project/cb/temp/quick-scripts/src/assets/Script/Block.js":"2025-06-30T03:31:18.687Z","C:/Work/Project/cb/temp/quick-scripts/src/assets/Script/lq_base/data/lq_const.js":"2025-06-30T03:31:18.669Z","C:/Work/Project/cb/temp/quick-scripts/src/assets/Script/lq_base/util/lq_math_util.js":"2025-06-30T03:31:18.672Z","C:/Work/Project/cb/temp/quick-scripts/src/assets/Script/lq_base/data/lq_data.js":"2025-06-30T03:31:18.674Z","C:/Work/Project/cb/temp/quick-scripts/src/assets/Script/lq_base/util/lq_platform_util.js":"2025-06-30T03:31:18.601Z","C:/Work/Project/cb/temp/quick-scripts/src/assets/Script/lq_base/util/lq_pool_util.js":"2025-06-30T03:31:18.671Z","C:/Work/Project/cb/temp/quick-scripts/src/assets/Script/module/Crypto/crypto-js.min.js":"2025-06-30T03:31:18.739Z","C:/Work/Project/cb/temp/quick-scripts/src/assets/Script/module/RankList/ItemRender.js":"2025-06-30T03:31:18.694Z","C:/Work/Project/cb/temp/quick-scripts/src/tiledmap-optimize-resource/Script/TmoAssembler.js":"2025-06-30T03:31:18.588Z","C:/Work/Project/cb/temp/quick-scripts/src/tiledmap-optimize-resource/Script/TmoSprite.js":"2025-06-30T03:31:18.620Z","C:/Work/Project/cb/temp/quick-scripts/src/tiledmap-optimize-resource/Script/TmoTiledMap.js":"2025-06-30T03:31:18.583Z","C:/Work/Project/cb/temp/quick-scripts/src/tiledmap-optimize-resource/Script/TmoObjectGroup.js":"2025-06-30T03:31:18.595Z"}} -======= -{"version":"1.0.8","stats":{"C:/colorBlock/temp/quick-scripts/src/__qc_index__.js":"2025-06-30T02:13:58.526Z","C:/colorBlock/temp/quick-scripts/src/assets/Script/Sdk/MiniGameSdk.js":"2025-06-30T02:13:58.423Z","C:/colorBlock/temp/quick-scripts/src/assets/Script/module/GameStart/GameAppStart.js":"2025-06-30T02:13:58.382Z","C:/colorBlock/temp/quick-scripts/src/assets/Script/lq_base/data/lq_interface.js":"2025-06-30T02:13:58.367Z","C:/colorBlock/temp/quick-scripts/src/assets/shop/script/shop.js":"2025-06-30T02:13:58.372Z","C:/colorBlock/temp/quick-scripts/src/tiledmap-optimize-resource/Script/TmoTiledLayer.js":"2025-06-30T02:13:58.433Z","C:/colorBlock/temp/quick-scripts/src/assets/Script/CollisionDetection.js":"2025-06-30T02:13:58.446Z","C:/colorBlock/temp/quick-scripts/src/assets/animation/NewScript.js":"2025-06-30T02:13:58.357Z","C:/colorBlock/temp/quick-scripts/src/assets/effect/融化.js":"2025-06-30T02:13:58.364Z","C:/colorBlock/temp/quick-scripts/src/assets/migration/use_v2.1-2.2.1_cc.Toggle_event.js":"2025-06-30T02:13:58.396Z","C:/colorBlock/temp/quick-scripts/src/assets/Script/prop/Lock.js":"2025-06-30T02:13:58.367Z","C:/colorBlock/temp/quick-scripts/src/assets/Script/lq_collide_system/lq_collide_base.js":"2025-06-30T02:13:58.423Z","C:/colorBlock/temp/quick-scripts/src/assets/Script/lq_base/util/lq_math_util.js":"2025-06-30T02:13:58.418Z","C:/colorBlock/temp/quick-scripts/src/assets/Script/module/Notification/Notification.js":"2025-06-30T02:13:58.381Z","C:/colorBlock/temp/quick-scripts/src/assets/Script/module/RankList/ItemRender.js":"2025-06-30T02:13:58.430Z","C:/colorBlock/temp/quick-scripts/src/assets/Script/module/Storage/Storage.js":"2025-06-30T02:13:58.352Z","C:/colorBlock/temp/quick-scripts/src/assets/Script/module/Crypto/HttpUtil.js":"2025-06-30T02:13:58.393Z","C:/colorBlock/temp/quick-scripts/src/assets/Script/GameScene.js":"2025-06-30T02:13:58.446Z","C:/colorBlock/temp/quick-scripts/src/assets/Script/ControlManager.js":"2025-06-30T02:13:58.441Z","C:/colorBlock/temp/quick-scripts/src/assets/Script/DynamicAtlasManager.js":"2025-06-30T02:13:58.382Z","C:/colorBlock/temp/quick-scripts/src/assets/Script/module/Music/AudioManager.js":"2025-06-30T02:13:58.382Z","C:/colorBlock/temp/quick-scripts/src/assets/Script/module/Tool/GameTool.js":"2025-06-30T02:13:58.372Z","C:/colorBlock/temp/quick-scripts/src/assets/Script/MapBlock.js":"2025-06-30T02:13:58.379Z","C:/colorBlock/temp/quick-scripts/src/assets/Script/RankManager.js":"2025-06-30T02:13:58.443Z","C:/colorBlock/temp/quick-scripts/src/assets/Script/GameOver.js":"2025-06-30T02:13:58.402Z","C:/colorBlock/temp/quick-scripts/src/assets/Script/Load.js":"2025-06-30T02:13:58.372Z","C:/colorBlock/temp/quick-scripts/src/assets/Script/module/Config/GameConfig.js":"2025-06-30T02:13:58.423Z","C:/colorBlock/temp/quick-scripts/src/assets/Script/Map.js":"2025-06-30T02:13:58.357Z","C:/colorBlock/temp/quick-scripts/src/assets/Script/Reduce.js":"2025-06-30T02:13:58.430Z","C:/colorBlock/temp/quick-scripts/src/assets/Script/SceneManager.js":"2025-06-30T02:13:58.402Z","C:/colorBlock/temp/quick-scripts/src/assets/Script/btnControl.js":"2025-06-30T02:13:58.388Z","C:/colorBlock/temp/quick-scripts/src/assets/Script/NewMode.js":"2025-06-30T02:13:58.400Z","C:/colorBlock/temp/quick-scripts/src/assets/Script/module/Share/share.js":"2025-06-30T02:13:58.393Z","C:/colorBlock/temp/quick-scripts/src/assets/Script/GameManager.js":"2025-06-30T02:13:58.438Z","C:/colorBlock/temp/quick-scripts/src/assets/Script/Pause.js":"2025-06-30T02:13:58.420Z","C:/colorBlock/temp/quick-scripts/src/assets/Script/peizhi.js":"2025-06-30T02:13:58.398Z","C:/colorBlock/temp/quick-scripts/src/assets/Script/Window.js":"2025-06-30T02:13:58.367Z","C:/colorBlock/temp/quick-scripts/src/assets/Script/JiaZai.js":"2025-06-30T02:13:58.357Z","C:/colorBlock/temp/quick-scripts/src/assets/Script/NumberToImage.js":"2025-06-30T02:13:58.388Z","C:/colorBlock/temp/quick-scripts/src/assets/Script/Wall.js":"2025-06-30T02:13:58.407Z","C:/colorBlock/temp/quick-scripts/src/assets/Script/lq_collide_system/lq_collide_config.js":"2025-06-30T02:13:58.377Z","C:/colorBlock/temp/quick-scripts/src/assets/Script/position.js":"2025-06-30T02:13:58.438Z","C:/colorBlock/temp/quick-scripts/src/assets/migration/use_v2.1-2.2.1_cc.Toggle_event_1.js":"2025-06-30T02:13:58.428Z","C:/colorBlock/temp/quick-scripts/src/assets/Script/Sdk/MiniGameManager.js":"2025-06-30T02:13:58.352Z","C:/colorBlock/temp/quick-scripts/src/assets/Script/Barrier.js":"2025-06-30T02:13:58.412Z","C:/colorBlock/temp/quick-scripts/src/assets/Script/prop/Freeze.js":"2025-06-30T02:13:58.420Z","C:/colorBlock/temp/quick-scripts/src/assets/Script/prop/Key.js":"2025-06-30T02:13:58.413Z","C:/colorBlock/temp/quick-scripts/src/assets/Script/lq_collide_system/lq_collide_system.js":"2025-06-30T02:13:58.402Z","C:/colorBlock/temp/quick-scripts/src/assets/Script/Block.js":"2025-06-30T02:13:58.423Z","C:/colorBlock/temp/quick-scripts/src/assets/Script/prop/Adhesive.js":"2025-06-30T02:13:58.382Z","C:/colorBlock/temp/quick-scripts/src/assets/Script/Sdk/DouyinEntranceView.js":"2025-06-30T02:13:58.409Z","C:/colorBlock/temp/quick-scripts/src/assets/Script/prop/Star.js":"2025-06-30T02:13:58.437Z","C:/colorBlock/temp/quick-scripts/src/assets/Script/lq_collide_system/lq_collide.js":"2025-06-30T02:13:58.433Z","C:/colorBlock/temp/quick-scripts/src/assets/Script/lq_base/data/lq_data.js":"2025-06-30T02:13:58.419Z","C:/colorBlock/temp/quick-scripts/src/assets/Script/lq_base/util/lq_game_util.js":"2025-06-30T02:13:58.387Z","C:/colorBlock/temp/quick-scripts/src/assets/Script/lq_base/util/lq_pool_util.js":"2025-06-30T02:13:58.416Z","C:/colorBlock/temp/quick-scripts/src/assets/Script/lq_base/util/lq_platform_util.js":"2025-06-30T02:13:58.364Z","C:/colorBlock/temp/quick-scripts/src/assets/Script/module/RankList/List.js":"2025-06-30T02:13:58.433Z","C:/colorBlock/temp/quick-scripts/src/assets/Script/prop/Boom.js":"2025-06-30T02:13:58.367Z","C:/colorBlock/temp/quick-scripts/src/assets/Script/lq_base/util/lq_base_util.js":"2025-06-30T02:13:58.430Z","C:/colorBlock/temp/quick-scripts/src/assets/shop/script/item.js":"2025-06-30T02:13:58.438Z","C:/colorBlock/temp/quick-scripts/src/tiledmap-optimize-resource/Script/TmoObjectGroup.js":"2025-06-30T02:13:58.363Z","C:/colorBlock/temp/quick-scripts/src/tiledmap-optimize-resource/Script/TmoSprite.js":"2025-06-30T02:13:58.378Z","C:/colorBlock/temp/quick-scripts/src/assets/Script/module/Crypto/crypto-js.min.js":"2025-06-30T02:13:58.441Z","C:/colorBlock/temp/quick-scripts/src/assets/Script/lq_base/data/lq_const.js":"2025-06-30T02:13:58.415Z","C:/colorBlock/temp/quick-scripts/src/tiledmap-optimize-resource/Script/TmoAssembler.js":"2025-06-30T02:13:58.352Z","C:/colorBlock/temp/quick-scripts/src/tiledmap-optimize-resource/Script/TmoTiledMap.js":"2025-06-30T02:13:58.346Z"}} ->>>>>>> 0a31a7a5abc2c505bf743aa596e1c765a0405152 +{"version":"1.0.8","stats":{"C:/Work/Project/cb/temp/quick-scripts/src/__qc_index__.js":"2025-06-30T07:28:54.541Z","C:/Work/Project/cb/temp/quick-scripts/src/assets/Script/lq_collide_system/lq_collide_base.js":"2025-06-30T07:28:54.423Z","C:/Work/Project/cb/temp/quick-scripts/src/assets/Script/lq_base/util/lq_math_util.js":"2025-06-30T07:28:54.415Z","C:/Work/Project/cb/temp/quick-scripts/src/assets/Script/module/Crypto/HttpUtil.js":"2025-06-30T07:28:54.393Z","C:/Work/Project/cb/temp/quick-scripts/src/tiledmap-optimize-resource/Script/TmoTiledLayer.js":"2025-06-30T07:28:54.439Z","C:/Work/Project/cb/temp/quick-scripts/src/assets/Script/CollisionDetection.js":"2025-06-30T07:28:54.453Z","C:/Work/Project/cb/temp/quick-scripts/src/assets/shop/script/item.js":"2025-06-30T07:28:54.442Z","C:/Work/Project/cb/temp/quick-scripts/src/assets/Script/Sdk/MiniGameSdk.js":"2025-06-30T07:28:54.421Z","C:/Work/Project/cb/temp/quick-scripts/src/assets/Script/prop/Boom.js":"2025-06-30T07:28:54.360Z","C:/Work/Project/cb/temp/quick-scripts/src/assets/effect/融化.js":"2025-06-30T07:28:54.356Z","C:/Work/Project/cb/temp/quick-scripts/src/assets/animation/NewScript.js":"2025-06-30T07:28:54.352Z","C:/Work/Project/cb/temp/quick-scripts/src/assets/migration/use_v2.1-2.2.1_cc.Toggle_event.js":"2025-06-30T07:28:54.396Z","C:/Work/Project/cb/temp/quick-scripts/src/assets/Script/module/RankList/ItemRender.js":"2025-06-30T07:28:54.431Z","C:/Work/Project/cb/temp/quick-scripts/src/assets/Script/module/GameStart/GameAppStart.js":"2025-06-30T07:28:54.385Z","C:/Work/Project/cb/temp/quick-scripts/src/assets/Script/lq_base/data/lq_const.js":"2025-06-30T07:28:54.412Z","C:/Work/Project/cb/temp/quick-scripts/src/assets/Script/module/Music/AudioManager.js":"2025-06-30T07:28:54.378Z","C:/Work/Project/cb/temp/quick-scripts/src/assets/Script/module/Notification/Notification.js":"2025-06-30T07:28:54.377Z","C:/Work/Project/cb/temp/quick-scripts/src/assets/Script/module/Storage/Storage.js":"2025-06-30T07:28:54.343Z","C:/Work/Project/cb/temp/quick-scripts/src/assets/Script/module/Share/share.js":"2025-06-30T07:28:54.392Z","C:/Work/Project/cb/temp/quick-scripts/src/assets/Script/module/Tool/GameTool.js":"2025-06-30T07:28:54.366Z","C:/Work/Project/cb/temp/quick-scripts/src/assets/Script/GameOver.js":"2025-06-30T07:28:54.401Z","C:/Work/Project/cb/temp/quick-scripts/src/assets/Script/Load.js":"2025-06-30T07:28:54.368Z","C:/Work/Project/cb/temp/quick-scripts/src/assets/Script/JiaZai.js":"2025-06-30T07:28:54.348Z","C:/Work/Project/cb/temp/quick-scripts/src/assets/Script/ControlManager.js":"2025-06-30T07:28:54.447Z","C:/Work/Project/cb/temp/quick-scripts/src/assets/Script/GameScene.js":"2025-06-30T07:28:54.452Z","C:/Work/Project/cb/temp/quick-scripts/src/assets/Script/GameManager.js":"2025-06-30T07:28:54.444Z","C:/Work/Project/cb/temp/quick-scripts/src/assets/Script/module/Config/GameConfig.js":"2025-06-30T07:28:54.425Z","C:/Work/Project/cb/temp/quick-scripts/src/assets/Script/DynamicAtlasManager.js":"2025-06-30T07:28:54.380Z","C:/Work/Project/cb/temp/quick-scripts/src/assets/Script/MapBlock.js":"2025-06-30T07:28:54.376Z","C:/Work/Project/cb/temp/quick-scripts/src/assets/Script/NumberToImage.js":"2025-06-30T07:28:54.388Z","C:/Work/Project/cb/temp/quick-scripts/src/assets/Script/SceneManager.js":"2025-06-30T07:28:54.402Z","C:/Work/Project/cb/temp/quick-scripts/src/assets/Script/NewMode.js":"2025-06-30T07:28:54.399Z","C:/Work/Project/cb/temp/quick-scripts/src/assets/Script/Reduce.js":"2025-06-30T07:28:54.433Z","C:/Work/Project/cb/temp/quick-scripts/src/assets/Script/Pause.js":"2025-06-30T07:28:54.419Z","C:/Work/Project/cb/temp/quick-scripts/src/assets/Script/RankManager.js":"2025-06-30T07:28:54.450Z","C:/Work/Project/cb/temp/quick-scripts/src/assets/Script/Sdk/MiniGameManager.js":"2025-06-30T07:28:54.341Z","C:/Work/Project/cb/temp/quick-scripts/src/assets/Script/Map.js":"2025-06-30T07:28:54.350Z","C:/Work/Project/cb/temp/quick-scripts/src/assets/Script/Window.js":"2025-06-30T07:28:54.359Z","C:/Work/Project/cb/temp/quick-scripts/src/assets/Script/lq_collide_system/lq_collide_config.js":"2025-06-30T07:28:54.373Z","C:/Work/Project/cb/temp/quick-scripts/src/assets/Script/Wall.js":"2025-06-30T07:28:54.406Z","C:/Work/Project/cb/temp/quick-scripts/src/assets/Script/position.js":"2025-06-30T07:28:54.446Z","C:/Work/Project/cb/temp/quick-scripts/src/assets/Script/peizhi.js":"2025-06-30T07:28:54.397Z","C:/Work/Project/cb/temp/quick-scripts/src/assets/Script/Sdk/DouyinEntranceView.js":"2025-06-30T07:28:54.407Z","C:/Work/Project/cb/temp/quick-scripts/src/assets/Script/btnControl.js":"2025-06-30T07:28:54.390Z","C:/Work/Project/cb/temp/quick-scripts/src/assets/Script/Barrier.js":"2025-06-30T07:28:54.409Z","C:/Work/Project/cb/temp/quick-scripts/src/assets/Script/prop/Lock.js":"2025-06-30T07:28:54.362Z","C:/Work/Project/cb/temp/quick-scripts/src/assets/Script/prop/Freeze.js":"2025-06-30T07:28:54.419Z","C:/Work/Project/cb/temp/quick-scripts/src/assets/Script/prop/Adhesive.js":"2025-06-30T07:28:54.383Z","C:/Work/Project/cb/temp/quick-scripts/src/assets/Script/prop/Star.js":"2025-06-30T07:28:54.440Z","C:/Work/Project/cb/temp/quick-scripts/src/assets/Script/lq_base/util/lq_platform_util.js":"2025-06-30T07:28:54.358Z","C:/Work/Project/cb/temp/quick-scripts/src/assets/Script/prop/Key.js":"2025-06-30T07:28:54.411Z","C:/Work/Project/cb/temp/quick-scripts/src/assets/Script/lq_collide_system/lq_collide_system.js":"2025-06-30T07:28:54.404Z","C:/Work/Project/cb/temp/quick-scripts/src/assets/Script/lq_base/util/lq_game_util.js":"2025-06-30T07:28:54.386Z","C:/Work/Project/cb/temp/quick-scripts/src/assets/migration/use_v2.1-2.2.1_cc.Toggle_event_1.js":"2025-06-30T07:28:54.429Z","C:/Work/Project/cb/temp/quick-scripts/src/assets/Script/lq_base/data/lq_interface.js":"2025-06-30T07:28:54.364Z","C:/Work/Project/cb/temp/quick-scripts/src/assets/Script/lq_base/data/lq_data.js":"2025-06-30T07:28:54.416Z","C:/Work/Project/cb/temp/quick-scripts/src/assets/Script/Block.js":"2025-06-30T07:28:54.426Z","C:/Work/Project/cb/temp/quick-scripts/src/assets/Script/lq_collide_system/lq_collide.js":"2025-06-30T07:28:54.435Z","C:/Work/Project/cb/temp/quick-scripts/src/assets/Script/module/Crypto/crypto-js.min.js":"2025-06-30T07:28:54.449Z","C:/Work/Project/cb/temp/quick-scripts/src/tiledmap-optimize-resource/Script/TmoSprite.js":"2025-06-30T07:28:54.374Z","C:/Work/Project/cb/temp/quick-scripts/src/assets/shop/script/shop.js":"2025-06-30T07:28:54.370Z","C:/Work/Project/cb/temp/quick-scripts/src/assets/Script/lq_base/util/lq_pool_util.js":"2025-06-30T07:28:54.414Z","C:/Work/Project/cb/temp/quick-scripts/src/assets/Script/lq_base/util/lq_base_util.js":"2025-06-30T07:28:54.434Z","C:/Work/Project/cb/temp/quick-scripts/src/tiledmap-optimize-resource/Script/TmoTiledMap.js":"2025-06-30T07:28:54.338Z","C:/Work/Project/cb/temp/quick-scripts/src/assets/Script/module/RankList/List.js":"2025-06-30T07:28:54.438Z","C:/Work/Project/cb/temp/quick-scripts/src/tiledmap-optimize-resource/Script/TmoAssembler.js":"2025-06-30T07:28:54.345Z","C:/Work/Project/cb/temp/quick-scripts/src/tiledmap-optimize-resource/Script/TmoObjectGroup.js":"2025-06-30T07:28:54.354Z"}} diff --git a/temp/quick-scripts/dst/__qc_bundle__.js b/temp/quick-scripts/dst/__qc_bundle__.js index c5db84c..6daf075 100644 --- a/temp/quick-scripts/dst/__qc_bundle__.js +++ b/temp/quick-scripts/dst/__qc_bundle__.js @@ -89,2380 +89,6 @@ require('./tiledmap-optimize-resource/Script/TmoTiledMap'); })(); //------QC-SOURCE-SPLIT------ - (function() { - var nodeEnv = typeof require !== 'undefined' && typeof process !== 'undefined'; - var __module = nodeEnv ? module : {exports:{}}; -<<<<<<< HEAD - var __filename = 'preview-scripts/assets/Script/Sdk/MiniGameManager.js'; -======= - var __filename = 'preview-scripts/assets/Script/Sdk/MiniGameSdk.js'; ->>>>>>> 0a31a7a5abc2c505bf743aa596e1c765a0405152 - 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"; -<<<<<<< HEAD -cc._RF.push(module, '0d272pXVChFDqi5FXTD2JlR', 'MiniGameManager'); -// Script/Sdk/MiniGameManager.ts -======= -cc._RF.push(module, 'c1af9nd7gNA95YJ04h9DdNX', 'MiniGameSdk'); -// Script/Sdk/MiniGameSdk.ts - -"use strict"; -Object.defineProperty(exports, "__esModule", { value: true }); -exports.MiniGameSdk = void 0; -/** - * 小游戏平台SDK工具封装,目前只支持微信和抖音平台 - */ -var MiniGameSdk; -(function (MiniGameSdk) { - function isWechat() { - //@ts-ignore - return window.wx !== null && window.wx !== undefined; - } - MiniGameSdk.isWechat = isWechat; - function isBytedance() { - //@ts-ignore - return window.tt !== null && window.tt !== undefined; - } - MiniGameSdk.isBytedance = isBytedance; - function getSysWinSize() { - var sys; - if (isWechat()) { - // @ts-ignore - sys = wx.getSystemInfoSync(); - } - else if (isBytedance()) { - // @ts-ignore - sys = tt.getSystemInfoSync(); - } - var size = { width: 0, height: 0 }; - if (sys) { - size.width = sys.windowWidth; - size.height = sys.windowHeight; - } - return size; - } - /** - * 插屏广告。微信抖音都支持! - */ - var ADInterstitial = /** @class */ (function () { - function ADInterstitial(adUid) { - this._adUid = adUid; - } - Object.defineProperty(ADInterstitial.prototype, "aduid", { - get: function () { - return this._adUid; - }, - enumerable: false, - configurable: true - }); - ADInterstitial.prototype.show = function () { - var _this = this; - var _a, _b; - // @ts-ignore - if (isWechat() && !wx.createInterstitialAd) { - console.warn('wechat unsupport interstitial AD!'); - this._interstitial = null; - return; - } - // @ts-ignore - if (isBytedance() && !tt.createInterstitialAd) { - console.warn('bytedance unsupport interstitial AD!'); - this._interstitial = null; - return; - } - if (this._interstitial) { - this._interstitial.load(); - } - else { - if (isWechat()) { - // @ts-ignore - this._interstitial = wx.createInterstitialAd({ adUnitId: this._adUid }); - } - else if (isBytedance()) { - // @ts-ignore - this._interstitial = tt.createInterstitialAd({ adUnitId: this._adUid }); - } - else { - this._interstitial = null; - } - (_a = this._interstitial) === null || _a === void 0 ? void 0 : _a.onLoad(function () { - console.log('load interstitial ad success'); - _this._interstitial.show().catch(function (err) { - console.log('catch interstitial ad error:', err); - }); - }); - (_b = this._interstitial) === null || _b === void 0 ? void 0 : _b.onError(function (err) { - console.log('interstitial ad on error:', err); - }); - } - }; - ADInterstitial.prototype.destory = function () { - var _a; - (_a = this._interstitial) === null || _a === void 0 ? void 0 : _a.destroy(); - }; - return ADInterstitial; - }()); - var ADBanner = /** @class */ (function () { - /** - * 抖音和微信都支持 - * 横幅广告。预估宽度默认为300,预估高度为140。如果你不确定就按默认值来。 - * @param adUid 广告UID,后端配置 - * @param isTop 是否在屏幕顶部展示。内部会自动居中计算位置。 - * @param bannerWidth 横幅广告的预估宽度。默认300 - * @param autoShow 广告加载完成后是否立刻显示,默认为不显示 - */ - function ADBanner(adUid, param, bannerWidth, autoShow) { - if (bannerWidth === void 0) { bannerWidth = 300; } - if (autoShow === void 0) { autoShow = false; } - this._adUid = adUid; - this.create(autoShow, bannerWidth, param); // 默认300比较合适 - } - Object.defineProperty(ADBanner.prototype, "aduid", { - get: function () { - return this._adUid; - }, - enumerable: false, - configurable: true - }); - ADBanner.prototype.create = function (autoShow, bannerWidth, param) { - var _this = this; - var _a, _b; - if (!isWechat() && !isBytedance()) { - this._banner = null; - return; - } - this.destroy(); - var winSize = getSysWinSize(); - var height = bannerWidth * 0.4; - var top = 0, left = 0; - if (typeof param === "boolean") { - left = (winSize.width - bannerWidth) / 2; - top = param ? 5 : (winSize.height - height); - } - else { - left = param.left; - top = param.top; - } - var params = { - adUnitId: this._adUid, - adIntervals: 30, - style: { left: left, top: top, width: bannerWidth } - }; - if (isWechat()) { - // @ts-ignore - this._banner = wx.createBannerAd(params); - } - else if (isBytedance()) { - // @ts-ignore - this._banner = tt.createBannerAd(params); - } - else { - this._banner = null; - } - (_a = this._banner) === null || _a === void 0 ? void 0 : _a.onError(function (err) { - console.log('ad banner error:', err); - }); - (_b = this._banner) === null || _b === void 0 ? void 0 : _b.onLoad(function () { - autoShow && _this._banner.show(); - }); - }; - ADBanner.prototype.show = function () { - var _a; - (_a = this._banner) === null || _a === void 0 ? void 0 : _a.show(); - }; - ADBanner.prototype.hide = function () { - var _a; - (_a = this._banner) === null || _a === void 0 ? void 0 : _a.hide(); - }; - ADBanner.prototype.destroy = function () { - var _a; - (_a = this._banner) === null || _a === void 0 ? void 0 : _a.destroy(); - }; - return ADBanner; - }()); - var ADCustom = /** @class */ (function () { - /** - * 由于原生模板广告在微信服务后端可以定制宽度大小,个数,缩放比例等,所以位置调整要根据设置的宽度来定。抖音不支持! - * @param adUid 广告UID,后端配置 - * @param top 从左上角开始,距离屏幕顶部的距离。注意:这个数据为设备屏幕宽度width。如果需要获取屏幕的像素,需要乘以设备像素比Pixel-Ratio,例如iPhone 13 Pro的Pixel-Ratio为3,像素为Width*3。 - * @param left 从左上角开始,距离屏幕最左边的距离。注意:这个数据为设备屏幕宽度width。如果需要获取屏幕的像素,需要乘以设备像素比Pixel-Ratio,例如iPhone 13 Pro的Pixel-Ratio为3,像素为Width*3。 - * @param scale 原生模板广告的尺寸,默认为1,即100%。此值在微信服务后端广告中获得,默认为100%,目前有100%,90%,80%三种,一般情况不用修改。若有修改,记得传入值,例如90%就传入0.9。 - */ - function ADCustom(adUid, top, left, scale) { - if (top === void 0) { top = 0; } - if (left === void 0) { left = 0; } - if (scale === void 0) { scale = 1.0; } - this._adUid = adUid; - this.createCustomAd(top, left, scale); - } - Object.defineProperty(ADCustom.prototype, "aduid", { - get: function () { - return this._adUid; - }, - enumerable: false, - configurable: true - }); - ADCustom.prototype.createCustomAd = function (top, left, scale) { - var _a; - if (!isWechat()) { // only wechat support custom ad - this._adCustom = null; - console.log('Only wechat support Custom Ad'); - return; - } - this.destroy(); - // 原生模板5个应用宽度为375,若设置了缩放比例,则宽度也需要设置 - // let width = 375 * this._scale; - // let newLeft = (sys.windowWidth - width) / 2; - // let newTop = sys.windowHeight / 2; // 120是预估高度 - // @ts-ignore - this._adCustom = wx.createCustomAd({ - adUnitId: this._adUid, - //@ts-ignore - style: { left: left, top: top, fixed: true } - }); - (_a = this._adCustom) === null || _a === void 0 ? void 0 : _a.onError(function (err) { - console.log('ad custom error:', err); - }); - }; - ADCustom.prototype.show = function () { - var _a; - (_a = this._adCustom) === null || _a === void 0 ? void 0 : _a.show(); - }; - ADCustom.prototype.hide = function () { - var _a; - (_a = this._adCustom) === null || _a === void 0 ? void 0 : _a.hide(); - }; - ADCustom.prototype.destroy = function () { - var _a; - (_a = this._adCustom) === null || _a === void 0 ? void 0 : _a.destroy(); - }; - return ADCustom; - }()); - /** - * 视频广告用户点击行为结果 - */ - var EAdVideoResult; - (function (EAdVideoResult) { - /** - * 用户看完了广告,游戏可发放奖励。 - */ - EAdVideoResult[EAdVideoResult["ACCEPT"] = 0] = "ACCEPT"; - /** - * 用户中途关闭了广告,即未看完状态。不可发放奖励。 - */ - EAdVideoResult[EAdVideoResult["REJECT"] = 1] = "REJECT"; - /** - * 广告组件内部发生了错误。不可发放奖励。 - */ - EAdVideoResult[EAdVideoResult["ERROR"] = 2] = "ERROR"; - })(EAdVideoResult = MiniGameSdk.EAdVideoResult || (MiniGameSdk.EAdVideoResult = {})); - var ADVideo = /** @class */ (function () { - function ADVideo(adUid) { - this._adVideo = null; - this._adUid = adUid; - } - Object.defineProperty(ADVideo.prototype, "aduid", { - get: function () { - return this._adUid; - }, - enumerable: false, - configurable: true - }); - /** - * 由于微信和抖音视频广告机制不同,微信可以看的视频广告个数只有0和1个,抖音平台则可以看0~maxVideoCount - * @param onResult 两个参数:第一个res是EAdVideoResult定义,第二count是用户看了多少个视频广告。 - * @param target onResult的拥有者 - * @param maxVideoCount 可以连续看最大视频个数,可最大化商业效率。默认为3个。 - * @returns - */ - ADVideo.prototype.show = function (onResult, target, maxVideoCount) { - var _this = this; - var _a, _b, _c, _d, _e; - if (maxVideoCount === void 0) { maxVideoCount = 3; } - var callback = function (state, count) { - onResult === null || onResult === void 0 ? void 0 : onResult.call(target, state, count); - }; - if (!isWechat() && !isBytedance()) { - callback(EAdVideoResult.ACCEPT, 1); - this._adVideo = null; - return; - } - var onAdVideoClosed = function (res) { - var _a; - (_a = _this._adVideo) === null || _a === void 0 ? void 0 : _a.offClose(onAdVideoClosed); - if (isWechat()) { - if (res && res.isEnded || res === undefined) { - callback(EAdVideoResult.ACCEPT, 1); - } - else { - callback(EAdVideoResult.REJECT, 0); - } - } - else if (isBytedance()) { - var resConverted = res; - if (resConverted && resConverted.count > 0) { - callback(EAdVideoResult.ACCEPT, resConverted.count); - } - else { - callback(EAdVideoResult.REJECT, 0); - } - } - }; - (_a = this._adVideo) === null || _a === void 0 ? void 0 : _a.offClose(onAdVideoClosed); - if (isWechat()) { - // @ts-ignore - this._adVideo = wx.createRewardedVideoAd({ - adUnitId: this._adUid - }); - } - else if (isBytedance()) { - // @ts-ignore - this._adVideo = tt.createRewardedVideoAd({ - adUnitId: this._adUid, - multiton: true, - multitonRewardMsg: ['多1次奖励', '再多一次奖励', '再多一次奖励'], - multitonRewardTimes: maxVideoCount, - }); - } - else { - this._adVideo = null; - } - (_b = this._adVideo) === null || _b === void 0 ? void 0 : _b.onLoad(function () { - console.log('Ad load success'); - }); - (_c = this._adVideo) === null || _c === void 0 ? void 0 : _c.onError(function (err) { - console.log('Ad video error:', err); - callback(EAdVideoResult.ERROR, 0); - }); - (_d = this._adVideo) === null || _d === void 0 ? void 0 : _d.onClose(onAdVideoClosed); - (_e = this._adVideo) === null || _e === void 0 ? void 0 : _e.show().catch(function () { - var _a; - (_a = _this._adVideo) === null || _a === void 0 ? void 0 : _a.load().then(function () { var _a; return (_a = _this._adVideo) === null || _a === void 0 ? void 0 : _a.show(); }).catch(function (err) { - console.log('Catch video ad error:', err); - callback(EAdVideoResult.ERROR, 0); - }); - }); - }; - ADVideo.prototype.destory = function () { - var _a; - (_a = this._adVideo) === null || _a === void 0 ? void 0 : _a.destory(); - }; - return ADVideo; - }()); - var EAdBannerLocation; - (function (EAdBannerLocation) { - /** - * 屏幕顶部 - */ - EAdBannerLocation[EAdBannerLocation["TOP"] = 0] = "TOP"; - /** - * 屏幕底部 - */ - EAdBannerLocation[EAdBannerLocation["BOTTOM"] = 1] = "BOTTOM"; - })(EAdBannerLocation = MiniGameSdk.EAdBannerLocation || (MiniGameSdk.EAdBannerLocation = {})); - var AdvertManager = /** @class */ (function () { - function AdvertManager() { - this._customs = {}; - } - Object.defineProperty(AdvertManager, "instance", { - get: function () { - if (!AdvertManager._instance) { - AdvertManager._instance = new AdvertManager(); - } - return AdvertManager._instance; - }, - enumerable: false, - configurable: true - }); - /** - * 预加载横幅广告,不会显示。只有你在调用showBanner时才会显示。 - * 可重复调用,但是会销毁上一次的实例。一般情况,全局有一个就行了,太多占用内存,而且没必要。 - * @param adUid 广告UID - * @param location 位置有两种情况:1、可以传入枚举值,默认上方; 2、可以自定义位置传入IPosition,注意IPosition中的top和left跟平台的top,left是一致(没有乘以设备像素比ratio),需要开发者自己调试位置 - * @param scale 默认为跟屏幕一样的宽度,可以通过设置缩放比例来调整大小。当然,平台有规定最大或最小宽度,函数内部会自动计算。 - */ - AdvertManager.prototype.loadBanner = function (adUid, location, scale) { - var _a; - if (location === void 0) { location = EAdBannerLocation.TOP; } - if (scale === void 0) { scale = 1.0; } - (_a = this._banner) === null || _a === void 0 ? void 0 : _a.destroy(); - var size = getSysWinSize(); - // 当 style.width 小于 300 时,会取作 300。 当 style.width 大于屏幕宽度时,会取作屏幕宽度。 - var width = size.width * scale; - width = width < 300 ? 300 : width; // 最小值矫正 - width = width > size.width ? size.width : width; //最大值矫正 - this._banner = typeof location === 'number' ? new ADBanner(adUid, location === EAdBannerLocation.TOP, width, false) : new ADBanner(adUid, location, width, false); - }; - /** - * 显示横幅广告 - */ - AdvertManager.prototype.showBanner = function () { - if (this._banner) { - this._banner.show(); - } - else { - console.warn('MiniGameSDK: banner is null, you must call loadBanner(...) first!'); - } - }; - /** - * 隐藏横幅广告 - */ - AdvertManager.prototype.hideBanner = function () { - var _a; - (_a = this._banner) === null || _a === void 0 ? void 0 : _a.hide(); - }; - /** - * 弹出插屏广告 - * @param adUid 广告单元id - */ - AdvertManager.prototype.showInterstitial = function (adUid) { - var _a; - if (this._interstitial && this._interstitial.aduid === adUid) { - this._interstitial.show(); - } - else { - (_a = this._interstitial) === null || _a === void 0 ? void 0 : _a.destory(); - this._interstitial = new ADInterstitial(adUid); - this._interstitial.show(); - } - }; - /** - * 加载原生模板广告,不会显示。只有你在调用showCustom时才会显示。 - * 由于原生模板广告在微信服务后端可以定制宽度大小,个数,缩放比例等,所以位置调整要根据设置的宽度来定。抖音不支持本函数,会调用无效! - * @param adUid 广告ID - * @param location 位置有两种情况:1、可以传入枚举值,默认上方; 2、可以自定义位置传入IPosition,注意IPosition中的top和left跟平台的top,left是一致(没有乘以设备像素比ratio),需要开发者自己调试位置 - * @param scale 缩放比例,默认是1,即不缩放。这个缩放并不是自己填,而是根据微信MP后台你配置的原生模板广告的缩放比例填,目前有100%,90%,80%三种,一般情况不用修改。若有后台修改,记得传入值,例如90%就传入0.9。 - */ - AdvertManager.prototype.loadCustom = function (adUid, location, scale) { - if (location === void 0) { location = { top: 0, left: 0 }; } - if (scale === void 0) { scale = 1; } - // this._custom?.destroy(); - // this._custom = new ADCustom(adUid, location.top, location.left, scale); - if (this._customs[adUid]) { - console.log(adUid + " has been loaded."); - return; - } - this._customs[adUid] = new ADCustom(adUid, location.top, location.left, scale); - }; - /** - * 显示自定义广告。 - * @param adUid 广告的唯一标识符。使用此标识符来查找和显示特定的自定义广告。 - * - * 此方法尝试根据提供的adUid显示一个自定义广告。如果给定的adUid对应的自定义广告已加载, - * 则调用该广告的显示方法。如果广告未加载,则在控制台输出警告信息。 - */ - AdvertManager.prototype.showCustom = function (adUid) { - if (this._customs[adUid]) { - this._customs[adUid].show(); - } - else { - console.warn("You have not load " + adUid + " of Custom AD, can not show!"); - } - }; - /** - * 隐藏指定的自定义广告单元 - * - * 此方法用于隐藏通过广告单元标识符(adUid)指定的自定义广告。如果指定的广告单元已加载并显示, - * 则将其隐藏;如果广告单元未加载,则在控制台输出警告信息。 - * - * @param adUid 广告单元标识符,用于唯一标识一个自定义广告单元。 - */ - AdvertManager.prototype.hideCustom = function (adUid) { - if (this._customs[adUid]) { - this._customs[adUid].hide(); - } - else { - console.warn("You have not load " + adUid + " of Custom AD, can not hide!"); - } - }; - /** - * 由于微信和抖音视频广告机制不同,微信可以看的视频广告个数只有0和1个,抖音平台则可以看0~maxVideoCount - * @param adUid 广告ID。如果与上一次UID不同,则内部会重新创建实例。开发者完全不用关心这个细节。 - * @param onVideoResult 两个参数:第一个res是EAdVideoResult定义,第二count是用户看了多少个视频广告。 - * @param target onVideoResult的拥有者 - * @param maxVideoCount 最大视频个数。默认是3,仅对抖音平台生效。微信平台看完视频count的结果永远是1或0 - */ - AdvertManager.prototype.showVideo = function (adUid, onVideoResult, target, maxVideoCount) { - var _a; - if (maxVideoCount === void 0) { maxVideoCount = 3; } - if (this._video && this._video.aduid === adUid) { - this._video.show(onVideoResult, target, maxVideoCount); - } - else { - (_a = this._video) === null || _a === void 0 ? void 0 : _a.destory(); - this._video = new ADVideo(adUid); - this._video.show(onVideoResult, target, maxVideoCount); - } - }; - /** - * 销毁内部所有实例,清空内存 - */ - AdvertManager.prototype.destroyAll = function () { - var _a, _b, _c, _d; - (_a = this._banner) === null || _a === void 0 ? void 0 : _a.destroy(); - this._banner = null; - (_b = this._interstitial) === null || _b === void 0 ? void 0 : _b.destory(); - this._interstitial = null; - (_c = this._video) === null || _c === void 0 ? void 0 : _c.destory(); - this._video = null; - if (this._customs) { - for (var val in this._customs) { - (_d = this._customs[val]) === null || _d === void 0 ? void 0 : _d.destroy(); - } - this._customs = {}; - } - }; - return AdvertManager; - }()); - MiniGameSdk.AdvertManager = AdvertManager; - var EGameClubIcon; - (function (EGameClubIcon) { - /** 绿色图标 */ - EGameClubIcon["GREEN"] = "green"; - /** 红色图标 */ - EGameClubIcon["WHITE"] = "white"; - /** 有黑色圆角背景的白色图标 */ - EGameClubIcon["DARK"] = "dark"; - /** 有白色圆角背景的绿色图标 */ - EGameClubIcon["LIGHT"] = "light"; - })(EGameClubIcon = MiniGameSdk.EGameClubIcon || (MiniGameSdk.EGameClubIcon = {})); - var GameClub = /** @class */ (function () { - function GameClub() { - } - Object.defineProperty(GameClub, "instance", { - get: function () { - if (!this._instance) { - this._instance = new GameClub(); - } - return this._instance; - }, - enumerable: false, - configurable: true - }); - /** - * 创建游戏圈按钮 - * @param icon - * @param position - * @param size - * @param openLink - */ - GameClub.prototype.create = function (icon, position, size, openLink) { - if (icon === void 0) { icon = EGameClubIcon.GREEN; } - if (position === void 0) { position = { top: 0, left: 0 }; } - if (size === void 0) { size = { width: 40, height: 40 }; } - if (isWechat()) { - // @ts-ignore - this._club = wx.createGameClubButton({ - icon: icon, - style: { - left: position.left, - top: position.top, - width: size.width, - height: size.height - }, - openlink: openLink - }); - } - }; - GameClub.prototype.show = function () { - var _a; - (_a = this._club) === null || _a === void 0 ? void 0 : _a.show(); - }; - GameClub.prototype.hide = function () { - var _a; - (_a = this._club) === null || _a === void 0 ? void 0 : _a.hide(); - }; - GameClub.prototype.destory = function () { - var _a; - (_a = this._club) === null || _a === void 0 ? void 0 : _a.destroy(); - }; - return GameClub; - }()); - MiniGameSdk.GameClub = GameClub; - /** - * 振动类型 - */ - var EVirbrateType; - (function (EVirbrateType) { - /** - * 短振动 - */ - EVirbrateType[EVirbrateType["SHORT"] = 0] = "SHORT"; - /** - * 长振动 - */ - EVirbrateType[EVirbrateType["LONG"] = 1] = "LONG"; - })(EVirbrateType = MiniGameSdk.EVirbrateType || (MiniGameSdk.EVirbrateType = {})); - /** - * 抖音侧边栏专属接口 - */ - var BytedanceSidebar = /** @class */ (function () { - function BytedanceSidebar() { - } - /** - * 本游戏在抖音环境下启动监控,需要放在全局环境中,保证能第一时间启动。因为可能监听抖音失败(抖音小游戏官方的说明)! - * @param onResult 包含一个boolean参数的函数 - * @param target 上述函数的拥有者,如果是类的成员函数,需要传入this。普通或匿名函数忽略即可。 - */ - BytedanceSidebar.listenFromSidebar = function (onResult, target) { - if (!isBytedance()) { - onResult === null || onResult === void 0 ? void 0 : onResult.call(target, false); - return; - } - // @ts-ignore - tt.onShow(function (res) { - console.log('onShow launch res:', res); - if (res.scene === '021036') { - onResult === null || onResult === void 0 ? void 0 : onResult.call(target, true); - console.log('launch from sidebar'); - } - else { - onResult === null || onResult === void 0 ? void 0 : onResult.call(target, false); - console.log('NOT launch from douyin sidebar!'); - } - }); - // @ts-ignore - var options = tt.getLaunchOptionsSync(); - if (options && options.scene === '021036') { - onResult === null || onResult === void 0 ? void 0 : onResult.call(target, true); - } - }; - /** - * 检测抖音侧边栏是否存在 - * @param onResult 包含一个boolean参数的函数 - * @param target 上述函数的拥有者,如果是类的成员函数,需要传入this。普通或匿名函数忽略即可。 - * @returns - */ - BytedanceSidebar.checkSideBar = function (onResult, target) { - if (!isBytedance()) { - onResult === null || onResult === void 0 ? void 0 : onResult.call(target, false); - return; - } - //@ts-ignore - tt.checkScene({ - scene: "sidebar", - success: function (res) { - console.log("check scene success: ", res.isExist); - onResult === null || onResult === void 0 ? void 0 : onResult.call(target, res.isExist); - }, - fail: function (res) { - console.log("check scene fail:", res); - onResult === null || onResult === void 0 ? void 0 : onResult.call(target, false); - } - }); - }; - /** - * 跳转到抖音侧边栏 - * @param onResult 包含一个boolean参数的函数 - * @param target 上述函数的拥有者,如果是类的成员函数,需要传入this。普通或匿名函数忽略即可。 - * @returns - */ - BytedanceSidebar.navigateToSidebar = function (onResult, target) { - if (!isBytedance()) { - console.log("not douyin platform!"); - onResult === null || onResult === void 0 ? void 0 : onResult.call(target, false); - return; - } - // @ts-ignore - tt.navigateToScene({ - scene: "sidebar", - success: function () { - console.log("navigate success"); - onResult === null || onResult === void 0 ? void 0 : onResult.call(target, true); - }, - fail: function (res) { - console.log("navigate failed reason:", res); - onResult === null || onResult === void 0 ? void 0 : onResult.call(target, false); - }, - }); - }; - return BytedanceSidebar; - }()); - MiniGameSdk.BytedanceSidebar = BytedanceSidebar; - /** - * 平台常用API合集 - */ - var API = /** @class */ (function () { - function API() { - } - /** - * 分享app给朋友,微信小游戏分享是没有onSuccess回调的。 - * @param title 标题 - * @param description 细节描述信息 - * @param imageUrl 图片地址 - * @param query 查询信息 - * @param onSuccess 抖音会回调,微信不会回调 - */ - API.shareAppToFriends = function (title, description, imageUrl, query, onSuccess) { - if (description === void 0) { description = ''; } - if (isWechat()) { - try { - //@ts-ignore - wx.shareAppMessage({ - title: title, - imageUrl: imageUrl, - query: query, - }); - } - catch (err) { - console.log("share faild: " + err); - } - } - if (isBytedance()) { - //@ts-ignore - tt.shareAppMessage({ - title: title, - desc: description, - imageUrl: imageUrl !== null && imageUrl !== void 0 ? imageUrl : '', - query: query !== null && query !== void 0 ? query : '', - success: function (res) { - console.log('share success:', res); - onSuccess === null || onSuccess === void 0 ? void 0 : onSuccess(); - }, - fail: function (res) { - console.log('share fail:', res); - } - }); - } - }; - /** - * 显示提示信息 - * @param title 标题 - * @param duration 时长(单位:秒) - * @returns - */ - API.showToast = function (title, duration) { - if (duration === void 0) { duration = 2; } - if (isWechat()) { - // @ts-ignore - wx.showToast({ - title: title, - icon: 'none', - duration: duration * 500 - }); - } - }; - /** - * 设备震动效果,默认为短震动。注意:可能一些机型不会生效,具体看平台方的说明 - * @param type MiniGameSdk.API.EVirbrateType - */ - API.vibrate = function (type) { - if (type === void 0) { type = EVirbrateType.SHORT; } - if (isWechat()) { - switch (type) { - case EVirbrateType.SHORT: - //@ts-ignore - wx.vibrateShort({ - success: function (res) { - console.log('vibrate success:', res); - }, - fail: function (res) { - console.log('vibrateShort failed', res); - }, - }); - break; - case EVirbrateType.LONG: - //@ts-ignore - wx.vibrateLong({ - success: function (res) { - console.log('vibrate success', res); - }, - fail: function (res) { - console.log("vibrateLong failed", res); - }, - }); - break; - default: - break; - } - } - if (isBytedance()) { - switch (type) { - case EVirbrateType.SHORT: - //@ts-ignore - tt.vibrateShort({ - success: function (res) { - console.log('vibrate success:', res); - }, - fail: function (res) { - console.log('vibrateShort failed', res); - }, - }); - break; - case EVirbrateType.LONG: - //@ts-ignore - tt.vibrateLong({ - success: function (res) { - console.log('vibrate success', res); - }, - fail: function (res) { - console.log("vibrateLong failed", res); - }, - }); - break; - default: - break; - } - } - }; - /** - * 重启小游戏 - */ - API.reboot = function () { - if (isWechat()) { - //@ts-ignore - wx.restartMiniProgram({ - success: function () { - console.log('restart success'); - }, - fail: function () { - console.log('restart failed'); - } - }); - } - if (isBytedance()) { - try { - // @ts-ignore - tt.restartMiniProgramSync(); - } - catch (error) { - console.log("restartMiniProgramSync", error); - } - } - }; - /** - * 退出小游戏 - */ - API.exit = function () { - if (isWechat()) { - //@ts-ignore - wx.exitMiniProgram({ - success: function () { - console.log('exit success'); - }, - fail: function () { - console.log('exit failed'); - } - }); - } - if (isBytedance()) { - // @ts-ignore - tt.exitMiniProgram({ - success: function (res) { - console.log("exit success:", res === null || res === void 0 ? void 0 : res.data); - }, - fail: function (res) { - console.log("exit fail:", res === null || res === void 0 ? void 0 : res.errMsg); - }, - }); - } - }; - /** - * 显示转发按钮。通常在刚进入游戏的时候调用。 - * 主要是打开平台“...”这个按钮里面的分享菜单,一般默认是关闭的,需要调用这个函数打开。可以让用户分享你的游戏入口。 - */ - API.showShareMenu = function () { - if (isWechat()) { - //@ts-ignore - wx.showShareMenu({ - withShareTicket: true, - menus: ['shareAppMessage', 'shareTimeline'], - success: function () { }, - fail: function () { }, - complete: function () { } - }); - } - }; - /** - * 微信小游戏:跳转到另外一款小游戏 - * 抖音小游戏:跳转到指定的视频界面 - * @param targetId 微信小游戏appid或者视频界面 - */ - API.navigateTo = function (targetId, onSuccess) { - if (isWechat()) { - // @ts-ignore - wx.navigateToMiniProgram({ - appId: targetId, - extraData: { - foo: 'bar' - }, - envVersion: 'develop', - success: function (res) { - onSuccess === null || onSuccess === void 0 ? void 0 : onSuccess(); - } - }); - } - if (isBytedance()) { - // @ts-ignore - tt.navigateToVideoView({ - videoId: targetId, - success: function (res) { - onSuccess === null || onSuccess === void 0 ? void 0 : onSuccess(); - }, - fail: function (err) { - console.log("bytedance navigateToVideoView fail", err); - }, - }); - } - }; - /** - * 小游戏平台登录功能。微信返回code,抖音返回code和anonymousCode。用于登录的凭证,需要把这个code传回你的服务器程序中去调用code2Session - * @param callback (code, anonymousCode) 第一个参数为code,微信和抖音都支持;第二个参数为匿名设备ID,仅抖音支持,失败都返回null - */ - API.login = function (callback) { - var loginPlatform = function () { - if (isWechat()) { - //@ts-ignore - wx.login({ - success: function (res) { - if (res.code) { - API._loginCode = res.code; - API._loginAnonymousCode = null; - callback === null || callback === void 0 ? void 0 : callback(API._loginCode, API._loginAnonymousCode); - } - else { - console.log('login error:', res.errMsg); - } - }, - fail: function () { - API._loginCode = null; - API._loginAnonymousCode = null; - callback === null || callback === void 0 ? void 0 : callback(API._loginCode, API._loginAnonymousCode); - console.log('login fail'); - } - }); - } - else if (isBytedance()) { - //@ts-ignore - tt.login({ - force: true, - success: function (res) { - var _a, _b; - console.log("login " + res.code + " " + res.anonymousCode); - if (res.code) { - API._loginCode = (_a = res.code) === null || _a === void 0 ? void 0 : _a.toString(); - API._loginAnonymousCode = (_b = res.anonymousCode) === null || _b === void 0 ? void 0 : _b.toString(); - callback === null || callback === void 0 ? void 0 : callback(API._loginCode, API._loginAnonymousCode); - } - else { - console.log('login error:', res.errMsg); - } - }, - fail: function (res) { - API._loginCode = null; - API._loginAnonymousCode = null; - callback === null || callback === void 0 ? void 0 : callback(API._loginCode, API._loginAnonymousCode); - console.log("login fail", res); - }, - }); - } - else { - API._loginCode = null; - API._loginAnonymousCode = null; - callback === null || callback === void 0 ? void 0 : callback(API._loginCode, API._loginAnonymousCode); - console.log('not mini game platform, login codes are all null'); - } - }; - if (!API._loginCode) { - loginPlatform(); - } - else { - if (isWechat()) { - //@ts-ignore - wx.checkSession({ - success: function () { - console.log("session is valid, use current code:", API._loginCode); - callback === null || callback === void 0 ? void 0 : callback(API._loginCode, API._loginAnonymousCode); - }, - fail: function () { - console.log("session expired"); - loginPlatform(); - } - }); - } - else if (isBytedance()) { - //@ts-ignore - tt.checkSession({ - success: function () { - console.log("session is valid, user current code: " + API._loginCode + ", " + API._loginAnonymousCode); - callback === null || callback === void 0 ? void 0 : callback(API._loginCode, API._loginAnonymousCode); - }, - fail: function () { - console.log("session expired"); - loginPlatform(); - }, - }); - } - else { - console.log('not mini game platform, login null'); - callback === null || callback === void 0 ? void 0 : callback(null, null); - } - } - }; - /** - * 小游戏平台登录功能。微信返回code,抖音返回code和anonymousCode。用于登录的凭证,需要把这个code传回你的服务器程序中去调用code2Session - * @param callback (code, anonymousCode) 第一个参数为code,微信和抖音都支持;第二个参数为匿名设备ID,仅抖音支持,失败都返回null - */ - API.getUserInfo = function (callback) { - //@ts-ignore - tt.getUserInfo({ - withCredentials: true, - success: function (res) { - API._userInfo = res; - callback(API._userInfo); - }, - fail: function (err) { - callback(err); - } - }); - }; - /** - * 调用微信云函数。由于参数需要自定义,所以为any,需要自行解释。函数只完成通道和处理一场的作用 - * @param callback 返回云函数调用结果。需要检查返回参数是否为空,失败的时候为空 - * @param name 云函数的名字 - * @param data 云函数的内容 - */ - API.callWechatCloudFunction = function (callback, name, data) { - if (!isWechat()) { - console.log('Not wechat platform, not support callWechatCloudFunction'); - return; - } - this.login(function (code, anonymousCode) { - if (!API._hasInitWechatCloudFunction) { - //@ts-ignore - wx.cloud.init(); - API._hasInitWechatCloudFunction = true; - } - //@ts-ignore - wx.cloud.callFunction({ - name: name, - data: data, - success: function (res) { return callback === null || callback === void 0 ? void 0 : callback(res); }, - fail: function (err) { - console.log('wechat cloud function error:', err); - callback === null || callback === void 0 ? void 0 : callback(null); - } - }); - }); - }; - /** - * 存储用户信息,数据量不能大。可以考虑用于分数排行榜。用户之间可共享排行数据。 - * @param key - * @param value - */ - API.setUserCloudStorage = function (key, value) { - if (isWechat()) { - // @ts-ignore - wx.setUserCloudStorage({ - KVDataList: [{ key: key, value: value }], - success: function () { return console.log("set cloud storage success:" + key + ", value:" + value); }, - fail: function (err) { return console.log('set cloud storage error:', err); } - }); - } - if (isBytedance()) { - // @ts-ignore - tt.setUserCloudStorage({ - KVDataList: [{ key: key, value: value, }], - success: function () { return console.log("set cloud storage success:" + key + ", value:" + value); }, - fail: function (err) { return console.log('set cloud storage error:', err); } - }); - } - }; - /* - * 数数平台初始化以及登录 - */ - API.shushu_Init = function () { - if (typeof wx !== 'undefined' && wx !== null) { - console.log("开始接入数数平台"); - //getWechatGameVersion - var appId = "121591378fc1423893deb12041413eb3"; - var test = cc.fx.GameTool.getWechatGameVersion(); - if (test == "正式版") { - appId = "87d18958cea145f29d3265470ecd3486"; - } - var config = { - // appId: "73e1ec654f15b47a1a7354fbabec05ad", // 项目 APP ID - appId: appId, - serverUrl: "https://data.nika4fun.com", - autoTrack: { - appShow: true, - appHide: true // 自动采集 ta_mg_hide - } - }; - // 创建 TA 实例 - API._ta = new ThinkingAnalyticsAPI(config); - //var deviceId = API._ta.getDeviceId(); - API._ta.login(cc.fx.GameConfig.GM_INFO.openid); - var result = "success"; - API.shushu_Track("login", result); - // 初始化 - API._ta.init(); - API.shushu_SetSuperProperties(); - //console.log("数数平台初始化成功!"); - // this.TA.clearSuperProperties(); - //设置用户属性 - // this.TA.userSet({ username: "大核桃" }); - } - }; - API.shushu_userSet = function (time) { - if (typeof wx !== 'undefined' && wx !== null) { - console.log("设置用户注册属性"); - API._ta.userSet({ register_time: time }); - } - }; - /* - * 数数平台设置动态公共属性 - */ - API.shushu_SetSuperProperties = function () { - if (typeof wx !== 'undefined' && wx !== null && API._ta) { - var versionData = "1.3"; - // API._ta.userSetOnce({ register_time:time}); - var superProperties = { - current_level: (cc.fx.GameConfig.GM_INFO.level + 1), - current_health: cc.fx.GameConfig.GM_INFO.hp, - tmp_coin: cc.fx.GameConfig.GM_INFO.coin, - version: versionData - }; - API._ta.setSuperProperties(superProperties); //设置公共事件属性 - } - }; - API.getWechatGameVersion = function () { - if (typeof wx !== 'undefined' && wx !== null) { - // @ts-ignore - var accountInfo = wx.getAccountInfoSync(); - return accountInfo.miniProgram.version; - } - }; - /* - * 数数平台具体埋点 - */ - API.shushu_Track = function (name, data, callback) { - if (typeof wx !== 'undefined' && wx !== null) { - if (API._ta) { - // 假设 track 方法返回一个 Promise - API._ta.track(name, // 事件名称 - data // 事件属性 - ); - } - } - }; - API._loginCode = null; - API._loginAnonymousCode = null; - API._hasInitWechatCloudFunction = false; - API._userInfo = null; - API._ta = null; - return API; - }()); - MiniGameSdk.API = API; -})(MiniGameSdk = exports.MiniGameSdk || (exports.MiniGameSdk = {})); - -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,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImFzc2V0c1xcU2NyaXB0XFxTZGtcXE1pbmlHYW1lU2RrLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBOztHQUVHO0FBQ0gsSUFBaUIsV0FBVyxDQXlxQzNCO0FBenFDRCxXQUFpQixXQUFXO0lBWXhCLFNBQWdCLFFBQVE7UUFDcEIsWUFBWTtRQUNaLE9BQU8sTUFBTSxDQUFDLEVBQUUsS0FBSyxJQUFJLElBQUksTUFBTSxDQUFDLEVBQUUsS0FBSyxTQUFTLENBQUM7SUFDekQsQ0FBQztJQUhlLG9CQUFRLFdBR3ZCLENBQUE7SUFFRCxTQUFnQixXQUFXO1FBQ3ZCLFlBQVk7UUFDWixPQUFPLE1BQU0sQ0FBQyxFQUFFLEtBQUssSUFBSSxJQUFJLE1BQU0sQ0FBQyxFQUFFLEtBQUssU0FBUyxDQUFDO0lBQ3pELENBQUM7SUFIZSx1QkFBVyxjQUcxQixDQUFBO0lBR0QsU0FBUyxhQUFhO1FBQ2xCLElBQUksR0FBUSxDQUFDO1FBQ2IsSUFBSSxRQUFRLEVBQUUsRUFBRTtZQUNaLGFBQWE7WUFDYixHQUFHLEdBQUcsRUFBRSxDQUFDLGlCQUFpQixFQUFFLENBQUM7U0FDaEM7YUFBTSxJQUFJLFdBQVcsRUFBRSxFQUFFO1lBQ3RCLGFBQWE7WUFDYixHQUFHLEdBQUcsRUFBRSxDQUFDLGlCQUFpQixFQUFFLENBQUM7U0FDaEM7UUFFRCxJQUFJLElBQUksR0FBVSxFQUFFLEtBQUssRUFBRSxDQUFDLEVBQUUsTUFBTSxFQUFFLENBQUMsRUFBRSxDQUFDO1FBQzFDLElBQUksR0FBRyxFQUFFO1lBQ0wsSUFBSSxDQUFDLEtBQUssR0FBRyxHQUFHLENBQUMsV0FBVyxDQUFDO1lBQzdCLElBQUksQ0FBQyxNQUFNLEdBQUcsR0FBRyxDQUFDLFlBQVksQ0FBQztTQUNsQztRQUVELE9BQU8sSUFBSSxDQUFDO0lBQ2hCLENBQUM7SUFFRDs7T0FFRztJQUNIO1FBUUksd0JBQVksS0FBYTtZQUNyQixJQUFJLENBQUMsTUFBTSxHQUFHLEtB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ZWMsY0FBVSxHQUFXLElBQUksQ0FBQztRQUMxQix1QkFBbUIsR0FBVyxJQUFJLENBQUM7UUFDbkMsK0JBQTJCLEdBQVksS0FBSyxDQUFDO1FBQzdDLGFBQVMsR0FBUSxJQUFJLENBQUM7UUFDdEIsT0FBRyxHQUFRLElBQUksQ0FBQztRQXllbkMsVUFBQztLQTllRCxBQThlQyxJQUFBO0lBOWVZLGVBQUcsTUE4ZWYsQ0FBQTtBQUVMLENBQUMsRUF6cUNnQixXQUFXLEdBQVgsbUJBQVcsS0FBWCxtQkFBVyxRQXlxQzNCIiwiZmlsZSI6IiIsInNvdXJjZVJvb3QiOiIvIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXHJcbiAqIOWwj+a4uOaIj+W5s+WPsFNES+W3peWFt+Wwgeijhe+8jOebruWJjeWPquaUr+aMgeW+ruS/oeWSjOaKlumfs+W5s+WPsFxyXG4gKi9cclxuZXhwb3J0IG5hbWVzcGFjZSBNaW5pR2FtZVNkayB7XHJcblxyXG4gICAgaW50ZXJmYWNlIElTaXplIHtcclxuICAgICAgICB3aWR0aDogbnVtYmVyO1xyXG4gICAgICAgIGhlaWdodDogbnVtYmVyO1xyXG4gICAgfVxyXG5cclxuICAgIGV4cG9ydCBpbnRlcmZhY2UgSVBvc2l0aW9uIHtcclxuICAgICAgICB0b3A6IG51bWJlcjtcclxuICAgICAgICBsZWZ0OiBudW1iZXI7XHJcbiAgICB9XHJcblxyXG4gICAgZXhwb3J0IGZ1bmN0aW9uIGlzV2VjaGF0KCk6IGJvb2xlYW4ge1xyXG4gICAgICAgIC8vQHRzLWlnbm9yZVxyXG4gICAgICAgIHJldHVybiB3aW5kb3cud3ggIT09IG51bGwgJiYgd2luZG93Lnd4ICE9PSB1bmRlZmluZWQ7XHJcbiAgICB9XHJcblxyXG4gICAgZXhwb3J0IGZ1bmN0aW9uIGlzQnl0ZWRhbmNlKCk6IGJvb2xlYW4ge1xyXG4gICAgICAgIC8vQHRzLWlnbm9yZVxyXG4gICAgICAgIHJldHVybiB3aW5kb3cudHQgIT09IG51bGwgJiYgd2luZG93LnR0ICE9PSB1bmRlZmluZWQ7XHJcbiAgICB9XHJcblxyXG5cclxuICAgIGZ1bmN0aW9uIGdldFN5c1dpblNpemUoKTogSVNpemUge1xyXG4gICAgICAgIGxldCBzeXM6IGFueTtcclxuICAgICAgICBpZiAoaXNXZWNoYXQoKSkge1xyXG4gICAgICAgICAgICAvLyBAdHMtaWdub3JlXHJcbiAgICAgICAgICAgIHN5cyA9IHd4LmdldFN5c3RlbUluZm9TeW5jKCk7XHJcbiAgICAgICAgfSBlbHNlIGlmIChpc0J5dGVkYW5jZSgpKSB7XHJcbiAgICAgICAgICAgIC8vIEB0cy1pZ25vcmVcclxuICAgICAgICAgICAgc3lzID0gdHQuZ2V0U3lzdGVtSW5mb1N5bmMoKTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGxldCBzaXplOiBJU2l6ZSA9IHsgd2lkdGg6IDAsIGhlaWdodDogMCB9O1xyXG4gICAgICAgIGlmIChzeXMpIHtcclxuICAgICAgICAgICAgc2l6ZS53aWR0aCA9IHN5cy53aW5kb3dXaWR0aDtcclxuICAgICAgICAgICAgc2l6ZS5oZWlnaHQgPSBzeXMud2luZG93SGVpZ2h0O1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgcmV0dXJuIHNpemU7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiDmj5LlsY/lub/lkYrjgILlvq7kv6Hmipbpn7Ppg73mlK/mjIHvvIFcclxuICAgICAqL1xyXG4gICAgY2xhc3MgQURJbnRlcnN0aXRpYWwge1xyXG4gICAgICAgIHByaXZhdGUgX2FkVWlkOiBzdHJpbmc7XHJcbiAgICAgICAgcHJpdmF0ZSBfaW50ZXJzdGl0aWFsOiBhbnk7XHJcblxyXG4gICAgICAgIGdldCBhZHVpZCgpIHtcclxuICAgICAgICAgICAgcmV0dXJuIHRoaXMuX2FkVWlkO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgY29uc3RydWN0b3IoYWRVaWQ6IHN0cmluZykge1xyXG4gICAgICAgICAgICB0aGlzLl9hZFVpZCA9IGFkVWlkO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgc2hvdygpIHtcclxuICAgICAgICAgICAgLy8gQHRzLWlnbm9yZVxyXG4gICAgICAgICAgICBpZiAoaXNXZWNoYXQoKSAmJiAhd3guY3JlYXRlSW50ZXJzdGl0aWFsQWQpIHtcclxuICAgICAgICAgICAgICAgIGNvbnNvbGUud2Fybignd2VjaGF0IHVuc3VwcG9ydCBpbnRlcnN0aXRpYWwgQUQhJyk7XHJcbiAgICAgICAgICAgICAgICB0aGlzLl9pbnRlcnN0aXRpYWwgPSBudWxsO1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAvLyBAdHMtaWdub3JlXHJcbiAgICAgICAgICAgIGlmIChpc0J5dGVkYW5jZSgpICYmICF0dC5jcmVhdGVJbnRlcnN0aXRpYWxBZCkge1xyXG4gICAgICAgICAgICAgICAgY29uc29sZS53YXJuKCdieXRlZGFuY2UgdW5zdXBwb3J0IGludGVyc3RpdGlhbCBBRCEnKTtcclxuICAgICAgICAgICAgICAgIHRoaXMuX2ludGVyc3RpdGlhbCA9IG51bGw7XHJcbiAgICAgICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgICAgIH1cclxuXHJcblxyXG4gICAgICAgICAgICBpZiAodGhpcy5faW50ZXJzdGl0aWFsKSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLl9pbnRlcnN0aXRpYWwubG9hZCgpO1xyXG4gICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgaWYgKGlzV2VjaGF0KCkpIHtcclxuICAgICAgICAgICAgICAgICAgICAvLyBAdHMtaWdub3JlXHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5faW50ZXJzdGl0aWFsID0gd3guY3JlYXRlSW50ZXJzdGl0aWFsQWQoeyBhZFVuaXRJZDogdGhpcy5fYWRVaWQgfSk7XHJcbiAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKGlzQnl0ZWRhbmNlKCkpIHtcclxuICAgICAgICAgICAgICAgICAgICAvLyBAdHMtaWdub3JlXHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5faW50ZXJzdGl0aWFsID0gdHQuY3JlYXRlSW50ZXJzdGl0aWFsQWQoeyBhZFVuaXRJZDogdGhpcy5fYWRVaWQgfSk7XHJcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuX2ludGVyc3RpdGlhbCA9IG51bGw7XHJcbiAgICAgICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAgICAgdGhpcy5faW50ZXJzdGl0aWFsPy5vbkxvYWQoKCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKCdsb2FkIGludGVyc3RpdGlhbCBhZCBzdWNjZXNzJyk7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5faW50ZXJzdGl0aWFsLnNob3coKS5jYXRjaCgoZXJyOiBhbnkpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgY29uc29sZS5sb2coJ2NhdGNoIGludGVyc3RpdGlhbCBhZCBlcnJvcjonLCBlcnIpO1xyXG4gICAgICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICAgICAgfSk7XHJcblxyXG4gICAgICAgICAgICAgICAgdGhpcy5faW50ZXJzdGl0aWFsPy5vbkVycm9yKChlcnI6IGFueSkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKCdpbnRlcnN0aXRpYWwgYWQgb24gZXJyb3I6JywgZXJyKTtcclxuICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGRlc3RvcnkoKSB7XHJcbiAgICAgICAgICAgIHRoaXMuX2ludGVyc3RpdGlhbD8uZGVzdHJveSgpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBjbGFzcyBBREJhbm5lciB7XHJcbiAgICAgICAgcHJpdmF0ZSBfYWRVaWQ6IHN0cmluZztcclxuICAgICAgICBwcml2YXRlIF9iYW5uZXI6IGFueTtcclxuXHJcbiAgICAgICAgZ2V0IGFkdWlkKCkge1xyXG4gICAgICAgICAgICByZXR1cm4gdGhpcy5fYWRVaWQ7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICAvKipcclxuICAgICAgICAgKiDmipbpn7Plkozlvq7kv6Hpg73mlK/mjIFcclxuICAgICAgICAgKiDmqKrluYXlub/lkYrjgILpooTkvLDlrr3luqbpu5jorqTkuLozMDDvvIzpooTkvLDpq5jluqbkuLoxNDDjgILlpoLmnpzkvaDkuI3noa7lrprlsLHmjInpu5jorqTlgLzmnaXjgIJcclxuICAgICAgICAgKiBAcGFyYW0gYWRVaWQg5bm/5ZGKVUlE77yM5ZCO56uv6YWN572uXHJcbiAgICAgICAgICogQHBhcmFtIGlzVG9wIOaYr+WQpuWcqOWxj+W5lemhtumDqOWxleekuuOAguWGhemDqOS8muiHquWKqOWxheS4reiuoeeul+S9jee9ruOAglxyXG4gICAgICAgICAqIEBwYXJhbSBiYW5uZXJXaWR0aCDmqKrluYXlub/lkYrnmoTpooTkvLDlrr3luqbjgILpu5jorqQzMDBcclxuICAgICAgICAgKiBAcGFyYW0gYXV0b1Nob3cg5bm/5ZGK5Yqg6L295a6M5oiQ5ZCO5piv5ZCm56uL5Yi75pi+56S677yM6buY6K6k5Li65LiN5pi+56S6XHJcbiAgICAgICAgICovXHJcbiAgICAgICAgY29uc3RydWN0b3IoYWRVaWQ6IHN0cmluZywgcGFyYW06IGJvb2xlYW4gfCBJUG9zaXRpb24sIGJhbm5lcldpZHRoOiBudW1iZXIgPSAzMDAsIGF1dG9TaG93OiBib29sZWFuID0gZmFsc2UpIHtcclxuICAgICAgICAgICAgdGhpcy5fYWRVaWQgPSBhZFVpZDtcclxuICAgICAgICAgICAgdGhpcy5jcmVhdGUoYXV0b1Nob3csIGJhbm5lcldpZHRoLCBwYXJhbSk7IC8vIOm7mOiupDMwMOavlOi+g+WQiOmAglxyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgcHJpdmF0ZSBjcmVhdGUoYXV0b1Nob3c6IGJvb2xlYW4sIGJhbm5lcldpZHRoOiBudW1iZXIsIHBhcmFtOiBib29sZWFuIHwgSVBvc2l0aW9uKSB7XHJcbiAgICAgICAgICAgIGlmICghaXNXZWNoYXQoKSAmJiAhaXNCeXRlZGFuY2UoKSkge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5fYmFubmVyID0gbnVsbDtcclxuICAgICAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgdGhpcy5kZXN0cm95KCk7XHJcblxyXG4gICAgICAgICAgICBsZXQgd2luU2l6ZSA9IGdldFN5c1dpblNpemUoKTtcclxuXHJcbiAgICAgICAgICAgIGxldCBoZWlnaHQgPSBiYW5uZXJXaWR0aCAqIDAuNDtcclxuICAgICAgICAgICAgbGV0IHRvcCA9IDAsIGxlZnQgPSAwO1xyXG5cclxuICAgICAgICAgICAgaWYgKHR5cGVvZiBwYXJhbSA9PT0gXCJib29sZWFuXCIpIHtcclxuICAgICAgICAgICAgICAgIGxlZnQgPSAod2luU2l6ZS53aWR0aCAtIGJhbm5lcldpZHRoKSAvIDJcclxuICAgICAgICAgICAgICAgIHRvcCA9IHBhcmFtID8gNSA6ICh3aW5TaXplLmhlaWdodCAtIGhlaWdodCk7XHJcbiAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICBsZWZ0ID0gcGFyYW0ubGVmdDtcclxuICAgICAgICAgICAgICAgIHRvcCA9IHBhcmFtLnRvcDtcclxuICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgbGV0IHBhcmFtcyA9IHtcclxuICAgICAgICAgICAgICAgIGFkVW5pdElkOiB0aGlzLl9hZFVpZCxcclxuICAgICAgICAgICAgICAgIGFkSW50ZXJ2YWxzOiAzMCwvLyDoh6rliqjliLfmlrDpopHnjofkuI3og73lsI/kuo4zMOenklxyXG4gICAgICAgICAgICAgICAgc3R5bGU6IHsgbGVmdDogbGVmdCwgdG9wOiB0b3AsIHdpZHRoOiBiYW5uZXJXaWR0aCB9XHJcbiAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgIGlmIChpc1dlY2hhdCgpKSB7XHJcbiAgICAgICAgICAgICAgICAvLyBAdHMtaWdub3JlXHJcbiAgICAgICAgICAgICAgICB0aGlzLl9iYW5uZXIgPSB3eC5jcmVhdGVCYW5uZXJBZChwYXJhbXMpO1xyXG4gICAgICAgICAgICB9IGVsc2UgaWYgKGlzQnl0ZWRhbmNlKCkpIHtcclxuICAgICAgICAgICAgICAgIC8vIEB0cy1pZ25vcmVcclxuICAgICAgICAgICAgICAgIHRoaXMuX2Jhbm5lciA9IHR0LmNyZWF0ZUJhbm5lckFkKHBhcmFtcyk7XHJcbiAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLl9iYW5uZXIgPSBudWxsO1xyXG4gICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICB0aGlzLl9iYW5uZXI/Lm9uRXJyb3IoKGVycjogYW55KSA9PiB7XHJcbiAgICAgICAgICAgICAgICBjb25zb2xlLmxvZygnYWQgYmFubmVyIGVycm9yOicsIGVycik7XHJcbiAgICAgICAgICAgIH0pO1xyXG5cclxuICAgICAgICAgICAgdGhpcy5fYmFubmVyPy5vbkxvYWQoKCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgYXV0b1Nob3cgJiYgdGhpcy5fYmFubmVyLnNob3coKTtcclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBzaG93KCkge1xyXG4gICAgICAgICAgICB0aGlzLl9iYW5uZXI/LnNob3coKTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGhpZGUoKSB7XHJcbiAgICAgICAgICAgIHRoaXMuX2Jhbm5lcj8uaGlkZSgpO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgZGVzdHJveSgpIHtcclxuICAgICAgICAgICAgdGhpcy5fYmFubmVyPy5kZXN0cm95KCk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIGNsYXNzIEFEQ3VzdG9tIHtcclxuICAgICAgICBwcml2YXRlIF9hZFVpZDogc3RyaW5nO1xyXG4gICAgICAgIHByaXZhdGUgX2FkQ3VzdG9tOiBhbnk7XHJcblxyXG4gICAgICAgIGdldCBhZHVpZCgpIHtcclxuICAgICAgICAgICAgcmV0dXJuIHRoaXMuX2FkVWlkO1xyXG4gICAgICAgIH1cclxuICAgICAgICAvKipcclxuICAgICAgICAgKiDnlLHkuo7ljp/nlJ/mqKHmnb/lub/lkYrlnKjlvq7kv6HmnI3liqHlkI7nq6/lj6/ku6XlrprliLblrr3luqblpKflsI/vvIzkuKrmlbDvvIznvKnmlL7mr5TkvovnrYnvvIzmiYDku6XkvY3nva7osIPmlbTopoHmoLnmja7orr7nva7nmoTlrr3luqbmnaXlrprjgILmipbpn7PkuI3mlK/mjIHvvIFcclxuICAgICAgICAgKiBAcGFyYW0gYWRVaWQg5bm/5ZGKVUlE77yM5ZCO56uv6YWN572uXHJcbiAgICAgICAgICogQHBhcmFtIHRvcCDku47lt6bkuIrop5LlvIDlp4vvvIzot53nprvlsY/luZXpobbpg6jnmoTot53nprvjgILms6jmhI/vvJrov5nkuKrmlbDmja7kuLrorr7lpIflsY/luZXlrr3luqZ3aWR0aOOAguWmguaenOmcgOimgeiOt+WPluWxj+W5leeahOWDj+e0oO+8jOmcgOimgeS5mOS7peiuvuWkh+WDj+e0oOavlFBpeGVsLVJhdGlv77yM5L6L5aaCaVBob25lIDEzIFByb+eahFBpeGVsLVJhdGlv5Li6M++8jOWDj+e0oOS4uldpZHRoKjPjgIJcclxuICAgICAgICAgKiBAcGFyYW0gbGVmdCDku47lt6bkuIrop5LlvIDlp4vvvIzot53nprvlsY/luZXmnIDlt6bovrnnmoTot53nprvjgILms6jmhI/vvJrov5nkuKrmlbDmja7kuLrorr7lpIflsY/luZXlrr3luqZ3aWR0aOOAguWmguaenOmcgOimgeiOt+WPluWxj+W5leeahOWDj+e0oO+8jOmcgOimgeS5mOS7peiuvuWkh+WDj+e0oOavlFBpeGVsLVJhdGlv77yM5L6L5aaCaVBob25lIDEzIFByb+eahFBpeGVsLVJhdGlv5Li6M++8jOWDj+e0oOS4uldpZHRoKjPjgIJcclxuICAgICAgICAgKiBAcGFyYW0gc2NhbGUg5Y6f55Sf5qih5p2/5bm/5ZGK55qE5bC65a+477yM6buY6K6k5Li6Me+8jOWNszEwMCXjgILmraTlgLzlnKjlvq7kv6HmnI3liqHlkI7nq6/lub/lkYrkuK3ojrflvpfvvIzpu5jorqTkuLoxMDAl77yM55uu5YmN5pyJMTAwJe+8jDkwJe+8jDgwJeS4ieenje+8jOS4gOiIrOaDheWGteS4jeeUqOS/ruaUueOAguiLpeacieS/ruaUue+8jOiusOW+l+S8oOWFpeWAvO+8jOS+i+WmgjkwJeWwseS8oOWFpTAuOeOAglxyXG4gICAgICAgICAqL1xyXG4gICAgICAgIGNvbnN0cnVjdG9yKGFkVWlkOiBzdHJpbmcsIHRvcDogbnVtYmVyID0gMCwgbGVmdDogbnVtYmVyID0gMCwgc2NhbGU6IG51bWJlciA9IDEuMCkge1xyXG4gICAgICAgICAgICB0aGlzLl9hZFVpZCA9IGFkVWlkO1xyXG4gICAgICAgICAgICB0aGlzLmNyZWF0ZUN1c3RvbUFkKHRvcCwgbGVmdCwgc2NhbGUpO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgcHJpdmF0ZSBjcmVhdGVDdXN0b21BZCh0b3A6IG51bWJlciwgbGVmdDogbnVtYmVyLCBzY2FsZTogbnVtYmVyKSB7XHJcbiAgICAgICAgICAgIGlmICghaXNXZWNoYXQoKSkgeyAvLyBvbmx5IHdlY2hhdCBzdXBwb3J0IGN1c3RvbSBhZFxyXG4gICAgICAgICAgICAgICAgdGhpcy5fYWRDdXN0b20gPSBudWxsO1xyXG4gICAgICAgICAgICAgICAgY29uc29sZS5sb2coJ09ubHkgd2VjaGF0IHN1cHBvcnQgQ3VzdG9tIEFkJyk7XHJcbiAgICAgICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgIHRoaXMuZGVzdHJveSgpO1xyXG4gICAgICAgICAgICAvLyDljp/nlJ/mqKHmnb815Liq5bqU55So5a695bqm5Li6Mzc177yM6Iul6K6+572u5LqG57yp5pS+5q+U5L6L77yM5YiZ5a695bqm5Lmf6ZyA6KaB6K6+572uXHJcbiAgICAgICAgICAgIC8vIGxldCB3aWR0aCA9IDM3NSAqIHRoaXMuX3NjYWxlO1xyXG4gICAgICAgICAgICAvLyBsZXQgbmV3TGVmdCA9IChzeXMud2luZG93V2lkdGggLSB3aWR0aCkgLyAyO1xyXG4gICAgICAgICAgICAvLyBsZXQgbmV3VG9wID0gc3lzLndpbmRvd0hlaWdodCAvIDI7IC8vIDEyMOaYr+mihOS8sOmrmOW6plxyXG5cclxuICAgICAgICAgICAgLy8gQHRzLWlnbm9yZVxyXG4gICAgICAgICAgICB0aGlzLl9hZEN1c3RvbSA9IHd4LmNyZWF0ZUN1c3RvbUFkKHtcclxuICAgICAgICAgICAgICAgIGFkVW5pdElkOiB0aGlzLl9hZFVpZCxcclxuICAgICAgICAgICAgICAgIC8vQHRzLWlnbm9yZVxyXG4gICAgICAgICAgICAgICAgc3R5bGU6IHsgbGVmdDogbGVmdCwgdG9wOiB0b3AsIGZpeGVkOiB0cnVlIH1cclxuICAgICAgICAgICAgfSk7XHJcblxyXG4gICAgICAgICAgICB0aGlzLl9hZEN1c3RvbT8ub25FcnJvcigoZXJyOiBhbnkpID0+IHtcclxuICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKCdhZCBjdXN0b20gZXJyb3I6JywgZXJyKTtcclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHNob3coKSB7XHJcbiAgICAgICAgICAgIHRoaXMuX2FkQ3VzdG9tPy5zaG93KCk7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBoaWRlKCkge1xyXG4gICAgICAgICAgICB0aGlzLl9hZEN1c3RvbT8uaGlkZSgpO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgZGVzdHJveSgpIHtcclxuICAgICAgICAgICAgdGhpcy5fYWRDdXN0b20/LmRlc3Ryb3koKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG5cclxuICAgIC8qKlxyXG4gICAgICog6KeG6aKR5bm/5ZGK55So5oi354K55Ye76KGM5Li657uT5p6cXHJcbiAgICAgKi9cclxuICAgIGV4cG9ydCBlbnVtIEVBZFZpZGVvUmVzdWx0IHtcclxuICAgICAgICAvKipcclxuICAgICAgICAgKiDnlKjmiLfnnIvlrozkuoblub/lkYrvvIzmuLjmiI/lj6/lj5HmlL7lpZblirHjgIJcclxuICAgICAgICAgKi9cclxuICAgICAgICBBQ0NFUFQsXHJcblxyXG4gICAgICAgIC8qKlxyXG4gICAgICAgICAqIOeUqOaIt+S4remAlOWFs+mXreS6huW5v+WRiu+8jOWNs+acqueci+WujOeKtuaAgeOAguS4jeWPr+WPkeaUvuWlluWKseOAglxyXG4gICAgICAgICAqL1xyXG4gICAgICAgIFJFSkVDVCxcclxuXHJcbiAgICAgICAgLyoqXHJcbiAgICAgICAgICog5bm/5ZGK57uE5Lu25YaF6YOo5Y+R55Sf5LqG6ZSZ6K+v44CC5LiN5Y+v5Y+R5pS+5aWW5Yqx44CCXHJcbiAgICAgICAgICovXHJcbiAgICAgICAgRVJST1IsXHJcbiAgICB9XHJcblxyXG4gICAgY2xhc3MgQURWaWRlbyB7XHJcbiAgICAgICAgcHJpdmF0ZSBfYWRVaWQ6IHN0cmluZztcclxuICAgICAgICBwcml2YXRlIF9hZFZpZGVvOiBhbnkgPSBudWxsO1xyXG5cclxuICAgICAgICBnZXQgYWR1aWQoKSB7XHJcbiAgICAgICAgICAgIHJldHVybiB0aGlzLl9hZFVpZDtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGNvbnN0cnVjdG9yKGFkVWlkOiBzdHJpbmcpIHtcclxuICAgICAgICAgICAgdGhpcy5fYWRVaWQgPSBhZFVpZDtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIC8qKlxyXG4gICAgICAgICAqIOeUseS6juW+ruS/oeWSjOaKlumfs+inhumikeW5v+WRiuacuuWItuS4jeWQjO+8jOW+ruS/oeWPr+S7peeci+eahOinhumikeW5v+WRiuS4quaVsOWPquaciTDlkowx5Liq77yM5oqW6Z+z5bmz5Y+w5YiZ5Y+v5Lul55yLMH5tYXhWaWRlb0NvdW50XHJcbiAgICAgICAgICogQHBhcmFtIG9uUmVzdWx0IOS4pOS4quWPguaVsO+8muesrOS4gOS4qnJlc+aYr0VBZFZpZGVvUmVzdWx05a6a5LmJ77yM56ys5LqMY291bnTmmK/nlKjmiLfnnIvkuoblpJrlsJHkuKrop4bpopHlub/lkYrjgIJcclxuICAgICAgICAgKiBAcGFyYW0gdGFyZ2V0IG9uUmVzdWx055qE5oul5pyJ6ICFXHJcbiAgICAgICAgICogQHBhcmFtIG1heFZpZGVvQ291bnQg5Y+v5Lul6L+e57ut55yL5pyA5aSn6KeG6aKR5Liq5pWw77yM5Y+v5pyA5aSn5YyW5ZWG5Lia5pWI546H44CC6buY6K6k5Li6M+S4quOAglxyXG4gICAgICAgICAqIEByZXR1cm5zIFxyXG4gICAgICAgICAqL1xyXG4gICAgICAgIHNob3cob25SZXN1bHQ6IChyZXM6IEVBZFZpZGVvUmVzdWx0LCBjb3VudDogbnVtYmVyKSA9PiB2b2lkLCB0YXJnZXQ/OiBhbnksIG1heFZpZGVvQ291bnQ6IG51bWJlciA9IDMpOiB2b2lkIHtcclxuICAgICAgICAgICAgbGV0IGNhbGxiYWNrID0gKHN0YXRlOiBFQWRWaWRlb1Jlc3VsdCwgY291bnQ6IG51bWJlcikgPT4ge1xyXG4gICAgICAgICAgICAgICAgb25SZXN1bHQ/LmNhbGwodGFyZ2V0LCBzdGF0ZSwgY291bnQpO1xyXG4gICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICBpZiAoIWlzV2VjaGF0KCkgJiYgIWlzQnl0ZWRhbmNlKCkpIHtcclxuICAgICAgICAgICAgICAgIGNhbGxiYWNrKEVBZFZpZGVvUmVzdWx0LkFDQ0VQVCwgMSk7XHJcbiAgICAgICAgICAgICAgICB0aGlzLl9hZFZpZGVvID0gbnVsbDtcclxuICAgICAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgbGV0IG9uQWRWaWRlb0Nsb3NlZCA9IChyZXM6IGFueSkgPT4ge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5fYWRWaWRlbz8ub2ZmQ2xvc2Uob25BZFZpZGVvQ2xvc2VkKTtcclxuICAgICAgICAgICAgICAgIGlmIChpc1dlY2hhdCgpKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKHJlcyAmJiByZXMuaXNFbmRlZCB8fCByZXMgPT09IHVuZGVmaW5lZCkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBjYWxsYmFjayhFQWRWaWRlb1Jlc3VsdC5BQ0NFUFQsIDEpO1xyXG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhbGxiYWNrKEVBZFZpZGVvUmVzdWx0LlJFSkVDVCwgMCk7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfSBlbHNlIGlmIChpc0J5dGVkYW5jZSgpKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgbGV0IHJlc0NvbnZlcnRlZCA9IHJlcyBhcyB7IGlzRW5kZWQ6IGJvb2xlYW4sIGNvdW50OiBudW1iZXIgfTtcclxuICAgICAgICAgICAgICAgICAgICBpZiAocmVzQ29udmVydGVkICYmIHJlc0NvbnZlcnRlZC5jb3VudCA+IDApIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgY2FsbGJhY2soRUFkVmlkZW9SZXN1bHQuQUNDRVBULCByZXNDb252ZXJ0ZWQuY291bnQpO1xyXG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhbGxiYWNrKEVBZFZpZGVvUmVzdWx0LlJFSkVDVCwgMCk7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICB0aGlzLl9hZFZpZGVvPy5vZmZDbG9zZShvbkFkVmlkZW9DbG9zZWQpO1xyXG5cclxuICAgICAgICAgICAgaWYgKGlzV2VjaGF0KCkpIHtcclxuICAgICAgICAgICAgICAgIC8vIEB0cy1pZ25vcmVcclxuICAgICAgICAgICAgICAgIHRoaXMuX2FkVmlkZW8gPSB3eC5jcmVhdGVSZXdhcmRlZFZpZGVvQWQoe1xyXG4gICAgICAgICAgICAgICAgICAgIGFkVW5pdElkOiB0aGlzLl9hZFVpZFxyXG4gICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoaXNCeXRlZGFuY2UoKSkge1xyXG4gICAgICAgICAgICAgICAgLy8gQHRzLWlnbm9yZVxyXG4gICAgICAgICAgICAgICAgdGhpcy5fYWRWaWRlbyA9IHR0LmNyZWF0ZVJld2FyZGVkVmlkZW9BZCh7XHJcbiAgICAgICAgICAgICAgICAgICAgYWRVbml0SWQ6IHRoaXMuX2FkVWlkLFxyXG4gICAgICAgICAgICAgICAgICAgIG11bHRpdG9uOiB0cnVlLFxyXG4gICAgICAgICAgICAgICAgICAgIG11bHRpdG9uUmV3YXJkTXNnOiBbJ+WkmjHmrKHlpZblirEnLCAn5YaN5aSa5LiA5qyh5aWW5YqxJywgJ+WGjeWkmuS4gOasoeWlluWKsSddLFxyXG4gICAgICAgICAgICAgICAgICAgIG11bHRpdG9uUmV3YXJkVGltZXM6IG1heFZpZGVvQ291bnQsXHJcbiAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgIHRoaXMuX2FkVmlkZW8gPSBudWxsO1xyXG4gICAgICAgICAgICB9XHJcblxyXG5cclxuICAgICAgICAgICAgdGhpcy5fYWRWaWRlbz8ub25Mb2FkKCgpID0+IHtcclxuICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKCdBZCBsb2FkIHN1Y2Nlc3MnKTtcclxuICAgICAgICAgICAgfSk7XHJcblxyXG4gICAgICAgICAgICB0aGlzLl9hZFZpZGVvPy5vbkVycm9yKChlcnI6IHsgZXJyTXNnOiBzdHJpbmcsIGVyckNvZGU6IG51bWJlciB9KSA9PiB7XHJcbiAgICAgICAgICAgICAgICBjb25zb2xlLmxvZygnQWQgdmlkZW8gZXJyb3I6JywgZXJyKTtcclxuICAgICAgICAgICAgICAgIGNhbGxiYWNrKEVBZFZpZGVvUmVzdWx0LkVSUk9SLCAwKTtcclxuICAgICAgICAgICAgfSk7XHJcblxyXG4gICAgICAgICAgICB0aGlzLl9hZFZpZGVvPy5vbkNsb3NlKG9uQWRWaWRlb0Nsb3NlZCk7XHJcblxyXG4gICAgICAgICAgICB0aGlzLl9hZFZpZGVvPy5zaG93KCkuY2F0Y2goKCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5fYWRWaWRlbz8ubG9hZCgpLnRoZW4oKCkgPT5cclxuICAgICAgICAgICAgICAgICAgICB0aGlzLl9hZFZpZGVvPy5zaG93KCkpLmNhdGNoKChlcnI6IHsgZXJyTXNnOiBzdHJpbmcsIGVyckNvZGU6IG51bWJlciB9KSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKCdDYXRjaCB2aWRlbyBhZCBlcnJvcjonLCBlcnIpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBjYWxsYmFjayhFQWRWaWRlb1Jlc3VsdC5FUlJPUiwgMCk7XHJcbiAgICAgICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgZGVzdG9yeSgpIHtcclxuICAgICAgICAgICAgdGhpcy5fYWRWaWRlbz8uZGVzdG9yeSgpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBleHBvcnQgZW51bSBFQWRCYW5uZXJMb2NhdGlvbiB7XHJcbiAgICAgICAgLyoqXHJcbiAgICAgICAgICog5bGP5bmV6aG26YOoXHJcbiAgICAgICAgICovXHJcbiAgICAgICAgVE9QLFxyXG5cclxuICAgICAgICAvKipcclxuICAgICAgICAgKiDlsY/luZXlupXpg6hcclxuICAgICAgICAgKi9cclxuICAgICAgICBCT1RUT00sXHJcbiAgICB9XHJcblxyXG4gICAgZXhwb3J0IGNsYXNzIEFkdmVydE1hbmFnZXIge1xyXG5cclxuICAgICAgICBwcml2YXRlIHN0YXRpYyBfaW5zdGFuY2U6IEFkdmVydE1hbmFnZXI7XHJcblxyXG4gICAgICAgIHN0YXRpYyBnZXQgaW5zdGFuY2UoKTogQWR2ZXJ0TWFuYWdlciB7XHJcbiAgICAgICAgICAgIGlmICghQWR2ZXJ0TWFuYWdlci5faW5zdGFuY2UpIHtcclxuICAgICAgICAgICAgICAgIEFkdmVydE1hbmFnZXIuX2luc3RhbmNlID0gbmV3IEFkdmVydE1hbmFnZXIoKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICByZXR1cm4gQWR2ZXJ0TWFuYWdlci5faW5zdGFuY2U7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBwcml2YXRlIF92aWRlbzogQURWaWRlbztcclxuICAgICAgICBwcml2YXRlIF9pbnRlcnN0aXRpYWw6IEFESW50ZXJzdGl0aWFsO1xyXG4gICAgICAgIHByaXZhdGUgX2Jhbm5lcjogQURCYW5uZXI7XHJcbiAgICAgICAgcHJpdmF0ZSBfY3VzdG9tczogUmVjb3JkPHN0cmluZywgQURDdXN0b20+ID0ge307XHJcblxyXG4gICAgICAgIHByaXZhdGUgY29uc3RydWN0b3IoKSB7XHJcblxyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgLyoqXHJcbiAgICAgICAgICog6aKE5Yqg6L295qiq5bmF5bm/5ZGK77yM5LiN5Lya5pi+56S644CC5Y+q5pyJ5L2g5Zyo6LCD55Soc2hvd0Jhbm5lcuaXtuaJjeS8muaYvuekuuOAglxyXG4gICAgICAgICAqIOWPr+mHjeWkjeiwg+eUqO+8jOS9huaYr+S8mumUgOavgeS4iuS4gOasoeeahOWunuS+i+OAguS4gOiIrOaDheWGte+8jOWFqOWxgOacieS4gOS4quWwseihjOS6hu+8jOWkquWkmuWNoOeUqOWGheWtmO+8jOiAjOS4lOayoeW/heimgeOAglxyXG4gICAgICAgICAqIEBwYXJhbSBhZFVpZCDlub/lkYpVSURcclxuICAgICAgICAgKiBAcGFyYW0gbG9jYXRpb24g5L2N572u5pyJ5Lik56eN5oOF5Ya177yaMeOAgeWPr+S7peS8oOWFpeaemuS4vuWAvO+8jOm7mOiupOS4iuaWuTsgMuOAgeWPr+S7peiHquWumuS5ieS9jee9ruS8oOWFpUlQb3NpdGlvbu+8jOazqOaEj0lQb3NpdGlvbuS4reeahHRvcOWSjGxlZnTot5/lubPlj7DnmoR0b3AsbGVmdOaYr+S4gOiHtO+8iOayoeacieS5mOS7peiuvuWkh+WDj+e0oOavlHJhdGlv77yJ77yM6ZyA6KaB5byA5Y+R6ICF6Ieq5bex6LCD6K+V5L2N572uXHJcbiAgICAgICAgICogQHBhcmFtIHNjYWxlIOm7mOiupOS4uui3n+Wxj+W5leS4gOagt+eahOWuveW6pu+8jOWPr+S7pemAmui/h+iuvue9rue8qeaUvuavlOS+i+adpeiwg+aVtOWkp+Wwj+OAguW9k+eEtu+8jOW5s+WPsOacieinhOWumuacgOWkp+aIluacgOWwj+WuveW6pu+8jOWHveaVsOWGhemDqOS8muiHquWKqOiuoeeul+OAglxyXG4gICAgICAgICAqL1xyXG4gICAgICAgIHB1YmxpYyBsb2FkQmFubmVyKGFkVWlkOiBzdHJpbmcsIGxvY2F0aW9uOiBFQWRCYW5uZXJMb2NhdGlvbiB8IElQb3NpdGlvbiA9IEVBZEJhbm5lckxvY2F0aW9uLlRPUCwgc2NhbGU6IG51bWJlciA9IDEuMCkge1xyXG4gICAgICAgICAgICB0aGlzLl9iYW5uZXI/LmRlc3Ryb3koKTtcclxuICAgICAgICAgICAgbGV0IHNpemU6IElTaXplID0gZ2V0U3lzV2luU2l6ZSgpO1xyXG4gICAgICAgICAgICAvLyDlvZMgc3R5bGUud2lkdGgg5bCP5LqOIDMwMCDml7bvvIzkvJrlj5bkvZwgMzAw44CCIOW9kyBzdHlsZS53aWR0aCDlpKfkuo7lsY/luZXlrr3luqbml7bvvIzkvJrlj5bkvZzlsY/luZXlrr3luqbjgIJcclxuICAgICAgICAgICAgbGV0IHdpZHRoID0gc2l6ZS53aWR0aCAqIHNjYWxlO1xyXG4gICAgICAgICAgICB3aWR0aCA9IHdpZHRoIDwgMzAwID8gMzAwIDogd2lkdGg7IC8vIOacgOWwj+WAvOefq+ato1xyXG4gICAgICAgICAgICB3aWR0aCA9IHdpZHRoID4gc2l6ZS53aWR0aCA/IHNpemUud2lkdGggOiB3aWR0aDsgLy/mnIDlpKflgLznn6vmraNcclxuICAgICAgICAgICAgdGhpcy5fYmFubmVyID0gdHlwZW9mIGxvY2F0aW9uID09PSAnbnVtYmVyJyA/IG5ldyBBREJhbm5lcihhZFVpZCwgbG9jYXRpb24gPT09IEVBZEJhbm5lckxvY2F0aW9uLlRPUCwgd2lkdGgsIGZhbHNlKSA6IG5ldyBBREJhbm5lcihhZFVpZCwgbG9jYXRpb24sIHdpZHRoLCBmYWxzZSk7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICAvKipcclxuICAgICAgICAgKiDmmL7npLrmqKrluYXlub/lkYpcclxuICAgICAgICAgKi9cclxuICAgICAgICBwdWJsaWMgc2hvd0Jhbm5lcigpIHtcclxuICAgICAgICAgICAgaWYgKHRoaXMuX2Jhbm5lcikge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5fYmFubmVyLnNob3coKTtcclxuICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgIGNvbnNvbGUud2FybignTWluaUdhbWVTREs6IGJhbm5lciBpcyBudWxsLCB5b3UgbXVzdCBjYWxsIGxvYWRCYW5uZXIoLi4uKSBmaXJzdCEnKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgLyoqXHJcbiAgICAgICAgICog6ZqQ6JeP5qiq5bmF5bm/5ZGKXHJcbiAgICAgICAgICovXHJcbiAgICAgICAgcHVibGljIGhpZGVCYW5uZXIoKSB7XHJcbiAgICAgICAgICAgIHRoaXMuX2Jhbm5lcj8uaGlkZSgpO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgLyoqXHJcbiAgICAgICAgICog5by55Ye65o+S5bGP5bm/5ZGKXHJcbiAgICAgICAgICogQHBhcmFtIGFkVWlkIOW5v+WRiuWNleWFg2lkXHJcbiAgICAgICAgICovXHJcbiAgICAgICAgcHVibGljIHNob3dJbnRlcnN0aXRpYWwoYWRVaWQ6IHN0cmluZykge1xyXG4gICAgICAgICAgICBpZiAodGhpcy5faW50ZXJzdGl0aWFsICYmIHRoaXMuX2ludGVyc3RpdGlhbC5hZHVpZCA9PT0gYWRVaWQpIHtcclxuICAgICAgICAgICAgICAgIHRoaXMuX2ludGVyc3RpdGlhbC5zaG93KCk7XHJcbiAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLl9pbnRlcnN0aXRpYWw/LmRlc3RvcnkoKTtcclxuICAgICAgICAgICAgICAgIHRoaXMuX2ludGVyc3RpdGlhbCA9IG5ldyBBREludGVyc3RpdGlhbChhZFVpZCk7XHJcbiAgICAgICAgICAgICAgICB0aGlzLl9pbnRlcnN0aXRpYWwuc2hvdygpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICAvKipcclxuICAgICAgICAgKiDliqDovb3ljp/nlJ/mqKHmnb/lub/lkYrvvIzkuI3kvJrmmL7npLrjgILlj6rmnInkvaDlnKjosIPnlKhzaG93Q3VzdG9t5pe25omN5Lya5pi+56S644CCXHJcbiAgICAgICAgICog55Sx5LqO5Y6f55Sf5qih5p2/5bm/5ZGK5Zyo5b6u5L+h5pyN5Yqh5ZCO56uv5Y+v5Lul5a6a5Yi25a695bqm5aSn5bCP77yM5Liq5pWw77yM57yp5pS+5q+U5L6L562J77yM5omA5Lul5L2N572u6LCD5pW06KaB5qC55o2u6K6+572u55qE5a695bqm5p2l5a6a44CC5oqW6Z+z5LiN5pSv5oyB5pys5Ye95pWw77yM5Lya6LCD55So5peg5pWI77yBXHJcbiAgICAgICAgICogQHBhcmFtIGFkVWlkIOW5v+WRiklEXHJcbiAgICAgICAgICogQHBhcmFtIGxvY2F0aW9uIOS9jee9ruacieS4pOenjeaDheWGte+8mjHjgIHlj6/ku6XkvKDlhaXmnprkuL7lgLzvvIzpu5jorqTkuIrmlrk7IDLjgIHlj6/ku6Xoh6rlrprkuYnkvY3nva7kvKDlhaVJUG9zaXRpb27vvIzms6jmhI9JUG9zaXRpb27kuK3nmoR0b3DlkoxsZWZ06Lef5bmz5Y+w55qEdG9wLGxlZnTmmK/kuIDoh7TvvIjmsqHmnInkuZjku6Xorr7lpIflg4/ntKDmr5RyYXRpb++8ie+8jOmcgOimgeW8gOWPkeiAheiHquW3seiwg+ivleS9jee9rlxyXG4gICAgICAgICAqIEBwYXJhbSBzY2FsZSDnvKnmlL7mr5TkvovvvIzpu5jorqTmmK8x77yM5Y2z5LiN57yp5pS+44CC6L+Z5Liq57yp5pS+5bm25LiN5piv6Ieq5bex5aGr77yM6ICM5piv5qC55o2u5b6u5L+hTVDlkI7lj7DkvaDphY3nva7nmoTljp/nlJ/mqKHmnb/lub/lkYrnmoTnvKnmlL7mr5TkvovloavvvIznm67liY3mnIkxMDAl77yMOTAl77yMODAl5LiJ56eN77yM5LiA6Iis5oOF5Ya15LiN55So5L+u5pS544CC6Iul5pyJ5ZCO5Y+w5L+u5pS577yM6K6w5b6X5Lyg5YWl5YC877yM5L6L5aaCOTAl5bCx5Lyg5YWlMC4544CCXHJcbiAgICAgICAgICovXHJcbiAgICAgICAgcHVibGljIGxvYWRDdXN0b20oYWRVaWQ6IHN0cmluZywgbG9jYXRpb246IElQb3NpdGlvbiA9IHsgdG9wOiAwLCBsZWZ0OiAwIH0sIHNjYWxlOiBudW1iZXIgPSAxKSB7XHJcbiAgICAgICAgICAgIC8vIHRoaXMuX2N1c3RvbT8uZGVzdHJveSgpO1xyXG4gICAgICAgICAgICAvLyB0aGlzLl9jdXN0b20gPSBuZXcgQURDdXN0b20oYWRVaWQsIGxvY2F0aW9uLnRvcCwgbG9jYXRpb24ubGVmdCwgc2NhbGUpO1xyXG4gICAgICAgICAgICBpZiAodGhpcy5fY3VzdG9tc1thZFVpZF0pIHtcclxuICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKGAke2FkVWlkfSBoYXMgYmVlbiBsb2FkZWQuYCk7XHJcbiAgICAgICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgIHRoaXMuX2N1c3RvbXNbYWRVaWRdID0gbmV3IEFEQ3VzdG9tKGFkVWlkLCBsb2NhdGlvbi50b3AsIGxvY2F0aW9uLmxlZnQsIHNjYWxlKTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIC8qKlxyXG4gICAgICAgICAqIOaYvuekuuiHquWumuS5ieW5v+WRiuOAglxyXG4gICAgICAgICAqIEBwYXJhbSBhZFVpZCDlub/lkYrnmoTllK/kuIDmoIfor4bnrKbjgILkvb/nlKjmraTmoIfor4bnrKbmnaXmn6Xmib7lkozmmL7npLrnibnlrprnmoToh6rlrprkuYnlub/lkYrjgIJcclxuICAgICAgICAgKiBcclxuICAgICAgICAgKiDmraTmlrnms5XlsJ3or5XmoLnmja7mj5DkvpvnmoRhZFVpZOaYvuekuuS4gOS4quiHquWumuS5ieW5v+WRiuOAguWmguaenOe7meWumueahGFkVWlk5a+55bqU55qE6Ieq5a6a5LmJ5bm/5ZGK5bey5Yqg6L2977yMXHJcbiAgICAgICAgICog5YiZ6LCD55So6K+l5bm/5ZGK55qE5pi+56S65pa55rOV44CC5aaC5p6c5bm/5ZGK5pyq5Yqg6L2977yM5YiZ5Zyo5o6n5Yi25Y+w6L6T5Ye66K2m5ZGK5L+h5oGv44CCXHJcbiAgICAgICAgICovXHJcbiAgICAgICAgcHVibGljIHNob3dDdXN0b20oYWRVaWQ6IHN0cmluZykge1xyXG4gICAgICAgICAgICBpZiAodGhpcy5fY3VzdG9tc1thZFVpZF0pIHtcclxuICAgICAgICAgICAgICAgIHRoaXMuX2N1c3RvbXNbYWRVaWRdLnNob3coKTtcclxuICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgIGNvbnNvbGUud2FybihgWW91IGhhdmUgbm90IGxvYWQgJHthZFVpZH0gb2YgQ3VzdG9tIEFELCBjYW4gbm90IHNob3chYCk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIC8qKlxyXG4gICAgICAgICAqIOmakOiXj+aMh+WumueahOiHquWumuS5ieW5v+WRiuWNleWFg1xyXG4gICAgICAgICAqIFxyXG4gICAgICAgICAqIOatpOaWueazleeUqOS6jumakOiXj+mAmui/h+W5v+WRiuWNleWFg+agh+ivhuespu+8iGFkVWlk77yJ5oyH5a6a55qE6Ieq5a6a5LmJ5bm/5ZGK44CC5aaC5p6c5oyH5a6a55qE5bm/5ZGK5Y2V5YWD5bey5Yqg6L295bm25pi+56S677yMXHJcbiAgICAgICAgICog5YiZ5bCG5YW26ZqQ6JeP77yb5aaC5p6c5bm/5ZGK5Y2V5YWD5pyq5Yqg6L2977yM5YiZ5Zyo5o6n5Yi25Y+w6L6T5Ye66K2m5ZGK5L+h5oGv44CCXHJcbiAgICAgICAgICogXHJcbiAgICAgICAgICogQHBhcmFtIGFkVWlkIOW5v+WRiuWNleWFg+agh+ivhuespu+8jOeUqOS6juWUr+S4gOagh+ivhuS4gOS4quiHquWumuS5ieW5v+WRiuWNleWFg+OAglxyXG4gICAgICAgICAqL1xyXG4gICAgICAgIHB1YmxpYyBoaWRlQ3VzdG9tKGFkVWlkOiBzdHJpbmcpIHtcclxuICAgICAgICAgICAgaWYgKHRoaXMuX2N1c3RvbXNbYWRVaWRdKSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLl9jdXN0b21zW2FkVWlkXS5oaWRlKCk7XHJcbiAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICBjb25zb2xlLndhcm4oYFlvdSBoYXZlIG5vdCBsb2FkICR7YWRVaWR9IG9mIEN1c3RvbSBBRCwgY2FuIG5vdCBoaWRlIWApO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICAvKipcclxuICAgICAgICAgKiDnlLHkuo7lvq7kv6Hlkozmipbpn7Pop4bpopHlub/lkYrmnLrliLbkuI3lkIzvvIzlvq7kv6Hlj6/ku6XnnIvnmoTop4bpopHlub/lkYrkuKrmlbDlj6rmnIkw5ZKMMeS4qu+8jOaKlumfs+W5s+WPsOWImeWPr+S7peecizB+bWF4VmlkZW9Db3VudFxyXG4gICAgICAgICAqIEBwYXJhbSBhZFVpZCDlub/lkYpJROOAguWmguaenOS4juS4iuS4gOasoVVJROS4jeWQjO+8jOWImeWGhemDqOS8mumHjeaWsOWIm+W7uuWunuS+i+OAguW8gOWPkeiAheWujOWFqOS4jeeUqOWFs+W/g+i/meS4que7huiKguOAglxyXG4gICAgICAgICAqIEBwYXJhbSBvblZpZGVvUmVzdWx0IOS4pOS4quWPguaVsO+8muesrOS4gOS4qnJlc+aYr0VBZFZpZGVvUmVzdWx05a6a5LmJ77yM56ys5LqMY291bnTmmK/nlKjmiLfnnIvkuoblpJrlsJHkuKrop4bpopHlub/lkYrjgIIgXHJcbiAgICAgICAgICogQHBhcmFtIHRhcmdldCBvblZpZGVvUmVzdWx055qE5oul5pyJ6ICFXHJcbiAgICAgICAgICogQHBhcmFtIG1heFZpZGVvQ291bnQg5pyA5aSn6KeG6aKR5Liq5pWw44CC6buY6K6k5pivM++8jOS7heWvueaKlumfs+W5s+WPsOeUn+aViOOAguW+ruS/oeW5s+WPsOeci+WujOinhumikWNvdW5055qE57uT5p6c5rC46L+c5pivMeaIljBcclxuICAgICAgICAgKi9cclxuICAgICAgICBwdWJsaWMgc2hvd1ZpZGVvKGFkVWlkOiBzdHJpbmcsIG9uVmlkZW9SZXN1bHQ6IChyZXM6IEVBZFZpZGVvUmVzdWx0LCBjb3VudDogbnVtYmVyKSA9PiB2b2lkLCB0YXJnZXQ/OiBhbnksIG1heFZpZGVvQ291bnQ6IG51bWJlciA9IDMpIHtcclxuICAgICAgICAgICAgaWYgKHRoaXMuX3ZpZGVvICYmIHRoaXMuX3ZpZGVvLmFkdWlkID09PSBhZFVpZCkge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5fdmlkZW8uc2hvdyhvblZpZGVvUmVzdWx0LCB0YXJnZXQsIG1heFZpZGVvQ291bnQpO1xyXG4gICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5fdmlkZW8/LmRlc3RvcnkoKTtcclxuICAgICAgICAgICAgICAgIHRoaXMuX3ZpZGVvID0gbmV3IEFEVmlkZW8oYWRVaWQpO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5fdmlkZW8uc2hvdyhvblZpZGVvUmVzdWx0LCB0YXJnZXQsIG1heFZpZGVvQ291bnQpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICAvKipcclxuICAgICAgICAgKiDplIDmr4HlhoXpg6jmiYDmnInlrp7kvovvvIzmuIXnqbrlhoXlrZhcclxuICAgICAgICAgKi9cclxuICAgICAgICBwdWJsaWMgZGVzdHJveUFsbCgpIHtcclxuICAgICAgICAgICAgdGhpcy5fYmFubmVyPy5kZXN0cm95KCk7XHJcbiAgICAgICAgICAgIHRoaXMuX2Jhbm5lciA9IG51bGw7XHJcblxyXG4gICAgICAgICAgICB0aGlzLl9pbnRlcnN0aXRpYWw/LmRlc3RvcnkoKTtcclxuICAgICAgICAgICAgdGhpcy5faW50ZXJzdGl0aWFsID0gbnVsbDtcclxuXHJcbiAgICAgICAgICAgIHRoaXMuX3ZpZGVvPy5kZXN0b3J5KCk7XHJcbiAgICAgICAgICAgIHRoaXMuX3ZpZGVvID0gbnVsbDtcclxuXHJcbiAgICAgICAgICAgIGlmICh0aGlzLl9jdXN0b21zKSB7XHJcbiAgICAgICAgICAgICAgICBmb3IgKGxldCB2YWwgaW4gdGhpcy5fY3VzdG9tcykge1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuX2N1c3RvbXNbdmFsXT8uZGVzdHJveSgpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgdGhpcy5fY3VzdG9tcyA9IHt9O1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIGV4cG9ydCBlbnVtIEVHYW1lQ2x1Ykljb24ge1xyXG4gICAgICAgIC8qKiDnu7/oibLlm77moIcgKi9cclxuICAgICAgICBHUkVFTiA9ICdncmVlbicsXHJcblxyXG4gICAgICAgIC8qKiDnuqLoibLlm77moIcgKi9cclxuICAgICAgICBXSElURSA9ICd3aGl0ZScsXHJcblxyXG4gICAgICAgIC8qKiDmnInpu5HoibLlnIbop5Log4zmma/nmoTnmb3oibLlm77moIcgKi9cclxuICAgICAgICBEQVJLID0gJ2RhcmsnLFxyXG5cclxuICAgICAgICAvKiog5pyJ55m96Imy5ZyG6KeS6IOM5pmv55qE57u/6Imy5Zu+5qCHICovXHJcbiAgICAgICAgTElHSFQgPSAnbGlnaHQnXHJcbiAgICB9XHJcblxyXG4gICAgZXhwb3J0IGNsYXNzIEdhbWVDbHViIHtcclxuICAgICAgICBwcml2YXRlIHN0YXRpYyBfaW5zdGFuY2U6IEdhbWVDbHViO1xyXG5cclxuICAgICAgICBzdGF0aWMgZ2V0IGluc3RhbmNlKCk6IEdhbWVDbHViIHtcclxuICAgICAgICAgICAgaWYgKCF0aGlzLl9pbnN0YW5jZSkge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5faW5zdGFuY2UgPSBuZXcgR2FtZUNsdWIoKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICByZXR1cm4gdGhpcy5faW5zdGFuY2U7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBwcml2YXRlIF9jbHViOiBhbnk7XHJcblxyXG4gICAgICAgIHByaXZhdGUgY29uc3RydWN0b3IoKSB7XHJcblxyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgLyoqXHJcbiAgICAgICAgICog5Yib5bu65ri45oiP5ZyI5oyJ6ZKuXHJcbiAgICAgICAgICogQHBhcmFtIGljb24gXHJcbiAgICAgICAgICogQHBhcmFtIHBvc2l0aW9uIFxyXG4gICAgICAgICAqIEBwYXJhbSBzaXplIFxyXG4gICAgICAgICAqIEBwYXJhbSBvcGVuTGluayBcclxuICAgICAgICAgKi9cclxuICAgICAgICBjcmVhdGUoaWNvbjogRUdhbWVDbHViSWNvbiA9IEVHYW1lQ2x1Ykljb24uR1JFRU4sIHBvc2l0aW9uOiBJUG9zaXRpb24gPSB7IHRvcDogMCwgbGVmdDogMCB9LCBzaXplOiBJU2l6ZSA9IHsgd2lkdGg6IDQwLCBoZWlnaHQ6IDQwIH0sIG9wZW5MaW5rPzogc3RyaW5nKSB7XHJcbiAgICAgICAgICAgIGlmIChpc1dlY2hhdCgpKSB7XHJcbiAgICAgICAgICAgICAgICAvLyBAdHMtaWdub3JlXHJcbiAgICAgICAgICAgICAgICB0aGlzLl9jbHViID0gd3guY3JlYXRlR2FtZUNsdWJCdXR0b24oe1xyXG4gICAgICAgICAgICAgICAgICAgIGljb246IGljb24sXHJcbiAgICAgICAgICAgICAgICAgICAgc3R5bGU6IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgbGVmdDogcG9zaXRpb24ubGVmdCxcclxuICAgICAgICAgICAgICAgICAgICAgICAgdG9wOiBwb3NpdGlvbi50b3AsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHdpZHRoOiBzaXplLndpZHRoLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBoZWlnaHQ6IHNpemUuaGVpZ2h0XHJcbiAgICAgICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICAgICAgICBvcGVubGluazogb3BlbkxpbmtcclxuICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBzaG93KCkge1xyXG4gICAgICAgICAgICB0aGlzLl9jbHViPy5zaG93KCk7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBoaWRlKCkge1xyXG4gICAgICAgICAgICB0aGlzLl9jbHViPy5oaWRlKCk7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBkZXN0b3J5KCkge1xyXG4gICAgICAgICAgICB0aGlzLl9jbHViPy5kZXN0cm95KCk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuXHJcbiAgICAvKipcclxuICAgICAqIOaMr+WKqOexu+Wei1xyXG4gICAgICovXHJcbiAgICBleHBvcnQgZW51bSBFVmlyYnJhdGVUeXBlIHtcclxuICAgICAgICAvKipcclxuICAgICAgICAgKiDnn63mjK/liqhcclxuICAgICAgICAgKi9cclxuICAgICAgICBTSE9SVCxcclxuXHJcbiAgICAgICAgLyoqXHJcbiAgICAgICAgICog6ZW/5oyv5YqoXHJcbiAgICAgICAgICovXHJcbiAgICAgICAgTE9OR1xyXG4gICAgfVxyXG5cclxuXHJcblxyXG4gICAgICAgIC8qKlxyXG4gICAgICog5oqW6Z+z5L6n6L655qCP5LiT5bGe5o6l5Y+jXHJcbiAgICAgKi9cclxuICAgIGV4cG9ydCBjbGFzcyBCeXRlZGFuY2VTaWRlYmFyIHtcclxuICAgICAgICAvKipcclxuICAgICAgICAgKiDmnKzmuLjmiI/lnKjmipbpn7Pnjq/looPkuIvlkK/liqjnm5HmjqfvvIzpnIDopoHmlL7lnKjlhajlsYDnjq/looPkuK3vvIzkv53or4Hog73nrKzkuIDml7bpl7TlkK/liqjjgILlm6DkuLrlj6/og73nm5HlkKzmipbpn7PlpLHotKXvvIjmipbpn7PlsI/muLjmiI/lrpjmlrnnmoTor7TmmI7vvInvvIFcclxuICAgICAgICAgKiBAcGFyYW0gb25SZXN1bHQg5YyF5ZCr5LiA5LiqYm9vbGVhbuWPguaVsOeahOWHveaVsFxyXG4gICAgICAgICAqIEBwYXJhbSB0YXJnZXQg5LiK6L+w5Ye95pWw55qE5oul5pyJ6ICF77yM5aaC5p6c5piv57G755qE5oiQ5ZGY5Ye95pWw77yM6ZyA6KaB5Lyg5YWldGhpc+OAguaZrumAmuaIluWMv+WQjeWHveaVsOW/veeVpeWNs+WPr+OAglxyXG4gICAgICAgICAqL1xyXG4gICAgICAgIHN0YXRpYyBsaXN0ZW5Gcm9tU2lkZWJhcihvblJlc3VsdDogKHN1Y2Nlc3M6IGJvb2xlYW4pID0+IHZvaWQsIHRhcmdldD86IGFueSkge1xyXG4gICAgICAgICAgICBpZiAoIWlzQnl0ZWRhbmNlKCkpIHtcclxuICAgICAgICAgICAgICAgIG9uUmVzdWx0Py5jYWxsKHRhcmdldCwgZmFsc2UpO1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIC8vIEB0cy1pZ25vcmVcclxuICAgICAgICAgICAgdHQub25TaG93KChyZXM6IGFueSkgPT4ge1xyXG4gICAgICAgICAgICAgICAgY29uc29sZS5sb2coJ29uU2hvdyBsYXVuY2ggcmVzOicsIHJlcyk7XHJcbiAgICAgICAgICAgICAgICBpZiAocmVzLnNjZW5lID09PSAnMDIxMDM2Jykge1xyXG4gICAgICAgICAgICAgICAgICAgIG9uUmVzdWx0Py5jYWxsKHRhcmdldCwgdHJ1ZSk7XHJcbiAgICAgICAgICAgICAgICAgICAgY29uc29sZS5sb2coJ2xhdW5jaCBmcm9tIHNpZGViYXInKTtcclxuICAgICAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgICAgb25SZXN1bHQ/LmNhbGwodGFyZ2V0LCBmYWxzZSk7XHJcbiAgICAgICAgICAgICAgICAgICAgY29uc29sZS5sb2coJ05PVCBsYXVuY2ggZnJvbSBkb3V5aW4gc2lkZWJhciEnKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfSk7XHJcblxyXG4gICAgICAgICAgICAvLyBAdHMtaWdub3JlXHJcbiAgICAgICAgICAgIGxldCBvcHRpb25zID0gdHQuZ2V0TGF1bmNoT3B0aW9uc1N5bmMoKTtcclxuICAgICAgICAgICAgaWYgKG9wdGlvbnMgJiYgb3B0aW9ucy5zY2VuZSA9PT0gJzAyMTAzNicpIHtcclxuICAgICAgICAgICAgICAgIG9uUmVzdWx0Py5jYWxsKHRhcmdldCwgdHJ1ZSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIC8qKlxyXG4gICAgICAgICAqIOajgOa1i+aKlumfs+S+p+i+ueagj+aYr+WQpuWtmOWcqFxyXG4gICAgICAgICAqIEBwYXJhbSBvblJlc3VsdCDljIXlkKvkuIDkuKpib29sZWFu5Y+C5pWw55qE5Ye95pWwXHJcbiAgICAgICAgICogQHBhcmFtIHRhcmdldCDkuIrov7Dlh73mlbDnmoTmi6XmnInogIXvvIzlpoLmnpzmmK/nsbvnmoTmiJDlkZjlh73mlbDvvIzpnIDopoHkvKDlhaV0aGlz44CC5pmu6YCa5oiW5Yy/5ZCN5Ye95pWw5b+955Wl5Y2z5Y+v44CCXHJcbiAgICAgICAgICogQHJldHVybnMgXHJcbiAgICAgICAgICovXHJcbiAgICAgICAgc3RhdGljIGNoZWNrU2lkZUJhcihvblJlc3VsdDogKHN1Y2Nlc3M6IGJvb2xlYW4pID0+IHZvaWQsIHRhcmdldD86IGFueSkge1xyXG4gICAgICAgICAgICBpZiAoIWlzQnl0ZWRhbmNlKCkpIHtcclxuICAgICAgICAgICAgICAgIG9uUmVzdWx0Py5jYWxsKHRhcmdldCwgZmFsc2UpO1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAvL0B0cy1pZ25vcmVcclxuICAgICAgICAgICAgdHQuY2hlY2tTY2VuZSh7XHJcbiAgICAgICAgICAgICAgICBzY2VuZTogXCJzaWRlYmFyXCIsXHJcbiAgICAgICAgICAgICAgICBzdWNjZXNzOiAocmVzOiBhbnkpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICBjb25zb2xlLmxvZyhcImNoZWNrIHNjZW5lIHN1Y2Nlc3M6IFwiLCByZXMuaXNFeGlzdCk7XHJcbiAgICAgICAgICAgICAgICAgICAgb25SZXN1bHQ/LmNhbGwodGFyZ2V0LCA8Ym9vbGVhbj5yZXMuaXNFeGlzdCk7XHJcblxyXG4gICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICAgIGZhaWw6IChyZXM6IGFueSkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKFwiY2hlY2sgc2NlbmUgZmFpbDpcIiwgcmVzKTtcclxuICAgICAgICAgICAgICAgICAgICBvblJlc3VsdD8uY2FsbCh0YXJnZXQsIGZhbHNlKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICAvKipcclxuICAgICAgICAgKiDot7PovazliLDmipbpn7PkvqfovrnmoI9cclxuICAgICAgICAgKiBAcGFyYW0gb25SZXN1bHQg5YyF5ZCr5LiA5LiqYm9vbGVhbuWPguaVsOeahOWHveaVsFxyXG4gICAgICAgICAqIEBwYXJhbSB0YXJnZXQg5LiK6L+w5Ye95pWw55qE5oul5pyJ6ICF77yM5aaC5p6c5piv57G755qE5oiQ5ZGY5Ye95pWw77yM6ZyA6KaB5Lyg5YWldGhpc+OAguaZrumAmuaIluWMv+WQjeWHveaVsOW/veeVpeWNs+WPr+OAglxyXG4gICAgICAgICAqIEByZXR1cm5zIFxyXG4gICAgICAgICAqL1xyXG4gICAgICAgIHN0YXRpYyBuYXZpZ2F0ZVRvU2lkZWJhcihvblJlc3VsdDogKHN1Y2Nlc3M6IGJvb2xlYW4pID0+IHZvaWQsIHRhcmdldD86IGFueSkge1xyXG4gICAgICAgICAgICBpZiAoIWlzQnl0ZWRhbmNlKCkpIHtcclxuICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKFwibm90IGRvdXlpbiBwbGF0Zm9ybSFcIik7XHJcbiAgICAgICAgICAgICAgICBvblJlc3VsdD8uY2FsbCh0YXJnZXQsIGZhbHNlKTtcclxuICAgICAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgLy8gQHRzLWlnbm9yZVxyXG4gICAgICAgICAgICB0dC5uYXZpZ2F0ZVRvU2NlbmUoe1xyXG4gICAgICAgICAgICAgICAgc2NlbmU6IFwic2lkZWJhclwiLFxyXG4gICAgICAgICAgICAgICAgc3VjY2VzczogKCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKFwibmF2aWdhdGUgc3VjY2Vzc1wiKTtcclxuICAgICAgICAgICAgICAgICAgICBvblJlc3VsdD8uY2FsbCh0YXJnZXQsIHRydWUpO1xyXG4gICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICAgIGZhaWw6IChyZXM6IGFueSkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKFwibmF2aWdhdGUgZmFpbGVkIHJlYXNvbjpcIiwgcmVzKTtcclxuICAgICAgICAgICAgICAgICAgICBvblJlc3VsdD8uY2FsbCh0YXJnZXQsIGZhbHNlKTtcclxuICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIOW5s+WPsOW4uOeUqEFQSeWQiOmbhlxyXG4gICAgICovXHJcbiAgICBleHBvcnQgY2xhc3MgQVBJIHtcclxuICAgICAgICBwcml2YXRlIHN0YXRpYyBfbG9naW5Db2RlOiBzdHJpbmcgPSBudWxsO1xyXG4gICAgICAgIHByaXZhdGUgc3RhdGljIF9sb2dpbkFub255bW91c0NvZGU6IHN0cmluZyA9IG51bGw7XHJcbiAgICAgICAgcHJpdmF0ZSBzdGF0aWMgX2hhc0luaXRXZWNoYXRDbG91ZEZ1bmN0aW9uOiBib29sZWFuID0gZmFsc2U7XHJcbiAgICAgICAgcHJpdmF0ZSBzdGF0aWMgX3VzZXJJbmZvOiBhbnkgPSBudWxsO1xyXG4gICAgICAgIHByaXZhdGUgc3RhdGljIF90YTogYW55ID0gbnVsbDtcclxuXHJcbiAgICAgICAgLyoqXHJcbiAgICAgICAgICog5YiG5LqrYXBw57uZ5pyL5Y+L77yM5b6u5L+h5bCP5ri45oiP5YiG5Lqr5piv5rKh5pyJb25TdWNjZXNz5Zue6LCD55qE44CCXHJcbiAgICAgICAgICogQHBhcmFtIHRpdGxlIOagh+mimFxyXG4gICAgICAgICAqIEBwYXJhbSBkZXNjcmlwdGlvbiDnu4boioLmj4/ov7Dkv6Hmga8gXHJcbiAgICAgICAgICogQHBhcmFtIGltYWdlVXJsIOWbvueJh+WcsOWdgFxyXG4gICAgICAgICAqIEBwYXJhbSBxdWVyeSDmn6Xor6Lkv6Hmga9cclxuICAgICAgICAgKiBAcGFyYW0gb25TdWNjZXNzIOaKlumfs+S8muWbnuiwg++8jOW+ruS/oeS4jeS8muWbnuiwg1xyXG4gICAgICAgICAqL1xyXG4gICAgICAgIHN0YXRpYyBzaGFyZUFwcFRvRnJpZW5kcyh0aXRsZTogc3RyaW5nLCBkZXNjcmlwdGlvbjogc3RyaW5nID0gJycsIGltYWdlVXJsPzogc3RyaW5nLCBxdWVyeT86IHN0cmluZywgb25TdWNjZXNzPzogKCkgPT4gdm9pZCkge1xyXG4gICAgICAgICAgICBpZiAoaXNXZWNoYXQoKSkge1xyXG4gICAgICAgICAgICAgICAgdHJ5IHtcclxuICAgICAgICAgICAgICAgICAgICAvL0B0cy1pZ25vcmVcclxuICAgICAgICAgICAgICAgICAgICB3eC5zaGFyZUFwcE1lc3NhZ2Uoe1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB0aXRsZTogdGl0bGUsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGltYWdlVXJsOiBpbWFnZVVybCxcclxuICAgICAgICAgICAgICAgICAgICAgICAgcXVlcnk6IHF1ZXJ5LFxyXG4gICAgICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICAgICAgfSBjYXRjaCAoZXJyKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgY29uc29sZS5sb2coYHNoYXJlIGZhaWxkOiAke2Vycn1gKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgaWYgKGlzQnl0ZWRhbmNlKCkpIHtcclxuICAgICAgICAgICAgICAgIC8vQHRzLWlnbm9yZVxyXG4gICAgICAgICAgICAgICAgdHQuc2hhcmVBcHBNZXNzYWdlKHtcclxuICAgICAgICAgICAgICAgICAgICB0aXRsZTogdGl0bGUsXHJcbiAgICAgICAgICAgICAgICAgICAgZGVzYzogZGVzY3JpcHRpb24sXHJcbiAgICAgICAgICAgICAgICAgICAgaW1hZ2VVcmw6IGltYWdlVXJsID8/ICcnLFxyXG4gICAgICAgICAgICAgICAgICAgIHF1ZXJ5OiBxdWVyeSA/PyAnJyxcclxuICAgICAgICAgICAgICAgICAgICBzdWNjZXNzKHJlczogYW55KSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKCdzaGFyZSBzdWNjZXNzOicsIHJlcyk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIG9uU3VjY2Vzcz8uKCk7XHJcbiAgICAgICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICAgICAgICBmYWlsKHJlczogYW55KSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKCdzaGFyZSBmYWlsOicsIHJlcyk7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIC8qKlxyXG4gICAgICAgICAqIOaYvuekuuaPkOekuuS/oeaBr1xyXG4gICAgICAgICAqIEBwYXJhbSB0aXRsZSDmoIfpophcclxuICAgICAgICAgKiBAcGFyYW0gZHVyYXRpb24g5pe26ZW/77yI5Y2V5L2N77ya56eS77yJXHJcbiAgICAgICAgICogQHJldHVybnMgXHJcbiAgICAgICAgICovXHJcbiAgICAgICAgc3RhdGljIHNob3dUb2FzdCh0aXRsZTogc3RyaW5nLCBkdXJhdGlvbjogbnVtYmVyID0gMikge1xyXG4gICAgICAgICAgICBpZiAoaXNXZWNoYXQoKSkge1xyXG4gICAgICAgICAgICAgICAgLy8gQHRzLWlnbm9yZVxyXG4gICAgICAgICAgICAgICAgd3guc2hvd1RvYXN0KHtcclxuICAgICAgICAgICAgICAgICAgICB0aXRsZTogdGl0bGUsXHJcbiAgICAgICAgICAgICAgICAgICAgaWNvbjogJ25vbmUnLFxyXG4gICAgICAgICAgICAgICAgICAgIGR1cmF0aW9uOiBkdXJhdGlvbiAqIDUwMFxyXG4gICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICAvKipcclxuICAgICAgICAgKiDorr7lpIfpnIfliqjmlYjmnpzvvIzpu5jorqTkuLrnn63pnIfliqjjgILms6jmhI/vvJrlj6/og73kuIDkupvmnLrlnovkuI3kvJrnlJ/mlYjvvIzlhbfkvZPnnIvlubPlj7DmlrnnmoTor7TmmI5cclxuICAgICAgICAgKiBAcGFyYW0gdHlwZSBNaW5pR2FtZVNkay5BUEkuRVZpcmJyYXRlVHlwZVxyXG4gICAgICAgICAqL1xyXG4gICAgICAgIHN0YXRpYyB2aWJyYXRlKHR5cGU6IEVWaXJicmF0ZVR5cGUgPSBFVmlyYnJhdGVUeXBlLlNIT1JUKSB7XHJcbiAgICAgICAgICAgIGlmIChpc1dlY2hhdCgpKSB7XHJcbiAgICAgICAgICAgICAgICBzd2l0Y2ggKHR5cGUpIHtcclxuICAgICAgICAgICAgICAgICAgICBjYXNlIEVWaXJicmF0ZVR5cGUuU0hPUlQ6XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vQHRzLWlnbm9yZVxyXG4gICAgICAgICAgICAgICAgICAgICAgICB3eC52aWJyYXRlU2hvcnQoe1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc3VjY2VzcyhyZXM6IGFueSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKCd2aWJyYXRlIHN1Y2Nlc3M6JywgcmVzKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWlsKHJlczogYW55KSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc29sZS5sb2coJ3ZpYnJhdGVTaG9ydCBmYWlsZWQnLCByZXMpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICAgICAgICAgIGNhc2UgRVZpcmJyYXRlVHlwZS5MT05HOlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAvL0B0cy1pZ25vcmVcclxuICAgICAgICAgICAgICAgICAgICAgICAgd3gudmlicmF0ZUxvbmcoe1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc3VjY2VzcyhyZXM6IGFueSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKCd2aWJyYXRlIHN1Y2Nlc3MnLCByZXMpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhaWwocmVzOiBhbnkpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zb2xlLmxvZyhgdmlicmF0ZUxvbmcgZmFpbGVkYCwgcmVzKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgICAgICAgICBkZWZhdWx0OlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgaWYgKGlzQnl0ZWRhbmNlKCkpIHtcclxuICAgICAgICAgICAgICAgIHN3aXRjaCAodHlwZSkge1xyXG4gICAgICAgICAgICAgICAgICAgIGNhc2UgRVZpcmJyYXRlVHlwZS5TSE9SVDpcclxuICAgICAgICAgICAgICAgICAgICAgICAgLy9AdHMtaWdub3JlXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHR0LnZpYnJhdGVTaG9ydCh7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdWNjZXNzKHJlczogYW55KSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc29sZS5sb2coJ3ZpYnJhdGUgc3VjY2VzczonLCByZXMpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhaWwocmVzOiBhbnkpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zb2xlLmxvZygndmlicmF0ZVNob3J0IGZhaWxlZCcsIHJlcyk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgICAgICAgICAgY2FzZSBFVmlyYnJhdGVUeXBlLkxPTkc6XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vQHRzLWlnbm9yZVxyXG4gICAgICAgICAgICAgICAgICAgICAgICB0dC52aWJyYXRlTG9uZyh7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdWNjZXNzKHJlczogYW55KSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc29sZS5sb2coJ3ZpYnJhdGUgc3VjY2VzcycsIHJlcyk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFpbChyZXM6IGFueSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKGB2aWJyYXRlTG9uZyBmYWlsZWRgLCByZXMpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICAgICAgICAgIGRlZmF1bHQ6XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICAvKipcclxuICAgICAgICAgKiDph43lkK/lsI/muLjmiI9cclxuICAgICAgICAgKi9cclxuICAgICAgICBzdGF0aWMgcmVib290KCkge1xyXG4gICAgICAgICAgICBpZiAoaXNXZWNoYXQoKSkge1xyXG4gICAgICAgICAgICAgICAgLy9AdHMtaWdub3JlXHJcbiAgICAgICAgICAgICAgICB3eC5yZXN0YXJ0TWluaVByb2dyYW0oe1xyXG4gICAgICAgICAgICAgICAgICAgIHN1Y2Nlc3M6ICgpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgY29uc29sZS5sb2coJ3Jlc3RhcnQgc3VjY2VzcycpO1xyXG4gICAgICAgICAgICAgICAgICAgIH0sXHJcblxyXG4gICAgICAgICAgICAgICAgICAgIGZhaWw6ICgpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgY29uc29sZS5sb2coJ3Jlc3RhcnQgZmFpbGVkJyk7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfSlcclxuICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgaWYgKGlzQnl0ZWRhbmNlKCkpIHtcclxuICAgICAgICAgICAgICAgIHRyeSB7XHJcbiAgICAgICAgICAgICAgICAgICAgLy8gQHRzLWlnbm9yZVxyXG4gICAgICAgICAgICAgICAgICAgIHR0LnJlc3RhcnRNaW5pUHJvZ3JhbVN5bmMoKTtcclxuICAgICAgICAgICAgICAgIH0gY2F0Y2ggKGVycm9yKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgY29uc29sZS5sb2coYHJlc3RhcnRNaW5pUHJvZ3JhbVN5bmNgLCBlcnJvcik7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIC8qKlxyXG4gICAgICAgICAqIOmAgOWHuuWwj+a4uOaIj1xyXG4gICAgICAgICAqL1xyXG4gICAgICAgIHN0YXRpYyBleGl0KCkge1xyXG4gICAgICAgICAgICBpZiAoaXNXZWNoYXQoKSkge1xyXG4gICAgICAgICAgICAgICAgLy9AdHMtaWdub3JlXHJcbiAgICAgICAgICAgICAgICB3eC5leGl0TWluaVByb2dyYW0oe1xyXG4gICAgICAgICAgICAgICAgICAgIHN1Y2Nlc3M6ICgpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgY29uc29sZS5sb2coJ2V4aXQgc3VjY2VzcycpO1xyXG4gICAgICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgICAgICAgZmFpbDogKCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zb2xlLmxvZygnZXhpdCBmYWlsZWQnKTtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgaWYgKGlzQnl0ZWRhbmNlKCkpIHtcclxuICAgICAgICAgICAgICAgIC8vIEB0cy1pZ25vcmVcclxuICAgICAgICAgICAgICAgIHR0LmV4aXRNaW5pUHJvZ3JhbSh7XHJcbiAgICAgICAgICAgICAgICAgICAgc3VjY2VzcyhyZXM6IGFueSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zb2xlLmxvZyhcImV4aXQgc3VjY2VzczpcIiwgcmVzPy5kYXRhKTtcclxuICAgICAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgICAgICAgIGZhaWwocmVzOiBhbnkpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgY29uc29sZS5sb2coXCJleGl0IGZhaWw6XCIsIHJlcz8uZXJyTXNnKTtcclxuICAgICAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIC8qKlxyXG4gICAgICAgICAqIOaYvuekuui9rOWPkeaMiemSruOAgumAmuW4uOWcqOWImui/m+WFpea4uOaIj+eahOaXtuWAmeiwg+eUqOOAglxyXG4gICAgICAgICAqIOS4u+imgeaYr+aJk+W8gOW5s+WPsOKAnC4uLuKAnei/meS4quaMiemSrumHjOmdoueahOWIhuS6q+iPnOWNle+8jOS4gOiIrOm7mOiupOaYr+WFs+mXreeahO+8jOmcgOimgeiwg+eUqOi/meS4quWHveaVsOaJk+W8gOOAguWPr+S7peiuqeeUqOaIt+WIhuS6q+S9oOeahOa4uOaIj+WFpeWPo+OAglxyXG4gICAgICAgICAqL1xyXG4gICAgICAgIHN0YXRpYyBzaG93U2hhcmVNZW51KCkge1xyXG4gICAgICAgICAgICBpZiAoaXNXZWNoYXQoKSkge1xyXG4gICAgICAgICAgICAgICAgLy9AdHMtaWdub3JlXHJcbiAgICAgICAgICAgICAgICB3eC5zaG93U2hhcmVNZW51KHtcclxuICAgICAgICAgICAgICAgICAgICB3aXRoU2hhcmVUaWNrZXQ6IHRydWUsXHJcbiAgICAgICAgICAgICAgICAgICAgbWVudXM6IFsnc2hhcmVBcHBNZXNzYWdlJywgJ3NoYXJlVGltZWxpbmUnXSxcclxuICAgICAgICAgICAgICAgICAgICBzdWNjZXNzOiAoKSA9PiB7IH0sXHJcbiAgICAgICAgICAgICAgICAgICAgZmFpbDogKCkgPT4geyB9LFxyXG4gICAgICAgICAgICAgICAgICAgIGNvbXBsZXRlOiAoKSA9PiB7IH1cclxuICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICB9XHJcblxyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgLyoqXHJcbiAgICAgICAgICog5b6u5L+h5bCP5ri45oiP77ya6Lez6L2s5Yiw5Y+m5aSW5LiA5qy+5bCP5ri45oiPXHJcbiAgICAgICAgICog5oqW6Z+z5bCP5ri45oiP77ya6Lez6L2s5Yiw5oyH5a6a55qE6KeG6aKR55WM6Z2iXHJcbiAgICAgICAgICogQHBhcmFtIHRhcmdldElkIOW+ruS/oeWwj+a4uOaIj2FwcGlk5oiW6ICF6KeG6aKR55WM6Z2iXHJcbiAgICAgICAgICovXHJcbiAgICAgICAgc3RhdGljIG5hdmlnYXRlVG8odGFyZ2V0SWQ6IHN0cmluZywgb25TdWNjZXNzPzogKCkgPT4gdm9pZCkge1xyXG4gICAgICAgICAgICBpZiAoaXNXZWNoYXQoKSkge1xyXG4gICAgICAgICAgICAgICAgLy8gQHRzLWlnbm9yZVxyXG4gICAgICAgICAgICAgICAgd3gubmF2aWdhdGVUb01pbmlQcm9ncmFtKHtcclxuICAgICAgICAgICAgICAgICAgICBhcHBJZDogdGFyZ2V0SWQsXHJcbiAgICAgICAgICAgICAgICAgICAgZXh0cmFEYXRhOiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGZvbzogJ2JhcidcclxuICAgICAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgICAgICAgIGVudlZlcnNpb246ICdkZXZlbG9wJyxcclxuICAgICAgICAgICAgICAgICAgICBzdWNjZXNzKHJlczogYW55KSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIG9uU3VjY2Vzcz8uKCk7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgIGlmIChpc0J5dGVkYW5jZSgpKSB7XHJcbiAgICAgICAgICAgICAgICAvLyBAdHMtaWdub3JlXHJcbiAgICAgICAgICAgICAgICB0dC5uYXZpZ2F0ZVRvVmlkZW9WaWV3KHtcclxuICAgICAgICAgICAgICAgICAgICB2aWRlb0lkOiB0YXJnZXRJZCxcclxuICAgICAgICAgICAgICAgICAgICBzdWNjZXNzOiAocmVzOiBhbnkpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgb25TdWNjZXNzPy4oKTtcclxuICAgICAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgICAgICAgIGZhaWw6IChlcnI6IGFueSkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zb2xlLmxvZyhcImJ5dGVkYW5jZSBuYXZpZ2F0ZVRvVmlkZW9WaWV3IGZhaWxcIiwgZXJyKTtcclxuICAgICAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcblxyXG5cclxuICAgICAgICAvKipcclxuICAgICAgICAgKiDlsI/muLjmiI/lubPlj7DnmbvlvZXlip/og73jgILlvq7kv6Hov5Tlm55jb2Rl77yM5oqW6Z+z6L+U5ZueY29kZeWSjGFub255bW91c0NvZGXjgILnlKjkuo7nmbvlvZXnmoTlh63or4HvvIzpnIDopoHmiorov5nkuKpjb2Rl5Lyg5Zue5L2g55qE5pyN5Yqh5Zmo56iL5bqP5Lit5Y676LCD55SoY29kZTJTZXNzaW9uXHJcbiAgICAgICAgICogQHBhcmFtIGNhbGxiYWNrIChjb2RlLCBhbm9ueW1vdXNDb2RlKSDnrKzkuIDkuKrlj4LmlbDkuLpjb2Rl77yM5b6u5L+h5ZKM5oqW6Z+z6YO95pSv5oyB77yb56ys5LqM5Liq5Y+C5pWw5Li65Yy/5ZCN6K6+5aSHSUTvvIzku4Xmipbpn7PmlK/mjIHvvIzlpLHotKXpg73ov5Tlm55udWxsXHJcbiAgICAgICAgICovXHJcbiAgICAgICAgc3RhdGljIGxvZ2luKGNhbGxiYWNrOiAoY29kZTogc3RyaW5nLCBhbm9ueW1vdXNDb2RlOiBzdHJpbmcpID0+IHZvaWQpIHtcclxuICAgICAgICAgICAgbGV0IGxvZ2luUGxhdGZvcm0gPSAoKSA9PiB7XHJcbiAgICAgICAgICAgICAgICBpZiAoaXNXZWNoYXQoKSkge1xyXG4gICAgICAgICAgICAgICAgICAgIC8vQHRzLWlnbm9yZVxyXG4gICAgICAgICAgICAgICAgICAgIHd4LmxvZ2luKHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgc3VjY2VzczogKHJlczogeyBjb2RlOiBhbnk7IGVyck1zZzogYW55OyB9KSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAocmVzLmNvZGUpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBBUEkuX2xvZ2luQ29kZSA9IHJlcy5jb2RlO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFQSS5fbG9naW5Bbm9ueW1vdXNDb2RlID0gbnVsbDtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYWxsYmFjaz8uKEFQSS5fbG9naW5Db2RlLCBBUEkuX2xvZ2luQW5vbnltb3VzQ29kZSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKCdsb2dpbiBlcnJvcjonLCByZXMuZXJyTXNnKVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgZmFpbDogKCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgQVBJLl9sb2dpbkNvZGUgPSBudWxsO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgQVBJLl9sb2dpbkFub255bW91c0NvZGUgPSBudWxsO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FsbGJhY2s/LihBUEkuX2xvZ2luQ29kZSwgQVBJLl9sb2dpbkFub255bW91c0NvZGUpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc29sZS5sb2coJ2xvZ2luIGZhaWwnKVxyXG4gICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKGlzQnl0ZWRhbmNlKCkpIHtcclxuICAgICAgICAgICAgICAgICAgICAvL0B0cy1pZ25vcmVcclxuICAgICAgICAgICAgICAgICAgICB0dC5sb2dpbih7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGZvcmNlOiB0cnVlLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBzdWNjZXNzKHJlczogYW55KSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zb2xlLmxvZyhgbG9naW4gJHtyZXMuY29kZX0gJHtyZXMuYW5vbnltb3VzQ29kZX1gKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChyZXMuY29kZSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFQSS5fbG9naW5Db2RlID0gcmVzLmNvZGU/LnRvU3RyaW5nKCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQVBJLl9sb2dpbkFub255bW91c0NvZGUgPSByZXMuYW5vbnltb3VzQ29kZT8udG9TdHJpbmcoKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYWxsYmFjaz8uKEFQSS5fbG9naW5Db2RlLCBBUEkuX2xvZ2luQW5vbnltb3VzQ29kZSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKCdsb2dpbiBlcnJvcjonLCByZXMuZXJyTXNnKVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBmYWlsKHJlczogYW55KSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBBUEkuX2xvZ2luQ29kZSA9IG51bGw7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBBUEkuX2xvZ2luQW5vbnltb3VzQ29kZSA9IG51bGw7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYWxsYmFjaz8uKEFQSS5fbG9naW5Db2RlLCBBUEkuX2xvZ2luQW5vbnltb3VzQ29kZSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zb2xlLmxvZyhgbG9naW4gZmFpbGAsIHJlcyk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICAgIEFQSS5fbG9naW5Db2RlID0gbnVsbDtcclxuICAgICAgICAgICAgICAgICAgICBBUEkuX2xvZ2luQW5vbnltb3VzQ29kZSA9IG51bGw7XHJcbiAgICAgICAgICAgICAgICAgICAgY2FsbGJhY2s/LihBUEkuX2xvZ2luQ29kZSwgQVBJLl9sb2dpbkFub255bW91c0NvZGUpO1xyXG4gICAgICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKCdub3QgbWluaSBnYW1lIHBsYXRmb3JtLCBsb2dpbiBjb2RlcyBhcmUgYWxsIG51bGwnKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG5cclxuXHJcblxyXG4gICAgICAgICAgICBpZiAoIUFQSS5fbG9naW5Db2RlKSB7XHJcbiAgICAgICAgICAgICAgICBsb2dpblBsYXRmb3JtKCk7XHJcbiAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICBpZiAoaXNXZWNoYXQoKSkge1xyXG4gICAgICAgICAgICAgICAgICAgIC8vQHRzLWlnbm9yZVxyXG4gICAgICAgICAgICAgICAgICAgIHd4LmNoZWNrU2Vzc2lvbih7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHN1Y2Nlc3MoKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zb2xlLmxvZyhgc2Vzc2lvbiBpcyB2YWxpZCwgdXNlIGN1cnJlbnQgY29kZTpgLCBBUEkuX2xvZ2luQ29kZSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYWxsYmFjaz8uKEFQSS5fbG9naW5Db2RlLCBBUEkuX2xvZ2luQW5vbnltb3VzQ29kZSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGZhaWwoKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zb2xlLmxvZyhgc2Vzc2lvbiBleHBpcmVkYCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb2dpblBsYXRmb3JtKCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoaXNCeXRlZGFuY2UoKSkge1xyXG4gICAgICAgICAgICAgICAgICAgIC8vQHRzLWlnbm9yZVxyXG4gICAgICAgICAgICAgICAgICAgIHR0LmNoZWNrU2Vzc2lvbih7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHN1Y2Nlc3MoKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zb2xlLmxvZyhgc2Vzc2lvbiBpcyB2YWxpZCwgdXNlciBjdXJyZW50IGNvZGU6ICR7QVBJLl9sb2dpbkNvZGV9LCAke0FQSS5fbG9naW5Bbm9ueW1vdXNDb2RlfWApO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FsbGJhY2s/LihBUEkuX2xvZ2luQ29kZSwgQVBJLl9sb2dpbkFub255bW91c0NvZGUpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBmYWlsKCkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc29sZS5sb2coYHNlc3Npb24gZXhwaXJlZGApO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9naW5QbGF0Zm9ybSgpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgICAgICAgIH0pO1xyXG5cclxuICAgICAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgICAgY29uc29sZS5sb2coJ25vdCBtaW5pIGdhbWUgcGxhdGZvcm0sIGxvZ2luIG51bGwnKTtcclxuICAgICAgICAgICAgICAgICAgICBjYWxsYmFjaz8uKG51bGwsIG51bGwpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgICAgIC8qKlxyXG4gICAgICAgICAqIOWwj+a4uOaIj+W5s+WPsOeZu+W9leWKn+iDveOAguW+ruS/oei/lOWbnmNvZGXvvIzmipbpn7Pov5Tlm55jb2Rl5ZKMYW5vbnltb3VzQ29kZeOAgueUqOS6jueZu+W9leeahOWHreivge+8jOmcgOimgeaKiui/meS4qmNvZGXkvKDlm57kvaDnmoTmnI3liqHlmajnqIvluo/kuK3ljrvosIPnlKhjb2RlMlNlc3Npb25cclxuICAgICAgICAgKiBAcGFyYW0gY2FsbGJhY2sgKGNvZGUsIGFub255bW91c0NvZGUpIOesrOS4gOS4quWPguaVsOS4umNvZGXvvIzlvq7kv6Hlkozmipbpn7Ppg73mlK/mjIHvvJvnrKzkuozkuKrlj4LmlbDkuLrljL/lkI3orr7lpIdJRO+8jOS7heaKlumfs+aUr+aMge+8jOWksei0pemDvei/lOWbnm51bGxcclxuICAgICAgICAgKi9cclxuICAgICAgICBzdGF0aWMgZ2V0VXNlckluZm8oY2FsbGJhY2s6ICh1c2VySW5mbzogYW55KSA9PiB2b2lkKSB7XHJcbiAgICAgICAgICAgIC8vQHRzLWlnbm9yZVxyXG4gICAgICAgICAgICB0dC5nZXRVc2VySW5mbyh7XHJcbiAgICAgICAgICAgICAgICB3aXRoQ3JlZGVudGlhbHM6IHRydWUsXHJcbiAgICAgICAgICAgICAgICBzdWNjZXNzOiAocmVzOiBhbnkpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICBBUEkuX3VzZXJJbmZvID0gcmVzO1xyXG4gICAgICAgICAgICAgICAgICAgIGNhbGxiYWNrKEFQSS5fdXNlckluZm8pO1xyXG4gICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICAgIGZhaWw6IChlcnI6IGFueSkgPT57XHJcbiAgICAgICAgICAgICAgICAgICAgY2FsbGJhY2soZXJyKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICAvKipcclxuICAgICAgICAgKiDosIPnlKjlvq7kv6HkupHlh73mlbDjgILnlLHkuo7lj4LmlbDpnIDopoHoh6rlrprkuYnvvIzmiYDku6XkuLphbnnvvIzpnIDopoHoh6rooYzop6Pph4rjgILlh73mlbDlj6rlrozmiJDpgJrpgZPlkozlpITnkIbkuIDlnLrnmoTkvZznlKhcclxuICAgICAgICAgKiBAcGFyYW0gY2FsbGJhY2sg6L+U5Zue5LqR5Ye95pWw6LCD55So57uT5p6c44CC6ZyA6KaB5qOA5p+l6L+U5Zue5Y+C5pWw5piv5ZCm5Li656m677yM5aSx6LSl55qE5pe25YCZ5Li656m6XHJcbiAgICAgICAgICogQHBhcmFtIG5hbWUg5LqR5Ye95pWw55qE5ZCN5a2XXHJcbiAgICAgICAgICogQHBhcmFtIGRhdGEg5LqR5Ye95pWw55qE5YaF5a65XHJcbiAgICAgICAgICovXHJcbiAgICAgICAgc3RhdGljIGNhbGxXZWNoYXRDbG91ZEZ1bmN0aW9uKGNhbGxiYWNrOiAocmVzOiBhbnkpID0+IHZvaWQsIG5hbWU6IHN0cmluZywgZGF0YToge30pIHtcclxuICAgICAgICAgICAgaWYgKCFpc1dlY2hhdCgpKSB7XHJcbiAgICAgICAgICAgICAgICBjb25zb2xlLmxvZygnTm90IHdlY2hhdCBwbGF0Zm9ybSwgbm90IHN1cHBvcnQgY2FsbFdlY2hhdENsb3VkRnVuY3Rpb24nKTtcclxuICAgICAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgdGhpcy5sb2dpbigoY29kZTogc3RyaW5nLCBhbm9ueW1vdXNDb2RlOiBzdHJpbmcpID0+IHtcclxuICAgICAgICAgICAgICAgIGlmICghQVBJLl9oYXNJbml0V2VjaGF0Q2xvdWRGdW5jdGlvbikge1xyXG4gICAgICAgICAgICAgICAgICAgIC8vQHRzLWlnbm9yZVxyXG4gICAgICAgICAgICAgICAgICAgIHd4LmNsb3VkLmluaXQoKTtcclxuICAgICAgICAgICAgICAgICAgICBBUEkuX2hhc0luaXRXZWNoYXRDbG91ZEZ1bmN0aW9uID0gdHJ1ZTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIC8vQHRzLWlnbm9yZVxyXG4gICAgICAgICAgICAgICAgd3guY2xvdWQuY2FsbEZ1bmN0aW9uKHtcclxuICAgICAgICAgICAgICAgICAgICBuYW1lOiBuYW1lLFxyXG4gICAgICAgICAgICAgICAgICAgIGRhdGE6IGRhdGEsXHJcbiAgICAgICAgICAgICAgICAgICAgc3VjY2VzczogKHJlczogYW55KSA9PiBjYWxsYmFjaz8uKHJlcyksXHJcbiAgICAgICAgICAgICAgICAgICAgZmFpbDogKGVycjogYW55KSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKCd3ZWNoYXQgY2xvdWQgZnVuY3Rpb24gZXJyb3I6JywgZXJyKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgY2FsbGJhY2s/LihudWxsKTtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICAvKipcclxuICAgICAgICAgKiDlrZjlgqjnlKjmiLfkv6Hmga/vvIzmlbDmja7ph4/kuI3og73lpKfjgILlj6/ku6XogIPomZHnlKjkuo7liIbmlbDmjpLooYzmppzjgILnlKjmiLfkuYvpl7Tlj6/lhbHkuqvmjpLooYzmlbDmja7jgIJcclxuICAgICAgICAgKiBAcGFyYW0ga2V5IFxyXG4gICAgICAgICAqIEBwYXJhbSB2YWx1ZSBcclxuICAgICAgICAgKi9cclxuICAgICAgICBzdGF0aWMgc2V0VXNlckNsb3VkU3RvcmFnZShrZXk6IHN0cmluZywgdmFsdWU6IHN0cmluZykge1xyXG4gICAgICAgICAgICBpZiAoaXNXZWNoYXQoKSkge1xyXG4gICAgICAgICAgICAgICAgLy8gQHRzLWlnbm9yZVxyXG4gICAgICAgICAgICAgICAgd3guc2V0VXNlckNsb3VkU3RvcmFnZSh7XHJcbiAgICAgICAgICAgICAgICAgICAgS1ZEYXRhTGlzdDogW3sga2V5OiBrZXksIHZhbHVlOiB2YWx1ZSB9XSxcclxuICAgICAgICAgICAgICAgICAgICBzdWNjZXNzOiAoKSA9PiBjb25zb2xlLmxvZyhgc2V0IGNsb3VkIHN0b3JhZ2Ugc3VjY2Vzczoke2tleX0sIHZhbHVlOiR7dmFsdWV9YCksXHJcbiAgICAgICAgICAgICAgICAgICAgZmFpbDogKGVycjogYW55KSA9PiBjb25zb2xlLmxvZygnc2V0IGNsb3VkIHN0b3JhZ2UgZXJyb3I6JywgZXJyKVxyXG4gICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgIGlmIChpc0J5dGVkYW5jZSgpKSB7XHJcbiAgICAgICAgICAgICAgICAvLyBAdHMtaWdub3JlXHJcbiAgICAgICAgICAgICAgICB0dC5zZXRVc2VyQ2xvdWRTdG9yYWdlKHtcclxuICAgICAgICAgICAgICAgICAgICBLVkRhdGFMaXN0OiBbeyBrZXk6IGtleSwgdmFsdWU6IHZhbHVlLCB9XSxcclxuICAgICAgICAgICAgICAgICAgICBzdWNjZXNzOiAoKSA9PiBjb25zb2xlLmxvZyhgc2V0IGNsb3VkIHN0b3JhZ2Ugc3VjY2Vzczoke2tleX0sIHZhbHVlOiR7dmFsdWV9YCksXHJcbiAgICAgICAgICAgICAgICAgICAgZmFpbDogKGVycjogYW55KSA9PiBjb25zb2xlLmxvZygnc2V0IGNsb3VkIHN0b3JhZ2UgZXJyb3I6JywgZXJyKVxyXG4gICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcblxyXG5cclxuICAgICAgICAvKlxyXG4gICAgICAgICog5pWw5pWw5bmz5Y+w5Yid5aeL5YyW5Lul5Y+K55m75b2VXHJcbiAgICAgICAgKi9cclxuXHJcbiAgICAgICAgc3RhdGljIHNodXNodV9Jbml0KCl7XHJcbiAgICAgICAgICAgIGlmICh0eXBlb2Ygd3ghPT0gJ3VuZGVmaW5lZCcgJiYgd3ghPT0gbnVsbCkge1xyXG4gICAgICAgICAgICAgICAgY29uc29sZS5sb2coXCLlvIDlp4vmjqXlhaXmlbDmlbDlubPlj7BcIik7XHJcbiAgICAgICAgICAgICAgICAvL2dldFdlY2hhdEdhbWVWZXJzaW9uXHJcbiAgICAgICAgICAgICAgICBsZXQgYXBwSWQgPSBcIjEyMTU5MTM3OGZjMTQyMzg5M2RlYjEyMDQxNDEzZWIzXCI7XHJcbiAgICAgICAgICAgICAgICBsZXQgdGVzdCA9IGNjLmZ4LkdhbWVUb29sLmdldFdlY2hhdEdhbWVWZXJzaW9uKCk7XHJcbiAgICAgICAgICAgICAgICBpZih0ZXN0ID09IFwi5q2j5byP54mIXCIpe1xyXG4gICAgICAgICAgICAgICAgICAgIGFwcElkID0gXCI4N2QxODk1OGNlYTE0NWYyOWQzMjY1NDcwZWNkMzQ4NlwiO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgdmFyIGNvbmZpZyA9IHtcclxuICAgICAgICAgICAgICAgICAgICAvLyBhcHBJZDogXCI3M2UxZWM2NTRmMTViNDdhMWE3MzU0ZmJhYmVjMDVhZFwiLCAvLyDpobnnm64gQVBQIElEXHJcbiAgICAgICAgICAgICAgICAgICAgYXBwSWQ6YXBwSWQsXHJcbiAgICAgICAgICAgICAgICAgICAgc2VydmVyVXJsOiBcImh0dHBzOi8vZGF0YS5uaWthNGZ1bi5jb21cIiwgLy8g5LiK5oql5Zyw5Z2AXHJcbiAgICAgICAgICAgICAgICAgICAgYXV0b1RyYWNrOiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGFwcFNob3c6IHRydWUsIC8vIOiHquWKqOmHh+mbhiB0YV9tZ19zaG93XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGFwcEhpZGU6IHRydWUgLy8g6Ieq5Yqo6YeH6ZuGIHRhX21nX2hpZGVcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9O1xyXG4gICAgICAgICAgICAgICAgLy8g5Yib5bu6IFRBIOWunuS+i1xyXG4gICAgICAgICAgICAgICAgQVBJLl90YSA9IG5ldyBUaGlua2luZ0FuYWx5dGljc0FQSShjb25maWcpO1xyXG4gICAgICAgICAgICAgICAgLy92YXIgZGV2aWNlSWQgPSBBUEkuX3RhLmdldERldmljZUlkKCk7XHJcblxyXG4gICAgICAgICAgICAgICAgQVBJLl90YS5sb2dpbihjYy5meC5HYW1lQ29uZmlnLkdNX0lORk8ub3BlbmlkKTtcclxuICAgICAgICAgICAgICAgIGNvbnN0IHJlc3VsdCA9IFwic3VjY2Vzc1wiO1xyXG4gICAgICAgICAgICAgICAgQVBJLnNodXNodV9UcmFjayhcImxvZ2luXCIscmVzdWx0KTtcclxuXHJcbiAgICAgICAgICAgICAgICAvLyDliJ3lp4vljJZcclxuICAgICAgICAgICAgICAgIEFQSS5fdGEgLmluaXQoKTsgXHJcblxyXG4gICAgICAgICAgICAgICAgQVBJLnNodXNodV9TZXRTdXBlclByb3BlcnRpZXMoKTtcclxuICAgICAgICAgICAgICAgIC8vY29uc29sZS5sb2coXCLmlbDmlbDlubPlj7DliJ3lp4vljJbmiJDlip8hXCIpO1xyXG4gICAgICAgICAgICAgICAgLy8gdGhpcy5UQS5jbGVhclN1cGVyUHJvcGVydGllcygpO1xyXG4gICAgICAgICAgICAgICAgLy/orr7nva7nlKjmiLflsZ7mgKdcclxuICAgICAgICAgICAgICAgIC8vIHRoaXMuVEEudXNlclNldCh7IHVzZXJuYW1lOiBcIuWkp+aguOahg1wiIH0pO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBzdGF0aWMgc2h1c2h1X3VzZXJTZXQodGltZSl7XHJcbiAgICAgICAgICAgIGlmICh0eXBlb2Ygd3ghPT0gJ3VuZGVmaW5lZCcgJiYgd3ghPT0gbnVsbCkge1xyXG4gICAgICAgICAgICAgICAgY29uc29sZS5sb2coXCLorr7nva7nlKjmiLfms6jlhozlsZ7mgKdcIik7XHJcbiAgICAgICAgICAgICAgICBBUEkuX3RhLnVzZXJTZXQoeyByZWdpc3Rlcl90aW1lOnRpbWV9KTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgLypcclxuICAgICAgICAqIOaVsOaVsOW5s+WPsOiuvue9ruWKqOaAgeWFrOWFseWxnuaAp1xyXG4gICAgICAgICovXHJcblxyXG4gICAgICAgIHN0YXRpYyBzaHVzaHVfU2V0U3VwZXJQcm9wZXJ0aWVzKCl7XHJcbiAgICAgICAgICAgaWYgKHR5cGVvZiB3eCE9PSAndW5kZWZpbmVkJyAmJiB3eCE9PSBudWxsICYmIEFQSS5fdGEpIHtcclxuICAgICAgICAgICAgICAgIGNvbnN0IHZlcnNpb25EYXRhID0gXCIxLjNcIjtcclxuICAgICAgICAgICAgICAgIC8vIEFQSS5fdGEudXNlclNldE9uY2UoeyByZWdpc3Rlcl90aW1lOnRpbWV9KTtcclxuICAgICAgICAgICAgICAgIHZhciBzdXBlclByb3BlcnRpZXMgPSB7XHJcbiAgICAgICAgICAgICAgICAgICAgY3VycmVudF9sZXZlbCA6IChjYy5meC5HYW1lQ29uZmlnLkdNX0lORk8ubGV2ZWwrMSksIC8v5b2T5YmN5YWz5Y2h562J57qnICBudW1iZXJcclxuICAgICAgICAgICAgICAgICAgICBjdXJyZW50X2hlYWx0aDogY2MuZnguR2FtZUNvbmZpZy5HTV9JTkZPLmhwLCAgICAgICAgLy/lvZPliY3kvZPlipvlgLxcclxuICAgICAgICAgICAgICAgICAgICB0bXBfY29pbiA6IGNjLmZ4LkdhbWVDb25maWcuR01fSU5GTy5jb2luLC8v5b2T5YmN6YeR5biBXHJcbiAgICAgICAgICAgICAgICAgICAgdmVyc2lvbjogdmVyc2lvbkRhdGFcclxuICAgICAgICAgICAgICAgIH07XHJcbiAgICAgICAgICAgICAgICBBUEkuX3RhLnNldFN1cGVyUHJvcGVydGllcyhzdXBlclByb3BlcnRpZXMpOy8v6K6+572u5YWs5YWx5LqL5Lu25bGe5oCnXHJcbiAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgc3RhdGljIGdldFdlY2hhdEdhbWVWZXJzaW9uKCk6IHN0cmluZyB8IG51bGwge1xyXG4gICAgICAgICAgICBpZiAodHlwZW9mIHd4IT09ICd1bmRlZmluZWQnICYmIHd4IT09IG51bGwpIHtcclxuICAgICAgICAgICAgICAgIC8vIEB0cy1pZ25vcmVcclxuICAgICAgICAgICAgICAgIGNvbnN0IGFjY291bnRJbmZvID0gd3guZ2V0QWNjb3VudEluZm9TeW5jKCk7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gYWNjb3VudEluZm8ubWluaVByb2dyYW0udmVyc2lvbjtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgLypcclxuICAgICAgICAqIOaVsOaVsOW5s+WPsOWFt+S9k+Wfi+eCuVxyXG4gICAgICAgICovXHJcblxyXG4gICAgICAgIHN0YXRpYyBzaHVzaHVfVHJhY2sobmFtZSwgZGF0YSwgY2FsbGJhY2s/OiAoc3VjY2VzczogYm9vbGVhbiwgZXJyb3I/OiBhbnkpID0+IHZvaWQpIHtcclxuICAgICAgICAgICAgaWYgKHR5cGVvZiB3eCE9PSAndW5kZWZpbmVkJyAmJiB3eCE9PSBudWxsKSB7XHJcbiAgICAgICAgICAgICAgICBpZiAoQVBJLl90YSkge1xyXG4gICAgICAgICAgICAgICAgICAgIC8vIOWBh+iuviB0cmFjayDmlrnms5Xov5Tlm57kuIDkuKogUHJvbWlzZVxyXG4gICAgICAgICAgICAgICAgICAgIEFQSS5fdGEudHJhY2soXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIG5hbWUsIC8vIOS6i+S7tuWQjeensFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBkYXRhIC8vIOS6i+S7tuWxnuaApyBcclxuICAgICAgICAgICAgICAgICAgICApXHJcbiAgICAgICAgICAgICAgICB9IFxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxufSJdfQ== -//------QC-SOURCE-SPLIT------ - - (function() { - var nodeEnv = typeof require !== 'undefined' && typeof process !== 'undefined'; - var __module = nodeEnv ? module : {exports:{}}; - var __filename = 'preview-scripts/assets/Script/module/GameStart/GameAppStart.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, '61d4ccY2ztLMYIh8WvqPPAw', 'GameAppStart'); -// Script/module/GameStart/GameAppStart.ts - -"use strict"; -Object.defineProperty(exports, "__esModule", { value: true }); -var Storage_1 = require("../Storage/Storage"); -var GameConfig_1 = require("../Config/GameConfig"); -var HttpUtil_1 = require("../Crypto/HttpUtil"); -var AudioManager_1 = require("../Music/AudioManager"); -var Notification_1 = require("../Notification/Notification"); -var GameTool_1 = require("../Tool/GameTool"); -window.initMgr = function () { - if (cc.fx) { - return; - } - cc.fx = {}; - // console.log("1初始化"); - //基础状态信息 - cc.fx.StateInfo = { - debugMode: true, - networkConnected: true, - networkType: 'none', - isOnForeground: true //当前是否是在前台 - }; - //应用系统信息 - //配置文件 - cc.fx.StorageMessage = Storage_1.StorageMessage; - cc.fx.AudioManager = AudioManager_1.default; - cc.fx.GameConfig = GameConfig_1.GameConfig; - cc.fx.HttpUtil = HttpUtil_1.default; - cc.fx.GameTool = GameTool_1.GameTool; - cc.fx.Notifications = Notification_1.Notifications; - cc.fx.ShareInfo = { - queryId: -1 //分享id - }; - cc.fx.Message = { - control: "10001", - startGame: "10002", - next: "10003", - changePath: "10004", - changeMap: "10005", - nextWater: "10006", - addEnd: "10007", - setData: "10008", - guideNext: "10009", - showResult: "10010", - removeTip: "10011" //执行撤回或者后退动作,移除提示 - }; - /* - * 客户端埋点分享类型 - */ - cc.fx.BurialShareType = { - Default: "default", - Invite: "invite", - DailyInviteRoomJoin: 'invite_join_room', - DailyInviteFriend: 'invite_friend', - DailyInviteGroup: 'invate_group', - DailyInviteGroupAlive: 'invate_alive', - DailyInviteGroupReward: 'invate_rewared', - DailyInviteGroupBox: 'invate_box', - DailyInviteGroupBall: 'invate_ball', - MatchResult: 'matchResult', - MatchFix5: 'MatchFix5', - MatchFix20: 'MatchFix20', - MatchFix100: 'MatchFix100', - MatchFix500: 'MatchFix500', - NewerRedEnvelope: 'newerRedEnvelope', - CoinRoomResult: 'coinRoomResult', - HighRate: "highRate", - CoinRoomWinStreak: 'coinRoomWinStreak', - CoinRoomBankruptcy1: 'coinRoomBankruptcy1', - CoinRoomBankruptcy2: 'coinRoomBankruptcy2', - CoinRoomBankruptcy3: 'coinRoomBankruptcy3', - }; - /* - * 分享到哪儿给奖励 group frined all - */ - cc.fx.ShareWhereReward = { - Group: "group", - Friend: "friend", - All: "all", - }; - //用于存储消息的ID - cc.fx.storageType = cc.Enum({ - storageTypeCustom: 1000101, - }); - //用于存储提示语 按照步骤提示 - cc.fx.tipType = cc.Enum({ - tipOne: '神农氏回到家中,开始整理今天收集来的物品。当他第一次拿出或说出一种植物时,请告诉他这是新植物。', - tipTwo: '如果他拿出或说出的植物你今天看到过,请告诉他上次是看到的;如果你听他说过,则请告诉他上次是听到的。', - tipErrNew: '这是这局游戏第一次出现{植物}', - tipErrOld: '{植物}刚才出现过呢', - tipErrHear: '上次遇到{植物}时,似乎不是听到的吧', - tipErrSee: '上次遇到{植物}时,似乎不是看到的吧', - tipErrLast: '之前确实看到过{植物},但最近一次似乎不是看到的呢', - }); -}; - -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,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImFzc2V0c1xcU2NyaXB0XFxtb2R1bGVcXEdhbWVTdGFydFxcR2FtZUFwcFN0YXJ0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsOENBQW9EO0FBQ3BELG1EQUFrRDtBQUNsRCwrQ0FBMEM7QUFDMUMsc0RBQWlEO0FBQ2pELDZEQUE2RDtBQUM3RCw2Q0FBNEM7QUFHNUMsTUFBTSxDQUFDLE9BQU8sR0FBRztJQUNiLElBQUcsRUFBRSxDQUFDLEVBQUUsRUFDUjtRQUNJLE9BQU87S0FDVjtJQUNELEVBQUUsQ0FBQyxFQUFFLEdBQUcsRUFBRSxDQUFDO0lBQ1gsdUJBQXVCO0lBRXZCLFFBQVE7SUFDUixFQUFFLENBQUMsRUFBRSxDQUFDLFNBQVMsR0FBRztRQUNkLFNBQVMsRUFBRSxJQUFJO1FBQ2YsZ0JBQWdCLEVBQUUsSUFBSTtRQUN0QixXQUFXLEVBQUUsTUFBTTtRQUNuQixjQUFjLEVBQUUsSUFBSSxDQUFNLFVBQVU7S0FDdkMsQ0FBQztJQUVGLFFBQVE7SUFDUixNQUFNO0lBQ04sRUFBRSxDQUFDLEVBQUUsQ0FBQyxjQUFjLEdBQUcsd0JBQWMsQ0FBQztJQUN0QyxFQUFFLENBQUMsRUFBRSxDQUFDLFlBQVksR0FBRyxzQkFBWSxDQUFDO0lBQ2xDLEVBQUUsQ0FBQyxFQUFFLENBQUMsVUFBVSxHQUFHLHVCQUFVLENBQUM7SUFDOUIsRUFBRSxDQUFDLEVBQUUsQ0FBQyxRQUFRLEdBQUcsa0JBQVEsQ0FBQztJQUMxQixFQUFFLENBQUMsRUFBRSxDQUFDLFFBQVEsR0FBRyxtQkFBUSxDQUFDO0lBQzFCLEVBQUUsQ0FBQyxFQUFFLENBQUMsYUFBYSxHQUFHLDRCQUFhLENBQUM7SUFHcEMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxTQUFTLEdBQUc7UUFDZCxPQUFPLEVBQUcsQ0FBQyxDQUFDLENBQWMsTUFBTTtLQUNuQyxDQUFDO0lBRUYsRUFBRSxDQUFDLEVBQUUsQ0FBQyxPQUFPLEdBQUc7UUFDWixPQUFPLEVBQUUsT0FBTztRQUNoQixTQUFTLEVBQUMsT0FBTztRQUNqQixJQUFJLEVBQUUsT0FBTztRQUNiLFVBQVUsRUFBRSxPQUFPO1FBQ25CLFNBQVMsRUFBRSxPQUFPO1FBQ2xCLFNBQVMsRUFBRSxPQUFPO1FBQ2xCLE1BQU0sRUFBRSxPQUFPO1FBQ2YsT0FBTyxFQUFFLE9BQU87UUFDaEIsU0FBUyxFQUFFLE9BQU87UUFDbEIsVUFBVSxFQUFFLE9BQU87UUFDbkIsU0FBUyxFQUFFLE9BQU8sQ0FBVSxpQkFBaUI7S0FDaEQsQ0FBQTtJQUVEOztNQUVFO0lBQ0YsRUFBRSxDQUFDLEVBQUUsQ0FBQyxlQUFlLEdBQUc7UUFDcEIsT0FBTyxFQUFHLFNBQVM7UUFDbkIsTUFBTSxFQUFHLFFBQVE7UUFFakIsbUJBQW1CLEVBQUMsa0JBQWtCO1FBQ3RDLGlCQUFpQixFQUFHLGVBQWU7UUFDbkMsZ0JBQWdCLEVBQUcsY0FBYztRQUNqQyxxQkFBcUIsRUFBRSxjQUFjO1FBQ3JDLHNCQUFzQixFQUFFLGdCQUFnQjtRQUN4QyxtQkFBbUIsRUFBRSxZQUFZO1FBQ2pDLG9CQUFvQixFQUFFLGFBQWE7UUFFbkMsV0FBVyxFQUFHLGFBQWE7UUFDM0IsU0FBUyxFQUFFLFdBQVc7UUFDdEIsVUFBVSxFQUFFLFlBQVk7UUFDeEIsV0FBVyxFQUFFLGFBQWE7UUFDMUIsV0FBVyxFQUFFLGFBQWE7UUFDMUIsZ0JBQWdCLEVBQUUsa0JBQWtCO1FBQ3BDLGNBQWMsRUFBRSxnQkFBZ0I7UUFDaEMsUUFBUSxFQUFHLFVBQVU7UUFDckIsaUJBQWlCLEVBQUUsbUJBQW1CO1FBQ3RDLG1CQUFtQixFQUFFLHFCQUFxQjtRQUMxQyxtQkFBbUIsRUFBRSxxQkFBcUI7UUFDMUMsbUJBQW1CLEVBQUUscUJBQXFCO0tBQzdDLENBQUM7SUFFRjs7T0FFRztJQUNILEVBQUUsQ0FBQyxFQUFFLENBQUMsZ0JBQWdCLEdBQUc7UUFDckIsS0FBSyxFQUFFLE9BQU87UUFDZCxNQUFNLEVBQUcsUUFBUTtRQUNqQixHQUFHLEVBQUcsS0FBSztLQUNkLENBQUM7SUFFRixXQUFXO0lBQ1gsRUFBRSxDQUFDLEVBQUUsQ0FBQyxXQUFXLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQztRQUMzQixpQkFBaUIsRUFBRSxPQUFPO0tBQzdCLENBQUMsQ0FBQztJQUVBLGlCQUFpQjtJQUNqQixFQUFFLENBQUMsRUFBRSxDQUFDLE9BQU8sR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDO1FBQ3BCLE1BQU0sRUFBRSxpREFBaUQ7UUFDekQsTUFBTSxFQUFFLG1EQUFtRDtRQUMzRCxTQUFTLEVBQUUsaUJBQWlCO1FBQzVCLFNBQVMsRUFBRSxZQUFZO1FBQ3ZCLFVBQVUsRUFBRSxvQkFBb0I7UUFDaEMsU0FBUyxFQUFFLG9CQUFvQjtRQUMvQixVQUFVLEVBQUUsMkJBQTJCO0tBRTFDLENBQUMsQ0FBQztBQUVQLENBQUMsQ0FBQyIsImZpbGUiOiIiLCJzb3VyY2VSb290IjoiLyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFN0b3JhZ2VNZXNzYWdlIH0gZnJvbSBcIi4uL1N0b3JhZ2UvU3RvcmFnZVwiO1xyXG5pbXBvcnQgeyBHYW1lQ29uZmlnIH0gZnJvbSBcIi4uL0NvbmZpZy9HYW1lQ29uZmlnXCI7XHJcbmltcG9ydCBIdHRwVXRpbCBmcm9tIFwiLi4vQ3J5cHRvL0h0dHBVdGlsXCI7XHJcbmltcG9ydCBBdWRpb01hbmFnZXIgZnJvbSBcIi4uL011c2ljL0F1ZGlvTWFuYWdlclwiO1xyXG5pbXBvcnQgeyBOb3RpZmljYXRpb25zIH0gZnJvbSBcIi4uL05vdGlmaWNhdGlvbi9Ob3RpZmljYXRpb25cIjtcclxuaW1wb3J0IHsgR2FtZVRvb2wgfSBmcm9tIFwiLi4vVG9vbC9HYW1lVG9vbFwiO1xyXG5cclxuXHJcbndpbmRvdy5pbml0TWdyID0gZnVuY3Rpb24oKSB7XHJcbiAgICBpZihjYy5meClcclxuICAgIHtcclxuICAgICAgICByZXR1cm47XHJcbiAgICB9XHJcbiAgICBjYy5meCA9IHt9O1xyXG4gICAgLy8gY29uc29sZS5sb2coXCIx5Yid5aeL5YyWXCIpO1xyXG5cclxuICAgIC8v5Z+656GA54q25oCB5L+h5oGvXHJcbiAgICBjYy5meC5TdGF0ZUluZm8gPSB7XHJcbiAgICAgICAgZGVidWdNb2RlOiB0cnVlLFxyXG4gICAgICAgIG5ldHdvcmtDb25uZWN0ZWQ6IHRydWUsICAgLy/nvZHnu5znirbmgIFcclxuICAgICAgICBuZXR3b3JrVHlwZTogJ25vbmUnLCAgICAgIC8v572R57uc57G75Z6LXHJcbiAgICAgICAgaXNPbkZvcmVncm91bmQ6IHRydWUgICAgICAvL+W9k+WJjeaYr+WQpuaYr+WcqOWJjeWPsFxyXG4gICAgfTtcclxuXHJcbiAgICAvL+W6lOeUqOezu+e7n+S/oeaBr1xyXG4gICAgLy/phY3nva7mlofku7ZcclxuICAgIGNjLmZ4LlN0b3JhZ2VNZXNzYWdlID0gU3RvcmFnZU1lc3NhZ2U7XHJcbiAgICBjYy5meC5BdWRpb01hbmFnZXIgPSBBdWRpb01hbmFnZXI7XHJcbiAgICBjYy5meC5HYW1lQ29uZmlnID0gR2FtZUNvbmZpZztcclxuICAgIGNjLmZ4Lkh0dHBVdGlsID0gSHR0cFV0aWw7XHJcbiAgICBjYy5meC5HYW1lVG9vbCA9IEdhbWVUb29sO1xyXG4gICAgY2MuZnguTm90aWZpY2F0aW9ucyA9IE5vdGlmaWNhdGlvbnM7XHJcbiAgXHJcblxyXG4gICAgY2MuZnguU2hhcmVJbmZvID0ge1xyXG4gICAgICAgIHF1ZXJ5SWQgOiAtMSAgICAgICAgICAgICAgLy/liIbkuqtpZFxyXG4gICAgfTtcclxuXHJcbiAgICBjYy5meC5NZXNzYWdlID0ge1xyXG4gICAgICAgIGNvbnRyb2w6IFwiMTAwMDFcIiwgICAgICAgLy/kvKDpgJLmk43kvZzmjqfliLZcclxuICAgICAgICBzdGFydEdhbWU6XCIxMDAwMlwiLCAgICAgIC8v5Lyg6YCS5byA5aeL5bu6562RXHJcbiAgICAgICAgbmV4dDogXCIxMDAwM1wiICwgICAgICAgICAgLy/kvKDpgJLmiafooYzkuIvkuIDkuKrmoLzlrZDmtKrmsLTmtYHov4dcclxuICAgICAgICBjaGFuZ2VQYXRoOiBcIjEwMDA0XCIsICAgICAgIC8v5Lyg6YCS5pON5L2c5o6n5Yi2XHJcbiAgICAgICAgY2hhbmdlTWFwOiBcIjEwMDA1XCIsICAgICAgICAgLy/mlLnlj5jpgqPlnLDlm75cclxuICAgICAgICBuZXh0V2F0ZXI6IFwiMTAwMDZcIiAsICAgICAgICAgIC8v5Lyg6YCS5omn6KGM5LiL5LiA5Liq5qC85a2Q5rSq5rC05rWB6L+HXHJcbiAgICAgICAgYWRkRW5kOiBcIjEwMDA3XCIgLCAgICAgICAgICAvL+a3u+WKoOe7k+adn+eCuVxyXG4gICAgICAgIHNldERhdGE6IFwiMTAwMDhcIiAsICAgICAgICAgLy/kuIrkvKDliIbmlbBcclxuICAgICAgICBndWlkZU5leHQ6IFwiMTAwMDlcIiAsICAgICAgICAvL+W8leWvvOi/m+WFpeS4i+S4gOatpVxyXG4gICAgICAgIHNob3dSZXN1bHQ6IFwiMTAwMTBcIiwgICAgICAgICAgLy/lsZXnpLrmsrvmsLTnu5PmnpxcclxuICAgICAgICByZW1vdmVUaXA6IFwiMTAwMTFcIiAgICAgICAgICAvL+aJp+ihjOaSpOWbnuaIluiAheWQjumAgOWKqOS9nO+8jOenu+mZpOaPkOekulxyXG4gICAgfVxyXG5cclxuICAgIC8qXHJcbiAgICAgICAgKiDlrqLmiLfnq6/ln4vngrnliIbkuqvnsbvlnotcclxuICAgICovXHJcbiAgICBjYy5meC5CdXJpYWxTaGFyZVR5cGUgPSB7XHJcbiAgICAgICAgRGVmYXVsdCA6IFwiZGVmYXVsdFwiLCAgICAgICAgLy/pu5jorqTliIbkuqvnsbvlnoss5YiG5Lqr5Yiw576kXHJcbiAgICAgICAgSW52aXRlIDogXCJpbnZpdGVcIiwgICAgICAgICAgLy8g6YKA6K+35aW95Y+LXHJcblxyXG4gICAgICAgIERhaWx5SW52aXRlUm9vbUpvaW46J2ludml0ZV9qb2luX3Jvb20nLCAvL+mCgOivt+WlveWPi+WKoOWFpVxyXG4gICAgICAgIERhaWx5SW52aXRlRnJpZW5kIDogJ2ludml0ZV9mcmllbmQnLCAvLyDml6XluLjpgoDor7flpb3lj4tcclxuICAgICAgICBEYWlseUludml0ZUdyb3VwIDogJ2ludmF0ZV9ncm91cCcsIC8vIOaXpeW4uOWIhuS6q+e+pFxyXG4gICAgICAgIERhaWx5SW52aXRlR3JvdXBBbGl2ZTogJ2ludmF0ZV9hbGl2ZScsIC8v5pel5bi45YiG5Lqr576k5aSN5rS7XHJcbiAgICAgICAgRGFpbHlJbnZpdGVHcm91cFJld2FyZDogJ2ludmF0ZV9yZXdhcmVkJywvL+WIhuS6q+WlluWKsee/u+WAjVxyXG4gICAgICAgIERhaWx5SW52aXRlR3JvdXBCb3g6ICdpbnZhdGVfYm94JywgIC8v5a6d566x5YiG5Lqr5aWW5YqxXHJcbiAgICAgICAgRGFpbHlJbnZpdGVHcm91cEJhbGw6ICdpbnZhdGVfYmFsbCcsICAvL+WIhuS6q+mihuWPlueQg+eQg1xyXG5cclxuICAgICAgICBNYXRjaFJlc3VsdCA6ICdtYXRjaFJlc3VsdCcsICAvLyDmr5TotZvnu5PnrpfliIbkuqtcclxuICAgICAgICBNYXRjaEZpeDU6ICdNYXRjaEZpeDUnLCAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gNeWFg+e6ouWMhei1m1xyXG4gICAgICAgIE1hdGNoRml4MjA6ICdNYXRjaEZpeDIwJywgICAgICAgICAgICAgICAgICAgICAgICAvLyAyMOWFg+e6ouWMhei1m1xyXG4gICAgICAgIE1hdGNoRml4MTAwOiAnTWF0Y2hGaXgxMDAnLCAgICAgICAgICAgICAgICAgICAgICAvLyAxMDDlhYPnuqLljIXotZtcclxuICAgICAgICBNYXRjaEZpeDUwMDogJ01hdGNoRml4NTAwJywgICAgICAgICAgICAgICAgICAgICAgLy8gNTAw5YWD57qi5YyF6LWbXHJcbiAgICAgICAgTmV3ZXJSZWRFbnZlbG9wZTogJ25ld2VyUmVkRW52ZWxvcGUnLCAgICAgICAgICAgIC8vIOaWsOaJi+e6ouWMhVxyXG4gICAgICAgIENvaW5Sb29tUmVzdWx0OiAnY29pblJvb21SZXN1bHQnLCAgICAgICAgICAgICAgICAvLyDph5HluIHmoYznu5PnrpdcclxuICAgICAgICBIaWdoUmF0ZSA6IFwiaGlnaFJhdGVcIiwvL+mrmOWAjeWIhuS6q1xyXG4gICAgICAgIENvaW5Sb29tV2luU3RyZWFrOiAnY29pblJvb21XaW5TdHJlYWsnLCAgICAgICAgIC8vIOi/nuiDnFxyXG4gICAgICAgIENvaW5Sb29tQmFua3J1cHRjeTE6ICdjb2luUm9vbUJhbmtydXB0Y3kxJywgICAgICAgICAvLyDph5HluIHmoYznoLTkuqdcclxuICAgICAgICBDb2luUm9vbUJhbmtydXB0Y3kyOiAnY29pblJvb21CYW5rcnVwdGN5MicsICAgICAgICAgLy8g6YeR5biB5qGM56C05LqnXHJcbiAgICAgICAgQ29pblJvb21CYW5rcnVwdGN5MzogJ2NvaW5Sb29tQmFua3J1cHRjeTMnLCAgICAgICAgIC8vIOmHkeW4geahjOegtOS6p1xyXG4gICAgfTtcclxuXHJcbiAgICAvKlxyXG4gICAgICog5YiG5Lqr5Yiw5ZOq5YS/57uZ5aWW5YqxIGdyb3VwIGZyaW5lZCBhbGxcclxuICAgICAqL1xyXG4gICAgY2MuZnguU2hhcmVXaGVyZVJld2FyZCA9IHtcclxuICAgICAgICBHcm91cCA6XCJncm91cFwiLCAvL+W+ruS/oee+pFxyXG4gICAgICAgIEZyaWVuZCA6IFwiZnJpZW5kXCIsLy/lpb3lj4tcclxuICAgICAgICBBbGwgOiBcImFsbFwiLCAvL+S4jeWMuuWIhlxyXG4gICAgfTtcclxuXHJcbiAgICAvL+eUqOS6juWtmOWCqOa2iOaBr+eahElEXHJcbiAgICBjYy5meC5zdG9yYWdlVHlwZSA9IGNjLkVudW0oe1xyXG5cdCAgICBzdG9yYWdlVHlwZUN1c3RvbTogMTAwMDEwMSwgLy/nlKjkuo7lrZjlgqjlhbPljaHnrYnnuqdcclxuXHR9KTtcclxuXHJcbiAgICAvL+eUqOS6juWtmOWCqOaPkOekuuivrSAg5oyJ54Wn5q2l6aqk5o+Q56S6XHJcbiAgICBjYy5meC50aXBUeXBlID0gY2MuRW51bSh7XHJcbiAgICAgICAgdGlwT25lOiAn56We5Yac5rCP5Zue5Yiw5a625Lit77yM5byA5aeL5pW055CG5LuK5aSp5pS26ZuG5p2l55qE54mp5ZOB44CC5b2T5LuW56ys5LiA5qyh5ou/5Ye65oiW6K+05Ye65LiA56eN5qSN54mp5pe277yM6K+35ZGK6K+J5LuW6L+Z5piv5paw5qSN54mp44CCJyxcclxuICAgICAgICB0aXBUd286ICflpoLmnpzku5bmi7/lh7rmiJbor7Tlh7rnmoTmpI3niankvaDku4rlpKnnnIvliLDov4fvvIzor7flkYror4nku5bkuIrmrKHmmK/nnIvliLDnmoTvvJvlpoLmnpzkvaDlkKzku5bor7Tov4fvvIzliJnor7flkYror4nku5bkuIrmrKHmmK/lkKzliLDnmoTjgIInLCAvL+eUqOS6juWtmOWCqOWFs+WNoeetiee6p1xyXG4gICAgICAgIHRpcEVyck5ldzogJ+i/meaYr+i/meWxgOa4uOaIj+esrOS4gOasoeWHuueOsHvmpI3nial9JyxcclxuICAgICAgICB0aXBFcnJPbGQ6ICd75qSN54mpfeWImuaJjeWHuueOsOi/h+WRoicsXHJcbiAgICAgICAgdGlwRXJySGVhcjogJ+S4iuasoemBh+WIsHvmpI3nial95pe277yM5Ly85LmO5LiN5piv5ZCs5Yiw55qE5ZCnJyxcclxuICAgICAgICB0aXBFcnJTZWU6ICfkuIrmrKHpgYfliLB75qSN54mpfeaXtu+8jOS8vOS5juS4jeaYr+eci+WIsOeahOWQpycsXHJcbiAgICAgICAgdGlwRXJyTGFzdDogJ+S5i+WJjeehruWunueci+WIsOi/h3vmpI3nial977yM5L2G5pyA6L+R5LiA5qyh5Ly85LmO5LiN5piv55yL5Yiw55qE5ZGiJyxcclxuXHJcbiAgICB9KTtcclxuXHJcbn07Il19 -//------QC-SOURCE-SPLIT------ - - (function() { - var nodeEnv = typeof require !== 'undefined' && typeof process !== 'undefined'; - var __module = nodeEnv ? module : {exports:{}}; - var __filename = 'preview-scripts/assets/Script/lq_base/data/lq_interface.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, '41e45V6/vBNz5ftgHCoFmei', 'lq_interface'); -// Script/lq_base/data/lq_interface.ts - -"use strict"; -Object.defineProperty(exports, "__esModule", { value: true }); - -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,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImFzc2V0c1xcU2NyaXB0XFxscV9iYXNlXFxkYXRhXFxscV9pbnRlcmZhY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsImZpbGUiOiIiLCJzb3VyY2VSb290IjoiLyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBWZWMyID0gY2MuVmVjMjtcclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgSVBvcyB7XHJcbiAgICB4OiBudW1iZXI7XHJcbiAgICB5OiBudW1iZXI7XHJcblxyXG4gICAgc3ViKHBvczogSVBvcyk6IFZlYzI7XHJcblxyXG4gICAgYWRkKHBvczogSVBvcyk6IFZlYzI7XHJcbn1cclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgSVJlY3Qge1xyXG4gICAgeDogbnVtYmVyO1xyXG4gICAgeTogbnVtYmVyO1xyXG4gICAgd2lkdGg6IG51bWJlcjtcclxuICAgIGhlaWdodDogbnVtYmVyO1xyXG4gICAgaGFsZl93aWR0aDogbnVtYmVyO1xyXG4gICAgaGFsZl9oZWlnaHQ6IG51bWJlcjtcclxuXHJcbiAgICBzdWIocG9zOiBJUG9zKTogVmVjMjtcclxuXHJcbiAgICBhZGQocG9zOiBJUG9zKTogVmVjMjtcclxufSJdfQ== -//------QC-SOURCE-SPLIT------ - - (function() { - var nodeEnv = typeof require !== 'undefined' && typeof process !== 'undefined'; - var __module = nodeEnv ? module : {exports:{}}; - var __filename = 'preview-scripts/assets/shop/script/shop.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, '48bfeZuYFZE2qmgxbW2IigB', 'shop'); -// shop/script/shop.ts ->>>>>>> 0a31a7a5abc2c505bf743aa596e1c765a0405152 - -"use strict"; -var __extends = (this && this.__extends) || (function () { - var extendStatics = function (d, b) { - extendStatics = Object.setPrototypeOf || - ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) || - function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; }; - return extendStatics(d, b); - }; - return function (d, b) { - extendStatics(d, b); - function __() { this.constructor = d; } - d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); - }; -})(); -var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) { - var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; - if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc); - else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; - return c > 3 && r && Object.defineProperty(target, key, r), r; -}; -Object.defineProperty(exports, "__esModule", { value: true }); -<<<<<<< HEAD -exports.MiniGameManager = void 0; -var MiniGameSdk_1 = require("./MiniGameSdk"); -var _a = cc._decorator, ccclass = _a.ccclass, property = _a.property; -var EWechatAD; -(function (EWechatAD) { - EWechatAD["CUMSTOM_01"] = "adunit-f7c2417eb2c2e473"; -})(EWechatAD || (EWechatAD = {})); -var MiniGameManager = /** @class */ (function (_super) { - __extends(MiniGameManager, _super); - function MiniGameManager() { - var _this = _super !== null && _super.apply(this, arguments) || this; - _this.entranceView = null; - return _this; - } - MiniGameManager_1 = MiniGameManager; - Object.defineProperty(MiniGameManager, "instance", { - get: function () { - if (!MiniGameManager_1._instance) { - MiniGameManager_1._instance = new MiniGameManager_1(); - } - return MiniGameManager_1._instance; - }, - enumerable: false, - configurable: true - }); - MiniGameManager.prototype.start = function () { - // 禁用游戏入口视图 - // this.entranceView.active = false; - // MiniGameSdk.API.getUserProfile(this.setUserId); - // cc.fx.GameTool.setUserInfo(""); - this.onGetLoginCode(); - // 尝试获取游戏入口按钮,如果存在则直接返回,不进行后续操作 - // let buttonEntrance = this.node.getChildByName('Btns')?.getChildByName('Button_EntranceView'); - // if (buttonEntrance) { - // return; - // } - // 如果是字节跳动小游戏环境,检查侧边栏是否存在 - if (MiniGameSdk_1.MiniGameSdk.isBytedance()) { - //抖音环境,检测侧边栏存在 - MiniGameSdk_1.MiniGameSdk.BytedanceSidebar.checkSideBar(function (success) { - // 根据侧边栏存在性激活或禁用游戏入口按钮 - // buttonEntrance.active = success; - }); - } - else { - // 非抖音小游戏环境,直接激活游戏入口按钮 - // 非抖音环境,正常显示按钮 - // buttonEntrance.active = true; - } - // 设置监听器,以处理来自侧边栏的交互事件 - MiniGameSdk_1.MiniGameSdk.BytedanceSidebar.listenFromSidebar(function (success) { - // 如果交互成功,显示奖励提示 - if (success) { - MiniGameSdk_1.MiniGameSdk.API.showToast('侧边栏奖励', 5); -======= -var _a = cc._decorator, ccclass = _a.ccclass, property = _a.property; -var NewClass = /** @class */ (function (_super) { - __extends(NewClass, _super); - function NewClass() { - var _this = _super !== null && _super.apply(this, arguments) || this; - //商店界面 - _this.shop = null; - //商品列表 - _this.itemList = null; - return _this; - // update (dt) {} - } - // onLoad () {} - NewClass.prototype.start = function () { - this.openShop(); - }; - //打开商店界面 - NewClass.prototype.openShop = function () { - // 商品数据数组 - var products = [ - { product_id: "gold_pack_1", name: "金币包1", price: 600, title: "3x2六档金币" }, - { product_id: "gold_pack_2", name: "金币包2", price: 3600, title: "" }, - { product_id: "gold_pack_3", name: "金币包3", price: 6800, title: "" }, - { product_id: "gold_pack_4", name: "金币包4", price: 12800, title: "" }, - { product_id: "gold_pack_5", name: "金币包5", price: 32800, title: "" }, - { product_id: "gold_pack_6", name: "金币包6", price: 64800, title: "" }, - { product_id: "unlimited_health_bundle_1", name: "无限体力组合包1", price: 1800, title: "3个横版礼包" }, - { product_id: "unlimited_health_bundle_2", name: "无限体力组合包2", price: 6600, title: "" } - ]; - for (var i = 1; i <= 8 && i < this.itemList.children.length; i++) { - var spriteComp = this.itemList.children[i].children[0].getComponent(cc.Sprite); - var price = this.itemList.children[i].children[1].getComponent(cc.Label); - var title = this.itemList.children[i].children[2].getComponent(cc.Label); - var product = products[i - 1]; - if (spriteComp && product) { - // TODO: 根据 product_id 或 name 设置 spriteComp.spriteFrame - } - if (price && product) { - price.string = (product.price / 100).toString() + "元"; ->>>>>>> 0a31a7a5abc2c505bf743aa596e1c765a0405152 - } - if (title && product) { - title.string = product.name; - } - } - }; -<<<<<<< HEAD - MiniGameManager.prototype.update = function (deltaTime) { - }; - /** - * 弹出广告横幅。 - * 此方法用于加载并显示广告横幅。它首先加载指定广告位的横幅广告,然后显示广告。 - * 加载广告和显示广告是通过MiniGameSdk.AdvertManager的实例方法来实现的。 - * - * @remarks - * 此方法提供了两种显示横幅广告的方式: - * 1. 默认方式:调用showBanner方法显示广告,系统会自动选择显示位置。 - * 2. 指定位置方式:可以通过传入额外的参数来指定广告显示在屏幕的顶部或底部,或者通过坐标指定显示位置。 - * - * 示例代码中注释掉了两种显示广告的具体方法,可以根据实际需求选择使用。 - */ - MiniGameManager.prototype.onShowBanner = function () { - // 加载指定广告位的横幅广告。 - MiniGameSdk_1.MiniGameSdk.AdvertManager.instance.loadBanner('adunit-4e7ef467e3eaab51'); - // 默认方式显示横幅广告。 - // 方法1:默认调用 - MiniGameSdk_1.MiniGameSdk.AdvertManager.instance.showBanner(); - // 示例:指定屏幕底部正中显示横幅广告。 - // 方法2:指定屏幕顶部或底部正中 - // MiniGameSdk.AdvertManager.instance.showBanner('adunit-4e7ef467e3eaab51', MiniGameSdk.EAdBannerLocation.BOTTOM); - // 示例:通过坐标指定位置显示横幅广告。 - // 方法2:指定坐标 - // MiniGameSdk.AdvertManager.instance.showBanner('adunit-4e7ef467e3eaab51', { top: 10, left: 10 }); - }; - /** - * 隐藏广告横幅的函数。 - * - * 该函数调用MiniGameSdk.AdvertManager实例的方法,用于隐藏广告横幅。 - * 当需要暂时停止展示广告或用户主动请求隐藏广告时,可以调用此函数。 - * - * @remarks - * 此函数不接受任何参数,也不返回任何值。 - * 它单纯地触发广告横幅的隐藏操作,具体实现依赖于AdvertManager的实现。 - */ - MiniGameManager.prototype.onHideBanner = function () { - MiniGameSdk_1.MiniGameSdk.AdvertManager.instance.hideBanner(); - }; - /** - * 显示插屏广告的函数。 - * - * 此函数调用MiniGameSdk.AdvertManager实例的方法,以显示一个指定的插屏广告。 - * 它使用了硬编码的广告单元标识符,这意味着它专为特定的广告位设计。 - * 在实际应用中,可能需要根据应用的配置或用户的特定条件来动态选择广告单元标识符。 - */ - MiniGameManager.prototype.onShowInterstitial = function () { - MiniGameSdk_1.MiniGameSdk.AdvertManager.instance.showInterstitial('adunit-eadd67851d3050ad'); - }; - /** - * 调用广告管理器加载并展示自定义广告。 - * 此方法首先通过广告管理器的实例加载指定的自定义广告单元,然后展示这个自定义广告。 - * 加载和展示广告是广告管理系统中的常见操作,这里通过两步分别完成加载和展示的过程, - * 以确保广告在展示前正确且充分地被加载。 - */ - MiniGameManager.prototype.onShowCustom = function () { - // 加载指定的自定义广告单元。 - MiniGameSdk_1.MiniGameSdk.AdvertManager.instance.loadCustom(EWechatAD.CUMSTOM_01); - // 展示已加载的自定义广告。 - MiniGameSdk_1.MiniGameSdk.AdvertManager.instance.showCustom(EWechatAD.CUMSTOM_01); - }; - /** - * 隐藏自定义广告。 - * - * 本函数调用MiniGameSdk.AdvertManager.instance.hideCustom()来隐藏自定义广告。 - * 这是对接广告管理系统的一部分,用于控制广告的显示与隐藏。 - * 在需要隐藏自定义广告的场景下,调用此函数即可实现相应功能。 - */ - MiniGameManager.prototype.onHideCustom = function () { - MiniGameSdk_1.MiniGameSdk.AdvertManager.instance.hideCustom(EWechatAD.CUMSTOM_01); - }; - /** - * 触发显示视频广告的函数。 - * 通过调用MiniGameSdk.AdvertManager.instance.showVideo方法,显示一个视频广告,并根据用户观看广告的情况执行相应的逻辑。 - * - * @remarks - * 此函数首先传入一个广告单元ID,用于标识要显示的视频广告。然后传入一个回调函数,该回调函数在用户观看广告后被调用,无论用户是完成了观看、拒绝了观看还是观看过程中发生了错误。 - * 回调函数接收两个参数:一个是用户观看广告的结果,另一个是用户观看的广告数量。根据观看结果的不同,显示不同的提示信息。 - */ - MiniGameManager.prototype.onShowVideo = function () { - // 广告单元ID,用于标识要显示的视频广告 - // 广告单元ID的样例 - //抖音形如: 1re3nfqkmy81m4m8ge - //微信形如: adunit-a7718f6e195e42fe - MiniGameSdk_1.MiniGameSdk.AdvertManager.instance.showVideo('1re3nfqkmy81m4m8ge', function (res, count) { - // 输出用户观看的广告数量 - console.log('用户看的视频广告个数是:', count); - // 根据用户观看广告的结果,执行不同的逻辑 - switch (res) { - case MiniGameSdk_1.MiniGameSdk.EAdVideoResult.ACCEPT: - // 用户完成了广告观看,显示奖励提示 - MiniGameSdk_1.MiniGameSdk.API.showToast('用户看完广告,可以奖励'); - break; - case MiniGameSdk_1.MiniGameSdk.EAdVideoResult.REJECT: - // 用户拒绝了广告观看,显示不奖励提示 - MiniGameSdk_1.MiniGameSdk.API.showToast('用户拒绝掉广告,不奖励'); - break; - case MiniGameSdk_1.MiniGameSdk.EAdVideoResult.ERROR: - // 广告播放发生错误,显示错误提示 - MiniGameSdk_1.MiniGameSdk.API.showToast('播放广告发生错误,不奖励'); - break; - default: - // 其他情况,不作处理 - break; - } - }); - }; - /** - * 引导用户分享应用给朋友。 - * - * 通过调用MiniGameSdk的API分享功能,向用户的朋友圈发送邀请,邀请他们一起玩游戏。 - * 这是一个重要的推广手段,可以增加应用的曝光度和用户量。 - * - * @remarks - * 此方法中调用的API依赖于特定的小游戏平台,因此在不同的平台上可能需要不同的实现。 - */ - MiniGameManager.prototype.onShare = function () { - MiniGameSdk_1.MiniGameSdk.API.shareAppToFriends('来玩游戏吧'); - }; - /** - * 显示一个toast提示。 - * - * 通过调用MiniGameSdk的API方法来显示一个简短的提示信息。toast是一种轻量级的提示方式,用于在界面上短暂地展示一些信息,不影响用户操作。 - * 这里使用了固定的提示文本 '这是一个toast',在实际应用中,可以根据需要动态设置提示文本。 - */ - MiniGameManager.prototype.onShowToast = function () { - MiniGameSdk_1.MiniGameSdk.API.showToast('这是一个toast'); - }; - /** - * 触发设备振动功能。 - * - * 该方法用于调用MiniGameSdk提供的API,以实现设备的振动功能。当需要提醒用户或提供触觉反馈时,可以调用此方法。 - * 例如,在游戏或应用中,当用户完成特定操作或发生特定事件时,可以通过振动给予用户反馈。 - * - * @remarks - * 此方法无参数,也不返回任何值。 - */ - MiniGameManager.prototype.onVirbrate = function () { - MiniGameSdk_1.MiniGameSdk.API.vibrate(); - }; - /** - * 重新启动游戏实例。 - * - * 此函数调用MiniGameSdk中的API重新启动游戏。重新启动操作可能是为了初始化游戏环境、重置游戏状态或处理其他需要重启的场景。 - * 调用此函数后,游戏将会重新开始,当前的游戏状态将会被清除。 - * - * @remarks - * 此函数不接受任何参数。 - * - * @returns 无返回值。 - */ - MiniGameManager.prototype.onReboot = function () { - MiniGameSdk_1.MiniGameSdk.API.reboot(); - }; - /** - * 当前函数用于在迷你游戏中实现退出功能。 - * 它调用了MiniGameSdk提供的API方法来触发退出操作。 - * 该方法通常在需要结束当前迷你游戏或返回到上一级菜单时被调用。 - */ - MiniGameManager.prototype.onExit = function () { - MiniGameSdk_1.MiniGameSdk.API.exit(); - }; - /** - * 显示分享菜单。 - * - * 通过调用MiniGameSdk的API方法,触发显示分享菜单的操作。此函数旨在提供一个统一的入口, - * 以便在需要时轻松调用分享功能,而无需直接与具体的SDK接口交互。 - * - * @remarks - * 此方法不接受任何参数,也不返回任何值。 - */ - MiniGameManager.prototype.onShowShareMenu = function () { - MiniGameSdk_1.MiniGameSdk.API.showShareMenu(); - }; - /** - * 导航到指定的小游戏。 - * - * 本函数用于触发导航到一个特定的小游戏。这需要提供目标小游戏的ID, - * 以便系统能够正确地将用户重定向到目标小游戏。 - * - * 注意:这里的'xxx'是占位符,实际使用时需要替换为具体的小游戏ID。 - */ - MiniGameManager.prototype.onNavigate = function () { - MiniGameSdk_1.MiniGameSdk.API.navigateTo('xxx'); // xxx替换为你的小游戏id - }; - /** - * 激活字节跳动入口视图。 - * - * 此方法用于将字节跳动入口视图设置为活跃状态。当需要在用户界面中显示字节跳动的入口时, - * 可以调用此方法来激活相应的视图元素,使其对用户可见。 - */ - MiniGameManager.prototype.onBytedanceEntranceView = function () { - // this.entranceView.active = true; - }; - /** - * 请求登录代码 - * - * 本函数用于触发小程序的登录流程,获取微信或头条等第三方平台的登录代码。 - * 这些代码可以用于后续的用户身份验证和数据同步流程。 - */ - MiniGameManager.prototype.onGetLoginCode = function () { - // 调用MiniGameSdk的API登录方法,传入一个回调函数处理登录结果 - MiniGameSdk_1.MiniGameSdk.API.login(function (code, anonymousCode) { - // 打印微信或头条的登录代码 - console.log('Wechat Or Bytedance Code:', code); - // 打印头条的匿名登录代码 - // console.log('Bytedance Anonymous Code:', anonymousCode); - if (code) { - // cc.fx.GameTool.getUserId(code, data => this.setUserId(data)); - } - }); - }; - // setUserId(data){ - // cc.fx.GameConfig.GM_INFO.userId = data.data.userId; - // MiniGameSdk.API.getUserInfo(this.setUserInfo); - // } - // setUserInfo(data){ - // console.log("获取到的用户信息",data.userInfo); - // var useData = { - // "gameId": cc.fx.GameConfig.GM_INFO.gameId, - // "userId": cc.fx.GameConfig.GM_INFO.userId, - // "nickName":data.userInfo.nickName, - // "pic": data.userInfo.avatarUrl - // } - // console.log("即将上传的用户信息:",cc.fx.GameConfig.GM_INFO.userId,data.userInfo.nickName,data.userInfo.avatarUrl); - // console.log("Post数据:",useData); - // cc.fx.GameTool.setUserInfo(useData,(res)=>{ - // console.log("上传成功:",res); - // }); - // } - /** - * 创建并显示游戏圈按钮 - * - * 本函数通过调用MiniGameSdk的GameClub实例方法,实现游戏俱乐部的创建和显示。 - * 它首先配置俱乐部的图标类型和位置大小,然后创建俱乐部,最后显示俱乐部。 - * 这样做是为了在小游戏内创建并展示一个游戏俱乐部的图标,供玩家加入或互动。 - */ - MiniGameManager.prototype.onCreateClub = function () { - // 配置俱乐部图标为绿色,设置图标的位置为顶部200像素,左侧0像素 - MiniGameSdk_1.MiniGameSdk.GameClub.instance.create(MiniGameSdk_1.MiniGameSdk.EGameClubIcon.GREEN, { top: 200, left: 0 }, { width: 50, height: 50 }); - // 显示游戏俱乐部图标 - MiniGameSdk_1.MiniGameSdk.GameClub.instance.show(); - }; - var MiniGameManager_1; - __decorate([ - property(cc.Node) - ], MiniGameManager.prototype, "entranceView", void 0); - MiniGameManager = MiniGameManager_1 = __decorate([ - ccclass - ], MiniGameManager); - return MiniGameManager; -}(cc.Component)); -exports.MiniGameManager = MiniGameManager; -======= - //关闭商店界面 - NewClass.prototype.closeShop = function () { - //销毁预制体 - this.shop.destroy(); - }; - __decorate([ - property(cc.Node) - ], NewClass.prototype, "shop", void 0); - __decorate([ - property(cc.Node) - ], NewClass.prototype, "itemList", void 0); - NewClass = __decorate([ - ccclass - ], NewClass); - return NewClass; -}(cc.Component)); -exports.default = NewClass; ->>>>>>> 0a31a7a5abc2c505bf743aa596e1c765a0405152 - -cc._RF.pop(); - } - if (nodeEnv) { - __define(__module.exports, __require, __module); - } - else { - __quick_compile_project__.registerModuleFunc(__filename, function () { - __define(__module.exports, __require, __module); - }); - } - })(); -<<<<<<< HEAD -//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImFzc2V0c1xcU2NyaXB0XFxTZGtcXE1pbmlHYW1lTWFuYWdlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQ0EsNkNBQTRDO0FBQ3RDLElBQUEsS0FBd0IsRUFBRSxDQUFDLFVBQVUsRUFBbkMsT0FBTyxhQUFBLEVBQUUsUUFBUSxjQUFrQixDQUFDO0FBQzVDLElBQUssU0FFSjtBQUZELFdBQUssU0FBUztJQUNWLG1EQUFzQyxDQUFBO0FBQzFDLENBQUMsRUFGSSxTQUFTLEtBQVQsU0FBUyxRQUViO0FBR0Q7SUFBcUMsbUNBQVk7SUFBakQ7UUFBQSxxRUEyVUM7UUF4VUcsa0JBQVksR0FBWSxJQUFJLENBQUM7O0lBd1VqQyxDQUFDO3dCQTNVWSxlQUFlO0lBa0J4QixzQkFBVywyQkFBUTthQUFuQjtZQUNJLElBQUksQ0FBQyxpQkFBZSxDQUFDLFNBQVMsRUFBRTtnQkFDNUIsaUJBQWUsQ0FBQyxTQUFTLEdBQUcsSUFBSSxpQkFBZSxFQUFFLENBQUM7YUFDckQ7WUFDRCxPQUFPLGlCQUFlLENBQUMsU0FBUyxDQUFDO1FBQ3JDLENBQUM7OztPQUFBO0lBRUQsK0JBQUssR0FBTDtRQUNJLFdBQVc7UUFDWCxvQ0FBb0M7UUFDcEMsa0RBQWtEO1FBQ2xELGtDQUFrQztRQUNsQyxJQUFJLENBQUMsY0FBYyxFQUFFLENBQUM7UUFDdEIsK0JBQStCO1FBQy9CLGdHQUFnRztRQUNoRyx3QkFBd0I7UUFDeEIsY0FBYztRQUNkLElBQUk7UUFFSix5QkFBeUI7UUFFekIsSUFBSSx5QkFBVyxDQUFDLFdBQVcsRUFBRSxFQUFFO1lBQzNCLGNBQWM7WUFDZCx5QkFBVyxDQUFDLGdCQUFnQixDQUFDLFlBQVksQ0FBQyxVQUFDLE9BQWdCO2dCQUN2RCxzQkFBc0I7Z0JBQ3RCLG1DQUFtQztZQUN2QyxDQUFDLENBQUMsQ0FBQztTQUNOO2FBQU07WUFDSCxzQkFBc0I7WUFDdEIsZUFBZTtZQUNmLGdDQUFn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LHFCQUFxQjtJQUNyQiw2Q0FBNkM7SUFDN0Msc0JBQXNCO0lBQ3RCLHFEQUFxRDtJQUNyRCxxREFBcUQ7SUFDckQsNkNBQTZDO0lBQzdDLHlDQUF5QztJQUV6QyxRQUFRO0lBQ1IsZ0hBQWdIO0lBQ2hILHNDQUFzQztJQUN0QyxrREFBa0Q7SUFDbEQsb0NBQW9DO0lBQ3BDLFVBQVU7SUFDVixJQUFJO0lBRUo7Ozs7OztPQU1HO0lBQ0gsc0NBQVksR0FBWjtRQUNJLG1DQUFtQztRQUNuQyx5QkFBVyxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUNoQyx5QkFBVyxDQUFDLGFBQWEsQ0FBQyxLQUFLLEVBQy9CLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxJQUFJLEVBQUUsQ0FBQyxFQUFFLEVBQ3JCLEVBQUUsS0FBSyxFQUFFLEVBQUUsRUFBRSxNQUFNLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQztRQUMvQixZQUFZO1FBQ1oseUJBQVcsQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLElBQUksRUFBRSxDQUFDO0lBQ3pDLENBQUM7O0lBdlVEO1FBREMsUUFBUSxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUM7eURBQ1c7SUFIcEIsZUFBZTtRQUQzQixPQUFPO09BQ0ssZUFBZSxDQTJVM0I7SUFBRCxzQkFBQztDQTNVRCxBQTJVQyxDQTNVb0MsRUFBRSxDQUFDLFNBQVMsR0EyVWhEO0FBM1VZLDBDQUFlIiwiZmlsZSI6IiIsInNvdXJjZVJvb3QiOiIvIiwic291cmNlc0NvbnRlbnQiOlsiXHJcbmltcG9ydCB7IE1pbmlHYW1lU2RrIH0gZnJvbSBcIi4vTWluaUdhbWVTZGtcIjtcclxuY29uc3QgeyBjY2NsYXNzLCBwcm9wZXJ0eSB9ID0gY2MuX2RlY29yYXRvcjtcclxuZW51bSBFV2VjaGF0QUQge1xyXG4gICAgQ1VNU1RPTV8wMSA9ICdhZHVuaXQtZjdjMjQxN2ViMmMyZTQ3MydcclxufVxyXG5cclxuQGNjY2xhc3NcclxuZXhwb3J0IGNsYXNzIE1pbmlHYW1lTWFuYWdlciBleHRlbmRzIGNjLkNvbXBvbmVudCB7XHJcblxyXG4gICAgQHByb3BlcnR5KGNjLk5vZGUpXHJcbiAgICBlbnRyYW5jZVZpZXc6IGNjLk5vZGUgPSBudWxsO1xyXG4gICAgLyoqXHJcbiAgICAgKiDlvIDlp4vmuLjmiI/liY3nmoTliJ3lp4vljJbmk43kvZzjgIJcclxuICAgICAqIOS4u+imgei0n+i0o+ajgOafpeW5tuWkhOeQhua4uOaIj+WFpeWPo+aMiemSrueahOa/gOa0u+eKtuaAge+8jOS7peWPiuWcqOeJueWumueOr+Wig+S4i+iuvue9ruS+p+i+ueagj+eahOebkeWQrOWZqOOAglxyXG4gICAgICogXHJcbiAgICAgKiBAcmVtYXJrc1xyXG4gICAgICog5q2k5pa55rOV6aaW5YWI5bCG5ri45oiP5YWl5Y+j6KeG5Zu+6K6+5Li66Z2e5r+A5rS754q25oCB77yM5Lul5YeG5aSH6L+b6KGM5ZCO57ut55qE5qOA5p+l5ZKM6K6+572u44CCXHJcbiAgICAgKiDlpoLmnpzlvZPliY3njq/looPmmK/mipbpn7PlsI/muLjmiI/vvIzkvJrmo4Dmn6XmmK/lkKblrZjlnKjkvqfovrnmoI/vvIzlubbmoLnmja7mo4Dmn6Xnu5Pmnpzmv4DmtLvmiJbnpoHnlKjmuLjmiI/lhaXlj6PmjInpkq7jgIJcclxuICAgICAqIOWvueS6jumdnuaKlumfs+Wwj+a4uOaIj+eOr+Wig++8jOebtOaOpea/gOa0u+a4uOaIj+WFpeWPo+aMiemSruOAglxyXG4gICAgICog5q2k5aSW77yM5peg6K66546v5aKD5aaC5L2V77yM6YO95Lya6K6+572u5LiA5Liq55uR5ZCs5Zmo77yM5Lul5aSE55CG5p2l6Ieq5L6n6L655qCP55qE5LqL5Lu277yM5aaC5oiQ5Yqf6Kem5Y+R5pe25pi+56S65aWW5Yqx5o+Q56S644CCXHJcbiAgICAgKi9cclxuICAgIHByaXZhdGUgX2lkOmFueTtcclxuICAgIHByaXZhdGUgX3VzZXJEYXRhOmFueTtcclxuXHJcbiAgICBwcml2YXRlIHN0YXRpYyBfaW5zdGFuY2U6IE1pbmlHYW1lTWFuYWdlcjtcclxuICAgIHN0YXRpYyBnZXQgaW5zdGFuY2UoKTogTWluaUdhbWVNYW5hZ2VyIHtcclxuICAgICAgICBpZiAoIU1pbmlHYW1lTWFuYWdlci5faW5zdGFuY2UpIHtcclxuICAgICAgICAgICAgTWluaUdhbWVNYW5hZ2VyLl9pbnN0YW5jZSA9IG5ldyBNaW5pR2FtZU1hbmFnZXIoKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIE1pbmlHYW1lTWFuYWdlci5faW5zdGFuY2U7XHJcbiAgICB9XHJcblxyXG4gICAgc3RhcnQoKSB7XHJcbiAgICAgICAgLy8g56aB55So5ri45oiP5YWl5Y+j6KeG5Zu+XHJcbiAgICAgICAgLy8gdGhpcy5lbnRyYW5jZVZpZXcuYWN0aXZlID0gZmFsc2U7XHJcbiAgICAgICAgLy8gTWluaUdhbWVTZGsuQVBJLmdldFVzZXJQcm9maWxlKHRoaXMuc2V0VXNlcklkKTtcclxuICAgICAgICAvLyBjYy5meC5HYW1lVG9vbC5zZXRVc2VySW5mbyhcIlwiKTtcclxuICAgICAgICB0aGlzLm9uR2V0TG9naW5Db2RlKCk7XHJcbiAgICAgICAgLy8g5bCd6K+V6I635Y+W5ri45oiP5YWl5Y+j5oyJ6ZKu77yM5aaC5p6c5a2Y5Zyo5YiZ55u05o6l6L+U5Zue77yM5LiN6L+b6KGM5ZCO57ut5pON5L2cXHJcbiAgICAgICAgLy8gbGV0IGJ1dHRvbkVudHJhbmNlID0gdGhpcy5ub2RlLmdldENoaWxkQnlOYW1lKCdCdG5zJyk/LmdldENoaWxkQnlOYW1lKCdCdXR0b25fRW50cmFuY2VWaWV3Jyk7XHJcbiAgICAgICAgLy8gaWYgKGJ1dHRvbkVudHJhbmNlKSB7XHJcbiAgICAgICAgLy8gICAgIHJldHVybjtcclxuICAgICAgICAvLyB9XHJcblxyXG4gICAgICAgIC8vIOWmguaenOaYr+Wtl+iKgui3s+WKqOWwj+a4uOaIj+eOr+Wig++8jOajgOafpeS+p+i+ueagj+aYr+WQpuWtmOWcqFxyXG5cclxuICAgICAgICBpZiAoTWluaUdhbWVTZGsuaXNCeXRlZGFuY2UoKSkge1xyXG4gICAgICAgICAgICAvL+aKlumfs+eOr+Wig++8jOajgOa1i+S+p+i+ueagj+WtmOWcqFxyXG4gICAgICAgICAgICBNaW5pR2FtZVNkay5CeXRlZGFuY2VTaWRlYmFyLmNoZWNrU2lkZUJhcigoc3VjY2VzczogYm9vbGVhbikgPT4ge1xyXG4gICAgICAgICAgICAgICAgLy8g5qC55o2u5L6n6L655qCP5a2Y5Zyo5oCn5r+A5rS75oiW56aB55So5ri45oiP5YWl5Y+j5oyJ6ZKuXHJcbiAgICAgICAgICAgICAgICAvLyBidXR0b25FbnRyYW5jZS5hY3RpdmUgPSBzdWNjZXNzO1xyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAvLyDpnZ7mipbpn7PlsI/muLjmiI/njq/looPvvIznm7TmjqXmv4DmtLvmuLjmiI/lhaXlj6PmjInpkq5cclxuICAgICAgICAgICAgLy8g6Z2e5oqW6Z+z546v5aKD77yM5q2j5bi45pi+56S65oyJ6ZKuXHJcbiAgICAgICAgICAgIC8vIGJ1dHRvbkVudHJhbmNlLmFjdGl2ZSA9IHRydWU7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICAvLyDorr7nva7nm5HlkKzlmajvvIzku6XlpITnkIbmnaXoh6rkvqfovrnmoI/nmoTkuqTkupLkuovku7ZcclxuICAgICAgICBNaW5pR2FtZVNkay5CeXRlZGFuY2VTaWRlYmFyLmxpc3RlbkZyb21TaWRlYmFyKChzdWNjZXNzOiBib29sZWFuKSA9PiB7XHJcbiAgICAgICAgICAgIC8vIOWmguaenOS6pOS6kuaIkOWKn++8jOaYvuekuuWlluWKseaPkOekulxyXG4gICAgICAgICAgICBpZiAoc3VjY2Vzcykge1xyXG4gICAgICAgICAgICAgICAgTWluaUdhbWVTZGsuQVBJLnNob3dUb2FzdCgn5L6n6L655qCP5aWW5YqxJywgNSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9KTtcclxuICAgIH1cclxuXHJcbiAgICB1cGRhdGUoZGVsdGFUaW1lOiBudW1iZXIpIHtcclxuXHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiDlvLnlh7rlub/lkYrmqKrluYXjgIJcclxuICAgICAqIOatpOaWueazleeUqOS6juWKoOi9veW5tuaYvuekuuW5v+WRiuaoquW5heOAguWug+mmluWFiOWKoOi9veaMh+WumuW5v+WRiuS9jeeahOaoquW5heW5v+WRiu+8jOeEtuWQjuaYvuekuuW5v+WRiuOAglxyXG4gICAgICog5Yqg6L295bm/5ZGK5ZKM5pi+56S65bm/5ZGK5piv6YCa6L+HTWluaUdhbWVTZGsuQWR2ZXJ0TWFuYWdlcueahOWunuS+i+aWueazleadpeWunueOsOeahOOAglxyXG4gICAgICogXHJcbiAgICAgKiBAcmVtYXJrc1xyXG4gICAgICog5q2k5pa55rOV5o+Q5L6b5LqG5Lik56eN5pi+56S65qiq5bmF5bm/5ZGK55qE5pa55byP77yaXHJcbiAgICAgKiAxLiDpu5jorqTmlrnlvI/vvJrosIPnlKhzaG93QmFubmVy5pa55rOV5pi+56S65bm/5ZGK77yM57O757uf5Lya6Ieq5Yqo6YCJ5oup5pi+56S65L2N572u44CCXHJcbiAgICAgKiAyLiDmjIflrprkvY3nva7mlrnlvI/vvJrlj6/ku6XpgJrov4fkvKDlhaXpop3lpJbnmoTlj4LmlbDmnaXmjIflrprlub/lkYrmmL7npLrlnKjlsY/luZXnmoTpobbpg6jmiJblupXpg6jvvIzmiJbogIXpgJrov4flnZDmoIfmjIflrprmmL7npLrkvY3nva7jgIJcclxuICAgICAqIFxyXG4gICAgICog56S65L6L5Luj56CB5Lit5rOo6YeK5o6J5LqG5Lik56eN5pi+56S65bm/5ZGK55qE5YW35L2T5pa55rOV77yM5Y+v5Lul5qC55o2u5a6e6ZmF6ZyA5rGC6YCJ5oup5L2/55So44CCXHJcbiAgICAgKi9cclxuICAgIG9uU2hvd0Jhbm5lcigpIHtcclxuICAgICAgICAvLyDliqDovb3mjIflrprlub/lkYrkvY3nmoTmqKrluYXlub/lkYrjgIJcclxuICAgICAgICBNaW5pR2FtZVNkay5BZHZlcnRNYW5hZ2VyLmluc3RhbmNlLmxvYWRCYW5uZXIoJ2FkdW5pdC00ZTdlZjQ2N2UzZWFhYjUxJyk7XHJcblxyXG4gICAgICAgIC8vIOm7mOiupOaWueW8j+aYvuekuuaoquW5heW5v+WRiuOAglxyXG4gICAgICAgIC8vIOaWueazlTHvvJrpu5jorqTosIPnlKhcclxuICAgICAgICBNaW5pR2FtZVNkay5BZHZlcnRNYW5hZ2VyLmluc3RhbmNlLnNob3dCYW5uZXIoKTtcclxuXHJcbiAgICAgICAgLy8g56S65L6L77ya5oyH5a6a5bGP5bmV5bqV6YOo5q2j5Lit5pi+56S65qiq5bmF5bm/5ZGK44CCXHJcbiAgICAgICAgLy8g5pa55rOVMu+8muaMh+WumuWxj+W5lemhtumDqOaIluW6lemDqOato+S4rVxyXG4gICAgICAgIC8vIE1pbmlHYW1lU2RrLkFkdmVydE1hbmFnZXIuaW5zdGFuY2Uuc2hvd0Jhbm5lcignYWR1bml0LTRlN2VmNDY3ZTNlYWFiNTEnLCBNaW5pR2FtZVNkay5FQWRCYW5uZXJMb2NhdGlvbi5CT1RUT00pOyBcclxuXHJcbiAgICAgICAgLy8g56S65L6L77ya6YCa6L+H5Z2Q5qCH5oyH5a6a5L2N572u5pi+56S65qiq5bmF5bm/5ZGK44CCXHJcbiAgICAgICAgLy8g5pa55rOVMu+8muaMh+WumuWdkOagh1xyXG4gICAgICAgIC8vIE1pbmlHYW1lU2RrLkFkdmVydE1hbmFnZXIuaW5zdGFuY2Uuc2hvd0Jhbm5lcignYWR1bml0LTRlN2VmNDY3ZTNlYWFiNTEnLCB7IHRvcDogMTAsIGxlZnQ6IDEwIH0pOyBcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIOmakOiXj+W5v+WRiuaoquW5heeahOWHveaVsOOAglxyXG4gICAgICogXHJcbiAgICAgKiDor6Xlh73mlbDosIPnlKhNaW5pR2FtZVNkay5BZHZlcnRNYW5hZ2Vy5a6e5L6L55qE5pa55rOV77yM55So5LqO6ZqQ6JeP5bm/5ZGK5qiq5bmF44CCXHJcbiAgICAgKiDlvZPpnIDopoHmmoLml7blgZzmraLlsZXnpLrlub/lkYrmiJbnlKjmiLfkuLvliqjor7fmsYLpmpDol4/lub/lkYrml7bvvIzlj6/ku6XosIPnlKjmraTlh73mlbDjgIJcclxuICAgICAqIFxyXG4gICAgICogQHJlbWFya3NcclxuICAgICAqIOatpOWHveaVsOS4jeaOpeWPl+S7u+S9leWPguaVsO+8jOS5n+S4jei/lOWbnuS7u+S9leWAvOOAglxyXG4gICAgICog5a6D5Y2V57qv5Zyw6Kem5Y+R5bm/5ZGK5qiq5bmF55qE6ZqQ6JeP5pON5L2c77yM5YW35L2T5a6e546w5L6d6LWW5LqOQWR2ZXJ0TWFuYWdlcueahOWunueOsOOAglxyXG4gICAgICovXHJcbiAgICBvbkhpZGVCYW5uZXIoKSB7XHJcbiAgICAgICAgTWluaUdhbWVTZGsuQWR2ZXJ0TWFuYWdlci5pbnN0YW5jZS5oaWRlQmFubmVyKCk7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiDmmL7npLrmj5LlsY/lub/lkYrnmoTlh73mlbDjgIJcclxuICAgICAqIFxyXG4gICAgICog5q2k5Ye95pWw6LCD55SoTWluaUdhbWVTZGsuQWR2ZXJ0TWFuYWdlcuWunuS+i+eahOaWueazle+8jOS7peaYvuekuuS4gOS4quaMh+WumueahOaPkuWxj+W5v+WRiuOAglxyXG4gICAgICog5a6D5L2/55So5LqG56Gs57yW56CB55qE5bm/5ZGK5Y2V5YWD5qCH6K+G56ym77yM6L+Z5oSP5ZGz552A5a6D5LiT5Li654m55a6a55qE5bm/5ZGK5L2N6K6+6K6h44CCXHJcbiAgICAgKiDlnKjlrp7pmYXlupTnlKjkuK3vvIzlj6/og73pnIDopoHmoLnmja7lupTnlKjnmoTphY3nva7miJbnlKjmiLfnmoTnibnlrprmnaHku7bmnaXliqjmgIHpgInmi6nlub/lkYrljZXlhYPmoIfor4bnrKbjgIJcclxuICAgICAqL1xyXG4gICAgb25TaG93SW50ZXJzdGl0aWFsKCkge1xyXG4gICAgICAgIE1pbmlHYW1lU2RrLkFkdmVydE1hbmFnZXIuaW5zdGFuY2Uuc2hvd0ludGVyc3RpdGlhbCgnYWR1bml0LWVhZGQ2Nzg1MWQzMDUwYWQnKTtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIOiwg+eUqOW5v+WRiueuoeeQhuWZqOWKoOi9veW5tuWxleekuuiHquWumuS5ieW5v+WRiuOAglxyXG4gICAgICog5q2k5pa55rOV6aaW5YWI6YCa6L+H5bm/5ZGK566h55CG5Zmo55qE5a6e5L6L5Yqg6L295oyH5a6a55qE6Ieq5a6a5LmJ5bm/5ZGK5Y2V5YWD77yM54S25ZCO5bGV56S66L+Z5Liq6Ieq5a6a5LmJ5bm/5ZGK44CCXHJcbiAgICAgKiDliqDovb3lkozlsZXnpLrlub/lkYrmmK/lub/lkYrnrqHnkIbns7vnu5/kuK3nmoTluLjop4Hmk43kvZzvvIzov5nph4zpgJrov4fkuKTmraXliIbliKvlrozmiJDliqDovb3lkozlsZXnpLrnmoTov4fnqIvvvIxcclxuICAgICAqIOS7peehruS/neW5v+WRiuWcqOWxleekuuWJjeato+ehruS4lOWFheWIhuWcsOiiq+WKoOi9veOAglxyXG4gICAgICovXHJcbiAgICBvblNob3dDdXN0b20oKSB7XHJcbiAgICAgICAgLy8g5Yqg6L295oyH5a6a55qE6Ieq5a6a5LmJ5bm/5ZGK5Y2V5YWD44CCXHJcbiAgICAgICAgTWluaUdhbWVTZGsuQWR2ZXJ0TWFuYWdlci5pbnN0YW5jZS5sb2FkQ3VzdG9tKEVXZWNoYXRBRC5DVU1TVE9NXzAxKTtcclxuICAgICAgICAvLyDlsZXnpLrlt7LliqDovb3nmoToh6rlrprkuYnlub/lkYrjgIJcclxuICAgICAgICBNaW5pR2FtZVNkay5BZHZlcnRNYW5hZ2VyLmluc3RhbmNlLnNob3dDdXN0b20oRVdlY2hhdEFELkNVTVNUT01fMDEpO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICog6ZqQ6JeP6Ieq5a6a5LmJ5bm/5ZGK44CCXHJcbiAgICAgKiBcclxuICAgICAqIOacrOWHveaVsOiwg+eUqE1pbmlHYW1lU2RrLkFkdmVydE1hbmFnZXIuaW5zdGFuY2UuaGlkZUN1c3RvbSgp5p2l6ZqQ6JeP6Ieq5a6a5LmJ5bm/5ZGK44CCXHJcbiAgICAgKiDov5nmmK/lr7nmjqXlub/lkYrnrqHnkIbns7vnu5/nmoTkuIDpg6jliIbvvIznlKjkuo7mjqfliLblub/lkYrnmoTmmL7npLrkuI7pmpDol4/jgIJcclxuICAgICAqIOWcqOmcgOimgemakOiXj+iHquWumuS5ieW5v+WRiueahOWcuuaZr+S4i++8jOiwg+eUqOatpOWHveaVsOWNs+WPr+WunueOsOebuOW6lOWKn+iDveOAglxyXG4gICAgICovXHJcbiAgICBvbkhpZGVDdXN0b20oKSB7XHJcbiAgICAgICAgTWluaUdhbWVTZGsuQWR2ZXJ0TWFuYWdlci5pbnN0YW5jZS5oaWRlQ3VzdG9tKEVXZWNoYXRBRC5DVU1TVE9NXzAxKTtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIOinpuWPkeaYvuekuuinhumikeW5v+WRiueahOWHveaVsOOAglxyXG4gICAgICog6YCa6L+H6LCD55SoTWluaUdhbWVTZGsuQWR2ZXJ0TWFuYWdlci5pbnN0YW5jZS5zaG93VmlkZW/mlrnms5XvvIzmmL7npLrkuIDkuKrop4bpopHlub/lkYrvvIzlubbmoLnmja7nlKjmiLfop4LnnIvlub/lkYrnmoTmg4XlhrXmiafooYznm7jlupTnmoTpgLvovpHjgIJcclxuICAgICAqIFxyXG4gICAgICogQHJlbWFya3NcclxuICAgICAqIOatpOWHveaVsOmmluWFiOS8oOWFpeS4gOS4quW5v+WRiuWNleWFg0lE77yM55So5LqO5qCH6K+G6KaB5pi+56S655qE6KeG6aKR5bm/5ZGK44CC54S25ZCO5Lyg5YWl5LiA5Liq5Zue6LCD5Ye95pWw77yM6K+l5Zue6LCD5Ye95pWw5Zyo55So5oi36KeC55yL5bm/5ZGK5ZCO6KKr6LCD55So77yM5peg6K6655So5oi35piv5a6M5oiQ5LqG6KeC55yL44CB5ouS57ud5LqG6KeC55yL6L+Y5piv6KeC55yL6L+H56iL5Lit5Y+R55Sf5LqG6ZSZ6K+v44CCXHJcbiAgICAgKiDlm57osIPlh73mlbDmjqXmlLbkuKTkuKrlj4LmlbDvvJrkuIDkuKrmmK/nlKjmiLfop4LnnIvlub/lkYrnmoTnu5PmnpzvvIzlj6bkuIDkuKrmmK/nlKjmiLfop4LnnIvnmoTlub/lkYrmlbDph4/jgILmoLnmja7op4LnnIvnu5PmnpznmoTkuI3lkIzvvIzmmL7npLrkuI3lkIznmoTmj5DnpLrkv6Hmga/jgIJcclxuICAgICAqL1xyXG4gICAgb25TaG93VmlkZW8oKSB7XHJcbiAgICAgICAgLy8g5bm/5ZGK5Y2V5YWDSUTvvIznlKjkuo7moIfor4bopoHmmL7npLrnmoTop4bpopHlub/lkYpcclxuICAgICAgICAvLyDlub/lkYrljZXlhYNJROeahOagt+S+i1xyXG4gICAgICAgIC8v5oqW6Z+z5b2i5aaCOiAxcmUzbmZxa215ODFtNG04Z2VcclxuICAgICAgICAvL+W+ruS/oeW9ouWmgjogYWR1bml0LWE3NzE4ZjZlMTk1ZTQyZmVcclxuICAgICAgICBNaW5pR2FtZVNkay5BZHZlcnRNYW5hZ2VyLmluc3RhbmNlLnNob3dWaWRlbygnMXJlM25mcWtteTgxbTRtOGdlJywgKHJlczogTWluaUdhbWVTZGsuRUFkVmlkZW9SZXN1bHQsIGNvdW50OiBudW1iZXIpID0+IHtcclxuICAgICAgICAgICAgLy8g6L6T5Ye655So5oi36KeC55yL55qE5bm/5ZGK5pWw6YePXHJcbiAgICAgICAgICAgIGNvbnNvbGUubG9nKCfnlKjmiLfnnIvnmoTop4bpopHlub/lkYrkuKrmlbDmmK86JywgY291bnQpO1xyXG5cclxuICAgICAgICAgICAgLy8g5qC55o2u55So5oi36KeC55yL5bm/5ZGK55qE57uT5p6c77yM5omn6KGM5LiN5ZCM55qE6YC76L6RXHJcbiAgICAgICAgICAgIHN3aXRjaCAocmVzKSB7XHJcbiAgICAgICAgICAgICAgICBjYXNlIE1pbmlHYW1lU2RrLkVBZFZpZGVvUmVzdWx0LkFDQ0VQVDpcclxuICAgICAgICAgICAgICAgICAgICAvLyDnlKjmiLflrozmiJDkuoblub/lkYrop4LnnIvvvIzmmL7npLrlpZblirHmj5DnpLpcclxuICAgICAgICAgICAgICAgICAgICBNaW5pR2FtZVNkay5BUEkuc2hvd1RvYXN0KCfnlKjmiLfnnIvlrozlub/lkYrvvIzlj6/ku6XlpZblirEnKTtcclxuICAgICAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgICAgIGNhc2UgTWluaUdhbWVTZGsuRUFkVmlkZW9SZXN1bHQuUkVKRUNUOlxyXG4gICAgICAgICAgICAgICAgICAgIC8vIOeUqOaIt+aLkue7neS6huW5v+WRiuingueci++8jOaYvuekuuS4jeWlluWKseaPkOekulxyXG4gICAgICAgICAgICAgICAgICAgIE1pbmlHYW1lU2RrLkFQSS5zaG93VG9hc3QoJ+eUqOaIt+aLkue7neaOieW5v+WRiu+8jOS4jeWlluWKsScpO1xyXG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICAgICAgY2FzZSBNaW5pR2FtZVNkay5FQWRWaWRlb1Jlc3VsdC5FUlJPUjpcclxuICAgICAgICAgICAgICAgICAgICAvLyDlub/lkYrmkq3mlL7lj5HnlJ/plJnor6/vvIzmmL7npLrplJnor6/mj5DnpLpcclxuICAgICAgICAgICAgICAgICAgICBNaW5pR2FtZVNkay5BUEkuc2hvd1RvYXN0KCfmkq3mlL7lub/lkYrlj5HnlJ/plJnor6/vvIzkuI3lpZblirEnKTtcclxuICAgICAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgICAgIGRlZmF1bHQ6XHJcbiAgICAgICAgICAgICAgICAgICAgLy8g5YW25LuW5oOF5Ya177yM5LiN5L2c5aSE55CGXHJcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9KTtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIOW8leWvvOeUqOaIt+WIhuS6q+W6lOeUqOe7meaci+WPi+OAglxyXG4gICAgICogXHJcbiAgICAgKiDpgJrov4fosIPnlKhNaW5pR2FtZVNka+eahEFQSeWIhuS6q+WKn+iDve+8jOWQkeeUqOaIt+eahOaci+WPi+WciOWPkemAgemCgOivt++8jOmCgOivt+S7luS7rOS4gOi1t+eOqea4uOaIj+OAglxyXG4gICAgICog6L+Z5piv5LiA5Liq6YeN6KaB55qE5o6o5bm/5omL5q6177yM5Y+v5Lul5aKe5Yqg5bqU55So55qE5pud5YWJ5bqm5ZKM55So5oi36YeP44CCXHJcbiAgICAgKiBcclxuICAgICAqIEByZW1hcmtzXHJcbiAgICAgKiDmraTmlrnms5XkuK3osIPnlKjnmoRBUEnkvp3otZbkuo7nibnlrprnmoTlsI/muLjmiI/lubPlj7DvvIzlm6DmraTlnKjkuI3lkIznmoTlubPlj7DkuIrlj6/og73pnIDopoHkuI3lkIznmoTlrp7njrDjgIJcclxuICAgICAqL1xyXG4gICAgb25TaGFyZSgpIHtcclxuICAgICAgICBNaW5pR2FtZVNkay5BUEkuc2hhcmVBcHBUb0ZyaWVuZHMoJ+adpeeOqea4uOaIj+WQpycpO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICog5pi+56S65LiA5LiqdG9hc3Tmj5DnpLrjgIJcclxuICAgICAqIFxyXG4gICAgICog6YCa6L+H6LCD55SoTWluaUdhbWVTZGvnmoRBUEnmlrnms5XmnaXmmL7npLrkuIDkuKrnroDnn63nmoTmj5DnpLrkv6Hmga/jgIJ0b2FzdOaYr+S4gOenjei9u+mHj+e6p+eahOaPkOekuuaWueW8j++8jOeUqOS6juWcqOeVjOmdouS4iuefreaaguWcsOWxleekuuS4gOS6m+S/oeaBr++8jOS4jeW9seWTjeeUqOaIt+aTjeS9nOOAglxyXG4gICAgICog6L+Z6YeM5L2/55So5LqG5Zu65a6a55qE5o+Q56S65paH5pysICfov5nmmK/kuIDkuKp0b2FzdCfvvIzlnKjlrp7pmYXlupTnlKjkuK3vvIzlj6/ku6XmoLnmja7pnIDopoHliqjmgIHorr7nva7mj5DnpLrmlofmnKzjgIJcclxuICAgICAqL1xyXG4gICAgb25TaG93VG9hc3QoKSB7XHJcbiAgICAgICAgTWluaUdhbWVTZGsuQVBJLnNob3dUb2FzdCgn6L+Z5piv5LiA5LiqdG9hc3QnKTtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIOinpuWPkeiuvuWkh+aMr+WKqOWKn+iDveOAglxyXG4gICAgICogXHJcbiAgICAgKiDor6Xmlrnms5XnlKjkuo7osIPnlKhNaW5pR2FtZVNka+aPkOS+m+eahEFQSe+8jOS7peWunueOsOiuvuWkh+eahOaMr+WKqOWKn+iDveOAguW9k+mcgOimgeaPkOmGkueUqOaIt+aIluaPkOS+m+inpuinieWPjemmiOaXtu+8jOWPr+S7peiwg+eUqOatpOaWueazleOAglxyXG4gICAgICog5L6L5aaC77yM5Zyo5ri45oiP5oiW5bqU55So5Lit77yM5b2T55So5oi35a6M5oiQ54m55a6a5pON5L2c5oiW5Y+R55Sf54m55a6a5LqL5Lu25pe277yM5Y+v5Lul6YCa6L+H5oyv5Yqo57uZ5LqI55So5oi35Y+N6aaI44CCXHJcbiAgICAgKiBcclxuICAgICAqIEByZW1hcmtzXHJcbiAgICAgKiDmraTmlrnms5Xml6Dlj4LmlbDvvIzkuZ/kuI3ov5Tlm57ku7vkvZXlgLzjgIJcclxuICAgICAqL1xyXG4gICAgb25WaXJicmF0ZSgpIHtcclxuICAgICAgICBNaW5pR2FtZVNkay5BUEkudmlicmF0ZSgpO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICog6YeN5paw5ZCv5Yqo5ri45oiP5a6e5L6L44CCXHJcbiAgICAgKiBcclxuICAgICAqIOatpOWHveaVsOiwg+eUqE1pbmlHYW1lU2Rr5Lit55qEQVBJ6YeN5paw5ZCv5Yqo5ri45oiP44CC6YeN5paw5ZCv5Yqo5pON5L2c5Y+v6IO95piv5Li65LqG5Yid5aeL5YyW5ri45oiP546v5aKD44CB6YeN572u5ri45oiP54q25oCB5oiW5aSE55CG5YW25LuW6ZyA6KaB6YeN5ZCv55qE5Zy65pmv44CCXHJcbiAgICAgKiDosIPnlKjmraTlh73mlbDlkI7vvIzmuLjmiI/lsIbkvJrph43mlrDlvIDlp4vvvIzlvZPliY3nmoTmuLjmiI/nirbmgIHlsIbkvJrooqvmuIXpmaTjgIJcclxuICAgICAqIFxyXG4gICAgICogQHJlbWFya3NcclxuICAgICAqIOatpOWHveaVsOS4jeaOpeWPl+S7u+S9leWPguaVsOOAglxyXG4gICAgICogXHJcbiAgICAgKiBAcmV0dXJucyDml6Dov5Tlm57lgLzjgIJcclxuICAgICAqL1xyXG4gICAgb25SZWJvb3QoKSB7XHJcbiAgICAgICAgTWluaUdhbWVTZGsuQVBJLnJlYm9vdCgpO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICog5b2T5YmN5Ye95pWw55So5LqO5Zyo6L+35L2g5ri45oiP5Lit5a6e546w6YCA5Ye65Yqf6IO944CCXHJcbiAgICAgKiDlroPosIPnlKjkuoZNaW5pR2FtZVNka+aPkOS+m+eahEFQSeaWueazleadpeinpuWPkemAgOWHuuaTjeS9nOOAglxyXG4gICAgICog6K+l5pa55rOV6YCa5bi45Zyo6ZyA6KaB57uT5p2f5b2T5YmN6L+35L2g5ri45oiP5oiW6L+U5Zue5Yiw5LiK5LiA57qn6I+c5Y2V5pe26KKr6LCD55So44CCXHJcbiAgICAgKi9cclxuICAgIG9uRXhpdCgpIHtcclxuICAgICAgICBNaW5pR2FtZVNkay5BUEkuZXhpdCgpO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICog5pi+56S65YiG5Lqr6I+c5Y2V44CCXHJcbiAgICAgKiBcclxuICAgICAqIOmAmui/h+iwg+eUqE1pbmlHYW1lU2Rr55qEQVBJ5pa55rOV77yM6Kem5Y+R5pi+56S65YiG5Lqr6I+c5Y2V55qE5pON5L2c44CC5q2k5Ye95pWw5peo5Zyo5o+Q5L6b5LiA5Liq57uf5LiA55qE5YWl5Y+j77yMXHJcbiAgICAgKiDku6Xkvr/lnKjpnIDopoHml7bovbvmnb7osIPnlKjliIbkuqvlip/og73vvIzogIzml6DpnIDnm7TmjqXkuI7lhbfkvZPnmoRTREvmjqXlj6PkuqTkupLjgIJcclxuICAgICAqIFxyXG4gICAgICogQHJlbWFya3NcclxuICAgICAqIOatpOaWueazleS4jeaOpeWPl+S7u+S9leWPguaVsO+8jOS5n+S4jei/lOWbnuS7u+S9leWAvOOAglxyXG4gICAgICovXHJcbiAgICBvblNob3dTaGFyZU1lbnUoKSB7XHJcbiAgICAgICAgTWluaUdhbWVTZGsuQVBJLnNob3dTaGFyZU1lbnUoKTtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIOWvvOiIquWIsOaMh+WumueahOWwj+a4uOaIj+OAglxyXG4gICAgICogXHJcbiAgICAgKiDmnKzlh73mlbDnlKjkuo7op6blj5Hlr7zoiKrliLDkuIDkuKrnibnlrprnmoTlsI/muLjmiI/jgILov5npnIDopoHmj5Dkvpvnm67moIflsI/muLjmiI/nmoRJRO+8jFxyXG4gICAgICog5Lul5L6/57O757uf6IO95aSf5q2j56Gu5Zyw5bCG55So5oi36YeN5a6a5ZCR5Yiw55uu5qCH5bCP5ri45oiP44CCXHJcbiAgICAgKiBcclxuICAgICAqIOazqOaEj++8mui/memHjOeahCd4eHgn5piv5Y2g5L2N56ym77yM5a6e6ZmF5L2/55So5pe26ZyA6KaB5pu/5o2i5Li65YW35L2T55qE5bCP5ri45oiPSUTjgIJcclxuICAgICAqL1xyXG4gICAgb25OYXZpZ2F0ZSgpIHtcclxuICAgICAgICBNaW5pR2FtZVNkay5BUEkubmF2aWdhdGVUbygneHh4Jyk7IC8vIHh4eOabv+aNouS4uuS9oOeahOWwj+a4uOaIj2lkXHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiDmv4DmtLvlrZfoioLot7PliqjlhaXlj6Pop4blm77jgIJcclxuICAgICAqIFxyXG4gICAgICog5q2k5pa55rOV55So5LqO5bCG5a2X6IqC6Lez5Yqo5YWl5Y+j6KeG5Zu+6K6+572u5Li65rS76LeD54q25oCB44CC5b2T6ZyA6KaB5Zyo55So5oi355WM6Z2i5Lit5pi+56S65a2X6IqC6Lez5Yqo55qE5YWl5Y+j5pe277yMXHJcbiAgICAgKiDlj6/ku6XosIPnlKjmraTmlrnms5XmnaXmv4DmtLvnm7jlupTnmoTop4blm77lhYPntKDvvIzkvb/lhbblr7nnlKjmiLflj6/op4HjgIJcclxuICAgICAqL1xyXG4gICAgb25CeXRlZGFuY2VFbnRyYW5jZVZpZXcoKSB7XHJcbiAgICAgICAgLy8gdGhpcy5lbnRyYW5jZVZpZXcuYWN0aXZlID0gdHJ1ZTtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIOivt+axgueZu+W9leS7o+eggVxyXG4gICAgICogXHJcbiAgICAgKiDmnKzlh73mlbDnlKjkuo7op6blj5HlsI/nqIvluo/nmoTnmbvlvZXmtYHnqIvvvIzojrflj5blvq7kv6HmiJblpLTmnaHnrYnnrKzkuInmlrnlubPlj7DnmoTnmbvlvZXku6PnoIHjgIJcclxuICAgICAqIOi/meS6m+S7o+eggeWPr+S7peeUqOS6juWQjue7reeahOeUqOaIt+i6q+S7vemqjOivgeWSjOaVsOaNruWQjOatpea1geeoi+OAglxyXG4gICAgICovXHJcbiAgICBvbkdldExvZ2luQ29kZSgpIHtcclxuICAgICAgICAvLyDosIPnlKhNaW5pR2FtZVNka+eahEFQSeeZu+W9leaWueazle+8jOS8oOWFpeS4gOS4quWbnuiwg+WHveaVsOWkhOeQhueZu+W9lee7k+aenFxyXG4gICAgICAgIE1pbmlHYW1lU2RrLkFQSS5sb2dpbigoY29kZTogc3RyaW5nLCBhbm9ueW1vdXNDb2RlOiBzdHJpbmcpID0+IHtcclxuICAgICAgICAgICAgLy8g5omT5Y2w5b6u5L+h5oiW5aS05p2h55qE55m75b2V5Luj56CBXHJcbiAgICAgICAgICAgIGNvbnNvbGUubG9nKCdXZWNoYXQgT3IgQnl0ZWRhbmNlIENvZGU6JywgY29kZSk7XHJcbiAgICAgICAgICAgIC8vIOaJk+WNsOWktOadoeeahOWMv+WQjeeZu+W9leS7o+eggVxyXG4gICAgICAgICAgICAvLyBjb25zb2xlLmxvZygnQnl0ZWRhbmNlIEFub255bW91cyBDb2RlOicsIGFub255bW91c0NvZGUpO1xyXG4gICAgICAgICAgICBpZihjb2RlKXtcclxuICAgICAgICAgICAgICAgIC8vIGNjLmZ4LkdhbWVUb29sLmdldFVzZXJJZChjb2RlLCBkYXRhID0+IHRoaXMuc2V0VXNlcklkKGRhdGEpKTsgXHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9KTtcclxuICAgIH1cclxuXHJcbiAgICAvLyBzZXRVc2VySWQoZGF0YSl7XHJcbiAgICAvLyAgICAgY2MuZnguR2FtZUNvbmZpZy5HTV9JTkZPLnVzZXJJZCA9IGRhdGEuZGF0YS51c2VySWQ7XHJcbiAgICAvLyAgICAgTWluaUdhbWVTZGsuQVBJLmdldFVzZXJJbmZvKHRoaXMuc2V0VXNlckluZm8pO1xyXG4gICAgLy8gfVxyXG5cclxuICAgIC8vIHNldFVzZXJJbmZvKGRhdGEpe1xyXG4gICAgLy8gICAgIGNvbnNvbGUubG9nKFwi6I635Y+W5Yiw55qE55So5oi35L+h5oGvXCIsZGF0YS51c2VySW5mbyk7XHJcbiAgICAvLyAgICAgdmFyIHVzZURhdGEgPSB7XHJcbiAgICAvLyAgICAgICAgIFwiZ2FtZUlkXCI6IGNjLmZ4LkdhbWVDb25maWcuR01fSU5GTy5nYW1lSWQsXHJcbiAgICAvLyAgICAgICAgIFwidXNlcklkXCI6IGNjLmZ4LkdhbWVDb25maWcuR01fSU5GTy51c2VySWQsXHJcbiAgICAvLyAgICAgICAgIFwibmlja05hbWVcIjpkYXRhLnVzZXJJbmZvLm5pY2tOYW1lLFxyXG4gICAgLy8gICAgICAgICBcInBpY1wiOiBkYXRhLnVzZXJJbmZvLmF2YXRhclVybFxyXG4gICAgICAgICAgIFxyXG4gICAgLy8gICAgIH1cclxuICAgIC8vICAgICBjb25zb2xlLmxvZyhcIuWNs+WwhuS4iuS8oOeahOeUqOaIt+S/oeaBrzpcIixjYy5meC5HYW1lQ29uZmlnLkdNX0lORk8udXNlcklkLGRhdGEudXNlckluZm8ubmlja05hbWUsZGF0YS51c2VySW5mby5hdmF0YXJVcmwpO1xyXG4gICAgLy8gICAgIGNvbnNvbGUubG9nKFwiUG9zdOaVsOaNrjpcIix1c2VEYXRhKTtcclxuICAgIC8vICAgICBjYy5meC5HYW1lVG9vbC5zZXRVc2VySW5mbyh1c2VEYXRhLChyZXMpPT57XHJcbiAgICAvLyAgICAgICAgIGNvbnNvbGUubG9nKFwi5LiK5Lyg5oiQ5YqfOlwiLHJlcyk7XHJcbiAgICAvLyAgICAgfSk7XHJcbiAgICAvLyB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiDliJvlu7rlubbmmL7npLrmuLjmiI/lnIjmjInpkq5cclxuICAgICAqIFxyXG4gICAgICog5pys5Ye95pWw6YCa6L+H6LCD55SoTWluaUdhbWVTZGvnmoRHYW1lQ2x1YuWunuS+i+aWueazle+8jOWunueOsOa4uOaIj+S/seS5kOmDqOeahOWIm+W7uuWSjOaYvuekuuOAglxyXG4gICAgICog5a6D6aaW5YWI6YWN572u5L+x5LmQ6YOo55qE5Zu+5qCH57G75Z6L5ZKM5L2N572u5aSn5bCP77yM54S25ZCO5Yib5bu65L+x5LmQ6YOo77yM5pyA5ZCO5pi+56S65L+x5LmQ6YOo44CCXHJcbiAgICAgKiDov5nmoLflgZrmmK/kuLrkuoblnKjlsI/muLjmiI/lhoXliJvlu7rlubblsZXnpLrkuIDkuKrmuLjmiI/kv7HkuZDpg6jnmoTlm77moIfvvIzkvpvnjqnlrrbliqDlhaXmiJbkupLliqjjgIJcclxuICAgICAqL1xyXG4gICAgb25DcmVhdGVDbHViKCkge1xyXG4gICAgICAgIC8vIOmFjee9ruS/seS5kOmDqOWbvuagh+S4uue7v+iJsu+8jOiuvue9ruWbvuagh+eahOS9jee9ruS4uumhtumDqDIwMOWDj+e0oO+8jOW3puS+pzDlg4/ntKBcclxuICAgICAgICBNaW5pR2FtZVNkay5HYW1lQ2x1Yi5pbnN0YW5jZS5jcmVhdGUoXHJcbiAgICAgICAgICAgIE1pbmlHYW1lU2RrLkVHYW1lQ2x1Ykljb24uR1JFRU4sXHJcbiAgICAgICAgICAgIHsgdG9wOiAyMDAsIGxlZnQ6IDAgfSxcclxuICAgICAgICAgICAgeyB3aWR0aDogNTAsIGhlaWdodDogNTAgfSk7XHJcbiAgICAgICAgLy8g5pi+56S65ri45oiP5L+x5LmQ6YOo5Zu+5qCHXHJcbiAgICAgICAgTWluaUdhbWVTZGsuR2FtZUNsdWIuaW5zdGFuY2Uuc2hvdygpO1xyXG4gICAgfVxyXG59XHJcbiJdfQ== -======= -//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImFzc2V0c1xcc2hvcFxcc2NyaXB0XFxzaG9wLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUVNLElBQUEsS0FBd0IsRUFBRSxDQUFDLFVBQVUsRUFBbkMsT0FBTyxhQUFBLEVBQUUsUUFBUSxjQUFrQixDQUFDO0FBRzVDO0lBQXNDLDRCQUFZO0lBQWxEO1FBQUEscUVBa0RDO1FBakRHLE1BQU07UUFFTixVQUFJLEdBQVksSUFBSSxDQUFDO1FBQ3JCLE1BQU07UUFFTixjQUFRLEdBQVksSUFBSSxDQUFDOztRQTJDekIsaUJBQWlCO0lBQ3JCLENBQUM7SUEzQ0csZUFBZTtJQUVmLHdCQUFLLEdBQUw7UUFDSSxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUM7SUFDcEIsQ0FBQztJQUNELFFBQVE7SUFDUiwyQkFBUSxHQUFSO1FBQ0ksU0FBUztRQUNULElBQU0sUUFBUSxHQUFHO1lBQ2IsRUFBRSxVQUFVLEVBQUUsYUFBYSxFQUFFLElBQUksRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFLEdBQUcsRUFBRSxLQUFLLEVBQUUsU0FBUyxFQUFFO1lBQ3pFLEVBQUUsVUFBVSxFQUFFLGFBQWEsRUFBRSxJQUFJLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUUsS0FBSyxFQUFFLEVBQUUsRUFBRTtZQUNuRSxFQUFFLFVBQVUsRUFBRSxhQUFhLEVBQUUsSUFBSSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUsSUFBSSxFQUFFLEtBQUssRUFBRSxFQUFFLEVBQUU7WUFDbkUsRUFBRSxVQUFVLEVBQUUsYUFBYSxFQUFFLElBQUksRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsRUFBRSxFQUFFO1lBQ3BFLEVBQUUsVUFBVSxFQUFFLGFBQWEsRUFBRSxJQUFJLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEVBQUUsRUFBRTtZQUNwRSxFQUFFLFVBQVUsRUFBRSxhQUFhLEVBQUUsSUFBSSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxFQUFFLEVBQUU7WUFDcEUsRUFBRSxVQUFVLEVBQUUsMkJBQTJCLEVBQUUsSUFBSSxFQUFFLFVBQVUsRUFBRSxLQUFLLEVBQUUsSUFBSSxFQUFFLEtBQUssRUFBRSxRQUFRLEVBQUU7WUFDM0YsRUFBRSxVQUFVLEVBQUUsMkJBQTJCLEVBQUUsSUFBSSxFQUFFLFVBQVUsRUFBRSxLQUFLLEVBQUUsSUFBSSxFQUFFLEtBQUssRUFBRSxFQUFFLEVBQUU7U0FDeEYsQ0FBQztRQUNGLEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLE1BQU0sRUFBRSxDQUFDLEVBQUUsRUFBRTtZQUM5RCxJQUFNLFVBQVUsR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsWUFBWSxDQUFDLEVBQUUsQ0FBQyxNQUFNLENBQUMsQ0FBQztZQUNqRixJQUFNLEtBQUssR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsWUFBWSxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsQ0FBQztZQUMzRSxJQUFNLEtBQUssR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsWUFBWSxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsQ0FBQztZQUMzRSxJQUFNLE9BQU8sR0FBRyxRQUFRLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO1lBQ2hDLElBQUksVUFBVSxJQUFJLE9BQU8sRUFBRTtnQkFDdkIsdURBQXVEO2FBQzFEO1lBQ0QsSUFBSSxLQUFLLElBQUksT0FBTyxFQUFFO2dCQUNsQixLQUFLLENBQUMsTUFBTSxHQUFHLENBQUMsT0FBTyxDQUFDLEtBQUssR0FBRyxHQUFHLENBQUMsQ0FBQyxRQUFRLEVBQUUsR0FBRyxHQUFHLENBQUM7YUFDekQ7WUFDRCxJQUFJLEtBQUssSUFBSSxPQUFPLEVBQUU7Z0JBQ2xCLEtBQUssQ0FBQyxNQUFNLEdBQUcsT0FBTyxDQUFDLElBQUksQ0FBQzthQUMvQjtTQUNKO0lBQ0wsQ0FBQztJQUdELFFBQVE7SUFDUiw0QkFBUyxHQUFUO1FBQ0ksT0FBTztRQUNQLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUM7SUFDeEIsQ0FBQztJQTVDRDtRQURDLFFBQVEsQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDOzBDQUNHO0lBR3JCO1FBREMsUUFBUSxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUM7OENBQ087SUFOUixRQUFRO1FBRDVCLE9BQU87T0FDYSxRQUFRLENBa0Q1QjtJQUFELGVBQUM7Q0FsREQsQUFrREMsQ0FsRHFDLEVBQUUsQ0FBQyxTQUFTLEdBa0RqRDtrQkFsRG9CLFFBQVEiLCJmaWxlIjoiIiwic291cmNlUm9vdCI6Ii8iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgTGlzdCBmcm9tIFwiLi4vLi4vU2NyaXB0L21vZHVsZS9SYW5rTGlzdC9MaXN0XCI7XG5cbmNvbnN0IHsgY2NjbGFzcywgcHJvcGVydHkgfSA9IGNjLl9kZWNvcmF0b3I7XG5cbkBjY2NsYXNzXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBOZXdDbGFzcyBleHRlbmRzIGNjLkNvbXBvbmVudCB7XG4gICAgLy/llYblupfnlYzpnaJcbiAgICBAcHJvcGVydHkoY2MuTm9kZSlcbiAgICBzaG9wOiBjYy5Ob2RlID0gbnVsbDtcbiAgICAvL+WVhuWTgeWIl+ihqFxuICAgIEBwcm9wZXJ0eShjYy5Ob2RlKVxuICAgIGl0ZW1MaXN0OiBjYy5Ob2RlID0gbnVsbDtcbiAgICAvLyBvbkxvYWQgKCkge31cblxuICAgIHN0YXJ0KCkge1xuICAgICAgICB0aGlzLm9wZW5TaG9wKCk7XG4gICAgfVxuICAgIC8v5omT5byA5ZWG5bqX55WM6Z2iXG4gICAgb3BlblNob3AoKSB7XG4gICAgICAgIC8vIOWVhuWTgeaVsOaNruaVsOe7hFxuICAgICAgICBjb25zdCBwcm9kdWN0cyA9IFtcbiAgICAgICAgICAgIHsgcHJvZHVjdF9pZDogXCJnb2xkX3BhY2tfMVwiLCBuYW1lOiBcIumHkeW4geWMhTFcIiwgcHJpY2U6IDYwMCwgdGl0bGU6IFwiM3gy5YWt5qGj6YeR5biBXCIgfSxcbiAgICAgICAgICAgIHsgcHJvZHVjdF9pZDogXCJnb2xkX3BhY2tfMlwiLCBuYW1lOiBcIumHkeW4geWMhTJcIiwgcHJpY2U6IDM2MDAsIHRpdGxlOiBcIlwiIH0sXG4gICAgICAgICAgICB7IHByb2R1Y3RfaWQ6IFwiZ29sZF9wYWNrXzNcIiwgbmFtZTogXCLph5HluIHljIUzXCIsIHByaWNlOiA2ODAwLCB0aXRsZTogXCJcIiB9LFxuICAgICAgICAgICAgeyBwcm9kdWN0X2lkOiBcImdvbGRfcGFja180XCIsIG5hbWU6IFwi6YeR5biB5YyFNFwiLCBwcmljZTogMTI4MDAsIHRpdGxlOiBcIlwiIH0sXG4gICAgICAgICAgICB7IHByb2R1Y3RfaWQ6IFwiZ29sZF9wYWNrXzVcIiwgbmFtZTogXCLph5HluIHljIU1XCIsIHByaWNlOiAzMjgwMCwgdGl0bGU6IFwiXCIgfSxcbiAgICAgICAgICAgIHsgcHJvZHVjdF9pZDogXCJnb2xkX3BhY2tfNlwiLCBuYW1lOiBcIumHkeW4geWMhTZcIiwgcHJpY2U6IDY0ODAwLCB0aXRsZTogXCJcIiB9LFxuICAgICAgICAgICAgeyBwcm9kdWN0X2lkOiBcInVubGltaXRlZF9oZWFsdGhfYnVuZGxlXzFcIiwgbmFtZTogXCLml6DpmZDkvZPlipvnu4TlkIjljIUxXCIsIHByaWNlOiAxODAwLCB0aXRsZTogXCIz5Liq5qiq54mI56S85YyFXCIgfSxcbiAgICAgICAgICAgIHsgcHJvZHVjdF9pZDogXCJ1bmxpbWl0ZWRfaGVhbHRoX2J1bmRsZV8yXCIsIG5hbWU6IFwi5peg6ZmQ5L2T5Yqb57uE5ZCI5YyFMlwiLCBwcmljZTogNjYwMCwgdGl0bGU6IFwiXCIgfVxuICAgICAgICBdO1xuICAgICAgICBmb3IgKGxldCBpID0gMTsgaSA8PSA4ICYmIGkgPCB0aGlzLml0ZW1MaXN0LmNoaWxkcmVuLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICBjb25zdCBzcHJpdGVDb21wID0gdGhpcy5pdGVtTGlzdC5jaGlsZHJlbltpXS5jaGlsZHJlblswXS5nZXRDb21wb25lbnQoY2MuU3ByaXRlKTtcbiAgICAgICAgICAgIGNvbnN0IHByaWNlID0gdGhpcy5pdGVtTGlzdC5jaGlsZHJlbltpXS5jaGlsZHJlblsxXS5nZXRDb21wb25lbnQoY2MuTGFiZWwpO1xuICAgICAgICAgICAgY29uc3QgdGl0bGUgPSB0aGlzLml0ZW1MaXN0LmNoaWxkcmVuW2ldLmNoaWxkcmVuWzJdLmdldENvbXBvbmVudChjYy5MYWJlbCk7XG4gICAgICAgICAgICBjb25zdCBwcm9kdWN0ID0gcHJvZHVjdHNbaSAtIDFdO1xuICAgICAgICAgICAgaWYgKHNwcml0ZUNvbXAgJiYgcHJvZHVjdCkge1xuICAgICAgICAgICAgICAgIC8vIFRPRE86IOagueaNriBwcm9kdWN0X2lkIOaIliBuYW1lIOiuvue9riBzcHJpdGVDb21wLnNwcml0ZUZyYW1lXG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAocHJpY2UgJiYgcHJvZHVjdCkge1xuICAgICAgICAgICAgICAgIHByaWNlLnN0cmluZyA9IChwcm9kdWN0LnByaWNlIC8gMTAwKS50b1N0cmluZygpICsgXCLlhYNcIjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmICh0aXRsZSAmJiBwcm9kdWN0KSB7XG4gICAgICAgICAgICAgICAgdGl0bGUuc3RyaW5nID0gcHJvZHVjdC5uYW1lO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG5cbiAgICAvL+WFs+mXreWVhuW6l+eVjOmdolxuICAgIGNsb3NlU2hvcCgpIHtcbiAgICAgICAgLy/plIDmr4HpooTliLbkvZNcbiAgICAgICAgdGhpcy5zaG9wLmRlc3Ryb3koKTtcbiAgICB9XG5cbiAgICAvLyB1cGRhdGUgKGR0KSB7fVxufVxuIl19 -//------QC-SOURCE-SPLIT------ - - (function() { - var nodeEnv = typeof require !== 'undefined' && typeof process !== 'undefined'; - var __module = nodeEnv ? module : {exports:{}}; - var __filename = 'preview-scripts/tiledmap-optimize-resource/Script/TmoTiledLayer.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, 'd60cfrGbXBLBbplLoT7TBn7', 'TmoTiledLayer'); -// Script/TmoTiledLayer.js - -"use strict"; - -exports.__esModule = true; -exports["default"] = void 0; -// Learn cc.Class: -// - https://docs.cocos.com/creator/manual/en/scripting/class.html -// Learn Attribute: -// - https://docs.cocos.com/creator/manual/en/scripting/reference/attributes.html -// Learn life-cycle callbacks: -// - https://docs.cocos.com/creator/manual/en/scripting/life-cycle-callbacks.html - -var _mat4_temp = cc.mat4(); -var _vec2_temp = cc.v2(); -var _vec2_temp2 = cc.v2(); -var _default = cc.Class({ - "extends": cc.TiledLayer, - // 此处修改 增加firstTmxLayer参数 - _init: function _init(layerInfo, mapInfo, tilesets, textures, texGrids, tiledMap, firstTmxLayer) { - // 修改结束 - this._cullingDirty = true; - this._layerInfo = layerInfo; - this._mapInfo = mapInfo; - // 此处修改 保存firstTmxLayer参数 - this._firstTmxLayer = firstTmxLayer; - this._tiledMap = tiledMap; - // 修改结束 - - var size = layerInfo._layerSize; - - // layerInfo - this._layerName = layerInfo.name; - this._tiles = layerInfo._tiles; - this._properties = layerInfo.properties; - this._layerSize = size; - this._minGID = layerInfo._minGID; - this._maxGID = layerInfo._maxGID; - this._opacity = layerInfo._opacity; - this._renderOrder = mapInfo.renderOrder; - this._staggerAxis = mapInfo.getStaggerAxis(); - this._staggerIndex = mapInfo.getStaggerIndex(); - this._hexSideLength = mapInfo.getHexSideLength(); - this._animations = mapInfo.getTileAnimations(); - - // tilesets - this._tilesets = tilesets; - // textures - this._textures = textures; - // grid texture - this._texGrids = texGrids; - - // mapInfo - this._layerOrientation = mapInfo.orientation; - this._mapTileSize = mapInfo.getTileSize(); - var maptw = this._mapTileSize.width; - var mapth = this._mapTileSize.height; - var layerW = this._layerSize.width; - var layerH = this._layerSize.height; - if (this._layerOrientation === cc.TiledMap.Orientation.HEX) { - // handle hex map - var TiledMap = cc.TiledMap; - var StaggerAxis = TiledMap.StaggerAxis; - var StaggerIndex = TiledMap.StaggerIndex; - var width = 0, - height = 0; - this._odd_even = this._staggerIndex === StaggerIndex.STAGGERINDEX_ODD ? 1 : -1; - if (this._staggerAxis === StaggerAxis.STAGGERAXIS_X) { - this._diffX1 = (maptw - this._hexSideLength) / 2; - this._diffY1 = 0; - height = mapth * (layerH + 0.5); - width = (maptw + this._hexSideLength) * Math.floor(layerW / 2) + maptw * (layerW % 2); - } else { - this._diffX1 = 0; - this._diffY1 = (mapth - this._hexSideLength) / 2; - width = maptw * (layerW + 0.5); - height = (mapth + this._hexSideLength) * Math.floor(layerH / 2) + mapth * (layerH % 2); - } - this.node.setContentSize(width, height); - } else if (this._layerOrientation === cc.TiledMap.Orientation.ISO) { - var wh = layerW + layerH; - this.node.setContentSize(maptw * 0.5 * wh, mapth * 0.5 * wh); - } else { - this.node.setContentSize(layerW * maptw, layerH * mapth); - } - - // offset (after layer orientation is set); - this._offset = cc.v2(layerInfo.offset.x, -layerInfo.offset.y); - this._useAutomaticVertexZ = false; - this._vertexZvalue = 0; - this._syncAnchorPoint(); - this._prepareToRender(); - }, - _updateCulling: function _updateCulling() { - if (CC_EDITOR) { - this.enableCulling(false); - } else if (this._enableCulling) { - // 此处修改 若不为首个layer 直接复用firstLayer的结果 - // this._firstTmxLayer不为空时 表示当前layer不是首个layer - var firstTmxLayer = this._firstTmxLayer; - if (!!firstTmxLayer) { - this._cullingRect = firstTmxLayer._cullingRect; - this._cullingDirty = firstTmxLayer._cacheCullingDirty; - return; - } - // 修改结束 - - this.node._updateWorldMatrix(); - cc.Mat4.invert(_mat4_temp, this.node._worldMatrix); - var rect = cc.visibleRect; - var camera = cc.Camera.findCamera(this.node); - if (camera) { - _vec2_temp.x = 0; - _vec2_temp.y = 0; - _vec2_temp2.x = _vec2_temp.x + rect.width; - _vec2_temp2.y = _vec2_temp.y + rect.height; - camera.getScreenToWorldPoint(_vec2_temp, _vec2_temp); - camera.getScreenToWorldPoint(_vec2_temp2, _vec2_temp2); - cc.Vec2.transformMat4(_vec2_temp, _vec2_temp, _mat4_temp); - cc.Vec2.transformMat4(_vec2_temp2, _vec2_temp2, _mat4_temp); - this._updateViewPort(_vec2_temp.x, _vec2_temp.y, _vec2_temp2.x - _vec2_temp.x, _vec2_temp2.y - _vec2_temp.y); - // 此处修改 若为首个layer 缓存_cullingDirty。 - // _cullingDirty会在填充渲染数据后被改为false 所以需要缓存这里的结果 - if (!firstTmxLayer) { - this._cacheCullingDirty = this._cullingDirty; - } - // 修改结束 - } - } - }, - _traverseAllGrid: function _traverseAllGrid() { - var tiles = this._tiles; - var texGrids = this._texGrids; - var tilesetIndexArr = this._tilesetIndexArr; - var tilesetIndexToArrIndex = this._tilesetIndexToArrIndex = {}; - var TiledMap = cc.TiledMap; - var TileFlag = TiledMap.TileFlag; - var FLIPPED_MASK = TileFlag.FLIPPED_MASK; - var singleTexture = this._tiledMap.isSingleTexture(); - tilesetIndexArr.length = 0; - for (var i = 0; i < tiles.length; i++) { - var gid = tiles[i]; - if (gid === 0) continue; - gid = (gid & FLIPPED_MASK) >>> 0; - var grid = texGrids[gid]; - if (!grid) { - cc.error("CCTiledLayer:_traverseAllGrid grid is null, gid is:", gid); - continue; - } - var tilesetIdx = grid.texId; - if (tilesetIndexToArrIndex[tilesetIdx] !== undefined) continue; - tilesetIndexToArrIndex[tilesetIdx] = tilesetIndexArr.length; - tilesetIndexArr.push(tilesetIdx); - - // 此处修改 当只有一个图集时 可以直接停止遍历 - if (singleTexture) { - break; - } - // 修改结束 - } - } -}); -exports["default"] = _default; -module.exports = exports["default"]; - -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,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInBhY2thZ2VzXFxUaWxlZE1hcE9wdGltaXplclxccmVzb3VyY2VcXFNjcmlwdFxcVG1vVGlsZWRMYXllci5qcyJdLCJuYW1lcyI6WyJfbWF0NF90ZW1wIiwiY2MiLCJtYXQ0IiwiX3ZlYzJfdGVtcCIsInYyIiwiX3ZlYzJfdGVtcDIiLCJfZGVmYXVsdCIsIkNsYXNzIiwiVGlsZWRMYXllciIsIl9pbml0IiwibGF5ZXJJbmZvIiwibWFwSW5mbyIsInRpbGVzZXRzIiwidGV4dHVyZXMiLCJ0ZXhHcmlkcyIsInRpbGVkTWFwIiwiZmlyc3RUbXhMYXllciIsIl9jdWxsaW5nRGlydHkiLCJfbGF5ZXJJbmZvIiwiX21hcEluZm8iLCJfZmlyc3RUbXhMYXllciIsIl90aWxlZE1hcCIsInNpemUiLCJfbGF5ZXJTaXplIiwiX2xheWVyTmFtZSIsIm5hbWUiLCJfdGlsZXMiLCJfcHJvcGVydGllcyIsInByb3BlcnRpZXMiLCJfbWluR0lEIiwiX21heEdJRCIsIl9vcGFjaXR5IiwiX3JlbmRlck9yZGVyIiwicmVuZGVyT3JkZXIiLCJfc3RhZ2dlckF4aXMiLCJnZXRTdGFnZ2VyQXhpcyIsIl9zdGFnZ2VySW5kZXgiLCJnZXRTdGFnZ2VySW5kZXgiLCJfaGV4U2lkZUxlbmd0aCIsImdldEhleFNpZGVMZW5ndGgiLCJfYW5pbWF0aW9ucyIsImdldFRpbGVBbmltYXRpb25zIiwiX3RpbGVzZXRzIiwiX3RleHR1cmVzIiwiX3RleEdyaWRzIiwiX2xheWVyT3JpZW50YXRpb24iLCJvcmllbnRhdGlvbiIsIl9tYXBUaWxlU2l6ZSIsImdldFRpbGVTaXplIiwibWFwdHciLCJ3aWR0aCIsIm1hcHRoIiwiaGVpZ2h0IiwibGF5ZXJXIiwibGF5ZXJIIiwiVGlsZWRNYXAiLCJPcmllbnRhdGlvbiIsIkhFWCIsIlN0YWdnZXJBeGlzIiwiU3RhZ2dlckluZGV4IiwiX29kZF9ldmVuIiwiU1RBR0dFUklOREVYX09ERCIsIlNUQUdHRVJBWElTX1giLCJfZGlmZlgxIiwiX2RpZmZZMSIsIk1hdGgiLCJmbG9vciIsIm5vZGUiLCJzZXRDb250ZW50U2l6ZSIsIklTTyIsIndoIiwiX29mZnNldCIsIm9mZnNldCIsIngiLCJ5IiwiX3VzZUF1dG9tYXRpY1ZlcnRleFoiLCJfdmVydGV4WnZhbHVlIiwiX3N5bmNBbmNob3JQb2ludCIsIl9wcmVwYXJlVG9SZW5kZXIiLCJfdXBkYXRlQ3VsbGluZyIsIkNDX0VESVRPUiIsImVuYWJsZUN1bGxpbmciLCJfZW5hYmxlQ3VsbGluZyIsIl9jdWxsaW5nUmVjdCIsIl9jYWNoZUN1bGxpbmdEaXJ0eSIsIl91cGRhdGVXb3JsZE1hdHJpeCIsIk1hdDQiLCJpbnZlcnQiLCJfd29ybGRNYXRyaXgiLCJyZWN0IiwidmlzaWJsZVJlY3QiLCJjYW1lcmEiLCJDYW1lcmEiLCJmaW5kQ2FtZXJhIiwiZ2V0U2NyZWVuVG9Xb3JsZFBvaW50IiwiVmVjMiIsInRyYW5zZm9ybU1hdDQiLCJfdXBkYXRlVmlld1BvcnQiLCJfdHJhdmVyc2VBbGxHcmlkIiwidGlsZXMiLCJ0aWxlc2V0SW5kZXhBcnIiLCJfdGlsZXNldEluZGV4QXJyIiwidGlsZXNldEluZGV4VG9BcnJJbmRleCIsIl90aWxlc2V0SW5kZXhUb0FyckluZGV4IiwiVGlsZUZsYWciLCJGTElQUEVEX01BU0siLCJzaW5nbGVUZXh0dXJlIiwiaXNTaW5nbGVUZXh0dXJlIiwibGVuZ3RoIiwiaSIsImdpZCIsImdyaWQiLCJlcnJvciIsInRpbGVzZXRJZHgiLCJ0ZXhJZCIsInVuZGVmaW5lZCIsInB1c2giLCJleHBvcnRzIiwibW9kdWxlIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBLElBQUlBLFVBQVUsR0FBR0MsRUFBRSxDQUFDQyxJQUFJLEVBQUU7QUFDMUIsSUFBSUMsVUFBVSxHQUFHRixFQUFFLENBQUNHLEVBQUUsRUFBRTtBQUN4QixJQUFJQyxXQUFXLEdBQUdKLEVBQUUsQ0FBQ0csRUFBRSxFQUFFO0FBQUMsSUFBQUUsUUFBQSxHQUVY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QUFBL0csUUFBQTtBQUFBZ0gsTUFBQSxDQUFBRCxPQUFBLEdBQUFBLE9BQUEiLCJzb3VyY2VSb290IjoiLyIsInNvdXJjZXNDb250ZW50IjpbIi8vIExlYXJuIGNjLkNsYXNzOlxyXG4vLyAgLSBodHRwczovL2RvY3MuY29jb3MuY29tL2NyZWF0b3IvbWFudWFsL2VuL3NjcmlwdGluZy9jbGFzcy5odG1sXHJcbi8vIExlYXJuIEF0dHJpYnV0ZTpcclxuLy8gIC0gaHR0cHM6Ly9kb2NzLmNvY29zLmNvbS9jcmVhdG9yL21hbnVhbC9lbi9zY3JpcHRpbmcvcmVmZXJlbmNlL2F0dHJpYnV0ZXMuaHRtbFxyXG4vLyBMZWFybiBsaWZlLWN5Y2xlIGNhbGxiYWNrczpcclxuLy8gIC0gaHR0cHM6Ly9kb2NzLmNvY29zLmNvbS9jcmVhdG9yL21hbnVhbC9lbi9zY3JpcHRpbmcvbGlmZS1jeWNsZS1jYWxsYmFja3MuaHRtbFxyXG5cclxubGV0IF9tYXQ0X3RlbXAgPSBjYy5tYXQ0KCk7XHJcbmxldCBfdmVjMl90ZW1wID0gY2MudjIoKTtcclxubGV0IF92ZWMyX3RlbXAyID0gY2MudjIoKTtcclxuXHJcbmV4cG9ydCBkZWZhdWx0IGNjLkNsYXNzKHtcclxuICAgIGV4dGVuZHM6IGNjLlRpbGVkTGF5ZXIsXHJcblxyXG4gICAgLy8g5q2k5aSE5L+u5pS5IOWinuWKoGZpcnN0VG14TGF5ZXLlj4LmlbBcclxuICAgIF9pbml0KGxheWVySW5mbywgbWFwSW5mbywgdGlsZXNldHMsIHRleHR1cmVzLCB0ZXhHcmlkcywgdGlsZWRNYXAsIGZpcnN0VG14TGF5ZXIpIHtcclxuICAgICAgICAvLyDkv67mlLnnu5PmnZ9cclxuICAgICAgICB0aGlzLl9jdWxsaW5nRGlydHkgPSB0cnVlO1xyXG4gICAgICAgIHRoaXMuX2xheWVySW5mbyA9IGxheWVySW5mbztcclxuICAgICAgICB0aGlzLl9tYXBJbmZvID0gbWFwSW5mbztcclxuICAgICAgICAvLyDmraTlpITkv67mlLkg5L+d5a2YZmlyc3RUbXhMYXllcuWPguaVsFxyXG4gICAgICAgIHRoaXMuX2ZpcnN0VG14TGF5ZXIgPSBmaXJzdFRteExheWVyO1xyXG4gICAgICAgIHRoaXMuX3RpbGVkTWFwID0gdGlsZWRNYXA7XHJcbiAgICAgICAgLy8g5L+u5pS557uT5p2fXHJcblxyXG4gICAgICAgIGxldCBzaXplID0gbGF5ZXJJbmZvLl9sYXllclNpemU7XHJcblxyXG4gICAgICAgIC8vIGxheWVySW5mb1xyXG4gICAgICAgIHRoaXMuX2xheWVyTmFtZSA9IGxheWVySW5mby5uYW1lO1xyXG4gICAgICAgIHRoaXMuX3RpbGVzID0gbGF5ZXJJbmZvLl90aWxlcztcclxuICAgICAgICB0aGlzLl9wcm9wZXJ0aWVzID0gbGF5ZXJJbmZvLnByb3BlcnRpZXM7XHJcbiAgICAgICAgdGhpcy5fbGF5ZXJTaXplID0gc2l6ZTtcclxuICAgICAgICB0aGlzLl9taW5HSUQgPSBsYXllckluZm8uX21pbkdJRDtcclxuICAgICAgICB0aGlzLl9tYXhHSUQgPSBsYXllckluZm8uX21heEdJRDtcclxuICAgICAgICB0aGlzLl9vcGFjaXR5ID0gbGF5ZXJJbmZvLl9vcGFjaXR5O1xyXG4gICAgICAgIHRoaXMuX3JlbmRlck9yZGVyID0gbWFwSW5mby5yZW5kZXJPcmRlcjtcclxuICAgICAgICB0aGlzLl9zdGFnZ2VyQXhpcyA9IG1hcEluZm8uZ2V0U3RhZ2dlckF4aXMoKTtcclxuICAgICAgICB0aGlzLl9zdGFnZ2VySW5kZXggPSBtYXBJbmZvLmdldFN0YWdnZXJJbmRleCgpO1xyXG4gICAgICAgIHRoaXMuX2hleFNpZGVMZW5ndGggPSBtYXBJbmZvLmdldEhleFNpZGVMZW5ndGgoKTtcclxuICAgICAgICB0aGlzLl9hbmltYXRpb25zID0gbWFwSW5mby5nZXRUaWxlQW5pbWF0aW9ucygpO1xyXG5cclxuICAgICAgICAvLyB0aWxlc2V0c1xyXG4gICAgICAgIHRoaXMuX3RpbGVzZXRzID0gdGlsZXNldHM7XHJcbiAgICAgICAgLy8gdGV4dHVyZXNcclxuICAgICAgICB0aGlzLl90ZXh0dXJlcyA9IHRleHR1cmVzO1xyXG4gICAgICAgIC8vIGdyaWQgdGV4dHVyZVxyXG4gICAgICAgIHRoaXMuX3RleEdyaWRzID0gdGV4R3JpZHM7XHJcblxyXG4gICAgICAgIC8vIG1hcEluZm9cclxuICAgICAgICB0aGlzLl9sYXllck9yaWVudGF0aW9uID0gbWFwSW5mby5vcmllbnRhdGlvbjtcclxuICAgICAgICB0aGlzLl9tYXBUaWxlU2l6ZSA9IG1hcEluZm8uZ2V0VGlsZVNpemUoKTtcclxuXHJcbiAgICAgICAgbGV0IG1hcHR3ID0gdGhpcy5fbWFwVGlsZVNpemUud2lkdGg7XHJcbiAgICAgICAgbGV0IG1hcHRoID0gdGhpcy5fbWFwVGlsZVNpemUuaGVpZ2h0O1xyXG4gICAgICAgIGxldCBsYXllclcgPSB0aGlzLl9sYXllclNpemUud2lkdGg7XHJcbiAgICAgICAgbGV0IGxheWVySCA9IHRoaXMuX2xheWVyU2l6ZS5oZWlnaHQ7XHJcblxyXG4gICAgICAgIGlmICh0aGlzLl9sYXllck9yaWVudGF0aW9uID09PSBjYy5UaWxlZE1hcC5PcmllbnRhdGlvbi5IRVgpIHtcclxuICAgICAgICAgICAgLy8gaGFuZGxlIGhleCBtYXBcclxuICAgICAgICAgICAgY29uc3QgVGlsZWRNYXAgPSBjYy5UaWxlZE1hcDtcclxuICAgICAgICAgICAgY29uc3QgU3RhZ2dlckF4aXMgPSBUaWxlZE1hcC5TdGFnZ2VyQXhpcztcclxuICAgICAgICAgICAgY29uc3QgU3RhZ2dlckluZGV4ID0gVGlsZWRNYXAuU3RhZ2dlckluZGV4O1xyXG4gICAgICAgICAgICBsZXQgd2lkdGggPSAwLCBoZWlnaHQgPSAwO1xyXG5cclxuICAgICAgICAgICAgdGhpcy5fb2RkX2V2ZW4gPSAodGhpcy5fc3RhZ2dlckluZGV4ID09PSBTdGFnZ2VySW5kZXguU1RBR0dFUklOREVYX09ERCkgPyAxIDogLTE7XHJcbiAgICAgICAgICAgIGlmICh0aGlzLl9zdGFnZ2VyQXhpcyA9PT0gU3RhZ2dlckF4aXMuU1RBR0dFUkFYSVNfWCkge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5fZGlmZlgxID0gKG1hcHR3IC0gdGhpcy5faGV4U2lkZUxlbmd0aCkgLyAyO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5fZGlmZlkxID0gMDtcclxuICAgICAgICAgICAgICAgIGhlaWdodCA9IG1hcHRoICogKGxheWVySCArIDAuNSk7XHJcbiAgICAgICAgICAgICAgICB3aWR0aCA9IChtYXB0dyArIHRoaXMuX2hleFNpZGVMZW5ndGgpICogTWF0aC5mbG9vcihsYXllclcgLyAyKSArIG1hcHR3ICogKGxheWVyVyAlIDIpO1xyXG4gICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5fZGlmZlgxID0gMDtcclxuICAgICAgICAgICAgICAgIHRoaXMuX2RpZmZZMSA9IChtYXB0aCAtIHRoaXMuX2hleFNpZGVMZW5ndGgpIC8gMjtcclxuICAgICAgICAgICAgICAgIHdpZHRoID0gbWFwdHcgKiAobGF5ZXJXICsgMC41KTtcclxuICAgICAgICAgICAgICAgIGhlaWdodCA9IChtYXB0aCArIHRoaXMuX2hleFNpZGVMZW5ndGgpICogTWF0aC5mbG9vcihsYXllckggLyAyKSArIG1hcHRoICogKGxheWVySCAlIDIpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIHRoaXMubm9kZS5zZXRDb250ZW50U2l6ZSh3aWR0aCwgaGVpZ2h0KTtcclxuICAgICAgICB9IGVsc2UgaWYgKHRoaXMuX2xheWVyT3JpZW50YXRpb24gPT09IGNjLlRpbGVkTWFwLk9yaWVudGF0aW9uLklTTykge1xyXG4gICAgICAgICAgICBsZXQgd2ggPSBsYXllclcgKyBsYXllckg7XHJcbiAgICAgICAgICAgIHRoaXMubm9kZS5zZXRDb250ZW50U2l6ZShtYXB0dyAqIDAuNSAqIHdoLCBtYXB0aCAqIDAuNSAqIHdoKTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICB0aGlzLm5vZGUuc2V0Q29udGVudFNpemUobGF5ZXJXICogbWFwdHcsIGxheWVySCAqIG1hcHRoKTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIC8vIG9mZnNldCAoYWZ0ZXIgbGF5ZXIgb3JpZW50YXRpb24gaXMgc2V0KTtcclxuICAgICAgICB0aGlzLl9vZmZzZXQgPSBjYy52MihsYXllckluZm8ub2Zmc2V0LngsIC1sYXllckluZm8ub2Zmc2V0LnkpO1xyXG4gICAgICAgIHRoaXMuX3VzZUF1dG9tYXRpY1ZlcnRleFogPSBmYWxzZTtcclxuICAgICAgICB0aGlzLl92ZXJ0ZXhadmFsdWUgPSAwO1xyXG4gICAgICAgIHRoaXMuX3N5bmNBbmNob3JQb2ludCgpO1xyXG4gICAgICAgIHRoaXMuX3ByZXBhcmVUb1JlbmRlcigpO1xyXG4gICAgfSxcclxuICAgIF91cGRhdGVDdWxsaW5nKCkge1xyXG4gICAgICAgIGlmIChDQ19FRElUT1IpIHtcclxuICAgICAgICAgICAgdGhpcy5lbmFibGVDdWxsaW5nKGZhbHNlKTtcclxuICAgICAgICB9IGVsc2UgaWYgKHRoaXMuX2VuYWJsZUN1bGxpbmcpIHtcclxuICAgICAgICAgICAgLy8g5q2k5aSE5L+u5pS5IOiLpeS4jeS4uummluS4qmxheWVyIOebtOaOpeWkjeeUqGZpcnN0TGF5ZXLnmoTnu5PmnpxcclxuICAgICAgICAgICAgLy8gdGhpcy5fZmlyc3RUbXhMYXllcuS4jeS4uuepuuaXtiDooajnpLrlvZPliY1sYXllcuS4jeaYr+mmluS4qmxheWVyXHJcbiAgICAgICAgICAgIGxldCBmaXJzdFRteExheWVyID0gdGhpcy5fZmlyc3RUbXhMYXllcjtcclxuICAgICAgICAgICAgaWYgKCEhZmlyc3RUbXhMYXllcikge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5fY3VsbGluZ1JlY3QgPSBmaXJzdFRteExheWVyLl9jdWxsaW5nUmVjdDtcclxuICAgICAgICAgICAgICAgIHRoaXMuX2N1bGxpbmdEaXJ0eSA9IGZpcnN0VG14TGF5ZXIuX2NhY2hlQ3VsbGluZ0RpcnR5O1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIC8vIOS/ruaUuee7k+adn1xyXG5cclxuICAgICAgICAgICAgdGhpcy5ub2RlLl91cGRhdGVXb3JsZE1hdHJpeCgpO1xyXG4gICAgICAgICAgICBjYy5NYXQ0LmludmVydChfbWF0NF90ZW1wLCB0aGlzLm5vZGUuX3dvcmxkTWF0cml4KTtcclxuICAgICAgICAgICAgbGV0IHJlY3QgPSBjYy52aXNpYmxlUmVjdDtcclxuICAgICAgICAgICAgbGV0IGNhbWVyYSA9IGNjLkNhbWVyYS5maW5kQ2FtZXJhKHRoaXMubm9kZSk7XHJcbiAgICAgICAgICAgIGlmIChjYW1lcmEpIHtcclxuICAgICAgICAgICAgICAgIF92ZWMyX3RlbXAueCA9IDA7XHJcbiAgICAgICAgICAgICAgICBfdmVjMl90ZW1wLnkgPSAwO1xyXG4gICAgICAgICAgICAgICAgX3ZlYzJfdGVtcDIueCA9IF92ZWMyX3RlbXAueCArIHJlY3Qud2lkdGg7XHJcbiAgICAgICAgICAgICAgICBfdmVjMl90ZW1wMi55ID0gX3ZlYzJfdGVtcC55ICsgcmVjdC5oZWlnaHQ7XHJcbiAgICAgICAgICAgICAgICBjYW1lcmEuZ2V0U2NyZWVuVG9Xb3JsZFBvaW50KF92ZWMyX3RlbXAsIF92ZWMyX3RlbXApO1xyXG4gICAgICAgICAgICAgICAgY2FtZXJhLmdldFNjcmVlblRvV29ybGRQb2ludChfdmVjMl90ZW1wMiwgX3ZlYzJfdGVtcDIpO1xyXG4gICAgICAgICAgICAgICAgY2MuVmVjMi50cmFuc2Zvcm1NYXQ0KF92ZWMyX3RlbXAsIF92ZWMyX3RlbXAsIF9tYXQ0X3RlbXApO1xyXG4gICAgICAgICAgICAgICAgY2MuVmVjMi50cmFuc2Zvcm1NYXQ0KF92ZWMyX3RlbXAyLCBfdmVjMl90ZW1wMiwgX21hdDRfdGVtcCk7XHJcblxyXG4gICAgICAgICAgICAgICAgdGhpcy5fdXBkYXRlVmlld1BvcnQoX3ZlYzJfdGVtcC54LCBfdmVjMl90ZW1wLnksIF92ZWMyX3RlbXAyLnggLSBfdmVjMl90ZW1wLngsIF92ZWMyX3RlbXAyLnkgLSBfdmVjMl90ZW1wLnkpO1xyXG4gICAgICAgICAgICAgICAgLy8g5q2k5aSE5L+u5pS5IOiLpeS4uummluS4qmxheWVyIOe8k+WtmF9jdWxsaW5nRGlydHnjgIJcclxuICAgICAgICAgICAgICAgIC8vIF9jdWxsaW5nRGlydHnkvJrlnKjloavlhYXmuLLmn5PmlbDmja7lkI7ooqvmlLnkuLpmYWxzZSDmiYDku6XpnIDopoHnvJPlrZjov5nph4znmoTnu5PmnpxcclxuICAgICAgICAgICAgICAgIGlmICghZmlyc3RUbXhMYXllcikge1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuX2NhY2hlQ3VsbGluZ0RpcnR5ID0gdGhpcy5fY3VsbGluZ0RpcnR5O1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgLy8g5L+u5pS557uT5p2fXHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICB9LFxyXG4gICAgX3RyYXZlcnNlQWxsR3JpZCAoKSB7XHJcbiAgICAgICAgbGV0IHRpbGVzID0gdGhpcy5fdGlsZXM7XHJcbiAgICAgICAgbGV0IHRleEdyaWRzID0gdGhpcy5fdGV4R3JpZHM7XHJcbiAgICAgICAgbGV0IHRpbGVzZXRJbmRleEFyciA9IHRoaXMuX3RpbGVzZXRJbmRleEFycjtcclxuICAgICAgICBsZXQgdGlsZXNldEluZGV4VG9BcnJJbmRleCA9IHRoaXMuX3RpbGVzZXRJbmRleFRvQXJySW5kZXggPSB7fTtcclxuXHJcbiAgICAgICAgY29uc3QgVGlsZWRNYXAgPSBjYy5UaWxlZE1hcDtcclxuICAgICAgICBjb25zdCBUaWxlRmxhZyA9IFRpbGVkTWFwLlRpbGVGbGFnO1xyXG4gICAgICAgIGNvbnN0IEZMSVBQRURfTUFTSyA9IFRpbGVGbGFnLkZMSVBQRURfTUFTSztcclxuXHJcbiAgICAgICAgbGV0IHNpbmdsZVRleHR1cmUgPSB0aGlzLl90aWxlZE1hcC5pc1NpbmdsZVRleHR1cmUoKTtcclxuXHJcbiAgICAgICAgdGlsZXNldEluZGV4QXJyLmxlbmd0aCA9IDA7XHJcbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0aWxlcy5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgICAgICBsZXQgZ2lkID0gdGlsZXNbaV07XHJcbiAgICAgICAgICAgIGlmIChnaWQgPT09IDApIGNvbnRpbnVlO1xyXG4gICAgICAgICAgICBnaWQgPSAoKGdpZCAmIEZMSVBQRURfTUFTSykgPj4+IDApO1xyXG4gICAgICAgICAgICBsZXQgZ3JpZCA9IHRleEdyaWRzW2dpZF07XHJcbiAgICAgICAgICAgIGlmICghZ3JpZCkge1xyXG4gICAgICAgICAgICAgICAgY2MuZXJyb3IoXCJDQ1RpbGVkTGF5ZXI6X3RyYXZlcnNlQWxsR3JpZCBncmlkIGlzIG51bGwsIGdpZCBpczpcIiwgZ2lkKTtcclxuICAgICAgICAgICAgICAgIGNvbnRpbnVlO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGxldCB0aWxlc2V0SWR4ID0gZ3JpZC50ZXhJZDtcclxuICAgICAgICAgICAgaWYgKHRpbGVzZXRJbmRleFRvQXJySW5kZXhbdGlsZXNldElkeF0gIT09IHVuZGVmaW5lZCkgY29udGludWU7XHJcbiAgICAgICAgICAgIHRpbGVzZXRJbmRleFRvQXJySW5kZXhbdGlsZXNldElkeF0gPSB0aWxlc2V0SW5kZXhBcnIubGVuZ3RoO1xyXG4gICAgICAgICAgICB0aWxlc2V0SW5kZXhBcnIucHVzaCh0aWxlc2V0SWR4KTtcclxuICAgICAgICAgICAgXHJcbiAgICAgICAgICAgIC8vIOatpOWkhOS/ruaUuSDlvZPlj6rmnInkuIDkuKrlm77pm4bml7Yg5Y+v5Lul55u05o6l5YGc5q2i6YGN5Y6GXHJcbiAgICAgICAgICAgIGlmIChzaW5nbGVUZXh0dXJlKSB7XHJcbiAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAvLyDkv67mlLnnu5PmnZ9cclxuICAgICAgICB9XHJcbiAgICB9LFxyXG59KTtcclxuIl19 -//------QC-SOURCE-SPLIT------ - - (function() { - var nodeEnv = typeof require !== 'undefined' && typeof process !== 'undefined'; - var __module = nodeEnv ? module : {exports:{}}; - var __filename = 'preview-scripts/assets/Script/CollisionDetection.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, 'f1883pXzMVIp5/ARDAWfZ7j', 'CollisionDetection'); -// Script/CollisionDetection.ts - -"use strict"; -// Learn TypeScript: -// - https://docs.cocos.com/creator/manual/en/scripting/typescript.html -// Learn Attribute: -// - https://docs.cocos.com/creator/manual/en/scripting/reference/attributes.html -// Learn life-cycle callbacks: -// - https://docs.cocos.com/creator/manual/en/scripting/life-cycle-callbacks.html -var __extends = (this && this.__extends) || (function () { - var extendStatics = function (d, b) { - extendStatics = Object.setPrototypeOf || - ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) || - function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; }; - return extendStatics(d, b); - }; - return function (d, b) { - extendStatics(d, b); - function __() { this.constructor = d; } - d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); - }; -})(); -var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) { - var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; - if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc); - else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; - return c > 3 && r && Object.defineProperty(target, key, r), r; -}; -Object.defineProperty(exports, "__esModule", { value: true }); -var _a = cc._decorator, ccclass = _a.ccclass, property = _a.property, requireComponent = _a.requireComponent; -var CollisionDetection = /** @class */ (function (_super) { - __extends(CollisionDetection, _super); - function CollisionDetection() { - return _super !== null && _super.apply(this, arguments) || this; - } - CollisionDetection_1 = CollisionDetection; - CollisionDetection.prototype.onLoad = function () { - if (CollisionDetection_1._instance == null) { - CollisionDetection_1._instance = this; - // cc.game.addPersistRootNode(this.node); - } - else { - return; - } - }; - //碰撞检测函数 - CollisionDetection.prototype.isColliding = function (rect1, rect2) { - // 快速排除:检查边界框是否相交 - if (rect1.xMax < rect2.xMin || rect2.xMax < rect1.xMin || rect1.yMax < rect2.yMin || rect2.yMax < rect1.yMin) { - return { isColliding: false }; - } - // 调用原始的 intersects 方法 - var isColliding = rect1.intersects(rect2); - return { isColliding: isColliding }; - }; - // 获取多边形的所有边的法线 - CollisionDetection.prototype.getNormals = function (polygon) { - var normals = []; - var length = polygon.length; - for (var i = 0; i < length; i++) { - var p1 = polygon[i]; - var p2 = polygon[(i + 1) % length]; - var edge = new cc.Vec2(p2.x - p1.x, p2.y - p1.y); - var normal = new cc.Vec2(-edge.y, edge.x); - normal.normalize(); - normals.push(normal); - } - return normals; - }; - // 将多边形投影到轴上 - CollisionDetection.prototype.project = function (polygon, axis) { - var min = cc.Vec2.dot(polygon[0], axis); - var max = min; - for (var i = 1; i < polygon.length; i++) { - var dotProduct = cc.Vec2.dot(polygon[i], axis); - if (dotProduct < min) { - min = dotProduct; - } - else if (dotProduct > max) { - max = dotProduct; - } - } - return { min: min, max: max }; - }; - // 检查两个投影是否重叠 - CollisionDetection.prototype.overlap = function (projection1, projection2) { - return !(projection1.max < projection2.min || projection2.max < projection1.min); - }; - var CollisionDetection_1; - CollisionDetection = CollisionDetection_1 = __decorate([ - ccclass - ], CollisionDetection); - return CollisionDetection; -}(cc.Component)); -exports.default = CollisionDetection; - -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,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImFzc2V0c1xcU2NyaXB0XFxDb2xsaXNpb25EZXRlY3Rpb24udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLG9CQUFvQjtBQUNwQix3RUFBd0U7QUFDeEUsbUJBQW1CO0FBQ25CLGtGQUFrRjtBQUNsRiw4QkFBOEI7QUFDOUIsa0ZBQWtGOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFHNUUsSUFBQSxLQUF3QyxFQUFFLENBQUMsVUFBVSxFQUFwRCxPQUFPLGFBQUEsRUFBRSxRQUFRLGNBQUEsRUFBRSxnQkFBZ0Isc0JBQWlCLENBQUM7QUFHNUQ7SUFBZ0Qsc0NBQVk7SUFBNUQ7O0lBNkRBLENBQUM7MkJBN0RvQixrQkFBa0I7SUFDUCxtQ0FBTSxHQUFOO1FBQ3hCLElBQUksb0JBQWtCLENBQUMsU0FBUyxJQUFJLElBQUksRUFBRTtZQUN0QyxvQkFBa0IsQ0FBQyxTQUFTLEdBQUcsSUFBSSxDQUFDO1lBQ3BDLHlDQUF5QztTQUM1QzthQUNJO1lBQ0QsT0FBTztTQUNWO0lBRUwsQ0FBQztJQUNELFFBQVE7SUFDRCx3Q0FBVyxHQUFsQixVQUFtQixLQUFjLEVBQUUsS0FBYztRQUM3QyxpQkFBaUI7UUFDakIsSUFBSSxLQUFLLENBQUMsSUFBSSxHQUFHLEtBQUssQ0FBQyxJQUFJLElBQUksS0FBSyxDQUFDLElBQUksR0FBRyxLQUFLLENBQUMsSUFBSSxJQUFJLEtBQUssQ0FBQyxJQUFJLEdBQUcsS0FBSyxDQUFDLElBQUksSUFBSSxLQUFLLENBQUMsSUFBSSxHQUFHLEtBQUssQ0FBQyxJQUFJLEVBQUU7WUFDMUcsT0FBTyxFQUFFLFdBQVcsRUFBRSxLQUFLLEVBQUUsQ0FBQztTQUNqQztRQUVELHNCQUFzQjtRQUN0QixJQUFNLFdBQVcsR0FBRyxLQUFLLENBQUMsVUFBVSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBRTVDLE9BQU8sRUFBRSxXQUFXLGFBQUEsRUFBRSxDQUFDO0lBQzNCLENBQUM7SUFHRCxlQUFlO0lBQ1AsdUNBQVUsR0FBbEIsVUFBbUIsT0FBa0I7UUFDakMsSUFBTSxPQUFPLEdBQWMsRUFBRSxDQUFDO1FBQzlCLElBQU0sTUFBTSxHQUFHLE9BQU8sQ0FBQyxNQUFNLENBQUM7UUFDOUIsS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLE1BQU0sRUFBRSxDQUFDLEVBQUUsRUFBRTtZQUM3QixJQUFNLEVBQUUsR0FBRyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDdEIsSUFBTSxFQUFFLEdBQUcsT0FBTyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLE1BQU0sQ0FBQyxDQUFDO1lBQ3JDLElBQU0sSUFBSSxHQUFHLElBQUksRUFBRSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDbkQsSUFBTSxNQUFNLEdBQUcsSUFBSSxFQUFFLENBQUMsSUFBSSxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsRUFBRSxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDNUMsTUFBTSxDQUFDLFNBQVMsRUFBRSxDQUFDO1lBQ25CLE9BQU8sQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUM7U0FDeEI7UUFDRCxPQUFPLE9BQU8sQ0FBQztJQUNuQixDQUFDO0lBRUQsWUFBWTtJQUNKLG9DQUFPLEdBQWYsVUFBZ0IsT0FBa0IsRUFBRSxJQUFhO1FBQzdDLElBQUksR0FBRyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsRUFBRSxJQUFJLENBQUMsQ0FBQztRQUN4QyxJQUFJLEdBQUcsR0FBRyxHQUFHLENBQUM7UUFDZCxLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsT0FBTyxDQUFDLE1BQU0sRUFBRSxDQUFDLEVBQUUsRUFBRTtZQUNyQyxJQUFNLFVBQVUsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLEVBQUUsSUFBSSxDQUFDLENBQUM7WUFDakQsSUFBSSxVQUFVLEdBQUcsR0FBRyxFQUFFO2dCQUNsQixHQUFHLEdBQUcsVUFBVSxDQUFDO2FBQ3BCO2lCQUFNLElBQUksVUFBVSxHQUFHLEdBQUcsRUFBRTtnQkFDekIsR0FBRyxHQUFHLFVBQVUsQ0FBQzthQUNwQjtTQUNKO1FBQ0QsT0FBTyxFQUFFLEdBQUcsS0FBQSxFQUFFLEdBQUcsS0FBQSxFQUFFLENBQUM7SUFDeEIsQ0FBQztJQUVELGFBQWE7SUFDTCxvQ0FBTyxHQUFmLFVBQWdCLFdBQXlDLEVBQUUsV0FBeUM7UUFDaEcsT0FBTyxDQUFDLENBQUMsV0FBVyxDQUFDLEdBQUcsR0FBRyxXQUFXLENBQUMsR0FBRyxJQUFJLFdBQVcsQ0FBQyxHQUFHLEdBQUcsV0FBVyxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQ3JGLENBQUM7O0lBMURnQixrQkFBa0I7UUFEdEMsT0FBTztPQUNhLGtCQUFrQixDQTZEdEM7SUFBRCx5QkFBQztDQTdERCxBQTZEQyxDQTdEK0MsRUFBRSxDQUFDLFNBQVMsR0E2RDNEO2tCQTdEb0Isa0JBQWtCIiwiZmlsZSI6IiIsInNvdXJjZVJvb3QiOiIvIiwic291cmNlc0NvbnRlbnQiOlsiLy8gTGVhcm4gVHlwZVNjcmlwdDpcclxuLy8gIC0gaHR0cHM6Ly9kb2NzLmNvY29zLmNvbS9jcmVhdG9yL21hbnVhbC9lbi9zY3JpcHRpbmcvdHlwZXNjcmlwdC5odG1sXHJcbi8vIExlYXJuIEF0dHJpYnV0ZTpcclxuLy8gIC0gaHR0cHM6Ly9kb2NzLmNvY29zLmNvbS9jcmVhdG9yL21hbnVhbC9lbi9zY3JpcHRpbmcvcmVmZXJlbmNlL2F0dHJpYnV0ZXMuaHRtbFxyXG4vLyBMZWFybiBsaWZlLWN5Y2xlIGNhbGxiYWNrczpcclxuLy8gIC0gaHR0cHM6Ly9kb2NzLmNvY29zLmNvbS9jcmVhdG9yL21hbnVhbC9lbi9zY3JpcHRpbmcvbGlmZS1jeWNsZS1jYWxsYmFja3MuaHRtbFxyXG5cclxuXHJcbmNvbnN0IHtjY2NsYXNzLCBwcm9wZXJ0eSwgcmVxdWlyZUNvbXBvbmVudH0gPSBjYy5fZGVjb3JhdG9yO1xyXG5cclxuQGNjY2xhc3NcclxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgQ29sbGlzaW9uRGV0ZWN0aW9uIGV4dGVuZHMgY2MuQ29tcG9uZW50IHtcclxuICAgIHN0YXRpYyBfaW5zdGFuY2U6IGFueTsgICAgICBvbkxvYWQoKSB7XHJcbiAgICAgICAgaWYgKENvbGxpc2lvbkRldGVjdGlvbi5faW5zdGFuY2UgPT0gbnVsbCkge1xyXG4gICAgICAgICAgICBDb2xsaXNpb25EZXRlY3Rpb24uX2luc3RhbmNlID0gdGhpcztcclxuICAgICAgICAgICAgLy8gY2MuZ2FtZS5hZGRQZXJzaXN0Um9vdE5vZGUodGhpcy5ub2RlKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcblxyXG4gICAgfVxyXG4gICAgLy/norDmkp7mo4DmtYvlh73mlbBcclxuICAgIHB1YmxpYyBpc0NvbGxpZGluZyhyZWN0MTogY2MuUmVjdCwgcmVjdDI6IGNjLlJlY3QpOiB7IGlzQ29sbGlkaW5nOiBib29sZWFuIH0ge1xyXG4gICAgICAgIC8vIOW/q+mAn+aOkumZpO+8muajgOafpei+ueeVjOahhuaYr+WQpuebuOS6pFxyXG4gICAgICAgIGlmIChyZWN0MS54TWF4IDwgcmVjdDIueE1pbiB8fCByZWN0Mi54TWF4IDwgcmVjdDEueE1pbiB8fCByZWN0MS55TWF4IDwgcmVjdDIueU1pbiB8fCByZWN0Mi55TWF4IDwgcmVjdDEueU1pbikge1xyXG4gICAgICAgICAgICByZXR1cm4geyBpc0NvbGxpZGluZzogZmFsc2UgfTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIC8vIOiwg+eUqOWOn+Wni+eahCBpbnRlcnNlY3RzIOaWueazlVxyXG4gICAgICAgIGNvbnN0IGlzQ29sbGlkaW5nID0gcmVjdDEuaW50ZXJzZWN0cyhyZWN0Mik7XHJcblxyXG4gICAgICAgIHJldHVybiB7IGlzQ29sbGlkaW5nIH07XHJcbiAgICB9XHJcblxyXG5cclxuICAgIC8vIOiOt+WPluWkmui+ueW9oueahOaJgOaciei+ueeahOazlee6v1xyXG4gICAgcHJpdmF0ZSBnZXROb3JtYWxzKHBvbHlnb246IGNjLlZlYzJbXSk6IGNjLlZlYzJbXSB7XHJcbiAgICAgICAgY29uc3Qgbm9ybWFsczogY2MuVmVjMltdID0gW107XHJcbiAgICAgICAgY29uc3QgbGVuZ3RoID0gcG9seWdvbi5sZW5ndGg7XHJcbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBsZW5ndGg7IGkrKykge1xyXG4gICAgICAgICAgICBjb25zdCBwMSA9IHBvbHlnb25baV07XHJcbiAgICAgICAgICAgIGNvbnN0IHAyID0gcG9seWdvblsoaSArIDEpICUgbGVuZ3RoXTtcclxuICAgICAgICAgICAgY29uc3QgZWRnZSA9IG5ldyBjYy5WZWMyKHAyLnggLSBwMS54LCBwMi55IC0gcDEueSk7XHJcbiAgICAgICAgICAgIGNvbnN0IG5vcm1hbCA9IG5ldyBjYy5WZWMyKC1lZGdlLnksIGVkZ2UueCk7XHJcbiAgICAgICAgICAgIG5vcm1hbC5ub3JtYWxpemUoKTtcclxuICAgICAgICAgICAgbm9ybWFscy5wdXNoKG5vcm1hbCk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiBub3JtYWxzO1xyXG4gICAgfVxyXG5cclxuICAgIC8vIOWwhuWkmui+ueW9ouaKleW9seWIsOi9tOS4ilxyXG4gICAgcHJpdmF0ZSBwcm9qZWN0KHBvbHlnb246IGNjLlZlYzJbXSwgYXhpczogY2MuVmVjMik6IHsgbWluOiBudW1iZXI7IG1heDogbnVtYmVyIH0ge1xyXG4gICAgICAgIGxldCBtaW4gPSBjYy5WZWMyLmRvdChwb2x5Z29uWzBdLCBheGlzKTtcclxuICAgICAgICBsZXQgbWF4ID0gbWluO1xyXG4gICAgICAgIGZvciAobGV0IGkgPSAxOyBpIDwgcG9seWdvbi5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgICAgICBjb25zdCBkb3RQcm9kdWN0ID0gY2MuVmVjMi5kb3QocG9seWdvbltpXSwgYXhpcyk7XHJcbiAgICAgICAgICAgIGlmIChkb3RQcm9kdWN0IDwgbWluKSB7XHJcbiAgICAgICAgICAgICAgICBtaW4gPSBkb3RQcm9kdWN0O1xyXG4gICAgICAgICAgICB9IGVsc2UgaWYgKGRvdFByb2R1Y3QgPiBtYXgpIHtcclxuICAgICAgICAgICAgICAgIG1heCA9IGRvdFByb2R1Y3Q7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIHsgbWluLCBtYXggfTtcclxuICAgIH1cclxuXHJcbiAgICAvLyDmo4Dmn6XkuKTkuKrmipXlvbHmmK/lkKbph43lj6BcclxuICAgIHByaXZhdGUgb3ZlcmxhcChwcm9qZWN0aW9uMTogeyBtaW46IG51bWJlcjsgbWF4OiBudW1iZXIgfSwgcHJvamVjdGlvbjI6IHsgbWluOiBudW1iZXI7IG1heDogbnVtYmVyIH0pOiBib29sZWFuIHtcclxuICAgICAgICByZXR1cm4gIShwcm9qZWN0aW9uMS5tYXggPCBwcm9qZWN0aW9uMi5taW4gfHwgcHJvamVjdGlvbjIubWF4IDwgcHJvamVjdGlvbjEubWluKTtcclxuICAgIH1cclxuXHJcblxyXG59XHJcbiJdfQ== -//------QC-SOURCE-SPLIT------ - - (function() { - var nodeEnv = typeof require !== 'undefined' && typeof process !== 'undefined'; - var __module = nodeEnv ? module : {exports:{}}; - var __filename = 'preview-scripts/assets/animation/NewScript.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, '2cd54+HgYFITpFe6QLlvqDB', 'NewScript'); -// animation/NewScript.js - -"use strict"; - -// Learn cc.Class: -// - https://docs.cocos.com/creator/manual/en/scripting/class.html -// Learn Attribute: -// - https://docs.cocos.com/creator/manual/en/scripting/reference/attributes.html -// Learn life-cycle callbacks: -// - https://docs.cocos.com/creator/manual/en/scripting/life-cycle-callbacks.html - -cc.Class({ - "extends": cc.Component, - properties: { - sex: { - type: cc.Enum({ - male: 0, - female: 1 - }), - "default": 0 - } - // foo: { - // // ATTRIBUTES: - // default: null, // The default value will be used only when the component attaching - // // to a node for the first time - // type: cc.SpriteFrame, // optional, default is typeof default - // serializable: true, // optional, default is true - // }, - // bar: { - // get () { - // return this._bar; - // }, - // set (value) { - // this._bar = value; - // } - // }, - }, - // LIFE-CYCLE CALLBACKS: - // onLoad () {}, - start: function start() {} // update (dt) {}, -}); - -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,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImFzc2V0c1xcYW5pbWF0aW9uXFxOZXdTY3JpcHQuanMiXSwibmFtZXMiOlsiY2MiLCJDbGFzcyIsIkNvbXBvbmVudCIsInByb3BlcnRpZXMiLCJzZXgiLCJ0eXBlIiwiRW51bSIsIm1hbGUiLCJmZW1hbGUiLCJzdGFydCJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUFBLEVBQUUsQ0FBQ0MsS0FBSyxDQUFDO0VBQ0wsV0FBU0QsRUFBRSxDQUFDRSxTQUFTO0VBRXJCQyxVQUFVLEVBQUU7SUFDUkMsR0FBRyxFQUFDO01BQ0FDLElBQUksRUFBQ0wsRUFBRSxDQUFDTSxJQUFJLENBQUM7UUFDVEMsSUFBSSxFQUFDLENBQUM7UUFDTkMsTUFBTSxFQUFDO01BQ1gsQ0FBQyxDQUFDO01BQ0YsV0FBUTtJQUNaO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0VBQ0osQ0FBQztFQUVEO0VBRUE7RUFFQUMsS0FBSyxXQUFBQSxNQUFBLEVBQUksQ0FFVCxDQUFDLENBRUQ7QUFDSixDQUFDLENBQUMiLCJzb3VyY2VSb290IjoiLyIsInNvdXJjZXNDb250ZW50IjpbIi8vIExlYXJuIGNjLkNsYXNzOlxyXG4vLyAgLSBodHRwczovL2RvY3MuY29jb3MuY29tL2NyZWF0b3IvbWFudWFsL2VuL3NjcmlwdGluZy9jbGFzcy5odG1sXHJcbi8vIExlYXJuIEF0dHJpYnV0ZTpcclxuLy8gIC0gaHR0cHM6Ly9kb2NzLmNvY29zLmNvbS9jcmVhdG9yL21hbnVhbC9lbi9zY3JpcHRpbmcvcmVmZXJlbmNlL2F0dHJpYnV0ZXMuaHRtbFxyXG4vLyBMZWFybiBsaWZlLWN5Y2xlIGNhbGxiYWNrczpcclxuLy8gIC0gaHR0cHM6Ly9kb2NzLmNvY29zLmNvbS9jcmVhdG9yL21hbnVhbC9lbi9zY3JpcHRpbmcvbGlmZS1jeWNsZS1jYWxsYmFja3MuaHRtbFxyXG5cclxuY2MuQ2xhc3Moe1xyXG4gICAgZXh0ZW5kczogY2MuQ29tcG9uZW50LFxyXG5cclxuICAgIHByb3BlcnRpZXM6IHtcclxuICAgICAgICBzZXg6e1xyXG4gICAgICAgICAgICB0eXBlOmNjLkVudW0oe1xyXG4gICAgICAgICAgICAgICAgbWFsZTowLFxyXG4gICAgICAgICAgICAgICAgZmVtYWxlOjFcclxuICAgICAgICAgICAgfSksXHJcbiAgICAgICAgICAgIGRlZmF1bHQ6MFxyXG4gICAgICAgIH1cclxuICAgICAgICAvLyBmb286IHtcclxuICAgICAgICAvLyAgICAgLy8gQVRUUklCVVRFUzpcclxuICAgICAgICAvLyAgICAgZGVmYXVsdDogbnVsbCwgICAgICAgIC8vIFRoZSBkZWZhdWx0IHZhbHVlIHdpbGwgYmUgdXNlZCBvbmx5IHdoZW4gdGhlIGNvbXBvbmVudCBhdHRhY2hpbmdcclxuICAgICAgICAvLyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHRvIGEgbm9kZSBmb3IgdGhlIGZpcnN0IHRpbWVcclxuICAgICAgICAvLyAgICAgdHlwZTogY2MuU3ByaXRlRnJhbWUsIC8vIG9wdGlvbmFsLCBkZWZhdWx0IGlzIHR5cGVvZiBkZWZhdWx0XHJcbiAgICAgICAgLy8gICAgIHNlcmlhbGl6YWJsZTogdHJ1ZSwgICAvLyBvcHRpb25hbCwgZGVmYXVsdCBpcyB0cnVlXHJcbiAgICAgICAgLy8gfSxcclxuICAgICAgICAvLyBiYXI6IHtcclxuICAgICAgICAvLyAgICAgZ2V0ICgpIHtcclxuICAgICAgICAvLyAgICAgICAgIHJldHVybiB0aGlzLl9iYXI7XHJcbiAgICAgICAgLy8gICAgIH0sXHJcbiAgICAgICAgLy8gICAgIHNldCAodmFsdWUpIHtcclxuICAgICAgICAvLyAgICAgICAgIHRoaXMuX2JhciA9IHZhbHVlO1xyXG4gICAgICAgIC8vICAgICB9XHJcbiAgICAgICAgLy8gfSxcclxuICAgIH0sXHJcblxyXG4gICAgLy8gTElGRS1DWUNMRSBDQUxMQkFDS1M6XHJcblxyXG4gICAgLy8gb25Mb2FkICgpIHt9LFxyXG5cclxuICAgIHN0YXJ0ICgpIHtcclxuXHJcbiAgICB9LFxyXG5cclxuICAgIC8vIHVwZGF0ZSAoZHQpIHt9LFxyXG59KTtcclxuIl19 -//------QC-SOURCE-SPLIT------ - - (function() { - var nodeEnv = typeof require !== 'undefined' && typeof process !== 'undefined'; - var __module = nodeEnv ? module : {exports:{}}; - var __filename = 'preview-scripts/assets/effect/融化.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, '341aezWi/BCGa2q28VO8ioy', '融化'); -// effect/融化.ts - -"use strict"; -// IceMelt.ts -var __extends = (this && this.__extends) || (function () { - var extendStatics = function (d, b) { - extendStatics = Object.setPrototypeOf || - ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) || - function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; }; - return extendStatics(d, b); - }; - return function (d, b) { - extendStatics(d, b); - function __() { this.constructor = d; } - d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); - }; -})(); -var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) { - var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; - if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc); - else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; - return c > 3 && r && Object.defineProperty(target, key, r), r; -}; -Object.defineProperty(exports, "__esModule", { value: true }); -exports.IceMelt = void 0; -var _a = cc._decorator, ccclass = _a.ccclass, property = _a.property; -var IceMelt = /** @class */ (function (_super) { - __extends(IceMelt, _super); - function IceMelt() { - var _this = _super !== null && _super.apply(this, arguments) || this; - _this.speed = 1; - //是否融化 - _this._isMelt = false; - _this._time = 0; - return _this; - } - IceMelt.prototype.start = function () { - this._material = this.node.getComponent(cc.Sprite).getMaterial(0); - }; - IceMelt.prototype.update = function (dt) { - if (this._material && this._isMelt) { - this._material.setProperty('u_time', this._time); - this._time += dt * this.speed; - } - }; - //开始融化 - IceMelt.prototype.startMelt = function () { - this._isMelt = true; - this._time = 0; - }; - IceMelt = __decorate([ - ccclass() - ], IceMelt); - return IceMelt; -}(cc.Component)); -exports.IceMelt = IceMelt; - -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,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImFzc2V0c1xcZWZmZWN0XFzono3ljJYudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLGFBQWE7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFJUCxJQUFBLEtBQXdCLEVBQUUsQ0FBQyxVQUFVLEVBQW5DLE9BQU8sYUFBQSxFQUFFLFFBQVEsY0FBa0IsQ0FBQztBQUc1QztJQUE2QiwyQkFBWTtJQUF6QztRQUFBLHFFQXlCQztRQXZCRyxXQUFLLEdBQVcsQ0FBQyxDQUFDO1FBRWxCLE1BQU07UUFDRSxhQUFPLEdBQVksS0FBSyxDQUFDO1FBQ3pCLFdBQUssR0FBVyxDQUFDLENBQUM7O0lBbUI5QixDQUFDO0lBaEJHLHVCQUFLLEdBQUw7UUFDSSxJQUFJLENBQUMsU0FBUyxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLEVBQUUsQ0FBQyxNQUFNLENBQUMsQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDdEUsQ0FBQztJQUVELHdCQUFNLEdBQU4sVUFBTyxFQUFFO1FBQ0wsSUFBSSxJQUFJLENBQUMsU0FBUyxJQUFJLElBQUksQ0FBQyxPQUFPLEVBQUU7WUFDaEMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxXQUFXLENBQUMsUUFBUSxFQUFFLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztZQUNqRCxJQUFJLENBQUMsS0FBSyxJQUFJLEVBQUUsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDO1NBQ2pDO0lBQ0wsQ0FBQztJQUVELE1BQU07SUFDTiwyQkFBUyxHQUFUO1FBQ0ksSUFBSSxDQUFDLE9BQU8sR0FBRyxJQUFJLENBQUM7UUFDcEIsSUFBSSxDQUFDLEtBQUssR0FBRyxDQUFDLENBQUM7SUFDbkIsQ0FBQztJQXhCUSxPQUFPO1FBRG5CLE9BQU8sRUFBRTtPQUNHLE9BQU8sQ0F5Qm5CO0lBQUQsY0FBQztDQXpCRCxBQXlCQyxDQXpCNEIsRUFBRSxDQUFDLFNBQVMsR0F5QnhDO0FBekJZLDBCQUFPIiwiZmlsZSI6IiIsInNvdXJjZVJvb3QiOiIvIiwic291cmNlc0NvbnRlbnQiOlsiLy8gSWNlTWVsdC50c1xyXG5cclxuXHJcblxyXG5jb25zdCB7IGNjY2xhc3MsIHByb3BlcnR5IH0gPSBjYy5fZGVjb3JhdG9yO1xyXG5cclxuQGNjY2xhc3MoKVxyXG5leHBvcnQgY2xhc3MgSWNlTWVsdCBleHRlbmRzIGNjLkNvbXBvbmVudCB7XHJcblxyXG4gICAgc3BlZWQ6IG51bWJlciA9IDE7XHJcblxyXG4gICAgLy/mmK/lkKbono3ljJZcclxuICAgIHByaXZhdGUgX2lzTWVsdDogYm9vbGVhbiA9IGZhbHNlO1xyXG4gICAgcHJpdmF0ZSBfdGltZTogbnVtYmVyID0gMDtcclxuICAgIHByaXZhdGUgX21hdGVyaWFsOiBjYy5NYXRlcmlhbFZhcmlhbnQ7XHJcblxyXG4gICAgc3RhcnQoKSB7XHJcbiAgICAgICAgdGhpcy5fbWF0ZXJpYWwgPSB0aGlzLm5vZGUuZ2V0Q29tcG9uZW50KGNjLlNwcml0ZSkuZ2V0TWF0ZXJpYWwoMCk7XHJcbiAgICB9XHJcblxyXG4gICAgdXBkYXRlKGR0KSB7XHJcbiAgICAgICAgaWYgKHRoaXMuX21hdGVyaWFsICYmIHRoaXMuX2lzTWVsdCkge1xyXG4gICAgICAgICAgICB0aGlzLl9tYXRlcmlhbC5zZXRQcm9wZXJ0eSgndV90aW1lJywgdGhpcy5fdGltZSk7XHJcbiAgICAgICAgICAgIHRoaXMuX3RpbWUgKz0gZHQgKiB0aGlzLnNwZWVkO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICAvL+W8gOWni+iejeWMllxyXG4gICAgc3RhcnRNZWx0KCkge1xyXG4gICAgICAgIHRoaXMuX2lzTWVsdCA9IHRydWU7XHJcbiAgICAgICAgdGhpcy5fdGltZSA9IDA7XHJcbiAgICB9XHJcbn0iXX0= -//------QC-SOURCE-SPLIT------ - - (function() { - var nodeEnv = typeof require !== 'undefined' && typeof process !== 'undefined'; - var __module = nodeEnv ? module : {exports:{}}; - var __filename = 'preview-scripts/assets/migration/use_v2.1-2.2.1_cc.Toggle_event.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, '7a231Rz0d9LBYYgY3bDYlLB', 'use_v2.1-2.2.1_cc.Toggle_event'); -// migration/use_v2.1-2.2.1_cc.Toggle_event.js - -"use strict"; - -/* - * This script is automatically generated by Cocos Creator and is only used for projects compatible with the v2.1.0 ~ 2.2.1 version. - * You do not need to manually add this script in any other project. - * If you don't use cc.Toggle in your project, you can delete this script directly. - * If your project is hosted in VCS such as git, submit this script together. - * - * 此脚本由 Cocos Creator 自动生成,仅用于兼容 v2.1.0 ~ 2.2.1 版本的工程, - * 你无需在任何其它项目中手动添加此脚本。 - * 如果你的项目中没用到 Toggle,可直接删除该脚本。 - * 如果你的项目有托管于 git 等版本库,请将此脚本一并上传。 - */ - -if (cc.Toggle) { - // Whether to trigger 'toggle' and 'checkEvents' events when modifying 'toggle.isChecked' in the code - // 在代码中修改 'toggle.isChecked' 时是否触发 'toggle' 与 'checkEvents' 事件 - cc.Toggle._triggerEventInScript_isChecked = true; -} - -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,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImFzc2V0c1xcbWlncmF0aW9uXFx1c2VfdjIuMS0yLjIuMV9jYy5Ub2dnbGVfZXZlbnQuanMiXSwibmFtZXMiOlsiY2MiLCJUb2dnbGUiLCJfdHJpZ2dlckV2ZW50SW5TY3JpcHRfaXNDaGVja2VkIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7OztBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUEsSUFBSUEsRUFBRSxDQUFDQyxNQUFNLEVBQUU7RUFDWDtFQUNBO0VBQ0FELEVBQUUsQ0FBQ0MsTUFBTSxDQUFDQywrQkFBK0IsR0FBRyxJQUFJO0FBQ3BEIiwic291cmNlUm9vdCI6Ii8iLCJzb3VyY2VzQ29udGVudCI6WyIvKlxyXG4gKiBUaGlzIHNjcmlwdCBpcyBhdXRvbWF0aWNhbGx5IGdlbmVyYXRlZCBieSBDb2NvcyBDcmVhdG9yIGFuZCBpcyBvbmx5IHVzZWQgZm9yIHByb2plY3RzIGNvbXBhdGlibGUgd2l0aCB0aGUgdjIuMS4wIO+9niAyLjIuMSB2ZXJzaW9uLlxyXG4gKiBZb3UgZG8gbm90IG5lZWQgdG8gbWFudWFsbHkgYWRkIHRoaXMgc2NyaXB0IGluIGFueSBvdGhlciBwcm9qZWN0LlxyXG4gKiBJZiB5b3UgZG9uJ3QgdXNlIGNjLlRvZ2dsZSBpbiB5b3VyIHByb2plY3QsIHlvdSBjYW4gZGVsZXRlIHRoaXMgc2NyaXB0IGRpcmVjdGx5LlxyXG4gKiBJZiB5b3VyIHByb2plY3QgaXMgaG9zdGVkIGluIFZDUyBzdWNoIGFzIGdpdCwgc3VibWl0IHRoaXMgc2NyaXB0IHRvZ2V0aGVyLlxyXG4gKlxyXG4gKiDmraTohJrmnKznlLEgQ29jb3MgQ3JlYXRvciDoh6rliqjnlJ/miJDvvIzku4XnlKjkuo7lhbzlrrkgdjIuMS4wIH4gMi4yLjEg54mI5pys55qE5bel56iL77yMXHJcbiAqIOS9oOaXoOmcgOWcqOS7u+S9leWFtuWug+mhueebruS4reaJi+WKqOa3u+WKoOatpOiEmuacrOOAglxyXG4gKiDlpoLmnpzkvaDnmoTpobnnm67kuK3msqHnlKjliLAgVG9nZ2xl77yM5Y+v55u05o6l5Yig6Zmk6K+l6ISa5pys44CCXHJcbiAqIOWmguaenOS9oOeahOmhueebruacieaJmOeuoeS6jiBnaXQg562J54mI5pys5bqT77yM6K+35bCG5q2k6ISa5pys5LiA5bm25LiK5Lyg44CCXHJcbiAqL1xyXG5cclxuaWYgKGNjLlRvZ2dsZSkge1xyXG4gICAgLy8gV2hldGhlciB0byB0cmlnZ2VyICd0b2dnbGUnIGFuZCAnY2hlY2tFdmVudHMnIGV2ZW50cyB3aGVuIG1vZGlmeWluZyAndG9nZ2xlLmlzQ2hlY2tlZCcgaW4gdGhlIGNvZGVcclxuICAgIC8vIOWcqOS7o+eggeS4reS/ruaUuSAndG9nZ2xlLmlzQ2hlY2tlZCcg5pe25piv5ZCm6Kem5Y+RICd0b2dnbGUnIOS4jiAnY2hlY2tFdmVudHMnIOS6i+S7tlxyXG4gICAgY2MuVG9nZ2xlLl90cmlnZ2VyRXZlbnRJblNjcmlwdF9pc0NoZWNrZWQgPSB0cnVlO1xyXG59XHJcbiJdfQ== -//------QC-SOURCE-SPLIT------ - - (function() { - var nodeEnv = typeof require !== 'undefined' && typeof process !== 'undefined'; - var __module = nodeEnv ? module : {exports:{}}; - var __filename = 'preview-scripts/assets/Script/prop/Lock.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, '41cb8ugLSBH/5aNhnsJ5lX7', 'Lock'); -// Script/prop/Lock.ts - -"use strict"; -// Learn TypeScript: -// - https://docs.cocos.com/creator/manual/en/scripting/typescript.html -// Learn Attribute: -// - https://docs.cocos.com/creator/manual/en/scripting/reference/attributes.html -// Learn life-cycle callbacks: -// - https://docs.cocos.com/creator/manual/en/scripting/life-cycle-callbacks.html -var __extends = (this && this.__extends) || (function () { - var extendStatics = function (d, b) { - extendStatics = Object.setPrototypeOf || - ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) || - function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; }; - return extendStatics(d, b); - }; - return function (d, b) { - extendStatics(d, b); - function __() { this.constructor = d; } - d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); - }; -})(); -var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) { - var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; - if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc); - else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; - return c > 3 && r && Object.defineProperty(target, key, r), r; -}; -Object.defineProperty(exports, "__esModule", { value: true }); -var NumberToImage_1 = require("../NumberToImage"); -var _a = cc._decorator, ccclass = _a.ccclass, property = _a.property; -var Lock = /** @class */ (function (_super) { - __extends(Lock, _super); - function Lock() { - var _this = _super !== null && _super.apply(this, arguments) || this; - _this.time = 0; - return _this; - // update (dt) {} - } - // mapInfo: number[][] = []; - Lock.prototype.onLoad = function () { - }; - Lock.prototype.start = function () { - }; - Lock.prototype.init = function (time) { - if (time) - this.time = time; - this.node.getChildByName("time").active = true; - NumberToImage_1.default.numberToImageNodes(this.time, 20, 8, "lock_", this.node.getChildByName("time"), false); - }; - Lock.prototype.reduce = function () { - this.time -= 1; - NumberToImage_1.default.numberToImageNodes(this.time, 20, 8, "lock_", this.node.getChildByName("time"), false); - if (this.time <= 0) { - this.node.parent.getComponent("Block").type = 0; - this.node.destroy(); - this.node.removeFromParent(); - } - }; - Lock = __decorate([ - ccclass - ], Lock); - return Lock; -}(cc.Component)); -exports.default = Lock; - -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,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImFzc2V0c1xcU2NyaXB0XFxwcm9wXFxMb2NrLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSxvQkFBb0I7QUFDcEIsd0VBQXdFO0FBQ3hFLG1CQUFtQjtBQUNuQixrRkFBa0Y7QUFDbEYsOEJBQThCO0FBQzlCLGtGQUFrRjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBR2xGLGtEQUE2QztBQUV2QyxJQUFBLEtBQXNCLEVBQUUsQ0FBQyxVQUFVLEVBQWxDLE9BQU8sYUFBQSxFQUFFLFFBQVEsY0FBaUIsQ0FBQztBQUsxQztJQUFrQyx3QkFBWTtJQUE5QztRQUFBLHFFQStCQztRQTdCRyxVQUFJLEdBQVcsQ0FBQyxDQUFDOztRQTRCakIsaUJBQWlCO0lBQ3JCLENBQUM7SUEzQkcsNEJBQTRCO0lBRTVCLHFCQUFNLEdBQU47SUFFQSxDQUFDO0lBRUQsb0JBQUssR0FBTDtJQUNBLENBQUM7SUFFRCxtQkFBSSxHQUFKLFVBQUssSUFBSTtRQUNMLElBQUcsSUFBSTtZQUFFLElBQUksQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDO1FBQzFCLElBQUksQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLE1BQU0sQ0FBQyxDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUM7UUFDL0MsdUJBQWEsQ0FBQyxrQkFBa0IsQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFDLEVBQUUsRUFBQyxDQUFDLEVBQUMsT0FBTyxFQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLE1BQU0sQ0FBQyxFQUFDLEtBQUssQ0FBQyxDQUFDO0lBRXBHLENBQUM7SUFFRCxxQkFBTSxHQUFOO1FBQ0ksSUFBSSxDQUFDLElBQUksSUFBSSxDQUFDLENBQUM7UUFDZix1QkFBYSxDQUFDLGtCQUFrQixDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUMsRUFBRSxFQUFDLENBQUMsRUFBQyxPQUFPLEVBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsTUFBTSxDQUFDLEVBQUMsS0FBSyxDQUFDLENBQUM7UUFDaEcsSUFBRyxJQUFJLENBQUMsSUFBSSxJQUFJLENBQUMsRUFBQztZQUNkLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLFlBQVksQ0FBQyxPQUFPLENBQUMsQ0FBQyxJQUFJLEdBQUcsQ0FBQyxDQUFDO1lBQ2hELElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUM7WUFDcEIsSUFBSSxDQUFDLElBQUksQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDO1NBQ2hDO0lBQ0wsQ0FBQztJQTVCZ0IsSUFBSTtRQUR4QixPQUFPO09BQ2EsSUFBSSxDQStCeEI7SUFBRCxXQUFDO0NBL0JELEFBK0JDLENBL0JpQyxFQUFFLENBQUMsU0FBUyxHQStCN0M7a0JBL0JvQixJQUFJIiwiZmlsZSI6IiIsInNvdXJjZVJvb3QiOiIvIiwic291cmNlc0NvbnRlbnQiOlsiLy8gTGVhcm4gVHlwZVNjcmlwdDpcclxuLy8gIC0gaHR0cHM6Ly9kb2NzLmNvY29zLmNvbS9jcmVhdG9yL21hbnVhbC9lbi9zY3JpcHRpbmcvdHlwZXNjcmlwdC5odG1sXHJcbi8vIExlYXJuIEF0dHJpYnV0ZTpcclxuLy8gIC0gaHR0cHM6Ly9kb2NzLmNvY29zLmNvbS9jcmVhdG9yL21hbnVhbC9lbi9zY3JpcHRpbmcvcmVmZXJlbmNlL2F0dHJpYnV0ZXMuaHRtbFxyXG4vLyBMZWFybiBsaWZlLWN5Y2xlIGNhbGxiYWNrczpcclxuLy8gIC0gaHR0cHM6Ly9kb2NzLmNvY29zLmNvbS9jcmVhdG9yL21hbnVhbC9lbi9zY3JpcHRpbmcvbGlmZS1jeWNsZS1jYWxsYmFja3MuaHRtbFxyXG5cclxuaW1wb3J0IE1hcENvbnJvbGVyIGZyb20gXCIuLi9NYXBcIjtcclxuaW1wb3J0IE51bWJlclRvSW1hZ2UgZnJvbSBcIi4uL051bWJlclRvSW1hZ2VcIjtcclxuXHJcbmNvbnN0IHtjY2NsYXNzLCBwcm9wZXJ0eX0gPSBjYy5fZGVjb3JhdG9yO1xyXG5cclxuXHJcblxyXG5AY2NjbGFzc1xyXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBMb2NrIGV4dGVuZHMgY2MuQ29tcG9uZW50IHtcclxuICAgIHN0YXRpYyBfaW5zdGFuY2U6IGFueTtcclxuICAgIHRpbWU6IG51bWJlciA9IDA7XHJcblxyXG4gICAgLy8gbWFwSW5mbzogbnVtYmVyW11bXSA9IFtdO1xyXG5cclxuICAgIG9uTG9hZCAoKSB7XHJcblxyXG4gICAgfSBcclxuXHJcbiAgICBzdGFydCAoKSB7XHJcbiAgICB9XHJcblxyXG4gICAgaW5pdCh0aW1lKXtcclxuICAgICAgICBpZih0aW1lKSB0aGlzLnRpbWUgPSB0aW1lO1xyXG4gICAgICAgIHRoaXMubm9kZS5nZXRDaGlsZEJ5TmFtZShcInRpbWVcIikuYWN0aXZlID0gdHJ1ZTtcclxuICAgICAgICBOdW1iZXJUb0ltYWdlLm51bWJlclRvSW1hZ2VOb2Rlcyh0aGlzLnRpbWUsMjAsOCxcImxvY2tfXCIsdGhpcy5ub2RlLmdldENoaWxkQnlOYW1lKFwidGltZVwiKSxmYWxzZSk7XHJcblxyXG4gICAgfVxyXG5cclxuICAgIHJlZHVjZSgpe1xyXG4gICAgICAgIHRoaXMudGltZSAtPSAxO1xyXG4gICAgICAgIE51bWJlclRvSW1hZ2UubnVtYmVyVG9JbWFnZU5vZGVzKHRoaXMudGltZSwyMCw4LFwibG9ja19cIix0aGlzLm5vZGUuZ2V0Q2hpbGRCeU5hbWUoXCJ0aW1lXCIpLGZhbHNlKTtcclxuICAgICAgICBpZih0aGlzLnRpbWUgPD0gMCl7XHJcbiAgICAgICAgICAgIHRoaXMubm9kZS5wYXJlbnQuZ2V0Q29tcG9uZW50KFwiQmxvY2tcIikudHlwZSA9IDA7XHJcbiAgICAgICAgICAgIHRoaXMubm9kZS5kZXN0cm95KCk7XHJcbiAgICAgICAgICAgIHRoaXMubm9kZS5yZW1vdmVGcm9tUGFyZW50KCk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIC8vIHVwZGF0ZSAoZHQpIHt9XHJcbn1cclxuIl19 -//------QC-SOURCE-SPLIT------ - (function() { var nodeEnv = typeof require !== 'undefined' && typeof process !== 'undefined'; var __module = nodeEnv ? module : {exports:{}}; @@ -2477,121 +103,121 @@ cc._RF.pop(); cc._RF.push(module, 'c22a3wcU/tBdJ/qjn/Q6uuA', 'lq_collide_base'); // Script/lq_collide_system/lq_collide_base.ts -"use strict"; -var __extends = (this && this.__extends) || (function () { - var extendStatics = function (d, b) { - extendStatics = Object.setPrototypeOf || - ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) || - function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; }; - return extendStatics(d, b); - }; - return function (d, b) { - extendStatics(d, b); - function __() { this.constructor = d; } - d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); - }; -})(); -var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) { - var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; - if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc); - else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; - return c > 3 && r && Object.defineProperty(target, key, r), r; -}; -Object.defineProperty(exports, "__esModule", { value: true }); -exports.LQCollideBase = void 0; -var ccclass = cc._decorator.ccclass; -var executeInEditMode = cc._decorator.executeInEditMode; -var PolygonCollider = cc.PolygonCollider; -var property = cc._decorator.property; -var lq_collide_1 = require("./lq_collide"); -var lq_const_1 = require("../lq_base/data/lq_const"); -var LQCollideBase = /** @class */ (function (_super) { - __extends(LQCollideBase, _super); - function LQCollideBase() { - var _this = _super !== null && _super.apply(this, arguments) || this; - _this.auto_update_point = true; - return _this; - } - LQCollideBase.prototype.find_collide = function () { - var collide = this.node.getComponent(lq_collide_1.LQCollide); - if (!collide) { - console.error(this.node.name + ':没有找到LQCollide组件'); - return undefined; - } - return collide; - }; - LQCollideBase.prototype.onLoad = function () { - var collide = this.find_collide(); - if (!collide) { - return; - } - collide.init_lq_collide(); - }; - LQCollideBase.prototype.onEnable = function () { - var collide = this.find_collide(); - if (!collide) { - return; - } - collide.enable_lq_collide(); - }; - LQCollideBase.prototype.onDisable = function () { - var collide = this.find_collide(); - if (!collide) { - return; - } - collide.disable_lq_collide(); - }; - LQCollideBase.prototype.onDestroy = function () { - var collide = this.find_collide(); - if (!collide) { - return; - } - }; - LQCollideBase.prototype.onFocusInEditor = function () { - var collide = this.find_collide(); - if (!collide) { - return; - } - }; - LQCollideBase.prototype.onLostFocusInEditor = function () { - var collide = this.find_collide(); - if (!collide) { - return; - } - }; - LQCollideBase.prototype.resetInEditor = function () { - var collide = this.find_collide(); - if (!collide) { - return; - } - }; - LQCollideBase.prototype.update = function (dt) { - if (!CC_EDITOR || !this.auto_update_point) { - return; - } - var collide = this.find_collide(); - if (!collide) { - return; - } - if (collide.collide_shape !== lq_const_1.LQCollideShape.Polygon) { - return; - } - var polygonCollider = this.node.getComponent(PolygonCollider); - if (!polygonCollider) { - return; - } - collide.polygon_points = polygonCollider.points; - }; - __decorate([ - property({ tooltip: '多边形自动同步cocos PolygonCollider 组件中的碰撞点' }) - ], LQCollideBase.prototype, "auto_update_point", void 0); - LQCollideBase = __decorate([ - ccclass, - executeInEditMode - ], LQCollideBase); - return LQCollideBase; -}(cc.Component)); -exports.LQCollideBase = LQCollideBase; +"use strict"; +var __extends = (this && this.__extends) || (function () { + var extendStatics = function (d, b) { + extendStatics = Object.setPrototypeOf || + ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) || + function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; }; + return extendStatics(d, b); + }; + return function (d, b) { + extendStatics(d, b); + function __() { this.constructor = d; } + d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); + }; +})(); +var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) { + var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; + if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc); + else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; + return c > 3 && r && Object.defineProperty(target, key, r), r; +}; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.LQCollideBase = void 0; +var ccclass = cc._decorator.ccclass; +var executeInEditMode = cc._decorator.executeInEditMode; +var PolygonCollider = cc.PolygonCollider; +var property = cc._decorator.property; +var lq_collide_1 = require("./lq_collide"); +var lq_const_1 = require("../lq_base/data/lq_const"); +var LQCollideBase = /** @class */ (function (_super) { + __extends(LQCollideBase, _super); + function LQCollideBase() { + var _this = _super !== null && _super.apply(this, arguments) || this; + _this.auto_update_point = true; + return _this; + } + LQCollideBase.prototype.find_collide = function () { + var collide = this.node.getComponent(lq_collide_1.LQCollide); + if (!collide) { + console.error(this.node.name + ':没有找到LQCollide组件'); + return undefined; + } + return collide; + }; + LQCollideBase.prototype.onLoad = function () { + var collide = this.find_collide(); + if (!collide) { + return; + } + collide.init_lq_collide(); + }; + LQCollideBase.prototype.onEnable = function () { + var collide = this.find_collide(); + if (!collide) { + return; + } + collide.enable_lq_collide(); + }; + LQCollideBase.prototype.onDisable = function () { + var collide = this.find_collide(); + if (!collide) { + return; + } + collide.disable_lq_collide(); + }; + LQCollideBase.prototype.onDestroy = function () { + var collide = this.find_collide(); + if (!collide) { + return; + } + }; + LQCollideBase.prototype.onFocusInEditor = function () { + var collide = this.find_collide(); + if (!collide) { + return; + } + }; + LQCollideBase.prototype.onLostFocusInEditor = function () { + var collide = this.find_collide(); + if (!collide) { + return; + } + }; + LQCollideBase.prototype.resetInEditor = function () { + var collide = this.find_collide(); + if (!collide) { + return; + } + }; + LQCollideBase.prototype.update = function (dt) { + if (!CC_EDITOR || !this.auto_update_point) { + return; + } + var collide = this.find_collide(); + if (!collide) { + return; + } + if (collide.collide_shape !== lq_const_1.LQCollideShape.Polygon) { + return; + } + var polygonCollider = this.node.getComponent(PolygonCollider); + if (!polygonCollider) { + return; + } + collide.polygon_points = polygonCollider.points; + }; + __decorate([ + property({ tooltip: '多边形自动同步cocos PolygonCollider 组件中的碰撞点' }) + ], LQCollideBase.prototype, "auto_update_point", void 0); + LQCollideBase = __decorate([ + ccclass, + executeInEditMode + ], LQCollideBase); + return LQCollideBase; +}(cc.Component)); +exports.LQCollideBase = LQCollideBase; cc._RF.pop(); } @@ -2621,54 +247,54 @@ cc._RF.pop(); cc._RF.push(module, '997fc58y39OFLflh6T58fZD', 'lq_math_util'); // Script/lq_base/util/lq_math_util.ts -"use strict"; -Object.defineProperty(exports, "__esModule", { value: true }); -exports.LQMathUtil = void 0; -var LQMathUtil = /** @class */ (function () { - function LQMathUtil() { - } - LQMathUtil.random = function (min, max) { - if (min === max) { - return min; - } - else if (min < max) { - return Math.random() * (max - min) + min; - } - else { - return Math.random() * (min - max) + max; - } - }; - LQMathUtil.random_int = function (min, max) { - return Math.floor(this.random(min, max)); - }; - LQMathUtil.get_radians = function (pos, target_pos) { - var r = Math.atan2(target_pos.y - pos.y, target_pos.x - pos.x); - return r > 0 ? r : r + 6.28; - }; - LQMathUtil.intersects_rect = function (r1, r2) { - return Math.abs(r1.x - r2.x) < r1.half_width + r2.half_width && Math.abs(r1.y - r2.y) < r1.half_height + r2.half_height; - }; - LQMathUtil.intersects_point_rect = function (p, r) { - return (p.x > r.x - r.width * 0.5) && (p.x < r.x + r.width * 0.5) && (p.y > r.y - r.height * 0.5) && (p.y < r.y + r.height * 0.5); - }; - LQMathUtil.intersects_point_circle = function (p1, p2, r) { - return p1.sub(p2).magSqr() < r * r; - }; - LQMathUtil.intersects_circle = function (p1, r1, p2, r2) { - return p1.sub(p2).mag() < r1 + r2; - }; - LQMathUtil.intersects_circle_rect = function (p, r, rect) { - var relative_x = p.x - rect.x; - var relative_y = p.y - rect.y; - var dx = Math.min(relative_x, rect.half_width); - var dx1 = Math.max(dx, -rect.half_width); - var dy = Math.min(relative_y, rect.half_height); - var dy1 = Math.max(dy, -rect.half_height); - return (dx1 - relative_x) * (dx1 - relative_x) + (dy1 - relative_y) * (dy1 - relative_y) <= r * r; - }; - return LQMathUtil; -}()); -exports.LQMathUtil = LQMathUtil; +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.LQMathUtil = void 0; +var LQMathUtil = /** @class */ (function () { + function LQMathUtil() { + } + LQMathUtil.random = function (min, max) { + if (min === max) { + return min; + } + else if (min < max) { + return Math.random() * (max - min) + min; + } + else { + return Math.random() * (min - max) + max; + } + }; + LQMathUtil.random_int = function (min, max) { + return Math.floor(this.random(min, max)); + }; + LQMathUtil.get_radians = function (pos, target_pos) { + var r = Math.atan2(target_pos.y - pos.y, target_pos.x - pos.x); + return r > 0 ? r : r + 6.28; + }; + LQMathUtil.intersects_rect = function (r1, r2) { + return Math.abs(r1.x - r2.x) < r1.half_width + r2.half_width && Math.abs(r1.y - r2.y) < r1.half_height + r2.half_height; + }; + LQMathUtil.intersects_point_rect = function (p, r) { + return (p.x > r.x - r.width * 0.5) && (p.x < r.x + r.width * 0.5) && (p.y > r.y - r.height * 0.5) && (p.y < r.y + r.height * 0.5); + }; + LQMathUtil.intersects_point_circle = function (p1, p2, r) { + return p1.sub(p2).magSqr() < r * r; + }; + LQMathUtil.intersects_circle = function (p1, r1, p2, r2) { + return p1.sub(p2).mag() < r1 + r2; + }; + LQMathUtil.intersects_circle_rect = function (p, r, rect) { + var relative_x = p.x - rect.x; + var relative_y = p.y - rect.y; + var dx = Math.min(relative_x, rect.half_width); + var dx1 = Math.max(dx, -rect.half_width); + var dy = Math.min(relative_y, rect.half_height); + var dy1 = Math.max(dy, -rect.half_height); + return (dx1 - relative_x) * (dx1 - relative_x) + (dy1 - relative_y) * (dy1 - relative_y) <= r * r; + }; + return LQMathUtil; +}()); +exports.LQMathUtil = LQMathUtil; cc._RF.pop(); } @@ -2682,266 +308,6 @@ cc._RF.pop(); } })(); //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImFzc2V0c1xcU2NyaXB0XFxscV9iYXNlXFx1dGlsXFxscV9tYXRoX3V0aWwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBRUE7SUFBQTtJQTZDQSxDQUFDO0lBNUNpQixpQkFBTSxHQUFwQixVQUFxQixHQUFXLEVBQUUsR0FBVztRQUN6QyxJQUFJLEdBQUcsS0FBSyxHQUFHLEVBQUU7WUFDYixPQUFPLEdBQUcsQ0FBQztTQUNkO2FBQU0sSUFBSSxHQUFHLEdBQUcsR0FBRyxFQUFFO1lBQ2xCLE9BQU8sSUFBSSxDQUFDLE1BQU0sRUFBRSxHQUFHLENBQUMsR0FBRyxHQUFHLEdBQUcsQ0FBQyxHQUFHLEdBQUcsQ0FBQztTQUM1QzthQUFNO1lBQ0gsT0FBTyxJQUFJLENBQUMsTUFBTSxFQUFFLEdBQUcsQ0FBQyxHQUFHLEdBQUcsR0FBRyxDQUFDLEdBQUcsR0FBRyxDQUFDO1NBQzVDO0lBQ0wsQ0FBQztJQUVhLHFCQUFVLEdBQXhCLFVBQXlCLEdBQVcsRUFBRSxHQUFXO1FBQzdDLE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLEdBQUcsRUFBRSxHQUFHLENBQUMsQ0FBQyxDQUFDO0lBQzdDLENBQUM7SUFFYSxzQkFBVyxHQUF6QixVQUEwQixHQUFTLEVBQUUsVUFBZ0I7UUFDakQsSUFBTSxDQUFDLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxVQUFVLENBQUMsQ0FBQyxHQUFHLEdBQUcsQ0FBQyxDQUFDLEVBQUUsVUFBVSxDQUFDLENBQUMsR0FBRyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDakUsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUM7SUFDaEMsQ0FBQztJQUVhLDBCQUFlLEdBQTdCLFVBQThCLEVBQVMsRUFBRSxFQUFTO1FBQzlDLE9BQU8sSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRyxFQUFFLENBQUMsVUFBVSxHQUFHLEVBQUUsQ0FBQyxVQUFVLElBQUksSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRyxFQUFFLENBQUMsV0FBVyxHQUFHLEVBQUUsQ0FBQyxXQUFXLENBQUM7SUFDNUgsQ0FBQztJQUVhLGdDQUFxQixHQUFuQyxVQUFvQyxDQUFPLEVBQUUsQ0FBUTtRQUNqRCxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxLQUFLLEdBQUcsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEtBQUssR0FBRyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsTUFBTSxHQUFHLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxNQUFNLEdBQUcsR0FBRyxDQUFDLENBQUM7SUFDdEksQ0FBQztJQUVhLGtDQUF1QixHQUFyQyxVQUFzQyxFQUFRLEVBQUUsRUFBUSxFQUFFLENBQVM7UUFDL0QsT0FBTyxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDLE1BQU0sRUFBRSxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDdkMsQ0FBQztJQUVhLDRCQUFpQixHQUEvQixVQUFnQyxFQUFRLEVBQUUsRUFBVSxFQUFFLEVBQVEsRUFBRSxFQUFVO1FBQ3RFLE9BQU8sRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQyxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxDQUFDO0lBQ3RDLENBQUM7SUFFYSxpQ0FBc0IsR0FBcEMsVUFBcUMsQ0FBTyxFQUFFLENBQVMsRUFBRSxJQUFXO1FBQ2hFLElBQU0sVUFBVSxHQUFHLENBQUMsQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDLENBQUMsQ0FBQztRQUNoQyxJQUFNLFVBQVUsR0FBRyxDQUFDLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQyxDQUFDLENBQUM7UUFDaEMsSUFBTSxFQUFFLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxVQUFVLEVBQUUsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDO1FBQ2pELElBQU0sR0FBRyxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDO1FBQzNDLElBQU0sRUFBRSxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsVUFBVSxFQUFFLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQztRQUNsRCxJQUFNLEdBQUcsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQztRQUM1QyxPQUFPLENBQUMsR0FBRyxHQUFHLFVBQVUsQ0FBQyxHQUFHLENBQUMsR0FBRyxHQUFHLFVBQVUsQ0FBQyxHQUFHLENBQUMsR0FBRyxHQUFHLFVBQVUsQ0FBQyxHQUFHLENBQUMsR0FBRyxHQUFHLFVBQVUsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDdEcsQ0FBQztJQUNMLGlCQUFDO0FBQUQsQ0E3Q0EsQUE2Q0MsSUFBQTtBQTdDWSxnQ0FBVSIsImZpbGUiOiIiLCJzb3VyY2VSb290IjoiLyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7SVBvcywgSVJlY3R9IGZyb20gXCIuLi9kYXRhL2xxX2ludGVyZmFjZVwiO1xyXG5cclxuZXhwb3J0IGNsYXNzIExRTWF0aFV0aWwge1xyXG4gICAgcHVibGljIHN0YXRpYyByYW5kb20obWluOiBudW1iZXIsIG1heDogbnVtYmVyKTogbnVtYmVyIHtcclxuICAgICAgICBpZiAobWluID09PSBtYXgpIHtcclxuICAgICAgICAgICAgcmV0dXJuIG1pbjtcclxuICAgICAgICB9IGVsc2UgaWYgKG1pbiA8IG1heCkge1xyXG4gICAgICAgICAgICByZXR1cm4gTWF0aC5yYW5kb20oKSAqIChtYXggLSBtaW4pICsgbWluO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIHJldHVybiBNYXRoLnJhbmRvbSgpICogKG1pbiAtIG1heCkgKyBtYXg7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyBzdGF0aWMgcmFuZG9tX2ludChtaW46IG51bWJlciwgbWF4OiBudW1iZXIpOiBudW1iZXIge1xyXG4gICAgICAgIHJldHVybiBNYXRoLmZsb29yKHRoaXMucmFuZG9tKG1pbiwgbWF4KSk7XHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIHN0YXRpYyBnZXRfcmFkaWFucyhwb3M6IElQb3MsIHRhcmdldF9wb3M6IElQb3MpIHtcclxuICAgICAgICBjb25zdCByID0gTWF0aC5hdGFuMih0YXJnZXRfcG9zLnkgLSBwb3MueSwgdGFyZ2V0X3Bvcy54IC0gcG9zLngpO1xyXG4gICAgICAgIHJldHVybiByID4gMCA/IHIgOiByICsgNi4yODtcclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgc3RhdGljIGludGVyc2VjdHNfcmVjdChyMTogSVJlY3QsIHIyOiBJUmVjdCk6IGJvb2xlYW4ge1xyXG4gICAgICAgIHJldHVybiBNYXRoLmFicyhyMS54IC0gcjIueCkgPCByMS5oYWxmX3dpZHRoICsgcjIuaGFsZl93aWR0aCAmJiBNYXRoLmFicyhyMS55IC0gcjIueSkgPCByMS5oYWxmX2hlaWdodCArIHIyLmhhbGZfaGVpZ2h0O1xyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyBzdGF0aWMgaW50ZXJzZWN0c19wb2ludF9yZWN0KHA6IElQb3MsIHI6IElSZWN0KTogYm9vbGVhbiB7XHJcbiAgICAgICAgcmV0dXJuIChwLnggPiByLnggLSByLndpZHRoICogMC41KSAmJiAocC54IDwgci54ICsgci53aWR0aCAqIDAuNSkgJiYgKHAueSA+IHIueSAtIHIuaGVpZ2h0ICogMC41KSAmJiAocC55IDwgci55ICsgci5oZWlnaHQgKiAwLjUpO1xyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyBzdGF0aWMgaW50ZXJzZWN0c19wb2ludF9jaXJjbGUocDE6IElQb3MsIHAyOiBJUG9zLCByOiBudW1iZXIpIHtcclxuICAgICAgICByZXR1cm4gcDEuc3ViKHAyKS5tYWdTcXIoKSA8IHIgKiByO1xyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyBzdGF0aWMgaW50ZXJzZWN0c19jaXJjbGUocDE6IElQb3MsIHIxOiBudW1iZXIsIHAyOiBJUG9zLCByMjogbnVtYmVyKSB7XHJcbiAgICAgICAgcmV0dXJuIHAxLnN1YihwMikubWFnKCkgPCByMSArIHIyO1xyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyBzdGF0aWMgaW50ZXJzZWN0c19jaXJjbGVfcmVjdChwOiBJUG9zLCByOiBudW1iZXIsIHJlY3Q6IElSZWN0KSB7XHJcbiAgICAgICAgY29uc3QgcmVsYXRpdmVfeCA9IHAueCAtIHJlY3QueDtcclxuICAgICAgICBjb25zdCByZWxhdGl2ZV95ID0gcC55IC0gcmVjdC55O1xyXG4gICAgICAgIGNvbnN0IGR4ID0gTWF0aC5taW4ocmVsYXRpdmVfeCwgcmVjdC5oYWxmX3dpZHRoKTtcclxuICAgICAgICBjb25zdCBkeDEgPSBNYXRoLm1heChkeCwgLXJlY3QuaGFsZl93aWR0aCk7XHJcbiAgICAgICAgY29uc3QgZHkgPSBNYXRoLm1pbihyZWxhdGl2ZV95LCByZWN0LmhhbGZfaGVpZ2h0KTtcclxuICAgICAgICBjb25zdCBkeTEgPSBNYXRoLm1heChkeSwgLXJlY3QuaGFsZl9oZWlnaHQpO1xyXG4gICAgICAgIHJldHVybiAoZHgxIC0gcmVsYXRpdmVfeCkgKiAoZHgxIC0gcmVsYXRpdmVfeCkgKyAoZHkxIC0gcmVsYXRpdmVfeSkgKiAoZHkxIC0gcmVsYXRpdmVfeSkgPD0gciAqIHI7XHJcbiAgICB9XHJcbn0iXX0= -//------QC-SOURCE-SPLIT------ - - (function() { - var nodeEnv = typeof require !== 'undefined' && typeof process !== 'undefined'; - var __module = nodeEnv ? module : {exports:{}}; - var __filename = 'preview-scripts/assets/Script/module/Notification/Notification.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, '55403VjGlpPL564gsdiZBg3', 'Notification'); -// Script/module/Notification/Notification.ts - -"use strict"; -Object.defineProperty(exports, "__esModule", { value: true }); -exports.Notifications = void 0; -//全局通知 -var Notifications = { - _eventMap: [], - on: function (masgId, callback, target) { - if (this._eventMap[masgId] === undefined) { - this._eventMap[masgId] = []; - } - this._eventMap[masgId].push({ callback: callback, target: target }); - }, - emit: function (masgId, parameter) { - var array = this._eventMap[masgId]; - if (array === undefined) - return; - for (var i = 0; i < array.length; i++) { - var element = array[i]; - if (element) - element.callback.call(element.target, parameter); - } - }, - off: function (masgId, callback) { - var array = this._eventMap[masgId]; - if (array === undefined) - return; - for (var i = 0; i < array.length; i++) { - var element = array[i]; - if (element && element.callback === callback) { - array[i] = undefined; - break; - } - } - }, - offMasgId: function (masgId) { - this._eventMap[masgId] = undefined; - }, - removeAllMsg: function () { - for (var k in this._eventMap) { - if (this._eventMap[k]) { - this.offMasgId(k); - } - } - } -}; -exports.Notifications = Notifications; - -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,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImFzc2V0c1xcU2NyaXB0XFxtb2R1bGVcXE5vdGlmaWNhdGlvblxcTm90aWZpY2F0aW9uLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLE1BQU07QUFDTixJQUFJLGFBQWEsR0FBRztJQUNoQixTQUFTLEVBQUUsRUFBRTtJQUNiLEVBQUUsRUFBRSxVQUFVLE1BQU0sRUFBRSxRQUFRLEVBQUUsTUFBTTtRQUNsQyxJQUFJLElBQUksQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLEtBQUssU0FBUyxFQUFFO1lBQ3RDLElBQUksQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLEdBQUcsRUFBRSxDQUFDO1NBQy9CO1FBQ0QsSUFBSSxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxJQUFJLENBQUMsRUFBRSxRQUFRLEVBQUUsUUFBUSxFQUFFLE1BQU0sRUFBRSxNQUFNLEVBQUUsQ0FBQyxDQUFDO0lBQ3hFLENBQUM7SUFFRCxJQUFJLEVBQUUsVUFBVSxNQUFNLEVBQUUsU0FBUztRQUM3QixJQUFJLEtBQUssR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQ25DLElBQUksS0FBSyxLQUFLLFNBQVM7WUFBRSxPQUFPO1FBRWhDLEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxLQUFLLENBQUMsTUFBTSxFQUFFLENBQUMsRUFBRSxFQUFFO1lBQ25DLElBQUksT0FBTyxHQUFHLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUN2QixJQUFJLE9BQU87Z0JBQUUsT0FBTyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLE1BQU0sRUFBRSxTQUFTLENBQUMsQ0FBQztTQUNqRTtJQUNMLENBQUM7SUFFRCxHQUFHLEVBQUUsVUFBVSxNQUFNLEVBQUUsUUFBUTtRQUMzQixJQUFJLEtBQUssR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQ25DLElBQUksS0FBSyxLQUFLLFNBQVM7WUFBRSxPQUFPO1FBQ2hDLEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxLQUFLLENBQUMsTUFBTSxFQUFFLENBQUMsRUFBRSxFQUFFO1lBQ25DLElBQUksT0FBTyxHQUFHLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUN2QixJQUFJLE9BQU8sSUFBSSxPQUFPLENBQUMsUUFBUSxLQUFLLFFBQVEsRUFBRTtnQkFDMUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxHQUFHLFNBQVMsQ0FBQztnQkFDckIsTUFBTTthQUNUO1NBQ0o7SUFDTCxDQUFDO0lBRUQsU0FBUyxFQUFFLFVBQVUsTUFBTTtRQUN2QixJQUFJLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxHQUFHLFNBQVMsQ0FBQztJQUN2QyxDQUFDO0lBRUQsWUFBWSxFQUFFO1FBQ1YsS0FBSyxJQUFJLENBQUMsSUFBSSxJQUFJLENBQUMsU0FBUyxFQUFFO1lBQzFCLElBQUksSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsRUFBRTtnQkFDbkIsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQzthQUNyQjtTQUNKO0lBQ0wsQ0FBQztDQUNKLENBQUM7QUFDTyxzQ0FBYSIsImZpbGUiOiIiLCJzb3VyY2VSb290IjoiLyIsInNvdXJjZXNDb250ZW50IjpbIi8v5YWo5bGA6YCa55+lXHJcbnZhciBOb3RpZmljYXRpb25zID0ge1xyXG4gICAgX2V2ZW50TWFwOiBbXSxcclxuICAgIG9uOiBmdW5jdGlvbiAobWFzZ0lkLCBjYWxsYmFjaywgdGFyZ2V0KSB7XHJcbiAgICAgICAgaWYgKHRoaXMuX2V2ZW50TWFwW21hc2dJZF0gPT09IHVuZGVmaW5lZCkge1xyXG4gICAgICAgICAgICB0aGlzLl9ldmVudE1hcFttYXNnSWRdID0gW107XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRoaXMuX2V2ZW50TWFwW21hc2dJZF0ucHVzaCh7IGNhbGxiYWNrOiBjYWxsYmFjaywgdGFyZ2V0OiB0YXJnZXQgfSk7XHJcbiAgICB9LFxyXG5cclxuICAgIGVtaXQ6IGZ1bmN0aW9uIChtYXNnSWQsIHBhcmFtZXRlcikge1xyXG4gICAgICAgIGxldCBhcnJheSA9IHRoaXMuX2V2ZW50TWFwW21hc2dJZF07XHJcbiAgICAgICAgaWYgKGFycmF5ID09PSB1bmRlZmluZWQpIHJldHVybjtcclxuXHJcbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBhcnJheS5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgICAgICBsZXQgZWxlbWVudCA9IGFycmF5W2ldO1xyXG4gICAgICAgICAgICBpZiAoZWxlbWVudCkgZWxlbWVudC5jYWxsYmFjay5jYWxsKGVsZW1lbnQudGFyZ2V0LCBwYXJhbWV0ZXIpO1xyXG4gICAgICAgIH1cclxuICAgIH0sXHJcblxyXG4gICAgb2ZmOiBmdW5jdGlvbiAobWFzZ0lkLCBjYWxsYmFjaykge1xyXG4gICAgICAgIGxldCBhcnJheSA9IHRoaXMuX2V2ZW50TWFwW21hc2dJZF07XHJcbiAgICAgICAgaWYgKGFycmF5ID09PSB1bmRlZmluZWQpIHJldHVybjtcclxuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGFycmF5Lmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgICAgIGxldCBlbGVtZW50ID0gYXJyYXlbaV07XHJcbiAgICAgICAgICAgIGlmIChlbGVtZW50ICYmIGVsZW1lbnQuY2FsbGJhY2sgPT09IGNhbGxiYWNrKSB7XHJcbiAgICAgICAgICAgICAgICBhcnJheVtpXSA9IHVuZGVmaW5lZDtcclxuICAgICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgfSxcclxuXHJcbiAgICBvZmZNYXNnSWQ6IGZ1bmN0aW9uIChtYXNnSWQpIHtcclxuICAgICAgICB0aGlzLl9ldmVudE1hcFttYXNnSWRdID0gdW5kZWZpbmVkO1xyXG4gICAgfSxcclxuXHJcbiAgICByZW1vdmVBbGxNc2c6IGZ1bmN0aW9uICgpIHtcclxuICAgICAgICBmb3IgKGxldCBrIGluIHRoaXMuX2V2ZW50TWFwKSB7XHJcbiAgICAgICAgICAgIGlmICh0aGlzLl9ldmVudE1hcFtrXSkge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5vZmZNYXNnSWQoayk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICB9XHJcbn07XHJcbmV4cG9ydCB7IE5vdGlmaWNhdGlvbnMgfTsiXX0= -//------QC-SOURCE-SPLIT------ - - (function() { - var nodeEnv = typeof require !== 'undefined' && typeof process !== 'undefined'; - var __module = nodeEnv ? module : {exports:{}}; - var __filename = 'preview-scripts/assets/Script/module/RankList/ItemRender.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, 'ca0f9k0oBVDbpQC+OMNTF3m', 'ItemRender'); -// Script/module/RankList/ItemRender.ts - -"use strict"; -var __extends = (this && this.__extends) || (function () { - var extendStatics = function (d, b) { - extendStatics = Object.setPrototypeOf || - ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) || - function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; }; - return extendStatics(d, b); - }; - return function (d, b) { - extendStatics(d, b); - function __() { this.constructor = d; } - d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); - }; -})(); -var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) { - var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; - if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc); - else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; - return c > 3 && r && Object.defineProperty(target, key, r), r; -}; -Object.defineProperty(exports, "__esModule", { value: true }); -var _a = cc._decorator, ccclass = _a.ccclass, property = _a.property; -var ItemRender = /** @class */ (function (_super) { - __extends(ItemRender, _super); - function ItemRender() { - var _this = _super !== null && _super.apply(this, arguments) || this; - /**数据 */ - _this.data = null; - /**索引 0表示第一项*/ - _this.itemIndex = 0; - return _this; - } - /**数据改变时调用 */ - ItemRender.prototype.dataChanged = function () { - this.data.name = cc.fx.GameTool.subName(this.data.name, 6); - this.node.getChildByName("rankLab").getComponent(cc.Label).string = this.data.rank + ""; - this.node.getChildByName("nameLab").getComponent(cc.Label).string = this.data.name + ""; - this.node.getChildByName("totalLab").getComponent(cc.Label).string = this.data.total; - var timeTemp = cc.fx.GameTool.getTimeShenNong(this.data.time); - // this.node.getChildByName("timeLab").getComponent(cc.Label).string = timeTemp + ""; - this.node.getChildByName("rank").getChildByName("one").active = false; - this.node.getChildByName("rank").getChildByName("two").active = false; - this.node.getChildByName("rank").getChildByName("three").active = false; - if (this.data.rank == 1) { - this.node.getChildByName("rank").getChildByName("one").active = true; - this.node.getChildByName("rankLab").active = false; - } - else if (this.data.rank == 2) { - this.node.getChildByName("rank").getChildByName("two").active = true; - this.node.getChildByName("rankLab").active = false; - } - else if (this.data.rank == 3) { - this.node.getChildByName("rank").getChildByName("three").active = true; - this.node.getChildByName("rankLab").active = false; - } - else { - this.node.getChildByName("rankLab").active = true; - } - this.setPic(); - }; - ItemRender.prototype.setPic = function () { - var _this = this; - this.node.getChildByName("pic").getChildByName("icon").active = false; - this.node.getChildByName("pic").getChildByName("pic").active = false; - var self = this; - var url = this.data.pic; - fetch(url) - .then(function (response) { - return response.headers.get('Content-Length'); - }) - .then(function (errNo) { - // console.log(this.data.rank,'X-Info:', errNo); // 输出X-ErrNo的值 - if (errNo == "5093") { - // console.log(this.data.rank,"没头像"); - _this.node.getChildByName("pic").getChildByName("icon").active = true; - } - }) - .catch(function (error) { - // console.error('Error fetching X-Info:', error); - }); - cc.assetManager.loadRemote(url, { ext: '.png' }, function (err, texture) { - if (texture) { - _this.node.getChildByName("pic").getChildByName("pic").active = true; - var sprite = _this.node.getChildByName("pic").getChildByName("pic").getComponent(cc.Sprite); - sprite.spriteFrame = new cc.SpriteFrame(texture); - // console.log(this.data.rank,"设置头像成功",err); - } - else { - // console.log("设置头像失败",url); - console.log(err, texture); - } - }); - }; - ItemRender = __decorate([ - ccclass - ], ItemRender); - return ItemRender; -}(cc.Component)); -exports.default = ItemRender; - -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,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImFzc2V0c1xcU2NyaXB0XFxtb2R1bGVcXFJhbmtMaXN0XFxJdGVtUmVuZGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUdNLElBQUEsS0FBd0IsRUFBRSxDQUFDLFVBQVUsRUFBbkMsT0FBTyxhQUFBLEVBQUUsUUFBUSxjQUFrQixDQUFDO0FBRzVDO0lBQXdDLDhCQUFZO0lBQXBEO1FBQUEscUVBc0VDO1FBckVHLFFBQVE7UUFDRCxVQUFJLEdBQU8sSUFBSSxDQUFDO1FBQ3ZCLGNBQWM7UUFDUCxlQUFTLEdBQVUsQ0FBQyxDQUFDOztJQWtFaEMsQ0FBQztJQWhFRyxhQUFhO0lBQ04sZ0NBQVcsR0FBbEI7UUFDSSxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksR0FBRyxFQUFFLENBQUMsRUFBRSxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUMsQ0FBQyxDQUFDLENBQUM7UUFFMUQsSUFBSSxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsU0FBUyxDQUFDLENBQUMsWUFBWSxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLEdBQUcsRUFBRSxDQUFDO1FBQ3hGLElBQUksQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLFNBQVMsQ0FBQyxDQUFDLFlBQVksQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxHQUFHLEVBQUUsQ0FBQztRQUN4RixJQUFJLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxVQUFVLENBQUMsQ0FBQyxZQUFZLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQztRQUNyRixJQUFJLFFBQVEsR0FBRyxFQUFFLENBQUMs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QUEsS0FBSztZQUNSLGtEQUFrRDtRQUN0RCxDQUFDLENBQUMsQ0FBQztRQUNILEVBQUUsQ0FBQyxZQUFZLENBQUMsVUFBVSxDQUFDLEdBQUcsRUFBRSxFQUFDLEdBQUcsRUFBQyxNQUFNLEVBQUMsRUFBQyxVQUFDLEdBQUcsRUFBRSxPQUFvQjtZQUNuRSxJQUFHLE9BQU8sRUFBQztnQkFDUCxLQUFJLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxjQUFjLENBQUMsS0FBSyxDQUFDLENBQUMsTUFBTSxHQUFFLElBQUksQ0FBQztnQkFDbkUsSUFBSSxNQUFNLEdBQUcsS0FBSSxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsS0FBSyxDQUFDLENBQUMsY0FBYyxDQUFDLEtBQUssQ0FBQyxDQUFDLFlBQVksQ0FBQyxFQUFFLENBQUMsTUFBTSxDQUFDLENBQUM7Z0JBQzNGLE1BQU0sQ0FBQyxXQUFXLEdBQUcsSUFBSSxFQUFFLENBQUMsV0FBVyxDQUFDLE9BQU8sQ0FBQyxDQUFDO2dCQUNqRCw0Q0FBNEM7YUFDL0M7aUJBQ0c7Z0JBQ0EsNkJBQTZCO2dCQUM3QixPQUFPLENBQUMsR0FBRyxDQUFDLEdBQUcsRUFBQyxPQUFPLENBQUMsQ0FBQTthQUMzQjtRQUNMLENBQUMsQ0FBQyxDQUFBO0lBQ04sQ0FBQztJQW5FZ0IsVUFBVTtRQUQ5QixPQUFPO09BQ2EsVUFBVSxDQXNFOUI7SUFBRCxpQkFBQztDQXRFRCxBQXNFQyxDQXRFdUMsRUFBRSxDQUFDLFNBQVMsR0FzRW5EO2tCQXRFb0IsVUFBVSIsImZpbGUiOiIiLCJzb3VyY2VSb290IjoiLyIsInNvdXJjZXNDb250ZW50IjpbIlxyXG5pbXBvcnQgTGlzdCwgeyBMaXN0VHlwZSB9IGZyb20gXCIuL0xpc3RcIjtcclxuXHJcbmNvbnN0IHsgY2NjbGFzcywgcHJvcGVydHkgfSA9IGNjLl9kZWNvcmF0b3I7XHJcblxyXG5AY2NjbGFzc1xyXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBJdGVtUmVuZGVyIGV4dGVuZHMgY2MuQ29tcG9uZW50IHtcclxuICAgIC8qKuaVsOaNriAqL1xyXG4gICAgcHVibGljIGRhdGE6YW55ID0gbnVsbDtcclxuICAgIC8qKue0ouW8lSAw6KGo56S656ys5LiA6aG5Ki9cclxuICAgIHB1YmxpYyBpdGVtSW5kZXg6bnVtYmVyID0gMDsgICAgXHJcblxyXG4gICAgLyoq5pWw5o2u5pS55Y+Y5pe26LCD55SoICovXHJcbiAgICBwdWJsaWMgZGF0YUNoYW5nZWQoKXtcclxuICAgICAgICB0aGlzLmRhdGEubmFtZSA9IGNjLmZ4LkdhbWVUb29sLnN1Yk5hbWUodGhpcy5kYXRhLm5hbWUsNik7XHJcblxyXG4gICAgICAgIHRoaXMubm9kZS5nZXRDaGlsZEJ5TmFtZShcInJhbmtMYWJcIikuZ2V0Q29tcG9uZW50KGNjLkxhYmVsKS5zdHJpbmcgPSB0aGlzLmRhdGEucmFuayArIFwiXCI7XHJcbiAgICAgICAgdGhpcy5ub2RlLmdldENoaWxkQnlOYW1lKFwibmFtZUxhYlwiKS5nZXRDb21wb25lbnQoY2MuTGFiZWwpLnN0cmluZyA9IHRoaXMuZGF0YS5uYW1lICsgXCJcIjtcclxuICAgICAgICB0aGlzLm5vZGUuZ2V0Q2hpbGRCeU5hbWUoXCJ0b3RhbExhYlwiKS5nZXRDb21wb25lbnQoY2MuTGFiZWwpLnN0cmluZyA9IHRoaXMuZGF0YS50b3RhbDtcclxuICAgICAgICBsZXQgdGltZVRlbXAgPSBjYy5meC5HYW1lVG9vbC5nZXRUaW1lU2hlbk5vbmcodGhpcy5kYXRhLnRpbWUpO1xyXG4gICAgICAgIC8vIHRoaXMubm9kZS5nZXRDaGlsZEJ5TmFtZShcInRpbWVMYWJcIikuZ2V0Q29tcG9uZW50KGNjLkxhYmVsKS5zdHJpbmcgPSB0aW1lVGVtcCArIFwiXCI7XHJcbiAgICAgICAgdGhpcy5ub2RlLmdldENoaWxkQnlOYW1lKFwicmFua1wiKS5nZXRDaGlsZEJ5TmFtZShcIm9uZVwiKS5hY3RpdmUgPSBmYWxzZTtcclxuICAgICAgICB0aGlzLm5vZGUuZ2V0Q2hpbGRCeU5hbWUoXCJyYW5rXCIpLmdldENoaWxkQnlOYW1lKFwidHdvXCIpLmFjdGl2ZSA9IGZhbHNlO1xyXG4gICAgICAgIHRoaXMubm9kZS5nZXRDaGlsZEJ5TmFtZShcInJhbmtcIikuZ2V0Q2hpbGRCeU5hbWUoXCJ0aHJlZVwiKS5hY3RpdmUgPSBmYWxzZTtcclxuICAgICAgICBpZih0aGlzLmRhdGEucmFuayA9PSAxKXtcclxuICAgICAgICAgICAgdGhpcy5ub2RlLmdldENoaWxkQnlOYW1lKFwicmFua1wiKS5nZXRDaGlsZEJ5TmFtZShcIm9uZVwiKS5hY3RpdmUgPSB0cnVlO1xyXG4gICAgICAgICAgICB0aGlzLm5vZGUuZ2V0Q2hpbGRCeU5hbWUoXCJyYW5rTGFiXCIpLmFjdGl2ZSA9IGZhbHNlO1xyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIGlmKHRoaXMuZGF0YS5yYW5rID09IDIpe1xyXG4gICAgICAgICAgICB0aGlzLm5vZGUuZ2V0Q2hpbGRCeU5hbWUoXCJyYW5rXCIpLmdldENoaWxkQnlOYW1lKFwidHdvXCIpLmFjdGl2ZSA9IHRydWU7XHJcbiAgICAgICAgICAgIHRoaXMubm9kZS5nZXRDaGlsZEJ5TmFtZShcInJhbmtMYWJcIikuYWN0aXZlID0gZmFsc2U7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2UgaWYodGhpcy5kYXRhLnJhbmsgPT0gMyl7XHJcbiAgICAgICAgICAgIHRoaXMubm9kZS5nZXRDaGlsZEJ5TmFtZShcInJhbmtcIikuZ2V0Q2hpbGRCeU5hbWUoXCJ0aHJlZVwiKS5hY3RpdmUgPSB0cnVlO1xyXG4gICAgICAgICAgICB0aGlzLm5vZGUuZ2V0Q2hpbGRCeU5hbWUoXCJyYW5rTGFiXCIpLmFjdGl2ZSA9IGZhbHNlO1xyXG4gICAgICAgIH1lbHNle1xyXG4gICAgICAgICAgICB0aGlzLm5vZGUuZ2V0Q2hpbGRCeU5hbWUoXCJyYW5rTGFiXCIpLmFjdGl2ZSA9IHRydWU7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRoaXMuc2V0UGljKCk7XHJcbiAgICB9ICAgXHJcbiAgICBcclxuICAgIHB1YmxpYyBzZXRQaWMoKXtcclxuICAgICAgICB0aGlzLm5vZGUuZ2V0Q2hpbGRCeU5hbWUoXCJwaWNcIikuZ2V0Q2hpbGRCeU5hbWUoXCJpY29uXCIpLmFjdGl2ZSA9IGZhbHNlO1xyXG4gICAgICAgIHRoaXMubm9kZS5nZXRDaGlsZEJ5TmFtZShcInBpY1wiKS5nZXRDaGlsZEJ5TmFtZShcInBpY1wiKS5hY3RpdmU9IGZhbHNlO1xyXG4gICAgICAgIHZhciBzZWxmID0gdGhpcztcclxuICAgICAgICBsZXQgdXJsID0gdGhpcy5kYXRhLnBpYztcclxuICAgICAgICBmZXRjaCh1cmwpXHJcbiAgICAgICAgLnRoZW4ocmVzcG9uc2UgPT4ge1xyXG4gICAgICAgICAgICByZXR1cm4gcmVzcG9uc2UuaGVhZGVycy5nZXQoJ0NvbnRlbnQtTGVuZ3RoJyk7XHJcbiAgICAgICAgfSlcclxuXHJcbiAgICAgICAgLnRoZW4oZXJyTm8gPT4ge1xyXG4gICAgICAgICAgICAvLyBjb25zb2xlLmxvZyh0aGlzLmRhdGEucmFuaywnWC1JbmZvOicsIGVyck5vKTsgLy8g6L6T5Ye6WC1FcnJOb+eahOWAvFxyXG4gICAgICAgICAgICBpZihlcnJObyA9PSBcIjUwOTNcIil7XHJcbiAgICAgICAgICAgICAgICAvLyBjb25zb2xlLmxvZyh0aGlzLmRhdGEucmFuayxcIuayoeWktOWDj1wiKTtcclxuICAgICAgICAgICAgICAgIHRoaXMubm9kZS5nZXRDaGlsZEJ5TmFtZShcInBpY1wiKS5nZXRDaGlsZEJ5TmFtZShcImljb25cIikuYWN0aXZlID0gdHJ1ZTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH0pXHJcbiAgICAgICAgLmNhdGNoKGVycm9yID0+IHtcclxuICAgICAgICAgICAgLy8gY29uc29sZS5lcnJvcignRXJyb3IgZmV0Y2hpbmcgWC1JbmZvOicsIGVycm9yKTtcclxuICAgICAgICB9KTtcclxuICAgICAgICBjYy5hc3NldE1hbmFnZXIubG9hZFJlbW90ZSh1cmwsIHtleHQ6Jy5wbmcnfSwoZXJyLCB0ZXh0dXJlOmNjLlRleHR1cmUyRCkgPT4ge1xyXG4gICAgICAgICAgICBpZih0ZXh0dXJlKXtcclxuICAgICAgICAgICAgICAgIHRoaXMubm9kZS5nZXRDaGlsZEJ5TmFtZShcInBpY1wiKS5nZXRDaGlsZEJ5TmFtZShcInBpY1wiKS5hY3RpdmU9IHRydWU7XHJcbiAgICAgICAgICAgICAgICB2YXIgc3ByaXRlID0gdGhpcy5ub2RlLmdldENoaWxkQnlOYW1lKFwicGljXCIpLmdldENoaWxkQnlOYW1lKFwicGljXCIpLmdldENvbXBvbmVudChjYy5TcHJpdGUpO1xyXG4gICAgICAgICAgICAgICAgc3ByaXRlLnNwcml0ZUZyYW1lID0gbmV3IGNjLlNwcml0ZUZyYW1lKHRleHR1cmUpO1xyXG4gICAgICAgICAgICAgICAgLy8gY29uc29sZS5sb2codGhpcy5kYXRhLnJhbmssXCLorr7nva7lpLTlg4/miJDlip9cIixlcnIpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGVsc2V7XHJcbiAgICAgICAgICAgICAgICAvLyBjb25zb2xlLmxvZyhcIuiuvue9ruWktOWDj+Wksei0pVwiLHVybCk7XHJcbiAgICAgICAgICAgICAgICBjb25zb2xlLmxvZyhlcnIsdGV4dHVyZSlcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH0pXHJcbiAgICB9XHJcblxyXG5cclxufVxyXG4iXX0= -//------QC-SOURCE-SPLIT------ - - (function() { - var nodeEnv = typeof require !== 'undefined' && typeof process !== 'undefined'; - var __module = nodeEnv ? module : {exports:{}}; - var __filename = 'preview-scripts/assets/Script/module/Storage/Storage.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, '1002938VFRJd70RiAno9Iys', 'Storage'); -// Script/module/Storage/Storage.ts - -"use strict"; -Object.defineProperty(exports, "__esModule", { value: true }); -exports.StorageMessage = void 0; -//缓存浏览器数据 -var StorageMessage = { - getStorage: function (key) { - var result = null; - if (cc.sys.localStorage.getItem(key)) { - var result = cc.sys.localStorage.getItem(key); - } - if (result) { - result = JSON.parse(result); - } - return result; - }, - setStorage: function (key, value) { - //主动拉起分享接口 - var temp = JSON.stringify(value); - cc.sys.localStorage.setItem(key, temp); - }, - removeStorage: function (key) { - //主动删除消息接口 - if (cc.sys.localStorage.getItem(key)) { - cc.sys.localStorage.removeItem(key); - } - }, -}; -exports.StorageMessage = StorageMessage; - -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,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImFzc2V0c1xcU2NyaXB0XFxtb2R1bGVcXFN0b3JhZ2VcXFN0b3JhZ2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsU0FBUztBQUNULElBQUksY0FBYyxHQUFHO0lBQ2pCLFVBQVUsRUFBRyxVQUFTLEdBQUc7UUFDckIsSUFBSSxNQUFNLEdBQUcsSUFBSSxDQUFDO1FBQ2xCLElBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxZQUFZLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxFQUFDO1lBQ2xDLElBQUksTUFBTSxHQUFHLEVBQUUsQ0FBQyxHQUFHLENBQUMsWUFBWSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsQ0FBQztTQUMvQztRQUVELElBQUcsTUFBTSxFQUFDO1lBQ1IsTUFBTSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUM7U0FDN0I7UUFDRCxPQUFPLE1BQU0sQ0FBQztJQUNsQixDQUFDO0lBQ0QsVUFBVSxFQUFHLFVBQVMsR0FBRyxFQUFDLEtBQUs7UUFDM0IsVUFBVTtRQUNWLElBQUksSUFBSSxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDakMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxZQUFZLENBQUMsT0FBTyxDQUFDLEdBQUcsRUFBRSxJQUFJLENBQUMsQ0FBQTtJQUMxQyxDQUFDO0lBQ0QsYUFBYSxFQUFHLFVBQVMsR0FBRztRQUMxQixVQUFVO1FBQ1YsSUFBRyxFQUFFLENBQUMsR0FBRyxDQUFDLFlBQVksQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLEVBQUM7WUFDbEMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxZQUFZLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQyxDQUFBO1NBQ3BDO0lBQ0gsQ0FBQztDQUNKLENBQUM7QUFFTyx3Q0FBYyIsImZpbGUiOiIiLCJzb3VyY2VSb290IjoiLyIsInNvdXJjZXNDb250ZW50IjpbIi8v57yT5a2Y5rWP6KeI5Zmo5pWw5o2uXHJcbnZhciBTdG9yYWdlTWVzc2FnZSA9IHtcclxuICAgIGdldFN0b3JhZ2UgOiBmdW5jdGlvbihrZXkpe1xyXG4gICAgICAgIHZhciByZXN1bHQgPSBudWxsO1xyXG4gICAgICAgIGlmKGNjLnN5cy5sb2NhbFN0b3JhZ2UuZ2V0SXRlbShrZXkpKXtcclxuICAgICAgICAgIHZhciByZXN1bHQgPSBjYy5zeXMubG9jYWxTdG9yYWdlLmdldEl0ZW0oa2V5KTtcclxuICAgICAgICB9XHJcbiAgICAgICAgXHJcbiAgICAgICAgaWYocmVzdWx0KXtcclxuICAgICAgICAgIHJlc3VsdCA9IEpTT04ucGFyc2UocmVzdWx0KTtcclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIHJlc3VsdDtcclxuICAgIH0sXHJcbiAgICBzZXRTdG9yYWdlIDogZnVuY3Rpb24oa2V5LHZhbHVlKXtcclxuICAgICAgICAvL+S4u+WKqOaLiei1t+WIhuS6q+aOpeWPo1xyXG4gICAgICAgIHZhciB0ZW1wID0gSlNPTi5zdHJpbmdpZnkodmFsdWUpO1xyXG4gICAgICAgIGNjLnN5cy5sb2NhbFN0b3JhZ2Uuc2V0SXRlbShrZXksIHRlbXApXHJcbiAgICB9LFxyXG4gICAgcmVtb3ZlU3RvcmFnZSA6IGZ1bmN0aW9uKGtleSl7XHJcbiAgICAgIC8v5Li75Yqo5Yig6Zmk5raI5oGv5o6l5Y+jXHJcbiAgICAgIGlmKGNjLnN5cy5sb2NhbFN0b3JhZ2UuZ2V0SXRlbShrZXkpKXtcclxuICAgICAgICBjYy5zeXMubG9jYWxTdG9yYWdlLnJlbW92ZUl0ZW0oa2V5KVxyXG4gICAgICB9XHJcbiAgICB9LFxyXG59O1xyXG5cclxuZXhwb3J0IHsgU3RvcmFnZU1lc3NhZ2UgfTsiXX0= //------QC-SOURCE-SPLIT------ (function() { @@ -2958,350 +324,122 @@ cc._RF.pop(); cc._RF.push(module, '771a32aQBNGVKd3+66gyTKA', 'HttpUtil'); // Script/module/Crypto/HttpUtil.ts -"use strict"; -var __extends = (this && this.__extends) || (function () { - var extendStatics = function (d, b) { - extendStatics = Object.setPrototypeOf || - ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) || - function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; }; - return extendStatics(d, b); - }; - return function (d, b) { - extendStatics(d, b); - function __() { this.constructor = d; } - d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); - }; -})(); -var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) { - var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; - if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc); - else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; - return c > 3 && r && Object.defineProperty(target, key, r), r; -}; -Object.defineProperty(exports, "__esModule", { value: true }); -var _a = cc._decorator, ccclass = _a.ccclass, property = _a.property; -var CryptoJS = require("./crypto-js.min.js"); //引用AES源码js -var BASE_URL = "https://api.sparkus.cn"; -//只负责网络接口 次类只负责和后端交互,不负责处理数据 数据处理在GameTool -var HttpUtil = /** @class */ (function (_super) { - __extends(HttpUtil, _super); - function HttpUtil() { - return _super !== null && _super.apply(this, arguments) || this; - } - HttpUtil = __decorate([ - ccclass - ], HttpUtil); - return HttpUtil; -}(cc.Component)); -exports.default = HttpUtil; -// 响应拦截器 -// Rq.interceptors.response.use(responseHandler) -var config = { - gameId: "100012", - secretKey: "onnfPKJW", - EK: "hui231%1" -}; -var Crypoto = /** @class */ (function () { - function Crypoto() { - // 加密的向明值,自己根据项目实际情况定,需要跟后端开发保持一致 - this.keyHex = this.getHetKey(); - } - Crypoto.prototype.getHetKey = function () { - return CryptoJS.enc.Utf8.parse(config.EK); - }; - /** DES加密 */ - Crypoto.prototype.encryptByDES = function (message, secret) { - if (!message) { - return message; - } - var key = secret ? CryptoJS.enc.Utf8.parse(secret) : this.keyHex; - var encrypted = CryptoJS.DES.encrypt(message, key, { - mode: CryptoJS.mode.ECB, - padding: CryptoJS.pad.Pkcs7 - }); - return encrypted.toString(); - }; - /** DES解密 */ - Crypoto.prototype.decryptByDES = function (message, secret) { - var key = secret ? CryptoJS.enc.Utf8.parse(secret) : this.keyHex; - var decrypted = CryptoJS.DES.decrypt({ - ciphertext: CryptoJS.enc.Base64.parse(message) - }, key, { - mode: CryptoJS.mode.ECB, - padding: CryptoJS.pad.Pkcs7 - }); - return decrypted.toString(CryptoJS.enc.Utf8); - }; - /** hmacSHA256加密 */ - Crypoto.prototype.hmacSha256 = function (message, secret) { - var keyHex = secret ? CryptoJS.enc.Utf8.parse(secret) : this.keyHex; - var hash = CryptoJS.HmacSHA256(message, keyHex); - return hash.toString(); - }; - /** hmacSHA256验证 */ - Crypoto.prototype.verifyHmacSha256 = function (message, signature) { - var hash = CryptoJS.HmacSHA256(message, this.keyHex); - return hash.toString() === signature; - }; - /** CBC加密 */ - Crypoto.prototype.encryptCBC = function (word) { - if (!word) { - return word; - } - var srcs = CryptoJS.enc.Utf8.parse(word); - var encrypted = CryptoJS.AES.encrypt(srcs, this.keyHex, { - iv: this.keyHex, - mode: CryptoJS.mode.CBC, - padding: CryptoJS.pad.ZeroPadding - }); - return encrypted.toString(); - }; - /** CBC解密 */ - Crypoto.prototype.decryptCBC = function (word) { - if (!word) { - return word; - } - var encryptedHexStr = CryptoJS.enc.Hex.parse(word); - var srcs = CryptoJS.enc.Base64.stringify(encryptedHexStr); - var decrypt = CryptoJS.AES.decrypt(srcs, this.keyHex, { - iv: this.keyHex, - mode: CryptoJS.mode.CBC, - padding: CryptoJS.pad.ZeroPadding - }); - var decryptedStr = decrypt.toString(CryptoJS.enc.Utf8); - return decryptedStr.toString(); - }; - return Crypoto; -}()); -var fxCry = new Crypoto(); - -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,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImFzc2V0c1xcU2NyaXB0XFxtb2R1bGVcXENyeXB0b1xcSHR0cFV0aWwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQ00sSUFBQSxLQUFzQixFQUFFLENBQUMsVUFBVSxFQUFsQyxPQUFPLGFBQUEsRUFBRSxRQUFRLGNBQWlCLENBQUM7QUFDMUMsNkNBQWdELENBQUUsV0FBVztBQUU3RCxJQUFNLFFBQVEsR0FBRyx3QkFBd0IsQ0FBQztBQUMxQywwQ0FBMEM7QUFFMUM7SUFBc0MsNEJBQVk7SUFBbEQ7O0lBR0EsQ0FBQztJQUhvQixRQUFRO1FBRDVCLE9BQU87T0FDYSxRQUFRLENBRzVCO0lBQUQsZUFBQztDQUhELEFBR0MsQ0FIcUMsRUFBRSxDQUFDLFNBQVMsR0FHakQ7a0JBSG9CLFFBQVE7QUFNN0IsUUFBUTtBQUNSLGdEQUFnRDtBQUNoRCxJQUFNLE1BQU0sR0FBRztJQUNiLE1BQU0sRUFBRSxRQUFRO0lBQ2hCLFNBQVMsRUFBRSxVQUFVO0lBQ3JCLEVBQUUsRUFBQyxVQUFVO0NBQ2QsQ0FBQztBQVFGO0lBQUE7UUFDSSxpQ0FBaUM7UUFDekIsV0FBTSxHQUFHLElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQTtJQTJFckMsQ0FBQztJQTFFVywyQkFBUyxHQUFqQjtRQUNJLE9BQU8sUUFBUSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUM5QyxDQUFDO0lBRUQsWUFBWTtJQUNaLDhCQUFZLEdBQVosVUFBYSxPQUFlLEVBQUUsTUFBZTtRQUMzQyxJQUFHLENBQUMsT0FBTyxFQUFFO1lBQ1gsT0FBTyxPQUFPLENBQUE7U0FDZjtRQUNELElBQU0sR0FBRyxHQUFHLE1BQU0sQ0FBQSxDQUFDLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFBLENBQUMsQ0FBQyxJQUFJ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QUcsQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUFDLGVBQWUsQ0FBQyxDQUFDO1FBQzVELElBQU0sT0FBTyxHQUFHLFFBQVEsQ0FBQyxHQUFHLENBQUMsT0FBTyxDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsTUFBTSxFQUFFO1lBQ3BELEVBQUUsRUFBRSxJQUFJLENBQUMsTUFBTTtZQUNmLElBQUksRUFBRSxRQUFRLENBQUMsSUFBSSxDQUFDLEdBQUc7WUFDdkIsT0FBTyxFQUFFLFFBQVEsQ0FBQyxHQUFHLENBQUMsV0FBVztTQUNwQyxDQUFDLENBQUM7UUFDSCxJQUFNLFlBQVksR0FBRyxPQUFPLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDekQsT0FBTyxZQUFZLENBQUMsUUFBUSxFQUFFLENBQUM7SUFDbkMsQ0FBQztJQUNMLGNBQUM7QUFBRCxDQTdFQSxBQTZFQyxJQUFBO0FBQ0QsSUFBTSxLQUFLLEdBQUcsSUFBSSxPQUFPLEVBQUUsQ0FBQyIsImZpbGUiOiIiLCJzb3VyY2VSb290IjoiLyIsInNvdXJjZXNDb250ZW50IjpbIlxyXG5jb25zdCB7Y2NjbGFzcywgcHJvcGVydHl9ID0gY2MuX2RlY29yYXRvcjtcclxuaW1wb3J0IENyeXB0b0pTID0gcmVxdWlyZSgnLi9jcnlwdG8tanMubWluLmpzJyk7ICAvL+W8leeUqEFFU+a6kOeggWpzXHJcblxyXG5jb25zdCBCQVNFX1VSTCA9IFwiaHR0cHM6Ly9hcGkuc3Bhcmt1cy5jblwiO1xyXG4vL+WPqui0n+i0o+e9kee7nOaOpeWPoyDmrKHnsbvlj6rotJ/otKPlkozlkI7nq6/kuqTkupLvvIzkuI3otJ/otKPlpITnkIbmlbDmja4g5pWw5o2u5aSE55CG5ZyoR2FtZVRvb2xcclxuQGNjY2xhc3NcclxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgSHR0cFV0aWwgZXh0ZW5kcyBjYy5Db21wb25lbnQge1xyXG4gICAgLy/mjpLooYzmppxcclxuXHJcbn1cclxuXHJcblxyXG4vLyDlk43lupTmi6bmiKrlmahcclxuLy8gUnEuaW50ZXJjZXB0b3JzLnJlc3BvbnNlLnVzZShyZXNwb25zZUhhbmRsZXIpXHJcbmNvbnN0IGNvbmZpZyA9IHtcclxuICBnYW1lSWQ6IFwiMTAwMDEyXCIsXHJcbiAgc2VjcmV0S2V5OiBcIm9ubmZQS0pXXCIsXHJcbiAgRUs6XCJodWkyMzElMVwiXHJcbn07XHJcblxyXG5pbnRlcmZhY2UgQ3J5cG90b1R5cGUge1xyXG4gIGVuY3J5cHRCeURFUzogYW55XHJcbiAgZGVjcnlwdEJ5REVTOiBhbnlcclxuICBobWFjU2hhMjU2OiBhbnlcclxufVxyXG4gXHJcbmNsYXNzIENyeXBvdG8gaW1wbGVtZW50cyBDcnlwb3RvVHlwZSB7XHJcbiAgICAvLyDliqDlr4bnmoTlkJHmmI7lgLzvvIzoh6rlt7HmoLnmja7pobnnm67lrp7pmYXmg4XlhrXlrprvvIzpnIDopoHot5/lkI7nq6/lvIDlj5Hkv53mjIHkuIDoh7RcclxuICAgIHByaXZhdGUga2V5SGV4ID0gdGhpcy5nZXRIZXRLZXkoKVxyXG4gICAgcHJpdmF0ZSBnZXRIZXRLZXkoKSB7XHJcbiAgICAgICAgcmV0dXJuIENyeXB0b0pTLmVuYy5VdGY4LnBhcnNlKGNvbmZpZy5FSyk7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqIERFU+WKoOWvhiAqL1xyXG4gICAgZW5jcnlwdEJ5REVTKG1lc3NhZ2U6IHN0cmluZywgc2VjcmV0Pzogc3RyaW5nKSB7XHJcbiAgICAgIGlmKCFtZXNzYWdlKSB7XHJcbiAgICAgICAgcmV0dXJuIG1lc3NhZ2VcclxuICAgICAgfVxyXG4gICAgICBjb25zdCBrZXkgPSBzZWNyZXQ/IENyeXB0b0pTLmVuYy5VdGY4LnBhcnNlKHNlY3JldCk6IHRoaXMua2V5SGV4XHJcbiAgICAgIGNvbnN0IGVuY3J5cHRlZCA9IENyeXB0b0pTLkRFUy5lbmNyeXB0KG1lc3NhZ2UsIGtleSwge1xyXG4gICAgICAgIG1vZGU6IENyeXB0b0pTLm1vZGUuRUNCLFxyXG4gICAgICAgIHBhZGRpbmc6IENyeXB0b0pTLnBhZC5Qa2NzN1xyXG4gICAgICB9KTtcclxuICAgICAgcmV0dXJuIGVuY3J5cHRlZC50b1N0cmluZygpXHJcbiAgICB9XHJcblxyXG4gICAgLyoqIERFU+ino+WvhiAqL1xyXG4gICAgZGVjcnlwdEJ5REVTKG1lc3NhZ2U6IHN0cmluZywgc2VjcmV0Pzogc3RyaW5nKSB7XHJcbiAgICAgIGNvbnN0IGtleSA9IHNlY3JldD8gQ3J5cHRvSlMuZW5jLlV0ZjgucGFyc2Uoc2VjcmV0KTogdGhpcy5rZXlIZXhcclxuXHJcbiAgICAgIGNvbnN0IGRlY3J5cHRlZCA9IENyeXB0b0pTLkRFUy5kZWNyeXB0KHtcclxuICAgICAgICBjaXBoZXJ0ZXh0OiBDcnlwdG9KUy5lbmMuQmFzZTY0LnBhcnNlKG1lc3NhZ2UpXHJcbiAgICAgIH0sIGtleSwge1xyXG4gICAgICAgIG1vZGU6IENyeXB0b0pTLm1vZGUuRUNCLFxyXG4gICAgICAgIHBhZGRpbmc6IENyeXB0b0pTLnBhZC5Qa2NzN1xyXG4gICAgICB9KVxyXG5cclxuICAgICAgcmV0dXJuIGRlY3J5cHRlZC50b1N0cmluZyhDcnlwdG9KUy5lbmMuVXRmOClcclxuICAgIH1cclxuXHJcbiAgICAvKiogaG1hY1NIQTI1NuWKoOWvhiAqL1xyXG4gICAgaG1hY1NoYTI1NihtZXNzYWdlOiBzdHJpbmcsIHNlY3JldD86IHN0cmluZykge1xyXG4gICAgICBjb25zdCBrZXlIZXggPSBzZWNyZXQ/IENyeXB0b0pTLmVuYy5VdGY4LnBhcnNlKHNlY3JldCk6IHRoaXMua2V5SGV4XHJcbiAgICAgIFxyXG4gICAgICBjb25zdCBoYXNoID0gQ3J5cHRvSlMuSG1hY1NIQTI1NihtZXNzYWdlLCBrZXlIZXgpO1xyXG4gICAgICByZXR1cm4gaGFzaC50b1N0cmluZygpXHJcbiAgICB9XHJcblxyXG4gICAgLyoqIGhtYWNTSEEyNTbpqozor4EgKi9cclxuICAgIHZlcmlmeUhtYWNTaGEyNTYobWVzc2FnZTogc3RyaW5nLCBzaWduYXR1cmU6IHN0cmluZykge1xyXG4gICAgICBjb25zdCBoYXNoID0gQ3J5cHRvSlMuSG1hY1NIQTI1NihtZXNzYWdlLCB0aGlzLmtleUhleCk7XHJcbiAgICAgIHJldHVybiBoYXNoLnRvU3RyaW5nKCkgPT09IHNpZ25hdHVyZVxyXG4gICAgfVxyXG4gXHJcbiAgICAvKiogQ0JD5Yqg5a+GICovXHJcbiAgICBlbmNyeXB0Q0JDKHdvcmQ6IHN0cmluZykge1xyXG4gICAgICAgIGlmICghd29yZCkge1xyXG4gICAgICAgICAgICByZXR1cm4gd29yZDtcclxuICAgICAgICB9XHJcbiAgICAgICAgY29uc3Qgc3JjcyA9IENyeXB0b0pTLmVuYy5VdGY4LnBhcnNlKHdvcmQpO1xyXG4gICAgICAgIGNvbnN0IGVuY3J5cHRlZCA9IENyeXB0b0pTLkFFUy5lbmNyeXB0KHNyY3MsIHRoaXMua2V5SGV4LCB7XHJcbiAgICAgICAgICAgIGl2OiB0aGlzLmtleUhleCxcclxuICAgICAgICAgICAgbW9kZTogQ3J5cHRvSlMubW9kZS5DQkMsXHJcbiAgICAgICAgICAgIHBhZGRpbmc6IENyeXB0b0pTLnBhZC5aZXJvUGFkZGluZ1xyXG4gICAgICAgIH0pO1xyXG4gICAgICAgIHJldHVybiBlbmNyeXB0ZWQudG9TdHJpbmcoKTsgXHJcbiAgICB9XHJcbiBcclxuICAgIC8qKiBDQkPop6Plr4YgKi9cclxuICAgIGRlY3J5cHRDQkMod29yZDogc3RyaW5nKSB7XHJcbiAgICAgICAgaWYgKCF3b3JkKSB7XHJcbiAgICAgICAgICAgIHJldHVybiB3b3JkO1xyXG4gICAgICAgIH1cclxuICAgICAgICBjb25zdCBlbmNyeXB0ZWRIZXhTdHIgPSBDcnlwdG9KUy5lbmMuSGV4LnBhcnNlKHdvcmQpO1xyXG4gICAgICAgIGNvbnN0IHNyY3MgPSBDcnlwdG9KUy5lbmMuQmFzZTY0LnN0cmluZ2lmeShlbmNyeXB0ZWRIZXhTdHIpO1xyXG4gICAgICAgIGNvbnN0IGRlY3J5cHQgPSBDcnlwdG9KUy5BRVMuZGVjcnlwdChzcmNzLCB0aGlzLmtleUhleCwge1xyXG4gICAgICAgICAgICBpdjogdGhpcy5rZXlIZXgsXHJcbiAgICAgICAgICAgIG1vZGU6IENyeXB0b0pTLm1vZGUuQ0JDLFxyXG4gICAgICAgICAgICBwYWRkaW5nOiBDcnlwdG9KUy5wYWQuWmVyb1BhZGRpbmdcclxuICAgICAgICB9KTtcclxuICAgICAgICBjb25zdCBkZWNyeXB0ZWRTdHIgPSBkZWNyeXB0LnRvU3RyaW5nKENyeXB0b0pTLmVuYy5VdGY4KTtcclxuICAgICAgICByZXR1cm4gZGVjcnlwdGVkU3RyLnRvU3RyaW5nKCk7XHJcbiAgICB9XHJcbn1cclxuY29uc3QgZnhDcnkgPSBuZXcgQ3J5cG90bygpO1xyXG5cclxuXHJcblxyXG5cclxuXHJcblxyXG5cclxuXHJcbiJdfQ== ->>>>>>> 0a31a7a5abc2c505bf743aa596e1c765a0405152 -//------QC-SOURCE-SPLIT------ - - (function() { - var nodeEnv = typeof require !== 'undefined' && typeof process !== 'undefined'; - var __module = nodeEnv ? module : {exports:{}}; - var __filename = 'preview-scripts/assets/Script/GameScene.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, 'e8b235WjRBErajwLmN8xFUz', 'GameScene'); -// Script/GameScene.js - - -// cc.Class({ -// extends: cc.Component, -// properties: { -// localTest: { -// default: false, -// tooltip: '本地测试时勾选,避免tz_url和Configure报错,提交前勾掉' -// }, -// clientTest: { -// default: false, -// tooltip: '客户端测试时勾选,展示版本标记方便测试区分,上线前勾掉' -// }, -// clientTestVersion: { -// default: '', -// tooltip: '版本标记' -// }, -// testVersion: cc.Label, -// score: cc.Label, -// double_hit: cc.Node, -// add: cc.Node, -// add2: cc.Node, -// double_title: cc.Node, -// count_time: cc.Node, -// beginNode: cc.Node, -// ball_nomal: [cc.SpriteFrame], -// bg_nomal: [cc.SpriteFrame], -// ball_light: [cc.SpriteFrame], -// kuang_Frame: [cc.SpriteFrame], -// daojishi: cc.Label, -// pause_anniu: cc.Sprite, -// mask: cc.Node, - -// flashUI: { -// default: null, -// type: cc.SpriteAtlas -// }, -// }, - -// onLoad() { - -// }, - -// update(dt) { - -// }, - -// }); -"use strict"; - -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,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImFzc2V0c1xcU2NyaXB0XFxHYW1lU2NlbmUuanMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7OztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUdBOztBQUVBOztBQUVBOztBQUVBO0FBQUEiLCJzb3VyY2VSb290IjoiLyIsInNvdXJjZXNDb250ZW50IjpbIlxyXG4vLyBjYy5DbGFzcyh7XHJcbi8vICAgICBleHRlbmRzOiBjYy5Db21wb25lbnQsXHJcbi8vICAgICBwcm9wZXJ0aWVzOiB7XHJcbi8vICAgICAgICAgbG9jYWxUZXN0OiB7XHJcbi8vICAgICAgICAgICAgIGRlZmF1bHQ6IGZhbHNlLFxyXG4vLyAgICAgICAgICAgICB0b29sdGlwOiAn5pys5Zyw5rWL6K+V5pe25Yu+6YCJ77yM6YG/5YWNdHpfdXJs5ZKMQ29uZmlndXJl5oql6ZSZ77yM5o+Q5Lqk5YmN5Yu+5o6JJ1xyXG4vLyAgICAgICAgIH0sXHJcbi8vICAgICAgICAgY2xpZW50VGVzdDoge1xyXG4vLyAgICAgICAgICAgICBkZWZhdWx0OiBmYWxzZSxcclxuLy8gICAgICAgICAgICAgdG9vbHRpcDogJ+WuouaIt+err+a1i+ivleaXtuWLvumAie+8jOWxleekuueJiOacrOagh+iusOaWueS+v+a1i+ivleWMuuWIhu+8jOS4iue6v+WJjeWLvuaOiSdcclxuLy8gICAgICAgICB9LFxyXG4vLyAgICAgICAgIGNsaWVudFRlc3RWZXJzaW9uOiB7XHJcbi8vICAgICAgICAgICAgIGRlZmF1bHQ6ICcnLFxyXG4vLyAgICAgICAgICAgICB0b29sdGlwOiAn54mI5pys5qCH6K6wJ1xyXG4vLyAgICAgICAgIH0sXHJcbi8vICAgICAgICAgdGVzdFZlcnNpb246IGNjLkxhYmVsLFxyXG4vLyAgICAgICAgIHNjb3JlOiBjYy5MYWJlbCxcclxuLy8gICAgICAgICBkb3VibGVfaGl0OiBjYy5Ob2RlLFxyXG4vLyAgICAgICAgIGFkZDogY2MuTm9kZSxcclxuLy8gICAgICAgICBhZGQyOiBjYy5Ob2RlLFxyXG4vLyAgICAgICAgIGRvdWJsZV90aXRsZTogY2MuTm9kZSxcclxuLy8gICAgICAgICBjb3VudF90aW1lOiBjYy5Ob2RlLFxyXG4vLyAgICAgICAgIGJlZ2luTm9kZTogY2MuTm9kZSxcclxuLy8gICAgICAgICBiYWxsX25vbWFsOiBbY2MuU3ByaXRlRnJhbWVdLFxyXG4vLyAgICAgICAgIGJnX25vbWFsOiBbY2MuU3ByaXRlRnJhbWVdLFxyXG4vLyAgICAgICAgIGJhbGxfbGlnaHQ6IFtjYy5TcHJpdGVGcmFtZV0sXHJcbi8vICAgICAgICAga3VhbmdfRnJhbWU6IFtjYy5TcHJpdGVGcmFtZV0sXHJcbi8vICAgICAgICAgZGFvamlzaGk6IGNjLkxhYmVsLFxyXG4vLyAgICAgICAgIHBhdXNlX2Fubml1OiBjYy5TcHJpdGUsXHJcbi8vICAgICAgICAgbWFzazogY2MuTm9kZSxcclxuXHJcbi8vICAgICAgICAgZmxhc2hVSToge1xyXG4vLyAgICAgICAgICAgICBkZWZhdWx0OiBudWxsLFxyXG4vLyAgICAgICAgICAgICB0eXBlOiBjYy5TcHJpdGVBdGxhc1xyXG4vLyAgICAgICAgIH0sXHJcbi8vICAgICB9LFxyXG5cclxuLy8gICAgIG9uTG9hZCgpIHtcclxuXHJcblxyXG4vLyAgICAgfSxcclxuXHJcbi8vICAgICB1cGRhdGUoZHQpIHtcclxuXHJcbi8vICAgICB9LFxyXG5cclxuLy8gfSk7Il19 -//------QC-SOURCE-SPLIT------ - - (function() { - var nodeEnv = typeof require !== 'undefined' && typeof process !== 'undefined'; - var __module = nodeEnv ? module : {exports:{}}; -<<<<<<< HEAD - var __filename = 'preview-scripts/assets/Script/module/Crypto/HttpUtil.js'; -======= - var __filename = 'preview-scripts/assets/Script/ControlManager.js'; ->>>>>>> 0a31a7a5abc2c505bf743aa596e1c765a0405152 - 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"; -<<<<<<< HEAD -cc._RF.push(module, '771a32aQBNGVKd3+66gyTKA', 'HttpUtil'); -// Script/module/Crypto/HttpUtil.ts - -"use strict"; -var __extends = (this && this.__extends) || (function () { - var extendStatics = function (d, b) { - extendStatics = Object.setPrototypeOf || - ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) || - function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; }; - return extendStatics(d, b); - }; - return function (d, b) { - extendStatics(d, b); - function __() { this.constructor = d; } - d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); - }; -})(); -var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) { - var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; - if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc); - else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; - return c > 3 && r && Object.defineProperty(target, key, r), r; -}; -Object.defineProperty(exports, "__esModule", { value: true }); -var _a = cc._decorator, ccclass = _a.ccclass, property = _a.property; -var CryptoJS = require("./crypto-js.min.js"); //引用AES源码js -var BASE_URL = "https://api.sparkus.cn"; -//只负责网络接口 次类只负责和后端交互,不负责处理数据 数据处理在GameTool -var HttpUtil = /** @class */ (function (_super) { - __extends(HttpUtil, _super); - function HttpUtil() { - return _super !== null && _super.apply(this, arguments) || this; - } - HttpUtil = __decorate([ - ccclass - ], HttpUtil); - return HttpUtil; -}(cc.Component)); -exports.default = HttpUtil; -// 响应拦截器 -// Rq.interceptors.response.use(responseHandler) -var config = { - gameId: "100012", - secretKey: "onnfPKJW", - EK: "hui231%1" -}; -var Crypoto = /** @class */ (function () { - function Crypoto() { - // 加密的向明值,自己根据项目实际情况定,需要跟后端开发保持一致 - this.keyHex = this.getHetKey(); - } - Crypoto.prototype.getHetKey = function () { - return CryptoJS.enc.Utf8.parse(config.EK); - }; - /** DES加密 */ - Crypoto.prototype.encryptByDES = function (message, secret) { - if (!message) { - return message; - } - var key = secret ? CryptoJS.enc.Utf8.parse(secret) : this.keyHex; - var encrypted = CryptoJS.DES.encrypt(message, key, { - mode: CryptoJS.mode.ECB, - padding: CryptoJS.pad.Pkcs7 - }); - return encrypted.toString(); - }; - /** DES解密 */ - Crypoto.prototype.decryptByDES = function (message, secret) { - var key = secret ? CryptoJS.enc.Utf8.parse(secret) : this.keyHex; - var decrypted = CryptoJS.DES.decrypt({ - ciphertext: CryptoJS.enc.Base64.parse(message) - }, key, { - mode: CryptoJS.mode.ECB, - padding: CryptoJS.pad.Pkcs7 - }); - return decrypted.toString(CryptoJS.enc.Utf8); - }; - /** hmacSHA256加密 */ - Crypoto.prototype.hmacSha256 = function (message, secret) { - var keyHex = secret ? CryptoJS.enc.Utf8.parse(secret) : this.keyHex; - var hash = CryptoJS.HmacSHA256(message, keyHex); - return hash.toString(); - }; - /** hmacSHA256验证 */ - Crypoto.prototype.verifyHmacSha256 = function (message, signature) { - var hash = CryptoJS.HmacSHA256(message, this.keyHex); - return hash.toString() === signature; - }; - /** CBC加密 */ - Crypoto.prototype.encryptCBC = function (word) { - if (!word) { - return word; - } - var srcs = CryptoJS.enc.Utf8.parse(word); - var encrypted = CryptoJS.AES.encrypt(srcs, this.keyHex, { - iv: this.keyHex, - mode: CryptoJS.mode.CBC, - padding: CryptoJS.pad.ZeroPadding - }); - return encrypted.toString(); - }; - /** CBC解密 */ - Crypoto.prototype.decryptCBC = function (word) { - if (!word) { - return word; - } - var encryptedHexStr = CryptoJS.enc.Hex.parse(word); - var srcs = CryptoJS.enc.Base64.stringify(encryptedHexStr); - var decrypt = CryptoJS.AES.decrypt(srcs, this.keyHex, { - iv: this.keyHex, - mode: CryptoJS.mode.CBC, - padding: CryptoJS.pad.ZeroPadding - }); - var decryptedStr = decrypt.toString(CryptoJS.enc.Utf8); - return decryptedStr.toString(); - }; - return Crypoto; -}()); -var fxCry = new Crypoto(); +"use strict"; +var __extends = (this && this.__extends) || (function () { + var extendStatics = function (d, b) { + extendStatics = Object.setPrototypeOf || + ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) || + function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; }; + return extendStatics(d, b); + }; + return function (d, b) { + extendStatics(d, b); + function __() { this.constructor = d; } + d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); + }; +})(); +var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) { + var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; + if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc); + else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; + return c > 3 && r && Object.defineProperty(target, key, r), r; +}; +Object.defineProperty(exports, "__esModule", { value: true }); +var _a = cc._decorator, ccclass = _a.ccclass, property = _a.property; +var CryptoJS = require("./crypto-js.min.js"); //引用AES源码js +var BASE_URL = "https://api.sparkus.cn"; +//只负责网络接口 次类只负责和后端交互,不负责处理数据 数据处理在GameTool +var HttpUtil = /** @class */ (function (_super) { + __extends(HttpUtil, _super); + function HttpUtil() { + return _super !== null && _super.apply(this, arguments) || this; + } + HttpUtil = __decorate([ + ccclass + ], HttpUtil); + return HttpUtil; +}(cc.Component)); +exports.default = HttpUtil; +// 响应拦截器 +// Rq.interceptors.response.use(responseHandler) +var config = { + gameId: "100012", + secretKey: "onnfPKJW", + EK: "hui231%1" +}; +var Crypoto = /** @class */ (function () { + function Crypoto() { + // 加密的向明值,自己根据项目实际情况定,需要跟后端开发保持一致 + this.keyHex = this.getHetKey(); + } + Crypoto.prototype.getHetKey = function () { + return CryptoJS.enc.Utf8.parse(config.EK); + }; + /** DES加密 */ + Crypoto.prototype.encryptByDES = function (message, secret) { + if (!message) { + return message; + } + var key = secret ? CryptoJS.enc.Utf8.parse(secret) : this.keyHex; + var encrypted = CryptoJS.DES.encrypt(message, key, { + mode: CryptoJS.mode.ECB, + padding: CryptoJS.pad.Pkcs7 + }); + return encrypted.toString(); + }; + /** DES解密 */ + Crypoto.prototype.decryptByDES = function (message, secret) { + var key = secret ? CryptoJS.enc.Utf8.parse(secret) : this.keyHex; + var decrypted = CryptoJS.DES.decrypt({ + ciphertext: CryptoJS.enc.Base64.parse(message) + }, key, { + mode: CryptoJS.mode.ECB, + padding: CryptoJS.pad.Pkcs7 + }); + return decrypted.toString(CryptoJS.enc.Utf8); + }; + /** hmacSHA256加密 */ + Crypoto.prototype.hmacSha256 = function (message, secret) { + var keyHex = secret ? CryptoJS.enc.Utf8.parse(secret) : this.keyHex; + var hash = CryptoJS.HmacSHA256(message, keyHex); + return hash.toString(); + }; + /** hmacSHA256验证 */ + Crypoto.prototype.verifyHmacSha256 = function (message, signature) { + var hash = CryptoJS.HmacSHA256(message, this.keyHex); + return hash.toString() === signature; + }; + /** CBC加密 */ + Crypoto.prototype.encryptCBC = function (word) { + if (!word) { + return word; + } + var srcs = CryptoJS.enc.Utf8.parse(word); + var encrypted = CryptoJS.AES.encrypt(srcs, this.keyHex, { + iv: this.keyHex, + mode: CryptoJS.mode.CBC, + padding: CryptoJS.pad.ZeroPadding + }); + return encrypted.toString(); + }; + /** CBC解密 */ + Crypoto.prototype.decryptCBC = function (word) { + if (!word) { + return word; + } + var encryptedHexStr = CryptoJS.enc.Hex.parse(word); + var srcs = CryptoJS.enc.Base64.stringify(encryptedHexStr); + var decrypt = CryptoJS.AES.decrypt(srcs, this.keyHex, { + iv: this.keyHex, + mode: CryptoJS.mode.CBC, + padding: CryptoJS.pad.ZeroPadding + }); + var decryptedStr = decrypt.toString(CryptoJS.enc.Utf8); + return decryptedStr.toString(); + }; + return Crypoto; +}()); +var fxCry = new Crypoto(); cc._RF.pop(); } @@ -3327,187 +465,173 @@ cc._RF.pop(); 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, 'd60cfrGbXBLBbplLoT7TBn7', 'TmoTiledLayer'); -// Script/TmoTiledLayer.js - -"use strict"; - -exports.__esModule = true; -exports["default"] = void 0; - -// Learn cc.Class: -// - https://docs.cocos.com/creator/manual/en/scripting/class.html -// Learn Attribute: -// - https://docs.cocos.com/creator/manual/en/scripting/reference/attributes.html -// Learn life-cycle callbacks: -// - https://docs.cocos.com/creator/manual/en/scripting/life-cycle-callbacks.html -var _mat4_temp = cc.mat4(); - -var _vec2_temp = cc.v2(); - -var _vec2_temp2 = cc.v2(); - -var _default = cc.Class({ - "extends": cc.TiledLayer, - // 此处修改 增加firstTmxLayer参数 - _init: function _init(layerInfo, mapInfo, tilesets, textures, texGrids, tiledMap, firstTmxLayer) { - // 修改结束 - this._cullingDirty = true; - this._layerInfo = layerInfo; - this._mapInfo = mapInfo; // 此处修改 保存firstTmxLayer参数 - - this._firstTmxLayer = firstTmxLayer; - this._tiledMap = tiledMap; // 修改结束 - - var size = layerInfo._layerSize; // layerInfo - - this._layerName = layerInfo.name; - this._tiles = layerInfo._tiles; - this._properties = layerInfo.properties; - this._layerSize = size; - this._minGID = layerInfo._minGID; - this._maxGID = layerInfo._maxGID; - this._opacity = layerInfo._opacity; - this._renderOrder = mapInfo.renderOrder; - this._staggerAxis = mapInfo.getStaggerAxis(); - this._staggerIndex = mapInfo.getStaggerIndex(); - this._hexSideLength = mapInfo.getHexSideLength(); - this._animations = mapInfo.getTileAnimations(); // tilesets - - this._tilesets = tilesets; // textures - - this._textures = textures; // grid texture - - this._texGrids = texGrids; // mapInfo - - this._layerOrientation = mapInfo.orientation; - this._mapTileSize = mapInfo.getTileSize(); - var maptw = this._mapTileSize.width; - var mapth = this._mapTileSize.height; - var layerW = this._layerSize.width; - var layerH = this._layerSize.height; - - if (this._layerOrientation === cc.TiledMap.Orientation.HEX) { - // handle hex map - var TiledMap = cc.TiledMap; - var StaggerAxis = TiledMap.StaggerAxis; - var StaggerIndex = TiledMap.StaggerIndex; - var width = 0, - height = 0; - this._odd_even = this._staggerIndex === StaggerIndex.STAGGERINDEX_ODD ? 1 : -1; - - if (this._staggerAxis === StaggerAxis.STAGGERAXIS_X) { - this._diffX1 = (maptw - this._hexSideLength) / 2; - this._diffY1 = 0; - height = mapth * (layerH + 0.5); - width = (maptw + this._hexSideLength) * Math.floor(layerW / 2) + maptw * (layerW % 2); - } else { - this._diffX1 = 0; - this._diffY1 = (mapth - this._hexSideLength) / 2; - width = maptw * (layerW + 0.5); - height = (mapth + this._hexSideLength) * Math.floor(layerH / 2) + mapth * (layerH % 2); - } - - this.node.setContentSize(width, height); - } else if (this._layerOrientation === cc.TiledMap.Orientation.ISO) { - var wh = layerW + layerH; - this.node.setContentSize(maptw * 0.5 * wh, mapth * 0.5 * wh); - } else { - this.node.setContentSize(layerW * maptw, layerH * mapth); - } // offset (after layer orientation is set); - - - this._offset = cc.v2(layerInfo.offset.x, -layerInfo.offset.y); - this._useAutomaticVertexZ = false; - this._vertexZvalue = 0; - - this._syncAnchorPoint(); - - this._prepareToRender(); - }, - _updateCulling: function _updateCulling() { - if (CC_EDITOR) { - this.enableCulling(false); - } else if (this._enableCulling) { - // 此处修改 若不为首个layer 直接复用firstLayer的结果 - // this._firstTmxLayer不为空时 表示当前layer不是首个layer - var firstTmxLayer = this._firstTmxLayer; - - if (!!firstTmxLayer) { - this._cullingRect = firstTmxLayer._cullingRect; - this._cullingDirty = firstTmxLayer._cacheCullingDirty; - return; - } // 修改结束 - - - this.node._updateWorldMatrix(); - - cc.Mat4.invert(_mat4_temp, this.node._worldMatrix); - var rect = cc.visibleRect; - var camera = cc.Camera.findCamera(this.node); - - if (camera) { - _vec2_temp.x = 0; - _vec2_temp.y = 0; - _vec2_temp2.x = _vec2_temp.x + rect.width; - _vec2_temp2.y = _vec2_temp.y + rect.height; - camera.getScreenToWorldPoint(_vec2_temp, _vec2_temp); - camera.getScreenToWorldPoint(_vec2_temp2, _vec2_temp2); - cc.Vec2.transformMat4(_vec2_temp, _vec2_temp, _mat4_temp); - cc.Vec2.transformMat4(_vec2_temp2, _vec2_temp2, _mat4_temp); - - this._updateViewPort(_vec2_temp.x, _vec2_temp.y, _vec2_temp2.x - _vec2_temp.x, _vec2_temp2.y - _vec2_temp.y); // 此处修改 若为首个layer 缓存_cullingDirty。 - // _cullingDirty会在填充渲染数据后被改为false 所以需要缓存这里的结果 - - - if (!firstTmxLayer) { - this._cacheCullingDirty = this._cullingDirty; - } // 修改结束 - - } - } - }, - _traverseAllGrid: function _traverseAllGrid() { - var tiles = this._tiles; - var texGrids = this._texGrids; - var tilesetIndexArr = this._tilesetIndexArr; - var tilesetIndexToArrIndex = this._tilesetIndexToArrIndex = {}; - var TiledMap = cc.TiledMap; - var TileFlag = TiledMap.TileFlag; - var FLIPPED_MASK = TileFlag.FLIPPED_MASK; - - var singleTexture = this._tiledMap.isSingleTexture(); - - tilesetIndexArr.length = 0; - - for (var i = 0; i < tiles.length; i++) { - var gid = tiles[i]; - if (gid === 0) continue; - gid = (gid & FLIPPED_MASK) >>> 0; - var grid = texGrids[gid]; - - if (!grid) { - cc.error("CCTiledLayer:_traverseAllGrid grid is null, gid is:", gid); - continue; - } - - var tilesetIdx = grid.texId; - if (tilesetIndexToArrIndex[tilesetIdx] !== undefined) continue; - tilesetIndexToArrIndex[tilesetIdx] = tilesetIndexArr.length; - tilesetIndexArr.push(tilesetIdx); // 此处修改 当只有一个图集时 可以直接停止遍历 - - if (singleTexture) { - break; - } // 修改结束 - - } - } -}); - -exports["default"] = _default; -module.exports = exports["default"]; - + if (!nodeEnv) {__quick_compile_project__.registerModule(__filename, module);}"use strict"; +cc._RF.push(module, 'd60cfrGbXBLBbplLoT7TBn7', 'TmoTiledLayer'); +// Script/TmoTiledLayer.js + +"use strict"; + +exports.__esModule = true; +exports["default"] = void 0; +// Learn cc.Class: +// - https://docs.cocos.com/creator/manual/en/scripting/class.html +// Learn Attribute: +// - https://docs.cocos.com/creator/manual/en/scripting/reference/attributes.html +// Learn life-cycle callbacks: +// - https://docs.cocos.com/creator/manual/en/scripting/life-cycle-callbacks.html + +var _mat4_temp = cc.mat4(); +var _vec2_temp = cc.v2(); +var _vec2_temp2 = cc.v2(); +var _default = cc.Class({ + "extends": cc.TiledLayer, + // 此处修改 增加firstTmxLayer参数 + _init: function _init(layerInfo, mapInfo, tilesets, textures, texGrids, tiledMap, firstTmxLayer) { + // 修改结束 + this._cullingDirty = true; + this._layerInfo = layerInfo; + this._mapInfo = mapInfo; + // 此处修改 保存firstTmxLayer参数 + this._firstTmxLayer = firstTmxLayer; + this._tiledMap = tiledMap; + // 修改结束 + + var size = layerInfo._layerSize; + + // layerInfo + this._layerName = layerInfo.name; + this._tiles = layerInfo._tiles; + this._properties = layerInfo.properties; + this._layerSize = size; + this._minGID = layerInfo._minGID; + this._maxGID = layerInfo._maxGID; + this._opacity = layerInfo._opacity; + this._renderOrder = mapInfo.renderOrder; + this._staggerAxis = mapInfo.getStaggerAxis(); + this._staggerIndex = mapInfo.getStaggerIndex(); + this._hexSideLength = mapInfo.getHexSideLength(); + this._animations = mapInfo.getTileAnimations(); + + // tilesets + this._tilesets = tilesets; + // textures + this._textures = textures; + // grid texture + this._texGrids = texGrids; + + // mapInfo + this._layerOrientation = mapInfo.orientation; + this._mapTileSize = mapInfo.getTileSize(); + var maptw = this._mapTileSize.width; + var mapth = this._mapTileSize.height; + var layerW = this._layerSize.width; + var layerH = this._layerSize.height; + if (this._layerOrientation === cc.TiledMap.Orientation.HEX) { + // handle hex map + var TiledMap = cc.TiledMap; + var StaggerAxis = TiledMap.StaggerAxis; + var StaggerIndex = TiledMap.StaggerIndex; + var width = 0, + height = 0; + this._odd_even = this._staggerIndex === StaggerIndex.STAGGERINDEX_ODD ? 1 : -1; + if (this._staggerAxis === StaggerAxis.STAGGERAXIS_X) { + this._diffX1 = (maptw - this._hexSideLength) / 2; + this._diffY1 = 0; + height = mapth * (layerH + 0.5); + width = (maptw + this._hexSideLength) * Math.floor(layerW / 2) + maptw * (layerW % 2); + } else { + this._diffX1 = 0; + this._diffY1 = (mapth - this._hexSideLength) / 2; + width = maptw * (layerW + 0.5); + height = (mapth + this._hexSideLength) * Math.floor(layerH / 2) + mapth * (layerH % 2); + } + this.node.setContentSize(width, height); + } else if (this._layerOrientation === cc.TiledMap.Orientation.ISO) { + var wh = layerW + layerH; + this.node.setContentSize(maptw * 0.5 * wh, mapth * 0.5 * wh); + } else { + this.node.setContentSize(layerW * maptw, layerH * mapth); + } + + // offset (after layer orientation is set); + this._offset = cc.v2(layerInfo.offset.x, -layerInfo.offset.y); + this._useAutomaticVertexZ = false; + this._vertexZvalue = 0; + this._syncAnchorPoint(); + this._prepareToRender(); + }, + _updateCulling: function _updateCulling() { + if (CC_EDITOR) { + this.enableCulling(false); + } else if (this._enableCulling) { + // 此处修改 若不为首个layer 直接复用firstLayer的结果 + // this._firstTmxLayer不为空时 表示当前layer不是首个layer + var firstTmxLayer = this._firstTmxLayer; + if (!!firstTmxLayer) { + this._cullingRect = firstTmxLayer._cullingRect; + this._cullingDirty = firstTmxLayer._cacheCullingDirty; + return; + } + // 修改结束 + + this.node._updateWorldMatrix(); + cc.Mat4.invert(_mat4_temp, this.node._worldMatrix); + var rect = cc.visibleRect; + var camera = cc.Camera.findCamera(this.node); + if (camera) { + _vec2_temp.x = 0; + _vec2_temp.y = 0; + _vec2_temp2.x = _vec2_temp.x + rect.width; + _vec2_temp2.y = _vec2_temp.y + rect.height; + camera.getScreenToWorldPoint(_vec2_temp, _vec2_temp); + camera.getScreenToWorldPoint(_vec2_temp2, _vec2_temp2); + cc.Vec2.transformMat4(_vec2_temp, _vec2_temp, _mat4_temp); + cc.Vec2.transformMat4(_vec2_temp2, _vec2_temp2, _mat4_temp); + this._updateViewPort(_vec2_temp.x, _vec2_temp.y, _vec2_temp2.x - _vec2_temp.x, _vec2_temp2.y - _vec2_temp.y); + // 此处修改 若为首个layer 缓存_cullingDirty。 + // _cullingDirty会在填充渲染数据后被改为false 所以需要缓存这里的结果 + if (!firstTmxLayer) { + this._cacheCullingDirty = this._cullingDirty; + } + // 修改结束 + } + } + }, + _traverseAllGrid: function _traverseAllGrid() { + var tiles = this._tiles; + var texGrids = this._texGrids; + var tilesetIndexArr = this._tilesetIndexArr; + var tilesetIndexToArrIndex = this._tilesetIndexToArrIndex = {}; + var TiledMap = cc.TiledMap; + var TileFlag = TiledMap.TileFlag; + var FLIPPED_MASK = TileFlag.FLIPPED_MASK; + var singleTexture = this._tiledMap.isSingleTexture(); + tilesetIndexArr.length = 0; + for (var i = 0; i < tiles.length; i++) { + var gid = tiles[i]; + if (gid === 0) continue; + gid = (gid & FLIPPED_MASK) >>> 0; + var grid = texGrids[gid]; + if (!grid) { + cc.error("CCTiledLayer:_traverseAllGrid grid is null, gid is:", gid); + continue; + } + var tilesetIdx = grid.texId; + if (tilesetIndexToArrIndex[tilesetIdx] !== undefined) continue; + tilesetIndexToArrIndex[tilesetIdx] = tilesetIndexArr.length; + tilesetIndexArr.push(tilesetIdx); + + // 此处修改 当只有一个图集时 可以直接停止遍历 + if (singleTexture) { + break; + } + // 修改结束 + } + } +}); +exports["default"] = _default; +module.exports = exports["default"]; + cc._RF.pop(); } if (nodeEnv) { @@ -3519,7 +643,7 @@ cc._RF.pop(); }); } })(); -//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInBhY2thZ2VzXFxUaWxlZE1hcE9wdGltaXplclxccmVzb3VyY2VcXFNjcmlwdFxcVG1vVGlsZWRMYXllci5qcyJdLCJuYW1lcyI6WyJfbWF0NF90ZW1wIiwiY2MiLCJtYXQ0IiwiX3ZlYzJfdGVtcCIsInYyIiwiX3ZlYzJfdGVtcDIiLCJDbGFzcyIsIlRpbGVkTGF5ZXIiLCJfaW5pdCIsImxheWVySW5mbyIsIm1hcEluZm8iLCJ0aWxlc2V0cyIsInRleHR1cmVzIiwidGV4R3JpZHMiLCJ0aWxlZE1hcCIsImZpcnN0VG14TGF5ZXIiLCJfY3VsbGluZ0RpcnR5IiwiX2xheWVySW5mbyIsIl9tYXBJbmZvIiwiX2ZpcnN0VG14TGF5ZXIiLCJfdGlsZWRNYXAiLCJzaXplIiwiX2xheWVyU2l6ZSIsIl9sYXllck5hbWUiLCJuYW1lIiwiX3RpbGVzIiwiX3Byb3BlcnRpZXMiLCJwcm9wZXJ0aWVzIiwiX21pbkdJRCIsIl9tYXhHSUQiLCJfb3BhY2l0eSIsIl9yZW5kZXJPcmRlciIsInJlbmRlck9yZGVyIiwiX3N0YWdnZXJBeGlzIiwiZ2V0U3RhZ2dlckF4aXMiLCJfc3RhZ2dlckluZGV4IiwiZ2V0U3RhZ2dlckluZGV4IiwiX2hleFNpZGVMZW5ndGgiLCJnZXRIZXhTaWRlTGVuZ3RoIiwiX2FuaW1hdGlvbnMiLCJnZXRUaWxlQW5pbWF0aW9ucyIsIl90aWxlc2V0cyIsIl90ZXh0dXJlcyIsIl90ZXhHcmlkcyIsIl9sYXllck9yaWVudGF0aW9uIiwib3JpZW50YXRpb24iLCJfbWFwVGlsZVNpemUiLCJnZXRUaWxlU2l6ZSIsIm1hcHR3Iiwid2lkdGgiLCJtYXB0aCIsImhlaWdodCIsImxheWVyVyIsImxheWVySCIsIlRpbGVkTWFwIiwiT3JpZW50YXRpb24iLCJIRVgiLCJTdGFnZ2VyQXhpcyIsIlN0YWdnZXJJbmRleCIsIl9vZGRfZXZlbiIsIlNUQUdHRVJJTkRFWF9PREQiLCJTVEFHR0VSQVhJU19YIiwiX2RpZmZYMSIsIl9kaWZmWTEiLCJNYXRoIiwiZmxvb3IiLCJub2RlIiwic2V0Q29udGVudFNpemUiLCJJU08iLCJ3aCIsIl9vZmZzZXQiLCJvZmZzZXQiLCJ4IiwieSIsIl91c2VBdXRvbWF0aWNWZXJ0ZXhaIiwiX3ZlcnRleFp2YWx1ZSIsIl9zeW5jQW5jaG9yUG9pbnQiLCJfcHJlcGFyZVRvUmVuZGVyIiwiX3VwZGF0ZUN1bGxpbmciLCJDQ19FRElUT1IiLCJlbmFibGVDdWxsaW5nIiwiX2VuYWJsZUN1bGxpbmciLCJfY3VsbGluZ1JlY3QiLCJfY2FjaGVDdWxsaW5nRGlydHkiLCJfdXBkYXRlV29ybGRNYXRyaXgiLCJNYXQ0IiwiaW52ZXJ0IiwiX3dvcmxkTWF0cml4IiwicmVjdCIsInZpc2libGVSZWN0IiwiY2FtZXJhIiwiQ2FtZXJhIiwiZmluZENhbWVyYSIsImdldFNjcmVlblRvV29ybGRQb2ludCIsIlZlYzIiLCJ0cmFuc2Zvcm1NYXQ0IiwiX3VwZGF0ZVZpZXdQb3J0IiwiX3RyYXZlcnNlQWxsR3JpZCIsInRpbGVzIiwidGlsZXNldEluZGV4QXJyIiwiX3RpbGVzZXRJbmRleEFyciIsInRpbGVzZXRJbmRleFRvQXJySW5kZXgiLCJfdGlsZXNldEluZGV4VG9BcnJJbmRleCIsIlRpbGVGbGFnIiwiRkxJUFBFRF9NQVNLIiwic2luZ2xlVGV4dHVyZSIsImlzU2luZ2xlVGV4dHVyZSIsImxlbmd0aCIsImkiLCJnaWQiLCJncmlkIiwiZXJyb3IiLCJ0aWxlc2V0SWR4IiwidGV4SWQiLCJ1bmRlZmluZWQiLCJwdXNoIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBLElBQUlBLFVBQVUsR0FBR0MsRUFBRSxDQUFDQyxJQUFILEVBQWpCOztBQUNBLElBQUlDLFVBQVUsR0FBR0YsRUFBRSxDQUFDRyxFQUFILEVBQWpCOztBQUNBLElBQUlDLFdBQVcsR0FBR0osRUFBRSxDQUFDRyxFQUFILEVBQWxCOztlQUVlSCxFQUFFLENBQUNLLEtBQUgsQ0FBUztBQUNwQixhQUFTTCxFQUFFLENB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akQsUUFBUSxDQUFDaUQsUUFBMUI7QUFDQSxRQUFNQyxZQUFZLEdBQUdELFFBQVEsQ0FBQ0MsWUFBOUI7O0FBRUEsUUFBSUMsYUFBYSxHQUFHLEtBQUtyRixTQUFMLENBQWVzRixlQUFmLEVBQXBCOztBQUVBUCxJQUFBQSxlQUFlLENBQUNRLE1BQWhCLEdBQXlCLENBQXpCOztBQUNBLFNBQUssSUFBSUMsQ0FBQyxHQUFHLENBQWIsRUFBZ0JBLENBQUMsR0FBR1YsS0FBSyxDQUFDUyxNQUExQixFQUFrQ0MsQ0FBQyxFQUFuQyxFQUF1QztBQUNuQyxVQUFJQyxHQUFHLEdBQUdYLEtBQUssQ0FBQ1UsQ0FBRCxDQUFmO0FBQ0EsVUFBSUMsR0FBRyxLQUFLLENBQVosRUFBZTtBQUNmQSxNQUFBQSxHQUFHLEdBQUksQ0FBQ0EsR0FBRyxHQUFHTCxZQUFQLE1BQXlCLENBQWhDO0FBQ0EsVUFBSU0sSUFBSSxHQUFHakcsUUFBUSxDQUFDZ0csR0FBRCxDQUFuQjs7QUFDQSxVQUFJLENBQUNDLElBQUwsRUFBVztBQUNQN0csUUFBQUEsRUFBRSxDQUFDOEcsS0FBSCxDQUFTLHFEQUFULEVBQWdFRixHQUFoRTtBQUNBO0FBQ0g7O0FBQ0QsVUFBSUcsVUFBVSxHQUFHRixJQUFJLENBQUNHLEtBQXRCO0FBQ0EsVUFBSVosc0JBQXNCLENBQUNXLFVBQUQsQ0FBdEIsS0FBdUNFLFNBQTNDLEVBQXNEO0FBQ3REYixNQUFBQSxzQkFBc0IsQ0FBQ1csVUFBRCxDQUF0QixHQUFxQ2IsZUFBZSxDQUFDUSxNQUFyRDtBQUNBUixNQUFBQSxlQUFlLENBQUNnQixJQUFoQixDQUFxQkgsVUFBckIsRUFabUMsQ0FjbkM7O0FBQ0EsVUFBSVAsYUFBSixFQUFtQjtBQUNmO0FBQ0gsT0FqQmtDLENBa0JuQzs7QUFDSDtBQUNKO0FBdkptQixDQUFUIiwic291cmNlUm9vdCI6Ii8iLCJzb3VyY2VzQ29udGVudCI6WyIvLyBMZWFybiBjYy5DbGFzczpcclxuLy8gIC0gaHR0cHM6Ly9kb2NzLmNvY29zLmNvbS9jcmVhdG9yL21hbnVhbC9lbi9zY3JpcHRpbmcvY2xhc3MuaHRtbFxyXG4vLyBMZWFybiBBdHRyaWJ1dGU6XHJcbi8vICAtIGh0dHBzOi8vZG9jcy5jb2Nvcy5jb20vY3JlYXRvci9tYW51YWwvZW4vc2NyaXB0aW5nL3JlZmVyZW5jZS9hdHRyaWJ1dGVzLmh0bWxcclxuLy8gTGVhcm4gbGlmZS1jeWNsZSBjYWxsYmFja3M6XHJcbi8vICAtIGh0dHBzOi8vZG9jcy5jb2Nvcy5jb20vY3JlYXRvci9tYW51YWwvZW4vc2NyaXB0aW5nL2xpZmUtY3ljbGUtY2FsbGJhY2tzLmh0bWxcclxuXHJcbmxldCBfbWF0NF90ZW1wID0gY2MubWF0NCgpO1xyXG5sZXQgX3ZlYzJfdGVtcCA9IGNjLnYyKCk7XHJcbmxldCBfdmVjMl90ZW1wMiA9IGNjLnYyKCk7XHJcblxyXG5leHBvcnQgZGVmYXVsdCBjYy5DbGFzcyh7XHJcbiAgICBleHRlbmRzOiBjYy5UaWxlZExheWVyLFxyXG5cclxuICAgIC8vIOatpOWkhOS/ruaUuSDlop7liqBmaXJzdFRteExheWVy5Y+C5pWwXHJcbiAgICBfaW5pdChsYXllckluZm8sIG1hcEluZm8sIHRpbGVzZXRzLCB0ZXh0dXJlcywgdGV4R3JpZHMsIHRpbGVkTWFwLCBmaXJzdFRteExheWVyKSB7XHJcbiAgICAgICAgLy8g5L+u5pS557uT5p2fXHJcbiAgICAgICAgdGhpcy5fY3VsbGluZ0RpcnR5ID0gdHJ1ZTtcclxuICAgICAgICB0aGlzLl9sYXllckluZm8gPSBsYXllckluZm87XHJcbiAgICAgICAgdGhpcy5fbWFwSW5mbyA9IG1hcEluZm87XHJcbiAgICAgICAgLy8g5q2k5aSE5L+u5pS5IOS/neWtmGZpcnN0VG14TGF5ZXLlj4LmlbBcclxuICAgICAgICB0aGlzLl9maXJzdFRteExheWVyID0gZmlyc3RUbXhMYXllcjtcclxuICAgICAgICB0aGlzLl90aWxlZE1hcCA9IHRpbGVkTWFwO1xyXG4gICAgICAgIC8vIOS/ruaUuee7k+adn1xyXG5cclxuICAgICAgICBsZXQgc2l6ZSA9IGxheWVySW5mby5fbGF5ZXJTaXplO1xyXG5cclxuICAgICAgICAvLyBsYXllckluZm9cclxuICAgICAgICB0aGlzLl9sYXllck5hbWUgPSBsYXllckluZm8ubmFtZTtcclxuICAgICAgICB0aGlzLl90aWxlcyA9IGxheWVySW5mby5fdGlsZXM7XHJcbiAgICAgICAgdGhpcy5fcHJvcGVydGllcyA9IGxheWVySW5mby5wcm9wZXJ0aWVzO1xyXG4gICAgICAgIHRoaXMuX2xheWVyU2l6ZSA9IHNpemU7XHJcbiAgICAgICAgdGhpcy5fbWluR0lEID0gbGF5ZXJJbmZvLl9taW5HSUQ7XHJcbiAgICAgICAgdGhpcy5fbWF4R0lEID0gbGF5ZXJJbmZvLl9tYXhHSUQ7XHJcbiAgICAgICAgdGhpcy5fb3BhY2l0eSA9IGxheWVySW5mby5fb3BhY2l0eTtcclxuICAgICAgICB0aGlzLl9yZW5kZXJPcmRlciA9IG1hcEluZm8ucmVuZGVyT3JkZXI7XHJcbiAgICAgICAgdGhpcy5fc3RhZ2dlckF4aXMgPSBtYXBJbmZvLmdldFN0YWdnZXJBeGlzKCk7XHJcbiAgICAgICAgdGhpcy5fc3RhZ2dlckluZGV4ID0gbWFwSW5mby5nZXRTdGFnZ2VySW5kZXgoKTtcclxuICAgICAgICB0aGlzLl9oZXhTaWRlTGVuZ3RoID0gbWFwSW5mby5nZXRIZXhTaWRlTGVuZ3RoKCk7XHJcbiAgICAgICAgdGhpcy5fYW5pbWF0aW9ucyA9IG1hcEluZm8uZ2V0VGlsZUFuaW1hdGlvbnMoKTtcclxuXHJcbiAgICAgICAgLy8gdGlsZXNldHNcclxuICAgICAgICB0aGlzLl90aWxlc2V0cyA9IHRpbGVzZXRzO1xyXG4gICAgICAgIC8vIHRleHR1cmVzXHJcbiAgICAgICAgdGhpcy5fdGV4dHVyZXMgPSB0ZXh0dXJlcztcclxuICAgICAgICAvLyBncmlkIHRleHR1cmVcclxuICAgICAgICB0aGlzLl90ZXhHcmlkcyA9IHRleEdyaWRzO1xyXG5cclxuICAgICAgICAvLyBtYXBJbmZvXHJcbiAgICAgICAgdGhpcy5fbGF5ZXJPcmllbnRhdGlvbiA9IG1hcEluZm8ub3JpZW50YXRpb247XHJcbiAgICAgICAgdGhpcy5fbWFwVGlsZVNpemUgPSBtYXBJbmZvLmdldFRpbGVTaXplKCk7XHJcblxyXG4gICAgICAgIGxldCBtYXB0dyA9IHRoaXMuX21hcFRpbGVTaXplLndpZHRoO1xyXG4gICAgICAgIGxldCBtYXB0aCA9IHRoaXMuX21hcFRpbGVTaXplLmhlaWdodDtcclxuICAgICAgICBsZXQgbGF5ZXJXID0gdGhpcy5fbGF5ZXJTaXplLndpZHRoO1xyXG4gICAgICAgIGxldCBsYXllckggPSB0aGlzLl9sYXllclNpemUuaGVpZ2h0O1xyXG5cclxuICAgICAgICBpZiAodGhpcy5fbGF5ZXJPcmllbnRhdGlvbiA9PT0gY2MuVGlsZWRNYXAuT3JpZW50YXRpb24uSEVYKSB7XHJcbiAgICAgICAgICAgIC8vIGhhbmRsZSBoZXggbWFwXHJcbiAgICAgICAgICAgIGNvbnN0IFRpbGVkTWFwID0gY2MuVGlsZWRNYXA7XHJcbiAgICAgICAgICAgIGNvbnN0IFN0YWdnZXJBeGlzID0gVGlsZWRNYXAuU3RhZ2dlckF4aXM7XHJcbiAgICAgICAgICAgIGNvbnN0IFN0YWdnZXJJbmRleCA9IFRpbGVkTWFwLlN0YWdnZXJJbmRleDtcclxuICAgICAgICAgICAgbGV0IHdpZHRoID0gMCwgaGVpZ2h0ID0gMDtcclxuXHJcbiAgICAgICAgICAgIHRoaXMuX29kZF9ldmVuID0gKHRoaXMuX3N0YWdnZXJJbmRleCA9PT0gU3RhZ2dlckluZGV4LlNUQUdHRVJJTkRFWF9PREQpID8gMSA6IC0xO1xyXG4gICAgICAgICAgICBpZiAodGhpcy5fc3RhZ2dlckF4aXMgPT09IFN0YWdnZXJBeGlzLlNUQUdHRVJBWElTX1gpIHtcclxuICAgICAgICAgICAgICAgIHRoaXMuX2RpZmZYMSA9IChtYXB0dyAtIHRoaXMuX2hleFNpZGVMZW5ndGgpIC8gMjtcclxuICAgICAgICAgICAgICAgIHRoaXMuX2RpZmZZMSA9IDA7XHJcbiAgICAgICAgICAgICAgICBoZWlnaHQgPSBtYXB0aCAqIChsYXllckggKyAwLjUpO1xyXG4gICAgICAgICAgICAgICAgd2lkdGggPSAobWFwdHcgKyB0aGlzLl9oZXhTaWRlTGVuZ3RoKSAqIE1hdGguZmxvb3IobGF5ZXJXIC8gMikgKyBtYXB0dyAqIChsYXllclcgJSAyKTtcclxuICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgIHRoaXMuX2RpZmZYMSA9IDA7XHJcbiAgICAgICAgICAgICAgICB0aGlzLl9kaWZmWTEgPSAobWFwdGggLSB0aGlzLl9oZXhTaWRlTGVuZ3RoKSAvIDI7XHJcbiAgICAgICAgICAgICAgICB3aWR0aCA9IG1hcHR3ICogKGxheWVyVyArIDAuNSk7XHJcbiAgICAgICAgICAgICAgICBoZWlnaHQgPSAobWFwdGggKyB0aGlzLl9oZXhTaWRlTGVuZ3RoKSAqIE1hdGguZmxvb3IobGF5ZXJIIC8gMikgKyBtYXB0aCAqIChsYXllckggJSAyKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB0aGlzLm5vZGUuc2V0Q29udGVudFNpemUod2lkdGgsIGhlaWdodCk7XHJcbiAgICAgICAgfSBlbHNlIGlmICh0aGlzLl9sYXllck9yaWVudGF0aW9uID09PSBjYy5UaWxlZE1hcC5PcmllbnRhdGlvbi5JU08pIHtcclxuICAgICAgICAgICAgbGV0IHdoID0gbGF5ZXJXICsgbGF5ZXJIO1xyXG4gICAgICAgICAgICB0aGlzLm5vZGUuc2V0Q29udGVudFNpemUobWFwdHcgKiAwLjUgKiB3aCwgbWFwdGggKiAwLjUgKiB3aCk7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgdGhpcy5ub2RlLnNldENvbnRlbnRTaXplKGxheWVyVyAqIG1hcHR3LCBsYXllckggKiBtYXB0aCk7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICAvLyBvZmZzZXQgKGFmdGVyIGxheWVyIG9yaWVudGF0aW9uIGlzIHNldCk7XHJcbiAgICAgICAgdGhpcy5fb2Zmc2V0ID0gY2MudjIobGF5ZXJJbmZvLm9mZnNldC54LCAtbGF5ZXJJbmZvLm9mZnNldC55KTtcclxuICAgICAgICB0aGlzLl91c2VBdXRvbWF0aWNWZXJ0ZXhaID0gZmFsc2U7XHJcbiAgICAgICAgdGhpcy5fdmVydGV4WnZhbHVlID0gMDtcclxuICAgICAgICB0aGlzLl9zeW5jQW5jaG9yUG9pbnQoKTtcclxuICAgICAgICB0aGlzLl9wcmVwYXJlVG9SZW5kZXIoKTtcclxuICAgIH0sXHJcbiAgICBfdXBkYXRlQ3VsbGluZygpIHtcclxuICAgICAgICBpZiAoQ0NfRURJVE9SKSB7XHJcbiAgICAgICAgICAgIHRoaXMuZW5hYmxlQ3VsbGluZyhmYWxzZSk7XHJcbiAgICAgICAgfSBlbHNlIGlmICh0aGlzLl9lbmFibGVDdWxsaW5nKSB7XHJcbiAgICAgICAgICAgIC8vIOatpOWkhOS/ruaUuSDoi6XkuI3kuLrpppbkuKpsYXllciDnm7TmjqXlpI3nlKhmaXJzdExheWVy55qE57uT5p6cXHJcbiAgICAgICAgICAgIC8vIHRoaXMuX2ZpcnN0VG14TGF5ZXLkuI3kuLrnqbrml7Yg6KGo56S65b2T5YmNbGF5ZXLkuI3mmK/pppbkuKpsYXllclxyXG4gICAgICAgICAgICBsZXQgZmlyc3RUbXhMYXllciA9IHRoaXMuX2ZpcnN0VG14TGF5ZXI7XHJcbiAgICAgICAgICAgIGlmICghIWZpcnN0VG14TGF5ZXIpIHtcclxuICAgICAgICAgICAgICAgIHRoaXMuX2N1bGxpbmdSZWN0ID0gZmlyc3RUbXhMYXllci5fY3VsbGluZ1JlY3Q7XHJcbiAgICAgICAgICAgICAgICB0aGlzLl9jdWxsaW5nRGlydHkgPSBmaXJzdFRteExheWVyLl9jYWNoZUN1bGxpbmdEaXJ0eTtcclxuICAgICAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAvLyDkv67mlLnnu5PmnZ9cclxuXHJcbiAgICAgICAgICAgIHRoaXMubm9kZS5fdXBkYXRlV29ybGRNYXRyaXgoKTtcclxuICAgICAgICAgICAgY2MuTWF0NC5pbnZlcnQoX21hdDRfdGVtcCwgdGhpcy5ub2RlLl93b3JsZE1hdHJpeCk7XHJcbiAgICAgICAgICAgIGxldCByZWN0ID0gY2MudmlzaWJsZVJlY3Q7XHJcbiAgICAgICAgICAgIGxldCBjYW1lcmEgPSBjYy5DYW1lcmEuZmluZENhbWVyYSh0aGlzLm5vZGUpO1xyXG4gICAgICAgICAgICBpZiAoY2FtZXJhKSB7XHJcbiAgICAgICAgICAgICAgICBfdmVjMl90ZW1wLnggPSAwO1xyXG4gICAgICAgICAgICAgICAgX3ZlYzJfdGVtcC55ID0gMDtcclxuICAgICAgICAgICAgICAgIF92ZWMyX3RlbXAyLnggPSBfdmVjMl90ZW1wLnggKyByZWN0LndpZHRoO1xyXG4gICAgICAgICAgICAgICAgX3ZlYzJfdGVtcDIueSA9IF92ZWMyX3RlbXAueSArIHJlY3QuaGVpZ2h0O1xyXG4gICAgICAgICAgICAgICAgY2FtZXJhLmdldFNjcmVlblRvV29ybGRQb2ludChfdmVjMl90ZW1wLCBfdmVjMl90ZW1wKTtcclxuICAgICAgICAgICAgICAgIGNhbWVyYS5nZXRTY3JlZW5Ub1dvcmxkUG9pbnQoX3ZlYzJfdGVtcDIsIF92ZWMyX3RlbXAyKTtcclxuICAgICAgICAgICAgICAgIGNjLlZlYzIudHJhbnNmb3JtTWF0NChfdmVjMl90ZW1wLCBfdmVjMl90ZW1wLCBfbWF0NF90ZW1wKTtcclxuICAgICAgICAgICAgICAgIGNjLlZlYzIudHJhbnNmb3JtTWF0NChfdmVjMl90ZW1wMiwgX3ZlYzJfdGVtcDIsIF9tYXQ0X3RlbXApO1xyXG5cclxuICAgICAgICAgICAgICAgIHRoaXMuX3VwZGF0ZVZpZXdQb3J0KF92ZWMyX3RlbXAueCwgX3ZlYzJfdGVtcC55LCBfdmVjMl90ZW1wMi54IC0gX3ZlYzJfdGVtcC54LCBfdmVjMl90ZW1wMi55IC0gX3ZlYzJfdGVtcC55KTtcclxuICAgICAgICAgICAgICAgIC8vIOatpOWkhOS/ruaUuSDoi6XkuLrpppbkuKpsYXllciDnvJPlrZhfY3VsbGluZ0RpcnR544CCXHJcbiAgICAgICAgICAgICAgICAvLyBfY3VsbGluZ0RpcnR55Lya5Zyo5aGr5YWF5riy5p+T5pWw5o2u5ZCO6KKr5pS55Li6ZmFsc2Ug5omA5Lul6ZyA6KaB57yT5a2Y6L+Z6YeM55qE57uT5p6cXHJcbiAgICAgICAgICAgICAgICBpZiAoIWZpcnN0VG14TGF5ZXIpIHtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLl9jYWNoZUN1bGxpbmdEaXJ0eSA9IHRoaXMuX2N1bGxpbmdEaXJ0eTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIC8vIOS/ruaUuee7k+adn1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgfSxcclxuICAgIF90cmF2ZXJzZUFsbEdyaWQgKCkge1xyXG4gICAgICAgIGxldCB0aWxlcyA9IHRoaXMuX3RpbGVzO1xyXG4gICAgICAgIGxldCB0ZXhHcmlkcyA9IHRoaXMuX3RleEdyaWRzO1xyXG4gICAgICAgIGxldCB0aWxlc2V0SW5kZXhBcnIgPSB0aGlzLl90aWxlc2V0SW5kZXhBcnI7XHJcbiAgICAgICAgbGV0IHRpbGVzZXRJbmRleFRvQXJySW5kZXggPSB0aGlzLl90aWxlc2V0SW5kZXhUb0FyckluZGV4ID0ge307XHJcblxyXG4gICAgICAgIGNvbnN0IFRpbGVkTWFwID0gY2MuVGlsZWRNYXA7XHJcbiAgICAgICAgY29uc3QgVGlsZUZsYWcgPSBUaWxlZE1hcC5UaWxlRmxhZztcclxuICAgICAgICBjb25zdCBGTElQUEVEX01BU0sgPSBUaWxlRmxhZy5GTElQUEVEX01BU0s7XHJcblxyXG4gICAgICAgIGxldCBzaW5nbGVUZXh0dXJlID0gdGhpcy5fdGlsZWRNYXAuaXNTaW5nbGVUZXh0dXJlKCk7XHJcblxyXG4gICAgICAgIHRpbGVzZXRJbmRleEFyci5sZW5ndGggPSAwO1xyXG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdGlsZXMubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICAgICAgbGV0IGdpZCA9IHRpbGVzW2ldO1xyXG4gICAgICAgICAgICBpZiAoZ2lkID09PSAwKSBjb250aW51ZTtcclxuICAgICAgICAgICAgZ2lkID0gKChnaWQgJiBGTElQUEVEX01BU0spID4+PiAwKTtcclxuICAgICAgICAgICAgbGV0IGdyaWQgPSB0ZXhHcmlkc1tnaWRdO1xyXG4gICAgICAgICAgICBpZiAoIWdyaWQpIHtcclxuICAgICAgICAgICAgICAgIGNjLmVycm9yKFwiQ0NUaWxlZExheWVyOl90cmF2ZXJzZUFsbEdyaWQgZ3JpZCBpcyBudWxsLCBnaWQgaXM6XCIsIGdpZCk7XHJcbiAgICAgICAgICAgICAgICBjb250aW51ZTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBsZXQgdGlsZXNldElkeCA9IGdyaWQudGV4SWQ7XHJcbiAgICAgICAgICAgIGlmICh0aWxlc2V0SW5kZXhUb0FyckluZGV4W3RpbGVzZXRJZHhdICE9PSB1bmRlZmluZWQpIGNvbnRpbnVlO1xyXG4gICAgICAgICAgICB0aWxlc2V0SW5kZXhUb0FyckluZGV4W3RpbGVzZXRJZHhdID0gdGlsZXNldEluZGV4QXJyLmxlbmd0aDtcclxuICAgICAgICAgICAgdGlsZXNldEluZGV4QXJyLnB1c2godGlsZXNldElkeCk7XHJcbiAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAvLyDmraTlpITkv67mlLkg5b2T5Y+q5pyJ5LiA5Liq5Zu+6ZuG5pe2IOWPr+S7peebtOaOpeWBnOatoumBjeWOhlxyXG4gICAgICAgICAgICBpZiAoc2luZ2xlVGV4dHVyZSkge1xyXG4gICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgLy8g5L+u5pS557uT5p2fXHJcbiAgICAgICAgfVxyXG4gICAgfSxcclxufSk7XHJcbiJdfQ== +//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInBhY2thZ2VzXFxUaWxlZE1hcE9wdGltaXplclxccmVzb3VyY2VcXFNjcmlwdFxcVG1vVGlsZWRMYXllci5qcyJdLCJuYW1lcyI6WyJfbWF0NF90ZW1wIiwiY2MiLCJtYXQ0IiwiX3ZlYzJfdGVtcCIsInYyIiwiX3ZlYzJfdGVtcDIiLCJfZGVmYXVsdCIsIkNsYXNzIiwiVGlsZWRMYXllciIsIl9pbml0IiwibGF5ZXJJbmZvIiwibWFwSW5mbyIsInRpbGVzZXRzIiwidGV4dHVyZXMiLCJ0ZXhHcmlkcyIsInRpbGVkTWFwIiwiZmlyc3RUbXhMYXllciIsIl9jdWxsaW5nRGlydHkiLCJfbGF5ZXJJbmZvIiwiX21hcEluZm8iLCJfZmlyc3RUbXhMYXllciIsIl90aWxlZE1hcCIsInNpemUiLCJfbGF5ZXJTaXplIiwiX2xheWVyTmFtZSIsIm5hbWUiLCJfdGlsZXMiLCJfcHJvcGVydGllcyIsInByb3BlcnRpZXMiLCJfbWluR0lEIiwiX21heEdJRCIsIl9vcGFjaXR5IiwiX3JlbmRlck9yZGVyIiwicmVuZGVyT3JkZXIiLCJfc3RhZ2dlckF4aXMiLCJnZXRTdGFnZ2VyQXhpcyIsIl9zdGFnZ2VySW5kZXgiLCJnZXRTdGFnZ2VySW5kZXgiLCJfaGV4U2lkZUxlbmd0aCIsImdldEhleFNpZGVMZW5ndGgiLCJfYW5pbWF0aW9ucyIsImdldFRpbGVBbmltYXRpb25zIiwiX3RpbGVzZXRzIiwiX3RleHR1cmVzIiwiX3RleEdyaWRzIiwiX2xheWVyT3JpZW50YXRpb24iLCJvcmllbnRhdGlvbiIsIl9tYXBUaWxlU2l6ZSIsImdldFRpbGVTaXplIiwibWFwdHciLCJ3aWR0aCIsIm1hcHRoIiwiaGVpZ2h0IiwibGF5ZXJXIiwibGF5ZXJIIiwiVGlsZWRNYXAiLCJPcmllbnRhdGlvbiIsIkhFWCIsIlN0YWdnZXJBeGlzIiwiU3RhZ2dlckluZGV4IiwiX29kZF9ldmVuIiwiU1RBR0dFUklOREVYX09ERCIsIlNUQUdHRVJBWElTX1giLCJfZGlmZlgxIiwiX2RpZmZZMSIsIk1hdGgiLCJmbG9vciIsIm5vZGUiLCJzZXRDb250ZW50U2l6ZSIsIklTTyIsIndoIiwiX29mZnNldCIsIm9mZnNldCIsIngiLCJ5IiwiX3VzZUF1dG9tYXRpY1ZlcnRleFoiLCJfdmVydGV4WnZhbHVlIiwiX3N5bmNBbmNob3JQb2ludCIsIl9wcmVwYXJlVG9SZW5kZXIiLCJfdXBkYXRlQ3VsbGluZyIsIkNDX0VESVRPUiIsImVuYWJsZUN1bGxpbmciLCJfZW5hYmxlQ3VsbGluZyIsIl9jdWxsaW5nUmVjdCIsIl9jYWNoZUN1bGxpbmdEaXJ0eSIsIl91cGRhdGVXb3JsZE1hdHJpeCIsIk1hdDQiLCJpbnZlcnQiLCJfd29ybGRNYXRyaXgiLCJyZWN0IiwidmlzaWJsZVJlY3QiLCJjYW1lcmEiLCJDYW1lcmEiLCJmaW5kQ2FtZXJhIiwiZ2V0U2NyZWVuVG9Xb3JsZFBvaW50IiwiVmVjMiIsInRyYW5zZm9ybU1hdDQiLCJfdXBkYXRlVmlld1BvcnQiLCJfdHJhdmVyc2VBbGxHcmlkIiwidGlsZXMiLCJ0aWxlc2V0SW5kZXhBcnIiLCJfdGlsZXNldEluZGV4QXJyIiwidGlsZXNldEluZGV4VG9BcnJJbmRleCIsIl90aWxlc2V0SW5kZXhUb0FyckluZGV4IiwiVGlsZUZsYWciLCJGTElQUEVEX01BU0siLCJzaW5nbGVUZXh0dXJlIiwiaXNTaW5nbGVUZXh0dXJlIiwibGVuZ3RoIiwiaSIsImdpZCIsImdyaWQiLCJlcnJvciIsInRpbGVzZXRJZHgiLCJ0ZXhJZCIsInVuZGVmaW5lZCIsInB1c2giLCJleHBvcnRzIiwibW9kdWxlIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBLElBQUlBLFVBQVUsR0FBR0MsRUFBRSxDQUFDQyxJQUFJLEVBQUU7QUFDMUIsSUFBSUMsVUFBVSxHQUFHRixFQUFFLENBQUNHLEVBQUUsRUFBRTtBQUN4QixJQUFJQyxXQUFXLEdBQUdKLEVBQUUsQ0FBQ0csRUFBRSxFQUFFO0FBQUMsSUFBQUUsUUFBQSxHQUVY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QUFBL0csUUFBQTtBQUFBZ0gsTUFBQSxDQUFBRCxPQUFBLEdBQUFBLE9BQUEiLCJzb3VyY2VSb290IjoiLyIsInNvdXJjZXNDb250ZW50IjpbIi8vIExlYXJuIGNjLkNsYXNzOlxyXG4vLyAgLSBodHRwczovL2RvY3MuY29jb3MuY29tL2NyZWF0b3IvbWFudWFsL2VuL3NjcmlwdGluZy9jbGFzcy5odG1sXHJcbi8vIExlYXJuIEF0dHJpYnV0ZTpcclxuLy8gIC0gaHR0cHM6Ly9kb2NzLmNvY29zLmNvbS9jcmVhdG9yL21hbnVhbC9lbi9zY3JpcHRpbmcvcmVmZXJlbmNlL2F0dHJpYnV0ZXMuaHRtbFxyXG4vLyBMZWFybiBsaWZlLWN5Y2xlIGNhbGxiYWNrczpcclxuLy8gIC0gaHR0cHM6Ly9kb2NzLmNvY29zLmNvbS9jcmVhdG9yL21hbnVhbC9lbi9zY3JpcHRpbmcvbGlmZS1jeWNsZS1jYWxsYmFja3MuaHRtbFxyXG5cclxubGV0IF9tYXQ0X3RlbXAgPSBjYy5tYXQ0KCk7XHJcbmxldCBfdmVjMl90ZW1wID0gY2MudjIoKTtcclxubGV0IF92ZWMyX3RlbXAyID0gY2MudjIoKTtcclxuXHJcbmV4cG9ydCBkZWZhdWx0IGNjLkNsYXNzKHtcclxuICAgIGV4dGVuZHM6IGNjLlRpbGVkTGF5ZXIsXHJcblxyXG4gICAgLy8g5q2k5aSE5L+u5pS5IOWinuWKoGZpcnN0VG14TGF5ZXLlj4LmlbBcclxuICAgIF9pbml0KGxheWVySW5mbywgbWFwSW5mbywgdGlsZXNldHMsIHRleHR1cmVzLCB0ZXhHcmlkcywgdGlsZWRNYXAsIGZpcnN0VG14TGF5ZXIpIHtcclxuICAgICAgICAvLyDkv67mlLnnu5PmnZ9cclxuICAgICAgICB0aGlzLl9jdWxsaW5nRGlydHkgPSB0cnVlO1xyXG4gICAgICAgIHRoaXMuX2xheWVySW5mbyA9IGxheWVySW5mbztcclxuICAgICAgICB0aGlzLl9tYXBJbmZvID0gbWFwSW5mbztcclxuICAgICAgICAvLyDmraTlpITkv67mlLkg5L+d5a2YZmlyc3RUbXhMYXllcuWPguaVsFxyXG4gICAgICAgIHRoaXMuX2ZpcnN0VG14TGF5ZXIgPSBmaXJzdFRteExheWVyO1xyXG4gICAgICAgIHRoaXMuX3RpbGVkTWFwID0gdGlsZWRNYXA7XHJcbiAgICAgICAgLy8g5L+u5pS557uT5p2fXHJcblxyXG4gICAgICAgIGxldCBzaXplID0gbGF5ZXJJbmZvLl9sYXllclNpemU7XHJcblxyXG4gICAgICAgIC8vIGxheWVySW5mb1xyXG4gICAgICAgIHRoaXMuX2xheWVyTmFtZSA9IGxheWVySW5mby5uYW1lO1xyXG4gICAgICAgIHRoaXMuX3RpbGVzID0gbGF5ZXJJbmZvLl90aWxlcztcclxuICAgICAgICB0aGlzLl9wcm9wZXJ0aWVzID0gbGF5ZXJJbmZvLnByb3BlcnRpZXM7XHJcbiAgICAgICAgdGhpcy5fbGF5ZXJTaXplID0gc2l6ZTtcclxuICAgICAgICB0aGlzLl9taW5HSUQgPSBsYXllckluZm8uX21pbkdJRDtcclxuICAgICAgICB0aGlzLl9tYXhHSUQgPSBsYXllckluZm8uX21heEdJRDtcclxuICAgICAgICB0aGlzLl9vcGFjaXR5ID0gbGF5ZXJJbmZvLl9vcGFjaXR5O1xyXG4gICAgICAgIHRoaXMuX3JlbmRlck9yZGVyID0gbWFwSW5mby5yZW5kZXJPcmRlcjtcclxuICAgICAgICB0aGlzLl9zdGFnZ2VyQXhpcyA9IG1hcEluZm8uZ2V0U3RhZ2dlckF4aXMoKTtcclxuICAgICAgICB0aGlzLl9zdGFnZ2VySW5kZXggPSBtYXBJbmZvLmdldFN0YWdnZXJJbmRleCgpO1xyXG4gICAgICAgIHRoaXMuX2hleFNpZGVMZW5ndGggPSBtYXBJbmZvLmdldEhleFNpZGVMZW5ndGgoKTtcclxuICAgICAgICB0aGlzLl9hbmltYXRpb25zID0gbWFwSW5mby5nZXRUaWxlQW5pbWF0aW9ucygpO1xyXG5cclxuICAgICAgICAvLyB0aWxlc2V0c1xyXG4gICAgICAgIHRoaXMuX3RpbGVzZXRzID0gdGlsZXNldHM7XHJcbiAgICAgICAgLy8gdGV4dHVyZXNcclxuICAgICAgICB0aGlzLl90ZXh0dXJlcyA9IHRleHR1cmVzO1xyXG4gICAgICAgIC8vIGdyaWQgdGV4dHVyZVxyXG4gICAgICAgIHRoaXMuX3RleEdyaWRzID0gdGV4R3JpZHM7XHJcblxyXG4gICAgICAgIC8vIG1hcEluZm9cclxuICAgICAgICB0aGlzLl9sYXllck9yaWVudGF0aW9uID0gbWFwSW5mby5vcmllbnRhdGlvbjtcclxuICAgICAgICB0aGlzLl9tYXBUaWxlU2l6ZSA9IG1hcEluZm8uZ2V0VGlsZVNpemUoKTtcclxuXHJcbiAgICAgICAgbGV0IG1hcHR3ID0gdGhpcy5fbWFwVGlsZVNpemUud2lkdGg7XHJcbiAgICAgICAgbGV0IG1hcHRoID0gdGhpcy5fbWFwVGlsZVNpemUuaGVpZ2h0O1xyXG4gICAgICAgIGxldCBsYXllclcgPSB0aGlzLl9sYXllclNpemUud2lkdGg7XHJcbiAgICAgICAgbGV0IGxheWVySCA9IHRoaXMuX2xheWVyU2l6ZS5oZWlnaHQ7XHJcblxyXG4gICAgICAgIGlmICh0aGlzLl9sYXllck9yaWVudGF0aW9uID09PSBjYy5UaWxlZE1hcC5PcmllbnRhdGlvbi5IRVgpIHtcclxuICAgICAgICAgICAgLy8gaGFuZGxlIGhleCBtYXBcclxuICAgICAgICAgICAgY29uc3QgVGlsZWRNYXAgPSBjYy5UaWxlZE1hcDtcclxuICAgICAgICAgICAgY29uc3QgU3RhZ2dlckF4aXMgPSBUaWxlZE1hcC5TdGFnZ2VyQXhpcztcclxuICAgICAgICAgICAgY29uc3QgU3RhZ2dlckluZGV4ID0gVGlsZWRNYXAuU3RhZ2dlckluZGV4O1xyXG4gICAgICAgICAgICBsZXQgd2lkdGggPSAwLCBoZWlnaHQgPSAwO1xyXG5cclxuICAgICAgICAgICAgdGhpcy5fb2RkX2V2ZW4gPSAodGhpcy5fc3RhZ2dlckluZGV4ID09PSBTdGFnZ2VySW5kZXguU1RBR0dFUklOREVYX09ERCkgPyAxIDogLTE7XHJcbiAgICAgICAgICAgIGlmICh0aGlzLl9zdGFnZ2VyQXhpcyA9PT0gU3RhZ2dlckF4aXMuU1RBR0dFUkFYSVNfWCkge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5fZGlmZlgxID0gKG1hcHR3IC0gdGhpcy5faGV4U2lkZUxlbmd0aCkgLyAyO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5fZGlmZlkxID0gMDtcclxuICAgICAgICAgICAgICAgIGhlaWdodCA9IG1hcHRoICogKGxheWVySCArIDAuNSk7XHJcbiAgICAgICAgICAgICAgICB3aWR0aCA9IChtYXB0dyArIHRoaXMuX2hleFNpZGVMZW5ndGgpICogTWF0aC5mbG9vcihsYXllclcgLyAyKSArIG1hcHR3ICogKGxheWVyVyAlIDIpO1xyXG4gICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5fZGlmZlgxID0gMDtcclxuICAgICAgICAgICAgICAgIHRoaXMuX2RpZmZZMSA9IChtYXB0aCAtIHRoaXMuX2hleFNpZGVMZW5ndGgpIC8gMjtcclxuICAgICAgICAgICAgICAgIHdpZHRoID0gbWFwdHcgKiAobGF5ZXJXICsgMC41KTtcclxuICAgICAgICAgICAgICAgIGhlaWdodCA9IChtYXB0aCArIHRoaXMuX2hleFNpZGVMZW5ndGgpICogTWF0aC5mbG9vcihsYXllckggLyAyKSArIG1hcHRoICogKGxheWVySCAlIDIpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIHRoaXMubm9kZS5zZXRDb250ZW50U2l6ZSh3aWR0aCwgaGVpZ2h0KTtcclxuICAgICAgICB9IGVsc2UgaWYgKHRoaXMuX2xheWVyT3JpZW50YXRpb24gPT09IGNjLlRpbGVkTWFwLk9yaWVudGF0aW9uLklTTykge1xyXG4gICAgICAgICAgICBsZXQgd2ggPSBsYXllclcgKyBsYXllckg7XHJcbiAgICAgICAgICAgIHRoaXMubm9kZS5zZXRDb250ZW50U2l6ZShtYXB0dyAqIDAuNSAqIHdoLCBtYXB0aCAqIDAuNSAqIHdoKTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICB0aGlzLm5vZGUuc2V0Q29udGVudFNpemUobGF5ZXJXICogbWFwdHcsIGxheWVySCAqIG1hcHRoKTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIC8vIG9mZnNldCAoYWZ0ZXIgbGF5ZXIgb3JpZW50YXRpb24gaXMgc2V0KTtcclxuICAgICAgICB0aGlzLl9vZmZzZXQgPSBjYy52MihsYXllckluZm8ub2Zmc2V0LngsIC1sYXllckluZm8ub2Zmc2V0LnkpO1xyXG4gICAgICAgIHRoaXMuX3VzZUF1dG9tYXRpY1ZlcnRleFogPSBmYWxzZTtcclxuICAgICAgICB0aGlzLl92ZXJ0ZXhadmFsdWUgPSAwO1xyXG4gICAgICAgIHRoaXMuX3N5bmNBbmNob3JQb2ludCgpO1xyXG4gICAgICAgIHRoaXMuX3ByZXBhcmVUb1JlbmRlcigpO1xyXG4gICAgfSxcclxuICAgIF91cGRhdGVDdWxsaW5nKCkge1xyXG4gICAgICAgIGlmIChDQ19FRElUT1IpIHtcclxuICAgICAgICAgICAgdGhpcy5lbmFibGVDdWxsaW5nKGZhbHNlKTtcclxuICAgICAgICB9IGVsc2UgaWYgKHRoaXMuX2VuYWJsZUN1bGxpbmcpIHtcclxuICAgICAgICAgICAgLy8g5q2k5aSE5L+u5pS5IOiLpeS4jeS4uummluS4qmxheWVyIOebtOaOpeWkjeeUqGZpcnN0TGF5ZXLnmoTnu5PmnpxcclxuICAgICAgICAgICAgLy8gdGhpcy5fZmlyc3RUbXhMYXllcuS4jeS4uuepuuaXtiDooajnpLrlvZPliY1sYXllcuS4jeaYr+mmluS4qmxheWVyXHJcbiAgICAgICAgICAgIGxldCBmaXJzdFRteExheWVyID0gdGhpcy5fZmlyc3RUbXhMYXllcjtcclxuICAgICAgICAgICAgaWYgKCEhZmlyc3RUbXhMYXllcikge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5fY3VsbGluZ1JlY3QgPSBmaXJzdFRteExheWVyLl9jdWxsaW5nUmVjdDtcclxuICAgICAgICAgICAgICAgIHRoaXMuX2N1bGxpbmdEaXJ0eSA9IGZpcnN0VG14TGF5ZXIuX2NhY2hlQ3VsbGluZ0RpcnR5O1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIC8vIOS/ruaUuee7k+adn1xyXG5cclxuICAgICAgICAgICAgdGhpcy5ub2RlLl91cGRhdGVXb3JsZE1hdHJpeCgpO1xyXG4gICAgICAgICAgICBjYy5NYXQ0LmludmVydChfbWF0NF90ZW1wLCB0aGlzLm5vZGUuX3dvcmxkTWF0cml4KTtcclxuICAgICAgICAgICAgbGV0IHJlY3QgPSBjYy52aXNpYmxlUmVjdDtcclxuICAgICAgICAgICAgbGV0IGNhbWVyYSA9IGNjLkNhbWVyYS5maW5kQ2FtZXJhKHRoaXMubm9kZSk7XHJcbiAgICAgICAgICAgIGlmIChjYW1lcmEpIHtcclxuICAgICAgICAgICAgICAgIF92ZWMyX3RlbXAueCA9IDA7XHJcbiAgICAgICAgICAgICAgICBfdmVjMl90ZW1wLnkgPSAwO1xyXG4gICAgICAgICAgICAgICAgX3ZlYzJfdGVtcDIueCA9IF92ZWMyX3RlbXAueCArIHJlY3Qud2lkdGg7XHJcbiAgICAgICAgICAgICAgICBfdmVjMl90ZW1wMi55ID0gX3ZlYzJfdGVtcC55ICsgcmVjdC5oZWlnaHQ7XHJcbiAgICAgICAgICAgICAgICBjYW1lcmEuZ2V0U2NyZWVuVG9Xb3JsZFBvaW50KF92ZWMyX3RlbXAsIF92ZWMyX3RlbXApO1xyXG4gICAgICAgICAgICAgICAgY2FtZXJhLmdldFNjcmVlblRvV29ybGRQb2ludChfdmVjMl90ZW1wMiwgX3ZlYzJfdGVtcDIpO1xyXG4gICAgICAgICAgICAgICAgY2MuVmVjMi50cmFuc2Zvcm1NYXQ0KF92ZWMyX3RlbXAsIF92ZWMyX3RlbXAsIF9tYXQ0X3RlbXApO1xyXG4gICAgICAgICAgICAgICAgY2MuVmVjMi50cmFuc2Zvcm1NYXQ0KF92ZWMyX3RlbXAyLCBfdmVjMl90ZW1wMiwgX21hdDRfdGVtcCk7XHJcblxyXG4gICAgICAgICAgICAgICAgdGhpcy5fdXBkYXRlVmlld1BvcnQoX3ZlYzJfdGVtcC54LCBfdmVjMl90ZW1wLnksIF92ZWMyX3RlbXAyLnggLSBfdmVjMl90ZW1wLngsIF92ZWMyX3RlbXAyLnkgLSBfdmVjMl90ZW1wLnkpO1xyXG4gICAgICAgICAgICAgICAgLy8g5q2k5aSE5L+u5pS5IOiLpeS4uummluS4qmxheWVyIOe8k+WtmF9jdWxsaW5nRGlydHnjgIJcclxuICAgICAgICAgICAgICAgIC8vIF9jdWxsaW5nRGlydHnkvJrlnKjloavlhYXmuLLmn5PmlbDmja7lkI7ooqvmlLnkuLpmYWxzZSDmiYDku6XpnIDopoHnvJPlrZjov5nph4znmoTnu5PmnpxcclxuICAgICAgICAgICAgICAgIGlmICghZmlyc3RUbXhMYXllcikge1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuX2NhY2hlQ3VsbGluZ0RpcnR5ID0gdGhpcy5fY3VsbGluZ0RpcnR5O1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgLy8g5L+u5pS557uT5p2fXHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICB9LFxyXG4gICAgX3RyYXZlcnNlQWxsR3JpZCAoKSB7XHJcbiAgICAgICAgbGV0IHRpbGVzID0gdGhpcy5fdGlsZXM7XHJcbiAgICAgICAgbGV0IHRleEdyaWRzID0gdGhpcy5fdGV4R3JpZHM7XHJcbiAgICAgICAgbGV0IHRpbGVzZXRJbmRleEFyciA9IHRoaXMuX3RpbGVzZXRJbmRleEFycjtcclxuICAgICAgICBsZXQgdGlsZXNldEluZGV4VG9BcnJJbmRleCA9IHRoaXMuX3RpbGVzZXRJbmRleFRvQXJySW5kZXggPSB7fTtcclxuXHJcbiAgICAgICAgY29uc3QgVGlsZWRNYXAgPSBjYy5UaWxlZE1hcDtcclxuICAgICAgICBjb25zdCBUaWxlRmxhZyA9IFRpbGVkTWFwLlRpbGVGbGFnO1xyXG4gICAgICAgIGNvbnN0IEZMSVBQRURfTUFTSyA9IFRpbGVGbGFnLkZMSVBQRURfTUFTSztcclxuXHJcbiAgICAgICAgbGV0IHNpbmdsZVRleHR1cmUgPSB0aGlzLl90aWxlZE1hcC5pc1NpbmdsZVRleHR1cmUoKTtcclxuXHJcbiAgICAgICAgdGlsZXNldEluZGV4QXJyLmxlbmd0aCA9IDA7XHJcbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0aWxlcy5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgICAgICBsZXQgZ2lkID0gdGlsZXNbaV07XHJcbiAgICAgICAgICAgIGlmIChnaWQgPT09IDApIGNvbnRpbnVlO1xyXG4gICAgICAgICAgICBnaWQgPSAoKGdpZCAmIEZMSVBQRURfTUFTSykgPj4+IDApO1xyXG4gICAgICAgICAgICBsZXQgZ3JpZCA9IHRleEdyaWRzW2dpZF07XHJcbiAgICAgICAgICAgIGlmICghZ3JpZCkge1xyXG4gICAgICAgICAgICAgICAgY2MuZXJyb3IoXCJDQ1RpbGVkTGF5ZXI6X3RyYXZlcnNlQWxsR3JpZCBncmlkIGlzIG51bGwsIGdpZCBpczpcIiwgZ2lkKTtcclxuICAgICAgICAgICAgICAgIGNvbnRpbnVlO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGxldCB0aWxlc2V0SWR4ID0gZ3JpZC50ZXhJZDtcclxuICAgICAgICAgICAgaWYgKHRpbGVzZXRJbmRleFRvQXJySW5kZXhbdGlsZXNldElkeF0gIT09IHVuZGVmaW5lZCkgY29udGludWU7XHJcbiAgICAgICAgICAgIHRpbGVzZXRJbmRleFRvQXJySW5kZXhbdGlsZXNldElkeF0gPSB0aWxlc2V0SW5kZXhBcnIubGVuZ3RoO1xyXG4gICAgICAgICAgICB0aWxlc2V0SW5kZXhBcnIucHVzaCh0aWxlc2V0SWR4KTtcclxuICAgICAgICAgICAgXHJcbiAgICAgICAgICAgIC8vIOatpOWkhOS/ruaUuSDlvZPlj6rmnInkuIDkuKrlm77pm4bml7Yg5Y+v5Lul55u05o6l5YGc5q2i6YGN5Y6GXHJcbiAgICAgICAgICAgIGlmIChzaW5nbGVUZXh0dXJlKSB7XHJcbiAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAvLyDkv67mlLnnu5PmnZ9cclxuICAgICAgICB9XHJcbiAgICB9LFxyXG59KTtcclxuIl19 //------QC-SOURCE-SPLIT------ (function() { @@ -3535,105 +659,100 @@ cc._RF.pop(); if (!nodeEnv) {__quick_compile_project__.registerModule(__filename, module);}"use strict"; cc._RF.push(module, 'f1883pXzMVIp5/ARDAWfZ7j', 'CollisionDetection'); // Script/CollisionDetection.ts -======= -cc._RF.push(module, 'e35abcX5VRAoItO6mgFcYyX', 'ControlManager'); -// Script/ControlManager.ts ->>>>>>> 0a31a7a5abc2c505bf743aa596e1c765a0405152 -"use strict"; -// Learn TypeScript: -// - https://docs.cocos.com/creator/manual/en/scripting/typescript.html -// Learn Attribute: -// - https://docs.cocos.com/creator/manual/en/scripting/reference/attributes.html -// Learn life-cycle callbacks: -// - https://docs.cocos.com/creator/manual/en/scripting/life-cycle-callbacks.html -var __extends = (this && this.__extends) || (function () { - var extendStatics = function (d, b) { - extendStatics = Object.setPrototypeOf || - ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) || - function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; }; - return extendStatics(d, b); - }; - return function (d, b) { - extendStatics(d, b); - function __() { this.constructor = d; } - d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); - }; -})(); -var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) { - var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; - if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc); - else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; - return c > 3 && r && Object.defineProperty(target, key, r), r; -}; -Object.defineProperty(exports, "__esModule", { value: true }); -<<<<<<< HEAD -var _a = cc._decorator, ccclass = _a.ccclass, property = _a.property, requireComponent = _a.requireComponent; -var CollisionDetection = /** @class */ (function (_super) { - __extends(CollisionDetection, _super); - function CollisionDetection() { - return _super !== null && _super.apply(this, arguments) || this; - } - CollisionDetection_1 = CollisionDetection; - CollisionDetection.prototype.onLoad = function () { - if (CollisionDetection_1._instance == null) { - CollisionDetection_1._instance = this; - // cc.game.addPersistRootNode(this.node); - } - else { - return; - } - }; - //碰撞检测函数 - CollisionDetection.prototype.isColliding = function (rect1, rect2) { - // 快速排除:检查边界框是否相交 - if (rect1.xMax < rect2.xMin || rect2.xMax < rect1.xMin || rect1.yMax < rect2.yMin || rect2.yMax < rect1.yMin) { - return { isColliding: false }; - } - // 调用原始的 intersects 方法 - var isColliding = rect1.intersects(rect2); - return { isColliding: isColliding }; - }; - // 获取多边形的所有边的法线 - CollisionDetection.prototype.getNormals = function (polygon) { - var normals = []; - var length = polygon.length; - for (var i = 0; i < length; i++) { - var p1 = polygon[i]; - var p2 = polygon[(i + 1) % length]; - var edge = new cc.Vec2(p2.x - p1.x, p2.y - p1.y); - var normal = new cc.Vec2(-edge.y, edge.x); - normal.normalize(); - normals.push(normal); - } - return normals; - }; - // 将多边形投影到轴上 - CollisionDetection.prototype.project = function (polygon, axis) { - var min = cc.Vec2.dot(polygon[0], axis); - var max = min; - for (var i = 1; i < polygon.length; i++) { - var dotProduct = cc.Vec2.dot(polygon[i], axis); - if (dotProduct < min) { - min = dotProduct; - } - else if (dotProduct > max) { - max = dotProduct; - } - } - return { min: min, max: max }; - }; - // 检查两个投影是否重叠 - CollisionDetection.prototype.overlap = function (projection1, projection2) { - return !(projection1.max < projection2.min || projection2.max < projection1.min); - }; - var CollisionDetection_1; - CollisionDetection = CollisionDetection_1 = __decorate([ - ccclass - ], CollisionDetection); - return CollisionDetection; -}(cc.Component)); -exports.default = CollisionDetection; +"use strict"; +// Learn TypeScript: +// - https://docs.cocos.com/creator/manual/en/scripting/typescript.html +// Learn Attribute: +// - https://docs.cocos.com/creator/manual/en/scripting/reference/attributes.html +// Learn life-cycle callbacks: +// - https://docs.cocos.com/creator/manual/en/scripting/life-cycle-callbacks.html +var __extends = (this && this.__extends) || (function () { + var extendStatics = function (d, b) { + extendStatics = Object.setPrototypeOf || + ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) || + function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; }; + return extendStatics(d, b); + }; + return function (d, b) { + extendStatics(d, b); + function __() { this.constructor = d; } + d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); + }; +})(); +var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) { + var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; + if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc); + else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; + return c > 3 && r && Object.defineProperty(target, key, r), r; +}; +Object.defineProperty(exports, "__esModule", { value: true }); +var _a = cc._decorator, ccclass = _a.ccclass, property = _a.property, requireComponent = _a.requireComponent; +var CollisionDetection = /** @class */ (function (_super) { + __extends(CollisionDetection, _super); + function CollisionDetection() { + return _super !== null && _super.apply(this, arguments) || this; + } + CollisionDetection_1 = CollisionDetection; + CollisionDetection.prototype.onLoad = function () { + if (CollisionDetection_1._instance == null) { + CollisionDetection_1._instance = this; + // cc.game.addPersistRootNode(this.node); + } + else { + return; + } + }; + //碰撞检测函数 + CollisionDetection.prototype.isColliding = function (rect1, rect2) { + // 快速排除:检查边界框是否相交 + if (rect1.xMax < rect2.xMin || rect2.xMax < rect1.xMin || rect1.yMax < rect2.yMin || rect2.yMax < rect1.yMin) { + return { isColliding: false }; + } + // 调用原始的 intersects 方法 + var isColliding = rect1.intersects(rect2); + return { isColliding: isColliding }; + }; + // 获取多边形的所有边的法线 + CollisionDetection.prototype.getNormals = function (polygon) { + var normals = []; + var length = polygon.length; + for (var i = 0; i < length; i++) { + var p1 = polygon[i]; + var p2 = polygon[(i + 1) % length]; + var edge = new cc.Vec2(p2.x - p1.x, p2.y - p1.y); + var normal = new cc.Vec2(-edge.y, edge.x); + normal.normalize(); + normals.push(normal); + } + return normals; + }; + // 将多边形投影到轴上 + CollisionDetection.prototype.project = function (polygon, axis) { + var min = cc.Vec2.dot(polygon[0], axis); + var max = min; + for (var i = 1; i < polygon.length; i++) { + var dotProduct = cc.Vec2.dot(polygon[i], axis); + if (dotProduct < min) { + min = dotProduct; + } + else if (dotProduct > max) { + max = dotProduct; + } + } + return { min: min, max: max }; + }; + // 检查两个投影是否重叠 + CollisionDetection.prototype.overlap = function (projection1, projection2) { + return !(projection1.max < projection2.min || projection2.max < projection1.min); + }; + var CollisionDetection_1; + CollisionDetection = CollisionDetection_1 = __decorate([ + ccclass + ], CollisionDetection); + return CollisionDetection; +}(cc.Component)); +exports.default = CollisionDetection; cc._RF.pop(); } @@ -3652,7 +771,7 @@ cc._RF.pop(); (function() { var nodeEnv = typeof require !== 'undefined' && typeof process !== 'undefined'; var __module = nodeEnv ? module : {exports:{}}; - var __filename = 'preview-scripts/assets/Script/prop/Star.js'; + var __filename = 'preview-scripts/assets/shop/script/item.js'; var __require = nodeEnv ? function (request) { return cc.require(request); } : function (request) { @@ -3660,262 +779,66 @@ cc._RF.pop(); }; function __define (exports, require, module) { if (!nodeEnv) {__quick_compile_project__.registerModule(__filename, module);}"use strict"; -cc._RF.push(module, 'd773dbWW6tAz6F+Z0L3IXUx', 'Star'); -// Script/prop/Star.ts +cc._RF.push(module, 'de906iE/HVHpI6VO7IMvKaI', 'item'); +// shop/script/item.ts -"use strict"; -// Learn TypeScript: -// - https://docs.cocos.com/creator/manual/en/scripting/typescript.html -// Learn Attribute: -// - https://docs.cocos.com/creator/manual/en/scripting/reference/attributes.html -// Learn life-cycle callbacks: -// - https://docs.cocos.com/creator/manual/en/scripting/life-cycle-callbacks.html -var __extends = (this && this.__extends) || (function () { - var extendStatics = function (d, b) { - extendStatics = Object.setPrototypeOf || - ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) || - function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; }; - return extendStatics(d, b); - }; - return function (d, b) { - extendStatics(d, b); - function __() { this.constructor = d; } - d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); - }; -})(); -var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) { - var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; - if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc); - else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; - return c > 3 && r && Object.defineProperty(target, key, r), r; -}; -Object.defineProperty(exports, "__esModule", { value: true }); -var Map_1 = require("../Map"); -var _a = cc._decorator, ccclass = _a.ccclass, property = _a.property; -var Star = /** @class */ (function (_super) { - __extends(Star, _super); - function Star() { - var _this = _super !== null && _super.apply(this, arguments) || this; - _this.time = 60; - // mapInfo: number[][] = []; - _this.star_SpriteFrame = null; - return _this; - // update (dt) {} - } - Star.prototype.onLoad = function () { - }; - Star.prototype.start = function () { - }; - Star.prototype.init = function (time) { - if (time) - this.time = time; - this.node.getChildByName("time").active = true; - this.node.getChildByName("time").getComponent(cc.Label).string = this.time.toString(); - this.schedule(this.updateTime, 1); - }; - Star.prototype.updateTime = function () { - this.time--; - this.node.getChildByName("time").getComponent(cc.Label).string = this.time.toString(); - if (this.time <= 0) { - this.unschedule(this.updateTime); - this.node.destroy(); - Map_1.default._instance.failLevel(); - // this.node.destroy(); - } - }; - __decorate([ - property(cc.SpriteAtlas) - ], Star.prototype, "star_SpriteFrame", void 0); - Star = __decorate([ - ccclass - ], Star); - return Star; -}(cc.Component)); -exports.default = Star; -======= -var _a = cc._decorator, ccclass = _a.ccclass, property = _a.property; -var NewClass = /** @class */ (function (_super) { - __extends(NewClass, _super); - function NewClass() { - var _this = _super !== null && _super.apply(this, arguments) || this; - _this.Map = null; - _this.tip = null; - _this.reinforce = null; - _this.soil = null; - return _this; - // update (dt) {} - } - // LIFE-CYCLE CALLBACKS: - // onLoad () {} - NewClass.prototype.start = function () { - this.tipArray = []; - this.controlArray = []; - this.canTouch = true; - this.Reinforce = false; - this.Soil = false; - this.mapHeight = 0; - }; - NewClass.prototype.setPosition = function (tip) { - tip.setPosition(30, -25); - if (this.tipArray.length > 0) { - var length = this.tipArray.length + 1; - var posY = Math.ceil(length / 8) - 1; - var posX = length - Math.floor(posY) * 8 - 1; - tip.setPosition(30 + 48 * posX, -25 - 48 * posY + this.mapHeight); - } - }; - //清空所有 - NewClass.prototype.removeAllTip = function () { - if (!this.canTouch) - return; - if (this.tipArray.length > 0) { - cc.fx.AudioManager._instance.playEffect("qingkong", null); - for (var i = 0; i < this.tipArray.length; i++) { - var tip = this.tipArray[i]; - tip.active = false; - tip.removeFromParent(this.Map); - tip = null; - } - this.tipArray = []; - this.controlArray = []; - var drawingReset = cc.fx.GameConfig.CLICK_DATA.drawingReset + 1; - cc.fx.GameConfig.CLICK_SET("drawingReset", drawingReset); - cc.fx.Notifications.emit(cc.fx.Message.removeTip, "remove"); - this.mapHeight = 0; - } - }; - //撤回一步 - NewClass.prototype.back_Click = function () { - if (!this.canTouch) - return; - if (this.tipArray.length > 0) { - cc.fx.AudioManager._instance.playEffect("chehui", null); - var tip = this.tipArray[this.tipArray.length - 1]; - tip.active = false; - tip.removeFromParent(this.Map); - tip = null; - this.tipArray.pop(); - this.controlArray.pop(); - var drawingBack = cc.fx.GameConfig.CLICK_DATA.drawingBack + 1; - cc.fx.GameConfig.CLICK_SET("drawingBack", drawingBack); - cc.fx.Notifications.emit(cc.fx.Message.removeTip, "back"); - if (this.tipArray.length >= 24) { - if ((this.tipArray.length) % 8 == 0) { - this.mapMove(false); - } - } - } - }; - //点击事件 - NewClass.prototype.btn_Click = function (target, data) { - var GameManager = this.node.parent.getComponent("GameManager"); - if (GameManager.btnClick == true) { - GameManager.btnClick = false; - cc.fx.Notifications.emit(cc.fx.Message.guideNext); - } - cc.fx.Notifications.emit(cc.fx.Message.control, data); - if (!this.canTouch) - return; - var prefab = this.tip; - if (data == "reinforce" || data == "soil") { - prefab = this[data]; - if (data == "reinforce") { - if (this.Reinforce) { - this.Reinforce = false; - this.back_Click(); - return; - } - else { - cc.fx.AudioManager._instance.playEffect("jineng", null); - this.Reinforce = true; - this.Soil = false; - } - } - else if (data == "soil") { - if (this.Soil) { - this.Soil = false; - this.back_Click(); - return; - } - else { - cc.fx.AudioManager._instance.playEffect("jineng", null); - this.Soil = true; - this.Reinforce = false; - } - } - } - else { - cc.fx.AudioManager._instance.playEffect("fangxiang", null); - this.Reinforce = false; - this.Soil = false; - } - var tip = cc.instantiate(prefab); - if (data == "up") - tip.angle = 180; - if (data == "left") - tip.angle = -90; - if (data == "right") - tip.angle = 90; - tip.parent = this.Map; - if (this.controlArray[this.controlArray.length - 1] == "reinforce" || - this.controlArray[this.controlArray.length - 1] == "soil") { - if (data == "reinforce" || data == "soil") { - this.tipArray[this.tipArray.length - 1].removeFromParent(); - this.tipArray[this.tipArray.length - 1] = null; - this.tipArray.pop(); - this.controlArray.pop(); - } - } - this.setPosition(tip); - this.tipArray.push(tip); - this.controlArray.push(data); - if (this.tipArray.length >= 25) { - if ((this.tipArray.length - 1) % 8 == 0) { - this.mapMove(true); - } - } - }; - //地图放不下了上下移动 - NewClass.prototype.mapMove = function (type) { - if (type) - this.mapHeight += 48; - else - this.mapHeight -= 48; - for (var i = 0; i < this.tipArray.length; i++) { - var tip = this.tipArray[i]; - if (type) - tip.y += 48; - else - tip.y -= 48; - } - }; - //点击开始 创建河道 - NewClass.prototype.start_Click = function () { - if (!this.canTouch) - return; - this.canTouch = false; - cc.fx.AudioManager._instance.playEffect("build", null); - cc.fx.Notifications.emit(cc.fx.Message.startGame, this.controlArray); - }; - __decorate([ - property(cc.Node) - ], NewClass.prototype, "Map", void 0); - __decorate([ - property(cc.Prefab) - ], NewClass.prototype, "tip", void 0); - __decorate([ - property(cc.Prefab) - ], NewClass.prototype, "reinforce", void 0); - __decorate([ - property(cc.Prefab) - ], NewClass.prototype, "soil", void 0); - NewClass = __decorate([ - ccclass - ], NewClass); - return NewClass; -}(cc.Component)); -exports.default = NewClass; ->>>>>>> 0a31a7a5abc2c505bf743aa596e1c765a0405152 +"use strict"; +var __extends = (this && this.__extends) || (function () { + var extendStatics = function (d, b) { + extendStatics = Object.setPrototypeOf || + ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) || + function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; }; + return extendStatics(d, b); + }; + return function (d, b) { + extendStatics(d, b); + function __() { this.constructor = d; } + d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); + }; +})(); +var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) { + var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; + if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc); + else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; + return c > 3 && r && Object.defineProperty(target, key, r), r; +}; +Object.defineProperty(exports, "__esModule", { value: true }); +var _a = cc._decorator, ccclass = _a.ccclass, property = _a.property; +var NewClass = /** @class */ (function (_super) { + __extends(NewClass, _super); + function NewClass() { + var _this = _super !== null && _super.apply(this, arguments) || this; + _this.label = null; + _this.text = 'hello'; + return _this; + // update (dt) {} + } + // LIFE-CYCLE CALLBACKS: + // onLoad () {} + NewClass.prototype.start = function () { + }; + //购买商品道具 + NewClass.prototype.buyProp = function (propName) { + // if(cc.fx.GameConfig.GM_INFO.coin < 1500){ + // MiniGameSdk.API.showToast("金币不足,无法购买道具"); + // return; + // } + // let propWindow = this.node.parent.parent.getChildByName("propWindow"); + // propWindow.active = false; + // cc.fx.GameConfig.GM_INFO.coin -= 1500; + }; + __decorate([ + property(cc.Label) + ], NewClass.prototype, "label", void 0); + __decorate([ + property + ], NewClass.prototype, "text", void 0); + NewClass = __decorate([ + ccclass + ], NewClass); + return NewClass; +}(cc.Component)); +exports.default = NewClass; cc._RF.pop(); } @@ -3928,21 +851,13 @@ cc._RF.pop(); }); } })(); -<<<<<<< HEAD -//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImFzc2V0c1xcU2NyaXB0XFxwcm9wXFxTdGFyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSxvQkFBb0I7QUFDcEIsd0VBQXdFO0FBQ3hFLG1CQUFtQjtBQUNuQixrRkFBa0Y7QUFDbEYsOEJBQThCO0FBQzlCLGtGQUFrRjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBRWxGLDhCQUFpQztBQUUzQixJQUFBLEtBQXNCLEVBQUUsQ0FBQyxVQUFVLEVBQWxDLE9BQU8sYUFBQSxFQUFFLFFBQVEsY0FBaUIsQ0FBQztBQUsxQztJQUFrQyx3QkFBWTtJQUE5QztRQUFBLHFFQW1DQztRQWpDRyxVQUFJLEdBQVcsRUFBRSxDQUFDO1FBRWxCLDRCQUE0QjtRQUU1QixzQkFBZ0IsR0FBbUIsSUFBSSxDQUFDOztRQTRCeEMsaUJBQWlCO0lBQ3JCLENBQUM7SUEzQkcscUJBQU0sR0FBTjtJQUVBLENBQUM7SUFFRCxvQkFBSyxHQUFMO0lBQ0EsQ0FBQztJQUVELG1CQUFJLEdBQUosVUFBSyxJQUFJO1FBQ0wsSUFBRyxJQUFJO1lBQUUsSUFBSSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUM7UUFDMUIsSUFBSSxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsTUFBTSxDQUFDLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQztRQUMvQyxJQUFJLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxZQUFZLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDO1FBQ3RGLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFDLENBQUMsQ0FBQztJQUN0QyxDQUFDO0lBR0QseUJBQVUsR0FBVjtRQUNJLElBQUksQ0FBQyxJQUFJLEVBQUcsQ0FBQztRQUNiLElBQUksQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLE1BQU0sQ0FBQyxDQUFDLFlBQVksQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUM7UUFDdEYsSUFBRyxJQUFJLENBQUMsSUFBSSxJQUFJLENBQUMsRUFBQztZQUNkLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDO1lBQ2pDLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUM7WUFDcEIsYUFBVyxDQUFDLFNBQVMsQ0FBQyxTQUFTLEVBQUUsQ0FBQztZQUNsQyx1QkFBdUI7U0FDMUI7SUFDTCxDQUFDO0lBMUJEO1FBREMsUUFBUSxDQUFDLEVBQUUsQ0FBQyxXQUFXLENBQUM7a0RBQ2U7SUFOdkIsSUFBSTtRQUR4QixPQUFPO09BQ2EsSUFBSSxDQW1DeEI7SUFBRCxXQUFDO0NBbkNELEFBbUNDLENBbkNpQyxFQUFFLENBQUMsU0FBUyxHQW1DN0M7a0JBbkNvQixJQUFJIiwiZmlsZSI6IiIsInNvdXJjZVJvb3QiOiIvIiwic291cmNlc0NvbnRlbnQiOlsiLy8gTGVhcm4gVHlwZVNjcmlwdDpcclxuLy8gIC0gaHR0cHM6Ly9kb2NzLmNvY29zLmNvbS9jcmVhdG9yL21hbnVhbC9lbi9zY3JpcHRpbmcvdHlwZXNjcmlwdC5odG1sXHJcbi8vIExlYXJuIEF0dHJpYnV0ZTpcclxuLy8gIC0gaHR0cHM6Ly9kb2NzLmNvY29zLmNvbS9jcmVhdG9yL21hbnVhbC9lbi9zY3JpcHRpbmcvcmVmZXJlbmNlL2F0dHJpYnV0ZXMuaHRtbFxyXG4vLyBMZWFybiBsaWZlLWN5Y2xlIGNhbGxiYWNrczpcclxuLy8gIC0gaHR0cHM6Ly9kb2NzLmNvY29zLmNvbS9jcmVhdG9yL21hbnVhbC9lbi9zY3JpcHRpbmcvbGlmZS1jeWNsZS1jYWxsYmFja3MuaHRtbFxyXG5cclxuaW1wb3J0IE1hcENvbnJvbGVyIGZyb20gXCIuLi9NYXBcIjtcclxuXHJcbmNvbnN0IHtjY2NsYXNzLCBwcm9wZXJ0eX0gPSBjYy5fZGVjb3JhdG9yO1xyXG5cclxuXHJcblxyXG5AY2NjbGFzc1xyXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBTdGFyIGV4dGVuZHMgY2MuQ29tcG9uZW50IHtcclxuICAgIHN0YXRpYyBfaW5zdGFuY2U6IGFueTtcclxuICAgIHRpbWU6IG51bWJlciA9IDYwO1xyXG5cclxuICAgIC8vIG1hcEluZm86IG51bWJlcltdW10gPSBbXTtcclxuICAgIEBwcm9wZXJ0eShjYy5TcHJpdGVBdGxhcylcclxuICAgIHN0YXJfU3ByaXRlRnJhbWU6IGNjLlNwcml0ZUF0bGFzID0gbnVsbDtcclxuXHJcbiAgICBvbkxvYWQgKCkge1xyXG5cclxuICAgIH0gXHJcblxyXG4gICAgc3RhcnQgKCkge1xyXG4gICAgfVxyXG5cclxuICAgIGluaXQodGltZSl7XHJcbiAgICAgICAgaWYodGltZSkgdGhpcy50aW1lID0gdGltZTtcclxuICAgICAgICB0aGlzLm5vZGUuZ2V0Q2hpbGRCeU5hbWUoXCJ0aW1lXCIpLmFjdGl2ZSA9IHRydWU7XHJcbiAgICAgICAgdGhpcy5ub2RlLmdldENoaWxkQnlOYW1lKFwidGltZVwiKS5nZXRDb21wb25lbnQoY2MuTGFiZWwpLnN0cmluZyA9IHRoaXMudGltZS50b1N0cmluZygpO1xyXG4gICAgICAgIHRoaXMuc2NoZWR1bGUodGhpcy51cGRhdGVUaW1lLCAxKTtcclxuICAgIH1cclxuXHJcbiAgICBcclxuICAgIHVwZGF0ZVRpbWUoKXtcclxuICAgICAgICB0aGlzLnRpbWUgLS07XHJcbiAgICAgICAgdGhpcy5ub2RlLmdldENoaWxkQnlOYW1lKFwidGltZVwiKS5nZXRDb21wb25lbnQoY2MuTGFiZWwpLnN0cmluZyA9IHRoaXMudGltZS50b1N0cmluZygpO1xyXG4gICAgICAgIGlmKHRoaXMudGltZSA8PSAwKXtcclxuICAgICAgICAgICAgdGhpcy51bnNjaGVkdWxlKHRoaXMudXBkYXRlVGltZSk7XHJcbiAgICAgICAgICAgIHRoaXMubm9kZS5kZXN0cm95KCk7XHJcbiAgICAgICAgICAgIE1hcENvbnJvbGVyLl9pbnN0YW5jZS5mYWlsTGV2ZWwoKTtcclxuICAgICAgICAgICAgLy8gdGhpcy5ub2RlLmRlc3Ryb3koKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgLy8gdXBkYXRlIChkdCkge31cclxufVxyXG4iXX0= -======= -//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImFzc2V0c1xcU2NyaXB0XFxDb250cm9sTWFuYWdlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsb0JBQW9CO0FBQ3BCLHdFQUF3RTtBQUN4RSxtQkFBbUI7QUFDbkIsa0ZBQWtGO0FBQ2xGLDhCQUE4QjtBQUM5QixrRkFBa0Y7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUU1RSxJQUFBLEtBQXNCLEVBQUUsQ0FBQyxVQUFVLEVBQWxDLE9BQU8sYUFBQSxFQUFFLFFBQVEsY0FBaUIsQ0FBQztBQUcxQztJQUFzQyw0QkFBWTtJQUFsRDtRQUFBLHFFQXVLQztRQXBLRyxTQUFHLEdBQVksSUFBSSxDQUFDO1FBRXBCLFNBQUcsR0FBYyxJQUFJLENBQUM7UUFFdEIsZUFBUyxHQUFjLElBQUksQ0FBQztRQUU1QixVQUFJLEdBQWMsSUFBSSxDQUFDOztRQTZKdkIsaUJBQWlCO0lBQ3JCLENBQUM7SUFySkcsd0JBQXdCO0lBRXhCLGVBQWU7SUFFZix3QkFBSyxHQUFMO1FBQ0ksSUFBSSxDQUFDLFFBQVEsR0FBRyxFQUFFLENBQUM7UUFDbkIsSUFBSSxDQUFDLFlBQVksR0FBRyxFQUFFLENBQUM7UUFDdkIsSUFBSSxDQUFDLFFBQVEsR0FBRyxJQUFJLENBQUM7UUFDckIsSUFBSSxDQUFDLFNBQVMsR0FBRyxLQUFLLENBQUM7UUFDdkIsSUFBSSxDQUFDLElBQUksR0FBRyxLQUFLLENBQUM7UUFDbEIsSUFBSSxDQUFDLFNBQVMsR0FBRyxDQUFDLENBQUM7SUFDdkIsQ0FBQztJQUVELDhCQUFXLEdBQVgsVUFBWSxHQUFHO1FBQ1gsR0FBRyxDQUFDLFdBQVcsQ0FBQyxFQUFFLEVBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUN4QixJQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBQztZQUN4QixJQUFJLE1BQU0sR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLE1BQU0sR0FBQyxDQUFDLENBQUM7WUFDcEMsSUFB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QUFDOzBDQUNHO0lBVE4sUUFBUTtRQUQ1QixPQUFPO09BQ2EsUUFBUSxDQXVLNUI7SUFBRCxlQUFDO0NBdktELEFBdUtDLENBdktxQyxFQUFFLENBQUMsU0FBUyxHQXVLakQ7a0JBdktvQixRQUFRIiwiZmlsZSI6IiIsInNvdXJjZVJvb3QiOiIvIiwic291cmNlc0NvbnRlbnQiOlsiLy8gTGVhcm4gVHlwZVNjcmlwdDpcclxuLy8gIC0gaHR0cHM6Ly9kb2NzLmNvY29zLmNvbS9jcmVhdG9yL21hbnVhbC9lbi9zY3JpcHRpbmcvdHlwZXNjcmlwdC5odG1sXHJcbi8vIExlYXJuIEF0dHJpYnV0ZTpcclxuLy8gIC0gaHR0cHM6Ly9kb2NzLmNvY29zLmNvbS9jcmVhdG9yL21hbnVhbC9lbi9zY3JpcHRpbmcvcmVmZXJlbmNlL2F0dHJpYnV0ZXMuaHRtbFxyXG4vLyBMZWFybiBsaWZlLWN5Y2xlIGNhbGxiYWNrczpcclxuLy8gIC0gaHR0cHM6Ly9kb2NzLmNvY29zLmNvbS9jcmVhdG9yL21hbnVhbC9lbi9zY3JpcHRpbmcvbGlmZS1jeWNsZS1jYWxsYmFja3MuaHRtbFxyXG5cclxuY29uc3Qge2NjY2xhc3MsIHByb3BlcnR5fSA9IGNjLl9kZWNvcmF0b3I7XHJcblxyXG5AY2NjbGFzc1xyXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBOZXdDbGFzcyBleHRlbmRzIGNjLkNvbXBvbmVudCB7XHJcblxyXG4gICAgQHByb3BlcnR5KGNjLk5vZGUpXHJcbiAgICBNYXA6IGNjLk5vZGUgPSBudWxsO1xyXG4gICAgQHByb3BlcnR5KGNjLlByZWZhYilcclxuICAgIHRpcDogY2MuUHJlZmFiID0gbnVsbDtcclxuICAgIEBwcm9wZXJ0eShjYy5QcmVmYWIpXHJcbiAgICByZWluZm9yY2U6IGNjLlByZWZhYiA9IG51bGw7XHJcbiAgICBAcHJvcGVydHkoY2MuUHJlZmFiKVxyXG4gICAgc29pbDogY2MuUHJlZmFiID0gbnVsbDtcclxuICAgIFxyXG5cclxuICAgIHRpcEFycmF5OmFueTtcclxuICAgIGNvbnRyb2xBcnJheTphbnk7XHJcbiAgICBjYW5Ub3VjaDpib29sZWFuO1xyXG4gICAgUmVpbmZvcmNlOmJvb2xlYW47XHJcbiAgICBTb2lsOmJvb2xlYW47XHJcbiAgICBtYXBIZWlnaHQ6bnVtYmVyO1xyXG4gICAgLy8gTElGRS1DWUNMRSBDQUxMQkFDS1M6XHJcblxyXG4gICAgLy8gb25Mb2FkICgpIHt9XHJcblxyXG4gICAgc3RhcnQgKCkge1xyXG4gICAgICAgIHRoaXMudGlwQXJyYXkgPSBbXTtcclxuICAgICAgICB0aGlzLmNvbnRyb2xBcnJheSA9IFtdO1xyXG4gICAgICAgIHRoaXMuY2FuVG91Y2ggPSB0cnVlO1xyXG4gICAgICAgIHRoaXMuUmVpbmZvcmNlID0gZmFsc2U7XHJcbiAgICAgICAgdGhpcy5Tb2lsID0gZmFsc2U7XHJcbiAgICAgICAgdGhpcy5tYXBIZWlnaHQgPSAwO1xyXG4gICAgfVxyXG5cclxuICAgIHNldFBvc2l0aW9uKHRpcCl7XHJcbiAgICAgICAgdGlwLnNldFBvc2l0aW9uKDMwLC0yNSk7XHJcbiAgICAgICAgaWYodGhpcy50aXBBcnJheS5sZW5ndGggPiAwKXtcclxuICAgICAgICAgICAgbGV0IGxlbmd0aCA9IHRoaXMudGlwQXJyYXkubGVuZ3RoKzE7XHJcbiAgICAgICAgICAgIGxldCBwb3NZID0gTWF0aC5jZWlsKGxlbmd0aC84KSAtIDE7XHJcbiAgICAgICAgICAgIGxldCBwb3NYID0gbGVuZ3RoIC0gTWF0aC5mbG9vcihwb3NZKSo4IC0gMTtcclxuICAgICAgICAgICAgdGlwLnNldFBvc2l0aW9uKDMwICsgNDgqcG9zWCwtMjUgLTQ4KnBvc1kgKyB0aGlzLm1hcEhlaWdodCk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG4gICAgLy/muIXnqbrmiYDmnIlcclxuICAgIHJlbW92ZUFsbFRpcCgpe1xyXG4gICAgICAgIGlmKCF0aGlzLmNhblRvdWNoKSByZXR1cm47XHJcbiAgICAgICAgaWYodGhpcy50aXBBcnJheS5sZW5ndGggPiAwKXtcclxuICAgICAgICAgICAgY2MuZnguQXVkaW9NYW5hZ2VyLl9pbnN0YW5jZS5wbGF5RWZmZWN0KFwicWluZ2tvbmdcIixudWxsKTtcclxuICAgICAgICAgICAgZm9yKGxldCBpPTA7IGk8dGhpcy50aXBBcnJheS5sZW5ndGg7aSsrKXtcclxuICAgICAgICAgICAgICAgIGxldCB0aXAgPSB0aGlzLnRpcEFycmF5W2ldO1xyXG4gICAgICAgICAgICAgICAgdGlwLmFjdGl2ZSA9IGZhbHNlO1xyXG4gICAgICAgICAgICAgICAgdGlwLnJlbW92ZUZyb21QYXJlbnQodGhpcy5NYXApO1xyXG4gICAgICAgICAgICAgICAgdGlwID0gbnVsbDtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB0aGlzLnRpcEFycmF5ID0gW107XHJcbiAgICAgICAgICAgIHRoaXMuY29udHJvbEFycmF5ID0gW107XHJcbiAgICAgICAgICAgIHZhciBkcmF3aW5nUmVzZXQgPSBjYy5meC5HYW1lQ29uZmlnLkNMSUNLX0RBVEEuZHJhd2luZ1Jlc2V0ICsgMTtcclxuICAgICAgICAgICAgY2MuZnguR2FtZUNvbmZpZy5DTElDS19TRVQoXCJkcmF3aW5nUmVzZXRcIixkcmF3aW5nUmVzZXQpO1xyXG4gICAgICAgICAgICBjYy5meC5Ob3RpZmljYXRpb25zLmVtaXQoY2MuZnguTWVzc2FnZS5yZW1vdmVUaXAsXCJyZW1vdmVcIik7XHJcbiAgICAgICAgICAgIHRoaXMubWFwSGVpZ2h0ID0gMDtcclxuICAgICAgICB9XHJcbiAgICB9XHJcbiAgICAvL+aSpOWbnuS4gOatpVxyXG4gICAgYmFja19DbGljaygpe1xyXG4gICAgICAgIGlmKCF0aGlzLmNhblRvdWNoKSByZXR1cm47XHJcbiAgICAgICAgaWYodGhpcy50aXBBcnJheS5sZW5ndGggPiAwKXtcclxuICAgICAgICAgICAgY2MuZnguQXVkaW9NYW5hZ2VyLl9pbnN0YW5jZS5wbGF5RWZmZWN0KFwiY2hlaHVpXCIsbnVsbCk7XHJcbiAgICAgICAgICAgIGxldCB0aXAgPSB0aGlzLnRpcEFycmF5W3RoaXMudGlwQXJyYXkubGVuZ3RoLTFdO1xyXG4gICAgICAgICAgICB0aXAuYWN0aXZlID0gZmFsc2U7XHJcbiAgICAgICAgICAgIHRpcC5yZW1vdmVGcm9tUGFyZW50KHRoaXMuTWFwKTtcclxuICAgICAgICAgICAgdGlwID0gbnVsbDtcclxuICAgICAgICAgICAgdGhpcy50aXBBcnJheS5wb3AoKTtcclxuICAgICAgICAgICAgdGhpcy5jb250cm9sQXJyYXkucG9wKCk7XHJcbiAgICAgICAgICAgIHZhciBkcmF3aW5nQmFjayA9IGNjLmZ4LkdhbWVDb25maWcuQ0xJQ0tfREFUQS5kcmF3aW5nQmFjayArIDE7XHJcbiAgICAgICAgICAgIGNjLmZ4LkdhbWVDb25maWcuQ0xJQ0tfU0VUKFwiZHJhd2luZ0JhY2tcIixkcmF3aW5nQmFjayk7XHJcbiAgICAgICAgICAgIGNjLmZ4Lk5vdGlmaWNhdGlvbnMuZW1pdChjYy5meC5NZXNzYWdlLnJlbW92ZVRpcCxcImJhY2tcIik7XHJcbiAgICAgICAgICAgIGlmKHRoaXMudGlwQXJyYXkubGVuZ3RoID49IDI0KXtcclxuICAgICAgICAgICAgICAgIGlmKCh0aGlzLnRpcEFycmF5Lmxlbmd0aCApJTggPT0gMCl7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5tYXBNb3ZlKGZhbHNlKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICAvL+eCueWHu+S6i+S7tlxyXG4gICAgYnRuX0NsaWNrKHRhcmdldCxkYXRhKXtcclxuICAgICAgICB2YXIgR2FtZU1hbmFnZXIgPSB0aGlzLm5vZGUucGFyZW50LmdldENvbXBvbmVudChcIkdhbWVNYW5hZ2VyXCIpO1xyXG4gICAgICAgIGlmKEdhbWVNYW5hZ2VyLmJ0bkNsaWNrID09IHRydWUpe1xyXG4gICAgICAgICAgICBHYW1lTWFuYWdlci5idG5DbGljayA9IGZhbHNlO1xyXG4gICAgICAgICAgICBjYy5meC5Ob3RpZmljYXRpb25zLmVtaXQoY2MuZnguTWVzc2FnZS5ndWlkZU5leHQpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBjYy5meC5Ob3RpZmljYXRpb25zLmVtaXQoY2MuZnguTWVzc2FnZS5jb250cm9sLGRhdGEpO1xyXG4gICAgICAgIGlmKCF0aGlzLmNhblRvdWNoKSByZXR1cm47XHJcbiAgICAgICAgbGV0IHByZWZhYiA9IHRoaXMudGlwO1xyXG4gICAgICAgIGlmKGRhdGEgPT0gXCJyZWluZm9yY2VcIiB8fCBkYXRhID09IFwic29pbFwiKXtcclxuICAgICAgICAgICAgcHJlZmFiID0gdGhpc1tkYXRhXTtcclxuICAgICAgICAgICAgaWYoZGF0YSA9PSBcInJlaW5mb3JjZVwiKXtcclxuICAgICAgICAgICAgICAgIGlmKHRoaXMuUmVpbmZvcmNlKXtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLlJlaW5mb3JjZSA9IGZhbHNlO1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuYmFja19DbGljaygpO1xyXG4gICAgICAgICAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICAgICAgICAgIH1lbHNle1xyXG4gICAgICAgICAgICAgICAgICAgIGNjLmZ4LkF1ZGlvTWFuYWdlci5faW5zdGFuY2UucGxheUVmZmVjdChcImppbmVuZ1wiLG51bGwpO1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuUmVpbmZvcmNlID0gdHJ1ZTtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLlNvaWwgPSBmYWxzZTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfSBcclxuICAgICAgICAgICAgZWxzZSBpZihkYXRhID09IFwic29pbFwiKXtcclxuICAgICAgICAgICAgICAgIGlmKHRoaXMuU29pbCl7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5Tb2lsID0gZmFsc2U7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5iYWNrX0NsaWNrKCk7XHJcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgICAgICAgICAgfWVsc2V7XHJcbiAgICAgICAgICAgICAgICAgICAgY2MuZnguQXVkaW9NYW5hZ2VyLl9pbnN0YW5jZS5wbGF5RWZmZWN0KFwiamluZW5nXCIsbnVsbCk7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5Tb2lsID0gdHJ1ZTtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLlJlaW5mb3JjZSA9IGZhbHNlO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9IFxyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNle1xyXG4gICAgICAgICAgICBjYy5meC5BdWRpb01hbmFnZXIuX2luc3RhbmNlLnBsYXlFZmZlY3QoXCJmYW5neGlhbmdcIixudWxsKTtcclxuICAgICAgICAgICAgdGhpcy5SZWluZm9yY2UgPSBmYWxzZTtcclxuICAgICAgICAgICAgdGhpcy5Tb2lsID0gZmFsc2U7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGxldCB0aXAgPSBjYy5pbnN0YW50aWF0ZShwcmVmYWIpO1xyXG4gICAgICAgIGlmKGRhdGEgPT0gXCJ1cFwiKSB0aXAuYW5nbGUgPSAxODA7XHJcbiAgICAgICAgaWYoZGF0YSA9PSBcImxlZnRcIikgdGlwLmFuZ2xlID0gLTkwO1xyXG4gICAgICAgIGlmKGRhdGEgPT0gXCJyaWdodFwiKSB0aXAuYW5nbGUgPSA5MDtcclxuICAgICAgICB0aXAucGFyZW50ID0gdGhpcy5NYXA7XHJcbiAgICBcclxuICAgICAgICBpZih0aGlzLmNvbnRyb2xBcnJheVt0aGlzLmNvbnRyb2xBcnJheS5sZW5ndGgtMV0gPT0gXCJyZWluZm9yY2VcIiB8fCBcclxuICAgICAgICAgICAgdGhpcy5jb250cm9sQXJyYXlbdGhpcy5jb250cm9sQXJyYXkubGVuZ3RoLTFdID09IFwic29pbFwiKXtcclxuICAgICAgICAgICAgICAgIGlmKGRhdGEgPT0gXCJyZWluZm9yY2VcIiB8fCBkYXRhID09IFwic29pbFwiKXtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLnRpcEFycmF5W3RoaXMudGlwQXJyYXkubGVuZ3RoLTFdLnJlbW92ZUZyb21QYXJlbnQoKTtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLnRpcEFycmF5W3RoaXMudGlwQXJyYXkubGVuZ3RoLTFdID0gbnVsbDtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLnRpcEFycmF5LnBvcCgpO1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuY29udHJvbEFycmF5LnBvcCgpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLnNldFBvc2l0aW9uKHRpcCk7XHJcblxyXG4gICAgICAgIHRoaXMudGlwQXJyYXkucHVzaCh0aXApO1xyXG4gICAgICAgIHRoaXMuY29udHJvbEFycmF5LnB1c2goZGF0YSk7XHJcbiAgICBcclxuICAgICAgICBpZih0aGlzLnRpcEFycmF5Lmxlbmd0aCA+PSAyNSl7XHJcbiAgICAgICAgICAgIGlmKCh0aGlzLnRpcEFycmF5Lmxlbmd0aCAtIDEpJTggPT0gMCl7XHJcbiAgICAgICAgICAgICAgICB0aGlzLm1hcE1vdmUodHJ1ZSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICB9XHJcbiAgICAvL+WcsOWbvuaUvuS4jeS4i+S6huS4iuS4i+enu+WKqFxyXG4gICAgbWFwTW92ZSh0eXBlKXtcclxuICAgICAgICBpZih0eXBlKSB0aGlzLm1hcEhlaWdodCArPSA0ODtcclxuICAgICAgICBlbHNlIHRoaXMubWFwSGVpZ2h0IC09IDQ4O1xyXG4gICAgICAgIGZvcihsZXQgaT0wOyBpPHRoaXMudGlwQXJyYXkubGVuZ3RoO2krKyl7XHJcbiAgICAgICAgICAgIGxldCB0aXAgPSB0aGlzLnRpcEFycmF5W2ldO1xyXG4gICAgICAgICAgICBpZih0eXBlKXRpcC55ICs9IDQ4O1xyXG4gICAgICAgICAgICBlbHNlIHRpcC55IC09IDQ4O1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICAvL+eCueWHu+W8gOWniyDliJvlu7rmsrPpgZNcclxuICAgIHN0YXJ0X0NsaWNrKCl7XHJcbiAgICAgICAgaWYoIXRoaXMuY2FuVG91Y2gpIHJldHVybjtcclxuICAgICAgICB0aGlzLmNhblRvdWNoID0gZmFsc2U7XHJcbiAgICAgICAgY2MuZnguQXVkaW9NYW5hZ2VyLl9pbnN0YW5jZS5wbGF5RWZmZWN0KFwiYnVpbGRcIixudWxsKTtcclxuICAgICAgICBjYy5meC5Ob3RpZmljYXRpb25zLmVtaXQoY2MuZnguTWVzc2FnZS5zdGFydEdhbWUsdGhpcy5jb250cm9sQXJyYXkpO1xyXG4gICAgfVxyXG5cclxuICAgIC8vIHVwZGF0ZSAoZHQpIHt9XHJcbn1cclxuIl19 ->>>>>>> 0a31a7a5abc2c505bf743aa596e1c765a0405152 +//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImFzc2V0c1xcc2hvcFxcc2NyaXB0XFxpdGVtLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUVNLElBQUEsS0FBd0IsRUFBRSxDQUFDLFVBQVUsRUFBbkMsT0FBTyxhQUFBLEVBQUUsUUFBUSxjQUFrQixDQUFDO0FBRzVDO0lBQXNDLDRCQUFZO0lBQWxEO1FBQUEscUVBMkJDO1FBeEJHLFdBQUssR0FBYSxJQUFJLENBQUM7UUFHdkIsVUFBSSxHQUFXLE9BQU8sQ0FBQzs7UUFvQnZCLGlCQUFpQjtJQUNyQixDQUFDO0lBcEJHLHdCQUF3QjtJQUV4QixlQUFlO0lBRWYsd0JBQUssR0FBTDtJQUVBLENBQUM7SUFFRCxRQUFRO0lBQ1IsMEJBQU8sR0FBUCxVQUFRLFFBQVE7UUFDWiw0Q0FBNEM7UUFDNUMsZ0RBQWdEO1FBQ2hELGNBQWM7UUFDZCxJQUFJO1FBQ0oseUVBQXlFO1FBQ3pFLDZCQUE2QjtRQUM3Qix5Q0FBeUM7SUFDN0MsQ0FBQztJQXJCRDtRQURDLFFBQVEsQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDOzJDQUNJO0lBR3ZCO1FBREMsUUFBUTswQ0FDYztJQU5OLFFBQVE7UUFENUIsT0FBTztPQUNhLFFBQVEsQ0EyQjVCO0lBQUQsZUFBQztDQTNCRCxBQTJCQyxDQTNCcUMsRUFBRSxDQUFDLFNBQVMsR0EyQmpEO2tCQTNCb0IsUUFBUSIsImZpbGUiOiIiLCJzb3VyY2VSb290IjoiLyIsInNvdXJjZXNDb250ZW50IjpbIlxyXG5cclxuY29uc3QgeyBjY2NsYXNzLCBwcm9wZXJ0eSB9ID0gY2MuX2RlY29yYXRvcjtcclxuXHJcbkBjY2NsYXNzXHJcbmV4cG9ydCBkZWZhdWx0IGNsYXNzIE5ld0NsYXNzIGV4dGVuZHMgY2MuQ29tcG9uZW50IHtcclxuXHJcbiAgICBAcHJvcGVydHkoY2MuTGFiZWwpXHJcbiAgICBsYWJlbDogY2MuTGFiZWwgPSBudWxsO1xyXG5cclxuICAgIEBwcm9wZXJ0eVxyXG4gICAgdGV4dDogc3RyaW5nID0gJ2hlbGxvJztcclxuICAgIC8vIExJRkUtQ1lDTEUgQ0FMTEJBQ0tTOlxyXG5cclxuICAgIC8vIG9uTG9hZCAoKSB7fVxyXG5cclxuICAgIHN0YXJ0KCkge1xyXG5cclxuICAgIH1cclxuXHJcbiAgICAvL+i0reS5sOWVhuWTgemBk+WFt1xyXG4gICAgYnV5UHJvcChwcm9wTmFtZSkge1xyXG4gICAgICAgIC8vIGlmKGNjLmZ4LkdhbWVDb25maWcuR01fSU5GTy5jb2luIDwgMTUwMCl7XHJcbiAgICAgICAgLy8gICAgIE1pbmlHYW1lU2RrLkFQSS5zaG93VG9hc3QoXCLph5HluIHkuI3otrPvvIzml6Dms5XotK3kubDpgZPlhbdcIik7XHJcbiAgICAgICAgLy8gICAgIHJldHVybjtcclxuICAgICAgICAvLyB9XHJcbiAgICAgICAgLy8gbGV0IHByb3BXaW5kb3cgPSB0aGlzLm5vZGUucGFyZW50LnBhcmVudC5nZXRDaGlsZEJ5TmFtZShcInByb3BXaW5kb3dcIik7XHJcbiAgICAgICAgLy8gcHJvcFdpbmRvdy5hY3RpdmUgPSBmYWxzZTtcclxuICAgICAgICAvLyBjYy5meC5HYW1lQ29uZmlnLkdNX0lORk8uY29pbiAtPSAxNTAwO1xyXG4gICAgfVxyXG5cclxuICAgIC8vIHVwZGF0ZSAoZHQpIHt9XHJcbn1cclxuIl19 //------QC-SOURCE-SPLIT------ (function() { var nodeEnv = typeof require !== 'undefined' && typeof process !== 'undefined'; var __module = nodeEnv ? module : {exports:{}}; -<<<<<<< HEAD - var __filename = 'preview-scripts/assets/Script/lq_collide_system/lq_collide_base.js'; -======= - var __filename = 'preview-scripts/assets/Script/DynamicAtlasManager.js'; ->>>>>>> 0a31a7a5abc2c505bf743aa596e1c765a0405152 + var __filename = 'preview-scripts/assets/Script/Sdk/MiniGameSdk.js'; var __require = nodeEnv ? function (request) { return cc.require(request); } : function (request) { @@ -3950,125 +865,1158 @@ cc._RF.pop(); }; function __define (exports, require, module) { if (!nodeEnv) {__quick_compile_project__.registerModule(__filename, module);}"use strict"; -<<<<<<< HEAD -cc._RF.push(module, 'c22a3wcU/tBdJ/qjn/Q6uuA', 'lq_collide_base'); -// Script/lq_collide_system/lq_collide_base.ts +cc._RF.push(module, 'c1af9nd7gNA95YJ04h9DdNX', 'MiniGameSdk'); +// Script/Sdk/MiniGameSdk.ts -"use strict"; -var __extends = (this && this.__extends) || (function () { - var extendStatics = function (d, b) { - extendStatics = Object.setPrototypeOf || - ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) || - function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; }; - return extendStatics(d, b); - }; - return function (d, b) { - extendStatics(d, b); - function __() { this.constructor = d; } - d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); - }; -})(); -var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) { - var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; - if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc); - else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; - return c > 3 && r && Object.defineProperty(target, key, r), r; -}; -Object.defineProperty(exports, "__esModule", { value: true }); -exports.LQCollideBase = void 0; -var ccclass = cc._decorator.ccclass; -var executeInEditMode = cc._decorator.executeInEditMode; -var PolygonCollider = cc.PolygonCollider; -var property = cc._decorator.property; -var lq_collide_1 = require("./lq_collide"); -var lq_const_1 = require("../lq_base/data/lq_const"); -var LQCollideBase = /** @class */ (function (_super) { - __extends(LQCollideBase, _super); - function LQCollideBase() { - var _this = _super !== null && _super.apply(this, arguments) || this; - _this.auto_update_point = true; - return _this; - } - LQCollideBase.prototype.find_collide = function () { - var collide = this.node.getComponent(lq_collide_1.LQCollide); - if (!collide) { - console.error(this.node.name + ':没有找到LQCollide组件'); - return undefined; - } - return collide; - }; - LQCollideBase.prototype.onLoad = function () { - var collide = this.find_collide(); - if (!collide) { - return; - } - collide.init_lq_collide(); - }; - LQCollideBase.prototype.onEnable = function () { - var collide = this.find_collide(); - if (!collide) { - return; - } - collide.enable_lq_collide(); - }; - LQCollideBase.prototype.onDisable = function () { - var collide = this.find_collide(); - if (!collide) { - return; - } - collide.disable_lq_collide(); - }; - LQCollideBase.prototype.onDestroy = function () { - var collide = this.find_collide(); - if (!collide) { - return; - } - }; - LQCollideBase.prototype.onFocusInEditor = function () { - var collide = this.find_collide(); - if (!collide) { - return; - } - }; - LQCollideBase.prototype.onLostFocusInEditor = function () { - var collide = this.find_collide(); - if (!collide) { - return; - } - }; - LQCollideBase.prototype.resetInEditor = function () { - var collide = this.find_collide(); - if (!collide) { - return; - } - }; - LQCollideBase.prototype.update = function (dt) { - if (!CC_EDITOR || !this.auto_update_point) { - return; - } - var collide = this.find_collide(); - if (!collide) { - return; - } - if (collide.collide_shape !== lq_const_1.LQCollideShape.Polygon) { - return; - } - var polygonCollider = this.node.getComponent(PolygonCollider); - if (!polygonCollider) { - return; - } - collide.polygon_points = polygonCollider.points; - }; - __decorate([ - property({ tooltip: '多边形自动同步cocos PolygonCollider 组件中的碰撞点' }) - ], LQCollideBase.prototype, "auto_update_point", void 0); - LQCollideBase = __decorate([ - ccclass, - executeInEditMode - ], LQCollideBase); - return LQCollideBase; -}(cc.Component)); -exports.LQCollideBase = LQCollideBase; +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.MiniGameSdk = void 0; +/** + * 小游戏平台SDK工具封装,目前只支持微信和抖音平台 + */ +var MiniGameSdk; +(function (MiniGameSdk) { + function isWechat() { + //@ts-ignore + return window.wx !== null && window.wx !== undefined; + } + MiniGameSdk.isWechat = isWechat; + function isBytedance() { + //@ts-ignore + return window.tt !== null && window.tt !== undefined; + } + MiniGameSdk.isBytedance = isBytedance; + function getSysWinSize() { + var sys; + if (isWechat()) { + // @ts-ignore + sys = wx.getSystemInfoSync(); + } + else if (isBytedance()) { + // @ts-ignore + sys = tt.getSystemInfoSync(); + } + var size = { width: 0, height: 0 }; + if (sys) { + size.width = sys.windowWidth; + size.height = sys.windowHeight; + } + return size; + } + /** + * 插屏广告。微信抖音都支持! + */ + var ADInterstitial = /** @class */ (function () { + function ADInterstitial(adUid) { + this._adUid = adUid; + } + Object.defineProperty(ADInterstitial.prototype, "aduid", { + get: function () { + return this._adUid; + }, + enumerable: false, + configurable: true + }); + ADInterstitial.prototype.show = function () { + var _this = this; + var _a, _b; + // @ts-ignore + if (isWechat() && !wx.createInterstitialAd) { + console.warn('wechat unsupport interstitial AD!'); + this._interstitial = null; + return; + } + // @ts-ignore + if (isBytedance() && !tt.createInterstitialAd) { + console.warn('bytedance unsupport interstitial AD!'); + this._interstitial = null; + return; + } + if (this._interstitial) { + this._interstitial.load(); + } + else { + if (isWechat()) { + // @ts-ignore + this._interstitial = wx.createInterstitialAd({ adUnitId: this._adUid }); + } + else if (isBytedance()) { + // @ts-ignore + this._interstitial = tt.createInterstitialAd({ adUnitId: this._adUid }); + } + else { + this._interstitial = null; + } + (_a = this._interstitial) === null || _a === void 0 ? void 0 : _a.onLoad(function () { + console.log('load interstitial ad success'); + _this._interstitial.show().catch(function (err) { + console.log('catch interstitial ad error:', err); + }); + }); + (_b = this._interstitial) === null || _b === void 0 ? void 0 : _b.onError(function (err) { + console.log('interstitial ad on error:', err); + }); + } + }; + ADInterstitial.prototype.destory = function () { + var _a; + (_a = this._interstitial) === null || _a === void 0 ? void 0 : _a.destroy(); + }; + return ADInterstitial; + }()); + var ADBanner = /** @class */ (function () { + /** + * 抖音和微信都支持 + * 横幅广告。预估宽度默认为300,预估高度为140。如果你不确定就按默认值来。 + * @param adUid 广告UID,后端配置 + * @param isTop 是否在屏幕顶部展示。内部会自动居中计算位置。 + * @param bannerWidth 横幅广告的预估宽度。默认300 + * @param autoShow 广告加载完成后是否立刻显示,默认为不显示 + */ + function ADBanner(adUid, param, bannerWidth, autoShow) { + if (bannerWidth === void 0) { bannerWidth = 300; } + if (autoShow === void 0) { autoShow = false; } + this._adUid = adUid; + this.create(autoShow, bannerWidth, param); // 默认300比较合适 + } + Object.defineProperty(ADBanner.prototype, "aduid", { + get: function () { + return this._adUid; + }, + enumerable: false, + configurable: true + }); + ADBanner.prototype.create = function (autoShow, bannerWidth, param) { + var _this = this; + var _a, _b; + if (!isWechat() && !isBytedance()) { + this._banner = null; + return; + } + this.destroy(); + var winSize = getSysWinSize(); + var height = bannerWidth * 0.4; + var top = 0, left = 0; + if (typeof param === "boolean") { + left = (winSize.width - bannerWidth) / 2; + top = param ? 5 : (winSize.height - height); + } + else { + left = param.left; + top = param.top; + } + var params = { + adUnitId: this._adUid, + adIntervals: 30, + style: { left: left, top: top, width: bannerWidth } + }; + if (isWechat()) { + // @ts-ignore + this._banner = wx.createBannerAd(params); + } + else if (isBytedance()) { + // @ts-ignore + this._banner = tt.createBannerAd(params); + } + else { + this._banner = null; + } + (_a = this._banner) === null || _a === void 0 ? void 0 : _a.onError(function (err) { + console.log('ad banner error:', err); + }); + (_b = this._banner) === null || _b === void 0 ? void 0 : _b.onLoad(function () { + autoShow && _this._banner.show(); + }); + }; + ADBanner.prototype.show = function () { + var _a; + (_a = this._banner) === null || _a === void 0 ? void 0 : _a.show(); + }; + ADBanner.prototype.hide = function () { + var _a; + (_a = this._banner) === null || _a === void 0 ? void 0 : _a.hide(); + }; + ADBanner.prototype.destroy = function () { + var _a; + (_a = this._banner) === null || _a === void 0 ? void 0 : _a.destroy(); + }; + return ADBanner; + }()); + var ADCustom = /** @class */ (function () { + /** + * 由于原生模板广告在微信服务后端可以定制宽度大小,个数,缩放比例等,所以位置调整要根据设置的宽度来定。抖音不支持! + * @param adUid 广告UID,后端配置 + * @param top 从左上角开始,距离屏幕顶部的距离。注意:这个数据为设备屏幕宽度width。如果需要获取屏幕的像素,需要乘以设备像素比Pixel-Ratio,例如iPhone 13 Pro的Pixel-Ratio为3,像素为Width*3。 + * @param left 从左上角开始,距离屏幕最左边的距离。注意:这个数据为设备屏幕宽度width。如果需要获取屏幕的像素,需要乘以设备像素比Pixel-Ratio,例如iPhone 13 Pro的Pixel-Ratio为3,像素为Width*3。 + * @param scale 原生模板广告的尺寸,默认为1,即100%。此值在微信服务后端广告中获得,默认为100%,目前有100%,90%,80%三种,一般情况不用修改。若有修改,记得传入值,例如90%就传入0.9。 + */ + function ADCustom(adUid, top, left, scale) { + if (top === void 0) { top = 0; } + if (left === void 0) { left = 0; } + if (scale === void 0) { scale = 1.0; } + this._adUid = adUid; + this.createCustomAd(top, left, scale); + } + Object.defineProperty(ADCustom.prototype, "aduid", { + get: function () { + return this._adUid; + }, + enumerable: false, + configurable: true + }); + ADCustom.prototype.createCustomAd = function (top, left, scale) { + var _a; + if (!isWechat()) { // only wechat support custom ad + this._adCustom = null; + console.log('Only wechat support Custom Ad'); + return; + } + this.destroy(); + // 原生模板5个应用宽度为375,若设置了缩放比例,则宽度也需要设置 + // let width = 375 * this._scale; + // let newLeft = (sys.windowWidth - width) / 2; + // let newTop = sys.windowHeight / 2; // 120是预估高度 + // @ts-ignore + this._adCustom = wx.createCustomAd({ + adUnitId: this._adUid, + //@ts-ignore + style: { left: left, top: top, fixed: true } + }); + (_a = this._adCustom) === null || _a === void 0 ? void 0 : _a.onError(function (err) { + console.log('ad custom error:', err); + }); + }; + ADCustom.prototype.show = function () { + var _a; + (_a = this._adCustom) === null || _a === void 0 ? void 0 : _a.show(); + }; + ADCustom.prototype.hide = function () { + var _a; + (_a = this._adCustom) === null || _a === void 0 ? void 0 : _a.hide(); + }; + ADCustom.prototype.destroy = function () { + var _a; + (_a = this._adCustom) === null || _a === void 0 ? void 0 : _a.destroy(); + }; + return ADCustom; + }()); + /** + * 视频广告用户点击行为结果 + */ + var EAdVideoResult; + (function (EAdVideoResult) { + /** + * 用户看完了广告,游戏可发放奖励。 + */ + EAdVideoResult[EAdVideoResult["ACCEPT"] = 0] = "ACCEPT"; + /** + * 用户中途关闭了广告,即未看完状态。不可发放奖励。 + */ + EAdVideoResult[EAdVideoResult["REJECT"] = 1] = "REJECT"; + /** + * 广告组件内部发生了错误。不可发放奖励。 + */ + EAdVideoResult[EAdVideoResult["ERROR"] = 2] = "ERROR"; + })(EAdVideoResult = MiniGameSdk.EAdVideoResult || (MiniGameSdk.EAdVideoResult = {})); + var ADVideo = /** @class */ (function () { + function ADVideo(adUid) { + this._adVideo = null; + this._adUid = adUid; + } + Object.defineProperty(ADVideo.prototype, "aduid", { + get: function () { + return this._adUid; + }, + enumerable: false, + configurable: true + }); + /** + * 由于微信和抖音视频广告机制不同,微信可以看的视频广告个数只有0和1个,抖音平台则可以看0~maxVideoCount + * @param onResult 两个参数:第一个res是EAdVideoResult定义,第二count是用户看了多少个视频广告。 + * @param target onResult的拥有者 + * @param maxVideoCount 可以连续看最大视频个数,可最大化商业效率。默认为3个。 + * @returns + */ + ADVideo.prototype.show = function (onResult, target, maxVideoCount) { + var _this = this; + var _a, _b, _c, _d, _e; + if (maxVideoCount === void 0) { maxVideoCount = 3; } + var callback = function (state, count) { + onResult === null || onResult === void 0 ? void 0 : onResult.call(target, state, count); + }; + if (!isWechat() && !isBytedance()) { + callback(EAdVideoResult.ACCEPT, 1); + this._adVideo = null; + return; + } + var onAdVideoClosed = function (res) { + var _a; + (_a = _this._adVideo) === null || _a === void 0 ? void 0 : _a.offClose(onAdVideoClosed); + if (isWechat()) { + if (res && res.isEnded || res === undefined) { + callback(EAdVideoResult.ACCEPT, 1); + } + else { + callback(EAdVideoResult.REJECT, 0); + } + } + else if (isBytedance()) { + var resConverted = res; + if (resConverted && resConverted.count > 0) { + callback(EAdVideoResult.ACCEPT, resConverted.count); + } + else { + callback(EAdVideoResult.REJECT, 0); + } + } + }; + (_a = this._adVideo) === null || _a === void 0 ? void 0 : _a.offClose(onAdVideoClosed); + if (isWechat()) { + // @ts-ignore + this._adVideo = wx.createRewardedVideoAd({ + adUnitId: this._adUid + }); + } + else if (isBytedance()) { + // @ts-ignore + this._adVideo = tt.createRewardedVideoAd({ + adUnitId: this._adUid, + multiton: true, + multitonRewardMsg: ['多1次奖励', '再多一次奖励', '再多一次奖励'], + multitonRewardTimes: maxVideoCount, + }); + } + else { + this._adVideo = null; + } + (_b = this._adVideo) === null || _b === void 0 ? void 0 : _b.onLoad(function () { + console.log('Ad load success'); + }); + (_c = this._adVideo) === null || _c === void 0 ? void 0 : _c.onError(function (err) { + console.log('Ad video error:', err); + callback(EAdVideoResult.ERROR, 0); + }); + (_d = this._adVideo) === null || _d === void 0 ? void 0 : _d.onClose(onAdVideoClosed); + (_e = this._adVideo) === null || _e === void 0 ? void 0 : _e.show().catch(function () { + var _a; + (_a = _this._adVideo) === null || _a === void 0 ? void 0 : _a.load().then(function () { var _a; return (_a = _this._adVideo) === null || _a === void 0 ? void 0 : _a.show(); }).catch(function (err) { + console.log('Catch video ad error:', err); + callback(EAdVideoResult.ERROR, 0); + }); + }); + }; + ADVideo.prototype.destory = function () { + var _a; + (_a = this._adVideo) === null || _a === void 0 ? void 0 : _a.destory(); + }; + return ADVideo; + }()); + var EAdBannerLocation; + (function (EAdBannerLocation) { + /** + * 屏幕顶部 + */ + EAdBannerLocation[EAdBannerLocation["TOP"] = 0] = "TOP"; + /** + * 屏幕底部 + */ + EAdBannerLocation[EAdBannerLocation["BOTTOM"] = 1] = "BOTTOM"; + })(EAdBannerLocation = MiniGameSdk.EAdBannerLocation || (MiniGameSdk.EAdBannerLocation = {})); + var AdvertManager = /** @class */ (function () { + function AdvertManager() { + this._customs = {}; + } + Object.defineProperty(AdvertManager, "instance", { + get: function () { + if (!AdvertManager._instance) { + AdvertManager._instance = new AdvertManager(); + } + return AdvertManager._instance; + }, + enumerable: false, + configurable: true + }); + /** + * 预加载横幅广告,不会显示。只有你在调用showBanner时才会显示。 + * 可重复调用,但是会销毁上一次的实例。一般情况,全局有一个就行了,太多占用内存,而且没必要。 + * @param adUid 广告UID + * @param location 位置有两种情况:1、可以传入枚举值,默认上方; 2、可以自定义位置传入IPosition,注意IPosition中的top和left跟平台的top,left是一致(没有乘以设备像素比ratio),需要开发者自己调试位置 + * @param scale 默认为跟屏幕一样的宽度,可以通过设置缩放比例来调整大小。当然,平台有规定最大或最小宽度,函数内部会自动计算。 + */ + AdvertManager.prototype.loadBanner = function (adUid, location, scale) { + var _a; + if (location === void 0) { location = EAdBannerLocation.TOP; } + if (scale === void 0) { scale = 1.0; } + (_a = this._banner) === null || _a === void 0 ? void 0 : _a.destroy(); + var size = getSysWinSize(); + // 当 style.width 小于 300 时,会取作 300。 当 style.width 大于屏幕宽度时,会取作屏幕宽度。 + var width = size.width * scale; + width = width < 300 ? 300 : width; // 最小值矫正 + width = width > size.width ? size.width : width; //最大值矫正 + this._banner = typeof location === 'number' ? new ADBanner(adUid, location === EAdBannerLocation.TOP, width, false) : new ADBanner(adUid, location, width, false); + }; + /** + * 显示横幅广告 + */ + AdvertManager.prototype.showBanner = function () { + if (this._banner) { + this._banner.show(); + } + else { + console.warn('MiniGameSDK: banner is null, you must call loadBanner(...) first!'); + } + }; + /** + * 隐藏横幅广告 + */ + AdvertManager.prototype.hideBanner = function () { + var _a; + (_a = this._banner) === null || _a === void 0 ? void 0 : _a.hide(); + }; + /** + * 弹出插屏广告 + * @param adUid 广告单元id + */ + AdvertManager.prototype.showInterstitial = function (adUid) { + var _a; + if (this._interstitial && this._interstitial.aduid === adUid) { + this._interstitial.show(); + } + else { + (_a = this._interstitial) === null || _a === void 0 ? void 0 : _a.destory(); + this._interstitial = new ADInterstitial(adUid); + this._interstitial.show(); + } + }; + /** + * 加载原生模板广告,不会显示。只有你在调用showCustom时才会显示。 + * 由于原生模板广告在微信服务后端可以定制宽度大小,个数,缩放比例等,所以位置调整要根据设置的宽度来定。抖音不支持本函数,会调用无效! + * @param adUid 广告ID + * @param location 位置有两种情况:1、可以传入枚举值,默认上方; 2、可以自定义位置传入IPosition,注意IPosition中的top和left跟平台的top,left是一致(没有乘以设备像素比ratio),需要开发者自己调试位置 + * @param scale 缩放比例,默认是1,即不缩放。这个缩放并不是自己填,而是根据微信MP后台你配置的原生模板广告的缩放比例填,目前有100%,90%,80%三种,一般情况不用修改。若有后台修改,记得传入值,例如90%就传入0.9。 + */ + AdvertManager.prototype.loadCustom = function (adUid, location, scale) { + if (location === void 0) { location = { top: 0, left: 0 }; } + if (scale === void 0) { scale = 1; } + // this._custom?.destroy(); + // this._custom = new ADCustom(adUid, location.top, location.left, scale); + if (this._customs[adUid]) { + console.log(adUid + " has been loaded."); + return; + } + this._customs[adUid] = new ADCustom(adUid, location.top, location.left, scale); + }; + /** + * 显示自定义广告。 + * @param adUid 广告的唯一标识符。使用此标识符来查找和显示特定的自定义广告。 + * + * 此方法尝试根据提供的adUid显示一个自定义广告。如果给定的adUid对应的自定义广告已加载, + * 则调用该广告的显示方法。如果广告未加载,则在控制台输出警告信息。 + */ + AdvertManager.prototype.showCustom = function (adUid) { + if (this._customs[adUid]) { + this._customs[adUid].show(); + } + else { + console.warn("You have not load " + adUid + " of Custom AD, can not show!"); + } + }; + /** + * 隐藏指定的自定义广告单元 + * + * 此方法用于隐藏通过广告单元标识符(adUid)指定的自定义广告。如果指定的广告单元已加载并显示, + * 则将其隐藏;如果广告单元未加载,则在控制台输出警告信息。 + * + * @param adUid 广告单元标识符,用于唯一标识一个自定义广告单元。 + */ + AdvertManager.prototype.hideCustom = function (adUid) { + if (this._customs[adUid]) { + this._customs[adUid].hide(); + } + else { + console.warn("You have not load " + adUid + " of Custom AD, can not hide!"); + } + }; + /** + * 由于微信和抖音视频广告机制不同,微信可以看的视频广告个数只有0和1个,抖音平台则可以看0~maxVideoCount + * @param adUid 广告ID。如果与上一次UID不同,则内部会重新创建实例。开发者完全不用关心这个细节。 + * @param onVideoResult 两个参数:第一个res是EAdVideoResult定义,第二count是用户看了多少个视频广告。 + * @param target onVideoResult的拥有者 + * @param maxVideoCount 最大视频个数。默认是3,仅对抖音平台生效。微信平台看完视频count的结果永远是1或0 + */ + AdvertManager.prototype.showVideo = function (adUid, onVideoResult, target, maxVideoCount) { + var _a; + if (maxVideoCount === void 0) { maxVideoCount = 3; } + if (this._video && this._video.aduid === adUid) { + this._video.show(onVideoResult, target, maxVideoCount); + } + else { + (_a = this._video) === null || _a === void 0 ? void 0 : _a.destory(); + this._video = new ADVideo(adUid); + this._video.show(onVideoResult, target, maxVideoCount); + } + }; + /** + * 销毁内部所有实例,清空内存 + */ + AdvertManager.prototype.destroyAll = function () { + var _a, _b, _c, _d; + (_a = this._banner) === null || _a === void 0 ? void 0 : _a.destroy(); + this._banner = null; + (_b = this._interstitial) === null || _b === void 0 ? void 0 : _b.destory(); + this._interstitial = null; + (_c = this._video) === null || _c === void 0 ? void 0 : _c.destory(); + this._video = null; + if (this._customs) { + for (var val in this._customs) { + (_d = this._customs[val]) === null || _d === void 0 ? void 0 : _d.destroy(); + } + this._customs = {}; + } + }; + return AdvertManager; + }()); + MiniGameSdk.AdvertManager = AdvertManager; + var EGameClubIcon; + (function (EGameClubIcon) { + /** 绿色图标 */ + EGameClubIcon["GREEN"] = "green"; + /** 红色图标 */ + EGameClubIcon["WHITE"] = "white"; + /** 有黑色圆角背景的白色图标 */ + EGameClubIcon["DARK"] = "dark"; + /** 有白色圆角背景的绿色图标 */ + EGameClubIcon["LIGHT"] = "light"; + })(EGameClubIcon = MiniGameSdk.EGameClubIcon || (MiniGameSdk.EGameClubIcon = {})); + var GameClub = /** @class */ (function () { + function GameClub() { + } + Object.defineProperty(GameClub, "instance", { + get: function () { + if (!this._instance) { + this._instance = new GameClub(); + } + return this._instance; + }, + enumerable: false, + configurable: true + }); + /** + * 创建游戏圈按钮 + * @param icon + * @param position + * @param size + * @param openLink + */ + GameClub.prototype.create = function (icon, position, size, openLink) { + if (icon === void 0) { icon = EGameClubIcon.GREEN; } + if (position === void 0) { position = { top: 0, left: 0 }; } + if (size === void 0) { size = { width: 40, height: 40 }; } + if (isWechat()) { + // @ts-ignore + this._club = wx.createGameClubButton({ + icon: icon, + style: { + left: position.left, + top: position.top, + width: size.width, + height: size.height + }, + openlink: openLink + }); + } + }; + GameClub.prototype.show = function () { + var _a; + (_a = this._club) === null || _a === void 0 ? void 0 : _a.show(); + }; + GameClub.prototype.hide = function () { + var _a; + (_a = this._club) === null || _a === void 0 ? void 0 : _a.hide(); + }; + GameClub.prototype.destory = function () { + var _a; + (_a = this._club) === null || _a === void 0 ? void 0 : _a.destroy(); + }; + return GameClub; + }()); + MiniGameSdk.GameClub = GameClub; + /** + * 振动类型 + */ + var EVirbrateType; + (function (EVirbrateType) { + /** + * 短振动 + */ + EVirbrateType[EVirbrateType["SHORT"] = 0] = "SHORT"; + /** + * 长振动 + */ + EVirbrateType[EVirbrateType["LONG"] = 1] = "LONG"; + })(EVirbrateType = MiniGameSdk.EVirbrateType || (MiniGameSdk.EVirbrateType = {})); + /** + * 抖音侧边栏专属接口 + */ + var BytedanceSidebar = /** @class */ (function () { + function BytedanceSidebar() { + } + /** + * 本游戏在抖音环境下启动监控,需要放在全局环境中,保证能第一时间启动。因为可能监听抖音失败(抖音小游戏官方的说明)! + * @param onResult 包含一个boolean参数的函数 + * @param target 上述函数的拥有者,如果是类的成员函数,需要传入this。普通或匿名函数忽略即可。 + */ + BytedanceSidebar.listenFromSidebar = function (onResult, target) { + if (!isBytedance()) { + onResult === null || onResult === void 0 ? void 0 : onResult.call(target, false); + return; + } + // @ts-ignore + tt.onShow(function (res) { + console.log('onShow launch res:', res); + if (res.scene === '021036') { + onResult === null || onResult === void 0 ? void 0 : onResult.call(target, true); + console.log('launch from sidebar'); + } + else { + onResult === null || onResult === void 0 ? void 0 : onResult.call(target, false); + console.log('NOT launch from douyin sidebar!'); + } + }); + // @ts-ignore + var options = tt.getLaunchOptionsSync(); + if (options && options.scene === '021036') { + onResult === null || onResult === void 0 ? void 0 : onResult.call(target, true); + } + }; + /** + * 检测抖音侧边栏是否存在 + * @param onResult 包含一个boolean参数的函数 + * @param target 上述函数的拥有者,如果是类的成员函数,需要传入this。普通或匿名函数忽略即可。 + * @returns + */ + BytedanceSidebar.checkSideBar = function (onResult, target) { + if (!isBytedance()) { + onResult === null || onResult === void 0 ? void 0 : onResult.call(target, false); + return; + } + //@ts-ignore + tt.checkScene({ + scene: "sidebar", + success: function (res) { + console.log("check scene success: ", res.isExist); + onResult === null || onResult === void 0 ? void 0 : onResult.call(target, res.isExist); + }, + fail: function (res) { + console.log("check scene fail:", res); + onResult === null || onResult === void 0 ? void 0 : onResult.call(target, false); + } + }); + }; + /** + * 跳转到抖音侧边栏 + * @param onResult 包含一个boolean参数的函数 + * @param target 上述函数的拥有者,如果是类的成员函数,需要传入this。普通或匿名函数忽略即可。 + * @returns + */ + BytedanceSidebar.navigateToSidebar = function (onResult, target) { + if (!isBytedance()) { + console.log("not douyin platform!"); + onResult === null || onResult === void 0 ? void 0 : onResult.call(target, false); + return; + } + // @ts-ignore + tt.navigateToScene({ + scene: "sidebar", + success: function () { + console.log("navigate success"); + onResult === null || onResult === void 0 ? void 0 : onResult.call(target, true); + }, + fail: function (res) { + console.log("navigate failed reason:", res); + onResult === null || onResult === void 0 ? void 0 : onResult.call(target, false); + }, + }); + }; + return BytedanceSidebar; + }()); + MiniGameSdk.BytedanceSidebar = BytedanceSidebar; + /** + * 平台常用API合集 + */ + var API = /** @class */ (function () { + function API() { + } + /** + * 分享app给朋友,微信小游戏分享是没有onSuccess回调的。 + * @param title 标题 + * @param description 细节描述信息 + * @param imageUrl 图片地址 + * @param query 查询信息 + * @param onSuccess 抖音会回调,微信不会回调 + */ + API.shareAppToFriends = function (title, description, imageUrl, query, onSuccess) { + if (description === void 0) { description = ''; } + if (isWechat()) { + try { + //@ts-ignore + wx.shareAppMessage({ + title: title, + imageUrl: imageUrl, + query: query, + }); + } + catch (err) { + console.log("share faild: " + err); + } + } + if (isBytedance()) { + //@ts-ignore + tt.shareAppMessage({ + title: title, + desc: description, + imageUrl: imageUrl !== null && imageUrl !== void 0 ? imageUrl : '', + query: query !== null && query !== void 0 ? query : '', + success: function (res) { + console.log('share success:', res); + onSuccess === null || onSuccess === void 0 ? void 0 : onSuccess(); + }, + fail: function (res) { + console.log('share fail:', res); + } + }); + } + }; + /** + * 显示提示信息 + * @param title 标题 + * @param duration 时长(单位:秒) + * @returns + */ + API.showToast = function (title, duration) { + if (duration === void 0) { duration = 2; } + if (isWechat()) { + // @ts-ignore + wx.showToast({ + title: title, + icon: 'none', + duration: duration * 500 + }); + } + }; + /** + * 设备震动效果,默认为短震动。注意:可能一些机型不会生效,具体看平台方的说明 + * @param type MiniGameSdk.API.EVirbrateType + */ + API.vibrate = function (type) { + if (type === void 0) { type = EVirbrateType.SHORT; } + if (isWechat()) { + switch (type) { + case EVirbrateType.SHORT: + //@ts-ignore + wx.vibrateShort({ + success: function (res) { + console.log('vibrate success:', res); + }, + fail: function (res) { + console.log('vibrateShort failed', res); + }, + }); + break; + case EVirbrateType.LONG: + //@ts-ignore + wx.vibrateLong({ + success: function (res) { + console.log('vibrate success', res); + }, + fail: function (res) { + console.log("vibrateLong failed", res); + }, + }); + break; + default: + break; + } + } + if (isBytedance()) { + switch (type) { + case EVirbrateType.SHORT: + //@ts-ignore + tt.vibrateShort({ + success: function (res) { + console.log('vibrate success:', res); + }, + fail: function (res) { + console.log('vibrateShort failed', res); + }, + }); + break; + case EVirbrateType.LONG: + //@ts-ignore + tt.vibrateLong({ + success: function (res) { + console.log('vibrate success', res); + }, + fail: function (res) { + console.log("vibrateLong failed", res); + }, + }); + break; + default: + break; + } + } + }; + /** + * 重启小游戏 + */ + API.reboot = function () { + if (isWechat()) { + //@ts-ignore + wx.restartMiniProgram({ + success: function () { + console.log('restart success'); + }, + fail: function () { + console.log('restart failed'); + } + }); + } + if (isBytedance()) { + try { + // @ts-ignore + tt.restartMiniProgramSync(); + } + catch (error) { + console.log("restartMiniProgramSync", error); + } + } + }; + /** + * 退出小游戏 + */ + API.exit = function () { + if (isWechat()) { + //@ts-ignore + wx.exitMiniProgram({ + success: function () { + console.log('exit success'); + }, + fail: function () { + console.log('exit failed'); + } + }); + } + if (isBytedance()) { + // @ts-ignore + tt.exitMiniProgram({ + success: function (res) { + console.log("exit success:", res === null || res === void 0 ? void 0 : res.data); + }, + fail: function (res) { + console.log("exit fail:", res === null || res === void 0 ? void 0 : res.errMsg); + }, + }); + } + }; + /** + * 显示转发按钮。通常在刚进入游戏的时候调用。 + * 主要是打开平台“...”这个按钮里面的分享菜单,一般默认是关闭的,需要调用这个函数打开。可以让用户分享你的游戏入口。 + */ + API.showShareMenu = function () { + if (isWechat()) { + //@ts-ignore + wx.showShareMenu({ + withShareTicket: true, + menus: ['shareAppMessage', 'shareTimeline'], + success: function () { }, + fail: function () { }, + complete: function () { } + }); + } + }; + /** + * 微信小游戏:跳转到另外一款小游戏 + * 抖音小游戏:跳转到指定的视频界面 + * @param targetId 微信小游戏appid或者视频界面 + */ + API.navigateTo = function (targetId, onSuccess) { + if (isWechat()) { + // @ts-ignore + wx.navigateToMiniProgram({ + appId: targetId, + extraData: { + foo: 'bar' + }, + envVersion: 'develop', + success: function (res) { + onSuccess === null || onSuccess === void 0 ? void 0 : onSuccess(); + } + }); + } + if (isBytedance()) { + // @ts-ignore + tt.navigateToVideoView({ + videoId: targetId, + success: function (res) { + onSuccess === null || onSuccess === void 0 ? void 0 : onSuccess(); + }, + fail: function (err) { + console.log("bytedance navigateToVideoView fail", err); + }, + }); + } + }; + /** + * 小游戏平台登录功能。微信返回code,抖音返回code和anonymousCode。用于登录的凭证,需要把这个code传回你的服务器程序中去调用code2Session + * @param callback (code, anonymousCode) 第一个参数为code,微信和抖音都支持;第二个参数为匿名设备ID,仅抖音支持,失败都返回null + */ + API.login = function (callback) { + var loginPlatform = function () { + if (isWechat()) { + //@ts-ignore + wx.login({ + success: function (res) { + if (res.code) { + API._loginCode = res.code; + API._loginAnonymousCode = null; + callback === null || callback === void 0 ? void 0 : callback(API._loginCode, API._loginAnonymousCode); + } + else { + console.log('login error:', res.errMsg); + } + }, + fail: function () { + API._loginCode = null; + API._loginAnonymousCode = null; + callback === null || callback === void 0 ? void 0 : callback(API._loginCode, API._loginAnonymousCode); + console.log('login fail'); + } + }); + } + else if (isBytedance()) { + //@ts-ignore + tt.login({ + force: true, + success: function (res) { + var _a, _b; + console.log("login " + res.code + " " + res.anonymousCode); + if (res.code) { + API._loginCode = (_a = res.code) === null || _a === void 0 ? void 0 : _a.toString(); + API._loginAnonymousCode = (_b = res.anonymousCode) === null || _b === void 0 ? void 0 : _b.toString(); + callback === null || callback === void 0 ? void 0 : callback(API._loginCode, API._loginAnonymousCode); + } + else { + console.log('login error:', res.errMsg); + } + }, + fail: function (res) { + API._loginCode = null; + API._loginAnonymousCode = null; + callback === null || callback === void 0 ? void 0 : callback(API._loginCode, API._loginAnonymousCode); + console.log("login fail", res); + }, + }); + } + else { + API._loginCode = null; + API._loginAnonymousCode = null; + callback === null || callback === void 0 ? void 0 : callback(API._loginCode, API._loginAnonymousCode); + console.log('not mini game platform, login codes are all null'); + } + }; + if (!API._loginCode) { + loginPlatform(); + } + else { + if (isWechat()) { + //@ts-ignore + wx.checkSession({ + success: function () { + console.log("session is valid, use current code:", API._loginCode); + callback === null || callback === void 0 ? void 0 : callback(API._loginCode, API._loginAnonymousCode); + }, + fail: function () { + console.log("session expired"); + loginPlatform(); + } + }); + } + else if (isBytedance()) { + //@ts-ignore + tt.checkSession({ + success: function () { + console.log("session is valid, user current code: " + API._loginCode + ", " + API._loginAnonymousCode); + callback === null || callback === void 0 ? void 0 : callback(API._loginCode, API._loginAnonymousCode); + }, + fail: function () { + console.log("session expired"); + loginPlatform(); + }, + }); + } + else { + console.log('not mini game platform, login null'); + callback === null || callback === void 0 ? void 0 : callback(null, null); + } + } + }; + /** + * 小游戏平台登录功能。微信返回code,抖音返回code和anonymousCode。用于登录的凭证,需要把这个code传回你的服务器程序中去调用code2Session + * @param callback (code, anonymousCode) 第一个参数为code,微信和抖音都支持;第二个参数为匿名设备ID,仅抖音支持,失败都返回null + */ + API.getUserInfo = function (callback) { + //@ts-ignore + tt.getUserInfo({ + withCredentials: true, + success: function (res) { + API._userInfo = res; + callback(API._userInfo); + }, + fail: function (err) { + callback(err); + } + }); + }; + /** + * 调用微信云函数。由于参数需要自定义,所以为any,需要自行解释。函数只完成通道和处理一场的作用 + * @param callback 返回云函数调用结果。需要检查返回参数是否为空,失败的时候为空 + * @param name 云函数的名字 + * @param data 云函数的内容 + */ + API.callWechatCloudFunction = function (callback, name, data) { + if (!isWechat()) { + console.log('Not wechat platform, not support callWechatCloudFunction'); + return; + } + this.login(function (code, anonymousCode) { + if (!API._hasInitWechatCloudFunction) { + //@ts-ignore + wx.cloud.init(); + API._hasInitWechatCloudFunction = true; + } + //@ts-ignore + wx.cloud.callFunction({ + name: name, + data: data, + success: function (res) { return callback === null || callback === void 0 ? void 0 : callback(res); }, + fail: function (err) { + console.log('wechat cloud function error:', err); + callback === null || callback === void 0 ? void 0 : callback(null); + } + }); + }); + }; + /** + * 存储用户信息,数据量不能大。可以考虑用于分数排行榜。用户之间可共享排行数据。 + * @param key + * @param value + */ + API.setUserCloudStorage = function (key, value) { + if (isWechat()) { + // @ts-ignore + wx.setUserCloudStorage({ + KVDataList: [{ key: key, value: value }], + success: function () { return console.log("set cloud storage success:" + key + ", value:" + value); }, + fail: function (err) { return console.log('set cloud storage error:', err); } + }); + } + if (isBytedance()) { + // @ts-ignore + tt.setUserCloudStorage({ + KVDataList: [{ key: key, value: value, }], + success: function () { return console.log("set cloud storage success:" + key + ", value:" + value); }, + fail: function (err) { return console.log('set cloud storage error:', err); } + }); + } + }; + /* + * 数数平台初始化以及登录 + */ + API.shushu_Init = function () { + if (typeof wx !== 'undefined' && wx !== null) { + console.log("开始接入数数平台"); + //getWechatGameVersion + var appId = "121591378fc1423893deb12041413eb3"; + var test = cc.fx.GameTool.getWechatGameVersion(); + if (test == "正式版") { + appId = "87d18958cea145f29d3265470ecd3486"; + } + var config = { + // appId: "73e1ec654f15b47a1a7354fbabec05ad", // 项目 APP ID + appId: appId, + serverUrl: "https://data.nika4fun.com", + autoTrack: { + appShow: true, + appHide: true // 自动采集 ta_mg_hide + } + }; + // 创建 TA 实例 + API._ta = new ThinkingAnalyticsAPI(config); + //var deviceId = API._ta.getDeviceId(); + API._ta.login(cc.fx.GameConfig.GM_INFO.openid); + var result = "success"; + API.shushu_Track("login", result); + // 初始化 + API._ta.init(); + API.shushu_SetSuperProperties(); + //console.log("数数平台初始化成功!"); + // this.TA.clearSuperProperties(); + //设置用户属性 + // this.TA.userSet({ username: "大核桃" }); + } + }; + API.shushu_userSet = function (time) { + if (typeof wx !== 'undefined' && wx !== null) { + console.log("设置用户注册属性"); + API._ta.userSet({ register_time: time }); + } + }; + /* + * 数数平台设置动态公共属性 + */ + API.shushu_SetSuperProperties = function () { + if (typeof wx !== 'undefined' && wx !== null && API._ta) { + var versionData = "1.3"; + // API._ta.userSetOnce({ register_time:time}); + var superProperties = { + current_level: (cc.fx.GameConfig.GM_INFO.level + 1), + current_health: cc.fx.GameConfig.GM_INFO.hp, + tmp_coin: cc.fx.GameConfig.GM_INFO.coin, + version: versionData + }; + API._ta.setSuperProperties(superProperties); //设置公共事件属性 + } + }; + API.getWechatGameVersion = function () { + if (typeof wx !== 'undefined' && wx !== null) { + // @ts-ignore + var accountInfo = wx.getAccountInfoSync(); + return accountInfo.miniProgram.version; + } + }; + /* + * 数数平台具体埋点 + */ + API.shushu_Track = function (name, data, callback) { + if (typeof wx !== 'undefined' && wx !== null) { + if (API._ta) { + // 假设 track 方法返回一个 Promise + API._ta.track(name, // 事件名称 + data // 事件属性 + ); + } + } + }; + API._loginCode = null; + API._loginAnonymousCode = null; + API._hasInitWechatCloudFunction = false; + API._userInfo = null; + API._ta = null; + return API; + }()); + MiniGameSdk.API = API; +})(MiniGameSdk = exports.MiniGameSdk || (exports.MiniGameSdk = {})); cc._RF.pop(); } @@ -4081,13 +2029,13 @@ cc._RF.pop(); }); } })(); -//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImFzc2V0c1xcU2NyaXB0XFxscV9jb2xsaWRlX3N5c3RlbVxcbHFfY29sbGlkZV9iYXNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSxJQUFPLE9BQU8sR0FBRyxFQUFFLENBQUMsVUFBVSxDQUFDLE9BQU8sQ0FBQztBQUN2QyxJQUFPLGlCQUFpQixHQUFHLEVBQUUsQ0FBQyxVQUFVLENBQUMsaUJBQWlCLENBQUM7QUFDM0QsSUFBTyxlQUFlLEdBQUcsRUFBRSxDQUFDLGVBQWUsQ0FBQztBQUM1QyxJQUFPLFFBQVEsR0FBRyxFQUFFLENBQUMsVUFBVSxDQUFDLFFBQVEsQ0FBQztBQUN6QywyQ0FBdUM7QUFDdkMscURBQXdEO0FBSXhEO0lBQW1DLGlDQUFZO0lBQS9DO1FBQUEscUVBa0ZDO1FBaEZhLHVCQUFpQixHQUFZLElBQUksQ0FBQzs7SUFnRmhELENBQUM7SUE5RVcsb0NBQVksR0FBcEI7UUFDSSxJQUFNLE9BQU8sR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxzQkFBUyxDQUFDLENBQUM7UUFDbEQsSUFBSSxDQUFDLE9BQU8sRUFBRTtZQUNWLE9BQU8sQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLEdBQUcsa0JBQWtCLENBQUMsQ0FBQztZQUNuRCxPQUFPLFNBQVMsQ0FBQztTQUNwQjtRQUNELE9BQU8sT0FBTyxDQUFDO0lBQ25CLENBQUM7SUFFUyw4QkFBTSxHQUFoQjtRQUNJLElBQU0sT0FBTyxHQUFHLElBQUksQ0FBQyxZQUFZLEVBQUUsQ0FBQztRQUNwQyxJQUFJLENBQUMsT0FBTyxFQUFFO1lBQ1YsT0FBTztTQUNWO1FBQ0QsT0FBTyxDQUFDLGVBQWUsRUFBRSxDQUFDO0lBQzlCLENBQUM7SUFFUyxnQ0FBUSxHQUFsQjtRQUNJLElBQU0sT0FBTyxHQUFHLElBQUksQ0FBQyxZQUFZLEVBQUUsQ0FBQztRQUNwQyxJQUFJLENBQUMsT0FBTyxFQUFFO1lBQ1YsT0FBTztTQUNWO1FBQ0QsT0FBTyxDQUFDLGlCQUFpQixFQUFFLENBQUM7SUFDaEMsQ0FBQztJQUVTLGlDQUFTLEdBQW5CO1FBQ0ksSUFBTSxPQUFPLEdBQUcsSUFBSSxDQUFDLFlBQVksRUFBRSxDQUFDO1FBQ3BDLElBQUksQ0FBQyxPQUFPLEVBQUU7WUFDVixPQUFPO1NBQ1Y7UUFDRCxPQUFPLENBQUMsa0JBQWtCLEVBQUUsQ0FBQztJQUNqQyxDQUFDO0lBRVMsaUNBQVMsR0FBbkI7UUFDSSxJQUFNLE9BQU8sR0FBRyxJQUFJLENBQUMsWUFBWSxFQUFFLENBQUM7UUFDcEMsSUFBSSxDQUFDLE9BQU8sRUFBRTtZQUNWLE9BQU87U0FDVjtJQUNMLENBQUM7SUFFUyx1Q0FBZSxHQUF6QjtRQUNJLElBQU0sT0FBTyxHQUFHLElBQUksQ0FBQyxZQUFZLEVBQUUsQ0FBQztRQUNwQyxJQUFJLENBQUMsT0FBTyxFQUFFO1lBQ1YsT0FBTztTQUNWO0lBQ0wsQ0FBQztJQUVTLDJDQUFtQixHQUE3QjtRQUNJLElBQU0sT0FBTyxHQUFHLElBQUksQ0FBQyxZQUFZLEVBQUUsQ0FBQztRQUNwQyxJQUFJLENBQUMsT0FBTyxFQUFFO1lBQ1YsT0FBTztTQUNWO0lBQ0wsQ0FBQztJQUVTLHFDQUFhLEdBQXZCO1FBQ0ksSUFBTSxPQUFPLEdBQUcsSUFBSSxDQUFDLFlBQVksRUFBRSxDQUFDO1FBQ3BDLElBQUksQ0FBQyxPQUFPLEVBQUU7WUFDVixPQUFPO1NBQ1Y7SUFDTCxDQUFDO0lBRVMsOEJBQU0sR0FBaEIsVUFBaUIsRUFBVTtRQUN2QixJQUFJLENBQUMsU0FBUyxJQUFJLENBQUMsSUFBSSxDQUFDLGlCQUFpQixFQUFFO1lBQ3ZDLE9BQU87U0FDVjtRQUNELElBQU0sT0FBTyxHQUFHLElBQUksQ0FBQyxZQUFZLEVBQUUsQ0FBQztRQUNwQyxJQUFJLENBQUMsT0FBTyxFQUFFO1lBQ1YsT0FBTztTQUNWO1FBQ0QsSUFBSSxPQUFPLENBQUMsYUFBYSxLQUFLLHlCQUFjLENBQUMsT0FBTyxFQUFFO1lBQ2xELE9BQU87U0FDVjtRQUNELElBQU0sZUFBZSxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLGVBQWUsQ0FBQyxDQUFDO1FBQ2hFLElBQUksQ0FBQyxlQUFlLEVBQUU7WUFDbEIsT0FBTztTQUNWO1FBQ0QsT0FBTyxDQUFDLGNBQWMsR0FBRyxlQUFlLENBQUMsTUFBTSxDQUFDO0lBQ3BELENBQUM7SUEvRUQ7UUFEQyxRQUFRLENBQUMsRUFBQyxPQUFPLEVBQUUsc0NBQXNDLEVBQUMsQ0FBQzs0REFDaEI7SUFGbkMsYUFBYTtRQUZ6QixPQUFPO1FBQ1AsaUJBQWlCO09BQ0wsYUFBYSxDQWtGekI7SUFBRCxvQkFBQztDQWxGRCxBQWtGQyxDQWxGa0MsRUFBRSxDQUFDLFNBQVMsR0FrRjlDO0FBbEZZLHNDQUFhIiwiZmlsZSI6IiIsInNvdXJjZVJvb3QiOiIvIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IGNjY2xhc3MgPSBjYy5fZGVjb3JhdG9yLmNjY2xhc3M7XHJcbmltcG9ydCBleGVjdXRlSW5FZGl0TW9kZSA9IGNjLl9kZWNvcmF0b3IuZXhlY3V0ZUluRWRpdE1vZGU7XHJcbmltcG9ydCBQb2x5Z29uQ29sbGlkZXIgPSBjYy5Qb2x5Z29uQ29sbGlkZXI7XHJcbmltcG9ydCBwcm9wZXJ0eSA9IGNjLl9kZWNvcmF0b3IucHJvcGVydHk7XHJcbmltcG9ydCB7TFFDb2xsaWRlfSBmcm9tIFwiLi9scV9jb2xsaWRlXCI7XHJcbmltcG9ydCB7TFFDb2xsaWRlU2hhcGV9IGZyb20gXCIuLi9scV9iYXNlL2RhdGEvbHFfY29uc3RcIjtcclxuXHJcbkBjY2NsYXNzXHJcbkBleGVjdXRlSW5FZGl0TW9kZVxyXG5leHBvcnQgY2xhc3MgTFFDb2xsaWRlQmFzZSBleHRlbmRzIGNjLkNvbXBvbmVudCB7XHJcbiAgICBAcHJvcGVydHkoe3Rvb2x0aXA6ICflpJrovrnlvaLoh6rliqjlkIzmraVjb2NvcyBQb2x5Z29uQ29sbGlkZXIg57uE5Lu25Lit55qE56Kw5pKe54K5J30pXHJcbiAgICBwcm90ZWN0ZWQgYXV0b191cGRhdGVfcG9pbnQ6IGJvb2xlYW4gPSB0cnVlO1xyXG5cclxuICAgIHByaXZhdGUgZmluZF9jb2xsaWRlKCkge1xyXG4gICAgICAgIGNvbnN0IGNvbGxpZGUgPSB0aGlzLm5vZGUuZ2V0Q29tcG9uZW50KExRQ29sbGlkZSk7XHJcbiAgICAgICAgaWYgKCFjb2xsaWRlKSB7XHJcbiAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IodGhpcy5ub2RlLm5hbWUgKyAnOuayoeacieaJvuWIsExRQ29sbGlkZee7hOS7ticpO1xyXG4gICAgICAgICAgICByZXR1cm4gdW5kZWZpbmVkO1xyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gY29sbGlkZTtcclxuICAgIH1cclxuXHJcbiAgICBwcm90ZWN0ZWQgb25Mb2FkKCkge1xyXG4gICAgICAgIGNvbnN0IGNvbGxpZGUgPSB0aGlzLmZpbmRfY29sbGlkZSgpO1xyXG4gICAgICAgIGlmICghY29sbGlkZSkge1xyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGNvbGxpZGUuaW5pdF9scV9jb2xsaWRlKCk7XHJcbiAgICB9XHJcblxyXG4gICAgcHJvdGVjdGVkIG9uRW5hYmxlKCkge1xyXG4gICAgICAgIGNvbnN0IGNvbGxpZGUgPSB0aGlzLmZpbmRfY29sbGlkZSgpO1xyXG4gICAgICAgIGlmICghY29sbGlkZSkge1xyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGNvbGxpZGUuZW5hYmxlX2xxX2NvbGxpZGUoKTtcclxuICAgIH1cclxuXHJcbiAgICBwcm90ZWN0ZWQgb25EaXNhYmxlKCkge1xyXG4gICAgICAgIGNvbnN0IGNvbGxpZGUgPSB0aGlzLmZpbmRfY29sbGlkZSgpO1xyXG4gICAgICAgIGlmICghY29sbGlkZSkge1xyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGNvbGxpZGUuZGlzYWJsZV9scV9jb2xsaWRlKCk7XHJcbiAgICB9XHJcblxyXG4gICAgcHJvdGVjdGVkIG9uRGVzdHJveSgpIHtcclxuICAgICAgICBjb25zdCBjb2xsaWRlID0gdGhpcy5maW5kX2NvbGxpZGUoKTtcclxuICAgICAgICBpZiAoIWNvbGxpZGUpIHtcclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBwcm90ZWN0ZWQgb25Gb2N1c0luRWRpdG9yKCkge1xyXG4gICAgICAgIGNvbnN0IGNvbGxpZGUgPSB0aGlzLmZpbmRfY29sbGlkZSgpO1xyXG4gICAgICAgIGlmICghY29sbGlkZSkge1xyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHByb3RlY3RlZCBvbkxvc3RGb2N1c0luRWRpdG9yKCkge1xyXG4gICAgICAgIGNvbnN0IGNvbGxpZGUgPSB0aGlzLmZpbmRfY29sbGlkZSgpO1xyXG4gICAgICAgIGlmICghY29sbGlkZSkge1xyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHByb3RlY3RlZCByZXNldEluRWRpdG9yKCkge1xyXG4gICAgICAgIGNvbnN0IGNvbGxpZGUgPSB0aGlzLmZpbmRfY29sbGlkZSgpO1xyXG4gICAgICAgIGlmICghY29sbGlkZSkge1xyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHByb3RlY3RlZCB1cGRhdGUoZHQ6IG51bWJlcikge1xyXG4gICAgICAgIGlmICghQ0NfRURJVE9SIHx8ICF0aGlzLmF1dG9fdXBkYXRlX3BvaW50KSB7XHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcbiAgICAgICAgY29uc3QgY29sbGlkZSA9IHRoaXMuZmluZF9jb2xsaWRlKCk7XHJcbiAgICAgICAgaWYgKCFjb2xsaWRlKSB7XHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKGNvbGxpZGUuY29sbGlkZV9zaGFwZSAhPT0gTFFDb2xsaWRlU2hhcGUuUG9seWdvbikge1xyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGNvbnN0IHBvbHlnb25Db2xsaWRlciA9IHRoaXMubm9kZS5nZXRDb21wb25lbnQoUG9seWdvbkNvbGxpZGVyKTtcclxuICAgICAgICBpZiAoIXBvbHlnb25Db2xsaWRlcikge1xyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGNvbGxpZGUucG9seWdvbl9wb2ludHMgPSBwb2x5Z29uQ29sbGlkZXIucG9pbnRzO1xyXG4gICAgfVxyXG59Il19 +//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImFzc2V0c1xcU2NyaXB0XFxTZGtcXE1pbmlHYW1lU2RrLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBOztHQUVHO0FBQ0gsSUFBaUIsV0FBVyxDQXlxQzNCO0FBenFDRCxXQUFpQixXQUFXO0lBWXhCLFNBQWdCLFFBQVE7UUFDcEIsWUFBWTtRQUNaLE9BQU8sTUFBTSxDQUFDLEVBQUUsS0FBSyxJQUFJLElBQUksTUFBTSxDQUFDLEVBQUUsS0FBSyxTQUFTLENBQUM7SUFDekQsQ0FBQztJQUhlLG9CQUFRLFdBR3ZCLENBQUE7SUFFRCxTQUFnQixXQUFXO1FBQ3ZCLFlBQVk7UUFDWixPQUFPLE1BQU0sQ0FBQyxFQUFFLEtBQUssSUFBSSxJQUFJLE1BQU0sQ0FBQyxFQUFFLEtBQUssU0FBUyxDQUFDO0lBQ3pELENBQUM7SUFIZSx1QkFBVyxjQUcxQixDQUFBO0lBR0QsU0FBUyxhQUFhO1FBQ2xCLElBQUksR0FBUSxDQUFDO1FBQ2IsSUFBSSxRQUFRLEVBQUUsRUFBRTtZQUNaLGFBQWE7WUFDYixHQUFHLEdBQUcsRUFBRSxDQUFDLGlCQUFpQixFQUFFLENBQUM7U0FDaEM7YUFBTSxJQUFJLFdBQVcsRUFBRSxFQUFFO1lBQ3RCLGFBQWE7WUFDYixHQUFHLEdBQUcsRUFBRSxDQUFDLGlCQUFpQixFQUFFLENBQUM7U0FDaEM7UUFFRCxJQUFJLElBQUksR0FBVSxFQUFFLEtBQUssRUFBRSxDQUFDLEVBQUUsTUFBTSxFQUFFLENBQUMsRUFBRSxDQUFDO1FBQzFDLElBQUksR0FBRyxFQUFFO1lBQ0wsSUFBSSxDQUFDLEtBQUssR0FBRyxHQUFHLENBQUMsV0FBVyxDQUFDO1lBQzdCLElBQUksQ0FBQyxNQUFNLEdBQUcsR0FBRyxDQUFDLFlBQVksQ0FBQztTQUNsQztRQUVELE9BQU8sSUFBSSxDQUFDO0lBQ2hCLENBQUM7SUFFRDs7T0FFRztJQUNIO1FBUUksd0JBQVksS0FBYTtZQUNyQixJQUFJLENBQUMsTUFBTSxHQUFHLEtB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ZWMsY0FBVSxHQUFXLElBQUksQ0FBQztRQUMxQix1QkFBbUIsR0FBVyxJQUFJLENBQUM7UUFDbkMsK0JBQTJCLEdBQVksS0FBSyxDQUFDO1FBQzdDLGFBQVMsR0FBUSxJQUFJLENBQUM7UUFDdEIsT0FBRyxHQUFRLElBQUksQ0FBQztRQXllbkMsVUFBQztLQTllRCxBQThlQyxJQUFBO0lBOWVZLGVBQUcsTUE4ZWYsQ0FBQTtBQUVMLENBQUMsRUF6cUNnQixXQUFXLEdBQVgsbUJBQVcsS0FBWCxtQkFBVyxRQXlxQzNCIiwiZmlsZSI6IiIsInNvdXJjZVJvb3QiOiIvIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXHJcbiAqIOWwj+a4uOaIj+W5s+WPsFNES+W3peWFt+Wwgeijhe+8jOebruWJjeWPquaUr+aMgeW+ruS/oeWSjOaKlumfs+W5s+WPsFxyXG4gKi9cclxuZXhwb3J0IG5hbWVzcGFjZSBNaW5pR2FtZVNkayB7XHJcblxyXG4gICAgaW50ZXJmYWNlIElTaXplIHtcclxuICAgICAgICB3aWR0aDogbnVtYmVyO1xyXG4gICAgICAgIGhlaWdodDogbnVtYmVyO1xyXG4gICAgfVxyXG5cclxuICAgIGV4cG9ydCBpbnRlcmZhY2UgSVBvc2l0aW9uIHtcclxuICAgICAgICB0b3A6IG51bWJlcjtcclxuICAgICAgICBsZWZ0OiBudW1iZXI7XHJcbiAgICB9XHJcblxyXG4gICAgZXhwb3J0IGZ1bmN0aW9uIGlzV2VjaGF0KCk6IGJvb2xlYW4ge1xyXG4gICAgICAgIC8vQHRzLWlnbm9yZVxyXG4gICAgICAgIHJldHVybiB3aW5kb3cud3ggIT09IG51bGwgJiYgd2luZG93Lnd4ICE9PSB1bmRlZmluZWQ7XHJcbiAgICB9XHJcblxyXG4gICAgZXhwb3J0IGZ1bmN0aW9uIGlzQnl0ZWRhbmNlKCk6IGJvb2xlYW4ge1xyXG4gICAgICAgIC8vQHRzLWlnbm9yZVxyXG4gICAgICAgIHJldHVybiB3aW5kb3cudHQgIT09IG51bGwgJiYgd2luZG93LnR0ICE9PSB1bmRlZmluZWQ7XHJcbiAgICB9XHJcblxyXG5cclxuICAgIGZ1bmN0aW9uIGdldFN5c1dpblNpemUoKTogSVNpemUge1xyXG4gICAgICAgIGxldCBzeXM6IGFueTtcclxuICAgICAgICBpZiAoaXNXZWNoYXQoKSkge1xyXG4gICAgICAgICAgICAvLyBAdHMtaWdub3JlXHJcbiAgICAgICAgICAgIHN5cyA9IHd4LmdldFN5c3RlbUluZm9TeW5jKCk7XHJcbiAgICAgICAgfSBlbHNlIGlmIChpc0J5dGVkYW5jZSgpKSB7XHJcbiAgICAgICAgICAgIC8vIEB0cy1pZ25vcmVcclxuICAgICAgICAgICAgc3lzID0gdHQuZ2V0U3lzdGVtSW5mb1N5bmMoKTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGxldCBzaXplOiBJU2l6ZSA9IHsgd2lkdGg6IDAsIGhlaWdodDogMCB9O1xyXG4gICAgICAgIGlmIChzeXMpIHtcclxuICAgICAgICAgICAgc2l6ZS53aWR0aCA9IHN5cy53aW5kb3dXaWR0aDtcclxuICAgICAgICAgICAgc2l6ZS5oZWlnaHQgPSBzeXMud2luZG93SGVpZ2h0O1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgcmV0dXJuIHNpemU7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiDmj5LlsY/lub/lkYrjgILlvq7kv6Hmipbpn7Ppg73mlK/mjIHvvIFcclxuICAgICAqL1xyXG4gICAgY2xhc3MgQURJbnRlcnN0aXRpYWwge1xyXG4gICAgICAgIHByaXZhdGUgX2FkVWlkOiBzdHJpbmc7XHJcbiAgICAgICAgcHJpdmF0ZSBfaW50ZXJzdGl0aWFsOiBhbnk7XHJcblxyXG4gICAgICAgIGdldCBhZHVpZCgpIHtcclxuICAgICAgICAgICAgcmV0dXJuIHRoaXMuX2FkVWlkO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgY29uc3RydWN0b3IoYWRVaWQ6IHN0cmluZykge1xyXG4gICAgICAgICAgICB0aGlzLl9hZFVpZCA9IGFkVWlkO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgc2hvdygpIHtcclxuICAgICAgICAgICAgLy8gQHRzLWlnbm9yZVxyXG4gICAgICAgICAgICBpZiAoaXNXZWNoYXQoKSAmJiAhd3guY3JlYXRlSW50ZXJzdGl0aWFsQWQpIHtcclxuICAgICAgICAgICAgICAgIGNvbnNvbGUud2Fybignd2VjaGF0IHVuc3VwcG9ydCBpbnRlcnN0aXRpYWwgQUQhJyk7XHJcbiAgICAgICAgICAgICAgICB0aGlzLl9pbnRlcnN0aXRpYWwgPSBudWxsO1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAvLyBAdHMtaWdub3JlXHJcbiAgICAgICAgICAgIGlmIChpc0J5dGVkYW5jZSgpICYmICF0dC5jcmVhdGVJbnRlcnN0aXRpYWxBZCkge1xyXG4gICAgICAgICAgICAgICAgY29uc29sZS53YXJuKCdieXRlZGFuY2UgdW5zdXBwb3J0IGludGVyc3RpdGlhbCBBRCEnKTtcclxuICAgICAgICAgICAgICAgIHRoaXMuX2ludGVyc3RpdGlhbCA9IG51bGw7XHJcbiAgICAgICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgICAgIH1cclxuXHJcblxyXG4gICAgICAgICAgICBpZiAodGhpcy5faW50ZXJzdGl0aWFsKSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLl9pbnRlcnN0aXRpYWwubG9hZCgpO1xyXG4gICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgaWYgKGlzV2VjaGF0KCkpIHtcclxuICAgICAgICAgICAgICAgICAgICAvLyBAdHMtaWdub3JlXHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5faW50ZXJzdGl0aWFsID0gd3guY3JlYXRlSW50ZXJzdGl0aWFsQWQoeyBhZFVuaXRJZDogdGhpcy5fYWRVaWQgfSk7XHJcbiAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKGlzQnl0ZWRhbmNlKCkpIHtcclxuICAgICAgICAgICAgICAgICAgICAvLyBAdHMtaWdub3JlXHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5faW50ZXJzdGl0aWFsID0gdHQuY3JlYXRlSW50ZXJzdGl0aWFsQWQoeyBhZFVuaXRJZDogdGhpcy5fYWRVaWQgfSk7XHJcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuX2ludGVyc3RpdGlhbCA9IG51bGw7XHJcbiAgICAgICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAgICAgdGhpcy5faW50ZXJzdGl0aWFsPy5vbkxvYWQoKCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKCdsb2FkIGludGVyc3RpdGlhbCBhZCBzdWNjZXNzJyk7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5faW50ZXJzdGl0aWFsLnNob3coKS5jYXRjaCgoZXJyOiBhbnkpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgY29uc29sZS5sb2coJ2NhdGNoIGludGVyc3RpdGlhbCBhZCBlcnJvcjonLCBlcnIpO1xyXG4gICAgICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICAgICAgfSk7XHJcblxyXG4gICAgICAgICAgICAgICAgdGhpcy5faW50ZXJzdGl0aWFsPy5vbkVycm9yKChlcnI6IGFueSkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKCdpbnRlcnN0aXRpYWwgYWQgb24gZXJyb3I6JywgZXJyKTtcclxuICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGRlc3RvcnkoKSB7XHJcbiAgICAgICAgICAgIHRoaXMuX2ludGVyc3RpdGlhbD8uZGVzdHJveSgpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBjbGFzcyBBREJhbm5lciB7XHJcbiAgICAgICAgcHJpdmF0ZSBfYWRVaWQ6IHN0cmluZztcclxuICAgICAgICBwcml2YXRlIF9iYW5uZXI6IGFueTtcclxuXHJcbiAgICAgICAgZ2V0IGFkdWlkKCkge1xyXG4gICAgICAgICAgICByZXR1cm4gdGhpcy5fYWRVaWQ7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICAvKipcclxuICAgICAgICAgKiDmipbpn7Plkozlvq7kv6Hpg73mlK/mjIFcclxuICAgICAgICAgKiDmqKrluYXlub/lkYrjgILpooTkvLDlrr3luqbpu5jorqTkuLozMDDvvIzpooTkvLDpq5jluqbkuLoxNDDjgILlpoLmnpzkvaDkuI3noa7lrprlsLHmjInpu5jorqTlgLzmnaXjgIJcclxuICAgICAgICAgKiBAcGFyYW0gYWRVaWQg5bm/5ZGKVUlE77yM5ZCO56uv6YWN572uXHJcbiAgICAgICAgICogQHBhcmFtIGlzVG9wIOaYr+WQpuWcqOWxj+W5lemhtumDqOWxleekuuOAguWGhemDqOS8muiHquWKqOWxheS4reiuoeeul+S9jee9ruOAglxyXG4gICAgICAgICAqIEBwYXJhbSBiYW5uZXJXaWR0aCDmqKrluYXlub/lkYrnmoTpooTkvLDlrr3luqbjgILpu5jorqQzMDBcclxuICAgICAgICAgKiBAcGFyYW0gYXV0b1Nob3cg5bm/5ZGK5Yqg6L295a6M5oiQ5ZCO5piv5ZCm56uL5Yi75pi+56S677yM6buY6K6k5Li65LiN5pi+56S6XHJcbiAgICAgICAgICovXHJcbiAgICAgICAgY29uc3RydWN0b3IoYWRVaWQ6IHN0cmluZywgcGFyYW06IGJvb2xlYW4gfCBJUG9zaXRpb24sIGJhbm5lcldpZHRoOiBudW1iZXIgPSAzMDAsIGF1dG9TaG93OiBib29sZWFuID0gZmFsc2UpIHtcclxuICAgICAgICAgICAgdGhpcy5fYWRVaWQgPSBhZFVpZDtcclxuICAgICAgICAgICAgdGhpcy5jcmVhdGUoYXV0b1Nob3csIGJhbm5lcldpZHRoLCBwYXJhbSk7IC8vIOm7mOiupDMwMOavlOi+g+WQiOmAglxyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgcHJpdmF0ZSBjcmVhdGUoYXV0b1Nob3c6IGJvb2xlYW4sIGJhbm5lcldpZHRoOiBudW1iZXIsIHBhcmFtOiBib29sZWFuIHwgSVBvc2l0aW9uKSB7XHJcbiAgICAgICAgICAgIGlmICghaXNXZWNoYXQoKSAmJiAhaXNCeXRlZGFuY2UoKSkge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5fYmFubmVyID0gbnVsbDtcclxuICAgICAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgdGhpcy5kZXN0cm95KCk7XHJcblxyXG4gICAgICAgICAgICBsZXQgd2luU2l6ZSA9IGdldFN5c1dpblNpemUoKTtcclxuXHJcbiAgICAgICAgICAgIGxldCBoZWlnaHQgPSBiYW5uZXJXaWR0aCAqIDAuNDtcclxuICAgICAgICAgICAgbGV0IHRvcCA9IDAsIGxlZnQgPSAwO1xyXG5cclxuICAgICAgICAgICAgaWYgKHR5cGVvZiBwYXJhbSA9PT0gXCJib29sZWFuXCIpIHtcclxuICAgICAgICAgICAgICAgIGxlZnQgPSAod2luU2l6ZS53aWR0aCAtIGJhbm5lcldpZHRoKSAvIDJcclxuICAgICAgICAgICAgICAgIHRvcCA9IHBhcmFtID8gNSA6ICh3aW5TaXplLmhlaWdodCAtIGhlaWdodCk7XHJcbiAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICBsZWZ0ID0gcGFyYW0ubGVmdDtcclxuICAgICAgICAgICAgICAgIHRvcCA9IHBhcmFtLnRvcDtcclxuICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgbGV0IHBhcmFtcyA9IHtcclxuICAgICAgICAgICAgICAgIGFkVW5pdElkOiB0aGlzLl9hZFVpZCxcclxuICAgICAgICAgICAgICAgIGFkSW50ZXJ2YWxzOiAzMCwvLyDoh6rliqjliLfmlrDpopHnjofkuI3og73lsI/kuo4zMOenklxyXG4gICAgICAgICAgICAgICAgc3R5bGU6IHsgbGVmdDogbGVmdCwgdG9wOiB0b3AsIHdpZHRoOiBiYW5uZXJXaWR0aCB9XHJcbiAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgIGlmIChpc1dlY2hhdCgpKSB7XHJcbiAgICAgICAgICAgICAgICAvLyBAdHMtaWdub3JlXHJcbiAgICAgICAgICAgICAgICB0aGlzLl9iYW5uZXIgPSB3eC5jcmVhdGVCYW5uZXJBZChwYXJhbXMpO1xyXG4gICAgICAgICAgICB9IGVsc2UgaWYgKGlzQnl0ZWRhbmNlKCkpIHtcclxuICAgICAgICAgICAgICAgIC8vIEB0cy1pZ25vcmVcclxuICAgICAgICAgICAgICAgIHRoaXMuX2Jhbm5lciA9IHR0LmNyZWF0ZUJhbm5lckFkKHBhcmFtcyk7XHJcbiAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLl9iYW5uZXIgPSBudWxsO1xyXG4gICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICB0aGlzLl9iYW5uZXI/Lm9uRXJyb3IoKGVycjogYW55KSA9PiB7XHJcbiAgICAgICAgICAgICAgICBjb25zb2xlLmxvZygnYWQgYmFubmVyIGVycm9yOicsIGVycik7XHJcbiAgICAgICAgICAgIH0pO1xyXG5cclxuICAgICAgICAgICAgdGhpcy5fYmFubmVyPy5vbkxvYWQoKCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgYXV0b1Nob3cgJiYgdGhpcy5fYmFubmVyLnNob3coKTtcclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBzaG93KCkge1xyXG4gICAgICAgICAgICB0aGlzLl9iYW5uZXI/LnNob3coKTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGhpZGUoKSB7XHJcbiAgICAgICAgICAgIHRoaXMuX2Jhbm5lcj8uaGlkZSgpO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgZGVzdHJveSgpIHtcclxuICAgICAgICAgICAgdGhpcy5fYmFubmVyPy5kZXN0cm95KCk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIGNsYXNzIEFEQ3VzdG9tIHtcclxuICAgICAgICBwcml2YXRlIF9hZFVpZDogc3RyaW5nO1xyXG4gICAgICAgIHByaXZhdGUgX2FkQ3VzdG9tOiBhbnk7XHJcblxyXG4gICAgICAgIGdldCBhZHVpZCgpIHtcclxuICAgICAgICAgICAgcmV0dXJuIHRoaXMuX2FkVWlkO1xyXG4gICAgICAgIH1cclxuICAgICAgICAvKipcclxuICAgICAgICAgKiDnlLHkuo7ljp/nlJ/mqKHmnb/lub/lkYrlnKjlvq7kv6HmnI3liqHlkI7nq6/lj6/ku6XlrprliLblrr3luqblpKflsI/vvIzkuKrmlbDvvIznvKnmlL7mr5TkvovnrYnvvIzmiYDku6XkvY3nva7osIPmlbTopoHmoLnmja7orr7nva7nmoTlrr3luqbmnaXlrprjgILmipbpn7PkuI3mlK/mjIHvvIFcclxuICAgICAgICAgKiBAcGFyYW0gYWRVaWQg5bm/5ZGKVUlE77yM5ZCO56uv6YWN572uXHJcbiAgICAgICAgICogQHBhcmFtIHRvcCDku47lt6bkuIrop5LlvIDlp4vvvIzot53nprvlsY/luZXpobbpg6jnmoTot53nprvjgILms6jmhI/vvJrov5nkuKrmlbDmja7kuLrorr7lpIflsY/luZXlrr3luqZ3aWR0aOOAguWmguaenOmcgOimgeiOt+WPluWxj+W5leeahOWDj+e0oO+8jOmcgOimgeS5mOS7peiuvuWkh+WDj+e0oOavlFBpeGVsLVJhdGlv77yM5L6L5aaCaVBob25lIDEzIFByb+eahFBpeGVsLVJhdGlv5Li6M++8jOWDj+e0oOS4uldpZHRoKjPjgIJcclxuICAgICAgICAgKiBAcGFyYW0gbGVmdCDku47lt6bkuIrop5LlvIDlp4vvvIzot53nprvlsY/luZXmnIDlt6bovrnnmoTot53nprvjgILms6jmhI/vvJrov5nkuKrmlbDmja7kuLrorr7lpIflsY/luZXlrr3luqZ3aWR0aOOAguWmguaenOmcgOimgeiOt+WPluWxj+W5leeahOWDj+e0oO+8jOmcgOimgeS5mOS7peiuvuWkh+WDj+e0oOavlFBpeGVsLVJhdGlv77yM5L6L5aaCaVBob25lIDEzIFByb+eahFBpeGVsLVJhdGlv5Li6M++8jOWDj+e0oOS4uldpZHRoKjPjgIJcclxuICAgICAgICAgKiBAcGFyYW0gc2NhbGUg5Y6f55Sf5qih5p2/5bm/5ZGK55qE5bC65a+477yM6buY6K6k5Li6Me+8jOWNszEwMCXjgILmraTlgLzlnKjlvq7kv6HmnI3liqHlkI7nq6/lub/lkYrkuK3ojrflvpfvvIzpu5jorqTkuLoxMDAl77yM55uu5YmN5pyJMTAwJe+8jDkwJe+8jDgwJeS4ieenje+8jOS4gOiIrOaDheWGteS4jeeUqOS/ruaUueOAguiLpeacieS/ruaUue+8jOiusOW+l+S8oOWFpeWAvO+8jOS+i+WmgjkwJeWwseS8oOWFpTAuOeOAglxyXG4gICAgICAgICAqL1xyXG4gICAgICAgIGNvbnN0cnVjdG9yKGFkVWlkOiBzdHJpbmcsIHRvcDogbnVtYmVyID0gMCwgbGVmdDogbnVtYmVyID0gMCwgc2NhbGU6IG51bWJlciA9IDEuMCkge1xyXG4gICAgICAgICAgICB0aGlzLl9hZFVpZCA9IGFkVWlkO1xyXG4gICAgICAgICAgICB0aGlzLmNyZWF0ZUN1c3RvbUFkKHRvcCwgbGVmdCwgc2NhbGUpO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgcHJpdmF0ZSBjcmVhdGVDdXN0b21BZCh0b3A6IG51bWJlciwgbGVmdDogbnVtYmVyLCBzY2FsZTogbnVtYmVyKSB7XHJcbiAgICAgICAgICAgIGlmICghaXNXZWNoYXQoKSkgeyAvLyBvbmx5IHdlY2hhdCBzdXBwb3J0IGN1c3RvbSBhZFxyXG4gICAgICAgICAgICAgICAgdGhpcy5fYWRDdXN0b20gPSBudWxsO1xyXG4gICAgICAgICAgICAgICAgY29uc29sZS5sb2coJ09ubHkgd2VjaGF0IHN1cHBvcnQgQ3VzdG9tIEFkJyk7XHJcbiAgICAgICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgIHRoaXMuZGVzdHJveSgpO1xyXG4gICAgICAgICAgICAvLyDljp/nlJ/mqKHmnb815Liq5bqU55So5a695bqm5Li6Mzc177yM6Iul6K6+572u5LqG57yp5pS+5q+U5L6L77yM5YiZ5a695bqm5Lmf6ZyA6KaB6K6+572uXHJcbiAgICAgICAgICAgIC8vIGxldCB3aWR0aCA9IDM3NSAqIHRoaXMuX3NjYWxlO1xyXG4gICAgICAgICAgICAvLyBsZXQgbmV3TGVmdCA9IChzeXMud2luZG93V2lkdGggLSB3aWR0aCkgLyAyO1xyXG4gICAgICAgICAgICAvLyBsZXQgbmV3VG9wID0gc3lzLndpbmRvd0hlaWdodCAvIDI7IC8vIDEyMOaYr+mihOS8sOmrmOW6plxyXG5cclxuICAgICAgICAgICAgLy8gQHRzLWlnbm9yZVxyXG4gICAgICAgICAgICB0aGlzLl9hZEN1c3RvbSA9IHd4LmNyZWF0ZUN1c3RvbUFkKHtcclxuICAgICAgICAgICAgICAgIGFkVW5pdElkOiB0aGlzLl9hZFVpZCxcclxuICAgICAgICAgICAgICAgIC8vQHRzLWlnbm9yZVxyXG4gICAgICAgICAgICAgICAgc3R5bGU6IHsgbGVmdDogbGVmdCwgdG9wOiB0b3AsIGZpeGVkOiB0cnVlIH1cclxuICAgICAgICAgICAgfSk7XHJcblxyXG4gICAgICAgICAgICB0aGlzLl9hZEN1c3RvbT8ub25FcnJvcigoZXJyOiBhbnkpID0+IHtcclxuICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKCdhZCBjdXN0b20gZXJyb3I6JywgZXJyKTtcclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHNob3coKSB7XHJcbiAgICAgICAgICAgIHRoaXMuX2FkQ3VzdG9tPy5zaG93KCk7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBoaWRlKCkge1xyXG4gICAgICAgICAgICB0aGlzLl9hZEN1c3RvbT8uaGlkZSgpO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgZGVzdHJveSgpIHtcclxuICAgICAgICAgICAgdGhpcy5fYWRDdXN0b20/LmRlc3Ryb3koKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG5cclxuICAgIC8qKlxyXG4gICAgICog6KeG6aKR5bm/5ZGK55So5oi354K55Ye76KGM5Li657uT5p6cXHJcbiAgICAgKi9cclxuICAgIGV4cG9ydCBlbnVtIEVBZFZpZGVvUmVzdWx0IHtcclxuICAgICAgICAvKipcclxuICAgICAgICAgKiDnlKjmiLfnnIvlrozkuoblub/lkYrvvIzmuLjmiI/lj6/lj5HmlL7lpZblirHjgIJcclxuICAgICAgICAgKi9cclxuICAgICAgICBBQ0NFUFQsXHJcblxyXG4gICAgICAgIC8qKlxyXG4gICAgICAgICAqIOeUqOaIt+S4remAlOWFs+mXreS6huW5v+WRiu+8jOWNs+acqueci+WujOeKtuaAgeOAguS4jeWPr+WPkeaUvuWlluWKseOAglxyXG4gICAgICAgICAqL1xyXG4gICAgICAgIFJFSkVDVCxcclxuXHJcbiAgICAgICAgLyoqXHJcbiAgICAgICAgICog5bm/5ZGK57uE5Lu25YaF6YOo5Y+R55Sf5LqG6ZSZ6K+v44CC5LiN5Y+v5Y+R5pS+5aWW5Yqx44CCXHJcbiAgICAgICAgICovXHJcbiAgICAgICAgRVJST1IsXHJcbiAgICB9XHJcblxyXG4gICAgY2xhc3MgQURWaWRlbyB7XHJcbiAgICAgICAgcHJpdmF0ZSBfYWRVaWQ6IHN0cmluZztcclxuICAgICAgICBwcml2YXRlIF9hZFZpZGVvOiBhbnkgPSBudWxsO1xyXG5cclxuICAgICAgICBnZXQgYWR1aWQoKSB7XHJcbiAgICAgICAgICAgIHJldHVybiB0aGlzLl9hZFVpZDtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGNvbnN0cnVjdG9yKGFkVWlkOiBzdHJpbmcpIHtcclxuICAgICAgICAgICAgdGhpcy5fYWRVaWQgPSBhZFVpZDtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIC8qKlxyXG4gICAgICAgICAqIOeUseS6juW+ruS/oeWSjOaKlumfs+inhumikeW5v+WRiuacuuWItuS4jeWQjO+8jOW+ruS/oeWPr+S7peeci+eahOinhumikeW5v+WRiuS4quaVsOWPquaciTDlkowx5Liq77yM5oqW6Z+z5bmz5Y+w5YiZ5Y+v5Lul55yLMH5tYXhWaWRlb0NvdW50XHJcbiAgICAgICAgICogQHBhcmFtIG9uUmVzdWx0IOS4pOS4quWPguaVsO+8muesrOS4gOS4qnJlc+aYr0VBZFZpZGVvUmVzdWx05a6a5LmJ77yM56ys5LqMY291bnTmmK/nlKjmiLfnnIvkuoblpJrlsJHkuKrop4bpopHlub/lkYrjgIJcclxuICAgICAgICAgKiBAcGFyYW0gdGFyZ2V0IG9uUmVzdWx055qE5oul5pyJ6ICFXHJcbiAgICAgICAgICogQHBhcmFtIG1heFZpZGVvQ291bnQg5Y+v5Lul6L+e57ut55yL5pyA5aSn6KeG6aKR5Liq5pWw77yM5Y+v5pyA5aSn5YyW5ZWG5Lia5pWI546H44CC6buY6K6k5Li6M+S4quOAglxyXG4gICAgICAgICAqIEByZXR1cm5zIFxyXG4gICAgICAgICAqL1xyXG4gICAgICAgIHNob3cob25SZXN1bHQ6IChyZXM6IEVBZFZpZGVvUmVzdWx0LCBjb3VudDogbnVtYmVyKSA9PiB2b2lkLCB0YXJnZXQ/OiBhbnksIG1heFZpZGVvQ291bnQ6IG51bWJlciA9IDMpOiB2b2lkIHtcclxuICAgICAgICAgICAgbGV0IGNhbGxiYWNrID0gKHN0YXRlOiBFQWRWaWRlb1Jlc3VsdCwgY291bnQ6IG51bWJlcikgPT4ge1xyXG4gICAgICAgICAgICAgICAgb25SZXN1bHQ/LmNhbGwodGFyZ2V0LCBzdGF0ZSwgY291bnQpO1xyXG4gICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICBpZiAoIWlzV2VjaGF0KCkgJiYgIWlzQnl0ZWRhbmNlKCkpIHtcclxuICAgICAgICAgICAgICAgIGNhbGxiYWNrKEVBZFZpZGVvUmVzdWx0LkFDQ0VQVCwgMSk7XHJcbiAgICAgICAgICAgICAgICB0aGlzLl9hZFZpZGVvID0gbnVsbDtcclxuICAgICAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgbGV0IG9uQWRWaWRlb0Nsb3NlZCA9IChyZXM6IGFueSkgPT4ge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5fYWRWaWRlbz8ub2ZmQ2xvc2Uob25BZFZpZGVvQ2xvc2VkKTtcclxuICAgICAgICAgICAgICAgIGlmIChpc1dlY2hhdCgpKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKHJlcyAmJiByZXMuaXNFbmRlZCB8fCByZXMgPT09IHVuZGVmaW5lZCkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBjYWxsYmFjayhFQWRWaWRlb1Jlc3VsdC5BQ0NFUFQsIDEpO1xyXG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhbGxiYWNrKEVBZFZpZGVvUmVzdWx0LlJFSkVDVCwgMCk7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfSBlbHNlIGlmIChpc0J5dGVkYW5jZSgpKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgbGV0IHJlc0NvbnZlcnRlZCA9IHJlcyBhcyB7IGlzRW5kZWQ6IGJvb2xlYW4sIGNvdW50OiBudW1iZXIgfTtcclxuICAgICAgICAgICAgICAgICAgICBpZiAocmVzQ29udmVydGVkICYmIHJlc0NvbnZlcnRlZC5jb3VudCA+IDApIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgY2FsbGJhY2soRUFkVmlkZW9SZXN1bHQuQUNDRVBULCByZXNDb252ZXJ0ZWQuY291bnQpO1xyXG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhbGxiYWNrKEVBZFZpZGVvUmVzdWx0LlJFSkVDVCwgMCk7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICB0aGlzLl9hZFZpZGVvPy5vZmZDbG9zZShvbkFkVmlkZW9DbG9zZWQpO1xyXG5cclxuICAgICAgICAgICAgaWYgKGlzV2VjaGF0KCkpIHtcclxuICAgICAgICAgICAgICAgIC8vIEB0cy1pZ25vcmVcclxuICAgICAgICAgICAgICAgIHRoaXMuX2FkVmlkZW8gPSB3eC5jcmVhdGVSZXdhcmRlZFZpZGVvQWQoe1xyXG4gICAgICAgICAgICAgICAgICAgIGFkVW5pdElkOiB0aGlzLl9hZFVpZFxyXG4gICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoaXNCeXRlZGFuY2UoKSkge1xyXG4gICAgICAgICAgICAgICAgLy8gQHRzLWlnbm9yZVxyXG4gICAgICAgICAgICAgICAgdGhpcy5fYWRWaWRlbyA9IHR0LmNyZWF0ZVJld2FyZGVkVmlkZW9BZCh7XHJcbiAgICAgICAgICAgICAgICAgICAgYWRVbml0SWQ6IHRoaXMuX2FkVWlkLFxyXG4gICAgICAgICAgICAgICAgICAgIG11bHRpdG9uOiB0cnVlLFxyXG4gICAgICAgICAgICAgICAgICAgIG11bHRpdG9uUmV3YXJkTXNnOiBbJ+WkmjHmrKHlpZblirEnLCAn5YaN5aSa5LiA5qyh5aWW5YqxJywgJ+WGjeWkmuS4gOasoeWlluWKsSddLFxyXG4gICAgICAgICAgICAgICAgICAgIG11bHRpdG9uUmV3YXJkVGltZXM6IG1heFZpZGVvQ291bnQsXHJcbiAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgIHRoaXMuX2FkVmlkZW8gPSBudWxsO1xyXG4gICAgICAgICAgICB9XHJcblxyXG5cclxuICAgICAgICAgICAgdGhpcy5fYWRWaWRlbz8ub25Mb2FkKCgpID0+IHtcclxuICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKCdBZCBsb2FkIHN1Y2Nlc3MnKTtcclxuICAgICAgICAgICAgfSk7XHJcblxyXG4gICAgICAgICAgICB0aGlzLl9hZFZpZGVvPy5vbkVycm9yKChlcnI6IHsgZXJyTXNnOiBzdHJpbmcsIGVyckNvZGU6IG51bWJlciB9KSA9PiB7XHJcbiAgICAgICAgICAgICAgICBjb25zb2xlLmxvZygnQWQgdmlkZW8gZXJyb3I6JywgZXJyKTtcclxuICAgICAgICAgICAgICAgIGNhbGxiYWNrKEVBZFZpZGVvUmVzdWx0LkVSUk9SLCAwKTtcclxuICAgICAgICAgICAgfSk7XHJcblxyXG4gICAgICAgICAgICB0aGlzLl9hZFZpZGVvPy5vbkNsb3NlKG9uQWRWaWRlb0Nsb3NlZCk7XHJcblxyXG4gICAgICAgICAgICB0aGlzLl9hZFZpZGVvPy5zaG93KCkuY2F0Y2goKCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5fYWRWaWRlbz8ubG9hZCgpLnRoZW4oKCkgPT5cclxuICAgICAgICAgICAgICAgICAgICB0aGlzLl9hZFZpZGVvPy5zaG93KCkpLmNhdGNoKChlcnI6IHsgZXJyTXNnOiBzdHJpbmcsIGVyckNvZGU6IG51bWJlciB9KSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKCdDYXRjaCB2aWRlbyBhZCBlcnJvcjonLCBlcnIpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBjYWxsYmFjayhFQWRWaWRlb1Jlc3VsdC5FUlJPUiwgMCk7XHJcbiAgICAgICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgZGVzdG9yeSgpIHtcclxuICAgICAgICAgICAgdGhpcy5fYWRWaWRlbz8uZGVzdG9yeSgpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBleHBvcnQgZW51bSBFQWRCYW5uZXJMb2NhdGlvbiB7XHJcbiAgICAgICAgLyoqXHJcbiAgICAgICAgICog5bGP5bmV6aG26YOoXHJcbiAgICAgICAgICovXHJcbiAgICAgICAgVE9QLFxyXG5cclxuICAgICAgICAvKipcclxuICAgICAgICAgKiDlsY/luZXlupXpg6hcclxuICAgICAgICAgKi9cclxuICAgICAgICBCT1RUT00sXHJcbiAgICB9XHJcblxyXG4gICAgZXhwb3J0IGNsYXNzIEFkdmVydE1hbmFnZXIge1xyXG5cclxuICAgICAgICBwcml2YXRlIHN0YXRpYyBfaW5zdGFuY2U6IEFkdmVydE1hbmFnZXI7XHJcblxyXG4gICAgICAgIHN0YXRpYyBnZXQgaW5zdGFuY2UoKTogQWR2ZXJ0TWFuYWdlciB7XHJcbiAgICAgICAgICAgIGlmICghQWR2ZXJ0TWFuYWdlci5faW5zdGFuY2UpIHtcclxuICAgICAgICAgICAgICAgIEFkdmVydE1hbmFnZXIuX2luc3RhbmNlID0gbmV3IEFkdmVydE1hbmFnZXIoKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICByZXR1cm4gQWR2ZXJ0TWFuYWdlci5faW5zdGFuY2U7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBwcml2YXRlIF92aWRlbzogQURWaWRlbztcclxuICAgICAgICBwcml2YXRlIF9pbnRlcnN0aXRpYWw6IEFESW50ZXJzdGl0aWFsO1xyXG4gICAgICAgIHByaXZhdGUgX2Jhbm5lcjogQURCYW5uZXI7XHJcbiAgICAgICAgcHJpdmF0ZSBfY3VzdG9tczogUmVjb3JkPHN0cmluZywgQURDdXN0b20+ID0ge307XHJcblxyXG4gICAgICAgIHByaXZhdGUgY29uc3RydWN0b3IoKSB7XHJcblxyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgLyoqXHJcbiAgICAgICAgICog6aKE5Yqg6L295qiq5bmF5bm/5ZGK77yM5LiN5Lya5pi+56S644CC5Y+q5pyJ5L2g5Zyo6LCD55Soc2hvd0Jhbm5lcuaXtuaJjeS8muaYvuekuuOAglxyXG4gICAgICAgICAqIOWPr+mHjeWkjeiwg+eUqO+8jOS9huaYr+S8mumUgOavgeS4iuS4gOasoeeahOWunuS+i+OAguS4gOiIrOaDheWGte+8jOWFqOWxgOacieS4gOS4quWwseihjOS6hu+8jOWkquWkmuWNoOeUqOWGheWtmO+8jOiAjOS4lOayoeW/heimgeOAglxyXG4gICAgICAgICAqIEBwYXJhbSBhZFVpZCDlub/lkYpVSURcclxuICAgICAgICAgKiBAcGFyYW0gbG9jYXRpb24g5L2N572u5pyJ5Lik56eN5oOF5Ya177yaMeOAgeWPr+S7peS8oOWFpeaemuS4vuWAvO+8jOm7mOiupOS4iuaWuTsgMuOAgeWPr+S7peiHquWumuS5ieS9jee9ruS8oOWFpUlQb3NpdGlvbu+8jOazqOaEj0lQb3NpdGlvbuS4reeahHRvcOWSjGxlZnTot5/lubPlj7DnmoR0b3AsbGVmdOaYr+S4gOiHtO+8iOayoeacieS5mOS7peiuvuWkh+WDj+e0oOavlHJhdGlv77yJ77yM6ZyA6KaB5byA5Y+R6ICF6Ieq5bex6LCD6K+V5L2N572uXHJcbiAgICAgICAgICogQHBhcmFtIHNjYWxlIOm7mOiupOS4uui3n+Wxj+W5leS4gOagt+eahOWuveW6pu+8jOWPr+S7pemAmui/h+iuvue9rue8qeaUvuavlOS+i+adpeiwg+aVtOWkp+Wwj+OAguW9k+eEtu+8jOW5s+WPsOacieinhOWumuacgOWkp+aIluacgOWwj+WuveW6pu+8jOWHveaVsOWGhemDqOS8muiHquWKqOiuoeeul+OAglxyXG4gICAgICAgICAqL1xyXG4gICAgICAgIHB1YmxpYyBsb2FkQmFubmVyKGFkVWlkOiBzdHJpbmcsIGxvY2F0aW9uOiBFQWRCYW5uZXJMb2NhdGlvbiB8IElQb3NpdGlvbiA9IEVBZEJhbm5lckxvY2F0aW9uLlRPUCwgc2NhbGU6IG51bWJlciA9IDEuMCkge1xyXG4gICAgICAgICAgICB0aGlzLl9iYW5uZXI/LmRlc3Ryb3koKTtcclxuICAgICAgICAgICAgbGV0IHNpemU6IElTaXplID0gZ2V0U3lzV2luU2l6ZSgpO1xyXG4gICAgICAgICAgICAvLyDlvZMgc3R5bGUud2lkdGgg5bCP5LqOIDMwMCDml7bvvIzkvJrlj5bkvZwgMzAw44CCIOW9kyBzdHlsZS53aWR0aCDlpKfkuo7lsY/luZXlrr3luqbml7bvvIzkvJrlj5bkvZzlsY/luZXlrr3luqbjgIJcclxuICAgICAgICAgICAgbGV0IHdpZHRoID0gc2l6ZS53aWR0aCAqIHNjYWxlO1xyXG4gICAgICAgICAgICB3aWR0aCA9IHdpZHRoIDwgMzAwID8gMzAwIDogd2lkdGg7IC8vIOacgOWwj+WAvOefq+ato1xyXG4gICAgICAgICAgICB3aWR0aCA9IHdpZHRoID4gc2l6ZS53aWR0aCA/IHNpemUud2lkdGggOiB3aWR0aDsgLy/mnIDlpKflgLznn6vmraNcclxuICAgICAgICAgICAgdGhpcy5fYmFubmVyID0gdHlwZW9mIGxvY2F0aW9uID09PSAnbnVtYmVyJyA/IG5ldyBBREJhbm5lcihhZFVpZCwgbG9jYXRpb24gPT09IEVBZEJhbm5lckxvY2F0aW9uLlRPUCwgd2lkdGgsIGZhbHNlKSA6IG5ldyBBREJhbm5lcihhZFVpZCwgbG9jYXRpb24sIHdpZHRoLCBmYWxzZSk7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICAvKipcclxuICAgICAgICAgKiDmmL7npLrmqKrluYXlub/lkYpcclxuICAgICAgICAgKi9cclxuICAgICAgICBwdWJsaWMgc2hvd0Jhbm5lcigpIHtcclxuICAgICAgICAgICAgaWYgKHRoaXMuX2Jhbm5lcikge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5fYmFubmVyLnNob3coKTtcclxuICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgIGNvbnNvbGUud2FybignTWluaUdhbWVTREs6IGJhbm5lciBpcyBudWxsLCB5b3UgbXVzdCBjYWxsIGxvYWRCYW5uZXIoLi4uKSBmaXJzdCEnKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgLyoqXHJcbiAgICAgICAgICog6ZqQ6JeP5qiq5bmF5bm/5ZGKXHJcbiAgICAgICAgICovXHJcbiAgICAgICAgcHVibGljIGhpZGVCYW5uZXIoKSB7XHJcbiAgICAgICAgICAgIHRoaXMuX2Jhbm5lcj8uaGlkZSgpO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgLyoqXHJcbiAgICAgICAgICog5by55Ye65o+S5bGP5bm/5ZGKXHJcbiAgICAgICAgICogQHBhcmFtIGFkVWlkIOW5v+WRiuWNleWFg2lkXHJcbiAgICAgICAgICovXHJcbiAgICAgICAgcHVibGljIHNob3dJbnRlcnN0aXRpYWwoYWRVaWQ6IHN0cmluZykge1xyXG4gICAgICAgICAgICBpZiAodGhpcy5faW50ZXJzdGl0aWFsICYmIHRoaXMuX2ludGVyc3RpdGlhbC5hZHVpZCA9PT0gYWRVaWQpIHtcclxuICAgICAgICAgICAgICAgIHRoaXMuX2ludGVyc3RpdGlhbC5zaG93KCk7XHJcbiAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLl9pbnRlcnN0aXRpYWw/LmRlc3RvcnkoKTtcclxuICAgICAgICAgICAgICAgIHRoaXMuX2ludGVyc3RpdGlhbCA9IG5ldyBBREludGVyc3RpdGlhbChhZFVpZCk7XHJcbiAgICAgICAgICAgICAgICB0aGlzLl9pbnRlcnN0aXRpYWwuc2hvdygpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICAvKipcclxuICAgICAgICAgKiDliqDovb3ljp/nlJ/mqKHmnb/lub/lkYrvvIzkuI3kvJrmmL7npLrjgILlj6rmnInkvaDlnKjosIPnlKhzaG93Q3VzdG9t5pe25omN5Lya5pi+56S644CCXHJcbiAgICAgICAgICog55Sx5LqO5Y6f55Sf5qih5p2/5bm/5ZGK5Zyo5b6u5L+h5pyN5Yqh5ZCO56uv5Y+v5Lul5a6a5Yi25a695bqm5aSn5bCP77yM5Liq5pWw77yM57yp5pS+5q+U5L6L562J77yM5omA5Lul5L2N572u6LCD5pW06KaB5qC55o2u6K6+572u55qE5a695bqm5p2l5a6a44CC5oqW6Z+z5LiN5pSv5oyB5pys5Ye95pWw77yM5Lya6LCD55So5peg5pWI77yBXHJcbiAgICAgICAgICogQHBhcmFtIGFkVWlkIOW5v+WRiklEXHJcbiAgICAgICAgICogQHBhcmFtIGxvY2F0aW9uIOS9jee9ruacieS4pOenjeaDheWGte+8mjHjgIHlj6/ku6XkvKDlhaXmnprkuL7lgLzvvIzpu5jorqTkuIrmlrk7IDLjgIHlj6/ku6Xoh6rlrprkuYnkvY3nva7kvKDlhaVJUG9zaXRpb27vvIzms6jmhI9JUG9zaXRpb27kuK3nmoR0b3DlkoxsZWZ06Lef5bmz5Y+w55qEdG9wLGxlZnTmmK/kuIDoh7TvvIjmsqHmnInkuZjku6Xorr7lpIflg4/ntKDmr5RyYXRpb++8ie+8jOmcgOimgeW8gOWPkeiAheiHquW3seiwg+ivleS9jee9rlxyXG4gICAgICAgICAqIEBwYXJhbSBzY2FsZSDnvKnmlL7mr5TkvovvvIzpu5jorqTmmK8x77yM5Y2z5LiN57yp5pS+44CC6L+Z5Liq57yp5pS+5bm25LiN5piv6Ieq5bex5aGr77yM6ICM5piv5qC55o2u5b6u5L+hTVDlkI7lj7DkvaDphY3nva7nmoTljp/nlJ/mqKHmnb/lub/lkYrnmoTnvKnmlL7mr5TkvovloavvvIznm67liY3mnIkxMDAl77yMOTAl77yMODAl5LiJ56eN77yM5LiA6Iis5oOF5Ya15LiN55So5L+u5pS544CC6Iul5pyJ5ZCO5Y+w5L+u5pS577yM6K6w5b6X5Lyg5YWl5YC877yM5L6L5aaCOTAl5bCx5Lyg5YWlMC4544CCXHJcbiAgICAgICAgICovXHJcbiAgICAgICAgcHVibGljIGxvYWRDdXN0b20oYWRVaWQ6IHN0cmluZywgbG9jYXRpb246IElQb3NpdGlvbiA9IHsgdG9wOiAwLCBsZWZ0OiAwIH0sIHNjYWxlOiBudW1iZXIgPSAxKSB7XHJcbiAgICAgICAgICAgIC8vIHRoaXMuX2N1c3RvbT8uZGVzdHJveSgpO1xyXG4gICAgICAgICAgICAvLyB0aGlzLl9jdXN0b20gPSBuZXcgQURDdXN0b20oYWRVaWQsIGxvY2F0aW9uLnRvcCwgbG9jYXRpb24ubGVmdCwgc2NhbGUpO1xyXG4gICAgICAgICAgICBpZiAodGhpcy5fY3VzdG9tc1thZFVpZF0pIHtcclxuICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKGAke2FkVWlkfSBoYXMgYmVlbiBsb2FkZWQuYCk7XHJcbiAgICAgICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgIHRoaXMuX2N1c3RvbXNbYWRVaWRdID0gbmV3IEFEQ3VzdG9tKGFkVWlkLCBsb2NhdGlvbi50b3AsIGxvY2F0aW9uLmxlZnQsIHNjYWxlKTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIC8qKlxyXG4gICAgICAgICAqIOaYvuekuuiHquWumuS5ieW5v+WRiuOAglxyXG4gICAgICAgICAqIEBwYXJhbSBhZFVpZCDlub/lkYrnmoTllK/kuIDmoIfor4bnrKbjgILkvb/nlKjmraTmoIfor4bnrKbmnaXmn6Xmib7lkozmmL7npLrnibnlrprnmoToh6rlrprkuYnlub/lkYrjgIJcclxuICAgICAgICAgKiBcclxuICAgICAgICAgKiDmraTmlrnms5XlsJ3or5XmoLnmja7mj5DkvpvnmoRhZFVpZOaYvuekuuS4gOS4quiHquWumuS5ieW5v+WRiuOAguWmguaenOe7meWumueahGFkVWlk5a+55bqU55qE6Ieq5a6a5LmJ5bm/5ZGK5bey5Yqg6L2977yMXHJcbiAgICAgICAgICog5YiZ6LCD55So6K+l5bm/5ZGK55qE5pi+56S65pa55rOV44CC5aaC5p6c5bm/5ZGK5pyq5Yqg6L2977yM5YiZ5Zyo5o6n5Yi25Y+w6L6T5Ye66K2m5ZGK5L+h5oGv44CCXHJcbiAgICAgICAgICovXHJcbiAgICAgICAgcHVibGljIHNob3dDdXN0b20oYWRVaWQ6IHN0cmluZykge1xyXG4gICAgICAgICAgICBpZiAodGhpcy5fY3VzdG9tc1thZFVpZF0pIHtcclxuICAgICAgICAgICAgICAgIHRoaXMuX2N1c3RvbXNbYWRVaWRdLnNob3coKTtcclxuICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgIGNvbnNvbGUud2FybihgWW91IGhhdmUgbm90IGxvYWQgJHthZFVpZH0gb2YgQ3VzdG9tIEFELCBjYW4gbm90IHNob3chYCk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIC8qKlxyXG4gICAgICAgICAqIOmakOiXj+aMh+WumueahOiHquWumuS5ieW5v+WRiuWNleWFg1xyXG4gICAgICAgICAqIFxyXG4gICAgICAgICAqIOatpOaWueazleeUqOS6jumakOiXj+mAmui/h+W5v+WRiuWNleWFg+agh+ivhuespu+8iGFkVWlk77yJ5oyH5a6a55qE6Ieq5a6a5LmJ5bm/5ZGK44CC5aaC5p6c5oyH5a6a55qE5bm/5ZGK5Y2V5YWD5bey5Yqg6L295bm25pi+56S677yMXHJcbiAgICAgICAgICog5YiZ5bCG5YW26ZqQ6JeP77yb5aaC5p6c5bm/5ZGK5Y2V5YWD5pyq5Yqg6L2977yM5YiZ5Zyo5o6n5Yi25Y+w6L6T5Ye66K2m5ZGK5L+h5oGv44CCXHJcbiAgICAgICAgICogXHJcbiAgICAgICAgICogQHBhcmFtIGFkVWlkIOW5v+WRiuWNleWFg+agh+ivhuespu+8jOeUqOS6juWUr+S4gOagh+ivhuS4gOS4quiHquWumuS5ieW5v+WRiuWNleWFg+OAglxyXG4gICAgICAgICAqL1xyXG4gICAgICAgIHB1YmxpYyBoaWRlQ3VzdG9tKGFkVWlkOiBzdHJpbmcpIHtcclxuICAgICAgICAgICAgaWYgKHRoaXMuX2N1c3RvbXNbYWRVaWRdKSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLl9jdXN0b21zW2FkVWlkXS5oaWRlKCk7XHJcbiAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICBjb25zb2xlLndhcm4oYFlvdSBoYXZlIG5vdCBsb2FkICR7YWRVaWR9IG9mIEN1c3RvbSBBRCwgY2FuIG5vdCBoaWRlIWApO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICAvKipcclxuICAgICAgICAgKiDnlLHkuo7lvq7kv6Hlkozmipbpn7Pop4bpopHlub/lkYrmnLrliLbkuI3lkIzvvIzlvq7kv6Hlj6/ku6XnnIvnmoTop4bpopHlub/lkYrkuKrmlbDlj6rmnIkw5ZKMMeS4qu+8jOaKlumfs+W5s+WPsOWImeWPr+S7peecizB+bWF4VmlkZW9Db3VudFxyXG4gICAgICAgICAqIEBwYXJhbSBhZFVpZCDlub/lkYpJROOAguWmguaenOS4juS4iuS4gOasoVVJROS4jeWQjO+8jOWImeWGhemDqOS8mumHjeaWsOWIm+W7uuWunuS+i+OAguW8gOWPkeiAheWujOWFqOS4jeeUqOWFs+W/g+i/meS4que7huiKguOAglxyXG4gICAgICAgICAqIEBwYXJhbSBvblZpZGVvUmVzdWx0IOS4pOS4quWPguaVsO+8muesrOS4gOS4qnJlc+aYr0VBZFZpZGVvUmVzdWx05a6a5LmJ77yM56ys5LqMY291bnTmmK/nlKjmiLfnnIvkuoblpJrlsJHkuKrop4bpopHlub/lkYrjgIIgXHJcbiAgICAgICAgICogQHBhcmFtIHRhcmdldCBvblZpZGVvUmVzdWx055qE5oul5pyJ6ICFXHJcbiAgICAgICAgICogQHBhcmFtIG1heFZpZGVvQ291bnQg5pyA5aSn6KeG6aKR5Liq5pWw44CC6buY6K6k5pivM++8jOS7heWvueaKlumfs+W5s+WPsOeUn+aViOOAguW+ruS/oeW5s+WPsOeci+WujOinhumikWNvdW5055qE57uT5p6c5rC46L+c5pivMeaIljBcclxuICAgICAgICAgKi9cclxuICAgICAgICBwdWJsaWMgc2hvd1ZpZGVvKGFkVWlkOiBzdHJpbmcsIG9uVmlkZW9SZXN1bHQ6IChyZXM6IEVBZFZpZGVvUmVzdWx0LCBjb3VudDogbnVtYmVyKSA9PiB2b2lkLCB0YXJnZXQ/OiBhbnksIG1heFZpZGVvQ291bnQ6IG51bWJlciA9IDMpIHtcclxuICAgICAgICAgICAgaWYgKHRoaXMuX3ZpZGVvICYmIHRoaXMuX3ZpZGVvLmFkdWlkID09PSBhZFVpZCkge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5fdmlkZW8uc2hvdyhvblZpZGVvUmVzdWx0LCB0YXJnZXQsIG1heFZpZGVvQ291bnQpO1xyXG4gICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5fdmlkZW8/LmRlc3RvcnkoKTtcclxuICAgICAgICAgICAgICAgIHRoaXMuX3ZpZGVvID0gbmV3IEFEVmlkZW8oYWRVaWQpO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5fdmlkZW8uc2hvdyhvblZpZGVvUmVzdWx0LCB0YXJnZXQsIG1heFZpZGVvQ291bnQpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICAvKipcclxuICAgICAgICAgKiDplIDmr4HlhoXpg6jmiYDmnInlrp7kvovvvIzmuIXnqbrlhoXlrZhcclxuICAgICAgICAgKi9cclxuICAgICAgICBwdWJsaWMgZGVzdHJveUFsbCgpIHtcclxuICAgICAgICAgICAgdGhpcy5fYmFubmVyPy5kZXN0cm95KCk7XHJcbiAgICAgICAgICAgIHRoaXMuX2Jhbm5lciA9IG51bGw7XHJcblxyXG4gICAgICAgICAgICB0aGlzLl9pbnRlcnN0aXRpYWw/LmRlc3RvcnkoKTtcclxuICAgICAgICAgICAgdGhpcy5faW50ZXJzdGl0aWFsID0gbnVsbDtcclxuXHJcbiAgICAgICAgICAgIHRoaXMuX3ZpZGVvPy5kZXN0b3J5KCk7XHJcbiAgICAgICAgICAgIHRoaXMuX3ZpZGVvID0gbnVsbDtcclxuXHJcbiAgICAgICAgICAgIGlmICh0aGlzLl9jdXN0b21zKSB7XHJcbiAgICAgICAgICAgICAgICBmb3IgKGxldCB2YWwgaW4gdGhpcy5fY3VzdG9tcykge1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuX2N1c3RvbXNbdmFsXT8uZGVzdHJveSgpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgdGhpcy5fY3VzdG9tcyA9IHt9O1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIGV4cG9ydCBlbnVtIEVHYW1lQ2x1Ykljb24ge1xyXG4gICAgICAgIC8qKiDnu7/oibLlm77moIcgKi9cclxuICAgICAgICBHUkVFTiA9ICdncmVlbicsXHJcblxyXG4gICAgICAgIC8qKiDnuqLoibLlm77moIcgKi9cclxuICAgICAgICBXSElURSA9ICd3aGl0ZScsXHJcblxyXG4gICAgICAgIC8qKiDmnInpu5HoibLlnIbop5Log4zmma/nmoTnmb3oibLlm77moIcgKi9cclxuICAgICAgICBEQVJLID0gJ2RhcmsnLFxyXG5cclxuICAgICAgICAvKiog5pyJ55m96Imy5ZyG6KeS6IOM5pmv55qE57u/6Imy5Zu+5qCHICovXHJcbiAgICAgICAgTElHSFQgPSAnbGlnaHQnXHJcbiAgICB9XHJcblxyXG4gICAgZXhwb3J0IGNsYXNzIEdhbWVDbHViIHtcclxuICAgICAgICBwcml2YXRlIHN0YXRpYyBfaW5zdGFuY2U6IEdhbWVDbHViO1xyXG5cclxuICAgICAgICBzdGF0aWMgZ2V0IGluc3RhbmNlKCk6IEdhbWVDbHViIHtcclxuICAgICAgICAgICAgaWYgKCF0aGlzLl9pbnN0YW5jZSkge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5faW5zdGFuY2UgPSBuZXcgR2FtZUNsdWIoKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICByZXR1cm4gdGhpcy5faW5zdGFuY2U7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBwcml2YXRlIF9jbHViOiBhbnk7XHJcblxyXG4gICAgICAgIHByaXZhdGUgY29uc3RydWN0b3IoKSB7XHJcblxyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgLyoqXHJcbiAgICAgICAgICog5Yib5bu65ri45oiP5ZyI5oyJ6ZKuXHJcbiAgICAgICAgICogQHBhcmFtIGljb24gXHJcbiAgICAgICAgICogQHBhcmFtIHBvc2l0aW9uIFxyXG4gICAgICAgICAqIEBwYXJhbSBzaXplIFxyXG4gICAgICAgICAqIEBwYXJhbSBvcGVuTGluayBcclxuICAgICAgICAgKi9cclxuICAgICAgICBjcmVhdGUoaWNvbjogRUdhbWVDbHViSWNvbiA9IEVHYW1lQ2x1Ykljb24uR1JFRU4sIHBvc2l0aW9uOiBJUG9zaXRpb24gPSB7IHRvcDogMCwgbGVmdDogMCB9LCBzaXplOiBJU2l6ZSA9IHsgd2lkdGg6IDQwLCBoZWlnaHQ6IDQwIH0sIG9wZW5MaW5rPzogc3RyaW5nKSB7XHJcbiAgICAgICAgICAgIGlmIChpc1dlY2hhdCgpKSB7XHJcbiAgICAgICAgICAgICAgICAvLyBAdHMtaWdub3JlXHJcbiAgICAgICAgICAgICAgICB0aGlzLl9jbHViID0gd3guY3JlYXRlR2FtZUNsdWJCdXR0b24oe1xyXG4gICAgICAgICAgICAgICAgICAgIGljb246IGljb24sXHJcbiAgICAgICAgICAgICAgICAgICAgc3R5bGU6IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgbGVmdDogcG9zaXRpb24ubGVmdCxcclxuICAgICAgICAgICAgICAgICAgICAgICAgdG9wOiBwb3NpdGlvbi50b3AsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHdpZHRoOiBzaXplLndpZHRoLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBoZWlnaHQ6IHNpemUuaGVpZ2h0XHJcbiAgICAgICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICAgICAgICBvcGVubGluazogb3BlbkxpbmtcclxuICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBzaG93KCkge1xyXG4gICAgICAgICAgICB0aGlzLl9jbHViPy5zaG93KCk7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBoaWRlKCkge1xyXG4gICAgICAgICAgICB0aGlzLl9jbHViPy5oaWRlKCk7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBkZXN0b3J5KCkge1xyXG4gICAgICAgICAgICB0aGlzLl9jbHViPy5kZXN0cm95KCk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuXHJcbiAgICAvKipcclxuICAgICAqIOaMr+WKqOexu+Wei1xyXG4gICAgICovXHJcbiAgICBleHBvcnQgZW51bSBFVmlyYnJhdGVUeXBlIHtcclxuICAgICAgICAvKipcclxuICAgICAgICAgKiDnn63mjK/liqhcclxuICAgICAgICAgKi9cclxuICAgICAgICBTSE9SVCxcclxuXHJcbiAgICAgICAgLyoqXHJcbiAgICAgICAgICog6ZW/5oyv5YqoXHJcbiAgICAgICAgICovXHJcbiAgICAgICAgTE9OR1xyXG4gICAgfVxyXG5cclxuXHJcblxyXG4gICAgICAgIC8qKlxyXG4gICAgICog5oqW6Z+z5L6n6L655qCP5LiT5bGe5o6l5Y+jXHJcbiAgICAgKi9cclxuICAgIGV4cG9ydCBjbGFzcyBCeXRlZGFuY2VTaWRlYmFyIHtcclxuICAgICAgICAvKipcclxuICAgICAgICAgKiDmnKzmuLjmiI/lnKjmipbpn7Pnjq/looPkuIvlkK/liqjnm5HmjqfvvIzpnIDopoHmlL7lnKjlhajlsYDnjq/looPkuK3vvIzkv53or4Hog73nrKzkuIDml7bpl7TlkK/liqjjgILlm6DkuLrlj6/og73nm5HlkKzmipbpn7PlpLHotKXvvIjmipbpn7PlsI/muLjmiI/lrpjmlrnnmoTor7TmmI7vvInvvIFcclxuICAgICAgICAgKiBAcGFyYW0gb25SZXN1bHQg5YyF5ZCr5LiA5LiqYm9vbGVhbuWPguaVsOeahOWHveaVsFxyXG4gICAgICAgICAqIEBwYXJhbSB0YXJnZXQg5LiK6L+w5Ye95pWw55qE5oul5pyJ6ICF77yM5aaC5p6c5piv57G755qE5oiQ5ZGY5Ye95pWw77yM6ZyA6KaB5Lyg5YWldGhpc+OAguaZrumAmuaIluWMv+WQjeWHveaVsOW/veeVpeWNs+WPr+OAglxyXG4gICAgICAgICAqL1xyXG4gICAgICAgIHN0YXRpYyBsaXN0ZW5Gcm9tU2lkZWJhcihvblJlc3VsdDogKHN1Y2Nlc3M6IGJvb2xlYW4pID0+IHZvaWQsIHRhcmdldD86IGFueSkge1xyXG4gICAgICAgICAgICBpZiAoIWlzQnl0ZWRhbmNlKCkpIHtcclxuICAgICAgICAgICAgICAgIG9uUmVzdWx0Py5jYWxsKHRhcmdldCwgZmFsc2UpO1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIC8vIEB0cy1pZ25vcmVcclxuICAgICAgICAgICAgdHQub25TaG93KChyZXM6IGFueSkgPT4ge1xyXG4gICAgICAgICAgICAgICAgY29uc29sZS5sb2coJ29uU2hvdyBsYXVuY2ggcmVzOicsIHJlcyk7XHJcbiAgICAgICAgICAgICAgICBpZiAocmVzLnNjZW5lID09PSAnMDIxMDM2Jykge1xyXG4gICAgICAgICAgICAgICAgICAgIG9uUmVzdWx0Py5jYWxsKHRhcmdldCwgdHJ1ZSk7XHJcbiAgICAgICAgICAgICAgICAgICAgY29uc29sZS5sb2coJ2xhdW5jaCBmcm9tIHNpZGViYXInKTtcclxuICAgICAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgICAgb25SZXN1bHQ/LmNhbGwodGFyZ2V0LCBmYWxzZSk7XHJcbiAgICAgICAgICAgICAgICAgICAgY29uc29sZS5sb2coJ05PVCBsYXVuY2ggZnJvbSBkb3V5aW4gc2lkZWJhciEnKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfSk7XHJcblxyXG4gICAgICAgICAgICAvLyBAdHMtaWdub3JlXHJcbiAgICAgICAgICAgIGxldCBvcHRpb25zID0gdHQuZ2V0TGF1bmNoT3B0aW9uc1N5bmMoKTtcclxuICAgICAgICAgICAgaWYgKG9wdGlvbnMgJiYgb3B0aW9ucy5zY2VuZSA9PT0gJzAyMTAzNicpIHtcclxuICAgICAgICAgICAgICAgIG9uUmVzdWx0Py5jYWxsKHRhcmdldCwgdHJ1ZSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIC8qKlxyXG4gICAgICAgICAqIOajgOa1i+aKlumfs+S+p+i+ueagj+aYr+WQpuWtmOWcqFxyXG4gICAgICAgICAqIEBwYXJhbSBvblJlc3VsdCDljIXlkKvkuIDkuKpib29sZWFu5Y+C5pWw55qE5Ye95pWwXHJcbiAgICAgICAgICogQHBhcmFtIHRhcmdldCDkuIrov7Dlh73mlbDnmoTmi6XmnInogIXvvIzlpoLmnpzmmK/nsbvnmoTmiJDlkZjlh73mlbDvvIzpnIDopoHkvKDlhaV0aGlz44CC5pmu6YCa5oiW5Yy/5ZCN5Ye95pWw5b+955Wl5Y2z5Y+v44CCXHJcbiAgICAgICAgICogQHJldHVybnMgXHJcbiAgICAgICAgICovXHJcbiAgICAgICAgc3RhdGljIGNoZWNrU2lkZUJhcihvblJlc3VsdDogKHN1Y2Nlc3M6IGJvb2xlYW4pID0+IHZvaWQsIHRhcmdldD86IGFueSkge1xyXG4gICAgICAgICAgICBpZiAoIWlzQnl0ZWRhbmNlKCkpIHtcclxuICAgICAgICAgICAgICAgIG9uUmVzdWx0Py5jYWxsKHRhcmdldCwgZmFsc2UpO1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAvL0B0cy1pZ25vcmVcclxuICAgICAgICAgICAgdHQuY2hlY2tTY2VuZSh7XHJcbiAgICAgICAgICAgICAgICBzY2VuZTogXCJzaWRlYmFyXCIsXHJcbiAgICAgICAgICAgICAgICBzdWNjZXNzOiAocmVzOiBhbnkpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICBjb25zb2xlLmxvZyhcImNoZWNrIHNjZW5lIHN1Y2Nlc3M6IFwiLCByZXMuaXNFeGlzdCk7XHJcbiAgICAgICAgICAgICAgICAgICAgb25SZXN1bHQ/LmNhbGwodGFyZ2V0LCA8Ym9vbGVhbj5yZXMuaXNFeGlzdCk7XHJcblxyXG4gICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICAgIGZhaWw6IChyZXM6IGFueSkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKFwiY2hlY2sgc2NlbmUgZmFpbDpcIiwgcmVzKTtcclxuICAgICAgICAgICAgICAgICAgICBvblJlc3VsdD8uY2FsbCh0YXJnZXQsIGZhbHNlKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICAvKipcclxuICAgICAgICAgKiDot7PovazliLDmipbpn7PkvqfovrnmoI9cclxuICAgICAgICAgKiBAcGFyYW0gb25SZXN1bHQg5YyF5ZCr5LiA5LiqYm9vbGVhbuWPguaVsOeahOWHveaVsFxyXG4gICAgICAgICAqIEBwYXJhbSB0YXJnZXQg5LiK6L+w5Ye95pWw55qE5oul5pyJ6ICF77yM5aaC5p6c5piv57G755qE5oiQ5ZGY5Ye95pWw77yM6ZyA6KaB5Lyg5YWldGhpc+OAguaZrumAmuaIluWMv+WQjeWHveaVsOW/veeVpeWNs+WPr+OAglxyXG4gICAgICAgICAqIEByZXR1cm5zIFxyXG4gICAgICAgICAqL1xyXG4gICAgICAgIHN0YXRpYyBuYXZpZ2F0ZVRvU2lkZWJhcihvblJlc3VsdDogKHN1Y2Nlc3M6IGJvb2xlYW4pID0+IHZvaWQsIHRhcmdldD86IGFueSkge1xyXG4gICAgICAgICAgICBpZiAoIWlzQnl0ZWRhbmNlKCkpIHtcclxuICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKFwibm90IGRvdXlpbiBwbGF0Zm9ybSFcIik7XHJcbiAgICAgICAgICAgICAgICBvblJlc3VsdD8uY2FsbCh0YXJnZXQsIGZhbHNlKTtcclxuICAgICAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgLy8gQHRzLWlnbm9yZVxyXG4gICAgICAgICAgICB0dC5uYXZpZ2F0ZVRvU2NlbmUoe1xyXG4gICAgICAgICAgICAgICAgc2NlbmU6IFwic2lkZWJhclwiLFxyXG4gICAgICAgICAgICAgICAgc3VjY2VzczogKCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKFwibmF2aWdhdGUgc3VjY2Vzc1wiKTtcclxuICAgICAgICAgICAgICAgICAgICBvblJlc3VsdD8uY2FsbCh0YXJnZXQsIHRydWUpO1xyXG4gICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICAgIGZhaWw6IChyZXM6IGFueSkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKFwibmF2aWdhdGUgZmFpbGVkIHJlYXNvbjpcIiwgcmVzKTtcclxuICAgICAgICAgICAgICAgICAgICBvblJlc3VsdD8uY2FsbCh0YXJnZXQsIGZhbHNlKTtcclxuICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIOW5s+WPsOW4uOeUqEFQSeWQiOmbhlxyXG4gICAgICovXHJcbiAgICBleHBvcnQgY2xhc3MgQVBJIHtcclxuICAgICAgICBwcml2YXRlIHN0YXRpYyBfbG9naW5Db2RlOiBzdHJpbmcgPSBudWxsO1xyXG4gICAgICAgIHByaXZhdGUgc3RhdGljIF9sb2dpbkFub255bW91c0NvZGU6IHN0cmluZyA9IG51bGw7XHJcbiAgICAgICAgcHJpdmF0ZSBzdGF0aWMgX2hhc0luaXRXZWNoYXRDbG91ZEZ1bmN0aW9uOiBib29sZWFuID0gZmFsc2U7XHJcbiAgICAgICAgcHJpdmF0ZSBzdGF0aWMgX3VzZXJJbmZvOiBhbnkgPSBudWxsO1xyXG4gICAgICAgIHByaXZhdGUgc3RhdGljIF90YTogYW55ID0gbnVsbDtcclxuXHJcbiAgICAgICAgLyoqXHJcbiAgICAgICAgICog5YiG5LqrYXBw57uZ5pyL5Y+L77yM5b6u5L+h5bCP5ri45oiP5YiG5Lqr5piv5rKh5pyJb25TdWNjZXNz5Zue6LCD55qE44CCXHJcbiAgICAgICAgICogQHBhcmFtIHRpdGxlIOagh+mimFxyXG4gICAgICAgICAqIEBwYXJhbSBkZXNjcmlwdGlvbiDnu4boioLmj4/ov7Dkv6Hmga8gXHJcbiAgICAgICAgICogQHBhcmFtIGltYWdlVXJsIOWbvueJh+WcsOWdgFxyXG4gICAgICAgICAqIEBwYXJhbSBxdWVyeSDmn6Xor6Lkv6Hmga9cclxuICAgICAgICAgKiBAcGFyYW0gb25TdWNjZXNzIOaKlumfs+S8muWbnuiwg++8jOW+ruS/oeS4jeS8muWbnuiwg1xyXG4gICAgICAgICAqL1xyXG4gICAgICAgIHN0YXRpYyBzaGFyZUFwcFRvRnJpZW5kcyh0aXRsZTogc3RyaW5nLCBkZXNjcmlwdGlvbjogc3RyaW5nID0gJycsIGltYWdlVXJsPzogc3RyaW5nLCBxdWVyeT86IHN0cmluZywgb25TdWNjZXNzPzogKCkgPT4gdm9pZCkge1xyXG4gICAgICAgICAgICBpZiAoaXNXZWNoYXQoKSkge1xyXG4gICAgICAgICAgICAgICAgdHJ5IHtcclxuICAgICAgICAgICAgICAgICAgICAvL0B0cy1pZ25vcmVcclxuICAgICAgICAgICAgICAgICAgICB3eC5zaGFyZUFwcE1lc3NhZ2Uoe1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB0aXRsZTogdGl0bGUsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGltYWdlVXJsOiBpbWFnZVVybCxcclxuICAgICAgICAgICAgICAgICAgICAgICAgcXVlcnk6IHF1ZXJ5LFxyXG4gICAgICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICAgICAgfSBjYXRjaCAoZXJyKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgY29uc29sZS5sb2coYHNoYXJlIGZhaWxkOiAke2Vycn1gKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgaWYgKGlzQnl0ZWRhbmNlKCkpIHtcclxuICAgICAgICAgICAgICAgIC8vQHRzLWlnbm9yZVxyXG4gICAgICAgICAgICAgICAgdHQuc2hhcmVBcHBNZXNzYWdlKHtcclxuICAgICAgICAgICAgICAgICAgICB0aXRsZTogdGl0bGUsXHJcbiAgICAgICAgICAgICAgICAgICAgZGVzYzogZGVzY3JpcHRpb24sXHJcbiAgICAgICAgICAgICAgICAgICAgaW1hZ2VVcmw6IGltYWdlVXJsID8/ICcnLFxyXG4gICAgICAgICAgICAgICAgICAgIHF1ZXJ5OiBxdWVyeSA/PyAnJyxcclxuICAgICAgICAgICAgICAgICAgICBzdWNjZXNzKHJlczogYW55KSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKCdzaGFyZSBzdWNjZXNzOicsIHJlcyk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIG9uU3VjY2Vzcz8uKCk7XHJcbiAgICAgICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICAgICAgICBmYWlsKHJlczogYW55KSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKCdzaGFyZSBmYWlsOicsIHJlcyk7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIC8qKlxyXG4gICAgICAgICAqIOaYvuekuuaPkOekuuS/oeaBr1xyXG4gICAgICAgICAqIEBwYXJhbSB0aXRsZSDmoIfpophcclxuICAgICAgICAgKiBAcGFyYW0gZHVyYXRpb24g5pe26ZW/77yI5Y2V5L2N77ya56eS77yJXHJcbiAgICAgICAgICogQHJldHVybnMgXHJcbiAgICAgICAgICovXHJcbiAgICAgICAgc3RhdGljIHNob3dUb2FzdCh0aXRsZTogc3RyaW5nLCBkdXJhdGlvbjogbnVtYmVyID0gMikge1xyXG4gICAgICAgICAgICBpZiAoaXNXZWNoYXQoKSkge1xyXG4gICAgICAgICAgICAgICAgLy8gQHRzLWlnbm9yZVxyXG4gICAgICAgICAgICAgICAgd3guc2hvd1RvYXN0KHtcclxuICAgICAgICAgICAgICAgICAgICB0aXRsZTogdGl0bGUsXHJcbiAgICAgICAgICAgICAgICAgICAgaWNvbjogJ25vbmUnLFxyXG4gICAgICAgICAgICAgICAgICAgIGR1cmF0aW9uOiBkdXJhdGlvbiAqIDUwMFxyXG4gICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICAvKipcclxuICAgICAgICAgKiDorr7lpIfpnIfliqjmlYjmnpzvvIzpu5jorqTkuLrnn63pnIfliqjjgILms6jmhI/vvJrlj6/og73kuIDkupvmnLrlnovkuI3kvJrnlJ/mlYjvvIzlhbfkvZPnnIvlubPlj7DmlrnnmoTor7TmmI5cclxuICAgICAgICAgKiBAcGFyYW0gdHlwZSBNaW5pR2FtZVNkay5BUEkuRVZpcmJyYXRlVHlwZVxyXG4gICAgICAgICAqL1xyXG4gICAgICAgIHN0YXRpYyB2aWJyYXRlKHR5cGU6IEVWaXJicmF0ZVR5cGUgPSBFVmlyYnJhdGVUeXBlLlNIT1JUKSB7XHJcbiAgICAgICAgICAgIGlmIChpc1dlY2hhdCgpKSB7XHJcbiAgICAgICAgICAgICAgICBzd2l0Y2ggKHR5cGUpIHtcclxuICAgICAgICAgICAgICAgICAgICBjYXNlIEVWaXJicmF0ZVR5cGUuU0hPUlQ6XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vQHRzLWlnbm9yZVxyXG4gICAgICAgICAgICAgICAgICAgICAgICB3eC52aWJyYXRlU2hvcnQoe1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc3VjY2VzcyhyZXM6IGFueSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKCd2aWJyYXRlIHN1Y2Nlc3M6JywgcmVzKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWlsKHJlczogYW55KSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc29sZS5sb2coJ3ZpYnJhdGVTaG9ydCBmYWlsZWQnLCByZXMpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICAgICAgICAgIGNhc2UgRVZpcmJyYXRlVHlwZS5MT05HOlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAvL0B0cy1pZ25vcmVcclxuICAgICAgICAgICAgICAgICAgICAgICAgd3gudmlicmF0ZUxvbmcoe1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc3VjY2VzcyhyZXM6IGFueSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKCd2aWJyYXRlIHN1Y2Nlc3MnLCByZXMpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhaWwocmVzOiBhbnkpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zb2xlLmxvZyhgdmlicmF0ZUxvbmcgZmFpbGVkYCwgcmVzKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgICAgICAgICBkZWZhdWx0OlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgaWYgKGlzQnl0ZWRhbmNlKCkpIHtcclxuICAgICAgICAgICAgICAgIHN3aXRjaCAodHlwZSkge1xyXG4gICAgICAgICAgICAgICAgICAgIGNhc2UgRVZpcmJyYXRlVHlwZS5TSE9SVDpcclxuICAgICAgICAgICAgICAgICAgICAgICAgLy9AdHMtaWdub3JlXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHR0LnZpYnJhdGVTaG9ydCh7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdWNjZXNzKHJlczogYW55KSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc29sZS5sb2coJ3ZpYnJhdGUgc3VjY2VzczonLCByZXMpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhaWwocmVzOiBhbnkpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zb2xlLmxvZygndmlicmF0ZVNob3J0IGZhaWxlZCcsIHJlcyk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgICAgICAgICAgY2FzZSBFVmlyYnJhdGVUeXBlLkxPTkc6XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vQHRzLWlnbm9yZVxyXG4gICAgICAgICAgICAgICAgICAgICAgICB0dC52aWJyYXRlTG9uZyh7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdWNjZXNzKHJlczogYW55KSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc29sZS5sb2coJ3ZpYnJhdGUgc3VjY2VzcycsIHJlcyk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFpbChyZXM6IGFueSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKGB2aWJyYXRlTG9uZyBmYWlsZWRgLCByZXMpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICAgICAgICAgIGRlZmF1bHQ6XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICAvKipcclxuICAgICAgICAgKiDph43lkK/lsI/muLjmiI9cclxuICAgICAgICAgKi9cclxuICAgICAgICBzdGF0aWMgcmVib290KCkge1xyXG4gICAgICAgICAgICBpZiAoaXNXZWNoYXQoKSkge1xyXG4gICAgICAgICAgICAgICAgLy9AdHMtaWdub3JlXHJcbiAgICAgICAgICAgICAgICB3eC5yZXN0YXJ0TWluaVByb2dyYW0oe1xyXG4gICAgICAgICAgICAgICAgICAgIHN1Y2Nlc3M6ICgpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgY29uc29sZS5sb2coJ3Jlc3RhcnQgc3VjY2VzcycpO1xyXG4gICAgICAgICAgICAgICAgICAgIH0sXHJcblxyXG4gICAgICAgICAgICAgICAgICAgIGZhaWw6ICgpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgY29uc29sZS5sb2coJ3Jlc3RhcnQgZmFpbGVkJyk7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfSlcclxuICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgaWYgKGlzQnl0ZWRhbmNlKCkpIHtcclxuICAgICAgICAgICAgICAgIHRyeSB7XHJcbiAgICAgICAgICAgICAgICAgICAgLy8gQHRzLWlnbm9yZVxyXG4gICAgICAgICAgICAgICAgICAgIHR0LnJlc3RhcnRNaW5pUHJvZ3JhbVN5bmMoKTtcclxuICAgICAgICAgICAgICAgIH0gY2F0Y2ggKGVycm9yKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgY29uc29sZS5sb2coYHJlc3RhcnRNaW5pUHJvZ3JhbVN5bmNgLCBlcnJvcik7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIC8qKlxyXG4gICAgICAgICAqIOmAgOWHuuWwj+a4uOaIj1xyXG4gICAgICAgICAqL1xyXG4gICAgICAgIHN0YXRpYyBleGl0KCkge1xyXG4gICAgICAgICAgICBpZiAoaXNXZWNoYXQoKSkge1xyXG4gICAgICAgICAgICAgICAgLy9AdHMtaWdub3JlXHJcbiAgICAgICAgICAgICAgICB3eC5leGl0TWluaVByb2dyYW0oe1xyXG4gICAgICAgICAgICAgICAgICAgIHN1Y2Nlc3M6ICgpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgY29uc29sZS5sb2coJ2V4aXQgc3VjY2VzcycpO1xyXG4gICAgICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgICAgICAgZmFpbDogKCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zb2xlLmxvZygnZXhpdCBmYWlsZWQnKTtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgaWYgKGlzQnl0ZWRhbmNlKCkpIHtcclxuICAgICAgICAgICAgICAgIC8vIEB0cy1pZ25vcmVcclxuICAgICAgICAgICAgICAgIHR0LmV4aXRNaW5pUHJvZ3JhbSh7XHJcbiAgICAgICAgICAgICAgICAgICAgc3VjY2VzcyhyZXM6IGFueSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zb2xlLmxvZyhcImV4aXQgc3VjY2VzczpcIiwgcmVzPy5kYXRhKTtcclxuICAgICAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgICAgICAgIGZhaWwocmVzOiBhbnkpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgY29uc29sZS5sb2coXCJleGl0IGZhaWw6XCIsIHJlcz8uZXJyTXNnKTtcclxuICAgICAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIC8qKlxyXG4gICAgICAgICAqIOaYvuekuui9rOWPkeaMiemSruOAgumAmuW4uOWcqOWImui/m+WFpea4uOaIj+eahOaXtuWAmeiwg+eUqOOAglxyXG4gICAgICAgICAqIOS4u+imgeaYr+aJk+W8gOW5s+WPsOKAnC4uLuKAnei/meS4quaMiemSrumHjOmdoueahOWIhuS6q+iPnOWNle+8jOS4gOiIrOm7mOiupOaYr+WFs+mXreeahO+8jOmcgOimgeiwg+eUqOi/meS4quWHveaVsOaJk+W8gOOAguWPr+S7peiuqeeUqOaIt+WIhuS6q+S9oOeahOa4uOaIj+WFpeWPo+OAglxyXG4gICAgICAgICAqL1xyXG4gICAgICAgIHN0YXRpYyBzaG93U2hhcmVNZW51KCkge1xyXG4gICAgICAgICAgICBpZiAoaXNXZWNoYXQoKSkge1xyXG4gICAgICAgICAgICAgICAgLy9AdHMtaWdub3JlXHJcbiAgICAgICAgICAgICAgICB3eC5zaG93U2hhcmVNZW51KHtcclxuICAgICAgICAgICAgICAgICAgICB3aXRoU2hhcmVUaWNrZXQ6IHRydWUsXHJcbiAgICAgICAgICAgICAgICAgICAgbWVudXM6IFsnc2hhcmVBcHBNZXNzYWdlJywgJ3NoYXJlVGltZWxpbmUnXSxcclxuICAgICAgICAgICAgICAgICAgICBzdWNjZXNzOiAoKSA9PiB7IH0sXHJcbiAgICAgICAgICAgICAgICAgICAgZmFpbDogKCkgPT4geyB9LFxyXG4gICAgICAgICAgICAgICAgICAgIGNvbXBsZXRlOiAoKSA9PiB7IH1cclxuICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICB9XHJcblxyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgLyoqXHJcbiAgICAgICAgICog5b6u5L+h5bCP5ri45oiP77ya6Lez6L2s5Yiw5Y+m5aSW5LiA5qy+5bCP5ri45oiPXHJcbiAgICAgICAgICog5oqW6Z+z5bCP5ri45oiP77ya6Lez6L2s5Yiw5oyH5a6a55qE6KeG6aKR55WM6Z2iXHJcbiAgICAgICAgICogQHBhcmFtIHRhcmdldElkIOW+ruS/oeWwj+a4uOaIj2FwcGlk5oiW6ICF6KeG6aKR55WM6Z2iXHJcbiAgICAgICAgICovXHJcbiAgICAgICAgc3RhdGljIG5hdmlnYXRlVG8odGFyZ2V0SWQ6IHN0cmluZywgb25TdWNjZXNzPzogKCkgPT4gdm9pZCkge1xyXG4gICAgICAgICAgICBpZiAoaXNXZWNoYXQoKSkge1xyXG4gICAgICAgICAgICAgICAgLy8gQHRzLWlnbm9yZVxyXG4gICAgICAgICAgICAgICAgd3gubmF2aWdhdGVUb01pbmlQcm9ncmFtKHtcclxuICAgICAgICAgICAgICAgICAgICBhcHBJZDogdGFyZ2V0SWQsXHJcbiAgICAgICAgICAgICAgICAgICAgZXh0cmFEYXRhOiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGZvbzogJ2JhcidcclxuICAgICAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgICAgICAgIGVudlZlcnNpb246ICdkZXZlbG9wJyxcclxuICAgICAgICAgICAgICAgICAgICBzdWNjZXNzKHJlczogYW55KSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIG9uU3VjY2Vzcz8uKCk7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgIGlmIChpc0J5dGVkYW5jZSgpKSB7XHJcbiAgICAgICAgICAgICAgICAvLyBAdHMtaWdub3JlXHJcbiAgICAgICAgICAgICAgICB0dC5uYXZpZ2F0ZVRvVmlkZW9WaWV3KHtcclxuICAgICAgICAgICAgICAgICAgICB2aWRlb0lkOiB0YXJnZXRJZCxcclxuICAgICAgICAgICAgICAgICAgICBzdWNjZXNzOiAocmVzOiBhbnkpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgb25TdWNjZXNzPy4oKTtcclxuICAgICAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgICAgICAgIGZhaWw6IChlcnI6IGFueSkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zb2xlLmxvZyhcImJ5dGVkYW5jZSBuYXZpZ2F0ZVRvVmlkZW9WaWV3IGZhaWxcIiwgZXJyKTtcclxuICAgICAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcblxyXG5cclxuICAgICAgICAvKipcclxuICAgICAgICAgKiDlsI/muLjmiI/lubPlj7DnmbvlvZXlip/og73jgILlvq7kv6Hov5Tlm55jb2Rl77yM5oqW6Z+z6L+U5ZueY29kZeWSjGFub255bW91c0NvZGXjgILnlKjkuo7nmbvlvZXnmoTlh63or4HvvIzpnIDopoHmiorov5nkuKpjb2Rl5Lyg5Zue5L2g55qE5pyN5Yqh5Zmo56iL5bqP5Lit5Y676LCD55SoY29kZTJTZXNzaW9uXHJcbiAgICAgICAgICogQHBhcmFtIGNhbGxiYWNrIChjb2RlLCBhbm9ueW1vdXNDb2RlKSDnrKzkuIDkuKrlj4LmlbDkuLpjb2Rl77yM5b6u5L+h5ZKM5oqW6Z+z6YO95pSv5oyB77yb56ys5LqM5Liq5Y+C5pWw5Li65Yy/5ZCN6K6+5aSHSUTvvIzku4Xmipbpn7PmlK/mjIHvvIzlpLHotKXpg73ov5Tlm55udWxsXHJcbiAgICAgICAgICovXHJcbiAgICAgICAgc3RhdGljIGxvZ2luKGNhbGxiYWNrOiAoY29kZTogc3RyaW5nLCBhbm9ueW1vdXNDb2RlOiBzdHJpbmcpID0+IHZvaWQpIHtcclxuICAgICAgICAgICAgbGV0IGxvZ2luUGxhdGZvcm0gPSAoKSA9PiB7XHJcbiAgICAgICAgICAgICAgICBpZiAoaXNXZWNoYXQoKSkge1xyXG4gICAgICAgICAgICAgICAgICAgIC8vQHRzLWlnbm9yZVxyXG4gICAgICAgICAgICAgICAgICAgIHd4LmxvZ2luKHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgc3VjY2VzczogKHJlczogeyBjb2RlOiBhbnk7IGVyck1zZzogYW55OyB9KSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAocmVzLmNvZGUpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBBUEkuX2xvZ2luQ29kZSA9IHJlcy5jb2RlO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFQSS5fbG9naW5Bbm9ueW1vdXNDb2RlID0gbnVsbDtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYWxsYmFjaz8uKEFQSS5fbG9naW5Db2RlLCBBUEkuX2xvZ2luQW5vbnltb3VzQ29kZSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKCdsb2dpbiBlcnJvcjonLCByZXMuZXJyTXNnKVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgZmFpbDogKCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgQVBJLl9sb2dpbkNvZGUgPSBudWxsO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgQVBJLl9sb2dpbkFub255bW91c0NvZGUgPSBudWxsO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FsbGJhY2s/LihBUEkuX2xvZ2luQ29kZSwgQVBJLl9sb2dpbkFub255bW91c0NvZGUpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc29sZS5sb2coJ2xvZ2luIGZhaWwnKVxyXG4gICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKGlzQnl0ZWRhbmNlKCkpIHtcclxuICAgICAgICAgICAgICAgICAgICAvL0B0cy1pZ25vcmVcclxuICAgICAgICAgICAgICAgICAgICB0dC5sb2dpbih7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGZvcmNlOiB0cnVlLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBzdWNjZXNzKHJlczogYW55KSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zb2xlLmxvZyhgbG9naW4gJHtyZXMuY29kZX0gJHtyZXMuYW5vbnltb3VzQ29kZX1gKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChyZXMuY29kZSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFQSS5fbG9naW5Db2RlID0gcmVzLmNvZGU/LnRvU3RyaW5nKCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQVBJLl9sb2dpbkFub255bW91c0NvZGUgPSByZXMuYW5vbnltb3VzQ29kZT8udG9TdHJpbmcoKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYWxsYmFjaz8uKEFQSS5fbG9naW5Db2RlLCBBUEkuX2xvZ2luQW5vbnltb3VzQ29kZSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKCdsb2dpbiBlcnJvcjonLCByZXMuZXJyTXNnKVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBmYWlsKHJlczogYW55KSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBBUEkuX2xvZ2luQ29kZSA9IG51bGw7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBBUEkuX2xvZ2luQW5vbnltb3VzQ29kZSA9IG51bGw7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYWxsYmFjaz8uKEFQSS5fbG9naW5Db2RlLCBBUEkuX2xvZ2luQW5vbnltb3VzQ29kZSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zb2xlLmxvZyhgbG9naW4gZmFpbGAsIHJlcyk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICAgIEFQSS5fbG9naW5Db2RlID0gbnVsbDtcclxuICAgICAgICAgICAgICAgICAgICBBUEkuX2xvZ2luQW5vbnltb3VzQ29kZSA9IG51bGw7XHJcbiAgICAgICAgICAgICAgICAgICAgY2FsbGJhY2s/LihBUEkuX2xvZ2luQ29kZSwgQVBJLl9sb2dpbkFub255bW91c0NvZGUpO1xyXG4gICAgICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKCdub3QgbWluaSBnYW1lIHBsYXRmb3JtLCBsb2dpbiBjb2RlcyBhcmUgYWxsIG51bGwnKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG5cclxuXHJcblxyXG4gICAgICAgICAgICBpZiAoIUFQSS5fbG9naW5Db2RlKSB7XHJcbiAgICAgICAgICAgICAgICBsb2dpblBsYXRmb3JtKCk7XHJcbiAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICBpZiAoaXNXZWNoYXQoKSkge1xyXG4gICAgICAgICAgICAgICAgICAgIC8vQHRzLWlnbm9yZVxyXG4gICAgICAgICAgICAgICAgICAgIHd4LmNoZWNrU2Vzc2lvbih7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHN1Y2Nlc3MoKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zb2xlLmxvZyhgc2Vzc2lvbiBpcyB2YWxpZCwgdXNlIGN1cnJlbnQgY29kZTpgLCBBUEkuX2xvZ2luQ29kZSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYWxsYmFjaz8uKEFQSS5fbG9naW5Db2RlLCBBUEkuX2xvZ2luQW5vbnltb3VzQ29kZSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGZhaWwoKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zb2xlLmxvZyhgc2Vzc2lvbiBleHBpcmVkYCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb2dpblBsYXRmb3JtKCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoaXNCeXRlZGFuY2UoKSkge1xyXG4gICAgICAgICAgICAgICAgICAgIC8vQHRzLWlnbm9yZVxyXG4gICAgICAgICAgICAgICAgICAgIHR0LmNoZWNrU2Vzc2lvbih7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHN1Y2Nlc3MoKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zb2xlLmxvZyhgc2Vzc2lvbiBpcyB2YWxpZCwgdXNlciBjdXJyZW50IGNvZGU6ICR7QVBJLl9sb2dpbkNvZGV9LCAke0FQSS5fbG9naW5Bbm9ueW1vdXNDb2RlfWApO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FsbGJhY2s/LihBUEkuX2xvZ2luQ29kZSwgQVBJLl9sb2dpbkFub255bW91c0NvZGUpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBmYWlsKCkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc29sZS5sb2coYHNlc3Npb24gZXhwaXJlZGApO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9naW5QbGF0Zm9ybSgpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgICAgICAgIH0pO1xyXG5cclxuICAgICAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgICAgY29uc29sZS5sb2coJ25vdCBtaW5pIGdhbWUgcGxhdGZvcm0sIGxvZ2luIG51bGwnKTtcclxuICAgICAgICAgICAgICAgICAgICBjYWxsYmFjaz8uKG51bGwsIG51bGwpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgICAgIC8qKlxyXG4gICAgICAgICAqIOWwj+a4uOaIj+W5s+WPsOeZu+W9leWKn+iDveOAguW+ruS/oei/lOWbnmNvZGXvvIzmipbpn7Pov5Tlm55jb2Rl5ZKMYW5vbnltb3VzQ29kZeOAgueUqOS6jueZu+W9leeahOWHreivge+8jOmcgOimgeaKiui/meS4qmNvZGXkvKDlm57kvaDnmoTmnI3liqHlmajnqIvluo/kuK3ljrvosIPnlKhjb2RlMlNlc3Npb25cclxuICAgICAgICAgKiBAcGFyYW0gY2FsbGJhY2sgKGNvZGUsIGFub255bW91c0NvZGUpIOesrOS4gOS4quWPguaVsOS4umNvZGXvvIzlvq7kv6Hlkozmipbpn7Ppg73mlK/mjIHvvJvnrKzkuozkuKrlj4LmlbDkuLrljL/lkI3orr7lpIdJRO+8jOS7heaKlumfs+aUr+aMge+8jOWksei0pemDvei/lOWbnm51bGxcclxuICAgICAgICAgKi9cclxuICAgICAgICBzdGF0aWMgZ2V0VXNlckluZm8oY2FsbGJhY2s6ICh1c2VySW5mbzogYW55KSA9PiB2b2lkKSB7XHJcbiAgICAgICAgICAgIC8vQHRzLWlnbm9yZVxyXG4gICAgICAgICAgICB0dC5nZXRVc2VySW5mbyh7XHJcbiAgICAgICAgICAgICAgICB3aXRoQ3JlZGVudGlhbHM6IHRydWUsXHJcbiAgICAgICAgICAgICAgICBzdWNjZXNzOiAocmVzOiBhbnkpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICBBUEkuX3VzZXJJbmZvID0gcmVzO1xyXG4gICAgICAgICAgICAgICAgICAgIGNhbGxiYWNrKEFQSS5fdXNlckluZm8pO1xyXG4gICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICAgIGZhaWw6IChlcnI6IGFueSkgPT57XHJcbiAgICAgICAgICAgICAgICAgICAgY2FsbGJhY2soZXJyKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICAvKipcclxuICAgICAgICAgKiDosIPnlKjlvq7kv6HkupHlh73mlbDjgILnlLHkuo7lj4LmlbDpnIDopoHoh6rlrprkuYnvvIzmiYDku6XkuLphbnnvvIzpnIDopoHoh6rooYzop6Pph4rjgILlh73mlbDlj6rlrozmiJDpgJrpgZPlkozlpITnkIbkuIDlnLrnmoTkvZznlKhcclxuICAgICAgICAgKiBAcGFyYW0gY2FsbGJhY2sg6L+U5Zue5LqR5Ye95pWw6LCD55So57uT5p6c44CC6ZyA6KaB5qOA5p+l6L+U5Zue5Y+C5pWw5piv5ZCm5Li656m677yM5aSx6LSl55qE5pe25YCZ5Li656m6XHJcbiAgICAgICAgICogQHBhcmFtIG5hbWUg5LqR5Ye95pWw55qE5ZCN5a2XXHJcbiAgICAgICAgICogQHBhcmFtIGRhdGEg5LqR5Ye95pWw55qE5YaF5a65XHJcbiAgICAgICAgICovXHJcbiAgICAgICAgc3RhdGljIGNhbGxXZWNoYXRDbG91ZEZ1bmN0aW9uKGNhbGxiYWNrOiAocmVzOiBhbnkpID0+IHZvaWQsIG5hbWU6IHN0cmluZywgZGF0YToge30pIHtcclxuICAgICAgICAgICAgaWYgKCFpc1dlY2hhdCgpKSB7XHJcbiAgICAgICAgICAgICAgICBjb25zb2xlLmxvZygnTm90IHdlY2hhdCBwbGF0Zm9ybSwgbm90IHN1cHBvcnQgY2FsbFdlY2hhdENsb3VkRnVuY3Rpb24nKTtcclxuICAgICAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgdGhpcy5sb2dpbigoY29kZTogc3RyaW5nLCBhbm9ueW1vdXNDb2RlOiBzdHJpbmcpID0+IHtcclxuICAgICAgICAgICAgICAgIGlmICghQVBJLl9oYXNJbml0V2VjaGF0Q2xvdWRGdW5jdGlvbikge1xyXG4gICAgICAgICAgICAgICAgICAgIC8vQHRzLWlnbm9yZVxyXG4gICAgICAgICAgICAgICAgICAgIHd4LmNsb3VkLmluaXQoKTtcclxuICAgICAgICAgICAgICAgICAgICBBUEkuX2hhc0luaXRXZWNoYXRDbG91ZEZ1bmN0aW9uID0gdHJ1ZTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIC8vQHRzLWlnbm9yZVxyXG4gICAgICAgICAgICAgICAgd3guY2xvdWQuY2FsbEZ1bmN0aW9uKHtcclxuICAgICAgICAgICAgICAgICAgICBuYW1lOiBuYW1lLFxyXG4gICAgICAgICAgICAgICAgICAgIGRhdGE6IGRhdGEsXHJcbiAgICAgICAgICAgICAgICAgICAgc3VjY2VzczogKHJlczogYW55KSA9PiBjYWxsYmFjaz8uKHJlcyksXHJcbiAgICAgICAgICAgICAgICAgICAgZmFpbDogKGVycjogYW55KSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKCd3ZWNoYXQgY2xvdWQgZnVuY3Rpb24gZXJyb3I6JywgZXJyKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgY2FsbGJhY2s/LihudWxsKTtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICAvKipcclxuICAgICAgICAgKiDlrZjlgqjnlKjmiLfkv6Hmga/vvIzmlbDmja7ph4/kuI3og73lpKfjgILlj6/ku6XogIPomZHnlKjkuo7liIbmlbDmjpLooYzmppzjgILnlKjmiLfkuYvpl7Tlj6/lhbHkuqvmjpLooYzmlbDmja7jgIJcclxuICAgICAgICAgKiBAcGFyYW0ga2V5IFxyXG4gICAgICAgICAqIEBwYXJhbSB2YWx1ZSBcclxuICAgICAgICAgKi9cclxuICAgICAgICBzdGF0aWMgc2V0VXNlckNsb3VkU3RvcmFnZShrZXk6IHN0cmluZywgdmFsdWU6IHN0cmluZykge1xyXG4gICAgICAgICAgICBpZiAoaXNXZWNoYXQoKSkge1xyXG4gICAgICAgICAgICAgICAgLy8gQHRzLWlnbm9yZVxyXG4gICAgICAgICAgICAgICAgd3guc2V0VXNlckNsb3VkU3RvcmFnZSh7XHJcbiAgICAgICAgICAgICAgICAgICAgS1ZEYXRhTGlzdDogW3sga2V5OiBrZXksIHZhbHVlOiB2YWx1ZSB9XSxcclxuICAgICAgICAgICAgICAgICAgICBzdWNjZXNzOiAoKSA9PiBjb25zb2xlLmxvZyhgc2V0IGNsb3VkIHN0b3JhZ2Ugc3VjY2Vzczoke2tleX0sIHZhbHVlOiR7dmFsdWV9YCksXHJcbiAgICAgICAgICAgICAgICAgICAgZmFpbDogKGVycjogYW55KSA9PiBjb25zb2xlLmxvZygnc2V0IGNsb3VkIHN0b3JhZ2UgZXJyb3I6JywgZXJyKVxyXG4gICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgIGlmIChpc0J5dGVkYW5jZSgpKSB7XHJcbiAgICAgICAgICAgICAgICAvLyBAdHMtaWdub3JlXHJcbiAgICAgICAgICAgICAgICB0dC5zZXRVc2VyQ2xvdWRTdG9yYWdlKHtcclxuICAgICAgICAgICAgICAgICAgICBLVkRhdGFMaXN0OiBbeyBrZXk6IGtleSwgdmFsdWU6IHZhbHVlLCB9XSxcclxuICAgICAgICAgICAgICAgICAgICBzdWNjZXNzOiAoKSA9PiBjb25zb2xlLmxvZyhgc2V0IGNsb3VkIHN0b3JhZ2Ugc3VjY2Vzczoke2tleX0sIHZhbHVlOiR7dmFsdWV9YCksXHJcbiAgICAgICAgICAgICAgICAgICAgZmFpbDogKGVycjogYW55KSA9PiBjb25zb2xlLmxvZygnc2V0IGNsb3VkIHN0b3JhZ2UgZXJyb3I6JywgZXJyKVxyXG4gICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcblxyXG5cclxuICAgICAgICAvKlxyXG4gICAgICAgICog5pWw5pWw5bmz5Y+w5Yid5aeL5YyW5Lul5Y+K55m75b2VXHJcbiAgICAgICAgKi9cclxuXHJcbiAgICAgICAgc3RhdGljIHNodXNodV9Jbml0KCl7XHJcbiAgICAgICAgICAgIGlmICh0eXBlb2Ygd3ghPT0gJ3VuZGVmaW5lZCcgJiYgd3ghPT0gbnVsbCkge1xyXG4gICAgICAgICAgICAgICAgY29uc29sZS5sb2coXCLlvIDlp4vmjqXlhaXmlbDmlbDlubPlj7BcIik7XHJcbiAgICAgICAgICAgICAgICAvL2dldFdlY2hhdEdhbWVWZXJzaW9uXHJcbiAgICAgICAgICAgICAgICBsZXQgYXBwSWQgPSBcIjEyMTU5MTM3OGZjMTQyMzg5M2RlYjEyMDQxNDEzZWIzXCI7XHJcbiAgICAgICAgICAgICAgICBsZXQgdGVzdCA9IGNjLmZ4LkdhbWVUb29sLmdldFdlY2hhdEdhbWVWZXJzaW9uKCk7XHJcbiAgICAgICAgICAgICAgICBpZih0ZXN0ID09IFwi5q2j5byP54mIXCIpe1xyXG4gICAgICAgICAgICAgICAgICAgIGFwcElkID0gXCI4N2QxODk1OGNlYTE0NWYyOWQzMjY1NDcwZWNkMzQ4NlwiO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgdmFyIGNvbmZpZyA9IHtcclxuICAgICAgICAgICAgICAgICAgICAvLyBhcHBJZDogXCI3M2UxZWM2NTRmMTViNDdhMWE3MzU0ZmJhYmVjMDVhZFwiLCAvLyDpobnnm64gQVBQIElEXHJcbiAgICAgICAgICAgICAgICAgICAgYXBwSWQ6YXBwSWQsXHJcbiAgICAgICAgICAgICAgICAgICAgc2VydmVyVXJsOiBcImh0dHBzOi8vZGF0YS5uaWthNGZ1bi5jb21cIiwgLy8g5LiK5oql5Zyw5Z2AXHJcbiAgICAgICAgICAgICAgICAgICAgYXV0b1RyYWNrOiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGFwcFNob3c6IHRydWUsIC8vIOiHquWKqOmHh+mbhiB0YV9tZ19zaG93XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGFwcEhpZGU6IHRydWUgLy8g6Ieq5Yqo6YeH6ZuGIHRhX21nX2hpZGVcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9O1xyXG4gICAgICAgICAgICAgICAgLy8g5Yib5bu6IFRBIOWunuS+i1xyXG4gICAgICAgICAgICAgICAgQVBJLl90YSA9IG5ldyBUaGlua2luZ0FuYWx5dGljc0FQSShjb25maWcpO1xyXG4gICAgICAgICAgICAgICAgLy92YXIgZGV2aWNlSWQgPSBBUEkuX3RhLmdldERldmljZUlkKCk7XHJcblxyXG4gICAgICAgICAgICAgICAgQVBJLl90YS5sb2dpbihjYy5meC5HYW1lQ29uZmlnLkdNX0lORk8ub3BlbmlkKTtcclxuICAgICAgICAgICAgICAgIGNvbnN0IHJlc3VsdCA9IFwic3VjY2Vzc1wiO1xyXG4gICAgICAgICAgICAgICAgQVBJLnNodXNodV9UcmFjayhcImxvZ2luXCIscmVzdWx0KTtcclxuXHJcbiAgICAgICAgICAgICAgICAvLyDliJ3lp4vljJZcclxuICAgICAgICAgICAgICAgIEFQSS5fdGEgLmluaXQoKTsgXHJcblxyXG4gICAgICAgICAgICAgICAgQVBJLnNodXNodV9TZXRTdXBlclByb3BlcnRpZXMoKTtcclxuICAgICAgICAgICAgICAgIC8vY29uc29sZS5sb2coXCLmlbDmlbDlubPlj7DliJ3lp4vljJbmiJDlip8hXCIpO1xyXG4gICAgICAgICAgICAgICAgLy8gdGhpcy5UQS5jbGVhclN1cGVyUHJvcGVydGllcygpO1xyXG4gICAgICAgICAgICAgICAgLy/orr7nva7nlKjmiLflsZ7mgKdcclxuICAgICAgICAgICAgICAgIC8vIHRoaXMuVEEudXNlclNldCh7IHVzZXJuYW1lOiBcIuWkp+aguOahg1wiIH0pO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBzdGF0aWMgc2h1c2h1X3VzZXJTZXQodGltZSl7XHJcbiAgICAgICAgICAgIGlmICh0eXBlb2Ygd3ghPT0gJ3VuZGVmaW5lZCcgJiYgd3ghPT0gbnVsbCkge1xyXG4gICAgICAgICAgICAgICAgY29uc29sZS5sb2coXCLorr7nva7nlKjmiLfms6jlhozlsZ7mgKdcIik7XHJcbiAgICAgICAgICAgICAgICBBUEkuX3RhLnVzZXJTZXQoeyByZWdpc3Rlcl90aW1lOnRpbWV9KTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgLypcclxuICAgICAgICAqIOaVsOaVsOW5s+WPsOiuvue9ruWKqOaAgeWFrOWFseWxnuaAp1xyXG4gICAgICAgICovXHJcblxyXG4gICAgICAgIHN0YXRpYyBzaHVzaHVfU2V0U3VwZXJQcm9wZXJ0aWVzKCl7XHJcbiAgICAgICAgICAgaWYgKHR5cGVvZiB3eCE9PSAndW5kZWZpbmVkJyAmJiB3eCE9PSBudWxsICYmIEFQSS5fdGEpIHtcclxuICAgICAgICAgICAgICAgIGNvbnN0IHZlcnNpb25EYXRhID0gXCIxLjNcIjtcclxuICAgICAgICAgICAgICAgIC8vIEFQSS5fdGEudXNlclNldE9uY2UoeyByZWdpc3Rlcl90aW1lOnRpbWV9KTtcclxuICAgICAgICAgICAgICAgIHZhciBzdXBlclByb3BlcnRpZXMgPSB7XHJcbiAgICAgICAgICAgICAgICAgICAgY3VycmVudF9sZXZlbCA6IChjYy5meC5HYW1lQ29uZmlnLkdNX0lORk8ubGV2ZWwrMSksIC8v5b2T5YmN5YWz5Y2h562J57qnICBudW1iZXJcclxuICAgICAgICAgICAgICAgICAgICBjdXJyZW50X2hlYWx0aDogY2MuZnguR2FtZUNvbmZpZy5HTV9JTkZPLmhwLCAgICAgICAgLy/lvZPliY3kvZPlipvlgLxcclxuICAgICAgICAgICAgICAgICAgICB0bXBfY29pbiA6IGNjLmZ4LkdhbWVDb25maWcuR01fSU5GTy5jb2luLC8v5b2T5YmN6YeR5biBXHJcbiAgICAgICAgICAgICAgICAgICAgdmVyc2lvbjogdmVyc2lvbkRhdGFcclxuICAgICAgICAgICAgICAgIH07XHJcbiAgICAgICAgICAgICAgICBBUEkuX3RhLnNldFN1cGVyUHJvcGVydGllcyhzdXBlclByb3BlcnRpZXMpOy8v6K6+572u5YWs5YWx5LqL5Lu25bGe5oCnXHJcbiAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgc3RhdGljIGdldFdlY2hhdEdhbWVWZXJzaW9uKCk6IHN0cmluZyB8IG51bGwge1xyXG4gICAgICAgICAgICBpZiAodHlwZW9mIHd4IT09ICd1bmRlZmluZWQnICYmIHd4IT09IG51bGwpIHtcclxuICAgICAgICAgICAgICAgIC8vIEB0cy1pZ25vcmVcclxuICAgICAgICAgICAgICAgIGNvbnN0IGFjY291bnRJbmZvID0gd3guZ2V0QWNjb3VudEluZm9TeW5jKCk7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gYWNjb3VudEluZm8ubWluaVByb2dyYW0udmVyc2lvbjtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgLypcclxuICAgICAgICAqIOaVsOaVsOW5s+WPsOWFt+S9k+Wfi+eCuVxyXG4gICAgICAgICovXHJcblxyXG4gICAgICAgIHN0YXRpYyBzaHVzaHVfVHJhY2sobmFtZSwgZGF0YSwgY2FsbGJhY2s/OiAoc3VjY2VzczogYm9vbGVhbiwgZXJyb3I/OiBhbnkpID0+IHZvaWQpIHtcclxuICAgICAgICAgICAgaWYgKHR5cGVvZiB3eCE9PSAndW5kZWZpbmVkJyAmJiB3eCE9PSBudWxsKSB7XHJcbiAgICAgICAgICAgICAgICBpZiAoQVBJLl90YSkge1xyXG4gICAgICAgICAgICAgICAgICAgIC8vIOWBh+iuviB0cmFjayDmlrnms5Xov5Tlm57kuIDkuKogUHJvbWlzZVxyXG4gICAgICAgICAgICAgICAgICAgIEFQSS5fdGEudHJhY2soXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIG5hbWUsIC8vIOS6i+S7tuWQjeensFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBkYXRhIC8vIOS6i+S7tuWxnuaApyBcclxuICAgICAgICAgICAgICAgICAgICApXHJcbiAgICAgICAgICAgICAgICB9IFxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxufSJdfQ== //------QC-SOURCE-SPLIT------ (function() { var nodeEnv = typeof require !== 'undefined' && typeof process !== 'undefined'; var __module = nodeEnv ? module : {exports:{}}; - var __filename = 'preview-scripts/assets/migration/use_v2.1-2.2.1_cc.Toggle_event_1.js'; + var __filename = 'preview-scripts/assets/Script/prop/Boom.js'; var __require = nodeEnv ? function (request) { return cc.require(request); } : function (request) { @@ -4095,27 +2043,91 @@ cc._RF.pop(); }; function __define (exports, require, module) { if (!nodeEnv) {__quick_compile_project__.registerModule(__filename, module);}"use strict"; -cc._RF.push(module, 'c9ad1iUTB1PyqJ3cmtMGJ31', 'use_v2.1-2.2.1_cc.Toggle_event_1'); -// migration/use_v2.1-2.2.1_cc.Toggle_event_1.js +cc._RF.push(module, '3c749iEEwlAMKPyjGEkwU2l', 'Boom'); +// Script/prop/Boom.ts -"use strict"; - -/* - * This script is automatically generated by Cocos Creator and is only used for projects compatible with the v2.1.0 ~ 2.2.1 version. - * You do not need to manually add this script in any other project. - * If you don't use cc.Toggle in your project, you can delete this script directly. - * If your project is hosted in VCS such as git, submit this script together. - * - * 此脚本由 Cocos Creator 自动生成,仅用于兼容 v2.1.0 ~ 2.2.1 版本的工程, - * 你无需在任何其它项目中手动添加此脚本。 - * 如果你的项目中没用到 Toggle,可直接删除该脚本。 - * 如果你的项目有托管于 git 等版本库,请将此脚本一并上传。 - */ -if (cc.Toggle) { - // Whether to trigger 'toggle' and 'checkEvents' events when modifying 'toggle.isChecked' in the code - // 在代码中修改 'toggle.isChecked' 时是否触发 'toggle' 与 'checkEvents' 事件 - cc.Toggle._triggerEventInScript_isChecked = true; -} +"use strict"; +// Learn TypeScript: +// - https://docs.cocos.com/creator/manual/en/scripting/typescript.html +// Learn Attribute: +// - https://docs.cocos.com/creator/manual/en/scripting/reference/attributes.html +// Learn life-cycle callbacks: +// - https://docs.cocos.com/creator/manual/en/scripting/life-cycle-callbacks.html +var __extends = (this && this.__extends) || (function () { + var extendStatics = function (d, b) { + extendStatics = Object.setPrototypeOf || + ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) || + function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; }; + return extendStatics(d, b); + }; + return function (d, b) { + extendStatics(d, b); + function __() { this.constructor = d; } + d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); + }; +})(); +var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) { + var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; + if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc); + else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; + return c > 3 && r && Object.defineProperty(target, key, r), r; +}; +Object.defineProperty(exports, "__esModule", { value: true }); +var Map_1 = require("../Map"); +var NumberToImage_1 = require("../NumberToImage"); +var _a = cc._decorator, ccclass = _a.ccclass, property = _a.property; +var Boom = /** @class */ (function (_super) { + __extends(Boom, _super); + function Boom() { + var _this = _super !== null && _super.apply(this, arguments) || this; + _this.time = 60; + return _this; + // update (dt) {} + } + // mapInfo: number[][] = []; + Boom.prototype.onLoad = function () { + }; + Boom.prototype.start = function () { + }; + Boom.prototype.init = function (time) { + if (time) + this.time = time; + this.node.getChildByName("time").active = true; + NumberToImage_1.default.numberToImageNodes(this.time, 20, 8, "lock_", this.node.getChildByName("time"), false); + // this.node.getChildByName("time").getComponent(cc.Label).string = this.time.toString(); + }; + Boom.prototype.startBoom = function () { + this.schedule(this.updateTime, 1); + }; + Boom.prototype.stopBoom = function () { + this.unschedule(this.updateTime); + this.node.parent.getComponent("Block").resetFreeze(); + this.node.destroy(); + }; + Boom.prototype.updateTime = function () { + var _this = this; + this.time--; + NumberToImage_1.default.numberToImageNodes(this.time, 20, 8, "lock_", this.node.getChildByName("time"), false); + if (this.time <= 0) { + this.unschedule(this.updateTime); + this.node.getChildByName("zhandan").active = true; + var skeleton = this.node.getChildByName("zhandan").getComponent(sp.Skeleton); + skeleton.setAnimation(1, "eff", false); + // 监听动画完成事件 + skeleton.setCompleteListener(function () { + // 动画播放完成后销毁节点 + _this.node.destroy(); + }); + Map_1.default._instance.failLevel("boom"); + // this.node.destroy(); + } + }; + Boom = __decorate([ + ccclass + ], Boom); + return Boom; +}(cc.Component)); +exports.default = Boom; cc._RF.pop(); } @@ -4128,90 +2140,7 @@ cc._RF.pop(); }); } })(); -//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImFzc2V0c1xcbWlncmF0aW9uXFx1c2VfdjIuMS0yLjIuMV9jYy5Ub2dnbGVfZXZlbnRfMS5qcyJdLCJuYW1lcyI6WyJjYyIsIlRvZ2dsZSIsIl90cmlnZ2VyRXZlbnRJblNjcmlwdF9pc0NoZWNrZWQiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBLElBQUlBLEVBQUUsQ0FBQ0MsTUFBUCxFQUFlO0FBQ1g7QUFDQTtBQUNBRCxFQUFBQSxFQUFFLENBQUNDLE1BQUgsQ0FBVUMsK0JBQVYsR0FBNEMsSUFBNUM7QUFDSCIsInNvdXJjZVJvb3QiOiIvIiwic291cmNlc0NvbnRlbnQiOlsiLypcclxuICogVGhpcyBzY3JpcHQgaXMgYXV0b21hdGljYWxseSBnZW5lcmF0ZWQgYnkgQ29jb3MgQ3JlYXRvciBhbmQgaXMgb25seSB1c2VkIGZvciBwcm9qZWN0cyBjb21wYXRpYmxlIHdpdGggdGhlIHYyLjEuMCDvvZ4gMi4yLjEgdmVyc2lvbi5cclxuICogWW91IGRvIG5vdCBuZWVkIHRvIG1hbnVhbGx5IGFkZCB0aGlzIHNjcmlwdCBpbiBhbnkgb3RoZXIgcHJvamVjdC5cclxuICogSWYgeW91IGRvbid0IHVzZSBjYy5Ub2dnbGUgaW4geW91ciBwcm9qZWN0LCB5b3UgY2FuIGRlbGV0ZSB0aGlzIHNjcmlwdCBkaXJlY3RseS5cclxuICogSWYgeW91ciBwcm9qZWN0IGlzIGhvc3RlZCBpbiBWQ1Mgc3VjaCBhcyBnaXQsIHN1Ym1pdCB0aGlzIHNjcmlwdCB0b2dldGhlci5cclxuICpcclxuICog5q2k6ISa5pys55SxIENvY29zIENyZWF0b3Ig6Ieq5Yqo55Sf5oiQ77yM5LuF55So5LqO5YW85a65IHYyLjEuMCB+IDIuMi4xIOeJiOacrOeahOW3peeoi++8jFxyXG4gKiDkvaDml6DpnIDlnKjku7vkvZXlhbblroPpobnnm67kuK3miYvliqjmt7vliqDmraTohJrmnKzjgIJcclxuICog5aaC5p6c5L2g55qE6aG555uu5Lit5rKh55So5YiwIFRvZ2dsZe+8jOWPr+ebtOaOpeWIoOmZpOivpeiEmuacrOOAglxyXG4gKiDlpoLmnpzkvaDnmoTpobnnm67mnInmiZjnrqHkuo4gZ2l0IOetieeJiOacrOW6k++8jOivt+WwhuatpOiEmuacrOS4gOW5tuS4iuS8oOOAglxyXG4gKi9cclxuXHJcbmlmIChjYy5Ub2dnbGUpIHtcclxuICAgIC8vIFdoZXRoZXIgdG8gdHJpZ2dlciAndG9nZ2xlJyBhbmQgJ2NoZWNrRXZlbnRzJyBldmVudHMgd2hlbiBtb2RpZnlpbmcgJ3RvZ2dsZS5pc0NoZWNrZWQnIGluIHRoZSBjb2RlXHJcbiAgICAvLyDlnKjku6PnoIHkuK3kv67mlLkgJ3RvZ2dsZS5pc0NoZWNrZWQnIOaXtuaYr+WQpuinpuWPkSAndG9nZ2xlJyDkuI4gJ2NoZWNrRXZlbnRzJyDkuovku7ZcclxuICAgIGNjLlRvZ2dsZS5fdHJpZ2dlckV2ZW50SW5TY3JpcHRfaXNDaGVja2VkID0gdHJ1ZTtcclxufVxyXG4iXX0= -//------QC-SOURCE-SPLIT------ - - (function() { - var nodeEnv = typeof require !== 'undefined' && typeof process !== 'undefined'; - var __module = nodeEnv ? module : {exports:{}}; - var __filename = 'preview-scripts/assets/animation/NewScript.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, '2cd54+HgYFITpFe6QLlvqDB', 'NewScript'); -// animation/NewScript.js - -"use strict"; - -// Learn cc.Class: -// - https://docs.cocos.com/creator/manual/en/scripting/class.html -// Learn Attribute: -// - https://docs.cocos.com/creator/manual/en/scripting/reference/attributes.html -// Learn life-cycle callbacks: -// - https://docs.cocos.com/creator/manual/en/scripting/life-cycle-callbacks.html -======= -cc._RF.push(module, '5c9b8FZiaNLMrMDs9T3rByf', 'DynamicAtlasManager'); -// Script/DynamicAtlasManager.js - -"use strict"; - ->>>>>>> 0a31a7a5abc2c505bf743aa596e1c765a0405152 -cc.Class({ - "extends": cc.Component, - properties: {}, - onLoad: function onLoad() { - cc.dynamicAtlasManager.enabled = false; - } -}); - -cc._RF.pop(); - } - if (nodeEnv) { - __define(__module.exports, __require, __module); - } - else { - __quick_compile_project__.registerModuleFunc(__filename, function () { - __define(__module.exports, __require, __module); - }); - } - })(); -<<<<<<< HEAD -//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImFzc2V0c1xcYW5pbWF0aW9uXFxOZXdTY3JpcHQuanMiXSwibmFtZXMiOlsiY2MiLCJDbGFzcyIsIkNvbXBvbmVudCIsInByb3BlcnRpZXMiLCJzZXgiLCJ0eXBlIiwiRW51bSIsIm1hbGUiLCJmZW1hbGUiLCJzdGFydCJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQUEsRUFBRSxDQUFDQyxLQUFILENBQVM7QUFDTCxhQUFTRCxFQUFFLENBQUNFLFNBRFA7QUFHTEMsRUFBQUEsVUFBVSxFQUFFO0FBQ1JDLElBQUFBLEdBQUcsRUFBQztBQUNBQyxNQUFBQSxJQUFJLEVBQUNMLEVBQUUsQ0FBQ00sSUFBSCxDQUFRO0FBQ1RDLFFBQUFBLElBQUksRUFBQyxDQURJO0FBRVRDLFFBQUFBLE1BQU0sRUFBQztBQUZFLE9BQVIsQ0FETDtBQUtBLGlCQUFRO0FBTFIsS0FESSxDQVFSO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUF0QlEsR0FIUDtBQTRCTDtBQUVBO0FBRUFDLEVBQUFBLEtBaENLLG1CQWdDSSxDQUVSLENBbENJLENBb0NMOztBQXBDSyxDQUFUIiwic291cmNlUm9vdCI6Ii8iLCJzb3VyY2VzQ29udGVudCI6WyIvLyBMZWFybiBjYy5DbGFzczpcclxuLy8gIC0gaHR0cHM6Ly9kb2NzLmNvY29zLmNvbS9jcmVhdG9yL21hbnVhbC9lbi9zY3JpcHRpbmcvY2xhc3MuaHRtbFxyXG4vLyBMZWFybiBBdHRyaWJ1dGU6XHJcbi8vICAtIGh0dHBzOi8vZG9jcy5jb2Nvcy5jb20vY3JlYXRvci9tYW51YWwvZW4vc2NyaXB0aW5nL3JlZmVyZW5jZS9hdHRyaWJ1dGVzLmh0bWxcclxuLy8gTGVhcm4gbGlmZS1jeWNsZSBjYWxsYmFja3M6XHJcbi8vICAtIGh0dHBzOi8vZG9jcy5jb2Nvcy5jb20vY3JlYXRvci9tYW51YWwvZW4vc2NyaXB0aW5nL2xpZmUtY3ljbGUtY2FsbGJhY2tzLmh0bWxcclxuXHJcbmNjLkNsYXNzKHtcclxuICAgIGV4dGVuZHM6IGNjLkNvbXBvbmVudCxcclxuXHJcbiAgICBwcm9wZXJ0aWVzOiB7XHJcbiAgICAgICAgc2V4OntcclxuICAgICAgICAgICAgdHlwZTpjYy5FbnVtKHtcclxuICAgICAgICAgICAgICAgIG1hbGU6MCxcclxuICAgICAgICAgICAgICAgIGZlbWFsZToxXHJcbiAgICAgICAgICAgIH0pLFxyXG4gICAgICAgICAgICBkZWZhdWx0OjBcclxuICAgICAgICB9XHJcbiAgICAgICAgLy8gZm9vOiB7XHJcbiAgICAgICAgLy8gICAgIC8vIEFUVFJJQlVURVM6XHJcbiAgICAgICAgLy8gICAgIGRlZmF1bHQ6IG51bGwsICAgICAgICAvLyBUaGUgZGVmYXVsdCB2YWx1ZSB3aWxsIGJlIHVzZWQgb25seSB3aGVuIHRoZSBjb21wb25lbnQgYXR0YWNoaW5nXHJcbiAgICAgICAgLy8gICAgICAgICAgICAgICAgICAgICAgICAgICAvLyB0byBhIG5vZGUgZm9yIHRoZSBmaXJzdCB0aW1lXHJcbiAgICAgICAgLy8gICAgIHR5cGU6IGNjLlNwcml0ZUZyYW1lLCAvLyBvcHRpb25hbCwgZGVmYXVsdCBpcyB0eXBlb2YgZGVmYXVsdFxyXG4gICAgICAgIC8vICAgICBzZXJpYWxpemFibGU6IHRydWUsICAgLy8gb3B0aW9uYWwsIGRlZmF1bHQgaXMgdHJ1ZVxyXG4gICAgICAgIC8vIH0sXHJcbiAgICAgICAgLy8gYmFyOiB7XHJcbiAgICAgICAgLy8gICAgIGdldCAoKSB7XHJcbiAgICAgICAgLy8gICAgICAgICByZXR1cm4gdGhpcy5fYmFyO1xyXG4gICAgICAgIC8vICAgICB9LFxyXG4gICAgICAgIC8vICAgICBzZXQgKHZhbHVlKSB7XHJcbiAgICAgICAgLy8gICAgICAgICB0aGlzLl9iYXIgPSB2YWx1ZTtcclxuICAgICAgICAvLyAgICAgfVxyXG4gICAgICAgIC8vIH0sXHJcbiAgICB9LFxyXG5cclxuICAgIC8vIExJRkUtQ1lDTEUgQ0FMTEJBQ0tTOlxyXG5cclxuICAgIC8vIG9uTG9hZCAoKSB7fSxcclxuXHJcbiAgICBzdGFydCAoKSB7XHJcblxyXG4gICAgfSxcclxuXHJcbiAgICAvLyB1cGRhdGUgKGR0KSB7fSxcclxufSk7XHJcbiJdfQ== -//------QC-SOURCE-SPLIT------ - - (function() { - var nodeEnv = typeof require !== 'undefined' && typeof process !== 'undefined'; - var __module = nodeEnv ? module : {exports:{}}; - var __filename = 'preview-scripts/assets/Script/lq_base/data/lq_interface.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, '41e45V6/vBNz5ftgHCoFmei', 'lq_interface'); -// Script/lq_base/data/lq_interface.ts - -"use strict"; -Object.defineProperty(exports, "__esModule", { value: true }); - -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,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImFzc2V0c1xcU2NyaXB0XFxscV9iYXNlXFxkYXRhXFxscV9pbnRlcmZhY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsImZpbGUiOiIiLCJzb3VyY2VSb290IjoiLyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBWZWMyID0gY2MuVmVjMjtcclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgSVBvcyB7XHJcbiAgICB4OiBudW1iZXI7XHJcbiAgICB5OiBudW1iZXI7XHJcblxyXG4gICAgc3ViKHBvczogSVBvcyk6IFZlYzI7XHJcblxyXG4gICAgYWRkKHBvczogSVBvcyk6IFZlYzI7XHJcbn1cclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgSVJlY3Qge1xyXG4gICAgeDogbnVtYmVyO1xyXG4gICAgeTogbnVtYmVyO1xyXG4gICAgd2lkdGg6IG51bWJlcjtcclxuICAgIGhlaWdodDogbnVtYmVyO1xyXG4gICAgaGFsZl93aWR0aDogbnVtYmVyO1xyXG4gICAgaGFsZl9oZWlnaHQ6IG51bWJlcjtcclxuXHJcbiAgICBzdWIocG9zOiBJUG9zKTogVmVjMjtcclxuXHJcbiAgICBhZGQocG9zOiBJUG9zKTogVmVjMjtcclxufSJdfQ== +//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImFzc2V0c1xcU2NyaXB0XFxwcm9wXFxCb29tLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSxvQkFBb0I7QUFDcEIsd0VBQXdFO0FBQ3hFLG1CQUFtQjtBQUNuQixrRkFBa0Y7QUFDbEYsOEJBQThCO0FBQzlCLGtGQUFrRjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBRWxGLDhCQUFpQztBQUNqQyxrREFBNkM7QUFFdkMsSUFBQSxLQUFzQixFQUFFLENBQUMsVUFBVSxFQUFsQyxPQUFPLGFBQUEsRUFBRSxRQUFRLGNBQWlCLENBQUM7QUFLMUM7SUFBa0Msd0JBQVk7SUFBOUM7UUFBQSxxRUFtREM7UUFqREcsVUFBSSxHQUFXLEVBQUUsQ0FBQzs7UUFnRGxCLGlCQUFpQjtJQUNyQixDQUFDO0lBL0NHLDRCQUE0QjtJQUU1QixxQkFBTSxHQUFOO0lBRUEsQ0FBQztJQUVELG9CQUFLLEdBQUw7SUFDQSxDQUFDO0lBRUQsbUJBQUksR0FBSixVQUFLLElBQUk7UUFDTCxJQUFHLElBQUk7WUFBRSxJQUFJLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQztRQUMxQixJQUFJLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFDO1FBQzdDLHVCQUFhLENBQUMsa0JBQWtCLENBQUMsSUFBSSxDQUFDLElBQUksRUFBQyxFQUFFLEVBQUMsQ0FBQyxFQUFDLE9BQU8sRUFBQyxJQUFJLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxNQUFNLENBQUMsRUFBQyxLQUFLLENBQUMsQ0FBQztRQUNsRyx5RkFBeUY7SUFFN0YsQ0FBQztJQUVELHdCQUFTLEdBQVQ7UUFDSSxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDdEMsQ0FBQztJQUVELHVCQUFRLEdBQVI7UUFDSSxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQztRQUNqQyxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxZQUFZLENBQUMsT0FBTyxDQUFDLENBQUMsV0FBVyxFQUFFLENBQUM7UUFDckQsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQztJQUN4QixDQUFDO0lBR0QseUJBQVUsR0FBVjtRQUFBLGlCQWdCQztRQWZHLElBQUksQ0FBQyxJQUFJLEVBQUcsQ0FBQztRQUNiLHVCQUFhLENBQUMsa0JBQWtCLENBQUMsSUFBSSxDQUFDLElBQUksRUFBQyxFQUFFLEVBQUMsQ0FBQyxFQUFDLE9BQU8sRUFBQyxJQUFJLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxNQUFNLENBQUMsRUFBQyxLQUFLLENBQUMsQ0FBQztRQUNoRyxJQUFHLElBQUksQ0FBQyxJQUFJLElBQUksQ0FBQyxFQUFDO1lBQ2QsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUM7WUFDakMsSUFBSSxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsU0FBUyxDQUFDLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQztZQUNsRCxJQUFNLFFBQVEsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxZQUFZLENBQUMsRUFBRSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1lBQy9FLFFBQVEsQ0FBQyxZQUFZLENBQUMsQ0FBQyxFQUFDLEtBQUssRUFBQyxLQUFLLENBQUMsQ0FBQztZQUNyQyxXQUFXO1lBQ1gsUUFBUSxDQUFDLG1CQUFtQixDQUFDO2dCQUN6QixjQUFjO2dCQUNkLEtBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUM7WUFDeEIsQ0FBQyxDQUFDLENBQUM7WUFDSCxhQUFXLENBQUMsU0FBUyxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsQ0FBQztZQUN4Qyx1QkFBdUI7U0FDMUI7SUFDTCxDQUFDO0lBaERnQixJQUFJO1FBRHhCLE9BQU87T0FDYSxJQUFJLENBbUR4QjtJQUFELFdBQUM7Q0FuREQsQUFtREMsQ0FuRGlDLEVBQUUsQ0FBQyxTQUFTLEdBbUQ3QztrQkFuRG9CLElBQUkiLCJmaWxlIjoiIiwic291cmNlUm9vdCI6Ii8iLCJzb3VyY2VzQ29udGVudCI6WyIvLyBMZWFybiBUeXBlU2NyaXB0OlxyXG4vLyAgLSBodHRwczovL2RvY3MuY29jb3MuY29tL2NyZWF0b3IvbWFudWFsL2VuL3NjcmlwdGluZy90eXBlc2NyaXB0Lmh0bWxcclxuLy8gTGVhcm4gQXR0cmlidXRlOlxyXG4vLyAgLSBodHRwczovL2RvY3MuY29jb3MuY29tL2NyZWF0b3IvbWFudWFsL2VuL3NjcmlwdGluZy9yZWZlcmVuY2UvYXR0cmlidXRlcy5odG1sXHJcbi8vIExlYXJuIGxpZmUtY3ljbGUgY2FsbGJhY2tzOlxyXG4vLyAgLSBodHRwczovL2RvY3MuY29jb3MuY29tL2NyZWF0b3IvbWFudWFsL2VuL3NjcmlwdGluZy9saWZlLWN5Y2xlLWNhbGxiYWNrcy5odG1sXHJcblxyXG5pbXBvcnQgTWFwQ29ucm9sZXIgZnJvbSBcIi4uL01hcFwiO1xyXG5pbXBvcnQgTnVtYmVyVG9JbWFnZSBmcm9tIFwiLi4vTnVtYmVyVG9JbWFnZVwiO1xyXG5cclxuY29uc3Qge2NjY2xhc3MsIHByb3BlcnR5fSA9IGNjLl9kZWNvcmF0b3I7XHJcblxyXG5cclxuXHJcbkBjY2NsYXNzXHJcbmV4cG9ydCBkZWZhdWx0IGNsYXNzIEJvb20gZXh0ZW5kcyBjYy5Db21wb25lbnQge1xyXG4gICAgc3RhdGljIF9pbnN0YW5jZTogYW55O1xyXG4gICAgdGltZTogbnVtYmVyID0gNjA7XHJcblxyXG4gICAgLy8gbWFwSW5mbzogbnVtYmVyW11bXSA9IFtdO1xyXG5cclxuICAgIG9uTG9hZCAoKSB7XHJcblxyXG4gICAgfSBcclxuXHJcbiAgICBzdGFydCAoKSB7XHJcbiAgICB9XHJcblxyXG4gICAgaW5pdCh0aW1lKXtcclxuICAgICAgICBpZih0aW1lKSB0aGlzLnRpbWUgPSB0aW1lO1xyXG4gICAgICAgIHRoaXMubm9kZS5nZXRDaGlsZEJ5TmFtZShcInRpbWVcIikuYWN0aXZlID0gdHJ1ZTtcclxuICAgICAgICAgIE51bWJlclRvSW1hZ2UubnVtYmVyVG9JbWFnZU5vZGVzKHRoaXMudGltZSwyMCw4LFwibG9ja19cIix0aGlzLm5vZGUuZ2V0Q2hpbGRCeU5hbWUoXCJ0aW1lXCIpLGZhbHNlKTtcclxuICAgICAgICAvLyB0aGlzLm5vZGUuZ2V0Q2hpbGRCeU5hbWUoXCJ0aW1lXCIpLmdldENvbXBvbmVudChjYy5MYWJlbCkuc3RyaW5nID0gdGhpcy50aW1lLnRvU3RyaW5nKCk7XHJcbiAgIFxyXG4gICAgfVxyXG5cclxuICAgIHN0YXJ0Qm9vbSgpe1xyXG4gICAgICAgIHRoaXMuc2NoZWR1bGUodGhpcy51cGRhdGVUaW1lLCAxKTtcclxuICAgIH1cclxuXHJcbiAgICBzdG9wQm9vbSgpe1xyXG4gICAgICAgIHRoaXMudW5zY2hlZHVsZSh0aGlzLnVwZGF0ZVRpbWUpO1xyXG4gICAgICAgIHRoaXMubm9kZS5wYXJlbnQuZ2V0Q29tcG9uZW50KFwiQmxvY2tcIikucmVzZXRGcmVlemUoKTtcclxuICAgICAgICB0aGlzLm5vZGUuZGVzdHJveSgpO1xyXG4gICAgfVxyXG5cclxuICAgIFxyXG4gICAgdXBkYXRlVGltZSgpe1xyXG4gICAgICAgIHRoaXMudGltZSAtLTtcclxuICAgICAgICBOdW1iZXJUb0ltYWdlLm51bWJlclRvSW1hZ2VOb2Rlcyh0aGlzLnRpbWUsMjAsOCxcImxvY2tfXCIsdGhpcy5ub2RlLmdldENoaWxkQnlOYW1lKFwidGltZVwiKSxmYWxzZSk7XHJcbiAgICAgICAgaWYodGhpcy50aW1lIDw9IDApe1xyXG4gICAgICAgICAgICB0aGlzLnVuc2NoZWR1bGUodGhpcy51cGRhdGVUaW1lKTtcclxuICAgICAgICAgICAgdGhpcy5ub2RlLmdldENoaWxkQnlOYW1lKFwiemhhbmRhblwiKS5hY3RpdmUgPSB0cnVlO1xyXG4gICAgICAgICAgICBjb25zdCBza2VsZXRvbiA9IHRoaXMubm9kZS5nZXRDaGlsZEJ5TmFtZShcInpoYW5kYW5cIikuZ2V0Q29tcG9uZW50KHNwLlNrZWxldG9uKTtcclxuICAgICAgICAgICAgc2tlbGV0b24uc2V0QW5pbWF0aW9uKDEsXCJlZmZcIixmYWxzZSk7XHJcbiAgICAgICAgICAgIC8vIOebkeWQrOWKqOeUu+WujOaIkOS6i+S7tlxyXG4gICAgICAgICAgICBza2VsZXRvbi5zZXRDb21wbGV0ZUxpc3RlbmVyKCgpID0+IHtcclxuICAgICAgICAgICAgICAgIC8vIOWKqOeUu+aSreaUvuWujOaIkOWQjumUgOavgeiKgueCuVxyXG4gICAgICAgICAgICAgICAgdGhpcy5ub2RlLmRlc3Ryb3koKTtcclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgIE1hcENvbnJvbGVyLl9pbnN0YW5jZS5mYWlsTGV2ZWwoXCJib29tXCIpO1xyXG4gICAgICAgICAgICAvLyB0aGlzLm5vZGUuZGVzdHJveSgpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICAvLyB1cGRhdGUgKGR0KSB7fVxyXG59XHJcbiJdfQ== //------QC-SOURCE-SPLIT------ (function() { @@ -4228,60 +2157,60 @@ cc._RF.pop(); cc._RF.push(module, '341aezWi/BCGa2q28VO8ioy', '融化'); // effect/融化.ts -"use strict"; -// IceMelt.ts -var __extends = (this && this.__extends) || (function () { - var extendStatics = function (d, b) { - extendStatics = Object.setPrototypeOf || - ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) || - function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; }; - return extendStatics(d, b); - }; - return function (d, b) { - extendStatics(d, b); - function __() { this.constructor = d; } - d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); - }; -})(); -var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) { - var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; - if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc); - else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; - return c > 3 && r && Object.defineProperty(target, key, r), r; -}; -Object.defineProperty(exports, "__esModule", { value: true }); -exports.IceMelt = void 0; -var _a = cc._decorator, ccclass = _a.ccclass, property = _a.property; -var IceMelt = /** @class */ (function (_super) { - __extends(IceMelt, _super); - function IceMelt() { - var _this = _super !== null && _super.apply(this, arguments) || this; - _this.speed = 1; - //是否融化 - _this._isMelt = false; - _this._time = 0; - return _this; - } - IceMelt.prototype.start = function () { - this._material = this.node.getComponent(cc.Sprite).getMaterial(0); - }; - IceMelt.prototype.update = function (dt) { - if (this._material && this._isMelt) { - this._material.setProperty('u_time', this._time); - this._time += dt * this.speed; - } - }; - //开始融化 - IceMelt.prototype.startMelt = function () { - this._isMelt = true; - this._time = 0; - }; - IceMelt = __decorate([ - ccclass() - ], IceMelt); - return IceMelt; -}(cc.Component)); -exports.IceMelt = IceMelt; +"use strict"; +// IceMelt.ts +var __extends = (this && this.__extends) || (function () { + var extendStatics = function (d, b) { + extendStatics = Object.setPrototypeOf || + ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) || + function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; }; + return extendStatics(d, b); + }; + return function (d, b) { + extendStatics(d, b); + function __() { this.constructor = d; } + d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); + }; +})(); +var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) { + var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; + if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc); + else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; + return c > 3 && r && Object.defineProperty(target, key, r), r; +}; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.IceMelt = void 0; +var _a = cc._decorator, ccclass = _a.ccclass, property = _a.property; +var IceMelt = /** @class */ (function (_super) { + __extends(IceMelt, _super); + function IceMelt() { + var _this = _super !== null && _super.apply(this, arguments) || this; + _this.speed = 1; + //是否融化 + _this._isMelt = false; + _this._time = 0; + return _this; + } + IceMelt.prototype.start = function () { + this._material = this.node.getComponent(cc.Sprite).getMaterial(0); + }; + IceMelt.prototype.update = function (dt) { + if (this._material && this._isMelt) { + this._material.setProperty('u_time', this._time); + this._time += dt * this.speed; + } + }; + //开始融化 + IceMelt.prototype.startMelt = function () { + this._isMelt = true; + this._time = 0; + }; + IceMelt = __decorate([ + ccclass() + ], IceMelt); + return IceMelt; +}(cc.Component)); +exports.IceMelt = IceMelt; cc._RF.pop(); } @@ -4300,64 +2229,57 @@ cc._RF.pop(); (function() { var nodeEnv = typeof require !== 'undefined' && typeof process !== 'undefined'; var __module = nodeEnv ? module : {exports:{}}; - var __filename = 'preview-scripts/assets/Script/module/Notification/Notification.js'; + var __filename = 'preview-scripts/assets/animation/NewScript.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, '55403VjGlpPL564gsdiZBg3', 'Notification'); -// Script/module/Notification/Notification.ts - -"use strict"; -Object.defineProperty(exports, "__esModule", { value: true }); -exports.Notifications = void 0; -//全局通知 -var Notifications = { - _eventMap: [], - on: function (masgId, callback, target) { - if (this._eventMap[masgId] === undefined) { - this._eventMap[masgId] = []; - } - this._eventMap[masgId].push({ callback: callback, target: target }); - }, - emit: function (masgId, parameter) { - var array = this._eventMap[masgId]; - if (array === undefined) - return; - for (var i = 0; i < array.length; i++) { - var element = array[i]; - if (element) - element.callback.call(element.target, parameter); - } - }, - off: function (masgId, callback) { - var array = this._eventMap[masgId]; - if (array === undefined) - return; - for (var i = 0; i < array.length; i++) { - var element = array[i]; - if (element && element.callback === callback) { - array[i] = undefined; - break; - } - } - }, - offMasgId: function (masgId) { - this._eventMap[masgId] = undefined; - }, - removeAllMsg: function () { - for (var k in this._eventMap) { - if (this._eventMap[k]) { - this.offMasgId(k); - } - } - } -}; -exports.Notifications = Notifications; - + if (!nodeEnv) {__quick_compile_project__.registerModule(__filename, module);}"use strict"; +cc._RF.push(module, '2cd54+HgYFITpFe6QLlvqDB', 'NewScript'); +// animation/NewScript.js + +"use strict"; + +// Learn cc.Class: +// - https://docs.cocos.com/creator/manual/en/scripting/class.html +// Learn Attribute: +// - https://docs.cocos.com/creator/manual/en/scripting/reference/attributes.html +// Learn life-cycle callbacks: +// - https://docs.cocos.com/creator/manual/en/scripting/life-cycle-callbacks.html + +cc.Class({ + "extends": cc.Component, + properties: { + sex: { + type: cc.Enum({ + male: 0, + female: 1 + }), + "default": 0 + } + // foo: { + // // ATTRIBUTES: + // default: null, // The default value will be used only when the component attaching + // // to a node for the first time + // type: cc.SpriteFrame, // optional, default is typeof default + // serializable: true, // optional, default is true + // }, + // bar: { + // get () { + // return this._bar; + // }, + // set (value) { + // this._bar = value; + // } + // }, + }, + // LIFE-CYCLE CALLBACKS: + // onLoad () {}, + start: function start() {} // update (dt) {}, +}); + cc._RF.pop(); } if (nodeEnv) { @@ -4369,13 +2291,61 @@ cc._RF.pop(); }); } })(); -//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImFzc2V0c1xcU2NyaXB0XFxtb2R1bGVcXE5vdGlmaWNhdGlvblxcTm90aWZpY2F0aW9uLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLE1BQU07QUFDTixJQUFJLGFBQWEsR0FBRztJQUNoQixTQUFTLEVBQUUsRUFBRTtJQUNiLEVBQUUsRUFBRSxVQUFVLE1BQU0sRUFBRSxRQUFRLEVBQUUsTUFBTTtRQUNsQyxJQUFJLElBQUksQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLEtBQUssU0FBUyxFQUFFO1lBQ3RDLElBQUksQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLEdBQUcsRUFBRSxDQUFDO1NBQy9CO1FBQ0QsSUFBSSxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxJQUFJLENBQUMsRUFBRSxRQUFRLEVBQUUsUUFBUSxFQUFFLE1BQU0sRUFBRSxNQUFNLEVBQUUsQ0FBQyxDQUFDO0lBQ3hFLENBQUM7SUFFRCxJQUFJLEVBQUUsVUFBVSxNQUFNLEVBQUUsU0FBUztRQUM3QixJQUFJLEtBQUssR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQ25DLElBQUksS0FBSyxLQUFLLFNBQVM7WUFBRSxPQUFPO1FBRWhDLEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxLQUFLLENBQUMsTUFBTSxFQUFFLENBQUMsRUFBRSxFQUFFO1lBQ25DLElBQUksT0FBTyxHQUFHLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUN2QixJQUFJLE9BQU87Z0JBQUUsT0FBTyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLE1BQU0sRUFBRSxTQUFTLENBQUMsQ0FBQztTQUNqRTtJQUNMLENBQUM7SUFFRCxHQUFHLEVBQUUsVUFBVSxNQUFNLEVBQUUsUUFBUTtRQUMzQixJQUFJLEtBQUssR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQ25DLElBQUksS0FBSyxLQUFLLFNBQVM7WUFBRSxPQUFPO1FBQ2hDLEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxLQUFLLENBQUMsTUFBTSxFQUFFLENBQUMsRUFBRSxFQUFFO1lBQ25DLElBQUksT0FBTyxHQUFHLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUN2QixJQUFJLE9BQU8sSUFBSSxPQUFPLENBQUMsUUFBUSxLQUFLLFFBQVEsRUFBRTtnQkFDMUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxHQUFHLFNBQVMsQ0FBQztnQkFDckIsTUFBTTthQUNUO1NBQ0o7SUFDTCxDQUFDO0lBRUQsU0FBUyxFQUFFLFVBQVUsTUFBTTtRQUN2QixJQUFJLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxHQUFHLFNBQVMsQ0FBQztJQUN2QyxDQUFDO0lBRUQsWUFBWSxFQUFFO1FBQ1YsS0FBSyxJQUFJLENBQUMsSUFBSSxJQUFJLENBQUMsU0FBUyxFQUFFO1lBQzFCLElBQUksSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsRUFBRTtnQkFDbkIsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQzthQUNyQjtTQUNKO0lBQ0wsQ0FBQztDQUNKLENBQUM7QUFDTyxzQ0FBYSIsImZpbGUiOiIiLCJzb3VyY2VSb290IjoiLyIsInNvdXJjZXNDb250ZW50IjpbIi8v5YWo5bGA6YCa55+lXG52YXIgTm90aWZpY2F0aW9ucyA9IHtcbiAgICBfZXZlbnRNYXA6IFtdLFxuICAgIG9uOiBmdW5jdGlvbiAobWFzZ0lkLCBjYWxsYmFjaywgdGFyZ2V0KSB7XG4gICAgICAgIGlmICh0aGlzLl9ldmVudE1hcFttYXNnSWRdID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgIHRoaXMuX2V2ZW50TWFwW21hc2dJZF0gPSBbXTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLl9ldmVudE1hcFttYXNnSWRdLnB1c2goeyBjYWxsYmFjazogY2FsbGJhY2ssIHRhcmdldDogdGFyZ2V0IH0pO1xuICAgIH0sXG5cbiAgICBlbWl0OiBmdW5jdGlvbiAobWFzZ0lkLCBwYXJhbWV0ZXIpIHtcbiAgICAgICAgbGV0IGFycmF5ID0gdGhpcy5fZXZlbnRNYXBbbWFzZ0lkXTtcbiAgICAgICAgaWYgKGFycmF5ID09PSB1bmRlZmluZWQpIHJldHVybjtcblxuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGFycmF5Lmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICBsZXQgZWxlbWVudCA9IGFycmF5W2ldO1xuICAgICAgICAgICAgaWYgKGVsZW1lbnQpIGVsZW1lbnQuY2FsbGJhY2suY2FsbChlbGVtZW50LnRhcmdldCwgcGFyYW1ldGVyKTtcbiAgICAgICAgfVxuICAgIH0sXG5cbiAgICBvZmY6IGZ1bmN0aW9uIChtYXNnSWQsIGNhbGxiYWNrKSB7XG4gICAgICAgIGxldCBhcnJheSA9IHRoaXMuX2V2ZW50TWFwW21hc2dJZF07XG4gICAgICAgIGlmIChhcnJheSA9PT0gdW5kZWZpbmVkKSByZXR1cm47XG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgYXJyYXkubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgIGxldCBlbGVtZW50ID0gYXJyYXlbaV07XG4gICAgICAgICAgICBpZiAoZWxlbWVudCAmJiBlbGVtZW50LmNhbGxiYWNrID09PSBjYWxsYmFjaykge1xuICAgICAgICAgICAgICAgIGFycmF5W2ldID0gdW5kZWZpbmVkO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfSxcblxuICAgIG9mZk1hc2dJZDogZnVuY3Rpb24gKG1hc2dJZCkge1xuICAgICAgICB0aGlzLl9ldmVudE1hcFttYXNnSWRdID0gdW5kZWZpbmVkO1xuICAgIH0sXG5cbiAgICByZW1vdmVBbGxNc2c6IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgZm9yIChsZXQgayBpbiB0aGlzLl9ldmVudE1hcCkge1xuICAgICAgICAgICAgaWYgKHRoaXMuX2V2ZW50TWFwW2tdKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5vZmZNYXNnSWQoayk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG59O1xuZXhwb3J0IHsgTm90aWZpY2F0aW9ucyB9OyJdfQ== +//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImFzc2V0c1xcYW5pbWF0aW9uXFxOZXdTY3JpcHQuanMiXSwibmFtZXMiOlsiY2MiLCJDbGFzcyIsIkNvbXBvbmVudCIsInByb3BlcnRpZXMiLCJzZXgiLCJ0eXBlIiwiRW51bSIsIm1hbGUiLCJmZW1hbGUiLCJzdGFydCJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUFBLEVBQUUsQ0FBQ0MsS0FBSyxDQUFDO0VBQ0wsV0FBU0QsRUFBRSxDQUFDRSxTQUFTO0VBRXJCQyxVQUFVLEVBQUU7SUFDUkMsR0FBRyxFQUFDO01BQ0FDLElBQUksRUFBQ0wsRUFBRSxDQUFDTSxJQUFJLENBQUM7UUFDVEMsSUFBSSxFQUFDLENBQUM7UUFDTkMsTUFBTSxFQUFDO01BQ1gsQ0FBQyxDQUFDO01BQ0YsV0FBUTtJQUNaO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0VBQ0osQ0FBQztFQUVEO0VBRUE7RUFFQUMsS0FBSyxXQUFBQSxNQUFBLEVBQUksQ0FFVCxDQUFDLENBRUQ7QUFDSixDQUFDLENBQUMiLCJzb3VyY2VSb290IjoiLyIsInNvdXJjZXNDb250ZW50IjpbIi8vIExlYXJuIGNjLkNsYXNzOlxyXG4vLyAgLSBodHRwczovL2RvY3MuY29jb3MuY29tL2NyZWF0b3IvbWFudWFsL2VuL3NjcmlwdGluZy9jbGFzcy5odG1sXHJcbi8vIExlYXJuIEF0dHJpYnV0ZTpcclxuLy8gIC0gaHR0cHM6Ly9kb2NzLmNvY29zLmNvbS9jcmVhdG9yL21hbnVhbC9lbi9zY3JpcHRpbmcvcmVmZXJlbmNlL2F0dHJpYnV0ZXMuaHRtbFxyXG4vLyBMZWFybiBsaWZlLWN5Y2xlIGNhbGxiYWNrczpcclxuLy8gIC0gaHR0cHM6Ly9kb2NzLmNvY29zLmNvbS9jcmVhdG9yL21hbnVhbC9lbi9zY3JpcHRpbmcvbGlmZS1jeWNsZS1jYWxsYmFja3MuaHRtbFxyXG5cclxuY2MuQ2xhc3Moe1xyXG4gICAgZXh0ZW5kczogY2MuQ29tcG9uZW50LFxyXG5cclxuICAgIHByb3BlcnRpZXM6IHtcclxuICAgICAgICBzZXg6e1xyXG4gICAgICAgICAgICB0eXBlOmNjLkVudW0oe1xyXG4gICAgICAgICAgICAgICAgbWFsZTowLFxyXG4gICAgICAgICAgICAgICAgZmVtYWxlOjFcclxuICAgICAgICAgICAgfSksXHJcbiAgICAgICAgICAgIGRlZmF1bHQ6MFxyXG4gICAgICAgIH1cclxuICAgICAgICAvLyBmb286IHtcclxuICAgICAgICAvLyAgICAgLy8gQVRUUklCVVRFUzpcclxuICAgICAgICAvLyAgICAgZGVmYXVsdDogbnVsbCwgICAgICAgIC8vIFRoZSBkZWZhdWx0IHZhbHVlIHdpbGwgYmUgdXNlZCBvbmx5IHdoZW4gdGhlIGNvbXBvbmVudCBhdHRhY2hpbmdcclxuICAgICAgICAvLyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHRvIGEgbm9kZSBmb3IgdGhlIGZpcnN0IHRpbWVcclxuICAgICAgICAvLyAgICAgdHlwZTogY2MuU3ByaXRlRnJhbWUsIC8vIG9wdGlvbmFsLCBkZWZhdWx0IGlzIHR5cGVvZiBkZWZhdWx0XHJcbiAgICAgICAgLy8gICAgIHNlcmlhbGl6YWJsZTogdHJ1ZSwgICAvLyBvcHRpb25hbCwgZGVmYXVsdCBpcyB0cnVlXHJcbiAgICAgICAgLy8gfSxcclxuICAgICAgICAvLyBiYXI6IHtcclxuICAgICAgICAvLyAgICAgZ2V0ICgpIHtcclxuICAgICAgICAvLyAgICAgICAgIHJldHVybiB0aGlzLl9iYXI7XHJcbiAgICAgICAgLy8gICAgIH0sXHJcbiAgICAgICAgLy8gICAgIHNldCAodmFsdWUpIHtcclxuICAgICAgICAvLyAgICAgICAgIHRoaXMuX2JhciA9IHZhbHVlO1xyXG4gICAgICAgIC8vICAgICB9XHJcbiAgICAgICAgLy8gfSxcclxuICAgIH0sXHJcblxyXG4gICAgLy8gTElGRS1DWUNMRSBDQUxMQkFDS1M6XHJcblxyXG4gICAgLy8gb25Mb2FkICgpIHt9LFxyXG5cclxuICAgIHN0YXJ0ICgpIHtcclxuXHJcbiAgICB9LFxyXG5cclxuICAgIC8vIHVwZGF0ZSAoZHQpIHt9LFxyXG59KTtcclxuIl19 //------QC-SOURCE-SPLIT------ (function() { var nodeEnv = typeof require !== 'undefined' && typeof process !== 'undefined'; var __module = nodeEnv ? module : {exports:{}}; - var __filename = 'preview-scripts/assets/Script/module/Storage/Storage.js'; + var __filename = 'preview-scripts/assets/migration/use_v2.1-2.2.1_cc.Toggle_event.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, '7a231Rz0d9LBYYgY3bDYlLB', 'use_v2.1-2.2.1_cc.Toggle_event'); +// migration/use_v2.1-2.2.1_cc.Toggle_event.js + +"use strict"; + +/* + * This script is automatically generated by Cocos Creator and is only used for projects compatible with the v2.1.0 ~ 2.2.1 version. + * You do not need to manually add this script in any other project. + * If you don't use cc.Toggle in your project, you can delete this script directly. + * If your project is hosted in VCS such as git, submit this script together. + * + * 此脚本由 Cocos Creator 自动生成,仅用于兼容 v2.1.0 ~ 2.2.1 版本的工程, + * 你无需在任何其它项目中手动添加此脚本。 + * 如果你的项目中没用到 Toggle,可直接删除该脚本。 + * 如果你的项目有托管于 git 等版本库,请将此脚本一并上传。 + */ + +if (cc.Toggle) { + // Whether to trigger 'toggle' and 'checkEvents' events when modifying 'toggle.isChecked' in the code + // 在代码中修改 'toggle.isChecked' 时是否触发 'toggle' 与 'checkEvents' 事件 + cc.Toggle._triggerEventInScript_isChecked = true; +} + +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,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImFzc2V0c1xcbWlncmF0aW9uXFx1c2VfdjIuMS0yLjIuMV9jYy5Ub2dnbGVfZXZlbnQuanMiXSwibmFtZXMiOlsiY2MiLCJUb2dnbGUiLCJfdHJpZ2dlckV2ZW50SW5TY3JpcHRfaXNDaGVja2VkIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7OztBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUEsSUFBSUEsRUFBRSxDQUFDQyxNQUFNLEVBQUU7RUFDWDtFQUNBO0VBQ0FELEVBQUUsQ0FBQ0MsTUFBTSxDQUFDQywrQkFBK0IsR0FBRyxJQUFJO0FBQ3BEIiwic291cmNlUm9vdCI6Ii8iLCJzb3VyY2VzQ29udGVudCI6WyIvKlxyXG4gKiBUaGlzIHNjcmlwdCBpcyBhdXRvbWF0aWNhbGx5IGdlbmVyYXRlZCBieSBDb2NvcyBDcmVhdG9yIGFuZCBpcyBvbmx5IHVzZWQgZm9yIHByb2plY3RzIGNvbXBhdGlibGUgd2l0aCB0aGUgdjIuMS4wIO+9niAyLjIuMSB2ZXJzaW9uLlxyXG4gKiBZb3UgZG8gbm90IG5lZWQgdG8gbWFudWFsbHkgYWRkIHRoaXMgc2NyaXB0IGluIGFueSBvdGhlciBwcm9qZWN0LlxyXG4gKiBJZiB5b3UgZG9uJ3QgdXNlIGNjLlRvZ2dsZSBpbiB5b3VyIHByb2plY3QsIHlvdSBjYW4gZGVsZXRlIHRoaXMgc2NyaXB0IGRpcmVjdGx5LlxyXG4gKiBJZiB5b3VyIHByb2plY3QgaXMgaG9zdGVkIGluIFZDUyBzdWNoIGFzIGdpdCwgc3VibWl0IHRoaXMgc2NyaXB0IHRvZ2V0aGVyLlxyXG4gKlxyXG4gKiDmraTohJrmnKznlLEgQ29jb3MgQ3JlYXRvciDoh6rliqjnlJ/miJDvvIzku4XnlKjkuo7lhbzlrrkgdjIuMS4wIH4gMi4yLjEg54mI5pys55qE5bel56iL77yMXHJcbiAqIOS9oOaXoOmcgOWcqOS7u+S9leWFtuWug+mhueebruS4reaJi+WKqOa3u+WKoOatpOiEmuacrOOAglxyXG4gKiDlpoLmnpzkvaDnmoTpobnnm67kuK3msqHnlKjliLAgVG9nZ2xl77yM5Y+v55u05o6l5Yig6Zmk6K+l6ISa5pys44CCXHJcbiAqIOWmguaenOS9oOeahOmhueebruacieaJmOeuoeS6jiBnaXQg562J54mI5pys5bqT77yM6K+35bCG5q2k6ISa5pys5LiA5bm25LiK5Lyg44CCXHJcbiAqL1xyXG5cclxuaWYgKGNjLlRvZ2dsZSkge1xyXG4gICAgLy8gV2hldGhlciB0byB0cmlnZ2VyICd0b2dnbGUnIGFuZCAnY2hlY2tFdmVudHMnIGV2ZW50cyB3aGVuIG1vZGlmeWluZyAndG9nZ2xlLmlzQ2hlY2tlZCcgaW4gdGhlIGNvZGVcclxuICAgIC8vIOWcqOS7o+eggeS4reS/ruaUuSAndG9nZ2xlLmlzQ2hlY2tlZCcg5pe25piv5ZCm6Kem5Y+RICd0b2dnbGUnIOS4jiAnY2hlY2tFdmVudHMnIOS6i+S7tlxyXG4gICAgY2MuVG9nZ2xlLl90cmlnZ2VyRXZlbnRJblNjcmlwdF9pc0NoZWNrZWQgPSB0cnVlO1xyXG59XHJcbiJdfQ== +//------QC-SOURCE-SPLIT------ + + (function() { + var nodeEnv = typeof require !== 'undefined' && typeof process !== 'undefined'; + var __module = nodeEnv ? module : {exports:{}}; + var __filename = 'preview-scripts/assets/Script/module/RankList/ItemRender.js'; var __require = nodeEnv ? function (request) { return cc.require(request); } : function (request) { @@ -4383,37 +2353,108 @@ cc._RF.pop(); }; function __define (exports, require, module) { if (!nodeEnv) {__quick_compile_project__.registerModule(__filename, module);}"use strict"; -cc._RF.push(module, '1002938VFRJd70RiAno9Iys', 'Storage'); -// Script/module/Storage/Storage.ts +cc._RF.push(module, 'ca0f9k0oBVDbpQC+OMNTF3m', 'ItemRender'); +// Script/module/RankList/ItemRender.ts -"use strict"; -Object.defineProperty(exports, "__esModule", { value: true }); -exports.StorageMessage = void 0; -//缓存浏览器数据 -var StorageMessage = { - getStorage: function (key) { - var result = null; - if (cc.sys.localStorage.getItem(key)) { - var result = cc.sys.localStorage.getItem(key); - } - if (result) { - result = JSON.parse(result); - } - return result; - }, - setStorage: function (key, value) { - //主动拉起分享接口 - var temp = JSON.stringify(value); - cc.sys.localStorage.setItem(key, temp); - }, - removeStorage: function (key) { - //主动删除消息接口 - if (cc.sys.localStorage.getItem(key)) { - cc.sys.localStorage.removeItem(key); - } - }, -}; -exports.StorageMessage = StorageMessage; +"use strict"; +var __extends = (this && this.__extends) || (function () { + var extendStatics = function (d, b) { + extendStatics = Object.setPrototypeOf || + ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) || + function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; }; + return extendStatics(d, b); + }; + return function (d, b) { + extendStatics(d, b); + function __() { this.constructor = d; } + d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); + }; +})(); +var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) { + var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; + if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc); + else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; + return c > 3 && r && Object.defineProperty(target, key, r), r; +}; +Object.defineProperty(exports, "__esModule", { value: true }); +var _a = cc._decorator, ccclass = _a.ccclass, property = _a.property; +var ItemRender = /** @class */ (function (_super) { + __extends(ItemRender, _super); + function ItemRender() { + var _this = _super !== null && _super.apply(this, arguments) || this; + /**数据 */ + _this.data = null; + /**索引 0表示第一项*/ + _this.itemIndex = 0; + return _this; + } + /**数据改变时调用 */ + ItemRender.prototype.dataChanged = function () { + this.data.name = cc.fx.GameTool.subName(this.data.name, 6); + this.node.getChildByName("rankLab").getComponent(cc.Label).string = this.data.rank + ""; + this.node.getChildByName("nameLab").getComponent(cc.Label).string = this.data.name + ""; + this.node.getChildByName("totalLab").getComponent(cc.Label).string = this.data.total; + var timeTemp = cc.fx.GameTool.getTimeShenNong(this.data.time); + // this.node.getChildByName("timeLab").getComponent(cc.Label).string = timeTemp + ""; + this.node.getChildByName("rank").getChildByName("one").active = false; + this.node.getChildByName("rank").getChildByName("two").active = false; + this.node.getChildByName("rank").getChildByName("three").active = false; + if (this.data.rank == 1) { + this.node.getChildByName("rank").getChildByName("one").active = true; + this.node.getChildByName("rankLab").active = false; + } + else if (this.data.rank == 2) { + this.node.getChildByName("rank").getChildByName("two").active = true; + this.node.getChildByName("rankLab").active = false; + } + else if (this.data.rank == 3) { + this.node.getChildByName("rank").getChildByName("three").active = true; + this.node.getChildByName("rankLab").active = false; + } + else { + this.node.getChildByName("rankLab").active = true; + } + this.setPic(); + }; + ItemRender.prototype.setPic = function () { + var _this = this; + this.node.getChildByName("pic").getChildByName("icon").active = false; + this.node.getChildByName("pic").getChildByName("pic").active = false; + var self = this; + var url = this.data.pic; + fetch(url) + .then(function (response) { + return response.headers.get('Content-Length'); + }) + .then(function (errNo) { + // console.log(this.data.rank,'X-Info:', errNo); // 输出X-ErrNo的值 + if (errNo == "5093") { + // console.log(this.data.rank,"没头像"); + _this.node.getChildByName("pic").getChildByName("icon").active = true; + } + }) + .catch(function (error) { + // console.error('Error fetching X-Info:', error); + }); + cc.assetManager.loadRemote(url, { ext: '.png' }, function (err, texture) { + if (texture) { + _this.node.getChildByName("pic").getChildByName("pic").active = true; + var sprite = _this.node.getChildByName("pic").getChildByName("pic").getComponent(cc.Sprite); + sprite.spriteFrame = new cc.SpriteFrame(texture); + // console.log(this.data.rank,"设置头像成功",err); + } + else { + // console.log("设置头像失败",url); + console.log(err, texture); + } + }); + }; + ItemRender = __decorate([ + ccclass + ], ItemRender); + return ItemRender; +}(cc.Component)); +exports.default = ItemRender; cc._RF.pop(); } @@ -4426,7 +2467,7 @@ cc._RF.pop(); }); } })(); -//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImFzc2V0c1xcU2NyaXB0XFxtb2R1bGVcXFN0b3JhZ2VcXFN0b3JhZ2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsU0FBUztBQUNULElBQUksY0FBYyxHQUFHO0lBQ2pCLFVBQVUsRUFBRyxVQUFTLEdBQUc7UUFDckIsSUFBSSxNQUFNLEdBQUcsSUFBSSxDQUFDO1FBQ2xCLElBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxZQUFZLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxFQUFDO1lBQ2xDLElBQUksTUFBTSxHQUFHLEVBQUUsQ0FBQyxHQUFHLENBQUMsWUFBWSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsQ0FBQztTQUMvQztRQUVELElBQUcsTUFBTSxFQUFDO1lBQ1IsTUFBTSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUM7U0FDN0I7UUFDRCxPQUFPLE1BQU0sQ0FBQztJQUNsQixDQUFDO0lBQ0QsVUFBVSxFQUFHLFVBQVMsR0FBRyxFQUFDLEtBQUs7UUFDM0IsVUFBVTtRQUNWLElBQUksSUFBSSxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDakMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxZQUFZLENBQUMsT0FBTyxDQUFDLEdBQUcsRUFBRSxJQUFJLENBQUMsQ0FBQTtJQUMxQyxDQUFDO0lBQ0QsYUFBYSxFQUFHLFVBQVMsR0FBRztRQUMxQixVQUFVO1FBQ1YsSUFBRyxFQUFFLENBQUMsR0FBRyxDQUFDLFlBQVksQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLEVBQUM7WUFDbEMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxZQUFZLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQyxDQUFBO1NBQ3BDO0lBQ0gsQ0FBQztDQUNKLENBQUM7QUFFTyx3Q0FBYyIsImZpbGUiOiIiLCJzb3VyY2VSb290IjoiLyIsInNvdXJjZXNDb250ZW50IjpbIi8v57yT5a2Y5rWP6KeI5Zmo5pWw5o2uXG52YXIgU3RvcmFnZU1lc3NhZ2UgPSB7XG4gICAgZ2V0U3RvcmFnZSA6IGZ1bmN0aW9uKGtleSl7XG4gICAgICAgIHZhciByZXN1bHQgPSBudWxsO1xuICAgICAgICBpZihjYy5zeXMubG9jYWxTdG9yYWdlLmdldEl0ZW0oa2V5KSl7XG4gICAgICAgICAgdmFyIHJlc3VsdCA9IGNjLnN5cy5sb2NhbFN0b3JhZ2UuZ2V0SXRlbShrZXkpO1xuICAgICAgICB9XG4gICAgICAgIFxuICAgICAgICBpZihyZXN1bHQpe1xuICAgICAgICAgIHJlc3VsdCA9IEpTT04ucGFyc2UocmVzdWx0KTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gcmVzdWx0O1xuICAgIH0sXG4gICAgc2V0U3RvcmFnZSA6IGZ1bmN0aW9uKGtleSx2YWx1ZSl7XG4gICAgICAgIC8v5Li75Yqo5ouJ6LW35YiG5Lqr5o6l5Y+jXG4gICAgICAgIHZhciB0ZW1wID0gSlNPTi5zdHJpbmdpZnkodmFsdWUpO1xuICAgICAgICBjYy5zeXMubG9jYWxTdG9yYWdlLnNldEl0ZW0oa2V5LCB0ZW1wKVxuICAgIH0sXG4gICAgcmVtb3ZlU3RvcmFnZSA6IGZ1bmN0aW9uKGtleSl7XG4gICAgICAvL+S4u+WKqOWIoOmZpOa2iOaBr+aOpeWPo1xuICAgICAgaWYoY2Muc3lzLmxvY2FsU3RvcmFnZS5nZXRJdGVtKGtleSkpe1xuICAgICAgICBjYy5zeXMubG9jYWxTdG9yYWdlLnJlbW92ZUl0ZW0oa2V5KVxuICAgICAgfVxuICAgIH0sXG59O1xuXG5leHBvcnQgeyBTdG9yYWdlTWVzc2FnZSB9OyJdfQ== +//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImFzc2V0c1xcU2NyaXB0XFxtb2R1bGVcXFJhbmtMaXN0XFxJdGVtUmVuZGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUdNLElBQUEsS0FBd0IsRUFBRSxDQUFDLFVBQVUsRUFBbkMsT0FBTyxhQUFBLEVBQUUsUUFBUSxjQUFrQixDQUFDO0FBRzVDO0lBQXdDLDhCQUFZO0lBQXBEO1FBQUEscUVBc0VDO1FBckVHLFFBQVE7UUFDRCxVQUFJLEdBQU8sSUFBSSxDQUFDO1FBQ3ZCLGNBQWM7UUFDUCxlQUFTLEdBQVUsQ0FBQyxDQUFDOztJQWtFaEMsQ0FBQztJQWhFRyxhQUFhO0lBQ04sZ0NBQVcsR0FBbEI7UUFDSSxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksR0FBRyxFQUFFLENBQUMsRUFBRSxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUMsQ0FBQyxDQUFDLENBQUM7UUFFMUQsSUFBSSxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsU0FBUyxDQUFDLENBQUMsWUFBWSxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLEdBQUcsRUFBRSxDQUFDO1FBQ3hGLElBQUksQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLFNBQVMsQ0FBQyxDQUFDLFlBQVksQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxHQUFHLEVBQUUsQ0FBQztRQUN4RixJQUFJLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxVQUFVLENBQUMsQ0FBQyxZQUFZLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQztRQUNyRixJQUFJLFFBQVEsR0FBRyxFQUFFLENBQUMs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QUEsS0FBSztZQUNSLGtEQUFrRDtRQUN0RCxDQUFDLENBQUMsQ0FBQztRQUNILEVBQUUsQ0FBQyxZQUFZLENBQUMsVUFBVSxDQUFDLEdBQUcsRUFBRSxFQUFDLEdBQUcsRUFBQyxNQUFNLEVBQUMsRUFBQyxVQUFDLEdBQUcsRUFBRSxPQUFvQjtZQUNuRSxJQUFHLE9BQU8sRUFBQztnQkFDUCxLQUFJLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxjQUFjLENBQUMsS0FBSyxDQUFDLENBQUMsTUFBTSxHQUFFLElBQUksQ0FBQztnQkFDbkUsSUFBSSxNQUFNLEdBQUcsS0FBSSxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsS0FBSyxDQUFDLENBQUMsY0FBYyxDQUFDLEtBQUssQ0FBQyxDQUFDLFlBQVksQ0FBQyxFQUFFLENBQUMsTUFBTSxDQUFDLENBQUM7Z0JBQzNGLE1BQU0sQ0FBQyxXQUFXLEdBQUcsSUFBSSxFQUFFLENBQUMsV0FBVyxDQUFDLE9BQU8sQ0FBQyxDQUFDO2dCQUNqRCw0Q0FBNEM7YUFDL0M7aUJBQ0c7Z0JBQ0EsNkJBQTZCO2dCQUM3QixPQUFPLENBQUMsR0FBRyxDQUFDLEdBQUcsRUFBQyxPQUFPLENBQUMsQ0FBQTthQUMzQjtRQUNMLENBQUMsQ0FBQyxDQUFBO0lBQ04sQ0FBQztJQW5FZ0IsVUFBVTtRQUQ5QixPQUFPO09BQ2EsVUFBVSxDQXNFOUI7SUFBRCxpQkFBQztDQXRFRCxBQXNFQyxDQXRFdUMsRUFBRSxDQUFDLFNBQVMsR0FzRW5EO2tCQXRFb0IsVUFBVSIsImZpbGUiOiIiLCJzb3VyY2VSb290IjoiLyIsInNvdXJjZXNDb250ZW50IjpbIlxyXG5pbXBvcnQgTGlzdCwgeyBMaXN0VHlwZSB9IGZyb20gXCIuL0xpc3RcIjtcclxuXHJcbmNvbnN0IHsgY2NjbGFzcywgcHJvcGVydHkgfSA9IGNjLl9kZWNvcmF0b3I7XHJcblxyXG5AY2NjbGFzc1xyXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBJdGVtUmVuZGVyIGV4dGVuZHMgY2MuQ29tcG9uZW50IHtcclxuICAgIC8qKuaVsOaNriAqL1xyXG4gICAgcHVibGljIGRhdGE6YW55ID0gbnVsbDtcclxuICAgIC8qKue0ouW8lSAw6KGo56S656ys5LiA6aG5Ki9cclxuICAgIHB1YmxpYyBpdGVtSW5kZXg6bnVtYmVyID0gMDsgICAgXHJcblxyXG4gICAgLyoq5pWw5o2u5pS55Y+Y5pe26LCD55SoICovXHJcbiAgICBwdWJsaWMgZGF0YUNoYW5nZWQoKXtcclxuICAgICAgICB0aGlzLmRhdGEubmFtZSA9IGNjLmZ4LkdhbWVUb29sLnN1Yk5hbWUodGhpcy5kYXRhLm5hbWUsNik7XHJcblxyXG4gICAgICAgIHRoaXMubm9kZS5nZXRDaGlsZEJ5TmFtZShcInJhbmtMYWJcIikuZ2V0Q29tcG9uZW50KGNjLkxhYmVsKS5zdHJpbmcgPSB0aGlzLmRhdGEucmFuayArIFwiXCI7XHJcbiAgICAgICAgdGhpcy5ub2RlLmdldENoaWxkQnlOYW1lKFwibmFtZUxhYlwiKS5nZXRDb21wb25lbnQoY2MuTGFiZWwpLnN0cmluZyA9IHRoaXMuZGF0YS5uYW1lICsgXCJcIjtcclxuICAgICAgICB0aGlzLm5vZGUuZ2V0Q2hpbGRCeU5hbWUoXCJ0b3RhbExhYlwiKS5nZXRDb21wb25lbnQoY2MuTGFiZWwpLnN0cmluZyA9IHRoaXMuZGF0YS50b3RhbDtcclxuICAgICAgICBsZXQgdGltZVRlbXAgPSBjYy5meC5HYW1lVG9vbC5nZXRUaW1lU2hlbk5vbmcodGhpcy5kYXRhLnRpbWUpO1xyXG4gICAgICAgIC8vIHRoaXMubm9kZS5nZXRDaGlsZEJ5TmFtZShcInRpbWVMYWJcIikuZ2V0Q29tcG9uZW50KGNjLkxhYmVsKS5zdHJpbmcgPSB0aW1lVGVtcCArIFwiXCI7XHJcbiAgICAgICAgdGhpcy5ub2RlLmdldENoaWxkQnlOYW1lKFwicmFua1wiKS5nZXRDaGlsZEJ5TmFtZShcIm9uZVwiKS5hY3RpdmUgPSBmYWxzZTtcclxuICAgICAgICB0aGlzLm5vZGUuZ2V0Q2hpbGRCeU5hbWUoXCJyYW5rXCIpLmdldENoaWxkQnlOYW1lKFwidHdvXCIpLmFjdGl2ZSA9IGZhbHNlO1xyXG4gICAgICAgIHRoaXMubm9kZS5nZXRDaGlsZEJ5TmFtZShcInJhbmtcIikuZ2V0Q2hpbGRCeU5hbWUoXCJ0aHJlZVwiKS5hY3RpdmUgPSBmYWxzZTtcclxuICAgICAgICBpZih0aGlzLmRhdGEucmFuayA9PSAxKXtcclxuICAgICAgICAgICAgdGhpcy5ub2RlLmdldENoaWxkQnlOYW1lKFwicmFua1wiKS5nZXRDaGlsZEJ5TmFtZShcIm9uZVwiKS5hY3RpdmUgPSB0cnVlO1xyXG4gICAgICAgICAgICB0aGlzLm5vZGUuZ2V0Q2hpbGRCeU5hbWUoXCJyYW5rTGFiXCIpLmFjdGl2ZSA9IGZhbHNlO1xyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIGlmKHRoaXMuZGF0YS5yYW5rID09IDIpe1xyXG4gICAgICAgICAgICB0aGlzLm5vZGUuZ2V0Q2hpbGRCeU5hbWUoXCJyYW5rXCIpLmdldENoaWxkQnlOYW1lKFwidHdvXCIpLmFjdGl2ZSA9IHRydWU7XHJcbiAgICAgICAgICAgIHRoaXMubm9kZS5nZXRDaGlsZEJ5TmFtZShcInJhbmtMYWJcIikuYWN0aXZlID0gZmFsc2U7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2UgaWYodGhpcy5kYXRhLnJhbmsgPT0gMyl7XHJcbiAgICAgICAgICAgIHRoaXMubm9kZS5nZXRDaGlsZEJ5TmFtZShcInJhbmtcIikuZ2V0Q2hpbGRCeU5hbWUoXCJ0aHJlZVwiKS5hY3RpdmUgPSB0cnVlO1xyXG4gICAgICAgICAgICB0aGlzLm5vZGUuZ2V0Q2hpbGRCeU5hbWUoXCJyYW5rTGFiXCIpLmFjdGl2ZSA9IGZhbHNlO1xyXG4gICAgICAgIH1lbHNle1xyXG4gICAgICAgICAgICB0aGlzLm5vZGUuZ2V0Q2hpbGRCeU5hbWUoXCJyYW5rTGFiXCIpLmFjdGl2ZSA9IHRydWU7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRoaXMuc2V0UGljKCk7XHJcbiAgICB9ICAgXHJcbiAgICBcclxuICAgIHB1YmxpYyBzZXRQaWMoKXtcclxuICAgICAgICB0aGlzLm5vZGUuZ2V0Q2hpbGRCeU5hbWUoXCJwaWNcIikuZ2V0Q2hpbGRCeU5hbWUoXCJpY29uXCIpLmFjdGl2ZSA9IGZhbHNlO1xyXG4gICAgICAgIHRoaXMubm9kZS5nZXRDaGlsZEJ5TmFtZShcInBpY1wiKS5nZXRDaGlsZEJ5TmFtZShcInBpY1wiKS5hY3RpdmU9IGZhbHNlO1xyXG4gICAgICAgIHZhciBzZWxmID0gdGhpcztcclxuICAgICAgICBsZXQgdXJsID0gdGhpcy5kYXRhLnBpYztcclxuICAgICAgICBmZXRjaCh1cmwpXHJcbiAgICAgICAgLnRoZW4ocmVzcG9uc2UgPT4ge1xyXG4gICAgICAgICAgICByZXR1cm4gcmVzcG9uc2UuaGVhZGVycy5nZXQoJ0NvbnRlbnQtTGVuZ3RoJyk7XHJcbiAgICAgICAgfSlcclxuXHJcbiAgICAgICAgLnRoZW4oZXJyTm8gPT4ge1xyXG4gICAgICAgICAgICAvLyBjb25zb2xlLmxvZyh0aGlzLmRhdGEucmFuaywnWC1JbmZvOicsIGVyck5vKTsgLy8g6L6T5Ye6WC1FcnJOb+eahOWAvFxyXG4gICAgICAgICAgICBpZihlcnJObyA9PSBcIjUwOTNcIil7XHJcbiAgICAgICAgICAgICAgICAvLyBjb25zb2xlLmxvZyh0aGlzLmRhdGEucmFuayxcIuayoeWktOWDj1wiKTtcclxuICAgICAgICAgICAgICAgIHRoaXMubm9kZS5nZXRDaGlsZEJ5TmFtZShcInBpY1wiKS5nZXRDaGlsZEJ5TmFtZShcImljb25cIikuYWN0aXZlID0gdHJ1ZTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH0pXHJcbiAgICAgICAgLmNhdGNoKGVycm9yID0+IHtcclxuICAgICAgICAgICAgLy8gY29uc29sZS5lcnJvcignRXJyb3IgZmV0Y2hpbmcgWC1JbmZvOicsIGVycm9yKTtcclxuICAgICAgICB9KTtcclxuICAgICAgICBjYy5hc3NldE1hbmFnZXIubG9hZFJlbW90ZSh1cmwsIHtleHQ6Jy5wbmcnfSwoZXJyLCB0ZXh0dXJlOmNjLlRleHR1cmUyRCkgPT4ge1xyXG4gICAgICAgICAgICBpZih0ZXh0dXJlKXtcclxuICAgICAgICAgICAgICAgIHRoaXMubm9kZS5nZXRDaGlsZEJ5TmFtZShcInBpY1wiKS5nZXRDaGlsZEJ5TmFtZShcInBpY1wiKS5hY3RpdmU9IHRydWU7XHJcbiAgICAgICAgICAgICAgICB2YXIgc3ByaXRlID0gdGhpcy5ub2RlLmdldENoaWxkQnlOYW1lKFwicGljXCIpLmdldENoaWxkQnlOYW1lKFwicGljXCIpLmdldENvbXBvbmVudChjYy5TcHJpdGUpO1xyXG4gICAgICAgICAgICAgICAgc3ByaXRlLnNwcml0ZUZyYW1lID0gbmV3IGNjLlNwcml0ZUZyYW1lKHRleHR1cmUpO1xyXG4gICAgICAgICAgICAgICAgLy8gY29uc29sZS5sb2codGhpcy5kYXRhLnJhbmssXCLorr7nva7lpLTlg4/miJDlip9cIixlcnIpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGVsc2V7XHJcbiAgICAgICAgICAgICAgICAvLyBjb25zb2xlLmxvZyhcIuiuvue9ruWktOWDj+Wksei0pVwiLHVybCk7XHJcbiAgICAgICAgICAgICAgICBjb25zb2xlLmxvZyhlcnIsdGV4dHVyZSlcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH0pXHJcbiAgICB9XHJcblxyXG5cclxufVxyXG4iXX0= //------QC-SOURCE-SPLIT------ (function() { @@ -4443,100 +2484,100 @@ cc._RF.pop(); cc._RF.push(module, '61d4ccY2ztLMYIh8WvqPPAw', 'GameAppStart'); // Script/module/GameStart/GameAppStart.ts -"use strict"; -Object.defineProperty(exports, "__esModule", { value: true }); -var Storage_1 = require("../Storage/Storage"); -var GameConfig_1 = require("../Config/GameConfig"); -var HttpUtil_1 = require("../Crypto/HttpUtil"); -var AudioManager_1 = require("../Music/AudioManager"); -var Notification_1 = require("../Notification/Notification"); -var GameTool_1 = require("../Tool/GameTool"); -window.initMgr = function () { - if (cc.fx) { - return; - } - cc.fx = {}; - // console.log("1初始化"); - //基础状态信息 - cc.fx.StateInfo = { - debugMode: true, - networkConnected: true, - networkType: 'none', - isOnForeground: true //当前是否是在前台 - }; - //应用系统信息 - //配置文件 - cc.fx.StorageMessage = Storage_1.StorageMessage; - cc.fx.AudioManager = AudioManager_1.default; - cc.fx.GameConfig = GameConfig_1.GameConfig; - cc.fx.HttpUtil = HttpUtil_1.default; - cc.fx.GameTool = GameTool_1.GameTool; - cc.fx.Notifications = Notification_1.Notifications; - cc.fx.ShareInfo = { - queryId: -1 //分享id - }; - cc.fx.Message = { - control: "10001", - startGame: "10002", - next: "10003", - changePath: "10004", - changeMap: "10005", - nextWater: "10006", - addEnd: "10007", - setData: "10008", - guideNext: "10009", - showResult: "10010", - removeTip: "10011" //执行撤回或者后退动作,移除提示 - }; - /* - * 客户端埋点分享类型 - */ - cc.fx.BurialShareType = { - Default: "default", - Invite: "invite", - DailyInviteRoomJoin: 'invite_join_room', - DailyInviteFriend: 'invite_friend', - DailyInviteGroup: 'invate_group', - DailyInviteGroupAlive: 'invate_alive', - DailyInviteGroupReward: 'invate_rewared', - DailyInviteGroupBox: 'invate_box', - DailyInviteGroupBall: 'invate_ball', - MatchResult: 'matchResult', - MatchFix5: 'MatchFix5', - MatchFix20: 'MatchFix20', - MatchFix100: 'MatchFix100', - MatchFix500: 'MatchFix500', - NewerRedEnvelope: 'newerRedEnvelope', - CoinRoomResult: 'coinRoomResult', - HighRate: "highRate", - CoinRoomWinStreak: 'coinRoomWinStreak', - CoinRoomBankruptcy1: 'coinRoomBankruptcy1', - CoinRoomBankruptcy2: 'coinRoomBankruptcy2', - CoinRoomBankruptcy3: 'coinRoomBankruptcy3', - }; - /* - * 分享到哪儿给奖励 group frined all - */ - cc.fx.ShareWhereReward = { - Group: "group", - Friend: "friend", - All: "all", - }; - //用于存储消息的ID - cc.fx.storageType = cc.Enum({ - storageTypeCustom: 1000101, - }); - //用于存储提示语 按照步骤提示 - cc.fx.tipType = cc.Enum({ - tipOne: '神农氏回到家中,开始整理今天收集来的物品。当他第一次拿出或说出一种植物时,请告诉他这是新植物。', - tipTwo: '如果他拿出或说出的植物你今天看到过,请告诉他上次是看到的;如果你听他说过,则请告诉他上次是听到的。', - tipErrNew: '这是这局游戏第一次出现{植物}', - tipErrOld: '{植物}刚才出现过呢', - tipErrHear: '上次遇到{植物}时,似乎不是听到的吧', - tipErrSee: '上次遇到{植物}时,似乎不是看到的吧', - tipErrLast: '之前确实看到过{植物},但最近一次似乎不是看到的呢', - }); -}; +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +var Storage_1 = require("../Storage/Storage"); +var GameConfig_1 = require("../Config/GameConfig"); +var HttpUtil_1 = require("../Crypto/HttpUtil"); +var AudioManager_1 = require("../Music/AudioManager"); +var Notification_1 = require("../Notification/Notification"); +var GameTool_1 = require("../Tool/GameTool"); +window.initMgr = function () { + if (cc.fx) { + return; + } + cc.fx = {}; + // console.log("1初始化"); + //基础状态信息 + cc.fx.StateInfo = { + debugMode: true, + networkConnected: true, + networkType: 'none', + isOnForeground: true //当前是否是在前台 + }; + //应用系统信息 + //配置文件 + cc.fx.StorageMessage = Storage_1.StorageMessage; + cc.fx.AudioManager = AudioManager_1.default; + cc.fx.GameConfig = GameConfig_1.GameConfig; + cc.fx.HttpUtil = HttpUtil_1.default; + cc.fx.GameTool = GameTool_1.GameTool; + cc.fx.Notifications = Notification_1.Notifications; + cc.fx.ShareInfo = { + queryId: -1 //分享id + }; + cc.fx.Message = { + control: "10001", + startGame: "10002", + next: "10003", + changePath: "10004", + changeMap: "10005", + nextWater: "10006", + addEnd: "10007", + setData: "10008", + guideNext: "10009", + showResult: "10010", + removeTip: "10011" //执行撤回或者后退动作,移除提示 + }; + /* + * 客户端埋点分享类型 + */ + cc.fx.BurialShareType = { + Default: "default", + Invite: "invite", + DailyInviteRoomJoin: 'invite_join_room', + DailyInviteFriend: 'invite_friend', + DailyInviteGroup: 'invate_group', + DailyInviteGroupAlive: 'invate_alive', + DailyInviteGroupReward: 'invate_rewared', + DailyInviteGroupBox: 'invate_box', + DailyInviteGroupBall: 'invate_ball', + MatchResult: 'matchResult', + MatchFix5: 'MatchFix5', + MatchFix20: 'MatchFix20', + MatchFix100: 'MatchFix100', + MatchFix500: 'MatchFix500', + NewerRedEnvelope: 'newerRedEnvelope', + CoinRoomResult: 'coinRoomResult', + HighRate: "highRate", + CoinRoomWinStreak: 'coinRoomWinStreak', + CoinRoomBankruptcy1: 'coinRoomBankruptcy1', + CoinRoomBankruptcy2: 'coinRoomBankruptcy2', + CoinRoomBankruptcy3: 'coinRoomBankruptcy3', + }; + /* + * 分享到哪儿给奖励 group frined all + */ + cc.fx.ShareWhereReward = { + Group: "group", + Friend: "friend", + All: "all", + }; + //用于存储消息的ID + cc.fx.storageType = cc.Enum({ + storageTypeCustom: 1000101, + }); + //用于存储提示语 按照步骤提示 + cc.fx.tipType = cc.Enum({ + tipOne: '神农氏回到家中,开始整理今天收集来的物品。当他第一次拿出或说出一种植物时,请告诉他这是新植物。', + tipTwo: '如果他拿出或说出的植物你今天看到过,请告诉他上次是看到的;如果你听他说过,则请告诉他上次是听到的。', + tipErrNew: '这是这局游戏第一次出现{植物}', + tipErrOld: '{植物}刚才出现过呢', + tipErrHear: '上次遇到{植物}时,似乎不是听到的吧', + tipErrSee: '上次遇到{植物}时,似乎不是看到的吧', + tipErrLast: '之前确实看到过{植物},但最近一次似乎不是看到的呢', + }); +}; cc._RF.pop(); } @@ -4550,16 +2591,12 @@ cc._RF.pop(); } })(); //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImFzc2V0c1xcU2NyaXB0XFxtb2R1bGVcXEdhbWVTdGFydFxcR2FtZUFwcFN0YXJ0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsOENBQW9EO0FBQ3BELG1EQUFrRDtBQUNsRCwrQ0FBMEM7QUFDMUMsc0RBQWlEO0FBQ2pELDZEQUE2RDtBQUM3RCw2Q0FBNEM7QUFHNUMsTUFBTSxDQUFDLE9BQU8sR0FBRztJQUNiLElBQUcsRUFBRSxDQUFDLEVBQUUsRUFDUjtRQUNJLE9BQU87S0FDVjtJQUNELEVBQUUsQ0FBQyxFQUFFLEdBQUcsRUFBRSxDQUFDO0lBQ1gsdUJBQXVCO0lBRXZCLFFBQVE7SUFDUixFQUFFLENBQUMsRUFBRSxDQUFDLFNBQVMsR0FBRztRQUNkLFNBQVMsRUFBRSxJQUFJO1FBQ2YsZ0JBQWdCLEVBQUUsSUFBSTtRQUN0QixXQUFXLEVBQUUsTUFBTTtRQUNuQixjQUFjLEVBQUUsSUFBSSxDQUFNLFVBQVU7S0FDdkMsQ0FBQztJQUVGLFFBQVE7SUFDUixNQUFNO0lBQ04sRUFBRSxDQUFDLEVBQUUsQ0FBQyxjQUFjLEdBQUcsd0JBQWMsQ0FBQztJQUN0QyxFQUFFLENBQUMsRUFBRSxDQUFDLFlBQVksR0FBRyxzQkFBWSxDQUFDO0lBQ2xDLEVBQUUsQ0FBQyxFQUFFLENBQUMsVUFBVSxHQUFHLHVCQUFVLENBQUM7SUFDOUIsRUFBRSxDQUFDLEVBQUUsQ0FBQyxRQUFRLEdBQUcsa0JBQVEsQ0FBQztJQUMxQixFQUFFLENBQUMsRUFBRSxDQUFDLFFBQVEsR0FBRyxtQkFBUSxDQUFDO0lBQzFCLEVBQUUsQ0FBQyxFQUFFLENBQUMsYUFBYSxHQUFHLDRCQUFhLENBQUM7SUFHcEMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxTQUFTLEdBQUc7UUFDZCxPQUFPLEVBQUcsQ0FBQyxDQUFDLENBQWMsTUFBTTtLQUNuQyxDQUFDO0lBRUYsRUFBRSxDQUFDLEVBQUUsQ0FBQyxPQUFPLEdBQUc7UUFDWixPQUFPLEVBQUUsT0FBTztRQUNoQixTQUFTLEVBQUMsT0FBTztRQUNqQixJQUFJLEVBQUUsT0FBTztRQUNiLFVBQVUsRUFBRSxPQUFPO1FBQ25CLFNBQVMsRUFBRSxPQUFPO1FBQ2xCLFNBQVMsRUFBRSxPQUFPO1FBQ2xCLE1BQU0sRUFBRSxPQUFPO1FBQ2YsT0FBTyxFQUFFLE9BQU87UUFDaEIsU0FBUyxFQUFFLE9BQU87UUFDbEIsVUFBVSxFQUFFLE9BQU87UUFDbkIsU0FBUyxFQUFFLE9BQU8sQ0FBVSxpQkFBaUI7S0FDaEQsQ0FBQTtJQUVEOztNQUVFO0lBQ0YsRUFBRSxDQUFDLEVBQUUsQ0FBQyxlQUFlLEdBQUc7UUFDcEIsT0FBTyxFQUFHLFNBQVM7UUFDbkIsTUFBTSxFQUFHLFFBQVE7UUFFakIsbUJBQW1CLEVBQUMsa0JBQWtCO1FBQ3RDLGlCQUFpQixFQUFHLGVBQWU7UUFDbkMsZ0JBQWdCLEVBQUcsY0FBYztRQUNqQyxxQkFBcUIsRUFBRSxjQUFjO1FBQ3JDLHNCQUFzQixFQUFFLGdCQUFnQjtRQUN4QyxtQkFBbUIsRUFBRSxZQUFZO1FBQ2pDLG9CQUFvQixFQUFFLGFBQWE7UUFFbkMsV0FBVyxFQUFHLGFBQWE7UUFDM0IsU0FBUyxFQUFFLFdBQVc7UUFDdEIsVUFBVSxFQUFFLFlBQVk7UUFDeEIsV0FBVyxFQUFFLGFBQWE7UUFDMUIsV0FBVyxFQUFFLGFBQWE7UUFDMUIsZ0JBQWdCLEVBQUUsa0JBQWtCO1FBQ3BDLGNBQWMsRUFBRSxnQkFBZ0I7UUFDaEMsUUFBUSxFQUFHLFVBQVU7UUFDckIsaUJBQWlCLEVBQUUsbUJBQW1CO1FBQ3RDLG1CQUFtQixFQUFFLHFCQUFxQjtRQUMxQyxtQkFBbUIsRUFBRSxxQkFBcUI7UUFDMUMsbUJBQW1CLEVBQUUscUJBQXFCO0tBQzdDLENBQUM7SUFFRjs7T0FFRztJQUNILEVBQUUsQ0FBQyxFQUFFLENBQUMsZ0JBQWdCLEdBQUc7UUFDckIsS0FBSyxFQUFFLE9BQU87UUFDZCxNQUFNLEVBQUcsUUFBUTtRQUNqQixHQUFHLEVBQUcsS0FBSztLQUNkLENBQUM7SUFFRixXQUFXO0lBQ1gsRUFBRSxDQUFDLEVBQUUsQ0FBQyxXQUFXLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQztRQUMzQixpQkFBaUIsRUFBRSxPQUFPO0tBQzdCLENBQUMsQ0FBQztJQUVBLGlCQUFpQjtJQUNqQixFQUFFLENBQUMsRUFBRSxDQUFDLE9BQU8sR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDO1FBQ3BCLE1BQU0sRUFBRSxpREFBaUQ7UUFDekQsTUFBTSxFQUFFLG1EQUFtRDtRQUMzRCxTQUFTLEVBQUUsaUJBQWlCO1FBQzVCLFNBQVMsRUFBRSxZQUFZO1FBQ3ZCLFVBQVUsRUFBRSxvQkFBb0I7UUFDaEMsU0FBUyxFQUFFLG9CQUFvQjtRQUMvQixVQUFVLEVBQUUsMkJBQTJCO0tBRTFDLENBQUMsQ0FBQztBQUVQLENBQUMsQ0FBQyIsImZpbGUiOiIiLCJzb3VyY2VSb290IjoiLyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFN0b3JhZ2VNZXNzYWdlIH0gZnJvbSBcIi4uL1N0b3JhZ2UvU3RvcmFnZVwiO1xyXG5pbXBvcnQgeyBHYW1lQ29uZmlnIH0gZnJvbSBcIi4uL0NvbmZpZy9HYW1lQ29uZmlnXCI7XHJcbmltcG9ydCBIdHRwVXRpbCBmcm9tIFwiLi4vQ3J5cHRvL0h0dHBVdGlsXCI7XHJcbmltcG9ydCBBdWRpb01hbmFnZXIgZnJvbSBcIi4uL011c2ljL0F1ZGlvTWFuYWdlclwiO1xyXG5pbXBvcnQgeyBOb3RpZmljYXRpb25zIH0gZnJvbSBcIi4uL05vdGlmaWNhdGlvbi9Ob3RpZmljYXRpb25cIjtcclxuaW1wb3J0IHsgR2FtZVRvb2wgfSBmcm9tIFwiLi4vVG9vbC9HYW1lVG9vbFwiO1xyXG5cclxuXHJcbndpbmRvdy5pbml0TWdyID0gZnVuY3Rpb24oKSB7XHJcbiAgICBpZihjYy5meClcclxuICAgIHtcclxuICAgICAgICByZXR1cm47XHJcbiAgICB9XHJcbiAgICBjYy5meCA9IHt9O1xyXG4gICAgLy8gY29uc29sZS5sb2coXCIx5Yid5aeL5YyWXCIpO1xyXG5cclxuICAgIC8v5Z+656GA54q25oCB5L+h5oGvXHJcbiAgICBjYy5meC5TdGF0ZUluZm8gPSB7XHJcbiAgICAgICAgZGVidWdNb2RlOiB0cnVlLFxyXG4gICAgICAgIG5ldHdvcmtDb25uZWN0ZWQ6IHRydWUsICAgLy/nvZHnu5znirbmgIFcclxuICAgICAgICBuZXR3b3JrVHlwZTogJ25vbmUnLCAgICAgIC8v572R57uc57G75Z6LXHJcbiAgICAgICAgaXNPbkZvcmVncm91bmQ6IHRydWUgICAgICAvL+W9k+WJjeaYr+WQpuaYr+WcqOWJjeWPsFxyXG4gICAgfTtcclxuXHJcbiAgICAvL+W6lOeUqOezu+e7n+S/oeaBr1xyXG4gICAgLy/phY3nva7mlofku7ZcclxuICAgIGNjLmZ4LlN0b3JhZ2VNZXNzYWdlID0gU3RvcmFnZU1lc3NhZ2U7XHJcbiAgICBjYy5meC5BdWRpb01hbmFnZXIgPSBBdWRpb01hbmFnZXI7XHJcbiAgICBjYy5meC5HYW1lQ29uZmlnID0gR2FtZUNvbmZpZztcclxuICAgIGNjLmZ4Lkh0dHBVdGlsID0gSHR0cFV0aWw7XHJcbiAgICBjYy5meC5HYW1lVG9vbCA9IEdhbWVUb29sO1xyXG4gICAgY2MuZnguTm90aWZpY2F0aW9ucyA9IE5vdGlmaWNhdGlvbnM7XHJcbiAgXHJcblxyXG4gICAgY2MuZnguU2hhcmVJbmZvID0ge1xyXG4gICAgICAgIHF1ZXJ5SWQgOiAtMSAgICAgICAgICAgICAgLy/liIbkuqtpZFxyXG4gICAgfTtcclxuXHJcbiAgICBjYy5meC5NZXNzYWdlID0ge1xyXG4gICAgICAgIGNvbnRyb2w6IFwiMTAwMDFcIiwgICAgICAgLy/kvKDpgJLmk43kvZzmjqfliLZcclxuICAgICAgICBzdGFydEdhbWU6XCIxMDAwMlwiLCAgICAgIC8v5Lyg6YCS5byA5aeL5bu6562RXHJcbiAgICAgICAgbmV4dDogXCIxMDAwM1wiICwgICAgICAgICAgLy/kvKDpgJLmiafooYzkuIvkuIDkuKrmoLzlrZDmtKrmsLTmtYHov4dcclxuICAgICAgICBjaGFuZ2VQYXRoOiBcIjEwMDA0XCIsICAgICAgIC8v5Lyg6YCS5pON5L2c5o6n5Yi2XHJcbiAgICAgICAgY2hhbmdlTWFwOiBcIjEwMDA1XCIsICAgICAgICAgLy/mlLnlj5jpgqPlnLDlm75cclxuICAgICAgICBuZXh0V2F0ZXI6IFwiMTAwMDZcIiAsICAgICAgICAgIC8v5Lyg6YCS5omn6KGM5LiL5LiA5Liq5qC85a2Q5rSq5rC05rWB6L+HXHJcbiAgICAgICAgYWRkRW5kOiBcIjEwMDA3XCIgLCAgICAgICAgICAvL+a3u+WKoOe7k+adn+eCuVxyXG4gICAgICAgIHNldERhdGE6IFwiMTAwMDhcIiAsICAgICAgICAgLy/kuIrkvKDliIbmlbBcclxuICAgICAgICBndWlkZU5leHQ6IFwiMTAwMDlcIiAsICAgICAgICAvL+W8leWvvOi/m+WFpeS4i+S4gOatpVxyXG4gICAgICAgIHNob3dSZXN1bHQ6IFwiMTAwMTBcIiwgICAgICAgICAgLy/lsZXnpLrmsrvmsLTnu5PmnpxcclxuICAgICAgICByZW1vdmVUaXA6IFwiMTAwMTFcIiAgICAgICAgICAvL+aJp+ihjOaSpOWbnuaIluiAheWQjumAgOWKqOS9nO+8jOenu+mZpOaPkOekulxyXG4gICAgfVxyXG5cclxuICAgIC8qXHJcbiAgICAgICAgKiDlrqLmiLfnq6/ln4vngrnliIbkuqvnsbvlnotcclxuICAgICovXHJcbiAgICBjYy5meC5CdXJpYWxTaGFyZVR5cGUgPSB7XHJcbiAgICAgICAgRGVmYXVsdCA6IFwiZGVmYXVsdFwiLCAgICAgICAgLy/pu5jorqTliIbkuqvnsbvlnoss5YiG5Lqr5Yiw576kXHJcbiAgICAgICAgSW52aXRlIDogXCJpbnZpdGVcIiwgICAgICAgICAgLy8g6YKA6K+35aW95Y+LXHJcblxyXG4gICAgICAgIERhaWx5SW52aXRlUm9vbUpvaW46J2ludml0ZV9qb2luX3Jvb20nLCAvL+mCgOivt+WlveWPi+WKoOWFpVxyXG4gICAgICAgIERhaWx5SW52aXRlRnJpZW5kIDogJ2ludml0ZV9mcmllbmQnLCAvLyDml6XluLjpgoDor7flpb3lj4tcclxuICAgICAgICBEYWlseUludml0ZUdyb3VwIDogJ2ludmF0ZV9ncm91cCcsIC8vIOaXpeW4uOWIhuS6q+e+pFxyXG4gICAgICAgIERhaWx5SW52aXRlR3JvdXBBbGl2ZTogJ2ludmF0ZV9hbGl2ZScsIC8v5pel5bi45YiG5Lqr576k5aSN5rS7XHJcbiAgICAgICAgRGFpbHlJbnZpdGVHcm91cFJld2FyZDogJ2ludmF0ZV9yZXdhcmVkJywvL+WIhuS6q+WlluWKsee/u+WAjVxyXG4gICAgICAgIERhaWx5SW52aXRlR3JvdXBCb3g6ICdpbnZhdGVfYm94JywgIC8v5a6d566x5YiG5Lqr5aWW5YqxXHJcbiAgICAgICAgRGFpbHlJbnZpdGVHcm91cEJhbGw6ICdpbnZhdGVfYmFsbCcsICAvL+WIhuS6q+mihuWPlueQg+eQg1xyXG5cclxuICAgICAgICBNYXRjaFJlc3VsdCA6ICdtYXRjaFJlc3VsdCcsICAvLyDmr5TotZvnu5PnrpfliIbkuqtcclxuICAgICAgICBNYXRjaEZpeDU6ICdNYXRjaEZpeDUnLCAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gNeWFg+e6ouWMhei1m1xyXG4gICAgICAgIE1hdGNoRml4MjA6ICdNYXRjaEZpeDIwJywgICAgICAgICAgICAgICAgICAgICAgICAvLyAyMOWFg+e6ouWMhei1m1xyXG4gICAgICAgIE1hdGNoRml4MTAwOiAnTWF0Y2hGaXgxMDAnLCAgICAgICAgICAgICAgICAgICAgICAvLyAxMDDlhYPnuqLljIXotZtcclxuICAgICAgICBNYXRjaEZpeDUwMDogJ01hdGNoRml4NTAwJywgICAgICAgICAgICAgICAgICAgICAgLy8gNTAw5YWD57qi5YyF6LWbXHJcbiAgICAgICAgTmV3ZXJSZWRFbnZlbG9wZTogJ25ld2VyUmVkRW52ZWxvcGUnLCAgICAgICAgICAgIC8vIOaWsOaJi+e6ouWMhVxyXG4gICAgICAgIENvaW5Sb29tUmVzdWx0OiAnY29pblJvb21SZXN1bHQnLCAgICAgICAgICAgICAgICAvLyDph5HluIHmoYznu5PnrpdcclxuICAgICAgICBIaWdoUmF0ZSA6IFwiaGlnaFJhdGVcIiwvL+mrmOWAjeWIhuS6q1xyXG4gICAgICAgIENvaW5Sb29tV2luU3RyZWFrOiAnY29pblJvb21XaW5TdHJlYWsnLCAgICAgICAgIC8vIOi/nuiDnFxyXG4gICAgICAgIENvaW5Sb29tQmFua3J1cHRjeTE6ICdjb2luUm9vbUJhbmtydXB0Y3kxJywgICAgICAgICAvLyDph5HluIHmoYznoLTkuqdcclxuICAgICAgICBDb2luUm9vbUJhbmtydXB0Y3kyOiAnY29pblJvb21CYW5rcnVwdGN5MicsICAgICAgICAgLy8g6YeR5biB5qGM56C05LqnXHJcbiAgICAgICAgQ29pblJvb21CYW5rcnVwdGN5MzogJ2NvaW5Sb29tQmFua3J1cHRjeTMnLCAgICAgICAgIC8vIOmHkeW4geahjOegtOS6p1xyXG4gICAgfTtcclxuXHJcbiAgICAvKlxyXG4gICAgICog5YiG5Lqr5Yiw5ZOq5YS/57uZ5aWW5YqxIGdyb3VwIGZyaW5lZCBhbGxcclxuICAgICAqL1xyXG4gICAgY2MuZnguU2hhcmVXaGVyZVJld2FyZCA9IHtcclxuICAgICAgICBHcm91cCA6XCJncm91cFwiLCAvL+W+ruS/oee+pFxyXG4gICAgICAgIEZyaWVuZCA6IFwiZnJpZW5kXCIsLy/lpb3lj4tcclxuICAgICAgICBBbGwgOiBcImFsbFwiLCAvL+S4jeWMuuWIhlxyXG4gICAgfTtcclxuXHJcbiAgICAvL+eUqOS6juWtmOWCqOa2iOaBr+eahElEXHJcbiAgICBjYy5meC5zdG9yYWdlVHlwZSA9IGNjLkVudW0oe1xyXG5cdCAgICBzdG9yYWdlVHlwZUN1c3RvbTogMTAwMDEwMSwgLy/nlKjkuo7lrZjlgqjlhbPljaHnrYnnuqdcclxuXHR9KTtcclxuXHJcbiAgICAvL+eUqOS6juWtmOWCqOaPkOekuuivrSAg5oyJ54Wn5q2l6aqk5o+Q56S6XHJcbiAgICBjYy5meC50aXBUeXBlID0gY2MuRW51bSh7XHJcbiAgICAgICAgdGlwT25lOiAn56We5Yac5rCP5Zue5Yiw5a625Lit77yM5byA5aeL5pW055CG5LuK5aSp5pS26ZuG5p2l55qE54mp5ZOB44CC5b2T5LuW56ys5LiA5qyh5ou/5Ye65oiW6K+05Ye65LiA56eN5qSN54mp5pe277yM6K+35ZGK6K+J5LuW6L+Z5piv5paw5qSN54mp44CCJyxcclxuICAgICAgICB0aXBUd286ICflpoLmnpzku5bmi7/lh7rmiJbor7Tlh7rnmoTmpI3niankvaDku4rlpKnnnIvliLDov4fvvIzor7flkYror4nku5bkuIrmrKHmmK/nnIvliLDnmoTvvJvlpoLmnpzkvaDlkKzku5bor7Tov4fvvIzliJnor7flkYror4nku5bkuIrmrKHmmK/lkKzliLDnmoTjgIInLCAvL+eUqOS6juWtmOWCqOWFs+WNoeetiee6p1xyXG4gICAgICAgIHRpcEVyck5ldzogJ+i/meaYr+i/meWxgOa4uOaIj+esrOS4gOasoeWHuueOsHvmpI3nial9JyxcclxuICAgICAgICB0aXBFcnJPbGQ6ICd75qSN54mpfeWImuaJjeWHuueOsOi/h+WRoicsXHJcbiAgICAgICAgdGlwRXJySGVhcjogJ+S4iuasoemBh+WIsHvmpI3nial95pe277yM5Ly85LmO5LiN5piv5ZCs5Yiw55qE5ZCnJyxcclxuICAgICAgICB0aXBFcnJTZWU6ICfkuIrmrKHpgYfliLB75qSN54mpfeaXtu+8jOS8vOS5juS4jeaYr+eci+WIsOeahOWQpycsXHJcbiAgICAgICAgdGlwRXJyTGFzdDogJ+S5i+WJjeehruWunueci+WIsOi/h3vmpI3nial977yM5L2G5pyA6L+R5LiA5qyh5Ly85LmO5LiN5piv55yL5Yiw55qE5ZGiJyxcclxuXHJcbiAgICB9KTtcclxuXHJcbn07Il19 -======= -//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImFzc2V0c1xcU2NyaXB0XFxEeW5hbWljQXRsYXNNYW5hZ2VyLmpzIl0sIm5hbWVzIjpbImNjIiwiQ2xhc3MiLCJDb21wb25lbnQiLCJwcm9wZXJ0aWVzIiwib25Mb2FkIiwiZHluYW1pY0F0bGFzTWFuYWdlciIsImVuYWJsZWQiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUFBLEVBQUUsQ0FBQ0MsS0FBSyxDQUFDO0VBQ0wsV0FBU0QsRUFBRSxDQUFDRSxTQUFTO0VBRXJCQyxVQUFVLEVBQUUsQ0FDWixDQUFDO0VBRURDLE1BQU0sV0FBQUEsT0FBQSxFQUFJO0lBQ05KLEVBQUUsQ0FBQ0ssbUJBQW1CLENBQUNDLE9BQU8sR0FBRyxLQUFLO0VBQzFDO0FBQ0osQ0FBQyxDQUFDIiwic291cmNlUm9vdCI6Ii8iLCJzb3VyY2VzQ29udGVudCI6WyJjYy5DbGFzcyh7XHJcbiAgICBleHRlbmRzOiBjYy5Db21wb25lbnQsXHJcblxyXG4gICAgcHJvcGVydGllczoge1xyXG4gICAgfSxcclxuXHJcbiAgICBvbkxvYWQgKCkge1xyXG4gICAgICAgIGNjLmR5bmFtaWNBdGxhc01hbmFnZXIuZW5hYmxlZCA9IGZhbHNlO1xyXG4gICAgfSxcclxufSk7XHJcbiJdfQ== ->>>>>>> 0a31a7a5abc2c505bf743aa596e1c765a0405152 //------QC-SOURCE-SPLIT------ (function() { var nodeEnv = typeof require !== 'undefined' && typeof process !== 'undefined'; var __module = nodeEnv ? module : {exports:{}}; -<<<<<<< HEAD - var __filename = 'preview-scripts/assets/Script/module/RankList/List.js'; + var __filename = 'preview-scripts/assets/Script/lq_base/data/lq_const.js'; var __require = nodeEnv ? function (request) { return cc.require(request); } : function (request) { @@ -4567,625 +2604,148 @@ cc._RF.pop(); }; function __define (exports, require, module) { if (!nodeEnv) {__quick_compile_project__.registerModule(__filename, module);}"use strict"; -cc._RF.push(module, 'd5421HgLShFKIjj5f18m1mi', 'List'); -// Script/module/RankList/List.ts +cc._RF.push(module, '98309gPXUxEF6zBe9e75Knb', 'lq_const'); +// Script/lq_base/data/lq_const.ts -"use strict"; -// Learn TypeScript: -// - https://docs.cocos.com/creator/manual/en/scripting/typescript.html -// Learn Attribute: -// - https://docs.cocos.com/creator/manual/en/scripting/reference/attributes.html -// Learn life-cycle callbacks: -// - https://docs.cocos.com/creator/manual/en/scripting/life-cycle-callbacks.html -var __extends = (this && this.__extends) || (function () { - var extendStatics = function (d, b) { - extendStatics = Object.setPrototypeOf || - ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) || - function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; }; - return extendStatics(d, b); - }; - return function (d, b) { - extendStatics(d, b); - function __() { this.constructor = d; } - d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); - }; -})(); -var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) { - var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; - if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc); - else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; - return c > 3 && r && Object.defineProperty(target, key, r), r; -}; -Object.defineProperty(exports, "__esModule", { value: true }); -exports.StartAxisType = exports.ListType = void 0; -var ItemRender_1 = require("./ItemRender"); -var _a = cc._decorator, ccclass = _a.ccclass, property = _a.property; -/**列表排列方式 */ -var ListType; -(function (ListType) { - /**水平排列 */ - ListType[ListType["Horizontal"] = 1] = "Horizontal"; - /**垂直排列 */ - ListType[ListType["Vertical"] = 2] = "Vertical"; - /**网格排列 */ - ListType[ListType["Grid"] = 3] = "Grid"; -})(ListType = exports.ListType || (exports.ListType = {})); -/**网格布局中的方向 */ -var StartAxisType; -(function (StartAxisType) { - /**水平排列 */ - StartAxisType[StartAxisType["Horizontal"] = 1] = "Horizontal"; - /**垂直排列 */ - StartAxisType[StartAxisType["Vertical"] = 2] = "Vertical"; -})(StartAxisType = exports.StartAxisType || (exports.StartAxisType = {})); -/** - * 列表 - * 根据cocos_example的listView改动而来 - * @author chenkai 2020.7.8 - * @example - * 1.创建cocos的ScrollView组件,添加List,设置List属性即可 - * - */ -var List = /** @class */ (function (_super) { - __extends(List, _super); - function List() { - var _this = _super !== null && _super.apply(this, arguments) || this; - //==================== 属性面板 ========================= - /**列表选项 */ - _this.itemRender = null; - /**排列方式 */ - _this.type = ListType.Vertical; - /**网格布局中的方向 */ - _this.startAxis = StartAxisType.Horizontal; - /**列表项之间X间隔 */ - _this.spaceX = 0; - /**列表项之间Y间隔 */ - _this.spaceY = 0; - /**上间距 */ - _this.padding_top = 0; - /**下间距 */ - _this.padding_buttom = 0; - /**左间距 */ - _this.padding_left = 0; - _this._padding = 0; - /**右间距 */ - _this.padding_right = 0; - //====================== 滚动容器 =============================== - /**列表滚动容器 */ - _this.scrollView = null; - /**scrollView的内容容器 */ - _this.content = null; - //======================== 列表项 =========================== - /**列表项数据 */ - _this.itemDataList = []; - /**应创建的实例数量 */ - _this.spawnCount = 0; - /**存放列表项实例的数组 */ - _this.itemList = []; - /**item的高度 */ - _this.itemHeight = 0; - /**item的宽度 */ - _this.itemWidth = 0; - /**存放不再使用中的列表项 */ - _this.itemPool = []; - //======================= 计算参数 ========================== - /**距离scrollView中心点的距离,超过这个距离的item会被重置,一般设置为 scrollVIew.height/2 + item.heigt/2 + space,因为这个距离item正好超出scrollView显示范围 */ - _this.halfScrollView = 0; - /**上一次content的X值,用于和现在content的X值比较,得出是向左还是向右滚动 */ - _this.lastContentPosX = 0; - /**上一次content的Y值,用于和现在content的Y值比较,得出是向上还是向下滚动 */ - _this.lastContentPosY = 0; - /**网格行数 */ - _this.gridRow = 0; - /**网格列数 */ - _this.gridCol = 0; - /**刷新时间,单位s */ - _this.updateTimer = 0; - /**刷新间隔,单位s */ - _this.updateInterval = 0.1; - /**是否滚动容器 */ - _this.bScrolling = false; - /**刷新的函数 */ - _this.updateFun = function () { }; - return _this; - } - List.prototype.onLoad = function () { - this.itemHeight = this.itemRender.height; - this.itemWidth = this.itemRender.width; - this.scrollView = this.node.getComponent(cc.ScrollView); - this.content = this.scrollView.content; - this.content.anchorX = 0; - this.content.anchorY = 1; - this.content.removeAllChildren(); - this.scrollView.node.on("scrolling", this.onScrolling, this); - }; - /** - * 列表数据 (列表数据复制使用,如果列表数据改变,则需要重新设置一遍数据) - * @param itemDataList item数据列表 - */ - List.prototype.setData = function (itemDataList) { - this.itemDataList = itemDataList.slice(); - this.updateContent(); - }; - /**计算列表的各项参数 */ - List.prototype.countListParam = function () { - var dataLen = this.itemDataList.length; - if (this.type == ListType.Vertical) { - this.scrollView.horizontal = false; - this.scrollView.vertical = true; - this.content.width = this.content.parent.width; - this.content.height = dataLen * this.itemHeight + (dataLen - 1) * this.spaceY + this.padding_top + this.padding_buttom; - this.spawnCount = Math.round(this.scrollView.node.height / (this.itemHeight + this.spaceY)) + 2; //计算创建的item实例数量,比当前scrollView容器能放下的item数量再加上2个 - this.halfScrollView = this.scrollView.node.height / 2 + this.itemHeight / 2 + this.spaceY; //计算bufferZone,item的显示范围 - this.updateFun = this.updateV; - } - else if (this.type == ListType.Horizontal) { - this.scrollView.horizontal = true; - this.scrollView.vertical = false; - this.content.width = dataLen * this.itemWidth + (dataLen - 1) * this.spaceX + this.padding_left + this.padding_right; - this.content.height = this.content.parent.height; - this.spawnCount = Math.round(this.scrollView.node.width / (this.itemWidth + this.spaceX)) + 2; - this.halfScrollView = this.scrollView.node.width / 2 + this.itemWidth / 2 + this.spaceX; - this.updateFun = this.udpateH; - } - else if (this.type == ListType.Grid) { - if (this.startAxis == StartAxisType.Vertical) { - this.scrollView.horizontal = false; - this.scrollView.vertical = true; - this.content.width = this.content.parent.width; - //如果left和right间隔过大,导致放不下一个item,则left和right都设置为0,相当于不生效 - if (this.padding_left + this.padding_right + this.itemWidth + this.spaceX > this.content.width) { - this.padding_left = 0; - this.padding_right = 0; - console.error("padding_left或padding_right过大"); - } - this.gridCol = Math.floor((this.content.width - this.padding_left - this.padding_right) / (this.itemWidth + this.spaceX)); - this.gridRow = Math.ceil(dataLen / this.gridCol); - this.content.height = this.gridRow * this.itemHeight + (this.gridRow - 1) * this.spaceY + this.padding_top + this.padding_buttom; - this.spawnCount = Math.round(this.scrollView.node.height / (this.itemHeight + this.spaceY)) * this.gridCol + this.gridCol * 2; - this.halfScrollView = this.scrollView.node.height / 2 + this.itemHeight / 2 + this.spaceY; - this.updateFun = this.updateGrid_V; - } - else if (this.startAxis == StartAxisType.Horizontal) { - this.scrollView.horizontal = true; - this.scrollView.vertical = false; - //计算高间隔 - this.content.height = this.content.parent.height; - //如果left和right间隔过大,导致放不下一个item,则left和right都设置为0,相当于不生效 - if (this.padding_top + this.padding_buttom + this.itemHeight + this.spaceY > this.content.height) { - this.padding_top = 0; - this.padding_buttom = 0; - console.error("padding_top或padding_buttom过大"); - } - this.gridRow = Math.floor((this.content.height - this.padding_top - this.padding_buttom) / (this.itemHeight + this.spaceY)); - this.gridCol = Math.ceil(dataLen / this.gridRow); - this.content.width = this.gridCol * this.itemWidth + (this.gridCol - 1) * this.spaceX + this.padding_left + this.padding_right; - this.spawnCount = Math.round(this.scrollView.node.width / (this.itemWidth + this.spaceX)) * this.gridRow + this.gridRow * 2; - this.halfScrollView = this.scrollView.node.width / 2 + this.itemWidth / 2 + this.spaceX; - this.updateFun = this.updateGrid_H; - } - } - }; - /** - * 创建列表 - * @param startIndex 起始显示的数据索引 0表示第一项 - * @param offset scrollView偏移量 - */ - List.prototype.createList = function (startIndex, offset) { - //当需要显示的数据长度 > 虚拟列表长度, 删除最末尾几个数据时,列表需要重置位置到scrollView最底端 - if (this.itemDataList.length > this.spawnCount && (startIndex + this.spawnCount - 1) >= this.itemDataList.length) { - startIndex = this.itemDataList.length - this.spawnCount; - offset = this.scrollView.getMaxScrollOffset(); - //当需要显示的数据长度 <= 虚拟列表长度, 隐藏多余的虚拟列表项 - } - else if (this.itemDataList.length <= this.spawnCount) { - startIndex = 0; - } - for (var i = 0; i < this.spawnCount; i++) { - var item = void 0; - //需要显示的数据索引在数据范围内,则item实例显示出来 - if (i + startIndex < this.itemDataList.length) { - if (this.itemList[i] == null) { - item = this.getItem(); - this.itemList.push(item); - item.parent = this.content; - } - else { - item = this.itemList[i]; - } - //需要显示的数据索引超过了数据范围,则item实例隐藏起来 - } - else { - //item实例数量 > 需要显示的数据量 - if (this.itemList.length > (this.itemDataList.length - startIndex)) { - item = this.itemList.pop(); - item.removeFromParent(); - this.itemPool.push(item); - } - continue; - } - var itemRender = item.getComponent(ItemRender_1.default); - itemRender.itemIndex = i + startIndex; - itemRender.data = this.itemDataList[i + startIndex]; - itemRender.dataChanged(); - if (this.type == ListType.Vertical) { - //因为content的锚点X是0,所以item的x值是content.with/2表示居中,锚点Y是1,所以item的y值从content顶部向下是0到负无穷。所以item.y= -item.height/2时,是在content的顶部。 - item.setPosition(this.content.width / 2, -item.height * (0.5 + i + startIndex) - this.spaceY * (i + startIndex) - this.padding_top); - } - else if (this.type == ListType.Horizontal) { - item.setPosition(item.width * (0.5 + i + startIndex) + this.spaceX * (i + startIndex) + this.padding_left, -this.content.height / 2); - } - else if (this.type == ListType.Grid) { - if (this.startAxis == StartAxisType.Vertical) { - var row = Math.floor((i + startIndex) / this.gridCol); - var col = (i + startIndex) % this.gridCol; - item.setPosition(item.width * (0.5 + col) + this.spaceX * col + this.padding_left, -item.height * (0.5 + row) - this.spaceY * row - this.padding_top); - item.opacity = 255; - } - else if (this.startAxis == StartAxisType.Horizontal) { - var row = (i + startIndex) % this.gridRow; - var col = Math.floor((i + startIndex) / this.gridRow); - item.setPosition(item.width * (0.5 + col) + this.spaceX * col + this.padding_left, -item.height * (0.5 + row) - this.spaceY * row - this.padding_top); - item.opacity = 255; - } - } - } - this.scrollView.scrollToOffset(offset); - }; - /**获取一个列表项 */ - List.prototype.getItem = function () { - if (this.itemPool.length == 0) { - return cc.instantiate(this.itemRender); - } - else { - return this.itemPool.pop(); - } - }; - List.prototype.update = function (dt) { - if (this.bScrolling == false) { - return; - } - this.updateTimer += dt; - if (this.updateTimer < this.updateInterval) { - return; - } - this.updateTimer = 0; - this.bScrolling = false; - this.updateFun(); - }; - List.prototype.onScrolling = function () { - this.bScrolling = true; - }; - /**垂直排列 */ - List.prototype.updateV = function () { - var items = this.itemList; - var item; - var bufferZone = this.halfScrollView; - var isUp = this.scrollView.content.y > this.lastContentPosY; - var offset = (this.itemHeight + this.spaceY) * items.length; - for (var i = 0; i < items.length; i++) { - item = items[i]; - var viewPos = this.getPositionInView(item); - if (isUp) { - //item上滑时,超出了scrollView上边界,将item移动到下方复用,item移动到下方的位置必须不超过content的下边界 - if (viewPos.y > bufferZone && item.y - offset - this.padding_buttom > -this.content.height) { - var itemRender = item.getComponent(ItemRender_1.default); - var itemIndex = itemRender.itemIndex + items.length; - itemRender.itemIndex = itemIndex; - itemRender.data = this.itemDataList[itemIndex]; - itemRender.dataChanged(); - item.y = item.y - offset; - } - } - else { - //item下滑时,超出了scrollView下边界,将item移动到上方复用,item移动到上方的位置必须不超过content的上边界 - if (viewPos.y < -bufferZone && item.y + offset + this.padding_top < 0) { - var itemRender = item.getComponent(ItemRender_1.default); - var itemIndex = itemRender.itemIndex - items.length; - itemRender.itemIndex = itemIndex; - itemRender.data = this.itemDataList[itemIndex]; - itemRender.dataChanged(); - item.y = item.y + offset; - } - } - } - this.lastContentPosY = this.scrollView.content.y; - }; - /**水平排列 */ - List.prototype.udpateH = function () { - var items = this.itemList; - var item; - var bufferZone = this.halfScrollView; - var isRight = this.scrollView.content.x > this.lastContentPosX; - var offset = (this.itemWidth + this.spaceX) * items.length; - for (var i = 0; i < items.length; i++) { - item = items[i]; - var viewPos = this.getPositionInView(item); - if (isRight) { - //item右滑时,超出了scrollView右边界,将item移动到左方复用,item移动到左方的位置必须不超过content的左边界 - if (viewPos.x > bufferZone && item.x - offset - this.padding_left > 0) { - var itemRender = item.getComponent(ItemRender_1.default); - var itemIndex = itemRender.itemIndex - items.length; - itemRender.itemIndex = itemIndex; - itemRender.data = this.itemDataList[itemIndex]; - itemRender.dataChanged(); - item.x = item.x - offset; - } - } - else { - //item左滑时,超出了scrollView左边界,将item移动到右方复用,item移动到右方的位置必须不超过content的右边界 - if (viewPos.x < -bufferZone && item.x + offset + this.padding_right < this.content.width) { - var itemRender = item.getComponent(ItemRender_1.default); - var itemIndex = itemRender.itemIndex + items.length; - itemRender.itemIndex = itemIndex; - itemRender.data = this.itemDataList[itemIndex]; - itemRender.dataChanged(); - item.x = item.x + offset; - } - } - } - this.lastContentPosX = this.scrollView.content.x; - }; - /**网格垂直排列 */ - List.prototype.updateGrid_V = function () { - var items = this.itemList; - var item; - var bufferZone = this.halfScrollView; - var isUp = this.scrollView.content.y > this.lastContentPosY; - var offset = (this.itemHeight + this.spaceY) * (this.spawnCount / this.gridCol); - for (var i = 0; i < items.length; i++) { - item = items[i]; - var viewPos = this.getPositionInView(item); - if (isUp) { - //item上滑时,超出了scrollView上边界,将item移动到下方复用,item移动到下方的位置必须不超过content的下边界 - if (viewPos.y > bufferZone && item.y - offset - this.padding_buttom > -this.content.height) { - var itemRender = item.getComponent(ItemRender_1.default); - var itemIndex = itemRender.itemIndex + (this.spawnCount / this.gridCol) * this.gridCol; - if (this.itemDataList[itemIndex] != null) { - item.y = item.y - offset; - itemRender.itemIndex = itemIndex; - itemRender.data = this.itemDataList[itemIndex]; - itemRender.dataChanged(); - item.opacity = 255; - } - else { - item.y = item.y - offset; - itemRender.itemIndex = itemIndex; - item.opacity = 0; - } - } - } - else { //item下滑时,超出了scrollView下边界,将item移动到上方复用,item移动到上方的位置必须不超过content的上边界 - if (viewPos.y < -bufferZone && item.y + offset + this.padding_top < 0) { - var itemRender = item.getComponent(ItemRender_1.default); - var itemIndex = itemRender.itemIndex - (this.spawnCount / this.gridCol) * this.gridCol; - if (this.itemDataList[itemIndex] != null) { - item.y = item.y + offset; - itemRender.itemIndex = itemIndex; - itemRender.data = this.itemDataList[itemIndex]; - itemRender.dataChanged(); - item.opacity = 255; - } - else { - item.y = item.y + offset; - itemRender.itemIndex = itemIndex; - item.opacity = 0; - } - } - } - } - this.lastContentPosY = this.scrollView.content.y; - }; - /**网格水平排列 */ - List.prototype.updateGrid_H = function () { - var items = this.itemList; - var item; - var bufferZone = this.halfScrollView; - var isRight = this.scrollView.content.x > this.lastContentPosX; - var offset = (this.itemWidth + this.spaceX) * (this.spawnCount / this.gridRow); - for (var i = 0; i < items.length; i++) { - item = items[i]; - var viewPos = this.getPositionInView(item); - if (isRight) { - //item右滑时,超出了scrollView右边界,将item移动到左方复用,item移动到左方的位置必须不超过content的左边界 - if (viewPos.x > bufferZone && item.x - offset - this.padding_left > 0) { - var itemRender = item.getComponent(ItemRender_1.default); - var itemIndex = itemRender.itemIndex - (this.spawnCount / this.gridRow) * this.gridRow; - if (this.itemDataList[itemIndex] != null) { - item.x = item.x - offset; - itemRender.itemIndex = itemIndex; - itemRender.data = this.itemDataList[itemIndex]; - itemRender.dataChanged(); - item.opacity = 255; - } - else { - item.x = item.x - offset; - itemRender.itemIndex = itemIndex; - item.opacity = 0; - } - } - } - else { - //item左滑时,超出了scrollView左边界,将item移动到右方复用,item移动到右方的位置必须不超过content的右边界 - if (viewPos.x < -bufferZone && item.x + offset + this.padding_right < this.content.width) { - var itemRender = item.getComponent(ItemRender_1.default); - var itemIndex = itemRender.itemIndex + (this.spawnCount / this.gridRow) * this.gridRow; - if (this.itemDataList[itemIndex] != null) { - item.x = item.x + offset; - itemRender.itemIndex = itemIndex; - itemRender.data = this.itemDataList[itemIndex]; - itemRender.dataChanged(); - item.opacity = 255; - } - else { - item.x = item.x + offset; - itemRender.itemIndex = itemIndex; - item.opacity = 0; - } - } - } - } - this.lastContentPosX = this.scrollView.content.x; - }; - /**获取item在scrollView的局部坐标 */ - List.prototype.getPositionInView = function (item) { - var worldPos = item.parent.convertToWorldSpaceAR(item.position); - var viewPos = this.scrollView.node.convertToNodeSpaceAR(worldPos); - return viewPos; - }; - /**获取列表数据 */ - List.prototype.getListData = function () { - return this.itemDataList; - }; - /** - * 增加一项数据到列表的末尾 - * @param data 数据 - */ - List.prototype.addItem = function (data) { - this.itemDataList.push(data); - this.updateContent(); - }; - /** - * 增加一项数据到列表指定位置 - * @param index 位置,0表示第1项 - * @param data 数据 - */ - List.prototype.addItemAt = function (index, data) { - if (this.itemDataList[index] != null || this.itemDataList.length == index) { - this.itemDataList.splice(index, 1, data); - this.updateContent(); - } - }; - /** - * 删除一项数据 - * @param index 删除项的位置 ,0表示第1项 - */ - List.prototype.deleteItem = function (index) { - if (this.itemDataList[index] != null) { - this.itemDataList.splice(index, 1); - this.updateContent(); - } - }; - /** - * 改变一项数据 - * @param index 位置,0表示第1项 - * @param data 替换的数据 - */ - List.prototype.changeItem = function (index, data) { - if (this.itemDataList[index] != null) { - this.itemDataList[index] = data; - this.updateContent(); - } - }; - /**获取第一个Item的位置 */ - List.prototype.updateContent = function () { - //显示列表实例为0个 - if (this.itemList.length == 0) { - this.countListParam(); - this.createList(0, new cc.Vec2(0, 0)); - //显示列表的实例不为0个,则需要重新排列item实例数组 - } - else { - if (this.type == ListType.Vertical) { - this.itemList.sort(function (a, b) { - return b.y - a.y; - }); - } - else if (this.type == ListType.Horizontal) { - this.itemList.sort(function (a, b) { - return a.x - b.x; - }); - } - else if (this.type == ListType.Grid) { - if (this.startAxis == StartAxisType.Vertical) { - this.itemList.sort(function (a, b) { - return a.x - b.x; - }); - this.itemList.sort(function (a, b) { - return b.y - a.y; - }); - } - else if (this.startAxis == StartAxisType.Horizontal) { - this.itemList.sort(function (a, b) { - return b.y - a.y; - }); - this.itemList.sort(function (a, b) { - return a.x - b.x; - }); - } - } - this.countListParam(); - //获取第一个item实例需要显示的数据索引 - var startIndex = this.itemList[0].getComponent(ItemRender_1.default).itemIndex; - if (this.type == ListType.Grid && this.startAxis == StartAxisType.Vertical) { - startIndex += (startIndex + this.spawnCount) % this.gridCol; - } - else if (this.type == ListType.Grid && this.startAxis == StartAxisType.Horizontal) { - startIndex += (startIndex + this.spawnCount) % this.gridRow; - } - //getScrollOffset()和scrollToOffset()的x值是相反的 - var offset = this.scrollView.getScrollOffset(); - offset.x = -offset.x; - this.createList(startIndex, offset); - } - }; - /**销毁 */ - List.prototype.onDestroy = function () { - //清理列表项 - var len = this.itemList.length; - for (var i = 0; i < len; i++) { - if (cc.isValid(this.itemList[i], true)) { - this.itemList[i].destroy(); - } - } - this.itemList.length = 0; - //清理对象池 - len = this.itemPool.length; - for (var i = 0; i < len; i++) { - if (cc.isValid(this.itemPool[i], true)) { - this.itemPool[i].destroy(); - } - } - this.itemPool.length = 0; - //清理列表数据 - this.itemDataList.length = 0; - }; - __decorate([ - property({ type: cc.Node, tooltip: "列表项" }) - ], List.prototype, "itemRender", void 0); - __decorate([ - property({ type: cc.Enum(ListType), tooltip: "排列方式" }) - ], List.prototype, "type", void 0); - __decorate([ - property({ type: cc.Enum(StartAxisType), tooltip: "网格布局中的方向", visible: function () { return this.type == ListType.Grid; } }) - ], List.prototype, "startAxis", void 0); - __decorate([ - property({ type: cc.Integer, tooltip: "列表项X间隔", visible: function () { return (this.type == ListType.Horizontal || this.type == ListType.Grid); } }) - ], List.prototype, "spaceX", void 0); - __decorate([ - property({ type: cc.Integer, tooltip: "列表项Y间隔", visible: function () { return this.type == ListType.Vertical || this.type == ListType.Grid; } }) - ], List.prototype, "spaceY", void 0); - __decorate([ - property({ type: cc.Integer, tooltip: "上间距", visible: function () { return (this.type == ListType.Vertical || this.type == ListType.Grid); } }) - ], List.prototype, "padding_top", void 0); - __decorate([ - property({ type: cc.Integer, tooltip: "下间距", visible: function () { return (this.type == ListType.Vertical || this.type == ListType.Grid); } }) - ], List.prototype, "padding_buttom", void 0); - __decorate([ - property({ type: cc.Integer, tooltip: "左间距", visible: function () { return (this.type == ListType.Horizontal || this.type == ListType.Grid); } }) - ], List.prototype, "padding_left", void 0); - __decorate([ - property(cc.Integer) - ], List.prototype, "_padding", void 0); - __decorate([ - property({ type: cc.Integer, tooltip: "右间距", visible: function () { return (this.type == ListType.Horizontal || this.type == ListType.Grid); } }) - ], List.prototype, "padding_right", void 0); - List = __decorate([ - ccclass - ], List); - return List; -}(cc.Component)); -exports.default = List; +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.LQConst = exports.LQOperateType = exports.LQLevelStatus = exports.LQAdErrStr = exports.LQCallAd = exports.LQCallBase = exports.LQAnalysisTag = exports.LQByteDanceType = exports.LQPlatformType = exports.LQHttpDataType = exports.LQHttpRequestType = exports.LQEasing = exports.LQCollideStatus = exports.LQFollowTargetMode = exports.LQCollideShape = exports.LQBulletEmitterStatus = exports.LQRecordStatus = void 0; +var Vec2 = cc.Vec2; +var LQRecordStatus; +(function (LQRecordStatus) { + LQRecordStatus[LQRecordStatus["Idle"] = 0] = "Idle"; + LQRecordStatus[LQRecordStatus["Start"] = 1] = "Start"; + LQRecordStatus[LQRecordStatus["Pause"] = 2] = "Pause"; +})(LQRecordStatus = exports.LQRecordStatus || (exports.LQRecordStatus = {})); +var LQBulletEmitterStatus; +(function (LQBulletEmitterStatus) { + LQBulletEmitterStatus[LQBulletEmitterStatus["Idle"] = 0] = "Idle"; + LQBulletEmitterStatus[LQBulletEmitterStatus["Start"] = 1] = "Start"; + LQBulletEmitterStatus[LQBulletEmitterStatus["End"] = 2] = "End"; +})(LQBulletEmitterStatus = exports.LQBulletEmitterStatus || (exports.LQBulletEmitterStatus = {})); +var LQCollideShape; +(function (LQCollideShape) { + LQCollideShape[LQCollideShape["Rect"] = 1] = "Rect"; + LQCollideShape[LQCollideShape["Circle"] = 2] = "Circle"; + LQCollideShape[LQCollideShape["Polygon"] = 3] = "Polygon"; +})(LQCollideShape = exports.LQCollideShape || (exports.LQCollideShape = {})); +var LQFollowTargetMode; +(function (LQFollowTargetMode) { + LQFollowTargetMode[LQFollowTargetMode["Always"] = 0] = "Always"; + LQFollowTargetMode[LQFollowTargetMode["Once"] = 1] = "Once"; + LQFollowTargetMode[LQFollowTargetMode["Pass"] = 2] = "Pass"; +})(LQFollowTargetMode = exports.LQFollowTargetMode || (exports.LQFollowTargetMode = {})); +var LQCollideStatus; +(function (LQCollideStatus) { + LQCollideStatus[LQCollideStatus["Idle"] = 0] = "Idle"; + LQCollideStatus[LQCollideStatus["Live"] = 1] = "Live"; +})(LQCollideStatus = exports.LQCollideStatus || (exports.LQCollideStatus = {})); +var LQEasing; +(function (LQEasing) { + LQEasing["BackIn"] = "backIn"; + LQEasing["BackOut"] = "backOut"; + LQEasing["quadIn"] = "quadIn"; + LQEasing["quadOut"] = "quadOut"; + LQEasing["quadInOut"] = "quadInOut"; + LQEasing["cubicIn"] = "cubicIn"; + LQEasing["expoOut"] = "expoOut"; +})(LQEasing = exports.LQEasing || (exports.LQEasing = {})); +var LQHttpRequestType; +(function (LQHttpRequestType) { + LQHttpRequestType["Get"] = "get"; + LQHttpRequestType["Post"] = "post"; +})(LQHttpRequestType = exports.LQHttpRequestType || (exports.LQHttpRequestType = {})); +var LQHttpDataType; +(function (LQHttpDataType) { + LQHttpDataType[LQHttpDataType["Text"] = 0] = "Text"; + LQHttpDataType[LQHttpDataType["Binary"] = 1] = "Binary"; +})(LQHttpDataType = exports.LQHttpDataType || (exports.LQHttpDataType = {})); +var LQPlatformType; +(function (LQPlatformType) { + LQPlatformType["unknown"] = "\u672A\u77E5\u5E73\u53F0"; + LQPlatformType["all"] = "\u5168\u5E73\u53F0"; + LQPlatformType["wx"] = "\u5FAE\u4FE1"; + LQPlatformType["tt"] = "\u5B57\u8282\u8DF3\u52A8"; + LQPlatformType["oppo"] = "oppo"; + LQPlatformType["vivo"] = "vivo"; + LQPlatformType["qq"] = "qq"; + LQPlatformType["baidu"] = "\u767E\u5EA6"; + LQPlatformType["kwaigame"] = "\u5FEB\u624B"; + LQPlatformType["android"] = "\u5B89\u5353"; + LQPlatformType["ios"] = "\u82F9\u679C"; + LQPlatformType["browser"] = "\u6D4F\u89C8\u5668"; +})(LQPlatformType = exports.LQPlatformType || (exports.LQPlatformType = {})); +var LQByteDanceType; +(function (LQByteDanceType) { + LQByteDanceType["tt"] = "\u5934\u6761"; + LQByteDanceType["tt_lite"] = "\u5934\u6761\u6781\u901F\u7248"; + LQByteDanceType["douyin"] = "\u6296\u97F3"; + LQByteDanceType["douyin_lite"] = "\u6296\u97F3\u6781\u901F\u7248"; + LQByteDanceType["ppx"] = "\u76AE\u76AE\u867E"; + LQByteDanceType["devtools"] = "\u5B57\u8282\u5F00\u53D1\u5DE5\u5177"; +})(LQByteDanceType = exports.LQByteDanceType || (exports.LQByteDanceType = {})); +var LQAnalysisTag; +(function (LQAnalysisTag) { + LQAnalysisTag["VideoComplete"] = "video_complete"; + LQAnalysisTag["VideoBegin"] = "video_begin"; + LQAnalysisTag["VideoInterrupt"] = "video_interrupt"; + LQAnalysisTag["InterstitialShow"] = "interstitial_show"; + LQAnalysisTag["BannerShow"] = "banner_show"; + LQAnalysisTag["ExportShow"] = "export_show"; + LQAnalysisTag["NativeShow"] = "native_show"; + LQAnalysisTag["NativeClick"] = "native_show"; +})(LQAnalysisTag = exports.LQAnalysisTag || (exports.LQAnalysisTag = {})); +var LQCallBase; +(function (LQCallBase) { + LQCallBase[LQCallBase["InitSdk"] = 0] = "InitSdk"; + LQCallBase[LQCallBase["KeepScreenOn"] = 1] = "KeepScreenOn"; + LQCallBase[LQCallBase["Vibrate"] = 2] = "Vibrate"; + LQCallBase[LQCallBase["GetVersionCode"] = 3] = "GetVersionCode"; + LQCallBase[LQCallBase["GetVersionName"] = 4] = "GetVersionName"; + LQCallBase[LQCallBase["OpenUrl"] = 5] = "OpenUrl"; + LQCallBase[LQCallBase["DeleteDir"] = 6] = "DeleteDir"; + LQCallBase[LQCallBase["DeleteFile"] = 7] = "DeleteFile"; +})(LQCallBase = exports.LQCallBase || (exports.LQCallBase = {})); +var LQCallAd; +(function (LQCallAd) { + LQCallAd[LQCallAd["ShowBanner"] = 0] = "ShowBanner"; + LQCallAd[LQCallAd["HideBanner"] = 1] = "HideBanner"; + LQCallAd[LQCallAd["ShowVideo"] = 2] = "ShowVideo"; + LQCallAd[LQCallAd["ShowInterstitial"] = 3] = "ShowInterstitial"; + LQCallAd[LQCallAd["ShowNative"] = 4] = "ShowNative"; + LQCallAd[LQCallAd["CacheAd"] = 5] = "CacheAd"; +})(LQCallAd = exports.LQCallAd || (exports.LQCallAd = {})); +var LQAdErrStr; +(function (LQAdErrStr) { + LQAdErrStr["Unsupported"] = "\u4E0D\u652F\u6301"; + LQAdErrStr["NoParameters"] = "\u6CA1\u6709\u914D\u7F6E\u53C2\u6570"; + LQAdErrStr["NoAD"] = "\u6682\u65E0\u5E7F\u544A"; + LQAdErrStr["VersionOld"] = "\u7248\u672C\u8FC7\u4F4E"; + LQAdErrStr["VideoInterrupt"] = "\u4E2D\u65AD\u64AD\u653E"; + LQAdErrStr["InstanceErr"] = "\u5B9E\u4F8B\u4E3A\u7A7A"; + LQAdErrStr["AlreadyExist"] = "\u5DF2\u7ECF\u5B58\u5728"; + LQAdErrStr["IntervalTooShort"] = "\u95F4\u9694\u592A\u77ED"; +})(LQAdErrStr = exports.LQAdErrStr || (exports.LQAdErrStr = {})); +var LQLevelStatus; +(function (LQLevelStatus) { + LQLevelStatus[LQLevelStatus["Begin"] = 0] = "Begin"; + LQLevelStatus[LQLevelStatus["Failed"] = 1] = "Failed"; + LQLevelStatus[LQLevelStatus["Complete"] = 2] = "Complete"; +})(LQLevelStatus = exports.LQLevelStatus || (exports.LQLevelStatus = {})); +var LQOperateType; +(function (LQOperateType) { + LQOperateType[LQOperateType["ClickNode"] = 0] = "ClickNode"; + LQOperateType[LQOperateType["ClickScreen"] = 1] = "ClickScreen"; + LQOperateType[LQOperateType["Move"] = 2] = "Move"; + LQOperateType[LQOperateType["Null"] = 3] = "Null"; +})(LQOperateType = exports.LQOperateType || (exports.LQOperateType = {})); +var LQConst = /** @class */ (function () { + function LQConst() { + } + LQConst.VEC_ZERO = Vec2.ZERO; + return LQConst; +}()); +exports.LQConst = LQConst; cc._RF.pop(); } @@ -5198,7 +2758,3127 @@ cc._RF.pop(); }); } })(); -//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImFzc2V0c1xcU2NyaXB0XFxtb2R1bGVcXFJhbmtMaXN0XFxMaXN0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSxvQkFBb0I7QUFDcEIsd0VBQXdFO0FBQ3hFLG1CQUFtQjtBQUNuQixrRkFBa0Y7QUFDbEYsOEJBQThCO0FBQzlCLGtGQUFrRjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUVsRiwyQ0FBcUM7QUFFL0IsSUFBQSxLQUF3QixFQUFFLENBQUMsVUFBVSxFQUFuQyxPQUFPLGFBQUEsRUFBRSxRQUFRLGNBQWtCLENBQUM7QUFFNUMsWUFBWTtBQUNaLElBQVksUUFPWDtBQVBELFdBQVksUUFBUTtJQUNoQixVQUFVO0lBQ1YsbURBQWMsQ0FBQTtJQUNkLFVBQVU7SUFDViwrQ0FBWSxDQUFBO0lBQ1osVUFBVTtJQUNWLHVDQUFRLENBQUE7QUFDWixDQUFDLEVBUFcsUUFBUSxHQUFSLGdCQUFRLEtBQVIsZ0JBQVEsUUFPbkI7QUFFRCxjQUFjO0FBQ2QsSUFBWSxhQUtYO0FBTEQsV0FBWSxhQUFhO0lBQ3JCLFVBQVU7SUFDViw2REFBYyxDQUFBO0lBQ2QsVUFBVTtJQUNWLHlEQUFZLENBQUE7QUFDaEIsQ0FBQyxFQUxXLGFBQWEsR0FBYixxQkFBYSxLQUFiLHFCQUFhLFFBS3hCO0FBRUQ7Ozs7Ozs7R0FPRztBQUVIO0lBQWtDLHdCQUFZO0lBQTlDO1FBQUEscUVBeWlCQztRQXZpQkcscURBQXFEO1FBQ3JELFVBQVU7UUFFSCxnQkFBVSxHQUFZLElBQUksQ0FBQztRQUVsQyxVQUFVO1FBRUgsVUFBSSxHQUFhLFFBQVEsQ0FBQyxRQUFRLENBQUM7UUFFMUMsY0FBYztRQUVQLGVBQVMsR0FBa0IsYUFBYSxDQUFDLFVBQVUsQ0FBQztRQUUzRCxjQUFjO1FBRVAsWUFBTSxHQUFXLENBQUMsQ0FBQztRQUUxQixjQUFjO1FBRVAsWUFBTSxHQUFXLENBQUMsQ0FBQztRQUUxQixTQUFTO1FBRUYsaUJBQVcsR0FBVyxDQUFDLENB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SSxDQUFDLENBQUEsQ0FBQyxDQUFDLEVBQUUsQ0FBQzs4Q0FDdEc7SUFLaEM7UUFEQyxRQUFRLENBQUMsRUFBRSxDQUFDLE9BQU8sQ0FBQzswQ0FDTztJQUk1QjtRQURDLFFBQVEsQ0FBQyxFQUFFLElBQUksRUFBRSxFQUFFLENBQUMsT0FBTyxFQUFFLE9BQU8sRUFBRSxLQUFLLEVBQUUsT0FBTyxnQkFBSyxPQUFPLENBQUMsSUFBSSxDQUFDLElBQUksSUFBSSxRQUFRLENBQUMsVUFBVSxJQUFJLElBQUksQ0FBQyxJQUFJLElBQUksUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFBLENBQUMsQ0FBQyxFQUFFLENBQUM7K0NBQ3JHO0lBMUNoQixJQUFJO1FBRHhCLE9BQU87T0FDYSxJQUFJLENBeWlCeEI7SUFBRCxXQUFDO0NBemlCRCxBQXlpQkMsQ0F6aUJpQyxFQUFFLENBQUMsU0FBUyxHQXlpQjdDO2tCQXppQm9CLElBQUkiLCJmaWxlIjoiIiwic291cmNlUm9vdCI6Ii8iLCJzb3VyY2VzQ29udGVudCI6WyIvLyBMZWFybiBUeXBlU2NyaXB0OlxyXG4vLyAgLSBodHRwczovL2RvY3MuY29jb3MuY29tL2NyZWF0b3IvbWFudWFsL2VuL3NjcmlwdGluZy90eXBlc2NyaXB0Lmh0bWxcclxuLy8gTGVhcm4gQXR0cmlidXRlOlxyXG4vLyAgLSBodHRwczovL2RvY3MuY29jb3MuY29tL2NyZWF0b3IvbWFudWFsL2VuL3NjcmlwdGluZy9yZWZlcmVuY2UvYXR0cmlidXRlcy5odG1sXHJcbi8vIExlYXJuIGxpZmUtY3ljbGUgY2FsbGJhY2tzOlxyXG4vLyAgLSBodHRwczovL2RvY3MuY29jb3MuY29tL2NyZWF0b3IvbWFudWFsL2VuL3NjcmlwdGluZy9saWZlLWN5Y2xlLWNhbGxiYWNrcy5odG1sXHJcblxyXG5pbXBvcnQgSXRlbVJlbmRlciBmcm9tIFwiLi9JdGVtUmVuZGVyXCJcclxuXHJcbmNvbnN0IHsgY2NjbGFzcywgcHJvcGVydHkgfSA9IGNjLl9kZWNvcmF0b3I7XHJcblxyXG4vKirliJfooajmjpLliJfmlrnlvI8gKi9cclxuZXhwb3J0IGVudW0gTGlzdFR5cGUge1xyXG4gICAgLyoq5rC05bmz5o6S5YiXICovXHJcbiAgICBIb3Jpem9udGFsID0gMSxcclxuICAgIC8qKuWeguebtOaOkuWIlyAqL1xyXG4gICAgVmVydGljYWwgPSAyLFxyXG4gICAgLyoq572R5qC85o6S5YiXICovXHJcbiAgICBHcmlkID0gM1xyXG59XHJcblxyXG4vKirnvZHmoLzluIPlsYDkuK3nmoTmlrnlkJEgKi9cclxuZXhwb3J0IGVudW0gU3RhcnRBeGlzVHlwZSB7XHJcbiAgICAvKirmsLTlubPmjpLliJcgKi9cclxuICAgIEhvcml6b250YWwgPSAxLFxyXG4gICAgLyoq5Z6C55u05o6S5YiXICovXHJcbiAgICBWZXJ0aWNhbCA9IDIsXHJcbn1cclxuXHJcbi8qKlxyXG4gKiDliJfooahcclxuICog5qC55o2uY29jb3NfZXhhbXBsZeeahGxpc3RWaWV35pS55Yqo6ICM5p2lXHJcbiAqIEBhdXRob3IgY2hlbmthaSAyMDIwLjcuOFxyXG4gKiBAZXhhbXBsZVxyXG4gKiAgMS7liJvlu7pjb2Nvc+eahFNjcm9sbFZpZXfnu4Tku7bvvIzmt7vliqBMaXN077yM6K6+572uTGlzdOWxnuaAp+WNs+WPr1xyXG4gKiAgXHJcbiAqL1xyXG5AY2NjbGFzc1xyXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBMaXN0IGV4dGVuZHMgY2MuQ29tcG9uZW50IHtcclxuXHJcbiAgICAvLz09PT09PT09PT09PT09PT09PT09IOWxnuaAp+mdouadvyA9PT09PT09PT09PT09PT09PT09PT09PT09XHJcbiAgICAvKirliJfooajpgInpobkgKi9cclxuICAgIEBwcm9wZXJ0eSh7IHR5cGU6IGNjLk5vZGUsIHRvb2x0aXA6IFwi5YiX6KGo6aG5XCIgfSlcclxuICAgIHB1YmxpYyBpdGVtUmVuZGVyOiBjYy5Ob2RlID0gbnVsbDtcclxuXHJcbiAgICAvKirmjpLliJfmlrnlvI8gKi9cclxuICAgIEBwcm9wZXJ0eSh7IHR5cGU6IGNjLkVudW0oTGlzdFR5cGUpLCB0b29sdGlwOiBcIuaOkuWIl+aWueW8j1wiIH0pXHJcbiAgICBwdWJsaWMgdHlwZTogTGlzdFR5cGUgPSBMaXN0VHlwZS5WZXJ0aWNhbDtcclxuXHJcbiAgICAvKirnvZHmoLzluIPlsYDkuK3nmoTmlrnlkJEgKi9cclxuICAgIEBwcm9wZXJ0eSh7IHR5cGU6IGNjLkVudW0oU3RhcnRBeGlzVHlwZSksIHRvb2x0aXA6IFwi572R5qC85biD5bGA5Lit55qE5pa55ZCRXCIsIHZpc2libGUoKSB7IHJldHVybiB0aGlzLnR5cGUgPT0gTGlzdFR5cGUuR3JpZCB9IH0pXHJcbiAgICBwdWJsaWMgc3RhcnRBeGlzOiBTdGFydEF4aXNUeXBlID0gU3RhcnRBeGlzVHlwZS5Ib3Jpem9udGFsO1xyXG5cclxuICAgIC8qKuWIl+ihqOmhueS5i+mXtFjpl7TpmpQgKi9cclxuICAgIEBwcm9wZXJ0eSh7IHR5cGU6IGNjLkludGVnZXIsIHRvb2x0aXA6IFwi5YiX6KGo6aG5WOmXtOmalFwiLCB2aXNpYmxlKCkgeyByZXR1cm4gKHRoaXMudHlwZSA9PSBMaXN0VHlwZS5Ib3Jpem9udGFsIHx8IHRoaXMudHlwZSA9PSBMaXN0VHlwZS5HcmlkKSB9IH0pXHJcbiAgICBwdWJsaWMgc3BhY2VYOiBudW1iZXIgPSAwO1xyXG5cclxuICAgIC8qKuWIl+ihqOmhueS5i+mXtFnpl7TpmpQgKi9cclxuICAgIEBwcm9wZXJ0eSh7IHR5cGU6IGNjLkludGVnZXIsIHRvb2x0aXA6IFwi5YiX6KGo6aG5WemXtOmalFwiLCB2aXNpYmxlKCkgeyByZXR1cm4gdGhpcy50eXBlID09IExpc3RUeXBlLlZlcnRpY2FsIHx8IHRoaXMudHlwZSA9PSBMaXN0VHlwZS5HcmlkIH0gfSlcclxuICAgIHB1YmxpYyBzcGFjZVk6IG51bWJlciA9IDA7XHJcblxyXG4gICAgLyoq5LiK6Ze06LedICovXHJcbiAgICBAcHJvcGVydHkoeyB0eXBlOiBjYy5JbnRlZ2VyLCB0b29sdGlwOiBcIuS4iumXtOi3nVwiLCB2aXNpYmxlKCkgeyByZXR1cm4gKHRoaXMudHlwZSA9PSBMaXN0VHlwZS5WZXJ0aWNhbCB8fCB0aGlzLnR5cGUgPT0gTGlzdFR5cGUuR3JpZCkgfSB9KVxyXG4gICAgcHVibGljIHBhZGRpbmdfdG9wOiBudW1iZXIgPSAwO1xyXG5cclxuICAgIC8qKuS4i+mXtOi3nSAqL1xyXG4gICAgQHByb3BlcnR5KHsgdHlwZTogY2MuSW50ZWdlciwgdG9vbHRpcDogXCLkuIvpl7Tot51cIiwgdmlzaWJsZSgpIHsgcmV0dXJuICh0aGlzLnR5cGUgPT0gTGlzdFR5cGUuVmVydGljYWwgfHwgdGhpcy50eXBlID09IExpc3RUeXBlLkdyaWQpIH0gfSlcclxuICAgIHB1YmxpYyBwYWRkaW5nX2J1dHRvbTogbnVtYmVyID0gMDtcclxuXHJcbiAgICAvKirlt6bpl7Tot50gKi9cclxuICAgIEBwcm9wZXJ0eSh7IHR5cGU6IGNjLkludGVnZXIsIHRvb2x0aXA6IFwi5bem6Ze06LedXCIsIHZpc2libGUoKSB7IHJldHVybiAodGhpcy50eXBlID09IExpc3RUeXBlLkhvcml6b250YWwgfHwgdGhpcy50eXBlID09IExpc3RUeXBlLkdyaWQpIH0gfSlcclxuICAgIHB1YmxpYyBwYWRkaW5nX2xlZnQ6IG51bWJlciA9IDA7XHJcblxyXG5cclxuXHJcbiAgICBAcHJvcGVydHkoY2MuSW50ZWdlcilcclxuICAgIHB1YmxpYyBfcGFkZGluZzogbnVtYmVyID0gMDtcclxuXHJcbiAgICAvKirlj7Ppl7Tot50gKi9cclxuICAgIEBwcm9wZXJ0eSh7IHR5cGU6IGNjLkludGVnZXIsIHRvb2x0aXA6IFwi5Y+z6Ze06LedXCIsIHZpc2libGUoKSB7IHJldHVybiAodGhpcy50eXBlID09IExpc3RUeXBlLkhvcml6b250YWwgfHwgdGhpcy50eXBlID09IExpc3RUeXBlLkdyaWQpIH0gfSlcclxuICAgIHB1YmxpYyBwYWRkaW5nX3JpZ2h0OiBudW1iZXIgPSAwO1xyXG5cclxuICAgIC8vPT09PT09PT09PT09PT09PT09PT09PSDmu5rliqjlrrnlmaggPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxyXG4gICAgLyoq5YiX6KGo5rua5Yqo5a655ZmoICovXHJcbiAgICBwdWJsaWMgc2Nyb2xsVmlldzogY2MuU2Nyb2xsVmlldyA9IG51bGw7XHJcbiAgICAvKipzY3JvbGxWaWV355qE5YaF5a655a655ZmoICovXHJcbiAgICBwcml2YXRlIGNvbnRlbnQ6IGNjLk5vZGUgPSBudWxsO1xyXG5cclxuICAgIC8vPT09PT09PT09PT09PT09PT09PT09PT09IOWIl+ihqOmhuSA9PT09PT09PT09PT09PT09PT09PT09PT09PT1cclxuICAgIC8qKuWIl+ihqOmhueaVsOaNriAqL1xyXG4gICAgcHJpdmF0ZSBpdGVtRGF0YUxpc3Q6IEFycmF5PGFueT4gPSBbXTtcclxuICAgIC8qKuW6lOWIm+W7uueahOWunuS+i+aVsOmHjyAqL1xyXG4gICAgcHJpdmF0ZSBzcGF3bkNvdW50OiBudW1iZXIgPSAwO1xyXG4gICAgLyoq5a2Y5pS+5YiX6KGo6aG55a6e5L6L55qE5pWw57uEICovXHJcbiAgICBwcml2YXRlIGl0ZW1MaXN0OiBBcnJheTxjYy5Ob2RlPiA9IFtdO1xyXG4gICAgLyoqaXRlbeeahOmrmOW6piAqL1xyXG4gICAgcHJpdmF0ZSBpdGVtSGVpZ2h0OiBudW1iZXIgPSAwO1xyXG4gICAgLyoqaXRlbeeahOWuveW6piAqL1xyXG4gICAgcHJpdmF0ZSBpdGVtV2lkdGg6IG51bWJlciA9IDA7XHJcbiAgICAvKirlrZjmlL7kuI3lho3kvb/nlKjkuK3nmoTliJfooajpobkgKi9cclxuICAgIHByaXZhdGUgaXRlbVBvb2w6IEFycmF5PGNjLk5vZGU+ID0gW107XHJcblxyXG4gICAgLy89PT09PT09PT09PT09PT09PT09PT09PSDorqHnrpflj4LmlbAgPT09PT09PT09PT09PT09PT09PT09PT09PT1cclxuICAgIC8qKui3neemu3Njcm9sbFZpZXfkuK3lv4PngrnnmoTot53nprvvvIzotoXov4fov5nkuKrot53nprvnmoRpdGVt5Lya6KKr6YeN572u77yM5LiA6Iis6K6+572u5Li6IHNjcm9sbFZJZXcuaGVpZ2h0LzIgKyBpdGVtLmhlaWd0LzIgKyBzcGFjZe+8jOWboOS4uui/meS4qui3neemu2l0ZW3mraPlpb3otoXlh7pzY3JvbGxWaWV35pi+56S66IyD5Zu0ICovXHJcbiAgICBwcml2YXRlIGhhbGZTY3JvbGxWaWV3OiBudW1iZXIgPSAwO1xyXG4gICAgLyoq5LiK5LiA5qyhY29udGVudOeahFjlgLzvvIznlKjkuo7lkoznjrDlnKhjb250ZW5055qEWOWAvOavlOi+g++8jOW+l+WHuuaYr+WQkeW3pui/mOaYr+WQkeWPs+a7muWKqCAqL1xyXG4gICAgcHJpdmF0ZSBsYXN0Q29udGVudFBvc1g6IG51bWJlciA9IDA7XHJcbiAgICAvKirkuIrkuIDmrKFjb250ZW5055qEWeWAvO+8jOeUqOS6juWSjOeOsOWcqGNvbnRlbnTnmoRZ5YC85q+U6L6D77yM5b6X5Ye65piv5ZCR5LiK6L+Y5piv5ZCR5LiL5rua5YqoICovXHJcbiAgICBwcml2YXRlIGxhc3RDb250ZW50UG9zWTogbnVtYmVyID0gMDtcclxuICAgIC8qKue9keagvOihjOaVsCAqL1xyXG4gICAgcHJpdmF0ZSBncmlkUm93OiBudW1iZXIgPSAwO1xyXG4gICAgLyoq572R5qC85YiX5pWwICovXHJcbiAgICBwcml2YXRlIGdyaWRDb2w6IG51bWJlciA9IDA7XHJcbiAgICAvKirliLfmlrDml7bpl7TvvIzljZXkvY1zICovXHJcbiAgICBwcml2YXRlIHVwZGF0ZVRpbWVyOiBudW1iZXIgPSAwO1xyXG4gICAgLyoq5Yi35paw6Ze06ZqU77yM5Y2V5L2NcyAqL1xyXG4gICAgcHJpdmF0ZSB1cGRhdGVJbnRlcnZhbDogbnVtYmVyID0gMC4xO1xyXG4gICAgLyoq5piv5ZCm5rua5Yqo5a655ZmoICovXHJcbiAgICBwcml2YXRlIGJTY3JvbGxpbmc6IGJvb2xlYW4gPSBmYWxzZTtcclxuICAgIC8qKuWIt+aWsOeahOWHveaVsCAqL1xyXG4gICAgcHJpdmF0ZSB1cGRhdGVGdW46IEZ1bmN0aW9uID0gZnVuY3Rpb24gKCkgeyB9O1xyXG5cclxuICAgIG9uTG9hZCgpIHtcclxuICAgICAgICB0aGlzLml0ZW1IZWlnaHQgPSB0aGlzLml0ZW1SZW5kZXIuaGVpZ2h0O1xyXG4gICAgICAgIHRoaXMuaXRlbVdpZHRoID0gdGhpcy5pdGVtUmVuZGVyLndpZHRoO1xyXG4gICAgICAgIHRoaXMuc2Nyb2xsVmlldyA9IHRoaXMubm9kZS5nZXRDb21wb25lbnQoY2MuU2Nyb2xsVmlldyk7XHJcbiAgICAgICAgdGhpcy5jb250ZW50ID0gdGhpcy5zY3JvbGxWaWV3LmNvbnRlbnQ7XHJcbiAgICAgICAgdGhpcy5jb250ZW50LmFuY2hvclggPSAwO1xyXG4gICAgICAgIHRoaXMuY29udGVudC5hbmNob3JZID0gMTtcclxuICAgICAgICB0aGlzLmNvbnRlbnQucmVtb3ZlQWxsQ2hpbGRyZW4oKTtcclxuICAgICAgICB0aGlzLnNjcm9sbFZpZXcubm9kZS5vbihcInNjcm9sbGluZ1wiLCB0aGlzLm9uU2Nyb2xsaW5nLCB0aGlzKTtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIOWIl+ihqOaVsOaNriAo5YiX6KGo5pWw5o2u5aSN5Yi25L2/55So77yM5aaC5p6c5YiX6KGo5pWw5o2u5pS55Y+Y77yM5YiZ6ZyA6KaB6YeN5paw6K6+572u5LiA6YGN5pWw5o2uKVxyXG4gICAgICogQHBhcmFtIGl0ZW1EYXRhTGlzdCBpdGVt5pWw5o2u5YiX6KGoXHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyBzZXREYXRhKGl0ZW1EYXRhTGlzdDogQXJyYXk8YW55Pikge1xyXG4gICAgICAgIHRoaXMuaXRlbURhdGFMaXN0ID0gaXRlbURhdGFMaXN0LnNsaWNlKCk7XHJcbiAgICAgICAgdGhpcy51cGRhdGVDb250ZW50KCk7XHJcbiAgICAgICBcclxuICAgIH1cclxuXHJcbiAgICAvKirorqHnrpfliJfooajnmoTlkITpobnlj4LmlbAgKi9cclxuICAgIHByaXZhdGUgY291bnRMaXN0UGFyYW0oKSB7XHJcbiAgICAgICAgbGV0IGRhdGFMZW4gPSB0aGlzLml0ZW1EYXRhTGlzdC5sZW5ndGg7XHJcbiAgICAgICAgaWYgKHRoaXMudHlwZSA9PSBMaXN0VHlwZS5WZXJ0aWNhbCkge1xyXG4gICAgICAgICAgICB0aGlzLnNjcm9sbFZpZXcuaG9yaXpvbnRhbCA9IGZhbHNlO1xyXG4gICAgICAgICAgICB0aGlzLnNjcm9sbFZpZXcudmVydGljYWwgPSB0cnVlO1xyXG4gICAgICAgICAgICB0aGlzLmNvbnRlbnQud2lkdGggPSB0aGlzLmNvbnRlbnQucGFyZW50LndpZHRoO1xyXG4gICAgICAgICAgICB0aGlzLmNvbnRlbnQuaGVpZ2h0ID0gZGF0YUxlbiAqIHRoaXMuaXRlbUhlaWdodCArIChkYXRhTGVuIC0gMSkgKiB0aGlzLnNwYWNlWSArIHRoaXMucGFkZGluZ190b3AgKyB0aGlzLnBhZGRpbmdfYnV0dG9tO1xyXG4gICAgICAgICAgICB0aGlzLnNwYXduQ291bnQgPSBNYXRoLnJvdW5kKHRoaXMuc2Nyb2xsVmlldy5ub2RlLmhlaWdodCAvICh0aGlzLml0ZW1IZWlnaHQgKyB0aGlzLnNwYWNlWSkpICsgMjsgLy/orqHnrpfliJvlu7rnmoRpdGVt5a6e5L6L5pWw6YeP77yM5q+U5b2T5YmNc2Nyb2xsVmlld+WuueWZqOiDveaUvuS4i+eahGl0ZW3mlbDph4/lho3liqDkuIoy5LiqXHJcbiAgICAgICAgICAgIHRoaXMuaGFsZlNjcm9sbFZpZXcgPSB0aGlzLnNjcm9sbFZpZXcubm9kZS5oZWlnaHQgLyAyICsgdGhpcy5pdGVtSGVpZ2h0IC8gMiArIHRoaXMuc3BhY2VZOyAvL+iuoeeul2J1ZmZlclpvbmXvvIxpdGVt55qE5pi+56S66IyD5Zu0XHJcbiAgICAgICAgICAgIHRoaXMudXBkYXRlRnVuID0gdGhpcy51cGRhdGVWO1xyXG4gICAgICAgIH0gZWxzZSBpZiAodGhpcy50eXBlID09IExpc3RUeXBlLkhvcml6b250YWwpIHtcclxuICAgICAgICAgICAgdGhpcy5zY3JvbGxWaWV3Lmhvcml6b250YWwgPSB0cnVlO1xyXG4gICAgICAgICAgICB0aGlzLnNjcm9sbFZpZXcudmVydGljYWwgPSBmYWxzZTtcclxuICAgICAgICAgICAgdGhpcy5jb250ZW50LndpZHRoID0gZGF0YUxlbiAqIHRoaXMuaXRlbVdpZHRoICsgKGRhdGFMZW4gLSAxKSAqIHRoaXMuc3BhY2VYICsgdGhpcy5wYWRkaW5nX2xlZnQgKyB0aGlzLnBhZGRpbmdfcmlnaHQ7XHJcbiAgICAgICAgICAgIHRoaXMuY29udGVudC5oZWlnaHQgPSB0aGlzLmNvbnRlbnQucGFyZW50LmhlaWdodDtcclxuICAgICAgICAgICAgdGhpcy5zcGF3bkNvdW50ID0gTWF0aC5yb3VuZCh0aGlzLnNjcm9sbFZpZXcubm9kZS53aWR0aCAvICh0aGlzLml0ZW1XaWR0aCArIHRoaXMuc3BhY2VYKSkgKyAyO1xyXG4gICAgICAgICAgICB0aGlzLmhhbGZTY3JvbGxWaWV3ID0gdGhpcy5zY3JvbGxWaWV3Lm5vZGUud2lkdGggLyAyICsgdGhpcy5pdGVtV2lkdGggLyAyICsgdGhpcy5zcGFjZVg7XHJcbiAgICAgICAgICAgIHRoaXMudXBkYXRlRnVuID0gdGhpcy51ZHBhdGVIO1xyXG4gICAgICAgIH0gZWxzZSBpZiAodGhpcy50eXBlID09IExpc3RUeXBlLkdyaWQpIHtcclxuICAgICAgICAgICAgaWYgKHRoaXMuc3RhcnRBeGlzID09IFN0YXJ0QXhpc1R5cGUuVmVydGljYWwpIHtcclxuICAgICAgICAgICAgICAgIHRoaXMuc2Nyb2xsVmlldy5ob3Jpem9udGFsID0gZmFsc2U7XHJcbiAgICAgICAgICAgICAgICB0aGlzLnNjcm9sbFZpZXcudmVydGljYWwgPSB0cnVlO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5jb250ZW50LndpZHRoID0gdGhpcy5jb250ZW50LnBhcmVudC53aWR0aDtcclxuICAgICAgICAgICAgICAgIC8v5aaC5p6cbGVmdOWSjHJpZ2h06Ze06ZqU6L+H5aSn77yM5a+86Ie05pS+5LiN5LiL5LiA5LiqaXRlbe+8jOWImWxlZnTlkoxyaWdodOmDveiuvue9ruS4ujDvvIznm7jlvZPkuo7kuI3nlJ/mlYhcclxuICAgICAgICAgICAgICAgIGlmICh0aGlzLnBhZGRpbmdfbGVmdCArIHRoaXMucGFkZGluZ19yaWdodCArIHRoaXMuaXRlbVdpZHRoICsgdGhpcy5zcGFjZVggPiB0aGlzLmNvbnRlbnQud2lkdGgpIHtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLnBhZGRpbmdfbGVmdCA9IDA7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5wYWRkaW5nX3JpZ2h0ID0gMDtcclxuICAgICAgICAgICAgICAgICAgICBjb25zb2xlLmVycm9yKFwicGFkZGluZ19sZWZ05oiWcGFkZGluZ19yaWdodOi/h+Wkp1wiKTtcclxuICAgICAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgICAgICB0aGlzLmdyaWRDb2wgPSBNYXRoLmZsb29yKCh0aGlzLmNvbnRlbnQud2lkdGggLSB0aGlzLnBhZGRpbmdfbGVmdCAtIHRoaXMucGFkZGluZ19yaWdodCkgLyAodGhpcy5pdGVtV2lkdGggKyB0aGlzLnNwYWNlWCkpO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5ncmlkUm93ID0gTWF0aC5jZWlsKGRhdGFMZW4gLyB0aGlzLmdyaWRDb2wpO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5jb250ZW50LmhlaWdodCA9IHRoaXMuZ3JpZFJvdyAqIHRoaXMuaXRlbUhlaWdodCArICh0aGlzLmdyaWRSb3cgLSAxKSAqIHRoaXMuc3BhY2VZICsgdGhpcy5wYWRkaW5nX3RvcCArIHRoaXMucGFkZGluZ19idXR0b207XHJcbiAgICAgICAgICAgICAgICB0aGlzLnNwYXduQ291bnQgPSBNYXRoLnJvdW5kKHRoaXMuc2Nyb2xsVmlldy5ub2RlLmhlaWdodCAvICh0aGlzLml0ZW1IZWlnaHQgKyB0aGlzLnNwYWNlWSkpICogdGhpcy5ncmlkQ29sICsgdGhpcy5ncmlkQ29sICogMjtcclxuICAgICAgICAgICAgICAgIHRoaXMuaGFsZlNjcm9sbFZpZXcgPSB0aGlzLnNjcm9sbFZpZXcubm9kZS5oZWlnaHQgLyAyICsgdGhpcy5pdGVtSGVpZ2h0IC8gMiArIHRoaXMuc3BhY2VZO1xyXG4gICAgICAgICAgICAgICAgdGhpcy51cGRhdGVGdW4gPSB0aGlzLnVwZGF0ZUdyaWRfVjtcclxuICAgICAgICAgICAgfSBlbHNlIGlmICh0aGlzLnN0YXJ0QXhpcyA9PSBTdGFydEF4aXNUeXBlLkhvcml6b250YWwpIHtcclxuICAgICAgICAgICAgICAgIHRoaXMuc2Nyb2xsVmlldy5ob3Jpem9udGFsID0gdHJ1ZTtcclxuICAgICAgICAgICAgICAgIHRoaXMuc2Nyb2xsVmlldy52ZXJ0aWNhbCA9IGZhbHNlO1xyXG4gICAgICAgICAgICAgICAgLy/orqHnrpfpq5jpl7TpmpRcclxuICAgICAgICAgICAgICAgIHRoaXMuY29udGVudC5oZWlnaHQgPSB0aGlzLmNvbnRlbnQucGFyZW50LmhlaWdodDtcclxuICAgICAgICAgICAgICAgIC8v5aaC5p6cbGVmdOWSjHJpZ2h06Ze06ZqU6L+H5aSn77yM5a+86Ie05pS+5LiN5LiL5LiA5LiqaXRlbe+8jOWImWxlZnTlkoxyaWdodOmDveiuvue9ruS4ujDvvIznm7jlvZPkuo7kuI3nlJ/mlYhcclxuICAgICAgICAgICAgICAgIGlmICh0aGlzLnBhZGRpbmdfdG9wICsgdGhpcy5wYWRkaW5nX2J1dHRvbSArIHRoaXMuaXRlbUhlaWdodCArIHRoaXMuc3BhY2VZID4gdGhpcy5jb250ZW50LmhlaWdodCkge1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMucGFkZGluZ190b3AgPSAwO1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMucGFkZGluZ19idXR0b20gPSAwO1xyXG4gICAgICAgICAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoXCJwYWRkaW5nX3RvcOaIlnBhZGRpbmdfYnV0dG9t6L+H5aSnXCIpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgICAgIHRoaXMuZ3JpZFJvdyA9IE1hdGguZmxvb3IoKHRoaXMuY29udGVudC5oZWlnaHQgLSB0aGlzLnBhZGRpbmdfdG9wIC0gdGhpcy5wYWRkaW5nX2J1dHRvbSkgLyAodGhpcy5pdGVtSGVpZ2h0ICsgdGhpcy5zcGFjZVkpKTtcclxuICAgICAgICAgICAgICAgIHRoaXMuZ3JpZENvbCA9IE1hdGguY2VpbChkYXRhTGVuIC8gdGhpcy5ncmlkUm93KTtcclxuICAgICAgICAgICAgICAgIHRoaXMuY29udGVudC53aWR0aCA9IHRoaXMuZ3JpZENvbCAqIHRoaXMuaXRlbVdpZHRoICsgKHRoaXMuZ3JpZENvbCAtIDEpICogdGhpcy5zcGFjZVggKyB0aGlzLnBhZGRpbmdfbGVmdCArIHRoaXMucGFkZGluZ19yaWdodDtcclxuICAgICAgICAgICAgICAgIHRoaXMuc3Bhd25Db3VudCA9IE1hdGgucm91bmQodGhpcy5zY3JvbGxWaWV3Lm5vZGUud2lkdGggLyAodGhpcy5pdGVtV2lkdGggKyB0aGlzLnNwYWNlWCkpICogdGhpcy5ncmlkUm93ICsgdGhpcy5ncmlkUm93ICogMjtcclxuICAgICAgICAgICAgICAgIHRoaXMuaGFsZlNjcm9sbFZpZXcgPSB0aGlzLnNjcm9sbFZpZXcubm9kZS53aWR0aCAvIDIgKyB0aGlzLml0ZW1XaWR0aCAvIDIgKyB0aGlzLnNwYWNlWDtcclxuICAgICAgICAgICAgICAgIHRoaXMudXBkYXRlRnVuID0gdGhpcy51cGRhdGVHcmlkX0g7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiDliJvlu7rliJfooaggXHJcbiAgICAgKiBAcGFyYW0gc3RhcnRJbmRleCDotbflp4vmmL7npLrnmoTmlbDmja7ntKLlvJUgMOihqOekuuesrOS4gOmhuVxyXG4gICAgICogQHBhcmFtIG9mZnNldCAgICAgc2Nyb2xsVmlld+WBj+enu+mHj1xyXG4gICAgICovXHJcbiAgICBwcml2YXRlIGNyZWF0ZUxpc3Qoc3RhcnRJbmRleDogbnVtYmVyLCBvZmZzZXQ6IGNjLlZlYzIpIHtcclxuICAgICAgICAvL+W9k+mcgOimgeaYvuekuueahOaVsOaNrumVv+W6piA+IOiZmuaLn+WIl+ihqOmVv+W6pu+8jCDliKDpmaTmnIDmnKvlsL7lh6DkuKrmlbDmja7ml7bvvIzliJfooajpnIDopoHph43nva7kvY3nva7liLBzY3JvbGxWaWV35pyA5bqV56uvXHJcbiAgICAgICAgaWYgKHRoaXMuaXRlbURhdGFMaXN0Lmxlbmd0aCA+IHRoaXMuc3Bhd25Db3VudCAmJiAoc3RhcnRJbmRleCArIHRoaXMuc3Bhd25Db3VudCAtIDEpID49IHRoaXMuaXRlbURhdGFMaXN0Lmxlbmd0aCkge1xyXG4gICAgICAgICAgICBzdGFydEluZGV4ID0gdGhpcy5pdGVtRGF0YUxpc3QubGVuZ3RoIC0gdGhpcy5zcGF3bkNvdW50O1xyXG4gICAgICAgICAgICBvZmZzZXQgPSB0aGlzLnNjcm9sbFZpZXcuZ2V0TWF4U2Nyb2xsT2Zmc2V0KCk7XHJcblxyXG4gICAgICAgICAgICAvL+W9k+mcgOimgeaYvuekuueahOaVsOaNrumVv+W6piA8PSDomZrmi5/liJfooajplb/luqbvvIwg6ZqQ6JeP5aSa5L2Z55qE6Jma5ouf5YiX6KGo6aG5IFxyXG4gICAgICAgIH0gZWxzZSBpZiAodGhpcy5pdGVtRGF0YUxpc3QubGVuZ3RoIDw9IHRoaXMuc3Bhd25Db3VudCkge1xyXG4gICAgICAgICAgICBzdGFydEluZGV4ID0gMDtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdGhpcy5zcGF3bkNvdW50OyBpKyspIHtcclxuICAgICAgICAgICAgbGV0IGl0ZW06IGNjLk5vZGU7XHJcbiAgICAgICAgICAgIC8v6ZyA6KaB5pi+56S655qE5pWw5o2u57Si5byV5Zyo5pWw5o2u6IyD5Zu05YaF77yM5YiZaXRlbeWunuS+i+aYvuekuuWHuuadpVxyXG4gICAgICAgICAgICBpZiAoaSArIHN0YXJ0SW5kZXggPCB0aGlzLml0ZW1EYXRhTGlzdC5sZW5ndGgpIHtcclxuICAgICAgICAgICAgICAgIGlmICh0aGlzLml0ZW1MaXN0W2ldID09IG51bGwpIHtcclxuICAgICAgICAgICAgICAgICAgICBpdGVtID0gdGhpcy5nZXRJdGVtKCk7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5pdGVtTGlzdC5wdXNoKGl0ZW0pO1xyXG4gICAgICAgICAgICAgICAgICAgIGl0ZW0ucGFyZW50ID0gdGhpcy5jb250ZW50O1xyXG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICBpdGVtID0gdGhpcy5pdGVtTGlzdFtpXTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIC8v6ZyA6KaB5pi+56S655qE5pWw5o2u57Si5byV6LaF6L+H5LqG5pWw5o2u6IyD5Zu077yM5YiZaXRlbeWunuS+i+makOiXj+i1t+adpVxyXG4gICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgLy9pdGVt5a6e5L6L5pWw6YePID4g6ZyA6KaB5pi+56S655qE5pWw5o2u6YePXHJcbiAgICAgICAgICAgICAgICBpZiAodGhpcy5pdGVtTGlzdC5sZW5ndGggPiAodGhpcy5pdGVtRGF0YUxpc3QubGVuZ3RoIC0gc3RhcnRJbmRleCkpIHtcclxuICAgICAgICAgICAgICAgICAgICBpdGVtID0gdGhpcy5pdGVtTGlzdC5wb3AoKTtcclxuICAgICAgICAgICAgICAgICAgICBpdGVtLnJlbW92ZUZyb21QYXJlbnQoKTtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLml0ZW1Qb29sLnB1c2goaXRlbSk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBjb250aW51ZTtcclxuICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgbGV0IGl0ZW1SZW5kZXI6IEl0ZW1SZW5kZXIgPSBpdGVtLmdldENvbXBvbmVudChJdGVtUmVuZGVyKTtcclxuICAgICAgICAgICAgaXRlbVJlbmRlci5pdGVtSW5kZXggPSBpICsgc3RhcnRJbmRleDtcclxuICAgICAgICAgICAgaXRlbVJlbmRlci5kYXRhID0gdGhpcy5pdGVtRGF0YUxpc3RbaSArIHN0YXJ0SW5kZXhdO1xyXG4gICAgICAgICAgICBpdGVtUmVuZGVyLmRhdGFDaGFuZ2VkKCk7XHJcblxyXG4gICAgICAgICAgICBpZiAodGhpcy50eXBlID09IExpc3RUeXBlLlZlcnRpY2FsKSB7XHJcbiAgICAgICAgICAgICAgICAvL+WboOS4umNvbnRlbnTnmoTplJrngrlY5pivMO+8jOaJgOS7pWl0ZW3nmoR45YC85pivY29udGVudC53aXRoLzLooajnpLrlsYXkuK3vvIzplJrngrlZ5pivMe+8jOaJgOS7pWl0ZW3nmoR55YC85LuOY29udGVudOmhtumDqOWQkeS4i+aYrzDliLDotJ/ml6DnqbfjgILmiYDku6VpdGVtLnk9IC1pdGVtLmhlaWdodC8y5pe277yM5piv5ZyoY29udGVudOeahOmhtumDqOOAglxyXG4gICAgICAgICAgICAgICAgaXRlbS5zZXRQb3NpdGlvbih0aGlzLmNvbnRlbnQud2lkdGggLyAyLCAtaXRlbS5oZWlnaHQgKiAoMC41ICsgaSArIHN0YXJ0SW5kZXgpIC0gdGhpcy5zcGFjZVkgKiAoaSArIHN0YXJ0SW5kZXgpIC0gdGhpcy5wYWRkaW5nX3RvcCk7XHJcbiAgICAgICAgICAgIH0gZWxzZSBpZiAodGhpcy50eXBlID09IExpc3RUeXBlLkhvcml6b250YWwpIHtcclxuICAgICAgICAgICAgICAgIGl0ZW0uc2V0UG9zaXRpb24oaXRlbS53aWR0aCAqICgwLjUgKyBpICsgc3RhcnRJbmRleCkgKyB0aGlzLnNwYWNlWCAqIChpICsgc3RhcnRJbmRleCkgKyB0aGlzLnBhZGRpbmdfbGVmdCwgLXRoaXMuY29udGVudC5oZWlnaHQgLyAyKTtcclxuICAgICAgICAgICAgfSBlbHNlIGlmICh0aGlzLnR5cGUgPT0gTGlzdFR5cGUuR3JpZCkge1xyXG4gICAgICAgICAgICAgICAgaWYgKHRoaXMuc3RhcnRBeGlzID09IFN0YXJ0QXhpc1R5cGUuVmVydGljYWwpIHtcclxuICAgICAgICAgICAgICAgICAgICB2YXIgcm93ID0gTWF0aC5mbG9vcigoaSArIHN0YXJ0SW5kZXgpIC8gdGhpcy5ncmlkQ29sKTtcclxuICAgICAgICAgICAgICAgICAgICB2YXIgY29sID0gKGkgKyBzdGFydEluZGV4KSAlIHRoaXMuZ3JpZENvbDtcclxuICAgICAgICAgICAgICAgICAgICBpdGVtLnNldFBvc2l0aW9uKGl0ZW0ud2lkdGggKiAoMC41ICsgY29sKSArIHRoaXMuc3BhY2VYICogY29sICsgdGhpcy5wYWRkaW5nX2xlZnQsIC1pdGVtLmhlaWdodCAqICgwLjUgKyByb3cpIC0gdGhpcy5zcGFjZVkgKiByb3cgLSB0aGlzLnBhZGRpbmdfdG9wKTtcclxuICAgICAgICAgICAgICAgICAgICBpdGVtLm9wYWNpdHkgPSAyNTU7XHJcbiAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKHRoaXMuc3RhcnRBeGlzID09IFN0YXJ0QXhpc1R5cGUuSG9yaXpvbnRhbCkge1xyXG4gICAgICAgICAgICAgICAgICAgIHZhciByb3cgPSAoaSArIHN0YXJ0SW5kZXgpICUgdGhpcy5ncmlkUm93O1xyXG4gICAgICAgICAgICAgICAgICAgIHZhciBjb2wgPSBNYXRoLmZsb29yKChpICsgc3RhcnRJbmRleCkgLyB0aGlzLmdyaWRSb3cpO1xyXG4gICAgICAgICAgICAgICAgICAgIGl0ZW0uc2V0UG9zaXRpb24oaXRlbS53aWR0aCAqICgwLjUgKyBjb2wpICsgdGhpcy5zcGFjZVggKiBjb2wgKyB0aGlzLnBhZGRpbmdfbGVmdCwgLWl0ZW0uaGVpZ2h0ICogKDAuNSArIHJvdykgLSB0aGlzLnNwYWNlWSAqIHJvdyAtIHRoaXMucGFkZGluZ190b3ApO1xyXG4gICAgICAgICAgICAgICAgICAgIGl0ZW0ub3BhY2l0eSA9IDI1NTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgdGhpcy5zY3JvbGxWaWV3LnNjcm9sbFRvT2Zmc2V0KG9mZnNldCk7XHJcbiAgICB9XHJcblxyXG4gICAgLyoq6I635Y+W5LiA5Liq5YiX6KGo6aG5ICovXHJcbiAgICBwcml2YXRlIGdldEl0ZW0oKSB7XHJcbiAgICAgICAgaWYgKHRoaXMuaXRlbVBvb2wubGVuZ3RoID09IDApIHtcclxuICAgICAgICAgICAgcmV0dXJuIGNjLmluc3RhbnRpYXRlKHRoaXMuaXRlbVJlbmRlcik7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgcmV0dXJuIHRoaXMuaXRlbVBvb2wucG9wKCk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHVwZGF0ZShkdCkge1xyXG4gICAgICAgIGlmICh0aGlzLmJTY3JvbGxpbmcgPT0gZmFsc2UpIHtcclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLnVwZGF0ZVRpbWVyICs9IGR0O1xyXG4gICAgICAgIGlmICh0aGlzLnVwZGF0ZVRpbWVyIDwgdGhpcy51cGRhdGVJbnRlcnZhbCkge1xyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRoaXMudXBkYXRlVGltZXIgPSAwO1xyXG4gICAgICAgIHRoaXMuYlNjcm9sbGluZyA9IGZhbHNlO1xyXG4gICAgICAgIHRoaXMudXBkYXRlRnVuKCk7XHJcbiAgICB9XHJcblxyXG4gICAgb25TY3JvbGxpbmcoKSB7XHJcbiAgICAgICAgdGhpcy5iU2Nyb2xsaW5nID0gdHJ1ZTtcclxuICAgIH1cclxuXHJcbiAgICAvKirlnoLnm7TmjpLliJcgKi9cclxuICAgIHByaXZhdGUgdXBkYXRlVigpIHtcclxuICAgICAgICBsZXQgaXRlbXMgPSB0aGlzLml0ZW1MaXN0O1xyXG4gICAgICAgIGxldCBpdGVtO1xyXG4gICAgICAgIGxldCBidWZmZXJab25lID0gdGhpcy5oYWxmU2Nyb2xsVmlldztcclxuICAgICAgICBsZXQgaXNVcCA9IHRoaXMuc2Nyb2xsVmlldy5jb250ZW50LnkgPiB0aGlzLmxhc3RDb250ZW50UG9zWTtcclxuICAgICAgICBsZXQgb2Zmc2V0ID0gKHRoaXMuaXRlbUhlaWdodCArIHRoaXMuc3BhY2VZKSAqIGl0ZW1zLmxlbmd0aDtcclxuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGl0ZW1zLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgICAgIGl0ZW0gPSBpdGVtc1tpXTtcclxuICAgICAgICAgICAgbGV0IHZpZXdQb3MgPSB0aGlzLmdldFBvc2l0aW9uSW5WaWV3KGl0ZW0pO1xyXG4gICAgICAgICAgICBpZiAoaXNVcCkge1xyXG4gICAgICAgICAgICAgICAgLy9pdGVt5LiK5ruR5pe277yM6LaF5Ye65LqGc2Nyb2xsVmlld+S4iui+ueeVjO+8jOWwhml0ZW3np7vliqjliLDkuIvmlrnlpI3nlKjvvIxpdGVt56e75Yqo5Yiw5LiL5pa555qE5L2N572u5b+F6aG75LiN6LaF6L+HY29udGVudOeahOS4i+i+ueeVjFxyXG4gICAgICAgICAgICAgICAgaWYgKHZpZXdQb3MueSA+IGJ1ZmZlclpvbmUgJiYgaXRlbS55IC0gb2Zmc2V0IC0gdGhpcy5wYWRkaW5nX2J1dHRvbSA+IC10aGlzLmNvbnRlbnQuaGVpZ2h0KSB7XHJcbiAgICAgICAgICAgICAgICAgICAgbGV0IGl0ZW1SZW5kZXI6IEl0ZW1SZW5kZXIgPSBpdGVtLmdldENvbXBvbmVudChJdGVtUmVuZGVyKTtcclxuICAgICAgICAgICAgICAgICAgICBsZXQgaXRlbUluZGV4ID0gaXRlbVJlbmRlci5pdGVtSW5kZXggKyBpdGVtcy5sZW5ndGg7XHJcbiAgICAgICAgICAgICAgICAgICAgaXRlbVJlbmRlci5pdGVtSW5kZXggPSBpdGVtSW5kZXg7XHJcbiAgICAgICAgICAgICAgICAgICAgaXRlbVJlbmRlci5kYXRhID0gdGhpcy5pdGVtRGF0YUxpc3RbaXRlbUluZGV4XTtcclxuICAgICAgICAgICAgICAgICAgICBpdGVtUmVuZGVyLmRhdGFDaGFuZ2VkKCk7XHJcbiAgICAgICAgICAgICAgICAgICAgaXRlbS55ID0gaXRlbS55IC0gb2Zmc2V0O1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgLy9pdGVt5LiL5ruR5pe277yM6LaF5Ye65LqGc2Nyb2xsVmlld+S4i+i+ueeVjO+8jOWwhml0ZW3np7vliqjliLDkuIrmlrnlpI3nlKjvvIxpdGVt56e75Yqo5Yiw5LiK5pa555qE5L2N572u5b+F6aG75LiN6LaF6L+HY29udGVudOeahOS4iui+ueeVjFxyXG4gICAgICAgICAgICAgICAgaWYgKHZpZXdQb3MueSA8IC1idWZmZXJab25lICYmIGl0ZW0ueSArIG9mZnNldCArIHRoaXMucGFkZGluZ190b3AgPCAwKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgbGV0IGl0ZW1SZW5kZXI6IEl0ZW1SZW5kZXIgPSBpdGVtLmdldENvbXBvbmVudChJdGVtUmVuZGVyKTtcclxuICAgICAgICAgICAgICAgICAgICBsZXQgaXRlbUluZGV4ID0gaXRlbVJlbmRlci5pdGVtSW5kZXggLSBpdGVtcy5sZW5ndGg7XHJcbiAgICAgICAgICAgICAgICAgICAgaXRlbVJlbmRlci5pdGVtSW5kZXggPSBpdGVtSW5kZXg7XHJcbiAgICAgICAgICAgICAgICAgICAgaXRlbVJlbmRlci5kYXRhID0gdGhpcy5pdGVtRGF0YUxpc3RbaXRlbUluZGV4XTtcclxuICAgICAgICAgICAgICAgICAgICBpdGVtUmVuZGVyLmRhdGFDaGFuZ2VkKCk7XHJcbiAgICAgICAgICAgICAgICAgICAgaXRlbS55ID0gaXRlbS55ICsgb2Zmc2V0O1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRoaXMubGFzdENvbnRlbnRQb3NZID0gdGhpcy5zY3JvbGxWaWV3LmNvbnRlbnQueTtcclxuICAgIH1cclxuXHJcbiAgICAvKirmsLTlubPmjpLliJcgKi9cclxuICAgIHByaXZhdGUgdWRwYXRlSCgpIHtcclxuICAgICAgICBsZXQgaXRlbXMgPSB0aGlzLml0ZW1MaXN0O1xyXG4gICAgICAgIGxldCBpdGVtO1xyXG4gICAgICAgIGxldCBidWZmZXJab25lID0gdGhpcy5oYWxmU2Nyb2xsVmlldztcclxuICAgICAgICBsZXQgaXNSaWdodCA9IHRoaXMuc2Nyb2xsVmlldy5jb250ZW50LnggPiB0aGlzLmxhc3RDb250ZW50UG9zWDtcclxuICAgICAgICBsZXQgb2Zmc2V0ID0gKHRoaXMuaXRlbVdpZHRoICsgdGhpcy5zcGFjZVgpICogaXRlbXMubGVuZ3RoO1xyXG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgaXRlbXMubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICAgICAgaXRlbSA9IGl0ZW1zW2ldO1xyXG4gICAgICAgICAgICBsZXQgdmlld1BvcyA9IHRoaXMuZ2V0UG9zaXRpb25JblZpZXcoaXRlbSk7XHJcbiAgICAgICAgICAgIGlmIChpc1JpZ2h0KSB7XHJcbiAgICAgICAgICAgICAgICAvL2l0ZW3lj7Pmu5Hml7bvvIzotoXlh7rkuoZzY3JvbGxWaWV35Y+z6L6555WM77yM5bCGaXRlbeenu+WKqOWIsOW3puaWueWkjeeUqO+8jGl0ZW3np7vliqjliLDlt6bmlrnnmoTkvY3nva7lv4XpobvkuI3otoXov4djb250ZW5055qE5bem6L6555WMXHJcbiAgICAgICAgICAgICAgICBpZiAodmlld1Bvcy54ID4gYnVmZmVyWm9uZSAmJiBpdGVtLnggLSBvZmZzZXQgLSB0aGlzLnBhZGRpbmdfbGVmdCA+IDApIHtcclxuICAgICAgICAgICAgICAgICAgICBsZXQgaXRlbVJlbmRlcjogSXRlbVJlbmRlciA9IGl0ZW0uZ2V0Q29tcG9uZW50KEl0ZW1SZW5kZXIpO1xyXG4gICAgICAgICAgICAgICAgICAgIGxldCBpdGVtSW5kZXggPSBpdGVtUmVuZGVyLml0ZW1JbmRleCAtIGl0ZW1zLmxlbmd0aDtcclxuICAgICAgICAgICAgICAgICAgICBpdGVtUmVuZGVyLml0ZW1JbmRleCA9IGl0ZW1JbmRleDtcclxuICAgICAgICAgICAgICAgICAgICBpdGVtUmVuZGVyLmRhdGEgPSB0aGlzLml0ZW1EYXRhTGlzdFtpdGVtSW5kZXhdO1xyXG4gICAgICAgICAgICAgICAgICAgIGl0ZW1SZW5kZXIuZGF0YUNoYW5nZWQoKTtcclxuICAgICAgICAgICAgICAgICAgICBpdGVtLnggPSBpdGVtLnggLSBvZmZzZXQ7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAvL2l0ZW3lt6bmu5Hml7bvvIzotoXlh7rkuoZzY3JvbGxWaWV35bem6L6555WM77yM5bCGaXRlbeenu+WKqOWIsOWPs+aWueWkjeeUqO+8jGl0ZW3np7vliqjliLDlj7PmlrnnmoTkvY3nva7lv4XpobvkuI3otoXov4djb250ZW5055qE5Y+z6L6555WMXHJcbiAgICAgICAgICAgICAgICBpZiAodmlld1Bvcy54IDwgLWJ1ZmZlclpvbmUgJiYgaXRlbS54ICsgb2Zmc2V0ICsgdGhpcy5wYWRkaW5nX3JpZ2h0IDwgdGhpcy5jb250ZW50LndpZHRoKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgbGV0IGl0ZW1SZW5kZXI6IEl0ZW1SZW5kZXIgPSBpdGVtLmdldENvbXBvbmVudChJdGVtUmVuZGVyKTtcclxuICAgICAgICAgICAgICAgICAgICBsZXQgaXRlbUluZGV4ID0gaXRlbVJlbmRlci5pdGVtSW5kZXggKyBpdGVtcy5sZW5ndGg7XHJcbiAgICAgICAgICAgICAgICAgICAgaXRlbVJlbmRlci5pdGVtSW5kZXggPSBpdGVtSW5kZXg7XHJcbiAgICAgICAgICAgICAgICAgICAgaXRlbVJlbmRlci5kYXRhID0gdGhpcy5pdGVtRGF0YUxpc3RbaXRlbUluZGV4XTtcclxuICAgICAgICAgICAgICAgICAgICBpdGVtUmVuZGVyLmRhdGFDaGFuZ2VkKCk7XHJcbiAgICAgICAgICAgICAgICAgICAgaXRlbS54ID0gaXRlbS54ICsgb2Zmc2V0O1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRoaXMubGFzdENvbnRlbnRQb3NYID0gdGhpcy5zY3JvbGxWaWV3LmNvbnRlbnQueDtcclxuICAgIH1cclxuXHJcbiAgICAvKirnvZHmoLzlnoLnm7TmjpLliJcgKi9cclxuICAgIHByaXZhdGUgdXBkYXRlR3JpZF9WKCkge1xyXG4gICAgICAgIGxldCBpdGVtcyA9IHRoaXMuaXRlbUxpc3Q7XHJcbiAgICAgICAgbGV0IGl0ZW06IGNjLk5vZGU7XHJcbiAgICAgICAgbGV0IGJ1ZmZlclpvbmUgPSB0aGlzLmhhbGZTY3JvbGxWaWV3O1xyXG4gICAgICAgIGxldCBpc1VwID0gdGhpcy5zY3JvbGxWaWV3LmNvbnRlbnQueSA+IHRoaXMubGFzdENvbnRlbnRQb3NZO1xyXG4gICAgICAgIGxldCBvZmZzZXQgPSAodGhpcy5pdGVtSGVpZ2h0ICsgdGhpcy5zcGFjZVkpICogKHRoaXMuc3Bhd25Db3VudCAvIHRoaXMuZ3JpZENvbCk7XHJcbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBpdGVtcy5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgICAgICBpdGVtID0gaXRlbXNbaV07XHJcbiAgICAgICAgICAgIGxldCB2aWV3UG9zID0gdGhpcy5nZXRQb3NpdGlvbkluVmlldyhpdGVtKTtcclxuICAgICAgICAgICAgaWYgKGlzVXApIHtcclxuICAgICAgICAgICAgICAgIC8vaXRlbeS4iua7keaXtu+8jOi2heWHuuS6hnNjcm9sbFZpZXfkuIrovrnnlYzvvIzlsIZpdGVt56e75Yqo5Yiw5LiL5pa55aSN55So77yMaXRlbeenu+WKqOWIsOS4i+aWueeahOS9jee9ruW/hemhu+S4jei2hei/h2NvbnRlbnTnmoTkuIvovrnnlYxcclxuICAgICAgICAgICAgICAgIGlmICh2aWV3UG9zLnkgPiBidWZmZXJab25lICYmIGl0ZW0ueSAtIG9mZnNldCAtIHRoaXMucGFkZGluZ19idXR0b20gPiAtdGhpcy5jb250ZW50LmhlaWdodCkge1xyXG4gICAgICAgICAgICAgICAgICAgIGxldCBpdGVtUmVuZGVyOiBJdGVtUmVuZGVyID0gaXRlbS5nZXRDb21wb25lbnQoSXRlbVJlbmRlcik7XHJcbiAgICAgICAgICAgICAgICAgICAgbGV0IGl0ZW1JbmRleCA9IGl0ZW1SZW5kZXIuaXRlbUluZGV4ICsgKHRoaXMuc3Bhd25Db3VudCAvIHRoaXMuZ3JpZENvbCkgKiB0aGlzLmdyaWRDb2w7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMuaXRlbURhdGFMaXN0W2l0ZW1JbmRleF0gIT0gbnVsbCkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBpdGVtLnkgPSBpdGVtLnkgLSBvZmZzZXQ7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGl0ZW1SZW5kZXIuaXRlbUluZGV4ID0gaXRlbUluZGV4O1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBpdGVtUmVuZGVyLmRhdGEgPSB0aGlzLml0ZW1EYXRhTGlzdFtpdGVtSW5kZXhdO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBpdGVtUmVuZGVyLmRhdGFDaGFuZ2VkKCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGl0ZW0ub3BhY2l0eSA9IDI1NTtcclxuICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBpdGVtLnkgPSBpdGVtLnkgLSBvZmZzZXQ7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGl0ZW1SZW5kZXIuaXRlbUluZGV4ID0gaXRlbUluZGV4O1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBpdGVtLm9wYWNpdHkgPSAwO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfSBlbHNlIHsvL2l0ZW3kuIvmu5Hml7bvvIzotoXlh7rkuoZzY3JvbGxWaWV35LiL6L6555WM77yM5bCGaXRlbeenu+WKqOWIsOS4iuaWueWkjeeUqO+8jGl0ZW3np7vliqjliLDkuIrmlrnnmoTkvY3nva7lv4XpobvkuI3otoXov4djb250ZW5055qE5LiK6L6555WMXHJcbiAgICAgICAgICAgICAgICBpZiAodmlld1Bvcy55IDwgLWJ1ZmZlclpvbmUgJiYgaXRlbS55ICsgb2Zmc2V0ICsgdGhpcy5wYWRkaW5nX3RvcCA8IDApIHtcclxuICAgICAgICAgICAgICAgICAgICBsZXQgaXRlbVJlbmRlcjogSXRlbVJlbmRlciA9IGl0ZW0uZ2V0Q29tcG9uZW50KEl0ZW1SZW5kZXIpO1xyXG4gICAgICAgICAgICAgICAgICAgIGxldCBpdGVtSW5kZXggPSBpdGVtUmVuZGVyLml0ZW1JbmRleCAtICh0aGlzLnNwYXduQ291bnQgLyB0aGlzLmdyaWRDb2wpICogdGhpcy5ncmlkQ29sO1xyXG4gICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLml0ZW1EYXRhTGlzdFtpdGVtSW5kZXhdICE9IG51bGwpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgaXRlbS55ID0gaXRlbS55ICsgb2Zmc2V0O1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBpdGVtUmVuZGVyLml0ZW1JbmRleCA9IGl0ZW1JbmRleDtcclxuICAgICAgICAgICAgICAgICAgICAgICAgaXRlbVJlbmRlci5kYXRhID0gdGhpcy5pdGVtRGF0YUxpc3RbaXRlbUluZGV4XTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgaXRlbVJlbmRlci5kYXRhQ2hhbmdlZCgpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBpdGVtLm9wYWNpdHkgPSAyNTU7XHJcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgaXRlbS55ID0gaXRlbS55ICsgb2Zmc2V0O1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBpdGVtUmVuZGVyLml0ZW1JbmRleCA9IGl0ZW1JbmRleDtcclxuICAgICAgICAgICAgICAgICAgICAgICAgaXRlbS5vcGFjaXR5ID0gMDtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgdGhpcy5sYXN0Q29udGVudFBvc1kgPSB0aGlzLnNjcm9sbFZpZXcuY29udGVudC55O1xyXG4gICAgfVxyXG5cclxuICAgIC8qKue9keagvOawtOW5s+aOkuWIlyAqL1xyXG4gICAgcHJpdmF0ZSB1cGRhdGVHcmlkX0goKSB7XHJcbiAgICAgICAgbGV0IGl0ZW1zID0gdGhpcy5pdGVtTGlzdDtcclxuICAgICAgICBsZXQgaXRlbTtcclxuICAgICAgICBsZXQgYnVmZmVyWm9uZSA9IHRoaXMuaGFsZlNjcm9sbFZpZXc7XHJcbiAgICAgICAgbGV0IGlzUmlnaHQgPSB0aGlzLnNjcm9sbFZpZXcuY29udGVudC54ID4gdGhpcy5sYXN0Q29udGVudFBvc1g7XHJcbiAgICAgICAgbGV0IG9mZnNldCA9ICh0aGlzLml0ZW1XaWR0aCArIHRoaXMuc3BhY2VYKSAqICh0aGlzLnNwYXduQ291bnQgLyB0aGlzLmdyaWRSb3cpO1xyXG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgaXRlbXMubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICAgICAgaXRlbSA9IGl0ZW1zW2ldO1xyXG4gICAgICAgICAgICBsZXQgdmlld1BvcyA9IHRoaXMuZ2V0UG9zaXRpb25JblZpZXcoaXRlbSk7XHJcbiAgICAgICAgICAgIGlmIChpc1JpZ2h0KSB7XHJcbiAgICAgICAgICAgICAgICAvL2l0ZW3lj7Pmu5Hml7bvvIzotoXlh7rkuoZzY3JvbGxWaWV35Y+z6L6555WM77yM5bCGaXRlbeenu+WKqOWIsOW3puaWueWkjeeUqO+8jGl0ZW3np7vliqjliLDlt6bmlrnnmoTkvY3nva7lv4XpobvkuI3otoXov4djb250ZW5055qE5bem6L6555WMXHJcbiAgICAgICAgICAgICAgICBpZiAodmlld1Bvcy54ID4gYnVmZmVyWm9uZSAmJiBpdGVtLnggLSBvZmZzZXQgLSB0aGlzLnBhZGRpbmdfbGVmdCA+IDApIHtcclxuICAgICAgICAgICAgICAgICAgICBsZXQgaXRlbVJlbmRlcjogSXRlbVJlbmRlciA9IGl0ZW0uZ2V0Q29tcG9uZW50KEl0ZW1SZW5kZXIpO1xyXG4gICAgICAgICAgICAgICAgICAgIGxldCBpdGVtSW5kZXggPSBpdGVtUmVuZGVyLml0ZW1JbmRleCAtICh0aGlzLnNwYXduQ291bnQgLyB0aGlzLmdyaWRSb3cpICogdGhpcy5ncmlkUm93O1xyXG4gICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLml0ZW1EYXRhTGlzdFtpdGVtSW5kZXhdICE9IG51bGwpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgaXRlbS54ID0gaXRlbS54IC0gb2Zmc2V0O1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBpdGVtUmVuZGVyLml0ZW1JbmRleCA9IGl0ZW1JbmRleDtcclxuICAgICAgICAgICAgICAgICAgICAgICAgaXRlbVJlbmRlci5kYXRhID0gdGhpcy5pdGVtRGF0YUxpc3RbaXRlbUluZGV4XTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgaXRlbVJlbmRlci5kYXRhQ2hhbmdlZCgpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBpdGVtLm9wYWNpdHkgPSAyNTU7XHJcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgaXRlbS54ID0gaXRlbS54IC0gb2Zmc2V0O1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBpdGVtUmVuZGVyLml0ZW1JbmRleCA9IGl0ZW1JbmRleDtcclxuICAgICAgICAgICAgICAgICAgICAgICAgaXRlbS5vcGFjaXR5ID0gMDtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAvL2l0ZW3lt6bmu5Hml7bvvIzotoXlh7rkuoZzY3JvbGxWaWV35bem6L6555WM77yM5bCGaXRlbeenu+WKqOWIsOWPs+aWueWkjeeUqO+8jGl0ZW3np7vliqjliLDlj7PmlrnnmoTkvY3nva7lv4XpobvkuI3otoXov4djb250ZW5055qE5Y+z6L6555WMXHJcbiAgICAgICAgICAgICAgICBpZiAodmlld1Bvcy54IDwgLWJ1ZmZlclpvbmUgJiYgaXRlbS54ICsgb2Zmc2V0ICsgdGhpcy5wYWRkaW5nX3JpZ2h0IDwgdGhpcy5jb250ZW50LndpZHRoKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgbGV0IGl0ZW1SZW5kZXI6IEl0ZW1SZW5kZXIgPSBpdGVtLmdldENvbXBvbmVudChJdGVtUmVuZGVyKTtcclxuICAgICAgICAgICAgICAgICAgICBsZXQgaXRlbUluZGV4ID0gaXRlbVJlbmRlci5pdGVtSW5kZXggKyAodGhpcy5zcGF3bkNvdW50IC8gdGhpcy5ncmlkUm93KSAqIHRoaXMuZ3JpZFJvdztcclxuICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy5pdGVtRGF0YUxpc3RbaXRlbUluZGV4XSAhPSBudWxsKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGl0ZW0ueCA9IGl0ZW0ueCArIG9mZnNldDtcclxuICAgICAgICAgICAgICAgICAgICAgICAgaXRlbVJlbmRlci5pdGVtSW5kZXggPSBpdGVtSW5kZXg7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGl0ZW1SZW5kZXIuZGF0YSA9IHRoaXMuaXRlbURhdGFMaXN0W2l0ZW1JbmRleF07XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGl0ZW1SZW5kZXIuZGF0YUNoYW5nZWQoKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgaXRlbS5vcGFjaXR5ID0gMjU1O1xyXG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGl0ZW0ueCA9IGl0ZW0ueCArIG9mZnNldDtcclxuICAgICAgICAgICAgICAgICAgICAgICAgaXRlbVJlbmRlci5pdGVtSW5kZXggPSBpdGVtSW5kZXg7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGl0ZW0ub3BhY2l0eSA9IDA7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRoaXMubGFzdENvbnRlbnRQb3NYID0gdGhpcy5zY3JvbGxWaWV3LmNvbnRlbnQueDtcclxuICAgIH1cclxuXHJcbiAgICAvKirojrflj5ZpdGVt5Zyoc2Nyb2xsVmlld+eahOWxgOmDqOWdkOaghyAqL1xyXG4gICAgcHJpdmF0ZSBnZXRQb3NpdGlvbkluVmlldyhpdGVtKSB7XHJcbiAgICAgICAgbGV0IHdvcmxkUG9zID0gaXRlbS5wYXJlbnQuY29udmVydFRvV29ybGRTcGFjZUFSKGl0ZW0ucG9zaXRpb24pO1xyXG4gICAgICAgIGxldCB2aWV3UG9zID0gdGhpcy5zY3JvbGxWaWV3Lm5vZGUuY29udmVydFRvTm9kZVNwYWNlQVIod29ybGRQb3MpO1xyXG4gICAgICAgIHJldHVybiB2aWV3UG9zO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKuiOt+WPluWIl+ihqOaVsOaNriAqL1xyXG4gICAgcHVibGljIGdldExpc3REYXRhKCkge1xyXG4gICAgICAgIHJldHVybiB0aGlzLml0ZW1EYXRhTGlzdDtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIOWinuWKoOS4gOmhueaVsOaNruWIsOWIl+ihqOeahOacq+WwvlxyXG4gICAgICogQHBhcmFtIGRhdGEg5pWw5o2uXHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyBhZGRJdGVtKGRhdGE6IGFueSkge1xyXG4gICAgICAgIHRoaXMuaXRlbURhdGFMaXN0LnB1c2goZGF0YSk7XHJcbiAgICAgICAgdGhpcy51cGRhdGVDb250ZW50KCk7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiDlop7liqDkuIDpobnmlbDmja7liLDliJfooajmjIflrprkvY3nva5cclxuICAgICAqIEBwYXJhbSBpbmRleCAgIOS9jee9ru+8jDDooajnpLrnrKwx6aG5XHJcbiAgICAgKiBAcGFyYW0gZGF0YSAg5pWw5o2uXHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyBhZGRJdGVtQXQoaW5kZXg6IG51bWJlciwgZGF0YTogYW55KSB7XHJcbiAgICAgICAgaWYgKHRoaXMuaXRlbURhdGFMaXN0W2luZGV4XSAhPSBudWxsIHx8IHRoaXMuaXRlbURhdGFMaXN0Lmxlbmd0aCA9PSBpbmRleCkge1xyXG4gICAgICAgICAgICB0aGlzLml0ZW1EYXRhTGlzdC5zcGxpY2UoaW5kZXgsIDEsIGRhdGEpO1xyXG4gICAgICAgICAgICB0aGlzLnVwZGF0ZUNvbnRlbnQoKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiDliKDpmaTkuIDpobnmlbDmja5cclxuICAgICAqIEBwYXJhbSBpbmRleCDliKDpmaTpobnnmoTkvY3nva4gLDDooajnpLrnrKwx6aG5XHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyBkZWxldGVJdGVtKGluZGV4OiBudW1iZXIpIHtcclxuICAgICAgICBpZiAodGhpcy5pdGVtRGF0YUxpc3RbaW5kZXhdICE9IG51bGwpIHtcclxuICAgICAgICAgICAgdGhpcy5pdGVtRGF0YUxpc3Quc3BsaWNlKGluZGV4LCAxKTtcclxuICAgICAgICAgICAgdGhpcy51cGRhdGVDb250ZW50KCk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICog5pS55Y+Y5LiA6aG55pWw5o2uXHJcbiAgICAgKiBAcGFyYW0gaW5kZXggICDkvY3nva4sMOihqOekuuesrDHpoblcclxuICAgICAqIEBwYXJhbSBkYXRhICDmm7/mjaLnmoTmlbDmja5cclxuICAgICAqL1xyXG4gICAgcHVibGljIGNoYW5nZUl0ZW0oaW5kZXg6IG51bWJlciwgZGF0YTogYW55KSB7XHJcbiAgICAgICAgaWYgKHRoaXMuaXRlbURhdGFMaXN0W2luZGV4XSAhPSBudWxsKSB7XHJcbiAgICAgICAgICAgIHRoaXMuaXRlbURhdGFMaXN0W2luZGV4XSA9IGRhdGE7XHJcbiAgICAgICAgICAgIHRoaXMudXBkYXRlQ29udGVudCgpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICAvKirojrflj5bnrKzkuIDkuKpJdGVt55qE5L2N572uICovXHJcbiAgICBwcml2YXRlIHVwZGF0ZUNvbnRlbnQoKSB7XHJcbiAgICAgICAgLy/mmL7npLrliJfooajlrp7kvovkuLow5LiqXHJcbiAgICAgICAgaWYgKHRoaXMuaXRlbUxpc3QubGVuZ3RoID09IDApIHtcclxuICAgICAgICAgICAgdGhpcy5jb3VudExpc3RQYXJhbSgpO1xyXG4gICAgICAgICAgICB0aGlzLmNyZWF0ZUxpc3QoMCwgbmV3IGNjLlZlYzIoMCwgMCkpO1xyXG4gICAgICAgICAgICAvL+aYvuekuuWIl+ihqOeahOWunuS+i+S4jeS4ujDkuKrvvIzliJnpnIDopoHph43mlrDmjpLliJdpdGVt5a6e5L6L5pWw57uEXHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgaWYgKHRoaXMudHlwZSA9PSBMaXN0VHlwZS5WZXJ0aWNhbCkge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5pdGVtTGlzdC5zb3J0KChhOiBhbnksIGI6IGFueSkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBiLnkgLSBhLnk7XHJcbiAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgfSBlbHNlIGlmICh0aGlzLnR5cGUgPT0gTGlzdFR5cGUuSG9yaXpvbnRhbCkge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5pdGVtTGlzdC5zb3J0KChhOiBhbnksIGI6IGFueSkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBhLnggLSBiLng7XHJcbiAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgfSBlbHNlIGlmICh0aGlzLnR5cGUgPT0gTGlzdFR5cGUuR3JpZCkge1xyXG4gICAgICAgICAgICAgICAgaWYgKHRoaXMuc3RhcnRBeGlzID09IFN0YXJ0QXhpc1R5cGUuVmVydGljYWwpIHtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLml0ZW1MaXN0LnNvcnQoKGE6IGFueSwgYjogYW55KSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBhLnggLSBiLng7XHJcbiAgICAgICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5pdGVtTGlzdC5zb3J0KChhOiBhbnksIGI6IGFueSkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gYi55IC0gYS55O1xyXG4gICAgICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICAgICAgfSBlbHNlIGlmICh0aGlzLnN0YXJ0QXhpcyA9PSBTdGFydEF4aXNUeXBlLkhvcml6b250YWwpIHtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLml0ZW1MaXN0LnNvcnQoKGE6IGFueSwgYjogYW55KSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBiLnkgLSBhLnk7XHJcbiAgICAgICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5pdGVtTGlzdC5zb3J0KChhOiBhbnksIGI6IGFueSkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gYS54IC0gYi54O1xyXG4gICAgICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICB0aGlzLmNvdW50TGlzdFBhcmFtKCk7XHJcblxyXG4gICAgICAgICAgICAvL+iOt+WPluesrOS4gOS4qml0ZW3lrp7kvovpnIDopoHmmL7npLrnmoTmlbDmja7ntKLlvJVcclxuICAgICAgICAgICAgdmFyIHN0YXJ0SW5kZXggPSB0aGlzLml0ZW1MaXN0WzBdLmdldENvbXBvbmVudChJdGVtUmVuZGVyKS5pdGVtSW5kZXg7XHJcblxyXG4gICAgICAgICAgICBpZiAodGhpcy50eXBlID09IExpc3RUeXBlLkdyaWQgJiYgdGhpcy5zdGFydEF4aXMgPT0gU3RhcnRBeGlzVHlwZS5WZXJ0aWNhbCkge1xyXG4gICAgICAgICAgICAgICAgc3RhcnRJbmRleCArPSAoc3RhcnRJbmRleCArIHRoaXMuc3Bhd25Db3VudCkgJSB0aGlzLmdyaWRDb2w7XHJcbiAgICAgICAgICAgIH0gZWxzZSBpZiAodGhpcy50eXBlID09IExpc3RUeXBlLkdyaWQgJiYgdGhpcy5zdGFydEF4aXMgPT0gU3RhcnRBeGlzVHlwZS5Ib3Jpem9udGFsKSB7XHJcbiAgICAgICAgICAgICAgICBzdGFydEluZGV4ICs9IChzdGFydEluZGV4ICsgdGhpcy5zcGF3bkNvdW50KSAlIHRoaXMuZ3JpZFJvdztcclxuICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgLy9nZXRTY3JvbGxPZmZzZXQoKeWSjHNjcm9sbFRvT2Zmc2V0KCnnmoR45YC85piv55u45Y+N55qEXHJcbiAgICAgICAgICAgIHZhciBvZmZzZXQ6IGNjLlZlYzIgPSB0aGlzLnNjcm9sbFZpZXcuZ2V0U2Nyb2xsT2Zmc2V0KCk7XHJcbiAgICAgICAgICAgIG9mZnNldC54ID0gLSBvZmZzZXQueDtcclxuXHJcbiAgICAgICAgICAgIHRoaXMuY3JlYXRlTGlzdChzdGFydEluZGV4LCBvZmZzZXQpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICAvKirplIDmr4EgKi9cclxuICAgIHB1YmxpYyBvbkRlc3Ryb3koKSB7XHJcbiAgICAgICAgLy/muIXnkIbliJfooajpoblcclxuICAgICAgICBsZXQgbGVuID0gdGhpcy5pdGVtTGlzdC5sZW5ndGg7XHJcbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBsZW47IGkrKykge1xyXG4gICAgICAgICAgICBpZiAoY2MuaXNWYWxpZCh0aGlzLml0ZW1MaXN0W2ldLCB0cnVlKSkge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5pdGVtTGlzdFtpXS5kZXN0cm95KCk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgdGhpcy5pdGVtTGlzdC5sZW5ndGggPSAwO1xyXG4gICAgICAgIC8v5riF55CG5a+56LGh5rGgXHJcbiAgICAgICAgbGVuID0gdGhpcy5pdGVtUG9vbC5sZW5ndGg7XHJcbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBsZW47IGkrKykge1xyXG4gICAgICAgICAgICBpZiAoY2MuaXNWYWxpZCh0aGlzLml0ZW1Qb29sW2ldLCB0cnVlKSkge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5pdGVtUG9vbFtpXS5kZXN0cm95KCk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgdGhpcy5pdGVtUG9vbC5sZW5ndGggPSAwO1xyXG4gICAgICAgIC8v5riF55CG5YiX6KGo5pWw5o2uXHJcbiAgICAgICAgdGhpcy5pdGVtRGF0YUxpc3QubGVuZ3RoID0gMDtcclxuICAgIH1cclxufVxyXG4iXX0= +//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImFzc2V0c1xcU2NyaXB0XFxscV9iYXNlXFxkYXRhXFxscV9jb25zdC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSxJQUFPLElBQUksR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDO0FBRXRCLElBQVksY0FFWDtBQUZELFdBQVksY0FBYztJQUN0QixtREFBSSxDQUFBO0lBQUUscURBQUssQ0FBQTtJQUFFLHFEQUFLLENBQUE7QUFDdEIsQ0FBQyxFQUZXLGNBQWMsR0FBZCxzQkFBYyxLQUFkLHNCQUFjLFFBRXpCO0FBRUQsSUFBWSxxQkFFWDtBQUZELFdBQVkscUJBQXFCO0lBQzdCLGlFQUFJLENBQUE7SUFBRSxtRUFBSyxDQUFBO0lBQUUsK0RBQUcsQ0FBQTtBQUNwQixDQUFDLEVBRlcscUJBQXFCLEdBQXJCLDZCQUFxQixLQUFyQiw2QkFBcUIsUUFFaEM7QUFFRCxJQUFZLGNBRVg7QUFGRCxXQUFZLGNBQWM7SUFDdEIsbURBQVEsQ0FBQTtJQUFFLHVEQUFNLENBQUE7SUFBRSx5REFBTyxDQUFBO0FBQzdCLENBQUMsRUFGVyxjQUFjLEdBQWQsc0JBQWMsS0FBZCxzQkFBYyxRQUV6QjtBQUVELElBQVksa0JBRVg7QUFGRCxXQUFZLGtCQUFrQjtJQUMxQiwrREFBTSxDQUFBO0lBQUUsMkRBQUksQ0FBQTtJQUFFLDJEQUFJLENBQUE7QUFDdEIsQ0FBQyxFQUZXLGtCQUFrQixHQUFsQiwwQkFBa0IsS0FBbEIsMEJBQWtCLFFBRTdCO0FBRUQsSUFBWSxlQUVYO0FBRkQsV0FBWSxlQUFlO0lBQ3ZCLHFEQUFJLENBQUE7SUFBRSxxREFBSSxDQUFBO0FBQ2QsQ0FBQyxFQUZXLGVBQWUsR0FBZix1QkFBZSxLQUFmLHVCQUFlLFFBRTFCO0FBRUQsSUFBWSxRQUdYO0FBSEQsV0FBWSxRQUFRO0lBQ2hCLDZCQUFpQixDQUFBO0lBQUUsK0JBQW1CLENBQUE7SUFBRSw2QkFBaUIsQ0FBQTtJQUN6RCwrQkFBbUIsQ0FBQTtJQUFFLG1D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O0lBQUUsaURBQUksQ0FBQTtBQUN0QyxDQUFDLEVBRlcsYUFBYSxHQUFiLHFCQUFhLEtBQWIscUJBQWEsUUFFeEI7QUFFRDtJQUFBO0lBRUEsQ0FBQztJQURpQixnQkFBUSxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUM7SUFDdkMsY0FBQztDQUZELEFBRUMsSUFBQTtBQUZZLDBCQUFPIiwiZmlsZSI6IiIsInNvdXJjZVJvb3QiOiIvIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IFZlYzIgPSBjYy5WZWMyO1xyXG5cclxuZXhwb3J0IGVudW0gTFFSZWNvcmRTdGF0dXMge1xyXG4gICAgSWRsZSwgU3RhcnQsIFBhdXNlXHJcbn1cclxuXHJcbmV4cG9ydCBlbnVtIExRQnVsbGV0RW1pdHRlclN0YXR1cyB7XHJcbiAgICBJZGxlLCBTdGFydCwgRW5kXHJcbn1cclxuXHJcbmV4cG9ydCBlbnVtIExRQ29sbGlkZVNoYXBlIHtcclxuICAgIFJlY3QgPSAxLCBDaXJjbGUsIFBvbHlnb25cclxufVxyXG5cclxuZXhwb3J0IGVudW0gTFFGb2xsb3dUYXJnZXRNb2RlIHtcclxuICAgIEFsd2F5cywgT25jZSwgUGFzc1xyXG59XHJcblxyXG5leHBvcnQgZW51bSBMUUNvbGxpZGVTdGF0dXMge1xyXG4gICAgSWRsZSwgTGl2ZVxyXG59XHJcblxyXG5leHBvcnQgZW51bSBMUUVhc2luZyB7XHJcbiAgICBCYWNrSW4gPSAnYmFja0luJywgQmFja091dCA9ICdiYWNrT3V0JywgcXVhZEluID0gJ3F1YWRJbicsXHJcbiAgICBxdWFkT3V0ID0gJ3F1YWRPdXQnLCBxdWFkSW5PdXQgPSAncXVhZEluT3V0JywgY3ViaWNJbiA9ICdjdWJpY0luJywgZXhwb091dCA9ICdleHBvT3V0J1xyXG59XHJcblxyXG5leHBvcnQgZW51bSBMUUh0dHBSZXF1ZXN0VHlwZSB7XHJcbiAgICBHZXQgPSAnZ2V0JywgUG9zdCA9ICdwb3N0J1xyXG59XHJcblxyXG5leHBvcnQgZW51bSBMUUh0dHBEYXRhVHlwZSB7XHJcbiAgICBUZXh0LCBCaW5hcnlcclxufVxyXG5cclxuZXhwb3J0IGVudW0gTFFQbGF0Zm9ybVR5cGUge1xyXG4gICAgdW5rbm93biA9ICfmnKrnn6XlubPlj7AnLCBhbGwgPSAn5YWo5bmz5Y+wJywgd3ggPSAn5b6u5L+hJywgdHQgPSAn5a2X6IqC6Lez5YqoJywgb3BwbyA9ICdvcHBvJywgdml2byA9ICd2aXZvJywgcXEgPSAncXEnLCBiYWlkdSA9ICfnmb7luqYnLCBrd2FpZ2FtZSA9ICflv6vmiYsnLCBhbmRyb2lkID0gJ+WuieWNkycsIGlvcyA9ICfoi7nmnpwnLCBicm93c2VyID0gJ+a1j+iniOWZqCdcclxufVxyXG5cclxuZXhwb3J0IGVudW0gTFFCeXRlRGFuY2VUeXBlIHtcclxuICAgIHR0ID0gJ+WktOadoScsIHR0X2xpdGUgPSAn5aS05p2h5p6B6YCf54mIJywgZG91eWluID0gJ+aKlumfsycsIGRvdXlpbl9saXRlID0gJ+aKlumfs+aegemAn+eJiCcsIHBweCA9ICfnmq7nmq7omb4nLCBkZXZ0b29scyA9ICflrZfoioLlvIDlj5Hlt6XlhbcnXHJcbn1cclxuXHJcbmV4cG9ydCBlbnVtIExRQW5hbHlzaXNUYWcge1xyXG4gICAgVmlkZW9Db21wbGV0ZSA9ICd2aWRlb19jb21wbGV0ZScsIFZpZGVvQmVnaW4gPSAndmlkZW9fYmVnaW4nLCBWaWRlb0ludGVycnVwdCA9ICd2aWRlb19pbnRlcnJ1cHQnLCBJbnRlcnN0aXRpYWxTaG93ID0gJ2ludGVyc3RpdGlhbF9zaG93JywgQmFubmVyU2hvdyA9ICdiYW5uZXJfc2hvdycsIEV4cG9ydFNob3cgPSAnZXhwb3J0X3Nob3cnLCBOYXRpdmVTaG93ID0gJ25hdGl2ZV9zaG93JywgTmF0aXZlQ2xpY2sgPSAnbmF0aXZlX3Nob3cnXHJcbn1cclxuXHJcbmV4cG9ydCBlbnVtIExRQ2FsbEJhc2Uge1xyXG4gICAgSW5pdFNkaywgS2VlcFNjcmVlbk9uLCBWaWJyYXRlLCBHZXRWZXJzaW9uQ29kZSwgR2V0VmVyc2lvbk5hbWUsIE9wZW5VcmwsIERlbGV0ZURpciwgRGVsZXRlRmlsZVxyXG59XHJcblxyXG5leHBvcnQgZW51bSBMUUNhbGxBZCB7XHJcbiAgICBTaG93QmFubmVyLCBIaWRlQmFubmVyLCBTaG93VmlkZW8sIFNob3dJbnRlcnN0aXRpYWwsIFNob3dOYXRpdmUsIENhY2hlQWRcclxufVxyXG5cclxuZXhwb3J0IGVudW0gTFFBZEVyclN0ciB7XHJcbiAgICBVbnN1cHBvcnRlZCA9ICfkuI3mlK/mjIEnLCBOb1BhcmFtZXRlcnMgPSAn5rKh5pyJ6YWN572u5Y+C5pWwJywgTm9BRCA9ICfmmoLml6Dlub/lkYonLCBWZXJzaW9uT2xkID0gJ+eJiOacrOi/h+S9jicsIFZpZGVvSW50ZXJydXB0ID0gJ+S4reaWreaSreaUvicsIEluc3RhbmNlRXJyID0gJ+WunuS+i+S4uuepuicsIEFscmVhZHlFeGlzdCA9ICflt7Lnu4/lrZjlnKgnLCBJbnRlcnZhbFRvb1Nob3J0ID0gJ+mXtOmalOWkquefrSdcclxufVxyXG5cclxuZXhwb3J0IGVudW0gTFFMZXZlbFN0YXR1cyB7XHJcbiAgICBCZWdpbiwgRmFpbGVkLCBDb21wbGV0ZVxyXG59XHJcblxyXG5leHBvcnQgZW51bSBMUU9wZXJhdGVUeXBlIHtcclxuICAgIENsaWNrTm9kZSwgQ2xpY2tTY3JlZW4sIE1vdmUsIE51bGxcclxufVxyXG5cclxuZXhwb3J0IGNsYXNzIExRQ29uc3Qge1xyXG4gICAgcHVibGljIHN0YXRpYyBWRUNfWkVSTyA9IFZlYzIuWkVSTztcclxufVxyXG5cclxuIl19 +//------QC-SOURCE-SPLIT------ + + (function() { + var nodeEnv = typeof require !== 'undefined' && typeof process !== 'undefined'; + var __module = nodeEnv ? module : {exports:{}}; + var __filename = 'preview-scripts/assets/Script/module/Music/AudioManager.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, '58403/n16JCa5sZhNMjZzGo', 'AudioManager'); +// Script/module/Music/AudioManager.ts + +"use strict"; +var __extends = (this && this.__extends) || (function () { + var extendStatics = function (d, b) { + extendStatics = Object.setPrototypeOf || + ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) || + function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; }; + return extendStatics(d, b); + }; + return function (d, b) { + extendStatics(d, b); + function __() { this.constructor = d; } + d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); + }; +})(); +var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) { + var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; + if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc); + else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; + return c > 3 && r && Object.defineProperty(target, key, r), r; +}; +Object.defineProperty(exports, "__esModule", { value: true }); +var _a = cc._decorator, ccclass = _a.ccclass, property = _a.property; +var AudioManager = /** @class */ (function (_super) { + __extends(AudioManager, _super); + function AudioManager() { + var _this = _super !== null && _super.apply(this, arguments) || this; + //背景音乐 + _this.audioGameBgm0 = null; + _this.xiaochu = null; + _this.hit = null; + _this.down = null; + _this.fangxiang = null; + _this.build = null; + _this.win = null; + _this.lose = null; + _this.anniu_Big = null; + _this.anniu_little = null; + _this.zhuan1 = null; + _this.zhuan2 = null; + return _this; + } + AudioManager_1 = AudioManager; + AudioManager.prototype.onLoad = function () { + if (AudioManager_1._instance == null) { + AudioManager_1._instance = this; + cc.game.addPersistRootNode(this.node); + } + else { + return; + } + this.reward = false; + this.finish = false; + this.rewardCount = 0; + this.ctor(); + this.preload(); + }; + AudioManager.prototype.ctor = function () { + this.mAudioMap = {}; + /** + * 默认音量大小 + * @type {number} + */ + this.bgMusicVolume = 0.1; + this.effectMusicVolume = 1; + this.mMusicSwitch = 1; + this.mEffectSwitch = 1; + }; + AudioManager.prototype.play = function (audioSource, loop, callback, isBgMusic) { + // if (isBgMusic && !this.mMusicSwitch) return; + // if (!isBgMusic && !this.mEffectSwitch) return; + var volume = isBgMusic ? this.bgMusicVolume : this.effectMusicVolume; + // if (cc.sys.isBrowser) { + // if(audioSource == this.brickSound){ + // volume = 0.1; + // } + volume = 1; + cc.audioEngine.setEffectsVolume(1); + cc.audioEngine.setMusicVolume(1); + if (audioSource.name == "lose") { + cc.audioEngine.setEffectsVolume(0.5); + } + else { + cc.audioEngine.setEffectsVolume(1); + } + var context = cc.audioEngine.playEffect(audioSource, loop); + if (callback) { + cc.audioEngine.setFinishCallback(context, function () { + callback.call(this); + }.bind(this)); + } + // cc.wwx.OutPut.log('play audio effect isBrowser: ' + context.src); + this.mAudioMap[audioSource] = context; + return audioSource; + // } else { + // return audioSource; + // } + }; + AudioManager.prototype.save = function () { + // cc.wwx.Storage.setItem(cc.wwx.Storage.Key_Setting_Music_Volume, this.mMusicSwitch); + // cc.wwx.Storage.setItem(cc.wwx.Storage.Key_Setting_Effect_Volume, this.mEffectSwitch); + }; + // static get Instance() + // { + // if (this._instance == null) + // { + // this._instance = new AudioManager(); + // } + // return this._instance; + // } + AudioManager.prototype.preload = function () { + if (!(cc.sys.platform === cc.sys.WECHAT_GAME)) { + return; + } + var musics = [ + this.audioGameBgm0, + ]; + musics.forEach(function (path) { + }); + }; + AudioManager.prototype.getAudioMusicSwitch = function () { + return this.mMusicSwitch; + }; + AudioManager.prototype.getAudioEffectSwitch = function () { + return this.mEffectSwitch; + }; + AudioManager.prototype.trunAudioSound = function (on) { + this.switchMusic(on); + this.switchEffect(on); + }; + AudioManager.prototype.switchMusic = function (on) { + if (this.mMusicSwitch != (on ? 1 : 0)) { + this.mMusicSwitch = 1 - this.mMusicSwitch; + // this.save(); + } + if (on) { + this.playMusicGame(); + } + else { + this.stopMusic(); + } + }; + AudioManager.prototype.switchEffect = function (on) { + if (this.mEffectSwitch != (on ? 1 : 0)) { + this.mEffectSwitch = 1 - this.mEffectSwitch; + // this.save(); + } + }; + AudioManager.prototype.onHide = function () { + cc.audioEngine.pauseAll(); + }; + AudioManager.prototype.onShow = function () { + cc.audioEngine.resumeAll(); + }; + //播放音效 + AudioManager.prototype.playEffect = function (name, callback) { + if (!cc.fx.GameConfig.GM_INFO.effectOpen) { + return; + } + if (this[name]) + return this.play(this[name], false, callback, this.mEffectSwitch); + }; + AudioManager.prototype.playMusic = function (key, callback, loop) { + if (!cc.fx.GameConfig.GM_INFO.musicOpen) { + return; + } + loop = typeof loop == 'undefined' || loop ? true : false; + this.stopMusic(); + this.mMusicKey = this.play(key, loop, callback, true); + }; + /** + * 游戏背景音乐 + */ + AudioManager.prototype.playMusicGame = function () { + this.stopMusic(); + this.playMusic(this.audioGameBgm0, {}, true); + }; + /** + * 停止背景音乐播放 + */ + AudioManager.prototype.stopMusic = function () { + // cc.wwx.OutPut.log('stopMusic audio effect wx: ' + this.mMusicKey); + cc.audioEngine.stopAll(); + }; + /** + * 恢复被暂停的背景音乐播放 + */ + AudioManager.prototype.resumeMusic = function () { + // 调用 cc.audioEngine 的 resumeMusic 方法恢复音乐播放 + cc.audioEngine.resumeMusic(); + }; + /* + * 游戏开始音效 + * + */ + AudioManager.prototype.playGameStart = function () { + }; + /* + * 失败的游戏结束 + */ + AudioManager.prototype.playGameOver = function () { + }; + /* + * 成功的游戏结束 + */ + AudioManager.prototype.playGameResultFailed = function () { + }; + /* + * 成功的游戏结束 + */ + AudioManager.prototype.playGameResultSuccess = function () { + }; + /** + * 报警的音效 + */ + /** + * 按钮 + */ + AudioManager.prototype.playAudioButton = function () { + // return this.play(this.audioButtonClick, false,null,this.mEffectSwitch); + }; + var AudioManager_1; + __decorate([ + property(cc.AudioClip) + ], AudioManager.prototype, "audioGameBgm0", void 0); + __decorate([ + property(cc.AudioClip) + ], AudioManager.prototype, "xiaochu", void 0); + __decorate([ + property(cc.AudioClip) + ], AudioManager.prototype, "hit", void 0); + __decorate([ + property(cc.AudioClip) + ], AudioManager.prototype, "down", void 0); + __decorate([ + property(cc.AudioClip) + ], AudioManager.prototype, "fangxiang", void 0); + __decorate([ + property(cc.AudioClip) + ], AudioManager.prototype, "build", void 0); + __decorate([ + property(cc.AudioClip) + ], AudioManager.prototype, "win", void 0); + __decorate([ + property(cc.AudioClip) + ], AudioManager.prototype, "lose", void 0); + __decorate([ + property(cc.AudioClip) + ], AudioManager.prototype, "anniu_Big", void 0); + __decorate([ + property(cc.AudioClip) + ], AudioManager.prototype, "anniu_little", void 0); + __decorate([ + property(cc.AudioClip) + ], AudioManager.prototype, "zhuan1", void 0); + __decorate([ + property(cc.AudioClip) + ], AudioManager.prototype, "zhuan2", void 0); + AudioManager = AudioManager_1 = __decorate([ + ccclass + ], AudioManager); + return AudioManager; +}(cc.Component)); +exports.default = AudioManager; +; +// export { AudioManager }; + +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,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImFzc2V0c1xcU2NyaXB0XFxtb2R1bGVcXE11c2ljXFxBdWRpb01hbmFnZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBRU0sSUFBQSxLQUFzQixFQUFFLENBQUMsVUFBVSxFQUFsQyxPQUFPLGFBQUEsRUFBRSxRQUFRLGNBQWlCLENBQUM7QUFFMUM7SUFBMEMsZ0NBQVk7SUFBdEQ7UUFBQSxxRUF3UEM7UUF0UEcsTUFBTTtRQUVOLG1CQUFhLEdBQWlCLElBQUksQ0FBQztRQUduQyxhQUFPLEdBQWlCLElBQUksQ0FBQztRQUU3QixTQUFHLEdBQWlCLElBQUksQ0FBQztRQUV6QixVQUFJLEdBQWlCLElBQUksQ0FBQztRQUUxQixlQUFTLEdBQWlCLElBQUksQ0FBQztRQUUvQixXQUFLLEdBQWlCLElBQUksQ0FBQztRQUUzQixTQUFHLEdBQWlCLElBQUksQ0FBQztRQUV6QixVQUFJLEdBQWlCLElBQUksQ0FBQztRQUUxQixlQUFTLEdBQWlCLElBQUksQ0FBQztRQUUvQixrQkFBWSxHQUFpQixJQUFJLENBQUM7UUFFbEMsWUFBTSxHQUFpQixJQUFJLENBQUM7UUFFNUIsWUFBTSxHQUFpQixJQUFJLENBQUM7O0lBNk5oQyxDQUFDO3FCQXhQb0IsWUFBWTtJQXdDN0IsNkJBQU0sR0FBTjtRQUNJLElBQUksY0FBWSxDQUFDLFNBQVMsSUFBSSxJQUFJLEVBQUU7WUFDaEMsY0FBWSxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUM7WUFDOUIsRUFBRSxDQUFDLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7U0FDekM7YUFDSTtZQUNELE9BQU87U0FDVjtRQUNELElBQUksQ0FBQyxNQUFNLEdBQUcsS0FBSyxDQUFDO1FBQ3BCLElBQUksQ0FBQyxNQUFNLEdBQUcsS0FBSyxDQUFDO1FBQ3BCLElBQUksQ0FBQyxXQUFXLEdBQUcsQ0FBQyxDQUFDO1FBQ3JCLElBQUks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Qzt1REFDWTtJQUduQztRQURDLFFBQVEsQ0FBQyxFQUFFLENBQUMsU0FBUyxDQUFDO2lEQUNNO0lBRTdCO1FBREMsUUFBUSxDQUFDLEVBQUUsQ0FBQyxTQUFTLENBQUM7NkNBQ0U7SUFFekI7UUFEQyxRQUFRLENBQUMsRUFBRSxDQUFDLFNBQVMsQ0FBQzs4Q0FDRztJQUUxQjtRQURDLFFBQVEsQ0FBQyxFQUFFLENBQUMsU0FBUyxDQUFDO21EQUNRO0lBRS9CO1FBREMsUUFBUSxDQUFDLEVBQUUsQ0FBQyxTQUFTLENBQUM7K0NBQ0k7SUFFM0I7UUFEQyxRQUFRLENBQUMsRUFBRSxDQUFDLFNBQVMsQ0FBQzs2Q0FDRTtJQUV6QjtRQURDLFFBQVEsQ0FBQyxFQUFFLENBQUMsU0FBUyxDQUFDOzhDQUNHO0lBRTFCO1FBREMsUUFBUSxDQUFDLEVBQUUsQ0FBQyxTQUFTLENBQUM7bURBQ1E7SUFFL0I7UUFEQyxRQUFRLENBQUMsRUFBRSxDQUFDLFNBQVMsQ0FBQztzREFDVztJQUVsQztRQURDLFFBQVEsQ0FBQyxFQUFFLENBQUMsU0FBUyxDQUFDO2dEQUNLO0lBRTVCO1FBREMsUUFBUSxDQUFDLEVBQUUsQ0FBQyxTQUFTLENBQUM7Z0RBQ0s7SUEzQlgsWUFBWTtRQURoQyxPQUFPO09BQ2EsWUFBWSxDQXdQaEM7SUFBRCxtQkFBQztDQXhQRCxBQXdQQyxDQXhQeUMsRUFBRSxDQUFDLFNBQVMsR0F3UHJEO2tCQXhQb0IsWUFBWTtBQXdQaEMsQ0FBQztBQUVGLDJCQUEyQiIsImZpbGUiOiIiLCJzb3VyY2VSb290IjoiLyIsInNvdXJjZXNDb250ZW50IjpbIlxyXG5cclxuY29uc3Qge2NjY2xhc3MsIHByb3BlcnR5fSA9IGNjLl9kZWNvcmF0b3I7XHJcbkBjY2NsYXNzXHJcbmV4cG9ydCBkZWZhdWx0IGNsYXNzIEF1ZGlvTWFuYWdlciBleHRlbmRzIGNjLkNvbXBvbmVudCB7XHJcbiAgICBzdGF0aWMgX2luc3RhbmNlOiBhbnk7XHJcbiAgICAvL+iDjOaZr+mfs+S5kFxyXG4gICAgQHByb3BlcnR5KGNjLkF1ZGlvQ2xpcClcclxuICAgIGF1ZGlvR2FtZUJnbTA6IGNjLkF1ZGlvQ2xpcCA9IG51bGw7XHJcblxyXG4gICAgQHByb3BlcnR5KGNjLkF1ZGlvQ2xpcClcclxuICAgIHhpYW9jaHU6IGNjLkF1ZGlvQ2xpcCA9IG51bGw7XHJcbiAgICBAcHJvcGVydHkoY2MuQXVkaW9DbGlwKVxyXG4gICAgaGl0OiBjYy5BdWRpb0NsaXAgPSBudWxsO1xyXG4gICAgQHByb3BlcnR5KGNjLkF1ZGlvQ2xpcClcclxuICAgIGRvd246IGNjLkF1ZGlvQ2xpcCA9IG51bGw7XHJcbiAgICBAcHJvcGVydHkoY2MuQXVkaW9DbGlwKVxyXG4gICAgZmFuZ3hpYW5nOiBjYy5BdWRpb0NsaXAgPSBudWxsO1xyXG4gICAgQHByb3BlcnR5KGNjLkF1ZGlvQ2xpcClcclxuICAgIGJ1aWxkOiBjYy5BdWRpb0NsaXAgPSBudWxsO1xyXG4gICAgQHByb3BlcnR5KGNjLkF1ZGlvQ2xpcClcclxuICAgIHdpbjogY2MuQXVkaW9DbGlwID0gbnVsbDtcclxuICAgIEBwcm9wZXJ0eShjYy5BdWRpb0NsaXApXHJcbiAgICBsb3NlOiBjYy5BdWRpb0NsaXAgPSBudWxsO1xyXG4gICAgQHByb3BlcnR5KGNjLkF1ZGlvQ2xpcClcclxuICAgIGFubml1X0JpZzogY2MuQXVkaW9DbGlwID0gbnVsbDtcclxuICAgIEBwcm9wZXJ0eShjYy5BdWRpb0NsaXApXHJcbiAgICBhbm5pdV9saXR0bGU6IGNjLkF1ZGlvQ2xpcCA9IG51bGw7XHJcbiAgICBAcHJvcGVydHkoY2MuQXVkaW9DbGlwKVxyXG4gICAgemh1YW4xOiBjYy5BdWRpb0NsaXAgPSBudWxsO1xyXG4gICAgQHByb3BlcnR5KGNjLkF1ZGlvQ2xpcClcclxuICAgIHpodWFuMjogY2MuQXVkaW9DbGlwID0gbnVsbDtcclxuXHJcbiAgICBtQXVkaW9NYXA6IHt9O1xyXG4gICAgYmdNdXNpY1ZvbHVtZTogbnVtYmVyO1xyXG4gICAgZWZmZWN0TXVzaWNWb2x1bWU6IG51bWJlcjtcclxuICAgIG1NdXNpY1N3aXRjaDogbnVtYmVyO1xyXG4gICAgbUVmZmVjdFN3aXRjaDogbnVtYmVyO1xyXG4gICAgYnJpY2tTb3VuZDogYW55O1xyXG4gICAgcmV3YXJkOiBib29sZWFuO1xyXG4gICAgZmluaXNoOiBib29sZWFuO1xyXG4gICAgcmV3YXJkQ291bnQ6IG51bWJlcjtcclxuICAgIG1NdXNpY0tleTogYW55O1xyXG5cclxuICAgIG9uTG9hZCgpIHtcclxuICAgICAgICBpZiAoQXVkaW9NYW5hZ2VyLl9pbnN0YW5jZSA9PSBudWxsKSB7XHJcbiAgICAgICAgICAgIEF1ZGlvTWFuYWdlci5faW5zdGFuY2UgPSB0aGlzO1xyXG4gICAgICAgICAgICBjYy5nYW1lLmFkZFBlcnNpc3RSb290Tm9kZSh0aGlzLm5vZGUpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLnJld2FyZCA9IGZhbHNlO1xyXG4gICAgICAgIHRoaXMuZmluaXNoID0gZmFsc2U7XHJcbiAgICAgICAgdGhpcy5yZXdhcmRDb3VudCA9IDA7XHJcbiAgICAgICAgdGhpcy5jdG9yKCk7XHJcblxyXG4gICAgICAgIHRoaXMucHJlbG9hZCgpO1xyXG4gICAgfVxyXG5cclxuICAgIGN0b3IgKCkge1xyXG4gICAgICAgIHRoaXMubUF1ZGlvTWFwID0ge307XHJcbiAgICAgICAgLyoqXHJcbiAgICAgICAgICog6buY6K6k6Z+z6YeP5aSn5bCPXHJcbiAgICAgICAgICogQHR5cGUge251bWJlcn1cclxuICAgICAgICAgKi9cclxuICAgICAgICB0aGlzLmJnTXVzaWNWb2x1bWUgPSAwLjE7XHJcbiAgICAgICAgdGhpcy5lZmZlY3RNdXNpY1ZvbHVtZSA9IDE7XHJcblxyXG4gICAgICAgIHRoaXMubU11c2ljU3dpdGNoID0gMTtcclxuICAgICAgICB0aGlzLm1FZmZlY3RTd2l0Y2ggPSAxO1xyXG4gICAgfVxyXG4gICAgcGxheSAoYXVkaW9Tb3VyY2UsIGxvb3AsIGNhbGxiYWNrLCBpc0JnTXVzaWMpIHtcclxuICAgICAgICAvLyBpZiAoaXNCZ011c2ljICYmICF0aGlzLm1NdXNpY1N3aXRjaCkgcmV0dXJuO1xyXG4gICAgICAgIC8vIGlmICghaXNCZ011c2ljICYmICF0aGlzLm1FZmZlY3RTd2l0Y2gpIHJldHVybjtcclxuICAgICAgICB2YXIgdm9sdW1lID0gaXNCZ011c2ljID8gdGhpcy5iZ011c2ljVm9sdW1lIDogdGhpcy5lZmZlY3RNdXNpY1ZvbHVtZTtcclxuXHJcbiAgICAgICAgLy8gaWYgKGNjLnN5cy5pc0Jyb3dzZXIpIHtcclxuICAgICAgICAgICAgLy8gaWYoYXVkaW9Tb3VyY2UgPT0gdGhpcy5icmlja1NvdW5kKXtcclxuICAgICAgICAgICAgLy8gICAgIHZvbHVtZSA9IDAuMTtcclxuICAgICAgICAgICAgLy8gfSBcclxuICAgICAgICAgICAgdm9sdW1lID0gMTtcclxuICAgICAgICAgICAgY2MuYXVkaW9FbmdpbmUuc2V0RWZmZWN0c1ZvbHVtZSgxKTtcclxuICAgICAgICAgICAgY2MuYXVkaW9FbmdpbmUuc2V0TXVzaWNWb2x1bWUoMSk7XHJcbiAgICAgICAgICAgIGlmKGF1ZGlvU291cmNlLm5hbWUgPT0gXCJsb3NlXCIpe1xyXG4gICAgICAgICAgICAgICAgY2MuYXVkaW9FbmdpbmUuc2V0RWZmZWN0c1ZvbHVtZSgwLjUpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGVsc2V7XHJcbiAgICAgICAgICAgICAgICBjYy5hdWRpb0VuZ2luZS5zZXRFZmZlY3RzVm9sdW1lKDEpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIHZhciBjb250ZXh0ID0gY2MuYXVkaW9FbmdpbmUucGxheUVmZmVjdChhdWRpb1NvdXJjZSwgbG9vcCk7XHJcbiAgICAgICAgICAgIGlmIChjYWxsYmFjayl7XHJcbiAgICAgICAgICAgICAgICBjYy5hdWRpb0VuZ2luZS5zZXRGaW5pc2hDYWxsYmFjayhjb250ZXh0LCBmdW5jdGlvbigpe1xyXG4gICAgICAgICAgICAgICAgICAgIGNhbGxiYWNrLmNhbGwodGhpcyk7XHJcbiAgICAgICAgICAgICAgICB9LmJpbmQodGhpcykpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIC8vIGNjLnd3eC5PdXRQdXQubG9nKCdwbGF5IGF1ZGlvIGVmZmVjdCBpc0Jyb3dzZXI6ICcgKyBjb250ZXh0LnNyYyk7XHJcblxyXG4gICAgICAgICAgICB0aGlzLm1BdWRpb01hcFthdWRpb1NvdXJjZV0gPSBjb250ZXh0O1xyXG4gICAgICAgICAgICByZXR1cm4gYXVkaW9Tb3VyY2U7XHJcbiAgICAgICAgLy8gfSBlbHNlIHtcclxuICAgICAgICAvLyAgICAgcmV0dXJuIGF1ZGlvU291cmNlO1xyXG4gICAgICAgIC8vIH1cclxuICAgIH1cclxuXHJcbiAgICBzYXZlICgpIHtcclxuICAgICAgICAvLyBjYy53d3guU3RvcmFnZS5zZXRJdGVtKGNjLnd3eC5TdG9yYWdlLktleV9TZXR0aW5nX011c2ljX1ZvbHVtZSwgdGhpcy5tTXVzaWNTd2l0Y2gpO1xyXG4gICAgICAgIC8vIGNjLnd3eC5TdG9yYWdlLnNldEl0ZW0oY2Mud3d4LlN0b3JhZ2UuS2V5X1NldHRpbmdfRWZmZWN0X1ZvbHVtZSwgdGhpcy5tRWZmZWN0U3dpdGNoKTtcclxuICAgIH1cclxuXHJcbiAgICAvLyBzdGF0aWMgZ2V0IEluc3RhbmNlKClcclxuICAgIC8vIHtcclxuICAgIC8vICAgICBpZiAodGhpcy5faW5zdGFuY2UgPT0gbnVsbClcclxuICAgIC8vICAgICB7XHJcbiAgICAvLyAgICAgICAgIHRoaXMuX2luc3RhbmNlID0gbmV3IEF1ZGlvTWFuYWdlcigpO1xyXG4gICAgLy8gICAgIH1cclxuICAgIC8vICAgICByZXR1cm4gdGhpcy5faW5zdGFuY2U7XHJcbiAgICAvLyB9XHJcblxyXG4gICAgcHJlbG9hZCAoKSB7XHJcbiAgICAgICAgaWYgKCEoY2Muc3lzLnBsYXRmb3JtID09PSBjYy5zeXMuV0VDSEFUX0dBTUUpKSB7IHJldHVybjsgfVxyXG5cclxuICAgICAgICB2YXIgbXVzaWNzID0gW1xyXG4gICAgICAgICAgICB0aGlzLmF1ZGlvR2FtZUJnbTAsXHJcbiAgICAgICAgXTtcclxuICAgICAgICBtdXNpY3MuZm9yRWFjaChmdW5jdGlvbihwYXRoKSB7XHJcbiAgICAgICAgfSlcclxuICAgIH1cclxuXHJcbiAgICBnZXRBdWRpb011c2ljU3dpdGNoKClcclxuICAgIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5tTXVzaWNTd2l0Y2g7XHJcblxyXG4gICAgfVxyXG4gICAgZ2V0QXVkaW9FZmZlY3RTd2l0Y2goKVxyXG4gICAge1xyXG4gICAgICAgIHJldHVybiB0aGlzLm1FZmZlY3RTd2l0Y2g7XHJcbiAgICB9XHJcbiAgICB0cnVuQXVkaW9Tb3VuZChvbilcclxuICAgIHtcclxuICAgICAgICB0aGlzLnN3aXRjaE11c2ljKG9uKTtcclxuICAgICAgICB0aGlzLnN3aXRjaEVmZmVjdChvbilcclxuICAgIH1cclxuICAgIHN3aXRjaE11c2ljIChvbikge1xyXG4gICAgICAgIGlmICh0aGlzLm1NdXNpY1N3aXRjaCAhPSAob24/MTowKSlcclxuICAgICAgICB7XHJcbiAgICAgICAgICAgIHRoaXMubU11c2ljU3dpdGNoID0gMS10aGlzLm1NdXNpY1N3aXRjaDtcclxuICAgICAgICAgICAgLy8gdGhpcy5zYXZlKCk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmKG9uKVxyXG4gICAgICAgIHtcclxuICAgICAgICAgICAgdGhpcy5wbGF5TXVzaWNHYW1lKCk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2VcclxuICAgICAgICB7XHJcbiAgICAgICAgICAgIHRoaXMuc3RvcE11c2ljKCk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG4gICAgc3dpdGNoRWZmZWN0IChvbikge1xyXG4gICAgICAgIGlmICh0aGlzLm1FZmZlY3RTd2l0Y2ggIT0gKG9uPzE6MCkpe1xyXG4gICAgICAgICAgICB0aGlzLm1FZmZlY3RTd2l0Y2ggPSAxLXRoaXMubUVmZmVjdFN3aXRjaDtcclxuICAgICAgICAgICAgLy8gdGhpcy5zYXZlKCk7XHJcblxyXG4gICAgICAgIH1cclxuICAgIH1cclxuICAgIG9uSGlkZSAoKSB7XHJcbiAgICAgICAgY2MuYXVkaW9FbmdpbmUucGF1c2VBbGwoKTtcclxuICAgIH1cclxuXHJcbiAgICBvblNob3cgKCkge1xyXG4gICAgICAgIGNjLmF1ZGlvRW5naW5lLnJlc3VtZUFsbCgpO1xyXG4gICAgfVxyXG5cclxuICAgIC8v5pKt5pS+6Z+z5pWIXHJcbiAgICBwbGF5RWZmZWN0KG5hbWUsY2FsbGJhY2spe1xyXG4gICAgICAgIGlmKCFjYy5meC5HYW1lQ29uZmlnLkdNX0lORk8uZWZmZWN0T3Blbil7XHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYodGhpc1tuYW1lXSlcclxuICAgICAgICAgICAgcmV0dXJuIHRoaXMucGxheSh0aGlzW25hbWVdLCBmYWxzZSxjYWxsYmFjayx0aGlzLm1FZmZlY3RTd2l0Y2gpO1xyXG4gICAgfVxyXG4gICAgcGxheU11c2ljIChrZXksIGNhbGxiYWNrLCBsb29wKSB7XHJcbiAgICAgICAgaWYoIWNjLmZ4LkdhbWVDb25maWcuR01fSU5GTy5tdXNpY09wZW4pe1xyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGxvb3AgPSB0eXBlb2YgbG9vcCA9PSAndW5kZWZpbmVkJyAgfHwgbG9vcCA/IHRydWUgOiBmYWxzZTtcclxuICAgICAgICB0aGlzLnN0b3BNdXNpYygpO1xyXG4gICAgICAgIHRoaXMubU11c2ljS2V5ID0gdGhpcy5wbGF5KGtleSwgbG9vcCwgY2FsbGJhY2ssIHRydWUpO1xyXG5cclxuICAgIH1cclxuICAgIC8qKlxyXG4gICAgICog5ri45oiP6IOM5pmv6Z+z5LmQXHJcbiAgICAgKi9cclxuICAgIHBsYXlNdXNpY0dhbWUgKCkge1xyXG4gICAgICAgIHRoaXMuc3RvcE11c2ljKCk7XHJcbiAgICAgICAgdGhpcy5wbGF5TXVzaWModGhpcy5hdWRpb0dhbWVCZ20wLHt9LHRydWUpO1xyXG4gICAgfVxyXG4gICAgLyoqXHJcbiAgICAgKiDlgZzmraLog4zmma/pn7PkuZDmkq3mlL5cclxuICAgICAqL1xyXG4gICAgc3RvcE11c2ljICgpIHtcclxuICAgICAgICAvLyBjYy53d3guT3V0UHV0LmxvZygnc3RvcE11c2ljIGF1ZGlvIGVmZmVjdCB3eDogJyArIHRoaXMubU11c2ljS2V5KTtcclxuICAgICAgICBjYy5hdWRpb0VuZ2luZS5zdG9wQWxsKCk7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiDmgaLlpI3ooqvmmoLlgZznmoTog4zmma/pn7PkuZDmkq3mlL5cclxuICAgICAqL1xyXG4gICAgcmVzdW1lTXVzaWMgKCkge1xyXG4gICAgICAgIC8vIOiwg+eUqCBjYy5hdWRpb0VuZ2luZSDnmoQgcmVzdW1lTXVzaWMg5pa55rOV5oGi5aSN6Z+z5LmQ5pKt5pS+XHJcbiAgICAgICAgY2MuYXVkaW9FbmdpbmUucmVzdW1lTXVzaWMoKTtcclxuICAgIH1cclxuXHJcbiAgICAvKlxyXG4gICAgKiDmuLjmiI/lvIDlp4vpn7PmlYhcclxuICAgICpcclxuICAgICovXHJcbiAgICBwbGF5R2FtZVN0YXJ0KClcclxuICAgIHtcclxuICAgIFxyXG4gICAgfVxyXG4gICAgLypcclxuICAgICog5aSx6LSl55qE5ri45oiP57uT5p2fXHJcbiAgICAqL1xyXG4gICAgcGxheUdhbWVPdmVyKClcclxuICAgIHtcclxuXHJcbiAgICB9XHJcbiAgICAvKlxyXG4gICAgICAgICog5oiQ5Yqf55qE5ri45oiP57uT5p2fXHJcbiAgICAgICAgKi9cclxuICAgIHBsYXlHYW1lUmVzdWx0RmFpbGVkKClcclxuICAgIHtcclxuXHJcbiAgICB9XHJcbiAgICAvKlxyXG4gICAgKiDmiJDlip/nmoTmuLjmiI/nu5PmnZ9cclxuICAgICovXHJcbiAgICBwbGF5R2FtZVJlc3VsdFN1Y2Nlc3MoKVxyXG4gICAge1xyXG5cclxuICAgIH1cclxuICAgIC8qKlxyXG4gICAgICog5oql6K2m55qE6Z+z5pWIXHJcbiAgICAgKi9cclxuXHJcbiAgICAvKipcclxuICAgICAqIOaMiemSrlxyXG4gICAgICovXHJcbiAgICBwbGF5QXVkaW9CdXR0b24gKCkge1xyXG4gICAgICAgIC8vIHJldHVybiB0aGlzLnBsYXkodGhpcy5hdWRpb0J1dHRvbkNsaWNrLCBmYWxzZSxudWxsLHRoaXMubUVmZmVjdFN3aXRjaCk7XHJcbiAgICB9XHJcbn07XHJcblxyXG4vLyBleHBvcnQgeyBBdWRpb01hbmFnZXIgfTtcclxuIl19 +//------QC-SOURCE-SPLIT------ + + (function() { + var nodeEnv = typeof require !== 'undefined' && typeof process !== 'undefined'; + var __module = nodeEnv ? module : {exports:{}}; + var __filename = 'preview-scripts/assets/Script/module/Notification/Notification.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, '55403VjGlpPL564gsdiZBg3', 'Notification'); +// Script/module/Notification/Notification.ts + +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.Notifications = void 0; +//全局通知 +var Notifications = { + _eventMap: [], + on: function (masgId, callback, target) { + if (this._eventMap[masgId] === undefined) { + this._eventMap[masgId] = []; + } + this._eventMap[masgId].push({ callback: callback, target: target }); + }, + emit: function (masgId, parameter) { + var array = this._eventMap[masgId]; + if (array === undefined) + return; + for (var i = 0; i < array.length; i++) { + var element = array[i]; + if (element) + element.callback.call(element.target, parameter); + } + }, + off: function (masgId, callback) { + var array = this._eventMap[masgId]; + if (array === undefined) + return; + for (var i = 0; i < array.length; i++) { + var element = array[i]; + if (element && element.callback === callback) { + array[i] = undefined; + break; + } + } + }, + offMasgId: function (masgId) { + this._eventMap[masgId] = undefined; + }, + removeAllMsg: function () { + for (var k in this._eventMap) { + if (this._eventMap[k]) { + this.offMasgId(k); + } + } + } +}; +exports.Notifications = Notifications; + +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,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImFzc2V0c1xcU2NyaXB0XFxtb2R1bGVcXE5vdGlmaWNhdGlvblxcTm90aWZpY2F0aW9uLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLE1BQU07QUFDTixJQUFJLGFBQWEsR0FBRztJQUNoQixTQUFTLEVBQUUsRUFBRTtJQUNiLEVBQUUsRUFBRSxVQUFVLE1BQU0sRUFBRSxRQUFRLEVBQUUsTUFBTTtRQUNsQyxJQUFJLElBQUksQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLEtBQUssU0FBUyxFQUFFO1lBQ3RDLElBQUksQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLEdBQUcsRUFBRSxDQUFDO1NBQy9CO1FBQ0QsSUFBSSxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxJQUFJLENBQUMsRUFBRSxRQUFRLEVBQUUsUUFBUSxFQUFFLE1BQU0sRUFBRSxNQUFNLEVBQUUsQ0FBQyxDQUFDO0lBQ3hFLENBQUM7SUFFRCxJQUFJLEVBQUUsVUFBVSxNQUFNLEVBQUUsU0FBUztRQUM3QixJQUFJLEtBQUssR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQ25DLElBQUksS0FBSyxLQUFLLFNBQVM7WUFBRSxPQUFPO1FBRWhDLEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxLQUFLLENBQUMsTUFBTSxFQUFFLENBQUMsRUFBRSxFQUFFO1lBQ25DLElBQUksT0FBTyxHQUFHLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUN2QixJQUFJLE9BQU87Z0JBQUUsT0FBTyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLE1BQU0sRUFBRSxTQUFTLENBQUMsQ0FBQztTQUNqRTtJQUNMLENBQUM7SUFFRCxHQUFHLEVBQUUsVUFBVSxNQUFNLEVBQUUsUUFBUTtRQUMzQixJQUFJLEtBQUssR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQ25DLElBQUksS0FBSyxLQUFLLFNBQVM7WUFBRSxPQUFPO1FBQ2hDLEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxLQUFLLENBQUMsTUFBTSxFQUFFLENBQUMsRUFBRSxFQUFFO1lBQ25DLElBQUksT0FBTyxHQUFHLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUN2QixJQUFJLE9BQU8sSUFBSSxPQUFPLENBQUMsUUFBUSxLQUFLLFFBQVEsRUFBRTtnQkFDMUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxHQUFHLFNBQVMsQ0FBQztnQkFDckIsTUFBTTthQUNUO1NBQ0o7SUFDTCxDQUFDO0lBRUQsU0FBUyxFQUFFLFVBQVUsTUFBTTtRQUN2QixJQUFJLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxHQUFHLFNBQVMsQ0FBQztJQUN2QyxDQUFDO0lBRUQsWUFBWSxFQUFFO1FBQ1YsS0FBSyxJQUFJLENBQUMsSUFBSSxJQUFJLENBQUMsU0FBUyxFQUFFO1lBQzFCLElBQUksSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsRUFBRTtnQkFDbkIsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQzthQUNyQjtTQUNKO0lBQ0wsQ0FBQztDQUNKLENBQUM7QUFDTyxzQ0FBYSIsImZpbGUiOiIiLCJzb3VyY2VSb290IjoiLyIsInNvdXJjZXNDb250ZW50IjpbIi8v5YWo5bGA6YCa55+lXHJcbnZhciBOb3RpZmljYXRpb25zID0ge1xyXG4gICAgX2V2ZW50TWFwOiBbXSxcclxuICAgIG9uOiBmdW5jdGlvbiAobWFzZ0lkLCBjYWxsYmFjaywgdGFyZ2V0KSB7XHJcbiAgICAgICAgaWYgKHRoaXMuX2V2ZW50TWFwW21hc2dJZF0gPT09IHVuZGVmaW5lZCkge1xyXG4gICAgICAgICAgICB0aGlzLl9ldmVudE1hcFttYXNnSWRdID0gW107XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRoaXMuX2V2ZW50TWFwW21hc2dJZF0ucHVzaCh7IGNhbGxiYWNrOiBjYWxsYmFjaywgdGFyZ2V0OiB0YXJnZXQgfSk7XHJcbiAgICB9LFxyXG5cclxuICAgIGVtaXQ6IGZ1bmN0aW9uIChtYXNnSWQsIHBhcmFtZXRlcikge1xyXG4gICAgICAgIGxldCBhcnJheSA9IHRoaXMuX2V2ZW50TWFwW21hc2dJZF07XHJcbiAgICAgICAgaWYgKGFycmF5ID09PSB1bmRlZmluZWQpIHJldHVybjtcclxuXHJcbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBhcnJheS5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgICAgICBsZXQgZWxlbWVudCA9IGFycmF5W2ldO1xyXG4gICAgICAgICAgICBpZiAoZWxlbWVudCkgZWxlbWVudC5jYWxsYmFjay5jYWxsKGVsZW1lbnQudGFyZ2V0LCBwYXJhbWV0ZXIpO1xyXG4gICAgICAgIH1cclxuICAgIH0sXHJcblxyXG4gICAgb2ZmOiBmdW5jdGlvbiAobWFzZ0lkLCBjYWxsYmFjaykge1xyXG4gICAgICAgIGxldCBhcnJheSA9IHRoaXMuX2V2ZW50TWFwW21hc2dJZF07XHJcbiAgICAgICAgaWYgKGFycmF5ID09PSB1bmRlZmluZWQpIHJldHVybjtcclxuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGFycmF5Lmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgICAgIGxldCBlbGVtZW50ID0gYXJyYXlbaV07XHJcbiAgICAgICAgICAgIGlmIChlbGVtZW50ICYmIGVsZW1lbnQuY2FsbGJhY2sgPT09IGNhbGxiYWNrKSB7XHJcbiAgICAgICAgICAgICAgICBhcnJheVtpXSA9IHVuZGVmaW5lZDtcclxuICAgICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgfSxcclxuXHJcbiAgICBvZmZNYXNnSWQ6IGZ1bmN0aW9uIChtYXNnSWQpIHtcclxuICAgICAgICB0aGlzLl9ldmVudE1hcFttYXNnSWRdID0gdW5kZWZpbmVkO1xyXG4gICAgfSxcclxuXHJcbiAgICByZW1vdmVBbGxNc2c6IGZ1bmN0aW9uICgpIHtcclxuICAgICAgICBmb3IgKGxldCBrIGluIHRoaXMuX2V2ZW50TWFwKSB7XHJcbiAgICAgICAgICAgIGlmICh0aGlzLl9ldmVudE1hcFtrXSkge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5vZmZNYXNnSWQoayk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICB9XHJcbn07XHJcbmV4cG9ydCB7IE5vdGlmaWNhdGlvbnMgfTsiXX0= +//------QC-SOURCE-SPLIT------ + + (function() { + var nodeEnv = typeof require !== 'undefined' && typeof process !== 'undefined'; + var __module = nodeEnv ? module : {exports:{}}; + var __filename = 'preview-scripts/assets/Script/module/Storage/Storage.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, '1002938VFRJd70RiAno9Iys', 'Storage'); +// Script/module/Storage/Storage.ts + +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.StorageMessage = void 0; +//缓存浏览器数据 +var StorageMessage = { + getStorage: function (key) { + var result = null; + if (cc.sys.localStorage.getItem(key)) { + var result = cc.sys.localStorage.getItem(key); + } + if (result) { + result = JSON.parse(result); + } + return result; + }, + setStorage: function (key, value) { + //主动拉起分享接口 + var temp = JSON.stringify(value); + cc.sys.localStorage.setItem(key, temp); + }, + removeStorage: function (key) { + //主动删除消息接口 + if (cc.sys.localStorage.getItem(key)) { + cc.sys.localStorage.removeItem(key); + } + }, +}; +exports.StorageMessage = StorageMessage; + +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,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImFzc2V0c1xcU2NyaXB0XFxtb2R1bGVcXFN0b3JhZ2VcXFN0b3JhZ2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsU0FBUztBQUNULElBQUksY0FBYyxHQUFHO0lBQ2pCLFVBQVUsRUFBRyxVQUFTLEdBQUc7UUFDckIsSUFBSSxNQUFNLEdBQUcsSUFBSSxDQUFDO1FBQ2xCLElBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxZQUFZLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxFQUFDO1lBQ2xDLElBQUksTUFBTSxHQUFHLEVBQUUsQ0FBQyxHQUFHLENBQUMsWUFBWSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsQ0FBQztTQUMvQztRQUVELElBQUcsTUFBTSxFQUFDO1lBQ1IsTUFBTSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUM7U0FDN0I7UUFDRCxPQUFPLE1BQU0sQ0FBQztJQUNsQixDQUFDO0lBQ0QsVUFBVSxFQUFHLFVBQVMsR0FBRyxFQUFDLEtBQUs7UUFDM0IsVUFBVTtRQUNWLElBQUksSUFBSSxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDakMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxZQUFZLENBQUMsT0FBTyxDQUFDLEdBQUcsRUFBRSxJQUFJLENBQUMsQ0FBQTtJQUMxQyxDQUFDO0lBQ0QsYUFBYSxFQUFHLFVBQVMsR0FBRztRQUMxQixVQUFVO1FBQ1YsSUFBRyxFQUFFLENBQUMsR0FBRyxDQUFDLFlBQVksQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLEVBQUM7WUFDbEMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxZQUFZLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQyxDQUFBO1NBQ3BDO0lBQ0gsQ0FBQztDQUNKLENBQUM7QUFFTyx3Q0FBYyIsImZpbGUiOiIiLCJzb3VyY2VSb290IjoiLyIsInNvdXJjZXNDb250ZW50IjpbIi8v57yT5a2Y5rWP6KeI5Zmo5pWw5o2uXHJcbnZhciBTdG9yYWdlTWVzc2FnZSA9IHtcclxuICAgIGdldFN0b3JhZ2UgOiBmdW5jdGlvbihrZXkpe1xyXG4gICAgICAgIHZhciByZXN1bHQgPSBudWxsO1xyXG4gICAgICAgIGlmKGNjLnN5cy5sb2NhbFN0b3JhZ2UuZ2V0SXRlbShrZXkpKXtcclxuICAgICAgICAgIHZhciByZXN1bHQgPSBjYy5zeXMubG9jYWxTdG9yYWdlLmdldEl0ZW0oa2V5KTtcclxuICAgICAgICB9XHJcbiAgICAgICAgXHJcbiAgICAgICAgaWYocmVzdWx0KXtcclxuICAgICAgICAgIHJlc3VsdCA9IEpTT04ucGFyc2UocmVzdWx0KTtcclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIHJlc3VsdDtcclxuICAgIH0sXHJcbiAgICBzZXRTdG9yYWdlIDogZnVuY3Rpb24oa2V5LHZhbHVlKXtcclxuICAgICAgICAvL+S4u+WKqOaLiei1t+WIhuS6q+aOpeWPo1xyXG4gICAgICAgIHZhciB0ZW1wID0gSlNPTi5zdHJpbmdpZnkodmFsdWUpO1xyXG4gICAgICAgIGNjLnN5cy5sb2NhbFN0b3JhZ2Uuc2V0SXRlbShrZXksIHRlbXApXHJcbiAgICB9LFxyXG4gICAgcmVtb3ZlU3RvcmFnZSA6IGZ1bmN0aW9uKGtleSl7XHJcbiAgICAgIC8v5Li75Yqo5Yig6Zmk5raI5oGv5o6l5Y+jXHJcbiAgICAgIGlmKGNjLnN5cy5sb2NhbFN0b3JhZ2UuZ2V0SXRlbShrZXkpKXtcclxuICAgICAgICBjYy5zeXMubG9jYWxTdG9yYWdlLnJlbW92ZUl0ZW0oa2V5KVxyXG4gICAgICB9XHJcbiAgICB9LFxyXG59O1xyXG5cclxuZXhwb3J0IHsgU3RvcmFnZU1lc3NhZ2UgfTsiXX0= +//------QC-SOURCE-SPLIT------ + + (function() { + var nodeEnv = typeof require !== 'undefined' && typeof process !== 'undefined'; + var __module = nodeEnv ? module : {exports:{}}; + var __filename = 'preview-scripts/assets/Script/module/Share/share.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, '7290caA39xMWZc2phTMKovP', 'share'); +// Script/module/Share/share.ts + + + +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,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImFzc2V0c1xcU2NyaXB0XFxtb2R1bGVcXFNoYXJlXFxzaGFyZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwiZmlsZSI6IiIsInNvdXJjZVJvb3QiOiIvIiwic291cmNlc0NvbnRlbnQiOlsiIl19 +//------QC-SOURCE-SPLIT------ + + (function() { + var nodeEnv = typeof require !== 'undefined' && typeof process !== 'undefined'; + var __module = nodeEnv ? module : {exports:{}}; + var __filename = 'preview-scripts/assets/Script/module/Tool/GameTool.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, '43bfcJ6/25Fs4fHUE0PeBOX', 'GameTool'); +// Script/module/Tool/GameTool.ts + +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.GameTool = void 0; +var MiniGameSdk_1 = require("../../Sdk/MiniGameSdk"); +//最大工具类 各种公共方法,以及处理上传,获取后端接口数据 +var GameTool = { + _startTime: 0, + _endTime: 0, + _totalTime: 0, + //获取userId + Authentication: function () { + var name = "user_" + cc.fx.GameConfig.GM_INFO.gameId; + var data = JSON.parse(localStorage.getItem(name)); + if (data == "undifend" || data == null || data == "") { + var urlNow = window.location.href; + if (!this.containsTrain(urlNow)) { + var url = "https://api.sparkus.cn/api/user/auth/login?domain=hui32579WdYPsgYq&callback=" + location.href; + window.location.href = url; + } + } + else { + cc.fx.StorageMessage.setStorage(name, data); + cc.fx.GameConfig.GM_INFO.userId = parseInt(data.userId); + } + }, + containsTrain: function (str) { + return /from=train/i.test(str); + }, + //埋点上传 + setGameData: function () { + //GAME_DATA 初始化 每次清零 + cc.fx.GameConfig.GAME_DATA = []; + cc.fx.GameConfig.GAME_DATA.push(cc.fx.GameConfig.CLICK_DATA); + cc.fx.GameConfig.CLICK_init(); + var data = cc.fx.GameConfig.GAME_DATA; + var matchId = this.getMatchId(); + var postData = { + "gameId": cc.fx.GameConfig.GM_INFO.gameId, + "userId": cc.fx.GameConfig.GM_INFO.userId, + "scode": cc.fx.GameConfig.GM_INFO.scode, + "matchId": matchId, + "data": data + }; + // console.log("上传数据:",postData); + // cc.fx.HttpUtil.uploadUserLogData(postData,function(){}) + }, + //上传排行榜 type为1 + setRank: function (data) { + //GAME_DATA 初始化 每次清零 + var postData = { + "gameId": cc.fx.GameConfig.GM_INFO.gameId, + "userId": cc.fx.GameConfig.GM_INFO.userId, + "type": 1, + "score": data.score, + "accuracy": data.date, + "success": cc.fx.GameConfig.GM_INFO.success + }; + // cc.fx.HttpUtil.rankData(1,function(){},postData); + }, + //获取排行榜 type为2 + getRank: function (data, callback) { + var rankLength = data.length; + var postData = { + "gameId": cc.fx.GameConfig.GM_INFO.gameId, + "userId": cc.fx.GameConfig.GM_INFO.userId, + "page": 1, + "pageSize": rankLength + }; + //回调进getRankData + // cc.fx.HttpUtil.rankData(2,data =>{callback(data)},postData); + }, + //获取matchId 用于上传每次点击数据里面记录id方便查询 + getMatchId: function () { + var matchId = cc.sys.localStorage.getItem("matchId"); + var tempId = matchId; + if (matchId == "undifend" || matchId == null) { + matchId = this.setMatchId(); + } + else { + if (this.containsNanana(matchId) == true) { + matchId = this.setMatchId(); + } + else { + var char = parseInt(tempId.substring(10, tempId.length)); + if (cc.fx.GameConfig.GM_INFO.level == 1) { + char += 1; + matchId = tempId.slice(0, 10) + char + ""; + if (this.containsNanana(matchId)) + matchId = this.setMatchId(); + cc.fx.GameConfig.GM_INFO.matchId = matchId; + cc.sys.localStorage.setItem("matchId", matchId); + } + } + } + if (this.containsNanana(matchId) == true) { + matchId = this.setMatchId(); + } + return matchId; + }, + //检测matchId 如果有缓存以前的nanana数据清除 + containsNanana: function (str) { + return /na/i.test(str); + }, + //重新设置MatchId + setMatchId: function () { + // 定义包含可用字符的字符集 + var characters = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789'; + // 创建一个数组以保存随机字符 + var uuidArray = []; + // 循环10次 生成10位的UUID + for (var i = 0; i < 10; i++) { + // 生成随机索引,范围是字符集的长度 + var randomIndex = Math.floor(Math.random() * characters.length); + // 从字符集中获取随机字符 + var randomChar = characters.charAt(randomIndex); + // 将字符添加到数组中 + uuidArray.push(randomChar); + } + var data = uuidArray.join('') + 1 + ""; + cc.sys.localStorage.setItem("matchNumber", 1); + cc.sys.localStorage.setItem("matchId", data); + cc.fx.GameConfig.GM_INFO.matchId = data; + return data; + }, + //截取名字 + subName: function (name, length) { + if (name.length > length) { + name = name.substring(0, length) + "..."; + } + return name; + }, + //设置头像 + setPic: function (node, pic) { + node.active = false; + var url = pic; + setTimeout(function () { + fetch(url) + .then(function (response) { + return response.headers.get('Content-Length'); + }) + .then(function (errNo) { + if (errNo == "5093") { + node.active = true; + } + }) + .catch(function (error) { + // console.error('Error fetching X-Info:', error); + }); + }, 100); + cc.assetManager.loadRemote(url, { ext: '.png' }, function (err, texture) { + if (texture) { + node.active = true; + node.getComponent(cc.Sprite).spriteFrame = new cc.SpriteFrame(texture); + } + else { + // console.log(err,texture) + } + }); + }, + //第一个参数把目标带进来处理,第二个参数为名字长度,不同场景不同需求 + //名字4短,小排行,名字6长,大排行 + getRankData: function (data, target, nameLength) { + target.listData = data.data.list; + target.selfData = data.data.info; + var rankData = []; + var self = false; + cc.fx.GameTool.setPic(target.selfNode.getChildByName("pic").getChildByName("icon"), target.selfData.pic); + for (var i = 0; i <= target.listData.length - 1; i++) { + rankData.push({ rank: (i + 1), name: target.listData[i].nickName, total: target.listData[i].score, time: null, pic: target.listData[i].pic }); + if (cc.fx.GameConfig.GM_INFO.userId == target.listData[i].userId) { + self = true; + target.rankNumber = i; + target.selfNode.getChildByName("rankLab").getComponent(cc.Label).string = (i + 1) + ""; + } + if (i == (target.listData.length - 1) && self == false) { + target.rankNumber = i; + target.selfNode.getChildByName("rankLab").getComponent(cc.Label).string = "99+"; + } + } + target.selfData.nickName = cc.fx.GameTool.subName(target.selfData.nickName, nameLength); + target.selfNode.getChildByName("nameLab").getComponent(cc.Label).string = target.selfData.nickName; + target.selfNode.getChildByName("totalLab").getComponent(cc.Label).string = target.selfData.score; + var timeTemp = cc.fx.GameTool.getTimeShenNong(target.selfData.totleTimes); + // target.selfNode.getChildByName("timeLab").getComponent(cc.Label).string = timeTemp + ""; + switch (target.selfNode.getChildByName("rankLab").getComponent(cc.Label).string) { + case "1": + target.selfNode.getChildByName("rank").getChildByName("one").active = true; + break; + case "2": + target.selfNode.getChildByName("rank").getChildByName("two").active = true; + break; + case "3": + target.selfNode.getChildByName("rank").getChildByName("three").active = true; + break; + } + // 大排行 + if (nameLength == 6) { + target.rankList.setData(rankData); + target.selfNode.opacity = 255; + if (target.selfData.totalSunCount == 0) + target.selfNode.opacity = 0; + } + }, + getSeedRandom: function (min, max) { + // console.log("随机数:",cc.fx.GameConfig.GM_INFO.currSeed); + max = max || 1; + min = min || 0; + cc.fx.GameConfig.GM_INFO.currSeed = (cc.fx.GameConfig.GM_INFO.currSeed * 9301 + 49297) % 233280; + var rnd = cc.fx.GameConfig.GM_INFO.currSeed / 233280.0; + var tmp = min + rnd * (max - min); + return parseInt(tmp); + }, + //获取关卡配置的那个关卡数 + getCustom: function (type) { + var custom = cc.fx.StorageMessage.getStorage(cc.fx.storageType.storageTypeCustom); + if (custom == "undifend" || custom == null || custom == "") { + this.setCustom(); + } + else { + cc.fx.GameConfig.GM_INFO_SET("custom", custom[0]); + if (custom[0] != 0 || type == true) { + custom.shift(); + if (custom.length == 0) { + this.setCustom(); + } + else + cc.fx.StorageMessage.setStorage(cc.fx.storageType.storageTypeCustom, custom); + } + } + }, + //本地没有存储到配置,或者配置用完,重新创建配置 + setCustom: function () { + var arrayLength = cc.fx.GameConfig.LEVEL_INFO.length; + var arrayList = []; + for (var i = 1; i < arrayLength; i++) { + arrayList.push(i); + } + arrayList.sort(function () { return Math.random() - 0.5; }); + arrayList.unshift(0); + cc.fx.GameConfig.GM_INFO_SET("custom", arrayList[0]); + cc.fx.StorageMessage.setStorage(cc.fx.storageType.storageTypeCustom, arrayList); + }, + getSetScreenResolutionFlag: function () { + var size = cc.winSize; + var width = size.width; + var height = size.height; + if ((height / width) > (16.2 / 9)) + return false; + return true; + }, + //判断全面屏适配 + setFit: function (canvas) { + var flag = cc.fx.GameTool.getSetScreenResolutionFlag(); + if (flag) { + // console.log("不是全面屏"); + } + else { + // console.log("是全面屏"); + } + return flag; + }, + //获取游戏信息 + getGameInfo: function (node) { + var jg = false; + return jg; + }, + //设置游戏信息 + setGameInfo: function (pd) { + }, + //打字机效果 + typingAni: function (label, text, cb, target) { + var self = target; + var html = ''; + var arr = text.split(''); + var len = arr.length; + var step = 0; + self.func = function () { + html += arr[step]; + label.string = html; + if (++step == len) { + self.unschedule(self.func); + cb && cb(); + } + }; + self.schedule(self.func, 0.1, cc.macro.REPEAT_FOREVER, 0); + }, + //输入秒,返回需要展示时间格式 + getTimeMargin: function (second) { + var total = 0; + total = second; + var hour = 0; + hour = parseInt((total / 3600) + ""); //计算整数小时数 + var afterHour = total - hour * 60 * 60; //取得算出小时数后剩余的秒数 + var min = parseInt((afterHour / 60) + ""); //计算整数分 + var m = "" + min; + if (min < 10) + m = "0" + min; + var afterMin = total - hour * 60 * 60 - min * 60; //取得算出分后剩余的秒数 + var miao = afterMin + ""; + if (afterMin < 10) + miao = "0" + afterMin; + return m + ':' + miao; + }, + //输入秒,返回需要展示时间格式 + getTimeShenNong: function (second) { + second = parseInt(second / 1000 + ""); + var total = 0; + total = second; + var min = 0; + if (total > 60) { + min = parseInt((total / 60) + ""); //计算整数分 + } + var m = min + "'"; + var afterMin = total - min * 60; //取得算出分后剩余的秒数 + var miao = afterMin + "''"; + return m + miao; + }, + //打乱数组 + shuffleArray: function (array) { + var _a; + for (var i = array.length - 1; i > 0; i--) { + var j = Math.floor(Math.random() * (i + 1)); + _a = [array[j], array[i]], array[i] = _a[0], array[j] = _a[1]; + } + return array; + }, + //增加关卡数 + addLevel: function (time1, time2) { + cc.fx.GameConfig.GM_INFO.level += 1; + if (cc.fx.GameConfig.GM_INFO.level > 156) { + cc.fx.GameConfig.GM_INFO.level = 156; + } + var timestamp = Date.now(); + var levelInfo = { + level: cc.fx.GameConfig.GM_INFO.level, + timestamp: timestamp, + }; + // console.log("55555存储关卡数据:",levelInfo); + cc.fx.StorageMessage.setStorage("level", levelInfo); + if (time1 && time2) { + var data = { + time: time1, + add_Time: time2, + result: "success" + }; + cc.fx.GameTool.shushu_Track("finish_stage", data); + MiniGameSdk_1.MiniGameSdk.API.shushu_SetSuperProperties(); + } + cc.fx.GameTool.setUserLevel(function (data) { + // console.log("存储结果:",data); + // console.log("上传",data); + }); + }, + //改变金币信息 + changeCoin: function (coin) { + console.log("changeCoin", coin); + if (coin == undefined) + return; + if (coin < 0 && cc.fx.GameConfig.GM_INFO.coin < -coin) { + // console.log("金币不足",cc.fx.GameConfig.GM_INFO.coin,-coin); + return; + } + cc.fx.GameConfig.GM_INFO.coin += coin; + if (cc.fx.GameConfig.GM_INFO.coin < 0) { + cc.fx.GameConfig.GM_INFO.coin = 0; + } + // console.log("改变的金币:",coin); + // console.log("自身金币信息:",cc.fx.GameConfig.GM_INFO.coin); + var timestamp = Date.now(); + var coinInfo = { + coin: cc.fx.GameConfig.GM_INFO.coin, + timestamp: timestamp, + }; + MiniGameSdk_1.MiniGameSdk.API.shushu_SetSuperProperties(); + cc.fx.StorageMessage.setStorage("coin", coinInfo); + // console.log("存储金币数据:",cc.fx.GameConfig.GM_INFO.coin,coinInfo); + cc.fx.GameTool.setUserCoin(function (data) { + // console.log("上传",data); + }); + }, + //获取用户金币数量 + getUserCoin: function (callback) { + if (typeof wx !== 'undefined' && wx !== null) { + //@ts-ignore + wx.cloud.callFunction({ + name: 'userCoin', + data: { + action: 'read' + }, + success: function (res) { + // console.log('读取用户金币数据成功', res.result) + if (callback) + callback(res); + }, + fail: function (err) { + callback(err); + } + }); + } + }, + //改变用户金币 + setUserCoin: function (callback) { + if (typeof wx !== 'undefined' && wx !== null) { + if (cc.fx.GameConfig.GM_INFO.coin <= 0 || cc.fx.GameConfig.GM_INFO.coin == undefined) { + console.log("金币上传失败", cc.fx.GameConfig.GM_INFO.coin); + // MiniGameSdk.API.showToast(cc.fx.GameConfig.GM_INFO.coin); + cc.fx.GameConfig.GM_INFO.coin = 0; + } + console.log("即将上传的金币数量:", cc.fx.GameConfig.GM_INFO.coin); + //@ts-ignore + wx.cloud.callFunction({ + name: 'userCoin', + data: { + action: 'save', + coinAmount: cc.fx.GameConfig.GM_INFO.coin + }, + success: function (res) { + // console.log('云函数返回结果:', res); + if (res.result.code == 200) { + // console.log('存储金币数据成功',cc.fx.GameConfig.GM_INFO.coin); + } + if (callback) { + callback(res); + } + }, + fail: function (err) { + // console.log('存储金币数据失败') + if (callback) { + callback(err); + } + console.error('存储用户数据失败', err); + } + }); + } + }, + //获取用户关卡数 + getUserLevel: function (callback) { + if (typeof wx !== 'undefined' && wx !== null) { + //@ts-ignore + wx.cloud.callFunction({ + name: 'userLevel', + data: { + action: 'read' + }, + success: function (res) { + if (callback) + callback(res); + }, + fail: function (err) { + callback(err); + } + }); + } + }, + //进游戏处理 体力值情况 + getHealth: function (callback) { + var health = cc.fx.StorageMessage.getStorage("health"); + var timestamp = Date.now(); + cc.fx.GameConfig.GM_INFO.hp = 5; + //没有存储过体力值 + if (health == null || health == undefined || health == "") { + console.log("没存储过体力值,初进"); + cc.fx.GameConfig.GM_INFO.hp = 5; + cc.fx.GameTool.getUserHealth(function (data) { + console.log("体力接口返回结果", data); + if (data.result.code == 200) { + cc.fx.GameConfig.GM_INFO.hp = data.result.data; + cc.fx.GameConfig.GM_INFO.min_Time = data.result.timestamp; + var healthInfo = { + "health": cc.fx.GameConfig.GM_INFO.hp, + "timestamp": data.result.timestamp + }; + MiniGameSdk_1.MiniGameSdk.API.shushu_SetSuperProperties(); + cc.fx.StorageMessage.setStorage("health", healthInfo); + } + else if (data.result.code == 404 && data.result.message == "未找到体力数据") { + cc.fx.GameTool.setUserHealth(0, function () { + }); + } + if (callback) + callback(); + }); + } + else { + console.log("有存储过体力值:", health); + cc.fx.GameConfig.GM_INFO.hp = health.health; + if (callback) { + console.log("体力值读取完毕"); + callback(); + } + if (health.health < 0) { + console.log("体力值异常,归零"); + cc.fx.GameConfig.GM_INFO.hp = 0; + cc.fx.GameTool.setUserHealth(0, function () { + if (callback) + callback(); + }); + } + else if (health.health < 5) { + // 30分钟的毫秒数 + var thirtyMinutes = 30 * 60 * 1000; + var elapsedTime = timestamp - health.timestamp; + // 计算恢复的体力值 + var recoveredHealth = Math.min(5 - health.health, Math.floor(elapsedTime / thirtyMinutes)); + if (recoveredHealth > 0) { + health.health += recoveredHealth; + cc.fx.GameTool.setUserHealth(recoveredHealth, function () { + if (callback) + callback(); + }); + console.log("\u4F53\u529B\u503C\u6062\u590D " + recoveredHealth + " \u70B9\uFF0C\u5F53\u524D\u4F53\u529B\u503C: " + cc.fx.GameConfig.GM_INFO.hp); + } + else { + // 计算距离下一次恢复的剩余时间 + var remainingTime = Math.ceil((thirtyMinutes - (elapsedTime % thirtyMinutes)) / 1000); + console.log("\u4F53\u529B\u503C\u672A\u6EE1\uFF0C\u5F85\u6062\u590D\uFF0C\u8DDD\u79BB\u4E0B\u4E00\u6B21\u6062\u590D\u8FD8\u5269 " + remainingTime + " \u79D2"); + cc.fx.GameConfig.GM_INFO.min_Time = remainingTime; + } + } + } + }, + //获取用户体力值 + getUserHealth: function (callback) { + if (typeof wx !== 'undefined' && wx !== null) { + console.log("即将进入体力获取接口"); + //@ts-ignore + wx.cloud.callFunction({ + name: 'userHealth', + data: { + action: 'read' + }, + success: function (res) { + // console.log("体力获取成功",res); + if (callback) + callback(res); + }, + fail: function (err) { + // console.log("体力获取失败",err); + callback(err); + } + }); + } + }, + //设置用户体力值 有可能加,有可能定时器减 + setUserHealth: function (health, callback) { + cc.fx.GameConfig.GM_INFO.hp += health; + // if(health < 0) { + // } + // else MiniGameSdk.API.showToast("体力值恢复"); + var timestamp = Date.now(); + var healthInfo = {}; + //如果消耗之前不是满体力,说明已经在恢复期,并不用修改时间 + if (health < 0 && cc.fx.GameConfig.GM_INFO.hp != 4) { + var oldTime = cc.fx.StorageMessage.getStorage("health").timestamp; + healthInfo = { + "health": cc.fx.GameConfig.GM_INFO.hp, + "timestamp": oldTime + }; + } + else { + healthInfo = { + "health": cc.fx.GameConfig.GM_INFO.hp, + "timestamp": timestamp + }; + } + cc.fx.StorageMessage.setStorage("health", healthInfo); + MiniGameSdk_1.MiniGameSdk.API.shushu_SetSuperProperties(); + if (typeof wx !== 'undefined' && wx !== null) { + //@ts-ignore + wx.cloud.callFunction({ + name: 'userHealth', + data: { + action: 'save', + healthAmount: cc.fx.GameConfig.GM_INFO.hp, + timestamp: timestamp + }, + success: function (res) { + if (callback) { + callback(res); + } + }, + fail: function (err) { + if (callback) { + callback(err); + } + // console.error('存储关卡数据失败', err) + } + }); + } + }, + //购买行为 + buyReview: function (coin, callback) { + if (typeof wx !== 'undefined' && wx !== null) { + // console.log("实际即将消耗金币:",coin); + // this.changeCoin(coin); + callback(); + } + }, + //更改用户道具数 + buyProp: function (propid, callback) { + if (typeof wx !== 'undefined' && wx !== null) { + cc.fx.GameTool.changeCoin(-1500); + cc.fx.GameTool.setUserProp(propid, 3, function (data) { + }); + var data = { + id: (propid + ""), + num: 3 + }; + cc.fx.GameTool.shushu_Track("resource_get", data); + var _id = ""; + if (propid == 2001) + _id = "freeze_in_game"; + else if (propid == 2002) + _id = "hammer_in_game"; + else if (propid == 2003) + _id = "wand_in_game"; + var buyData = { + item_id: _id, + item_num: 1, + item_price: 1500, + cost_type: "gold" + }; + console.log("____________即将上传Shop_buy", buyData); + cc.fx.GameTool.shushu_Track("shop_buy", buyData); + callback(); + } + }, + //改变用户关卡 + setUserLevel: function (callback) { + if (typeof wx !== 'undefined' && wx !== null) { + // if(cc.fx.GameConfig.GM_INFO.level <= 0 || cc.fx.GameConfig.GM_INFO.level == undefined){ + // console.log("等级重置为0"); + // cc.fx.GameConfig.GM_INFO.level = 0; + // } + // console.log("即将上传的关卡数:",cc.fx.GameConfig.GM_INFO.level); + //@ts-ignore + wx.cloud.callFunction({ + name: 'userLevel', + data: { + action: 'save', + levelAmount: cc.fx.GameConfig.GM_INFO.level + }, + success: function (res) { + // console.log('云函数返回结果:', res); + // console.log('存储关卡数据成功',cc.fx.GameConfig.GM_INFO.level); + if (callback) { + callback(res); + } + }, + fail: function (err) { + // console.log('存储关卡数据失败') + return; + if (callback) { + callback(err); + } + console.error('存储关卡数据失败', err); + } + }); + } + }, + //获取用户关卡数 + getUserProp: function (callback) { + if (typeof wx !== 'undefined' && wx !== null) { + //@ts-ignore + wx.cloud.callFunction({ + name: 'userProp', + data: { + action: 'read' + }, + success: function (res) { + // console.log('读取用户道具数据成功', res.result) + if (res.result.data) { + // cc.fx.GameConfig.GM_INFO.freezeAmount = res.result.data.freeze; + // cc.fx.GameConfig.GM_INFO.hammerAmount = res.result.data.hammer; + // cc.fx.GameConfig.GM_INFO.magicAmount = res.result.data.magic_wand; + } + if (callback) + callback(res); + }, + fail: function (err) { + callback(err); + } + }); + } + }, + //改变用户道具 + setUserProp: function (propid, amount, callback) { + if (typeof wx !== 'undefined' && wx !== null) { + var newPropData = null; + if (propid == 0) { + newPropData = { + freeze: cc.fx.GameConfig.GM_INFO.freezeAmount, + hammer: cc.fx.GameConfig.GM_INFO.hammerAmount, + magic_wand: cc.fx.GameConfig.GM_INFO.magicAmount, + }; + } + else if (propid == 2001) { + newPropData = amount; + } + else if (propid == 2002) { + newPropData = amount; + } + else if (propid == 2003) { + newPropData = amount; + } + //@ts-ignore + wx.cloud.callFunction({ + name: 'userProp', + data: { + action: 'save', + propType: propid, + propData: newPropData + }, + success: function (res) { + // console.log('云函数返回结果:', res); + if (callback) { + callback(res); + } + // console.log('存储道具数据成功') + }, + fail: function (err) { + // console.log('存储道具数据失败') + if (callback) { + callback(err); + } + console.error('存储道具数据失败', err); + } + }); + } + }, + // 检查是否有足够的硬币 + consumeCoins: function (requiredCoins, propName, amount, callback) { + }, + // 设置用户信息 + setUserInfo: function (callback) { + //@ts-ignore + if (typeof wx !== 'undefined' && wx !== null) { + var time = cc.fx.GameTool.formatDate(new Date()); + var userInfo = { + // 这里填写要存储的用户数据 + username: cc.fx.GameConfig.GM_INFO.username, + useravatar: cc.fx.GameConfig.GM_INFO.useravatar, + register_time: time + }; + //@ts-ignore + wx.cloud.callFunction({ + name: 'userData', + data: { + action: 'save', + userData: userInfo + }, + success: function (res) { + // console.log('存储用户数据成功') + if (callback) { + callback(res); + } + }, + fail: function (err) { + if (callback) { + callback("fail"); + } + } + }); + } + }, + formatDate: function (date) { + var year = date.getFullYear(); + var month = String(date.getMonth() + 1).padStart(2, '0'); + var day = String(date.getDate()).padStart(2, '0'); + var hours = String(date.getHours()).padStart(2, '0'); + var minutes = String(date.getMinutes()).padStart(2, '0'); + var seconds = String(date.getSeconds()).padStart(2, '0'); + var milliseconds = String(date.getMilliseconds()).padStart(3, '0'); + return year + "-" + month + "-" + day + " " + hours + ":" + minutes + ":" + seconds + "." + milliseconds; + }, + //获取时间戳 + getTime: function () { + var timestamp = (new Date().getTime()); + return timestamp; + }, + pushLister: function () { + }, + removeAllLister: function () { + }, + shushu_Track: function (name, data) { + var eventData = {}; + switch (name) { + case "register": + break; + case "enter_stage": + eventData = { + stage_id: (cc.fx.GameConfig.GM_INFO.level + 1) + }; + break; + case "finish_stage": + eventData = { + stage_id: (cc.fx.GameConfig.GM_INFO.level + 1), + stage_duration: data.time, + added_time: data.add_Time, + result: data.result + }; + break; + case "resource_get": + eventData = { + change_reason: "购买道具", + change_num: data.num, + resource_id: data.id //道具id + }; + break; + case "resource_cost": + eventData = { + change_reason: "使用道具", + change_num: data.num, + resource_id: data.id //道具id + }; + break; + case "shop_buy": + eventData = { + item_id: data.item_id, + item_num: data.item_num, + item_price: data.item_price, + cost_type: data.cost_type, + }; + console.log("数据:", eventData); + break; + } + // MiniGameSdk.API.shushu_Track(name,eventData); + MiniGameSdk_1.MiniGameSdk.API.shushu_Track(name, eventData); + }, + getWechatGameVersion: function () { + //@ts-ignore + var accountInfo = wx.getAccountInfoSync(); + var miniProgram = accountInfo.miniProgram; + switch (miniProgram.envVersion) { + case 'develop': + return '开发版'; + case 'trial': + return '体验版'; + case 'release': + return '正式版'; + default: + return '未知版本'; + } + }, +}; +exports.GameTool = GameTool; + +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,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImFzc2V0c1xcU2NyaXB0XFxtb2R1bGVcXFRvb2xcXEdhbWVUb29sLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLHFEQUFvRDtBQUVwRCwrQkFBK0I7QUFDL0IsSUFBSSxRQUFRLEdBQUc7SUFDWCxVQUFVLEVBQUUsQ0FBQztJQUNiLFFBQVEsRUFBRSxDQUFDO0lBQ1gsVUFBVSxFQUFFLENBQUM7SUFFYixVQUFVO0lBQ1YsY0FBYztRQUNWLElBQUksSUFBSSxHQUFHLE9BQU8sR0FBRyxFQUFFLENBQUMsRUFBRSxDQUFDLFVBQVUsQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDO1FBQ3JELElBQUksSUFBSSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsWUFBWSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO1FBQ2xELElBQUcsSUFBSSxJQUFJLFVBQVUsSUFBSSxJQUFJLElBQUUsSUFBSSxJQUFJLElBQUksSUFBSSxFQUFFLEVBQUM7WUFDOUMsSUFBSSxNQUFNLEdBQUcsTUFBTSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUM7WUFDbEMsSUFBRyxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsTUFBTSxDQUFDLEVBQUM7Z0JBQzNCLElBQUksR0FBRyxHQUFHLDhFQUE4RSxHQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUM7Z0JBQ3ZHLE1BQU0sQ0FBQyxRQUFRLENBQUMsSUFBSSxHQUFHLEdBQUcsQ0FBQzthQUM5QjtTQUNKO2FBQ0c7WUFDQSxFQUFFLENBQUMsRUFBRSxDQUFDLGNBQWMsQ0FBQyxVQUFVLENBQUMsSUFBSSxFQUFDLElBQUksQ0FBQyxDQUFDO1lBQzNDLEVBQUUsQ0FBQyxFQUFFLENBQUMsVUFBVSxDQUFDLE9BQU8sQ0FBQyxNQUFNLEdBQUcsUUFBUSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQztTQUMzRDtJQUNMLENBQUM7SUFFRCxhQUFhLFlBQUMsR0FBRztRQUNiLE9BQU8sYUFBYSxD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QUFLLE9BQU87Z0JBQ1IsT0FBTyxLQUFLLENBQUM7WUFDakIsS0FBSyxTQUFTO2dCQUNWLE9BQU8sS0FBSyxDQUFDO1lBQ2pCO2dCQUNJLE9BQU8sTUFBTSxDQUFDO1NBQ3JCO0lBQ0wsQ0FBQztDQUVKLENBQUM7QUFDTyw0QkFBUSIsImZpbGUiOiIiLCJzb3VyY2VSb290IjoiLyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE1pbmlHYW1lU2RrIH0gZnJvbSBcIi4uLy4uL1Nkay9NaW5pR2FtZVNka1wiO1xyXG5cclxuLy/mnIDlpKflt6XlhbfnsbsgIOWQhOenjeWFrOWFseaWueazle+8jOS7peWPiuWkhOeQhuS4iuS8oO+8jOiOt+WPluWQjuerr+aOpeWPo+aVsOaNrlxyXG52YXIgR2FtZVRvb2wgPSB7XHJcbiAgICBfc3RhcnRUaW1lOiAwLFxyXG4gICAgX2VuZFRpbWU6IDAsXHJcbiAgICBfdG90YWxUaW1lOiAwLFxyXG4gICAgXHJcbiAgICAvL+iOt+WPlnVzZXJJZFxyXG4gICAgQXV0aGVudGljYXRpb24oKXtcclxuICAgICAgICBsZXQgbmFtZSA9IFwidXNlcl9cIiArIGNjLmZ4LkdhbWVDb25maWcuR01fSU5GTy5nYW1lSWQ7XHJcbiAgICAgICAgdmFyIGRhdGEgPSBKU09OLnBhcnNlKGxvY2FsU3RvcmFnZS5nZXRJdGVtKG5hbWUpKTtcclxuICAgICAgICBpZihkYXRhID09IFwidW5kaWZlbmRcIiB8fCBkYXRhPT1udWxsIHx8IGRhdGEgPT0gXCJcIil7XHJcbiAgICAgICAgICAgIHZhciB1cmxOb3cgPSB3aW5kb3cubG9jYXRpb24uaHJlZjtcclxuICAgICAgICAgICAgaWYoIXRoaXMuY29udGFpbnNUcmFpbih1cmxOb3cpKXtcclxuICAgICAgICAgICAgICAgIGxldCB1cmwgPSBcImh0dHBzOi8vYXBpLnNwYXJrdXMuY24vYXBpL3VzZXIvYXV0aC9sb2dpbj9kb21haW49aHVpMzI1NzlXZFlQc2dZcSZjYWxsYmFjaz1cIitsb2NhdGlvbi5ocmVmO1xyXG4gICAgICAgICAgICAgICAgd2luZG93LmxvY2F0aW9uLmhyZWYgPSB1cmw7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZXtcclxuICAgICAgICAgICAgY2MuZnguU3RvcmFnZU1lc3NhZ2Uuc2V0U3RvcmFnZShuYW1lLGRhdGEpO1xyXG4gICAgICAgICAgICBjYy5meC5HYW1lQ29uZmlnLkdNX0lORk8udXNlcklkID0gcGFyc2VJbnQoZGF0YS51c2VySWQpO1xyXG4gICAgICAgIH1cclxuICAgIH0sXHJcblxyXG4gICAgY29udGFpbnNUcmFpbihzdHIpIHtcclxuICAgICAgICByZXR1cm4gL2Zyb209dHJhaW4vaS50ZXN0KHN0cik7XHJcbiAgICB9LFxyXG5cclxuICAgIC8v5Z+L54K55LiK5LygXHJcbiAgICBzZXRHYW1lRGF0YSgpe1xyXG4gICAgICAgIC8vR0FNRV9EQVRBIOWIneWni+WMliDmr4/mrKHmuIXpm7ZcclxuICAgICAgICBjYy5meC5HYW1lQ29uZmlnLkdBTUVfREFUQSA9IFtdO1xyXG4gICAgICAgIGNjLmZ4LkdhbWVDb25maWcuR0FNRV9EQVRBLnB1c2goY2MuZnguR2FtZUNvbmZpZy5DTElDS19EQVRBKTtcclxuICAgICAgICBjYy5meC5HYW1lQ29uZmlnLkNMSUNLX2luaXQoKTtcclxuICAgICAgICBsZXQgZGF0YSA9IGNjLmZ4LkdhbWVDb25maWcuR0FNRV9EQVRBO1xyXG4gICAgICAgIGxldCBtYXRjaElkID0gdGhpcy5nZXRNYXRjaElkKCk7XHJcbiAgICAgICAgbGV0IHBvc3REYXRhID0ge1xyXG4gICAgICAgICAgICBcImdhbWVJZFwiOmNjLmZ4LkdhbWVDb25maWcuR01fSU5GTy5nYW1lSWQsXHJcbiAgICAgICAgICAgIFwidXNlcklkXCI6Y2MuZnguR2FtZUNvbmZpZy5HTV9JTkZPLnVzZXJJZCxcclxuICAgICAgICAgICAgXCJzY29kZVwiOiBjYy5meC5HYW1lQ29uZmlnLkdNX0lORk8uc2NvZGUsXHJcbiAgICAgICAgICAgIFwibWF0Y2hJZFwiOm1hdGNoSWQsXHJcbiAgICAgICAgICAgIFwiZGF0YVwiOiBkYXRhXHJcbiAgICAgICAgfTtcclxuXHJcbiAgICAgICAgLy8gY29uc29sZS5sb2coXCLkuIrkvKDmlbDmja46XCIscG9zdERhdGEpO1xyXG4gICAgICAgIC8vIGNjLmZ4Lkh0dHBVdGlsLnVwbG9hZFVzZXJMb2dEYXRhKHBvc3REYXRhLGZ1bmN0aW9uKCl7fSlcclxuICAgIH0sXHJcbiAgICAvL+S4iuS8oOaOkuihjOamnCAgdHlwZeS4ujFcclxuICAgIHNldFJhbmsoZGF0YSl7XHJcbiAgICAgICAgLy9HQU1FX0RBVEEg5Yid5aeL5YyWIOavj+asoea4hembtlxyXG4gICAgICAgIGxldCBwb3N0RGF0YSA9IHtcclxuICAgICAgICAgICAgXCJnYW1lSWRcIjpjYy5meC5HYW1lQ29uZmlnLkdNX0lORk8uZ2FtZUlkLFxyXG4gICAgICAgICAgICBcInVzZXJJZFwiOmNjLmZ4LkdhbWVDb25maWcuR01fSU5GTy51c2VySWQsXHJcbiAgICAgICAgICAgIFwidHlwZVwiOjEsXHJcbiAgICAgICAgICAgIFwic2NvcmVcIjogZGF0YS5zY29yZSxcclxuICAgICAgICAgICAgXCJhY2N1cmFjeVwiOiBkYXRhLmRhdGUsXHJcbiAgICAgICAgICAgIFwic3VjY2Vzc1wiOiBjYy5meC5HYW1lQ29uZmlnLkdNX0lORk8uc3VjY2Vzc1xyXG4gICAgICAgIH07XHJcbiAgICAgICAgLy8gY2MuZnguSHR0cFV0aWwucmFua0RhdGEoMSxmdW5jdGlvbigpe30scG9zdERhdGEpO1xyXG4gICAgfSxcclxuICAgIC8v6I635Y+W5o6S6KGM5qacIHR5cGXkuLoyXHJcbiAgICBnZXRSYW5rKGRhdGEsY2FsbGJhY2spe1xyXG4gICAgICAgIGxldCByYW5rTGVuZ3RoID0gZGF0YS5sZW5ndGg7XHJcbiAgICAgICAgbGV0IHBvc3REYXRhID0ge1xyXG4gICAgICAgICAgICBcImdhbWVJZFwiOmNjLmZ4LkdhbWVDb25maWcuR01fSU5GTy5nYW1lSWQsXHJcbiAgICAgICAgICAgIFwidXNlcklkXCI6Y2MuZnguR2FtZUNvbmZpZy5HTV9JTkZPLnVzZXJJZCxcclxuICAgICAgICAgICAgXCJwYWdlXCI6MSxcclxuICAgICAgICAgICAgXCJwYWdlU2l6ZVwiOnJhbmtMZW5ndGhcclxuICAgICAgICB9OyBcclxuICAgICAgICAvL+Wbnuiwg+i/m2dldFJhbmtEYXRhXHJcbiAgICAgICAgLy8gY2MuZnguSHR0cFV0aWwucmFua0RhdGEoMixkYXRhID0+e2NhbGxiYWNrKGRhdGEpfSxwb3N0RGF0YSk7XHJcbiAgICB9LFxyXG4gICAgLy/ojrflj5ZtYXRjaElkICDnlKjkuo7kuIrkvKDmr4/mrKHngrnlh7vmlbDmja7ph4zpnaLorrDlvZVpZOaWueS+v+afpeivolxyXG4gICAgZ2V0TWF0Y2hJZCAoKXtcclxuICAgICAgICBsZXQgbWF0Y2hJZCA9IGNjLnN5cy5sb2NhbFN0b3JhZ2UuZ2V0SXRlbShcIm1hdGNoSWRcIik7XHJcbiAgICAgICAgbGV0IHRlbXBJZCA9IG1hdGNoSWQ7XHJcbiAgICAgICAgaWYobWF0Y2hJZCA9PSBcInVuZGlmZW5kXCIgfHwgbWF0Y2hJZD09bnVsbCl7XHJcbiAgICAgICAgICAgIG1hdGNoSWQgPSAgdGhpcy5zZXRNYXRjaElkKCk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2V7XHJcbiAgICAgICAgICAgIGlmKHRoaXMuY29udGFpbnNOYW5hbmEobWF0Y2hJZCkgPT0gdHJ1ZSl7XHJcbiAgICAgICAgICAgICAgICBtYXRjaElkID0gIHRoaXMuc2V0TWF0Y2hJZCgpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGVsc2V7XHJcbiAgICAgICAgICAgICAgICBsZXQgY2hhciA9IHBhcnNlSW50KHRlbXBJZC5zdWJzdHJpbmcoMTAsdGVtcElkLmxlbmd0aCkpO1xyXG4gICAgICAgICAgICAgICAgaWYoY2MuZnguR2FtZUNvbmZpZy5HTV9JTkZPLmxldmVsID09IDEpe1xyXG4gICAgICAgICAgICAgICAgICAgIGNoYXIgKz0gMTtcclxuICAgICAgICAgICAgICAgICAgICBtYXRjaElkICA9IHRlbXBJZC5zbGljZSgwLCAxMCkgKyBjaGFyICsgXCJcIjtcclxuICAgICAgICAgICAgICAgICAgICBpZih0aGlzLmNvbnRhaW5zTmFuYW5hKG1hdGNoSWQpKSBtYXRjaElkID0gdGhpcy5zZXRNYXRjaElkKCk7XHJcbiAgICAgICAgICAgICAgICAgICAgY2MuZnguR2FtZUNvbmZpZy5HTV9JTkZPLm1hdGNoSWQgPSBtYXRjaElkO1xyXG4gICAgICAgICAgICAgICAgICAgIGNjLnN5cy5sb2NhbFN0b3JhZ2Uuc2V0SXRlbShcIm1hdGNoSWRcIixtYXRjaElkKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgaWYodGhpcy5jb250YWluc05hbmFuYShtYXRjaElkKSA9PSB0cnVlKXtcclxuICAgICAgICAgICAgbWF0Y2hJZCA9ICB0aGlzLnNldE1hdGNoSWQoKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIG1hdGNoSWQ7XHJcbiAgICB9LFxyXG4gICAgLy/mo4DmtYttYXRjaElkIOWmguaenOaciee8k+WtmOS7peWJjeeahG5hbmFuYeaVsOaNrua4hemZpFxyXG4gICAgY29udGFpbnNOYW5hbmEoc3RyKSB7XHJcbiAgICAgICAgcmV0dXJuIC9uYS9pLnRlc3Qoc3RyKTtcclxuICAgIH0sXHJcbiAgICAvL+mHjeaWsOiuvue9rk1hdGNoSWRcclxuICAgIHNldE1hdGNoSWQgKCl7XHJcbiAgICAgICAgLy8g5a6a5LmJ5YyF5ZCr5Y+v55So5a2X56ym55qE5a2X56ym6ZuGXHJcbiAgICAgICAgY29uc3QgY2hhcmFjdGVycyA9ICdhYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5ekFCQ0RFRkdISUpLTE1OT1BRUlNUVVZXWFlaMDEyMzQ1Njc4OSc7XHJcbiAgICAgICAgLy8g5Yib5bu65LiA5Liq5pWw57uE5Lul5L+d5a2Y6ZqP5py65a2X56ymXHJcbiAgICAgICAgY29uc3QgdXVpZEFycmF5ID0gW107XHJcbiAgICAgICAgLy8g5b6q546vMTDmrKEg55Sf5oiQMTDkvY3nmoRVVUlEXHJcbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCAxMDsgaSsrKSB7XHJcbiAgICAgICAgICAgICAgICAvLyDnlJ/miJDpmo/mnLrntKLlvJXvvIzojIPlm7TmmK/lrZfnrKbpm4bnmoTplb/luqZcclxuICAgICAgICAgICAgY29uc3QgcmFuZG9tSW5kZXggPSBNYXRoLmZsb29yKE1hdGgucmFuZG9tKCkgKiBjaGFyYWN0ZXJzLmxlbmd0aCk7XHJcbiAgICAgICAgICAgIC8vIOS7juWtl+espumbhuS4reiOt+WPlumaj+acuuWtl+esplxyXG4gICAgICAgICAgICBjb25zdCByYW5kb21DaGFyID0gY2hhcmFjdGVycy5jaGFyQXQocmFuZG9tSW5kZXgpO1xyXG4gICAgICAgICAgICAvLyDlsIblrZfnrKbmt7vliqDliLDmlbDnu4TkuK1cclxuICAgICAgICAgICAgdXVpZEFycmF5LnB1c2gocmFuZG9tQ2hhcik7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGxldCBkYXRhID0gIHV1aWRBcnJheS5qb2luKCcnKSArIDEgKyBcIlwiO1xyXG4gICAgICAgIGNjLnN5cy5sb2NhbFN0b3JhZ2Uuc2V0SXRlbShcIm1hdGNoTnVtYmVyXCIsMSk7XHJcbiAgICAgICAgY2Muc3lzLmxvY2FsU3RvcmFnZS5zZXRJdGVtKFwibWF0Y2hJZFwiLGRhdGEpO1xyXG4gICAgICAgIGNjLmZ4LkdhbWVDb25maWcuR01fSU5GTy5tYXRjaElkID0gZGF0YTtcclxuICAgICAgICByZXR1cm4gZGF0YTtcclxuICAgIH0sXHJcbiAgICAvL+aIquWPluWQjeWtl1xyXG4gICAgc3ViTmFtZShuYW1lLGxlbmd0aCl7XHJcbiAgICAgICAgaWYobmFtZS5sZW5ndGggPiBsZW5ndGgpe1xyXG4gICAgICAgICAgICBuYW1lID0gbmFtZS5zdWJzdHJpbmcoMCxsZW5ndGgpICsgXCIuLi5cIlxyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gbmFtZTtcclxuICAgIH0sXHJcbiAgICAvL+iuvue9ruWktOWDj1xyXG4gICAgc2V0UGljKG5vZGUscGljKXtcclxuICAgICAgICBub2RlLmFjdGl2ZSA9IGZhbHNlO1xyXG4gICAgICAgIGxldCB1cmwgPSBwaWM7XHJcbiAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgICAgICAgIGZldGNoKHVybClcclxuICAgICAgICAgICAgLnRoZW4ocmVzcG9uc2UgPT4ge1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIHJlc3BvbnNlLmhlYWRlcnMuZ2V0KCdDb250ZW50LUxlbmd0aCcpO1xyXG4gICAgICAgICAgICB9KVxyXG4gICAgICAgICAgICAudGhlbihlcnJObyA9PiB7XHJcbiAgICAgICAgICAgICAgICBpZihlcnJObyA9PSBcIjUwOTNcIil7XHJcbiAgICAgICAgICAgICAgICAgICAgbm9kZS5hY3RpdmUgPSB0cnVlO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9KVxyXG4gICAgICAgICAgICAuY2F0Y2goZXJyb3IgPT4ge1xyXG4gICAgICAgICAgICAgICAgLy8gY29uc29sZS5lcnJvcignRXJyb3IgZmV0Y2hpbmcgWC1JbmZvOicsIGVycm9yKTtcclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgfSwgMTAwKTtcclxuICAgICAgICBjYy5hc3NldE1hbmFnZXIubG9hZFJlbW90ZSh1cmwsIHtleHQ6Jy5wbmcnfSwoZXJyLCB0ZXh0dXJlOmNjLlRleHR1cmUyRCkgPT4ge1xyXG4gICAgICAgICAgICBpZih0ZXh0dXJlKXtcclxuICAgICAgICAgICAgICAgIG5vZGUuYWN0aXZlID0gdHJ1ZTtcclxuICAgICAgICAgICAgICAgIG5vZGUuZ2V0Q29tcG9uZW50KGNjLlNwcml0ZSkuc3ByaXRlRnJhbWUgPSBuZXcgY2MuU3ByaXRlRnJhbWUodGV4dHVyZSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgZWxzZXtcclxuICAgICAgICAgICAgICAgIC8vIGNvbnNvbGUubG9nKGVycix0ZXh0dXJlKVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfSlcclxuICAgIH0sXHJcbiAgICAvL+esrOS4gOS4quWPguaVsOaKiuebruagh+W4pui/m+adpeWkhOeQhu+8jOesrOS6jOS4quWPguaVsOS4uuWQjeWtl+mVv+W6pu+8jOS4jeWQjOWcuuaZr+S4jeWQjOmcgOaxglxyXG4gICAgLy/lkI3lrZc055+t77yM5bCP5o6S6KGM77yM5ZCN5a2XNumVv++8jOWkp+aOkuihjFxyXG4gICAgZ2V0UmFua0RhdGEoZGF0YSx0YXJnZXQsbmFtZUxlbmd0aCl7XHJcbiAgICAgICAgdGFyZ2V0Lmxpc3REYXRhID0gZGF0YS5kYXRhLmxpc3Q7XHJcbiAgICAgICAgdGFyZ2V0LnNlbGZEYXRhID0gZGF0YS5kYXRhLmluZm87XHJcbiAgICAgICAgbGV0IHJhbmtEYXRhID0gW107XHJcbiAgICAgICAgbGV0IHNlbGYgPSBmYWxzZTtcclxuICAgICAgICAgY2MuZnguR2FtZVRvb2wuc2V0UGljKHRhcmdldC5zZWxmTm9kZS5nZXRDaGlsZEJ5TmFtZShcInBpY1wiKS5nZXRDaGlsZEJ5TmFtZShcImljb25cIiksdGFyZ2V0LnNlbGZEYXRhLnBpYyk7XHJcbiAgICAgICAgZm9yKGxldCBpPTA7aTw9dGFyZ2V0Lmxpc3REYXRhLmxlbmd0aC0xO2krKyl7XHJcbiAgICAgICAgICAgIHJhbmtEYXRhLnB1c2goe3Jhbms6KGkrMSksIG5hbWU6dGFyZ2V0Lmxpc3REYXRhW2ldLm5pY2tOYW1lLCB0b3RhbDp0YXJnZXQubGlzdERhdGFbaV0uc2NvcmUsdGltZTpudWxsLCBwaWM6dGFyZ2V0Lmxpc3REYXRhW2ldLnBpY30pO1xyXG4gICAgICAgICAgICBpZihjYy5meC5HYW1lQ29uZmlnLkdNX0lORk8udXNlcklkID09IHRhcmdldC5saXN0RGF0YVtpXS51c2VySWQpe1xyXG4gICAgICAgICAgICAgICAgc2VsZiA9IHRydWU7XHJcbiAgICAgICAgICAgICAgICB0YXJnZXQucmFua051bWJlciA9IGk7XHJcbiAgICAgICAgICAgICAgICB0YXJnZXQuc2VsZk5vZGUuZ2V0Q2hpbGRCeU5hbWUoXCJyYW5rTGFiXCIpLmdldENvbXBvbmVudChjYy5MYWJlbCkuc3RyaW5nID0oaSsxKSArIFwiXCI7IFxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGlmKGkgPT0gKHRhcmdldC5saXN0RGF0YS5sZW5ndGgtMSkgJiYgc2VsZiA9PSBmYWxzZSl7XHJcbiAgICAgICAgICAgICAgICB0YXJnZXQucmFua051bWJlciA9IGk7XHJcbiAgICAgICAgICAgICAgICB0YXJnZXQuc2VsZk5vZGUuZ2V0Q2hpbGRCeU5hbWUoXCJyYW5rTGFiXCIpLmdldENvbXBvbmVudChjYy5MYWJlbCkuc3RyaW5nID0gXCI5OStcIjsgXHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgdGFyZ2V0LnNlbGZEYXRhLm5pY2tOYW1lID0gY2MuZnguR2FtZVRvb2wuc3ViTmFtZSh0YXJnZXQuc2VsZkRhdGEubmlja05hbWUsbmFtZUxlbmd0aCk7XHJcbiAgICAgICAgdGFyZ2V0LnNlbGZOb2RlLmdldENoaWxkQnlOYW1lKFwibmFtZUxhYlwiKS5nZXRDb21wb25lbnQoY2MuTGFiZWwpLnN0cmluZyA9IHRhcmdldC5zZWxmRGF0YS5uaWNrTmFtZTtcclxuICAgICAgICB0YXJnZXQuc2VsZk5vZGUuZ2V0Q2hpbGRCeU5hbWUoXCJ0b3RhbExhYlwiKS5nZXRDb21wb25lbnQoY2MuTGFiZWwpLnN0cmluZyA9IHRhcmdldC5zZWxmRGF0YS5zY29yZTtcclxuICAgICAgICBsZXQgdGltZVRlbXAgPSBjYy5meC5HYW1lVG9vbC5nZXRUaW1lU2hlbk5vbmcodGFyZ2V0LnNlbGZEYXRhLnRvdGxlVGltZXMpO1xyXG4gICAgICAgIC8vIHRhcmdldC5zZWxmTm9kZS5nZXRDaGlsZEJ5TmFtZShcInRpbWVMYWJcIikuZ2V0Q29tcG9uZW50KGNjLkxhYmVsKS5zdHJpbmcgPSB0aW1lVGVtcCArIFwiXCI7XHJcbiAgICAgICAgc3dpdGNoKHRhcmdldC5zZWxmTm9kZS5nZXRDaGlsZEJ5TmFtZShcInJhbmtMYWJcIikuZ2V0Q29tcG9uZW50KGNjLkxhYmVsKS5zdHJpbmcpe1xyXG4gICAgICAgICAgICBjYXNlIFwiMVwiOlxyXG4gICAgICAgICAgICAgICAgdGFyZ2V0LnNlbGZOb2RlLmdldENoaWxkQnlOYW1lKFwicmFua1wiKS5nZXRDaGlsZEJ5TmFtZShcIm9uZVwiKS5hY3RpdmUgPSB0cnVlO1xyXG4gICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgIGNhc2UgXCIyXCI6XHJcbiAgICAgICAgICAgICAgICB0YXJnZXQuc2VsZk5vZGUuZ2V0Q2hpbGRCeU5hbWUoXCJyYW5rXCIpLmdldENoaWxkQnlOYW1lKFwidHdvXCIpLmFjdGl2ZSA9IHRydWU7XHJcbiAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgY2FzZSBcIjNcIjpcclxuICAgICAgICAgICAgICAgIHRhcmdldC5zZWxmTm9kZS5nZXRDaGlsZEJ5TmFtZShcInJhbmtcIikuZ2V0Q2hpbGRCeU5hbWUoXCJ0aHJlZVwiKS5hY3RpdmUgPSB0cnVlO1xyXG4gICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIC8vIOWkp+aOkuihjFxyXG4gICAgICAgIGlmKG5hbWVMZW5ndGggPT0gNil7XHJcbiAgICAgICAgICAgIHRhcmdldC5yYW5rTGlzdC5zZXREYXRhKHJhbmtEYXRhKTtcclxuICAgICAgICAgICAgdGFyZ2V0LnNlbGZOb2RlLm9wYWNpdHkgPSAyNTU7XHJcbiAgICAgICAgICAgIGlmKHRhcmdldC5zZWxmRGF0YS50b3RhbFN1bkNvdW50ID09IDApIHRhcmdldC5zZWxmTm9kZS5vcGFjaXR5ID0gMDtcclxuICAgICAgICB9XHJcbiAgICB9LFxyXG5cclxuICAgIGdldFNlZWRSYW5kb206IGZ1bmN0aW9uIChtaW4sIG1heCkgey8v5YyF5ZCrbWluIOS4jeWMheWQq21heFxyXG4gICAgICAgIC8vIGNvbnNvbGUubG9nKFwi6ZqP5py65pWwOlwiLGNjLmZ4LkdhbWVDb25maWcuR01fSU5GTy5jdXJyU2VlZCk7XHJcbiAgICAgICAgbWF4ID0gbWF4IHx8IDE7XHJcbiAgICAgICAgbWluID0gbWluIHx8IDA7XHJcbiAgICAgICAgY2MuZnguR2FtZUNvbmZpZy5HTV9JTkZPLmN1cnJTZWVkID0gKGNjLmZ4LkdhbWVDb25maWcuR01fSU5GTy5jdXJyU2VlZCAqIDkzMDEgKyA0OTI5NykgJSAyMzMyODA7XHJcbiAgICAgICAgbGV0IHJuZCA9IGNjLmZ4LkdhbWVDb25maWcuR01fSU5GTy5jdXJyU2VlZCAgLyAyMzMyODAuMDtcclxuICAgICAgICBsZXQgdG1wID0gbWluICsgcm5kICogKG1heCAtIG1pbik7XHJcbiAgICAgICAgcmV0dXJuIHBhcnNlSW50KHRtcCk7XHJcbiAgICB9LFxyXG4gICAgLy/ojrflj5blhbPljaHphY3nva7nmoTpgqPkuKrlhbPljaHmlbBcclxuICAgIGdldEN1c3RvbSh0eXBlKXtcclxuICAgICAgICBsZXQgY3VzdG9tID0gY2MuZnguU3RvcmFnZU1lc3NhZ2UuZ2V0U3RvcmFnZShjYy5meC5zdG9yYWdlVHlwZS5zdG9yYWdlVHlwZUN1c3RvbSk7XHJcbiAgICAgICAgaWYoY3VzdG9tID09IFwidW5kaWZlbmRcIiB8fCBjdXN0b209PW51bGwgfHwgY3VzdG9tID09IFwiXCIpe1xyXG4gICAgICAgICAgICB0aGlzLnNldEN1c3RvbSgpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNle1xyXG4gICAgICAgICAgICBjYy5meC5HYW1lQ29uZmlnLkdNX0lORk9fU0VUKFwiY3VzdG9tXCIsY3VzdG9tWzBdKTtcclxuICAgICAgICAgICAgaWYoY3VzdG9tWzBdICE9IDAgfHwgdHlwZSA9PSAgdHJ1ZSl7XHJcbiAgICAgICAgICAgICAgICBjdXN0b20uc2hpZnQoKTtcclxuICAgICAgICAgICAgICAgIGlmKGN1c3RvbS5sZW5ndGggPT0gMCl7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5zZXRDdXN0b20oKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIGVsc2UgY2MuZnguU3RvcmFnZU1lc3NhZ2Uuc2V0U3RvcmFnZShjYy5meC5zdG9yYWdlVHlwZS5zdG9yYWdlVHlwZUN1c3RvbSxjdXN0b20pO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgfSxcclxuICAgIC8v5pys5Zyw5rKh5pyJ5a2Y5YKo5Yiw6YWN572u77yM5oiW6ICF6YWN572u55So5a6M77yM6YeN5paw5Yib5bu66YWN572uXHJcbiAgICBzZXRDdXN0b20oKXtcclxuICAgICAgICBsZXQgYXJyYXlMZW5ndGggPSBjYy5meC5HYW1lQ29uZmlnLkxFVkVMX0lORk8ubGVuZ3RoO1xyXG4gICAgICAgIGxldCBhcnJheUxpc3QgPSBbXTtcclxuICAgICAgICBmb3IobGV0IGk9MTsgaTxhcnJheUxlbmd0aDtpKyspe1xyXG4gICAgICAgICAgICBhcnJheUxpc3QucHVzaChpKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgYXJyYXlMaXN0LnNvcnQoKCkgPT4gTWF0aC5yYW5kb20oKSAtIDAuNSk7XHJcbiAgICAgICAgYXJyYXlMaXN0LnVuc2hpZnQoMClcclxuICAgICAgICBjYy5meC5HYW1lQ29uZmlnLkdNX0lORk9fU0VUKFwiY3VzdG9tXCIsYXJyYXlMaXN0WzBdKTtcclxuICAgICAgICBjYy5meC5TdG9yYWdlTWVzc2FnZS5zZXRTdG9yYWdlKGNjLmZ4LnN0b3JhZ2VUeXBlLnN0b3JhZ2VUeXBlQ3VzdG9tLGFycmF5TGlzdCk7XHJcbiAgICB9LFxyXG5cclxuXHJcbiAgICBnZXRTZXRTY3JlZW5SZXNvbHV0aW9uRmxhZzogZnVuY3Rpb24gKCkge1xyXG4gICAgICAgIGxldCBzaXplID0gY2Mud2luU2l6ZTtcclxuICAgICAgICBsZXQgd2lkdGggPSBzaXplLndpZHRoO1xyXG4gICAgICAgIGxldCBoZWlnaHQgPSBzaXplLmhlaWdodDtcclxuICAgICAgICBpZiAoKGhlaWdodCAvIHdpZHRoKSA+ICgxNi4yIC8gOSkpIHJldHVybiBmYWxzZTtcclxuICAgICAgICByZXR1cm4gdHJ1ZTtcclxuICAgIH0sXHJcbiAgICAvL+WIpOaWreWFqOmdouWxj+mAgumFjVxyXG4gICAgc2V0Rml0OiBmdW5jdGlvbiAoY2FudmFzKSB7XHJcbiAgICAgICAgbGV0IGZsYWcgPSAgY2MuZnguR2FtZVRvb2wuZ2V0U2V0U2NyZWVuUmVzb2x1dGlvbkZsYWcoKTtcclxuICAgICAgICBpZiAoZmxhZykge1xyXG4gICAgICAgIFx0Ly8gY29uc29sZS5sb2coXCLkuI3mmK/lhajpnaLlsY9cIik7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICBcdC8vIGNvbnNvbGUubG9nKFwi5piv5YWo6Z2i5bGPXCIpO1xyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gZmxhZztcclxuICAgIH0sXHJcbiAgICAvL+iOt+WPlua4uOaIj+S/oeaBr1xyXG4gICAgZ2V0R2FtZUluZm86IGZ1bmN0aW9uKG5vZGUpe1xyXG4gICAgICAgIHZhciBqZyA9IGZhbHNlO1xyXG4gICAgICAgIHJldHVybiBqZztcclxuICAgIH0sXHJcbiAgICAvL+iuvue9rua4uOaIj+S/oeaBr1xyXG4gICAgc2V0R2FtZUluZm86IGZ1bmN0aW9uKHBkKXtcclxuICAgXHJcbiAgICB9LFxyXG5cclxuICAgIC8v5omT5a2X5py65pWI5p6cXHJcbiAgICB0eXBpbmdBbmkobGFiZWwsdGV4dCxjYix0YXJnZXQpe1xyXG4gICAgICAgIHZhciBzZWxmID0gdGFyZ2V0O1xyXG4gICAgICAgIHZhciBodG1sID0gJyc7XHJcbiAgICAgICAgdmFyIGFyciA9IHRleHQuc3BsaXQoJycpO1xyXG4gICAgICAgIHZhciBsZW4gPSBhcnIubGVuZ3RoO1xyXG4gICAgICAgIHZhciBzdGVwID0gMDtcclxuICAgICAgICBzZWxmLmZ1bmMgPSAoKT0+e1xyXG4gICAgICAgICAgICBodG1sICs9IGFycltzdGVwXTtcclxuICAgICAgICAgICAgbGFiZWwuc3RyaW5nID0gaHRtbDtcclxuICAgICAgICAgICAgaWYgKCsrc3RlcCA9PSBsZW4pIHtcclxuICAgICAgICAgICAgICAgIHNlbGYudW5zY2hlZHVsZShzZWxmLmZ1bmMpO1xyXG4gICAgICAgICAgICAgICAgY2IgJiYgY2IoKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICBzZWxmLnNjaGVkdWxlKHNlbGYuZnVuYywwLjEsIGNjLm1hY3JvLlJFUEVBVF9GT1JFVkVSLCAwKVxyXG4gICAgfSxcclxuXHJcbiAgICAvL+i+k+WFpeenkizov5Tlm57pnIDopoHlsZXnpLrml7bpl7TmoLzlvI9cclxuICAgIGdldFRpbWVNYXJnaW46KHNlY29uZCkgPT4ge1xyXG4gICAgICAgIGxldCB0b3RhbCA9IDA7XHJcbiAgICAgICAgdG90YWwgPSBzZWNvbmQ7XHJcbiAgICAgICAgbGV0IGhvdXIgPSAwO1xyXG4gICAgICAgIGhvdXIgPSBwYXJzZUludCgodG90YWwgLyAzNjAwKSArIFwiXCIpOy8v6K6h566X5pW05pWw5bCP5pe25pWwXHJcbiAgICAgICAgbGV0IGFmdGVySG91ciA9IHRvdGFsIC0gaG91ciAqIDYwICogNjA7Ly/lj5blvpfnrpflh7rlsI/ml7bmlbDlkI7liankvZnnmoTnp5LmlbBcclxuICAgICAgICBsZXQgbWluID0gcGFyc2VJbnQoKGFmdGVySG91ciAvIDYwKStcIlwiKTsvL+iuoeeul+aVtOaVsOWIhlxyXG4gICAgICAgIGxldCBtID0gXCJcIiArIG1pbjsgIFxyXG4gICAgICAgIGlmKG1pbiA8IDEwKSBtID0gXCIwXCIrbWluO1xyXG4gICAgICAgIGxldCBhZnRlck1pbiA9IHRvdGFsIC0gaG91ciAqIDYwICogNjAgLSBtaW4gKiA2MDsvL+WPluW+l+eul+WHuuWIhuWQjuWJqeS9meeahOenkuaVsFxyXG4gICAgICAgIGxldCBtaWFvID0gYWZ0ZXJNaW4gKyBcIlwiO1xyXG4gICAgICAgIGlmKGFmdGVyTWluIDwgMTApIG1pYW8gPSBcIjBcIiArIGFmdGVyTWluO1xyXG4gICAgICAgIHJldHVybiBtICsgJzonICsgbWlhb1xyXG4gICAgfSxcclxuXHJcbiAgICAvL+i+k+WFpeenkizov5Tlm57pnIDopoHlsZXnpLrml7bpl7TmoLzlvI9cclxuICAgIGdldFRpbWVTaGVuTm9uZzooc2Vjb25kKSA9PiB7XHJcbiAgICAgICAgc2Vjb25kID0gcGFyc2VJbnQoc2Vjb25kLzEwMDArXCJcIik7XHJcbiAgICAgICAgbGV0IHRvdGFsID0gMDtcclxuICAgICAgICB0b3RhbCA9IHNlY29uZDtcclxuICAgICAgICBsZXQgbWluID0gMDtcclxuICAgICAgICBpZih0b3RhbCA+IDYwKXtcclxuICAgICAgICAgICAgbWluID0gcGFyc2VJbnQoKHRvdGFsIC8gNjApK1wiXCIpOy8v6K6h566X5pW05pWw5YiGXHJcbiAgICAgICAgfVxyXG4gICAgICAgIGxldCBtID0gIG1pbiArIFwiJ1wiOyAgXHJcblxyXG4gICAgICAgIGxldCBhZnRlck1pbiA9IHRvdGFsIC0gbWluICogNjA7Ly/lj5blvpfnrpflh7rliIblkI7liankvZnnmoTnp5LmlbBcclxuICAgICAgICBsZXQgbWlhbyA9IGFmdGVyTWluICsgXCInJ1wiO1xyXG4gICAgICAgIHJldHVybiBtICsgbWlhb1xyXG4gICAgfSxcclxuXHJcbiAgICAvL+aJk+S5seaVsOe7hFxyXG4gICAgc2h1ZmZsZUFycmF5OiBmdW5jdGlvbiAoYXJyYXkpIHtcclxuICAgICAgICBmb3IgKGxldCBpID0gYXJyYXkubGVuZ3RoIC0gMTsgaSA+IDA7IGktLSkge1xyXG4gICAgICAgICAgICBjb25zdCBqID0gTWF0aC5mbG9vcihNYXRoLnJhbmRvbSgpICogKGkgKyAxKSk7XHJcbiAgICAgICAgICAgIFthcnJheVtpXSwgYXJyYXlbal1dID0gW2FycmF5W2pdLCBhcnJheVtpXV07XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiBhcnJheTtcclxuICAgIH0sXHJcblxyXG5cclxuICAgIC8v5aKe5Yqg5YWz5Y2h5pWwXHJcbiAgICBhZGRMZXZlbCh0aW1lMSx0aW1lMil7XHJcbiAgICAgICAgY2MuZnguR2FtZUNvbmZpZy5HTV9JTkZPLmxldmVsICs9IDE7XHJcbiAgICAgICAgaWYoY2MuZnguR2FtZUNvbmZpZy5HTV9JTkZPLmxldmVsID4gMTU2KXtcclxuICAgICAgICAgICAgY2MuZnguR2FtZUNvbmZpZy5HTV9JTkZPLmxldmVsID0gMTU2OyBcclxuICAgICAgICB9XHJcbiAgICAgICAgY29uc3QgdGltZXN0YW1wID0gRGF0ZS5ub3coKTtcclxuICAgICAgICBsZXQgbGV2ZWxJbmZvID0ge1xyXG4gICAgICAgICAgICBsZXZlbDpjYy5meC5HYW1lQ29uZmlnLkdNX0lORk8ubGV2ZWwsXHJcbiAgICAgICAgICAgIHRpbWVzdGFtcDp0aW1lc3RhbXAsXHJcbiAgICAgICAgfVxyXG4gICAgICAgIC8vIGNvbnNvbGUubG9nKFwiNTU1NTXlrZjlgqjlhbPljaHmlbDmja46XCIsbGV2ZWxJbmZvKTtcclxuICAgICAgICBjYy5meC5TdG9yYWdlTWVzc2FnZS5zZXRTdG9yYWdlKFwibGV2ZWxcIixsZXZlbEluZm8pO1xyXG4gICAgICAgIGlmKHRpbWUxICYmIHRpbWUyKXtcclxuICAgICAgICAgICAgbGV0IGRhdGEgPSB7XHJcbiAgICAgICAgICAgICAgICB0aW1lOnRpbWUxLFxyXG4gICAgICAgICAgICAgICAgYWRkX1RpbWU6dGltZTIsXHJcbiAgICAgICAgICAgICAgICByZXN1bHQ6XCJzdWNjZXNzXCJcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBjYy5meC5HYW1lVG9vbC5zaHVzaHVfVHJhY2soXCJmaW5pc2hfc3RhZ2VcIixkYXRhKTtcclxuICAgICAgICAgICAgTWluaUdhbWVTZGsuQVBJLnNodXNodV9TZXRTdXBlclByb3BlcnRpZXMoKTtcclxuICAgICAgICB9XHJcbiAgICAgIFxyXG4gICAgICAgIGNjLmZ4LkdhbWVUb29sLnNldFVzZXJMZXZlbCgoZGF0YSk9PntcclxuICAgICAgICAgICAgLy8gY29uc29sZS5sb2coXCLlrZjlgqjnu5Pmnpw6XCIsZGF0YSk7XHJcbiAgICAgICAgICAgIC8vIGNvbnNvbGUubG9nKFwi5LiK5LygXCIsZGF0YSk7XHJcbiAgICAgICAgfSlcclxuICAgIH0sXHJcblxyXG4gICAgLy/mlLnlj5jph5HluIHkv6Hmga9cclxuICAgIGNoYW5nZUNvaW4oY29pbil7XHJcbiAgICAgICAgY29uc29sZS5sb2coXCJjaGFuZ2VDb2luXCIsY29pbik7XHJcbiAgICAgICAgaWYoY29pbiA9PSB1bmRlZmluZWQpIHJldHVybjtcclxuICAgICAgICBpZihjb2luIDwgMCAmJiBjYy5meC5HYW1lQ29uZmlnLkdNX0lORk8uY29pbiA8IC1jb2luKXtcclxuICAgICAgICAgICAgLy8gY29uc29sZS5sb2coXCLph5HluIHkuI3otrNcIixjYy5meC5HYW1lQ29uZmlnLkdNX0lORk8uY29pbiwtY29pbik7XHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcbiAgICAgICAgY2MuZnguR2FtZUNvbmZpZy5HTV9JTkZPLmNvaW4gKz0gY29pbjtcclxuXHJcbiAgICAgICAgaWYoY2MuZnguR2FtZUNvbmZpZy5HTV9JTkZPLmNvaW4gPCAwKXtcclxuICAgICAgICAgICAgY2MuZnguR2FtZUNvbmZpZy5HTV9JTkZPLmNvaW4gPSAwO1xyXG4gICAgICAgIH1cclxuICAgICAgICAvLyBjb25zb2xlLmxvZyhcIuaUueWPmOeahOmHkeW4gTpcIixjb2luKTtcclxuICAgICAgICAvLyBjb25zb2xlLmxvZyhcIuiHqui6q+mHkeW4geS/oeaBrzpcIixjYy5meC5HYW1lQ29uZmlnLkdNX0lORk8uY29pbik7XHJcbiAgICAgICAgY29uc3QgdGltZXN0YW1wID0gRGF0ZS5ub3coKTtcclxuICAgICAgICBsZXQgY29pbkluZm8gPSB7XHJcbiAgICAgICAgICAgIGNvaW46Y2MuZnguR2FtZUNvbmZpZy5HTV9JTkZPLmNvaW4sXHJcbiAgICAgICAgICAgIHRpbWVzdGFtcDp0aW1lc3RhbXAsXHJcbiAgICAgICAgfVxyXG4gICAgICAgIE1pbmlHYW1lU2RrLkFQSS5zaHVzaHVfU2V0U3VwZXJQcm9wZXJ0aWVzKCk7XHJcbiAgICAgICAgY2MuZnguU3RvcmFnZU1lc3NhZ2Uuc2V0U3RvcmFnZShcImNvaW5cIixjb2luSW5mbyk7XHJcbiAgICAgICAgLy8gY29uc29sZS5sb2coXCLlrZjlgqjph5HluIHmlbDmja46XCIsY2MuZnguR2FtZUNvbmZpZy5HTV9JTkZPLmNvaW4sY29pbkluZm8pO1xyXG4gICAgICAgIGNjLmZ4LkdhbWVUb29sLnNldFVzZXJDb2luKChkYXRhKT0+e1xyXG4gICAgICAgICAgICAvLyBjb25zb2xlLmxvZyhcIuS4iuS8oFwiLGRhdGEpO1xyXG4gICAgICAgIH0pXHJcbiAgICB9LFxyXG5cclxuICAgIC8v6I635Y+W55So5oi36YeR5biB5pWw6YePXHJcbiAgICBnZXRVc2VyQ29pbihjYWxsYmFjazogRnVuY3Rpb24pIHtcclxuICAgICAgICBpZiAodHlwZW9mIHd4IT09ICd1bmRlZmluZWQnICYmIHd4IT09IG51bGwpIHtcclxuICAgICAgICAgICAgICAgLy9AdHMtaWdub3JlXHJcbiAgICAgICAgICAgIHd4LmNsb3VkLmNhbGxGdW5jdGlvbih7XHJcbiAgICAgICAgICAgIG5hbWU6ICd1c2VyQ29pbicsXHJcbiAgICAgICAgICAgIGRhdGE6IHtcclxuICAgICAgICAgICAgICAgIGFjdGlvbjogJ3JlYWQnXHJcbiAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgIHN1Y2Nlc3M6IHJlcyA9PiB7XHJcbiAgICAgICAgICAgICAgICAvLyBjb25zb2xlLmxvZygn6K+75Y+W55So5oi36YeR5biB5pWw5o2u5oiQ5YqfJywgcmVzLnJlc3VsdClcclxuICAgICAgICAgICAgICAgIGlmKGNhbGxiYWNrKVxyXG4gICAgICAgICAgICAgICAgICAgIGNhbGxiYWNrKHJlcyk7IFxyXG5cclxuICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgZmFpbDogZXJyID0+IHtcclxuICAgICAgICAgICAgICAgICAgIGNhbGxiYWNrKGVycik7IFxyXG5cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9KVxyXG4gICAgICAgIH1cclxuICAgIH0sXHJcblxyXG4gICAgLy/mlLnlj5jnlKjmiLfph5HluIFcclxuICAgIHNldFVzZXJDb2luKGNhbGxiYWNrKXtcclxuICAgICAgICBpZiAodHlwZW9mIHd4IT09ICd1bmRlZmluZWQnICYmIHd4IT09IG51bGwpIHtcclxuICAgICAgICAgICAgaWYoY2MuZnguR2FtZUNvbmZpZy5HTV9JTkZPLmNvaW4gPD0gMCB8fCBjYy5meC5HYW1lQ29uZmlnLkdNX0lORk8uY29pbiA9PSB1bmRlZmluZWQpe1xyXG4gICAgICAgICAgICAgICAgY29uc29sZS5sb2coXCLph5HluIHkuIrkvKDlpLHotKVcIixjYy5meC5HYW1lQ29uZmlnLkdNX0lORk8uY29pbik7XHJcbiAgICAgICAgICAgICAgICAvLyBNaW5pR2FtZVNkay5BUEkuc2hvd1RvYXN0KGNjLmZ4LkdhbWVDb25maWcuR01fSU5GTy5jb2luKTtcclxuICAgICAgICAgICAgICAgIGNjLmZ4LkdhbWVDb25maWcuR01fSU5GTy5jb2luID0gMDtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBjb25zb2xlLmxvZyhcIuWNs+WwhuS4iuS8oOeahOmHkeW4geaVsOmHjzpcIixjYy5meC5HYW1lQ29uZmlnLkdNX0lORk8uY29pbik7XHJcbiAgICAgICAgICAgIC8vQHRzLWlnbm9yZVxyXG4gICAgICAgICAgICB3eC5jbG91ZC5jYWxsRnVuY3Rpb24oe1xyXG4gICAgICAgICAgICBuYW1lOiAndXNlckNvaW4nLFxyXG4gICAgICAgICAgICBkYXRhOiB7XHJcbiAgICAgICAgICAgICAgICBhY3Rpb246ICdzYXZlJyxcclxuICAgICAgICAgICAgICAgIGNvaW5BbW91bnQ6IGNjLmZ4LkdhbWVDb25maWcuR01fSU5GTy5jb2luXHJcbiAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgIHN1Y2Nlc3M6IHJlcyA9PiB7XHJcbiAgICAgICAgICAgICAgICAvLyBjb25zb2xlLmxvZygn5LqR5Ye95pWw6L+U5Zue57uT5p6cOicsIHJlcyk7XHJcbiAgICAgICAgICAgICAgICBpZihyZXMucmVzdWx0LmNvZGUgPT0gMjAwKXtcclxuICAgICAgICAgICAgICAgICAgICAvLyBjb25zb2xlLmxvZygn5a2Y5YKo6YeR5biB5pWw5o2u5oiQ5YqfJyxjYy5meC5HYW1lQ29uZmlnLkdNX0lORk8uY29pbik7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBpZihjYWxsYmFjayl7XHJcbiAgICAgICAgICAgICAgICAgICAgY2FsbGJhY2socmVzKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICBmYWlsOiBlcnIgPT4ge1xyXG4gICAgICAgICAgICAgICAgLy8gY29uc29sZS5sb2coJ+WtmOWCqOmHkeW4geaVsOaNruWksei0pScpXHJcbiAgICAgICAgICAgICAgICBpZihjYWxsYmFjayl7XHJcbiAgICAgICAgICAgICAgICAgICAgY2FsbGJhY2soZXJyKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoJ+WtmOWCqOeUqOaIt+aVsOaNruWksei0pScsIGVycilcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9KVxyXG4gICAgICAgIH1cclxuICAgIH0sXHJcblxyXG5cclxuICAgIC8v6I635Y+W55So5oi35YWz5Y2h5pWwXHJcbiAgICBnZXRVc2VyTGV2ZWwoY2FsbGJhY2s6IEZ1bmN0aW9uKSB7XHJcbiAgICAgICAgaWYgKHR5cGVvZiB3eCE9PSAndW5kZWZpbmVkJyAmJiB3eCE9PSBudWxsKSB7XHJcbiAgICAgICAgICAgICAgIC8vQHRzLWlnbm9yZVxyXG4gICAgICAgICAgICB3eC5jbG91ZC5jYWxsRnVuY3Rpb24oe1xyXG4gICAgICAgICAgICBuYW1lOiAndXNlckxldmVsJyxcclxuICAgICAgICAgICAgZGF0YToge1xyXG4gICAgICAgICAgICAgICAgYWN0aW9uOiAncmVhZCdcclxuICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgc3VjY2VzczogcmVzID0+IHtcclxuICAgICAgICAgICAgICAgIGlmKGNhbGxiYWNrKVxyXG4gICAgICAgICAgICAgICAgICAgIGNhbGxiYWNrKHJlcyk7IFxyXG5cclxuICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgZmFpbDogZXJyID0+IHtcclxuICAgICAgICAgICAgICAgICAgIGNhbGxiYWNrKGVycik7IFxyXG5cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9KVxyXG4gICAgICAgIH1cclxuICAgIH0sXHJcblxyXG4gICAgLy/ov5vmuLjmiI/lpITnkIYg5L2T5Yqb5YC85oOF5Ya1XHJcbiAgICBnZXRIZWFsdGgoY2FsbGJhY2s6IEZ1bmN0aW9uKXtcclxuICAgICAgICBsZXQgaGVhbHRoID0gY2MuZnguU3RvcmFnZU1lc3NhZ2UuZ2V0U3RvcmFnZShcImhlYWx0aFwiKTtcclxuICAgICAgICBjb25zdCB0aW1lc3RhbXAgPSBEYXRlLm5vdygpO1xyXG4gICAgICAgIGNjLmZ4LkdhbWVDb25maWcuR01fSU5GTy5ocCA9IDU7XHJcbiAgICAgICAgLy/msqHmnInlrZjlgqjov4fkvZPlipvlgLxcclxuICAgICAgICBpZihoZWFsdGggPT0gbnVsbCB8fCBoZWFsdGggPT0gdW5kZWZpbmVkIHx8IGhlYWx0aCA9PSBcIlwiKXtcclxuICAgICAgICAgICAgY29uc29sZS5sb2coXCLmsqHlrZjlgqjov4fkvZPlipvlgLzvvIzliJ3ov5tcIik7XHJcbiAgICAgICAgICAgIGNjLmZ4LkdhbWVDb25maWcuR01fSU5GTy5ocCA9IDU7XHJcbiAgICAgICAgICAgIGNjLmZ4LkdhbWVUb29sLmdldFVzZXJIZWFsdGgoKGRhdGEpPT57XHJcbiAgICAgICAgICAgICAgICBjb25zb2xlLmxvZyhcIuS9k+WKm+aOpeWPo+i/lOWbnue7k+aenFwiLGRhdGEpO1xyXG4gICAgICAgICAgICAgICAgaWYoZGF0YS5yZXN1bHQuY29kZSA9PSAyMDApe1xyXG4gICAgICAgICAgICAgICAgICAgIGNjLmZ4LkdhbWVDb25maWcuR01fSU5GTy5ocCA9IGRhdGEucmVzdWx0LmRhdGE7XHJcbiAgICAgICAgICAgICAgICAgICAgY2MuZnguR2FtZUNvbmZpZy5HTV9JTkZPLm1pbl9UaW1lID0gZGF0YS5yZXN1bHQudGltZXN0YW1wO1xyXG4gICAgICAgICAgICAgICAgICAgIGxldCBoZWFsdGhJbmZvID0ge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBcImhlYWx0aFwiOmNjLmZ4LkdhbWVDb25maWcuR01fSU5GTy5ocCxcclxuICAgICAgICAgICAgICAgICAgICAgICAgXCJ0aW1lc3RhbXBcIjpkYXRhLnJlc3VsdC50aW1lc3RhbXBcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgTWluaUdhbWVTZGsuQVBJLnNodXNodV9TZXRTdXBlclByb3BlcnRpZXMoKTtcclxuICAgICAgICAgICAgICAgICAgICBjYy5meC5TdG9yYWdlTWVzc2FnZS5zZXRTdG9yYWdlKFwiaGVhbHRoXCIsaGVhbHRoSW5mbyk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBlbHNlIGlmKGRhdGEucmVzdWx0LmNvZGUgPT0gNDA0ICYmIGRhdGEucmVzdWx0Lm1lc3NhZ2UgPT0gXCLmnKrmib7liLDkvZPlipvmlbDmja5cIil7XHJcbiAgICAgICAgICAgICAgICAgICAgY2MuZnguR2FtZVRvb2wuc2V0VXNlckhlYWx0aCgwLCgpPT57XHJcbiAgICAgICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBpZihjYWxsYmFjaykgY2FsbGJhY2soKTtcclxuICAgICAgICAgICAgfSlcclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZXtcclxuICAgICAgICAgICAgY29uc29sZS5sb2coXCLmnInlrZjlgqjov4fkvZPlipvlgLw6XCIsaGVhbHRoKTtcclxuICAgICAgICAgICAgY2MuZnguR2FtZUNvbmZpZy5HTV9JTkZPLmhwID0gaGVhbHRoLmhlYWx0aDtcclxuICAgICAgICAgICAgaWYoY2FsbGJhY2spe1xyXG4gICAgICAgICAgICAgICAgY29uc29sZS5sb2coXCLkvZPlipvlgLzor7vlj5blrozmr5VcIik7XHJcbiAgICAgICAgICAgICAgICBjYWxsYmFjaygpO1xyXG4gICAgICAgICAgICB9IFxyXG4gICAgICAgICAgICBpZihoZWFsdGguaGVhbHRoIDwgMCl7XHJcbiAgICAgICAgICAgICAgICBjb25zb2xlLmxvZyhcIuS9k+WKm+WAvOW8guW4uO+8jOW9kumbtlwiKTtcclxuICAgICAgICAgICAgICAgIGNjLmZ4LkdhbWVDb25maWcuR01fSU5GTy5ocCA9IDA7XHJcbiAgICAgICAgICAgICAgICBjYy5meC5HYW1lVG9vbC5zZXRVc2VySGVhbHRoKDAsKCk9PntcclxuICAgICAgICAgICAgICAgICAgICBpZihjYWxsYmFjaykgY2FsbGJhY2soKTtcclxuICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGVsc2UgaWYoaGVhbHRoLmhlYWx0aCA8IDUpe1xyXG4gICAgICAgICAgICAgICAgLy8gMzDliIbpkp/nmoTmr6vnp5LmlbBcclxuICAgICAgICAgICAgICAgIGNvbnN0IHRoaXJ0eU1pbnV0ZXMgPSAzMCAqIDYwICogMTAwMDsgXHJcbiAgICAgICAgICAgICAgICBjb25zdCBlbGFwc2VkVGltZSA9IHRpbWVzdGFtcCAtIGhlYWx0aC50aW1lc3RhbXA7XHJcbiAgICAgICAgICAgICAgICAvLyDorqHnrpfmgaLlpI3nmoTkvZPlipvlgLxcclxuICAgICAgICAgICAgICAgIGNvbnN0IHJlY292ZXJlZEhlYWx0aCA9IE1hdGgubWluKDUgLSBoZWFsdGguaGVhbHRoLCBNYXRoLmZsb29yKGVsYXBzZWRUaW1lIC8gdGhpcnR5TWludXRlcykpOyBcclxuICAgICAgICAgICAgICAgIGlmIChyZWNvdmVyZWRIZWFsdGggPiAwKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgaGVhbHRoLmhlYWx0aCArPSByZWNvdmVyZWRIZWFsdGg7XHJcbiAgICAgICAgICAgICAgICAgICAgY2MuZnguR2FtZVRvb2wuc2V0VXNlckhlYWx0aChyZWNvdmVyZWRIZWFsdGgsKCk9PntcclxuICAgICAgICAgICAgICAgICAgICAgICAgIGlmKGNhbGxiYWNrKSBjYWxsYmFjaygpO1xyXG4gICAgICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKGDkvZPlipvlgLzmgaLlpI0gJHtyZWNvdmVyZWRIZWFsdGh9IOeCue+8jOW9k+WJjeS9k+WKm+WAvDogJHtjYy5meC5HYW1lQ29uZmlnLkdNX0lORk8uaHB9YCk7XHJcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICAgIC8vIOiuoeeul+i3neemu+S4i+S4gOasoeaBouWkjeeahOWJqeS9meaXtumXtFxyXG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHJlbWFpbmluZ1RpbWUgPSBNYXRoLmNlaWwoKHRoaXJ0eU1pbnV0ZXMgLSAoZWxhcHNlZFRpbWUgJSB0aGlydHlNaW51dGVzKSkgLyAxMDAwKTtcclxuICAgICAgICAgICAgICAgICAgICBjb25zb2xlLmxvZyhg5L2T5Yqb5YC85pyq5ruh77yM5b6F5oGi5aSN77yM6Led56a75LiL5LiA5qyh5oGi5aSN6L+Y5YmpICR7cmVtYWluaW5nVGltZX0g56eSYCk7XHJcbiAgICAgICAgICAgICAgICAgICAgY2MuZnguR2FtZUNvbmZpZy5HTV9JTkZPLm1pbl9UaW1lID0gcmVtYWluaW5nVGltZTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgIH0sXHJcblxyXG4gICAgLy/ojrflj5bnlKjmiLfkvZPlipvlgLxcclxuICAgIGdldFVzZXJIZWFsdGgoY2FsbGJhY2s6IEZ1bmN0aW9uKSB7XHJcbiAgICAgICAgaWYgKHR5cGVvZiB3eCE9PSAndW5kZWZpbmVkJyAmJiB3eCE9PSBudWxsKSB7XHJcbiAgICAgICAgICAgIGNvbnNvbGUubG9nKFwi5Y2z5bCG6L+b5YWl5L2T5Yqb6I635Y+W5o6l5Y+jXCIpO1xyXG4gICAgICAgICAgICAgICAvL0B0cy1pZ25vcmVcclxuICAgICAgICAgICAgd3guY2xvdWQuY2FsbEZ1bmN0aW9uKHtcclxuICAgICAgICAgICAgbmFtZTogJ3VzZXJIZWFsdGgnLFxyXG4gICAgICAgICAgICBkYXRhOiB7XHJcbiAgICAgICAgICAgICAgICBhY3Rpb246ICdyZWFkJ1xyXG4gICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICBzdWNjZXNzOiByZXMgPT4ge1xyXG4gICAgICAgICAgICAgICAgLy8gY29uc29sZS5sb2coXCLkvZPlipvojrflj5bmiJDlip9cIixyZXMpO1xyXG4gICAgICAgICAgICAgICAgaWYoY2FsbGJhY2spXHJcbiAgICAgICAgICAgICAgICAgICAgY2FsbGJhY2socmVzKTsgXHJcbiAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgIGZhaWw6IGVyciA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgLy8gY29uc29sZS5sb2coXCLkvZPlipvojrflj5blpLHotKVcIixlcnIpO1xyXG4gICAgICAgICAgICAgICAgICAgY2FsbGJhY2soZXJyKTsgXHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfSlcclxuICAgICAgICB9XHJcbiAgICB9LFxyXG5cclxuICAgIC8v6K6+572u55So5oi35L2T5Yqb5YC8ICDmnInlj6/og73liqDvvIzmnInlj6/og73lrprml7blmajlh49cclxuICAgIHNldFVzZXJIZWFsdGgoaGVhbHRoLGNhbGxiYWNrKXtcclxuICAgICAgICBjYy5meC5HYW1lQ29uZmlnLkdNX0lORk8uaHAgKz0gaGVhbHRoO1xyXG4gICAgICAgIC8vIGlmKGhlYWx0aCA8IDApIHtcclxuICAgICAgICAvLyB9XHJcbiAgICAgICAgLy8gZWxzZSBNaW5pR2FtZVNkay5BUEkuc2hvd1RvYXN0KFwi5L2T5Yqb5YC85oGi5aSNXCIpO1xyXG4gICAgICAgIGNvbnN0IHRpbWVzdGFtcCA9IERhdGUubm93KCk7XHJcbiAgICAgICAgbGV0IGhlYWx0aEluZm8gPXt9XHJcbiBcclxuICAgICAgICAvL+WmguaenOa2iOiAl+S5i+WJjeS4jeaYr+a7oeS9k+WKm++8jOivtOaYjuW3sue7j+WcqOaBouWkjeacn++8jOW5tuS4jeeUqOS/ruaUueaXtumXtFxyXG4gICAgICAgIGlmKGhlYWx0aCA8IDAgJiYgY2MuZnguR2FtZUNvbmZpZy5HTV9JTkZPLmhwICE9IDQpIHtcclxuICAgICAgICAgICAgbGV0IG9sZFRpbWUgPSBjYy5meC5TdG9yYWdlTWVzc2FnZS5nZXRTdG9yYWdlKFwiaGVhbHRoXCIpLnRpbWVzdGFtcDtcclxuICAgICAgICAgICAgaGVhbHRoSW5mbyA9IHtcclxuICAgICAgICAgICAgICAgIFwiaGVhbHRoXCI6Y2MuZnguR2FtZUNvbmZpZy5HTV9JTkZPLmhwLFxyXG4gICAgICAgICAgICAgICAgXCJ0aW1lc3RhbXBcIjpvbGRUaW1lXHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZXtcclxuICAgICAgICAgICAgaGVhbHRoSW5mbyA9IHtcclxuICAgICAgICAgICAgICAgIFwiaGVhbHRoXCI6Y2MuZnguR2FtZUNvbmZpZy5HTV9JTkZPLmhwLFxyXG4gICAgICAgICAgICAgICAgXCJ0aW1lc3RhbXBcIjp0aW1lc3RhbXBcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICBjYy5meC5TdG9yYWdlTWVzc2FnZS5zZXRTdG9yYWdlKFwiaGVhbHRoXCIsaGVhbHRoSW5mbyk7XHJcbiAgICAgICAgTWluaUdhbWVTZGsuQVBJLnNodXNodV9TZXRTdXBlclByb3BlcnRpZXMoKTtcclxuICAgICAgICBpZiAodHlwZW9mIHd4IT09ICd1bmRlZmluZWQnICYmIHd4IT09IG51bGwpIHtcclxuICAgICAgICAgICAgLy9AdHMtaWdub3JlXHJcbiAgICAgICAgICAgIHd4LmNsb3VkLmNhbGxGdW5jdGlvbih7XHJcbiAgICAgICAgICAgICAgICBuYW1lOiAndXNlckhlYWx0aCcsXHJcbiAgICAgICAgICAgICAgICBkYXRhOiB7XHJcbiAgICAgICAgICAgICAgICAgICAgYWN0aW9uOiAnc2F2ZScsXHJcbiAgICAgICAgICAgICAgICAgICAgaGVhbHRoQW1vdW50OiBjYy5meC5HYW1lQ29uZmlnLkdNX0lORk8uaHAsXHJcbiAgICAgICAgICAgICAgICAgICAgdGltZXN0YW1wOnRpbWVzdGFtcFxyXG4gICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICAgIHN1Y2Nlc3M6IHJlcyA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYoY2FsbGJhY2spe1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBjYWxsYmFjayhyZXMpO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICBcclxuICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgICBmYWlsOiBlcnIgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgIGlmKGNhbGxiYWNrKXtcclxuICAgICAgICAgICAgICAgICAgICAgICAgY2FsbGJhY2soZXJyKTtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgLy8gY29uc29sZS5lcnJvcign5a2Y5YKo5YWz5Y2h5pWw5o2u5aSx6LSlJywgZXJyKVxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9KVxyXG4gICAgICAgIH1cclxuICAgIH0sXHJcblxyXG4gICAgLy/otK3kubDooYzkuLpcclxuICAgIGJ1eVJldmlldyhjb2luLGNhbGxiYWNrOiBGdW5jdGlvbil7XHJcbiAgICAgICAgaWYgKHR5cGVvZiB3eCE9PSAndW5kZWZpbmVkJyAmJiB3eCE9PSBudWxsKSB7XHJcbiAgICAgICAgICAgIC8vIGNvbnNvbGUubG9nKFwi5a6e6ZmF5Y2z5bCG5raI6ICX6YeR5biBOlwiLGNvaW4pO1xyXG4gICAgICAgICAgICAvLyB0aGlzLmNoYW5nZUNvaW4oY29pbik7XHJcbiAgICAgICAgICAgIGNhbGxiYWNrKCk7XHJcbiAgICAgICAgfVxyXG4gICAgfSxcclxuXHJcbiAgICAvL+abtOaUueeUqOaIt+mBk+WFt+aVsFxyXG4gICAgYnV5UHJvcChwcm9waWQsY2FsbGJhY2s6IEZ1bmN0aW9uKSB7XHJcbiAgICAgICAgaWYgKHR5cGVvZiB3eCE9PSAndW5kZWZpbmVkJyAmJiB3eCE9PSBudWxsKSB7XHJcbiAgICAgICAgICAgIGNjLmZ4LkdhbWVUb29sLmNoYW5nZUNvaW4oLTE1MDApO1xyXG4gICAgICAgICAgICBjYy5meC5HYW1lVG9vbC5zZXRVc2VyUHJvcChwcm9waWQsMywoZGF0YSk9PntcclxuICAgICAgICAgICAgfSlcclxuICAgICAgICAgICAgY29uc3QgZGF0YSA9IHtcclxuICAgICAgICAgICAgICAgIGlkOiAocHJvcGlkICsgXCJcIiksXHJcbiAgICAgICAgICAgICAgICBudW06M1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGNjLmZ4LkdhbWVUb29sLnNodXNodV9UcmFjayhcInJlc291cmNlX2dldFwiLGRhdGEpO1xyXG4gICAgICAgICAgICBsZXQgX2lkID0gXCJcIjtcclxuICAgICAgICAgICAgaWYocHJvcGlkID09IDIwMDEpIF9pZCA9IFwiZnJlZXplX2luX2dhbWVcIjtcclxuICAgICAgICAgICAgZWxzZSBpZihwcm9waWQgPT0gMjAwMikgX2lkID0gXCJoYW1tZXJfaW5fZ2FtZVwiO1xyXG4gICAgICAgICAgICBlbHNlIGlmKHByb3BpZCA9PSAyMDAzKSBfaWQgPSBcIndhbmRfaW5fZ2FtZVwiO1xyXG4gICAgICAgICAgICBcclxuICAgICAgICAgICAgY29uc3QgYnV5RGF0YSA9IHtcclxuICAgICAgICAgICAgICAgIGl0ZW1faWQ6X2lkLFxyXG4gICAgICAgICAgICAgICAgaXRlbV9udW06MSxcclxuICAgICAgICAgICAgICAgIGl0ZW1fcHJpY2U6MTUwMCxcclxuICAgICAgICAgICAgICAgIGNvc3RfdHlwZTpcImdvbGRcIlxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGNvbnNvbGUubG9nKFwiX19fX19fX19fX19f5Y2z5bCG5LiK5LygU2hvcF9idXlcIixidXlEYXRhKTtcclxuICAgICAgICAgICAgY2MuZnguR2FtZVRvb2wuc2h1c2h1X1RyYWNrKFwic2hvcF9idXlcIixidXlEYXRhKTtcclxuICAgICAgICAgICAgY2FsbGJhY2soKTtcclxuICAgICAgICB9XHJcbiAgICB9LFxyXG5cclxuXHJcbiAgICAvL+aUueWPmOeUqOaIt+WFs+WNoVxyXG4gICAgc2V0VXNlckxldmVsKGNhbGxiYWNrKXtcclxuICAgICAgICBpZiAodHlwZW9mIHd4IT09ICd1bmRlZmluZWQnICYmIHd4IT09IG51bGwpIHtcclxuICAgICAgICAgICAgLy8gaWYoY2MuZnguR2FtZUNvbmZpZy5HTV9JTkZPLmxldmVsIDw9IDAgfHwgY2MuZnguR2FtZUNvbmZpZy5HTV9JTkZPLmxldmVsID09IHVuZGVmaW5lZCl7XHJcbiAgICAgICAgICAgIC8vICAgICBjb25zb2xlLmxvZyhcIuetiee6p+mHjee9ruS4ujBcIik7XHJcbiAgICAgICAgICAgIC8vICAgICBjYy5meC5HYW1lQ29uZmlnLkdNX0lORk8ubGV2ZWwgPSAwO1xyXG4gICAgICAgICAgICAvLyB9XHJcbiAgICAgICAgICAgIC8vIGNvbnNvbGUubG9nKFwi5Y2z5bCG5LiK5Lyg55qE5YWz5Y2h5pWwOlwiLGNjLmZ4LkdhbWVDb25maWcuR01fSU5GTy5sZXZlbCk7XHJcbiAgICAgICAgICAgIC8vQHRzLWlnbm9yZVxyXG4gICAgICAgICAgICB3eC5jbG91ZC5jYWxsRnVuY3Rpb24oe1xyXG4gICAgICAgICAgICBuYW1lOiAndXNlckxldmVsJyxcclxuICAgICAgICAgICAgZGF0YToge1xyXG4gICAgICAgICAgICAgICAgYWN0aW9uOiAnc2F2ZScsXHJcbiAgICAgICAgICAgICAgICBsZXZlbEFtb3VudDogY2MuZnguR2FtZUNvbmZpZy5HTV9JTkZPLmxldmVsXHJcbiAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgIHN1Y2Nlc3M6IHJlcyA9PiB7XHJcbiAgICAgICAgICAgICAgICAvLyBjb25zb2xlLmxvZygn5LqR5Ye95pWw6L+U5Zue57uT5p6cOicsIHJlcyk7XHJcbiAgICAgICAgICAgICAgICAvLyBjb25zb2xlLmxvZygn5a2Y5YKo5YWz5Y2h5pWw5o2u5oiQ5YqfJyxjYy5meC5HYW1lQ29uZmlnLkdNX0lORk8ubGV2ZWwpO1xyXG4gICAgICAgICAgICAgICAgaWYoY2FsbGJhY2spe1xyXG4gICAgICAgICAgICAgICAgICAgIGNhbGxiYWNrKHJlcyk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgXHJcbiAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgIGZhaWw6IGVyciA9PiB7XHJcbiAgICAgICAgICAgICAgICAvLyBjb25zb2xlLmxvZygn5a2Y5YKo5YWz5Y2h5pWw5o2u5aSx6LSlJylcclxuICAgICAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICAgICAgICAgIGlmKGNhbGxiYWNrKXtcclxuICAgICAgICAgICAgICAgICAgICBjYWxsYmFjayhlcnIpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgY29uc29sZS5lcnJvcign5a2Y5YKo5YWz5Y2h5pWw5o2u5aSx6LSlJywgZXJyKVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH0pXHJcbiAgICAgICAgfVxyXG4gICAgfSxcclxuXHJcbiAgICAgICAgLy/ojrflj5bnlKjmiLflhbPljaHmlbBcclxuICAgIGdldFVzZXJQcm9wKGNhbGxiYWNrOiBGdW5jdGlvbikge1xyXG4gICAgICAgIGlmICh0eXBlb2Ygd3ghPT0gJ3VuZGVmaW5lZCcgJiYgd3ghPT0gbnVsbCkge1xyXG4gICAgICAgICAgICAgICAvL0B0cy1pZ25vcmVcclxuICAgICAgICAgICAgd3guY2xvdWQuY2FsbEZ1bmN0aW9uKHtcclxuICAgICAgICAgICAgbmFtZTogJ3VzZXJQcm9wJyxcclxuICAgICAgICAgICAgZGF0YToge1xyXG4gICAgICAgICAgICAgICAgYWN0aW9uOiAncmVhZCdcclxuICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgc3VjY2VzczogcmVzID0+IHtcclxuICAgICAgICAgICAgICAgIC8vIGNvbnNvbGUubG9nKCfor7vlj5bnlKjmiLfpgZPlhbfmlbDmja7miJDlip8nLCByZXMucmVzdWx0KVxyXG4gICAgICAgICAgICAgICAgaWYocmVzLnJlc3VsdC5kYXRhKXtcclxuICAgICAgICAgICAgICAgICAgICAvLyBjYy5meC5HYW1lQ29uZmlnLkdNX0lORk8uZnJlZXplQW1vdW50ID0gcmVzLnJlc3VsdC5kYXRhLmZyZWV6ZTtcclxuICAgICAgICAgICAgICAgICAgICAvLyBjYy5meC5HYW1lQ29uZmlnLkdNX0lORk8uaGFtbWVyQW1vdW50ID0gcmVzLnJlc3VsdC5kYXRhLmhhbW1lcjtcclxuICAgICAgICAgICAgICAgICAgICAvLyBjYy5meC5HYW1lQ29uZmlnLkdNX0lORk8ubWFnaWNBbW91bnQgPSByZXMucmVzdWx0LmRhdGEubWFnaWNfd2FuZDtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIGlmKGNhbGxiYWNrKVxyXG4gICAgICAgICAgICAgICAgICAgIGNhbGxiYWNrKHJlcyk7IFxyXG5cclxuICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgZmFpbDogZXJyID0+IHtcclxuICAgICAgICAgICAgICAgICAgIGNhbGxiYWNrKGVycik7IFxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH0pXHJcbiAgICAgICAgfVxyXG4gICAgfSxcclxuXHJcbiAgICAvL+aUueWPmOeUqOaIt+mBk+WFt1xyXG4gICAgc2V0VXNlclByb3AocHJvcGlkLGFtb3VudCxjYWxsYmFjayl7XHJcbiAgICAgICAgaWYgKHR5cGVvZiB3eCE9PSAndW5kZWZpbmVkJyAmJiB3eCE9PSBudWxsKSB7XHJcbiAgICAgICAgICAgIGxldCBuZXdQcm9wRGF0YSA9IG51bGw7XHJcbiAgICAgICAgICAgIGlmKHByb3BpZCA9PSAwKXtcclxuICAgICAgICAgICAgICAgIG5ld1Byb3BEYXRhID0ge1xyXG4gICAgICAgICAgICAgICAgICAgIGZyZWV6ZTpjYy5meC5HYW1lQ29uZmlnLkdNX0lORk8uZnJlZXplQW1vdW50LFxyXG4gICAgICAgICAgICAgICAgICAgIGhhbW1lcjpjYy5meC5HYW1lQ29uZmlnLkdNX0lORk8uaGFtbWVyQW1vdW50LFxyXG4gICAgICAgICAgICAgICAgICAgIG1hZ2ljX3dhbmQ6Y2MuZnguR2FtZUNvbmZpZy5HTV9JTkZPLm1hZ2ljQW1vdW50LFxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGVsc2UgaWYocHJvcGlkID09IDIwMDEpe1xyXG4gICAgICAgICAgICAgICAgbmV3UHJvcERhdGEgPSBhbW91bnQ7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgZWxzZSBpZihwcm9waWQgPT0gMjAwMil7XHJcbiAgICAgICAgICAgICAgICBuZXdQcm9wRGF0YSA9IGFtb3VudDsgXHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgZWxzZSBpZihwcm9waWQgPT0gMjAwMyl7XHJcbiAgICAgICAgICAgICAgICBuZXdQcm9wRGF0YSA9IGFtb3VudDsgXHJcbiAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgIC8vQHRzLWlnbm9yZVxyXG4gICAgICAgICAgICB3eC5jbG91ZC5jYWxsRnVuY3Rpb24oe1xyXG4gICAgICAgICAgICBuYW1lOiAndXNlclByb3AnLFxyXG4gICAgICAgICAgICBkYXRhOiB7XHJcbiAgICAgICAgICAgICAgICBhY3Rpb246ICdzYXZlJyxcclxuICAgICAgICAgICAgICAgIHByb3BUeXBlOiBwcm9waWQsXHJcbiAgICAgICAgICAgICAgICBwcm9wRGF0YTogbmV3UHJvcERhdGFcclxuICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgc3VjY2VzczogcmVzID0+IHtcclxuICAgICAgICAgICAgICAgIC8vIGNvbnNvbGUubG9nKCfkupHlh73mlbDov5Tlm57nu5Pmnpw6JywgcmVzKTtcclxuICAgICAgICAgICAgICAgIGlmKGNhbGxiYWNrKXtcclxuICAgICAgICAgICAgICAgICAgICBjYWxsYmFjayhyZXMpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgLy8gY29uc29sZS5sb2coJ+WtmOWCqOmBk+WFt+aVsOaNruaIkOWKnycpXHJcbiAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgIGZhaWw6IGVyciA9PiB7XHJcbiAgICAgICAgICAgICAgICAvLyBjb25zb2xlLmxvZygn5a2Y5YKo6YGT5YW35pWw5o2u5aSx6LSlJylcclxuICAgICAgICAgICAgICAgIGlmKGNhbGxiYWNrKXtcclxuICAgICAgICAgICAgICAgICAgICBjYWxsYmFjayhlcnIpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgY29uc29sZS5lcnJvcign5a2Y5YKo6YGT5YW35pWw5o2u5aSx6LSlJywgZXJyKVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH0pXHJcbiAgICAgICAgfVxyXG4gICAgfSxcclxuXHJcbiAgICAvLyDmo4Dmn6XmmK/lkKbmnInotrPlpJ/nmoTnoazluIFcclxuICAgIGNvbnN1bWVDb2lucyhyZXF1aXJlZENvaW5zOiBudW1iZXIsIHByb3BOYW1lOiBzdHJpbmcsIGFtb3VudDogbnVtYmVyLCBjYWxsYmFjaykge1xyXG4gIFxyXG5cclxuICAgIH0sXHJcblxyXG4gICAgLy8g6K6+572u55So5oi35L+h5oGvXHJcbiAgICBzZXRVc2VySW5mbyhjYWxsYmFjazogRnVuY3Rpb24pIHtcclxuICAgICAgICAvL0B0cy1pZ25vcmVcclxuICAgICAgICAgaWYgKHR5cGVvZiB3eCE9PSAndW5kZWZpbmVkJyAmJiB3eCE9PSBudWxsKSB7XHJcbiAgICAgICAgICAgICAgICBjb25zdCB0aW1lID0gY2MuZnguR2FtZVRvb2wuZm9ybWF0RGF0ZShuZXcgRGF0ZSgpKTtcclxuICAgICAgICAgICAgICAgIGxldCB1c2VySW5mbyA9IHtcclxuICAgICAgICAgICAgICAgICAgICAvLyDov5nph4zloavlhpnopoHlrZjlgqjnmoTnlKjmiLfmlbDmja5cclxuICAgICAgICAgICAgICAgICAgICB1c2VybmFtZTogY2MuZnguR2FtZUNvbmZpZy5HTV9JTkZPLnVzZXJuYW1lLCAgIC8v55So5oi35ZCN56ewXHJcbiAgICAgICAgICAgICAgICAgICAgdXNlcmF2YXRhcjogY2MuZnguR2FtZUNvbmZpZy5HTV9JTkZPLnVzZXJhdmF0YXIsICAgICAvL+eUqOaIt+WktOWDj1xyXG4gICAgICAgICAgICAgICAgICAgIHJlZ2lzdGVyX3RpbWU6IHRpbWVcclxuICAgICAgICAgICAgICAgIH1cclxuIFxyXG4gICAgICAgICAgICAgICAvL0B0cy1pZ25vcmVcclxuICAgICAgICAgICAgICAgIHd4LmNsb3VkLmNhbGxGdW5jdGlvbih7XHJcbiAgICAgICAgICAgICAgICBuYW1lOiAndXNlckRhdGEnLFxyXG4gICAgICAgICAgICAgICAgZGF0YToge1xyXG4gICAgICAgICAgICAgICAgICAgIGFjdGlvbjogJ3NhdmUnLFxyXG4gICAgICAgICAgICAgICAgICAgIHVzZXJEYXRhOiB1c2VySW5mb1xyXG4gICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICAgIHN1Y2Nlc3M6IHJlcyA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgLy8gY29uc29sZS5sb2coJ+WtmOWCqOeUqOaIt+aVsOaNruaIkOWKnycpXHJcbiAgICAgICAgICAgICAgICAgICAgaWYoY2FsbGJhY2spe1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBjYWxsYmFjayhyZXMpO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgICAgZmFpbDogZXJyID0+IHtcclxuICAgICAgICAgICAgICAgICAgICBpZihjYWxsYmFjayl7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgY2FsbGJhY2soXCJmYWlsXCIpO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH0pXHJcbiAgICAgICAgIH0gXHJcbiAgICB9LFxyXG5cclxuICAgICBmb3JtYXREYXRlKGRhdGU6IERhdGUpOiBzdHJpbmcge1xyXG4gICAgICAgIGNvbnN0IHllYXIgPSBkYXRlLmdldEZ1bGxZZWFyKCk7XHJcbiAgICAgICAgY29uc3QgbW9udGggPSBTdHJpbmcoZGF0ZS5nZXRNb250aCgpICsgMSkucGFkU3RhcnQoMiwgJzAnKTtcclxuICAgICAgICBjb25zdCBkYXkgPSBTdHJpbmcoZGF0ZS5nZXREYXRlKCkpLnBhZFN0YXJ0KDIsICcwJyk7XHJcbiAgICAgICAgY29uc3QgaG91cnMgPSBTdHJpbmcoZGF0ZS5nZXRIb3VycygpKS5wYWRTdGFydCgyLCAnMCcpO1xyXG4gICAgICAgIGNvbnN0IG1pbnV0ZXMgPSBTdHJpbmcoZGF0ZS5nZXRNaW51dGVzKCkpLnBhZFN0YXJ0KDIsICcwJyk7XHJcbiAgICAgICAgY29uc3Qgc2Vjb25kcyA9IFN0cmluZyhkYXRlLmdldFNlY29uZHMoKSkucGFkU3RhcnQoMiwgJzAnKTtcclxuICAgICAgICBjb25zdCBtaWxsaXNlY29uZHMgPSBTdHJpbmcoZGF0ZS5nZXRNaWxsaXNlY29uZHMoKSkucGFkU3RhcnQoMywgJzAnKTtcclxuXHJcbiAgICAgICAgcmV0dXJuIGAke3llYXJ9LSR7bW9udGh9LSR7ZGF5fSAke2hvdXJzfToke21pbnV0ZXN9OiR7c2Vjb25kc30uJHttaWxsaXNlY29uZHN9YDtcclxuICAgIH0sXHJcbiAgICBcclxuICAgIC8v6I635Y+W5pe26Ze05oizXHJcbiAgICBnZXRUaW1lKCl7XHJcbiAgICAgICAgY29uc3QgdGltZXN0YW1wID0gIChuZXcgRGF0ZSgpLmdldFRpbWUoKSlcclxuICAgICAgICByZXR1cm4gdGltZXN0YW1wO1xyXG4gICAgfSxcclxuICAgIHB1c2hMaXN0ZXI6ZnVuY3Rpb24gKCkge1xyXG4gICAgICAgIFxyXG4gICAgfSxcclxuICAgIHJlbW92ZUFsbExpc3RlcjpmdW5jdGlvbiAoKSB7XHJcbiAgICAgICAgXHJcbiAgICB9LFxyXG5cclxuICAgIHNodXNodV9UcmFjazogZnVuY3Rpb24obmFtZSxkYXRhKXtcclxuICAgICAgICBsZXQgZXZlbnREYXRhID0ge31cclxuICAgICAgICBzd2l0Y2gobmFtZSl7XHJcbiAgICAgICAgICAgIGNhc2UgXCJyZWdpc3RlclwiOlxyXG4gICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgIGNhc2UgXCJlbnRlcl9zdGFnZVwiOlxyXG4gICAgICAgICAgICAgICAgZXZlbnREYXRhID0ge1xyXG4gICAgICAgICAgICAgICAgICAgIHN0YWdlX2lkOiAoY2MuZnguR2FtZUNvbmZpZy5HTV9JTkZPLmxldmVsICsgMSlcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICBjYXNlIFwiZmluaXNoX3N0YWdlXCI6XHJcbiAgICAgICAgICAgICAgICBldmVudERhdGEgPSB7XHJcbiAgICAgICAgICAgICAgICAgICAgc3RhZ2VfaWQ6IChjYy5meC5HYW1lQ29uZmlnLkdNX0lORk8ubGV2ZWwgKyAxKSxcclxuICAgICAgICAgICAgICAgICAgICBzdGFnZV9kdXJhdGlvbjogZGF0YS50aW1lLFxyXG4gICAgICAgICAgICAgICAgICAgIGFkZGVkX3RpbWU6IGRhdGEuYWRkX1RpbWUsXHJcbiAgICAgICAgICAgICAgICAgICAgcmVzdWx0OiBkYXRhLnJlc3VsdFxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgIGNhc2UgXCJyZXNvdXJjZV9nZXRcIjpcclxuICAgICAgICAgICAgICAgIGV2ZW50RGF0YSA9IHtcclxuICAgICAgICAgICAgICAgICAgICBjaGFuZ2VfcmVhc29uOlwi6LSt5Lmw6YGT5YW3XCIsICAgLy/ojrflvpfmnaXmupBcclxuICAgICAgICAgICAgICAgICAgICBjaGFuZ2VfbnVtOmRhdGEubnVtLCAgICAgICAvL+iOt+W+l+aVsOmHj1xyXG4gICAgICAgICAgICAgICAgICAgIHJlc291cmNlX2lkOmRhdGEuaWQgICAgICAgIC8v6YGT5YW3aWRcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICBjYXNlIFwicmVzb3VyY2VfY29zdFwiOlxyXG4gICAgICAgICAgICAgICAgZXZlbnREYXRhID0ge1xyXG4gICAgICAgICAgICAgICAgICAgIGNoYW5nZV9yZWFzb246XCLkvb/nlKjpgZPlhbdcIiwgICAvL+iOt+W+l+adpea6kFxyXG4gICAgICAgICAgICAgICAgICAgIGNoYW5nZV9udW06ZGF0YS5udW0sICAgICAgIC8v6I635b6X5pWw6YePXHJcbiAgICAgICAgICAgICAgICAgICAgcmVzb3VyY2VfaWQ6ZGF0YS5pZCAgICAgICAgLy/pgZPlhbdpZFxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgYnJlYWs7IFxyXG4gICAgICAgICAgICBjYXNlIFwic2hvcF9idXlcIjpcclxuICAgICAgICAgICAgICAgIGV2ZW50RGF0YSA9IHtcclxuICAgICAgICAgICAgICAgICAgICBpdGVtX2lkOiBkYXRhLml0ZW1faWQsXHJcbiAgICAgICAgICAgICAgICAgICAgaXRlbV9udW06IGRhdGEuaXRlbV9udW0sXHJcbiAgICAgICAgICAgICAgICAgICAgaXRlbV9wcmljZTogZGF0YS5pdGVtX3ByaWNlLFxyXG4gICAgICAgICAgICAgICAgICAgIGNvc3RfdHlwZTogZGF0YS5jb3N0X3R5cGUsICAgXHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBjb25zb2xlLmxvZyhcIuaVsOaNrjpcIixldmVudERhdGEpO1xyXG4gICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIC8vIE1pbmlHYW1lU2RrLkFQSS5zaHVzaHVfVHJhY2sobmFtZSxldmVudERhdGEpO1xyXG4gICAgICAgIE1pbmlHYW1lU2RrLkFQSS5zaHVzaHVfVHJhY2sobmFtZSwgZXZlbnREYXRhKTtcclxuICAgIH0sXHJcblxyXG4gICAgZ2V0V2VjaGF0R2FtZVZlcnNpb246IGZ1bmN0aW9uKCl7XHJcbiAgICAgICAgLy9AdHMtaWdub3JlXHJcbiAgICAgICAgY29uc3QgYWNjb3VudEluZm8gPSB3eC5nZXRBY2NvdW50SW5mb1N5bmMoKTtcclxuICAgICAgICBjb25zdCBtaW5pUHJvZ3JhbSA9IGFjY291bnRJbmZvLm1pbmlQcm9ncmFtO1xyXG4gICAgICAgIHN3aXRjaCAobWluaVByb2dyYW0uZW52VmVyc2lvbikge1xyXG4gICAgICAgICAgICBjYXNlICdkZXZlbG9wJzpcclxuICAgICAgICAgICAgICAgIHJldHVybiAn5byA5Y+R54mIJztcclxuICAgICAgICAgICAgY2FzZSAndHJpYWwnOlxyXG4gICAgICAgICAgICAgICAgcmV0dXJuICfkvZPpqozniYgnO1xyXG4gICAgICAgICAgICBjYXNlICdyZWxlYXNlJzpcclxuICAgICAgICAgICAgICAgIHJldHVybiAn5q2j5byP54mIJztcclxuICAgICAgICAgICAgZGVmYXVsdDpcclxuICAgICAgICAgICAgICAgIHJldHVybiAn5pyq55+l54mI5pysJztcclxuICAgICAgICB9XHJcbiAgICB9LFxyXG5cclxufTtcclxuZXhwb3J0IHsgR2FtZVRvb2wgfTsiXX0= +//------QC-SOURCE-SPLIT------ + + (function() { + var nodeEnv = typeof require !== 'undefined' && typeof process !== 'undefined'; + var __module = nodeEnv ? module : {exports:{}}; + var __filename = 'preview-scripts/assets/Script/GameOver.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, '805c6nf399HWZeuWnNB9CTH', 'GameOver'); +// Script/GameOver.ts + +"use strict"; +var __extends = (this && this.__extends) || (function () { + var extendStatics = function (d, b) { + extendStatics = Object.setPrototypeOf || + ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) || + function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; }; + return extendStatics(d, b); + }; + return function (d, b) { + extendStatics(d, b); + function __() { this.constructor = d; } + d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); + }; +})(); +var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) { + var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; + if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc); + else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; + return c > 3 && r && Object.defineProperty(target, key, r), r; +}; +Object.defineProperty(exports, "__esModule", { value: true }); +var _a = cc._decorator, ccclass = _a.ccclass, property = _a.property; +var NewClass = /** @class */ (function (_super) { + __extends(NewClass, _super); + function NewClass() { + var _this = _super !== null && _super.apply(this, arguments) || this; + _this.count = null; + _this.time = null; + _this.selfNode = null; + _this.one = null; + _this.two = null; + _this.three = null; + _this.four = null; + _this.five = null; + return _this; + } + // onLoad () {} + NewClass.prototype.start = function () { + this.count.string = cc.fx.GameConfig.GM_INFO.score + ""; + var yes = 0; + var successList = cc.fx.GameConfig.GM_INFO.successList; + if (successList.length > 0) { + var success = 0; + for (var i = 0; i < successList.length; i++) { + if (successList[i] == true) + success += 1; + } + yes = success / successList.length; + } + yes = Math.floor(yes * 1000) / 10; + this.time.string = yes + "%"; + this.init(); + }; + //初始化数据 + NewClass.prototype.init = function () { + this.listData = []; + this.selfData = null; + this.one.active = false; + this.two.active = false; + this.three.active = false; + this.four.active = false; + this.five.active = false; + var urlNow = window.location.href; + if (this.containsTrain(urlNow)) { + this.node.getChildByName("again").active = false; + this.node.getChildByName("back").active = false; + this.node.getChildByName("finishi").active = true; + this.setLocalStorage(); + } + else { + this.setLocalStorage(); + this.node.getChildByName("again").active = true; + this.node.getChildByName("back").active = true; + this.node.getChildByName("finishi").active = false; + } + this.getRank(); + }; + NewClass.prototype.setLocalStorage = function () { + var timeData = cc.fx.GameConfig.TIME_INFO.totalTime; + var today = new Date().toLocaleDateString(); + var name = "success_" + today + "_" + cc.fx.GameConfig.GM_INFO.scode + "_" + cc.fx.GameConfig.GM_INFO.gameId; + localStorage.setItem(name, JSON.stringify({ success: true })); + }; + //打开排行榜 + NewClass.prototype.openRank = function () { + cc.director.loadScene("RankScene"); + }; + //重新开始玩 + NewClass.prototype.again = function () { + cc.fx.GameConfig.GM_INFO.round = 0; + cc.fx.GameConfig.GM_INFO.level = 0; + cc.fx.GameConfig.GM_INFO.stepTimeList = 0; + cc.fx.GameConfig.GM_INFO.successList = []; + cc.fx.GameConfig.GM_INFO.fen = 0; + cc.fx.GameConfig.GM_INFO.score = 0; + cc.fx.GameConfig.GM_INFO.min_Steps = 0; + cc.fx.GameConfig.GM_INFO.min_Time = 0; + cc.fx.GameConfig.TIME_INFO.totalTime = 120; + cc.director.loadScene("GameScene"); + }; + //判断来源 + NewClass.prototype.containsTrain = function (str) { + return /from=train/i.test(str); + }; + //获取排行榜 + NewClass.prototype.getRank = function () { + var _this = this; + //获取排行榜数据 所需数据量 + var dataFile = { + length: 5 + }; + cc.fx.GameTool.getRank(dataFile, function (data) { return _this.getRankData(data); }); + }; + //打开排行榜 + NewClass.prototype.jumpFinishi = function () { + var url = "https://train.sparkus.cn/poster/game/" + cc.fx.GameConfig.GM_INFO.scode + "?suc=1"; + window.location.href = url; + }; + //设置排行信息 + NewClass.prototype.getRankData = function (data) { + if (data) { + cc.fx.GameTool.getRankData(data, this, 4); + cc.fx.GameTool.setPic(this.selfNode.getChildByName("pic").getChildByName("icon"), this.selfData.pic); + var length = this.listData.length - 1; + if (length > 4) + length = 4; + for (var i = 0; i <= length; i++) { + this.setRank(i, this.listData[i]); + } + } + }; + //根据内容填充排行榜 + NewClass.prototype.setRank = function (num, data) { + var _this = this; + if (!data) { + return; + } + var hitNode = null; + if (num == 0) { + hitNode = this.one; + } + else if (num == 1) { + hitNode = this.two; + } + else if (num == 2) { + hitNode = this.three; + } + else if (num == 3) { + hitNode = this.four; + } + else if (num == 4) { + hitNode = this.five; + } + var trun = num + 1; + for (var i = 0; i < trun; i++) { + if (this.listData[i] && this.listData[i].nickName == cc.fx.GameConfig.GM_INFO.nickName) { + trun = i + 1; + break; + } + else if (!this.listData[i] == null) { + trun = i * 2; + break; + } + this.node.color = cc.color(this.listData[0], this.listData[1], this.listData[2]); + cc.tween(this.node) + .to(0.5, { scale: 2 }) + .by(1, { opacity: 0 }) + .delay(0.5) + .call(function () { + _this.node.scale = 1; + _this.node.opacity = 255; + _this.node.color = cc.color(255, 255, 255); + }) + .start(); + } + hitNode.getChildByName("num").getComponent(cc.Label).string = num + ""; + cc.tween(hitNode.getChildByName("num").getComponent(cc.Label)) + .to(0.5, { string: trun + "" }) + .start(); + var record = cc.fx.GameConfi.GM_INFO.score; + if (data.score >= record) { + this.selfData = data; + this.selfNode.active = true; + } + if (hitNode) { + hitNode.active = true; + if (data.nickName.length >= 4) + data.nickName = cc.fx.GameTool.subName(data.nickName, 4); + hitNode.getChildByName("name").getComponent(cc.Label).string = data.nickName; + hitNode.getChildByName("total").getComponent(cc.Label).string = data.score; + cc.fx.GameTool.setPic(hitNode.getChildByName("pic").getChildByName("icon"), data.pic); + } + }; + __decorate([ + property(cc.Label) + ], NewClass.prototype, "count", void 0); + __decorate([ + property(cc.Label) + ], NewClass.prototype, "time", void 0); + __decorate([ + property(cc.Node) + ], NewClass.prototype, "selfNode", void 0); + __decorate([ + property(cc.Node) + ], NewClass.prototype, "one", void 0); + __decorate([ + property(cc.Node) + ], NewClass.prototype, "two", void 0); + __decorate([ + property(cc.Node) + ], NewClass.prototype, "three", void 0); + __decorate([ + property(cc.Node) + ], NewClass.prototype, "four", void 0); + __decorate([ + property(cc.Node) + ], NewClass.prototype, "five", void 0); + NewClass = __decorate([ + ccclass + ], NewClass); + return NewClass; +}(cc.Component)); +exports.default = NewClass; + +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,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImFzc2V0c1xcU2NyaXB0XFxHYW1lT3Zlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFDTSxJQUFBLEtBQXNCLEVBQUUsQ0FBQyxVQUFVLEVBQWxDLE9BQU8sYUFBQSxFQUFFLFFBQVEsY0FBaUIsQ0FBQztBQUcxQztJQUFzQyw0QkFBWTtJQUFsRDtRQUFBLHFFQXFMQztRQW5MRyxXQUFLLEdBQWEsSUFBSSxDQUFDO1FBRXZCLFVBQUksR0FBYSxJQUFJLENBQUM7UUFFdEIsY0FBUSxHQUFZLElBQUksQ0FBQztRQUV6QixTQUFHLEdBQVksSUFBSSxDQUFDO1FBRXBCLFNBQUcsR0FBWSxJQUFJLENBQUM7UUFFcEIsV0FBSyxHQUFZLElBQUksQ0FBQztRQUV0QixVQUFJLEdBQVksSUFBSSxDQUFDO1FBRXJCLFVBQUksR0FBWSxJQUFJLENBQUM7O0lBcUt6QixDQUFDO0lBbEtHLGVBQWU7SUFDZix3QkFBSyxHQUFMO1FBQ0ksSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNLEdBQUcsRUFBRSxDQUFDLEVBQUUsQ0FBQyxVQUFVLENBQUMsT0FBTyxDQUFDLEtBQUssR0FBRyxFQUFFLENBQUM7UUFDeEQsSUFBSSxHQUFHLEdBQUcsQ0FBQyxDQUFDO1FBQ1osSUFBSSxXQUFXLEdBQUcsRUFBRSxDQUFDLEVBQUUsQ0FBQyxVQUFVLENBQUMsT0FBTyxDQUFDLFdBQVcsQ0FBQztRQUN2RCxJQUFHLFdBQVcsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFDO1lBQ3RCLElBQUksT0FBTyxHQUFHLENBQUMsQ0FBQztZQUNoQixLQUFJLElBQUksQ0FBQyxHQUFDLENBQUMsRUFBRSxDQUFDLEdBQUMsV0FBVyxDQUFDLE1BQU0sRUFBRSxDQUFDLEVBQUUsRUFBQztnQkFDbkMsSUFBRyxXQUFXLENBQUMsQ0FBQyxDQUFDLElBQUksSUFBSTtvQkFBRSxPQUFPLElBQUksQ0FBQyxDQUFDO2FBQzNDO1lBQ0QsR0FBRyxH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QUFDLEVBQUUsQ0FBQyxJQUFJLENBQUM7MENBQ0c7SUFoQkosUUFBUTtRQUQ1QixPQUFPO09BQ2EsUUFBUSxDQXFMNUI7SUFBRCxlQUFDO0NBckxELEFBcUxDLENBckxxQyxFQUFFLENBQUMsU0FBUyxHQXFMakQ7a0JBckxvQixRQUFRIiwiZmlsZSI6IiIsInNvdXJjZVJvb3QiOiIvIiwic291cmNlc0NvbnRlbnQiOlsiXHJcbmNvbnN0IHtjY2NsYXNzLCBwcm9wZXJ0eX0gPSBjYy5fZGVjb3JhdG9yO1xyXG5cclxuQGNjY2xhc3NcclxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgTmV3Q2xhc3MgZXh0ZW5kcyBjYy5Db21wb25lbnQge1xyXG4gICAgQHByb3BlcnR5KGNjLkxhYmVsKVxyXG4gICAgY291bnQ6IGNjLkxhYmVsID0gbnVsbDtcclxuICAgIEBwcm9wZXJ0eShjYy5MYWJlbClcclxuICAgIHRpbWU6IGNjLkxhYmVsID0gbnVsbDtcclxuICAgIEBwcm9wZXJ0eShjYy5Ob2RlKVxyXG4gICAgc2VsZk5vZGU6IGNjLk5vZGUgPSBudWxsO1xyXG4gICAgQHByb3BlcnR5KGNjLk5vZGUpXHJcbiAgICBvbmU6IGNjLk5vZGUgPSBudWxsO1xyXG4gICAgQHByb3BlcnR5KGNjLk5vZGUpXHJcbiAgICB0d286IGNjLk5vZGUgPSBudWxsO1xyXG4gICAgQHByb3BlcnR5KGNjLk5vZGUpXHJcbiAgICB0aHJlZTogY2MuTm9kZSA9IG51bGw7XHJcbiAgICBAcHJvcGVydHkoY2MuTm9kZSlcclxuICAgIGZvdXI6IGNjLk5vZGUgPSBudWxsO1xyXG4gICAgQHByb3BlcnR5KGNjLk5vZGUpXHJcbiAgICBmaXZlOiBjYy5Ob2RlID0gbnVsbDtcclxuICAgIGxpc3REYXRhOiBhbnk7XHJcbiAgICBzZWxmRGF0YTogYW55O1xyXG4gICAgLy8gb25Mb2FkICgpIHt9XHJcbiAgICBzdGFydCAoKSB7XHJcbiAgICAgICAgdGhpcy5jb3VudC5zdHJpbmcgPSBjYy5meC5HYW1lQ29uZmlnLkdNX0lORk8uc2NvcmUgKyBcIlwiO1xyXG4gICAgICAgIHZhciB5ZXMgPSAwO1xyXG4gICAgICAgIHZhciBzdWNjZXNzTGlzdCA9IGNjLmZ4LkdhbWVDb25maWcuR01fSU5GTy5zdWNjZXNzTGlzdDtcclxuICAgICAgICBpZihzdWNjZXNzTGlzdC5sZW5ndGggPiAwKXtcclxuICAgICAgICAgICAgdmFyIHN1Y2Nlc3MgPSAwO1xyXG4gICAgICAgICAgICBmb3IobGV0IGk9MDsgaTxzdWNjZXNzTGlzdC5sZW5ndGg7IGkrKyl7XHJcbiAgICAgICAgICAgICAgICBpZihzdWNjZXNzTGlzdFtpXSA9PSB0cnVlKSBzdWNjZXNzICs9IDE7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgeWVzID0gc3VjY2Vzcy9zdWNjZXNzTGlzdC5sZW5ndGg7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHllcyA9IE1hdGguZmxvb3IoeWVzICogMTAwMCkvMTA7XHJcbiAgICAgICAgdGhpcy50aW1lLnN0cmluZyA9ICAgeWVzICsgXCIlXCI7XHJcbiAgICAgICAgdGhpcy5pbml0KCk7XHJcbiAgICAgICBcclxuICAgIH0gICBcclxuICAgIC8v5Yid5aeL5YyW5pWw5o2uXHJcbiAgICBpbml0KCl7XHJcbiAgICAgICAgdGhpcy5saXN0RGF0YSA9IFtdO1xyXG4gICAgICAgIHRoaXMuc2VsZkRhdGEgPSBudWxsO1xyXG4gICAgICAgIHRoaXMub25lLmFjdGl2ZSA9IGZhbHNlO1xyXG4gICAgICAgIHRoaXMudHdvLmFjdGl2ZSA9IGZhbHNlO1xyXG4gICAgICAgIHRoaXMudGhyZWUuYWN0aXZlID0gZmFsc2U7XHJcbiAgICAgICAgdGhpcy5mb3VyLmFjdGl2ZSA9IGZhbHNlO1xyXG4gICAgICAgIHRoaXMuZml2ZS5hY3RpdmUgPSBmYWxzZTtcclxuICAgICAgICB2YXIgdXJsTm93ID0gd2luZG93LmxvY2F0aW9uLmhyZWY7XHJcbiAgICAgICAgaWYodGhpcy5jb250YWluc1RyYWluKHVybE5vdykpe1xyXG4gICAgICAgICAgICB0aGlzLm5vZGUuZ2V0Q2hpbGRCeU5hbWUoXCJhZ2FpblwiKS5hY3RpdmUgPSBmYWxzZTtcclxuICAgICAgICAgICAgdGhpcy5ub2RlLmdldENoaWxkQnlOYW1lKFwiYmFja1wiKS5hY3RpdmUgPSBmYWxzZTtcclxuICAgICAgICAgICAgdGhpcy5ub2RlLmdldENoaWxkQnlOYW1lKFwiZmluaXNoaVwiKS5hY3RpdmUgPSB0cnVlO1xyXG4gICAgICAgICAgICB0aGlzLnNldExvY2FsU3RvcmFnZSgpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNle1xyXG4gICAgICAgICAgICB0aGlzLnNldExvY2FsU3RvcmFnZSgpO1xyXG4gICAgICAgICAgICB0aGlzLm5vZGUuZ2V0Q2hpbGRCeU5hbWUoXCJhZ2FpblwiKS5hY3RpdmUgPSB0cnVlO1xyXG4gICAgICAgICAgICB0aGlzLm5vZGUuZ2V0Q2hpbGRCeU5hbWUoXCJiYWNrXCIpLmFjdGl2ZSA9IHRydWU7XHJcbiAgICAgICAgICAgIHRoaXMubm9kZS5nZXRDaGlsZEJ5TmFtZShcImZpbmlzaGlcIikuYWN0aXZlID0gZmFsc2U7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICB0aGlzLmdldFJhbmsoKTtcclxuICAgIH1cclxuXHJcbiAgICBzZXRMb2NhbFN0b3JhZ2UoKXtcclxuICAgICAgICBsZXQgdGltZURhdGEgPSBjYy5meC5HYW1lQ29uZmlnLlRJTUVfSU5GTy50b3RhbFRpbWU7XHJcbiAgICAgICAgXHJcbiAgICAgICAgY29uc3QgdG9kYXkgPSBuZXcgRGF0ZSgpLnRvTG9jYWxlRGF0ZVN0cmluZygpO1xyXG4gICAgICAgIHZhciBuYW1lID0gYHN1Y2Nlc3NfJHt0b2RheX1fJHtjYy5meC5HYW1lQ29uZmlnLkdNX0lORk8uc2NvZGV9XyR7Y2MuZnguR2FtZUNvbmZpZy5HTV9JTkZPLmdhbWVJZH1gXHJcbiAgICAgICAgbG9jYWxTdG9yYWdlLnNldEl0ZW0obmFtZSwgSlNPTi5zdHJpbmdpZnkoe3N1Y2Nlc3M6dHJ1ZX0pKTtcclxuICAgIH1cclxuXHJcbiAgICAvL+aJk+W8gOaOkuihjOamnFxyXG4gICAgb3BlblJhbmsoKXtcclxuICAgICAgICBjYy5kaXJlY3Rvci5sb2FkU2NlbmUoXCJSYW5rU2NlbmVcIik7XHJcbiAgICB9XHJcbiAgICAvL+mHjeaWsOW8gOWni+eOqVxyXG4gICAgYWdhaW4oKXtcclxuICAgICAgICBjYy5meC5HYW1lQ29uZmlnLkdNX0lORk8ucm91bmQgPSAwO1xyXG4gICAgICAgIGNjLmZ4LkdhbWVDb25maWcuR01fSU5GTy5sZXZlbCA9IDA7XHJcbiAgICAgICAgY2MuZnguR2FtZUNvbmZpZy5HTV9JTkZPLnN0ZXBUaW1lTGlzdCA9IDA7XHJcbiAgICAgICAgY2MuZnguR2FtZUNvbmZpZy5HTV9JTkZPLnN1Y2Nlc3NMaXN0ID0gW107XHJcbiAgICAgICAgY2MuZnguR2FtZUNvbmZpZy5HTV9JTkZPLmZlbiA9IDA7XHJcbiAgICAgICAgY2MuZnguR2FtZUNvbmZpZy5HTV9JTkZPLnNjb3JlID0gMDtcclxuICAgICAgICBjYy5meC5HYW1lQ29uZmlnLkdNX0lORk8ubWluX1N0ZXBzID0gMDtcclxuICAgICAgICBjYy5meC5HYW1lQ29uZmlnLkdNX0lORk8ubWluX1RpbWUgPSAwO1xyXG4gICAgICAgIGNjLmZ4LkdhbWVDb25maWcuVElNRV9JTkZPLnRvdGFsVGltZSA9IDEyMDtcclxuICAgICAgICBjYy5kaXJlY3Rvci5sb2FkU2NlbmUoXCJHYW1lU2NlbmVcIik7XHJcbiAgICB9XHJcbiAgICAvL+WIpOaWreadpea6kFxyXG4gICAgY29udGFpbnNUcmFpbihzdHIpIHtcclxuICAgICAgICByZXR1cm4gL2Zyb209dHJhaW4vaS50ZXN0KHN0cik7XHJcbiAgICB9XHJcbiAgICAvL+iOt+WPluaOkuihjOamnFxyXG4gICAgZ2V0UmFuaygpe1xyXG4gICAgICAgIC8v6I635Y+W5o6S6KGM5qac5pWw5o2uICDmiYDpnIDmlbDmja7ph49cclxuICAgICAgICBsZXQgZGF0YUZpbGUgPSB7XHJcbiAgICAgICAgICAgIGxlbmd0aDo1XHJcbiAgICAgICAgfVxyXG4gICAgICAgICBjYy5meC5HYW1lVG9vbC5nZXRSYW5rKGRhdGFGaWxlLGRhdGEgPT50aGlzLmdldFJhbmtEYXRhKGRhdGEpKTtcclxuICAgIH1cclxuICAgIC8v5omT5byA5o6S6KGM5qacXHJcbiAgICBqdW1wRmluaXNoaSgpe1xyXG4gICAgICAgIGxldCB1cmwgPSBcImh0dHBzOi8vdHJhaW4uc3Bhcmt1cy5jbi9wb3N0ZXIvZ2FtZS9cIiArIGNjLmZ4LkdhbWVDb25maWcuR01fSU5GTy5zY29kZSArIFwiP3N1Yz0xXCI7XHJcbiAgICAgICAgd2luZG93LmxvY2F0aW9uLmhyZWYgPSB1cmw7XHJcbiAgICB9XHJcbiAgICAvL+iuvue9ruaOkuihjOS/oeaBr1xyXG4gICAgZ2V0UmFua0RhdGEoZGF0YSl7XHJcbiAgICAgICAgaWYoZGF0YSl7XHJcbiAgICAgICAgICAgICBjYy5meC5HYW1lVG9vbC5nZXRSYW5rRGF0YShkYXRhLHRoaXMsNCk7XHJcbiAgICAgICAgICAgICBjYy5meC5HYW1lVG9vbC5zZXRQaWModGhpcy5zZWxmTm9kZS5nZXRDaGlsZEJ5TmFtZShcInBpY1wiKS5nZXRDaGlsZEJ5TmFtZShcImljb25cIiksdGhpcy5zZWxmRGF0YS5waWMpO1xyXG4gICAgICAgICAgICB2YXIgbGVuZ3RoID0gdGhpcy5saXN0RGF0YS5sZW5ndGgtMTsgaWYobGVuZ3RoID4gNCkgbGVuZ3RoID0gNDtcclxuICAgICAgICAgICAgZm9yKGxldCBpPTA7aTw9bGVuZ3RoO2krKyl7XHJcbiAgICAgICAgICAgICAgICB0aGlzLnNldFJhbmsoaSx0aGlzLmxpc3REYXRhW2ldKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgIH1cclxuICAgIC8v5qC55o2u5YaF5a655aGr5YWF5o6S6KGM5qacXHJcbiAgICBzZXRSYW5rKG51bSxkYXRhKXtcclxuICAgICAgICBpZighZGF0YSl7XHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHZhciBoaXROb2RlID0gbnVsbDtcclxuICAgICAgICBpZihudW0gPT0gMCl7XHJcbiAgICAgICAgICAgIGhpdE5vZGUgPSB0aGlzLm9uZTtcclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSBpZihudW0gPT0gMSl7XHJcbiAgICAgICAgICAgIGhpdE5vZGUgPSB0aGlzLnR3bztcclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSBpZihudW0gPT0gMil7XHJcbiAgICAgICAgICAgIGhpdE5vZGUgPSB0aGlzLnRocmVlO1xyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIGlmKG51bSA9PSAzKXtcclxuICAgICAgICAgICAgaGl0Tm9kZSA9IHRoaXMuZm91cjtcclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSBpZihudW0gPT0gNCl7XHJcbiAgICAgICAgICAgIGhpdE5vZGUgPSB0aGlzLmZpdmU7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBsZXQgdHJ1biA9IG51bSArIDE7XHJcbiAgICAgICAgZm9yKGxldCBpPTA7IGk8IHRydW47IGkrKyl7XHJcbiAgICAgICAgICAgIGlmKHRoaXMubGlzdERhdGFbaV0gJiYgdGhpcy5saXN0RGF0YVtpXS5uaWNrTmFtZSA9PSBjYy5meC5HYW1lQ29uZmlnLkdNX0lORk8ubmlja05hbWUpe1xyXG4gICAgICAgICAgICAgICAgdHJ1biA9IGkgKyAxO1xyXG4gICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgZWxzZSBpZighdGhpcy5saXN0RGF0YVtpXSA9PSBudWxsICl7XHJcbiAgICAgICAgICAgICAgICB0cnVuID0gaSAqIDI7XHJcbiAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB0aGlzLm5vZGUuY29sb3IgPSBjYy5jb2xvcih0aGlzLmxpc3REYXRhWzBdLHRoaXMubGlzdERhdGFbMV0sdGhpcy5saXN0RGF0YVsyXSk7XHJcbiAgICAgICAgICAgIGNjLnR3ZWVuKHRoaXMubm9kZSlcclxuICAgICAgICAgICAgLnRvKDAuNSx7c2NhbGU6Mn0pXHJcbiAgICAgICAgICAgIC5ieSgxLHtvcGFjaXR5OjB9KVxyXG4gICAgICAgICAgICAuZGVsYXkoMC41KVxyXG4gICAgICAgICAgICAuY2FsbCgoKSA9PntcclxuICAgICAgICAgICAgICAgIHRoaXMubm9kZS5zY2FsZSA9IDE7XHJcbiAgICAgICAgICAgICAgICB0aGlzLm5vZGUub3BhY2l0eSA9IDI1NTtcclxuICAgICAgICAgICAgICAgIHRoaXMubm9kZS5jb2xvciA9IGNjLmNvbG9yKDI1NSwyNTUsMjU1KTtcclxuICAgICAgICAgICAgfSlcclxuICAgICAgICAgICAgLnN0YXJ0KCk7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBoaXROb2RlLmdldENoaWxkQnlOYW1lKFwibnVtXCIpLmdldENvbXBvbmVudChjYy5MYWJlbCkuc3RyaW5nID0gbnVtICsgXCJcIjtcclxuICAgICAgICBjYy50d2VlbihoaXROb2RlLmdldENoaWxkQnlOYW1lKFwibnVtXCIpLmdldENvbXBvbmVudChjYy5MYWJlbCkpXHJcbiAgICAgICAgLnRvKDAuNSx7c3RyaW5nOnRydW4rXCJcIn0pXHJcbiAgICAgICAgLnN0YXJ0KCk7XHJcblxyXG4gICAgICAgIGxldCByZWNvcmQgPSBjYy5meC5HYW1lQ29uZmkuR01fSU5GTy5zY29yZTtcclxuICAgICAgICBpZihkYXRhLnNjb3JlID49IHJlY29yZCl7XHJcbiAgICAgICAgICAgIHRoaXMuc2VsZkRhdGEgPSBkYXRhO1xyXG4gICAgICAgICAgICB0aGlzLnNlbGZOb2RlLmFjdGl2ZSA9IHRydWU7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBpZihoaXROb2RlKXtcclxuICAgICAgICAgICAgaGl0Tm9kZS5hY3RpdmUgPSB0cnVlO1xyXG4gICAgICAgICAgICBpZihkYXRhLm5pY2tOYW1lLmxlbmd0aCA+PSA0KVxyXG4gICAgICAgICAgICAgICAgZGF0YS5uaWNrTmFtZSA9IGNjLmZ4LkdhbWVUb29sLnN1Yk5hbWUoZGF0YS5uaWNrTmFtZSw0KTtcclxuICAgICAgICAgICAgaGl0Tm9kZS5nZXRDaGlsZEJ5TmFtZShcIm5hbWVcIikuZ2V0Q29tcG9uZW50KGNjLkxhYmVsKS5zdHJpbmcgPSBkYXRhLm5pY2tOYW1lO1xyXG4gICAgICAgICAgICBoaXROb2RlLmdldENoaWxkQnlOYW1lKFwidG90YWxcIikuZ2V0Q29tcG9uZW50KGNjLkxhYmVsKS5zdHJpbmcgPSBkYXRhLnNjb3JlO1xyXG4gICAgICAgICAgICAgY2MuZnguR2FtZVRvb2wuc2V0UGljKGhpdE5vZGUuZ2V0Q2hpbGRCeU5hbWUoXCJwaWNcIikuZ2V0Q2hpbGRCeU5hbWUoXCJpY29uXCIpLGRhdGEucGljKTtcclxuICAgICAgICB9XHJcbiAgICB9ICAgXHJcbn1cclxuIl19 +//------QC-SOURCE-SPLIT------ + + (function() { + var nodeEnv = typeof require !== 'undefined' && typeof process !== 'undefined'; + var __module = nodeEnv ? module : {exports:{}}; + var __filename = 'preview-scripts/assets/Script/Load.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, '454adgphRpA6oq5lB6Cg1fK', 'Load'); +// Script/Load.ts + +"use strict"; +var __extends = (this && this.__extends) || (function () { + var extendStatics = function (d, b) { + extendStatics = Object.setPrototypeOf || + ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) || + function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; }; + return extendStatics(d, b); + }; + return function (d, b) { + extendStatics(d, b); + function __() { this.constructor = d; } + d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); + }; +})(); +var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) { + var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; + if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc); + else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; + return c > 3 && r && Object.defineProperty(target, key, r), r; +}; +Object.defineProperty(exports, "__esModule", { value: true }); +var _a = cc._decorator, ccclass = _a.ccclass, property = _a.property, requireComponent = _a.requireComponent; +var NewClass = /** @class */ (function (_super) { + __extends(NewClass, _super); + function NewClass() { + var _this = _super !== null && _super.apply(this, arguments) || this; + _this.node1 = null; + _this.node2 = null; + _this.node3 = null; + _this.localTest = false; + _this.clientTestVersion = "1.0.0"; + _this.testVersion = null; + return _this; + // 3月17日 - 3月21日 工作完成内容 + // 1:游戏框架搭建 + // 2:制作18个基础方块预制体 (方块可编辑颜色与道具和状态) + // 3:完成地图的搭建,可配置8*8以内,任意组合,包括可缺口和障碍物配置 + // 4:完成地图墙面建立,根据 ↑3上面构建的地图自动生成墙体。 + // 5:做完方块的基础移动,跟随手指,遇到方块或者墙壁或者障碍物阻碍移动。 + // 6:方块的自动落点做完11个基础方块的(未做完还差11个) + // 3月24日 - 3月28日 预计完成目标 + // 1:完成全部方块的落点。 + // 2:完成门的搭建,门可选颜色,可选开关或者星星等特殊状态 + // 3:完成方块通过门的游戏逻辑,使游戏可以最基础运行玩起来 + // 4:出5关版本,配合小白备案审核。 + // 5:根据方块,地图,以及道具,制作地图编辑器 (方块和地图制作的时候都已经考虑到编辑器的需求了) + // 优先制作,后续开发拓展玩法功能时,小白可同步进行制作关卡。 + } + NewClass.prototype.onLoad = function () { + // cc.director.getPhysicsManager().enabled = true; + // cc.director.getPhysicsManager().debugDrawFlags = 1; + // cc.director.getPhysicsManager().enabledAccumulator = true; + // cc.PhysicsManager.VELOCITY_ITERATIONS = 20; + // cc.PhysicsManager.FIXED_TIME_STEP = 1 / 120; + // cc.PhysicsManager.POSITION_ITERATIONS = 20; + //@ts-ignore + cc.internal.inputManager._maxTouches = 1; + var manager = cc.director.getCollisionManager(); + manager.enabled = true; + this.setWX(); + cc.debug.setDisplayStats(false); + cc.tween(this.node1) + .delay(0 * 0.3) + .to(0.3, { scale: 1 }) + .to(0.3, { scale: 1.3 }) + .to(0.3, { scale: 1 }) + .union() + .repeatForever() + .start(); + cc.tween(this.node2) + .delay(1 * 0.3) + .to(0.3, { scale: 1 }) + .to(0.3, { scale: 1.3 }) + .to(0.3, { scale: 1 }) + .union() + .repeatForever() + .start(); + cc.tween(this.node3) + .delay(2 * 0.3) + .to(0.3, { scale: 1 }) + .to(0.3, { scale: 1.3 }) + .to(0.3, { scale: 1 }) + .union() + .repeatForever() + .start(); + }; + NewClass.prototype.setWX = function () { + //@ts-ignore + if (typeof wx !== 'undefined' && wx !== null) { // 判断是否在微信环境 + wx.setPreferredFramesPerSecond(60); + // // 设置转发按钮点击后的回调 + // wx.onShareAppMessage(() => { + // return { + // title: '你想玩上怎样的游戏?', + // imageUrl: '', + // query: '' + // }; + // }); + wx.onShareAppMessage(function () { + // 用户点击了“转发”按钮 + return { + title: '你想玩上怎样的游戏?' + }; + }); + // 监听分享到朋友圈事件 + //@ts-ignore + wx.onShareTimeline(function () { + return { + title: '你想玩上怎样的游戏?' + }; + }); + wx.showShareMenu(function () { + return { + title: '你想玩上怎样的游戏?', + imageUrl: '', + query: '' + }; + }); + setTimeout(function () { + wx.showShareMenu({ + menus: ['shareAppMessage', 'shareTimeline'] + }); + }, 2000); + // 设置分享到朋友圈 + //@ts-ignore + // wx.updateShareMenu({ + // withShareTicket: true, + // success: (data) => { + // console.log('更新分享菜单成功', data); + // }, + // fail: (data) => { + // console.log('更新分享菜单失败', data); + // }, + // complete: (data) => { + // console.log('更新分享菜单完成', data); + // } + // }); + //@ts-ignore + } + }; + //判断来源 + NewClass.prototype.containsTrain = function (str) { + return /from=train/i.test(str); + }; + //开始游戏,跳转至引导页面 + NewClass.prototype.startGame = function () { + cc.director.loadScene("GameScene"); + // cc.director.loadScene("GuideScene"); + }; + //备用,用来测试跳转 指定关卡 + NewClass.prototype.clickBtn = function (event, data) { + cc.fx.GameConfig.GM_INFO.custom = parseInt(data); + cc.director.loadScene("GameScene"); + }; + //打开排行榜 + NewClass.prototype.openRank = function () { + cc.director.loadScene("RankScene"); + }; + NewClass.prototype.update = function (dt) { + }; + __decorate([ + property(cc.Node) + ], NewClass.prototype, "node1", void 0); + __decorate([ + property(cc.Node) + ], NewClass.prototype, "node2", void 0); + __decorate([ + property(cc.Node) + ], NewClass.prototype, "node3", void 0); + __decorate([ + property(false) + ], NewClass.prototype, "localTest", void 0); + __decorate([ + property("") + ], NewClass.prototype, "clientTestVersion", void 0); + __decorate([ + property(cc.Label) + ], NewClass.prototype, "testVersion", void 0); + NewClass = __decorate([ + ccclass + ], NewClass); + return NewClass; +}(cc.Component)); +exports.default = NewClass; + +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,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Iiwic291cmNlUm9vdCI6Ii8iLCJzb3VyY2VzQ29udGVudCI6WyJcclxuXHJcbmNvbnN0IHtjY2NsYXNzLCBwcm9wZXJ0eSwgcmVxdWlyZUNvbXBvbmVudH0gPSBjYy5fZGVjb3JhdG9yO1xyXG5cclxuQGNjY2xhc3NcclxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgTmV3Q2xhc3MgZXh0ZW5kcyBjYy5Db21wb25lbnQge1xyXG5cclxuXHJcbiAgICBAcHJvcGVydHkoY2MuTm9kZSlcclxuICAgIG5vZGUxOiBjYy5Ob2RlID0gbnVsbDtcclxuXHJcbiAgICBAcHJvcGVydHkoY2MuTm9kZSlcclxuICAgIG5vZGUyOiBjYy5Ob2RlID0gbnVsbDtcclxuXHJcbiAgICBAcHJvcGVydHkoY2MuTm9kZSlcclxuICAgIG5vZGUzOiBjYy5Ob2RlID0gbnVsbDtcclxuXHJcbiAgICBAcHJvcGVydHkoZmFsc2UpXHJcbiAgICBsb2NhbFRlc3Q6IGJvb2xlYW4gPSBmYWxzZTtcclxuXHJcbiAgICBAcHJvcGVydHkoXCJcIilcclxuICAgIGNsaWVudFRlc3RWZXJzaW9uOiBzdHJpbmcgPSBcIjEuMC4wXCI7XHJcblxyXG5cclxuXHJcbiAgICBAcHJvcGVydHkoY2MuTGFiZWwpXHJcbiAgICB0ZXN0VmVyc2lvbjogY2MuTGFiZWwgPSBudWxsO1xyXG5cclxuICAgIG9uTG9hZCAoKSB7XHJcbiAgICAgICAgLy8gY2MuZGlyZWN0b3IuZ2V0UGh5c2ljc01hbmFnZXIoKS5lbmFibGVkID0gdHJ1ZTtcclxuICAgICAgICAvLyBjYy5kaXJlY3Rvci5nZXRQaHlzaWNzTWFuYWdlcigpLmRlYnVnRHJhd0ZsYWdzID0gMTtcclxuICAgICAgICAvLyBjYy5kaXJlY3Rvci5nZXRQaHlzaWNzTWFuYWdlcigpLmVuYWJsZWRBY2N1bXVsYXRvciA9IHRydWU7XHJcbiAgICAgICAgLy8gY2MuUGh5c2ljc01hbmFnZXIuVkVMT0NJVFlfSVRFUkFUSU9OUyA9IDIwO1xyXG4gICAgICAgIC8vIGNjLlBoeXNpY3NNYW5hZ2VyLkZJWEVEX1RJTUVfU1RFUCA9IDEgLyAxMjA7XHJcbiAgICAgICAgLy8gY2MuUGh5c2ljc01hbmFnZXIuUE9TSVRJT05fSVRFUkFUSU9OUyA9IDIwO1xyXG4gICAgICAgIC8vQHRzLWlnbm9yZVxyXG4gICAgICAgIFxyXG4gICAgICAgIGNjLmludGVybmFsLmlucHV0TWFuYWdlci5fbWF4VG91Y2hlcyA9IDFcclxuXHJcbiAgICAgICAgbGV0IG1hbmFnZXIgPSBjYy5kaXJlY3Rvci5nZXRDb2xsaXNpb25NYW5hZ2VyKCk7XHJcbiAgICAgICAgbWFuYWdlci5lbmFibGVkID0gdHJ1ZTtcclxuICAgICAgICB0aGlzLnNldFdYKCk7XHJcblxyXG4gICAgICAgIGNjLmRlYnVnLnNldERpc3BsYXlTdGF0cyhmYWxzZSk7XHJcblxyXG5cclxuICAgICAgICBjYy50d2Vlbih0aGlzLm5vZGUxKVxyXG4gICAgICAgIC5kZWxheSgwICogMC4zKSBcclxuICAgICAgICAudG8oMC4zLCB7c2NhbGU6IDF9KVxyXG4gICAgICAgIC50bygwLjMsIHtzY2FsZTogMS4zfSlcclxuICAgICAgICAudG8oMC4zLCB7c2NhbGU6IDF9KVxyXG4gICAgICAgIC51bmlvbigpXHJcbiAgICAgICAgLnJlcGVhdEZvcmV2ZXIoKVxyXG4gICAgICAgIC5zdGFydCgpO1xyXG5cclxuICAgICAgICBjYy50d2Vlbih0aGlzLm5vZGUyKVxyXG4gICAgICAgIC5kZWxheSgxICogMC4zKSBcclxuICAgICAgICAudG8oMC4zLCB7c2NhbGU6IDF9KVxyXG4gICAgICAgIC50bygwLjMsIHtzY2FsZTogMS4zfSlcclxuICAgICAgICAudG8oMC4zLCB7c2NhbGU6IDF9KVxyXG4gICAgICAgIC51bmlvbigpXHJcbiAgICAgICAgLnJlcGVhdEZvcmV2ZXIoKVxyXG4gICAgICAgIC5zdGFydCgpO1xyXG5cclxuICAgICAgICBjYy50d2Vlbih0aGlzLm5vZGUzKVxyXG4gICAgICAgIC5kZWxheSgyICogMC4zKSBcclxuICAgICAgICAudG8oMC4zLCB7c2NhbGU6IDF9KVxyXG4gICAgICAgIC50bygwLjMsIHtzY2FsZTogMS4zfSlcclxuICAgICAgICAudG8oMC4zLCB7c2NhbGU6IDF9KVxyXG4gICAgICAgIC51bmlvbigpXHJcbiAgICAgICAgLnJlcGVhdEZvcmV2ZXIoKVxyXG4gICAgICAgIC5zdGFydCgpO1xyXG5cclxuICAgIH1cclxuXHJcbiAgICBzZXRXWCgpe1xyXG4gICAgICAgIC8vQHRzLWlnbm9yZVxyXG4gICAgICAgaWYgKHR5cGVvZiB3eCAhPT0gJ3VuZGVmaW5lZCcgJiYgd3ggIT09IG51bGwpIHsgLy8g5Yik5pat5piv5ZCm5Zyo5b6u5L+h546v5aKDXHJcbiAgICAgICAgICAgIHd4LnNldFByZWZlcnJlZEZyYW1lc1BlclNlY29uZCg2MCk7XHJcbiAgICAgICAgXHJcblxyXG4gICAgICAgICAgICAvLyAvLyDorr7nva7ovazlj5HmjInpkq7ngrnlh7vlkI7nmoTlm57osINcclxuICAgICAgICAgICAgLy8gd3gub25TaGFyZUFwcE1lc3NhZ2UoKCkgPT4ge1xyXG4gICAgICAgICAgICAvLyAgICAgcmV0dXJuIHtcclxuICAgICAgICAgICAgLy8gICAgICAgICB0aXRsZTogJ+S9oOaDs+eOqeS4iuaAjuagt+eahOa4uOaIj++8nycsXHJcbiAgICAgICAgICAgIC8vICAgICAgICAgaW1hZ2VVcmw6ICcnLFxyXG4gICAgICAgICAgICAvLyAgICAgICAgIHF1ZXJ5OiAnJ1xyXG4gICAgICAgICAgICAvLyAgICAgfTtcclxuICAgICAgICAgICAgLy8gfSk7XHJcblxyXG4gICAgICAgICAgICB3eC5vblNoYXJlQXBwTWVzc2FnZShmdW5jdGlvbiAoKSB7XHJcbiAgICAgICAgICAgIC8vIOeUqOaIt+eCueWHu+S6huKAnOi9rOWPkeKAneaMiemSrlxyXG4gICAgICAgICAgICByZXR1cm4ge1xyXG4gICAgICAgICAgICAgICAgdGl0bGU6ICfkvaDmg7PnjqnkuIrmgI7moLfnmoTmuLjmiI/vvJ8nXHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfSlcclxuXHJcblxyXG4gICAgICAgICAgICAvLyDnm5HlkKzliIbkuqvliLDmnIvlj4vlnIjkuovku7ZcclxuICAgICAgICAgICAgLy9AdHMtaWdub3JlXHJcbiAgICAgICAgICAgIHd4Lm9uU2hhcmVUaW1lbGluZSgoKSA9PiB7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4ge1xyXG4gICAgICAgICAgICAgICAgICAgIHRpdGxlOiAn5L2g5oOz546p5LiK5oCO5qC355qE5ri45oiP77yfJ1xyXG4gICAgICAgICAgICAgICAgfTtcclxuICAgICAgICAgICAgfSk7XHJcblxyXG5cclxuXHJcblxyXG4gICAgICAgICAgICB3eC5zaG93U2hhcmVNZW51KCgpID0+IHtcclxuICAgICAgICAgICAgICAgIHJldHVybiB7XHJcbiAgICAgICAgICAgICAgICAgICAgdGl0bGU6ICfkvaDmg7PnjqnkuIrmgI7moLfnmoTmuLjmiI/vvJ8nLFxyXG4gICAgICAgICAgICAgICAgICAgIGltYWdlVXJsOiAnJyxcclxuICAgICAgICAgICAgICAgICAgICBxdWVyeTogJydcclxuICAgICAgICAgICAgICAgIH07XHJcbiAgICAgICAgICAgIH0pO1xyXG5cclxuXHJcbiAgICAgICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgd3guc2hvd1NoYXJlTWVudSh7XHJcbiAgICAgICAgICAgICAgICAgICAgbWVudXM6IFsnc2hhcmVBcHBNZXNzYWdlJywgJ3NoYXJlVGltZWxpbmUnXVxyXG4gICAgICAgICAgICAgICAgfSlcclxuICAgICAgICAgICAgfSwgMjAwMCk7XHJcblxyXG5cclxuXHJcbiAgICAgICAgICAgIC8vIOiuvue9ruWIhuS6q+WIsOaci+WPi+WciFxyXG4gICAgICAgICAgICAvL0B0cy1pZ25vcmVcclxuICAgICAgICAgICAgLy8gd3gudXBkYXRlU2hhcmVNZW51KHtcclxuICAgICAgICAgICAgLy8gICAgIHdpdGhTaGFyZVRpY2tldDogdHJ1ZSxcclxuICAgICAgICAgICAgLy8gICAgIHN1Y2Nlc3M6IChkYXRhKSA9PiB7XHJcbiAgICAgICAgICAgIC8vICAgICAgICAgY29uc29sZS5sb2coJ+abtOaWsOWIhuS6q+iPnOWNleaIkOWKnycsIGRhdGEpO1xyXG4gICAgICAgICAgICAvLyAgICAgfSxcclxuICAgICAgICAgICAgLy8gICAgIGZhaWw6IChkYXRhKSA9PiB7XHJcbiAgICAgICAgICAgIC8vICAgICAgICAgY29uc29sZS5sb2coJ+abtOaWsOWIhuS6q+iPnOWNleWksei0pScsIGRhdGEpO1xyXG4gICAgICAgICAgICAvLyAgICAgfSxcclxuICAgICAgICAgICAgLy8gICAgIGNvbXBsZXRlOiAoZGF0YSkgPT4ge1xyXG4gICAgICAgICAgICAvLyAgICAgICAgIGNvbnNvbGUubG9nKCfmm7TmlrDliIbkuqvoj5zljZXlrozmiJAnLCBkYXRhKTtcclxuICAgICAgICAgICAgLy8gICAgIH1cclxuICAgICAgICAgICAgLy8gfSk7XHJcblxyXG5cclxuXHJcbiAgICAgICAgICAgIC8vQHRzLWlnbm9yZVxyXG4gICAgICAgIH1cclxuICAgIFxyXG4gICAgfVxyXG5cclxuICAgIC8v5Yik5pat5p2l5rqQXHJcbiAgICBjb250YWluc1RyYWluKHN0cikge1xyXG4gICAgXHJcbiAgICAgICAgcmV0dXJuIC9mcm9tPXRyYWluL2kudGVzdChzdHIpO1xyXG4gICAgfVxyXG5cclxuICAgIC8v5byA5aeL5ri45oiP77yM6Lez6L2s6Iez5byV5a+86aG16Z2iXHJcbiAgICBzdGFydEdhbWUoKXtcclxuICAgICAgICBjYy5kaXJlY3Rvci5sb2FkU2NlbmUoXCJHYW1lU2NlbmVcIik7XHJcbiAgICAgICAgLy8gY2MuZGlyZWN0b3IubG9hZFNjZW5lKFwiR3VpZGVTY2VuZVwiKTtcclxuICAgIH1cclxuICAgIC8v5aSH55So77yM55So5p2l5rWL6K+V6Lez6L2sIOaMh+WumuWFs+WNoVxyXG4gICAgY2xpY2tCdG4oZXZlbnQsZGF0YSl7XHJcbiAgICAgICAgY2MuZnguR2FtZUNvbmZpZy5HTV9JTkZPLmN1c3RvbSA9IHBhcnNlSW50KGRhdGEpO1xyXG4gICAgICAgIGNjLmRpcmVjdG9yLmxvYWRTY2VuZShcIkdhbWVTY2VuZVwiKTtcclxuICAgIH0gICBcclxuICAgIC8v5omT5byA5o6S6KGM5qacXHJcbiAgICBvcGVuUmFuaygpe1xyXG4gICAgICAgIGNjLmRpcmVjdG9yLmxvYWRTY2VuZShcIlJhbmtTY2VuZVwiKTtcclxuICAgIH1cclxuXHJcbiAgICBcclxuICAgIHByb3RlY3RlZCB1cGRhdGUoZHQ6IG51bWJlcik6IHZvaWQge1xyXG4gICAgfVxyXG4gICAgXHJcbi8vICAgICAz5pyIMTfml6UgLSAz5pyIMjHml6Ug5bel5L2c5a6M5oiQ5YaF5a65XHJcblxyXG4vLyAx77ya5ri45oiP5qGG5p625pCt5bu6XHJcbi8vIDLvvJrliLbkvZwxOOS4quWfuuehgOaWueWdl+mihOWItuS9kyAo5pa55Z2X5Y+v57yW6L6R6aKc6Imy5LiO6YGT5YW35ZKM54q25oCBKVxyXG4vLyAz77ya5a6M5oiQ5Zyw5Zu+55qE5pCt5bu677yM5Y+v6YWN572uOCo45Lul5YaF77yM5Lu75oSP57uE5ZCI77yM5YyF5ous5Y+v57y65Y+j5ZKM6Zqc56KN54mp6YWN572uXHJcbi8vIDTvvJrlrozmiJDlnLDlm77lopnpnaLlu7rnq4vvvIzmoLnmja4g4oaRM+S4iumdouaehOW7uueahOWcsOWbvuiHquWKqOeUn+aIkOWimeS9k+OAglxyXG4vLyA177ya5YGa5a6M5pa55Z2X55qE5Z+656GA56e75Yqo77yM6Lef6ZqP5omL5oyH77yM6YGH5Yiw5pa55Z2X5oiW6ICF5aKZ5aOB5oiW6ICF6Zqc56KN54mp6Zi756KN56e75Yqo44CCXHJcbi8vIDbvvJrmlrnlnZfnmoToh6rliqjokL3ngrnlgZrlrowxMeS4quWfuuehgOaWueWdl+eahO+8iOacquWBmuWujOi/mOW3rjEx5Liq77yJXHJcblxyXG4vLyAz5pyIMjTml6UgLSAz5pyIMjjml6Ug6aKE6K6h5a6M5oiQ55uu5qCHXHJcblxyXG4vLyAx77ya5a6M5oiQ5YWo6YOo5pa55Z2X55qE6JC954K544CCXHJcbi8vIDLvvJrlrozmiJDpl6jnmoTmkK3lu7rvvIzpl6jlj6/pgInpopzoibLvvIzlj6/pgInlvIDlhbPmiJbogIXmmJ/mmJ/nrYnnibnmrornirbmgIFcclxuLy8gM++8muWujOaIkOaWueWdl+mAmui/h+mXqOeahOa4uOaIj+mAu+i+ke+8jOS9v+a4uOaIj+WPr+S7peacgOWfuuehgOi/kOihjOeOqei1t+adpVxyXG4vLyA077ya5Ye6NeWFs+eJiOacrO+8jOmFjeWQiOWwj+eZveWkh+ahiOWuoeaguOOAglxyXG4vLyA177ya5qC55o2u5pa55Z2X77yM5Zyw5Zu+77yM5Lul5Y+K6YGT5YW377yM5Yi25L2c5Zyw5Zu+57yW6L6R5ZmoICjmlrnlnZflkozlnLDlm77liLbkvZznmoTml7blgJnpg73lt7Lnu4/ogIPomZHliLDnvJbovpHlmajnmoTpnIDmsYLkuoYpIFxyXG4vLyBcdOS8mOWFiOWItuS9nO+8jOWQjue7reW8gOWPkeaLk+WxleeOqeazleWKn+iDveaXtu+8jOWwj+eZveWPr+WQjOatpei/m+ihjOWItuS9nOWFs+WNoeOAglxyXG59XHJcbiJdfQ== +//------QC-SOURCE-SPLIT------ + + (function() { + var nodeEnv = typeof require !== 'undefined' && typeof process !== 'undefined'; + var __module = nodeEnv ? module : {exports:{}}; + var __filename = 'preview-scripts/assets/Script/JiaZai.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, '1dc93b4fehOrpGgTkihBH4g', 'JiaZai'); +// Script/JiaZai.ts + +"use strict"; +// Learn TypeScript: +// - https://docs.cocos.com/creator/manual/en/scripting/typescript.html +// Learn Attribute: +// - https://docs.cocos.com/creator/manual/en/scripting/reference/attributes.html +// Learn life-cycle callbacks: +// - https://docs.cocos.com/creator/manual/en/scripting/life-cycle-callbacks.html +var __extends = (this && this.__extends) || (function () { + var extendStatics = function (d, b) { + extendStatics = Object.setPrototypeOf || + ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) || + function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; }; + return extendStatics(d, b); + }; + return function (d, b) { + extendStatics(d, b); + function __() { this.constructor = d; } + d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); + }; +})(); +var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) { + var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; + if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc); + else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; + return c > 3 && r && Object.defineProperty(target, key, r), r; +}; +Object.defineProperty(exports, "__esModule", { value: true }); +var GameManager_1 = require("./GameManager"); +var NumberToImage_1 = require("./NumberToImage"); +var MiniGameSdk_1 = require("./Sdk/MiniGameSdk"); +var lq_collide_system_1 = require("./lq_collide_system/lq_collide_system"); +var _a = cc._decorator, ccclass = _a.ccclass, property = _a.property; +var NewClass = /** @class */ (function (_super) { + __extends(NewClass, _super); + function NewClass() { + var _this = _super !== null && _super.apply(this, arguments) || this; + _this.node1 = null; + _this.node2 = null; + _this.node3 = null; + _this.Block_Color = []; + _this.custom = null; + _this.level = null; + _this.coin = null; + _this.Stamina = null; + return _this; + // update (dt) {} + } + // LIFE-CYCLE CALLBACKS: + NewClass.prototype.onLoad = function () { + cc.game.setFrameRate(63); + lq_collide_system_1.LQCollideSystem.is_enable = true; + // console.log("加载关卡配置2"); + // window.initMgr(); + GameManager_1.default._instance.Block_Color = this.Block_Color; + if (cc.fx.GameConfig.GM_INFO.first) { + console.log("————————准备注册事件", cc.fx.GameConfig.GM_INFO.openid); + if (cc.fx.GameConfig.GM_INFO.openid != "") { + console.log("————————发送注册事件"); + cc.fx.GameTool.shushu_Track("register"); + } + cc.fx.AudioManager._instance.playEffect("zhuan1", null); + this.node.getChildByName("zhuanchang").active = true; + this.node.getChildByName("zhuanchang").getComponent(sp.Skeleton).setAnimation(1, "up", false); + setTimeout(function () { + cc.fx.GameConfig.GM_INFO.first = false; + cc.director.loadScene("GameScene"); + }, 1000); + } + }; + NewClass.prototype.start = function () { + // console.log("已经进入Home界面"); + // console.log("金币",cc.fx.GameConfig.GM_INFO.coin); + // console.log("关卡",cc.fx.GameConfig.GM_INFO.level+1); + var _this = this; + cc.fx.GameTool.getHealth(null); + // cc.fx.GameConfig.LEVEL_INFO_init(false,0); + setTimeout(function () { + NumberToImage_1.default.numberToImageNodes((cc.fx.GameConfig.GM_INFO.level + 1), 25, 15, "big_", _this.level, false); + NumberToImage_1.default.numberToImageNodes(cc.fx.GameConfig.GM_INFO.coin, 30, 15, "coin_", _this.coin, true); + _this.setHealthInfo(); + }, 0); + if (cc.fx.GameConfig.GM_INFO.gameState) { + this.node.getChildByName("zhuanchang").active = true; + setTimeout(function () { + cc.fx.AudioManager._instance.playEffect("zhuan2", null); + _this.node.getChildByName("zhuanchang").getComponent(sp.Skeleton).setAnimation(1, "down", false); + _this.node.getChildByName("zhuanchang").getComponent(sp.Skeleton).setCompleteListener(function (entry) { + if (entry.animation.name === "down" && !cc.fx.GameConfig.GM_INFO.first) { + // 动画播放结束后执行的逻辑 + _this.node.getChildByName("zhuanchang").active = false; + } + }); + }, 500); + } + else { + if (!cc.fx.GameConfig.GM_INFO.first) + this.node.getChildByName("zhuanchang").active = false; + } + }; + //开始倒计时 + NewClass.prototype.startTimeCutDown = function () { + this.scheduleCallback = function () { + var _this = this; + if (this.pause) + return; + if (cc.fx.GameConfig.GM_INFO.min_Time <= 0) { + this.stopTimeCutDown(); + var timeTemp = cc.fx.GameTool.getTimeMargin(cc.fx.GameConfig.GM_INFO.min_Time); + this.Stamina.getChildByName("time").getComponent(cc.Label).string = timeTemp; + cc.fx.GameTool.setUserHealth(1, function (data) { + cc.fx.GameTool.getHealth(null); + _this.setHealthInfo(); + }); + } + else { + cc.fx.GameConfig.GM_INFO.min_Time -= 1; + var timeTemp = cc.fx.GameTool.getTimeMargin(cc.fx.GameConfig.GM_INFO.min_Time); + this.Stamina.getChildByName("time").getComponent(cc.Label).string = timeTemp; + } + }.bind(this); + this.schedule(this.scheduleCallback, 1); + }; + // 停止倒计时 + NewClass.prototype.stopTimeCutDown = function () { + if (this.scheduleCallback) { + this.unschedule(this.scheduleCallback); + } + }; + NewClass.prototype.setHealthInfo = function () { + if (cc.fx.GameConfig.GM_INFO.hp == 5) { + this.Stamina.getChildByName("man").active = true; + this.Stamina.getChildByName("health").active = false; + this.Stamina.getChildByName("time").active = false; + } + else { + this.Stamina.getChildByName("man").active = false; + this.Stamina.getChildByName("health").active = true; + NumberToImage_1.default.numberToImageNodes((cc.fx.GameConfig.GM_INFO.hp), 25, 15, "coin_", this.Stamina.getChildByName("health"), false); + this.Stamina.getChildByName("time").active = true; + if (cc.fx.GameConfig.GM_INFO.min_Time != 0) { + var time = cc.fx.GameTool.getTimeMargin(cc.fx.GameConfig.GM_INFO.min_Time); + this.Stamina.getChildByName("time").getComponent(cc.Label).string = time; + this.startTimeCutDown(); + } + } + }; + NewClass.prototype.startGame = function () { + cc.fx.AudioManager._instance.playEffect("anniu_Big", null); + if (cc.fx.GameConfig.GM_INFO.hp < 1) { + MiniGameSdk_1.MiniGameSdk.API.showToast("体力值不足"); + return; + } + if (this.node.getChildByName("Load").getChildByName("startBtn").getComponent("btnControl")._touch) { + this.node.getChildByName("Load").getChildByName("startBtn").getComponent("btnControl").setTouch(false); + // if(this.custom.string != ""){ + // cc.fx.GameConfig.GM_INFO.level = parseInt(this.custom.string) - 1; + // // cc.fx.StorageMessage.setStorage("level",cc.fx.GameConfig.GM_INFO.level.toString()); + // cc.fx.GameConfig.LEVEL_INFO_init(true); + // } + // else{ + cc.fx.AudioManager._instance.playEffect("zhuan1", null); + this.node.getChildByName("zhuanchang").active = true; + this.node.getChildByName("zhuanchang").getComponent(sp.Skeleton).setAnimation(1, "up", false); + cc.fx.GameConfig.LEVEL_INFO_init(true, 1000); + // } + } + }; + //打开商店 + NewClass.prototype.openShop = function () { + var _this = this; + // 加载 shop bundle + cc.assetManager.loadBundle('shop', function (err, bundle) { + bundle.load('prefab/shop', cc.Prefab, function (err, prefab) { + if (err) { + cc.error(err.message || err); + return; + } + if (prefab) { + var shopNode = cc.instantiate(prefab); + _this.node.addChild(shopNode); + console.log("shopNode parent:", shopNode.parent); + } + }); + }); + }; + NewClass.prototype.closeRank = function () { + this.node.getChildByName("Rank").active = false; + }; + NewClass.prototype.openRank = function () { + this.node.getChildByName("Rank").active = true; + }; + NewClass.prototype.openReward = function () { + this.node.getChildByName("Reward").active = true; + }; + NewClass.prototype.clickShop = function () { + // 假设已经获取到了 userId 和 productId + var userId = cc.fx.GameConfig.GM_INFO.openid; + var productId = '1'; + console.log("即将创建createorder"); + //@ts-ignore + wx.cloud.callFunction({ + name: "createOrder", + data: { + "userId": userId, + "productId": productId, + }, + success: function (res) { + // 取得云函数返回的订单信息 + console.log("createOrder结果:", res.result); + var payment = res.result.paymentResult.payment; + console.log("payment:", payment); + // 调起微信客户端支付 + //@ts-ignore + // 调起微信客户端支付 + //@ts-ignore + wx.requestPayment({ + // 时间戳,从 1970 年 1 月 1 日 00:00:00 至今的秒数,即当前的时间 + timeStamp: payment.timeStamp, + // 随机字符串,长度为32个字符以下 + nonceStr: payment.nonceStr, + // 统一下单接口返回的 prepay_id 参数值 + package: payment.package, + // 签名算法,暂支持 MD5、HMAC-SHA256 + signType: payment.signType || 'MD5', + // 支付签名 + paySign: payment.paySign, + success: function (res) { + /* 成功回调 */ + console.log("支付成功", res); + }, + fail: function (res) { + /* 失败回调 */ + console.log("支付失败", res); + }, + complete: function (res) { + console.log("支付完成", res); + } + }); + }, + }); + }; + NewClass.prototype.openPause = function () { + cc.fx.AudioManager._instance.playEffect("anniu_little", null); + console.log(cc.fx.GameConfig.GM_INFO); + if (cc.fx.GameConfig.GM_INFO.openid == undefined) { + console.log(cc.fx.GameConfig.GM_INFO.openid); + cc.fx.GameConfig.GM_INFO.openid = ""; + } + this.node.getChildByName("Pause").active = true; + this.node.getChildByName("Pause").getChildByName("openID").getComponent(cc.Label).string = cc.fx.GameConfig.GM_INFO.openid; + }; + NewClass.prototype.closePause = function () { + cc.fx.AudioManager._instance.playEffect("anniu_little", null); + this.node.getChildByName("Pause").active = false; + }; + NewClass.prototype.closeReward = function () { + this.node.getChildByName("Reward").active = false; + }; + NewClass.prototype.openStamina = function () { + this.node.getChildByName("Stamina").active = true; + }; + NewClass.prototype.closeStamina = function () { + this.node.getChildByName("Stamina").active = false; + }; + __decorate([ + property(cc.Node) + ], NewClass.prototype, "node1", void 0); + __decorate([ + property(cc.Node) + ], NewClass.prototype, "node2", void 0); + __decorate([ + property(cc.Node) + ], NewClass.prototype, "node3", void 0); + __decorate([ + property({ type: [cc.SpriteAtlas], tooltip: "方块颜色" }) + ], NewClass.prototype, "Block_Color", void 0); + __decorate([ + property(cc.EditBox) + ], NewClass.prototype, "custom", void 0); + __decorate([ + property(cc.Node) + ], NewClass.prototype, "level", void 0); + __decorate([ + property(cc.Node) + ], NewClass.prototype, "coin", void 0); + __decorate([ + property(cc.Node) + ], NewClass.prototype, "Stamina", void 0); + NewClass = __decorate([ + ccclass + ], NewClass); + return NewClass; +}(cc.Component)); +exports.default = NewClass; + +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,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImFzc2V0c1xcU2NyaXB0XFxKaWFaYWkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLG9CQUFvQjtBQUNwQix3RUFBd0U7QUFDeEUsbUJBQW1CO0FBQ25CLGtGQUFrRjtBQUNsRiw4QkFBOEI7QUFDOUIsa0ZBQWtGOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFFbEYsNkNBQXdDO0FBQ3hDLGlEQUE0QztBQUM1QyxpREFBZ0Q7QUFDaEQsMkVBQXdFO0FBQ2xFLElBQUEsS0FBd0IsRUFBRSxDQUFDLFVBQVUsRUFBbkMsT0FBTyxhQUFBLEVBQUUsUUFBUSxjQUFrQixDQUFDO0FBRzVDO0lBQXNDLDRCQUFZO0lBQWxEO1FBQUEscUVBaVJDO1FBOVFHLFdBQUssR0FBWSxJQUFJLENBQUM7UUFHdEIsV0FBSyxHQUFZLElBQUksQ0FBQztRQUd0QixXQUFLLEdBQVksSUFBSSxDQUFDO1FBS3RCLGlCQUFXLEdBQTBCLEVBQUUsQ0FBQztRQUd4QyxZQUFNLEdBQWUsSUFBSSxDQUFDO1FBSzFCLFdBQUssR0FBWSxJQUFJLENBQUM7UUFHdEIsVUFBSSxHQUFZLElBQUksQ0FBQztRQUdyQixhQUFPLEdBQVksSUFBSSxDQUFDOztRQW9QeEIsaUJBQWlCO0lBQ3JCLENBQUM7SUFsUEcsd0JBQXdCO0lBRXhCLHlCQUFNLEdBQU47UUFDSSxFQUFFLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUN6QixtQ0FBZSxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUM7UUFDakMsMEJBQTBCO1FBQzFCLG9CQUFvQjtRQUNwQixxQkFBVyxDQUFDLFNBQVMsQ0FBQyxXQUFXLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQztRQUNyRCxJQUFJLEVBQUUsQ0FBQyxFQUFFLENBQUMsVUFBVSxDQUFDLE9BQU8sQ0FBQyxLQUFLLEVBQUU7WUFDaEMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxnQkFBZ0IsRUFBRSxFQUFFLENBQUMsRUFBRSxDQUFD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R0FBRyxLQUFLLENBQUM7SUFDdEQsQ0FBQztJQUVELDhCQUFXLEdBQVg7UUFDSSxJQUFJLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFDO0lBQ3RELENBQUM7SUFFRCwrQkFBWSxHQUFaO1FBQ0ksSUFBSSxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsU0FBUyxDQUFDLENBQUMsTUFBTSxHQUFHLEtBQUssQ0FBQztJQUN2RCxDQUFDO0lBMVFEO1FBREMsUUFBUSxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUM7MkNBQ0k7SUFHdEI7UUFEQyxRQUFRLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQzsyQ0FDSTtJQUd0QjtRQURDLFFBQVEsQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDOzJDQUNJO0lBS3RCO1FBREMsUUFBUSxDQUFDLEVBQUUsSUFBSSxFQUFFLENBQUMsRUFBRSxDQUFDLFdBQVcsQ0FBQyxFQUFFLE9BQU8sRUFBRSxNQUFNLEVBQUUsQ0FBQztpREFDZDtJQUd4QztRQURDLFFBQVEsQ0FBQyxFQUFFLENBQUMsT0FBTyxDQUFDOzRDQUNLO0lBSzFCO1FBREMsUUFBUSxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUM7MkNBQ0k7SUFHdEI7UUFEQyxRQUFRLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQzswQ0FDRztJQUdyQjtRQURDLFFBQVEsQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDOzZDQUNNO0lBNUJQLFFBQVE7UUFENUIsT0FBTztPQUNhLFFBQVEsQ0FpUjVCO0lBQUQsZUFBQztDQWpSRCxBQWlSQyxDQWpScUMsRUFBRSxDQUFDLFNBQVMsR0FpUmpEO2tCQWpSb0IsUUFBUSIsImZpbGUiOiIiLCJzb3VyY2VSb290IjoiLyIsInNvdXJjZXNDb250ZW50IjpbIi8vIExlYXJuIFR5cGVTY3JpcHQ6XHJcbi8vICAtIGh0dHBzOi8vZG9jcy5jb2Nvcy5jb20vY3JlYXRvci9tYW51YWwvZW4vc2NyaXB0aW5nL3R5cGVzY3JpcHQuaHRtbFxyXG4vLyBMZWFybiBBdHRyaWJ1dGU6XHJcbi8vICAtIGh0dHBzOi8vZG9jcy5jb2Nvcy5jb20vY3JlYXRvci9tYW51YWwvZW4vc2NyaXB0aW5nL3JlZmVyZW5jZS9hdHRyaWJ1dGVzLmh0bWxcclxuLy8gTGVhcm4gbGlmZS1jeWNsZSBjYWxsYmFja3M6XHJcbi8vICAtIGh0dHBzOi8vZG9jcy5jb2Nvcy5jb20vY3JlYXRvci9tYW51YWwvZW4vc2NyaXB0aW5nL2xpZmUtY3ljbGUtY2FsbGJhY2tzLmh0bWxcclxuXHJcbmltcG9ydCBHYW1lTWFuYWdlciBmcm9tIFwiLi9HYW1lTWFuYWdlclwiO1xyXG5pbXBvcnQgTnVtYmVyVG9JbWFnZSBmcm9tIFwiLi9OdW1iZXJUb0ltYWdlXCI7XHJcbmltcG9ydCB7IE1pbmlHYW1lU2RrIH0gZnJvbSBcIi4vU2RrL01pbmlHYW1lU2RrXCI7XHJcbmltcG9ydCB7IExRQ29sbGlkZVN5c3RlbSB9IGZyb20gXCIuL2xxX2NvbGxpZGVfc3lzdGVtL2xxX2NvbGxpZGVfc3lzdGVtXCI7XHJcbmNvbnN0IHsgY2NjbGFzcywgcHJvcGVydHkgfSA9IGNjLl9kZWNvcmF0b3I7XHJcblxyXG5AY2NjbGFzc1xyXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBOZXdDbGFzcyBleHRlbmRzIGNjLkNvbXBvbmVudCB7XHJcblxyXG4gICAgQHByb3BlcnR5KGNjLk5vZGUpXHJcbiAgICBub2RlMTogY2MuTm9kZSA9IG51bGw7XHJcblxyXG4gICAgQHByb3BlcnR5KGNjLk5vZGUpXHJcbiAgICBub2RlMjogY2MuTm9kZSA9IG51bGw7XHJcblxyXG4gICAgQHByb3BlcnR5KGNjLk5vZGUpXHJcbiAgICBub2RlMzogY2MuTm9kZSA9IG51bGw7XHJcblxyXG5cclxuXHJcbiAgICBAcHJvcGVydHkoeyB0eXBlOiBbY2MuU3ByaXRlQXRsYXNdLCB0b29sdGlwOiBcIuaWueWdl+minOiJslwiIH0pXHJcbiAgICBCbG9ja19Db2xvcjogQXJyYXk8Y2MuU3ByaXRlQXRsYXM+ID0gW107XHJcblxyXG4gICAgQHByb3BlcnR5KGNjLkVkaXRCb3gpXHJcbiAgICBjdXN0b206IGNjLkVkaXRCb3ggPSBudWxsO1xyXG5cclxuXHJcblxyXG4gICAgQHByb3BlcnR5KGNjLk5vZGUpXHJcbiAgICBsZXZlbDogY2MuTm9kZSA9IG51bGw7XHJcblxyXG4gICAgQHByb3BlcnR5KGNjLk5vZGUpXHJcbiAgICBjb2luOiBjYy5Ob2RlID0gbnVsbDtcclxuXHJcbiAgICBAcHJvcGVydHkoY2MuTm9kZSlcclxuICAgIFN0YW1pbmE6IGNjLk5vZGUgPSBudWxsO1xyXG4gICAgc2NoZWR1bGVDYWxsYmFjazogYW55O1xyXG5cclxuICAgIC8vIExJRkUtQ1lDTEUgQ0FMTEJBQ0tTOlxyXG5cclxuICAgIG9uTG9hZCgpIHtcclxuICAgICAgICBjYy5nYW1lLnNldEZyYW1lUmF0ZSg2Myk7XHJcbiAgICAgICAgTFFDb2xsaWRlU3lzdGVtLmlzX2VuYWJsZSA9IHRydWU7XHJcbiAgICAgICAgLy8gY29uc29sZS5sb2coXCLliqDovb3lhbPljaHphY3nva4yXCIpO1xyXG4gICAgICAgIC8vIHdpbmRvdy5pbml0TWdyKCk7XHJcbiAgICAgICAgR2FtZU1hbmFnZXIuX2luc3RhbmNlLkJsb2NrX0NvbG9yID0gdGhpcy5CbG9ja19Db2xvcjtcclxuICAgICAgICBpZiAoY2MuZnguR2FtZUNvbmZpZy5HTV9JTkZPLmZpcnN0KSB7XHJcbiAgICAgICAgICAgIGNvbnNvbGUubG9nKFwi4oCU4oCU4oCU4oCU4oCU4oCU4oCU4oCU5YeG5aSH5rOo5YaM5LqL5Lu2XCIsIGNjLmZ4LkdhbWVDb25maWcuR01fSU5GTy5vcGVuaWQpO1xyXG4gICAgICAgICAgICBpZiAoY2MuZnguR2FtZUNvbmZpZy5HTV9JTkZPLm9wZW5pZCAhPSBcIlwiKSB7XHJcbiAgICAgICAgICAgICAgICBjb25zb2xlLmxvZyhcIuKAlOKAlOKAlOKAlOKAlOKAlOKAlOKAlOWPkemAgeazqOWGjOS6i+S7tlwiKTtcclxuICAgICAgICAgICAgICAgIGNjLmZ4LkdhbWVUb29sLnNodXNodV9UcmFjayhcInJlZ2lzdGVyXCIpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGNjLmZ4LkF1ZGlvTWFuYWdlci5faW5zdGFuY2UucGxheUVmZmVjdChcInpodWFuMVwiLCBudWxsKTtcclxuICAgICAgICAgICAgdGhpcy5ub2RlLmdldENoaWxkQnlOYW1lKFwiemh1YW5jaGFuZ1wiKS5hY3RpdmUgPSB0cnVlO1xyXG4gICAgICAgICAgICB0aGlzLm5vZGUuZ2V0Q2hpbGRCeU5hbWUoXCJ6aHVhbmNoYW5nXCIpLmdldENvbXBvbmVudChzcC5Ta2VsZXRvbikuc2V0QW5pbWF0aW9uKDEsIFwidXBcIiwgZmFsc2UpO1xyXG4gICAgICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgICAgICAgICAgIGNjLmZ4LkdhbWVDb25maWcuR01fSU5GTy5maXJzdCA9IGZhbHNlO1xyXG4gICAgICAgICAgICAgICAgY2MuZGlyZWN0b3IubG9hZFNjZW5lKFwiR2FtZVNjZW5lXCIpO1xyXG4gICAgICAgICAgICB9LCAxMDAwKTtcclxuXHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHN0YXJ0KCkge1xyXG4gICAgICAgIC8vIGNvbnNvbGUubG9nKFwi5bey57uP6L+b5YWlSG9tZeeVjOmdolwiKTtcclxuICAgICAgICAvLyBjb25zb2xlLmxvZyhcIumHkeW4gVwiLGNjLmZ4LkdhbWVDb25maWcuR01fSU5GTy5jb2luKTtcclxuICAgICAgICAvLyBjb25zb2xlLmxvZyhcIuWFs+WNoVwiLGNjLmZ4LkdhbWVDb25maWcuR01fSU5GTy5sZXZlbCsxKTtcclxuXHJcbiAgICAgICAgY2MuZnguR2FtZVRvb2wuZ2V0SGVhbHRoKG51bGwpO1xyXG4gICAgICAgIC8vIGNjLmZ4LkdhbWVDb25maWcuTEVWRUxfSU5GT19pbml0KGZhbHNlLDApO1xyXG4gICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICAgICAgICBOdW1iZXJUb0ltYWdlLm51bWJlclRvSW1hZ2VOb2RlcygoY2MuZnguR2FtZUNvbmZpZy5HTV9JTkZPLmxldmVsICsgMSksIDI1LCAxNSwgXCJiaWdfXCIsIHRoaXMubGV2ZWwsIGZhbHNlKTtcclxuICAgICAgICAgICAgTnVtYmVyVG9JbWFnZS5udW1iZXJUb0ltYWdlTm9kZXMoY2MuZnguR2FtZUNvbmZpZy5HTV9JTkZPLmNvaW4sIDMwLCAxNSwgXCJjb2luX1wiLCB0aGlzLmNvaW4sIHRydWUpO1xyXG4gICAgICAgICAgICB0aGlzLnNldEhlYWx0aEluZm8oKTtcclxuICAgICAgICB9LCAwKTtcclxuICAgICAgICBpZiAoY2MuZnguR2FtZUNvbmZpZy5HTV9JTkZPLmdhbWVTdGF0ZSkge1xyXG4gICAgICAgICAgICB0aGlzLm5vZGUuZ2V0Q2hpbGRCeU5hbWUoXCJ6aHVhbmNoYW5nXCIpLmFjdGl2ZSA9IHRydWU7XHJcbiAgICAgICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgY2MuZnguQXVkaW9NYW5hZ2VyLl9pbnN0YW5jZS5wbGF5RWZmZWN0KFwiemh1YW4yXCIsIG51bGwpO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5ub2RlLmdldENoaWxkQnlOYW1lKFwiemh1YW5jaGFuZ1wiKS5nZXRDb21wb25lbnQoc3AuU2tlbGV0b24pLnNldEFuaW1hdGlvbigxLCBcImRvd25cIiwgZmFsc2UpO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5ub2RlLmdldENoaWxkQnlOYW1lKFwiemh1YW5jaGFuZ1wiKS5nZXRDb21wb25lbnQoc3AuU2tlbGV0b24pLnNldENvbXBsZXRlTGlzdGVuZXIoKGVudHJ5KSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKGVudHJ5LmFuaW1hdGlvbi5uYW1lID09PSBcImRvd25cIiAmJiAhY2MuZnguR2FtZUNvbmZpZy5HTV9JTkZPLmZpcnN0KSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIOWKqOeUu+aSreaUvue7k+adn+WQjuaJp+ihjOeahOmAu+i+kVxyXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLm5vZGUuZ2V0Q2hpbGRCeU5hbWUoXCJ6aHVhbmNoYW5nXCIpLmFjdGl2ZSA9IGZhbHNlO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICB9LCA1MDApO1xyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgaWYgKCFjYy5meC5HYW1lQ29uZmlnLkdNX0lORk8uZmlyc3QpXHJcbiAgICAgICAgICAgICAgICB0aGlzLm5vZGUuZ2V0Q2hpbGRCeU5hbWUoXCJ6aHVhbmNoYW5nXCIpLmFjdGl2ZSA9IGZhbHNlO1xyXG4gICAgICAgIH1cclxuXHJcblxyXG5cclxuICAgIH1cclxuXHJcbiAgICAvL+W8gOWni+WAkuiuoeaXtlxyXG4gICAgc3RhcnRUaW1lQ3V0RG93bigpIHtcclxuICAgICAgICB0aGlzLnNjaGVkdWxlQ2FsbGJhY2sgPSBmdW5jdGlvbiAoKSB7XHJcbiAgICAgICAgICAgIGlmICh0aGlzLnBhdXNlKSByZXR1cm47XHJcbiAgICAgICAgICAgIGlmIChjYy5meC5HYW1lQ29uZmlnLkdNX0lORk8ubWluX1RpbWUgPD0gMCkge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5zdG9wVGltZUN1dERvd24oKTtcclxuICAgICAgICAgICAgICAgIHZhciB0aW1lVGVtcCA9IGNjLmZ4LkdhbWVUb29sLmdldFRpbWVNYXJnaW4oY2MuZnguR2FtZUNvbmZpZy5HTV9JTkZPLm1pbl9UaW1lKTtcclxuICAgICAgICAgICAgICAgIHRoaXMuU3RhbWluYS5nZXRDaGlsZEJ5TmFtZShcInRpbWVcIikuZ2V0Q29tcG9uZW50KGNjLkxhYmVsKS5zdHJpbmcgPSB0aW1lVGVtcDtcclxuICAgICAgICAgICAgICAgIGNjLmZ4LkdhbWVUb29sLnNldFVzZXJIZWFsdGgoMSwgKGRhdGEpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICBjYy5meC5HYW1lVG9vbC5nZXRIZWFsdGgobnVsbCk7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5zZXRIZWFsdGhJbmZvKCk7XHJcbiAgICAgICAgICAgICAgICB9KVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgY2MuZnguR2FtZUNvbmZpZy5HTV9JTkZPLm1pbl9UaW1lIC09IDE7XHJcbiAgICAgICAgICAgICAgICB2YXIgdGltZVRlbXAgPSBjYy5meC5HYW1lVG9vbC5nZXRUaW1lTWFyZ2luKGNjLmZ4LkdhbWVDb25maWcuR01fSU5GTy5taW5fVGltZSk7XHJcbiAgICAgICAgICAgICAgICB0aGlzLlN0YW1pbmEuZ2V0Q2hpbGRCeU5hbWUoXCJ0aW1lXCIpLmdldENvbXBvbmVudChjYy5MYWJlbCkuc3RyaW5nID0gdGltZVRlbXA7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9LmJpbmQodGhpcyk7XHJcbiAgICAgICAgdGhpcy5zY2hlZHVsZSh0aGlzLnNjaGVkdWxlQ2FsbGJhY2ssIDEpO1xyXG4gICAgfVxyXG4gICAgLy8g5YGc5q2i5YCS6K6h5pe2XHJcbiAgICBzdG9wVGltZUN1dERvd24oKSB7XHJcbiAgICAgICAgaWYgKHRoaXMuc2NoZWR1bGVDYWxsYmFjaykge1xyXG4gICAgICAgICAgICB0aGlzLnVuc2NoZWR1bGUodGhpcy5zY2hlZHVsZUNhbGxiYWNrKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgc2V0SGVhbHRoSW5mbygpIHtcclxuICAgICAgICBpZiAoY2MuZnguR2FtZUNvbmZpZy5HTV9JTkZPLmhwID09IDUpIHtcclxuICAgICAgICAgICAgdGhpcy5TdGFtaW5hLmdldENoaWxkQnlOYW1lKFwibWFuXCIpLmFjdGl2ZSA9IHRydWU7XHJcbiAgICAgICAgICAgIHRoaXMuU3RhbWluYS5nZXRDaGlsZEJ5TmFtZShcImhlYWx0aFwiKS5hY3RpdmUgPSBmYWxzZTtcclxuICAgICAgICAgICAgdGhpcy5TdGFtaW5hLmdldENoaWxkQnlOYW1lKFwidGltZVwiKS5hY3RpdmUgPSBmYWxzZTtcclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgIHRoaXMuU3RhbWluYS5nZXRDaGlsZEJ5TmFtZShcIm1hblwiKS5hY3RpdmUgPSBmYWxzZTtcclxuICAgICAgICAgICAgdGhpcy5TdGFtaW5hLmdldENoaWxkQnlOYW1lKFwiaGVhbHRoXCIpLmFjdGl2ZSA9IHRydWU7XHJcbiAgICAgICAgICAgIE51bWJlclRvSW1hZ2UubnVtYmVyVG9JbWFnZU5vZGVzKChjYy5meC5HYW1lQ29uZmlnLkdNX0lORk8uaHApLCAyNSwgMTUsIFwiY29pbl9cIiwgdGhpcy5TdGFtaW5hLmdldENoaWxkQnlOYW1lKFwiaGVhbHRoXCIpLCBmYWxzZSk7XHJcbiAgICAgICAgICAgIHRoaXMuU3RhbWluYS5nZXRDaGlsZEJ5TmFtZShcInRpbWVcIikuYWN0aXZlID0gdHJ1ZTtcclxuICAgICAgICAgICAgaWYgKGNjLmZ4LkdhbWVDb25maWcuR01fSU5GTy5taW5fVGltZSAhPSAwKSB7XHJcbiAgICAgICAgICAgICAgICBsZXQgdGltZSA9IGNjLmZ4LkdhbWVUb29sLmdldFRpbWVNYXJnaW4oY2MuZnguR2FtZUNvbmZpZy5HTV9JTkZPLm1pbl9UaW1lKTtcclxuICAgICAgICAgICAgICAgIHRoaXMuU3RhbWluYS5nZXRDaGlsZEJ5TmFtZShcInRpbWVcIikuZ2V0Q29tcG9uZW50KGNjLkxhYmVsKS5zdHJpbmcgPSB0aW1lO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5zdGFydFRpbWVDdXREb3duKCk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG5cclxuICAgIHN0YXJ0R2FtZSgpIHtcclxuICAgICAgICBjYy5meC5BdWRpb01hbmFnZXIuX2luc3RhbmNlLnBsYXlFZmZlY3QoXCJhbm5pdV9CaWdcIiwgbnVsbCk7XHJcbiAgICAgICAgaWYgKGNjLmZ4LkdhbWVDb25maWcuR01fSU5GTy5ocCA8IDEpIHtcclxuICAgICAgICAgICAgTWluaUdhbWVTZGsuQVBJLnNob3dUb2FzdChcIuS9k+WKm+WAvOS4jei2s1wiKTtcclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAodGhpcy5ub2RlLmdldENoaWxkQnlOYW1lKFwiTG9hZFwiKS5nZXRDaGlsZEJ5TmFtZShcInN0YXJ0QnRuXCIpLmdldENvbXBvbmVudChcImJ0bkNvbnRyb2xcIikuX3RvdWNoKSB7XHJcbiAgICAgICAgICAgIHRoaXMubm9kZS5nZXRDaGlsZEJ5TmFtZShcIkxvYWRcIikuZ2V0Q2hpbGRCeU5hbWUoXCJzdGFydEJ0blwiKS5nZXRDb21wb25lbnQoXCJidG5Db250cm9sXCIpLnNldFRvdWNoKGZhbHNlKTtcclxuICAgICAgICAgICAgLy8gaWYodGhpcy5jdXN0b20uc3RyaW5nICE9IFwiXCIpe1xyXG4gICAgICAgICAgICAvLyAgICAgY2MuZnguR2FtZUNvbmZpZy5HTV9JTkZPLmxldmVsID0gcGFyc2VJbnQodGhpcy5jdXN0b20uc3RyaW5nKSAtIDE7XHJcbiAgICAgICAgICAgIC8vICAgICAvLyBjYy5meC5TdG9yYWdlTWVzc2FnZS5zZXRTdG9yYWdlKFwibGV2ZWxcIixjYy5meC5HYW1lQ29uZmlnLkdNX0lORk8ubGV2ZWwudG9TdHJpbmcoKSk7IFxyXG4gICAgICAgICAgICAvLyAgICAgY2MuZnguR2FtZUNvbmZpZy5MRVZFTF9JTkZPX2luaXQodHJ1ZSk7XHJcbiAgICAgICAgICAgIC8vIH1cclxuICAgICAgICAgICAgLy8gZWxzZXtcclxuICAgICAgICAgICAgY2MuZnguQXVkaW9NYW5hZ2VyLl9pbnN0YW5jZS5wbGF5RWZmZWN0KFwiemh1YW4xXCIsIG51bGwpO1xyXG4gICAgICAgICAgICB0aGlzLm5vZGUuZ2V0Q2hpbGRCeU5hbWUoXCJ6aHVhbmNoYW5nXCIpLmFjdGl2ZSA9IHRydWU7XHJcbiAgICAgICAgICAgIHRoaXMubm9kZS5nZXRDaGlsZEJ5TmFtZShcInpodWFuY2hhbmdcIikuZ2V0Q29tcG9uZW50KHNwLlNrZWxldG9uKS5zZXRBbmltYXRpb24oMSwgXCJ1cFwiLCBmYWxzZSk7XHJcbiAgICAgICAgICAgIGNjLmZ4LkdhbWVDb25maWcuTEVWRUxfSU5GT19pbml0KHRydWUsIDEwMDApO1xyXG4gICAgICAgICAgICAvLyB9XHJcbiAgICAgICAgfVxyXG5cclxuXHJcblxyXG4gICAgfVxyXG5cclxuICAgIC8v5omT5byA5ZWG5bqXXHJcbiAgICBvcGVuU2hvcCgpIHtcclxuICAgICAgICAvLyDliqDovb0gc2hvcCAgYnVuZGxlXHJcbiAgICAgICAgY2MuYXNzZXRNYW5hZ2VyLmxvYWRCdW5kbGUoJ3Nob3AnLCAoZXJyOiBFcnJvciwgYnVuZGxlOiBjYy5Bc3NldE1hbmFnZXIuQnVuZGxlKSA9PiB7XHJcbiAgICAgICAgICAgIGJ1bmRsZS5sb2FkKCdwcmVmYWIvc2hvcCcsIGNjLlByZWZhYiwgKGVycjogRXJyb3IsIHByZWZhYjogY2MuUHJlZmFiKSA9PiB7XHJcbiAgICAgICAgICAgICAgICBpZiAoZXJyKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgY2MuZXJyb3IoZXJyLm1lc3NhZ2UgfHwgZXJyKTtcclxuICAgICAgICAgICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBpZiAocHJlZmFiKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgY29uc3Qgc2hvcE5vZGUgPSBjYy5pbnN0YW50aWF0ZShwcmVmYWIpO1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMubm9kZS5hZGRDaGlsZChzaG9wTm9kZSk7XHJcbiAgICAgICAgICAgICAgICAgICAgY29uc29sZS5sb2coXCJzaG9wTm9kZSBwYXJlbnQ6XCIsIHNob3BOb2RlLnBhcmVudCk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG5cclxuICAgIGNsb3NlUmFuaygpIHtcclxuICAgICAgICB0aGlzLm5vZGUuZ2V0Q2hpbGRCeU5hbWUoXCJSYW5rXCIpLmFjdGl2ZSA9IGZhbHNlO1xyXG4gICAgfVxyXG5cclxuICAgIG9wZW5SYW5rKCkge1xyXG4gICAgICAgIHRoaXMubm9kZS5nZXRDaGlsZEJ5TmFtZShcIlJhbmtcIikuYWN0aXZlID0gdHJ1ZTtcclxuICAgIH1cclxuXHJcbiAgICBvcGVuUmV3YXJkKCkge1xyXG4gICAgICAgIHRoaXMubm9kZS5nZXRDaGlsZEJ5TmFtZShcIlJld2FyZFwiKS5hY3RpdmUgPSB0cnVlO1xyXG4gICAgfVxyXG5cclxuICAgIGNsaWNrU2hvcCgpIHtcclxuICAgICAgICAvLyDlgYforr7lt7Lnu4/ojrflj5bliLDkuoYgdXNlcklkIOWSjCBwcm9kdWN0SWRcclxuICAgICAgICBjb25zdCB1c2VySWQgPSBjYy5meC5HYW1lQ29uZmlnLkdNX0lORk8ub3BlbmlkO1xyXG4gICAgICAgIGNvbnN0IHByb2R1Y3RJZCA9ICcxJztcclxuICAgICAgICBjb25zb2xlLmxvZyhcIuWNs+WwhuWIm+W7umNyZWF0ZW9yZGVyXCIpO1xyXG4gICAgICAgIC8vQHRzLWlnbm9yZVxyXG4gICAgICAgIHd4LmNsb3VkLmNhbGxGdW5jdGlvbih7XHJcbiAgICAgICAgICAgIG5hbWU6IFwiY3JlYXRlT3JkZXJcIixcclxuICAgICAgICAgICAgZGF0YToge1xyXG4gICAgICAgICAgICAgICAgXCJ1c2VySWRcIjogdXNlcklkLFxyXG4gICAgICAgICAgICAgICAgXCJwcm9kdWN0SWRcIjogcHJvZHVjdElkLFxyXG4gICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICBzdWNjZXNzOiAocmVzKSA9PiB7XHJcbiAgICAgICAgICAgICAgICAvLyDlj5blvpfkupHlh73mlbDov5Tlm57nmoTorqLljZXkv6Hmga9cclxuICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKFwiY3JlYXRlT3JkZXLnu5Pmnpw6XCIsIHJlcy5yZXN1bHQpO1xyXG4gICAgICAgICAgICAgICAgY29uc3QgcGF5bWVudCA9IHJlcy5yZXN1bHQucGF5bWVudFJlc3VsdC5wYXltZW50O1xyXG4gICAgICAgICAgICAgICAgY29uc29sZS5sb2coXCJwYXltZW50OlwiLCBwYXltZW50KTtcclxuICAgICAgICAgICAgICAgIC8vIOiwg+i1t+W+ruS/oeWuouaIt+err+aUr+S7mFxyXG4gICAgICAgICAgICAgICAgLy9AdHMtaWdub3JlXHJcbiAgICAgICAgICAgICAgICAvLyDosIPotbflvq7kv6HlrqLmiLfnq6/mlK/ku5hcclxuICAgICAgICAgICAgICAgIC8vQHRzLWlnbm9yZVxyXG4gICAgICAgICAgICAgICAgd3gucmVxdWVzdFBheW1lbnQoe1xyXG4gICAgICAgICAgICAgICAgICAgIC8vIOaXtumXtOaIs++8jOS7jiAxOTcwIOW5tCAxIOaciCAxIOaXpSAwMDowMDowMCDoh7Pku4rnmoTnp5LmlbDvvIzljbPlvZPliY3nmoTml7bpl7RcclxuICAgICAgICAgICAgICAgICAgICB0aW1lU3RhbXA6IHBheW1lbnQudGltZVN0YW1wLFxyXG4gICAgICAgICAgICAgICAgICAgIC8vIOmaj+acuuWtl+espuS4su+8jOmVv+W6puS4ujMy5Liq5a2X56ym5Lul5LiLXHJcbiAgICAgICAgICAgICAgICAgICAgbm9uY2VTdHI6IHBheW1lbnQubm9uY2VTdHIsXHJcbiAgICAgICAgICAgICAgICAgICAgLy8g57uf5LiA5LiL5Y2V5o6l5Y+j6L+U5Zue55qEIHByZXBheV9pZCDlj4LmlbDlgLxcclxuICAgICAgICAgICAgICAgICAgICBwYWNrYWdlOiBwYXltZW50LnBhY2thZ2UsXHJcbiAgICAgICAgICAgICAgICAgICAgLy8g562+5ZCN566X5rOV77yM5pqC5pSv5oyBIE1ENeOAgUhNQUMtU0hBMjU2XHJcbiAgICAgICAgICAgICAgICAgICAgc2lnblR5cGU6IHBheW1lbnQuc2lnblR5cGUgfHwgJ01ENScsXHJcbiAgICAgICAgICAgICAgICAgICAgLy8g5pSv5LuY562+5ZCNXHJcbiAgICAgICAgICAgICAgICAgICAgcGF5U2lnbjogcGF5bWVudC5wYXlTaWduLFxyXG4gICAgICAgICAgICAgICAgICAgIHN1Y2Nlc3MocmVzKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIC8qIOaIkOWKn+WbnuiwgyAqL1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zb2xlLmxvZyhcIuaUr+S7mOaIkOWKn1wiLCByZXMpO1xyXG4gICAgICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgICAgICAgZmFpbChyZXMpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgLyog5aSx6LSl5Zue6LCDICovXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKFwi5pSv5LuY5aSx6LSlXCIsIHJlcyk7XHJcbiAgICAgICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICAgICAgICBjb21wbGV0ZShyZXMpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgY29uc29sZS5sb2coXCLmlK/ku5jlrozmiJBcIiwgcmVzKTtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgfSxcclxuICAgICAgICB9KTtcclxuICAgIH1cclxuXHJcblxyXG4gICAgb3BlblBhdXNlKCkge1xyXG4gICAgICAgIGNjLmZ4LkF1ZGlvTWFuYWdlci5faW5zdGFuY2UucGxheUVmZmVjdChcImFubml1X2xpdHRsZVwiLCBudWxsKTtcclxuICAgICAgICBjb25zb2xlLmxvZyhjYy5meC5HYW1lQ29uZmlnLkdNX0lORk8pO1xyXG4gICAgICAgIGlmIChjYy5meC5HYW1lQ29uZmlnLkdNX0lORk8ub3BlbmlkID09IHVuZGVmaW5lZCkge1xyXG4gICAgICAgICAgICBjb25zb2xlLmxvZyhjYy5meC5HYW1lQ29uZmlnLkdNX0lORk8ub3BlbmlkKTtcclxuICAgICAgICAgICAgY2MuZnguR2FtZUNvbmZpZy5HTV9JTkZPLm9wZW5pZCA9IFwiXCI7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRoaXMubm9kZS5nZXRDaGlsZEJ5TmFtZShcIlBhdXNlXCIpLmFjdGl2ZSA9IHRydWU7XHJcbiAgICAgICAgdGhpcy5ub2RlLmdldENoaWxkQnlOYW1lKFwiUGF1c2VcIikuZ2V0Q2hpbGRCeU5hbWUoXCJvcGVuSURcIikuZ2V0Q29tcG9uZW50KGNjLkxhYmVsKS5zdHJpbmcgPSBjYy5meC5HYW1lQ29uZmlnLkdNX0lORk8ub3BlbmlkO1xyXG4gICAgfVxyXG5cclxuICAgIGNsb3NlUGF1c2UoKSB7XHJcbiAgICAgICAgY2MuZnguQXVkaW9NYW5hZ2VyLl9pbnN0YW5jZS5wbGF5RWZmZWN0KFwiYW5uaXVfbGl0dGxlXCIsIG51bGwpO1xyXG4gICAgICAgIHRoaXMubm9kZS5nZXRDaGlsZEJ5TmFtZShcIlBhdXNlXCIpLmFjdGl2ZSA9IGZhbHNlO1xyXG5cclxuICAgIH1cclxuXHJcbiAgICBjbG9zZVJld2FyZCgpIHtcclxuICAgICAgICB0aGlzLm5vZGUuZ2V0Q2hpbGRCeU5hbWUoXCJSZXdhcmRcIikuYWN0aXZlID0gZmFsc2U7XHJcbiAgICB9XHJcblxyXG4gICAgb3BlblN0YW1pbmEoKSB7XHJcbiAgICAgICAgdGhpcy5ub2RlLmdldENoaWxkQnlOYW1lKFwiU3RhbWluYVwiKS5hY3RpdmUgPSB0cnVlO1xyXG4gICAgfVxyXG5cclxuICAgIGNsb3NlU3RhbWluYSgpIHtcclxuICAgICAgICB0aGlzLm5vZGUuZ2V0Q2hpbGRCeU5hbWUoXCJTdGFtaW5hXCIpLmFjdGl2ZSA9IGZhbHNlO1xyXG4gICAgfVxyXG5cclxuXHJcbiAgICAvLyB1cGRhdGUgKGR0KSB7fVxyXG59XHJcbiJdfQ== +//------QC-SOURCE-SPLIT------ + + (function() { + var nodeEnv = typeof require !== 'undefined' && typeof process !== 'undefined'; + var __module = nodeEnv ? module : {exports:{}}; + var __filename = 'preview-scripts/assets/Script/ControlManager.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, 'e35abcX5VRAoItO6mgFcYyX', 'ControlManager'); +// Script/ControlManager.ts + +"use strict"; +// Learn TypeScript: +// - https://docs.cocos.com/creator/manual/en/scripting/typescript.html +// Learn Attribute: +// - https://docs.cocos.com/creator/manual/en/scripting/reference/attributes.html +// Learn life-cycle callbacks: +// - https://docs.cocos.com/creator/manual/en/scripting/life-cycle-callbacks.html +var __extends = (this && this.__extends) || (function () { + var extendStatics = function (d, b) { + extendStatics = Object.setPrototypeOf || + ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) || + function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; }; + return extendStatics(d, b); + }; + return function (d, b) { + extendStatics(d, b); + function __() { this.constructor = d; } + d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); + }; +})(); +var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) { + var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; + if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc); + else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; + return c > 3 && r && Object.defineProperty(target, key, r), r; +}; +Object.defineProperty(exports, "__esModule", { value: true }); +var _a = cc._decorator, ccclass = _a.ccclass, property = _a.property; +var NewClass = /** @class */ (function (_super) { + __extends(NewClass, _super); + function NewClass() { + var _this = _super !== null && _super.apply(this, arguments) || this; + _this.Map = null; + _this.tip = null; + _this.reinforce = null; + _this.soil = null; + return _this; + // update (dt) {} + } + // LIFE-CYCLE CALLBACKS: + // onLoad () {} + NewClass.prototype.start = function () { + this.tipArray = []; + this.controlArray = []; + this.canTouch = true; + this.Reinforce = false; + this.Soil = false; + this.mapHeight = 0; + }; + NewClass.prototype.setPosition = function (tip) { + tip.setPosition(30, -25); + if (this.tipArray.length > 0) { + var length = this.tipArray.length + 1; + var posY = Math.ceil(length / 8) - 1; + var posX = length - Math.floor(posY) * 8 - 1; + tip.setPosition(30 + 48 * posX, -25 - 48 * posY + this.mapHeight); + } + }; + //清空所有 + NewClass.prototype.removeAllTip = function () { + if (!this.canTouch) + return; + if (this.tipArray.length > 0) { + cc.fx.AudioManager._instance.playEffect("qingkong", null); + for (var i = 0; i < this.tipArray.length; i++) { + var tip = this.tipArray[i]; + tip.active = false; + tip.removeFromParent(this.Map); + tip = null; + } + this.tipArray = []; + this.controlArray = []; + var drawingReset = cc.fx.GameConfig.CLICK_DATA.drawingReset + 1; + cc.fx.GameConfig.CLICK_SET("drawingReset", drawingReset); + cc.fx.Notifications.emit(cc.fx.Message.removeTip, "remove"); + this.mapHeight = 0; + } + }; + //撤回一步 + NewClass.prototype.back_Click = function () { + if (!this.canTouch) + return; + if (this.tipArray.length > 0) { + cc.fx.AudioManager._instance.playEffect("chehui", null); + var tip = this.tipArray[this.tipArray.length - 1]; + tip.active = false; + tip.removeFromParent(this.Map); + tip = null; + this.tipArray.pop(); + this.controlArray.pop(); + var drawingBack = cc.fx.GameConfig.CLICK_DATA.drawingBack + 1; + cc.fx.GameConfig.CLICK_SET("drawingBack", drawingBack); + cc.fx.Notifications.emit(cc.fx.Message.removeTip, "back"); + if (this.tipArray.length >= 24) { + if ((this.tipArray.length) % 8 == 0) { + this.mapMove(false); + } + } + } + }; + //点击事件 + NewClass.prototype.btn_Click = function (target, data) { + var GameManager = this.node.parent.getComponent("GameManager"); + if (GameManager.btnClick == true) { + GameManager.btnClick = false; + cc.fx.Notifications.emit(cc.fx.Message.guideNext); + } + cc.fx.Notifications.emit(cc.fx.Message.control, data); + if (!this.canTouch) + return; + var prefab = this.tip; + if (data == "reinforce" || data == "soil") { + prefab = this[data]; + if (data == "reinforce") { + if (this.Reinforce) { + this.Reinforce = false; + this.back_Click(); + return; + } + else { + cc.fx.AudioManager._instance.playEffect("jineng", null); + this.Reinforce = true; + this.Soil = false; + } + } + else if (data == "soil") { + if (this.Soil) { + this.Soil = false; + this.back_Click(); + return; + } + else { + cc.fx.AudioManager._instance.playEffect("jineng", null); + this.Soil = true; + this.Reinforce = false; + } + } + } + else { + cc.fx.AudioManager._instance.playEffect("fangxiang", null); + this.Reinforce = false; + this.Soil = false; + } + var tip = cc.instantiate(prefab); + if (data == "up") + tip.angle = 180; + if (data == "left") + tip.angle = -90; + if (data == "right") + tip.angle = 90; + tip.parent = this.Map; + if (this.controlArray[this.controlArray.length - 1] == "reinforce" || + this.controlArray[this.controlArray.length - 1] == "soil") { + if (data == "reinforce" || data == "soil") { + this.tipArray[this.tipArray.length - 1].removeFromParent(); + this.tipArray[this.tipArray.length - 1] = null; + this.tipArray.pop(); + this.controlArray.pop(); + } + } + this.setPosition(tip); + this.tipArray.push(tip); + this.controlArray.push(data); + if (this.tipArray.length >= 25) { + if ((this.tipArray.length - 1) % 8 == 0) { + this.mapMove(true); + } + } + }; + //地图放不下了上下移动 + NewClass.prototype.mapMove = function (type) { + if (type) + this.mapHeight += 48; + else + this.mapHeight -= 48; + for (var i = 0; i < this.tipArray.length; i++) { + var tip = this.tipArray[i]; + if (type) + tip.y += 48; + else + tip.y -= 48; + } + }; + //点击开始 创建河道 + NewClass.prototype.start_Click = function () { + if (!this.canTouch) + return; + this.canTouch = false; + cc.fx.AudioManager._instance.playEffect("build", null); + cc.fx.Notifications.emit(cc.fx.Message.startGame, this.controlArray); + }; + __decorate([ + property(cc.Node) + ], NewClass.prototype, "Map", void 0); + __decorate([ + property(cc.Prefab) + ], NewClass.prototype, "tip", void 0); + __decorate([ + property(cc.Prefab) + ], NewClass.prototype, "reinforce", void 0); + __decorate([ + property(cc.Prefab) + ], NewClass.prototype, "soil", void 0); + NewClass = __decorate([ + ccclass + ], NewClass); + return NewClass; +}(cc.Component)); +exports.default = NewClass; + +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,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImFzc2V0c1xcU2NyaXB0XFxDb250cm9sTWFuYWdlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsb0JBQW9CO0FBQ3BCLHdFQUF3RTtBQUN4RSxtQkFBbUI7QUFDbkIsa0ZBQWtGO0FBQ2xGLDhCQUE4QjtBQUM5QixrRkFBa0Y7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUU1RSxJQUFBLEtBQXNCLEVBQUUsQ0FBQyxVQUFVLEVBQWxDLE9BQU8sYUFBQSxFQUFFLFFBQVEsY0FBaUIsQ0FBQztBQUcxQztJQUFzQyw0QkFBWTtJQUFsRDtRQUFBLHFFQXVLQztRQXBLRyxTQUFHLEdBQVksSUFBSSxDQUFDO1FBRXBCLFNBQUcsR0FBYyxJQUFJLENBQUM7UUFFdEIsZUFBUyxHQUFjLElBQUksQ0FBQztRQUU1QixVQUFJLEdBQWMsSUFBSSxDQUFDOztRQTZKdkIsaUJBQWlCO0lBQ3JCLENBQUM7SUFySkcsd0JBQXdCO0lBRXhCLGVBQWU7SUFFZix3QkFBSyxHQUFMO1FBQ0ksSUFBSSxDQUFDLFFBQVEsR0FBRyxFQUFFLENBQUM7UUFDbkIsSUFBSSxDQUFDLFlBQVksR0FBRyxFQUFFLENBQUM7UUFDdkIsSUFBSSxDQUFDLFFBQVEsR0FBRyxJQUFJLENBQUM7UUFDckIsSUFBSSxDQUFDLFNBQVMsR0FBRyxLQUFLLENBQUM7UUFDdkIsSUFBSSxDQUFDLElBQUksR0FBRyxLQUFLLENBQUM7UUFDbEIsSUFBSSxDQUFDLFNBQVMsR0FBRyxDQUFDLENBQUM7SUFDdkIsQ0FBQztJQUVELDhCQUFXLEdBQVgsVUFBWSxHQUFHO1FBQ1gsR0FBRyxDQUFDLFdBQVcsQ0FBQyxFQUFFLEVBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUN4QixJQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBQztZQUN4QixJQUFJLE1BQU0sR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLE1BQU0sR0FBQyxDQUFDLENBQUM7WUFDcEMsSUFB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QUFDOzBDQUNHO0lBVE4sUUFBUTtRQUQ1QixPQUFPO09BQ2EsUUFBUSxDQXVLNUI7SUFBRCxlQUFDO0NBdktELEFBdUtDLENBdktxQyxFQUFFLENBQUMsU0FBUyxHQXVLakQ7a0JBdktvQixRQUFRIiwiZmlsZSI6IiIsInNvdXJjZVJvb3QiOiIvIiwic291cmNlc0NvbnRlbnQiOlsiLy8gTGVhcm4gVHlwZVNjcmlwdDpcclxuLy8gIC0gaHR0cHM6Ly9kb2NzLmNvY29zLmNvbS9jcmVhdG9yL21hbnVhbC9lbi9zY3JpcHRpbmcvdHlwZXNjcmlwdC5odG1sXHJcbi8vIExlYXJuIEF0dHJpYnV0ZTpcclxuLy8gIC0gaHR0cHM6Ly9kb2NzLmNvY29zLmNvbS9jcmVhdG9yL21hbnVhbC9lbi9zY3JpcHRpbmcvcmVmZXJlbmNlL2F0dHJpYnV0ZXMuaHRtbFxyXG4vLyBMZWFybiBsaWZlLWN5Y2xlIGNhbGxiYWNrczpcclxuLy8gIC0gaHR0cHM6Ly9kb2NzLmNvY29zLmNvbS9jcmVhdG9yL21hbnVhbC9lbi9zY3JpcHRpbmcvbGlmZS1jeWNsZS1jYWxsYmFja3MuaHRtbFxyXG5cclxuY29uc3Qge2NjY2xhc3MsIHByb3BlcnR5fSA9IGNjLl9kZWNvcmF0b3I7XHJcblxyXG5AY2NjbGFzc1xyXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBOZXdDbGFzcyBleHRlbmRzIGNjLkNvbXBvbmVudCB7XHJcblxyXG4gICAgQHByb3BlcnR5KGNjLk5vZGUpXHJcbiAgICBNYXA6IGNjLk5vZGUgPSBudWxsO1xyXG4gICAgQHByb3BlcnR5KGNjLlByZWZhYilcclxuICAgIHRpcDogY2MuUHJlZmFiID0gbnVsbDtcclxuICAgIEBwcm9wZXJ0eShjYy5QcmVmYWIpXHJcbiAgICByZWluZm9yY2U6IGNjLlByZWZhYiA9IG51bGw7XHJcbiAgICBAcHJvcGVydHkoY2MuUHJlZmFiKVxyXG4gICAgc29pbDogY2MuUHJlZmFiID0gbnVsbDtcclxuICAgIFxyXG5cclxuICAgIHRpcEFycmF5OmFueTtcclxuICAgIGNvbnRyb2xBcnJheTphbnk7XHJcbiAgICBjYW5Ub3VjaDpib29sZWFuO1xyXG4gICAgUmVpbmZvcmNlOmJvb2xlYW47XHJcbiAgICBTb2lsOmJvb2xlYW47XHJcbiAgICBtYXBIZWlnaHQ6bnVtYmVyO1xyXG4gICAgLy8gTElGRS1DWUNMRSBDQUxMQkFDS1M6XHJcblxyXG4gICAgLy8gb25Mb2FkICgpIHt9XHJcblxyXG4gICAgc3RhcnQgKCkge1xyXG4gICAgICAgIHRoaXMudGlwQXJyYXkgPSBbXTtcclxuICAgICAgICB0aGlzLmNvbnRyb2xBcnJheSA9IFtdO1xyXG4gICAgICAgIHRoaXMuY2FuVG91Y2ggPSB0cnVlO1xyXG4gICAgICAgIHRoaXMuUmVpbmZvcmNlID0gZmFsc2U7XHJcbiAgICAgICAgdGhpcy5Tb2lsID0gZmFsc2U7XHJcbiAgICAgICAgdGhpcy5tYXBIZWlnaHQgPSAwO1xyXG4gICAgfVxyXG5cclxuICAgIHNldFBvc2l0aW9uKHRpcCl7XHJcbiAgICAgICAgdGlwLnNldFBvc2l0aW9uKDMwLC0yNSk7XHJcbiAgICAgICAgaWYodGhpcy50aXBBcnJheS5sZW5ndGggPiAwKXtcclxuICAgICAgICAgICAgbGV0IGxlbmd0aCA9IHRoaXMudGlwQXJyYXkubGVuZ3RoKzE7XHJcbiAgICAgICAgICAgIGxldCBwb3NZID0gTWF0aC5jZWlsKGxlbmd0aC84KSAtIDE7XHJcbiAgICAgICAgICAgIGxldCBwb3NYID0gbGVuZ3RoIC0gTWF0aC5mbG9vcihwb3NZKSo4IC0gMTtcclxuICAgICAgICAgICAgdGlwLnNldFBvc2l0aW9uKDMwICsgNDgqcG9zWCwtMjUgLTQ4KnBvc1kgKyB0aGlzLm1hcEhlaWdodCk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG4gICAgLy/muIXnqbrmiYDmnIlcclxuICAgIHJlbW92ZUFsbFRpcCgpe1xyXG4gICAgICAgIGlmKCF0aGlzLmNhblRvdWNoKSByZXR1cm47XHJcbiAgICAgICAgaWYodGhpcy50aXBBcnJheS5sZW5ndGggPiAwKXtcclxuICAgICAgICAgICAgY2MuZnguQXVkaW9NYW5hZ2VyLl9pbnN0YW5jZS5wbGF5RWZmZWN0KFwicWluZ2tvbmdcIixudWxsKTtcclxuICAgICAgICAgICAgZm9yKGxldCBpPTA7IGk8dGhpcy50aXBBcnJheS5sZW5ndGg7aSsrKXtcclxuICAgICAgICAgICAgICAgIGxldCB0aXAgPSB0aGlzLnRpcEFycmF5W2ldO1xyXG4gICAgICAgICAgICAgICAgdGlwLmFjdGl2ZSA9IGZhbHNlO1xyXG4gICAgICAgICAgICAgICAgdGlwLnJlbW92ZUZyb21QYXJlbnQodGhpcy5NYXApO1xyXG4gICAgICAgICAgICAgICAgdGlwID0gbnVsbDtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB0aGlzLnRpcEFycmF5ID0gW107XHJcbiAgICAgICAgICAgIHRoaXMuY29udHJvbEFycmF5ID0gW107XHJcbiAgICAgICAgICAgIHZhciBkcmF3aW5nUmVzZXQgPSBjYy5meC5HYW1lQ29uZmlnLkNMSUNLX0RBVEEuZHJhd2luZ1Jlc2V0ICsgMTtcclxuICAgICAgICAgICAgY2MuZnguR2FtZUNvbmZpZy5DTElDS19TRVQoXCJkcmF3aW5nUmVzZXRcIixkcmF3aW5nUmVzZXQpO1xyXG4gICAgICAgICAgICBjYy5meC5Ob3RpZmljYXRpb25zLmVtaXQoY2MuZnguTWVzc2FnZS5yZW1vdmVUaXAsXCJyZW1vdmVcIik7XHJcbiAgICAgICAgICAgIHRoaXMubWFwSGVpZ2h0ID0gMDtcclxuICAgICAgICB9XHJcbiAgICB9XHJcbiAgICAvL+aSpOWbnuS4gOatpVxyXG4gICAgYmFja19DbGljaygpe1xyXG4gICAgICAgIGlmKCF0aGlzLmNhblRvdWNoKSByZXR1cm47XHJcbiAgICAgICAgaWYodGhpcy50aXBBcnJheS5sZW5ndGggPiAwKXtcclxuICAgICAgICAgICAgY2MuZnguQXVkaW9NYW5hZ2VyLl9pbnN0YW5jZS5wbGF5RWZmZWN0KFwiY2hlaHVpXCIsbnVsbCk7XHJcbiAgICAgICAgICAgIGxldCB0aXAgPSB0aGlzLnRpcEFycmF5W3RoaXMudGlwQXJyYXkubGVuZ3RoLTFdO1xyXG4gICAgICAgICAgICB0aXAuYWN0aXZlID0gZmFsc2U7XHJcbiAgICAgICAgICAgIHRpcC5yZW1vdmVGcm9tUGFyZW50KHRoaXMuTWFwKTtcclxuICAgICAgICAgICAgdGlwID0gbnVsbDtcclxuICAgICAgICAgICAgdGhpcy50aXBBcnJheS5wb3AoKTtcclxuICAgICAgICAgICAgdGhpcy5jb250cm9sQXJyYXkucG9wKCk7XHJcbiAgICAgICAgICAgIHZhciBkcmF3aW5nQmFjayA9IGNjLmZ4LkdhbWVDb25maWcuQ0xJQ0tfREFUQS5kcmF3aW5nQmFjayArIDE7XHJcbiAgICAgICAgICAgIGNjLmZ4LkdhbWVDb25maWcuQ0xJQ0tfU0VUKFwiZHJhd2luZ0JhY2tcIixkcmF3aW5nQmFjayk7XHJcbiAgICAgICAgICAgIGNjLmZ4Lk5vdGlmaWNhdGlvbnMuZW1pdChjYy5meC5NZXNzYWdlLnJlbW92ZVRpcCxcImJhY2tcIik7XHJcbiAgICAgICAgICAgIGlmKHRoaXMudGlwQXJyYXkubGVuZ3RoID49IDI0KXtcclxuICAgICAgICAgICAgICAgIGlmKCh0aGlzLnRpcEFycmF5Lmxlbmd0aCApJTggPT0gMCl7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5tYXBNb3ZlKGZhbHNlKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICAvL+eCueWHu+S6i+S7tlxyXG4gICAgYnRuX0NsaWNrKHRhcmdldCxkYXRhKXtcclxuICAgICAgICB2YXIgR2FtZU1hbmFnZXIgPSB0aGlzLm5vZGUucGFyZW50LmdldENvbXBvbmVudChcIkdhbWVNYW5hZ2VyXCIpO1xyXG4gICAgICAgIGlmKEdhbWVNYW5hZ2VyLmJ0bkNsaWNrID09IHRydWUpe1xyXG4gICAgICAgICAgICBHYW1lTWFuYWdlci5idG5DbGljayA9IGZhbHNlO1xyXG4gICAgICAgICAgICBjYy5meC5Ob3RpZmljYXRpb25zLmVtaXQoY2MuZnguTWVzc2FnZS5ndWlkZU5leHQpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBjYy5meC5Ob3RpZmljYXRpb25zLmVtaXQoY2MuZnguTWVzc2FnZS5jb250cm9sLGRhdGEpO1xyXG4gICAgICAgIGlmKCF0aGlzLmNhblRvdWNoKSByZXR1cm47XHJcbiAgICAgICAgbGV0IHByZWZhYiA9IHRoaXMudGlwO1xyXG4gICAgICAgIGlmKGRhdGEgPT0gXCJyZWluZm9yY2VcIiB8fCBkYXRhID09IFwic29pbFwiKXtcclxuICAgICAgICAgICAgcHJlZmFiID0gdGhpc1tkYXRhXTtcclxuICAgICAgICAgICAgaWYoZGF0YSA9PSBcInJlaW5mb3JjZVwiKXtcclxuICAgICAgICAgICAgICAgIGlmKHRoaXMuUmVpbmZvcmNlKXtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLlJlaW5mb3JjZSA9IGZhbHNlO1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuYmFja19DbGljaygpO1xyXG4gICAgICAgICAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICAgICAgICAgIH1lbHNle1xyXG4gICAgICAgICAgICAgICAgICAgIGNjLmZ4LkF1ZGlvTWFuYWdlci5faW5zdGFuY2UucGxheUVmZmVjdChcImppbmVuZ1wiLG51bGwpO1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuUmVpbmZvcmNlID0gdHJ1ZTtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLlNvaWwgPSBmYWxzZTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfSBcclxuICAgICAgICAgICAgZWxzZSBpZihkYXRhID09IFwic29pbFwiKXtcclxuICAgICAgICAgICAgICAgIGlmKHRoaXMuU29pbCl7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5Tb2lsID0gZmFsc2U7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5iYWNrX0NsaWNrKCk7XHJcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgICAgICAgICAgfWVsc2V7XHJcbiAgICAgICAgICAgICAgICAgICAgY2MuZnguQXVkaW9NYW5hZ2VyLl9pbnN0YW5jZS5wbGF5RWZmZWN0KFwiamluZW5nXCIsbnVsbCk7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5Tb2lsID0gdHJ1ZTtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLlJlaW5mb3JjZSA9IGZhbHNlO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9IFxyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNle1xyXG4gICAgICAgICAgICBjYy5meC5BdWRpb01hbmFnZXIuX2luc3RhbmNlLnBsYXlFZmZlY3QoXCJmYW5neGlhbmdcIixudWxsKTtcclxuICAgICAgICAgICAgdGhpcy5SZWluZm9yY2UgPSBmYWxzZTtcclxuICAgICAgICAgICAgdGhpcy5Tb2lsID0gZmFsc2U7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGxldCB0aXAgPSBjYy5pbnN0YW50aWF0ZShwcmVmYWIpO1xyXG4gICAgICAgIGlmKGRhdGEgPT0gXCJ1cFwiKSB0aXAuYW5nbGUgPSAxODA7XHJcbiAgICAgICAgaWYoZGF0YSA9PSBcImxlZnRcIikgdGlwLmFuZ2xlID0gLTkwO1xyXG4gICAgICAgIGlmKGRhdGEgPT0gXCJyaWdodFwiKSB0aXAuYW5nbGUgPSA5MDtcclxuICAgICAgICB0aXAucGFyZW50ID0gdGhpcy5NYXA7XHJcbiAgICBcclxuICAgICAgICBpZih0aGlzLmNvbnRyb2xBcnJheVt0aGlzLmNvbnRyb2xBcnJheS5sZW5ndGgtMV0gPT0gXCJyZWluZm9yY2VcIiB8fCBcclxuICAgICAgICAgICAgdGhpcy5jb250cm9sQXJyYXlbdGhpcy5jb250cm9sQXJyYXkubGVuZ3RoLTFdID09IFwic29pbFwiKXtcclxuICAgICAgICAgICAgICAgIGlmKGRhdGEgPT0gXCJyZWluZm9yY2VcIiB8fCBkYXRhID09IFwic29pbFwiKXtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLnRpcEFycmF5W3RoaXMudGlwQXJyYXkubGVuZ3RoLTFdLnJlbW92ZUZyb21QYXJlbnQoKTtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLnRpcEFycmF5W3RoaXMudGlwQXJyYXkubGVuZ3RoLTFdID0gbnVsbDtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLnRpcEFycmF5LnBvcCgpO1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuY29udHJvbEFycmF5LnBvcCgpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLnNldFBvc2l0aW9uKHRpcCk7XHJcblxyXG4gICAgICAgIHRoaXMudGlwQXJyYXkucHVzaCh0aXApO1xyXG4gICAgICAgIHRoaXMuY29udHJvbEFycmF5LnB1c2goZGF0YSk7XHJcbiAgICBcclxuICAgICAgICBpZih0aGlzLnRpcEFycmF5Lmxlbmd0aCA+PSAyNSl7XHJcbiAgICAgICAgICAgIGlmKCh0aGlzLnRpcEFycmF5Lmxlbmd0aCAtIDEpJTggPT0gMCl7XHJcbiAgICAgICAgICAgICAgICB0aGlzLm1hcE1vdmUodHJ1ZSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICB9XHJcbiAgICAvL+WcsOWbvuaUvuS4jeS4i+S6huS4iuS4i+enu+WKqFxyXG4gICAgbWFwTW92ZSh0eXBlKXtcclxuICAgICAgICBpZih0eXBlKSB0aGlzLm1hcEhlaWdodCArPSA0ODtcclxuICAgICAgICBlbHNlIHRoaXMubWFwSGVpZ2h0IC09IDQ4O1xyXG4gICAgICAgIGZvcihsZXQgaT0wOyBpPHRoaXMudGlwQXJyYXkubGVuZ3RoO2krKyl7XHJcbiAgICAgICAgICAgIGxldCB0aXAgPSB0aGlzLnRpcEFycmF5W2ldO1xyXG4gICAgICAgICAgICBpZih0eXBlKXRpcC55ICs9IDQ4O1xyXG4gICAgICAgICAgICBlbHNlIHRpcC55IC09IDQ4O1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICAvL+eCueWHu+W8gOWniyDliJvlu7rmsrPpgZNcclxuICAgIHN0YXJ0X0NsaWNrKCl7XHJcbiAgICAgICAgaWYoIXRoaXMuY2FuVG91Y2gpIHJldHVybjtcclxuICAgICAgICB0aGlzLmNhblRvdWNoID0gZmFsc2U7XHJcbiAgICAgICAgY2MuZnguQXVkaW9NYW5hZ2VyLl9pbnN0YW5jZS5wbGF5RWZmZWN0KFwiYnVpbGRcIixudWxsKTtcclxuICAgICAgICBjYy5meC5Ob3RpZmljYXRpb25zLmVtaXQoY2MuZnguTWVzc2FnZS5zdGFydEdhbWUsdGhpcy5jb250cm9sQXJyYXkpO1xyXG4gICAgfVxyXG5cclxuICAgIC8vIHVwZGF0ZSAoZHQpIHt9XHJcbn1cclxuIl19 +//------QC-SOURCE-SPLIT------ + + (function() { + var nodeEnv = typeof require !== 'undefined' && typeof process !== 'undefined'; + var __module = nodeEnv ? module : {exports:{}}; + var __filename = 'preview-scripts/assets/Script/GameScene.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, 'e8b235WjRBErajwLmN8xFUz', 'GameScene'); +// Script/GameScene.js + + +// cc.Class({ +// extends: cc.Component, +// properties: { +// localTest: { +// default: false, +// tooltip: '本地测试时勾选,避免tz_url和Configure报错,提交前勾掉' +// }, +// clientTest: { +// default: false, +// tooltip: '客户端测试时勾选,展示版本标记方便测试区分,上线前勾掉' +// }, +// clientTestVersion: { +// default: '', +// tooltip: '版本标记' +// }, +// testVersion: cc.Label, +// score: cc.Label, +// double_hit: cc.Node, +// add: cc.Node, +// add2: cc.Node, +// double_title: cc.Node, +// count_time: cc.Node, +// beginNode: cc.Node, +// ball_nomal: [cc.SpriteFrame], +// bg_nomal: [cc.SpriteFrame], +// ball_light: [cc.SpriteFrame], +// kuang_Frame: [cc.SpriteFrame], +// daojishi: cc.Label, +// pause_anniu: cc.Sprite, +// mask: cc.Node, + +// flashUI: { +// default: null, +// type: cc.SpriteAtlas +// }, +// }, + +// onLoad() { + +// }, + +// update(dt) { + +// }, + +// }); +"use strict"; + +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,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImFzc2V0c1xcU2NyaXB0XFxHYW1lU2NlbmUuanMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7OztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUdBOztBQUVBOztBQUVBOztBQUVBO0FBQUEiLCJzb3VyY2VSb290IjoiLyIsInNvdXJjZXNDb250ZW50IjpbIlxyXG4vLyBjYy5DbGFzcyh7XHJcbi8vICAgICBleHRlbmRzOiBjYy5Db21wb25lbnQsXHJcbi8vICAgICBwcm9wZXJ0aWVzOiB7XHJcbi8vICAgICAgICAgbG9jYWxUZXN0OiB7XHJcbi8vICAgICAgICAgICAgIGRlZmF1bHQ6IGZhbHNlLFxyXG4vLyAgICAgICAgICAgICB0b29sdGlwOiAn5pys5Zyw5rWL6K+V5pe25Yu+6YCJ77yM6YG/5YWNdHpfdXJs5ZKMQ29uZmlndXJl5oql6ZSZ77yM5o+Q5Lqk5YmN5Yu+5o6JJ1xyXG4vLyAgICAgICAgIH0sXHJcbi8vICAgICAgICAgY2xpZW50VGVzdDoge1xyXG4vLyAgICAgICAgICAgICBkZWZhdWx0OiBmYWxzZSxcclxuLy8gICAgICAgICAgICAgdG9vbHRpcDogJ+WuouaIt+err+a1i+ivleaXtuWLvumAie+8jOWxleekuueJiOacrOagh+iusOaWueS+v+a1i+ivleWMuuWIhu+8jOS4iue6v+WJjeWLvuaOiSdcclxuLy8gICAgICAgICB9LFxyXG4vLyAgICAgICAgIGNsaWVudFRlc3RWZXJzaW9uOiB7XHJcbi8vICAgICAgICAgICAgIGRlZmF1bHQ6ICcnLFxyXG4vLyAgICAgICAgICAgICB0b29sdGlwOiAn54mI5pys5qCH6K6wJ1xyXG4vLyAgICAgICAgIH0sXHJcbi8vICAgICAgICAgdGVzdFZlcnNpb246IGNjLkxhYmVsLFxyXG4vLyAgICAgICAgIHNjb3JlOiBjYy5MYWJlbCxcclxuLy8gICAgICAgICBkb3VibGVfaGl0OiBjYy5Ob2RlLFxyXG4vLyAgICAgICAgIGFkZDogY2MuTm9kZSxcclxuLy8gICAgICAgICBhZGQyOiBjYy5Ob2RlLFxyXG4vLyAgICAgICAgIGRvdWJsZV90aXRsZTogY2MuTm9kZSxcclxuLy8gICAgICAgICBjb3VudF90aW1lOiBjYy5Ob2RlLFxyXG4vLyAgICAgICAgIGJlZ2luTm9kZTogY2MuTm9kZSxcclxuLy8gICAgICAgICBiYWxsX25vbWFsOiBbY2MuU3ByaXRlRnJhbWVdLFxyXG4vLyAgICAgICAgIGJnX25vbWFsOiBbY2MuU3ByaXRlRnJhbWVdLFxyXG4vLyAgICAgICAgIGJhbGxfbGlnaHQ6IFtjYy5TcHJpdGVGcmFtZV0sXHJcbi8vICAgICAgICAga3VhbmdfRnJhbWU6IFtjYy5TcHJpdGVGcmFtZV0sXHJcbi8vICAgICAgICAgZGFvamlzaGk6IGNjLkxhYmVsLFxyXG4vLyAgICAgICAgIHBhdXNlX2Fubml1OiBjYy5TcHJpdGUsXHJcbi8vICAgICAgICAgbWFzazogY2MuTm9kZSxcclxuXHJcbi8vICAgICAgICAgZmxhc2hVSToge1xyXG4vLyAgICAgICAgICAgICBkZWZhdWx0OiBudWxsLFxyXG4vLyAgICAgICAgICAgICB0eXBlOiBjYy5TcHJpdGVBdGxhc1xyXG4vLyAgICAgICAgIH0sXHJcbi8vICAgICB9LFxyXG5cclxuLy8gICAgIG9uTG9hZCgpIHtcclxuXHJcblxyXG4vLyAgICAgfSxcclxuXHJcbi8vICAgICB1cGRhdGUoZHQpIHtcclxuXHJcbi8vICAgICB9LFxyXG5cclxuLy8gfSk7Il19 +//------QC-SOURCE-SPLIT------ + + (function() { + var nodeEnv = typeof require !== 'undefined' && typeof process !== 'undefined'; + var __module = nodeEnv ? module : {exports:{}}; + var __filename = 'preview-scripts/assets/Script/GameManager.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, 'df248lSLllOZpCHwGqQ5Ye3', 'GameManager'); +// Script/GameManager.ts + +"use strict"; +// Learn TypeScript: +// - https://docs.cocos.com/creator/manual/en/scripting/typescript.html +// Learn Attribute: +// - https://docs.cocos.com/creator/manual/en/scripting/reference/attributes.html +// Learn life-cycle callbacks: +// - https://docs.cocos.com/creator/manual/en/scripting/life-cycle-callbacks.html +var __extends = (this && this.__extends) || (function () { + var extendStatics = function (d, b) { + extendStatics = Object.setPrototypeOf || + ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) || + function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; }; + return extendStatics(d, b); + }; + return function (d, b) { + extendStatics(d, b); + function __() { this.constructor = d; } + d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); + }; +})(); +var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) { + var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; + if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc); + else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; + return c > 3 && r && Object.defineProperty(target, key, r), r; +}; +Object.defineProperty(exports, "__esModule", { value: true }); +var MiniGameSdk_1 = require("./Sdk/MiniGameSdk"); +var _a = cc._decorator, ccclass = _a.ccclass, property = _a.property; +var GameManager = /** @class */ (function (_super) { + __extends(GameManager, _super); + function GameManager() { + var _this = _super !== null && _super.apply(this, arguments) || this; + _this.label = null; + _this.text = 'hello'; + _this.Block_Array = []; + _this.Wall_Prefab = []; + _this.Block_Color = []; + // @property({type: [cc.ParticleSystem], tooltip:"粒子数组"}) + // particleEffects : Array = []; + _this.load1 = false; + _this.load2 = false; + _this.load3 = false; + _this.load4 = false; + _this.load5 = false; + return _this; + } + GameManager_1 = GameManager; + // LIFE-CYCLE CALLBACKS: + GameManager.prototype.onLoad = function () { + var _this = this; + window.initMgr(); + this.timeNumber = 3; + this.startTimeCutDown(); + cc.fx.GameConfig.init(true); + cc.fx.GameConfig.GM_INFO.gameState = false; + this.readMusicConfig(); + console.log("音乐开关", cc.fx.GameConfig.GM_INFO.musicOpen); + cc.fx.AudioManager._instance.playMusicGame(); + this.load1 = this.load2 = this.load3 = this.load4 = this.load5 = false; + setTimeout(function () { + _this.readUserData(); + }, 200); + if (GameManager_1._instance == null) { + GameManager_1._instance = this; + cc.game.addPersistRootNode(this.node); + } + else { + return; + } + var path = 'prefab/block'; + var path2 = 'prefab/wall'; + cc.resources.loadDir(path, cc.Prefab, function (err, assets) { + if (err) { + console.log('动态加载 block 失败:', err); + cc.director.loadScene("LoadScene"); + return; + } + // 将加载的 Prefab 赋值给 Block_Array + _this.Block_Array = assets; + console.log('方块加载成功,共加载了', _this.Block_Array.length, '个方块'); + _this.setSort(); + _this.load1 = true; + }); + cc.resources.loadDir(path2, cc.Prefab, function (err, assets) { + if (err) { + console.log('动态加载 wall 失败:', err); + cc.director.loadScene("LoadScene"); + return; + } + // 将加载的 Prefab 赋值给 Block_Array + _this.Wall_Prefab = assets; + _this.load2 = true; + console.log('墙加载成功,共加载了', _this.Wall_Prefab.length, '个墙'); + _this.setWallPrefabSort(); + }); + // 检测微信小游戏切到后台 + if (cc.sys.platform === cc.sys.WECHAT_GAME) { + //@ts-ignore + wx.onHide(function () { + _this.onHide(); + }); + // 检测微信小游戏回到前台 + //@ts-ignore + wx.onShow(function () { + _this.onShow(); + }); + } + }; + GameManager.prototype.onHide = function () { + cc.audioEngine.stopMusic(); + cc.game.pause(); + }; + GameManager.prototype.onShow = function () { + cc.audioEngine.resumeMusic(); + cc.game.resume(); + }; + GameManager.prototype.loadParticleEffects = function () { + }; + GameManager.prototype.setWallPrefabSort = function () { + var order = ['down', 'downLeft', 'downRight', 'left', 'right', 'up', 'upLeft', 'upRight']; + this.Wall_Prefab.sort(function (a, b) { + var indexA = order.indexOf(a.name); + var indexB = order.indexOf(b.name); + if (indexA === -1) + return 1; + if (indexB === -1) + return -1; + return indexA - indexB; + }); + }; + GameManager.prototype.setParticleSort = function () { + var order = ['top', 'bot', 'rig', 'lef']; + this.particleEffects.sort(function (a, b) { + var indexA = order.indexOf(a.name.substr(0, 3)); + var indexB = order.indexOf(b.name.substr(0, 3)); + if (indexA === -1) + return 1; + if (indexB === -1) + return -1; + return indexA - indexB; + }); + }; + GameManager.prototype.setSort = function () { + this.Block_Array.sort(function (a, b) { + var _a, _b; + // 从名称中提取数字部分 + var numberA = parseInt(((_a = a.name.match(/\d+/)) === null || _a === void 0 ? void 0 : _a[0]) || '0', 10); + var numberB = parseInt(((_b = b.name.match(/\d+/)) === null || _b === void 0 ? void 0 : _b[0]) || '0', 10); + return numberA - numberB; + }); + }; + GameManager.prototype.start = function () { + }; + GameManager.prototype.startGame = function () { + console.log("进入场景之前_____________", cc.fx.GameConfig.GM_INFO.first); + cc.director.loadScene("HomeScene"); + }; + GameManager.prototype.returnHome = function () { + cc.tween(this.node.getChildByName("Game")) + .to(0.5, { opacity: 100 }) + .call(function () { + // 预加载成功后加载场景 + cc.director.loadScene("HomeScene", function (err) { + if (err) { + console.error('加载 HomeScene 场景失败:', err); + } + else { + cc.director.loadScene("HomeScene"); + } + }); + }) + .start(); + cc.tween(this.node.getChildByName("mask")) + .to(0.5, { opacity: 255 }) + .start(); + // cc.loader.releaseAll(); + // 预加载 HomeScene 场景 + }; + GameManager.prototype.readUserData = function (retryCount) { + var _this = this; + if (retryCount === void 0) { retryCount = 0; } + //@ts-ignore + if (typeof wx !== 'undefined' && wx !== null) { + var levelInfo = cc.fx.StorageMessage.getStorage("level"); + //旧的读取数据设置数据方法,以强联网为主 + if (levelInfo == undefined || levelInfo == "" || levelInfo == null) { + this.oldReadData(retryCount); + } + //新的读取数据设置方法,以本地为主 + else { + this.newReadData(); + } + console.log("即将读取体力值"); + cc.fx.GameTool.getHealth(function (data) { + console.log("体力值完成进入游戏"); + _this.load5 = true; + }); + } + else { + this.load3 = true; + this.load4 = true; + this.load5 = true; + cc.fx.GameTool.getHealth(null); + } + // 存储用户数据 + }; + GameManager.prototype.readMusicConfig = function () { + var audioInfo = cc.fx.StorageMessage.getStorage("music"); + if (audioInfo == undefined || audioInfo == "" || audioInfo == null) { + audioInfo = { + "musicOpen": true, + "effectOpen": true, + "vibrateOpen": true, + }; + cc.fx.StorageMessage.setStorage("music", audioInfo); + } + else { + cc.fx.GameConfig.GM_INFO.musicOpen = audioInfo.musicOpen; + cc.fx.GameConfig.GM_INFO.effectOpen = audioInfo.effectOpen; + cc.fx.GameConfig.GM_INFO.vibrateOpen = audioInfo.vibrateOpen; + } + }; + //新用户,有本地缓存读取配置 + GameManager.prototype.newReadData = function () { + var _this = this; + console.log("读取新信息"); + var openid = cc.fx.StorageMessage.getStorage("openid"); + if (openid == null || openid == "" || openid == undefined) { + console.log("没有openid"); + //@ts-ignore + wx.cloud.callFunction({ + name: 'userData', + data: { + action: 'read' + }, + success: function (res) { + console.log('读取用户数据成功', res.result); + if (res.result.code == 404 && res.result.message == "未找到用户数据") { + } + else if (res.result.code == 200) { + if (res.result.data) { + cc.fx.GameConfig.GM_INFO.openid = res.result.openid; + cc.fx.GameConfig.GM_INFO.username = res.result.data.username; + cc.fx.GameConfig.GM_INFO.useravatar = res.result.data.useravatar; + var register_time = res.result.data.register_time; + MiniGameSdk_1.MiniGameSdk.API.shushu_userSet(register_time); + cc.fx.StorageMessage.setStorage("openid", cc.fx.GameConfig.GM_INFO.openid); + } + } + }, + fail: function (err) { + console.error('读取用户数据失败', err); + } + }); + } + else { + if (openid) + cc.fx.GameConfig.GM_INFO.openid = openid; + } + //等级信息 + cc.fx.GameTool.getUserLevel(function (data) { + var timestamp = Date.now(); + var levelInfo = cc.fx.StorageMessage.getStorage("level"); + if (data.result.code == 404 && data.result.message == "未找到关卡数据") { + // console.log("没有等级信息,从用户接口拿到数据"); + if (levelInfo.level) { + cc.fx.GameConfig.GM_INFO.level = levelInfo.level; + } + _this.load4 = true; + cc.fx.GameTool.setUserLevel(function (data) { + }); + } + else if (data.result.code == 200) { + // console.log("有等级信息,从关卡接口拿到数据",data.result.data); + //游戏前端存储 新于服务器端,以游戏前端信息为主,放服务器存储 + var temp = data.result.timestamp - levelInfo.timestamp; + console.log("等级时间差:", temp); + if ((data.result.timestamp - levelInfo.timestamp) < 10000) { + if (levelInfo.level) { + console.log("以游戏前端等级为准", data.result.data); + cc.fx.GameConfig.GM_INFO.level = levelInfo.level; + // console.log("等级为:",cc.fx.GameConfig.GM_INFO.level); + cc.fx.GameTool.setUserLevel(function (data) { + }); + } + } + //服务器端存储时间新于游戏端,以服务器端为主,往前端存储 + else { + console.log("以服务器等级为准", data.result.data); + cc.fx.GameConfig.GM_INFO.level = data.result.data; + levelInfo.level = cc.fx.GameConfig.GM_INFO.level; + levelInfo.timestamp = timestamp; + // console.log("1111111存储关卡数据:",cc.fx.GameConfig.GM_INFO.level); + cc.fx.StorageMessage.setStorage("level", levelInfo); + } + _this.load4 = true; + } + }); + //金币信息 + cc.fx.GameTool.getUserCoin(function (data) { + var timestamp = Date.now(); + var coinInfo = cc.fx.StorageMessage.getStorage("coin"); + if (data.result.code == 404 && data.result.message == "未找到金币数据") { + if (coinInfo.coin) + cc.fx.GameConfig.GM_INFO.coin = coinInfo.coin; + console.log("没有金币信息,从用户接口拿到数据", cc.fx.GameConfig.GM_INFO.coin); + _this.load3 = true; + cc.fx.GameTool.setUserCoin(function (data) { + }); + } + else if (data.result.code == 200) { + // console.log("有金币信息,从金币接口拿到数据",data.result.data); + //游戏前端存储 新于服务器端,以游戏前端信息为主,放服务器存储 + var temp = data.result.timestamp - coinInfo.timestamp; + console.log("金币时间差:", temp); + if ((data.result.timestamp - coinInfo.timestamp) < 10000) { + console.log("以前端金幣为准:", coinInfo); + if (coinInfo.coin) + cc.fx.GameConfig.GM_INFO.coin = coinInfo.coin; + else { + cc.fx.GameConfig.GM_INFO.coin = data.result.data; + coinInfo.coin = cc.fx.GameConfig.GM_INFO.coin; + coinInfo.timestamp = timestamp; + console.log("11111111111"); + cc.fx.StorageMessage.setStorage("coin", coinInfo); + } + console.log("改变后金币:", cc.fx.GameConfig.GM_INFO.coin); + cc.fx.GameTool.setUserCoin(function (data) { + }); + } + //服务器端存储时间新于游戏端,以服务器端为主,往前端存储 + else { + console.log("以服务器金幣为准:", data.result.data); + cc.fx.GameConfig.GM_INFO.coin = data.result.data; + coinInfo.coin = cc.fx.GameConfig.GM_INFO.coin; + coinInfo.timestamp = timestamp; + console.log("2222222222"); + cc.fx.StorageMessage.setStorage("coin", coinInfo); + } + _this.load3 = true; + } + }); + //道具信息 + cc.fx.GameTool.getUserProp(function (data) { + var timestamp = Date.now(); + var propInfo = cc.fx.StorageMessage.getStorage("prop"); + if (data.result.code == 404 && data.result.message == "未找到道具数据") { + console.log("没有道具信息,从用户接口拿到数据", propInfo); + if (propInfo.freezeAmount == undefined || propInfo.hammerAmount == undefined || propInfo.magicAmount == undefined) { + console.log("2222222道具数据异常"); + cc.fx.GameConfig.GM_INFO.freezeAmount = 0; + cc.fx.GameConfig.GM_INFO.hammerAmount = 0; + cc.fx.GameConfig.GM_INFO.magicAmoun = 0; + var propInfoNew = { + "freezeAmount": cc.fx.GameConfig.GM_INFO.freezeAmount, + "hammerAmount": cc.fx.GameConfig.GM_INFO.hammerAmount, + "magicAmount": cc.fx.GameConfig.GM_INFO.magicAmoun, + "timestamp": timestamp + }; + console.log("1111111上传道具信息:", propInfoNew); + cc.fx.StorageMessage.setStorage("prop", propInfoNew); + } + else { + // cc.fx.GameConfig.GM_INFO.freezeAmount = data.result.data.freeze; + // cc.fx.GameConfig.GM_INFO.hammerAmount = data.result.data.hammer; + // cc.fx.GameConfig.GM_INFO.magicAmount = data.result.data.magic_wand; + cc.fx.GameConfig.GM_INFO.freezeAmount = propInfo.freezeAmount; + cc.fx.GameConfig.GM_INFO.hammerAmount = propInfo.hammerAmount; + cc.fx.GameConfig.GM_INFO.magicAmount = propInfo.magicAmount; + } + // cc.fx.GameConfig.GM_INFO.freezeAmount = propInfo.freezeAmount; + // cc.fx.GameConfig.GM_INFO.hammerAmount = propInfo.hammerAmount; + // cc.fx.GameConfig.GM_INFO.magicAmount = propInfo.magicAmount; + cc.fx.GameTool.setUserProp(0, 0, function (data) { + }); + } + else if (data.result.code == 200) { + // console.log("本地时间戳",propInfo.timestamp,"服务器时间戳",data.result.timestamp); + if ((data.result.timestamp - propInfo.timestamp) < 10000) { + console.log("以前端道具为主:", propInfo); + if (propInfo.freezeAmount == undefined || propInfo.hammerAmount == undefined || propInfo.magicAmount == undefined) { + console.log("111111道具数据异常", data.result.data); + cc.fx.GameConfig.GM_INFO.freezeAmount = data.result.data.freeze; + cc.fx.GameConfig.GM_INFO.hammerAmount = data.result.data.hammer; + cc.fx.GameConfig.GM_INFO.magicAmount = data.result.data.magic_wand; + var propInfoNew = { + "freezeAmount": cc.fx.GameConfig.GM_INFO.freezeAmount, + "hammerAmount": cc.fx.GameConfig.GM_INFO.hammerAmount, + "magicAmount": cc.fx.GameConfig.GM_INFO.magicAmount, + "timestamp": timestamp + }; + console.log("333333上传道具信息:", propInfoNew); + cc.fx.StorageMessage.setStorage("prop", propInfoNew); + } + else { + console.log("道具数据正常"); + cc.fx.GameConfig.GM_INFO.freezeAmount = propInfo.freezeAmount; + cc.fx.GameConfig.GM_INFO.hammerAmount = propInfo.hammerAmount; + cc.fx.GameConfig.GM_INFO.magicAmount = propInfo.magicAmount; + cc.fx.GameTool.setUserProp(0, 0, function (data) { + }); + } + } + else { + cc.fx.GameConfig.GM_INFO.freezeAmount = data.result.data.freeze; + cc.fx.GameConfig.GM_INFO.hammerAmount = data.result.data.hammer; + cc.fx.GameConfig.GM_INFO.magicAmount = data.result.data.magic_wand; + var propInfoNew = { + "freezeAmount": cc.fx.GameConfig.GM_INFO.freezeAmount, + "hammerAmount": cc.fx.GameConfig.GM_INFO.hammerAmount, + "magicAmount": cc.fx.GameConfig.GM_INFO.magicAmount, + "timestamp": timestamp + }; + console.log("22222222上传道具信息:", propInfoNew, data.result); + cc.fx.StorageMessage.setStorage("prop", propInfoNew); + } + } + }); + }; + //旧用户,无本地缓存读取配置 + GameManager.prototype.oldReadData = function (retryCount) { + var _this = this; + console.log("读取旧信息"); + var MAX_RETRIES = 15; + var timestamp = Date.now(); + // 读取用户数据 + //@ts-ignore + wx.cloud.callFunction({ + name: 'userData', + data: { + action: 'read' + }, + success: function (res) { + console.log('读取用户数据成功', res.result); + if (res.result.code == 404 && res.result.message == "未找到用户数据") { + if (res.result.openid) { + cc.fx.GameConfig.GM_INFO.openid = res.result.openid; + } + cc.fx.GameConfig.GM_INFO.first = true; + _this.load3 = true; + _this.load4 = true; + var levelInfo = { "level": 0, "timestamp": timestamp }; + cc.fx.StorageMessage.setStorage("level", levelInfo); + var coinInfo = { "coin": 0, "timestamp": timestamp }; + console.log("33333333333"); + cc.fx.StorageMessage.setStorage("coin", coinInfo); + var propInfo = { + "freezeAmount": 0, + "hammerAmount": 0, + "magicAmount": 0, + "timestamp": timestamp, + }; + cc.fx.StorageMessage.setStorage("prop", propInfo); + cc.fx.GameTool.setUserInfo(function (data) { + if (data.result.code == 200) { + console.log("上传用户信息成功", data); + //@ts-ignore + wx.cloud.callFunction({ + name: 'userData', + data: { + action: 'read' + }, + success: function (res) { + console.log("上传后,读取用户信息,为上报注册时间"); + if (res.result.code == 200) { + var time = res.result.data.register_time; + MiniGameSdk_1.MiniGameSdk.API.shushu_userSet(time); + } + } + }); + } + }); + console.log("服务器也没有金币信息", cc.fx.GameConfig.GM_INFO.coin); + cc.fx.GameTool.setUserCoin(cc.fx.GameConfig.GM_INFO.coin, function (data) { + }); + cc.fx.GameTool.setUserLevel(function (data) { + }); + setTimeout(function () { + cc.fx.GameConfig.GM_INFO.freezeAmount = 0; + cc.fx.GameConfig.GM_INFO.hammerAmount = 0; + cc.fx.GameConfig.GM_INFO.magicAmount = 0; + cc.fx.GameTool.setUserProp(0, 0, function (data) { + if (data.result.code == 200) { + console.log("上传道具信息成功", data); + } + else { + MiniGameSdk_1.MiniGameSdk.API.showToast("网络异常,正在努力加载"); + setTimeout(function () { + _this.oldReadData(0); + }, 1000); + } + }); + }, 0); + } + else if (res.result.code == 200) { + if (res.result.data) { + cc.fx.GameConfig.GM_INFO.openid = res.result.openid; + cc.fx.GameConfig.GM_INFO.level = res.result.data.level; + cc.fx.GameConfig.GM_INFO.coin = res.result.data.coinAmount; + cc.fx.GameConfig.GM_INFO.freezeAmount = res.result.data.freezeAmount; + cc.fx.GameConfig.GM_INFO.hammerAmount = res.result.data.hammerAmount; + cc.fx.GameConfig.GM_INFO.magicAmount = res.result.data.magicAmount; + cc.fx.GameConfig.GM_INFO.username = res.result.data.username; + cc.fx.GameConfig.GM_INFO.useravatar = res.result.data.useravatar; + cc.fx.StorageMessage.setStorage("openid", cc.fx.GameConfig.GM_INFO.openid); + var register_time = res.result.data.register_time; + MiniGameSdk_1.MiniGameSdk.API.shushu_userSet(register_time); + } + setTimeout(function () { + cc.fx.GameTool.getUserCoin(function (data) { + if (data.result.code == 404 && data.result.message == "未找到金币数据") { + var coinInfo = { "coin": 0, "timestamp": timestamp }; + cc.fx.GameConfig.GM_INFO.coin = 0; + cc.fx.StorageMessage.setStorage("coin", coinInfo); + console.log("没有金币信息,从用户接口拿到数据", cc.fx.GameConfig.GM_INFO.coin); + cc.fx.GameTool.setUserCoin(function (data) { + // console.log("上传",data); + _this.load3 = true; + }); + } + else if (data.result.code == 200) { + // console.log("有金币信息,从金币接口拿到数据",data.result.data); + cc.fx.GameConfig.GM_INFO.coin = data.result.data; + var coinInfo = { "coin": cc.fx.GameConfig.GM_INFO.coin, "timestamp": timestamp }; + console.log("存储金币信息:", cc.fx.GameConfig.GM_INFO.coin); + console.log("4444444444"); + cc.fx.StorageMessage.setStorage("coin", coinInfo); + _this.load3 = true; + } + }); + }, 500); + cc.fx.GameTool.getUserLevel(function (data) { + if (data.result.code == 404 && data.result.message == "未找到关卡数据") { + console.log("没有等级信息,从用户接口拿到数据"); + var levelInfo = { "level": 0, "timestamp": timestamp }; + // console.log("333333存储关卡数据:",levelInfo); + cc.fx.GameConfig.GM_INFO.level = 0; + cc.fx.StorageMessage.setStorage("level", levelInfo); + cc.fx.GameTool.setUserLevel(function (data) { + console.log("拿到的数据", data); + _this.load4 = true; + }); + } + else if (data.result.code == 200) { + console.log("有等级信息,从关卡接口拿到数据", data.result.data); + cc.fx.GameConfig.GM_INFO.level = data.result.data; + var levelInfo = { "level": cc.fx.GameConfig.GM_INFO.level, "timestamp": timestamp }; + // console.log("444444存储关卡信息:",levelInfo); + cc.fx.StorageMessage.setStorage("level", levelInfo); + _this.load4 = true; + } + }); + setTimeout(function () { + cc.fx.GameTool.getUserProp(function (data) { + if (data.result.code == 404 && data.result.message == "未找到道具数据") { + console.log("没有道具信息,从用户接口拿到数据"); + cc.fx.GameConfig.GM_INFO.freezeAmount = 0; + cc.fx.GameConfig.GM_INFO.hammerAmount = 0; + cc.fx.GameConfig.GM_INFO.magicAmount = 0; + var propInfo = { + "freezeAmount": 0, + "hammerAmount": 0, + "magicAmount": 0, + "timestamp": timestamp, + }; + console.log("上传道具信息:", propInfo); + cc.fx.StorageMessage.setStorage("prop", propInfo); + cc.fx.GameTool.setUserProp(0, 0, function (data) { + }); + } + else if (data.result.code == 200) { + console.log("有道具信息,从道具接口拿到数据", data.result.data); + cc.fx.GameConfig.GM_INFO.freezeAmount = data.result.data.freeze || 0; + cc.fx.GameConfig.GM_INFO.hammerAmount = data.result.data.hammer || 0; + cc.fx.GameConfig.GM_INFO.magicAmount = data.result.data.magic_wand || 0; + var propInfo = { + "freezeAmount": cc.fx.GameConfig.GM_INFO.freezeAmount, + "hammerAmount": cc.fx.GameConfig.GM_INFO.hammerAmount, + "magicAmount": cc.fx.GameConfig.GM_INFO.magicAmount, + "timestamp": timestamp, + }; + console.log("上传道具信息:", propInfo); + cc.fx.StorageMessage.setStorage("prop", propInfo); + } + }); + }, 0); + } + }, + fail: function (err) { + console.error('读取用户数据失败', err); + if (retryCount < MAX_RETRIES) { + console.error("\u8BFB\u53D6\u7528\u6237\u6570\u636E\u5931\u8D25\uFF0C\u7B2C " + (retryCount + 1) + " \u6B21\u91CD\u8BD5\uFF0C\u9519\u8BEF\u4FE1\u606F:", err); + // 延迟 2 秒后重试 + setTimeout(function () { + _this.readUserData(retryCount + 1); + }, 2000); + } + else { + console.error('读取用户数据失败,达到最大重试次数,退出游戏', err); + // 退出游戏 + cc.game.end(); + } + } + }); + }; + GameManager.prototype.setUserData = function () { + cc.fx.GameConfig.GameTool(function (data) { + console.log("上传", data); + }); + }; + GameManager.prototype.startTimeCutDown = function () { + this.scheduleCallback = function () { + if (this.timeNumber <= 0) { + this.stopTimeCutDown(); + } + else { + this.timeNumber -= 1; + } + }.bind(this); + this.schedule(this.scheduleCallback, 1); + }; + GameManager.prototype.stopTimeCutDown = function () { + if (this.scheduleCallback) { + this.unschedule(this.scheduleCallback); + } + }; + GameManager.prototype.update = function (dt) { + if (this.load1 && this.load2 && this.load3 && this.load4 && this.load5 && this.timeNumber <= 0) { + this.load1 = this.load2 = false; + MiniGameSdk_1.MiniGameSdk.API.shushu_Init(); + this.startGame(); + } + }; + var GameManager_1; + GameManager._instance = null; + __decorate([ + property(cc.Label) + ], GameManager.prototype, "label", void 0); + __decorate([ + property + ], GameManager.prototype, "text", void 0); + __decorate([ + property({ type: [cc.Prefab], tooltip: "方块数组" }) + ], GameManager.prototype, "Block_Array", void 0); + __decorate([ + property({ type: [cc.Prefab], tooltip: "墙壁数组" }) + ], GameManager.prototype, "Wall_Prefab", void 0); + __decorate([ + property({ type: [cc.SpriteAtlas], tooltip: "方块颜色" }) + ], GameManager.prototype, "Block_Color", void 0); + GameManager = GameManager_1 = __decorate([ + ccclass + ], GameManager); + return GameManager; +}(cc.Component)); +exports.default = GameManager; + +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,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImFzc2V0c1xcU2NyaXB0XFxHYW1lTWFuYWdlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsb0JBQW9CO0FBQ3BCLHdFQUF3RTtBQUN4RSxtQkFBbUI7QUFDbkIsa0ZBQWtGO0FBQ2xGLDhCQUE4QjtBQUM5QixrRkFBa0Y7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUdsRixpREFBZ0Q7QUFFMUMsSUFBQSxLQUF3QixFQUFFLENBQUMsVUFBVSxFQUFuQyxPQUFPLGFBQUEsRUFBRSxRQUFRLGNBQWtCLENBQUM7QUFHNUM7SUFBeUMsK0JBQVk7SUFBckQ7UUFBQSxxRUFpcEJDO1FBOW9CRyxXQUFLLEdBQWEsSUFBSSxDQUFDO1FBR3ZCLFVBQUksR0FBVyxPQUFPLENBQUM7UUFJdkIsaUJBQVcsR0FBcUIsRUFBRSxDQUFDO1FBR25DLGlCQUFXLEdBQXFCLEVBQUUsQ0FBQztRQUduQyxpQkFBVyxHQUEwQixFQUFFLENBQUM7UUFHeEMseURBQXlEO1FBQ3pELG1EQUFtRDtRQUVuRCxXQUFLLEdBQVksS0FBSyxDQUFDO1FBQ3ZCLFdBQUssR0FBWSxLQUFLLENBQUM7UUFDdkIsV0FBSyxHQUFZLEtBQUssQ0FBQztRQUN2QixXQUFLLEdBQVksS0FBSyxDQUFDO1FBQ3ZCLFdBQUssR0FBWSxLQUFLLENBQUM7O0lBdW5CM0IsQ0FBQztvQkFqcEJvQixXQUFXO0lBK0I1Qix3QkFBd0I7SUFFeEIsNEJBQU0sR0FBTjtRQUFBLGlCQW1FQztRQWpFRyxNQUFNLENBQUMsT0FBTyxFQUFFLENBQUM7UUFDakIsSUFBSSxDQUFDLFVBQVUsR0FBRyxDQUFDLENBQUM7UUFDcEIsSUFBSSxDQUFDLGdCQUFnQixFQUFFLENBQUM7UUFDeEIsRUFBRSxDQUFDLEVBQUUsQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQzVCLEVBQUUsQ0FBQyxFQUFFLENBQUMsVUFBVSxDQUFDLE9BQU8sQ0FBQyxTQUFTLEdBQUcsS0FBSyxD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QURDLFFBQVEsQ0FBQyxFQUFFLElBQUksRUFBRSxDQUFDLEVBQUUsQ0FBQyxNQUFNLENBQUMsRUFBRSxPQUFPLEVBQUUsTUFBTSxFQUFFLENBQUM7b0RBQ2Q7SUFHbkM7UUFEQyxRQUFRLENBQUMsRUFBRSxJQUFJLEVBQUUsQ0FBQyxFQUFFLENBQUMsV0FBVyxDQUFDLEVBQUUsT0FBTyxFQUFFLE1BQU0sRUFBRSxDQUFDO29EQUNkO0lBaEJ2QixXQUFXO1FBRC9CLE9BQU87T0FDYSxXQUFXLENBaXBCL0I7SUFBRCxrQkFBQztDQWpwQkQsQUFpcEJDLENBanBCd0MsRUFBRSxDQUFDLFNBQVMsR0FpcEJwRDtrQkFqcEJvQixXQUFXIiwiZmlsZSI6IiIsInNvdXJjZVJvb3QiOiIvIiwic291cmNlc0NvbnRlbnQiOlsiLy8gTGVhcm4gVHlwZVNjcmlwdDpcclxuLy8gIC0gaHR0cHM6Ly9kb2NzLmNvY29zLmNvbS9jcmVhdG9yL21hbnVhbC9lbi9zY3JpcHRpbmcvdHlwZXNjcmlwdC5odG1sXHJcbi8vIExlYXJuIEF0dHJpYnV0ZTpcclxuLy8gIC0gaHR0cHM6Ly9kb2NzLmNvY29zLmNvbS9jcmVhdG9yL21hbnVhbC9lbi9zY3JpcHRpbmcvcmVmZXJlbmNlL2F0dHJpYnV0ZXMuaHRtbFxyXG4vLyBMZWFybiBsaWZlLWN5Y2xlIGNhbGxiYWNrczpcclxuLy8gIC0gaHR0cHM6Ly9kb2NzLmNvY29zLmNvbS9jcmVhdG9yL21hbnVhbC9lbi9zY3JpcHRpbmcvbGlmZS1jeWNsZS1jYWxsYmFja3MuaHRtbFxyXG5cclxuaW1wb3J0IHsgTWluaUdhbWVNYW5hZ2VyIH0gZnJvbSBcIi4vU2RrL01pbmlHYW1lTWFuYWdlclwiO1xyXG5pbXBvcnQgeyBNaW5pR2FtZVNkayB9IGZyb20gXCIuL1Nkay9NaW5pR2FtZVNka1wiO1xyXG5cclxuY29uc3QgeyBjY2NsYXNzLCBwcm9wZXJ0eSB9ID0gY2MuX2RlY29yYXRvcjtcclxuXHJcbkBjY2NsYXNzXHJcbmV4cG9ydCBkZWZhdWx0IGNsYXNzIEdhbWVNYW5hZ2VyIGV4dGVuZHMgY2MuQ29tcG9uZW50IHtcclxuXHJcbiAgICBAcHJvcGVydHkoY2MuTGFiZWwpXHJcbiAgICBsYWJlbDogY2MuTGFiZWwgPSBudWxsO1xyXG5cclxuICAgIEBwcm9wZXJ0eVxyXG4gICAgdGV4dDogc3RyaW5nID0gJ2hlbGxvJztcclxuICAgIHN0YXRpYyBfaW5zdGFuY2U6IEdhbWVNYW5hZ2VyID0gbnVsbDtcclxuXHJcbiAgICBAcHJvcGVydHkoeyB0eXBlOiBbY2MuUHJlZmFiXSwgdG9vbHRpcDogXCLmlrnlnZfmlbDnu4RcIiB9KVxyXG4gICAgQmxvY2tfQXJyYXk6IEFycmF5PGNjLlByZWZhYj4gPSBbXTtcclxuXHJcbiAgICBAcHJvcGVydHkoeyB0eXBlOiBbY2MuUHJlZmFiXSwgdG9vbHRpcDogXCLlopnlo4HmlbDnu4RcIiB9KVxyXG4gICAgV2FsbF9QcmVmYWI6IEFycmF5PGNjLlByZWZhYj4gPSBbXTtcclxuXHJcbiAgICBAcHJvcGVydHkoeyB0eXBlOiBbY2MuU3ByaXRlQXRsYXNdLCB0b29sdGlwOiBcIuaWueWdl+minOiJslwiIH0pXHJcbiAgICBCbG9ja19Db2xvcjogQXJyYXk8Y2MuU3ByaXRlQXRsYXM+ID0gW107XHJcblxyXG4gICAgcGFydGljbGVFZmZlY3RzOiBjYy5QYXJ0aWNsZUFzc2V0W107XHJcbiAgICAvLyBAcHJvcGVydHkoe3R5cGU6IFtjYy5QYXJ0aWNsZVN5c3RlbV0sIHRvb2x0aXA6XCLnspLlrZDmlbDnu4RcIn0pXHJcbiAgICAvLyBwYXJ0aWNsZUVmZmVjdHMgOiBBcnJheTxjYy5QYXJ0aWNsZVN5c3RlbT4gPSBbXTtcclxuXHJcbiAgICBsb2FkMTogYm9vbGVhbiA9IGZhbHNlO1xyXG4gICAgbG9hZDI6IGJvb2xlYW4gPSBmYWxzZTtcclxuICAgIGxvYWQzOiBib29sZWFuID0gZmFsc2U7XHJcbiAgICBsb2FkNDogYm9vbGVhbiA9IGZhbHNlO1xyXG4gICAgbG9hZDU6IGJvb2xlYW4gPSBmYWxzZTtcclxuICAgIHNjaGVkdWxlQ2FsbGJhY2s6IGFueTtcclxuICAgIHRpbWVOdW1iZXI6IG51bWJlcjtcclxuXHJcblxyXG4gICAgLy8gTElGRS1DWUNMRSBDQUxMQkFDS1M6XHJcblxyXG4gICAgb25Mb2FkKCkge1xyXG5cclxuICAgICAgICB3aW5kb3cuaW5pdE1ncigpO1xyXG4gICAgICAgIHRoaXMudGltZU51bWJlciA9IDM7XHJcbiAgICAgICAgdGhpcy5zdGFydFRpbWVDdXREb3duKCk7XHJcbiAgICAgICAgY2MuZnguR2FtZUNvbmZpZy5pbml0KHRydWUpO1xyXG4gICAgICAgIGNjLmZ4LkdhbWVDb25maWcuR01fSU5GTy5nYW1lU3RhdGUgPSBmYWxzZTtcclxuICAgICAgICB0aGlzLnJlYWRNdXNpY0NvbmZpZygpO1xyXG4gICAgICAgIGNvbnNvbGUubG9nKFwi6Z+z5LmQ5byA5YWzXCIsIGNjLmZ4LkdhbWVDb25maWcuR01fSU5GTy5tdXNpY09wZW4pO1xyXG4gICAgICAgIGNjLmZ4LkF1ZGlvTWFuYWdlci5faW5zdGFuY2UucGxheU11c2ljR2FtZSgpO1xyXG5cclxuICAgICAgICB0aGlzLmxvYWQxID0gdGhpcy5sb2FkMiA9IHRoaXMubG9hZDMgPSB0aGlzLmxvYWQ0ID0gdGhpcy5sb2FkNSA9IGZhbHNlO1xyXG4gICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICAgICAgICB0aGlzLnJlYWRVc2VyRGF0YSgpO1xyXG4gICAgICAgIH0sIDIwMCk7XHJcblxyXG5cclxuICAgICAgICBpZiAoR2FtZU1hbmFnZXIuX2luc3RhbmNlID09IG51bGwpIHtcclxuICAgICAgICAgICAgR2FtZU1hbmFnZXIuX2luc3RhbmNlID0gdGhpcztcclxuICAgICAgICAgICAgY2MuZ2FtZS5hZGRQZXJzaXN0Um9vdE5vZGUodGhpcy5ub2RlKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGNvbnN0IHBhdGggPSAncHJlZmFiL2Jsb2NrJztcclxuICAgICAgICBjb25zdCBwYXRoMiA9ICdwcmVmYWIvd2FsbCc7XHJcbiAgICAgICAgY2MucmVzb3VyY2VzLmxvYWREaXIocGF0aCwgY2MuUHJlZmFiLCAoZXJyLCBhc3NldHM6IGNjLlByZWZhYltdKSA9PiB7XHJcbiAgICAgICAgICAgIGlmIChlcnIpIHtcclxuICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKCfliqjmgIHliqDovb0gYmxvY2sg5aSx6LSlOicsIGVycik7XHJcbiAgICAgICAgICAgICAgICBjYy5kaXJlY3Rvci5sb2FkU2NlbmUoXCJMb2FkU2NlbmVcIik7XHJcbiAgICAgICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgLy8g5bCG5Yqg6L2955qEIFByZWZhYiDotYvlgLznu5kgQmxvY2tfQXJyYXlcclxuICAgICAgICAgICAgdGhpcy5CbG9ja19BcnJheSA9IGFzc2V0cztcclxuICAgICAgICAgICAgY29uc29sZS5sb2coJ+aWueWdl+WKoOi9veaIkOWKn++8jOWFseWKoOi9veS6hicsIHRoaXMuQmxvY2tfQXJyYXkubGVuZ3RoLCAn5Liq5pa55Z2XJyk7XHJcbiAgICAgICAgICAgIHRoaXMuc2V0U29ydCgpO1xyXG4gICAgICAgICAgICB0aGlzLmxvYWQxID0gdHJ1ZTtcclxuICAgICAgICB9KTtcclxuXHJcbiAgICAgICAgY2MucmVzb3VyY2VzLmxvYWREaXIocGF0aDIsIGNjLlByZWZhYiwgKGVyciwgYXNzZXRzOiBjYy5QcmVmYWJbXSkgPT4ge1xyXG4gICAgICAgICAgICBpZiAoZXJyKSB7XHJcbiAgICAgICAgICAgICAgICBjb25zb2xlLmxvZygn5Yqo5oCB5Yqg6L29IHdhbGwg5aSx6LSlOicsIGVycik7XHJcbiAgICAgICAgICAgICAgICBjYy5kaXJlY3Rvci5sb2FkU2NlbmUoXCJMb2FkU2NlbmVcIik7XHJcbiAgICAgICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgLy8g5bCG5Yqg6L2955qEIFByZWZhYiDotYvlgLznu5kgQmxvY2tfQXJyYXlcclxuICAgICAgICAgICAgdGhpcy5XYWxsX1ByZWZhYiA9IGFzc2V0cztcclxuICAgICAgICAgICAgdGhpcy5sb2FkMiA9IHRydWU7XHJcbiAgICAgICAgICAgIGNvbnNvbGUubG9nKCflopnliqDovb3miJDlip/vvIzlhbHliqDovb3kuoYnLCB0aGlzLldhbGxfUHJlZmFiLmxlbmd0aCwgJ+S4quWimScpO1xyXG4gICAgICAgICAgICB0aGlzLnNldFdhbGxQcmVmYWJTb3J0KCk7XHJcbiAgICAgICAgfSk7XHJcblxyXG5cclxuICAgICAgICAvLyDmo4DmtYvlvq7kv6HlsI/muLjmiI/liIfliLDlkI7lj7BcclxuICAgICAgICBpZiAoY2Muc3lzLnBsYXRmb3JtID09PSBjYy5zeXMuV0VDSEFUX0dBTUUpIHtcclxuICAgICAgICAgICAgLy9AdHMtaWdub3JlXHJcbiAgICAgICAgICAgIHd4Lm9uSGlkZSgoKSA9PiB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLm9uSGlkZSgpO1xyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgLy8g5qOA5rWL5b6u5L+h5bCP5ri45oiP5Zue5Yiw5YmN5Y+wXHJcbiAgICAgICAgICAgIC8vQHRzLWlnbm9yZVxyXG4gICAgICAgICAgICB3eC5vblNob3coKCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5vblNob3coKTtcclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgfVxyXG5cclxuICAgIH1cclxuXHJcbiAgICBvbkhpZGUoKSB7XHJcbiAgICAgICAgY2MuYXVkaW9FbmdpbmUuc3RvcE11c2ljKCk7XHJcbiAgICAgICAgY2MuZ2FtZS5wYXVzZSgpO1xyXG4gICAgfVxyXG5cclxuICAgIG9uU2hvdygpIHtcclxuICAgICAgICBjYy5hdWRpb0VuZ2luZS5yZXN1bWVNdXNpYygpO1xyXG4gICAgICAgIGNjLmdhbWUucmVzdW1lKCk7XHJcbiAgICB9XHJcblxyXG4gICAgbG9hZFBhcnRpY2xlRWZmZWN0cygpIHtcclxuICAgIH1cclxuXHJcblxyXG5cclxuXHJcbiAgICBzZXRXYWxsUHJlZmFiU29ydCgpIHtcclxuICAgICAgICBjb25zdCBvcmRlciA9IFsnZG93bicsICdkb3duTGVmdCcsICdkb3duUmlnaHQnLCAnbGVmdCcsICdyaWdodCcsICd1cCcsICd1cExlZnQnLCAndXBSaWdodCddO1xyXG4gICAgICAgIHRoaXMuV2FsbF9QcmVmYWIuc29ydCgoYSwgYikgPT4ge1xyXG4gICAgICAgICAgICBjb25zdCBpbmRleEEgPSBvcmRlci5pbmRleE9mKGEubmFtZSk7XHJcbiAgICAgICAgICAgIGNvbnN0IGluZGV4QiA9IG9yZGVyLmluZGV4T2YoYi5uYW1lKTtcclxuICAgICAgICAgICAgaWYgKGluZGV4QSA9PT0gLTEpIHJldHVybiAxO1xyXG4gICAgICAgICAgICBpZiAoaW5kZXhCID09PSAtMSkgcmV0dXJuIC0xO1xyXG4gICAgICAgICAgICByZXR1cm4gaW5kZXhBIC0gaW5kZXhCO1xyXG4gICAgICAgIH0pO1xyXG5cclxuICAgIH1cclxuXHJcbiAgICBzZXRQYXJ0aWNsZVNvcnQoKSB7XHJcbiAgICAgICAgY29uc3Qgb3JkZXIgPSBbJ3RvcCcsICdib3QnLCAncmlnJywgJ2xlZiddO1xyXG4gICAgICAgIHRoaXMucGFydGljbGVFZmZlY3RzLnNvcnQoKGEsIGIpID0+IHtcclxuICAgICAgICAgICAgY29uc3QgaW5kZXhBID0gb3JkZXIuaW5kZXhPZihhLm5hbWUuc3Vic3RyKDAsIDMpKTtcclxuICAgICAgICAgICAgY29uc3QgaW5kZXhCID0gb3JkZXIuaW5kZXhPZihiLm5hbWUuc3Vic3RyKDAsIDMpKTtcclxuICAgICAgICAgICAgaWYgKGluZGV4QSA9PT0gLTEpIHJldHVybiAxO1xyXG4gICAgICAgICAgICBpZiAoaW5kZXhCID09PSAtMSkgcmV0dXJuIC0xO1xyXG4gICAgICAgICAgICByZXR1cm4gaW5kZXhBIC0gaW5kZXhCO1xyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG5cclxuICAgIHNldFNvcnQoKSB7XHJcbiAgICAgICAgdGhpcy5CbG9ja19BcnJheS5zb3J0KChhLCBiKSA9PiB7XHJcbiAgICAgICAgICAgIC8vIOS7juWQjeensOS4reaPkOWPluaVsOWtl+mDqOWIhlxyXG4gICAgICAgICAgICBjb25zdCBudW1iZXJBID0gcGFyc2VJbnQoYS5uYW1lLm1hdGNoKC9cXGQrLyk/LlswXSB8fCAnMCcsIDEwKTtcclxuICAgICAgICAgICAgY29uc3QgbnVtYmVyQiA9IHBhcnNlSW50KGIubmFtZS5tYXRjaCgvXFxkKy8pPy5bMF0gfHwgJzAnLCAxMCk7XHJcbiAgICAgICAgICAgIHJldHVybiBudW1iZXJBIC0gbnVtYmVyQjtcclxuICAgICAgICB9KTtcclxuICAgIH1cclxuXHJcbiAgICBzdGFydCgpIHtcclxuXHJcbiAgICB9XHJcblxyXG4gICAgc3RhcnRHYW1lKCkge1xyXG4gICAgICAgIGNvbnNvbGUubG9nKFwi6L+b5YWl5Zy65pmv5LmL5YmNX19fX19fX19fX19fX1wiLCBjYy5meC5HYW1lQ29uZmlnLkdNX0lORk8uZmlyc3QpO1xyXG4gICAgICAgIGNjLmRpcmVjdG9yLmxvYWRTY2VuZShcIkhvbWVTY2VuZVwiKTtcclxuICAgIH1cclxuXHJcbiAgICByZXR1cm5Ib21lKCkge1xyXG4gICAgICAgIGNjLnR3ZWVuKHRoaXMubm9kZS5nZXRDaGlsZEJ5TmFtZShcIkdhbWVcIikpXHJcbiAgICAgICAgICAgIC50bygwLjUsIHsgb3BhY2l0eTogMTAwIH0pXHJcbiAgICAgICAgICAgIC5jYWxsKCgpID0+IHtcclxuXHJcbiAgICAgICAgICAgICAgICAvLyDpooTliqDovb3miJDlip/lkI7liqDovb3lnLrmma9cclxuICAgICAgICAgICAgICAgIGNjLmRpcmVjdG9yLmxvYWRTY2VuZShcIkhvbWVTY2VuZVwiLCAoZXJyKSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKGVycikge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zb2xlLmVycm9yKCfliqDovb0gSG9tZVNjZW5lIOWcuuaZr+Wksei0pTonLCBlcnIpO1xyXG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNjLmRpcmVjdG9yLmxvYWRTY2VuZShcIkhvbWVTY2VuZVwiKTtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgfSlcclxuICAgICAgICAgICAgLnN0YXJ0KCk7XHJcblxyXG4gICAgICAgIGNjLnR3ZWVuKHRoaXMubm9kZS5nZXRDaGlsZEJ5TmFtZShcIm1hc2tcIikpXHJcbiAgICAgICAgICAgIC50bygwLjUsIHsgb3BhY2l0eTogMjU1IH0pXHJcbiAgICAgICAgICAgIC5zdGFydCgpO1xyXG5cclxuICAgICAgICAvLyBjYy5sb2FkZXIucmVsZWFzZUFsbCgpO1xyXG4gICAgICAgIC8vIOmihOWKoOi9vSBIb21lU2NlbmUg5Zy65pmvXHJcblxyXG5cclxuICAgIH1cclxuXHJcblxyXG4gICAgcmVhZFVzZXJEYXRhKHJldHJ5Q291bnQgPSAwKSB7XHJcbiAgICAgICAgLy9AdHMtaWdub3JlXHJcbiAgICAgICAgaWYgKHR5cGVvZiB3eCAhPT0gJ3VuZGVmaW5lZCcgJiYgd3ggIT09IG51bGwpIHtcclxuICAgICAgICAgICAgbGV0IGxldmVsSW5mbyA9IGNjLmZ4LlN0b3JhZ2VNZXNzYWdlLmdldFN0b3JhZ2UoXCJsZXZlbFwiKTtcclxuICAgICAgICAgICAgLy/ml6fnmoTor7vlj5bmlbDmja7orr7nva7mlbDmja7mlrnms5Us5Lul5by66IGU572R5Li65Li7XHJcbiAgICAgICAgICAgIGlmIChsZXZlbEluZm8gPT0gdW5kZWZpbmVkIHx8IGxldmVsSW5mbyA9PSBcIlwiIHx8IGxldmVsSW5mbyA9PSBudWxsKSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLm9sZFJlYWREYXRhKHJldHJ5Q291bnQpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIC8v5paw55qE6K+75Y+W5pWw5o2u6K6+572u5pa55rOV77yM5Lul5pys5Zyw5Li65Li7XHJcbiAgICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5uZXdSZWFkRGF0YSgpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGNvbnNvbGUubG9nKFwi5Y2z5bCG6K+75Y+W5L2T5Yqb5YC8XCIpO1xyXG4gICAgICAgICAgICBjYy5meC5HYW1lVG9vbC5nZXRIZWFsdGgoKGRhdGEpID0+IHtcclxuICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKFwi5L2T5Yqb5YC85a6M5oiQ6L+b5YWl5ri45oiPXCIpO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5sb2FkNSA9IHRydWU7XHJcbiAgICAgICAgICAgIH0pO1xyXG5cclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgIHRoaXMubG9hZDMgPSB0cnVlO1xyXG4gICAgICAgICAgICB0aGlzLmxvYWQ0ID0gdHJ1ZTtcclxuICAgICAgICAgICAgdGhpcy5sb2FkNSA9IHRydWU7XHJcbiAgICAgICAgICAgIGNjLmZ4LkdhbWVUb29sLmdldEhlYWx0aChudWxsKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgLy8g5a2Y5YKo55So5oi35pWw5o2uXHJcbiAgICB9XHJcblxyXG4gICAgcmVhZE11c2ljQ29uZmlnKCkge1xyXG4gICAgICAgIGxldCBhdWRpb0luZm8gPSBjYy5meC5TdG9yYWdlTWVzc2FnZS5nZXRTdG9yYWdlKFwibXVzaWNcIik7XHJcbiAgICAgICAgaWYgKGF1ZGlvSW5mbyA9PSB1bmRlZmluZWQgfHwgYXVkaW9JbmZvID09IFwiXCIgfHwgYXVkaW9JbmZvID09IG51bGwpIHtcclxuICAgICAgICAgICAgYXVkaW9JbmZvID0ge1xyXG4gICAgICAgICAgICAgICAgXCJtdXNpY09wZW5cIjogdHJ1ZSwgICAgICAgICAgICAgLy/pn7PkuZBcclxuICAgICAgICAgICAgICAgIFwiZWZmZWN0T3BlblwiOiB0cnVlLCAgICAgICAgICAgIC8v6Z+z5pWIXHJcbiAgICAgICAgICAgICAgICBcInZpYnJhdGVPcGVuXCI6IHRydWUsICAgICAgICAgICAvL+mch+WKqFxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGNjLmZ4LlN0b3JhZ2VNZXNzYWdlLnNldFN0b3JhZ2UoXCJtdXNpY1wiLCBhdWRpb0luZm8pO1xyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgY2MuZnguR2FtZUNvbmZpZy5HTV9JTkZPLm11c2ljT3BlbiA9IGF1ZGlvSW5mby5tdXNpY09wZW47XHJcbiAgICAgICAgICAgIGNjLmZ4LkdhbWVDb25maWcuR01fSU5GTy5lZmZlY3RPcGVuID0gYXVkaW9JbmZvLmVmZmVjdE9wZW47XHJcbiAgICAgICAgICAgIGNjLmZ4LkdhbWVDb25maWcuR01fSU5GTy52aWJyYXRlT3BlbiA9IGF1ZGlvSW5mby52aWJyYXRlT3BlbjtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgLy/mlrDnlKjmiLfvvIzmnInmnKzlnLDnvJPlrZjor7vlj5bphY3nva5cclxuICAgIG5ld1JlYWREYXRhKCkge1xyXG4gICAgICAgIGNvbnNvbGUubG9nKFwi6K+75Y+W5paw5L+h5oGvXCIpO1xyXG4gICAgICAgIGxldCBvcGVuaWQgPSBjYy5meC5TdG9yYWdlTWVzc2FnZS5nZXRTdG9yYWdlKFwib3BlbmlkXCIpO1xyXG4gICAgICAgIGlmIChvcGVuaWQgPT0gbnVsbCB8fCBvcGVuaWQgPT0gXCJcIiB8fCBvcGVuaWQgPT0gdW5kZWZpbmVkKSB7XHJcbiAgICAgICAgICAgIGNvbnNvbGUubG9nKFwi5rKh5pyJb3BlbmlkXCIpO1xyXG4gICAgICAgICAgICAvL0B0cy1pZ25vcmVcclxuICAgICAgICAgICAgd3guY2xvdWQuY2FsbEZ1bmN0aW9uKHtcclxuICAgICAgICAgICAgICAgIG5hbWU6ICd1c2VyRGF0YScsXHJcbiAgICAgICAgICAgICAgICBkYXRhOiB7XHJcbiAgICAgICAgICAgICAgICAgICAgYWN0aW9uOiAncmVhZCdcclxuICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgICBzdWNjZXNzOiByZXMgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKCfor7vlj5bnlKjmiLfmlbDmja7miJDlip8nLCByZXMucmVzdWx0KVxyXG4gICAgICAgICAgICAgICAgICAgIGlmIChyZXMucmVzdWx0LmNvZGUgPT0gNDA0ICYmIHJlcy5yZXN1bHQubWVzc2FnZSA9PSBcIuacquaJvuWIsOeUqOaIt+aVsOaNrlwiKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIGVsc2UgaWYgKHJlcy5yZXN1bHQuY29kZSA9PSAyMDApIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHJlcy5yZXN1bHQuZGF0YSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2MuZnguR2FtZUNvbmZpZy5HTV9JTkZPLm9wZW5pZCA9IHJlcy5yZXN1bHQub3BlbmlkO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2MuZnguR2FtZUNvbmZpZy5HTV9JTkZPLnVzZXJuYW1lID0gcmVzLnJlc3VsdC5kYXRhLnVzZXJuYW1lO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2MuZnguR2FtZUNvbmZpZy5HTV9JTkZPLnVzZXJhdmF0YXIgPSByZXMucmVzdWx0LmRhdGEudXNlcmF2YXRhcjtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHJlZ2lzdGVyX3RpbWUgPSByZXMucmVzdWx0LmRhdGEucmVnaXN0ZXJfdGltZTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1pbmlHYW1lU2RrLkFQSS5zaHVzaHVfdXNlclNldChyZWdpc3Rlcl90aW1lKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNjLmZ4LlN0b3JhZ2VNZXNzYWdlLnNldFN0b3JhZ2UoXCJvcGVuaWRcIiwgY2MuZnguR2FtZUNvbmZpZy5HTV9JTkZPLm9wZW5pZCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgICAgZmFpbDogZXJyID0+IHtcclxuICAgICAgICAgICAgICAgICAgICBjb25zb2xlLmVycm9yKCfor7vlj5bnlKjmiLfmlbDmja7lpLHotKUnLCBlcnIpXHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH0pXHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICBpZiAob3BlbmlkKVxyXG4gICAgICAgICAgICAgICAgY2MuZnguR2FtZUNvbmZpZy5HTV9JTkZPLm9wZW5pZCA9IG9wZW5pZDtcclxuICAgICAgICB9XHJcblxyXG5cclxuXHJcbiAgICAgICAgLy/nrYnnuqfkv6Hmga9cclxuICAgICAgICBjYy5meC5HYW1lVG9vbC5nZXRVc2VyTGV2ZWwoKGRhdGEpID0+IHtcclxuICAgICAgICAgICAgY29uc3QgdGltZXN0YW1wID0gRGF0ZS5ub3coKTtcclxuICAgICAgICAgICAgbGV0IGxldmVsSW5mbyA9IGNjLmZ4LlN0b3JhZ2VNZXNzYWdlLmdldFN0b3JhZ2UoXCJsZXZlbFwiKTtcclxuICAgICAgICAgICAgaWYgKGRhdGEucmVzdWx0LmNvZGUgPT0gNDA0ICYmIGRhdGEucmVzdWx0Lm1lc3NhZ2UgPT0gXCLmnKrmib7liLDlhbPljaHmlbDmja5cIikge1xyXG4gICAgICAgICAgICAgICAgLy8gY29uc29sZS5sb2coXCLmsqHmnInnrYnnuqfkv6Hmga/vvIzku47nlKjmiLfmjqXlj6Pmi7/liLDmlbDmja5cIik7XHJcbiAgICAgICAgICAgICAgICBpZiAobGV2ZWxJbmZvLmxldmVsKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgY2MuZnguR2FtZUNvbmZpZy5HTV9JTkZPLmxldmVsID0gbGV2ZWxJbmZvLmxldmVsO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgdGhpcy5sb2FkNCA9IHRydWU7XHJcbiAgICAgICAgICAgICAgICBjYy5meC5HYW1lVG9vbC5zZXRVc2VyTGV2ZWwoKGRhdGEpID0+IHtcclxuICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGVsc2UgaWYgKGRhdGEucmVzdWx0LmNvZGUgPT0gMjAwKSB7XHJcbiAgICAgICAgICAgICAgICAvLyBjb25zb2xlLmxvZyhcIuacieetiee6p+S/oeaBr++8jOS7juWFs+WNoeaOpeWPo+aLv+WIsOaVsOaNrlwiLGRhdGEucmVzdWx0LmRhdGEpO1xyXG4gICAgICAgICAgICAgICAgLy/muLjmiI/liY3nq6/lrZjlgqgg5paw5LqO5pyN5Yqh5Zmo56uvLOS7pea4uOaIj+WJjeerr+S/oeaBr+S4uuS4u++8jOaUvuacjeWKoeWZqOWtmOWCqFxyXG4gICAgICAgICAgICAgICAgbGV0IHRlbXAgPSBkYXRhLnJlc3VsdC50aW1lc3RhbXAgLSBsZXZlbEluZm8udGltZXN0YW1wO1xyXG4gICAgICAgICAgICAgICAgY29uc29sZS5sb2coXCLnrYnnuqfml7bpl7Tlt646XCIsIHRlbXApO1xyXG4gICAgICAgICAgICAgICAgaWYgKChkYXRhLnJlc3VsdC50aW1lc3RhbXAgLSBsZXZlbEluZm8udGltZXN0YW1wKSA8IDEwMDAwKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKGxldmVsSW5mby5sZXZlbCkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zb2xlLmxvZyhcIuS7pea4uOaIj+WJjeerr+etiee6p+S4uuWHhlwiLCBkYXRhLnJlc3VsdC5kYXRhKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgY2MuZnguR2FtZUNvbmZpZy5HTV9JTkZPLmxldmVsID0gbGV2ZWxJbmZvLmxldmVsO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBjb25zb2xlLmxvZyhcIuetiee6p+S4ujpcIixjYy5meC5HYW1lQ29uZmlnLkdNX0lORk8ubGV2ZWwpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBjYy5meC5HYW1lVG9vbC5zZXRVc2VyTGV2ZWwoKGRhdGEpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIC8v5pyN5Yqh5Zmo56uv5a2Y5YKo5pe26Ze05paw5LqO5ri45oiP56uv77yM5Lul5pyN5Yqh5Zmo56uv5Li65Li7LOW+gOWJjeerr+WtmOWCqFxyXG4gICAgICAgICAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgICAgY29uc29sZS5sb2coXCLku6XmnI3liqHlmajnrYnnuqfkuLrlh4ZcIiwgZGF0YS5yZXN1bHQuZGF0YSk7XHJcbiAgICAgICAgICAgICAgICAgICAgY2MuZnguR2FtZUNvbmZpZy5HTV9JTkZPLmxldmVsID0gZGF0YS5yZXN1bHQuZGF0YTtcclxuICAgICAgICAgICAgICAgICAgICBsZXZlbEluZm8ubGV2ZWwgPSBjYy5meC5HYW1lQ29uZmlnLkdNX0lORk8ubGV2ZWw7XHJcbiAgICAgICAgICAgICAgICAgICAgbGV2ZWxJbmZvLnRpbWVzdGFtcCA9IHRpbWVzdGFtcDtcclxuICAgICAgICAgICAgICAgICAgICAvLyBjb25zb2xlLmxvZyhcIjExMTExMTHlrZjlgqjlhbPljaHmlbDmja46XCIsY2MuZnguR2FtZUNvbmZpZy5HTV9JTkZPLmxldmVsKTtcclxuICAgICAgICAgICAgICAgICAgICBjYy5meC5TdG9yYWdlTWVzc2FnZS5zZXRTdG9yYWdlKFwibGV2ZWxcIiwgbGV2ZWxJbmZvKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIHRoaXMubG9hZDQgPSB0cnVlO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfSk7XHJcbiAgICAgICAgLy/ph5HluIHkv6Hmga9cclxuICAgICAgICBjYy5meC5HYW1lVG9vbC5nZXRVc2VyQ29pbigoZGF0YSkgPT4ge1xyXG4gICAgICAgICAgICBjb25zdCB0aW1lc3RhbXAgPSBEYXRlLm5vdygpO1xyXG4gICAgICAgICAgICBsZXQgY29pbkluZm8gPSBjYy5meC5TdG9yYWdlTWVzc2FnZS5nZXRTdG9yYWdlKFwiY29pblwiKTtcclxuICAgICAgICAgICAgaWYgKGRhdGEucmVzdWx0LmNvZGUgPT0gNDA0ICYmIGRhdGEucmVzdWx0Lm1lc3NhZ2UgPT0gXCLmnKrmib7liLDph5HluIHmlbDmja5cIikge1xyXG4gICAgICAgICAgICAgICAgaWYgKGNvaW5JbmZvLmNvaW4pXHJcbiAgICAgICAgICAgICAgICAgICAgY2MuZnguR2FtZUNvbmZpZy5HTV9JTkZPLmNvaW4gPSBjb2luSW5mby5jb2luO1xyXG4gICAgICAgICAgICAgICAgY29uc29sZS5sb2coXCLmsqHmnInph5HluIHkv6Hmga/vvIzku47nlKjmiLfmjqXlj6Pmi7/liLDmlbDmja5cIiwgY2MuZnguR2FtZUNvbmZpZy5HTV9JTkZPLmNvaW4pO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5sb2FkMyA9IHRydWU7XHJcbiAgICAgICAgICAgICAgICBjYy5meC5HYW1lVG9vbC5zZXRVc2VyQ29pbigoZGF0YSkgPT4ge1xyXG4gICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgZWxzZSBpZiAoZGF0YS5yZXN1bHQuY29kZSA9PSAyMDApIHtcclxuICAgICAgICAgICAgICAgIC8vIGNvbnNvbGUubG9nKFwi5pyJ6YeR5biB5L+h5oGv77yM5LuO6YeR5biB5o6l5Y+j5ou/5Yiw5pWw5o2uXCIsZGF0YS5yZXN1bHQuZGF0YSk7XHJcbiAgICAgICAgICAgICAgICAvL+a4uOaIj+WJjeerr+WtmOWCqCDmlrDkuo7mnI3liqHlmajnq68s5Lul5ri45oiP5YmN56uv5L+h5oGv5Li65Li777yM5pS+5pyN5Yqh5Zmo5a2Y5YKoXHJcbiAgICAgICAgICAgICAgICBsZXQgdGVtcCA9IGRhdGEucmVzdWx0LnRpbWVzdGFtcCAtIGNvaW5JbmZvLnRpbWVzdGFtcDtcclxuICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKFwi6YeR5biB5pe26Ze05beuOlwiLCB0ZW1wKTtcclxuICAgICAgICAgICAgICAgIGlmICgoZGF0YS5yZXN1bHQudGltZXN0YW1wIC0gY29pbkluZm8udGltZXN0YW1wKSA8IDEwMDAwKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgY29uc29sZS5sb2coXCLku6XliY3nq6/ph5HluaPkuLrlh4Y6XCIsIGNvaW5JbmZvKTtcclxuICAgICAgICAgICAgICAgICAgICBpZiAoY29pbkluZm8uY29pbilcclxuICAgICAgICAgICAgICAgICAgICAgICAgY2MuZnguR2FtZUNvbmZpZy5HTV9JTkZPLmNvaW4gPSBjb2luSW5mby5jb2luO1xyXG4gICAgICAgICAgICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBjYy5meC5HYW1lQ29uZmlnLkdNX0lORk8uY29pbiA9IGRhdGEucmVzdWx0LmRhdGE7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvaW5JbmZvLmNvaW4gPSBjYy5meC5HYW1lQ29uZmlnLkdNX0lORk8uY29pbjtcclxuICAgICAgICAgICAgICAgICAgICAgICAgY29pbkluZm8udGltZXN0YW1wID0gdGltZXN0YW1wO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zb2xlLmxvZyhcIjExMTExMTExMTExXCIpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBjYy5meC5TdG9yYWdlTWVzc2FnZS5zZXRTdG9yYWdlKFwiY29pblwiLCBjb2luSW5mbyk7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKFwi5pS55Y+Y5ZCO6YeR5biBOlwiLCBjYy5meC5HYW1lQ29uZmlnLkdNX0lORk8uY29pbik7XHJcbiAgICAgICAgICAgICAgICAgICAgY2MuZnguR2FtZVRvb2wuc2V0VXNlckNvaW4oKGRhdGEpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIC8v5pyN5Yqh5Zmo56uv5a2Y5YKo5pe26Ze05paw5LqO5ri45oiP56uv77yM5Lul5pyN5Yqh5Zmo56uv5Li65Li7LOW+gOWJjeerr+WtmOWCqFxyXG4gICAgICAgICAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgICAgY29uc29sZS5sb2coXCLku6XmnI3liqHlmajph5HluaPkuLrlh4Y6XCIsIGRhdGEucmVzdWx0LmRhdGEpO1xyXG4gICAgICAgICAgICAgICAgICAgIGNjLmZ4LkdhbWVDb25maWcuR01fSU5GTy5jb2luID0gZGF0YS5yZXN1bHQuZGF0YTtcclxuICAgICAgICAgICAgICAgICAgICBjb2luSW5mby5jb2luID0gY2MuZnguR2FtZUNvbmZpZy5HTV9JTkZPLmNvaW47XHJcbiAgICAgICAgICAgICAgICAgICAgY29pbkluZm8udGltZXN0YW1wID0gdGltZXN0YW1wO1xyXG4gICAgICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKFwiMjIyMjIyMjIyMlwiKTtcclxuICAgICAgICAgICAgICAgICAgICBjYy5meC5TdG9yYWdlTWVzc2FnZS5zZXRTdG9yYWdlKFwiY29pblwiLCBjb2luSW5mbyk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB0aGlzLmxvYWQzID0gdHJ1ZTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH0pO1xyXG4gICAgICAgIC8v6YGT5YW35L+h5oGvXHJcbiAgICAgICAgY2MuZnguR2FtZVRvb2wuZ2V0VXNlclByb3AoKGRhdGEpID0+IHtcclxuICAgICAgICAgICAgY29uc3QgdGltZXN0YW1wID0gRGF0ZS5ub3coKTtcclxuICAgICAgICAgICAgbGV0IHByb3BJbmZvID0gY2MuZnguU3RvcmFnZU1lc3NhZ2UuZ2V0U3RvcmFnZShcInByb3BcIik7XHJcbiAgICAgICAgICAgIGlmIChkYXRhLnJlc3VsdC5jb2RlID09IDQwNCAmJiBkYXRhLnJlc3VsdC5tZXNzYWdlID09IFwi5pyq5om+5Yiw6YGT5YW35pWw5o2uXCIpIHtcclxuICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKFwi5rKh5pyJ6YGT5YW35L+h5oGv77yM5LuO55So5oi35o6l5Y+j5ou/5Yiw5pWw5o2uXCIsIHByb3BJbmZvKTtcclxuICAgICAgICAgICAgICAgIGlmIChwcm9wSW5mby5mcmVlemVBbW91bnQgPT0gdW5kZWZpbmVkIHx8IHByb3BJbmZvLmhhbW1lckFtb3VudCA9PSB1bmRlZmluZWQgfHwgcHJvcEluZm8ubWFnaWNBbW91bnQgPT0gdW5kZWZpbmVkKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgY29uc29sZS5sb2coXCIyMjIyMjIy6YGT5YW35pWw5o2u5byC5bi4XCIpO1xyXG4gICAgICAgICAgICAgICAgICAgIGNjLmZ4LkdhbWVDb25maWcuR01fSU5GTy5mcmVlemVBbW91bnQgPSAwO1xyXG4gICAgICAgICAgICAgICAgICAgIGNjLmZ4LkdhbWVDb25maWcuR01fSU5GTy5oYW1tZXJBbW91bnQgPSAwO1xyXG4gICAgICAgICAgICAgICAgICAgIGNjLmZ4LkdhbWVDb25maWcuR01fSU5GTy5tYWdpY0Ftb3VuID0gMDtcclxuICAgICAgICAgICAgICAgICAgICBsZXQgcHJvcEluZm9OZXcgPSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFwiZnJlZXplQW1vdW50XCI6IGNjLmZ4LkdhbWVDb25maWcuR01fSU5GTy5mcmVlemVBbW91bnQsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFwiaGFtbWVyQW1vdW50XCI6IGNjLmZ4LkdhbWVDb25maWcuR01fSU5GTy5oYW1tZXJBbW91bnQsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFwibWFnaWNBbW91bnRcIjogY2MuZnguR2FtZUNvbmZpZy5HTV9JTkZPLm1hZ2ljQW1vdW4sXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFwidGltZXN0YW1wXCI6IHRpbWVzdGFtcFxyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICBjb25zb2xlLmxvZyhcIjExMTExMTHkuIrkvKDpgZPlhbfkv6Hmga86XCIsIHByb3BJbmZvTmV3KTtcclxuICAgICAgICAgICAgICAgICAgICBjYy5meC5TdG9yYWdlTWVzc2FnZS5zZXRTdG9yYWdlKFwicHJvcFwiLCBwcm9wSW5mb05ldyk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICAvLyBjYy5meC5HYW1lQ29uZmlnLkdNX0lORk8uZnJlZXplQW1vdW50ID0gZGF0YS5yZXN1bHQuZGF0YS5mcmVlemU7XHJcbiAgICAgICAgICAgICAgICAgICAgLy8gY2MuZnguR2FtZUNvbmZpZy5HTV9JTkZPLmhhbW1lckFtb3VudCA9IGRhdGEucmVzdWx0LmRhdGEuaGFtbWVyO1xyXG4gICAgICAgICAgICAgICAgICAgIC8vIGNjLmZ4LkdhbWVDb25maWcuR01fSU5GTy5tYWdpY0Ftb3VudCA9IGRhdGEucmVzdWx0LmRhdGEubWFnaWNfd2FuZDtcclxuICAgICAgICAgICAgICAgICAgICBjYy5meC5HYW1lQ29uZmlnLkdNX0lORk8uZnJlZXplQW1vdW50ID0gcHJvcEluZm8uZnJlZXplQW1vdW50O1xyXG4gICAgICAgICAgICAgICAgICAgIGNjLmZ4LkdhbWVDb25maWcuR01fSU5GTy5oYW1tZXJBbW91bnQgPSBwcm9wSW5mby5oYW1tZXJBbW91bnQ7XHJcbiAgICAgICAgICAgICAgICAgICAgY2MuZnguR2FtZUNvbmZpZy5HTV9JTkZPLm1hZ2ljQW1vdW50ID0gcHJvcEluZm8ubWFnaWNBbW91bnQ7XHJcbiAgICAgICAgICAgICAgICB9XHJcblxyXG5cclxuICAgICAgICAgICAgICAgIC8vIGNjLmZ4LkdhbWVDb25maWcuR01fSU5GTy5mcmVlemVBbW91bnQgPSBwcm9wSW5mby5mcmVlemVBbW91bnQ7XHJcbiAgICAgICAgICAgICAgICAvLyBjYy5meC5HYW1lQ29uZmlnLkdNX0lORk8uaGFtbWVyQW1vdW50ID0gcHJvcEluZm8uaGFtbWVyQW1vdW50O1xyXG4gICAgICAgICAgICAgICAgLy8gY2MuZnguR2FtZUNvbmZpZy5HTV9JTkZPLm1hZ2ljQW1vdW50ID0gcHJvcEluZm8ubWFnaWNBbW91bnQ7XHJcbiAgICAgICAgICAgICAgICBjYy5meC5HYW1lVG9vbC5zZXRVc2VyUHJvcCgwLCAwLCAoZGF0YSkgPT4ge1xyXG4gICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgZWxzZSBpZiAoZGF0YS5yZXN1bHQuY29kZSA9PSAyMDApIHtcclxuICAgICAgICAgICAgICAgIC8vIGNvbnNvbGUubG9nKFwi5pys5Zyw5pe26Ze05oizXCIscHJvcEluZm8udGltZXN0YW1wLFwi5pyN5Yqh5Zmo5pe26Ze05oizXCIsZGF0YS5yZXN1bHQudGltZXN0YW1wKTtcclxuICAgICAgICAgICAgICAgIGlmICgoZGF0YS5yZXN1bHQudGltZXN0YW1wIC0gcHJvcEluZm8udGltZXN0YW1wKSA8IDEwMDAwKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgY29uc29sZS5sb2coXCLku6XliY3nq6/pgZPlhbfkuLrkuLs6XCIsIHByb3BJbmZvKTtcclxuICAgICAgICAgICAgICAgICAgICBpZiAocHJvcEluZm8uZnJlZXplQW1vdW50ID09IHVuZGVmaW5lZCB8fCBwcm9wSW5mby5oYW1tZXJBbW91bnQgPT0gdW5kZWZpbmVkIHx8IHByb3BJbmZvLm1hZ2ljQW1vdW50ID09IHVuZGVmaW5lZCkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zb2xlLmxvZyhcIjExMTExMemBk+WFt+aVsOaNruW8guW4uFwiLCBkYXRhLnJlc3VsdC5kYXRhKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgY2MuZnguR2FtZUNvbmZpZy5HTV9JTkZPLmZyZWV6ZUFtb3VudCA9IGRhdGEucmVzdWx0LmRhdGEuZnJlZXplO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBjYy5meC5HYW1lQ29uZmlnLkdNX0lORk8uaGFtbWVyQW1vdW50ID0gZGF0YS5yZXN1bHQuZGF0YS5oYW1tZXI7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNjLmZ4LkdhbWVDb25maWcuR01fSU5GTy5tYWdpY0Ftb3VudCA9IGRhdGEucmVzdWx0LmRhdGEubWFnaWNfd2FuZDtcclxuICAgICAgICAgICAgICAgICAgICAgICAgbGV0IHByb3BJbmZvTmV3ID0ge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJmcmVlemVBbW91bnRcIjogY2MuZnguR2FtZUNvbmZpZy5HTV9JTkZPLmZyZWV6ZUFtb3VudCxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiaGFtbWVyQW1vdW50XCI6IGNjLmZ4LkdhbWVDb25maWcuR01fSU5GTy5oYW1tZXJBbW91bnQsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIm1hZ2ljQW1vdW50XCI6IGNjLmZ4LkdhbWVDb25maWcuR01fSU5GTy5tYWdpY0Ftb3VudCxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwidGltZXN0YW1wXCI6IHRpbWVzdGFtcFxyXG4gICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKFwiMzMzMzMz5LiK5Lyg6YGT5YW35L+h5oGvOlwiLCBwcm9wSW5mb05ldyk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNjLmZ4LlN0b3JhZ2VNZXNzYWdlLnNldFN0b3JhZ2UoXCJwcm9wXCIsIHByb3BJbmZvTmV3KTtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKFwi6YGT5YW35pWw5o2u5q2j5bi4XCIpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBjYy5meC5HYW1lQ29uZmlnLkdNX0lORk8uZnJlZXplQW1vdW50ID0gcHJvcEluZm8uZnJlZXplQW1vdW50O1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBjYy5meC5HYW1lQ29uZmlnLkdNX0lORk8uaGFtbWVyQW1vdW50ID0gcHJvcEluZm8uaGFtbWVyQW1vdW50O1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBjYy5meC5HYW1lQ29uZmlnLkdNX0lORk8ubWFnaWNBbW91bnQgPSBwcm9wSW5mby5tYWdpY0Ftb3VudDtcclxuICAgICAgICAgICAgICAgICAgICAgICAgY2MuZnguR2FtZVRvb2wuc2V0VXNlclByb3AoMCwgMCwgKGRhdGEpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgICAgY2MuZnguR2FtZUNvbmZpZy5HTV9JTkZPLmZyZWV6ZUFtb3VudCA9IGRhdGEucmVzdWx0LmRhdGEuZnJlZXplO1xyXG4gICAgICAgICAgICAgICAgICAgIGNjLmZ4LkdhbWVDb25maWcuR01fSU5GTy5oYW1tZXJBbW91bnQgPSBkYXRhLnJlc3VsdC5kYXRhLmhhbW1lcjtcclxuICAgICAgICAgICAgICAgICAgICBjYy5meC5HYW1lQ29uZmlnLkdNX0lORk8ubWFnaWNBbW91bnQgPSBkYXRhLnJlc3VsdC5kYXRhLm1hZ2ljX3dhbmQ7XHJcbiAgICAgICAgICAgICAgICAgICAgbGV0IHByb3BJbmZvTmV3ID0ge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBcImZyZWV6ZUFtb3VudFwiOiBjYy5meC5HYW1lQ29uZmlnLkdNX0lORk8uZnJlZXplQW1vdW50LFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBcImhhbW1lckFtb3VudFwiOiBjYy5meC5HYW1lQ29uZmlnLkdNX0lORk8uaGFtbWVyQW1vdW50LFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBcIm1hZ2ljQW1vdW50XCI6IGNjLmZ4LkdhbWVDb25maWcuR01fSU5GTy5tYWdpY0Ftb3VudCxcclxuICAgICAgICAgICAgICAgICAgICAgICAgXCJ0aW1lc3RhbXBcIjogdGltZXN0YW1wXHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKFwiMjIyMjIyMjLkuIrkvKDpgZPlhbfkv6Hmga86XCIsIHByb3BJbmZvTmV3LCBkYXRhLnJlc3VsdCk7XHJcbiAgICAgICAgICAgICAgICAgICAgY2MuZnguU3RvcmFnZU1lc3NhZ2Uuc2V0U3RvcmFnZShcInByb3BcIiwgcHJvcEluZm9OZXcpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfSk7XHJcbiAgICB9XHJcbiAgICAvL+aXp+eUqOaIt++8jOaXoOacrOWcsOe8k+WtmOivu+WPlumFjee9rlxyXG4gICAgb2xkUmVhZERhdGEocmV0cnlDb3VudDogbnVtYmVyKSB7XHJcbiAgICAgICAgY29uc29sZS5sb2coXCLor7vlj5bml6fkv6Hmga9cIik7XHJcbiAgICAgICAgY29uc3QgTUFYX1JFVFJJRVMgPSAxNTtcclxuICAgICAgICBjb25zdCB0aW1lc3RhbXAgPSBEYXRlLm5vdygpO1xyXG4gICAgICAgIC8vIOivu+WPlueUqOaIt+aVsOaNrlxyXG4gICAgICAgIC8vQHRzLWlnbm9yZVxyXG4gICAgICAgIHd4LmNsb3VkLmNhbGxGdW5jdGlvbih7XHJcbiAgICAgICAgICAgIG5hbWU6ICd1c2VyRGF0YScsXHJcbiAgICAgICAgICAgIGRhdGE6IHtcclxuICAgICAgICAgICAgICAgIGFjdGlvbjogJ3JlYWQnXHJcbiAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgIHN1Y2Nlc3M6IHJlcyA9PiB7XHJcbiAgICAgICAgICAgICAgICBjb25zb2xlLmxvZygn6K+75Y+W55So5oi35pWw5o2u5oiQ5YqfJywgcmVzLnJlc3VsdClcclxuICAgICAgICAgICAgICAgIGlmIChyZXMucmVzdWx0LmNvZGUgPT0gNDA0ICYmIHJlcy5yZXN1bHQubWVzc2FnZSA9PSBcIuacquaJvuWIsOeUqOaIt+aVsOaNrlwiKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKHJlcy5yZXN1bHQub3BlbmlkKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNjLmZ4LkdhbWVDb25maWcuR01fSU5GTy5vcGVuaWQgPSByZXMucmVzdWx0Lm9wZW5pZFxyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICBjYy5meC5HYW1lQ29uZmlnLkdNX0lORk8uZmlyc3QgPSB0cnVlO1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMubG9hZDMgPSB0cnVlO1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMubG9hZDQgPSB0cnVlO1xyXG4gICAgICAgICAgICAgICAgICAgIGxldCBsZXZlbEluZm8gPSB7IFwibGV2ZWxcIjogMCwgXCJ0aW1lc3RhbXBcIjogdGltZXN0YW1wIH07XHJcbiAgICAgICAgICAgICAgICAgICAgY2MuZnguU3RvcmFnZU1lc3NhZ2Uuc2V0U3RvcmFnZShcImxldmVsXCIsIGxldmVsSW5mbyk7XHJcbiAgICAgICAgICAgICAgICAgICAgbGV0IGNvaW5JbmZvID0geyBcImNvaW5cIjogMCwgXCJ0aW1lc3RhbXBcIjogdGltZXN0YW1wIH07XHJcbiAgICAgICAgICAgICAgICAgICAgY29uc29sZS5sb2coXCIzMzMzMzMzMzMzM1wiKTtcclxuICAgICAgICAgICAgICAgICAgICBjYy5meC5TdG9yYWdlTWVzc2FnZS5zZXRTdG9yYWdlKFwiY29pblwiLCBjb2luSW5mbyk7XHJcbiAgICAgICAgICAgICAgICAgICAgbGV0IHByb3BJbmZvID0ge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBcImZyZWV6ZUFtb3VudFwiOiAwLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBcImhhbW1lckFtb3VudFwiOiAwLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBcIm1hZ2ljQW1vdW50XCI6IDAsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFwidGltZXN0YW1wXCI6IHRpbWVzdGFtcCxcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgY2MuZnguU3RvcmFnZU1lc3NhZ2Uuc2V0U3RvcmFnZShcInByb3BcIiwgcHJvcEluZm8pO1xyXG5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgY2MuZnguR2FtZVRvb2wuc2V0VXNlckluZm8oKGRhdGEpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGRhdGEucmVzdWx0LmNvZGUgPT0gMjAwKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zb2xlLmxvZyhcIuS4iuS8oOeUqOaIt+S/oeaBr+aIkOWKn1wiLCBkYXRhKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vQHRzLWlnbm9yZVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgd3guY2xvdWQuY2FsbEZ1bmN0aW9uKHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiAndXNlckRhdGEnLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGE6IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWN0aW9uOiAncmVhZCdcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN1Y2Nlc3M6IHJlcyA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKFwi5LiK5Lyg5ZCO77yM6K+75Y+W55So5oi35L+h5oGv77yM5Li65LiK5oql5rOo5YaM5pe26Ze0XCIpXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChyZXMucmVzdWx0LmNvZGUgPT0gMjAwKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB0aW1lID0gcmVzLnJlc3VsdC5kYXRhLnJlZ2lzdGVyX3RpbWU7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBNaW5pR2FtZVNkay5BUEkuc2h1c2h1X3VzZXJTZXQodGltZSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KVxyXG4gICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgICAgICAgY29uc29sZS5sb2coXCLmnI3liqHlmajkuZ/msqHmnInph5HluIHkv6Hmga9cIiwgY2MuZnguR2FtZUNvbmZpZy5HTV9JTkZPLmNvaW4pO1xyXG4gICAgICAgICAgICAgICAgICAgIGNjLmZ4LkdhbWVUb29sLnNldFVzZXJDb2luKGNjLmZ4LkdhbWVDb25maWcuR01fSU5GTy5jb2luLCAoZGF0YSkgPT4ge1xyXG5cclxuICAgICAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgICAgICAgICBjYy5meC5HYW1lVG9vbC5zZXRVc2VyTGV2ZWwoKGRhdGEpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgY2MuZnguR2FtZUNvbmZpZy5HTV9JTkZPLmZyZWV6ZUFtb3VudCA9IDA7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNjLmZ4LkdhbWVDb25maWcuR01fSU5GTy5oYW1tZXJBbW91bnQgPSAwO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBjYy5meC5HYW1lQ29uZmlnLkdNX0lORk8ubWFnaWNBbW91bnQgPSAwO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBjYy5meC5HYW1lVG9vbC5zZXRVc2VyUHJvcCgwLCAwLCAoZGF0YSkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGRhdGEucmVzdWx0LmNvZGUgPT0gMjAwKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc29sZS5sb2coXCLkuIrkvKDpgZPlhbfkv6Hmga/miJDlip9cIiwgZGF0YSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBNaW5pR2FtZVNkay5BUEkuc2hvd1RvYXN0KFwi572R57uc5byC5bi477yM5q2j5Zyo5Yqq5Yqb5Yqg6L29XCIpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLm9sZFJlYWREYXRhKDApO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sIDEwMDApO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgICAgICAgICB9LCAwKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIGVsc2UgaWYgKHJlcy5yZXN1bHQuY29kZSA9PSAyMDApIHtcclxuICAgICAgICAgICAgICAgICAgICBpZiAocmVzLnJlc3VsdC5kYXRhKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNjLmZ4LkdhbWVDb25maWcuR01fSU5GTy5vcGVuaWQgPSByZXMucmVzdWx0Lm9wZW5pZDtcclxuICAgICAgICAgICAgICAgICAgICAgICAgY2MuZnguR2FtZUNvbmZpZy5HTV9JTkZPLmxldmVsID0gcmVzLnJlc3VsdC5kYXRhLmxldmVsO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBjYy5meC5HYW1lQ29uZmlnLkdNX0lORk8uY29pbiA9IHJlcy5yZXN1bHQuZGF0YS5jb2luQW1vdW50O1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBjYy5meC5HYW1lQ29uZmlnLkdNX0lORk8uZnJlZXplQW1vdW50ID0gcmVzLnJlc3VsdC5kYXRhLmZyZWV6ZUFtb3VudDtcclxuICAgICAgICAgICAgICAgICAgICAgICAgY2MuZnguR2FtZUNvbmZpZy5HTV9JTkZPLmhhbW1lckFtb3VudCA9IHJlcy5yZXN1bHQuZGF0YS5oYW1tZXJBbW91bnQ7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNjLmZ4LkdhbWVDb25maWcuR01fSU5GTy5tYWdpY0Ftb3VudCA9IHJlcy5yZXN1bHQuZGF0YS5tYWdpY0Ftb3VudDtcclxuICAgICAgICAgICAgICAgICAgICAgICAgY2MuZnguR2FtZUNvbmZpZy5HTV9JTkZPLnVzZXJuYW1lID0gcmVzLnJlc3VsdC5kYXRhLnVzZXJuYW1lO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBjYy5meC5HYW1lQ29uZmlnLkdNX0lORk8udXNlcmF2YXRhciA9IHJlcy5yZXN1bHQuZGF0YS51c2VyYXZhdGFyO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBjYy5meC5TdG9yYWdlTWVzc2FnZS5zZXRTdG9yYWdlKFwib3BlbmlkXCIsIGNjLmZ4LkdhbWVDb25maWcuR01fSU5GTy5vcGVuaWQpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCByZWdpc3Rlcl90aW1lID0gcmVzLnJlc3VsdC5kYXRhLnJlZ2lzdGVyX3RpbWU7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIE1pbmlHYW1lU2RrLkFQSS5zaHVzaHVfdXNlclNldChyZWdpc3Rlcl90aW1lKTtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNjLmZ4LkdhbWVUb29sLmdldFVzZXJDb2luKChkYXRhKSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoZGF0YS5yZXN1bHQuY29kZSA9PSA0MDQgJiYgZGF0YS5yZXN1bHQubWVzc2FnZSA9PSBcIuacquaJvuWIsOmHkeW4geaVsOaNrlwiKSB7XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBjb2luSW5mbyA9IHsgXCJjb2luXCI6IDAsIFwidGltZXN0YW1wXCI6IHRpbWVzdGFtcCB9O1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNjLmZ4LkdhbWVDb25maWcuR01fSU5GTy5jb2luID0gMDtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYy5meC5TdG9yYWdlTWVzc2FnZS5zZXRTdG9yYWdlKFwiY29pblwiLCBjb2luSW5mbyk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc29sZS5sb2coXCLmsqHmnInph5HluIHkv6Hmga/vvIzku47nlKjmiLfmjqXlj6Pmi7/liLDmlbDmja5cIiwgY2MuZnguR2FtZUNvbmZpZy5HTV9JTkZPLmNvaW4pO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNjLmZ4LkdhbWVUb29sLnNldFVzZXJDb2luKChkYXRhKSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGNvbnNvbGUubG9nKFwi5LiK5LygXCIsZGF0YSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMubG9hZDMgPSB0cnVlO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSBpZiAoZGF0YS5yZXN1bHQuY29kZSA9PSAyMDApIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBjb25zb2xlLmxvZyhcIuaciemHkeW4geS/oeaBr++8jOS7jumHkeW4geaOpeWPo+aLv+WIsOaVsOaNrlwiLGRhdGEucmVzdWx0LmRhdGEpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNjLmZ4LkdhbWVDb25maWcuR01fSU5GTy5jb2luID0gZGF0YS5yZXN1bHQuZGF0YTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgY29pbkluZm8gPSB7IFwiY29pblwiOiBjYy5meC5HYW1lQ29uZmlnLkdNX0lORk8uY29pbiwgXCJ0aW1lc3RhbXBcIjogdGltZXN0YW1wIH07XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc29sZS5sb2coXCLlrZjlgqjph5HluIHkv6Hmga86XCIsIGNjLmZ4LkdhbWVDb25maWcuR01fSU5GTy5jb2luKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zb2xlLmxvZyhcIjQ0NDQ0NDQ0NDRcIik7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2MuZnguU3RvcmFnZU1lc3NhZ2Uuc2V0U3RvcmFnZShcImNvaW5cIiwgY29pbkluZm8pO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMubG9hZDMgPSB0cnVlO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICB9KVxyXG4gICAgICAgICAgICAgICAgICAgIH0sIDUwMCk7XHJcblxyXG4gICAgICAgICAgICAgICAgICAgIGNjLmZ4LkdhbWVUb29sLmdldFVzZXJMZXZlbCgoZGF0YSkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoZGF0YS5yZXN1bHQuY29kZSA9PSA0MDQgJiYgZGF0YS5yZXN1bHQubWVzc2FnZSA9PSBcIuacquaJvuWIsOWFs+WNoeaVsOaNrlwiKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zb2xlLmxvZyhcIuayoeacieetiee6p+S/oeaBr++8jOS7jueUqOaIt+aOpeWPo+aLv+WIsOaVsOaNrlwiKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBsZXZlbEluZm8gPSB7IFwibGV2ZWxcIjogMCwgXCJ0aW1lc3RhbXBcIjogdGltZXN0YW1wIH07XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBjb25zb2xlLmxvZyhcIjMzMzMzM+WtmOWCqOWFs+WNoeaVsOaNrjpcIixsZXZlbEluZm8pO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2MuZnguR2FtZUNvbmZpZy5HTV9JTkZPLmxldmVsID0gMDtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNjLmZ4LlN0b3JhZ2VNZXNzYWdlLnNldFN0b3JhZ2UoXCJsZXZlbFwiLCBsZXZlbEluZm8pO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2MuZnguR2FtZVRvb2wuc2V0VXNlckxldmVsKChkYXRhKSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc29sZS5sb2coXCLmi7/liLDnmoTmlbDmja5cIiwgZGF0YSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5sb2FkNCA9IHRydWU7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICBlbHNlIGlmIChkYXRhLnJlc3VsdC5jb2RlID09IDIwMCkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc29sZS5sb2coXCLmnInnrYnnuqfkv6Hmga/vvIzku47lhbPljaHmjqXlj6Pmi7/liLDmlbDmja5cIiwgZGF0YS5yZXN1bHQuZGF0YSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYy5meC5HYW1lQ29uZmlnLkdNX0lORk8ubGV2ZWwgPSBkYXRhLnJlc3VsdC5kYXRhO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGxldmVsSW5mbyA9IHsgXCJsZXZlbFwiOiBjYy5meC5HYW1lQ29uZmlnLkdNX0lORk8ubGV2ZWwsIFwidGltZXN0YW1wXCI6IHRpbWVzdGFtcCB9O1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gY29uc29sZS5sb2coXCI0NDQ0NDTlrZjlgqjlhbPljaHkv6Hmga86XCIsbGV2ZWxJbmZvKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNjLmZ4LlN0b3JhZ2VNZXNzYWdlLnNldFN0b3JhZ2UoXCJsZXZlbFwiLCBsZXZlbEluZm8pO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5sb2FkNCA9IHRydWU7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICB9KVxyXG4gICAgICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBjYy5meC5HYW1lVG9vbC5nZXRVc2VyUHJvcCgoZGF0YSkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGRhdGEucmVzdWx0LmNvZGUgPT0gNDA0ICYmIGRhdGEucmVzdWx0Lm1lc3NhZ2UgPT0gXCLmnKrmib7liLDpgZPlhbfmlbDmja5cIikge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKFwi5rKh5pyJ6YGT5YW35L+h5oGv77yM5LuO55So5oi35o6l5Y+j5ou/5Yiw5pWw5o2uXCIpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNjLmZ4LkdhbWVDb25maWcuR01fSU5GTy5mcmVlemVBbW91bnQgPSAwO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNjLmZ4LkdhbWVDb25maWcuR01fSU5GTy5oYW1tZXJBbW91bnQgPSAwO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNjLmZ4LkdhbWVDb25maWcuR01fSU5GTy5tYWdpY0Ftb3VudCA9IDA7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IHByb3BJbmZvID0ge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcImZyZWV6ZUFtb3VudFwiOiAwLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcImhhbW1lckFtb3VudFwiOiAwLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIm1hZ2ljQW1vdW50XCI6IDAsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwidGltZXN0YW1wXCI6IHRpbWVzdGFtcCxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc29sZS5sb2coXCLkuIrkvKDpgZPlhbfkv6Hmga86XCIsIHByb3BJbmZvKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYy5meC5TdG9yYWdlTWVzc2FnZS5zZXRTdG9yYWdlKFwicHJvcFwiLCBwcm9wSW5mbyk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2MuZnguR2FtZVRvb2wuc2V0VXNlclByb3AoMCwgMCwgKGRhdGEpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgaWYgKGRhdGEucmVzdWx0LmNvZGUgPT0gMjAwKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc29sZS5sb2coXCLmnInpgZPlhbfkv6Hmga/vvIzku47pgZPlhbfmjqXlj6Pmi7/liLDmlbDmja5cIiwgZGF0YS5yZXN1bHQuZGF0YSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2MuZnguR2FtZUNvbmZpZy5HTV9JTkZPLmZyZWV6ZUFtb3VudCA9IGRhdGEucmVzdWx0LmRhdGEuZnJlZXplIHx8IDA7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2MuZnguR2FtZUNvbmZpZy5HTV9JTkZPLmhhbW1lckFtb3VudCA9IGRhdGEucmVzdWx0LmRhdGEuaGFtbWVyIHx8IDA7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2MuZnguR2FtZUNvbmZpZy5HTV9JTkZPLm1hZ2ljQW1vdW50ID0gZGF0YS5yZXN1bHQuZGF0YS5tYWdpY193YW5kIHx8IDA7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IHByb3BJbmZvID0ge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcImZyZWV6ZUFtb3VudFwiOiBjYy5meC5HYW1lQ29uZmlnLkdNX0lORk8uZnJlZXplQW1vdW50LFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcImhhbW1lckFtb3VudFwiOiBjYy5meC5HYW1lQ29uZmlnLkdNX0lORk8uaGFtbWVyQW1vdW50LFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIm1hZ2ljQW1vdW50XCI6IGNjLmZ4LkdhbWVDb25maWcuR01fSU5GTy5tYWdpY0Ftb3VudCxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJ0aW1lc3RhbXBcIjogdGltZXN0YW1wLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zb2xlLmxvZyhcIuS4iuS8oOmBk+WFt+S/oeaBrzpcIiwgcHJvcEluZm8pO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNjLmZ4LlN0b3JhZ2VNZXNzYWdlLnNldFN0b3JhZ2UoXCJwcm9wXCIsIHByb3BJbmZvKTtcclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pXHJcbiAgICAgICAgICAgICAgICAgICAgfSwgMCk7XHJcblxyXG4gICAgICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgZmFpbDogZXJyID0+IHtcclxuICAgICAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoJ+ivu+WPlueUqOaIt+aVsOaNruWksei0pScsIGVycilcclxuICAgICAgICAgICAgICAgIGlmIChyZXRyeUNvdW50IDwgTUFYX1JFVFJJRVMpIHtcclxuICAgICAgICAgICAgICAgICAgICBjb25zb2xlLmVycm9yKGDor7vlj5bnlKjmiLfmlbDmja7lpLHotKXvvIznrKwgJHtyZXRyeUNvdW50ICsgMX0g5qyh6YeN6K+V77yM6ZSZ6K+v5L+h5oGvOmAsIGVycik7XHJcbiAgICAgICAgICAgICAgICAgICAgLy8g5bu26L+fIDIg56eS5ZCO6YeN6K+VXHJcbiAgICAgICAgICAgICAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMucmVhZFVzZXJEYXRhKHJldHJ5Q291bnQgKyAxKTtcclxuICAgICAgICAgICAgICAgICAgICB9LCAyMDAwKTtcclxuICAgICAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgICAgY29uc29sZS5lcnJvcign6K+75Y+W55So5oi35pWw5o2u5aSx6LSl77yM6L6+5Yiw5pyA5aSn6YeN6K+V5qyh5pWw77yM6YCA5Ye65ri45oiPJywgZXJyKTtcclxuICAgICAgICAgICAgICAgICAgICAvLyDpgIDlh7rmuLjmiI9cclxuICAgICAgICAgICAgICAgICAgICBjYy5nYW1lLmVuZCgpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfSlcclxuICAgIH1cclxuXHJcbiAgICBzZXRVc2VyRGF0YSgpIHtcclxuICAgICAgICBjYy5meC5HYW1lQ29uZmlnLkdhbWVUb29sKChkYXRhKSA9PiB7XHJcbiAgICAgICAgICAgIGNvbnNvbGUubG9nKFwi5LiK5LygXCIsIGRhdGEpO1xyXG4gICAgICAgIH0pXHJcbiAgICB9XHJcblxyXG4gICAgc3RhcnRUaW1lQ3V0RG93bigpIHtcclxuICAgICAgICB0aGlzLnNjaGVkdWxlQ2FsbGJhY2sgPSBmdW5jdGlvbiAoKSB7XHJcbiAgICAgICAgICAgIGlmICh0aGlzLnRpbWVOdW1iZXIgPD0gMCkge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5zdG9wVGltZUN1dERvd24oKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgICAgIHRoaXMudGltZU51bWJlciAtPSAxO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfS5iaW5kKHRoaXMpO1xyXG4gICAgICAgIHRoaXMuc2NoZWR1bGUodGhpcy5zY2hlZHVsZUNhbGxiYWNrLCAxKTtcclxuICAgIH1cclxuXHJcbiAgICBzdG9wVGltZUN1dERvd24oKSB7XHJcbiAgICAgICAgaWYgKHRoaXMuc2NoZWR1bGVDYWxsYmFjaykge1xyXG4gICAgICAgICAgICB0aGlzLnVuc2NoZWR1bGUodGhpcy5zY2hlZHVsZUNhbGxiYWNrKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgdXBkYXRlKGR0KSB7XHJcbiAgICAgICAgaWYgKHRoaXMubG9hZDEgJiYgdGhpcy5sb2FkMiAmJiB0aGlzLmxvYWQzICYmIHRoaXMubG9hZDQgJiYgdGhpcy5sb2FkNSAmJiB0aGlzLnRpbWVOdW1iZXIgPD0gMCkge1xyXG4gICAgICAgICAgICB0aGlzLmxvYWQxID0gdGhpcy5sb2FkMiA9IGZhbHNlO1xyXG4gICAgICAgICAgICBNaW5pR2FtZVNkay5BUEkuc2h1c2h1X0luaXQoKTtcclxuICAgICAgICAgICAgdGhpcy5zdGFydEdhbWUoKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcbn1cclxuIl19 //------QC-SOURCE-SPLIT------ (function() { @@ -5215,397 +5895,397 @@ cc._RF.pop(); cc._RF.push(module, 'c5692vnhwNF5J9nI7VNKQNW', 'GameConfig'); // Script/module/Config/GameConfig.ts -"use strict"; -var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) { - var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; - if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc); - else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; - return c > 3 && r && Object.defineProperty(target, key, r), r; -}; -Object.defineProperty(exports, "__esModule", { value: true }); -exports.GameConfig = void 0; -var _a = cc._decorator, ccclass = _a.ccclass, property = _a.property; -var GameConfig = /** @class */ (function () { - function GameConfig() { - } - GameConfig_1 = GameConfig; - Object.defineProperty(GameConfig, "Instance", { - //游戏内信息 - get: function () { - if (this._instance == null) { - this._instance = new GameConfig_1(); - } - return this._instance; - }, - enumerable: false, - configurable: true - }); - //getSeedRandom - GameConfig.init = function (Authentication) { - //@ts-ignore - if (typeof wx !== 'undefined' && wx !== null) { - //@ts-ignore - wx.cloud.init(); - } - this.TA = null; - this.CLICK_init(); - this.GM_INFO_init(); - this.LEVEL_INFO_init(false, 0); - var self = this; - //GAME_DATA 废弃了,暂时不删除以防后面修改回 一整局传一次 - this.GAME_DATA = []; - // if(!Authentication) self.Authentication(); - }; - GameConfig.generateUUID = function () { - return 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, function (c) { - var r = Math.random() * 16 | 0; - var v = c === 'x' ? r : (r & 0x3 | 0x8); - return v.toString(16); - }); - }; - // 版本比较函数 - GameConfig.compareVersion = function (v1, v2) { - var arr1 = v1.split('.'); - var arr2 = v2.split('.'); - var len = Math.max(arr1.length, arr2.length); - for (var i = 0; i < len; i++) { - var num1 = parseInt(arr1[i] || '0', 10); - var num2 = parseInt(arr2[i] || '0', 10); - if (num1 > num2) { - return 1; - } - else if (num1 < num2) { - return -1; - } - } - return 0; - }; - GameConfig.GM_INFO_SET = function (key, value) { - this.GM_INFO[key] = value; - }; - GameConfig.CLICK_init = function () { - this.CLICK_DATA = - { - type: 1, - success: false, - round: 0, - getScore: 0, - cumulativeScore: 0, - mapId: "", - difficulty: 0, - optimizedSteps: 0, - usedSteps: 0, - stepList: [], - startTime: -1, - submitTime: -1, - duration: 0, - drawingBack: 0, - drawingReset: 0, - timer: 0 //测评倒计时剩余时间 去秒 - }; - }; - GameConfig.CLICK_SET = function (key, value) { - this.CLICK_DATA[key] = value; - }; - //数据备用 - GameConfig.GM_INFO_init = function () { - var _this = this; - this.GM_INFO = { - // isEnd: false, - mean_Time: 0, - hp: 5, - review: 0, - currSeed: 200000, - openid: "", - gameId: "100001", - userId: 0, - scode: "", - username: "user", - useravatar: "", - guide: true, - url: "https://api.sparkus.cn", - coin: 0, - success: false, - matchId: null, - gameState: false, - custom: 0, - round: 0, - level: 0, - stepTimeList: 0, - successList: [], - first: false, - score: 0, - scale: 1, - min_Steps: 0, - min_Time: 0, - freezeAmount: 0, - hammerAmount: 0, - magicAmount: 0, - musicOpen: true, - effectOpen: true, - vibrateOpen: true, - }; - // this.setCode(this.getKey("scode")); - // this.GM_INFO.level = 0; - cc.resources.load("Json/NEW_LEVEL", function (err, res) { - if (err) { - console.error("加载 NEW_LEVEL.JSON 失败:", err); - return; - } - var newLevelData = res.json; - _this.NEW_LEVEL = newLevelData.NEW_LEVEL; - // 可以根据需求对 newLevelData 进行处理 - // //console.log("NEW_LEVEL.JSON 加载成功:", newLevelData); - }); - }; - GameConfig.LEVEL_INFO_init = function (type, time) { - // 示例 围墙会根据缺的地块自动生成 - // 带缺口 {"id":"1006","map":[10,11],"gap":[cc.v2(4,9),cc.v2(5,9)]}, - // 带升降地块 {"id":"1004","map":[7,8],"risefall":[{pos:cc.v2(5,4),color:2},{pos:cc.v2(5,5),color:5}]}, - // 如果普通的就 {"id":"1001","map":[6,7]}, 这个样子就可以了 - var self = this; - if ((cc.fx.GameConfig.GM_INFO.level) > 156) { - cc.fx.GameConfig.GM_INFO.level = 156; - } - var name = "Json/level" + (cc.fx.GameConfig.GM_INFO.level + 1); - // //console.log("关卡名称:",name); - // name = "Json/level" + 68; - // cc.fx.StorageMessage.setStorage("level",cc.fx.GameConfig.GM_INFO.level.toString()); - cc.resources.load(name, function (err, res) { - if (err) { - cc.fx.GameTool.addLevel(); - self.LEVEL_INFO_init(type, time); - return; - } - var jsonData = res.json; - self.BLOCK_INFO = jsonData["BLOCK_INFO"]; - self.LEVEL_INFO = jsonData["LEVEL_INFO"]; - self.WALL_INFO = jsonData["WALL_INFO"]; - // //console.log("配置加载完成"); - if (type) { - cc.director.preloadScene("GameScene", function () { - if (time == 0) - cc.director.loadScene("GameScene"); - else { - setTimeout(function () { - cc.director.loadScene("GameScene"); - }, time); - } - }); - } - }); - //道具位置信息 - this.PROP_INFO = [ - { - "pos1": { "x": -66, "y": 60, "z": 0 }, - "pos2": { "x": -19, "y": 36, "z": 0 }, - "pos3": { "x": -34.362, "y": 13.246, "z": 0 }, - "pos4": { "x": -17, "y": 12, "z": 0 }, - "pos5": { "x": -85, "y": 70, "z": 0 }, - "pos6": { "x": -5, "y": 3, "z": 0 }, - }, - { - "pos1": { "x": -126, "y": 61, "z": 0 }, - "pos2": { "x": -25.792, "y": 34.675, "z": 0 }, - "pos3": { "x": -94.792, "y": 21.675, "z": 0 }, - "pos4": { "x": -20, "y": 13, "z": 0 }, - "pos5": { "x": -140, "y": 68, "z": 0 }, - "pos6": { "x": -2, "y": 0, "z": 0 }, - }, - { - "pos1": { "x": -67, "y": 122, "z": 0 }, - "pos2": { "x": -20, "y": 94, "z": 0 }, - "pos3": { "x": -34.792, "y": 23.675, "z": 0 }, - "pos4": { "x": -14, "y": 24, "z": 0 }, - "pos5": { "x": -84, "y": 128, "z": 0 }, - "pos6": { "x": -5, "y": 3, "z": 0 }, - }, - { - "pos1": { "x": -178, "y": 61, "z": 0 }, - "pos2": { "x": -34.792, "y": 37.675, "z": 0 }, - "pos3": { "x": -150, "y": 23.675, "z": 0 }, - "pos4": { "x": -22, "y": 16, "z": 0 }, - "pos5": { "x": -200, "y": 67, "z": 0 }, - "pos6": { "x": 0, "y": 0, "z": 0 }, - }, - { - "pos1": { "x": -63, "y": 178, "z": 0 }, - "pos2": { "x": -17.792, "y": 166.675, "z": 0 }, - "pos3": { "x": -31.792, "y": 33.675, "z": 0 }, - "pos4": { "x": -14, "y": 37, "z": 0 }, - "pos5": { "x": -78, "y": 182, "z": 0 }, - "pos6": { "x": 0, "y": 2, "z": 0 }, - }, - { - "pos1": { "x": -123, "y": 124, "z": 0 }, - "pos2": { "x": -25.792, "y": 99.675, "z": 0 }, - "pos3": { "x": -97.792, "y": 27.675, "z": 0 }, - "pos4": { "x": -27, "y": 19, "z": 0 }, - "pos5": { "x": -135, "y": 127, "z": 0 }, - "pos6": { "x": 0, "y": 0, "z": 0 }, - }, - { - "pos1": { "x": -64, "y": 178, "z": 0 }, - "pos2": { "x": -24.792, "y": 275.675, "z": 0 }, - "pos3": { "x": -31.792, "y": 35.675, "z": 0 }, - "pos4": { "x": -7, "y": 39, "z": 0 }, - "pos5": { "x": -77, "y": 188, "z": 0 }, - "pos6": { "x": 0, "y": 0, "z": 0 }, - }, - { - "pos1": { "x": -178, "y": 186, "z": 0 }, - "pos2": { "x": -31.792, "y": 163.675, "z": 0 }, - "pos3": { "x": -33.792, "y": 34.675, "z": 0 }, - "pos4": { "x": -18, "y": 30, "z": 0 }, - "pos5": { "x": -200, "y": 192, "z": 0 }, - "pos6": { "x": 0, "y": 5, "z": 0 }, - }, - { - "pos1": { "x": -186, "y": 178, "z": 0 }, - "pos2": { "x": -25.792, "y": 38.675, "z": 0 }, - "pos3": { "x": -153.792, "y": 34.675, "z": 0 }, - "pos4": { "x": -23, "y": 14, "z": 0 }, - "pos5": { "x": -200, "y": 185, "z": 0 }, - "pos6": { "x": 0, "y": 0, "z": 0 }, - }, - { - "pos1": { "x": -183, "y": 64, "z": 0 }, - "pos2": { "x": -37.792, "y": 37.675, "z": 0 }, - "pos3": { "x": -36.792, "y": 26.675, "z": 0 }, - "pos4": { "x": -24, "y": 17, "z": 0 }, - "pos5": { "x": -212, "y": 74, "z": 0 }, - "pos6": { "x": 0, "y": 0, "z": 0 }, - }, - { - "pos1": { "x": -65, "y": 177, "z": 0 }, - "pos2": { "x": 93.208, "y": 276.675, "z": 0 }, - "pos3": { "x": -33.792, "y": 34.675, "z": 0 }, - "pos4": { "x": 3, "y": 31, "z": 0 }, - "pos5": { "x": -80, "y": 190, "z": 0 }, - "pos6": { "x": 0, "y": 3, "z": 0 }, - }, - { - "pos1": { "x": 58, "y": 179, "z": 0 }, - "pos2": { "x": 205.225, "y": 154.034, "z": 0 }, - "pos3": { "x": -29.642, "y": 25.691, "z": 0 }, - "pos4": { "x": 7.218, "y": 29.765, "z": 0 }, - "pos5": { "x": 45, "y": 185, "z": 0 }, - "pos6": { "x": 0, "y": 0, "z": 0 }, - }, - { - "pos1": { "x": -68, "y": 182, "z": 0 }, - "pos2": { "x": -25.792, "y": 37.675, "z": 0 }, - "pos3": { "x": -35.792, "y": 33.675, "z": 0 }, - "pos4": { "x": -14, "y": 12, "z": 0 }, - "pos5": { "x": -82, "y": 190, "z": 0 }, - "pos6": { "x": -2, "y": 1, "z": 0 }, - }, - { - "pos1": { "x": -184, "y": 62, "z": 0 }, - "pos2": { "x": -35.792, "y": 36.675, "z": 0 }, - "pos3": { "x": -271.792, "y": 24.675, "z": 0 }, - "pos4": { "x": -17, "y": 20, "z": 0 }, - "pos5": { "x": -200, "y": 72, "z": 0 }, - "pos6": { "x": 0, "y": 0, "z": 0 }, - }, - { - "pos1": { "x": -62, "y": 175, "z": 0 }, - "pos2": { "x": 87.208, "y": 164.675, "z": 0 }, - "pos3": { "x": -31.792, "y": 35.675, "z": 0 }, - "pos4": { "x": -6, "y": 24, "z": 0 }, - "pos5": { "x": -79, "y": 172, "z": 0 }, - "pos6": { "x": 0, "y": 5, "z": 0 }, - }, - { - "pos1": { "x": -184, "y": 72, "z": 0 }, - "pos2": { "x": -33.792, "y": 38.675, "z": 0 }, - "pos3": { "x": -154.792, "y": 29.675, "z": 0 }, - "pos4": { "x": -29, "y": 16, "z": 0 }, - "pos5": { "x": -201, "y": 85, "z": 0 }, - "pos6": { "x": -1, "y": 3, "z": 0 }, - }, - { - "pos1": { "x": -64, "y": 181, "z": 0 }, - "pos2": { "x": 95.208, "y": 155.675, "z": 0 }, - "pos3": { "x": -30.792, "y": 36.675, "z": 0 }, - "pos4": { "x": -12, "y": 32, "z": 0 }, - "pos5": { "x": -78, "y": 190, "z": 0 }, - "pos6": { "x": 0, "y": 3, "z": 0 }, - }, - { - "pos1": { "x": -65, "y": 178, "z": 0 }, - "pos2": { "x": -21.792, "y": 156.675, "z": 0 }, - "pos3": { "x": -31.792, "y": 37.675, "z": 0 }, - "pos4": { "x": -12, "y": 32, "z": 0 }, - "pos5": { "x": -78, "y": 188, "z": 0 }, - "pos6": { "x": 0, "y": 2, "z": 0 }, - }, - { - "pos1": { "x": -62, "y": 183, "z": 0 }, - "pos2": { "x": 88.208, "y": 162.675, "z": 0 }, - "pos3": { "x": -29.792, "y": 41.675, "z": 0 }, - "pos4": { "x": -12, "y": 18, "z": 0 }, - "pos5": { "x": -80, "y": 188, "z": 0 }, - "pos6": { "x": -4, "y": 2, "z": 0 }, - }, - { - "pos1": { "x": -67, "y": 80, "z": 0 }, - "pos2": { "x": -26.792, "y": 32.675, "z": 0 }, - "pos3": { "x": -34.792, "y": 23.675, "z": 0 }, - "pos4": { "x": -12, "y": 18, "z": 0 }, - "pos5": { "x": -84, "y": 90, "z": 0 }, - "pos6": { "x": 0, "y": 0, "z": 0 }, - }, - { - "pos1": { "x": -184, "y": 80, "z": 0 }, - "pos2": { "x": -25.792, "y": 34.675, "z": 0 }, - "pos3": { "x": -155.792, "y": 25.675, "z": 0 }, - "pos4": { "x": -18, "y": 26, "z": 0 }, - "pos5": { "x": -196, "y": 96, "z": 0 }, - "pos6": { "x": 0, "y": 0, "z": 0 }, - }, - { - "pos1": { "x": -62, "y": 160, "z": 0 }, - "pos2": { "x": 95.208, "y": 158.675, "z": 0 }, - "pos3": { "x": -33.792, "y": 29.675, "z": 0 }, - "pos4": { "x": -18, "y": 26, "z": 0 }, - "pos5": { "x": -78, "y": 170, "z": 0 }, - "pos6": { "x": 0, "y": 2, "z": 0 }, - }, - { - "pos1": { "x": -68, "y": 160, "z": 0 }, - "pos2": { "x": -25.792, "y": 156.675, "z": 0 }, - "pos3": { "x": -35.792, "y": 27.675, "z": 0 }, - "pos4": { "x": -25, "y": 40, "z": 0 }, - "pos5": { "x": -82, "y": 170, "z": 0 }, - "pos6": { "x": -2, "y": 2, "z": 0 }, - } - ]; - // this.PROP_INFO = [{"pos1": {"x": -60,"y": 60,"z": 0},"pos2": {"x": -16.442,"y": 30,"z": 0},"pos3": {"x": -34.362,"y": 13.246,"z": 0},"pos4": {"x": -17,"y": 12,"z": 0}},{"pos1": {"x": -126,"y": 63,"z": 0},"pos2": {"x": -25.792,"y": 34.675,"z": 0},"pos3": {"x": -94.792,"y": 21.675,"z": 0},"pos4": {"x": -20,"y": 13,"z": 0}},{"pos1": {"x": -60,"y": 125,"z": 0},"pos2": {"x": -12.792,"y": 92.675,"z": 0},"pos3": {"x": -34.792,"y": 23.675,"z": 0},"pos4": {"x": -14,"y": 24,"z": 0}},{"pos1": {"x": -185,"y": 63,"z": 0},"pos2": {"x": -34.792,"y": 37.675,"z": 0},"pos3": {"x": -154.792,"y": 23.675,"z": 0},"pos4": {"x": -22,"y": 16,"z": 0}},{"pos1": {"x": -57,"y": 178,"z": 0},"pos2": {"x": -17.792,"y": 166.675,"z": 0},"pos3": {"x": -31.792,"y": 33.675,"z": 0},"pos4": {"x": -14,"y": 37,"z": 0}},{"pos1": {"x": -123,"y": 127,"z": 0},"pos2": {"x": -25.792,"y": 99.675,"z": 0},"pos3": {"x": -97.792,"y": 27.675,"z": 0},"pos4": {"x": -27,"y": 19,"z": 0}},{"pos1": {"x": -62,"y": 181,"z": 0},"pos2": {"x": -24.792,"y": 275.675,"z": 0},"pos3": {"x": -31.792,"y": 35.675,"z": 0},"pos4": {"x": -7,"y": 39,"z": 0}},{"pos1": {"x": -181,"y": 180,"z": 0},"pos2": {"x": -31.792,"y": 163.675,"z": 0},"pos3": {"x": -33.792,"y": 34.675,"z": 0},"pos4": {"x": -18,"y": 30,"z": 0}},{"pos1": {"x": -182,"y": 182,"z": 0},"pos2": {"x": -25.792,"y": 38.675,"z": 0},"pos3": {"x": -153.792,"y": 34.675,"z": 0},"pos4": {"x": -23,"y": 14,"z": 0}},{"pos1": {"x": -186,"y": 61,"z": 0},"pos2": {"x": -37.792,"y": 37.675,"z": 0},"pos3": {"x": -36.792,"y": 26.675,"z": 0},"pos4": {"x": -24,"y": 17,"z": 0}},{"pos1": {"x": -62,"y": 177,"z": 0},"pos2": {"x": 93.208,"y": 276.675,"z": 0},"pos3": {"x": -33.792,"y": 34.675,"z": 0},"pos4": {"x": 3,"y": 31,"z": 0}},{"pos1": {"x": 58,"y": 179,"z": 0},"pos2": {"x": 205.225,"y": 154.034,"z": 0},"pos3": {"x": -29.642,"y": 25.691,"z": 0},"pos4": {"x": 7.218,"y": 29.765,"z": 0}},{"pos1": {"x": -57,"y": 182,"z": 0},"pos2": {"x": -25.792,"y": 37.675,"z": 0},"pos3": {"x": -35.792,"y": 33.675,"z": 0},"pos4": {"x": -14,"y": 12,"z": 0}},{"pos1": {"x": -180,"y": 62,"z": 0},"pos2": {"x": -35.792,"y": 36.675,"z": 0},"pos3": {"x": -271.792,"y": 24.675,"z": 0},"pos4": {"x": -17,"y": 20,"z": 0}},{"pos1": {"x": -62,"y": 178,"z": 0},"pos2": {"x": 87.208,"y": 164.675,"z": 0},"pos3": {"x": -31.792,"y": 35.675,"z": 0},"pos4": {"x": -6,"y": 24,"z": 0}},{"pos1": {"x": -176,"y": 60,"z": 0},"pos2": {"x": -33.792,"y": 38.675,"z": 0},"pos3": {"x": -154.792,"y": 29.675,"z": 0},"pos4": {"x": -29,"y": 16,"z": 0}},{"pos1": {"x": -60,"y": 181,"z": 0},"pos2": {"x": 95.208,"y": 155.675,"z": 0},"pos3": {"x": -30.792,"y": 36.675,"z": 0},"pos4": {"x": -12,"y": 32,"z": 0}},{"pos1": {"x": -63,"y": 178,"z": 0},"pos2": {"x": -21.792,"y": 156.675,"z": 0},"pos3": {"x": -31.792,"y": 37.675,"z": 0},"pos4": {"x": -12,"y": 32,"z": 0}},{"pos1": {"x": -60,"y": 183,"z": 0},"pos2": {"x": 88.208,"y": 162.675,"z": 0},"pos3": {"x": -29.792,"y": 41.675,"z": 0},"pos4": {"x": -12,"y": 18,"z": 0}},{"pos1": {"x": -64,"y": 58,"z": 0},"pos2": {"x": -26.792,"y": 32.675,"z": 0},"pos3": {"x": -34.792,"y": 23.675,"z": 0},"pos4": {"x": -12,"y": 18,"z": 0}},{"pos1": {"x": -184,"y": 62,"z": 0},"pos2": {"x": -25.792,"y": 34.675,"z": 0},"pos3": {"x": -155.792,"y": 25.675,"z": 0},"pos4": {"x": -18,"y": 26,"z": 0}},{"pos1": {"x": -57,"y": 190,"z": 0},"pos2": {"x": 95.208,"y": 158.675,"z": 0},"pos3": {"x": -33.792,"y": 29.675,"z": 0},"pos4": {"x": -18,"y": 26,"z": 0}},{"pos1": {"x": -71,"y": 184,"z": 0},"pos2": {"x": -25.792,"y": 156.675,"z": 0},"pos3": {"x": -35.792,"y": 27.675,"z": 0},"pos4": {"x": -25,"y": 40,"z": 0}}]; - }; - GameConfig.setCode = function (code) { - this.GM_INFO.scode = code; - }; - GameConfig.getKey = function (key) { - // var reg = new RegExp('(^|&)' + key + '=([^&]*)(&|$)', 'i'); - // var r = window.location.search.substring(1).match(reg); - // if (r != null) { - // return unescape(r[2]); - // } - return ""; - }; - GameConfig.Authentication = function () { - cc.fx.GameTool.Authentication(); - }; - var GameConfig_1; - //所有控制信息都通过GameAppStart内控制 - GameConfig._instance = null; - GameConfig = GameConfig_1 = __decorate([ - ccclass('GameConfig') - ], GameConfig); - return GameConfig; -}()); -exports.GameConfig = GameConfig; +"use strict"; +var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) { + var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; + if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc); + else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; + return c > 3 && r && Object.defineProperty(target, key, r), r; +}; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.GameConfig = void 0; +var _a = cc._decorator, ccclass = _a.ccclass, property = _a.property; +var GameConfig = /** @class */ (function () { + function GameConfig() { + } + GameConfig_1 = GameConfig; + Object.defineProperty(GameConfig, "Instance", { + //游戏内信息 + get: function () { + if (this._instance == null) { + this._instance = new GameConfig_1(); + } + return this._instance; + }, + enumerable: false, + configurable: true + }); + //getSeedRandom + GameConfig.init = function (Authentication) { + //@ts-ignore + if (typeof wx !== 'undefined' && wx !== null) { + //@ts-ignore + wx.cloud.init(); + } + this.TA = null; + this.CLICK_init(); + this.GM_INFO_init(); + this.LEVEL_INFO_init(false, 0); + var self = this; + //GAME_DATA 废弃了,暂时不删除以防后面修改回 一整局传一次 + this.GAME_DATA = []; + // if(!Authentication) self.Authentication(); + }; + GameConfig.generateUUID = function () { + return 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, function (c) { + var r = Math.random() * 16 | 0; + var v = c === 'x' ? r : (r & 0x3 | 0x8); + return v.toString(16); + }); + }; + // 版本比较函数 + GameConfig.compareVersion = function (v1, v2) { + var arr1 = v1.split('.'); + var arr2 = v2.split('.'); + var len = Math.max(arr1.length, arr2.length); + for (var i = 0; i < len; i++) { + var num1 = parseInt(arr1[i] || '0', 10); + var num2 = parseInt(arr2[i] || '0', 10); + if (num1 > num2) { + return 1; + } + else if (num1 < num2) { + return -1; + } + } + return 0; + }; + GameConfig.GM_INFO_SET = function (key, value) { + this.GM_INFO[key] = value; + }; + GameConfig.CLICK_init = function () { + this.CLICK_DATA = + { + type: 1, + success: false, + round: 0, + getScore: 0, + cumulativeScore: 0, + mapId: "", + difficulty: 0, + optimizedSteps: 0, + usedSteps: 0, + stepList: [], + startTime: -1, + submitTime: -1, + duration: 0, + drawingBack: 0, + drawingReset: 0, + timer: 0 //测评倒计时剩余时间 去秒 + }; + }; + GameConfig.CLICK_SET = function (key, value) { + this.CLICK_DATA[key] = value; + }; + //数据备用 + GameConfig.GM_INFO_init = function () { + var _this = this; + this.GM_INFO = { + // isEnd: false, + mean_Time: 0, + hp: 5, + review: 0, + currSeed: 200000, + openid: "", + gameId: "100001", + userId: 0, + scode: "", + username: "user", + useravatar: "", + guide: true, + url: "https://api.sparkus.cn", + coin: 0, + success: false, + matchId: null, + gameState: false, + custom: 0, + round: 0, + level: 0, + stepTimeList: 0, + successList: [], + first: false, + score: 0, + scale: 1, + min_Steps: 0, + min_Time: 0, + freezeAmount: 0, + hammerAmount: 0, + magicAmount: 0, + musicOpen: true, + effectOpen: true, + vibrateOpen: true, + }; + // this.setCode(this.getKey("scode")); + // this.GM_INFO.level = 0; + cc.resources.load("Json/NEW_LEVEL", function (err, res) { + if (err) { + console.error("加载 NEW_LEVEL.JSON 失败:", err); + return; + } + var newLevelData = res.json; + _this.NEW_LEVEL = newLevelData.NEW_LEVEL; + // 可以根据需求对 newLevelData 进行处理 + // //console.log("NEW_LEVEL.JSON 加载成功:", newLevelData); + }); + }; + GameConfig.LEVEL_INFO_init = function (type, time) { + // 示例 围墙会根据缺的地块自动生成 + // 带缺口 {"id":"1006","map":[10,11],"gap":[cc.v2(4,9),cc.v2(5,9)]}, + // 带升降地块 {"id":"1004","map":[7,8],"risefall":[{pos:cc.v2(5,4),color:2},{pos:cc.v2(5,5),color:5}]}, + // 如果普通的就 {"id":"1001","map":[6,7]}, 这个样子就可以了 + var self = this; + if ((cc.fx.GameConfig.GM_INFO.level) > 156) { + cc.fx.GameConfig.GM_INFO.level = 156; + } + var name = "Json/level" + (cc.fx.GameConfig.GM_INFO.level + 1); + // //console.log("关卡名称:",name); + // name = "Json/level" + 68; + // cc.fx.StorageMessage.setStorage("level",cc.fx.GameConfig.GM_INFO.level.toString()); + cc.resources.load(name, function (err, res) { + if (err) { + cc.fx.GameTool.addLevel(); + self.LEVEL_INFO_init(type, time); + return; + } + var jsonData = res.json; + self.BLOCK_INFO = jsonData["BLOCK_INFO"]; + self.LEVEL_INFO = jsonData["LEVEL_INFO"]; + self.WALL_INFO = jsonData["WALL_INFO"]; + // //console.log("配置加载完成"); + if (type) { + cc.director.preloadScene("GameScene", function () { + if (time == 0) + cc.director.loadScene("GameScene"); + else { + setTimeout(function () { + cc.director.loadScene("GameScene"); + }, time); + } + }); + } + }); + //道具位置信息 + this.PROP_INFO = [ + { + "pos1": { "x": -66, "y": 60, "z": 0 }, + "pos2": { "x": -19, "y": 36, "z": 0 }, + "pos3": { "x": -34.362, "y": 13.246, "z": 0 }, + "pos4": { "x": -17, "y": 12, "z": 0 }, + "pos5": { "x": -85, "y": 70, "z": 0 }, + "pos6": { "x": -5, "y": 3, "z": 0 }, + }, + { + "pos1": { "x": -126, "y": 61, "z": 0 }, + "pos2": { "x": -25.792, "y": 34.675, "z": 0 }, + "pos3": { "x": -94.792, "y": 21.675, "z": 0 }, + "pos4": { "x": -20, "y": 13, "z": 0 }, + "pos5": { "x": -140, "y": 68, "z": 0 }, + "pos6": { "x": -2, "y": 0, "z": 0 }, + }, + { + "pos1": { "x": -67, "y": 122, "z": 0 }, + "pos2": { "x": -20, "y": 94, "z": 0 }, + "pos3": { "x": -34.792, "y": 23.675, "z": 0 }, + "pos4": { "x": -14, "y": 24, "z": 0 }, + "pos5": { "x": -84, "y": 128, "z": 0 }, + "pos6": { "x": -5, "y": 3, "z": 0 }, + }, + { + "pos1": { "x": -178, "y": 61, "z": 0 }, + "pos2": { "x": -34.792, "y": 37.675, "z": 0 }, + "pos3": { "x": -150, "y": 23.675, "z": 0 }, + "pos4": { "x": -22, "y": 16, "z": 0 }, + "pos5": { "x": -200, "y": 67, "z": 0 }, + "pos6": { "x": 0, "y": 0, "z": 0 }, + }, + { + "pos1": { "x": -63, "y": 178, "z": 0 }, + "pos2": { "x": -17.792, "y": 166.675, "z": 0 }, + "pos3": { "x": -31.792, "y": 33.675, "z": 0 }, + "pos4": { "x": -14, "y": 37, "z": 0 }, + "pos5": { "x": -78, "y": 182, "z": 0 }, + "pos6": { "x": 0, "y": 2, "z": 0 }, + }, + { + "pos1": { "x": -123, "y": 124, "z": 0 }, + "pos2": { "x": -25.792, "y": 99.675, "z": 0 }, + "pos3": { "x": -97.792, "y": 27.675, "z": 0 }, + "pos4": { "x": -27, "y": 19, "z": 0 }, + "pos5": { "x": -135, "y": 127, "z": 0 }, + "pos6": { "x": 0, "y": 0, "z": 0 }, + }, + { + "pos1": { "x": -64, "y": 178, "z": 0 }, + "pos2": { "x": -24.792, "y": 275.675, "z": 0 }, + "pos3": { "x": -31.792, "y": 35.675, "z": 0 }, + "pos4": { "x": -7, "y": 39, "z": 0 }, + "pos5": { "x": -77, "y": 188, "z": 0 }, + "pos6": { "x": 0, "y": 0, "z": 0 }, + }, + { + "pos1": { "x": -178, "y": 186, "z": 0 }, + "pos2": { "x": -31.792, "y": 163.675, "z": 0 }, + "pos3": { "x": -33.792, "y": 34.675, "z": 0 }, + "pos4": { "x": -18, "y": 30, "z": 0 }, + "pos5": { "x": -200, "y": 192, "z": 0 }, + "pos6": { "x": 0, "y": 5, "z": 0 }, + }, + { + "pos1": { "x": -186, "y": 178, "z": 0 }, + "pos2": { "x": -25.792, "y": 38.675, "z": 0 }, + "pos3": { "x": -153.792, "y": 34.675, "z": 0 }, + "pos4": { "x": -23, "y": 14, "z": 0 }, + "pos5": { "x": -200, "y": 185, "z": 0 }, + "pos6": { "x": 0, "y": 0, "z": 0 }, + }, + { + "pos1": { "x": -183, "y": 64, "z": 0 }, + "pos2": { "x": -37.792, "y": 37.675, "z": 0 }, + "pos3": { "x": -36.792, "y": 26.675, "z": 0 }, + "pos4": { "x": -24, "y": 17, "z": 0 }, + "pos5": { "x": -212, "y": 74, "z": 0 }, + "pos6": { "x": 0, "y": 0, "z": 0 }, + }, + { + "pos1": { "x": -65, "y": 177, "z": 0 }, + "pos2": { "x": 93.208, "y": 276.675, "z": 0 }, + "pos3": { "x": -33.792, "y": 34.675, "z": 0 }, + "pos4": { "x": 3, "y": 31, "z": 0 }, + "pos5": { "x": -80, "y": 190, "z": 0 }, + "pos6": { "x": 0, "y": 3, "z": 0 }, + }, + { + "pos1": { "x": 58, "y": 179, "z": 0 }, + "pos2": { "x": 205.225, "y": 154.034, "z": 0 }, + "pos3": { "x": -29.642, "y": 25.691, "z": 0 }, + "pos4": { "x": 7.218, "y": 29.765, "z": 0 }, + "pos5": { "x": 45, "y": 185, "z": 0 }, + "pos6": { "x": 0, "y": 0, "z": 0 }, + }, + { + "pos1": { "x": -68, "y": 182, "z": 0 }, + "pos2": { "x": -25.792, "y": 37.675, "z": 0 }, + "pos3": { "x": -35.792, "y": 33.675, "z": 0 }, + "pos4": { "x": -14, "y": 12, "z": 0 }, + "pos5": { "x": -82, "y": 190, "z": 0 }, + "pos6": { "x": -2, "y": 1, "z": 0 }, + }, + { + "pos1": { "x": -184, "y": 62, "z": 0 }, + "pos2": { "x": -35.792, "y": 36.675, "z": 0 }, + "pos3": { "x": -271.792, "y": 24.675, "z": 0 }, + "pos4": { "x": -17, "y": 20, "z": 0 }, + "pos5": { "x": -200, "y": 72, "z": 0 }, + "pos6": { "x": 0, "y": 0, "z": 0 }, + }, + { + "pos1": { "x": -62, "y": 175, "z": 0 }, + "pos2": { "x": 87.208, "y": 164.675, "z": 0 }, + "pos3": { "x": -31.792, "y": 35.675, "z": 0 }, + "pos4": { "x": -6, "y": 24, "z": 0 }, + "pos5": { "x": -79, "y": 172, "z": 0 }, + "pos6": { "x": 0, "y": 5, "z": 0 }, + }, + { + "pos1": { "x": -184, "y": 72, "z": 0 }, + "pos2": { "x": -33.792, "y": 38.675, "z": 0 }, + "pos3": { "x": -154.792, "y": 29.675, "z": 0 }, + "pos4": { "x": -29, "y": 16, "z": 0 }, + "pos5": { "x": -201, "y": 85, "z": 0 }, + "pos6": { "x": -1, "y": 3, "z": 0 }, + }, + { + "pos1": { "x": -64, "y": 181, "z": 0 }, + "pos2": { "x": 95.208, "y": 155.675, "z": 0 }, + "pos3": { "x": -30.792, "y": 36.675, "z": 0 }, + "pos4": { "x": -12, "y": 32, "z": 0 }, + "pos5": { "x": -78, "y": 190, "z": 0 }, + "pos6": { "x": 0, "y": 3, "z": 0 }, + }, + { + "pos1": { "x": -65, "y": 178, "z": 0 }, + "pos2": { "x": -21.792, "y": 156.675, "z": 0 }, + "pos3": { "x": -31.792, "y": 37.675, "z": 0 }, + "pos4": { "x": -12, "y": 32, "z": 0 }, + "pos5": { "x": -78, "y": 188, "z": 0 }, + "pos6": { "x": 0, "y": 2, "z": 0 }, + }, + { + "pos1": { "x": -62, "y": 183, "z": 0 }, + "pos2": { "x": 88.208, "y": 162.675, "z": 0 }, + "pos3": { "x": -29.792, "y": 41.675, "z": 0 }, + "pos4": { "x": -12, "y": 18, "z": 0 }, + "pos5": { "x": -80, "y": 188, "z": 0 }, + "pos6": { "x": -4, "y": 2, "z": 0 }, + }, + { + "pos1": { "x": -67, "y": 80, "z": 0 }, + "pos2": { "x": -26.792, "y": 32.675, "z": 0 }, + "pos3": { "x": -34.792, "y": 23.675, "z": 0 }, + "pos4": { "x": -12, "y": 18, "z": 0 }, + "pos5": { "x": -84, "y": 90, "z": 0 }, + "pos6": { "x": 0, "y": 0, "z": 0 }, + }, + { + "pos1": { "x": -184, "y": 80, "z": 0 }, + "pos2": { "x": -25.792, "y": 34.675, "z": 0 }, + "pos3": { "x": -155.792, "y": 25.675, "z": 0 }, + "pos4": { "x": -18, "y": 26, "z": 0 }, + "pos5": { "x": -196, "y": 96, "z": 0 }, + "pos6": { "x": 0, "y": 0, "z": 0 }, + }, + { + "pos1": { "x": -62, "y": 160, "z": 0 }, + "pos2": { "x": 95.208, "y": 158.675, "z": 0 }, + "pos3": { "x": -33.792, "y": 29.675, "z": 0 }, + "pos4": { "x": -18, "y": 26, "z": 0 }, + "pos5": { "x": -78, "y": 170, "z": 0 }, + "pos6": { "x": 0, "y": 2, "z": 0 }, + }, + { + "pos1": { "x": -68, "y": 160, "z": 0 }, + "pos2": { "x": -25.792, "y": 156.675, "z": 0 }, + "pos3": { "x": -35.792, "y": 27.675, "z": 0 }, + "pos4": { "x": -25, "y": 40, "z": 0 }, + "pos5": { "x": -82, "y": 170, "z": 0 }, + "pos6": { "x": -2, "y": 2, "z": 0 }, + } + ]; + // this.PROP_INFO = [{"pos1": {"x": -60,"y": 60,"z": 0},"pos2": {"x": -16.442,"y": 30,"z": 0},"pos3": {"x": -34.362,"y": 13.246,"z": 0},"pos4": {"x": -17,"y": 12,"z": 0}},{"pos1": {"x": -126,"y": 63,"z": 0},"pos2": {"x": -25.792,"y": 34.675,"z": 0},"pos3": {"x": -94.792,"y": 21.675,"z": 0},"pos4": {"x": -20,"y": 13,"z": 0}},{"pos1": {"x": -60,"y": 125,"z": 0},"pos2": {"x": -12.792,"y": 92.675,"z": 0},"pos3": {"x": -34.792,"y": 23.675,"z": 0},"pos4": {"x": -14,"y": 24,"z": 0}},{"pos1": {"x": -185,"y": 63,"z": 0},"pos2": {"x": -34.792,"y": 37.675,"z": 0},"pos3": {"x": -154.792,"y": 23.675,"z": 0},"pos4": {"x": -22,"y": 16,"z": 0}},{"pos1": {"x": -57,"y": 178,"z": 0},"pos2": {"x": -17.792,"y": 166.675,"z": 0},"pos3": {"x": -31.792,"y": 33.675,"z": 0},"pos4": {"x": -14,"y": 37,"z": 0}},{"pos1": {"x": -123,"y": 127,"z": 0},"pos2": {"x": -25.792,"y": 99.675,"z": 0},"pos3": {"x": -97.792,"y": 27.675,"z": 0},"pos4": {"x": -27,"y": 19,"z": 0}},{"pos1": {"x": -62,"y": 181,"z": 0},"pos2": {"x": -24.792,"y": 275.675,"z": 0},"pos3": {"x": -31.792,"y": 35.675,"z": 0},"pos4": {"x": -7,"y": 39,"z": 0}},{"pos1": {"x": -181,"y": 180,"z": 0},"pos2": {"x": -31.792,"y": 163.675,"z": 0},"pos3": {"x": -33.792,"y": 34.675,"z": 0},"pos4": {"x": -18,"y": 30,"z": 0}},{"pos1": {"x": -182,"y": 182,"z": 0},"pos2": {"x": -25.792,"y": 38.675,"z": 0},"pos3": {"x": -153.792,"y": 34.675,"z": 0},"pos4": {"x": -23,"y": 14,"z": 0}},{"pos1": {"x": -186,"y": 61,"z": 0},"pos2": {"x": -37.792,"y": 37.675,"z": 0},"pos3": {"x": -36.792,"y": 26.675,"z": 0},"pos4": {"x": -24,"y": 17,"z": 0}},{"pos1": {"x": -62,"y": 177,"z": 0},"pos2": {"x": 93.208,"y": 276.675,"z": 0},"pos3": {"x": -33.792,"y": 34.675,"z": 0},"pos4": {"x": 3,"y": 31,"z": 0}},{"pos1": {"x": 58,"y": 179,"z": 0},"pos2": {"x": 205.225,"y": 154.034,"z": 0},"pos3": {"x": -29.642,"y": 25.691,"z": 0},"pos4": {"x": 7.218,"y": 29.765,"z": 0}},{"pos1": {"x": -57,"y": 182,"z": 0},"pos2": {"x": -25.792,"y": 37.675,"z": 0},"pos3": {"x": -35.792,"y": 33.675,"z": 0},"pos4": {"x": -14,"y": 12,"z": 0}},{"pos1": {"x": -180,"y": 62,"z": 0},"pos2": {"x": -35.792,"y": 36.675,"z": 0},"pos3": {"x": -271.792,"y": 24.675,"z": 0},"pos4": {"x": -17,"y": 20,"z": 0}},{"pos1": {"x": -62,"y": 178,"z": 0},"pos2": {"x": 87.208,"y": 164.675,"z": 0},"pos3": {"x": -31.792,"y": 35.675,"z": 0},"pos4": {"x": -6,"y": 24,"z": 0}},{"pos1": {"x": -176,"y": 60,"z": 0},"pos2": {"x": -33.792,"y": 38.675,"z": 0},"pos3": {"x": -154.792,"y": 29.675,"z": 0},"pos4": {"x": -29,"y": 16,"z": 0}},{"pos1": {"x": -60,"y": 181,"z": 0},"pos2": {"x": 95.208,"y": 155.675,"z": 0},"pos3": {"x": -30.792,"y": 36.675,"z": 0},"pos4": {"x": -12,"y": 32,"z": 0}},{"pos1": {"x": -63,"y": 178,"z": 0},"pos2": {"x": -21.792,"y": 156.675,"z": 0},"pos3": {"x": -31.792,"y": 37.675,"z": 0},"pos4": {"x": -12,"y": 32,"z": 0}},{"pos1": {"x": -60,"y": 183,"z": 0},"pos2": {"x": 88.208,"y": 162.675,"z": 0},"pos3": {"x": -29.792,"y": 41.675,"z": 0},"pos4": {"x": -12,"y": 18,"z": 0}},{"pos1": {"x": -64,"y": 58,"z": 0},"pos2": {"x": -26.792,"y": 32.675,"z": 0},"pos3": {"x": -34.792,"y": 23.675,"z": 0},"pos4": {"x": -12,"y": 18,"z": 0}},{"pos1": {"x": -184,"y": 62,"z": 0},"pos2": {"x": -25.792,"y": 34.675,"z": 0},"pos3": {"x": -155.792,"y": 25.675,"z": 0},"pos4": {"x": -18,"y": 26,"z": 0}},{"pos1": {"x": -57,"y": 190,"z": 0},"pos2": {"x": 95.208,"y": 158.675,"z": 0},"pos3": {"x": -33.792,"y": 29.675,"z": 0},"pos4": {"x": -18,"y": 26,"z": 0}},{"pos1": {"x": -71,"y": 184,"z": 0},"pos2": {"x": -25.792,"y": 156.675,"z": 0},"pos3": {"x": -35.792,"y": 27.675,"z": 0},"pos4": {"x": -25,"y": 40,"z": 0}}]; + }; + GameConfig.setCode = function (code) { + this.GM_INFO.scode = code; + }; + GameConfig.getKey = function (key) { + // var reg = new RegExp('(^|&)' + key + '=([^&]*)(&|$)', 'i'); + // var r = window.location.search.substring(1).match(reg); + // if (r != null) { + // return unescape(r[2]); + // } + return ""; + }; + GameConfig.Authentication = function () { + cc.fx.GameTool.Authentication(); + }; + var GameConfig_1; + //所有控制信息都通过GameAppStart内控制 + GameConfig._instance = null; + GameConfig = GameConfig_1 = __decorate([ + ccclass('GameConfig') + ], GameConfig); + return GameConfig; +}()); +exports.GameConfig = GameConfig; cc._RF.pop(); } @@ -5656,1190 +6336,12 @@ cc._RF.pop(); }); } })(); -//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImFzc2V0c1xcU2NyaXB0XFxEeW5hbWljQXRsYXNNYW5hZ2VyLmpzIl0sIm5hbWVzIjpbImNjIiwiQ2xhc3MiLCJDb21wb25lbnQiLCJwcm9wZXJ0aWVzIiwib25Mb2FkIiwiZHluYW1pY0F0bGFzTWFuYWdlciIsImVuYWJsZWQiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUFBLEVBQUUsQ0FBQ0MsS0FBSCxDQUFTO0FBQ0wsYUFBU0QsRUFBRSxDQUFDRSxTQURQO0FBR0xDLEVBQUFBLFVBQVUsRUFBRSxFQUhQO0FBTUxDLEVBQUFBLE1BTkssb0JBTUs7QUFDTkosSUFBQUEsRUFBRSxDQUFDSyxtQkFBSCxDQUF1QkMsT0FBdkIsR0FBaUMsS0FBakM7QUFDSDtBQVJJLENBQVQiLCJzb3VyY2VSb290IjoiLyIsInNvdXJjZXNDb250ZW50IjpbImNjLkNsYXNzKHtcclxuICAgIGV4dGVuZHM6IGNjLkNvbXBvbmVudCxcclxuXHJcbiAgICBwcm9wZXJ0aWVzOiB7XHJcbiAgICB9LFxyXG5cclxuICAgIG9uTG9hZCAoKSB7XHJcbiAgICAgICAgY2MuZHluYW1pY0F0bGFzTWFuYWdlci5lbmFibGVkID0gZmFsc2U7XHJcbiAgICB9LFxyXG59KTtcclxuIl19 +//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImFzc2V0c1xcU2NyaXB0XFxEeW5hbWljQXRsYXNNYW5hZ2VyLmpzIl0sIm5hbWVzIjpbImNjIiwiQ2xhc3MiLCJDb21wb25lbnQiLCJwcm9wZXJ0aWVzIiwib25Mb2FkIiwiZHluYW1pY0F0bGFzTWFuYWdlciIsImVuYWJsZWQiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUFBLEVBQUUsQ0FBQ0MsS0FBSyxDQUFDO0VBQ0wsV0FBU0QsRUFBRSxDQUFDRSxTQUFTO0VBRXJCQyxVQUFVLEVBQUUsQ0FDWixDQUFDO0VBRURDLE1BQU0sV0FBQUEsT0FBQSxFQUFJO0lBQ05KLEVBQUUsQ0FBQ0ssbUJBQW1CLENBQUNDLE9BQU8sR0FBRyxLQUFLO0VBQzFDO0FBQ0osQ0FBQyxDQUFDIiwic291cmNlUm9vdCI6Ii8iLCJzb3VyY2VzQ29udGVudCI6WyJjYy5DbGFzcyh7XHJcbiAgICBleHRlbmRzOiBjYy5Db21wb25lbnQsXHJcblxyXG4gICAgcHJvcGVydGllczoge1xyXG4gICAgfSxcclxuXHJcbiAgICBvbkxvYWQgKCkge1xyXG4gICAgICAgIGNjLmR5bmFtaWNBdGxhc01hbmFnZXIuZW5hYmxlZCA9IGZhbHNlO1xyXG4gICAgfSxcclxufSk7XHJcbiJdfQ== //------QC-SOURCE-SPLIT------ (function() { var nodeEnv = typeof require !== 'undefined' && typeof process !== 'undefined'; var __module = nodeEnv ? module : {exports:{}}; -======= ->>>>>>> 0a31a7a5abc2c505bf743aa596e1c765a0405152 - var __filename = 'preview-scripts/assets/Script/module/Music/AudioManager.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, '58403/n16JCa5sZhNMjZzGo', 'AudioManager'); -// Script/module/Music/AudioManager.ts - -"use strict"; -var __extends = (this && this.__extends) || (function () { - var extendStatics = function (d, b) { - extendStatics = Object.setPrototypeOf || - ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) || - function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; }; - return extendStatics(d, b); - }; - return function (d, b) { - extendStatics(d, b); - function __() { this.constructor = d; } - d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); - }; -})(); -var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) { - var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; - if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc); - else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; - return c > 3 && r && Object.defineProperty(target, key, r), r; -}; -Object.defineProperty(exports, "__esModule", { value: true }); -var _a = cc._decorator, ccclass = _a.ccclass, property = _a.property; -var AudioManager = /** @class */ (function (_super) { - __extends(AudioManager, _super); - function AudioManager() { - var _this = _super !== null && _super.apply(this, arguments) || this; - //背景音乐 - _this.audioGameBgm0 = null; - _this.xiaochu = null; - _this.hit = null; - _this.down = null; - _this.fangxiang = null; - _this.build = null; - _this.win = null; - _this.lose = null; - _this.anniu_Big = null; - _this.anniu_little = null; - _this.zhuan1 = null; - _this.zhuan2 = null; - return _this; - } - AudioManager_1 = AudioManager; - AudioManager.prototype.onLoad = function () { - if (AudioManager_1._instance == null) { - AudioManager_1._instance = this; - cc.game.addPersistRootNode(this.node); - } - else { - return; - } - this.reward = false; - this.finish = false; - this.rewardCount = 0; - this.ctor(); - this.preload(); - }; - AudioManager.prototype.ctor = function () { - this.mAudioMap = {}; - /** - * 默认音量大小 - * @type {number} - */ - this.bgMusicVolume = 0.1; - this.effectMusicVolume = 1; - this.mMusicSwitch = 1; - this.mEffectSwitch = 1; - }; - AudioManager.prototype.play = function (audioSource, loop, callback, isBgMusic) { - // if (isBgMusic && !this.mMusicSwitch) return; - // if (!isBgMusic && !this.mEffectSwitch) return; - var volume = isBgMusic ? this.bgMusicVolume : this.effectMusicVolume; - // if (cc.sys.isBrowser) { - // if(audioSource == this.brickSound){ - // volume = 0.1; - // } - volume = 1; - cc.audioEngine.setEffectsVolume(1); - cc.audioEngine.setMusicVolume(1); - if (audioSource.name == "lose") { - cc.audioEngine.setEffectsVolume(0.5); - } - else { - cc.audioEngine.setEffectsVolume(1); - } - var context = cc.audioEngine.playEffect(audioSource, loop); - if (callback) { - cc.audioEngine.setFinishCallback(context, function () { - callback.call(this); - }.bind(this)); - } - // cc.wwx.OutPut.log('play audio effect isBrowser: ' + context.src); - this.mAudioMap[audioSource] = context; - return audioSource; - // } else { - // return audioSource; - // } - }; - AudioManager.prototype.save = function () { - // cc.wwx.Storage.setItem(cc.wwx.Storage.Key_Setting_Music_Volume, this.mMusicSwitch); - // cc.wwx.Storage.setItem(cc.wwx.Storage.Key_Setting_Effect_Volume, this.mEffectSwitch); - }; - // static get Instance() - // { - // if (this._instance == null) - // { - // this._instance = new AudioManager(); - // } - // return this._instance; - // } - AudioManager.prototype.preload = function () { - if (!(cc.sys.platform === cc.sys.WECHAT_GAME)) { - return; - } - var musics = [ - this.audioGameBgm0, - ]; - musics.forEach(function (path) { - }); - }; - AudioManager.prototype.getAudioMusicSwitch = function () { - return this.mMusicSwitch; - }; - AudioManager.prototype.getAudioEffectSwitch = function () { - return this.mEffectSwitch; - }; - AudioManager.prototype.trunAudioSound = function (on) { - this.switchMusic(on); - this.switchEffect(on); - }; - AudioManager.prototype.switchMusic = function (on) { - if (this.mMusicSwitch != (on ? 1 : 0)) { - this.mMusicSwitch = 1 - this.mMusicSwitch; - // this.save(); - } - if (on) { - this.playMusicGame(); - } - else { - this.stopMusic(); - } - }; - AudioManager.prototype.switchEffect = function (on) { - if (this.mEffectSwitch != (on ? 1 : 0)) { - this.mEffectSwitch = 1 - this.mEffectSwitch; - // this.save(); - } - }; - AudioManager.prototype.onHide = function () { - cc.audioEngine.pauseAll(); - }; - AudioManager.prototype.onShow = function () { - cc.audioEngine.resumeAll(); - }; - //播放音效 - AudioManager.prototype.playEffect = function (name, callback) { - if (!cc.fx.GameConfig.GM_INFO.effectOpen) { - return; - } - if (this[name]) - return this.play(this[name], false, callback, this.mEffectSwitch); - }; - AudioManager.prototype.playMusic = function (key, callback, loop) { - if (!cc.fx.GameConfig.GM_INFO.musicOpen) { - return; - } - loop = typeof loop == 'undefined' || loop ? true : false; - this.stopMusic(); - this.mMusicKey = this.play(key, loop, callback, true); - }; - /** - * 游戏背景音乐 - */ - AudioManager.prototype.playMusicGame = function () { - this.stopMusic(); - this.playMusic(this.audioGameBgm0, {}, true); - }; - /** - * 停止背景音乐播放 - */ - AudioManager.prototype.stopMusic = function () { - // cc.wwx.OutPut.log('stopMusic audio effect wx: ' + this.mMusicKey); - cc.audioEngine.stopAll(); - }; - /** - * 恢复被暂停的背景音乐播放 - */ - AudioManager.prototype.resumeMusic = function () { - // 调用 cc.audioEngine 的 resumeMusic 方法恢复音乐播放 - cc.audioEngine.resumeMusic(); - }; - /* - * 游戏开始音效 - * - */ - AudioManager.prototype.playGameStart = function () { - }; - /* - * 失败的游戏结束 - */ - AudioManager.prototype.playGameOver = function () { - }; - /* - * 成功的游戏结束 - */ - AudioManager.prototype.playGameResultFailed = function () { - }; - /* - * 成功的游戏结束 - */ - AudioManager.prototype.playGameResultSuccess = function () { - }; - /** - * 报警的音效 - */ - /** - * 按钮 - */ - AudioManager.prototype.playAudioButton = function () { - // return this.play(this.audioButtonClick, false,null,this.mEffectSwitch); - }; - var AudioManager_1; - __decorate([ - property(cc.AudioClip) - ], AudioManager.prototype, "audioGameBgm0", void 0); - __decorate([ - property(cc.AudioClip) - ], AudioManager.prototype, "xiaochu", void 0); - __decorate([ - property(cc.AudioClip) - ], AudioManager.prototype, "hit", void 0); - __decorate([ - property(cc.AudioClip) - ], AudioManager.prototype, "down", void 0); - __decorate([ - property(cc.AudioClip) - ], AudioManager.prototype, "fangxiang", void 0); - __decorate([ - property(cc.AudioClip) - ], AudioManager.prototype, "build", void 0); - __decorate([ - property(cc.AudioClip) - ], AudioManager.prototype, "win", void 0); - __decorate([ - property(cc.AudioClip) - ], AudioManager.prototype, "lose", void 0); - __decorate([ - property(cc.AudioClip) - ], AudioManager.prototype, "anniu_Big", void 0); - __decorate([ - property(cc.AudioClip) - ], AudioManager.prototype, "anniu_little", void 0); - __decorate([ - property(cc.AudioClip) - ], AudioManager.prototype, "zhuan1", void 0); - __decorate([ - property(cc.AudioClip) - ], AudioManager.prototype, "zhuan2", void 0); - AudioManager = AudioManager_1 = __decorate([ - ccclass - ], AudioManager); - return AudioManager; -}(cc.Component)); -exports.default = AudioManager; -; -// export { AudioManager }; - -cc._RF.pop(); - } - if (nodeEnv) { - __define(__module.exports, __require, __module); - } - else { - __quick_compile_project__.registerModuleFunc(__filename, function () { - __define(__module.exports, __require, __module); - }); - } - })(); -<<<<<<< HEAD -//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImFzc2V0c1xcU2NyaXB0XFxtb2R1bGVcXE11c2ljXFxBdWRpb01hbmFnZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBRU0sSUFBQSxLQUFzQixFQUFFLENBQUMsVUFBVSxFQUFsQyxPQUFPLGFBQUEsRUFBRSxRQUFRLGNBQWlCLENBQUM7QUFFMUM7SUFBMEMsZ0NBQVk7SUFBdEQ7UUFBQSxxRUF3UEM7UUF0UEcsTUFBTTtRQUVOLG1CQUFhLEdBQWlCLElBQUksQ0FBQztRQUduQyxhQUFPLEdBQWlCLElBQUksQ0FBQztRQUU3QixTQUFHLEdBQWlCLElBQUksQ0FBQztRQUV6QixVQUFJLEdBQWlCLElBQUksQ0FBQztRQUUxQixlQUFTLEdBQWlCLElBQUksQ0FBQztRQUUvQixXQUFLLEdBQWlCLElBQUksQ0FBQztRQUUzQixTQUFHLEdBQWlCLElBQUksQ0FBQztRQUV6QixVQUFJLEdBQWlCLElBQUksQ0FBQztRQUUxQixlQUFTLEdBQWlCLElBQUksQ0FBQztRQUUvQixrQkFBWSxHQUFpQixJQUFJLENBQUM7UUFFbEMsWUFBTSxHQUFpQixJQUFJLENBQUM7UUFFNUIsWUFBTSxHQUFpQixJQUFJLENBQUM7O0lBNk5oQyxDQUFDO3FCQXhQb0IsWUFBWTtJQXdDN0IsNkJBQU0sR0FBTjtRQUNJLElBQUksY0FBWSxDQUFDLFNBQVMsSUFBSSxJQUFJLEVBQUU7WUFDaEMsY0FBWSxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUM7WUFDOUIsRUFBRSxDQUFDLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7U0FDekM7YUFDSTtZQUNELE9BQU87U0FDVjtRQUNELElBQUksQ0FBQyxNQUFNLEdBQUcsS0FBSyxDQUFDO1FBQ3BCLElBQUksQ0FBQyxNQUFNLEdBQUcsS0FBSyxDQUFDO1FBQ3BCLElBQUksQ0FBQyxXQUFXLEdBQUcsQ0FBQyxDQUFDO1FBQ3JCLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUVaLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQztJQUNuQixDQUFDO0lBRUQsMkJBQUksR0FBSjtRQUNJLElBQUksQ0FBQyxTQUFTLEdBQUcsRUFBRSxDQUFDO1FBQ3BCOzs7V0FHRztRQUNILElBQUksQ0FBQyxhQUFhLEdBQUcsR0FBRyxDQUFDO1FBQ3pCLElBQUksQ0FBQyxpQkFBaUIsR0FBRyxDQUFDLENBQUM7UUFFM0IsSUFBSSxDQUFDLFlBQVksR0FBRyxDQUFDLENBQUM7UUFDdEIsSUFBSSxDQUFDLGFBQWEsR0FBRyxDQUFDLENBQUM7SUFDM0IsQ0FBQztJQUNELDJCQUFJLEdBQUosVUFBTSxXQUFXLEVBQUUsSUFBSSxFQUFFLFFBQVEsRUFBRSxTQUFTO1FBQ3hDLCtDQUErQztRQUMvQyxpREFBaUQ7UUFDakQsSUFBSSxNQUFNLEdBQUcsU0FBUyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsaUJBQWlCLENBQUM7UUFFckUsMEJBQTBCO1FBQ3RCLHNDQUFzQztRQUN0QyxvQkFBb0I7UUFDcEIsS0FBSztRQUNMLE1BQU0sR0FBRyxDQUFDLENBQUM7UUFDWCxFQUFFLENBQUMsV0FBVyxDQUFDLGdCQUFnQixDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQ25DLEVBQUUsQ0FBQyxXQUFXLENBQUMsY0FBYyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQ2pDLElBQUcsV0FBVyxDQUFDLElBQUksSUFBSSxNQUFNLEVBQUM7WUFDMUIsRUFBRSxDQUFDLFdBQVcsQ0FBQyxnQkFBZ0IsQ0FBQyxHQUFHLENBQUMsQ0FBQztTQUN4QzthQUNHO1lBQ0EsRUFBRSxDQUFDLFdBQVcsQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDLENBQUMsQ0FBQztTQUN0QztRQUNELElBQUksT0FBTyxHQUFHLEVBQUUsQ0FBQyxXQUFXLENBQUMsVUFBVSxDQUFDLFdBQVcsRUFBRSxJQUFJLENBQUMsQ0FBQztRQUMzRCxJQUFJLFFBQVEsRUFBQztZQUNULEVBQUUsQ0FBQyxXQUFXLENBQUMsaUJBQWlCLENBQUMsT0FBTyxFQUFFO2dCQUN0QyxRQUFRLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO1lBQ3hCLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQztTQUNqQjtRQUNELG9FQUFvRTtRQUVwRSxJQUFJLENBQUMsU0FBUyxDQUFDLFdBQVcsQ0FBQyxHQUFHLE9BQU8sQ0FBQztRQUN0QyxPQUFPLFdBQVcsQ0FBQztRQUN2QixXQUFXO1FBQ1gsMEJBQTBCO1FBQzFCLElBQUk7SUFDUixDQUFDO0lBRUQsMkJBQUksR0FBSjtRQUNJLHNGQUFzRjtRQUN0Rix3RkFBd0Y7SUFDNUYsQ0FBQztJQUVELHdCQUF3QjtJQUN4QixJQUFJO0lBQ0osa0NBQWtDO0lBQ2xDLFFBQVE7SUFDUiwrQ0FBK0M7SUFDL0MsUUFBUTtJQUNSLDZCQUE2QjtJQUM3QixJQUFJO0lBRUosOEJBQU8sR0FBUDtRQUNJLElBQUksQ0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsUUFBUSxLQUFLLEVBQUUsQ0FBQyxHQUFHLENBQUMsV0FBVyxDQUFDLEVBQUU7WUFBRSxPQUFPO1NBQUU7UUFFMUQsSUFBSSxNQUFNLEdBQUc7WUFDVCxJQUFJLENBQUMsYUFBYTtTQUNyQixDQUFDO1FBQ0YsTUFBTSxDQUFDLE9BQU8sQ0FBQyxVQUFTLElBQUk7UUFDNUIsQ0FBQyxDQUFDLENBQUE7SUFDTixDQUFDO0lBRUQsMENBQW1CLEdBQW5CO1FBRUksT0FBTyxJQUFJLENBQUMsWUFBWSxDQUFDO0lBRTdCLENBQUM7SUFDRCwyQ0FBb0IsR0FBcEI7UUFFSSxPQUFPLElBQUksQ0FBQyxhQUFhLENBQUM7SUFDOUIsQ0FBQztJQUNELHFDQUFjLEdBQWQsVUFBZSxFQUFFO1FBRWIsSUFBSSxDQUFDLFdBQVcsQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUNyQixJQUFJLENBQUMsWUFBWSxDQUFDLEVBQUUsQ0FBQyxDQUFBO0lBQ3pCLENBQUM7SUFDRCxrQ0FBVyxHQUFYLFVBQWEsRUFBRTtRQUNYLElBQUksSUFBSSxDQUFDLFlBQVksSUFBSSxDQUFDLEVBQUUsQ0FBQSxDQUFDLENBQUEsQ0FBQyxDQUFBLENBQUMsQ0FBQSxDQUFDLENBQUMsRUFDakM7WUFDSSxJQUFJLENBQUMsWUFBWSxHQUFHLENBQUMsR0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDO1lBQ3hDLGVBQWU7U0FDbEI7UUFDRCxJQUFHLEVBQUUsRUFDTDtZQUNJLElBQUksQ0FBQyxhQUFhLEVBQUUsQ0FBQztTQUN4QjthQUVEO1lBQ0ksSUFBSSxDQUFDLFNBQVMsRUFBRSxDQUFDO1NBQ3BCO0lBQ0wsQ0FBQztJQUNELG1DQUFZLEdBQVosVUFBYyxFQUFFO1FBQ1osSUFBSSxJQUFJLENBQUMsYUFBYSxJQUFJLENBQUMsRUFBRSxDQUFBLENBQUMsQ0FBQSxDQUFDLENBQUEsQ0FBQyxDQUFBLENBQUMsQ0FBQyxFQUFDO1lBQy9CLElBQUksQ0FBQyxhQUFhLEdBQUcsQ0FBQyxHQUFDLElBQUksQ0FBQyxhQUFhLENBQUM7WUFDMUMsZUFBZTtTQUVsQjtJQUNMLENBQUM7SUFDRCw2QkFBTSxHQUFOO1FBQ0ksRUFBRSxDQUFDLFdBQVcsQ0FBQyxRQUFRLEVBQUUsQ0FBQztJQUM5QixDQUFDO0lBRUQsNkJBQU0sR0FBTjtRQUNJLEVBQUUsQ0FBQyxXQUFXLENBQUMsU0FBUyxFQUFFLENBQUM7SUFDL0IsQ0FBQztJQUVELE1BQU07SUFDTixpQ0FBVSxHQUFWLFVBQVcsSUFBSSxFQUFDLFFBQVE7UUFDcEIsSUFBRyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsVUFBVSxDQUFDLE9BQU8sQ0FBQyxVQUFVLEVBQUM7WUFDcEMsT0FBTztTQUNWO1FBQ0QsSUFBRyxJQUFJLENBQUMsSUFBSSxDQUFDO1lBQ1QsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsRUFBRSxLQUFLLEVBQUMsUUFBUSxFQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsQ0FBQztJQUN4RSxDQUFDO0lBQ0QsZ0NBQVMsR0FBVCxVQUFXLEdBQUcsRUFBRSxRQUFRLEVBQUUsSUFBSTtRQUMxQixJQUFHLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxVQUFVLENBQUMsT0FBTyxDQUFDLFNBQVMsRUFBQztZQUNuQyxPQUFPO1NBQ1Y7UUFDRCxJQUFJLEdBQUcsT0FBTyxJQUFJLElBQUksV0FBVyxJQUFLLElBQUksQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUM7UUFDMUQsSUFBSSxDQUFDLFNBQVMsRUFBRSxDQUFDO1FBQ2pCLElBQUksQ0FBQyxTQUFTLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLEVBQUUsSUFBSSxFQUFFLFFBQVEsRUFBRSxJQUFJLENBQUMsQ0FBQztJQUUxRCxDQUFDO0lBQ0Q7O09BRUc7SUFDSCxvQ0FBYSxHQUFiO1FBQ0ksSUFBSSxDQUFDLFNBQVMsRUFBRSxDQUFDO1FBQ2pCLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLGFBQWEsRUFBQyxFQUFFLEVBQUMsSUFBSSxDQUFDLENBQUM7SUFDL0MsQ0FBQztJQUNEOztPQUVHO0lBQ0gsZ0NBQVMsR0FBVDtRQUNJLHFFQUFxRTtRQUNyRSxFQUFFLENBQUMsV0FBVyxDQUFDLE9BQU8sRUFBRSxDQUFDO0lBQzdCLENBQUM7SUFFRDs7T0FFRztJQUNILGtDQUFXLEdBQVg7UUFDSSwyQ0FBMkM7UUFDM0MsRUFBRSxDQUFDLFdBQVcsQ0FBQyxXQUFXLEVBQUUsQ0FBQztJQUNqQyxDQUFDO0lBRUQ7OztNQUdFO0lBQ0Ysb0NBQWEsR0FBYjtJQUdBLENBQUM7SUFDRDs7TUFFRTtJQUNGLG1DQUFZLEdBQVo7SUFHQSxDQUFDO0lBQ0Q7O1VBRU07SUFDTiwyQ0FBb0IsR0FBcEI7SUFHQSxDQUFDO0lBQ0Q7O01BRUU7SUFDRiw0Q0FBcUIsR0FBckI7SUFHQSxDQUFDO0lBQ0Q7O09BRUc7SUFFSDs7T0FFRztJQUNILHNDQUFlLEdBQWY7UUFDSSwwRUFBMEU7SUFDOUUsQ0FBQzs7SUFuUEQ7UUFEQyxRQUFRLENBQUMsRUFBRSxDQUFDLFNBQVMsQ0FBQzt1REFDWTtJQUduQztRQURDLFFBQVEsQ0FBQyxFQUFFLENBQUMsU0FBUyxDQUFDO2lEQUNNO0lBRTdCO1FBREMsUUFBUSxDQUFDLEVBQUUsQ0FBQyxTQUFTLENBQUM7NkNBQ0U7SUFFekI7UUFEQyxRQUFRLENBQUMsRUFBRSxDQUFDLFNBQVMsQ0FBQzs4Q0FDRztJQUUxQjtRQURDLFFBQVEsQ0FBQyxFQUFFLENBQUMsU0FBUyxDQUFDO21EQUNRO0lBRS9CO1FBREMsUUFBUSxDQUFDLEVBQUUsQ0FBQyxTQUFTLENBQUM7K0NBQ0k7SUFFM0I7UUFEQyxRQUFRLENBQUMsRUFBRSxDQUFDLFNBQVMsQ0FBQzs2Q0FDRTtJQUV6QjtRQURDLFFBQVEsQ0FBQyxFQUFFLENBQUMsU0FBUyxDQUFDOzhDQUNHO0lBRTFCO1FBREMsUUFBUSxDQUFDLEVBQUUsQ0FBQyxTQUFTLENBQUM7bURBQ1E7SUFFL0I7UUFEQyxRQUFRLENBQUMsRUFBRSxDQUFDLFNBQVMsQ0FBQztzREFDVztJQUVsQztRQURDLFFBQVEsQ0FBQyxFQUFFLENBQUMsU0FBUyxDQUFDO2dEQUNLO0lBRTVCO1FBREMsUUFBUSxDQUFDLEVBQUUsQ0FBQyxTQUFTLENBQUM7Z0RBQ0s7SUEzQlgsWUFBWTtRQURoQyxPQUFPO09BQ2EsWUFBWSxDQXdQaEM7SUFBRCxtQkFBQztDQXhQRCxBQXdQQyxDQXhQeUMsRUFBRSxDQUFDLFNBQVMsR0F3UHJEO2tCQXhQb0IsWUFBWTtBQXdQaEMsQ0FBQztBQUVGLDJCQUEyQiIsImZpbGUiOiIiLCJzb3VyY2VSb290IjoiLyIsInNvdXJjZXNDb250ZW50IjpbIlxuXG5jb25zdCB7Y2NjbGFzcywgcHJvcGVydHl9ID0gY2MuX2RlY29yYXRvcjtcbkBjY2NsYXNzXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBBdWRpb01hbmFnZXIgZXh0ZW5kcyBjYy5Db21wb25lbnQge1xuICAgIHN0YXRpYyBfaW5zdGFuY2U6IGFueTtcbiAgICAvL+iDjOaZr+mfs+S5kFxuICAgIEBwcm9wZXJ0eShjYy5BdWRpb0NsaXApXG4gICAgYXVkaW9HYW1lQmdtMDogY2MuQXVkaW9DbGlwID0gbnVsbDtcblxuICAgIEBwcm9wZXJ0eShjYy5BdWRpb0NsaXApXG4gICAgeGlhb2NodTogY2MuQXVkaW9DbGlwID0gbnVsbDtcbiAgICBAcHJvcGVydHkoY2MuQXVkaW9DbGlwKVxuICAgIGhpdDogY2MuQXVkaW9DbGlwID0gbnVsbDtcbiAgICBAcHJvcGVydHkoY2MuQXVkaW9DbGlwKVxuICAgIGRvd246IGNjLkF1ZGlvQ2xpcCA9IG51bGw7XG4gICAgQHByb3BlcnR5KGNjLkF1ZGlvQ2xpcClcbiAgICBmYW5neGlhbmc6IGNjLkF1ZGlvQ2xpcCA9IG51bGw7XG4gICAgQHByb3BlcnR5KGNjLkF1ZGlvQ2xpcClcbiAgICBidWlsZDogY2MuQXVkaW9DbGlwID0gbnVsbDtcbiAgICBAcHJvcGVydHkoY2MuQXVkaW9DbGlwKVxuICAgIHdpbjogY2MuQXVkaW9DbGlwID0gbnVsbDtcbiAgICBAcHJvcGVydHkoY2MuQXVkaW9DbGlwKVxuICAgIGxvc2U6IGNjLkF1ZGlvQ2xpcCA9IG51bGw7XG4gICAgQHByb3BlcnR5KGNjLkF1ZGlvQ2xpcClcbiAgICBhbm5pdV9CaWc6IGNjLkF1ZGlvQ2xpcCA9IG51bGw7XG4gICAgQHByb3BlcnR5KGNjLkF1ZGlvQ2xpcClcbiAgICBhbm5pdV9saXR0bGU6IGNjLkF1ZGlvQ2xpcCA9IG51bGw7XG4gICAgQHByb3BlcnR5KGNjLkF1ZGlvQ2xpcClcbiAgICB6aHVhbjE6IGNjLkF1ZGlvQ2xpcCA9IG51bGw7XG4gICAgQHByb3BlcnR5KGNjLkF1ZGlvQ2xpcClcbiAgICB6aHVhbjI6IGNjLkF1ZGlvQ2xpcCA9IG51bGw7XG5cbiAgICBtQXVkaW9NYXA6IHt9O1xuICAgIGJnTXVzaWNWb2x1bWU6IG51bWJlcjtcbiAgICBlZmZlY3RNdXNpY1ZvbHVtZTogbnVtYmVyO1xuICAgIG1NdXNpY1N3aXRjaDogbnVtYmVyO1xuICAgIG1FZmZlY3RTd2l0Y2g6IG51bWJlcjtcbiAgICBicmlja1NvdW5kOiBhbnk7XG4gICAgcmV3YXJkOiBib29sZWFuO1xuICAgIGZpbmlzaDogYm9vbGVhbjtcbiAgICByZXdhcmRDb3VudDogbnVtYmVyO1xuICAgIG1NdXNpY0tleTogYW55O1xuXG4gICAgb25Mb2FkKCkge1xuICAgICAgICBpZiAoQXVkaW9NYW5hZ2VyLl9pbnN0YW5jZSA9PSBudWxsKSB7XG4gICAgICAgICAgICBBdWRpb01hbmFnZXIuX2luc3RhbmNlID0gdGhpcztcbiAgICAgICAgICAgIGNjLmdhbWUuYWRkUGVyc2lzdFJvb3ROb2RlKHRoaXMubm9kZSk7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5yZXdhcmQgPSBmYWxzZTtcbiAgICAgICAgdGhpcy5maW5pc2ggPSBmYWxzZTtcbiAgICAgICAgdGhpcy5yZXdhcmRDb3VudCA9IDA7XG4gICAgICAgIHRoaXMuY3RvcigpO1xuXG4gICAgICAgIHRoaXMucHJlbG9hZCgpO1xuICAgIH1cblxuICAgIGN0b3IgKCkge1xuICAgICAgICB0aGlzLm1BdWRpb01hcCA9IHt9O1xuICAgICAgICAvKipcbiAgICAgICAgICog6buY6K6k6Z+z6YeP5aSn5bCPXG4gICAgICAgICAqIEB0eXBlIHtudW1iZXJ9XG4gICAgICAgICAqL1xuICAgICAgICB0aGlzLmJnTXVzaWNWb2x1bWUgPSAwLjE7XG4gICAgICAgIHRoaXMuZWZmZWN0TXVzaWNWb2x1bWUgPSAxO1xuXG4gICAgICAgIHRoaXMubU11c2ljU3dpdGNoID0gMTtcbiAgICAgICAgdGhpcy5tRWZmZWN0U3dpdGNoID0gMTtcbiAgICB9XG4gICAgcGxheSAoYXVkaW9Tb3VyY2UsIGxvb3AsIGNhbGxiYWNrLCBpc0JnTXVzaWMpIHtcbiAgICAgICAgLy8gaWYgKGlzQmdNdXNpYyAmJiAhdGhpcy5tTXVzaWNTd2l0Y2gpIHJldHVybjtcbiAgICAgICAgLy8gaWYgKCFpc0JnTXVzaWMgJiYgIXRoaXMubUVmZmVjdFN3aXRjaCkgcmV0dXJuO1xuICAgICAgICB2YXIgdm9sdW1lID0gaXNCZ011c2ljID8gdGhpcy5iZ011c2ljVm9sdW1lIDogdGhpcy5lZmZlY3RNdXNpY1ZvbHVtZTtcblxuICAgICAgICAvLyBpZiAoY2Muc3lzLmlzQnJvd3Nlcikge1xuICAgICAgICAgICAgLy8gaWYoYXVkaW9Tb3VyY2UgPT0gdGhpcy5icmlja1NvdW5kKXtcbiAgICAgICAgICAgIC8vICAgICB2b2x1bWUgPSAwLjE7XG4gICAgICAgICAgICAvLyB9IFxuICAgICAgICAgICAgdm9sdW1lID0gMTtcbiAgICAgICAgICAgIGNjLmF1ZGlvRW5naW5lLnNldEVmZmVjdHNWb2x1bWUoMSk7XG4gICAgICAgICAgICBjYy5hdWRpb0VuZ2luZS5zZXRNdXNpY1ZvbHVtZSgxKTtcbiAgICAgICAgICAgIGlmKGF1ZGlvU291cmNlLm5hbWUgPT0gXCJsb3NlXCIpe1xuICAgICAgICAgICAgICAgIGNjLmF1ZGlvRW5naW5lLnNldEVmZmVjdHNWb2x1bWUoMC41KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2V7XG4gICAgICAgICAgICAgICAgY2MuYXVkaW9FbmdpbmUuc2V0RWZmZWN0c1ZvbHVtZSgxKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHZhciBjb250ZXh0ID0gY2MuYXVkaW9FbmdpbmUucGxheUVmZmVjdChhdWRpb1NvdXJjZSwgbG9vcCk7XG4gICAgICAgICAgICBpZiAoY2FsbGJhY2spe1xuICAgICAgICAgICAgICAgIGNjLmF1ZGlvRW5naW5lLnNldEZpbmlzaENhbGxiYWNrKGNvbnRleHQsIGZ1bmN0aW9uKCl7XG4gICAgICAgICAgICAgICAgICAgIGNhbGxiYWNrLmNhbGwodGhpcyk7XG4gICAgICAgICAgICAgICAgfS5iaW5kKHRoaXMpKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIC8vIGNjLnd3eC5PdXRQdXQubG9nKCdwbGF5IGF1ZGlvIGVmZmVjdCBpc0Jyb3dzZXI6ICcgKyBjb250ZXh0LnNyYyk7XG5cbiAgICAgICAgICAgIHRoaXMubUF1ZGlvTWFwW2F1ZGlvU291cmNlXSA9IGNvbnRleHQ7XG4gICAgICAgICAgICByZXR1cm4gYXVkaW9Tb3VyY2U7XG4gICAgICAgIC8vIH0gZWxzZSB7XG4gICAgICAgIC8vICAgICByZXR1cm4gYXVkaW9Tb3VyY2U7XG4gICAgICAgIC8vIH1cbiAgICB9XG5cbiAgICBzYXZlICgpIHtcbiAgICAgICAgLy8gY2Mud3d4LlN0b3JhZ2Uuc2V0SXRlbShjYy53d3guU3RvcmFnZS5LZXlfU2V0dGluZ19NdXNpY19Wb2x1bWUsIHRoaXMubU11c2ljU3dpdGNoKTtcbiAgICAgICAgLy8gY2Mud3d4LlN0b3JhZ2Uuc2V0SXRlbShjYy53d3guU3RvcmFnZS5LZXlfU2V0dGluZ19FZmZlY3RfVm9sdW1lLCB0aGlzLm1FZmZlY3RTd2l0Y2gpO1xuICAgIH1cblxuICAgIC8vIHN0YXRpYyBnZXQgSW5zdGFuY2UoKVxuICAgIC8vIHtcbiAgICAvLyAgICAgaWYgKHRoaXMuX2luc3RhbmNlID09IG51bGwpXG4gICAgLy8gICAgIHtcbiAgICAvLyAgICAgICAgIHRoaXMuX2luc3RhbmNlID0gbmV3IEF1ZGlvTWFuYWdlcigpO1xuICAgIC8vICAgICB9XG4gICAgLy8gICAgIHJldHVybiB0aGlzLl9pbnN0YW5jZTtcbiAgICAvLyB9XG5cbiAgICBwcmVsb2FkICgpIHtcbiAgICAgICAgaWYgKCEoY2Muc3lzLnBsYXRmb3JtID09PSBjYy5zeXMuV0VDSEFUX0dBTUUpKSB7IHJldHVybjsgfVxuXG4gICAgICAgIHZhciBtdXNpY3MgPSBbXG4gICAgICAgICAgICB0aGlzLmF1ZGlvR2FtZUJnbTAsXG4gICAgICAgIF07XG4gICAgICAgIG11c2ljcy5mb3JFYWNoKGZ1bmN0aW9uKHBhdGgpIHtcbiAgICAgICAgfSlcbiAgICB9XG5cbiAgICBnZXRBdWRpb011c2ljU3dpdGNoKClcbiAgICB7XG4gICAgICAgIHJldHVybiB0aGlzLm1NdXNpY1N3aXRjaDtcblxuICAgIH1cbiAgICBnZXRBdWRpb0VmZmVjdFN3aXRjaCgpXG4gICAge1xuICAgICAgICByZXR1cm4gdGhpcy5tRWZmZWN0U3dpdGNoO1xuICAgIH1cbiAgICB0cnVuQXVkaW9Tb3VuZChvbilcbiAgICB7XG4gICAgICAgIHRoaXMuc3dpdGNoTXVzaWMob24pO1xuICAgICAgICB0aGlzLnN3aXRjaEVmZmVjdChvbilcbiAgICB9XG4gICAgc3dpdGNoTXVzaWMgKG9uKSB7XG4gICAgICAgIGlmICh0aGlzLm1NdXNpY1N3aXRjaCAhPSAob24/MTowKSlcbiAgICAgICAge1xuICAgICAgICAgICAgdGhpcy5tTXVzaWNTd2l0Y2ggPSAxLXRoaXMubU11c2ljU3dpdGNoO1xuICAgICAgICAgICAgLy8gdGhpcy5zYXZlKCk7XG4gICAgICAgIH1cbiAgICAgICAgaWYob24pXG4gICAgICAgIHtcbiAgICAgICAgICAgIHRoaXMucGxheU11c2ljR2FtZSgpO1xuICAgICAgICB9XG4gICAgICAgIGVsc2VcbiAgICAgICAge1xuICAgICAgICAgICAgdGhpcy5zdG9wTXVzaWMoKTtcbiAgICAgICAgfVxuICAgIH1cbiAgICBzd2l0Y2hFZmZlY3QgKG9uKSB7XG4gICAgICAgIGlmICh0aGlzLm1FZmZlY3RTd2l0Y2ggIT0gKG9uPzE6MCkpe1xuICAgICAgICAgICAgdGhpcy5tRWZmZWN0U3dpdGNoID0gMS10aGlzLm1FZmZlY3RTd2l0Y2g7XG4gICAgICAgICAgICAvLyB0aGlzLnNhdmUoKTtcblxuICAgICAgICB9XG4gICAgfVxuICAgIG9uSGlkZSAoKSB7XG4gICAgICAgIGNjLmF1ZGlvRW5naW5lLnBhdXNlQWxsKCk7XG4gICAgfVxuXG4gICAgb25TaG93ICgpIHtcbiAgICAgICAgY2MuYXVkaW9FbmdpbmUucmVzdW1lQWxsKCk7XG4gICAgfVxuXG4gICAgLy/mkq3mlL7pn7PmlYhcbiAgICBwbGF5RWZmZWN0KG5hbWUsY2FsbGJhY2spe1xuICAgICAgICBpZighY2MuZnguR2FtZUNvbmZpZy5HTV9JTkZPLmVmZmVjdE9wZW4pe1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIGlmKHRoaXNbbmFtZV0pXG4gICAgICAgICAgICByZXR1cm4gdGhpcy5wbGF5KHRoaXNbbmFtZV0sIGZhbHNlLGNhbGxiYWNrLHRoaXMubUVmZmVjdFN3aXRjaCk7XG4gICAgfVxuICAgIHBsYXlNdXNpYyAoa2V5LCBjYWxsYmFjaywgbG9vcCkge1xuICAgICAgICBpZighY2MuZnguR2FtZUNvbmZpZy5HTV9JTkZPLm11c2ljT3Blbil7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgbG9vcCA9IHR5cGVvZiBsb29wID09ICd1bmRlZmluZWQnICB8fCBsb29wID8gdHJ1ZSA6IGZhbHNlO1xuICAgICAgICB0aGlzLnN0b3BNdXNpYygpO1xuICAgICAgICB0aGlzLm1NdXNpY0tleSA9IHRoaXMucGxheShrZXksIGxvb3AsIGNhbGxiYWNrLCB0cnVlKTtcblxuICAgIH1cbiAgICAvKipcbiAgICAgKiDmuLjmiI/og4zmma/pn7PkuZBcbiAgICAgKi9cbiAgICBwbGF5TXVzaWNHYW1lICgpIHtcbiAgICAgICAgdGhpcy5zdG9wTXVzaWMoKTtcbiAgICAgICAgdGhpcy5wbGF5TXVzaWModGhpcy5hdWRpb0dhbWVCZ20wLHt9LHRydWUpO1xuICAgIH1cbiAgICAvKipcbiAgICAgKiDlgZzmraLog4zmma/pn7PkuZDmkq3mlL5cbiAgICAgKi9cbiAgICBzdG9wTXVzaWMgKCkge1xuICAgICAgICAvLyBjYy53d3guT3V0UHV0LmxvZygnc3RvcE11c2ljIGF1ZGlvIGVmZmVjdCB3eDogJyArIHRoaXMubU11c2ljS2V5KTtcbiAgICAgICAgY2MuYXVkaW9FbmdpbmUuc3RvcEFsbCgpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIOaBouWkjeiiq+aaguWBnOeahOiDjOaZr+mfs+S5kOaSreaUvlxuICAgICAqL1xuICAgIHJlc3VtZU11c2ljICgpIHtcbiAgICAgICAgLy8g6LCD55SoIGNjLmF1ZGlvRW5naW5lIOeahCByZXN1bWVNdXNpYyDmlrnms5XmgaLlpI3pn7PkuZDmkq3mlL5cbiAgICAgICAgY2MuYXVkaW9FbmdpbmUucmVzdW1lTXVzaWMoKTtcbiAgICB9XG5cbiAgICAvKlxuICAgICog5ri45oiP5byA5aeL6Z+z5pWIXG4gICAgKlxuICAgICovXG4gICAgcGxheUdhbWVTdGFydCgpXG4gICAge1xuICAgIFxuICAgIH1cbiAgICAvKlxuICAgICog5aSx6LSl55qE5ri45oiP57uT5p2fXG4gICAgKi9cbiAgICBwbGF5R2FtZU92ZXIoKVxuICAgIHtcblxuICAgIH1cbiAgICAvKlxuICAgICAgICAqIOaIkOWKn+eahOa4uOaIj+e7k+adn1xuICAgICAgICAqL1xuICAgIHBsYXlHYW1lUmVzdWx0RmFpbGVkKClcbiAgICB7XG5cbiAgICB9XG4gICAgLypcbiAgICAqIOaIkOWKn+eahOa4uOaIj+e7k+adn1xuICAgICovXG4gICAgcGxheUdhbWVSZXN1bHRTdWNjZXNzKClcbiAgICB7XG5cbiAgICB9XG4gICAgLyoqXG4gICAgICog5oql6K2m55qE6Z+z5pWIXG4gICAgICovXG5cbiAgICAvKipcbiAgICAgKiDmjInpkq5cbiAgICAgKi9cbiAgICBwbGF5QXVkaW9CdXR0b24gKCkge1xuICAgICAgICAvLyByZXR1cm4gdGhpcy5wbGF5KHRoaXMuYXVkaW9CdXR0b25DbGljaywgZmFsc2UsbnVsbCx0aGlzLm1FZmZlY3RTd2l0Y2gpO1xuICAgIH1cbn07XG5cbi8vIGV4cG9ydCB7IEF1ZGlvTWFuYWdlciB9O1xuIl19 -======= -//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImFzc2V0c1xcU2NyaXB0XFxtb2R1bGVcXE11c2ljXFxBdWRpb01hbmFnZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBRU0sSUFBQSxLQUFzQixFQUFFLENBQUMsVUFBVSxFQUFsQyxPQUFPLGFBQUEsRUFBRSxRQUFRLGNBQWlCLENBQUM7QUFFMUM7SUFBMEMsZ0NBQVk7SUFBdEQ7UUFBQSxxRUF3UEM7UUF0UEcsTUFBTTtRQUVOLG1CQUFhLEdBQWlCLElBQUksQ0FBQztRQUduQyxhQUFPLEdBQWlCLElBQUksQ0FBQztRQUU3QixTQUFHLEdBQWlCLElBQUksQ0FBQztRQUV6QixVQUFJLEdBQWlCLElBQUksQ0FBQztRQUUxQixlQUFTLEdBQWlCLElBQUksQ0FBQztRQUUvQixXQUFLLEdBQWlCLElBQUksQ0FBQztRQUUzQixTQUFHLEdBQWlCLElBQUksQ0FBQztRQUV6QixVQUFJLEdBQWlCLElBQUksQ0FBQztRQUUxQixlQUFTLEdBQWlCLElBQUksQ0FBQztRQUUvQixrQkFBWSxHQUFpQixJQUFJLENBQUM7UUFFbEMsWUFBTSxHQUFpQixJQUFJLENBQUM7UUFFNUIsWUFBTSxHQUFpQixJQUFJLENBQUM7O0lBNk5oQyxDQUFDO3FCQXhQb0IsWUFBWTtJQXdDN0IsNkJBQU0sR0FBTjtRQUNJLElBQUksY0FBWSxDQUFDLFNBQVMsSUFBSSxJQUFJLEVBQUU7WUFDaEMsY0FBWSxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUM7WUFDOUIsRUFBRSxDQUFDLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7U0FDekM7YUFDSTtZQUNELE9BQU87U0FDVjtRQUNELElBQUksQ0FBQyxNQUFNLEdBQUcsS0FBSyxDQUFDO1FBQ3BCLElBQUksQ0FBQyxNQUFNLEdBQUcsS0FBSyxDQUFDO1FBQ3BCLElBQUksQ0FBQyxXQUFXLEdBQUcsQ0FBQyxDQUFDO1FBQ3JCLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUVaLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQztJQUNuQixDQUFDO0lBRUQsMkJBQUksR0FBSjtRQUNJLElBQUksQ0FBQyxTQUFTLEdBQUcsRUFBRSxDQUFDO1FBQ3BCOzs7V0FHRztRQUNILElBQUksQ0FBQyxhQUFhLEdBQUcsR0FBRyxDQUFDO1FBQ3pCLElBQUksQ0FBQyxpQkFBaUIsR0FBRyxDQUFDLENBQUM7UUFFM0IsSUFBSSxDQUFDLFlBQVksR0FBRyxDQUFDLENBQUM7UUFDdEIsSUFBSSxDQUFDLGFBQWEsR0FBRyxDQUFDLENBQUM7SUFDM0IsQ0FBQztJQUNELDJCQUFJLEdBQUosVUFBTSxXQUFXLEVBQUUsSUFBSSxFQUFFLFFBQVEsRUFBRSxTQUFTO1FBQ3hDLCtDQUErQztRQUMvQyxpREFBaUQ7UUFDakQsSUFBSSxNQUFNLEdBQUcsU0FBUyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsaUJBQWlCLENBQUM7UUFFckUsMEJBQTBCO1FBQ3RCLHNDQUFzQztRQUN0QyxvQkFBb0I7UUFDcEIsS0FBSztRQUNMLE1BQU0sR0FBRyxDQUFDLENBQUM7UUFDWCxFQUFFLENBQUMsV0FBVyxDQUFDLGdCQUFnQixDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQ25DLEVBQUUsQ0FBQyxXQUFXLENBQUMsY0FBYyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQ2pDLElBQUcsV0FBVyxDQUFDLElBQUksSUFBSSxNQUFNLEVBQUM7WUFDMUIsRUFBRSxDQUFDLFdBQVcsQ0FBQyxnQkFBZ0IsQ0FBQyxHQUFHLENBQUMsQ0FBQztTQUN4QzthQUNHO1lBQ0EsRUFBRSxDQUFDLFdBQVcsQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDLENBQUMsQ0FBQztTQUN0QztRQUNELElBQUksT0FBTyxHQUFHLEVBQUUsQ0FBQyxXQUFXLENBQUMsVUFBVSxDQUFDLFdBQVcsRUFBRSxJQUFJLENBQUMsQ0FBQztRQUMzRCxJQUFJLFFBQVEsRUFBQztZQUNULEVBQUUsQ0FBQyxXQUFXLENBQUMsaUJBQWlCLENBQUMsT0FBTyxFQUFFO2dCQUN0QyxRQUFRLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO1lBQ3hCLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQztTQUNqQjtRQUNELG9FQUFvRTtRQUVwRSxJQUFJLENBQUMsU0FBUyxDQUFDLFdBQVcsQ0FBQyxHQUFHLE9BQU8sQ0FBQztRQUN0QyxPQUFPLFdBQVcsQ0FBQztRQUN2QixXQUFXO1FBQ1gsMEJBQTBCO1FBQzFCLElBQUk7SUFDUixDQUFDO0lBRUQsMkJBQUksR0FBSjtRQUNJLHNGQUFzRjtRQUN0Rix3RkFBd0Y7SUFDNUYsQ0FBQztJQUVELHdCQUF3QjtJQUN4QixJQUFJO0lBQ0osa0NBQWtDO0lBQ2xDLFFBQVE7SUFDUiwrQ0FBK0M7SUFDL0MsUUFBUTtJQUNSLDZCQUE2QjtJQUM3QixJQUFJO0lBRUosOEJBQU8sR0FBUDtRQUNJLElBQUksQ0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsUUFBUSxLQUFLLEVBQUUsQ0FBQyxHQUFHLENBQUMsV0FBVyxDQUFDLEVBQUU7WUFBRSxPQUFPO1NBQUU7UUFFMUQsSUFBSSxNQUFNLEdBQUc7WUFDVCxJQUFJLENBQUMsYUFBYTtTQUNyQixDQUFDO1FBQ0YsTUFBTSxDQUFDLE9BQU8sQ0FBQyxVQUFTLElBQUk7UUFDNUIsQ0FBQyxDQUFDLENBQUE7SUFDTixDQUFDO0lBRUQsMENBQW1CLEdBQW5CO1FBRUksT0FBTyxJQUFJLENBQUMsWUFBWSxDQUFDO0lBRTdCLENBQUM7SUFDRCwyQ0FBb0IsR0FBcEI7UUFFSSxPQUFPLElBQUksQ0FBQyxhQUFhLENBQUM7SUFDOUIsQ0FBQztJQUNELHFDQUFjLEdBQWQsVUFBZSxFQUFFO1FBRWIsSUFBSSxDQUFDLFdBQVcsQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUNyQixJQUFJLENBQUMsWUFBWSxDQUFDLEVBQUUsQ0FBQyxDQUFBO0lBQ3pCLENBQUM7SUFDRCxrQ0FBVyxHQUFYLFVBQWEsRUFBRTtRQUNYLElBQUksSUFBSSxDQUFDLFlBQVksSUFBSSxDQUFDLEVBQUUsQ0FBQSxDQUFDLENBQUEsQ0FBQyxDQUFBLENBQUMsQ0FBQSxDQUFDLENBQUMsRUFDakM7WUFDSSxJQUFJLENBQUMsWUFBWSxHQUFHLENBQUMsR0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDO1lBQ3hDLGVBQWU7U0FDbEI7UUFDRCxJQUFHLEVBQUUsRUFDTDtZQUNJLElBQUksQ0FBQyxhQUFhLEVBQUUsQ0FBQztTQUN4QjthQUVEO1lBQ0ksSUFBSSxDQUFDLFNBQVMsRUFBRSxDQUFDO1NBQ3BCO0lBQ0wsQ0FBQztJQUNELG1DQUFZLEdBQVosVUFBYyxFQUFFO1FBQ1osSUFBSSxJQUFJLENBQUMsYUFBYSxJQUFJLENBQUMsRUFBRSxDQUFBLENBQUMsQ0FBQSxDQUFDLENBQUEsQ0FBQyxDQUFBLENBQUMsQ0FBQyxFQUFDO1lBQy9CLElBQUksQ0FBQyxhQUFhLEdBQUcsQ0FBQyxHQUFDLElBQUksQ0FBQyxhQUFhLENBQUM7WUFDMUMsZUFBZTtTQUVsQjtJQUNMLENBQUM7SUFDRCw2QkFBTSxHQUFOO1FBQ0ksRUFBRSxDQUFDLFdBQVcsQ0FBQyxRQUFRLEVBQUUsQ0FBQztJQUM5QixDQUFDO0lBRUQsNkJBQU0sR0FBTjtRQUNJLEVBQUUsQ0FBQyxXQUFXLENBQUMsU0FBUyxFQUFFLENBQUM7SUFDL0IsQ0FBQztJQUVELE1BQU07SUFDTixpQ0FBVSxHQUFWLFVBQVcsSUFBSSxFQUFDLFFBQVE7UUFDcEIsSUFBRyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsVUFBVSxDQUFDLE9BQU8sQ0FBQyxVQUFVLEVBQUM7WUFDcEMsT0FBTztTQUNWO1FBQ0QsSUFBRyxJQUFJLENBQUMsSUFBSSxDQUFDO1lBQ1QsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsRUFBRSxLQUFLLEVBQUMsUUFBUSxFQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsQ0FBQztJQUN4RSxDQUFDO0lBQ0QsZ0NBQVMsR0FBVCxVQUFXLEdBQUcsRUFBRSxRQUFRLEVBQUUsSUFBSTtRQUMxQixJQUFHLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxVQUFVLENBQUMsT0FBTyxDQUFDLFNBQVMsRUFBQztZQUNuQyxPQUFPO1NBQ1Y7UUFDRCxJQUFJLEdBQUcsT0FBTyxJQUFJLElBQUksV0FBVyxJQUFLLElBQUksQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUM7UUFDMUQsSUFBSSxDQUFDLFNBQVMsRUFBRSxDQUFDO1FBQ2pCLElBQUksQ0FBQyxTQUFTLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLEVBQUUsSUFBSSxFQUFFLFFBQVEsRUFBRSxJQUFJLENBQUMsQ0FBQztJQUUxRCxDQUFDO0lBQ0Q7O09BRUc7SUFDSCxvQ0FBYSxHQUFiO1FBQ0ksSUFBSSxDQUFDLFNBQVMsRUFBRSxDQUFDO1FBQ2pCLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLGFBQWEsRUFBQyxFQUFFLEVBQUMsSUFBSSxDQUFDLENBQUM7SUFDL0MsQ0FBQztJQUNEOztPQUVHO0lBQ0gsZ0NBQVMsR0FBVDtRQUNJLHFFQUFxRTtRQUNyRSxFQUFFLENBQUMsV0FBVyxDQUFDLE9BQU8sRUFBRSxDQUFDO0lBQzdCLENBQUM7SUFFRDs7T0FFRztJQUNILGtDQUFXLEdBQVg7UUFDSSwyQ0FBMkM7UUFDM0MsRUFBRSxDQUFDLFdBQVcsQ0FBQyxXQUFXLEVBQUUsQ0FBQztJQUNqQyxDQUFDO0lBRUQ7OztNQUdFO0lBQ0Ysb0NBQWEsR0FBYjtJQUdBLENBQUM7SUFDRDs7TUFFRTtJQUNGLG1DQUFZLEdBQVo7SUFHQSxDQUFDO0lBQ0Q7O1VBRU07SUFDTiwyQ0FBb0IsR0FBcEI7SUFHQSxDQUFDO0lBQ0Q7O01BRUU7SUFDRiw0Q0FBcUIsR0FBckI7SUFHQSxDQUFDO0lBQ0Q7O09BRUc7SUFFSDs7T0FFRztJQUNILHNDQUFlLEdBQWY7UUFDSSwwRUFBMEU7SUFDOUUsQ0FBQzs7SUFuUEQ7UUFEQyxRQUFRLENBQUMsRUFBRSxDQUFDLFNBQVMsQ0FBQzt1REFDWTtJQUduQztRQURDLFFBQVEsQ0FBQyxFQUFFLENBQUMsU0FBUyxDQUFDO2lEQUNNO0lBRTdCO1FBREMsUUFBUSxDQUFDLEVBQUUsQ0FBQyxTQUFTLENBQUM7NkNBQ0U7SUFFekI7UUFEQyxRQUFRLENBQUMsRUFBRSxDQUFDLFNBQVMsQ0FBQzs4Q0FDRztJQUUxQjtRQURDLFFBQVEsQ0FBQyxFQUFFLENBQUMsU0FBUyxDQUFDO21EQUNRO0lBRS9CO1FBREMsUUFBUSxDQUFDLEVBQUUsQ0FBQyxTQUFTLENBQUM7K0NBQ0k7SUFFM0I7UUFEQyxRQUFRLENBQUMsRUFBRSxDQUFDLFNBQVMsQ0FBQzs2Q0FDRTtJQUV6QjtRQURDLFFBQVEsQ0FBQyxFQUFFLENBQUMsU0FBUyxDQUFDOzhDQUNHO0lBRTFCO1FBREMsUUFBUSxDQUFDLEVBQUUsQ0FBQyxTQUFTLENBQUM7bURBQ1E7SUFFL0I7UUFEQyxRQUFRLENBQUMsRUFBRSxDQUFDLFNBQVMsQ0FBQztzREFDVztJQUVsQztRQURDLFFBQVEsQ0FBQyxFQUFFLENBQUMsU0FBUyxDQUFDO2dEQUNLO0lBRTVCO1FBREMsUUFBUSxDQUFDLEVBQUUsQ0FBQyxTQUFTLENBQUM7Z0RBQ0s7SUEzQlgsWUFBWTtRQURoQyxPQUFPO09BQ2EsWUFBWSxDQXdQaEM7SUFBRCxtQkFBQztDQXhQRCxBQXdQQyxDQXhQeUMsRUFBRSxDQUFDLFNBQVMsR0F3UHJEO2tCQXhQb0IsWUFBWTtBQXdQaEMsQ0FBQztBQUVGLDJCQUEyQiIsImZpbGUiOiIiLCJzb3VyY2VSb290IjoiLyIsInNvdXJjZXNDb250ZW50IjpbIlxyXG5cclxuY29uc3Qge2NjY2xhc3MsIHByb3BlcnR5fSA9IGNjLl9kZWNvcmF0b3I7XHJcbkBjY2NsYXNzXHJcbmV4cG9ydCBkZWZhdWx0IGNsYXNzIEF1ZGlvTWFuYWdlciBleHRlbmRzIGNjLkNvbXBvbmVudCB7XHJcbiAgICBzdGF0aWMgX2luc3RhbmNlOiBhbnk7XHJcbiAgICAvL+iDjOaZr+mfs+S5kFxyXG4gICAgQHByb3BlcnR5KGNjLkF1ZGlvQ2xpcClcclxuICAgIGF1ZGlvR2FtZUJnbTA6IGNjLkF1ZGlvQ2xpcCA9IG51bGw7XHJcblxyXG4gICAgQHByb3BlcnR5KGNjLkF1ZGlvQ2xpcClcclxuICAgIHhpYW9jaHU6IGNjLkF1ZGlvQ2xpcCA9IG51bGw7XHJcbiAgICBAcHJvcGVydHkoY2MuQXVkaW9DbGlwKVxyXG4gICAgaGl0OiBjYy5BdWRpb0NsaXAgPSBudWxsO1xyXG4gICAgQHByb3BlcnR5KGNjLkF1ZGlvQ2xpcClcclxuICAgIGRvd246IGNjLkF1ZGlvQ2xpcCA9IG51bGw7XHJcbiAgICBAcHJvcGVydHkoY2MuQXVkaW9DbGlwKVxyXG4gICAgZmFuZ3hpYW5nOiBjYy5BdWRpb0NsaXAgPSBudWxsO1xyXG4gICAgQHByb3BlcnR5KGNjLkF1ZGlvQ2xpcClcclxuICAgIGJ1aWxkOiBjYy5BdWRpb0NsaXAgPSBudWxsO1xyXG4gICAgQHByb3BlcnR5KGNjLkF1ZGlvQ2xpcClcclxuICAgIHdpbjogY2MuQXVkaW9DbGlwID0gbnVsbDtcclxuICAgIEBwcm9wZXJ0eShjYy5BdWRpb0NsaXApXHJcbiAgICBsb3NlOiBjYy5BdWRpb0NsaXAgPSBudWxsO1xyXG4gICAgQHByb3BlcnR5KGNjLkF1ZGlvQ2xpcClcclxuICAgIGFubml1X0JpZzogY2MuQXVkaW9DbGlwID0gbnVsbDtcclxuICAgIEBwcm9wZXJ0eShjYy5BdWRpb0NsaXApXHJcbiAgICBhbm5pdV9saXR0bGU6IGNjLkF1ZGlvQ2xpcCA9IG51bGw7XHJcbiAgICBAcHJvcGVydHkoY2MuQXVkaW9DbGlwKVxyXG4gICAgemh1YW4xOiBjYy5BdWRpb0NsaXAgPSBudWxsO1xyXG4gICAgQHByb3BlcnR5KGNjLkF1ZGlvQ2xpcClcclxuICAgIHpodWFuMjogY2MuQXVkaW9DbGlwID0gbnVsbDtcclxuXHJcbiAgICBtQXVkaW9NYXA6IHt9O1xyXG4gICAgYmdNdXNpY1ZvbHVtZTogbnVtYmVyO1xyXG4gICAgZWZmZWN0TXVzaWNWb2x1bWU6IG51bWJlcjtcclxuICAgIG1NdXNpY1N3aXRjaDogbnVtYmVyO1xyXG4gICAgbUVmZmVjdFN3aXRjaDogbnVtYmVyO1xyXG4gICAgYnJpY2tTb3VuZDogYW55O1xyXG4gICAgcmV3YXJkOiBib29sZWFuO1xyXG4gICAgZmluaXNoOiBib29sZWFuO1xyXG4gICAgcmV3YXJkQ291bnQ6IG51bWJlcjtcclxuICAgIG1NdXNpY0tleTogYW55O1xyXG5cclxuICAgIG9uTG9hZCgpIHtcclxuICAgICAgICBpZiAoQXVkaW9NYW5hZ2VyLl9pbnN0YW5jZSA9PSBudWxsKSB7XHJcbiAgICAgICAgICAgIEF1ZGlvTWFuYWdlci5faW5zdGFuY2UgPSB0aGlzO1xyXG4gICAgICAgICAgICBjYy5nYW1lLmFkZFBlcnNpc3RSb290Tm9kZSh0aGlzLm5vZGUpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLnJld2FyZCA9IGZhbHNlO1xyXG4gICAgICAgIHRoaXMuZmluaXNoID0gZmFsc2U7XHJcbiAgICAgICAgdGhpcy5yZXdhcmRDb3VudCA9IDA7XHJcbiAgICAgICAgdGhpcy5jdG9yKCk7XHJcblxyXG4gICAgICAgIHRoaXMucHJlbG9hZCgpO1xyXG4gICAgfVxyXG5cclxuICAgIGN0b3IgKCkge1xyXG4gICAgICAgIHRoaXMubUF1ZGlvTWFwID0ge307XHJcbiAgICAgICAgLyoqXHJcbiAgICAgICAgICog6buY6K6k6Z+z6YeP5aSn5bCPXHJcbiAgICAgICAgICogQHR5cGUge251bWJlcn1cclxuICAgICAgICAgKi9cclxuICAgICAgICB0aGlzLmJnTXVzaWNWb2x1bWUgPSAwLjE7XHJcbiAgICAgICAgdGhpcy5lZmZlY3RNdXNpY1ZvbHVtZSA9IDE7XHJcblxyXG4gICAgICAgIHRoaXMubU11c2ljU3dpdGNoID0gMTtcclxuICAgICAgICB0aGlzLm1FZmZlY3RTd2l0Y2ggPSAxO1xyXG4gICAgfVxyXG4gICAgcGxheSAoYXVkaW9Tb3VyY2UsIGxvb3AsIGNhbGxiYWNrLCBpc0JnTXVzaWMpIHtcclxuICAgICAgICAvLyBpZiAoaXNCZ011c2ljICYmICF0aGlzLm1NdXNpY1N3aXRjaCkgcmV0dXJuO1xyXG4gICAgICAgIC8vIGlmICghaXNCZ011c2ljICYmICF0aGlzLm1FZmZlY3RTd2l0Y2gpIHJldHVybjtcclxuICAgICAgICB2YXIgdm9sdW1lID0gaXNCZ011c2ljID8gdGhpcy5iZ011c2ljVm9sdW1lIDogdGhpcy5lZmZlY3RNdXNpY1ZvbHVtZTtcclxuXHJcbiAgICAgICAgLy8gaWYgKGNjLnN5cy5pc0Jyb3dzZXIpIHtcclxuICAgICAgICAgICAgLy8gaWYoYXVkaW9Tb3VyY2UgPT0gdGhpcy5icmlja1NvdW5kKXtcclxuICAgICAgICAgICAgLy8gICAgIHZvbHVtZSA9IDAuMTtcclxuICAgICAgICAgICAgLy8gfSBcclxuICAgICAgICAgICAgdm9sdW1lID0gMTtcclxuICAgICAgICAgICAgY2MuYXVkaW9FbmdpbmUuc2V0RWZmZWN0c1ZvbHVtZSgxKTtcclxuICAgICAgICAgICAgY2MuYXVkaW9FbmdpbmUuc2V0TXVzaWNWb2x1bWUoMSk7XHJcbiAgICAgICAgICAgIGlmKGF1ZGlvU291cmNlLm5hbWUgPT0gXCJsb3NlXCIpe1xyXG4gICAgICAgICAgICAgICAgY2MuYXVkaW9FbmdpbmUuc2V0RWZmZWN0c1ZvbHVtZSgwLjUpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGVsc2V7XHJcbiAgICAgICAgICAgICAgICBjYy5hdWRpb0VuZ2luZS5zZXRFZmZlY3RzVm9sdW1lKDEpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIHZhciBjb250ZXh0ID0gY2MuYXVkaW9FbmdpbmUucGxheUVmZmVjdChhdWRpb1NvdXJjZSwgbG9vcCk7XHJcbiAgICAgICAgICAgIGlmIChjYWxsYmFjayl7XHJcbiAgICAgICAgICAgICAgICBjYy5hdWRpb0VuZ2luZS5zZXRGaW5pc2hDYWxsYmFjayhjb250ZXh0LCBmdW5jdGlvbigpe1xyXG4gICAgICAgICAgICAgICAgICAgIGNhbGxiYWNrLmNhbGwodGhpcyk7XHJcbiAgICAgICAgICAgICAgICB9LmJpbmQodGhpcykpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIC8vIGNjLnd3eC5PdXRQdXQubG9nKCdwbGF5IGF1ZGlvIGVmZmVjdCBpc0Jyb3dzZXI6ICcgKyBjb250ZXh0LnNyYyk7XHJcblxyXG4gICAgICAgICAgICB0aGlzLm1BdWRpb01hcFthdWRpb1NvdXJjZV0gPSBjb250ZXh0O1xyXG4gICAgICAgICAgICByZXR1cm4gYXVkaW9Tb3VyY2U7XHJcbiAgICAgICAgLy8gfSBlbHNlIHtcclxuICAgICAgICAvLyAgICAgcmV0dXJuIGF1ZGlvU291cmNlO1xyXG4gICAgICAgIC8vIH1cclxuICAgIH1cclxuXHJcbiAgICBzYXZlICgpIHtcclxuICAgICAgICAvLyBjYy53d3guU3RvcmFnZS5zZXRJdGVtKGNjLnd3eC5TdG9yYWdlLktleV9TZXR0aW5nX011c2ljX1ZvbHVtZSwgdGhpcy5tTXVzaWNTd2l0Y2gpO1xyXG4gICAgICAgIC8vIGNjLnd3eC5TdG9yYWdlLnNldEl0ZW0oY2Mud3d4LlN0b3JhZ2UuS2V5X1NldHRpbmdfRWZmZWN0X1ZvbHVtZSwgdGhpcy5tRWZmZWN0U3dpdGNoKTtcclxuICAgIH1cclxuXHJcbiAgICAvLyBzdGF0aWMgZ2V0IEluc3RhbmNlKClcclxuICAgIC8vIHtcclxuICAgIC8vICAgICBpZiAodGhpcy5faW5zdGFuY2UgPT0gbnVsbClcclxuICAgIC8vICAgICB7XHJcbiAgICAvLyAgICAgICAgIHRoaXMuX2luc3RhbmNlID0gbmV3IEF1ZGlvTWFuYWdlcigpO1xyXG4gICAgLy8gICAgIH1cclxuICAgIC8vICAgICByZXR1cm4gdGhpcy5faW5zdGFuY2U7XHJcbiAgICAvLyB9XHJcblxyXG4gICAgcHJlbG9hZCAoKSB7XHJcbiAgICAgICAgaWYgKCEoY2Muc3lzLnBsYXRmb3JtID09PSBjYy5zeXMuV0VDSEFUX0dBTUUpKSB7IHJldHVybjsgfVxyXG5cclxuICAgICAgICB2YXIgbXVzaWNzID0gW1xyXG4gICAgICAgICAgICB0aGlzLmF1ZGlvR2FtZUJnbTAsXHJcbiAgICAgICAgXTtcclxuICAgICAgICBtdXNpY3MuZm9yRWFjaChmdW5jdGlvbihwYXRoKSB7XHJcbiAgICAgICAgfSlcclxuICAgIH1cclxuXHJcbiAgICBnZXRBdWRpb011c2ljU3dpdGNoKClcclxuICAgIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5tTXVzaWNTd2l0Y2g7XHJcblxyXG4gICAgfVxyXG4gICAgZ2V0QXVkaW9FZmZlY3RTd2l0Y2goKVxyXG4gICAge1xyXG4gICAgICAgIHJldHVybiB0aGlzLm1FZmZlY3RTd2l0Y2g7XHJcbiAgICB9XHJcbiAgICB0cnVuQXVkaW9Tb3VuZChvbilcclxuICAgIHtcclxuICAgICAgICB0aGlzLnN3aXRjaE11c2ljKG9uKTtcclxuICAgICAgICB0aGlzLnN3aXRjaEVmZmVjdChvbilcclxuICAgIH1cclxuICAgIHN3aXRjaE11c2ljIChvbikge1xyXG4gICAgICAgIGlmICh0aGlzLm1NdXNpY1N3aXRjaCAhPSAob24/MTowKSlcclxuICAgICAgICB7XHJcbiAgICAgICAgICAgIHRoaXMubU11c2ljU3dpdGNoID0gMS10aGlzLm1NdXNpY1N3aXRjaDtcclxuICAgICAgICAgICAgLy8gdGhpcy5zYXZlKCk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmKG9uKVxyXG4gICAgICAgIHtcclxuICAgICAgICAgICAgdGhpcy5wbGF5TXVzaWNHYW1lKCk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2VcclxuICAgICAgICB7XHJcbiAgICAgICAgICAgIHRoaXMuc3RvcE11c2ljKCk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG4gICAgc3dpdGNoRWZmZWN0IChvbikge1xyXG4gICAgICAgIGlmICh0aGlzLm1FZmZlY3RTd2l0Y2ggIT0gKG9uPzE6MCkpe1xyXG4gICAgICAgICAgICB0aGlzLm1FZmZlY3RTd2l0Y2ggPSAxLXRoaXMubUVmZmVjdFN3aXRjaDtcclxuICAgICAgICAgICAgLy8gdGhpcy5zYXZlKCk7XHJcblxyXG4gICAgICAgIH1cclxuICAgIH1cclxuICAgIG9uSGlkZSAoKSB7XHJcbiAgICAgICAgY2MuYXVkaW9FbmdpbmUucGF1c2VBbGwoKTtcclxuICAgIH1cclxuXHJcbiAgICBvblNob3cgKCkge1xyXG4gICAgICAgIGNjLmF1ZGlvRW5naW5lLnJlc3VtZUFsbCgpO1xyXG4gICAgfVxyXG5cclxuICAgIC8v5pKt5pS+6Z+z5pWIXHJcbiAgICBwbGF5RWZmZWN0KG5hbWUsY2FsbGJhY2spe1xyXG4gICAgICAgIGlmKCFjYy5meC5HYW1lQ29uZmlnLkdNX0lORk8uZWZmZWN0T3Blbil7XHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYodGhpc1tuYW1lXSlcclxuICAgICAgICAgICAgcmV0dXJuIHRoaXMucGxheSh0aGlzW25hbWVdLCBmYWxzZSxjYWxsYmFjayx0aGlzLm1FZmZlY3RTd2l0Y2gpO1xyXG4gICAgfVxyXG4gICAgcGxheU11c2ljIChrZXksIGNhbGxiYWNrLCBsb29wKSB7XHJcbiAgICAgICAgaWYoIWNjLmZ4LkdhbWVDb25maWcuR01fSU5GTy5tdXNpY09wZW4pe1xyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGxvb3AgPSB0eXBlb2YgbG9vcCA9PSAndW5kZWZpbmVkJyAgfHwgbG9vcCA/IHRydWUgOiBmYWxzZTtcclxuICAgICAgICB0aGlzLnN0b3BNdXNpYygpO1xyXG4gICAgICAgIHRoaXMubU11c2ljS2V5ID0gdGhpcy5wbGF5KGtleSwgbG9vcCwgY2FsbGJhY2ssIHRydWUpO1xyXG5cclxuICAgIH1cclxuICAgIC8qKlxyXG4gICAgICog5ri45oiP6IOM5pmv6Z+z5LmQXHJcbiAgICAgKi9cclxuICAgIHBsYXlNdXNpY0dhbWUgKCkge1xyXG4gICAgICAgIHRoaXMuc3RvcE11c2ljKCk7XHJcbiAgICAgICAgdGhpcy5wbGF5TXVzaWModGhpcy5hdWRpb0dhbWVCZ20wLHt9LHRydWUpO1xyXG4gICAgfVxyXG4gICAgLyoqXHJcbiAgICAgKiDlgZzmraLog4zmma/pn7PkuZDmkq3mlL5cclxuICAgICAqL1xyXG4gICAgc3RvcE11c2ljICgpIHtcclxuICAgICAgICAvLyBjYy53d3guT3V0UHV0LmxvZygnc3RvcE11c2ljIGF1ZGlvIGVmZmVjdCB3eDogJyArIHRoaXMubU11c2ljS2V5KTtcclxuICAgICAgICBjYy5hdWRpb0VuZ2luZS5zdG9wQWxsKCk7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiDmgaLlpI3ooqvmmoLlgZznmoTog4zmma/pn7PkuZDmkq3mlL5cclxuICAgICAqL1xyXG4gICAgcmVzdW1lTXVzaWMgKCkge1xyXG4gICAgICAgIC8vIOiwg+eUqCBjYy5hdWRpb0VuZ2luZSDnmoQgcmVzdW1lTXVzaWMg5pa55rOV5oGi5aSN6Z+z5LmQ5pKt5pS+XHJcbiAgICAgICAgY2MuYXVkaW9FbmdpbmUucmVzdW1lTXVzaWMoKTtcclxuICAgIH1cclxuXHJcbiAgICAvKlxyXG4gICAgKiDmuLjmiI/lvIDlp4vpn7PmlYhcclxuICAgICpcclxuICAgICovXHJcbiAgICBwbGF5R2FtZVN0YXJ0KClcclxuICAgIHtcclxuICAgIFxyXG4gICAgfVxyXG4gICAgLypcclxuICAgICog5aSx6LSl55qE5ri45oiP57uT5p2fXHJcbiAgICAqL1xyXG4gICAgcGxheUdhbWVPdmVyKClcclxuICAgIHtcclxuXHJcbiAgICB9XHJcbiAgICAvKlxyXG4gICAgICAgICog5oiQ5Yqf55qE5ri45oiP57uT5p2fXHJcbiAgICAgICAgKi9cclxuICAgIHBsYXlHYW1lUmVzdWx0RmFpbGVkKClcclxuICAgIHtcclxuXHJcbiAgICB9XHJcbiAgICAvKlxyXG4gICAgKiDmiJDlip/nmoTmuLjmiI/nu5PmnZ9cclxuICAgICovXHJcbiAgICBwbGF5R2FtZVJlc3VsdFN1Y2Nlc3MoKVxyXG4gICAge1xyXG5cclxuICAgIH1cclxuICAgIC8qKlxyXG4gICAgICog5oql6K2m55qE6Z+z5pWIXHJcbiAgICAgKi9cclxuXHJcbiAgICAvKipcclxuICAgICAqIOaMiemSrlxyXG4gICAgICovXHJcbiAgICBwbGF5QXVkaW9CdXR0b24gKCkge1xyXG4gICAgICAgIC8vIHJldHVybiB0aGlzLnBsYXkodGhpcy5hdWRpb0J1dHRvbkNsaWNrLCBmYWxzZSxudWxsLHRoaXMubUVmZmVjdFN3aXRjaCk7XHJcbiAgICB9XHJcbn07XHJcblxyXG4vLyBleHBvcnQgeyBBdWRpb01hbmFnZXIgfTtcclxuIl19 ->>>>>>> 0a31a7a5abc2c505bf743aa596e1c765a0405152 -//------QC-SOURCE-SPLIT------ - - (function() { - var nodeEnv = typeof require !== 'undefined' && typeof process !== 'undefined'; - var __module = nodeEnv ? module : {exports:{}}; - var __filename = 'preview-scripts/assets/Script/module/Tool/GameTool.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, '43bfcJ6/25Fs4fHUE0PeBOX', 'GameTool'); -// Script/module/Tool/GameTool.ts - -"use strict"; -Object.defineProperty(exports, "__esModule", { value: true }); -exports.GameTool = void 0; -var MiniGameSdk_1 = require("../../Sdk/MiniGameSdk"); -//最大工具类 各种公共方法,以及处理上传,获取后端接口数据 -var GameTool = { - _startTime: 0, - _endTime: 0, - _totalTime: 0, - //获取userId - Authentication: function () { - var name = "user_" + cc.fx.GameConfig.GM_INFO.gameId; - var data = JSON.parse(localStorage.getItem(name)); - if (data == "undifend" || data == null || data == "") { - var urlNow = window.location.href; - if (!this.containsTrain(urlNow)) { - var url = "https://api.sparkus.cn/api/user/auth/login?domain=hui32579WdYPsgYq&callback=" + location.href; - window.location.href = url; - } - } - else { - cc.fx.StorageMessage.setStorage(name, data); - cc.fx.GameConfig.GM_INFO.userId = parseInt(data.userId); - } - }, - containsTrain: function (str) { - return /from=train/i.test(str); - }, - //埋点上传 - setGameData: function () { - //GAME_DATA 初始化 每次清零 - cc.fx.GameConfig.GAME_DATA = []; - cc.fx.GameConfig.GAME_DATA.push(cc.fx.GameConfig.CLICK_DATA); - cc.fx.GameConfig.CLICK_init(); - var data = cc.fx.GameConfig.GAME_DATA; - var matchId = this.getMatchId(); - var postData = { - "gameId": cc.fx.GameConfig.GM_INFO.gameId, - "userId": cc.fx.GameConfig.GM_INFO.userId, - "scode": cc.fx.GameConfig.GM_INFO.scode, - "matchId": matchId, - "data": data - }; - // console.log("上传数据:",postData); - // cc.fx.HttpUtil.uploadUserLogData(postData,function(){}) - }, - //上传排行榜 type为1 - setRank: function (data) { - //GAME_DATA 初始化 每次清零 - var postData = { - "gameId": cc.fx.GameConfig.GM_INFO.gameId, - "userId": cc.fx.GameConfig.GM_INFO.userId, - "type": 1, - "score": data.score, - "accuracy": data.date, - "success": cc.fx.GameConfig.GM_INFO.success - }; - // cc.fx.HttpUtil.rankData(1,function(){},postData); - }, - //获取排行榜 type为2 - getRank: function (data, callback) { - var rankLength = data.length; - var postData = { - "gameId": cc.fx.GameConfig.GM_INFO.gameId, - "userId": cc.fx.GameConfig.GM_INFO.userId, - "page": 1, - "pageSize": rankLength - }; - //回调进getRankData - // cc.fx.HttpUtil.rankData(2,data =>{callback(data)},postData); - }, - //获取matchId 用于上传每次点击数据里面记录id方便查询 - getMatchId: function () { - var matchId = cc.sys.localStorage.getItem("matchId"); - var tempId = matchId; - if (matchId == "undifend" || matchId == null) { - matchId = this.setMatchId(); - } - else { - if (this.containsNanana(matchId) == true) { - matchId = this.setMatchId(); - } - else { - var char = parseInt(tempId.substring(10, tempId.length)); - if (cc.fx.GameConfig.GM_INFO.level == 1) { - char += 1; - matchId = tempId.slice(0, 10) + char + ""; - if (this.containsNanana(matchId)) - matchId = this.setMatchId(); - cc.fx.GameConfig.GM_INFO.matchId = matchId; - cc.sys.localStorage.setItem("matchId", matchId); - } - } - } - if (this.containsNanana(matchId) == true) { - matchId = this.setMatchId(); - } - return matchId; - }, - //检测matchId 如果有缓存以前的nanana数据清除 - containsNanana: function (str) { - return /na/i.test(str); - }, - //重新设置MatchId - setMatchId: function () { - // 定义包含可用字符的字符集 - var characters = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789'; - // 创建一个数组以保存随机字符 - var uuidArray = []; - // 循环10次 生成10位的UUID - for (var i = 0; i < 10; i++) { - // 生成随机索引,范围是字符集的长度 - var randomIndex = Math.floor(Math.random() * characters.length); - // 从字符集中获取随机字符 - var randomChar = characters.charAt(randomIndex); - // 将字符添加到数组中 - uuidArray.push(randomChar); - } - var data = uuidArray.join('') + 1 + ""; - cc.sys.localStorage.setItem("matchNumber", 1); - cc.sys.localStorage.setItem("matchId", data); - cc.fx.GameConfig.GM_INFO.matchId = data; - return data; - }, - //截取名字 - subName: function (name, length) { - if (name.length > length) { - name = name.substring(0, length) + "..."; - } - return name; - }, - //设置头像 - setPic: function (node, pic) { - node.active = false; - var url = pic; - setTimeout(function () { - fetch(url) - .then(function (response) { - return response.headers.get('Content-Length'); - }) - .then(function (errNo) { - if (errNo == "5093") { - node.active = true; - } - }) - .catch(function (error) { - // console.error('Error fetching X-Info:', error); - }); - }, 100); - cc.assetManager.loadRemote(url, { ext: '.png' }, function (err, texture) { - if (texture) { - node.active = true; - node.getComponent(cc.Sprite).spriteFrame = new cc.SpriteFrame(texture); - } - else { - // console.log(err,texture) - } - }); - }, - //第一个参数把目标带进来处理,第二个参数为名字长度,不同场景不同需求 - //名字4短,小排行,名字6长,大排行 - getRankData: function (data, target, nameLength) { - target.listData = data.data.list; - target.selfData = data.data.info; - var rankData = []; - var self = false; - cc.fx.GameTool.setPic(target.selfNode.getChildByName("pic").getChildByName("icon"), target.selfData.pic); - for (var i = 0; i <= target.listData.length - 1; i++) { - rankData.push({ rank: (i + 1), name: target.listData[i].nickName, total: target.listData[i].score, time: null, pic: target.listData[i].pic }); - if (cc.fx.GameConfig.GM_INFO.userId == target.listData[i].userId) { - self = true; - target.rankNumber = i; - target.selfNode.getChildByName("rankLab").getComponent(cc.Label).string = (i + 1) + ""; - } - if (i == (target.listData.length - 1) && self == false) { - target.rankNumber = i; - target.selfNode.getChildByName("rankLab").getComponent(cc.Label).string = "99+"; - } - } - target.selfData.nickName = cc.fx.GameTool.subName(target.selfData.nickName, nameLength); - target.selfNode.getChildByName("nameLab").getComponent(cc.Label).string = target.selfData.nickName; - target.selfNode.getChildByName("totalLab").getComponent(cc.Label).string = target.selfData.score; - var timeTemp = cc.fx.GameTool.getTimeShenNong(target.selfData.totleTimes); - // target.selfNode.getChildByName("timeLab").getComponent(cc.Label).string = timeTemp + ""; - switch (target.selfNode.getChildByName("rankLab").getComponent(cc.Label).string) { - case "1": - target.selfNode.getChildByName("rank").getChildByName("one").active = true; - break; - case "2": - target.selfNode.getChildByName("rank").getChildByName("two").active = true; - break; - case "3": - target.selfNode.getChildByName("rank").getChildByName("three").active = true; - break; - } - // 大排行 - if (nameLength == 6) { - target.rankList.setData(rankData); - target.selfNode.opacity = 255; - if (target.selfData.totalSunCount == 0) - target.selfNode.opacity = 0; - } - }, - getSeedRandom: function (min, max) { - // console.log("随机数:",cc.fx.GameConfig.GM_INFO.currSeed); - max = max || 1; - min = min || 0; - cc.fx.GameConfig.GM_INFO.currSeed = (cc.fx.GameConfig.GM_INFO.currSeed * 9301 + 49297) % 233280; - var rnd = cc.fx.GameConfig.GM_INFO.currSeed / 233280.0; - var tmp = min + rnd * (max - min); - return parseInt(tmp); - }, - //获取关卡配置的那个关卡数 - getCustom: function (type) { - var custom = cc.fx.StorageMessage.getStorage(cc.fx.storageType.storageTypeCustom); - if (custom == "undifend" || custom == null || custom == "") { - this.setCustom(); - } - else { - cc.fx.GameConfig.GM_INFO_SET("custom", custom[0]); - if (custom[0] != 0 || type == true) { - custom.shift(); - if (custom.length == 0) { - this.setCustom(); - } - else - cc.fx.StorageMessage.setStorage(cc.fx.storageType.storageTypeCustom, custom); - } - } - }, - //本地没有存储到配置,或者配置用完,重新创建配置 - setCustom: function () { - var arrayLength = cc.fx.GameConfig.LEVEL_INFO.length; - var arrayList = []; - for (var i = 1; i < arrayLength; i++) { - arrayList.push(i); - } - arrayList.sort(function () { return Math.random() - 0.5; }); - arrayList.unshift(0); - cc.fx.GameConfig.GM_INFO_SET("custom", arrayList[0]); - cc.fx.StorageMessage.setStorage(cc.fx.storageType.storageTypeCustom, arrayList); - }, - getSetScreenResolutionFlag: function () { - var size = cc.winSize; - var width = size.width; - var height = size.height; - if ((height / width) > (16.2 / 9)) - return false; - return true; - }, - //判断全面屏适配 - setFit: function (canvas) { - var flag = cc.fx.GameTool.getSetScreenResolutionFlag(); - if (flag) { - // console.log("不是全面屏"); - } - else { - // console.log("是全面屏"); - } - return flag; - }, - //获取游戏信息 - getGameInfo: function (node) { - var jg = false; - return jg; - }, - //设置游戏信息 - setGameInfo: function (pd) { - }, - //打字机效果 - typingAni: function (label, text, cb, target) { - var self = target; - var html = ''; - var arr = text.split(''); - var len = arr.length; - var step = 0; - self.func = function () { - html += arr[step]; - label.string = html; - if (++step == len) { - self.unschedule(self.func); - cb && cb(); - } - }; - self.schedule(self.func, 0.1, cc.macro.REPEAT_FOREVER, 0); - }, - //输入秒,返回需要展示时间格式 - getTimeMargin: function (second) { - var total = 0; - total = second; - var hour = 0; - hour = parseInt((total / 3600) + ""); //计算整数小时数 - var afterHour = total - hour * 60 * 60; //取得算出小时数后剩余的秒数 - var min = parseInt((afterHour / 60) + ""); //计算整数分 - var m = "" + min; - if (min < 10) - m = "0" + min; - var afterMin = total - hour * 60 * 60 - min * 60; //取得算出分后剩余的秒数 - var miao = afterMin + ""; - if (afterMin < 10) - miao = "0" + afterMin; - return m + ':' + miao; - }, - //输入秒,返回需要展示时间格式 - getTimeShenNong: function (second) { - second = parseInt(second / 1000 + ""); - var total = 0; - total = second; - var min = 0; - if (total > 60) { - min = parseInt((total / 60) + ""); //计算整数分 - } - var m = min + "'"; - var afterMin = total - min * 60; //取得算出分后剩余的秒数 - var miao = afterMin + "''"; - return m + miao; - }, - //打乱数组 - shuffleArray: function (array) { - var _a; - for (var i = array.length - 1; i > 0; i--) { - var j = Math.floor(Math.random() * (i + 1)); - _a = [array[j], array[i]], array[i] = _a[0], array[j] = _a[1]; - } - return array; - }, - //增加关卡数 - addLevel: function (time1, time2) { - cc.fx.GameConfig.GM_INFO.level += 1; - if (cc.fx.GameConfig.GM_INFO.level > 156) { - cc.fx.GameConfig.GM_INFO.level = 156; - } - var timestamp = Date.now(); - var levelInfo = { - level: cc.fx.GameConfig.GM_INFO.level, - timestamp: timestamp, - }; - // console.log("55555存储关卡数据:",levelInfo); - cc.fx.StorageMessage.setStorage("level", levelInfo); - if (time1 && time2) { - var data = { - time: time1, - add_Time: time2, - result: "success" - }; - cc.fx.GameTool.shushu_Track("finish_stage", data); - MiniGameSdk_1.MiniGameSdk.API.shushu_SetSuperProperties(); - } - cc.fx.GameTool.setUserLevel(function (data) { - // console.log("存储结果:",data); - // console.log("上传",data); - }); - }, - //改变金币信息 - changeCoin: function (coin) { - console.log("changeCoin", coin); - if (coin == undefined) - return; - if (coin < 0 && cc.fx.GameConfig.GM_INFO.coin < -coin) { - // console.log("金币不足",cc.fx.GameConfig.GM_INFO.coin,-coin); - return; - } - cc.fx.GameConfig.GM_INFO.coin += coin; - if (cc.fx.GameConfig.GM_INFO.coin < 0) { - cc.fx.GameConfig.GM_INFO.coin = 0; - } - // console.log("改变的金币:",coin); - // console.log("自身金币信息:",cc.fx.GameConfig.GM_INFO.coin); - var timestamp = Date.now(); - var coinInfo = { - coin: cc.fx.GameConfig.GM_INFO.coin, - timestamp: timestamp, - }; - MiniGameSdk_1.MiniGameSdk.API.shushu_SetSuperProperties(); - cc.fx.StorageMessage.setStorage("coin", coinInfo); - // console.log("存储金币数据:",cc.fx.GameConfig.GM_INFO.coin,coinInfo); - cc.fx.GameTool.setUserCoin(function (data) { - // console.log("上传",data); - }); - }, - //获取用户金币数量 - getUserCoin: function (callback) { - if (typeof wx !== 'undefined' && wx !== null) { - //@ts-ignore - wx.cloud.callFunction({ - name: 'userCoin', - data: { - action: 'read' - }, - success: function (res) { - // console.log('读取用户金币数据成功', res.result) - if (callback) - callback(res); - }, - fail: function (err) { - callback(err); - } - }); - } - }, - //改变用户金币 - setUserCoin: function (callback) { - if (typeof wx !== 'undefined' && wx !== null) { - if (cc.fx.GameConfig.GM_INFO.coin <= 0 || cc.fx.GameConfig.GM_INFO.coin == undefined) { - console.log("金币上传失败", cc.fx.GameConfig.GM_INFO.coin); - // MiniGameSdk.API.showToast(cc.fx.GameConfig.GM_INFO.coin); - cc.fx.GameConfig.GM_INFO.coin = 0; - } - console.log("即将上传的金币数量:", cc.fx.GameConfig.GM_INFO.coin); - //@ts-ignore - wx.cloud.callFunction({ - name: 'userCoin', - data: { - action: 'save', - coinAmount: cc.fx.GameConfig.GM_INFO.coin - }, - success: function (res) { - // console.log('云函数返回结果:', res); - if (res.result.code == 200) { - // console.log('存储金币数据成功',cc.fx.GameConfig.GM_INFO.coin); - } - if (callback) { - callback(res); - } - }, - fail: function (err) { - // console.log('存储金币数据失败') - if (callback) { - callback(err); - } - console.error('存储用户数据失败', err); - } - }); - } - }, - //获取用户关卡数 - getUserLevel: function (callback) { - if (typeof wx !== 'undefined' && wx !== null) { - //@ts-ignore - wx.cloud.callFunction({ - name: 'userLevel', - data: { - action: 'read' - }, - success: function (res) { - if (callback) - callback(res); - }, - fail: function (err) { - callback(err); - } - }); - } - }, - //进游戏处理 体力值情况 - getHealth: function (callback) { - var health = cc.fx.StorageMessage.getStorage("health"); - var timestamp = Date.now(); - cc.fx.GameConfig.GM_INFO.hp = 5; - //没有存储过体力值 - if (health == null || health == undefined || health == "") { - console.log("没存储过体力值,初进"); - cc.fx.GameConfig.GM_INFO.hp = 5; - cc.fx.GameTool.getUserHealth(function (data) { - console.log("体力接口返回结果", data); - if (data.result.code == 200) { - cc.fx.GameConfig.GM_INFO.hp = data.result.data; - cc.fx.GameConfig.GM_INFO.min_Time = data.result.timestamp; - var healthInfo = { - "health": cc.fx.GameConfig.GM_INFO.hp, - "timestamp": data.result.timestamp - }; - MiniGameSdk_1.MiniGameSdk.API.shushu_SetSuperProperties(); - cc.fx.StorageMessage.setStorage("health", healthInfo); - } - else if (data.result.code == 404 && data.result.message == "未找到体力数据") { - cc.fx.GameTool.setUserHealth(0, function () { - }); - } - if (callback) - callback(); - }); - } - else { - console.log("有存储过体力值:", health); - cc.fx.GameConfig.GM_INFO.hp = health.health; - if (callback) { - console.log("体力值读取完毕"); - callback(); - } - if (health.health < 0) { - console.log("体力值异常,归零"); - cc.fx.GameConfig.GM_INFO.hp = 0; - cc.fx.GameTool.setUserHealth(0, function () { - if (callback) - callback(); - }); - } - else if (health.health < 5) { - // 30分钟的毫秒数 - var thirtyMinutes = 30 * 60 * 1000; - var elapsedTime = timestamp - health.timestamp; - // 计算恢复的体力值 - var recoveredHealth = Math.min(5 - health.health, Math.floor(elapsedTime / thirtyMinutes)); - if (recoveredHealth > 0) { - health.health += recoveredHealth; - cc.fx.GameTool.setUserHealth(recoveredHealth, function () { - if (callback) - callback(); - }); - console.log("\u4F53\u529B\u503C\u6062\u590D " + recoveredHealth + " \u70B9\uFF0C\u5F53\u524D\u4F53\u529B\u503C: " + cc.fx.GameConfig.GM_INFO.hp); - } - else { - // 计算距离下一次恢复的剩余时间 - var remainingTime = Math.ceil((thirtyMinutes - (elapsedTime % thirtyMinutes)) / 1000); - console.log("\u4F53\u529B\u503C\u672A\u6EE1\uFF0C\u5F85\u6062\u590D\uFF0C\u8DDD\u79BB\u4E0B\u4E00\u6B21\u6062\u590D\u8FD8\u5269 " + remainingTime + " \u79D2"); - cc.fx.GameConfig.GM_INFO.min_Time = remainingTime; - } - } - } - }, - //获取用户体力值 - getUserHealth: function (callback) { - if (typeof wx !== 'undefined' && wx !== null) { - console.log("即将进入体力获取接口"); - //@ts-ignore - wx.cloud.callFunction({ - name: 'userHealth', - data: { - action: 'read' - }, - success: function (res) { - // console.log("体力获取成功",res); - if (callback) - callback(res); - }, - fail: function (err) { - // console.log("体力获取失败",err); - callback(err); - } - }); - } - }, - //设置用户体力值 有可能加,有可能定时器减 - setUserHealth: function (health, callback) { - cc.fx.GameConfig.GM_INFO.hp += health; - // if(health < 0) { - // } - // else MiniGameSdk.API.showToast("体力值恢复"); - var timestamp = Date.now(); - var healthInfo = {}; - //如果消耗之前不是满体力,说明已经在恢复期,并不用修改时间 - if (health < 0 && cc.fx.GameConfig.GM_INFO.hp != 4) { - var oldTime = cc.fx.StorageMessage.getStorage("health").timestamp; - healthInfo = { - "health": cc.fx.GameConfig.GM_INFO.hp, - "timestamp": oldTime - }; - } - else { - healthInfo = { - "health": cc.fx.GameConfig.GM_INFO.hp, - "timestamp": timestamp - }; - } - cc.fx.StorageMessage.setStorage("health", healthInfo); - MiniGameSdk_1.MiniGameSdk.API.shushu_SetSuperProperties(); - if (typeof wx !== 'undefined' && wx !== null) { - //@ts-ignore - wx.cloud.callFunction({ - name: 'userHealth', - data: { - action: 'save', - healthAmount: cc.fx.GameConfig.GM_INFO.hp, - timestamp: timestamp - }, - success: function (res) { - if (callback) { - callback(res); - } - }, - fail: function (err) { - if (callback) { - callback(err); - } - // console.error('存储关卡数据失败', err) - } - }); - } - }, - //购买行为 - buyReview: function (coin, callback) { - if (typeof wx !== 'undefined' && wx !== null) { - // console.log("实际即将消耗金币:",coin); - // this.changeCoin(coin); - callback(); - } - }, - //更改用户道具数 - buyProp: function (propid, callback) { - if (typeof wx !== 'undefined' && wx !== null) { - cc.fx.GameTool.changeCoin(-1500); - cc.fx.GameTool.setUserProp(propid, 3, function (data) { - }); - var data = { - id: (propid + ""), - num: 3 - }; - cc.fx.GameTool.shushu_Track("resource_get", data); - var _id = ""; - if (propid == 2001) - _id = "freeze_in_game"; - else if (propid == 2002) - _id = "hammer_in_game"; - else if (propid == 2003) - _id = "wand_in_game"; - var buyData = { - item_id: _id, - item_num: 1, - item_price: 1500, - cost_type: "gold" - }; - console.log("____________即将上传Shop_buy", buyData); - cc.fx.GameTool.shushu_Track("shop_buy", buyData); - callback(); - } - }, - //改变用户关卡 - setUserLevel: function (callback) { - if (typeof wx !== 'undefined' && wx !== null) { - // if(cc.fx.GameConfig.GM_INFO.level <= 0 || cc.fx.GameConfig.GM_INFO.level == undefined){ - // console.log("等级重置为0"); - // cc.fx.GameConfig.GM_INFO.level = 0; - // } - // console.log("即将上传的关卡数:",cc.fx.GameConfig.GM_INFO.level); - //@ts-ignore - wx.cloud.callFunction({ - name: 'userLevel', - data: { - action: 'save', - levelAmount: cc.fx.GameConfig.GM_INFO.level - }, - success: function (res) { - // console.log('云函数返回结果:', res); - // console.log('存储关卡数据成功',cc.fx.GameConfig.GM_INFO.level); - if (callback) { - callback(res); - } - }, - fail: function (err) { - // console.log('存储关卡数据失败') - return; - if (callback) { - callback(err); - } - console.error('存储关卡数据失败', err); - } - }); - } - }, - //获取用户关卡数 - getUserProp: function (callback) { - if (typeof wx !== 'undefined' && wx !== null) { - //@ts-ignore - wx.cloud.callFunction({ - name: 'userProp', - data: { - action: 'read' - }, - success: function (res) { - // console.log('读取用户道具数据成功', res.result) - if (res.result.data) { - // cc.fx.GameConfig.GM_INFO.freezeAmount = res.result.data.freeze; - // cc.fx.GameConfig.GM_INFO.hammerAmount = res.result.data.hammer; - // cc.fx.GameConfig.GM_INFO.magicAmount = res.result.data.magic_wand; - } - if (callback) - callback(res); - }, - fail: function (err) { - callback(err); - } - }); - } - }, - //改变用户道具 - setUserProp: function (propid, amount, callback) { - if (typeof wx !== 'undefined' && wx !== null) { - var newPropData = null; - if (propid == 0) { - newPropData = { - freeze: cc.fx.GameConfig.GM_INFO.freezeAmount, - hammer: cc.fx.GameConfig.GM_INFO.hammerAmount, - magic_wand: cc.fx.GameConfig.GM_INFO.magicAmount, - }; - } - else if (propid == 2001) { - newPropData = amount; - } - else if (propid == 2002) { - newPropData = amount; - } - else if (propid == 2003) { - newPropData = amount; - } - //@ts-ignore - wx.cloud.callFunction({ - name: 'userProp', - data: { - action: 'save', - propType: propid, - propData: newPropData - }, - success: function (res) { - // console.log('云函数返回结果:', res); - if (callback) { - callback(res); - } - // console.log('存储道具数据成功') - }, - fail: function (err) { - // console.log('存储道具数据失败') - if (callback) { - callback(err); - } - console.error('存储道具数据失败', err); - } - }); - } - }, - // 检查是否有足够的硬币 - consumeCoins: function (requiredCoins, propName, amount, callback) { - }, - // 设置用户信息 - setUserInfo: function (callback) { - //@ts-ignore - if (typeof wx !== 'undefined' && wx !== null) { - var time = cc.fx.GameTool.formatDate(new Date()); - var userInfo = { - // 这里填写要存储的用户数据 - username: cc.fx.GameConfig.GM_INFO.username, - useravatar: cc.fx.GameConfig.GM_INFO.useravatar, - register_time: time - }; - //@ts-ignore - wx.cloud.callFunction({ - name: 'userData', - data: { - action: 'save', - userData: userInfo - }, - success: function (res) { - // console.log('存储用户数据成功') - if (callback) { - callback(res); - } - }, - fail: function (err) { - if (callback) { - callback("fail"); - } - } - }); - } - }, - formatDate: function (date) { - var year = date.getFullYear(); - var month = String(date.getMonth() + 1).padStart(2, '0'); - var day = String(date.getDate()).padStart(2, '0'); - var hours = String(date.getHours()).padStart(2, '0'); - var minutes = String(date.getMinutes()).padStart(2, '0'); - var seconds = String(date.getSeconds()).padStart(2, '0'); - var milliseconds = String(date.getMilliseconds()).padStart(3, '0'); - return year + "-" + month + "-" + day + " " + hours + ":" + minutes + ":" + seconds + "." + milliseconds; - }, - //获取时间戳 - getTime: function () { - var timestamp = (new Date().getTime()); - return timestamp; - }, - pushLister: function () { - }, - removeAllLister: function () { - }, - shushu_Track: function (name, data) { - var eventData = {}; - switch (name) { - case "register": - break; - case "enter_stage": - eventData = { - stage_id: (cc.fx.GameConfig.GM_INFO.level + 1) - }; - break; - case "finish_stage": - eventData = { - stage_id: (cc.fx.GameConfig.GM_INFO.level + 1), - stage_duration: data.time, - added_time: data.add_Time, - result: data.result - }; - break; - case "resource_get": - eventData = { - change_reason: "购买道具", - change_num: data.num, - resource_id: data.id //道具id - }; - break; - case "resource_cost": - eventData = { - change_reason: "使用道具", - change_num: data.num, - resource_id: data.id //道具id - }; - break; - case "shop_buy": - eventData = { - item_id: data.item_id, - item_num: data.item_num, - item_price: data.item_price, - cost_type: data.cost_type, - }; - console.log("数据:", eventData); - break; - } - // MiniGameSdk.API.shushu_Track(name,eventData); - MiniGameSdk_1.MiniGameSdk.API.shushu_Track(name, eventData); - }, - getWechatGameVersion: function () { - //@ts-ignore - var accountInfo = wx.getAccountInfoSync(); - var miniProgram = accountInfo.miniProgram; - switch (miniProgram.envVersion) { - case 'develop': - return '开发版'; - case 'trial': - return '体验版'; - case 'release': - return '正式版'; - default: - return '未知版本'; - } - }, -}; -exports.GameTool = GameTool; - -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,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImFzc2V0c1xcU2NyaXB0XFxtb2R1bGVcXFRvb2xcXEdhbWVUb29sLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLHFEQUFvRDtBQUVwRCwrQkFBK0I7QUFDL0IsSUFBSSxRQUFRLEdBQUc7SUFDWCxVQUFVLEVBQUUsQ0FBQztJQUNiLFFBQVEsRUFBRSxDQUFDO0lBQ1gsVUFBVSxFQUFFLENBQUM7SUFFYixVQUFVO0lBQ1YsY0FBYztRQUNWLElBQUksSUFBSSxHQUFHLE9BQU8sR0FBRyxFQUFFLENBQUMsRUFBRSxDQUFDLFVBQVUsQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDO1FBQ3JELElBQUksSUFBSSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsWUFBWSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO1FBQ2xELElBQUcsSUFBSSxJQUFJLFVBQVUsSUFBSSxJQUFJLElBQUUsSUFBSSxJQUFJLElBQUksSUFBSSxFQUFFLEVBQUM7WUFDOUMsSUFBSSxNQUFNLEdBQUcsTUFBTSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUM7WUFDbEMsSUFBRyxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsTUFBTSxDQUFDLEVBQUM7Z0JBQzNCLElBQUksR0FBRyxHQUFHLDhFQUE4RSxHQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUM7Z0JBQ3ZHLE1BQU0sQ0FBQyxRQUFRLENBQUMsSUFBSSxHQUFHLEdBQUcsQ0FBQzthQUM5QjtTQUNKO2FBQ0c7WUFDQSxFQUFFLENBQUMsRUFBRSxDQUFDLGNBQWMsQ0FBQyxVQUFVLENBQUMsSUFBSSxFQUFDLElBQUksQ0FBQyxDQUFDO1lBQzNDLEVBQUUsQ0FBQyxFQUFFLENBQUMsVUFBVSxDQUFDLE9BQU8sQ0FBQyxNQUFNLEdBQUcsUUFBUSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQztTQUMzRDtJQUNMLENBQUM7SUFFRCxhQUFhLFlBQUMsR0FBRztRQUNiLE9BQU8sYUFBYSxD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QUFLLE9BQU87Z0JBQ1IsT0FBTyxLQUFLLENBQUM7WUFDakIsS0FBSyxTQUFTO2dCQUNWLE9BQU8sS0FBSyxDQUFDO1lBQ2pCO2dCQUNJLE9BQU8sTUFBTSxDQUFDO1NBQ3JCO0lBQ0wsQ0FBQztDQUVKLENBQUM7QUFDTyw0QkFBUSIsImZpbGUiOiIiLCJzb3VyY2VSb290IjoiLyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE1pbmlHYW1lU2RrIH0gZnJvbSBcIi4uLy4uL1Nkay9NaW5pR2FtZVNka1wiO1xyXG5cclxuLy/mnIDlpKflt6XlhbfnsbsgIOWQhOenjeWFrOWFseaWueazle+8jOS7peWPiuWkhOeQhuS4iuS8oO+8jOiOt+WPluWQjuerr+aOpeWPo+aVsOaNrlxyXG52YXIgR2FtZVRvb2wgPSB7XHJcbiAgICBfc3RhcnRUaW1lOiAwLFxyXG4gICAgX2VuZFRpbWU6IDAsXHJcbiAgICBfdG90YWxUaW1lOiAwLFxyXG4gICAgXHJcbiAgICAvL+iOt+WPlnVzZXJJZFxyXG4gICAgQXV0aGVudGljYXRpb24oKXtcclxuICAgICAgICBsZXQgbmFtZSA9IFwidXNlcl9cIiArIGNjLmZ4LkdhbWVDb25maWcuR01fSU5GTy5nYW1lSWQ7XHJcbiAgICAgICAgdmFyIGRhdGEgPSBKU09OLnBhcnNlKGxvY2FsU3RvcmFnZS5nZXRJdGVtKG5hbWUpKTtcclxuICAgICAgICBpZihkYXRhID09IFwidW5kaWZlbmRcIiB8fCBkYXRhPT1udWxsIHx8IGRhdGEgPT0gXCJcIil7XHJcbiAgICAgICAgICAgIHZhciB1cmxOb3cgPSB3aW5kb3cubG9jYXRpb24uaHJlZjtcclxuICAgICAgICAgICAgaWYoIXRoaXMuY29udGFpbnNUcmFpbih1cmxOb3cpKXtcclxuICAgICAgICAgICAgICAgIGxldCB1cmwgPSBcImh0dHBzOi8vYXBpLnNwYXJrdXMuY24vYXBpL3VzZXIvYXV0aC9sb2dpbj9kb21haW49aHVpMzI1NzlXZFlQc2dZcSZjYWxsYmFjaz1cIitsb2NhdGlvbi5ocmVmO1xyXG4gICAgICAgICAgICAgICAgd2luZG93LmxvY2F0aW9uLmhyZWYgPSB1cmw7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZXtcclxuICAgICAgICAgICAgY2MuZnguU3RvcmFnZU1lc3NhZ2Uuc2V0U3RvcmFnZShuYW1lLGRhdGEpO1xyXG4gICAgICAgICAgICBjYy5meC5HYW1lQ29uZmlnLkdNX0lORk8udXNlcklkID0gcGFyc2VJbnQoZGF0YS51c2VySWQpO1xyXG4gICAgICAgIH1cclxuICAgIH0sXHJcblxyXG4gICAgY29udGFpbnNUcmFpbihzdHIpIHtcclxuICAgICAgICByZXR1cm4gL2Zyb209dHJhaW4vaS50ZXN0KHN0cik7XHJcbiAgICB9LFxyXG5cclxuICAgIC8v5Z+L54K55LiK5LygXHJcbiAgICBzZXRHYW1lRGF0YSgpe1xyXG4gICAgICAgIC8vR0FNRV9EQVRBIOWIneWni+WMliDmr4/mrKHmuIXpm7ZcclxuICAgICAgICBjYy5meC5HYW1lQ29uZmlnLkdBTUVfREFUQSA9IFtdO1xyXG4gICAgICAgIGNjLmZ4LkdhbWVDb25maWcuR0FNRV9EQVRBLnB1c2goY2MuZnguR2FtZUNvbmZpZy5DTElDS19EQVRBKTtcclxuICAgICAgICBjYy5meC5HYW1lQ29uZmlnLkNMSUNLX2luaXQoKTtcclxuICAgICAgICBsZXQgZGF0YSA9IGNjLmZ4LkdhbWVDb25maWcuR0FNRV9EQVRBO1xyXG4gICAgICAgIGxldCBtYXRjaElkID0gdGhpcy5nZXRNYXRjaElkKCk7XHJcbiAgICAgICAgbGV0IHBvc3REYXRhID0ge1xyXG4gICAgICAgICAgICBcImdhbWVJZFwiOmNjLmZ4LkdhbWVDb25maWcuR01fSU5GTy5nYW1lSWQsXHJcbiAgICAgICAgICAgIFwidXNlcklkXCI6Y2MuZnguR2FtZUNvbmZpZy5HTV9JTkZPLnVzZXJJZCxcclxuICAgICAgICAgICAgXCJzY29kZVwiOiBjYy5meC5HYW1lQ29uZmlnLkdNX0lORk8uc2NvZGUsXHJcbiAgICAgICAgICAgIFwibWF0Y2hJZFwiOm1hdGNoSWQsXHJcbiAgICAgICAgICAgIFwiZGF0YVwiOiBkYXRhXHJcbiAgICAgICAgfTtcclxuXHJcbiAgICAgICAgLy8gY29uc29sZS5sb2coXCLkuIrkvKDmlbDmja46XCIscG9zdERhdGEpO1xyXG4gICAgICAgIC8vIGNjLmZ4Lkh0dHBVdGlsLnVwbG9hZFVzZXJMb2dEYXRhKHBvc3REYXRhLGZ1bmN0aW9uKCl7fSlcclxuICAgIH0sXHJcbiAgICAvL+S4iuS8oOaOkuihjOamnCAgdHlwZeS4ujFcclxuICAgIHNldFJhbmsoZGF0YSl7XHJcbiAgICAgICAgLy9HQU1FX0RBVEEg5Yid5aeL5YyWIOavj+asoea4hembtlxyXG4gICAgICAgIGxldCBwb3N0RGF0YSA9IHtcclxuICAgICAgICAgICAgXCJnYW1lSWRcIjpjYy5meC5HYW1lQ29uZmlnLkdNX0lORk8uZ2FtZUlkLFxyXG4gICAgICAgICAgICBcInVzZXJJZFwiOmNjLmZ4LkdhbWVDb25maWcuR01fSU5GTy51c2VySWQsXHJcbiAgICAgICAgICAgIFwidHlwZVwiOjEsXHJcbiAgICAgICAgICAgIFwic2NvcmVcIjogZGF0YS5zY29yZSxcclxuICAgICAgICAgICAgXCJhY2N1cmFjeVwiOiBkYXRhLmRhdGUsXHJcbiAgICAgICAgICAgIFwic3VjY2Vzc1wiOiBjYy5meC5HYW1lQ29uZmlnLkdNX0lORk8uc3VjY2Vzc1xyXG4gICAgICAgIH07XHJcbiAgICAgICAgLy8gY2MuZnguSHR0cFV0aWwucmFua0RhdGEoMSxmdW5jdGlvbigpe30scG9zdERhdGEpO1xyXG4gICAgfSxcclxuICAgIC8v6I635Y+W5o6S6KGM5qacIHR5cGXkuLoyXHJcbiAgICBnZXRSYW5rKGRhdGEsY2FsbGJhY2spe1xyXG4gICAgICAgIGxldCByYW5rTGVuZ3RoID0gZGF0YS5sZW5ndGg7XHJcbiAgICAgICAgbGV0IHBvc3REYXRhID0ge1xyXG4gICAgICAgICAgICBcImdhbWVJZFwiOmNjLmZ4LkdhbWVDb25maWcuR01fSU5GTy5nYW1lSWQsXHJcbiAgICAgICAgICAgIFwidXNlcklkXCI6Y2MuZnguR2FtZUNvbmZpZy5HTV9JTkZPLnVzZXJJZCxcclxuICAgICAgICAgICAgXCJwYWdlXCI6MSxcclxuICAgICAgICAgICAgXCJwYWdlU2l6ZVwiOnJhbmtMZW5ndGhcclxuICAgICAgICB9OyBcclxuICAgICAgICAvL+Wbnuiwg+i/m2dldFJhbmtEYXRhXHJcbiAgICAgICAgLy8gY2MuZnguSHR0cFV0aWwucmFua0RhdGEoMixkYXRhID0+e2NhbGxiYWNrKGRhdGEpfSxwb3N0RGF0YSk7XHJcbiAgICB9LFxyXG4gICAgLy/ojrflj5ZtYXRjaElkICDnlKjkuo7kuIrkvKDmr4/mrKHngrnlh7vmlbDmja7ph4zpnaLorrDlvZVpZOaWueS+v+afpeivolxyXG4gICAgZ2V0TWF0Y2hJZCAoKXtcclxuICAgICAgICBsZXQgbWF0Y2hJZCA9IGNjLnN5cy5sb2NhbFN0b3JhZ2UuZ2V0SXRlbShcIm1hdGNoSWRcIik7XHJcbiAgICAgICAgbGV0IHRlbXBJZCA9IG1hdGNoSWQ7XHJcbiAgICAgICAgaWYobWF0Y2hJZCA9PSBcInVuZGlmZW5kXCIgfHwgbWF0Y2hJZD09bnVsbCl7XHJcbiAgICAgICAgICAgIG1hdGNoSWQgPSAgdGhpcy5zZXRNYXRjaElkKCk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2V7XHJcbiAgICAgICAgICAgIGlmKHRoaXMuY29udGFpbnNOYW5hbmEobWF0Y2hJZCkgPT0gdHJ1ZSl7XHJcbiAgICAgICAgICAgICAgICBtYXRjaElkID0gIHRoaXMuc2V0TWF0Y2hJZCgpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGVsc2V7XHJcbiAgICAgICAgICAgICAgICBsZXQgY2hhciA9IHBhcnNlSW50KHRlbXBJZC5zdWJzdHJpbmcoMTAsdGVtcElkLmxlbmd0aCkpO1xyXG4gICAgICAgICAgICAgICAgaWYoY2MuZnguR2FtZUNvbmZpZy5HTV9JTkZPLmxldmVsID09IDEpe1xyXG4gICAgICAgICAgICAgICAgICAgIGNoYXIgKz0gMTtcclxuICAgICAgICAgICAgICAgICAgICBtYXRjaElkICA9IHRlbXBJZC5zbGljZSgwLCAxMCkgKyBjaGFyICsgXCJcIjtcclxuICAgICAgICAgICAgICAgICAgICBpZih0aGlzLmNvbnRhaW5zTmFuYW5hKG1hdGNoSWQpKSBtYXRjaElkID0gdGhpcy5zZXRNYXRjaElkKCk7XHJcbiAgICAgICAgICAgICAgICAgICAgY2MuZnguR2FtZUNvbmZpZy5HTV9JTkZPLm1hdGNoSWQgPSBtYXRjaElkO1xyXG4gICAgICAgICAgICAgICAgICAgIGNjLnN5cy5sb2NhbFN0b3JhZ2Uuc2V0SXRlbShcIm1hdGNoSWRcIixtYXRjaElkKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgaWYodGhpcy5jb250YWluc05hbmFuYShtYXRjaElkKSA9PSB0cnVlKXtcclxuICAgICAgICAgICAgbWF0Y2hJZCA9ICB0aGlzLnNldE1hdGNoSWQoKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIG1hdGNoSWQ7XHJcbiAgICB9LFxyXG4gICAgLy/mo4DmtYttYXRjaElkIOWmguaenOaciee8k+WtmOS7peWJjeeahG5hbmFuYeaVsOaNrua4hemZpFxyXG4gICAgY29udGFpbnNOYW5hbmEoc3RyKSB7XHJcbiAgICAgICAgcmV0dXJuIC9uYS9pLnRlc3Qoc3RyKTtcclxuICAgIH0sXHJcbiAgICAvL+mHjeaWsOiuvue9rk1hdGNoSWRcclxuICAgIHNldE1hdGNoSWQgKCl7XHJcbiAgICAgICAgLy8g5a6a5LmJ5YyF5ZCr5Y+v55So5a2X56ym55qE5a2X56ym6ZuGXHJcbiAgICAgICAgY29uc3QgY2hhcmFjdGVycyA9ICdhYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5ekFCQ0RFRkdISUpLTE1OT1BRUlNUVVZXWFlaMDEyMzQ1Njc4OSc7XHJcbiAgICAgICAgLy8g5Yib5bu65LiA5Liq5pWw57uE5Lul5L+d5a2Y6ZqP5py65a2X56ymXHJcbiAgICAgICAgY29uc3QgdXVpZEFycmF5ID0gW107XHJcbiAgICAgICAgLy8g5b6q546vMTDmrKEg55Sf5oiQMTDkvY3nmoRVVUlEXHJcbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCAxMDsgaSsrKSB7XHJcbiAgICAgICAgICAgICAgICAvLyDnlJ/miJDpmo/mnLrntKLlvJXvvIzojIPlm7TmmK/lrZfnrKbpm4bnmoTplb/luqZcclxuICAgICAgICAgICAgY29uc3QgcmFuZG9tSW5kZXggPSBNYXRoLmZsb29yKE1hdGgucmFuZG9tKCkgKiBjaGFyYWN0ZXJzLmxlbmd0aCk7XHJcbiAgICAgICAgICAgIC8vIOS7juWtl+espumbhuS4reiOt+WPlumaj+acuuWtl+esplxyXG4gICAgICAgICAgICBjb25zdCByYW5kb21DaGFyID0gY2hhcmFjdGVycy5jaGFyQXQocmFuZG9tSW5kZXgpO1xyXG4gICAgICAgICAgICAvLyDlsIblrZfnrKbmt7vliqDliLDmlbDnu4TkuK1cclxuICAgICAgICAgICAgdXVpZEFycmF5LnB1c2gocmFuZG9tQ2hhcik7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGxldCBkYXRhID0gIHV1aWRBcnJheS5qb2luKCcnKSArIDEgKyBcIlwiO1xyXG4gICAgICAgIGNjLnN5cy5sb2NhbFN0b3JhZ2Uuc2V0SXRlbShcIm1hdGNoTnVtYmVyXCIsMSk7XHJcbiAgICAgICAgY2Muc3lzLmxvY2FsU3RvcmFnZS5zZXRJdGVtKFwibWF0Y2hJZFwiLGRhdGEpO1xyXG4gICAgICAgIGNjLmZ4LkdhbWVDb25maWcuR01fSU5GTy5tYXRjaElkID0gZGF0YTtcclxuICAgICAgICByZXR1cm4gZGF0YTtcclxuICAgIH0sXHJcbiAgICAvL+aIquWPluWQjeWtl1xyXG4gICAgc3ViTmFtZShuYW1lLGxlbmd0aCl7XHJcbiAgICAgICAgaWYobmFtZS5sZW5ndGggPiBsZW5ndGgpe1xyXG4gICAgICAgICAgICBuYW1lID0gbmFtZS5zdWJzdHJpbmcoMCxsZW5ndGgpICsgXCIuLi5cIlxyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gbmFtZTtcclxuICAgIH0sXHJcbiAgICAvL+iuvue9ruWktOWDj1xyXG4gICAgc2V0UGljKG5vZGUscGljKXtcclxuICAgICAgICBub2RlLmFjdGl2ZSA9IGZhbHNlO1xyXG4gICAgICAgIGxldCB1cmwgPSBwaWM7XHJcbiAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgICAgICAgIGZldGNoKHVybClcclxuICAgICAgICAgICAgLnRoZW4ocmVzcG9uc2UgPT4ge1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIHJlc3BvbnNlLmhlYWRlcnMuZ2V0KCdDb250ZW50LUxlbmd0aCcpO1xyXG4gICAgICAgICAgICB9KVxyXG4gICAgICAgICAgICAudGhlbihlcnJObyA9PiB7XHJcbiAgICAgICAgICAgICAgICBpZihlcnJObyA9PSBcIjUwOTNcIil7XHJcbiAgICAgICAgICAgICAgICAgICAgbm9kZS5hY3RpdmUgPSB0cnVlO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9KVxyXG4gICAgICAgICAgICAuY2F0Y2goZXJyb3IgPT4ge1xyXG4gICAgICAgICAgICAgICAgLy8gY29uc29sZS5lcnJvcignRXJyb3IgZmV0Y2hpbmcgWC1JbmZvOicsIGVycm9yKTtcclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgfSwgMTAwKTtcclxuICAgICAgICBjYy5hc3NldE1hbmFnZXIubG9hZFJlbW90ZSh1cmwsIHtleHQ6Jy5wbmcnfSwoZXJyLCB0ZXh0dXJlOmNjLlRleHR1cmUyRCkgPT4ge1xyXG4gICAgICAgICAgICBpZih0ZXh0dXJlKXtcclxuICAgICAgICAgICAgICAgIG5vZGUuYWN0aXZlID0gdHJ1ZTtcclxuICAgICAgICAgICAgICAgIG5vZGUuZ2V0Q29tcG9uZW50KGNjLlNwcml0ZSkuc3ByaXRlRnJhbWUgPSBuZXcgY2MuU3ByaXRlRnJhbWUodGV4dHVyZSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgZWxzZXtcclxuICAgICAgICAgICAgICAgIC8vIGNvbnNvbGUubG9nKGVycix0ZXh0dXJlKVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfSlcclxuICAgIH0sXHJcbiAgICAvL+esrOS4gOS4quWPguaVsOaKiuebruagh+W4pui/m+adpeWkhOeQhu+8jOesrOS6jOS4quWPguaVsOS4uuWQjeWtl+mVv+W6pu+8jOS4jeWQjOWcuuaZr+S4jeWQjOmcgOaxglxyXG4gICAgLy/lkI3lrZc055+t77yM5bCP5o6S6KGM77yM5ZCN5a2XNumVv++8jOWkp+aOkuihjFxyXG4gICAgZ2V0UmFua0RhdGEoZGF0YSx0YXJnZXQsbmFtZUxlbmd0aCl7XHJcbiAgICAgICAgdGFyZ2V0Lmxpc3REYXRhID0gZGF0YS5kYXRhLmxpc3Q7XHJcbiAgICAgICAgdGFyZ2V0LnNlbGZEYXRhID0gZGF0YS5kYXRhLmluZm87XHJcbiAgICAgICAgbGV0IHJhbmtEYXRhID0gW107XHJcbiAgICAgICAgbGV0IHNlbGYgPSBmYWxzZTtcclxuICAgICAgICAgY2MuZnguR2FtZVRvb2wuc2V0UGljKHRhcmdldC5zZWxmTm9kZS5nZXRDaGlsZEJ5TmFtZShcInBpY1wiKS5nZXRDaGlsZEJ5TmFtZShcImljb25cIiksdGFyZ2V0LnNlbGZEYXRhLnBpYyk7XHJcbiAgICAgICAgZm9yKGxldCBpPTA7aTw9dGFyZ2V0Lmxpc3REYXRhLmxlbmd0aC0xO2krKyl7XHJcbiAgICAgICAgICAgIHJhbmtEYXRhLnB1c2goe3Jhbms6KGkrMSksIG5hbWU6dGFyZ2V0Lmxpc3REYXRhW2ldLm5pY2tOYW1lLCB0b3RhbDp0YXJnZXQubGlzdERhdGFbaV0uc2NvcmUsdGltZTpudWxsLCBwaWM6dGFyZ2V0Lmxpc3REYXRhW2ldLnBpY30pO1xyXG4gICAgICAgICAgICBpZihjYy5meC5HYW1lQ29uZmlnLkdNX0lORk8udXNlcklkID09IHRhcmdldC5saXN0RGF0YVtpXS51c2VySWQpe1xyXG4gICAgICAgICAgICAgICAgc2VsZiA9IHRydWU7XHJcbiAgICAgICAgICAgICAgICB0YXJnZXQucmFua051bWJlciA9IGk7XHJcbiAgICAgICAgICAgICAgICB0YXJnZXQuc2VsZk5vZGUuZ2V0Q2hpbGRCeU5hbWUoXCJyYW5rTGFiXCIpLmdldENvbXBvbmVudChjYy5MYWJlbCkuc3RyaW5nID0oaSsxKSArIFwiXCI7IFxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGlmKGkgPT0gKHRhcmdldC5saXN0RGF0YS5sZW5ndGgtMSkgJiYgc2VsZiA9PSBmYWxzZSl7XHJcbiAgICAgICAgICAgICAgICB0YXJnZXQucmFua051bWJlciA9IGk7XHJcbiAgICAgICAgICAgICAgICB0YXJnZXQuc2VsZk5vZGUuZ2V0Q2hpbGRCeU5hbWUoXCJyYW5rTGFiXCIpLmdldENvbXBvbmVudChjYy5MYWJlbCkuc3RyaW5nID0gXCI5OStcIjsgXHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgdGFyZ2V0LnNlbGZEYXRhLm5pY2tOYW1lID0gY2MuZnguR2FtZVRvb2wuc3ViTmFtZSh0YXJnZXQuc2VsZkRhdGEubmlja05hbWUsbmFtZUxlbmd0aCk7XHJcbiAgICAgICAgdGFyZ2V0LnNlbGZOb2RlLmdldENoaWxkQnlOYW1lKFwibmFtZUxhYlwiKS5nZXRDb21wb25lbnQoY2MuTGFiZWwpLnN0cmluZyA9IHRhcmdldC5zZWxmRGF0YS5uaWNrTmFtZTtcclxuICAgICAgICB0YXJnZXQuc2VsZk5vZGUuZ2V0Q2hpbGRCeU5hbWUoXCJ0b3RhbExhYlwiKS5nZXRDb21wb25lbnQoY2MuTGFiZWwpLnN0cmluZyA9IHRhcmdldC5zZWxmRGF0YS5zY29yZTtcclxuICAgICAgICBsZXQgdGltZVRlbXAgPSBjYy5meC5HYW1lVG9vbC5nZXRUaW1lU2hlbk5vbmcodGFyZ2V0LnNlbGZEYXRhLnRvdGxlVGltZXMpO1xyXG4gICAgICAgIC8vIHRhcmdldC5zZWxmTm9kZS5nZXRDaGlsZEJ5TmFtZShcInRpbWVMYWJcIikuZ2V0Q29tcG9uZW50KGNjLkxhYmVsKS5zdHJpbmcgPSB0aW1lVGVtcCArIFwiXCI7XHJcbiAgICAgICAgc3dpdGNoKHRhcmdldC5zZWxmTm9kZS5nZXRDaGlsZEJ5TmFtZShcInJhbmtMYWJcIikuZ2V0Q29tcG9uZW50KGNjLkxhYmVsKS5zdHJpbmcpe1xyXG4gICAgICAgICAgICBjYXNlIFwiMVwiOlxyXG4gICAgICAgICAgICAgICAgdGFyZ2V0LnNlbGZOb2RlLmdldENoaWxkQnlOYW1lKFwicmFua1wiKS5nZXRDaGlsZEJ5TmFtZShcIm9uZVwiKS5hY3RpdmUgPSB0cnVlO1xyXG4gICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgIGNhc2UgXCIyXCI6XHJcbiAgICAgICAgICAgICAgICB0YXJnZXQuc2VsZk5vZGUuZ2V0Q2hpbGRCeU5hbWUoXCJyYW5rXCIpLmdldENoaWxkQnlOYW1lKFwidHdvXCIpLmFjdGl2ZSA9IHRydWU7XHJcbiAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgY2FzZSBcIjNcIjpcclxuICAgICAgICAgICAgICAgIHRhcmdldC5zZWxmTm9kZS5nZXRDaGlsZEJ5TmFtZShcInJhbmtcIikuZ2V0Q2hpbGRCeU5hbWUoXCJ0aHJlZVwiKS5hY3RpdmUgPSB0cnVlO1xyXG4gICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIC8vIOWkp+aOkuihjFxyXG4gICAgICAgIGlmKG5hbWVMZW5ndGggPT0gNil7XHJcbiAgICAgICAgICAgIHRhcmdldC5yYW5rTGlzdC5zZXREYXRhKHJhbmtEYXRhKTtcclxuICAgICAgICAgICAgdGFyZ2V0LnNlbGZOb2RlLm9wYWNpdHkgPSAyNTU7XHJcbiAgICAgICAgICAgIGlmKHRhcmdldC5zZWxmRGF0YS50b3RhbFN1bkNvdW50ID09IDApIHRhcmdldC5zZWxmTm9kZS5vcGFjaXR5ID0gMDtcclxuICAgICAgICB9XHJcbiAgICB9LFxyXG5cclxuICAgIGdldFNlZWRSYW5kb206IGZ1bmN0aW9uIChtaW4sIG1heCkgey8v5YyF5ZCrbWluIOS4jeWMheWQq21heFxyXG4gICAgICAgIC8vIGNvbnNvbGUubG9nKFwi6ZqP5py65pWwOlwiLGNjLmZ4LkdhbWVDb25maWcuR01fSU5GTy5jdXJyU2VlZCk7XHJcbiAgICAgICAgbWF4ID0gbWF4IHx8IDE7XHJcbiAgICAgICAgbWluID0gbWluIHx8IDA7XHJcbiAgICAgICAgY2MuZnguR2FtZUNvbmZpZy5HTV9JTkZPLmN1cnJTZWVkID0gKGNjLmZ4LkdhbWVDb25maWcuR01fSU5GTy5jdXJyU2VlZCAqIDkzMDEgKyA0OTI5NykgJSAyMzMyODA7XHJcbiAgICAgICAgbGV0IHJuZCA9IGNjLmZ4LkdhbWVDb25maWcuR01fSU5GTy5jdXJyU2VlZCAgLyAyMzMyODAuMDtcclxuICAgICAgICBsZXQgdG1wID0gbWluICsgcm5kICogKG1heCAtIG1pbik7XHJcbiAgICAgICAgcmV0dXJuIHBhcnNlSW50KHRtcCk7XHJcbiAgICB9LFxyXG4gICAgLy/ojrflj5blhbPljaHphY3nva7nmoTpgqPkuKrlhbPljaHmlbBcclxuICAgIGdldEN1c3RvbSh0eXBlKXtcclxuICAgICAgICBsZXQgY3VzdG9tID0gY2MuZnguU3RvcmFnZU1lc3NhZ2UuZ2V0U3RvcmFnZShjYy5meC5zdG9yYWdlVHlwZS5zdG9yYWdlVHlwZUN1c3RvbSk7XHJcbiAgICAgICAgaWYoY3VzdG9tID09IFwidW5kaWZlbmRcIiB8fCBjdXN0b209PW51bGwgfHwgY3VzdG9tID09IFwiXCIpe1xyXG4gICAgICAgICAgICB0aGlzLnNldEN1c3RvbSgpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNle1xyXG4gICAgICAgICAgICBjYy5meC5HYW1lQ29uZmlnLkdNX0lORk9fU0VUKFwiY3VzdG9tXCIsY3VzdG9tWzBdKTtcclxuICAgICAgICAgICAgaWYoY3VzdG9tWzBdICE9IDAgfHwgdHlwZSA9PSAgdHJ1ZSl7XHJcbiAgICAgICAgICAgICAgICBjdXN0b20uc2hpZnQoKTtcclxuICAgICAgICAgICAgICAgIGlmKGN1c3RvbS5sZW5ndGggPT0gMCl7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5zZXRDdXN0b20oKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIGVsc2UgY2MuZnguU3RvcmFnZU1lc3NhZ2Uuc2V0U3RvcmFnZShjYy5meC5zdG9yYWdlVHlwZS5zdG9yYWdlVHlwZUN1c3RvbSxjdXN0b20pO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgfSxcclxuICAgIC8v5pys5Zyw5rKh5pyJ5a2Y5YKo5Yiw6YWN572u77yM5oiW6ICF6YWN572u55So5a6M77yM6YeN5paw5Yib5bu66YWN572uXHJcbiAgICBzZXRDdXN0b20oKXtcclxuICAgICAgICBsZXQgYXJyYXlMZW5ndGggPSBjYy5meC5HYW1lQ29uZmlnLkxFVkVMX0lORk8ubGVuZ3RoO1xyXG4gICAgICAgIGxldCBhcnJheUxpc3QgPSBbXTtcclxuICAgICAgICBmb3IobGV0IGk9MTsgaTxhcnJheUxlbmd0aDtpKyspe1xyXG4gICAgICAgICAgICBhcnJheUxpc3QucHVzaChpKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgYXJyYXlMaXN0LnNvcnQoKCkgPT4gTWF0aC5yYW5kb20oKSAtIDAuNSk7XHJcbiAgICAgICAgYXJyYXlMaXN0LnVuc2hpZnQoMClcclxuICAgICAgICBjYy5meC5HYW1lQ29uZmlnLkdNX0lORk9fU0VUKFwiY3VzdG9tXCIsYXJyYXlMaXN0WzBdKTtcclxuICAgICAgICBjYy5meC5TdG9yYWdlTWVzc2FnZS5zZXRTdG9yYWdlKGNjLmZ4LnN0b3JhZ2VUeXBlLnN0b3JhZ2VUeXBlQ3VzdG9tLGFycmF5TGlzdCk7XHJcbiAgICB9LFxyXG5cclxuXHJcbiAgICBnZXRTZXRTY3JlZW5SZXNvbHV0aW9uRmxhZzogZnVuY3Rpb24gKCkge1xyXG4gICAgICAgIGxldCBzaXplID0gY2Mud2luU2l6ZTtcclxuICAgICAgICBsZXQgd2lkdGggPSBzaXplLndpZHRoO1xyXG4gICAgICAgIGxldCBoZWlnaHQgPSBzaXplLmhlaWdodDtcclxuICAgICAgICBpZiAoKGhlaWdodCAvIHdpZHRoKSA+ICgxNi4yIC8gOSkpIHJldHVybiBmYWxzZTtcclxuICAgICAgICByZXR1cm4gdHJ1ZTtcclxuICAgIH0sXHJcbiAgICAvL+WIpOaWreWFqOmdouWxj+mAgumFjVxyXG4gICAgc2V0Rml0OiBmdW5jdGlvbiAoY2FudmFzKSB7XHJcbiAgICAgICAgbGV0IGZsYWcgPSAgY2MuZnguR2FtZVRvb2wuZ2V0U2V0U2NyZWVuUmVzb2x1dGlvbkZsYWcoKTtcclxuICAgICAgICBpZiAoZmxhZykge1xyXG4gICAgICAgIFx0Ly8gY29uc29sZS5sb2coXCLkuI3mmK/lhajpnaLlsY9cIik7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICBcdC8vIGNvbnNvbGUubG9nKFwi5piv5YWo6Z2i5bGPXCIpO1xyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gZmxhZztcclxuICAgIH0sXHJcbiAgICAvL+iOt+WPlua4uOaIj+S/oeaBr1xyXG4gICAgZ2V0R2FtZUluZm86IGZ1bmN0aW9uKG5vZGUpe1xyXG4gICAgICAgIHZhciBqZyA9IGZhbHNlO1xyXG4gICAgICAgIHJldHVybiBqZztcclxuICAgIH0sXHJcbiAgICAvL+iuvue9rua4uOaIj+S/oeaBr1xyXG4gICAgc2V0R2FtZUluZm86IGZ1bmN0aW9uKHBkKXtcclxuICAgXHJcbiAgICB9LFxyXG5cclxuICAgIC8v5omT5a2X5py65pWI5p6cXHJcbiAgICB0eXBpbmdBbmkobGFiZWwsdGV4dCxjYix0YXJnZXQpe1xyXG4gICAgICAgIHZhciBzZWxmID0gdGFyZ2V0O1xyXG4gICAgICAgIHZhciBodG1sID0gJyc7XHJcbiAgICAgICAgdmFyIGFyciA9IHRleHQuc3BsaXQoJycpO1xyXG4gICAgICAgIHZhciBsZW4gPSBhcnIubGVuZ3RoO1xyXG4gICAgICAgIHZhciBzdGVwID0gMDtcclxuICAgICAgICBzZWxmLmZ1bmMgPSAoKT0+e1xyXG4gICAgICAgICAgICBodG1sICs9IGFycltzdGVwXTtcclxuICAgICAgICAgICAgbGFiZWwuc3RyaW5nID0gaHRtbDtcclxuICAgICAgICAgICAgaWYgKCsrc3RlcCA9PSBsZW4pIHtcclxuICAgICAgICAgICAgICAgIHNlbGYudW5zY2hlZHVsZShzZWxmLmZ1bmMpO1xyXG4gICAgICAgICAgICAgICAgY2IgJiYgY2IoKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICBzZWxmLnNjaGVkdWxlKHNlbGYuZnVuYywwLjEsIGNjLm1hY3JvLlJFUEVBVF9GT1JFVkVSLCAwKVxyXG4gICAgfSxcclxuXHJcbiAgICAvL+i+k+WFpeenkizov5Tlm57pnIDopoHlsZXnpLrml7bpl7TmoLzlvI9cclxuICAgIGdldFRpbWVNYXJnaW46KHNlY29uZCkgPT4ge1xyXG4gICAgICAgIGxldCB0b3RhbCA9IDA7XHJcbiAgICAgICAgdG90YWwgPSBzZWNvbmQ7XHJcbiAgICAgICAgbGV0IGhvdXIgPSAwO1xyXG4gICAgICAgIGhvdXIgPSBwYXJzZUludCgodG90YWwgLyAzNjAwKSArIFwiXCIpOy8v6K6h566X5pW05pWw5bCP5pe25pWwXHJcbiAgICAgICAgbGV0IGFmdGVySG91ciA9IHRvdGFsIC0gaG91ciAqIDYwICogNjA7Ly/lj5blvpfnrpflh7rlsI/ml7bmlbDlkI7liankvZnnmoTnp5LmlbBcclxuICAgICAgICBsZXQgbWluID0gcGFyc2VJbnQoKGFmdGVySG91ciAvIDYwKStcIlwiKTsvL+iuoeeul+aVtOaVsOWIhlxyXG4gICAgICAgIGxldCBtID0gXCJcIiArIG1pbjsgIFxyXG4gICAgICAgIGlmKG1pbiA8IDEwKSBtID0gXCIwXCIrbWluO1xyXG4gICAgICAgIGxldCBhZnRlck1pbiA9IHRvdGFsIC0gaG91ciAqIDYwICogNjAgLSBtaW4gKiA2MDsvL+WPluW+l+eul+WHuuWIhuWQjuWJqeS9meeahOenkuaVsFxyXG4gICAgICAgIGxldCBtaWFvID0gYWZ0ZXJNaW4gKyBcIlwiO1xyXG4gICAgICAgIGlmKGFmdGVyTWluIDwgMTApIG1pYW8gPSBcIjBcIiArIGFmdGVyTWluO1xyXG4gICAgICAgIHJldHVybiBtICsgJzonICsgbWlhb1xyXG4gICAgfSxcclxuXHJcbiAgICAvL+i+k+WFpeenkizov5Tlm57pnIDopoHlsZXnpLrml7bpl7TmoLzlvI9cclxuICAgIGdldFRpbWVTaGVuTm9uZzooc2Vjb25kKSA9PiB7XHJcbiAgICAgICAgc2Vjb25kID0gcGFyc2VJbnQoc2Vjb25kLzEwMDArXCJcIik7XHJcbiAgICAgICAgbGV0IHRvdGFsID0gMDtcclxuICAgICAgICB0b3RhbCA9IHNlY29uZDtcclxuICAgICAgICBsZXQgbWluID0gMDtcclxuICAgICAgICBpZih0b3RhbCA+IDYwKXtcclxuICAgICAgICAgICAgbWluID0gcGFyc2VJbnQoKHRvdGFsIC8gNjApK1wiXCIpOy8v6K6h566X5pW05pWw5YiGXHJcbiAgICAgICAgfVxyXG4gICAgICAgIGxldCBtID0gIG1pbiArIFwiJ1wiOyAgXHJcblxyXG4gICAgICAgIGxldCBhZnRlck1pbiA9IHRvdGFsIC0gbWluICogNjA7Ly/lj5blvpfnrpflh7rliIblkI7liankvZnnmoTnp5LmlbBcclxuICAgICAgICBsZXQgbWlhbyA9IGFmdGVyTWluICsgXCInJ1wiO1xyXG4gICAgICAgIHJldHVybiBtICsgbWlhb1xyXG4gICAgfSxcclxuXHJcbiAgICAvL+aJk+S5seaVsOe7hFxyXG4gICAgc2h1ZmZsZUFycmF5OiBmdW5jdGlvbiAoYXJyYXkpIHtcclxuICAgICAgICBmb3IgKGxldCBpID0gYXJyYXkubGVuZ3RoIC0gMTsgaSA+IDA7IGktLSkge1xyXG4gICAgICAgICAgICBjb25zdCBqID0gTWF0aC5mbG9vcihNYXRoLnJhbmRvbSgpICogKGkgKyAxKSk7XHJcbiAgICAgICAgICAgIFthcnJheVtpXSwgYXJyYXlbal1dID0gW2FycmF5W2pdLCBhcnJheVtpXV07XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiBhcnJheTtcclxuICAgIH0sXHJcblxyXG5cclxuICAgIC8v5aKe5Yqg5YWz5Y2h5pWwXHJcbiAgICBhZGRMZXZlbCh0aW1lMSx0aW1lMil7XHJcbiAgICAgICAgY2MuZnguR2FtZUNvbmZpZy5HTV9JTkZPLmxldmVsICs9IDE7XHJcbiAgICAgICAgaWYoY2MuZnguR2FtZUNvbmZpZy5HTV9JTkZPLmxldmVsID4gMTU2KXtcclxuICAgICAgICAgICAgY2MuZnguR2FtZUNvbmZpZy5HTV9JTkZPLmxldmVsID0gMTU2OyBcclxuICAgICAgICB9XHJcbiAgICAgICAgY29uc3QgdGltZXN0YW1wID0gRGF0ZS5ub3coKTtcclxuICAgICAgICBsZXQgbGV2ZWxJbmZvID0ge1xyXG4gICAgICAgICAgICBsZXZlbDpjYy5meC5HYW1lQ29uZmlnLkdNX0lORk8ubGV2ZWwsXHJcbiAgICAgICAgICAgIHRpbWVzdGFtcDp0aW1lc3RhbXAsXHJcbiAgICAgICAgfVxyXG4gICAgICAgIC8vIGNvbnNvbGUubG9nKFwiNTU1NTXlrZjlgqjlhbPljaHmlbDmja46XCIsbGV2ZWxJbmZvKTtcclxuICAgICAgICBjYy5meC5TdG9yYWdlTWVzc2FnZS5zZXRTdG9yYWdlKFwibGV2ZWxcIixsZXZlbEluZm8pO1xyXG4gICAgICAgIGlmKHRpbWUxICYmIHRpbWUyKXtcclxuICAgICAgICAgICAgbGV0IGRhdGEgPSB7XHJcbiAgICAgICAgICAgICAgICB0aW1lOnRpbWUxLFxyXG4gICAgICAgICAgICAgICAgYWRkX1RpbWU6dGltZTIsXHJcbiAgICAgICAgICAgICAgICByZXN1bHQ6XCJzdWNjZXNzXCJcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBjYy5meC5HYW1lVG9vbC5zaHVzaHVfVHJhY2soXCJmaW5pc2hfc3RhZ2VcIixkYXRhKTtcclxuICAgICAgICAgICAgTWluaUdhbWVTZGsuQVBJLnNodXNodV9TZXRTdXBlclByb3BlcnRpZXMoKTtcclxuICAgICAgICB9XHJcbiAgICAgIFxyXG4gICAgICAgIGNjLmZ4LkdhbWVUb29sLnNldFVzZXJMZXZlbCgoZGF0YSk9PntcclxuICAgICAgICAgICAgLy8gY29uc29sZS5sb2coXCLlrZjlgqjnu5Pmnpw6XCIsZGF0YSk7XHJcbiAgICAgICAgICAgIC8vIGNvbnNvbGUubG9nKFwi5LiK5LygXCIsZGF0YSk7XHJcbiAgICAgICAgfSlcclxuICAgIH0sXHJcblxyXG4gICAgLy/mlLnlj5jph5HluIHkv6Hmga9cclxuICAgIGNoYW5nZUNvaW4oY29pbil7XHJcbiAgICAgICAgY29uc29sZS5sb2coXCJjaGFuZ2VDb2luXCIsY29pbik7XHJcbiAgICAgICAgaWYoY29pbiA9PSB1bmRlZmluZWQpIHJldHVybjtcclxuICAgICAgICBpZihjb2luIDwgMCAmJiBjYy5meC5HYW1lQ29uZmlnLkdNX0lORk8uY29pbiA8IC1jb2luKXtcclxuICAgICAgICAgICAgLy8gY29uc29sZS5sb2coXCLph5HluIHkuI3otrNcIixjYy5meC5HYW1lQ29uZmlnLkdNX0lORk8uY29pbiwtY29pbik7XHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcbiAgICAgICAgY2MuZnguR2FtZUNvbmZpZy5HTV9JTkZPLmNvaW4gKz0gY29pbjtcclxuXHJcbiAgICAgICAgaWYoY2MuZnguR2FtZUNvbmZpZy5HTV9JTkZPLmNvaW4gPCAwKXtcclxuICAgICAgICAgICAgY2MuZnguR2FtZUNvbmZpZy5HTV9JTkZPLmNvaW4gPSAwO1xyXG4gICAgICAgIH1cclxuICAgICAgICAvLyBjb25zb2xlLmxvZyhcIuaUueWPmOeahOmHkeW4gTpcIixjb2luKTtcclxuICAgICAgICAvLyBjb25zb2xlLmxvZyhcIuiHqui6q+mHkeW4geS/oeaBrzpcIixjYy5meC5HYW1lQ29uZmlnLkdNX0lORk8uY29pbik7XHJcbiAgICAgICAgY29uc3QgdGltZXN0YW1wID0gRGF0ZS5ub3coKTtcclxuICAgICAgICBsZXQgY29pbkluZm8gPSB7XHJcbiAgICAgICAgICAgIGNvaW46Y2MuZnguR2FtZUNvbmZpZy5HTV9JTkZPLmNvaW4sXHJcbiAgICAgICAgICAgIHRpbWVzdGFtcDp0aW1lc3RhbXAsXHJcbiAgICAgICAgfVxyXG4gICAgICAgIE1pbmlHYW1lU2RrLkFQSS5zaHVzaHVfU2V0U3VwZXJQcm9wZXJ0aWVzKCk7XHJcbiAgICAgICAgY2MuZnguU3RvcmFnZU1lc3NhZ2Uuc2V0U3RvcmFnZShcImNvaW5cIixjb2luSW5mbyk7XHJcbiAgICAgICAgLy8gY29uc29sZS5sb2coXCLlrZjlgqjph5HluIHmlbDmja46XCIsY2MuZnguR2FtZUNvbmZpZy5HTV9JTkZPLmNvaW4sY29pbkluZm8pO1xyXG4gICAgICAgIGNjLmZ4LkdhbWVUb29sLnNldFVzZXJDb2luKChkYXRhKT0+e1xyXG4gICAgICAgICAgICAvLyBjb25zb2xlLmxvZyhcIuS4iuS8oFwiLGRhdGEpO1xyXG4gICAgICAgIH0pXHJcbiAgICB9LFxyXG5cclxuICAgIC8v6I635Y+W55So5oi36YeR5biB5pWw6YePXHJcbiAgICBnZXRVc2VyQ29pbihjYWxsYmFjazogRnVuY3Rpb24pIHtcclxuICAgICAgICBpZiAodHlwZW9mIHd4IT09ICd1bmRlZmluZWQnICYmIHd4IT09IG51bGwpIHtcclxuICAgICAgICAgICAgICAgLy9AdHMtaWdub3JlXHJcbiAgICAgICAgICAgIHd4LmNsb3VkLmNhbGxGdW5jdGlvbih7XHJcbiAgICAgICAgICAgIG5hbWU6ICd1c2VyQ29pbicsXHJcbiAgICAgICAgICAgIGRhdGE6IHtcclxuICAgICAgICAgICAgICAgIGFjdGlvbjogJ3JlYWQnXHJcbiAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgIHN1Y2Nlc3M6IHJlcyA9PiB7XHJcbiAgICAgICAgICAgICAgICAvLyBjb25zb2xlLmxvZygn6K+75Y+W55So5oi36YeR5biB5pWw5o2u5oiQ5YqfJywgcmVzLnJlc3VsdClcclxuICAgICAgICAgICAgICAgIGlmKGNhbGxiYWNrKVxyXG4gICAgICAgICAgICAgICAgICAgIGNhbGxiYWNrKHJlcyk7IFxyXG5cclxuICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgZmFpbDogZXJyID0+IHtcclxuICAgICAgICAgICAgICAgICAgIGNhbGxiYWNrKGVycik7IFxyXG5cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9KVxyXG4gICAgICAgIH1cclxuICAgIH0sXHJcblxyXG4gICAgLy/mlLnlj5jnlKjmiLfph5HluIFcclxuICAgIHNldFVzZXJDb2luKGNhbGxiYWNrKXtcclxuICAgICAgICBpZiAodHlwZW9mIHd4IT09ICd1bmRlZmluZWQnICYmIHd4IT09IG51bGwpIHtcclxuICAgICAgICAgICAgaWYoY2MuZnguR2FtZUNvbmZpZy5HTV9JTkZPLmNvaW4gPD0gMCB8fCBjYy5meC5HYW1lQ29uZmlnLkdNX0lORk8uY29pbiA9PSB1bmRlZmluZWQpe1xyXG4gICAgICAgICAgICAgICAgY29uc29sZS5sb2coXCLph5HluIHkuIrkvKDlpLHotKVcIixjYy5meC5HYW1lQ29uZmlnLkdNX0lORk8uY29pbik7XHJcbiAgICAgICAgICAgICAgICAvLyBNaW5pR2FtZVNkay5BUEkuc2hvd1RvYXN0KGNjLmZ4LkdhbWVDb25maWcuR01fSU5GTy5jb2luKTtcclxuICAgICAgICAgICAgICAgIGNjLmZ4LkdhbWVDb25maWcuR01fSU5GTy5jb2luID0gMDtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBjb25zb2xlLmxvZyhcIuWNs+WwhuS4iuS8oOeahOmHkeW4geaVsOmHjzpcIixjYy5meC5HYW1lQ29uZmlnLkdNX0lORk8uY29pbik7XHJcbiAgICAgICAgICAgIC8vQHRzLWlnbm9yZVxyXG4gICAgICAgICAgICB3eC5jbG91ZC5jYWxsRnVuY3Rpb24oe1xyXG4gICAgICAgICAgICBuYW1lOiAndXNlckNvaW4nLFxyXG4gICAgICAgICAgICBkYXRhOiB7XHJcbiAgICAgICAgICAgICAgICBhY3Rpb246ICdzYXZlJyxcclxuICAgICAgICAgICAgICAgIGNvaW5BbW91bnQ6IGNjLmZ4LkdhbWVDb25maWcuR01fSU5GTy5jb2luXHJcbiAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgIHN1Y2Nlc3M6IHJlcyA9PiB7XHJcbiAgICAgICAgICAgICAgICAvLyBjb25zb2xlLmxvZygn5LqR5Ye95pWw6L+U5Zue57uT5p6cOicsIHJlcyk7XHJcbiAgICAgICAgICAgICAgICBpZihyZXMucmVzdWx0LmNvZGUgPT0gMjAwKXtcclxuICAgICAgICAgICAgICAgICAgICAvLyBjb25zb2xlLmxvZygn5a2Y5YKo6YeR5biB5pWw5o2u5oiQ5YqfJyxjYy5meC5HYW1lQ29uZmlnLkdNX0lORk8uY29pbik7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBpZihjYWxsYmFjayl7XHJcbiAgICAgICAgICAgICAgICAgICAgY2FsbGJhY2socmVzKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICBmYWlsOiBlcnIgPT4ge1xyXG4gICAgICAgICAgICAgICAgLy8gY29uc29sZS5sb2coJ+WtmOWCqOmHkeW4geaVsOaNruWksei0pScpXHJcbiAgICAgICAgICAgICAgICBpZihjYWxsYmFjayl7XHJcbiAgICAgICAgICAgICAgICAgICAgY2FsbGJhY2soZXJyKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoJ+WtmOWCqOeUqOaIt+aVsOaNruWksei0pScsIGVycilcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9KVxyXG4gICAgICAgIH1cclxuICAgIH0sXHJcblxyXG5cclxuICAgIC8v6I635Y+W55So5oi35YWz5Y2h5pWwXHJcbiAgICBnZXRVc2VyTGV2ZWwoY2FsbGJhY2s6IEZ1bmN0aW9uKSB7XHJcbiAgICAgICAgaWYgKHR5cGVvZiB3eCE9PSAndW5kZWZpbmVkJyAmJiB3eCE9PSBudWxsKSB7XHJcbiAgICAgICAgICAgICAgIC8vQHRzLWlnbm9yZVxyXG4gICAgICAgICAgICB3eC5jbG91ZC5jYWxsRnVuY3Rpb24oe1xyXG4gICAgICAgICAgICBuYW1lOiAndXNlckxldmVsJyxcclxuICAgICAgICAgICAgZGF0YToge1xyXG4gICAgICAgICAgICAgICAgYWN0aW9uOiAncmVhZCdcclxuICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgc3VjY2VzczogcmVzID0+IHtcclxuICAgICAgICAgICAgICAgIGlmKGNhbGxiYWNrKVxyXG4gICAgICAgICAgICAgICAgICAgIGNhbGxiYWNrKHJlcyk7IFxyXG5cclxuICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgZmFpbDogZXJyID0+IHtcclxuICAgICAgICAgICAgICAgICAgIGNhbGxiYWNrKGVycik7IFxyXG5cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9KVxyXG4gICAgICAgIH1cclxuICAgIH0sXHJcblxyXG4gICAgLy/ov5vmuLjmiI/lpITnkIYg5L2T5Yqb5YC85oOF5Ya1XHJcbiAgICBnZXRIZWFsdGgoY2FsbGJhY2s6IEZ1bmN0aW9uKXtcclxuICAgICAgICBsZXQgaGVhbHRoID0gY2MuZnguU3RvcmFnZU1lc3NhZ2UuZ2V0U3RvcmFnZShcImhlYWx0aFwiKTtcclxuICAgICAgICBjb25zdCB0aW1lc3RhbXAgPSBEYXRlLm5vdygpO1xyXG4gICAgICAgIGNjLmZ4LkdhbWVDb25maWcuR01fSU5GTy5ocCA9IDU7XHJcbiAgICAgICAgLy/msqHmnInlrZjlgqjov4fkvZPlipvlgLxcclxuICAgICAgICBpZihoZWFsdGggPT0gbnVsbCB8fCBoZWFsdGggPT0gdW5kZWZpbmVkIHx8IGhlYWx0aCA9PSBcIlwiKXtcclxuICAgICAgICAgICAgY29uc29sZS5sb2coXCLmsqHlrZjlgqjov4fkvZPlipvlgLzvvIzliJ3ov5tcIik7XHJcbiAgICAgICAgICAgIGNjLmZ4LkdhbWVDb25maWcuR01fSU5GTy5ocCA9IDU7XHJcbiAgICAgICAgICAgIGNjLmZ4LkdhbWVUb29sLmdldFVzZXJIZWFsdGgoKGRhdGEpPT57XHJcbiAgICAgICAgICAgICAgICBjb25zb2xlLmxvZyhcIuS9k+WKm+aOpeWPo+i/lOWbnue7k+aenFwiLGRhdGEpO1xyXG4gICAgICAgICAgICAgICAgaWYoZGF0YS5yZXN1bHQuY29kZSA9PSAyMDApe1xyXG4gICAgICAgICAgICAgICAgICAgIGNjLmZ4LkdhbWVDb25maWcuR01fSU5GTy5ocCA9IGRhdGEucmVzdWx0LmRhdGE7XHJcbiAgICAgICAgICAgICAgICAgICAgY2MuZnguR2FtZUNvbmZpZy5HTV9JTkZPLm1pbl9UaW1lID0gZGF0YS5yZXN1bHQudGltZXN0YW1wO1xyXG4gICAgICAgICAgICAgICAgICAgIGxldCBoZWFsdGhJbmZvID0ge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBcImhlYWx0aFwiOmNjLmZ4LkdhbWVDb25maWcuR01fSU5GTy5ocCxcclxuICAgICAgICAgICAgICAgICAgICAgICAgXCJ0aW1lc3RhbXBcIjpkYXRhLnJlc3VsdC50aW1lc3RhbXBcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgTWluaUdhbWVTZGsuQVBJLnNodXNodV9TZXRTdXBlclByb3BlcnRpZXMoKTtcclxuICAgICAgICAgICAgICAgICAgICBjYy5meC5TdG9yYWdlTWVzc2FnZS5zZXRTdG9yYWdlKFwiaGVhbHRoXCIsaGVhbHRoSW5mbyk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBlbHNlIGlmKGRhdGEucmVzdWx0LmNvZGUgPT0gNDA0ICYmIGRhdGEucmVzdWx0Lm1lc3NhZ2UgPT0gXCLmnKrmib7liLDkvZPlipvmlbDmja5cIil7XHJcbiAgICAgICAgICAgICAgICAgICAgY2MuZnguR2FtZVRvb2wuc2V0VXNlckhlYWx0aCgwLCgpPT57XHJcbiAgICAgICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBpZihjYWxsYmFjaykgY2FsbGJhY2soKTtcclxuICAgICAgICAgICAgfSlcclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZXtcclxuICAgICAgICAgICAgY29uc29sZS5sb2coXCLmnInlrZjlgqjov4fkvZPlipvlgLw6XCIsaGVhbHRoKTtcclxuICAgICAgICAgICAgY2MuZnguR2FtZUNvbmZpZy5HTV9JTkZPLmhwID0gaGVhbHRoLmhlYWx0aDtcclxuICAgICAgICAgICAgaWYoY2FsbGJhY2spe1xyXG4gICAgICAgICAgICAgICAgY29uc29sZS5sb2coXCLkvZPlipvlgLzor7vlj5blrozmr5VcIik7XHJcbiAgICAgICAgICAgICAgICBjYWxsYmFjaygpO1xyXG4gICAgICAgICAgICB9IFxyXG4gICAgICAgICAgICBpZihoZWFsdGguaGVhbHRoIDwgMCl7XHJcbiAgICAgICAgICAgICAgICBjb25zb2xlLmxvZyhcIuS9k+WKm+WAvOW8guW4uO+8jOW9kumbtlwiKTtcclxuICAgICAgICAgICAgICAgIGNjLmZ4LkdhbWVDb25maWcuR01fSU5GTy5ocCA9IDA7XHJcbiAgICAgICAgICAgICAgICBjYy5meC5HYW1lVG9vbC5zZXRVc2VySGVhbHRoKDAsKCk9PntcclxuICAgICAgICAgICAgICAgICAgICBpZihjYWxsYmFjaykgY2FsbGJhY2soKTtcclxuICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGVsc2UgaWYoaGVhbHRoLmhlYWx0aCA8IDUpe1xyXG4gICAgICAgICAgICAgICAgLy8gMzDliIbpkp/nmoTmr6vnp5LmlbBcclxuICAgICAgICAgICAgICAgIGNvbnN0IHRoaXJ0eU1pbnV0ZXMgPSAzMCAqIDYwICogMTAwMDsgXHJcbiAgICAgICAgICAgICAgICBjb25zdCBlbGFwc2VkVGltZSA9IHRpbWVzdGFtcCAtIGhlYWx0aC50aW1lc3RhbXA7XHJcbiAgICAgICAgICAgICAgICAvLyDorqHnrpfmgaLlpI3nmoTkvZPlipvlgLxcclxuICAgICAgICAgICAgICAgIGNvbnN0IHJlY292ZXJlZEhlYWx0aCA9IE1hdGgubWluKDUgLSBoZWFsdGguaGVhbHRoLCBNYXRoLmZsb29yKGVsYXBzZWRUaW1lIC8gdGhpcnR5TWludXRlcykpOyBcclxuICAgICAgICAgICAgICAgIGlmIChyZWNvdmVyZWRIZWFsdGggPiAwKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgaGVhbHRoLmhlYWx0aCArPSByZWNvdmVyZWRIZWFsdGg7XHJcbiAgICAgICAgICAgICAgICAgICAgY2MuZnguR2FtZVRvb2wuc2V0VXNlckhlYWx0aChyZWNvdmVyZWRIZWFsdGgsKCk9PntcclxuICAgICAgICAgICAgICAgICAgICAgICAgIGlmKGNhbGxiYWNrKSBjYWxsYmFjaygpO1xyXG4gICAgICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKGDkvZPlipvlgLzmgaLlpI0gJHtyZWNvdmVyZWRIZWFsdGh9IOeCue+8jOW9k+WJjeS9k+WKm+WAvDogJHtjYy5meC5HYW1lQ29uZmlnLkdNX0lORk8uaHB9YCk7XHJcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICAgIC8vIOiuoeeul+i3neemu+S4i+S4gOasoeaBouWkjeeahOWJqeS9meaXtumXtFxyXG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHJlbWFpbmluZ1RpbWUgPSBNYXRoLmNlaWwoKHRoaXJ0eU1pbnV0ZXMgLSAoZWxhcHNlZFRpbWUgJSB0aGlydHlNaW51dGVzKSkgLyAxMDAwKTtcclxuICAgICAgICAgICAgICAgICAgICBjb25zb2xlLmxvZyhg5L2T5Yqb5YC85pyq5ruh77yM5b6F5oGi5aSN77yM6Led56a75LiL5LiA5qyh5oGi5aSN6L+Y5YmpICR7cmVtYWluaW5nVGltZX0g56eSYCk7XHJcbiAgICAgICAgICAgICAgICAgICAgY2MuZnguR2FtZUNvbmZpZy5HTV9JTkZPLm1pbl9UaW1lID0gcmVtYWluaW5nVGltZTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgIH0sXHJcblxyXG4gICAgLy/ojrflj5bnlKjmiLfkvZPlipvlgLxcclxuICAgIGdldFVzZXJIZWFsdGgoY2FsbGJhY2s6IEZ1bmN0aW9uKSB7XHJcbiAgICAgICAgaWYgKHR5cGVvZiB3eCE9PSAndW5kZWZpbmVkJyAmJiB3eCE9PSBudWxsKSB7XHJcbiAgICAgICAgICAgIGNvbnNvbGUubG9nKFwi5Y2z5bCG6L+b5YWl5L2T5Yqb6I635Y+W5o6l5Y+jXCIpO1xyXG4gICAgICAgICAgICAgICAvL0B0cy1pZ25vcmVcclxuICAgICAgICAgICAgd3guY2xvdWQuY2FsbEZ1bmN0aW9uKHtcclxuICAgICAgICAgICAgbmFtZTogJ3VzZXJIZWFsdGgnLFxyXG4gICAgICAgICAgICBkYXRhOiB7XHJcbiAgICAgICAgICAgICAgICBhY3Rpb246ICdyZWFkJ1xyXG4gICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICBzdWNjZXNzOiByZXMgPT4ge1xyXG4gICAgICAgICAgICAgICAgLy8gY29uc29sZS5sb2coXCLkvZPlipvojrflj5bmiJDlip9cIixyZXMpO1xyXG4gICAgICAgICAgICAgICAgaWYoY2FsbGJhY2spXHJcbiAgICAgICAgICAgICAgICAgICAgY2FsbGJhY2socmVzKTsgXHJcbiAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgIGZhaWw6IGVyciA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgLy8gY29uc29sZS5sb2coXCLkvZPlipvojrflj5blpLHotKVcIixlcnIpO1xyXG4gICAgICAgICAgICAgICAgICAgY2FsbGJhY2soZXJyKTsgXHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfSlcclxuICAgICAgICB9XHJcbiAgICB9LFxyXG5cclxuICAgIC8v6K6+572u55So5oi35L2T5Yqb5YC8ICDmnInlj6/og73liqDvvIzmnInlj6/og73lrprml7blmajlh49cclxuICAgIHNldFVzZXJIZWFsdGgoaGVhbHRoLGNhbGxiYWNrKXtcclxuICAgICAgICBjYy5meC5HYW1lQ29uZmlnLkdNX0lORk8uaHAgKz0gaGVhbHRoO1xyXG4gICAgICAgIC8vIGlmKGhlYWx0aCA8IDApIHtcclxuICAgICAgICAvLyB9XHJcbiAgICAgICAgLy8gZWxzZSBNaW5pR2FtZVNkay5BUEkuc2hvd1RvYXN0KFwi5L2T5Yqb5YC85oGi5aSNXCIpO1xyXG4gICAgICAgIGNvbnN0IHRpbWVzdGFtcCA9IERhdGUubm93KCk7XHJcbiAgICAgICAgbGV0IGhlYWx0aEluZm8gPXt9XHJcbiBcclxuICAgICAgICAvL+WmguaenOa2iOiAl+S5i+WJjeS4jeaYr+a7oeS9k+WKm++8jOivtOaYjuW3sue7j+WcqOaBouWkjeacn++8jOW5tuS4jeeUqOS/ruaUueaXtumXtFxyXG4gICAgICAgIGlmKGhlYWx0aCA8IDAgJiYgY2MuZnguR2FtZUNvbmZpZy5HTV9JTkZPLmhwICE9IDQpIHtcclxuICAgICAgICAgICAgbGV0IG9sZFRpbWUgPSBjYy5meC5TdG9yYWdlTWVzc2FnZS5nZXRTdG9yYWdlKFwiaGVhbHRoXCIpLnRpbWVzdGFtcDtcclxuICAgICAgICAgICAgaGVhbHRoSW5mbyA9IHtcclxuICAgICAgICAgICAgICAgIFwiaGVhbHRoXCI6Y2MuZnguR2FtZUNvbmZpZy5HTV9JTkZPLmhwLFxyXG4gICAgICAgICAgICAgICAgXCJ0aW1lc3RhbXBcIjpvbGRUaW1lXHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZXtcclxuICAgICAgICAgICAgaGVhbHRoSW5mbyA9IHtcclxuICAgICAgICAgICAgICAgIFwiaGVhbHRoXCI6Y2MuZnguR2FtZUNvbmZpZy5HTV9JTkZPLmhwLFxyXG4gICAgICAgICAgICAgICAgXCJ0aW1lc3RhbXBcIjp0aW1lc3RhbXBcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICBjYy5meC5TdG9yYWdlTWVzc2FnZS5zZXRTdG9yYWdlKFwiaGVhbHRoXCIsaGVhbHRoSW5mbyk7XHJcbiAgICAgICAgTWluaUdhbWVTZGsuQVBJLnNodXNodV9TZXRTdXBlclByb3BlcnRpZXMoKTtcclxuICAgICAgICBpZiAodHlwZW9mIHd4IT09ICd1bmRlZmluZWQnICYmIHd4IT09IG51bGwpIHtcclxuICAgICAgICAgICAgLy9AdHMtaWdub3JlXHJcbiAgICAgICAgICAgIHd4LmNsb3VkLmNhbGxGdW5jdGlvbih7XHJcbiAgICAgICAgICAgICAgICBuYW1lOiAndXNlckhlYWx0aCcsXHJcbiAgICAgICAgICAgICAgICBkYXRhOiB7XHJcbiAgICAgICAgICAgICAgICAgICAgYWN0aW9uOiAnc2F2ZScsXHJcbiAgICAgICAgICAgICAgICAgICAgaGVhbHRoQW1vdW50OiBjYy5meC5HYW1lQ29uZmlnLkdNX0lORk8uaHAsXHJcbiAgICAgICAgICAgICAgICAgICAgdGltZXN0YW1wOnRpbWVzdGFtcFxyXG4gICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICAgIHN1Y2Nlc3M6IHJlcyA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYoY2FsbGJhY2spe1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBjYWxsYmFjayhyZXMpO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICBcclxuICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgICBmYWlsOiBlcnIgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgIGlmKGNhbGxiYWNrKXtcclxuICAgICAgICAgICAgICAgICAgICAgICAgY2FsbGJhY2soZXJyKTtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgLy8gY29uc29sZS5lcnJvcign5a2Y5YKo5YWz5Y2h5pWw5o2u5aSx6LSlJywgZXJyKVxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9KVxyXG4gICAgICAgIH1cclxuICAgIH0sXHJcblxyXG4gICAgLy/otK3kubDooYzkuLpcclxuICAgIGJ1eVJldmlldyhjb2luLGNhbGxiYWNrOiBGdW5jdGlvbil7XHJcbiAgICAgICAgaWYgKHR5cGVvZiB3eCE9PSAndW5kZWZpbmVkJyAmJiB3eCE9PSBudWxsKSB7XHJcbiAgICAgICAgICAgIC8vIGNvbnNvbGUubG9nKFwi5a6e6ZmF5Y2z5bCG5raI6ICX6YeR5biBOlwiLGNvaW4pO1xyXG4gICAgICAgICAgICAvLyB0aGlzLmNoYW5nZUNvaW4oY29pbik7XHJcbiAgICAgICAgICAgIGNhbGxiYWNrKCk7XHJcbiAgICAgICAgfVxyXG4gICAgfSxcclxuXHJcbiAgICAvL+abtOaUueeUqOaIt+mBk+WFt+aVsFxyXG4gICAgYnV5UHJvcChwcm9waWQsY2FsbGJhY2s6IEZ1bmN0aW9uKSB7XHJcbiAgICAgICAgaWYgKHR5cGVvZiB3eCE9PSAndW5kZWZpbmVkJyAmJiB3eCE9PSBudWxsKSB7XHJcbiAgICAgICAgICAgIGNjLmZ4LkdhbWVUb29sLmNoYW5nZUNvaW4oLTE1MDApO1xyXG4gICAgICAgICAgICBjYy5meC5HYW1lVG9vbC5zZXRVc2VyUHJvcChwcm9waWQsMywoZGF0YSk9PntcclxuICAgICAgICAgICAgfSlcclxuICAgICAgICAgICAgY29uc3QgZGF0YSA9IHtcclxuICAgICAgICAgICAgICAgIGlkOiAocHJvcGlkICsgXCJcIiksXHJcbiAgICAgICAgICAgICAgICBudW06M1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGNjLmZ4LkdhbWVUb29sLnNodXNodV9UcmFjayhcInJlc291cmNlX2dldFwiLGRhdGEpO1xyXG4gICAgICAgICAgICBsZXQgX2lkID0gXCJcIjtcclxuICAgICAgICAgICAgaWYocHJvcGlkID09IDIwMDEpIF9pZCA9IFwiZnJlZXplX2luX2dhbWVcIjtcclxuICAgICAgICAgICAgZWxzZSBpZihwcm9waWQgPT0gMjAwMikgX2lkID0gXCJoYW1tZXJfaW5fZ2FtZVwiO1xyXG4gICAgICAgICAgICBlbHNlIGlmKHByb3BpZCA9PSAyMDAzKSBfaWQgPSBcIndhbmRfaW5fZ2FtZVwiO1xyXG4gICAgICAgICAgICBcclxuICAgICAgICAgICAgY29uc3QgYnV5RGF0YSA9IHtcclxuICAgICAgICAgICAgICAgIGl0ZW1faWQ6X2lkLFxyXG4gICAgICAgICAgICAgICAgaXRlbV9udW06MSxcclxuICAgICAgICAgICAgICAgIGl0ZW1fcHJpY2U6MTUwMCxcclxuICAgICAgICAgICAgICAgIGNvc3RfdHlwZTpcImdvbGRcIlxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGNvbnNvbGUubG9nKFwiX19fX19fX19fX19f5Y2z5bCG5LiK5LygU2hvcF9idXlcIixidXlEYXRhKTtcclxuICAgICAgICAgICAgY2MuZnguR2FtZVRvb2wuc2h1c2h1X1RyYWNrKFwic2hvcF9idXlcIixidXlEYXRhKTtcclxuICAgICAgICAgICAgY2FsbGJhY2soKTtcclxuICAgICAgICB9XHJcbiAgICB9LFxyXG5cclxuXHJcbiAgICAvL+aUueWPmOeUqOaIt+WFs+WNoVxyXG4gICAgc2V0VXNlckxldmVsKGNhbGxiYWNrKXtcclxuICAgICAgICBpZiAodHlwZW9mIHd4IT09ICd1bmRlZmluZWQnICYmIHd4IT09IG51bGwpIHtcclxuICAgICAgICAgICAgLy8gaWYoY2MuZnguR2FtZUNvbmZpZy5HTV9JTkZPLmxldmVsIDw9IDAgfHwgY2MuZnguR2FtZUNvbmZpZy5HTV9JTkZPLmxldmVsID09IHVuZGVmaW5lZCl7XHJcbiAgICAgICAgICAgIC8vICAgICBjb25zb2xlLmxvZyhcIuetiee6p+mHjee9ruS4ujBcIik7XHJcbiAgICAgICAgICAgIC8vICAgICBjYy5meC5HYW1lQ29uZmlnLkdNX0lORk8ubGV2ZWwgPSAwO1xyXG4gICAgICAgICAgICAvLyB9XHJcbiAgICAgICAgICAgIC8vIGNvbnNvbGUubG9nKFwi5Y2z5bCG5LiK5Lyg55qE5YWz5Y2h5pWwOlwiLGNjLmZ4LkdhbWVDb25maWcuR01fSU5GTy5sZXZlbCk7XHJcbiAgICAgICAgICAgIC8vQHRzLWlnbm9yZVxyXG4gICAgICAgICAgICB3eC5jbG91ZC5jYWxsRnVuY3Rpb24oe1xyXG4gICAgICAgICAgICBuYW1lOiAndXNlckxldmVsJyxcclxuICAgICAgICAgICAgZGF0YToge1xyXG4gICAgICAgICAgICAgICAgYWN0aW9uOiAnc2F2ZScsXHJcbiAgICAgICAgICAgICAgICBsZXZlbEFtb3VudDogY2MuZnguR2FtZUNvbmZpZy5HTV9JTkZPLmxldmVsXHJcbiAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgIHN1Y2Nlc3M6IHJlcyA9PiB7XHJcbiAgICAgICAgICAgICAgICAvLyBjb25zb2xlLmxvZygn5LqR5Ye95pWw6L+U5Zue57uT5p6cOicsIHJlcyk7XHJcbiAgICAgICAgICAgICAgICAvLyBjb25zb2xlLmxvZygn5a2Y5YKo5YWz5Y2h5pWw5o2u5oiQ5YqfJyxjYy5meC5HYW1lQ29uZmlnLkdNX0lORk8ubGV2ZWwpO1xyXG4gICAgICAgICAgICAgICAgaWYoY2FsbGJhY2spe1xyXG4gICAgICAgICAgICAgICAgICAgIGNhbGxiYWNrKHJlcyk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgXHJcbiAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgIGZhaWw6IGVyciA9PiB7XHJcbiAgICAgICAgICAgICAgICAvLyBjb25zb2xlLmxvZygn5a2Y5YKo5YWz5Y2h5pWw5o2u5aSx6LSlJylcclxuICAgICAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICAgICAgICAgIGlmKGNhbGxiYWNrKXtcclxuICAgICAgICAgICAgICAgICAgICBjYWxsYmFjayhlcnIpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgY29uc29sZS5lcnJvcign5a2Y5YKo5YWz5Y2h5pWw5o2u5aSx6LSlJywgZXJyKVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH0pXHJcbiAgICAgICAgfVxyXG4gICAgfSxcclxuXHJcbiAgICAgICAgLy/ojrflj5bnlKjmiLflhbPljaHmlbBcclxuICAgIGdldFVzZXJQcm9wKGNhbGxiYWNrOiBGdW5jdGlvbikge1xyXG4gICAgICAgIGlmICh0eXBlb2Ygd3ghPT0gJ3VuZGVmaW5lZCcgJiYgd3ghPT0gbnVsbCkge1xyXG4gICAgICAgICAgICAgICAvL0B0cy1pZ25vcmVcclxuICAgICAgICAgICAgd3guY2xvdWQuY2FsbEZ1bmN0aW9uKHtcclxuICAgICAgICAgICAgbmFtZTogJ3VzZXJQcm9wJyxcclxuICAgICAgICAgICAgZGF0YToge1xyXG4gICAgICAgICAgICAgICAgYWN0aW9uOiAncmVhZCdcclxuICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgc3VjY2VzczogcmVzID0+IHtcclxuICAgICAgICAgICAgICAgIC8vIGNvbnNvbGUubG9nKCfor7vlj5bnlKjmiLfpgZPlhbfmlbDmja7miJDlip8nLCByZXMucmVzdWx0KVxyXG4gICAgICAgICAgICAgICAgaWYocmVzLnJlc3VsdC5kYXRhKXtcclxuICAgICAgICAgICAgICAgICAgICAvLyBjYy5meC5HYW1lQ29uZmlnLkdNX0lORk8uZnJlZXplQW1vdW50ID0gcmVzLnJlc3VsdC5kYXRhLmZyZWV6ZTtcclxuICAgICAgICAgICAgICAgICAgICAvLyBjYy5meC5HYW1lQ29uZmlnLkdNX0lORk8uaGFtbWVyQW1vdW50ID0gcmVzLnJlc3VsdC5kYXRhLmhhbW1lcjtcclxuICAgICAgICAgICAgICAgICAgICAvLyBjYy5meC5HYW1lQ29uZmlnLkdNX0lORk8ubWFnaWNBbW91bnQgPSByZXMucmVzdWx0LmRhdGEubWFnaWNfd2FuZDtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIGlmKGNhbGxiYWNrKVxyXG4gICAgICAgICAgICAgICAgICAgIGNhbGxiYWNrKHJlcyk7IFxyXG5cclxuICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgZmFpbDogZXJyID0+IHtcclxuICAgICAgICAgICAgICAgICAgIGNhbGxiYWNrKGVycik7IFxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH0pXHJcbiAgICAgICAgfVxyXG4gICAgfSxcclxuXHJcbiAgICAvL+aUueWPmOeUqOaIt+mBk+WFt1xyXG4gICAgc2V0VXNlclByb3AocHJvcGlkLGFtb3VudCxjYWxsYmFjayl7XHJcbiAgICAgICAgaWYgKHR5cGVvZiB3eCE9PSAndW5kZWZpbmVkJyAmJiB3eCE9PSBudWxsKSB7XHJcbiAgICAgICAgICAgIGxldCBuZXdQcm9wRGF0YSA9IG51bGw7XHJcbiAgICAgICAgICAgIGlmKHByb3BpZCA9PSAwKXtcclxuICAgICAgICAgICAgICAgIG5ld1Byb3BEYXRhID0ge1xyXG4gICAgICAgICAgICAgICAgICAgIGZyZWV6ZTpjYy5meC5HYW1lQ29uZmlnLkdNX0lORk8uZnJlZXplQW1vdW50LFxyXG4gICAgICAgICAgICAgICAgICAgIGhhbW1lcjpjYy5meC5HYW1lQ29uZmlnLkdNX0lORk8uaGFtbWVyQW1vdW50LFxyXG4gICAgICAgICAgICAgICAgICAgIG1hZ2ljX3dhbmQ6Y2MuZnguR2FtZUNvbmZpZy5HTV9JTkZPLm1hZ2ljQW1vdW50LFxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGVsc2UgaWYocHJvcGlkID09IDIwMDEpe1xyXG4gICAgICAgICAgICAgICAgbmV3UHJvcERhdGEgPSBhbW91bnQ7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgZWxzZSBpZihwcm9waWQgPT0gMjAwMil7XHJcbiAgICAgICAgICAgICAgICBuZXdQcm9wRGF0YSA9IGFtb3VudDsgXHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgZWxzZSBpZihwcm9waWQgPT0gMjAwMyl7XHJcbiAgICAgICAgICAgICAgICBuZXdQcm9wRGF0YSA9IGFtb3VudDsgXHJcbiAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgIC8vQHRzLWlnbm9yZVxyXG4gICAgICAgICAgICB3eC5jbG91ZC5jYWxsRnVuY3Rpb24oe1xyXG4gICAgICAgICAgICBuYW1lOiAndXNlclByb3AnLFxyXG4gICAgICAgICAgICBkYXRhOiB7XHJcbiAgICAgICAgICAgICAgICBhY3Rpb246ICdzYXZlJyxcclxuICAgICAgICAgICAgICAgIHByb3BUeXBlOiBwcm9waWQsXHJcbiAgICAgICAgICAgICAgICBwcm9wRGF0YTogbmV3UHJvcERhdGFcclxuICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgc3VjY2VzczogcmVzID0+IHtcclxuICAgICAgICAgICAgICAgIC8vIGNvbnNvbGUubG9nKCfkupHlh73mlbDov5Tlm57nu5Pmnpw6JywgcmVzKTtcclxuICAgICAgICAgICAgICAgIGlmKGNhbGxiYWNrKXtcclxuICAgICAgICAgICAgICAgICAgICBjYWxsYmFjayhyZXMpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgLy8gY29uc29sZS5sb2coJ+WtmOWCqOmBk+WFt+aVsOaNruaIkOWKnycpXHJcbiAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgIGZhaWw6IGVyciA9PiB7XHJcbiAgICAgICAgICAgICAgICAvLyBjb25zb2xlLmxvZygn5a2Y5YKo6YGT5YW35pWw5o2u5aSx6LSlJylcclxuICAgICAgICAgICAgICAgIGlmKGNhbGxiYWNrKXtcclxuICAgICAgICAgICAgICAgICAgICBjYWxsYmFjayhlcnIpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgY29uc29sZS5lcnJvcign5a2Y5YKo6YGT5YW35pWw5o2u5aSx6LSlJywgZXJyKVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH0pXHJcbiAgICAgICAgfVxyXG4gICAgfSxcclxuXHJcbiAgICAvLyDmo4Dmn6XmmK/lkKbmnInotrPlpJ/nmoTnoazluIFcclxuICAgIGNvbnN1bWVDb2lucyhyZXF1aXJlZENvaW5zOiBudW1iZXIsIHByb3BOYW1lOiBzdHJpbmcsIGFtb3VudDogbnVtYmVyLCBjYWxsYmFjaykge1xyXG4gIFxyXG5cclxuICAgIH0sXHJcblxyXG4gICAgLy8g6K6+572u55So5oi35L+h5oGvXHJcbiAgICBzZXRVc2VySW5mbyhjYWxsYmFjazogRnVuY3Rpb24pIHtcclxuICAgICAgICAvL0B0cy1pZ25vcmVcclxuICAgICAgICAgaWYgKHR5cGVvZiB3eCE9PSAndW5kZWZpbmVkJyAmJiB3eCE9PSBudWxsKSB7XHJcbiAgICAgICAgICAgICAgICBjb25zdCB0aW1lID0gY2MuZnguR2FtZVRvb2wuZm9ybWF0RGF0ZShuZXcgRGF0ZSgpKTtcclxuICAgICAgICAgICAgICAgIGxldCB1c2VySW5mbyA9IHtcclxuICAgICAgICAgICAgICAgICAgICAvLyDov5nph4zloavlhpnopoHlrZjlgqjnmoTnlKjmiLfmlbDmja5cclxuICAgICAgICAgICAgICAgICAgICB1c2VybmFtZTogY2MuZnguR2FtZUNvbmZpZy5HTV9JTkZPLnVzZXJuYW1lLCAgIC8v55So5oi35ZCN56ewXHJcbiAgICAgICAgICAgICAgICAgICAgdXNlcmF2YXRhcjogY2MuZnguR2FtZUNvbmZpZy5HTV9JTkZPLnVzZXJhdmF0YXIsICAgICAvL+eUqOaIt+WktOWDj1xyXG4gICAgICAgICAgICAgICAgICAgIHJlZ2lzdGVyX3RpbWU6IHRpbWVcclxuICAgICAgICAgICAgICAgIH1cclxuIFxyXG4gICAgICAgICAgICAgICAvL0B0cy1pZ25vcmVcclxuICAgICAgICAgICAgICAgIHd4LmNsb3VkLmNhbGxGdW5jdGlvbih7XHJcbiAgICAgICAgICAgICAgICBuYW1lOiAndXNlckRhdGEnLFxyXG4gICAgICAgICAgICAgICAgZGF0YToge1xyXG4gICAgICAgICAgICAgICAgICAgIGFjdGlvbjogJ3NhdmUnLFxyXG4gICAgICAgICAgICAgICAgICAgIHVzZXJEYXRhOiB1c2VySW5mb1xyXG4gICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICAgIHN1Y2Nlc3M6IHJlcyA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgLy8gY29uc29sZS5sb2coJ+WtmOWCqOeUqOaIt+aVsOaNruaIkOWKnycpXHJcbiAgICAgICAgICAgICAgICAgICAgaWYoY2FsbGJhY2spe1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBjYWxsYmFjayhyZXMpO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgICAgZmFpbDogZXJyID0+IHtcclxuICAgICAgICAgICAgICAgICAgICBpZihjYWxsYmFjayl7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgY2FsbGJhY2soXCJmYWlsXCIpO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH0pXHJcbiAgICAgICAgIH0gXHJcbiAgICB9LFxyXG5cclxuICAgICBmb3JtYXREYXRlKGRhdGU6IERhdGUpOiBzdHJpbmcge1xyXG4gICAgICAgIGNvbnN0IHllYXIgPSBkYXRlLmdldEZ1bGxZZWFyKCk7XHJcbiAgICAgICAgY29uc3QgbW9udGggPSBTdHJpbmcoZGF0ZS5nZXRNb250aCgpICsgMSkucGFkU3RhcnQoMiwgJzAnKTtcclxuICAgICAgICBjb25zdCBkYXkgPSBTdHJpbmcoZGF0ZS5nZXREYXRlKCkpLnBhZFN0YXJ0KDIsICcwJyk7XHJcbiAgICAgICAgY29uc3QgaG91cnMgPSBTdHJpbmcoZGF0ZS5nZXRIb3VycygpKS5wYWRTdGFydCgyLCAnMCcpO1xyXG4gICAgICAgIGNvbnN0IG1pbnV0ZXMgPSBTdHJpbmcoZGF0ZS5nZXRNaW51dGVzKCkpLnBhZFN0YXJ0KDIsICcwJyk7XHJcbiAgICAgICAgY29uc3Qgc2Vjb25kcyA9IFN0cmluZyhkYXRlLmdldFNlY29uZHMoKSkucGFkU3RhcnQoMiwgJzAnKTtcclxuICAgICAgICBjb25zdCBtaWxsaXNlY29uZHMgPSBTdHJpbmcoZGF0ZS5nZXRNaWxsaXNlY29uZHMoKSkucGFkU3RhcnQoMywgJzAnKTtcclxuXHJcbiAgICAgICAgcmV0dXJuIGAke3llYXJ9LSR7bW9udGh9LSR7ZGF5fSAke2hvdXJzfToke21pbnV0ZXN9OiR7c2Vjb25kc30uJHttaWxsaXNlY29uZHN9YDtcclxuICAgIH0sXHJcbiAgICBcclxuICAgIC8v6I635Y+W5pe26Ze05oizXHJcbiAgICBnZXRUaW1lKCl7XHJcbiAgICAgICAgY29uc3QgdGltZXN0YW1wID0gIChuZXcgRGF0ZSgpLmdldFRpbWUoKSlcclxuICAgICAgICByZXR1cm4gdGltZXN0YW1wO1xyXG4gICAgfSxcclxuICAgIHB1c2hMaXN0ZXI6ZnVuY3Rpb24gKCkge1xyXG4gICAgICAgIFxyXG4gICAgfSxcclxuICAgIHJlbW92ZUFsbExpc3RlcjpmdW5jdGlvbiAoKSB7XHJcbiAgICAgICAgXHJcbiAgICB9LFxyXG5cclxuICAgIHNodXNodV9UcmFjazogZnVuY3Rpb24obmFtZSxkYXRhKXtcclxuICAgICAgICBsZXQgZXZlbnREYXRhID0ge31cclxuICAgICAgICBzd2l0Y2gobmFtZSl7XHJcbiAgICAgICAgICAgIGNhc2UgXCJyZWdpc3RlclwiOlxyXG4gICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgIGNhc2UgXCJlbnRlcl9zdGFnZVwiOlxyXG4gICAgICAgICAgICAgICAgZXZlbnREYXRhID0ge1xyXG4gICAgICAgICAgICAgICAgICAgIHN0YWdlX2lkOiAoY2MuZnguR2FtZUNvbmZpZy5HTV9JTkZPLmxldmVsICsgMSlcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICBjYXNlIFwiZmluaXNoX3N0YWdlXCI6XHJcbiAgICAgICAgICAgICAgICBldmVudERhdGEgPSB7XHJcbiAgICAgICAgICAgICAgICAgICAgc3RhZ2VfaWQ6IChjYy5meC5HYW1lQ29uZmlnLkdNX0lORk8ubGV2ZWwgKyAxKSxcclxuICAgICAgICAgICAgICAgICAgICBzdGFnZV9kdXJhdGlvbjogZGF0YS50aW1lLFxyXG4gICAgICAgICAgICAgICAgICAgIGFkZGVkX3RpbWU6IGRhdGEuYWRkX1RpbWUsXHJcbiAgICAgICAgICAgICAgICAgICAgcmVzdWx0OiBkYXRhLnJlc3VsdFxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgIGNhc2UgXCJyZXNvdXJjZV9nZXRcIjpcclxuICAgICAgICAgICAgICAgIGV2ZW50RGF0YSA9IHtcclxuICAgICAgICAgICAgICAgICAgICBjaGFuZ2VfcmVhc29uOlwi6LSt5Lmw6YGT5YW3XCIsICAgLy/ojrflvpfmnaXmupBcclxuICAgICAgICAgICAgICAgICAgICBjaGFuZ2VfbnVtOmRhdGEubnVtLCAgICAgICAvL+iOt+W+l+aVsOmHj1xyXG4gICAgICAgICAgICAgICAgICAgIHJlc291cmNlX2lkOmRhdGEuaWQgICAgICAgIC8v6YGT5YW3aWRcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICBjYXNlIFwicmVzb3VyY2VfY29zdFwiOlxyXG4gICAgICAgICAgICAgICAgZXZlbnREYXRhID0ge1xyXG4gICAgICAgICAgICAgICAgICAgIGNoYW5nZV9yZWFzb246XCLkvb/nlKjpgZPlhbdcIiwgICAvL+iOt+W+l+adpea6kFxyXG4gICAgICAgICAgICAgICAgICAgIGNoYW5nZV9udW06ZGF0YS5udW0sICAgICAgIC8v6I635b6X5pWw6YePXHJcbiAgICAgICAgICAgICAgICAgICAgcmVzb3VyY2VfaWQ6ZGF0YS5pZCAgICAgICAgLy/pgZPlhbdpZFxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgYnJlYWs7IFxyXG4gICAgICAgICAgICBjYXNlIFwic2hvcF9idXlcIjpcclxuICAgICAgICAgICAgICAgIGV2ZW50RGF0YSA9IHtcclxuICAgICAgICAgICAgICAgICAgICBpdGVtX2lkOiBkYXRhLml0ZW1faWQsXHJcbiAgICAgICAgICAgICAgICAgICAgaXRlbV9udW06IGRhdGEuaXRlbV9udW0sXHJcbiAgICAgICAgICAgICAgICAgICAgaXRlbV9wcmljZTogZGF0YS5pdGVtX3ByaWNlLFxyXG4gICAgICAgICAgICAgICAgICAgIGNvc3RfdHlwZTogZGF0YS5jb3N0X3R5cGUsICAgXHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBjb25zb2xlLmxvZyhcIuaVsOaNrjpcIixldmVudERhdGEpO1xyXG4gICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIC8vIE1pbmlHYW1lU2RrLkFQSS5zaHVzaHVfVHJhY2sobmFtZSxldmVudERhdGEpO1xyXG4gICAgICAgIE1pbmlHYW1lU2RrLkFQSS5zaHVzaHVfVHJhY2sobmFtZSwgZXZlbnREYXRhKTtcclxuICAgIH0sXHJcblxyXG4gICAgZ2V0V2VjaGF0R2FtZVZlcnNpb246IGZ1bmN0aW9uKCl7XHJcbiAgICAgICAgLy9AdHMtaWdub3JlXHJcbiAgICAgICAgY29uc3QgYWNjb3VudEluZm8gPSB3eC5nZXRBY2NvdW50SW5mb1N5bmMoKTtcclxuICAgICAgICBjb25zdCBtaW5pUHJvZ3JhbSA9IGFjY291bnRJbmZvLm1pbmlQcm9ncmFtO1xyXG4gICAgICAgIHN3aXRjaCAobWluaVByb2dyYW0uZW52VmVyc2lvbikge1xyXG4gICAgICAgICAgICBjYXNlICdkZXZlbG9wJzpcclxuICAgICAgICAgICAgICAgIHJldHVybiAn5byA5Y+R54mIJztcclxuICAgICAgICAgICAgY2FzZSAndHJpYWwnOlxyXG4gICAgICAgICAgICAgICAgcmV0dXJuICfkvZPpqozniYgnO1xyXG4gICAgICAgICAgICBjYXNlICdyZWxlYXNlJzpcclxuICAgICAgICAgICAgICAgIHJldHVybiAn5q2j5byP54mIJztcclxuICAgICAgICAgICAgZGVmYXVsdDpcclxuICAgICAgICAgICAgICAgIHJldHVybiAn5pyq55+l54mI5pysJztcclxuICAgICAgICB9XHJcbiAgICB9LFxyXG5cclxufTtcclxuZXhwb3J0IHsgR2FtZVRvb2wgfTsiXX0= -//------QC-SOURCE-SPLIT------ - - (function() { - var nodeEnv = typeof require !== 'undefined' && typeof process !== 'undefined'; - var __module = nodeEnv ? module : {exports:{}}; -<<<<<<< HEAD - var __filename = 'preview-scripts/assets/Script/module/Share/share.js'; -======= var __filename = 'preview-scripts/assets/Script/MapBlock.js'; var __require = nodeEnv ? function (request) { return cc.require(request); @@ -6851,73 +6353,73 @@ cc._RF.pop(); cc._RF.push(module, '52958xsurVAp54WMo+xFDo6', 'MapBlock'); // Script/MapBlock.ts -"use strict"; -// Learn TypeScript: -// - https://docs.cocos.com/creator/manual/en/scripting/typescript.html -// Learn Attribute: -// - https://docs.cocos.com/creator/manual/en/scripting/reference/attributes.html -// Learn life-cycle callbacks: -// - https://docs.cocos.com/creator/manual/en/scripting/life-cycle-callbacks.html -var __extends = (this && this.__extends) || (function () { - var extendStatics = function (d, b) { - extendStatics = Object.setPrototypeOf || - ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) || - function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; }; - return extendStatics(d, b); - }; - return function (d, b) { - extendStatics(d, b); - function __() { this.constructor = d; } - d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); - }; -})(); -var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) { - var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; - if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc); - else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; - return c > 3 && r && Object.defineProperty(target, key, r), r; -}; -Object.defineProperty(exports, "__esModule", { value: true }); -var _a = cc._decorator, ccclass = _a.ccclass, property = _a.property; -var NewClass = /** @class */ (function (_super) { - __extends(NewClass, _super); - function NewClass() { - var _this = _super !== null && _super.apply(this, arguments) || this; - _this.label = null; - _this.block_Id = ''; - // LIFE-CYCLE CALLBACKS: - _this.posX = 0; //地图块的X坐标 - _this.posY = 0; //地图块的Y坐标 - _this.direction = ""; //地图块的方向 - return _this; - // update (dt) {} - } - // onLoad () {} - NewClass.prototype.start = function () { - this.direction = ""; - this.block_Id = ""; - // this.node.getChildByName("num").getComponent(cc.Label).string = this.direction; - }; - NewClass.prototype.setDiraction = function (direction) { - this.direction = direction; - // this.node.getChildByName("num").getComponent(cc.Label).string = this.direction; - }; - NewClass.prototype.init = function (posX, posY) { - this.posX = posX; - this.posY = posY; - }; - __decorate([ - property(cc.Label) - ], NewClass.prototype, "label", void 0); - __decorate([ - property - ], NewClass.prototype, "block_Id", void 0); - NewClass = __decorate([ - ccclass - ], NewClass); - return NewClass; -}(cc.Component)); -exports.default = NewClass; +"use strict"; +// Learn TypeScript: +// - https://docs.cocos.com/creator/manual/en/scripting/typescript.html +// Learn Attribute: +// - https://docs.cocos.com/creator/manual/en/scripting/reference/attributes.html +// Learn life-cycle callbacks: +// - https://docs.cocos.com/creator/manual/en/scripting/life-cycle-callbacks.html +var __extends = (this && this.__extends) || (function () { + var extendStatics = function (d, b) { + extendStatics = Object.setPrototypeOf || + ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) || + function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; }; + return extendStatics(d, b); + }; + return function (d, b) { + extendStatics(d, b); + function __() { this.constructor = d; } + d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); + }; +})(); +var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) { + var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; + if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc); + else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; + return c > 3 && r && Object.defineProperty(target, key, r), r; +}; +Object.defineProperty(exports, "__esModule", { value: true }); +var _a = cc._decorator, ccclass = _a.ccclass, property = _a.property; +var NewClass = /** @class */ (function (_super) { + __extends(NewClass, _super); + function NewClass() { + var _this = _super !== null && _super.apply(this, arguments) || this; + _this.label = null; + _this.block_Id = ''; + // LIFE-CYCLE CALLBACKS: + _this.posX = 0; //地图块的X坐标 + _this.posY = 0; //地图块的Y坐标 + _this.direction = ""; //地图块的方向 + return _this; + // update (dt) {} + } + // onLoad () {} + NewClass.prototype.start = function () { + this.direction = ""; + this.block_Id = ""; + // this.node.getChildByName("num").getComponent(cc.Label).string = this.direction; + }; + NewClass.prototype.setDiraction = function (direction) { + this.direction = direction; + // this.node.getChildByName("num").getComponent(cc.Label).string = this.direction; + }; + NewClass.prototype.init = function (posX, posY) { + this.posX = posX; + this.posY = posY; + }; + __decorate([ + property(cc.Label) + ], NewClass.prototype, "label", void 0); + __decorate([ + property + ], NewClass.prototype, "block_Id", void 0); + NewClass = __decorate([ + ccclass + ], NewClass); + return NewClass; +}(cc.Component)); +exports.default = NewClass; cc._RF.pop(); } @@ -6931,1449 +6433,6 @@ cc._RF.pop(); } })(); //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImFzc2V0c1xcU2NyaXB0XFxNYXBCbG9jay50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsb0JBQW9CO0FBQ3BCLHdFQUF3RTtBQUN4RSxtQkFBbUI7QUFDbkIsa0ZBQWtGO0FBQ2xGLDhCQUE4QjtBQUM5QixrRkFBa0Y7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUU1RSxJQUFBLEtBQXNCLEVBQUUsQ0FBQyxVQUFVLEVBQWxDLE9BQU8sYUFBQSxFQUFFLFFBQVEsY0FBaUIsQ0FBQztBQUcxQztJQUFzQyw0QkFBWTtJQUFsRDtRQUFBLHFFQWdDQztRQTdCRyxXQUFLLEdBQWEsSUFBSSxDQUFDO1FBR3ZCLGNBQVEsR0FBVyxFQUFFLENBQUM7UUFFdEIsd0JBQXdCO1FBRXhCLFVBQUksR0FBVyxDQUFDLENBQUMsQ0FBZSxTQUFTO1FBQ3pDLFVBQUksR0FBVyxDQUFDLENBQUMsQ0FBZSxTQUFTO1FBQ3pDLGVBQVMsR0FBVyxFQUFFLENBQUMsQ0FBVSxRQUFROztRQW1CekMsaUJBQWlCO0lBQ3JCLENBQUM7SUFuQkcsZUFBZTtJQUVmLHdCQUFLLEdBQUw7UUFDSSxJQUFJLENBQUMsU0FBUyxHQUFHLEVBQUUsQ0FBQztRQUNwQixJQUFJLENBQUMsUUFBUSxHQUFHLEVBQUUsQ0FBQztRQUNuQixrRkFBa0Y7SUFDdEYsQ0FBQztJQUVELCtCQUFZLEdBQVosVUFBYSxTQUFTO1FBQ2xCLElBQUksQ0FBQyxTQUFTLEdBQUcsU0FBUyxDQUFDO1FBQzNCLGtGQUFrRjtJQUN0RixDQUFDO0lBRUQsdUJBQUksR0FBSixVQUFLLElBQUksRUFBQyxJQUFJO1FBQ1YsSUFBSSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUM7UUFDakIsSUFBSSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUM7SUFDckIsQ0FBQztJQTFCRDtRQURDLFFBQVEsQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDOzJDQUNJO0lBR3ZCO1FBREMsUUFBUTs4Q0FDYTtJQU5MLFFBQVE7UUFENUIsT0FBTztPQUNhLFFBQVEsQ0FnQzVCO0lBQUQsZUFBQztDQWhDRCxBQWdDQyxDQWhDcUMsRUFBRSxDQUFDLFNBQVMsR0FnQ2pEO2tCQWhDb0IsUUFBUSIsImZpbGUiOiIiLCJzb3VyY2VSb290IjoiLyIsInNvdXJjZXNDb250ZW50IjpbIi8vIExlYXJuIFR5cGVTY3JpcHQ6XHJcbi8vICAtIGh0dHBzOi8vZG9jcy5jb2Nvcy5jb20vY3JlYXRvci9tYW51YWwvZW4vc2NyaXB0aW5nL3R5cGVzY3JpcHQuaHRtbFxyXG4vLyBMZWFybiBBdHRyaWJ1dGU6XHJcbi8vICAtIGh0dHBzOi8vZG9jcy5jb2Nvcy5jb20vY3JlYXRvci9tYW51YWwvZW4vc2NyaXB0aW5nL3JlZmVyZW5jZS9hdHRyaWJ1dGVzLmh0bWxcclxuLy8gTGVhcm4gbGlmZS1jeWNsZSBjYWxsYmFja3M6XHJcbi8vICAtIGh0dHBzOi8vZG9jcy5jb2Nvcy5jb20vY3JlYXRvci9tYW51YWwvZW4vc2NyaXB0aW5nL2xpZmUtY3ljbGUtY2FsbGJhY2tzLmh0bWxcclxuXHJcbmNvbnN0IHtjY2NsYXNzLCBwcm9wZXJ0eX0gPSBjYy5fZGVjb3JhdG9yO1xyXG5cclxuQGNjY2xhc3NcclxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgTmV3Q2xhc3MgZXh0ZW5kcyBjYy5Db21wb25lbnQge1xyXG5cclxuICAgIEBwcm9wZXJ0eShjYy5MYWJlbClcclxuICAgIGxhYmVsOiBjYy5MYWJlbCA9IG51bGw7XHJcblxyXG4gICAgQHByb3BlcnR5XHJcbiAgICBibG9ja19JZDogc3RyaW5nID0gJyc7XHJcblxyXG4gICAgLy8gTElGRS1DWUNMRSBDQUxMQkFDS1M6XHJcblxyXG4gICAgcG9zWDogbnVtYmVyID0gMDsgICAgICAgICAgICAgICAvL+WcsOWbvuWdl+eahFjlnZDmoIdcclxuICAgIHBvc1k6IG51bWJlciA9IDA7ICAgICAgICAgICAgICAgLy/lnLDlm77lnZfnmoRZ5Z2Q5qCHXHJcbiAgICBkaXJlY3Rpb246IHN0cmluZyA9IFwiXCI7ICAgICAgICAgIC8v5Zyw5Zu+5Z2X55qE5pa55ZCRXHJcbiAgICAvLyBvbkxvYWQgKCkge31cclxuXHJcbiAgICBzdGFydCAoKSB7XHJcbiAgICAgICAgdGhpcy5kaXJlY3Rpb24gPSBcIlwiO1xyXG4gICAgICAgIHRoaXMuYmxvY2tfSWQgPSBcIlwiO1xyXG4gICAgICAgIC8vIHRoaXMubm9kZS5nZXRDaGlsZEJ5TmFtZShcIm51bVwiKS5nZXRDb21wb25lbnQoY2MuTGFiZWwpLnN0cmluZyA9IHRoaXMuZGlyZWN0aW9uO1xyXG4gICAgfVxyXG5cclxuICAgIHNldERpcmFjdGlvbihkaXJlY3Rpb24pe1xyXG4gICAgICAgIHRoaXMuZGlyZWN0aW9uID0gZGlyZWN0aW9uOyAgIFxyXG4gICAgICAgIC8vIHRoaXMubm9kZS5nZXRDaGlsZEJ5TmFtZShcIm51bVwiKS5nZXRDb21wb25lbnQoY2MuTGFiZWwpLnN0cmluZyA9IHRoaXMuZGlyZWN0aW9uO1xyXG4gICAgfVxyXG5cclxuICAgIGluaXQocG9zWCxwb3NZKXtcclxuICAgICAgICB0aGlzLnBvc1ggPSBwb3NYO1xyXG4gICAgICAgIHRoaXMucG9zWSA9IHBvc1k7XHJcbiAgICB9XHJcblxyXG4gICAgLy8gdXBkYXRlIChkdCkge31cclxufVxyXG4iXX0= -//------QC-SOURCE-SPLIT------ - - (function() { - var nodeEnv = typeof require !== 'undefined' && typeof process !== 'undefined'; - var __module = nodeEnv ? module : {exports:{}}; - var __filename = 'preview-scripts/assets/Script/RankManager.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, 'e74a999IDFOabyymZgXQIiy', 'RankManager'); -// Script/RankManager.ts - -"use strict"; -var __extends = (this && this.__extends) || (function () { - var extendStatics = function (d, b) { - extendStatics = Object.setPrototypeOf || - ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) || - function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; }; - return extendStatics(d, b); - }; - return function (d, b) { - extendStatics(d, b); - function __() { this.constructor = d; } - d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); - }; -})(); -var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) { - var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; - if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc); - else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; - return c > 3 && r && Object.defineProperty(target, key, r), r; -}; -Object.defineProperty(exports, "__esModule", { value: true }); -var List_1 = require("./module/RankList/List"); -var _a = cc._decorator, ccclass = _a.ccclass, property = _a.property; -//排行榜 -var RankManager = /** @class */ (function (_super) { - __extends(RankManager, _super); - function RankManager() { - var _this = _super !== null && _super.apply(this, arguments) || this; - _this.Player = null; - _this.selfNode = null; - _this.phone = null; - return _this; - } - RankManager.prototype.onLoad = function () { - this.init(); - }; - //初始化数据 - RankManager.prototype.init = function () { - this.rankList = cc.find("ScrollView", this.node).getComponent(List_1.default); - this.Player.getChildByName("rank").active = false; - this.listData = []; - this.selfData = null; - this.rankNumber = 100; - this.rankTotal = 100; - this.selfNode.opacity = 0; - }; - RankManager.prototype.start = function () { - this.Player.active = false; - this.getRank(); - }; - //调用获取排行榜接口 - RankManager.prototype.getRank = function () { - var _this = this; - var dataFile = { - length: 100 - }; - cc.fx.GameTool.getRank(dataFile, function (data) { return _this.getRankData(data); }); - }; - //实际设置排行数据 - RankManager.prototype.getRankData = function (data) { - if (data) { - // console.log(data); - cc.fx.GameTool.getRankData(data, this, 6); - this.setPic(this.selfData.pic); - } - }; - //返回按钮 - RankManager.prototype.backClick = function () { - cc.director.loadScene("LoadScene"); - }; - //最上方用户动画 - RankManager.prototype.playerAction = function () { - var _this = this; - //-254 377 210 453 - this.Player.getChildByName("rank").active = false; - var time = 1; - this.tween = cc.tween(this.Player) - .to(2, { position: cc.v3(215, 525, 0) }) - .call(function () { - _this.Player.getChildByName("rank").active = true; - _this.Player.getChildByName("rank").getChildByName("number") - .getComponent(cc.Label).string = parseInt(time * 100 + "") + "%"; - }) - .start(); - time = (this.listData.length - this.rankNumber) / this.listData.length; - if (this.listData.length >= 99) { - if (this.rankNumber >= 99) { - time = (Math.random() * 49 + 1) / 100; - var matchId = cc.sys.localStorage.getItem("matchNumber"); - if (matchId == null || matchId == undefined) { - time = 0; - } - } - } - setTimeout(function () { - if (_this.tween) - _this.tween.stop(); - _this.Player.getChildByName("rank").active = true; - _this.Player.getChildByName("rank").getChildByName("number") - .getComponent(cc.Label).string = parseInt(time * 100 + "") + "%"; - }, time * 2000); - }; - //设置头像 处理的逻辑比较多,不用公共类的了 - RankManager.prototype.setPic = function (pic) { - var _this = this; - this.phone.node.parent.getChildByName("icon").active = false; - this.phone.node.active = false; - this.Player.active = true; - this.Player.opacity = 0; - this.Player.getChildByName("mask").getChildByName("icon").active = false; - this.Player.getChildByName("mask").getChildByName("phone").active = false; - fetch(pic) - .then(function (response) { - return response.headers.get('Content-Length'); - }) - .then(function (errNo) { - if (errNo == "5093") { - _this.phone.node.parent.getChildByName("icon").active = true; - _this.Player.getChildByName("mask").getChildByName("icon").active = true; - } - }) - .catch(function (error) { - // console.error('Error fetching X-Info:', error); - }); - var self = this; - cc.assetManager.loadRemote(pic, { ext: '.png' }, function (err, texture) { - self.Player.opacity = 255; - if (texture) { - self.phone.node.active = true; - self.phone.spriteFrame = new cc.SpriteFrame(texture); - self.Player.getChildByName("mask").getChildByName("icon").active = false; - self.Player.getChildByName("mask").getChildByName("phone").active = true; - self.Player.getChildByName("mask").getChildByName("phone").getComponent(cc.Sprite) - .spriteFrame = new cc.SpriteFrame(texture); - setTimeout(function () { - self.playerAction(); - }, 500); - } - else { - self.Player.getChildByName("mask").getChildByName("icon").active = true; - setTimeout(function () { - self.playerAction(); - }, 500); - } - }); - }; - __decorate([ - property(cc.Node) //用户上方头像 - ], RankManager.prototype, "Player", void 0); - __decorate([ - property(cc.Node) //用户最下方个人信息 - ], RankManager.prototype, "selfNode", void 0); - __decorate([ - property(cc.Sprite) //用户头像换图 - ], RankManager.prototype, "phone", void 0); - RankManager = __decorate([ - ccclass - ], RankManager); - return RankManager; -}(cc.Component)); -exports.default = RankManager; - -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,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImFzc2V0c1xcU2NyaXB0XFxSYW5rTWFuYWdlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFDQSwrQ0FBMEM7QUFDcEMsSUFBQSxLQUF3QixFQUFFLENBQUMsVUFBVSxFQUFuQyxPQUFPLGFBQUEsRUFBRSxRQUFRLGNBQWtCLENBQUM7QUFDNUMsS0FBSztBQUVMO0lBQXlDLCtCQUFZO0lBQXJEO1FBQUEscUVBK0hDO1FBN0hHLFlBQU0sR0FBWSxJQUFJLENBQUM7UUFFdkIsY0FBUSxHQUFZLElBQUksQ0FBQztRQUV6QixXQUFLLEdBQWMsSUFBSSxDQUFDOztJQXlINUIsQ0FBQztJQWpIRyw0QkFBTSxHQUFOO1FBQ0ksSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDO0lBQ2hCLENBQUM7SUFDRCxPQUFPO0lBQ1AsMEJBQUksR0FBSjtRQUNJLElBQUksQ0FBQyxRQUFRLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxZQUFZLEVBQUUsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLFlBQVksQ0FBQyxjQUFJLENBQUMsQ0FBQztRQUNwRSxJQUFJLENBQUMsTUFBTSxDQUFDLGNBQWMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxNQUFNLEdBQUcsS0FBSyxDQUFDO1FBQ2xELElBQUksQ0FBQyxRQUFRLEdBQUcsRUFBRSxDQUFDO1FBQ25CLElBQUksQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDO1FBQ3JCLElBQUksQ0FBQyxVQUFVLEdBQUcsR0FBRyxDQUFDO1FBQ3RCLElBQUksQ0FBQyxTQUFTLEdBQUUsR0FBRyxDQUFDO1FBQ3BCLElBQUksQ0FBQyxRQUFRLENBQUMsT0FBTyxHQUFHLENBQUMsQ0FBQztJQUM5QixDQUFDO0lBRUQsMkJBQUssR0FBTDtRQUNJLElBQUksQ0FBQyxNQUFNLENBQUMsTUFBTSxHQUFHLEtBQUssQ0FBQztRQUMzQixJQUFJLENBQUMsT0FBTyxFQUFFLENBQUM7SUFDbkIsQ0FBQztJ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QUM7Z0JBQzNDLFVBQVUsQ0FBQztvQkFDUCxJQUFJLENBQUMsWUFBWSxFQUFFLENBQUM7Z0JBQ3hCLENBQUMsRUFBRSxHQUFHLENBQUMsQ0FBQzthQUNYO2lCQUNHO2dCQUNBLElBQUksQ0FBQyxNQUFNLENBQUMsY0FBYyxDQUFDLE1BQU0sQ0FBQyxDQUFDLGNBQWMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFDO2dCQUN4RSxVQUFVLENBQUM7b0JBQ1AsSUFBSSxDQUFDLFlBQVksRUFBRSxDQUFDO2dCQUN4QixDQUFDLEVBQUUsR0FBRyxDQUFDLENBQUM7YUFDWDtRQUVMLENBQUMsQ0FBQyxDQUFBO0lBQ04sQ0FBQztJQTNIRDtRQURDLFFBQVEsQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLENBQVUsUUFBUTsrQ0FDYjtJQUV2QjtRQURDLFFBQVEsQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLENBQVUsV0FBVztpREFDZDtJQUV6QjtRQURDLFFBQVEsQ0FBQyxFQUFFLENBQUMsTUFBTSxDQUFDLENBQVEsUUFBUTs4Q0FDWjtJQU5QLFdBQVc7UUFEL0IsT0FBTztPQUNhLFdBQVcsQ0ErSC9CO0lBQUQsa0JBQUM7Q0EvSEQsQUErSEMsQ0EvSHdDLEVBQUUsQ0FBQyxTQUFTLEdBK0hwRDtrQkEvSG9CLFdBQVciLCJmaWxlIjoiIiwic291cmNlUm9vdCI6Ii8iLCJzb3VyY2VzQ29udGVudCI6WyJcclxuaW1wb3J0IExpc3QgZnJvbSBcIi4vbW9kdWxlL1JhbmtMaXN0L0xpc3RcIjtcclxuY29uc3QgeyBjY2NsYXNzLCBwcm9wZXJ0eSB9ID0gY2MuX2RlY29yYXRvcjtcclxuLy/mjpLooYzmppxcclxuQGNjY2xhc3NcclxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgUmFua01hbmFnZXIgZXh0ZW5kcyBjYy5Db21wb25lbnQge1xyXG4gICAgQHByb3BlcnR5KGNjLk5vZGUpICAgICAgICAgIC8v55So5oi35LiK5pa55aS05YOPXHJcbiAgICBQbGF5ZXI6IGNjLk5vZGUgPSBudWxsO1xyXG4gICAgQHByb3BlcnR5KGNjLk5vZGUpICAgICAgICAgIC8v55So5oi35pyA5LiL5pa55Liq5Lq65L+h5oGvXHJcbiAgICBzZWxmTm9kZTogY2MuTm9kZSA9IG51bGw7XHJcbiAgICBAcHJvcGVydHkoY2MuU3ByaXRlKSAgICAgICAgLy/nlKjmiLflpLTlg4/mjaLlm75cclxuICAgIHBob25lOiBjYy5TcHJpdGUgPSBudWxsO1xyXG4gICAgcHJpdmF0ZSByYW5rTGlzdDogTGlzdDsgICAgIC8v5o6S6KGM5qacXHJcbiAgICB0d2VlbjogY2MuVHdlZW48Y2MuTm9kZT47ICAgLy/mnIDkuIrmlrnnlKjmiLflpLTlg4/liqjnlLtcclxuICAgIGxpc3REYXRhOiBhbnk7ICAgICAgICAgICAgICAvL+aAu+WIl+ihqOS/oeaBr1xyXG4gICAgc2VsZkRhdGE6IGFueTsgICAgICAgICAgICAgIC8v6Ieq5bex5L+h5oGvXHJcbiAgICByYW5rTnVtYmVyOiBudW1iZXI7ICAgICAgICAgLy/nlKjmiLfoh6rlt7HmjpLlkI0g5pyJ5Y+v6IO95LiN5Zyo5o6S6KGM5qac5YaFOTkrXHJcbiAgICByYW5rVG90YWw6IG51bWJlcjsgICAgICAgICAgLy/ojrflj5bmjpLooYzmppznlKjmiLfmlbDph48g546w5Zyo5Li6MTAwXHJcblxyXG4gICAgb25Mb2FkKCkge1xyXG4gICAgICAgIHRoaXMuaW5pdCgpO1xyXG4gICAgfVxyXG4gICAgLy/liJ3lp4vljJbmlbDmja5cclxuICAgIGluaXQoKXtcclxuICAgICAgICB0aGlzLnJhbmtMaXN0ID0gY2MuZmluZChcIlNjcm9sbFZpZXdcIiwgdGhpcy5ub2RlKS5nZXRDb21wb25lbnQoTGlzdCk7XHJcbiAgICAgICAgdGhpcy5QbGF5ZXIuZ2V0Q2hpbGRCeU5hbWUoXCJyYW5rXCIpLmFjdGl2ZSA9IGZhbHNlO1xyXG4gICAgICAgIHRoaXMubGlzdERhdGEgPSBbXTtcclxuICAgICAgICB0aGlzLnNlbGZEYXRhID0gbnVsbDtcclxuICAgICAgICB0aGlzLnJhbmtOdW1iZXIgPSAxMDA7XHJcbiAgICAgICAgdGhpcy5yYW5rVG90YWw9IDEwMDtcclxuICAgICAgICB0aGlzLnNlbGZOb2RlLm9wYWNpdHkgPSAwO1xyXG4gICAgfVxyXG5cclxuICAgIHN0YXJ0KCkge1xyXG4gICAgICAgIHRoaXMuUGxheWVyLmFjdGl2ZSA9IGZhbHNlO1xyXG4gICAgICAgIHRoaXMuZ2V0UmFuaygpO1xyXG4gICAgfVxyXG4gICAgLy/osIPnlKjojrflj5bmjpLooYzmppzmjqXlj6NcclxuICAgIGdldFJhbmsoKXtcclxuICAgICAgICBsZXQgZGF0YUZpbGUgPSB7XHJcbiAgICAgICAgICAgIGxlbmd0aDoxMDBcclxuICAgICAgICB9XHJcbiAgICAgICAgIGNjLmZ4LkdhbWVUb29sLmdldFJhbmsoZGF0YUZpbGUsZGF0YSA9PnRoaXMuZ2V0UmFua0RhdGEoZGF0YSkpO1xyXG4gICAgfVxyXG4gICAgLy/lrp7pmYXorr7nva7mjpLooYzmlbDmja5cclxuICAgIGdldFJhbmtEYXRhKGRhdGEpe1xyXG4gICAgICAgIGlmKGRhdGEpe1xyXG4gICAgICAgICAgICAvLyBjb25zb2xlLmxvZyhkYXRhKTtcclxuICAgICAgICAgICAgY2MuZnguR2FtZVRvb2wuZ2V0UmFua0RhdGEoZGF0YSx0aGlzLDYpO1xyXG4gICAgICAgICAgICB0aGlzLnNldFBpYyh0aGlzLnNlbGZEYXRhLnBpYyk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG4gICAgLy/ov5Tlm57mjInpkq5cclxuICAgIGJhY2tDbGljaygpe1xyXG4gICAgICAgIGNjLmRpcmVjdG9yLmxvYWRTY2VuZShcIkxvYWRTY2VuZVwiKTtcclxuICAgIH1cclxuICAgIC8v5pyA5LiK5pa555So5oi35Yqo55S7XHJcbiAgICBwbGF5ZXJBY3Rpb24oKXtcclxuICAgICAgICAvLy0yNTQgMzc3ICAyMTAgNDUzXHJcbiAgICAgICAgdGhpcy5QbGF5ZXIuZ2V0Q2hpbGRCeU5hbWUoXCJyYW5rXCIpLmFjdGl2ZSA9IGZhbHNlO1xyXG4gICAgICAgIGxldCB0aW1lID0gMTtcclxuICAgICAgICB0aGlzLnR3ZWVuID0gY2MudHdlZW4odGhpcy5QbGF5ZXIpXHJcbiAgICAgICAgLnRvKDIse3Bvc2l0aW9uOmNjLnYzKDIxNSw1MjUsMCl9KVxyXG4gICAgICAgIC5jYWxsKCgpID0+e1xyXG4gICAgICAgICAgICB0aGlzLlBsYXllci5nZXRDaGlsZEJ5TmFtZShcInJhbmtcIikuYWN0aXZlID0gdHJ1ZTtcclxuICAgICAgICAgICAgdGhpcy5QbGF5ZXIuZ2V0Q2hpbGRCeU5hbWUoXCJyYW5rXCIpLmdldENoaWxkQnlOYW1lKFwibnVtYmVyXCIpXHJcbiAgICAgICAgICAgIC5nZXRDb21wb25lbnQoY2MuTGFiZWwpLnN0cmluZyA9ICBwYXJzZUludCh0aW1lKjEwMCArIFwiXCIpICsgXCIlXCI7XHJcbiAgICAgICAgfSlcclxuICAgICAgICAuc3RhcnQoKTtcclxuICAgICAgICB0aW1lID0gKHRoaXMubGlzdERhdGEubGVuZ3RoIC0gdGhpcy5yYW5rTnVtYmVyKS90aGlzLmxpc3REYXRhLmxlbmd0aDtcclxuICAgICAgICBpZih0aGlzLmxpc3REYXRhLmxlbmd0aCA+PSA5OSl7XHJcbiAgICAgICAgICAgIGlmKHRoaXMucmFua051bWJlciA+PSA5OSl7XHJcbiAgICAgICAgICAgICAgICB0aW1lID0gKE1hdGgucmFuZG9tKCkqNDkrMSkvMTAwXHJcbiAgICAgICAgICAgICAgICB2YXIgbWF0Y2hJZCA9IGNjLnN5cy5sb2NhbFN0b3JhZ2UuZ2V0SXRlbShcIm1hdGNoTnVtYmVyXCIpO1xyXG4gICAgICAgICAgICAgICAgaWYobWF0Y2hJZCA9PSBudWxsIHx8IG1hdGNoSWQgPT0gdW5kZWZpbmVkKXtcclxuICAgICAgICAgICAgICAgICAgICB0aW1lID0gMDtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgICAgICAgaWYodGhpcy50d2Vlbil0aGlzLnR3ZWVuLnN0b3AoKTtcclxuICAgICAgICAgICAgdGhpcy5QbGF5ZXIuZ2V0Q2hpbGRCeU5hbWUoXCJyYW5rXCIpLmFjdGl2ZSA9IHRydWU7XHJcbiAgICAgICAgICAgIHRoaXMuUGxheWVyLmdldENoaWxkQnlOYW1lKFwicmFua1wiKS5nZXRDaGlsZEJ5TmFtZShcIm51bWJlclwiKVxyXG4gICAgICAgICAgICAuZ2V0Q29tcG9uZW50KGNjLkxhYmVsKS5zdHJpbmcgPSAgcGFyc2VJbnQodGltZSoxMDAgKyBcIlwiKSArIFwiJVwiO1xyXG4gICAgICAgIH0sIHRpbWUqMjAwMCk7XHJcblxyXG4gICAgfVxyXG4gICAgLy/orr7nva7lpLTlg48gIOWkhOeQhueahOmAu+i+keavlOi+g+Wkmu+8jOS4jeeUqOWFrOWFseexu+eahOS6hlxyXG4gICAgcHVibGljIHNldFBpYyhwaWMpe1xyXG4gICAgICAgIHRoaXMucGhvbmUubm9kZS5wYXJlbnQuZ2V0Q2hpbGRCeU5hbWUoXCJpY29uXCIpLmFjdGl2ZSA9IGZhbHNlO1xyXG4gICAgICAgIHRoaXMucGhvbmUubm9kZS5hY3RpdmUgPSBmYWxzZTtcclxuICAgICAgICB0aGlzLlBsYXllci5hY3RpdmUgPSB0cnVlO1xyXG4gICAgICAgIHRoaXMuUGxheWVyLm9wYWNpdHkgPSAwO1xyXG4gICAgICAgIHRoaXMuUGxheWVyLmdldENoaWxkQnlOYW1lKFwibWFza1wiKS5nZXRDaGlsZEJ5TmFtZShcImljb25cIikuYWN0aXZlID0gZmFsc2U7XHJcbiAgICAgICAgdGhpcy5QbGF5ZXIuZ2V0Q2hpbGRCeU5hbWUoXCJtYXNrXCIpLmdldENoaWxkQnlOYW1lKFwicGhvbmVcIikuYWN0aXZlID0gZmFsc2U7XHJcbiAgICAgICAgZmV0Y2gocGljKVxyXG4gICAgICAgIC50aGVuKHJlc3BvbnNlID0+IHtcclxuICAgICAgICAgICAgcmV0dXJuIHJlc3BvbnNlLmhlYWRlcnMuZ2V0KCdDb250ZW50LUxlbmd0aCcpO1xyXG4gICAgICAgIH0pXHJcbiAgICAgICAgLnRoZW4oZXJyTm8gPT4ge1xyXG4gICAgICAgICAgICBpZihlcnJObyA9PSBcIjUwOTNcIil7XHJcbiAgICAgICAgICAgICAgICB0aGlzLnBob25lLm5vZGUucGFyZW50LmdldENoaWxkQnlOYW1lKFwiaWNvblwiKS5hY3RpdmUgPSB0cnVlO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5QbGF5ZXIuZ2V0Q2hpbGRCeU5hbWUoXCJtYXNrXCIpLmdldENoaWxkQnlOYW1lKFwiaWNvblwiKS5hY3RpdmUgPSB0cnVlO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfSlcclxuICAgICAgICAuY2F0Y2goZXJyb3IgPT4ge1xyXG4gICAgICAgICAgICAvLyBjb25zb2xlLmVycm9yKCdFcnJvciBmZXRjaGluZyBYLUluZm86JywgZXJyb3IpO1xyXG4gICAgICAgIH0pO1xyXG4gICAgICAgIHZhciBzZWxmID0gdGhpcztcclxuICAgICAgICBjYy5hc3NldE1hbmFnZXIubG9hZFJlbW90ZShwaWMsIHtleHQ6Jy5wbmcnfSwoZXJyLCB0ZXh0dXJlOmNjLlRleHR1cmUyRCkgPT4ge1xyXG4gICAgICAgICAgICBzZWxmLlBsYXllci5vcGFjaXR5ID0gMjU1O1xyXG4gICAgICAgICAgICBpZih0ZXh0dXJlKXtcclxuICAgICAgICAgICAgICAgIHNlbGYucGhvbmUubm9kZS5hY3RpdmUgPSB0cnVlO1xyXG4gICAgICAgICAgICAgICAgc2VsZi5waG9uZS5zcHJpdGVGcmFtZSA9IG5ldyBjYy5TcHJpdGVGcmFtZSh0ZXh0dXJlKTtcclxuICAgICAgICAgICAgICAgIHNlbGYuUGxheWVyLmdldENoaWxkQnlOYW1lKFwibWFza1wiKS5nZXRDaGlsZEJ5TmFtZShcImljb25cIikuYWN0aXZlID0gZmFsc2U7XHJcbiAgICAgICAgICAgICAgICBzZWxmLlBsYXllci5nZXRDaGlsZEJ5TmFtZShcIm1hc2tcIikuZ2V0Q2hpbGRCeU5hbWUoXCJwaG9uZVwiKS5hY3RpdmUgPSB0cnVlO1xyXG4gICAgICAgICAgICAgICAgc2VsZi5QbGF5ZXIuZ2V0Q2hpbGRCeU5hbWUoXCJtYXNrXCIpLmdldENoaWxkQnlOYW1lKFwicGhvbmVcIikuZ2V0Q29tcG9uZW50KGNjLlNwcml0ZSlcclxuICAgICAgICAgICAgICAgIC5zcHJpdGVGcmFtZSA9IG5ldyBjYy5TcHJpdGVGcmFtZSh0ZXh0dXJlKTtcclxuICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgIHNlbGYucGxheWVyQWN0aW9uKCk7XHJcbiAgICAgICAgICAgICAgICB9LCA1MDApO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGVsc2V7XHJcbiAgICAgICAgICAgICAgICBzZWxmLlBsYXllci5nZXRDaGlsZEJ5TmFtZShcIm1hc2tcIikuZ2V0Q2hpbGRCeU5hbWUoXCJpY29uXCIpLmFjdGl2ZSA9IHRydWU7XHJcbiAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICBzZWxmLnBsYXllckFjdGlvbigpO1xyXG4gICAgICAgICAgICAgICAgfSwgNTAwKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBcclxuICAgICAgICB9KVxyXG4gICAgfVxyXG5cclxufVxyXG4iXX0= -//------QC-SOURCE-SPLIT------ - - (function() { - var nodeEnv = typeof require !== 'undefined' && typeof process !== 'undefined'; - var __module = nodeEnv ? module : {exports:{}}; - var __filename = 'preview-scripts/assets/Script/GameOver.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, '805c6nf399HWZeuWnNB9CTH', 'GameOver'); -// Script/GameOver.ts - -"use strict"; -var __extends = (this && this.__extends) || (function () { - var extendStatics = function (d, b) { - extendStatics = Object.setPrototypeOf || - ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) || - function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; }; - return extendStatics(d, b); - }; - return function (d, b) { - extendStatics(d, b); - function __() { this.constructor = d; } - d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); - }; -})(); -var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) { - var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; - if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc); - else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; - return c > 3 && r && Object.defineProperty(target, key, r), r; -}; -Object.defineProperty(exports, "__esModule", { value: true }); -var _a = cc._decorator, ccclass = _a.ccclass, property = _a.property; -var NewClass = /** @class */ (function (_super) { - __extends(NewClass, _super); - function NewClass() { - var _this = _super !== null && _super.apply(this, arguments) || this; - _this.count = null; - _this.time = null; - _this.selfNode = null; - _this.one = null; - _this.two = null; - _this.three = null; - _this.four = null; - _this.five = null; - return _this; - } - // onLoad () {} - NewClass.prototype.start = function () { - this.count.string = cc.fx.GameConfig.GM_INFO.score + ""; - var yes = 0; - var successList = cc.fx.GameConfig.GM_INFO.successList; - if (successList.length > 0) { - var success = 0; - for (var i = 0; i < successList.length; i++) { - if (successList[i] == true) - success += 1; - } - yes = success / successList.length; - } - yes = Math.floor(yes * 1000) / 10; - this.time.string = yes + "%"; - this.init(); - }; - //初始化数据 - NewClass.prototype.init = function () { - this.listData = []; - this.selfData = null; - this.one.active = false; - this.two.active = false; - this.three.active = false; - this.four.active = false; - this.five.active = false; - var urlNow = window.location.href; - if (this.containsTrain(urlNow)) { - this.node.getChildByName("again").active = false; - this.node.getChildByName("back").active = false; - this.node.getChildByName("finishi").active = true; - this.setLocalStorage(); - } - else { - this.setLocalStorage(); - this.node.getChildByName("again").active = true; - this.node.getChildByName("back").active = true; - this.node.getChildByName("finishi").active = false; - } - this.getRank(); - }; - NewClass.prototype.setLocalStorage = function () { - var timeData = cc.fx.GameConfig.TIME_INFO.totalTime; - var today = new Date().toLocaleDateString(); - var name = "success_" + today + "_" + cc.fx.GameConfig.GM_INFO.scode + "_" + cc.fx.GameConfig.GM_INFO.gameId; - localStorage.setItem(name, JSON.stringify({ success: true })); - }; - //打开排行榜 - NewClass.prototype.openRank = function () { - cc.director.loadScene("RankScene"); - }; - //重新开始玩 - NewClass.prototype.again = function () { - cc.fx.GameConfig.GM_INFO.round = 0; - cc.fx.GameConfig.GM_INFO.level = 0; - cc.fx.GameConfig.GM_INFO.stepTimeList = 0; - cc.fx.GameConfig.GM_INFO.successList = []; - cc.fx.GameConfig.GM_INFO.fen = 0; - cc.fx.GameConfig.GM_INFO.score = 0; - cc.fx.GameConfig.GM_INFO.min_Steps = 0; - cc.fx.GameConfig.GM_INFO.min_Time = 0; - cc.fx.GameConfig.TIME_INFO.totalTime = 120; - cc.director.loadScene("GameScene"); - }; - //判断来源 - NewClass.prototype.containsTrain = function (str) { - return /from=train/i.test(str); - }; - //获取排行榜 - NewClass.prototype.getRank = function () { - var _this = this; - //获取排行榜数据 所需数据量 - var dataFile = { - length: 5 - }; - cc.fx.GameTool.getRank(dataFile, function (data) { return _this.getRankData(data); }); - }; - //打开排行榜 - NewClass.prototype.jumpFinishi = function () { - var url = "https://train.sparkus.cn/poster/game/" + cc.fx.GameConfig.GM_INFO.scode + "?suc=1"; - window.location.href = url; - }; - //设置排行信息 - NewClass.prototype.getRankData = function (data) { - if (data) { - cc.fx.GameTool.getRankData(data, this, 4); - cc.fx.GameTool.setPic(this.selfNode.getChildByName("pic").getChildByName("icon"), this.selfData.pic); - var length = this.listData.length - 1; - if (length > 4) - length = 4; - for (var i = 0; i <= length; i++) { - this.setRank(i, this.listData[i]); - } - } - }; - //根据内容填充排行榜 - NewClass.prototype.setRank = function (num, data) { - var _this = this; - if (!data) { - return; - } - var hitNode = null; - if (num == 0) { - hitNode = this.one; - } - else if (num == 1) { - hitNode = this.two; - } - else if (num == 2) { - hitNode = this.three; - } - else if (num == 3) { - hitNode = this.four; - } - else if (num == 4) { - hitNode = this.five; - } - var trun = num + 1; - for (var i = 0; i < trun; i++) { - if (this.listData[i] && this.listData[i].nickName == cc.fx.GameConfig.GM_INFO.nickName) { - trun = i + 1; - break; - } - else if (!this.listData[i] == null) { - trun = i * 2; - break; - } - this.node.color = cc.color(this.listData[0], this.listData[1], this.listData[2]); - cc.tween(this.node) - .to(0.5, { scale: 2 }) - .by(1, { opacity: 0 }) - .delay(0.5) - .call(function () { - _this.node.scale = 1; - _this.node.opacity = 255; - _this.node.color = cc.color(255, 255, 255); - }) - .start(); - } - hitNode.getChildByName("num").getComponent(cc.Label).string = num + ""; - cc.tween(hitNode.getChildByName("num").getComponent(cc.Label)) - .to(0.5, { string: trun + "" }) - .start(); - var record = cc.fx.GameConfi.GM_INFO.score; - if (data.score >= record) { - this.selfData = data; - this.selfNode.active = true; - } - if (hitNode) { - hitNode.active = true; - if (data.nickName.length >= 4) - data.nickName = cc.fx.GameTool.subName(data.nickName, 4); - hitNode.getChildByName("name").getComponent(cc.Label).string = data.nickName; - hitNode.getChildByName("total").getComponent(cc.Label).string = data.score; - cc.fx.GameTool.setPic(hitNode.getChildByName("pic").getChildByName("icon"), data.pic); - } - }; - __decorate([ - property(cc.Label) - ], NewClass.prototype, "count", void 0); - __decorate([ - property(cc.Label) - ], NewClass.prototype, "time", void 0); - __decorate([ - property(cc.Node) - ], NewClass.prototype, "selfNode", void 0); - __decorate([ - property(cc.Node) - ], NewClass.prototype, "one", void 0); - __decorate([ - property(cc.Node) - ], NewClass.prototype, "two", void 0); - __decorate([ - property(cc.Node) - ], NewClass.prototype, "three", void 0); - __decorate([ - property(cc.Node) - ], NewClass.prototype, "four", void 0); - __decorate([ - property(cc.Node) - ], NewClass.prototype, "five", void 0); - NewClass = __decorate([ - ccclass - ], NewClass); - return NewClass; -}(cc.Component)); -exports.default = NewClass; - -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,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImFzc2V0c1xcU2NyaXB0XFxHYW1lT3Zlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFDTSxJQUFBLEtBQXNCLEVBQUUsQ0FBQyxVQUFVLEVBQWxDLE9BQU8sYUFBQSxFQUFFLFFBQVEsY0FBaUIsQ0FBQztBQUcxQztJQUFzQyw0QkFBWTtJQUFsRDtRQUFBLHFFQXFMQztRQW5MRyxXQUFLLEdBQWEsSUFBSSxDQUFDO1FBRXZCLFVBQUksR0FBYSxJQUFJLENBQUM7UUFFdEIsY0FBUSxHQUFZLElBQUksQ0FBQztRQUV6QixTQUFHLEdBQVksSUFBSSxDQUFDO1FBRXBCLFNBQUcsR0FBWSxJQUFJLENBQUM7UUFFcEIsV0FBSyxHQUFZLElBQUksQ0FBQztRQUV0QixVQUFJLEdBQVksSUFBSSxDQUFDO1FBRXJCLFVBQUksR0FBWSxJQUFJLENBQUM7O0lBcUt6QixDQUFDO0lBbEtHLGVBQWU7SUFDZix3QkFBSyxHQUFMO1FBQ0ksSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNLEdBQUcsRUFBRSxDQUFDLEVBQUUsQ0FBQyxVQUFVLENBQUMsT0FBTyxDQUFDLEtBQUssR0FBRyxFQUFFLENBQUM7UUFDeEQsSUFBSSxHQUFHLEdBQUcsQ0FBQyxDQUFDO1FBQ1osSUFBSSxXQUFXLEdBQUcsRUFBRSxDQUFDLEVBQUUsQ0FBQyxVQUFVLENBQUMsT0FBTyxDQUFDLFdBQVcsQ0FBQztRQUN2RCxJQUFHLFdBQVcsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFDO1lBQ3RCLElBQUksT0FBTyxHQUFHLENBQUMsQ0FBQztZQUNoQixLQUFJLElBQUksQ0FBQyxHQUFDLENBQUMsRUFBRSxDQUFDLEdBQUMsV0FBVyxDQUFDLE1BQU0sRUFBRSxDQUFDLEVBQUUsRUFBQztnQkFDbkMsSUFBRyxXQUFXLENBQUMsQ0FBQyxDQUFDLElBQUksSUFBSTtvQkFBRSxPQUFPLElBQUksQ0FBQyxDQUFDO2FBQzNDO1lBQ0QsR0FBRyxHQUFHLE9BQU8sR0FBQyxXQUFXLENBQUMsTUFBTSxDQUFDO1NBQ3BDO1FBQ0QsR0FBRyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsR0FBRyxHQUFHLElBQUksQ0FBQyxHQUFDLEVBQUUsQ0FBQztRQUNoQyxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sR0FBSyxHQUFHLEdBQUcsR0FBRyxDQUFDO1FBQy9CLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQztJQUVoQixDQUFDO0lBQ0QsT0FBTztJQUNQLHVCQUFJLEdBQUo7UUFDSSxJQUFJLENBQUMsUUFBUSxHQUFHLEVBQUUsQ0FBQztRQUNuQixJQUFJLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQztRQUNyQixJQUFJLENBQUMsR0FBRyxDQUFDLE1BQU0sR0FBRyxLQUFLLENBQUM7UUFDeEIsSUFBSSxDQUFDLEdBQUcsQ0FBQyxNQUFNLEdBQUcsS0FBSyxDQUFDO1FBQ3hCLElBQUksQ0FBQyxLQUFLLENBQUMsTUFBTSxHQUFHLEtBQUssQ0FBQztRQUMxQixJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sR0FBRyxLQUFLLENBQUM7UUFDekIsSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLEdBQUcsS0FBSyxDQUFDO1FBQ3pCLElBQUksTUFBTSxHQUFHLE1BQU0sQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDO1FBQ2xDLElBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQyxNQUFNLENBQUMsRUFBQztZQUMxQixJQUFJLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxNQUFNLEdBQUcsS0FBSyxDQUFDO1lBQ2pELElBQUksQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLE1BQU0sQ0FBQyxDQUFDLE1BQU0sR0FBRyxLQUFLLENBQUM7WUFDaEQsSUFBSSxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsU0FBUyxDQUFDLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQztZQUNsRCxJQUFJLENBQUMsZUFBZSxFQUFFLENBQUM7U0FDMUI7YUFDRztZQUNBLElBQUksQ0FBQyxlQUFlLEVBQUUsQ0FBQztZQUN2QixJQUFJLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFDO1lBQ2hELElBQUksQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLE1BQU0sQ0FBQyxDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUM7WUFDL0MsSUFBSSxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsU0FBUyxDQUFDLENBQUMsTUFBTSxHQUFHLEtBQUssQ0FBQztTQUN0RDtRQUVELElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQztJQUNuQixDQUFDO0lBRUQsa0NBQWUsR0FBZjtRQUNJLElBQUksUUFBUSxHQUFHLEVBQUUsQ0FBQyxFQUFFLENBQUMsVUFBVSxDQUFDLFNBQVMsQ0FBQyxTQUFTLENBQUM7UUFFcEQsSUFBTSxLQUFLLEdBQUcsSUFBSSxJQUFJLEVBQUUsQ0FBQyxrQkFBa0IsRUFBRSxDQUFDO1FBQzlDLElBQUksSUFBSSxHQUFHLGFBQVcsS0FBSyxTQUFJLEVBQUUsQ0FBQyxFQUFFLENBQUMsVUFBVSxDQUFDLE9BQU8sQ0FBQyxLQUFLLFNBQUksRUFBRSxDQUFDLEVBQUUsQ0FBQyxVQUFVLENBQUMsT0FBTyxDQUFDLE1BQVEsQ0FBQTtRQUNsRyxZQUFZLENBQUMsT0FBTyxDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsU0FBUyxDQUFDLEVBQUMsT0FBTyxFQUFDLElBQUksRUFBQyxDQUFDLENBQUMsQ0FBQztJQUMvRCxDQUFDO0lBRUQsT0FBTztJQUNQLDJCQUFRLEdBQVI7UUFDSSxFQUFFLENBQUMsUUFBUSxDQUFDLFNBQVMsQ0FBQyxXQUFXLENBQUMsQ0FBQztJQUN2QyxDQUFDO0lBQ0QsT0FBTztJQUNQLHdCQUFLLEdBQUw7UUFDSSxFQUFFLENBQUMsRUFBRSxDQUFDLFVBQVUsQ0FBQyxPQUFPLENBQUMsS0FBSyxHQUFHLENBQUMsQ0FBQztRQUNuQyxFQUFFLENBQUMsRUFBRSxDQUFDLFVBQVUsQ0FBQyxPQUFPLENBQUMsS0FBSyxHQUFHLENBQUMsQ0FBQztRQUNuQyxFQUFFLENBQUMsRUFBRSxDQUFDLFVBQVUsQ0FBQyxPQUFPLENBQUMsWUFBWSxHQUFHLENBQUMsQ0FBQztRQUMxQyxFQUFFLENBQUMsRUFBRSxDQUFDLFVBQVUsQ0FBQyxPQUFPLENBQUMsV0FBVyxHQUFHLEVBQUUsQ0FBQztRQUMxQyxFQUFFLENBQUMsRUFBRSxDQUFDLFVBQVUsQ0FBQyxPQUFPLENBQUMsR0FBRyxHQUFHLENBQUMsQ0FBQztRQUNqQyxFQUFFLENBQUMsRUFBRSxDQUFDLFVBQVUsQ0FBQyxPQUFPLENBQUMsS0FBSyxHQUFHLENBQUMsQ0FBQztRQUNuQyxFQUFFLENBQUMsRUFBRSxDQUFDLFVBQVUsQ0FBQyxPQUFPLENBQUMsU0FBUyxHQUFHLENBQUMsQ0FBQztRQUN2QyxFQUFFLENBQUMsRUFBRSxDQUFDLFVBQVUsQ0FBQyxPQUFPLENBQUMsUUFBUSxHQUFHLENBQUMsQ0FBQztRQUN0QyxFQUFFLENBQUMsRUFBRSxDQUFDLFVBQVUsQ0FBQyxTQUFTLENBQUMsU0FBUyxHQUFHLEdBQUcsQ0FBQztRQUMzQyxFQUFFLENBQUMsUUFBUSxDQUFDLFNBQVMsQ0FBQyxXQUFXLENBQUMsQ0FBQztJQUN2QyxDQUFDO0lBQ0QsTUFBTTtJQUNOLGdDQUFhLEdBQWIsVUFBYyxHQUFHO1FBQ2IsT0FBTyxhQUFhLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQ25DLENBQUM7SUFDRCxPQUFPO0lBQ1AsMEJBQU8sR0FBUDtRQUFBLGlCQU1DO1FBTEcsZ0JBQWdCO1FBQ2hCLElBQUksUUFBUSxHQUFHO1lBQ1gsTUFBTSxFQUFDLENBQUM7U0FDWCxDQUFBO1FBQ0EsRUFBRSxDQUFDLEVBQUUsQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLFFBQVEsRUFBQyxVQUFBLElBQUksSUFBRyxPQUFBLEtBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLEVBQXRCLENBQXNCLENBQUMsQ0FBQztJQUNwRSxDQUFDO0lBQ0QsT0FBTztJQUNQLDhCQUFXLEdBQVg7UUFDSSxJQUFJLEdBQUcsR0FBRyx1Q0FBdUMsR0FBRyxFQUFFLENBQUMsRUFBRSxDQUFDLFVBQVUsQ0FBQyxPQUFPLENBQUMsS0FBSyxHQUFHLFFBQVEsQ0FBQztRQUM5RixNQUFNLENBQUMsUUFBUSxDQUFDLElBQUksR0FBRyxHQUFHLENBQUM7SUFDL0IsQ0FBQztJQUNELFFBQVE7SUFDUiw4QkFBVyxHQUFYLFVBQVksSUFBSTtRQUNaLElBQUcsSUFBSSxFQUFDO1lBQ0gsRUFBRSxDQUFDLEVBQUUsQ0FBQyxRQUFRLENBQUMsV0FBVyxDQUFDLElBQUksRUFBQyxJQUFJLEVBQUMsQ0FBQyxDQUFDLENBQUM7WUFDeEMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsY0FBYyxDQUFDLEtBQUssQ0FBQyxDQUFDLGNBQWMsQ0FBQyxNQUFNLENBQUMsRUFBQyxJQUFJLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1lBQ3JHLElBQUksTUFBTSxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsTUFBTSxHQUFDLENBQUMsQ0FBQztZQUFDLElBQUcsTUFBTSxHQUFHLENBQUM7Z0JBQUUsTUFBTSxHQUFHLENBQUMsQ0FBQztZQUMvRCxLQUFJLElBQUksQ0FBQyxHQUFDLENBQUMsRUFBQyxDQUFDLElBQUUsTUFBTSxFQUFDLENBQUMsRUFBRSxFQUFDO2dCQUN0QixJQUFJLENBQUMsT0FBTyxDQUFDLENBQUMsRUFBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7YUFDcEM7U0FDSjtJQUNMLENBQUM7SUFDRCxXQUFXO0lBQ1gsMEJBQU8sR0FBUCxVQUFRLEdBQUcsRUFBQyxJQUFJO1FBQWhCLGlCQWdFQztRQS9ERyxJQUFHLENBQUMsSUFBSSxFQUFDO1lBQ0wsT0FBTztTQUNWO1FBRUQsSUFBSSxPQUFPLEdBQUcsSUFBSSxDQUFDO1FBQ25CLElBQUcsR0FBRyxJQUFJLENBQUMsRUFBQztZQUNSLE9BQU8sR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDO1NBQ3RCO2FBQ0ksSUFBRyxHQUFHLElBQUksQ0FBQyxFQUFDO1lBQ2IsT0FBTyxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUM7U0FDdEI7YUFDSSxJQUFHLEdBQUcsSUFBSSxDQUFDLEVBQUM7WUFDYixPQUFPLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQztTQUN4QjthQUNJLElBQUcsR0FBRyxJQUFJLENBQUMsRUFBQztZQUNiLE9BQU8sR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDO1NBQ3ZCO2FBQ0ksSUFBRyxHQUFHLElBQUksQ0FBQyxFQUFDO1lBQ2IsT0FBTyxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUM7U0FDdkI7UUFFRCxJQUFJLElBQUksR0FBRyxHQUFHLEdBQUcsQ0FBQyxDQUFDO1FBQ25CLEtBQUksSUFBSSxDQUFDLEdBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRSxJQUFJLEVBQUUsQ0FBQyxFQUFFLEVBQUM7WUFDdEIsSUFBRyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxJQUFJLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsUUFBUSxJQUFJLEVBQUUsQ0FBQyxFQUFFLENBQUMsVUFBVSxDQUFDLE9BQU8sQ0FBQyxRQUFRLEVBQUM7Z0JBQ2xGLElBQUksR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDO2dCQUNiLE1BQU07YUFDVDtpQkFDSSxJQUFHLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsSUFBSSxJQUFJLEVBQUU7Z0JBQy9CLElBQUksR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDO2dCQUNiLE1BQU07YUFDVDtZQUNELElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxHQUFHLEVBQUUsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsRUFBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxFQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUMvRSxFQUFFLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUM7aUJBQ2xCLEVBQUUsQ0FBQyxHQUFHLEVBQUMsRUFBQyxLQUFLLEVBQUMsQ0FBQyxFQUFDLENBQUM7aUJBQ2pCLEVBQUUsQ0FBQyxDQUFDLEVBQUMsRUFBQyxPQUFPLEVBQUMsQ0FBQyxFQUFDLENBQUM7aUJBQ2pCLEtBQUssQ0FBQyxHQUFHLENBQUM7aUJBQ1YsSUFBSSxDQUFDO2dCQUNGLEtBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxHQUFHLENBQUMsQ0FBQztnQkFDcEIsS0FBSSxDQUFDLElBQUksQ0FBQyxPQUFPLEdBQUcsR0FBRyxDQUFDO2dCQUN4QixLQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssR0FBRyxFQUFFLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBQyxHQUFHLEVBQUMsR0FBRyxDQUFDLENBQUM7WUFDNUMsQ0FBQyxDQUFDO2lCQUNELEtBQUssRUFBRSxDQUFDO1NBQ1o7UUFFRCxPQUFPLENBQUMsY0FBYyxDQUFDLEtBQUssQ0FBQyxDQUFDLFlBQVksQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLENBQUMsTUFBTSxHQUFHLEdBQUcsR0FBRyxFQUFFLENBQUM7UUFDdkUsRUFBRSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsY0FBYyxDQUFDLEtBQUssQ0FBQyxDQUFDLFlBQVksQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLENBQUM7YUFDN0QsRUFBRSxDQUFDLEdBQUcsRUFBQyxFQUFDLE1BQU0sRUFBQyxJQUFJLEdBQUMsRUFBRSxFQUFDLENBQUM7YUFDeEIsS0FBSyxFQUFFLENBQUM7UUFFVCxJQUFJLE1BQU0sR0FBRyxFQUFFLENBQUMsRUFBRSxDQUFDLFNBQVMsQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDO1FBQzNDLElBQUcsSUFBSSxDQUFDLEtBQUssSUFBSSxNQUFNLEVBQUM7WUFDcEIsSUFBSSxDQUFDLFFBQVEsR0FBRyxJQUFJLENBQUM7WUFDckIsSUFBSSxDQUFDLFFBQVEsQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFDO1NBQy9CO1FBRUQsSUFBRyxPQUFPLEVBQUM7WUFDUCxPQUFPLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQztZQUN0QixJQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsTUFBTSxJQUFJLENBQUM7Z0JBQ3hCLElBQUksQ0FBQyxRQUFRLEdBQUcsRUFBRSxDQUFDLEVBQUUsQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxRQUFRLEVBQUMsQ0FBQyxDQUFDLENBQUM7WUFDNUQsT0FBTyxDQUFDLGNBQWMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxZQUFZLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDO1lBQzdFLE9BQU8sQ0FBQyxjQUFjLENBQUMsT0FBTyxDQUFDLENBQUMsWUFBWSxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQztZQUMxRSxFQUFFLENBQUMsRUFBRSxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLGNBQWMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxjQUFjLENBQUMsTUFBTSxDQUFDLEVBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1NBQ3pGO0lBQ0wsQ0FBQztJQWxMRDtRQURDLFFBQVEsQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDOzJDQUNJO0lBRXZCO1FBREMsUUFBUSxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUM7MENBQ0c7SUFFdEI7UUFEQyxRQUFRLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQzs4Q0FDTztJQUV6QjtRQURDLFFBQVEsQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDO3lDQUNFO0lBRXBCO1FBREMsUUFBUSxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUM7eUNBQ0U7SUFFcEI7UUFEQyxRQUFRLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQzsyQ0FDSTtJQUV0QjtRQURDLFFBQVEsQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDOzBDQUNHO0lBRXJCO1FBREMsUUFBUSxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUM7MENBQ0c7SUFoQkosUUFBUTtRQUQ1QixPQUFPO09BQ2EsUUFBUSxDQXFMNUI7SUFBRCxlQUFDO0NBckxELEFBcUxDLENBckxxQyxFQUFFLENBQUMsU0FBUyxHQXFMakQ7a0JBckxvQixRQUFRIiwiZmlsZSI6IiIsInNvdXJjZVJvb3QiOiIvIiwic291cmNlc0NvbnRlbnQiOlsiXHJcbmNvbnN0IHtjY2NsYXNzLCBwcm9wZXJ0eX0gPSBjYy5fZGVjb3JhdG9yO1xyXG5cclxuQGNjY2xhc3NcclxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgTmV3Q2xhc3MgZXh0ZW5kcyBjYy5Db21wb25lbnQge1xyXG4gICAgQHByb3BlcnR5KGNjLkxhYmVsKVxyXG4gICAgY291bnQ6IGNjLkxhYmVsID0gbnVsbDtcclxuICAgIEBwcm9wZXJ0eShjYy5MYWJlbClcclxuICAgIHRpbWU6IGNjLkxhYmVsID0gbnVsbDtcclxuICAgIEBwcm9wZXJ0eShjYy5Ob2RlKVxyXG4gICAgc2VsZk5vZGU6IGNjLk5vZGUgPSBudWxsO1xyXG4gICAgQHByb3BlcnR5KGNjLk5vZGUpXHJcbiAgICBvbmU6IGNjLk5vZGUgPSBudWxsO1xyXG4gICAgQHByb3BlcnR5KGNjLk5vZGUpXHJcbiAgICB0d286IGNjLk5vZGUgPSBudWxsO1xyXG4gICAgQHByb3BlcnR5KGNjLk5vZGUpXHJcbiAgICB0aHJlZTogY2MuTm9kZSA9IG51bGw7XHJcbiAgICBAcHJvcGVydHkoY2MuTm9kZSlcclxuICAgIGZvdXI6IGNjLk5vZGUgPSBudWxsO1xyXG4gICAgQHByb3BlcnR5KGNjLk5vZGUpXHJcbiAgICBmaXZlOiBjYy5Ob2RlID0gbnVsbDtcclxuICAgIGxpc3REYXRhOiBhbnk7XHJcbiAgICBzZWxmRGF0YTogYW55O1xyXG4gICAgLy8gb25Mb2FkICgpIHt9XHJcbiAgICBzdGFydCAoKSB7XHJcbiAgICAgICAgdGhpcy5jb3VudC5zdHJpbmcgPSBjYy5meC5HYW1lQ29uZmlnLkdNX0lORk8uc2NvcmUgKyBcIlwiO1xyXG4gICAgICAgIHZhciB5ZXMgPSAwO1xyXG4gICAgICAgIHZhciBzdWNjZXNzTGlzdCA9IGNjLmZ4LkdhbWVDb25maWcuR01fSU5GTy5zdWNjZXNzTGlzdDtcclxuICAgICAgICBpZihzdWNjZXNzTGlzdC5sZW5ndGggPiAwKXtcclxuICAgICAgICAgICAgdmFyIHN1Y2Nlc3MgPSAwO1xyXG4gICAgICAgICAgICBmb3IobGV0IGk9MDsgaTxzdWNjZXNzTGlzdC5sZW5ndGg7IGkrKyl7XHJcbiAgICAgICAgICAgICAgICBpZihzdWNjZXNzTGlzdFtpXSA9PSB0cnVlKSBzdWNjZXNzICs9IDE7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgeWVzID0gc3VjY2Vzcy9zdWNjZXNzTGlzdC5sZW5ndGg7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHllcyA9IE1hdGguZmxvb3IoeWVzICogMTAwMCkvMTA7XHJcbiAgICAgICAgdGhpcy50aW1lLnN0cmluZyA9ICAgeWVzICsgXCIlXCI7XHJcbiAgICAgICAgdGhpcy5pbml0KCk7XHJcbiAgICAgICBcclxuICAgIH0gICBcclxuICAgIC8v5Yid5aeL5YyW5pWw5o2uXHJcbiAgICBpbml0KCl7XHJcbiAgICAgICAgdGhpcy5saXN0RGF0YSA9IFtdO1xyXG4gICAgICAgIHRoaXMuc2VsZkRhdGEgPSBudWxsO1xyXG4gICAgICAgIHRoaXMub25lLmFjdGl2ZSA9IGZhbHNlO1xyXG4gICAgICAgIHRoaXMudHdvLmFjdGl2ZSA9IGZhbHNlO1xyXG4gICAgICAgIHRoaXMudGhyZWUuYWN0aXZlID0gZmFsc2U7XHJcbiAgICAgICAgdGhpcy5mb3VyLmFjdGl2ZSA9IGZhbHNlO1xyXG4gICAgICAgIHRoaXMuZml2ZS5hY3RpdmUgPSBmYWxzZTtcclxuICAgICAgICB2YXIgdXJsTm93ID0gd2luZG93LmxvY2F0aW9uLmhyZWY7XHJcbiAgICAgICAgaWYodGhpcy5jb250YWluc1RyYWluKHVybE5vdykpe1xyXG4gICAgICAgICAgICB0aGlzLm5vZGUuZ2V0Q2hpbGRCeU5hbWUoXCJhZ2FpblwiKS5hY3RpdmUgPSBmYWxzZTtcclxuICAgICAgICAgICAgdGhpcy5ub2RlLmdldENoaWxkQnlOYW1lKFwiYmFja1wiKS5hY3RpdmUgPSBmYWxzZTtcclxuICAgICAgICAgICAgdGhpcy5ub2RlLmdldENoaWxkQnlOYW1lKFwiZmluaXNoaVwiKS5hY3RpdmUgPSB0cnVlO1xyXG4gICAgICAgICAgICB0aGlzLnNldExvY2FsU3RvcmFnZSgpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNle1xyXG4gICAgICAgICAgICB0aGlzLnNldExvY2FsU3RvcmFnZSgpO1xyXG4gICAgICAgICAgICB0aGlzLm5vZGUuZ2V0Q2hpbGRCeU5hbWUoXCJhZ2FpblwiKS5hY3RpdmUgPSB0cnVlO1xyXG4gICAgICAgICAgICB0aGlzLm5vZGUuZ2V0Q2hpbGRCeU5hbWUoXCJiYWNrXCIpLmFjdGl2ZSA9IHRydWU7XHJcbiAgICAgICAgICAgIHRoaXMubm9kZS5nZXRDaGlsZEJ5TmFtZShcImZpbmlzaGlcIikuYWN0aXZlID0gZmFsc2U7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICB0aGlzLmdldFJhbmsoKTtcclxuICAgIH1cclxuXHJcbiAgICBzZXRMb2NhbFN0b3JhZ2UoKXtcclxuICAgICAgICBsZXQgdGltZURhdGEgPSBjYy5meC5HYW1lQ29uZmlnLlRJTUVfSU5GTy50b3RhbFRpbWU7XHJcbiAgICAgICAgXHJcbiAgICAgICAgY29uc3QgdG9kYXkgPSBuZXcgRGF0ZSgpLnRvTG9jYWxlRGF0ZVN0cmluZygpO1xyXG4gICAgICAgIHZhciBuYW1lID0gYHN1Y2Nlc3NfJHt0b2RheX1fJHtjYy5meC5HYW1lQ29uZmlnLkdNX0lORk8uc2NvZGV9XyR7Y2MuZnguR2FtZUNvbmZpZy5HTV9JTkZPLmdhbWVJZH1gXHJcbiAgICAgICAgbG9jYWxTdG9yYWdlLnNldEl0ZW0obmFtZSwgSlNPTi5zdHJpbmdpZnkoe3N1Y2Nlc3M6dHJ1ZX0pKTtcclxuICAgIH1cclxuXHJcbiAgICAvL+aJk+W8gOaOkuihjOamnFxyXG4gICAgb3BlblJhbmsoKXtcclxuICAgICAgICBjYy5kaXJlY3Rvci5sb2FkU2NlbmUoXCJSYW5rU2NlbmVcIik7XHJcbiAgICB9XHJcbiAgICAvL+mHjeaWsOW8gOWni+eOqVxyXG4gICAgYWdhaW4oKXtcclxuICAgICAgICBjYy5meC5HYW1lQ29uZmlnLkdNX0lORk8ucm91bmQgPSAwO1xyXG4gICAgICAgIGNjLmZ4LkdhbWVDb25maWcuR01fSU5GTy5sZXZlbCA9IDA7XHJcbiAgICAgICAgY2MuZnguR2FtZUNvbmZpZy5HTV9JTkZPLnN0ZXBUaW1lTGlzdCA9IDA7XHJcbiAgICAgICAgY2MuZnguR2FtZUNvbmZpZy5HTV9JTkZPLnN1Y2Nlc3NMaXN0ID0gW107XHJcbiAgICAgICAgY2MuZnguR2FtZUNvbmZpZy5HTV9JTkZPLmZlbiA9IDA7XHJcbiAgICAgICAgY2MuZnguR2FtZUNvbmZpZy5HTV9JTkZPLnNjb3JlID0gMDtcclxuICAgICAgICBjYy5meC5HYW1lQ29uZmlnLkdNX0lORk8ubWluX1N0ZXBzID0gMDtcclxuICAgICAgICBjYy5meC5HYW1lQ29uZmlnLkdNX0lORk8ubWluX1RpbWUgPSAwO1xyXG4gICAgICAgIGNjLmZ4LkdhbWVDb25maWcuVElNRV9JTkZPLnRvdGFsVGltZSA9IDEyMDtcclxuICAgICAgICBjYy5kaXJlY3Rvci5sb2FkU2NlbmUoXCJHYW1lU2NlbmVcIik7XHJcbiAgICB9XHJcbiAgICAvL+WIpOaWreadpea6kFxyXG4gICAgY29udGFpbnNUcmFpbihzdHIpIHtcclxuICAgICAgICByZXR1cm4gL2Zyb209dHJhaW4vaS50ZXN0KHN0cik7XHJcbiAgICB9XHJcbiAgICAvL+iOt+WPluaOkuihjOamnFxyXG4gICAgZ2V0UmFuaygpe1xyXG4gICAgICAgIC8v6I635Y+W5o6S6KGM5qac5pWw5o2uICDmiYDpnIDmlbDmja7ph49cclxuICAgICAgICBsZXQgZGF0YUZpbGUgPSB7XHJcbiAgICAgICAgICAgIGxlbmd0aDo1XHJcbiAgICAgICAgfVxyXG4gICAgICAgICBjYy5meC5HYW1lVG9vbC5nZXRSYW5rKGRhdGFGaWxlLGRhdGEgPT50aGlzLmdldFJhbmtEYXRhKGRhdGEpKTtcclxuICAgIH1cclxuICAgIC8v5omT5byA5o6S6KGM5qacXHJcbiAgICBqdW1wRmluaXNoaSgpe1xyXG4gICAgICAgIGxldCB1cmwgPSBcImh0dHBzOi8vdHJhaW4uc3Bhcmt1cy5jbi9wb3N0ZXIvZ2FtZS9cIiArIGNjLmZ4LkdhbWVDb25maWcuR01fSU5GTy5zY29kZSArIFwiP3N1Yz0xXCI7XHJcbiAgICAgICAgd2luZG93LmxvY2F0aW9uLmhyZWYgPSB1cmw7XHJcbiAgICB9XHJcbiAgICAvL+iuvue9ruaOkuihjOS/oeaBr1xyXG4gICAgZ2V0UmFua0RhdGEoZGF0YSl7XHJcbiAgICAgICAgaWYoZGF0YSl7XHJcbiAgICAgICAgICAgICBjYy5meC5HYW1lVG9vbC5nZXRSYW5rRGF0YShkYXRhLHRoaXMsNCk7XHJcbiAgICAgICAgICAgICBjYy5meC5HYW1lVG9vbC5zZXRQaWModGhpcy5zZWxmTm9kZS5nZXRDaGlsZEJ5TmFtZShcInBpY1wiKS5nZXRDaGlsZEJ5TmFtZShcImljb25cIiksdGhpcy5zZWxmRGF0YS5waWMpO1xyXG4gICAgICAgICAgICB2YXIgbGVuZ3RoID0gdGhpcy5saXN0RGF0YS5sZW5ndGgtMTsgaWYobGVuZ3RoID4gNCkgbGVuZ3RoID0gNDtcclxuICAgICAgICAgICAgZm9yKGxldCBpPTA7aTw9bGVuZ3RoO2krKyl7XHJcbiAgICAgICAgICAgICAgICB0aGlzLnNldFJhbmsoaSx0aGlzLmxpc3REYXRhW2ldKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgIH1cclxuICAgIC8v5qC55o2u5YaF5a655aGr5YWF5o6S6KGM5qacXHJcbiAgICBzZXRSYW5rKG51bSxkYXRhKXtcclxuICAgICAgICBpZighZGF0YSl7XHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHZhciBoaXROb2RlID0gbnVsbDtcclxuICAgICAgICBpZihudW0gPT0gMCl7XHJcbiAgICAgICAgICAgIGhpdE5vZGUgPSB0aGlzLm9uZTtcclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSBpZihudW0gPT0gMSl7XHJcbiAgICAgICAgICAgIGhpdE5vZGUgPSB0aGlzLnR3bztcclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSBpZihudW0gPT0gMil7XHJcbiAgICAgICAgICAgIGhpdE5vZGUgPSB0aGlzLnRocmVlO1xyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIGlmKG51bSA9PSAzKXtcclxuICAgICAgICAgICAgaGl0Tm9kZSA9IHRoaXMuZm91cjtcclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSBpZihudW0gPT0gNCl7XHJcbiAgICAgICAgICAgIGhpdE5vZGUgPSB0aGlzLmZpdmU7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBsZXQgdHJ1biA9IG51bSArIDE7XHJcbiAgICAgICAgZm9yKGxldCBpPTA7IGk8IHRydW47IGkrKyl7XHJcbiAgICAgICAgICAgIGlmKHRoaXMubGlzdERhdGFbaV0gJiYgdGhpcy5saXN0RGF0YVtpXS5uaWNrTmFtZSA9PSBjYy5meC5HYW1lQ29uZmlnLkdNX0lORk8ubmlja05hbWUpe1xyXG4gICAgICAgICAgICAgICAgdHJ1biA9IGkgKyAxO1xyXG4gICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgZWxzZSBpZighdGhpcy5saXN0RGF0YVtpXSA9PSBudWxsICl7XHJcbiAgICAgICAgICAgICAgICB0cnVuID0gaSAqIDI7XHJcbiAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB0aGlzLm5vZGUuY29sb3IgPSBjYy5jb2xvcih0aGlzLmxpc3REYXRhWzBdLHRoaXMubGlzdERhdGFbMV0sdGhpcy5saXN0RGF0YVsyXSk7XHJcbiAgICAgICAgICAgIGNjLnR3ZWVuKHRoaXMubm9kZSlcclxuICAgICAgICAgICAgLnRvKDAuNSx7c2NhbGU6Mn0pXHJcbiAgICAgICAgICAgIC5ieSgxLHtvcGFjaXR5OjB9KVxyXG4gICAgICAgICAgICAuZGVsYXkoMC41KVxyXG4gICAgICAgICAgICAuY2FsbCgoKSA9PntcclxuICAgICAgICAgICAgICAgIHRoaXMubm9kZS5zY2FsZSA9IDE7XHJcbiAgICAgICAgICAgICAgICB0aGlzLm5vZGUub3BhY2l0eSA9IDI1NTtcclxuICAgICAgICAgICAgICAgIHRoaXMubm9kZS5jb2xvciA9IGNjLmNvbG9yKDI1NSwyNTUsMjU1KTtcclxuICAgICAgICAgICAgfSlcclxuICAgICAgICAgICAgLnN0YXJ0KCk7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBoaXROb2RlLmdldENoaWxkQnlOYW1lKFwibnVtXCIpLmdldENvbXBvbmVudChjYy5MYWJlbCkuc3RyaW5nID0gbnVtICsgXCJcIjtcclxuICAgICAgICBjYy50d2VlbihoaXROb2RlLmdldENoaWxkQnlOYW1lKFwibnVtXCIpLmdldENvbXBvbmVudChjYy5MYWJlbCkpXHJcbiAgICAgICAgLnRvKDAuNSx7c3RyaW5nOnRydW4rXCJcIn0pXHJcbiAgICAgICAgLnN0YXJ0KCk7XHJcblxyXG4gICAgICAgIGxldCByZWNvcmQgPSBjYy5meC5HYW1lQ29uZmkuR01fSU5GTy5zY29yZTtcclxuICAgICAgICBpZihkYXRhLnNjb3JlID49IHJlY29yZCl7XHJcbiAgICAgICAgICAgIHRoaXMuc2VsZkRhdGEgPSBkYXRhO1xyXG4gICAgICAgICAgICB0aGlzLnNlbGZOb2RlLmFjdGl2ZSA9IHRydWU7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBpZihoaXROb2RlKXtcclxuICAgICAgICAgICAgaGl0Tm9kZS5hY3RpdmUgPSB0cnVlO1xyXG4gICAgICAgICAgICBpZihkYXRhLm5pY2tOYW1lLmxlbmd0aCA+PSA0KVxyXG4gICAgICAgICAgICAgICAgZGF0YS5uaWNrTmFtZSA9IGNjLmZ4LkdhbWVUb29sLnN1Yk5hbWUoZGF0YS5uaWNrTmFtZSw0KTtcclxuICAgICAgICAgICAgaGl0Tm9kZS5nZXRDaGlsZEJ5TmFtZShcIm5hbWVcIikuZ2V0Q29tcG9uZW50KGNjLkxhYmVsKS5zdHJpbmcgPSBkYXRhLm5pY2tOYW1lO1xyXG4gICAgICAgICAgICBoaXROb2RlLmdldENoaWxkQnlOYW1lKFwidG90YWxcIikuZ2V0Q29tcG9uZW50KGNjLkxhYmVsKS5zdHJpbmcgPSBkYXRhLnNjb3JlO1xyXG4gICAgICAgICAgICAgY2MuZnguR2FtZVRvb2wuc2V0UGljKGhpdE5vZGUuZ2V0Q2hpbGRCeU5hbWUoXCJwaWNcIikuZ2V0Q2hpbGRCeU5hbWUoXCJpY29uXCIpLGRhdGEucGljKTtcclxuICAgICAgICB9XHJcbiAgICB9ICAgXHJcbn1cclxuIl19 -//------QC-SOURCE-SPLIT------ - - (function() { - var nodeEnv = typeof require !== 'undefined' && typeof process !== 'undefined'; - var __module = nodeEnv ? module : {exports:{}}; - var __filename = 'preview-scripts/assets/Script/Load.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, '454adgphRpA6oq5lB6Cg1fK', 'Load'); -// Script/Load.ts - -"use strict"; -var __extends = (this && this.__extends) || (function () { - var extendStatics = function (d, b) { - extendStatics = Object.setPrototypeOf || - ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) || - function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; }; - return extendStatics(d, b); - }; - return function (d, b) { - extendStatics(d, b); - function __() { this.constructor = d; } - d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); - }; -})(); -var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) { - var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; - if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc); - else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; - return c > 3 && r && Object.defineProperty(target, key, r), r; -}; -Object.defineProperty(exports, "__esModule", { value: true }); -var _a = cc._decorator, ccclass = _a.ccclass, property = _a.property, requireComponent = _a.requireComponent; -var NewClass = /** @class */ (function (_super) { - __extends(NewClass, _super); - function NewClass() { - var _this = _super !== null && _super.apply(this, arguments) || this; - _this.node1 = null; - _this.node2 = null; - _this.node3 = null; - _this.localTest = false; - _this.clientTestVersion = "1.0.0"; - _this.testVersion = null; - return _this; - // 3月17日 - 3月21日 工作完成内容 - // 1:游戏框架搭建 - // 2:制作18个基础方块预制体 (方块可编辑颜色与道具和状态) - // 3:完成地图的搭建,可配置8*8以内,任意组合,包括可缺口和障碍物配置 - // 4:完成地图墙面建立,根据 ↑3上面构建的地图自动生成墙体。 - // 5:做完方块的基础移动,跟随手指,遇到方块或者墙壁或者障碍物阻碍移动。 - // 6:方块的自动落点做完11个基础方块的(未做完还差11个) - // 3月24日 - 3月28日 预计完成目标 - // 1:完成全部方块的落点。 - // 2:完成门的搭建,门可选颜色,可选开关或者星星等特殊状态 - // 3:完成方块通过门的游戏逻辑,使游戏可以最基础运行玩起来 - // 4:出5关版本,配合小白备案审核。 - // 5:根据方块,地图,以及道具,制作地图编辑器 (方块和地图制作的时候都已经考虑到编辑器的需求了) - // 优先制作,后续开发拓展玩法功能时,小白可同步进行制作关卡。 - } - NewClass.prototype.onLoad = function () { - // cc.director.getPhysicsManager().enabled = true; - // cc.director.getPhysicsManager().debugDrawFlags = 1; - // cc.director.getPhysicsManager().enabledAccumulator = true; - // cc.PhysicsManager.VELOCITY_ITERATIONS = 20; - // cc.PhysicsManager.FIXED_TIME_STEP = 1 / 120; - // cc.PhysicsManager.POSITION_ITERATIONS = 20; - //@ts-ignore - cc.internal.inputManager._maxTouches = 1; - var manager = cc.director.getCollisionManager(); - manager.enabled = true; - this.setWX(); - cc.debug.setDisplayStats(false); - cc.tween(this.node1) - .delay(0 * 0.3) - .to(0.3, { scale: 1 }) - .to(0.3, { scale: 1.3 }) - .to(0.3, { scale: 1 }) - .union() - .repeatForever() - .start(); - cc.tween(this.node2) - .delay(1 * 0.3) - .to(0.3, { scale: 1 }) - .to(0.3, { scale: 1.3 }) - .to(0.3, { scale: 1 }) - .union() - .repeatForever() - .start(); - cc.tween(this.node3) - .delay(2 * 0.3) - .to(0.3, { scale: 1 }) - .to(0.3, { scale: 1.3 }) - .to(0.3, { scale: 1 }) - .union() - .repeatForever() - .start(); - }; - NewClass.prototype.setWX = function () { - //@ts-ignore - if (typeof wx !== 'undefined' && wx !== null) { // 判断是否在微信环境 - wx.setPreferredFramesPerSecond(60); - // // 设置转发按钮点击后的回调 - // wx.onShareAppMessage(() => { - // return { - // title: '你想玩上怎样的游戏?', - // imageUrl: '', - // query: '' - // }; - // }); - wx.onShareAppMessage(function () { - // 用户点击了“转发”按钮 - return { - title: '你想玩上怎样的游戏?' - }; - }); - // 监听分享到朋友圈事件 - //@ts-ignore - wx.onShareTimeline(function () { - return { - title: '你想玩上怎样的游戏?' - }; - }); - wx.showShareMenu(function () { - return { - title: '你想玩上怎样的游戏?', - imageUrl: '', - query: '' - }; - }); - setTimeout(function () { - wx.showShareMenu({ - menus: ['shareAppMessage', 'shareTimeline'] - }); - }, 2000); - // 设置分享到朋友圈 - //@ts-ignore - // wx.updateShareMenu({ - // withShareTicket: true, - // success: (data) => { - // console.log('更新分享菜单成功', data); - // }, - // fail: (data) => { - // console.log('更新分享菜单失败', data); - // }, - // complete: (data) => { - // console.log('更新分享菜单完成', data); - // } - // }); - //@ts-ignore - } - }; - //判断来源 - NewClass.prototype.containsTrain = function (str) { - return /from=train/i.test(str); - }; - //开始游戏,跳转至引导页面 - NewClass.prototype.startGame = function () { - cc.director.loadScene("GameScene"); - // cc.director.loadScene("GuideScene"); - }; - //备用,用来测试跳转 指定关卡 - NewClass.prototype.clickBtn = function (event, data) { - cc.fx.GameConfig.GM_INFO.custom = parseInt(data); - cc.director.loadScene("GameScene"); - }; - //打开排行榜 - NewClass.prototype.openRank = function () { - cc.director.loadScene("RankScene"); - }; - NewClass.prototype.update = function (dt) { - }; - __decorate([ - property(cc.Node) - ], NewClass.prototype, "node1", void 0); - __decorate([ - property(cc.Node) - ], NewClass.prototype, "node2", void 0); - __decorate([ - property(cc.Node) - ], NewClass.prototype, "node3", void 0); - __decorate([ - property(false) - ], NewClass.prototype, "localTest", void 0); - __decorate([ - property("") - ], NewClass.prototype, "clientTestVersion", void 0); - __decorate([ - property(cc.Label) - ], NewClass.prototype, "testVersion", void 0); - NewClass = __decorate([ - ccclass - ], NewClass); - return NewClass; -}(cc.Component)); -exports.default = NewClass; - -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,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImFzc2V0c1xcU2NyaXB0XFxMb2FkLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUVNLElBQUEsS0FBd0MsRUFBRSxDQUFDLFVBQVUsRUFBcEQsT0FBTyxhQUFBLEVBQUUsUUFBUSxjQUFBLEVBQUUsZ0JBQWdCLHNCQUFpQixDQUFDO0FBRzVEO0lBQXNDLDRCQUFZO0lBQWxEO1FBQUEscUVBeUxDO1FBckxHLFdBQUssR0FBWSxJQUFJLENBQUM7UUFHdEIsV0FBSyxHQUFZLElBQUksQ0FBQztRQUd0QixXQUFLLEdBQVksSUFBSSxDQUFDO1FBR3RCLGVBQVMsR0FBWSxLQUFLLENBQUM7UUFHM0IsdUJBQWlCLEdBQVcsT0FBTyxDQUFDO1FBS3BDLGlCQUFXLEdBQWEsSUFBSSxDQUFDOztRQW1KakMsMkJBQTJCO1FBRTNCLFdBQVc7UUFDWCxpQ0FBaUM7UUFDakMsc0NBQXNDO1FBQ3RDLGlDQUFpQztRQUNqQyxzQ0FBc0M7UUFDdEMsZ0NBQWdDO1FBRWhDLHVCQUF1QjtRQUV2QixlQUFlO1FBQ2YsK0JBQStCO1FBQy9CLCtCQUErQjtRQUMvQixvQkFBb0I7UUFDcEIsb0RBQW9EO1FBQ3BELGlDQUFpQztJQUNqQyxDQUFDO0lBbEtHLHlCQUFNLEdBQU47UUFDSSxrREFBa0Q7UUFDbEQsc0RBQXNEO1FBQ3RELDZEQUE2RDtRQUM3RCw4Q0FBOEM7UUFDOUMsK0NBQStDO1FBQy9DLDhDQUE4QztRQUM5QyxZQUFZO1FBRVosRUFBRSxDQUFDLFFBQVEsQ0FBQyxZQUFZLENBQUMsV0FBVyxHQUFHLENBQUMsQ0FBQTtRQUV4QyxJQUFJLE9BQU8sR0FBRyxFQUFFLENBQUMsUUFBUSxDQUFDLG1CQUFtQixFQUFFLENBQUM7UUFDaEQsT0FBTyxDQUFDLE9BQU8sR0FBRyxJQUFJLENBQUM7UUFDdkIsSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDO1FBRWIsRUFBRSxDQUFDLEtBQUssQ0FBQyxlQUFlLENBQUMsS0FBSyxDQUFDLENBQUM7UUFHaEMsRUFBRSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDO2FBQ25CLEtBQUssQ0FBQyxDQUFDLEdBQUcsR0FBRyxDQUFDO2FBQ2QsRUFBRSxDQUFDLEdBQUcsRUFBRSxFQUFDLEtBQUssRUFBRSxDQUFDLEVBQUMsQ0FBQzthQUNuQixFQUFFLENBQUMsR0FBRyxFQUFFLEVBQUMsS0FBSyxFQUFFLEdBQUcsRUFBQyxDQUFDO2FBQ3JCLEVBQUUsQ0FBQyxHQUFHLEVBQUUsRUFBQyxLQUFLLEVBQUUsQ0FBQyxFQUFDLENBQUM7YUFDbkIsS0FBSyxFQUFFO2FBQ1AsYUFBYSxFQUFFO2FBQ2YsS0FBSyxFQUFFLENBQUM7UUFFVCxFQUFFLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUM7YUFDbkIsS0FBSyxDQUFDLENBQUMsR0FBRyxHQUFHLENBQUM7YUFDZCxFQUFFLENBQUMsR0FBRyxFQUFFLEVBQUMsS0FBSyxFQUFFLENBQUMsRUFBQyxDQUFDO2FBQ25CLEVBQUUsQ0FBQyxHQUFHLEVBQUUsRUFBQyxLQUFLLEVBQUUsR0FBRyxFQUFDLENBQUM7YUFDckIsRUFBRSxDQUFDLEdBQUcsRUFBRSxFQUFDLEtBQUssRUFBRSxDQUFDLEVBQUMsQ0FBQzthQUNuQixLQUFLLEVBQUU7YUFDUCxhQUFhLEVBQUU7YUFDZixLQUFLLEVBQUUsQ0FBQztRQUVULEVBQUUsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQzthQUNuQixLQUFLLENBQUMsQ0FBQyxHQUFHLEdBQUcsQ0FBQzthQUNkLEVBQUUsQ0FBQyxHQUFHLEVBQUUsRUFBQyxLQUFLLEVBQUUsQ0FBQyxFQUFDLENBQUM7YUFDbkIsRUFBRSxDQUFDLEdBQUcsRUFBRSxFQUFDLEtBQUssRUFBRSxHQUFHLEVBQUMsQ0FBQzthQUNyQixFQUFFLENBQUMsR0FBRyxFQUFFLEVBQUMsS0FBSyxFQUFFLENBQUMsRUFBQyxDQUFDO2FBQ25CLEtBQUssRUFBRTthQUNQLGFBQWEsRUFBRTthQUNmLEtBQUssRUFBRSxDQUFDO0lBRWIsQ0FBQztJQUVELHdCQUFLLEdBQUw7UUFDSSxZQUFZO1FBQ2IsSUFBSSxPQUFPLEVBQUUsS0FBSyxXQUFXLElBQUksRUFBRSxLQUFLLElBQUksRUFBRSxFQUFFLFlBQVk7WUFDdkQsRUFBRSxDQUFDLDJCQUEyQixDQUFDLEVBQUUsQ0FBQyxDQUFDO1lBR25DLGtCQUFrQjtZQUNsQiwrQkFBK0I7WUFDL0IsZUFBZTtZQUNmLCtCQUErQjtZQUMvQix3QkFBd0I7WUFDeEIsb0JBQW9CO1lBQ3BCLFNBQVM7WUFDVCxNQUFNO1lBRU4sRUFBRSxDQUFDLGlCQUFpQixDQUFDO2dCQUNyQixjQUFjO2dCQUNkLE9BQU87b0JBQ0gsS0FBSyxFQUFFLFlBQVk7aUJBQ3RCLENBQUE7WUFDRCxDQUFDLENBQUMsQ0FBQTtZQUdGLGFBQWE7WUFDYixZQUFZO1lBQ1osRUFBRSxDQUFDLGVBQWUsQ0FBQztnQkFDZixPQUFPO29CQUNILEtBQUssRUFBRSxZQUFZO2lCQUN0QixDQUFDO1lBQ04sQ0FBQyxDQUFDLENBQUM7WUFLSCxFQUFFLENBQUMsYUFBYSxDQUFDO2dCQUNiLE9BQU87b0JBQ0gsS0FBSyxFQUFFLFlBQVk7b0JBQ25CLFFBQVEsRUFBRSxFQUFFO29CQUNaLEtBQUssRUFBRSxFQUFFO2lCQUNaLENBQUM7WUFDTixDQUFDLENBQUMsQ0FBQztZQUdILFVBQVUsQ0FBQztnQkFDUCxFQUFFLENBQUMsYUFBYSxDQUFDO29CQUNiLEtBQUssRUFBRSxDQUFDLGlCQUFpQixFQUFFLGVBQWUsQ0FBQztpQkFDOUMsQ0FBQyxDQUFBO1lBQ04sQ0FBQyxFQUFFLElBQUksQ0FBQyxDQUFDO1lBSVQsV0FBVztZQUNYLFlBQVk7WUFDWix1QkFBdUI7WUFDdkIsNkJBQTZCO1lBQzdCLDJCQUEyQjtZQUMzQix5Q0FBeUM7WUFDekMsU0FBUztZQUNULHdCQUF3QjtZQUN4Qix5Q0FBeUM7WUFDekMsU0FBUztZQUNULDRCQUE0QjtZQUM1Qix5Q0FBeUM7WUFDekMsUUFBUTtZQUNSLE1BQU07WUFJTixZQUFZO1NBQ2Y7SUFFTCxDQUFDO0lBRUQsTUFBTTtJQUNOLGdDQUFhLEdBQWIsVUFBYyxHQUFHO1FBRWIsT0FBTyxhQUFhLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQ25DLENBQUM7SUFFRCxjQUFjO0lBQ2QsNEJBQVMsR0FBVDtRQUNJLEVBQUUsQ0FBQyxRQUFRLENBQUMsU0FBUyxDQUFDLFdBQVcsQ0FBQyxDQUFDO1FBQ25DLHVDQUF1QztJQUMzQyxDQUFDO0lBQ0QsZ0JBQWdCO0lBQ2hCLDJCQUFRLEdBQVIsVUFBUyxLQUFLLEVBQUMsSUFBSTtRQUNmLEVBQUUsQ0FBQyxFQUFFLENBQUMsVUFBVSxDQUFDLE9BQU8sQ0FBQyxNQUFNLEdBQUcsUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ2pELEVBQUUsQ0FBQyxRQUFRLENBQUMsU0FBUyxDQUFDLFdBQVcsQ0FBQyxDQUFDO0lBQ3ZDLENBQUM7SUFDRCxPQUFPO0lBQ1AsMkJBQVEsR0FBUjtRQUNJLEVBQUUsQ0FBQyxRQUFRLENBQUMsU0FBUyxDQUFDLFdBQVcsQ0FBQyxDQUFDO0lBQ3ZDLENBQUM7SUFHUyx5QkFBTSxHQUFoQixVQUFpQixFQUFVO0lBQzNCLENBQUM7SUFsS0Q7UUFEQyxRQUFRLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQzsyQ0FDSTtJQUd0QjtRQURDLFFBQVEsQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDOzJDQUNJO0lBR3RCO1FBREMsUUFBUSxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUM7MkNBQ0k7SUFHdEI7UUFEQyxRQUFRLENBQUMsS0FBSyxDQUFDOytDQUNXO0lBRzNCO1FBREMsUUFBUSxDQUFDLEVBQUUsQ0FBQzt1REFDdUI7SUFLcEM7UUFEQyxRQUFRLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQztpREFDVTtJQXJCWixRQUFRO1FBRDVCLE9BQU87T0FDYSxRQUFRLENBeUw1QjtJQUFELGVBQUM7Q0F6TEQsQUF5TEMsQ0F6THFDLEVBQUUsQ0FBQyxTQUFTLEdBeUxqRDtrQkF6TG9CLFFBQVEiLCJmaWxlIjoiIiwic291cmNlUm9vdCI6Ii8iLCJzb3VyY2VzQ29udGVudCI6WyJcclxuXHJcbmNvbnN0IHtjY2NsYXNzLCBwcm9wZXJ0eSwgcmVxdWlyZUNvbXBvbmVudH0gPSBjYy5fZGVjb3JhdG9yO1xyXG5cclxuQGNjY2xhc3NcclxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgTmV3Q2xhc3MgZXh0ZW5kcyBjYy5Db21wb25lbnQge1xyXG5cclxuXHJcbiAgICBAcHJvcGVydHkoY2MuTm9kZSlcclxuICAgIG5vZGUxOiBjYy5Ob2RlID0gbnVsbDtcclxuXHJcbiAgICBAcHJvcGVydHkoY2MuTm9kZSlcclxuICAgIG5vZGUyOiBjYy5Ob2RlID0gbnVsbDtcclxuXHJcbiAgICBAcHJvcGVydHkoY2MuTm9kZSlcclxuICAgIG5vZGUzOiBjYy5Ob2RlID0gbnVsbDtcclxuXHJcbiAgICBAcHJvcGVydHkoZmFsc2UpXHJcbiAgICBsb2NhbFRlc3Q6IGJvb2xlYW4gPSBmYWxzZTtcclxuXHJcbiAgICBAcHJvcGVydHkoXCJcIilcclxuICAgIGNsaWVudFRlc3RWZXJzaW9uOiBzdHJpbmcgPSBcIjEuMC4wXCI7XHJcblxyXG5cclxuXHJcbiAgICBAcHJvcGVydHkoY2MuTGFiZWwpXHJcbiAgICB0ZXN0VmVyc2lvbjogY2MuTGFiZWwgPSBudWxsO1xyXG5cclxuICAgIG9uTG9hZCAoKSB7XHJcbiAgICAgICAgLy8gY2MuZGlyZWN0b3IuZ2V0UGh5c2ljc01hbmFnZXIoKS5lbmFibGVkID0gdHJ1ZTtcclxuICAgICAgICAvLyBjYy5kaXJlY3Rvci5nZXRQaHlzaWNzTWFuYWdlcigpLmRlYnVnRHJhd0ZsYWdzID0gMTtcclxuICAgICAgICAvLyBjYy5kaXJlY3Rvci5nZXRQaHlzaWNzTWFuYWdlcigpLmVuYWJsZWRBY2N1bXVsYXRvciA9IHRydWU7XHJcbiAgICAgICAgLy8gY2MuUGh5c2ljc01hbmFnZXIuVkVMT0NJVFlfSVRFUkFUSU9OUyA9IDIwO1xyXG4gICAgICAgIC8vIGNjLlBoeXNpY3NNYW5hZ2VyLkZJWEVEX1RJTUVfU1RFUCA9IDEgLyAxMjA7XHJcbiAgICAgICAgLy8gY2MuUGh5c2ljc01hbmFnZXIuUE9TSVRJT05fSVRFUkFUSU9OUyA9IDIwO1xyXG4gICAgICAgIC8vQHRzLWlnbm9yZVxyXG4gICAgICAgIFxyXG4gICAgICAgIGNjLmludGVybmFsLmlucHV0TWFuYWdlci5fbWF4VG91Y2hlcyA9IDFcclxuXHJcbiAgICAgICAgbGV0IG1hbmFnZXIgPSBjYy5kaXJlY3Rvci5nZXRDb2xsaXNpb25NYW5hZ2VyKCk7XHJcbiAgICAgICAgbWFuYWdlci5lbmFibGVkID0gdHJ1ZTtcclxuICAgICAgICB0aGlzLnNldFdYKCk7XHJcblxyXG4gICAgICAgIGNjLmRlYnVnLnNldERpc3BsYXlTdGF0cyhmYWxzZSk7XHJcblxyXG5cclxuICAgICAgICBjYy50d2Vlbih0aGlzLm5vZGUxKVxyXG4gICAgICAgIC5kZWxheSgwICogMC4zKSBcclxuICAgICAgICAudG8oMC4zLCB7c2NhbGU6IDF9KVxyXG4gICAgICAgIC50bygwLjMsIHtzY2FsZTogMS4zfSlcclxuICAgICAgICAudG8oMC4zLCB7c2NhbGU6IDF9KVxyXG4gICAgICAgIC51bmlvbigpXHJcbiAgICAgICAgLnJlcGVhdEZvcmV2ZXIoKVxyXG4gICAgICAgIC5zdGFydCgpO1xyXG5cclxuICAgICAgICBjYy50d2Vlbih0aGlzLm5vZGUyKVxyXG4gICAgICAgIC5kZWxheSgxICogMC4zKSBcclxuICAgICAgICAudG8oMC4zLCB7c2NhbGU6IDF9KVxyXG4gICAgICAgIC50bygwLjMsIHtzY2FsZTogMS4zfSlcclxuICAgICAgICAudG8oMC4zLCB7c2NhbGU6IDF9KVxyXG4gICAgICAgIC51bmlvbigpXHJcbiAgICAgICAgLnJlcGVhdEZvcmV2ZXIoKVxyXG4gICAgICAgIC5zdGFydCgpO1xyXG5cclxuICAgICAgICBjYy50d2Vlbih0aGlzLm5vZGUzKVxyXG4gICAgICAgIC5kZWxheSgyICogMC4zKSBcclxuICAgICAgICAudG8oMC4zLCB7c2NhbGU6IDF9KVxyXG4gICAgICAgIC50bygwLjMsIHtzY2FsZTogMS4zfSlcclxuICAgICAgICAudG8oMC4zLCB7c2NhbGU6IDF9KVxyXG4gICAgICAgIC51bmlvbigpXHJcbiAgICAgICAgLnJlcGVhdEZvcmV2ZXIoKVxyXG4gICAgICAgIC5zdGFydCgpO1xyXG5cclxuICAgIH1cclxuXHJcbiAgICBzZXRXWCgpe1xyXG4gICAgICAgIC8vQHRzLWlnbm9yZVxyXG4gICAgICAgaWYgKHR5cGVvZiB3eCAhPT0gJ3VuZGVmaW5lZCcgJiYgd3ggIT09IG51bGwpIHsgLy8g5Yik5pat5piv5ZCm5Zyo5b6u5L+h546v5aKDXHJcbiAgICAgICAgICAgIHd4LnNldFByZWZlcnJlZEZyYW1lc1BlclNlY29uZCg2MCk7XHJcbiAgICAgICAgXHJcblxyXG4gICAgICAgICAgICAvLyAvLyDorr7nva7ovazlj5HmjInpkq7ngrnlh7vlkI7nmoTlm57osINcclxuICAgICAgICAgICAgLy8gd3gub25TaGFyZUFwcE1lc3NhZ2UoKCkgPT4ge1xyXG4gICAgICAgICAgICAvLyAgICAgcmV0dXJuIHtcclxuICAgICAgICAgICAgLy8gICAgICAgICB0aXRsZTogJ+S9oOaDs+eOqeS4iuaAjuagt+eahOa4uOaIj++8nycsXHJcbiAgICAgICAgICAgIC8vICAgICAgICAgaW1hZ2VVcmw6ICcnLFxyXG4gICAgICAgICAgICAvLyAgICAgICAgIHF1ZXJ5OiAnJ1xyXG4gICAgICAgICAgICAvLyAgICAgfTtcclxuICAgICAgICAgICAgLy8gfSk7XHJcblxyXG4gICAgICAgICAgICB3eC5vblNoYXJlQXBwTWVzc2FnZShmdW5jdGlvbiAoKSB7XHJcbiAgICAgICAgICAgIC8vIOeUqOaIt+eCueWHu+S6huKAnOi9rOWPkeKAneaMiemSrlxyXG4gICAgICAgICAgICByZXR1cm4ge1xyXG4gICAgICAgICAgICAgICAgdGl0bGU6ICfkvaDmg7PnjqnkuIrmgI7moLfnmoTmuLjmiI/vvJ8nXHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfSlcclxuXHJcblxyXG4gICAgICAgICAgICAvLyDnm5HlkKzliIbkuqvliLDmnIvlj4vlnIjkuovku7ZcclxuICAgICAgICAgICAgLy9AdHMtaWdub3JlXHJcbiAgICAgICAgICAgIHd4Lm9uU2hhcmVUaW1lbGluZSgoKSA9PiB7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4ge1xyXG4gICAgICAgICAgICAgICAgICAgIHRpdGxlOiAn5L2g5oOz546p5LiK5oCO5qC355qE5ri45oiP77yfJ1xyXG4gICAgICAgICAgICAgICAgfTtcclxuICAgICAgICAgICAgfSk7XHJcblxyXG5cclxuXHJcblxyXG4gICAgICAgICAgICB3eC5zaG93U2hhcmVNZW51KCgpID0+IHtcclxuICAgICAgICAgICAgICAgIHJldHVybiB7XHJcbiAgICAgICAgICAgICAgICAgICAgdGl0bGU6ICfkvaDmg7PnjqnkuIrmgI7moLfnmoTmuLjmiI/vvJ8nLFxyXG4gICAgICAgICAgICAgICAgICAgIGltYWdlVXJsOiAnJyxcclxuICAgICAgICAgICAgICAgICAgICBxdWVyeTogJydcclxuICAgICAgICAgICAgICAgIH07XHJcbiAgICAgICAgICAgIH0pO1xyXG5cclxuXHJcbiAgICAgICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgd3guc2hvd1NoYXJlTWVudSh7XHJcbiAgICAgICAgICAgICAgICAgICAgbWVudXM6IFsnc2hhcmVBcHBNZXNzYWdlJywgJ3NoYXJlVGltZWxpbmUnXVxyXG4gICAgICAgICAgICAgICAgfSlcclxuICAgICAgICAgICAgfSwgMjAwMCk7XHJcblxyXG5cclxuXHJcbiAgICAgICAgICAgIC8vIOiuvue9ruWIhuS6q+WIsOaci+WPi+WciFxyXG4gICAgICAgICAgICAvL0B0cy1pZ25vcmVcclxuICAgICAgICAgICAgLy8gd3gudXBkYXRlU2hhcmVNZW51KHtcclxuICAgICAgICAgICAgLy8gICAgIHdpdGhTaGFyZVRpY2tldDogdHJ1ZSxcclxuICAgICAgICAgICAgLy8gICAgIHN1Y2Nlc3M6IChkYXRhKSA9PiB7XHJcbiAgICAgICAgICAgIC8vICAgICAgICAgY29uc29sZS5sb2coJ+abtOaWsOWIhuS6q+iPnOWNleaIkOWKnycsIGRhdGEpO1xyXG4gICAgICAgICAgICAvLyAgICAgfSxcclxuICAgICAgICAgICAgLy8gICAgIGZhaWw6IChkYXRhKSA9PiB7XHJcbiAgICAgICAgICAgIC8vICAgICAgICAgY29uc29sZS5sb2coJ+abtOaWsOWIhuS6q+iPnOWNleWksei0pScsIGRhdGEpO1xyXG4gICAgICAgICAgICAvLyAgICAgfSxcclxuICAgICAgICAgICAgLy8gICAgIGNvbXBsZXRlOiAoZGF0YSkgPT4ge1xyXG4gICAgICAgICAgICAvLyAgICAgICAgIGNvbnNvbGUubG9nKCfmm7TmlrDliIbkuqvoj5zljZXlrozmiJAnLCBkYXRhKTtcclxuICAgICAgICAgICAgLy8gICAgIH1cclxuICAgICAgICAgICAgLy8gfSk7XHJcblxyXG5cclxuXHJcbiAgICAgICAgICAgIC8vQHRzLWlnbm9yZVxyXG4gICAgICAgIH1cclxuICAgIFxyXG4gICAgfVxyXG5cclxuICAgIC8v5Yik5pat5p2l5rqQXHJcbiAgICBjb250YWluc1RyYWluKHN0cikge1xyXG4gICAgXHJcbiAgICAgICAgcmV0dXJuIC9mcm9tPXRyYWluL2kudGVzdChzdHIpO1xyXG4gICAgfVxyXG5cclxuICAgIC8v5byA5aeL5ri45oiP77yM6Lez6L2s6Iez5byV5a+86aG16Z2iXHJcbiAgICBzdGFydEdhbWUoKXtcclxuICAgICAgICBjYy5kaXJlY3Rvci5sb2FkU2NlbmUoXCJHYW1lU2NlbmVcIik7XHJcbiAgICAgICAgLy8gY2MuZGlyZWN0b3IubG9hZFNjZW5lKFwiR3VpZGVTY2VuZVwiKTtcclxuICAgIH1cclxuICAgIC8v5aSH55So77yM55So5p2l5rWL6K+V6Lez6L2sIOaMh+WumuWFs+WNoVxyXG4gICAgY2xpY2tCdG4oZXZlbnQsZGF0YSl7XHJcbiAgICAgICAgY2MuZnguR2FtZUNvbmZpZy5HTV9JTkZPLmN1c3RvbSA9IHBhcnNlSW50KGRhdGEpO1xyXG4gICAgICAgIGNjLmRpcmVjdG9yLmxvYWRTY2VuZShcIkdhbWVTY2VuZVwiKTtcclxuICAgIH0gICBcclxuICAgIC8v5omT5byA5o6S6KGM5qacXHJcbiAgICBvcGVuUmFuaygpe1xyXG4gICAgICAgIGNjLmRpcmVjdG9yLmxvYWRTY2VuZShcIlJhbmtTY2VuZVwiKTtcclxuICAgIH1cclxuXHJcbiAgICBcclxuICAgIHByb3RlY3RlZCB1cGRhdGUoZHQ6IG51bWJlcik6IHZvaWQge1xyXG4gICAgfVxyXG4gICAgXHJcbi8vICAgICAz5pyIMTfml6UgLSAz5pyIMjHml6Ug5bel5L2c5a6M5oiQ5YaF5a65XHJcblxyXG4vLyAx77ya5ri45oiP5qGG5p625pCt5bu6XHJcbi8vIDLvvJrliLbkvZwxOOS4quWfuuehgOaWueWdl+mihOWItuS9kyAo5pa55Z2X5Y+v57yW6L6R6aKc6Imy5LiO6YGT5YW35ZKM54q25oCBKVxyXG4vLyAz77ya5a6M5oiQ5Zyw5Zu+55qE5pCt5bu677yM5Y+v6YWN572uOCo45Lul5YaF77yM5Lu75oSP57uE5ZCI77yM5YyF5ous5Y+v57y65Y+j5ZKM6Zqc56KN54mp6YWN572uXHJcbi8vIDTvvJrlrozmiJDlnLDlm77lopnpnaLlu7rnq4vvvIzmoLnmja4g4oaRM+S4iumdouaehOW7uueahOWcsOWbvuiHquWKqOeUn+aIkOWimeS9k+OAglxyXG4vLyA177ya5YGa5a6M5pa55Z2X55qE5Z+656GA56e75Yqo77yM6Lef6ZqP5omL5oyH77yM6YGH5Yiw5pa55Z2X5oiW6ICF5aKZ5aOB5oiW6ICF6Zqc56KN54mp6Zi756KN56e75Yqo44CCXHJcbi8vIDbvvJrmlrnlnZfnmoToh6rliqjokL3ngrnlgZrlrowxMeS4quWfuuehgOaWueWdl+eahO+8iOacquWBmuWujOi/mOW3rjEx5Liq77yJXHJcblxyXG4vLyAz5pyIMjTml6UgLSAz5pyIMjjml6Ug6aKE6K6h5a6M5oiQ55uu5qCHXHJcblxyXG4vLyAx77ya5a6M5oiQ5YWo6YOo5pa55Z2X55qE6JC954K544CCXHJcbi8vIDLvvJrlrozmiJDpl6jnmoTmkK3lu7rvvIzpl6jlj6/pgInpopzoibLvvIzlj6/pgInlvIDlhbPmiJbogIXmmJ/mmJ/nrYnnibnmrornirbmgIFcclxuLy8gM++8muWujOaIkOaWueWdl+mAmui/h+mXqOeahOa4uOaIj+mAu+i+ke+8jOS9v+a4uOaIj+WPr+S7peacgOWfuuehgOi/kOihjOeOqei1t+adpVxyXG4vLyA077ya5Ye6NeWFs+eJiOacrO+8jOmFjeWQiOWwj+eZveWkh+ahiOWuoeaguOOAglxyXG4vLyA177ya5qC55o2u5pa55Z2X77yM5Zyw5Zu+77yM5Lul5Y+K6YGT5YW377yM5Yi25L2c5Zyw5Zu+57yW6L6R5ZmoICjmlrnlnZflkozlnLDlm77liLbkvZznmoTml7blgJnpg73lt7Lnu4/ogIPomZHliLDnvJbovpHlmajnmoTpnIDmsYLkuoYpIFxyXG4vLyBcdOS8mOWFiOWItuS9nO+8jOWQjue7reW8gOWPkeaLk+WxleeOqeazleWKn+iDveaXtu+8jOWwj+eZveWPr+WQjOatpei/m+ihjOWItuS9nOWFs+WNoeOAglxyXG59XHJcbiJdfQ== -//------QC-SOURCE-SPLIT------ - - (function() { - var nodeEnv = typeof require !== 'undefined' && typeof process !== 'undefined'; - var __module = nodeEnv ? module : {exports:{}}; - var __filename = 'preview-scripts/assets/Script/module/Config/GameConfig.js'; ->>>>>>> 0a31a7a5abc2c505bf743aa596e1c765a0405152 - 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, '7290caA39xMWZc2phTMKovP', 'share'); -// Script/module/Share/share.ts - - - -cc._RF.pop(); - } - if (nodeEnv) { - __define(__module.exports, __require, __module); - } - else { - __quick_compile_project__.registerModuleFunc(__filename, function () { - __define(__module.exports, __require, __module); - }); - } - })(); -<<<<<<< HEAD -//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImFzc2V0c1xcU2NyaXB0XFxtb2R1bGVcXFNoYXJlXFxzaGFyZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwiZmlsZSI6IiIsInNvdXJjZVJvb3QiOiIvIiwic291cmNlc0NvbnRlbnQiOlsiIl19 -//------QC-SOURCE-SPLIT------ - - (function() { - var nodeEnv = typeof require !== 'undefined' && typeof process !== 'undefined'; - var __module = nodeEnv ? module : {exports:{}}; - var __filename = 'preview-scripts/assets/Script/Load.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, '454adgphRpA6oq5lB6Cg1fK', 'Load'); -// Script/Load.ts - -"use strict"; -var __extends = (this && this.__extends) || (function () { - var extendStatics = function (d, b) { - extendStatics = Object.setPrototypeOf || - ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) || - function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; }; - return extendStatics(d, b); - }; - return function (d, b) { - extendStatics(d, b); - function __() { this.constructor = d; } - d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); - }; -})(); -var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) { - var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; - if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc); - else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; - return c > 3 && r && Object.defineProperty(target, key, r), r; -}; -Object.defineProperty(exports, "__esModule", { value: true }); -var _a = cc._decorator, ccclass = _a.ccclass, property = _a.property, requireComponent = _a.requireComponent; -var NewClass = /** @class */ (function (_super) { - __extends(NewClass, _super); - function NewClass() { - var _this = _super !== null && _super.apply(this, arguments) || this; - _this.node1 = null; - _this.node2 = null; - _this.node3 = null; - _this.localTest = false; - _this.clientTestVersion = "1.0.0"; - _this.testVersion = null; - return _this; - // 3月17日 - 3月21日 工作完成内容 - // 1:游戏框架搭建 - // 2:制作18个基础方块预制体 (方块可编辑颜色与道具和状态) - // 3:完成地图的搭建,可配置8*8以内,任意组合,包括可缺口和障碍物配置 - // 4:完成地图墙面建立,根据 ↑3上面构建的地图自动生成墙体。 - // 5:做完方块的基础移动,跟随手指,遇到方块或者墙壁或者障碍物阻碍移动。 - // 6:方块的自动落点做完11个基础方块的(未做完还差11个) - // 3月24日 - 3月28日 预计完成目标 - // 1:完成全部方块的落点。 - // 2:完成门的搭建,门可选颜色,可选开关或者星星等特殊状态 - // 3:完成方块通过门的游戏逻辑,使游戏可以最基础运行玩起来 - // 4:出5关版本,配合小白备案审核。 - // 5:根据方块,地图,以及道具,制作地图编辑器 (方块和地图制作的时候都已经考虑到编辑器的需求了) - // 优先制作,后续开发拓展玩法功能时,小白可同步进行制作关卡。 - } - NewClass.prototype.onLoad = function () { - // cc.director.getPhysicsManager().enabled = true; - // cc.director.getPhysicsManager().debugDrawFlags = 1; - // cc.director.getPhysicsManager().enabledAccumulator = true; - // cc.PhysicsManager.VELOCITY_ITERATIONS = 20; - // cc.PhysicsManager.FIXED_TIME_STEP = 1 / 120; - // cc.PhysicsManager.POSITION_ITERATIONS = 20; - //@ts-ignore - cc.internal.inputManager._maxTouches = 1; - var manager = cc.director.getCollisionManager(); - manager.enabled = true; - this.setWX(); - cc.debug.setDisplayStats(false); - cc.tween(this.node1) - .delay(0 * 0.3) - .to(0.3, { scale: 1 }) - .to(0.3, { scale: 1.3 }) - .to(0.3, { scale: 1 }) - .union() - .repeatForever() - .start(); - cc.tween(this.node2) - .delay(1 * 0.3) - .to(0.3, { scale: 1 }) - .to(0.3, { scale: 1.3 }) - .to(0.3, { scale: 1 }) - .union() - .repeatForever() - .start(); - cc.tween(this.node3) - .delay(2 * 0.3) - .to(0.3, { scale: 1 }) - .to(0.3, { scale: 1.3 }) - .to(0.3, { scale: 1 }) - .union() - .repeatForever() - .start(); - }; - NewClass.prototype.setWX = function () { - //@ts-ignore - if (typeof wx !== 'undefined' && wx !== null) { // 判断是否在微信环境 - wx.setPreferredFramesPerSecond(60); - // // 设置转发按钮点击后的回调 - // wx.onShareAppMessage(() => { - // return { - // title: '你想玩上怎样的游戏?', - // imageUrl: '', - // query: '' - // }; - // }); - wx.onShareAppMessage(function () { - // 用户点击了“转发”按钮 - return { - title: '你想玩上怎样的游戏?' - }; - }); - // 监听分享到朋友圈事件 - //@ts-ignore - wx.onShareTimeline(function () { - return { - title: '你想玩上怎样的游戏?' - }; - }); - wx.showShareMenu(function () { - return { - title: '你想玩上怎样的游戏?', - imageUrl: '', - query: '' - }; - }); - setTimeout(function () { - wx.showShareMenu({ - menus: ['shareAppMessage', 'shareTimeline'] - }); - }, 2000); - // 设置分享到朋友圈 - //@ts-ignore - // wx.updateShareMenu({ - // withShareTicket: true, - // success: (data) => { - // console.log('更新分享菜单成功', data); - // }, - // fail: (data) => { - // console.log('更新分享菜单失败', data); - // }, - // complete: (data) => { - // console.log('更新分享菜单完成', data); - // } - // }); - //@ts-ignore - } - }; - //判断来源 - NewClass.prototype.containsTrain = function (str) { - return /from=train/i.test(str); - }; - //开始游戏,跳转至引导页面 - NewClass.prototype.startGame = function () { - cc.director.loadScene("GameScene"); - // cc.director.loadScene("GuideScene"); - }; - //备用,用来测试跳转 指定关卡 - NewClass.prototype.clickBtn = function (event, data) { - cc.fx.GameConfig.GM_INFO.custom = parseInt(data); - cc.director.loadScene("GameScene"); - }; - //打开排行榜 - NewClass.prototype.openRank = function () { - cc.director.loadScene("RankScene"); - }; - NewClass.prototype.update = function (dt) { - }; - __decorate([ - property(cc.Node) - ], NewClass.prototype, "node1", void 0); - __decorate([ - property(cc.Node) - ], NewClass.prototype, "node2", void 0); - __decorate([ - property(cc.Node) - ], NewClass.prototype, "node3", void 0); - __decorate([ - property(false) - ], NewClass.prototype, "localTest", void 0); - __decorate([ - property("") - ], NewClass.prototype, "clientTestVersion", void 0); - __decorate([ - property(cc.Label) - ], NewClass.prototype, "testVersion", void 0); - NewClass = __decorate([ - ccclass - ], NewClass); - return NewClass; -}(cc.Component)); -exports.default = NewClass; - -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,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Iiwic291cmNlUm9vdCI6Ii8iLCJzb3VyY2VzQ29udGVudCI6WyJcclxuXHJcbmNvbnN0IHtjY2NsYXNzLCBwcm9wZXJ0eSwgcmVxdWlyZUNvbXBvbmVudH0gPSBjYy5fZGVjb3JhdG9yO1xyXG5cclxuQGNjY2xhc3NcclxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgTmV3Q2xhc3MgZXh0ZW5kcyBjYy5Db21wb25lbnQge1xyXG5cclxuXHJcbiAgICBAcHJvcGVydHkoY2MuTm9kZSlcclxuICAgIG5vZGUxOiBjYy5Ob2RlID0gbnVsbDtcclxuXHJcbiAgICBAcHJvcGVydHkoY2MuTm9kZSlcclxuICAgIG5vZGUyOiBjYy5Ob2RlID0gbnVsbDtcclxuXHJcbiAgICBAcHJvcGVydHkoY2MuTm9kZSlcclxuICAgIG5vZGUzOiBjYy5Ob2RlID0gbnVsbDtcclxuXHJcbiAgICBAcHJvcGVydHkoZmFsc2UpXHJcbiAgICBsb2NhbFRlc3Q6IGJvb2xlYW4gPSBmYWxzZTtcclxuXHJcbiAgICBAcHJvcGVydHkoXCJcIilcclxuICAgIGNsaWVudFRlc3RWZXJzaW9uOiBzdHJpbmcgPSBcIjEuMC4wXCI7XHJcblxyXG5cclxuXHJcbiAgICBAcHJvcGVydHkoY2MuTGFiZWwpXHJcbiAgICB0ZXN0VmVyc2lvbjogY2MuTGFiZWwgPSBudWxsO1xyXG5cclxuICAgIG9uTG9hZCAoKSB7XHJcbiAgICAgICAgLy8gY2MuZGlyZWN0b3IuZ2V0UGh5c2ljc01hbmFnZXIoKS5lbmFibGVkID0gdHJ1ZTtcclxuICAgICAgICAvLyBjYy5kaXJlY3Rvci5nZXRQaHlzaWNzTWFuYWdlcigpLmRlYnVnRHJhd0ZsYWdzID0gMTtcclxuICAgICAgICAvLyBjYy5kaXJlY3Rvci5nZXRQaHlzaWNzTWFuYWdlcigpLmVuYWJsZWRBY2N1bXVsYXRvciA9IHRydWU7XHJcbiAgICAgICAgLy8gY2MuUGh5c2ljc01hbmFnZXIuVkVMT0NJVFlfSVRFUkFUSU9OUyA9IDIwO1xyXG4gICAgICAgIC8vIGNjLlBoeXNpY3NNYW5hZ2VyLkZJWEVEX1RJTUVfU1RFUCA9IDEgLyAxMjA7XHJcbiAgICAgICAgLy8gY2MuUGh5c2ljc01hbmFnZXIuUE9TSVRJT05fSVRFUkFUSU9OUyA9IDIwO1xyXG4gICAgICAgIC8vQHRzLWlnbm9yZVxyXG4gICAgICAgIFxyXG4gICAgICAgIGNjLmludGVybmFsLmlucHV0TWFuYWdlci5fbWF4VG91Y2hlcyA9IDFcclxuXHJcbiAgICAgICAgbGV0IG1hbmFnZXIgPSBjYy5kaXJlY3Rvci5nZXRDb2xsaXNpb25NYW5hZ2VyKCk7XHJcbiAgICAgICAgbWFuYWdlci5lbmFibGVkID0gdHJ1ZTtcclxuICAgICAgICB0aGlzLnNldFdYKCk7XHJcblxyXG4gICAgICAgIGNjLmRlYnVnLnNldERpc3BsYXlTdGF0cyhmYWxzZSk7XHJcblxyXG5cclxuICAgICAgICBjYy50d2Vlbih0aGlzLm5vZGUxKVxyXG4gICAgICAgIC5kZWxheSgwICogMC4zKSBcclxuICAgICAgICAudG8oMC4zLCB7c2NhbGU6IDF9KVxyXG4gICAgICAgIC50bygwLjMsIHtzY2FsZTogMS4zfSlcclxuICAgICAgICAudG8oMC4zLCB7c2NhbGU6IDF9KVxyXG4gICAgICAgIC51bmlvbigpXHJcbiAgICAgICAgLnJlcGVhdEZvcmV2ZXIoKVxyXG4gICAgICAgIC5zdGFydCgpO1xyXG5cclxuICAgICAgICBjYy50d2Vlbih0aGlzLm5vZGUyKVxyXG4gICAgICAgIC5kZWxheSgxICogMC4zKSBcclxuICAgICAgICAudG8oMC4zLCB7c2NhbGU6IDF9KVxyXG4gICAgICAgIC50bygwLjMsIHtzY2FsZTogMS4zfSlcclxuICAgICAgICAudG8oMC4zLCB7c2NhbGU6IDF9KVxyXG4gICAgICAgIC51bmlvbigpXHJcbiAgICAgICAgLnJlcGVhdEZvcmV2ZXIoKVxyXG4gICAgICAgIC5zdGFydCgpO1xyXG5cclxuICAgICAgICBjYy50d2Vlbih0aGlzLm5vZGUzKVxyXG4gICAgICAgIC5kZWxheSgyICogMC4zKSBcclxuICAgICAgICAudG8oMC4zLCB7c2NhbGU6IDF9KVxyXG4gICAgICAgIC50bygwLjMsIHtzY2FsZTogMS4zfSlcclxuICAgICAgICAudG8oMC4zLCB7c2NhbGU6IDF9KVxyXG4gICAgICAgIC51bmlvbigpXHJcbiAgICAgICAgLnJlcGVhdEZvcmV2ZXIoKVxyXG4gICAgICAgIC5zdGFydCgpO1xyXG5cclxuICAgIH1cclxuXHJcbiAgICBzZXRXWCgpe1xyXG4gICAgICAgIC8vQHRzLWlnbm9yZVxyXG4gICAgICAgaWYgKHR5cGVvZiB3eCAhPT0gJ3VuZGVmaW5lZCcgJiYgd3ggIT09IG51bGwpIHsgLy8g5Yik5pat5piv5ZCm5Zyo5b6u5L+h546v5aKDXHJcbiAgICAgICAgICAgIHd4LnNldFByZWZlcnJlZEZyYW1lc1BlclNlY29uZCg2MCk7XHJcbiAgICAgICAgXHJcblxyXG4gICAgICAgICAgICAvLyAvLyDorr7nva7ovazlj5HmjInpkq7ngrnlh7vlkI7nmoTlm57osINcclxuICAgICAgICAgICAgLy8gd3gub25TaGFyZUFwcE1lc3NhZ2UoKCkgPT4ge1xyXG4gICAgICAgICAgICAvLyAgICAgcmV0dXJuIHtcclxuICAgICAgICAgICAgLy8gICAgICAgICB0aXRsZTogJ+S9oOaDs+eOqeS4iuaAjuagt+eahOa4uOaIj++8nycsXHJcbiAgICAgICAgICAgIC8vICAgICAgICAgaW1hZ2VVcmw6ICcnLFxyXG4gICAgICAgICAgICAvLyAgICAgICAgIHF1ZXJ5OiAnJ1xyXG4gICAgICAgICAgICAvLyAgICAgfTtcclxuICAgICAgICAgICAgLy8gfSk7XHJcblxyXG4gICAgICAgICAgICB3eC5vblNoYXJlQXBwTWVzc2FnZShmdW5jdGlvbiAoKSB7XHJcbiAgICAgICAgICAgIC8vIOeUqOaIt+eCueWHu+S6huKAnOi9rOWPkeKAneaMiemSrlxyXG4gICAgICAgICAgICByZXR1cm4ge1xyXG4gICAgICAgICAgICAgICAgdGl0bGU6ICfkvaDmg7PnjqnkuIrmgI7moLfnmoTmuLjmiI/vvJ8nXHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfSlcclxuXHJcblxyXG4gICAgICAgICAgICAvLyDnm5HlkKzliIbkuqvliLDmnIvlj4vlnIjkuovku7ZcclxuICAgICAgICAgICAgLy9AdHMtaWdub3JlXHJcbiAgICAgICAgICAgIHd4Lm9uU2hhcmVUaW1lbGluZSgoKSA9PiB7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4ge1xyXG4gICAgICAgICAgICAgICAgICAgIHRpdGxlOiAn5L2g5oOz546p5LiK5oCO5qC355qE5ri45oiP77yfJ1xyXG4gICAgICAgICAgICAgICAgfTtcclxuICAgICAgICAgICAgfSk7XHJcblxyXG5cclxuXHJcblxyXG4gICAgICAgICAgICB3eC5zaG93U2hhcmVNZW51KCgpID0+IHtcclxuICAgICAgICAgICAgICAgIHJldHVybiB7XHJcbiAgICAgICAgICAgICAgICAgICAgdGl0bGU6ICfkvaDmg7PnjqnkuIrmgI7moLfnmoTmuLjmiI/vvJ8nLFxyXG4gICAgICAgICAgICAgICAgICAgIGltYWdlVXJsOiAnJyxcclxuICAgICAgICAgICAgICAgICAgICBxdWVyeTogJydcclxuICAgICAgICAgICAgICAgIH07XHJcbiAgICAgICAgICAgIH0pO1xyXG5cclxuXHJcbiAgICAgICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgd3guc2hvd1NoYXJlTWVudSh7XHJcbiAgICAgICAgICAgICAgICAgICAgbWVudXM6IFsnc2hhcmVBcHBNZXNzYWdlJywgJ3NoYXJlVGltZWxpbmUnXVxyXG4gICAgICAgICAgICAgICAgfSlcclxuICAgICAgICAgICAgfSwgMjAwMCk7XHJcblxyXG5cclxuXHJcbiAgICAgICAgICAgIC8vIOiuvue9ruWIhuS6q+WIsOaci+WPi+WciFxyXG4gICAgICAgICAgICAvL0B0cy1pZ25vcmVcclxuICAgICAgICAgICAgLy8gd3gudXBkYXRlU2hhcmVNZW51KHtcclxuICAgICAgICAgICAgLy8gICAgIHdpdGhTaGFyZVRpY2tldDogdHJ1ZSxcclxuICAgICAgICAgICAgLy8gICAgIHN1Y2Nlc3M6IChkYXRhKSA9PiB7XHJcbiAgICAgICAgICAgIC8vICAgICAgICAgY29uc29sZS5sb2coJ+abtOaWsOWIhuS6q+iPnOWNleaIkOWKnycsIGRhdGEpO1xyXG4gICAgICAgICAgICAvLyAgICAgfSxcclxuICAgICAgICAgICAgLy8gICAgIGZhaWw6IChkYXRhKSA9PiB7XHJcbiAgICAgICAgICAgIC8vICAgICAgICAgY29uc29sZS5sb2coJ+abtOaWsOWIhuS6q+iPnOWNleWksei0pScsIGRhdGEpO1xyXG4gICAgICAgICAgICAvLyAgICAgfSxcclxuICAgICAgICAgICAgLy8gICAgIGNvbXBsZXRlOiAoZGF0YSkgPT4ge1xyXG4gICAgICAgICAgICAvLyAgICAgICAgIGNvbnNvbGUubG9nKCfmm7TmlrDliIbkuqvoj5zljZXlrozmiJAnLCBkYXRhKTtcclxuICAgICAgICAgICAgLy8gICAgIH1cclxuICAgICAgICAgICAgLy8gfSk7XHJcblxyXG5cclxuXHJcbiAgICAgICAgICAgIC8vQHRzLWlnbm9yZVxyXG4gICAgICAgIH1cclxuICAgIFxyXG4gICAgfVxyXG5cclxuICAgIC8v5Yik5pat5p2l5rqQXHJcbiAgICBjb250YWluc1RyYWluKHN0cikge1xyXG4gICAgXHJcbiAgICAgICAgcmV0dXJuIC9mcm9tPXRyYWluL2kudGVzdChzdHIpO1xyXG4gICAgfVxyXG5cclxuICAgIC8v5byA5aeL5ri45oiP77yM6Lez6L2s6Iez5byV5a+86aG16Z2iXHJcbiAgICBzdGFydEdhbWUoKXtcclxuICAgICAgICBjYy5kaXJlY3Rvci5sb2FkU2NlbmUoXCJHYW1lU2NlbmVcIik7XHJcbiAgICAgICAgLy8gY2MuZGlyZWN0b3IubG9hZFNjZW5lKFwiR3VpZGVTY2VuZVwiKTtcclxuICAgIH1cclxuICAgIC8v5aSH55So77yM55So5p2l5rWL6K+V6Lez6L2sIOaMh+WumuWFs+WNoVxyXG4gICAgY2xpY2tCdG4oZXZlbnQsZGF0YSl7XHJcbiAgICAgICAgY2MuZnguR2FtZUNvbmZpZy5HTV9JTkZPLmN1c3RvbSA9IHBhcnNlSW50KGRhdGEpO1xyXG4gICAgICAgIGNjLmRpcmVjdG9yLmxvYWRTY2VuZShcIkdhbWVTY2VuZVwiKTtcclxuICAgIH0gICBcclxuICAgIC8v5omT5byA5o6S6KGM5qacXHJcbiAgICBvcGVuUmFuaygpe1xyXG4gICAgICAgIGNjLmRpcmVjdG9yLmxvYWRTY2VuZShcIlJhbmtTY2VuZVwiKTtcclxuICAgIH1cclxuXHJcbiAgICBcclxuICAgIHByb3RlY3RlZCB1cGRhdGUoZHQ6IG51bWJlcik6IHZvaWQge1xyXG4gICAgfVxyXG4gICAgXHJcbi8vICAgICAz5pyIMTfml6UgLSAz5pyIMjHml6Ug5bel5L2c5a6M5oiQ5YaF5a65XHJcblxyXG4vLyAx77ya5ri45oiP5qGG5p625pCt5bu6XHJcbi8vIDLvvJrliLbkvZwxOOS4quWfuuehgOaWueWdl+mihOWItuS9kyAo5pa55Z2X5Y+v57yW6L6R6aKc6Imy5LiO6YGT5YW35ZKM54q25oCBKVxyXG4vLyAz77ya5a6M5oiQ5Zyw5Zu+55qE5pCt5bu677yM5Y+v6YWN572uOCo45Lul5YaF77yM5Lu75oSP57uE5ZCI77yM5YyF5ous5Y+v57y65Y+j5ZKM6Zqc56KN54mp6YWN572uXHJcbi8vIDTvvJrlrozmiJDlnLDlm77lopnpnaLlu7rnq4vvvIzmoLnmja4g4oaRM+S4iumdouaehOW7uueahOWcsOWbvuiHquWKqOeUn+aIkOWimeS9k+OAglxyXG4vLyA177ya5YGa5a6M5pa55Z2X55qE5Z+656GA56e75Yqo77yM6Lef6ZqP5omL5oyH77yM6YGH5Yiw5pa55Z2X5oiW6ICF5aKZ5aOB5oiW6ICF6Zqc56KN54mp6Zi756KN56e75Yqo44CCXHJcbi8vIDbvvJrmlrnlnZfnmoToh6rliqjokL3ngrnlgZrlrowxMeS4quWfuuehgOaWueWdl+eahO+8iOacquWBmuWujOi/mOW3rjEx5Liq77yJXHJcblxyXG4vLyAz5pyIMjTml6UgLSAz5pyIMjjml6Ug6aKE6K6h5a6M5oiQ55uu5qCHXHJcblxyXG4vLyAx77ya5a6M5oiQ5YWo6YOo5pa55Z2X55qE6JC954K544CCXHJcbi8vIDLvvJrlrozmiJDpl6jnmoTmkK3lu7rvvIzpl6jlj6/pgInpopzoibLvvIzlj6/pgInlvIDlhbPmiJbogIXmmJ/mmJ/nrYnnibnmrornirbmgIFcclxuLy8gM++8muWujOaIkOaWueWdl+mAmui/h+mXqOeahOa4uOaIj+mAu+i+ke+8jOS9v+a4uOaIj+WPr+S7peacgOWfuuehgOi/kOihjOeOqei1t+adpVxyXG4vLyA077ya5Ye6NeWFs+eJiOacrO+8jOmFjeWQiOWwj+eZveWkh+ahiOWuoeaguOOAglxyXG4vLyA177ya5qC55o2u5pa55Z2X77yM5Zyw5Zu+77yM5Lul5Y+K6YGT5YW377yM5Yi25L2c5Zyw5Zu+57yW6L6R5ZmoICjmlrnlnZflkozlnLDlm77liLbkvZznmoTml7blgJnpg73lt7Lnu4/ogIPomZHliLDnvJbovpHlmajnmoTpnIDmsYLkuoYpIFxyXG4vLyBcdOS8mOWFiOWItuS9nO+8jOWQjue7reW8gOWPkeaLk+WxleeOqeazleWKn+iDveaXtu+8jOWwj+eZveWPr+WQjOatpei/m+ihjOWItuS9nOWFs+WNoeOAglxyXG59XHJcbiJdfQ== -//------QC-SOURCE-SPLIT------ - - (function() { - var nodeEnv = typeof require !== 'undefined' && typeof process !== 'undefined'; - var __module = nodeEnv ? module : {exports:{}}; - var __filename = 'preview-scripts/assets/Script/ControlManager.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, 'e35abcX5VRAoItO6mgFcYyX', 'ControlManager'); -// Script/ControlManager.ts - -"use strict"; -// Learn TypeScript: -// - https://docs.cocos.com/creator/manual/en/scripting/typescript.html -// Learn Attribute: -// - https://docs.cocos.com/creator/manual/en/scripting/reference/attributes.html -// Learn life-cycle callbacks: -// - https://docs.cocos.com/creator/manual/en/scripting/life-cycle-callbacks.html -var __extends = (this && this.__extends) || (function () { - var extendStatics = function (d, b) { - extendStatics = Object.setPrototypeOf || - ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) || - function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; }; - return extendStatics(d, b); - }; - return function (d, b) { - extendStatics(d, b); - function __() { this.constructor = d; } - d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); - }; -})(); -var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) { - var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; - if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc); - else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; - return c > 3 && r && Object.defineProperty(target, key, r), r; -}; -Object.defineProperty(exports, "__esModule", { value: true }); -var _a = cc._decorator, ccclass = _a.ccclass, property = _a.property; -var NewClass = /** @class */ (function (_super) { - __extends(NewClass, _super); - function NewClass() { - var _this = _super !== null && _super.apply(this, arguments) || this; - _this.Map = null; - _this.tip = null; - _this.reinforce = null; - _this.soil = null; - return _this; - // update (dt) {} - } - // LIFE-CYCLE CALLBACKS: - // onLoad () {} - NewClass.prototype.start = function () { - this.tipArray = []; - this.controlArray = []; - this.canTouch = true; - this.Reinforce = false; - this.Soil = false; - this.mapHeight = 0; - }; - NewClass.prototype.setPosition = function (tip) { - tip.setPosition(30, -25); - if (this.tipArray.length > 0) { - var length = this.tipArray.length + 1; - var posY = Math.ceil(length / 8) - 1; - var posX = length - Math.floor(posY) * 8 - 1; - tip.setPosition(30 + 48 * posX, -25 - 48 * posY + this.mapHeight); - } - }; - //清空所有 - NewClass.prototype.removeAllTip = function () { - if (!this.canTouch) - return; - if (this.tipArray.length > 0) { - cc.fx.AudioManager._instance.playEffect("qingkong", null); - for (var i = 0; i < this.tipArray.length; i++) { - var tip = this.tipArray[i]; - tip.active = false; - tip.removeFromParent(this.Map); - tip = null; - } - this.tipArray = []; - this.controlArray = []; - var drawingReset = cc.fx.GameConfig.CLICK_DATA.drawingReset + 1; - cc.fx.GameConfig.CLICK_SET("drawingReset", drawingReset); - cc.fx.Notifications.emit(cc.fx.Message.removeTip, "remove"); - this.mapHeight = 0; - } - }; - //撤回一步 - NewClass.prototype.back_Click = function () { - if (!this.canTouch) - return; - if (this.tipArray.length > 0) { - cc.fx.AudioManager._instance.playEffect("chehui", null); - var tip = this.tipArray[this.tipArray.length - 1]; - tip.active = false; - tip.removeFromParent(this.Map); - tip = null; - this.tipArray.pop(); - this.controlArray.pop(); - var drawingBack = cc.fx.GameConfig.CLICK_DATA.drawingBack + 1; - cc.fx.GameConfig.CLICK_SET("drawingBack", drawingBack); - cc.fx.Notifications.emit(cc.fx.Message.removeTip, "back"); - if (this.tipArray.length >= 24) { - if ((this.tipArray.length) % 8 == 0) { - this.mapMove(false); - } - } - } - }; - //点击事件 - NewClass.prototype.btn_Click = function (target, data) { - var GameManager = this.node.parent.getComponent("GameManager"); - if (GameManager.btnClick == true) { - GameManager.btnClick = false; - cc.fx.Notifications.emit(cc.fx.Message.guideNext); - } - cc.fx.Notifications.emit(cc.fx.Message.control, data); - if (!this.canTouch) - return; - var prefab = this.tip; - if (data == "reinforce" || data == "soil") { - prefab = this[data]; - if (data == "reinforce") { - if (this.Reinforce) { - this.Reinforce = false; - this.back_Click(); - return; - } - else { - cc.fx.AudioManager._instance.playEffect("jineng", null); - this.Reinforce = true; - this.Soil = false; - } - } - else if (data == "soil") { - if (this.Soil) { - this.Soil = false; - this.back_Click(); - return; - } - else { - cc.fx.AudioManager._instance.playEffect("jineng", null); - this.Soil = true; - this.Reinforce = false; - } - } - } - else { - cc.fx.AudioManager._instance.playEffect("fangxiang", null); - this.Reinforce = false; - this.Soil = false; - } - var tip = cc.instantiate(prefab); - if (data == "up") - tip.angle = 180; - if (data == "left") - tip.angle = -90; - if (data == "right") - tip.angle = 90; - tip.parent = this.Map; - if (this.controlArray[this.controlArray.length - 1] == "reinforce" || - this.controlArray[this.controlArray.length - 1] == "soil") { - if (data == "reinforce" || data == "soil") { - this.tipArray[this.tipArray.length - 1].removeFromParent(); - this.tipArray[this.tipArray.length - 1] = null; - this.tipArray.pop(); - this.controlArray.pop(); - } - } - this.setPosition(tip); - this.tipArray.push(tip); - this.controlArray.push(data); - if (this.tipArray.length >= 25) { - if ((this.tipArray.length - 1) % 8 == 0) { - this.mapMove(true); - } - } - }; - //地图放不下了上下移动 - NewClass.prototype.mapMove = function (type) { - if (type) - this.mapHeight += 48; - else - this.mapHeight -= 48; - for (var i = 0; i < this.tipArray.length; i++) { - var tip = this.tipArray[i]; - if (type) - tip.y += 48; - else - tip.y -= 48; - } - }; - //点击开始 创建河道 - NewClass.prototype.start_Click = function () { - if (!this.canTouch) - return; - this.canTouch = false; - cc.fx.AudioManager._instance.playEffect("build", null); - cc.fx.Notifications.emit(cc.fx.Message.startGame, this.controlArray); - }; - __decorate([ - property(cc.Node) - ], NewClass.prototype, "Map", void 0); - __decorate([ - property(cc.Prefab) - ], NewClass.prototype, "tip", void 0); - __decorate([ - property(cc.Prefab) - ], NewClass.prototype, "reinforce", void 0); - __decorate([ - property(cc.Prefab) - ], NewClass.prototype, "soil", void 0); - NewClass = __decorate([ - ccclass - ], NewClass); - return NewClass; -}(cc.Component)); -exports.default = NewClass; - -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,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImFzc2V0c1xcU2NyaXB0XFxDb250cm9sTWFuYWdlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsb0JBQW9CO0FBQ3BCLHdFQUF3RTtBQUN4RSxtQkFBbUI7QUFDbkIsa0ZBQWtGO0FBQ2xGLDhCQUE4QjtBQUM5QixrRkFBa0Y7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUU1RSxJQUFBLEtBQXNCLEVBQUUsQ0FBQyxVQUFVLEVBQWxDLE9BQU8sYUFBQSxFQUFFLFFBQVEsY0FBaUIsQ0FBQztBQUcxQztJQUFzQyw0QkFBWTtJQUFsRDtRQUFBLHFFQXVLQztRQXBLRyxTQUFHLEdBQVksSUFBSSxDQUFDO1FBRXBCLFNBQUcsR0FBYyxJQUFJLENBQUM7UUFFdEIsZUFBUyxHQUFjLElBQUksQ0FBQztRQUU1QixVQUFJLEdBQWMsSUFBSSxDQUFDOztRQTZKdkIsaUJBQWlCO0lBQ3JCLENBQUM7SUFySkcsd0JBQXdCO0lBRXhCLGVBQWU7SUFFZix3QkFBSyxHQUFMO1FBQ0ksSUFBSSxDQUFDLFFBQVEsR0FBRyxFQUFFLENBQUM7UUFDbkIsSUFBSSxDQUFDLFlBQVksR0FBRyxFQUFFLENBQUM7UUFDdkIsSUFBSSxDQUFDLFFBQVEsR0FBRyxJQUFJLENBQUM7UUFDckIsSUFBSSxDQUFDLFNBQVMsR0FBRyxLQUFLLENBQUM7UUFDdkIsSUFBSSxDQUFDLElBQUksR0FBRyxLQUFLLENBQUM7UUFDbEIsSUFBSSxDQUFDLFNBQVMsR0FBRyxDQUFDLENBQUM7SUFDdkIsQ0FBQztJQUVELDhCQUFXLEdBQVgsVUFBWSxHQUFHO1FBQ1gsR0FBRyxDQUFDLFdBQVcsQ0FBQyxFQUFFLEVBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUN4QixJQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBQztZQUN4QixJQUFJLE1BQU0sR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLE1BQU0sR0FBQyxDQUFDLENBQUM7WUFDcEMsSUFB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QUFDOzBDQUNHO0lBVE4sUUFBUTtRQUQ1QixPQUFPO09BQ2EsUUFBUSxDQXVLNUI7SUFBRCxlQUFDO0NBdktELEFBdUtDLENBdktxQyxFQUFFLENBQUMsU0FBUyxHQXVLakQ7a0JBdktvQixRQUFRIiwiZmlsZSI6IiIsInNvdXJjZVJvb3QiOiIvIiwic291cmNlc0NvbnRlbnQiOlsiLy8gTGVhcm4gVHlwZVNjcmlwdDpcclxuLy8gIC0gaHR0cHM6Ly9kb2NzLmNvY29zLmNvbS9jcmVhdG9yL21hbnVhbC9lbi9zY3JpcHRpbmcvdHlwZXNjcmlwdC5odG1sXHJcbi8vIExlYXJuIEF0dHJpYnV0ZTpcclxuLy8gIC0gaHR0cHM6Ly9kb2NzLmNvY29zLmNvbS9jcmVhdG9yL21hbnVhbC9lbi9zY3JpcHRpbmcvcmVmZXJlbmNlL2F0dHJpYnV0ZXMuaHRtbFxyXG4vLyBMZWFybiBsaWZlLWN5Y2xlIGNhbGxiYWNrczpcclxuLy8gIC0gaHR0cHM6Ly9kb2NzLmNvY29zLmNvbS9jcmVhdG9yL21hbnVhbC9lbi9zY3JpcHRpbmcvbGlmZS1jeWNsZS1jYWxsYmFja3MuaHRtbFxyXG5cclxuY29uc3Qge2NjY2xhc3MsIHByb3BlcnR5fSA9IGNjLl9kZWNvcmF0b3I7XHJcblxyXG5AY2NjbGFzc1xyXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBOZXdDbGFzcyBleHRlbmRzIGNjLkNvbXBvbmVudCB7XHJcblxyXG4gICAgQHByb3BlcnR5KGNjLk5vZGUpXHJcbiAgICBNYXA6IGNjLk5vZGUgPSBudWxsO1xyXG4gICAgQHByb3BlcnR5KGNjLlByZWZhYilcclxuICAgIHRpcDogY2MuUHJlZmFiID0gbnVsbDtcclxuICAgIEBwcm9wZXJ0eShjYy5QcmVmYWIpXHJcbiAgICByZWluZm9yY2U6IGNjLlByZWZhYiA9IG51bGw7XHJcbiAgICBAcHJvcGVydHkoY2MuUHJlZmFiKVxyXG4gICAgc29pbDogY2MuUHJlZmFiID0gbnVsbDtcclxuICAgIFxyXG5cclxuICAgIHRpcEFycmF5OmFueTtcclxuICAgIGNvbnRyb2xBcnJheTphbnk7XHJcbiAgICBjYW5Ub3VjaDpib29sZWFuO1xyXG4gICAgUmVpbmZvcmNlOmJvb2xlYW47XHJcbiAgICBTb2lsOmJvb2xlYW47XHJcbiAgICBtYXBIZWlnaHQ6bnVtYmVyO1xyXG4gICAgLy8gTElGRS1DWUNMRSBDQUxMQkFDS1M6XHJcblxyXG4gICAgLy8gb25Mb2FkICgpIHt9XHJcblxyXG4gICAgc3RhcnQgKCkge1xyXG4gICAgICAgIHRoaXMudGlwQXJyYXkgPSBbXTtcclxuICAgICAgICB0aGlzLmNvbnRyb2xBcnJheSA9IFtdO1xyXG4gICAgICAgIHRoaXMuY2FuVG91Y2ggPSB0cnVlO1xyXG4gICAgICAgIHRoaXMuUmVpbmZvcmNlID0gZmFsc2U7XHJcbiAgICAgICAgdGhpcy5Tb2lsID0gZmFsc2U7XHJcbiAgICAgICAgdGhpcy5tYXBIZWlnaHQgPSAwO1xyXG4gICAgfVxyXG5cclxuICAgIHNldFBvc2l0aW9uKHRpcCl7XHJcbiAgICAgICAgdGlwLnNldFBvc2l0aW9uKDMwLC0yNSk7XHJcbiAgICAgICAgaWYodGhpcy50aXBBcnJheS5sZW5ndGggPiAwKXtcclxuICAgICAgICAgICAgbGV0IGxlbmd0aCA9IHRoaXMudGlwQXJyYXkubGVuZ3RoKzE7XHJcbiAgICAgICAgICAgIGxldCBwb3NZID0gTWF0aC5jZWlsKGxlbmd0aC84KSAtIDE7XHJcbiAgICAgICAgICAgIGxldCBwb3NYID0gbGVuZ3RoIC0gTWF0aC5mbG9vcihwb3NZKSo4IC0gMTtcclxuICAgICAgICAgICAgdGlwLnNldFBvc2l0aW9uKDMwICsgNDgqcG9zWCwtMjUgLTQ4KnBvc1kgKyB0aGlzLm1hcEhlaWdodCk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG4gICAgLy/muIXnqbrmiYDmnIlcclxuICAgIHJlbW92ZUFsbFRpcCgpe1xyXG4gICAgICAgIGlmKCF0aGlzLmNhblRvdWNoKSByZXR1cm47XHJcbiAgICAgICAgaWYodGhpcy50aXBBcnJheS5sZW5ndGggPiAwKXtcclxuICAgICAgICAgICAgY2MuZnguQXVkaW9NYW5hZ2VyLl9pbnN0YW5jZS5wbGF5RWZmZWN0KFwicWluZ2tvbmdcIixudWxsKTtcclxuICAgICAgICAgICAgZm9yKGxldCBpPTA7IGk8dGhpcy50aXBBcnJheS5sZW5ndGg7aSsrKXtcclxuICAgICAgICAgICAgICAgIGxldCB0aXAgPSB0aGlzLnRpcEFycmF5W2ldO1xyXG4gICAgICAgICAgICAgICAgdGlwLmFjdGl2ZSA9IGZhbHNlO1xyXG4gICAgICAgICAgICAgICAgdGlwLnJlbW92ZUZyb21QYXJlbnQodGhpcy5NYXApO1xyXG4gICAgICAgICAgICAgICAgdGlwID0gbnVsbDtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB0aGlzLnRpcEFycmF5ID0gW107XHJcbiAgICAgICAgICAgIHRoaXMuY29udHJvbEFycmF5ID0gW107XHJcbiAgICAgICAgICAgIHZhciBkcmF3aW5nUmVzZXQgPSBjYy5meC5HYW1lQ29uZmlnLkNMSUNLX0RBVEEuZHJhd2luZ1Jlc2V0ICsgMTtcclxuICAgICAgICAgICAgY2MuZnguR2FtZUNvbmZpZy5DTElDS19TRVQoXCJkcmF3aW5nUmVzZXRcIixkcmF3aW5nUmVzZXQpO1xyXG4gICAgICAgICAgICBjYy5meC5Ob3RpZmljYXRpb25zLmVtaXQoY2MuZnguTWVzc2FnZS5yZW1vdmVUaXAsXCJyZW1vdmVcIik7XHJcbiAgICAgICAgICAgIHRoaXMubWFwSGVpZ2h0ID0gMDtcclxuICAgICAgICB9XHJcbiAgICB9XHJcbiAgICAvL+aSpOWbnuS4gOatpVxyXG4gICAgYmFja19DbGljaygpe1xyXG4gICAgICAgIGlmKCF0aGlzLmNhblRvdWNoKSByZXR1cm47XHJcbiAgICAgICAgaWYodGhpcy50aXBBcnJheS5sZW5ndGggPiAwKXtcclxuICAgICAgICAgICAgY2MuZnguQXVkaW9NYW5hZ2VyLl9pbnN0YW5jZS5wbGF5RWZmZWN0KFwiY2hlaHVpXCIsbnVsbCk7XHJcbiAgICAgICAgICAgIGxldCB0aXAgPSB0aGlzLnRpcEFycmF5W3RoaXMudGlwQXJyYXkubGVuZ3RoLTFdO1xyXG4gICAgICAgICAgICB0aXAuYWN0aXZlID0gZmFsc2U7XHJcbiAgICAgICAgICAgIHRpcC5yZW1vdmVGcm9tUGFyZW50KHRoaXMuTWFwKTtcclxuICAgICAgICAgICAgdGlwID0gbnVsbDtcclxuICAgICAgICAgICAgdGhpcy50aXBBcnJheS5wb3AoKTtcclxuICAgICAgICAgICAgdGhpcy5jb250cm9sQXJyYXkucG9wKCk7XHJcbiAgICAgICAgICAgIHZhciBkcmF3aW5nQmFjayA9IGNjLmZ4LkdhbWVDb25maWcuQ0xJQ0tfREFUQS5kcmF3aW5nQmFjayArIDE7XHJcbiAgICAgICAgICAgIGNjLmZ4LkdhbWVDb25maWcuQ0xJQ0tfU0VUKFwiZHJhd2luZ0JhY2tcIixkcmF3aW5nQmFjayk7XHJcbiAgICAgICAgICAgIGNjLmZ4Lk5vdGlmaWNhdGlvbnMuZW1pdChjYy5meC5NZXNzYWdlLnJlbW92ZVRpcCxcImJhY2tcIik7XHJcbiAgICAgICAgICAgIGlmKHRoaXMudGlwQXJyYXkubGVuZ3RoID49IDI0KXtcclxuICAgICAgICAgICAgICAgIGlmKCh0aGlzLnRpcEFycmF5Lmxlbmd0aCApJTggPT0gMCl7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5tYXBNb3ZlKGZhbHNlKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICAvL+eCueWHu+S6i+S7tlxyXG4gICAgYnRuX0NsaWNrKHRhcmdldCxkYXRhKXtcclxuICAgICAgICB2YXIgR2FtZU1hbmFnZXIgPSB0aGlzLm5vZGUucGFyZW50LmdldENvbXBvbmVudChcIkdhbWVNYW5hZ2VyXCIpO1xyXG4gICAgICAgIGlmKEdhbWVNYW5hZ2VyLmJ0bkNsaWNrID09IHRydWUpe1xyXG4gICAgICAgICAgICBHYW1lTWFuYWdlci5idG5DbGljayA9IGZhbHNlO1xyXG4gICAgICAgICAgICBjYy5meC5Ob3RpZmljYXRpb25zLmVtaXQoY2MuZnguTWVzc2FnZS5ndWlkZU5leHQpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBjYy5meC5Ob3RpZmljYXRpb25zLmVtaXQoY2MuZnguTWVzc2FnZS5jb250cm9sLGRhdGEpO1xyXG4gICAgICAgIGlmKCF0aGlzLmNhblRvdWNoKSByZXR1cm47XHJcbiAgICAgICAgbGV0IHByZWZhYiA9IHRoaXMudGlwO1xyXG4gICAgICAgIGlmKGRhdGEgPT0gXCJyZWluZm9yY2VcIiB8fCBkYXRhID09IFwic29pbFwiKXtcclxuICAgICAgICAgICAgcHJlZmFiID0gdGhpc1tkYXRhXTtcclxuICAgICAgICAgICAgaWYoZGF0YSA9PSBcInJlaW5mb3JjZVwiKXtcclxuICAgICAgICAgICAgICAgIGlmKHRoaXMuUmVpbmZvcmNlKXtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLlJlaW5mb3JjZSA9IGZhbHNlO1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuYmFja19DbGljaygpO1xyXG4gICAgICAgICAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICAgICAgICAgIH1lbHNle1xyXG4gICAgICAgICAgICAgICAgICAgIGNjLmZ4LkF1ZGlvTWFuYWdlci5faW5zdGFuY2UucGxheUVmZmVjdChcImppbmVuZ1wiLG51bGwpO1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuUmVpbmZvcmNlID0gdHJ1ZTtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLlNvaWwgPSBmYWxzZTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfSBcclxuICAgICAgICAgICAgZWxzZSBpZihkYXRhID09IFwic29pbFwiKXtcclxuICAgICAgICAgICAgICAgIGlmKHRoaXMuU29pbCl7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5Tb2lsID0gZmFsc2U7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5iYWNrX0NsaWNrKCk7XHJcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgICAgICAgICAgfWVsc2V7XHJcbiAgICAgICAgICAgICAgICAgICAgY2MuZnguQXVkaW9NYW5hZ2VyLl9pbnN0YW5jZS5wbGF5RWZmZWN0KFwiamluZW5nXCIsbnVsbCk7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5Tb2lsID0gdHJ1ZTtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLlJlaW5mb3JjZSA9IGZhbHNlO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9IFxyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNle1xyXG4gICAgICAgICAgICBjYy5meC5BdWRpb01hbmFnZXIuX2luc3RhbmNlLnBsYXlFZmZlY3QoXCJmYW5neGlhbmdcIixudWxsKTtcclxuICAgICAgICAgICAgdGhpcy5SZWluZm9yY2UgPSBmYWxzZTtcclxuICAgICAgICAgICAgdGhpcy5Tb2lsID0gZmFsc2U7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGxldCB0aXAgPSBjYy5pbnN0YW50aWF0ZShwcmVmYWIpO1xyXG4gICAgICAgIGlmKGRhdGEgPT0gXCJ1cFwiKSB0aXAuYW5nbGUgPSAxODA7XHJcbiAgICAgICAgaWYoZGF0YSA9PSBcImxlZnRcIikgdGlwLmFuZ2xlID0gLTkwO1xyXG4gICAgICAgIGlmKGRhdGEgPT0gXCJyaWdodFwiKSB0aXAuYW5nbGUgPSA5MDtcclxuICAgICAgICB0aXAucGFyZW50ID0gdGhpcy5NYXA7XHJcbiAgICBcclxuICAgICAgICBpZih0aGlzLmNvbnRyb2xBcnJheVt0aGlzLmNvbnRyb2xBcnJheS5sZW5ndGgtMV0gPT0gXCJyZWluZm9yY2VcIiB8fCBcclxuICAgICAgICAgICAgdGhpcy5jb250cm9sQXJyYXlbdGhpcy5jb250cm9sQXJyYXkubGVuZ3RoLTFdID09IFwic29pbFwiKXtcclxuICAgICAgICAgICAgICAgIGlmKGRhdGEgPT0gXCJyZWluZm9yY2VcIiB8fCBkYXRhID09IFwic29pbFwiKXtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLnRpcEFycmF5W3RoaXMudGlwQXJyYXkubGVuZ3RoLTFdLnJlbW92ZUZyb21QYXJlbnQoKTtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLnRpcEFycmF5W3RoaXMudGlwQXJyYXkubGVuZ3RoLTFdID0gbnVsbDtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLnRpcEFycmF5LnBvcCgpO1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuY29udHJvbEFycmF5LnBvcCgpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLnNldFBvc2l0aW9uKHRpcCk7XHJcblxyXG4gICAgICAgIHRoaXMudGlwQXJyYXkucHVzaCh0aXApO1xyXG4gICAgICAgIHRoaXMuY29udHJvbEFycmF5LnB1c2goZGF0YSk7XHJcbiAgICBcclxuICAgICAgICBpZih0aGlzLnRpcEFycmF5Lmxlbmd0aCA+PSAyNSl7XHJcbiAgICAgICAgICAgIGlmKCh0aGlzLnRpcEFycmF5Lmxlbmd0aCAtIDEpJTggPT0gMCl7XHJcbiAgICAgICAgICAgICAgICB0aGlzLm1hcE1vdmUodHJ1ZSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICB9XHJcbiAgICAvL+WcsOWbvuaUvuS4jeS4i+S6huS4iuS4i+enu+WKqFxyXG4gICAgbWFwTW92ZSh0eXBlKXtcclxuICAgICAgICBpZih0eXBlKSB0aGlzLm1hcEhlaWdodCArPSA0ODtcclxuICAgICAgICBlbHNlIHRoaXMubWFwSGVpZ2h0IC09IDQ4O1xyXG4gICAgICAgIGZvcihsZXQgaT0wOyBpPHRoaXMudGlwQXJyYXkubGVuZ3RoO2krKyl7XHJcbiAgICAgICAgICAgIGxldCB0aXAgPSB0aGlzLnRpcEFycmF5W2ldO1xyXG4gICAgICAgICAgICBpZih0eXBlKXRpcC55ICs9IDQ4O1xyXG4gICAgICAgICAgICBlbHNlIHRpcC55IC09IDQ4O1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICAvL+eCueWHu+W8gOWniyDliJvlu7rmsrPpgZNcclxuICAgIHN0YXJ0X0NsaWNrKCl7XHJcbiAgICAgICAgaWYoIXRoaXMuY2FuVG91Y2gpIHJldHVybjtcclxuICAgICAgICB0aGlzLmNhblRvdWNoID0gZmFsc2U7XHJcbiAgICAgICAgY2MuZnguQXVkaW9NYW5hZ2VyLl9pbnN0YW5jZS5wbGF5RWZmZWN0KFwiYnVpbGRcIixudWxsKTtcclxuICAgICAgICBjYy5meC5Ob3RpZmljYXRpb25zLmVtaXQoY2MuZnguTWVzc2FnZS5zdGFydEdhbWUsdGhpcy5jb250cm9sQXJyYXkpO1xyXG4gICAgfVxyXG5cclxuICAgIC8vIHVwZGF0ZSAoZHQpIHt9XHJcbn1cclxuIl19 -//------QC-SOURCE-SPLIT------ - - (function() { - var nodeEnv = typeof require !== 'undefined' && typeof process !== 'undefined'; - var __module = nodeEnv ? module : {exports:{}}; - var __filename = 'preview-scripts/assets/Script/JiaZai.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, '1dc93b4fehOrpGgTkihBH4g', 'JiaZai'); -// Script/JiaZai.ts - -"use strict"; -// Learn TypeScript: -// - https://docs.cocos.com/creator/manual/en/scripting/typescript.html -// Learn Attribute: -// - https://docs.cocos.com/creator/manual/en/scripting/reference/attributes.html -// Learn life-cycle callbacks: -// - https://docs.cocos.com/creator/manual/en/scripting/life-cycle-callbacks.html -var __extends = (this && this.__extends) || (function () { - var extendStatics = function (d, b) { - extendStatics = Object.setPrototypeOf || - ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) || - function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; }; - return extendStatics(d, b); - }; - return function (d, b) { - extendStatics(d, b); - function __() { this.constructor = d; } - d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); - }; -})(); -var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) { - var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; - if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc); - else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; - return c > 3 && r && Object.defineProperty(target, key, r), r; -}; -Object.defineProperty(exports, "__esModule", { value: true }); -var GameManager_1 = require("./GameManager"); -var NumberToImage_1 = require("./NumberToImage"); -var MiniGameSdk_1 = require("./Sdk/MiniGameSdk"); -var lq_collide_system_1 = require("./lq_collide_system/lq_collide_system"); -var _a = cc._decorator, ccclass = _a.ccclass, property = _a.property; -var NewClass = /** @class */ (function (_super) { - __extends(NewClass, _super); - function NewClass() { - var _this = _super !== null && _super.apply(this, arguments) || this; - _this.node1 = null; - _this.node2 = null; - _this.node3 = null; - _this.Block_Color = []; - _this.custom = null; - _this.level = null; - _this.coin = null; - _this.Stamina = null; - return _this; - // update (dt) {} - } - // LIFE-CYCLE CALLBACKS: - NewClass.prototype.onLoad = function () { - cc.game.setFrameRate(63); - lq_collide_system_1.LQCollideSystem.is_enable = true; - // console.log("加载关卡配置2"); - // window.initMgr(); - GameManager_1.default._instance.Block_Color = this.Block_Color; - if (cc.fx.GameConfig.GM_INFO.first) { - console.log("————————准备注册事件", cc.fx.GameConfig.GM_INFO.openid); - if (cc.fx.GameConfig.GM_INFO.openid != "") { - console.log("————————发送注册事件"); - cc.fx.GameTool.shushu_Track("register"); - } - cc.fx.AudioManager._instance.playEffect("zhuan1", null); - this.node.getChildByName("zhuanchang").active = true; - this.node.getChildByName("zhuanchang").getComponent(sp.Skeleton).setAnimation(1, "up", false); - setTimeout(function () { - cc.fx.GameConfig.GM_INFO.first = false; - cc.director.loadScene("GameScene"); - }, 1000); - } - }; - NewClass.prototype.start = function () { - // console.log("已经进入Home界面"); - // console.log("金币",cc.fx.GameConfig.GM_INFO.coin); - // console.log("关卡",cc.fx.GameConfig.GM_INFO.level+1); - var _this = this; - cc.fx.GameTool.getHealth(null); - // cc.fx.GameConfig.LEVEL_INFO_init(false,0); - setTimeout(function () { - NumberToImage_1.default.numberToImageNodes((cc.fx.GameConfig.GM_INFO.level + 1), 25, 15, "big_", _this.level, false); - NumberToImage_1.default.numberToImageNodes(cc.fx.GameConfig.GM_INFO.coin, 30, 15, "coin_", _this.coin, true); - _this.setHealthInfo(); - }, 0); - if (cc.fx.GameConfig.GM_INFO.gameState) { - this.node.getChildByName("zhuanchang").active = true; - setTimeout(function () { - cc.fx.AudioManager._instance.playEffect("zhuan2", null); - _this.node.getChildByName("zhuanchang").getComponent(sp.Skeleton).setAnimation(1, "down", false); - _this.node.getChildByName("zhuanchang").getComponent(sp.Skeleton).setCompleteListener(function (entry) { - if (entry.animation.name === "down" && !cc.fx.GameConfig.GM_INFO.first) { - // 动画播放结束后执行的逻辑 - _this.node.getChildByName("zhuanchang").active = false; - } - }); - }, 500); - } - else { - if (!cc.fx.GameConfig.GM_INFO.first) - this.node.getChildByName("zhuanchang").active = false; - } - }; - //开始倒计时 - NewClass.prototype.startTimeCutDown = function () { - this.scheduleCallback = function () { - var _this = this; - if (this.pause) - return; - if (cc.fx.GameConfig.GM_INFO.min_Time <= 0) { - this.stopTimeCutDown(); - var timeTemp = cc.fx.GameTool.getTimeMargin(cc.fx.GameConfig.GM_INFO.min_Time); - this.Stamina.getChildByName("time").getComponent(cc.Label).string = timeTemp; - cc.fx.GameTool.setUserHealth(1, function (data) { - cc.fx.GameTool.getHealth(null); - _this.setHealthInfo(); - }); - } - else { - cc.fx.GameConfig.GM_INFO.min_Time -= 1; - var timeTemp = cc.fx.GameTool.getTimeMargin(cc.fx.GameConfig.GM_INFO.min_Time); - this.Stamina.getChildByName("time").getComponent(cc.Label).string = timeTemp; - } - }.bind(this); - this.schedule(this.scheduleCallback, 1); - }; - // 停止倒计时 - NewClass.prototype.stopTimeCutDown = function () { - if (this.scheduleCallback) { - this.unschedule(this.scheduleCallback); - } - }; - NewClass.prototype.setHealthInfo = function () { - if (cc.fx.GameConfig.GM_INFO.hp == 5) { - this.Stamina.getChildByName("man").active = true; - this.Stamina.getChildByName("health").active = false; - this.Stamina.getChildByName("time").active = false; - } - else { - this.Stamina.getChildByName("man").active = false; - this.Stamina.getChildByName("health").active = true; - NumberToImage_1.default.numberToImageNodes((cc.fx.GameConfig.GM_INFO.hp), 25, 15, "coin_", this.Stamina.getChildByName("health"), false); - this.Stamina.getChildByName("time").active = true; - if (cc.fx.GameConfig.GM_INFO.min_Time != 0) { - var time = cc.fx.GameTool.getTimeMargin(cc.fx.GameConfig.GM_INFO.min_Time); - this.Stamina.getChildByName("time").getComponent(cc.Label).string = time; - this.startTimeCutDown(); - } - } - }; - NewClass.prototype.startGame = function () { - cc.fx.AudioManager._instance.playEffect("anniu_Big", null); - if (cc.fx.GameConfig.GM_INFO.hp < 1) { - MiniGameSdk_1.MiniGameSdk.API.showToast("体力值不足"); - return; - } - if (this.node.getChildByName("Load").getChildByName("startBtn").getComponent("btnControl")._touch) { - this.node.getChildByName("Load").getChildByName("startBtn").getComponent("btnControl").setTouch(false); - // if(this.custom.string != ""){ - // cc.fx.GameConfig.GM_INFO.level = parseInt(this.custom.string) - 1; - // // cc.fx.StorageMessage.setStorage("level",cc.fx.GameConfig.GM_INFO.level.toString()); - // cc.fx.GameConfig.LEVEL_INFO_init(true); - // } - // else{ - cc.fx.AudioManager._instance.playEffect("zhuan1", null); - this.node.getChildByName("zhuanchang").active = true; - this.node.getChildByName("zhuanchang").getComponent(sp.Skeleton).setAnimation(1, "up", false); - cc.fx.GameConfig.LEVEL_INFO_init(true, 1000); - // } - } - }; - NewClass.prototype.closeRank = function () { - this.node.getChildByName("Rank").active = false; - }; - NewClass.prototype.openRank = function () { - this.node.getChildByName("Rank").active = true; - }; - NewClass.prototype.openReward = function () { - this.node.getChildByName("Reward").active = true; - }; - NewClass.prototype.clickShop = function () { - // 假设已经获取到了 userId 和 productId - var userId = cc.fx.GameConfig.GM_INFO.openid; - var productId = '1'; - console.log("即将创建createorder"); - //@ts-ignore - wx.cloud.callFunction({ - name: "createOrder", - data: { - "userId": userId, - "productId": productId, - }, - success: function (res) { - // 取得云函数返回的订单信息 - console.log("createOrder结果:", res.result); - var payment = res.result.paymentResult.payment; - console.log("payment:", payment); - // 调起微信客户端支付 - //@ts-ignore - // 调起微信客户端支付 - //@ts-ignore - wx.requestPayment({ - // 时间戳,从 1970 年 1 月 1 日 00:00:00 至今的秒数,即当前的时间 - timeStamp: payment.timeStamp, - // 随机字符串,长度为32个字符以下 - nonceStr: payment.nonceStr, - // 统一下单接口返回的 prepay_id 参数值 - package: payment.package, - // 签名算法,暂支持 MD5、HMAC-SHA256 - signType: payment.signType || 'MD5', - // 支付签名 - paySign: payment.paySign, - success: function (res) { - /* 成功回调 */ - console.log("支付成功", res); - }, - fail: function (res) { - /* 失败回调 */ - console.log("支付失败", res); - }, - complete: function (res) { - console.log("支付完成", res); - } - }); - }, - }); - }; - NewClass.prototype.openPause = function () { - cc.fx.AudioManager._instance.playEffect("anniu_little", null); - console.log(cc.fx.GameConfig.GM_INFO); - if (cc.fx.GameConfig.GM_INFO.openid == undefined) { - console.log(cc.fx.GameConfig.GM_INFO.openid); - cc.fx.GameConfig.GM_INFO.openid = ""; - } - this.node.getChildByName("Pause").active = true; - this.node.getChildByName("Pause").getChildByName("openID").getComponent(cc.Label).string = cc.fx.GameConfig.GM_INFO.openid; - }; - NewClass.prototype.closePause = function () { - cc.fx.AudioManager._instance.playEffect("anniu_little", null); - this.node.getChildByName("Pause").active = false; - }; - NewClass.prototype.closeReward = function () { - this.node.getChildByName("Reward").active = false; - }; - NewClass.prototype.openStamina = function () { - this.node.getChildByName("Stamina").active = true; - }; - NewClass.prototype.closeStamina = function () { - this.node.getChildByName("Stamina").active = false; - }; - __decorate([ - property(cc.Node) - ], NewClass.prototype, "node1", void 0); - __decorate([ - property(cc.Node) - ], NewClass.prototype, "node2", void 0); - __decorate([ - property(cc.Node) - ], NewClass.prototype, "node3", void 0); - __decorate([ - property({ type: [cc.SpriteAtlas], tooltip: "方块颜色" }) - ], NewClass.prototype, "Block_Color", void 0); - __decorate([ - property(cc.EditBox) - ], NewClass.prototype, "custom", void 0); - __decorate([ - property(cc.Node) - ], NewClass.prototype, "level", void 0); - __decorate([ - property(cc.Node) - ], NewClass.prototype, "coin", void 0); - __decorate([ - property(cc.Node) - ], NewClass.prototype, "Stamina", void 0); - NewClass = __decorate([ - ccclass - ], NewClass); - return NewClass; -}(cc.Component)); -exports.default = NewClass; - -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,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImFzc2V0c1xcU2NyaXB0XFxKaWFaYWkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLG9CQUFvQjtBQUNwQix3RUFBd0U7QUFDeEUsbUJBQW1CO0FBQ25CLGtGQUFrRjtBQUNsRiw4QkFBOEI7QUFDOUIsa0ZBQWtGOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFFbEYsNkNBQXdDO0FBQ3hDLGlEQUE0QztBQUM1QyxpREFBZ0Q7QUFDaEQsMkVBQXNFO0FBQ2hFLElBQUEsS0FBc0IsRUFBRSxDQUFDLFVBQVUsRUFBbEMsT0FBTyxhQUFBLEVBQUUsUUFBUSxjQUFpQixDQUFDO0FBRzFDO0lBQXNDLDRCQUFZO0lBQWxEO1FBQUEscUVBOFBDO1FBM1BHLFdBQUssR0FBWSxJQUFJLENBQUM7UUFHdEIsV0FBSyxHQUFZLElBQUksQ0FBQztRQUd0QixXQUFLLEdBQVksSUFBSSxDQUFDO1FBS3RCLGlCQUFXLEdBQTJCLEVBQUUsQ0FBQztRQUd6QyxZQUFNLEdBQWUsSUFBSSxDQUFDO1FBSzFCLFdBQUssR0FBWSxJQUFJLENBQUM7UUFHdEIsVUFBSSxHQUFZLElBQUksQ0FBQztRQUdyQixhQUFPLEdBQVksSUFBSSxDQUFDOztRQWlPeEIsaUJBQWlCO0lBQ3JCLENBQUM7SUEvTkcsd0JBQXdCO0lBRXhCLHlCQUFNLEdBQU47UUFDSSxFQUFFLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUN6QixtQ0FBZSxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUM7UUFDakMsMEJBQTBCO1FBQzFCLG9CQUFvQjtRQUNwQixxQkFBVyxDQUFDLFNBQVMsQ0FBQyxXQUFXLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQztRQUNyRCxJQUFHLEVBQUUsQ0FBQyxFQUFFLENBQUMsVUFBVSxDQUFDLE9BQU8sQ0FBQyxLQUFLLEVBQUM7WUFDMUIsT0FBTyxDQUFDLEdBQUcsQ0FBQyxnQkFBZ0IsRUFBQyxFQUFFLENBQUMsRUFBRSxDQUFD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OzJDQUNJO0lBR3RCO1FBREMsUUFBUSxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUM7MENBQ0c7SUFHckI7UUFEQyxRQUFRLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQzs2Q0FDTTtJQTVCUCxRQUFRO1FBRDVCLE9BQU87T0FDYSxRQUFRLENBOFA1QjtJQUFELGVBQUM7Q0E5UEQsQUE4UEMsQ0E5UHFDLEVBQUUsQ0FBQyxTQUFTLEdBOFBqRDtrQkE5UG9CLFFBQVEiLCJmaWxlIjoiIiwic291cmNlUm9vdCI6Ii8iLCJzb3VyY2VzQ29udGVudCI6WyIvLyBMZWFybiBUeXBlU2NyaXB0OlxyXG4vLyAgLSBodHRwczovL2RvY3MuY29jb3MuY29tL2NyZWF0b3IvbWFudWFsL2VuL3NjcmlwdGluZy90eXBlc2NyaXB0Lmh0bWxcclxuLy8gTGVhcm4gQXR0cmlidXRlOlxyXG4vLyAgLSBodHRwczovL2RvY3MuY29jb3MuY29tL2NyZWF0b3IvbWFudWFsL2VuL3NjcmlwdGluZy9yZWZlcmVuY2UvYXR0cmlidXRlcy5odG1sXHJcbi8vIExlYXJuIGxpZmUtY3ljbGUgY2FsbGJhY2tzOlxyXG4vLyAgLSBodHRwczovL2RvY3MuY29jb3MuY29tL2NyZWF0b3IvbWFudWFsL2VuL3NjcmlwdGluZy9saWZlLWN5Y2xlLWNhbGxiYWNrcy5odG1sXHJcblxyXG5pbXBvcnQgR2FtZU1hbmFnZXIgZnJvbSBcIi4vR2FtZU1hbmFnZXJcIjtcclxuaW1wb3J0IE51bWJlclRvSW1hZ2UgZnJvbSBcIi4vTnVtYmVyVG9JbWFnZVwiO1xyXG5pbXBvcnQgeyBNaW5pR2FtZVNkayB9IGZyb20gXCIuL1Nkay9NaW5pR2FtZVNka1wiO1xyXG5pbXBvcnQge0xRQ29sbGlkZVN5c3RlbX0gZnJvbSBcIi4vbHFfY29sbGlkZV9zeXN0ZW0vbHFfY29sbGlkZV9zeXN0ZW1cIjtcclxuY29uc3Qge2NjY2xhc3MsIHByb3BlcnR5fSA9IGNjLl9kZWNvcmF0b3I7XHJcblxyXG5AY2NjbGFzc1xyXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBOZXdDbGFzcyBleHRlbmRzIGNjLkNvbXBvbmVudCB7XHJcblxyXG4gICAgQHByb3BlcnR5KGNjLk5vZGUpXHJcbiAgICBub2RlMTogY2MuTm9kZSA9IG51bGw7XHJcblxyXG4gICAgQHByb3BlcnR5KGNjLk5vZGUpXHJcbiAgICBub2RlMjogY2MuTm9kZSA9IG51bGw7XHJcblxyXG4gICAgQHByb3BlcnR5KGNjLk5vZGUpXHJcbiAgICBub2RlMzogY2MuTm9kZSA9IG51bGw7XHJcblxyXG4gICAgXHJcblxyXG4gICAgQHByb3BlcnR5KHt0eXBlOiBbY2MuU3ByaXRlQXRsYXNdLCB0b29sdGlwOlwi5pa55Z2X6aKc6ImyXCJ9KVxyXG4gICAgQmxvY2tfQ29sb3IgOiBBcnJheTxjYy5TcHJpdGVBdGxhcz4gPSBbXTtcclxuXHJcbiAgICBAcHJvcGVydHkoY2MuRWRpdEJveClcclxuICAgIGN1c3RvbTogY2MuRWRpdEJveCA9IG51bGw7XHJcbiAgICBcclxuXHJcblxyXG4gICAgQHByb3BlcnR5KGNjLk5vZGUpXHJcbiAgICBsZXZlbDogY2MuTm9kZSA9IG51bGw7XHJcblxyXG4gICAgQHByb3BlcnR5KGNjLk5vZGUpXHJcbiAgICBjb2luOiBjYy5Ob2RlID0gbnVsbDtcclxuXHJcbiAgICBAcHJvcGVydHkoY2MuTm9kZSlcclxuICAgIFN0YW1pbmE6IGNjLk5vZGUgPSBudWxsO1xyXG4gICAgc2NoZWR1bGVDYWxsYmFjazogYW55O1xyXG5cclxuICAgIC8vIExJRkUtQ1lDTEUgQ0FMTEJBQ0tTOlxyXG5cclxuICAgIG9uTG9hZCAoKSB7XHJcbiAgICAgICAgY2MuZ2FtZS5zZXRGcmFtZVJhdGUoNjMpOyBcclxuICAgICAgICBMUUNvbGxpZGVTeXN0ZW0uaXNfZW5hYmxlID0gdHJ1ZTtcclxuICAgICAgICAvLyBjb25zb2xlLmxvZyhcIuWKoOi9veWFs+WNoemFjee9rjJcIik7XHJcbiAgICAgICAgLy8gd2luZG93LmluaXRNZ3IoKTtcclxuICAgICAgICBHYW1lTWFuYWdlci5faW5zdGFuY2UuQmxvY2tfQ29sb3IgPSB0aGlzLkJsb2NrX0NvbG9yO1xyXG4gICAgICAgIGlmKGNjLmZ4LkdhbWVDb25maWcuR01fSU5GTy5maXJzdCl7XHJcbiAgICAgICAgICAgICAgICBjb25zb2xlLmxvZyhcIuKAlOKAlOKAlOKAlOKAlOKAlOKAlOKAlOWHhuWkh+azqOWGjOS6i+S7tlwiLGNjLmZ4LkdhbWVDb25maWcuR01fSU5GTy5vcGVuaWQpO1xyXG4gICAgICAgICAgICBpZihjYy5meC5HYW1lQ29uZmlnLkdNX0lORk8ub3BlbmlkICE9IFwiXCIpe1xyXG4gICAgICAgICAgICAgICAgY29uc29sZS5sb2coXCLigJTigJTigJTigJTigJTigJTigJTigJTlj5HpgIHms6jlhozkuovku7ZcIik7XHJcbiAgICAgICAgICAgICAgICBjYy5meC5HYW1lVG9vbC5zaHVzaHVfVHJhY2soXCJyZWdpc3RlclwiKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBjYy5meC5BdWRpb01hbmFnZXIuX2luc3RhbmNlLnBsYXlFZmZlY3QoXCJ6aHVhbjFcIixudWxsKTtcclxuICAgICAgICAgICAgdGhpcy5ub2RlLmdldENoaWxkQnlOYW1lKFwiemh1YW5jaGFuZ1wiKS5hY3RpdmUgPSB0cnVlO1xyXG4gICAgICAgICAgICB0aGlzLm5vZGUuZ2V0Q2hpbGRCeU5hbWUoXCJ6aHVhbmNoYW5nXCIpLmdldENvbXBvbmVudChzcC5Ta2VsZXRvbikuc2V0QW5pbWF0aW9uKDEsXCJ1cFwiLGZhbHNlKTtcclxuICAgICAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgIGNjLmZ4LkdhbWVDb25maWcuR01fSU5GTy5maXJzdCA9IGZhbHNlO1xyXG4gICAgICAgICAgICAgICAgICBjYy5kaXJlY3Rvci5sb2FkU2NlbmUoXCJHYW1lU2NlbmVcIik7XHJcbiAgICAgICAgICAgIH0sIDEwMDApO1xyXG4gICAgICAgICAgXHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHN0YXJ0ICgpIHtcclxuICAgICAgICAvLyBjb25zb2xlLmxvZyhcIuW3sue7j+i/m+WFpUhvbWXnlYzpnaJcIik7XHJcbiAgICAgICAgLy8gY29uc29sZS5sb2coXCLph5HluIFcIixjYy5meC5HYW1lQ29uZmlnLkdNX0lORk8uY29pbik7XHJcbiAgICAgICAgLy8gY29uc29sZS5sb2coXCLlhbPljaFcIixjYy5meC5HYW1lQ29uZmlnLkdNX0lORk8ubGV2ZWwrMSk7XHJcblxyXG4gICAgICAgIGNjLmZ4LkdhbWVUb29sLmdldEhlYWx0aChudWxsKTtcclxuICAgICAgICAvLyBjYy5meC5HYW1lQ29uZmlnLkxFVkVMX0lORk9faW5pdChmYWxzZSwwKTtcclxuICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgICAgICAgTnVtYmVyVG9JbWFnZS5udW1iZXJUb0ltYWdlTm9kZXMoKGNjLmZ4LkdhbWVDb25maWcuR01fSU5GTy5sZXZlbCsxKSwyNSwxNSxcImJpZ19cIix0aGlzLmxldmVsLGZhbHNlKTtcclxuICAgICAgICAgICAgTnVtYmVyVG9JbWFnZS5udW1iZXJUb0ltYWdlTm9kZXMoY2MuZnguR2FtZUNvbmZpZy5HTV9JTkZPLmNvaW4sMzAsMTUsXCJjb2luX1wiLHRoaXMuY29pbix0cnVlKTtcclxuICAgICAgICAgICAgdGhpcy5zZXRIZWFsdGhJbmZvKCk7XHJcbiAgICAgICAgfSwgMCk7XHJcbiAgICAgICAgaWYoY2MuZnguR2FtZUNvbmZpZy5HTV9JTkZPLmdhbWVTdGF0ZSl7XHJcbiAgICAgICAgICAgIHRoaXMubm9kZS5nZXRDaGlsZEJ5TmFtZShcInpodWFuY2hhbmdcIikuYWN0aXZlID0gdHJ1ZTtcclxuICAgICAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgICAgICAgICAgICBjYy5meC5BdWRpb01hbmFnZXIuX2luc3RhbmNlLnBsYXlFZmZlY3QoXCJ6aHVhbjJcIixudWxsKTtcclxuICAgICAgICAgICAgICAgIHRoaXMubm9kZS5nZXRDaGlsZEJ5TmFtZShcInpodWFuY2hhbmdcIikuZ2V0Q29tcG9uZW50KHNwLlNrZWxldG9uKS5zZXRBbmltYXRpb24oMSxcImRvd25cIixmYWxzZSk7XHJcbiAgICAgICAgICAgICAgICB0aGlzLm5vZGUuZ2V0Q2hpbGRCeU5hbWUoXCJ6aHVhbmNoYW5nXCIpLmdldENvbXBvbmVudChzcC5Ta2VsZXRvbikuc2V0Q29tcGxldGVMaXN0ZW5lcigoZW50cnkpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICBpZiAoZW50cnkuYW5pbWF0aW9uLm5hbWUgPT09IFwiZG93blwiICYmICFjYy5meC5HYW1lQ29uZmlnLkdNX0lORk8uZmlyc3QpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgLy8g5Yqo55S75pKt5pS+57uT5p2f5ZCO5omn6KGM55qE6YC76L6RXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMubm9kZS5nZXRDaGlsZEJ5TmFtZShcInpodWFuY2hhbmdcIikuYWN0aXZlID0gZmFsc2U7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgIH0sIDUwMCk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2V7XHJcbiAgICAgICAgICAgIGlmKCFjYy5meC5HYW1lQ29uZmlnLkdNX0lORk8uZmlyc3QpXHJcbiAgICAgICAgICAgICAgICB0aGlzLm5vZGUuZ2V0Q2hpbGRCeU5hbWUoXCJ6aHVhbmNoYW5nXCIpLmFjdGl2ZSA9IGZhbHNlO1xyXG4gICAgICAgIH1cclxuXHJcblxyXG5cclxuICAgIH1cclxuXHJcbiAgICAvL+W8gOWni+WAkuiuoeaXtlxyXG4gICAgc3RhcnRUaW1lQ3V0RG93bigpe1xyXG4gICAgICAgIHRoaXMuc2NoZWR1bGVDYWxsYmFjayA9IGZ1bmN0aW9uKCl7XHJcbiAgICAgICAgICAgIGlmKHRoaXMucGF1c2UpIHJldHVybjtcclxuICAgICAgICAgICAgaWYoY2MuZnguR2FtZUNvbmZpZy5HTV9JTkZPLm1pbl9UaW1lIDw9IDApe1xyXG4gICAgICAgICAgICAgICAgdGhpcy5zdG9wVGltZUN1dERvd24oKTtcclxuICAgICAgICAgICAgICAgIHZhciB0aW1lVGVtcCA9IGNjLmZ4LkdhbWVUb29sLmdldFRpbWVNYXJnaW4oY2MuZnguR2FtZUNvbmZpZy5HTV9JTkZPLm1pbl9UaW1lKTtcclxuICAgICAgICAgICAgICAgIHRoaXMuU3RhbWluYS5nZXRDaGlsZEJ5TmFtZShcInRpbWVcIikuZ2V0Q29tcG9uZW50KGNjLkxhYmVsKS5zdHJpbmcgPSB0aW1lVGVtcDtcclxuICAgICAgICAgICAgICAgIGNjLmZ4LkdhbWVUb29sLnNldFVzZXJIZWFsdGgoMSwoZGF0YSk9PntcclxuICAgICAgICAgICAgICAgICAgICBjYy5meC5HYW1lVG9vbC5nZXRIZWFsdGgobnVsbCk7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5zZXRIZWFsdGhJbmZvKCk7XHJcbiAgICAgICAgICAgICAgICB9KVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGVsc2V7XHJcbiAgICAgICAgICAgICAgICBjYy5meC5HYW1lQ29uZmlnLkdNX0lORk8ubWluX1RpbWUgLT0gMTtcclxuICAgICAgICAgICAgICAgIHZhciB0aW1lVGVtcCA9IGNjLmZ4LkdhbWVUb29sLmdldFRpbWVNYXJnaW4oY2MuZnguR2FtZUNvbmZpZy5HTV9JTkZPLm1pbl9UaW1lKTtcclxuICAgICAgICAgICAgICAgIHRoaXMuU3RhbWluYS5nZXRDaGlsZEJ5TmFtZShcInRpbWVcIikuZ2V0Q29tcG9uZW50KGNjLkxhYmVsKS5zdHJpbmcgPSB0aW1lVGVtcDtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH0uYmluZCh0aGlzKTtcclxuICAgICAgICB0aGlzLnNjaGVkdWxlKHRoaXMuc2NoZWR1bGVDYWxsYmFjaywgMSk7XHJcbiAgICB9XHJcbiAgICAvLyDlgZzmraLlgJLorqHml7ZcclxuICAgIHN0b3BUaW1lQ3V0RG93bigpe1xyXG4gICAgICAgIGlmKHRoaXMuc2NoZWR1bGVDYWxsYmFjayl7XHJcbiAgICAgICAgICAgIHRoaXMudW5zY2hlZHVsZSh0aGlzLnNjaGVkdWxlQ2FsbGJhY2spO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuICAgIFxyXG4gICAgc2V0SGVhbHRoSW5mbygpe1xyXG4gICAgICAgIGlmKGNjLmZ4LkdhbWVDb25maWcuR01fSU5GTy5ocCA9PSA1KXtcclxuICAgICAgICAgICAgdGhpcy5TdGFtaW5hLmdldENoaWxkQnlOYW1lKFwibWFuXCIpLmFjdGl2ZSA9IHRydWU7XHJcbiAgICAgICAgICAgIHRoaXMuU3RhbWluYS5nZXRDaGlsZEJ5TmFtZShcImhlYWx0aFwiKS5hY3RpdmUgPSBmYWxzZTsgXHJcbiAgICAgICAgICAgIHRoaXMuU3RhbWluYS5nZXRDaGlsZEJ5TmFtZShcInRpbWVcIikuYWN0aXZlID0gZmFsc2U7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2V7XHJcbiAgICAgICAgICAgICAgICB0aGlzLlN0YW1pbmEuZ2V0Q2hpbGRCeU5hbWUoXCJtYW5cIikuYWN0aXZlID0gZmFsc2U7XHJcbiAgICAgICAgICAgICAgICB0aGlzLlN0YW1pbmEuZ2V0Q2hpbGRCeU5hbWUoXCJoZWFsdGhcIikuYWN0aXZlID0gdHJ1ZTtcclxuICAgICAgICAgICAgICAgIE51bWJlclRvSW1hZ2UubnVtYmVyVG9JbWFnZU5vZGVzKChjYy5meC5HYW1lQ29uZmlnLkdNX0lORk8uaHApLDI1LDE1LFwiY29pbl9cIix0aGlzLlN0YW1pbmEuZ2V0Q2hpbGRCeU5hbWUoXCJoZWFsdGhcIiksZmFsc2UpO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5TdGFtaW5hLmdldENoaWxkQnlOYW1lKFwidGltZVwiKS5hY3RpdmUgPSB0cnVlO1xyXG4gICAgICAgICAgICAgICAgaWYoY2MuZnguR2FtZUNvbmZpZy5HTV9JTkZPLm1pbl9UaW1lICE9IDApe1xyXG4gICAgICAgICAgICAgICAgbGV0IHRpbWUgPSBjYy5meC5HYW1lVG9vbC5nZXRUaW1lTWFyZ2luKGNjLmZ4LkdhbWVDb25maWcuR01fSU5GTy5taW5fVGltZSk7XHJcbiAgICAgICAgICAgICAgICB0aGlzLlN0YW1pbmEuZ2V0Q2hpbGRCeU5hbWUoXCJ0aW1lXCIpLmdldENvbXBvbmVudChjYy5MYWJlbCkuc3RyaW5nID0gdGltZTtcclxuICAgICAgICAgICAgICAgIHRoaXMuc3RhcnRUaW1lQ3V0RG93bigpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBcclxuICAgIHN0YXJ0R2FtZSgpe1xyXG4gICAgICAgIGNjLmZ4LkF1ZGlvTWFuYWdlci5faW5zdGFuY2UucGxheUVmZmVjdChcImFubml1X0JpZ1wiLG51bGwpO1xyXG4gICAgICAgIGlmKGNjLmZ4LkdhbWVDb25maWcuR01fSU5GTy5ocCA8IDEpe1xyXG4gICAgICAgICAgICBNaW5pR2FtZVNkay5BUEkuc2hvd1RvYXN0KFwi5L2T5Yqb5YC85LiN6LazXCIpO1xyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmKHRoaXMubm9kZS5nZXRDaGlsZEJ5TmFtZShcIkxvYWRcIikuZ2V0Q2hpbGRCeU5hbWUoXCJzdGFydEJ0blwiKS5nZXRDb21wb25lbnQoXCJidG5Db250cm9sXCIpLl90b3VjaCl7XHJcbiAgICAgICAgICAgIHRoaXMubm9kZS5nZXRDaGlsZEJ5TmFtZShcIkxvYWRcIikuZ2V0Q2hpbGRCeU5hbWUoXCJzdGFydEJ0blwiKS5nZXRDb21wb25lbnQoXCJidG5Db250cm9sXCIpLnNldFRvdWNoKGZhbHNlKTtcclxuICAgICAgICAgICAgLy8gaWYodGhpcy5jdXN0b20uc3RyaW5nICE9IFwiXCIpe1xyXG4gICAgICAgICAgICAvLyAgICAgY2MuZnguR2FtZUNvbmZpZy5HTV9JTkZPLmxldmVsID0gcGFyc2VJbnQodGhpcy5jdXN0b20uc3RyaW5nKSAtIDE7XHJcbiAgICAgICAgICAgIC8vICAgICAvLyBjYy5meC5TdG9yYWdlTWVzc2FnZS5zZXRTdG9yYWdlKFwibGV2ZWxcIixjYy5meC5HYW1lQ29uZmlnLkdNX0lORk8ubGV2ZWwudG9TdHJpbmcoKSk7IFxyXG4gICAgICAgICAgICAvLyAgICAgY2MuZnguR2FtZUNvbmZpZy5MRVZFTF9JTkZPX2luaXQodHJ1ZSk7XHJcbiAgICAgICAgICAgIC8vIH1cclxuICAgICAgICAgICAgLy8gZWxzZXtcclxuICAgICAgICAgICAgICAgIGNjLmZ4LkF1ZGlvTWFuYWdlci5faW5zdGFuY2UucGxheUVmZmVjdChcInpodWFuMVwiLG51bGwpO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5ub2RlLmdldENoaWxkQnlOYW1lKFwiemh1YW5jaGFuZ1wiKS5hY3RpdmUgPSB0cnVlO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5ub2RlLmdldENoaWxkQnlOYW1lKFwiemh1YW5jaGFuZ1wiKS5nZXRDb21wb25lbnQoc3AuU2tlbGV0b24pLnNldEFuaW1hdGlvbigxLFwidXBcIixmYWxzZSk7XHJcbiAgICAgICAgICAgICAgICBjYy5meC5HYW1lQ29uZmlnLkxFVkVMX0lORk9faW5pdCh0cnVlLDEwMDApO1xyXG4gICAgICAgICAgICAvLyB9XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG4gICAgICAgICAgICAgXHJcblxyXG4gICAgXHJcbiAgY2xvc2VSYW5rKCl7XHJcbiAgICAgIHRoaXMubm9kZS5nZXRDaGlsZEJ5TmFtZShcIlJhbmtcIikuYWN0aXZlID0gZmFsc2U7XHJcbiAgfVxyXG5cclxuICBvcGVuUmFuaygpe1xyXG4gICAgICB0aGlzLm5vZGUuZ2V0Q2hpbGRCeU5hbWUoXCJSYW5rXCIpLmFjdGl2ZSA9IHRydWU7XHJcbiAgfVxyXG5cclxuICBvcGVuUmV3YXJkKCl7XHJcbiAgICAgIHRoaXMubm9kZS5nZXRDaGlsZEJ5TmFtZShcIlJld2FyZFwiKS5hY3RpdmUgPSB0cnVlO1xyXG4gIH1cclxuXHJcbiAgY2xpY2tTaG9wKCkge1xyXG4gICAgLy8g5YGH6K6+5bey57uP6I635Y+W5Yiw5LqGIHVzZXJJZCDlkowgcHJvZHVjdElkXHJcbiAgICBjb25zdCB1c2VySWQgPSBjYy5meC5HYW1lQ29uZmlnLkdNX0lORk8ub3BlbmlkOyBcclxuICAgIGNvbnN0IHByb2R1Y3RJZCA9ICcxJzsgXHJcbiAgICBjb25zb2xlLmxvZyhcIuWNs+WwhuWIm+W7umNyZWF0ZW9yZGVyXCIpO1xyXG4gICAgLy9AdHMtaWdub3JlXHJcbiAgICB3eC5jbG91ZC5jYWxsRnVuY3Rpb24oe1xyXG4gICAgICAgIG5hbWU6IFwiY3JlYXRlT3JkZXJcIixcclxuICAgICAgICBkYXRhOiB7XHJcbiAgICAgICAgICAgIFwidXNlcklkXCI6dXNlcklkLFxyXG4gICAgICAgICAgICBcInByb2R1Y3RJZFwiOnByb2R1Y3RJZCxcclxuICAgICAgICB9LFxyXG4gICAgICAgIHN1Y2Nlc3M6IChyZXMpID0+IHtcclxuICAgICAgICAgICAgLy8g5Y+W5b6X5LqR5Ye95pWw6L+U5Zue55qE6K6i5Y2V5L+h5oGvXHJcbiAgICAgICAgICAgIGNvbnNvbGUubG9nKFwiY3JlYXRlT3JkZXLnu5Pmnpw6XCIscmVzLnJlc3VsdCk7XHJcbiAgICAgICAgICAgIGNvbnN0IHBheW1lbnQgPSByZXMucmVzdWx0LnBheW1lbnRSZXN1bHQucGF5bWVudDtcclxuICAgICAgICAgICAgY29uc29sZS5sb2coXCJwYXltZW50OlwiLHBheW1lbnQpO1xyXG4gICAgICAgICAgICAvLyDosIPotbflvq7kv6HlrqLmiLfnq6/mlK/ku5hcclxuICAgICAgICAgICAgLy9AdHMtaWdub3JlXHJcbiAgICAgICAgICAgIC8vIOiwg+i1t+W+ruS/oeWuouaIt+err+aUr+S7mFxyXG4gICAgICAgICAgICAvL0B0cy1pZ25vcmVcclxuICAgICAgICAgICAgd3gucmVxdWVzdFBheW1lbnQoe1xyXG4gICAgICAgICAgICAgICAgLy8g5pe26Ze05oiz77yM5LuOIDE5NzAg5bm0IDEg5pyIIDEg5pelIDAwOjAwOjAwIOiHs+S7iueahOenkuaVsO+8jOWNs+W9k+WJjeeahOaXtumXtFxyXG4gICAgICAgICAgICAgICAgdGltZVN0YW1wOiBwYXltZW50LnRpbWVTdGFtcCxcclxuICAgICAgICAgICAgICAgIC8vIOmaj+acuuWtl+espuS4su+8jOmVv+W6puS4ujMy5Liq5a2X56ym5Lul5LiLXHJcbiAgICAgICAgICAgICAgICBub25jZVN0cjogcGF5bWVudC5ub25jZVN0cixcclxuICAgICAgICAgICAgICAgIC8vIOe7n+S4gOS4i+WNleaOpeWPo+i/lOWbnueahCBwcmVwYXlfaWQg5Y+C5pWw5YC8XHJcbiAgICAgICAgICAgICAgICBwYWNrYWdlOiBwYXltZW50LnBhY2thZ2UsXHJcbiAgICAgICAgICAgICAgICAvLyDnrb7lkI3nrpfms5XvvIzmmoLmlK/mjIEgTUQ144CBSE1BQy1TSEEyNTZcclxuICAgICAgICAgICAgICAgIHNpZ25UeXBlOiBwYXltZW50LnNpZ25UeXBlIHx8ICdNRDUnLFxyXG4gICAgICAgICAgICAgICAgLy8g5pSv5LuY562+5ZCNXHJcbiAgICAgICAgICAgICAgICBwYXlTaWduOiBwYXltZW50LnBheVNpZ24sXHJcbiAgICAgICAgICAgICAgICBzdWNjZXNzKHJlcykge1xyXG4gICAgICAgICAgICAgICAgICAgIC8qIOaIkOWKn+WbnuiwgyAqL1xyXG4gICAgICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKFwi5pSv5LuY5oiQ5YqfXCIscmVzKTtcclxuICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgICBmYWlsKHJlcykge1xyXG4gICAgICAgICAgICAgICAgICAgIC8qIOWksei0peWbnuiwgyAqL1xyXG4gICAgICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKFwi5pSv5LuY5aSx6LSlXCIscmVzKTtcclxuICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgICBjb21wbGV0ZShyZXMpe1xyXG4gICAgICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKFwi5pSv5LuY5a6M5oiQXCIscmVzKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgfSxcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcblxyXG4gIG9wZW5QYXVzZSgpe1xyXG4gICAgICAgIGNjLmZ4LkF1ZGlvTWFuYWdlci5faW5zdGFuY2UucGxheUVmZmVjdChcImFubml1X2xpdHRsZVwiLG51bGwpO1xyXG4gICAgICAgIGNvbnNvbGUubG9nKGNjLmZ4LkdhbWVDb25maWcuR01fSU5GTyk7XHJcbiAgICAgICAgaWYoY2MuZnguR2FtZUNvbmZpZy5HTV9JTkZPLm9wZW5pZCA9PSB1bmRlZmluZWQpe1xyXG4gICAgICAgICAgICBjb25zb2xlLmxvZyhjYy5meC5HYW1lQ29uZmlnLkdNX0lORk8ub3BlbmlkKTtcclxuICAgICAgICAgICAgY2MuZnguR2FtZUNvbmZpZy5HTV9JTkZPLm9wZW5pZCA9IFwiXCI7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRoaXMubm9kZS5nZXRDaGlsZEJ5TmFtZShcIlBhdXNlXCIpLmFjdGl2ZSA9IHRydWU7IFxyXG4gICAgICAgIHRoaXMubm9kZS5nZXRDaGlsZEJ5TmFtZShcIlBhdXNlXCIpLmdldENoaWxkQnlOYW1lKFwib3BlbklEXCIpLmdldENvbXBvbmVudChjYy5MYWJlbCkuc3RyaW5nID0gY2MuZnguR2FtZUNvbmZpZy5HTV9JTkZPLm9wZW5pZDtcclxuICB9XHJcblxyXG4gIGNsb3NlUGF1c2UoKXtcclxuICAgIGNjLmZ4LkF1ZGlvTWFuYWdlci5faW5zdGFuY2UucGxheUVmZmVjdChcImFubml1X2xpdHRsZVwiLG51bGwpO1xyXG4gICAgdGhpcy5ub2RlLmdldENoaWxkQnlOYW1lKFwiUGF1c2VcIikuYWN0aXZlID0gZmFsc2U7IFxyXG5cclxuICB9XHJcblxyXG4gIGNsb3NlUmV3YXJkKCl7XHJcbiAgICAgIHRoaXMubm9kZS5nZXRDaGlsZEJ5TmFtZShcIlJld2FyZFwiKS5hY3RpdmUgPSBmYWxzZTsgXHJcbiAgfVxyXG5cclxuICBvcGVuU3RhbWluYSgpe1xyXG4gICAgICB0aGlzLm5vZGUuZ2V0Q2hpbGRCeU5hbWUoXCJTdGFtaW5hXCIpLmFjdGl2ZSA9IHRydWU7XHJcbiAgfVxyXG5cclxuICBjbG9zZVN0YW1pbmEoKXtcclxuICAgICAgdGhpcy5ub2RlLmdldENoaWxkQnlOYW1lKFwiU3RhbWluYVwiKS5hY3RpdmUgPSBmYWxzZTtcclxuICB9XHJcblxyXG5cclxuICAgIC8vIHVwZGF0ZSAoZHQpIHt9XHJcbn1cclxuIl19 //------QC-SOURCE-SPLIT------ (function() { @@ -8390,147 +6449,147 @@ cc._RF.pop(); cc._RF.push(module, '669f4SuSl9ORqawBcbwCNpG', 'NumberToImage'); // Script/NumberToImage.ts -"use strict"; -// Learn TypeScript: -// - https://docs.cocos.com/creator/manual/en/scripting/typescript.html -// Learn Attribute: -// - https://docs.cocos.com/creator/manual/en/scripting/reference/attributes.html -// Learn life-cycle callbacks: -// - https://docs.cocos.com/creator/manual/en/scripting/life-cycle-callbacks.html -var __extends = (this && this.__extends) || (function () { - var extendStatics = function (d, b) { - extendStatics = Object.setPrototypeOf || - ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) || - function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; }; - return extendStatics(d, b); - }; - return function (d, b) { - extendStatics(d, b); - function __() { this.constructor = d; } - d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); - }; -})(); -var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) { - var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; - if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc); - else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; - return c > 3 && r && Object.defineProperty(target, key, r), r; -}; -Object.defineProperty(exports, "__esModule", { value: true }); -var _a = cc._decorator, ccclass = _a.ccclass, property = _a.property; -var NumberToImage = /** @class */ (function (_super) { - __extends(NumberToImage, _super); - function NumberToImage() { - var _this = _super !== null && _super.apply(this, arguments) || this; - _this.fontUI = null; - return _this; - // static calculateAndConvert(num1: number, num2: number, operator: '+' | '-' | '*' | '/', spriteFrames: SpriteFrame[]): Node[] { - // let result: number; - // switch (operator) { - // case '+': - // result = num1 + num2; - // break; - // case '-': - // result = num1 - num2; - // break; - // case '*': - // result = num1 * num2; - // break; - // case '/': - // result = num1 / num2; - // break; - // default: - // throw new Error('不支持的运算符'); - // } - // // 处理结果为小数的情况,这里简单取整 - // result = Math.floor(result); - // return this.numberToImageNodes(result, spriteFrames); - // } - // update (dt) {} - } - NumberToImage_1 = NumberToImage; - // LIFE-CYCLE CALLBACKS: - NumberToImage.prototype.onLoad = function () { - if (this.fontUI != null) { - NumberToImage_1.font = this.fontUI; - } - }; - //第一个参数 数字, 第二个参数 数字间距 第三个参数 占位宽度 第四个参数 目标节点 - NumberToImage.numberToImageNodes = function (number, width, posX, name, targetNode, middle) { - if (middle === void 0) { middle = false; } - var numStr = number.toString(); - var cha = 0; - if (number > 99) - cha = -posX; - else if (number < 10) - cha = posX; - if (targetNode.children.length > 0) - targetNode.removeAllChildren(); - for (var i = 0; i < numStr.length; i++) { - var digit = parseInt(numStr[i], 10); - var node = new cc.Node(); - var sprite = node.addComponent(cc.Sprite); - // debugger; - sprite.spriteFrame = this.font._spriteFrames[name + digit + ""]; - // 将节点添加到目标节点下 - node.x = i * width + cha; - node.parent = targetNode; - } - if (middle) { - targetNode.x = targetNode.x - targetNode.children.length * (width - 15) / 2; - } - }; - NumberToImage.getTimeMargin = function (number, width, name, targetNode) { - var timeArr = []; - var total = 0; - total = number; - var hour = 0; - hour = parseInt((total / 3600) + ""); //计算整数小时数 - var afterHour = total - hour * 60 * 60; //取得算出小时数后剩余的秒数 - var min = parseInt((afterHour / 60) + ""); //计算整数分 - var m = "" + min; - if (min < 10) - m = "0" + min; - var afterMin = total - hour * 60 * 60 - min * 60; //取得算出分后剩余的秒数 - var miao = afterMin + ""; - if (afterMin < 10) - miao = "0" + afterMin; - var result = m + miao; - for (var i = 0; i < result.length; i++) { - var digit = parseInt(result[i], 10); - timeArr.push(digit); - } - if (targetNode.children.length > 0) { - for (var i = 0; i < targetNode.children.length; i++) { - targetNode.children[i].getComponent(cc.Sprite).spriteFrame = this.font._spriteFrames[name + timeArr[i] + ""]; - } - } - else { - for (var i = 0; i < 4; i++) { - var node = new cc.Node(); - var sprite = node.addComponent(cc.Sprite); - var digit = timeArr[i]; - // debugger; - sprite.spriteFrame = this.font._spriteFrames[name + digit + ""]; - // 将节点添加到目标节点下 - node.x = i * width; - if (i > 1) - node.x += 35; - node.parent = targetNode; - } - } - }; - var NumberToImage_1; - NumberToImage.font = null; - __decorate([ - property(cc.SpriteAtlas) - ], NumberToImage.prototype, "fontUI", void 0); - NumberToImage = NumberToImage_1 = __decorate([ - ccclass - ], NumberToImage); - return NumberToImage; -}(cc.Component)); -exports.default = NumberToImage; +"use strict"; +// Learn TypeScript: +// - https://docs.cocos.com/creator/manual/en/scripting/typescript.html +// Learn Attribute: +// - https://docs.cocos.com/creator/manual/en/scripting/reference/attributes.html +// Learn life-cycle callbacks: +// - https://docs.cocos.com/creator/manual/en/scripting/life-cycle-callbacks.html +var __extends = (this && this.__extends) || (function () { + var extendStatics = function (d, b) { + extendStatics = Object.setPrototypeOf || + ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) || + function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; }; + return extendStatics(d, b); + }; + return function (d, b) { + extendStatics(d, b); + function __() { this.constructor = d; } + d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); + }; +})(); +var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) { + var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; + if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc); + else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; + return c > 3 && r && Object.defineProperty(target, key, r), r; +}; +Object.defineProperty(exports, "__esModule", { value: true }); +var _a = cc._decorator, ccclass = _a.ccclass, property = _a.property; +var NumberToImage = /** @class */ (function (_super) { + __extends(NumberToImage, _super); + function NumberToImage() { + var _this = _super !== null && _super.apply(this, arguments) || this; + _this.fontUI = null; + return _this; + // static calculateAndConvert(num1: number, num2: number, operator: '+' | '-' | '*' | '/', spriteFrames: SpriteFrame[]): Node[] { + // let result: number; + // switch (operator) { + // case '+': + // result = num1 + num2; + // break; + // case '-': + // result = num1 - num2; + // break; + // case '*': + // result = num1 * num2; + // break; + // case '/': + // result = num1 / num2; + // break; + // default: + // throw new Error('不支持的运算符'); + // } + // // 处理结果为小数的情况,这里简单取整 + // result = Math.floor(result); + // return this.numberToImageNodes(result, spriteFrames); + // } + // update (dt) {} + } + NumberToImage_1 = NumberToImage; + // LIFE-CYCLE CALLBACKS: + NumberToImage.prototype.onLoad = function () { + if (this.fontUI != null) { + NumberToImage_1.font = this.fontUI; + } + }; + //第一个参数 数字, 第二个参数 数字间距 第三个参数 占位宽度 第四个参数 目标节点 + NumberToImage.numberToImageNodes = function (number, width, posX, name, targetNode, middle) { + if (middle === void 0) { middle = false; } + var numStr = number.toString(); + var cha = 0; + if (number > 99) + cha = -posX; + else if (number < 10) + cha = posX; + if (targetNode.children.length > 0) + targetNode.removeAllChildren(); + for (var i = 0; i < numStr.length; i++) { + var digit = parseInt(numStr[i], 10); + var node = new cc.Node(); + var sprite = node.addComponent(cc.Sprite); + // debugger; + sprite.spriteFrame = this.font._spriteFrames[name + digit + ""]; + // 将节点添加到目标节点下 + node.x = i * width + cha; + node.parent = targetNode; + } + if (middle) { + targetNode.x = targetNode.x - targetNode.children.length * (width - 15) / 2; + } + }; + NumberToImage.getTimeMargin = function (number, width, name, targetNode) { + var timeArr = []; + var total = 0; + total = number; + var hour = 0; + hour = parseInt((total / 3600) + ""); //计算整数小时数 + var afterHour = total - hour * 60 * 60; //取得算出小时数后剩余的秒数 + var min = parseInt((afterHour / 60) + ""); //计算整数分 + var m = "" + min; + if (min < 10) + m = "0" + min; + var afterMin = total - hour * 60 * 60 - min * 60; //取得算出分后剩余的秒数 + var miao = afterMin + ""; + if (afterMin < 10) + miao = "0" + afterMin; + var result = m + miao; + for (var i = 0; i < result.length; i++) { + var digit = parseInt(result[i], 10); + timeArr.push(digit); + } + if (targetNode.children.length > 0) { + for (var i = 0; i < targetNode.children.length; i++) { + targetNode.children[i].getComponent(cc.Sprite).spriteFrame = this.font._spriteFrames[name + timeArr[i] + ""]; + } + } + else { + for (var i = 0; i < 4; i++) { + var node = new cc.Node(); + var sprite = node.addComponent(cc.Sprite); + var digit = timeArr[i]; + // debugger; + sprite.spriteFrame = this.font._spriteFrames[name + digit + ""]; + // 将节点添加到目标节点下 + node.x = i * width; + if (i > 1) + node.x += 35; + node.parent = targetNode; + } + } + }; + var NumberToImage_1; + NumberToImage.font = null; + __decorate([ + property(cc.SpriteAtlas) + ], NumberToImage.prototype, "fontUI", void 0); + NumberToImage = NumberToImage_1 = __decorate([ + ccclass + ], NumberToImage); + return NumberToImage; +}(cc.Component)); +exports.default = NumberToImage; cc._RF.pop(); } @@ -8549,7 +6608,7 @@ cc._RF.pop(); (function() { var nodeEnv = typeof require !== 'undefined' && typeof process !== 'undefined'; var __module = nodeEnv ? module : {exports:{}}; - var __filename = 'preview-scripts/assets/Script/GameManager.js'; + var __filename = 'preview-scripts/assets/Script/SceneManager.js'; var __require = nodeEnv ? function (request) { return cc.require(request); } : function (request) { @@ -8557,673 +6616,311 @@ cc._RF.pop(); }; function __define (exports, require, module) { if (!nodeEnv) {__quick_compile_project__.registerModule(__filename, module);}"use strict"; -cc._RF.push(module, 'df248lSLllOZpCHwGqQ5Ye3', 'GameManager'); -// Script/GameManager.ts +cc._RF.push(module, '80998T1AYNNRZdRxsVvXR65', 'SceneManager'); +// Script/SceneManager.ts -"use strict"; -// Learn TypeScript: -// - https://docs.cocos.com/creator/manual/en/scripting/typescript.html -// Learn Attribute: -// - https://docs.cocos.com/creator/manual/en/scripting/reference/attributes.html -// Learn life-cycle callbacks: -// - https://docs.cocos.com/creator/manual/en/scripting/life-cycle-callbacks.html -var __extends = (this && this.__extends) || (function () { - var extendStatics = function (d, b) { - extendStatics = Object.setPrototypeOf || - ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) || - function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; }; - return extendStatics(d, b); - }; - return function (d, b) { - extendStatics(d, b); - function __() { this.constructor = d; } - d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); - }; -})(); -var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) { - var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; - if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc); - else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; - return c > 3 && r && Object.defineProperty(target, key, r), r; -}; -Object.defineProperty(exports, "__esModule", { value: true }); -var MiniGameSdk_1 = require("./Sdk/MiniGameSdk"); -var _a = cc._decorator, ccclass = _a.ccclass, property = _a.property; -var GameManager = /** @class */ (function (_super) { - __extends(GameManager, _super); - function GameManager() { - var _this = _super !== null && _super.apply(this, arguments) || this; - _this.label = null; - _this.text = 'hello'; - _this.Block_Array = []; - _this.Wall_Prefab = []; - _this.Block_Color = []; - // @property({type: [cc.ParticleSystem], tooltip:"粒子数组"}) - // particleEffects : Array = []; - _this.load1 = false; - _this.load2 = false; - _this.load3 = false; - _this.load4 = false; - _this.load5 = false; - return _this; - } - GameManager_1 = GameManager; - // LIFE-CYCLE CALLBACKS: - GameManager.prototype.onLoad = function () { - var _this = this; - window.initMgr(); - this.timeNumber = 3; - this.startTimeCutDown(); - cc.fx.GameConfig.init(true); - cc.fx.GameConfig.GM_INFO.gameState = false; - this.readMusicConfig(); - console.log("音乐开关", cc.fx.GameConfig.GM_INFO.musicOpen); - cc.fx.AudioManager._instance.playMusicGame(); - this.load1 = this.load2 = this.load3 = this.load4 = this.load5 = false; - setTimeout(function () { - _this.readUserData(); - }, 200); - if (GameManager_1._instance == null) { - GameManager_1._instance = this; - cc.game.addPersistRootNode(this.node); - } - else { - return; - } - var path = 'prefab/block'; - var path2 = 'prefab/wall'; - cc.resources.loadDir(path, cc.Prefab, function (err, assets) { - if (err) { - console.error('动态加载 Prefab 失败:', err); - cc.director.loadScene("LoadScene"); - return; - } - // 将加载的 Prefab 赋值给 Block_Array - _this.Block_Array = assets; - _this.setSort(); - _this.load1 = true; - }); - cc.resources.loadDir(path2, cc.Prefab, function (err, assets) { - if (err) { - console.error('动态加载 Prefab 失败:', err); - cc.director.loadScene("LoadScene"); - return; - } - // 将加载的 Prefab 赋值给 Block_Array - _this.Wall_Prefab = assets; - _this.load2 = true; - _this.setWallPrefabSort(); - }); - // debugger; - // setTimeout(() => { - // cc.director.preloadScene("HomeScene", (err) => { - // if (err) { - // console.error('预加载 HomeScene 场景失败:', err); - // return; - // } - // }); - // }, 1000); - // 检测微信小游戏切到后台 - if (cc.sys.platform === cc.sys.WECHAT_GAME) { - //@ts-ignore - wx.onHide(function () { - _this.onHide(); - }); - // 检测微信小游戏回到前台 - //@ts-ignore - wx.onShow(function () { - _this.onShow(); - }); - } - }; - GameManager.prototype.onHide = function () { - cc.audioEngine.stopMusic(); - cc.game.pause(); - }; - GameManager.prototype.onShow = function () { - cc.audioEngine.resumeMusic(); - cc.game.resume(); - }; - GameManager.prototype.loadParticleEffects = function () { - }; - GameManager.prototype.setWallPrefabSort = function () { - var order = ['down', 'downLeft', 'downRight', 'left', 'right', 'up', 'upLeft', 'upRight']; - this.Wall_Prefab.sort(function (a, b) { - var indexA = order.indexOf(a.name); - var indexB = order.indexOf(b.name); - if (indexA === -1) - return 1; - if (indexB === -1) - return -1; - return indexA - indexB; - }); - }; - GameManager.prototype.setParticleSort = function () { - var order = ['top', 'bot', 'rig', 'lef']; - this.particleEffects.sort(function (a, b) { - var indexA = order.indexOf(a.name.substr(0, 3)); - var indexB = order.indexOf(b.name.substr(0, 3)); - if (indexA === -1) - return 1; - if (indexB === -1) - return -1; - return indexA - indexB; - }); - }; - GameManager.prototype.setSort = function () { - this.Block_Array.sort(function (a, b) { - var _a, _b; - // 从名称中提取数字部分 - var numberA = parseInt(((_a = a.name.match(/\d+/)) === null || _a === void 0 ? void 0 : _a[0]) || '0', 10); - var numberB = parseInt(((_b = b.name.match(/\d+/)) === null || _b === void 0 ? void 0 : _b[0]) || '0', 10); - return numberA - numberB; - }); - }; - GameManager.prototype.start = function () { - }; - GameManager.prototype.startGame = function () { - console.log("进入场景之前_____________", cc.fx.GameConfig.GM_INFO.first); - cc.director.loadScene("HomeScene"); - }; - GameManager.prototype.returnHome = function () { - cc.tween(this.node.getChildByName("Game")) - .to(0.5, { opacity: 100 }) - .call(function () { - // 预加载成功后加载场景 - cc.director.loadScene("HomeScene", function (err) { - if (err) { - console.error('加载 HomeScene 场景失败:', err); - } - else { - cc.director.loadScene("HomeScene"); - } - }); - }) - .start(); - cc.tween(this.node.getChildByName("mask")) - .to(0.5, { opacity: 255 }) - .start(); - // cc.loader.releaseAll(); - // 预加载 HomeScene 场景 - }; - GameManager.prototype.readUserData = function (retryCount) { - var _this = this; - if (retryCount === void 0) { retryCount = 0; } - //@ts-ignore - if (typeof wx !== 'undefined' && wx !== null) { - var levelInfo = cc.fx.StorageMessage.getStorage("level"); - //旧的读取数据设置数据方法,以强联网为主 - if (levelInfo == undefined || levelInfo == "" || levelInfo == null) { - this.oldReadData(retryCount); - } - //新的读取数据设置方法,以本地为主 - else { - this.newReadData(); - } - console.log("即将读取体力值"); - cc.fx.GameTool.getHealth(function (data) { - console.log("体力值完成进入游戏"); - _this.load5 = true; - }); - } - else { - this.load3 = true; - this.load4 = true; - this.load5 = true; - cc.fx.GameTool.getHealth(null); - } - // 存储用户数据 - }; - GameManager.prototype.readMusicConfig = function () { - var audioInfo = cc.fx.StorageMessage.getStorage("music"); - if (audioInfo == undefined || audioInfo == "" || audioInfo == null) { - audioInfo = { - "musicOpen": true, - "effectOpen": true, - "vibrateOpen": true, - }; - cc.fx.StorageMessage.setStorage("music", audioInfo); - } - else { - cc.fx.GameConfig.GM_INFO.musicOpen = audioInfo.musicOpen; - cc.fx.GameConfig.GM_INFO.effectOpen = audioInfo.effectOpen; - cc.fx.GameConfig.GM_INFO.vibrateOpen = audioInfo.vibrateOpen; - } - }; - //新用户,有本地缓存读取配置 - GameManager.prototype.newReadData = function () { - var _this = this; - console.log("读取新信息"); - var openid = cc.fx.StorageMessage.getStorage("openid"); - if (openid == null || openid == "" || openid == undefined) { - console.log("没有openid"); - //@ts-ignore - wx.cloud.callFunction({ - name: 'userData', - data: { - action: 'read' - }, - success: function (res) { - console.log('读取用户数据成功', res.result); - if (res.result.code == 404 && res.result.message == "未找到用户数据") { - } - else if (res.result.code == 200) { - if (res.result.data) { - cc.fx.GameConfig.GM_INFO.openid = res.result.openid; - cc.fx.GameConfig.GM_INFO.username = res.result.data.username; - cc.fx.GameConfig.GM_INFO.useravatar = res.result.data.useravatar; - var register_time = res.result.data.register_time; - MiniGameSdk_1.MiniGameSdk.API.shushu_userSet(register_time); - cc.fx.StorageMessage.setStorage("openid", cc.fx.GameConfig.GM_INFO.openid); - } - } - }, - fail: function (err) { - console.error('读取用户数据失败', err); - } - }); - } - else { - if (openid) - cc.fx.GameConfig.GM_INFO.openid = openid; - } - //等级信息 - cc.fx.GameTool.getUserLevel(function (data) { - var timestamp = Date.now(); - var levelInfo = cc.fx.StorageMessage.getStorage("level"); - if (data.result.code == 404 && data.result.message == "未找到关卡数据") { - // console.log("没有等级信息,从用户接口拿到数据"); - if (levelInfo.level) { - cc.fx.GameConfig.GM_INFO.level = levelInfo.level; - } - _this.load4 = true; - cc.fx.GameTool.setUserLevel(function (data) { - }); - } - else if (data.result.code == 200) { - // console.log("有等级信息,从关卡接口拿到数据",data.result.data); - //游戏前端存储 新于服务器端,以游戏前端信息为主,放服务器存储 - var temp = data.result.timestamp - levelInfo.timestamp; - console.log("等级时间差:", temp); - if ((data.result.timestamp - levelInfo.timestamp) < 10000) { - if (levelInfo.level) { - console.log("以游戏前端等级为准", data.result.data); - cc.fx.GameConfig.GM_INFO.level = levelInfo.level; - // console.log("等级为:",cc.fx.GameConfig.GM_INFO.level); - cc.fx.GameTool.setUserLevel(function (data) { - }); - } - } - //服务器端存储时间新于游戏端,以服务器端为主,往前端存储 - else { - console.log("以服务器等级为准", data.result.data); - cc.fx.GameConfig.GM_INFO.level = data.result.data; - levelInfo.level = cc.fx.GameConfig.GM_INFO.level; - levelInfo.timestamp = timestamp; - // console.log("1111111存储关卡数据:",cc.fx.GameConfig.GM_INFO.level); - cc.fx.StorageMessage.setStorage("level", levelInfo); - } - _this.load4 = true; - } - }); - //金币信息 - cc.fx.GameTool.getUserCoin(function (data) { - var timestamp = Date.now(); - var coinInfo = cc.fx.StorageMessage.getStorage("coin"); - if (data.result.code == 404 && data.result.message == "未找到金币数据") { - if (coinInfo.coin) - cc.fx.GameConfig.GM_INFO.coin = coinInfo.coin; - console.log("没有金币信息,从用户接口拿到数据", cc.fx.GameConfig.GM_INFO.coin); - _this.load3 = true; - cc.fx.GameTool.setUserCoin(function (data) { - }); - } - else if (data.result.code == 200) { - // console.log("有金币信息,从金币接口拿到数据",data.result.data); - //游戏前端存储 新于服务器端,以游戏前端信息为主,放服务器存储 - var temp = data.result.timestamp - coinInfo.timestamp; - console.log("金币时间差:", temp); - if ((data.result.timestamp - coinInfo.timestamp) < 10000) { - console.log("以前端金幣为准:", coinInfo); - if (coinInfo.coin) - cc.fx.GameConfig.GM_INFO.coin = coinInfo.coin; - else { - cc.fx.GameConfig.GM_INFO.coin = data.result.data; - coinInfo.coin = cc.fx.GameConfig.GM_INFO.coin; - coinInfo.timestamp = timestamp; - console.log("11111111111"); - cc.fx.StorageMessage.setStorage("coin", coinInfo); - } - console.log("改变后金币:", cc.fx.GameConfig.GM_INFO.coin); - cc.fx.GameTool.setUserCoin(function (data) { - }); - } - //服务器端存储时间新于游戏端,以服务器端为主,往前端存储 - else { - console.log("以服务器金幣为准:", data.result.data); - cc.fx.GameConfig.GM_INFO.coin = data.result.data; - coinInfo.coin = cc.fx.GameConfig.GM_INFO.coin; - coinInfo.timestamp = timestamp; - console.log("2222222222"); - cc.fx.StorageMessage.setStorage("coin", coinInfo); - } - _this.load3 = true; - } - }); - //道具信息 - cc.fx.GameTool.getUserProp(function (data) { - var timestamp = Date.now(); - var propInfo = cc.fx.StorageMessage.getStorage("prop"); - if (data.result.code == 404 && data.result.message == "未找到道具数据") { - console.log("没有道具信息,从用户接口拿到数据", propInfo); - if (propInfo.freezeAmount == undefined || propInfo.hammerAmount == undefined || propInfo.magicAmount == undefined) { - console.log("2222222道具数据异常"); - cc.fx.GameConfig.GM_INFO.freezeAmount = 0; - cc.fx.GameConfig.GM_INFO.hammerAmount = 0; - cc.fx.GameConfig.GM_INFO.magicAmoun = 0; - var propInfoNew = { - "freezeAmount": cc.fx.GameConfig.GM_INFO.freezeAmount, - "hammerAmount": cc.fx.GameConfig.GM_INFO.hammerAmount, - "magicAmount": cc.fx.GameConfig.GM_INFO.magicAmoun, - "timestamp": timestamp - }; - console.log("1111111上传道具信息:", propInfoNew); - cc.fx.StorageMessage.setStorage("prop", propInfoNew); - } - else { - // cc.fx.GameConfig.GM_INFO.freezeAmount = data.result.data.freeze; - // cc.fx.GameConfig.GM_INFO.hammerAmount = data.result.data.hammer; - // cc.fx.GameConfig.GM_INFO.magicAmount = data.result.data.magic_wand; - cc.fx.GameConfig.GM_INFO.freezeAmount = propInfo.freezeAmount; - cc.fx.GameConfig.GM_INFO.hammerAmount = propInfo.hammerAmount; - cc.fx.GameConfig.GM_INFO.magicAmount = propInfo.magicAmount; - } - // cc.fx.GameConfig.GM_INFO.freezeAmount = propInfo.freezeAmount; - // cc.fx.GameConfig.GM_INFO.hammerAmount = propInfo.hammerAmount; - // cc.fx.GameConfig.GM_INFO.magicAmount = propInfo.magicAmount; - cc.fx.GameTool.setUserProp(0, 0, function (data) { - }); - } - else if (data.result.code == 200) { - // console.log("本地时间戳",propInfo.timestamp,"服务器时间戳",data.result.timestamp); - if ((data.result.timestamp - propInfo.timestamp) < 10000) { - console.log("以前端道具为主:", propInfo); - if (propInfo.freezeAmount == undefined || propInfo.hammerAmount == undefined || propInfo.magicAmount == undefined) { - console.log("111111道具数据异常", data.result.data); - cc.fx.GameConfig.GM_INFO.freezeAmount = data.result.data.freeze; - cc.fx.GameConfig.GM_INFO.hammerAmount = data.result.data.hammer; - cc.fx.GameConfig.GM_INFO.magicAmount = data.result.data.magic_wand; - var propInfoNew = { - "freezeAmount": cc.fx.GameConfig.GM_INFO.freezeAmount, - "hammerAmount": cc.fx.GameConfig.GM_INFO.hammerAmount, - "magicAmount": cc.fx.GameConfig.GM_INFO.magicAmount, - "timestamp": timestamp - }; - console.log("333333上传道具信息:", propInfoNew); - cc.fx.StorageMessage.setStorage("prop", propInfoNew); - } - else { - console.log("道具数据正常"); - cc.fx.GameConfig.GM_INFO.freezeAmount = propInfo.freezeAmount; - cc.fx.GameConfig.GM_INFO.hammerAmount = propInfo.hammerAmount; - cc.fx.GameConfig.GM_INFO.magicAmount = propInfo.magicAmount; - cc.fx.GameTool.setUserProp(0, 0, function (data) { - }); - } - } - else { - cc.fx.GameConfig.GM_INFO.freezeAmount = data.result.data.freeze; - cc.fx.GameConfig.GM_INFO.hammerAmount = data.result.data.hammer; - cc.fx.GameConfig.GM_INFO.magicAmount = data.result.data.magic_wand; - var propInfoNew = { - "freezeAmount": cc.fx.GameConfig.GM_INFO.freezeAmount, - "hammerAmount": cc.fx.GameConfig.GM_INFO.hammerAmount, - "magicAmount": cc.fx.GameConfig.GM_INFO.magicAmount, - "timestamp": timestamp - }; - console.log("22222222上传道具信息:", propInfoNew, data.result); - cc.fx.StorageMessage.setStorage("prop", propInfoNew); - } - } - }); - }; - //旧用户,无本地缓存读取配置 - GameManager.prototype.oldReadData = function (retryCount) { - var _this = this; - console.log("读取旧信息"); - var MAX_RETRIES = 15; - var timestamp = Date.now(); - // 读取用户数据 - //@ts-ignore - wx.cloud.callFunction({ - name: 'userData', - data: { - action: 'read' - }, - success: function (res) { - console.log('读取用户数据成功', res.result); - if (res.result.code == 404 && res.result.message == "未找到用户数据") { - if (res.result.openid) { - cc.fx.GameConfig.GM_INFO.openid = res.result.openid; - } - cc.fx.GameConfig.GM_INFO.first = true; - _this.load3 = true; - _this.load4 = true; - var levelInfo = { "level": 0, "timestamp": timestamp }; - cc.fx.StorageMessage.setStorage("level", levelInfo); - var coinInfo = { "coin": 0, "timestamp": timestamp }; - console.log("33333333333"); - cc.fx.StorageMessage.setStorage("coin", coinInfo); - var propInfo = { - "freezeAmount": 0, - "hammerAmount": 0, - "magicAmount": 0, - "timestamp": timestamp, - }; - cc.fx.StorageMessage.setStorage("prop", propInfo); - cc.fx.GameTool.setUserInfo(function (data) { - if (data.result.code == 200) { - console.log("上传用户信息成功", data); - //@ts-ignore - wx.cloud.callFunction({ - name: 'userData', - data: { - action: 'read' - }, - success: function (res) { - console.log("上传后,读取用户信息,为上报注册时间"); - if (res.result.code == 200) { - var time = res.result.data.register_time; - MiniGameSdk_1.MiniGameSdk.API.shushu_userSet(time); - } - } - }); - } - }); - console.log("服务器也没有金币信息", cc.fx.GameConfig.GM_INFO.coin); - cc.fx.GameTool.setUserCoin(cc.fx.GameConfig.GM_INFO.coin, function (data) { - }); - cc.fx.GameTool.setUserLevel(function (data) { - }); - setTimeout(function () { - cc.fx.GameConfig.GM_INFO.freezeAmount = 0; - cc.fx.GameConfig.GM_INFO.hammerAmount = 0; - cc.fx.GameConfig.GM_INFO.magicAmount = 0; - cc.fx.GameTool.setUserProp(0, 0, function (data) { - if (data.result.code == 200) { - console.log("上传道具信息成功", data); - } - else { - MiniGameSdk_1.MiniGameSdk.API.showToast("网络异常,正在努力加载"); - setTimeout(function () { - _this.oldReadData(0); - }, 1000); - } - }); - }, 0); - } - else if (res.result.code == 200) { - if (res.result.data) { - cc.fx.GameConfig.GM_INFO.openid = res.result.openid; - cc.fx.GameConfig.GM_INFO.level = res.result.data.level; - cc.fx.GameConfig.GM_INFO.coin = res.result.data.coinAmount; - cc.fx.GameConfig.GM_INFO.freezeAmount = res.result.data.freezeAmount; - cc.fx.GameConfig.GM_INFO.hammerAmount = res.result.data.hammerAmount; - cc.fx.GameConfig.GM_INFO.magicAmount = res.result.data.magicAmount; - cc.fx.GameConfig.GM_INFO.username = res.result.data.username; - cc.fx.GameConfig.GM_INFO.useravatar = res.result.data.useravatar; - cc.fx.StorageMessage.setStorage("openid", cc.fx.GameConfig.GM_INFO.openid); - var register_time = res.result.data.register_time; - MiniGameSdk_1.MiniGameSdk.API.shushu_userSet(register_time); - } - setTimeout(function () { - cc.fx.GameTool.getUserCoin(function (data) { - if (data.result.code == 404 && data.result.message == "未找到金币数据") { - var coinInfo = { "coin": 0, "timestamp": timestamp }; - cc.fx.GameConfig.GM_INFO.coin = 0; - cc.fx.StorageMessage.setStorage("coin", coinInfo); - console.log("没有金币信息,从用户接口拿到数据", cc.fx.GameConfig.GM_INFO.coin); - cc.fx.GameTool.setUserCoin(function (data) { - // console.log("上传",data); - _this.load3 = true; - }); - } - else if (data.result.code == 200) { - // console.log("有金币信息,从金币接口拿到数据",data.result.data); - cc.fx.GameConfig.GM_INFO.coin = data.result.data; - var coinInfo = { "coin": cc.fx.GameConfig.GM_INFO.coin, "timestamp": timestamp }; - console.log("存储金币信息:", cc.fx.GameConfig.GM_INFO.coin); - console.log("4444444444"); - cc.fx.StorageMessage.setStorage("coin", coinInfo); - _this.load3 = true; - } - }); - }, 500); - cc.fx.GameTool.getUserLevel(function (data) { - if (data.result.code == 404 && data.result.message == "未找到关卡数据") { - console.log("没有等级信息,从用户接口拿到数据"); - var levelInfo = { "level": 0, "timestamp": timestamp }; - // console.log("333333存储关卡数据:",levelInfo); - cc.fx.GameConfig.GM_INFO.level = 0; - cc.fx.StorageMessage.setStorage("level", levelInfo); - cc.fx.GameTool.setUserLevel(function (data) { - console.log("拿到的数据", data); - _this.load4 = true; - }); - } - else if (data.result.code == 200) { - console.log("有等级信息,从关卡接口拿到数据", data.result.data); - cc.fx.GameConfig.GM_INFO.level = data.result.data; - var levelInfo = { "level": cc.fx.GameConfig.GM_INFO.level, "timestamp": timestamp }; - // console.log("444444存储关卡信息:",levelInfo); - cc.fx.StorageMessage.setStorage("level", levelInfo); - _this.load4 = true; - } - }); - setTimeout(function () { - cc.fx.GameTool.getUserProp(function (data) { - if (data.result.code == 404 && data.result.message == "未找到道具数据") { - console.log("没有道具信息,从用户接口拿到数据"); - cc.fx.GameConfig.GM_INFO.freezeAmount = 0; - cc.fx.GameConfig.GM_INFO.hammerAmount = 0; - cc.fx.GameConfig.GM_INFO.magicAmount = 0; - var propInfo = { - "freezeAmount": 0, - "hammerAmount": 0, - "magicAmount": 0, - "timestamp": timestamp, - }; - console.log("上传道具信息:", propInfo); - cc.fx.StorageMessage.setStorage("prop", propInfo); - cc.fx.GameTool.setUserProp(0, 0, function (data) { - }); - } - else if (data.result.code == 200) { - console.log("有道具信息,从道具接口拿到数据", data.result.data); - cc.fx.GameConfig.GM_INFO.freezeAmount = data.result.data.freeze || 0; - cc.fx.GameConfig.GM_INFO.hammerAmount = data.result.data.hammer || 0; - cc.fx.GameConfig.GM_INFO.magicAmount = data.result.data.magic_wand || 0; - var propInfo = { - "freezeAmount": cc.fx.GameConfig.GM_INFO.freezeAmount, - "hammerAmount": cc.fx.GameConfig.GM_INFO.hammerAmount, - "magicAmount": cc.fx.GameConfig.GM_INFO.magicAmount, - "timestamp": timestamp, - }; - console.log("上传道具信息:", propInfo); - cc.fx.StorageMessage.setStorage("prop", propInfo); - } - }); - }, 0); - } - }, - fail: function (err) { - console.error('读取用户数据失败', err); - if (retryCount < MAX_RETRIES) { - console.error("\u8BFB\u53D6\u7528\u6237\u6570\u636E\u5931\u8D25\uFF0C\u7B2C " + (retryCount + 1) + " \u6B21\u91CD\u8BD5\uFF0C\u9519\u8BEF\u4FE1\u606F:", err); - // 延迟 2 秒后重试 - setTimeout(function () { - _this.readUserData(retryCount + 1); - }, 2000); - } - else { - console.error('读取用户数据失败,达到最大重试次数,退出游戏', err); - // 退出游戏 - cc.game.end(); - } - } - }); - }; - GameManager.prototype.setUserData = function () { - cc.fx.GameConfig.GameTool(function (data) { - console.log("上传", data); - }); - }; - GameManager.prototype.startTimeCutDown = function () { - this.scheduleCallback = function () { - if (this.timeNumber <= 0) { - this.stopTimeCutDown(); - } - else { - this.timeNumber -= 1; - } - }.bind(this); - this.schedule(this.scheduleCallback, 1); - }; - GameManager.prototype.stopTimeCutDown = function () { - if (this.scheduleCallback) { - this.unschedule(this.scheduleCallback); - } - }; - GameManager.prototype.update = function (dt) { - if (this.load1 && this.load2 && this.load3 && this.load4 && this.load5 && this.timeNumber <= 0) { - this.load1 = this.load2 = false; - MiniGameSdk_1.MiniGameSdk.API.shushu_Init(); - this.startGame(); - } - }; - var GameManager_1; - GameManager._instance = null; - __decorate([ - property(cc.Label) - ], GameManager.prototype, "label", void 0); - __decorate([ - property - ], GameManager.prototype, "text", void 0); - __decorate([ - property({ type: [cc.Prefab], tooltip: "方块数组" }) - ], GameManager.prototype, "Block_Array", void 0); - __decorate([ - property({ type: [cc.Prefab], tooltip: "墙壁数组" }) - ], GameManager.prototype, "Wall_Prefab", void 0); - __decorate([ - property({ type: [cc.SpriteAtlas], tooltip: "方块颜色" }) - ], GameManager.prototype, "Block_Color", void 0); - GameManager = GameManager_1 = __decorate([ - ccclass - ], GameManager); - return GameManager; -}(cc.Component)); -exports.default = GameManager; +"use strict"; +// Learn TypeScript: +// - https://docs.cocos.com/creator/manual/en/scripting/typescript.html +// Learn Attribute: +// - https://docs.cocos.com/creator/manual/en/scripting/reference/attributes.html +// Learn life-cycle callbacks: +// - https://docs.cocos.com/creator/manual/en/scripting/life-cycle-callbacks.html +var __extends = (this && this.__extends) || (function () { + var extendStatics = function (d, b) { + extendStatics = Object.setPrototypeOf || + ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) || + function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; }; + return extendStatics(d, b); + }; + return function (d, b) { + extendStatics(d, b); + function __() { this.constructor = d; } + d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); + }; +})(); +var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) { + var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; + if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc); + else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; + return c > 3 && r && Object.defineProperty(target, key, r), r; +}; +Object.defineProperty(exports, "__esModule", { value: true }); +var Map_1 = require("./Map"); +var MiniGameSdk_1 = require("./Sdk/MiniGameSdk"); +var _a = cc._decorator, ccclass = _a.ccclass, property = _a.property; +var SceneManager = /** @class */ (function (_super) { + __extends(SceneManager, _super); + function SceneManager() { + var _this = _super !== null && _super.apply(this, arguments) || this; + _this.label = null; + _this.text = 'hello'; + _this.freeze = null; + _this.hammer = null; + _this.magic_wand = null; + _this.pause = null; + _this.Block_Array = []; + _this.Wall_Prefab = []; + // @property({type: [cc.ParticleSystem], tooltip:"粒子数组"}) + // particleEffects : Array = []; + _this.load1 = false; + _this.load2 = false; + _this.load3 = false; + _this.btnName = ''; + return _this; + } + // LIFE-CYCLE CALLBACKS: + SceneManager.prototype.onLoad = function () { + cc.game.setFrameRate(63); + this.changeBg(); + setTimeout(function () { + cc.director.preloadScene("HomeScene", function (err) { + if (err) { + // console.error('预加载 HomeScene 场景失败:', err); + return; + } + // console.log('成功预加载 HomeScene 场景'); + }); + }, 1000); + }; + SceneManager.prototype.changeBg = function () { + var _this = this; + var number = Math.floor(Math.random() * 8) + 1; + var path = 'bg/bg' + number; + cc.resources.load(path, cc.SpriteFrame, function (err, spriteFrame) { + if (err) { + console.error('动态加载背景图失败:', err); + return; + } + _this.node.getChildByName("Game").getChildByName("bg").getComponent(cc.Sprite).spriteFrame = spriteFrame; + }); + }; + SceneManager.prototype.loadParticleEffects = function () { + var _this = this; + var path = 'Particle'; + cc.resources.loadDir(path, cc.ParticleAsset, function (err, assets) { + if (err) { + console.error('动态加载粒子特效失败:', err); + return; + } + _this.particleEffects = assets; + _this.setParticleSort(); + _this.load3 = true; + //console.log('粒子特效加载成功,共加载了', this.particleEffects.length, '个粒子特效'); + }); + }; + SceneManager.prototype.setWallPrefabSort = function () { + var order = ['down', 'downLeft', 'downRight', 'left', 'right', 'up', 'upLeft', 'upRight']; + this.Wall_Prefab.sort(function (a, b) { + var indexA = order.indexOf(a.name); + var indexB = order.indexOf(b.name); + if (indexA === -1) + return 1; + if (indexB === -1) + return -1; + return indexA - indexB; + }); + }; + SceneManager.prototype.setParticleSort = function () { + var order = ['top', 'bot', 'rig', 'lef']; + this.particleEffects.sort(function (a, b) { + // console.log(a.name.substr(0,3),b.name.substr(0,3)); + var indexA = order.indexOf(a.name.substr(0, 3)); + var indexB = order.indexOf(b.name.substr(0, 3)); + if (indexA === -1) + return 1; + if (indexB === -1) + return -1; + return indexA - indexB; + }); + }; + SceneManager.prototype.setSort = function () { + this.Block_Array.sort(function (a, b) { + var _a, _b; + // 从名称中提取数字部分 + var numberA = parseInt(((_a = a.name.match(/\d+/)) === null || _a === void 0 ? void 0 : _a[0]) || '0', 10); + var numberB = parseInt(((_b = b.name.match(/\d+/)) === null || _b === void 0 ? void 0 : _b[0]) || '0', 10); + return numberA - numberB; + }); + }; + SceneManager.prototype.start = function () { + }; + SceneManager.prototype.startGame = function () { + cc.director.loadScene("HomeScene", function (err) { + if (err) { + console.error('加载 HomeScene 场景失败:', err); + } + else { + // console.log('成功切换到 HomeScene 场景'); + cc.director.loadScene("HomeScene"); + } + }); + }; + SceneManager.prototype.returnHome = function () { + if (this.node.getChildByName("Pause").getChildByName("btn").getComponent("btnControl")._touch) { + if (Map_1.default._instance.gameStart == true) { + MiniGameSdk_1.MiniGameSdk.API.showToast("体力值减少"); + cc.fx.GameTool.setUserHealth(-1, function (data) { + }); + if (Map_1.default._instance.count_Time) { + var count_Time = Map_1.default._instance.count_Time; + var add_Time = Map_1.default._instance.add_Time; + var data = { + time: count_Time, + add_Time: add_Time, + result: "give_up" + }; + cc.fx.GameTool.shushu_Track("finish_stage", data); + } + } + this.node.getChildByName("Pause").getChildByName("btn").getComponent("btnControl").setTouch(false); + cc.fx.AudioManager._instance.playEffect("zhuan1", null); + this.node.getChildByName("zhuanchang").active = true; + this.node.getChildByName("zhuanchang").getComponent(sp.Skeleton).setAnimation(1, "up", false); + cc.director.preloadScene("HomeScene", function (err, asset) { + if (err) { + console.error('动态加载 Prefab 失败:', err); + return; + } + }); + setTimeout(function () { + cc.director.loadScene("HomeScene"); + }, 1200); + } + }; + SceneManager.prototype.destroyNodesInFrames = function (nodes, callback) { + var _this = this; + var BATCH_SIZE = 10; // 每帧销毁的节点数量 + var index = 0; + var destroyBatch = function () { + var count = 0; + while (index < nodes.length && count < BATCH_SIZE) { + var node = nodes[index]; + if (node) { + node.active = false; + } + index++; + count++; + } + if (index < nodes.length) { + _this.scheduleOnce(destroyBatch, 6); + } + else { + callback(); + } + }; + destroyBatch(); + }; + // 改进后的切换场景方法 + SceneManager.prototype.switchToEmptyScene = function () { + var allNodes = cc.director.getScene().children; + this.destroyNodesInFrames(allNodes, function () { + cc.director.loadScene("HomeScene"); + }); + }; + SceneManager.prototype.openPause = function () { + cc.fx.AudioManager._instance.playEffect("anniu_little", null); + if (this.pause.getComponent("btnControl")._touch) { + this.pause.getComponent("btnControl").setTouch(false); + this.node.getChildByName("Pause").active = true; + Map_1.default._instance.pause = true; + } + }; + SceneManager.prototype.closePause = function () { + cc.fx.AudioManager._instance.playEffect("anniu_little", null); + this.pause.getComponent("btnControl").setTouch(true); + this.node.getChildByName("Pause").active = false; + if (Map_1.default._instance.node.parent.getChildByName("Ice").active == false) { + Map_1.default._instance.pause = false; + } + }; + SceneManager.prototype.openPropBuy = function (name) { + Map_1.default._instance.pause = true; + this.btnName = name; + var propWindow = this.node.getChildByName("Game").getChildByName("propWindow"); + propWindow.active = true; + propWindow.getChildByName("freeze").active = false; + propWindow.getChildByName("hammer").active = false; + propWindow.getChildByName("magic").active = false; + propWindow.getChildByName("buy_Btn").getComponent("btnControl").setTouch(true); + propWindow.getChildByName(name).active = true; + }; + SceneManager.prototype.clickBtn = function () { + cc.fx.AudioManager._instance.playEffect("anniu_Big", null); + var propWindow = this.node.getChildByName("Game").getChildByName("propWindow"); + if (propWindow.getChildByName("buy_Btn").getComponent("btnControl")._touch) { + propWindow.getChildByName("buy_Btn").getComponent("btnControl").setTouch(false); + if (this.btnName == "freeze") + Map_1.default._instance.buyFreeze(); + else if (this.btnName == "hammer") + Map_1.default._instance.buyHammer(); + else if (this.btnName == "magic") + Map_1.default._instance.buyMagic(); + } + }; + //打开商店 + SceneManager.prototype.openShop = function () { + var _this = this; + // 加载 shop bundle + cc.assetManager.loadBundle('shop', function (err, bundle) { + bundle.load('prefab/shop', cc.Prefab, function (err, prefab) { + if (err) { + cc.error(err.message || err); + return; + } + if (prefab) { + var shopNode = cc.instantiate(prefab); + _this.node.addChild(shopNode); + console.log("shopNode parent:", shopNode.parent); + } + }); + }); + }; + SceneManager.prototype.closePropBuy = function () { + Map_1.default._instance.pause = false; + var freezeBtn = Map_1.default._instance.node.parent.getChildByName("Bottom").getChildByName("timeBtn"); + var hammerBtn = Map_1.default._instance.node.parent.getChildByName("Bottom").getChildByName("destroyBtn"); + var magicBtn = Map_1.default._instance.node.parent.getChildByName("Bottom").getChildByName("magicBtn"); + if (this.btnName == "freeze") + freezeBtn.getComponent("btnControl").setTouch(true); + else if (this.btnName == "hammer") + hammerBtn.getComponent("btnControl").setTouch(true); + else if (this.btnName == "magic") + magicBtn.getComponent("btnControl").setTouch(true); + this.node.getChildByName("Game").getChildByName("propWindow").active = false; + }; + SceneManager.prototype.update = function (dt) { + }; + __decorate([ + property(cc.Label) + ], SceneManager.prototype, "label", void 0); + __decorate([ + property + ], SceneManager.prototype, "text", void 0); + __decorate([ + property(cc.Node) + ], SceneManager.prototype, "freeze", void 0); + __decorate([ + property(cc.Node) + ], SceneManager.prototype, "hammer", void 0); + __decorate([ + property(cc.Node) + ], SceneManager.prototype, "magic_wand", void 0); + __decorate([ + property(cc.Node) + ], SceneManager.prototype, "pause", void 0); + __decorate([ + property({ type: [cc.Prefab], tooltip: "方块数组" }) + ], SceneManager.prototype, "Block_Array", void 0); + __decorate([ + property({ type: [cc.Prefab], tooltip: "墙壁数组" }) + ], SceneManager.prototype, "Wall_Prefab", void 0); + SceneManager = __decorate([ + ccclass + ], SceneManager); + return SceneManager; +}(cc.Component)); +exports.default = SceneManager; cc._RF.pop(); } @@ -9236,272 +6933,7 @@ cc._RF.pop(); }); } })(); -//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImFzc2V0c1xcU2NyaXB0XFxHYW1lTWFuYWdlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsb0JBQW9CO0FBQ3BCLHdFQUF3RTtBQUN4RSxtQkFBbUI7QUFDbkIsa0ZBQWtGO0FBQ2xGLDhCQUE4QjtBQUM5QixrRkFBa0Y7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUdsRixpREFBZ0Q7QUFFMUMsSUFBQSxLQUFzQixFQUFFLENBQUMsVUFBVSxFQUFsQyxPQUFPLGFBQUEsRUFBRSxRQUFRLGNBQWlCLENBQUM7QUFHMUM7SUFBeUMsK0JBQVk7SUFBckQ7UUFBQSxxRUEwcEJDO1FBdnBCRyxXQUFLLEdBQWEsSUFBSSxDQUFDO1FBR3ZCLFVBQUksR0FBVyxPQUFPLENBQUM7UUFJdkIsaUJBQVcsR0FBc0IsRUFBRSxDQUFDO1FBR3BDLGlCQUFXLEdBQXNCLEVBQUUsQ0FBQztRQUdwQyxpQkFBVyxHQUEyQixFQUFFLENBQUM7UUFHekMseURBQXlEO1FBQ3pELG1EQUFtRDtRQUVuRCxXQUFLLEdBQVksS0FBSyxDQUFDO1FBQ3ZCLFdBQUssR0FBWSxLQUFLLENBQUM7UUFDdkIsV0FBSyxHQUFZLEtBQUssQ0FBQztRQUN2QixXQUFLLEdBQVksS0FBSyxDQUFDO1FBQ3ZCLFdBQUssR0FBWSxLQUFLLENBQUM7O0lBZ29CM0IsQ0FBQztvQkExcEJvQixXQUFXO0lBK0I1Qix3QkFBd0I7SUFFeEIsNEJBQU0sR0FBTjtRQUFBLGlCQTRFQztRQTFFRyxNQUFNLENBQUMsT0FBTyxFQUFFLENBQUM7UUFDakIsSUFBSSxDQUFDLFVBQVUsR0FBRyxDQUFDLENBQUM7UUFDcEIsSUFBSSxDQUFDLGdCQUFnQixFQUFFLENBQUM7UUFDeEIsRUFBRSxDQUFDLEVBQUUsQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQzVCLEVBQUUsQ0FBQyxFQUFFLENBQUMsVUFBVSxDQUFDLE9BQU8sQ0FBQyxTQUFTLEdBQUcsS0FBSyxD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QU8sRUFBQyxNQUFNLEVBQUMsQ0FBQztvREFDVjtJQUdwQztRQURDLFFBQVEsQ0FBQyxFQUFDLElBQUksRUFBRSxDQUFDLEVBQUUsQ0FBQyxXQUFXLENBQUMsRUFBRSxPQUFPLEVBQUMsTUFBTSxFQUFDLENBQUM7b0RBQ1Y7SUFoQnhCLFdBQVc7UUFEL0IsT0FBTztPQUNhLFdBQVcsQ0EwcEIvQjtJQUFELGtCQUFDO0NBMXBCRCxBQTBwQkMsQ0ExcEJ3QyxFQUFFLENBQUMsU0FBUyxHQTBwQnBEO2tCQTFwQm9CLFdBQVciLCJmaWxlIjoiIiwic291cmNlUm9vdCI6Ii8iLCJzb3VyY2VzQ29udGVudCI6WyIvLyBMZWFybiBUeXBlU2NyaXB0OlxyXG4vLyAgLSBodHRwczovL2RvY3MuY29jb3MuY29tL2NyZWF0b3IvbWFudWFsL2VuL3NjcmlwdGluZy90eXBlc2NyaXB0Lmh0bWxcclxuLy8gTGVhcm4gQXR0cmlidXRlOlxyXG4vLyAgLSBodHRwczovL2RvY3MuY29jb3MuY29tL2NyZWF0b3IvbWFudWFsL2VuL3NjcmlwdGluZy9yZWZlcmVuY2UvYXR0cmlidXRlcy5odG1sXHJcbi8vIExlYXJuIGxpZmUtY3ljbGUgY2FsbGJhY2tzOlxyXG4vLyAgLSBodHRwczovL2RvY3MuY29jb3MuY29tL2NyZWF0b3IvbWFudWFsL2VuL3NjcmlwdGluZy9saWZlLWN5Y2xlLWNhbGxiYWNrcy5odG1sXHJcblxyXG5pbXBvcnQgeyBNaW5pR2FtZU1hbmFnZXIgfSBmcm9tIFwiLi9TZGsvTWluaUdhbWVNYW5hZ2VyXCI7XHJcbmltcG9ydCB7IE1pbmlHYW1lU2RrIH0gZnJvbSBcIi4vU2RrL01pbmlHYW1lU2RrXCI7XHJcblxyXG5jb25zdCB7Y2NjbGFzcywgcHJvcGVydHl9ID0gY2MuX2RlY29yYXRvcjtcclxuXHJcbkBjY2NsYXNzXHJcbmV4cG9ydCBkZWZhdWx0IGNsYXNzIEdhbWVNYW5hZ2VyIGV4dGVuZHMgY2MuQ29tcG9uZW50IHtcclxuXHJcbiAgICBAcHJvcGVydHkoY2MuTGFiZWwpXHJcbiAgICBsYWJlbDogY2MuTGFiZWwgPSBudWxsO1xyXG5cclxuICAgIEBwcm9wZXJ0eVxyXG4gICAgdGV4dDogc3RyaW5nID0gJ2hlbGxvJztcclxuICAgIHN0YXRpYyBfaW5zdGFuY2UgOiBHYW1lTWFuYWdlciA9IG51bGw7XHJcblxyXG4gICAgQHByb3BlcnR5KHt0eXBlOiBbY2MuUHJlZmFiXSwgdG9vbHRpcDpcIuaWueWdl+aVsOe7hFwifSlcclxuICAgIEJsb2NrX0FycmF5IDogQXJyYXk8Y2MuUHJlZmFiPiA9IFtdO1xyXG5cclxuICAgIEBwcm9wZXJ0eSh7dHlwZTogW2NjLlByZWZhYl0sIHRvb2x0aXA6XCLlopnlo4HmlbDnu4RcIn0pXHJcbiAgICBXYWxsX1ByZWZhYiA6IEFycmF5PGNjLlByZWZhYj4gPSBbXTtcclxuXHJcbiAgICBAcHJvcGVydHkoe3R5cGU6IFtjYy5TcHJpdGVBdGxhc10sIHRvb2x0aXA6XCLmlrnlnZfpopzoibJcIn0pXHJcbiAgICBCbG9ja19Db2xvciA6IEFycmF5PGNjLlNwcml0ZUF0bGFzPiA9IFtdO1xyXG5cclxuICAgIHBhcnRpY2xlRWZmZWN0czogY2MuUGFydGljbGVBc3NldFtdO1xyXG4gICAgLy8gQHByb3BlcnR5KHt0eXBlOiBbY2MuUGFydGljbGVTeXN0ZW1dLCB0b29sdGlwOlwi57KS5a2Q5pWw57uEXCJ9KVxyXG4gICAgLy8gcGFydGljbGVFZmZlY3RzIDogQXJyYXk8Y2MuUGFydGljbGVTeXN0ZW0+ID0gW107XHJcblxyXG4gICAgbG9hZDEgOmJvb2xlYW4gPSBmYWxzZTtcclxuICAgIGxvYWQyIDpib29sZWFuID0gZmFsc2U7XHJcbiAgICBsb2FkMyA6Ym9vbGVhbiA9IGZhbHNlO1xyXG4gICAgbG9hZDQgOmJvb2xlYW4gPSBmYWxzZTtcclxuICAgIGxvYWQ1IDpib29sZWFuID0gZmFsc2U7XHJcbiAgICBzY2hlZHVsZUNhbGxiYWNrOiBhbnk7XHJcbiAgICB0aW1lTnVtYmVyOiBudW1iZXI7XHJcblxyXG4gICAgXHJcbiAgICAvLyBMSUZFLUNZQ0xFIENBTExCQUNLUzpcclxuXHJcbiAgICBvbkxvYWQgKCkge1xyXG5cclxuICAgICAgICB3aW5kb3cuaW5pdE1ncigpO1xyXG4gICAgICAgIHRoaXMudGltZU51bWJlciA9IDM7XHJcbiAgICAgICAgdGhpcy5zdGFydFRpbWVDdXREb3duKCk7XHJcbiAgICAgICAgY2MuZnguR2FtZUNvbmZpZy5pbml0KHRydWUpO1xyXG4gICAgICAgIGNjLmZ4LkdhbWVDb25maWcuR01fSU5GTy5nYW1lU3RhdGUgPSBmYWxzZTtcclxuICAgICAgICB0aGlzLnJlYWRNdXNpY0NvbmZpZygpO1xyXG4gICAgICAgIGNvbnNvbGUubG9nKFwi6Z+z5LmQ5byA5YWzXCIsY2MuZnguR2FtZUNvbmZpZy5HTV9JTkZPLm11c2ljT3Blbik7XHJcbiAgICAgICAgY2MuZnguQXVkaW9NYW5hZ2VyLl9pbnN0YW5jZS5wbGF5TXVzaWNHYW1lKCk7XHJcblxyXG4gICAgICAgIHRoaXMubG9hZDEgPSB0aGlzLmxvYWQyID0gdGhpcy5sb2FkMyA9IHRoaXMubG9hZDQgPSB0aGlzLmxvYWQ1ID1mYWxzZTtcclxuICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgICAgICAgdGhpcy5yZWFkVXNlckRhdGEoKTtcclxuICAgICAgICB9LCAyMDApO1xyXG4gXHJcblxyXG4gICAgICAgIGlmIChHYW1lTWFuYWdlci5faW5zdGFuY2UgPT0gbnVsbCkge1xyXG4gICAgICAgICAgICBHYW1lTWFuYWdlci5faW5zdGFuY2UgPSB0aGlzO1xyXG4gICAgICAgICAgICBjYy5nYW1lLmFkZFBlcnNpc3RSb290Tm9kZSh0aGlzLm5vZGUpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgY29uc3QgcGF0aCA9ICdwcmVmYWIvYmxvY2snO1xyXG4gICAgICAgIGNvbnN0IHBhdGgyID0gJ3ByZWZhYi93YWxsJztcclxuICAgICAgICBjYy5yZXNvdXJjZXMubG9hZERpcihwYXRoLCBjYy5QcmVmYWIsIChlcnIsIGFzc2V0czogY2MuUHJlZmFiW10pID0+IHtcclxuICAgICAgICAgICAgaWYgKGVycikge1xyXG4gICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoJ+WKqOaAgeWKoOi9vSBQcmVmYWIg5aSx6LSlOicsIGVycik7XHJcbiAgICAgICAgICAgICAgICBjYy5kaXJlY3Rvci5sb2FkU2NlbmUoXCJMb2FkU2NlbmVcIik7XHJcbiAgICAgICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgLy8g5bCG5Yqg6L2955qEIFByZWZhYiDotYvlgLznu5kgQmxvY2tfQXJyYXlcclxuICAgICAgICAgICAgdGhpcy5CbG9ja19BcnJheSA9IGFzc2V0cztcclxuICAgICAgICAgICAgdGhpcy5zZXRTb3J0KCk7XHJcbiAgICAgICAgICAgIHRoaXMubG9hZDEgPSB0cnVlO1xyXG4gICAgICAgIH0pO1xyXG5cclxuICAgICAgICBjYy5yZXNvdXJjZXMubG9hZERpcihwYXRoMiwgY2MuUHJlZmFiLCAoZXJyLCBhc3NldHM6IGNjLlByZWZhYltdKSA9PiB7XHJcbiAgICAgICAgICAgIGlmIChlcnIpIHtcclxuICAgICAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoJ+WKqOaAgeWKoOi9vSBQcmVmYWIg5aSx6LSlOicsIGVycik7XHJcbiAgICAgICAgICAgICAgICBjYy5kaXJlY3Rvci5sb2FkU2NlbmUoXCJMb2FkU2NlbmVcIik7XHJcbiAgICAgICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgLy8g5bCG5Yqg6L2955qEIFByZWZhYiDotYvlgLznu5kgQmxvY2tfQXJyYXlcclxuICAgICAgICAgICAgdGhpcy5XYWxsX1ByZWZhYiA9IGFzc2V0cztcclxuICAgICAgICAgICAgdGhpcy5sb2FkMiA9IHRydWU7XHJcbiAgICAgICAgICAgIHRoaXMuc2V0V2FsbFByZWZhYlNvcnQoKTtcclxuICAgICAgICB9KTtcclxuXHJcbiAgICAgICAgLy8gZGVidWdnZXI7XHJcblxyXG4gICAgICAgIC8vIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICAgIC8vICAgICBjYy5kaXJlY3Rvci5wcmVsb2FkU2NlbmUoXCJIb21lU2NlbmVcIiwgKGVycikgPT4ge1xyXG4gICAgICAgIC8vICAgICAgICAgaWYgKGVycikge1xyXG4gICAgICAgIC8vICAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoJ+mihOWKoOi9vSBIb21lU2NlbmUg5Zy65pmv5aSx6LSlOicsIGVycik7XHJcbiAgICAgICAgLy8gICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIC8vICAgICAgICAgfVxyXG4gICAgICAgIC8vICAgICB9KTtcclxuICAgICAgICAvLyB9LCAxMDAwKTtcclxuXHJcbiAgICAgICAgICAgICAgICAvLyDmo4DmtYvlvq7kv6HlsI/muLjmiI/liIfliLDlkI7lj7BcclxuICAgICAgICBpZiAoY2Muc3lzLnBsYXRmb3JtID09PSBjYy5zeXMuV0VDSEFUX0dBTUUpIHtcclxuICAgICAgICAgICAgLy9AdHMtaWdub3JlXHJcbiAgICAgICAgICAgIHd4Lm9uSGlkZSgoKSA9PiB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLm9uSGlkZSgpO1xyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgLy8g5qOA5rWL5b6u5L+h5bCP5ri45oiP5Zue5Yiw5YmN5Y+wXHJcbiAgICAgICAgICAgIC8vQHRzLWlnbm9yZVxyXG4gICAgICAgICAgICB3eC5vblNob3coKCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5vblNob3coKTtcclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgfVxyXG5cclxuICAgIH1cclxuXHJcbiAgICBvbkhpZGUgKCkge1xyXG4gICAgICAgIGNjLmF1ZGlvRW5naW5lLnN0b3BNdXNpYygpO1xyXG4gICAgICAgIGNjLmdhbWUucGF1c2UoKTtcclxuICAgIH1cclxuXHJcbiAgICBvblNob3cgKCkge1xyXG4gICAgICAgIGNjLmF1ZGlvRW5naW5lLnJlc3VtZU11c2ljKCk7XHJcbiAgICAgICAgY2MuZ2FtZS5yZXN1bWUoKTtcclxuICAgIH1cclxuXHJcbiAgICBsb2FkUGFydGljbGVFZmZlY3RzKCkge1xyXG4gICAgfVxyXG5cclxuXHJcbiAgICBcclxuXHJcbiAgICBzZXRXYWxsUHJlZmFiU29ydCgpIHtcclxuICAgICAgICBjb25zdCBvcmRlciA9IFsnZG93bicsICdkb3duTGVmdCcsICdkb3duUmlnaHQnLCAnbGVmdCcsJ3JpZ2h0JywndXAnLCd1cExlZnQnLCd1cFJpZ2h0J107XHJcbiAgICAgICAgdGhpcy5XYWxsX1ByZWZhYi5zb3J0KChhLCBiKSA9PiB7XHJcbiAgICAgICAgICAgIGNvbnN0IGluZGV4QSA9IG9yZGVyLmluZGV4T2YoYS5uYW1lKTtcclxuICAgICAgICAgICAgY29uc3QgaW5kZXhCID0gb3JkZXIuaW5kZXhPZihiLm5hbWUpO1xyXG4gICAgICAgICAgICBpZiAoaW5kZXhBID09PSAtMSkgcmV0dXJuIDE7XHJcbiAgICAgICAgICAgIGlmIChpbmRleEIgPT09IC0xKSByZXR1cm4gLTE7XHJcbiAgICAgICAgICAgIHJldHVybiBpbmRleEEgLSBpbmRleEI7XHJcbiAgICAgICAgfSk7XHJcbiAgICAgICAgXHJcbiAgICB9XHJcblxyXG4gICAgc2V0UGFydGljbGVTb3J0KCkge1xyXG4gICAgICAgIGNvbnN0IG9yZGVyID0gWyd0b3AnLCAnYm90JywgJ3JpZycsICdsZWYnXTtcclxuICAgICAgICB0aGlzLnBhcnRpY2xlRWZmZWN0cy5zb3J0KChhLCBiKSA9PiB7XHJcbiAgICAgICAgICAgIGNvbnN0IGluZGV4QSA9IG9yZGVyLmluZGV4T2YoYS5uYW1lLnN1YnN0cigwLDMpKTtcclxuICAgICAgICAgICAgY29uc3QgaW5kZXhCID0gb3JkZXIuaW5kZXhPZihiLm5hbWUuc3Vic3RyKDAsMykpO1xyXG4gICAgICAgICAgICBpZiAoaW5kZXhBID09PSAtMSkgcmV0dXJuIDE7XHJcbiAgICAgICAgICAgIGlmIChpbmRleEIgPT09IC0xKSByZXR1cm4gLTE7XHJcbiAgICAgICAgICAgIHJldHVybiBpbmRleEEgLSBpbmRleEI7XHJcbiAgICAgICAgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgc2V0U29ydCgpe1xyXG4gICAgICAgIHRoaXMuQmxvY2tfQXJyYXkuc29ydCgoYSwgYikgPT4ge1xyXG4gICAgICAgICAgICAvLyDku47lkI3np7DkuK3mj5Dlj5bmlbDlrZfpg6jliIZcclxuICAgICAgICAgICAgY29uc3QgbnVtYmVyQSA9IHBhcnNlSW50KGEubmFtZS5tYXRjaCgvXFxkKy8pPy5bMF0gfHwgJzAnLCAxMCk7XHJcbiAgICAgICAgICAgIGNvbnN0IG51bWJlckIgPSBwYXJzZUludChiLm5hbWUubWF0Y2goL1xcZCsvKT8uWzBdIHx8ICcwJywgMTApO1xyXG4gICAgICAgICAgICByZXR1cm4gbnVtYmVyQSAtIG51bWJlckI7XHJcbiAgICAgICAgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgc3RhcnQgKCkge1xyXG5cclxuICAgIH1cclxuXHJcbiAgICBzdGFydEdhbWUoKXtcclxuICAgICAgICBjb25zb2xlLmxvZyhcIui/m+WFpeWcuuaZr+S5i+WJjV9fX19fX19fX19fX19cIixjYy5meC5HYW1lQ29uZmlnLkdNX0lORk8uZmlyc3QpO1xyXG4gICAgICAgIGNjLmRpcmVjdG9yLmxvYWRTY2VuZShcIkhvbWVTY2VuZVwiKTtcclxuICAgIH1cclxuXHJcbiAgICByZXR1cm5Ib21lKCl7XHJcbiAgICAgICAgY2MudHdlZW4odGhpcy5ub2RlLmdldENoaWxkQnlOYW1lKFwiR2FtZVwiKSlcclxuICAgICAgICAgICAgLnRvKDAuNSwge29wYWNpdHk6IDEwMH0pXHJcbiAgICAgICAgICAgIC5jYWxsKCgpID0+IHtcclxuICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgIC8vIOmihOWKoOi9veaIkOWKn+WQjuWKoOi9veWcuuaZr1xyXG4gICAgICAgICAgICAgICAgY2MuZGlyZWN0b3IubG9hZFNjZW5lKFwiSG9tZVNjZW5lXCIsIChlcnIpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICBpZiAoZXJyKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoJ+WKoOi9vSBIb21lU2NlbmUg5Zy65pmv5aSx6LSlOicsIGVycik7XHJcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgY2MuZGlyZWN0b3IubG9hZFNjZW5lKFwiSG9tZVNjZW5lXCIpO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICB9KVxyXG4gICAgICAgICAgICAuc3RhcnQoKTtcclxuXHJcbiAgICAgICAgICAgIGNjLnR3ZWVuKHRoaXMubm9kZS5nZXRDaGlsZEJ5TmFtZShcIm1hc2tcIikpXHJcbiAgICAgICAgICAgIC50bygwLjUse29wYWNpdHk6IDI1NX0pXHJcbiAgICAgICAgICAgIC5zdGFydCgpO1xyXG5cclxuICAgICAgICAvLyBjYy5sb2FkZXIucmVsZWFzZUFsbCgpO1xyXG4gICAgICAgIC8vIOmihOWKoOi9vSBIb21lU2NlbmUg5Zy65pmvXHJcblxyXG4gICBcclxuICAgIH1cclxuXHJcblxyXG4gICAgcmVhZFVzZXJEYXRhKHJldHJ5Q291bnQgPSAwKXtcclxuICAgICAgICAvL0B0cy1pZ25vcmVcclxuICAgICAgICAgaWYgKHR5cGVvZiB3eCAhPT0gJ3VuZGVmaW5lZCcgJiYgd3ggIT09IG51bGwpIHsgXHJcbiAgICAgICAgICAgICAgICBsZXQgbGV2ZWxJbmZvID0gY2MuZnguU3RvcmFnZU1lc3NhZ2UuZ2V0U3RvcmFnZShcImxldmVsXCIpO1xyXG4gICAgICAgICAgICAgICAgLy/ml6fnmoTor7vlj5bmlbDmja7orr7nva7mlbDmja7mlrnms5Us5Lul5by66IGU572R5Li65Li7XHJcbiAgICAgICAgICAgICAgICBpZihsZXZlbEluZm8gPT0gdW5kZWZpbmVkIHx8IGxldmVsSW5mbyA9PSBcIlwiIHx8IGxldmVsSW5mbyA9PSBudWxsKXtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLm9sZFJlYWREYXRhKHJldHJ5Q291bnQpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgLy/mlrDnmoTor7vlj5bmlbDmja7orr7nva7mlrnms5XvvIzku6XmnKzlnLDkuLrkuLtcclxuICAgICAgICAgICAgICAgIGVsc2V7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5uZXdSZWFkRGF0YSgpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgY29uc29sZS5sb2coXCLljbPlsIbor7vlj5bkvZPlipvlgLxcIik7XHJcbiAgICAgICAgICAgICAgICBjYy5meC5HYW1lVG9vbC5nZXRIZWFsdGgoKGRhdGEpPT57XHJcbiAgICAgICAgICAgICAgICAgICAgY29uc29sZS5sb2coXCLkvZPlipvlgLzlrozmiJDov5vlhaXmuLjmiI9cIik7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5sb2FkNSA9IHRydWU7XHJcbiAgICAgICAgICAgICAgICB9KTtcclxuXHJcbiAgICAgICAgIH1cclxuICAgICAgICAgZWxzZXtcclxuICAgICAgICAgICAgdGhpcy5sb2FkMyA9IHRydWU7XHJcbiAgICAgICAgICAgIHRoaXMubG9hZDQgPSB0cnVlO1xyXG4gICAgICAgICAgICB0aGlzLmxvYWQ1ID0gdHJ1ZTtcclxuICAgICAgICAgICAgY2MuZnguR2FtZVRvb2wuZ2V0SGVhbHRoKG51bGwpO1xyXG4gICAgICAgICB9XHJcbiAgICAgICAgLy8g5a2Y5YKo55So5oi35pWw5o2uXHJcbiAgICB9XHJcblxyXG4gICAgcmVhZE11c2ljQ29uZmlnKCl7XHJcbiAgICAgICAgbGV0IGF1ZGlvSW5mbyA9IGNjLmZ4LlN0b3JhZ2VNZXNzYWdlLmdldFN0b3JhZ2UoXCJtdXNpY1wiKTtcclxuICAgICAgICBpZihhdWRpb0luZm8gPT0gdW5kZWZpbmVkIHx8IGF1ZGlvSW5mbyA9PSBcIlwiIHx8IGF1ZGlvSW5mbyA9PSBudWxsKXtcclxuICAgICAgICAgICAgYXVkaW9JbmZvID0ge1xyXG4gICAgICAgICAgICAgICAgXCJtdXNpY09wZW5cIjogdHJ1ZSwgICAgICAgICAgICAgLy/pn7PkuZBcclxuICAgICAgICAgICAgICAgIFwiZWZmZWN0T3BlblwiOiB0cnVlLCAgICAgICAgICAgIC8v6Z+z5pWIXHJcbiAgICAgICAgICAgICAgICBcInZpYnJhdGVPcGVuXCI6IHRydWUsICAgICAgICAgICAvL+mch+WKqFxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGNjLmZ4LlN0b3JhZ2VNZXNzYWdlLnNldFN0b3JhZ2UoXCJtdXNpY1wiLGF1ZGlvSW5mbyk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2V7XHJcbiAgICAgICAgICAgIGNjLmZ4LkdhbWVDb25maWcuR01fSU5GTy5tdXNpY09wZW4gPSBhdWRpb0luZm8ubXVzaWNPcGVuO1xyXG4gICAgICAgICAgICBjYy5meC5HYW1lQ29uZmlnLkdNX0lORk8uZWZmZWN0T3BlbiA9IGF1ZGlvSW5mby5lZmZlY3RPcGVuO1xyXG4gICAgICAgICAgICBjYy5meC5HYW1lQ29uZmlnLkdNX0lORk8udmlicmF0ZU9wZW4gPSBhdWRpb0luZm8udmlicmF0ZU9wZW47XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG4gICAgXHJcbiAgICAvL+aWsOeUqOaIt++8jOacieacrOWcsOe8k+WtmOivu+WPlumFjee9rlxyXG4gICAgbmV3UmVhZERhdGEoKXtcclxuICAgICAgICBjb25zb2xlLmxvZyhcIuivu+WPluaWsOS/oeaBr1wiKTtcclxuICAgICAgICBsZXQgb3BlbmlkID0gY2MuZnguU3RvcmFnZU1lc3NhZ2UuZ2V0U3RvcmFnZShcIm9wZW5pZFwiKTtcclxuICAgICAgICBpZihvcGVuaWQgPT0gbnVsbCB8fCBvcGVuaWQgPT0gXCJcIiB8fCBvcGVuaWQgPT0gdW5kZWZpbmVkKXtcclxuICAgICAgICAgICAgY29uc29sZS5sb2coXCLmsqHmnIlvcGVuaWRcIik7XHJcbiAgICAgICAgICAgIC8vQHRzLWlnbm9yZVxyXG4gICAgICAgICAgICB3eC5jbG91ZC5jYWxsRnVuY3Rpb24oe1xyXG4gICAgICAgICAgICBuYW1lOiAndXNlckRhdGEnLFxyXG4gICAgICAgICAgICAgICAgZGF0YToge1xyXG4gICAgICAgICAgICAgICAgICAgIGFjdGlvbjogJ3JlYWQnXHJcbiAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgICAgc3VjY2VzczogcmVzID0+IHtcclxuICAgICAgICAgICAgICAgICAgICBjb25zb2xlLmxvZygn6K+75Y+W55So5oi35pWw5o2u5oiQ5YqfJywgcmVzLnJlc3VsdClcclxuICAgICAgICAgICAgICAgICAgICBpZihyZXMucmVzdWx0LmNvZGUgPT0gNDA0ICYmIHJlcy5yZXN1bHQubWVzc2FnZSA9PSBcIuacquaJvuWIsOeUqOaIt+aVsOaNrlwiKXtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgZWxzZSBpZihyZXMucmVzdWx0LmNvZGUgPT0gMjAwKXtcclxuICAgICAgICAgICAgICAgICAgICAgICAgaWYocmVzLnJlc3VsdC5kYXRhKXtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNjLmZ4LkdhbWVDb25maWcuR01fSU5GTy5vcGVuaWQgPSByZXMucmVzdWx0Lm9wZW5pZDtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNjLmZ4LkdhbWVDb25maWcuR01fSU5GTy51c2VybmFtZSA9IHJlcy5yZXN1bHQuZGF0YS51c2VybmFtZTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNjLmZ4LkdhbWVDb25maWcuR01fSU5GTy51c2VyYXZhdGFyID0gcmVzLnJlc3VsdC5kYXRhLnVzZXJhdmF0YXI7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCByZWdpc3Rlcl90aW1lID0gcmVzLnJlc3VsdC5kYXRhLnJlZ2lzdGVyX3RpbWU7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBNaW5pR2FtZVNkay5BUEkuc2h1c2h1X3VzZXJTZXQocmVnaXN0ZXJfdGltZSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYy5meC5TdG9yYWdlTWVzc2FnZS5zZXRTdG9yYWdlKFwib3BlbmlkXCIsY2MuZnguR2FtZUNvbmZpZy5HTV9JTkZPLm9wZW5pZCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgICAgZmFpbDogZXJyID0+IHtcclxuICAgICAgICAgICAgICAgICAgICBjb25zb2xlLmVycm9yKCfor7vlj5bnlKjmiLfmlbDmja7lpLHotKUnLCBlcnIpXHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH0pXHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2V7XHJcbiAgICAgICAgICAgIGlmKG9wZW5pZClcclxuICAgICAgICAgICAgICAgIGNjLmZ4LkdhbWVDb25maWcuR01fSU5GTy5vcGVuaWQgPSBvcGVuaWQ7XHJcbiAgICAgICAgfVxyXG4gICBcclxuXHJcblxyXG4gICAgICAgIC8v562J57qn5L+h5oGvXHJcbiAgICAgICAgY2MuZnguR2FtZVRvb2wuZ2V0VXNlckxldmVsKChkYXRhKSA9PntcclxuICAgICAgICAgICAgY29uc3QgdGltZXN0YW1wID0gRGF0ZS5ub3coKTtcclxuICAgICAgICAgICAgbGV0IGxldmVsSW5mbyA9IGNjLmZ4LlN0b3JhZ2VNZXNzYWdlLmdldFN0b3JhZ2UoXCJsZXZlbFwiKTtcclxuICAgICAgICAgICAgaWYoZGF0YS5yZXN1bHQuY29kZSA9PSA0MDQgJiYgZGF0YS5yZXN1bHQubWVzc2FnZSA9PSBcIuacquaJvuWIsOWFs+WNoeaVsOaNrlwiKXtcclxuICAgICAgICAgICAgICAgIC8vIGNvbnNvbGUubG9nKFwi5rKh5pyJ562J57qn5L+h5oGv77yM5LuO55So5oi35o6l5Y+j5ou/5Yiw5pWw5o2uXCIpO1xyXG4gICAgICAgICAgICAgICAgaWYobGV2ZWxJbmZvLmxldmVsKXtcclxuICAgICAgICAgICAgICAgICAgICBjYy5meC5HYW1lQ29uZmlnLkdNX0lORk8ubGV2ZWwgPSBsZXZlbEluZm8ubGV2ZWw7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB0aGlzLmxvYWQ0ID0gdHJ1ZTtcclxuICAgICAgICAgICAgICAgIGNjLmZ4LkdhbWVUb29sLnNldFVzZXJMZXZlbCgoZGF0YSk9PntcclxuICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICB9IFxyXG4gICAgICAgICAgICBlbHNlIGlmKGRhdGEucmVzdWx0LmNvZGUgPT0gMjAwKXtcclxuICAgICAgICAgICAgICAgIC8vIGNvbnNvbGUubG9nKFwi5pyJ562J57qn5L+h5oGv77yM5LuO5YWz5Y2h5o6l5Y+j5ou/5Yiw5pWw5o2uXCIsZGF0YS5yZXN1bHQuZGF0YSk7XHJcbiAgICAgICAgICAgICAgICAvL+a4uOaIj+WJjeerr+WtmOWCqCDmlrDkuo7mnI3liqHlmajnq68s5Lul5ri45oiP5YmN56uv5L+h5oGv5Li65Li777yM5pS+5pyN5Yqh5Zmo5a2Y5YKoXHJcbiAgICAgICAgICAgICAgICBsZXQgdGVtcCA9IGRhdGEucmVzdWx0LnRpbWVzdGFtcCAtIGxldmVsSW5mby50aW1lc3RhbXA7XHJcbiAgICAgICAgICAgICAgICBjb25zb2xlLmxvZyhcIuetiee6p+aXtumXtOW3rjpcIix0ZW1wKTtcclxuICAgICAgICAgICAgICAgIGlmKChkYXRhLnJlc3VsdC50aW1lc3RhbXAgLSBsZXZlbEluZm8udGltZXN0YW1wKSA8IDEwMDAwKXtcclxuICAgICAgICAgICAgICAgICAgICBpZihsZXZlbEluZm8ubGV2ZWwpe1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zb2xlLmxvZyhcIuS7pea4uOaIj+WJjeerr+etiee6p+S4uuWHhlwiLGRhdGEucmVzdWx0LmRhdGEpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBjYy5meC5HYW1lQ29uZmlnLkdNX0lORk8ubGV2ZWwgPSBsZXZlbEluZm8ubGV2ZWw7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIGNvbnNvbGUubG9nKFwi562J57qn5Li6OlwiLGNjLmZ4LkdhbWVDb25maWcuR01fSU5GTy5sZXZlbCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNjLmZ4LkdhbWVUb29sLnNldFVzZXJMZXZlbCgoZGF0YSk9PntcclxuICAgICAgICAgICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIC8v5pyN5Yqh5Zmo56uv5a2Y5YKo5pe26Ze05paw5LqO5ri45oiP56uv77yM5Lul5pyN5Yqh5Zmo56uv5Li65Li7LOW+gOWJjeerr+WtmOWCqFxyXG4gICAgICAgICAgICAgICAgZWxzZXtcclxuICAgICAgICAgICAgICAgICAgICBjb25zb2xlLmxvZyhcIuS7peacjeWKoeWZqOetiee6p+S4uuWHhlwiLGRhdGEucmVzdWx0LmRhdGEpO1xyXG4gICAgICAgICAgICAgICAgICAgIGNjLmZ4LkdhbWVDb25maWcuR01fSU5GTy5sZXZlbCA9IGRhdGEucmVzdWx0LmRhdGE7IFxyXG4gICAgICAgICAgICAgICAgICAgIGxldmVsSW5mby5sZXZlbCA9IGNjLmZ4LkdhbWVDb25maWcuR01fSU5GTy5sZXZlbDtcclxuICAgICAgICAgICAgICAgICAgICBsZXZlbEluZm8udGltZXN0YW1wID0gdGltZXN0YW1wO1xyXG4gICAgICAgICAgICAgICAgICAgIC8vIGNvbnNvbGUubG9nKFwiMTExMTExMeWtmOWCqOWFs+WNoeaVsOaNrjpcIixjYy5meC5HYW1lQ29uZmlnLkdNX0lORk8ubGV2ZWwpO1xyXG4gICAgICAgICAgICAgICAgICAgIGNjLmZ4LlN0b3JhZ2VNZXNzYWdlLnNldFN0b3JhZ2UoXCJsZXZlbFwiLGxldmVsSW5mbyk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB0aGlzLmxvYWQ0ID0gdHJ1ZTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH0pO1xyXG4gICAgICAgIC8v6YeR5biB5L+h5oGvXHJcbiAgICAgICAgY2MuZnguR2FtZVRvb2wuZ2V0VXNlckNvaW4oKGRhdGEpID0+e1xyXG4gICAgICAgICAgICBjb25zdCB0aW1lc3RhbXAgPSBEYXRlLm5vdygpO1xyXG4gICAgICAgICAgICBsZXQgY29pbkluZm8gPSBjYy5meC5TdG9yYWdlTWVzc2FnZS5nZXRTdG9yYWdlKFwiY29pblwiKTtcclxuICAgICAgICAgICAgaWYoZGF0YS5yZXN1bHQuY29kZSA9PSA0MDQgJiYgZGF0YS5yZXN1bHQubWVzc2FnZSA9PSBcIuacquaJvuWIsOmHkeW4geaVsOaNrlwiKXtcclxuICAgICAgICAgICAgICAgIGlmKGNvaW5JbmZvLmNvaW4pXHJcbiAgICAgICAgICAgICAgICAgICAgY2MuZnguR2FtZUNvbmZpZy5HTV9JTkZPLmNvaW4gPSBjb2luSW5mby5jb2luO1xyXG4gICAgICAgICAgICAgICAgY29uc29sZS5sb2coXCLmsqHmnInph5HluIHkv6Hmga/vvIzku47nlKjmiLfmjqXlj6Pmi7/liLDmlbDmja5cIixjYy5meC5HYW1lQ29uZmlnLkdNX0lORk8uY29pbik7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmxvYWQzID0gdHJ1ZTtcclxuICAgICAgICAgICAgICAgIGNjLmZ4LkdhbWVUb29sLnNldFVzZXJDb2luKChkYXRhKT0+e1xyXG4gICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgIH0gXHJcbiAgICAgICAgICAgIGVsc2UgaWYoZGF0YS5yZXN1bHQuY29kZSA9PSAyMDApe1xyXG4gICAgICAgICAgICAgICAgLy8gY29uc29sZS5sb2coXCLmnInph5HluIHkv6Hmga/vvIzku47ph5HluIHmjqXlj6Pmi7/liLDmlbDmja5cIixkYXRhLnJlc3VsdC5kYXRhKTtcclxuICAgICAgICAgICAgICAgIC8v5ri45oiP5YmN56uv5a2Y5YKoIOaWsOS6juacjeWKoeWZqOerryzku6XmuLjmiI/liY3nq6/kv6Hmga/kuLrkuLvvvIzmlL7mnI3liqHlmajlrZjlgqhcclxuICAgICAgICAgICAgICAgIGxldCB0ZW1wID0gZGF0YS5yZXN1bHQudGltZXN0YW1wIC0gY29pbkluZm8udGltZXN0YW1wO1xyXG4gICAgICAgICAgICAgICAgY29uc29sZS5sb2coXCLph5HluIHml7bpl7Tlt646XCIsdGVtcCk7XHJcbiAgICAgICAgICAgICAgICBpZigoZGF0YS5yZXN1bHQudGltZXN0YW1wIC0gY29pbkluZm8udGltZXN0YW1wKSA8IDEwMDAwKXtcclxuICAgICAgICAgICAgICAgICAgICBjb25zb2xlLmxvZyhcIuS7peWJjeerr+mHkeW5o+S4uuWHhjpcIixjb2luSW5mbyk7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYoY29pbkluZm8uY29pbilcclxuICAgICAgICAgICAgICAgICAgICAgICAgY2MuZnguR2FtZUNvbmZpZy5HTV9JTkZPLmNvaW4gPSBjb2luSW5mby5jb2luO1xyXG4gICAgICAgICAgICAgICAgICAgIGVsc2V7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNjLmZ4LkdhbWVDb25maWcuR01fSU5GTy5jb2luID0gZGF0YS5yZXN1bHQuZGF0YTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgY29pbkluZm8uY29pbiA9IGNjLmZ4LkdhbWVDb25maWcuR01fSU5GTy5jb2luO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBjb2luSW5mby50aW1lc3RhbXAgPSB0aW1lc3RhbXA7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKFwiMTExMTExMTExMTFcIik7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNjLmZ4LlN0b3JhZ2VNZXNzYWdlLnNldFN0b3JhZ2UoXCJjb2luXCIsY29pbkluZm8pO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICBjb25zb2xlLmxvZyhcIuaUueWPmOWQjumHkeW4gTpcIixjYy5meC5HYW1lQ29uZmlnLkdNX0lORk8uY29pbik7XHJcbiAgICAgICAgICAgICAgICAgICAgY2MuZnguR2FtZVRvb2wuc2V0VXNlckNvaW4oKGRhdGEpPT57XHJcbiAgICAgICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAvL+acjeWKoeWZqOerr+WtmOWCqOaXtumXtOaWsOS6jua4uOaIj+err++8jOS7peacjeWKoeWZqOerr+S4uuS4uyzlvoDliY3nq6/lrZjlgqhcclxuICAgICAgICAgICAgICAgIGVsc2V7XHJcbiAgICAgICAgICAgICAgICAgICAgY29uc29sZS5sb2coXCLku6XmnI3liqHlmajph5HluaPkuLrlh4Y6XCIsZGF0YS5yZXN1bHQuZGF0YSk7XHJcbiAgICAgICAgICAgICAgICAgICAgY2MuZnguR2FtZUNvbmZpZy5HTV9JTkZPLmNvaW4gPSBkYXRhLnJlc3VsdC5kYXRhOyBcclxuICAgICAgICAgICAgICAgICAgICBjb2luSW5mby5jb2luID0gY2MuZnguR2FtZUNvbmZpZy5HTV9JTkZPLmNvaW47XHJcbiAgICAgICAgICAgICAgICAgICAgY29pbkluZm8udGltZXN0YW1wID0gdGltZXN0YW1wO1xyXG4gICAgICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKFwiMjIyMjIyMjIyMlwiKTtcclxuICAgICAgICAgICAgICAgICAgICBjYy5meC5TdG9yYWdlTWVzc2FnZS5zZXRTdG9yYWdlKFwiY29pblwiLGNvaW5JbmZvKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIHRoaXMubG9hZDMgPSB0cnVlO1xyXG4gICAgICAgICAgICB9IFxyXG4gICAgICAgIH0pO1xyXG4gICAgICAgIC8v6YGT5YW35L+h5oGvXHJcbiAgICAgICAgY2MuZnguR2FtZVRvb2wuZ2V0VXNlclByb3AoKGRhdGEpID0+e1xyXG4gICAgICAgICAgICBjb25zdCB0aW1lc3RhbXAgPSBEYXRlLm5vdygpO1xyXG4gICAgICAgICAgICBsZXQgcHJvcEluZm8gPSBjYy5meC5TdG9yYWdlTWVzc2FnZS5nZXRTdG9yYWdlKFwicHJvcFwiKTtcclxuICAgICAgICAgICAgaWYoZGF0YS5yZXN1bHQuY29kZSA9PSA0MDQgJiYgZGF0YS5yZXN1bHQubWVzc2FnZSA9PSBcIuacquaJvuWIsOmBk+WFt+aVsOaNrlwiKXtcclxuICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKFwi5rKh5pyJ6YGT5YW35L+h5oGv77yM5LuO55So5oi35o6l5Y+j5ou/5Yiw5pWw5o2uXCIscHJvcEluZm8pO1xyXG4gICAgICAgICAgICAgICAgaWYocHJvcEluZm8uZnJlZXplQW1vdW50ID09IHVuZGVmaW5lZCB8fCBwcm9wSW5mby5oYW1tZXJBbW91bnQgPT0gdW5kZWZpbmVkIHx8IHByb3BJbmZvLm1hZ2ljQW1vdW50ID09IHVuZGVmaW5lZCl7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKFwiMjIyMjIyMumBk+WFt+aVsOaNruW8guW4uFwiKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgY2MuZnguR2FtZUNvbmZpZy5HTV9JTkZPLmZyZWV6ZUFtb3VudCA9IDA7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNjLmZ4LkdhbWVDb25maWcuR01fSU5GTy5oYW1tZXJBbW91bnQgPSAwO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBjYy5meC5HYW1lQ29uZmlnLkdNX0lORk8ubWFnaWNBbW91biA9IDA7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGxldCBwcm9wSW5mb05ldyA9IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiZnJlZXplQW1vdW50XCI6Y2MuZnguR2FtZUNvbmZpZy5HTV9JTkZPLmZyZWV6ZUFtb3VudCxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiaGFtbWVyQW1vdW50XCI6Y2MuZnguR2FtZUNvbmZpZy5HTV9JTkZPLmhhbW1lckFtb3VudCxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwibWFnaWNBbW91bnRcIjpjYy5meC5HYW1lQ29uZmlnLkdNX0lORk8ubWFnaWNBbW91bixcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwidGltZXN0YW1wXCI6dGltZXN0YW1wXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgY29uc29sZS5sb2coXCIxMTExMTEx5LiK5Lyg6YGT5YW35L+h5oGvOlwiLHByb3BJbmZvTmV3KTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgY2MuZnguU3RvcmFnZU1lc3NhZ2Uuc2V0U3RvcmFnZShcInByb3BcIixwcm9wSW5mb05ldyk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBlbHNle1xyXG4gICAgICAgICAgICAgICAgICAgIC8vIGNjLmZ4LkdhbWVDb25maWcuR01fSU5GTy5mcmVlemVBbW91bnQgPSBkYXRhLnJlc3VsdC5kYXRhLmZyZWV6ZTtcclxuICAgICAgICAgICAgICAgICAgICAvLyBjYy5meC5HYW1lQ29uZmlnLkdNX0lORk8uaGFtbWVyQW1vdW50ID0gZGF0YS5yZXN1bHQuZGF0YS5oYW1tZXI7XHJcbiAgICAgICAgICAgICAgICAgICAgLy8gY2MuZnguR2FtZUNvbmZpZy5HTV9JTkZPLm1hZ2ljQW1vdW50ID0gZGF0YS5yZXN1bHQuZGF0YS5tYWdpY193YW5kO1xyXG4gICAgICAgICAgICAgICAgICAgIGNjLmZ4LkdhbWVDb25maWcuR01fSU5GTy5mcmVlemVBbW91bnQgPSBwcm9wSW5mby5mcmVlemVBbW91bnQ7XHJcbiAgICAgICAgICAgICAgICAgICAgY2MuZnguR2FtZUNvbmZpZy5HTV9JTkZPLmhhbW1lckFtb3VudCA9IHByb3BJbmZvLmhhbW1lckFtb3VudDtcclxuICAgICAgICAgICAgICAgICAgICBjYy5meC5HYW1lQ29uZmlnLkdNX0lORk8ubWFnaWNBbW91bnQgPSBwcm9wSW5mby5tYWdpY0Ftb3VudDtcclxuICAgICAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgIC8vIGNjLmZ4LkdhbWVDb25maWcuR01fSU5GTy5mcmVlemVBbW91bnQgPSBwcm9wSW5mby5mcmVlemVBbW91bnQ7XHJcbiAgICAgICAgICAgICAgICAvLyBjYy5meC5HYW1lQ29uZmlnLkdNX0lORk8uaGFtbWVyQW1vdW50ID0gcHJvcEluZm8uaGFtbWVyQW1vdW50O1xyXG4gICAgICAgICAgICAgICAgLy8gY2MuZnguR2FtZUNvbmZpZy5HTV9JTkZPLm1hZ2ljQW1vdW50ID0gcHJvcEluZm8ubWFnaWNBbW91bnQ7XHJcbiAgICAgICAgICAgICAgICBjYy5meC5HYW1lVG9vbC5zZXRVc2VyUHJvcCgwLDAsKGRhdGEpPT57XHJcbiAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgfSBcclxuICAgICAgICAgICAgZWxzZSBpZihkYXRhLnJlc3VsdC5jb2RlID09IDIwMCl7XHJcbiAgICAgICAgICAgICAgICAvLyBjb25zb2xlLmxvZyhcIuacrOWcsOaXtumXtOaIs1wiLHByb3BJbmZvLnRpbWVzdGFtcCxcIuacjeWKoeWZqOaXtumXtOaIs1wiLGRhdGEucmVzdWx0LnRpbWVzdGFtcCk7XHJcbiAgICAgICAgICAgICAgICBpZigoZGF0YS5yZXN1bHQudGltZXN0YW1wIC0gcHJvcEluZm8udGltZXN0YW1wKSA8IDEwMDAwKXtcclxuICAgICAgICAgICAgICAgICAgICBjb25zb2xlLmxvZyhcIuS7peWJjeerr+mBk+WFt+S4uuS4uzpcIixwcm9wSW5mbyk7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYocHJvcEluZm8uZnJlZXplQW1vdW50ID09IHVuZGVmaW5lZCB8fCBwcm9wSW5mby5oYW1tZXJBbW91bnQgPT0gdW5kZWZpbmVkIHx8IHByb3BJbmZvLm1hZ2ljQW1vdW50ID09IHVuZGVmaW5lZCl7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKFwiMTExMTEx6YGT5YW35pWw5o2u5byC5bi4XCIsZGF0YS5yZXN1bHQuZGF0YSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNjLmZ4LkdhbWVDb25maWcuR01fSU5GTy5mcmVlemVBbW91bnQgPSBkYXRhLnJlc3VsdC5kYXRhLmZyZWV6ZTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgY2MuZnguR2FtZUNvbmZpZy5HTV9JTkZPLmhhbW1lckFtb3VudCA9IGRhdGEucmVzdWx0LmRhdGEuaGFtbWVyO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBjYy5meC5HYW1lQ29uZmlnLkdNX0lORk8ubWFnaWNBbW91bnQgPSBkYXRhLnJlc3VsdC5kYXRhLm1hZ2ljX3dhbmQ7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGxldCBwcm9wSW5mb05ldyA9IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiZnJlZXplQW1vdW50XCI6Y2MuZnguR2FtZUNvbmZpZy5HTV9JTkZPLmZyZWV6ZUFtb3VudCxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiaGFtbWVyQW1vdW50XCI6Y2MuZnguR2FtZUNvbmZpZy5HTV9JTkZPLmhhbW1lckFtb3VudCxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwibWFnaWNBbW91bnRcIjpjYy5meC5HYW1lQ29uZmlnLkdNX0lORk8ubWFnaWNBbW91bnQsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBcInRpbWVzdGFtcFwiOnRpbWVzdGFtcFxyXG4gICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKFwiMzMzMzMz5LiK5Lyg6YGT5YW35L+h5oGvOlwiLHByb3BJbmZvTmV3KTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgY2MuZnguU3RvcmFnZU1lc3NhZ2Uuc2V0U3RvcmFnZShcInByb3BcIixwcm9wSW5mb05ldyk7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIGVsc2V7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKFwi6YGT5YW35pWw5o2u5q2j5bi4XCIpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBjYy5meC5HYW1lQ29uZmlnLkdNX0lORk8uZnJlZXplQW1vdW50ID0gcHJvcEluZm8uZnJlZXplQW1vdW50O1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBjYy5meC5HYW1lQ29uZmlnLkdNX0lORk8uaGFtbWVyQW1vdW50ID0gcHJvcEluZm8uaGFtbWVyQW1vdW50O1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBjYy5meC5HYW1lQ29uZmlnLkdNX0lORk8ubWFnaWNBbW91bnQgPSBwcm9wSW5mby5tYWdpY0Ftb3VudDtcclxuICAgICAgICAgICAgICAgICAgICAgICAgY2MuZnguR2FtZVRvb2wuc2V0VXNlclByb3AoMCwwLChkYXRhKT0+e1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBlbHNle1xyXG4gICAgICAgICAgICAgICAgICAgIGNjLmZ4LkdhbWVDb25maWcuR01fSU5GTy5mcmVlemVBbW91bnQgPSBkYXRhLnJlc3VsdC5kYXRhLmZyZWV6ZTtcclxuICAgICAgICAgICAgICAgICAgICBjYy5meC5HYW1lQ29uZmlnLkdNX0lORk8uaGFtbWVyQW1vdW50ID0gZGF0YS5yZXN1bHQuZGF0YS5oYW1tZXI7XHJcbiAgICAgICAgICAgICAgICAgICAgY2MuZnguR2FtZUNvbmZpZy5HTV9JTkZPLm1hZ2ljQW1vdW50ID0gZGF0YS5yZXN1bHQuZGF0YS5tYWdpY193YW5kO1xyXG4gICAgICAgICAgICAgICAgICAgIGxldCBwcm9wSW5mb05ldyA9IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgXCJmcmVlemVBbW91bnRcIjpjYy5meC5HYW1lQ29uZmlnLkdNX0lORk8uZnJlZXplQW1vdW50LFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBcImhhbW1lckFtb3VudFwiOmNjLmZ4LkdhbWVDb25maWcuR01fSU5GTy5oYW1tZXJBbW91bnQsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFwibWFnaWNBbW91bnRcIjpjYy5meC5HYW1lQ29uZmlnLkdNX0lORk8ubWFnaWNBbW91bnQsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFwidGltZXN0YW1wXCI6dGltZXN0YW1wXHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKFwiMjIyMjIyMjLkuIrkvKDpgZPlhbfkv6Hmga86XCIscHJvcEluZm9OZXcsZGF0YS5yZXN1bHQpO1xyXG4gICAgICAgICAgICAgICAgICAgIGNjLmZ4LlN0b3JhZ2VNZXNzYWdlLnNldFN0b3JhZ2UoXCJwcm9wXCIscHJvcEluZm9OZXcpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9IFxyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG4gICAgLy/ml6fnlKjmiLfvvIzml6DmnKzlnLDnvJPlrZjor7vlj5bphY3nva5cclxuICAgIG9sZFJlYWREYXRhKHJldHJ5Q291bnQ6bnVtYmVyKXtcclxuICAgICAgICBjb25zb2xlLmxvZyhcIuivu+WPluaXp+S/oeaBr1wiKTtcclxuICAgICAgICBjb25zdCBNQVhfUkVUUklFUyA9IDE1O1xyXG4gICAgICAgIGNvbnN0IHRpbWVzdGFtcCA9IERhdGUubm93KCk7XHJcbiAgICAgICAgLy8g6K+75Y+W55So5oi35pWw5o2uXHJcbiAgICAgICAgLy9AdHMtaWdub3JlXHJcbiAgICAgICAgd3guY2xvdWQuY2FsbEZ1bmN0aW9uKHtcclxuICAgICAgICBuYW1lOiAndXNlckRhdGEnLFxyXG4gICAgICAgIGRhdGE6IHtcclxuICAgICAgICAgICAgYWN0aW9uOiAncmVhZCdcclxuICAgICAgICB9LFxyXG4gICAgICAgIHN1Y2Nlc3M6IHJlcyA9PiB7ICAgXHJcbiAgICAgICAgICAgIGNvbnNvbGUubG9nKCfor7vlj5bnlKjmiLfmlbDmja7miJDlip8nLCByZXMucmVzdWx0KVxyXG4gICAgICAgICAgICBpZihyZXMucmVzdWx0LmNvZGUgPT0gNDA0ICYmIHJlcy5yZXN1bHQubWVzc2FnZSA9PSBcIuacquaJvuWIsOeUqOaIt+aVsOaNrlwiKXtcclxuICAgICAgICAgICAgICAgIGlmKHJlcy5yZXN1bHQub3BlbmlkKXtcclxuICAgICAgICAgICAgICAgICAgICBjYy5meC5HYW1lQ29uZmlnLkdNX0lORk8ub3BlbmlkID0gcmVzLnJlc3VsdC5vcGVuaWRcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIGNjLmZ4LkdhbWVDb25maWcuR01fSU5GTy5maXJzdCA9IHRydWU7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmxvYWQzID0gdHJ1ZTtcclxuICAgICAgICAgICAgICAgIHRoaXMubG9hZDQgPSB0cnVlO1xyXG4gICAgICAgICAgICAgICAgbGV0IGxldmVsSW5mbyA9IHtcImxldmVsXCI6MCxcInRpbWVzdGFtcFwiOnRpbWVzdGFtcH07XHJcbiAgICAgICAgICAgICAgICBjYy5meC5TdG9yYWdlTWVzc2FnZS5zZXRTdG9yYWdlKFwibGV2ZWxcIixsZXZlbEluZm8pO1xyXG4gICAgICAgICAgICAgICAgbGV0IGNvaW5JbmZvID0ge1wiY29pblwiOjAsXCJ0aW1lc3RhbXBcIjp0aW1lc3RhbXB9O1xyXG4gICAgICAgICAgICAgICAgY29uc29sZS5sb2coXCIzMzMzMzMzMzMzM1wiKTtcclxuICAgICAgICAgICAgICAgIGNjLmZ4LlN0b3JhZ2VNZXNzYWdlLnNldFN0b3JhZ2UoXCJjb2luXCIsY29pbkluZm8pO1xyXG4gICAgICAgICAgICAgICAgbGV0IHByb3BJbmZvID0ge1xyXG4gICAgICAgICAgICAgICAgICAgIFwiZnJlZXplQW1vdW50XCI6MCxcclxuICAgICAgICAgICAgICAgICAgICBcImhhbW1lckFtb3VudFwiOjAsXHJcbiAgICAgICAgICAgICAgICAgICAgXCJtYWdpY0Ftb3VudFwiOjAsXHJcbiAgICAgICAgICAgICAgICAgICAgXCJ0aW1lc3RhbXBcIjp0aW1lc3RhbXAsXHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBjYy5meC5TdG9yYWdlTWVzc2FnZS5zZXRTdG9yYWdlKFwicHJvcFwiLHByb3BJbmZvKTtcclxuXHJcblxyXG4gICAgICAgICAgICAgICAgY2MuZnguR2FtZVRvb2wuc2V0VXNlckluZm8oKGRhdGEpPT57XHJcbiAgICAgICAgICAgICAgICAgICAgaWYoZGF0YS5yZXN1bHQuY29kZSA9PSAyMDApe1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zb2xlLmxvZyhcIuS4iuS8oOeUqOaIt+S/oeaBr+aIkOWKn1wiLGRhdGEpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAvL0B0cy1pZ25vcmVcclxuICAgICAgICAgICAgICAgICAgICAgICAgd3guY2xvdWQuY2FsbEZ1bmN0aW9uKHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6ICd1c2VyRGF0YScsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRhOiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWN0aW9uOiAncmVhZCdcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN1Y2Nlc3M6IHJlcyA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc29sZS5sb2coXCLkuIrkvKDlkI7vvIzor7vlj5bnlKjmiLfkv6Hmga/vvIzkuLrkuIrmiqXms6jlhozml7bpl7RcIilcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZihyZXMucmVzdWx0LmNvZGUgPT0gMjAwKXtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgdGltZSA9IHJlcy5yZXN1bHQuZGF0YS5yZWdpc3Rlcl90aW1lO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBNaW5pR2FtZVNkay5BUEkuc2h1c2h1X3VzZXJTZXQodGltZSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICB9KVxyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICAgICAgY29uc29sZS5sb2coXCLmnI3liqHlmajkuZ/msqHmnInph5HluIHkv6Hmga9cIixjYy5meC5HYW1lQ29uZmlnLkdNX0lORk8uY29pbik7XHJcbiAgICAgICAgICAgICAgICBjYy5meC5HYW1lVG9vbC5zZXRVc2VyQ29pbihjYy5meC5HYW1lQ29uZmlnLkdNX0lORk8uY29pbiwoZGF0YSk9PntcclxuICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICAgICAgY2MuZnguR2FtZVRvb2wuc2V0VXNlckxldmVsKChkYXRhKT0+e1xyXG4gICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICBjYy5meC5HYW1lQ29uZmlnLkdNX0lORk8uZnJlZXplQW1vdW50ID0gMDtcclxuICAgICAgICAgICAgICAgICAgICBjYy5meC5HYW1lQ29uZmlnLkdNX0lORk8uaGFtbWVyQW1vdW50ID0gMDtcclxuICAgICAgICAgICAgICAgICAgICBjYy5meC5HYW1lQ29uZmlnLkdNX0lORk8ubWFnaWNBbW91bnQgPSAwO1xyXG4gICAgICAgICAgICAgICAgICAgIGNjLmZ4LkdhbWVUb29sLnNldFVzZXJQcm9wKDAsMCwoZGF0YSk9PntcclxuICAgICAgICAgICAgICAgICAgICAgICAgaWYoZGF0YS5yZXN1bHQuY29kZSA9PSAyMDApe1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc29sZS5sb2coXCLkuIrkvKDpgZPlhbfkv6Hmga/miJDlip9cIixkYXRhKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICBlbHNle1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgTWluaUdhbWVTZGsuQVBJLnNob3dUb2FzdChcIue9kee7nOW8guW4uO+8jOato+WcqOWKquWKm+WKoOi9vVwiKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMub2xkUmVhZERhdGEoMCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LCAxMDAwKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICAgICAgfSwgMCk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgZWxzZSBpZihyZXMucmVzdWx0LmNvZGUgPT0gMjAwKXtcclxuICAgICAgICAgICAgICAgIGlmKHJlcy5yZXN1bHQuZGF0YSl7XHJcbiAgICAgICAgICAgICAgICAgICAgY2MuZnguR2FtZUNvbmZpZy5HTV9JTkZPLm9wZW5pZCA9IHJlcy5yZXN1bHQub3BlbmlkO1xyXG4gICAgICAgICAgICAgICAgICAgIGNjLmZ4LkdhbWVDb25maWcuR01fSU5GTy5sZXZlbCA9IHJlcy5yZXN1bHQuZGF0YS5sZXZlbDtcclxuICAgICAgICAgICAgICAgICAgICBjYy5meC5HYW1lQ29uZmlnLkdNX0lORk8uY29pbiA9IHJlcy5yZXN1bHQuZGF0YS5jb2luQW1vdW50O1xyXG4gICAgICAgICAgICAgICAgICAgIGNjLmZ4LkdhbWVDb25maWcuR01fSU5GTy5mcmVlemVBbW91bnQgPSByZXMucmVzdWx0LmRhdGEuZnJlZXplQW1vdW50O1xyXG4gICAgICAgICAgICAgICAgICAgIGNjLmZ4LkdhbWVDb25maWcuR01fSU5GTy5oYW1tZXJBbW91bnQgPSByZXMucmVzdWx0LmRhdGEuaGFtbWVyQW1vdW50O1xyXG4gICAgICAgICAgICAgICAgICAgIGNjLmZ4LkdhbWVDb25maWcuR01fSU5GTy5tYWdpY0Ftb3VudCA9IHJlcy5yZXN1bHQuZGF0YS5tYWdpY0Ftb3VudDtcclxuICAgICAgICAgICAgICAgICAgICBjYy5meC5HYW1lQ29uZmlnLkdNX0lORk8udXNlcm5hbWUgPSByZXMucmVzdWx0LmRhdGEudXNlcm5hbWU7XHJcbiAgICAgICAgICAgICAgICAgICAgY2MuZnguR2FtZUNvbmZpZy5HTV9JTkZPLnVzZXJhdmF0YXIgPSByZXMucmVzdWx0LmRhdGEudXNlcmF2YXRhcjtcclxuICAgICAgICAgICAgICAgICAgICBjYy5meC5TdG9yYWdlTWVzc2FnZS5zZXRTdG9yYWdlKFwib3BlbmlkXCIsY2MuZnguR2FtZUNvbmZpZy5HTV9JTkZPLm9wZW5pZCk7XHJcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgcmVnaXN0ZXJfdGltZSA9IHJlcy5yZXN1bHQuZGF0YS5yZWdpc3Rlcl90aW1lO1xyXG4gICAgICAgICAgICAgICAgICAgIE1pbmlHYW1lU2RrLkFQSS5zaHVzaHVfdXNlclNldChyZWdpc3Rlcl90aW1lKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgIGNjLmZ4LkdhbWVUb29sLmdldFVzZXJDb2luKChkYXRhKSA9PntcclxuICAgICAgICAgICAgICAgICAgICAgICAgaWYoZGF0YS5yZXN1bHQuY29kZSA9PSA0MDQgJiYgZGF0YS5yZXN1bHQubWVzc2FnZSA9PSBcIuacquaJvuWIsOmHkeW4geaVsOaNrlwiKXtcclxuICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBjb2luSW5mbyA9IHtcImNvaW5cIjowLFwidGltZXN0YW1wXCI6dGltZXN0YW1wfTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNjLmZ4LkdhbWVDb25maWcuR01fSU5GTy5jb2luID0gMDtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNjLmZ4LlN0b3JhZ2VNZXNzYWdlLnNldFN0b3JhZ2UoXCJjb2luXCIsY29pbkluZm8pO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc29sZS5sb2coXCLmsqHmnInph5HluIHkv6Hmga/vvIzku47nlKjmiLfmjqXlj6Pmi7/liLDmlbDmja5cIixjYy5meC5HYW1lQ29uZmlnLkdNX0lORk8uY29pbik7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYy5meC5HYW1lVG9vbC5zZXRVc2VyQ29pbigoZGF0YSk9PntcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBjb25zb2xlLmxvZyhcIuS4iuS8oFwiLGRhdGEpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMubG9hZDMgPSB0cnVlO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSBpZihkYXRhLnJlc3VsdC5jb2RlID09IDIwMCl7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBjb25zb2xlLmxvZyhcIuaciemHkeW4geS/oeaBr++8jOS7jumHkeW4geaOpeWPo+aLv+WIsOaVsOaNrlwiLGRhdGEucmVzdWx0LmRhdGEpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2MuZnguR2FtZUNvbmZpZy5HTV9JTkZPLmNvaW4gPSBkYXRhLnJlc3VsdC5kYXRhO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGNvaW5JbmZvID0ge1wiY29pblwiOmNjLmZ4LkdhbWVDb25maWcuR01fSU5GTy5jb2luLFwidGltZXN0YW1wXCI6dGltZXN0YW1wfTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKFwi5a2Y5YKo6YeR5biB5L+h5oGvOlwiLGNjLmZ4LkdhbWVDb25maWcuR01fSU5GTy5jb2luKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKFwiNDQ0NDQ0NDQ0NFwiKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNjLmZ4LlN0b3JhZ2VNZXNzYWdlLnNldFN0b3JhZ2UoXCJjb2luXCIsY29pbkluZm8pO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5sb2FkMyA9IHRydWU7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICB9KVxyXG4gICAgICAgICAgICAgICAgfSwgNTAwKTtcclxuXHJcbiAgICAgICAgICAgICAgICBjYy5meC5HYW1lVG9vbC5nZXRVc2VyTGV2ZWwoKGRhdGEpID0+e1xyXG4gICAgICAgICAgICAgICAgICAgIGlmKGRhdGEucmVzdWx0LmNvZGUgPT0gNDA0ICYmIGRhdGEucmVzdWx0Lm1lc3NhZ2UgPT0gXCLmnKrmib7liLDlhbPljaHmlbDmja5cIil7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKFwi5rKh5pyJ562J57qn5L+h5oGv77yM5LuO55So5oi35o6l5Y+j5ou/5Yiw5pWw5o2uXCIpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBsZXQgbGV2ZWxJbmZvID0ge1wibGV2ZWxcIjowLFwidGltZXN0YW1wXCI6dGltZXN0YW1wfTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgLy8gY29uc29sZS5sb2coXCIzMzMzMzPlrZjlgqjlhbPljaHmlbDmja46XCIsbGV2ZWxJbmZvKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgIGNjLmZ4LkdhbWVDb25maWcuR01fSU5GTy5sZXZlbCA9IDA7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNjLmZ4LlN0b3JhZ2VNZXNzYWdlLnNldFN0b3JhZ2UoXCJsZXZlbFwiLGxldmVsSW5mbyk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNjLmZ4LkdhbWVUb29sLnNldFVzZXJMZXZlbCgoZGF0YSk9PntcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKFwi5ou/5Yiw55qE5pWw5o2uXCIsZGF0YSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmxvYWQ0ID0gdHJ1ZTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgICAgICAgfSBcclxuICAgICAgICAgICAgICAgICAgICBlbHNlIGlmKGRhdGEucmVzdWx0LmNvZGUgPT0gMjAwKXtcclxuICAgICAgICAgICAgICAgICAgICAgICAgY29uc29sZS5sb2coXCLmnInnrYnnuqfkv6Hmga/vvIzku47lhbPljaHmjqXlj6Pmi7/liLDmlbDmja5cIixkYXRhLnJlc3VsdC5kYXRhKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgY2MuZnguR2FtZUNvbmZpZy5HTV9JTkZPLmxldmVsID0gZGF0YS5yZXN1bHQuZGF0YTsgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGxldCBsZXZlbEluZm8gPSB7XCJsZXZlbFwiOmNjLmZ4LkdhbWVDb25maWcuR01fSU5GTy5sZXZlbCxcInRpbWVzdGFtcFwiOnRpbWVzdGFtcH07XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIGNvbnNvbGUubG9nKFwiNDQ0NDQ05a2Y5YKo5YWz5Y2h5L+h5oGvOlwiLGxldmVsSW5mbyk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNjLmZ4LlN0b3JhZ2VNZXNzYWdlLnNldFN0b3JhZ2UoXCJsZXZlbFwiLGxldmVsSW5mbyk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMubG9hZDQgPSB0cnVlO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH0pXHJcbiAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICBjYy5meC5HYW1lVG9vbC5nZXRVc2VyUHJvcCgoZGF0YSkgPT57XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmKGRhdGEucmVzdWx0LmNvZGUgPT0gNDA0ICYmIGRhdGEucmVzdWx0Lm1lc3NhZ2UgPT0gXCLmnKrmib7liLDpgZPlhbfmlbDmja5cIil7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zb2xlLmxvZyhcIuayoeaciemBk+WFt+S/oeaBr++8jOS7jueUqOaIt+aOpeWPo+aLv+WIsOaVsOaNrlwiKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNjLmZ4LkdhbWVDb25maWcuR01fSU5GTy5mcmVlemVBbW91bnQgPSAwO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2MuZnguR2FtZUNvbmZpZy5HTV9JTkZPLmhhbW1lckFtb3VudCA9IDA7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYy5meC5HYW1lQ29uZmlnLkdNX0lORk8ubWFnaWNBbW91bnQgPSAwO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IHByb3BJbmZvID0ge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiZnJlZXplQW1vdW50XCI6MCxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcImhhbW1lckFtb3VudFwiOjAsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJtYWdpY0Ftb3VudFwiOjAsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJ0aW1lc3RhbXBcIjp0aW1lc3RhbXAsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zb2xlLmxvZyhcIuS4iuS8oOmBk+WFt+S/oeaBrzpcIixwcm9wSW5mbyk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYy5meC5TdG9yYWdlTWVzc2FnZS5zZXRTdG9yYWdlKFwicHJvcFwiLHByb3BJbmZvKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNjLmZ4LkdhbWVUb29sLnNldFVzZXJQcm9wKDAsMCwoZGF0YSk9PntcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB9IFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBlbHNlIGlmKGRhdGEucmVzdWx0LmNvZGUgPT0gMjAwKXtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKFwi5pyJ6YGT5YW35L+h5oGv77yM5LuO6YGT5YW35o6l5Y+j5ou/5Yiw5pWw5o2uXCIsZGF0YS5yZXN1bHQuZGF0YSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYy5meC5HYW1lQ29uZmlnLkdNX0lORk8uZnJlZXplQW1vdW50ID0gZGF0YS5yZXN1bHQuZGF0YS5mcmVlemUgfHwgMDtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNjLmZ4LkdhbWVDb25maWcuR01fSU5GTy5oYW1tZXJBbW91bnQgPSBkYXRhLnJlc3VsdC5kYXRhLmhhbW1lciB8fCAwO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2MuZnguR2FtZUNvbmZpZy5HTV9JTkZPLm1hZ2ljQW1vdW50ID0gZGF0YS5yZXN1bHQuZGF0YS5tYWdpY193YW5kIHx8IDA7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgcHJvcEluZm8gPSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJmcmVlemVBbW91bnRcIjpjYy5meC5HYW1lQ29uZmlnLkdNX0lORk8uZnJlZXplQW1vdW50LFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiaGFtbWVyQW1vdW50XCI6Y2MuZnguR2FtZUNvbmZpZy5HTV9JTkZPLmhhbW1lckFtb3VudCxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIm1hZ2ljQW1vdW50XCI6Y2MuZnguR2FtZUNvbmZpZy5HTV9JTkZPLm1hZ2ljQW1vdW50LFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwidGltZXN0YW1wXCI6dGltZXN0YW1wLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc29sZS5sb2coXCLkuIrkvKDpgZPlhbfkv6Hmga86XCIscHJvcEluZm8pO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2MuZnguU3RvcmFnZU1lc3NhZ2Uuc2V0U3RvcmFnZShcInByb3BcIixwcm9wSW5mbyk7XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgfSlcclxuICAgICAgICAgICAgICAgIH0sIDApO1xyXG4gICAgXHJcbiAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgfSxcclxuICAgICAgICBmYWlsOiBlcnIgPT4ge1xyXG4gICAgICAgICAgICBjb25zb2xlLmVycm9yKCfor7vlj5bnlKjmiLfmlbDmja7lpLHotKUnLCBlcnIpXHJcbiAgICAgICAgICAgIGlmIChyZXRyeUNvdW50IDwgTUFYX1JFVFJJRVMpIHtcclxuICAgICAgICAgICAgICAgICAgICBjb25zb2xlLmVycm9yKGDor7vlj5bnlKjmiLfmlbDmja7lpLHotKXvvIznrKwgJHtyZXRyeUNvdW50ICsgMX0g5qyh6YeN6K+V77yM6ZSZ6K+v5L+h5oGvOmAsIGVycik7XHJcbiAgICAgICAgICAgICAgICAgICAgLy8g5bu26L+fIDIg56eS5ZCO6YeN6K+VXHJcbiAgICAgICAgICAgICAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMucmVhZFVzZXJEYXRhKHJldHJ5Q291bnQgKyAxKTtcclxuICAgICAgICAgICAgICAgICAgICB9LCAyMDAwKTtcclxuICAgICAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgICAgY29uc29sZS5lcnJvcign6K+75Y+W55So5oi35pWw5o2u5aSx6LSl77yM6L6+5Yiw5pyA5aSn6YeN6K+V5qyh5pWw77yM6YCA5Ye65ri45oiPJywgZXJyKTtcclxuICAgICAgICAgICAgICAgICAgICAvLyDpgIDlh7rmuLjmiI9cclxuICAgICAgICAgICAgICAgICAgICBjYy5nYW1lLmVuZCgpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfSlcclxuICAgIH1cclxuXHJcbiAgICBzZXRVc2VyRGF0YSgpe1xyXG4gICAgICAgIGNjLmZ4LkdhbWVDb25maWcuR2FtZVRvb2woKGRhdGEpPT57XHJcbiAgICAgICAgICAgIGNvbnNvbGUubG9nKFwi5LiK5LygXCIsZGF0YSk7XHJcbiAgICAgICAgfSlcclxuICAgIH1cclxuXHJcbiAgICBzdGFydFRpbWVDdXREb3duKCl7XHJcbiAgICAgICAgdGhpcy5zY2hlZHVsZUNhbGxiYWNrID0gZnVuY3Rpb24oKXtcclxuICAgICAgICAgICAgaWYodGhpcy50aW1lTnVtYmVyIDw9IDApe1xyXG4gICAgICAgICAgICAgICAgdGhpcy5zdG9wVGltZUN1dERvd24oKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBlbHNle1xyXG4gICAgICAgICAgICAgICAgdGhpcy50aW1lTnVtYmVyIC09IDE7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9LmJpbmQodGhpcyk7XHJcbiAgICAgICAgdGhpcy5zY2hlZHVsZSh0aGlzLnNjaGVkdWxlQ2FsbGJhY2ssIDEpO1xyXG4gICAgfVxyXG5cclxuICAgIHN0b3BUaW1lQ3V0RG93bigpe1xyXG4gICAgICAgIGlmKHRoaXMuc2NoZWR1bGVDYWxsYmFjayl7XHJcbiAgICAgICAgICAgIHRoaXMudW5zY2hlZHVsZSh0aGlzLnNjaGVkdWxlQ2FsbGJhY2spO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICB1cGRhdGUgKGR0KSB7XHJcbiAgICAgICAgaWYodGhpcy5sb2FkMSAmJiB0aGlzLmxvYWQyICYmIHRoaXMubG9hZDMgICYmIHRoaXMubG9hZDQgJiYgdGhpcy5sb2FkNSAmJiB0aGlzLnRpbWVOdW1iZXIgPD0gMCl7XHJcbiAgICAgICAgICAgIHRoaXMubG9hZDEgPSB0aGlzLmxvYWQyID0gZmFsc2U7XHJcbiAgICAgICAgICAgIE1pbmlHYW1lU2RrLkFQSS5zaHVzaHVfSW5pdCgpO1xyXG4gICAgICAgICAgICB0aGlzLnN0YXJ0R2FtZSgpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxufVxyXG4iXX0= -//------QC-SOURCE-SPLIT------ - - (function() { - var nodeEnv = typeof require !== 'undefined' && typeof process !== 'undefined'; - var __module = nodeEnv ? module : {exports:{}}; - var __filename = 'preview-scripts/assets/Script/Pause.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, 'aca4aut33NCvIC0yg3JmY0h', 'Pause'); -// Script/Pause.ts - -"use strict"; -// Learn TypeScript: -// - https://docs.cocos.com/creator/manual/en/scripting/typescript.html -// Learn Attribute: -// - https://docs.cocos.com/creator/manual/en/scripting/reference/attributes.html -// Learn life-cycle callbacks: -// - https://docs.cocos.com/creator/manual/en/scripting/life-cycle-callbacks.html -var __extends = (this && this.__extends) || (function () { - var extendStatics = function (d, b) { - extendStatics = Object.setPrototypeOf || - ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) || - function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; }; - return extendStatics(d, b); - }; - return function (d, b) { - extendStatics(d, b); - function __() { this.constructor = d; } - d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); - }; -})(); -var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) { - var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; - if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc); - else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; - return c > 3 && r && Object.defineProperty(target, key, r), r; -}; -Object.defineProperty(exports, "__esModule", { value: true }); -var _a = cc._decorator, ccclass = _a.ccclass, property = _a.property; -var Pause = /** @class */ (function (_super) { - __extends(Pause, _super); - function Pause() { - var _this = _super !== null && _super.apply(this, arguments) || this; - _this.time = 0; - _this.music = null; - _this.effect = null; - _this.vibrate = null; - _this.open = null; - _this.close = null; - // mapInfo: number[][] = []; - _this.musicState = true; - _this.effectState = true; - _this.vibrateState = true; - return _this; - // update (dt) {} - } - Pause.prototype.onLoad = function () { - if (cc.fx.GameConfig.GM_INFO.musicOpen) { - this.music.getComponent(cc.Sprite).spriteFrame = this.open; - this.music.x = 278; - } - else { - this.music.getComponent(cc.Sprite).spriteFrame = this.close; - this.music.x = 161; - } - if (cc.fx.GameConfig.GM_INFO.effectOpen) { - this.effect.getComponent(cc.Sprite).spriteFrame = this.open; - this.effect.x = 278; - } - else { - this.effect.getComponent(cc.Sprite).spriteFrame = this.close; - this.effect.x = 161; - } - if (cc.fx.GameConfig.GM_INFO.vibrateOpen) { - this.vibrate.getComponent(cc.Sprite).spriteFrame = this.open; - this.vibrate.x = 278; - } - else { - this.vibrate.getComponent(cc.Sprite).spriteFrame = this.close; - this.vibrate.x = 161; - } - this.musicState = cc.fx.GameConfig.GM_INFO.musicOpen; - this.effectState = cc.fx.GameConfig.GM_INFO.effectOpen; - this.vibrateState = cc.fx.GameConfig.GM_INFO.vibrateOpen; - }; - Pause.prototype.start = function () { - }; - Pause.prototype.init = function (time) { - }; - Pause.prototype.clickMusic = function () { - var _this = this; - if (this.musicState) { - this.musicState = false; - cc.fx.GameConfig.GM_INFO.musicOpen = this.musicState; - this.setMusicConfig(); - this.music.runAction(cc.sequence(cc.spawn(cc.moveTo(0.05, cc.v2(161, this.music.y)), cc.fadeOut(0.05)), cc.callFunc(function () { - _this.music.getComponent(cc.Sprite).spriteFrame = _this.close; - }), cc.fadeIn(0.1))); - cc.fx.AudioManager._instance.stopMusic(); - } - else { - this.musicState = true; - cc.fx.GameConfig.GM_INFO.musicOpen = this.musicState; - this.setMusicConfig(); - this.music.runAction(cc.sequence(cc.spawn(cc.moveTo(0.05, cc.v2(278, this.music.y)), cc.fadeOut(0.05)), cc.callFunc(function () { - _this.music.getComponent(cc.Sprite).spriteFrame = _this.open; - }), cc.fadeIn(0.1))); - cc.fx.AudioManager._instance.playMusicGame(); - } - }; - Pause.prototype.setMusicConfig = function () { - var audioInfo = { - "musicOpen": cc.fx.GameConfig.GM_INFO.musicOpen, - "effectOpen": cc.fx.GameConfig.GM_INFO.effectOpen, - "vibrateOpen": cc.fx.GameConfig.GM_INFO.vibrateOpen, - }; - cc.fx.StorageMessage.setStorage("music", audioInfo); - }; - Pause.prototype.clickEffect = function () { - var _this = this; - if (this.effectState) { - this.effectState = false; - cc.fx.GameConfig.GM_INFO.effectOpen = this.effectState; - this.setMusicConfig(); - this.effect.runAction(cc.sequence(cc.spawn(cc.moveTo(0.05, cc.v2(161, this.effect.y)), cc.fadeOut(0.05)), cc.callFunc(function () { - _this.effect.getComponent(cc.Sprite).spriteFrame = _this.close; - }), cc.fadeIn(0.1))); - } - else { - this.effectState = true; - cc.fx.GameConfig.GM_INFO.effectOpen = this.effectState; - this.setMusicConfig(); - this.effect.runAction(cc.sequence(cc.spawn(cc.moveTo(0.05, cc.v2(278, this.effect.y)), cc.fadeOut(0.05)), cc.callFunc(function () { - _this.effect.getComponent(cc.Sprite).spriteFrame = _this.open; - }), cc.fadeIn(0.1))); - } - }; - Pause.prototype.clickVibrate = function () { - var _this = this; - if (this.vibrateState) { - this.vibrateState = false; - cc.fx.GameConfig.GM_INFO.vibrateOpen = this.vibrateState; - this.setMusicConfig(); - this.vibrate.runAction(cc.sequence(cc.spawn(cc.moveTo(0.05, cc.v2(161, this.vibrate.y)), cc.fadeOut(0.05)), cc.callFunc(function () { - _this.vibrate.getComponent(cc.Sprite).spriteFrame = _this.close; - }), cc.fadeIn(0.1))); - } - else { - this.vibrateState = true; - cc.fx.GameConfig.GM_INFO.vibrateOpen = this.vibrateState; - this.setMusicConfig(); - this.vibrate.runAction(cc.sequence(cc.spawn(cc.moveTo(0.05, cc.v2(278, this.vibrate.y)), cc.fadeOut(0.05)), cc.callFunc(function () { - _this.vibrate.getComponent(cc.Sprite).spriteFrame = _this.open; - }), cc.fadeIn(0.1))); - } - }; - __decorate([ - property(cc.Node) - ], Pause.prototype, "music", void 0); - __decorate([ - property(cc.Node) - ], Pause.prototype, "effect", void 0); - __decorate([ - property(cc.Node) - ], Pause.prototype, "vibrate", void 0); - __decorate([ - property(cc.SpriteFrame) - ], Pause.prototype, "open", void 0); - __decorate([ - property(cc.SpriteFrame) - ], Pause.prototype, "close", void 0); - Pause = __decorate([ - ccclass - ], Pause); - return Pause; -}(cc.Component)); -exports.default = Pause; - -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,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImFzc2V0c1xcU2NyaXB0XFxQYXVzZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsb0JBQW9CO0FBQ3BCLHdFQUF3RTtBQUN4RSxtQkFBbUI7QUFDbkIsa0ZBQWtGO0FBQ2xGLDhCQUE4QjtBQUM5QixrRkFBa0Y7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUc1RSxJQUFBLEtBQXNCLEVBQUUsQ0FBQyxVQUFVLEVBQWxDLE9BQU8sYUFBQSxFQUFFLFFBQVEsY0FBaUIsQ0FBQztBQUkxQztJQUFtQyx5QkFBWTtJQUEvQztRQUFBLHFFQW1JQztRQWpJRyxVQUFJLEdBQVcsQ0FBQyxDQUFDO1FBR2pCLFdBQUssR0FBWSxJQUFJLENBQUM7UUFHdEIsWUFBTSxHQUFZLElBQUksQ0FBQztRQUd2QixhQUFPLEdBQVksSUFBSSxDQUFDO1FBR3hCLFVBQUksR0FBbUIsSUFBSSxDQUFDO1FBRzVCLFdBQUssR0FBbUIsSUFBSSxDQUFDO1FBRTdCLDRCQUE0QjtRQUU1QixnQkFBVSxHQUFZLElBQUksQ0FBQztRQUMzQixpQkFBVyxHQUFZLElBQUksQ0FBQztRQUM1QixrQkFBWSxHQUFZLElBQUksQ0FBQzs7UUEyRzdCLGlCQUFpQjtJQUNyQixDQUFDO0lBMUdHLHNCQUFNLEdBQU47UUFDSSxJQUFHLEVBQUUsQ0FBQyxFQUFFLENBQUMsVUFBVSxDQUFDLE9BQU8sQ0FBQyxTQUFTLEVBQUM7WUFDbEMsSUFBSSxDQUFDLEtBQUssQ0FBQyxZQUFZLENBQUMsRUFBRSxDQUFDLE1BQU0sQ0FBQyxDQUFDLFdBQVcsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDO1lBQzNELElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxHQUFHLEdBQUcsQ0FBQztTQUN0QjthQUNHO1lBQ0EsSUFBSSxDQUFDLEtBQUssQ0FBQyxZQUFZLENBQUMsRUFBRSxDQUFDLE1BQU0sQ0FBQyxDQUFDLFdBQVcsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDO1lBQzVELElBQUksQ0FB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Q0FBQztZQUN6RCxJQUFJLENBQUMsY0FBYyxFQUFFLENBQUM7WUFDdEIsSUFBSSxDQUFDLE9BQU8sQ0FBQyxTQUFTLENBQUMsRUFBRSxDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxNQUFNLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FBQyxFQUFFLENBQUMsR0FBRyxFQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDLEVBQUMsRUFBRSxDQUFDLFFBQVEsQ0FBQztnQkFDbEgsS0FBSSxDQUFDLE9BQU8sQ0FBQyxZQUFZLENBQUMsRUFBRSxDQUFDLE1BQU0sQ0FBQyxDQUFDLFdBQVcsR0FBRyxLQUFJLENBQUMsSUFBSSxDQUFDO1lBQ2pFLENBQUMsQ0FBQyxFQUFDLEVBQUUsQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFBO1NBQ3RCO0lBQ0wsQ0FBQztJQTNIRDtRQURDLFFBQVEsQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDO3dDQUNJO0lBR3RCO1FBREMsUUFBUSxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUM7eUNBQ0s7SUFHdkI7UUFEQyxRQUFRLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQzswQ0FDTTtJQUd4QjtRQURDLFFBQVEsQ0FBQyxFQUFFLENBQUMsV0FBVyxDQUFDO3VDQUNHO0lBRzVCO1FBREMsUUFBUSxDQUFDLEVBQUUsQ0FBQyxXQUFXLENBQUM7d0NBQ0k7SUFqQlosS0FBSztRQUR6QixPQUFPO09BQ2EsS0FBSyxDQW1JekI7SUFBRCxZQUFDO0NBbklELEFBbUlDLENBbklrQyxFQUFFLENBQUMsU0FBUyxHQW1JOUM7a0JBbklvQixLQUFLIiwiZmlsZSI6IiIsInNvdXJjZVJvb3QiOiIvIiwic291cmNlc0NvbnRlbnQiOlsiLy8gTGVhcm4gVHlwZVNjcmlwdDpcclxuLy8gIC0gaHR0cHM6Ly9kb2NzLmNvY29zLmNvbS9jcmVhdG9yL21hbnVhbC9lbi9zY3JpcHRpbmcvdHlwZXNjcmlwdC5odG1sXHJcbi8vIExlYXJuIEF0dHJpYnV0ZTpcclxuLy8gIC0gaHR0cHM6Ly9kb2NzLmNvY29zLmNvbS9jcmVhdG9yL21hbnVhbC9lbi9zY3JpcHRpbmcvcmVmZXJlbmNlL2F0dHJpYnV0ZXMuaHRtbFxyXG4vLyBMZWFybiBsaWZlLWN5Y2xlIGNhbGxiYWNrczpcclxuLy8gIC0gaHR0cHM6Ly9kb2NzLmNvY29zLmNvbS9jcmVhdG9yL21hbnVhbC9lbi9zY3JpcHRpbmcvbGlmZS1jeWNsZS1jYWxsYmFja3MuaHRtbFxyXG5cclxuXHJcbmNvbnN0IHtjY2NsYXNzLCBwcm9wZXJ0eX0gPSBjYy5fZGVjb3JhdG9yO1xyXG5cclxuXHJcbkBjY2NsYXNzXHJcbmV4cG9ydCBkZWZhdWx0IGNsYXNzIFBhdXNlIGV4dGVuZHMgY2MuQ29tcG9uZW50IHtcclxuICAgIHN0YXRpYyBfaW5zdGFuY2U6IGFueTtcclxuICAgIHRpbWU6IG51bWJlciA9IDA7XHJcblxyXG4gICAgQHByb3BlcnR5KGNjLk5vZGUpXHJcbiAgICBtdXNpYzogY2MuTm9kZSA9IG51bGw7XHJcblxyXG4gICAgQHByb3BlcnR5KGNjLk5vZGUpXHJcbiAgICBlZmZlY3Q6IGNjLk5vZGUgPSBudWxsO1xyXG5cclxuICAgIEBwcm9wZXJ0eShjYy5Ob2RlKVxyXG4gICAgdmlicmF0ZTogY2MuTm9kZSA9IG51bGw7XHJcblxyXG4gICAgQHByb3BlcnR5KGNjLlNwcml0ZUZyYW1lKVxyXG4gICAgb3BlbjogY2MuU3ByaXRlRnJhbWUgPSBudWxsO1xyXG5cclxuICAgIEBwcm9wZXJ0eShjYy5TcHJpdGVGcmFtZSlcclxuICAgIGNsb3NlOiBjYy5TcHJpdGVGcmFtZSA9IG51bGw7XHJcbiAgICBcclxuICAgIC8vIG1hcEluZm86IG51bWJlcltdW10gPSBbXTtcclxuXHJcbiAgICBtdXNpY1N0YXRlOiBib29sZWFuID0gdHJ1ZTtcclxuICAgIGVmZmVjdFN0YXRlOiBib29sZWFuID0gdHJ1ZTtcclxuICAgIHZpYnJhdGVTdGF0ZTogYm9vbGVhbiA9IHRydWU7XHJcblxyXG4gICAgb25Mb2FkICgpIHtcclxuICAgICAgICBpZihjYy5meC5HYW1lQ29uZmlnLkdNX0lORk8ubXVzaWNPcGVuKXtcclxuICAgICAgICAgICAgdGhpcy5tdXNpYy5nZXRDb21wb25lbnQoY2MuU3ByaXRlKS5zcHJpdGVGcmFtZSA9IHRoaXMub3BlbjtcclxuICAgICAgICAgICAgdGhpcy5tdXNpYy54ID0gMjc4O1xyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNle1xyXG4gICAgICAgICAgICB0aGlzLm11c2ljLmdldENvbXBvbmVudChjYy5TcHJpdGUpLnNwcml0ZUZyYW1lID0gdGhpcy5jbG9zZTtcclxuICAgICAgICAgICAgdGhpcy5tdXNpYy54ID0gMTYxO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZihjYy5meC5HYW1lQ29uZmlnLkdNX0lORk8uZWZmZWN0T3Blbil7XHJcbiAgICAgICAgICAgIHRoaXMuZWZmZWN0LmdldENvbXBvbmVudChjYy5TcHJpdGUpLnNwcml0ZUZyYW1lID0gdGhpcy5vcGVuO1xyXG4gICAgICAgICAgICB0aGlzLmVmZmVjdC54ID0gMjc4OyBcclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZXtcclxuICAgICAgICAgICAgdGhpcy5lZmZlY3QuZ2V0Q29tcG9uZW50KGNjLlNwcml0ZSkuc3ByaXRlRnJhbWUgPSB0aGlzLmNsb3NlO1xyXG4gICAgICAgICAgICB0aGlzLmVmZmVjdC54ID0gMTYxOyBcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYoY2MuZnguR2FtZUNvbmZpZy5HTV9JTkZPLnZpYnJhdGVPcGVuKXtcclxuICAgICAgICAgICAgdGhpcy52aWJyYXRlLmdldENvbXBvbmVudChjYy5TcHJpdGUpLnNwcml0ZUZyYW1lID0gdGhpcy5vcGVuO1xyXG4gICAgICAgICAgICB0aGlzLnZpYnJhdGUueCA9IDI3ODsgXHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2V7XHJcbiAgICAgICAgICAgIHRoaXMudmlicmF0ZS5nZXRDb21wb25lbnQoY2MuU3ByaXRlKS5zcHJpdGVGcmFtZSA9IHRoaXMuY2xvc2U7IFxyXG4gICAgICAgICAgICB0aGlzLnZpYnJhdGUueCA9IDE2MTtcclxuICAgICAgICB9XHJcbiAgICAgICAgdGhpcy5tdXNpY1N0YXRlID0gY2MuZnguR2FtZUNvbmZpZy5HTV9JTkZPLm11c2ljT3BlbjtcclxuICAgICAgICB0aGlzLmVmZmVjdFN0YXRlID0gY2MuZnguR2FtZUNvbmZpZy5HTV9JTkZPLmVmZmVjdE9wZW47XHJcbiAgICAgICAgdGhpcy52aWJyYXRlU3RhdGUgPSBjYy5meC5HYW1lQ29uZmlnLkdNX0lORk8udmlicmF0ZU9wZW47XHJcbiAgICB9IFxyXG5cclxuICAgIHN0YXJ0ICgpIHtcclxuICAgIH1cclxuXHJcbiAgICBpbml0KHRpbWUpe1xyXG5cclxuICAgIH1cclxuICAgIFxyXG4gICAgY2xpY2tNdXNpYygpe1xyXG4gICAgICAgIGlmKHRoaXMubXVzaWNTdGF0ZSl7XHJcbiAgICAgICAgICAgIHRoaXMubXVzaWNTdGF0ZSA9IGZhbHNlO1xyXG4gICAgICAgICAgICBjYy5meC5HYW1lQ29uZmlnLkdNX0lORk8ubXVzaWNPcGVuID0gdGhpcy5tdXNpY1N0YXRlO1xyXG4gICAgICAgICAgICB0aGlzLnNldE11c2ljQ29uZmlnKCk7XHJcbiAgICAgICAgICAgIHRoaXMubXVzaWMucnVuQWN0aW9uKGNjLnNlcXVlbmNlKGNjLnNwYXduKGNjLm1vdmVUbygwLjA1LCBjYy52MigxNjEsdGhpcy5tdXNpYy55KSksIGNjLmZhZGVPdXQoMC4wNSkpLGNjLmNhbGxGdW5jKCgpPT57XHJcbiAgICAgICAgICAgICAgICB0aGlzLm11c2ljLmdldENvbXBvbmVudChjYy5TcHJpdGUpLnNwcml0ZUZyYW1lID0gdGhpcy5jbG9zZTtcclxuICAgICAgICAgICAgfSksY2MuZmFkZUluKDAuMSkpKVxyXG4gICAgICAgICAgICBjYy5meC5BdWRpb01hbmFnZXIuX2luc3RhbmNlLnN0b3BNdXNpYygpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNle1xyXG4gICAgICAgICAgICB0aGlzLm11c2ljU3RhdGUgPSB0cnVlO1xyXG4gICAgICAgICAgICBjYy5meC5HYW1lQ29uZmlnLkdNX0lORk8ubXVzaWNPcGVuID0gdGhpcy5tdXNpY1N0YXRlO1xyXG4gICAgICAgICAgICB0aGlzLnNldE11c2ljQ29uZmlnKCk7XHJcbiAgICAgICAgICAgIHRoaXMubXVzaWMucnVuQWN0aW9uKGNjLnNlcXVlbmNlKGNjLnNwYXduKGNjLm1vdmVUbygwLjA1LCBjYy52MigyNzgsdGhpcy5tdXNpYy55KSksIGNjLmZhZGVPdXQoMC4wNSkpLGNjLmNhbGxGdW5jKCgpPT57XHJcbiAgICAgICAgICAgICAgICB0aGlzLm11c2ljLmdldENvbXBvbmVudChjYy5TcHJpdGUpLnNwcml0ZUZyYW1lID0gdGhpcy5vcGVuO1xyXG4gICAgICAgICAgICB9KSxjYy5mYWRlSW4oMC4xKSkpXHJcbiAgICAgICAgICAgIGNjLmZ4LkF1ZGlvTWFuYWdlci5faW5zdGFuY2UucGxheU11c2ljR2FtZSgpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBzZXRNdXNpY0NvbmZpZygpe1xyXG4gICAgICAgIGxldCBhdWRpb0luZm8gPSB7XHJcbiAgICAgICAgICAgIFwibXVzaWNPcGVuXCI6IGNjLmZ4LkdhbWVDb25maWcuR01fSU5GTy5tdXNpY09wZW4sICAgICAgICAgICAgIC8v6Z+z5LmQXHJcbiAgICAgICAgICAgIFwiZWZmZWN0T3BlblwiOiBjYy5meC5HYW1lQ29uZmlnLkdNX0lORk8uZWZmZWN0T3BlbiwgICAgICAgICAgICAvL+mfs+aViFxyXG4gICAgICAgICAgICBcInZpYnJhdGVPcGVuXCI6IGNjLmZ4LkdhbWVDb25maWcuR01fSU5GTy52aWJyYXRlT3BlbiwgICAgICAgICAgIC8v6ZyH5YqoXHJcbiAgICAgICAgfVxyXG4gICAgICAgIGNjLmZ4LlN0b3JhZ2VNZXNzYWdlLnNldFN0b3JhZ2UoXCJtdXNpY1wiLGF1ZGlvSW5mbyk7XHJcbiAgICB9XHJcblxyXG4gICAgY2xpY2tFZmZlY3QoKXtcclxuICAgICAgICBpZih0aGlzLmVmZmVjdFN0YXRlKXtcclxuICAgICAgICAgICAgdGhpcy5lZmZlY3RTdGF0ZSA9IGZhbHNlO1xyXG4gICAgICAgICAgICBjYy5meC5HYW1lQ29uZmlnLkdNX0lORk8uZWZmZWN0T3BlbiA9IHRoaXMuZWZmZWN0U3RhdGU7XHJcbiAgICAgICAgICAgIHRoaXMuc2V0TXVzaWNDb25maWcoKTtcclxuICAgICAgICAgICAgdGhpcy5lZmZlY3QucnVuQWN0aW9uKGNjLnNlcXVlbmNlKGNjLnNwYXduKGNjLm1vdmVUbygwLjA1LCBjYy52MigxNjEsdGhpcy5lZmZlY3QueSkpLCBjYy5mYWRlT3V0KDAuMDUpKSxjYy5jYWxsRnVuYygoKT0+e1xyXG4gICAgICAgICAgICAgICAgdGhpcy5lZmZlY3QuZ2V0Q29tcG9uZW50KGNjLlNwcml0ZSkuc3ByaXRlRnJhbWUgPSB0aGlzLmNsb3NlO1xyXG4gICAgICAgICAgICB9KSxjYy5mYWRlSW4oMC4xKSkpXHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2V7XHJcbiAgICAgICAgICAgIHRoaXMuZWZmZWN0U3RhdGUgPSB0cnVlO1xyXG4gICAgICAgICAgICBjYy5meC5HYW1lQ29uZmlnLkdNX0lORk8uZWZmZWN0T3BlbiA9IHRoaXMuZWZmZWN0U3RhdGU7XHJcbiAgICAgICAgICAgIHRoaXMuc2V0TXVzaWNDb25maWcoKTtcclxuICAgICAgICAgICAgdGhpcy5lZmZlY3QucnVuQWN0aW9uKGNjLnNlcXVlbmNlKGNjLnNwYXduKGNjLm1vdmVUbygwLjA1LCBjYy52MigyNzgsdGhpcy5lZmZlY3QueSkpLCBjYy5mYWRlT3V0KDAuMDUpKSxjYy5jYWxsRnVuYygoKT0+e1xyXG4gICAgICAgICAgICAgICAgdGhpcy5lZmZlY3QuZ2V0Q29tcG9uZW50KGNjLlNwcml0ZSkuc3ByaXRlRnJhbWUgPSB0aGlzLm9wZW47XHJcbiAgICAgICAgICAgIH0pLGNjLmZhZGVJbigwLjEpKSlcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgY2xpY2tWaWJyYXRlKCl7XHJcbiAgICAgICAgaWYodGhpcy52aWJyYXRlU3RhdGUpe1xyXG4gICAgICAgICAgICB0aGlzLnZpYnJhdGVTdGF0ZSA9IGZhbHNlOyBcclxuICAgICAgICAgICAgY2MuZnguR2FtZUNvbmZpZy5HTV9JTkZPLnZpYnJhdGVPcGVuID0gdGhpcy52aWJyYXRlU3RhdGU7XHJcbiAgICAgICAgICAgIHRoaXMuc2V0TXVzaWNDb25maWcoKTtcclxuICAgICAgICAgICAgdGhpcy52aWJyYXRlLnJ1bkFjdGlvbihjYy5zZXF1ZW5jZShjYy5zcGF3bihjYy5tb3ZlVG8oMC4wNSwgY2MudjIoMTYxLHRoaXMudmlicmF0ZS55KSksIGNjLmZhZGVPdXQoMC4wNSkpLGNjLmNhbGxGdW5jKCgpPT57XHJcbiAgICAgICAgICAgICAgICB0aGlzLnZpYnJhdGUuZ2V0Q29tcG9uZW50KGNjLlNwcml0ZSkuc3ByaXRlRnJhbWUgPSB0aGlzLmNsb3NlO1xyXG4gICAgICAgICAgICB9KSxjYy5mYWRlSW4oMC4xKSkpXHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2V7XHJcbiAgICAgICAgICAgIHRoaXMudmlicmF0ZVN0YXRlID0gdHJ1ZTtcclxuICAgICAgICAgICAgY2MuZnguR2FtZUNvbmZpZy5HTV9JTkZPLnZpYnJhdGVPcGVuID0gdGhpcy52aWJyYXRlU3RhdGU7XHJcbiAgICAgICAgICAgIHRoaXMuc2V0TXVzaWNDb25maWcoKTtcclxuICAgICAgICAgICAgdGhpcy52aWJyYXRlLnJ1bkFjdGlvbihjYy5zZXF1ZW5jZShjYy5zcGF3bihjYy5tb3ZlVG8oMC4wNSwgY2MudjIoMjc4LHRoaXMudmlicmF0ZS55KSksIGNjLmZhZGVPdXQoMC4wNSkpLGNjLmNhbGxGdW5jKCgpPT57XHJcbiAgICAgICAgICAgICAgICB0aGlzLnZpYnJhdGUuZ2V0Q29tcG9uZW50KGNjLlNwcml0ZSkuc3ByaXRlRnJhbWUgPSB0aGlzLm9wZW47XHJcbiAgICAgICAgICAgIH0pLGNjLmZhZGVJbigwLjEpKSlcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgLy8gdXBkYXRlIChkdCkge31cclxufVxyXG4iXX0= -//------QC-SOURCE-SPLIT------ - - (function() { - var nodeEnv = typeof require !== 'undefined' && typeof process !== 'undefined'; - var __module = nodeEnv ? module : {exports:{}}; - var __filename = 'preview-scripts/assets/Script/GameScene.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, 'e8b235WjRBErajwLmN8xFUz', 'GameScene'); -// Script/GameScene.js - -// cc.Class({ -// extends: cc.Component, -// properties: { -// localTest: { -// default: false, -// tooltip: '本地测试时勾选,避免tz_url和Configure报错,提交前勾掉' -// }, -// clientTest: { -// default: false, -// tooltip: '客户端测试时勾选,展示版本标记方便测试区分,上线前勾掉' -// }, -// clientTestVersion: { -// default: '', -// tooltip: '版本标记' -// }, -// testVersion: cc.Label, -// score: cc.Label, -// double_hit: cc.Node, -// add: cc.Node, -// add2: cc.Node, -// double_title: cc.Node, -// count_time: cc.Node, -// beginNode: cc.Node, -// ball_nomal: [cc.SpriteFrame], -// bg_nomal: [cc.SpriteFrame], -// ball_light: [cc.SpriteFrame], -// kuang_Frame: [cc.SpriteFrame], -// daojishi: cc.Label, -// pause_anniu: cc.Sprite, -// mask: cc.Node, -// flashUI: { -// default: null, -// type: cc.SpriteAtlas -// }, -// }, -// onLoad() { -// }, -// update(dt) { -// }, -// }); -"use strict"; - -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,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImFzc2V0c1xcU2NyaXB0XFxHYW1lU2NlbmUuanMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7O0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBR0E7QUFFQTtBQUVBO0FBRUEiLCJzb3VyY2VSb290IjoiLyIsInNvdXJjZXNDb250ZW50IjpbIlxyXG4vLyBjYy5DbGFzcyh7XHJcbi8vICAgICBleHRlbmRzOiBjYy5Db21wb25lbnQsXHJcbi8vICAgICBwcm9wZXJ0aWVzOiB7XHJcbi8vICAgICAgICAgbG9jYWxUZXN0OiB7XHJcbi8vICAgICAgICAgICAgIGRlZmF1bHQ6IGZhbHNlLFxyXG4vLyAgICAgICAgICAgICB0b29sdGlwOiAn5pys5Zyw5rWL6K+V5pe25Yu+6YCJ77yM6YG/5YWNdHpfdXJs5ZKMQ29uZmlndXJl5oql6ZSZ77yM5o+Q5Lqk5YmN5Yu+5o6JJ1xyXG4vLyAgICAgICAgIH0sXHJcbi8vICAgICAgICAgY2xpZW50VGVzdDoge1xyXG4vLyAgICAgICAgICAgICBkZWZhdWx0OiBmYWxzZSxcclxuLy8gICAgICAgICAgICAgdG9vbHRpcDogJ+WuouaIt+err+a1i+ivleaXtuWLvumAie+8jOWxleekuueJiOacrOagh+iusOaWueS+v+a1i+ivleWMuuWIhu+8jOS4iue6v+WJjeWLvuaOiSdcclxuLy8gICAgICAgICB9LFxyXG4vLyAgICAgICAgIGNsaWVudFRlc3RWZXJzaW9uOiB7XHJcbi8vICAgICAgICAgICAgIGRlZmF1bHQ6ICcnLFxyXG4vLyAgICAgICAgICAgICB0b29sdGlwOiAn54mI5pys5qCH6K6wJ1xyXG4vLyAgICAgICAgIH0sXHJcbi8vICAgICAgICAgdGVzdFZlcnNpb246IGNjLkxhYmVsLFxyXG4vLyAgICAgICAgIHNjb3JlOiBjYy5MYWJlbCxcclxuLy8gICAgICAgICBkb3VibGVfaGl0OiBjYy5Ob2RlLFxyXG4vLyAgICAgICAgIGFkZDogY2MuTm9kZSxcclxuLy8gICAgICAgICBhZGQyOiBjYy5Ob2RlLFxyXG4vLyAgICAgICAgIGRvdWJsZV90aXRsZTogY2MuTm9kZSxcclxuLy8gICAgICAgICBjb3VudF90aW1lOiBjYy5Ob2RlLFxyXG4vLyAgICAgICAgIGJlZ2luTm9kZTogY2MuTm9kZSxcclxuLy8gICAgICAgICBiYWxsX25vbWFsOiBbY2MuU3ByaXRlRnJhbWVdLFxyXG4vLyAgICAgICAgIGJnX25vbWFsOiBbY2MuU3ByaXRlRnJhbWVdLFxyXG4vLyAgICAgICAgIGJhbGxfbGlnaHQ6IFtjYy5TcHJpdGVGcmFtZV0sXHJcbi8vICAgICAgICAga3VhbmdfRnJhbWU6IFtjYy5TcHJpdGVGcmFtZV0sXHJcbi8vICAgICAgICAgZGFvamlzaGk6IGNjLkxhYmVsLFxyXG4vLyAgICAgICAgIHBhdXNlX2Fubml1OiBjYy5TcHJpdGUsXHJcbi8vICAgICAgICAgbWFzazogY2MuTm9kZSxcclxuXHJcbi8vICAgICAgICAgZmxhc2hVSToge1xyXG4vLyAgICAgICAgICAgICBkZWZhdWx0OiBudWxsLFxyXG4vLyAgICAgICAgICAgICB0eXBlOiBjYy5TcHJpdGVBdGxhc1xyXG4vLyAgICAgICAgIH0sXHJcbi8vICAgICB9LFxyXG5cclxuLy8gICAgIG9uTG9hZCgpIHtcclxuXHJcblxyXG4vLyAgICAgfSxcclxuXHJcbi8vICAgICB1cGRhdGUoZHQpIHtcclxuXHJcbi8vICAgICB9LFxyXG5cclxuLy8gfSk7Il19 +//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImFzc2V0c1xcU2NyaXB0XFxTY2VuZU1hbmFnZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLG9CQUFvQjtBQUNwQix3RUFBd0U7QUFDeEUsbUJBQW1CO0FBQ25CLGtGQUFrRjtBQUNsRiw4QkFBOEI7QUFDOUIsa0ZBQWtGOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFFbEYsNkJBQWdDO0FBQ2hDLGlEQUFnRDtBQUUxQyxJQUFBLEtBQXdCLEVBQUUsQ0FBQyxVQUFVLEVBQW5DLE9BQU8sYUFBQSxFQUFFLFFBQVEsY0FBa0IsQ0FBQztBQUc1QztJQUEwQyxnQ0FBWTtJQUF0RDtRQUFBLHFFQWdTQztRQTdSRyxXQUFLLEdBQWEsSUFBSSxDQUFDO1FBR3ZCLFVBQUksR0FBVyxPQUFPLENBQUM7UUFHdkIsWUFBTSxHQUFZLElBQUksQ0FBQztRQUd2QixZQUFNLEdBQVksSUFBSSxDQUFDO1FBR3ZCLGdCQUFVLEdBQVksSUFBSSxDQUFDO1FBRzNCLFdBQUssR0FBWSxJQUFJLENBQUM7UUFJdEIsaUJBQVcsR0FBcUIsRUFBRSxDQUFDO1FBR25DLGlCQUFXLEdBQXFCLEVBQUUsQ0FBQztRQUduQyx5REFBeUQ7UUFDekQsbURBQW1EO1FBRW5ELFdBQUssR0FBWSxLQUFLLENBQUM7UUFDdkIsV0FBSyxHQUFZLEtBQUssQ0FBQztRQUN2QixXQUFLLEdBQVksS0FBSyxDQUFDO1FBQ3ZCLGFBQU8sR0FBVyxFQUFFLENBQUM7O0lBOFB6QixDQUFDO0lBMVBHLHdCQUF3QjtJQUV4Qiw2QkFBTSxHQUFOO1FBQ0ksRUFBRSxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsRUFBRSxDQUFDLENBQUM7UUFDekIsSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDO1FBRWhCLFVBQVUsQ0FBQztZQUNQLEVBQUUsQ0FBQyxRQUFRLENBQUMsWUFBWSxDQUFDLFdBQVcsRUFBRSxVQUFDLEdBQUc7Z0JBQ3RDLElBQUksR0FBRyxFQUFFO29CQUNMLDZDQUE2Qztv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QkFBTSxHQUFOLFVBQU8sRUFBRTtJQUVULENBQUM7SUE1UkQ7UUFEQyxRQUFRLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQzsrQ0FDSTtJQUd2QjtRQURDLFFBQVE7OENBQ2M7SUFHdkI7UUFEQyxRQUFRLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQztnREFDSztJQUd2QjtRQURDLFFBQVEsQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDO2dEQUNLO0lBR3ZCO1FBREMsUUFBUSxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUM7b0RBQ1M7SUFHM0I7UUFEQyxRQUFRLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQzsrQ0FDSTtJQUl0QjtRQURDLFFBQVEsQ0FBQyxFQUFFLElBQUksRUFBRSxDQUFDLEVBQUUsQ0FBQyxNQUFNLENBQUMsRUFBRSxPQUFPLEVBQUUsTUFBTSxFQUFFLENBQUM7cURBQ2Q7SUFHbkM7UUFEQyxRQUFRLENBQUMsRUFBRSxJQUFJLEVBQUUsQ0FBQyxFQUFFLENBQUMsTUFBTSxDQUFDLEVBQUUsT0FBTyxFQUFFLE1BQU0sRUFBRSxDQUFDO3FEQUNkO0lBekJsQixZQUFZO1FBRGhDLE9BQU87T0FDYSxZQUFZLENBZ1NoQztJQUFELG1CQUFDO0NBaFNELEFBZ1NDLENBaFN5QyxFQUFFLENBQUMsU0FBUyxHQWdTckQ7a0JBaFNvQixZQUFZIiwiZmlsZSI6IiIsInNvdXJjZVJvb3QiOiIvIiwic291cmNlc0NvbnRlbnQiOlsiLy8gTGVhcm4gVHlwZVNjcmlwdDpcclxuLy8gIC0gaHR0cHM6Ly9kb2NzLmNvY29zLmNvbS9jcmVhdG9yL21hbnVhbC9lbi9zY3JpcHRpbmcvdHlwZXNjcmlwdC5odG1sXHJcbi8vIExlYXJuIEF0dHJpYnV0ZTpcclxuLy8gIC0gaHR0cHM6Ly9kb2NzLmNvY29zLmNvbS9jcmVhdG9yL21hbnVhbC9lbi9zY3JpcHRpbmcvcmVmZXJlbmNlL2F0dHJpYnV0ZXMuaHRtbFxyXG4vLyBMZWFybiBsaWZlLWN5Y2xlIGNhbGxiYWNrczpcclxuLy8gIC0gaHR0cHM6Ly9kb2NzLmNvY29zLmNvbS9jcmVhdG9yL21hbnVhbC9lbi9zY3JpcHRpbmcvbGlmZS1jeWNsZS1jYWxsYmFja3MuaHRtbFxyXG5cclxuaW1wb3J0IE1hcENvbnJvbGVyIGZyb20gXCIuL01hcFwiO1xyXG5pbXBvcnQgeyBNaW5pR2FtZVNkayB9IGZyb20gXCIuL1Nkay9NaW5pR2FtZVNka1wiO1xyXG5cclxuY29uc3QgeyBjY2NsYXNzLCBwcm9wZXJ0eSB9ID0gY2MuX2RlY29yYXRvcjtcclxuXHJcbkBjY2NsYXNzXHJcbmV4cG9ydCBkZWZhdWx0IGNsYXNzIFNjZW5lTWFuYWdlciBleHRlbmRzIGNjLkNvbXBvbmVudCB7XHJcblxyXG4gICAgQHByb3BlcnR5KGNjLkxhYmVsKVxyXG4gICAgbGFiZWw6IGNjLkxhYmVsID0gbnVsbDtcclxuXHJcbiAgICBAcHJvcGVydHlcclxuICAgIHRleHQ6IHN0cmluZyA9ICdoZWxsbyc7XHJcblxyXG4gICAgQHByb3BlcnR5KGNjLk5vZGUpXHJcbiAgICBmcmVlemU6IGNjLk5vZGUgPSBudWxsO1xyXG5cclxuICAgIEBwcm9wZXJ0eShjYy5Ob2RlKVxyXG4gICAgaGFtbWVyOiBjYy5Ob2RlID0gbnVsbDtcclxuXHJcbiAgICBAcHJvcGVydHkoY2MuTm9kZSlcclxuICAgIG1hZ2ljX3dhbmQ6IGNjLk5vZGUgPSBudWxsO1xyXG5cclxuICAgIEBwcm9wZXJ0eShjYy5Ob2RlKVxyXG4gICAgcGF1c2U6IGNjLk5vZGUgPSBudWxsO1xyXG5cclxuXHJcbiAgICBAcHJvcGVydHkoeyB0eXBlOiBbY2MuUHJlZmFiXSwgdG9vbHRpcDogXCLmlrnlnZfmlbDnu4RcIiB9KVxyXG4gICAgQmxvY2tfQXJyYXk6IEFycmF5PGNjLlByZWZhYj4gPSBbXTtcclxuXHJcbiAgICBAcHJvcGVydHkoeyB0eXBlOiBbY2MuUHJlZmFiXSwgdG9vbHRpcDogXCLlopnlo4HmlbDnu4RcIiB9KVxyXG4gICAgV2FsbF9QcmVmYWI6IEFycmF5PGNjLlByZWZhYj4gPSBbXTtcclxuXHJcbiAgICBwYXJ0aWNsZUVmZmVjdHM6IGNjLlBhcnRpY2xlQXNzZXRbXTtcclxuICAgIC8vIEBwcm9wZXJ0eSh7dHlwZTogW2NjLlBhcnRpY2xlU3lzdGVtXSwgdG9vbHRpcDpcIueykuWtkOaVsOe7hFwifSlcclxuICAgIC8vIHBhcnRpY2xlRWZmZWN0cyA6IEFycmF5PGNjLlBhcnRpY2xlU3lzdGVtPiA9IFtdO1xyXG5cclxuICAgIGxvYWQxOiBib29sZWFuID0gZmFsc2U7XHJcbiAgICBsb2FkMjogYm9vbGVhbiA9IGZhbHNlO1xyXG4gICAgbG9hZDM6IGJvb2xlYW4gPSBmYWxzZTtcclxuICAgIGJ0bk5hbWU6IHN0cmluZyA9ICcnO1xyXG4gICAgY2FsbEJhY2s6IGFueTtcclxuXHJcblxyXG4gICAgLy8gTElGRS1DWUNMRSBDQUxMQkFDS1M6XHJcblxyXG4gICAgb25Mb2FkKCkge1xyXG4gICAgICAgIGNjLmdhbWUuc2V0RnJhbWVSYXRlKDYzKTtcclxuICAgICAgICB0aGlzLmNoYW5nZUJnKCk7XHJcblxyXG4gICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICAgICAgICBjYy5kaXJlY3Rvci5wcmVsb2FkU2NlbmUoXCJIb21lU2NlbmVcIiwgKGVycikgPT4ge1xyXG4gICAgICAgICAgICAgICAgaWYgKGVycikge1xyXG4gICAgICAgICAgICAgICAgICAgIC8vIGNvbnNvbGUuZXJyb3IoJ+mihOWKoOi9vSBIb21lU2NlbmUg5Zy65pmv5aSx6LSlOicsIGVycik7XHJcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgLy8gY29uc29sZS5sb2coJ+aIkOWKn+mihOWKoOi9vSBIb21lU2NlbmUg5Zy65pmvJyk7XHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgIH0sIDEwMDApO1xyXG5cclxuICAgIH1cclxuXHJcbiAgICBjaGFuZ2VCZygpIHtcclxuICAgICAgICBsZXQgbnVtYmVyID0gTWF0aC5mbG9vcihNYXRoLnJhbmRvbSgpICogOCkgKyAxO1xyXG4gICAgICAgIGNvbnN0IHBhdGggPSAnYmcvYmcnICsgbnVtYmVyO1xyXG4gICAgICAgIGNjLnJlc291cmNlcy5sb2FkKHBhdGgsIGNjLlNwcml0ZUZyYW1lLCAoZXJyLCBzcHJpdGVGcmFtZTogY2MuU3ByaXRlRnJhbWUpID0+IHtcclxuICAgICAgICAgICAgaWYgKGVycikge1xyXG4gICAgICAgICAgICAgICAgY29uc29sZS5lcnJvcign5Yqo5oCB5Yqg6L296IOM5pmv5Zu+5aSx6LSlOicsIGVycik7XHJcbiAgICAgICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgdGhpcy5ub2RlLmdldENoaWxkQnlOYW1lKFwiR2FtZVwiKS5nZXRDaGlsZEJ5TmFtZShcImJnXCIpLmdldENvbXBvbmVudChjYy5TcHJpdGUpLnNwcml0ZUZyYW1lID0gc3ByaXRlRnJhbWU7XHJcbiAgICAgICAgfSlcclxuICAgIH1cclxuXHJcbiAgICBsb2FkUGFydGljbGVFZmZlY3RzKCkge1xyXG4gICAgICAgIGNvbnN0IHBhdGggPSAnUGFydGljbGUnO1xyXG4gICAgICAgIGNjLnJlc291cmNlcy5sb2FkRGlyKHBhdGgsIGNjLlBhcnRpY2xlQXNzZXQsIChlcnIsIGFzc2V0czogY2MuUGFydGljbGVBc3NldFtdKSA9PiB7XHJcbiAgICAgICAgICAgIGlmIChlcnIpIHtcclxuICAgICAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoJ+WKqOaAgeWKoOi9veeykuWtkOeJueaViOWksei0pTonLCBlcnIpO1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICB0aGlzLnBhcnRpY2xlRWZmZWN0cyA9IGFzc2V0cztcclxuICAgICAgICAgICAgdGhpcy5zZXRQYXJ0aWNsZVNvcnQoKTtcclxuICAgICAgICAgICAgdGhpcy5sb2FkMyA9IHRydWU7XHJcbiAgICAgICAgICAgIC8vY29uc29sZS5sb2coJ+eykuWtkOeJueaViOWKoOi9veaIkOWKn++8jOWFseWKoOi9veS6hicsIHRoaXMucGFydGljbGVFZmZlY3RzLmxlbmd0aCwgJ+S4queykuWtkOeJueaViCcpO1xyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG5cclxuICAgIHNldFdhbGxQcmVmYWJTb3J0KCkge1xyXG4gICAgICAgIGNvbnN0IG9yZGVyID0gWydkb3duJywgJ2Rvd25MZWZ0JywgJ2Rvd25SaWdodCcsICdsZWZ0JywgJ3JpZ2h0JywgJ3VwJywgJ3VwTGVmdCcsICd1cFJpZ2h0J107XHJcbiAgICAgICAgdGhpcy5XYWxsX1ByZWZhYi5zb3J0KChhLCBiKSA9PiB7XHJcbiAgICAgICAgICAgIGNvbnN0IGluZGV4QSA9IG9yZGVyLmluZGV4T2YoYS5uYW1lKTtcclxuICAgICAgICAgICAgY29uc3QgaW5kZXhCID0gb3JkZXIuaW5kZXhPZihiLm5hbWUpO1xyXG4gICAgICAgICAgICBpZiAoaW5kZXhBID09PSAtMSkgcmV0dXJuIDE7XHJcbiAgICAgICAgICAgIGlmIChpbmRleEIgPT09IC0xKSByZXR1cm4gLTE7XHJcbiAgICAgICAgICAgIHJldHVybiBpbmRleEEgLSBpbmRleEI7XHJcbiAgICAgICAgfSk7XHJcblxyXG4gICAgfVxyXG5cclxuICAgIHNldFBhcnRpY2xlU29ydCgpIHtcclxuICAgICAgICBjb25zdCBvcmRlciA9IFsndG9wJywgJ2JvdCcsICdyaWcnLCAnbGVmJ107XHJcbiAgICAgICAgdGhpcy5wYXJ0aWNsZUVmZmVjdHMuc29ydCgoYSwgYikgPT4ge1xyXG4gICAgICAgICAgICAvLyBjb25zb2xlLmxvZyhhLm5hbWUuc3Vic3RyKDAsMyksYi5uYW1lLnN1YnN0cigwLDMpKTtcclxuICAgICAgICAgICAgY29uc3QgaW5kZXhBID0gb3JkZXIuaW5kZXhPZihhLm5hbWUuc3Vic3RyKDAsIDMpKTtcclxuICAgICAgICAgICAgY29uc3QgaW5kZXhCID0gb3JkZXIuaW5kZXhPZihiLm5hbWUuc3Vic3RyKDAsIDMpKTtcclxuICAgICAgICAgICAgaWYgKGluZGV4QSA9PT0gLTEpIHJldHVybiAxO1xyXG4gICAgICAgICAgICBpZiAoaW5kZXhCID09PSAtMSkgcmV0dXJuIC0xO1xyXG4gICAgICAgICAgICByZXR1cm4gaW5kZXhBIC0gaW5kZXhCO1xyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG5cclxuICAgIHNldFNvcnQoKSB7XHJcbiAgICAgICAgdGhpcy5CbG9ja19BcnJheS5zb3J0KChhLCBiKSA9PiB7XHJcbiAgICAgICAgICAgIC8vIOS7juWQjeensOS4reaPkOWPluaVsOWtl+mDqOWIhlxyXG4gICAgICAgICAgICBjb25zdCBudW1iZXJBID0gcGFyc2VJbnQoYS5uYW1lLm1hdGNoKC9cXGQrLyk/LlswXSB8fCAnMCcsIDEwKTtcclxuICAgICAgICAgICAgY29uc3QgbnVtYmVyQiA9IHBhcnNlSW50KGIubmFtZS5tYXRjaCgvXFxkKy8pPy5bMF0gfHwgJzAnLCAxMCk7XHJcbiAgICAgICAgICAgIHJldHVybiBudW1iZXJBIC0gbnVtYmVyQjtcclxuICAgICAgICB9KTtcclxuICAgIH1cclxuXHJcbiAgICBzdGFydCgpIHtcclxuXHJcbiAgICB9XHJcblxyXG4gICAgc3RhcnRHYW1lKCkge1xyXG4gICAgICAgIGNjLmRpcmVjdG9yLmxvYWRTY2VuZShcIkhvbWVTY2VuZVwiLCAoZXJyKSA9PiB7XHJcbiAgICAgICAgICAgIGlmIChlcnIpIHtcclxuICAgICAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoJ+WKoOi9vSBIb21lU2NlbmUg5Zy65pmv5aSx6LSlOicsIGVycik7XHJcbiAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAvLyBjb25zb2xlLmxvZygn5oiQ5Yqf5YiH5o2i5YiwIEhvbWVTY2VuZSDlnLrmma8nKTtcclxuICAgICAgICAgICAgICAgIGNjLmRpcmVjdG9yLmxvYWRTY2VuZShcIkhvbWVTY2VuZVwiKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH0pO1xyXG5cclxuICAgIH1cclxuXHJcbiAgICByZXR1cm5Ib21lKCkge1xyXG4gICAgICAgIGlmICh0aGlzLm5vZGUuZ2V0Q2hpbGRCeU5hbWUoXCJQYXVzZVwiKS5nZXRDaGlsZEJ5TmFtZShcImJ0blwiKS5nZXRDb21wb25lbnQoXCJidG5Db250cm9sXCIpLl90b3VjaCkge1xyXG4gICAgICAgICAgICBpZiAoTWFwQ29ucm9sZXIuX2luc3RhbmNlLmdhbWVTdGFydCA9PSB0cnVlKSB7XHJcbiAgICAgICAgICAgICAgICBNaW5pR2FtZVNkay5BUEkuc2hvd1RvYXN0KFwi5L2T5Yqb5YC85YeP5bCRXCIpO1xyXG4gICAgICAgICAgICAgICAgY2MuZnguR2FtZVRvb2wuc2V0VXNlckhlYWx0aCgtMSwgKGRhdGEpID0+IHtcclxuICAgICAgICAgICAgICAgIH0pXHJcbjw8PDw8PDwgSEVBRFxyXG4gICAgICAgICAgICAgICAgaWYoTWFwQ29ucm9sZXIuX2luc3RhbmNlLmNvdW50X1RpbWUpe1xyXG4gICAgICAgICAgICAgICAgICAgIGxldCBjb3VudF9UaW1lID0gTWFwQ29ucm9sZXIuX2luc3RhbmNlLmNvdW50X1RpbWU7XHJcbiAgICAgICAgICAgICAgICAgICAgbGV0IGFkZF9UaW1lID0gTWFwQ29ucm9sZXIuX2luc3RhbmNlLmFkZF9UaW1lO1xyXG4gICAgICAgICAgICAgICAgICAgIGxldCBkYXRhID0ge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB0aW1lOmNvdW50X1RpbWUsICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGFkZF9UaW1lOmFkZF9UaW1lLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICByZXN1bHQ6XCJnaXZlX3VwXCJcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgY2MuZnguR2FtZVRvb2wuc2h1c2h1X1RyYWNrKFwiZmluaXNoX3N0YWdlXCIsZGF0YSk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbj09PT09PT1cclxuICAgICAgICAgICAgICAgIGxldCBkYXRhID0ge1xyXG4gICAgICAgICAgICAgICAgICAgIHRpbWU6IE1hcENvbnJvbGVyLl9pbnN0YW5jZS5jb3VudF9UaW1lLFxyXG4gICAgICAgICAgICAgICAgICAgIGFkZF9UaW1lOiBNYXBDb25yb2xlci5faW5zdGFuY2UuYWRkX1RpbWUsXHJcbiAgICAgICAgICAgICAgICAgICAgcmVzdWx0OiBcImdpdmVfdXBcIlxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgY2MuZnguR2FtZVRvb2wuc2h1c2h1X1RyYWNrKFwiZmluaXNoX3N0YWdlXCIsIGRhdGEpO1xyXG4+Pj4+Pj4+IDBhMzFhN2E1YWJjMmM1MDViZjc0M2FhNTk2ZTFjNzY1YTA0MDUxNTJcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB0aGlzLm5vZGUuZ2V0Q2hpbGRCeU5hbWUoXCJQYXVzZVwiKS5nZXRDaGlsZEJ5TmFtZShcImJ0blwiKS5nZXRDb21wb25lbnQoXCJidG5Db250cm9sXCIpLnNldFRvdWNoKGZhbHNlKTtcclxuICAgICAgICAgICAgY2MuZnguQXVkaW9NYW5hZ2VyLl9pbnN0YW5jZS5wbGF5RWZmZWN0KFwiemh1YW4xXCIsIG51bGwpO1xyXG4gICAgICAgICAgICB0aGlzLm5vZGUuZ2V0Q2hpbGRCeU5hbWUoXCJ6aHVhbmNoYW5nXCIpLmFjdGl2ZSA9IHRydWU7XHJcbiAgICAgICAgICAgIHRoaXMubm9kZS5nZXRDaGlsZEJ5TmFtZShcInpodWFuY2hhbmdcIikuZ2V0Q29tcG9uZW50KHNwLlNrZWxldG9uKS5zZXRBbmltYXRpb24oMSwgXCJ1cFwiLCBmYWxzZSk7XHJcbiAgICAgICAgICAgIGNjLmRpcmVjdG9yLnByZWxvYWRTY2VuZShcIkhvbWVTY2VuZVwiLCAoZXJyLCBhc3NldCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgaWYgKGVycikge1xyXG4gICAgICAgICAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoJ+WKqOaAgeWKoOi9vSBQcmVmYWIg5aSx6LSlOicsIGVycik7XHJcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgY2MuZGlyZWN0b3IubG9hZFNjZW5lKFwiSG9tZVNjZW5lXCIpO1xyXG4gICAgICAgICAgICB9LCAxMjAwKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG5cclxuICAgIGRlc3Ryb3lOb2Rlc0luRnJhbWVzKG5vZGVzOiBjYy5Ob2RlW10sIGNhbGxiYWNrOiAoKSA9PiB2b2lkKSB7XHJcbiAgICAgICAgY29uc3QgQkFUQ0hfU0laRSA9IDEwOyAvLyDmr4/luKfplIDmr4HnmoToioLngrnmlbDph49cclxuICAgICAgICBsZXQgaW5kZXggPSAwO1xyXG5cclxuICAgICAgICBjb25zdCBkZXN0cm95QmF0Y2ggPSAoKSA9PiB7XHJcbiAgICAgICAgICAgIGxldCBjb3VudCA9IDA7XHJcbiAgICAgICAgICAgIHdoaWxlIChpbmRleCA8IG5vZGVzLmxlbmd0aCAmJiBjb3VudCA8IEJBVENIX1NJWkUpIHtcclxuICAgICAgICAgICAgICAgIGNvbnN0IG5vZGUgPSBub2Rlc1tpbmRleF07XHJcbiAgICAgICAgICAgICAgICBpZiAobm9kZSkge1xyXG5cclxuICAgICAgICAgICAgICAgICAgICBub2RlLmFjdGl2ZSA9IGZhbHNlO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgaW5kZXgrKztcclxuICAgICAgICAgICAgICAgIGNvdW50Kys7XHJcbiAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgIGlmIChpbmRleCA8IG5vZGVzLmxlbmd0aCkge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5zY2hlZHVsZU9uY2UoZGVzdHJveUJhdGNoLCA2KTtcclxuICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgIGNhbGxiYWNrKCk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9O1xyXG5cclxuICAgICAgICBkZXN0cm95QmF0Y2goKTtcclxuICAgIH1cclxuXHJcbiAgICAvLyDmlLnov5vlkI7nmoTliIfmjaLlnLrmma/mlrnms5VcclxuICAgIHN3aXRjaFRvRW1wdHlTY2VuZSgpIHtcclxuICAgICAgICBjb25zdCBhbGxOb2RlcyA9IGNjLmRpcmVjdG9yLmdldFNjZW5lKCkuY2hpbGRyZW47XHJcbiAgICAgICAgdGhpcy5kZXN0cm95Tm9kZXNJbkZyYW1lcyhhbGxOb2RlcywgKCkgPT4ge1xyXG4gICAgICAgICAgICBjYy5kaXJlY3Rvci5sb2FkU2NlbmUoXCJIb21lU2NlbmVcIik7XHJcbiAgICAgICAgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgb3BlblBhdXNlKCkge1xyXG4gICAgICAgIGNjLmZ4LkF1ZGlvTWFuYWdlci5faW5zdGFuY2UucGxheUVmZmVjdChcImFubml1X2xpdHRsZVwiLCBudWxsKTtcclxuICAgICAgICBpZiAodGhpcy5wYXVzZS5nZXRDb21wb25lbnQoXCJidG5Db250cm9sXCIpLl90b3VjaCkge1xyXG4gICAgICAgICAgICB0aGlzLnBhdXNlLmdldENvbXBvbmVudChcImJ0bkNvbnRyb2xcIikuc2V0VG91Y2goZmFsc2UpO1xyXG4gICAgICAgICAgICB0aGlzLm5vZGUuZ2V0Q2hpbGRCeU5hbWUoXCJQYXVzZVwiKS5hY3RpdmUgPSB0cnVlO1xyXG4gICAgICAgICAgICBNYXBDb25yb2xlci5faW5zdGFuY2UucGF1c2UgPSB0cnVlO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICB9XHJcblxyXG4gICAgY2xvc2VQYXVzZSgpIHtcclxuICAgICAgICBjYy5meC5BdWRpb01hbmFnZXIuX2luc3RhbmNlLnBsYXlFZmZlY3QoXCJhbm5pdV9saXR0bGVcIiwgbnVsbCk7XHJcbiAgICAgICAgdGhpcy5wYXVzZS5nZXRDb21wb25lbnQoXCJidG5Db250cm9sXCIpLnNldFRvdWNoKHRydWUpO1xyXG4gICAgICAgIHRoaXMubm9kZS5nZXRDaGlsZEJ5TmFtZShcIlBhdXNlXCIpLmFjdGl2ZSA9IGZhbHNlO1xyXG4gICAgICAgIGlmIChNYXBDb25yb2xlci5faW5zdGFuY2Uubm9kZS5wYXJlbnQuZ2V0Q2hpbGRCeU5hbWUoXCJJY2VcIikuYWN0aXZlID09IGZhbHNlKSB7XHJcbiAgICAgICAgICAgIE1hcENvbnJvbGVyLl9pbnN0YW5jZS5wYXVzZSA9IGZhbHNlO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBvcGVuUHJvcEJ1eShuYW1lKSB7XHJcbiAgICAgICAgTWFwQ29ucm9sZXIuX2luc3RhbmNlLnBhdXNlID0gdHJ1ZTtcclxuICAgICAgICB0aGlzLmJ0bk5hbWUgPSBuYW1lO1xyXG4gICAgICAgIGxldCBwcm9wV2luZG93ID0gdGhpcy5ub2RlLmdldENoaWxkQnlOYW1lKFwiR2FtZVwiKS5nZXRDaGlsZEJ5TmFtZShcInByb3BXaW5kb3dcIik7XHJcbiAgICAgICAgcHJvcFdpbmRvdy5hY3RpdmUgPSB0cnVlO1xyXG4gICAgICAgIHByb3BXaW5kb3cuZ2V0Q2hpbGRCeU5hbWUoXCJmcmVlemVcIikuYWN0aXZlID0gZmFsc2U7XHJcbiAgICAgICAgcHJvcFdpbmRvdy5nZXRDaGlsZEJ5TmFtZShcImhhbW1lclwiKS5hY3RpdmUgPSBmYWxzZTtcclxuICAgICAgICBwcm9wV2luZG93LmdldENoaWxkQnlOYW1lKFwibWFnaWNcIikuYWN0aXZlID0gZmFsc2U7XHJcbiAgICAgICAgcHJvcFdpbmRvdy5nZXRDaGlsZEJ5TmFtZShcImJ1eV9CdG5cIikuZ2V0Q29tcG9uZW50KFwiYnRuQ29udHJvbFwiKS5zZXRUb3VjaCh0cnVlKTtcclxuICAgICAgICBwcm9wV2luZG93LmdldENoaWxkQnlOYW1lKG5hbWUpLmFjdGl2ZSA9IHRydWU7XHJcbiAgICB9XHJcblxyXG4gICAgY2xpY2tCdG4oKSB7XHJcbiAgICAgICAgY2MuZnguQXVkaW9NYW5hZ2VyLl9pbnN0YW5jZS5wbGF5RWZmZWN0KFwiYW5uaXVfQmlnXCIsIG51bGwpO1xyXG4gICAgICAgIGxldCBwcm9wV2luZG93ID0gdGhpcy5ub2RlLmdldENoaWxkQnlOYW1lKFwiR2FtZVwiKS5nZXRDaGlsZEJ5TmFtZShcInByb3BXaW5kb3dcIik7XHJcbiAgICAgICAgaWYgKHByb3BXaW5kb3cuZ2V0Q2hpbGRCeU5hbWUoXCJidXlfQnRuXCIpLmdldENvbXBvbmVudChcImJ0bkNvbnRyb2xcIikuX3RvdWNoKSB7XHJcbiAgICAgICAgICAgIHByb3BXaW5kb3cuZ2V0Q2hpbGRCeU5hbWUoXCJidXlfQnRuXCIpLmdldENvbXBvbmVudChcImJ0bkNvbnRyb2xcIikuc2V0VG91Y2goZmFsc2UpO1xyXG4gICAgICAgICAgICBpZiAodGhpcy5idG5OYW1lID09IFwiZnJlZXplXCIpXHJcbiAgICAgICAgICAgICAgICBNYXBDb25yb2xlci5faW5zdGFuY2UuYnV5RnJlZXplKCk7XHJcbiAgICAgICAgICAgIGVsc2UgaWYgKHRoaXMuYnRuTmFtZSA9PSBcImhhbW1lclwiKVxyXG4gICAgICAgICAgICAgICAgTWFwQ29ucm9sZXIuX2luc3RhbmNlLmJ1eUhhbW1lcigpO1xyXG4gICAgICAgICAgICBlbHNlIGlmICh0aGlzLmJ0bk5hbWUgPT0gXCJtYWdpY1wiKVxyXG4gICAgICAgICAgICAgICAgTWFwQ29ucm9sZXIuX2luc3RhbmNlLmJ1eU1hZ2ljKCk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG4gICAgLy/miZPlvIDllYblupdcclxuICAgIG9wZW5TaG9wKCkge1xyXG4gICAgICAgIC8vIOWKoOi9vSBzaG9wICBidW5kbGVcclxuICAgICAgICBjYy5hc3NldE1hbmFnZXIubG9hZEJ1bmRsZSgnc2hvcCcsIChlcnI6IEVycm9yLCBidW5kbGU6IGNjLkFzc2V0TWFuYWdlci5CdW5kbGUpID0+IHtcclxuICAgICAgICAgICAgYnVuZGxlLmxvYWQoJ3ByZWZhYi9zaG9wJywgY2MuUHJlZmFiLCAoZXJyOiBFcnJvciwgcHJlZmFiOiBjYy5QcmVmYWIpID0+IHtcclxuICAgICAgICAgICAgICAgIGlmIChlcnIpIHtcclxuICAgICAgICAgICAgICAgICAgICBjYy5lcnJvcihlcnIubWVzc2FnZSB8fCBlcnIpO1xyXG4gICAgICAgICAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIGlmIChwcmVmYWIpIHtcclxuICAgICAgICAgICAgICAgICAgICBjb25zdCBzaG9wTm9kZSA9IGNjLmluc3RhbnRpYXRlKHByZWZhYik7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5ub2RlLmFkZENoaWxkKHNob3BOb2RlKTtcclxuICAgICAgICAgICAgICAgICAgICBjb25zb2xlLmxvZyhcInNob3BOb2RlIHBhcmVudDpcIiwgc2hvcE5vZGUucGFyZW50KTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgfSk7XHJcbiAgICB9XHJcblxyXG5cclxuICAgIGNsb3NlUHJvcEJ1eSgpIHtcclxuICAgICAgICBNYXBDb25yb2xlci5faW5zdGFuY2UucGF1c2UgPSBmYWxzZTtcclxuICAgICAgICBsZXQgZnJlZXplQnRuID0gTWFwQ29ucm9sZXIuX2luc3RhbmNlLm5vZGUucGFyZW50LmdldENoaWxkQnlOYW1lKFwiQm90dG9tXCIpLmdldENoaWxkQnlOYW1lKFwidGltZUJ0blwiKTtcclxuICAgICAgICBsZXQgaGFtbWVyQnRuID0gTWFwQ29ucm9sZXIuX2luc3RhbmNlLm5vZGUucGFyZW50LmdldENoaWxkQnlOYW1lKFwiQm90dG9tXCIpLmdldENoaWxkQnlOYW1lKFwiZGVzdHJveUJ0blwiKTtcclxuICAgICAgICBsZXQgbWFnaWNCdG4gPSBNYXBDb25yb2xlci5faW5zdGFuY2Uubm9kZS5wYXJlbnQuZ2V0Q2hpbGRCeU5hbWUoXCJCb3R0b21cIikuZ2V0Q2hpbGRCeU5hbWUoXCJtYWdpY0J0blwiKTtcclxuICAgICAgICBpZiAodGhpcy5idG5OYW1lID09IFwiZnJlZXplXCIpIGZyZWV6ZUJ0bi5nZXRDb21wb25lbnQoXCJidG5Db250cm9sXCIpLnNldFRvdWNoKHRydWUpO1xyXG4gICAgICAgIGVsc2UgaWYgKHRoaXMuYnRuTmFtZSA9PSBcImhhbW1lclwiKSBoYW1tZXJCdG4uZ2V0Q29tcG9uZW50KFwiYnRuQ29udHJvbFwiKS5zZXRUb3VjaCh0cnVlKTtcclxuICAgICAgICBlbHNlIGlmICh0aGlzLmJ0bk5hbWUgPT0gXCJtYWdpY1wiKSBtYWdpY0J0bi5nZXRDb21wb25lbnQoXCJidG5Db250cm9sXCIpLnNldFRvdWNoKHRydWUpO1xyXG5cclxuICAgICAgICB0aGlzLm5vZGUuZ2V0Q2hpbGRCeU5hbWUoXCJHYW1lXCIpLmdldENoaWxkQnlOYW1lKFwicHJvcFdpbmRvd1wiKS5hY3RpdmUgPSBmYWxzZTtcclxuICAgIH1cclxuXHJcbiAgICB1cGRhdGUoZHQpIHtcclxuXHJcbiAgICB9XHJcbn1cclxuIl19 //------QC-SOURCE-SPLIT------ (function() { @@ -9518,94 +6950,94 @@ cc._RF.pop(); cc._RF.push(module, '7fe14dRFQZKSKKAoEn4S7OU', 'NewMode'); // Script/NewMode.ts -"use strict"; -// Learn TypeScript: -// - https://docs.cocos.com/creator/manual/en/scripting/typescript.html -// Learn Attribute: -// - https://docs.cocos.com/creator/manual/en/scripting/reference/attributes.html -// Learn life-cycle callbacks: -// - https://docs.cocos.com/creator/manual/en/scripting/life-cycle-callbacks.html -var __extends = (this && this.__extends) || (function () { - var extendStatics = function (d, b) { - extendStatics = Object.setPrototypeOf || - ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) || - function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; }; - return extendStatics(d, b); - }; - return function (d, b) { - extendStatics(d, b); - function __() { this.constructor = d; } - d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); - }; -})(); -var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) { - var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; - if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc); - else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; - return c > 3 && r && Object.defineProperty(target, key, r), r; -}; -Object.defineProperty(exports, "__esModule", { value: true }); -var _a = cc._decorator, ccclass = _a.ccclass, property = _a.property; -var NewClass = /** @class */ (function (_super) { - __extends(NewClass, _super); - function NewClass() { - var _this = _super !== null && _super.apply(this, arguments) || this; - _this.label = null; - _this.text = 'hello'; - _this.btnStatic = 0; - _this.propName = ""; - return _this; - // update (dt) {} - } - // LIFE-CYCLE CALLBACKS: - // onLoad () {} - NewClass.prototype.start = function () { - var _this = this; - for (var i = 0; i < cc.fx.GameConfig.NEW_LEVEL.length; i++) { - if ((cc.fx.GameConfig.GM_INFO.level + 1) == cc.fx.GameConfig.NEW_LEVEL[i].level) { - this.propName = cc.fx.GameConfig.NEW_LEVEL[i].name; - var path = 'Window_Prop/' + this.propName; - cc.resources.load(path, cc.SpriteFrame, function (err, spriteFrame) { - if (err) { - console.error('动态加载背景图失败:', err); - return; - } - _this.node.getChildByName("icon").getComponent(cc.Sprite).spriteFrame = spriteFrame; - }); - break; - } - } - }; - NewClass.prototype.setMode = function (mode) { - this.btnStatic = mode; - var name = "GameScene"; - if (mode == 1) { - name = "HomeScene"; - } - cc.director.preloadScene(name, function () { - }); - }; - NewClass.prototype.clickBtn = function () { - cc.fx.AudioManager._instance.playEffect("anniu_Big", null); - if (this.btnStatic == 1) { - cc.director.loadScene("HomeScene"); - } - else if (this.btnStatic == 2) { - cc.director.loadScene("GameScene"); - } - }; - __decorate([ - property(cc.Label) - ], NewClass.prototype, "label", void 0); - __decorate([ - property - ], NewClass.prototype, "text", void 0); - NewClass = __decorate([ - ccclass - ], NewClass); - return NewClass; -}(cc.Component)); -exports.default = NewClass; +"use strict"; +// Learn TypeScript: +// - https://docs.cocos.com/creator/manual/en/scripting/typescript.html +// Learn Attribute: +// - https://docs.cocos.com/creator/manual/en/scripting/reference/attributes.html +// Learn life-cycle callbacks: +// - https://docs.cocos.com/creator/manual/en/scripting/life-cycle-callbacks.html +var __extends = (this && this.__extends) || (function () { + var extendStatics = function (d, b) { + extendStatics = Object.setPrototypeOf || + ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) || + function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; }; + return extendStatics(d, b); + }; + return function (d, b) { + extendStatics(d, b); + function __() { this.constructor = d; } + d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); + }; +})(); +var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) { + var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; + if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc); + else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; + return c > 3 && r && Object.defineProperty(target, key, r), r; +}; +Object.defineProperty(exports, "__esModule", { value: true }); +var _a = cc._decorator, ccclass = _a.ccclass, property = _a.property; +var NewClass = /** @class */ (function (_super) { + __extends(NewClass, _super); + function NewClass() { + var _this = _super !== null && _super.apply(this, arguments) || this; + _this.label = null; + _this.text = 'hello'; + _this.btnStatic = 0; + _this.propName = ""; + return _this; + // update (dt) {} + } + // LIFE-CYCLE CALLBACKS: + // onLoad () {} + NewClass.prototype.start = function () { + var _this = this; + for (var i = 0; i < cc.fx.GameConfig.NEW_LEVEL.length; i++) { + if ((cc.fx.GameConfig.GM_INFO.level + 1) == cc.fx.GameConfig.NEW_LEVEL[i].level) { + this.propName = cc.fx.GameConfig.NEW_LEVEL[i].name; + var path = 'Window_Prop/' + this.propName; + cc.resources.load(path, cc.SpriteFrame, function (err, spriteFrame) { + if (err) { + console.error('动态加载背景图失败:', err); + return; + } + _this.node.getChildByName("icon").getComponent(cc.Sprite).spriteFrame = spriteFrame; + }); + break; + } + } + }; + NewClass.prototype.setMode = function (mode) { + this.btnStatic = mode; + var name = "GameScene"; + if (mode == 1) { + name = "HomeScene"; + } + cc.director.preloadScene(name, function () { + }); + }; + NewClass.prototype.clickBtn = function () { + cc.fx.AudioManager._instance.playEffect("anniu_Big", null); + if (this.btnStatic == 1) { + cc.director.loadScene("HomeScene"); + } + else if (this.btnStatic == 2) { + cc.director.loadScene("GameScene"); + } + }; + __decorate([ + property(cc.Label) + ], NewClass.prototype, "label", void 0); + __decorate([ + property + ], NewClass.prototype, "text", void 0); + NewClass = __decorate([ + ccclass + ], NewClass); + return NewClass; +}(cc.Component)); +exports.default = NewClass; cc._RF.pop(); } @@ -9624,7 +7056,7 @@ cc._RF.pop(); (function() { var nodeEnv = typeof require !== 'undefined' && typeof process !== 'undefined'; var __module = nodeEnv ? module : {exports:{}}; - var __filename = 'preview-scripts/assets/Script/SceneManager.js'; + var __filename = 'preview-scripts/assets/Script/Reduce.js'; var __require = nodeEnv ? function (request) { return cc.require(request); } : function (request) { @@ -9632,293 +7064,63 @@ cc._RF.pop(); }; function __define (exports, require, module) { if (!nodeEnv) {__quick_compile_project__.registerModule(__filename, module);}"use strict"; -cc._RF.push(module, '80998T1AYNNRZdRxsVvXR65', 'SceneManager'); -// Script/SceneManager.ts +cc._RF.push(module, 'ca599IU5hFEYYrzoN59YOpT', 'Reduce'); +// Script/Reduce.ts -"use strict"; -// Learn TypeScript: -// - https://docs.cocos.com/creator/manual/en/scripting/typescript.html -// Learn Attribute: -// - https://docs.cocos.com/creator/manual/en/scripting/reference/attributes.html -// Learn life-cycle callbacks: -// - https://docs.cocos.com/creator/manual/en/scripting/life-cycle-callbacks.html -var __extends = (this && this.__extends) || (function () { - var extendStatics = function (d, b) { - extendStatics = Object.setPrototypeOf || - ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) || - function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; }; - return extendStatics(d, b); - }; - return function (d, b) { - extendStatics(d, b); - function __() { this.constructor = d; } - d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); - }; -})(); -var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) { - var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; - if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc); - else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; - return c > 3 && r && Object.defineProperty(target, key, r), r; -}; -Object.defineProperty(exports, "__esModule", { value: true }); -var Map_1 = require("./Map"); -var MiniGameSdk_1 = require("./Sdk/MiniGameSdk"); -var _a = cc._decorator, ccclass = _a.ccclass, property = _a.property; -var SceneManager = /** @class */ (function (_super) { - __extends(SceneManager, _super); - function SceneManager() { - var _this = _super !== null && _super.apply(this, arguments) || this; - _this.label = null; - _this.text = 'hello'; - _this.freeze = null; - _this.hammer = null; - _this.magic_wand = null; - _this.pause = null; - _this.Block_Array = []; - _this.Wall_Prefab = []; - // @property({type: [cc.ParticleSystem], tooltip:"粒子数组"}) - // particleEffects : Array = []; - _this.load1 = false; - _this.load2 = false; - _this.load3 = false; - _this.btnName = ''; - return _this; - } - // LIFE-CYCLE CALLBACKS: - SceneManager.prototype.onLoad = function () { - cc.game.setFrameRate(63); - this.changeBg(); - setTimeout(function () { - cc.director.preloadScene("HomeScene", function (err) { - if (err) { - // console.error('预加载 HomeScene 场景失败:', err); - return; - } - // console.log('成功预加载 HomeScene 场景'); - }); - }, 1000); - }; - SceneManager.prototype.changeBg = function () { - var _this = this; - var number = Math.floor(Math.random() * 8) + 1; - var path = 'bg/bg' + number; - cc.resources.load(path, cc.SpriteFrame, function (err, spriteFrame) { - if (err) { - console.error('动态加载背景图失败:', err); - return; - } - _this.node.getChildByName("Game").getChildByName("bg").getComponent(cc.Sprite).spriteFrame = spriteFrame; - }); - }; - SceneManager.prototype.loadParticleEffects = function () { - var _this = this; - var path = 'Particle'; - cc.resources.loadDir(path, cc.ParticleAsset, function (err, assets) { - if (err) { - console.error('动态加载粒子特效失败:', err); - return; - } - _this.particleEffects = assets; - _this.setParticleSort(); - _this.load3 = true; - //console.log('粒子特效加载成功,共加载了', this.particleEffects.length, '个粒子特效'); - }); - }; - SceneManager.prototype.setWallPrefabSort = function () { - var order = ['down', 'downLeft', 'downRight', 'left', 'right', 'up', 'upLeft', 'upRight']; - this.Wall_Prefab.sort(function (a, b) { - var indexA = order.indexOf(a.name); - var indexB = order.indexOf(b.name); - if (indexA === -1) - return 1; - if (indexB === -1) - return -1; - return indexA - indexB; - }); - }; - SceneManager.prototype.setParticleSort = function () { - var order = ['top', 'bot', 'rig', 'lef']; - this.particleEffects.sort(function (a, b) { - // console.log(a.name.substr(0,3),b.name.substr(0,3)); - var indexA = order.indexOf(a.name.substr(0, 3)); - var indexB = order.indexOf(b.name.substr(0, 3)); - if (indexA === -1) - return 1; - if (indexB === -1) - return -1; - return indexA - indexB; - }); - }; - SceneManager.prototype.setSort = function () { - this.Block_Array.sort(function (a, b) { - var _a, _b; - // 从名称中提取数字部分 - var numberA = parseInt(((_a = a.name.match(/\d+/)) === null || _a === void 0 ? void 0 : _a[0]) || '0', 10); - var numberB = parseInt(((_b = b.name.match(/\d+/)) === null || _b === void 0 ? void 0 : _b[0]) || '0', 10); - return numberA - numberB; - }); - }; - SceneManager.prototype.start = function () { - }; - SceneManager.prototype.startGame = function () { - cc.director.loadScene("HomeScene", function (err) { - if (err) { - console.error('加载 HomeScene 场景失败:', err); - } - else { - // console.log('成功切换到 HomeScene 场景'); - cc.director.loadScene("HomeScene"); - } - }); - }; - SceneManager.prototype.returnHome = function () { - if (this.node.getChildByName("Pause").getChildByName("btn").getComponent("btnControl")._touch) { - if (Map_1.default._instance.gameStart == true) { - MiniGameSdk_1.MiniGameSdk.API.showToast("体力值减少"); - cc.fx.GameTool.setUserHealth(-1, function (data) { - }); - if (Map_1.default._instance.count_Time) { - var count_Time = Map_1.default._instance.count_Time; - var add_Time = Map_1.default._instance.add_Time; - var data = { - time: count_Time, - add_Time: add_Time, - result: "give_up" - }; - cc.fx.GameTool.shushu_Track("finish_stage", data); - } - } - this.node.getChildByName("Pause").getChildByName("btn").getComponent("btnControl").setTouch(false); - cc.fx.AudioManager._instance.playEffect("zhuan1", null); - this.node.getChildByName("zhuanchang").active = true; - this.node.getChildByName("zhuanchang").getComponent(sp.Skeleton).setAnimation(1, "up", false); - cc.director.preloadScene("HomeScene", function (err, asset) { - if (err) { - console.error('动态加载 Prefab 失败:', err); - return; - } - }); - setTimeout(function () { - cc.director.loadScene("HomeScene"); - }, 1200); - } - }; - SceneManager.prototype.destroyNodesInFrames = function (nodes, callback) { - var _this = this; - var BATCH_SIZE = 10; // 每帧销毁的节点数量 - var index = 0; - var destroyBatch = function () { - var count = 0; - while (index < nodes.length && count < BATCH_SIZE) { - var node = nodes[index]; - if (node) { - node.active = false; - } - index++; - count++; - } - if (index < nodes.length) { - _this.scheduleOnce(destroyBatch, 6); - } - else { - callback(); - } - }; - destroyBatch(); - }; - // 改进后的切换场景方法 - SceneManager.prototype.switchToEmptyScene = function () { - var allNodes = cc.director.getScene().children; - this.destroyNodesInFrames(allNodes, function () { - cc.director.loadScene("HomeScene"); - }); - }; - SceneManager.prototype.openPause = function () { - cc.fx.AudioManager._instance.playEffect("anniu_little", null); - if (this.pause.getComponent("btnControl")._touch) { - this.pause.getComponent("btnControl").setTouch(false); - this.node.getChildByName("Pause").active = true; - Map_1.default._instance.pause = true; - } - }; - SceneManager.prototype.closePause = function () { - cc.fx.AudioManager._instance.playEffect("anniu_little", null); - this.pause.getComponent("btnControl").setTouch(true); - this.node.getChildByName("Pause").active = false; - if (Map_1.default._instance.node.parent.getChildByName("Ice").active == false) { - Map_1.default._instance.pause = false; - } - }; - SceneManager.prototype.openPropBuy = function (name) { - Map_1.default._instance.pause = true; - this.btnName = name; - var propWindow = this.node.getChildByName("Game").getChildByName("propWindow"); - propWindow.active = true; - propWindow.getChildByName("freeze").active = false; - propWindow.getChildByName("hammer").active = false; - propWindow.getChildByName("magic").active = false; - propWindow.getChildByName("buy_Btn").getComponent("btnControl").setTouch(true); - propWindow.getChildByName(name).active = true; - }; - SceneManager.prototype.clickBtn = function () { - cc.fx.AudioManager._instance.playEffect("anniu_Big", null); - var propWindow = this.node.getChildByName("Game").getChildByName("propWindow"); - if (propWindow.getChildByName("buy_Btn").getComponent("btnControl")._touch) { - propWindow.getChildByName("buy_Btn").getComponent("btnControl").setTouch(false); - if (this.btnName == "freeze") - Map_1.default._instance.buyFreeze(); - else if (this.btnName == "hammer") - Map_1.default._instance.buyHammer(); - else if (this.btnName == "magic") - Map_1.default._instance.buyMagic(); - } - }; - SceneManager.prototype.closePropBuy = function () { - Map_1.default._instance.pause = false; - var freezeBtn = Map_1.default._instance.node.parent.getChildByName("Bottom").getChildByName("timeBtn"); - var hammerBtn = Map_1.default._instance.node.parent.getChildByName("Bottom").getChildByName("destroyBtn"); - var magicBtn = Map_1.default._instance.node.parent.getChildByName("Bottom").getChildByName("magicBtn"); - if (this.btnName == "freeze") - freezeBtn.getComponent("btnControl").setTouch(true); - else if (this.btnName == "hammer") - hammerBtn.getComponent("btnControl").setTouch(true); - else if (this.btnName == "magic") - magicBtn.getComponent("btnControl").setTouch(true); - this.node.getChildByName("Game").getChildByName("propWindow").active = false; - }; - SceneManager.prototype.update = function (dt) { - }; - __decorate([ - property(cc.Label) - ], SceneManager.prototype, "label", void 0); - __decorate([ - property - ], SceneManager.prototype, "text", void 0); - __decorate([ - property(cc.Node) - ], SceneManager.prototype, "freeze", void 0); - __decorate([ - property(cc.Node) - ], SceneManager.prototype, "hammer", void 0); - __decorate([ - property(cc.Node) - ], SceneManager.prototype, "magic_wand", void 0); - __decorate([ - property(cc.Node) - ], SceneManager.prototype, "pause", void 0); - __decorate([ - property({ type: [cc.Prefab], tooltip: "方块数组" }) - ], SceneManager.prototype, "Block_Array", void 0); - __decorate([ - property({ type: [cc.Prefab], tooltip: "墙壁数组" }) - ], SceneManager.prototype, "Wall_Prefab", void 0); - SceneManager = __decorate([ - ccclass - ], SceneManager); - return SceneManager; -}(cc.Component)); -exports.default = SceneManager; +"use strict"; +// Learn TypeScript: +// - https://docs.cocos.com/creator/manual/en/scripting/typescript.html +// Learn Attribute: +// - https://docs.cocos.com/creator/manual/en/scripting/reference/attributes.html +// Learn life-cycle callbacks: +// - https://docs.cocos.com/creator/manual/en/scripting/life-cycle-callbacks.html +var __extends = (this && this.__extends) || (function () { + var extendStatics = function (d, b) { + extendStatics = Object.setPrototypeOf || + ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) || + function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; }; + return extendStatics(d, b); + }; + return function (d, b) { + extendStatics(d, b); + function __() { this.constructor = d; } + d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); + }; +})(); +var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) { + var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; + if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc); + else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; + return c > 3 && r && Object.defineProperty(target, key, r), r; +}; +Object.defineProperty(exports, "__esModule", { value: true }); +var _a = cc._decorator, ccclass = _a.ccclass, property = _a.property; +var NewClass = /** @class */ (function (_super) { + __extends(NewClass, _super); + function NewClass() { + var _this = _super !== null && _super.apply(this, arguments) || this; + _this.Block_Color = []; + _this.level = null; + return _this; + // update (dt) {} + } + // LIFE-CYCLE CALLBACKS: + NewClass.prototype.onLoad = function () { + }; + NewClass.prototype.start = function () { + }; + __decorate([ + property({ type: [cc.SpriteFrame], tooltip: "方块颜色图片" }) + ], NewClass.prototype, "Block_Color", void 0); + __decorate([ + property(cc.Label) + ], NewClass.prototype, "level", void 0); + NewClass = __decorate([ + ccclass + ], NewClass); + return NewClass; +}(cc.Component)); +exports.default = NewClass; cc._RF.pop(); } @@ -9931,13 +7133,13 @@ cc._RF.pop(); }); } })(); -//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImFzc2V0c1xcU2NyaXB0XFxTY2VuZU1hbmFnZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLG9CQUFvQjtBQUNwQix3RUFBd0U7QUFDeEUsbUJBQW1CO0FBQ25CLGtGQUFrRjtBQUNsRiw4QkFBOEI7QUFDOUIsa0ZBQWtGOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFFbEYsNkJBQWdDO0FBQ2hDLGlEQUFnRDtBQUUxQyxJQUFBLEtBQXNCLEVBQUUsQ0FBQyxVQUFVLEVBQWxDLE9BQU8sYUFBQSxFQUFFLFFBQVEsY0FBaUIsQ0FBQztBQUcxQztJQUEwQyxnQ0FBWTtJQUF0RDtRQUFBLHFFQXVRQztRQXBRRyxXQUFLLEdBQWEsSUFBSSxDQUFDO1FBR3ZCLFVBQUksR0FBVyxPQUFPLENBQUM7UUFHdkIsWUFBTSxHQUFZLElBQUksQ0FBQztRQUd2QixZQUFNLEdBQVksSUFBSSxDQUFDO1FBR3ZCLGdCQUFVLEdBQVksSUFBSSxDQUFDO1FBRzNCLFdBQUssR0FBWSxJQUFJLENBQUM7UUFJdEIsaUJBQVcsR0FBc0IsRUFBRSxDQUFDO1FBR3BDLGlCQUFXLEdBQXNCLEVBQUUsQ0FBQztRQUdwQyx5REFBeUQ7UUFDekQsbURBQW1EO1FBRW5ELFdBQUssR0FBWSxLQUFLLENBQUM7UUFDdkIsV0FBSyxHQUFZLEtBQUssQ0FBQztRQUN2QixXQUFLLEdBQVksS0FBSyxDQUFDO1FBQ3ZCLGFBQU8sR0FBVyxFQUFFLENBQUM7O0lBcU96QixDQUFDO0lBak9HLHdCQUF3QjtJQUV4Qiw2QkFBTSxHQUFOO1FBQ0ksRUFBRSxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsRUFBRSxDQUFDLENBQUM7UUFDekIsSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDO1FBRWhCLFVBQVUsQ0FBQztZQUNQLEVBQUUsQ0FBQyxRQUFRLENBQUMsWUFBWSxDQUFDLFdBQVcsRUFBRSxVQUFDLEdBQUc7Z0JBQ3RDLElBQUksR0FBRyxFQUFFO29CQUNMLDZDQUE2QztvQkFDN0MsT0FBTztpQkFDVjtnQkFDRCxxQ0FBcUM7WUFDekMsQ0FBQyxDQUFDLENBQUM7UUFDUCxDQUFDLEVBQUUsSUFBSSxDQUFDLENBQUM7SUFFYixDQUFDO0lBRUQsK0JBQVEsR0FBUjtRQUFBLGlCQVVDO1FBVEcsSUFBSSxNQUFNLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFLEdBQUcsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQy9DLElBQU0sSUFBSSxHQUFHLE9BQU8sR0FBRyxNQUFNLENBQUM7UUFDOUIsRUFBRSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FBQyxXQUFXLEVBQUUsVUFBQyxHQUFHLEVBQUUsV0FBMkI7WUFDckUsSUFBSSxHQUFHLEVBQUU7Z0JBQ0wsT0FBTyxDQUFDLEtBQUssQ0FBQyxZQUFZLEVBQUUsR0FBRyxDQUFDLENBQUM7Z0JBQ2pDLE9BQU87YUFDVjtZQUNELEtBQUksQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLE1BQU0sQ0FBQyxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxZQUFZLENBQUMsRUFBRSxDQUFDLE1BQU0sQ0FBQyxDQUFDLFdBQVcsR0FBRyxXQUFXLENBQUM7UUFDNUcsQ0FBQyxDQUFDLENBQUE7SUFDTixDQUFDO0lBRUQsMENBQW1CLEdBQW5CO1FBQUEsaUJBYUM7UUFaRyxJQUFNLElBQUksR0FBRyxVQUFVLENBQUM7UUFDeEIsRUFBRSxDQUFDLFNBQVMsQ0FBQyxPQUFPLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FBQyxhQUFhLEVBQUUsVUFBQyxHQUFHLEVBQUUsTUFBMEI7WUFDekUsSUFBSSxHQUFHLEVBQUU7Z0JBQ0wsT0FBTyxDQUFDLEtBQUssQ0FBQyxhQUFhLEVBQUUsR0FBRyxDQUFDLENBQUM7Z0JBQ2xDLE9BQU87YUFDVjtZQUVELEtBQUksQ0FBQyxlQUFlLEdBQUcsTUFBTSxDQUFDO1lBQzlCLEtBQUksQ0FBQyxlQUFlLEVBQUUsQ0FBQztZQUN2QixLQUFJLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQztZQUNsQixxRUFBcUU7UUFDekUsQ0FBQyxDQUFDLENBQUM7SUFDUCxDQUFDO0lBRUQsd0NBQWlCLEdBQWpCO1FBQ0ksSUFBTSxLQUFLLEdBQUcsQ0FBQyxNQUFNLEVBQUUsVUFBVSxFQUFFLFdBQVcsRUFBRSxNQUFNLEVBQUMsT0FBTyxFQUFDLElBQUksRUFBQyxRQUFRLEVBQUMsU0FBUyxDQUFDLENBQUM7UUFDeEYsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsVUFBQyxDQUFDLEVBQUUsQ0FBQztZQUN2QixJQUFNLE1BQU0sR0FBRyxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQztZQUNyQyxJQUFNLE1BQU0sR0FBRyxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQztZQUNyQyxJQUFJLE1BQU0sS0FBSyxDQUFDLENBQUM7Z0JBQUUsT0FBTyxDQUFDLENBQUM7WUFDNUIsSUFBSSxNQUFNLEtBQUssQ0FBQyxDQUFDO2dCQUFFLE9BQU8sQ0FBQyxDQUFDLENBQUM7WUFDN0IsT0FBTyxNQUFNLEdBQUcsTUFBTSxDQUFDO1FBQzNCLENBQUMsQ0FBQyxDQUFDO0lBRVAsQ0FBQztJQUVELHNDQUFlLEdBQWY7UUFDSSxJQUFNLEtBQUssR0FBRyxDQUFDLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUssQ0FBQyxDQUFDO1FBQzNDLElBQUksQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDLFVBQUMsQ0FBQyxFQUFFLENBQUM7WUFDM0Isc0RBQXNEO1lBQ3RELElBQU0sTUFBTSxHQUFHLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDakQsSUFBTSxNQUFNLEdBQUcsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUNqRCxJQUFJLE1BQU0sS0FBSyxDQUFDLENBQUM7Z0JBQUUsT0FBTyxDQUFDLENBQUM7WUFDNUIsSUFBSSxNQUFNLEtBQUssQ0FBQyxDQUFDO2dCQUFFLE9BQU8sQ0FBQyxDQUFDLENBQUM7WUFDN0IsT0FBTyxNQUFNLEdBQUcsTUFBTSxDQUFDO1FBQzNCLENBQUMsQ0FBQyxDQUFDO0lBQ1AsQ0FBQztJQUVELDhCQUFPLEdBQVA7UUFDSSxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxVQUFDLENBQUMsRUFBRSxDQUFDOztZQUN2QixhQUFhO1lBQ2IsSUFBTSxPQUFPLEdBQUcsUUFBUSxDQUFDLE9BQUEsQ0FBQyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLDBDQUFHLENBQUMsTUFBSyxHQUFHLEVBQUUsRUFBRSxDQUFDLENBQUM7WUFDOUQsSUFBTSxPQUFPLEdBQUcsUUFBUSxDQUFDLE9BQUEsQ0FBQyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLDBDQUFHLENBQUMsTUFBSyxHQUFHLEVBQUUsRUFBRSxDQUFDLENBQUM7WUFDOUQsT0FBTyxPQUFPLEdBQUcsT0FBTyxDQUFDO1FBQzdCLENBQUMsQ0FBQyxDQUFDO0lBQ1AsQ0FBQztJQUVELDRCQUFLLEdBQUw7SUFFQSxDQUFDO0lBRUQsZ0NBQVMsR0FBVDtRQUNJLEVBQUUsQ0FBQyxRQUFRLENBQUMsU0FBUyxDQUFDLFdBQVcsRUFBRSxVQUFDLEdBQUc7WUFDbkMsSUFBSSxHQUFHLEVBQUU7Z0JBQ0wsT0FBTyxDQUFDLEtBQUssQ0FBQyxvQkFBb0IsRUFBRSxHQUFHLENBQUMsQ0FBQzthQUM1QztpQkFBTTtnQkFDSCxxQ0FBcUM7Z0JBQ3JDLEVBQUUsQ0FBQyxRQUFRLENBQUMsU0FBUyxDQUFDLFdBQVcsQ0FBQyxDQUFDO2FBQ3RDO1FBQ0wsQ0FBQyxDQUFDLENBQUM7SUFFUCxDQUFDO0lBRUQsaUNBQVUsR0FBVjtRQUNJLElBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsT0FBTyxDQUFDLENBQUMsY0FBYyxDQUFDLEtBQUssQ0FBQyxDQUFDLFlBQVksQ0FBQyxZQUFZLENBQUMsQ0FBQyxNQUFNLEVBQUM7WUFDekYsSUFBRyxhQUFXLENBQUMsU0FBUyxDQUFDLFNBQVMsSUFBSSxJQUFJLEVBQUM7Z0JBQ3ZDLHlCQUFXLENBQUMsR0FBRyxDQUFDLFNBQVMsQ0FBQyxPQUFPLENBQUMsQ0FBQztnQkFDbkMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxRQUFRLENBQUMsYUFBYSxDQUFDLENBQUMsQ0FBQyxFQUFDLFVBQUMsSUFBSTtnQkFDckMsQ0FBQyxDQUFDLENBQUE7Z0JBQ0YsSUFBRyxhQUFXLENBQUMsU0FBUyxDQUFDLFVBQVUsRUFBQztvQkFDaEMsSUFBSSxVQUFVLEdBQUcsYUFBVyxDQUFDLFNBQVMsQ0FBQyxVQUFVLENBQUM7b0JBQ2xELElBQUksUUFBUSxHQUFHLGFBQVcsQ0FBQyxTQUFTLENBQUMsUUFBUSxDQUFDO29CQUM5QyxJQUFJLElBQUksR0FBRzt3QkFDUCxJQUFJLEVBQUMsVUFBVTt3QkFDZixRQUFRLEVBQUMsUUFBUTt3QkFDakIsTUFBTSxFQUFDLFNBQVM7cUJBQ25CLENBQUE7b0JBQ0QsRUFBRSxDQUFDLEVBQUUsQ0FBQyxRQUFRLENBQUMsWUFBWSxDQUFDLGNBQWMsRUFBQyxJQUFJLENBQUMsQ0FBQztpQkFDcEQ7YUFDSjtZQUNELElBQUksQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLE9BQU8sQ0FBQyxDQUFDLGNBQWMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxZQUFZLENBQUMsWUFBWSxDQUFDLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxDQUFDO1lBQ25HLEVBQUUsQ0FBQyxFQUFFLENBQUMsWUFBWSxDQUFDLFNBQVMsQ0FBQyxVQUFVLENBQUMsUUFBUSxFQUFDLElBQUksQ0FBQyxDQUFDO1lBQ3ZELElBQUksQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLFlBQVksQ0FBQyxDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUM7WUFDckQsSUFBSSxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsWUFBWSxDQUFDLENBQUMsWUFBWSxDQUFDLEVBQUUsQ0FBQyxRQUFRLENBQUMsQ0FBQyxZQUFZLENBQUMsQ0FBQyxFQUFDLElBQUksRUFBQyxLQUFLLENBQUMsQ0FBQztZQUM1RixFQUFFLENBQUMsUUFBUSxDQUFDLFlBQVksQ0FBQyxXQUFXLEVBQUUsVUFBQyxHQUFHLEVBQUUsS0FBSztnQkFDN0MsSUFBSSxHQUFHLEVBQUU7b0JBQ0wsT0FBTyxDQUFDLEtBQUssQ0FBQyxpQkFBaUIsRUFBRSxHQUFHLENBQUMsQ0FBQztvQkFDdEMsT0FBTztpQkFDVjtZQUVMLENBQUMsQ0FBQyxDQUFDO1lBQ0gsVUFBVSxDQUFDO2dCQUNQLEVBQUUsQ0FBQyxRQUFRLENBQUMsU0FBUyxDQUFDLFdBQVcsQ0FBQyxDQUFDO1lBQ3ZDLENBQUMsRUFBRSxJQUFJLENBQUMsQ0FBQztTQUNaO0lBQ0wsQ0FBQztJQUdELDJDQUFvQixHQUFwQixVQUFxQixLQUFnQixFQUFFLFFBQW9CO1FBQTNELGlCQXdCQztRQXZCRyxJQUFNLFVBQVUsR0FBRyxFQUFFLENBQUMsQ0FBQyxZQUFZO1FBQ25DLElBQUksS0FBSyxHQUFHLENBQUMsQ0FBQztRQUVkLElBQU0sWUFBWSxHQUFHO1lBQ2pCLElBQUksS0FBSyxHQUFHLENBQUMsQ0FBQztZQUNkLE9BQU8sS0FBSyxHQUFHLEtBQUssQ0FBQyxNQUFNLElBQUksS0FBSyxHQUFHLFVBQVUsRUFBRTtnQkFDL0MsSUFBTSxJQUFJLEdBQUcsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDO2dCQUMxQixJQUFJLElBQUksRUFBRTtvQkFFTixJQUFJLENBQUMsTUFBTSxHQUFHLEtBQUssQ0FBQztpQkFDdkI7Z0JBQ0QsS0FBSyxFQUFFLENBQUM7Z0JBQ1IsS0FBSyxFQUFFLENBQUM7YUFDWDtZQUVELElBQUksS0FBSyxHQUFHLEtBQUssQ0FBQyxNQUFNLEVBQUU7Z0JBQ3RCLEtBQUksQ0FBQyxZQUFZLENBQUMsWUFBWSxFQUFFLENBQUMsQ0FBQyxDQUFDO2FBQ3RDO2lCQUFNO2dCQUNILFFBQVEsRUFBRSxDQUFDO2FBQ2Q7UUFDTCxDQUFDLENBQUM7UUFFRixZQUFZLEVBQUUsQ0FBQztJQUNuQixDQUFDO0lBRUQsYUFBYTtJQUNiLHlDQUFrQixHQUFsQjtRQUNJLElBQU0sUUFBUSxHQUFHLEVBQUUsQ0FBQyxRQUFRLENBQUMsUUFBUSxFQUFFLENBQUMsUUFBUSxDQUFDO1FBQ2pELElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxRQUFRLEVBQUU7WUFDaEMsRUFBRSxDQUFDLFFBQVEsQ0FBQyxTQUFTLENBQUMsV0FBVyxDQUFDLENBQUM7UUFDdkMsQ0FBQyxDQUFDLENBQUM7SUFDUCxDQUFDO0lBRUQsZ0NBQVMsR0FBVDtRQUNJLEVBQUUsQ0FBQyxFQUFFLENBQUMsWUFBWSxDQUFDLFNBQVMsQ0FBQyxVQUFVLENBQUMsY0FBYyxFQUFDLElBQUksQ0FBQyxDQUFDO1FBQzdELElBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxZQUFZLENBQUMsWUFBWSxDQUFDLENBQUMsTUFBTSxFQUFDO1lBQzVDLElBQUksQ0FBQyxLQUFLLENBQUMsWUFBWSxDQUFDLFlBQVksQ0FBQyxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsQ0FBQztZQUN0RCxJQUFJLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFDO1lBQ2hELGFBQVcsQ0FBQyxTQUFTLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQztTQUN0QztJQUVMLENBQUM7SUFFRCxpQ0FBVSxHQUFWO1FBQ0ksRUFBRSxDQUFDLEVBQUUsQ0FBQyxZQUFZLENBQUMsU0FBUyxDQUFDLFVBQVUsQ0FBQyxjQUFjLEVBQUMsSUFBSSxDQUFDLENBQUM7UUFDN0QsSUFBSSxDQUFDLEtBQUssQ0FBQyxZQUFZLENBQUMsWUFBWSxDQUFDLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ3JELElBQUksQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLE9BQU8sQ0FBQyxDQUFDLE1BQU0sR0FBRyxLQUFLLENBQUM7UUFDakQsSUFBRyxhQUFXLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsY0FBYyxDQUFDLEtBQUssQ0FBQyxDQUFDLE1BQU0sSUFBSSxLQUFLLEVBQUM7WUFDdkUsYUFBVyxDQUFDLFNBQVMsQ0FBQyxLQUFLLEdBQUcsS0FBSyxDQUFDO1NBQ3ZDO0lBQ0wsQ0FBQztJQUVELGtDQUFXLEdBQVgsVUFBWSxJQUFJO1FBQ1osYUFBVyxDQUFDLFNBQVMsQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDO1FBQ25DLElBQUksQ0FBQyxPQUFPLEdBQUcsSUFBSSxDQUFDO1FBQ3BCLElBQUksVUFBVSxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLE1BQU0sQ0FBQyxDQUFDLGNBQWMsQ0FBQyxZQUFZLENBQUMsQ0FBQztRQUMvRSxVQUFVLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQztRQUN6QixVQUFVLENBQUMsY0FBYyxDQUFDLFFBQVEsQ0FBQyxDQUFDLE1BQU0sR0FBRyxLQUFLLENBQUM7UUFDbkQsVUFBVSxDQUFDLGNBQWMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxNQUFNLEdBQUcsS0FBSyxDQUFDO1FBQ25ELFVBQVUsQ0FBQyxjQUFjLENBQUMsT0FBTyxDQUFDLENBQUMsTUFBTSxHQUFHLEtBQUssQ0FBQztRQUNsRCxVQUFVLENBQUMsY0FBYyxDQUFDLFNBQVMsQ0FBQyxDQUFDLFlBQVksQ0FBQyxZQUFZLENBQUMsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDL0UsVUFBVSxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFDO0lBQ2xELENBQUM7SUFFRCwrQkFBUSxHQUFSO1FBQ0ksRUFBRSxDQUFDLEVBQUUsQ0FBQyxZQUFZLENBQUMsU0FBUyxDQUFDLFVBQVUsQ0FBQyxXQUFXLEVBQUMsSUFBSSxDQUFDLENBQUM7UUFDMUQsSUFBSSxVQUFVLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsTUFBTSxDQUFDLENBQUMsY0FBYyxDQUFDLFlBQVksQ0FBQyxDQUFDO1FBQy9FLElBQUcsVUFBVSxDQUFDLGNBQWMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxZQUFZLENBQUMsWUFBWSxDQUFDLENBQUMsTUFBTSxFQUFDO1lBQ3BFLFVBQVUsQ0FBQyxjQUFjLENBQUMsU0FBUyxDQUFDLENBQUMsWUFBWSxDQUFDLFlBQVksQ0FBQyxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsQ0FBQztZQUNoRixJQUFHLElBQUksQ0FBQyxPQUFPLElBQUksUUFBUTtnQkFDekIsYUFBVyxDQUFDLFNBQVMsQ0FBQyxTQUFTLEVBQUUsQ0FBQztpQkFDL0IsSUFBRyxJQUFJLENBQUMsT0FBTyxJQUFJLFFBQVE7Z0JBQzlCLGFBQVcsQ0FBQyxTQUFTLENBQUMsU0FBUyxFQUFFLENBQUM7aUJBQy9CLElBQUcsSUFBSSxDQUFDLE9BQU8sSUFBSSxPQUFPO2dCQUM3QixhQUFXLENBQUMsU0FBUyxDQUFDLFFBQVEsRUFBRSxDQUFDO1NBQ3hDO0lBQ0wsQ0FBQztJQUlELG1DQUFZLEdBQVo7UUFDSSxhQUFXLENBQUMsU0FBUyxDQUFDLEtBQUssR0FBRyxLQUFLLENBQUM7UUFDcEMsSUFBSSxTQUFTLEdBQUcsYUFBVyxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLGNBQWMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxjQUFjLENBQUMsU0FBUyxDQUFDLENBQUM7UUFDckcsSUFBSSxTQUFTLEdBQUcsYUFBVyxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLGNBQWMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxjQUFjLENBQUMsWUFBWSxDQUFDLENBQUM7UUFDeEcsSUFBSSxRQUFRLEdBQUcsYUFBVyxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLGNBQWMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxjQUFjLENBQUMsVUFBVSxDQUFDLENBQUM7UUFDckcsSUFBRyxJQUFJLENBQUMsT0FBTyxJQUFJLFFBQVE7WUFBRSxTQUFTLENBQUMsWUFBWSxDQUFDLFlBQVksQ0FBQyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQzthQUM1RSxJQUFHLElBQUksQ0FBQyxPQUFPLElBQUksUUFBUTtZQUFFLFNBQVMsQ0FBQyxZQUFZLENBQUMsWUFBWSxDQUFDLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDO2FBQ2pGLElBQUcsSUFBSSxDQUFDLE9BQU8sSUFBSSxPQUFPO1lBQUUsUUFBUSxDQUFDLFlBQVksQ0FBQyxZQUFZLENBQUMsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUM7UUFFcEYsSUFBSSxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsTUFBTSxDQUFDLENBQUMsY0FBYyxDQUFDLFlBQVksQ0FBQyxDQUFDLE1BQU0sR0FBRyxLQUFLLENBQUM7SUFDakYsQ0FBQztJQUVELDZCQUFNLEdBQU4sVUFBUSxFQUFFO0lBRVYsQ0FBQztJQW5RRDtRQURDLFFBQVEsQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDOytDQUNJO0lBR3ZCO1FBREMsUUFBUTs4Q0FDYztJQUd2QjtRQURDLFFBQVEsQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDO2dEQUNLO0lBR3ZCO1FBREMsUUFBUSxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUM7Z0RBQ0s7SUFHdkI7UUFEQyxRQUFRLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQztvREFDUztJQUczQjtRQURDLFFBQVEsQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDOytDQUNJO0lBSXRCO1FBREMsUUFBUSxDQUFDLEVBQUMsSUFBSSxFQUFFLENBQUMsRUFBRSxDQUFDLE1BQU0sQ0FBQyxFQUFFLE9BQU8sRUFBQyxNQUFNLEVBQUMsQ0FBQztxREFDVjtJQUdwQztRQURDLFFBQVEsQ0FBQyxFQUFDLElBQUksRUFBRSxDQUFDLEVBQUUsQ0FBQyxNQUFNLENBQUMsRUFBRSxPQUFPLEVBQUMsTUFBTSxFQUFDLENBQUM7cURBQ1Y7SUF6Qm5CLFlBQVk7UUFEaEMsT0FBTztPQUNhLFlBQVksQ0F1UWhDO0lBQUQsbUJBQUM7Q0F2UUQsQUF1UUMsQ0F2UXlDLEVBQUUsQ0FBQyxTQUFTLEdBdVFyRDtrQkF2UW9CLFlBQVkiLCJmaWxlIjoiIiwic291cmNlUm9vdCI6Ii8iLCJzb3VyY2VzQ29udGVudCI6WyIvLyBMZWFybiBUeXBlU2NyaXB0OlxyXG4vLyAgLSBodHRwczovL2RvY3MuY29jb3MuY29tL2NyZWF0b3IvbWFudWFsL2VuL3NjcmlwdGluZy90eXBlc2NyaXB0Lmh0bWxcclxuLy8gTGVhcm4gQXR0cmlidXRlOlxyXG4vLyAgLSBodHRwczovL2RvY3MuY29jb3MuY29tL2NyZWF0b3IvbWFudWFsL2VuL3NjcmlwdGluZy9yZWZlcmVuY2UvYXR0cmlidXRlcy5odG1sXHJcbi8vIExlYXJuIGxpZmUtY3ljbGUgY2FsbGJhY2tzOlxyXG4vLyAgLSBodHRwczovL2RvY3MuY29jb3MuY29tL2NyZWF0b3IvbWFudWFsL2VuL3NjcmlwdGluZy9saWZlLWN5Y2xlLWNhbGxiYWNrcy5odG1sXHJcblxyXG5pbXBvcnQgTWFwQ29ucm9sZXIgZnJvbSBcIi4vTWFwXCI7XHJcbmltcG9ydCB7IE1pbmlHYW1lU2RrIH0gZnJvbSBcIi4vU2RrL01pbmlHYW1lU2RrXCI7XHJcblxyXG5jb25zdCB7Y2NjbGFzcywgcHJvcGVydHl9ID0gY2MuX2RlY29yYXRvcjtcclxuXHJcbkBjY2NsYXNzXHJcbmV4cG9ydCBkZWZhdWx0IGNsYXNzIFNjZW5lTWFuYWdlciBleHRlbmRzIGNjLkNvbXBvbmVudCB7XHJcblxyXG4gICAgQHByb3BlcnR5KGNjLkxhYmVsKVxyXG4gICAgbGFiZWw6IGNjLkxhYmVsID0gbnVsbDtcclxuXHJcbiAgICBAcHJvcGVydHlcclxuICAgIHRleHQ6IHN0cmluZyA9ICdoZWxsbyc7XHJcblxyXG4gICAgQHByb3BlcnR5KGNjLk5vZGUpXHJcbiAgICBmcmVlemU6IGNjLk5vZGUgPSBudWxsO1xyXG5cclxuICAgIEBwcm9wZXJ0eShjYy5Ob2RlKVxyXG4gICAgaGFtbWVyOiBjYy5Ob2RlID0gbnVsbDtcclxuXHJcbiAgICBAcHJvcGVydHkoY2MuTm9kZSlcclxuICAgIG1hZ2ljX3dhbmQ6IGNjLk5vZGUgPSBudWxsO1xyXG5cclxuICAgIEBwcm9wZXJ0eShjYy5Ob2RlKVxyXG4gICAgcGF1c2U6IGNjLk5vZGUgPSBudWxsO1xyXG5cclxuXHJcbiAgICBAcHJvcGVydHkoe3R5cGU6IFtjYy5QcmVmYWJdLCB0b29sdGlwOlwi5pa55Z2X5pWw57uEXCJ9KVxyXG4gICAgQmxvY2tfQXJyYXkgOiBBcnJheTxjYy5QcmVmYWI+ID0gW107XHJcblxyXG4gICAgQHByb3BlcnR5KHt0eXBlOiBbY2MuUHJlZmFiXSwgdG9vbHRpcDpcIuWimeWjgeaVsOe7hFwifSlcclxuICAgIFdhbGxfUHJlZmFiIDogQXJyYXk8Y2MuUHJlZmFiPiA9IFtdO1xyXG5cclxuICAgIHBhcnRpY2xlRWZmZWN0czogY2MuUGFydGljbGVBc3NldFtdO1xyXG4gICAgLy8gQHByb3BlcnR5KHt0eXBlOiBbY2MuUGFydGljbGVTeXN0ZW1dLCB0b29sdGlwOlwi57KS5a2Q5pWw57uEXCJ9KVxyXG4gICAgLy8gcGFydGljbGVFZmZlY3RzIDogQXJyYXk8Y2MuUGFydGljbGVTeXN0ZW0+ID0gW107XHJcblxyXG4gICAgbG9hZDEgOmJvb2xlYW4gPSBmYWxzZTtcclxuICAgIGxvYWQyIDpib29sZWFuID0gZmFsc2U7XHJcbiAgICBsb2FkMyA6Ym9vbGVhbiA9IGZhbHNlO1xyXG4gICAgYnRuTmFtZTogc3RyaW5nID0gJyc7XHJcbiAgICBjYWxsQmFjazogYW55O1xyXG5cclxuICAgIFxyXG4gICAgLy8gTElGRS1DWUNMRSBDQUxMQkFDS1M6XHJcblxyXG4gICAgb25Mb2FkICgpIHtcclxuICAgICAgICBjYy5nYW1lLnNldEZyYW1lUmF0ZSg2Myk7IFxyXG4gICAgICAgIHRoaXMuY2hhbmdlQmcoKTtcclxuXHJcbiAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgICAgICAgIGNjLmRpcmVjdG9yLnByZWxvYWRTY2VuZShcIkhvbWVTY2VuZVwiLCAoZXJyKSA9PiB7XHJcbiAgICAgICAgICAgICAgICBpZiAoZXJyKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgLy8gY29uc29sZS5lcnJvcign6aKE5Yqg6L29IEhvbWVTY2VuZSDlnLrmma/lpLHotKU6JywgZXJyKTtcclxuICAgICAgICAgICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAvLyBjb25zb2xlLmxvZygn5oiQ5Yqf6aKE5Yqg6L29IEhvbWVTY2VuZSDlnLrmma8nKTtcclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgfSwgMTAwMCk7XHJcbiAgICAgICAgXHJcbiAgICB9XHJcbiAgICBcclxuICAgIGNoYW5nZUJnKCl7XHJcbiAgICAgICAgbGV0IG51bWJlciA9IE1hdGguZmxvb3IoTWF0aC5yYW5kb20oKSAqIDgpICsgMTtcclxuICAgICAgICBjb25zdCBwYXRoID0gJ2JnL2JnJyArIG51bWJlcjtcclxuICAgICAgICBjYy5yZXNvdXJjZXMubG9hZChwYXRoLCBjYy5TcHJpdGVGcmFtZSwgKGVyciwgc3ByaXRlRnJhbWU6IGNjLlNwcml0ZUZyYW1lKSA9PiB7XHJcbiAgICAgICAgICAgIGlmIChlcnIpIHtcclxuICAgICAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoJ+WKqOaAgeWKoOi9veiDjOaZr+WbvuWksei0pTonLCBlcnIpO1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgICAgICB9IFxyXG4gICAgICAgICAgICB0aGlzLm5vZGUuZ2V0Q2hpbGRCeU5hbWUoXCJHYW1lXCIpLmdldENoaWxkQnlOYW1lKFwiYmdcIikuZ2V0Q29tcG9uZW50KGNjLlNwcml0ZSkuc3ByaXRlRnJhbWUgPSBzcHJpdGVGcmFtZTtcclxuICAgICAgICB9KVxyXG4gICAgfVxyXG5cclxuICAgIGxvYWRQYXJ0aWNsZUVmZmVjdHMoKSB7XHJcbiAgICAgICAgY29uc3QgcGF0aCA9ICdQYXJ0aWNsZSc7XHJcbiAgICAgICAgY2MucmVzb3VyY2VzLmxvYWREaXIocGF0aCwgY2MuUGFydGljbGVBc3NldCwgKGVyciwgYXNzZXRzOiBjYy5QYXJ0aWNsZUFzc2V0W10pID0+IHtcclxuICAgICAgICAgICAgaWYgKGVycikge1xyXG4gICAgICAgICAgICAgICAgY29uc29sZS5lcnJvcign5Yqo5oCB5Yqg6L2957KS5a2Q54m55pWI5aSx6LSlOicsIGVycik7XHJcbiAgICAgICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgIHRoaXMucGFydGljbGVFZmZlY3RzID0gYXNzZXRzO1xyXG4gICAgICAgICAgICB0aGlzLnNldFBhcnRpY2xlU29ydCgpO1xyXG4gICAgICAgICAgICB0aGlzLmxvYWQzID0gdHJ1ZTtcclxuICAgICAgICAgICAgLy9jb25zb2xlLmxvZygn57KS5a2Q54m55pWI5Yqg6L295oiQ5Yqf77yM5YWx5Yqg6L295LqGJywgdGhpcy5wYXJ0aWNsZUVmZmVjdHMubGVuZ3RoLCAn5Liq57KS5a2Q54m55pWIJyk7XHJcbiAgICAgICAgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgc2V0V2FsbFByZWZhYlNvcnQoKSB7XHJcbiAgICAgICAgY29uc3Qgb3JkZXIgPSBbJ2Rvd24nLCAnZG93bkxlZnQnLCAnZG93blJpZ2h0JywgJ2xlZnQnLCdyaWdodCcsJ3VwJywndXBMZWZ0JywndXBSaWdodCddO1xyXG4gICAgICAgIHRoaXMuV2FsbF9QcmVmYWIuc29ydCgoYSwgYikgPT4ge1xyXG4gICAgICAgICAgICBjb25zdCBpbmRleEEgPSBvcmRlci5pbmRleE9mKGEubmFtZSk7XHJcbiAgICAgICAgICAgIGNvbnN0IGluZGV4QiA9IG9yZGVyLmluZGV4T2YoYi5uYW1lKTtcclxuICAgICAgICAgICAgaWYgKGluZGV4QSA9PT0gLTEpIHJldHVybiAxO1xyXG4gICAgICAgICAgICBpZiAoaW5kZXhCID09PSAtMSkgcmV0dXJuIC0xO1xyXG4gICAgICAgICAgICByZXR1cm4gaW5kZXhBIC0gaW5kZXhCO1xyXG4gICAgICAgIH0pO1xyXG4gICAgICAgIFxyXG4gICAgfVxyXG5cclxuICAgIHNldFBhcnRpY2xlU29ydCgpIHtcclxuICAgICAgICBjb25zdCBvcmRlciA9IFsndG9wJywgJ2JvdCcsICdyaWcnLCAnbGVmJ107XHJcbiAgICAgICAgdGhpcy5wYXJ0aWNsZUVmZmVjdHMuc29ydCgoYSwgYikgPT4ge1xyXG4gICAgICAgICAgICAvLyBjb25zb2xlLmxvZyhhLm5hbWUuc3Vic3RyKDAsMyksYi5uYW1lLnN1YnN0cigwLDMpKTtcclxuICAgICAgICAgICAgY29uc3QgaW5kZXhBID0gb3JkZXIuaW5kZXhPZihhLm5hbWUuc3Vic3RyKDAsMykpO1xyXG4gICAgICAgICAgICBjb25zdCBpbmRleEIgPSBvcmRlci5pbmRleE9mKGIubmFtZS5zdWJzdHIoMCwzKSk7XHJcbiAgICAgICAgICAgIGlmIChpbmRleEEgPT09IC0xKSByZXR1cm4gMTtcclxuICAgICAgICAgICAgaWYgKGluZGV4QiA9PT0gLTEpIHJldHVybiAtMTtcclxuICAgICAgICAgICAgcmV0dXJuIGluZGV4QSAtIGluZGV4QjtcclxuICAgICAgICB9KTtcclxuICAgIH1cclxuXHJcbiAgICBzZXRTb3J0KCl7XHJcbiAgICAgICAgdGhpcy5CbG9ja19BcnJheS5zb3J0KChhLCBiKSA9PiB7XHJcbiAgICAgICAgICAgIC8vIOS7juWQjeensOS4reaPkOWPluaVsOWtl+mDqOWIhlxyXG4gICAgICAgICAgICBjb25zdCBudW1iZXJBID0gcGFyc2VJbnQoYS5uYW1lLm1hdGNoKC9cXGQrLyk/LlswXSB8fCAnMCcsIDEwKTtcclxuICAgICAgICAgICAgY29uc3QgbnVtYmVyQiA9IHBhcnNlSW50KGIubmFtZS5tYXRjaCgvXFxkKy8pPy5bMF0gfHwgJzAnLCAxMCk7XHJcbiAgICAgICAgICAgIHJldHVybiBudW1iZXJBIC0gbnVtYmVyQjtcclxuICAgICAgICB9KTtcclxuICAgIH1cclxuXHJcbiAgICBzdGFydCAoKSB7XHJcblxyXG4gICAgfVxyXG5cclxuICAgIHN0YXJ0R2FtZSgpe1xyXG4gICAgICAgIGNjLmRpcmVjdG9yLmxvYWRTY2VuZShcIkhvbWVTY2VuZVwiLCAoZXJyKSA9PiB7XHJcbiAgICAgICAgICAgIGlmIChlcnIpIHtcclxuICAgICAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoJ+WKoOi9vSBIb21lU2NlbmUg5Zy65pmv5aSx6LSlOicsIGVycik7XHJcbiAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAvLyBjb25zb2xlLmxvZygn5oiQ5Yqf5YiH5o2i5YiwIEhvbWVTY2VuZSDlnLrmma8nKTtcclxuICAgICAgICAgICAgICAgIGNjLmRpcmVjdG9yLmxvYWRTY2VuZShcIkhvbWVTY2VuZVwiKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH0pO1xyXG5cclxuICAgIH1cclxuXHJcbiAgICByZXR1cm5Ib21lKCl7XHJcbiAgICAgICAgaWYodGhpcy5ub2RlLmdldENoaWxkQnlOYW1lKFwiUGF1c2VcIikuZ2V0Q2hpbGRCeU5hbWUoXCJidG5cIikuZ2V0Q29tcG9uZW50KFwiYnRuQ29udHJvbFwiKS5fdG91Y2gpe1xyXG4gICAgICAgICAgICBpZihNYXBDb25yb2xlci5faW5zdGFuY2UuZ2FtZVN0YXJ0ID09IHRydWUpe1xyXG4gICAgICAgICAgICAgICAgTWluaUdhbWVTZGsuQVBJLnNob3dUb2FzdChcIuS9k+WKm+WAvOWHj+WwkVwiKTtcclxuICAgICAgICAgICAgICAgIGNjLmZ4LkdhbWVUb29sLnNldFVzZXJIZWFsdGgoLTEsKGRhdGEpPT57XHJcbiAgICAgICAgICAgICAgICB9KVxyXG4gICAgICAgICAgICAgICAgaWYoTWFwQ29ucm9sZXIuX2luc3RhbmNlLmNvdW50X1RpbWUpe1xyXG4gICAgICAgICAgICAgICAgICAgIGxldCBjb3VudF9UaW1lID0gTWFwQ29ucm9sZXIuX2luc3RhbmNlLmNvdW50X1RpbWU7XHJcbiAgICAgICAgICAgICAgICAgICAgbGV0IGFkZF9UaW1lID0gTWFwQ29ucm9sZXIuX2luc3RhbmNlLmFkZF9UaW1lO1xyXG4gICAgICAgICAgICAgICAgICAgIGxldCBkYXRhID0ge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB0aW1lOmNvdW50X1RpbWUsICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGFkZF9UaW1lOmFkZF9UaW1lLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICByZXN1bHQ6XCJnaXZlX3VwXCJcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgY2MuZnguR2FtZVRvb2wuc2h1c2h1X1RyYWNrKFwiZmluaXNoX3N0YWdlXCIsZGF0YSk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgdGhpcy5ub2RlLmdldENoaWxkQnlOYW1lKFwiUGF1c2VcIikuZ2V0Q2hpbGRCeU5hbWUoXCJidG5cIikuZ2V0Q29tcG9uZW50KFwiYnRuQ29udHJvbFwiKS5zZXRUb3VjaChmYWxzZSk7XHJcbiAgICAgICAgICAgIGNjLmZ4LkF1ZGlvTWFuYWdlci5faW5zdGFuY2UucGxheUVmZmVjdChcInpodWFuMVwiLG51bGwpO1xyXG4gICAgICAgICAgICB0aGlzLm5vZGUuZ2V0Q2hpbGRCeU5hbWUoXCJ6aHVhbmNoYW5nXCIpLmFjdGl2ZSA9IHRydWU7XHJcbiAgICAgICAgICAgIHRoaXMubm9kZS5nZXRDaGlsZEJ5TmFtZShcInpodWFuY2hhbmdcIikuZ2V0Q29tcG9uZW50KHNwLlNrZWxldG9uKS5zZXRBbmltYXRpb24oMSxcInVwXCIsZmFsc2UpO1xyXG4gICAgICAgICAgICBjYy5kaXJlY3Rvci5wcmVsb2FkU2NlbmUoXCJIb21lU2NlbmVcIiwgKGVyciwgYXNzZXQpID0+IHtcclxuICAgICAgICAgICAgICAgIGlmIChlcnIpIHtcclxuICAgICAgICAgICAgICAgICAgICBjb25zb2xlLmVycm9yKCfliqjmgIHliqDovb0gUHJlZmFiIOWksei0pTonLCBlcnIpO1xyXG4gICAgICAgICAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICBcclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgY2MuZGlyZWN0b3IubG9hZFNjZW5lKFwiSG9tZVNjZW5lXCIpO1xyXG4gICAgICAgICAgICB9LCAxMjAwKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG5cclxuICAgIGRlc3Ryb3lOb2Rlc0luRnJhbWVzKG5vZGVzOiBjYy5Ob2RlW10sIGNhbGxiYWNrOiAoKSA9PiB2b2lkKSB7XHJcbiAgICAgICAgY29uc3QgQkFUQ0hfU0laRSA9IDEwOyAvLyDmr4/luKfplIDmr4HnmoToioLngrnmlbDph49cclxuICAgICAgICBsZXQgaW5kZXggPSAwO1xyXG5cclxuICAgICAgICBjb25zdCBkZXN0cm95QmF0Y2ggPSAoKSA9PiB7XHJcbiAgICAgICAgICAgIGxldCBjb3VudCA9IDA7XHJcbiAgICAgICAgICAgIHdoaWxlIChpbmRleCA8IG5vZGVzLmxlbmd0aCAmJiBjb3VudCA8IEJBVENIX1NJWkUpIHtcclxuICAgICAgICAgICAgICAgIGNvbnN0IG5vZGUgPSBub2Rlc1tpbmRleF07XHJcbiAgICAgICAgICAgICAgICBpZiAobm9kZSkge1xyXG5cclxuICAgICAgICAgICAgICAgICAgICBub2RlLmFjdGl2ZSA9IGZhbHNlO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgaW5kZXgrKztcclxuICAgICAgICAgICAgICAgIGNvdW50Kys7XHJcbiAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgIGlmIChpbmRleCA8IG5vZGVzLmxlbmd0aCkge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5zY2hlZHVsZU9uY2UoZGVzdHJveUJhdGNoLCA2KTtcclxuICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgIGNhbGxiYWNrKCk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9O1xyXG5cclxuICAgICAgICBkZXN0cm95QmF0Y2goKTtcclxuICAgIH1cclxuXHJcbiAgICAvLyDmlLnov5vlkI7nmoTliIfmjaLlnLrmma/mlrnms5VcclxuICAgIHN3aXRjaFRvRW1wdHlTY2VuZSgpIHtcclxuICAgICAgICBjb25zdCBhbGxOb2RlcyA9IGNjLmRpcmVjdG9yLmdldFNjZW5lKCkuY2hpbGRyZW47XHJcbiAgICAgICAgdGhpcy5kZXN0cm95Tm9kZXNJbkZyYW1lcyhhbGxOb2RlcywgKCkgPT4ge1xyXG4gICAgICAgICAgICBjYy5kaXJlY3Rvci5sb2FkU2NlbmUoXCJIb21lU2NlbmVcIik7XHJcbiAgICAgICAgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgb3BlblBhdXNlKCl7XHJcbiAgICAgICAgY2MuZnguQXVkaW9NYW5hZ2VyLl9pbnN0YW5jZS5wbGF5RWZmZWN0KFwiYW5uaXVfbGl0dGxlXCIsbnVsbCk7XHJcbiAgICAgICAgaWYodGhpcy5wYXVzZS5nZXRDb21wb25lbnQoXCJidG5Db250cm9sXCIpLl90b3VjaCl7XHJcbiAgICAgICAgICAgIHRoaXMucGF1c2UuZ2V0Q29tcG9uZW50KFwiYnRuQ29udHJvbFwiKS5zZXRUb3VjaChmYWxzZSk7XHJcbiAgICAgICAgICAgIHRoaXMubm9kZS5nZXRDaGlsZEJ5TmFtZShcIlBhdXNlXCIpLmFjdGl2ZSA9IHRydWU7XHJcbiAgICAgICAgICAgIE1hcENvbnJvbGVyLl9pbnN0YW5jZS5wYXVzZSA9IHRydWU7XHJcbiAgICAgICAgfVxyXG5cclxuICAgIH1cclxuXHJcbiAgICBjbG9zZVBhdXNlKCl7XHJcbiAgICAgICAgY2MuZnguQXVkaW9NYW5hZ2VyLl9pbnN0YW5jZS5wbGF5RWZmZWN0KFwiYW5uaXVfbGl0dGxlXCIsbnVsbCk7XHJcbiAgICAgICAgdGhpcy5wYXVzZS5nZXRDb21wb25lbnQoXCJidG5Db250cm9sXCIpLnNldFRvdWNoKHRydWUpO1xyXG4gICAgICAgIHRoaXMubm9kZS5nZXRDaGlsZEJ5TmFtZShcIlBhdXNlXCIpLmFjdGl2ZSA9IGZhbHNlOyBcclxuICAgICAgICBpZihNYXBDb25yb2xlci5faW5zdGFuY2Uubm9kZS5wYXJlbnQuZ2V0Q2hpbGRCeU5hbWUoXCJJY2VcIikuYWN0aXZlID09IGZhbHNlKXtcclxuICAgICAgICAgICAgTWFwQ29ucm9sZXIuX2luc3RhbmNlLnBhdXNlID0gZmFsc2U7XHJcbiAgICAgICAgfSBcclxuICAgIH1cclxuXHJcbiAgICBvcGVuUHJvcEJ1eShuYW1lKXtcclxuICAgICAgICBNYXBDb25yb2xlci5faW5zdGFuY2UucGF1c2UgPSB0cnVlO1xyXG4gICAgICAgIHRoaXMuYnRuTmFtZSA9IG5hbWU7XHJcbiAgICAgICAgbGV0IHByb3BXaW5kb3cgPSB0aGlzLm5vZGUuZ2V0Q2hpbGRCeU5hbWUoXCJHYW1lXCIpLmdldENoaWxkQnlOYW1lKFwicHJvcFdpbmRvd1wiKTtcclxuICAgICAgICBwcm9wV2luZG93LmFjdGl2ZSA9IHRydWU7XHJcbiAgICAgICAgcHJvcFdpbmRvdy5nZXRDaGlsZEJ5TmFtZShcImZyZWV6ZVwiKS5hY3RpdmUgPSBmYWxzZTtcclxuICAgICAgICBwcm9wV2luZG93LmdldENoaWxkQnlOYW1lKFwiaGFtbWVyXCIpLmFjdGl2ZSA9IGZhbHNlO1xyXG4gICAgICAgIHByb3BXaW5kb3cuZ2V0Q2hpbGRCeU5hbWUoXCJtYWdpY1wiKS5hY3RpdmUgPSBmYWxzZTtcclxuICAgICAgICBwcm9wV2luZG93LmdldENoaWxkQnlOYW1lKFwiYnV5X0J0blwiKS5nZXRDb21wb25lbnQoXCJidG5Db250cm9sXCIpLnNldFRvdWNoKHRydWUpO1xyXG4gICAgICAgIHByb3BXaW5kb3cuZ2V0Q2hpbGRCeU5hbWUobmFtZSkuYWN0aXZlID0gdHJ1ZTtcclxuICAgIH1cclxuXHJcbiAgICBjbGlja0J0bigpe1xyXG4gICAgICAgIGNjLmZ4LkF1ZGlvTWFuYWdlci5faW5zdGFuY2UucGxheUVmZmVjdChcImFubml1X0JpZ1wiLG51bGwpO1xyXG4gICAgICAgIGxldCBwcm9wV2luZG93ID0gdGhpcy5ub2RlLmdldENoaWxkQnlOYW1lKFwiR2FtZVwiKS5nZXRDaGlsZEJ5TmFtZShcInByb3BXaW5kb3dcIik7XHJcbiAgICAgICAgaWYocHJvcFdpbmRvdy5nZXRDaGlsZEJ5TmFtZShcImJ1eV9CdG5cIikuZ2V0Q29tcG9uZW50KFwiYnRuQ29udHJvbFwiKS5fdG91Y2gpe1xyXG4gICAgICAgICAgICAgIHByb3BXaW5kb3cuZ2V0Q2hpbGRCeU5hbWUoXCJidXlfQnRuXCIpLmdldENvbXBvbmVudChcImJ0bkNvbnRyb2xcIikuc2V0VG91Y2goZmFsc2UpO1xyXG4gICAgICAgICAgICAgIGlmKHRoaXMuYnRuTmFtZSA9PSBcImZyZWV6ZVwiKVxyXG4gICAgICAgICAgICAgICAgTWFwQ29ucm9sZXIuX2luc3RhbmNlLmJ1eUZyZWV6ZSgpO1xyXG4gICAgICAgICAgICAgIGVsc2UgaWYodGhpcy5idG5OYW1lID09IFwiaGFtbWVyXCIpXHJcbiAgICAgICAgICAgICAgICBNYXBDb25yb2xlci5faW5zdGFuY2UuYnV5SGFtbWVyKCk7XHJcbiAgICAgICAgICAgICAgZWxzZSBpZih0aGlzLmJ0bk5hbWUgPT0gXCJtYWdpY1wiKVxyXG4gICAgICAgICAgICAgICAgTWFwQ29ucm9sZXIuX2luc3RhbmNlLmJ1eU1hZ2ljKCk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuXHJcblxyXG4gICAgY2xvc2VQcm9wQnV5KCl7XHJcbiAgICAgICAgTWFwQ29ucm9sZXIuX2luc3RhbmNlLnBhdXNlID0gZmFsc2U7XHJcbiAgICAgICAgbGV0IGZyZWV6ZUJ0biA9IE1hcENvbnJvbGVyLl9pbnN0YW5jZS5ub2RlLnBhcmVudC5nZXRDaGlsZEJ5TmFtZShcIkJvdHRvbVwiKS5nZXRDaGlsZEJ5TmFtZShcInRpbWVCdG5cIik7XHJcbiAgICAgICAgbGV0IGhhbW1lckJ0biA9IE1hcENvbnJvbGVyLl9pbnN0YW5jZS5ub2RlLnBhcmVudC5nZXRDaGlsZEJ5TmFtZShcIkJvdHRvbVwiKS5nZXRDaGlsZEJ5TmFtZShcImRlc3Ryb3lCdG5cIik7XHJcbiAgICAgICAgbGV0IG1hZ2ljQnRuID0gTWFwQ29ucm9sZXIuX2luc3RhbmNlLm5vZGUucGFyZW50LmdldENoaWxkQnlOYW1lKFwiQm90dG9tXCIpLmdldENoaWxkQnlOYW1lKFwibWFnaWNCdG5cIik7XHJcbiAgICAgICAgaWYodGhpcy5idG5OYW1lID09IFwiZnJlZXplXCIpIGZyZWV6ZUJ0bi5nZXRDb21wb25lbnQoXCJidG5Db250cm9sXCIpLnNldFRvdWNoKHRydWUpO1xyXG4gICAgICAgIGVsc2UgaWYodGhpcy5idG5OYW1lID09IFwiaGFtbWVyXCIpIGhhbW1lckJ0bi5nZXRDb21wb25lbnQoXCJidG5Db250cm9sXCIpLnNldFRvdWNoKHRydWUpOyBcclxuICAgICAgICBlbHNlIGlmKHRoaXMuYnRuTmFtZSA9PSBcIm1hZ2ljXCIpIG1hZ2ljQnRuLmdldENvbXBvbmVudChcImJ0bkNvbnRyb2xcIikuc2V0VG91Y2godHJ1ZSk7XHJcblxyXG4gICAgICAgIHRoaXMubm9kZS5nZXRDaGlsZEJ5TmFtZShcIkdhbWVcIikuZ2V0Q2hpbGRCeU5hbWUoXCJwcm9wV2luZG93XCIpLmFjdGl2ZSA9IGZhbHNlO1xyXG4gICAgfVxyXG5cclxuICAgIHVwZGF0ZSAoZHQpIHtcclxuXHJcbiAgICB9XHJcbn1cclxuIl19 +//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImFzc2V0c1xcU2NyaXB0XFxSZWR1Y2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLG9CQUFvQjtBQUNwQix3RUFBd0U7QUFDeEUsbUJBQW1CO0FBQ25CLGtGQUFrRjtBQUNsRiw4QkFBOEI7QUFDOUIsa0ZBQWtGOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFFNUUsSUFBQSxLQUFzQixFQUFFLENBQUMsVUFBVSxFQUFsQyxPQUFPLGFBQUEsRUFBRSxRQUFRLGNBQWlCLENBQUM7QUFHMUM7SUFBc0MsNEJBQVk7SUFBbEQ7UUFBQSxxRUF1QkM7UUFwQkcsaUJBQVcsR0FBMkIsRUFBRSxDQUFDO1FBSXpDLFdBQUssR0FBYSxJQUFJLENBQUM7O1FBZXZCLGlCQUFpQjtJQUNyQixDQUFDO0lBZEcsd0JBQXdCO0lBRXhCLHlCQUFNLEdBQU47SUFFQSxDQUFDO0lBQ0Qsd0JBQUssR0FBTDtJQUVBLENBQUM7SUFiRDtRQURDLFFBQVEsQ0FBQyxFQUFDLElBQUksRUFBRSxDQUFDLEVBQUUsQ0FBQyxXQUFXLENBQUMsRUFBRSxPQUFPLEVBQUMsUUFBUSxFQUFDLENBQUM7aURBQ1o7SUFJekM7UUFEQyxRQUFRLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQzsyQ0FDSTtJQVBOLFFBQVE7UUFENUIsT0FBTztPQUNhLFFBQVEsQ0F1QjVCO0lBQUQsZUFBQztDQXZCRCxBQXVCQyxDQXZCcUMsRUFBRSxDQUFDLFNBQVMsR0F1QmpEO2tCQXZCb0IsUUFBUSIsImZpbGUiOiIiLCJzb3VyY2VSb290IjoiLyIsInNvdXJjZXNDb250ZW50IjpbIi8vIExlYXJuIFR5cGVTY3JpcHQ6XHJcbi8vICAtIGh0dHBzOi8vZG9jcy5jb2Nvcy5jb20vY3JlYXRvci9tYW51YWwvZW4vc2NyaXB0aW5nL3R5cGVzY3JpcHQuaHRtbFxyXG4vLyBMZWFybiBBdHRyaWJ1dGU6XHJcbi8vICAtIGh0dHBzOi8vZG9jcy5jb2Nvcy5jb20vY3JlYXRvci9tYW51YWwvZW4vc2NyaXB0aW5nL3JlZmVyZW5jZS9hdHRyaWJ1dGVzLmh0bWxcclxuLy8gTGVhcm4gbGlmZS1jeWNsZSBjYWxsYmFja3M6XHJcbi8vICAtIGh0dHBzOi8vZG9jcy5jb2Nvcy5jb20vY3JlYXRvci9tYW51YWwvZW4vc2NyaXB0aW5nL2xpZmUtY3ljbGUtY2FsbGJhY2tzLmh0bWxcclxuXHJcbmNvbnN0IHtjY2NsYXNzLCBwcm9wZXJ0eX0gPSBjYy5fZGVjb3JhdG9yO1xyXG5cclxuQGNjY2xhc3NcclxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgTmV3Q2xhc3MgZXh0ZW5kcyBjYy5Db21wb25lbnQge1xyXG5cclxuICAgIEBwcm9wZXJ0eSh7dHlwZTogW2NjLlNwcml0ZUZyYW1lXSwgdG9vbHRpcDpcIuaWueWdl+minOiJsuWbvueJh1wifSlcclxuICAgIEJsb2NrX0NvbG9yIDogQXJyYXk8Y2MuU3ByaXRlRnJhbWU+ID0gW107XHJcblxyXG5cclxuICAgIEBwcm9wZXJ0eShjYy5MYWJlbClcclxuICAgIGxldmVsOiBjYy5MYWJlbCA9IG51bGw7XHJcblxyXG4gICAgLy8gTElGRS1DWUNMRSBDQUxMQkFDS1M6XHJcblxyXG4gICAgb25Mb2FkICgpIHtcclxuXHJcbiAgICB9XHJcbiAgICBzdGFydCAoKSB7XHJcblxyXG4gICAgfVxyXG4gICAgXHJcblxyXG5cclxuXHJcblxyXG4gICAgLy8gdXBkYXRlIChkdCkge31cclxufVxyXG4iXX0= //------QC-SOURCE-SPLIT------ (function() { var nodeEnv = typeof require !== 'undefined' && typeof process !== 'undefined'; var __module = nodeEnv ? module : {exports:{}}; - var __filename = 'preview-scripts/assets/Script/MapBlock.js'; + var __filename = 'preview-scripts/assets/Script/Pause.js'; var __require = nodeEnv ? function (request) { return cc.require(request); } : function (request) { @@ -9945,76 +7147,175 @@ cc._RF.pop(); }; function __define (exports, require, module) { if (!nodeEnv) {__quick_compile_project__.registerModule(__filename, module);}"use strict"; -cc._RF.push(module, '52958xsurVAp54WMo+xFDo6', 'MapBlock'); -// Script/MapBlock.ts +cc._RF.push(module, 'aca4aut33NCvIC0yg3JmY0h', 'Pause'); +// Script/Pause.ts -"use strict"; -// Learn TypeScript: -// - https://docs.cocos.com/creator/manual/en/scripting/typescript.html -// Learn Attribute: -// - https://docs.cocos.com/creator/manual/en/scripting/reference/attributes.html -// Learn life-cycle callbacks: -// - https://docs.cocos.com/creator/manual/en/scripting/life-cycle-callbacks.html -var __extends = (this && this.__extends) || (function () { - var extendStatics = function (d, b) { - extendStatics = Object.setPrototypeOf || - ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) || - function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; }; - return extendStatics(d, b); - }; - return function (d, b) { - extendStatics(d, b); - function __() { this.constructor = d; } - d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); - }; -})(); -var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) { - var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; - if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc); - else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; - return c > 3 && r && Object.defineProperty(target, key, r), r; -}; -Object.defineProperty(exports, "__esModule", { value: true }); -var _a = cc._decorator, ccclass = _a.ccclass, property = _a.property; -var NewClass = /** @class */ (function (_super) { - __extends(NewClass, _super); - function NewClass() { - var _this = _super !== null && _super.apply(this, arguments) || this; - _this.label = null; - _this.block_Id = ''; - // LIFE-CYCLE CALLBACKS: - _this.posX = 0; //地图块的X坐标 - _this.posY = 0; //地图块的Y坐标 - _this.direction = ""; //地图块的方向 - return _this; - // update (dt) {} - } - // onLoad () {} - NewClass.prototype.start = function () { - this.direction = ""; - this.block_Id = ""; - // this.node.getChildByName("num").getComponent(cc.Label).string = this.direction; - }; - NewClass.prototype.setDiraction = function (direction) { - this.direction = direction; - // this.node.getChildByName("num").getComponent(cc.Label).string = this.direction; - }; - NewClass.prototype.init = function (posX, posY) { - this.posX = posX; - this.posY = posY; - }; - __decorate([ - property(cc.Label) - ], NewClass.prototype, "label", void 0); - __decorate([ - property - ], NewClass.prototype, "block_Id", void 0); - NewClass = __decorate([ - ccclass - ], NewClass); - return NewClass; -}(cc.Component)); -exports.default = NewClass; +"use strict"; +// Learn TypeScript: +// - https://docs.cocos.com/creator/manual/en/scripting/typescript.html +// Learn Attribute: +// - https://docs.cocos.com/creator/manual/en/scripting/reference/attributes.html +// Learn life-cycle callbacks: +// - https://docs.cocos.com/creator/manual/en/scripting/life-cycle-callbacks.html +var __extends = (this && this.__extends) || (function () { + var extendStatics = function (d, b) { + extendStatics = Object.setPrototypeOf || + ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) || + function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; }; + return extendStatics(d, b); + }; + return function (d, b) { + extendStatics(d, b); + function __() { this.constructor = d; } + d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); + }; +})(); +var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) { + var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; + if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc); + else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; + return c > 3 && r && Object.defineProperty(target, key, r), r; +}; +Object.defineProperty(exports, "__esModule", { value: true }); +var _a = cc._decorator, ccclass = _a.ccclass, property = _a.property; +var Pause = /** @class */ (function (_super) { + __extends(Pause, _super); + function Pause() { + var _this = _super !== null && _super.apply(this, arguments) || this; + _this.time = 0; + _this.music = null; + _this.effect = null; + _this.vibrate = null; + _this.open = null; + _this.close = null; + // mapInfo: number[][] = []; + _this.musicState = true; + _this.effectState = true; + _this.vibrateState = true; + return _this; + // update (dt) {} + } + Pause.prototype.onLoad = function () { + if (cc.fx.GameConfig.GM_INFO.musicOpen) { + this.music.getComponent(cc.Sprite).spriteFrame = this.open; + this.music.x = 278; + } + else { + this.music.getComponent(cc.Sprite).spriteFrame = this.close; + this.music.x = 161; + } + if (cc.fx.GameConfig.GM_INFO.effectOpen) { + this.effect.getComponent(cc.Sprite).spriteFrame = this.open; + this.effect.x = 278; + } + else { + this.effect.getComponent(cc.Sprite).spriteFrame = this.close; + this.effect.x = 161; + } + if (cc.fx.GameConfig.GM_INFO.vibrateOpen) { + this.vibrate.getComponent(cc.Sprite).spriteFrame = this.open; + this.vibrate.x = 278; + } + else { + this.vibrate.getComponent(cc.Sprite).spriteFrame = this.close; + this.vibrate.x = 161; + } + this.musicState = cc.fx.GameConfig.GM_INFO.musicOpen; + this.effectState = cc.fx.GameConfig.GM_INFO.effectOpen; + this.vibrateState = cc.fx.GameConfig.GM_INFO.vibrateOpen; + }; + Pause.prototype.start = function () { + }; + Pause.prototype.init = function (time) { + }; + Pause.prototype.clickMusic = function () { + var _this = this; + if (this.musicState) { + this.musicState = false; + cc.fx.GameConfig.GM_INFO.musicOpen = this.musicState; + this.setMusicConfig(); + this.music.runAction(cc.sequence(cc.spawn(cc.moveTo(0.05, cc.v2(161, this.music.y)), cc.fadeOut(0.05)), cc.callFunc(function () { + _this.music.getComponent(cc.Sprite).spriteFrame = _this.close; + }), cc.fadeIn(0.1))); + cc.fx.AudioManager._instance.stopMusic(); + } + else { + this.musicState = true; + cc.fx.GameConfig.GM_INFO.musicOpen = this.musicState; + this.setMusicConfig(); + this.music.runAction(cc.sequence(cc.spawn(cc.moveTo(0.05, cc.v2(278, this.music.y)), cc.fadeOut(0.05)), cc.callFunc(function () { + _this.music.getComponent(cc.Sprite).spriteFrame = _this.open; + }), cc.fadeIn(0.1))); + cc.fx.AudioManager._instance.playMusicGame(); + } + }; + Pause.prototype.setMusicConfig = function () { + var audioInfo = { + "musicOpen": cc.fx.GameConfig.GM_INFO.musicOpen, + "effectOpen": cc.fx.GameConfig.GM_INFO.effectOpen, + "vibrateOpen": cc.fx.GameConfig.GM_INFO.vibrateOpen, + }; + cc.fx.StorageMessage.setStorage("music", audioInfo); + }; + Pause.prototype.clickEffect = function () { + var _this = this; + if (this.effectState) { + this.effectState = false; + cc.fx.GameConfig.GM_INFO.effectOpen = this.effectState; + this.setMusicConfig(); + this.effect.runAction(cc.sequence(cc.spawn(cc.moveTo(0.05, cc.v2(161, this.effect.y)), cc.fadeOut(0.05)), cc.callFunc(function () { + _this.effect.getComponent(cc.Sprite).spriteFrame = _this.close; + }), cc.fadeIn(0.1))); + } + else { + this.effectState = true; + cc.fx.GameConfig.GM_INFO.effectOpen = this.effectState; + this.setMusicConfig(); + this.effect.runAction(cc.sequence(cc.spawn(cc.moveTo(0.05, cc.v2(278, this.effect.y)), cc.fadeOut(0.05)), cc.callFunc(function () { + _this.effect.getComponent(cc.Sprite).spriteFrame = _this.open; + }), cc.fadeIn(0.1))); + } + }; + Pause.prototype.clickVibrate = function () { + var _this = this; + if (this.vibrateState) { + this.vibrateState = false; + cc.fx.GameConfig.GM_INFO.vibrateOpen = this.vibrateState; + this.setMusicConfig(); + this.vibrate.runAction(cc.sequence(cc.spawn(cc.moveTo(0.05, cc.v2(161, this.vibrate.y)), cc.fadeOut(0.05)), cc.callFunc(function () { + _this.vibrate.getComponent(cc.Sprite).spriteFrame = _this.close; + }), cc.fadeIn(0.1))); + } + else { + this.vibrateState = true; + cc.fx.GameConfig.GM_INFO.vibrateOpen = this.vibrateState; + this.setMusicConfig(); + this.vibrate.runAction(cc.sequence(cc.spawn(cc.moveTo(0.05, cc.v2(278, this.vibrate.y)), cc.fadeOut(0.05)), cc.callFunc(function () { + _this.vibrate.getComponent(cc.Sprite).spriteFrame = _this.open; + }), cc.fadeIn(0.1))); + } + }; + __decorate([ + property(cc.Node) + ], Pause.prototype, "music", void 0); + __decorate([ + property(cc.Node) + ], Pause.prototype, "effect", void 0); + __decorate([ + property(cc.Node) + ], Pause.prototype, "vibrate", void 0); + __decorate([ + property(cc.SpriteFrame) + ], Pause.prototype, "open", void 0); + __decorate([ + property(cc.SpriteFrame) + ], Pause.prototype, "close", void 0); + Pause = __decorate([ + ccclass + ], Pause); + return Pause; +}(cc.Component)); +exports.default = Pause; cc._RF.pop(); } @@ -10027,88 +7328,7 @@ cc._RF.pop(); }); } })(); -//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImFzc2V0c1xcU2NyaXB0XFxNYXBCbG9jay50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsb0JBQW9CO0FBQ3BCLHdFQUF3RTtBQUN4RSxtQkFBbUI7QUFDbkIsa0ZBQWtGO0FBQ2xGLDhCQUE4QjtBQUM5QixrRkFBa0Y7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUU1RSxJQUFBLEtBQXNCLEVBQUUsQ0FBQyxVQUFVLEVBQWxDLE9BQU8sYUFBQSxFQUFFLFFBQVEsY0FBaUIsQ0FBQztBQUcxQztJQUFzQyw0QkFBWTtJQUFsRDtRQUFBLHFFQWdDQztRQTdCRyxXQUFLLEdBQWEsSUFBSSxDQUFDO1FBR3ZCLGNBQVEsR0FBVyxFQUFFLENBQUM7UUFFdEIsd0JBQXdCO1FBRXhCLFVBQUksR0FBVyxDQUFDLENBQUMsQ0FBZSxTQUFTO1FBQ3pDLFVBQUksR0FBVyxDQUFDLENBQUMsQ0FBZSxTQUFTO1FBQ3pDLGVBQVMsR0FBVyxFQUFFLENBQUMsQ0FBVSxRQUFROztRQW1CekMsaUJBQWlCO0lBQ3JCLENBQUM7SUFuQkcsZUFBZTtJQUVmLHdCQUFLLEdBQUw7UUFDSSxJQUFJLENBQUMsU0FBUyxHQUFHLEVBQUUsQ0FBQztRQUNwQixJQUFJLENBQUMsUUFBUSxHQUFHLEVBQUUsQ0FBQztRQUNuQixrRkFBa0Y7SUFDdEYsQ0FBQztJQUVELCtCQUFZLEdBQVosVUFBYSxTQUFTO1FBQ2xCLElBQUksQ0FBQyxTQUFTLEdBQUcsU0FBUyxDQUFDO1FBQzNCLGtGQUFrRjtJQUN0RixDQUFDO0lBRUQsdUJBQUksR0FBSixVQUFLLElBQUksRUFBQyxJQUFJO1FBQ1YsSUFBSSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUM7UUFDakIsSUFBSSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUM7SUFDckIsQ0FBQztJQTFCRDtRQURDLFFBQVEsQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDOzJDQUNJO0lBR3ZCO1FBREMsUUFBUTs4Q0FDYTtJQU5MLFFBQVE7UUFENUIsT0FBTztPQUNhLFFBQVEsQ0FnQzVCO0lBQUQsZUFBQztDQWhDRCxBQWdDQyxDQWhDcUMsRUFBRSxDQUFDLFNBQVMsR0FnQ2pEO2tCQWhDb0IsUUFBUSIsImZpbGUiOiIiLCJzb3VyY2VSb290IjoiLyIsInNvdXJjZXNDb250ZW50IjpbIi8vIExlYXJuIFR5cGVTY3JpcHQ6XHJcbi8vICAtIGh0dHBzOi8vZG9jcy5jb2Nvcy5jb20vY3JlYXRvci9tYW51YWwvZW4vc2NyaXB0aW5nL3R5cGVzY3JpcHQuaHRtbFxyXG4vLyBMZWFybiBBdHRyaWJ1dGU6XHJcbi8vICAtIGh0dHBzOi8vZG9jcy5jb2Nvcy5jb20vY3JlYXRvci9tYW51YWwvZW4vc2NyaXB0aW5nL3JlZmVyZW5jZS9hdHRyaWJ1dGVzLmh0bWxcclxuLy8gTGVhcm4gbGlmZS1jeWNsZSBjYWxsYmFja3M6XHJcbi8vICAtIGh0dHBzOi8vZG9jcy5jb2Nvcy5jb20vY3JlYXRvci9tYW51YWwvZW4vc2NyaXB0aW5nL2xpZmUtY3ljbGUtY2FsbGJhY2tzLmh0bWxcclxuXHJcbmNvbnN0IHtjY2NsYXNzLCBwcm9wZXJ0eX0gPSBjYy5fZGVjb3JhdG9yO1xyXG5cclxuQGNjY2xhc3NcclxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgTmV3Q2xhc3MgZXh0ZW5kcyBjYy5Db21wb25lbnQge1xyXG5cclxuICAgIEBwcm9wZXJ0eShjYy5MYWJlbClcclxuICAgIGxhYmVsOiBjYy5MYWJlbCA9IG51bGw7XHJcblxyXG4gICAgQHByb3BlcnR5XHJcbiAgICBibG9ja19JZDogc3RyaW5nID0gJyc7XHJcblxyXG4gICAgLy8gTElGRS1DWUNMRSBDQUxMQkFDS1M6XHJcblxyXG4gICAgcG9zWDogbnVtYmVyID0gMDsgICAgICAgICAgICAgICAvL+WcsOWbvuWdl+eahFjlnZDmoIdcclxuICAgIHBvc1k6IG51bWJlciA9IDA7ICAgICAgICAgICAgICAgLy/lnLDlm77lnZfnmoRZ5Z2Q5qCHXHJcbiAgICBkaXJlY3Rpb246IHN0cmluZyA9IFwiXCI7ICAgICAgICAgIC8v5Zyw5Zu+5Z2X55qE5pa55ZCRXHJcbiAgICAvLyBvbkxvYWQgKCkge31cclxuXHJcbiAgICBzdGFydCAoKSB7XHJcbiAgICAgICAgdGhpcy5kaXJlY3Rpb24gPSBcIlwiO1xyXG4gICAgICAgIHRoaXMuYmxvY2tfSWQgPSBcIlwiO1xyXG4gICAgICAgIC8vIHRoaXMubm9kZS5nZXRDaGlsZEJ5TmFtZShcIm51bVwiKS5nZXRDb21wb25lbnQoY2MuTGFiZWwpLnN0cmluZyA9IHRoaXMuZGlyZWN0aW9uO1xyXG4gICAgfVxyXG5cclxuICAgIHNldERpcmFjdGlvbihkaXJlY3Rpb24pe1xyXG4gICAgICAgIHRoaXMuZGlyZWN0aW9uID0gZGlyZWN0aW9uOyAgIFxyXG4gICAgICAgIC8vIHRoaXMubm9kZS5nZXRDaGlsZEJ5TmFtZShcIm51bVwiKS5nZXRDb21wb25lbnQoY2MuTGFiZWwpLnN0cmluZyA9IHRoaXMuZGlyZWN0aW9uO1xyXG4gICAgfVxyXG5cclxuICAgIGluaXQocG9zWCxwb3NZKXtcclxuICAgICAgICB0aGlzLnBvc1ggPSBwb3NYO1xyXG4gICAgICAgIHRoaXMucG9zWSA9IHBvc1k7XHJcbiAgICB9XHJcblxyXG4gICAgLy8gdXBkYXRlIChkdCkge31cclxufVxyXG4iXX0= -//------QC-SOURCE-SPLIT------ - - (function() { - var nodeEnv = typeof require !== 'undefined' && typeof process !== 'undefined'; - var __module = nodeEnv ? module : {exports:{}}; - var __filename = 'preview-scripts/assets/Script/Sdk/DouyinEntranceView.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, '8a024+q5K9MrpxcaTvucSDB', 'DouyinEntranceView'); -// Script/Sdk/DouyinEntranceView.ts - -"use strict"; -var __extends = (this && this.__extends) || (function () { - var extendStatics = function (d, b) { - extendStatics = Object.setPrototypeOf || - ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) || - function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; }; - return extendStatics(d, b); - }; - return function (d, b) { - extendStatics(d, b); - function __() { this.constructor = d; } - d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); - }; -})(); -var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) { - var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; - if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc); - else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; - return c > 3 && r && Object.defineProperty(target, key, r), r; -}; -Object.defineProperty(exports, "__esModule", { value: true }); -exports.DouyinEntranceView = void 0; -var MiniGameSdk_1 = require("./MiniGameSdk"); -var _a = cc._decorator, ccclass = _a.ccclass, property = _a.property; -var DouyinEntranceView = /** @class */ (function (_super) { - __extends(DouyinEntranceView, _super); - function DouyinEntranceView() { - return _super !== null && _super.apply(this, arguments) || this; - } - DouyinEntranceView.prototype.start = function () { - }; - DouyinEntranceView.prototype.update = function (deltaTime) { - }; - DouyinEntranceView.prototype.onCloseClick = function () { - this.node.active = false; - }; - DouyinEntranceView.prototype.onNavigateToDouyinClick = function () { - MiniGameSdk_1.MiniGameSdk.BytedanceSidebar.navigateToSidebar(function (success) { - if (success) { - console.log('跳转成功'); - } - else { - console.log('跳转失败'); - } - }); - }; - DouyinEntranceView = __decorate([ - ccclass - ], DouyinEntranceView); - return DouyinEntranceView; -}(cc.Component)); -exports.DouyinEntranceView = DouyinEntranceView; - -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,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImFzc2V0c1xcU2NyaXB0XFxTZGtcXERvdXlpbkVudHJhbmNlVmlldy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsNkNBQTRDO0FBQ3RDLElBQUEsS0FBd0IsRUFBRSxDQUFDLFVBQVUsRUFBbkMsT0FBTyxhQUFBLEVBQUUsUUFBUSxjQUFrQixDQUFDO0FBSTVDO0lBQXdDLHNDQUFZO0lBQXBEOztJQXVCQSxDQUFDO0lBdEJHLGtDQUFLLEdBQUw7SUFFQSxDQUFDO0lBRUQsbUNBQU0sR0FBTixVQUFPLFNBQWlCO0lBRXhCLENBQUM7SUFFRCx5Q0FBWSxHQUFaO1FBQ0ksSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLEdBQUcsS0FBSyxDQUFDO0lBQzdCLENBQUM7SUFFRCxvREFBdUIsR0FBdkI7UUFFSSx5QkFBVyxDQUFDLGdCQUFnQixDQUFDLGlCQUFpQixDQUFDLFVBQUMsT0FBZ0I7WUFDNUQsSUFBSSxPQUFPLEVBQUU7Z0JBQ1QsT0FBTyxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsQ0FBQzthQUN2QjtpQkFBTTtnQkFDSCxPQUFPLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxDQUFDO2FBQ3ZCO1FBQ0wsQ0FBQyxDQUFDLENBQUM7SUFDUCxDQUFDO0lBdEJRLGtCQUFrQjtRQUQ5QixPQUFPO09BQ0ssa0JBQWtCLENBdUI5QjtJQUFELHlCQUFDO0NBdkJELEFBdUJDLENBdkJ1QyxFQUFFLENBQUMsU0FBUyxHQXVCbkQ7QUF2QlksZ0RBQWtCIiwiZmlsZSI6IiIsInNvdXJjZVJvb3QiOiIvIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgTWluaUdhbWVTZGsgfSBmcm9tIFwiLi9NaW5pR2FtZVNka1wiO1xyXG5jb25zdCB7IGNjY2xhc3MsIHByb3BlcnR5IH0gPSBjYy5fZGVjb3JhdG9yO1xyXG5cclxuXHJcbkBjY2NsYXNzXHJcbmV4cG9ydCBjbGFzcyBEb3V5aW5FbnRyYW5jZVZpZXcgZXh0ZW5kcyBjYy5Db21wb25lbnQge1xyXG4gICAgc3RhcnQoKSB7XHJcblxyXG4gICAgfVxyXG5cclxuICAgIHVwZGF0ZShkZWx0YVRpbWU6IG51bWJlcikge1xyXG5cclxuICAgIH1cclxuXHJcbiAgICBvbkNsb3NlQ2xpY2soKSB7XHJcbiAgICAgICAgdGhpcy5ub2RlLmFjdGl2ZSA9IGZhbHNlO1xyXG4gICAgfVxyXG5cclxuICAgIG9uTmF2aWdhdGVUb0RvdXlpbkNsaWNrKCkge1xyXG5cclxuICAgICAgICBNaW5pR2FtZVNkay5CeXRlZGFuY2VTaWRlYmFyLm5hdmlnYXRlVG9TaWRlYmFyKChzdWNjZXNzOiBib29sZWFuKSA9PiB7IC8vIOi3s+i9rOWIsOaKlumfs+S+p+i+ueagj1xyXG4gICAgICAgICAgICBpZiAoc3VjY2Vzcykge1xyXG4gICAgICAgICAgICAgICAgY29uc29sZS5sb2coJ+i3s+i9rOaIkOWKnycpO1xyXG4gICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgY29uc29sZS5sb2coJ+i3s+i9rOWksei0pScpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfSk7XHJcbiAgICB9XHJcbn1cclxuIl19 +//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImFzc2V0c1xcU2NyaXB0XFxQYXVzZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsb0JBQW9CO0FBQ3BCLHdFQUF3RTtBQUN4RSxtQkFBbUI7QUFDbkIsa0ZBQWtGO0FBQ2xGLDhCQUE4QjtBQUM5QixrRkFBa0Y7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUc1RSxJQUFBLEtBQXNCLEVBQUUsQ0FBQyxVQUFVLEVBQWxDLE9BQU8sYUFBQSxFQUFFLFFBQVEsY0FBaUIsQ0FBQztBQUkxQztJQUFtQyx5QkFBWTtJQUEvQztRQUFBLHFFQW1JQztRQWpJRyxVQUFJLEdBQVcsQ0FBQyxDQUFDO1FBR2pCLFdBQUssR0FBWSxJQUFJLENBQUM7UUFHdEIsWUFBTSxHQUFZLElBQUksQ0FBQztRQUd2QixhQUFPLEdBQVksSUFBSSxDQUFDO1FBR3hCLFVBQUksR0FBbUIsSUFBSSxDQUFDO1FBRzVCLFdBQUssR0FBbUIsSUFBSSxDQUFDO1FBRTdCLDRCQUE0QjtRQUU1QixnQkFBVSxHQUFZLElBQUksQ0FBQztRQUMzQixpQkFBVyxHQUFZLElBQUksQ0FBQztRQUM1QixrQkFBWSxHQUFZLElBQUksQ0FBQzs7UUEyRzdCLGlCQUFpQjtJQUNyQixDQUFDO0lBMUdHLHNCQUFNLEdBQU47UUFDSSxJQUFHLEVBQUUsQ0FBQyxFQUFFLENBQUMsVUFBVSxDQUFDLE9BQU8sQ0FBQyxTQUFTLEVBQUM7WUFDbEMsSUFBSSxDQUFDLEtBQUssQ0FBQyxZQUFZLENBQUMsRUFBRSxDQUFDLE1BQU0sQ0FBQyxDQUFDLFdBQVcsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDO1lBQzNELElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxHQUFHLEdBQUcsQ0FBQztTQUN0QjthQUNHO1lBQ0EsSUFBSSxDQUFDLEtBQUssQ0FBQyxZQUFZLENBQUMsRUFBRSxDQUFDLE1BQU0sQ0FBQyxDQUFDLFdBQVcsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDO1lBQzVELElBQUksQ0FB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Q0FBQztZQUN6RCxJQUFJLENBQUMsY0FBYyxFQUFFLENBQUM7WUFDdEIsSUFBSSxDQUFDLE9BQU8sQ0FBQyxTQUFTLENBQUMsRUFBRSxDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxNQUFNLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FBQyxFQUFFLENBQUMsR0FBRyxFQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDLEVBQUMsRUFBRSxDQUFDLFFBQVEsQ0FBQztnQkFDbEgsS0FBSSxDQUFDLE9BQU8sQ0FBQyxZQUFZLENBQUMsRUFBRSxDQUFDLE1BQU0sQ0FBQyxDQUFDLFdBQVcsR0FBRyxLQUFJLENBQUMsSUFBSSxDQUFDO1lBQ2pFLENBQUMsQ0FBQyxFQUFDLEVBQUUsQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFBO1NBQ3RCO0lBQ0wsQ0FBQztJQTNIRDtRQURDLFFBQVEsQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDO3dDQUNJO0lBR3RCO1FBREMsUUFBUSxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUM7eUNBQ0s7SUFHdkI7UUFEQyxRQUFRLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQzswQ0FDTTtJQUd4QjtRQURDLFFBQVEsQ0FBQyxFQUFFLENBQUMsV0FBVyxDQUFDO3VDQUNHO0lBRzVCO1FBREMsUUFBUSxDQUFDLEVBQUUsQ0FBQyxXQUFXLENBQUM7d0NBQ0k7SUFqQlosS0FBSztRQUR6QixPQUFPO09BQ2EsS0FBSyxDQW1JekI7SUFBRCxZQUFDO0NBbklELEFBbUlDLENBbklrQyxFQUFFLENBQUMsU0FBUyxHQW1JOUM7a0JBbklvQixLQUFLIiwiZmlsZSI6IiIsInNvdXJjZVJvb3QiOiIvIiwic291cmNlc0NvbnRlbnQiOlsiLy8gTGVhcm4gVHlwZVNjcmlwdDpcclxuLy8gIC0gaHR0cHM6Ly9kb2NzLmNvY29zLmNvbS9jcmVhdG9yL21hbnVhbC9lbi9zY3JpcHRpbmcvdHlwZXNjcmlwdC5odG1sXHJcbi8vIExlYXJuIEF0dHJpYnV0ZTpcclxuLy8gIC0gaHR0cHM6Ly9kb2NzLmNvY29zLmNvbS9jcmVhdG9yL21hbnVhbC9lbi9zY3JpcHRpbmcvcmVmZXJlbmNlL2F0dHJpYnV0ZXMuaHRtbFxyXG4vLyBMZWFybiBsaWZlLWN5Y2xlIGNhbGxiYWNrczpcclxuLy8gIC0gaHR0cHM6Ly9kb2NzLmNvY29zLmNvbS9jcmVhdG9yL21hbnVhbC9lbi9zY3JpcHRpbmcvbGlmZS1jeWNsZS1jYWxsYmFja3MuaHRtbFxyXG5cclxuXHJcbmNvbnN0IHtjY2NsYXNzLCBwcm9wZXJ0eX0gPSBjYy5fZGVjb3JhdG9yO1xyXG5cclxuXHJcbkBjY2NsYXNzXHJcbmV4cG9ydCBkZWZhdWx0IGNsYXNzIFBhdXNlIGV4dGVuZHMgY2MuQ29tcG9uZW50IHtcclxuICAgIHN0YXRpYyBfaW5zdGFuY2U6IGFueTtcclxuICAgIHRpbWU6IG51bWJlciA9IDA7XHJcblxyXG4gICAgQHByb3BlcnR5KGNjLk5vZGUpXHJcbiAgICBtdXNpYzogY2MuTm9kZSA9IG51bGw7XHJcblxyXG4gICAgQHByb3BlcnR5KGNjLk5vZGUpXHJcbiAgICBlZmZlY3Q6IGNjLk5vZGUgPSBudWxsO1xyXG5cclxuICAgIEBwcm9wZXJ0eShjYy5Ob2RlKVxyXG4gICAgdmlicmF0ZTogY2MuTm9kZSA9IG51bGw7XHJcblxyXG4gICAgQHByb3BlcnR5KGNjLlNwcml0ZUZyYW1lKVxyXG4gICAgb3BlbjogY2MuU3ByaXRlRnJhbWUgPSBudWxsO1xyXG5cclxuICAgIEBwcm9wZXJ0eShjYy5TcHJpdGVGcmFtZSlcclxuICAgIGNsb3NlOiBjYy5TcHJpdGVGcmFtZSA9IG51bGw7XHJcbiAgICBcclxuICAgIC8vIG1hcEluZm86IG51bWJlcltdW10gPSBbXTtcclxuXHJcbiAgICBtdXNpY1N0YXRlOiBib29sZWFuID0gdHJ1ZTtcclxuICAgIGVmZmVjdFN0YXRlOiBib29sZWFuID0gdHJ1ZTtcclxuICAgIHZpYnJhdGVTdGF0ZTogYm9vbGVhbiA9IHRydWU7XHJcblxyXG4gICAgb25Mb2FkICgpIHtcclxuICAgICAgICBpZihjYy5meC5HYW1lQ29uZmlnLkdNX0lORk8ubXVzaWNPcGVuKXtcclxuICAgICAgICAgICAgdGhpcy5tdXNpYy5nZXRDb21wb25lbnQoY2MuU3ByaXRlKS5zcHJpdGVGcmFtZSA9IHRoaXMub3BlbjtcclxuICAgICAgICAgICAgdGhpcy5tdXNpYy54ID0gMjc4O1xyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNle1xyXG4gICAgICAgICAgICB0aGlzLm11c2ljLmdldENvbXBvbmVudChjYy5TcHJpdGUpLnNwcml0ZUZyYW1lID0gdGhpcy5jbG9zZTtcclxuICAgICAgICAgICAgdGhpcy5tdXNpYy54ID0gMTYxO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZihjYy5meC5HYW1lQ29uZmlnLkdNX0lORk8uZWZmZWN0T3Blbil7XHJcbiAgICAgICAgICAgIHRoaXMuZWZmZWN0LmdldENvbXBvbmVudChjYy5TcHJpdGUpLnNwcml0ZUZyYW1lID0gdGhpcy5vcGVuO1xyXG4gICAgICAgICAgICB0aGlzLmVmZmVjdC54ID0gMjc4OyBcclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZXtcclxuICAgICAgICAgICAgdGhpcy5lZmZlY3QuZ2V0Q29tcG9uZW50KGNjLlNwcml0ZSkuc3ByaXRlRnJhbWUgPSB0aGlzLmNsb3NlO1xyXG4gICAgICAgICAgICB0aGlzLmVmZmVjdC54ID0gMTYxOyBcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYoY2MuZnguR2FtZUNvbmZpZy5HTV9JTkZPLnZpYnJhdGVPcGVuKXtcclxuICAgICAgICAgICAgdGhpcy52aWJyYXRlLmdldENvbXBvbmVudChjYy5TcHJpdGUpLnNwcml0ZUZyYW1lID0gdGhpcy5vcGVuO1xyXG4gICAgICAgICAgICB0aGlzLnZpYnJhdGUueCA9IDI3ODsgXHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2V7XHJcbiAgICAgICAgICAgIHRoaXMudmlicmF0ZS5nZXRDb21wb25lbnQoY2MuU3ByaXRlKS5zcHJpdGVGcmFtZSA9IHRoaXMuY2xvc2U7IFxyXG4gICAgICAgICAgICB0aGlzLnZpYnJhdGUueCA9IDE2MTtcclxuICAgICAgICB9XHJcbiAgICAgICAgdGhpcy5tdXNpY1N0YXRlID0gY2MuZnguR2FtZUNvbmZpZy5HTV9JTkZPLm11c2ljT3BlbjtcclxuICAgICAgICB0aGlzLmVmZmVjdFN0YXRlID0gY2MuZnguR2FtZUNvbmZpZy5HTV9JTkZPLmVmZmVjdE9wZW47XHJcbiAgICAgICAgdGhpcy52aWJyYXRlU3RhdGUgPSBjYy5meC5HYW1lQ29uZmlnLkdNX0lORk8udmlicmF0ZU9wZW47XHJcbiAgICB9IFxyXG5cclxuICAgIHN0YXJ0ICgpIHtcclxuICAgIH1cclxuXHJcbiAgICBpbml0KHRpbWUpe1xyXG5cclxuICAgIH1cclxuICAgIFxyXG4gICAgY2xpY2tNdXNpYygpe1xyXG4gICAgICAgIGlmKHRoaXMubXVzaWNTdGF0ZSl7XHJcbiAgICAgICAgICAgIHRoaXMubXVzaWNTdGF0ZSA9IGZhbHNlO1xyXG4gICAgICAgICAgICBjYy5meC5HYW1lQ29uZmlnLkdNX0lORk8ubXVzaWNPcGVuID0gdGhpcy5tdXNpY1N0YXRlO1xyXG4gICAgICAgICAgICB0aGlzLnNldE11c2ljQ29uZmlnKCk7XHJcbiAgICAgICAgICAgIHRoaXMubXVzaWMucnVuQWN0aW9uKGNjLnNlcXVlbmNlKGNjLnNwYXduKGNjLm1vdmVUbygwLjA1LCBjYy52MigxNjEsdGhpcy5tdXNpYy55KSksIGNjLmZhZGVPdXQoMC4wNSkpLGNjLmNhbGxGdW5jKCgpPT57XHJcbiAgICAgICAgICAgICAgICB0aGlzLm11c2ljLmdldENvbXBvbmVudChjYy5TcHJpdGUpLnNwcml0ZUZyYW1lID0gdGhpcy5jbG9zZTtcclxuICAgICAgICAgICAgfSksY2MuZmFkZUluKDAuMSkpKVxyXG4gICAgICAgICAgICBjYy5meC5BdWRpb01hbmFnZXIuX2luc3RhbmNlLnN0b3BNdXNpYygpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNle1xyXG4gICAgICAgICAgICB0aGlzLm11c2ljU3RhdGUgPSB0cnVlO1xyXG4gICAgICAgICAgICBjYy5meC5HYW1lQ29uZmlnLkdNX0lORk8ubXVzaWNPcGVuID0gdGhpcy5tdXNpY1N0YXRlO1xyXG4gICAgICAgICAgICB0aGlzLnNldE11c2ljQ29uZmlnKCk7XHJcbiAgICAgICAgICAgIHRoaXMubXVzaWMucnVuQWN0aW9uKGNjLnNlcXVlbmNlKGNjLnNwYXduKGNjLm1vdmVUbygwLjA1LCBjYy52MigyNzgsdGhpcy5tdXNpYy55KSksIGNjLmZhZGVPdXQoMC4wNSkpLGNjLmNhbGxGdW5jKCgpPT57XHJcbiAgICAgICAgICAgICAgICB0aGlzLm11c2ljLmdldENvbXBvbmVudChjYy5TcHJpdGUpLnNwcml0ZUZyYW1lID0gdGhpcy5vcGVuO1xyXG4gICAgICAgICAgICB9KSxjYy5mYWRlSW4oMC4xKSkpXHJcbiAgICAgICAgICAgIGNjLmZ4LkF1ZGlvTWFuYWdlci5faW5zdGFuY2UucGxheU11c2ljR2FtZSgpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBzZXRNdXNpY0NvbmZpZygpe1xyXG4gICAgICAgIGxldCBhdWRpb0luZm8gPSB7XHJcbiAgICAgICAgICAgIFwibXVzaWNPcGVuXCI6IGNjLmZ4LkdhbWVDb25maWcuR01fSU5GTy5tdXNpY09wZW4sICAgICAgICAgICAgIC8v6Z+z5LmQXHJcbiAgICAgICAgICAgIFwiZWZmZWN0T3BlblwiOiBjYy5meC5HYW1lQ29uZmlnLkdNX0lORk8uZWZmZWN0T3BlbiwgICAgICAgICAgICAvL+mfs+aViFxyXG4gICAgICAgICAgICBcInZpYnJhdGVPcGVuXCI6IGNjLmZ4LkdhbWVDb25maWcuR01fSU5GTy52aWJyYXRlT3BlbiwgICAgICAgICAgIC8v6ZyH5YqoXHJcbiAgICAgICAgfVxyXG4gICAgICAgIGNjLmZ4LlN0b3JhZ2VNZXNzYWdlLnNldFN0b3JhZ2UoXCJtdXNpY1wiLGF1ZGlvSW5mbyk7XHJcbiAgICB9XHJcblxyXG4gICAgY2xpY2tFZmZlY3QoKXtcclxuICAgICAgICBpZih0aGlzLmVmZmVjdFN0YXRlKXtcclxuICAgICAgICAgICAgdGhpcy5lZmZlY3RTdGF0ZSA9IGZhbHNlO1xyXG4gICAgICAgICAgICBjYy5meC5HYW1lQ29uZmlnLkdNX0lORk8uZWZmZWN0T3BlbiA9IHRoaXMuZWZmZWN0U3RhdGU7XHJcbiAgICAgICAgICAgIHRoaXMuc2V0TXVzaWNDb25maWcoKTtcclxuICAgICAgICAgICAgdGhpcy5lZmZlY3QucnVuQWN0aW9uKGNjLnNlcXVlbmNlKGNjLnNwYXduKGNjLm1vdmVUbygwLjA1LCBjYy52MigxNjEsdGhpcy5lZmZlY3QueSkpLCBjYy5mYWRlT3V0KDAuMDUpKSxjYy5jYWxsRnVuYygoKT0+e1xyXG4gICAgICAgICAgICAgICAgdGhpcy5lZmZlY3QuZ2V0Q29tcG9uZW50KGNjLlNwcml0ZSkuc3ByaXRlRnJhbWUgPSB0aGlzLmNsb3NlO1xyXG4gICAgICAgICAgICB9KSxjYy5mYWRlSW4oMC4xKSkpXHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2V7XHJcbiAgICAgICAgICAgIHRoaXMuZWZmZWN0U3RhdGUgPSB0cnVlO1xyXG4gICAgICAgICAgICBjYy5meC5HYW1lQ29uZmlnLkdNX0lORk8uZWZmZWN0T3BlbiA9IHRoaXMuZWZmZWN0U3RhdGU7XHJcbiAgICAgICAgICAgIHRoaXMuc2V0TXVzaWNDb25maWcoKTtcclxuICAgICAgICAgICAgdGhpcy5lZmZlY3QucnVuQWN0aW9uKGNjLnNlcXVlbmNlKGNjLnNwYXduKGNjLm1vdmVUbygwLjA1LCBjYy52MigyNzgsdGhpcy5lZmZlY3QueSkpLCBjYy5mYWRlT3V0KDAuMDUpKSxjYy5jYWxsRnVuYygoKT0+e1xyXG4gICAgICAgICAgICAgICAgdGhpcy5lZmZlY3QuZ2V0Q29tcG9uZW50KGNjLlNwcml0ZSkuc3ByaXRlRnJhbWUgPSB0aGlzLm9wZW47XHJcbiAgICAgICAgICAgIH0pLGNjLmZhZGVJbigwLjEpKSlcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgY2xpY2tWaWJyYXRlKCl7XHJcbiAgICAgICAgaWYodGhpcy52aWJyYXRlU3RhdGUpe1xyXG4gICAgICAgICAgICB0aGlzLnZpYnJhdGVTdGF0ZSA9IGZhbHNlOyBcclxuICAgICAgICAgICAgY2MuZnguR2FtZUNvbmZpZy5HTV9JTkZPLnZpYnJhdGVPcGVuID0gdGhpcy52aWJyYXRlU3RhdGU7XHJcbiAgICAgICAgICAgIHRoaXMuc2V0TXVzaWNDb25maWcoKTtcclxuICAgICAgICAgICAgdGhpcy52aWJyYXRlLnJ1bkFjdGlvbihjYy5zZXF1ZW5jZShjYy5zcGF3bihjYy5tb3ZlVG8oMC4wNSwgY2MudjIoMTYxLHRoaXMudmlicmF0ZS55KSksIGNjLmZhZGVPdXQoMC4wNSkpLGNjLmNhbGxGdW5jKCgpPT57XHJcbiAgICAgICAgICAgICAgICB0aGlzLnZpYnJhdGUuZ2V0Q29tcG9uZW50KGNjLlNwcml0ZSkuc3ByaXRlRnJhbWUgPSB0aGlzLmNsb3NlO1xyXG4gICAgICAgICAgICB9KSxjYy5mYWRlSW4oMC4xKSkpXHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2V7XHJcbiAgICAgICAgICAgIHRoaXMudmlicmF0ZVN0YXRlID0gdHJ1ZTtcclxuICAgICAgICAgICAgY2MuZnguR2FtZUNvbmZpZy5HTV9JTkZPLnZpYnJhdGVPcGVuID0gdGhpcy52aWJyYXRlU3RhdGU7XHJcbiAgICAgICAgICAgIHRoaXMuc2V0TXVzaWNDb25maWcoKTtcclxuICAgICAgICAgICAgdGhpcy52aWJyYXRlLnJ1bkFjdGlvbihjYy5zZXF1ZW5jZShjYy5zcGF3bihjYy5tb3ZlVG8oMC4wNSwgY2MudjIoMjc4LHRoaXMudmlicmF0ZS55KSksIGNjLmZhZGVPdXQoMC4wNSkpLGNjLmNhbGxGdW5jKCgpPT57XHJcbiAgICAgICAgICAgICAgICB0aGlzLnZpYnJhdGUuZ2V0Q29tcG9uZW50KGNjLlNwcml0ZSkuc3ByaXRlRnJhbWUgPSB0aGlzLm9wZW47XHJcbiAgICAgICAgICAgIH0pLGNjLmZhZGVJbigwLjEpKSlcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgLy8gdXBkYXRlIChkdCkge31cclxufVxyXG4iXX0= //------QC-SOURCE-SPLIT------ (function() { @@ -10125,167 +7345,167 @@ cc._RF.pop(); cc._RF.push(module, 'e74a999IDFOabyymZgXQIiy', 'RankManager'); // Script/RankManager.ts -"use strict"; -var __extends = (this && this.__extends) || (function () { - var extendStatics = function (d, b) { - extendStatics = Object.setPrototypeOf || - ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) || - function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; }; - return extendStatics(d, b); - }; - return function (d, b) { - extendStatics(d, b); - function __() { this.constructor = d; } - d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); - }; -})(); -var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) { - var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; - if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc); - else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; - return c > 3 && r && Object.defineProperty(target, key, r), r; -}; -Object.defineProperty(exports, "__esModule", { value: true }); -var List_1 = require("./module/RankList/List"); -var _a = cc._decorator, ccclass = _a.ccclass, property = _a.property; -//排行榜 -var RankManager = /** @class */ (function (_super) { - __extends(RankManager, _super); - function RankManager() { - var _this = _super !== null && _super.apply(this, arguments) || this; - _this.Player = null; - _this.selfNode = null; - _this.phone = null; - return _this; - } - RankManager.prototype.onLoad = function () { - this.init(); - }; - //初始化数据 - RankManager.prototype.init = function () { - this.rankList = cc.find("ScrollView", this.node).getComponent(List_1.default); - this.Player.getChildByName("rank").active = false; - this.listData = []; - this.selfData = null; - this.rankNumber = 100; - this.rankTotal = 100; - this.selfNode.opacity = 0; - }; - RankManager.prototype.start = function () { - this.Player.active = false; - this.getRank(); - }; - //调用获取排行榜接口 - RankManager.prototype.getRank = function () { - var _this = this; - var dataFile = { - length: 100 - }; - cc.fx.GameTool.getRank(dataFile, function (data) { return _this.getRankData(data); }); - }; - //实际设置排行数据 - RankManager.prototype.getRankData = function (data) { - if (data) { - // console.log(data); - cc.fx.GameTool.getRankData(data, this, 6); - this.setPic(this.selfData.pic); - } - }; - //返回按钮 - RankManager.prototype.backClick = function () { - cc.director.loadScene("LoadScene"); - }; - //最上方用户动画 - RankManager.prototype.playerAction = function () { - var _this = this; - //-254 377 210 453 - this.Player.getChildByName("rank").active = false; - var time = 1; - this.tween = cc.tween(this.Player) - .to(2, { position: cc.v3(215, 525, 0) }) - .call(function () { - _this.Player.getChildByName("rank").active = true; - _this.Player.getChildByName("rank").getChildByName("number") - .getComponent(cc.Label).string = parseInt(time * 100 + "") + "%"; - }) - .start(); - time = (this.listData.length - this.rankNumber) / this.listData.length; - if (this.listData.length >= 99) { - if (this.rankNumber >= 99) { - time = (Math.random() * 49 + 1) / 100; - var matchId = cc.sys.localStorage.getItem("matchNumber"); - if (matchId == null || matchId == undefined) { - time = 0; - } - } - } - setTimeout(function () { - if (_this.tween) - _this.tween.stop(); - _this.Player.getChildByName("rank").active = true; - _this.Player.getChildByName("rank").getChildByName("number") - .getComponent(cc.Label).string = parseInt(time * 100 + "") + "%"; - }, time * 2000); - }; - //设置头像 处理的逻辑比较多,不用公共类的了 - RankManager.prototype.setPic = function (pic) { - var _this = this; - this.phone.node.parent.getChildByName("icon").active = false; - this.phone.node.active = false; - this.Player.active = true; - this.Player.opacity = 0; - this.Player.getChildByName("mask").getChildByName("icon").active = false; - this.Player.getChildByName("mask").getChildByName("phone").active = false; - fetch(pic) - .then(function (response) { - return response.headers.get('Content-Length'); - }) - .then(function (errNo) { - if (errNo == "5093") { - _this.phone.node.parent.getChildByName("icon").active = true; - _this.Player.getChildByName("mask").getChildByName("icon").active = true; - } - }) - .catch(function (error) { - // console.error('Error fetching X-Info:', error); - }); - var self = this; - cc.assetManager.loadRemote(pic, { ext: '.png' }, function (err, texture) { - self.Player.opacity = 255; - if (texture) { - self.phone.node.active = true; - self.phone.spriteFrame = new cc.SpriteFrame(texture); - self.Player.getChildByName("mask").getChildByName("icon").active = false; - self.Player.getChildByName("mask").getChildByName("phone").active = true; - self.Player.getChildByName("mask").getChildByName("phone").getComponent(cc.Sprite) - .spriteFrame = new cc.SpriteFrame(texture); - setTimeout(function () { - self.playerAction(); - }, 500); - } - else { - self.Player.getChildByName("mask").getChildByName("icon").active = true; - setTimeout(function () { - self.playerAction(); - }, 500); - } - }); - }; - __decorate([ - property(cc.Node) //用户上方头像 - ], RankManager.prototype, "Player", void 0); - __decorate([ - property(cc.Node) //用户最下方个人信息 - ], RankManager.prototype, "selfNode", void 0); - __decorate([ - property(cc.Sprite) //用户头像换图 - ], RankManager.prototype, "phone", void 0); - RankManager = __decorate([ - ccclass - ], RankManager); - return RankManager; -}(cc.Component)); -exports.default = RankManager; +"use strict"; +var __extends = (this && this.__extends) || (function () { + var extendStatics = function (d, b) { + extendStatics = Object.setPrototypeOf || + ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) || + function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; }; + return extendStatics(d, b); + }; + return function (d, b) { + extendStatics(d, b); + function __() { this.constructor = d; } + d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); + }; +})(); +var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) { + var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; + if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc); + else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; + return c > 3 && r && Object.defineProperty(target, key, r), r; +}; +Object.defineProperty(exports, "__esModule", { value: true }); +var List_1 = require("./module/RankList/List"); +var _a = cc._decorator, ccclass = _a.ccclass, property = _a.property; +//排行榜 +var RankManager = /** @class */ (function (_super) { + __extends(RankManager, _super); + function RankManager() { + var _this = _super !== null && _super.apply(this, arguments) || this; + _this.Player = null; + _this.selfNode = null; + _this.phone = null; + return _this; + } + RankManager.prototype.onLoad = function () { + this.init(); + }; + //初始化数据 + RankManager.prototype.init = function () { + this.rankList = cc.find("ScrollView", this.node).getComponent(List_1.default); + this.Player.getChildByName("rank").active = false; + this.listData = []; + this.selfData = null; + this.rankNumber = 100; + this.rankTotal = 100; + this.selfNode.opacity = 0; + }; + RankManager.prototype.start = function () { + this.Player.active = false; + this.getRank(); + }; + //调用获取排行榜接口 + RankManager.prototype.getRank = function () { + var _this = this; + var dataFile = { + length: 100 + }; + cc.fx.GameTool.getRank(dataFile, function (data) { return _this.getRankData(data); }); + }; + //实际设置排行数据 + RankManager.prototype.getRankData = function (data) { + if (data) { + // console.log(data); + cc.fx.GameTool.getRankData(data, this, 6); + this.setPic(this.selfData.pic); + } + }; + //返回按钮 + RankManager.prototype.backClick = function () { + cc.director.loadScene("LoadScene"); + }; + //最上方用户动画 + RankManager.prototype.playerAction = function () { + var _this = this; + //-254 377 210 453 + this.Player.getChildByName("rank").active = false; + var time = 1; + this.tween = cc.tween(this.Player) + .to(2, { position: cc.v3(215, 525, 0) }) + .call(function () { + _this.Player.getChildByName("rank").active = true; + _this.Player.getChildByName("rank").getChildByName("number") + .getComponent(cc.Label).string = parseInt(time * 100 + "") + "%"; + }) + .start(); + time = (this.listData.length - this.rankNumber) / this.listData.length; + if (this.listData.length >= 99) { + if (this.rankNumber >= 99) { + time = (Math.random() * 49 + 1) / 100; + var matchId = cc.sys.localStorage.getItem("matchNumber"); + if (matchId == null || matchId == undefined) { + time = 0; + } + } + } + setTimeout(function () { + if (_this.tween) + _this.tween.stop(); + _this.Player.getChildByName("rank").active = true; + _this.Player.getChildByName("rank").getChildByName("number") + .getComponent(cc.Label).string = parseInt(time * 100 + "") + "%"; + }, time * 2000); + }; + //设置头像 处理的逻辑比较多,不用公共类的了 + RankManager.prototype.setPic = function (pic) { + var _this = this; + this.phone.node.parent.getChildByName("icon").active = false; + this.phone.node.active = false; + this.Player.active = true; + this.Player.opacity = 0; + this.Player.getChildByName("mask").getChildByName("icon").active = false; + this.Player.getChildByName("mask").getChildByName("phone").active = false; + fetch(pic) + .then(function (response) { + return response.headers.get('Content-Length'); + }) + .then(function (errNo) { + if (errNo == "5093") { + _this.phone.node.parent.getChildByName("icon").active = true; + _this.Player.getChildByName("mask").getChildByName("icon").active = true; + } + }) + .catch(function (error) { + // console.error('Error fetching X-Info:', error); + }); + var self = this; + cc.assetManager.loadRemote(pic, { ext: '.png' }, function (err, texture) { + self.Player.opacity = 255; + if (texture) { + self.phone.node.active = true; + self.phone.spriteFrame = new cc.SpriteFrame(texture); + self.Player.getChildByName("mask").getChildByName("icon").active = false; + self.Player.getChildByName("mask").getChildByName("phone").active = true; + self.Player.getChildByName("mask").getChildByName("phone").getComponent(cc.Sprite) + .spriteFrame = new cc.SpriteFrame(texture); + setTimeout(function () { + self.playerAction(); + }, 500); + } + else { + self.Player.getChildByName("mask").getChildByName("icon").active = true; + setTimeout(function () { + self.playerAction(); + }, 500); + } + }); + }; + __decorate([ + property(cc.Node) //用户上方头像 + ], RankManager.prototype, "Player", void 0); + __decorate([ + property(cc.Node) //用户最下方个人信息 + ], RankManager.prototype, "selfNode", void 0); + __decorate([ + property(cc.Sprite) //用户头像换图 + ], RankManager.prototype, "phone", void 0); + RankManager = __decorate([ + ccclass + ], RankManager); + return RankManager; +}(cc.Component)); +exports.default = RankManager; cc._RF.pop(); } @@ -10299,5768 +7519,6 @@ cc._RF.pop(); } })(); //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImFzc2V0c1xcU2NyaXB0XFxSYW5rTWFuYWdlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFDQSwrQ0FBMEM7QUFDcEMsSUFBQSxLQUF3QixFQUFFLENBQUMsVUFBVSxFQUFuQyxPQUFPLGFBQUEsRUFBRSxRQUFRLGNBQWtCLENBQUM7QUFDNUMsS0FBSztBQUVMO0lBQXlDLCtCQUFZO0lBQXJEO1FBQUEscUVBK0hDO1FBN0hHLFlBQU0sR0FBWSxJQUFJLENBQUM7UUFFdkIsY0FBUSxHQUFZLElBQUksQ0FBQztRQUV6QixXQUFLLEdBQWMsSUFBSSxDQUFDOztJQXlINUIsQ0FBQztJQWpIRyw0QkFBTSxHQUFOO1FBQ0ksSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDO0lBQ2hCLENBQUM7SUFDRCxPQUFPO0lBQ1AsMEJBQUksR0FBSjtRQUNJLElBQUksQ0FBQyxRQUFRLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxZQUFZLEVBQUUsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLFlBQVksQ0FBQyxjQUFJLENBQUMsQ0FBQztRQUNwRSxJQUFJLENBQUMsTUFBTSxDQUFDLGNBQWMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxNQUFNLEdBQUcsS0FBSyxDQUFDO1FBQ2xELElBQUksQ0FBQyxRQUFRLEdBQUcsRUFBRSxDQUFDO1FBQ25CLElBQUksQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDO1FBQ3JCLElBQUksQ0FBQyxVQUFVLEdBQUcsR0FBRyxDQUFDO1FBQ3RCLElBQUksQ0FBQyxTQUFTLEdBQUUsR0FBRyxDQUFDO1FBQ3BCLElBQUksQ0FBQyxRQUFRLENBQUMsT0FBTyxHQUFHLENBQUMsQ0FBQztJQUM5QixDQUFDO0lBRUQsMkJBQUssR0FBTDtRQUNJLElBQUksQ0FBQyxNQUFNLENBQUMsTUFBTSxHQUFHLEtBQUssQ0FBQztRQUMzQixJQUFJLENBQUMsT0FBTyxFQUFFLENBQUM7SUFDbkIsQ0FBQztJ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QUM7Z0JBQzNDLFVBQVUsQ0FBQztvQkFDUCxJQUFJLENBQUMsWUFBWSxFQUFFLENBQUM7Z0JBQ3hCLENBQUMsRUFBRSxHQUFHLENBQUMsQ0FBQzthQUNYO2lCQUNHO2dCQUNBLElBQUksQ0FBQyxNQUFNLENBQUMsY0FBYyxDQUFDLE1BQU0sQ0FBQyxDQUFDLGNBQWMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFDO2dCQUN4RSxVQUFVLENBQUM7b0JBQ1AsSUFBSSxDQUFDLFlBQVksRUFBRSxDQUFDO2dCQUN4QixDQUFDLEVBQUUsR0FBRyxDQUFDLENBQUM7YUFDWDtRQUVMLENBQUMsQ0FBQyxDQUFBO0lBQ04sQ0FBQztJQTNIRDtRQURDLFFBQVEsQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLENBQVUsUUFBUTsrQ0FDYjtJQUV2QjtRQURDLFFBQVEsQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLENBQVUsV0FBVztpREFDZDtJQUV6QjtRQURDLFFBQVEsQ0FBQyxFQUFFLENBQUMsTUFBTSxDQUFDLENBQVEsUUFBUTs4Q0FDWjtJQU5QLFdBQVc7UUFEL0IsT0FBTztPQUNhLFdBQVcsQ0ErSC9CO0lBQUQsa0JBQUM7Q0EvSEQsQUErSEMsQ0EvSHdDLEVBQUUsQ0FBQyxTQUFTLEdBK0hwRDtrQkEvSG9CLFdBQVciLCJmaWxlIjoiIiwic291cmNlUm9vdCI6Ii8iLCJzb3VyY2VzQ29udGVudCI6WyJcclxuaW1wb3J0IExpc3QgZnJvbSBcIi4vbW9kdWxlL1JhbmtMaXN0L0xpc3RcIjtcclxuY29uc3QgeyBjY2NsYXNzLCBwcm9wZXJ0eSB9ID0gY2MuX2RlY29yYXRvcjtcclxuLy/mjpLooYzmppxcclxuQGNjY2xhc3NcclxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgUmFua01hbmFnZXIgZXh0ZW5kcyBjYy5Db21wb25lbnQge1xyXG4gICAgQHByb3BlcnR5KGNjLk5vZGUpICAgICAgICAgIC8v55So5oi35LiK5pa55aS05YOPXHJcbiAgICBQbGF5ZXI6IGNjLk5vZGUgPSBudWxsO1xyXG4gICAgQHByb3BlcnR5KGNjLk5vZGUpICAgICAgICAgIC8v55So5oi35pyA5LiL5pa55Liq5Lq65L+h5oGvXHJcbiAgICBzZWxmTm9kZTogY2MuTm9kZSA9IG51bGw7XHJcbiAgICBAcHJvcGVydHkoY2MuU3ByaXRlKSAgICAgICAgLy/nlKjmiLflpLTlg4/mjaLlm75cclxuICAgIHBob25lOiBjYy5TcHJpdGUgPSBudWxsO1xyXG4gICAgcHJpdmF0ZSByYW5rTGlzdDogTGlzdDsgICAgIC8v5o6S6KGM5qacXHJcbiAgICB0d2VlbjogY2MuVHdlZW48Y2MuTm9kZT47ICAgLy/mnIDkuIrmlrnnlKjmiLflpLTlg4/liqjnlLtcclxuICAgIGxpc3REYXRhOiBhbnk7ICAgICAgICAgICAgICAvL+aAu+WIl+ihqOS/oeaBr1xyXG4gICAgc2VsZkRhdGE6IGFueTsgICAgICAgICAgICAgIC8v6Ieq5bex5L+h5oGvXHJcbiAgICByYW5rTnVtYmVyOiBudW1iZXI7ICAgICAgICAgLy/nlKjmiLfoh6rlt7HmjpLlkI0g5pyJ5Y+v6IO95LiN5Zyo5o6S6KGM5qac5YaFOTkrXHJcbiAgICByYW5rVG90YWw6IG51bWJlcjsgICAgICAgICAgLy/ojrflj5bmjpLooYzmppznlKjmiLfmlbDph48g546w5Zyo5Li6MTAwXHJcblxyXG4gICAgb25Mb2FkKCkge1xyXG4gICAgICAgIHRoaXMuaW5pdCgpO1xyXG4gICAgfVxyXG4gICAgLy/liJ3lp4vljJbmlbDmja5cclxuICAgIGluaXQoKXtcclxuICAgICAgICB0aGlzLnJhbmtMaXN0ID0gY2MuZmluZChcIlNjcm9sbFZpZXdcIiwgdGhpcy5ub2RlKS5nZXRDb21wb25lbnQoTGlzdCk7XHJcbiAgICAgICAgdGhpcy5QbGF5ZXIuZ2V0Q2hpbGRCeU5hbWUoXCJyYW5rXCIpLmFjdGl2ZSA9IGZhbHNlO1xyXG4gICAgICAgIHRoaXMubGlzdERhdGEgPSBbXTtcclxuICAgICAgICB0aGlzLnNlbGZEYXRhID0gbnVsbDtcclxuICAgICAgICB0aGlzLnJhbmtOdW1iZXIgPSAxMDA7XHJcbiAgICAgICAgdGhpcy5yYW5rVG90YWw9IDEwMDtcclxuICAgICAgICB0aGlzLnNlbGZOb2RlLm9wYWNpdHkgPSAwO1xyXG4gICAgfVxyXG5cclxuICAgIHN0YXJ0KCkge1xyXG4gICAgICAgIHRoaXMuUGxheWVyLmFjdGl2ZSA9IGZhbHNlO1xyXG4gICAgICAgIHRoaXMuZ2V0UmFuaygpO1xyXG4gICAgfVxyXG4gICAgLy/osIPnlKjojrflj5bmjpLooYzmppzmjqXlj6NcclxuICAgIGdldFJhbmsoKXtcclxuICAgICAgICBsZXQgZGF0YUZpbGUgPSB7XHJcbiAgICAgICAgICAgIGxlbmd0aDoxMDBcclxuICAgICAgICB9XHJcbiAgICAgICAgIGNjLmZ4LkdhbWVUb29sLmdldFJhbmsoZGF0YUZpbGUsZGF0YSA9PnRoaXMuZ2V0UmFua0RhdGEoZGF0YSkpO1xyXG4gICAgfVxyXG4gICAgLy/lrp7pmYXorr7nva7mjpLooYzmlbDmja5cclxuICAgIGdldFJhbmtEYXRhKGRhdGEpe1xyXG4gICAgICAgIGlmKGRhdGEpe1xyXG4gICAgICAgICAgICAvLyBjb25zb2xlLmxvZyhkYXRhKTtcclxuICAgICAgICAgICAgY2MuZnguR2FtZVRvb2wuZ2V0UmFua0RhdGEoZGF0YSx0aGlzLDYpO1xyXG4gICAgICAgICAgICB0aGlzLnNldFBpYyh0aGlzLnNlbGZEYXRhLnBpYyk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG4gICAgLy/ov5Tlm57mjInpkq5cclxuICAgIGJhY2tDbGljaygpe1xyXG4gICAgICAgIGNjLmRpcmVjdG9yLmxvYWRTY2VuZShcIkxvYWRTY2VuZVwiKTtcclxuICAgIH1cclxuICAgIC8v5pyA5LiK5pa555So5oi35Yqo55S7XHJcbiAgICBwbGF5ZXJBY3Rpb24oKXtcclxuICAgICAgICAvLy0yNTQgMzc3ICAyMTAgNDUzXHJcbiAgICAgICAgdGhpcy5QbGF5ZXIuZ2V0Q2hpbGRCeU5hbWUoXCJyYW5rXCIpLmFjdGl2ZSA9IGZhbHNlO1xyXG4gICAgICAgIGxldCB0aW1lID0gMTtcclxuICAgICAgICB0aGlzLnR3ZWVuID0gY2MudHdlZW4odGhpcy5QbGF5ZXIpXHJcbiAgICAgICAgLnRvKDIse3Bvc2l0aW9uOmNjLnYzKDIxNSw1MjUsMCl9KVxyXG4gICAgICAgIC5jYWxsKCgpID0+e1xyXG4gICAgICAgICAgICB0aGlzLlBsYXllci5nZXRDaGlsZEJ5TmFtZShcInJhbmtcIikuYWN0aXZlID0gdHJ1ZTtcclxuICAgICAgICAgICAgdGhpcy5QbGF5ZXIuZ2V0Q2hpbGRCeU5hbWUoXCJyYW5rXCIpLmdldENoaWxkQnlOYW1lKFwibnVtYmVyXCIpXHJcbiAgICAgICAgICAgIC5nZXRDb21wb25lbnQoY2MuTGFiZWwpLnN0cmluZyA9ICBwYXJzZUludCh0aW1lKjEwMCArIFwiXCIpICsgXCIlXCI7XHJcbiAgICAgICAgfSlcclxuICAgICAgICAuc3RhcnQoKTtcclxuICAgICAgICB0aW1lID0gKHRoaXMubGlzdERhdGEubGVuZ3RoIC0gdGhpcy5yYW5rTnVtYmVyKS90aGlzLmxpc3REYXRhLmxlbmd0aDtcclxuICAgICAgICBpZih0aGlzLmxpc3REYXRhLmxlbmd0aCA+PSA5OSl7XHJcbiAgICAgICAgICAgIGlmKHRoaXMucmFua051bWJlciA+PSA5OSl7XHJcbiAgICAgICAgICAgICAgICB0aW1lID0gKE1hdGgucmFuZG9tKCkqNDkrMSkvMTAwXHJcbiAgICAgICAgICAgICAgICB2YXIgbWF0Y2hJZCA9IGNjLnN5cy5sb2NhbFN0b3JhZ2UuZ2V0SXRlbShcIm1hdGNoTnVtYmVyXCIpO1xyXG4gICAgICAgICAgICAgICAgaWYobWF0Y2hJZCA9PSBudWxsIHx8IG1hdGNoSWQgPT0gdW5kZWZpbmVkKXtcclxuICAgICAgICAgICAgICAgICAgICB0aW1lID0gMDtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgICAgICAgaWYodGhpcy50d2Vlbil0aGlzLnR3ZWVuLnN0b3AoKTtcclxuICAgICAgICAgICAgdGhpcy5QbGF5ZXIuZ2V0Q2hpbGRCeU5hbWUoXCJyYW5rXCIpLmFjdGl2ZSA9IHRydWU7XHJcbiAgICAgICAgICAgIHRoaXMuUGxheWVyLmdldENoaWxkQnlOYW1lKFwicmFua1wiKS5nZXRDaGlsZEJ5TmFtZShcIm51bWJlclwiKVxyXG4gICAgICAgICAgICAuZ2V0Q29tcG9uZW50KGNjLkxhYmVsKS5zdHJpbmcgPSAgcGFyc2VJbnQodGltZSoxMDAgKyBcIlwiKSArIFwiJVwiO1xyXG4gICAgICAgIH0sIHRpbWUqMjAwMCk7XHJcblxyXG4gICAgfVxyXG4gICAgLy/orr7nva7lpLTlg48gIOWkhOeQhueahOmAu+i+keavlOi+g+Wkmu+8jOS4jeeUqOWFrOWFseexu+eahOS6hlxyXG4gICAgcHVibGljIHNldFBpYyhwaWMpe1xyXG4gICAgICAgIHRoaXMucGhvbmUubm9kZS5wYXJlbnQuZ2V0Q2hpbGRCeU5hbWUoXCJpY29uXCIpLmFjdGl2ZSA9IGZhbHNlO1xyXG4gICAgICAgIHRoaXMucGhvbmUubm9kZS5hY3RpdmUgPSBmYWxzZTtcclxuICAgICAgICB0aGlzLlBsYXllci5hY3RpdmUgPSB0cnVlO1xyXG4gICAgICAgIHRoaXMuUGxheWVyLm9wYWNpdHkgPSAwO1xyXG4gICAgICAgIHRoaXMuUGxheWVyLmdldENoaWxkQnlOYW1lKFwibWFza1wiKS5nZXRDaGlsZEJ5TmFtZShcImljb25cIikuYWN0aXZlID0gZmFsc2U7XHJcbiAgICAgICAgdGhpcy5QbGF5ZXIuZ2V0Q2hpbGRCeU5hbWUoXCJtYXNrXCIpLmdldENoaWxkQnlOYW1lKFwicGhvbmVcIikuYWN0aXZlID0gZmFsc2U7XHJcbiAgICAgICAgZmV0Y2gocGljKVxyXG4gICAgICAgIC50aGVuKHJlc3BvbnNlID0+IHtcclxuICAgICAgICAgICAgcmV0dXJuIHJlc3BvbnNlLmhlYWRlcnMuZ2V0KCdDb250ZW50LUxlbmd0aCcpO1xyXG4gICAgICAgIH0pXHJcbiAgICAgICAgLnRoZW4oZXJyTm8gPT4ge1xyXG4gICAgICAgICAgICBpZihlcnJObyA9PSBcIjUwOTNcIil7XHJcbiAgICAgICAgICAgICAgICB0aGlzLnBob25lLm5vZGUucGFyZW50LmdldENoaWxkQnlOYW1lKFwiaWNvblwiKS5hY3RpdmUgPSB0cnVlO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5QbGF5ZXIuZ2V0Q2hpbGRCeU5hbWUoXCJtYXNrXCIpLmdldENoaWxkQnlOYW1lKFwiaWNvblwiKS5hY3RpdmUgPSB0cnVlO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfSlcclxuICAgICAgICAuY2F0Y2goZXJyb3IgPT4ge1xyXG4gICAgICAgICAgICAvLyBjb25zb2xlLmVycm9yKCdFcnJvciBmZXRjaGluZyBYLUluZm86JywgZXJyb3IpO1xyXG4gICAgICAgIH0pO1xyXG4gICAgICAgIHZhciBzZWxmID0gdGhpcztcclxuICAgICAgICBjYy5hc3NldE1hbmFnZXIubG9hZFJlbW90ZShwaWMsIHtleHQ6Jy5wbmcnfSwoZXJyLCB0ZXh0dXJlOmNjLlRleHR1cmUyRCkgPT4ge1xyXG4gICAgICAgICAgICBzZWxmLlBsYXllci5vcGFjaXR5ID0gMjU1O1xyXG4gICAgICAgICAgICBpZih0ZXh0dXJlKXtcclxuICAgICAgICAgICAgICAgIHNlbGYucGhvbmUubm9kZS5hY3RpdmUgPSB0cnVlO1xyXG4gICAgICAgICAgICAgICAgc2VsZi5waG9uZS5zcHJpdGVGcmFtZSA9IG5ldyBjYy5TcHJpdGVGcmFtZSh0ZXh0dXJlKTtcclxuICAgICAgICAgICAgICAgIHNlbGYuUGxheWVyLmdldENoaWxkQnlOYW1lKFwibWFza1wiKS5nZXRDaGlsZEJ5TmFtZShcImljb25cIikuYWN0aXZlID0gZmFsc2U7XHJcbiAgICAgICAgICAgICAgICBzZWxmLlBsYXllci5nZXRDaGlsZEJ5TmFtZShcIm1hc2tcIikuZ2V0Q2hpbGRCeU5hbWUoXCJwaG9uZVwiKS5hY3RpdmUgPSB0cnVlO1xyXG4gICAgICAgICAgICAgICAgc2VsZi5QbGF5ZXIuZ2V0Q2hpbGRCeU5hbWUoXCJtYXNrXCIpLmdldENoaWxkQnlOYW1lKFwicGhvbmVcIikuZ2V0Q29tcG9uZW50KGNjLlNwcml0ZSlcclxuICAgICAgICAgICAgICAgIC5zcHJpdGVGcmFtZSA9IG5ldyBjYy5TcHJpdGVGcmFtZSh0ZXh0dXJlKTtcclxuICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgIHNlbGYucGxheWVyQWN0aW9uKCk7XHJcbiAgICAgICAgICAgICAgICB9LCA1MDApO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGVsc2V7XHJcbiAgICAgICAgICAgICAgICBzZWxmLlBsYXllci5nZXRDaGlsZEJ5TmFtZShcIm1hc2tcIikuZ2V0Q2hpbGRCeU5hbWUoXCJpY29uXCIpLmFjdGl2ZSA9IHRydWU7XHJcbiAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICBzZWxmLnBsYXllckFjdGlvbigpO1xyXG4gICAgICAgICAgICAgICAgfSwgNTAwKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBcclxuICAgICAgICB9KVxyXG4gICAgfVxyXG5cclxufVxyXG4iXX0= -======= -//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImFzc2V0c1xcU2NyaXB0XFxtb2R1bGVcXENvbmZpZ1xcR2FtZUNvbmZpZy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFJTSxJQUFBLEtBQXdCLEVBQUUsQ0FBQyxVQUFVLEVBQW5DLE9BQU8sYUFBQSxFQUFFLFFBQVEsY0FBa0IsQ0FBQztBQUU1QztJQUFBO0lBb2VBLENBQUM7bUJBcGVZLFVBQVU7SUF3Rm5CLHNCQUFXLHNCQUFRO1FBRm5CLE9BQU87YUFFUDtZQUVJLElBQUksSUFBSSxDQUFDLFNBQVMsSUFBSSxJQUFJLEVBQzFCO2dCQUNJLElBQUksQ0FBQyxTQUFTLEdBQUcsSUFBSSxZQUFVLEVBQUUsQ0FBQzthQUNyQztZQUNELE9BQU8sSUFBSSxDQUFDLFNBQVMsQ0FBQztRQUMxQixDQUFDOzs7T0FBQTtJQUNELGVBQWU7SUFDUixlQUFJLEdBQVgsVUFBWSxjQUFjO1FBQ2YsWUFBWTtRQUNuQixJQUFJLE9BQU8sRUFBRSxLQUFLLFdBQVcsSUFBSSxFQUFFLEtBQUssSUFBSSxFQUFFO1lBQzFDLFlBQVk7WUFDWixFQUFFLENBQUMsS0FBSyxDQUFDLElBQUksRUFBRSxDQUFDO1NBR25CO1FBRUQsSUFBSSxDQUFDLEVBQUUsR0FBRyxJQUFJLENBQUM7UUFDZixJQUFJLENBQUMsVUFBVSxFQUFFLENBQUM7UUFDbEIsSUFBSSxDQUFDLFlBQVksRUFBRSxDQUFDO1FBQ3BCLElBQUksQ0FBQyxlQUFlLENBQUMsS0FBSyxFQUFDLENBQUMsQ0FBQyxDQUFDO1FBRTlCLElBQUksSUFBSSxHQUFHLElBQUksQ0FBQztRQUNoQixtQ0FBbUM7UUFDbkMsSUFBSSxDQUFDLFNBQVMsR0FBRyxFQUNoQixDQUFBO1FBR0QsNkNBQTZDO0lBQ2pELENBQUM7SUFJTSx1QkFBWSxHQUFuQjtRQUNJLE9BQU8sc0NBQXNDLENBQUMsT0FBTyxDQUFDLE9BQU8sRUFBRSxVQUFTLENBQUM7WUFDckUsSUFBTSxDQUFDLEdBQUcsSUFB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LENBQUMsRUFBRSxJQUFJLENBQUMsQ0FBQztxQkFDWjtnQkFDTCxDQUFDLENBQUMsQ0FBQTthQUNMO1FBRVQsQ0FBQyxDQUFDLENBQUE7UUFHSCxRQUFRO1FBQ1QsSUFBSSxDQUFDLFNBQVMsR0FBRztZQUNYO2dCQUNJLE1BQU0sRUFBRSxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUUsRUFBRSxHQUFHLEVBQUUsRUFBRSxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUU7Z0JBQ3JDLE1BQU0sRUFBRSxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUUsRUFBRSxHQUFHLEVBQUUsRUFBRSxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUU7Z0JBQ3JDLE1BQU0sRUFBRSxFQUFFLEdBQUcsRUFBRSxDQUFDLE1BQU0sRUFBRSxHQUFHLEVBQUUsTUFBTSxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUU7Z0JBQzdDLE1BQU0sRUFBRSxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUUsRUFBRSxHQUFHLEVBQUUsRUFBRSxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUU7Z0JBQ3JDLE1BQU0sRUFBRSxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUUsRUFBRSxHQUFHLEVBQUUsRUFBRSxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUU7Z0JBQ3JDLE1BQU0sRUFBRSxFQUFFLEdBQUcsRUFBRSxDQUFDLENBQUMsRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUU7YUFDdEM7WUFDRDtnQkFDSSxNQUFNLEVBQUUsRUFBRSxHQUFHLEVBQUUsQ0FBQyxHQUFHLEVBQUUsR0FBRyxFQUFFLEVBQUUsRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFFO2dCQUN0QyxNQUFNLEVBQUUsRUFBRSxHQUFHLEVBQUUsQ0FBQyxNQUFNLEVBQUUsR0FBRyxFQUFFLE1BQU0sRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFFO2dCQUM3QyxNQUFNLEVBQUUsRUFBRSxHQUFHLEVBQUUsQ0FBQyxNQUFNLEVBQUUsR0FBRyxFQUFFLE1BQU0sRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFFO2dCQUM3QyxNQUFNLEVBQUUsRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFFLEVBQUUsR0FBRyxFQUFFLEVBQUUsRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFFO2dCQUNyQyxNQUFNLEVBQUUsRUFBRSxHQUFHLEVBQUUsQ0FBQyxHQUFHLEVBQUUsR0FBRyxFQUFFLEVBQUUsRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFFO2dCQUN0QyxNQUFNLEVBQUUsRUFBRSxHQUFHLEVBQUUsQ0FBQyxDQUFDLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFFO2FBQ3RDO1lBQ0Q7Z0JBQ0ksTUFBTSxFQUFFLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBRSxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBRTtnQkFDdEMsTUFBTSxFQUFFLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBRSxFQUFFLEdBQUcsRUFBRSxFQUFFLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBRTtnQkFDckMsTUFBTSxFQUFFLEVBQUUsR0FBRyxFQUFFLENBQUMsTUFBTSxFQUFFLEdBQUcsRUFBRSxNQUFNLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBRTtnQkFDN0MsTUFBTSxFQUFFLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBRSxFQUFFLEdBQUcsRUFBRSxFQUFFLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBRTtnQkFDckMsTUFBTSxFQUFFLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBRSxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBRTtnQkFDdEMsTUFBTSxFQUFFLEVBQUUsR0FBRyxFQUFFLENBQUMsQ0FBQyxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBRTthQUN0QztZQUNEO2dCQUNJLE1BQU0sRUFBRSxFQUFFLEdBQUcsRUFBRSxDQUFDLEdBQUcsRUFBRSxHQUFHLEVBQUUsRUFBRSxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUU7Z0JBQ3RDLE1BQU0sRUFBRSxFQUFFLEdBQUcsRUFBRSxDQUFDLE1BQU0sRUFBRSxHQUFHLEVBQUUsTUFBTSxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUU7Z0JBQzdDLE1BQU0sRUFBRSxFQUFFLEdBQUcsRUFBRSxDQUFDLEdBQUcsRUFBRSxHQUFHLEVBQUUsTUFBTSxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUU7Z0JBQzFDLE1BQU0sRUFBRSxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUUsRUFBRSxHQUFHLEVBQUUsRUFBRSxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUU7Z0JBQ3JDLE1BQU0sRUFBRSxFQUFFLEdBQUcsRUFBRSxDQUFDLEdBQUcsRUFBRSxHQUFHLEVBQUUsRUFBRSxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUU7Z0JBQ3RDLE1BQU0sRUFBRSxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFFO2FBQ3JDO1lBQ0Q7Z0JBQ0ksTUFBTSxFQUFFLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBRSxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBRTtnQkFDdEMsTUFBTSxFQUFFLEVBQUUsR0FBRyxFQUFFLENBQUMsTUFBTSxFQUFFLEdBQUcsRUFBRSxPQUFPLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBRTtnQkFDOUMsTUFBTSxFQUFFLEVBQUUsR0FBRyxFQUFFLENBQUMsTUFBTSxFQUFFLEdBQUcsRUFBRSxNQUFNLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBRTtnQkFDN0MsTUFBTSxFQUFFLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBRSxFQUFFLEdBQUcsRUFBRSxFQUFFLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBRTtnQkFDckMsTUFBTSxFQUFFLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBRSxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBRTtnQkFDdEMsTUFBTSxFQUFFLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUU7YUFDckM7WUFDRDtnQkFDSSxNQUFNLEVBQUUsRUFBRSxHQUFHLEVBQUUsQ0FBQyxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFFO2dCQUN2QyxNQUFNLEVBQUUsRUFBRSxHQUFHLEVBQUUsQ0FBQyxNQUFNLEVBQUUsR0FBRyxFQUFFLE1BQU0sRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFFO2dCQUM3QyxNQUFNLEVBQUUsRUFBRSxHQUFHLEVBQUUsQ0FBQyxNQUFNLEVBQUUsR0FBRyxFQUFFLE1BQU0sRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFFO2dCQUM3QyxNQUFNLEVBQUUsRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFFLEVBQUUsR0FBRyxFQUFFLEVBQUUsRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFFO2dCQUNyQyxNQUFNLEVBQUUsRUFBRSxHQUFHLEVBQUUsQ0FBQyxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFFO2dCQUN2QyxNQUFNLEVBQUUsRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBRTthQUNyQztZQUNEO2dCQUNJLE1BQU0sRUFBRSxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUUsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUU7Z0JBQ3RDLE1BQU0sRUFBRSxFQUFFLEdBQUcsRUFBRSxDQUFDLE1BQU0sRUFBRSxHQUFHLEVBQUUsT0FBTyxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUU7Z0JBQzlDLE1BQU0sRUFBRSxFQUFFLEdBQUcsRUFBRSxDQUFDLE1BQU0sRUFBRSxHQUFHLEVBQUUsTUFBTSxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUU7Z0JBQzdDLE1BQU0sRUFBRSxFQUFFLEdBQUcsRUFBRSxDQUFDLENBQUMsRUFBRSxHQUFHLEVBQUUsRUFBRSxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUU7Z0JBQ3BDLE1BQU0sRUFBRSxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUUsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUU7Z0JBQ3RDLE1BQU0sRUFBRSxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFFO2FBQ3JDO1lBQ0Q7Z0JBQ0ksTUFBTSxFQUFFLEVBQUUsR0FBRyxFQUFFLENBQUMsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBRTtnQkFDdkMsTUFBTSxFQUFFLEVBQUUsR0FBRyxFQUFFLENBQUMsTUFBTSxFQUFFLEdBQUcsRUFBRSxPQUFPLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBRTtnQkFDOUMsTUFBTSxFQUFFLEVBQUUsR0FBRyxFQUFFLENBQUMsTUFBTSxFQUFFLEdBQUcsRUFBRSxNQUFNLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBRTtnQkFDN0MsTUFBTSxFQUFFLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBRSxFQUFFLEdBQUcsRUFBRSxFQUFFLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBRTtnQkFDckMsTUFBTSxFQUFFLEVBQUUsR0FBRyxFQUFFLENBQUMsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBRTtnQkFDdkMsTUFBTSxFQUFFLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUU7YUFDckM7WUFDRDtnQkFDSSxNQUFNLEVBQUUsRUFBRSxHQUFHLEVBQUUsQ0FBQyxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFFO2dCQUN2QyxNQUFNLEVBQUUsRUFBRSxHQUFHLEVBQUUsQ0FBQyxNQUFNLEVBQUUsR0FBRyxFQUFFLE1BQU0sRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFFO2dCQUM3QyxNQUFNLEVBQUUsRUFBRSxHQUFHLEVBQUUsQ0FBQyxPQUFPLEVBQUUsR0FBRyxFQUFFLE1BQU0sRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFFO2dCQUM5QyxNQUFNLEVBQUUsRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFFLEVBQUUsR0FBRyxFQUFFLEVBQUUsRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFFO2dCQUNyQyxNQUFNLEVBQUUsRUFBRSxHQUFHLEVBQUUsQ0FBQyxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFFO2dCQUN2QyxNQUFNLEVBQUUsRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBRTthQUNyQztZQUNEO2dCQUNJLE1BQU0sRUFBRSxFQUFFLEdBQUcsRUFBRSxDQUFDLEdBQUcsRUFBRSxHQUFHLEVBQUUsRUFBRSxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUU7Z0JBQ3RDLE1BQU0sRUFBRSxFQUFFLEdBQUcsRUFBRSxDQUFDLE1BQU0sRUFBRSxHQUFHLEVBQUUsTUFBTSxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUU7Z0JBQzdDLE1BQU0sRUFBRSxFQUFFLEdBQUcsRUFBRSxDQUFDLE1BQU0sRUFBRSxHQUFHLEVBQUUsTUFBTSxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUU7Z0JBQzdDLE1BQU0sRUFBRSxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUUsRUFBRSxHQUFHLEVBQUUsRUFBRSxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUU7Z0JBQ3JDLE1BQU0sRUFBRSxFQUFFLEdBQUcsRUFBRSxDQUFDLEdBQUcsRUFBRSxHQUFHLEVBQUUsRUFBRSxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUU7Z0JBQ3RDLE1BQU0sRUFBRSxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFFO2FBQ3JDO1lBQ0Q7Z0JBQ0ksTUFBTSxFQUFFLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBRSxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBRTtnQkFDdEMsTUFBTSxFQUFFLEVBQUUsR0FBRyxFQUFFLE1BQU0sRUFBRSxHQUFHLEVBQUUsT0FBTyxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUU7Z0JBQzdDLE1BQU0sRUFBRSxFQUFFLEdBQUcsRUFBRSxDQUFDLE1BQU0sRUFBRSxHQUFHLEVBQUUsTUFBTSxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUU7Z0JBQzdDLE1BQU0sRUFBRSxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUUsR0FBRyxFQUFFLEVBQUUsRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFFO2dCQUNuQyxNQUFNLEVBQUUsRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFFLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFFO2dCQUN0QyxNQUFNLEVBQUUsRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBRTthQUNyQztZQUNEO2dCQUNJLE1BQU0sRUFBRSxFQUFFLEdBQUcsRUFBRSxFQUFFLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFFO2dCQUNyQyxNQUFNLEVBQUUsRUFBRSxHQUFHLEVBQUUsT0FBTyxFQUFFLEdBQUcsRUFBRSxPQUFPLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBRTtnQkFDOUMsTUFBTSxFQUFFLEVBQUUsR0FBRyxFQUFFLENBQUMsTUFBTSxFQUFFLEdBQUcsRUFBRSxNQUFNLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBRTtnQkFDN0MsTUFBTSxFQUFFLEVBQUUsR0FBRyxFQUFFLEtBQUssRUFBRSxHQUFHLEVBQUUsTUFBTSxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUU7Z0JBQzNDLE1BQU0sRUFBRSxFQUFFLEdBQUcsRUFBRSxFQUFFLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFFO2dCQUNyQyxNQUFNLEVBQUUsRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBRTthQUNyQztZQUNEO2dCQUNJLE1BQU0sRUFBRSxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUUsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUU7Z0JBQ3RDLE1BQU0sRUFBRSxFQUFFLEdBQUcsRUFBRSxDQUFDLE1BQU0sRUFBRSxHQUFHLEVBQUUsTUFBTSxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUU7Z0JBQzdDLE1BQU0sRUFBRSxFQUFFLEdBQUcsRUFBRSxDQUFDLE1BQU0sRUFBRSxHQUFHLEVBQUUsTUFBTSxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUU7Z0JBQzdDLE1BQU0sRUFBRSxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUUsRUFBRSxHQUFHLEVBQUUsRUFBRSxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUU7Z0JBQ3JDLE1BQU0sRUFBRSxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUUsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUU7Z0JBQ3RDLE1BQU0sRUFBRSxFQUFFLEdBQUcsRUFBRSxDQUFDLENBQUMsRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUU7YUFDdEM7WUFDRDtnQkFDSSxNQUFNLEVBQUUsRUFBRSxHQUFHLEVBQUUsQ0FBQyxHQUFHLEVBQUUsR0FBRyxFQUFFLEVBQUUsRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFFO2dCQUN0QyxNQUFNLEVBQUUsRUFBRSxHQUFHLEVBQUUsQ0FBQyxNQUFNLEVBQUUsR0FBRyxFQUFFLE1BQU0sRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFFO2dCQUM3QyxNQUFNLEVBQUUsRUFBRSxHQUFHLEVBQUUsQ0FBQyxPQUFPLEVBQUUsR0FBRyxFQUFFLE1BQU0sRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFFO2dCQUM5QyxNQUFNLEVBQUUsRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFFLEVBQUUsR0FBRyxFQUFFLEVBQUUsRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFFO2dCQUNyQyxNQUFNLEVBQUUsRUFBRSxHQUFHLEVBQUUsQ0FBQyxHQUFHLEVBQUUsR0FBRyxFQUFFLEVBQUUsRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFFO2dCQUN0QyxNQUFNLEVBQUUsRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBRTthQUNyQztZQUNEO2dCQUNJLE1BQU0sRUFBRSxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUUsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUU7Z0JBQ3RDLE1BQU0sRUFBRSxFQUFFLEdBQUcsRUFBRSxNQUFNLEVBQUUsR0FBRyxFQUFFLE9BQU8sRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFFO2dCQUM3QyxNQUFNLEVBQUUsRUFBRSxHQUFHLEVBQUUsQ0FBQyxNQUFNLEVBQUUsR0FBRyxFQUFFLE1BQU0sRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFFO2dCQUM3QyxNQUFNLEVBQUUsRUFBRSxHQUFHLEVBQUUsQ0FBQyxDQUFDLEVBQUUsR0FBRyxFQUFFLEVBQUUsRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFFO2dCQUNwQyxNQUFNLEVBQUUsRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFFLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFFO2dCQUN0QyxNQUFNLEVBQUUsRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBRTthQUNyQztZQUNEO2dCQUNJLE1BQU0sRUFBRSxFQUFFLEdBQUcsRUFBRSxDQUFDLEdBQUcsRUFBRSxHQUFHLEVBQUUsRUFBRSxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUU7Z0JBQ3RDLE1BQU0sRUFBRSxFQUFFLEdBQUcsRUFBRSxDQUFDLE1BQU0sRUFBRSxHQUFHLEVBQUUsTUFBTSxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUU7Z0JBQzdDLE1BQU0sRUFBRSxFQUFFLEdBQUcsRUFBRSxDQUFDLE9BQU8sRUFBRSxHQUFHLEVBQUUsTUFBTSxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUU7Z0JBQzlDLE1BQU0sRUFBRSxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUUsRUFBRSxHQUFHLEVBQUUsRUFBRSxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUU7Z0JBQ3JDLE1BQU0sRUFBRSxFQUFFLEdBQUcsRUFBRSxDQUFDLEdBQUcsRUFBRSxHQUFHLEVBQUUsRUFBRSxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUU7Z0JBQ3RDLE1BQU0sRUFBRSxFQUFFLEdBQUcsRUFBRSxDQUFDLENBQUMsRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUU7YUFDdEM7WUFDRDtnQkFDSSxNQUFNLEVBQUUsRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFFLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFFO2dCQUN0QyxNQUFNLEVBQUUsRUFBRSxHQUFHLEVBQUUsTUFBTSxFQUFFLEdBQUcsRUFBRSxPQUFPLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBRTtnQkFDN0MsTUFBTSxFQUFFLEVBQUUsR0FBRyxFQUFFLENBQUMsTUFBTSxFQUFFLEdBQUcsRUFBRSxNQUFNLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBRTtnQkFDN0MsTUFBTSxFQUFFLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBRSxFQUFFLEdBQUcsRUFBRSxFQUFFLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBRTtnQkFDckMsTUFBTSxFQUFFLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBRSxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBRTtnQkFDdEMsTUFBTSxFQUFFLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUU7YUFDckM7WUFDRDtnQkFDSSxNQUFNLEVBQUUsRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFFLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFFO2dCQUN0QyxNQUFNLEVBQUUsRUFBRSxHQUFHLEVBQUUsQ0FBQyxNQUFNLEVBQUUsR0FBRyxFQUFFLE9BQU8sRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFFO2dCQUM5QyxNQUFNLEVBQUUsRUFBRSxHQUFHLEVBQUUsQ0FBQyxNQUFNLEVBQUUsR0FBRyxFQUFFLE1BQU0sRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFFO2dCQUM3QyxNQUFNLEVBQUUsRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFFLEVBQUUsR0FBRyxFQUFFLEVBQUUsRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFFO2dCQUNyQyxNQUFNLEVBQUUsRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFFLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFFO2dCQUN0QyxNQUFNLEVBQUUsRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBRTthQUNyQztZQUNEO2dCQUNJLE1BQU0sRUFBRSxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUUsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUU7Z0JBQ3RDLE1BQU0sRUFBRSxFQUFFLEdBQUcsRUFBRSxNQUFNLEVBQUUsR0FBRyxFQUFFLE9BQU8sRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFFO2dCQUM3QyxNQUFNLEVBQUUsRUFBRSxHQUFHLEVBQUUsQ0FBQyxNQUFNLEVBQUUsR0FBRyxFQUFFLE1BQU0sRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFFO2dCQUM3QyxNQUFNLEVBQUUsRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFFLEVBQUUsR0FBRyxFQUFFLEVBQUUsRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFFO2dCQUNyQyxNQUFNLEVBQUUsRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFFLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFFO2dCQUN0QyxNQUFNLEVBQUUsRUFBRSxHQUFHLEVBQUUsQ0FBQyxDQUFDLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFFO2FBQ3RDO1lBQ0Q7Z0JBQ0ksTUFBTSxFQUFFLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBRSxFQUFFLEdBQUcsRUFBRSxFQUFFLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBRTtnQkFDckMsTUFBTSxFQUFFLEVBQUUsR0FBRyxFQUFFLENBQUMsTUFBTSxFQUFFLEdBQUcsRUFBRSxNQUFNLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBRTtnQkFDN0MsTUFBTSxFQUFFLEVBQUUsR0FBRyxFQUFFLENBQUMsTUFBTSxFQUFFLEdBQUcsRUFBRSxNQUFNLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBRTtnQkFDN0MsTUFBTSxFQUFFLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBRSxFQUFFLEdBQUcsRUFBRSxFQUFFLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBRTtnQkFDckMsTUFBTSxFQUFFLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBRSxFQUFFLEdBQUcsRUFBRSxFQUFFLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBRTtnQkFDckMsTUFBTSxFQUFFLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUU7YUFDckM7WUFDRDtnQkFDSSxNQUFNLEVBQUUsRUFBRSxHQUFHLEVBQUUsQ0FBQyxHQUFHLEVBQUUsR0FBRyxFQUFFLEVBQUUsRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFFO2dCQUN0QyxNQUFNLEVBQUUsRUFBRSxHQUFHLEVBQUUsQ0FBQyxNQUFNLEVBQUUsR0FBRyxFQUFFLE1BQU0sRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFFO2dCQUM3QyxNQUFNLEVBQUUsRUFBRSxHQUFHLEVBQUUsQ0FBQyxPQUFPLEVBQUUsR0FBRyxFQUFFLE1BQU0sRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFFO2dCQUM5QyxNQUFNLEVBQUUsRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFFLEVBQUUsR0FBRyxFQUFFLEVBQUUsRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFFO2dCQUNyQyxNQUFNLEVBQUUsRUFBRSxHQUFHLEVBQUUsQ0FBQyxHQUFHLEVBQUUsR0FBRyxFQUFFLEVBQUUsRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFFO2dCQUN0QyxNQUFNLEVBQUUsRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBRTthQUNyQztZQUNEO2dCQUNJLE1BQU0sRUFBRSxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUUsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUU7Z0JBQ3RDLE1BQU0sRUFBRSxFQUFFLEdBQUcsRUFBRSxNQUFNLEVBQUUsR0FBRyxFQUFFLE9BQU8sRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFFO2dCQUM3QyxNQUFNLEVBQUUsRUFBRSxHQUFHLEVBQUUsQ0FBQyxNQUFNLEVBQUUsR0FBRyxFQUFFLE1BQU0sRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFFO2dCQUM3QyxNQUFNLEVBQUUsRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFFLEVBQUUsR0FBRyxFQUFFLEVBQUUsRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFFO2dCQUNyQyxNQUFNLEVBQUUsRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFFLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFFO2dCQUN0QyxNQUFNLEVBQUUsRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBRTthQUNyQztZQUNEO2dCQUNJLE1BQU0sRUFBRSxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUUsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUU7Z0JBQ3RDLE1BQU0sRUFBRSxFQUFFLEdBQUcsRUFBRSxDQUFDLE1BQU0sRUFBRSxHQUFHLEVBQUUsT0FBTyxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUU7Z0JBQzlDLE1BQU0sRUFBRSxFQUFFLEdBQUcsRUFBRSxDQUFDLE1BQU0sRUFBRSxHQUFHLEVBQUUsTUFBTSxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUU7Z0JBQzdDLE1BQU0sRUFBRSxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUUsRUFBRSxHQUFHLEVBQUUsRUFBRSxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUU7Z0JBQ3JDLE1BQU0sRUFBRSxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUUsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUU7Z0JBQ3RDLE1BQU0sRUFBRSxFQUFFLEdBQUcsRUFBRSxDQUFDLENBQUMsRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUU7YUFDdEM7U0FDSixDQUFDO1FBQ0osNGdIQUE0Z0g7SUFDOWdILENBQUM7SUFJTSxrQkFBTyxHQUFkLFVBQWUsSUFBSTtRQUNmLElBQUksQ0FBQyxPQUFPLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQztJQUM5QixDQUFDO0lBRU0saUJBQU0sR0FBYixVQUFjLEdBQUc7UUFDYiw4REFBOEQ7UUFDOUQsMERBQTBEO1FBQzFELG1CQUFtQjtRQUNuQiw2QkFBNkI7UUFDN0IsSUFBSTtRQUNKLE9BQU8sRUFBRSxDQUFDO0lBQ2QsQ0FBQztJQUdNLHlCQUFjLEdBQXJCO1FBQ0ksRUFBRSxDQUFDLEVBQUUsQ0FBQyxRQUFRLENBQUMsY0FBYyxFQUFFLENBQUM7SUFDcEMsQ0FBQzs7SUFsZUQsMEJBQTBCO0lBQ1gsb0JBQVMsR0FBZ0IsSUFBSSxDQUFDO0lBRnBDLFVBQVU7UUFEdEIsT0FBTyxDQUFDLFlBQVksQ0FBQztPQUNULFVBQVUsQ0FvZXRCO0lBQUQsaUJBQUM7Q0FwZUQsQUFvZUMsSUFBQTtBQXBlWSxnQ0FBVSIsImZpbGUiOiIiLCJzb3VyY2VSb290IjoiLyIsInNvdXJjZXNDb250ZW50IjpbIlxyXG5pbXBvcnQgeyBHYW1lVG9vbCB9IGZyb20gXCIuLi9Ub29sL0dhbWVUb29sXCI7XHJcblxyXG5cclxuY29uc3QgeyBjY2NsYXNzLCBwcm9wZXJ0eSB9ID0gY2MuX2RlY29yYXRvcjtcclxuQGNjY2xhc3MoJ0dhbWVDb25maWcnKVxyXG5leHBvcnQgY2xhc3MgR2FtZUNvbmZpZyAge1xyXG4gICAgLy/miYDmnInmjqfliLbkv6Hmga/pg73pgJrov4dHYW1lQXBwU3RhcnTlhoXmjqfliLZcclxuICAgIHByaXZhdGUgc3RhdGljIF9pbnN0YW5jZSA6IEdhbWVDb25maWcgPSBudWxsO1xyXG5cclxuICAgIHN0YXRpYyBHQU1FX0RBVEE6IGFueVtdO1xyXG4gICAgLy/lhbPljaHmlbDmja5cclxuICAgIC8v55So5oi36ZyA6KaB5a2Y5YKo5Zyo5pys5Zyw55qE5pWw5o2u77yMIOmHkeW4ge+8jOWFs+WNoeetiee6p++8jOS9k+WKm+WAvOS7peWPiuaBouWkje+8jOmBk+WFt+aVsOmHj+OAglxyXG4gICAgXHJcblxyXG4gICAgc3RhdGljIENVU1RPTV9JTkZPOiB7XHJcbiAgICAgICAgbW92ZVNwZWVkOiBudW1iZXI7IC8v5rSq5bOw56e75Yqo6YCf5bqmXHJcbiAgICAgICAgd2FpdFRpbWU6IG51bWJlcjsgLy/mtKrls7DlhrLlh7vlgJLorqHml7ZcclxuICAgICAgICBmYXN0UGF0aDogbnVtYmVyOyAvL+acgOefrei3r+W+hFxyXG4gICAgfVtdO1xyXG4gICAgc3RhdGljIFRJTUVfSU5GTzoge1xyXG4gICAgICAgIHdhdGVyU3BlZWQ6IG51bWJlcltdOyAvL+a0quWzsOmAn+W6plxyXG4gICAgICAgIHRvdGFsVGltZTogbnVtYmVyOyAvL+a4uOaIj+aAu+aXtumVv1xyXG4gICAgICAgIHdhdGVyVGltZTogbnVtYmVyW107IC8v5rSq5bOw5p2l55qE5YCS6K6h5pe2XHJcbiAgICAgICAgcm9hZFNwZWVkOiBudW1iZXI7IC8v5rKz6YGT5L+u562R6YCf5bqmXHJcbiAgICAgICAgUmVpbmZvcmNlU3BlZWQ6IG51bWJlcjsgLy/liqDlm7rml7bpl7TpgJ/luqZcclxuICAgICAgICBYaV9Tb2lsU3BlZWQ6IG51bWJlcjtcclxuICAgIH07XHJcbiAgICAvL+eUqOS6juebm+aUvuWfi+eCueaVsOaNruS4iuS8oO+8jOavj+asoeS4iuS8oOWQjua4heepulxyXG4gICAgc3RhdGljIENMSUNLX0RBVEE6IHtcclxuICAgICAgICB0eXBlOiBudW1iZXI7IC8v5LiK5Lyg5pWw5o2u57G75Z6LXHJcbiAgICAgICAgc3VjY2VzczogYm9vbGVhbjsgLy/mraTlsYDmuLjmiI/mraPnoa7kuI7lkKZcclxuICAgICAgICByb3VuZDogbnVtYmVyOyAvL+WbnuWQiOaVsOi9ruasoVxyXG4gICAgICAgIGdldFNjb3JlOiBudW1iZXI7IC8v5pys6L2u5b6X5YiG77yM5aSx6LSl5Li6MOWIhlxyXG4gICAgICAgIGN1bXVsYXRpdmVTY29yZTogbnVtYmVyOyAvL+acrOWJp+a4uOaIj+aAu+iuoeW+l+WIhlxyXG4gICAgICAgIG1hcElkOiBzdHJpbmc7IC8v5Zyw5Zu+SURcclxuICAgICAgICBkaWZmaWN1bHR5OiBudW1iZXI7IC8v5Zyw5Zu+6Zq+5bqmXHJcbiAgICAgICAgb3B0aW1pemVkU3RlcHM6IG51bWJlcjsgLy/lhbPljaHmnIDnn63mraXmlbBcclxuICAgICAgICB1c2VkU3RlcHM6IG51bWJlcjsgLy/njqnlrrbkv67lu7rmgLvmraXmlbBcclxuICAgICAgICBzdGVwTGlzdDogYW55W107IC8vVeOAgUTjgIFM44CBUiAgIFgg5oGv5aOkICAgRiDliqDlm7pcclxuICAgICAgICBzdGFydFRpbWU6IG51bWJlcjsgLy/ku47muLjmiI/lvIDlp4vliLDnjqnlrrbmk43kvZznmoTnrKzkuIDmraXmiKrmraLml7bpl7QgIOWNleS9jeavq+enklxyXG4gICAgICAgIHN1Ym1pdFRpbWU6IG51bWJlcjsgLy/ku47nrKzkuIDmraXmk43kvZzliLDmj5DkuqTml7bpl7TvvIzlpoLmnpzmnKrmj5DkuqTkuLotMSDljZXkvY3mr6vnp5JcclxuICAgICAgICBkdXJhdGlvbjogbnVtYmVyOyAvL+a4uOaIj+aAu+eUqOaXtu+8iOaIquatouWIsOaPkOS6pO+8iSDljZXkvY3mr6vnp5JcclxuICAgICAgICBkcmF3aW5nQmFjazogbnVtYmVyOyAvL+WQjumAgOasoeaVsFxyXG4gICAgICAgIGRyYXdpbmdSZXNldDogbnVtYmVyOyAvL+a4heepuuasoeaVsFxyXG4gICAgICAgIHRpbWVyOiBudW1iZXI7ICAvL+a4uOaIj+WAkuiuoeaXtuWJqeS9meaXtumVvyDnp5JcclxuICAgIH07XHJcblxyXG4gICAgc3RhdGljIFRJUF9FUlI6IHN0cmluZ1tdOyAgIC8v5L+u562R5aSx6LSl6ZSZ6K+v5o+Q56S6XHJcblxyXG4gICAgc3RhdGljIEJMT0NLX0lORk86IHt9W11bXTtcclxuICAgIC8vc3RhdGljIFdBTExfSU5GTzogKHsgaWQ6IG51bWJlcjsgbnVtOiBudW1iZXI7IGJsb2NrOiBudW1iZXI7IGNvbG9yOiBudW1iZXI7IHR5cGU6IG51bWJlcjsgc3BlY2lhbDogbnVtYmVyOyBsZW5ndGg6IG51bWJlcjsgfVtdIHwgeyBpZDogbnVtYmVyOyBudW06IG51bWJlcjsgYmxvY2s6IG51bWJlcjsgY29sb3I6IG51bWJlcjsgdHlwZTogbnVtYmVyOyBzcGVjaWFsOiBudW1iZXI7IH1bXSlbXTtcclxuICAgIHN0YXRpYyBMRVZFTF9JTkZPOiAoeyBpZDogc3RyaW5nOyBtYXA6IG51bWJlcltdOyByaXNlZmFsbD86IHVuZGVmaW5lZDsgZ2FwPzogdW5kZWZpbmVkOyB9IHwgeyBpZDogc3RyaW5nOyBtYXA6IG51bWJlcltdOyByaXNlZmFsbDogeyBwb3M6IGNjLlZlYzI7IGNvbG9yOiBudW1iZXI7IH1bXTsgZ2FwPzogdW5kZWZpbmVkOyB9IHwgeyBpZDogc3RyaW5nOyBtYXA6IG51bWJlcltdOyBnYXA6IGNjLlZlYzJbXTsgcmlzZWZhbGw/OiB1bmRlZmluZWQ7IH0pW107XHJcbiAgICBzdGF0aWMgV0FMTF9JTkZPOiAoKHsgaWQ6IG51bWJlcjsgbnVtOiBudW1iZXI7IGJsb2NrOiBudW1iZXI7IGNvbG9yOiBudW1iZXI7IHNwZWNpYWw6IG51bWJlcjsgbGVuZ3RoOiBudW1iZXI7IGxvY2s/OiB1bmRlZmluZWQ7IH0gfCB7IGlkOiBudW1iZXI7IG51bTogbnVtYmVyOyBibG9jazogbnVtYmVyOyBjb2xvcjogbnVtYmVyOyBzcGVjaWFsOiBudW1iZXI7IGxlbmd0aDogbnVtYmVyOyBsb2NrOiBib29sZWFuOyB9KVtdIHwgKHsgaWQ6IG51bWJlcjsgbnVtOiBudW1iZXI7IGJsb2NrOiBudW1iZXI7IGNvbG9yOiBudW1iZXI7IHNwZWNpYWw6IG51bWJlcjsgbGVuZ3RoOiBudW1iZXI7IGZyZWV6ZT86IHVuZGVmaW5lZDsgfSB8IHsgaWQ6IG51bWJlcjsgbnVtOiBudW1iZXI7IGJsb2NrOiBudW1iZXI7IGNvbG9yOiBudW1iZXI7IHNwZWNpYWw6IG51bWJlcjsgbGVuZ3RoOiBudW1iZXI7IGZyZWV6ZTogbnVtYmVyOyB9KVtdKVtdO1xyXG4gICAgc3RhdGljIFBST1BfSU5GTzogKHsgcG9zMTogeyB4OiBudW1iZXI7IHk6IG51bWJlcjsgejogbnVtYmVyOyB9OyBwb3MyOiB7IHg6IG51bWJlcjsgeTogbnVtYmVyOyB6OiBudW1iZXI7IH07IHBvczM6IHsgeDogbnVtYmVyOyB5OiBudW1iZXI7IHo6IG51bWJlcjsgfTsgcG9zNDogeyB4OiBudW1iZXI7IHk6IG51bWJlcjsgejogbnVtYmVyOyB9OyBwb3M1OiB7IHg6IG51bWJlcjsgeTogbnVtYmVyOyB6OiBudW1iZXI7IH07IHBvczY6IHsgeDogbnVtYmVyOyB5OiBudW1iZXI7IHo6IG51bWJlcjsgfTsgfSB8IHsgcG9zMTogeyB4OiBudW1iZXI7IHk6IG51bWJlcjsgejogbnVtYmVyOyB9OyBwb3MyOiB7IHg6IG51bWJlcjsgeTogbnVtYmVyOyB6OiBudW1iZXI7IH07IHBvczM6IHsgeDogbnVtYmVyOyB5OiBudW1iZXI7IHo6IG51bWJlcjsgfTsgcG9zNDogeyB4OiBudW1iZXI7IHk6IG51bWJlcjsgejogbnVtYmVyOyB9OyBwb3M1OiB7IHg6IG51bWJlcjsgeTogbnVtYmVyOyB6OiBudW1iZXI7IH07IHBvczY/OiB1bmRlZmluZWQ7IH0pW107XHJcbiAgICBzdGF0aWMgTkVXX0xFVkVMOiBhbnk7XHJcbiAgICBzdGF0aWMgVEE6IGFueTtcclxuICAgIHN0YXRpYyBHTV9JTkZPOiB7XHJcbiAgICAgICAgLy8gaXNFbmQ6IGZhbHNlLCAgICBcclxuICAgICAgICBtZWFuX1RpbWU6IG51bWJlcjsgLy/lubPlnYfmlL7nrq3pgJ/luqZcclxuICAgICAgICBocDogbnVtYmVyOyAvL+S9k+WKm+WAvFxyXG4gICAgICAgIHJldmlldzogbnVtYmVyOyAvL+Wkjea0u+asoeaVsFxyXG4gICAgICAgIC8v5aSN5rS75qyh5pWwXHJcbiAgICAgICAgY3VyclNlZWQ6IG51bWJlcjsgLy/nlKjkuo7pmo/mnLrmlbDnp43lrZBcclxuICAgICAgICBvcGVuaWQ6IHN0cmluZzsgLy/lvq7kv6HnlKjmiLfllK/kuIBpZFxyXG4gICAgICAgIGdhbWVJZDogc3RyaW5nOyAvL+a4uOaIj0lEXHJcbiAgICAgICAgdXNlcklkOiBudW1iZXI7IC8v55So5oi3SURcclxuICAgICAgICBzY29kZTogc3RyaW5nOyAvL+eUqOaIt2NvZGUs5LuO572R6aG15ZCO57yA6I635Y+WXHJcbiAgICAgICAgdXNlcm5hbWU6IHN0cmluZzsgLy/nlKjmiLflkI3np7BcclxuICAgICAgICB1c2VyYXZhdGFyOiBzdHJpbmc7IC8v55So5oi35aS05YOP5Zyw5Z2AXHJcbiAgICAgICAgZ3VpZGU6IGJvb2xlYW47IC8v5piv5ZCm5pyJ5byV5a+8XHJcbiAgICAgICAgdXJsOiBzdHJpbmc7IC8v6K6/6Zeu5Z+f5ZCNXHJcbiAgICAgICAgY29pbjogbnVtYmVyOyAvL+eUqOaIt+mHkeW4gVxyXG4gICAgICAgIHN1Y2Nlc3M6IGJvb2xlYW47IC8v55So5oi35ri45oiP5oiQ5Yqf5LiO5ZCmXHJcbiAgICAgICAgbWF0Y2hJZDogYW55OyAvL+eUqOS6juWfi+eCueS4iuS8oOeahElEXHJcbiAgICAgICAgZ2FtZVN0YXRlOiBib29sZWFuOyBjdXN0b206IG51bWJlcjsgLy/nlKjkuo7mtYvor5Xot7PlhbPljaFcclxuICAgICAgICByb3VuZDogbnVtYmVyOyAvL+WbnuWQiOaVsFxyXG4gICAgICAgIGxldmVsOiBudW1iZXI7IC8v5YW35L2T5ri45oiP5YaF6L+b6KGM5Yiw56ys5Yeg5q2lIFxyXG4gICAgICAgIHN0ZXBUaW1lTGlzdDogbnVtYmVyOyAvL+aVtOWxgOa4uOaIj+eUqOaXtu+8jOeUseS6jua2ieWPiuWcuuaZr+WIh+aNou+8jOaVsOaNrumcgOimgeS/neeVmVxyXG4gICAgICAgIHN1Y2Nlc3NMaXN0OiBhbnlbXTsgLy/mlbTlsYDog5zotJ9cclxuICAgICAgICBmaXJzdDogYm9vbGVhbjsgLy/mmK/lkKbpppbmrKHov5vlhaXmuLjmiI9cclxuICAgICAgICBzY29yZTogbnVtYmVyOyAvL+aAu+W+l+WIhlxyXG4gICAgICAgIHNjYWxlOiBudW1iZXI7IC8v546p5a625oC76K6h5oiQ5Yqf54K554Gr5pWwXHJcbiAgICAgICAgbWluX1N0ZXBzOiBudW1iZXI7IC8v5q+P5qyh5LiK5LiA5oqK5pyA5bCP5q2l5pWwXHJcbiAgICAgICAgbWluX1RpbWU6IG51bWJlcjsgLy/kvZPlipvmgaLlpI3nmoTliankvZnml7bpl7RcclxuICAgICAgICBmcmVlemVBbW91bnQ6IG51bWJlcjsgLy/lhrvnu5PpgZPlhbfmrKHmlbBcclxuICAgICAgICBoYW1tZXJBbW91bnQ6IG51bWJlcjsgLy/plKTlrZDpgZPlhbfmrKHmlbBcclxuICAgICAgICBtYWdpY0Ftb3VudDogbnVtYmVyOyAvL+mtlOazleajkumBk+WFt+asoeaVsFxyXG4gICAgICAgIG11c2ljT3BlbjogYm9vbGVhbjsgLy/pn7PkuZBcclxuICAgICAgICBlZmZlY3RPcGVuOiBib29sZWFuOyAvL+mfs+aViFxyXG4gICAgICAgIHZpYnJhdGVPcGVuOiBib29sZWFuO1xyXG4gICAgfTtcclxuICAgIC8v5ri45oiP5YaF5L+h5oGvXHJcblxyXG4gICAgc3RhdGljIGdldCBJbnN0YW5jZSgpXHJcbiAgICB7XHJcbiAgICAgICAgaWYgKHRoaXMuX2luc3RhbmNlID09IG51bGwpXHJcbiAgICAgICAge1xyXG4gICAgICAgICAgICB0aGlzLl9pbnN0YW5jZSA9IG5ldyBHYW1lQ29uZmlnKCk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiB0aGlzLl9pbnN0YW5jZTtcclxuICAgIH1cclxuICAgIC8vZ2V0U2VlZFJhbmRvbVxyXG4gICAgc3RhdGljIGluaXQoQXV0aGVudGljYXRpb24pe1xyXG4gICAgICAgICAgICAgICAvL0B0cy1pZ25vcmVcclxuICAgICAgICBpZiAodHlwZW9mIHd4ICE9PSAndW5kZWZpbmVkJyAmJiB3eCAhPT0gbnVsbCkgeyBcclxuICAgICAgICAgICAgLy9AdHMtaWdub3JlXHJcbiAgICAgICAgICAgIHd4LmNsb3VkLmluaXQoKTtcclxuICAgICAgIFxyXG5cclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHRoaXMuVEEgPSBudWxsO1xyXG4gICAgICAgIHRoaXMuQ0xJQ0tfaW5pdCgpO1xyXG4gICAgICAgIHRoaXMuR01fSU5GT19pbml0KCk7XHJcbiAgICAgICAgdGhpcy5MRVZFTF9JTkZPX2luaXQoZmFsc2UsMCk7XHJcbiAgXHJcbiAgICAgICAgdmFyIHNlbGYgPSB0aGlzO1xyXG4gICAgICAgIC8vR0FNRV9EQVRBIOW6n+W8g+S6hu+8jOaaguaXtuS4jeWIoOmZpOS7pemYsuWQjumdouS/ruaUueWbniDkuIDmlbTlsYDkvKDkuIDmrKFcclxuICAgICAgICB0aGlzLkdBTUVfREFUQSA9IFtcclxuICAgICAgICBdXHJcbiAgIFxyXG5cclxuICAgICAgICAvLyBpZighQXV0aGVudGljYXRpb24pIHNlbGYuQXV0aGVudGljYXRpb24oKTtcclxuICAgIH1cclxuXHJcblxyXG5cclxuICAgIHN0YXRpYyBnZW5lcmF0ZVVVSUQoKTogc3RyaW5nIHtcclxuICAgICAgICByZXR1cm4gJ3h4eHh4eHh4LXh4eHgtNHh4eC15eHh4LXh4eHh4eHh4eHh4eCcucmVwbGFjZSgvW3h5XS9nLCBmdW5jdGlvbihjKSB7XHJcbiAgICAgICAgICAgIGNvbnN0IHIgPSBNYXRoLnJhbmRvbSgpICogMTYgfCAwO1xyXG4gICAgICAgICAgICBjb25zdCB2ID0gYyA9PT0gJ3gnID8gciA6IChyICYgMHgzIHwgMHg4KTtcclxuICAgICAgICAgICAgcmV0dXJuIHYudG9TdHJpbmcoMTYpO1xyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG5cclxuICAgIC8vIOeJiOacrOavlOi+g+WHveaVsFxyXG4gICAgc3RhdGljIGNvbXBhcmVWZXJzaW9uKHYxOiBzdHJpbmcsIHYyOiBzdHJpbmcpOiBudW1iZXIge1xyXG4gICAgICAgIGNvbnN0IGFycjEgPSB2MS5zcGxpdCgnLicpO1xyXG4gICAgICAgIGNvbnN0IGFycjIgPSB2Mi5zcGxpdCgnLicpO1xyXG4gICAgICAgIGNvbnN0IGxlbiA9IE1hdGgubWF4KGFycjEubGVuZ3RoLCBhcnIyLmxlbmd0aCk7XHJcblxyXG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgbGVuOyBpKyspIHtcclxuICAgICAgICAgICAgY29uc3QgbnVtMSA9IHBhcnNlSW50KGFycjFbaV0gfHwgJzAnLCAxMCk7XHJcbiAgICAgICAgICAgIGNvbnN0IG51bTIgPSBwYXJzZUludChhcnIyW2ldIHx8ICcwJywgMTApO1xyXG4gICAgICAgICAgICBpZiAobnVtMSA+IG51bTIpIHtcclxuICAgICAgICAgICAgICAgIHJldHVybiAxO1xyXG4gICAgICAgICAgICB9IGVsc2UgaWYgKG51bTEgPCBudW0yKSB7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gLTE7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHJldHVybiAwO1xyXG4gICAgfVxyXG5cclxuICAgIHN0YXRpYyBHTV9JTkZPX1NFVChrZXksdmFsdWUpIHtcclxuICAgICAgICB0aGlzLkdNX0lORk9ba2V5XSA9IHZhbHVlO1xyXG4gICAgfVxyXG4gICAgc3RhdGljIENMSUNLX2luaXQoKSB7XHJcbiAgICAgICAgdGhpcy5DTElDS19EQVRBID1cclxuICAgICAgICB7XHJcbiAgICAgICAgICAgIHR5cGU6IDEsICAgICAgICAgICAgLy/kuIrkvKDmlbDmja7nsbvlnotcclxuICAgICAgICAgICAgc3VjY2VzczogZmFsc2UsICAgICAvL+atpOWxgOa4uOaIj+ato+ehruS4juWQplxyXG4gICAgICAgICAgICByb3VuZDogMCwgICAgICAgICAgIC8v5Zue5ZCI5pWw6L2u5qyhXHJcbiAgICAgICAgICAgIGdldFNjb3JlOiAwLCAgICAgICAgLy/mnKzova7lvpfliIbvvIzlpLHotKXkuLow5YiGXHJcbiAgICAgICAgICAgIGN1bXVsYXRpdmVTY29yZTogMCwgLy/mnKzliafmuLjmiI/mgLvorqHlvpfliIZcclxuICAgICAgICAgICAgbWFwSWQ6IFwiXCIsICAgICAgICAgIC8v5Zyw5Zu+SURcclxuICAgICAgICAgICAgZGlmZmljdWx0eTogMCwgICAgICAvL+WcsOWbvumavuW6plxyXG4gICAgICAgICAgICBvcHRpbWl6ZWRTdGVwczogMCwgIC8v5YWz5Y2h5pyA55+t5q2l5pWwXHJcbiAgICAgICAgICAgIHVzZWRTdGVwczogMCwgICAgICAgLy/njqnlrrbkv67lu7rmgLvmraXmlbBcclxuICAgICAgICAgICAgc3RlcExpc3Q6IFtdLCAgICAgICAvL1XjgIFE44CBTOOAgVIgICBYIOaBr+WjpCAgIEYg5Yqg5Zu6XHJcbiAgICAgICAgICAgIHN0YXJ0VGltZTotMSwgICAgICAgIC8v5LuO5ri45oiP5byA5aeL5Yiw546p5a625pON5L2c55qE56ys5LiA5q2l5oiq5q2i5pe26Ze0ICDljZXkvY3mr6vnp5JcclxuICAgICAgICAgICAgc3VibWl0VGltZTotMSwgICAgICAgLy/ku47nrKzkuIDmraXmk43kvZzliLDmj5DkuqTml7bpl7TvvIzlpoLmnpzmnKrmj5DkuqTkuLotMSDljZXkvY3mr6vnp5JcclxuICAgICAgICAgICAgZHVyYXRpb246MCwgICAgICAgICAvL+a4uOaIj+aAu+eUqOaXtu+8iOaIquatouWIsOaPkOS6pO+8iSDljZXkvY3mr6vnp5Ig5aaC5p6c5pyq5LuW56e75Lqk5YiZ5Li65pe26Ze05LiK6ZmQXHJcbiAgICAgICAgICAgIGRyYXdpbmdCYWNrOjAsICAgICAgLy/lkI7pgIDmrKHmlbBcclxuICAgICAgICAgICAgZHJhd2luZ1Jlc2V0OjAsICAgICAvL+a4heepuuasoeaVsFxyXG4gICAgICAgICAgICB0aW1lcjogMCAgICAgICAgICAgLy/mtYvor4TlgJLorqHml7bliankvZnml7bpl7Qg5Y6756eSXHJcbiAgICAgICAgICAgIFxyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBzdGF0aWMgQ0xJQ0tfU0VUKGtleSx2YWx1ZSkge1xyXG4gICAgICAgIHRoaXMuQ0xJQ0tfREFUQVtrZXldID0gdmFsdWU7XHJcbiAgICB9XHJcblxyXG4gICAgLy/mlbDmja7lpIfnlKhcclxuICAgIHN0YXRpYyBHTV9JTkZPX2luaXQoKSB7XHJcbiAgICAgICAgdGhpcy5HTV9JTkZPID0ge1xyXG4gICAgICAgICAgICAvLyBpc0VuZDogZmFsc2UsICAgIFxyXG4gICAgICAgICAgICBtZWFuX1RpbWU6IDAsICAgICAgICAgICAgICAgLy/lubPlnYfmlL7nrq3pgJ/luqZcclxuICAgICAgICAgICAgaHA6IDUsICAgICAgICAgICAgICAgICAgICAgIC8v5L2T5Yqb5YC8XHJcbiAgICAgICAgICAgIHJldmlldzowLCAgICAgICAgICAgICAgICAgICAgLy/lpI3mtLvmrKHmlbBcclxuICAgICAgICAgICAgY3VyclNlZWQ6IDIwMDAwMCwgICAgICAgICAgIC8v55So5LqO6ZqP5py65pWw56eN5a2QXHJcbiAgICAgICAgICAgIG9wZW5pZDpcIlwiLCAgICAgICAgICAgICAgICAgIC8v5b6u5L+h55So5oi35ZSv5LiAaWRcclxuICAgICAgICAgICAgZ2FtZUlkOiBcIjEwMDAwMVwiLCAgICAgICAgICAgLy/muLjmiI9JRFxyXG4gICAgICAgICAgICB1c2VySWQ6IDAsICAgICAgICAgICAgICAgICAgLy/nlKjmiLdJRFxyXG4gICAgICAgICAgICBzY29kZTogXCJcIiwgICAgICAgICAgICAgICAgICAvL+eUqOaIt2NvZGUs5LuO572R6aG15ZCO57yA6I635Y+WXHJcbiAgICAgICAgICAgIHVzZXJuYW1lOlwidXNlclwiLCAgICAgICAgICAgICAgICAvL+eUqOaIt+WQjeensFxyXG4gICAgICAgICAgICB1c2VyYXZhdGFyOlwiXCIsICAgICAgICAgICAgICAvL+eUqOaIt+WktOWDj+WcsOWdgFxyXG4gICAgICAgICAgICBndWlkZTogdHJ1ZSwgICAgICAgICAgICAgICAgIC8v5piv5ZCm5pyJ5byV5a+8XHJcbiAgICAgICAgICAgIHVybDogXCJodHRwczovL2FwaS5zcGFya3VzLmNuXCIsLy/orr/pl67ln5/lkI1cclxuICAgICAgICAgICAgY29pbjogMCwgICAgICAgICAgICAgICAgICAgIC8v55So5oi36YeR5biBXHJcbiAgICAgICAgICAgIHN1Y2Nlc3M6IGZhbHNlLCAgICAgICAgICAgICAvL+eUqOaIt+a4uOaIj+aIkOWKn+S4juWQplxyXG4gICAgICAgICAgICBtYXRjaElkOiBudWxsLCAgICAgICAgICAgICAgLy/nlKjkuo7ln4vngrnkuIrkvKDnmoRJRFxyXG4gICAgICAgICAgICBnYW1lU3RhdGU6ZmFsc2UsXHJcbiAgICAgICAgICAgIGN1c3RvbTogMCwgICAgICAgICAgICAgICAgICAvL+eUqOS6jua1i+ivlei3s+WFs+WNoVxyXG4gICAgICAgICAgICByb3VuZDowLCAgICAgICAgICAgICAgICAgICAgLy/lm57lkIjmlbBcclxuICAgICAgICAgICAgbGV2ZWw6IDAsICAgICAgICAgICAgICAgICAgICAvL+WFt+S9k+a4uOaIj+WGhei/m+ihjOWIsOesrOWHoOatpSBcclxuICAgICAgICAgICAgc3RlcFRpbWVMaXN0OjAsICAgICAgICAgICAgIC8v5pW05bGA5ri45oiP55So5pe277yM55Sx5LqO5raJ5Y+K5Zy65pmv5YiH5o2i77yM5pWw5o2u6ZyA6KaB5L+d55WZXHJcbiAgICAgICAgICAgIHN1Y2Nlc3NMaXN0OltdLCAgICAgICAgICAgICAgLy/mlbTlsYDog5zotJ9cclxuICAgICAgICAgICAgZmlyc3Q6ZmFsc2UsICAgICAgICAgICAgICAgICAgICAgIC8v5piv5ZCm6aaW5qyh6L+b5YWl5ri45oiPXHJcbiAgICAgICAgICAgIHNjb3JlOjAsICAgICAgICAgICAgICAgICAgICAvL+aAu+W+l+WIhlxyXG4gICAgICAgICAgICBzY2FsZTogMSwgICAgICAgICAgICAgLy/njqnlrrbmgLvorqHmiJDlip/ngrnngavmlbBcclxuICAgICAgICAgICAgbWluX1N0ZXBzOjAsICAgICAgICAgICAgICAgIC8v5q+P5qyh5LiK5LiA5oqK5pyA5bCP5q2l5pWwXHJcbiAgICAgICAgICAgIG1pbl9UaW1lOjAsICAgICAgICAgICAgICAgICAgLy/kvZPlipvmgaLlpI3nmoTliankvZnml7bpl7RcclxuICAgICAgICAgICAgZnJlZXplQW1vdW50OjAsICAgICAgICAgICAgICAvL+WGu+e7k+mBk+WFt+asoeaVsFxyXG4gICAgICAgICAgICBoYW1tZXJBbW91bnQ6MCwgICAgICAgICAgICAgIC8v6ZSk5a2Q6YGT5YW35qyh5pWwXHJcbiAgICAgICAgICAgIG1hZ2ljQW1vdW50OjAsICAgICAgICAgICAgICAgLy/prZTms5Xmo5LpgZPlhbfmrKHmlbBcclxuICAgICAgICAgICAgbXVzaWNPcGVuOiB0cnVlLCAgICAgICAgICAgICAvL+mfs+S5kFxyXG4gICAgICAgICAgICBlZmZlY3RPcGVuOiB0cnVlLCAgICAgICAgICAgICAvL+mfs+aViFxyXG4gICAgICAgICAgICB2aWJyYXRlT3BlbjogdHJ1ZSwgICAgICAgICAgIC8v6ZyH5YqoXHJcblxyXG4gICAgICAgIH07XHJcbiAgICAgICAgLy8gdGhpcy5zZXRDb2RlKHRoaXMuZ2V0S2V5KFwic2NvZGVcIikpO1xyXG4gICAgICAgIC8vIHRoaXMuR01fSU5GTy5sZXZlbCA9IDA7XHJcblxyXG5cclxuICAgICAgICBjYy5yZXNvdXJjZXMubG9hZChcIkpzb24vTkVXX0xFVkVMXCIsIChlcnI6IGFueSwgcmVzOiBjYy5Kc29uQXNzZXQpID0+IHtcclxuICAgICAgICAgICAgaWYgKGVycikge1xyXG4gICAgICAgICAgICAgICAgY29uc29sZS5lcnJvcihcIuWKoOi9vSBORVdfTEVWRUwuSlNPTiDlpLHotKU6XCIsIGVycik7XHJcbiAgICAgICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgY29uc3QgbmV3TGV2ZWxEYXRhID0gcmVzLmpzb247XHJcbiAgICAgICAgICAgIHRoaXMuTkVXX0xFVkVMID0gbmV3TGV2ZWxEYXRhLk5FV19MRVZFTDtcclxuICAgICAgICAgICAgLy8g5Y+v5Lul5qC55o2u6ZyA5rGC5a+5IG5ld0xldmVsRGF0YSDov5vooYzlpITnkIZcclxuICAgICAgICAgICAgLy8gLy9jb25zb2xlLmxvZyhcIk5FV19MRVZFTC5KU09OIOWKoOi9veaIkOWKnzpcIiwgbmV3TGV2ZWxEYXRhKTtcclxuICAgICAgICB9KVxyXG4gICAgfVxyXG5cclxuXHJcbiAgICBzdGF0aWMgTEVWRUxfSU5GT19pbml0KHR5cGUsdGltZSkgeyBcclxuICAgICAgICAvLyDnpLrkvosgICAgICAgICDlm7TlopnkvJrmoLnmja7nvLrnmoTlnLDlnZfoh6rliqjnlJ/miJBcclxuICAgICAgICAvLyDluKbnvLrlj6MgICAgICAge1wiaWRcIjpcIjEwMDZcIixcIm1hcFwiOlsxMCwxMV0sXCJnYXBcIjpbY2MudjIoNCw5KSxjYy52Mig1LDkpXX0sXHJcbiAgICAgICAgLy8g5bim5Y2H6ZmN5Zyw5Z2XICAge1wiaWRcIjpcIjEwMDRcIixcIm1hcFwiOls3LDhdLFwicmlzZWZhbGxcIjpbe3BvczpjYy52Mig1LDQpLGNvbG9yOjJ9LHtwb3M6Y2MudjIoNSw1KSxjb2xvcjo1fV19LFxyXG4gICAgICAgIC8vIOWmguaenOaZrumAmueahOWwsSAge1wiaWRcIjpcIjEwMDFcIixcIm1hcFwiOls2LDddfSwg6L+Z5Liq5qC35a2Q5bCx5Y+v5Lul5LqGXHJcbiAgICAgICAgdmFyIHNlbGYgPSB0aGlzO1xyXG5cclxuXHJcbiAgICAgICAgaWYoKGNjLmZ4LkdhbWVDb25maWcuR01fSU5GTy5sZXZlbCkgPiAxNTYpe1xyXG4gICAgICAgICAgICBjYy5meC5HYW1lQ29uZmlnLkdNX0lORk8ubGV2ZWwgPSAxNTY7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGxldCBuYW1lID0gXCJKc29uL2xldmVsXCIgKyAoY2MuZnguR2FtZUNvbmZpZy5HTV9JTkZPLmxldmVsKzEpO1xyXG5cclxuICAgICAgICAvLyAvL2NvbnNvbGUubG9nKFwi5YWz5Y2h5ZCN56ewOlwiLG5hbWUpO1xyXG4gICAgICAgIC8vIG5hbWUgPSBcIkpzb24vbGV2ZWxcIiArIDY4O1xyXG4gICAgICAgIC8vIGNjLmZ4LlN0b3JhZ2VNZXNzYWdlLnNldFN0b3JhZ2UoXCJsZXZlbFwiLGNjLmZ4LkdhbWVDb25maWcuR01fSU5GTy5sZXZlbC50b1N0cmluZygpKTtcclxuICAgICAgICBjYy5yZXNvdXJjZXMubG9hZChuYW1lLCAoZXJyOiBhbnksIHJlczogY2MuSnNvbkFzc2V0KSA9PiB7XHJcbiAgICAgICAgICAgICAgICBpZiAoZXJyKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgY2MuZnguR2FtZVRvb2wuYWRkTGV2ZWwoKTtcclxuICAgICAgICAgICAgICAgICAgICBzZWxmLkxFVkVMX0lORk9faW5pdCh0eXBlLHRpbWUpO1xyXG4gICAgICAgICAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIGxldCBqc29uRGF0YTogb2JqZWN0ID0gcmVzLmpzb24hO1xyXG4gICAgICAgICAgICAgICAgc2VsZi5CTE9DS19JTkZPID0ganNvbkRhdGFbXCJCTE9DS19JTkZPXCJdO1xyXG4gICAgICAgICAgICAgICAgc2VsZi5MRVZFTF9JTkZPID0ganNvbkRhdGFbXCJMRVZFTF9JTkZPXCJdO1xyXG4gICAgICAgICAgICAgICAgc2VsZi5XQUxMX0lORk8gPSBqc29uRGF0YVtcIldBTExfSU5GT1wiXTtcclxuICAgICAgICAgICAgICAgIC8vIC8vY29uc29sZS5sb2coXCLphY3nva7liqDovb3lrozmiJBcIik7IFxyXG4gICAgICAgICAgICAgICAgaWYodHlwZSl7XHJcbiAgICAgICAgICAgICAgICAgICAgY2MuZGlyZWN0b3IucHJlbG9hZFNjZW5lKFwiR2FtZVNjZW5lXCIsICgpPT57XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmKHRpbWUgPT0gMCkgY2MuZGlyZWN0b3IubG9hZFNjZW5lKFwiR2FtZVNjZW5lXCIpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBlbHNle1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2MuZGlyZWN0b3IubG9hZFNjZW5lKFwiR2FtZVNjZW5lXCIpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwgdGltZSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICB9KVxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgIH0pXHJcblxyXG5cclxuICAgICAgIC8v6YGT5YW35L2N572u5L+h5oGvXHJcbiAgICAgIHRoaXMuUFJPUF9JTkZPID0gW1xyXG4gICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICBcInBvczFcIjogeyBcInhcIjogLTY2LCBcInlcIjogNjAsIFwielwiOiAwIH0sXHJcbiAgICAgICAgICAgICAgICBcInBvczJcIjogeyBcInhcIjogLTE5LCBcInlcIjogMzYsIFwielwiOiAwIH0sXHJcbiAgICAgICAgICAgICAgICBcInBvczNcIjogeyBcInhcIjogLTM0LjM2MiwgXCJ5XCI6IDEzLjI0NiwgXCJ6XCI6IDAgfSxcclxuICAgICAgICAgICAgICAgIFwicG9zNFwiOiB7IFwieFwiOiAtMTcsIFwieVwiOiAxMiwgXCJ6XCI6IDAgfSxcclxuICAgICAgICAgICAgICAgIFwicG9zNVwiOiB7IFwieFwiOiAtODUsIFwieVwiOiA3MCwgXCJ6XCI6IDAgfSxcclxuICAgICAgICAgICAgICAgIFwicG9zNlwiOiB7IFwieFwiOiAtNSwgXCJ5XCI6IDMsIFwielwiOiAwIH0sXHJcbiAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAgIFwicG9zMVwiOiB7IFwieFwiOiAtMTI2LCBcInlcIjogNjEsIFwielwiOiAwIH0sXHJcbiAgICAgICAgICAgICAgICBcInBvczJcIjogeyBcInhcIjogLTI1Ljc5MiwgXCJ5XCI6IDM0LjY3NSwgXCJ6XCI6IDAgfSxcclxuICAgICAgICAgICAgICAgIFwicG9zM1wiOiB7IFwieFwiOiAtOTQuNzkyLCBcInlcIjogMjEuNjc1LCBcInpcIjogMCB9LFxyXG4gICAgICAgICAgICAgICAgXCJwb3M0XCI6IHsgXCJ4XCI6IC0yMCwgXCJ5XCI6IDEzLCBcInpcIjogMCB9LFxyXG4gICAgICAgICAgICAgICAgXCJwb3M1XCI6IHsgXCJ4XCI6IC0xNDAsIFwieVwiOiA2OCwgXCJ6XCI6IDAgfSxcclxuICAgICAgICAgICAgICAgIFwicG9zNlwiOiB7IFwieFwiOiAtMiwgXCJ5XCI6IDAsIFwielwiOiAwIH0sXHJcbiAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAgIFwicG9zMVwiOiB7IFwieFwiOiAtNjcsIFwieVwiOiAxMjIsIFwielwiOiAwIH0sXHJcbiAgICAgICAgICAgICAgICBcInBvczJcIjogeyBcInhcIjogLTIwLCBcInlcIjogOTQsIFwielwiOiAwIH0sXHJcbiAgICAgICAgICAgICAgICBcInBvczNcIjogeyBcInhcIjogLTM0Ljc5MiwgXCJ5XCI6IDIzLjY3NSwgXCJ6XCI6IDAgfSxcclxuICAgICAgICAgICAgICAgIFwicG9zNFwiOiB7IFwieFwiOiAtMTQsIFwieVwiOiAyNCwgXCJ6XCI6IDAgfSxcclxuICAgICAgICAgICAgICAgIFwicG9zNVwiOiB7IFwieFwiOiAtODQsIFwieVwiOiAxMjgsIFwielwiOiAwIH0sXHJcbiAgICAgICAgICAgICAgICBcInBvczZcIjogeyBcInhcIjogLTUsIFwieVwiOiAzLCBcInpcIjogMCB9LFxyXG4gICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICBcInBvczFcIjogeyBcInhcIjogLTE3OCwgXCJ5XCI6IDYxLCBcInpcIjogMCB9LFxyXG4gICAgICAgICAgICAgICAgXCJwb3MyXCI6IHsgXCJ4XCI6IC0zNC43OTIsIFwieVwiOiAzNy42NzUsIFwielwiOiAwIH0sXHJcbiAgICAgICAgICAgICAgICBcInBvczNcIjogeyBcInhcIjogLTE1MCwgXCJ5XCI6IDIzLjY3NSwgXCJ6XCI6IDAgfSxcclxuICAgICAgICAgICAgICAgIFwicG9zNFwiOiB7IFwieFwiOiAtMjIsIFwieVwiOiAxNiwgXCJ6XCI6IDAgfSxcclxuICAgICAgICAgICAgICAgIFwicG9zNVwiOiB7IFwieFwiOiAtMjAwLCBcInlcIjogNjcsIFwielwiOiAwIH0sXHJcbiAgICAgICAgICAgICAgICBcInBvczZcIjogeyBcInhcIjogMCwgXCJ5XCI6IDAsIFwielwiOiAwIH0sICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAgIFwicG9zMVwiOiB7IFwieFwiOiAtNjMsIFwieVwiOiAxNzgsIFwielwiOiAwIH0sXHJcbiAgICAgICAgICAgICAgICBcInBvczJcIjogeyBcInhcIjogLTE3Ljc5MiwgXCJ5XCI6IDE2Ni42NzUsIFwielwiOiAwIH0sXHJcbiAgICAgICAgICAgICAgICBcInBvczNcIjogeyBcInhcIjogLTMxLjc5MiwgXCJ5XCI6IDMzLjY3NSwgXCJ6XCI6IDAgfSxcclxuICAgICAgICAgICAgICAgIFwicG9zNFwiOiB7IFwieFwiOiAtMTQsIFwieVwiOiAzNywgXCJ6XCI6IDAgfSxcclxuICAgICAgICAgICAgICAgIFwicG9zNVwiOiB7IFwieFwiOiAtNzgsIFwieVwiOiAxODIsIFwielwiOiAwIH0sXHJcbiAgICAgICAgICAgICAgICBcInBvczZcIjogeyBcInhcIjogMCwgXCJ5XCI6IDIsIFwielwiOiAwIH0sXHJcbiAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAgIFwicG9zMVwiOiB7IFwieFwiOiAtMTIzLCBcInlcIjogMTI0LCBcInpcIjogMCB9LFxyXG4gICAgICAgICAgICAgICAgXCJwb3MyXCI6IHsgXCJ4XCI6IC0yNS43OTIsIFwieVwiOiA5OS42NzUsIFwielwiOiAwIH0sXHJcbiAgICAgICAgICAgICAgICBcInBvczNcIjogeyBcInhcIjogLTk3Ljc5MiwgXCJ5XCI6IDI3LjY3NSwgXCJ6XCI6IDAgfSxcclxuICAgICAgICAgICAgICAgIFwicG9zNFwiOiB7IFwieFwiOiAtMjcsIFwieVwiOiAxOSwgXCJ6XCI6IDAgfSxcclxuICAgICAgICAgICAgICAgIFwicG9zNVwiOiB7IFwieFwiOiAtMTM1LCBcInlcIjogMTI3LCBcInpcIjogMCB9LFxyXG4gICAgICAgICAgICAgICAgXCJwb3M2XCI6IHsgXCJ4XCI6IDAsIFwieVwiOiAwLCBcInpcIjogMCB9LFxyXG4gICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICBcInBvczFcIjogeyBcInhcIjogLTY0LCBcInlcIjogMTc4LCBcInpcIjogMCB9LFxyXG4gICAgICAgICAgICAgICAgXCJwb3MyXCI6IHsgXCJ4XCI6IC0yNC43OTIsIFwieVwiOiAyNzUuNjc1LCBcInpcIjogMCB9LFxyXG4gICAgICAgICAgICAgICAgXCJwb3MzXCI6IHsgXCJ4XCI6IC0zMS43OTIsIFwieVwiOiAzNS42NzUsIFwielwiOiAwIH0sXHJcbiAgICAgICAgICAgICAgICBcInBvczRcIjogeyBcInhcIjogLTcsIFwieVwiOiAzOSwgXCJ6XCI6IDAgfSxcclxuICAgICAgICAgICAgICAgIFwicG9zNVwiOiB7IFwieFwiOiAtNzcsIFwieVwiOiAxODgsIFwielwiOiAwIH0sXHJcbiAgICAgICAgICAgICAgICBcInBvczZcIjogeyBcInhcIjogMCwgXCJ5XCI6IDAsIFwielwiOiAwIH0sXHJcbiAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAgIFwicG9zMVwiOiB7IFwieFwiOiAtMTc4LCBcInlcIjogMTg2LCBcInpcIjogMCB9LFxyXG4gICAgICAgICAgICAgICAgXCJwb3MyXCI6IHsgXCJ4XCI6IC0zMS43OTIsIFwieVwiOiAxNjMuNjc1LCBcInpcIjogMCB9LFxyXG4gICAgICAgICAgICAgICAgXCJwb3MzXCI6IHsgXCJ4XCI6IC0zMy43OTIsIFwieVwiOiAzNC42NzUsIFwielwiOiAwIH0sXHJcbiAgICAgICAgICAgICAgICBcInBvczRcIjogeyBcInhcIjogLTE4LCBcInlcIjogMzAsIFwielwiOiAwIH0sXHJcbiAgICAgICAgICAgICAgICBcInBvczVcIjogeyBcInhcIjogLTIwMCwgXCJ5XCI6IDE5MiwgXCJ6XCI6IDAgfSxcclxuICAgICAgICAgICAgICAgIFwicG9zNlwiOiB7IFwieFwiOiAwLCBcInlcIjogNSwgXCJ6XCI6IDAgfSxcclxuICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgICAgXCJwb3MxXCI6IHsgXCJ4XCI6IC0xODYsIFwieVwiOiAxNzgsIFwielwiOiAwIH0sXHJcbiAgICAgICAgICAgICAgICBcInBvczJcIjogeyBcInhcIjogLTI1Ljc5MiwgXCJ5XCI6IDM4LjY3NSwgXCJ6XCI6IDAgfSxcclxuICAgICAgICAgICAgICAgIFwicG9zM1wiOiB7IFwieFwiOiAtMTUzLjc5MiwgXCJ5XCI6IDM0LjY3NSwgXCJ6XCI6IDAgfSxcclxuICAgICAgICAgICAgICAgIFwicG9zNFwiOiB7IFwieFwiOiAtMjMsIFwieVwiOiAxNCwgXCJ6XCI6IDAgfSxcclxuICAgICAgICAgICAgICAgIFwicG9zNVwiOiB7IFwieFwiOiAtMjAwLCBcInlcIjogMTg1LCBcInpcIjogMCB9LFxyXG4gICAgICAgICAgICAgICAgXCJwb3M2XCI6IHsgXCJ4XCI6IDAsIFwieVwiOiAwLCBcInpcIjogMCB9LFxyXG4gICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICBcInBvczFcIjogeyBcInhcIjogLTE4MywgXCJ5XCI6IDY0LCBcInpcIjogMCB9LFxyXG4gICAgICAgICAgICAgICAgXCJwb3MyXCI6IHsgXCJ4XCI6IC0zNy43OTIsIFwieVwiOiAzNy42NzUsIFwielwiOiAwIH0sXHJcbiAgICAgICAgICAgICAgICBcInBvczNcIjogeyBcInhcIjogLTM2Ljc5MiwgXCJ5XCI6IDI2LjY3NSwgXCJ6XCI6IDAgfSxcclxuICAgICAgICAgICAgICAgIFwicG9zNFwiOiB7IFwieFwiOiAtMjQsIFwieVwiOiAxNywgXCJ6XCI6IDAgfSxcclxuICAgICAgICAgICAgICAgIFwicG9zNVwiOiB7IFwieFwiOiAtMjEyLCBcInlcIjogNzQsIFwielwiOiAwIH0sXHJcbiAgICAgICAgICAgICAgICBcInBvczZcIjogeyBcInhcIjogMCwgXCJ5XCI6IDAsIFwielwiOiAwIH0sXHJcbiAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAgIFwicG9zMVwiOiB7IFwieFwiOiAtNjUsIFwieVwiOiAxNzcsIFwielwiOiAwIH0sXHJcbiAgICAgICAgICAgICAgICBcInBvczJcIjogeyBcInhcIjogOTMuMjA4LCBcInlcIjogMjc2LjY3NSwgXCJ6XCI6IDAgfSxcclxuICAgICAgICAgICAgICAgIFwicG9zM1wiOiB7IFwieFwiOiAtMzMuNzkyLCBcInlcIjogMzQuNjc1LCBcInpcIjogMCB9LFxyXG4gICAgICAgICAgICAgICAgXCJwb3M0XCI6IHsgXCJ4XCI6IDMsIFwieVwiOiAzMSwgXCJ6XCI6IDAgfSxcclxuICAgICAgICAgICAgICAgIFwicG9zNVwiOiB7IFwieFwiOiAtODAsIFwieVwiOiAxOTAsIFwielwiOiAwIH0sXHJcbiAgICAgICAgICAgICAgICBcInBvczZcIjogeyBcInhcIjogMCwgXCJ5XCI6IDMsIFwielwiOiAwIH0sXHJcbiAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAgIFwicG9zMVwiOiB7IFwieFwiOiA1OCwgXCJ5XCI6IDE3OSwgXCJ6XCI6IDAgfSxcclxuICAgICAgICAgICAgICAgIFwicG9zMlwiOiB7IFwieFwiOiAyMDUuMjI1LCBcInlcIjogMTU0LjAzNCwgXCJ6XCI6IDAgfSxcclxuICAgICAgICAgICAgICAgIFwicG9zM1wiOiB7IFwieFwiOiAtMjkuNjQyLCBcInlcIjogMjUuNjkxLCBcInpcIjogMCB9LFxyXG4gICAgICAgICAgICAgICAgXCJwb3M0XCI6IHsgXCJ4XCI6IDcuMjE4LCBcInlcIjogMjkuNzY1LCBcInpcIjogMCB9LFxyXG4gICAgICAgICAgICAgICAgXCJwb3M1XCI6IHsgXCJ4XCI6IDQ1LCBcInlcIjogMTg1LCBcInpcIjogMCB9LFxyXG4gICAgICAgICAgICAgICAgXCJwb3M2XCI6IHsgXCJ4XCI6IDAsIFwieVwiOiAwLCBcInpcIjogMCB9LFxyXG4gICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICBcInBvczFcIjogeyBcInhcIjogLTY4LCBcInlcIjogMTgyLCBcInpcIjogMCB9LFxyXG4gICAgICAgICAgICAgICAgXCJwb3MyXCI6IHsgXCJ4XCI6IC0yNS43OTIsIFwieVwiOiAzNy42NzUsIFwielwiOiAwIH0sXHJcbiAgICAgICAgICAgICAgICBcInBvczNcIjogeyBcInhcIjogLTM1Ljc5MiwgXCJ5XCI6IDMzLjY3NSwgXCJ6XCI6IDAgfSxcclxuICAgICAgICAgICAgICAgIFwicG9zNFwiOiB7IFwieFwiOiAtMTQsIFwieVwiOiAxMiwgXCJ6XCI6IDAgfSxcclxuICAgICAgICAgICAgICAgIFwicG9zNVwiOiB7IFwieFwiOiAtODIsIFwieVwiOiAxOTAsIFwielwiOiAwIH0sXHJcbiAgICAgICAgICAgICAgICBcInBvczZcIjogeyBcInhcIjogLTIsIFwieVwiOiAxLCBcInpcIjogMCB9LFxyXG4gICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICBcInBvczFcIjogeyBcInhcIjogLTE4NCwgXCJ5XCI6IDYyLCBcInpcIjogMCB9LFxyXG4gICAgICAgICAgICAgICAgXCJwb3MyXCI6IHsgXCJ4XCI6IC0zNS43OTIsIFwieVwiOiAzNi42NzUsIFwielwiOiAwIH0sXHJcbiAgICAgICAgICAgICAgICBcInBvczNcIjogeyBcInhcIjogLTI3MS43OTIsIFwieVwiOiAyNC42NzUsIFwielwiOiAwIH0sXHJcbiAgICAgICAgICAgICAgICBcInBvczRcIjogeyBcInhcIjogLTE3LCBcInlcIjogMjAsIFwielwiOiAwIH0sXHJcbiAgICAgICAgICAgICAgICBcInBvczVcIjogeyBcInhcIjogLTIwMCwgXCJ5XCI6IDcyLCBcInpcIjogMCB9LFxyXG4gICAgICAgICAgICAgICAgXCJwb3M2XCI6IHsgXCJ4XCI6IDAsIFwieVwiOiAwLCBcInpcIjogMCB9LFxyXG4gICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICBcInBvczFcIjogeyBcInhcIjogLTYyLCBcInlcIjogMTc1LCBcInpcIjogMCB9LFxyXG4gICAgICAgICAgICAgICAgXCJwb3MyXCI6IHsgXCJ4XCI6IDg3LjIwOCwgXCJ5XCI6IDE2NC42NzUsIFwielwiOiAwIH0sXHJcbiAgICAgICAgICAgICAgICBcInBvczNcIjogeyBcInhcIjogLTMxLjc5MiwgXCJ5XCI6IDM1LjY3NSwgXCJ6XCI6IDAgfSxcclxuICAgICAgICAgICAgICAgIFwicG9zNFwiOiB7IFwieFwiOiAtNiwgXCJ5XCI6IDI0LCBcInpcIjogMCB9LFxyXG4gICAgICAgICAgICAgICAgXCJwb3M1XCI6IHsgXCJ4XCI6IC03OSwgXCJ5XCI6IDE3MiwgXCJ6XCI6IDAgfSxcclxuICAgICAgICAgICAgICAgIFwicG9zNlwiOiB7IFwieFwiOiAwLCBcInlcIjogNSwgXCJ6XCI6IDAgfSxcclxuICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgICAgXCJwb3MxXCI6IHsgXCJ4XCI6IC0xODQsIFwieVwiOiA3MiwgXCJ6XCI6IDAgfSxcclxuICAgICAgICAgICAgICAgIFwicG9zMlwiOiB7IFwieFwiOiAtMzMuNzkyLCBcInlcIjogMzguNjc1LCBcInpcIjogMCB9LFxyXG4gICAgICAgICAgICAgICAgXCJwb3MzXCI6IHsgXCJ4XCI6IC0xNTQuNzkyLCBcInlcIjogMjkuNjc1LCBcInpcIjogMCB9LFxyXG4gICAgICAgICAgICAgICAgXCJwb3M0XCI6IHsgXCJ4XCI6IC0yOSwgXCJ5XCI6IDE2LCBcInpcIjogMCB9LFxyXG4gICAgICAgICAgICAgICAgXCJwb3M1XCI6IHsgXCJ4XCI6IC0yMDEsIFwieVwiOiA4NSwgXCJ6XCI6IDAgfSxcclxuICAgICAgICAgICAgICAgIFwicG9zNlwiOiB7IFwieFwiOiAtMSwgXCJ5XCI6IDMsIFwielwiOiAwIH0sXHJcbiAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAgIFwicG9zMVwiOiB7IFwieFwiOiAtNjQsIFwieVwiOiAxODEsIFwielwiOiAwIH0sXHJcbiAgICAgICAgICAgICAgICBcInBvczJcIjogeyBcInhcIjogOTUuMjA4LCBcInlcIjogMTU1LjY3NSwgXCJ6XCI6IDAgfSxcclxuICAgICAgICAgICAgICAgIFwicG9zM1wiOiB7IFwieFwiOiAtMzAuNzkyLCBcInlcIjogMzYuNjc1LCBcInpcIjogMCB9LFxyXG4gICAgICAgICAgICAgICAgXCJwb3M0XCI6IHsgXCJ4XCI6IC0xMiwgXCJ5XCI6IDMyLCBcInpcIjogMCB9LFxyXG4gICAgICAgICAgICAgICAgXCJwb3M1XCI6IHsgXCJ4XCI6IC03OCwgXCJ5XCI6IDE5MCwgXCJ6XCI6IDAgfSxcclxuICAgICAgICAgICAgICAgIFwicG9zNlwiOiB7IFwieFwiOiAwLCBcInlcIjogMywgXCJ6XCI6IDAgfSxcclxuICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgICAgXCJwb3MxXCI6IHsgXCJ4XCI6IC02NSwgXCJ5XCI6IDE3OCwgXCJ6XCI6IDAgfSxcclxuICAgICAgICAgICAgICAgIFwicG9zMlwiOiB7IFwieFwiOiAtMjEuNzkyLCBcInlcIjogMTU2LjY3NSwgXCJ6XCI6IDAgfSxcclxuICAgICAgICAgICAgICAgIFwicG9zM1wiOiB7IFwieFwiOiAtMzEuNzkyLCBcInlcIjogMzcuNjc1LCBcInpcIjogMCB9LFxyXG4gICAgICAgICAgICAgICAgXCJwb3M0XCI6IHsgXCJ4XCI6IC0xMiwgXCJ5XCI6IDMyLCBcInpcIjogMCB9LFxyXG4gICAgICAgICAgICAgICAgXCJwb3M1XCI6IHsgXCJ4XCI6IC03OCwgXCJ5XCI6IDE4OCwgXCJ6XCI6IDAgfSxcclxuICAgICAgICAgICAgICAgIFwicG9zNlwiOiB7IFwieFwiOiAwLCBcInlcIjogMiwgXCJ6XCI6IDAgfSxcclxuICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgICAgXCJwb3MxXCI6IHsgXCJ4XCI6IC02MiwgXCJ5XCI6IDE4MywgXCJ6XCI6IDAgfSxcclxuICAgICAgICAgICAgICAgIFwicG9zMlwiOiB7IFwieFwiOiA4OC4yMDgsIFwieVwiOiAxNjIuNjc1LCBcInpcIjogMCB9LFxyXG4gICAgICAgICAgICAgICAgXCJwb3MzXCI6IHsgXCJ4XCI6IC0yOS43OTIsIFwieVwiOiA0MS42NzUsIFwielwiOiAwIH0sXHJcbiAgICAgICAgICAgICAgICBcInBvczRcIjogeyBcInhcIjogLTEyLCBcInlcIjogMTgsIFwielwiOiAwIH0sXHJcbiAgICAgICAgICAgICAgICBcInBvczVcIjogeyBcInhcIjogLTgwLCBcInlcIjogMTg4LCBcInpcIjogMCB9LFxyXG4gICAgICAgICAgICAgICAgXCJwb3M2XCI6IHsgXCJ4XCI6IC00LCBcInlcIjogMiwgXCJ6XCI6IDAgfSxcclxuICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgICAgXCJwb3MxXCI6IHsgXCJ4XCI6IC02NywgXCJ5XCI6IDgwLCBcInpcIjogMCB9LFxyXG4gICAgICAgICAgICAgICAgXCJwb3MyXCI6IHsgXCJ4XCI6IC0yNi43OTIsIFwieVwiOiAzMi42NzUsIFwielwiOiAwIH0sXHJcbiAgICAgICAgICAgICAgICBcInBvczNcIjogeyBcInhcIjogLTM0Ljc5MiwgXCJ5XCI6IDIzLjY3NSwgXCJ6XCI6IDAgfSxcclxuICAgICAgICAgICAgICAgIFwicG9zNFwiOiB7IFwieFwiOiAtMTIsIFwieVwiOiAxOCwgXCJ6XCI6IDAgfSxcclxuICAgICAgICAgICAgICAgIFwicG9zNVwiOiB7IFwieFwiOiAtODQsIFwieVwiOiA5MCwgXCJ6XCI6IDAgfSxcclxuICAgICAgICAgICAgICAgIFwicG9zNlwiOiB7IFwieFwiOiAwLCBcInlcIjogMCwgXCJ6XCI6IDAgfSxcclxuICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgICAgXCJwb3MxXCI6IHsgXCJ4XCI6IC0xODQsIFwieVwiOiA4MCwgXCJ6XCI6IDAgfSxcclxuICAgICAgICAgICAgICAgIFwicG9zMlwiOiB7IFwieFwiOiAtMjUuNzkyLCBcInlcIjogMzQuNjc1LCBcInpcIjogMCB9LFxyXG4gICAgICAgICAgICAgICAgXCJwb3MzXCI6IHsgXCJ4XCI6IC0xNTUuNzkyLCBcInlcIjogMjUuNjc1LCBcInpcIjogMCB9LFxyXG4gICAgICAgICAgICAgICAgXCJwb3M0XCI6IHsgXCJ4XCI6IC0xOCwgXCJ5XCI6IDI2LCBcInpcIjogMCB9LFxyXG4gICAgICAgICAgICAgICAgXCJwb3M1XCI6IHsgXCJ4XCI6IC0xOTYsIFwieVwiOiA5NiwgXCJ6XCI6IDAgfSxcclxuICAgICAgICAgICAgICAgIFwicG9zNlwiOiB7IFwieFwiOiAwLCBcInlcIjogMCwgXCJ6XCI6IDAgfSxcclxuICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgICAgXCJwb3MxXCI6IHsgXCJ4XCI6IC02MiwgXCJ5XCI6IDE2MCwgXCJ6XCI6IDAgfSxcclxuICAgICAgICAgICAgICAgIFwicG9zMlwiOiB7IFwieFwiOiA5NS4yMDgsIFwieVwiOiAxNTguNjc1LCBcInpcIjogMCB9LFxyXG4gICAgICAgICAgICAgICAgXCJwb3MzXCI6IHsgXCJ4XCI6IC0zMy43OTIsIFwieVwiOiAyOS42NzUsIFwielwiOiAwIH0sXHJcbiAgICAgICAgICAgICAgICBcInBvczRcIjogeyBcInhcIjogLTE4LCBcInlcIjogMjYsIFwielwiOiAwIH0sXHJcbiAgICAgICAgICAgICAgICBcInBvczVcIjogeyBcInhcIjogLTc4LCBcInlcIjogMTcwLCBcInpcIjogMCB9LFxyXG4gICAgICAgICAgICAgICAgXCJwb3M2XCI6IHsgXCJ4XCI6IDAsIFwieVwiOiAyLCBcInpcIjogMCB9LFxyXG4gICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICBcInBvczFcIjogeyBcInhcIjogLTY4LCBcInlcIjogMTYwLCBcInpcIjogMCB9LFxyXG4gICAgICAgICAgICAgICAgXCJwb3MyXCI6IHsgXCJ4XCI6IC0yNS43OTIsIFwieVwiOiAxNTYuNjc1LCBcInpcIjogMCB9LFxyXG4gICAgICAgICAgICAgICAgXCJwb3MzXCI6IHsgXCJ4XCI6IC0zNS43OTIsIFwieVwiOiAyNy42NzUsIFwielwiOiAwIH0sXHJcbiAgICAgICAgICAgICAgICBcInBvczRcIjogeyBcInhcIjogLTI1LCBcInlcIjogNDAsIFwielwiOiAwIH0sXHJcbiAgICAgICAgICAgICAgICBcInBvczVcIjogeyBcInhcIjogLTgyLCBcInlcIjogMTcwLCBcInpcIjogMCB9LFxyXG4gICAgICAgICAgICAgICAgXCJwb3M2XCI6IHsgXCJ4XCI6IC0yLCBcInlcIjogMiwgXCJ6XCI6IDAgfSxcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIF07XHJcbiAgICAgIC8vIHRoaXMuUFJPUF9JTkZPID0gW3tcInBvczFcIjoge1wieFwiOiAtNjAsXCJ5XCI6IDYwLFwielwiOiAwfSxcInBvczJcIjoge1wieFwiOiAtMTYuNDQyLFwieVwiOiAzMCxcInpcIjogMH0sXCJwb3MzXCI6IHtcInhcIjogLTM0LjM2MixcInlcIjogMTMuMjQ2LFwielwiOiAwfSxcInBvczRcIjoge1wieFwiOiAtMTcsXCJ5XCI6IDEyLFwielwiOiAwfX0se1wicG9zMVwiOiB7XCJ4XCI6IC0xMjYsXCJ5XCI6IDYzLFwielwiOiAwfSxcInBvczJcIjoge1wieFwiOiAtMjUuNzkyLFwieVwiOiAzNC42NzUsXCJ6XCI6IDB9LFwicG9zM1wiOiB7XCJ4XCI6IC05NC43OTIsXCJ5XCI6IDIxLjY3NSxcInpcIjogMH0sXCJwb3M0XCI6IHtcInhcIjogLTIwLFwieVwiOiAxMyxcInpcIjogMH19LHtcInBvczFcIjoge1wieFwiOiAtNjAsXCJ5XCI6IDEyNSxcInpcIjogMH0sXCJwb3MyXCI6IHtcInhcIjogLTEyLjc5MixcInlcIjogOTIuNjc1LFwielwiOiAwfSxcInBvczNcIjoge1wieFwiOiAtMzQuNzkyLFwieVwiOiAyMy42NzUsXCJ6XCI6IDB9LFwicG9zNFwiOiB7XCJ4XCI6IC0xNCxcInlcIjogMjQsXCJ6XCI6IDB9fSx7XCJwb3MxXCI6IHtcInhcIjogLTE4NSxcInlcIjogNjMsXCJ6XCI6IDB9LFwicG9zMlwiOiB7XCJ4XCI6IC0zNC43OTIsXCJ5XCI6IDM3LjY3NSxcInpcIjogMH0sXCJwb3MzXCI6IHtcInhcIjogLTE1NC43OTIsXCJ5XCI6IDIzLjY3NSxcInpcIjogMH0sXCJwb3M0XCI6IHtcInhcIjogLTIyLFwieVwiOiAxNixcInpcIjogMH19LHtcInBvczFcIjoge1wieFwiOiAtNTcsXCJ5XCI6IDE3OCxcInpcIjogMH0sXCJwb3MyXCI6IHtcInhcIjogLTE3Ljc5MixcInlcIjogMTY2LjY3NSxcInpcIjogMH0sXCJwb3MzXCI6IHtcInhcIjogLTMxLjc5MixcInlcIjogMzMuNjc1LFwielwiOiAwfSxcInBvczRcIjoge1wieFwiOiAtMTQsXCJ5XCI6IDM3LFwielwiOiAwfX0se1wicG9zMVwiOiB7XCJ4XCI6IC0xMjMsXCJ5XCI6IDEyNyxcInpcIjogMH0sXCJwb3MyXCI6IHtcInhcIjogLTI1Ljc5MixcInlcIjogOTkuNjc1LFwielwiOiAwfSxcInBvczNcIjoge1wieFwiOiAtOTcuNzkyLFwieVwiOiAyNy42NzUsXCJ6XCI6IDB9LFwicG9zNFwiOiB7XCJ4XCI6IC0yNyxcInlcIjogMTksXCJ6XCI6IDB9fSx7XCJwb3MxXCI6IHtcInhcIjogLTYyLFwieVwiOiAxODEsXCJ6XCI6IDB9LFwicG9zMlwiOiB7XCJ4XCI6IC0yNC43OTIsXCJ5XCI6IDI3NS42NzUsXCJ6XCI6IDB9LFwicG9zM1wiOiB7XCJ4XCI6IC0zMS43OTIsXCJ5XCI6IDM1LjY3NSxcInpcIjogMH0sXCJwb3M0XCI6IHtcInhcIjogLTcsXCJ5XCI6IDM5LFwielwiOiAwfX0se1wicG9zMVwiOiB7XCJ4XCI6IC0xODEsXCJ5XCI6IDE4MCxcInpcIjogMH0sXCJwb3MyXCI6IHtcInhcIjogLTMxLjc5MixcInlcIjogMTYzLjY3NSxcInpcIjogMH0sXCJwb3MzXCI6IHtcInhcIjogLTMzLjc5MixcInlcIjogMzQuNjc1LFwielwiOiAwfSxcInBvczRcIjoge1wieFwiOiAtMTgsXCJ5XCI6IDMwLFwielwiOiAwfX0se1wicG9zMVwiOiB7XCJ4XCI6IC0xODIsXCJ5XCI6IDE4MixcInpcIjogMH0sXCJwb3MyXCI6IHtcInhcIjogLTI1Ljc5MixcInlcIjogMzguNjc1LFwielwiOiAwfSxcInBvczNcIjoge1wieFwiOiAtMTUzLjc5MixcInlcIjogMzQuNjc1LFwielwiOiAwfSxcInBvczRcIjoge1wieFwiOiAtMjMsXCJ5XCI6IDE0LFwielwiOiAwfX0se1wicG9zMVwiOiB7XCJ4XCI6IC0xODYsXCJ5XCI6IDYxLFwielwiOiAwfSxcInBvczJcIjoge1wieFwiOiAtMzcuNzkyLFwieVwiOiAzNy42NzUsXCJ6XCI6IDB9LFwicG9zM1wiOiB7XCJ4XCI6IC0zNi43OTIsXCJ5XCI6IDI2LjY3NSxcInpcIjogMH0sXCJwb3M0XCI6IHtcInhcIjogLTI0LFwieVwiOiAxNyxcInpcIjogMH19LHtcInBvczFcIjoge1wieFwiOiAtNjIsXCJ5XCI6IDE3NyxcInpcIjogMH0sXCJwb3MyXCI6IHtcInhcIjogOTMuMjA4LFwieVwiOiAyNzYuNjc1LFwielwiOiAwfSxcInBvczNcIjoge1wieFwiOiAtMzMuNzkyLFwieVwiOiAzNC42NzUsXCJ6XCI6IDB9LFwicG9zNFwiOiB7XCJ4XCI6IDMsXCJ5XCI6IDMxLFwielwiOiAwfX0se1wicG9zMVwiOiB7XCJ4XCI6IDU4LFwieVwiOiAxNzksXCJ6XCI6IDB9LFwicG9zMlwiOiB7XCJ4XCI6IDIwNS4yMjUsXCJ5XCI6IDE1NC4wMzQsXCJ6XCI6IDB9LFwicG9zM1wiOiB7XCJ4XCI6IC0yOS42NDIsXCJ5XCI6IDI1LjY5MSxcInpcIjogMH0sXCJwb3M0XCI6IHtcInhcIjogNy4yMTgsXCJ5XCI6IDI5Ljc2NSxcInpcIjogMH19LHtcInBvczFcIjoge1wieFwiOiAtNTcsXCJ5XCI6IDE4MixcInpcIjogMH0sXCJwb3MyXCI6IHtcInhcIjogLTI1Ljc5MixcInlcIjogMzcuNjc1LFwielwiOiAwfSxcInBvczNcIjoge1wieFwiOiAtMzUuNzkyLFwieVwiOiAzMy42NzUsXCJ6XCI6IDB9LFwicG9zNFwiOiB7XCJ4XCI6IC0xNCxcInlcIjogMTIsXCJ6XCI6IDB9fSx7XCJwb3MxXCI6IHtcInhcIjogLTE4MCxcInlcIjogNjIsXCJ6XCI6IDB9LFwicG9zMlwiOiB7XCJ4XCI6IC0zNS43OTIsXCJ5XCI6IDM2LjY3NSxcInpcIjogMH0sXCJwb3MzXCI6IHtcInhcIjogLTI3MS43OTIsXCJ5XCI6IDI0LjY3NSxcInpcIjogMH0sXCJwb3M0XCI6IHtcInhcIjogLTE3LFwieVwiOiAyMCxcInpcIjogMH19LHtcInBvczFcIjoge1wieFwiOiAtNjIsXCJ5XCI6IDE3OCxcInpcIjogMH0sXCJwb3MyXCI6IHtcInhcIjogODcuMjA4LFwieVwiOiAxNjQuNjc1LFwielwiOiAwfSxcInBvczNcIjoge1wieFwiOiAtMzEuNzkyLFwieVwiOiAzNS42NzUsXCJ6XCI6IDB9LFwicG9zNFwiOiB7XCJ4XCI6IC02LFwieVwiOiAyNCxcInpcIjogMH19LHtcInBvczFcIjoge1wieFwiOiAtMTc2LFwieVwiOiA2MCxcInpcIjogMH0sXCJwb3MyXCI6IHtcInhcIjogLTMzLjc5MixcInlcIjogMzguNjc1LFwielwiOiAwfSxcInBvczNcIjoge1wieFwiOiAtMTU0Ljc5MixcInlcIjogMjkuNjc1LFwielwiOiAwfSxcInBvczRcIjoge1wieFwiOiAtMjksXCJ5XCI6IDE2LFwielwiOiAwfX0se1wicG9zMVwiOiB7XCJ4XCI6IC02MCxcInlcIjogMTgxLFwielwiOiAwfSxcInBvczJcIjoge1wieFwiOiA5NS4yMDgsXCJ5XCI6IDE1NS42NzUsXCJ6XCI6IDB9LFwicG9zM1wiOiB7XCJ4XCI6IC0zMC43OTIsXCJ5XCI6IDM2LjY3NSxcInpcIjogMH0sXCJwb3M0XCI6IHtcInhcIjogLTEyLFwieVwiOiAzMixcInpcIjogMH19LHtcInBvczFcIjoge1wieFwiOiAtNjMsXCJ5XCI6IDE3OCxcInpcIjogMH0sXCJwb3MyXCI6IHtcInhcIjogLTIxLjc5MixcInlcIjogMTU2LjY3NSxcInpcIjogMH0sXCJwb3MzXCI6IHtcInhcIjogLTMxLjc5MixcInlcIjogMzcuNjc1LFwielwiOiAwfSxcInBvczRcIjoge1wieFwiOiAtMTIsXCJ5XCI6IDMyLFwielwiOiAwfX0se1wicG9zMVwiOiB7XCJ4XCI6IC02MCxcInlcIjogMTgzLFwielwiOiAwfSxcInBvczJcIjoge1wieFwiOiA4OC4yMDgsXCJ5XCI6IDE2Mi42NzUsXCJ6XCI6IDB9LFwicG9zM1wiOiB7XCJ4XCI6IC0yOS43OTIsXCJ5XCI6IDQxLjY3NSxcInpcIjogMH0sXCJwb3M0XCI6IHtcInhcIjogLTEyLFwieVwiOiAxOCxcInpcIjogMH19LHtcInBvczFcIjoge1wieFwiOiAtNjQsXCJ5XCI6IDU4LFwielwiOiAwfSxcInBvczJcIjoge1wieFwiOiAtMjYuNzkyLFwieVwiOiAzMi42NzUsXCJ6XCI6IDB9LFwicG9zM1wiOiB7XCJ4XCI6IC0zNC43OTIsXCJ5XCI6IDIzLjY3NSxcInpcIjogMH0sXCJwb3M0XCI6IHtcInhcIjogLTEyLFwieVwiOiAxOCxcInpcIjogMH19LHtcInBvczFcIjoge1wieFwiOiAtMTg0LFwieVwiOiA2MixcInpcIjogMH0sXCJwb3MyXCI6IHtcInhcIjogLTI1Ljc5MixcInlcIjogMzQuNjc1LFwielwiOiAwfSxcInBvczNcIjoge1wieFwiOiAtMTU1Ljc5MixcInlcIjogMjUuNjc1LFwielwiOiAwfSxcInBvczRcIjoge1wieFwiOiAtMTgsXCJ5XCI6IDI2LFwielwiOiAwfX0se1wicG9zMVwiOiB7XCJ4XCI6IC01NyxcInlcIjogMTkwLFwielwiOiAwfSxcInBvczJcIjoge1wieFwiOiA5NS4yMDgsXCJ5XCI6IDE1OC42NzUsXCJ6XCI6IDB9LFwicG9zM1wiOiB7XCJ4XCI6IC0zMy43OTIsXCJ5XCI6IDI5LjY3NSxcInpcIjogMH0sXCJwb3M0XCI6IHtcInhcIjogLTE4LFwieVwiOiAyNixcInpcIjogMH19LHtcInBvczFcIjoge1wieFwiOiAtNzEsXCJ5XCI6IDE4NCxcInpcIjogMH0sXCJwb3MyXCI6IHtcInhcIjogLTI1Ljc5MixcInlcIjogMTU2LjY3NSxcInpcIjogMH0sXCJwb3MzXCI6IHtcInhcIjogLTM1Ljc5MixcInlcIjogMjcuNjc1LFwielwiOiAwfSxcInBvczRcIjoge1wieFwiOiAtMjUsXCJ5XCI6IDQwLFwielwiOiAwfX1dO1xyXG4gICAgfVxyXG5cclxuXHJcblxyXG4gICAgc3RhdGljIHNldENvZGUoY29kZSl7XHJcbiAgICAgICAgdGhpcy5HTV9JTkZPLnNjb2RlID0gY29kZTtcclxuICAgIH1cclxuICAgIFxyXG4gICAgc3RhdGljIGdldEtleShrZXkpe1xyXG4gICAgICAgIC8vIHZhciByZWcgPSBuZXcgUmVnRXhwKCcoXnwmKScgKyBrZXkgKyAnPShbXiZdKikoJnwkKScsICdpJyk7XHJcbiAgICAgICAgLy8gdmFyIHIgPSB3aW5kb3cubG9jYXRpb24uc2VhcmNoLnN1YnN0cmluZygxKS5tYXRjaChyZWcpO1xyXG4gICAgICAgIC8vIGlmIChyICE9IG51bGwpIHtcclxuICAgICAgICAvLyAgICAgcmV0dXJuIHVuZXNjYXBlKHJbMl0pO1xyXG4gICAgICAgIC8vIH1cclxuICAgICAgICByZXR1cm4gXCJcIjtcclxuICAgIH1cclxuXHJcblxyXG4gICAgc3RhdGljIEF1dGhlbnRpY2F0aW9uKCl7XHJcbiAgICAgICAgY2MuZnguR2FtZVRvb2wuQXV0aGVudGljYXRpb24oKTtcclxuICAgIH1cclxufVxyXG5cclxuIl19 ->>>>>>> 0a31a7a5abc2c505bf743aa596e1c765a0405152 -//------QC-SOURCE-SPLIT------ - - (function() { - var nodeEnv = typeof require !== 'undefined' && typeof process !== 'undefined'; - var __module = nodeEnv ? module : {exports:{}}; - var __filename = 'preview-scripts/assets/Script/Map.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, '2234assp7RIvpDgrnqljp2R', 'Map'); -// Script/Map.ts - -"use strict"; -// Learn TypeScript: -// - https://docs.cocos.com/creator/manual/en/scripting/typescript.html -// Learn Attribute: -// - https://docs.cocos.com/creator/manual/en/scripting/reference/attributes.html -// Learn life-cycle callbacks: -// - https://docs.cocos.com/creator/manual/en/scripting/life-cycle-callbacks.html -var __extends = (this && this.__extends) || (function () { - var extendStatics = function (d, b) { - extendStatics = Object.setPrototypeOf || - ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) || - function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; }; - return extendStatics(d, b); - }; - return function (d, b) { - extendStatics(d, b); - function __() { this.constructor = d; } - d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); - }; -})(); -var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) { - var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; - if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc); - else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; - return c > 3 && r && Object.defineProperty(target, key, r), r; -}; -Object.defineProperty(exports, "__esModule", { value: true }); -var GameManager_1 = require("./GameManager"); -var NumberToImage_1 = require("./NumberToImage"); -var MiniGameSdk_1 = require("./Sdk/MiniGameSdk"); -var _a = cc._decorator, ccclass = _a.ccclass, property = _a.property; -var MapConroler = /** @class */ (function (_super) { - __extends(MapConroler, _super); - function MapConroler() { - var _this = _super !== null && _super.apply(this, arguments) || this; - _this.Block_Array = []; - _this.Block_Prop = []; - _this.MapBlockPrefab = null; - _this.Block_Color = []; - _this.Wall_Prefab = []; - _this.wallTurnPrefab = null; - _this.timeBtn = null; - _this.destroyBtn = null; - _this.magicBtn = null; - _this.mask = null; - _this.iceLabel = null; - _this.hammerLabel = null; - _this.magicLabel = null; - _this.magicMask = null; - _this.hammerMask = null; - _this.freezeMask = null; - _this.coinPop = null; - _this.timeLabel = null; - _this.levelLabel = null; - _this.new_mode = 0; - _this.mapWidth = 0; - _this.mapHeight = 0; - _this.wallNum = 0; - _this.blockNum = 0; - _this.homeCanTouch = true; //按钮可用状态 - _this.againCanTouch = true; //重玩按钮可以用状态 - _this.gameOver = false; //游戏结束状态 - _this.gameWin = false; //游戏胜利状态 - _this.gameStart = false; //游戏开始状态 - _this.timeNumber = 0; //游戏时间 用于倒计时 - _this.count_Time = 0; //用于统计总游戏时长 - _this.add_Time = 0; //复活时间 - _this.pause = false; //暂停状态 - _this.hammer = false; //锤子状态 - return _this; - } - MapConroler_1 = MapConroler; - // mapInfo: number[][] = []; - MapConroler.prototype.onLoad = function () { - var _this = this; - cc.fx.GameConfig.GM_INFO.review = 0; - cc.fx.GameConfig.GM_INFO.gameState = true; - this.mask.opacity = 0; - this.node.getChildByName("Adhesive").zIndex = 500; - cc.game.setFrameRate(63); - cc.fx.AudioManager._instance.playEffect("zhuan2", null); - this.node.parent.parent.parent.getChildByName("zhuanchang").active = true; - this.node.parent.parent.parent.getChildByName("zhuanchang").getComponent(sp.Skeleton).setAnimation(1, "down", false); - this.node.parent.parent.parent.getChildByName("zhuanchang").getComponent(sp.Skeleton).setCompleteListener(function (entry) { - if (entry.animation.name === "down") { - // 动画播放结束后执行的逻辑 - _this.node.parent.parent.parent.getChildByName("zhuanchang").active = false; - } - }); - this.blocks = []; - this.leftDoors = []; //左门 - this.rightDoors = []; //右门 - this.topDoors = []; //上门 - this.bottomDoors = []; //下门 - this.gameWin = false; - this.gameOver = false; - this.gameStart = false; - this.homeCanTouch = true; - this.againCanTouch = true; - this.new_mode = 0; - this.count_Time = 0; - this.add_Time = 0; - this.iceLabel.string = cc.fx.GameConfig.GM_INFO.freezeAmount.toString(); - this.hammerLabel.string = cc.fx.GameConfig.GM_INFO.hammerAmount.toString(); - this.magicLabel.string = cc.fx.GameConfig.GM_INFO.magicAmount.toString(); - // cc.game.addPersistRootNode(this.node); - MapConroler_1._instance = this; - }; - MapConroler.prototype.start = function () { - setTimeout(function () { - cc.director.preloadScene("HomeScene", function (err, asset) { - if (err) { - console.error('动态加载 HomeScene 失败:', err); - return; - } - }); - }, 1000); - // console.log("进入GameScene"); - this.Block_Array = GameManager_1.default._instance.Block_Array; - this.Wall_Prefab = GameManager_1.default._instance.Wall_Prefab; - this.Block_Color = GameManager_1.default._instance.Block_Color; - // this.particleEffects = GameManager._instance.particleEffects; - this.initMap(); - }; - MapConroler.prototype.startUpdate = function () { - if (this.gameStart == false) { - this.gameStart = true; - //发送数数事件——进入关卡 - console.log("准备进入下一关,发送下一关进入"); - cc.fx.GameTool.shushu_Track("enter_stage"); - this.startTimeCutDown(); - for (var i = 0; i < this.blocks.length; i++) { - if (this.blocks[i].getComponent("Block").type == 6) { - this.blocks[i].getChildByName("boom").getComponent("Boom").startBoom(); - } - } - } - }; - MapConroler.prototype.initMap = function () { - // this.node.getChildByName("Wall").zIndex = 10; - this.timeLabel = this.node.parent.getChildByName("Top").getChildByName("time"); - this.levelLabel = this.node.parent.getChildByName("Top").getChildByName("level"); - this.timeNumber = cc.fx.GameConfig.LEVEL_INFO[0].time; - NumberToImage_1.default.getTimeMargin(this.timeNumber, 50, "time_", this.timeLabel); - // var timeTemp = cc.fx.GameTool.getTimeMargin(this.timeNumber); - // this.timeLabel.string = timeTemp.toString(); - NumberToImage_1.default.numberToImageNodes((cc.fx.GameConfig.GM_INFO.level + 1), 50, 20, "level_", this.levelLabel, false); - //this.startTimeCutDown(); - this.mapWidth = cc.fx.GameConfig.LEVEL_INFO[0].map[0]; - this.mapHeight = cc.fx.GameConfig.LEVEL_INFO[0].map[1]; - var gap = cc.fx.GameConfig.LEVEL_INFO[0].gap; - var risefall = cc.fx.GameConfig.LEVEL_INFO[0].risefall; - this.pause = false; - this.hammer = false; - this.wallNum = 0; - this.setMapInfo(); - this.blocks = []; - this.mapBlocksWall = []; - this.mapInfo = []; - this.wallInfo = []; - this.openWall = []; - this.wallArray = []; - this.freezeWall = []; - this.riseFallBlcok = []; - this.mapBlockArray = []; - this.freezeArray = []; - this.loackArray = []; - this.count_Time = 0; - this.add_Time = 0; - var startX = this.mapWidth % 2 == 0 ? -(this.mapWidth - 1) * 60 : -(this.mapWidth - 1) * 60; - var startY = this.mapHeight % 2 == 0 ? -(this.mapHeight - 1) * 60 : -(this.mapHeight - 1) * 60; - // startX =(this.mapWidth-1)*60 + 60; - // startY =-(this.mapHeight-1)*60 - 60; - for (var i = 0; i < this.mapWidth; i++) { - this.mapBlocksWall[i] = []; - for (var j = 0; j < this.mapHeight; j++) { - var block = cc.instantiate(this.MapBlockPrefab); - block.parent = this.node.getChildByName("mapBlock"); - block.getComponent("MapBlock").init(i, j); - // block.getChildByName("num").getComponent(cc.Label).string = i + ":" + j; - block.setPosition(cc.v2(startX + i * 120, startY + j * 120)); - if (risefall != null) { - if (this.mapRiseFall(cc.v2(i, j), risefall, block)) { - this.riseFallBlcok.push(block); - } - } - if (gap != null) { - if (!this.mapGap(cc.v2(i, j), gap) || i == 0 || i == this.mapWidth - 1 - || j == 0 || j == this.mapHeight - 1) { - block.opacity = 254; - block.removeComponent(cc.Sprite); - block.removeAllChildren(); - this.wallInfo.push(block); - } - else - this.mapInfo.push(block); - } - else { - if (i == 0 || i == this.mapWidth - 1 - || j == 0 || j == this.mapHeight - 1) { - block.opacity = 254; - block.removeComponent(cc.Sprite); - block.removeAllChildren(); - this.wallInfo.push(block); - } - else - this.mapInfo.push(block); - } - this.mapBlocksWall[i].push(block); - } - } - this.wallInit(); - this.blockInit(); - }; - //创建方块 - // ... 已有代码 ... - //创建方块 - // ... 已有代码 ... - MapConroler.prototype.blockInit = function () { - var _this = this; - var blockArray = cc.fx.GameConfig.BLOCK_INFO[0]; - blockArray = this.sortBlock(blockArray); - console.log("创建方块", blockArray); - var index = 0; // 当前要创建的方块索引 - var BLOCKS_PER_FRAME = 1; // 初始每帧创建的方块数量 - var MAX_PER_FRAME = 10; // 每帧最大创建数量 - var MIN_PER_FRAME = 1; // 每帧最小创建数量 - var createBlocks = function () { - var startTime = performance.now(); - var _loop_1 = function (i) { - var blockInfo = blockArray[index]; - // 缓存 Block_Array 访问 - var blockPrefab = _this.Block_Array[blockInfo.block]; - var block = cc.instantiate(blockPrefab); - block.parent = _this.node; - block.setPosition(cc.v2(blockInfo.position.x, blockInfo.position.y)); - if (blockInfo.block != 23) { - _this.blockNum += 1; - _this.blocks.push(block); - if (blockInfo.type == 1) { - var info = { - id: blockInfo.id + 1, - block: blockInfo.block, - color: blockInfo.stacking, - type: 10, - position: blockInfo.position, - stacking: blockInfo.color - }; - // 缓存 Block_Array 访问 - var blockUpPrefab = _this.Block_Array[info.block]; - var blockUp = cc.instantiate(blockUpPrefab); - blockUp.parent = _this.node; - blockUp.setPosition(cc.v2(info.position.x, info.position.y)); - _this.blocks.push(blockUp); - block.getComponent("Block").init(blockInfo, null, null, blockUp); - blockUp.getComponent("Block").init(info, null, null, block); - _this.blockNum += 1; - } - else if (blockInfo.type == 9) { - if (blockInfo.adhesiveTime < 2) { - index++; - return "continue"; - } - index++; - var info_1 = blockArray[index]; - // 缓存 Block_Array 访问 - var blockUpPrefab = _this.Block_Array[info_1.block]; - var blockUp_1 = cc.instantiate(blockUpPrefab); - blockUp_1.parent = _this.node; - blockUp_1.setPosition(cc.v2(info_1.position.x, info_1.position.y)); - _this.blocks.push(blockUp_1); - block.getComponent("Block").init(blockInfo, null, null, blockUp_1, false); - setTimeout(function () { - blockUp_1.getComponent("Block").init(info_1, null, null, block, true); - }, 100); - _this.blockNum += 1; - } - else { - block.getComponent("Block").init(blockInfo); - } - } - else { - block.getComponent("Barrier").init(blockInfo); - } - index++; - }; - for (var i = 0; i < BLOCKS_PER_FRAME && index < blockArray.length; i++) { - _loop_1(i); - } - var endTime = performance.now(); - var frameTime = endTime - startTime; - // 如果当前帧执行时间过长,减少每帧创建数量 - if (frameTime > 16) { - BLOCKS_PER_FRAME = Math.max(BLOCKS_PER_FRAME - 1, MIN_PER_FRAME); - } - else { - BLOCKS_PER_FRAME = Math.min(BLOCKS_PER_FRAME + 1, MAX_PER_FRAME); - } - // 如果还有方块未创建,下一帧继续创建 - if (index < blockArray.length) { - // 使用 scheduleOnce 在下一帧执行 createBlocks - _this.scheduleOnce(function () { - createBlocks(); - }, 0); - } - else { - } - }; - // 开始分帧创建方块 - createBlocks(); - }; - //给创建方块排序,用来降低drawcall 合批 - MapConroler.prototype.sortBlock = function (allBlocks) { - return allBlocks.sort(function (a, b) { - // 先处理 type 为 1 的情况,将其放到最后 - if (a.type === 1 && b.type !== 1) { - return 1; - } - if (a.type !== 1 && b.type === 1) { - return -1; - } - // 对 type 不为 0 的元素按 type 排序 - if (a.type !== 0 && b.type !== 0) { - return a.type - b.type; - } - if (a.type !== 0 && b.type === 0) { - return 1; - } - if (a.type === 0 && b.type !== 0) { - return -1; - } - // 再处理 block 为 23 的情况,将其放到最前面 - if (a.block === 23 && b.block !== 23) { - return -1; - } - if (a.block !== 23 && b.block === 23) { - return 1; - } - // 其余按 color 升序排列 - return a.color - b.color; - }); - }; - //创建墙壁 - MapConroler.prototype.wallInit = function () { - var _this = this; - var index = 0; // 当前要创建的墙壁索引 - var WALLS_PER_FRAME = 1; // 初始每帧创建的墙壁数量 - var MAX_PER_FRAME = 10; // 每帧最大创建数量 - var MIN_PER_FRAME = 1; // 每帧最小创建数量 - var createWalls = function () { - var startTime = performance.now(); - for (var i = 0; i < WALLS_PER_FRAME && index < _this.wallInfo.length; i++) { - var block = _this.wallInfo[index]; - var dir = _this.getWllDiraction("wall", cc.v2(block.getComponent("MapBlock").posX, block.getComponent("MapBlock").posY)); - if (dir != null) { - _this.createWall(dir, block); - } - index++; - } - var endTime = performance.now(); - var frameTime = endTime - startTime; - // 如果当前帧执行时间过长,减少每帧创建数量 - if (frameTime > 16) { - WALLS_PER_FRAME = Math.max(WALLS_PER_FRAME - 1, MIN_PER_FRAME); - } - else { - WALLS_PER_FRAME = Math.min(WALLS_PER_FRAME + 1, MAX_PER_FRAME); - } - // 如果还有墙壁未创建,下一帧继续创建 - if (index < _this.wallInfo.length) { - _this.scheduleOnce(function () { - createWalls(); - }, 0); - } - else { - // 所有墙壁创建完成后,创建拐角节点 - _this.createCornerNodes(); - } - }; - // 开始分帧创建墙壁 - createWalls(); - }; - // ... 已有代码 ... - MapConroler.prototype.getWllDiraction = function (type, pointA) { - var dir = []; - var pointB = cc.v2(pointA.x + 1, pointA.y); - var pointC = cc.v2(pointA.x - 1, pointA.y); - var pointD = cc.v2(pointA.x, pointA.y + 1); - var pointE = cc.v2(pointA.x, pointA.y - 1); - var opacity = 0; - if (type == "wall") - opacity = 255; - if (type == "turn") - opacity = 250; - if (pointB.x < this.mapWidth) { - if (this.mapBlocksWall[pointB.x][pointB.y].opacity == opacity) { - if (type == "turn" && this.mapBlocksWall[pointB.x][pointB.y].getComponent("MapBlock").direction == "right") { - } - else - dir.push("right"); - } - } - if (pointC.x >= 0) { - if (this.mapBlocksWall[pointC.x][pointC.y].opacity == opacity) { - if (type == "turn" && this.mapBlocksWall[pointC.x][pointC.y].getComponent("MapBlock").direction == "left") { - } - else - dir.push("left"); - } - } - if (pointD.y < this.mapHeight) { - if (this.mapBlocksWall[pointD.x][pointD.y].opacity == opacity) { - if (type == "turn" && this.mapBlocksWall[pointD.x][pointD.y].getComponent("MapBlock").direction == "up") { - } - else - dir.push("up"); - } - } - if (pointE.y >= 0) { - if (this.mapBlocksWall[pointE.x][pointE.y].opacity == opacity) { - if (type == "turn" && this.mapBlocksWall[pointE.x][pointE.y].getComponent("MapBlock").direction == "down") { - } - else - dir.push("down"); - } - } - if (dir.length > 2) { - return null; - } - if (dir.length == 1) { - if (type == "wall") - return dir[0]; - else - return null; - } - else if (dir.length == 2) { - return dir[0] + dir[1]; - } - }; - MapConroler.prototype.createCornerNodes = function () { - // 定义拐角位置 - for (var i = 0; i < this.wallInfo.length; i++) { - var block = this.wallInfo[i]; - if (block.opacity != 250) { - var dir = this.getWllDiraction("turn", cc.v2(block.getComponent("MapBlock").posX, block.getComponent("MapBlock").posY)); - if (dir != null) { - this.createTurn(dir, block, block.getComponent("MapBlock").posX, block.getComponent("MapBlock").posY); - } - } - } - }; - MapConroler.prototype.createWall = function (direction, node) { - var wall = null; - node.getComponent("MapBlock").setDiraction(direction); - switch (direction) { - case "right": - node.opacity = 250; - wall = cc.instantiate(this.Wall_Prefab[4]); - this.leftDoors.push(wall); - // wall.parent = this.node.getChildByName("Wall"); - wall.parent = this.node; - wall.setPosition(cc.v2(node.x, node.y)); - node.opacity = 250; - wall.getChildByName("wall").getComponent("Wall").init(null, node.getComponent("MapBlock").posX, node.getComponent("MapBlock").posY, direction); - //wall.getChildByName("wall").getChildByName("num").getComponent(cc.Label).string = this.wallNum.toString(); - this.setDoorInfo(wall.getChildByName("wall")); - this.wallNum += 1; - if (wall.getChildByName("wall").getComponent("Wall").special == 2) - this.openWall.push(wall); - else if (wall.getChildByName("wall").getComponent("Wall").special == 3) - this.freezeWall.push(wall); - break; - case "left": - node.opacity = 250; - wall = cc.instantiate(this.Wall_Prefab[3]); - // wall.parent = this.node.getChildByName("Wall"); - this.rightDoors.push(wall); - wall.parent = this.node; - wall.setPosition(cc.v2(node.x, node.y)); - wall.getChildByName("wall").getComponent("Wall").init(null, node.getComponent("MapBlock").posX, node.getComponent("MapBlock").posY, direction); - this.setDoorInfo(wall.getChildByName("wall")); - //wall.getChildByName("wall").getChildByName("num").getComponent(cc.Label).string = this.wallNum.toString(); - this.wallNum += 1; - if (wall.getChildByName("wall").getComponent("Wall").special == 2) - this.openWall.push(wall); - else if (wall.getChildByName("wall").getComponent("Wall").special == 3) - this.freezeWall.push(wall); - break; - case "up": - node.opacity = 250; - wall = cc.instantiate(this.Wall_Prefab[5]); - this.topDoors.push(wall); - // wall.parent = this.node.getChildByName("Wall"); - wall.parent = this.node; - wall.setPosition(cc.v2(node.x, node.y)); - wall.getChildByName("wall").getComponent("Wall").init(null, node.getComponent("MapBlock").posX, node.getComponent("MapBlock").posY, direction); - this.setDoorInfo(wall.getChildByName("wall")); - //wall.getChildByName("wall").getChildByName("num").getComponent(cc.Label).string = this.wallNum.toString(); - this.wallNum += 1; - if (wall.getChildByName("wall").getComponent("Wall").special == 2) - this.openWall.push(wall); - else if (wall.getChildByName("wall").getComponent("Wall").special == 3) - this.freezeWall.push(wall); - break; - case "down": - node.opacity = 250; - wall = cc.instantiate(this.Wall_Prefab[0]); - this.bottomDoors.push(wall); - // wall.parent = this.node.getChildByName("Wall"); - wall.parent = this.node; - wall.setPosition(cc.v2(node.x, node.y)); - // this.setDoorInfo(wall.getChildByName("wall")); - wall.getChildByName("wall").getComponent("Wall").init(null, node.getComponent("MapBlock").posX, node.getComponent("MapBlock").posY, direction); - this.setDoorInfo(wall.getChildByName("wall")); - //wall.getChildByName("wall").getChildByName("num").getComponent(cc.Label).string = this.wallNum.toString(); - this.wallNum += 1; - if (wall.getChildByName("wall").getComponent("Wall").special == 2) - this.openWall.push(wall); - else if (wall.getChildByName("wall").getComponent("Wall").special == 3) - this.freezeWall.push(wall); - break; - case "upright": - case "rightup": - node.opacity = 249; - wall = cc.instantiate(this.Wall_Prefab[7]); - // wall.parent = this.node.getChildByName("Wall"); - wall.parent = this.node; - wall.setPosition(cc.v2(node.x, node.y)); - wall.children[1].getComponent("Wall").init(null, node.getComponent("MapBlock").posX, node.getComponent("MapBlock").posY, direction); - wall.children[2].getComponent("Wall").init(null, node.getComponent("MapBlock").posX, node.getComponent("MapBlock").posY, direction); - //wall.children[0].getChildByName("num").getComponent(cc.Label).string = this.wallNum.toString(); - this.setDoorInfo(wall.children[0]); - this.wallNum += 1; - //wall.children[1].getChildByName("num").getComponent(cc.Label).string = this.wallNum.toString(); - this.setDoorInfo(wall.children[1]); - this.wallNum += 1; - break; - case "upleft": - case "leftup": - node.opacity = 249; - wall = cc.instantiate(this.Wall_Prefab[6]); - // wall.parent = this.node.getChildByName("Wall"); - wall.parent = this.node; - wall.setPosition(cc.v2(node.x, node.y)); - wall.children[1].getComponent("Wall").init(null, node.getComponent("MapBlock").posX, node.getComponent("MapBlock").posY, direction); - wall.children[2].getComponent("Wall").init(null, node.getComponent("MapBlock").posX, node.getComponent("MapBlock").posY, direction); - //wall.children[0].getChildByName("num").getComponent(cc.Label).string = this.wallNum.toString(); - this.setDoorInfo(wall.children[0]); - this.wallNum += 1; - //wall.children[1].getChildByName("num").getComponent(cc.Label).string = this.wallNum.toString(); - this.setDoorInfo(wall.children[1]); - this.wallNum += 1; - break; - case "downright": - case "rightdown": - node.opacity = 249; - wall = cc.instantiate(this.Wall_Prefab[2]); - // wall.parent = this.node.getChildByName("Wall"); - wall.parent = this.node; - wall.setPosition(cc.v2(node.x, node.y)); - wall.children[1].getComponent("Wall").init(null, node.getComponent("MapBlock").posX, node.getComponent("MapBlock").posY, direction); - wall.children[2].getComponent("Wall").init(null, node.getComponent("MapBlock").posX, node.getComponent("MapBlock").posY, direction); - //wall.children[0].getChildByName("num").getComponent(cc.Label).string = this.wallNum.toString(); - this.setDoorInfo(wall.children[0]); - this.wallNum += 1; - //wall.children[1].getChildByName("num").getComponent(cc.Label).string = this.wallNum.toString(); - this.setDoorInfo(wall.children[1]); - this.wallNum += 1; - break; - case "downleft": - case "leftdown": - node.opacity = 249; - wall = cc.instantiate(this.Wall_Prefab[1]); - // wall.parent = this.node.getChildByName("Wall"); - wall.parent = this.node; - wall.setPosition(cc.v2(node.x, node.y)); - wall.children[1].getComponent("Wall").init(null, node.getComponent("MapBlock").posX, node.getComponent("MapBlock").posY, direction); - wall.children[2].getComponent("Wall").init(null, node.getComponent("MapBlock").posX, node.getComponent("MapBlock").posY, direction); - //wall.children[0].getChildByName("num").getComponent(cc.Label).string = this.wallNum.toString(); - this.setDoorInfo(wall.children[0]); - this.wallNum += 1; - //wall.children[1].getChildByName("num").getComponent(cc.Label).string = this.wallNum.toString(); - this.setDoorInfo(wall.children[1]); - this.wallNum += 1; - break; - } - // if(wallTurn){ - // wallTurn.getComponent("wallTunr").init(wall); - // } - }; - MapConroler.prototype.setDoorInfo = function (wall) { - var doorInfo = cc.fx.GameConfig.WALL_INFO[0]; - if (doorInfo) { - for (var j = 0; j < doorInfo.length; j++) { - if (doorInfo[j].num == this.wallNum) { - wall.getComponent("Wall").init(doorInfo[j], null, null, null); - this.wallArray.push(wall.parent); - } - } - } - }; - MapConroler.prototype.createTurn = function (direction, node, posX, posY) { - var wall = null; - wall = cc.instantiate(this.wallTurnPrefab); - wall.parent = this.node; - wall.setPosition(cc.v2(node.x, node.y)); - switch (direction) { - case "upright": - case "rightup": - wall.angle = 0; - wall.getChildByName("icon").angle = 0; - break; - case "upleft": - case "leftup": - wall.angle = 90; - wall.getChildByName("icon").angle = -90; - wall.getChildByName("icon").y += 5; - wall.getChildByName("icon").x -= 1.3; - break; - case "downright": - case "rightdown": - wall.angle = 270; - wall.getChildByName("icon").angle = -270; - wall.getChildByName("icon").x += 2.5; - wall.getChildByName("icon").y += 1; - break; - case "downleft": - case "leftdown": - wall.angle = 180; - wall.getChildByName("icon").angle = -180; - wall.getChildByName("icon").x += 4.5; - wall.getChildByName("icon").y += 3.2; - break; - } - // if(direction == "rightdown" || direction == "downright") { - // wall.zIndex = 50 + posX - posY*3; - // } - // else - // wall.zIndex = 50 + posX - posY*3; - if (direction == "up" || direction == "leftup" || direction == "upleft") { - wall.zIndex = 100 + posX - posY * 3; - } - else if (direction == "rightup" || direction == "upright" || direction == "rightdown" || direction == "downright" || direction == "downleft") { - wall.zIndex = 30 + posX - posY * 3; - } - else if (direction == "left" || direction == "leftdown") { - wall.zIndex = 70 + posX - posY * 3; - } - else - wall.zIndex = 70 + posX - posY * 3; - // wall.getChildByName("num").angle = -wall.angle; - //wall.getChildByName("num").getComponent(cc.Label).string = direction; - //wall.getChildByName("num").getComponent(cc.Label).string = wall.zIndex+ ""; - // console.log(posX,posY,wall.zIndex); - // this.wallNum += 1; - // wall.getChildByName("num").getComponent(cc.Label).string = this.wallNum + ""; - }; - //地图底块缺口判断 - MapConroler.prototype.mapGap = function (point, gap) { - for (var i = 0; i < gap.length; i++) { - if (point.x == gap[i].x && point.y == gap[i].y) { - return false; - } - } - return true; - }; - //升降地块判断 - MapConroler.prototype.mapRiseFall = function (point, risefall, block) { - for (var i = 0; i < risefall.length; i++) { - if (point.x == risefall[i].pos.x && point.y == risefall[i].pos.y) { - block.getChildByName("risefall").active = true; - block.getChildByName('risefall').getChildByName("color").getComponent(cc.Label).string = risefall[i].color + ""; - block.getChildByName('risefall').addComponent(cc.BoxCollider); - block.getChildByName('risefall').getComponent(cc.BoxCollider).size = cc.size(110, 110); - return true; - } - } - return false; - }; - //升降地块 - MapConroler.prototype.changeRiseFall = function (color, down) { - color = color.toString(); - for (var i = 0; i < this.riseFallBlcok.length; i++) { - if (color == this.riseFallBlcok[i].getChildByName("risefall").getChildByName("color").getComponent(cc.Label).string) { - if (down) { - this.riseFallBlcok[i].getChildByName("risefall").active = false; - this.riseFallBlcok[i].getChildByName('risefall').removeComponent(cc.BoxCollider); - } - else { - this.riseFallBlcok[i].getChildByName("risefall").active = true; - this.riseFallBlcok[i].getChildByName('risefall').addComponent(cc.BoxCollider); - this.riseFallBlcok[i].getChildByName('risefall').getComponent(cc.BoxCollider).size = cc.size(110, 110); - } - } - } - }; - //查询叠加快id - MapConroler.prototype.foundDownBlock = function (id) { - for (var i = 0; i < this.blocks.length; i++) { - if (this.blocks[i].getComponent("Block").blockId == id) { - return this.blocks[i]; - } - } - return null; - }; - //删除块 - MapConroler.prototype.removeBlock = function (id) { - for (var i = 0; i < this.blocks.length; i++) { - if (this.blocks[i].getComponent("Block").blockId == id) { - return this.blocks[i]; - } - } - return null; - }; - MapConroler.prototype.getMinAndMax = function (block) { - var width = Math.floor(block.width / 120); - var height = Math.floor(block.height / 120); - var minX = width; - var maxX = this.mapWidth - 2; - var minY = 1; - var maxY = this.mapHeight - 2 - height + 1; - if (block.name == "block10") { - minX = width - 1; - if (this.mapWidth > 3) - maxX = maxX - 1; - } - else if (block.name == "block11") { - minX = width - 2; - if (this.mapWidth > 3) - maxX = maxX - 2; - } - else if (block.name == "block14") { - minX = width - 1; - maxX = maxX - 1; - } - else if (block.name == "block16") { - minX = width - 1; - maxX = maxX - 1; - } - else if (block.name == "block18") { - minX = width - 1; - maxX = maxX - 1; - } - else if (block.name == "block21") { - minX = width - 1; - maxX = maxX - 1; - } - return { minX: minX, maxX: maxX, minY: minY, maxY: maxY }; - }; - //检测落点是否可以消除 - MapConroler.prototype.checkPass = function (node, blocks) { - var minAndMax = this.getMinAndMax(node); - var minX = minAndMax.minX; - var maxX = minAndMax.maxX; - var minY = minAndMax.minY; - var maxY = minAndMax.maxY; - var nodePos = cc.v2(node.getComponent("Block").posX, node.getComponent("Block").posY); - // 获取地图边界信息 - var allBlocks = []; - for (var i = 0; i < blocks.length; i++) { - allBlocks.push(cc.v2(nodePos.x + blocks[i].x, nodePos.y + blocks[i].y)); - } - // const date1 = new Date().getTime(); - // console.log("将小块放入数组的时间",date1); - var jg = -1; - var pz = 0; - // 获取所有墙壁节点 - // let wall = this.node; - var direction = this.checkDiraction(allBlocks, maxX, maxY); - // 判断方块是否在地图边缘 - if (nodePos.x <= minX || direction[0] == true) { - // const date2 = new Date().getTime(); - // console.log("碰到左边缘",date2); - pz += 1; - var leftWalls = []; - for (var i = 0; i < this.leftDoors.length; i++) { - var wallLeft = this.leftDoors[i].getChildByName("wall"); - var wallPos = cc.v2(wallLeft.getComponent("Wall").posX, wallLeft.getComponent("Wall").posY); - for (var i_1 = 0; i_1 < allBlocks.length; i_1++) { - if (allBlocks[i_1].y == wallPos.y && allBlocks[i_1].x > wallPos.x) { - // console.log("id:",wall.getChildByName("num").getComponent(cc.Label).string); - leftWalls.push(wallLeft); - } - } - } - // console.log("得到左边墙壁数组",date6); - if (leftWalls.length != 0) { - var result = this.detectingBlock("left", node.getComponent("Block").posX, node.getComponent("Block").posY, allBlocks); - if (result == true) - result = this.passWall(result, leftWalls, node); - // console.log("碰到左边缘结果:",jg); - if (result) { - this.blockNum -= 1; - this.special_Treatment(node); - jg = 2; - this.createParticle(node, jg); - return jg; - } - } - } - if (nodePos.x >= maxX || direction[1] == true) { - // const date3 = new Date().getTime(); - // console.log("碰到右边缘",date3); - pz += 1; - var rightWalls = []; - for (var i = 0; i < this.rightDoors.length; i++) { - var wallRight = this.rightDoors[i].getChildByName("wall"); - var wallPos = cc.v2(wallRight.getComponent("Wall").posX, wallRight.getComponent("Wall").posY); - for (var i_2 = 0; i_2 < allBlocks.length; i_2++) { - if (allBlocks[i_2].y == wallPos.y && allBlocks[i_2].x < wallPos.x) { - // console.log("id:",wall.getChildByName("num").getComponent(cc.Label).string); - rightWalls.push(wallRight); - } - } - } - if (rightWalls.length != 0) { - var result = this.detectingBlock("right", node.getComponent("Block").posX, node.getComponent("Block").posY, allBlocks); - if (result == true) - result = this.passWall(result, rightWalls, node); - // console.log("碰到右边缘结果:",jg); - if (result) { - this.blockNum -= 1; - this.special_Treatment(node); - jg = 3; - this.createParticle(node, jg); - return jg; - } - } - } - if (nodePos.y <= minY || direction[2] == true) { - pz += 1; - // const date4 = new Date().getTime(); - // console.log("碰到下边缘",date4); - var downWalls = []; - for (var i = 0; i < this.topDoors.length; i++) { - var wallBottom = this.topDoors[i].getChildByName("wall"); - var wallPos = cc.v2(wallBottom.getComponent("Wall").posX, wallBottom.getComponent("Wall").posY); - for (var i_3 = 0; i_3 < allBlocks.length; i_3++) { - var luocha = Math.abs(allBlocks[i_3].y - wallPos.y); - if (allBlocks[i_3].x == wallPos.x && allBlocks[i_3].y > wallPos.y && luocha <= node.getComponent("Block").shu) { - // console.log("id:",wall.getChildByName("num").getComponent(cc.Label).string); - downWalls.push(wallBottom); - } - } - } - if (downWalls.length != 0) { - var result = this.detectingBlock("down", node.getComponent("Block").posX, node.getComponent("Block").posY, allBlocks); - if (result == true) - result = this.passWall(result, downWalls, node); - // console.log("碰到下边缘结果:",jg); - if (result) { - this.blockNum -= 1; - this.special_Treatment(node); - jg = 1; - this.createParticle(node, jg); - return jg; - } - } - } - if (nodePos.y >= maxY || direction[3] == true) { - pz += 1; - // const date5 = new Date().getTime(); - // console.log("碰到上边缘",date5); - var upWalls = []; - for (var i = 0; i < this.bottomDoors.length; i++) { - var wallTop = this.bottomDoors[i].getChildByName("wall"); - var wallPos = cc.v2(wallTop.getComponent("Wall").posX, wallTop.getComponent("Wall").posY); - for (var i_4 = 0; i_4 < allBlocks.length; i_4++) { - var luocha = Math.abs(allBlocks[i_4].y - wallPos.y); - if (allBlocks[i_4].x == wallPos.x && allBlocks[i_4].y < wallPos.y && luocha <= node.getComponent("Block").shu) { - upWalls.push(wallTop); - } - } - } - if (upWalls.length != 0) { - var result = this.detectingBlock("up", node.getComponent("Block").posX, node.getComponent("Block").posY, allBlocks); - if (result == true) - result = this.passWall(result, upWalls, node); - // console.log("碰到上边缘结果:",result); - if (result) { - this.blockNum -= 1; - this.special_Treatment(node); - jg = 0; - this.createParticle(node, jg); - return jg; - } - } - } - if (pz == 0) - jg = -1; - // const date10 = new Date().getTime(); - // console.log("所有检测结束耗时",date10,jg); - return jg; - }; - MapConroler.prototype.changeState = function () { - if (this.openWall.length != 0) { - for (var i = 0; i < this.openWall.length; i++) { - this.openWall[i].getChildByName("wall").getComponent("Wall").changeLock(); - } - } - if (this.freezeWall.length != 0) { - for (var i = 0; i < this.freezeWall.length; i++) { - this.freezeWall[i].getChildByName("wall").getComponent("Wall").changeFreeze(); - } - } - }; - //检测是否可以通过门 - MapConroler.prototype.passWall = function (jg, wallArray, node) { - for (var i = 0; i < wallArray.length; i++) { - if (wallArray[i].getComponent("Wall").special == 2) { - console.log("尝试通过开关门:", wallArray[i].getComponent("Wall").open); - } - if (wallArray[i].getComponent("Wall").special == 2 && wallArray[i].getComponent("Wall").open == false) { - jg = false; - break; - } - //console.log(wallArray[i].getChildByName("wall").getComponent("Wall").color,node.getComponent("Block").color) - if (wallArray[i].getComponent("Wall").color != node.getComponent("Block").color) { - jg = false; - break; - } - if (node.getComponent("Block").type == 5) { - if (wallArray[i].getComponent("Wall").special != 1) { - jg = false; - break; - } - } - } - if (jg == true && node.getComponent("Block").type == 5) { - for (var j = 0; j < wallArray.length; j++) { - if (wallArray[j].getComponent("Wall").special == 1 && wallArray[j].getComponent("Wall").wall_Info.length != 0) { - wallArray[j].getComponent("Wall").playStarDoor(); - } - } - } - // const date8 = new Date().getTime(); - // console.log("检测颜色是否能够通过门",date8); - return jg; - }; - //检测方块和门中间有没有夹杂其他块 - MapConroler.prototype.detectingBlock = function (direction, posX, posY, blocks) { - var jg = true; - var id = ""; - if (blocks.length > 0) { - for (var i = 0; i < blocks.length; i++) { - var pos = blocks[i]; - var x = pos.x; - var y = pos.y; - id = this.mapBlocksWall[x][y].getComponent("MapBlock").block_Id; - jg = this.checkAllDirections(id, direction, x, y); - if (!jg) { - // console.log("方向检测没过"); - i = 1000000; - return jg; - } - } - } - // const date7 = new Date().getTime(); - // console.log("方向检测通过",date7,jg); - return jg; - }; - //检测物体各方向是否有别的物块,防止碰到墙壁了但是是凹凸形状,墙与块之间有阻挡物块 - MapConroler.prototype.checkAllDirections = function (id, direction, x, y) { - var jg = true; - if (direction == "left") { - if (this.mapBlocksWall[x - 1][y].getComponent("MapBlock").block_Id != "" && this.mapBlocksWall[x - 1][y].getComponent("MapBlock").block_Id != "Wall" - && this.mapBlocksWall[x - 1][y].getComponent("MapBlock").block_Id != id) { - // console.log("左侧有物体") - jg = false; - return jg; - } - if (this.mapBlocksWall[x - 1][y].opacity == 249) { - jg = false; - return jg; - } - if ((x - 2) >= 0) { - if (this.mapBlocksWall[x - 2][y].getComponent("MapBlock").block_Id != "" && this.mapBlocksWall[x - 2][y].getComponent("MapBlock").block_Id != "Wall" - && this.mapBlocksWall[x - 2][y].getComponent("MapBlock").block_Id != id) { - // console.log("左侧有物体") - jg = false; - return jg; - } - if (this.mapBlocksWall[x - 2][y].opacity == 249) { - jg = false; - return jg; - } - } - } - else if (direction == "right") { - if (this.mapBlocksWall[x + 1][y].getComponent("MapBlock").block_Id != "" && this.mapBlocksWall[x + 1][y].getComponent("MapBlock").block_Id != "Wall" - && this.mapBlocksWall[x + 1][y].getComponent("MapBlock").block_Id != id) { - // console.log("右侧有物体") - jg = false; - return jg; - } - if (this.mapBlocksWall[x + 1][y].opacity == 249) { - jg = false; - return jg; - } - if ((x + 2) <= this.mapBlocksWall.length - 1) { - if (this.mapBlocksWall[x + 2][y].getComponent("MapBlock").block_Id != "" && this.mapBlocksWall[x + 2][y].getComponent("MapBlock").block_Id != "Wall" - && this.mapBlocksWall[x + 2][y].getComponent("MapBlock").block_Id != id) { - // console.log("右侧有物体") - jg = false; - return jg; - } - if (this.mapBlocksWall[x + 2][y].opacity == 249) { - jg = false; - return jg; - } - } - } - if (direction == "up") { - if (this.mapBlocksWall[x][y + 1].getComponent("MapBlock").block_Id != "" && this.mapBlocksWall[x][y + 1].getComponent("MapBlock").block_Id != "Wall" - && this.mapBlocksWall[x][y + 1].getComponent("MapBlock").block_Id != id) { - // console.log("上侧有物体") - jg = false; - return jg; - } - if (this.mapBlocksWall[x][y + 1].opacity == 249) { - jg = false; - return jg; - } - if ((y + 2) <= this.mapBlocksWall[x].length - 1) { - if (this.mapBlocksWall[x][y + 2].getComponent("MapBlock").block_Id != "" && this.mapBlocksWall[x][y + 2].getComponent("MapBlock").block_Id != "Wall" - && this.mapBlocksWall[x][y + 2].getComponent("MapBlock").block_Id != id) { - // console.log("上侧有物体") - jg = false; - return jg; - } - if (this.mapBlocksWall[x][y + 2].opacity == 249) { - jg = false; - return jg; - } - } - } - if (direction == "down") { - if (this.mapBlocksWall[x][y - 1].getComponent("MapBlock").block_Id != "" && this.mapBlocksWall[x][y - 1].getComponent("MapBlock").block_Id != "Wall" - && this.mapBlocksWall[x][y - 1].getComponent("MapBlock").block_Id != id) { - // console.log("下侧有物体") - jg = false; - return jg; - } - if (this.mapBlocksWall[x][y - 1].opacity == 249) { - jg = false; - return jg; - } - if ((y - 2) >= 0) { - if (this.mapBlocksWall[x][y - 2].getComponent("MapBlock").block_Id != "" && this.mapBlocksWall[x][y - 2].getComponent("MapBlock").block_Id != "Wall" - && this.mapBlocksWall[x][y - 2].getComponent("MapBlock").block_Id != id) { - // console.log("下侧有物体") - jg = false; - return jg; - } - if (this.mapBlocksWall[x][y - 2].opacity == 249) { - jg = false; - return jg; - } - } - } - // console.log("检测物体各方向是否有别的物块",jg); - return jg; - }; - MapConroler.prototype.checkDiraction = function (allBlocks, maxX, maxY) { - var jg = [false, false, false, false]; - for (var i = 0; i < allBlocks.length; i++) { - if (allBlocks[i].x > 0 && jg[0] == false) { - if (this.mapBlocksWall[allBlocks[i].x - 1][allBlocks[i].y].opacity == 250) { - jg[0] = true; - } - } - if (jg[1] == false) { - if (this.mapBlocksWall[allBlocks[i].x + 1][allBlocks[i].y].opacity == 250) { - jg[1] = true; - } - } - if (allBlocks[i].y > 0 && jg[2] == false) { - if (this.mapBlocksWall[allBlocks[i].x][allBlocks[i].y - 1].opacity == 250) { - jg[2] = true; - } - } - if (jg[3] == false) { - if (this.mapBlocksWall[allBlocks[i].x][allBlocks[i].y + 1].opacity == 250) { - jg[3] = true; - } - } - } - return jg; - }; - MapConroler.prototype.checkLeft = function (allBlocks) { - var jg = false; - return jg; - }; - MapConroler.prototype.checkRight = function (allBlocks, max) { - var jg = false; - for (var i = 0; i < allBlocks.length; i++) { - } - return jg; - }; - MapConroler.prototype.checkDown = function (allBlocks) { - var jg = false; - for (var i = 0; i < allBlocks.length; i++) { - } - return jg; - }; - MapConroler.prototype.checkUp = function (allBlocks, max) { - var jg = false; - for (var i = 0; i < allBlocks.length; i++) { - } - return jg; - }; - //特殊处理,方块带道具或者需要消除冰块 - MapConroler.prototype.special_Treatment = function (node) { - var freezeBlock = this.node.children.filter(function (child) { - if (child.getComponent("Block")) { - if (child.getComponent("Block").type == 4) - return child; - } - }); - if (freezeBlock.length > 0) { - for (var i = 0; i < freezeBlock.length; i++) { - freezeBlock[i].getChildByName("freeze").getComponent("Freeze").reduce(1); - } - } - if (node.getComponent("Block").type == 2 || node.getComponent("Block").type == 4) { - var lockBlock = this.node.children.filter(function (child) { - if (child.getComponent("Block")) { - if (child.getComponent("Block").type == 3) - return child; - } - }); - if (lockBlock.length > 0) - for (var i = 0; i < lockBlock.length; i++) { - lockBlock[i].getChildByName("lock").getComponent("Lock").reduce(); - } - } - for (var i = 0; i < this.blocks.length; i++) { - if (this.blocks[i] == node) { - this.blocks.splice(i, 1); - } - } - }; - //判断游戏成功下一关 - MapConroler.prototype.nextLevel = function () { - var _this = this; - this.pause = false; - this.openIce(); - this.blockNum = this.blocks.length; - if (this.blockNum == 0 && !this.gameWin && !this.gameOver) { - // alert("游戏成功"); - this.gameWin = true; - this.stopTimeCutDown(); - // console.log("成功消除一个"); - cc.fx.GameTool.changeCoin(40); - cc.fx.GameTool.addLevel(this.count_Time, this.add_Time); - this.check_NewMode(); - setTimeout(function () { - _this.node.parent.parent.getChildByName("Win").active = true; - }, 660); - // console.log("游戏成功"); - } - else { - if (this.gameOver == true) { - this.failLevel(null); - } - } - }; - MapConroler.prototype.check_NewMode = function () { - for (var i = 0; i < cc.fx.GameConfig.NEW_LEVEL.length; i++) { - if ((cc.fx.GameConfig.GM_INFO.level + 1) == cc.fx.GameConfig.NEW_LEVEL[i].level) { - this.new_mode = 3; - } - } - }; - MapConroler.prototype.winLevel = function () { - cc.fx.AudioManager._instance.playEffect("anniu_Big", null); - if (cc.fx.GameConfig.GM_INFO.level > 156) { - cc.fx.GameConfig.GM_INFO.level = 156; - // MapConroler._instance = null; - if (this.new_mode == 3) { - this.node.parent.parent.getChildByName("Win").active = false; - this.openNewMode(2); - cc.fx.GameConfig.LEVEL_INFO_init(false, 0); - return; - } - // cc.fx.GameConfig.LEVEL_INFO_init(true); - cc.fx.AudioManager._instance.playEffect("zhuan1", null); - this.node.parent.parent.parent.getChildByName("zhuanchang").active = true; - this.node.parent.parent.parent.getChildByName("zhuanchang").getComponent(sp.Skeleton).setAnimation(1, "up", false); - // this.node.parent.parent.parent.getChildByName("zhuanchang").getComponent(sp.Skeleton).setCompleteListener((entry) => { - // if (entry.animation.name === "up") { - // // 动画播放结束后执行的逻辑 - // this.node.parent.parent.parent.getChildByName("zhuanchang").active = false; - // } - // }); - cc.director.preloadScene("HomeScene", function (err, asset) { - if (err) { - console.error('动态加载 Prefab 失败:', err); - return; - } - }); - setTimeout(function () { - cc.director.loadScene("HomeScene"); - }, 1200); - } - else { - // console.log("下一关"); - // MapConroler._instance = null; - if (this.new_mode == 3) { - this.node.parent.parent.getChildByName("Win").active = false; - this.openNewMode(2); - cc.fx.GameConfig.LEVEL_INFO_init(false, 0); - return; - } - cc.fx.AudioManager._instance.playEffect("zhuan1", null); - this.node.parent.parent.parent.getChildByName("zhuanchang").active = true; - this.node.parent.parent.parent.getChildByName("zhuanchang").getComponent(sp.Skeleton).setAnimation(1, "up", false); - // this.node.parent.parent.parent.getChildByName("zhuanchang").getComponent(sp.Skeleton).setCompleteListener((entry) => { - // if (entry.animation.name === "up") { - // // 动画播放结束后执行的逻辑 - // this.node.parent.parent.parent.getChildByName("zhuanchang").active = false; - // } - // }); - setTimeout(function () { - cc.fx.GameConfig.LEVEL_INFO_init(true, 0); - }, 1200); - // this.node.parent.parent.parent.destroy(); - } - }; - MapConroler.prototype.againLevel = function () { - cc.fx.AudioManager._instance.playEffect("anniu_Big", null); - if (cc.fx.GameConfig.GM_INFO.hp < 1) { - MiniGameSdk_1.MiniGameSdk.API.showToast("体力值不足"); - return; - } - if (!this.againCanTouch) - return; - this.againCanTouch = false; - // MapConroler._instance = null; - cc.fx.AudioManager._instance.playEffect("zhuan1", null); - this.node.parent.parent.parent.getChildByName("zhuanchang").active = true; - this.node.parent.parent.parent.getChildByName("zhuanchang").getComponent(sp.Skeleton).setAnimation(1, "up", false); - // this.node.parent.parent.parent.getChildByName("zhuanchang").getComponent(sp.Skeleton).setCompleteListener((entry) => { - // if (entry.animation.name === "up") { - // // 动画播放结束后执行的逻辑 - // this.node.parent.parent.parent.getChildByName("zhuanchang").active = false; - // } - // }); - setTimeout(function () { - cc.fx.GameConfig.LEVEL_INFO_init(true, 0); - }, 1200); - // this.node.parent.parent.parent.destroy(); - }; - MapConroler.prototype.reviewLevel = function () { - cc.fx.AudioManager._instance.playEffect("anniu_Big", null); - var coin = 900; - if (cc.fx.GameConfig.GM_INFO.review == 1) - coin = 1900; - else if (cc.fx.GameConfig.GM_INFO.review == 2) - coin = 2500; - // console.log("自身金币:",cc.fx.GameConfig.GM_INFO.coin,"消耗金币:",coin); - if (cc.fx.GameConfig.GM_INFO.coin < Math.abs(coin)) { - MiniGameSdk_1.MiniGameSdk.API.showToast("金币不足,无法加时间"); - return; - } - else { - this.runRewive(-coin); - } - }; - MapConroler.prototype.runRewive = function (data) { - console.log("复活回调函数内", data); - cc.fx.GameTool.changeCoin(data); - MiniGameSdk_1.MiniGameSdk.API.showToast("继续游戏"); - if (cc.fx.GameConfig.GM_INFO.review < 2) - cc.fx.GameConfig.GM_INFO.review += 1; - this.gameOver = false; - this.timeNumber = 21; - this.add_Time += 20; - this.pause = false; - this.node.parent.parent.getChildByName("Lose").active = false; - this.startTimeCutDown(); - }; - MapConroler.prototype.homeBtn = function () { - // alert("游戏失败"); - cc.fx.AudioManager._instance.playEffect("anniu_Big", null); - if (!this.homeCanTouch) - return; - this.homeCanTouch = false; - this.node.parent.parent.getChildByName("Lose").active = true; - this.node.parent.parent.getChildByName("Lose").getChildByName("Time").active = false; - this.node.parent.parent.getChildByName("Lose").getChildByName("Boom").active = false; - this.node.parent.parent.getChildByName("Lose").getChildByName("Lock").active = false; - this.node.parent.parent.getChildByName("Lose").getChildByName("Health").active = true; - var data = { - time: this.count_Time, - add_Time: this.add_Time, - result: "fail" - }; - cc.fx.GameTool.shushu_Track("finish_stage", data); - if (this.gameStart == true) { - cc.fx.GameTool.setUserHealth(-1, function (data) { - }); - } - // this.node.parent.parent.parent.destroy(); - }; - MapConroler.prototype.returnHome = function () { - cc.fx.AudioManager._instance.playEffect("anniu_Big", null); - if (MapConroler_1._instance = null) { - return; - } - // MiniGameSdk.API.showToast("体力值减少"); - // MapConroler._instance = null; - cc.fx.GameConfig.LEVEL_INFO_init(false, 0); - if (this.new_mode == 3) { - this.node.parent.parent.getChildByName("Win").active = false; - this.openNewMode(1); - return; - } - cc.fx.AudioManager._instance.playEffect("zhuan1", null); - this.node.parent.parent.parent.getChildByName("zhuanchang").active = true; - this.node.parent.parent.parent.getChildByName("zhuanchang").getComponent(sp.Skeleton).setAnimation(1, "up", false); - cc.director.preloadScene("HomeScene", function (err, asset) { - if (err) { - console.error('动态加载 Prefab 失败:', err); - return; - } - }); - setTimeout(function () { - cc.director.loadScene("HomeScene"); - }, 1200); - }; - //判断游戏失败 - MapConroler.prototype.failLevel = function (type) { - var _this = this; - this.stopTimeCutDown(); - if (this.gameOver == true || this.gameWin == true) { - return; - } - var time = 0; - this.gameOver = true; - if (type == "boom") { - time = 2000; - } - setTimeout(function () { - _this.node.parent.parent.getChildByName("Lose").active = true; - _this.node.parent.parent.getChildByName("Lose").getChildByName("Time").active = true; - _this.node.parent.parent.getChildByName("Lose").getChildByName("Boom").active = false; - var buyBtn = _this.node.parent.parent.getChildByName("Lose").getChildByName("Time").getChildByName("buyBtn"); - buyBtn.getChildByName("coin1").active = buyBtn.getChildByName("coin2").active = buyBtn.getChildByName("coin3").active = false; - if (cc.fx.GameConfig.GM_INFO.review == 0) - buyBtn.getChildByName("coin1").active = true; - else if (cc.fx.GameConfig.GM_INFO.review == 1) - buyBtn.getChildByName("coin2").active = true; - else if (cc.fx.GameConfig.GM_INFO.review == 2) - buyBtn.getChildByName("coin3").active = true; - if (type) { - if (type == "boom") { - _this.node.parent.parent.getChildByName("Lose").getChildByName("Time").active = false; - _this.node.parent.parent.getChildByName("Lose").getChildByName("Boom").active = true; - } - } - }, time); - // console.log("游戏失败"); - }; - //打开新模式弹窗 - MapConroler.prototype.openNewMode = function (type) { - var _this = this; - var index = 0; - var BLOCKS_PER_FRAME = 5; // 每帧销毁的方块数量 - var destroyBlocks = function () { - var endIndex = Math.min(index + BLOCKS_PER_FRAME, _this.blocks.length); - for (; index < endIndex; index++) { - if (_this.blocks[index]) { - _this.blocks[index].destroy(); - } - } - // 如果还有方块未销毁,下一帧继续 - if (index < _this.blocks.length) { - _this.scheduleOnce(destroyBlocks, 0); - } - else { - } - }; - // 开始分帧销毁方块 - destroyBlocks(); - this.node.parent.parent.getChildByName("NewMode").active = true; - this.node.parent.parent.getChildByName("NewMode").getComponent("NewMode").setMode(type); - }; - MapConroler.prototype.downDoor = function (color, type) { - for (var i = 0; i < this.wallArray.length; i++) { - if (this.wallArray[i].getChildByName("wall").getComponent("Wall").color == color) { - if (type) { - if (type == 5) { - if (this.wallArray[i].getChildByName("wall").getComponent("Wall").special == 1) { - this.wallArray[i].getChildByName("wall").getComponent("Wall").downDoor(); - } - } - else - this.wallArray[i].getChildByName("wall").getComponent("Wall").downDoor(); - } - else - this.wallArray[i].getChildByName("wall").getComponent("Wall").downDoor(); - } - } - }; - MapConroler.prototype.upDoor = function () { - for (var i = 0; i < this.wallArray.length; i++) { - if (this.wallArray[i].getChildByName("wall").opacity == 0) { - this.wallArray[i].getChildByName("wall").getComponent("Wall").upDoor(); - } - } - }; - //开始倒计时 - MapConroler.prototype.startTimeCutDown = function () { - this.scheduleCallback = function () { - if (this.pause) - return; - if (this.timeNumber <= 0) { - this.stopTimeCutDown(); - var timeTemp = cc.fx.GameTool.getTimeMargin(this.timeNumber); - NumberToImage_1.default.getTimeMargin(this.timeNumber, 50, "time_", this.timeLabel); - // this.timeLabel.string = timeTemp.toString(); - if (!this.pause) - this.failLevel("time"); - } - else { - this.timeNumber -= 1; - this.count_Time += 1; - var timeTemp = cc.fx.GameTool.getTimeMargin(this.timeNumber); - NumberToImage_1.default.getTimeMargin(this.timeNumber, 50, "time_", this.timeLabel); - // this.timeLabel.string = timeTemp.toString(); - } - }.bind(this); - this.schedule(this.scheduleCallback, 1); - }; - // 停止倒计时 - MapConroler.prototype.stopTimeCutDown = function () { - if (this.scheduleCallback) { - this.unschedule(this.scheduleCallback); - } - }; - //使用时间道具 - MapConroler.prototype.useTimeProp = function () { - if (this.node.parent.getChildByName("Ice").active == true || this.hammer == true - || this.magicMask.active == true || this.timeNumber <= 1) { - return; - } - var freezeBtn = this.node.parent.getChildByName("Bottom").getChildByName("timeBtn"); - if (freezeBtn.getComponent("btnControl")._touch) { - freezeBtn.getComponent("btnControl").setTouch(false); - if (cc.fx.GameConfig.GM_INFO.freezeAmount < 1) { - if (cc.fx.GameConfig.GM_INFO.coin < 1500) { - MiniGameSdk_1.MiniGameSdk.API.showToast("金币不足,无法购买道具"); - freezeBtn.getComponent("btnControl").setTouch(true); - return; - } - this.node.parent.parent.getChildByName("propWindow").active = true; - this.node.parent.parent.parent.getComponent("SceneManager").openPropBuy("freeze"); - } - else { - if (!this.node.parent.getChildByName("Ice").active && !this.pause) { - var timestamp = Date.now(); - this.freezeMask.active = true; - this.pause = true; - this.node.parent.getChildByName("Ice").active = true; - this.node.parent.getChildByName("Top").getChildByName("Ice").active = true; - cc.fx.GameConfig.GM_INFO.freezeAmount -= 1; - if (cc.fx.GameConfig.GM_INFO.freezeAmount < 0) - cc.fx.GameConfig.GM_INFO.freezeAmount = 0; - this.iceLabel.string = cc.fx.GameConfig.GM_INFO.freezeAmount.toString(); - var propInfo = cc.fx.StorageMessage.getStorage("prop"); - propInfo.freezeAmount = cc.fx.GameConfig.GM_INFO.freezeAmount; - propInfo.timestamp = timestamp; - cc.fx.StorageMessage.setStorage("prop", propInfo); - cc.fx.GameTool.setUserProp(2001, cc.fx.GameConfig.GM_INFO.freezeAmount, function (data) { - }); - var data = { - id: "2001", - num: -1 - }; - cc.fx.GameTool.shushu_Track("resource_cost", data); - } - else - MiniGameSdk_1.MiniGameSdk.API.showToast("道具使用中,请稍后再试"); - } - } - }; - //解开时间冻结 - MapConroler.prototype.openIce = function () { - if (this.node.parent.getChildByName("Ice").active) { - this.freezeMask.active = false; - var freezeBtn = this.node.parent.getChildByName("Bottom").getChildByName("timeBtn"); - freezeBtn.getComponent("btnControl").setTouch(true); - this.node.parent.getChildByName("Ice").active = false; - this.node.parent.getChildByName("Top").getChildByName("Ice").active = false; - this.pause = false; - // this.startTimeCutDown(); - } - }; - MapConroler.prototype.handleBuySuccess = function (data) { - var _this = this; - this.pause = false; - var timestamp = Date.now(); - // console.log("回调函数内:",this.pause); - var freezeBtn = this.node.parent.getChildByName("Bottom").getChildByName("timeBtn"); - var hammerBtn = this.node.parent.getChildByName("Bottom").getChildByName("destroyBtn"); - var magicBtn = this.node.parent.getChildByName("Bottom").getChildByName("magicBtn"); - if (data == "freezeAmount") - freezeBtn.getComponent("btnControl").setTouch(true); - else if (data == "hammerAmount") - hammerBtn.getComponent("btnControl").setTouch(true); - else if (data == "magicAmount") - magicBtn.getComponent("btnControl").setTouch(true); - if (data == "freezeAmount") { - cc.fx.GameConfig.GM_INFO.freezeAmount += 3; - var propInfo = cc.fx.StorageMessage.getStorage("prop"); - propInfo.freezeAmount = cc.fx.GameConfig.GM_INFO.freezeAmount; - propInfo.timestamp = timestamp; - cc.fx.StorageMessage.setStorage("prop", propInfo); - this.node.parent.parent.parent.getComponent("SceneManager").closePropBuy(); - setTimeout(function () { - _this.iceLabel.string = cc.fx.GameConfig.GM_INFO.freezeAmount.toString(); - MiniGameSdk_1.MiniGameSdk.API.showToast("购买冻结时间道具成功"); - }, 200); - } - else if (data == "magicAmount") { - cc.fx.GameConfig.GM_INFO.magicAmount += 3; - var propInfo = cc.fx.StorageMessage.getStorage("prop"); - propInfo.magicAmount = cc.fx.GameConfig.GM_INFO.magicAmount; - propInfo.timestamp = timestamp; - cc.fx.StorageMessage.setStorage("prop", propInfo); - this.node.parent.parent.parent.getComponent("SceneManager").closePropBuy(); - setTimeout(function () { - MiniGameSdk_1.MiniGameSdk.API.showToast("购买锤子道具成功"); - _this.magicLabel.string = cc.fx.GameConfig.GM_INFO.magicAmount.toString(); - }, 200); - } - else if (data == "hammerAmount") { - cc.fx.GameConfig.GM_INFO.hammerAmount += 3; - var propInfo = cc.fx.StorageMessage.getStorage("prop"); - propInfo.hammerAmount = cc.fx.GameConfig.GM_INFO.hammerAmount; - propInfo.timestamp = timestamp; - cc.fx.StorageMessage.setStorage("prop", propInfo); - this.node.parent.parent.parent.getComponent("SceneManager").closePropBuy(); - setTimeout(function () { - _this.hammerLabel.string = cc.fx.GameConfig.GM_INFO.hammerAmount.toString(); - MiniGameSdk_1.MiniGameSdk.API.showToast("购买魔法棒道具成功"); - }, 200); - } - }; - //使用锤子道具 - MapConroler.prototype.useHammer = function () { - if (this.node.parent.getChildByName("Ice").active == true || this.hammer == true - || this.magicMask.active == true || this.timeNumber <= 1) { - return; - } - var hammerBtn = this.node.parent.getChildByName("Bottom").getChildByName("destroyBtn"); - if (hammerBtn.getComponent("btnControl")._touch) { - hammerBtn.getComponent("btnControl").setTouch(false); - if (cc.fx.GameConfig.GM_INFO.hammerAmount < 1) { - if (cc.fx.GameConfig.GM_INFO.coin < 1500) { - MiniGameSdk_1.MiniGameSdk.API.showToast("金币不足,无法购买道具"); - hammerBtn.getComponent("btnControl").setTouch(true); - return; - } - this.node.parent.parent.getChildByName("propWindow").active = true; - this.node.parent.parent.parent.getComponent("SceneManager").openPropBuy("hammer"); - } - else { - if (!this.hammer) { - var timestamp = Date.now(); - this.hammerMask.active = true; - this.hammer = true; - cc.fx.GameConfig.GM_INFO.hammerAmount -= 1; - if (cc.fx.GameConfig.GM_INFO.hammerAmount < 0) - cc.fx.GameConfig.GM_INFO.hammerAmount = 0; - this.hammerLabel.string = cc.fx.GameConfig.GM_INFO.hammerAmount.toString(); - var propInfo = cc.fx.StorageMessage.getStorage("prop"); - console.log("锤子道具信息:", propInfo); - propInfo.hammerAmount = cc.fx.GameConfig.GM_INFO.hammerAmount; - propInfo.timestamp = timestamp; - cc.fx.StorageMessage.setStorage("prop", propInfo); - cc.fx.GameTool.setUserProp(2002, cc.fx.GameConfig.GM_INFO.hammerAmount, function (data) { - }); - var data = { - id: "2002", - num: -1 - }; - cc.fx.GameTool.shushu_Track("resource_cost", data); - } - else - MiniGameSdk_1.MiniGameSdk.API.showToast("道具使用中,请稍后再试"); - } - } - }; - MapConroler.prototype.buyMagic = function () { - if (cc.fx.GameConfig.GM_INFO.coin < 1500) { - MiniGameSdk_1.MiniGameSdk.API.showToast("金币不足,无法购买道具"); - return; - } - cc.fx.GameTool.buyProp(2003, this.handleBuySuccess.bind(this, "magicAmount")); - }; - MapConroler.prototype.buyHammer = function () { - if (cc.fx.GameConfig.GM_INFO.coin < 1500) { - MiniGameSdk_1.MiniGameSdk.API.showToast("金币不足,无法购买道具"); - return; - } - cc.fx.GameTool.buyProp(2002, this.handleBuySuccess.bind(this, "hammerAmount")); - }; - MapConroler.prototype.buyFreeze = function () { - if (cc.fx.GameConfig.GM_INFO.coin < 1500) { - MiniGameSdk_1.MiniGameSdk.API.showToast("金币不足,无法购买道具"); - return; - } - cc.fx.GameTool.buyProp(2001, this.handleBuySuccess.bind(this, "freezeAmount")); - }; - //使用魔法棒随机消除两个方块 - MapConroler.prototype.useMagic = function () { - var _this = this; - if (this.node.parent.getChildByName("Ice").active == true || this.hammer == true - || this.magicMask.active == true || this.timeNumber <= 1) { - return; - } - var magicBtn = this.node.parent.getChildByName("Bottom").getChildByName("magicBtn"); - if (magicBtn.getComponent("btnControl")._touch) { - magicBtn.getComponent("btnControl").setTouch(false); - if (cc.fx.GameConfig.GM_INFO.magicAmount < 1) { - if (cc.fx.GameConfig.GM_INFO.coin < 1500) { - MiniGameSdk_1.MiniGameSdk.API.showToast("金币不足,无法购买道具"); - magicBtn.getComponent("btnControl").setTouch(true); - return; - } - this.node.parent.parent.getChildByName("propWindow").active = true; - this.node.parent.parent.parent.getComponent("SceneManager").openPropBuy("magic"); - // MiniGameSdk.API.showToast("魔法棒数量不足,自动购买魔法棒"); - } - else { - var timestamp = Date.now(); - this.magicMask.active = true; - setTimeout(function () { - _this.magicMask.active = false; - magicBtn.getComponent("btnControl").setTouch(true); - }, 1000); - cc.fx.GameConfig.GM_INFO.magicAmount -= 1; - if (cc.fx.GameConfig.GM_INFO.magicAmount < 0) - cc.fx.GameConfig.GM_INFO.magicAmount = 0; - this.magicLabel.string = cc.fx.GameConfig.GM_INFO.magicAmount.toString(); - var propInfo = cc.fx.StorageMessage.getStorage("prop"); - propInfo.magicAmount = cc.fx.GameConfig.GM_INFO.magicAmount; - propInfo.timestamp = timestamp; - cc.fx.StorageMessage.setStorage("prop", propInfo); - cc.fx.GameTool.setUserProp(2003, cc.fx.GameConfig.GM_INFO.magicAmount, function (data) { - }); - var data = { - id: "2003", - num: -1 - }; - cc.fx.GameTool.shushu_Track("resource_cost", data); - var nomalArray_1 = []; - // this.magicBtn.node.active = false; - for (var i = 0; i < this.blocks.length; i++) { - // console.log("方块类型",this.blocks[i].getComponent("Block").type); - if (this.blocks[i].getComponent("Block").type == 3) { - this.loackArray.push(this.blocks[i]); - } - else if (this.blocks[i].getComponent("Block").type == 4) { - this.freezeArray.push(this.blocks[i]); - } - else if (this.blocks[i].getComponent("Block").type == 10) { - if (this.blocks[i].getComponent("Block").block_Info.node) { - nomalArray_1.push(this.blocks[i].getComponent("Block").block_Info.node); - } - else - nomalArray_1.push(this.blocks[i]); - } - else { - nomalArray_1.push(this.blocks[i]); - } - } - if (nomalArray_1.length > 1) { - nomalArray_1 = cc.fx.GameTool.shuffleArray(nomalArray_1); - nomalArray_1[0].getComponent("Block").eliminate(); - var time = 0; - if (nomalArray_1[0].getComponent("Block").type == 1 || nomalArray_1[0].getComponent("Block").type == 9) { - time = 200; - } - if (time > 0) { - setTimeout(function () { - nomalArray_1[1].getComponent("Block").eliminate(); - }, time); - return; - } - else { - nomalArray_1[1].getComponent("Block").eliminate(); - return; - } - } - else if (nomalArray_1.length == 1) { - nomalArray_1[0].getComponent("Block").eliminate(); - var time = 0; - if (nomalArray_1[0].getComponent("Block").type == 1 || nomalArray_1[0].getComponent("Block").type == 9) { - time = 200; - } - setTimeout(function () { - if (_this.freezeArray.length == 0 && _this.loackArray.length == 0) { - // console.log("只剩下一个块道具使用完毕"); - } - else { - if (_this.loackArray.length != 0) { - // console.log("消除一个普通块后,消除一个带锁块"); - _this.loackArray[0].getComponent("Block").eliminate(); - return; - } - else if (_this.freezeArray.length != 0) { - // console.log("消除一个普通块后,消除一个冻结块"); - _this.freezeArray[0].getComponent("Block").eliminate(); - return; - } - } - }, 200 + time); - } - else { - var count_1 = 2; - if (this.loackArray.length != 0) { - for (var i = 0; i < this.loackArray.length; i++) { - // console.log("没有普通快,魔法消除一个带锁块"); - this.loackArray[i].getComponent("Block").eliminate(); - count_1 -= 1; - if (count_1 == 0) { - break; - } - } - } - setTimeout(function () { - if (count_1 != 0) { - for (var i = 0; i < _this.freezeArray.length; i++) { - // console.log("没有普通快,魔法消除一个冻结块"); - // this.freezeArray[i].getComponent("Block").eliminate(); - count_1 -= 1; - if (count_1 == 0) { - break; - } - } - } - }, 100); - } - } - } - }; - //按下暂停按钮 - MapConroler.prototype.usePause = function () { - if (this.pause) { - this.pause = false; - } - else { - this.pause = true; - } - }; - //根据关卡设置地图大小 - MapConroler.prototype.setMapInfo = function () { - var width = 0; - if (this.mapWidth < 10) { - width = 0.2; - } - else if (this.mapWidth < 17) { - width = 0.15 - (this.mapWidth - 11) * 0.01; - } - this.node.scale = 1.6 + (6 - this.mapWidth) * width; - if (this.mapWidth == 8 && this.mapHeight > 13) { - this.node.scale = 1; - } - // this.node.scale = 1; - cc.fx.GameConfig.GM_INFO.scale = this.node.scale; - // this.node.scale = 0.5; - // console.log(this.node.scale); - // this.node.scale = 1; - }; - //创建门的粒子特效 - MapConroler.prototype.createParticle = function (block, jg) { - var particle = cc.instantiate(MapConroler_1._instance.Block_Prop[9]); - particle.parent = this.node; - particle.zIndex = 1000; - var width = Math.floor(block.width / 120); - var height = Math.floor(block.height / 120); - var name = ""; - if (jg == 0 || jg == 1) { - var y = block.y + block.height; - var x = block.x - block.width / 2; - name = "top_" + width + "_" + height; - if (jg == 1) { - name = "bot_" + width + "_" + height; - y = block.y; - } - if (block.anchorX == 0.5) { - x = block.x; - } - else if (block.anchorX == 0.33) { - x = block.x + block.width * (0.5 - 0.33); - } - else if (block.anchorX == 0.66) { - x = block.x + block.width * (0.5 - 0.66); - } - particle.setPosition(x, y); - } - else if (jg == 2 || jg == 3) { - name = "left_" + height + "_" + width; - var x = block.x - block.width; - var y = block.y + block.height / 2; - if (block.anchorX == 0.5) { - x = block.x - block.width / 2; - } - else if (block.anchorX == 0.33) { - x = block.x - block.width * 0.33; - } - else if (block.anchorX == 0.66) { - x = block.x + block.width * 0.66; - } - if (jg == 3) { - name = "right_" + height + "_" + width; - x = block.x; - if (block.anchorX == 0.5) { - x = block.x + block.width / 2; - } - else if (block.anchorX == 0.33) { - x = block.x + block.width * 0.66; - } - else if (block.anchorX == 0.66) { - x = block.x + block.width * 0.33; - } - } - particle.setPosition(x, y); - } - var particleNode = particle.getChildByName(name); - var color = block.getComponent("Block").color - 1; - particleNode.getComponent(cc.ParticleSystem).spriteFrame = particle.getComponent("Reduce").Block_Color[color]; - particleNode.active = true; - setTimeout(function () { - cc.tween(particle) - .to(2, { opacity: 0 }) - .call(function () { - particle.destroy(); - }) - .start(); - }, 1200); - }; - MapConroler.prototype.removeOneBlock = function () { - // 移除所有方块 - for (var i = 0; i < this.blocks.length; i++) { - if (this.blocks[i].opacity == 0) { - this.blocks[i].destroy(); - this.blocks.splice(i, 1); - } - } - }; - MapConroler.prototype.update = function (dt) { - }; - var MapConroler_1; - __decorate([ - property({ type: [cc.Prefab], tooltip: "方块数组" }) - ], MapConroler.prototype, "Block_Array", void 0); - __decorate([ - property({ type: [cc.Prefab], tooltip: "方块道具数组" }) - ], MapConroler.prototype, "Block_Prop", void 0); - __decorate([ - property(cc.Prefab) - ], MapConroler.prototype, "MapBlockPrefab", void 0); - __decorate([ - property({ type: [cc.SpriteAtlas], tooltip: "方块颜色" }) - ], MapConroler.prototype, "Block_Color", void 0); - __decorate([ - property({ type: [cc.Prefab], tooltip: "墙壁数组" }) - ], MapConroler.prototype, "Wall_Prefab", void 0); - __decorate([ - property(cc.Prefab) - ], MapConroler.prototype, "wallTurnPrefab", void 0); - __decorate([ - property(cc.Button) - ], MapConroler.prototype, "timeBtn", void 0); - __decorate([ - property(cc.Button) - ], MapConroler.prototype, "destroyBtn", void 0); - __decorate([ - property(cc.Button) - ], MapConroler.prototype, "magicBtn", void 0); - __decorate([ - property(cc.Node) - ], MapConroler.prototype, "mask", void 0); - __decorate([ - property(cc.Label) - ], MapConroler.prototype, "iceLabel", void 0); - __decorate([ - property(cc.Label) - ], MapConroler.prototype, "hammerLabel", void 0); - __decorate([ - property(cc.Label) - ], MapConroler.prototype, "magicLabel", void 0); - __decorate([ - property(cc.Node) - ], MapConroler.prototype, "magicMask", void 0); - __decorate([ - property(cc.Node) - ], MapConroler.prototype, "hammerMask", void 0); - __decorate([ - property(cc.Node) - ], MapConroler.prototype, "freezeMask", void 0); - __decorate([ - property(cc.Node) - ], MapConroler.prototype, "coinPop", void 0); - MapConroler = MapConroler_1 = __decorate([ - ccclass - ], MapConroler); - return MapConroler; -}(cc.Component)); -exports.default = MapConroler; - -cc._RF.pop(); - } - if (nodeEnv) { - __define(__module.exports, __require, __module); - } - else { - __quick_compile_project__.registerModuleFunc(__filename, function () { - __define(__module.exports, __require, __module); - }); - } - })(); -<<<<<<< HEAD -//# sourceMappingURL=data:application/json;charset=utf-8;base64,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QzttREFDUztJQUczQjtRQURLLFFBQVEsQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDO21EQUNLO0lBSTNCO1FBREMsUUFBUSxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUM7Z0RBQ007SUFyRFAsV0FBVztRQUQvQixPQUFPO09BQ2EsV0FBVyxDQWkrRC9CO0lBQUQsa0JBQUM7Q0FqK0RELEFBaStEQyxDQWorRHdDLEVBQUUsQ0FBQyxTQUFTLEdBaStEcEQ7a0JBaitEb0IsV0FBVyIsImZpbGUiOiIiLCJzb3VyY2VSb290IjoiLyIsInNvdXJjZXNDb250ZW50IjpbIi8vIExlYXJuIFR5cGVTY3JpcHQ6XHJcbi8vICAtIGh0dHBzOi8vZG9jcy5jb2Nvcy5jb20vY3JlYXRvci9tYW51YWwvZW4vc2NyaXB0aW5nL3R5cGVzY3JpcHQuaHRtbFxyXG4vLyBMZWFybiBBdHRyaWJ1dGU6XHJcbi8vICAtIGh0dHBzOi8vZG9jcy5jb2Nvcy5jb20vY3JlYXRvci9tYW51YWwvZW4vc2NyaXB0aW5nL3JlZmVyZW5jZS9hdHRyaWJ1dGVzLmh0bWxcclxuLy8gTGVhcm4gbGlmZS1jeWNsZSBjYWxsYmFja3M6XHJcbi8vICAtIGh0dHBzOi8vZG9jcy5jb2Nvcy5jb20vY3JlYXRvci9tYW51YWwvZW4vc2NyaXB0aW5nL2xpZmUtY3ljbGUtY2FsbGJhY2tzLmh0bWxcclxuXHJcbmltcG9ydCBHYW1lTWFuYWdlciBmcm9tIFwiLi9HYW1lTWFuYWdlclwiO1xyXG5pbXBvcnQgeyBMUUNvbGxpZGUgfSBmcm9tIFwiLi9scV9jb2xsaWRlX3N5c3RlbS9scV9jb2xsaWRlXCI7XHJcbmltcG9ydCBOdW1iZXJUb0ltYWdlIGZyb20gXCIuL051bWJlclRvSW1hZ2VcIjtcclxuaW1wb3J0IHsgTWluaUdhbWVTZGsgfSBmcm9tIFwiLi9TZGsvTWluaUdhbWVTZGtcIjtcclxuXHJcbmNvbnN0IHtjY2NsYXNzLCBwcm9wZXJ0eX0gPSBjYy5fZGVjb3JhdG9yO1xyXG5cclxuXHJcblxyXG5AY2NjbGFzc1xyXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBNYXBDb25yb2xlciBleHRlbmRzIGNjLkNvbXBvbmVudCB7XHJcbiAgICBzdGF0aWMgX2luc3RhbmNlOiBhbnk7XHJcblxyXG5cclxuICAgIEBwcm9wZXJ0eSh7dHlwZTogW2NjLlByZWZhYl0sIHRvb2x0aXA6XCLmlrnlnZfmlbDnu4RcIn0pXHJcbiAgICBCbG9ja19BcnJheSA6IEFycmF5PGNjLlByZWZhYj4gPSBbXTtcclxuXHJcbiAgICBAcHJvcGVydHkoe3R5cGU6IFtjYy5QcmVmYWJdLCB0b29sdGlwOlwi5pa55Z2X6YGT5YW35pWw57uEXCJ9KVxyXG4gICAgQmxvY2tfUHJvcCA6IEFycmF5PGNjLlByZWZhYj4gPSBbXTtcclxuXHJcbiAgICBAcHJvcGVydHkoY2MuUHJlZmFiKVxyXG4gICAgTWFwQmxvY2tQcmVmYWI6IGNjLlByZWZhYiA9IG51bGw7XHJcblxyXG4gICAgQHByb3BlcnR5KHt0eXBlOiBbY2MuU3ByaXRlQXRsYXNdLCB0b29sdGlwOlwi5pa55Z2X6aKc6ImyXCJ9KVxyXG4gICAgQmxvY2tfQ29sb3IgOiBBcnJheTxjYy5TcHJpdGVBdGxhcz4gPSBbXTtcclxuXHJcblxyXG4gICAgQHByb3BlcnR5KHt0eXBlOiBbY2MuUHJlZmFiXSwgdG9vbHRpcDpcIuWimeWjgeaVsOe7hFwifSlcclxuICAgIFdhbGxfUHJlZmFiIDogQXJyYXk8Y2MuUHJlZmFiPiA9IFtdO1xyXG5cclxuICBcclxuXHJcbiAgICBAcHJvcGVydHkoY2MuUHJlZmFiKVxyXG4gICAgd2FsbFR1cm5QcmVmYWI6IGNjLlByZWZhYiA9IG51bGw7XHJcblxyXG4gICAgQHByb3BlcnR5KGNjLkJ1dHRvbilcclxuICAgIHRpbWVCdG46IGNjLkJ1dHRvbiA9IG51bGw7XHJcbiAgICBAcHJvcGVydHkoY2MuQnV0dG9uKVxyXG4gICAgZGVzdHJveUJ0bjogY2MuQnV0dG9uID0gbnVsbDtcclxuICAgIEBwcm9wZXJ0eShjYy5CdXR0b24pXHJcbiAgICBtYWdpY0J0bjogY2MuQnV0dG9uID0gbnVsbDtcclxuXHJcbiAgICBAcHJvcGVydHkoY2MuTm9kZSlcclxuICAgIG1hc2s6IGNjLk5vZGUgPSBudWxsO1xyXG5cclxuICAgIEBwcm9wZXJ0eShjYy5MYWJlbClcclxuICAgIGljZUxhYmVsOiBjYy5MYWJlbCA9IG51bGw7XHJcbiAgICBAcHJvcGVydHkoY2MuTGFiZWwpXHJcbiAgICBoYW1tZXJMYWJlbDogY2MuTGFiZWwgPSBudWxsO1xyXG4gICAgQHByb3BlcnR5KGNjLkxhYmVsKVxyXG4gICAgbWFnaWNMYWJlbDogY2MuTGFiZWwgPSBudWxsO1xyXG5cclxuICAgIEBwcm9wZXJ0eShjYy5Ob2RlKVxyXG4gICAgbWFnaWNNYXNrOiBjYy5Ob2RlID0gbnVsbDtcclxuXHJcbiAgICBAcHJvcGVydHkoY2MuTm9kZSlcclxuICAgIGhhbW1lck1hc2s6IGNjLk5vZGUgPSBudWxsO1xyXG5cclxuICAgICAgICBAcHJvcGVydHkoY2MuTm9kZSlcclxuICAgIGZyZWV6ZU1hc2s6IGNjLk5vZGUgPSBudWxsO1xyXG5cclxuICAgIFxyXG4gICAgQHByb3BlcnR5KGNjLk5vZGUpXHJcbiAgICBjb2luUG9wOiBjYy5Ob2RlID0gbnVsbDtcclxuXHJcbiAgICB0aW1lTGFiZWw6IGNjLk5vZGUgPSBudWxsO1xyXG4gICAgbGV2ZWxMYWJlbDogY2MuTm9kZSA9IG51bGw7XHJcblxyXG4gICAgbmV3X21vZGU6IG51bWJlciA9IDA7XHJcbiAgICBtYXBXaWR0aDogbnVtYmVyID0gMDtcclxuICAgIG1hcEhlaWdodDogbnVtYmVyID0gMDtcclxuICAgIHdhbGxOdW06IG51bWJlciA9IDA7XHJcbiAgICBibG9ja051bTogbnVtYmVyID0gMDtcclxuICAgIG1hcEJsb2Nrc1dhbGw6IGFueTsgICAgICAvL+WcsOWbvueahOaJgOacieW6leWdl1xyXG4gICAgbWFwSW5mbzogYW55OyAgICAgICAvL+WcsOWbvumZpOS6huW6leWdl+eahOWFtuS7luS/oeaBr1xyXG4gICAgYmxvY2tzOiBhbnk7ICAgICAgICAvL+aWueWdl+aVsOe7hFxyXG4gICAgd2FsbEluZm86IGFueTsgICAgICAvL+WimeWjgeaVsOe7hFxyXG4gICAgd2FsbEFycmF5OmFueTsgICAgICAvL1xyXG4gICAgb3BlbldhbGw6IGFueTsgICAgICAvL+W8gOWFs+WimeaVsOe7hFxyXG4gICAgZnJlZXplV2FsbDogYW55OyAgICAvL+WGu+e7k+WimeaVsOe7hFxyXG4gICAgcmlzZUZhbGxCbGNvazphbnk7ICAvL+WNh+mZjeWcsOWdl+aVsOe7hFxyXG4gICAgc2NoZWR1bGVDYWxsYmFjazogYW55Oy8v5YCS6K6h5pe255SoXHJcbiAgICBob21lQ2FuVG91Y2g6Ym9vbGVhbiA9IHRydWU7Ly/mjInpkq7lj6/nlKjnirbmgIFcclxuICAgIGFnYWluQ2FuVG91Y2g6Ym9vbGVhbiA9ICB0cnVlOy8v6YeN546p5oyJ6ZKu5Y+v5Lul55So54q25oCBXHJcbiAgICBnYW1lT3ZlcjogYm9vbGVhbiA9IGZhbHNlOy8v5ri45oiP57uT5p2f54q25oCBXHJcbiAgICBnYW1lV2luOiBib29sZWFuID0gZmFsc2U7Ly/muLjmiI/og5zliKnnirbmgIFcclxuICAgIGdhbWVTdGFydDogYm9vbGVhbiA9IGZhbHNlOy8v5ri45oiP5byA5aeL54q25oCBXHJcbiAgICB0aW1lTnVtYmVyOiBudW1iZXIgPSAwOyAvL+a4uOaIj+aXtumXtCDnlKjkuo7lgJLorqHml7ZcclxuICAgIGNvdW50X1RpbWU6IG51bWJlciA9IDA7IC8v55So5LqO57uf6K6h5oC75ri45oiP5pe26ZW/XHJcbiAgICBhZGRfVGltZTogbnVtYmVyID0gMDsgICAvL+Wkjea0u+aXtumXtFxyXG4gICAgbWFwQmxvY2tBcnJheTogYW55OyAgLy/lnLDlm77nmoTmiYDmnInmoLzlrZDnirbmgIHlrZjlgqhcclxuICAgIHBhdXNlOmJvb2xlYW4gPSBmYWxzZTsvL+aaguWBnOeKtuaAgVxyXG4gICAgaGFtbWVyOmJvb2xlYW4gPSBmYWxzZTsvL+mUpOWtkOeKtuaAgVxyXG4gICAgZnJlZXplQXJyYXk6IGFueTsgLy/lhrvnu5NcclxuICAgIGxvYWNrQXJyYXk6IGFueTsgLy/kuIrplIFcclxuICAgIHBhcnRpY2xlRWZmZWN0czogY2MuUGFydGljbGVBc3NldFtdO1xyXG4gICAgLy8gbGVmdERvb3JzOiBbXTsgLy/lt6bpl6hcclxuICAgIHJpZ2h0RG9vcnM6IGFueTsgLy/lj7Ppl6hcclxuICAgIHRvcERvb3JzOiBhbnk7IC8v5LiK6ZeoXHJcbiAgICBib3R0b21Eb29yczogYW55OyAvL+S4i+mXqFxyXG4gICAgbGVmdERvb3JzOiBhbnk7XHJcblxyXG5cclxuICAgIC8vIG1hcEluZm86IG51bWJlcltdW10gPSBbXTtcclxuXHJcbiAgICBvbkxvYWQgKCkge1xyXG5cclxuICAgICAgICBjYy5meC5HYW1lQ29uZmlnLkdNX0lORk8ucmV2aWV3ID0gMDtcclxuICAgICAgICBjYy5meC5HYW1lQ29uZmlnLkdNX0lORk8uZ2FtZVN0YXRlID0gdHJ1ZTtcclxuICAgICAgICB0aGlzLm1hc2sub3BhY2l0eSA9IDA7XHJcbiAgICAgICAgdGhpcy5ub2RlLmdldENoaWxkQnlOYW1lKFwiQWRoZXNpdmVcIikuekluZGV4ID0gNTAwO1xyXG4gICAgICAgIGNjLmdhbWUuc2V0RnJhbWVSYXRlKDYzKTsgXHJcbiAgICAgICAgY2MuZnguQXVkaW9NYW5hZ2VyLl9pbnN0YW5jZS5wbGF5RWZmZWN0KFwiemh1YW4yXCIsbnVsbCk7XHJcbiAgICAgICAgdGhpcy5ub2RlLnBhcmVudC5wYXJlbnQucGFyZW50LmdldENoaWxkQnlOYW1lKFwiemh1YW5jaGFuZ1wiKS5hY3RpdmUgPSB0cnVlO1xyXG4gICAgICAgIHRoaXMubm9kZS5wYXJlbnQucGFyZW50LnBhcmVudC5nZXRDaGlsZEJ5TmFtZShcInpodWFuY2hhbmdcIikuZ2V0Q29tcG9uZW50KHNwLlNrZWxldG9uKS5zZXRBbmltYXRpb24oMSxcImRvd25cIixmYWxzZSk7XHJcbiAgICAgICAgdGhpcy5ub2RlLnBhcmVudC5wYXJlbnQucGFyZW50LmdldENoaWxkQnlOYW1lKFwiemh1YW5jaGFuZ1wiKS5nZXRDb21wb25lbnQoc3AuU2tlbGV0b24pLnNldENvbXBsZXRlTGlzdGVuZXIoKGVudHJ5KSA9PiB7XHJcbiAgICAgICAgICAgIGlmIChlbnRyeS5hbmltYXRpb24ubmFtZSA9PT0gXCJkb3duXCIpIHtcclxuICAgICAgICAgICAgICAgIC8vIOWKqOeUu+aSreaUvue7k+adn+WQjuaJp+ihjOeahOmAu+i+kVxyXG4gICAgICAgICAgICAgICAgdGhpcy5ub2RlLnBhcmVudC5wYXJlbnQucGFyZW50LmdldENoaWxkQnlOYW1lKFwiemh1YW5jaGFuZ1wiKS5hY3RpdmUgPSBmYWxzZTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH0pO1xyXG4gICAgICAgIHRoaXMuYmxvY2tzID0gW107XHJcbiAgICAgICAgdGhpcy5sZWZ0RG9vcnMgPSBbXTsgLy/lt6bpl6hcclxuICAgICAgICB0aGlzLnJpZ2h0RG9vcnMgPSBbXTsgLy/lj7Ppl6hcclxuICAgICAgICB0aGlzLnRvcERvb3JzID0gW107IC8v5LiK6ZeoXHJcbiAgICAgICAgdGhpcy5ib3R0b21Eb29ycyA9IFtdOyAvL+S4i+mXqFxyXG4gICAgICAgIHRoaXMuZ2FtZVdpbiA9IGZhbHNlO1xyXG4gICAgICAgIHRoaXMuZ2FtZU92ZXIgPSBmYWxzZTtcclxuICAgICAgICB0aGlzLmdhbWVTdGFydCA9IGZhbHNlOyBcclxuICAgICAgICB0aGlzLmhvbWVDYW5Ub3VjaCA9IHRydWU7XHJcbiAgICAgICAgdGhpcy5hZ2FpbkNhblRvdWNoID0gdHJ1ZTtcclxuICAgICAgICB0aGlzLm5ld19tb2RlID0gMDtcclxuICAgICAgICB0aGlzLmNvdW50X1RpbWUgPSAwO1xyXG4gICAgICAgIHRoaXMuYWRkX1RpbWUgPSAwO1xyXG4gXHJcbiAgICAgICAgdGhpcy5pY2VMYWJlbC5zdHJpbmcgPSBjYy5meC5HYW1lQ29uZmlnLkdNX0lORk8uZnJlZXplQW1vdW50LnRvU3RyaW5nKCk7XHJcbiAgICAgICAgdGhpcy5oYW1tZXJMYWJlbC5zdHJpbmcgPSBjYy5meC5HYW1lQ29uZmlnLkdNX0lORk8uaGFtbWVyQW1vdW50LnRvU3RyaW5nKCk7XHJcbiAgICAgICAgdGhpcy5tYWdpY0xhYmVsLnN0cmluZyA9IGNjLmZ4LkdhbWVDb25maWcuR01fSU5GTy5tYWdpY0Ftb3VudC50b1N0cmluZygpO1xyXG4gICBcclxuICAgICAgICAvLyBjYy5nYW1lLmFkZFBlcnNpc3RSb290Tm9kZSh0aGlzLm5vZGUpO1xyXG4gICAgICAgIE1hcENvbnJvbGVyLl9pbnN0YW5jZSA9IHRoaXM7XHJcbiAgICB9IFxyXG5cclxuICAgIHN0YXJ0ICgpIHtcclxuICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgICAgICAgICAgICBjYy5kaXJlY3Rvci5wcmVsb2FkU2NlbmUoXCJIb21lU2NlbmVcIiwgKGVyciwgYXNzZXQpID0+IHtcclxuICAgICAgICAgICAgICAgIGlmIChlcnIpIHtcclxuICAgICAgICAgICAgICAgICAgICBjb25zb2xlLmVycm9yKCfliqjmgIHliqDovb0gSG9tZVNjZW5lIOWksei0pTonLCBlcnIpO1xyXG4gICAgICAgICAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgfSwgMTAwMCk7XHJcbiAgICAgICAgLy8gY29uc29sZS5sb2coXCLov5vlhaVHYW1lU2NlbmVcIik7XHJcbiAgICAgICAgdGhpcy5CbG9ja19BcnJheSA9IEdhbWVNYW5hZ2VyLl9pbnN0YW5jZS5CbG9ja19BcnJheTtcclxuICAgICAgICB0aGlzLldhbGxfUHJlZmFiID0gR2FtZU1hbmFnZXIuX2luc3RhbmNlLldhbGxfUHJlZmFiO1xyXG4gICAgICAgIHRoaXMuQmxvY2tfQ29sb3IgPSBHYW1lTWFuYWdlci5faW5zdGFuY2UuQmxvY2tfQ29sb3I7XHJcbiAgICAgICAgLy8gdGhpcy5wYXJ0aWNsZUVmZmVjdHMgPSBHYW1lTWFuYWdlci5faW5zdGFuY2UucGFydGljbGVFZmZlY3RzO1xyXG4gICAgICAgXHJcbiAgICAgICAgdGhpcy5pbml0TWFwKCk7XHJcbiAgIFxyXG4gICAgfVxyXG5cclxuICAgIHN0YXJ0VXBkYXRlKCl7XHJcbiAgICAgICAgaWYodGhpcy5nYW1lU3RhcnQgPT0gZmFsc2Upe1xyXG4gICAgICAgICAgICB0aGlzLmdhbWVTdGFydCA9IHRydWU7XHJcbiAgICAgICAgICAgIC8v5Y+R6YCB5pWw5pWw5LqL5Lu24oCU4oCU6L+b5YWl5YWz5Y2hXHJcbiAgICAgICAgICAgIGNvbnNvbGUubG9nKFwi5YeG5aSH6L+b5YWl5LiL5LiA5YWzLOWPkemAgeS4i+S4gOWFs+i/m+WFpVwiKTtcclxuICAgICAgICAgICAgY2MuZnguR2FtZVRvb2wuc2h1c2h1X1RyYWNrKFwiZW50ZXJfc3RhZ2VcIik7XHJcbiAgICAgICAgICAgIHRoaXMuc3RhcnRUaW1lQ3V0RG93bigpO1xyXG4gICAgICAgICAgICBmb3IobGV0IGkgPTA7IGk8dGhpcy5ibG9ja3MubGVuZ3RoOyBpKyspe1xyXG4gICAgICAgICAgICAgICAgaWYodGhpcy5ibG9ja3NbaV0uZ2V0Q29tcG9uZW50KFwiQmxvY2tcIikudHlwZSA9PSA2KXtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLmJsb2Nrc1tpXS5nZXRDaGlsZEJ5TmFtZShcImJvb21cIikuZ2V0Q29tcG9uZW50KFwiQm9vbVwiKS5zdGFydEJvb20oKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBpbml0TWFwKCl7XHJcbiAgICAgICAgLy8gdGhpcy5ub2RlLmdldENoaWxkQnlOYW1lKFwiV2FsbFwiKS56SW5kZXggPSAxMDtcclxuICAgICAgICB0aGlzLnRpbWVMYWJlbCA9ICB0aGlzLm5vZGUucGFyZW50LmdldENoaWxkQnlOYW1lKFwiVG9wXCIpLmdldENoaWxkQnlOYW1lKFwidGltZVwiKTtcclxuICAgICAgICB0aGlzLmxldmVsTGFiZWwgPSAgdGhpcy5ub2RlLnBhcmVudC5nZXRDaGlsZEJ5TmFtZShcIlRvcFwiKS5nZXRDaGlsZEJ5TmFtZShcImxldmVsXCIpO1xyXG4gICAgICAgIHRoaXMudGltZU51bWJlciA9IGNjLmZ4LkdhbWVDb25maWcuTEVWRUxfSU5GT1swXS50aW1lO1xyXG5cclxuICAgICAgICBOdW1iZXJUb0ltYWdlLmdldFRpbWVNYXJnaW4odGhpcy50aW1lTnVtYmVyLDUwLFwidGltZV9cIix0aGlzLnRpbWVMYWJlbClcclxuICAgICAgICAvLyB2YXIgdGltZVRlbXAgPSBjYy5meC5HYW1lVG9vbC5nZXRUaW1lTWFyZ2luKHRoaXMudGltZU51bWJlcik7XHJcbiAgICAgICAgLy8gdGhpcy50aW1lTGFiZWwuc3RyaW5nID0gdGltZVRlbXAudG9TdHJpbmcoKTtcclxuICAgICAgICBOdW1iZXJUb0ltYWdlLm51bWJlclRvSW1hZ2VOb2RlcygoY2MuZnguR2FtZUNvbmZpZy5HTV9JTkZPLmxldmVsKzEpLDUwLDIwLFwibGV2ZWxfXCIsdGhpcy5sZXZlbExhYmVsLGZhbHNlKVxyXG4gICAgICAgIFxyXG4gICAgICAgIC8vdGhpcy5zdGFydFRpbWVDdXREb3duKCk7XHJcblxyXG4gICAgICAgIHRoaXMubWFwV2lkdGggPSBjYy5meC5HYW1lQ29uZmlnLkxFVkVMX0lORk9bMF0ubWFwWzBdO1xyXG4gICAgICAgIHRoaXMubWFwSGVpZ2h0ID0gY2MuZnguR2FtZUNvbmZpZy5MRVZFTF9JTkZPWzBdLm1hcFsxXTtcclxuICAgICAgICBsZXQgZ2FwID0gY2MuZnguR2FtZUNvbmZpZy5MRVZFTF9JTkZPWzBdLmdhcDtcclxuICAgICAgICBsZXQgcmlzZWZhbGwgPSBjYy5meC5HYW1lQ29uZmlnLkxFVkVMX0lORk9bMF0ucmlzZWZhbGw7XHJcblxyXG4gICAgICAgIHRoaXMucGF1c2UgPSBmYWxzZTtcclxuICAgICAgICB0aGlzLmhhbW1lciA9IGZhbHNlO1xyXG4gICAgICAgIHRoaXMud2FsbE51bSA9IDA7XHJcbiAgICAgICAgdGhpcy5zZXRNYXBJbmZvKCk7XHJcbiAgICAgICAgdGhpcy5ibG9ja3MgPSBbXTtcclxuICAgICAgICB0aGlzLm1hcEJsb2Nrc1dhbGwgPSBbXTtcclxuICAgICAgICB0aGlzLm1hcEluZm8gPSBbXTtcclxuICAgICAgICB0aGlzLndhbGxJbmZvID0gW107XHJcbiAgICAgICAgdGhpcy5vcGVuV2FsbCA9IFtdO1xyXG4gICAgICAgIHRoaXMud2FsbEFycmF5ID0gW107XHJcbiAgICAgICAgdGhpcy5mcmVlemVXYWxsID0gW107XHJcbiAgICAgICAgdGhpcy5yaXNlRmFsbEJsY29rID0gW107XHJcbiAgICAgICAgdGhpcy5tYXBCbG9ja0FycmF5ID0gW107XHJcbiAgICAgICAgdGhpcy5mcmVlemVBcnJheSA9IFtdO1xyXG4gICAgICAgIHRoaXMubG9hY2tBcnJheSA9IFtdO1xyXG4gICAgICAgIHRoaXMuY291bnRfVGltZSA9IDA7XHJcbiAgICAgICAgdGhpcy5hZGRfVGltZSA9IDA7XHJcbiAgICAgIFxyXG4gICAgICAgIGxldCBzdGFydFggPSAgdGhpcy5tYXBXaWR0aCUyPT0wPy0odGhpcy5tYXBXaWR0aC0xKSo2MDotKHRoaXMubWFwV2lkdGgtMSkqNjA7XHJcbiAgICAgICAgbGV0IHN0YXJ0WSA9ICB0aGlzLm1hcEhlaWdodCUyPT0wPy0odGhpcy5tYXBIZWlnaHQtMSkqNjA6LSh0aGlzLm1hcEhlaWdodC0xKSo2MDtcclxuICAgICAgICAvLyBzdGFydFggPSh0aGlzLm1hcFdpZHRoLTEpKjYwICsgNjA7XHJcbiAgICAgICAgLy8gc3RhcnRZID0tKHRoaXMubWFwSGVpZ2h0LTEpKjYwIC0gNjA7XHJcbiAgICAgICAgXHJcbiAgICAgICAgZm9yKGxldCBpID0gMDsgaSA8IHRoaXMubWFwV2lkdGg7IGkrKyl7XHJcbiAgICAgICAgICAgIHRoaXMubWFwQmxvY2tzV2FsbFtpXSA9IFtdO1xyXG5cclxuICAgICAgICAgICAgZm9yKGxldCBqID0gMDsgaiA8IHRoaXMubWFwSGVpZ2h0OyBqKyspe1xyXG4gICAgICAgICAgICAgICAgbGV0IGJsb2NrID0gY2MuaW5zdGFudGlhdGUodGhpcy5NYXBCbG9ja1ByZWZhYik7XHJcbiAgICAgICAgICAgICAgICBibG9jay5wYXJlbnQgPSB0aGlzLm5vZGUuZ2V0Q2hpbGRCeU5hbWUoXCJtYXBCbG9ja1wiKTtcclxuICAgICAgICAgICAgICAgIGJsb2NrLmdldENvbXBvbmVudChcIk1hcEJsb2NrXCIpLmluaXQoaSxqKTsgICAgXHJcbiAgICAgICAgICAgICAgICAvLyBibG9jay5nZXRDaGlsZEJ5TmFtZShcIm51bVwiKS5nZXRDb21wb25lbnQoY2MuTGFiZWwpLnN0cmluZyA9IGkgKyBcIjpcIiArIGo7XHJcbiAgICAgICAgICAgICAgICBibG9jay5zZXRQb3NpdGlvbihjYy52MihzdGFydFggKyBpICogMTIwLCBzdGFydFkgKyBqICogMTIwKSlcclxuICAgICAgICAgICAgICAgIGlmKHJpc2VmYWxsICE9IG51bGwpe1xyXG4gICAgICAgICAgICAgICAgICAgIGlmKHRoaXMubWFwUmlzZUZhbGwoY2MudjIoaSxqKSxyaXNlZmFsbCxibG9jaykpe1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnJpc2VGYWxsQmxjb2sucHVzaChibG9jayk7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgaWYoZ2FwIT0gbnVsbCl7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYoIXRoaXMubWFwR2FwKGNjLnYyKGksaiksZ2FwKSB8fCBpID09IDAgfHwgaSA9PSB0aGlzLm1hcFdpZHRoLTFcclxuICAgICAgICAgICAgICAgICAgICB8fCBqID09IDAgfHwgaiA9PSB0aGlzLm1hcEhlaWdodCAtIDEpe1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBibG9jay5vcGFjaXR5ID0gMjU0O1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBibG9jay5yZW1vdmVDb21wb25lbnQoY2MuU3ByaXRlKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgYmxvY2sucmVtb3ZlQWxsQ2hpbGRyZW4oKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy53YWxsSW5mby5wdXNoKGJsb2NrKTtcclxuICAgICAgICAgICAgICAgICAgICB9IFxyXG4gICAgICAgICAgICAgICAgICAgIGVsc2UgdGhpcy5tYXBJbmZvLnB1c2goYmxvY2spO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgZWxzZXtcclxuICAgICAgICAgICAgICAgICAgICBpZiggaSA9PSAwIHx8IGkgPT0gdGhpcy5tYXBXaWR0aC0xXHJcbiAgICAgICAgICAgICAgICAgICAgfHwgaiA9PSAwIHx8IGogPT0gdGhpcy5tYXBIZWlnaHQgLSAxKXtcclxuICAgICAgICAgICAgICAgICAgICAgICAgYmxvY2sub3BhY2l0eSA9IDI1NDtcclxuICAgICAgICAgICAgICAgICAgICAgICAgYmxvY2sucmVtb3ZlQ29tcG9uZW50KGNjLlNwcml0ZSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGJsb2NrLnJlbW92ZUFsbENoaWxkcmVuKCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMud2FsbEluZm8ucHVzaChibG9jayk7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIGVsc2UgdGhpcy5tYXBJbmZvLnB1c2goYmxvY2spO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICBcclxuICAgICAgICAgICAgICAgIHRoaXMubWFwQmxvY2tzV2FsbFtpXS5wdXNoKGJsb2NrKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgdGhpcy53YWxsSW5pdCgpO1xyXG4gICAgICAgIHRoaXMuYmxvY2tJbml0KCk7XHJcbiAgICAgXHJcbiAgICB9XHJcblxyXG4gICAgLy/liJvlu7rmlrnlnZdcclxuLy8gLi4uIOW3suacieS7o+eggSAuLi5cclxuXHJcbi8v5Yib5bu65pa55Z2XXHJcbi8vIC4uLiDlt7LmnInku6PnoIEgLi4uXHJcblxyXG5cclxuXHJcblxyXG5ibG9ja0luaXQoKSB7XHJcbiAgICBsZXQgYmxvY2tBcnJheSA9IGNjLmZ4LkdhbWVDb25maWcuQkxPQ0tfSU5GT1swXTtcclxuICAgIGJsb2NrQXJyYXkgPSB0aGlzLnNvcnRCbG9jayhibG9ja0FycmF5KTsgXHJcblxyXG4gICAgbGV0IGluZGV4ID0gMDsgLy8g5b2T5YmN6KaB5Yib5bu655qE5pa55Z2X57Si5byVXHJcbiAgICBsZXQgQkxPQ0tTX1BFUl9GUkFNRSA9IDE7IC8vIOWIneWni+avj+W4p+WIm+W7uueahOaWueWdl+aVsOmHj1xyXG4gICAgY29uc3QgTUFYX1BFUl9GUkFNRSA9IDEwOyAvLyDmr4/luKfmnIDlpKfliJvlu7rmlbDph49cclxuICAgIGNvbnN0IE1JTl9QRVJfRlJBTUUgPSAxOyAvLyDmr4/luKfmnIDlsI/liJvlu7rmlbDph49cclxuXHJcbiAgICBjb25zdCBjcmVhdGVCbG9ja3MgPSAoKSA9PiB7XHJcbiAgICAgICAgY29uc3Qgc3RhcnRUaW1lID0gcGVyZm9ybWFuY2Uubm93KCk7XHJcbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBCTE9DS1NfUEVSX0ZSQU1FICYmIGluZGV4IDwgYmxvY2tBcnJheS5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgICAgICBsZXQgYmxvY2tJbmZvID0gYmxvY2tBcnJheVtpbmRleF07XHJcbiAgICAgICAgICAgIC8vIOe8k+WtmCBCbG9ja19BcnJheSDorr/pl65cclxuICAgICAgICAgICAgY29uc3QgYmxvY2tQcmVmYWIgPSB0aGlzLkJsb2NrX0FycmF5W2Jsb2NrSW5mby5ibG9ja107IFxyXG4gICAgICAgICAgICBsZXQgYmxvY2sgPSBjYy5pbnN0YW50aWF0ZShibG9ja1ByZWZhYik7XHJcbiAgICAgICAgICAgIGJsb2NrLnBhcmVudCA9IHRoaXMubm9kZTtcclxuICAgICAgICAgICAgYmxvY2suc2V0UG9zaXRpb24oY2MudjIoYmxvY2tJbmZvLnBvc2l0aW9uLngsIGJsb2NrSW5mby5wb3NpdGlvbi55KSk7XHJcbiAgICAgICAgICAgIGlmIChibG9ja0luZm8uYmxvY2sgIT0gMjMpIHtcclxuICAgICAgICAgICAgICAgIHRoaXMuYmxvY2tOdW0gKz0gMTtcclxuICAgICAgICAgICAgICAgIHRoaXMuYmxvY2tzLnB1c2goYmxvY2spO1xyXG4gICAgICAgICAgICAgICAgaWYgKGJsb2NrSW5mby50eXBlID09IDEpIHtcclxuICAgICAgICAgICAgICAgICAgICBsZXQgaW5mbyA9IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgaWQ6IGJsb2NrSW5mby5pZCArIDEsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGJsb2NrOiBibG9ja0luZm8uYmxvY2ssXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbG9yOiBibG9ja0luZm8uc3RhY2tpbmcsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU6IDEwLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBwb3NpdGlvbjogYmxvY2tJbmZvLnBvc2l0aW9uLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBzdGFja2luZzogYmxvY2tJbmZvLmNvbG9yXHJcbiAgICAgICAgICAgICAgICAgICAgfTtcclxuICAgICAgICAgICAgICAgICAgICAvLyDnvJPlrZggQmxvY2tfQXJyYXkg6K6/6ZeuXHJcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgYmxvY2tVcFByZWZhYiA9IHRoaXMuQmxvY2tfQXJyYXlbaW5mby5ibG9ja107IFxyXG4gICAgICAgICAgICAgICAgICAgIGxldCBibG9ja1VwID0gY2MuaW5zdGFudGlhdGUoYmxvY2tVcFByZWZhYik7XHJcbiAgICAgICAgICAgICAgICAgICAgYmxvY2tVcC5wYXJlbnQgPSB0aGlzLm5vZGU7XHJcbiAgICAgICAgICAgICAgICAgICAgYmxvY2tVcC5zZXRQb3NpdGlvbihjYy52MihpbmZvLnBvc2l0aW9uLngsIGluZm8ucG9zaXRpb24ueSkpO1xyXG5cclxuICAgICAgICAgICAgICAgICAgICB0aGlzLmJsb2Nrcy5wdXNoKGJsb2NrVXApO1xyXG4gICAgICAgICAgICAgICAgICAgIGJsb2NrLmdldENvbXBvbmVudChcIkJsb2NrXCIpLmluaXQoYmxvY2tJbmZvLCBudWxsLCBudWxsLCBibG9ja1VwKTtcclxuICAgICAgICAgICAgICAgICAgICBibG9ja1VwLmdldENvbXBvbmVudChcIkJsb2NrXCIpLmluaXQoaW5mbywgbnVsbCwgbnVsbCwgYmxvY2spO1xyXG4gICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLmJsb2NrTnVtICs9IDE7XHJcbiAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKGJsb2NrSW5mby50eXBlID09IDkpIHtcclxuICAgICAgICAgICAgICAgICAgICBpZihibG9ja0luZm8uYWRoZXNpdmVUaW1lIDwgMil7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGluZGV4Kys7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICBpbmRleCsrO1xyXG4gICAgICAgICAgICAgICAgICAgIGxldCBpbmZvID0gYmxvY2tBcnJheVtpbmRleF07XHJcbiAgICAgICAgICAgICAgICAgICAgLy8g57yT5a2YIEJsb2NrX0FycmF5IOiuv+mXrlxyXG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGJsb2NrVXBQcmVmYWIgPSB0aGlzLkJsb2NrX0FycmF5W2luZm8uYmxvY2tdOyBcclxuICAgICAgICAgICAgICAgICAgICBsZXQgYmxvY2tVcCA9IGNjLmluc3RhbnRpYXRlKGJsb2NrVXBQcmVmYWIpO1xyXG4gICAgICAgICAgICAgICAgICAgIGJsb2NrVXAucGFyZW50ID0gdGhpcy5ub2RlO1xyXG4gICAgICAgICAgICAgICAgICAgIGJsb2NrVXAuc2V0UG9zaXRpb24oY2MudjIoaW5mby5wb3NpdGlvbi54LCBpbmZvLnBvc2l0aW9uLnkpKTtcclxuXHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5ibG9ja3MucHVzaChibG9ja1VwKTtcclxuICAgICAgICAgICAgICAgICAgICBibG9jay5nZXRDb21wb25lbnQoXCJCbG9ja1wiKS5pbml0KGJsb2NrSW5mbywgbnVsbCwgbnVsbCwgYmxvY2tVcCxmYWxzZSk7XHJcbiAgICAgICAgICAgICAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGJsb2NrVXAuZ2V0Q29tcG9uZW50KFwiQmxvY2tcIikuaW5pdChpbmZvLCBudWxsLCBudWxsLCBibG9jayx0cnVlKTtcclxuICAgICAgICAgICAgICAgICAgICB9LCAxMDApO1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuYmxvY2tOdW0gKz0gMTtcclxuICAgICAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgICAgYmxvY2suZ2V0Q29tcG9uZW50KFwiQmxvY2tcIikuaW5pdChibG9ja0luZm8pO1xyXG4gICAgICAgICAgICAgICAgfSBcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBlbHNle1xyXG4gICAgICAgICAgICAgICAgYmxvY2suZ2V0Q29tcG9uZW50KFwiQmFycmllclwiKS5pbml0KGJsb2NrSW5mbyk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgaW5kZXgrKztcclxuICAgICAgICB9XHJcbiAgICAgICAgY29uc3QgZW5kVGltZSA9IHBlcmZvcm1hbmNlLm5vdygpO1xyXG4gICAgICAgIGNvbnN0IGZyYW1lVGltZSA9IGVuZFRpbWUgLSBzdGFydFRpbWU7XHJcbiAgICAgICAgLy8g5aaC5p6c5b2T5YmN5bin5omn6KGM5pe26Ze06L+H6ZW/77yM5YeP5bCR5q+P5bin5Yib5bu65pWw6YePXHJcbiAgICAgICAgaWYgKGZyYW1lVGltZSA+IDE2KSB7IFxyXG4gICAgICAgICAgICBCTE9DS1NfUEVSX0ZSQU1FID0gTWF0aC5tYXgoQkxPQ0tTX1BFUl9GUkFNRSAtIDEsIE1JTl9QRVJfRlJBTUUpO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIEJMT0NLU19QRVJfRlJBTUUgPSBNYXRoLm1pbihCTE9DS1NfUEVSX0ZSQU1FICsgMSwgTUFYX1BFUl9GUkFNRSk7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICAvLyDlpoLmnpzov5jmnInmlrnlnZfmnKrliJvlu7rvvIzkuIvkuIDluKfnu6fnu63liJvlu7pcclxuICAgICAgICBpZiAoaW5kZXggPCBibG9ja0FycmF5Lmxlbmd0aCkge1xyXG4gICAgICAgICAgICAvLyDkvb/nlKggc2NoZWR1bGVPbmNlIOWcqOS4i+S4gOW4p+aJp+ihjCBjcmVhdGVCbG9ja3NcclxuICAgICAgICAgICAgdGhpcy5zY2hlZHVsZU9uY2UoKCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgY3JlYXRlQmxvY2tzKCk7XHJcbiAgICAgICAgICAgIH0sIDApO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcblxyXG4gICAgICAgIH1cclxuICAgIH07XHJcblxyXG4gICAgLy8g5byA5aeL5YiG5bin5Yib5bu65pa55Z2XXHJcbiAgICBjcmVhdGVCbG9ja3MoKTtcclxufVxyXG4vL+e7meWIm+W7uuaWueWdl+aOkuW6j++8jOeUqOadpemZjeS9jmRyYXdjYWxsIOWQiOaJuVxyXG5zb3J0QmxvY2soYWxsQmxvY2tzOiB7IGNvbG9yOiBudW1iZXI7IGJsb2NrOiBudW1iZXI7IHR5cGU6IG51bWJlciB9W10pIHtcclxuICAgIHJldHVybiBhbGxCbG9ja3Muc29ydCgoYSwgYikgPT4ge1xyXG4gICAgICAgIC8vIOWFiOWkhOeQhiB0eXBlIOS4uiAxIOeahOaDheWGte+8jOWwhuWFtuaUvuWIsOacgOWQjlxyXG4gICAgICAgIGlmIChhLnR5cGUgPT09IDEgJiYgYi50eXBlICE9PSAxKSB7XHJcbiAgICAgICAgICAgIHJldHVybiAxO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAoYS50eXBlICE9PSAxICYmIGIudHlwZSA9PT0gMSkge1xyXG4gICAgICAgICAgICByZXR1cm4gLTE7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICAvLyDlr7kgdHlwZSDkuI3kuLogMCDnmoTlhYPntKDmjIkgdHlwZSDmjpLluo9cclxuICAgICAgICBpZiAoYS50eXBlICE9PSAwICYmIGIudHlwZSAhPT0gMCkge1xyXG4gICAgICAgICAgICByZXR1cm4gYS50eXBlIC0gYi50eXBlO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAoYS50eXBlICE9PSAwICYmIGIudHlwZSA9PT0gMCkge1xyXG4gICAgICAgICAgICByZXR1cm4gMTtcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKGEudHlwZSA9PT0gMCAmJiBiLnR5cGUgIT09IDApIHtcclxuICAgICAgICAgICAgcmV0dXJuIC0xO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgLy8g5YaN5aSE55CGIGJsb2NrIOS4uiAyMyDnmoTmg4XlhrXvvIzlsIblhbbmlL7liLDmnIDliY3pnaJcclxuICAgICAgICBpZiAoYS5ibG9jayA9PT0gMjMgJiYgYi5ibG9jayAhPT0gMjMpIHtcclxuICAgICAgICAgICAgcmV0dXJuIC0xO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAoYS5ibG9jayAhPT0gMjMgJiYgYi5ibG9jayA9PT0gMjMpIHtcclxuICAgICAgICAgICAgcmV0dXJuIDE7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICAvLyDlhbbkvZnmjIkgY29sb3Ig5Y2H5bqP5o6S5YiXXHJcbiAgICAgICAgcmV0dXJuIGEuY29sb3IgLSBiLmNvbG9yO1xyXG4gICAgfSk7XHJcbn1cclxuXHJcblxyXG4vL+WIm+W7uuWimeWjgVxyXG5cclxud2FsbEluaXQoKSB7XHJcbiAgICBsZXQgaW5kZXggPSAwOyAvLyDlvZPliY3opoHliJvlu7rnmoTlopnlo4HntKLlvJVcclxuICAgIGxldCBXQUxMU19QRVJfRlJBTUUgPSAxOyAvLyDliJ3lp4vmr4/luKfliJvlu7rnmoTlopnlo4HmlbDph49cclxuICAgIGNvbnN0IE1BWF9QRVJfRlJBTUUgPSAxMDsgLy8g5q+P5bin5pyA5aSn5Yib5bu65pWw6YePXHJcbiAgICBjb25zdCBNSU5fUEVSX0ZSQU1FID0gMTsgLy8g5q+P5bin5pyA5bCP5Yib5bu65pWw6YePXHJcblxyXG4gICAgY29uc3QgY3JlYXRlV2FsbHMgPSAoKSA9PiB7XHJcbiAgICAgICAgY29uc3Qgc3RhcnRUaW1lID0gcGVyZm9ybWFuY2Uubm93KCk7XHJcbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBXQUxMU19QRVJfRlJBTUUgJiYgaW5kZXggPCB0aGlzLndhbGxJbmZvLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgICAgIGxldCBibG9jayA9IHRoaXMud2FsbEluZm9baW5kZXhdO1xyXG4gICAgICAgICAgICBsZXQgZGlyID0gdGhpcy5nZXRXbGxEaXJhY3Rpb24oXCJ3YWxsXCIsIGNjLnYyKGJsb2NrLmdldENvbXBvbmVudChcIk1hcEJsb2NrXCIpLnBvc1gsIGJsb2NrLmdldENvbXBvbmVudChcIk1hcEJsb2NrXCIpLnBvc1kpKTtcclxuICAgICAgICAgICAgaWYgKGRpciAhPSBudWxsKSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmNyZWF0ZVdhbGwoZGlyLCBibG9jayk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgaW5kZXgrKztcclxuICAgICAgICB9XHJcbiAgICAgICAgY29uc3QgZW5kVGltZSA9IHBlcmZvcm1hbmNlLm5vdygpO1xyXG4gICAgICAgIGNvbnN0IGZyYW1lVGltZSA9IGVuZFRpbWUgLSBzdGFydFRpbWU7XHJcbiAgICAgICAgLy8g5aaC5p6c5b2T5YmN5bin5omn6KGM5pe26Ze06L+H6ZW/77yM5YeP5bCR5q+P5bin5Yib5bu65pWw6YePXHJcbiAgICAgICAgaWYgKGZyYW1lVGltZSA+IDE2KSB7IFxyXG4gICAgICAgICAgICBXQUxMU19QRVJfRlJBTUUgPSBNYXRoLm1heChXQUxMU19QRVJfRlJBTUUgLSAxLCBNSU5fUEVSX0ZSQU1FKTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICBXQUxMU19QRVJfRlJBTUUgPSBNYXRoLm1pbihXQUxMU19QRVJfRlJBTUUgKyAxLCBNQVhfUEVSX0ZSQU1FKTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIC8vIOWmguaenOi/mOacieWimeWjgeacquWIm+W7uu+8jOS4i+S4gOW4p+e7p+e7reWIm+W7ulxyXG4gICAgICAgIGlmIChpbmRleCA8IHRoaXMud2FsbEluZm8ubGVuZ3RoKSB7XHJcbiAgICAgICAgICAgIHRoaXMuc2NoZWR1bGVPbmNlKCgpID0+IHtcclxuICAgICAgICAgICAgICAgIGNyZWF0ZVdhbGxzKCk7XHJcbiAgICAgICAgICAgIH0sIDApO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIC8vIOaJgOacieWimeWjgeWIm+W7uuWujOaIkOWQju+8jOWIm+W7uuaLkOinkuiKgueCuVxyXG4gICAgICAgICAgICB0aGlzLmNyZWF0ZUNvcm5lck5vZGVzKCk7XHJcbiAgICAgICAgfVxyXG4gICAgfTtcclxuXHJcbiAgICAvLyDlvIDlp4vliIbluKfliJvlu7rlopnlo4FcclxuICAgIGNyZWF0ZVdhbGxzKCk7XHJcbn1cclxuXHJcbi8vIC4uLiDlt7LmnInku6PnoIEgLi4uXHJcblxyXG4gICAgZ2V0V2xsRGlyYWN0aW9uKHR5cGUscG9pbnRBKXtcclxuICAgICAgICBsZXQgZGlyID0gW107XHJcbiAgICAgICAgbGV0IHBvaW50QiA9IGNjLnYyKHBvaW50QS54ICsgMSxwb2ludEEueSk7XHJcbiAgICAgICAgbGV0IHBvaW50QyA9IGNjLnYyKHBvaW50QS54IC0gMSxwb2ludEEueSk7XHJcbiAgICAgICAgbGV0IHBvaW50RCA9IGNjLnYyKHBvaW50QS54LHBvaW50QS55ICsgMSk7XHJcbiAgICAgICAgbGV0IHBvaW50RSA9IGNjLnYyKHBvaW50QS54LHBvaW50QS55IC0gMSk7XHJcbiAgICAgICAgbGV0IG9wYWNpdHkgPSAwO1xyXG4gICAgICAgIGlmKHR5cGUgPT0gXCJ3YWxsXCIpIG9wYWNpdHkgPSAyNTU7XHJcbiAgICAgICAgaWYodHlwZSA9PSBcInR1cm5cIikgb3BhY2l0eSA9IDI1MDtcclxuICAgICAgXHJcbiAgICAgICAgaWYocG9pbnRCLnggPCB0aGlzLm1hcFdpZHRoKXtcclxuICAgICAgICAgICAgaWYodGhpcy5tYXBCbG9ja3NXYWxsW3BvaW50Qi54XVtwb2ludEIueV0ub3BhY2l0eSA9PSBvcGFjaXR5ICl7XHJcbiAgICAgICAgICAgICAgICBpZih0eXBlID09IFwidHVyblwiICYmIHRoaXMubWFwQmxvY2tzV2FsbFtwb2ludEIueF1bcG9pbnRCLnldLmdldENvbXBvbmVudChcIk1hcEJsb2NrXCIpLmRpcmVjdGlvbiA9PSBcInJpZ2h0XCIpe1xyXG4gICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBlbHNlIGRpci5wdXNoKFwicmlnaHRcIik7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgaWYocG9pbnRDLnggPj0gMCl7XHJcbiAgICAgICAgICAgIGlmKHRoaXMubWFwQmxvY2tzV2FsbFtwb2ludEMueF1bcG9pbnRDLnldLm9wYWNpdHkgPT0gb3BhY2l0eSl7XHJcbiAgICAgICAgICAgICAgICBpZih0eXBlID09IFwidHVyblwiICYmIHRoaXMubWFwQmxvY2tzV2FsbFtwb2ludEMueF1bcG9pbnRDLnldLmdldENvbXBvbmVudChcIk1hcEJsb2NrXCIpLmRpcmVjdGlvbiA9PSBcImxlZnRcIil7XHJcbiAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgZWxzZSBkaXIucHVzaChcImxlZnRcIik7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgaWYocG9pbnRELnkgPCB0aGlzLm1hcEhlaWdodCl7XHJcbiAgICAgICAgICAgIGlmKHRoaXMubWFwQmxvY2tzV2FsbFtwb2ludEQueF1bcG9pbnRELnldLm9wYWNpdHkgPT0gb3BhY2l0eSl7XHJcbiAgICAgICAgICAgICAgICBpZih0eXBlID09IFwidHVyblwiICYmIHRoaXMubWFwQmxvY2tzV2FsbFtwb2ludEQueF1bcG9pbnRELnldLmdldENvbXBvbmVudChcIk1hcEJsb2NrXCIpLmRpcmVjdGlvbiA9PSBcInVwXCIpe1xyXG4gICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIGVsc2UgZGlyLnB1c2goXCJ1cFwiKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICBpZihwb2ludEUueSA+PSAwKXtcclxuICAgICAgICAgICAgaWYodGhpcy5tYXBCbG9ja3NXYWxsW3BvaW50RS54XVtwb2ludEUueV0ub3BhY2l0eSA9PSBvcGFjaXR5KXtcclxuICAgICAgICAgICAgICAgIGlmKHR5cGUgPT0gXCJ0dXJuXCIgJiYgdGhpcy5tYXBCbG9ja3NXYWxsW3BvaW50RS54XVtwb2ludEUueV0uZ2V0Q29tcG9uZW50KFwiTWFwQmxvY2tcIikuZGlyZWN0aW9uID09IFwiZG93blwiKXtcclxuICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIGVsc2UgZGlyLnB1c2goXCJkb3duXCIpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmKGRpci5sZW5ndGggPiAyKXtcclxuXHJcbiAgICAgICAgICAgIHJldHVybiBudWxsO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZihkaXIubGVuZ3RoID09IDEpe1xyXG4gICAgICAgICAgICBpZih0eXBlID09IFwid2FsbFwiKVxyXG4gICAgICAgICAgICAgICAgcmV0dXJuIGRpclswXTtcclxuICAgICAgICAgICAgZWxzZSBcclxuICAgICAgICAgICAgICAgIHJldHVybiBudWxsO1xyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIGlmKGRpci5sZW5ndGggPT0gMil7XHJcbiAgICAgICAgICAgIHJldHVybiBkaXJbMF0gKyBkaXJbMV07XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIGNyZWF0ZUNvcm5lck5vZGVzKCkge1xyXG4gICAgICAgIC8vIOWumuS5ieaLkOinkuS9jee9rlxyXG4gICAgICAgIGZvcihsZXQgaT0wOyBpPHRoaXMud2FsbEluZm8ubGVuZ3RoOyBpKyspe1xyXG4gICAgICAgICAgICBsZXQgYmxvY2sgPSB0aGlzLndhbGxJbmZvW2ldO1xyXG4gICAgICAgICAgICBpZihibG9jay5vcGFjaXR5ICE9IDI1MCl7XHJcbiAgICAgICAgICAgICAgICBsZXQgZGlyID0gdGhpcy5nZXRXbGxEaXJhY3Rpb24oXCJ0dXJuXCIsY2MudjIoYmxvY2suZ2V0Q29tcG9uZW50KFwiTWFwQmxvY2tcIikucG9zWCxibG9jay5nZXRDb21wb25lbnQoXCJNYXBCbG9ja1wiKS5wb3NZKSk7XHJcbiAgICAgICAgICAgICAgICBpZihkaXIgIT0gbnVsbCl7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5jcmVhdGVUdXJuKGRpcixibG9jayxibG9jay5nZXRDb21wb25lbnQoXCJNYXBCbG9ja1wiKS5wb3NYLGJsb2NrLmdldENvbXBvbmVudChcIk1hcEJsb2NrXCIpLnBvc1kpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcblxyXG4gICAgICAgIH1cclxuXHJcbiAgICB9XHJcblxyXG4gICAgY3JlYXRlV2FsbChkaXJlY3Rpb24sbm9kZSl7XHJcbiAgICAgICAgbGV0IHdhbGwgPSBudWxsO1xyXG4gICAgICAgIG5vZGUuZ2V0Q29tcG9uZW50KFwiTWFwQmxvY2tcIikuc2V0RGlyYWN0aW9uKGRpcmVjdGlvbik7XHJcbiAgICAgICAgc3dpdGNoKGRpcmVjdGlvbil7XHJcbiAgICAgICAgICAgIGNhc2UgXCJyaWdodFwiOlxyXG4gICAgICAgICAgICAgICAgbm9kZS5vcGFjaXR5ID0gMjUwO1xyXG4gICAgICAgICAgICAgICAgd2FsbCA9IGNjLmluc3RhbnRpYXRlKHRoaXMuV2FsbF9QcmVmYWJbNF0pO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5sZWZ0RG9vcnMucHVzaCh3YWxsKTtcclxuICAgICAgICAgICAgICAgIC8vIHdhbGwucGFyZW50ID0gdGhpcy5ub2RlLmdldENoaWxkQnlOYW1lKFwiV2FsbFwiKTtcclxuICAgICAgICAgICAgICAgIHdhbGwucGFyZW50ID0gdGhpcy5ub2RlO1xyXG4gICAgICAgICAgICAgICAgd2FsbC5zZXRQb3NpdGlvbihjYy52Mihub2RlLngsbm9kZS55KSk7XHJcbiAgICAgICAgICAgICAgICBub2RlLm9wYWNpdHkgPSAyNTA7XHJcbiAgICAgICAgICAgICAgICB3YWxsLmdldENoaWxkQnlOYW1lKFwid2FsbFwiKS5nZXRDb21wb25lbnQoXCJXYWxsXCIpLmluaXQobnVsbCxub2RlLmdldENvbXBvbmVudChcIk1hcEJsb2NrXCIpLnBvc1gsbm9kZS5nZXRDb21wb25lbnQoXCJNYXBCbG9ja1wiKS5wb3NZLGRpcmVjdGlvbik7XHJcbiAgICAgICAgICAgICAgICAvL3dhbGwuZ2V0Q2hpbGRCeU5hbWUoXCJ3YWxsXCIpLmdldENoaWxkQnlOYW1lKFwibnVtXCIpLmdldENvbXBvbmVudChjYy5MYWJlbCkuc3RyaW5nID0gdGhpcy53YWxsTnVtLnRvU3RyaW5nKCk7XHJcbiAgICAgICAgICAgICAgICB0aGlzLnNldERvb3JJbmZvKHdhbGwuZ2V0Q2hpbGRCeU5hbWUoXCJ3YWxsXCIpKTtcclxuICAgICAgICAgICAgICAgIHRoaXMud2FsbE51bSArPSAxO1xyXG4gICAgICAgICAgICAgICAgaWYod2FsbC5nZXRDaGlsZEJ5TmFtZShcIndhbGxcIikuZ2V0Q29tcG9uZW50KFwiV2FsbFwiKS5zcGVjaWFsID09IDIpXHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5vcGVuV2FsbC5wdXNoKHdhbGwpO1xyXG4gICAgICAgICAgICAgICAgZWxzZSBpZih3YWxsLmdldENoaWxkQnlOYW1lKFwid2FsbFwiKS5nZXRDb21wb25lbnQoXCJXYWxsXCIpLnNwZWNpYWwgPT0gMykgXHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5mcmVlemVXYWxsLnB1c2god2FsbCk7XHJcbiAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgIGJyZWFrOyBcclxuICAgICAgICAgICAgY2FzZSBcImxlZnRcIjpcclxuICAgICAgICAgICAgICAgIG5vZGUub3BhY2l0eSA9IDI1MDtcclxuICAgICAgICAgICAgICAgIHdhbGwgPSBjYy5pbnN0YW50aWF0ZSh0aGlzLldhbGxfUHJlZmFiWzNdKTtcclxuICAgICAgICAgICAgICAgIC8vIHdhbGwucGFyZW50ID0gdGhpcy5ub2RlLmdldENoaWxkQnlOYW1lKFwiV2FsbFwiKTtcclxuICAgICAgICAgICAgICAgIHRoaXMucmlnaHREb29ycy5wdXNoKHdhbGwpO1xyXG4gICAgICAgICAgICAgICAgd2FsbC5wYXJlbnQgPSB0aGlzLm5vZGU7XHJcbiAgICAgICAgICAgICAgICB3YWxsLnNldFBvc2l0aW9uKGNjLnYyKG5vZGUueCxub2RlLnkpKTtcclxuICAgICAgICAgICAgICAgIHdhbGwuZ2V0Q2hpbGRCeU5hbWUoXCJ3YWxsXCIpLmdldENvbXBvbmVudChcIldhbGxcIikuaW5pdChudWxsLG5vZGUuZ2V0Q29tcG9uZW50KFwiTWFwQmxvY2tcIikucG9zWCxub2RlLmdldENvbXBvbmVudChcIk1hcEJsb2NrXCIpLnBvc1ksZGlyZWN0aW9uKTtcclxuICAgICAgICAgICAgICAgIHRoaXMuc2V0RG9vckluZm8od2FsbC5nZXRDaGlsZEJ5TmFtZShcIndhbGxcIikpO1xyXG4gICAgICAgICAgICAgICAgLy93YWxsLmdldENoaWxkQnlOYW1lKFwid2FsbFwiKS5nZXRDaGlsZEJ5TmFtZShcIm51bVwiKS5nZXRDb21wb25lbnQoY2MuTGFiZWwpLnN0cmluZyA9IHRoaXMud2FsbE51bS50b1N0cmluZygpO1xyXG4gICAgICAgICAgICAgICAgdGhpcy53YWxsTnVtICs9IDE7XHJcbiAgICAgICAgICAgICAgICBpZih3YWxsLmdldENoaWxkQnlOYW1lKFwid2FsbFwiKS5nZXRDb21wb25lbnQoXCJXYWxsXCIpLnNwZWNpYWwgPT0gMilcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLm9wZW5XYWxsLnB1c2god2FsbCk7XHJcbiAgICAgICAgICAgICAgICBlbHNlIGlmKHdhbGwuZ2V0Q2hpbGRCeU5hbWUoXCJ3YWxsXCIpLmdldENvbXBvbmVudChcIldhbGxcIikuc3BlY2lhbCA9PSAzKSBcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLmZyZWV6ZVdhbGwucHVzaCh3YWxsKTtcclxuICAgICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICBjYXNlIFwidXBcIjpcclxuICAgICAgICAgICAgICAgIG5vZGUub3BhY2l0eSA9IDI1MDtcclxuICAgICAgICAgICAgICAgIHdhbGwgPSBjYy5pbnN0YW50aWF0ZSh0aGlzLldhbGxfUHJlZmFiWzVdKTtcclxuICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgdGhpcy50b3BEb29ycy5wdXNoKHdhbGwpO1xyXG4gICAgICAgICAgICAgICAgLy8gd2FsbC5wYXJlbnQgPSB0aGlzLm5vZGUuZ2V0Q2hpbGRCeU5hbWUoXCJXYWxsXCIpO1xyXG4gICAgICAgICAgICAgICAgd2FsbC5wYXJlbnQgPSB0aGlzLm5vZGU7XHJcbiAgICAgICAgICAgICAgICB3YWxsLnNldFBvc2l0aW9uKGNjLnYyKG5vZGUueCxub2RlLnkpKTtcclxuICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgd2FsbC5nZXRDaGlsZEJ5TmFtZShcIndhbGxcIikuZ2V0Q29tcG9uZW50KFwiV2FsbFwiKS5pbml0KG51bGwsbm9kZS5nZXRDb21wb25lbnQoXCJNYXBCbG9ja1wiKS5wb3NYLG5vZGUuZ2V0Q29tcG9uZW50KFwiTWFwQmxvY2tcIikucG9zWSxkaXJlY3Rpb24pO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5zZXREb29ySW5mbyh3YWxsLmdldENoaWxkQnlOYW1lKFwid2FsbFwiKSk7XHJcbiAgICAgICAgICAgICAgICAvL3dhbGwuZ2V0Q2hpbGRCeU5hbWUoXCJ3YWxsXCIpLmdldENoaWxkQnlOYW1lKFwibnVtXCIpLmdldENvbXBvbmVudChjYy5MYWJlbCkuc3RyaW5nID0gdGhpcy53YWxsTnVtLnRvU3RyaW5nKCk7XHJcbiAgICAgICAgICAgICAgICB0aGlzLndhbGxOdW0gKz0gMTtcclxuICAgICAgICAgICAgICAgIGlmKHdhbGwuZ2V0Q2hpbGRCeU5hbWUoXCJ3YWxsXCIpLmdldENvbXBvbmVudChcIldhbGxcIikuc3BlY2lhbCA9PSAyKVxyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMub3BlbldhbGwucHVzaCh3YWxsKTtcclxuICAgICAgICAgICAgICAgIGVsc2UgaWYod2FsbC5nZXRDaGlsZEJ5TmFtZShcIndhbGxcIikuZ2V0Q29tcG9uZW50KFwiV2FsbFwiKS5zcGVjaWFsID09IDMpIFxyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZnJlZXplV2FsbC5wdXNoKHdhbGwpO1xyXG4gICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgIGNhc2UgXCJkb3duXCI6XHJcbiAgICAgICAgICAgICAgICBub2RlLm9wYWNpdHkgPSAyNTA7XHJcbiAgICAgICAgICAgICAgICB3YWxsID0gY2MuaW5zdGFudGlhdGUodGhpcy5XYWxsX1ByZWZhYlswXSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICB0aGlzLmJvdHRvbURvb3JzLnB1c2god2FsbCk7XHJcbiAgICAgICAgICAgICAgICAvLyB3YWxsLnBhcmVudCA9IHRoaXMubm9kZS5nZXRDaGlsZEJ5TmFtZShcIldhbGxcIik7XHJcbiAgICAgICAgICAgICAgICB3YWxsLnBhcmVudCA9IHRoaXMubm9kZTtcclxuICAgICAgICAgICAgICAgIHdhbGwuc2V0UG9zaXRpb24oY2MudjIobm9kZS54LG5vZGUueSkpO1xyXG4gICAgICAgICAgICAgICAgLy8gdGhpcy5zZXREb29ySW5mbyh3YWxsLmdldENoaWxkQnlOYW1lKFwid2FsbFwiKSk7XHJcbiAgICAgICAgICAgICAgICB3YWxsLmdldENoaWxkQnlOYW1lKFwid2FsbFwiKS5nZXRDb21wb25lbnQoXCJXYWxsXCIpLmluaXQobnVsbCxub2RlLmdldENvbXBvbmVudChcIk1hcEJsb2NrXCIpLnBvc1gsbm9kZS5nZXRDb21wb25lbnQoXCJNYXBCbG9ja1wiKS5wb3NZLGRpcmVjdGlvbik7XHJcbiAgICAgICAgICAgICAgICB0aGlzLnNldERvb3JJbmZvKHdhbGwuZ2V0Q2hpbGRCeU5hbWUoXCJ3YWxsXCIpKTtcclxuICAgICAgICAgICAgICAgIC8vd2FsbC5nZXRDaGlsZEJ5TmFtZShcIndhbGxcIikuZ2V0Q2hpbGRCeU5hbWUoXCJudW1cIikuZ2V0Q29tcG9uZW50KGNjLkxhYmVsKS5zdHJpbmcgPSB0aGlzLndhbGxOdW0udG9TdHJpbmcoKTtcclxuICAgICAgICAgICAgICAgIHRoaXMud2FsbE51bSArPSAxO1xyXG4gICAgICAgICAgICAgICAgaWYod2FsbC5nZXRDaGlsZEJ5TmFtZShcIndhbGxcIikuZ2V0Q29tcG9uZW50KFwiV2FsbFwiKS5zcGVjaWFsID09IDIpXHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5vcGVuV2FsbC5wdXNoKHdhbGwpO1xyXG4gICAgICAgICAgICAgICAgZWxzZSBpZih3YWxsLmdldENoaWxkQnlOYW1lKFwid2FsbFwiKS5nZXRDb21wb25lbnQoXCJXYWxsXCIpLnNwZWNpYWwgPT0gMykgXHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5mcmVlemVXYWxsLnB1c2god2FsbCk7XHJcbiAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgY2FzZSBcInVwcmlnaHRcIiA6IGNhc2UgXCJyaWdodHVwXCI6XHJcbiAgICAgICAgICAgICAgICBub2RlLm9wYWNpdHkgPSAyNDk7XHJcbiAgICAgICAgICAgICAgICB3YWxsID0gY2MuaW5zdGFudGlhdGUodGhpcy5XYWxsX1ByZWZhYls3XSk7XHJcbiAgICAgICAgICAgICAgICAvLyB3YWxsLnBhcmVudCA9IHRoaXMubm9kZS5nZXRDaGlsZEJ5TmFtZShcIldhbGxcIik7XHJcbiAgICAgICAgICAgICAgICB3YWxsLnBhcmVudCA9IHRoaXMubm9kZTtcclxuICAgICAgICAgICAgICAgIHdhbGwuc2V0UG9zaXRpb24oY2MudjIobm9kZS54LG5vZGUueSkpO1xyXG4gICAgICAgICAgICAgICAgd2FsbC5jaGlsZHJlblsxXS5nZXRDb21wb25lbnQoXCJXYWxsXCIpLmluaXQobnVsbCxub2RlLmdldENvbXBvbmVudChcIk1hcEJsb2NrXCIpLnBvc1gsbm9kZS5nZXRDb21wb25lbnQoXCJNYXBCbG9ja1wiKS5wb3NZLGRpcmVjdGlvbik7XHJcbiAgICAgICAgICAgICAgICB3YWxsLmNoaWxkcmVuWzJdLmdldENvbXBvbmVudChcIldhbGxcIikuaW5pdChudWxsLG5vZGUuZ2V0Q29tcG9uZW50KFwiTWFwQmxvY2tcIikucG9zWCxub2RlLmdldENvbXBvbmVudChcIk1hcEJsb2NrXCIpLnBvc1ksZGlyZWN0aW9uKTtcclxuICAgICAgICAgICAgICAgIC8vd2FsbC5jaGlsZHJlblswXS5nZXRDaGlsZEJ5TmFtZShcIm51bVwiKS5nZXRDb21wb25lbnQoY2MuTGFiZWwpLnN0cmluZyA9IHRoaXMud2FsbE51bS50b1N0cmluZygpO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5zZXREb29ySW5mbyh3YWxsLmNoaWxkcmVuWzBdKTtcclxuICAgICAgICAgICAgICAgIHRoaXMud2FsbE51bSArPSAxO1xyXG4gICAgICAgICAgICAgICAgLy93YWxsLmNoaWxkcmVuWzFdLmdldENoaWxkQnlOYW1lKFwibnVtXCIpLmdldENvbXBvbmVudChjYy5MYWJlbCkuc3RyaW5nID0gdGhpcy53YWxsTnVtLnRvU3RyaW5nKCk7XHJcbiAgICAgICAgICAgICAgICB0aGlzLnNldERvb3JJbmZvKHdhbGwuY2hpbGRyZW5bMV0pO1xyXG4gICAgICAgICAgICAgICAgdGhpcy53YWxsTnVtICs9IDE7XHJcblxyXG4gICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgIGNhc2UgXCJ1cGxlZnRcIiA6IGNhc2UgXCJsZWZ0dXBcIjpcclxuICAgICAgICAgICAgICAgIG5vZGUub3BhY2l0eSA9IDI0OTtcclxuICAgICAgICAgICAgICAgIHdhbGwgPSBjYy5pbnN0YW50aWF0ZSh0aGlzLldhbGxfUHJlZmFiWzZdKTtcclxuICAgICAgICAgICAgICAgIC8vIHdhbGwucGFyZW50ID0gdGhpcy5ub2RlLmdldENoaWxkQnlOYW1lKFwiV2FsbFwiKTtcclxuICAgICAgICAgICAgICAgIHdhbGwucGFyZW50ID0gdGhpcy5ub2RlO1xyXG4gICAgICAgICAgICAgICAgd2FsbC5zZXRQb3NpdGlvbihjYy52Mihub2RlLngsbm9kZS55KSk7XHJcbiAgICAgICAgICAgICAgICB3YWxsLmNoaWxkcmVuWzFdLmdldENvbXBvbmVudChcIldhbGxcIikuaW5pdChudWxsLG5vZGUuZ2V0Q29tcG9uZW50KFwiTWFwQmxvY2tcIikucG9zWCxub2RlLmdldENvbXBvbmVudChcIk1hcEJsb2NrXCIpLnBvc1ksZGlyZWN0aW9uKTtcclxuICAgICAgICAgICAgICAgIHdhbGwuY2hpbGRyZW5bMl0uZ2V0Q29tcG9uZW50KFwiV2FsbFwiKS5pbml0KG51bGwsbm9kZS5nZXRDb21wb25lbnQoXCJNYXBCbG9ja1wiKS5wb3NYLG5vZGUuZ2V0Q29tcG9uZW50KFwiTWFwQmxvY2tcIikucG9zWSxkaXJlY3Rpb24pO1xyXG4gICAgICAgICAgICAgICAgLy93YWxsLmNoaWxkcmVuWzBdLmdldENoaWxkQnlOYW1lKFwibnVtXCIpLmdldENvbXBvbmVudChjYy5MYWJlbCkuc3RyaW5nID0gdGhpcy53YWxsTnVtLnRvU3RyaW5nKCk7XHJcbiAgICAgICAgICAgICAgICB0aGlzLnNldERvb3JJbmZvKHdhbGwuY2hpbGRyZW5bMF0pO1xyXG4gICAgICAgICAgICAgICAgdGhpcy53YWxsTnVtICs9IDE7XHJcbiAgICAgICAgICAgICAgICAvL3dhbGwuY2hpbGRyZW5bMV0uZ2V0Q2hpbGRCeU5hbWUoXCJudW1cIikuZ2V0Q29tcG9uZW50KGNjLkxhYmVsKS5zdHJpbmcgPSB0aGlzLndhbGxOdW0udG9TdHJpbmcoKTtcclxuICAgICAgICAgICAgICAgIHRoaXMuc2V0RG9vckluZm8od2FsbC5jaGlsZHJlblsxXSk7XHJcbiAgICAgICAgICAgICAgICB0aGlzLndhbGxOdW0gKz0gMTtcclxuXHJcbiAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgY2FzZSBcImRvd25yaWdodFwiIDogY2FzZSBcInJpZ2h0ZG93blwiOlxyXG4gICAgICAgICAgICAgICAgbm9kZS5vcGFjaXR5ID0gMjQ5O1xyXG4gICAgICAgICAgICAgICAgd2FsbCA9IGNjLmluc3RhbnRpYXRlKHRoaXMuV2FsbF9QcmVmYWJbMl0pO1xyXG4gICAgICAgICAgICAgICAgLy8gd2FsbC5wYXJlbnQgPSB0aGlzLm5vZGUuZ2V0Q2hpbGRCeU5hbWUoXCJXYWxsXCIpO1xyXG4gICAgICAgICAgICAgICAgd2FsbC5wYXJlbnQgPSB0aGlzLm5vZGU7XHJcbiAgICAgICAgICAgICAgICB3YWxsLnNldFBvc2l0aW9uKGNjLnYyKG5vZGUueCxub2RlLnkpKTtcclxuICAgICAgICAgICAgICAgIHdhbGwuY2hpbGRyZW5bMV0uZ2V0Q29tcG9uZW50KFwiV2FsbFwiKS5pbml0KG51bGwsbm9kZS5nZXRDb21wb25lbnQoXCJNYXBCbG9ja1wiKS5wb3NYLG5vZGUuZ2V0Q29tcG9uZW50KFwiTWFwQmxvY2tcIikucG9zWSxkaXJlY3Rpb24pO1xyXG4gICAgICAgICAgICAgICAgd2FsbC5jaGlsZHJlblsyXS5nZXRDb21wb25lbnQoXCJXYWxsXCIpLmluaXQobnVsbCxub2RlLmdldENvbXBvbmVudChcIk1hcEJsb2NrXCIpLnBvc1gsbm9kZS5nZXRDb21wb25lbnQoXCJNYXBCbG9ja1wiKS5wb3NZLGRpcmVjdGlvbik7XHJcbiAgICAgICAgICAgICAgICAvL3dhbGwuY2hpbGRyZW5bMF0uZ2V0Q2hpbGRCeU5hbWUoXCJudW1cIikuZ2V0Q29tcG9uZW50KGNjLkxhYmVsKS5zdHJpbmcgPSB0aGlzLndhbGxOdW0udG9TdHJpbmcoKTtcclxuICAgICAgICAgICAgICAgIHRoaXMuc2V0RG9vckluZm8od2FsbC5jaGlsZHJlblswXSk7XHJcbiAgICAgICAgICAgICAgICB0aGlzLndhbGxOdW0gKz0gMTtcclxuICAgICAgICAgICAgICAgIC8vd2FsbC5jaGlsZHJlblsxXS5nZXRDaGlsZEJ5TmFtZShcIm51bVwiKS5nZXRDb21wb25lbnQoY2MuTGFiZWwpLnN0cmluZyA9IHRoaXMud2FsbE51bS50b1N0cmluZygpO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5zZXREb29ySW5mbyh3YWxsLmNoaWxkcmVuWzFdKTtcclxuICAgICAgICAgICAgICAgIHRoaXMud2FsbE51bSArPSAxO1xyXG5cclxuICAgICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICBjYXNlIFwiZG93bmxlZnRcIiA6IGNhc2UgXCJsZWZ0ZG93blwiOlxyXG4gICAgICAgICAgICAgICAgbm9kZS5vcGFjaXR5ID0gMjQ5O1xyXG4gICAgICAgICAgICAgICAgd2FsbCA9IGNjLmluc3RhbnRpYXRlKHRoaXMuV2FsbF9QcmVmYWJbMV0pO1xyXG4gICAgICAgICAgICAgICAgLy8gd2FsbC5wYXJlbnQgPSB0aGlzLm5vZGUuZ2V0Q2hpbGRCeU5hbWUoXCJXYWxsXCIpO1xyXG4gICAgICAgICAgICAgICAgd2FsbC5wYXJlbnQgPSB0aGlzLm5vZGU7XHJcbiAgICAgICAgICAgICAgICB3YWxsLnNldFBvc2l0aW9uKGNjLnYyKG5vZGUueCxub2RlLnkpKTtcclxuICAgICAgICAgICAgICAgIHdhbGwuY2hpbGRyZW5bMV0uZ2V0Q29tcG9uZW50KFwiV2FsbFwiKS5pbml0KG51bGwsbm9kZS5nZXRDb21wb25lbnQoXCJNYXBCbG9ja1wiKS5wb3NYLG5vZGUuZ2V0Q29tcG9uZW50KFwiTWFwQmxvY2tcIikucG9zWSxkaXJlY3Rpb24pO1xyXG4gICAgICAgICAgICAgICAgd2FsbC5jaGlsZHJlblsyXS5nZXRDb21wb25lbnQoXCJXYWxsXCIpLmluaXQobnVsbCxub2RlLmdldENvbXBvbmVudChcIk1hcEJsb2NrXCIpLnBvc1gsbm9kZS5nZXRDb21wb25lbnQoXCJNYXBCbG9ja1wiKS5wb3NZLGRpcmVjdGlvbik7XHJcbiAgICAgICAgICAgICAgICAvL3dhbGwuY2hpbGRyZW5bMF0uZ2V0Q2hpbGRCeU5hbWUoXCJudW1cIikuZ2V0Q29tcG9uZW50KGNjLkxhYmVsKS5zdHJpbmcgPSB0aGlzLndhbGxOdW0udG9TdHJpbmcoKTtcclxuICAgICAgICAgICAgICAgIHRoaXMuc2V0RG9vckluZm8od2FsbC5jaGlsZHJlblswXSk7XHJcbiAgICAgICAgICAgICAgICB0aGlzLndhbGxOdW0gKz0gMTtcclxuICAgICAgICAgICAgICAgIC8vd2FsbC5jaGlsZHJlblsxXS5nZXRDaGlsZEJ5TmFtZShcIm51bVwiKS5nZXRDb21wb25lbnQoY2MuTGFiZWwpLnN0cmluZyA9IHRoaXMud2FsbE51bS50b1N0cmluZygpO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5zZXREb29ySW5mbyh3YWxsLmNoaWxkcmVuWzFdKTtcclxuICAgICAgICAgICAgICAgIHRoaXMud2FsbE51bSArPSAxO1xyXG5cclxuICAgICAgICAgICAgICAgIGJyZWFrO1xyXG5cclxuICAgICAgICB9XHJcblxyXG4gICAgXHJcbiAgICAgICAgLy8gaWYod2FsbFR1cm4pe1xyXG4gICAgICAgIC8vICAgICB3YWxsVHVybi5nZXRDb21wb25lbnQoXCJ3YWxsVHVuclwiKS5pbml0KHdhbGwpO1xyXG4gICAgICAgIC8vIH1cclxuICAgIH1cclxuXHJcbiAgICBzZXREb29ySW5mbyh3YWxsKXtcclxuICAgICAgICBsZXQgZG9vckluZm8gPSBjYy5meC5HYW1lQ29uZmlnLldBTExfSU5GT1swXTtcclxuXHJcbiAgICAgICAgaWYoZG9vckluZm8pe1xyXG4gICAgICAgICAgICBmb3IobGV0IGogPSAwOyBqIDwgZG9vckluZm8ubGVuZ3RoOyBqKyspe1xyXG4gICAgICAgICAgICAgICAgaWYoZG9vckluZm9bal0ubnVtID09IHRoaXMud2FsbE51bSl7XHJcbiAgICAgICAgICAgICAgICAgICAgd2FsbC5nZXRDb21wb25lbnQoXCJXYWxsXCIpLmluaXQoZG9vckluZm9bal0sbnVsbCxudWxsLG51bGwpO1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMud2FsbEFycmF5LnB1c2god2FsbC5wYXJlbnQpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9IFxyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBjcmVhdGVUdXJuKGRpcmVjdGlvbixub2RlLHBvc1gscG9zWSl7XHJcbiAgICAgICAgbGV0IHdhbGwgPSBudWxsO1xyXG4gICAgICAgIHdhbGwgPSBjYy5pbnN0YW50aWF0ZSh0aGlzLndhbGxUdXJuUHJlZmFiKTtcclxuICAgICAgICB3YWxsLnBhcmVudCA9IHRoaXMubm9kZTtcclxuICAgICAgICB3YWxsLnNldFBvc2l0aW9uKGNjLnYyKG5vZGUueCxub2RlLnkpKTtcclxuICAgICAgICBzd2l0Y2goZGlyZWN0aW9uKXtcclxuICAgICAgICAgICAgY2FzZSBcInVwcmlnaHRcIiA6IGNhc2UgXCJyaWdodHVwXCI6XHJcbiAgICAgICAgICAgICAgICB3YWxsLmFuZ2xlID0gMDtcclxuICAgICAgICAgICAgICAgIHdhbGwuZ2V0Q2hpbGRCeU5hbWUoXCJpY29uXCIpLmFuZ2xlID0gMDtcclxuICAgICBcclxuICAgICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICBjYXNlIFwidXBsZWZ0XCIgOiBjYXNlIFwibGVmdHVwXCI6XHJcbiAgICAgICAgICAgICAgICB3YWxsLmFuZ2xlID0gOTA7XHJcbiAgICAgICAgICAgICAgICB3YWxsLmdldENoaWxkQnlOYW1lKFwiaWNvblwiKS5hbmdsZSA9IC05MDtcclxuICAgICAgICAgICAgICAgIHdhbGwuZ2V0Q2hpbGRCeU5hbWUoXCJpY29uXCIpLnkgKz0gNTtcclxuICAgICAgICAgICAgICAgIHdhbGwuZ2V0Q2hpbGRCeU5hbWUoXCJpY29uXCIpLnggLT0gMS4zO1xyXG4gICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgIGNhc2UgXCJkb3ducmlnaHRcIiA6IGNhc2UgXCJyaWdodGRvd25cIjpcclxuICAgICAgICAgICAgICAgIHdhbGwuYW5nbGUgPSAyNzA7XHJcbiAgICAgICAgICAgICAgICB3YWxsLmdldENoaWxkQnlOYW1lKFwiaWNvblwiKS5hbmdsZSA9IC0yNzA7XHJcbiAgICAgICAgICAgICAgICB3YWxsLmdldENoaWxkQnlOYW1lKFwiaWNvblwiKS54ICs9IDIuNTtcclxuICAgICAgICAgICAgICAgIHdhbGwuZ2V0Q2hpbGRCeU5hbWUoXCJpY29uXCIpLnkgKz0gMTtcclxuICAgICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICBjYXNlIFwiZG93bmxlZnRcIiA6IGNhc2UgXCJsZWZ0ZG93blwiOlxyXG4gICAgICAgICAgICAgICAgd2FsbC5hbmdsZSA9IDE4MDtcclxuICAgICAgICAgICAgICAgIHdhbGwuZ2V0Q2hpbGRCeU5hbWUoXCJpY29uXCIpLmFuZ2xlID0gLTE4MDtcclxuICAgICAgICAgICAgICAgIHdhbGwuZ2V0Q2hpbGRCeU5hbWUoXCJpY29uXCIpLnggKz0gNC41O1xyXG4gICAgICAgICAgICAgICAgd2FsbC5nZXRDaGlsZEJ5TmFtZShcImljb25cIikueSArPSAzLjI7XHJcbiAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIC8vIGlmKGRpcmVjdGlvbiA9PSBcInJpZ2h0ZG93blwiIHx8IGRpcmVjdGlvbiA9PSBcImRvd25yaWdodFwiKSB7XHJcbiAgICAgICAgLy8gICAgIHdhbGwuekluZGV4ID0gNTAgKyBwb3NYIC0gcG9zWSozO1xyXG4gICAgICAgIC8vIH1cclxuICAgICAgICAvLyBlbHNlIFxyXG4gICAgICAgIC8vICAgICB3YWxsLnpJbmRleCA9IDUwICsgcG9zWCAtIHBvc1kqMztcclxuXHJcbiAgICAgICAgaWYoZGlyZWN0aW9uID09IFwidXBcIiB8fCBkaXJlY3Rpb24gPT0gXCJsZWZ0dXBcIiB8fCBkaXJlY3Rpb24gPT0gXCJ1cGxlZnRcIlxyXG4gICAgICAgICl7XHJcbiAgICAgICAgICAgIHdhbGwuekluZGV4ID0gMTAwICsgcG9zWCAtIHBvc1kqMztcclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSBpZihkaXJlY3Rpb24gPT0gXCJyaWdodHVwXCIgfHwgZGlyZWN0aW9uID09IFwidXByaWdodFwiIHx8IGRpcmVjdGlvbiA9PSBcInJpZ2h0ZG93blwiIHx8IGRpcmVjdGlvbiA9PSBcImRvd25yaWdodFwiIHx8IGRpcmVjdGlvbiA9PSBcImRvd25sZWZ0XCIpe1xyXG4gICAgICAgICAgICB3YWxsLnpJbmRleCA9IDMwICsgcG9zWCAtIHBvc1kqMztcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIGVsc2UgaWYoIGRpcmVjdGlvbiA9PSBcImxlZnRcIiB8fCBkaXJlY3Rpb24gPT0gXCJsZWZ0ZG93blwiKXtcclxuICAgICAgICAgICAgd2FsbC56SW5kZXggPSA3MCArIHBvc1ggLSBwb3NZKjM7IFxyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIHdhbGwuekluZGV4ID0gNzAgKyBwb3NYIC0gcG9zWSozO1xyXG4gICAgICAgIFxyXG4gICAgICAgIC8vIHdhbGwuZ2V0Q2hpbGRCeU5hbWUoXCJudW1cIikuYW5nbGUgPSAtd2FsbC5hbmdsZTtcclxuICAgICAgICAvL3dhbGwuZ2V0Q2hpbGRCeU5hbWUoXCJudW1cIikuZ2V0Q29tcG9uZW50KGNjLkxhYmVsKS5zdHJpbmcgPSBkaXJlY3Rpb247XHJcbiAgICAgICAgLy93YWxsLmdldENoaWxkQnlOYW1lKFwibnVtXCIpLmdldENvbXBvbmVudChjYy5MYWJlbCkuc3RyaW5nID0gd2FsbC56SW5kZXgrIFwiXCI7XHJcbiAgICAgICAgLy8gY29uc29sZS5sb2cocG9zWCxwb3NZLHdhbGwuekluZGV4KTtcclxuICAgICAgICAvLyB0aGlzLndhbGxOdW0gKz0gIDE7XHJcbiAgICAgICAgLy8gd2FsbC5nZXRDaGlsZEJ5TmFtZShcIm51bVwiKS5nZXRDb21wb25lbnQoY2MuTGFiZWwpLnN0cmluZyA9IHRoaXMud2FsbE51bSArIFwiXCI7XHJcbiAgICB9XHJcblxyXG4gICAgLy/lnLDlm77lupXlnZfnvLrlj6PliKTmlq1cclxuICAgIG1hcEdhcChwb2ludCxnYXApe1xyXG4gICAgICAgIGZvcihsZXQgaT0wOyBpPGdhcC5sZW5ndGg7IGkrKyl7XHJcbiAgICAgICAgICAgIGlmKHBvaW50LnggPT0gZ2FwW2ldLnggJiYgcG9pbnQueSA9PSBnYXBbaV0ueSl7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICAgICAgICAgIH0gXHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgfVxyXG5cclxuICAgIC8v5Y2H6ZmN5Zyw5Z2X5Yik5patXHJcbiAgICBtYXBSaXNlRmFsbChwb2ludCxyaXNlZmFsbCxibG9jayl7XHJcbiAgICAgICAgZm9yKGxldCBpPTA7IGk8cmlzZWZhbGwubGVuZ3RoOyBpKyspe1xyXG4gICAgICAgICAgICBpZihwb2ludC54ID09IHJpc2VmYWxsW2ldLnBvcy54ICYmIHBvaW50LnkgPT0gcmlzZWZhbGxbaV0ucG9zLnkpe1xyXG4gICAgICAgICAgICAgICAgYmxvY2suZ2V0Q2hpbGRCeU5hbWUoXCJyaXNlZmFsbFwiKS5hY3RpdmUgPSB0cnVlO1xyXG4gICAgICAgICAgICAgICAgYmxvY2suZ2V0Q2hpbGRCeU5hbWUoJ3Jpc2VmYWxsJykuZ2V0Q2hpbGRCeU5hbWUoXCJjb2xvclwiKS5nZXRDb21wb25lbnQoY2MuTGFiZWwpLnN0cmluZyA9IHJpc2VmYWxsW2ldLmNvbG9yK1wiXCI7XHJcbiAgICAgICAgICAgICAgICBibG9jay5nZXRDaGlsZEJ5TmFtZSgncmlzZWZhbGwnKS5hZGRDb21wb25lbnQoY2MuQm94Q29sbGlkZXIpO1xyXG4gICAgICAgICAgICAgICAgYmxvY2suZ2V0Q2hpbGRCeU5hbWUoJ3Jpc2VmYWxsJykuZ2V0Q29tcG9uZW50KGNjLkJveENvbGxpZGVyKS5zaXplID0gY2Muc2l6ZSgxMTAsMTEwKTtcclxuICAgICAgICAgICAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgIH1cclxuICAgIC8v5Y2H6ZmN5Zyw5Z2XXHJcbiAgICBjaGFuZ2VSaXNlRmFsbChjb2xvcixkb3duKXtcclxuICAgICAgICBjb2xvciA9IGNvbG9yLnRvU3RyaW5nKCk7XHJcbiAgICAgICAgZm9yKGxldCBpPTA7IGk8dGhpcy5yaXNlRmFsbEJsY29rLmxlbmd0aDsgaSsrKXtcclxuICAgICAgICAgICAgaWYoY29sb3IgPT0gdGhpcy5yaXNlRmFsbEJsY29rW2ldLmdldENoaWxkQnlOYW1lKFwicmlzZWZhbGxcIikuZ2V0Q2hpbGRCeU5hbWUoXCJjb2xvclwiKS5nZXRDb21wb25lbnQoY2MuTGFiZWwpLnN0cmluZyl7XHJcbiAgICAgICAgICAgICAgICBpZihkb3duKXtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLnJpc2VGYWxsQmxjb2tbaV0uZ2V0Q2hpbGRCeU5hbWUoXCJyaXNlZmFsbFwiKS5hY3RpdmUgPSBmYWxzZTtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLnJpc2VGYWxsQmxjb2tbaV0uZ2V0Q2hpbGRCeU5hbWUoJ3Jpc2VmYWxsJykucmVtb3ZlQ29tcG9uZW50KGNjLkJveENvbGxpZGVyKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIGVsc2V7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5yaXNlRmFsbEJsY29rW2ldLmdldENoaWxkQnlOYW1lKFwicmlzZWZhbGxcIikuYWN0aXZlID0gdHJ1ZTtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLnJpc2VGYWxsQmxjb2tbaV0uZ2V0Q2hpbGRCeU5hbWUoJ3Jpc2VmYWxsJykuYWRkQ29tcG9uZW50KGNjLkJveENvbGxpZGVyKTtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLnJpc2VGYWxsQmxjb2tbaV0uZ2V0Q2hpbGRCeU5hbWUoJ3Jpc2VmYWxsJykuZ2V0Q29tcG9uZW50KGNjLkJveENvbGxpZGVyKS5zaXplID0gY2Muc2l6ZSgxMTAsMTEwKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG5cclxuXHJcbiAgICAvL+afpeivouWPoOWKoOW/q2lkXHJcbiAgICBmb3VuZERvd25CbG9jayhpZCl7XHJcbiAgICAgICAgZm9yKGxldCBpPTA7IGk8dGhpcy5ibG9ja3MubGVuZ3RoOyBpKyspe1xyXG4gICAgICAgICAgICBpZih0aGlzLmJsb2Nrc1tpXS5nZXRDb21wb25lbnQoXCJCbG9ja1wiKS5ibG9ja0lkID09IGlkKXtcclxuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmJsb2Nrc1tpXTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gbnVsbDtcclxuICAgIH1cclxuXHJcbiAgICAvL+WIoOmZpOWdl1xyXG4gICAgcmVtb3ZlQmxvY2soaWQpe1xyXG4gICAgICAgIGZvcihsZXQgaT0wOyBpPHRoaXMuYmxvY2tzLmxlbmd0aDsgaSsrKXtcclxuICAgICAgICAgICAgaWYodGhpcy5ibG9ja3NbaV0uZ2V0Q29tcG9uZW50KFwiQmxvY2tcIikuYmxvY2tJZCA9PSBpZCl7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5ibG9ja3NbaV07XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIG51bGw7XHJcbiAgICB9XHJcblxyXG4gICAgZ2V0TWluQW5kTWF4KGJsb2NrKXtcclxuICAgICAgICBsZXQgd2lkdGggPSBNYXRoLmZsb29yKGJsb2NrLndpZHRoIC8gMTIwKTtcclxuICAgICAgICBsZXQgaGVpZ2h0ID0gTWF0aC5mbG9vcihibG9jay5oZWlnaHQgLyAxMjApO1xyXG5cclxuICAgICAgICBsZXQgbWluWCA9IHdpZHRoO1xyXG4gICAgICAgIGxldCBtYXhYID0gdGhpcy5tYXBXaWR0aC0yO1xyXG4gICAgICAgIGxldCBtaW5ZID0gMTtcclxuICAgICAgICBsZXQgbWF4WSA9IHRoaXMubWFwSGVpZ2h0LTIgLSBoZWlnaHQgKyAxO1xyXG5cclxuICAgICAgICBpZihibG9jay5uYW1lID09IFwiYmxvY2sxMFwiKXtcclxuICAgICAgICAgICAgbWluWCA9IHdpZHRoLTE7XHJcbiAgICAgICAgICAgIGlmKHRoaXMubWFwV2lkdGggPiAzKSBtYXhYID0gbWF4WC0xO1xyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIGlmKGJsb2NrLm5hbWUgPT0gXCJibG9jazExXCIpe1xyXG4gICAgICAgICAgICBtaW5YID0gd2lkdGgtMjtcclxuICAgICAgICAgICAgaWYodGhpcy5tYXBXaWR0aCA+IDMpIG1heFggPSBtYXhYLTI7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBlbHNlIGlmKGJsb2NrLm5hbWUgPT0gXCJibG9jazE0XCIpe1xyXG4gICAgICAgICAgICBtaW5YID0gd2lkdGgtMTtcclxuICAgICAgICAgICAgbWF4WCA9IG1heFgtMTtcclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSBpZihibG9jay5uYW1lID09IFwiYmxvY2sxNlwiKXtcclxuICAgICAgICAgICAgbWluWCA9IHdpZHRoLTE7XHJcbiAgICAgICAgICAgIG1heFggPSBtYXhYLTE7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2UgaWYoYmxvY2submFtZSA9PSBcImJsb2NrMThcIil7XHJcbiAgICAgICAgICAgIG1pblggPSB3aWR0aC0xO1xyXG4gICAgICAgICAgICBtYXhYID0gbWF4WC0xO1xyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIGlmKGJsb2NrLm5hbWUgPT0gXCJibG9jazIxXCIpe1xyXG4gICAgICAgICAgICBtaW5YID0gd2lkdGgtMTtcclxuICAgICAgICAgICAgbWF4WCA9IG1heFgtMTtcclxuICAgICAgICB9XHJcbiAgICAgXHJcbiAgICAgICAgcmV0dXJuIHttaW5YOm1pblgsbWF4WDptYXhYLG1pblk6bWluWSxtYXhZOm1heFl9O1xyXG4gICAgfVxyXG5cclxuICAgIC8v5qOA5rWL6JC954K55piv5ZCm5Y+v5Lul5raI6ZmkXHJcbiAgICBjaGVja1Bhc3Mobm9kZSxibG9ja3MpIHtcclxuICAgICAgICBsZXQgbWluQW5kTWF4ID0gdGhpcy5nZXRNaW5BbmRNYXgobm9kZSk7XHJcbiAgICAgICAgbGV0IG1pblggPSBtaW5BbmRNYXgubWluWDtcclxuICAgICAgICBsZXQgbWF4WCA9IG1pbkFuZE1heC5tYXhYO1xyXG4gICAgICAgIGxldCBtaW5ZID0gbWluQW5kTWF4Lm1pblk7XHJcbiAgICAgICAgbGV0IG1heFkgPSBtaW5BbmRNYXgubWF4WTtcclxuXHJcbiAgICAgICAgbGV0IG5vZGVQb3MgPSBjYy52Mihub2RlLmdldENvbXBvbmVudChcIkJsb2NrXCIpLnBvc1gsIG5vZGUuZ2V0Q29tcG9uZW50KFwiQmxvY2tcIikucG9zWSk7XHJcblxyXG4gICAgICAgIC8vIOiOt+WPluWcsOWbvui+ueeVjOS/oeaBr1xyXG5cclxuICAgICAgICBsZXQgYWxsQmxvY2tzID0gW107XHJcbiAgICAgICAgZm9yKGxldCBpPTA7aTxibG9ja3MubGVuZ3RoO2krKyl7XHJcbiAgICAgICAgICAgIGFsbEJsb2Nrcy5wdXNoKGNjLnYyKG5vZGVQb3MueCArIGJsb2Nrc1tpXS54LCBub2RlUG9zLnkgKyBibG9ja3NbaV0ueSkpO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgLy8gY29uc3QgZGF0ZTEgPSBuZXcgRGF0ZSgpLmdldFRpbWUoKTtcclxuICAgICAgICAvLyBjb25zb2xlLmxvZyhcIuWwhuWwj+Wdl+aUvuWFpeaVsOe7hOeahOaXtumXtFwiLGRhdGUxKTtcclxuICAgXHJcbiAgICAgICAgbGV0IGpnID0gLTE7XHJcbiAgICAgICAgbGV0IHB6ID0gMDtcclxuICAgICAgICAvLyDojrflj5bmiYDmnInlopnlo4HoioLngrlcclxuICAgICAgICAvLyBsZXQgd2FsbCA9IHRoaXMubm9kZTtcclxuICAgICAgICBsZXQgZGlyZWN0aW9uID0gdGhpcy5jaGVja0RpcmFjdGlvbihhbGxCbG9ja3MsbWF4WCxtYXhZKTtcclxuXHJcbiAgICAgICAgLy8g5Yik5pat5pa55Z2X5piv5ZCm5Zyo5Zyw5Zu+6L6557yYXHJcbiAgICAgICAgaWYgKG5vZGVQb3MueCA8PSBtaW5YIHx8IGRpcmVjdGlvblswXSA9PSB0cnVlKSB7XHJcbiAgICAgICAgICAgIC8vIGNvbnN0IGRhdGUyID0gbmV3IERhdGUoKS5nZXRUaW1lKCk7XHJcbiAgICAgICAgICAgIC8vIGNvbnNvbGUubG9nKFwi56Kw5Yiw5bem6L6557yYXCIsZGF0ZTIpO1xyXG4gICAgICAgICAgICBweiArPSAxO1xyXG4gICAgICAgICAgICBsZXQgbGVmdFdhbGxzID0gW107XHJcbiAgICAgICAgICAgIGZvcihsZXQgaSA9IDA7IGkgPCB0aGlzLmxlZnREb29ycy5sZW5ndGg7IGkrKyl7XHJcbiAgICAgICAgICAgICAgICBsZXQgd2FsbExlZnQgPSB0aGlzLmxlZnREb29yc1tpXS5nZXRDaGlsZEJ5TmFtZShcIndhbGxcIik7XHJcbiAgICAgICAgICAgICAgICBsZXQgd2FsbFBvcyA9IGNjLnYyKHdhbGxMZWZ0LmdldENvbXBvbmVudChcIldhbGxcIikucG9zWCx3YWxsTGVmdC5nZXRDb21wb25lbnQoXCJXYWxsXCIpLnBvc1kpO1xyXG4gICAgICAgICAgICAgICAgZm9yKGxldCBpID0gMDsgaSA8IGFsbEJsb2Nrcy5sZW5ndGg7IGkrKyl7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYoYWxsQmxvY2tzW2ldLnkgPT0gd2FsbFBvcy55ICYmIGFsbEJsb2Nrc1tpXS54ID4gd2FsbFBvcy54KXtcclxuICAgICAgICAgICAgICAgICAgICAgICAgLy8gY29uc29sZS5sb2coXCJpZDpcIix3YWxsLmdldENoaWxkQnlOYW1lKFwibnVtXCIpLmdldENvbXBvbmVudChjYy5MYWJlbCkuc3RyaW5nKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgbGVmdFdhbGxzLnB1c2god2FsbExlZnQpO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAvLyBjb25zb2xlLmxvZyhcIuW+l+WIsOW3pui+ueWimeWjgeaVsOe7hFwiLGRhdGU2KTtcclxuICAgICAgICAgICAgaWYobGVmdFdhbGxzLmxlbmd0aCAhPSAwKXtcclxuICAgICAgICAgICAgICAgIGxldCByZXN1bHQgPSB0aGlzLmRldGVjdGluZ0Jsb2NrKFwibGVmdFwiLG5vZGUuZ2V0Q29tcG9uZW50KFwiQmxvY2tcIikucG9zWCxub2RlLmdldENvbXBvbmVudChcIkJsb2NrXCIpLnBvc1ksYWxsQmxvY2tzKTtcclxuICAgICAgICAgICAgICAgIGlmKHJlc3VsdCA9PSB0cnVlKSByZXN1bHQgPSB0aGlzLnBhc3NXYWxsKHJlc3VsdCxsZWZ0V2FsbHMsbm9kZSk7XHJcbiAgICAgICAgICAgICAgICAvLyBjb25zb2xlLmxvZyhcIueisOWIsOW3pui+uee8mOe7k+aenDpcIixqZyk7XHJcbiAgICAgICAgICAgICAgICBpZihyZXN1bHQpe1xyXG4gICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLmJsb2NrTnVtIC09IDE7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5zcGVjaWFsX1RyZWF0bWVudChub2RlKTtcclxuICAgICAgICAgICAgICAgICAgICBqZyA9IDI7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5jcmVhdGVQYXJ0aWNsZShub2RlLGpnKTtcclxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gamc7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKG5vZGVQb3MueCA+PSBtYXhYIHx8IGRpcmVjdGlvblsxXSA9PSB0cnVlKSB7XHJcbiAgICAgICAgICAgIC8vIGNvbnN0IGRhdGUzID0gbmV3IERhdGUoKS5nZXRUaW1lKCk7XHJcbiAgICAgICAgICAgIC8vIGNvbnNvbGUubG9nKFwi56Kw5Yiw5Y+z6L6557yYXCIsZGF0ZTMpO1xyXG4gICAgICAgICAgICBweiArPSAxO1xyXG4gICAgICAgICAgICBsZXQgcmlnaHRXYWxscyA9IFtdO1xyXG4gICAgICAgICAgICBmb3IobGV0IGkgPSAwOyBpIDwgdGhpcy5yaWdodERvb3JzLmxlbmd0aDsgaSsrKXtcclxuICAgICAgICAgICAgICAgIGxldCB3YWxsUmlnaHQgPSB0aGlzLnJpZ2h0RG9vcnNbaV0uZ2V0Q2hpbGRCeU5hbWUoXCJ3YWxsXCIpO1xyXG4gICAgICAgICAgICAgICAgbGV0IHdhbGxQb3MgPSBjYy52Mih3YWxsUmlnaHQuZ2V0Q29tcG9uZW50KFwiV2FsbFwiKS5wb3NYLHdhbGxSaWdodC5nZXRDb21wb25lbnQoXCJXYWxsXCIpLnBvc1kpO1xyXG4gICAgICAgICAgICAgICAgZm9yKGxldCBpID0gMDsgaSA8IGFsbEJsb2Nrcy5sZW5ndGg7IGkrKyl7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYoYWxsQmxvY2tzW2ldLnkgPT0gd2FsbFBvcy55ICYmIGFsbEJsb2Nrc1tpXS54IDwgd2FsbFBvcy54KXtcclxuICAgICAgICAgICAgICAgICAgICAgICAgLy8gY29uc29sZS5sb2coXCJpZDpcIix3YWxsLmdldENoaWxkQnlOYW1lKFwibnVtXCIpLmdldENvbXBvbmVudChjYy5MYWJlbCkuc3RyaW5nKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgcmlnaHRXYWxscy5wdXNoKHdhbGxSaWdodCk7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICBpZihyaWdodFdhbGxzLmxlbmd0aCAhPSAwKXtcclxuICAgICAgICAgICAgICAgIGxldCByZXN1bHQgPSB0aGlzLmRldGVjdGluZ0Jsb2NrKFwicmlnaHRcIixub2RlLmdldENvbXBvbmVudChcIkJsb2NrXCIpLnBvc1gsbm9kZS5nZXRDb21wb25lbnQoXCJCbG9ja1wiKS5wb3NZLGFsbEJsb2Nrcyk7XHJcbiAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgaWYocmVzdWx0ID09IHRydWUpIHJlc3VsdCA9IHRoaXMucGFzc1dhbGwocmVzdWx0LHJpZ2h0V2FsbHMsbm9kZSk7XHJcbiAgICAgICAgICAgICAgICAvLyBjb25zb2xlLmxvZyhcIueisOWIsOWPs+i+uee8mOe7k+aenDpcIixqZyk7XHJcbiAgICAgICAgICAgICAgICBpZihyZXN1bHQpe1xyXG4gICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5ibG9ja051bSAtPSAxO1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuc3BlY2lhbF9UcmVhdG1lbnQobm9kZSk7XHJcbiAgICAgICAgICAgICAgICAgICAgamcgPSAzO1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuY3JlYXRlUGFydGljbGUobm9kZSxqZyk7XHJcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGpnO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcblxyXG4gIFxyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAobm9kZVBvcy55ICA8PSBtaW5ZIHx8IGRpcmVjdGlvblsyXSA9PSB0cnVlKSB7XHJcbiAgICAgICAgICAgIHB6ICs9IDE7XHJcbiAgICAgICAgICAgIC8vIGNvbnN0IGRhdGU0ID0gbmV3IERhdGUoKS5nZXRUaW1lKCk7XHJcbiAgICAgICAgICAgIC8vIGNvbnNvbGUubG9nKFwi56Kw5Yiw5LiL6L6557yYXCIsZGF0ZTQpO1xyXG4gICAgICAgICAgICBsZXQgZG93bldhbGxzID0gW107XHJcbiAgICAgICAgICAgIGZvcihsZXQgaSA9IDA7IGkgPCB0aGlzLnRvcERvb3JzLmxlbmd0aDsgaSsrKXtcclxuICAgICAgICAgICAgICAgIGxldCB3YWxsQm90dG9tID0gdGhpcy50b3BEb29yc1tpXS5nZXRDaGlsZEJ5TmFtZShcIndhbGxcIik7XHJcbiAgICAgICAgICAgICAgICBsZXQgd2FsbFBvcyA9IGNjLnYyKHdhbGxCb3R0b20uZ2V0Q29tcG9uZW50KFwiV2FsbFwiKS5wb3NYLHdhbGxCb3R0b20uZ2V0Q29tcG9uZW50KFwiV2FsbFwiKS5wb3NZKTtcclxuICAgICAgICAgICAgICAgIGZvcihsZXQgaSA9IDA7IGkgPCBhbGxCbG9ja3MubGVuZ3RoOyBpKyspe1xyXG4gICAgICAgICAgICAgICAgICAgIGxldCBsdW9jaGEgPSBNYXRoLmFicyhhbGxCbG9ja3NbaV0ueSAtIHdhbGxQb3MueSlcclxuICAgICAgICAgICAgICAgICAgICBpZihhbGxCbG9ja3NbaV0ueCA9PSB3YWxsUG9zLnggJiYgYWxsQmxvY2tzW2ldLnkgPiB3YWxsUG9zLnkgJiYgbHVvY2hhIDw9IG5vZGUuZ2V0Q29tcG9uZW50KFwiQmxvY2tcIikuc2h1KXtcclxuICAgICAgICAgICAgICAgICAgICAgICAgLy8gY29uc29sZS5sb2coXCJpZDpcIix3YWxsLmdldENoaWxkQnlOYW1lKFwibnVtXCIpLmdldENvbXBvbmVudChjYy5MYWJlbCkuc3RyaW5nKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgZG93bldhbGxzLnB1c2god2FsbEJvdHRvbSk7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICBpZihkb3duV2FsbHMubGVuZ3RoICE9IDApe1xyXG4gICAgICAgICAgICAgICAgbGV0IHJlc3VsdCA9IHRoaXMuZGV0ZWN0aW5nQmxvY2soXCJkb3duXCIsbm9kZS5nZXRDb21wb25lbnQoXCJCbG9ja1wiKS5wb3NYLG5vZGUuZ2V0Q29tcG9uZW50KFwiQmxvY2tcIikucG9zWSxhbGxCbG9ja3MpO1xyXG4gICAgICAgICAgICAgICAgaWYocmVzdWx0ID09IHRydWUpIHJlc3VsdCA9IHRoaXMucGFzc1dhbGwocmVzdWx0LGRvd25XYWxscyxub2RlKTtcclxuICAgICAgICAgICAgICAgIC8vIGNvbnNvbGUubG9nKFwi56Kw5Yiw5LiL6L6557yY57uT5p6cOlwiLGpnKTtcclxuICAgICAgICAgICAgICAgIGlmKHJlc3VsdCl7XHJcbiAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLmJsb2NrTnVtIC09IDE7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5zcGVjaWFsX1RyZWF0bWVudChub2RlKTtcclxuICAgICAgICAgICAgICAgICAgICBqZyA9IDE7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5jcmVhdGVQYXJ0aWNsZShub2RlLGpnKTtcclxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gamc7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgXHJcblxyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAobm9kZVBvcy55ICA+PSBtYXhZIHx8IGRpcmVjdGlvblszXSA9PSB0cnVlKSB7XHJcbiAgICAgICAgICAgIHB6ICs9IDE7XHJcbiAgICAgICAgICAgIC8vIGNvbnN0IGRhdGU1ID0gbmV3IERhdGUoKS5nZXRUaW1lKCk7XHJcbiAgICAgICAgICAgIC8vIGNvbnNvbGUubG9nKFwi56Kw5Yiw5LiK6L6557yYXCIsZGF0ZTUpO1xyXG4gICAgICAgICAgICBsZXQgdXBXYWxscyA9IFtdO1xyXG4gICAgICAgICAgICBmb3IobGV0IGkgPSAwOyBpIDwgdGhpcy5ib3R0b21Eb29ycy5sZW5ndGg7IGkrKyl7XHJcbiAgICAgICAgICAgICAgICBsZXQgd2FsbFRvcCA9IHRoaXMuYm90dG9tRG9vcnNbaV0uZ2V0Q2hpbGRCeU5hbWUoXCJ3YWxsXCIpO1xyXG4gICAgICAgICAgICAgICAgbGV0IHdhbGxQb3MgPSBjYy52Mih3YWxsVG9wLmdldENvbXBvbmVudChcIldhbGxcIikucG9zWCx3YWxsVG9wLmdldENvbXBvbmVudChcIldhbGxcIikucG9zWSk7XHJcbiAgICAgICAgICAgICAgICBmb3IobGV0IGkgPSAwOyBpIDwgYWxsQmxvY2tzLmxlbmd0aDsgaSsrKXtcclxuICAgICAgICAgICAgICAgICAgICBsZXQgbHVvY2hhID0gTWF0aC5hYnMoYWxsQmxvY2tzW2ldLnkgLSB3YWxsUG9zLnkpXHJcbiAgICAgICAgICAgICAgICAgICAgaWYoYWxsQmxvY2tzW2ldLnggPT0gd2FsbFBvcy54ICYmIGFsbEJsb2Nrc1tpXS55IDwgd2FsbFBvcy55ICYmIGx1b2NoYSA8PSBub2RlLmdldENvbXBvbmVudChcIkJsb2NrXCIpLnNodSl7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHVwV2FsbHMucHVzaCh3YWxsVG9wKTtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgIGlmKHVwV2FsbHMubGVuZ3RoICE9IDApe1xyXG4gICAgICAgICAgICAgICAgbGV0IHJlc3VsdCA9IHRoaXMuZGV0ZWN0aW5nQmxvY2soXCJ1cFwiLG5vZGUuZ2V0Q29tcG9uZW50KFwiQmxvY2tcIikucG9zWCxub2RlLmdldENvbXBvbmVudChcIkJsb2NrXCIpLnBvc1ksYWxsQmxvY2tzKTtcclxuICAgICAgICAgICAgICAgIGlmKHJlc3VsdCA9PSB0cnVlKSByZXN1bHQgPSB0aGlzLnBhc3NXYWxsKHJlc3VsdCx1cFdhbGxzLG5vZGUpO1xyXG4gICAgICAgICAgICAgICAgLy8gY29uc29sZS5sb2coXCLnorDliLDkuIrovrnnvJjnu5Pmnpw6XCIscmVzdWx0KTtcclxuICAgICAgICAgICAgICAgIGlmKHJlc3VsdCl7XHJcbiAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLmJsb2NrTnVtIC09IDE7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5zcGVjaWFsX1RyZWF0bWVudChub2RlKTtcclxuICAgICAgICAgICAgICAgICAgICBqZyA9IDA7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5jcmVhdGVQYXJ0aWNsZShub2RlLGpnKTtcclxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gamc7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmKHB6ID09IDAgKWpnID0gLTE7XHJcbiAgICAgICAgLy8gY29uc3QgZGF0ZTEwID0gbmV3IERhdGUoKS5nZXRUaW1lKCk7XHJcbiAgICAgICAgLy8gY29uc29sZS5sb2coXCLmiYDmnInmo4DmtYvnu5PmnZ/ogJfml7ZcIixkYXRlMTAsamcpO1xyXG4gICAgICAgIHJldHVybiBqZztcclxuICAgIH1cclxuXHJcbiAgICBjaGFuZ2VTdGF0ZSgpe1xyXG4gICAgICAgIGlmKHRoaXMub3BlbldhbGwubGVuZ3RoICE9IDApe1xyXG4gICAgICAgICAgICBmb3IobGV0IGk9MDsgaTx0aGlzLm9wZW5XYWxsLmxlbmd0aDsgaSsrKXtcclxuICAgICAgICAgICAgICAgIHRoaXMub3BlbldhbGxbaV0uZ2V0Q2hpbGRCeU5hbWUoXCJ3YWxsXCIpLmdldENvbXBvbmVudChcIldhbGxcIikuY2hhbmdlTG9jaygpOyBcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgaWYodGhpcy5mcmVlemVXYWxsLmxlbmd0aCE9IDApe1xyXG4gICAgICAgICAgICBmb3IobGV0IGk9MDsgaTx0aGlzLmZyZWV6ZVdhbGwubGVuZ3RoOyBpKyspe1xyXG4gICAgICAgICAgICAgICAgdGhpcy5mcmVlemVXYWxsW2ldLmdldENoaWxkQnlOYW1lKFwid2FsbFwiKS5nZXRDb21wb25lbnQoXCJXYWxsXCIpLmNoYW5nZUZyZWV6ZSgpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIC8v5qOA5rWL5piv5ZCm5Y+v5Lul6YCa6L+H6ZeoXHJcbiAgICBwYXNzV2FsbChqZyx3YWxsQXJyYXksbm9kZSl7XHJcbiAgICAgICAgZm9yKGxldCBpPTA7aTx3YWxsQXJyYXkubGVuZ3RoO2krKyl7XHJcbiAgICAgICAgICAgIGlmKHdhbGxBcnJheVtpXS5nZXRDb21wb25lbnQoXCJXYWxsXCIpLnNwZWNpYWwgPT0gMil7XHJcbiAgICAgICAgICAgICAgICBjb25zb2xlLmxvZyhcIuWwneivlemAmui/h+W8gOWFs+mXqDpcIix3YWxsQXJyYXlbaV0uZ2V0Q29tcG9uZW50KFwiV2FsbFwiKS5vcGVuKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBpZih3YWxsQXJyYXlbaV0uZ2V0Q29tcG9uZW50KFwiV2FsbFwiKS5zcGVjaWFsID09IDIgJiYgd2FsbEFycmF5W2ldLmdldENvbXBvbmVudChcIldhbGxcIikub3BlbiA9PSBmYWxzZSl7XHJcbiAgICAgICAgICAgICAgICBqZyA9IGZhbHNlO1xyXG4gICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgLy9jb25zb2xlLmxvZyh3YWxsQXJyYXlbaV0uZ2V0Q2hpbGRCeU5hbWUoXCJ3YWxsXCIpLmdldENvbXBvbmVudChcIldhbGxcIikuY29sb3Isbm9kZS5nZXRDb21wb25lbnQoXCJCbG9ja1wiKS5jb2xvcilcclxuICAgICAgICAgICAgaWYod2FsbEFycmF5W2ldLmdldENvbXBvbmVudChcIldhbGxcIikuY29sb3IgIT0gbm9kZS5nZXRDb21wb25lbnQoXCJCbG9ja1wiKS5jb2xvcil7XHJcblxyXG4gICAgICAgICAgICAgICAgamcgPSBmYWxzZTtcclxuICAgICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGlmKG5vZGUuZ2V0Q29tcG9uZW50KFwiQmxvY2tcIikudHlwZSA9PSA1KXtcclxuICAgICAgICAgICAgICAgIGlmKHdhbGxBcnJheVtpXS5nZXRDb21wb25lbnQoXCJXYWxsXCIpLnNwZWNpYWwgIT0gMSl7XHJcbiAgICAgICAgICAgICAgICAgICAgamcgPSBmYWxzZTtcclxuICAgICAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICBpZihqZyA9PSB0cnVlICAmJiBub2RlLmdldENvbXBvbmVudChcIkJsb2NrXCIpLnR5cGUgPT0gNSl7XHJcbiAgICAgICAgICAgIGZvcihsZXQgaj0wO2o8d2FsbEFycmF5Lmxlbmd0aDtqKyspe1xyXG4gICAgICAgICAgICAgICAgaWYod2FsbEFycmF5W2pdLmdldENvbXBvbmVudChcIldhbGxcIikuc3BlY2lhbCA9PSAxICYmIHdhbGxBcnJheVtqXS5nZXRDb21wb25lbnQoXCJXYWxsXCIpLndhbGxfSW5mby5sZW5ndGggIT0gMCl7XHJcbiAgICAgICAgICAgICAgICAgICAgd2FsbEFycmF5W2pdLmdldENvbXBvbmVudChcIldhbGxcIikucGxheVN0YXJEb29yKCk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgLy8gY29uc3QgZGF0ZTggPSBuZXcgRGF0ZSgpLmdldFRpbWUoKTtcclxuICAgICAgICAvLyBjb25zb2xlLmxvZyhcIuajgOa1i+minOiJsuaYr+WQpuiDveWkn+mAmui/h+mXqFwiLGRhdGU4KTtcclxuICAgICAgICByZXR1cm4gamc7XHJcbiAgICB9XHJcblxyXG4gICAgLy/mo4DmtYvmlrnlnZflkozpl6jkuK3pl7TmnInmsqHmnInlpLnmnYLlhbbku5blnZdcclxuICAgIGRldGVjdGluZ0Jsb2NrKGRpcmVjdGlvbixwb3NYLHBvc1ksYmxvY2tzKXtcclxuICAgICAgICBsZXQgamcgPSB0cnVlO1xyXG4gICAgICAgIGxldCBpZCA9IFwiXCI7XHJcbiAgICAgICAgaWYoYmxvY2tzLmxlbmd0aCA+IDApe1xyXG4gICAgICAgICAgICBmb3IobGV0IGk9MDsgaTxibG9ja3MubGVuZ3RoOyBpKyspe1xyXG4gICAgICAgICAgICAgICAgbGV0IHBvcyA9IGJsb2Nrc1tpXTtcclxuICAgICAgICAgICAgICAgIGxldCB4ID0gcG9zLng7XHJcbiAgICAgICAgICAgICAgICBsZXQgeSA9IHBvcy55OyBcclxuICAgICAgICAgICAgICAgIGlkID0gdGhpcy5tYXBCbG9ja3NXYWxsW3hdW3ldLmdldENvbXBvbmVudChcIk1hcEJsb2NrXCIpLmJsb2NrX0lkO1xyXG4gICAgICAgICAgICAgICAgamcgPSB0aGlzLmNoZWNrQWxsRGlyZWN0aW9ucyhpZCxkaXJlY3Rpb24seCx5KTtcclxuICAgICAgICAgICAgICAgIGlmKCFqZyl7XHJcbiAgICAgICAgICAgICAgICAgICAgLy8gY29uc29sZS5sb2coXCLmlrnlkJHmo4DmtYvmsqHov4dcIik7XHJcbiAgICAgICAgICAgICAgICAgICAgaSA9IDEwMDAwMDA7XHJcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGpnO1xyXG4gICAgICAgICAgICAgICAgfSBcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICAvLyBjb25zdCBkYXRlNyA9IG5ldyBEYXRlKCkuZ2V0VGltZSgpO1xyXG4gICAgICAgIC8vIGNvbnNvbGUubG9nKFwi5pa55ZCR5qOA5rWL6YCa6L+HXCIsZGF0ZTcsamcpO1xyXG4gICAgICAgIHJldHVybiBqZztcclxuICAgIH1cclxuXHJcbiAgICAvL+ajgOa1i+eJqeS9k+WQhOaWueWQkeaYr+WQpuacieWIq+eahOeJqeWdl++8jOmYsuatoueisOWIsOWimeWjgeS6huS9huaYr+aYr+WHueWHuOW9oueKtu+8jOWimeS4juWdl+S5i+mXtOaciemYu+aMoeeJqeWdl1xyXG4gICAgY2hlY2tBbGxEaXJlY3Rpb25zKGlkLGRpcmVjdGlvbix4LHkpe1xyXG4gICAgICAgIGxldCBqZyA9IHRydWU7XHJcbiBcclxuICAgICAgICBpZihkaXJlY3Rpb24gPT0gXCJsZWZ0XCIpe1xyXG4gICAgICAgICAgICBpZih0aGlzLm1hcEJsb2Nrc1dhbGxbeC0xXVt5XS5nZXRDb21wb25lbnQoXCJNYXBCbG9ja1wiKS5ibG9ja19JZCAhPSBcIlwiICYmIHRoaXMubWFwQmxvY2tzV2FsbFt4LTFdW3ldLmdldENvbXBvbmVudChcIk1hcEJsb2NrXCIpLmJsb2NrX0lkIT0gXCJXYWxsXCJcclxuICAgICAgICAgICAgJiYgdGhpcy5tYXBCbG9ja3NXYWxsW3gtMV1beV0uZ2V0Q29tcG9uZW50KFwiTWFwQmxvY2tcIikuYmxvY2tfSWQgIT0gaWQgKXtcclxuICAgICAgICAgICAgICAgIC8vIGNvbnNvbGUubG9nKFwi5bem5L6n5pyJ54mp5L2TXCIpXHJcbiAgICAgICAgICAgICAgICBqZyA9IGZhbHNlO1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIGpnO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGlmKHRoaXMubWFwQmxvY2tzV2FsbFt4LTFdW3ldLm9wYWNpdHkgPT0gMjQ5KXtcclxuICAgICAgICAgICAgICAgIGpnID0gZmFsc2U7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gamc7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgaWYoKHggLSAyKSA+PSAwKXtcclxuICAgICAgICAgICAgICAgIGlmKHRoaXMubWFwQmxvY2tzV2FsbFt4LTJdW3ldLmdldENvbXBvbmVudChcIk1hcEJsb2NrXCIpLmJsb2NrX0lkICE9IFwiXCIgJiYgdGhpcy5tYXBCbG9ja3NXYWxsW3gtMl1beV0uZ2V0Q29tcG9uZW50KFwiTWFwQmxvY2tcIikuYmxvY2tfSWQhPSBcIldhbGxcIlxyXG4gICAgICAgICAgICAgICAgJiYgdGhpcy5tYXBCbG9ja3NXYWxsW3gtMl1beV0uZ2V0Q29tcG9uZW50KFwiTWFwQmxvY2tcIikuYmxvY2tfSWQgIT0gaWQgKXtcclxuICAgICAgICAgICAgICAgICAgICAvLyBjb25zb2xlLmxvZyhcIuW3puS+p+acieeJqeS9k1wiKVxyXG4gICAgICAgICAgICAgICAgICAgIGpnID0gZmFsc2U7XHJcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGpnO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgaWYodGhpcy5tYXBCbG9ja3NXYWxsW3gtMl1beV0ub3BhY2l0eSA9PSAyNDkpe1xyXG4gICAgICAgICAgICAgICAgICAgIGpnID0gZmFsc2U7XHJcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGpnO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2UgaWYoZGlyZWN0aW9uID09IFwicmlnaHRcIil7XHJcbiAgICAgICAgICAgIGlmKHRoaXMubWFwQmxvY2tzV2FsbFt4KzFdW3ldLmdldENvbXBvbmVudChcIk1hcEJsb2NrXCIpLmJsb2NrX0lkICE9IFwiXCIgJiYgdGhpcy5tYXBCbG9ja3NXYWxsW3grMV1beV0uZ2V0Q29tcG9uZW50KFwiTWFwQmxvY2tcIikuYmxvY2tfSWQhPSBcIldhbGxcIlxyXG4gICAgICAgICAgICAmJiB0aGlzLm1hcEJsb2Nrc1dhbGxbeCsxXVt5XS5nZXRDb21wb25lbnQoXCJNYXBCbG9ja1wiKS5ibG9ja19JZCAhPSBpZCApe1xyXG4gICAgICAgICAgICAgICAgLy8gY29uc29sZS5sb2coXCLlj7PkvqfmnInniankvZNcIilcclxuICAgICAgICAgICAgICAgIGpnID0gZmFsc2U7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gamc7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgaWYodGhpcy5tYXBCbG9ja3NXYWxsW3grMV1beV0ub3BhY2l0eSA9PSAyNDkpe1xyXG4gICAgICAgICAgICAgICAgamcgPSBmYWxzZTtcclxuICAgICAgICAgICAgICAgIHJldHVybiBqZztcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBpZigoeCArIDIpIDw9IHRoaXMubWFwQmxvY2tzV2FsbC5sZW5ndGgtMSl7XHJcbiAgICAgICAgICAgICAgICBpZih0aGlzLm1hcEJsb2Nrc1dhbGxbeCsyXVt5XS5nZXRDb21wb25lbnQoXCJNYXBCbG9ja1wiKS5ibG9ja19JZCAhPSBcIlwiICYmIHRoaXMubWFwQmxvY2tzV2FsbFt4KzJdW3ldLmdldENvbXBvbmVudChcIk1hcEJsb2NrXCIpLmJsb2NrX0lkIT0gXCJXYWxsXCJcclxuICAgICAgICAgICAgICAgICYmIHRoaXMubWFwQmxvY2tzV2FsbFt4KzJdW3ldLmdldENvbXBvbmVudChcIk1hcEJsb2NrXCIpLmJsb2NrX0lkICE9IGlkICl7XHJcbiAgICAgICAgICAgICAgICAgICAgLy8gY29uc29sZS5sb2coXCLlj7PkvqfmnInniankvZNcIilcclxuICAgICAgICAgICAgICAgICAgICBqZyA9IGZhbHNlO1xyXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBqZztcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIGlmKHRoaXMubWFwQmxvY2tzV2FsbFt4KzJdW3ldLm9wYWNpdHkgPT0gMjQ5KXtcclxuICAgICAgICAgICAgICAgICAgICBqZyA9IGZhbHNlO1xyXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBqZztcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICBpZihkaXJlY3Rpb24gPT0gXCJ1cFwiKXtcclxuICAgICAgICAgICAgaWYodGhpcy5tYXBCbG9ja3NXYWxsW3hdW3krMV0uZ2V0Q29tcG9uZW50KFwiTWFwQmxvY2tcIikuYmxvY2tfSWQgIT0gXCJcIiAmJiB0aGlzLm1hcEJsb2Nrc1dhbGxbeF1beSsxXS5nZXRDb21wb25lbnQoXCJNYXBCbG9ja1wiKS5ibG9ja19JZCE9IFwiV2FsbFwiXHJcbiAgICAgICAgICAgICYmIHRoaXMubWFwQmxvY2tzV2FsbFt4XVt5KzFdLmdldENvbXBvbmVudChcIk1hcEJsb2NrXCIpLmJsb2NrX0lkICE9IGlkICl7XHJcbiAgICAgICAgICAgICAgICAvLyBjb25zb2xlLmxvZyhcIuS4iuS+p+acieeJqeS9k1wiKVxyXG4gICAgICAgICAgICAgICAgamcgPSBmYWxzZTtcclxuICAgICAgICAgICAgICAgIHJldHVybiBqZztcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBpZih0aGlzLm1hcEJsb2Nrc1dhbGxbeF1beSsxXS5vcGFjaXR5ID09IDI0OSl7XHJcbiAgICAgICAgICAgICAgICBqZyA9IGZhbHNlO1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIGpnO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGlmKCh5ICsgMikgPD0gdGhpcy5tYXBCbG9ja3NXYWxsW3hdLmxlbmd0aC0xKXtcclxuICAgICAgICAgICAgICAgIGlmKHRoaXMubWFwQmxvY2tzV2FsbFt4XVt5KzJdLmdldENvbXBvbmVudChcIk1hcEJsb2NrXCIpLmJsb2NrX0lkICE9IFwiXCIgJiYgdGhpcy5tYXBCbG9ja3NXYWxsW3hdW3krMl0uZ2V0Q29tcG9uZW50KFwiTWFwQmxvY2tcIikuYmxvY2tfSWQhPSBcIldhbGxcIlxyXG4gICAgICAgICAgICAgICAgJiYgdGhpcy5tYXBCbG9ja3NXYWxsW3hdW3krMl0uZ2V0Q29tcG9uZW50KFwiTWFwQmxvY2tcIikuYmxvY2tfSWQgIT0gaWQgKXtcclxuICAgICAgICAgICAgICAgICAgICAvLyBjb25zb2xlLmxvZyhcIuS4iuS+p+acieeJqeS9k1wiKVxyXG4gICAgICAgICAgICAgICAgICAgIGpnID0gZmFsc2U7XHJcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGpnO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgaWYodGhpcy5tYXBCbG9ja3NXYWxsW3hdW3krMl0ub3BhY2l0eSA9PSAyNDkpe1xyXG4gICAgICAgICAgICAgICAgICAgIGpnID0gZmFsc2U7XHJcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGpnO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmKGRpcmVjdGlvbiA9PSBcImRvd25cIil7XHJcbiAgICAgICAgICAgIGlmKHRoaXMubWFwQmxvY2tzV2FsbFt4XVt5LTFdLmdldENvbXBvbmVudChcIk1hcEJsb2NrXCIpLmJsb2NrX0lkICE9IFwiXCIgJiYgdGhpcy5tYXBCbG9ja3NXYWxsW3hdW3ktMV0uZ2V0Q29tcG9uZW50KFwiTWFwQmxvY2tcIikuYmxvY2tfSWQhPSBcIldhbGxcIlxyXG4gICAgICAgICAgICAmJiB0aGlzLm1hcEJsb2Nrc1dhbGxbeF1beS0xXS5nZXRDb21wb25lbnQoXCJNYXBCbG9ja1wiKS5ibG9ja19JZCAhPSBpZCApe1xyXG4gICAgICAgICAgICAgICAgLy8gY29uc29sZS5sb2coXCLkuIvkvqfmnInniankvZNcIilcclxuICAgICAgICAgICAgICAgIGpnID0gZmFsc2U7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gamc7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgaWYodGhpcy5tYXBCbG9ja3NXYWxsW3hdW3ktMV0ub3BhY2l0eSA9PSAyNDkpe1xyXG4gICAgICAgICAgICAgICAgamcgPSBmYWxzZTtcclxuICAgICAgICAgICAgICAgIHJldHVybiBqZztcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBpZigoeSAtIDIpID49IDApe1xyXG4gICAgICAgICAgICAgICAgaWYodGhpcy5tYXBCbG9ja3NXYWxsW3hdW3ktMl0uZ2V0Q29tcG9uZW50KFwiTWFwQmxvY2tcIikuYmxvY2tfSWQgIT0gXCJcIiAmJiB0aGlzLm1hcEJsb2Nrc1dhbGxbeF1beS0yXS5nZXRDb21wb25lbnQoXCJNYXBCbG9ja1wiKS5ibG9ja19JZCE9IFwiV2FsbFwiXHJcbiAgICAgICAgICAgICAgICAmJiB0aGlzLm1hcEJsb2Nrc1dhbGxbeF1beS0yXS5nZXRDb21wb25lbnQoXCJNYXBCbG9ja1wiKS5ibG9ja19JZCAhPSBpZCApe1xyXG4gICAgICAgICAgICAgICAgICAgIC8vIGNvbnNvbGUubG9nKFwi5LiL5L6n5pyJ54mp5L2TXCIpXHJcbiAgICAgICAgICAgICAgICAgICAgamcgPSBmYWxzZTtcclxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gamc7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBpZih0aGlzLm1hcEJsb2Nrc1dhbGxbeF1beS0yXS5vcGFjaXR5ID09IDI0OSl7XHJcbiAgICAgICAgICAgICAgICAgICAgamcgPSBmYWxzZTtcclxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gamc7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgLy8gY29uc29sZS5sb2coXCLmo4DmtYvniankvZPlkITmlrnlkJHmmK/lkKbmnInliKvnmoTnianlnZdcIixqZyk7XHJcbiAgICAgICAgcmV0dXJuIGpnO1xyXG4gICAgfVxyXG5cclxuICAgIGNoZWNrRGlyYWN0aW9uKGFsbEJsb2NrcyxtYXhYLG1heFkpe1xyXG4gICAgICAgIGxldCBqZyA9IFtmYWxzZSxmYWxzZSxmYWxzZSxmYWxzZV07XHJcbiAgICAgICAgZm9yKGxldCBpPTA7IGk8YWxsQmxvY2tzLmxlbmd0aDsgaSsrKXtcclxuICAgICAgICAgICAgaWYoYWxsQmxvY2tzW2ldLnggPiAwICYmIGpnWzBdID09IGZhbHNlKXtcclxuICAgICAgICAgICAgICAgIGlmKHRoaXMubWFwQmxvY2tzV2FsbFthbGxCbG9ja3NbaV0ueC0xXVthbGxCbG9ja3NbaV0ueV0ub3BhY2l0eSA9PSAyNTApe1xyXG4gICAgICAgICAgICAgICAgICAgIGpnWzBdID0gdHJ1ZTtcclxuICAgICAgICAgICAgICAgIH0gXHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgaWYoIGpnWzFdID09IGZhbHNlKXtcclxuICAgICAgICAgICAgICAgIGlmKHRoaXMubWFwQmxvY2tzV2FsbFthbGxCbG9ja3NbaV0ueCsxXVthbGxCbG9ja3NbaV0ueV0ub3BhY2l0eSA9PSAyNTApe1xyXG4gICAgICAgICAgICAgICAgICAgIGpnWzFdID0gdHJ1ZTtcclxuICAgICAgICAgICAgICAgIH0gXHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgaWYoYWxsQmxvY2tzW2ldLnkgPiAwICYmIGpnWzJdID09IGZhbHNlKXtcclxuICAgICAgICAgICAgICAgIGlmKHRoaXMubWFwQmxvY2tzV2FsbFthbGxCbG9ja3NbaV0ueF1bYWxsQmxvY2tzW2ldLnktMV0ub3BhY2l0eSA9PSAyNTApe1xyXG4gICAgICAgICAgICAgICAgICAgIGpnWzJdID0gdHJ1ZTtcclxuICAgICAgICAgICAgICAgIH0gXHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgaWYoamdbM10gPT0gZmFsc2Upe1xyXG4gICAgICAgICAgICAgICAgaWYodGhpcy5tYXBCbG9ja3NXYWxsW2FsbEJsb2Nrc1tpXS54XVthbGxCbG9ja3NbaV0ueSsxXS5vcGFjaXR5ID09IDI1MCl7XHJcbiAgICAgICAgICAgICAgICAgICAgamdbM10gPSB0cnVlO1xyXG4gICAgICAgICAgICAgICAgfSBcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gamc7XHJcbiAgICB9XHJcblxyXG4gICAgY2hlY2tMZWZ0KGFsbEJsb2Nrcyl7XHJcbiAgICAgICAgbGV0IGpnID0gZmFsc2U7XHJcbiAgICAgICAgcmV0dXJuIGpnO1xyXG4gICAgfVxyXG5cclxuICAgIGNoZWNrUmlnaHQoYWxsQmxvY2tzLG1heCl7XHJcbiAgICAgICAgbGV0IGpnID0gZmFsc2U7XHJcbiAgICAgICAgZm9yKGxldCBpPTA7IGk8YWxsQmxvY2tzLmxlbmd0aDsgaSsrKXtcclxuXHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiBqZztcclxuICAgIH1cclxuXHJcbiAgICBjaGVja0Rvd24oYWxsQmxvY2tzKXtcclxuICAgICAgICBsZXQgamcgPSBmYWxzZTtcclxuICAgICAgICBmb3IobGV0IGk9MDsgaTxhbGxCbG9ja3MubGVuZ3RoOyBpKyspe1xyXG4gXHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiBqZztcclxuICAgIH1cclxuXHJcbiAgICBjaGVja1VwKGFsbEJsb2NrcyxtYXgpe1xyXG4gICAgICAgIGxldCBqZyA9IGZhbHNlO1xyXG4gICAgICAgIGZvcihsZXQgaT0wOyBpPGFsbEJsb2Nrcy5sZW5ndGg7IGkrKyl7XHJcblxyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gamc7XHJcbiAgICB9XHJcbiAgICBcclxuXHJcbiAgICAvL+eJueauiuWkhOeQhu+8jOaWueWdl+W4pumBk+WFt+aIluiAhemcgOimgea2iOmZpOWGsOWdl1xyXG4gICAgc3BlY2lhbF9UcmVhdG1lbnQobm9kZSl7XHJcbiAgICAgICAgbGV0IGZyZWV6ZUJsb2NrID0gdGhpcy5ub2RlLmNoaWxkcmVuLmZpbHRlcihjaGlsZCA9PiB7XHJcbiAgICAgICAgICAgIGlmKGNoaWxkLmdldENvbXBvbmVudChcIkJsb2NrXCIpKXtcclxuICAgICAgICAgICAgICAgIGlmKGNoaWxkLmdldENvbXBvbmVudChcIkJsb2NrXCIpLnR5cGUgPT0gNClcclxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gY2hpbGRcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH0pO1xyXG4gICAgICAgIGlmKGZyZWV6ZUJsb2NrLmxlbmd0aCA+IDApe1xyXG4gICAgICAgICAgICBmb3IobGV0IGk9MDsgaTxmcmVlemVCbG9jay5sZW5ndGg7IGkrKyl7XHJcbiAgICAgICAgICAgICAgICBmcmVlemVCbG9ja1tpXS5nZXRDaGlsZEJ5TmFtZShcImZyZWV6ZVwiKS5nZXRDb21wb25lbnQoXCJGcmVlemVcIikucmVkdWNlKDEpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBpZihub2RlLmdldENvbXBvbmVudChcIkJsb2NrXCIpLnR5cGUgPT0gMiB8fCBub2RlLmdldENvbXBvbmVudChcIkJsb2NrXCIpLnR5cGUgPT0gNCl7XHJcbiAgICAgICAgICAgIGxldCBsb2NrQmxvY2sgPSB0aGlzLm5vZGUuY2hpbGRyZW4uZmlsdGVyKGNoaWxkID0+IHtcclxuICAgICAgICAgICAgICAgIGlmKGNoaWxkLmdldENvbXBvbmVudChcIkJsb2NrXCIpKXtcclxuICAgICAgICAgICAgICAgICAgICBpZihjaGlsZC5nZXRDb21wb25lbnQoXCJCbG9ja1wiKS50eXBlID09IDMpXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBjaGlsZFxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgaWYobG9ja0Jsb2NrLmxlbmd0aCA+IDApXHJcbiAgICAgICAgICAgICAgICBmb3IobGV0IGk9MDsgaTxsb2NrQmxvY2subGVuZ3RoOyBpKyspe1xyXG4gICAgICAgICAgICAgICAgICAgIGxvY2tCbG9ja1tpXS5nZXRDaGlsZEJ5TmFtZShcImxvY2tcIikuZ2V0Q29tcG9uZW50KFwiTG9ja1wiKS5yZWR1Y2UoKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIFxyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgZm9yKGxldCBpPTA7aTx0aGlzLmJsb2Nrcy5sZW5ndGg7aSsrKXtcclxuICAgICAgICAgICAgaWYodGhpcy5ibG9ja3NbaV0gPT0gbm9kZSl7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmJsb2Nrcy5zcGxpY2UoaSwxKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICBcclxuICAgIH1cclxuXHJcbiAgICAvL+WIpOaWrea4uOaIj+aIkOWKn+S4i+S4gOWFs1xyXG4gICAgbmV4dExldmVsKCl7XHJcbiAgICAgICAgdGhpcy5wYXVzZSA9IGZhbHNlO1xyXG4gICAgICAgIHRoaXMub3BlbkljZSgpO1xyXG5cclxuICAgICAgICB0aGlzLmJsb2NrTnVtID0gdGhpcy5ibG9ja3MubGVuZ3RoO1xyXG4gXHJcbiAgICAgICAgaWYodGhpcy5ibG9ja051bSA9PSAwICYmICF0aGlzLmdhbWVXaW4gJiYgIXRoaXMuZ2FtZU92ZXIpe1xyXG4gICAgICAgICAgICAvLyBhbGVydChcIua4uOaIj+aIkOWKn1wiKTtcclxuICAgICAgICAgICAgdGhpcy5nYW1lV2luID0gdHJ1ZTtcclxuXHJcbiAgICAgICAgICAgIHRoaXMuc3RvcFRpbWVDdXREb3duKCk7XHJcbiAgICAgICAgICAgIC8vIGNvbnNvbGUubG9nKFwi5oiQ5Yqf5raI6Zmk5LiA5LiqXCIpO1xyXG4gICAgICAgICAgICBjYy5meC5HYW1lVG9vbC5jaGFuZ2VDb2luKDQwKTtcclxuICAgICAgICAgICAgY2MuZnguR2FtZVRvb2wuYWRkTGV2ZWwodGhpcy5jb3VudF9UaW1lLHRoaXMuYWRkX1RpbWUpO1xyXG5cclxuICAgICAgICAgICAgdGhpcy5jaGVja19OZXdNb2RlKCk7XHJcbiAgICAgICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5ub2RlLnBhcmVudC5wYXJlbnQuZ2V0Q2hpbGRCeU5hbWUoXCJXaW5cIikuYWN0aXZlID0gdHJ1ZTtcclxuICAgICAgICAgICAgfSwgNjYwKTtcclxuICAgICAgICAgICAgLy8gY29uc29sZS5sb2coXCLmuLjmiI/miJDlip9cIik7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2V7XHJcbiAgICAgICAgICAgIGlmKHRoaXMuZ2FtZU92ZXIgPT0gdHJ1ZSl7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmZhaWxMZXZlbChudWxsKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBjaGVja19OZXdNb2RlKCl7XHJcbiAgICAgICAgZm9yKGxldCBpPTA7IGk8Y2MuZnguR2FtZUNvbmZpZy5ORVdfTEVWRUwubGVuZ3RoOyBpKyspe1xyXG4gICAgICAgICAgICBpZigoY2MuZnguR2FtZUNvbmZpZy5HTV9JTkZPLmxldmVsKzEpID09IGNjLmZ4LkdhbWVDb25maWcuTkVXX0xFVkVMW2ldLmxldmVsKXtcclxuICAgICAgICAgICAgICAgIHRoaXMubmV3X21vZGUgPSAzO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHdpbkxldmVsKCl7XHJcbiAgICAgICAgY2MuZnguQXVkaW9NYW5hZ2VyLl9pbnN0YW5jZS5wbGF5RWZmZWN0KFwiYW5uaXVfQmlnXCIsbnVsbCk7XHJcbiAgICAgICAgaWYoY2MuZnguR2FtZUNvbmZpZy5HTV9JTkZPLmxldmVsID4gMTU2KXtcclxuICAgICAgICAgICAgY2MuZnguR2FtZUNvbmZpZy5HTV9JTkZPLmxldmVsID0gMTU2O1xyXG4gICAgICAgICAgICAvLyBNYXBDb25yb2xlci5faW5zdGFuY2UgPSBudWxsO1xyXG4gICAgXHJcbiAgICAgICAgICAgIGlmKHRoaXMubmV3X21vZGUgPT0gMyl7XHJcbiAgICAgICAgICAgICAgICB0aGlzLm5vZGUucGFyZW50LnBhcmVudC5nZXRDaGlsZEJ5TmFtZShcIldpblwiKS5hY3RpdmUgPSBmYWxzZTtcclxuICAgICAgICAgICAgICAgIHRoaXMub3Blbk5ld01vZGUoMik7XHJcbiAgICAgICAgICAgICAgICBjYy5meC5HYW1lQ29uZmlnLkxFVkVMX0lORk9faW5pdChmYWxzZSwwKTtcclxuICAgICAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAvLyBjYy5meC5HYW1lQ29uZmlnLkxFVkVMX0lORk9faW5pdCh0cnVlKTtcclxuICAgICAgICAgICAgY2MuZnguQXVkaW9NYW5hZ2VyLl9pbnN0YW5jZS5wbGF5RWZmZWN0KFwiemh1YW4xXCIsbnVsbCk7XHJcbiAgICAgICAgICAgIHRoaXMubm9kZS5wYXJlbnQucGFyZW50LnBhcmVudC5nZXRDaGlsZEJ5TmFtZShcInpodWFuY2hhbmdcIikuYWN0aXZlID0gdHJ1ZTtcclxuICAgICAgICAgICAgdGhpcy5ub2RlLnBhcmVudC5wYXJlbnQucGFyZW50LmdldENoaWxkQnlOYW1lKFwiemh1YW5jaGFuZ1wiKS5nZXRDb21wb25lbnQoc3AuU2tlbGV0b24pLnNldEFuaW1hdGlvbigxLFwidXBcIixmYWxzZSk7XHJcbiAgICAgICAgICAgIC8vIHRoaXMubm9kZS5wYXJlbnQucGFyZW50LnBhcmVudC5nZXRDaGlsZEJ5TmFtZShcInpodWFuY2hhbmdcIikuZ2V0Q29tcG9uZW50KHNwLlNrZWxldG9uKS5zZXRDb21wbGV0ZUxpc3RlbmVyKChlbnRyeSkgPT4ge1xyXG4gICAgICAgICAgICAvLyAgICAgaWYgKGVudHJ5LmFuaW1hdGlvbi5uYW1lID09PSBcInVwXCIpIHtcclxuICAgICAgICAgICAgLy8gICAgICAgICAvLyDliqjnlLvmkq3mlL7nu5PmnZ/lkI7miafooYznmoTpgLvovpFcclxuICAgICAgICAgICAgLy8gICAgICAgICB0aGlzLm5vZGUucGFyZW50LnBhcmVudC5wYXJlbnQuZ2V0Q2hpbGRCeU5hbWUoXCJ6aHVhbmNoYW5nXCIpLmFjdGl2ZSA9IGZhbHNlO1xyXG4gICAgICAgICAgICAvLyAgICAgfVxyXG4gICAgICAgICAgICAvLyB9KTtcclxuXHJcbiAgICAgICAgICAgIGNjLmRpcmVjdG9yLnByZWxvYWRTY2VuZShcIkhvbWVTY2VuZVwiLCAoZXJyLCBhc3NldCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgaWYgKGVycikge1xyXG4gICAgICAgICAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoJ+WKqOaAgeWKoOi9vSBQcmVmYWIg5aSx6LSlOicsIGVycik7XHJcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgICAgICAgICAgICBjYy5kaXJlY3Rvci5sb2FkU2NlbmUoXCJIb21lU2NlbmVcIik7XHJcbiAgICAgICAgICAgIH0sIDEyMDApO1xyXG4gICAgICAgIH0gXHJcbiAgICAgICAgZWxzZXtcclxuICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgIC8vIGNvbnNvbGUubG9nKFwi5LiL5LiA5YWzXCIpO1xyXG4gICAgICAgICAgICAvLyBNYXBDb25yb2xlci5faW5zdGFuY2UgPSBudWxsO1xyXG4gICAgICAgICAgICBcclxuICAgICAgICAgICAgaWYodGhpcy5uZXdfbW9kZSA9PSAzKXtcclxuICAgICAgICAgICAgICAgIHRoaXMubm9kZS5wYXJlbnQucGFyZW50LmdldENoaWxkQnlOYW1lKFwiV2luXCIpLmFjdGl2ZSA9IGZhbHNlO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5vcGVuTmV3TW9kZSgyKTtcclxuICAgICAgICAgICAgICAgIGNjLmZ4LkdhbWVDb25maWcuTEVWRUxfSU5GT19pbml0KGZhbHNlLDApO1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGNjLmZ4LkF1ZGlvTWFuYWdlci5faW5zdGFuY2UucGxheUVmZmVjdChcInpodWFuMVwiLG51bGwpO1xyXG4gICAgICAgICAgICB0aGlzLm5vZGUucGFyZW50LnBhcmVudC5wYXJlbnQuZ2V0Q2hpbGRCeU5hbWUoXCJ6aHVhbmNoYW5nXCIpLmFjdGl2ZSA9IHRydWU7XHJcbiAgICAgICAgICAgIHRoaXMubm9kZS5wYXJlbnQucGFyZW50LnBhcmVudC5nZXRDaGlsZEJ5TmFtZShcInpodWFuY2hhbmdcIikuZ2V0Q29tcG9uZW50KHNwLlNrZWxldG9uKS5zZXRBbmltYXRpb24oMSxcInVwXCIsZmFsc2UpO1xyXG4gICAgICAgICAgICAvLyB0aGlzLm5vZGUucGFyZW50LnBhcmVudC5wYXJlbnQuZ2V0Q2hpbGRCeU5hbWUoXCJ6aHVhbmNoYW5nXCIpLmdldENvbXBvbmVudChzcC5Ta2VsZXRvbikuc2V0Q29tcGxldGVMaXN0ZW5lcigoZW50cnkpID0+IHtcclxuICAgICAgICAgICAgLy8gICAgIGlmIChlbnRyeS5hbmltYXRpb24ubmFtZSA9PT0gXCJ1cFwiKSB7XHJcbiAgICAgICAgICAgIC8vICAgICAgICAgLy8g5Yqo55S75pKt5pS+57uT5p2f5ZCO5omn6KGM55qE6YC76L6RXHJcbiAgICAgICAgICAgIC8vICAgICAgICAgdGhpcy5ub2RlLnBhcmVudC5wYXJlbnQucGFyZW50LmdldENoaWxkQnlOYW1lKFwiemh1YW5jaGFuZ1wiKS5hY3RpdmUgPSBmYWxzZTtcclxuICAgICAgICAgICAgLy8gICAgIH1cclxuICAgICAgICAgICAgLy8gfSk7XHJcbiAgICAgICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgIGNjLmZ4LkdhbWVDb25maWcuTEVWRUxfSU5GT19pbml0KHRydWUsMCk7XHJcbiAgICAgICAgICAgIH0sIDEyMDApO1xyXG4gICAgICAgIFxyXG4gICAgICAgICAgICAvLyB0aGlzLm5vZGUucGFyZW50LnBhcmVudC5wYXJlbnQuZGVzdHJveSgpO1xyXG4gICAgICBcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgYWdhaW5MZXZlbCgpe1xyXG4gICAgICAgIGNjLmZ4LkF1ZGlvTWFuYWdlci5faW5zdGFuY2UucGxheUVmZmVjdChcImFubml1X0JpZ1wiLG51bGwpO1xyXG4gICAgICAgIGlmKGNjLmZ4LkdhbWVDb25maWcuR01fSU5GTy5ocCA8IDEpe1xyXG4gICAgICAgICAgICBNaW5pR2FtZVNkay5BUEkuc2hvd1RvYXN0KFwi5L2T5Yqb5YC85LiN6LazXCIpO1xyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfSBcclxuICAgICAgICBpZighdGhpcy5hZ2FpbkNhblRvdWNoKSByZXR1cm47XHJcbiAgICAgICAgXHJcbiAgICAgICAgdGhpcy5hZ2FpbkNhblRvdWNoID0gZmFsc2U7XHJcbiAgICAgICAgXHJcbiAgICAgICAgLy8gTWFwQ29ucm9sZXIuX2luc3RhbmNlID0gbnVsbDtcclxuICAgICAgICBjYy5meC5BdWRpb01hbmFnZXIuX2luc3RhbmNlLnBsYXlFZmZlY3QoXCJ6aHVhbjFcIixudWxsKTtcclxuICAgICAgICB0aGlzLm5vZGUucGFyZW50LnBhcmVudC5wYXJlbnQuZ2V0Q2hpbGRCeU5hbWUoXCJ6aHVhbmNoYW5nXCIpLmFjdGl2ZSA9IHRydWU7XHJcbiAgICAgICAgdGhpcy5ub2RlLnBhcmVudC5wYXJlbnQucGFyZW50LmdldENoaWxkQnlOYW1lKFwiemh1YW5jaGFuZ1wiKS5nZXRDb21wb25lbnQoc3AuU2tlbGV0b24pLnNldEFuaW1hdGlvbigxLFwidXBcIixmYWxzZSk7XHJcbiAgICAgICAgLy8gdGhpcy5ub2RlLnBhcmVudC5wYXJlbnQucGFyZW50LmdldENoaWxkQnlOYW1lKFwiemh1YW5jaGFuZ1wiKS5nZXRDb21wb25lbnQoc3AuU2tlbGV0b24pLnNldENvbXBsZXRlTGlzdGVuZXIoKGVudHJ5KSA9PiB7XHJcbiAgICAgICAgLy8gICAgIGlmIChlbnRyeS5hbmltYXRpb24ubmFtZSA9PT0gXCJ1cFwiKSB7XHJcbiAgICAgICAgLy8gICAgICAgICAvLyDliqjnlLvmkq3mlL7nu5PmnZ/lkI7miafooYznmoTpgLvovpFcclxuICAgICAgICAvLyAgICAgICAgIHRoaXMubm9kZS5wYXJlbnQucGFyZW50LnBhcmVudC5nZXRDaGlsZEJ5TmFtZShcInpodWFuY2hhbmdcIikuYWN0aXZlID0gZmFsc2U7XHJcbiAgICAgICAgLy8gICAgIH1cclxuICAgICAgICAvLyB9KTtcclxuICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgICAgICAgICAgIGNjLmZ4LkdhbWVDb25maWcuTEVWRUxfSU5GT19pbml0KHRydWUsMCk7XHJcbiAgICAgICAgfSwgMTIwMCk7XHJcbiAgICAgICAgLy8gdGhpcy5ub2RlLnBhcmVudC5wYXJlbnQucGFyZW50LmRlc3Ryb3koKTtcclxuICAgIH1cclxuXHJcbiAgICByZXZpZXdMZXZlbCgpe1xyXG4gICAgICAgIGNjLmZ4LkF1ZGlvTWFuYWdlci5faW5zdGFuY2UucGxheUVmZmVjdChcImFubml1X0JpZ1wiLG51bGwpO1xyXG4gICAgICAgIGxldCBjb2luID0gOTAwO1xyXG4gICAgICAgIGlmKGNjLmZ4LkdhbWVDb25maWcuR01fSU5GTy5yZXZpZXcgPT0gMSkgY29pbiA9IDE5MDA7XHJcbiAgICAgICAgZWxzZSBpZihjYy5meC5HYW1lQ29uZmlnLkdNX0lORk8ucmV2aWV3ID09IDIpIGNvaW4gPSAyNTAwO1xyXG4gICAgICAgIC8vIGNvbnNvbGUubG9nKFwi6Ieq6Lqr6YeR5biBOlwiLGNjLmZ4LkdhbWVDb25maWcuR01fSU5GTy5jb2luLFwi5raI6ICX6YeR5biBOlwiLGNvaW4pO1xyXG4gICAgICAgIGlmKGNjLmZ4LkdhbWVDb25maWcuR01fSU5GTy5jb2luIDwgTWF0aC5hYnMoY29pbikpe1xyXG4gICAgICAgICAgICBNaW5pR2FtZVNkay5BUEkuc2hvd1RvYXN0KFwi6YeR5biB5LiN6Laz77yM5peg5rOV5Yqg5pe26Ze0XCIpO1xyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2V7XHJcbiAgICAgICAgICAgIHRoaXMucnVuUmV3aXZlKC1jb2luKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgcnVuUmV3aXZlKGRhdGEpe1xyXG4gICAgICAgIGNvbnNvbGUubG9nKFwi5aSN5rS75Zue6LCD5Ye95pWw5YaFXCIsZGF0YSk7XHJcbiAgICAgICAgY2MuZnguR2FtZVRvb2wuY2hhbmdlQ29pbihkYXRhKTtcclxuICAgICAgICBNaW5pR2FtZVNkay5BUEkuc2hvd1RvYXN0KFwi57un57ut5ri45oiPXCIpO1xyXG4gICBcclxuICAgICAgICBpZihjYy5meC5HYW1lQ29uZmlnLkdNX0lORk8ucmV2aWV3IDwgMilcclxuICAgICAgICAgICAgY2MuZnguR2FtZUNvbmZpZy5HTV9JTkZPLnJldmlldyArPSAxO1xyXG4gICAgICAgIFxyXG4gICAgICAgIHRoaXMuZ2FtZU92ZXIgPSBmYWxzZTtcclxuICAgICAgICB0aGlzLnRpbWVOdW1iZXIgPSAyMTtcclxuICAgICAgICB0aGlzLmFkZF9UaW1lICs9IDIwO1xyXG4gICAgICAgIHRoaXMucGF1c2UgPSBmYWxzZTtcclxuICAgICAgICB0aGlzLm5vZGUucGFyZW50LnBhcmVudC5nZXRDaGlsZEJ5TmFtZShcIkxvc2VcIikuYWN0aXZlID0gZmFsc2U7XHJcbiAgICAgICAgdGhpcy5zdGFydFRpbWVDdXREb3duKCk7XHJcbiAgICB9XHJcblxyXG5cclxuICAgXHJcbiAgICBob21lQnRuKCl7XHJcbiAgICAgICAgLy8gYWxlcnQoXCLmuLjmiI/lpLHotKVcIik7XHJcbiAgICAgICAgY2MuZnguQXVkaW9NYW5hZ2VyLl9pbnN0YW5jZS5wbGF5RWZmZWN0KFwiYW5uaXVfQmlnXCIsbnVsbCk7XHJcbiAgICAgICAgaWYoIXRoaXMuaG9tZUNhblRvdWNoKSByZXR1cm47XHJcbiAgICAgICAgdGhpcy5ob21lQ2FuVG91Y2ggPSBmYWxzZTtcclxuICAgICAgICB0aGlzLm5vZGUucGFyZW50LnBhcmVudC5nZXRDaGlsZEJ5TmFtZShcIkxvc2VcIikuYWN0aXZlID0gdHJ1ZTtcclxuICAgICAgICB0aGlzLm5vZGUucGFyZW50LnBhcmVudC5nZXRDaGlsZEJ5TmFtZShcIkxvc2VcIikuZ2V0Q2hpbGRCeU5hbWUoXCJUaW1lXCIpLmFjdGl2ZSA9IGZhbHNlO1xyXG4gICAgICAgIHRoaXMubm9kZS5wYXJlbnQucGFyZW50LmdldENoaWxkQnlOYW1lKFwiTG9zZVwiKS5nZXRDaGlsZEJ5TmFtZShcIkJvb21cIikuYWN0aXZlID0gZmFsc2U7XHJcbiAgICAgICAgdGhpcy5ub2RlLnBhcmVudC5wYXJlbnQuZ2V0Q2hpbGRCeU5hbWUoXCJMb3NlXCIpLmdldENoaWxkQnlOYW1lKFwiTG9ja1wiKS5hY3RpdmUgPSBmYWxzZTtcclxuICAgICAgICB0aGlzLm5vZGUucGFyZW50LnBhcmVudC5nZXRDaGlsZEJ5TmFtZShcIkxvc2VcIikuZ2V0Q2hpbGRCeU5hbWUoXCJIZWFsdGhcIikuYWN0aXZlID0gdHJ1ZTtcclxuICAgICAgICBsZXQgZGF0YSA9IHtcclxuICAgICAgICAgICAgdGltZTp0aGlzLmNvdW50X1RpbWUsICAgICAgICAgXHJcbiAgICAgICAgICAgIGFkZF9UaW1lOnRoaXMuYWRkX1RpbWUsXHJcbiAgICAgICAgICAgIHJlc3VsdDpcImZhaWxcIlxyXG4gICAgICAgIH1cclxuICAgICAgICBjYy5meC5HYW1lVG9vbC5zaHVzaHVfVHJhY2soXCJmaW5pc2hfc3RhZ2VcIixkYXRhKTtcclxuICAgICAgICBpZih0aGlzLmdhbWVTdGFydCA9PSB0cnVlKXtcclxuICAgICAgICAgICAgY2MuZnguR2FtZVRvb2wuc2V0VXNlckhlYWx0aCgtMSwoZGF0YSk9PntcclxuICAgICAgICAgICAgfSlcclxuICAgICAgICB9XHJcbiAgICAgICAgLy8gdGhpcy5ub2RlLnBhcmVudC5wYXJlbnQucGFyZW50LmRlc3Ryb3koKTtcclxuICAgIH1cclxuXHJcbiAgICByZXR1cm5Ib21lKCl7XHJcbiAgICAgICAgY2MuZnguQXVkaW9NYW5hZ2VyLl9pbnN0YW5jZS5wbGF5RWZmZWN0KFwiYW5uaXVfQmlnXCIsbnVsbCk7XHJcbiAgICAgICAgaWYoTWFwQ29ucm9sZXIuX2luc3RhbmNlID0gbnVsbCl7XHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcbiAgICAgICAgLy8gTWluaUdhbWVTZGsuQVBJLnNob3dUb2FzdChcIuS9k+WKm+WAvOWHj+WwkVwiKTtcclxuICAgICAgICAvLyBNYXBDb25yb2xlci5faW5zdGFuY2UgPSBudWxsO1xyXG4gICAgICAgIGNjLmZ4LkdhbWVDb25maWcuTEVWRUxfSU5GT19pbml0KGZhbHNlLDApO1xyXG4gICAgICAgIGlmKHRoaXMubmV3X21vZGUgPT0gMyl7XHJcbiAgICAgICAgICAgIHRoaXMubm9kZS5wYXJlbnQucGFyZW50LmdldENoaWxkQnlOYW1lKFwiV2luXCIpLmFjdGl2ZSA9IGZhbHNlO1xyXG4gICAgICAgICAgICB0aGlzLm9wZW5OZXdNb2RlKDEpO1xyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGNjLmZ4LkF1ZGlvTWFuYWdlci5faW5zdGFuY2UucGxheUVmZmVjdChcInpodWFuMVwiLG51bGwpO1xyXG4gICAgICAgIHRoaXMubm9kZS5wYXJlbnQucGFyZW50LnBhcmVudC5nZXRDaGlsZEJ5TmFtZShcInpodWFuY2hhbmdcIikuYWN0aXZlID0gdHJ1ZTtcclxuICAgICAgICB0aGlzLm5vZGUucGFyZW50LnBhcmVudC5wYXJlbnQuZ2V0Q2hpbGRCeU5hbWUoXCJ6aHVhbmNoYW5nXCIpLmdldENvbXBvbmVudChzcC5Ta2VsZXRvbikuc2V0QW5pbWF0aW9uKDEsXCJ1cFwiLGZhbHNlKTtcclxuICAgICAgICBjYy5kaXJlY3Rvci5wcmVsb2FkU2NlbmUoXCJIb21lU2NlbmVcIiwgKGVyciwgYXNzZXQpID0+IHtcclxuICAgICAgICAgICAgaWYgKGVycikge1xyXG4gICAgICAgICAgICAgICAgY29uc29sZS5lcnJvcign5Yqo5oCB5Yqg6L29IFByZWZhYiDlpLHotKU6JywgZXJyKTtcclxuICAgICAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBcclxuICAgICAgICB9KTtcclxuXHJcbiAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgICAgICAgIGNjLmRpcmVjdG9yLmxvYWRTY2VuZShcIkhvbWVTY2VuZVwiKTtcclxuICAgICAgICB9LCAxMjAwKTtcclxuICAgIH1cclxuXHJcbiAgICAvL+WIpOaWrea4uOaIj+Wksei0pVxyXG4gICAgZmFpbExldmVsKHR5cGUpe1xyXG4gICAgICAgIHRoaXMuc3RvcFRpbWVDdXREb3duKCk7XHJcbiAgICAgICAgaWYodGhpcy5nYW1lT3Zlcj09IHRydWUgfHx0aGlzLmdhbWVXaW4gPT0gdHJ1ZSl7XHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGxldCB0aW1lID0gMDtcclxuICAgICAgICB0aGlzLmdhbWVPdmVyID0gdHJ1ZTtcclxuICAgICAgICBpZih0eXBlID09IFwiYm9vbVwiKXtcclxuICAgICAgICAgICAgdGltZSA9IDIwMDA7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5ub2RlLnBhcmVudC5wYXJlbnQuZ2V0Q2hpbGRCeU5hbWUoXCJMb3NlXCIpLmFjdGl2ZSA9IHRydWU7XHJcbiAgICAgICAgICAgICAgICB0aGlzLm5vZGUucGFyZW50LnBhcmVudC5nZXRDaGlsZEJ5TmFtZShcIkxvc2VcIikuZ2V0Q2hpbGRCeU5hbWUoXCJUaW1lXCIpLmFjdGl2ZSA9IHRydWU7XHJcbiAgICAgICAgICAgICAgICB0aGlzLm5vZGUucGFyZW50LnBhcmVudC5nZXRDaGlsZEJ5TmFtZShcIkxvc2VcIikuZ2V0Q2hpbGRCeU5hbWUoXCJCb29tXCIpLmFjdGl2ZSA9IGZhbHNlO1xyXG4gICAgICAgICAgICAgICAgbGV0IGJ1eUJ0biA9IHRoaXMubm9kZS5wYXJlbnQucGFyZW50LmdldENoaWxkQnlOYW1lKFwiTG9zZVwiKS5nZXRDaGlsZEJ5TmFtZShcIlRpbWVcIikuZ2V0Q2hpbGRCeU5hbWUoXCJidXlCdG5cIik7XHJcbiAgICAgICAgICAgICAgICBidXlCdG4uZ2V0Q2hpbGRCeU5hbWUoXCJjb2luMVwiKS5hY3RpdmUgPSBidXlCdG4uZ2V0Q2hpbGRCeU5hbWUoXCJjb2luMlwiKS5hY3RpdmUgPSBidXlCdG4uZ2V0Q2hpbGRCeU5hbWUoXCJjb2luM1wiKS5hY3RpdmUgPWZhbHNlOyBcclxuICAgICAgICAgICAgICAgIGlmKGNjLmZ4LkdhbWVDb25maWcuR01fSU5GTy5yZXZpZXcgPT0gMClidXlCdG4uZ2V0Q2hpbGRCeU5hbWUoXCJjb2luMVwiKS5hY3RpdmUgPSB0cnVlO1xyXG4gICAgICAgICAgICAgICAgZWxzZSBpZihjYy5meC5HYW1lQ29uZmlnLkdNX0lORk8ucmV2aWV3ID09IDEpIGJ1eUJ0bi5nZXRDaGlsZEJ5TmFtZShcImNvaW4yXCIpLmFjdGl2ZSA9IHRydWU7XHJcbiAgICAgICAgICAgICAgICBlbHNlIGlmKGNjLmZ4LkdhbWVDb25maWcuR01fSU5GTy5yZXZpZXcgPT0gMikgYnV5QnRuLmdldENoaWxkQnlOYW1lKFwiY29pbjNcIikuYWN0aXZlID0gdHJ1ZTtcclxuICAgICAgICAgICAgICAgIGlmKHR5cGUpe1xyXG4gICAgICAgICAgICAgICAgICAgIGlmKHR5cGUgPT0gXCJib29tXCIpe1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLm5vZGUucGFyZW50LnBhcmVudC5nZXRDaGlsZEJ5TmFtZShcIkxvc2VcIikuZ2V0Q2hpbGRCeU5hbWUoXCJUaW1lXCIpLmFjdGl2ZSA9IGZhbHNlO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLm5vZGUucGFyZW50LnBhcmVudC5nZXRDaGlsZEJ5TmFtZShcIkxvc2VcIikuZ2V0Q2hpbGRCeU5hbWUoXCJCb29tXCIpLmFjdGl2ZSA9IHRydWU7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgIH0sIHRpbWUpO1xyXG4gICAgXHJcbiAgICAgICAgLy8gY29uc29sZS5sb2coXCLmuLjmiI/lpLHotKVcIik7XHJcbiAgICB9XHJcblxyXG4gICAgLy/miZPlvIDmlrDmqKHlvI/lvLnnqpdcclxuICAgIG9wZW5OZXdNb2RlKHR5cGUpe1xyXG4gICAgICAgIGxldCBpbmRleCA9IDA7XHJcbiAgICAgICAgY29uc3QgQkxPQ0tTX1BFUl9GUkFNRSA9IDU7IC8vIOavj+W4p+mUgOavgeeahOaWueWdl+aVsOmHj1xyXG4gICAgICAgIGNvbnN0IGRlc3Ryb3lCbG9ja3MgPSAoKSA9PiB7XHJcbiAgICAgICAgICAgIGNvbnN0IGVuZEluZGV4ID0gTWF0aC5taW4oaW5kZXggKyBCTE9DS1NfUEVSX0ZSQU1FLCB0aGlzLmJsb2Nrcy5sZW5ndGgpO1xyXG4gICAgICAgICAgICBmb3IgKDsgaW5kZXggPCBlbmRJbmRleDsgaW5kZXgrKykge1xyXG4gICAgICAgICAgICAgICAgaWYgKHRoaXMuYmxvY2tzW2luZGV4XSkge1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuYmxvY2tzW2luZGV4XS5kZXN0cm95KCk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgLy8g5aaC5p6c6L+Y5pyJ5pa55Z2X5pyq6ZSA5q+B77yM5LiL5LiA5bin57un57utXHJcbiAgICAgICAgICAgIGlmIChpbmRleCA8IHRoaXMuYmxvY2tzLmxlbmd0aCkge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5zY2hlZHVsZU9uY2UoZGVzdHJveUJsb2NrcywgMCk7XHJcbiAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9O1xyXG4gICAgICAgIC8vIOW8gOWni+WIhuW4p+mUgOavgeaWueWdl1xyXG4gICAgICAgIGRlc3Ryb3lCbG9ja3MoKTtcclxuICAgICAgICB0aGlzLm5vZGUucGFyZW50LnBhcmVudC5nZXRDaGlsZEJ5TmFtZShcIk5ld01vZGVcIikuYWN0aXZlID0gdHJ1ZTtcclxuICAgICAgICB0aGlzLm5vZGUucGFyZW50LnBhcmVudC5nZXRDaGlsZEJ5TmFtZShcIk5ld01vZGVcIikuZ2V0Q29tcG9uZW50KFwiTmV3TW9kZVwiKS5zZXRNb2RlKHR5cGUpO1xyXG4gICAgfVxyXG5cclxuICAgIFxyXG4gICAgZG93bkRvb3IoY29sb3IsdHlwZSl7XHJcbiAgICAgICAgZm9yKGxldCBpPTA7IGk8dGhpcy53YWxsQXJyYXkubGVuZ3RoO2krKyl7XHJcbiAgICAgICAgICAgIGlmKHRoaXMud2FsbEFycmF5W2ldLmdldENoaWxkQnlOYW1lKFwid2FsbFwiKS5nZXRDb21wb25lbnQoXCJXYWxsXCIpLmNvbG9yID09IGNvbG9yKXtcclxuICAgICAgICAgICAgICAgIGlmKHR5cGUpe1xyXG4gICAgICAgICAgICAgICAgICAgIGlmKHR5cGUgPT0gNSl7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmKCB0aGlzLndhbGxBcnJheVtpXS5nZXRDaGlsZEJ5TmFtZShcIndhbGxcIikuZ2V0Q29tcG9uZW50KFwiV2FsbFwiKS5zcGVjaWFsID09IDEpe1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy53YWxsQXJyYXlbaV0uZ2V0Q2hpbGRCeU5hbWUoXCJ3YWxsXCIpLmdldENvbXBvbmVudChcIldhbGxcIikuZG93bkRvb3IoKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICBlbHNlICB0aGlzLndhbGxBcnJheVtpXS5nZXRDaGlsZEJ5TmFtZShcIndhbGxcIikuZ2V0Q29tcG9uZW50KFwiV2FsbFwiKS5kb3duRG9vcigpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgZWxzZSB0aGlzLndhbGxBcnJheVtpXS5nZXRDaGlsZEJ5TmFtZShcIndhbGxcIikuZ2V0Q29tcG9uZW50KFwiV2FsbFwiKS5kb3duRG9vcigpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHVwRG9vcigpe1xyXG4gICAgICAgIGZvcihsZXQgaT0wOyBpPHRoaXMud2FsbEFycmF5Lmxlbmd0aDtpKyspe1xyXG4gICAgICAgICAgICBpZih0aGlzLndhbGxBcnJheVtpXS5nZXRDaGlsZEJ5TmFtZShcIndhbGxcIikub3BhY2l0eSA9PSAwKXtcclxuICAgICAgICAgICAgICAgIHRoaXMud2FsbEFycmF5W2ldLmdldENoaWxkQnlOYW1lKFwid2FsbFwiKS5nZXRDb21wb25lbnQoXCJXYWxsXCIpLnVwRG9vcigpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgLy/lvIDlp4vlgJLorqHml7ZcclxuICAgc3RhcnRUaW1lQ3V0RG93bigpe1xyXG4gICAgICAgIHRoaXMuc2NoZWR1bGVDYWxsYmFjayA9IGZ1bmN0aW9uKCl7XHJcbiAgICAgICAgICAgIGlmKHRoaXMucGF1c2UpIHJldHVybjtcclxuICAgICAgICAgICAgaWYodGhpcy50aW1lTnVtYmVyIDw9IDApe1xyXG4gICAgICAgICAgICAgICAgdGhpcy5zdG9wVGltZUN1dERvd24oKTtcclxuICAgICAgICAgICAgICAgIHZhciB0aW1lVGVtcCA9IGNjLmZ4LkdhbWVUb29sLmdldFRpbWVNYXJnaW4odGhpcy50aW1lTnVtYmVyKTtcclxuICAgICAgICAgICAgICAgIE51bWJlclRvSW1hZ2UuZ2V0VGltZU1hcmdpbih0aGlzLnRpbWVOdW1iZXIsNTAsXCJ0aW1lX1wiLHRoaXMudGltZUxhYmVsKVxyXG4gICAgICAgICAgICAgICAgLy8gdGhpcy50aW1lTGFiZWwuc3RyaW5nID0gdGltZVRlbXAudG9TdHJpbmcoKTtcclxuICAgICAgICAgICAgICAgIGlmKCF0aGlzLnBhdXNlKXRoaXMuZmFpbExldmVsKFwidGltZVwiKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBlbHNle1xyXG4gICAgICAgICAgICAgICAgdGhpcy50aW1lTnVtYmVyIC09IDE7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmNvdW50X1RpbWUgKz0gMTtcclxuICAgICAgICAgICAgICAgIHZhciB0aW1lVGVtcCA9IGNjLmZ4LkdhbWVUb29sLmdldFRpbWVNYXJnaW4odGhpcy50aW1lTnVtYmVyKTtcclxuICAgICAgICAgICAgICAgIE51bWJlclRvSW1hZ2UuZ2V0VGltZU1hcmdpbih0aGlzLnRpbWVOdW1iZXIsNTAsXCJ0aW1lX1wiLHRoaXMudGltZUxhYmVsKVxyXG4gICAgICAgICAgICAgICAgLy8gdGhpcy50aW1lTGFiZWwuc3RyaW5nID0gdGltZVRlbXAudG9TdHJpbmcoKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH0uYmluZCh0aGlzKTtcclxuICAgICAgICB0aGlzLnNjaGVkdWxlKHRoaXMuc2NoZWR1bGVDYWxsYmFjaywgMSk7XHJcbiAgICB9XHJcbiAgICAvLyDlgZzmraLlgJLorqHml7ZcclxuICAgIHN0b3BUaW1lQ3V0RG93bigpe1xyXG4gICAgICAgIGlmKHRoaXMuc2NoZWR1bGVDYWxsYmFjayl7XHJcbiAgICAgICAgICAgIHRoaXMudW5zY2hlZHVsZSh0aGlzLnNjaGVkdWxlQ2FsbGJhY2spO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICAvL+S9v+eUqOaXtumXtOmBk+WFt1xyXG4gICAgdXNlVGltZVByb3AoKXtcclxuICAgICAgICBpZih0aGlzLm5vZGUucGFyZW50LmdldENoaWxkQnlOYW1lKFwiSWNlXCIpLmFjdGl2ZSA9PSB0cnVlIHx8IHRoaXMuaGFtbWVyID09IHRydWUgXHJcbiAgICAgICAgfHwgdGhpcy5tYWdpY01hc2suYWN0aXZlPT0gdHJ1ZSB8fCB0aGlzLnRpbWVOdW1iZXIgPD0gMSl7XHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcbiAgICAgICAgIGxldCBmcmVlemVCdG4gPSB0aGlzLm5vZGUucGFyZW50LmdldENoaWxkQnlOYW1lKFwiQm90dG9tXCIpLmdldENoaWxkQnlOYW1lKFwidGltZUJ0blwiKTtcclxuICAgICAgICBpZihmcmVlemVCdG4uZ2V0Q29tcG9uZW50KFwiYnRuQ29udHJvbFwiKS5fdG91Y2gpe1xyXG4gICAgICAgICAgICBmcmVlemVCdG4uZ2V0Q29tcG9uZW50KFwiYnRuQ29udHJvbFwiKS5zZXRUb3VjaChmYWxzZSk7XHJcbiAgICAgICAgICAgIGlmKGNjLmZ4LkdhbWVDb25maWcuR01fSU5GTy5mcmVlemVBbW91bnQgPCAxKXtcclxuICAgICAgICAgICAgICAgIGlmKGNjLmZ4LkdhbWVDb25maWcuR01fSU5GTy5jb2luIDwgMTUwMCl7XHJcbiAgICAgICAgICAgICAgICAgICAgTWluaUdhbWVTZGsuQVBJLnNob3dUb2FzdChcIumHkeW4geS4jei2s++8jOaXoOazlei0reS5sOmBk+WFt1wiKTtcclxuICAgICAgICAgICAgICAgICAgICBmcmVlemVCdG4uZ2V0Q29tcG9uZW50KFwiYnRuQ29udHJvbFwiKS5zZXRUb3VjaCh0cnVlKTtcclxuICAgICAgICAgICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB0aGlzLm5vZGUucGFyZW50LnBhcmVudC5nZXRDaGlsZEJ5TmFtZShcInByb3BXaW5kb3dcIikuYWN0aXZlID0gdHJ1ZTtcclxuICAgICAgICAgICAgICAgIHRoaXMubm9kZS5wYXJlbnQucGFyZW50LnBhcmVudC5nZXRDb21wb25lbnQoXCJTY2VuZU1hbmFnZXJcIikub3BlblByb3BCdXkoXCJmcmVlemVcIik7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgZWxzZXtcclxuICAgICAgICAgICAgICAgIGlmKCF0aGlzLm5vZGUucGFyZW50LmdldENoaWxkQnlOYW1lKFwiSWNlXCIpLmFjdGl2ZSAmJiAhdGhpcy5wYXVzZSl7XHJcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgdGltZXN0YW1wID0gRGF0ZS5ub3coKTtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLmZyZWV6ZU1hc2suYWN0aXZlID0gdHJ1ZTtcclxuICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLnBhdXNlID0gdHJ1ZTtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLm5vZGUucGFyZW50LmdldENoaWxkQnlOYW1lKFwiSWNlXCIpLmFjdGl2ZSA9IHRydWU7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5ub2RlLnBhcmVudC5nZXRDaGlsZEJ5TmFtZShcIlRvcFwiKS5nZXRDaGlsZEJ5TmFtZShcIkljZVwiKS5hY3RpdmUgPSB0cnVlO1xyXG4gICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICBjYy5meC5HYW1lQ29uZmlnLkdNX0lORk8uZnJlZXplQW1vdW50IC09IDE7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYoY2MuZnguR2FtZUNvbmZpZy5HTV9JTkZPLmZyZWV6ZUFtb3VudCA8IDApICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBjYy5meC5HYW1lQ29uZmlnLkdNX0lORk8uZnJlZXplQW1vdW50ID0gMDtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLmljZUxhYmVsLnN0cmluZyA9IGNjLmZ4LkdhbWVDb25maWcuR01fSU5GTy5mcmVlemVBbW91bnQudG9TdHJpbmcoKTtcclxuICAgICAgICAgICAgICAgICAgICBsZXQgcHJvcEluZm8gPSBjYy5meC5TdG9yYWdlTWVzc2FnZS5nZXRTdG9yYWdlKFwicHJvcFwiKTtcclxuICAgICAgICAgICAgICAgICAgICBwcm9wSW5mby5mcmVlemVBbW91bnQgPSBjYy5meC5HYW1lQ29uZmlnLkdNX0lORk8uZnJlZXplQW1vdW50O1xyXG4gICAgICAgICAgICAgICAgICAgIHByb3BJbmZvLnRpbWVzdGFtcCA9IHRpbWVzdGFtcDtcclxuICAgICAgICAgICAgICAgICAgICBjYy5meC5TdG9yYWdlTWVzc2FnZS5zZXRTdG9yYWdlKFwicHJvcFwiLHByb3BJbmZvKTtcclxuICAgICAgICAgICAgICAgICAgICBjYy5meC5HYW1lVG9vbC5zZXRVc2VyUHJvcCgyMDAxLGNjLmZ4LkdhbWVDb25maWcuR01fSU5GTy5mcmVlemVBbW91bnQsKGRhdGEpPT57XHJcbiAgICAgICAgICAgICAgICAgICAgfSlcclxuICAgICAgICAgICAgICAgICAgICBsZXQgZGF0YSA9IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgaWQ6XCIyMDAxXCIsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIG51bTotMVxyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICBjYy5meC5HYW1lVG9vbC5zaHVzaHVfVHJhY2soXCJyZXNvdXJjZV9jb3N0XCIsZGF0YSk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBlbHNlIE1pbmlHYW1lU2RrLkFQSS5zaG93VG9hc3QoXCLpgZPlhbfkvb/nlKjkuK3vvIzor7fnqI3lkI7lho3or5VcIik7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcblxyXG5cclxuICAgIH1cclxuXHJcbiAgICAvL+ino+W8gOaXtumXtOWGu+e7k1xyXG4gICAgb3BlbkljZSgpe1xyXG4gICAgICAgIGlmKHRoaXMubm9kZS5wYXJlbnQuZ2V0Q2hpbGRCeU5hbWUoXCJJY2VcIikuYWN0aXZlKXtcclxuICAgICAgICAgICAgdGhpcy5mcmVlemVNYXNrLmFjdGl2ZSA9IGZhbHNlO1xyXG4gICAgICAgICAgICBsZXQgZnJlZXplQnRuID0gdGhpcy5ub2RlLnBhcmVudC5nZXRDaGlsZEJ5TmFtZShcIkJvdHRvbVwiKS5nZXRDaGlsZEJ5TmFtZShcInRpbWVCdG5cIik7XHJcbiAgICAgICAgICAgIGZyZWV6ZUJ0bi5nZXRDb21wb25lbnQoXCJidG5Db250cm9sXCIpLnNldFRvdWNoKHRydWUpO1xyXG4gICAgICAgICAgICB0aGlzLm5vZGUucGFyZW50LmdldENoaWxkQnlOYW1lKFwiSWNlXCIpLmFjdGl2ZSA9IGZhbHNlO1xyXG4gICAgICAgICAgICB0aGlzLm5vZGUucGFyZW50LmdldENoaWxkQnlOYW1lKFwiVG9wXCIpLmdldENoaWxkQnlOYW1lKFwiSWNlXCIpLmFjdGl2ZSA9IGZhbHNlO1xyXG4gICAgICAgICAgICB0aGlzLnBhdXNlID0gZmFsc2U7XHJcbiAgICAgICAgICAgIC8vIHRoaXMuc3RhcnRUaW1lQ3V0RG93bigpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuICAgIFxyXG4gICAgaGFuZGxlQnV5U3VjY2VzcyhkYXRhKXtcclxuICAgICAgICB0aGlzLnBhdXNlID0gZmFsc2U7XHJcbiAgICAgICAgY29uc3QgdGltZXN0YW1wID0gRGF0ZS5ub3coKTtcclxuICAgICAgICAvLyBjb25zb2xlLmxvZyhcIuWbnuiwg+WHveaVsOWGhTpcIix0aGlzLnBhdXNlKTtcclxuICAgICAgICBsZXQgZnJlZXplQnRuID0gdGhpcy5ub2RlLnBhcmVudC5nZXRDaGlsZEJ5TmFtZShcIkJvdHRvbVwiKS5nZXRDaGlsZEJ5TmFtZShcInRpbWVCdG5cIik7XHJcbiAgICAgICAgbGV0IGhhbW1lckJ0biA9IHRoaXMubm9kZS5wYXJlbnQuZ2V0Q2hpbGRCeU5hbWUoXCJCb3R0b21cIikuZ2V0Q2hpbGRCeU5hbWUoXCJkZXN0cm95QnRuXCIpO1xyXG4gICAgICAgIGxldCBtYWdpY0J0biA9IHRoaXMubm9kZS5wYXJlbnQuZ2V0Q2hpbGRCeU5hbWUoXCJCb3R0b21cIikuZ2V0Q2hpbGRCeU5hbWUoXCJtYWdpY0J0blwiKTtcclxuICAgICAgICBpZihkYXRhID09IFwiZnJlZXplQW1vdW50XCIpIGZyZWV6ZUJ0bi5nZXRDb21wb25lbnQoXCJidG5Db250cm9sXCIpLnNldFRvdWNoKHRydWUpO1xyXG4gICAgICAgIGVsc2UgaWYoZGF0YSA9PSBcImhhbW1lckFtb3VudFwiKSBoYW1tZXJCdG4uZ2V0Q29tcG9uZW50KFwiYnRuQ29udHJvbFwiKS5zZXRUb3VjaCh0cnVlKTsgXHJcbiAgICAgICAgZWxzZSBpZihkYXRhID09IFwibWFnaWNBbW91bnRcIikgbWFnaWNCdG4uZ2V0Q29tcG9uZW50KFwiYnRuQ29udHJvbFwiKS5zZXRUb3VjaCh0cnVlKTtcclxuICAgICAgICBpZihkYXRhID09IFwiZnJlZXplQW1vdW50XCIpe1xyXG4gICAgICAgICAgICBjYy5meC5HYW1lQ29uZmlnLkdNX0lORk8uZnJlZXplQW1vdW50ICs9IDM7XHJcbiAgICAgICAgICAgIGxldCBwcm9wSW5mbyA9IGNjLmZ4LlN0b3JhZ2VNZXNzYWdlLmdldFN0b3JhZ2UoXCJwcm9wXCIpO1xyXG4gICAgICAgICAgICBwcm9wSW5mby5mcmVlemVBbW91bnQgPSBjYy5meC5HYW1lQ29uZmlnLkdNX0lORk8uZnJlZXplQW1vdW50O1xyXG4gICAgICAgICAgICBwcm9wSW5mby50aW1lc3RhbXAgPSB0aW1lc3RhbXA7XHJcbiAgICAgICAgICAgIGNjLmZ4LlN0b3JhZ2VNZXNzYWdlLnNldFN0b3JhZ2UoXCJwcm9wXCIscHJvcEluZm8pO1xyXG4gICAgICAgICAgICB0aGlzLm5vZGUucGFyZW50LnBhcmVudC5wYXJlbnQuZ2V0Q29tcG9uZW50KFwiU2NlbmVNYW5hZ2VyXCIpLmNsb3NlUHJvcEJ1eSgpO1xyXG4gICAgICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgICAgICAgICAgIHRoaXMuaWNlTGFiZWwuc3RyaW5nID0gY2MuZnguR2FtZUNvbmZpZy5HTV9JTkZPLmZyZWV6ZUFtb3VudC50b1N0cmluZygpO1xyXG4gICAgICAgICAgICAgICAgTWluaUdhbWVTZGsuQVBJLnNob3dUb2FzdChcIui0reS5sOWGu+e7k+aXtumXtOmBk+WFt+aIkOWKn1wiKTtcclxuICAgICAgICAgICAgfSwgMjAwKTtcclxuXHJcbiAgICAgICAgICAgIFxyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIGlmKGRhdGEgPT0gXCJtYWdpY0Ftb3VudFwiKXtcclxuICAgICAgICAgICAgY2MuZnguR2FtZUNvbmZpZy5HTV9JTkZPLm1hZ2ljQW1vdW50ICs9IDM7XHJcbiAgICAgICAgICAgIGxldCBwcm9wSW5mbyA9IGNjLmZ4LlN0b3JhZ2VNZXNzYWdlLmdldFN0b3JhZ2UoXCJwcm9wXCIpO1xyXG4gICAgICAgICAgICBwcm9wSW5mby5tYWdpY0Ftb3VudCA9IGNjLmZ4LkdhbWVDb25maWcuR01fSU5GTy5tYWdpY0Ftb3VudDtcclxuICAgICAgICAgICAgcHJvcEluZm8udGltZXN0YW1wID0gdGltZXN0YW1wO1xyXG4gICAgICAgICAgICBjYy5meC5TdG9yYWdlTWVzc2FnZS5zZXRTdG9yYWdlKFwicHJvcFwiLHByb3BJbmZvKTtcclxuICAgICAgICAgICAgdGhpcy5ub2RlLnBhcmVudC5wYXJlbnQucGFyZW50LmdldENvbXBvbmVudChcIlNjZW5lTWFuYWdlclwiKS5jbG9zZVByb3BCdXkoKTtcclxuICAgICAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgICAgICAgICAgICBNaW5pR2FtZVNkay5BUEkuc2hvd1RvYXN0KFwi6LSt5Lmw6ZSk5a2Q6YGT5YW35oiQ5YqfXCIpO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5tYWdpY0xhYmVsLnN0cmluZyA9IGNjLmZ4LkdhbWVDb25maWcuR01fSU5GTy5tYWdpY0Ftb3VudC50b1N0cmluZygpO1xyXG4gICAgICAgICAgICB9LCAyMDApO1xyXG4gICAgICAgICAgICBcclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSBpZihkYXRhID09IFwiaGFtbWVyQW1vdW50XCIpe1xyXG4gICAgICAgICAgICBjYy5meC5HYW1lQ29uZmlnLkdNX0lORk8uaGFtbWVyQW1vdW50ICs9IDM7XHJcbiAgICAgICAgICAgIGxldCBwcm9wSW5mbyA9IGNjLmZ4LlN0b3JhZ2VNZXNzYWdlLmdldFN0b3JhZ2UoXCJwcm9wXCIpO1xyXG4gICAgICAgICAgICBwcm9wSW5mby5oYW1tZXJBbW91bnQgPSBjYy5meC5HYW1lQ29uZmlnLkdNX0lORk8uaGFtbWVyQW1vdW50O1xyXG4gICAgICAgICAgICBwcm9wSW5mby50aW1lc3RhbXAgPSB0aW1lc3RhbXA7XHJcbiAgICAgICAgICAgIGNjLmZ4LlN0b3JhZ2VNZXNzYWdlLnNldFN0b3JhZ2UoXCJwcm9wXCIscHJvcEluZm8pO1xyXG4gICAgICAgICAgICB0aGlzLm5vZGUucGFyZW50LnBhcmVudC5wYXJlbnQuZ2V0Q29tcG9uZW50KFwiU2NlbmVNYW5hZ2VyXCIpLmNsb3NlUHJvcEJ1eSgpO1xyXG4gICAgICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgICAgICAgICAgIHRoaXMuaGFtbWVyTGFiZWwuc3RyaW5nID0gY2MuZnguR2FtZUNvbmZpZy5HTV9JTkZPLmhhbW1lckFtb3VudC50b1N0cmluZygpO1xyXG4gICAgICAgICAgICAgICAgTWluaUdhbWVTZGsuQVBJLnNob3dUb2FzdChcIui0reS5sOmtlOazleajkumBk+WFt+aIkOWKn1wiKTtcclxuICAgICAgICAgICAgfSwgMjAwKTtcclxuXHJcbiAgICAgICAgfVxyXG4gICAgICAgIFxyXG4gICAgICAgIFxyXG5cclxuICAgIH1cclxuXHJcbiAgICAvL+S9v+eUqOmUpOWtkOmBk+WFt1xyXG4gICAgdXNlSGFtbWVyKCl7XHJcbiAgICAgICAgaWYodGhpcy5ub2RlLnBhcmVudC5nZXRDaGlsZEJ5TmFtZShcIkljZVwiKS5hY3RpdmUgPT0gdHJ1ZSB8fCB0aGlzLmhhbW1lciA9PSB0cnVlIFxyXG4gICAgICAgIHx8IHRoaXMubWFnaWNNYXNrLmFjdGl2ZT09IHRydWUgfHwgdGhpcy50aW1lTnVtYmVyIDw9IDEpe1xyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGxldCBoYW1tZXJCdG4gPSB0aGlzLm5vZGUucGFyZW50LmdldENoaWxkQnlOYW1lKFwiQm90dG9tXCIpLmdldENoaWxkQnlOYW1lKFwiZGVzdHJveUJ0blwiKTtcclxuICAgICAgICBpZihoYW1tZXJCdG4uZ2V0Q29tcG9uZW50KFwiYnRuQ29udHJvbFwiKS5fdG91Y2gpe1xyXG4gICAgICAgICAgICBoYW1tZXJCdG4uZ2V0Q29tcG9uZW50KFwiYnRuQ29udHJvbFwiKS5zZXRUb3VjaChmYWxzZSk7XHJcbiAgICAgICAgICAgIGlmKGNjLmZ4LkdhbWVDb25maWcuR01fSU5GTy5oYW1tZXJBbW91bnQgPCAxKXtcclxuICAgICAgICAgICAgICAgIGlmKGNjLmZ4LkdhbWVDb25maWcuR01fSU5GTy5jb2luIDwgMTUwMCl7XHJcbiAgICAgICAgICAgICAgICAgICAgTWluaUdhbWVTZGsuQVBJLnNob3dUb2FzdChcIumHkeW4geS4jei2s++8jOaXoOazlei0reS5sOmBk+WFt1wiKTtcclxuICAgICAgICAgICAgICAgICAgICBoYW1tZXJCdG4uZ2V0Q29tcG9uZW50KFwiYnRuQ29udHJvbFwiKS5zZXRUb3VjaCh0cnVlKTtcclxuICAgICAgICAgICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgIHRoaXMubm9kZS5wYXJlbnQucGFyZW50LmdldENoaWxkQnlOYW1lKFwicHJvcFdpbmRvd1wiKS5hY3RpdmUgPSB0cnVlO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5ub2RlLnBhcmVudC5wYXJlbnQucGFyZW50LmdldENvbXBvbmVudChcIlNjZW5lTWFuYWdlclwiKS5vcGVuUHJvcEJ1eShcImhhbW1lclwiKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBlbHNle1xyXG4gICAgICAgICAgICAgICAgaWYoIXRoaXMuaGFtbWVyKXtcclxuICAgICAgICAgICAgICAgICAgICBjb25zdCB0aW1lc3RhbXAgPSBEYXRlLm5vdygpO1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuaGFtbWVyTWFzay5hY3RpdmUgPSB0cnVlO1xyXG5cclxuICAgICAgICAgICAgICAgICAgICB0aGlzLmhhbW1lciA9IHRydWU7XHJcbiAgICAgICAgICAgICAgICAgICAgY2MuZnguR2FtZUNvbmZpZy5HTV9JTkZPLmhhbW1lckFtb3VudCAtPSAxO1xyXG4gICAgICAgICAgICAgICAgICAgIGlmKGNjLmZ4LkdhbWVDb25maWcuR01fSU5GTy5oYW1tZXJBbW91bnQgPCAwKSAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgY2MuZnguR2FtZUNvbmZpZy5HTV9JTkZPLmhhbW1lckFtb3VudCA9IDA7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5oYW1tZXJMYWJlbC5zdHJpbmcgPSBjYy5meC5HYW1lQ29uZmlnLkdNX0lORk8uaGFtbWVyQW1vdW50LnRvU3RyaW5nKCk7XHJcbiAgICAgICAgICAgICAgICAgICAgbGV0IHByb3BJbmZvID0gY2MuZnguU3RvcmFnZU1lc3NhZ2UuZ2V0U3RvcmFnZShcInByb3BcIik7XHJcbiAgICAgICAgICAgICAgICAgICAgY29uc29sZS5sb2coXCLplKTlrZDpgZPlhbfkv6Hmga86XCIscHJvcEluZm8pO1xyXG4gICAgICAgICAgICAgICAgICAgIHByb3BJbmZvLmhhbW1lckFtb3VudCA9IGNjLmZ4LkdhbWVDb25maWcuR01fSU5GTy5oYW1tZXJBbW91bnQ7XHJcbiAgICAgICAgICAgICAgICAgICAgcHJvcEluZm8udGltZXN0YW1wID0gdGltZXN0YW1wO1xyXG4gICAgICAgICAgICAgICAgICAgIGNjLmZ4LlN0b3JhZ2VNZXNzYWdlLnNldFN0b3JhZ2UoXCJwcm9wXCIscHJvcEluZm8pO1xyXG4gICAgICAgICAgICAgICAgICAgIGNjLmZ4LkdhbWVUb29sLnNldFVzZXJQcm9wKDIwMDIsY2MuZnguR2FtZUNvbmZpZy5HTV9JTkZPLmhhbW1lckFtb3VudCwoZGF0YSk9PntcclxuICAgICAgICAgICAgICAgICAgICB9KVxyXG4gICAgICAgICAgICAgICAgICAgIGxldCBkYXRhID0ge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBpZDpcIjIwMDJcIixcclxuICAgICAgICAgICAgICAgICAgICAgICAgbnVtOi0xXHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIGNjLmZ4LkdhbWVUb29sLnNodXNodV9UcmFjayhcInJlc291cmNlX2Nvc3RcIixkYXRhKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIGVsc2UgTWluaUdhbWVTZGsuQVBJLnNob3dUb2FzdChcIumBk+WFt+S9v+eUqOS4re+8jOivt+eojeWQjuWGjeivlVwiKTtcclxuICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICB9XHJcblxyXG4gICAgfVxyXG4gXHJcbiAgICBidXlNYWdpYygpe1xyXG4gICAgICAgIGlmKGNjLmZ4LkdhbWVDb25maWcuR01fSU5GTy5jb2luIDwgMTUwMCl7XHJcbiAgICAgICAgICAgIE1pbmlHYW1lU2RrLkFQSS5zaG93VG9hc3QoXCLph5HluIHkuI3otrPvvIzml6Dms5XotK3kubDpgZPlhbdcIik7XHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcbiAgICAgICAgY2MuZnguR2FtZVRvb2wuYnV5UHJvcCgyMDAzLHRoaXMuaGFuZGxlQnV5U3VjY2Vzcy5iaW5kKHRoaXMsXCJtYWdpY0Ftb3VudFwiKSk7XHJcbiAgICB9XHJcblxyXG4gICAgYnV5SGFtbWVyKCl7XHJcbiAgICAgICAgaWYoY2MuZnguR2FtZUNvbmZpZy5HTV9JTkZPLmNvaW4gPCAxNTAwKXtcclxuICAgICAgICAgICAgTWluaUdhbWVTZGsuQVBJLnNob3dUb2FzdChcIumHkeW4geS4jei2s++8jOaXoOazlei0reS5sOmBk+WFt1wiKTtcclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuICAgICAgICBjYy5meC5HYW1lVG9vbC5idXlQcm9wKDIwMDIsIHRoaXMuaGFuZGxlQnV5U3VjY2Vzcy5iaW5kKHRoaXMsXCJoYW1tZXJBbW91bnRcIikpO1xyXG4gICAgfVxyXG5cclxuICAgIGJ1eUZyZWV6ZSgpe1xyXG4gICAgICAgIGlmKGNjLmZ4LkdhbWVDb25maWcuR01fSU5GTy5jb2luIDwgMTUwMCl7XHJcbiAgICAgICAgICAgIE1pbmlHYW1lU2RrLkFQSS5zaG93VG9hc3QoXCLph5HluIHkuI3otrPvvIzml6Dms5XotK3kubDpgZPlhbdcIik7XHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcbiAgICAgICAgY2MuZnguR2FtZVRvb2wuYnV5UHJvcCgyMDAxLHRoaXMuaGFuZGxlQnV5U3VjY2Vzcy5iaW5kKHRoaXMsXCJmcmVlemVBbW91bnRcIikpO1xyXG4gICAgfVxyXG5cclxuICAgIC8v5L2/55So6a2U5rOV5qOS6ZqP5py65raI6Zmk5Lik5Liq5pa55Z2XXHJcbiAgICB1c2VNYWdpYygpe1xyXG4gICAgICAgIGlmKHRoaXMubm9kZS5wYXJlbnQuZ2V0Q2hpbGRCeU5hbWUoXCJJY2VcIikuYWN0aXZlID09IHRydWUgfHwgdGhpcy5oYW1tZXIgPT0gdHJ1ZSBcclxuICAgICAgICB8fCB0aGlzLm1hZ2ljTWFzay5hY3RpdmU9PSB0cnVlIHx8IHRoaXMudGltZU51bWJlciA8PSAxKXtcclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuICAgICAgICBsZXQgbWFnaWNCdG4gPSB0aGlzLm5vZGUucGFyZW50LmdldENoaWxkQnlOYW1lKFwiQm90dG9tXCIpLmdldENoaWxkQnlOYW1lKFwibWFnaWNCdG5cIik7XHJcbiAgICAgICAgaWYobWFnaWNCdG4uZ2V0Q29tcG9uZW50KFwiYnRuQ29udHJvbFwiKS5fdG91Y2gpe1xyXG4gICAgICAgICAgICBtYWdpY0J0bi5nZXRDb21wb25lbnQoXCJidG5Db250cm9sXCIpLnNldFRvdWNoKGZhbHNlKTtcclxuICAgICAgICAgICAgaWYoY2MuZnguR2FtZUNvbmZpZy5HTV9JTkZPLm1hZ2ljQW1vdW50IDwgMSl7XHJcbiAgICAgICAgICAgICAgICBpZihjYy5meC5HYW1lQ29uZmlnLkdNX0lORk8uY29pbiA8IDE1MDApe1xyXG4gICAgICAgICAgICAgICAgICAgIE1pbmlHYW1lU2RrLkFQSS5zaG93VG9hc3QoXCLph5HluIHkuI3otrPvvIzml6Dms5XotK3kubDpgZPlhbdcIik7XHJcbiAgICAgICAgICAgICAgICAgICAgbWFnaWNCdG4uZ2V0Q29tcG9uZW50KFwiYnRuQ29udHJvbFwiKS5zZXRUb3VjaCh0cnVlKTtcclxuICAgICAgICAgICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB0aGlzLm5vZGUucGFyZW50LnBhcmVudC5nZXRDaGlsZEJ5TmFtZShcInByb3BXaW5kb3dcIikuYWN0aXZlID0gdHJ1ZTtcclxuICAgICAgICAgICAgICAgIHRoaXMubm9kZS5wYXJlbnQucGFyZW50LnBhcmVudC5nZXRDb21wb25lbnQoXCJTY2VuZU1hbmFnZXJcIikub3BlblByb3BCdXkoXCJtYWdpY1wiKTtcclxuICAgICAgICAgICAgICAgIC8vIE1pbmlHYW1lU2RrLkFQSS5zaG93VG9hc3QoXCLprZTms5Xmo5LmlbDph4/kuI3otrMs6Ieq5Yqo6LSt5Lmw6a2U5rOV5qOSXCIpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGVsc2V7XHJcbiAgICAgICAgICAgICAgICBjb25zdCB0aW1lc3RhbXAgPSBEYXRlLm5vdygpO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5tYWdpY01hc2suYWN0aXZlID0gdHJ1ZTtcclxuICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMubWFnaWNNYXNrLmFjdGl2ZSA9IGZhbHNlO1xyXG4gICAgICAgICAgICAgICAgICAgIG1hZ2ljQnRuLmdldENvbXBvbmVudChcImJ0bkNvbnRyb2xcIikuc2V0VG91Y2godHJ1ZSk7XHJcbiAgICAgICAgICAgICAgICB9LCAxMDAwKTtcclxuIFxyXG4gICAgICAgICAgICAgICAgY2MuZnguR2FtZUNvbmZpZy5HTV9JTkZPLm1hZ2ljQW1vdW50IC09IDE7XHJcbiAgICAgICAgICAgICAgICBpZihjYy5meC5HYW1lQ29uZmlnLkdNX0lORk8ubWFnaWNBbW91bnQgPCAwKSAgICBcclxuICAgICAgICAgICAgICAgICAgICBjYy5meC5HYW1lQ29uZmlnLkdNX0lORk8ubWFnaWNBbW91bnQgPSAwO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5tYWdpY0xhYmVsLnN0cmluZyA9IGNjLmZ4LkdhbWVDb25maWcuR01fSU5GTy5tYWdpY0Ftb3VudC50b1N0cmluZygpO1xyXG4gICAgICAgICAgICAgICAgbGV0IHByb3BJbmZvID0gY2MuZnguU3RvcmFnZU1lc3NhZ2UuZ2V0U3RvcmFnZShcInByb3BcIik7XHJcbiAgICAgICAgICAgICAgICBwcm9wSW5mby5tYWdpY0Ftb3VudCA9IGNjLmZ4LkdhbWVDb25maWcuR01fSU5GTy5tYWdpY0Ftb3VudDtcclxuICAgICAgICAgICAgICAgIHByb3BJbmZvLnRpbWVzdGFtcCA9IHRpbWVzdGFtcDtcclxuICAgICAgICAgICAgICAgIGNjLmZ4LlN0b3JhZ2VNZXNzYWdlLnNldFN0b3JhZ2UoXCJwcm9wXCIscHJvcEluZm8pO1xyXG4gICAgICAgICAgICAgICAgY2MuZnguR2FtZVRvb2wuc2V0VXNlclByb3AoMjAwMyxjYy5meC5HYW1lQ29uZmlnLkdNX0lORk8ubWFnaWNBbW91bnQsKGRhdGEpPT57XHJcbiAgICAgICAgICAgICAgICB9KVxyXG4gICAgICAgICAgICAgICAgbGV0IGRhdGEgPSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGlkOlwiMjAwM1wiLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBudW06LTFcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBjYy5meC5HYW1lVG9vbC5zaHVzaHVfVHJhY2soXCJyZXNvdXJjZV9jb3N0XCIsZGF0YSk7XHJcbiAgICAgICAgICAgICAgICBsZXQgbm9tYWxBcnJheSA9IFtdO1xyXG4gICAgICAgICAgICAgICAgLy8gdGhpcy5tYWdpY0J0bi5ub2RlLmFjdGl2ZSA9IGZhbHNlO1xyXG4gICAgICAgICAgICAgICAgZm9yKGxldCBpID0wOyBpPHRoaXMuYmxvY2tzLmxlbmd0aDsgaSsrKXtcclxuICAgICAgICAgICAgICAgICAgICAvLyBjb25zb2xlLmxvZyhcIuaWueWdl+exu+Wei1wiLHRoaXMuYmxvY2tzW2ldLmdldENvbXBvbmVudChcIkJsb2NrXCIpLnR5cGUpO1xyXG4gICAgICAgICAgICAgICAgICAgIGlmKHRoaXMuYmxvY2tzW2ldLmdldENvbXBvbmVudChcIkJsb2NrXCIpLnR5cGUgPT0gMyl7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMubG9hY2tBcnJheS5wdXNoKHRoaXMuYmxvY2tzW2ldKTtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgZWxzZSBpZih0aGlzLmJsb2Nrc1tpXS5nZXRDb21wb25lbnQoXCJCbG9ja1wiKS50eXBlID09IDQpe1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmZyZWV6ZUFycmF5LnB1c2godGhpcy5ibG9ja3NbaV0pO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICBlbHNlIGlmKHRoaXMuYmxvY2tzW2ldLmdldENvbXBvbmVudChcIkJsb2NrXCIpLnR5cGUgPT0gMTApe1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBpZih0aGlzLmJsb2Nrc1tpXS5nZXRDb21wb25lbnQoXCJCbG9ja1wiKS5ibG9ja19JbmZvLm5vZGUpe1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9tYWxBcnJheS5wdXNoKHRoaXMuYmxvY2tzW2ldLmdldENvbXBvbmVudChcIkJsb2NrXCIpLmJsb2NrX0luZm8ubm9kZSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSBub21hbEFycmF5LnB1c2godGhpcy5ibG9ja3NbaV0pO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICBlbHNle1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBub21hbEFycmF5LnB1c2godGhpcy5ibG9ja3NbaV0pO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIGlmKG5vbWFsQXJyYXkubGVuZ3RoID4gMSl7XHJcbiAgICAgICAgICAgICAgICAgICAgbm9tYWxBcnJheSA9IGNjLmZ4LkdhbWVUb29sLnNodWZmbGVBcnJheShub21hbEFycmF5KTtcclxuICAgICAgICAgICAgICAgICAgICBub21hbEFycmF5WzBdLmdldENvbXBvbmVudChcIkJsb2NrXCIpLmVsaW1pbmF0ZSgpO1xyXG4gICAgICAgICAgICAgICAgICAgIGxldCB0aW1lID0gMDtcclxuICAgICAgICAgICAgICAgICAgICBpZihub21hbEFycmF5WzBdLmdldENvbXBvbmVudChcIkJsb2NrXCIpLnR5cGUgPT0gMSB8fCBub21hbEFycmF5WzBdLmdldENvbXBvbmVudChcIkJsb2NrXCIpLnR5cGUgPT0gOSl7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHRpbWUgPSAyMDA7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIGlmKHRpbWUgPiAwKXtcclxuICAgICAgICAgICAgICAgICAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBub21hbEFycmF5WzFdLmdldENvbXBvbmVudChcIkJsb2NrXCIpLmVsaW1pbmF0ZSgpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB9LCB0aW1lKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICBlbHNle1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBub21hbEFycmF5WzFdLmdldENvbXBvbmVudChcIkJsb2NrXCIpLmVsaW1pbmF0ZSgpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgZWxzZSBpZihub21hbEFycmF5Lmxlbmd0aCA9PSAxKXtcclxuICAgICAgICAgICAgICAgICAgICBub21hbEFycmF5WzBdLmdldENvbXBvbmVudChcIkJsb2NrXCIpLmVsaW1pbmF0ZSgpO1xyXG4gICAgICAgICAgICAgICAgICAgIGxldCB0aW1lID0gMDtcclxuICAgICAgICAgICAgICAgICAgICBpZihub21hbEFycmF5WzBdLmdldENvbXBvbmVudChcIkJsb2NrXCIpLnR5cGUgPT0gMSB8fCBub21hbEFycmF5WzBdLmdldENvbXBvbmVudChcIkJsb2NrXCIpLnR5cGUgPT0gOSl7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHRpbWUgPSAyMDA7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBpZih0aGlzLmZyZWV6ZUFycmF5Lmxlbmd0aCA9PSAwICYmIHRoaXMubG9hY2tBcnJheS5sZW5ndGggPT0gMCl7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBjb25zb2xlLmxvZyhcIuWPquWJqeS4i+S4gOS4quWdl+mBk+WFt+S9v+eUqOWujOavlVwiKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICBlbHNle1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYodGhpcy5sb2Fja0FycmF5Lmxlbmd0aCAhPSAwKXtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBjb25zb2xlLmxvZyhcIua2iOmZpOS4gOS4quaZrumAmuWdl+WQju+8jOa2iOmZpOS4gOS4quW4pumUgeWdl1wiKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmxvYWNrQXJyYXlbMF0uZ2V0Q29tcG9uZW50KFwiQmxvY2tcIikuZWxpbWluYXRlKCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSBpZih0aGlzLmZyZWV6ZUFycmF5Lmxlbmd0aCE9IDApe1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGNvbnNvbGUubG9nKFwi5raI6Zmk5LiA5Liq5pmu6YCa5Z2X5ZCO77yM5raI6Zmk5LiA5Liq5Ya757uT5Z2XXCIpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuZnJlZXplQXJyYXlbMF0uZ2V0Q29tcG9uZW50KFwiQmxvY2tcIikuZWxpbWluYXRlKCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuOyAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICB9LCAyMDArdGltZSk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBlbHNle1xyXG4gICAgICAgICAgICAgICAgICAgIGxldCBjb3VudCA9IDI7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYodGhpcy5sb2Fja0FycmF5Lmxlbmd0aCE9IDApe1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBmb3IobGV0IGk9MDsgaTx0aGlzLmxvYWNrQXJyYXkubGVuZ3RoOyBpKyspe1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gY29uc29sZS5sb2coXCLmsqHmnInmma7pgJrlv6vvvIzprZTms5XmtojpmaTkuIDkuKrluKbplIHlnZdcIik7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmxvYWNrQXJyYXlbaV0uZ2V0Q29tcG9uZW50KFwiQmxvY2tcIikuZWxpbWluYXRlKCk7IFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY291bnQgLT0gMTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmKGNvdW50ID09IDApe1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOyBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmKGNvdW50ICE9IDApe1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yKGxldCBpPTA7IGk8dGhpcy5mcmVlemVBcnJheS5sZW5ndGg7IGkrKyl7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gY29uc29sZS5sb2coXCLmsqHmnInmma7pgJrlv6vvvIzprZTms5XmtojpmaTkuIDkuKrlhrvnu5PlnZdcIik7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gdGhpcy5mcmVlemVBcnJheVtpXS5nZXRDb21wb25lbnQoXCJCbG9ja1wiKS5lbGltaW5hdGUoKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb3VudCAtPSAxO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmKGNvdW50ID09IDApe1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IFxyXG4gICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgfSwgMTAwKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICAvL+aMieS4i+aaguWBnOaMiemSrlxyXG4gICAgdXNlUGF1c2UoKXtcclxuICAgICAgICBpZih0aGlzLnBhdXNlKXtcclxuICAgICAgICAgICAgdGhpcy5wYXVzZSA9IGZhbHNlO1xyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNle1xyXG4gICAgICAgICAgICB0aGlzLnBhdXNlID0gdHJ1ZTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG5cclxuXHJcbiAgICAvL+agueaNruWFs+WNoeiuvue9ruWcsOWbvuWkp+Wwj1xyXG4gICAgc2V0TWFwSW5mbygpe1xyXG4gICAgICAgIGxldCB3aWR0aCA9IDA7XHJcbiAgICAgICAgaWYodGhpcy5tYXBXaWR0aCA8IDEwKXtcclxuICAgICAgICAgICAgd2lkdGggPSAwLjI7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2UgaWYodGhpcy5tYXBXaWR0aCA8IDE3KXtcclxuICAgICAgICAgICAgd2lkdGggPSAwLjE1IC0gKHRoaXMubWFwV2lkdGgtMTEpKjAuMDE7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICB0aGlzLm5vZGUuc2NhbGUgPSAxLjYgKyAoNiAtIHRoaXMubWFwV2lkdGgpICogd2lkdGg7XHJcblxyXG4gICAgICAgIGlmKHRoaXMubWFwV2lkdGggPT0gOCAmJiB0aGlzLm1hcEhlaWdodCA+IDEzKXtcclxuICAgICAgICAgICAgdGhpcy5ub2RlLnNjYWxlID0gMTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIC8vIHRoaXMubm9kZS5zY2FsZSA9IDE7XHJcbiAgICAgICAgY2MuZnguR2FtZUNvbmZpZy5HTV9JTkZPLnNjYWxlID0gdGhpcy5ub2RlLnNjYWxlO1xyXG4gICAgICAgIC8vIHRoaXMubm9kZS5zY2FsZSA9IDAuNTtcclxuICAgICAgICAvLyBjb25zb2xlLmxvZyh0aGlzLm5vZGUuc2NhbGUpO1xyXG4gICAgICAgIC8vIHRoaXMubm9kZS5zY2FsZSA9IDE7XHJcbiAgICB9XHJcblxyXG4gICAgLy/liJvlu7rpl6jnmoTnspLlrZDnibnmlYhcclxuICAgIGNyZWF0ZVBhcnRpY2xlKGJsb2NrLGpnKXtcclxuICAgICAgICBsZXQgcGFydGljbGUgPSBjYy5pbnN0YW50aWF0ZShNYXBDb25yb2xlci5faW5zdGFuY2UuQmxvY2tfUHJvcFs5XSk7XHJcbiAgICAgICAgcGFydGljbGUucGFyZW50ID0gdGhpcy5ub2RlO1xyXG4gICAgICAgIHBhcnRpY2xlLnpJbmRleCA9IDEwMDA7XHJcbiAgICAgICAgbGV0IHdpZHRoID0gTWF0aC5mbG9vcihibG9jay53aWR0aCAvIDEyMCk7XHJcbiAgICAgICAgbGV0IGhlaWdodCA9IE1hdGguZmxvb3IoYmxvY2suaGVpZ2h0IC8gMTIwKTtcclxuICAgICAgICBsZXQgbmFtZSA9IFwiXCI7XHJcblxyXG4gICAgICAgIGlmKGpnID09IDAgfHwgamcgPT0gMSl7XHJcbiAgICAgICAgICAgIGxldCB5ID0gYmxvY2sueSArIGJsb2NrLmhlaWdodDtcclxuICAgICAgICAgICAgbGV0IHggPSBibG9jay54IC0gYmxvY2sud2lkdGgvMjtcclxuICAgICAgICAgICAgbmFtZSA9IFwidG9wX1wiICsgd2lkdGggKyBcIl9cIiArIGhlaWdodDtcclxuICAgICAgICAgICAgaWYoamcgPT0gMSl7XHJcbiAgICAgICAgICAgICAgICBuYW1lID0gXCJib3RfXCIgKyB3aWR0aCArIFwiX1wiICsgaGVpZ2h0O1xyXG4gICAgICAgICAgICAgICAgeSA9IGJsb2NrLnk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgaWYoYmxvY2suYW5jaG9yWCA9PSAwLjUpe1xyXG4gICAgICAgICAgICAgICAgeCA9IGJsb2NrLng7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgZWxzZSBpZihibG9jay5hbmNob3JYID09IDAuMzMpe1xyXG4gICAgICAgICAgICAgICB4ID0gYmxvY2sueCArIGJsb2NrLndpZHRoKigwLjUtMC4zMyk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgZWxzZSBpZihibG9jay5hbmNob3JYID09IDAuNjYpe1xyXG4gICAgICAgICAgICAgICAgeCA9IGJsb2NrLnggKyBibG9jay53aWR0aCooMC41LTAuNjYpOyBcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBwYXJ0aWNsZS5zZXRQb3NpdGlvbih4LCB5KTsgXHJcbiAgICAgICAgfSBcclxuICAgICAgICBlbHNlIGlmKGpnID09IDIgfHwgamcgPT0gMyl7XHJcbiAgICAgICAgICAgIG5hbWUgPSBcImxlZnRfXCIgKyBoZWlnaHQgKyBcIl9cIiArIHdpZHRoO1xyXG4gICAgICAgICAgICBsZXQgeCA9IGJsb2NrLnggLSBibG9jay53aWR0aDtcclxuICAgICAgICAgICAgbGV0IHkgPSBibG9jay55ICsgYmxvY2suaGVpZ2h0LzI7XHJcbiAgICAgICAgICAgIGlmKGJsb2NrLmFuY2hvclggPT0gMC41KXtcclxuICAgICAgICAgICAgICAgIHggPSBibG9jay54IC0gYmxvY2sud2lkdGgvMjtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBlbHNlIGlmKGJsb2NrLmFuY2hvclggPT0gMC4zMyl7XHJcbiAgICAgICAgICAgICAgIHggPSBibG9jay54IC0gYmxvY2sud2lkdGgqMC4zMztcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBlbHNlIGlmKGJsb2NrLmFuY2hvclggPT0gMC42Nil7XHJcbiAgICAgICAgICAgICAgICB4ID0gYmxvY2sueCArIGJsb2NrLndpZHRoKjAuNjY7IFxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGlmKGpnID09IDMpe1xyXG4gICAgICAgICAgICAgICAgbmFtZSA9IFwicmlnaHRfXCIgKyBoZWlnaHQgKyBcIl9cIiArIHdpZHRoO1xyXG4gICAgICAgICAgICAgICAgeCA9IGJsb2NrLng7XHJcbiAgICAgICAgICAgICAgICBpZihibG9jay5hbmNob3JYID09IDAuNSl7XHJcbiAgICAgICAgICAgICAgICAgICAgeCA9IGJsb2NrLnggKyBibG9jay53aWR0aC8yO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgZWxzZSBpZihibG9jay5hbmNob3JYID09IDAuMzMpe1xyXG4gICAgICAgICAgICAgICAgICAgeCA9IGJsb2NrLnggKyBibG9jay53aWR0aCowLjY2O1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgZWxzZSBpZihibG9jay5hbmNob3JYID09IDAuNjYpe1xyXG4gICAgICAgICAgICAgICAgICAgIHggPSBibG9jay54ICsgYmxvY2sud2lkdGgqMC4zMzsgXHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgIHBhcnRpY2xlLnNldFBvc2l0aW9uKHgsIHkpOyBcclxuICAgICAgICB9IFxyXG5cclxuICAgICAgICBsZXQgcGFydGljbGVOb2RlID0gIHBhcnRpY2xlLmdldENoaWxkQnlOYW1lKG5hbWUpO1xyXG4gICAgICAgIGxldCBjb2xvciA9IGJsb2NrLmdldENvbXBvbmVudChcIkJsb2NrXCIpLmNvbG9yIC0gMTtcclxuXHJcbiAgICAgICAgcGFydGljbGVOb2RlLmdldENvbXBvbmVudChjYy5QYXJ0aWNsZVN5c3RlbSkuc3ByaXRlRnJhbWUgPSBwYXJ0aWNsZS5nZXRDb21wb25lbnQoXCJSZWR1Y2VcIikuQmxvY2tfQ29sb3JbY29sb3JdO1xyXG4gICAgICAgIHBhcnRpY2xlTm9kZS5hY3RpdmUgPSB0cnVlO1xyXG4gICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICAgICAgICBjYy50d2VlbihwYXJ0aWNsZSlcclxuICAgICAgICAgICAgLnRvKDIsIHtvcGFjaXR5OiAwfSlcclxuICAgICAgICAgICAgLmNhbGwoKCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgcGFydGljbGUuZGVzdHJveSgpOyBcclxuICAgICAgICAgICAgfSlcclxuICAgICAgICAgICAgLnN0YXJ0KCk7XHJcbiAgICAgICAgfSwgMTIwMCk7XHJcbiAgICB9XHJcblxyXG4gICAgcmVtb3ZlT25lQmxvY2soKSB7XHJcbiAgICAgICAgLy8g56e76Zmk5omA5pyJ5pa55Z2XXHJcbiAgICAgICAgZm9yKGxldCBpID0wIDsgaTx0aGlzLmJsb2Nrcy5sZW5ndGg7IGkrKyl7XHJcbiAgICAgICAgICAgIGlmKHRoaXMuYmxvY2tzW2ldLm9wYWNpdHkgPT0gMCl7XHJcbiAgICAgICAgICAgICAgICAgdGhpcy5ibG9ja3NbaV0uZGVzdHJveSgpO1xyXG4gICAgICAgICAgICAgICAgIHRoaXMuYmxvY2tzLnNwbGljZShpLDEpO1xyXG4gICAgICAgICAgICB9IFxyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBcclxuXHJcbiAgICB1cGRhdGUgKGR0KSB7XHJcblxyXG4gICAgfVxyXG59XHJcbiJdfQ== -//------QC-SOURCE-SPLIT------ - - (function() { - var nodeEnv = typeof require !== 'undefined' && typeof process !== 'undefined'; - var __module = nodeEnv ? module : {exports:{}}; - var __filename = 'preview-scripts/assets/Script/peizhi.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, '7d800jRKkRGfqSS3fhSet26', 'peizhi'); -// Script/peizhi.ts - -"use strict"; -var __extends = (this && this.__extends) || (function () { - var extendStatics = function (d, b) { - extendStatics = Object.setPrototypeOf || - ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) || - function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; }; - return extendStatics(d, b); - }; - return function (d, b) { - extendStatics(d, b); - function __() { this.constructor = d; } - d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); - }; -})(); -var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) { - var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; - if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc); - else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; - return c > 3 && r && Object.defineProperty(target, key, r), r; -}; -Object.defineProperty(exports, "__esModule", { value: true }); -var _a = cc._decorator, ccclass = _a.ccclass, property = _a.property, requireComponent = _a.requireComponent; -var NewClass = /** @class */ (function (_super) { - __extends(NewClass, _super); - function NewClass() { - var _this = _super !== null && _super.apply(this, arguments) || this; - _this.node1 = null; - _this.node2 = null; - _this.node3 = null; - _this.localTest = false; - _this.clientTestVersion = "1.0.0"; - _this.testVersion = null; - return _this; - // 3月17日 - 3月21日 工作完成内容 - // 1:游戏框架搭建 - // 2:制作18个基础方块预制体 (方块可编辑颜色与道具和状态) - // 3:完成地图的搭建,可配置8*8以内,任意组合,包括可缺口和障碍物配置 - // 4:完成地图墙面建立,根据 ↑3上面构建的地图自动生成墙体。 - // 5:做完方块的基础移动,跟随手指,遇到方块或者墙壁或者障碍物阻碍移动。 - // 6:方块的自动落点做完11个基础方块的(未做完还差11个) - // 3月24日 - 3月28日 预计完成目标 - // 1:完成全部方块的落点。 - // 2:完成门的搭建,门可选颜色,可选开关或者星星等特殊状态 - // 3:完成方块通过门的游戏逻辑,使游戏可以最基础运行玩起来 - // 4:出5关版本,配合小白备案审核。 - // 5:根据方块,地图,以及道具,制作地图编辑器 (方块和地图制作的时候都已经考虑到编辑器的需求了) - // 优先制作,后续开发拓展玩法功能时,小白可同步进行制作关卡。 - } - NewClass.prototype.start = function () { - // cc.fx.AudioManager.Instance.init(); - // this.testVersion.string = this.clientTestVersion; - // cc.director.loadScene("GameScene"); - // cc.director.preloadScene("GameScene", ()=>{ - // // debugger; - // }) - }; - //判断来源 - NewClass.prototype.containsTrain = function (str) { - return /from=train/i.test(str); - }; - //开始游戏,跳转至引导页面 - NewClass.prototype.startGame = function () { - cc.director.loadScene("GameScene"); - // cc.director.loadScene("GuideScene"); - }; - //备用,用来测试跳转 指定关卡 - NewClass.prototype.clickBtn = function (event, data) { - cc.fx.GameConfig.GM_INFO.custom = parseInt(data); - cc.director.loadScene("GameScene"); - }; - //打开排行榜 - NewClass.prototype.openRank = function () { - cc.director.loadScene("RankScene"); - }; - NewClass.prototype.update = function (dt) { - }; - __decorate([ - property(cc.Node) - ], NewClass.prototype, "node1", void 0); - __decorate([ - property(cc.Node) - ], NewClass.prototype, "node2", void 0); - __decorate([ - property(cc.Node) - ], NewClass.prototype, "node3", void 0); - __decorate([ - property(false) - ], NewClass.prototype, "localTest", void 0); - __decorate([ - property("") - ], NewClass.prototype, "clientTestVersion", void 0); - __decorate([ - property(cc.Label) - ], NewClass.prototype, "testVersion", void 0); - NewClass = __decorate([ - ccclass - ], NewClass); - return NewClass; -}(cc.Component)); -exports.default = NewClass; - -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,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImFzc2V0c1xcU2NyaXB0XFxwZWl6aGkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBRU0sSUFBQSxLQUF3QyxFQUFFLENBQUMsVUFBVSxFQUFwRCxPQUFPLGFBQUEsRUFBRSxRQUFRLGNBQUEsRUFBRSxnQkFBZ0Isc0JBQWlCLENBQUM7QUFHNUQ7SUFBc0MsNEJBQVk7SUFBbEQ7UUFBQSxxRUE0RUM7UUF4RUcsV0FBSyxHQUFZLElBQUksQ0FBQztRQUd0QixXQUFLLEdBQVksSUFBSSxDQUFDO1FBR3RCLFdBQUssR0FBWSxJQUFJLENBQUM7UUFHdEIsZUFBUyxHQUFZLEtBQUssQ0FBQztRQUczQix1QkFBaUIsR0FBVyxPQUFPLENBQUM7UUFHcEMsaUJBQVcsR0FBYSxJQUFJLENBQUM7O1FBd0NqQywyQkFBMkI7UUFFM0IsV0FBVztRQUNYLGlDQUFpQztRQUNqQyxzQ0FBc0M7UUFDdEMsaUNBQWlDO1FBQ2pDLHNDQUFzQztRQUN0QyxnQ0FBZ0M7UUFFaEMsdUJBQXVCO1FBRXZCLGVBQWU7UUFDZiwrQkFBK0I7UUFDL0IsK0JBQStCO1FBQy9CLG9CQUFvQjtRQUNwQixvREFBb0Q7UUFDcEQsaUNBQWlDO0lBQ2pDLENBQUM7SUF2REcsd0JBQUssR0FBTDtRQUVJLHNDQUFzQztRQUN0QyxvREFBb0Q7UUFFcEQsc0NBQXNDO1FBRXRDLDhDQUE4QztRQUM5QyxtQkFBbUI7UUFFbkIsS0FBSztJQUNULENBQUM7SUFFRCxNQUFNO0lBQ04sZ0NBQWEsR0FBYixVQUFjLEdBQUc7UUFFYixPQUFPLGFBQWEsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDbkMsQ0FBQztJQUVELGNBQWM7SUFDZCw0QkFBUyxHQUFUO1FBQ0ksRUFBRSxDQUFDLFFBQVEsQ0FBQyxTQUFTLENBQUMsV0FBVyxDQUFDLENBQUM7UUFDbkMsdUNBQXVDO0lBQzNDLENBQUM7SUFDRCxnQkFBZ0I7SUFDaEIsMkJBQVEsR0FBUixVQUFTLEtBQUssRUFBQyxJQUFJO1FBQ2YsRUFBRSxDQUFDLEVBQUUsQ0FBQyxVQUFVLENBQUMsT0FBTyxDQUFDLE1BQU0sR0FBRyxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDakQsRUFBRSxDQUFDLFFBQVEsQ0FBQyxTQUFTLENBQUMsV0FBVyxDQUFDLENBQUM7SUFDdkMsQ0FBQztJQUNELE9BQU87SUFDUCwyQkFBUSxHQUFSO1FBQ0ksRUFBRSxDQUFDLFFBQVEsQ0FBQyxTQUFTLENBQUMsV0FBVyxDQUFDLENBQUM7SUFDdkMsQ0FBQztJQUdTLHlCQUFNLEdBQWhCLFVBQWlCLEVBQVU7SUFDM0IsQ0FBQztJQXJERDtRQURDLFFBQVEsQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDOzJDQUNJO0lBR3RCO1FBREMsUUFBUSxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUM7MkNBQ0k7SUFHdEI7UUFEQyxRQUFRLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQzsyQ0FDSTtJQUd0QjtRQURDLFFBQVEsQ0FBQyxLQUFLLENBQUM7K0NBQ1c7SUFHM0I7UUFEQyxRQUFRLENBQUMsRUFBRSxDQUFDO3VEQUN1QjtJQUdwQztRQURDLFFBQVEsQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDO2lEQUNVO0lBbkJaLFFBQVE7UUFENUIsT0FBTztPQUNhLFFBQVEsQ0E0RTVCO0lBQUQsZUFBQztDQTVFRCxBQTRFQyxDQTVFcUMsRUFBRSxDQUFDLFNBQVMsR0E0RWpEO2tCQTVFb0IsUUFBUSIsImZpbGUiOiIiLCJzb3VyY2VSb290IjoiLyIsInNvdXJjZXNDb250ZW50IjpbIlxyXG5cclxuY29uc3Qge2NjY2xhc3MsIHByb3BlcnR5LCByZXF1aXJlQ29tcG9uZW50fSA9IGNjLl9kZWNvcmF0b3I7XHJcblxyXG5AY2NjbGFzc1xyXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBOZXdDbGFzcyBleHRlbmRzIGNjLkNvbXBvbmVudCB7XHJcblxyXG5cclxuICAgIEBwcm9wZXJ0eShjYy5Ob2RlKVxyXG4gICAgbm9kZTE6IGNjLk5vZGUgPSBudWxsO1xyXG5cclxuICAgIEBwcm9wZXJ0eShjYy5Ob2RlKVxyXG4gICAgbm9kZTI6IGNjLk5vZGUgPSBudWxsO1xyXG5cclxuICAgIEBwcm9wZXJ0eShjYy5Ob2RlKVxyXG4gICAgbm9kZTM6IGNjLk5vZGUgPSBudWxsO1xyXG5cclxuICAgIEBwcm9wZXJ0eShmYWxzZSlcclxuICAgIGxvY2FsVGVzdDogYm9vbGVhbiA9IGZhbHNlO1xyXG5cclxuICAgIEBwcm9wZXJ0eShcIlwiKVxyXG4gICAgY2xpZW50VGVzdFZlcnNpb246IHN0cmluZyA9IFwiMS4wLjBcIjtcclxuXHJcbiAgICBAcHJvcGVydHkoY2MuTGFiZWwpXHJcbiAgICB0ZXN0VmVyc2lvbjogY2MuTGFiZWwgPSBudWxsO1xyXG5cclxuICAgIHN0YXJ0ICgpIHtcclxuXHJcbiAgICAgICAgLy8gY2MuZnguQXVkaW9NYW5hZ2VyLkluc3RhbmNlLmluaXQoKTtcclxuICAgICAgICAvLyB0aGlzLnRlc3RWZXJzaW9uLnN0cmluZyA9IHRoaXMuY2xpZW50VGVzdFZlcnNpb247XHJcblxyXG4gICAgICAgIC8vIGNjLmRpcmVjdG9yLmxvYWRTY2VuZShcIkdhbWVTY2VuZVwiKTtcclxuXHJcbiAgICAgICAgLy8gY2MuZGlyZWN0b3IucHJlbG9hZFNjZW5lKFwiR2FtZVNjZW5lXCIsICgpPT57XHJcbiAgICAgICAgLy8gICAgIC8vIGRlYnVnZ2VyO1xyXG4gICAgICAgICBcclxuICAgICAgICAvLyB9KVxyXG4gICAgfVxyXG5cclxuICAgIC8v5Yik5pat5p2l5rqQXHJcbiAgICBjb250YWluc1RyYWluKHN0cikge1xyXG4gICAgXHJcbiAgICAgICAgcmV0dXJuIC9mcm9tPXRyYWluL2kudGVzdChzdHIpO1xyXG4gICAgfVxyXG5cclxuICAgIC8v5byA5aeL5ri45oiP77yM6Lez6L2s6Iez5byV5a+86aG16Z2iXHJcbiAgICBzdGFydEdhbWUoKXtcclxuICAgICAgICBjYy5kaXJlY3Rvci5sb2FkU2NlbmUoXCJHYW1lU2NlbmVcIik7XHJcbiAgICAgICAgLy8gY2MuZGlyZWN0b3IubG9hZFNjZW5lKFwiR3VpZGVTY2VuZVwiKTtcclxuICAgIH1cclxuICAgIC8v5aSH55So77yM55So5p2l5rWL6K+V6Lez6L2sIOaMh+WumuWFs+WNoVxyXG4gICAgY2xpY2tCdG4oZXZlbnQsZGF0YSl7XHJcbiAgICAgICAgY2MuZnguR2FtZUNvbmZpZy5HTV9JTkZPLmN1c3RvbSA9IHBhcnNlSW50KGRhdGEpO1xyXG4gICAgICAgIGNjLmRpcmVjdG9yLmxvYWRTY2VuZShcIkdhbWVTY2VuZVwiKTtcclxuICAgIH0gICBcclxuICAgIC8v5omT5byA5o6S6KGM5qacXHJcbiAgICBvcGVuUmFuaygpe1xyXG4gICAgICAgIGNjLmRpcmVjdG9yLmxvYWRTY2VuZShcIlJhbmtTY2VuZVwiKTtcclxuICAgIH1cclxuXHJcbiAgICBcclxuICAgIHByb3RlY3RlZCB1cGRhdGUoZHQ6IG51bWJlcik6IHZvaWQge1xyXG4gICAgfVxyXG4gICAgXHJcbi8vICAgICAz5pyIMTfml6UgLSAz5pyIMjHml6Ug5bel5L2c5a6M5oiQ5YaF5a65XHJcblxyXG4vLyAx77ya5ri45oiP5qGG5p625pCt5bu6XHJcbi8vIDLvvJrliLbkvZwxOOS4quWfuuehgOaWueWdl+mihOWItuS9kyAo5pa55Z2X5Y+v57yW6L6R6aKc6Imy5LiO6YGT5YW35ZKM54q25oCBKVxyXG4vLyAz77ya5a6M5oiQ5Zyw5Zu+55qE5pCt5bu677yM5Y+v6YWN572uOCo45Lul5YaF77yM5Lu75oSP57uE5ZCI77yM5YyF5ous5Y+v57y65Y+j5ZKM6Zqc56KN54mp6YWN572uXHJcbi8vIDTvvJrlrozmiJDlnLDlm77lopnpnaLlu7rnq4vvvIzmoLnmja4g4oaRM+S4iumdouaehOW7uueahOWcsOWbvuiHquWKqOeUn+aIkOWimeS9k+OAglxyXG4vLyA177ya5YGa5a6M5pa55Z2X55qE5Z+656GA56e75Yqo77yM6Lef6ZqP5omL5oyH77yM6YGH5Yiw5pa55Z2X5oiW6ICF5aKZ5aOB5oiW6ICF6Zqc56KN54mp6Zi756KN56e75Yqo44CCXHJcbi8vIDbvvJrmlrnlnZfnmoToh6rliqjokL3ngrnlgZrlrowxMeS4quWfuuehgOaWueWdl+eahO+8iOacquWBmuWujOi/mOW3rjEx5Liq77yJXHJcblxyXG4vLyAz5pyIMjTml6UgLSAz5pyIMjjml6Ug6aKE6K6h5a6M5oiQ55uu5qCHXHJcblxyXG4vLyAx77ya5a6M5oiQ5YWo6YOo5pa55Z2X55qE6JC954K544CCXHJcbi8vIDLvvJrlrozmiJDpl6jnmoTmkK3lu7rvvIzpl6jlj6/pgInpopzoibLvvIzlj6/pgInlvIDlhbPmiJbogIXmmJ/mmJ/nrYnnibnmrornirbmgIFcclxuLy8gM++8muWujOaIkOaWueWdl+mAmui/h+mXqOeahOa4uOaIj+mAu+i+ke+8jOS9v+a4uOaIj+WPr+S7peacgOWfuuehgOi/kOihjOeOqei1t+adpVxyXG4vLyA077ya5Ye6NeWFs+eJiOacrO+8jOmFjeWQiOWwj+eZveWkh+ahiOWuoeaguOOAglxyXG4vLyA177ya5qC55o2u5pa55Z2X77yM5Zyw5Zu+77yM5Lul5Y+K6YGT5YW377yM5Yi25L2c5Zyw5Zu+57yW6L6R5ZmoICjmlrnlnZflkozlnLDlm77liLbkvZznmoTml7blgJnpg73lt7Lnu4/ogIPomZHliLDnvJbovpHlmajnmoTpnIDmsYLkuoYpIFxyXG4vLyBcdOS8mOWFiOWItuS9nO+8jOWQjue7reW8gOWPkeaLk+WxleeOqeazleWKn+iDveaXtu+8jOWwj+eZveWPr+WQjOatpei/m+ihjOWItuS9nOWFs+WNoeOAglxyXG59XHJcbiJdfQ== -//------QC-SOURCE-SPLIT------ - - (function() { - var nodeEnv = typeof require !== 'undefined' && typeof process !== 'undefined'; - var __module = nodeEnv ? module : {exports:{}}; - var __filename = 'preview-scripts/assets/Script/Reduce.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, 'ca599IU5hFEYYrzoN59YOpT', 'Reduce'); -// Script/Reduce.ts - -"use strict"; -// Learn TypeScript: -// - https://docs.cocos.com/creator/manual/en/scripting/typescript.html -// Learn Attribute: -// - https://docs.cocos.com/creator/manual/en/scripting/reference/attributes.html -// Learn life-cycle callbacks: -// - https://docs.cocos.com/creator/manual/en/scripting/life-cycle-callbacks.html -var __extends = (this && this.__extends) || (function () { - var extendStatics = function (d, b) { - extendStatics = Object.setPrototypeOf || - ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) || - function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; }; - return extendStatics(d, b); - }; - return function (d, b) { - extendStatics(d, b); - function __() { this.constructor = d; } - d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); - }; -})(); -var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) { - var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; - if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc); - else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; - return c > 3 && r && Object.defineProperty(target, key, r), r; -}; -Object.defineProperty(exports, "__esModule", { value: true }); -var _a = cc._decorator, ccclass = _a.ccclass, property = _a.property; -var NewClass = /** @class */ (function (_super) { - __extends(NewClass, _super); - function NewClass() { - var _this = _super !== null && _super.apply(this, arguments) || this; - _this.Block_Color = []; - _this.level = null; - return _this; - // update (dt) {} - } - // LIFE-CYCLE CALLBACKS: - NewClass.prototype.onLoad = function () { - }; - NewClass.prototype.start = function () { - }; - __decorate([ - property({ type: [cc.SpriteFrame], tooltip: "方块颜色图片" }) - ], NewClass.prototype, "Block_Color", void 0); - __decorate([ - property(cc.Label) - ], NewClass.prototype, "level", void 0); - NewClass = __decorate([ - ccclass - ], NewClass); - return NewClass; -}(cc.Component)); -exports.default = NewClass; - -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,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImFzc2V0c1xcU2NyaXB0XFxSZWR1Y2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLG9CQUFvQjtBQUNwQix3RUFBd0U7QUFDeEUsbUJBQW1CO0FBQ25CLGtGQUFrRjtBQUNsRiw4QkFBOEI7QUFDOUIsa0ZBQWtGOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFFNUUsSUFBQSxLQUFzQixFQUFFLENBQUMsVUFBVSxFQUFsQyxPQUFPLGFBQUEsRUFBRSxRQUFRLGNBQWlCLENBQUM7QUFHMUM7SUFBc0MsNEJBQVk7SUFBbEQ7UUFBQSxxRUF1QkM7UUFwQkcsaUJBQVcsR0FBMkIsRUFBRSxDQUFDO1FBSXpDLFdBQUssR0FBYSxJQUFJLENBQUM7O1FBZXZCLGlCQUFpQjtJQUNyQixDQUFDO0lBZEcsd0JBQXdCO0lBRXhCLHlCQUFNLEdBQU47SUFFQSxDQUFDO0lBQ0Qsd0JBQUssR0FBTDtJQUVBLENBQUM7SUFiRDtRQURDLFFBQVEsQ0FBQyxFQUFDLElBQUksRUFBRSxDQUFDLEVBQUUsQ0FBQyxXQUFXLENBQUMsRUFBRSxPQUFPLEVBQUMsUUFBUSxFQUFDLENBQUM7aURBQ1o7SUFJekM7UUFEQyxRQUFRLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQzsyQ0FDSTtJQVBOLFFBQVE7UUFENUIsT0FBTztPQUNhLFFBQVEsQ0F1QjVCO0lBQUQsZUFBQztDQXZCRCxBQXVCQyxDQXZCcUMsRUFBRSxDQUFDLFNBQVMsR0F1QmpEO2tCQXZCb0IsUUFBUSIsImZpbGUiOiIiLCJzb3VyY2VSb290IjoiLyIsInNvdXJjZXNDb250ZW50IjpbIi8vIExlYXJuIFR5cGVTY3JpcHQ6XHJcbi8vICAtIGh0dHBzOi8vZG9jcy5jb2Nvcy5jb20vY3JlYXRvci9tYW51YWwvZW4vc2NyaXB0aW5nL3R5cGVzY3JpcHQuaHRtbFxyXG4vLyBMZWFybiBBdHRyaWJ1dGU6XHJcbi8vICAtIGh0dHBzOi8vZG9jcy5jb2Nvcy5jb20vY3JlYXRvci9tYW51YWwvZW4vc2NyaXB0aW5nL3JlZmVyZW5jZS9hdHRyaWJ1dGVzLmh0bWxcclxuLy8gTGVhcm4gbGlmZS1jeWNsZSBjYWxsYmFja3M6XHJcbi8vICAtIGh0dHBzOi8vZG9jcy5jb2Nvcy5jb20vY3JlYXRvci9tYW51YWwvZW4vc2NyaXB0aW5nL2xpZmUtY3ljbGUtY2FsbGJhY2tzLmh0bWxcclxuXHJcbmNvbnN0IHtjY2NsYXNzLCBwcm9wZXJ0eX0gPSBjYy5fZGVjb3JhdG9yO1xyXG5cclxuQGNjY2xhc3NcclxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgTmV3Q2xhc3MgZXh0ZW5kcyBjYy5Db21wb25lbnQge1xyXG5cclxuICAgIEBwcm9wZXJ0eSh7dHlwZTogW2NjLlNwcml0ZUZyYW1lXSwgdG9vbHRpcDpcIuaWueWdl+minOiJsuWbvueJh1wifSlcclxuICAgIEJsb2NrX0NvbG9yIDogQXJyYXk8Y2MuU3ByaXRlRnJhbWU+ID0gW107XHJcblxyXG5cclxuICAgIEBwcm9wZXJ0eShjYy5MYWJlbClcclxuICAgIGxldmVsOiBjYy5MYWJlbCA9IG51bGw7XHJcblxyXG4gICAgLy8gTElGRS1DWUNMRSBDQUxMQkFDS1M6XHJcblxyXG4gICAgb25Mb2FkICgpIHtcclxuXHJcbiAgICB9XHJcbiAgICBzdGFydCAoKSB7XHJcblxyXG4gICAgfVxyXG4gICAgXHJcblxyXG5cclxuXHJcblxyXG4gICAgLy8gdXBkYXRlIChkdCkge31cclxufVxyXG4iXX0= -//------QC-SOURCE-SPLIT------ - - (function() { - var nodeEnv = typeof require !== 'undefined' && typeof process !== 'undefined'; - var __module = nodeEnv ? module : {exports:{}}; - var __filename = 'preview-scripts/assets/Script/GameOver.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, '805c6nf399HWZeuWnNB9CTH', 'GameOver'); -// Script/GameOver.ts - -"use strict"; -var __extends = (this && this.__extends) || (function () { - var extendStatics = function (d, b) { - extendStatics = Object.setPrototypeOf || - ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) || - function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; }; - return extendStatics(d, b); - }; - return function (d, b) { - extendStatics(d, b); - function __() { this.constructor = d; } - d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); - }; -})(); -var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) { - var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; - if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc); - else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; - return c > 3 && r && Object.defineProperty(target, key, r), r; -}; -Object.defineProperty(exports, "__esModule", { value: true }); -var _a = cc._decorator, ccclass = _a.ccclass, property = _a.property; -var NewClass = /** @class */ (function (_super) { - __extends(NewClass, _super); - function NewClass() { - var _this = _super !== null && _super.apply(this, arguments) || this; - _this.count = null; - _this.time = null; - _this.selfNode = null; - _this.one = null; - _this.two = null; - _this.three = null; - _this.four = null; - _this.five = null; - return _this; - } - // onLoad () {} - NewClass.prototype.start = function () { - this.count.string = cc.fx.GameConfig.GM_INFO.score + ""; - var yes = 0; - var successList = cc.fx.GameConfig.GM_INFO.successList; - if (successList.length > 0) { - var success = 0; - for (var i = 0; i < successList.length; i++) { - if (successList[i] == true) - success += 1; - } - yes = success / successList.length; - } - yes = Math.floor(yes * 1000) / 10; - this.time.string = yes + "%"; - this.init(); - }; - //初始化数据 - NewClass.prototype.init = function () { - this.listData = []; - this.selfData = null; - this.one.active = false; - this.two.active = false; - this.three.active = false; - this.four.active = false; - this.five.active = false; - var urlNow = window.location.href; - if (this.containsTrain(urlNow)) { - this.node.getChildByName("again").active = false; - this.node.getChildByName("back").active = false; - this.node.getChildByName("finishi").active = true; - this.setLocalStorage(); - } - else { - this.setLocalStorage(); - this.node.getChildByName("again").active = true; - this.node.getChildByName("back").active = true; - this.node.getChildByName("finishi").active = false; - } - this.getRank(); - }; - NewClass.prototype.setLocalStorage = function () { - var timeData = cc.fx.GameConfig.TIME_INFO.totalTime; - var today = new Date().toLocaleDateString(); - var name = "success_" + today + "_" + cc.fx.GameConfig.GM_INFO.scode + "_" + cc.fx.GameConfig.GM_INFO.gameId; - localStorage.setItem(name, JSON.stringify({ success: true })); - }; - //打开排行榜 - NewClass.prototype.openRank = function () { - cc.director.loadScene("RankScene"); - }; - //重新开始玩 - NewClass.prototype.again = function () { - cc.fx.GameConfig.GM_INFO.round = 0; - cc.fx.GameConfig.GM_INFO.level = 0; - cc.fx.GameConfig.GM_INFO.stepTimeList = 0; - cc.fx.GameConfig.GM_INFO.successList = []; - cc.fx.GameConfig.GM_INFO.fen = 0; - cc.fx.GameConfig.GM_INFO.score = 0; - cc.fx.GameConfig.GM_INFO.min_Steps = 0; - cc.fx.GameConfig.GM_INFO.min_Time = 0; - cc.fx.GameConfig.TIME_INFO.totalTime = 120; - cc.director.loadScene("GameScene"); - }; - //判断来源 - NewClass.prototype.containsTrain = function (str) { - return /from=train/i.test(str); - }; - //获取排行榜 - NewClass.prototype.getRank = function () { - var _this = this; - //获取排行榜数据 所需数据量 - var dataFile = { - length: 5 - }; - cc.fx.GameTool.getRank(dataFile, function (data) { return _this.getRankData(data); }); - }; - //打开排行榜 - NewClass.prototype.jumpFinishi = function () { - var url = "https://train.sparkus.cn/poster/game/" + cc.fx.GameConfig.GM_INFO.scode + "?suc=1"; - window.location.href = url; - }; - //设置排行信息 - NewClass.prototype.getRankData = function (data) { - if (data) { - cc.fx.GameTool.getRankData(data, this, 4); - cc.fx.GameTool.setPic(this.selfNode.getChildByName("pic").getChildByName("icon"), this.selfData.pic); - var length = this.listData.length - 1; - if (length > 4) - length = 4; - for (var i = 0; i <= length; i++) { - this.setRank(i, this.listData[i]); - } - } - }; - //根据内容填充排行榜 - NewClass.prototype.setRank = function (num, data) { - var _this = this; - if (!data) { - return; - } - var hitNode = null; - if (num == 0) { - hitNode = this.one; - } - else if (num == 1) { - hitNode = this.two; - } - else if (num == 2) { - hitNode = this.three; - } - else if (num == 3) { - hitNode = this.four; - } - else if (num == 4) { - hitNode = this.five; - } - var trun = num + 1; - for (var i = 0; i < trun; i++) { - if (this.listData[i] && this.listData[i].nickName == cc.fx.GameConfig.GM_INFO.nickName) { - trun = i + 1; - break; - } - else if (!this.listData[i] == null) { - trun = i * 2; - break; - } - this.node.color = cc.color(this.listData[0], this.listData[1], this.listData[2]); - cc.tween(this.node) - .to(0.5, { scale: 2 }) - .by(1, { opacity: 0 }) - .delay(0.5) - .call(function () { - _this.node.scale = 1; - _this.node.opacity = 255; - _this.node.color = cc.color(255, 255, 255); - }) - .start(); - } - hitNode.getChildByName("num").getComponent(cc.Label).string = num + ""; - cc.tween(hitNode.getChildByName("num").getComponent(cc.Label)) - .to(0.5, { string: trun + "" }) - .start(); - var record = cc.fx.GameConfi.GM_INFO.score; - if (data.score >= record) { - this.selfData = data; - this.selfNode.active = true; - } - if (hitNode) { - hitNode.active = true; - if (data.nickName.length >= 4) - data.nickName = cc.fx.GameTool.subName(data.nickName, 4); - hitNode.getChildByName("name").getComponent(cc.Label).string = data.nickName; - hitNode.getChildByName("total").getComponent(cc.Label).string = data.score; - cc.fx.GameTool.setPic(hitNode.getChildByName("pic").getChildByName("icon"), data.pic); - } - }; - __decorate([ - property(cc.Label) - ], NewClass.prototype, "count", void 0); - __decorate([ - property(cc.Label) - ], NewClass.prototype, "time", void 0); - __decorate([ - property(cc.Node) - ], NewClass.prototype, "selfNode", void 0); - __decorate([ - property(cc.Node) - ], NewClass.prototype, "one", void 0); - __decorate([ - property(cc.Node) - ], NewClass.prototype, "two", void 0); - __decorate([ - property(cc.Node) - ], NewClass.prototype, "three", void 0); - __decorate([ - property(cc.Node) - ], NewClass.prototype, "four", void 0); - __decorate([ - property(cc.Node) - ], NewClass.prototype, "five", void 0); - NewClass = __decorate([ - ccclass - ], NewClass); - return NewClass; -}(cc.Component)); -exports.default = NewClass; - -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,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImFzc2V0c1xcU2NyaXB0XFxHYW1lT3Zlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFDTSxJQUFBLEtBQXNCLEVBQUUsQ0FBQyxVQUFVLEVBQWxDLE9BQU8sYUFBQSxFQUFFLFFBQVEsY0FBaUIsQ0FBQztBQUcxQztJQUFzQyw0QkFBWTtJQUFsRDtRQUFBLHFFQXFMQztRQW5MRyxXQUFLLEdBQWEsSUFBSSxDQUFDO1FBRXZCLFVBQUksR0FBYSxJQUFJLENBQUM7UUFFdEIsY0FBUSxHQUFZLElBQUksQ0FBQztRQUV6QixTQUFHLEdBQVksSUFBSSxDQUFDO1FBRXBCLFNBQUcsR0FBWSxJQUFJLENBQUM7UUFFcEIsV0FBSyxHQUFZLElBQUksQ0FBQztRQUV0QixVQUFJLEdBQVksSUFBSSxDQUFDO1FBRXJCLFVBQUksR0FBWSxJQUFJLENBQUM7O0lBcUt6QixDQUFDO0lBbEtHLGVBQWU7SUFDZix3QkFBSyxHQUFMO1FBQ0ksSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNLEdBQUcsRUFBRSxDQUFDLEVBQUUsQ0FBQyxVQUFVLENBQUMsT0FBTyxDQUFDLEtBQUssR0FBRyxFQUFFLENBQUM7UUFDeEQsSUFBSSxHQUFHLEdBQUcsQ0FBQyxDQUFDO1FBQ1osSUFBSSxXQUFXLEdBQUcsRUFBRSxDQUFDLEVBQUUsQ0FBQyxVQUFVLENBQUMsT0FBTyxDQUFDLFdBQVcsQ0FBQztRQUN2RCxJQUFHLFdBQVcsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFDO1lBQ3RCLElBQUksT0FBTyxHQUFHLENBQUMsQ0FBQztZQUNoQixLQUFJLElBQUksQ0FBQyxHQUFDLENBQUMsRUFBRSxDQUFDLEdBQUMsV0FBVyxDQUFDLE1BQU0sRUFBRSxDQUFDLEVBQUUsRUFBQztnQkFDbkMsSUFBRyxXQUFXLENBQUMsQ0FBQyxDQUFDLElBQUksSUFBSTtvQkFBRSxPQUFPLElBQUksQ0FBQyxDQUFDO2FBQzNDO1lBQ0QsR0FBRyxH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QUFDLEVBQUUsQ0FBQyxJQUFJLENBQUM7MENBQ0c7SUFoQkosUUFBUTtRQUQ1QixPQUFPO09BQ2EsUUFBUSxDQXFMNUI7SUFBRCxlQUFDO0NBckxELEFBcUxDLENBckxxQyxFQUFFLENBQUMsU0FBUyxHQXFMakQ7a0JBckxvQixRQUFRIiwiZmlsZSI6IiIsInNvdXJjZVJvb3QiOiIvIiwic291cmNlc0NvbnRlbnQiOlsiXHJcbmNvbnN0IHtjY2NsYXNzLCBwcm9wZXJ0eX0gPSBjYy5fZGVjb3JhdG9yO1xyXG5cclxuQGNjY2xhc3NcclxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgTmV3Q2xhc3MgZXh0ZW5kcyBjYy5Db21wb25lbnQge1xyXG4gICAgQHByb3BlcnR5KGNjLkxhYmVsKVxyXG4gICAgY291bnQ6IGNjLkxhYmVsID0gbnVsbDtcclxuICAgIEBwcm9wZXJ0eShjYy5MYWJlbClcclxuICAgIHRpbWU6IGNjLkxhYmVsID0gbnVsbDtcclxuICAgIEBwcm9wZXJ0eShjYy5Ob2RlKVxyXG4gICAgc2VsZk5vZGU6IGNjLk5vZGUgPSBudWxsO1xyXG4gICAgQHByb3BlcnR5KGNjLk5vZGUpXHJcbiAgICBvbmU6IGNjLk5vZGUgPSBudWxsO1xyXG4gICAgQHByb3BlcnR5KGNjLk5vZGUpXHJcbiAgICB0d286IGNjLk5vZGUgPSBudWxsO1xyXG4gICAgQHByb3BlcnR5KGNjLk5vZGUpXHJcbiAgICB0aHJlZTogY2MuTm9kZSA9IG51bGw7XHJcbiAgICBAcHJvcGVydHkoY2MuTm9kZSlcclxuICAgIGZvdXI6IGNjLk5vZGUgPSBudWxsO1xyXG4gICAgQHByb3BlcnR5KGNjLk5vZGUpXHJcbiAgICBmaXZlOiBjYy5Ob2RlID0gbnVsbDtcclxuICAgIGxpc3REYXRhOiBhbnk7XHJcbiAgICBzZWxmRGF0YTogYW55O1xyXG4gICAgLy8gb25Mb2FkICgpIHt9XHJcbiAgICBzdGFydCAoKSB7XHJcbiAgICAgICAgdGhpcy5jb3VudC5zdHJpbmcgPSBjYy5meC5HYW1lQ29uZmlnLkdNX0lORk8uc2NvcmUgKyBcIlwiO1xyXG4gICAgICAgIHZhciB5ZXMgPSAwO1xyXG4gICAgICAgIHZhciBzdWNjZXNzTGlzdCA9IGNjLmZ4LkdhbWVDb25maWcuR01fSU5GTy5zdWNjZXNzTGlzdDtcclxuICAgICAgICBpZihzdWNjZXNzTGlzdC5sZW5ndGggPiAwKXtcclxuICAgICAgICAgICAgdmFyIHN1Y2Nlc3MgPSAwO1xyXG4gICAgICAgICAgICBmb3IobGV0IGk9MDsgaTxzdWNjZXNzTGlzdC5sZW5ndGg7IGkrKyl7XHJcbiAgICAgICAgICAgICAgICBpZihzdWNjZXNzTGlzdFtpXSA9PSB0cnVlKSBzdWNjZXNzICs9IDE7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgeWVzID0gc3VjY2Vzcy9zdWNjZXNzTGlzdC5sZW5ndGg7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHllcyA9IE1hdGguZmxvb3IoeWVzICogMTAwMCkvMTA7XHJcbiAgICAgICAgdGhpcy50aW1lLnN0cmluZyA9ICAgeWVzICsgXCIlXCI7XHJcbiAgICAgICAgdGhpcy5pbml0KCk7XHJcbiAgICAgICBcclxuICAgIH0gICBcclxuICAgIC8v5Yid5aeL5YyW5pWw5o2uXHJcbiAgICBpbml0KCl7XHJcbiAgICAgICAgdGhpcy5saXN0RGF0YSA9IFtdO1xyXG4gICAgICAgIHRoaXMuc2VsZkRhdGEgPSBudWxsO1xyXG4gICAgICAgIHRoaXMub25lLmFjdGl2ZSA9IGZhbHNlO1xyXG4gICAgICAgIHRoaXMudHdvLmFjdGl2ZSA9IGZhbHNlO1xyXG4gICAgICAgIHRoaXMudGhyZWUuYWN0aXZlID0gZmFsc2U7XHJcbiAgICAgICAgdGhpcy5mb3VyLmFjdGl2ZSA9IGZhbHNlO1xyXG4gICAgICAgIHRoaXMuZml2ZS5hY3RpdmUgPSBmYWxzZTtcclxuICAgICAgICB2YXIgdXJsTm93ID0gd2luZG93LmxvY2F0aW9uLmhyZWY7XHJcbiAgICAgICAgaWYodGhpcy5jb250YWluc1RyYWluKHVybE5vdykpe1xyXG4gICAgICAgICAgICB0aGlzLm5vZGUuZ2V0Q2hpbGRCeU5hbWUoXCJhZ2FpblwiKS5hY3RpdmUgPSBmYWxzZTtcclxuICAgICAgICAgICAgdGhpcy5ub2RlLmdldENoaWxkQnlOYW1lKFwiYmFja1wiKS5hY3RpdmUgPSBmYWxzZTtcclxuICAgICAgICAgICAgdGhpcy5ub2RlLmdldENoaWxkQnlOYW1lKFwiZmluaXNoaVwiKS5hY3RpdmUgPSB0cnVlO1xyXG4gICAgICAgICAgICB0aGlzLnNldExvY2FsU3RvcmFnZSgpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNle1xyXG4gICAgICAgICAgICB0aGlzLnNldExvY2FsU3RvcmFnZSgpO1xyXG4gICAgICAgICAgICB0aGlzLm5vZGUuZ2V0Q2hpbGRCeU5hbWUoXCJhZ2FpblwiKS5hY3RpdmUgPSB0cnVlO1xyXG4gICAgICAgICAgICB0aGlzLm5vZGUuZ2V0Q2hpbGRCeU5hbWUoXCJiYWNrXCIpLmFjdGl2ZSA9IHRydWU7XHJcbiAgICAgICAgICAgIHRoaXMubm9kZS5nZXRDaGlsZEJ5TmFtZShcImZpbmlzaGlcIikuYWN0aXZlID0gZmFsc2U7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICB0aGlzLmdldFJhbmsoKTtcclxuICAgIH1cclxuXHJcbiAgICBzZXRMb2NhbFN0b3JhZ2UoKXtcclxuICAgICAgICBsZXQgdGltZURhdGEgPSBjYy5meC5HYW1lQ29uZmlnLlRJTUVfSU5GTy50b3RhbFRpbWU7XHJcbiAgICAgICAgXHJcbiAgICAgICAgY29uc3QgdG9kYXkgPSBuZXcgRGF0ZSgpLnRvTG9jYWxlRGF0ZVN0cmluZygpO1xyXG4gICAgICAgIHZhciBuYW1lID0gYHN1Y2Nlc3NfJHt0b2RheX1fJHtjYy5meC5HYW1lQ29uZmlnLkdNX0lORk8uc2NvZGV9XyR7Y2MuZnguR2FtZUNvbmZpZy5HTV9JTkZPLmdhbWVJZH1gXHJcbiAgICAgICAgbG9jYWxTdG9yYWdlLnNldEl0ZW0obmFtZSwgSlNPTi5zdHJpbmdpZnkoe3N1Y2Nlc3M6dHJ1ZX0pKTtcclxuICAgIH1cclxuXHJcbiAgICAvL+aJk+W8gOaOkuihjOamnFxyXG4gICAgb3BlblJhbmsoKXtcclxuICAgICAgICBjYy5kaXJlY3Rvci5sb2FkU2NlbmUoXCJSYW5rU2NlbmVcIik7XHJcbiAgICB9XHJcbiAgICAvL+mHjeaWsOW8gOWni+eOqVxyXG4gICAgYWdhaW4oKXtcclxuICAgICAgICBjYy5meC5HYW1lQ29uZmlnLkdNX0lORk8ucm91bmQgPSAwO1xyXG4gICAgICAgIGNjLmZ4LkdhbWVDb25maWcuR01fSU5GTy5sZXZlbCA9IDA7XHJcbiAgICAgICAgY2MuZnguR2FtZUNvbmZpZy5HTV9JTkZPLnN0ZXBUaW1lTGlzdCA9IDA7XHJcbiAgICAgICAgY2MuZnguR2FtZUNvbmZpZy5HTV9JTkZPLnN1Y2Nlc3NMaXN0ID0gW107XHJcbiAgICAgICAgY2MuZnguR2FtZUNvbmZpZy5HTV9JTkZPLmZlbiA9IDA7XHJcbiAgICAgICAgY2MuZnguR2FtZUNvbmZpZy5HTV9JTkZPLnNjb3JlID0gMDtcclxuICAgICAgICBjYy5meC5HYW1lQ29uZmlnLkdNX0lORk8ubWluX1N0ZXBzID0gMDtcclxuICAgICAgICBjYy5meC5HYW1lQ29uZmlnLkdNX0lORk8ubWluX1RpbWUgPSAwO1xyXG4gICAgICAgIGNjLmZ4LkdhbWVDb25maWcuVElNRV9JTkZPLnRvdGFsVGltZSA9IDEyMDtcclxuICAgICAgICBjYy5kaXJlY3Rvci5sb2FkU2NlbmUoXCJHYW1lU2NlbmVcIik7XHJcbiAgICB9XHJcbiAgICAvL+WIpOaWreadpea6kFxyXG4gICAgY29udGFpbnNUcmFpbihzdHIpIHtcclxuICAgICAgICByZXR1cm4gL2Zyb209dHJhaW4vaS50ZXN0KHN0cik7XHJcbiAgICB9XHJcbiAgICAvL+iOt+WPluaOkuihjOamnFxyXG4gICAgZ2V0UmFuaygpe1xyXG4gICAgICAgIC8v6I635Y+W5o6S6KGM5qac5pWw5o2uICDmiYDpnIDmlbDmja7ph49cclxuICAgICAgICBsZXQgZGF0YUZpbGUgPSB7XHJcbiAgICAgICAgICAgIGxlbmd0aDo1XHJcbiAgICAgICAgfVxyXG4gICAgICAgICBjYy5meC5HYW1lVG9vbC5nZXRSYW5rKGRhdGFGaWxlLGRhdGEgPT50aGlzLmdldFJhbmtEYXRhKGRhdGEpKTtcclxuICAgIH1cclxuICAgIC8v5omT5byA5o6S6KGM5qacXHJcbiAgICBqdW1wRmluaXNoaSgpe1xyXG4gICAgICAgIGxldCB1cmwgPSBcImh0dHBzOi8vdHJhaW4uc3Bhcmt1cy5jbi9wb3N0ZXIvZ2FtZS9cIiArIGNjLmZ4LkdhbWVDb25maWcuR01fSU5GTy5zY29kZSArIFwiP3N1Yz0xXCI7XHJcbiAgICAgICAgd2luZG93LmxvY2F0aW9uLmhyZWYgPSB1cmw7XHJcbiAgICB9XHJcbiAgICAvL+iuvue9ruaOkuihjOS/oeaBr1xyXG4gICAgZ2V0UmFua0RhdGEoZGF0YSl7XHJcbiAgICAgICAgaWYoZGF0YSl7XHJcbiAgICAgICAgICAgICBjYy5meC5HYW1lVG9vbC5nZXRSYW5rRGF0YShkYXRhLHRoaXMsNCk7XHJcbiAgICAgICAgICAgICBjYy5meC5HYW1lVG9vbC5zZXRQaWModGhpcy5zZWxmTm9kZS5nZXRDaGlsZEJ5TmFtZShcInBpY1wiKS5nZXRDaGlsZEJ5TmFtZShcImljb25cIiksdGhpcy5zZWxmRGF0YS5waWMpO1xyXG4gICAgICAgICAgICB2YXIgbGVuZ3RoID0gdGhpcy5saXN0RGF0YS5sZW5ndGgtMTsgaWYobGVuZ3RoID4gNCkgbGVuZ3RoID0gNDtcclxuICAgICAgICAgICAgZm9yKGxldCBpPTA7aTw9bGVuZ3RoO2krKyl7XHJcbiAgICAgICAgICAgICAgICB0aGlzLnNldFJhbmsoaSx0aGlzLmxpc3REYXRhW2ldKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgIH1cclxuICAgIC8v5qC55o2u5YaF5a655aGr5YWF5o6S6KGM5qacXHJcbiAgICBzZXRSYW5rKG51bSxkYXRhKXtcclxuICAgICAgICBpZighZGF0YSl7XHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHZhciBoaXROb2RlID0gbnVsbDtcclxuICAgICAgICBpZihudW0gPT0gMCl7XHJcbiAgICAgICAgICAgIGhpdE5vZGUgPSB0aGlzLm9uZTtcclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSBpZihudW0gPT0gMSl7XHJcbiAgICAgICAgICAgIGhpdE5vZGUgPSB0aGlzLnR3bztcclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSBpZihudW0gPT0gMil7XHJcbiAgICAgICAgICAgIGhpdE5vZGUgPSB0aGlzLnRocmVlO1xyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIGlmKG51bSA9PSAzKXtcclxuICAgICAgICAgICAgaGl0Tm9kZSA9IHRoaXMuZm91cjtcclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSBpZihudW0gPT0gNCl7XHJcbiAgICAgICAgICAgIGhpdE5vZGUgPSB0aGlzLmZpdmU7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBsZXQgdHJ1biA9IG51bSArIDE7XHJcbiAgICAgICAgZm9yKGxldCBpPTA7IGk8IHRydW47IGkrKyl7XHJcbiAgICAgICAgICAgIGlmKHRoaXMubGlzdERhdGFbaV0gJiYgdGhpcy5saXN0RGF0YVtpXS5uaWNrTmFtZSA9PSBjYy5meC5HYW1lQ29uZmlnLkdNX0lORk8ubmlja05hbWUpe1xyXG4gICAgICAgICAgICAgICAgdHJ1biA9IGkgKyAxO1xyXG4gICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgZWxzZSBpZighdGhpcy5saXN0RGF0YVtpXSA9PSBudWxsICl7XHJcbiAgICAgICAgICAgICAgICB0cnVuID0gaSAqIDI7XHJcbiAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB0aGlzLm5vZGUuY29sb3IgPSBjYy5jb2xvcih0aGlzLmxpc3REYXRhWzBdLHRoaXMubGlzdERhdGFbMV0sdGhpcy5saXN0RGF0YVsyXSk7XHJcbiAgICAgICAgICAgIGNjLnR3ZWVuKHRoaXMubm9kZSlcclxuICAgICAgICAgICAgLnRvKDAuNSx7c2NhbGU6Mn0pXHJcbiAgICAgICAgICAgIC5ieSgxLHtvcGFjaXR5OjB9KVxyXG4gICAgICAgICAgICAuZGVsYXkoMC41KVxyXG4gICAgICAgICAgICAuY2FsbCgoKSA9PntcclxuICAgICAgICAgICAgICAgIHRoaXMubm9kZS5zY2FsZSA9IDE7XHJcbiAgICAgICAgICAgICAgICB0aGlzLm5vZGUub3BhY2l0eSA9IDI1NTtcclxuICAgICAgICAgICAgICAgIHRoaXMubm9kZS5jb2xvciA9IGNjLmNvbG9yKDI1NSwyNTUsMjU1KTtcclxuICAgICAgICAgICAgfSlcclxuICAgICAgICAgICAgLnN0YXJ0KCk7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBoaXROb2RlLmdldENoaWxkQnlOYW1lKFwibnVtXCIpLmdldENvbXBvbmVudChjYy5MYWJlbCkuc3RyaW5nID0gbnVtICsgXCJcIjtcclxuICAgICAgICBjYy50d2VlbihoaXROb2RlLmdldENoaWxkQnlOYW1lKFwibnVtXCIpLmdldENvbXBvbmVudChjYy5MYWJlbCkpXHJcbiAgICAgICAgLnRvKDAuNSx7c3RyaW5nOnRydW4rXCJcIn0pXHJcbiAgICAgICAgLnN0YXJ0KCk7XHJcblxyXG4gICAgICAgIGxldCByZWNvcmQgPSBjYy5meC5HYW1lQ29uZmkuR01fSU5GTy5zY29yZTtcclxuICAgICAgICBpZihkYXRhLnNjb3JlID49IHJlY29yZCl7XHJcbiAgICAgICAgICAgIHRoaXMuc2VsZkRhdGEgPSBkYXRhO1xyXG4gICAgICAgICAgICB0aGlzLnNlbGZOb2RlLmFjdGl2ZSA9IHRydWU7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBpZihoaXROb2RlKXtcclxuICAgICAgICAgICAgaGl0Tm9kZS5hY3RpdmUgPSB0cnVlO1xyXG4gICAgICAgICAgICBpZihkYXRhLm5pY2tOYW1lLmxlbmd0aCA+PSA0KVxyXG4gICAgICAgICAgICAgICAgZGF0YS5uaWNrTmFtZSA9IGNjLmZ4LkdhbWVUb29sLnN1Yk5hbWUoZGF0YS5uaWNrTmFtZSw0KTtcclxuICAgICAgICAgICAgaGl0Tm9kZS5nZXRDaGlsZEJ5TmFtZShcIm5hbWVcIikuZ2V0Q29tcG9uZW50KGNjLkxhYmVsKS5zdHJpbmcgPSBkYXRhLm5pY2tOYW1lO1xyXG4gICAgICAgICAgICBoaXROb2RlLmdldENoaWxkQnlOYW1lKFwidG90YWxcIikuZ2V0Q29tcG9uZW50KGNjLkxhYmVsKS5zdHJpbmcgPSBkYXRhLnNjb3JlO1xyXG4gICAgICAgICAgICAgY2MuZnguR2FtZVRvb2wuc2V0UGljKGhpdE5vZGUuZ2V0Q2hpbGRCeU5hbWUoXCJwaWNcIikuZ2V0Q2hpbGRCeU5hbWUoXCJpY29uXCIpLGRhdGEucGljKTtcclxuICAgICAgICB9XHJcbiAgICB9ICAgXHJcbn1cclxuIl19 -//------QC-SOURCE-SPLIT------ - - (function() { - var nodeEnv = typeof require !== 'undefined' && typeof process !== 'undefined'; - var __module = nodeEnv ? module : {exports:{}}; - var __filename = 'preview-scripts/assets/Script/btnControl.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, '6ee6czJ4eVNb4Feiqps5SIa', 'btnControl'); -// Script/btnControl.ts - -"use strict"; -// Learn TypeScript: -// - https://docs.cocos.com/creator/manual/en/scripting/typescript.html -// Learn Attribute: -// - https://docs.cocos.com/creator/manual/en/scripting/reference/attributes.html -// Learn life-cycle callbacks: -// - https://docs.cocos.com/creator/manual/en/scripting/life-cycle-callbacks.html -var __extends = (this && this.__extends) || (function () { - var extendStatics = function (d, b) { - extendStatics = Object.setPrototypeOf || - ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) || - function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; }; - return extendStatics(d, b); - }; - return function (d, b) { - extendStatics(d, b); - function __() { this.constructor = d; } - d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); - }; -})(); -var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) { - var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; - if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc); - else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; - return c > 3 && r && Object.defineProperty(target, key, r), r; -}; -Object.defineProperty(exports, "__esModule", { value: true }); -var _a = cc._decorator, ccclass = _a.ccclass, property = _a.property; -var btnControl = /** @class */ (function (_super) { - __extends(btnControl, _super); - function btnControl() { - return _super !== null && _super.apply(this, arguments) || this; - } - btnControl.prototype.onLoad = function () { - this._touch = true; - }; - btnControl.prototype.start = function () { - }; - btnControl.prototype.setTouch = function (type) { - this._touch = type; - }; - btnControl.prototype.update = function (dt) { - }; - btnControl = __decorate([ - ccclass - ], btnControl); - return btnControl; -}(cc.Component)); -exports.default = btnControl; - -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,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImFzc2V0c1xcU2NyaXB0XFxidG5Db250cm9sLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSxvQkFBb0I7QUFDcEIsd0VBQXdFO0FBQ3hFLG1CQUFtQjtBQUNuQixrRkFBa0Y7QUFDbEYsOEJBQThCO0FBQzlCLGtGQUFrRjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBRzVFLElBQUEsS0FBc0IsRUFBRSxDQUFDLFVBQVUsRUFBbEMsT0FBTyxhQUFBLEVBQUUsUUFBUSxjQUFpQixDQUFDO0FBSTFDO0lBQXdDLDhCQUFZO0lBQXBEOztJQWtCQSxDQUFDO0lBYkcsMkJBQU0sR0FBTjtRQUNJLElBQUksQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFDO0lBQ3ZCLENBQUM7SUFFRCwwQkFBSyxHQUFMO0lBQ0EsQ0FBQztJQUVELDZCQUFRLEdBQVIsVUFBUyxJQUFJO1FBQ1QsSUFBSSxDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUM7SUFDdkIsQ0FBQztJQUVELDJCQUFNLEdBQU4sVUFBUSxFQUFFO0lBQ1YsQ0FBQztJQWpCZ0IsVUFBVTtRQUQ5QixPQUFPO09BQ2EsVUFBVSxDQWtCOUI7SUFBRCxpQkFBQztDQWxCRCxBQWtCQyxDQWxCdUMsRUFBRSxDQUFDLFNBQVMsR0FrQm5EO2tCQWxCb0IsVUFBVSIsImZpbGUiOiIiLCJzb3VyY2VSb290IjoiLyIsInNvdXJjZXNDb250ZW50IjpbIi8vIExlYXJuIFR5cGVTY3JpcHQ6XHJcbi8vICAtIGh0dHBzOi8vZG9jcy5jb2Nvcy5jb20vY3JlYXRvci9tYW51YWwvZW4vc2NyaXB0aW5nL3R5cGVzY3JpcHQuaHRtbFxyXG4vLyBMZWFybiBBdHRyaWJ1dGU6XHJcbi8vICAtIGh0dHBzOi8vZG9jcy5jb2Nvcy5jb20vY3JlYXRvci9tYW51YWwvZW4vc2NyaXB0aW5nL3JlZmVyZW5jZS9hdHRyaWJ1dGVzLmh0bWxcclxuLy8gTGVhcm4gbGlmZS1jeWNsZSBjYWxsYmFja3M6XHJcbi8vICAtIGh0dHBzOi8vZG9jcy5jb2Nvcy5jb20vY3JlYXRvci9tYW51YWwvZW4vc2NyaXB0aW5nL2xpZmUtY3ljbGUtY2FsbGJhY2tzLmh0bWxcclxuXHJcblxyXG5jb25zdCB7Y2NjbGFzcywgcHJvcGVydHl9ID0gY2MuX2RlY29yYXRvcjtcclxuXHJcblxyXG5AY2NjbGFzc1xyXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBidG5Db250cm9sIGV4dGVuZHMgY2MuQ29tcG9uZW50IHtcclxuICAgIHN0YXRpYyBfaW5zdGFuY2U6IGFueTtcclxuICAgIF90b3VjaDogYm9vbGVhbjtcclxuXHJcblxyXG4gICAgb25Mb2FkICgpIHsgXHJcbiAgICAgICAgdGhpcy5fdG91Y2ggPSB0cnVlO1xyXG4gICAgfSBcclxuXHJcbiAgICBzdGFydCAoKSB7XHJcbiAgICB9XHJcblxyXG4gICAgc2V0VG91Y2godHlwZSl7XHJcbiAgICAgICAgdGhpcy5fdG91Y2ggPSB0eXBlO1xyXG4gICAgfVxyXG5cclxuICAgIHVwZGF0ZSAoZHQpIHtcclxuICAgIH1cclxufVxyXG4iXX0= -//------QC-SOURCE-SPLIT------ - - (function() { - var nodeEnv = typeof require !== 'undefined' && typeof process !== 'undefined'; - var __module = nodeEnv ? module : {exports:{}}; - var __filename = 'preview-scripts/assets/Script/position.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, 'e0e34n/+FRF5JdkULm6vdT0', 'position'); -// Script/position.ts - -var _PROP_INFO = [{ "pos1": { "x": -60, "y": 60, "z": 0 }, "pos2": { "x": -16.442, "y": 30, "z": 0 }, "pos3": { "x": -34.362, "y": 13.246, "z": 0 }, "pos4": { "x": -17, "y": 12, "z": 0 } }, { "pos1": { "x": -126, "y": 63, "z": 0 }, "pos2": { "x": -25.792, "y": 34.675, "z": 0 }, "pos3": { "x": -94.792, "y": 21.675, "z": 0 }, "pos4": { "x": -20, "y": 13, "z": 0 } }, { "pos1": { "x": -60, "y": 125, "z": 0 }, "pos2": { "x": -12.792, "y": 92.675, "z": 0 }, "pos3": { "x": -27.792, "y": 23.675, "z": 0 }, "pos4": { "x": -14, "y": 24, "z": 0 } }, { "pos1": { "x": -185, "y": 63, "z": 0 }, "pos2": { "x": -34.792, "y": 37.675, "z": 0 }, "pos3": { "x": -154.792, "y": 23.675, "z": 0 }, "pos4": { "x": -22, "y": 16, "z": 0 } }, { "pos1": { "x": -57, "y": 178, "z": 0 }, "pos2": { "x": -17.792, "y": 166.675, "z": 0 }, "pos3": { "x": -31.792, "y": 33.675, "z": 0 }, "pos4": { "x": -14, "y": 37, "z": 0 } }, { "pos1": { "x": -123, "y": 127, "z": 0 }, "pos2": { "x": -25.792, "y": 99.675, "z": 0 }, "pos3": { "x": -97.792, "y": 27.675, "z": 0 }, "pos4": { "x": -27, "y": 19, "z": 0 } }, { "pos1": { "x": -62, "y": 181, "z": 0 }, "pos2": { "x": -24.792, "y": 275.675, "z": 0 }, "pos3": { "x": -31.792, "y": 35.675, "z": 0 }, "pos4": { "x": -7, "y": 39, "z": 0 } }, { "pos1": { "x": -181, "y": 180, "z": 0 }, "pos2": { "x": -31.792, "y": 163.675, "z": 0 }, "pos3": { "x": -33.792, "y": 34.675, "z": 0 }, "pos4": { "x": -18, "y": 25, "z": 0 } }, { "pos1": { "x": -182, "y": 182, "z": 0 }, "pos2": { "x": -25.792, "y": 38.675, "z": 0 }, "pos3": { "x": -153.792, "y": 34.675, "z": 0 }, "pos4": { "x": -23, "y": 14, "z": 0 } }, { "pos1": { "x": -186, "y": 61, "z": 0 }, "pos2": { "x": -37.792, "y": 37.675, "z": 0 }, "pos3": { "x": -36.792, "y": 26.675, "z": 0 }, "pos4": { "x": -24, "y": 17, "z": 0 } }, { "pos1": { "x": -62, "y": 177, "z": 0 }, "pos2": { "x": 93.208, "y": 276.675, "z": 0 }, "pos3": { "x": -33.792, "y": 34.675, "z": 0 }, "pos4": { "x": 3, "y": 31, "z": 0 } }, { "pos1": { "x": 58, "y": 179, "z": 0 }, "pos2": { "x": 205.225, "y": 154.034, "z": 0 }, "pos3": { "x": -29.642, "y": 25.691, "z": 0 }, "pos4": { "x": 7.218, "y": 29.765, "z": 0 } }, { "pos1": { "x": -57, "y": 182, "z": 0 }, "pos2": { "x": -25.792, "y": 37.675, "z": 0 }, "pos3": { "x": -35.792, "y": 33.675, "z": 0 }, "pos4": { "x": -14, "y": 12, "z": 0 } }, { "pos1": { "x": -180, "y": 62, "z": 0 }, "pos2": { "x": -35.792, "y": 36.675, "z": 0 }, "pos3": { "x": -271.792, "y": 24.675, "z": 0 }, "pos4": { "x": -17, "y": 20, "z": 0 } }, { "pos1": { "x": -62, "y": 178, "z": 0 }, "pos2": { "x": 87.208, "y": 164.675, "z": 0 }, "pos3": { "x": -31.792, "y": 35.675, "z": 0 }, "pos4": { "x": -6, "y": 24, "z": 0 } }, { "pos1": { "x": -176, "y": 60, "z": 0 }, "pos2": { "x": -33.792, "y": 38.675, "z": 0 }, "pos3": { "x": -154.792, "y": 29.675, "z": 0 }, "pos4": { "x": -29, "y": 16, "z": 0 } }, { "pos1": { "x": -60, "y": 181, "z": 0 }, "pos2": { "x": 95.208, "y": 155.675, "z": 0 }, "pos3": { "x": -30.792, "y": 36.675, "z": 0 }, "pos4": { "x": -12, "y": 32, "z": 0 } }, { "pos1": { "x": -63, "y": 178, "z": 0 }, "pos2": { "x": -21.792, "y": 156.675, "z": 0 }, "pos3": { "x": -31.792, "y": 37.675, "z": 0 }, "pos4": { "x": -12, "y": 32, "z": 0 } }, { "pos1": { "x": -60, "y": 183, "z": 0 }, "pos2": { "x": 88.208, "y": 162.675, "z": 0 }, "pos3": { "x": -29.792, "y": 41.675, "z": 0 }, "pos4": { "x": -12, "y": 18, "z": 0 } }, { "pos1": { "x": -64, "y": 58, "z": 0 }, "pos2": { "x": -26.792, "y": 32.675, "z": 0 }, "pos3": { "x": -34.792, "y": 23.675, "z": 0 }, "pos4": { "x": -12, "y": 18, "z": 0 } }, { "pos1": { "x": -184, "y": 62, "z": 0 }, "pos2": { "x": -25.792, "y": 34.675, "z": 0 }, "pos3": { "x": -155.792, "y": 25.675, "z": 0 }, "pos4": { "x": -18, "y": 26, "z": 0 } }, { "pos1": { "x": -57, "y": 190, "z": 0 }, "pos2": { "x": 95.208, "y": 158.675, "z": 0 }, "pos3": { "x": -33.792, "y": 29.675, "z": 0 }, "pos4": { "x": -18, "y": 26, "z": 0 } }, { "pos1": { "x": -71, "y": 184, "z": 0 }, "pos2": { "x": -25.792, "y": 156.675, "z": 0 }, "pos3": { "x": -35.792, "y": 27.675, "z": 0 }, "pos4": { "x": -25, "y": 40, "z": 0 } }]; - -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,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImFzc2V0c1xcU2NyaXB0XFxwb3NpdGlvbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7QUFBQSxJQUFJLFVBQVUsR0FBRyxDQUFDLEVBQUMsTUFBTSxFQUFFLEVBQUMsR0FBRyxFQUFFLENBQUMsRUFBRSxFQUFDLEdBQUcsRUFBRSxFQUFFLEVBQUMsR0FBRyxFQUFFLENBQUMsRUFBQyxFQUFDLE1BQU0sRUFBRSxFQUFDLEdBQUcsRUFBRSxDQUFDLE1BQU0sRUFBQyxHQUFHLEVBQUUsRUFBRSxFQUFDLEdBQUcsRUFBRSxDQUFDLEVBQUMsRUFBQyxNQUFNLEVBQUUsRUFBQyxHQUFHLEVBQUUsQ0FBQyxNQUFNLEVBQUMsR0FBRyxFQUFFLE1BQU0sRUFBQyxHQUFHLEVBQUUsQ0FBQyxFQUFDLEVBQUMsTUFBTSxFQUFFLEVBQUMsR0FBRyxFQUFFLENBQUMsRUFBRSxFQUFDLEdBQUcsRUFBRSxFQUFFLEVBQUMsR0FBRyxFQUFFLENBQUMsRUFBQyxFQUFDLEVBQUMsRUFBQyxNQUFNLEVBQUUsRUFBQyxHQUFHLEVBQUUsQ0FBQyxHQUFHLEVBQUMsR0FBRyxFQUFFLEVBQUUsRUFBQyxHQUFHLEVBQUUsQ0FBQyxFQUFDLEVBQUMsTUFBTSxFQUFFLEVBQUMsR0FBRyxFQUFFLENBQUMsTUFBTSxFQUFDLEdBQUcsRUFBRSxNQUFNLEVBQUMsR0FBRyxFQUFFLENBQUMsRUFBQyxFQUFDLE1BQU0sRUFBRSxFQUFDLEdBQUcsRUFBRSxDQUFDLE1BQU0sRUFBQyxHQUFHLEVBQUUsTUFBTSxFQUFDLEdBQUcsRUFBRSxDQUFDLEVBQUMsRUFBQyxNQUFNLEVBQUUsRUFBQyxHQUFHLEVBQUUsQ0FBQyxFQUFFLEVBQUMsR0FBRyxFQUFFLEVBQUUsRUFBQyxHQUFHLEVBQUUsQ0FBQyxFQUFDLEVBQUMsRUFBQyxFQUFDLE1BQU0sRUFBRSxFQUFDLEdBQUcsRUFBRSxDQUFDLEVBQUUsRUFBQyxHQUFHLEVBQUUsR0FBRyxFQUFDLEdBQUcsRUFBRSxDQUFDLEVBQUMsRUFBQyxNQUFNLEVBQUUsRUFBQyxHQUFHLEVBQUUsQ0FBQyxNQUFNLEVBQUMsR0FBRyxFQUFFLE1BQU0sRUFBQyxHQUFHLEVBQUUsQ0FBQyxFQUFDLEVBQUMsTUFBTSxFQUFFLEVBQUMsR0FBRyxFQUFFLENBQUMsTUFBTSxFQUFDLEdBQUcsRUFBRSxNQUFNLEVBQUMsR0FBRyxFQUFFLENBQUMsRUFBQyxFQUFDLE1BQU0sRUFBRSxFQUFDLEdBQUcsRUFBRSxDQUFDLEVBQUUsRUFBQyxHQUFHLEVBQUUsRUFBRSxFQUFDLEdBQUcsRUFBRSxDQUFDLEVBQUMsRUFBQyxFQUFDLEVBQUMsTUFBTSxFQUFFLEVBQUMsR0FBRyxFQUFFLENBQUMsR0FBRyxFQUFDLEdBQUcsRUFBRSxFQUFFLEVBQUMsR0FBRyxFQUFFLENBQUMsRUFBQyxFQUFDLE1BQU0sRUFBRSxFQUFDLEdBQUcsRUFBRSxDQUFDLE1BQU0sRUFBQyxHQUFHLEVBQUUsTUFBTSxFQUFDLEdBQUcsRUFBRSxDQUFDLEVBQUMsRUFBQyxNQUFNLEVBQUUsRUFBQyxHQUFHLEVBQUUsQ0FBQyxPQUFPLEVBQUMsR0FBRyxFQUFFLE1BQU0sRUFBQyxHQUFHLEVBQUUsQ0FBQyxFQUFDLEVBQUMsTUFBTSxFQUFFLEVBQUMsR0FBRyxFQUFFLENBQUMsRUFBRSxFQUFDLEdBQUcsRUFBRSxFQUFFLEVBQUMsR0FBRyxFQUFFLENBQUMsRUFBQyxFQUFDLEVBQUMsRUFBQyxNQUFNLEVBQUUsRUFBQyxHQUFHLEVBQUUsQ0FBQyxFQUFFLEVBQUMsR0FBRyxFQUFFLEdBQUcsRUFBQyxHQUFHLEVBQUUsQ0FBQyxFQUFDLEVBQUMsTUFBTSxFQUFFLEVBQUMsR0FBRyxFQUFFLENBQUMsTUFBTSxFQUFDLEdBQUcsRUFBRSxPQUFPLEVBQUMsR0FBRyxFQUFFLENBQUMsRUFBQyxFQUFDLE1BQU0sRUFBRSxFQUFDLEdBQUcsRUFBRSxDQUFDLE1BQU0sRUFBQyxHQUFHLEVBQUUsTUFBTSxFQUFDLEdBQUcsRUFBRSxDQUFDLEVBQUMsRUFBQyxNQUFNLEVBQUUsRUFBQyxHQUFHLEVBQUUsQ0FBQyxFQUFFLEVBQUMsR0FBRyxFQUFFLEVBQUUsRUFBQyxHQUFHLEVBQUUsQ0FBQyxFQUFDLEVBQUMsRUFBQyxFQUFDLE1BQU0sRUFBRSxFQUFDLEdBQUcsRUFBRSxDQUFDLEdBQUcsRUFBQyxHQUFHLEVBQUUsR0FBRyxFQUFDLEdBQUcsRUFBRSxDQUFDLEVBQUMsRUFBQyxNQUFNLEVBQUUsRUFBQyxHQUFHLEVBQUUsQ0FBQyxNQUFNLEVBQUMsR0FBRyxFQUFFLE1BQU0sRUFBQyxHQUFHLEVBQUUsQ0FBQyxFQUFDLEVBQUMsTUFBTSxFQUFFLEVBQUMsR0FBRyxFQUFFLENBQUMsTUFBTSxFQUFDLEdBQUcsRUFBRSxNQUFNLEVBQUMsR0FBRyxFQUFFLENBQUMsRUFBQyxFQUFDLE1BQU0sRUFBRSxFQUFDLEdBQUcsRUFBRSxDQUFDLEVBQUUsRUFBQyxHQUFHLEVBQUUsRUFBRSxFQUFDLEdBQUcsRUFBRSxDQUFDLEVBQUMsRUFBQyxFQUFDLEVBQUMsTUFBTSxFQUFFLEVBQUMsR0FBRyxFQUFFLENBQUMsRUFBRSxFQUFDLEdBQUcsRUFBRSxHQUFHLEVBQUMsR0FBRyxFQUFFLENBQUMsRUFBQyxFQUFDLE1BQU0sRUFBRSxFQUFDLEdBQUcsRUFBRSxDQUFDLE1BQU0sRUFBQyxHQUFHLEVBQUUsT0FBTyxFQUFDLEdBQUcsRUFBRSxDQUFDLEVBQUMsRUFBQyxNQUFNLEVBQUUsRUFBQyxHQUFHLEVBQUUsQ0FBQyxNQUFNLEVBQUMsR0FBRyxFQUFFLE1BQU0sRUFBQyxHQUFHLEVBQUUsQ0FBQyxFQUFDLEVBQUMsTUFBTSxFQUFFLEVBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxFQUFDLEdBQUcsRUFBRSxFQUFFLEVBQUMsR0FBRyxFQUFFLENBQUMsRUFBQyxFQUFDLEVBQUMsRUFBQyxNQUFNLEVBQUUsRUFBQyxHQUFHLEVBQUUsQ0FBQyxHQUFHLEVBQUMsR0FBRyxFQUFFLEdBQUcsRUFBQyxHQUFHLEVBQUUsQ0FBQyxFQUFDLEVBQUMsTUFBTSxFQUFFLEVBQUMsR0FBRyxFQUFFLENBQUMsTUFBTSxFQUFDLEdBQUcsRUFBRSxPQUFPLEVBQUMsR0FBRyxFQUFFLENBQUMsRUFBQyxFQUFDLE1BQU0sRUFBRSxFQUFDLEdBQUcsRUFBRSxDQUFDLE1BQU0sRUFBQyxHQUFHLEVBQUUsTUFBTSxFQUFDLEdBQUcsRUFBRSxDQUFDLEVBQUMsRUFBQyxNQUFNLEVBQUUsRUFBQyxHQUFHLEVBQUUsQ0FBQyxFQUFFLEVBQUMsR0FBRyxFQUFFLEVBQUUsRUFBQyxHQUFHLEVBQUUsQ0FBQyxFQUFDLEVBQUMsRUFBQyxFQUFDLE1BQU0sRUFBRSxFQUFDLEdBQUcsRUFBRSxDQUFDLEdBQUcsRUFBQyxHQUFHLEVBQUUsR0FBRyxFQUFDLEdBQUcsRUFBRSxDQUFDLEVBQUMsRUFBQyxNQUFNLEVBQUUsRUFBQyxHQUFHLEVBQUUsQ0FBQyxNQUFNLEVBQUMsR0FBRyxFQUFFLE1BQU0sRUFBQyxHQUFHLEVBQUUsQ0FBQyxFQUFDLEVBQUMsTUFBTSxFQUFFLEVBQUMsR0FBRyxFQUFFLENBQUMsT0FBTyxFQUFDLEdBQUcsRUFBRSxNQUFNLEVBQUMsR0FBRyxFQUFFLENBQUMsRUFBQyxFQUFDLE1BQU0sRUFBRSxFQUFDLEdBQUcsRUFBRSxDQUFDLEVBQUUsRUFBQyxHQUFHLEVBQUUsRUFBRSxFQUFDLEdBQUcsRUFBRSxDQUFDLEVBQUMsRUFBQyxFQUFDLEVBQUMsTUFBTSxFQUFFLEVBQUMsR0FBRyxFQUFFLENBQUMsR0FBRyxFQUFDLEdBQUcsRUFBRSxFQUFFLEVBQUMsR0FBRyxFQUFFLENBQUMsRUFBQyxFQUFDLE1BQU0sRUFBRSxFQUFDLEdBQUcsRUFBRSxDQUFDLE1BQU0sRUFBQyxHQUFHLEVBQUUsTUFBTSxFQUFDLEdBQUcsRUFBRSxDQUFDLEVBQUMsRUFBQyxNQUFNLEVBQUUsRUFBQyxHQUFHLEVBQUUsQ0FBQyxNQUFNLEVBQUMsR0FBRyxFQUFFLE1BQU0sRUFBQyxHQUFHLEVBQUUsQ0FBQyxFQUFDLEVBQUMsTUFBTSxFQUFFLEVBQUMsR0FBRyxFQUFFLENBQUMsRUFBRSxFQUFDLEdBQUcsRUFBRSxFQUFFLEVBQUMsR0FBRyxFQUFFLENBQUMsRUFBQyxFQUFDLEVBQUMsRUFBQyxNQUFNLEVBQUUsRUFBQyxHQUFHLEVBQUUsQ0FBQyxFQUFFLEVBQUMsR0FBRyxFQUFFLEdBQUcsRUFBQyxHQUFHLEVBQUUsQ0FBQyxFQUFDLEVBQUMsTUFBTSxFQUFFLEVBQUMsR0FBRyxFQUFFLE1BQU0sRUFBQyxHQUFHLEVBQUUsT0FBTyxFQUFDLEdBQUcsRUFBRSxDQUFDLEVBQUMsRUFBQyxNQUFNLEVBQUUsRUFBQyxHQUFHLEVBQUUsQ0FBQyxNQUFNLEVBQUMsR0FBRyxFQUFFLE1BQU0sRUFBQyxHQUFHLEVBQUUsQ0FBQyxFQUFDLEVBQUMsTUFBTSxFQUFFLEVBQUMsR0FBRyxFQUFFLENBQUMsRUFBQyxHQUFHLEVBQUUsRUFBRSxFQUFDLEdBQUcsRUFBRSxDQUFDLEVBQUMsRUFBQyxFQUFDLEVBQUMsTUFBTSxFQUFFLEVBQUMsR0FBRyxFQUFFLEVBQUUsRUFBQyxHQUFHLEVBQUUsR0FBRyxFQUFDLEdBQUcsRUFBRSxDQUFDLEVBQUMsRUFBQyxNQUFNLEVBQUUsRUFBQyxHQUFHLEVBQUUsT0FBTyxFQUFDLEdBQUcsRUFBRSxPQUFPLEVBQUMsR0FBRyxFQUFFLENBQUMsRUFBQyxFQUFDLE1BQU0sRUFBRSxFQUFDLEdBQUcsRUFBRSxDQUFDLE1BQU0sRUFBQyxHQUFHLEVBQUUsTUFBTSxFQUFDLEdBQUcsRUFBRSxDQUFDLEVBQUMsRUFBQyxNQUFNLEVBQUUsRUFBQyxHQUFHLEVBQUUsS0FBSyxFQUFDLEdBQUcsRUFBRSxNQUFNLEVBQUMsR0FBRyxFQUFFLENBQUMsRUFBQyxFQUFDLEVBQUMsRUFBQyxNQUFNLEVBQUUsRUFBQyxHQUFHLEVBQUUsQ0FBQyxFQUFFLEVBQUMsR0FBRyxFQUFFLEdBQUcsRUFBQyxHQUFHLEVBQUUsQ0FBQyxFQUFDLEVBQUMsTUFBTSxFQUFFLEVBQUMsR0FBRyxFQUFFLENBQUMsTUFBTSxFQUFDLEdBQUcsRUFBRSxNQUFNLEVBQUMsR0FBRyxFQUFFLENBQUMsRUFBQyxFQUFDLE1BQU0sRUFBRSxFQUFDLEdBQUcsRUFBRSxDQUFDLE1BQU0sRUFBQyxHQUFHLEVBQUUsTUFBTSxFQUFDLEdBQUcsRUFBRSxDQUFDLEVBQUMsRUFBQyxNQUFNLEVBQUUsRUFBQyxHQUFHLEVBQUUsQ0FBQyxFQUFFLEVBQUMsR0FBRyxFQUFFLEVBQUUsRUFBQyxHQUFHLEVBQUUsQ0FBQyxFQUFDLEVBQUMsRUFBQyxFQUFDLE1BQU0sRUFBRSxFQUFDLEdBQUcsRUFBRSxDQUFDLEdBQUcsRUFBQyxHQUFHLEVBQUUsRUFBRSxFQUFDLEdBQUcsRUFBRSxDQUFDLEVBQUMsRUFBQyxNQUFNLEVBQUUsRUFBQyxHQUFHLEVBQUUsQ0FBQyxNQUFNLEVBQUMsR0FBRyxFQUFFLE1BQU0sRUFBQyxHQUFHLEVBQUUsQ0FBQyxFQUFDLEVBQUMsTUFBTSxFQUFFLEVBQUMsR0FBRyxFQUFFLENBQUMsT0FBTyxFQUFDLEdBQUcsRUFBRSxNQUFNLEVBQUMsR0FBRyxFQUFFLENBQUMsRUFBQyxFQUFDLE1BQU0sRUFBRSxFQUFDLEdBQUcsRUFBRSxDQUFDLEVBQUUsRUFBQyxHQUFHLEVBQUUsRUFBRSxFQUFDLEdBQUcsRUFBRSxDQUFDLEVBQUMsRUFBQyxFQUFDLEVBQUMsTUFBTSxFQUFFLEVBQUMsR0FBRyxFQUFFLENBQUMsRUFBRSxFQUFDLEdBQUcsRUFBRSxHQUFHLEVBQUMsR0FBRyxFQUFFLENBQUMsRUFBQyxFQUFDLE1BQU0sRUFBRSxFQUFDLEdBQUcsRUFBRSxNQUFNLEVBQUMsR0FBRyxFQUFFLE9BQU8sRUFBQyxHQUFHLEVBQUUsQ0FBQyxFQUFDLEVBQUMsTUFBTSxFQUFFLEVBQUMsR0FBRyxFQUFFLENBQUMsTUFBTSxFQUFDLEdBQUcsRUFBRSxNQUFNLEVBQUMsR0FBRyxFQUFFLENBQUMsRUFBQyxFQUFDLE1BQU0sRUFBRSxFQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsRUFBQyxHQUFHLEVBQUUsRUFBRSxFQUFDLEdBQUcsRUFBRSxDQUFDLEVBQUMsRUFBQyxFQUFDLEVBQUMsTUFBTSxFQUFFLEVBQUMsR0FBRyxFQUFFLENBQUMsR0FBRyxFQUFDLEdBQUcsRUFBRSxFQUFFLEVBQUMsR0FBRyxFQUFFLENBQUMsRUFBQyxFQUFDLE1BQU0sRUFBRSxFQUFDLEdBQUcsRUFBRSxDQUFDLE1BQU0sRUFBQyxHQUFHLEVBQUUsTUFBTSxFQUFDLEdBQUcsRUFBRSxDQUFDLEVBQUMsRUFBQyxNQUFNLEVBQUUsRUFBQyxHQUFHLEVBQUUsQ0FBQyxPQUFPLEVBQUMsR0FBRyxFQUFFLE1BQU0sRUFBQyxHQUFHLEVBQUUsQ0FBQyxFQUFDLEVBQUMsTUFBTSxFQUFFLEVBQUMsR0FBRyxFQUFFLENBQUMsRUFBRSxFQUFDLEdBQUcsRUFBRSxFQUFFLEVBQUMsR0FBRyxFQUFFLENBQUMsRUFBQyxFQUFDLEVBQUMsRUFBQyxNQUFNLEVBQUUsRUFBQyxHQUFHLEVBQUUsQ0FBQyxFQUFFLEVBQUMsR0FBRyxFQUFFLEdBQUcsRUFBQyxHQUFHLEVBQUUsQ0FBQyxFQUFDLEVBQUMsTUFBTSxFQUFFLEVBQUMsR0FBRyxFQUFFLE1BQU0sRUFBQyxHQUFHLEVBQUUsT0FBTyxFQUFDLEdBQUcsRUFBRSxDQUFDLEVBQUMsRUFBQyxNQUFNLEVBQUUsRUFBQyxHQUFHLEVBQUUsQ0FBQyxNQUFNLEVBQUMsR0FBRyxFQUFFLE1BQU0sRUFBQyxHQUFHLEVBQUUsQ0FBQyxFQUFDLEVBQUMsTUFBTSxFQUFFLEVBQUMsR0FBRyxFQUFFLENBQUMsRUFBRSxFQUFDLEdBQUcsRUFBRSxFQUFFLEVBQUMsR0FBRyxFQUFFLENBQUMsRUFBQyxFQUFDLEVBQUMsRUFBQyxNQUFNLEVBQUUsRUFBQyxHQUFHLEVBQUUsQ0FBQyxFQUFFLEVBQUMsR0FBRyxFQUFFLEdBQUcsRUFBQyxHQUFHLEVBQUUsQ0FBQyxFQUFDLEVBQUMsTUFBTSxFQUFFLEVBQUMsR0FBRyxFQUFFLENBQUMsTUFBTSxFQUFDLEdBQUcsRUFBRSxPQUFPLEVBQUMsR0FBRyxFQUFFLENBQUMsRUFBQyxFQUFDLE1BQU0sRUFBRSxFQUFDLEdBQUcsRUFBRSxDQUFDLE1BQU0sRUFBQyxHQUFHLEVBQUUsTUFBTSxFQUFDLEdBQUcsRUFBRSxDQUFDLEVBQUMsRUFBQyxNQUFNLEVBQUUsRUFBQyxHQUFHLEVBQUUsQ0FBQyxFQUFFLEVBQUMsR0FBRyxFQUFFLEVBQUUsRUFBQyxHQUFHLEVBQUUsQ0FBQyxFQUFDLEVBQUMsRUFBQyxFQUFDLE1BQU0sRUFBRSxFQUFDLEdBQUcsRUFBRSxDQUFDLEVBQUUsRUFBQyxHQUFHLEVBQUUsR0FBRyxFQUFDLEdBQUcsRUFBRSxDQUFDLEVBQUMsRUFBQyxNQUFNLEVBQUUsRUFBQyxHQUFHLEVBQUUsTUFBTSxFQUFDLEdBQUcsRUFBRSxPQUFPLEVBQUMsR0FBRyxFQUFFLENBQUMsRUFBQyxFQUFDLE1BQU0sRUFBRSxFQUFDLEdBQUcsRUFBRSxDQUFDLE1BQU0sRUFBQyxHQUFHLEVBQUUsTUFBTSxFQUFDLEdBQUcsRUFBRSxDQUFDLEVBQUMsRUFBQyxNQUFNLEVBQUUsRUFBQyxHQUFHLEVBQUUsQ0FBQyxFQUFFLEVBQUMsR0FBRyxFQUFFLEVBQUUsRUFBQyxHQUFHLEVBQUUsQ0FBQyxFQUFDLEVBQUMsRUFBQyxFQUFDLE1BQU0sRUFBRSxFQUFDLEdBQUcsRUFBRSxDQUFDLEVBQUUsRUFBQyxHQUFHLEVBQUUsRUFBRSxFQUFDLEdBQUcsRUFBRSxDQUFDLEVBQUMsRUFBQyxNQUFNLEVBQUUsRUFBQyxHQUFHLEVBQUUsQ0FBQyxNQUFNLEVBQUMsR0FBRyxFQUFFLE1BQU0sRUFBQyxHQUFHLEVBQUUsQ0FBQyxFQUFDLEVBQUMsTUFBTSxFQUFFLEVBQUMsR0FBRyxFQUFFLENBQUMsTUFBTSxFQUFDLEdBQUcsRUFBRSxNQUFNLEVBQUMsR0FBRyxFQUFFLENBQUMsRUFBQyxFQUFDLE1BQU0sRUFBRSxFQUFDLEdBQUcsRUFBRSxDQUFDLEVBQUUsRUFBQyxHQUFHLEVBQUUsRUFBRSxFQUFDLEdBQUcsRUFBRSxDQUFDLEVBQUMsRUFBQyxFQUFDLEVBQUMsTUFBTSxFQUFFLEVBQUMsR0FBRyxFQUFFLENBQUMsR0FBRyxFQUFDLEdBQUcsRUFBRSxFQUFFLEVBQUMsR0FBRyxFQUFFLENBQUMsRUFBQyxFQUFDLE1BQU0sRUFBRSxFQUFDLEdBQUcsRUFBRSxDQUFDLE1BQU0sRUFBQyxHQUFHLEVBQUUsTUFBTSxFQUFDLEdBQUcsRUFBRSxDQUFDLEVBQUMsRUFBQyxNQUFNLEVBQUUsRUFBQyxHQUFHLEVBQUUsQ0FBQyxPQUFPLEVBQUMsR0FBRyxFQUFFLE1BQU0sRUFBQyxHQUFHLEVBQUUsQ0FBQyxFQUFDLEVBQUMsTUFBTSxFQUFFLEVBQUMsR0FBRyxFQUFFLENBQUMsRUFBRSxFQUFDLEdBQUcsRUFBRSxFQUFFLEVBQUMsR0FBRyxFQUFFLENBQUMsRUFBQyxFQUFDLEVBQUMsRUFBQyxNQUFNLEVBQUUsRUFBQyxHQUFHLEVBQUUsQ0FBQyxFQUFFLEVBQUMsR0FBRyxFQUFFLEdBQUcsRUFBQyxHQUFHLEVBQUUsQ0FBQyxFQUFDLEVBQUMsTUFBTSxFQUFFLEVBQUMsR0FBRyxFQUFFLE1BQU0sRUFBQyxHQUFHLEVBQUUsT0FBTyxFQUFDLEdBQUcsRUFBRSxDQUFDLEVBQUMsRUFBQyxNQUFNLEVBQUUsRUFBQyxHQUFHLEVBQUUsQ0FBQyxNQUFNLEVBQUMsR0FBRyxFQUFFLE1BQU0sRUFBQyxHQUFHLEVBQUUsQ0FBQyxFQUFDLEVBQUMsTUFBTSxFQUFFLEVBQUMsR0FBRyxFQUFFLENBQUMsRUFBRSxFQUFDLEdBQUcsRUFBRSxFQUFFLEVBQUMsR0FBRyxFQUFFLENBQUMsRUFBQyxFQUFDLEVBQUMsRUFBQyxNQUFNLEVBQUUsRUFBQyxHQUFHLEVBQUUsQ0FBQyxFQUFFLEVBQUMsR0FBRyxFQUFFLEdBQUcsRUFBQyxHQUFHLEVBQUUsQ0FBQyxFQUFDLEVBQUMsTUFBTSxFQUFFLEVBQUMsR0FBRyxFQUFFLENBQUMsTUFBTSxFQUFDLEdBQUcsRUFBRSxPQUFPLEVBQUMsR0FBRyxFQUFFLENBQUMsRUFBQyxFQUFDLE1BQU0sRUFBRSxFQUFDLEdBQUcsRUFBRSxDQUFDLE1BQU0sRUFBQyxHQUFHLEVBQUUsTUFBTSxFQUFDLEdBQUcsRUFBRSxDQUFDLEVBQUMsRUFBQyxNQUFNLEVBQUUsRUFBQyxHQUFHLEVBQUUsQ0FBQyxFQUFFLEVBQUMsR0FBRyxFQUFFLEVBQUUsRUFBQyxHQUFHLEVBQUUsQ0FBQyxFQUFDLEVBQUMsQ0FBQyxDQUFDIiwiZmlsZSI6IiIsInNvdXJjZVJvb3QiOiIvIiwic291cmNlc0NvbnRlbnQiOlsidmFyIF9QUk9QX0lORk8gPSBbe1wicG9zMVwiOiB7XCJ4XCI6IC02MCxcInlcIjogNjAsXCJ6XCI6IDB9LFwicG9zMlwiOiB7XCJ4XCI6IC0xNi40NDIsXCJ5XCI6IDMwLFwielwiOiAwfSxcInBvczNcIjoge1wieFwiOiAtMzQuMzYyLFwieVwiOiAxMy4yNDYsXCJ6XCI6IDB9LFwicG9zNFwiOiB7XCJ4XCI6IC0xNyxcInlcIjogMTIsXCJ6XCI6IDB9fSx7XCJwb3MxXCI6IHtcInhcIjogLTEyNixcInlcIjogNjMsXCJ6XCI6IDB9LFwicG9zMlwiOiB7XCJ4XCI6IC0yNS43OTIsXCJ5XCI6IDM0LjY3NSxcInpcIjogMH0sXCJwb3MzXCI6IHtcInhcIjogLTk0Ljc5MixcInlcIjogMjEuNjc1LFwielwiOiAwfSxcInBvczRcIjoge1wieFwiOiAtMjAsXCJ5XCI6IDEzLFwielwiOiAwfX0se1wicG9zMVwiOiB7XCJ4XCI6IC02MCxcInlcIjogMTI1LFwielwiOiAwfSxcInBvczJcIjoge1wieFwiOiAtMTIuNzkyLFwieVwiOiA5Mi42NzUsXCJ6XCI6IDB9LFwicG9zM1wiOiB7XCJ4XCI6IC0yNy43OTIsXCJ5XCI6IDIzLjY3NSxcInpcIjogMH0sXCJwb3M0XCI6IHtcInhcIjogLTE0LFwieVwiOiAyNCxcInpcIjogMH19LHtcInBvczFcIjoge1wieFwiOiAtMTg1LFwieVwiOiA2MyxcInpcIjogMH0sXCJwb3MyXCI6IHtcInhcIjogLTM0Ljc5MixcInlcIjogMzcuNjc1LFwielwiOiAwfSxcInBvczNcIjoge1wieFwiOiAtMTU0Ljc5MixcInlcIjogMjMuNjc1LFwielwiOiAwfSxcInBvczRcIjoge1wieFwiOiAtMjIsXCJ5XCI6IDE2LFwielwiOiAwfX0se1wicG9zMVwiOiB7XCJ4XCI6IC01NyxcInlcIjogMTc4LFwielwiOiAwfSxcInBvczJcIjoge1wieFwiOiAtMTcuNzkyLFwieVwiOiAxNjYuNjc1LFwielwiOiAwfSxcInBvczNcIjoge1wieFwiOiAtMzEuNzkyLFwieVwiOiAzMy42NzUsXCJ6XCI6IDB9LFwicG9zNFwiOiB7XCJ4XCI6IC0xNCxcInlcIjogMzcsXCJ6XCI6IDB9fSx7XCJwb3MxXCI6IHtcInhcIjogLTEyMyxcInlcIjogMTI3LFwielwiOiAwfSxcInBvczJcIjoge1wieFwiOiAtMjUuNzkyLFwieVwiOiA5OS42NzUsXCJ6XCI6IDB9LFwicG9zM1wiOiB7XCJ4XCI6IC05Ny43OTIsXCJ5XCI6IDI3LjY3NSxcInpcIjogMH0sXCJwb3M0XCI6IHtcInhcIjogLTI3LFwieVwiOiAxOSxcInpcIjogMH19LHtcInBvczFcIjoge1wieFwiOiAtNjIsXCJ5XCI6IDE4MSxcInpcIjogMH0sXCJwb3MyXCI6IHtcInhcIjogLTI0Ljc5MixcInlcIjogMjc1LjY3NSxcInpcIjogMH0sXCJwb3MzXCI6IHtcInhcIjogLTMxLjc5MixcInlcIjogMzUuNjc1LFwielwiOiAwfSxcInBvczRcIjoge1wieFwiOiAtNyxcInlcIjogMzksXCJ6XCI6IDB9fSx7XCJwb3MxXCI6IHtcInhcIjogLTE4MSxcInlcIjogMTgwLFwielwiOiAwfSxcInBvczJcIjoge1wieFwiOiAtMzEuNzkyLFwieVwiOiAxNjMuNjc1LFwielwiOiAwfSxcInBvczNcIjoge1wieFwiOiAtMzMuNzkyLFwieVwiOiAzNC42NzUsXCJ6XCI6IDB9LFwicG9zNFwiOiB7XCJ4XCI6IC0xOCxcInlcIjogMjUsXCJ6XCI6IDB9fSx7XCJwb3MxXCI6IHtcInhcIjogLTE4MixcInlcIjogMTgyLFwielwiOiAwfSxcInBvczJcIjoge1wieFwiOiAtMjUuNzkyLFwieVwiOiAzOC42NzUsXCJ6XCI6IDB9LFwicG9zM1wiOiB7XCJ4XCI6IC0xNTMuNzkyLFwieVwiOiAzNC42NzUsXCJ6XCI6IDB9LFwicG9zNFwiOiB7XCJ4XCI6IC0yMyxcInlcIjogMTQsXCJ6XCI6IDB9fSx7XCJwb3MxXCI6IHtcInhcIjogLTE4NixcInlcIjogNjEsXCJ6XCI6IDB9LFwicG9zMlwiOiB7XCJ4XCI6IC0zNy43OTIsXCJ5XCI6IDM3LjY3NSxcInpcIjogMH0sXCJwb3MzXCI6IHtcInhcIjogLTM2Ljc5MixcInlcIjogMjYuNjc1LFwielwiOiAwfSxcInBvczRcIjoge1wieFwiOiAtMjQsXCJ5XCI6IDE3LFwielwiOiAwfX0se1wicG9zMVwiOiB7XCJ4XCI6IC02MixcInlcIjogMTc3LFwielwiOiAwfSxcInBvczJcIjoge1wieFwiOiA5My4yMDgsXCJ5XCI6IDI3Ni42NzUsXCJ6XCI6IDB9LFwicG9zM1wiOiB7XCJ4XCI6IC0zMy43OTIsXCJ5XCI6IDM0LjY3NSxcInpcIjogMH0sXCJwb3M0XCI6IHtcInhcIjogMyxcInlcIjogMzEsXCJ6XCI6IDB9fSx7XCJwb3MxXCI6IHtcInhcIjogNTgsXCJ5XCI6IDE3OSxcInpcIjogMH0sXCJwb3MyXCI6IHtcInhcIjogMjA1LjIyNSxcInlcIjogMTU0LjAzNCxcInpcIjogMH0sXCJwb3MzXCI6IHtcInhcIjogLTI5LjY0MixcInlcIjogMjUuNjkxLFwielwiOiAwfSxcInBvczRcIjoge1wieFwiOiA3LjIxOCxcInlcIjogMjkuNzY1LFwielwiOiAwfX0se1wicG9zMVwiOiB7XCJ4XCI6IC01NyxcInlcIjogMTgyLFwielwiOiAwfSxcInBvczJcIjoge1wieFwiOiAtMjUuNzkyLFwieVwiOiAzNy42NzUsXCJ6XCI6IDB9LFwicG9zM1wiOiB7XCJ4XCI6IC0zNS43OTIsXCJ5XCI6IDMzLjY3NSxcInpcIjogMH0sXCJwb3M0XCI6IHtcInhcIjogLTE0LFwieVwiOiAxMixcInpcIjogMH19LHtcInBvczFcIjoge1wieFwiOiAtMTgwLFwieVwiOiA2MixcInpcIjogMH0sXCJwb3MyXCI6IHtcInhcIjogLTM1Ljc5MixcInlcIjogMzYuNjc1LFwielwiOiAwfSxcInBvczNcIjoge1wieFwiOiAtMjcxLjc5MixcInlcIjogMjQuNjc1LFwielwiOiAwfSxcInBvczRcIjoge1wieFwiOiAtMTcsXCJ5XCI6IDIwLFwielwiOiAwfX0se1wicG9zMVwiOiB7XCJ4XCI6IC02MixcInlcIjogMTc4LFwielwiOiAwfSxcInBvczJcIjoge1wieFwiOiA4Ny4yMDgsXCJ5XCI6IDE2NC42NzUsXCJ6XCI6IDB9LFwicG9zM1wiOiB7XCJ4XCI6IC0zMS43OTIsXCJ5XCI6IDM1LjY3NSxcInpcIjogMH0sXCJwb3M0XCI6IHtcInhcIjogLTYsXCJ5XCI6IDI0LFwielwiOiAwfX0se1wicG9zMVwiOiB7XCJ4XCI6IC0xNzYsXCJ5XCI6IDYwLFwielwiOiAwfSxcInBvczJcIjoge1wieFwiOiAtMzMuNzkyLFwieVwiOiAzOC42NzUsXCJ6XCI6IDB9LFwicG9zM1wiOiB7XCJ4XCI6IC0xNTQuNzkyLFwieVwiOiAyOS42NzUsXCJ6XCI6IDB9LFwicG9zNFwiOiB7XCJ4XCI6IC0yOSxcInlcIjogMTYsXCJ6XCI6IDB9fSx7XCJwb3MxXCI6IHtcInhcIjogLTYwLFwieVwiOiAxODEsXCJ6XCI6IDB9LFwicG9zMlwiOiB7XCJ4XCI6IDk1LjIwOCxcInlcIjogMTU1LjY3NSxcInpcIjogMH0sXCJwb3MzXCI6IHtcInhcIjogLTMwLjc5MixcInlcIjogMzYuNjc1LFwielwiOiAwfSxcInBvczRcIjoge1wieFwiOiAtMTIsXCJ5XCI6IDMyLFwielwiOiAwfX0se1wicG9zMVwiOiB7XCJ4XCI6IC02MyxcInlcIjogMTc4LFwielwiOiAwfSxcInBvczJcIjoge1wieFwiOiAtMjEuNzkyLFwieVwiOiAxNTYuNjc1LFwielwiOiAwfSxcInBvczNcIjoge1wieFwiOiAtMzEuNzkyLFwieVwiOiAzNy42NzUsXCJ6XCI6IDB9LFwicG9zNFwiOiB7XCJ4XCI6IC0xMixcInlcIjogMzIsXCJ6XCI6IDB9fSx7XCJwb3MxXCI6IHtcInhcIjogLTYwLFwieVwiOiAxODMsXCJ6XCI6IDB9LFwicG9zMlwiOiB7XCJ4XCI6IDg4LjIwOCxcInlcIjogMTYyLjY3NSxcInpcIjogMH0sXCJwb3MzXCI6IHtcInhcIjogLTI5Ljc5MixcInlcIjogNDEuNjc1LFwielwiOiAwfSxcInBvczRcIjoge1wieFwiOiAtMTIsXCJ5XCI6IDE4LFwielwiOiAwfX0se1wicG9zMVwiOiB7XCJ4XCI6IC02NCxcInlcIjogNTgsXCJ6XCI6IDB9LFwicG9zMlwiOiB7XCJ4XCI6IC0yNi43OTIsXCJ5XCI6IDMyLjY3NSxcInpcIjogMH0sXCJwb3MzXCI6IHtcInhcIjogLTM0Ljc5MixcInlcIjogMjMuNjc1LFwielwiOiAwfSxcInBvczRcIjoge1wieFwiOiAtMTIsXCJ5XCI6IDE4LFwielwiOiAwfX0se1wicG9zMVwiOiB7XCJ4XCI6IC0xODQsXCJ5XCI6IDYyLFwielwiOiAwfSxcInBvczJcIjoge1wieFwiOiAtMjUuNzkyLFwieVwiOiAzNC42NzUsXCJ6XCI6IDB9LFwicG9zM1wiOiB7XCJ4XCI6IC0xNTUuNzkyLFwieVwiOiAyNS42NzUsXCJ6XCI6IDB9LFwicG9zNFwiOiB7XCJ4XCI6IC0xOCxcInlcIjogMjYsXCJ6XCI6IDB9fSx7XCJwb3MxXCI6IHtcInhcIjogLTU3LFwieVwiOiAxOTAsXCJ6XCI6IDB9LFwicG9zMlwiOiB7XCJ4XCI6IDk1LjIwOCxcInlcIjogMTU4LjY3NSxcInpcIjogMH0sXCJwb3MzXCI6IHtcInhcIjogLTMzLjc5MixcInlcIjogMjkuNjc1LFwielwiOiAwfSxcInBvczRcIjoge1wieFwiOiAtMTgsXCJ5XCI6IDI2LFwielwiOiAwfX0se1wicG9zMVwiOiB7XCJ4XCI6IC03MSxcInlcIjogMTg0LFwielwiOiAwfSxcInBvczJcIjoge1wieFwiOiAtMjUuNzkyLFwieVwiOiAxNTYuNjc1LFwielwiOiAwfSxcInBvczNcIjoge1wieFwiOiAtMzUuNzkyLFwieVwiOiAyNy42NzUsXCJ6XCI6IDB9LFwicG9zNFwiOiB7XCJ4XCI6IC0yNSxcInlcIjogNDAsXCJ6XCI6IDB9fV07Il19 -//------QC-SOURCE-SPLIT------ - - (function() { - var nodeEnv = typeof require !== 'undefined' && typeof process !== 'undefined'; - var __module = nodeEnv ? module : {exports:{}}; - var __filename = 'preview-scripts/assets/Script/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, '3bad2uyOw5MzLq3b5g9aHn2', 'Window'); -// Script/Window.ts - -"use strict"; -// Learn TypeScript: -// - https://docs.cocos.com/creator/manual/en/scripting/typescript.html -// Learn Attribute: -// - https://docs.cocos.com/creator/manual/en/scripting/reference/attributes.html -// Learn life-cycle callbacks: -// - https://docs.cocos.com/creator/manual/en/scripting/life-cycle-callbacks.html -var __extends = (this && this.__extends) || (function () { - var extendStatics = function (d, b) { - extendStatics = Object.setPrototypeOf || - ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) || - function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; }; - return extendStatics(d, b); - }; - return function (d, b) { - extendStatics(d, b); - function __() { this.constructor = d; } - d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); - }; -})(); -var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) { - var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; - if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc); - else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; - return c > 3 && r && Object.defineProperty(target, key, r), r; -}; -Object.defineProperty(exports, "__esModule", { value: true }); -var _a = cc._decorator, ccclass = _a.ccclass, property = _a.property; -var NewClass = /** @class */ (function (_super) { - __extends(NewClass, _super); - function NewClass() { - return _super !== null && _super.apply(this, arguments) || this; - } - // LIFE-CYCLE CALLBACKS: - NewClass.prototype.onLoad = function () { - this.can_Touch = false; - }; - NewClass.prototype.start = function () { - }; - NewClass.prototype.init = function (data) { - var _this = this; - this.can_Touch = false; - this.node.getChildByName("win").active = false; - this.node.getChildByName("lose").active = false; - this.node.getChildByName("finishi").active = false; - this.node.getChildByName(data.result).active = true; - if (data.result == "lose") { - this.setErrLabel(data.code); - } - var target = this.node.getChildByName(data.result); - target.getChildByName("btn").active = false; - target.opacity = 0; - target.scale = 2; - target.getChildByName("tip").opacity = 0; - if (data.result == "win") { - var lianXi = false; - if (cc.fx.GameConfig.GM_INFO.level == 2) - lianXi = true; - target.getChildByName("yes").active = !lianXi; - target.getChildByName("start").active = lianXi; - } - cc.tween(target) - .delay(0.1) - .to(0.25, { opacity: 255, scale: 1 }) - .delay(0.3) - .call(function () { - if (target.name == "lose") { - cc.tween(target.getChildByName("tip")) - .to(0.5, { opacity: 255 }) - .delay(0.5) - .call(function () { - _this.can_Touch = true; - target.getChildByName("btn").active = true; - }) - .start(); - } - else { - _this.can_Touch = true; - target.getChildByName("btn").active = true; - } - }) - .start(); - }; - NewClass.prototype.setErrLabel = function (code) { - var tip = this.node.getChildByName("lose").getChildByName("tip").getComponent(cc.Label); - tip.string = cc.fx.GameConfig.TIP_ERR[code]; - }; - NewClass.prototype.click_Next = function () { - var _this = this; - if (!this.can_Touch) { - return; - } - this.can_Touch = false; - cc.tween(this.node) - .to(0.3, { opacity: 0 }) - .call(function () { - _this.node.active = false; - cc.director.loadScene("GameScene"); - }) - .start(); - }; - NewClass = __decorate([ - ccclass - ], NewClass); - return NewClass; -}(cc.Component)); -exports.default = NewClass; - -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,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImFzc2V0c1xcU2NyaXB0XFxXaW5kb3cudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLG9CQUFvQjtBQUNwQix3RUFBd0U7QUFDeEUsbUJBQW1CO0FBQ25CLGtGQUFrRjtBQUNsRiw4QkFBOEI7QUFDOUIsa0ZBQWtGOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFFNUUsSUFBQSxLQUFzQixFQUFFLENBQUMsVUFBVSxFQUFsQyxPQUFPLGFBQUEsRUFBRSxRQUFRLGNBQWlCLENBQUM7QUFHMUM7SUFBc0MsNEJBQVk7SUFBbEQ7O0lBMkVBLENBQUM7SUF4RUcsd0JBQXdCO0lBRXhCLHlCQUFNLEdBQU47UUFDSSxJQUFJLENBQUMsU0FBUyxHQUFHLEtBQUssQ0FBQztJQUMzQixDQUFDO0lBRUQsd0JBQUssR0FBTDtJQUVBLENBQUM7SUFFRCx1QkFBSSxHQUFKLFVBQUssSUFBSTtRQUFULGlCQXdDQztRQXZDRyxJQUFJLENBQUMsU0FBUyxHQUFHLEtBQUssQ0FBQztRQUN2QixJQUFJLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxNQUFNLEdBQUcsS0FBSyxDQUFDO1FBQy9DLElBQUksQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLE1BQU0sQ0FBQyxDQUFDLE1BQU0sR0FBRyxLQUFLLENBQUM7UUFDaEQsSUFBSSxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsU0FBUyxDQUFDLENBQUMsTUFBTSxHQUFHLEtBQUssQ0FBQztRQUNuRCxJQUFJLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQztRQUNwRCxJQUFHLElBQUksQ0FBQyxNQUFNLElBQUksTUFBTSxFQUFDO1lBQ3JCLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO1NBQy9CO1FBQ0QsSUFBSSxNQUFNLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FB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Q0FBQztJQUNiLENBQUM7SUF4RWdCLFFBQVE7UUFENUIsT0FBTztPQUNhLFFBQVEsQ0EyRTVCO0lBQUQsZUFBQztDQTNFRCxBQTJFQyxDQTNFcUMsRUFBRSxDQUFDLFNBQVMsR0EyRWpEO2tCQTNFb0IsUUFBUSIsImZpbGUiOiIiLCJzb3VyY2VSb290IjoiLyIsInNvdXJjZXNDb250ZW50IjpbIi8vIExlYXJuIFR5cGVTY3JpcHQ6XHJcbi8vICAtIGh0dHBzOi8vZG9jcy5jb2Nvcy5jb20vY3JlYXRvci9tYW51YWwvZW4vc2NyaXB0aW5nL3R5cGVzY3JpcHQuaHRtbFxyXG4vLyBMZWFybiBBdHRyaWJ1dGU6XHJcbi8vICAtIGh0dHBzOi8vZG9jcy5jb2Nvcy5jb20vY3JlYXRvci9tYW51YWwvZW4vc2NyaXB0aW5nL3JlZmVyZW5jZS9hdHRyaWJ1dGVzLmh0bWxcclxuLy8gTGVhcm4gbGlmZS1jeWNsZSBjYWxsYmFja3M6XHJcbi8vICAtIGh0dHBzOi8vZG9jcy5jb2Nvcy5jb20vY3JlYXRvci9tYW51YWwvZW4vc2NyaXB0aW5nL2xpZmUtY3ljbGUtY2FsbGJhY2tzLmh0bWxcclxuXHJcbmNvbnN0IHtjY2NsYXNzLCBwcm9wZXJ0eX0gPSBjYy5fZGVjb3JhdG9yO1xyXG5cclxuQGNjY2xhc3NcclxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgTmV3Q2xhc3MgZXh0ZW5kcyBjYy5Db21wb25lbnQge1xyXG4gICAgY2FuX1RvdWNoOiBib29sZWFuO1xyXG5cclxuICAgIC8vIExJRkUtQ1lDTEUgQ0FMTEJBQ0tTOlxyXG5cclxuICAgIG9uTG9hZCAoKSB7XHJcbiAgICAgICAgdGhpcy5jYW5fVG91Y2ggPSBmYWxzZTtcclxuICAgIH1cclxuXHJcbiAgICBzdGFydCAoKSB7XHJcblxyXG4gICAgfVxyXG5cclxuICAgIGluaXQoZGF0YSl7XHJcbiAgICAgICAgdGhpcy5jYW5fVG91Y2ggPSBmYWxzZTtcclxuICAgICAgICB0aGlzLm5vZGUuZ2V0Q2hpbGRCeU5hbWUoXCJ3aW5cIikuYWN0aXZlID0gZmFsc2U7XHJcbiAgICAgICAgdGhpcy5ub2RlLmdldENoaWxkQnlOYW1lKFwibG9zZVwiKS5hY3RpdmUgPSBmYWxzZTtcclxuICAgICAgICB0aGlzLm5vZGUuZ2V0Q2hpbGRCeU5hbWUoXCJmaW5pc2hpXCIpLmFjdGl2ZSA9IGZhbHNlO1xyXG4gICAgICAgIHRoaXMubm9kZS5nZXRDaGlsZEJ5TmFtZShkYXRhLnJlc3VsdCkuYWN0aXZlID0gdHJ1ZTtcclxuICAgICAgICBpZihkYXRhLnJlc3VsdCA9PSBcImxvc2VcIil7XHJcbiAgICAgICAgICAgIHRoaXMuc2V0RXJyTGFiZWwoZGF0YS5jb2RlKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgdmFyIHRhcmdldCA9IHRoaXMubm9kZS5nZXRDaGlsZEJ5TmFtZShkYXRhLnJlc3VsdCk7XHJcbiAgICAgICAgdGFyZ2V0LmdldENoaWxkQnlOYW1lKFwiYnRuXCIpLmFjdGl2ZSA9IGZhbHNlO1xyXG4gICAgICAgIHRhcmdldC5vcGFjaXR5ID0gMDsgdGFyZ2V0LnNjYWxlID0gMjt0YXJnZXQuZ2V0Q2hpbGRCeU5hbWUoXCJ0aXBcIikub3BhY2l0eSA9IDA7XHJcbiAgICAgICAgaWYoZGF0YS5yZXN1bHQgPT0gXCJ3aW5cIil7XHJcbiAgICAgICAgICAgIHZhciBsaWFuWGkgPSBmYWxzZTtcclxuICAgICAgICAgICAgaWYoY2MuZnguR2FtZUNvbmZpZy5HTV9JTkZPLmxldmVsID09IDIpIGxpYW5YaSA9IHRydWU7XHJcbiAgICAgICAgICAgIHRhcmdldC5nZXRDaGlsZEJ5TmFtZShcInllc1wiKS5hY3RpdmUgPSAhbGlhblhpO1xyXG4gICAgICAgICAgICB0YXJnZXQuZ2V0Q2hpbGRCeU5hbWUoXCJzdGFydFwiKS5hY3RpdmUgPSBsaWFuWGk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGNjLnR3ZWVuKHRhcmdldClcclxuICAgICAgICAuZGVsYXkoMC4xKVxyXG4gICAgICAgIC50bygwLjI1LHtvcGFjaXR5OjI1NSxzY2FsZToxfSlcclxuICAgICAgICAuZGVsYXkoMC4zKVxyXG4gICAgICAgIC5jYWxsKCgpPT57XHJcbiAgICAgICAgICAgIGlmKHRhcmdldC5uYW1lID09IFwibG9zZVwiKXtcclxuICAgICAgICAgICAgICAgIGNjLnR3ZWVuKHRhcmdldC5nZXRDaGlsZEJ5TmFtZShcInRpcFwiKSlcclxuICAgICAgICAgICAgICAgIC50bygwLjUse29wYWNpdHk6MjU1fSlcclxuICAgICAgICAgICAgICAgIC5kZWxheSgwLjUpXHJcbiAgICAgICAgICAgICAgICAuY2FsbCgoKSA9PntcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLmNhbl9Ub3VjaCA9IHRydWU7XHJcbiAgICAgICAgICAgICAgICAgICAgdGFyZ2V0LmdldENoaWxkQnlOYW1lKFwiYnRuXCIpLmFjdGl2ZSA9IHRydWU7XHJcbiAgICAgICAgICAgICAgICB9KVxyXG4gICAgICAgICAgICAgICAgLnN0YXJ0KCk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgZWxzZXtcclxuICAgICAgICAgICAgICAgIHRoaXMuY2FuX1RvdWNoID0gdHJ1ZTtcclxuICAgICAgICAgICAgICAgIHRhcmdldC5nZXRDaGlsZEJ5TmFtZShcImJ0blwiKS5hY3RpdmUgPSB0cnVlO1xyXG4gICAgICAgICAgICB9XHJcblxyXG4gICAgICAgIH0pXHJcbiAgICAgICAgLnN0YXJ0KCk7XHJcbiAgICB9XHJcblxyXG4gICAgc2V0RXJyTGFiZWwoY29kZSl7XHJcbiAgICAgICAgdmFyIHRpcCA9IHRoaXMubm9kZS5nZXRDaGlsZEJ5TmFtZShcImxvc2VcIikuZ2V0Q2hpbGRCeU5hbWUoXCJ0aXBcIikuZ2V0Q29tcG9uZW50KGNjLkxhYmVsKTtcclxuICAgICAgICB0aXAuc3RyaW5nID0gY2MuZnguR2FtZUNvbmZpZy5USVBfRVJSW2NvZGVdO1xyXG4gICAgfVxyXG5cclxuICAgIGNsaWNrX05leHQoKXtcclxuICAgICAgICBpZighdGhpcy5jYW5fVG91Y2gpe1xyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRoaXMuY2FuX1RvdWNoID0gZmFsc2U7XHJcbiAgICAgICAgY2MudHdlZW4odGhpcy5ub2RlKVxyXG4gICAgICAgIC50bygwLjMse29wYWNpdHk6MH0pXHJcbiAgICAgICAgLmNhbGwoKCkgPT57XHJcbiAgICAgICAgICAgIHRoaXMubm9kZS5hY3RpdmUgPSBmYWxzZTtcclxuICAgICAgICAgICAgY2MuZGlyZWN0b3IubG9hZFNjZW5lKFwiR2FtZVNjZW5lXCIpO1xyXG4gICAgICAgIH0pXHJcbiAgICAgICAgLnN0YXJ0KCk7XHJcbiAgICB9XHJcblxyXG4gICAgLy8gdXBkYXRlIChkdCkge31cclxufVxyXG4iXX0= -//------QC-SOURCE-SPLIT------ - - (function() { - var nodeEnv = typeof require !== 'undefined' && typeof process !== 'undefined'; - var __module = nodeEnv ? module : {exports:{}}; - var __filename = 'preview-scripts/assets/Script/Wall.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, '87a44m5f/pPAKIrsyArSr/V', 'Wall'); -// Script/Wall.ts - -"use strict"; -// Learn TypeScript: -// - https://docs.cocos.com/creator/manual/en/scripting/typescript.html -// Learn Attribute: -// - https://docs.cocos.com/creator/manual/en/scripting/reference/attributes.html -// Learn life-cycle callbacks: -// - https://docs.cocos.com/creator/manual/en/scripting/life-cycle-callbacks.html -var __extends = (this && this.__extends) || (function () { - var extendStatics = function (d, b) { - extendStatics = Object.setPrototypeOf || - ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) || - function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; }; - return extendStatics(d, b); - }; - return function (d, b) { - extendStatics(d, b); - function __() { this.constructor = d; } - d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); - }; -})(); -var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) { - var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; - if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc); - else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; - return c > 3 && r && Object.defineProperty(target, key, r), r; -}; -Object.defineProperty(exports, "__esModule", { value: true }); -exports.WallColor = exports.WallType = exports.WallSpecial = void 0; -var Map_1 = require("./Map"); -var _a = cc._decorator, ccclass = _a.ccclass, property = _a.property; -var WallSpecial; -(function (WallSpecial) { - /*普通门*/ - WallSpecial[WallSpecial["\u666E\u901A\u95E8"] = 0] = "\u666E\u901A\u95E8"; - /*星星门*/ - WallSpecial[WallSpecial["\u661F\u661F\u95E8"] = 1] = "\u661F\u661F\u95E8"; - /*开关门*/ - WallSpecial[WallSpecial["\u5F00\u5173\u95E8"] = 2] = "\u5F00\u5173\u95E8"; - /*冻结门 */ - WallSpecial[WallSpecial["\u51BB\u7ED3\u95E8"] = 3] = "\u51BB\u7ED3\u95E8"; -})(WallSpecial = exports.WallSpecial || (exports.WallSpecial = {})); -var WallType; -(function (WallType) { - /*普通地块 */ - WallType[WallType["\u95E8\u6A2A\u5411\u4E0B"] = 0] = "\u95E8\u6A2A\u5411\u4E0B"; - /*起点地块 */ - WallType[WallType["\u95E8\u6A2A\u5411\u4E0A"] = 1] = "\u95E8\u6A2A\u5411\u4E0A"; - /*湿地 */ - WallType[WallType["\u95E8\u7AD6\u5411\u53F3"] = 2] = "\u95E8\u7AD6\u5411\u53F3"; - /*山峰 */ - WallType[WallType["\u95E8\u7AD6\u5411\u5DE6"] = 3] = "\u95E8\u7AD6\u5411\u5DE6"; - /*终点地块 */ - WallType[WallType["\u5899\u6A2A\u5411\u4E0B"] = 4] = "\u5899\u6A2A\u5411\u4E0B"; - /*息壤 */ - WallType[WallType["\u5899\u6A2A\u5411\u4E0A"] = 5] = "\u5899\u6A2A\u5411\u4E0A"; - /*加固 */ - WallType[WallType["\u5899\u7AD6\u5411\u53F3"] = 6] = "\u5899\u7AD6\u5411\u53F3"; - /*加固 */ - WallType[WallType["\u5899\u7AD6\u5411\u5DE6"] = 7] = "\u5899\u7AD6\u5411\u5DE6"; -})(WallType = exports.WallType || (exports.WallType = {})); -var WallColor; -(function (WallColor) { - /*普通地块 */ - WallColor[WallColor["\u7D2B\u8272"] = 0] = "\u7D2B\u8272"; - /*湿地 */ - WallColor[WallColor["\u9EC4\u8272"] = 1] = "\u9EC4\u8272"; - /*山峰 */ - WallColor[WallColor["\u7EFF\u8272"] = 2] = "\u7EFF\u8272"; - /*终点地块 */ - WallColor[WallColor["\u84DD\u8272"] = 3] = "\u84DD\u8272"; - /*息壤 */ - WallColor[WallColor["\u7C89\u8272"] = 4] = "\u7C89\u8272"; - /*加固 */ - WallColor[WallColor["\u6A58\u9EC4\u8272"] = 5] = "\u6A58\u9EC4\u8272"; - /*加固 */ - WallColor[WallColor["\u9752\u8272"] = 6] = "\u9752\u8272"; - /*加固 */ - WallColor[WallColor["\u767D\u8272"] = 7] = "\u767D\u8272"; - /*普通地块 */ - WallColor[WallColor["\u7EA2\u8272"] = 8] = "\u7EA2\u8272"; - /*普通地块 */ - WallColor[WallColor["\u7070\u8272"] = 9] = "\u7070\u8272"; -})(WallColor = exports.WallColor || (exports.WallColor = {})); -var Wall = /** @class */ (function (_super) { - __extends(Wall, _super); - function Wall() { - var _this = _super !== null && _super.apply(this, arguments) || this; - _this.number = null; - _this.type = WallType.墙横向下; - _this.special = WallSpecial.普通门; - _this.color = WallColor.紫色; - _this.wall_SpriteFrames = null; - _this.down_SpriteFrames = null; - return _this; - // update (dt) {} - } - // LIFE-CYCLE CALLBACKS: - // onLoad () {} - Wall.prototype.start = function () { - // console.log(this.type); - }; - Wall.prototype.jsonDeepClone = function (obj) { - return JSON.parse(JSON.stringify(obj)); - }; - Wall.prototype.init = function (wall_Info, posX, posY, direction) { - this.wall_Info = this.jsonDeepClone(wall_Info); - // this.open = true; - if (wall_Info == null) { - this.posX = posX; - this.posY = posY; - if (direction) - this.direction = direction; - // console.log("门方向赋值",direction); - if (direction == "up") { - this.node.parent.zIndex = 100 + this.posX - this.posY * 3; - } - else if (direction == "down" || direction == "right" || - direction == "rightdown" || direction == "downright" - || direction == "rightup" || direction == "upright") { - this.node.parent.zIndex = 30 + this.posX - this.posY * 3; - } - else if (direction == "left" || direction == "leftdown" || direction == "downleft") { - this.node.parent.zIndex = 70 + this.posX - this.posY * 3; - } - else - this.node.parent.zIndex = 70 + this.posX - this.posY * 3; - Map_1.default._instance.mapBlocksWall[this.posX][this.posY].getComponent("MapBlock").block_Id = "Wall"; - //console.log(this.posX,this.posY,MapConroler._instance.mapBlocksWall[this.posX][this.posY].getComponent("MapBlock").block_Id); - // console.log(this.posX,this.posY,this.node.zIndex); - //this.node.getChildByName("num").getComponent(cc.Label).string = direction; - //this.node.getChildByName("num").getComponent(cc.Label).string = ":" + this.node.parent.zIndex; - } - if (wall_Info != null) { - this.color = wall_Info.color; - this.special = wall_Info.special; - this.initType(); - if (wall_Info.length > 0) { - this.initColor(wall_Info.length); - } - else - this.node.removeComponent("cc.Sprite"); - if (this.posX != null) { - Map_1.default._instance.mapBlocksWall[this.posX][this.posY].getComponent("MapBlock").block_Id = "Wall"; - //console.log(this.posX,this.posY,MapConroler._instance.mapBlocksWall[this.posX][this.posY].getComponent("MapBlock").block_Id); - } - } - // setTimeout(() => { - // this.node.getChildByName("num").getComponent(cc.Label).string = ":" + this.node.parent.zIndex; - // }, 1000); - }; - //创建门的颜色 - Wall.prototype.initColor = function (length) { - var direction = this.node.parent.name; - var double = 0; - if (direction == "left" || direction == "right") { - double = 3; - } - // debugger; - if (this.wall_SpriteFrames) { - var name = this.color + "color" + (length + double); - var spriteFrame = this.wall_SpriteFrames._spriteFrames[name]; - this.node.getComponent(cc.Sprite).spriteFrame = spriteFrame; - } - if (this.down_SpriteFrames) { - var name2 = this.color + "down" + (length + double); - var downFrame = this.down_SpriteFrames._spriteFrames[name2]; - this.node.parent.getChildByName("down").getComponent(cc.Sprite).spriteFrame = downFrame; - } - }; - //创建特殊类型门 - Wall.prototype.initType = function () { - switch (this.special) { - case WallSpecial.星星门: - var star = cc.instantiate(Map_1.default._instance.Block_Prop[this.special]); - star.parent = this.node.parent; - // console.log("门的方向",this.direction,"长度",this.wall_Info.length); - // star.scaleX = star.scaleY = 0.5; - if (this.wall_Info.length > 0) { - if (this.direction == "right" || this.direction == "left") { - star.children[this.wall_Info.length + 2].active = true; - } - else if (this.direction == "up" || this.direction == "down") { - star.children[this.wall_Info.length - 1].active = true; - } - } - star.setPosition(this.node.width / 2 + this.node.x, this.node.height / 2 + this.node.y); - break; - case WallSpecial.开关门: - var name = "open" + this.wall_Info.length; - this.openNode = this.node.parent.getChildByName("open").getChildByName(name); - this.openNode.active = true; - if (this.wall_Info.lock == false) { - this.open = true; - this.openNode.children[0].scaleX *= 0.01; - this.openNode.children[1].scaleX *= 0.01; - } - else { - this.open = false; - } - break; - case WallSpecial.冻结门: - var freeze = "freeze" + this.wall_Info.length; - this.freezeNode = this.node.parent.getChildByName("freeze").getChildByName(freeze); - this.freezeNode.active = true; - if (this.wall_Info.freeze) { - this.freezeNode.getChildByName("num").getComponent(cc.Label).string = this.wall_Info.freeze + ""; - } - break; - } - }; - //播放星星门通过 - Wall.prototype.playStarDoor = function () { - if (this.node.parent.getChildByName("star")) { - var star = this.node.parent.getChildByName("star"); - for (var i = 0; i < star.children.length; i++) { - if (star.children[i].active == true) { - var starChild = star.children[i]; - for (var j = 0; j < starChild.children.length; j++) { - starChild.children[j].active = true; - starChild.children[j].getComponent(sp.Skeleton).setAnimation(1, "taopao1", false); - } - } - } - } - }; - //改变开关门状态 - Wall.prototype.changeLock = function () { - this.open = !this.open; - console.log("开关门状态改变", this.open); - if (!this.openNode.active) { - this.openNode.active = true; - } - var fill = this.openNode.children[0].scaleX == 1 ? 0.01 : 1; - if (this.openNode.children[0].scaleX < 0) - fill = -fill; - // console.log("目标",fill); - cc.tween(this.openNode.children[0]) - .to(0.3, { scaleX: this.openNode.children[0].scaleX < 0 ? -fill : fill }) - .call(function () { - // console.log("左边完成"); - }) - .start(); - cc.tween(this.openNode.children[1]) - .to(0.3, { scaleX: this.openNode.children[1].scaleX < 0 ? -fill : fill }) - .call(function () { - // console.log("右边完成"); - }) - .start(); - }; - Wall.prototype.changeFreeze = function () { - var numStr = this.freezeNode.getChildByName("num").getComponent(cc.Label); - var num = parseInt(numStr.string); - num -= 1; - this.freezeNode.getChildByName("num").getComponent(cc.Label).string = num + ""; - if (num == 0) { - this.freezeNode.parent.active = false; - } - }; - Wall.prototype.downDoor = function () { - if (this.openNode) { - if (this.openNode.children[0].scaleX == 1) - return; - } - if (this.freezeNode) { - if (this.freezeNode.active == true) - return; - } - this.node.opacity = 0; - if (this.special == WallSpecial.星星门) { - this.node.parent.getChildByName("star").y -= 10; - } - this.node.parent.getChildByName("down").active = true; - }; - Wall.prototype.upDoor = function () { - if (this.special == WallSpecial.星星门) { - this.node.parent.getChildByName("star").y += 10; - } - this.node.parent.getChildByName("down").active = false; - this.node.opacity = 250; - }; - __decorate([ - property(cc.Label) - ], Wall.prototype, "number", void 0); - __decorate([ - property({ - tooltip: '墙或者门的方向', - type: cc.Enum(WallType), - }) - ], Wall.prototype, "type", void 0); - __decorate([ - property({ - tooltip: '墙或者门的方向', - type: cc.Enum(WallSpecial), - }) - ], Wall.prototype, "special", void 0); - __decorate([ - property({ - tooltip: '门的颜色', - type: cc.Enum(WallColor), - }) - ], Wall.prototype, "color", void 0); - __decorate([ - property(cc.SpriteAtlas) - ], Wall.prototype, "wall_SpriteFrames", void 0); - __decorate([ - property(cc.SpriteAtlas) - ], Wall.prototype, "down_SpriteFrames", void 0); - Wall = __decorate([ - ccclass - ], Wall); - return Wall; -}(cc.Component)); -exports.default = Wall; - -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,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImFzc2V0c1xcU2NyaXB0XFxXYWxsLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSxvQkFBb0I7QUFDcEIsd0VBQXdFO0FBQ3hFLG1CQUFtQjtBQUNuQixrRkFBa0Y7QUFDbEYsOEJBQThCO0FBQzlCLGtGQUFrRjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUVsRiw2QkFBZ0M7QUFFMUIsSUFBQSxLQUFzQixFQUFFLENBQUMsVUFBVSxFQUFsQyxPQUFPLGFBQUEsRUFBRSxRQUFRLGNBQWlCLENBQUM7QUFFMUMsSUFBWSxXQVNYO0FBVEQsV0FBWSxXQUFXO0lBQ25CLE9BQU87SUFDUCx5RUFBUyxDQUFBO0lBQ1QsT0FBTztJQUNQLHlFQUFTLENBQUE7SUFDVCxPQUFPO0lBQ1AseUVBQVMsQ0FBQTtJQUNULFFBQVE7SUFDUix5RUFBUyxDQUFBO0FBQ2IsQ0FBQyxFQVRXLFdBQVcsR0FBWCxtQkFBVyxLQUFYLG1CQUFXLFFBU3RCO0FBRUQsSUFBWSxRQWtCWDtBQWxCRCxXQUFZLFFBQVE7SUFFaEIsU0FBUztJQUNULCtFQUFVLENBQUE7SUFDVixTQUFTO0lBQ1QsK0VBQVUsQ0FBQTtJQUNWLE9BQU87SUFDUCwrRUFBVSxDQUFBO0lBQ1YsT0FBTztJQUNQLCtFQUFVLENBQUE7SUFDVixTQUFTO0lBQ1QsK0VBQVUsQ0FBQTtJQUNWLE9BQU87SUFDUCwrRUFBVSxDQUFBO0lBQ1YsT0FBTztJQUNQLCtFQUFVLENBQUE7SUFDVixPQUFPO0lBQ1AsK0VBQVUsQ0FBQTtBQUNkLENBQUMsRUFsQlcsUUFBUSxHQUFSLGdCQUFRLEtBQVIsZ0JBQVEsUUFrQm5CO0FBRUQsSUFBWSxTQXFCWDtBQXJCRCxXQUFZLFNBQVM7SUFDakIsU0FBUztJQUNULHlEQUFRLENBQUE7SUFDUixPQUFPO0lBQ1AseURBQVEsQ0FBQTtJQUNSLE9BQU87SUFDUCx5REFBUSxDQUFBO0lBQ1IsU0FBUztJQUNULHlEQUFRLENBQUE7SUFDUixPQUFPO0lBQ1AseURBQVEsQ0FBQTtJQUNSLE9BQU87SUFDUCxxRUFBUyxDQUFBO0lBQ1QsT0FBTztJQUNQLHlEQUFRLENBQUE7SUFDUixPQUFPO0lBQ1AseURBQVEsQ0FBQTtJQUNSLFNBQVM7SUFDVCx5REFBUSxDQUFBO0lBQ1IsU0FBUztJQUNULHlEQUFRLENBQUE7QUFDWixDQUFDLEVBckJXLFNBQVMsR0FBVCxpQkFBUyxLQUFULGlCQUFTLFFBcUJwQjtBQUdEO0lBQWtDLHdCQUFZO0lBQTlDO1FBQUEscUVBcVBDO1FBbFBHLFlBQU0sR0FBYSxJQUFJLENBQUM7UUFNeEIsVUFBSSxHQUFhLFFBQVEsQ0FBQyxJQUFJLENBQUM7UUFNL0IsYUFBTyxHQUFnQixXQUFXLENBQUMsR0FBRyxDQUFDO1FBTXZDLFdBQUssR0FBYyxTQUFTLENBQUMsRUFBRSxDQUFDO1FBR2hDLHVCQUFpQixHQUFtQixJQUFJLENBQUM7UUFHekMsdUJBQWlCLEdBQW1CLElBQUksQ0FBQzs7UUF5TnpDLGlCQUFpQjtJQUNyQixDQUFDO0lBOU1HLHdCQUF3QjtJQUV4QixlQUFlO0lBRWYsb0JBQUssR0FBTDtRQUNJLDBCQUEwQjtJQUM5QixDQUFDO0lBRUQsNEJBQWEsR0FBYixVQUFpQixHQUFNO1FBQ25CLE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7SUFDM0MsQ0FBQztJQUVELG1CQUFJLEdBQUosVUFBSyxTQUFTLEVBQUUsSUFBWSxFQUFFLElBQVksRUFBRSxTQUFjO1FBRXRELElBQUksQ0FBQyxTQUFTLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUMvQyxvQkFBb0I7UUFDcEIsSUFBRyxTQUFTLElBQUksSUFBSSxFQUFDO1lBQ2pCLElBQUksQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDO1lBQ2pCLElBQUksQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDO1lBRWpCLElBQUcsU0FBUztnQkFBQyxJQUFJLENBQUMsU0FBUyxHQUFHLFNBQVMsQ0FBQztZQUN4QyxrQ0FBa0M7WUFDbEMsSUFBRyxTQUFTLElBQUksSUFBSSxFQUFFO2dCQUNsQixJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxNQUFNLEdBQUcsR0FBRyxHQUFHLElBQUksQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDLElBQUksR0FBQyxDQUFDLENBQUM7YUFDM0Q7aUJBQ0ksSUFBSSxTQUFTLElBQUksTUFBTSxJQUFJLFNBQVMsSUFBSSxPQUFPO2dCQUNoRCxTQUFTLElBQUksV0FBVyxJQUFJLFNBQVMsSUFBSSxXQUFXO21CQUNyRCxTQUFTLElBQUksU0FBUyxJQUFJLFNBQVMsSUFBSSxTQUFTLEVBQUM7Z0JBQ2hELElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLE1BQU0sR0FBRyxFQUFFLEdBQUcsSUFBSSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUMsSUFBSSxHQUFDLENBQUMsQ0FBQzthQUN0RDtpQkFDQSxJQUFJLFNBQVMsSUFBSSxNQUFNLElBQUcsU0FBUyxJQUFJLFVBQVUsSUFBSSxTQUFTLElBQUksVUFBVSxFQUFDO2dCQUM5RSxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxNQUFNLEdBQUcsRUFBRSxHQUFHLElBQUksQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDLElBQUksR0FBQyxDQUFDLENBQUM7YUFDMUQ7O2dCQUNJLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLE1BQU0sR0FBRyxFQUFFLEdBQUcsSUFBSSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUMsSUFBSSxHQUFDLENBQUMsQ0FBQztZQUU1RCxhQUFXLENBQUMsU0FBUyxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLFlBQVksQ0FBQyxVQUFVLENBQUMsQ0FBQyxRQUFRLEdBQUcsTUFBTSxDQUFDO1lBQ3JHLCtIQUErSDtZQUMvSCxxREFBcUQ7WUFDckQsNEVBQTRFO1lBQzdFLGdHQUFnRztTQUNsRztRQUNELElBQUcsU0FBUyxJQUFJLElBQUksRUFBQztZQUNqQixJQUFJLENBQUMsS0FBSyxHQUFHLFNBQVMsQ0FBQyxLQUFLLENBQUM7WUFDN0IsSUFBSSxDQUFDLE9BQU8sR0FBRyxTQUFTLENBQUMsT0FBTyxDQUFDO1lBQ2pDLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQztZQUNoQixJQUFHLFNBQVMsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFDO2dCQUNwQixJQUFJLENBQUMsU0FBUyxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsQ0FBQzthQUNwQzs7Z0JBQ0ksSUFBSSxDQUFDLElBQUksQ0FBQyxlQUFlLENBQUMsV0FBVyxDQUFDLENBQUM7WUFDNUMsSUFBRyxJQUFJLENBQUMsSUFBSSxJQUFJLElBQUksRUFBQztnQkFDakIsYUFBVyxDQUFDLFNBQVMsQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxZQUFZLENBQUMsVUFBVSxDQUFDLENBQUMsUUFBUSxHQUFHLE1BQU0sQ0FBQztnQkFDckcsK0hBQStIO2FBQ2xJO1NBQ0o7UUFDRCxxQkFBcUI7UUFDckIscUdBQXFHO1FBQ3JHLFlBQVk7SUFFaEIsQ0FBQztJQUVELFFBQVE7SUFDUix3QkFBUyxHQUFULFVBQVUsTUFBYztRQUNwQixJQUFJLFNBQVMsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUM7UUFDdEMsSUFBSSxNQUFNLEdBQUcsQ0FBQyxDQUFDO1FBQ2YsSUFBRyxTQUFTLElBQUksTUFBTSxJQUFLLFNBQVMsSUFBSSxPQUFPLEVBQUM7WUFDNUMsTUFBTSxHQUFHLENBQUMsQ0FBQztTQUNkO1FBRUQsWUFBWTtRQUNaLElBQUcsSUFBSSxDQUFDLGlCQUFpQixFQUFDO1lBQ3RCLElBQUksSUFBSSxHQUFHLElBQUksQ0FBQyxLQUFLLEdBQUMsT0FBTyxHQUFHLENBQUMsTUFBTSxHQUFDLE1BQU0sQ0FBQyxDQUFDO1lBQ2hELElBQUksV0FBVyxHQUFHLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLENBQUM7WUFDN0QsSUFBSSxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsRUFBRSxDQUFDLE1BQU0sQ0FBQyxDQUFDLFdBQVcsR0FBRyxXQUFXLENBQUM7U0FDL0Q7UUFDRCxJQUFHLElBQUksQ0FBQyxpQkFBaUIsRUFBQztZQUN0QixJQUFJLEtBQUssR0FBRyxJQUFJLENBQUMsS0FBSyxHQUFHLE1BQU0sR0FBRyxDQUFDLE1BQU0sR0FBQyxNQUFNLENBQUMsQ0FBQztZQUNsRCxJQUFJLFNBQVMsR0FBRyxJQUFJLENBQUMsaUJBQWlCLENBQUMsYUFBYSxDQUFDLEtBQUssQ0FBQyxDQUFDO1lBQzVELElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLGNBQWMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxZQUFZLENBQUMsRUFBRSxDQUFDLE1BQU0sQ0FBQyxDQUFDLFdBQVcsR0FBRyxTQUFTLENBQUM7U0FDM0Y7SUFHTCxDQUFDO0lBRUQsU0FBUztJQUNULHVCQUFRLEdBQVI7UUFDSSxRQUFPLElBQUksQ0FBQyxPQUFPLEVBQUM7WUFDaEIsS0FBSyxXQUFXLENBQUMsR0FBRztnQkFDaEIsSUFBSSxJQUFJLEdBQUcsRUFBRSxDQUFDLFdBQVcsQ0FBQyxhQUFXLENBQUMsU0FBUyxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQztnQkFDMUUsSUFBSSxDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQztnQkFDL0IsaUVBQWlFO2dCQUNqRSxtQ0FBbUM7Z0JBQ25DLElBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFDO29CQUN6QixJQUFHLElBQUksQ0FBQyxTQUFTLElBQUksT0FBTyxJQUFJLElBQUksQ0FBQyxTQUFTLElBQUksTUFBTSxFQUFDO3dCQUNyRCxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUM7cUJBQzFEO3lCQUNJLElBQUcsSUFBSSxDQUFDLFNBQVMsSUFBSSxJQUFJLElBQUksSUFBSSxDQUFDLFNBQVMsSUFBSSxNQUFNLEVBQUM7d0JBQ3ZELElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQztxQkFDMUQ7aUJBQ0o7Z0JBQ0QsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssR0FBQyxDQUFDLEdBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLEVBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLEdBQUMsQ0FBQyxHQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7Z0JBQy9FLE1BQU07WUFDVixLQUFLLFdBQVcsQ0FBQyxHQUFHO2dCQUNoQixJQUFJLElBQUksR0FBRyxNQUFNLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUM7Z0JBQzFDLElBQUksQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsY0FBYyxDQUFDLE1BQU0sQ0FBQyxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsQ0FBQztnQkFDN0UsSUFBSSxDQUFDLFFBQVEsQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFDO2dCQUM1QixJQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxJQUFJLEtBQUssRUFBQztvQkFDNUIsSUFBSSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUM7b0JBQ2pCLElBQUksQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sSUFBSSxJQUFJLENBQUM7b0JBQ3pDLElBQUksQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sSUFBSSxJQUFJLENBQUM7aUJBQzVDO3FCQUNHO29CQUNBLElBQUksQ0FBQyxJQUFJLEdBQUcsS0FBSyxDQUFDO2lCQUNyQjtnQkFDRCxNQUFNO1lBQ1YsS0FBSyxXQUFXLENBQUMsR0FBRztnQkFDaEIsSUFBSSxNQUFNLEdBQUcsUUFBUSxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDO2dCQUM5QyxJQUFJLENBQUMsVUFBVSxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLGNBQWMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxjQUFjLENBQUMsTUFBTSxDQUFDLENBQUM7Z0JBQ25GLElBQUksQ0FBQyxVQUFVLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQztnQkFDOUIsSUFBRyxJQUFJLENBQUMsU0FBUyxDQUFDLE1BQU0sRUFBQztvQkFDckIsSUFBSSxDQUFDLFVBQVUsQ0FBQyxjQUFjLENBQUMsS0FBSyxDQUFDLENBQUMsWUFBWSxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxNQUFNLEdBQUMsRUFBRSxDQUFDO2lCQUNsRztnQkFDRCxNQUFNO1NBQ2I7SUFDTCxDQUFDO0lBRUQsU0FBUztJQUNULDJCQUFZLEdBQVo7UUFDSSxJQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLGNBQWMsQ0FBQyxNQUFNLENBQUMsRUFBQztZQUN2QyxJQUFJLElBQUksR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxjQUFjLENBQUMsTUFBTSxDQUFDLENBQUM7WUFDbkQsS0FBSSxJQUFJLENBQUMsR0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsTUFBTSxFQUFFLENBQUMsRUFBRSxFQUFDO2dCQUNyQyxJQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxJQUFJLElBQUksRUFBQztvQkFDL0IsSUFBSSxTQUFTLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQztvQkFDakMsS0FBSSxJQUFJLENBQUMsR0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFDLFNBQVMsQ0FBQyxRQUFRLENBQUMsTUFBTSxFQUFFLENBQUMsRUFBRSxFQUFDO3dCQUMxQyxTQUFTLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUE7d0JBQ25DLFNBQVMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsWUFBWSxDQUFDLEVBQUUsQ0FBQyxRQUFRLENBQUMsQ0FBQyxZQUFZLENBQUMsQ0FBQyxFQUFDLFNBQVMsRUFBQyxLQUFLLENBQUMsQ0FBQztxQkFDbkY7aUJBQ0o7YUFDSjtTQUNKO0lBQ0wsQ0FBQztJQUdELFNBQVM7SUFDVCx5QkFBVSxHQUFWO1FBQ0ksSUFBSSxDQUFDLElBQUksR0FBRyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUM7UUFDdkIsT0FBTyxDQUFDLEdBQUcsQ0FBQyxTQUFTLEVBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ2pDLElBQUcsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLE1BQU0sRUFBQztZQUNyQixJQUFJLENBQUMsUUFBUSxDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUM7U0FDL0I7UUFHRCxJQUFJLElBQUksR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLElBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUEsQ0FBQyxDQUFBLENBQUMsQ0FBQztRQUN4RCxJQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sR0FBRyxDQUFDO1lBQUUsSUFBSSxHQUFHLENBQUMsSUFBSSxDQUFDO1FBQ3RELDBCQUEwQjtRQUUxQixFQUFFLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDO2FBQ2xDLEVBQUUsQ0FBQyxHQUFHLEVBQUUsRUFBQyxNQUFNLEVBQUUsSUFBSSxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQSxDQUFDLENBQUEsQ0FBQyxJQUFJLENBQUEsQ0FBQyxDQUFBLElBQUksRUFBQyxDQUFDO2FBQ2xFLElBQUksQ0FBQztZQUNGLHVCQUF1QjtRQUMzQixDQUFDLENBQUM7YUFDRCxLQUFLLEVBQUUsQ0FBQztRQUVULEVBQUUsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUM7YUFDbEMsRUFBRSxDQUFDLEdBQUcsRUFBRSxFQUFDLE1BQU0sRUFBRSxJQUFJLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFBLENBQUMsQ0FBQSxDQUFDLElBQUksQ0FBQSxDQUFDLENBQUEsSUFBSSxFQUFDLENBQUM7YUFDbEUsSUFBSSxDQUFDO1lBQ0YsdUJBQXVCO1FBQzNCLENBQUMsQ0FBQzthQUNELEtBQUssRUFBRSxDQUFDO0lBQ2IsQ0FBQztJQUVELDJCQUFZLEdBQVo7UUFDSSxJQUFJLE1BQU0sR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDLGNBQWMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxZQUFZLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQzFFLElBQUksR0FBRyxHQUFHLFFBQVEsQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDbEMsR0FBRyxJQUFJLENBQUMsQ0FBQztRQUNULElBQUksQ0FBQyxVQUFVLENBQUMsY0FBYyxDQUFDLEtBQUssQ0FBQyxDQUFDLFlBQVksQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLENBQUMsTUFBTSxHQUFHLEdBQUcsR0FBQyxFQUFFLENBQUM7UUFDN0UsSUFBRyxHQUFHLElBQUksQ0FBQyxFQUFDO1lBQ1IsSUFBSSxDQUFDLFVBQVUsQ0FBQyxNQUFNLENBQUMsTUFBTSxHQUFHLEtBQUssQ0FBQztTQUN6QztJQUNMLENBQUM7SUFFRCx1QkFBUSxHQUFSO1FBQ0ksSUFBRyxJQUFJLENBQUMsUUFBUSxFQUFDO1lBQ2IsSUFBRyxJQUFJLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLElBQUksQ0FBQztnQkFDcEMsT0FBTztTQUNkO1FBQ0QsSUFBRyxJQUFJLENBQUMsVUFBVSxFQUFDO1lBQ2YsSUFBRyxJQUFJLENBQUMsVUFBVSxDQUFDLE1BQU0sSUFBSSxJQUFJO2dCQUM3QixPQUFPO1NBQ2Q7UUFFRCxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sR0FBRyxDQUFDLENBQUM7UUFDdEIsSUFBRyxJQUFJLENBQUMsT0FBTyxJQUFJLFdBQVcsQ0FBQyxHQUFHLEVBQUM7WUFDL0IsSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsY0FBYyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsSUFBSSxFQUFFLENBQUM7U0FDbkQ7UUFDRCxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxjQUFjLENBQUMsTUFBTSxDQUFDLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQztJQUMxRCxDQUFDO0lBRUQscUJBQU0sR0FBTjtRQUNJLElBQUcsSUFBSSxDQUFDLE9BQU8sSUFBSSxXQUFXLENBQUMsR0FBRyxFQUFDO1lBQy9CLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLGNBQWMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLElBQUksRUFBRSxDQUFDO1NBQ25EO1FBQ0QsSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsY0FBYyxDQUFDLE1BQU0sQ0FBQyxDQUFDLE1BQU0sR0FBRyxLQUFLLENBQUM7UUFDdkQsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLEdBQUcsR0FBRyxDQUFDO0lBQzVCLENBQUM7SUEvT0Q7UUFEQyxRQUFRLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQzt3Q0FDSztJQU14QjtRQUpDLFFBQVEsQ0FBQztZQUNOLE9BQU8sRUFBRSxTQUFTO1lBQ2xCLElBQUksRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQztTQUMxQixDQUFDO3NDQUM2QjtJQU0vQjtRQUpDLFFBQVEsQ0FBQztZQUNOLE9BQU8sRUFBRSxTQUFTO1lBQ2xCLElBQUksRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQztTQUM3QixDQUFDO3lDQUNxQztJQU12QztRQUpDLFFBQVEsQ0FBQztZQUNOLE9BQU8sRUFBRSxNQUFNO1lBQ2YsSUFBSSxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDO1NBQzNCLENBQUM7dUNBQzhCO0lBR2hDO1FBREMsUUFBUSxDQUFDLEVBQUUsQ0FBQyxXQUFXLENBQUM7bURBQ2dCO0lBR3pDO1FBREMsUUFBUSxDQUFDLEVBQUUsQ0FBQyxXQUFXLENBQUM7bURBQ2dCO0lBM0J4QixJQUFJO1FBRHhCLE9BQU87T0FDYSxJQUFJLENBcVB4QjtJQUFELFdBQUM7Q0FyUEQsQUFxUEMsQ0FyUGlDLEVBQUUsQ0FBQyxTQUFTLEdBcVA3QztrQkFyUG9CLElBQUkiLCJmaWxlIjoiIiwic291cmNlUm9vdCI6Ii8iLCJzb3VyY2VzQ29udGVudCI6WyIvLyBMZWFybiBUeXBlU2NyaXB0OlxyXG4vLyAgLSBodHRwczovL2RvY3MuY29jb3MuY29tL2NyZWF0b3IvbWFudWFsL2VuL3NjcmlwdGluZy90eXBlc2NyaXB0Lmh0bWxcclxuLy8gTGVhcm4gQXR0cmlidXRlOlxyXG4vLyAgLSBodHRwczovL2RvY3MuY29jb3MuY29tL2NyZWF0b3IvbWFudWFsL2VuL3NjcmlwdGluZy9yZWZlcmVuY2UvYXR0cmlidXRlcy5odG1sXHJcbi8vIExlYXJuIGxpZmUtY3ljbGUgY2FsbGJhY2tzOlxyXG4vLyAgLSBodHRwczovL2RvY3MuY29jb3MuY29tL2NyZWF0b3IvbWFudWFsL2VuL3NjcmlwdGluZy9saWZlLWN5Y2xlLWNhbGxiYWNrcy5odG1sXHJcblxyXG5pbXBvcnQgTWFwQ29ucm9sZXIgZnJvbSBcIi4vTWFwXCI7XHJcblxyXG5jb25zdCB7Y2NjbGFzcywgcHJvcGVydHl9ID0gY2MuX2RlY29yYXRvcjtcclxuXHJcbmV4cG9ydCBlbnVtIFdhbGxTcGVjaWFse1xyXG4gICAgLyrmma7pgJrpl6gqL1xyXG4gICAgXCLmma7pgJrpl6hcIiA9IDAsICBcclxuICAgIC8q5pif5pif6ZeoKi9cclxuICAgIFwi5pif5pif6ZeoXCIgPSAxLCAgXHJcbiAgICAvKuW8gOWFs+mXqCovXHJcbiAgICBcIuW8gOWFs+mXqFwiID0gMiwgIFxyXG4gICAgLyrlhrvnu5Ppl6ggKi9cclxuICAgIFwi5Ya757uT6ZeoXCIgPSAzLCAgXHJcbn1cclxuXHJcbmV4cG9ydCBlbnVtIFdhbGxUeXBle1xyXG4gICAgXHJcbiAgICAvKuaZrumAmuWcsOWdlyAqL1xyXG4gICAgXCLpl6jmqKrlkJHkuItcIiA9IDAsICBcclxuICAgIC8q6LW354K55Zyw5Z2XICovXHJcbiAgICBcIumXqOaoquWQkeS4ilwiID0gMSwgIFxyXG4gICAgLyrmub/lnLAgKi9cclxuICAgIFwi6Zeo56uW5ZCR5Y+zXCIgPSAyLCAgXHJcbiAgICAvKuWxseWzsCAqL1xyXG4gICAgXCLpl6jnq5blkJHlt6ZcIiA9IDMsICBcclxuICAgIC8q57uI54K55Zyw5Z2XICovXHJcbiAgICBcIuWimeaoquWQkeS4i1wiID0gNCwgIFxyXG4gICAgLyrmga/lo6QgKi9cclxuICAgIFwi5aKZ5qiq5ZCR5LiKXCIgPSA1LCAgXHJcbiAgICAvKuWKoOWbuiAqL1xyXG4gICAgXCLlopnnq5blkJHlj7NcIiA9IDYsICBcclxuICAgIC8q5Yqg5Zu6ICovXHJcbiAgICBcIuWimeerluWQkeW3plwiID0gNywgIFxyXG59XHJcblxyXG5leHBvcnQgZW51bSBXYWxsQ29sb3J7XHJcbiAgICAvKuaZrumAmuWcsOWdlyAqL1xyXG4gICAgXCLntKvoibJcIiA9IDAsICBcclxuICAgIC8q5rm/5ZywICovXHJcbiAgICBcIum7hOiJslwiID0gMSwgIFxyXG4gICAgLyrlsbHls7AgKi9cclxuICAgIFwi57u/6ImyXCIgPSAyLCAgXHJcbiAgICAvKue7iOeCueWcsOWdlyAqL1xyXG4gICAgXCLok53oibJcIiA9IDMsICBcclxuICAgIC8q5oGv5aOkICovXHJcbiAgICBcIueyieiJslwiID0gNCwgIFxyXG4gICAgLyrliqDlm7ogKi9cclxuICAgIFwi5qmY6buE6ImyXCIgPSA1LCAgXHJcbiAgICAvKuWKoOWbuiAqL1xyXG4gICAgXCLpnZLoibJcIiA9IDYsICBcclxuICAgIC8q5Yqg5Zu6ICovXHJcbiAgICBcIueZveiJslwiID0gNywgIFxyXG4gICAgLyrmma7pgJrlnLDlnZcgKi9cclxuICAgIFwi57qi6ImyXCIgPSA4LCBcclxuICAgIC8q5pmu6YCa5Zyw5Z2XICovXHJcbiAgICBcIueBsOiJslwiID0gOSwgXHJcbn1cclxuXHJcbkBjY2NsYXNzXHJcbmV4cG9ydCBkZWZhdWx0IGNsYXNzIFdhbGwgZXh0ZW5kcyBjYy5Db21wb25lbnQge1xyXG5cclxuICAgIEBwcm9wZXJ0eShjYy5MYWJlbClcclxuICAgIG51bWJlcjogY2MuTGFiZWwgPSBudWxsO1xyXG5cclxuICAgIEBwcm9wZXJ0eSh7XHJcbiAgICAgICAgdG9vbHRpcDogJ+WimeaIluiAhemXqOeahOaWueWQkScsXHJcbiAgICAgICAgdHlwZTogY2MuRW51bShXYWxsVHlwZSksXHJcbiAgICB9KVxyXG4gICAgdHlwZTogV2FsbFR5cGUgPSBXYWxsVHlwZS7lopnmqKrlkJHkuIs7XHJcblxyXG4gICAgQHByb3BlcnR5KHtcclxuICAgICAgICB0b29sdGlwOiAn5aKZ5oiW6ICF6Zeo55qE5pa55ZCRJyxcclxuICAgICAgICB0eXBlOiBjYy5FbnVtKFdhbGxTcGVjaWFsKSxcclxuICAgIH0pXHJcbiAgICBzcGVjaWFsOiBXYWxsU3BlY2lhbCA9IFdhbGxTcGVjaWFsLuaZrumAmumXqDtcclxuXHJcbiAgICBAcHJvcGVydHkoe1xyXG4gICAgICAgIHRvb2x0aXA6ICfpl6jnmoTpopzoibInLFxyXG4gICAgICAgIHR5cGU6IGNjLkVudW0oV2FsbENvbG9yKSxcclxuICAgIH0pXHJcbiAgICBjb2xvcjogV2FsbENvbG9yID0gV2FsbENvbG9yLue0q+iJsjtcclxuXHJcbiAgICBAcHJvcGVydHkoY2MuU3ByaXRlQXRsYXMpXHJcbiAgICB3YWxsX1Nwcml0ZUZyYW1lczogY2MuU3ByaXRlQXRsYXMgPSBudWxsO1xyXG5cclxuICAgIEBwcm9wZXJ0eShjYy5TcHJpdGVBdGxhcylcclxuICAgIGRvd25fU3ByaXRlRnJhbWVzOiBjYy5TcHJpdGVBdGxhcyA9IG51bGw7XHJcblxyXG5cclxuICAgIHBvc1g6IG51bWJlcjtcclxuICAgIHBvc1k6IG51bWJlcjtcclxuICAgIGRpcmVjdGlvbjogYW55O1xyXG4gICAgd2FsbF9JbmZvOiBhbnk7XHJcbiAgICBvcGVuTm9kZTogY2MuTm9kZTtcclxuICAgIGZyZWV6ZU5vZGU6IGNjLk5vZGU7XHJcbiAgICBvcGVuOmJvb2xlYW47XHJcbiAgICBcclxuXHJcbiAgICAvLyBMSUZFLUNZQ0xFIENBTExCQUNLUzpcclxuXHJcbiAgICAvLyBvbkxvYWQgKCkge31cclxuXHJcbiAgICBzdGFydCAoKSB7XHJcbiAgICAgICAgLy8gY29uc29sZS5sb2codGhpcy50eXBlKTtcclxuICAgIH1cclxuXHJcbiAgICBqc29uRGVlcENsb25lPFQ+KG9iajogVCk6IFQge1xyXG4gICAgICAgIHJldHVybiBKU09OLnBhcnNlKEpTT04uc3RyaW5naWZ5KG9iaikpO1xyXG4gICAgfVxyXG5cclxuICAgIGluaXQod2FsbF9JbmZvLCBwb3NYOiBudW1iZXIsIHBvc1k6IG51bWJlciwgZGlyZWN0aW9uOiBhbnkpe1xyXG4gICAgICAgIFxyXG4gICAgICAgIHRoaXMud2FsbF9JbmZvID0gdGhpcy5qc29uRGVlcENsb25lKHdhbGxfSW5mbyk7XHJcbiAgICAgICAgLy8gdGhpcy5vcGVuID0gdHJ1ZTtcclxuICAgICAgICBpZih3YWxsX0luZm8gPT0gbnVsbCl7XHJcbiAgICAgICAgICAgIHRoaXMucG9zWCA9IHBvc1g7XHJcbiAgICAgICAgICAgIHRoaXMucG9zWSA9IHBvc1k7XHJcbiAgICAgICAgICAgIFxyXG4gICAgICAgICAgICBpZihkaXJlY3Rpb24pdGhpcy5kaXJlY3Rpb24gPSBkaXJlY3Rpb247XHJcbiAgICAgICAgICAgIC8vIGNvbnNvbGUubG9nKFwi6Zeo5pa55ZCR6LWL5YC8XCIsZGlyZWN0aW9uKTtcclxuICAgICAgICAgICAgaWYoZGlyZWN0aW9uID09IFwidXBcIiApe1xyXG4gICAgICAgICAgICAgICAgdGhpcy5ub2RlLnBhcmVudC56SW5kZXggPSAxMDAgKyB0aGlzLnBvc1ggLSB0aGlzLnBvc1kqMztcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBlbHNlIGlmKCBkaXJlY3Rpb24gPT0gXCJkb3duXCIgfHwgZGlyZWN0aW9uID09IFwicmlnaHRcIiB8fCBcclxuICAgICAgICAgICAgICAgIGRpcmVjdGlvbiA9PSBcInJpZ2h0ZG93blwiIHx8IGRpcmVjdGlvbiA9PSBcImRvd25yaWdodFwiXHJcbiAgICAgICAgICAgIHx8IGRpcmVjdGlvbiA9PSBcInJpZ2h0dXBcIiB8fCBkaXJlY3Rpb24gPT0gXCJ1cHJpZ2h0XCIpe1xyXG4gICAgICAgICAgICAgICAgdGhpcy5ub2RlLnBhcmVudC56SW5kZXggPSAzMCArIHRoaXMucG9zWCAtIHRoaXMucG9zWSozO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBlbHNlIGlmKCBkaXJlY3Rpb24gPT0gXCJsZWZ0XCJ8fCBkaXJlY3Rpb24gPT0gXCJsZWZ0ZG93blwiIHx8IGRpcmVjdGlvbiA9PSBcImRvd25sZWZ0XCIpe1xyXG4gICAgICAgICAgICAgICAgdGhpcy5ub2RlLnBhcmVudC56SW5kZXggPSA3MCArIHRoaXMucG9zWCAtIHRoaXMucG9zWSozOyBcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBlbHNlIHRoaXMubm9kZS5wYXJlbnQuekluZGV4ID0gNzAgKyB0aGlzLnBvc1ggLSB0aGlzLnBvc1kqMztcclxuXHJcbiAgICAgICAgICAgIE1hcENvbnJvbGVyLl9pbnN0YW5jZS5tYXBCbG9ja3NXYWxsW3RoaXMucG9zWF1bdGhpcy5wb3NZXS5nZXRDb21wb25lbnQoXCJNYXBCbG9ja1wiKS5ibG9ja19JZCA9IFwiV2FsbFwiO1xyXG4gICAgICAgICAgICAvL2NvbnNvbGUubG9nKHRoaXMucG9zWCx0aGlzLnBvc1ksTWFwQ29ucm9sZXIuX2luc3RhbmNlLm1hcEJsb2Nrc1dhbGxbdGhpcy5wb3NYXVt0aGlzLnBvc1ldLmdldENvbXBvbmVudChcIk1hcEJsb2NrXCIpLmJsb2NrX0lkKTtcclxuICAgICAgICAgICAgLy8gY29uc29sZS5sb2codGhpcy5wb3NYLHRoaXMucG9zWSx0aGlzLm5vZGUuekluZGV4KTtcclxuICAgICAgICAgICAgLy90aGlzLm5vZGUuZ2V0Q2hpbGRCeU5hbWUoXCJudW1cIikuZ2V0Q29tcG9uZW50KGNjLkxhYmVsKS5zdHJpbmcgPSBkaXJlY3Rpb247XHJcbiAgICAgICAgICAgLy90aGlzLm5vZGUuZ2V0Q2hpbGRCeU5hbWUoXCJudW1cIikuZ2V0Q29tcG9uZW50KGNjLkxhYmVsKS5zdHJpbmcgPSBcIjpcIiArIHRoaXMubm9kZS5wYXJlbnQuekluZGV4O1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZih3YWxsX0luZm8gIT0gbnVsbCl7XHJcbiAgICAgICAgICAgIHRoaXMuY29sb3IgPSB3YWxsX0luZm8uY29sb3I7XHJcbiAgICAgICAgICAgIHRoaXMuc3BlY2lhbCA9IHdhbGxfSW5mby5zcGVjaWFsO1xyXG4gICAgICAgICAgICB0aGlzLmluaXRUeXBlKCk7XHJcbiAgICAgICAgICAgIGlmKHdhbGxfSW5mby5sZW5ndGggPiAwKXtcclxuICAgICAgICAgICAgICAgIHRoaXMuaW5pdENvbG9yKHdhbGxfSW5mby5sZW5ndGgpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGVsc2UgdGhpcy5ub2RlLnJlbW92ZUNvbXBvbmVudChcImNjLlNwcml0ZVwiKTtcclxuICAgICAgICAgICAgaWYodGhpcy5wb3NYICE9IG51bGwpe1xyXG4gICAgICAgICAgICAgICAgTWFwQ29ucm9sZXIuX2luc3RhbmNlLm1hcEJsb2Nrc1dhbGxbdGhpcy5wb3NYXVt0aGlzLnBvc1ldLmdldENvbXBvbmVudChcIk1hcEJsb2NrXCIpLmJsb2NrX0lkID0gXCJXYWxsXCI7XHJcbiAgICAgICAgICAgICAgICAvL2NvbnNvbGUubG9nKHRoaXMucG9zWCx0aGlzLnBvc1ksTWFwQ29ucm9sZXIuX2luc3RhbmNlLm1hcEJsb2Nrc1dhbGxbdGhpcy5wb3NYXVt0aGlzLnBvc1ldLmdldENvbXBvbmVudChcIk1hcEJsb2NrXCIpLmJsb2NrX0lkKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICAvLyBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgICAvLyAgICAgdGhpcy5ub2RlLmdldENoaWxkQnlOYW1lKFwibnVtXCIpLmdldENvbXBvbmVudChjYy5MYWJlbCkuc3RyaW5nID0gXCI6XCIgKyB0aGlzLm5vZGUucGFyZW50LnpJbmRleDtcclxuICAgICAgICAvLyB9LCAxMDAwKTtcclxuIFxyXG4gICAgfVxyXG5cclxuICAgIC8v5Yib5bu66Zeo55qE6aKc6ImyXHJcbiAgICBpbml0Q29sb3IobGVuZ3RoOiBudW1iZXIpe1xyXG4gICAgICAgIGxldCBkaXJlY3Rpb24gPSB0aGlzLm5vZGUucGFyZW50Lm5hbWU7XHJcbiAgICAgICAgbGV0IGRvdWJsZSA9IDA7XHJcbiAgICAgICAgaWYoZGlyZWN0aW9uID09IFwibGVmdFwiICB8fCBkaXJlY3Rpb24gPT0gXCJyaWdodFwiKXtcclxuICAgICAgICAgICAgZG91YmxlID0gMztcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIC8vIGRlYnVnZ2VyO1xyXG4gICAgICAgIGlmKHRoaXMud2FsbF9TcHJpdGVGcmFtZXMpe1xyXG4gICAgICAgICAgICBsZXQgbmFtZSA9IHRoaXMuY29sb3IrXCJjb2xvclwiICsgKGxlbmd0aCtkb3VibGUpO1xyXG4gICAgICAgICAgICB2YXIgc3ByaXRlRnJhbWUgPSB0aGlzLndhbGxfU3ByaXRlRnJhbWVzLl9zcHJpdGVGcmFtZXNbbmFtZV07XHJcbiAgICAgICAgICAgIHRoaXMubm9kZS5nZXRDb21wb25lbnQoY2MuU3ByaXRlKS5zcHJpdGVGcmFtZSA9IHNwcml0ZUZyYW1lO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZih0aGlzLmRvd25fU3ByaXRlRnJhbWVzKXtcclxuICAgICAgICAgICAgbGV0IG5hbWUyID0gdGhpcy5jb2xvciArIFwiZG93blwiICsgKGxlbmd0aCtkb3VibGUpO1xyXG4gICAgICAgICAgICB2YXIgZG93bkZyYW1lID0gdGhpcy5kb3duX1Nwcml0ZUZyYW1lcy5fc3ByaXRlRnJhbWVzW25hbWUyXTtcclxuICAgICAgICAgICAgdGhpcy5ub2RlLnBhcmVudC5nZXRDaGlsZEJ5TmFtZShcImRvd25cIikuZ2V0Q29tcG9uZW50KGNjLlNwcml0ZSkuc3ByaXRlRnJhbWUgPSBkb3duRnJhbWU7XHJcbiAgICAgICAgfVxyXG5cclxuICAgIFxyXG4gICAgfVxyXG5cclxuICAgIC8v5Yib5bu654m55q6K57G75Z6L6ZeoXHJcbiAgICBpbml0VHlwZSgpe1xyXG4gICAgICAgIHN3aXRjaCh0aGlzLnNwZWNpYWwpe1xyXG4gICAgICAgICAgICBjYXNlIFdhbGxTcGVjaWFsLuaYn+aYn+mXqDpcclxuICAgICAgICAgICAgICAgIGxldCBzdGFyID0gY2MuaW5zdGFudGlhdGUoTWFwQ29ucm9sZXIuX2luc3RhbmNlLkJsb2NrX1Byb3BbdGhpcy5zcGVjaWFsXSk7XHJcbiAgICAgICAgICAgICAgICBzdGFyLnBhcmVudCA9IHRoaXMubm9kZS5wYXJlbnQ7XHJcbiAgICAgICAgICAgICAgICAvLyBjb25zb2xlLmxvZyhcIumXqOeahOaWueWQkVwiLHRoaXMuZGlyZWN0aW9uLFwi6ZW/5bqmXCIsdGhpcy53YWxsX0luZm8ubGVuZ3RoKTtcclxuICAgICAgICAgICAgICAgIC8vIHN0YXIuc2NhbGVYID0gc3Rhci5zY2FsZVkgPSAwLjU7XHJcbiAgICAgICAgICAgICAgICBpZih0aGlzLndhbGxfSW5mby5sZW5ndGggPiAwKXtcclxuICAgICAgICAgICAgICAgICAgICBpZih0aGlzLmRpcmVjdGlvbiA9PSBcInJpZ2h0XCIgfHwgdGhpcy5kaXJlY3Rpb24gPT0gXCJsZWZ0XCIpe1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBzdGFyLmNoaWxkcmVuW3RoaXMud2FsbF9JbmZvLmxlbmd0aCArIDJdLmFjdGl2ZSA9IHRydWU7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIGVsc2UgaWYodGhpcy5kaXJlY3Rpb24gPT0gXCJ1cFwiIHx8IHRoaXMuZGlyZWN0aW9uID09IFwiZG93blwiKXtcclxuICAgICAgICAgICAgICAgICAgICAgICAgc3Rhci5jaGlsZHJlblt0aGlzLndhbGxfSW5mby5sZW5ndGggLSAxXS5hY3RpdmUgPSB0cnVlO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIHN0YXIuc2V0UG9zaXRpb24odGhpcy5ub2RlLndpZHRoLzIrdGhpcy5ub2RlLngsdGhpcy5ub2RlLmhlaWdodC8yK3RoaXMubm9kZS55KTtcclxuICAgICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICBjYXNlIFdhbGxTcGVjaWFsLuW8gOWFs+mXqDpcclxuICAgICAgICAgICAgICAgIGxldCBuYW1lID0gXCJvcGVuXCIgKyB0aGlzLndhbGxfSW5mby5sZW5ndGg7XHJcbiAgICAgICAgICAgICAgICB0aGlzLm9wZW5Ob2RlID0gdGhpcy5ub2RlLnBhcmVudC5nZXRDaGlsZEJ5TmFtZShcIm9wZW5cIikuZ2V0Q2hpbGRCeU5hbWUobmFtZSk7XHJcbiAgICAgICAgICAgICAgICB0aGlzLm9wZW5Ob2RlLmFjdGl2ZSA9IHRydWU7XHJcbiAgICAgICAgICAgICAgICBpZih0aGlzLndhbGxfSW5mby5sb2NrID09IGZhbHNlKXtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLm9wZW4gPSB0cnVlO1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMub3Blbk5vZGUuY2hpbGRyZW5bMF0uc2NhbGVYICo9IDAuMDE7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5vcGVuTm9kZS5jaGlsZHJlblsxXS5zY2FsZVggKj0gMC4wMTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIGVsc2V7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5vcGVuID0gZmFsc2U7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgY2FzZSBXYWxsU3BlY2lhbC7lhrvnu5Ppl6g6XHJcbiAgICAgICAgICAgICAgICBsZXQgZnJlZXplID0gXCJmcmVlemVcIiArIHRoaXMud2FsbF9JbmZvLmxlbmd0aDtcclxuICAgICAgICAgICAgICAgIHRoaXMuZnJlZXplTm9kZSA9IHRoaXMubm9kZS5wYXJlbnQuZ2V0Q2hpbGRCeU5hbWUoXCJmcmVlemVcIikuZ2V0Q2hpbGRCeU5hbWUoZnJlZXplKTtcclxuICAgICAgICAgICAgICAgIHRoaXMuZnJlZXplTm9kZS5hY3RpdmUgPSB0cnVlO1xyXG4gICAgICAgICAgICAgICAgaWYodGhpcy53YWxsX0luZm8uZnJlZXplKXtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLmZyZWV6ZU5vZGUuZ2V0Q2hpbGRCeU5hbWUoXCJudW1cIikuZ2V0Q29tcG9uZW50KGNjLkxhYmVsKS5zdHJpbmcgPSB0aGlzLndhbGxfSW5mby5mcmVlemUrXCJcIjtcclxuICAgICAgICAgICAgICAgIH0gXHJcbiAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICB9IFxyXG4gICAgfVxyXG5cclxuICAgIC8v5pKt5pS+5pif5pif6Zeo6YCa6L+HXHJcbiAgICBwbGF5U3RhckRvb3IoKXtcclxuICAgICAgICBpZih0aGlzLm5vZGUucGFyZW50LmdldENoaWxkQnlOYW1lKFwic3RhclwiKSl7XHJcbiAgICAgICAgICAgIGxldCBzdGFyID0gdGhpcy5ub2RlLnBhcmVudC5nZXRDaGlsZEJ5TmFtZShcInN0YXJcIik7XHJcbiAgICAgICAgICAgIGZvcihsZXQgaT0wOyBpPHN0YXIuY2hpbGRyZW4ubGVuZ3RoOyBpKyspe1xyXG4gICAgICAgICAgICAgICAgaWYoc3Rhci5jaGlsZHJlbltpXS5hY3RpdmUgPT0gdHJ1ZSl7XHJcbiAgICAgICAgICAgICAgICAgICAgbGV0IHN0YXJDaGlsZCA9IHN0YXIuY2hpbGRyZW5baV07XHJcbiAgICAgICAgICAgICAgICAgICAgZm9yKGxldCBqPTA7IGo8c3RhckNoaWxkLmNoaWxkcmVuLmxlbmd0aDsgaisrKXtcclxuICAgICAgICAgICAgICAgICAgICAgICAgc3RhckNoaWxkLmNoaWxkcmVuW2pdLmFjdGl2ZSA9IHRydWVcclxuICAgICAgICAgICAgICAgICAgICAgICAgc3RhckNoaWxkLmNoaWxkcmVuW2pdLmdldENvbXBvbmVudChzcC5Ta2VsZXRvbikuc2V0QW5pbWF0aW9uKDEsXCJ0YW9wYW8xXCIsZmFsc2UpO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcblxyXG4gICAgLy/mlLnlj5jlvIDlhbPpl6jnirbmgIFcclxuICAgIGNoYW5nZUxvY2soKXtcclxuICAgICAgICB0aGlzLm9wZW4gPSAhdGhpcy5vcGVuO1xyXG4gICAgICAgIGNvbnNvbGUubG9nKFwi5byA5YWz6Zeo54q25oCB5pS55Y+YXCIsdGhpcy5vcGVuKTtcclxuICAgICAgICBpZighdGhpcy5vcGVuTm9kZS5hY3RpdmUpe1xyXG4gICAgICAgICAgICB0aGlzLm9wZW5Ob2RlLmFjdGl2ZSA9IHRydWU7XHJcbiAgICAgICAgfVxyXG4gIFxyXG5cclxuICAgICAgICBsZXQgZmlsbCA9IHRoaXMub3Blbk5vZGUuY2hpbGRyZW5bMF0uc2NhbGVYPT0xID8gMC4wMToxO1xyXG4gICAgICAgIGlmKHRoaXMub3Blbk5vZGUuY2hpbGRyZW5bMF0uc2NhbGVYIDwgMCkgZmlsbCA9IC1maWxsO1xyXG4gICAgICAgIC8vIGNvbnNvbGUubG9nKFwi55uu5qCHXCIsZmlsbCk7XHJcblxyXG4gICAgICAgIGNjLnR3ZWVuKHRoaXMub3Blbk5vZGUuY2hpbGRyZW5bMF0pXHJcbiAgICAgICAgLnRvKDAuMywge3NjYWxlWDogdGhpcy5vcGVuTm9kZS5jaGlsZHJlblswXS5zY2FsZVggPCAwPy1maWxsOmZpbGx9KVxyXG4gICAgICAgIC5jYWxsKCgpPT57XHJcbiAgICAgICAgICAgIC8vIGNvbnNvbGUubG9nKFwi5bem6L655a6M5oiQXCIpO1xyXG4gICAgICAgIH0pXHJcbiAgICAgICAgLnN0YXJ0KCk7XHJcblxyXG4gICAgICAgIGNjLnR3ZWVuKHRoaXMub3Blbk5vZGUuY2hpbGRyZW5bMV0pXHJcbiAgICAgICAgLnRvKDAuMywge3NjYWxlWDogdGhpcy5vcGVuTm9kZS5jaGlsZHJlblsxXS5zY2FsZVggPCAwPy1maWxsOmZpbGx9KVxyXG4gICAgICAgIC5jYWxsKCgpPT57XHJcbiAgICAgICAgICAgIC8vIGNvbnNvbGUubG9nKFwi5Y+z6L655a6M5oiQXCIpO1xyXG4gICAgICAgIH0pXHJcbiAgICAgICAgLnN0YXJ0KCk7XHJcbiAgICB9XHJcblxyXG4gICAgY2hhbmdlRnJlZXplKCl7XHJcbiAgICAgICAgbGV0IG51bVN0ciA9IHRoaXMuZnJlZXplTm9kZS5nZXRDaGlsZEJ5TmFtZShcIm51bVwiKS5nZXRDb21wb25lbnQoY2MuTGFiZWwpO1xyXG4gICAgICAgIGxldCBudW0gPSBwYXJzZUludChudW1TdHIuc3RyaW5nKTtcclxuICAgICAgICBudW0gLT0gMTtcclxuICAgICAgICB0aGlzLmZyZWV6ZU5vZGUuZ2V0Q2hpbGRCeU5hbWUoXCJudW1cIikuZ2V0Q29tcG9uZW50KGNjLkxhYmVsKS5zdHJpbmcgPSBudW0rXCJcIjtcclxuICAgICAgICBpZihudW0gPT0gMCl7XHJcbiAgICAgICAgICAgIHRoaXMuZnJlZXplTm9kZS5wYXJlbnQuYWN0aXZlID0gZmFsc2U7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIGRvd25Eb29yKCl7XHJcbiAgICAgICAgaWYodGhpcy5vcGVuTm9kZSl7XHJcbiAgICAgICAgICAgIGlmKHRoaXMub3Blbk5vZGUuY2hpbGRyZW5bMF0uc2NhbGVYID09IDEpXHJcbiAgICAgICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmKHRoaXMuZnJlZXplTm9kZSl7XHJcbiAgICAgICAgICAgIGlmKHRoaXMuZnJlZXplTm9kZS5hY3RpdmUgPT0gdHJ1ZSlcclxuICAgICAgICAgICAgICAgIHJldHVybjsgXHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICB0aGlzLm5vZGUub3BhY2l0eSA9IDA7XHJcbiAgICAgICAgaWYodGhpcy5zcGVjaWFsID09IFdhbGxTcGVjaWFsLuaYn+aYn+mXqCl7XHJcbiAgICAgICAgICAgIHRoaXMubm9kZS5wYXJlbnQuZ2V0Q2hpbGRCeU5hbWUoXCJzdGFyXCIpLnkgLT0gMTA7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRoaXMubm9kZS5wYXJlbnQuZ2V0Q2hpbGRCeU5hbWUoXCJkb3duXCIpLmFjdGl2ZSA9IHRydWU7XHJcbiAgICB9XHJcblxyXG4gICAgdXBEb29yKCl7XHJcbiAgICAgICAgaWYodGhpcy5zcGVjaWFsID09IFdhbGxTcGVjaWFsLuaYn+aYn+mXqCl7XHJcbiAgICAgICAgICAgIHRoaXMubm9kZS5wYXJlbnQuZ2V0Q2hpbGRCeU5hbWUoXCJzdGFyXCIpLnkgKz0gMTA7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRoaXMubm9kZS5wYXJlbnQuZ2V0Q2hpbGRCeU5hbWUoXCJkb3duXCIpLmFjdGl2ZSA9IGZhbHNlO1xyXG4gICAgICAgIHRoaXMubm9kZS5vcGFjaXR5ID0gMjUwO1xyXG4gICAgfVxyXG5cclxuICAgIC8vIHVwZGF0ZSAoZHQpIHt9XHJcbn1cclxuIl19 -======= -//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImFzc2V0c1xcU2NyaXB0XFxNYXAudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLG9CQUFvQjtBQUNwQix3RUFBd0U7QUFDeEUsbUJBQW1CO0FBQ25CLGtGQUFrRjtBQUNsRiw4QkFBOEI7QUFDOUIsa0ZBQWtGOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFFbEYsNkNBQXdDO0FBRXhDLGlEQUE0QztBQUM1QyxpREFBZ0Q7QUFFMUMsSUFBQSxLQUF3QixFQUFFLENBQUMsVUFBVSxFQUFuQyxPQUFPLGFBQUEsRUFBRSxRQUFRLGNBQWtCLENBQUM7QUFLNUM7SUFBeUMsK0JBQVk7SUFBckQ7UUFBQSxxRUFtK0RDO1FBOTlERyxpQkFBVyxHQUFxQixFQUFFLENBQUM7UUFHbkMsZ0JBQVUsR0FBcUIsRUFBRSxDQUFDO1FBR2xDLG9CQUFjLEdBQWMsSUFBSSxDQUFDO1FBR2pDLGlCQUFXLEdBQTBCLEVBQUUsQ0FBQztRQUl4QyxpQkFBVyxHQUFxQixFQUFFLENBQUM7UUFLbkMsb0JBQWMsR0FBYyxJQUFJLENBQUM7UUFHakMsYUFBTyxHQUFjLElBQUksQ0FBQztRQUUxQixnQkFBVSxHQUFjLElBQUksQ0FBQztRQUU3QixjQUFRLEdBQWMsSUFBSSxDQUFDO1FBRzNCLFVBQUksR0FBWSxJQUFJLENBQUM7UUFHckIsY0FBUSxHQUFhLElBQUksQ0FBQztRQUUxQixpQkFBVyxHQUFhLElBQUksQ0FBQztRQUU3QixnQkFBVSxHQUFhLElBQUksQ0FBQztRQUc1QixlQUFTLEdBQVksSUFBSSxDQUFDO1FBRzFCLGdCQUFVLEdBQVksSUFBSSxDQUFDO1FBRzNCLGdCQUFVLEdBQVksSUFBSSxDQUFDO1FBSTNCLGFBQU8sR0FBWSxJQUFJLENBQUM7UUFFeEIsZUFBUyxHQUFZLElBQUksQ0FBQztRQUMxQixnQkFBVSxHQUFZLElBQUksQ0FBQztRQUUzQixjQUFRLEdBQVcsQ0FBQyxDQUFDO1FBQ3JCLGNBQVEsR0FBVyxDQUFDLENBQUM7UUFDckIsZUFBUyxHQUFXLENBQUMsQ0FBQztRQUN0QixhQUFPLEdBQVcsQ0FBQyxDQUFDO1FBQ3BCLGNBQVEsR0FBVyxDQUFDLENBQUM7UUFVckIsa0JBQVksR0FBWSxJQUFJLENBQUMsQ0FBQSxRQUFRO1FBQ3JDLG1CQUFhLEdBQVksSUFBSSxDQUFDLENBQUEsV0FBVztRQUN6QyxjQUFRLEdBQVksS0FBSyxDQUFDLENBQUEsUUFBUTtRQUNsQyxhQUFPLEdBQVksS0FBSyxDQUFDLENBQUEsUUFBUTtRQUNqQyxlQUFTLEdBQVksS0FBSyxDQUFDLENBQUEsUUFBUTtRQUNuQyxnQkFBVSxHQUFXLENBQUMsQ0FBQyxDQUFDLFlBQVk7UUFDcEMsZ0JBQVUsR0FBVyxDQUFDLENBQUMsQ0FBQyxXQUFXO1FBQ25DLGNBQVEsR0FBVyxDQUFDLENBQUMsQ0FBRyxNQUFNO1FBRTlCLFdBQUssR0FBWSxLQUFLLENBQUMsQ0FBQSxNQUFNO1FBQzdCLFlBQU0sR0FBWSxLQUFLLENBQUMsQ0FBQSxNQUFNOztJQWk1RGxDLENBQUM7b0JBbitEb0IsV0FBVztJQTZGNUIsNEJBQTRCO0lBRTVCLDRCQUFNLEdBQU47UUFBQSxpQkFrQ0M7UUFoQ0csRUFBRSxDQUFDLEVBQUUsQ0FBQyxVQUFVLENBQUMsT0FBTyxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUM7UUFDcEMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxVQUFVLENBQUMsT0FBTyxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUM7UUFDMUMsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLEdBQUcsQ0FBQyxDQUFDO1FBQ3RCLElBQUksQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLFVBQVUsQ0FBQyxDQUFDLE1BQU0sR0FBRyxHQUFHLENBQUM7UUFDbEQsRUFBRSxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsRUFBRSxDQUFDLENBQUM7UUFDekIsRUFBRSxDQUFDLEVBQUUsQ0FBQyxZQUFZLENBQUMsU0FBUyxDQUFDLFVBQVUsQ0FBQyxRQUFRLEVBQUUsSUFBSSxDQUFDLENBQUM7UUFDeEQsSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxjQUFjLENBQUMsWUFBWSxDQUFDLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQztRQUMxRSxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLGNBQWMsQ0FBQyxZQUFZLENBQUMsQ0FBQyxZQUFZLENBQUMsRUFBRSxDQUFDLFFBQVEsQ0FBQyxDQUFDLFlBQVksQ0FBQyxDQUFDLEVBQUUsTUFBTSxFQUFFLEtBQUssQ0FBQyxDQUFDO1FBQ3JILElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsY0FBYyxDQUFDLFlBQVksQ0FBQyxDQUFDLFlBQVksQ0FBQyxFQUFFLENBQUMsUUFBUSxDQUFDLENBQUMsbUJBQW1CLENBQUMsVUFBQyxLQUFLO1lBQzVHLElBQUksS0FBSyxDQUFDLFNBQVMsQ0FBQyxJQUFJLEtBQUssTUFBTSxFQUFFO2dCQUNqQyxlQUFlO2dCQUNmLEtBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsY0FBYyxDQUFDLFlBQVksQ0FBQyxDQUFDLE1BQU0sR0FBRyxLQUFLLENBQUM7YUFDOUU7UUFDTCxDQUFDLENBQUMsQ0FBQztRQUNILElBQUksQ0FBQyxNQUFNLEdBQUcsRUFBRSxDQUFDO1FBQ2pCLElBQUksQ0FBQyxTQUFTLEdBQUcsRUFBRSxDQUFDLENBQUMsSUFBSTtRQUN6QixJQUFJLENBQUMsVUFBVSxHQUFHLEVBQUUsQ0FBQyxDQUFDLElBQUk7UUFDMUIsSUFBSSxDQUFDLFFBQVEsR0FBRyxFQUFFLENBQUMsQ0FBQyxJQUFJO1FBQ3hCLElBQUksQ0FBQyxXQUFXLEdBQUcsRUFBRSxDQUFDLENBQUMsSUFBSTtRQUMzQixJQUFJLENBQUMsT0FBTyxHQUFHLEtBQUssQ0FBQztRQUNyQixJQUFJLENBQUMsUUFBUSxHQUFHLEtBQUssQ0FBQztRQUN0QixJQUFJLENBQUMsU0FBUyxHQUFHLEtBQUssQ0FBQztRQUN2QixJQUFJLENBQUMsWUFBWSxHQUFHLElBQUksQ0FBQztRQUN6QixJQUFJLENBQUMsYUFBYSxHQUFHLElBQUksQ0FBQztRQUMxQixJQUFJLENBQUMsUUFBUSxHQUFHLENBQUMsQ0FBQztRQUVsQixJQUFJLENBQUMsUUFBUSxDQUFDLE1BQU0sR0FBRyxFQUFFLENBQUMsRUFBRSxDQUFDLFVBQVUsQ0FBQyxPQUFPLENBQUMsWUFBWSxDQUFDLFFBQVEsRUFBRSxDQUFDO1FBQ3hFLElBQUksQ0FBQyxXQUFXLENBQUMsTUFBTSxHQUFHLEVBQUUsQ0FBQyxFQUFFLENBQUMsVUFBVSxDQUFDLE9BQU8sQ0FBQyxZQUFZLENBQUMsUUFBUSxFQUFFLENBQUM7UUFDM0UsSUFBSSxDQUFDLFVBQVUsQ0FBQyxNQUFNLEdBQUcsRUFBRSxDQUFDLEVBQUUsQ0FBQyxVQUFVLENBQUMsT0FBTyxDQUFDLFdBQVcsQ0FBQyxRQUFRLEVBQUUsQ0FBQztRQUV6RSx5Q0FBeUM7UUFDekMsYUFBVyxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUM7SUFDakMsQ0FBQztJQUVELDJCQUFLLEdBQUw7UUFDSSxVQUFVLENBQUM7WUFDUCxFQUFFLENBQUMsUUFBUSxDQUFDLFlBQVksQ0FBQyxXQUFXLEVBQUUsVUFBQyxHQUFHLEVBQUUsS0FBSztnQkFDN0MsSUFBSSxHQUFHLEVBQUU7b0JBQ0wsT0FBTyxDQUFDLEtBQUssQ0FBQyxvQkFBb0IsRUFBRSxHQUFHLENBQUMsQ0FBQztvQkFDekMsT0FBTztpQkFDVjtZQUNMLENBQUMsQ0FBQyxDQUFDO1FBQ1AsQ0FBQyxFQUFFLElBQUksQ0FBQyxDQUFDO1FBQ1QsOEJBQThCO1FBQzlCLElBQUksQ0FBQyxXQUFXLEdBQUcscUJBQVcsQ0FBQyxTQUFTLENBQUMsV0FBVyxDQUFDO1FBQ3JELElBQUksQ0FBQyxXQUFXLEdBQUcscUJBQVcsQ0FBQyxTQUFTLENBQUMsV0FBVyxDQUFDO1FBQ3JELElBQUksQ0FBQyxXQUFXLEdBQUcscUJBQVcsQ0FBQyxTQUFTLENBQUMsV0FBVyxDQUFDO1FBQ3JELGdFQUFnRTtRQUVoRSxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUM7SUFFbkIsQ0FBQztJQUVELGlDQUFXLEdBQVg7UUFDSSxJQUFJLElBQUksQ0FBQyxTQUFTLElBQUksS0FBSyxFQUFFO1lBQ3pCLElBQUksQ0FBQyxTQUFTLEdBQUcsSUFBSSxDQUFDO1lBQ3RCLGNBQWM7WUFDZCxPQUFPLENBQUMsR0FBRyxDQUFDLGlCQUFpQixDQUFDLENBQUM7WUFDL0IsRUFBRSxDQUFDLEVBQUUsQ0FBQyxRQUFRLENBQUMsWUFBWSxDQUFDLGFBQWEsQ0FBQyxDQUFDO1lBQzNDLElBQUksQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDO1lBQ3hCLEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLE1BQU0sRUFBRSxDQUFDLEVBQUUsRUFBRTtnQkFDekMsSUFBSSxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLFlBQVksQ0FBQyxPQUFPLENBQUMsQ0FBQyxJQUFJLElBQUksQ0FBQyxFQUFFO29CQUNoRCxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLGNBQWMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxZQUFZLENBQUMsTUFBTSxDQUFDLENBQUMsU0FBUyxFQUFFLENBQUM7aUJBQzFFO2FBQ0o7U0FDSjtJQUNMLENBQUM7SUFFRCw2QkFBTyxHQUFQO1FBQ0ksZ0RBQWdEO1FBQ2hELElBQUksQ0FBQyxTQUFTLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsY0FBYyxDQUFDLEtBQUssQ0FBQyxDQUFDLGNBQWMsQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUMvRSxJQUFJLENBQUMsVUFBVSxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLGNBQWMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxjQUFjLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDakYsSUFBSSxDQUFDLFVBQVUsR0FBRyxFQUFFLENBQUMsRUFBRSxDQUFDLFVBQVUsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDO1FBQ3RELElBQUksQ0FBQyxVQUFVLEdBQUcsQ0FBQyxDQUFDO1FBQ3BCLElBQUksQ0FBQyxRQUFRLEdBQUcsQ0FBQyxDQUFDO1FBQ2xCLHVCQUFhLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxVQUFVLEVBQUUsRUFBRSxFQUFFLE9BQU8sRUFBRSxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUE7UUFDekUsZ0VBQWdFO1FBQ2hFLCtDQUErQztRQUMvQyx1QkFBYSxDQUFDLGtCQUFrQixDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxVQUFVLENBQUMsT0FBTyxDQUFDLEtBQUssR0FBRyxDQUFDLENBQUMsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLFFBQVEsRUFBRSxJQUFJLENBQUMsVUFBVSxFQUFFLEtBQUssQ0FBQyxDQUFBO1FBRWhILDBCQUEwQjtRQUUxQixJQUFJLENBQUMsUUFBUSxHQUFHLEVBQUUsQ0FBQyxFQUFFLENBQUMsVUFBVSxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDdEQsSUFBSSxDQUFDLFNBQVMsR0FBRyxFQUFFLENBQUMsRUFBRSxDQUFDLFVBQVUsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQ3ZELElBQUksR0FBRyxHQUFHLEVBQUUsQ0FBQyxFQUFFLENBQUMsVUFBVSxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUM7UUFDN0MsSUFBSSxRQUFRLEdBQUcsRUFBRSxDQUFDLEVBQUUsQ0FBQyxVQUFVLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQztRQUV2RCxJQUFJLENBQUMsS0FBSyxHQUFHLEtBQUssQ0FBQztRQUNuQixJQUFJLENBQUMsTUFBTSxHQUFHLEtBQUssQ0FBQztRQUNwQixJQUFJLENBQUMsT0FBTyxHQUFHLENBQUMsQ0FBQztRQUNqQixJQUFJLENBQUMsVUFBVSxFQUFFLENBQUM7UUFDbEIsSUFBSSxDQUFDLE1BQU0sR0FBRyxFQUFFLENBQUM7UUFDakIsSUFBSSxDQUFDLGFBQWEsR0FBRyxFQUFFLENBQUM7UUFDeEIsSUFBSSxDQUFDLE9BQU8sR0FBRyxFQUFFLENBQUM7UUFDbEIsSUFBSSxDQUFDLFFBQVEsR0FBRyxFQUFFLENBQUM7UUFDbkIsSUFBSSxDQUFDLFFBQVEsR0FBRyxFQUFFLENBQUM7UUFDbkIsSUFBSSxDQUFDLFNBQVMsR0FBRyxFQUFFLENBQUM7UUFDcEIsSUFBSSxDQUFDLFVBQVUsR0FBRyxFQUFFLENBQUM7UUFDckIsSUFBSSxDQUFDLGFBQWEsR0FBRyxFQUFFLENBQUM7UUFDeEIsSUFBSSxDQUFDLGFBQWEsR0FBRyxFQUFFLENBQUM7UUFDeEIsSUFBSSxDQUFDLFdBQVcsR0FBRyxFQUFFLENBQUM7UUFDdEIsSUFBSSxDQUFDLFVBQVUsR0FBRyxFQUFFLENBQUM7UUFHckIsSUFBSSxNQUFNLEdBQUcsSUFBSSxDQUFDLFFBQVEsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFFBQVEsR0FBRyxDQUFDLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsUUFBUSxHQUFHLENBQUMsQ0FBQyxHQUFHLEVBQUUsQ0FBQztRQUM1RixJQUFJLE1BQU0sR0FBRyxJQUFJLENBQUMsU0FBUyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxHQUFHLENBQUMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLEdBQUcsQ0FBQyxDQUFDLEdBQUcsRUFBRSxDQUFDO1FBQy9GLHFDQUFxQztRQUNyQyx1Q0FBdUM7UUFFdkMsS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQyxFQUFFLEVBQUU7WUFDcEMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxDQUFDLENBQUMsR0FBRyxFQUFFLENBQUM7WUFFM0IsS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQyxFQUFFLEVBQUU7Z0JBQ3JDLElBQUksS0FBSyxHQUFHLEVBQUUsQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxDQUFDO2dCQUNoRCxLQUFLLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLFVBQVUsQ0FBQyxDQUFDO2dCQUNwRCxLQUFLLENBQUMsWUFBWSxDQUFDLFVBQVUsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7Z0JBQzFDLDJFQUEyRTtnQkFDM0UsS0FBSyxDQUFDLFdBQVcsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLE1BQU0sR0FBRyxDQUFDLEdBQUcsR0FBRyxFQUFFLE1BQU0sR0FBRyxDQUFDLEdBQUcsR0FBRyxDQUFDLENBQUMsQ0FBQTtnQkFDNUQsSUFBSSxRQUFRLElBQUksSUFBSSxFQUFFO29CQUNsQixJQUFJLElBQUksQ0FBQyxXQUFXLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsUUFBUSxFQUFFLEtBQUssQ0FBQyxFQUFFO3dCQUNoRCxJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztxQkFDbEM7aUJBQ0o7Z0JBQ0QsSUFBSSxHQUFHLElBQUksSUFBSSxFQUFFO29CQUNiLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLElBQUksQ0FBQyxRQUFRLEdBQUcsQ0FBQzsyQkFDL0QsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksSUFBSSxDQUFDLFNBQVMsR0FBRyxDQUFDLEVBQUU7d0JBQ3RDLEtBQUssQ0FBQyxPQUFPLEdBQUcsR0FBRyxDQUFDO3dCQUNwQixLQUFLLENBQUMsZUFBZSxDQUFDLEVBQUUsQ0FBQyxNQUFNLENBQUMsQ0FBQzt3QkFDakMsS0FBSyxDQUFDLGlCQUFpQixFQUFFLENBQUM7d0JBQzFCLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO3FCQUM3Qjs7d0JBQ0ksSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7aUJBQ2pDO3FCQUNJO29CQUNELElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksSUFBSSxDQUFDLFFBQVEsR0FBRyxDQUFDOzJCQUM3QixDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxJQUFJLENBQUMsU0FBUyxHQUFHLENBQUMsRUFBRTt3QkFDdEMsS0FBSyxDQUFDLE9BQU8sR0FBRyxHQUFHLENBQUM7d0JBQ3BCLEtBQUssQ0FBQyxlQUFlLENBQUMsRUFBRSxDQUFDLE1BQU0sQ0FBQyxDQUFDO3dCQUNqQyxLQUFLLENBQUMsaUJBQWlCLEVBQUUsQ0FBQzt3QkFDMUIsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7cUJBQzdCOzt3QkFDSSxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztpQkFDakM7Z0JBRUQsSUFBSSxDQUFDLGFBQWEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7YUFDckM7U0FDSjtRQUVELElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQztRQUNoQixJQUFJLENBQUMsU0FBUyxFQUFFLENBQUM7SUFFckIsQ0FBQztJQUVELE1BQU07SUFDTixlQUFlO0lBRWYsTUFBTTtJQUNOLGVBQWU7SUFLZiwrQkFBUyxHQUFUO1FBQUEsaUJBMkZDO1FBMUZHLElBQUksVUFBVSxHQUFHLEVBQUUsQ0FBQyxFQUFFLENBQUMsVUFBVSxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUNoRCxVQUFVLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxVQUFVLENBQUMsQ0FBQztRQUN4QyxPQUFPLENBQUMsR0FBRyxDQUFDLE1BQU0sRUFBRSxVQUFVLENBQUMsQ0FBQztRQUNoQyxJQUFJLEtBQUssR0FBRyxDQUFDLENBQUMsQ0FBQyxhQUFhO1FBQzVCLElBQUksZ0JBQWdCLEdBQUcsQ0FBQyxDQUFDLENBQUMsY0FBYztRQUN4QyxJQUFNLGFBQWEsR0FBRyxFQUFFLENBQUMsQ0FBQyxXQUFXO1FBQ3JDLElBQU0sYUFBYSxHQUFHLENBQUMsQ0FBQyxDQUFDLFdBQVc7UUFFcEMsSUFBTSxZQUFZLEdBQUc7WUFDakIsSUFBTSxTQUFTLEdBQUcsV0FBVyxDQUFDLEdBQUcsRUFBRSxDQUFDO29DQUMzQixDQUFDO2dCQUNOLElBQUksU0FBUyxHQUFHLFVBQVUsQ0FBQyxLQUFLLENBQUMsQ0FBQztnQkFDbEMsb0JBQW9CO2dCQUNwQixJQUFNLFdBQVcsR0FBRyxLQUFJLENBQUMsV0FBVyxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUMsQ0FBQztnQkFDdEQsSUFBSSxLQUFLLEdBQUcsRUFBRSxDQUFDLFdBQVcsQ0FBQyxXQUFXLENBQUMsQ0FBQztnQkFDeEMsS0FBSyxDQUFDLE1BQU0sR0FBRyxLQUFJLENBQUMsSUFBSSxDQUFDO2dCQUN6QixLQUFLLENBQUMsV0FBVyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsU0FBUyxDQUFDLFFBQVEsQ0FBQyxDQUFDLEVBQUUsU0FBUyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO2dCQUNyRSxJQUFJLFNBQVMsQ0FBQyxLQUFLLElBQUksRUFBRSxFQUFFO29CQUN2QixLQUFJLENBQUMsUUFBUSxJQUFJLENBQUMsQ0FBQztvQkFDbkIsS0FBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7b0JBQ3hCLElBQUksU0FBUyxDQUFDLElBQUksSUFBSSxDQUFDLEVBQUU7d0JBQ3JCLElBQUksSUFBSSxHQUFHOzRCQUNQLEVBQUUsRUFBRSxTQUFTLENBQUMsRUFBRSxHQUFHLENBQUM7NEJBQ3BCLEtBQUssRUFBRSxTQUFTLENBQUMsS0FBSzs0QkFDdEIsS0FBSyxFQUFFLFNBQVMsQ0FBQyxRQUFROzRCQUN6QixJQUFJLEVBQUUsRUFBRTs0QkFDUixRQUFRLEVBQUUsU0FBUyxDQUFDLFFBQVE7NEJBQzVCLFFBQVEsRUFBRSxTQUFTLENBQUMsS0FBSzt5QkFDNUIsQ0FBQzt3QkFDRixvQkFBb0I7d0JBQ3BCLElBQU0sYUFBYSxHQUFHLEtBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO3dCQUNuRCxJQUFJLE9BQU8sR0FBRyxFQUFFLENBQUMsV0FBVyxDQUFDLGFBQWEsQ0FBQyxDQUFDO3dCQUM1QyxPQUFPLENBQUMsTUFBTSxHQUFHLEtBQUksQ0FBQyxJQUFJLENBQUM7d0JBQzNCLE9BQU8sQ0FBQyxXQUFXLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUMsRUFBRSxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7d0JBRTdELEtBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDO3dCQUMxQixLQUFLLENBQUMsWUFBWSxDQUFDLE9BQU8sQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxPQUFPLENBQUMsQ0FBQzt3QkFDakUsT0FBTyxDQUFDLFlBQVksQ0FBQyxPQUFPLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsS0FBSyxDQUFDLENBQUM7d0JBRTVELEtBQUksQ0FBQyxRQUFRLElBQUksQ0FBQyxDQUFDO3FCQUN0Qjt5QkFBTSxJQUFJLFNBQVMsQ0FBQyxJQUFJLElBQUksQ0FBQyxFQUFFO3dCQUM1QixJQUFJLFNBQVMsQ0FBQyxZQUFZLEdBQUcsQ0FBQyxFQUFFOzRCQUM1QixLQUFLLEVBQUUsQ0FBQzs7eUJBRVg7d0JBQ0QsS0FBSyxFQUFFLENBQUM7d0JBQ1IsSUFBSSxNQUFJLEdBQUcsVUFBVSxDQUFDLEtBQUssQ0FBQyxDQUFDO3dCQUM3QixvQkFBb0I7d0JBQ3BCLElBQU0sYUFBYSxHQUFHLEtBQUksQ0FBQyxXQUFXLENBQUMsTUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO3dCQUNuRCxJQUFJLFNBQU8sR0FBRyxFQUFFLENBQUMsV0FBVyxDQUFDLGFBQWEsQ0FBQyxDQUFDO3dCQUM1QyxTQUFPLENBQUMsTUFBTSxHQUFHLEtBQUksQ0FBQyxJQUFJLENBQUM7d0JBQzNCLFNBQU8sQ0FBQyxXQUFXLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxNQUFJLENBQUMsUUFBUSxDQUFDLENBQUMsRUFBRSxNQUFJLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7d0JBRTdELEtBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLFNBQU8sQ0FBQyxDQUFDO3dCQUMxQixLQUFLLENBQUMsWUFBWSxDQUFDLE9BQU8sQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxTQUFPLEVBQUUsS0FBSyxDQUFDLENBQUM7d0JBQ3hFLFVBQVUsQ0FBQzs0QkFDUCxTQUFPLENBQUMsWUFBWSxDQUFDLE9BQU8sQ0FBQyxDQUFDLElBQUksQ0FBQyxNQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxLQUFLLEVBQUUsSUFBSSxDQUFDLENBQUM7d0JBQ3RFLENBQUMsRUFBRSxHQUFHLENBQUMsQ0FBQzt3QkFDUixLQUFJLENBQUMsUUFBUSxJQUFJLENBQUMsQ0FBQztxQkFDdEI7eUJBQU07d0JBQ0gsS0FBSyxDQUFDLFlBQVksQ0FBQyxPQUFPLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUM7cUJBQy9DO2lCQUNKO3FCQUNJO29CQUNELEtBQUssQ0FBQyxZQUFZLENBQUMsU0FBUyxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDO2lCQUNqRDtnQkFDRCxLQUFLLEVBQUUsQ0FBQzs7WUF4RFosS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLGdCQUFnQixJQUFJLEtBQUssR0FBRyxVQUFVLENBQUMsTUFBTSxFQUFFLENBQUMsRUFBRTt3QkFBN0QsQ0FBQzthQXlEVDtZQUNELElBQU0sT0FBTyxHQUFHLFdBQVcsQ0FBQyxHQUFHLEVBQUUsQ0FBQztZQUNsQyxJQUFNLFNBQVMsR0FBRyxPQUFPLEdBQUcsU0FBUyxDQUFDO1lBQ3RDLHVCQUF1QjtZQUN2QixJQUFJLFNBQVMsR0FBRyxFQUFFLEVBQUU7Z0JBQ2hCLGdCQUFnQixHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsZ0JBQWdCLEdBQUcsQ0FBQyxFQUFFLGFBQWEsQ0FBQyxDQUFDO2FBQ3BFO2lCQUFNO2dCQUNILGdCQUFnQixHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsZ0JBQWdCLEdBQUcsQ0FBQyxFQUFFLGFBQWEsQ0FBQyxDQUFDO2FBQ3BFO1lBRUQsb0JBQW9CO1lBQ3BCLElBQUksS0FBSyxHQUFHLFVBQVUsQ0FBQyxNQUFNLEVBQUU7Z0JBQzNCLHNDQUFzQztnQkFDdEMsS0FBSSxDQUFDLFlBQVksQ0FBQztvQkFDZCxZQUFZLEVBQUUsQ0FBQztnQkFDbkIsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO2FBQ1Q7aUJBQU07YUFFTjtRQUNMLENBQUMsQ0FBQztRQUVGLFdBQVc7UUFDWCxZQUFZLEVBQUUsQ0FBQztJQUNuQixDQUFDO0lBQ0QseUJBQXlCO0lBQ3pCLCtCQUFTLEdBQVQsVUFBVSxTQUEyRDtRQUNqRSxPQUFPLFNBQVMsQ0FBQyxJQUFJLENBQUMsVUFBQyxDQUFDLEVBQUUsQ0FBQztZQUN2QiwwQkFBMEI7WUFDMUIsSUFBSSxDQUFDLENBQUMsSUFBSSxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUMsSUFBSSxLQUFLLENBQUMsRUFBRTtnQkFDOUIsT0FBTyxDQUFDLENBQUM7YUFDWjtZQUNELElBQUksQ0FBQyxDQUFDLElBQUksS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDLElBQUksS0FBSyxDQUFDLEVBQUU7Z0JBQzlCLE9BQU8sQ0FBQyxDQUFDLENBQUM7YUFDYjtZQUVELDJCQUEyQjtZQUMzQixJQUFJLENBQUMsQ0FBQyxJQUFJLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQyxJQUFJLEtBQUssQ0FBQyxFQUFFO2dCQUM5QixPQUFPLENBQUMsQ0FBQyxJQUFJLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQzthQUMxQjtZQUNELElBQUksQ0FBQyxDQUFDLElBQUksS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDLElBQUksS0FBSyxDQUFDLEVBQUU7Z0JBQzlCLE9BQU8sQ0FBQyxDQUFDO2FBQ1o7WUFDRCxJQUFJLENBQUMsQ0FBQyxJQUFJLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQyxJQUFJLEtBQUssQ0FBQyxFQUFFO2dCQUM5QixPQUFPLENBQUMsQ0FBQyxDQUFDO2FBQ2I7WUFFRCw2QkFBNkI7WUFDN0IsSUFBSSxDQUFDLENBQUMsS0FBSyxLQUFLLEVBQUUsSUFBSSxDQUFDLENBQUMsS0FBSyxLQUFLLEVBQUUsRUFBRTtnQkFDbEMsT0FBTyxDQUFDLENBQUMsQ0FBQzthQUNiO1lBQ0QsSUFBSSxDQUFDLENBQUMsS0FBSyxLQUFLLEVBQUUsSUFBSSxDQUFDLENBQUMsS0FBSyxLQUFLLEVBQUUsRUFBRTtnQkFDbEMsT0FBTyxDQUFDLENBQUM7YUFDWjtZQUVELGlCQUFpQjtZQUNqQixPQUFPLENBQUMsQ0FBQyxLQUFLLEdBQUcsQ0FBQyxDQUFDLEtBQUssQ0FBQztRQUM3QixDQUFDLENBQUMsQ0FBQztJQUNQLENBQUM7SUFHRCxNQUFNO0lBRU4sOEJBQVEsR0FBUjtRQUFBLGlCQXNDQztRQXJDRyxJQUFJLEtBQUssR0FBRyxDQUFDLENBQUMsQ0FBQyxhQUFhO1FBQzVCLElBQUksZUFBZSxHQUFHLENBQUMsQ0FBQyxDQUFDLGNBQWM7UUFDdkMsSUFBTSxhQUFhLEdBQUcsRUFBRSxDQUFDLENBQUMsV0FBVztRQUNyQyxJQUFNLGFBQWEsR0FBRyxDQUFDLENBQUMsQ0FBQyxXQUFXO1FBRXBDLElBQU0sV0FBVyxHQUFHO1lBQ2hCLElBQU0sU0FBUyxHQUFHLFdBQVcsQ0FBQyxHQUFHLEVBQUUsQ0FBQztZQUNwQyxLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsZUFBZSxJQUFJLEtBQUssR0FBRyxLQUFJLENBQUMsUUFBUSxDQUFDLE1BQU0sRUFBRSxDQUFDLEVBQUUsRUFBRTtnQkFDdEUsSUFBSSxLQUFLLEdBQUcsS0FBSSxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsQ0FBQztnQkFDakMsSUFBSSxHQUFHLEdBQUcsS0FBSSxDQUFDLGVBQWUsQ0FBQyxNQUFNLEVBQUUsRUFBRSxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsWUFBWSxDQUFDLFVBQVUsQ0FBQyxDQUFDLElBQUksRUFBRSxLQUFLLENBQUMsWUFBWSxDQUFDLFVBQVUsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7Z0JBQ3hILElBQUksR0FBRyxJQUFJLElBQUksRUFBRTtvQkFDYixLQUFJLENBQUMsVUFBVSxDQUFDLEdBQUcsRUFBRSxLQUFLLENBQUMsQ0FBQztpQkFDL0I7Z0JBQ0QsS0FBSyxFQUFFLENBQUM7YUFDWDtZQUNELElBQU0sT0FBTyxHQUFHLFdBQVcsQ0FBQyxHQUFHLEVBQUUsQ0FBQztZQUNsQyxJQUFNLFNBQVMsR0FBRyxPQUFPLEdBQUcsU0FBUyxDQUFDO1lBQ3RDLHVCQUF1QjtZQUN2QixJQUFJLFNBQVMsR0FBRyxFQUFFLEVBQUU7Z0JBQ2hCLGVBQWUsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLGVBQWUsR0FBRyxDQUFDLEVBQUUsYUFBYSxDQUFDLENBQUM7YUFDbEU7aUJBQU07Z0JBQ0gsZUFBZSxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsZUFBZSxHQUFHLENBQUMsRUFBRSxhQUFhLENBQUMsQ0FBQzthQUNsRTtZQUVELG9CQUFvQjtZQUNwQixJQUFJLEtBQUssR0FBRyxLQUFJLENBQUMsUUFBUSxDQUFDLE1BQU0sRUFBRTtnQkFDOUIsS0FBSSxDQUFDLFlBQVksQ0FBQztvQkFDZCxXQUFXLEVBQUUsQ0FBQztnQkFDbEIsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO2FBQ1Q7aUJBQU07Z0JBQ0gsbUJBQW1CO2dCQUNuQixLQUFJLENBQUMsaUJBQWlCLEVBQUUsQ0FBQzthQUM1QjtRQUNMLENBQUMsQ0FBQztRQUVGLFdBQVc7UUFDWCxXQUFXLEVBQUUsQ0FBQztJQUNsQixDQUFDO0lBRUQsZUFBZTtJQUVmLHFDQUFlLEdBQWYsVUFBZ0IsSUFBSSxFQUFFLE1BQU07UUFDeEIsSUFBSSxHQUFHLEdBQUcsRUFBRSxDQUFDO1FBQ2IsSUFBSSxNQUFNLEdBQUcsRUFBRSxDQUFDLEVBQUUsQ0FBQyxNQUFNLENBQUMsQ0FBQyxHQUFHLENBQUMsRUFBRSxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDM0MsSUFBSSxNQUFNLEdBQUcsRUFBRSxDQUFDLEVBQUUsQ0FBQyxNQUFNLENBQUMsQ0FBQyxHQUFHLENBQUMsRUFBRSxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDM0MsSUFBSSxNQUFNLEdBQUcsRUFBRSxDQUFDLEVBQUUsQ0FBQyxNQUFNLENBQUMsQ0FBQyxFQUFFLE1BQU0sQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7UUFDM0MsSUFBSSxNQUFNLEdBQUcsRUFBRSxDQUFDLEVBQUUsQ0FBQyxNQUFNLENBQUMsQ0FBQyxFQUFFLE1BQU0sQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7UUFDM0MsSUFBSSxPQUFPLEdBQUcsQ0FBQyxDQUFDO1FBQ2hCLElBQUksSUFBSSxJQUFJLE1BQU07WUFBRSxPQUFPLEdBQUcsR0FBRyxDQUFDO1FBQ2xDLElBQUksSUFBSSxJQUFJLE1BQU07WUFBRSxPQUFPLEdBQUcsR0FBRyxDQUFDO1FBRWxDLElBQUksTUFBTSxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUMsUUFBUSxFQUFFO1lBQzFCLElBQUksSUFBSSxDQUFDLGFBQWEsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sSUFBSSxPQUFPLEVBQUU7Z0JBQzNELElBQUksSUFBSSxJQUFJLE1BQU0sSUFBSSxJQUFJLENBQUMsYUFBYSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsWUFBWSxDQUFDLFVBQVUsQ0FBQyxDQUFDLFNBQVMsSUFBSSxPQUFPLEVBQUU7aUJBRTNHOztvQkFDSSxHQUFHLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDO2FBQzFCO1NBQ0o7UUFDRCxJQUFJLE1BQU0sQ0FBQyxDQUFDLElBQUksQ0FBQyxFQUFFO1lBQ2YsSUFBSSxJQUFJLENBQUMsYUFBYSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxJQUFJLE9BQU8sRUFBRTtnQkFDM0QsSUFBSSxJQUFJLElBQUksTUFBTSxJQUFJLElBQUksQ0FBQyxhQUFhLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxZQUFZLENBQUMsVUFBVSxDQUFDLENBQUMsU0FBUyxJQUFJLE1BQU0sRUFBRTtpQkFFMUc7O29CQUNJLEdBQUcsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUM7YUFDekI7U0FDSjtRQUNELElBQUksTUFBTSxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUMsU0FBUyxFQUFFO1lBQzNCLElBQUksSUFBSSxDQUFDLGFBQWEsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sSUFBSSxPQUFPLEVBQUU7Z0JBQzNELElBQUksSUFBSSxJQUFJLE1BQU0sSUFBSSxJQUFJLENBQUMsYUFBYSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsWUFBWSxDQUFDLFVBQVUsQ0FBQyxDQUFDLFNBQVMsSUFBSSxJQUFJLEVBQUU7aUJBRXhHOztvQkFDSSxHQUFHLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO2FBQ3ZCO1NBQ0o7UUFDRCxJQUFJLE1BQU0sQ0FBQyxDQUFDLElBQUksQ0FBQyxFQUFFO1lBQ2YsSUFBSSxJQUFJLENBQUMsYUFBYSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxJQUFJLE9BQU8sRUFBRTtnQkFDM0QsSUFBSSxJQUFJLElBQUksTUFBTSxJQUFJLElBQUksQ0FBQyxhQUFhLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxZQUFZLENBQUMsVUFBVSxDQUFDLENBQUMsU0FBUyxJQUFJLE1BQU0sRUFBRTtpQkFFMUc7O29CQUNJLEdBQUcsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUM7YUFDekI7U0FDSjtRQUNELElBQUksR0FBRyxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUU7WUFFaEIsT0FBTyxJQUFJLENBQUM7U0FDZjtRQUNELElBQUksR0FBRyxDQUFDLE1BQU0sSUFBSSxDQUFDLEVBQUU7WUFDakIsSUFBSSxJQUFJLElBQUksTUFBTTtnQkFDZCxPQUFPLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQzs7Z0JBRWQsT0FBTyxJQUFJLENBQUM7U0FDbkI7YUFDSSxJQUFJLEdBQUcsQ0FBQyxNQUFNLElBQUksQ0FBQyxFQUFFO1lBQ3RCLE9BQU8sR0FBRyxDQUFDLENBQUMsQ0FBQyxHQUFHLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQztTQUMxQjtJQUNMLENBQUM7SUFFRCx1Q0FBaUIsR0FBakI7UUFDSSxTQUFTO1FBQ1QsS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsTUFBTSxFQUFFLENBQUMsRUFBRSxFQUFFO1lBQzNDLElBQUksS0FBSyxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDN0IsSUFBSSxLQUFLLENBQUMsT0FBTyxJQUFJLEdBQUcsRUFBRTtnQkFDdEIsSUFBSSxHQUFHLEdBQUcsSUFBSSxDQUFDLGVBQWUsQ0FBQyxNQUFNLEVBQUUsRUFBRSxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsWUFBWSxDQUFDLFVBQVUsQ0FBQyxDQUFDLElBQUksRUFBRSxLQUFLLENBQUMsWUFBWSxDQUFDLFVBQVUsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7Z0JBQ3hILElBQUksR0FBRyxJQUFJLElBQUksRUFBRTtvQkFDYixJQUFJLENBQUMsVUFBVSxDQUFDLEdBQUcsRUFBRSxLQUFLLEVBQUUsS0FBSyxDQUFDLFlBQVksQ0FBQyxVQUFVLENBQUMsQ0FBQyxJQUFJLEVBQUUsS0FBSyxDQUFDLFlBQVksQ0FBQyxVQUFVLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQztpQkFDekc7YUFDSjtTQUVKO0lBRUwsQ0FBQztJQUVELGdDQUFVLEdBQVYsVUFBVyxTQUFTLEVBQUUsSUFBSTtRQUN0QixJQUFJLElBQUksR0FBRyxJQUFJLENBQUM7UUFDaEIsSUFBSSxDQUFDLFlBQVksQ0FBQyxVQUFVLENBQUMsQ0FBQyxZQUFZLENBQUMsU0FBUyxDQUFDLENBQUM7UUFDdEQsUUFBUSxTQUFTLEVBQUU7WUFDZixLQUFLLE9BQU87Z0JBQ1IsSUFBSSxDQUFDLE9BQU8sR0FBRyxHQUFHLENBQUM7Z0JBQ25CLElBQUksR0FBRyxFQUFFLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztnQkFDM0MsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7Z0JBQzFCLGtEQUFrRDtnQkFDbEQsSUFBSSxDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDO2dCQUN4QixJQUFJLENBQUMsV0FBVyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLENBQUMsRUFBRSxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztnQkFDeEMsSUFBSSxDQUFDLE9BQU8sR0FBRyxHQUFHLENBQUM7Z0JBQ25CLElBQUksQ0FBQyxjQUFjLENBQUMsTUFBTSxDQUFDLENBQUMsWUFBWSxDQUFDLE1BQU0sQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLFlBQVksQ0FBQyxVQUFVLENBQUMsQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLFlBQVksQ0FBQyxVQUFVLENBQUMsQ0FBQyxJQUFJLEVBQUUsU0FBUyxDQUFDLENBQUM7Z0JBQy9JLDRHQUE0RztnQkFDNUcsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUM7Z0JBQzlDLElBQUksQ0FBQyxPQUFPLElBQUksQ0FBQyxDQUFDO2dCQUNsQixJQUFJLElBQUksQ0FBQyxjQUFjLENBQUMsTUFBTSxDQUFDLENBQUMsWUFBWSxDQUFDLE1BQU0sQ0FBQyxDQUFDLE9BQU8sSUFBSSxDQUFDO29CQUM3RCxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztxQkFDeEIsSUFBSSxJQUFJLENBQUMsY0FBYyxDQUFDLE1BQU0sQ0FBQyxDQUFDLFlBQVksQ0FBQyxNQUFNLENBQUMsQ0FBQyxPQUFPLElBQUksQ0FBQztvQkFDbEUsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7Z0JBRS9CLE1BQU07WUFDVixLQUFLLE1BQU07Z0JBQ1AsSUFBSSxDQUFDLE9BQU8sR0FBRyxHQUFHLENBQUM7Z0JBQ25CLElBQUksR0FBRyxFQUFFLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztnQkFDM0Msa0RBQWtEO2dCQUNsRCxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztnQkFDM0IsSUFBSSxDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDO2dCQUN4QixJQUFJLENBQUMsV0FBVyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLENBQUMsRUFBRSxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztnQkFDeEMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxZQUFZLENBQUMsTUFBTSxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsWUFBWSxDQUFDLFVBQVUsQ0FBQyxDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsWUFBWSxDQUFDLFVBQVUsQ0FBQyxDQUFDLElBQUksRUFBRSxTQUFTLENBQUMsQ0FBQztnQkFDL0ksSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUM7Z0JBQzlDLDRHQUE0RztnQkFDNUcsSUFBSSxDQUFDLE9BQU8sSUFBSSxDQUFDLENBQUM7Z0JBQ2xCLElBQUksSUFBSSxDQUFDLGNBQWMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxZQUFZLENBQUMsTUFBTSxDQUFDLENBQUMsT0FBTyxJQUFJLENBQUM7b0JBQzdELElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO3FCQUN4QixJQUFJLElBQUksQ0FBQyxjQUFjLENBQUMsTUFBTSxDQUFDLENBQUMsWUFBWSxDQUFDLE1BQU0sQ0FBQyxDQUFDLE9BQU8sSUFBSSxDQUFDO29CQUNsRSxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztnQkFDL0IsTUFBTTtZQUNWLEtBQUssSUFBSTtnQkFDTCxJQUFJLENBQUMsT0FBTyxHQUFHLEdBQUcsQ0FBQztnQkFDbkIsSUFBSSxHQUFHLEVBQUUsQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO2dCQUUzQyxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztnQkFDekIsa0RBQWtEO2dCQUNsRCxJQUFJLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUM7Z0JBQ3hCLElBQUksQ0FBQyxXQUFXLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxFQUFFLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO2dCQUV4QyxJQUFJLENBQUMsY0FBYyxDQUFDLE1BQU0sQ0FBQyxDQUFDLFlBQVksQ0FBQyxNQUFNLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxZQUFZLENBQUMsVUFBVSxDQUFDLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxZQUFZLENBQUMsVUFBVSxDQUFDLENBQUMsSUFBSSxFQUFFLFNBQVMsQ0FBQyxDQUFDO2dCQUMvSSxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQztnQkFDOUMsNEdBQTRHO2dCQUM1RyxJQUFJLENBQUMsT0FBTyxJQUFJLENBQUMsQ0FBQztnQkFDbEIsSUFBSSxJQUFJLENBQUMsY0FBYyxDQUFDLE1BQU0sQ0FBQyxDQUFDLFlBQVksQ0FBQyxNQUFNLENBQUMsQ0FBQyxPQUFPLElBQUksQ0FBQztvQkFDN0QsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7cUJBQ3hCLElBQUksSUFBSSxDQUFDLGNBQWMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxZQUFZLENBQUMsTUFBTSxDQUFDLENBQUMsT0FBTyxJQUFJLENBQUM7b0JBQ2xFLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO2dCQUMvQixNQUFNO1lBQ1YsS0FBSyxNQUFNO2dCQUNQLElBQUksQ0FBQyxPQUFPLEdBQUcsR0FBRyxDQUFDO2dCQUNuQixJQUFJLEdBQUcsRUFBRSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7Z0JBQzNDLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO2dCQUM1QixrREFBa0Q7Z0JBQ2xELElBQUksQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQztnQkFDeEIsSUFBSSxDQUFDLFdBQVcsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDLEVBQUUsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7Z0JBQ3hDLGlEQUFpRDtnQkFDakQsSUFBSSxDQUFDLGNBQWMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxZQUFZLENBQUMsTUFBTSxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsWUFBWSxDQUFDLFVBQVUsQ0FBQyxDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsWUFBWSxDQUFDLFVBQVUsQ0FBQyxDQUFDLElBQUksRUFBRSxTQUFTLENBQUMsQ0FBQztnQkFDL0ksSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUM7Z0JBQzlDLDRHQUE0RztnQkFDNUcsSUFBSSxDQUFDLE9BQU8sSUFBSSxDQUFDLENBQUM7Z0JBQ2xCLElBQUksSUFBSSxDQUFDLGNBQWMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxZQUFZLENBQUMsTUFBTSxDQUFDLENBQUMsT0FBTyxJQUFJLENBQUM7b0JBQzdELElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO3FCQUN4QixJQUFJLElBQUksQ0FBQyxjQUFjLENBQUMsTUFBTSxDQUFDLENBQUMsWUFBWSxDQUFDLE1BQU0sQ0FBQyxDQUFDLE9BQU8sSUFBSSxDQUFDO29CQUNsRSxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztnQkFDL0IsTUFBTTtZQUNWLEtBQUssU0FBUyxDQUFDO1lBQUMsS0FBSyxTQUFTO2dCQUMxQixJQUFJLENBQUMsT0FBTyxHQUFHLEdBQUcsQ0FBQztnQkFDbkIsSUFBSSxHQUFHLEVBQUUsQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO2dCQUMzQyxrREFBa0Q7Z0JBQ2xELElBQUksQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQztnQkFDeEIsSUFBSSxDQUFDLFdBQVcsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDLEVBQUUsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7Z0JBQ3hDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsWUFBWSxDQUFDLE1BQU0sQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLFlBQVksQ0FBQyxVQUFVLENBQUMsQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLFlBQVksQ0FBQyxVQUFVLENBQUMsQ0FBQyxJQUFJLEVBQUUsU0FBUyxDQUFDLENBQUM7Z0JBQ3BJLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsWUFBWSxDQUFDLE1BQU0sQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLFlBQVksQ0FBQyxVQUFVLENBQUMsQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLFlBQVksQ0FBQyxVQUFVLENBQUMsQ0FBQyxJQUFJLEVBQUUsU0FBUyxDQUFDLENBQUM7Z0JBQ3BJLGlHQUFpRztnQkFDakcsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7Z0JBQ25DLElBQUksQ0FBQyxPQUFPLElBQUksQ0FBQyxDQUFDO2dCQUNsQixpR0FBaUc7Z0JBQ2pHLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO2dCQUNuQyxJQUFJLENBQUMsT0FBTyxJQUFJLENBQUMsQ0FBQztnQkFFbEIsTUFBTTtZQUNWLEtBQUssUUFBUSxDQUFDO1lBQUMsS0FBSyxRQUFRO2dCQUN4QixJQUFJLENBQUMsT0FBTyxHQUFHLEdBQUcsQ0FBQztnQkFDbkIsSUFBSSxHQUFHLEVBQUUsQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO2dCQUMzQyxrREFBa0Q7Z0JBQ2xELElBQUksQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQztnQkFDeEIsSUFBSSxDQUFDLFdBQVcsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDLEVBQUUsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7Z0JBQ3hDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsWUFBWSxDQUFDLE1BQU0sQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLFlBQVksQ0FBQyxVQUFVLENBQUMsQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLFlBQVksQ0FBQyxVQUFVLENBQUMsQ0FBQyxJQUFJLEVBQUUsU0FBUyxDQUFDLENBQUM7Z0JBQ3BJLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsWUFBWSxDQUFDLE1BQU0sQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLFlBQVksQ0FBQyxVQUFVLENBQUMsQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLFlBQVksQ0FBQyxVQUFVLENBQUMsQ0FBQyxJQUFJLEVBQUUsU0FBUyxDQUFDLENBQUM7Z0JBQ3BJLGlHQUFpRztnQkFDakcsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7Z0JBQ25DLElBQUksQ0FBQyxPQUFPLElBQUksQ0FBQyxDQUFDO2dCQUNsQixpR0FBaUc7Z0JBQ2pHLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO2dCQUNuQyxJQUFJLENBQUMsT0FBTyxJQUFJLENBQUMsQ0FBQztnQkFFbEIsTUFBTTtZQUNWLEtBQUssV0FBVyxDQUFDO1lBQUMsS0FBSyxXQUFXO2dCQUM5QixJQUFJLENBQUMsT0FBTyxHQUFHLEdBQUcsQ0FBQztnQkFDbkIsSUFBSSxHQUFHLEVBQUUsQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO2dCQUMzQyxrREFBa0Q7Z0JBQ2xELElBQUksQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQztnQkFDeEIsSUFBSSxDQUFDLFdBQVcsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDLEVBQUUsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7Z0JBQ3hDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsWUFBWSxDQUFDLE1BQU0sQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLFlBQVksQ0FBQyxVQUFVLENBQUMsQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLFlBQVksQ0FBQyxVQUFVLENBQUMsQ0FBQyxJQUFJLEVBQUUsU0FBUyxDQUFDLENBQUM7Z0JBQ3BJLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsWUFBWSxDQUFDLE1BQU0sQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLFlBQVksQ0FBQyxVQUFVLENBQUMsQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLFlBQVksQ0FBQyxVQUFVLENBQUMsQ0FBQyxJQUFJLEVBQUUsU0FBUyxDQUFDLENBQUM7Z0JBQ3BJLGlHQUFpRztnQkFDakcsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7Z0JBQ25DLElBQUksQ0FBQyxPQUFPLElBQUksQ0FBQyxDQUFDO2dCQUNsQixpR0FBaUc7Z0JBQ2pHLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO2dCQUNuQyxJQUFJLENBQUMsT0FBTyxJQUFJLENBQUMsQ0FBQztnQkFFbEIsTUFBTTtZQUNWLEtBQUssVUFBVSxDQUFDO1lBQUMsS0FBSyxVQUFVO2dCQUM1QixJQUFJLENBQUMsT0FBTyxHQUFHLEdBQUcsQ0FBQztnQkFDbkIsSUFBSSxHQUFHLEVBQUUsQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO2dCQUMzQyxrREFBa0Q7Z0JBQ2xELElBQUksQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQztnQkFDeEIsSUFBSSxDQUFDLFdBQVcsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDLEVBQUUsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7Z0JBQ3hDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsWUFBWSxDQUFDLE1BQU0sQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLFlBQVksQ0FBQyxVQUFVLENBQUMsQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLFlBQVksQ0FBQyxVQUFVLENBQUMsQ0FBQyxJQUFJLEVBQUUsU0FBUyxDQUFDLENBQUM7Z0JBQ3BJLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsWUFBWSxDQUFDLE1BQU0sQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLFlBQVksQ0FBQyxVQUFVLENBQUMsQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLFlBQVksQ0FBQyxVQUFVLENBQUMsQ0FBQyxJQUFJLEVBQUUsU0FBUyxDQUFDLENBQUM7Z0JBQ3BJLGlHQUFpRztnQkFDakcsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7Z0JBQ25DLElBQUksQ0FBQyxPQUFPLElBQUksQ0FBQyxDQUFDO2dCQUNsQixpR0FBaUc7Z0JBQ2pHLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO2dCQUNuQyxJQUFJLENBQUMsT0FBTyxJQUFJLENBQUMsQ0FBQztnQkFFbEIsTUFBTTtTQUViO1FBR0QsZ0JBQWdCO1FBQ2hCLG9EQUFvRDtRQUNwRCxJQUFJO0lBQ1IsQ0FBQztJQUVELGlDQUFXLEdBQVgsVUFBWSxJQUFJO1FBQ1osSUFBSSxRQUFRLEdBQUcsRUFBRSxDQUFDLEVBQUUsQ0FBQyxVQUFVLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBRTdDLElBQUksUUFBUSxFQUFFO1lBQ1YsS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLFFBQVEsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxFQUFFLEVBQUU7Z0JBQ3RDLElBQUksUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsSUFBSSxJQUFJLENBQUMsT0FBTyxFQUFFO29CQUNqQyxJQUFJLENBQUMsWUFBWSxDQUFDLE1BQU0sQ0FBQyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLENBQUMsQ0FBQztvQkFDOUQsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDO2lCQUNwQzthQUNKO1NBQ0o7SUFDTCxDQUFDO0lBRUQsZ0NBQVUsR0FBVixVQUFXLFNBQVMsRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUk7UUFDbEMsSUFBSSxJQUFJLEdBQUcsSUFBSSxDQUFDO1FBQ2hCLElBQUksR0FBRyxFQUFFLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsQ0FBQztRQUMzQyxJQUFJLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUM7UUFDeEIsSUFBSSxDQUFDLFdBQVcsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDLEVBQUUsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDeEMsUUFBUSxTQUFTLEVBQUU7WUFDZixLQUFLLFNBQVMsQ0FBQztZQUFDLEtBQUssU0FBUztnQkFDMUIsSUFBSSxDQUFDLEtBQUssR0FBRyxDQUFDLENBQUM7Z0JBQ2YsSUFBSSxDQUFDLGNBQWMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxLQUFLLEdBQUcsQ0FBQyxDQUFDO2dCQUV0QyxNQUFNO1lBQ1YsS0FBSyxRQUFRLENBQUM7WUFBQyxLQUFLLFFBQVE7Z0JBQ3hCLElBQUksQ0FBQyxLQUFLLEdBQUcsRUFBRSxDQUFDO2dCQUNoQixJQUFJLENBQUMsY0FBYyxDQUFDLE1BQU0sQ0FBQyxDQUFDLEtBQUssR0FBRyxDQUFDLEVBQUUsQ0FBQztnQkFDeEMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDO2dCQUNuQyxJQUFJLENBQUMsY0FBYyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsSUFBSSxHQUFHLENBQUM7Z0JBQ3JDLE1BQU07WUFDVixLQUFLLFdBQVcsQ0FBQztZQUFDLEtBQUssV0FBVztnQkFDOUIsSUFBSSxDQUFDLEtBQUssR0FBRyxHQUFHLENBQUM7Z0JBQ2pCLElBQUksQ0FBQyxjQUFjLENBQUMsTUFBTSxDQUFDLENBQUMsS0FBSyxHQUFHLENBQUMsR0FBRyxDQUFDO2dCQUN6QyxJQUFJLENBQUMsY0FBYyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsSUFBSSxHQUFHLENBQUM7Z0JBQ3JDLElBQUksQ0FBQyxjQUFjLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQztnQkFDbkMsTUFBTTtZQUNWLEtBQUssVUFBVSxDQUFDO1lBQUMsS0FBSyxVQUFVO2dCQUM1QixJQUFJLENBQUMsS0FBSyxHQUFHLEdBQUcsQ0FBQztnQkFDakIsSUFBSSxDQUFDLGNBQWMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxLQUFLLEdBQUcsQ0FBQyxHQUFHLENBQUM7Z0JBQ3pDLElBQUksQ0FBQyxjQUFjLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxJQUFJLEdBQUcsQ0FBQztnQkFDckMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLElBQUksR0FBRyxDQUFDO2dCQUNyQyxNQUFNO1NBQ2I7UUFFRCw2REFBNkQ7UUFDN0Qsd0NBQXdDO1FBQ3hDLElBQUk7UUFDSixRQUFRO1FBQ1Isd0NBQXdDO1FBRXhDLElBQUksU0FBUyxJQUFJLElBQUksSUFBSSxTQUFTLElBQUksUUFBUSxJQUFJLFNBQVMsSUFBSSxRQUFRLEVBQ3JFO1lBQ0UsSUFBSSxDQUFDLE1BQU0sR0FBRyxHQUFHLEdBQUcsSUFBSSxHQUFHLElBQUksR0FBRyxDQUFDLENBQUM7U0FDdkM7YUFDSSxJQUFJLFNBQVMsSUFBSSxTQUFTLElBQUksU0FBUyxJQUFJLFNBQVMsSUFBSSxTQUFTLElBQUksV0FBVyxJQUFJLFNBQVMsSUFBSSxXQUFXLElBQUksU0FBUyxJQUFJLFVBQVUsRUFBRTtZQUMxSSxJQUFJLENBQUMsTUFBTSxHQUFHLEVBQUUsR0FBRyxJQUFJLEdBQUcsSUFBSSxHQUFHLENBQUMsQ0FBQztTQUN0QzthQUNJLElBQUksU0FBUyxJQUFJLE1BQU0sSUFBSSxTQUFTLElBQUksVUFBVSxFQUFFO1lBQ3JELElBQUksQ0FBQyxNQUFNLEdBQUcsRUFBRSxHQUFHLElBQUksR0FBRyxJQUFJLEdBQUcsQ0FBQyxDQUFDO1NBQ3RDOztZQUNJLElBQUksQ0FBQyxNQUFNLEdBQUcsRUFBRSxHQUFHLElBQUksR0FBRyxJQUFJLEdBQUcsQ0FBQyxDQUFDO1FBRXhDLGtEQUFrRDtRQUNsRCx1RUFBdUU7UUFDdkUsNkVBQTZFO1FBQzdFLHNDQUFzQztRQUN0QyxzQkFBc0I7UUFDdEIsZ0ZBQWdGO0lBQ3BGLENBQUM7SUFFRCxVQUFVO0lBQ1YsNEJBQU0sR0FBTixVQUFPLEtBQUssRUFBRSxHQUFHO1FBQ2IsS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLEdBQUcsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxFQUFFLEVBQUU7WUFDakMsSUFBSSxLQUFLLENBQUMsQ0FBQyxJQUFJLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksS0FBSyxDQUFDLENBQUMsSUFBSSxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFO2dCQUM1QyxPQUFPLEtBQUssQ0FBQzthQUNoQjtTQUNKO1FBQ0QsT0FBTyxJQUFJLENBQUM7SUFDaEIsQ0FBQztJQUVELFFBQVE7SUFDUixpQ0FBVyxHQUFYLFVBQVksS0FBSyxFQUFFLFFBQVEsRUFBRSxLQUFLO1FBQzlCLEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxRQUFRLENBQUMsTUFBTSxFQUFFLENBQUMsRUFBRSxFQUFFO1lBQ3RDLElBQUksS0FBSyxDQUFDLENBQUMsSUFBSSxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBSSxLQUFLLENBQUMsQ0FBQyxJQUFJLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFO2dCQUM5RCxLQUFLLENBQUMsY0FBYyxDQUFDLFVBQVUsQ0FBQyxDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUM7Z0JBQy9DLEtBQUssQ0FBQyxjQUFjLENBQUMsVUFBVSxDQUFDLENBQUMsY0FBYyxDQUFDLE9BQU8sQ0FBQyxDQUFDLFlBQVksQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLENBQUMsTUFBTSxHQUFHLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLEdBQUcsRUFBRSxDQUFDO2dCQUNoSCxLQUFLLENBQUMsY0FBYyxDQUFDLFVBQVUsQ0FBQyxDQUFDLFlBQVksQ0FBQyxFQUFFLENBQUMsV0FBVyxDQUFDLENBQUM7Z0JBQzlELEtBQUssQ0FBQyxjQUFjLENBQUMsVUFBVSxDQUFDLENBQUMsWUFBWSxDQUFDLEVBQUUsQ0FBQyxXQUFXLENBQUMsQ0FBQyxJQUFJLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxHQUFHLEVBQUUsR0FBRyxDQUFDLENBQUM7Z0JBQ3ZGLE9BQU8sSUFBSSxDQUFDO2FBQ2Y7U0FDSjtRQUNELE9BQU8sS0FBSyxDQUFDO0lBQ2pCLENBQUM7SUFDRCxNQUFNO0lBQ04sb0NBQWMsR0FBZCxVQUFlLEtBQUssRUFBRSxJQUFJO1FBQ3RCLEtBQUssR0FBRyxLQUFLLENBQUMsUUFBUSxFQUFFLENBQUM7UUFDekIsS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLElBQUksQ0FBQyxhQUFhLENBQUMsTUFBTSxFQUFFLENBQUMsRUFBRSxFQUFFO1lBQ2hELElBQUksS0FBSyxJQUFJLElBQUksQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDLENBQUMsY0FBYyxDQUFDLFVBQVUsQ0FBQyxDQUFDLGNBQWMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxZQUFZLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxDQUFDLE1BQU0sRUFBRTtnQkFDakgsSUFBSSxJQUFJLEVBQUU7b0JBQ04sSUFBSSxDQUFDLGFBQWEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxjQUFjLENBQUMsVUFBVSxDQUFDLENBQUMsTUFBTSxHQUFHLEtBQUssQ0FBQztvQkFDaEUsSUFBSSxDQUFDLGFBQWEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxjQUFjLENBQUMsVUFBVSxDQUFDLENBQUMsZUFBZSxDQUFDLEVBQUUsQ0FBQyxXQUFXLENBQUMsQ0FBQztpQkFDcEY7cUJBQ0k7b0JBQ0QsSUFBSSxDQUFDLGFBQWEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxjQUFjLENBQUMsVUFBVSxDQUFDLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQztvQkFDL0QsSUFBSSxDQUFDLGFBQWEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxjQUFjLENBQUMsVUFBVSxDQUFDLENBQUMsWUFBWSxDQUFDLEVBQUUsQ0FBQyxXQUFXLENBQUMsQ0FBQztvQkFDOUUsSUFBSSxDQUFDLGFBQWEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxjQUFjLENBQUMsVUFBVSxDQUFDLENBQUMsWUFBWSxDQUFDLEVBQUUsQ0FBQyxXQUFXLENBQUMsQ0FBQyxJQUFJLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxHQUFHLEVBQUUsR0FBRyxDQUFDLENBQUM7aUJBQzFHO2FBQ0o7U0FFSjtJQUNMLENBQUM7SUFJRCxTQUFTO0lBQ1Qsb0NBQWMsR0FBZCxVQUFlLEVBQUU7UUFDYixLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxNQUFNLEVBQUUsQ0FBQyxFQUFFLEVBQUU7WUFDekMsSUFBSSxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLFlBQVksQ0FBQyxPQUFPLENBQUMsQ0FBQyxPQUFPLElBQUksRUFBRSxFQUFFO2dCQUNwRCxPQUFPLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUM7YUFDekI7U0FDSjtRQUNELE9BQU8sSUFBSSxDQUFDO0lBQ2hCLENBQUM7SUFFRCxLQUFLO0lBQ0wsaUNBQVcsR0FBWCxVQUFZLEVBQUU7UUFDVixLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxNQUFNLEVBQUUsQ0FBQyxFQUFFLEVBQUU7WUFDekMsSUFBSSxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLFlBQVksQ0FBQyxPQUFPLENBQUMsQ0FBQyxPQUFPLElBQUksRUFBRSxFQUFFO2dCQUNwRCxPQUFPLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUM7YUFDekI7U0FDSjtRQUNELE9BQU8sSUFBSSxDQUFDO0lBQ2hCLENBQUM7SUFFRCxrQ0FBWSxHQUFaLFVBQWEsS0FBSztRQUNkLElBQUksS0FBSyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLEtBQUssR0FBRyxHQUFHLENBQUMsQ0FBQztRQUMxQyxJQUFJLE1BQU0sR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxNQUFNLEdBQUcsR0FBRyxDQUFDLENBQUM7UUFFNUMsSUFBSSxJQUFJLEdBQUcsS0FBSyxDQUFDO1FBQ2pCLElBQUksSUFBSSxHQUFHLElBQUksQ0FBQyxRQUFRLEdBQUcsQ0FBQyxDQUFDO1FBQzdCLElBQUksSUFBSSxHQUFHLENBQUMsQ0FBQztRQUNiLElBQUksSUFBSSxHQUFHLElBQUksQ0FBQyxTQUFTLEdBQUcsQ0FBQyxHQUFHLE1BQU0sR0FBRyxDQUFDLENBQUM7UUFFM0MsSUFBSSxLQUFLLENBQUMsSUFBSSxJQUFJLFNBQVMsRUFBRTtZQUN6QixJQUFJLEdBQUcsS0FBSyxHQUFHLENBQUMsQ0FBQztZQUNqQixJQUFJLElBQUksQ0FBQyxRQUFRLEdBQUcsQ0FBQztnQkFBRSxJQUFJLEdBQUcsSUFBSSxHQUFHLENBQUMsQ0FBQztTQUMxQzthQUNJLElBQUksS0FBSyxDQUFDLElBQUksSUFBSSxTQUFTLEVBQUU7WUFDOUIsSUFBSSxHQUFHLEtBQUssR0FBRyxDQUFDLENBQUM7WUFDakIsSUFBSSxJQUFJLENBQUMsUUFBUSxHQUFHLENBQUM7Z0JBQUUsSUFBSSxHQUFHLElBQUksR0FBRyxDQUFDLENBQUM7U0FDMUM7YUFFSSxJQUFJLEtBQUssQ0FBQyxJQUFJLElBQUksU0FBUyxFQUFFO1lBQzlCLElBQUksR0FBRyxLQUFLLEdBQUcsQ0FBQyxDQUFDO1lBQ2pCLElBQUksR0FBRyxJQUFJLEdBQUcsQ0FBQyxDQUFDO1NBQ25CO2FBQ0ksSUFBSSxLQUFLLENBQUMsSUFBSSxJQUFJLFNBQVMsRUFBRTtZQUM5QixJQUFJLEdBQUcsS0FBSyxHQUFHLENBQUMsQ0FBQztZQUNqQixJQUFJLEdBQUcsSUFBSSxHQUFHLENBQUMsQ0FBQztTQUNuQjthQUNJLElBQUksS0FBSyxDQUFDLElBQUksSUFBSSxTQUFTLEVBQUU7WUFDOUIsSUFBSSxHQUFHLEtBQUssR0FBRyxDQUFDLENBQUM7WUFDakIsSUFBSSxHQUFHLElBQUksR0FBRyxDQUFDLENBQUM7U0FDbkI7YUFDSSxJQUFJLEtBQUssQ0FBQyxJQUFJLElBQUksU0FBUyxFQUFFO1lBQzlCLElBQUksR0FBRyxLQUFLLEdBQUcsQ0FBQyxDQUFDO1lBQ2pCLElBQUksR0FBRyxJQUFJLEdBQUcsQ0FBQyxDQUFDO1NBQ25CO1FBRUQsT0FBTyxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsQ0FBQztJQUM5RCxDQUFDO0lBRUQsWUFBWTtJQUNaLCtCQUFTLEdBQVQsVUFBVSxJQUFJLEVBQUUsTUFBTTtRQUNsQixJQUFJLFNBQVMsR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ3hDLElBQUksSUFBSSxHQUFHLFNBQVMsQ0FBQyxJQUFJLENBQUM7UUFDMUIsSUFBSSxJQUFJLEdBQUcsU0FBUyxDQUFDLElBQUksQ0FBQztRQUMxQixJQUFJLElBQUksR0FBRyxTQUFTLENBQUMsSUFBSSxDQUFDO1FBQzFCLElBQUksSUFBSSxHQUFHLFNBQVMsQ0FBQyxJQUFJLENBQUM7UUFFMUIsSUFBSSxPQUFPLEdBQUcsRUFBRSxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLE9BQU8sQ0FBQyxDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsWUFBWSxDQUFDLE9BQU8sQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDO1FBRXRGLFdBQVc7UUFFWCxJQUFJLFNBQVMsR0FBRyxFQUFFLENBQUM7UUFDbkIsS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLE1BQU0sQ0FBQyxNQUFNLEVBQUUsQ0FBQyxFQUFFLEVBQUU7WUFDcEMsU0FBUyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLE9BQU8sQ0FBQyxDQUFDLEdBQUcsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxPQUFPLENBQUMsQ0FBQyxHQUFHLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1NBQzNFO1FBRUQsc0NBQXNDO1FBQ3RDLG1DQUFtQztRQUVuQyxJQUFJLEVBQUUsR0FBRyxDQUFDLENBQUMsQ0FBQztRQUNaLElBQUksRUFBRSxHQUFHLENBQUMsQ0FBQztRQUNYLFdBQVc7UUFDWCx3QkFBd0I7UUFDeEIsSUFBSSxTQUFTLEdBQUcsSUFBSSxDQUFDLGNBQWMsQ0FBQyxTQUFTLEVBQUUsSUFBSSxFQUFFLElBQUksQ0FBQyxDQUFDO1FBRTNELGNBQWM7UUFDZCxJQUFJLE9BQU8sQ0FBQyxDQUFDLElBQUksSUFBSSxJQUFJLFNBQVMsQ0FBQyxDQUFDLENBQUMsSUFBSSxJQUFJLEVBQUU7WUFDM0Msc0NBQXNDO1lBQ3RDLDhCQUE4QjtZQUM5QixFQUFFLElBQUksQ0FBQyxDQUFDO1lBQ1IsSUFBSSxTQUFTLEdBQUcsRUFBRSxDQUFDO1lBQ25CLEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLE1BQU0sRUFBRSxDQUFDLEVBQUUsRUFBRTtnQkFDNUMsSUFBSSxRQUFRLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxjQUFjLENBQUMsTUFBTSxDQUFDLENBQUM7Z0JBQ3hELElBQUksT0FBTyxHQUFHLEVBQUUsQ0FBQyxFQUFFLENBQUMsUUFBUSxDQUFDLFlBQVksQ0FBQyxNQUFNLENBQUMsQ0FBQyxJQUFJLEVBQUUsUUFBUSxDQUFDLFlBQVksQ0FBQyxNQUFNLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQztnQkFDNUYsS0FBSyxJQUFJLEdBQUMsR0FBRyxDQUFDLEVBQUUsR0FBQyxHQUFHLFNBQVMsQ0FBQyxNQUFNLEVBQUUsR0FBQyxFQUFFLEVBQUU7b0JBQ3ZDLElBQUksU0FBUyxDQUFDLEdBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxPQUFPLENBQUMsQ0FBQyxJQUFJLFNBQVMsQ0FBQyxHQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsT0FBTyxDQUFDLENBQUMsRUFBRTt3QkFDM0QsK0VBQStFO3dCQUMvRSxTQUFTLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDO3FCQUM1QjtpQkFDSjthQUNKO1lBQ0QsaUNBQWlDO1lBQ2pDLElBQUksU0FBUyxDQUFDLE1BQU0sSUFBSSxDQUFDLEVBQUU7Z0JBQ3ZCLElBQUksTUFBTSxHQUFHLElBQUksQ0FBQyxjQUFjLENBQUMsTUFBTSxFQUFFLElBQUksQ0FBQyxZQUFZLENBQUMsT0FBTyxDQUFDLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxZQUFZLENBQUMsT0FBTyxDQUFDLENBQUMsSUFBSSxFQUFFLFNBQVMsQ0FBQyxDQUFDO2dCQUN0SCxJQUFJLE1BQU0sSUFBSSxJQUFJO29CQUFFLE1BQU0sR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLE1BQU0sRUFBRSxTQUFTLEVBQUUsSUFBSSxDQUFDLENBQUM7Z0JBQ3BFLDhCQUE4QjtnQkFDOUIsSUFBSSxNQUFNLEVBQUU7b0JBRVIsSUFBSSxDQUFDLFFBQVEsSUFBSSxDQUFDLENBQUM7b0JBQ25CLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxJQUFJLENBQUMsQ0FBQztvQkFDN0IsRUFBRSxHQUFHLENBQUMsQ0FBQztvQkFDUCxJQUFJLENBQUMsY0FBYyxDQUFDLElBQUksRUFBRSxFQUFFLENBQUMsQ0FBQztvQkFDOUIsT0FBTyxFQUFFLENBQUM7aUJBQ2I7YUFDSjtTQUNKO1FBQ0QsSUFBSSxPQUFPLENBQUMsQ0FBQyxJQUFJLElBQUksSUFBSSxTQUFTLENBQUMsQ0FBQyxDQUFDLElBQUksSUFBSSxFQUFFO1lBQzNDLHNDQUFzQztZQUN0Qyw4QkFBOEI7WUFDOUIsRUFBRSxJQUFJLENBQUMsQ0FBQztZQUNSLElBQUksVUFBVSxHQUFHLEVBQUUsQ0FBQztZQUNwQixLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxFQUFFLEVBQUU7Z0JBQzdDLElBQUksU0FBUyxHQUFHLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUMsY0FBYyxDQUFDLE1BQU0sQ0FBQyxDQUFDO2dCQUMxRCxJQUFJLE9BQU8sR0FBRyxFQUFFLENBQUMsRUFBRSxDQUFDLFNBQVMsQ0FBQyxZQUFZLENBQUMsTUFBTSxDQUFDLENBQUMsSUFBSSxFQUFFLFNBQVMsQ0FBQyxZQUFZLENBQUMsTUFBTSxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUM7Z0JBQzlGLEtBQUssSUFBSSxHQUFDLEdBQUcsQ0FBQyxFQUFFLEdBQUMsR0FBRyxTQUFTLENBQUMsTUFBTSxFQUFFLEdBQUMsRUFBRSxFQUFFO29CQUN2QyxJQUFJLFNBQVMsQ0FBQyxHQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksT0FBTyxDQUFDLENBQUMsSUFBSSxTQUFTLENBQUMsR0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLE9BQU8sQ0FBQyxDQUFDLEVBQUU7d0JBQzNELCtFQUErRTt3QkFDL0UsVUFBVSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQztxQkFDOUI7aUJBQ0o7YUFDSjtZQUVELElBQUksVUFBVSxDQUFDLE1BQU0sSUFBSSxDQUFDLEVBQUU7Z0JBQ3hCLElBQUksTUFBTSxHQUFHLElBQUksQ0FBQyxjQUFjLENBQUMsT0FBTyxFQUFFLElBQUksQ0FBQyxZQUFZLENBQUMsT0FBTyxDQUFDLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxZQUFZLENBQUMsT0FBTyxDQUFDLENBQUMsSUFBSSxFQUFFLFNBQVMsQ0FBQyxDQUFDO2dCQUV2SCxJQUFJLE1BQU0sSUFBSSxJQUFJO29CQUFFLE1BQU0sR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLE1BQU0sRUFBRSxVQUFVLEVBQUUsSUFBSSxDQUFDLENBQUM7Z0JBQ3JFLDhCQUE4QjtnQkFDOUIsSUFBSSxNQUFNLEVBQUU7b0JBRVIsSUFBSSxDQUFDLFFBQVEsSUFBSSxDQUFDLENBQUM7b0JBQ25CLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxJQUFJLENBQUMsQ0FBQztvQkFDN0IsRUFBRSxHQUFHLENBQUMsQ0FBQztvQkFDUCxJQUFJLENBQUMsY0FBYyxDQUFDLElBQUksRUFBRSxFQUFFLENBQUMsQ0FBQztvQkFDOUIsT0FBTyxFQUFFLENBQUM7aUJBQ2I7YUFDSjtTQUdKO1FBQ0QsSUFBSSxPQUFPLENBQUMsQ0FBQyxJQUFJLElBQUksSUFBSSxTQUFTLENBQUMsQ0FBQyxDQUFDLElBQUksSUFBSSxFQUFFO1lBQzNDLEVBQUUsSUFBSSxDQUFDLENBQUM7WUFDUixzQ0FBc0M7WUFDdEMsOEJBQThCO1lBQzlCLElBQUksU0FBUyxHQUFHLEVBQUUsQ0FBQztZQUNuQixLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxFQUFFLEVBQUU7Z0JBQzNDLElBQUksVUFBVSxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsY0FBYyxDQUFDLE1BQU0sQ0FBQyxDQUFDO2dCQUN6RCxJQUFJLE9BQU8sR0FBRyxFQUFFLENBQUMsRUFBRSxDQUFDLFVBQVUsQ0FBQyxZQUFZLENBQUMsTUFBTSxDQUFDLENBQUMsSUFBSSxFQUFFLFVBQVUsQ0FBQyxZQUFZLENBQUMsTUFBTSxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUM7Z0JBQ2hHLEtBQUssSUFBSSxHQUFDLEdBQUcsQ0FBQyxFQUFFLEdBQUMsR0FBRyxTQUFTLENBQUMsTUFBTSxFQUFFLEdBQUMsRUFBRSxFQUFFO29CQUN2QyxJQUFJLE1BQU0sR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLFNBQVMsQ0FBQyxHQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFBO29CQUNqRCxJQUFJLFNBQVMsQ0FBQyxHQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksT0FBTyxDQUFDLENBQUMsSUFBSSxTQUFTLENBQUMsR0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLE9BQU8sQ0FBQyxDQUFDLElBQUksTUFBTSxJQUFJLElBQUksQ0FBQyxZQUFZLENBQUMsT0FBTyxDQUFDLENBQUMsR0FBRyxFQUFFO3dCQUN2RywrRUFBK0U7d0JBQy9FLFNBQVMsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUM7cUJBQzlCO2lCQUNKO2FBQ0o7WUFFRCxJQUFJLFNBQVMsQ0FBQyxNQUFNLElBQUksQ0FBQyxFQUFFO2dCQUN2QixJQUFJLE1BQU0sR0FBRyxJQUFJLENBQUMsY0FBYyxDQUFDLE1BQU0sRUFBRSxJQUFJLENBQUMsWUFBWSxDQUFDLE9BQU8sQ0FBQyxDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsWUFBWSxDQUFDLE9BQU8sQ0FBQyxDQUFDLElBQUksRUFBRSxTQUFTLENBQUMsQ0FBQztnQkFDdEgsSUFBSSxNQUFNLElBQUksSUFBSTtvQkFBRSxNQUFNLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxNQUFNLEVBQUUsU0FBUyxFQUFFLElBQUksQ0FBQyxDQUFDO2dCQUNwRSw4QkFBOEI7Z0JBQzlCLElBQUksTUFBTSxFQUFFO29CQUVSLElBQUksQ0FBQyxRQUFRLElBQUksQ0FBQyxDQUFDO29CQUNuQixJQUFJLENBQUMsaUJBQWlCLENBQUMsSUFBSSxDQUFDLENBQUM7b0JBQzdCLEVBQUUsR0FBRyxDQUFDLENBQUM7b0JBQ1AsSUFBSSxDQUFDLGNBQWMsQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDLENBQUM7b0JBQzlCLE9BQU8sRUFBRSxDQUFDO2lCQUNiO2FBQ0o7U0FHSjtRQUNELElBQUksT0FBTyxDQUFDLENBQUMsSUFBSSxJQUFJLElBQUksU0FBUyxDQUFDLENBQUMsQ0FBQyxJQUFJLElBQUksRUFBRTtZQUMzQyxFQUFFLElBQUksQ0FBQyxDQUFDO1lBQ1Isc0NBQXNDO1lBQ3RDLDhCQUE4QjtZQUM5QixJQUFJLE9BQU8sR0FBRyxFQUFFLENBQUM7WUFDakIsS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLElBQUksQ0FBQyxXQUFXLENBQUMsTUFBTSxFQUFFLENBQUMsRUFBRSxFQUFFO2dCQUM5QyxJQUFJLE9BQU8sR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxDQUFDLGNBQWMsQ0FBQyxNQUFNLENBQUMsQ0FBQztnQkFDekQsSUFBSSxPQUFPLEdBQUcsRUFBRSxDQUFDLEVBQUUsQ0FBQyxPQUFPLENBQUMsWUFBWSxDQUFDLE1BQU0sQ0FBQyxDQUFDLElBQUksRUFBRSxPQUFPLENBQUMsWUFBWSxDQUFDLE1BQU0sQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDO2dCQUMxRixLQUFLLElBQUksR0FBQyxHQUFHLENBQUMsRUFBRSxHQUFDLEdBQUcsU0FBUyxDQUFDLE1BQU0sRUFBRSxHQUFDLEVBQUUsRUFBRTtvQkFDdkMsSUFBSSxNQUFNLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxTQUFTLENBQUMsR0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQTtvQkFDakQsSUFBSSxTQUFTLENBQUMsR0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLE9BQU8sQ0FBQyxDQUFDLElBQUksU0FBUyxDQUFDLEdBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxPQUFPLENBQUMsQ0FBQyxJQUFJLE1BQU0sSUFBSSxJQUFJLENBQUMsWUFBWSxDQUFDLE9BQU8sQ0FBQyxDQUFDLEdBQUcsRUFBRTt3QkFDdkcsT0FBTyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQztxQkFDekI7aUJBQ0o7YUFDSjtZQUVELElBQUksT0FBTyxDQUFDLE1BQU0sSUFBSSxDQUFDLEVBQUU7Z0JBQ3JCLElBQUksTUFBTSxHQUFHLElBQUksQ0FBQyxjQUFjLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxZQUFZLENBQUMsT0FBTyxDQUFDLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxZQUFZLENBQUMsT0FBTyxDQUFDLENBQUMsSUFBSSxFQUFFLFNBQVMsQ0FBQyxDQUFDO2dCQUNwSCxJQUFJLE1BQU0sSUFBSSxJQUFJO29CQUFFLE1BQU0sR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLE1BQU0sRUFBRSxPQUFPLEVBQUUsSUFBSSxDQUFDLENBQUM7Z0JBQ2xFLGtDQUFrQztnQkFDbEMsSUFBSSxNQUFNLEVBQUU7b0JBRVIsSUFBSSxDQUFDLFFBQVEsSUFBSSxDQUFDLENBQUM7b0JBQ25CLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxJQUFJLENBQUMsQ0FBQztvQkFDN0IsRUFBRSxHQUFHLENBQUMsQ0FBQztvQkFDUCxJQUFJLENBQUMsY0FBYyxDQUFDLElBQUksRUFBRSxFQUFFLENBQUMsQ0FBQztvQkFDOUIsT0FBTyxFQUFFLENBQUM7aUJBQ2I7YUFDSjtTQUVKO1FBQ0QsSUFBSSxFQUFFLElBQUksQ0FBQztZQUFFLEVBQUUsR0FBRyxDQUFDLENBQUMsQ0FBQztRQUNyQix1Q0FBdUM7UUFDdkMscUNBQXFDO1FBQ3JDLE9BQU8sRUFBRSxDQUFDO0lBQ2QsQ0FBQztJQUVELGlDQUFXLEdBQVg7UUFDSSxJQUFJLElBQUksQ0FBQyxRQUFRLENBQUMsTUFBTSxJQUFJLENBQUMsRUFBRTtZQUMzQixLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxFQUFFLEVBQUU7Z0JBQzNDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsY0FBYyxDQUFDLE1BQU0sQ0FBQyxDQUFDLFlBQVksQ0FBQyxNQUFNLENBQUMsQ0FBQyxVQUFVLEVBQUUsQ0FBQzthQUM3RTtTQUNKO1FBRUQsSUFBSSxJQUFJLENBQUMsVUFBVSxDQUFDLE1BQU0sSUFBSSxDQUFDLEVBQUU7WUFDN0IsS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLElBQUksQ0FBQyxVQUFVLENBQUMsTUFBTSxFQUFFLENBQUMsRUFBRSxFQUFFO2dCQUM3QyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDLGNBQWMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxZQUFZLENBQUMsTUFBTSxDQUFDLENBQUMsWUFBWSxFQUFFLENBQUM7YUFDakY7U0FDSjtJQUNMLENBQUM7SUFFRCxXQUFXO0lBQ1gsOEJBQVEsR0FBUixVQUFTLEVBQUUsRUFBRSxTQUFTLEVBQUUsSUFBSTtRQUN4QixLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsU0FBUyxDQUFDLE1BQU0sRUFBRSxDQUFDLEVBQUUsRUFBRTtZQUN2QyxJQUFJLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxZQUFZLENBQUMsTUFBTSxDQUFDLENBQUMsT0FBTyxJQUFJLENBQUMsRUFBRTtnQkFDaEQsT0FBTyxDQUFDLEdBQUcsQ0FBQyxVQUFVLEVBQUUsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLFlBQVksQ0FBQyxNQUFNLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQzthQUNuRTtZQUNELElBQUksU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLFlBQVksQ0FBQyxNQUFNLENBQUMsQ0FBQyxPQUFPLElBQUksQ0FBQyxJQUFJLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxZQUFZLENBQUMsTUFBTSxDQUFDLENBQUMsSUFBSSxJQUFJLEtBQUssRUFBRTtnQkFDbkcsRUFBRSxHQUFHLEtBQUssQ0FBQztnQkFDWCxNQUFNO2FBQ1Q7WUFDRCw4R0FBOEc7WUFDOUcsSUFBSSxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsWUFBWSxDQUFDLE1BQU0sQ0FBQyxDQUFDLEtBQUssSUFBSSxJQUFJLENBQUMsWUFBWSxDQUFDLE9BQU8sQ0FBQyxDQUFDLEtBQUssRUFBRTtnQkFFN0UsRUFBRSxHQUFHLEtBQUssQ0FBQztnQkFDWCxNQUFNO2FBQ1Q7WUFDRCxJQUFJLElBQUksQ0FBQyxZQUFZLENBQUMsT0FBTyxDQUFDLENBQUMsSUFBSSxJQUFJLENBQUMsRUFBRTtnQkFDdEMsSUFBSSxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsWUFBWSxDQUFDLE1BQU0sQ0FBQyxDQUFDLE9BQU8sSUFBSSxDQUFDLEVBQUU7b0JBQ2hELEVBQUUsR0FBRyxLQUFLLENBQUM7b0JBQ1gsTUFBTTtpQkFDVDthQUNKO1NBQ0o7UUFDRCxJQUFJLEVBQUUsSUFBSSxJQUFJLElBQUksSUFBSSxDQUFDLFlBQVksQ0FBQyxPQUFPLENBQUMsQ0FBQyxJQUFJLElBQUksQ0FBQyxFQUFFO1lBQ3BELEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxTQUFTLENBQUMsTUFBTSxFQUFFLENBQUMsRUFBRSxFQUFFO2dCQUN2QyxJQUFJLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxZQUFZLENBQUMsTUFBTSxDQUFDLENBQUMsT0FBTyxJQUFJLENBQUMsSUFBSSxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsWUFBWSxDQUFDLE1BQU0sQ0FBQyxDQUFDLFNBQVMsQ0FBQyxNQUFNLElBQUksQ0FBQyxFQUFFO29CQUMzRyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsWUFBWSxDQUFDLE1BQU0sQ0FBQyxDQUFDLFlBQVksRUFBRSxDQUFDO2lCQUNwRDthQUNKO1NBQ0o7UUFDRCxzQ0FBc0M7UUFDdEMsb0NBQW9DO1FBQ3BDLE9BQU8sRUFBRSxDQUFDO0lBQ2QsQ0FBQztJQUVELGtCQUFrQjtJQUNsQixvQ0FBYyxHQUFkLFVBQWUsU0FBUyxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsTUFBTTtRQUN4QyxJQUFJLEVBQUUsR0FBRyxJQUFJLENBQUM7UUFDZCxJQUFJLEVBQUUsR0FBRyxFQUFFLENBQUM7UUFDWixJQUFJLE1BQU0sQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFO1lBQ25CLEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxNQUFNLENBQUMsTUFBTSxFQUFFLENBQUMsRUFBRSxFQUFFO2dCQUNwQyxJQUFJLEdBQUcsR0FBRyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUM7Z0JBQ3BCLElBQUksQ0FBQyxHQUFHLEdBQUcsQ0FBQyxDQUFDLENBQUM7Z0JBQ2QsSUFBSSxDQUFDLEdBQUcsR0FBRyxDQUFDLENBQUMsQ0FBQztnQkFDZCxFQUFFLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxZQUFZLENBQUMsVUFBVSxDQUFDLENBQUMsUUFBUSxDQUFDO2dCQUNoRSxFQUFFLEdBQUcsSUFBSSxDQUFDLGtCQUFrQixDQUFDLEVBQUUsRUFBRSxTQUFTLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO2dCQUNsRCxJQUFJLENBQUMsRUFBRSxFQUFFO29CQUNMLHlCQUF5QjtvQkFDekIsQ0FBQyxHQUFHLE9BQU8sQ0FBQztvQkFDWixPQUFPLEVBQUUsQ0FBQztpQkFDYjthQUNKO1NBQ0o7UUFDRCxzQ0FBc0M7UUFDdEMsa0NBQWtDO1FBQ2xDLE9BQU8sRUFBRSxDQUFDO0lBQ2QsQ0FBQztJQUVELDBDQUEwQztJQUMxQyx3Q0FBa0IsR0FBbEIsVUFBbUIsRUFBRSxFQUFFLFNBQVMsRUFBRSxDQUFDLEVBQUUsQ0FBQztRQUNsQyxJQUFJLEVBQUUsR0FBRyxJQUFJLENBQUM7UUFFZCxJQUFJLFNBQVMsSUFBSSxNQUFNLEVBQUU7WUFDckIsSUFBSSxJQUFJLENBQUMsYUFBYSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxZQUFZLENBQUMsVUFBVSxDQUFDLENBQUMsUUFBUSxJQUFJLEVBQUUsSUFBSSxJQUFJLENBQUMsYUFBYSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxZQUFZLENBQUMsVUFBVSxDQUFDLENBQUMsUUFBUSxJQUFJLE1BQU07bUJBQzdJLElBQUksQ0FBQyxhQUFhLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFlBQVksQ0FBQyxVQUFVLENBQUMsQ0FBQyxRQUFRLElBQUksRUFBRSxFQUFFO2dCQUN6RSx1QkFBdUI7Z0JBQ3ZCLEVBQUUsR0FBRyxLQUFLLENBQUM7Z0JBQ1gsT0FBTyxFQUFFLENBQUM7YUFDYjtZQUNELElBQUksSUFBSSxDQUFDLGFBQWEsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxJQUFJLEdBQUcsRUFBRTtnQkFDN0MsRUFBRSxHQUFHLEtBQUssQ0FBQztnQkFDWCxPQUFPLEVBQUUsQ0FBQzthQUNiO1lBQ0QsSUFBSSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDLEVBQUU7Z0JBQ2QsSUFBSSxJQUFJLENBQUMsYUFBYSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxZQUFZLENBQUMsVUFBVSxDQUFDLENBQUMsUUFBUSxJQUFJLEVBQUUsSUFBSSxJQUFJLENBQUMsYUFBYSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxZQUFZLENBQUMsVUFBVSxDQUFDLENBQUMsUUFBUSxJQUFJLE1BQU07dUJBQzdJLElBQUksQ0FBQyxhQUFhLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFlBQVksQ0FBQyxVQUFVLENBQUMsQ0FBQyxRQUFRLElBQUksRUFBRSxFQUFFO29CQUN6RSx1QkFBdUI7b0JBQ3ZCLEVBQUUsR0FBRyxLQUFLLENBQUM7b0JBQ1gsT0FBTyxFQUFFLENBQUM7aUJBQ2I7Z0JBQ0QsSUFBSSxJQUFJLENBQUMsYUFBYSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLElBQUksR0FBRyxFQUFFO29CQUM3QyxFQUFFLEdBQUcsS0FBSyxDQUFDO29CQUNYLE9BQU8sRUFBRSxDQUFDO2lCQUNiO2FBQ0o7U0FDSjthQUNJLElBQUksU0FBUyxJQUFJLE9BQU8sRUFBRTtZQUMzQixJQUFJLElBQUksQ0FBQyxhQUFhLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFlBQVksQ0FBQyxVQUFVLENBQUMsQ0FBQyxRQUFRLElBQUksRUFBRSxJQUFJLElBQUksQ0FBQyxhQUFhLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFlBQVksQ0FBQyxVQUFVLENBQUMsQ0FBQyxRQUFRLElBQUksTUFBTTttQkFDN0ksSUFBSSxDQUFDLGFBQWEsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsWUFBWSxDQUFDLFVBQVUsQ0FBQyxDQUFDLFFBQVEsSUFBSSxFQUFFLEVBQUU7Z0JBQ3pFLHVCQUF1QjtnQkFDdkIsRUFBRSxHQUFHLEtBQUssQ0FBQztnQkFDWCxPQUFPLEVBQUUsQ0FBQzthQUNiO1lBQ0QsSUFBSSxJQUFJLENBQUMsYUFBYSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLElBQUksR0FBRyxFQUFFO2dCQUM3QyxFQUFFLEdBQUcsS0FBSyxDQUFDO2dCQUNYLE9BQU8sRUFBRSxDQUFDO2FBQ2I7WUFDRCxJQUFJLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLElBQUksQ0FBQyxhQUFhLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRTtnQkFDMUMsSUFBSSxJQUFJLENBQUMsYUFBYSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxZQUFZLENBQUMsVUFBVSxDQUFDLENBQUMsUUFBUSxJQUFJLEVBQUUsSUFBSSxJQUFJLENBQUMsYUFBYSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxZQUFZLENBQUMsVUFBVSxDQUFDLENBQUMsUUFBUSxJQUFJLE1BQU07dUJBQzdJLElBQUksQ0FBQyxhQUFhLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFlBQVksQ0FBQyxVQUFVLENBQUMsQ0FBQyxRQUFRLElBQUksRUFBRSxFQUFFO29CQUN6RSx1QkFBdUI7b0JBQ3ZCLEVBQUUsR0FBRyxLQUFLLENBQUM7b0JBQ1gsT0FBTyxFQUFFLENBQUM7aUJBQ2I7Z0JBQ0QsSUFBSSxJQUFJLENBQUMsYUFBYSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLElBQUksR0FBRyxFQUFFO29CQUM3QyxFQUFFLEdBQUcsS0FBSyxDQUFDO29CQUNYLE9BQU8sRUFBRSxDQUFDO2lCQUNiO2FBQ0o7U0FDSjtRQUNELElBQUksU0FBUyxJQUFJLElBQUksRUFBRTtZQUNuQixJQUFJLElBQUksQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLFlBQVksQ0FBQyxVQUFVLENBQUMsQ0FBQyxRQUFRLElBQUksRUFBRSxJQUFJLElBQUksQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLFlBQVksQ0FBQyxVQUFVLENBQUMsQ0FBQyxRQUFRLElBQUksTUFBTTttQkFDN0ksSUFBSSxDQUFDLGFBQWEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsWUFBWSxDQUFDLFVBQVUsQ0FBQyxDQUFDLFFBQVEsSUFBSSxFQUFFLEVBQUU7Z0JBQ3pFLHVCQUF1QjtnQkFDdkIsRUFBRSxHQUFHLEtBQUssQ0FBQztnQkFDWCxPQUFPLEVBQUUsQ0FBQzthQUNiO1lBQ0QsSUFBSSxJQUFJLENBQUMsYUFBYSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxPQUFPLElBQUksR0FBRyxFQUFFO2dCQUM3QyxFQUFFLEdBQUcsS0FBSyxDQUFDO2dCQUNYLE9BQU8sRUFBRSxDQUFDO2FBQ2I7WUFDRCxJQUFJLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLElBQUksQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRTtnQkFDN0MsSUFBSSxJQUFJLENBQUMsYUFBYSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxZQUFZLENBQUMsVUFBVSxDQUFDLENBQUMsUUFBUSxJQUFJLEVBQUUsSUFBSSxJQUFJLENBQUMsYUFBYSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxZQUFZLENBQUMsVUFBVSxDQUFDLENBQUMsUUFBUSxJQUFJLE1BQU07dUJBQzdJLElBQUksQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLFlBQVksQ0FBQyxVQUFVLENBQUMsQ0FBQyxRQUFRLElBQUksRUFBRSxFQUFFO29CQUN6RSx1QkFBdUI7b0JBQ3ZCLEVBQUUsR0FBRyxLQUFLLENBQUM7b0JBQ1gsT0FBTyxFQUFFLENBQUM7aUJBQ2I7Z0JBQ0QsSUFBSSxJQUFJLENBQUMsYUFBYSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxPQUFPLElBQUksR0FBRyxFQUFFO29CQUM3QyxFQUFFLEdBQUcsS0FBSyxDQUFDO29CQUNYLE9BQU8sRUFBRSxDQUFDO2lCQUNiO2FBQ0o7U0FDSjtRQUNELElBQUksU0FBUyxJQUFJLE1BQU0sRUFBRTtZQUNyQixJQUFJLElBQUksQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLFlBQVksQ0FBQyxVQUFVLENBQUMsQ0FBQyxRQUFRLElBQUksRUFBRSxJQUFJLElBQUksQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLFlBQVksQ0FBQyxVQUFVLENBQUMsQ0FBQyxRQUFRLElBQUksTUFBTTttQkFDN0ksSUFBSSxDQUFDLGFBQWEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsWUFBWSxDQUFDLFVBQVUsQ0FBQyxDQUFDLFFBQVEsSUFBSSxFQUFFLEVBQUU7Z0JBQ3pFLHVCQUF1QjtnQkFDdkIsRUFBRSxHQUFHLEtBQUssQ0FBQztnQkFDWCxPQUFPLEVBQUUsQ0FBQzthQUNiO1lBQ0QsSUFBSSxJQUFJLENBQUMsYUFBYSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxPQUFPLElBQUksR0FBRyxFQUFFO2dCQUM3QyxFQUFFLEdBQUcsS0FBSyxDQUFDO2dCQUNYLE9BQU8sRUFBRSxDQUFDO2FBQ2I7WUFDRCxJQUFJLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLENBQUMsRUFBRTtnQkFDZCxJQUFJLElBQUksQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLFlBQVksQ0FBQyxVQUFVLENBQUMsQ0FBQyxRQUFRLElBQUksRUFBRSxJQUFJLElBQUksQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLFlBQVksQ0FBQyxVQUFVLENBQUMsQ0FBQyxRQUFRLElBQUksTUFBTTt1QkFDN0ksSUFBSSxDQUFDLGFBQWEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsWUFBWSxDQUFDLFVBQVUsQ0FBQyxDQUFDLFFBQVEsSUFBSSxFQUFFLEVBQUU7b0JBQ3pFLHVCQUF1QjtvQkFDdkIsRUFBRSxHQUFHLEtBQUssQ0FBQztvQkFDWCxPQUFPLEVBQUUsQ0FBQztpQkFDYjtnQkFDRCxJQUFJLElBQUksQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLE9BQU8sSUFBSSxHQUFHLEVBQUU7b0JBQzdDLEVBQUUsR0FBRyxLQUFLLENBQUM7b0JBQ1gsT0FBTyxFQUFFLENBQUM7aUJBQ2I7YUFDSjtTQUNKO1FBQ0Qsb0NBQW9DO1FBQ3BDLE9BQU8sRUFBRSxDQUFDO0lBQ2QsQ0FBQztJQUVELG9DQUFjLEdBQWQsVUFBZSxTQUFTLEVBQUUsSUFBSSxFQUFFLElBQUk7UUFDaEMsSUFBSSxFQUFFLEdBQUcsQ0FBQyxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLENBQUMsQ0FBQztRQUN0QyxLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsU0FBUyxDQUFDLE1BQU0sRUFBRSxDQUFDLEVBQUUsRUFBRTtZQUN2QyxJQUFJLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxLQUFLLEVBQUU7Z0JBQ3RDLElBQUksSUFBSSxDQUFDLGFBQWEsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLElBQUksR0FBRyxFQUFFO29CQUN2RSxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDO2lCQUNoQjthQUNKO1lBQ0QsSUFBSSxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksS0FBSyxFQUFFO2dCQUNoQixJQUFJLElBQUksQ0FBQyxhQUFhLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxJQUFJLEdBQUcsRUFBRTtvQkFDdkUsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQztpQkFDaEI7YUFDSjtZQUNELElBQUksU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLElBQUksRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLEtBQUssRUFBRTtnQkFDdEMsSUFBSSxJQUFJLENBQUMsYUFBYSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLE9BQU8sSUFBSSxHQUFHLEVBQUU7b0JBQ3ZFLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUM7aUJBQ2hCO2FBQ0o7WUFDRCxJQUFJLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxLQUFLLEVBQUU7Z0JBQ2hCLElBQUksSUFBSSxDQUFDLGFBQWEsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxPQUFPLElBQUksR0FBRyxFQUFFO29CQUN2RSxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDO2lCQUNoQjthQUNKO1NBQ0o7UUFDRCxPQUFPLEVBQUUsQ0FBQztJQUNkLENBQUM7SUFFRCwrQkFBUyxHQUFULFVBQVUsU0FBUztRQUNmLElBQUksRUFBRSxHQUFHLEtBQUssQ0FBQztRQUNmLE9BQU8sRUFBRSxDQUFDO0lBQ2QsQ0FBQztJQUVELGdDQUFVLEdBQVYsVUFBVyxTQUFTLEVBQUUsR0FBRztRQUNyQixJQUFJLEVBQUUsR0FBRyxLQUFLLENBQUM7UUFDZixLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsU0FBUyxDQUFDLE1BQU0sRUFBRSxDQUFDLEVBQUUsRUFBRTtTQUUxQztRQUNELE9BQU8sRUFBRSxDQUFDO0lBQ2QsQ0FBQztJQUVELCtCQUFTLEdBQVQsVUFBVSxTQUFTO1FBQ2YsSUFBSSxFQUFFLEdBQUcsS0FBSyxDQUFDO1FBQ2YsS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLFNBQVMsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxFQUFFLEVBQUU7U0FFMUM7UUFDRCxPQUFPLEVBQUUsQ0FBQztJQUNkLENBQUM7SUFFRCw2QkFBTyxHQUFQLFVBQVEsU0FBUyxFQUFFLEdBQUc7UUFDbEIsSUFBSSxFQUFFLEdBQUcsS0FBSyxDQUFDO1FBQ2YsS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLFNBQVMsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxFQUFFLEVBQUU7U0FFMUM7UUFDRCxPQUFPLEVBQUUsQ0FBQztJQUNkLENBQUM7SUFHRCxvQkFBb0I7SUFDcEIsdUNBQWlCLEdBQWpCLFVBQWtCLElBQUk7UUFDbEIsSUFBSSxXQUFXLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLFVBQUEsS0FBSztZQUM3QyxJQUFJLEtBQUssQ0FBQyxZQUFZLENBQUMsT0FBTyxDQUFDLEVBQUU7Z0JBQzdCLElBQUksS0FBSyxDQUFDLFlBQVksQ0FBQyxPQUFPLENBQUMsQ0FBQyxJQUFJLElBQUksQ0FBQztvQkFDckMsT0FBTyxLQUFLLENBQUE7YUFDbkI7UUFDTCxDQUFDLENBQUMsQ0FBQztRQUNILElBQUksV0FBVyxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUU7WUFDeEIsS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLFdBQVcsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxFQUFFLEVBQUU7Z0JBQ3pDLFdBQVcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxjQUFjLENBQUMsUUFBUSxDQUFDLENBQUMsWUFBWSxDQUFDLFFBQVEsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQzthQUM1RTtTQUNKO1FBRUQsSUFBSSxJQUFJLENBQUMsWUFBWSxDQUFDLE9BQU8sQ0FBQyxDQUFDLElBQUksSUFBSSxDQUFDLElBQUksSUFBSSxDQUFDLFlBQVksQ0FBQyxPQUFPLENBQUMsQ0FBQyxJQUFJLElBQUksQ0FBQyxFQUFFO1lBQzlFLElBQUksU0FBUyxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxVQUFBLEtBQUs7Z0JBQzNDLElBQUksS0FBSyxDQUFDLFlBQVksQ0FBQyxPQUFPLENBQUMsRUFBRTtvQkFDN0IsSUFBSSxLQUFLLENBQUMsWUFBWSxDQUFDLE9BQU8sQ0FBQyxDQUFDLElBQUksSUFBSSxDQUFDO3dCQUNyQyxPQUFPLEtBQUssQ0FBQTtpQkFDbkI7WUFDTCxDQUFDLENBQUMsQ0FBQztZQUNILElBQUksU0FBUyxDQUFDLE1BQU0sR0FBRyxDQUFDO2dCQUNwQixLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsU0FBUyxDQUFDLE1BQU0sRUFBRSxDQUFDLEVBQUUsRUFBRTtvQkFDdkMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLGNBQWMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxZQUFZLENBQUMsTUFBTSxDQUFDLENBQUMsTUFBTSxFQUFFLENBQUM7aUJBQ3JFO1NBRVI7UUFFRCxLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxNQUFNLEVBQUUsQ0FBQyxFQUFFLEVBQUU7WUFDekMsSUFBSSxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxJQUFJLElBQUksRUFBRTtnQkFDeEIsSUFBSSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO2FBQzVCO1NBQ0o7SUFFTCxDQUFDO0lBRUQsV0FBVztJQUNYLCtCQUFTLEdBQVQ7UUFBQSxpQkE4QkM7UUE3QkcsSUFBSSxDQUFDLEtBQUssR0FBRyxLQUFLLENBQUM7UUFDbkIsSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDO1FBRWYsSUFBSSxDQUFDLFFBQVEsR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQztRQUVuQyxJQUFJLElBQUksQ0FBQyxRQUFRLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLEVBQUU7WUFDdkQsaUJBQWlCO1lBQ2pCLElBQUksQ0FBQyxPQUFPLEdBQUcsSUFBSSxDQUFDO1lBRXBCLElBQUksQ0FBQyxlQUFlLEVBQUUsQ0FBQztZQUN2Qix5QkFBeUI7WUFDekIsRUFBRSxDQUFDLEVBQUUsQ0FBQyxRQUFRLENBQUMsVUFBVSxDQUFDLEVBQUUsQ0FBQyxDQUFDO1lBQzlCLElBQUksUUFBUSxHQUFHO2dCQUNYLFVBQVUsRUFBRSxJQUFJLENBQUMsVUFBVTtnQkFDM0IsUUFBUSxFQUFFLElBQUksQ0FBQyxRQUFRO2FBQzFCLENBQUE7WUFDRCxFQUFFLENBQUMsRUFBRSxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLENBQUM7WUFFbEMsSUFBSSxDQUFDLGFBQWEsRUFBRSxDQUFDO1lBQ3JCLFVBQVUsQ0FBQztnQkFDUCxLQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsY0FBYyxDQUFDLEtBQUssQ0FBQyxDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUM7WUFDaEUsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxDQUFDO1lBQ1IsdUJBQXVCO1NBQzFCO2FBQ0k7WUFDRCxJQUFJLElBQUksQ0FBQyxRQUFRLElBQUksSUFBSSxFQUFFO2dCQUN2QixJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxDQUFDO2FBQ3hCO1NBQ0o7SUFDTCxDQUFDO0lBRUQsbUNBQWEsR0FBYjtRQUNJLEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxFQUFFLENBQUMsRUFBRSxDQUFDLFVBQVUsQ0FBQyxTQUFTLENBQUMsTUFBTSxFQUFFLENBQUMsRUFBRSxFQUFFO1lBQ3hELElBQUksQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLFVBQVUsQ0FBQyxPQUFPLENBQUMsS0FBSyxHQUFHLENBQUMsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxFQUFFLENBQUMsVUFBVSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLEVBQUU7Z0JBQzdFLElBQUksQ0FBQyxRQUFRLEdBQUcsQ0FBQyxDQUFDO2FBQ3JCO1NBQ0o7SUFDTCxDQUFDO0lBRUQsOEJBQVEsR0FBUjtRQUNJLEVBQUUsQ0FBQyxFQUFFLENBQUMsWUFBWSxDQUFDLFNBQVMsQ0FBQyxVQUFVLENBQUMsV0FBVyxFQUFFLElBQUksQ0FBQyxDQUFDO1FBQzNELElBQUksRUFBRSxDQUFDLEVBQUUsQ0FBQyxVQUFVLENBQUMsT0FBTyxDQUFDLEtBQUssR0FBRyxHQUFHLEVBQUU7WUFDdEMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxVQUFVLENBQUMsT0FBTyxDQUFDLEtBQUssR0FBRyxHQUFHLENBQUM7WUFDckMsYUFBVyxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUM7WUFFN0IsSUFBSSxJQUFJLENBQUMsUUFBUSxJQUFJLENBQUMsRUFBRTtnQkFDcEIsSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLGNBQWMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxNQUFNLEdBQUcsS0FBSyxDQUFDO2dCQUM3RCxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxDQUFDO2dCQUNwQixFQUFFLENBQUMsRUFBRSxDQUFDLFVBQVUsQ0FBQyxlQUFlLENBQUMsS0FBSyxFQUFFLENBQUMsQ0FBQyxDQUFDO2dCQUMzQyxPQUFPO2FBQ1Y7WUFDRCwwQ0FBMEM7WUFDMUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxZQUFZLENBQUMsU0FBUyxDQUFDLFVBQVUsQ0FBQyxRQUFRLEVBQUUsSUFBSSxDQUFDLENBQUM7WUFDeEQsSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxjQUFjLENBQUMsWUFBWSxDQUFDLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQztZQUMxRSxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLGNBQWMsQ0FBQyxZQUFZLENBQUMsQ0FBQyxZQUFZLENBQUMsRUFBRSxDQUFDLFFBQVEsQ0FBQyxDQUFDLFlBQVksQ0FBQyxDQUFDLEVBQUUsSUFBSSxFQUFFLEtBQUssQ0FBQyxDQUFDO1lBQ25ILHlIQUF5SDtZQUN6SCwyQ0FBMkM7WUFDM0MsMEJBQTBCO1lBQzFCLHNGQUFzRjtZQUN0RixRQUFRO1lBQ1IsTUFBTTtZQUVOLEVBQUUsQ0FBQyxRQUFRLENBQUMsWUFBWSxDQUFDLFdBQVcsRUFBRSxVQUFDLEdBQUcsRUFBRSxLQUFLO2dCQUM3QyxJQUFJLEdBQUcsRUFBRTtvQkFDTCxPQUFPLENBQUMsS0FBSyxDQUFDLGlCQUFpQixFQUFFLEdBQUcsQ0FBQyxDQUFDO29CQUN0QyxPQUFPO2lCQUNWO1lBQ0wsQ0FBQyxDQUFDLENBQUM7WUFDSCxVQUFVLENBQUM7Z0JBQ1AsRUFBRSxDQUFDLFFBQVEsQ0FBQyxTQUFTLENBQUMsV0FBVyxDQUFDLENBQUM7WUFDdkMsQ0FBQyxFQUFFLElBQUksQ0FBQyxDQUFDO1NBQ1o7YUFDSTtZQUVELHNCQUFzQjtZQUN0QixhQUFXLENBQUMsU0FBUyxHQUFHLElBQUksQ0FBQztZQUU3QixJQUFJLElBQUksQ0FBQyxRQUFRLElBQUksQ0FBQyxFQUFFO2dCQUNwQixJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsY0FBYyxDQUFDLEtBQUssQ0FBQyxDQUFDLE1BQU0sR0FBRyxLQUFLLENBQUM7Z0JBQzdELElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLENBQUM7Z0JBQ3BCLEVBQUUsQ0FBQyxFQUFFLENBQUMsVUFBVSxDQUFDLGVBQWUsQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFDLENBQUM7Z0JBQzNDLE9BQU87YUFDVjtZQUNELEVBQUUsQ0FBQyxFQUFFLENBQUMsWUFBWSxDQUFDLFNBQVMsQ0FBQyxVQUFVLENBQUMsUUFBUSxFQUFFLElBQUksQ0FBQyxDQUFDO1lBQ3hELElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsY0FBYyxDQUFDLFlBQVksQ0FBQyxDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUM7WUFDMUUsSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxjQUFjLENBQUMsWUFBWSxDQUFDLENBQUMsWUFBWSxDQUFDLEVBQUUsQ0FBQyxRQUFRLENBQUMsQ0FBQyxZQUFZLENBQUMsQ0FBQyxFQUFFLElBQUksRUFBRSxLQUFLLENBQUMsQ0FBQztZQUNuSCx5SEFBeUg7WUFDekgsMkNBQTJDO1lBQzNDLDBCQUEwQjtZQUMxQixzRkFBc0Y7WUFDdEYsUUFBUTtZQUNSLE1BQU07WUFDTixVQUFVLENBQUM7Z0JBQ1AsRUFBRSxDQUFDLEVBQUUsQ0FBQyxVQUFVLENBQUMsZUFBZSxDQUFDLElBQUksRUFBRSxDQUFDLENBQUMsQ0FBQztZQUM5QyxDQUFDLEVBQUUsSUFBSSxDQUFDLENBQUM7WUFFVCw0Q0FBNEM7U0FFL0M7SUFDTCxDQUFDO0lBRUQsZ0NBQVUsR0FBVjtRQUNJLEVBQUUsQ0FBQyxFQUFFLENBQUMsWUFBWSxDQUFDLFNBQVMsQ0FBQyxVQUFVLENBQUMsV0FBVyxFQUFFLElBQUksQ0FBQyxDQUFDO1FBQzNELElBQUksRUFBRSxDQUFDLEVBQUUsQ0FBQyxVQUFVLENBQUMsT0FBTyxDQUFDLEVBQUUsR0FBRyxDQUFDLEVBQUU7WUFDakMseUJBQVcsQ0FBQyxHQUFHLENBQUMsU0FBUyxDQUFDLE9BQU8sQ0FBQyxDQUFDO1lBQ25DLE9BQU87U0FDVjtRQUNELElBQUksQ0FBQyxJQUFJLENBQUMsYUFBYTtZQUFFLE9BQU87UUFFaEMsSUFBSSxDQUFDLGFBQWEsR0FBRyxLQUFLLENBQUM7UUFFM0IsYUFBVyxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUM7UUFDN0IsRUFBRSxDQUFDLEVBQUUsQ0FBQyxZQUFZLENBQUMsU0FBUyxDQUFDLFVBQVUsQ0FBQyxRQUFRLEVBQUUsSUFBSSxDQUFDLENBQUM7UUFDeEQsSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxjQUFjLENBQUMsWUFBWSxDQUFDLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQztRQUMxRSxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLGNBQWMsQ0FBQyxZQUFZLENBQUMsQ0FBQyxZQUFZLENBQUMsRUFBRSxDQUFDLFFBQVEsQ0FBQyxDQUFDLFlBQVksQ0FBQyxDQUFDLEVBQUUsSUFBSSxFQUFFLEtBQUssQ0FBQyxDQUFDO1FBQ25ILHlIQUF5SDtRQUN6SCwyQ0FBMkM7UUFDM0MsMEJBQTBCO1FBQzFCLHNGQUFzRjtRQUN0RixRQUFRO1FBQ1IsTUFBTTtRQUNOLFVBQVUsQ0FBQztZQUNQLEVBQUUsQ0FBQyxFQUFFLENBQUMsVUFBVSxDQUFDLGVBQWUsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDLENBQUM7UUFDOUMsQ0FBQyxFQUFFLElBQUksQ0FBQyxDQUFDO1FBQ1QsNENBQTRDO0lBQ2hELENBQUM7SUFFRCxpQ0FBVyxHQUFYO1FBQ0ksRUFBRSxDQUFDLEVBQUUsQ0FBQyxZQUFZLENBQUMsU0FBUyxDQUFDLFVBQVUsQ0FBQyxXQUFXLEVBQUUsSUFBSSxDQUFDLENBQUM7UUFDM0QsSUFBSSxJQUFJLEdBQUcsR0FBRyxDQUFDO1FBQ2YsSUFBSSxFQUFFLENBQUMsRUFBRSxDQUFDLFVBQVUsQ0FBQyxPQUFPLENBQUMsTUFBTSxJQUFJLENBQUM7WUFBRSxJQUFJLEdBQUcsSUFBSSxDQUFDO2FBQ2pELElBQUksRUFBRSxDQUFDLEVBQUUsQ0FBQyxVQUFVLENBQUMsT0FBTyxDQUFDLE1BQU0sSUFBSSxDQUFDO1lBQUUsSUFBSSxHQUFHLElBQUksQ0FBQztRQUMzRCxtRUFBbUU7UUFDbkUsSUFBSSxFQUFFLENBQUMsRUFBRSxDQUFDLFVBQVUsQ0FBQyxPQUFPLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLEVBQUU7WUFDaEQseUJBQVcsQ0FBQyxHQUFHLENBQUMsU0FBUyxDQUFDLFlBQVksQ0FBQyxDQUFDO1lBQ3hDLE9BQU87U0FDVjthQUNJO1lBQ0QsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDO1NBQ3pCO0lBQ0wsQ0FBQztJQUVELCtCQUFTLEdBQVQsVUFBVSxJQUFJO1FBQ1YsT0FBTyxDQUFDLEdBQUcsQ0FBQyxTQUFTLEVBQUUsSUFBSSxDQUFDLENBQUM7UUFDN0IsRUFBRSxDQUFDLEVBQUUsQ0FBQyxRQUFRLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ2hDLHlCQUFXLENBQUMsR0FBRyxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUVsQyxJQUFJLEVBQUUsQ0FBQyxFQUFFLENBQUMsVUFBVSxDQUFDLE9BQU8sQ0FBQyxNQUFNLEdBQUcsQ0FBQztZQUNuQyxFQUFFLENBQUMsRUFBRSxDQUFDLFVBQVUsQ0FBQyxPQUFPLENBQUMsTUFBTSxJQUFJLENBQUMsQ0FBQztRQUV6QyxJQUFJLENBQUMsUUFBUSxHQUFHLEtBQUssQ0FBQztRQUN0QixJQUFJLENBQUMsVUFBVSxHQUFHLEVBQUUsQ0FBQztRQUNyQixJQUFJLENBQUMsUUFBUSxJQUFJLEVBQUUsQ0FBQztRQUNwQixJQUFJLENBQUMsS0FBSyxHQUFHLEtBQUssQ0FBQztRQUNuQixJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsY0FBYyxDQUFDLE1BQU0sQ0FBQyxDQUFDLE1BQU0sR0FBRyxLQUFLLENBQUM7UUFDOUQsSUFBSSxDQUFDLGdCQUFnQixFQUFFLENBQUM7SUFDNUIsQ0FBQztJQUlELDZCQUFPLEdBQVA7UUFDSSxpQkFBaUI7UUFDakIsRUFBRSxDQUFDLEVBQUUsQ0FBQyxZQUFZLENBQUMsU0FBUyxDQUFDLFVBQVUsQ0FBQyxXQUFXLEVBQUUsSUFBSSxDQUFDLENBQUM7UUFDM0QsSUFBSSxDQUFDLElBQUksQ0FBQyxZQUFZO1lBQUUsT0FBTztRQUMvQixJQUFJLENBQUMsWUFBWSxHQUFHLEtBQUssQ0FBQztRQUMxQixJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsY0FBYyxDQUFDLE1BQU0sQ0FBQyxDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUM7UUFDN0QsSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLGNBQWMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxjQUFjLENBQUMsTUFBTSxDQUFDLENBQUMsTUFBTSxHQUFHLEtBQUssQ0FBQztRQUNyRixJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsY0FBYyxDQUFDLE1BQU0sQ0FBQyxDQUFDLGNBQWMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxNQUFNLEdBQUcsS0FBSyxDQUFDO1FBQ3JGLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxjQUFjLENBQUMsTUFBTSxDQUFDLENBQUMsY0FBYyxDQUFDLE1BQU0sQ0FBQyxDQUFDLE1BQU0sR0FBRyxLQUFLLENBQUM7UUFDckYsSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLGNBQWMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxjQUFjLENBQUMsUUFBUSxDQUFDLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQztRQUN0RixJQUFJLElBQUksR0FBRztZQUNQLElBQUksRUFBRSxJQUFJLENBQUMsVUFBVTtZQUNyQixRQUFRLEVBQUUsSUFBSSxDQUFDLFFBQVE7WUFDdkIsTUFBTSxFQUFFLE1BQU07U0FDakIsQ0FBQTtRQUNELEVBQUUsQ0FBQyxFQUFFLENBQUMsUUFBUSxDQUFDLFlBQVksQ0FBQyxjQUFjLEVBQUUsSUFBSSxDQUFDLENBQUM7UUFDbEQsSUFBSSxJQUFJLENBQUMsU0FBUyxJQUFJLElBQUksRUFBRTtZQUN4QixFQUFFLENBQUMsRUFBRSxDQUFDLFFBQVEsQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDLEVBQUUsVUFBQyxJQUFJO1lBQ3RDLENBQUMsQ0FBQyxDQUFBO1NBQ0w7UUFDRCw0Q0FBNEM7SUFDaEQsQ0FBQztJQUVELGdDQUFVLEdBQVY7UUFDSSxFQUFFLENBQUMsRUFBRSxDQUFDLFlBQVksQ0FBQyxTQUFTLENBQUMsVUFBVSxDQUFDLFdBQVcsRUFBRSxJQUFJLENBQUMsQ0FBQztRQUMzRCxJQUFJLGFBQVcsQ0FBQyxTQUFTLEdBQUcsSUFBSSxFQUFFO1lBQzlCLE9BQU87U0FDVjtRQUNELHNDQUFzQztRQUN0QyxhQUFXLENBQUMsU0FBUyxHQUFHLElBQUksQ0FBQztRQUM3QixFQUFFLENBQUMsRUFBRSxDQUFDLFVBQVUsQ0FBQyxlQUFlLENBQUMsS0FBSyxFQUFFLENBQUMsQ0FBQyxDQUFDO1FBQzNDLElBQUksSUFBSSxDQUFDLFFBQVEsSUFBSSxDQUFDLEVBQUU7WUFDcEIsSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLGNBQWMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxNQUFNLEdBQUcsS0FBSyxDQUFDO1lBQzdELElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDcEIsT0FBTztTQUNWO1FBQ0QsRUFBRSxDQUFDLEVBQUUsQ0FBQyxZQUFZLENBQUMsU0FBUyxDQUFDLFVBQVUsQ0FBQyxRQUFRLEVBQUUsSUFBSSxDQUFDLENBQUM7UUFDeEQsSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxjQUFjLENBQUMsWUFBWSxDQUFDLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQztRQUMxRSxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLGNBQWMsQ0FBQyxZQUFZLENBQUMsQ0FBQyxZQUFZLENBQUMsRUFBRSxDQUFDLFFBQVEsQ0FBQyxDQUFDLFlBQVksQ0FBQyxDQUFDLEVBQUUsSUFBSSxFQUFFLEtBQUssQ0FBQyxDQUFDO1FBQ25ILEVBQUUsQ0FBQyxRQUFRLENBQUMsWUFBWSxDQUFDLFdBQVcsRUFBRSxVQUFDLEdBQUcsRUFBRSxLQUFLO1lBQzdDLElBQUksR0FBRyxFQUFFO2dCQUNMLE9BQU8sQ0FBQyxLQUFLLENBQUMsaUJBQWlCLEVBQUUsR0FBRyxDQUFDLENBQUM7Z0JBQ3RDLE9BQU87YUFDVjtRQUVMLENBQUMsQ0FBQyxDQUFDO1FBRUgsVUFBVSxDQUFDO1lBQ1AsRUFBRSxDQUFDLFFBQVEsQ0FBQyxTQUFTLENBQUMsV0FBVyxDQUFDLENBQUM7UUFDdkMsQ0FBQyxFQUFFLElBQUksQ0FBQyxDQUFDO0lBQ2IsQ0FBQztJQUVELFFBQVE7SUFDUiwrQkFBUyxHQUFULFVBQVUsSUFBSTtRQUFkLGlCQTZCQztRQTVCRyxJQUFJLENBQUMsZUFBZSxFQUFFLENBQUM7UUFDdkIsSUFBSSxJQUFJLENBQUMsUUFBUSxJQUFJLElBQUksSUFBSSxJQUFJLENBQUMsT0FBTyxJQUFJLElBQUksRUFBRTtZQUMvQyxPQUFPO1NBQ1Y7UUFFRCxJQUFJLElBQUksR0FBRyxDQUFDLENBQUM7UUFDYixJQUFJLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQztRQUNyQixJQUFJLElBQUksSUFBSSxNQUFNLEVBQUU7WUFDaEIsSUFBSSxHQUFHLElBQUksQ0FBQztTQUNmO1FBQ0QsVUFBVSxDQUFDO1lBQ1AsS0FBSSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLGNBQWMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFDO1lBQzdELEtBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxjQUFjLENBQUMsTUFBTSxDQUFDLENBQUMsY0FBYyxDQUFDLE1BQU0sQ0FBQyxDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUM7WUFDcEYsS0FBSSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLGNBQWMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxjQUFjLENBQUMsTUFBTSxDQUFDLENBQUMsTUFBTSxHQUFHLEtBQUssQ0FBQztZQUNyRixJQUFJLE1BQU0sR0FBRyxLQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsY0FBYyxDQUFDLE1BQU0sQ0FBQyxDQUFDLGNBQWMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxjQUFjLENBQUMsUUFBUSxDQUFDLENBQUM7WUFDNUcsTUFBTSxDQUFDLGNBQWMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxNQUFNLEdBQUcsTUFBTSxDQUFDLGNBQWMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxNQUFNLEdBQUcsTUFBTSxDQUFDLGNBQWMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxNQUFNLEdBQUcsS0FBSyxDQUFDO1lBQzlILElBQUksRUFBRSxDQUFDLEVBQUUsQ0FBQyxVQUFVLENBQUMsT0FBTyxDQUFDLE1BQU0sSUFBSSxDQUFDO2dCQUFFLE1BQU0sQ0FBQyxjQUFjLENBQUMsT0FBTyxDQUFDLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQztpQkFDbEYsSUFBSSxFQUFFLENBQUMsRUFBRSxDQUFDLFVBQVUsQ0FBQyxPQUFPLENBQUMsTUFBTSxJQUFJLENBQUM7Z0JBQUUsTUFBTSxDQUFDLGNBQWMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFDO2lCQUN2RixJQUFJLEVBQUUsQ0FBQyxFQUFFLENBQUMsVUFBVSxDQUFDLE9BQU8sQ0FBQyxNQUFNLElBQUksQ0FBQztnQkFBRSxNQUFNLENBQUMsY0FBYyxDQUFDLE9BQU8sQ0FBQyxDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUM7WUFDNUYsSUFBSSxJQUFJLEVBQUU7Z0JBQ04sSUFBSSxJQUFJLElBQUksTUFBTSxFQUFFO29CQUNoQixLQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsY0FBYyxDQUFDLE1BQU0sQ0FBQyxDQUFDLGNBQWMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxNQUFNLEdBQUcsS0FBSyxDQUFDO29CQUNyRixLQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsY0FBYyxDQUFDLE1BQU0sQ0FBQyxDQUFDLGNBQWMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFDO2lCQUN2RjthQUNKO1FBQ0wsQ0FBQyxFQUFFLElBQUksQ0FBQyxDQUFDO1FBRVQsdUJBQXVCO0lBQzNCLENBQUM7SUFFRCxTQUFTO0lBQ1QsaUNBQVcsR0FBWCxVQUFZLElBQUk7UUFBaEIsaUJBb0JDO1FBbkJHLElBQUksS0FBSyxHQUFHLENBQUMsQ0FBQztRQUNkLElBQU0sZ0JBQWdCLEdBQUcsQ0FBQyxDQUFDLENBQUMsWUFBWTtRQUN4QyxJQUFNLGFBQWEsR0FBRztZQUNsQixJQUFNLFFBQVEsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLEtBQUssR0FBRyxnQkFBZ0IsRUFBRSxLQUFJLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1lBQ3hFLE9BQU8sS0FBSyxHQUFHLFFBQVEsRUFBRSxLQUFLLEVBQUUsRUFBRTtnQkFDOUIsSUFBSSxLQUFJLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxFQUFFO29CQUNwQixLQUFJLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDLE9BQU8sRUFBRSxDQUFDO2lCQUNoQzthQUNKO1lBQ0Qsa0JBQWtCO1lBQ2xCLElBQUksS0FBSyxHQUFHLEtBQUksQ0FBQyxNQUFNLENBQUMsTUFBTSxFQUFFO2dCQUM1QixLQUFJLENBQUMsWUFBWSxDQUFDLGFBQWEsRUFBRSxDQUFDLENBQUMsQ0FBQzthQUN2QztpQkFBTTthQUNOO1FBQ0wsQ0FBQyxDQUFDO1FBQ0YsV0FBVztRQUNYLGFBQWEsRUFBRSxDQUFDO1FBQ2hCLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxjQUFjLENBQUMsU0FBUyxDQUFDLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQztRQUNoRSxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsY0FBYyxDQUFDLFNBQVMsQ0FBQyxDQUFDLFlBQVksQ0FBQyxTQUFTLENBQUMsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDNUYsQ0FBQztJQUdELDhCQUFRLEdBQVIsVUFBUyxLQUFLLEVBQUUsSUFBSTtRQUNoQixLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxFQUFFLEVBQUU7WUFDNUMsSUFBSSxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLGNBQWMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxZQUFZLENBQUMsTUFBTSxDQUFDLENBQUMsS0FBSyxJQUFJLEtBQUssRUFBRTtnQkFDOUUsSUFBSSxJQUFJLEVBQUU7b0JBQ04sSUFBSSxJQUFJLElBQUksQ0FBQyxFQUFFO3dCQUNYLElBQUksSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxjQUFjLENBQUMsTUFBTSxDQUFDLENBQUMsWUFBWSxDQUFDLE1BQU0sQ0FBQyxDQUFDLE9BQU8sSUFBSSxDQUFDLEVBQUU7NEJBQzVFLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsY0FBYyxDQUFDLE1BQU0sQ0FBQyxDQUFDLFlBQVksQ0FBQyxNQUFNLENBQUMsQ0FBQyxRQUFRLEVBQUUsQ0FBQzt5QkFDNUU7cUJBQ0o7O3dCQUNJLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsY0FBYyxDQUFDLE1BQU0sQ0FBQyxDQUFDLFlBQVksQ0FBQyxNQUFNLENBQUMsQ0FBQyxRQUFRLEVBQUUsQ0FBQztpQkFDakY7O29CQUNJLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsY0FBYyxDQUFDLE1BQU0sQ0FBQyxDQUFDLFlBQVksQ0FBQyxNQUFNLENBQUMsQ0FBQyxRQUFRLEVBQUUsQ0FBQzthQUNqRjtTQUNKO0lBQ0wsQ0FBQztJQUVELDRCQUFNLEdBQU47UUFDSSxLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxFQUFFLEVBQUU7WUFDNUMsSUFBSSxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLGNBQWMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxPQUFPLElBQUksQ0FBQyxFQUFFO2dCQUN2RCxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLGNBQWMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxZQUFZLENBQUMsTUFBTSxDQUFDLENBQUMsTUFBTSxFQUFFLENBQUM7YUFDMUU7U0FDSjtJQUNMLENBQUM7SUFFRCxPQUFPO0lBQ1Asc0NBQWdCLEdBQWhCO1FBQ0ksSUFBSSxDQUFDLGdCQUFnQixHQUFHO1lBQ3BCLElBQUksSUFBSSxDQUFDLEtBQUs7Z0JBQUUsT0FBTztZQUN2QixJQUFJLElBQUksQ0FBQyxVQUFVLElBQUksQ0FBQyxFQUFFO2dCQUN0QixJQUFJLENBQUMsZUFBZSxFQUFFLENBQUM7Z0JBQ3ZCLElBQUksUUFBUSxHQUFHLEVBQUUsQ0FBQyxFQUFFLENBQUMsUUFBUSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUM7Z0JBQzdELHVCQUFhLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxVQUFVLEVBQUUsRUFBRSxFQUFFLE9BQU8sRUFBRSxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUE7Z0JBQ3pFLCtDQUErQztnQkFDL0MsSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLO29CQUFFLElBQUksQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLENBQUM7YUFDM0M7aUJBQ0k7Z0JBQ0QsSUFBSSxDQUFDLFVBQVUsSUFBSSxDQUFDLENBQUM7Z0JBQ3JCLElBQUksQ0FBQyxVQUFVLElBQUksQ0FBQyxDQUFDO2dCQUNyQixJQUFJLFFBQVEsR0FBRyxFQUFFLENBQUMsRUFBRSxDQUFDLFFBQVEsQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDO2dCQUM3RCx1QkFBYSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsVUFBVSxFQUFFLEVBQUUsRUFBRSxPQUFPLEVBQUUsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFBO2dCQUN6RSwrQ0FBK0M7YUFDbEQ7UUFDTCxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ2IsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDNUMsQ0FBQztJQUNELFFBQVE7SUFDUixxQ0FBZSxHQUFmO1FBQ0ksSUFBSSxJQUFJLENBQUMsZ0JBQWdCLEVBQUU7WUFDdkIsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztTQUMxQztJQUNMLENBQUM7SUFFRCxRQUFRO0lBQ1IsaUNBQVcsR0FBWDtRQUNJLElBQUksSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsY0FBYyxDQUFDLEtBQUssQ0FBQyxDQUFDLE1BQU0sSUFBSSxJQUFJLElBQUksSUFBSSxDQUFDLE1BQU0sSUFBSSxJQUFJO2VBQ3pFLElBQUksQ0FBQyxTQUFTLENBQUMsTUFBTSxJQUFJLElBQUksSUFBSSxJQUFJLENBQUMsVUFBVSxJQUFJLENBQUMsRUFBRTtZQUMxRCxPQUFPO1NBQ1Y7UUFDRCxJQUFJLFNBQVMsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxjQUFjLENBQUMsUUFBUSxDQUFDLENBQUMsY0FBYyxDQUFDLFNBQVMsQ0FBQyxDQUFDO1FBQ3BGLElBQUksU0FBUyxDQUFDLFlBQVksQ0FBQyxZQUFZLENBQUMsQ0FBQyxNQUFNLEVBQUU7WUFDN0MsU0FBUyxDQUFDLFlBQVksQ0FBQyxZQUFZLENBQUMsQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLENBQUM7WUFDckQsSUFBSSxFQUFFLENBQUMsRUFBRSxDQUFDLFVBQVUsQ0FBQyxPQUFPLENBQUMsWUFBWSxHQUFHLENBQUMsRUFBRTtnQkFDM0MsSUFBSSxFQUFFLENBQUMsRUFBRSxDQUFDLFVBQVUsQ0FBQyxPQUFPLENBQUMsSUFBSSxHQUFHLElBQUksRUFBRTtvQkFDdEMseUJBQVcsQ0FBQyxHQUFHLENBQUMsU0FBUyxDQUFDLGFBQWEsQ0FBQyxDQUFDO29CQUN6QyxTQUFTLENBQUMsWUFBWSxDQUFDLFlBQVksQ0FBQyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQztvQkFDcEQsT0FBTztpQkFDVjtnQkFDRCxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsY0FBYyxDQUFDLFlBQVksQ0FBQyxDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUM7Z0JBQ25FLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsWUFBWSxDQUFDLGNBQWMsQ0FBQyxDQUFDLFdBQVcsQ0FBQyxRQUFRLENBQUMsQ0FBQzthQUNyRjtpQkFDSTtnQkFDRCxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsY0FBYyxDQUFDLEtBQUssQ0FBQyxDQUFDLE1BQU0sSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLEVBQUU7b0JBQy9ELElBQU0sU0FBUyxHQUFHLElBQUksQ0FBQyxHQUFHLEVBQUUsQ0FBQztvQkFDN0IsSUFBSSxDQUFDLFVBQVUsQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFDO29CQUU5QixJQUFJLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQztvQkFDbEIsSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsY0FBYyxDQUFDLEtBQUssQ0FBQyxDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUM7b0JBQ3JELElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLGNBQWMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxjQUFjLENBQUMsS0FBSyxDQUFDLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQztvQkFFM0UsRUFBRSxDQUFDLEVBQUUsQ0FBQyxVQUFVLENBQUMsT0FBTyxDQUFDLFlBQVksSUFBSSxDQUFDLENBQUM7b0JBQzNDLElBQUksRUFBRSxDQUFDLEVBQUUsQ0FBQyxVQUFVLENBQUMsT0FBTyxDQUFDLFlBQVksR0FBRyxDQUFDO3dCQUN6QyxFQUFFLENBQUMsRUFBRSxDQUFDLFVBQVUsQ0FBQyxPQUFPLENBQUMsWUFBWSxHQUFHLENBQUMsQ0FBQztvQkFDOUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxNQUFNLEdBQUcsRUFBRSxDQUFDLEVBQUUsQ0FBQyxVQUFVLENBQUMsT0FBTyxDQUFDLFlBQVksQ0FBQyxRQUFRLEVBQUUsQ0FBQztvQkFDeEUsSUFBSSxRQUFRLEdBQUcsRUFBRSxDQUFDLEVBQUUsQ0FBQyxjQUFjLENBQUMsVUFBVSxDQUFDLE1BQU0sQ0FBQyxDQUFDO29CQUN2RCxRQUFRLENBQUMsWUFBWSxHQUFHLEVBQUUsQ0FBQyxFQUFFLENBQUMsVUFBVSxDQUFDLE9BQU8sQ0FBQyxZQUFZLENBQUM7b0JBQzlELFFBQVEsQ0FBQyxTQUFTLEdBQUcsU0FBUyxDQUFDO29CQUMvQixFQUFFLENBQUMsRUFBRSxDQUFDLGNBQWMsQ0FBQyxVQUFVLENBQUMsTUFBTSxFQUFFLFFBQVEsQ0FBQyxDQUFDO29CQUNsRCxFQUFFLENBQUMsRUFBRSxDQUFDLFFBQVEsQ0FBQyxXQUFXLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FBQyxFQUFFLENBQUMsVUFBVSxDQUFDLE9BQU8sQ0FBQyxZQUFZLEVBQUUsVUFBQyxJQUFJO29CQUM3RSxDQUFDLENBQUMsQ0FBQTtvQkFDRixJQUFJLElBQUksR0FBRzt3QkFDUCxFQUFFLEVBQUUsTUFBTTt3QkFDVixHQUFHLEVBQUUsQ0FBQyxDQUFDO3FCQUNWLENBQUE7b0JBQ0QsRUFBRSxDQUFDLEVBQUUsQ0FBQyxRQUFRLENBQUMsWUFBWSxDQUFDLGVBQWUsRUFBRSxJQUFJLENBQUMsQ0FBQztpQkFDdEQ7O29CQUNJLHlCQUFXLENBQUMsR0FBRyxDQUFDLFNBQVMsQ0FBQyxhQUFhLENBQUMsQ0FBQzthQUNqRDtTQUNKO0lBR0wsQ0FBQztJQUVELFFBQVE7SUFDUiw2QkFBTyxHQUFQO1FBQ0ksSUFBSSxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxjQUFjLENBQUMsS0FBSyxDQUFDLENBQUMsTUFBTSxFQUFFO1lBQy9DLElBQUksQ0FBQyxVQUFVLENBQUMsTUFBTSxHQUFHLEtBQUssQ0FBQztZQUMvQixJQUFJLFNBQVMsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxjQUFjLENBQUMsUUFBUSxDQUFDLENBQUMsY0FBYyxDQUFDLFNBQVMsQ0FBQyxDQUFDO1lBQ3BGLFNBQVMsQ0FBQyxZQUFZLENBQUMsWUFBWSxDQUFDLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDO1lBQ3BELElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLGNBQWMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxNQUFNLEdBQUcsS0FBSyxDQUFDO1lBQ3RELElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLGNBQWMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxjQUFjLENBQUMsS0FBSyxDQUFDLENBQUMsTUFBTSxHQUFHLEtBQUssQ0FBQztZQUM1RSxJQUFJLENBQUMsS0FBSyxHQUFHLEtBQUssQ0FBQztZQUNuQiwyQkFBMkI7U0FDOUI7SUFDTCxDQUFDO0lBRUQsc0NBQWdCLEdBQWhCLFVBQWlCLElBQUk7UUFBckIsaUJBcURDO1FBcERHLElBQUksQ0FBQyxLQUFLLEdBQUcsS0FBSyxDQUFDO1FBQ25CLElBQU0sU0FBUyxHQUFHLElBQUksQ0FBQyxHQUFHLEVBQUUsQ0FBQztRQUM3QixvQ0FBb0M7UUFDcEMsSUFBSSxTQUFTLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsY0FBYyxDQUFDLFFBQVEsQ0FBQyxDQUFDLGNBQWMsQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUNwRixJQUFJLFNBQVMsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxjQUFjLENBQUMsUUFBUSxDQUFDLENBQUMsY0FBYyxDQUFDLFlBQVksQ0FBQyxDQUFDO1FBQ3ZGLElBQUksUUFBUSxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLGNBQWMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxjQUFjLENBQUMsVUFBVSxDQUFDLENBQUM7UUFDcEYsSUFBSSxJQUFJLElBQUksY0FBYztZQUFFLFNBQVMsQ0FBQyxZQUFZLENBQUMsWUFBWSxDQUFDLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDO2FBQzNFLElBQUksSUFBSSxJQUFJLGNBQWM7WUFBRSxTQUFTLENBQUMsWUFBWSxDQUFDLFlBQVksQ0FBQyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQzthQUNoRixJQUFJLElBQUksSUFBSSxhQUFhO1lBQUUsUUFBUSxDQUFDLFlBQVksQ0FBQyxZQUFZLENBQUMsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDbkYsSUFBSSxJQUFJLElBQUksY0FBYyxFQUFFO1lBQ3hCLEVBQUUsQ0FBQyxFQUFFLENBQUMsVUFBVSxDQUFDLE9BQU8sQ0FBQyxZQUFZLElBQUksQ0FBQyxDQUFDO1lBQzNDLElBQUksUUFBUSxHQUFHLEVBQUUsQ0FBQyxFQUFFLENBQUMsY0FBYyxDQUFDLFVBQVUsQ0FBQyxNQUFNLENBQUMsQ0FBQztZQUN2RCxRQUFRLENBQUMsWUFBWSxHQUFHLEVBQUUsQ0FBQyxFQUFFLENBQUMsVUFBVSxDQUFDLE9BQU8sQ0FBQyxZQUFZLENBQUM7WUFDOUQsUUFBUSxDQUFDLFNBQVMsR0FBRyxTQUFTLENBQUM7WUFDL0IsRUFBRSxDQUFDLEVBQUUsQ0FBQyxjQUFjLENBQUMsVUFBVSxDQUFDLE1BQU0sRUFBRSxRQUFRLENBQUMsQ0FBQztZQUNsRCxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLFlBQVksQ0FBQyxjQUFjLENBQUMsQ0FBQyxZQUFZLEVBQUUsQ0FBQztZQUMzRSxVQUFVLENBQUM7Z0JBQ1AsS0FBSSxDQUFDLFFBQVEsQ0FBQyxNQUFNLEdBQUcsRUFBRSxDQUFDLEVBQUUsQ0FBQyxVQUFVLENBQUMsT0FBTyxDQUFDLFlBQVksQ0FBQyxRQUFRLEVBQUUsQ0FBQztnQkFDeEUseUJBQVcsQ0FBQyxHQUFHLENBQUMsU0FBUyxDQUFDLFlBQVksQ0FBQyxDQUFDO1lBQzVDLENBQUMsRUFBRSxHQUFHLENBQUMsQ0FBQztTQUdYO2FBQ0ksSUFBSSxJQUFJLElBQUksYUFBYSxFQUFFO1lBQzVCLEVBQUUsQ0FBQyxFQUFFLENBQUMsVUFBVSxDQUFDLE9BQU8sQ0FBQyxXQUFXLElBQUksQ0FBQyxDQUFDO1lBQzFDLElBQUksUUFBUSxHQUFHLEVBQUUsQ0FBQyxFQUFFLENBQUMsY0FBYyxDQUFDLFVBQVUsQ0FBQyxNQUFNLENBQUMsQ0FBQztZQUN2RCxRQUFRLENBQUMsV0FBVyxHQUFHLEVBQUUsQ0FBQyxFQUFFLENBQUMsVUFBVSxDQUFDLE9BQU8sQ0FBQyxXQUFXLENBQUM7WUFDNUQsUUFBUSxDQUFDLFNBQVMsR0FBRyxTQUFTLENBQUM7WUFDL0IsRUFBRSxDQUFDLEVBQUUsQ0FBQyxjQUFjLENBQUMsVUFBVSxDQUFDLE1BQU0sRUFBRSxRQUFRLENBQUMsQ0FBQztZQUNsRCxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLFlBQVksQ0FBQyxjQUFjLENBQUMsQ0FBQyxZQUFZLEVBQUUsQ0FBQztZQUMzRSxVQUFVLENBQUM7Z0JBQ1AseUJBQVcsQ0FBQyxHQUFHLENBQUMsU0FBUyxDQUFDLFVBQVUsQ0FBQyxDQUFDO2dCQUN0QyxLQUFJLENBQUMsVUFBVSxDQUFDLE1BQU0sR0FBRyxFQUFFLENBQUMsRUFBRSxDQUFDLFVBQVUsQ0FBQyxPQUFPLENBQUMsV0FBVyxDQUFDLFFBQVEsRUFBRSxDQUFDO1lBQzdFLENBQUMsRUFBRSxHQUFHLENBQUMsQ0FBQztTQUVYO2FBQ0ksSUFBSSxJQUFJLElBQUksY0FBYyxFQUFFO1lBQzdCLEVBQUUsQ0FBQyxFQUFFLENBQUMsVUFBVSxDQUFDLE9BQU8sQ0FBQyxZQUFZLElBQUksQ0FBQyxDQUFDO1lBQzNDLElBQUksUUFBUSxHQUFHLEVBQUUsQ0FBQyxFQUFFLENBQUMsY0FBYyxDQUFDLFVBQVUsQ0FBQyxNQUFNLENBQUMsQ0FBQztZQUN2RCxRQUFRLENBQUMsWUFBWSxHQUFHLEVBQUUsQ0FBQyxFQUFFLENBQUMsVUFBVSxDQUFDLE9BQU8sQ0FBQyxZQUFZLENBQUM7WUFDOUQsUUFBUSxDQUFDLFNBQVMsR0FBRyxTQUFTLENBQUM7WUFDL0IsRUFBRSxDQUFDLEVBQUUsQ0FBQyxjQUFjLENBQUMsVUFBVSxDQUFDLE1BQU0sRUFBRSxRQUFRLENBQUMsQ0FBQztZQUNsRCxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLFlBQVksQ0FBQyxjQUFjLENBQUMsQ0FBQyxZQUFZLEVBQUUsQ0FBQztZQUMzRSxVQUFVLENBQUM7Z0JBQ1AsS0FBSSxDQUFDLFdBQVcsQ0FBQyxNQUFNLEdBQUcsRUFBRSxDQUFDLEVBQUUsQ0FBQyxVQUFVLENBQUMsT0FBTyxDQUFDLFlBQVksQ0FBQyxRQUFRLEVBQUUsQ0FBQztnQkFDM0UseUJBQVcsQ0FBQyxHQUFHLENBQUMsU0FBUyxDQUFDLFdBQVcsQ0FBQyxDQUFDO1lBQzNDLENBQUMsRUFBRSxHQUFHLENBQUMsQ0FBQztTQUVYO0lBSUwsQ0FBQztJQUVELFFBQVE7SUFDUiwrQkFBUyxHQUFUO1FBQ0ksSUFBSSxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxjQUFjLENBQUMsS0FBSyxDQUFDLENBQUMsTUFBTSxJQUFJLElBQUksSUFBSSxJQUFJLENBQUMsTUFBTSxJQUFJLElBQUk7ZUFDekUsSUFBSSxDQUFDLFNBQVMsQ0FBQyxNQUFNLElBQUksSUFBSSxJQUFJLElBQUksQ0FBQyxVQUFVLElBQUksQ0FBQyxFQUFFO1lBQzFELE9BQU87U0FDVjtRQUNELElBQUksU0FBUyxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLGNBQWMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxjQUFjLENBQUMsWUFBWSxDQUFDLENBQUM7UUFDdkYsSUFBSSxTQUFTLENBQUMsWUFBWSxDQUFDLFlBQVksQ0FBQyxDQUFDLE1BQU0sRUFBRTtZQUM3QyxTQUFTLENBQUMsWUFBWSxDQUFDLFlBQVksQ0FBQyxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsQ0FBQztZQUNyRCxJQUFJLEVBQUUsQ0FBQyxFQUFFLENBQUMsVUFBVSxDQUFDLE9BQU8sQ0FBQyxZQUFZLEdBQUcsQ0FBQyxFQUFFO2dCQUMzQyxJQUFJLEVBQUUsQ0FBQyxFQUFFLENBQUMsVUFBVSxDQUFDLE9BQU8sQ0FBQyxJQUFJLEdBQUcsSUFBSSxFQUFFO29CQUN0Qyx5QkFBVyxDQUFDLEdBQUcsQ0FBQyxTQUFTLENBQUMsYUFBYSxDQUFDLENBQUM7b0JBQ3pDLFNBQVMsQ0FBQyxZQUFZLENBQUMsWUFBWSxDQUFDLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDO29CQUNwRCxPQUFPO2lCQUNWO2dCQUNELElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxjQUFjLENBQUMsWUFBWSxDQUFDLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQztnQkFDbkUsSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxZQUFZLENBQUMsY0FBYyxDQUFDLENBQUMsV0FBVyxDQUFDLFFBQVEsQ0FBQyxDQUFDO2FBQ3JGO2lCQUNJO2dCQUNELElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFO29CQUNkLElBQU0sU0FBUyxHQUFHLElBQUksQ0FBQyxHQUFHLEVBQUUsQ0FBQztvQkFDN0IsSUFBSSxDQUFDLFVBQVUsQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFDO29CQUU5QixJQUFJLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQztvQkFDbkIsRUFBRSxDQUFDLEVBQUUsQ0FBQyxVQUFVLENBQUMsT0FBTyxDQUFDLFlBQVksSUFBSSxDQUFDLENBQUM7b0JBQzNDLElBQUksRUFBRSxDQUFDLEVBQUUsQ0FBQyxVQUFVLENBQUMsT0FBTyxDQUFDLFlBQVksR0FBRyxDQUFDO3dCQUN6QyxFQUFFLENBQUMsRUFBRSxDQUFDLFVBQVUsQ0FBQyxPQUFPLENBQUMsWUFBWSxHQUFHLENBQUMsQ0FBQztvQkFDOUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxNQUFNLEdBQUcsRUFBRSxDQUFDLEVBQUUsQ0FBQyxVQUFVLENBQUMsT0FBTyxDQUFDLFlBQVksQ0FBQyxRQUFRLEVBQUUsQ0FBQztvQkFDM0UsSUFBSSxRQUFRLEdBQUcsRUFBRSxDQUFDLEVBQUUsQ0FBQyxjQUFjLENBQUMsVUFBVSxDQUFDLE1BQU0sQ0FBQyxDQUFDO29CQUN2RCxPQUFPLENBQUMsR0FBRyxDQUFDLFNBQVMsRUFBRSxRQUFRLENBQUMsQ0FBQztvQkFDakMsUUFBUSxDQUFDLFlBQVksR0FBRyxFQUFFLENBQUMsRUFBRSxDQUFDLFVBQVUsQ0FBQyxPQUFPLENBQUMsWUFBWSxDQUFDO29CQUM5RCxRQUFRLENBQUMsU0FBUyxHQUFHLFNBQVMsQ0FBQztvQkFDL0IsRUFBRSxDQUFDLEVBQUUsQ0FBQyxjQUFjLENBQUMsVUFBVSxDQUFDLE1BQU0sRUFBRSxRQUFRLENBQUMsQ0FBQztvQkFDbEQsRUFBRSxDQUFDLEVBQUUsQ0FBQyxRQUFRLENBQUMsV0FBVyxDQUFDLElBQUksRUFBRSxFQUFFLENBQUMsRUFBRSxDQUFDLFVBQVUsQ0FBQyxPQUFPLENBQUMsWUFBWSxFQUFFLFVBQUMsSUFBSTtvQkFDN0UsQ0FBQyxDQUFDLENBQUE7b0JBQ0YsSUFBSSxJQUFJLEdBQUc7d0JBQ1AsRUFBRSxFQUFFLE1BQU07d0JBQ1YsR0FBRyxFQUFFLENBQUMsQ0FBQztxQkFDVixDQUFBO29CQUNELEVBQUUsQ0FBQyxFQUFFLENBQUMsUUFBUSxDQUFDLFlBQVksQ0FBQyxlQUFlLEVBQUUsSUFBSSxDQUFDLENBQUM7aUJBQ3REOztvQkFDSSx5QkFBVyxDQUFDLEdBQUcsQ0FBQyxTQUFTLENBQUMsYUFBYSxDQUFDLENBQUM7YUFDakQ7U0FFSjtJQUVMLENBQUM7SUFFRCw4QkFBUSxHQUFSO1FBQ0ksSUFBSSxFQUFFLENBQUMsRUFBRSxDQUFDLFVBQVUsQ0FBQyxPQUFPLENBQUMsSUFBSSxHQUFHLElBQUksRUFBRTtZQUN0Qyx5QkFBVyxDQUFDLEdBQUcsQ0FBQyxTQUFTLENBQUMsYUFBYSxDQUFDLENBQUM7WUFDekMsT0FBTztTQUNWO1FBQ0QsRUFBRSxDQUFDLEVBQUUsQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsZ0JBQWdCLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxhQUFhLENBQUMsQ0FBQyxDQUFDO0lBQ2xGLENBQUM7SUFFRCwrQkFBUyxHQUFUO1FBQ0ksSUFBSSxFQUFFLENBQUMsRUFBRSxDQUFDLFVBQVUsQ0FBQyxPQUFPLENBQUMsSUFBSSxHQUFHLElBQUksRUFBRTtZQUN0Qyx5QkFBVyxDQUFDLEdBQUcsQ0FBQyxTQUFTLENBQUMsYUFBYSxDQUFDLENBQUM7WUFDekMsT0FBTztTQUNWO1FBQ0QsRUFBRSxDQUFDLEVBQUUsQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsZ0JBQWdCLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxjQUFjLENBQUMsQ0FBQyxDQUFDO0lBQ25GLENBQUM7SUFFRCwrQkFBUyxHQUFUO1FBQ0ksSUFBSSxFQUFFLENBQUMsRUFBRSxDQUFDLFVBQVUsQ0FBQyxPQUFPLENBQUMsSUFBSSxHQUFHLElBQUksRUFBRTtZQUN0Qyx5QkFBVyxDQUFDLEdBQUcsQ0FBQyxTQUFTLENBQUMsYUFBYSxDQUFDLENBQUM7WUFDekMsT0FBTztTQUNWO1FBQ0QsRUFBRSxDQUFDLEVBQUUsQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsZ0JBQWdCLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxjQUFjLENBQUMsQ0FBQyxDQUFDO0lBQ25GLENBQUM7SUFFRCxlQUFlO0lBQ2YsOEJBQVEsR0FBUjtRQUFBLGlCQW1JQztRQWxJRyxJQUFJLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLGNBQWMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxNQUFNLElBQUksSUFBSSxJQUFJLElBQUksQ0FBQyxNQUFNLElBQUksSUFBSTtlQUN6RSxJQUFJLENBQUMsU0FBUyxDQUFDLE1BQU0sSUFBSSxJQUFJLElBQUksSUFBSSxDQUFDLFVBQVUsSUFBSSxDQUFDLEVBQUU7WUFDMUQsT0FBTztTQUNWO1FBQ0QsSUFBSSxRQUFRLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsY0FBYyxDQUFDLFFBQVEsQ0FBQyxDQUFDLGNBQWMsQ0FBQyxVQUFVLENBQUMsQ0FBQztRQUNwRixJQUFJLFFBQVEsQ0FBQyxZQUFZLENBQUMsWUFBWSxDQUFDLENBQUMsTUFBTSxFQUFFO1lBQzVDLFFBQVEsQ0FBQyxZQUFZLENBQUMsWUFBWSxDQUFDLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxDQUFDO1lBQ3BELElBQUksRUFBRSxDQUFDLEVBQUUsQ0FBQyxVQUFVLENBQUMsT0FBTyxDQUFDLFdBQVcsR0FBRyxDQUFDLEVBQUU7Z0JBQzFDLElBQUksRUFBRSxDQUFDLEVBQUUsQ0FBQyxVQUFVLENBQUMsT0FBTyxDQUFDLElBQUksR0FBRyxJQUFJLEVBQUU7b0JBQ3RDLHlCQUFXLENBQUMsR0FBRyxDQUFDLFNBQVMsQ0FBQyxhQUFhLENBQUMsQ0FBQztvQkFDekMsUUFBUSxDQUFDLFlBQVksQ0FBQyxZQUFZLENBQUMsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUM7b0JBQ25ELE9BQU87aUJBQ1Y7Z0JBQ0QsSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLGNBQWMsQ0FBQyxZQUFZLENBQUMsQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFDO2dCQUNuRSxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLFlBQVksQ0FBQyxjQUFjLENBQUMsQ0FBQyxXQUFXLENBQUMsT0FBTyxDQUFDLENBQUM7Z0JBQ2pGLGdEQUFnRDthQUNuRDtpQkFDSTtnQkFDRCxJQUFNLFNBQVMsR0FBRyxJQUFJLENBQUMsR0FBRyxFQUFFLENBQUM7Z0JBQzdCLElBQUksQ0FBQyxTQUFTLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQztnQkFDN0IsVUFBVSxDQUFDO29CQUNQLEtBQUksQ0FBQyxTQUFTLENBQUMsTUFBTSxHQUFHLEtBQUssQ0FBQztvQkFDOUIsUUFBUSxDQUFDLFlBQVksQ0FBQyxZQUFZLENBQUMsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUM7Z0JBQ3ZELENBQUMsRUFBRSxJQUFJLENBQUMsQ0FBQztnQkFFVCxFQUFFLENBQUMsRUFBRSxDQUFDLFVBQVUsQ0FBQyxPQUFPLENBQUMsV0FBVyxJQUFJLENBQUMsQ0FBQztnQkFDMUMsSUFBSSxFQUFFLENBQUMsRUFBRSxDQUFDLFVBQVUsQ0FBQyxPQUFPLENBQUMsV0FBVyxHQUFHLENBQUM7b0JBQ3hDLEVBQUUsQ0FBQyxFQUFFLENBQUMsVUFBVSxDQUFDLE9BQU8sQ0FBQyxXQUFXLEdBQUcsQ0FBQyxDQUFDO2dCQUM3QyxJQUFJLENBQUMsVUFBVSxDQUFDLE1BQU0sR0FBRyxFQUFFLENBQUMsRUFBRSxDQUFDLFVBQVUsQ0FBQyxPQUFPLENBQUMsV0FBVyxDQUFDLFFBQVEsRUFBRSxDQUFDO2dCQUN6RSxJQUFJLFFBQVEsR0FBRyxFQUFFLENBQUMsRUFBRSxDQUFDLGNBQWMsQ0FBQyxVQUFVLENBQUMsTUFBTSxDQUFDLENBQUM7Z0JBQ3ZELFFBQVEsQ0FBQyxXQUFXLEdBQUcsRUFBRSxDQUFDLEVBQUUsQ0FBQyxVQUFVLENBQUMsT0FBTyxDQUFDLFdBQVcsQ0FBQztnQkFDNUQsUUFBUSxDQUFDLFNBQVMsR0FBRyxTQUFTLENBQUM7Z0JBQy9CLEVBQUUsQ0FBQyxFQUFFLENBQUMsY0FBYyxDQUFDLFVBQVUsQ0FBQyxNQUFNLEVBQUUsUUFBUSxDQUFDLENBQUM7Z0JBQ2xELEVBQUUsQ0FBQyxFQUFFLENBQUMsUUFBUSxDQUFDLFdBQVcsQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDLEVBQUUsQ0FBQyxVQUFVLENBQUMsT0FBTyxDQUFDLFdBQVcsRUFBRSxVQUFDLElBQUk7Z0JBQzVFLENBQUMsQ0FBQyxDQUFBO2dCQUNGLElBQUksSUFBSSxHQUFHO29CQUNQLEVBQUUsRUFBRSxNQUFNO29CQUNWLEdBQUcsRUFBRSxDQUFDLENBQUM7aUJBQ1YsQ0FBQTtnQkFDRCxFQUFFLENBQUMsRUFBRSxDQUFDLFFBQVEsQ0FBQyxZQUFZLENBQUMsZUFBZSxFQUFFLElBQUksQ0FBQyxDQUFDO2dCQUNuRCxJQUFJLFlBQVUsR0FBRyxFQUFFLENBQUM7Z0JBQ3BCLHFDQUFxQztnQkFDckMsS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsTUFBTSxFQUFFLENBQUMsRUFBRSxFQUFFO29CQUN6QyxpRUFBaUU7b0JBQ2pFLElBQUksSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxZQUFZLENBQUMsT0FBTyxDQUFDLENBQUMsSUFBSSxJQUFJLENBQUMsRUFBRTt3QkFDaEQsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO3FCQUN4Qzt5QkFDSSxJQUFJLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsWUFBWSxDQUFDLE9BQU8sQ0FBQyxDQUFDLElBQUksSUFBSSxDQUFDLEVBQUU7d0JBQ3JELElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztxQkFDekM7eUJBQ0ksSUFBSSxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLFlBQVksQ0FBQyxPQUFPLENBQUMsQ0FBQyxJQUFJLElBQUksRUFBRSxFQUFFO3dCQUN0RCxJQUFJLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsWUFBWSxDQUFDLE9BQU8sQ0FBQyxDQUFDLFVBQVUsQ0FBQyxJQUFJLEVBQUU7NEJBQ3RELFlBQVUsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxZQUFZLENBQUMsT0FBTyxDQUFDLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxDQUFDO3lCQUN6RTs7NEJBQ0ksWUFBVSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7cUJBQ3hDO3lCQUNJO3dCQUNELFlBQVUsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO3FCQUNuQztpQkFDSjtnQkFDRCxJQUFJLFlBQVUsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFO29CQUN2QixZQUFVLEdBQUcsRUFBRSxDQUFDLEVBQUUsQ0FBQyxRQUFRLENBQUMsWUFBWSxDQUFDLFlBQVUsQ0FBQyxDQUFDO29CQUNyRCxZQUFVLENBQUMsQ0FBQyxDQUFDLENBQUMsWUFBWSxDQUFDLE9BQU8sQ0FBQyxDQUFDLFNBQVMsRUFBRSxDQUFDO29CQUNoRCxJQUFJLElBQUksR0FBRyxDQUFDLENBQUM7b0JBQ2IsSUFBSSxZQUFVLENBQUMsQ0FBQyxDQUFDLENBQUMsWUFBWSxDQUFDLE9BQU8sQ0FBQyxDQUFDLElBQUksSUFBSSxDQUFDLElBQUksWUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDLFlBQVksQ0FBQyxPQUFPLENBQUMsQ0FBQyxJQUFJLElBQUksQ0FBQyxFQUFFO3dCQUNoRyxJQUFJLEdBQUcsR0FBRyxDQUFDO3FCQUNkO29CQUNELElBQUksSUFBSSxHQUFHLENBQUMsRUFBRTt3QkFDVixVQUFVLENBQUM7NEJBQ1AsWUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDLFlBQVksQ0FBQyxPQUFPLENBQUMsQ0FBQyxTQUFTLEVBQUUsQ0FBQzt3QkFDcEQsQ0FBQyxFQUFFLElBQUksQ0FBQyxDQUFDO3dCQUNULE9BQU87cUJBQ1Y7eUJBQ0k7d0JBQ0QsWUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDLFlBQVksQ0FBQyxPQUFPLENBQUMsQ0FBQyxTQUFTLEVBQUUsQ0FBQzt3QkFDaEQsT0FBTztxQkFDVjtpQkFDSjtxQkFDSSxJQUFJLFlBQVUsQ0FBQyxNQUFNLElBQUksQ0FBQyxFQUFFO29CQUM3QixZQUFVLENBQUMsQ0FBQyxDQUFDLENBQUMsWUFBWSxDQUFDLE9BQU8sQ0FBQyxDQUFDLFNBQVMsRUFBRSxDQUFDO29CQUNoRCxJQUFJLElBQUksR0FBRyxDQUFDLENBQUM7b0JBQ2IsSUFBSSxZQUFVLENBQUMsQ0FBQyxDQUFDLENBQUMsWUFBWSxDQUFDLE9BQU8sQ0FBQyxDQUFDLElBQUksSUFBSSxDQUFDLElBQUksWUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDLFlBQVksQ0FBQyxPQUFPLENBQUMsQ0FBQyxJQUFJLElBQUksQ0FBQyxFQUFFO3dCQUNoRyxJQUFJLEdBQUcsR0FBRyxDQUFDO3FCQUNkO29CQUNELFVBQVUsQ0FBQzt3QkFDUCxJQUFJLEtBQUksQ0FBQyxXQUFXLENBQUMsTUFBTSxJQUFJLENBQUMsSUFBSSxLQUFJLENBQUMsVUFBVSxDQUFDLE1BQU0sSUFBSSxDQUFDLEVBQUU7NEJBQzdELCtCQUErQjt5QkFDbEM7NkJBQ0k7NEJBQ0QsSUFBSSxLQUFJLENBQUMsVUFBVSxDQUFDLE1BQU0sSUFBSSxDQUFDLEVBQUU7Z0NBQzdCLG1DQUFtQztnQ0FDbkMsS0FBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxZQUFZLENBQUMsT0FBTyxDQUFDLENBQUMsU0FBUyxFQUFFLENBQUM7Z0NBQ3JELE9BQU87NkJBQ1Y7aUNBQ0ksSUFBSSxLQUFJLENBQUMsV0FBVyxDQUFDLE1BQU0sSUFBSSxDQUFDLEVBQUU7Z0NBQ25DLG1DQUFtQztnQ0FDbkMsS0FBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxZQUFZLENBQUMsT0FBTyxDQUFDLENBQUMsU0FBUyxFQUFFLENBQUM7Z0NBQ3RELE9BQU87NkJBQ1Y7eUJBQ0o7b0JBQ0wsQ0FBQyxFQUFFLEdBQUcsR0FBRyxJQUFJLENBQUMsQ0FBQztpQkFDbEI7cUJBQ0k7b0JBQ0QsSUFBSSxPQUFLLEdBQUcsQ0FBQyxDQUFDO29CQUNkLElBQUksSUFBSSxDQUFDLFVBQVUsQ0FBQyxNQUFNLElBQUksQ0FBQyxFQUFFO3dCQUM3QixLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxFQUFFLEVBQUU7NEJBQzdDLGtDQUFrQzs0QkFDbEMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxZQUFZLENBQUMsT0FBTyxDQUFDLENBQUMsU0FBUyxFQUFFLENBQUM7NEJBQ3JELE9BQUssSUFBSSxDQUFDLENBQUM7NEJBQ1gsSUFBSSxPQUFLLElBQUksQ0FBQyxFQUFFO2dDQUNaLE1BQU07NkJBQ1Q7eUJBQ0o7cUJBQ0o7b0JBRUQsVUFBVSxDQUFDO3dCQUNQLElBQUksT0FBSyxJQUFJLENBQUMsRUFBRTs0QkFDWixLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsS0FBSSxDQUFDLFdBQVcsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxFQUFFLEVBQUU7Z0NBQzlDLGtDQUFrQztnQ0FDbEMseURBQXlEO2dDQUN6RCxPQUFLLElBQUksQ0FBQyxDQUFDO2dDQUNYLElBQUksT0FBSyxJQUFJLENBQUMsRUFBRTtvQ0FDWixNQUFNO2lDQUNUOzZCQUNKO3lCQUNKO29CQUNMLENBQUMsRUFBRSxHQUFHLENBQUMsQ0FBQztpQkFDWDthQUNKO1NBQ0o7SUFDTCxDQUFDO0lBRUQsUUFBUTtJQUNSLDhCQUFRLEdBQVI7UUFDSSxJQUFJLElBQUksQ0FBQyxLQUFLLEVBQUU7WUFDWixJQUFJLENBQUMsS0FBSyxHQUFHLEtBQUssQ0FBQztTQUN0QjthQUNJO1lBQ0QsSUFBSSxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUM7U0FDckI7SUFDTCxDQUFDO0lBSUQsWUFBWTtJQUNaLGdDQUFVLEdBQVY7UUFDSSxJQUFJLEtBQUssR0FBRyxDQUFDLENBQUM7UUFDZCxJQUFJLElBQUksQ0FBQyxRQUFRLEdBQUcsRUFBRSxFQUFFO1lBQ3BCLEtBQUssR0FBRyxHQUFHLENBQUM7U0FDZjthQUNJLElBQUksSUFBSSxDQUFDLFFBQVEsR0FBRyxFQUFFLEVBQUU7WUFDekIsS0FBSyxHQUFHLElBQUksR0FBRyxDQUFDLElBQUksQ0FBQyxRQUFRLEdBQUcsRUFBRSxDQUFDLEdBQUcsSUFBSSxDQUFDO1NBQzlDO1FBRUQsSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLEdBQUcsR0FBRyxHQUFHLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsR0FBRyxLQUFLLENBQUM7UUFFcEQsSUFBSSxJQUFJLENBQUMsUUFBUSxJQUFJLENBQUMsSUFBSSxJQUFJLENBQUMsU0FBUyxHQUFHLEVBQUUsRUFBRTtZQUMzQyxJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssR0FBRyxDQUFDLENBQUM7U0FDdkI7UUFFRCx1QkFBdUI7UUFDdkIsRUFBRSxDQUFDLEVBQUUsQ0FBQyxVQUFVLENBQUMsT0FBTyxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQztRQUNqRCx5QkFBeUI7UUFDekIsZ0NBQWdDO1FBQ2hDLHVCQUF1QjtJQUMzQixDQUFDO0lBRUQsVUFBVTtJQUNWLG9DQUFjLEdBQWQsVUFBZSxLQUFLLEVBQUUsRUFBRTtRQUNwQixJQUFJLFFBQVEsR0FBRyxFQUFFLENBQUMsV0FBVyxDQUFDLGFBQVcsQ0FBQyxTQUFTLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDbkUsUUFBUSxDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDO1FBQzVCLFFBQVEsQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFDO1FBQ3ZCLElBQUksS0FBSyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLEtBQUssR0FBRyxHQUFHLENBQUMsQ0FBQztRQUMxQyxJQUFJLE1BQU0sR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxNQUFNLEdBQUcsR0FBRyxDQUFDLENBQUM7UUFDNUMsSUFBSSxJQUFJLEdBQUcsRUFBRSxDQUFDO1FBRWQsSUFBSSxFQUFFLElBQUksQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLEVBQUU7WUFDcEIsSUFBSSxDQUFDLEdBQUcsS0FBSyxDQUFDLENBQUMsR0FBRyxLQUFLLENBQUMsTUFBTSxDQUFDO1lBQy9CLElBQUksQ0FBQyxHQUFHLEtBQUssQ0FBQyxDQUFDLEdBQUcsS0FBSyxDQUFDLEtBQUssR0FBRyxDQUFDLENBQUM7WUFDbEMsSUFBSSxHQUFHLE1BQU0sR0FBRyxLQUFLLEdBQUcsR0FBRyxHQUFHLE1BQU0sQ0FBQztZQUNyQyxJQUFJLEVBQUUsSUFBSSxDQUFDLEVBQUU7Z0JBQ1QsSUFBSSxHQUFHLE1BQU0sR0FBRyxLQUFLLEdBQUcsR0FBRyxHQUFHLE1BQU0sQ0FBQztnQkFDckMsQ0FBQyxHQUFHLEtBQUssQ0FBQyxDQUFDLENBQUM7YUFDZjtZQUNELElBQUksS0FBSyxDQUFDLE9BQU8sSUFBSSxHQUFHLEVBQUU7Z0JBQ3RCLENBQUMsR0FBRyxLQUFLLENBQUMsQ0FBQyxDQUFDO2FBQ2Y7aUJBQ0ksSUFBSSxLQUFLLENBQUMsT0FBTyxJQUFJLElBQUksRUFBRTtnQkFDNUIsQ0FBQyxHQUFHLEtBQUssQ0FBQyxDQUFDLEdBQUcsS0FBSyxDQUFDLEtBQUssR0FBRyxDQUFDLEdBQUcsR0FBRyxJQUFJLENBQUMsQ0FBQzthQUM1QztpQkFDSSxJQUFJLEtBQUssQ0FBQyxPQUFPLElBQUksSUFBSSxFQUFFO2dCQUM1QixDQUFDLEdBQUcsS0FBSyxDQUFDLENBQUMsR0FBRyxLQUFLLENBQUMsS0FBSyxHQUFHLENBQUMsR0FBRyxHQUFHLElBQUksQ0FBQyxDQUFDO2FBQzVDO1lBQ0QsUUFBUSxDQUFDLFdBQVcsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7U0FDOUI7YUFDSSxJQUFJLEVBQUUsSUFBSSxDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsRUFBRTtZQUN6QixJQUFJLEdBQUcsT0FBTyxHQUFHLE1BQU0sR0FBRyxHQUFHLEdBQUcsS0FBSyxDQUFDO1lBQ3RDLElBQUksQ0FBQyxHQUFHLEtBQUssQ0FBQyxDQUFDLEdBQUcsS0FBSyxDQUFDLEtBQUssQ0FBQztZQUM5QixJQUFJLENBQUMsR0FBRyxLQUFLLENBQUMsQ0FBQyxHQUFHLEtBQUssQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDO1lBQ25DLElBQUksS0FBSyxDQUFDLE9BQU8sSUFBSSxHQUFHLEVBQUU7Z0JBQ3RCLENBQUMsR0FBRyxLQUFLLENBQUMsQ0FBQyxHQUFHLEtBQUssQ0FBQyxLQUFLLEdBQUcsQ0FBQyxDQUFDO2FBQ2pDO2lCQUNJLElBQUksS0FBSyxDQUFDLE9BQU8sSUFBSSxJQUFJLEVBQUU7Z0JBQzVCLENBQUMsR0FBRyxLQUFLLENBQUMsQ0FBQyxHQUFHLEtBQUssQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDO2FBQ3BDO2lCQUNJLElBQUksS0FBSyxDQUFDLE9BQU8sSUFBSSxJQUFJLEVBQUU7Z0JBQzVCLENBQUMsR0FBRyxLQUFLLENBQUMsQ0FBQyxHQUFHLEtBQUssQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDO2FBQ3BDO1lBQ0QsSUFBSSxFQUFFLElBQUksQ0FBQyxFQUFFO2dCQUNULElBQUksR0FBRyxRQUFRLEdBQUcsTUFBTSxHQUFHLEdBQUcsR0FBRyxLQUFLLENBQUM7Z0JBQ3ZDLENBQUMsR0FBRyxLQUFLLENBQUMsQ0FBQyxDQUFDO2dCQUNaLElBQUksS0FBSyxDQUFDLE9BQU8sSUFBSSxHQUFHLEVBQUU7b0JBQ3RCLENBQUMsR0FBRyxLQUFLLENBQUMsQ0FBQyxHQUFHLEtBQUssQ0FBQyxLQUFLLEdBQUcsQ0FBQyxDQUFDO2lCQUNqQztxQkFDSSxJQUFJLEtBQUssQ0FBQyxPQUFPLElBQUksSUFBSSxFQUFFO29CQUM1QixDQUFDLEdBQUcsS0FBSyxDQUFDLENBQUMsR0FBRyxLQUFLLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQztpQkFDcEM7cUJBQ0ksSUFBSSxLQUFLLENBQUMsT0FBTyxJQUFJLElBQUksRUFBRTtvQkFDNUIsQ0FBQyxHQUFHLEtBQUssQ0FBQyxDQUFDLEdBQUcsS0FBSyxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUM7aUJBQ3BDO2FBQ0o7WUFFRCxRQUFRLENBQUMsV0FBVyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztTQUM5QjtRQUVELElBQUksWUFBWSxHQUFHLFFBQVEsQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDakQsSUFBSSxLQUFLLEdBQUcsS0FBSyxDQUFDLFlBQVksQ0FBQyxPQUFPLENBQUMsQ0FBQyxLQUFLLEdBQUcsQ0FBQyxDQUFDO1FBRWxELFlBQVksQ0FBQyxZQUFZLENBQUMsRUFBRSxDQUFDLGNBQWMsQ0FBQyxDQUFDLFdBQVcsR0FBRyxRQUFRLENBQUMsWUFBWSxDQUFDLFFBQVEsQ0FBQyxDQUFDLFdBQVcsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUM5RyxZQUFZLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQztRQUMzQixVQUFVLENBQUM7WUFDUCxFQUFFLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQztpQkFDYixFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsT0FBTyxFQUFFLENBQUMsRUFBRSxDQUFDO2lCQUNyQixJQUFJLENBQUM7Z0JBQ0YsUUFBUSxDQUFDLE9BQU8sRUFBRSxDQUFDO1lBQ3ZCLENBQUMsQ0FBQztpQkFDRCxLQUFLLEVBQUUsQ0FBQztRQUNqQixDQUFDLEVBQUUsSUFBSSxDQUFDLENBQUM7SUFDYixDQUFDO0lBRUQsb0NBQWMsR0FBZDtRQUNJLFNBQVM7UUFDVCxLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxNQUFNLEVBQUUsQ0FBQyxFQUFFLEVBQUU7WUFDekMsSUFBSSxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sSUFBSSxDQUFDLEVBQUU7Z0JBQzdCLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxFQUFFLENBQUM7Z0JBQ3pCLElBQUksQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQzthQUM1QjtTQUNKO0lBQ0wsQ0FBQztJQUlELDRCQUFNLEdBQU4sVUFBTyxFQUFFO0lBRVQsQ0FBQzs7SUE3OUREO1FBREMsUUFBUSxDQUFDLEVBQUUsSUFBSSxFQUFFLENBQUMsRUFBRSxDQUFDLE1BQU0sQ0FBQyxFQUFFLE9BQU8sRUFBRSxNQUFNLEVBQUUsQ0FBQztvREFDZDtJQUduQztRQURDLFFBQVEsQ0FBQyxFQUFFLElBQUksRUFBRSxDQUFDLEVBQUUsQ0FBQyxNQUFNLENBQUMsRUFBRSxPQUFPLEVBQUUsUUFBUSxFQUFFLENBQUM7bURBQ2pCO0lBR2xDO1FBREMsUUFBUSxDQUFDLEVBQUUsQ0FBQyxNQUFNLENBQUM7dURBQ2E7SUFHakM7UUFEQyxRQUFRLENBQUMsRUFBRSxJQUFJLEVBQUUsQ0FBQyxFQUFFLENBQUMsV0FBVyxDQUFDLEVBQUUsT0FBTyxFQUFFLE1BQU0sRUFBRSxDQUFDO29EQUNkO0lBSXhDO1FBREMsUUFBUSxDQUFDLEVBQUUsSUFBSSxFQUFFLENBQUMsRUFBRSxDQUFDLE1BQU0sQ0FBQyxFQUFFLE9BQU8sRUFBRSxNQUFNLEVBQUUsQ0FBQztvREFDZDtJQUtuQztRQURDLFFBQVEsQ0FBQyxFQUFFLENBQUMsTUFBTSxDQUFDO3VEQUNhO0lBR2pDO1FBREMsUUFBUSxDQUFDLEVBQUUsQ0FBQyxNQUFNLENBQUM7Z0RBQ007SUFFMUI7UUFEQyxRQUFRLENBQUMsRUFBRSxDQUFDLE1BQU0sQ0FBQzttREFDUztJQUU3QjtRQURDLFFBQVEsQ0FBQyxFQUFFLENBQUMsTUFBTSxDQUFDO2lEQUNPO0lBRzNCO1FBREMsUUFBUSxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUM7NkNBQ0c7SUFHckI7UUFEQyxRQUFRLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQztpREFDTztJQUUxQjtRQURDLFFBQVEsQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDO29EQUNVO0lBRTdCO1FBREMsUUFBUSxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUM7bURBQ1M7SUFHNUI7UUFEQyxRQUFRLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQztrREFDUTtJQUcxQjtRQURDLFFBQVEsQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDO21EQUNTO0lBRzNCO1FBREMsUUFBUSxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUM7bURBQ1M7SUFJM0I7UUFEQyxRQUFRLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQztnREFDTTtJQXJEUCxXQUFXO1FBRC9CLE9BQU87T0FDYSxXQUFXLENBbStEL0I7SUFBRCxrQkFBQztDQW4rREQsQUFtK0RDLENBbitEd0MsRUFBRSxDQUFDLFNBQVMsR0FtK0RwRDtrQkFuK0RvQixXQUFXIiwiZmlsZSI6IiIsInNvdXJjZVJvb3QiOiIvIiwic291cmNlc0NvbnRlbnQiOlsiLy8gTGVhcm4gVHlwZVNjcmlwdDpcclxuLy8gIC0gaHR0cHM6Ly9kb2NzLmNvY29zLmNvbS9jcmVhdG9yL21hbnVhbC9lbi9zY3JpcHRpbmcvdHlwZXNjcmlwdC5odG1sXHJcbi8vIExlYXJuIEF0dHJpYnV0ZTpcclxuLy8gIC0gaHR0cHM6Ly9kb2NzLmNvY29zLmNvbS9jcmVhdG9yL21hbnVhbC9lbi9zY3JpcHRpbmcvcmVmZXJlbmNlL2F0dHJpYnV0ZXMuaHRtbFxyXG4vLyBMZWFybiBsaWZlLWN5Y2xlIGNhbGxiYWNrczpcclxuLy8gIC0gaHR0cHM6Ly9kb2NzLmNvY29zLmNvbS9jcmVhdG9yL21hbnVhbC9lbi9zY3JpcHRpbmcvbGlmZS1jeWNsZS1jYWxsYmFja3MuaHRtbFxyXG5cclxuaW1wb3J0IEdhbWVNYW5hZ2VyIGZyb20gXCIuL0dhbWVNYW5hZ2VyXCI7XHJcbmltcG9ydCB7IExRQ29sbGlkZSB9IGZyb20gXCIuL2xxX2NvbGxpZGVfc3lzdGVtL2xxX2NvbGxpZGVcIjtcclxuaW1wb3J0IE51bWJlclRvSW1hZ2UgZnJvbSBcIi4vTnVtYmVyVG9JbWFnZVwiO1xyXG5pbXBvcnQgeyBNaW5pR2FtZVNkayB9IGZyb20gXCIuL1Nkay9NaW5pR2FtZVNka1wiO1xyXG5cclxuY29uc3QgeyBjY2NsYXNzLCBwcm9wZXJ0eSB9ID0gY2MuX2RlY29yYXRvcjtcclxuXHJcblxyXG5cclxuQGNjY2xhc3NcclxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgTWFwQ29ucm9sZXIgZXh0ZW5kcyBjYy5Db21wb25lbnQge1xyXG4gICAgc3RhdGljIF9pbnN0YW5jZTogYW55O1xyXG5cclxuXHJcbiAgICBAcHJvcGVydHkoeyB0eXBlOiBbY2MuUHJlZmFiXSwgdG9vbHRpcDogXCLmlrnlnZfmlbDnu4RcIiB9KVxyXG4gICAgQmxvY2tfQXJyYXk6IEFycmF5PGNjLlByZWZhYj4gPSBbXTtcclxuXHJcbiAgICBAcHJvcGVydHkoeyB0eXBlOiBbY2MuUHJlZmFiXSwgdG9vbHRpcDogXCLmlrnlnZfpgZPlhbfmlbDnu4RcIiB9KVxyXG4gICAgQmxvY2tfUHJvcDogQXJyYXk8Y2MuUHJlZmFiPiA9IFtdO1xyXG5cclxuICAgIEBwcm9wZXJ0eShjYy5QcmVmYWIpXHJcbiAgICBNYXBCbG9ja1ByZWZhYjogY2MuUHJlZmFiID0gbnVsbDtcclxuXHJcbiAgICBAcHJvcGVydHkoeyB0eXBlOiBbY2MuU3ByaXRlQXRsYXNdLCB0b29sdGlwOiBcIuaWueWdl+minOiJslwiIH0pXHJcbiAgICBCbG9ja19Db2xvcjogQXJyYXk8Y2MuU3ByaXRlQXRsYXM+ID0gW107XHJcblxyXG5cclxuICAgIEBwcm9wZXJ0eSh7IHR5cGU6IFtjYy5QcmVmYWJdLCB0b29sdGlwOiBcIuWimeWjgeaVsOe7hFwiIH0pXHJcbiAgICBXYWxsX1ByZWZhYjogQXJyYXk8Y2MuUHJlZmFiPiA9IFtdO1xyXG5cclxuXHJcblxyXG4gICAgQHByb3BlcnR5KGNjLlByZWZhYilcclxuICAgIHdhbGxUdXJuUHJlZmFiOiBjYy5QcmVmYWIgPSBudWxsO1xyXG5cclxuICAgIEBwcm9wZXJ0eShjYy5CdXR0b24pXHJcbiAgICB0aW1lQnRuOiBjYy5CdXR0b24gPSBudWxsO1xyXG4gICAgQHByb3BlcnR5KGNjLkJ1dHRvbilcclxuICAgIGRlc3Ryb3lCdG46IGNjLkJ1dHRvbiA9IG51bGw7XHJcbiAgICBAcHJvcGVydHkoY2MuQnV0dG9uKVxyXG4gICAgbWFnaWNCdG46IGNjLkJ1dHRvbiA9IG51bGw7XHJcblxyXG4gICAgQHByb3BlcnR5KGNjLk5vZGUpXHJcbiAgICBtYXNrOiBjYy5Ob2RlID0gbnVsbDtcclxuXHJcbiAgICBAcHJvcGVydHkoY2MuTGFiZWwpXHJcbiAgICBpY2VMYWJlbDogY2MuTGFiZWwgPSBudWxsO1xyXG4gICAgQHByb3BlcnR5KGNjLkxhYmVsKVxyXG4gICAgaGFtbWVyTGFiZWw6IGNjLkxhYmVsID0gbnVsbDtcclxuICAgIEBwcm9wZXJ0eShjYy5MYWJlbClcclxuICAgIG1hZ2ljTGFiZWw6IGNjLkxhYmVsID0gbnVsbDtcclxuXHJcbiAgICBAcHJvcGVydHkoY2MuTm9kZSlcclxuICAgIG1hZ2ljTWFzazogY2MuTm9kZSA9IG51bGw7XHJcblxyXG4gICAgQHByb3BlcnR5KGNjLk5vZGUpXHJcbiAgICBoYW1tZXJNYXNrOiBjYy5Ob2RlID0gbnVsbDtcclxuXHJcbiAgICBAcHJvcGVydHkoY2MuTm9kZSlcclxuICAgIGZyZWV6ZU1hc2s6IGNjLk5vZGUgPSBudWxsO1xyXG5cclxuXHJcbiAgICBAcHJvcGVydHkoY2MuTm9kZSlcclxuICAgIGNvaW5Qb3A6IGNjLk5vZGUgPSBudWxsO1xyXG5cclxuICAgIHRpbWVMYWJlbDogY2MuTm9kZSA9IG51bGw7XHJcbiAgICBsZXZlbExhYmVsOiBjYy5Ob2RlID0gbnVsbDtcclxuXHJcbiAgICBuZXdfbW9kZTogbnVtYmVyID0gMDtcclxuICAgIG1hcFdpZHRoOiBudW1iZXIgPSAwO1xyXG4gICAgbWFwSGVpZ2h0OiBudW1iZXIgPSAwO1xyXG4gICAgd2FsbE51bTogbnVtYmVyID0gMDtcclxuICAgIGJsb2NrTnVtOiBudW1iZXIgPSAwO1xyXG4gICAgbWFwQmxvY2tzV2FsbDogYW55OyAgICAgIC8v5Zyw5Zu+55qE5omA5pyJ5bqV5Z2XXHJcbiAgICBtYXBJbmZvOiBhbnk7ICAgICAgIC8v5Zyw5Zu+6Zmk5LqG5bqV5Z2X55qE5YW25LuW5L+h5oGvXHJcbiAgICBibG9ja3M6IGFueTsgICAgICAgIC8v5pa55Z2X5pWw57uEXHJcbiAgICB3YWxsSW5mbzogYW55OyAgICAgIC8v5aKZ5aOB5pWw57uEXHJcbiAgICB3YWxsQXJyYXk6IGFueTsgICAgICAvL1xyXG4gICAgb3BlbldhbGw6IGFueTsgICAgICAvL+W8gOWFs+WimeaVsOe7hFxyXG4gICAgZnJlZXplV2FsbDogYW55OyAgICAvL+WGu+e7k+WimeaVsOe7hFxyXG4gICAgcmlzZUZhbGxCbGNvazogYW55OyAgLy/ljYfpmY3lnLDlnZfmlbDnu4RcclxuICAgIHNjaGVkdWxlQ2FsbGJhY2s6IGFueTsvL+WAkuiuoeaXtueUqFxyXG4gICAgaG9tZUNhblRvdWNoOiBib29sZWFuID0gdHJ1ZTsvL+aMiemSruWPr+eUqOeKtuaAgVxyXG4gICAgYWdhaW5DYW5Ub3VjaDogYm9vbGVhbiA9IHRydWU7Ly/ph43njqnmjInpkq7lj6/ku6XnlKjnirbmgIFcclxuICAgIGdhbWVPdmVyOiBib29sZWFuID0gZmFsc2U7Ly/muLjmiI/nu5PmnZ/nirbmgIFcclxuICAgIGdhbWVXaW46IGJvb2xlYW4gPSBmYWxzZTsvL+a4uOaIj+iDnOWIqeeKtuaAgVxyXG4gICAgZ2FtZVN0YXJ0OiBib29sZWFuID0gZmFsc2U7Ly/muLjmiI/lvIDlp4vnirbmgIFcclxuICAgIHRpbWVOdW1iZXI6IG51bWJlciA9IDA7IC8v5ri45oiP5pe26Ze0IOeUqOS6juWAkuiuoeaXtlxyXG4gICAgY291bnRfVGltZTogbnVtYmVyID0gMDsgLy/nlKjkuo7nu5/orqHmgLvmuLjmiI/ml7bplb9cclxuICAgIGFkZF9UaW1lOiBudW1iZXIgPSAwOyAgIC8v5aSN5rS75pe26Ze0XHJcbiAgICBtYXBCbG9ja0FycmF5OiBhbnk7ICAvL+WcsOWbvueahOaJgOacieagvOWtkOeKtuaAgeWtmOWCqFxyXG4gICAgcGF1c2U6IGJvb2xlYW4gPSBmYWxzZTsvL+aaguWBnOeKtuaAgVxyXG4gICAgaGFtbWVyOiBib29sZWFuID0gZmFsc2U7Ly/plKTlrZDnirbmgIFcclxuICAgIGZyZWV6ZUFycmF5OiBhbnk7IC8v5Ya757uTXHJcbiAgICBsb2Fja0FycmF5OiBhbnk7IC8v5LiK6ZSBXHJcbiAgICBwYXJ0aWNsZUVmZmVjdHM6IGNjLlBhcnRpY2xlQXNzZXRbXTtcclxuICAgIC8vIGxlZnREb29yczogW107IC8v5bem6ZeoXHJcbiAgICByaWdodERvb3JzOiBhbnk7IC8v5Y+z6ZeoXHJcbiAgICB0b3BEb29yczogYW55OyAvL+S4iumXqFxyXG4gICAgYm90dG9tRG9vcnM6IGFueTsgLy/kuIvpl6hcclxuICAgIGxlZnREb29yczogYW55O1xyXG5cclxuXHJcbiAgICAvLyBtYXBJbmZvOiBudW1iZXJbXVtdID0gW107XHJcblxyXG4gICAgb25Mb2FkKCkge1xyXG5cclxuICAgICAgICBjYy5meC5HYW1lQ29uZmlnLkdNX0lORk8ucmV2aWV3ID0gMDtcclxuICAgICAgICBjYy5meC5HYW1lQ29uZmlnLkdNX0lORk8uZ2FtZVN0YXRlID0gdHJ1ZTtcclxuICAgICAgICB0aGlzLm1hc2sub3BhY2l0eSA9IDA7XHJcbiAgICAgICAgdGhpcy5ub2RlLmdldENoaWxkQnlOYW1lKFwiQWRoZXNpdmVcIikuekluZGV4ID0gNTAwO1xyXG4gICAgICAgIGNjLmdhbWUuc2V0RnJhbWVSYXRlKDYzKTtcclxuICAgICAgICBjYy5meC5BdWRpb01hbmFnZXIuX2luc3RhbmNlLnBsYXlFZmZlY3QoXCJ6aHVhbjJcIiwgbnVsbCk7XHJcbiAgICAgICAgdGhpcy5ub2RlLnBhcmVudC5wYXJlbnQucGFyZW50LmdldENoaWxkQnlOYW1lKFwiemh1YW5jaGFuZ1wiKS5hY3RpdmUgPSB0cnVlO1xyXG4gICAgICAgIHRoaXMubm9kZS5wYXJlbnQucGFyZW50LnBhcmVudC5nZXRDaGlsZEJ5TmFtZShcInpodWFuY2hhbmdcIikuZ2V0Q29tcG9uZW50KHNwLlNrZWxldG9uKS5zZXRBbmltYXRpb24oMSwgXCJkb3duXCIsIGZhbHNlKTtcclxuICAgICAgICB0aGlzLm5vZGUucGFyZW50LnBhcmVudC5wYXJlbnQuZ2V0Q2hpbGRCeU5hbWUoXCJ6aHVhbmNoYW5nXCIpLmdldENvbXBvbmVudChzcC5Ta2VsZXRvbikuc2V0Q29tcGxldGVMaXN0ZW5lcigoZW50cnkpID0+IHtcclxuICAgICAgICAgICAgaWYgKGVudHJ5LmFuaW1hdGlvbi5uYW1lID09PSBcImRvd25cIikge1xyXG4gICAgICAgICAgICAgICAgLy8g5Yqo55S75pKt5pS+57uT5p2f5ZCO5omn6KGM55qE6YC76L6RXHJcbiAgICAgICAgICAgICAgICB0aGlzLm5vZGUucGFyZW50LnBhcmVudC5wYXJlbnQuZ2V0Q2hpbGRCeU5hbWUoXCJ6aHVhbmNoYW5nXCIpLmFjdGl2ZSA9IGZhbHNlO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfSk7XHJcbiAgICAgICAgdGhpcy5ibG9ja3MgPSBbXTtcclxuICAgICAgICB0aGlzLmxlZnREb29ycyA9IFtdOyAvL+W3pumXqFxyXG4gICAgICAgIHRoaXMucmlnaHREb29ycyA9IFtdOyAvL+WPs+mXqFxyXG4gICAgICAgIHRoaXMudG9wRG9vcnMgPSBbXTsgLy/kuIrpl6hcclxuICAgICAgICB0aGlzLmJvdHRvbURvb3JzID0gW107IC8v5LiL6ZeoXHJcbiAgICAgICAgdGhpcy5nYW1lV2luID0gZmFsc2U7XHJcbiAgICAgICAgdGhpcy5nYW1lT3ZlciA9IGZhbHNlO1xyXG4gICAgICAgIHRoaXMuZ2FtZVN0YXJ0ID0gZmFsc2U7XHJcbiAgICAgICAgdGhpcy5ob21lQ2FuVG91Y2ggPSB0cnVlO1xyXG4gICAgICAgIHRoaXMuYWdhaW5DYW5Ub3VjaCA9IHRydWU7XHJcbiAgICAgICAgdGhpcy5uZXdfbW9kZSA9IDA7XHJcblxyXG4gICAgICAgIHRoaXMuaWNlTGFiZWwuc3RyaW5nID0gY2MuZnguR2FtZUNvbmZpZy5HTV9JTkZPLmZyZWV6ZUFtb3VudC50b1N0cmluZygpO1xyXG4gICAgICAgIHRoaXMuaGFtbWVyTGFiZWwuc3RyaW5nID0gY2MuZnguR2FtZUNvbmZpZy5HTV9JTkZPLmhhbW1lckFtb3VudC50b1N0cmluZygpO1xyXG4gICAgICAgIHRoaXMubWFnaWNMYWJlbC5zdHJpbmcgPSBjYy5meC5HYW1lQ29uZmlnLkdNX0lORk8ubWFnaWNBbW91bnQudG9TdHJpbmcoKTtcclxuXHJcbiAgICAgICAgLy8gY2MuZ2FtZS5hZGRQZXJzaXN0Um9vdE5vZGUodGhpcy5ub2RlKTtcclxuICAgICAgICBNYXBDb25yb2xlci5faW5zdGFuY2UgPSB0aGlzO1xyXG4gICAgfVxyXG5cclxuICAgIHN0YXJ0KCkge1xyXG4gICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICAgICAgICBjYy5kaXJlY3Rvci5wcmVsb2FkU2NlbmUoXCJIb21lU2NlbmVcIiwgKGVyciwgYXNzZXQpID0+IHtcclxuICAgICAgICAgICAgICAgIGlmIChlcnIpIHtcclxuICAgICAgICAgICAgICAgICAgICBjb25zb2xlLmVycm9yKCfliqjmgIHliqDovb0gSG9tZVNjZW5lIOWksei0pTonLCBlcnIpO1xyXG4gICAgICAgICAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgfSwgMTAwMCk7XHJcbiAgICAgICAgLy8gY29uc29sZS5sb2coXCLov5vlhaVHYW1lU2NlbmVcIik7XHJcbiAgICAgICAgdGhpcy5CbG9ja19BcnJheSA9IEdhbWVNYW5hZ2VyLl9pbnN0YW5jZS5CbG9ja19BcnJheTtcclxuICAgICAgICB0aGlzLldhbGxfUHJlZmFiID0gR2FtZU1hbmFnZXIuX2luc3RhbmNlLldhbGxfUHJlZmFiO1xyXG4gICAgICAgIHRoaXMuQmxvY2tfQ29sb3IgPSBHYW1lTWFuYWdlci5faW5zdGFuY2UuQmxvY2tfQ29sb3I7XHJcbiAgICAgICAgLy8gdGhpcy5wYXJ0aWNsZUVmZmVjdHMgPSBHYW1lTWFuYWdlci5faW5zdGFuY2UucGFydGljbGVFZmZlY3RzO1xyXG5cclxuICAgICAgICB0aGlzLmluaXRNYXAoKTtcclxuXHJcbiAgICB9XHJcblxyXG4gICAgc3RhcnRVcGRhdGUoKSB7XHJcbiAgICAgICAgaWYgKHRoaXMuZ2FtZVN0YXJ0ID09IGZhbHNlKSB7XHJcbiAgICAgICAgICAgIHRoaXMuZ2FtZVN0YXJ0ID0gdHJ1ZTtcclxuICAgICAgICAgICAgLy/lj5HpgIHmlbDmlbDkuovku7bigJTigJTov5vlhaXlhbPljaFcclxuICAgICAgICAgICAgY29uc29sZS5sb2coXCLlh4blpIfov5vlhaXkuIvkuIDlhbMs5Y+R6YCB5LiL5LiA5YWz6L+b5YWlXCIpO1xyXG4gICAgICAgICAgICBjYy5meC5HYW1lVG9vbC5zaHVzaHVfVHJhY2soXCJlbnRlcl9zdGFnZVwiKTtcclxuICAgICAgICAgICAgdGhpcy5zdGFydFRpbWVDdXREb3duKCk7XHJcbiAgICAgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdGhpcy5ibG9ja3MubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICAgICAgICAgIGlmICh0aGlzLmJsb2Nrc1tpXS5nZXRDb21wb25lbnQoXCJCbG9ja1wiKS50eXBlID09IDYpIHtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLmJsb2Nrc1tpXS5nZXRDaGlsZEJ5TmFtZShcImJvb21cIikuZ2V0Q29tcG9uZW50KFwiQm9vbVwiKS5zdGFydEJvb20oKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBpbml0TWFwKCkge1xyXG4gICAgICAgIC8vIHRoaXMubm9kZS5nZXRDaGlsZEJ5TmFtZShcIldhbGxcIikuekluZGV4ID0gMTA7XHJcbiAgICAgICAgdGhpcy50aW1lTGFiZWwgPSB0aGlzLm5vZGUucGFyZW50LmdldENoaWxkQnlOYW1lKFwiVG9wXCIpLmdldENoaWxkQnlOYW1lKFwidGltZVwiKTtcclxuICAgICAgICB0aGlzLmxldmVsTGFiZWwgPSB0aGlzLm5vZGUucGFyZW50LmdldENoaWxkQnlOYW1lKFwiVG9wXCIpLmdldENoaWxkQnlOYW1lKFwibGV2ZWxcIik7XHJcbiAgICAgICAgdGhpcy50aW1lTnVtYmVyID0gY2MuZnguR2FtZUNvbmZpZy5MRVZFTF9JTkZPWzBdLnRpbWU7XHJcbiAgICAgICAgdGhpcy5jb3VudF9UaW1lID0gMDtcclxuICAgICAgICB0aGlzLmFkZF9UaW1lID0gMDtcclxuICAgICAgICBOdW1iZXJUb0ltYWdlLmdldFRpbWVNYXJnaW4odGhpcy50aW1lTnVtYmVyLCA1MCwgXCJ0aW1lX1wiLCB0aGlzLnRpbWVMYWJlbClcclxuICAgICAgICAvLyB2YXIgdGltZVRlbXAgPSBjYy5meC5HYW1lVG9vbC5nZXRUaW1lTWFyZ2luKHRoaXMudGltZU51bWJlcik7XHJcbiAgICAgICAgLy8gdGhpcy50aW1lTGFiZWwuc3RyaW5nID0gdGltZVRlbXAudG9TdHJpbmcoKTtcclxuICAgICAgICBOdW1iZXJUb0ltYWdlLm51bWJlclRvSW1hZ2VOb2RlcygoY2MuZnguR2FtZUNvbmZpZy5HTV9JTkZPLmxldmVsICsgMSksIDUwLCAyMCwgXCJsZXZlbF9cIiwgdGhpcy5sZXZlbExhYmVsLCBmYWxzZSlcclxuXHJcbiAgICAgICAgLy90aGlzLnN0YXJ0VGltZUN1dERvd24oKTtcclxuXHJcbiAgICAgICAgdGhpcy5tYXBXaWR0aCA9IGNjLmZ4LkdhbWVDb25maWcuTEVWRUxfSU5GT1swXS5tYXBbMF07XHJcbiAgICAgICAgdGhpcy5tYXBIZWlnaHQgPSBjYy5meC5HYW1lQ29uZmlnLkxFVkVMX0lORk9bMF0ubWFwWzFdO1xyXG4gICAgICAgIGxldCBnYXAgPSBjYy5meC5HYW1lQ29uZmlnLkxFVkVMX0lORk9bMF0uZ2FwO1xyXG4gICAgICAgIGxldCByaXNlZmFsbCA9IGNjLmZ4LkdhbWVDb25maWcuTEVWRUxfSU5GT1swXS5yaXNlZmFsbDtcclxuXHJcbiAgICAgICAgdGhpcy5wYXVzZSA9IGZhbHNlO1xyXG4gICAgICAgIHRoaXMuaGFtbWVyID0gZmFsc2U7XHJcbiAgICAgICAgdGhpcy53YWxsTnVtID0gMDtcclxuICAgICAgICB0aGlzLnNldE1hcEluZm8oKTtcclxuICAgICAgICB0aGlzLmJsb2NrcyA9IFtdO1xyXG4gICAgICAgIHRoaXMubWFwQmxvY2tzV2FsbCA9IFtdO1xyXG4gICAgICAgIHRoaXMubWFwSW5mbyA9IFtdO1xyXG4gICAgICAgIHRoaXMud2FsbEluZm8gPSBbXTtcclxuICAgICAgICB0aGlzLm9wZW5XYWxsID0gW107XHJcbiAgICAgICAgdGhpcy53YWxsQXJyYXkgPSBbXTtcclxuICAgICAgICB0aGlzLmZyZWV6ZVdhbGwgPSBbXTtcclxuICAgICAgICB0aGlzLnJpc2VGYWxsQmxjb2sgPSBbXTtcclxuICAgICAgICB0aGlzLm1hcEJsb2NrQXJyYXkgPSBbXTtcclxuICAgICAgICB0aGlzLmZyZWV6ZUFycmF5ID0gW107XHJcbiAgICAgICAgdGhpcy5sb2Fja0FycmF5ID0gW107XHJcblxyXG5cclxuICAgICAgICBsZXQgc3RhcnRYID0gdGhpcy5tYXBXaWR0aCAlIDIgPT0gMCA/IC0odGhpcy5tYXBXaWR0aCAtIDEpICogNjAgOiAtKHRoaXMubWFwV2lkdGggLSAxKSAqIDYwO1xyXG4gICAgICAgIGxldCBzdGFydFkgPSB0aGlzLm1hcEhlaWdodCAlIDIgPT0gMCA/IC0odGhpcy5tYXBIZWlnaHQgLSAxKSAqIDYwIDogLSh0aGlzLm1hcEhlaWdodCAtIDEpICogNjA7XHJcbiAgICAgICAgLy8gc3RhcnRYID0odGhpcy5tYXBXaWR0aC0xKSo2MCArIDYwO1xyXG4gICAgICAgIC8vIHN0YXJ0WSA9LSh0aGlzLm1hcEhlaWdodC0xKSo2MCAtIDYwO1xyXG5cclxuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRoaXMubWFwV2lkdGg7IGkrKykge1xyXG4gICAgICAgICAgICB0aGlzLm1hcEJsb2Nrc1dhbGxbaV0gPSBbXTtcclxuXHJcbiAgICAgICAgICAgIGZvciAobGV0IGogPSAwOyBqIDwgdGhpcy5tYXBIZWlnaHQ7IGorKykge1xyXG4gICAgICAgICAgICAgICAgbGV0IGJsb2NrID0gY2MuaW5zdGFudGlhdGUodGhpcy5NYXBCbG9ja1ByZWZhYik7XHJcbiAgICAgICAgICAgICAgICBibG9jay5wYXJlbnQgPSB0aGlzLm5vZGUuZ2V0Q2hpbGRCeU5hbWUoXCJtYXBCbG9ja1wiKTtcclxuICAgICAgICAgICAgICAgIGJsb2NrLmdldENvbXBvbmVudChcIk1hcEJsb2NrXCIpLmluaXQoaSwgaik7XHJcbiAgICAgICAgICAgICAgICAvLyBibG9jay5nZXRDaGlsZEJ5TmFtZShcIm51bVwiKS5nZXRDb21wb25lbnQoY2MuTGFiZWwpLnN0cmluZyA9IGkgKyBcIjpcIiArIGo7XHJcbiAgICAgICAgICAgICAgICBibG9jay5zZXRQb3NpdGlvbihjYy52MihzdGFydFggKyBpICogMTIwLCBzdGFydFkgKyBqICogMTIwKSlcclxuICAgICAgICAgICAgICAgIGlmIChyaXNlZmFsbCAhPSBudWxsKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMubWFwUmlzZUZhbGwoY2MudjIoaSwgaiksIHJpc2VmYWxsLCBibG9jaykpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5yaXNlRmFsbEJsY29rLnB1c2goYmxvY2spO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIGlmIChnYXAgIT0gbnVsbCkge1xyXG4gICAgICAgICAgICAgICAgICAgIGlmICghdGhpcy5tYXBHYXAoY2MudjIoaSwgaiksIGdhcCkgfHwgaSA9PSAwIHx8IGkgPT0gdGhpcy5tYXBXaWR0aCAtIDFcclxuICAgICAgICAgICAgICAgICAgICAgICAgfHwgaiA9PSAwIHx8IGogPT0gdGhpcy5tYXBIZWlnaHQgLSAxKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGJsb2NrLm9wYWNpdHkgPSAyNTQ7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGJsb2NrLnJlbW92ZUNvbXBvbmVudChjYy5TcHJpdGUpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBibG9jay5yZW1vdmVBbGxDaGlsZHJlbigpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLndhbGxJbmZvLnB1c2goYmxvY2spO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICBlbHNlIHRoaXMubWFwSW5mby5wdXNoKGJsb2NrKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICAgIGlmIChpID09IDAgfHwgaSA9PSB0aGlzLm1hcFdpZHRoIC0gMVxyXG4gICAgICAgICAgICAgICAgICAgICAgICB8fCBqID09IDAgfHwgaiA9PSB0aGlzLm1hcEhlaWdodCAtIDEpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgYmxvY2sub3BhY2l0eSA9IDI1NDtcclxuICAgICAgICAgICAgICAgICAgICAgICAgYmxvY2sucmVtb3ZlQ29tcG9uZW50KGNjLlNwcml0ZSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGJsb2NrLnJlbW92ZUFsbENoaWxkcmVuKCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMud2FsbEluZm8ucHVzaChibG9jayk7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIGVsc2UgdGhpcy5tYXBJbmZvLnB1c2goYmxvY2spO1xyXG4gICAgICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgICAgIHRoaXMubWFwQmxvY2tzV2FsbFtpXS5wdXNoKGJsb2NrKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgdGhpcy53YWxsSW5pdCgpO1xyXG4gICAgICAgIHRoaXMuYmxvY2tJbml0KCk7XHJcblxyXG4gICAgfVxyXG5cclxuICAgIC8v5Yib5bu65pa55Z2XXHJcbiAgICAvLyAuLi4g5bey5pyJ5Luj56CBIC4uLlxyXG5cclxuICAgIC8v5Yib5bu65pa55Z2XXHJcbiAgICAvLyAuLi4g5bey5pyJ5Luj56CBIC4uLlxyXG5cclxuXHJcblxyXG5cclxuICAgIGJsb2NrSW5pdCgpIHtcclxuICAgICAgICBsZXQgYmxvY2tBcnJheSA9IGNjLmZ4LkdhbWVDb25maWcuQkxPQ0tfSU5GT1swXTtcclxuICAgICAgICBibG9ja0FycmF5ID0gdGhpcy5zb3J0QmxvY2soYmxvY2tBcnJheSk7XHJcbiAgICAgICAgY29uc29sZS5sb2coXCLliJvlu7rmlrnlnZdcIiwgYmxvY2tBcnJheSk7XHJcbiAgICAgICAgbGV0IGluZGV4ID0gMDsgLy8g5b2T5YmN6KaB5Yib5bu655qE5pa55Z2X57Si5byVXHJcbiAgICAgICAgbGV0IEJMT0NLU19QRVJfRlJBTUUgPSAxOyAvLyDliJ3lp4vmr4/luKfliJvlu7rnmoTmlrnlnZfmlbDph49cclxuICAgICAgICBjb25zdCBNQVhfUEVSX0ZSQU1FID0gMTA7IC8vIOavj+W4p+acgOWkp+WIm+W7uuaVsOmHj1xyXG4gICAgICAgIGNvbnN0IE1JTl9QRVJfRlJBTUUgPSAxOyAvLyDmr4/luKfmnIDlsI/liJvlu7rmlbDph49cclxuXHJcbiAgICAgICAgY29uc3QgY3JlYXRlQmxvY2tzID0gKCkgPT4ge1xyXG4gICAgICAgICAgICBjb25zdCBzdGFydFRpbWUgPSBwZXJmb3JtYW5jZS5ub3coKTtcclxuICAgICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBCTE9DS1NfUEVSX0ZSQU1FICYmIGluZGV4IDwgYmxvY2tBcnJheS5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgICAgICAgICAgbGV0IGJsb2NrSW5mbyA9IGJsb2NrQXJyYXlbaW5kZXhdO1xyXG4gICAgICAgICAgICAgICAgLy8g57yT5a2YIEJsb2NrX0FycmF5IOiuv+mXrlxyXG4gICAgICAgICAgICAgICAgY29uc3QgYmxvY2tQcmVmYWIgPSB0aGlzLkJsb2NrX0FycmF5W2Jsb2NrSW5mby5ibG9ja107XHJcbiAgICAgICAgICAgICAgICBsZXQgYmxvY2sgPSBjYy5pbnN0YW50aWF0ZShibG9ja1ByZWZhYik7XHJcbiAgICAgICAgICAgICAgICBibG9jay5wYXJlbnQgPSB0aGlzLm5vZGU7XHJcbiAgICAgICAgICAgICAgICBibG9jay5zZXRQb3NpdGlvbihjYy52MihibG9ja0luZm8ucG9zaXRpb24ueCwgYmxvY2tJbmZvLnBvc2l0aW9uLnkpKTtcclxuICAgICAgICAgICAgICAgIGlmIChibG9ja0luZm8uYmxvY2sgIT0gMjMpIHtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLmJsb2NrTnVtICs9IDE7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5ibG9ja3MucHVzaChibG9jayk7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKGJsb2NrSW5mby50eXBlID09IDEpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGluZm8gPSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZDogYmxvY2tJbmZvLmlkICsgMSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJsb2NrOiBibG9ja0luZm8uYmxvY2ssXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb2xvcjogYmxvY2tJbmZvLnN0YWNraW5nLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZTogMTAsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwb3NpdGlvbjogYmxvY2tJbmZvLnBvc2l0aW9uLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhY2tpbmc6IGJsb2NrSW5mby5jb2xvclxyXG4gICAgICAgICAgICAgICAgICAgICAgICB9O1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyDnvJPlrZggQmxvY2tfQXJyYXkg6K6/6ZeuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGJsb2NrVXBQcmVmYWIgPSB0aGlzLkJsb2NrX0FycmF5W2luZm8uYmxvY2tdO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBsZXQgYmxvY2tVcCA9IGNjLmluc3RhbnRpYXRlKGJsb2NrVXBQcmVmYWIpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBibG9ja1VwLnBhcmVudCA9IHRoaXMubm9kZTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgYmxvY2tVcC5zZXRQb3NpdGlvbihjYy52MihpbmZvLnBvc2l0aW9uLngsIGluZm8ucG9zaXRpb24ueSkpO1xyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5ibG9ja3MucHVzaChibG9ja1VwKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgYmxvY2suZ2V0Q29tcG9uZW50KFwiQmxvY2tcIikuaW5pdChibG9ja0luZm8sIG51bGwsIG51bGwsIGJsb2NrVXApO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBibG9ja1VwLmdldENvbXBvbmVudChcIkJsb2NrXCIpLmluaXQoaW5mbywgbnVsbCwgbnVsbCwgYmxvY2spO1xyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5ibG9ja051bSArPSAxO1xyXG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoYmxvY2tJbmZvLnR5cGUgPT0gOSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoYmxvY2tJbmZvLmFkaGVzaXZlVGltZSA8IDIpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluZGV4Kys7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICBpbmRleCsrO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBsZXQgaW5mbyA9IGJsb2NrQXJyYXlbaW5kZXhdO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyDnvJPlrZggQmxvY2tfQXJyYXkg6K6/6ZeuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGJsb2NrVXBQcmVmYWIgPSB0aGlzLkJsb2NrX0FycmF5W2luZm8uYmxvY2tdO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBsZXQgYmxvY2tVcCA9IGNjLmluc3RhbnRpYXRlKGJsb2NrVXBQcmVmYWIpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBibG9ja1VwLnBhcmVudCA9IHRoaXMubm9kZTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgYmxvY2tVcC5zZXRQb3NpdGlvbihjYy52MihpbmZvLnBvc2l0aW9uLngsIGluZm8ucG9zaXRpb24ueSkpO1xyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5ibG9ja3MucHVzaChibG9ja1VwKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgYmxvY2suZ2V0Q29tcG9uZW50KFwiQmxvY2tcIikuaW5pdChibG9ja0luZm8sIG51bGwsIG51bGwsIGJsb2NrVXAsIGZhbHNlKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBibG9ja1VwLmdldENvbXBvbmVudChcIkJsb2NrXCIpLmluaXQoaW5mbywgbnVsbCwgbnVsbCwgYmxvY2ssIHRydWUpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB9LCAxMDApO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmJsb2NrTnVtICs9IDE7XHJcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgYmxvY2suZ2V0Q29tcG9uZW50KFwiQmxvY2tcIikuaW5pdChibG9ja0luZm8pO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICAgIGJsb2NrLmdldENvbXBvbmVudChcIkJhcnJpZXJcIikuaW5pdChibG9ja0luZm8pO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgaW5kZXgrKztcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBjb25zdCBlbmRUaW1lID0gcGVyZm9ybWFuY2Uubm93KCk7XHJcbiAgICAgICAgICAgIGNvbnN0IGZyYW1lVGltZSA9IGVuZFRpbWUgLSBzdGFydFRpbWU7XHJcbiAgICAgICAgICAgIC8vIOWmguaenOW9k+WJjeW4p+aJp+ihjOaXtumXtOi/h+mVv++8jOWHj+Wwkeavj+W4p+WIm+W7uuaVsOmHj1xyXG4gICAgICAgICAgICBpZiAoZnJhbWVUaW1lID4gMTYpIHtcclxuICAgICAgICAgICAgICAgIEJMT0NLU19QRVJfRlJBTUUgPSBNYXRoLm1heChCTE9DS1NfUEVSX0ZSQU1FIC0gMSwgTUlOX1BFUl9GUkFNRSk7XHJcbiAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICBCTE9DS1NfUEVSX0ZSQU1FID0gTWF0aC5taW4oQkxPQ0tTX1BFUl9GUkFNRSArIDEsIE1BWF9QRVJfRlJBTUUpO1xyXG4gICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAvLyDlpoLmnpzov5jmnInmlrnlnZfmnKrliJvlu7rvvIzkuIvkuIDluKfnu6fnu63liJvlu7pcclxuICAgICAgICAgICAgaWYgKGluZGV4IDwgYmxvY2tBcnJheS5sZW5ndGgpIHtcclxuICAgICAgICAgICAgICAgIC8vIOS9v+eUqCBzY2hlZHVsZU9uY2Ug5Zyo5LiL5LiA5bin5omn6KGMIGNyZWF0ZUJsb2Nrc1xyXG4gICAgICAgICAgICAgICAgdGhpcy5zY2hlZHVsZU9uY2UoKCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgIGNyZWF0ZUJsb2NrcygpO1xyXG4gICAgICAgICAgICAgICAgfSwgMCk7XHJcbiAgICAgICAgICAgIH0gZWxzZSB7XHJcblxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfTtcclxuXHJcbiAgICAgICAgLy8g5byA5aeL5YiG5bin5Yib5bu65pa55Z2XXHJcbiAgICAgICAgY3JlYXRlQmxvY2tzKCk7XHJcbiAgICB9XHJcbiAgICAvL+e7meWIm+W7uuaWueWdl+aOkuW6j++8jOeUqOadpemZjeS9jmRyYXdjYWxsIOWQiOaJuVxyXG4gICAgc29ydEJsb2NrKGFsbEJsb2NrczogeyBjb2xvcjogbnVtYmVyOyBibG9jazogbnVtYmVyOyB0eXBlOiBudW1iZXIgfVtdKSB7XHJcbiAgICAgICAgcmV0dXJuIGFsbEJsb2Nrcy5zb3J0KChhLCBiKSA9PiB7XHJcbiAgICAgICAgICAgIC8vIOWFiOWkhOeQhiB0eXBlIOS4uiAxIOeahOaDheWGte+8jOWwhuWFtuaUvuWIsOacgOWQjlxyXG4gICAgICAgICAgICBpZiAoYS50eXBlID09PSAxICYmIGIudHlwZSAhPT0gMSkge1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIDE7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgaWYgKGEudHlwZSAhPT0gMSAmJiBiLnR5cGUgPT09IDEpIHtcclxuICAgICAgICAgICAgICAgIHJldHVybiAtMTtcclxuICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgLy8g5a+5IHR5cGUg5LiN5Li6IDAg55qE5YWD57Sg5oyJIHR5cGUg5o6S5bqPXHJcbiAgICAgICAgICAgIGlmIChhLnR5cGUgIT09IDAgJiYgYi50eXBlICE9PSAwKSB7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gYS50eXBlIC0gYi50eXBlO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGlmIChhLnR5cGUgIT09IDAgJiYgYi50eXBlID09PSAwKSB7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gMTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBpZiAoYS50eXBlID09PSAwICYmIGIudHlwZSAhPT0gMCkge1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIC0xO1xyXG4gICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAvLyDlho3lpITnkIYgYmxvY2sg5Li6IDIzIOeahOaDheWGte+8jOWwhuWFtuaUvuWIsOacgOWJjemdolxyXG4gICAgICAgICAgICBpZiAoYS5ibG9jayA9PT0gMjMgJiYgYi5ibG9jayAhPT0gMjMpIHtcclxuICAgICAgICAgICAgICAgIHJldHVybiAtMTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBpZiAoYS5ibG9jayAhPT0gMjMgJiYgYi5ibG9jayA9PT0gMjMpIHtcclxuICAgICAgICAgICAgICAgIHJldHVybiAxO1xyXG4gICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAvLyDlhbbkvZnmjIkgY29sb3Ig5Y2H5bqP5o6S5YiXXHJcbiAgICAgICAgICAgIHJldHVybiBhLmNvbG9yIC0gYi5jb2xvcjtcclxuICAgICAgICB9KTtcclxuICAgIH1cclxuXHJcblxyXG4gICAgLy/liJvlu7rlopnlo4FcclxuXHJcbiAgICB3YWxsSW5pdCgpIHtcclxuICAgICAgICBsZXQgaW5kZXggPSAwOyAvLyDlvZPliY3opoHliJvlu7rnmoTlopnlo4HntKLlvJVcclxuICAgICAgICBsZXQgV0FMTFNfUEVSX0ZSQU1FID0gMTsgLy8g5Yid5aeL5q+P5bin5Yib5bu655qE5aKZ5aOB5pWw6YePXHJcbiAgICAgICAgY29uc3QgTUFYX1BFUl9GUkFNRSA9IDEwOyAvLyDmr4/luKfmnIDlpKfliJvlu7rmlbDph49cclxuICAgICAgICBjb25zdCBNSU5fUEVSX0ZSQU1FID0gMTsgLy8g5q+P5bin5pyA5bCP5Yib5bu65pWw6YePXHJcblxyXG4gICAgICAgIGNvbnN0IGNyZWF0ZVdhbGxzID0gKCkgPT4ge1xyXG4gICAgICAgICAgICBjb25zdCBzdGFydFRpbWUgPSBwZXJmb3JtYW5jZS5ub3coKTtcclxuICAgICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBXQUxMU19QRVJfRlJBTUUgJiYgaW5kZXggPCB0aGlzLndhbGxJbmZvLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgICAgICAgICBsZXQgYmxvY2sgPSB0aGlzLndhbGxJbmZvW2luZGV4XTtcclxuICAgICAgICAgICAgICAgIGxldCBkaXIgPSB0aGlzLmdldFdsbERpcmFjdGlvbihcIndhbGxcIiwgY2MudjIoYmxvY2suZ2V0Q29tcG9uZW50KFwiTWFwQmxvY2tcIikucG9zWCwgYmxvY2suZ2V0Q29tcG9uZW50KFwiTWFwQmxvY2tcIikucG9zWSkpO1xyXG4gICAgICAgICAgICAgICAgaWYgKGRpciAhPSBudWxsKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5jcmVhdGVXYWxsKGRpciwgYmxvY2spO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgaW5kZXgrKztcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBjb25zdCBlbmRUaW1lID0gcGVyZm9ybWFuY2Uubm93KCk7XHJcbiAgICAgICAgICAgIGNvbnN0IGZyYW1lVGltZSA9IGVuZFRpbWUgLSBzdGFydFRpbWU7XHJcbiAgICAgICAgICAgIC8vIOWmguaenOW9k+WJjeW4p+aJp+ihjOaXtumXtOi/h+mVv++8jOWHj+Wwkeavj+W4p+WIm+W7uuaVsOmHj1xyXG4gICAgICAgICAgICBpZiAoZnJhbWVUaW1lID4gMTYpIHtcclxuICAgICAgICAgICAgICAgIFdBTExTX1BFUl9GUkFNRSA9IE1hdGgubWF4KFdBTExTX1BFUl9GUkFNRSAtIDEsIE1JTl9QRVJfRlJBTUUpO1xyXG4gICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgV0FMTFNfUEVSX0ZSQU1FID0gTWF0aC5taW4oV0FMTFNfUEVSX0ZSQU1FICsgMSwgTUFYX1BFUl9GUkFNRSk7XHJcbiAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgIC8vIOWmguaenOi/mOacieWimeWjgeacquWIm+W7uu+8jOS4i+S4gOW4p+e7p+e7reWIm+W7ulxyXG4gICAgICAgICAgICBpZiAoaW5kZXggPCB0aGlzLndhbGxJbmZvLmxlbmd0aCkge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5zY2hlZHVsZU9uY2UoKCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgIGNyZWF0ZVdhbGxzKCk7XHJcbiAgICAgICAgICAgICAgICB9LCAwKTtcclxuICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgIC8vIOaJgOacieWimeWjgeWIm+W7uuWujOaIkOWQju+8jOWIm+W7uuaLkOinkuiKgueCuVxyXG4gICAgICAgICAgICAgICAgdGhpcy5jcmVhdGVDb3JuZXJOb2RlcygpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfTtcclxuXHJcbiAgICAgICAgLy8g5byA5aeL5YiG5bin5Yib5bu65aKZ5aOBXHJcbiAgICAgICAgY3JlYXRlV2FsbHMoKTtcclxuICAgIH1cclxuXHJcbiAgICAvLyAuLi4g5bey5pyJ5Luj56CBIC4uLlxyXG5cclxuICAgIGdldFdsbERpcmFjdGlvbih0eXBlLCBwb2ludEEpIHtcclxuICAgICAgICBsZXQgZGlyID0gW107XHJcbiAgICAgICAgbGV0IHBvaW50QiA9IGNjLnYyKHBvaW50QS54ICsgMSwgcG9pbnRBLnkpO1xyXG4gICAgICAgIGxldCBwb2ludEMgPSBjYy52Mihwb2ludEEueCAtIDEsIHBvaW50QS55KTtcclxuICAgICAgICBsZXQgcG9pbnREID0gY2MudjIocG9pbnRBLngsIHBvaW50QS55ICsgMSk7XHJcbiAgICAgICAgbGV0IHBvaW50RSA9IGNjLnYyKHBvaW50QS54LCBwb2ludEEueSAtIDEpO1xyXG4gICAgICAgIGxldCBvcGFjaXR5ID0gMDtcclxuICAgICAgICBpZiAodHlwZSA9PSBcIndhbGxcIikgb3BhY2l0eSA9IDI1NTtcclxuICAgICAgICBpZiAodHlwZSA9PSBcInR1cm5cIikgb3BhY2l0eSA9IDI1MDtcclxuXHJcbiAgICAgICAgaWYgKHBvaW50Qi54IDwgdGhpcy5tYXBXaWR0aCkge1xyXG4gICAgICAgICAgICBpZiAodGhpcy5tYXBCbG9ja3NXYWxsW3BvaW50Qi54XVtwb2ludEIueV0ub3BhY2l0eSA9PSBvcGFjaXR5KSB7XHJcbiAgICAgICAgICAgICAgICBpZiAodHlwZSA9PSBcInR1cm5cIiAmJiB0aGlzLm1hcEJsb2Nrc1dhbGxbcG9pbnRCLnhdW3BvaW50Qi55XS5nZXRDb21wb25lbnQoXCJNYXBCbG9ja1wiKS5kaXJlY3Rpb24gPT0gXCJyaWdodFwiKSB7XHJcblxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgZWxzZSBkaXIucHVzaChcInJpZ2h0XCIpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmIChwb2ludEMueCA+PSAwKSB7XHJcbiAgICAgICAgICAgIGlmICh0aGlzLm1hcEJsb2Nrc1dhbGxbcG9pbnRDLnhdW3BvaW50Qy55XS5vcGFjaXR5ID09IG9wYWNpdHkpIHtcclxuICAgICAgICAgICAgICAgIGlmICh0eXBlID09IFwidHVyblwiICYmIHRoaXMubWFwQmxvY2tzV2FsbFtwb2ludEMueF1bcG9pbnRDLnldLmdldENvbXBvbmVudChcIk1hcEJsb2NrXCIpLmRpcmVjdGlvbiA9PSBcImxlZnRcIikge1xyXG5cclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIGVsc2UgZGlyLnB1c2goXCJsZWZ0XCIpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmIChwb2ludEQueSA8IHRoaXMubWFwSGVpZ2h0KSB7XHJcbiAgICAgICAgICAgIGlmICh0aGlzLm1hcEJsb2Nrc1dhbGxbcG9pbnRELnhdW3BvaW50RC55XS5vcGFjaXR5ID09IG9wYWNpdHkpIHtcclxuICAgICAgICAgICAgICAgIGlmICh0eXBlID09IFwidHVyblwiICYmIHRoaXMubWFwQmxvY2tzV2FsbFtwb2ludEQueF1bcG9pbnRELnldLmdldENvbXBvbmVudChcIk1hcEJsb2NrXCIpLmRpcmVjdGlvbiA9PSBcInVwXCIpIHtcclxuXHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBlbHNlIGRpci5wdXNoKFwidXBcIik7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKHBvaW50RS55ID49IDApIHtcclxuICAgICAgICAgICAgaWYgKHRoaXMubWFwQmxvY2tzV2FsbFtwb2ludEUueF1bcG9pbnRFLnldLm9wYWNpdHkgPT0gb3BhY2l0eSkge1xyXG4gICAgICAgICAgICAgICAgaWYgKHR5cGUgPT0gXCJ0dXJuXCIgJiYgdGhpcy5tYXBCbG9ja3NXYWxsW3BvaW50RS54XVtwb2ludEUueV0uZ2V0Q29tcG9uZW50KFwiTWFwQmxvY2tcIikuZGlyZWN0aW9uID09IFwiZG93blwiKSB7XHJcblxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgZWxzZSBkaXIucHVzaChcImRvd25cIik7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKGRpci5sZW5ndGggPiAyKSB7XHJcblxyXG4gICAgICAgICAgICByZXR1cm4gbnVsbDtcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKGRpci5sZW5ndGggPT0gMSkge1xyXG4gICAgICAgICAgICBpZiAodHlwZSA9PSBcIndhbGxcIilcclxuICAgICAgICAgICAgICAgIHJldHVybiBkaXJbMF07XHJcbiAgICAgICAgICAgIGVsc2VcclxuICAgICAgICAgICAgICAgIHJldHVybiBudWxsO1xyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIGlmIChkaXIubGVuZ3RoID09IDIpIHtcclxuICAgICAgICAgICAgcmV0dXJuIGRpclswXSArIGRpclsxXTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgY3JlYXRlQ29ybmVyTm9kZXMoKSB7XHJcbiAgICAgICAgLy8g5a6a5LmJ5ouQ6KeS5L2N572uXHJcbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0aGlzLndhbGxJbmZvLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgICAgIGxldCBibG9jayA9IHRoaXMud2FsbEluZm9baV07XHJcbiAgICAgICAgICAgIGlmIChibG9jay5vcGFjaXR5ICE9IDI1MCkge1xyXG4gICAgICAgICAgICAgICAgbGV0IGRpciA9IHRoaXMuZ2V0V2xsRGlyYWN0aW9uKFwidHVyblwiLCBjYy52MihibG9jay5nZXRDb21wb25lbnQoXCJNYXBCbG9ja1wiKS5wb3NYLCBibG9jay5nZXRDb21wb25lbnQoXCJNYXBCbG9ja1wiKS5wb3NZKSk7XHJcbiAgICAgICAgICAgICAgICBpZiAoZGlyICE9IG51bGwpIHtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLmNyZWF0ZVR1cm4oZGlyLCBibG9jaywgYmxvY2suZ2V0Q29tcG9uZW50KFwiTWFwQmxvY2tcIikucG9zWCwgYmxvY2suZ2V0Q29tcG9uZW50KFwiTWFwQmxvY2tcIikucG9zWSk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgfVxyXG5cclxuICAgIH1cclxuXHJcbiAgICBjcmVhdGVXYWxsKGRpcmVjdGlvbiwgbm9kZSkge1xyXG4gICAgICAgIGxldCB3YWxsID0gbnVsbDtcclxuICAgICAgICBub2RlLmdldENvbXBvbmVudChcIk1hcEJsb2NrXCIpLnNldERpcmFjdGlvbihkaXJlY3Rpb24pO1xyXG4gICAgICAgIHN3aXRjaCAoZGlyZWN0aW9uKSB7XHJcbiAgICAgICAgICAgIGNhc2UgXCJyaWdodFwiOlxyXG4gICAgICAgICAgICAgICAgbm9kZS5vcGFjaXR5ID0gMjUwO1xyXG4gICAgICAgICAgICAgICAgd2FsbCA9IGNjLmluc3RhbnRpYXRlKHRoaXMuV2FsbF9QcmVmYWJbNF0pO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5sZWZ0RG9vcnMucHVzaCh3YWxsKTtcclxuICAgICAgICAgICAgICAgIC8vIHdhbGwucGFyZW50ID0gdGhpcy5ub2RlLmdldENoaWxkQnlOYW1lKFwiV2FsbFwiKTtcclxuICAgICAgICAgICAgICAgIHdhbGwucGFyZW50ID0gdGhpcy5ub2RlO1xyXG4gICAgICAgICAgICAgICAgd2FsbC5zZXRQb3NpdGlvbihjYy52Mihub2RlLngsIG5vZGUueSkpO1xyXG4gICAgICAgICAgICAgICAgbm9kZS5vcGFjaXR5ID0gMjUwO1xyXG4gICAgICAgICAgICAgICAgd2FsbC5nZXRDaGlsZEJ5TmFtZShcIndhbGxcIikuZ2V0Q29tcG9uZW50KFwiV2FsbFwiKS5pbml0KG51bGwsIG5vZGUuZ2V0Q29tcG9uZW50KFwiTWFwQmxvY2tcIikucG9zWCwgbm9kZS5nZXRDb21wb25lbnQoXCJNYXBCbG9ja1wiKS5wb3NZLCBkaXJlY3Rpb24pO1xyXG4gICAgICAgICAgICAgICAgLy93YWxsLmdldENoaWxkQnlOYW1lKFwid2FsbFwiKS5nZXRDaGlsZEJ5TmFtZShcIm51bVwiKS5nZXRDb21wb25lbnQoY2MuTGFiZWwpLnN0cmluZyA9IHRoaXMud2FsbE51bS50b1N0cmluZygpO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5zZXREb29ySW5mbyh3YWxsLmdldENoaWxkQnlOYW1lKFwid2FsbFwiKSk7XHJcbiAgICAgICAgICAgICAgICB0aGlzLndhbGxOdW0gKz0gMTtcclxuICAgICAgICAgICAgICAgIGlmICh3YWxsLmdldENoaWxkQnlOYW1lKFwid2FsbFwiKS5nZXRDb21wb25lbnQoXCJXYWxsXCIpLnNwZWNpYWwgPT0gMilcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLm9wZW5XYWxsLnB1c2god2FsbCk7XHJcbiAgICAgICAgICAgICAgICBlbHNlIGlmICh3YWxsLmdldENoaWxkQnlOYW1lKFwid2FsbFwiKS5nZXRDb21wb25lbnQoXCJXYWxsXCIpLnNwZWNpYWwgPT0gMylcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLmZyZWV6ZVdhbGwucHVzaCh3YWxsKTtcclxuXHJcbiAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgY2FzZSBcImxlZnRcIjpcclxuICAgICAgICAgICAgICAgIG5vZGUub3BhY2l0eSA9IDI1MDtcclxuICAgICAgICAgICAgICAgIHdhbGwgPSBjYy5pbnN0YW50aWF0ZSh0aGlzLldhbGxfUHJlZmFiWzNdKTtcclxuICAgICAgICAgICAgICAgIC8vIHdhbGwucGFyZW50ID0gdGhpcy5ub2RlLmdldENoaWxkQnlOYW1lKFwiV2FsbFwiKTtcclxuICAgICAgICAgICAgICAgIHRoaXMucmlnaHREb29ycy5wdXNoKHdhbGwpO1xyXG4gICAgICAgICAgICAgICAgd2FsbC5wYXJlbnQgPSB0aGlzLm5vZGU7XHJcbiAgICAgICAgICAgICAgICB3YWxsLnNldFBvc2l0aW9uKGNjLnYyKG5vZGUueCwgbm9kZS55KSk7XHJcbiAgICAgICAgICAgICAgICB3YWxsLmdldENoaWxkQnlOYW1lKFwid2FsbFwiKS5nZXRDb21wb25lbnQoXCJXYWxsXCIpLmluaXQobnVsbCwgbm9kZS5nZXRDb21wb25lbnQoXCJNYXBCbG9ja1wiKS5wb3NYLCBub2RlLmdldENvbXBvbmVudChcIk1hcEJsb2NrXCIpLnBvc1ksIGRpcmVjdGlvbik7XHJcbiAgICAgICAgICAgICAgICB0aGlzLnNldERvb3JJbmZvKHdhbGwuZ2V0Q2hpbGRCeU5hbWUoXCJ3YWxsXCIpKTtcclxuICAgICAgICAgICAgICAgIC8vd2FsbC5nZXRDaGlsZEJ5TmFtZShcIndhbGxcIikuZ2V0Q2hpbGRCeU5hbWUoXCJudW1cIikuZ2V0Q29tcG9uZW50KGNjLkxhYmVsKS5zdHJpbmcgPSB0aGlzLndhbGxOdW0udG9TdHJpbmcoKTtcclxuICAgICAgICAgICAgICAgIHRoaXMud2FsbE51bSArPSAxO1xyXG4gICAgICAgICAgICAgICAgaWYgKHdhbGwuZ2V0Q2hpbGRCeU5hbWUoXCJ3YWxsXCIpLmdldENvbXBvbmVudChcIldhbGxcIikuc3BlY2lhbCA9PSAyKVxyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMub3BlbldhbGwucHVzaCh3YWxsKTtcclxuICAgICAgICAgICAgICAgIGVsc2UgaWYgKHdhbGwuZ2V0Q2hpbGRCeU5hbWUoXCJ3YWxsXCIpLmdldENvbXBvbmVudChcIldhbGxcIikuc3BlY2lhbCA9PSAzKVxyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZnJlZXplV2FsbC5wdXNoKHdhbGwpO1xyXG4gICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgIGNhc2UgXCJ1cFwiOlxyXG4gICAgICAgICAgICAgICAgbm9kZS5vcGFjaXR5ID0gMjUwO1xyXG4gICAgICAgICAgICAgICAgd2FsbCA9IGNjLmluc3RhbnRpYXRlKHRoaXMuV2FsbF9QcmVmYWJbNV0pO1xyXG5cclxuICAgICAgICAgICAgICAgIHRoaXMudG9wRG9vcnMucHVzaCh3YWxsKTtcclxuICAgICAgICAgICAgICAgIC8vIHdhbGwucGFyZW50ID0gdGhpcy5ub2RlLmdldENoaWxkQnlOYW1lKFwiV2FsbFwiKTtcclxuICAgICAgICAgICAgICAgIHdhbGwucGFyZW50ID0gdGhpcy5ub2RlO1xyXG4gICAgICAgICAgICAgICAgd2FsbC5zZXRQb3NpdGlvbihjYy52Mihub2RlLngsIG5vZGUueSkpO1xyXG5cclxuICAgICAgICAgICAgICAgIHdhbGwuZ2V0Q2hpbGRCeU5hbWUoXCJ3YWxsXCIpLmdldENvbXBvbmVudChcIldhbGxcIikuaW5pdChudWxsLCBub2RlLmdldENvbXBvbmVudChcIk1hcEJsb2NrXCIpLnBvc1gsIG5vZGUuZ2V0Q29tcG9uZW50KFwiTWFwQmxvY2tcIikucG9zWSwgZGlyZWN0aW9uKTtcclxuICAgICAgICAgICAgICAgIHRoaXMuc2V0RG9vckluZm8od2FsbC5nZXRDaGlsZEJ5TmFtZShcIndhbGxcIikpO1xyXG4gICAgICAgICAgICAgICAgLy93YWxsLmdldENoaWxkQnlOYW1lKFwid2FsbFwiKS5nZXRDaGlsZEJ5TmFtZShcIm51bVwiKS5nZXRDb21wb25lbnQoY2MuTGFiZWwpLnN0cmluZyA9IHRoaXMud2FsbE51bS50b1N0cmluZygpO1xyXG4gICAgICAgICAgICAgICAgdGhpcy53YWxsTnVtICs9IDE7XHJcbiAgICAgICAgICAgICAgICBpZiAod2FsbC5nZXRDaGlsZEJ5TmFtZShcIndhbGxcIikuZ2V0Q29tcG9uZW50KFwiV2FsbFwiKS5zcGVjaWFsID09IDIpXHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5vcGVuV2FsbC5wdXNoKHdhbGwpO1xyXG4gICAgICAgICAgICAgICAgZWxzZSBpZiAod2FsbC5nZXRDaGlsZEJ5TmFtZShcIndhbGxcIikuZ2V0Q29tcG9uZW50KFwiV2FsbFwiKS5zcGVjaWFsID09IDMpXHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5mcmVlemVXYWxsLnB1c2god2FsbCk7XHJcbiAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgY2FzZSBcImRvd25cIjpcclxuICAgICAgICAgICAgICAgIG5vZGUub3BhY2l0eSA9IDI1MDtcclxuICAgICAgICAgICAgICAgIHdhbGwgPSBjYy5pbnN0YW50aWF0ZSh0aGlzLldhbGxfUHJlZmFiWzBdKTtcclxuICAgICAgICAgICAgICAgIHRoaXMuYm90dG9tRG9vcnMucHVzaCh3YWxsKTtcclxuICAgICAgICAgICAgICAgIC8vIHdhbGwucGFyZW50ID0gdGhpcy5ub2RlLmdldENoaWxkQnlOYW1lKFwiV2FsbFwiKTtcclxuICAgICAgICAgICAgICAgIHdhbGwucGFyZW50ID0gdGhpcy5ub2RlO1xyXG4gICAgICAgICAgICAgICAgd2FsbC5zZXRQb3NpdGlvbihjYy52Mihub2RlLngsIG5vZGUueSkpO1xyXG4gICAgICAgICAgICAgICAgLy8gdGhpcy5zZXREb29ySW5mbyh3YWxsLmdldENoaWxkQnlOYW1lKFwid2FsbFwiKSk7XHJcbiAgICAgICAgICAgICAgICB3YWxsLmdldENoaWxkQnlOYW1lKFwid2FsbFwiKS5nZXRDb21wb25lbnQoXCJXYWxsXCIpLmluaXQobnVsbCwgbm9kZS5nZXRDb21wb25lbnQoXCJNYXBCbG9ja1wiKS5wb3NYLCBub2RlLmdldENvbXBvbmVudChcIk1hcEJsb2NrXCIpLnBvc1ksIGRpcmVjdGlvbik7XHJcbiAgICAgICAgICAgICAgICB0aGlzLnNldERvb3JJbmZvKHdhbGwuZ2V0Q2hpbGRCeU5hbWUoXCJ3YWxsXCIpKTtcclxuICAgICAgICAgICAgICAgIC8vd2FsbC5nZXRDaGlsZEJ5TmFtZShcIndhbGxcIikuZ2V0Q2hpbGRCeU5hbWUoXCJudW1cIikuZ2V0Q29tcG9uZW50KGNjLkxhYmVsKS5zdHJpbmcgPSB0aGlzLndhbGxOdW0udG9TdHJpbmcoKTtcclxuICAgICAgICAgICAgICAgIHRoaXMud2FsbE51bSArPSAxO1xyXG4gICAgICAgICAgICAgICAgaWYgKHdhbGwuZ2V0Q2hpbGRCeU5hbWUoXCJ3YWxsXCIpLmdldENvbXBvbmVudChcIldhbGxcIikuc3BlY2lhbCA9PSAyKVxyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMub3BlbldhbGwucHVzaCh3YWxsKTtcclxuICAgICAgICAgICAgICAgIGVsc2UgaWYgKHdhbGwuZ2V0Q2hpbGRCeU5hbWUoXCJ3YWxsXCIpLmdldENvbXBvbmVudChcIldhbGxcIikuc3BlY2lhbCA9PSAzKVxyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZnJlZXplV2FsbC5wdXNoKHdhbGwpO1xyXG4gICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgIGNhc2UgXCJ1cHJpZ2h0XCI6IGNhc2UgXCJyaWdodHVwXCI6XHJcbiAgICAgICAgICAgICAgICBub2RlLm9wYWNpdHkgPSAyNDk7XHJcbiAgICAgICAgICAgICAgICB3YWxsID0gY2MuaW5zdGFudGlhdGUodGhpcy5XYWxsX1ByZWZhYls3XSk7XHJcbiAgICAgICAgICAgICAgICAvLyB3YWxsLnBhcmVudCA9IHRoaXMubm9kZS5nZXRDaGlsZEJ5TmFtZShcIldhbGxcIik7XHJcbiAgICAgICAgICAgICAgICB3YWxsLnBhcmVudCA9IHRoaXMubm9kZTtcclxuICAgICAgICAgICAgICAgIHdhbGwuc2V0UG9zaXRpb24oY2MudjIobm9kZS54LCBub2RlLnkpKTtcclxuICAgICAgICAgICAgICAgIHdhbGwuY2hpbGRyZW5bMV0uZ2V0Q29tcG9uZW50KFwiV2FsbFwiKS5pbml0KG51bGwsIG5vZGUuZ2V0Q29tcG9uZW50KFwiTWFwQmxvY2tcIikucG9zWCwgbm9kZS5nZXRDb21wb25lbnQoXCJNYXBCbG9ja1wiKS5wb3NZLCBkaXJlY3Rpb24pO1xyXG4gICAgICAgICAgICAgICAgd2FsbC5jaGlsZHJlblsyXS5nZXRDb21wb25lbnQoXCJXYWxsXCIpLmluaXQobnVsbCwgbm9kZS5nZXRDb21wb25lbnQoXCJNYXBCbG9ja1wiKS5wb3NYLCBub2RlLmdldENvbXBvbmVudChcIk1hcEJsb2NrXCIpLnBvc1ksIGRpcmVjdGlvbik7XHJcbiAgICAgICAgICAgICAgICAvL3dhbGwuY2hpbGRyZW5bMF0uZ2V0Q2hpbGRCeU5hbWUoXCJudW1cIikuZ2V0Q29tcG9uZW50KGNjLkxhYmVsKS5zdHJpbmcgPSB0aGlzLndhbGxOdW0udG9TdHJpbmcoKTtcclxuICAgICAgICAgICAgICAgIHRoaXMuc2V0RG9vckluZm8od2FsbC5jaGlsZHJlblswXSk7XHJcbiAgICAgICAgICAgICAgICB0aGlzLndhbGxOdW0gKz0gMTtcclxuICAgICAgICAgICAgICAgIC8vd2FsbC5jaGlsZHJlblsxXS5nZXRDaGlsZEJ5TmFtZShcIm51bVwiKS5nZXRDb21wb25lbnQoY2MuTGFiZWwpLnN0cmluZyA9IHRoaXMud2FsbE51bS50b1N0cmluZygpO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5zZXREb29ySW5mbyh3YWxsLmNoaWxkcmVuWzFdKTtcclxuICAgICAgICAgICAgICAgIHRoaXMud2FsbE51bSArPSAxO1xyXG5cclxuICAgICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICBjYXNlIFwidXBsZWZ0XCI6IGNhc2UgXCJsZWZ0dXBcIjpcclxuICAgICAgICAgICAgICAgIG5vZGUub3BhY2l0eSA9IDI0OTtcclxuICAgICAgICAgICAgICAgIHdhbGwgPSBjYy5pbnN0YW50aWF0ZSh0aGlzLldhbGxfUHJlZmFiWzZdKTtcclxuICAgICAgICAgICAgICAgIC8vIHdhbGwucGFyZW50ID0gdGhpcy5ub2RlLmdldENoaWxkQnlOYW1lKFwiV2FsbFwiKTtcclxuICAgICAgICAgICAgICAgIHdhbGwucGFyZW50ID0gdGhpcy5ub2RlO1xyXG4gICAgICAgICAgICAgICAgd2FsbC5zZXRQb3NpdGlvbihjYy52Mihub2RlLngsIG5vZGUueSkpO1xyXG4gICAgICAgICAgICAgICAgd2FsbC5jaGlsZHJlblsxXS5nZXRDb21wb25lbnQoXCJXYWxsXCIpLmluaXQobnVsbCwgbm9kZS5nZXRDb21wb25lbnQoXCJNYXBCbG9ja1wiKS5wb3NYLCBub2RlLmdldENvbXBvbmVudChcIk1hcEJsb2NrXCIpLnBvc1ksIGRpcmVjdGlvbik7XHJcbiAgICAgICAgICAgICAgICB3YWxsLmNoaWxkcmVuWzJdLmdldENvbXBvbmVudChcIldhbGxcIikuaW5pdChudWxsLCBub2RlLmdldENvbXBvbmVudChcIk1hcEJsb2NrXCIpLnBvc1gsIG5vZGUuZ2V0Q29tcG9uZW50KFwiTWFwQmxvY2tcIikucG9zWSwgZGlyZWN0aW9uKTtcclxuICAgICAgICAgICAgICAgIC8vd2FsbC5jaGlsZHJlblswXS5nZXRDaGlsZEJ5TmFtZShcIm51bVwiKS5nZXRDb21wb25lbnQoY2MuTGFiZWwpLnN0cmluZyA9IHRoaXMud2FsbE51bS50b1N0cmluZygpO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5zZXREb29ySW5mbyh3YWxsLmNoaWxkcmVuWzBdKTtcclxuICAgICAgICAgICAgICAgIHRoaXMud2FsbE51bSArPSAxO1xyXG4gICAgICAgICAgICAgICAgLy93YWxsLmNoaWxkcmVuWzFdLmdldENoaWxkQnlOYW1lKFwibnVtXCIpLmdldENvbXBvbmVudChjYy5MYWJlbCkuc3RyaW5nID0gdGhpcy53YWxsTnVtLnRvU3RyaW5nKCk7XHJcbiAgICAgICAgICAgICAgICB0aGlzLnNldERvb3JJbmZvKHdhbGwuY2hpbGRyZW5bMV0pO1xyXG4gICAgICAgICAgICAgICAgdGhpcy53YWxsTnVtICs9IDE7XHJcblxyXG4gICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgIGNhc2UgXCJkb3ducmlnaHRcIjogY2FzZSBcInJpZ2h0ZG93blwiOlxyXG4gICAgICAgICAgICAgICAgbm9kZS5vcGFjaXR5ID0gMjQ5O1xyXG4gICAgICAgICAgICAgICAgd2FsbCA9IGNjLmluc3RhbnRpYXRlKHRoaXMuV2FsbF9QcmVmYWJbMl0pO1xyXG4gICAgICAgICAgICAgICAgLy8gd2FsbC5wYXJlbnQgPSB0aGlzLm5vZGUuZ2V0Q2hpbGRCeU5hbWUoXCJXYWxsXCIpO1xyXG4gICAgICAgICAgICAgICAgd2FsbC5wYXJlbnQgPSB0aGlzLm5vZGU7XHJcbiAgICAgICAgICAgICAgICB3YWxsLnNldFBvc2l0aW9uKGNjLnYyKG5vZGUueCwgbm9kZS55KSk7XHJcbiAgICAgICAgICAgICAgICB3YWxsLmNoaWxkcmVuWzFdLmdldENvbXBvbmVudChcIldhbGxcIikuaW5pdChudWxsLCBub2RlLmdldENvbXBvbmVudChcIk1hcEJsb2NrXCIpLnBvc1gsIG5vZGUuZ2V0Q29tcG9uZW50KFwiTWFwQmxvY2tcIikucG9zWSwgZGlyZWN0aW9uKTtcclxuICAgICAgICAgICAgICAgIHdhbGwuY2hpbGRyZW5bMl0uZ2V0Q29tcG9uZW50KFwiV2FsbFwiKS5pbml0KG51bGwsIG5vZGUuZ2V0Q29tcG9uZW50KFwiTWFwQmxvY2tcIikucG9zWCwgbm9kZS5nZXRDb21wb25lbnQoXCJNYXBCbG9ja1wiKS5wb3NZLCBkaXJlY3Rpb24pO1xyXG4gICAgICAgICAgICAgICAgLy93YWxsLmNoaWxkcmVuWzBdLmdldENoaWxkQnlOYW1lKFwibnVtXCIpLmdldENvbXBvbmVudChjYy5MYWJlbCkuc3RyaW5nID0gdGhpcy53YWxsTnVtLnRvU3RyaW5nKCk7XHJcbiAgICAgICAgICAgICAgICB0aGlzLnNldERvb3JJbmZvKHdhbGwuY2hpbGRyZW5bMF0pO1xyXG4gICAgICAgICAgICAgICAgdGhpcy53YWxsTnVtICs9IDE7XHJcbiAgICAgICAgICAgICAgICAvL3dhbGwuY2hpbGRyZW5bMV0uZ2V0Q2hpbGRCeU5hbWUoXCJudW1cIikuZ2V0Q29tcG9uZW50KGNjLkxhYmVsKS5zdHJpbmcgPSB0aGlzLndhbGxOdW0udG9TdHJpbmcoKTtcclxuICAgICAgICAgICAgICAgIHRoaXMuc2V0RG9vckluZm8od2FsbC5jaGlsZHJlblsxXSk7XHJcbiAgICAgICAgICAgICAgICB0aGlzLndhbGxOdW0gKz0gMTtcclxuXHJcbiAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgY2FzZSBcImRvd25sZWZ0XCI6IGNhc2UgXCJsZWZ0ZG93blwiOlxyXG4gICAgICAgICAgICAgICAgbm9kZS5vcGFjaXR5ID0gMjQ5O1xyXG4gICAgICAgICAgICAgICAgd2FsbCA9IGNjLmluc3RhbnRpYXRlKHRoaXMuV2FsbF9QcmVmYWJbMV0pO1xyXG4gICAgICAgICAgICAgICAgLy8gd2FsbC5wYXJlbnQgPSB0aGlzLm5vZGUuZ2V0Q2hpbGRCeU5hbWUoXCJXYWxsXCIpO1xyXG4gICAgICAgICAgICAgICAgd2FsbC5wYXJlbnQgPSB0aGlzLm5vZGU7XHJcbiAgICAgICAgICAgICAgICB3YWxsLnNldFBvc2l0aW9uKGNjLnYyKG5vZGUueCwgbm9kZS55KSk7XHJcbiAgICAgICAgICAgICAgICB3YWxsLmNoaWxkcmVuWzFdLmdldENvbXBvbmVudChcIldhbGxcIikuaW5pdChudWxsLCBub2RlLmdldENvbXBvbmVudChcIk1hcEJsb2NrXCIpLnBvc1gsIG5vZGUuZ2V0Q29tcG9uZW50KFwiTWFwQmxvY2tcIikucG9zWSwgZGlyZWN0aW9uKTtcclxuICAgICAgICAgICAgICAgIHdhbGwuY2hpbGRyZW5bMl0uZ2V0Q29tcG9uZW50KFwiV2FsbFwiKS5pbml0KG51bGwsIG5vZGUuZ2V0Q29tcG9uZW50KFwiTWFwQmxvY2tcIikucG9zWCwgbm9kZS5nZXRDb21wb25lbnQoXCJNYXBCbG9ja1wiKS5wb3NZLCBkaXJlY3Rpb24pO1xyXG4gICAgICAgICAgICAgICAgLy93YWxsLmNoaWxkcmVuWzBdLmdldENoaWxkQnlOYW1lKFwibnVtXCIpLmdldENvbXBvbmVudChjYy5MYWJlbCkuc3RyaW5nID0gdGhpcy53YWxsTnVtLnRvU3RyaW5nKCk7XHJcbiAgICAgICAgICAgICAgICB0aGlzLnNldERvb3JJbmZvKHdhbGwuY2hpbGRyZW5bMF0pO1xyXG4gICAgICAgICAgICAgICAgdGhpcy53YWxsTnVtICs9IDE7XHJcbiAgICAgICAgICAgICAgICAvL3dhbGwuY2hpbGRyZW5bMV0uZ2V0Q2hpbGRCeU5hbWUoXCJudW1cIikuZ2V0Q29tcG9uZW50KGNjLkxhYmVsKS5zdHJpbmcgPSB0aGlzLndhbGxOdW0udG9TdHJpbmcoKTtcclxuICAgICAgICAgICAgICAgIHRoaXMuc2V0RG9vckluZm8od2FsbC5jaGlsZHJlblsxXSk7XHJcbiAgICAgICAgICAgICAgICB0aGlzLndhbGxOdW0gKz0gMTtcclxuXHJcbiAgICAgICAgICAgICAgICBicmVhaztcclxuXHJcbiAgICAgICAgfVxyXG5cclxuXHJcbiAgICAgICAgLy8gaWYod2FsbFR1cm4pe1xyXG4gICAgICAgIC8vICAgICB3YWxsVHVybi5nZXRDb21wb25lbnQoXCJ3YWxsVHVuclwiKS5pbml0KHdhbGwpO1xyXG4gICAgICAgIC8vIH1cclxuICAgIH1cclxuXHJcbiAgICBzZXREb29ySW5mbyh3YWxsKSB7XHJcbiAgICAgICAgbGV0IGRvb3JJbmZvID0gY2MuZnguR2FtZUNvbmZpZy5XQUxMX0lORk9bMF07XHJcblxyXG4gICAgICAgIGlmIChkb29ySW5mbykge1xyXG4gICAgICAgICAgICBmb3IgKGxldCBqID0gMDsgaiA8IGRvb3JJbmZvLmxlbmd0aDsgaisrKSB7XHJcbiAgICAgICAgICAgICAgICBpZiAoZG9vckluZm9bal0ubnVtID09IHRoaXMud2FsbE51bSkge1xyXG4gICAgICAgICAgICAgICAgICAgIHdhbGwuZ2V0Q29tcG9uZW50KFwiV2FsbFwiKS5pbml0KGRvb3JJbmZvW2pdLCBudWxsLCBudWxsLCBudWxsKTtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLndhbGxBcnJheS5wdXNoKHdhbGwucGFyZW50KTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBjcmVhdGVUdXJuKGRpcmVjdGlvbiwgbm9kZSwgcG9zWCwgcG9zWSkge1xyXG4gICAgICAgIGxldCB3YWxsID0gbnVsbDtcclxuICAgICAgICB3YWxsID0gY2MuaW5zdGFudGlhdGUodGhpcy53YWxsVHVyblByZWZhYik7XHJcbiAgICAgICAgd2FsbC5wYXJlbnQgPSB0aGlzLm5vZGU7XHJcbiAgICAgICAgd2FsbC5zZXRQb3NpdGlvbihjYy52Mihub2RlLngsIG5vZGUueSkpO1xyXG4gICAgICAgIHN3aXRjaCAoZGlyZWN0aW9uKSB7XHJcbiAgICAgICAgICAgIGNhc2UgXCJ1cHJpZ2h0XCI6IGNhc2UgXCJyaWdodHVwXCI6XHJcbiAgICAgICAgICAgICAgICB3YWxsLmFuZ2xlID0gMDtcclxuICAgICAgICAgICAgICAgIHdhbGwuZ2V0Q2hpbGRCeU5hbWUoXCJpY29uXCIpLmFuZ2xlID0gMDtcclxuXHJcbiAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgY2FzZSBcInVwbGVmdFwiOiBjYXNlIFwibGVmdHVwXCI6XHJcbiAgICAgICAgICAgICAgICB3YWxsLmFuZ2xlID0gOTA7XHJcbiAgICAgICAgICAgICAgICB3YWxsLmdldENoaWxkQnlOYW1lKFwiaWNvblwiKS5hbmdsZSA9IC05MDtcclxuICAgICAgICAgICAgICAgIHdhbGwuZ2V0Q2hpbGRCeU5hbWUoXCJpY29uXCIpLnkgKz0gNTtcclxuICAgICAgICAgICAgICAgIHdhbGwuZ2V0Q2hpbGRCeU5hbWUoXCJpY29uXCIpLnggLT0gMS4zO1xyXG4gICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgIGNhc2UgXCJkb3ducmlnaHRcIjogY2FzZSBcInJpZ2h0ZG93blwiOlxyXG4gICAgICAgICAgICAgICAgd2FsbC5hbmdsZSA9IDI3MDtcclxuICAgICAgICAgICAgICAgIHdhbGwuZ2V0Q2hpbGRCeU5hbWUoXCJpY29uXCIpLmFuZ2xlID0gLTI3MDtcclxuICAgICAgICAgICAgICAgIHdhbGwuZ2V0Q2hpbGRCeU5hbWUoXCJpY29uXCIpLnggKz0gMi41O1xyXG4gICAgICAgICAgICAgICAgd2FsbC5nZXRDaGlsZEJ5TmFtZShcImljb25cIikueSArPSAxO1xyXG4gICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgIGNhc2UgXCJkb3dubGVmdFwiOiBjYXNlIFwibGVmdGRvd25cIjpcclxuICAgICAgICAgICAgICAgIHdhbGwuYW5nbGUgPSAxODA7XHJcbiAgICAgICAgICAgICAgICB3YWxsLmdldENoaWxkQnlOYW1lKFwiaWNvblwiKS5hbmdsZSA9IC0xODA7XHJcbiAgICAgICAgICAgICAgICB3YWxsLmdldENoaWxkQnlOYW1lKFwiaWNvblwiKS54ICs9IDQuNTtcclxuICAgICAgICAgICAgICAgIHdhbGwuZ2V0Q2hpbGRCeU5hbWUoXCJpY29uXCIpLnkgKz0gMy4yO1xyXG4gICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICAvLyBpZihkaXJlY3Rpb24gPT0gXCJyaWdodGRvd25cIiB8fCBkaXJlY3Rpb24gPT0gXCJkb3ducmlnaHRcIikge1xyXG4gICAgICAgIC8vICAgICB3YWxsLnpJbmRleCA9IDUwICsgcG9zWCAtIHBvc1kqMztcclxuICAgICAgICAvLyB9XHJcbiAgICAgICAgLy8gZWxzZSBcclxuICAgICAgICAvLyAgICAgd2FsbC56SW5kZXggPSA1MCArIHBvc1ggLSBwb3NZKjM7XHJcblxyXG4gICAgICAgIGlmIChkaXJlY3Rpb24gPT0gXCJ1cFwiIHx8IGRpcmVjdGlvbiA9PSBcImxlZnR1cFwiIHx8IGRpcmVjdGlvbiA9PSBcInVwbGVmdFwiXHJcbiAgICAgICAgKSB7XHJcbiAgICAgICAgICAgIHdhbGwuekluZGV4ID0gMTAwICsgcG9zWCAtIHBvc1kgKiAzO1xyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIGlmIChkaXJlY3Rpb24gPT0gXCJyaWdodHVwXCIgfHwgZGlyZWN0aW9uID09IFwidXByaWdodFwiIHx8IGRpcmVjdGlvbiA9PSBcInJpZ2h0ZG93blwiIHx8IGRpcmVjdGlvbiA9PSBcImRvd25yaWdodFwiIHx8IGRpcmVjdGlvbiA9PSBcImRvd25sZWZ0XCIpIHtcclxuICAgICAgICAgICAgd2FsbC56SW5kZXggPSAzMCArIHBvc1ggLSBwb3NZICogMztcclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSBpZiAoZGlyZWN0aW9uID09IFwibGVmdFwiIHx8IGRpcmVjdGlvbiA9PSBcImxlZnRkb3duXCIpIHtcclxuICAgICAgICAgICAgd2FsbC56SW5kZXggPSA3MCArIHBvc1ggLSBwb3NZICogMztcclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSB3YWxsLnpJbmRleCA9IDcwICsgcG9zWCAtIHBvc1kgKiAzO1xyXG5cclxuICAgICAgICAvLyB3YWxsLmdldENoaWxkQnlOYW1lKFwibnVtXCIpLmFuZ2xlID0gLXdhbGwuYW5nbGU7XHJcbiAgICAgICAgLy93YWxsLmdldENoaWxkQnlOYW1lKFwibnVtXCIpLmdldENvbXBvbmVudChjYy5MYWJlbCkuc3RyaW5nID0gZGlyZWN0aW9uO1xyXG4gICAgICAgIC8vd2FsbC5nZXRDaGlsZEJ5TmFtZShcIm51bVwiKS5nZXRDb21wb25lbnQoY2MuTGFiZWwpLnN0cmluZyA9IHdhbGwuekluZGV4KyBcIlwiO1xyXG4gICAgICAgIC8vIGNvbnNvbGUubG9nKHBvc1gscG9zWSx3YWxsLnpJbmRleCk7XHJcbiAgICAgICAgLy8gdGhpcy53YWxsTnVtICs9ICAxO1xyXG4gICAgICAgIC8vIHdhbGwuZ2V0Q2hpbGRCeU5hbWUoXCJudW1cIikuZ2V0Q29tcG9uZW50KGNjLkxhYmVsKS5zdHJpbmcgPSB0aGlzLndhbGxOdW0gKyBcIlwiO1xyXG4gICAgfVxyXG5cclxuICAgIC8v5Zyw5Zu+5bqV5Z2X57y65Y+j5Yik5patXHJcbiAgICBtYXBHYXAocG9pbnQsIGdhcCkge1xyXG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgZ2FwLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgICAgIGlmIChwb2ludC54ID09IGdhcFtpXS54ICYmIHBvaW50LnkgPT0gZ2FwW2ldLnkpIHtcclxuICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gdHJ1ZTtcclxuICAgIH1cclxuXHJcbiAgICAvL+WNh+mZjeWcsOWdl+WIpOaWrVxyXG4gICAgbWFwUmlzZUZhbGwocG9pbnQsIHJpc2VmYWxsLCBibG9jaykge1xyXG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgcmlzZWZhbGwubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICAgICAgaWYgKHBvaW50LnggPT0gcmlzZWZhbGxbaV0ucG9zLnggJiYgcG9pbnQueSA9PSByaXNlZmFsbFtpXS5wb3MueSkge1xyXG4gICAgICAgICAgICAgICAgYmxvY2suZ2V0Q2hpbGRCeU5hbWUoXCJyaXNlZmFsbFwiKS5hY3RpdmUgPSB0cnVlO1xyXG4gICAgICAgICAgICAgICAgYmxvY2suZ2V0Q2hpbGRCeU5hbWUoJ3Jpc2VmYWxsJykuZ2V0Q2hpbGRCeU5hbWUoXCJjb2xvclwiKS5nZXRDb21wb25lbnQoY2MuTGFiZWwpLnN0cmluZyA9IHJpc2VmYWxsW2ldLmNvbG9yICsgXCJcIjtcclxuICAgICAgICAgICAgICAgIGJsb2NrLmdldENoaWxkQnlOYW1lKCdyaXNlZmFsbCcpLmFkZENvbXBvbmVudChjYy5Cb3hDb2xsaWRlcik7XHJcbiAgICAgICAgICAgICAgICBibG9jay5nZXRDaGlsZEJ5TmFtZSgncmlzZWZhbGwnKS5nZXRDb21wb25lbnQoY2MuQm94Q29sbGlkZXIpLnNpemUgPSBjYy5zaXplKDExMCwgMTEwKTtcclxuICAgICAgICAgICAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgIH1cclxuICAgIC8v5Y2H6ZmN5Zyw5Z2XXHJcbiAgICBjaGFuZ2VSaXNlRmFsbChjb2xvciwgZG93bikge1xyXG4gICAgICAgIGNvbG9yID0gY29sb3IudG9TdHJpbmcoKTtcclxuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRoaXMucmlzZUZhbGxCbGNvay5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgICAgICBpZiAoY29sb3IgPT0gdGhpcy5yaXNlRmFsbEJsY29rW2ldLmdldENoaWxkQnlOYW1lKFwicmlzZWZhbGxcIikuZ2V0Q2hpbGRCeU5hbWUoXCJjb2xvclwiKS5nZXRDb21wb25lbnQoY2MuTGFiZWwpLnN0cmluZykge1xyXG4gICAgICAgICAgICAgICAgaWYgKGRvd24pIHtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLnJpc2VGYWxsQmxjb2tbaV0uZ2V0Q2hpbGRCeU5hbWUoXCJyaXNlZmFsbFwiKS5hY3RpdmUgPSBmYWxzZTtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLnJpc2VGYWxsQmxjb2tbaV0uZ2V0Q2hpbGRCeU5hbWUoJ3Jpc2VmYWxsJykucmVtb3ZlQ29tcG9uZW50KGNjLkJveENvbGxpZGVyKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMucmlzZUZhbGxCbGNva1tpXS5nZXRDaGlsZEJ5TmFtZShcInJpc2VmYWxsXCIpLmFjdGl2ZSA9IHRydWU7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5yaXNlRmFsbEJsY29rW2ldLmdldENoaWxkQnlOYW1lKCdyaXNlZmFsbCcpLmFkZENvbXBvbmVudChjYy5Cb3hDb2xsaWRlcik7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5yaXNlRmFsbEJsY29rW2ldLmdldENoaWxkQnlOYW1lKCdyaXNlZmFsbCcpLmdldENvbXBvbmVudChjYy5Cb3hDb2xsaWRlcikuc2l6ZSA9IGNjLnNpemUoMTEwLCAxMTApO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcblxyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcblxyXG5cclxuICAgIC8v5p+l6K+i5Y+g5Yqg5b+raWRcclxuICAgIGZvdW5kRG93bkJsb2NrKGlkKSB7XHJcbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0aGlzLmJsb2Nrcy5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgICAgICBpZiAodGhpcy5ibG9ja3NbaV0uZ2V0Q29tcG9uZW50KFwiQmxvY2tcIikuYmxvY2tJZCA9PSBpZCkge1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuYmxvY2tzW2ldO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiBudWxsO1xyXG4gICAgfVxyXG5cclxuICAgIC8v5Yig6Zmk5Z2XXHJcbiAgICByZW1vdmVCbG9jayhpZCkge1xyXG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdGhpcy5ibG9ja3MubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICAgICAgaWYgKHRoaXMuYmxvY2tzW2ldLmdldENvbXBvbmVudChcIkJsb2NrXCIpLmJsb2NrSWQgPT0gaWQpIHtcclxuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmJsb2Nrc1tpXTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gbnVsbDtcclxuICAgIH1cclxuXHJcbiAgICBnZXRNaW5BbmRNYXgoYmxvY2spIHtcclxuICAgICAgICBsZXQgd2lkdGggPSBNYXRoLmZsb29yKGJsb2NrLndpZHRoIC8gMTIwKTtcclxuICAgICAgICBsZXQgaGVpZ2h0ID0gTWF0aC5mbG9vcihibG9jay5oZWlnaHQgLyAxMjApO1xyXG5cclxuICAgICAgICBsZXQgbWluWCA9IHdpZHRoO1xyXG4gICAgICAgIGxldCBtYXhYID0gdGhpcy5tYXBXaWR0aCAtIDI7XHJcbiAgICAgICAgbGV0IG1pblkgPSAxO1xyXG4gICAgICAgIGxldCBtYXhZID0gdGhpcy5tYXBIZWlnaHQgLSAyIC0gaGVpZ2h0ICsgMTtcclxuXHJcbiAgICAgICAgaWYgKGJsb2NrLm5hbWUgPT0gXCJibG9jazEwXCIpIHtcclxuICAgICAgICAgICAgbWluWCA9IHdpZHRoIC0gMTtcclxuICAgICAgICAgICAgaWYgKHRoaXMubWFwV2lkdGggPiAzKSBtYXhYID0gbWF4WCAtIDE7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2UgaWYgKGJsb2NrLm5hbWUgPT0gXCJibG9jazExXCIpIHtcclxuICAgICAgICAgICAgbWluWCA9IHdpZHRoIC0gMjtcclxuICAgICAgICAgICAgaWYgKHRoaXMubWFwV2lkdGggPiAzKSBtYXhYID0gbWF4WCAtIDI7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBlbHNlIGlmIChibG9jay5uYW1lID09IFwiYmxvY2sxNFwiKSB7XHJcbiAgICAgICAgICAgIG1pblggPSB3aWR0aCAtIDE7XHJcbiAgICAgICAgICAgIG1heFggPSBtYXhYIC0gMTtcclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSBpZiAoYmxvY2submFtZSA9PSBcImJsb2NrMTZcIikge1xyXG4gICAgICAgICAgICBtaW5YID0gd2lkdGggLSAxO1xyXG4gICAgICAgICAgICBtYXhYID0gbWF4WCAtIDE7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2UgaWYgKGJsb2NrLm5hbWUgPT0gXCJibG9jazE4XCIpIHtcclxuICAgICAgICAgICAgbWluWCA9IHdpZHRoIC0gMTtcclxuICAgICAgICAgICAgbWF4WCA9IG1heFggLSAxO1xyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIGlmIChibG9jay5uYW1lID09IFwiYmxvY2syMVwiKSB7XHJcbiAgICAgICAgICAgIG1pblggPSB3aWR0aCAtIDE7XHJcbiAgICAgICAgICAgIG1heFggPSBtYXhYIC0gMTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHJldHVybiB7IG1pblg6IG1pblgsIG1heFg6IG1heFgsIG1pblk6IG1pblksIG1heFk6IG1heFkgfTtcclxuICAgIH1cclxuXHJcbiAgICAvL+ajgOa1i+iQveeCueaYr+WQpuWPr+S7pea2iOmZpFxyXG4gICAgY2hlY2tQYXNzKG5vZGUsIGJsb2Nrcykge1xyXG4gICAgICAgIGxldCBtaW5BbmRNYXggPSB0aGlzLmdldE1pbkFuZE1heChub2RlKTtcclxuICAgICAgICBsZXQgbWluWCA9IG1pbkFuZE1heC5taW5YO1xyXG4gICAgICAgIGxldCBtYXhYID0gbWluQW5kTWF4Lm1heFg7XHJcbiAgICAgICAgbGV0IG1pblkgPSBtaW5BbmRNYXgubWluWTtcclxuICAgICAgICBsZXQgbWF4WSA9IG1pbkFuZE1heC5tYXhZO1xyXG5cclxuICAgICAgICBsZXQgbm9kZVBvcyA9IGNjLnYyKG5vZGUuZ2V0Q29tcG9uZW50KFwiQmxvY2tcIikucG9zWCwgbm9kZS5nZXRDb21wb25lbnQoXCJCbG9ja1wiKS5wb3NZKTtcclxuXHJcbiAgICAgICAgLy8g6I635Y+W5Zyw5Zu+6L6555WM5L+h5oGvXHJcblxyXG4gICAgICAgIGxldCBhbGxCbG9ja3MgPSBbXTtcclxuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGJsb2Nrcy5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgICAgICBhbGxCbG9ja3MucHVzaChjYy52Mihub2RlUG9zLnggKyBibG9ja3NbaV0ueCwgbm9kZVBvcy55ICsgYmxvY2tzW2ldLnkpKTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIC8vIGNvbnN0IGRhdGUxID0gbmV3IERhdGUoKS5nZXRUaW1lKCk7XHJcbiAgICAgICAgLy8gY29uc29sZS5sb2coXCLlsIblsI/lnZfmlL7lhaXmlbDnu4TnmoTml7bpl7RcIixkYXRlMSk7XHJcblxyXG4gICAgICAgIGxldCBqZyA9IC0xO1xyXG4gICAgICAgIGxldCBweiA9IDA7XHJcbiAgICAgICAgLy8g6I635Y+W5omA5pyJ5aKZ5aOB6IqC54K5XHJcbiAgICAgICAgLy8gbGV0IHdhbGwgPSB0aGlzLm5vZGU7XHJcbiAgICAgICAgbGV0IGRpcmVjdGlvbiA9IHRoaXMuY2hlY2tEaXJhY3Rpb24oYWxsQmxvY2tzLCBtYXhYLCBtYXhZKTtcclxuXHJcbiAgICAgICAgLy8g5Yik5pat5pa55Z2X5piv5ZCm5Zyo5Zyw5Zu+6L6557yYXHJcbiAgICAgICAgaWYgKG5vZGVQb3MueCA8PSBtaW5YIHx8IGRpcmVjdGlvblswXSA9PSB0cnVlKSB7XHJcbiAgICAgICAgICAgIC8vIGNvbnN0IGRhdGUyID0gbmV3IERhdGUoKS5nZXRUaW1lKCk7XHJcbiAgICAgICAgICAgIC8vIGNvbnNvbGUubG9nKFwi56Kw5Yiw5bem6L6557yYXCIsZGF0ZTIpO1xyXG4gICAgICAgICAgICBweiArPSAxO1xyXG4gICAgICAgICAgICBsZXQgbGVmdFdhbGxzID0gW107XHJcbiAgICAgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdGhpcy5sZWZ0RG9vcnMubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICAgICAgICAgIGxldCB3YWxsTGVmdCA9IHRoaXMubGVmdERvb3JzW2ldLmdldENoaWxkQnlOYW1lKFwid2FsbFwiKTtcclxuICAgICAgICAgICAgICAgIGxldCB3YWxsUG9zID0gY2MudjIod2FsbExlZnQuZ2V0Q29tcG9uZW50KFwiV2FsbFwiKS5wb3NYLCB3YWxsTGVmdC5nZXRDb21wb25lbnQoXCJXYWxsXCIpLnBvc1kpO1xyXG4gICAgICAgICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBhbGxCbG9ja3MubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICAgICAgICAgICAgICBpZiAoYWxsQmxvY2tzW2ldLnkgPT0gd2FsbFBvcy55ICYmIGFsbEJsb2Nrc1tpXS54ID4gd2FsbFBvcy54KSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIGNvbnNvbGUubG9nKFwiaWQ6XCIsd2FsbC5nZXRDaGlsZEJ5TmFtZShcIm51bVwiKS5nZXRDb21wb25lbnQoY2MuTGFiZWwpLnN0cmluZyk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGxlZnRXYWxscy5wdXNoKHdhbGxMZWZ0KTtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgLy8gY29uc29sZS5sb2coXCLlvpfliLDlt6bovrnlopnlo4HmlbDnu4RcIixkYXRlNik7XHJcbiAgICAgICAgICAgIGlmIChsZWZ0V2FsbHMubGVuZ3RoICE9IDApIHtcclxuICAgICAgICAgICAgICAgIGxldCByZXN1bHQgPSB0aGlzLmRldGVjdGluZ0Jsb2NrKFwibGVmdFwiLCBub2RlLmdldENvbXBvbmVudChcIkJsb2NrXCIpLnBvc1gsIG5vZGUuZ2V0Q29tcG9uZW50KFwiQmxvY2tcIikucG9zWSwgYWxsQmxvY2tzKTtcclxuICAgICAgICAgICAgICAgIGlmIChyZXN1bHQgPT0gdHJ1ZSkgcmVzdWx0ID0gdGhpcy5wYXNzV2FsbChyZXN1bHQsIGxlZnRXYWxscywgbm9kZSk7XHJcbiAgICAgICAgICAgICAgICAvLyBjb25zb2xlLmxvZyhcIueisOWIsOW3pui+uee8mOe7k+aenDpcIixqZyk7XHJcbiAgICAgICAgICAgICAgICBpZiAocmVzdWx0KSB7XHJcblxyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuYmxvY2tOdW0gLT0gMTtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLnNwZWNpYWxfVHJlYXRtZW50KG5vZGUpO1xyXG4gICAgICAgICAgICAgICAgICAgIGpnID0gMjtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLmNyZWF0ZVBhcnRpY2xlKG5vZGUsIGpnKTtcclxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gamc7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKG5vZGVQb3MueCA+PSBtYXhYIHx8IGRpcmVjdGlvblsxXSA9PSB0cnVlKSB7XHJcbiAgICAgICAgICAgIC8vIGNvbnN0IGRhdGUzID0gbmV3IERhdGUoKS5nZXRUaW1lKCk7XHJcbiAgICAgICAgICAgIC8vIGNvbnNvbGUubG9nKFwi56Kw5Yiw5Y+z6L6557yYXCIsZGF0ZTMpO1xyXG4gICAgICAgICAgICBweiArPSAxO1xyXG4gICAgICAgICAgICBsZXQgcmlnaHRXYWxscyA9IFtdO1xyXG4gICAgICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRoaXMucmlnaHREb29ycy5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgICAgICAgICAgbGV0IHdhbGxSaWdodCA9IHRoaXMucmlnaHREb29yc1tpXS5nZXRDaGlsZEJ5TmFtZShcIndhbGxcIik7XHJcbiAgICAgICAgICAgICAgICBsZXQgd2FsbFBvcyA9IGNjLnYyKHdhbGxSaWdodC5nZXRDb21wb25lbnQoXCJXYWxsXCIpLnBvc1gsIHdhbGxSaWdodC5nZXRDb21wb25lbnQoXCJXYWxsXCIpLnBvc1kpO1xyXG4gICAgICAgICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBhbGxCbG9ja3MubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICAgICAgICAgICAgICBpZiAoYWxsQmxvY2tzW2ldLnkgPT0gd2FsbFBvcy55ICYmIGFsbEJsb2Nrc1tpXS54IDwgd2FsbFBvcy54KSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIGNvbnNvbGUubG9nKFwiaWQ6XCIsd2FsbC5nZXRDaGlsZEJ5TmFtZShcIm51bVwiKS5nZXRDb21wb25lbnQoY2MuTGFiZWwpLnN0cmluZyk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHJpZ2h0V2FsbHMucHVzaCh3YWxsUmlnaHQpO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgaWYgKHJpZ2h0V2FsbHMubGVuZ3RoICE9IDApIHtcclxuICAgICAgICAgICAgICAgIGxldCByZXN1bHQgPSB0aGlzLmRldGVjdGluZ0Jsb2NrKFwicmlnaHRcIiwgbm9kZS5nZXRDb21wb25lbnQoXCJCbG9ja1wiKS5wb3NYLCBub2RlLmdldENvbXBvbmVudChcIkJsb2NrXCIpLnBvc1ksIGFsbEJsb2Nrcyk7XHJcblxyXG4gICAgICAgICAgICAgICAgaWYgKHJlc3VsdCA9PSB0cnVlKSByZXN1bHQgPSB0aGlzLnBhc3NXYWxsKHJlc3VsdCwgcmlnaHRXYWxscywgbm9kZSk7XHJcbiAgICAgICAgICAgICAgICAvLyBjb25zb2xlLmxvZyhcIueisOWIsOWPs+i+uee8mOe7k+aenDpcIixqZyk7XHJcbiAgICAgICAgICAgICAgICBpZiAocmVzdWx0KSB7XHJcblxyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuYmxvY2tOdW0gLT0gMTtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLnNwZWNpYWxfVHJlYXRtZW50KG5vZGUpO1xyXG4gICAgICAgICAgICAgICAgICAgIGpnID0gMztcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLmNyZWF0ZVBhcnRpY2xlKG5vZGUsIGpnKTtcclxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gamc7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuXHJcblxyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAobm9kZVBvcy55IDw9IG1pblkgfHwgZGlyZWN0aW9uWzJdID09IHRydWUpIHtcclxuICAgICAgICAgICAgcHogKz0gMTtcclxuICAgICAgICAgICAgLy8gY29uc3QgZGF0ZTQgPSBuZXcgRGF0ZSgpLmdldFRpbWUoKTtcclxuICAgICAgICAgICAgLy8gY29uc29sZS5sb2coXCLnorDliLDkuIvovrnnvJhcIixkYXRlNCk7XHJcbiAgICAgICAgICAgIGxldCBkb3duV2FsbHMgPSBbXTtcclxuICAgICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0aGlzLnRvcERvb3JzLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgICAgICAgICBsZXQgd2FsbEJvdHRvbSA9IHRoaXMudG9wRG9vcnNbaV0uZ2V0Q2hpbGRCeU5hbWUoXCJ3YWxsXCIpO1xyXG4gICAgICAgICAgICAgICAgbGV0IHdhbGxQb3MgPSBjYy52Mih3YWxsQm90dG9tLmdldENvbXBvbmVudChcIldhbGxcIikucG9zWCwgd2FsbEJvdHRvbS5nZXRDb21wb25lbnQoXCJXYWxsXCIpLnBvc1kpO1xyXG4gICAgICAgICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBhbGxCbG9ja3MubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICAgICAgICAgICAgICBsZXQgbHVvY2hhID0gTWF0aC5hYnMoYWxsQmxvY2tzW2ldLnkgLSB3YWxsUG9zLnkpXHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKGFsbEJsb2Nrc1tpXS54ID09IHdhbGxQb3MueCAmJiBhbGxCbG9ja3NbaV0ueSA+IHdhbGxQb3MueSAmJiBsdW9jaGEgPD0gbm9kZS5nZXRDb21wb25lbnQoXCJCbG9ja1wiKS5zaHUpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgLy8gY29uc29sZS5sb2coXCJpZDpcIix3YWxsLmdldENoaWxkQnlOYW1lKFwibnVtXCIpLmdldENvbXBvbmVudChjYy5MYWJlbCkuc3RyaW5nKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgZG93bldhbGxzLnB1c2god2FsbEJvdHRvbSk7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICBpZiAoZG93bldhbGxzLmxlbmd0aCAhPSAwKSB7XHJcbiAgICAgICAgICAgICAgICBsZXQgcmVzdWx0ID0gdGhpcy5kZXRlY3RpbmdCbG9jayhcImRvd25cIiwgbm9kZS5nZXRDb21wb25lbnQoXCJCbG9ja1wiKS5wb3NYLCBub2RlLmdldENvbXBvbmVudChcIkJsb2NrXCIpLnBvc1ksIGFsbEJsb2Nrcyk7XHJcbiAgICAgICAgICAgICAgICBpZiAocmVzdWx0ID09IHRydWUpIHJlc3VsdCA9IHRoaXMucGFzc1dhbGwocmVzdWx0LCBkb3duV2FsbHMsIG5vZGUpO1xyXG4gICAgICAgICAgICAgICAgLy8gY29uc29sZS5sb2coXCLnorDliLDkuIvovrnnvJjnu5Pmnpw6XCIsamcpO1xyXG4gICAgICAgICAgICAgICAgaWYgKHJlc3VsdCkge1xyXG5cclxuICAgICAgICAgICAgICAgICAgICB0aGlzLmJsb2NrTnVtIC09IDE7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5zcGVjaWFsX1RyZWF0bWVudChub2RlKTtcclxuICAgICAgICAgICAgICAgICAgICBqZyA9IDE7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5jcmVhdGVQYXJ0aWNsZShub2RlLCBqZyk7XHJcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGpnO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcblxyXG5cclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKG5vZGVQb3MueSA+PSBtYXhZIHx8IGRpcmVjdGlvblszXSA9PSB0cnVlKSB7XHJcbiAgICAgICAgICAgIHB6ICs9IDE7XHJcbiAgICAgICAgICAgIC8vIGNvbnN0IGRhdGU1ID0gbmV3IERhdGUoKS5nZXRUaW1lKCk7XHJcbiAgICAgICAgICAgIC8vIGNvbnNvbGUubG9nKFwi56Kw5Yiw5LiK6L6557yYXCIsZGF0ZTUpO1xyXG4gICAgICAgICAgICBsZXQgdXBXYWxscyA9IFtdO1xyXG4gICAgICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRoaXMuYm90dG9tRG9vcnMubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICAgICAgICAgIGxldCB3YWxsVG9wID0gdGhpcy5ib3R0b21Eb29yc1tpXS5nZXRDaGlsZEJ5TmFtZShcIndhbGxcIik7XHJcbiAgICAgICAgICAgICAgICBsZXQgd2FsbFBvcyA9IGNjLnYyKHdhbGxUb3AuZ2V0Q29tcG9uZW50KFwiV2FsbFwiKS5wb3NYLCB3YWxsVG9wLmdldENvbXBvbmVudChcIldhbGxcIikucG9zWSk7XHJcbiAgICAgICAgICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGFsbEJsb2Nrcy5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgICAgICAgICAgICAgIGxldCBsdW9jaGEgPSBNYXRoLmFicyhhbGxCbG9ja3NbaV0ueSAtIHdhbGxQb3MueSlcclxuICAgICAgICAgICAgICAgICAgICBpZiAoYWxsQmxvY2tzW2ldLnggPT0gd2FsbFBvcy54ICYmIGFsbEJsb2Nrc1tpXS55IDwgd2FsbFBvcy55ICYmIGx1b2NoYSA8PSBub2RlLmdldENvbXBvbmVudChcIkJsb2NrXCIpLnNodSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB1cFdhbGxzLnB1c2god2FsbFRvcCk7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICBpZiAodXBXYWxscy5sZW5ndGggIT0gMCkge1xyXG4gICAgICAgICAgICAgICAgbGV0IHJlc3VsdCA9IHRoaXMuZGV0ZWN0aW5nQmxvY2soXCJ1cFwiLCBub2RlLmdldENvbXBvbmVudChcIkJsb2NrXCIpLnBvc1gsIG5vZGUuZ2V0Q29tcG9uZW50KFwiQmxvY2tcIikucG9zWSwgYWxsQmxvY2tzKTtcclxuICAgICAgICAgICAgICAgIGlmIChyZXN1bHQgPT0gdHJ1ZSkgcmVzdWx0ID0gdGhpcy5wYXNzV2FsbChyZXN1bHQsIHVwV2FsbHMsIG5vZGUpO1xyXG4gICAgICAgICAgICAgICAgLy8gY29uc29sZS5sb2coXCLnorDliLDkuIrovrnnvJjnu5Pmnpw6XCIscmVzdWx0KTtcclxuICAgICAgICAgICAgICAgIGlmIChyZXN1bHQpIHtcclxuXHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5ibG9ja051bSAtPSAxO1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuc3BlY2lhbF9UcmVhdG1lbnQobm9kZSk7XHJcbiAgICAgICAgICAgICAgICAgICAgamcgPSAwO1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuY3JlYXRlUGFydGljbGUobm9kZSwgamcpO1xyXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBqZztcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKHB6ID09IDApIGpnID0gLTE7XHJcbiAgICAgICAgLy8gY29uc3QgZGF0ZTEwID0gbmV3IERhdGUoKS5nZXRUaW1lKCk7XHJcbiAgICAgICAgLy8gY29uc29sZS5sb2coXCLmiYDmnInmo4DmtYvnu5PmnZ/ogJfml7ZcIixkYXRlMTAsamcpO1xyXG4gICAgICAgIHJldHVybiBqZztcclxuICAgIH1cclxuXHJcbiAgICBjaGFuZ2VTdGF0ZSgpIHtcclxuICAgICAgICBpZiAodGhpcy5vcGVuV2FsbC5sZW5ndGggIT0gMCkge1xyXG4gICAgICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRoaXMub3BlbldhbGwubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICAgICAgICAgIHRoaXMub3BlbldhbGxbaV0uZ2V0Q2hpbGRCeU5hbWUoXCJ3YWxsXCIpLmdldENvbXBvbmVudChcIldhbGxcIikuY2hhbmdlTG9jaygpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBpZiAodGhpcy5mcmVlemVXYWxsLmxlbmd0aCAhPSAwKSB7XHJcbiAgICAgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdGhpcy5mcmVlemVXYWxsLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmZyZWV6ZVdhbGxbaV0uZ2V0Q2hpbGRCeU5hbWUoXCJ3YWxsXCIpLmdldENvbXBvbmVudChcIldhbGxcIikuY2hhbmdlRnJlZXplKCk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgLy/mo4DmtYvmmK/lkKblj6/ku6XpgJrov4fpl6hcclxuICAgIHBhc3NXYWxsKGpnLCB3YWxsQXJyYXksIG5vZGUpIHtcclxuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHdhbGxBcnJheS5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgICAgICBpZiAod2FsbEFycmF5W2ldLmdldENvbXBvbmVudChcIldhbGxcIikuc3BlY2lhbCA9PSAyKSB7XHJcbiAgICAgICAgICAgICAgICBjb25zb2xlLmxvZyhcIuWwneivlemAmui/h+W8gOWFs+mXqDpcIiwgd2FsbEFycmF5W2ldLmdldENvbXBvbmVudChcIldhbGxcIikub3Blbik7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgaWYgKHdhbGxBcnJheVtpXS5nZXRDb21wb25lbnQoXCJXYWxsXCIpLnNwZWNpYWwgPT0gMiAmJiB3YWxsQXJyYXlbaV0uZ2V0Q29tcG9uZW50KFwiV2FsbFwiKS5vcGVuID09IGZhbHNlKSB7XHJcbiAgICAgICAgICAgICAgICBqZyA9IGZhbHNlO1xyXG4gICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgLy9jb25zb2xlLmxvZyh3YWxsQXJyYXlbaV0uZ2V0Q2hpbGRCeU5hbWUoXCJ3YWxsXCIpLmdldENvbXBvbmVudChcIldhbGxcIikuY29sb3Isbm9kZS5nZXRDb21wb25lbnQoXCJCbG9ja1wiKS5jb2xvcilcclxuICAgICAgICAgICAgaWYgKHdhbGxBcnJheVtpXS5nZXRDb21wb25lbnQoXCJXYWxsXCIpLmNvbG9yICE9IG5vZGUuZ2V0Q29tcG9uZW50KFwiQmxvY2tcIikuY29sb3IpIHtcclxuXHJcbiAgICAgICAgICAgICAgICBqZyA9IGZhbHNlO1xyXG4gICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgaWYgKG5vZGUuZ2V0Q29tcG9uZW50KFwiQmxvY2tcIikudHlwZSA9PSA1KSB7XHJcbiAgICAgICAgICAgICAgICBpZiAod2FsbEFycmF5W2ldLmdldENvbXBvbmVudChcIldhbGxcIikuc3BlY2lhbCAhPSAxKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgamcgPSBmYWxzZTtcclxuICAgICAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAoamcgPT0gdHJ1ZSAmJiBub2RlLmdldENvbXBvbmVudChcIkJsb2NrXCIpLnR5cGUgPT0gNSkge1xyXG4gICAgICAgICAgICBmb3IgKGxldCBqID0gMDsgaiA8IHdhbGxBcnJheS5sZW5ndGg7IGorKykge1xyXG4gICAgICAgICAgICAgICAgaWYgKHdhbGxBcnJheVtqXS5nZXRDb21wb25lbnQoXCJXYWxsXCIpLnNwZWNpYWwgPT0gMSAmJiB3YWxsQXJyYXlbal0uZ2V0Q29tcG9uZW50KFwiV2FsbFwiKS53YWxsX0luZm8ubGVuZ3RoICE9IDApIHtcclxuICAgICAgICAgICAgICAgICAgICB3YWxsQXJyYXlbal0uZ2V0Q29tcG9uZW50KFwiV2FsbFwiKS5wbGF5U3RhckRvb3IoKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICAvLyBjb25zdCBkYXRlOCA9IG5ldyBEYXRlKCkuZ2V0VGltZSgpO1xyXG4gICAgICAgIC8vIGNvbnNvbGUubG9nKFwi5qOA5rWL6aKc6Imy5piv5ZCm6IO95aSf6YCa6L+H6ZeoXCIsZGF0ZTgpO1xyXG4gICAgICAgIHJldHVybiBqZztcclxuICAgIH1cclxuXHJcbiAgICAvL+ajgOa1i+aWueWdl+WSjOmXqOS4remXtOacieayoeacieWkueadguWFtuS7luWdl1xyXG4gICAgZGV0ZWN0aW5nQmxvY2soZGlyZWN0aW9uLCBwb3NYLCBwb3NZLCBibG9ja3MpIHtcclxuICAgICAgICBsZXQgamcgPSB0cnVlO1xyXG4gICAgICAgIGxldCBpZCA9IFwiXCI7XHJcbiAgICAgICAgaWYgKGJsb2Nrcy5sZW5ndGggPiAwKSB7XHJcbiAgICAgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgYmxvY2tzLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgICAgICAgICBsZXQgcG9zID0gYmxvY2tzW2ldO1xyXG4gICAgICAgICAgICAgICAgbGV0IHggPSBwb3MueDtcclxuICAgICAgICAgICAgICAgIGxldCB5ID0gcG9zLnk7XHJcbiAgICAgICAgICAgICAgICBpZCA9IHRoaXMubWFwQmxvY2tzV2FsbFt4XVt5XS5nZXRDb21wb25lbnQoXCJNYXBCbG9ja1wiKS5ibG9ja19JZDtcclxuICAgICAgICAgICAgICAgIGpnID0gdGhpcy5jaGVja0FsbERpcmVjdGlvbnMoaWQsIGRpcmVjdGlvbiwgeCwgeSk7XHJcbiAgICAgICAgICAgICAgICBpZiAoIWpnKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgLy8gY29uc29sZS5sb2coXCLmlrnlkJHmo4DmtYvmsqHov4dcIik7XHJcbiAgICAgICAgICAgICAgICAgICAgaSA9IDEwMDAwMDA7XHJcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGpnO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIC8vIGNvbnN0IGRhdGU3ID0gbmV3IERhdGUoKS5nZXRUaW1lKCk7XHJcbiAgICAgICAgLy8gY29uc29sZS5sb2coXCLmlrnlkJHmo4DmtYvpgJrov4dcIixkYXRlNyxqZyk7XHJcbiAgICAgICAgcmV0dXJuIGpnO1xyXG4gICAgfVxyXG5cclxuICAgIC8v5qOA5rWL54mp5L2T5ZCE5pa55ZCR5piv5ZCm5pyJ5Yir55qE54mp5Z2X77yM6Ziy5q2i56Kw5Yiw5aKZ5aOB5LqG5L2G5piv5piv5Ye55Ye45b2i54q277yM5aKZ5LiO5Z2X5LmL6Ze05pyJ6Zi75oyh54mp5Z2XXHJcbiAgICBjaGVja0FsbERpcmVjdGlvbnMoaWQsIGRpcmVjdGlvbiwgeCwgeSkge1xyXG4gICAgICAgIGxldCBqZyA9IHRydWU7XHJcblxyXG4gICAgICAgIGlmIChkaXJlY3Rpb24gPT0gXCJsZWZ0XCIpIHtcclxuICAgICAgICAgICAgaWYgKHRoaXMubWFwQmxvY2tzV2FsbFt4IC0gMV1beV0uZ2V0Q29tcG9uZW50KFwiTWFwQmxvY2tcIikuYmxvY2tfSWQgIT0gXCJcIiAmJiB0aGlzLm1hcEJsb2Nrc1dhbGxbeCAtIDFdW3ldLmdldENvbXBvbmVudChcIk1hcEJsb2NrXCIpLmJsb2NrX0lkICE9IFwiV2FsbFwiXHJcbiAgICAgICAgICAgICAgICAmJiB0aGlzLm1hcEJsb2Nrc1dhbGxbeCAtIDFdW3ldLmdldENvbXBvbmVudChcIk1hcEJsb2NrXCIpLmJsb2NrX0lkICE9IGlkKSB7XHJcbiAgICAgICAgICAgICAgICAvLyBjb25zb2xlLmxvZyhcIuW3puS+p+acieeJqeS9k1wiKVxyXG4gICAgICAgICAgICAgICAgamcgPSBmYWxzZTtcclxuICAgICAgICAgICAgICAgIHJldHVybiBqZztcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBpZiAodGhpcy5tYXBCbG9ja3NXYWxsW3ggLSAxXVt5XS5vcGFjaXR5ID09IDI0OSkge1xyXG4gICAgICAgICAgICAgICAgamcgPSBmYWxzZTtcclxuICAgICAgICAgICAgICAgIHJldHVybiBqZztcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBpZiAoKHggLSAyKSA+PSAwKSB7XHJcbiAgICAgICAgICAgICAgICBpZiAodGhpcy5tYXBCbG9ja3NXYWxsW3ggLSAyXVt5XS5nZXRDb21wb25lbnQoXCJNYXBCbG9ja1wiKS5ibG9ja19JZCAhPSBcIlwiICYmIHRoaXMubWFwQmxvY2tzV2FsbFt4IC0gMl1beV0uZ2V0Q29tcG9uZW50KFwiTWFwQmxvY2tcIikuYmxvY2tfSWQgIT0gXCJXYWxsXCJcclxuICAgICAgICAgICAgICAgICAgICAmJiB0aGlzLm1hcEJsb2Nrc1dhbGxbeCAtIDJdW3ldLmdldENvbXBvbmVudChcIk1hcEJsb2NrXCIpLmJsb2NrX0lkICE9IGlkKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgLy8gY29uc29sZS5sb2coXCLlt6bkvqfmnInniankvZNcIilcclxuICAgICAgICAgICAgICAgICAgICBqZyA9IGZhbHNlO1xyXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBqZztcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIGlmICh0aGlzLm1hcEJsb2Nrc1dhbGxbeCAtIDJdW3ldLm9wYWNpdHkgPT0gMjQ5KSB7XHJcbiAgICAgICAgICAgICAgICAgICAgamcgPSBmYWxzZTtcclxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gamc7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSBpZiAoZGlyZWN0aW9uID09IFwicmlnaHRcIikge1xyXG4gICAgICAgICAgICBpZiAodGhpcy5tYXBCbG9ja3NXYWxsW3ggKyAxXVt5XS5nZXRDb21wb25lbnQoXCJNYXBCbG9ja1wiKS5ibG9ja19JZCAhPSBcIlwiICYmIHRoaXMubWFwQmxvY2tzV2FsbFt4ICsgMV1beV0uZ2V0Q29tcG9uZW50KFwiTWFwQmxvY2tcIikuYmxvY2tfSWQgIT0gXCJXYWxsXCJcclxuICAgICAgICAgICAgICAgICYmIHRoaXMubWFwQmxvY2tzV2FsbFt4ICsgMV1beV0uZ2V0Q29tcG9uZW50KFwiTWFwQmxvY2tcIikuYmxvY2tfSWQgIT0gaWQpIHtcclxuICAgICAgICAgICAgICAgIC8vIGNvbnNvbGUubG9nKFwi5Y+z5L6n5pyJ54mp5L2TXCIpXHJcbiAgICAgICAgICAgICAgICBqZyA9IGZhbHNlO1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIGpnO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGlmICh0aGlzLm1hcEJsb2Nrc1dhbGxbeCArIDFdW3ldLm9wYWNpdHkgPT0gMjQ5KSB7XHJcbiAgICAgICAgICAgICAgICBqZyA9IGZhbHNlO1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIGpnO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGlmICgoeCArIDIpIDw9IHRoaXMubWFwQmxvY2tzV2FsbC5sZW5ndGggLSAxKSB7XHJcbiAgICAgICAgICAgICAgICBpZiAodGhpcy5tYXBCbG9ja3NXYWxsW3ggKyAyXVt5XS5nZXRDb21wb25lbnQoXCJNYXBCbG9ja1wiKS5ibG9ja19JZCAhPSBcIlwiICYmIHRoaXMubWFwQmxvY2tzV2FsbFt4ICsgMl1beV0uZ2V0Q29tcG9uZW50KFwiTWFwQmxvY2tcIikuYmxvY2tfSWQgIT0gXCJXYWxsXCJcclxuICAgICAgICAgICAgICAgICAgICAmJiB0aGlzLm1hcEJsb2Nrc1dhbGxbeCArIDJdW3ldLmdldENvbXBvbmVudChcIk1hcEJsb2NrXCIpLmJsb2NrX0lkICE9IGlkKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgLy8gY29uc29sZS5sb2coXCLlj7PkvqfmnInniankvZNcIilcclxuICAgICAgICAgICAgICAgICAgICBqZyA9IGZhbHNlO1xyXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBqZztcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIGlmICh0aGlzLm1hcEJsb2Nrc1dhbGxbeCArIDJdW3ldLm9wYWNpdHkgPT0gMjQ5KSB7XHJcbiAgICAgICAgICAgICAgICAgICAgamcgPSBmYWxzZTtcclxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gamc7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKGRpcmVjdGlvbiA9PSBcInVwXCIpIHtcclxuICAgICAgICAgICAgaWYgKHRoaXMubWFwQmxvY2tzV2FsbFt4XVt5ICsgMV0uZ2V0Q29tcG9uZW50KFwiTWFwQmxvY2tcIikuYmxvY2tfSWQgIT0gXCJcIiAmJiB0aGlzLm1hcEJsb2Nrc1dhbGxbeF1beSArIDFdLmdldENvbXBvbmVudChcIk1hcEJsb2NrXCIpLmJsb2NrX0lkICE9IFwiV2FsbFwiXHJcbiAgICAgICAgICAgICAgICAmJiB0aGlzLm1hcEJsb2Nrc1dhbGxbeF1beSArIDFdLmdldENvbXBvbmVudChcIk1hcEJsb2NrXCIpLmJsb2NrX0lkICE9IGlkKSB7XHJcbiAgICAgICAgICAgICAgICAvLyBjb25zb2xlLmxvZyhcIuS4iuS+p+acieeJqeS9k1wiKVxyXG4gICAgICAgICAgICAgICAgamcgPSBmYWxzZTtcclxuICAgICAgICAgICAgICAgIHJldHVybiBqZztcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBpZiAodGhpcy5tYXBCbG9ja3NXYWxsW3hdW3kgKyAxXS5vcGFjaXR5ID09IDI0OSkge1xyXG4gICAgICAgICAgICAgICAgamcgPSBmYWxzZTtcclxuICAgICAgICAgICAgICAgIHJldHVybiBqZztcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBpZiAoKHkgKyAyKSA8PSB0aGlzLm1hcEJsb2Nrc1dhbGxbeF0ubGVuZ3RoIC0gMSkge1xyXG4gICAgICAgICAgICAgICAgaWYgKHRoaXMubWFwQmxvY2tzV2FsbFt4XVt5ICsgMl0uZ2V0Q29tcG9uZW50KFwiTWFwQmxvY2tcIikuYmxvY2tfSWQgIT0gXCJcIiAmJiB0aGlzLm1hcEJsb2Nrc1dhbGxbeF1beSArIDJdLmdldENvbXBvbmVudChcIk1hcEJsb2NrXCIpLmJsb2NrX0lkICE9IFwiV2FsbFwiXHJcbiAgICAgICAgICAgICAgICAgICAgJiYgdGhpcy5tYXBCbG9ja3NXYWxsW3hdW3kgKyAyXS5nZXRDb21wb25lbnQoXCJNYXBCbG9ja1wiKS5ibG9ja19JZCAhPSBpZCkge1xyXG4gICAgICAgICAgICAgICAgICAgIC8vIGNvbnNvbGUubG9nKFwi5LiK5L6n5pyJ54mp5L2TXCIpXHJcbiAgICAgICAgICAgICAgICAgICAgamcgPSBmYWxzZTtcclxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gamc7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBpZiAodGhpcy5tYXBCbG9ja3NXYWxsW3hdW3kgKyAyXS5vcGFjaXR5ID09IDI0OSkge1xyXG4gICAgICAgICAgICAgICAgICAgIGpnID0gZmFsc2U7XHJcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGpnO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmIChkaXJlY3Rpb24gPT0gXCJkb3duXCIpIHtcclxuICAgICAgICAgICAgaWYgKHRoaXMubWFwQmxvY2tzV2FsbFt4XVt5IC0gMV0uZ2V0Q29tcG9uZW50KFwiTWFwQmxvY2tcIikuYmxvY2tfSWQgIT0gXCJcIiAmJiB0aGlzLm1hcEJsb2Nrc1dhbGxbeF1beSAtIDFdLmdldENvbXBvbmVudChcIk1hcEJsb2NrXCIpLmJsb2NrX0lkICE9IFwiV2FsbFwiXHJcbiAgICAgICAgICAgICAgICAmJiB0aGlzLm1hcEJsb2Nrc1dhbGxbeF1beSAtIDFdLmdldENvbXBvbmVudChcIk1hcEJsb2NrXCIpLmJsb2NrX0lkICE9IGlkKSB7XHJcbiAgICAgICAgICAgICAgICAvLyBjb25zb2xlLmxvZyhcIuS4i+S+p+acieeJqeS9k1wiKVxyXG4gICAgICAgICAgICAgICAgamcgPSBmYWxzZTtcclxuICAgICAgICAgICAgICAgIHJldHVybiBqZztcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBpZiAodGhpcy5tYXBCbG9ja3NXYWxsW3hdW3kgLSAxXS5vcGFjaXR5ID09IDI0OSkge1xyXG4gICAgICAgICAgICAgICAgamcgPSBmYWxzZTtcclxuICAgICAgICAgICAgICAgIHJldHVybiBqZztcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBpZiAoKHkgLSAyKSA+PSAwKSB7XHJcbiAgICAgICAgICAgICAgICBpZiAodGhpcy5tYXBCbG9ja3NXYWxsW3hdW3kgLSAyXS5nZXRDb21wb25lbnQoXCJNYXBCbG9ja1wiKS5ibG9ja19JZCAhPSBcIlwiICYmIHRoaXMubWFwQmxvY2tzV2FsbFt4XVt5IC0gMl0uZ2V0Q29tcG9uZW50KFwiTWFwQmxvY2tcIikuYmxvY2tfSWQgIT0gXCJXYWxsXCJcclxuICAgICAgICAgICAgICAgICAgICAmJiB0aGlzLm1hcEJsb2Nrc1dhbGxbeF1beSAtIDJdLmdldENvbXBvbmVudChcIk1hcEJsb2NrXCIpLmJsb2NrX0lkICE9IGlkKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgLy8gY29uc29sZS5sb2coXCLkuIvkvqfmnInniankvZNcIilcclxuICAgICAgICAgICAgICAgICAgICBqZyA9IGZhbHNlO1xyXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBqZztcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIGlmICh0aGlzLm1hcEJsb2Nrc1dhbGxbeF1beSAtIDJdLm9wYWNpdHkgPT0gMjQ5KSB7XHJcbiAgICAgICAgICAgICAgICAgICAgamcgPSBmYWxzZTtcclxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gamc7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgLy8gY29uc29sZS5sb2coXCLmo4DmtYvniankvZPlkITmlrnlkJHmmK/lkKbmnInliKvnmoTnianlnZdcIixqZyk7XHJcbiAgICAgICAgcmV0dXJuIGpnO1xyXG4gICAgfVxyXG5cclxuICAgIGNoZWNrRGlyYWN0aW9uKGFsbEJsb2NrcywgbWF4WCwgbWF4WSkge1xyXG4gICAgICAgIGxldCBqZyA9IFtmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZV07XHJcbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBhbGxCbG9ja3MubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICAgICAgaWYgKGFsbEJsb2Nrc1tpXS54ID4gMCAmJiBqZ1swXSA9PSBmYWxzZSkge1xyXG4gICAgICAgICAgICAgICAgaWYgKHRoaXMubWFwQmxvY2tzV2FsbFthbGxCbG9ja3NbaV0ueCAtIDFdW2FsbEJsb2Nrc1tpXS55XS5vcGFjaXR5ID09IDI1MCkge1xyXG4gICAgICAgICAgICAgICAgICAgIGpnWzBdID0gdHJ1ZTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBpZiAoamdbMV0gPT0gZmFsc2UpIHtcclxuICAgICAgICAgICAgICAgIGlmICh0aGlzLm1hcEJsb2Nrc1dhbGxbYWxsQmxvY2tzW2ldLnggKyAxXVthbGxCbG9ja3NbaV0ueV0ub3BhY2l0eSA9PSAyNTApIHtcclxuICAgICAgICAgICAgICAgICAgICBqZ1sxXSA9IHRydWU7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgaWYgKGFsbEJsb2Nrc1tpXS55ID4gMCAmJiBqZ1syXSA9PSBmYWxzZSkge1xyXG4gICAgICAgICAgICAgICAgaWYgKHRoaXMubWFwQmxvY2tzV2FsbFthbGxCbG9ja3NbaV0ueF1bYWxsQmxvY2tzW2ldLnkgLSAxXS5vcGFjaXR5ID09IDI1MCkge1xyXG4gICAgICAgICAgICAgICAgICAgIGpnWzJdID0gdHJ1ZTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBpZiAoamdbM10gPT0gZmFsc2UpIHtcclxuICAgICAgICAgICAgICAgIGlmICh0aGlzLm1hcEJsb2Nrc1dhbGxbYWxsQmxvY2tzW2ldLnhdW2FsbEJsb2Nrc1tpXS55ICsgMV0ub3BhY2l0eSA9PSAyNTApIHtcclxuICAgICAgICAgICAgICAgICAgICBqZ1szXSA9IHRydWU7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIGpnO1xyXG4gICAgfVxyXG5cclxuICAgIGNoZWNrTGVmdChhbGxCbG9ja3MpIHtcclxuICAgICAgICBsZXQgamcgPSBmYWxzZTtcclxuICAgICAgICByZXR1cm4gamc7XHJcbiAgICB9XHJcblxyXG4gICAgY2hlY2tSaWdodChhbGxCbG9ja3MsIG1heCkge1xyXG4gICAgICAgIGxldCBqZyA9IGZhbHNlO1xyXG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgYWxsQmxvY2tzLmxlbmd0aDsgaSsrKSB7XHJcblxyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gamc7XHJcbiAgICB9XHJcblxyXG4gICAgY2hlY2tEb3duKGFsbEJsb2Nrcykge1xyXG4gICAgICAgIGxldCBqZyA9IGZhbHNlO1xyXG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgYWxsQmxvY2tzLmxlbmd0aDsgaSsrKSB7XHJcblxyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gamc7XHJcbiAgICB9XHJcblxyXG4gICAgY2hlY2tVcChhbGxCbG9ja3MsIG1heCkge1xyXG4gICAgICAgIGxldCBqZyA9IGZhbHNlO1xyXG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgYWxsQmxvY2tzLmxlbmd0aDsgaSsrKSB7XHJcblxyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gamc7XHJcbiAgICB9XHJcblxyXG5cclxuICAgIC8v54m55q6K5aSE55CG77yM5pa55Z2X5bim6YGT5YW35oiW6ICF6ZyA6KaB5raI6Zmk5Yaw5Z2XXHJcbiAgICBzcGVjaWFsX1RyZWF0bWVudChub2RlKSB7XHJcbiAgICAgICAgbGV0IGZyZWV6ZUJsb2NrID0gdGhpcy5ub2RlLmNoaWxkcmVuLmZpbHRlcihjaGlsZCA9PiB7XHJcbiAgICAgICAgICAgIGlmIChjaGlsZC5nZXRDb21wb25lbnQoXCJCbG9ja1wiKSkge1xyXG4gICAgICAgICAgICAgICAgaWYgKGNoaWxkLmdldENvbXBvbmVudChcIkJsb2NrXCIpLnR5cGUgPT0gNClcclxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gY2hpbGRcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH0pO1xyXG4gICAgICAgIGlmIChmcmVlemVCbG9jay5sZW5ndGggPiAwKSB7XHJcbiAgICAgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgZnJlZXplQmxvY2subGVuZ3RoOyBpKyspIHtcclxuICAgICAgICAgICAgICAgIGZyZWV6ZUJsb2NrW2ldLmdldENoaWxkQnlOYW1lKFwiZnJlZXplXCIpLmdldENvbXBvbmVudChcIkZyZWV6ZVwiKS5yZWR1Y2UoMSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGlmIChub2RlLmdldENvbXBvbmVudChcIkJsb2NrXCIpLnR5cGUgPT0gMiB8fCBub2RlLmdldENvbXBvbmVudChcIkJsb2NrXCIpLnR5cGUgPT0gNCkge1xyXG4gICAgICAgICAgICBsZXQgbG9ja0Jsb2NrID0gdGhpcy5ub2RlLmNoaWxkcmVuLmZpbHRlcihjaGlsZCA9PiB7XHJcbiAgICAgICAgICAgICAgICBpZiAoY2hpbGQuZ2V0Q29tcG9uZW50KFwiQmxvY2tcIikpIHtcclxuICAgICAgICAgICAgICAgICAgICBpZiAoY2hpbGQuZ2V0Q29tcG9uZW50KFwiQmxvY2tcIikudHlwZSA9PSAzKVxyXG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gY2hpbGRcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgIGlmIChsb2NrQmxvY2subGVuZ3RoID4gMClcclxuICAgICAgICAgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgbG9ja0Jsb2NrLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgbG9ja0Jsb2NrW2ldLmdldENoaWxkQnlOYW1lKFwibG9ja1wiKS5nZXRDb21wb25lbnQoXCJMb2NrXCIpLnJlZHVjZSgpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdGhpcy5ibG9ja3MubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICAgICAgaWYgKHRoaXMuYmxvY2tzW2ldID09IG5vZGUpIHtcclxuICAgICAgICAgICAgICAgIHRoaXMuYmxvY2tzLnNwbGljZShpLCAxKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuXHJcbiAgICB9XHJcblxyXG4gICAgLy/liKTmlq3muLjmiI/miJDlip/kuIvkuIDlhbNcclxuICAgIG5leHRMZXZlbCgpIHtcclxuICAgICAgICB0aGlzLnBhdXNlID0gZmFsc2U7XHJcbiAgICAgICAgdGhpcy5vcGVuSWNlKCk7XHJcblxyXG4gICAgICAgIHRoaXMuYmxvY2tOdW0gPSB0aGlzLmJsb2Nrcy5sZW5ndGg7XHJcblxyXG4gICAgICAgIGlmICh0aGlzLmJsb2NrTnVtID09IDAgJiYgIXRoaXMuZ2FtZVdpbiAmJiAhdGhpcy5nYW1lT3Zlcikge1xyXG4gICAgICAgICAgICAvLyBhbGVydChcIua4uOaIj+aIkOWKn1wiKTtcclxuICAgICAgICAgICAgdGhpcy5nYW1lV2luID0gdHJ1ZTtcclxuXHJcbiAgICAgICAgICAgIHRoaXMuc3RvcFRpbWVDdXREb3duKCk7XHJcbiAgICAgICAgICAgIC8vIGNvbnNvbGUubG9nKFwi5oiQ5Yqf5raI6Zmk5LiA5LiqXCIpO1xyXG4gICAgICAgICAgICBjYy5meC5HYW1lVG9vbC5jaGFuZ2VDb2luKDQwKTtcclxuICAgICAgICAgICAgbGV0IHRpbWVEYXRhID0ge1xyXG4gICAgICAgICAgICAgICAgY291bnRfVGltZTogdGhpcy5jb3VudF9UaW1lLFxyXG4gICAgICAgICAgICAgICAgYWRkX1RpbWU6IHRoaXMuYWRkX1RpbWVcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBjYy5meC5HYW1lVG9vbC5hZGRMZXZlbCh0aW1lRGF0YSk7XHJcblxyXG4gICAgICAgICAgICB0aGlzLmNoZWNrX05ld01vZGUoKTtcclxuICAgICAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLm5vZGUucGFyZW50LnBhcmVudC5nZXRDaGlsZEJ5TmFtZShcIldpblwiKS5hY3RpdmUgPSB0cnVlO1xyXG4gICAgICAgICAgICB9LCA2NjApO1xyXG4gICAgICAgICAgICAvLyBjb25zb2xlLmxvZyhcIua4uOaIj+aIkOWKn1wiKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgIGlmICh0aGlzLmdhbWVPdmVyID09IHRydWUpIHtcclxuICAgICAgICAgICAgICAgIHRoaXMuZmFpbExldmVsKG51bGwpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIGNoZWNrX05ld01vZGUoKSB7XHJcbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBjYy5meC5HYW1lQ29uZmlnLk5FV19MRVZFTC5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgICAgICBpZiAoKGNjLmZ4LkdhbWVDb25maWcuR01fSU5GTy5sZXZlbCArIDEpID09IGNjLmZ4LkdhbWVDb25maWcuTkVXX0xFVkVMW2ldLmxldmVsKSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLm5ld19tb2RlID0gMztcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICB3aW5MZXZlbCgpIHtcclxuICAgICAgICBjYy5meC5BdWRpb01hbmFnZXIuX2luc3RhbmNlLnBsYXlFZmZlY3QoXCJhbm5pdV9CaWdcIiwgbnVsbCk7XHJcbiAgICAgICAgaWYgKGNjLmZ4LkdhbWVDb25maWcuR01fSU5GTy5sZXZlbCA+IDE1Nikge1xyXG4gICAgICAgICAgICBjYy5meC5HYW1lQ29uZmlnLkdNX0lORk8ubGV2ZWwgPSAxNTY7XHJcbiAgICAgICAgICAgIE1hcENvbnJvbGVyLl9pbnN0YW5jZSA9IG51bGw7XHJcblxyXG4gICAgICAgICAgICBpZiAodGhpcy5uZXdfbW9kZSA9PSAzKSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLm5vZGUucGFyZW50LnBhcmVudC5nZXRDaGlsZEJ5TmFtZShcIldpblwiKS5hY3RpdmUgPSBmYWxzZTtcclxuICAgICAgICAgICAgICAgIHRoaXMub3Blbk5ld01vZGUoMik7XHJcbiAgICAgICAgICAgICAgICBjYy5meC5HYW1lQ29uZmlnLkxFVkVMX0lORk9faW5pdChmYWxzZSwgMCk7XHJcbiAgICAgICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgLy8gY2MuZnguR2FtZUNvbmZpZy5MRVZFTF9JTkZPX2luaXQodHJ1ZSk7XHJcbiAgICAgICAgICAgIGNjLmZ4LkF1ZGlvTWFuYWdlci5faW5zdGFuY2UucGxheUVmZmVjdChcInpodWFuMVwiLCBudWxsKTtcclxuICAgICAgICAgICAgdGhpcy5ub2RlLnBhcmVudC5wYXJlbnQucGFyZW50LmdldENoaWxkQnlOYW1lKFwiemh1YW5jaGFuZ1wiKS5hY3RpdmUgPSB0cnVlO1xyXG4gICAgICAgICAgICB0aGlzLm5vZGUucGFyZW50LnBhcmVudC5wYXJlbnQuZ2V0Q2hpbGRCeU5hbWUoXCJ6aHVhbmNoYW5nXCIpLmdldENvbXBvbmVudChzcC5Ta2VsZXRvbikuc2V0QW5pbWF0aW9uKDEsIFwidXBcIiwgZmFsc2UpO1xyXG4gICAgICAgICAgICAvLyB0aGlzLm5vZGUucGFyZW50LnBhcmVudC5wYXJlbnQuZ2V0Q2hpbGRCeU5hbWUoXCJ6aHVhbmNoYW5nXCIpLmdldENvbXBvbmVudChzcC5Ta2VsZXRvbikuc2V0Q29tcGxldGVMaXN0ZW5lcigoZW50cnkpID0+IHtcclxuICAgICAgICAgICAgLy8gICAgIGlmIChlbnRyeS5hbmltYXRpb24ubmFtZSA9PT0gXCJ1cFwiKSB7XHJcbiAgICAgICAgICAgIC8vICAgICAgICAgLy8g5Yqo55S75pKt5pS+57uT5p2f5ZCO5omn6KGM55qE6YC76L6RXHJcbiAgICAgICAgICAgIC8vICAgICAgICAgdGhpcy5ub2RlLnBhcmVudC5wYXJlbnQucGFyZW50LmdldENoaWxkQnlOYW1lKFwiemh1YW5jaGFuZ1wiKS5hY3RpdmUgPSBmYWxzZTtcclxuICAgICAgICAgICAgLy8gICAgIH1cclxuICAgICAgICAgICAgLy8gfSk7XHJcblxyXG4gICAgICAgICAgICBjYy5kaXJlY3Rvci5wcmVsb2FkU2NlbmUoXCJIb21lU2NlbmVcIiwgKGVyciwgYXNzZXQpID0+IHtcclxuICAgICAgICAgICAgICAgIGlmIChlcnIpIHtcclxuICAgICAgICAgICAgICAgICAgICBjb25zb2xlLmVycm9yKCfliqjmgIHliqDovb0gUHJlZmFiIOWksei0pTonLCBlcnIpO1xyXG4gICAgICAgICAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgY2MuZGlyZWN0b3IubG9hZFNjZW5lKFwiSG9tZVNjZW5lXCIpO1xyXG4gICAgICAgICAgICB9LCAxMjAwKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSB7XHJcblxyXG4gICAgICAgICAgICAvLyBjb25zb2xlLmxvZyhcIuS4i+S4gOWFs1wiKTtcclxuICAgICAgICAgICAgTWFwQ29ucm9sZXIuX2luc3RhbmNlID0gbnVsbDtcclxuXHJcbiAgICAgICAgICAgIGlmICh0aGlzLm5ld19tb2RlID09IDMpIHtcclxuICAgICAgICAgICAgICAgIHRoaXMubm9kZS5wYXJlbnQucGFyZW50LmdldENoaWxkQnlOYW1lKFwiV2luXCIpLmFjdGl2ZSA9IGZhbHNlO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5vcGVuTmV3TW9kZSgyKTtcclxuICAgICAgICAgICAgICAgIGNjLmZ4LkdhbWVDb25maWcuTEVWRUxfSU5GT19pbml0KGZhbHNlLCAwKTtcclxuICAgICAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBjYy5meC5BdWRpb01hbmFnZXIuX2luc3RhbmNlLnBsYXlFZmZlY3QoXCJ6aHVhbjFcIiwgbnVsbCk7XHJcbiAgICAgICAgICAgIHRoaXMubm9kZS5wYXJlbnQucGFyZW50LnBhcmVudC5nZXRDaGlsZEJ5TmFtZShcInpodWFuY2hhbmdcIikuYWN0aXZlID0gdHJ1ZTtcclxuICAgICAgICAgICAgdGhpcy5ub2RlLnBhcmVudC5wYXJlbnQucGFyZW50LmdldENoaWxkQnlOYW1lKFwiemh1YW5jaGFuZ1wiKS5nZXRDb21wb25lbnQoc3AuU2tlbGV0b24pLnNldEFuaW1hdGlvbigxLCBcInVwXCIsIGZhbHNlKTtcclxuICAgICAgICAgICAgLy8gdGhpcy5ub2RlLnBhcmVudC5wYXJlbnQucGFyZW50LmdldENoaWxkQnlOYW1lKFwiemh1YW5jaGFuZ1wiKS5nZXRDb21wb25lbnQoc3AuU2tlbGV0b24pLnNldENvbXBsZXRlTGlzdGVuZXIoKGVudHJ5KSA9PiB7XHJcbiAgICAgICAgICAgIC8vICAgICBpZiAoZW50cnkuYW5pbWF0aW9uLm5hbWUgPT09IFwidXBcIikge1xyXG4gICAgICAgICAgICAvLyAgICAgICAgIC8vIOWKqOeUu+aSreaUvue7k+adn+WQjuaJp+ihjOeahOmAu+i+kVxyXG4gICAgICAgICAgICAvLyAgICAgICAgIHRoaXMubm9kZS5wYXJlbnQucGFyZW50LnBhcmVudC5nZXRDaGlsZEJ5TmFtZShcInpodWFuY2hhbmdcIikuYWN0aXZlID0gZmFsc2U7XHJcbiAgICAgICAgICAgIC8vICAgICB9XHJcbiAgICAgICAgICAgIC8vIH0pO1xyXG4gICAgICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgICAgICAgICAgIGNjLmZ4LkdhbWVDb25maWcuTEVWRUxfSU5GT19pbml0KHRydWUsIDApO1xyXG4gICAgICAgICAgICB9LCAxMjAwKTtcclxuXHJcbiAgICAgICAgICAgIC8vIHRoaXMubm9kZS5wYXJlbnQucGFyZW50LnBhcmVudC5kZXN0cm95KCk7XHJcblxyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBhZ2FpbkxldmVsKCkge1xyXG4gICAgICAgIGNjLmZ4LkF1ZGlvTWFuYWdlci5faW5zdGFuY2UucGxheUVmZmVjdChcImFubml1X0JpZ1wiLCBudWxsKTtcclxuICAgICAgICBpZiAoY2MuZnguR2FtZUNvbmZpZy5HTV9JTkZPLmhwIDwgMSkge1xyXG4gICAgICAgICAgICBNaW5pR2FtZVNkay5BUEkuc2hvd1RvYXN0KFwi5L2T5Yqb5YC85LiN6LazXCIpO1xyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmICghdGhpcy5hZ2FpbkNhblRvdWNoKSByZXR1cm47XHJcblxyXG4gICAgICAgIHRoaXMuYWdhaW5DYW5Ub3VjaCA9IGZhbHNlO1xyXG5cclxuICAgICAgICBNYXBDb25yb2xlci5faW5zdGFuY2UgPSBudWxsO1xyXG4gICAgICAgIGNjLmZ4LkF1ZGlvTWFuYWdlci5faW5zdGFuY2UucGxheUVmZmVjdChcInpodWFuMVwiLCBudWxsKTtcclxuICAgICAgICB0aGlzLm5vZGUucGFyZW50LnBhcmVudC5wYXJlbnQuZ2V0Q2hpbGRCeU5hbWUoXCJ6aHVhbmNoYW5nXCIpLmFjdGl2ZSA9IHRydWU7XHJcbiAgICAgICAgdGhpcy5ub2RlLnBhcmVudC5wYXJlbnQucGFyZW50LmdldENoaWxkQnlOYW1lKFwiemh1YW5jaGFuZ1wiKS5nZXRDb21wb25lbnQoc3AuU2tlbGV0b24pLnNldEFuaW1hdGlvbigxLCBcInVwXCIsIGZhbHNlKTtcclxuICAgICAgICAvLyB0aGlzLm5vZGUucGFyZW50LnBhcmVudC5wYXJlbnQuZ2V0Q2hpbGRCeU5hbWUoXCJ6aHVhbmNoYW5nXCIpLmdldENvbXBvbmVudChzcC5Ta2VsZXRvbikuc2V0Q29tcGxldGVMaXN0ZW5lcigoZW50cnkpID0+IHtcclxuICAgICAgICAvLyAgICAgaWYgKGVudHJ5LmFuaW1hdGlvbi5uYW1lID09PSBcInVwXCIpIHtcclxuICAgICAgICAvLyAgICAgICAgIC8vIOWKqOeUu+aSreaUvue7k+adn+WQjuaJp+ihjOeahOmAu+i+kVxyXG4gICAgICAgIC8vICAgICAgICAgdGhpcy5ub2RlLnBhcmVudC5wYXJlbnQucGFyZW50LmdldENoaWxkQnlOYW1lKFwiemh1YW5jaGFuZ1wiKS5hY3RpdmUgPSBmYWxzZTtcclxuICAgICAgICAvLyAgICAgfVxyXG4gICAgICAgIC8vIH0pO1xyXG4gICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICAgICAgICBjYy5meC5HYW1lQ29uZmlnLkxFVkVMX0lORk9faW5pdCh0cnVlLCAwKTtcclxuICAgICAgICB9LCAxMjAwKTtcclxuICAgICAgICAvLyB0aGlzLm5vZGUucGFyZW50LnBhcmVudC5wYXJlbnQuZGVzdHJveSgpO1xyXG4gICAgfVxyXG5cclxuICAgIHJldmlld0xldmVsKCkge1xyXG4gICAgICAgIGNjLmZ4LkF1ZGlvTWFuYWdlci5faW5zdGFuY2UucGxheUVmZmVjdChcImFubml1X0JpZ1wiLCBudWxsKTtcclxuICAgICAgICBsZXQgY29pbiA9IDkwMDtcclxuICAgICAgICBpZiAoY2MuZnguR2FtZUNvbmZpZy5HTV9JTkZPLnJldmlldyA9PSAxKSBjb2luID0gMTkwMDtcclxuICAgICAgICBlbHNlIGlmIChjYy5meC5HYW1lQ29uZmlnLkdNX0lORk8ucmV2aWV3ID09IDIpIGNvaW4gPSAyNTAwO1xyXG4gICAgICAgIC8vIGNvbnNvbGUubG9nKFwi6Ieq6Lqr6YeR5biBOlwiLGNjLmZ4LkdhbWVDb25maWcuR01fSU5GTy5jb2luLFwi5raI6ICX6YeR5biBOlwiLGNvaW4pO1xyXG4gICAgICAgIGlmIChjYy5meC5HYW1lQ29uZmlnLkdNX0lORk8uY29pbiA8IE1hdGguYWJzKGNvaW4pKSB7XHJcbiAgICAgICAgICAgIE1pbmlHYW1lU2RrLkFQSS5zaG93VG9hc3QoXCLph5HluIHkuI3otrPvvIzml6Dms5XliqDml7bpl7RcIik7XHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgIHRoaXMucnVuUmV3aXZlKC1jb2luKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgcnVuUmV3aXZlKGRhdGEpIHtcclxuICAgICAgICBjb25zb2xlLmxvZyhcIuWkjea0u+Wbnuiwg+WHveaVsOWGhVwiLCBkYXRhKTtcclxuICAgICAgICBjYy5meC5HYW1lVG9vbC5jaGFuZ2VDb2luKGRhdGEpO1xyXG4gICAgICAgIE1pbmlHYW1lU2RrLkFQSS5zaG93VG9hc3QoXCLnu6fnu63muLjmiI9cIik7XHJcblxyXG4gICAgICAgIGlmIChjYy5meC5HYW1lQ29uZmlnLkdNX0lORk8ucmV2aWV3IDwgMilcclxuICAgICAgICAgICAgY2MuZnguR2FtZUNvbmZpZy5HTV9JTkZPLnJldmlldyArPSAxO1xyXG5cclxuICAgICAgICB0aGlzLmdhbWVPdmVyID0gZmFsc2U7XHJcbiAgICAgICAgdGhpcy50aW1lTnVtYmVyID0gMjE7XHJcbiAgICAgICAgdGhpcy5hZGRfVGltZSArPSAyMDtcclxuICAgICAgICB0aGlzLnBhdXNlID0gZmFsc2U7XHJcbiAgICAgICAgdGhpcy5ub2RlLnBhcmVudC5wYXJlbnQuZ2V0Q2hpbGRCeU5hbWUoXCJMb3NlXCIpLmFjdGl2ZSA9IGZhbHNlO1xyXG4gICAgICAgIHRoaXMuc3RhcnRUaW1lQ3V0RG93bigpO1xyXG4gICAgfVxyXG5cclxuXHJcblxyXG4gICAgaG9tZUJ0bigpIHtcclxuICAgICAgICAvLyBhbGVydChcIua4uOaIj+Wksei0pVwiKTtcclxuICAgICAgICBjYy5meC5BdWRpb01hbmFnZXIuX2luc3RhbmNlLnBsYXlFZmZlY3QoXCJhbm5pdV9CaWdcIiwgbnVsbCk7XHJcbiAgICAgICAgaWYgKCF0aGlzLmhvbWVDYW5Ub3VjaCkgcmV0dXJuO1xyXG4gICAgICAgIHRoaXMuaG9tZUNhblRvdWNoID0gZmFsc2U7XHJcbiAgICAgICAgdGhpcy5ub2RlLnBhcmVudC5wYXJlbnQuZ2V0Q2hpbGRCeU5hbWUoXCJMb3NlXCIpLmFjdGl2ZSA9IHRydWU7XHJcbiAgICAgICAgdGhpcy5ub2RlLnBhcmVudC5wYXJlbnQuZ2V0Q2hpbGRCeU5hbWUoXCJMb3NlXCIpLmdldENoaWxkQnlOYW1lKFwiVGltZVwiKS5hY3RpdmUgPSBmYWxzZTtcclxuICAgICAgICB0aGlzLm5vZGUucGFyZW50LnBhcmVudC5nZXRDaGlsZEJ5TmFtZShcIkxvc2VcIikuZ2V0Q2hpbGRCeU5hbWUoXCJCb29tXCIpLmFjdGl2ZSA9IGZhbHNlO1xyXG4gICAgICAgIHRoaXMubm9kZS5wYXJlbnQucGFyZW50LmdldENoaWxkQnlOYW1lKFwiTG9zZVwiKS5nZXRDaGlsZEJ5TmFtZShcIkxvY2tcIikuYWN0aXZlID0gZmFsc2U7XHJcbiAgICAgICAgdGhpcy5ub2RlLnBhcmVudC5wYXJlbnQuZ2V0Q2hpbGRCeU5hbWUoXCJMb3NlXCIpLmdldENoaWxkQnlOYW1lKFwiSGVhbHRoXCIpLmFjdGl2ZSA9IHRydWU7XHJcbiAgICAgICAgbGV0IGRhdGEgPSB7XHJcbiAgICAgICAgICAgIHRpbWU6IHRoaXMuY291bnRfVGltZSxcclxuICAgICAgICAgICAgYWRkX1RpbWU6IHRoaXMuYWRkX1RpbWUsXHJcbiAgICAgICAgICAgIHJlc3VsdDogXCJmYWlsXCJcclxuICAgICAgICB9XHJcbiAgICAgICAgY2MuZnguR2FtZVRvb2wuc2h1c2h1X1RyYWNrKFwiZmluaXNoX3N0YWdlXCIsIGRhdGEpO1xyXG4gICAgICAgIGlmICh0aGlzLmdhbWVTdGFydCA9PSB0cnVlKSB7XHJcbiAgICAgICAgICAgIGNjLmZ4LkdhbWVUb29sLnNldFVzZXJIZWFsdGgoLTEsIChkYXRhKSA9PiB7XHJcbiAgICAgICAgICAgIH0pXHJcbiAgICAgICAgfVxyXG4gICAgICAgIC8vIHRoaXMubm9kZS5wYXJlbnQucGFyZW50LnBhcmVudC5kZXN0cm95KCk7XHJcbiAgICB9XHJcblxyXG4gICAgcmV0dXJuSG9tZSgpIHtcclxuICAgICAgICBjYy5meC5BdWRpb01hbmFnZXIuX2luc3RhbmNlLnBsYXlFZmZlY3QoXCJhbm5pdV9CaWdcIiwgbnVsbCk7XHJcbiAgICAgICAgaWYgKE1hcENvbnJvbGVyLl9pbnN0YW5jZSA9IG51bGwpIHtcclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuICAgICAgICAvLyBNaW5pR2FtZVNkay5BUEkuc2hvd1RvYXN0KFwi5L2T5Yqb5YC85YeP5bCRXCIpO1xyXG4gICAgICAgIE1hcENvbnJvbGVyLl9pbnN0YW5jZSA9IG51bGw7XHJcbiAgICAgICAgY2MuZnguR2FtZUNvbmZpZy5MRVZFTF9JTkZPX2luaXQoZmFsc2UsIDApO1xyXG4gICAgICAgIGlmICh0aGlzLm5ld19tb2RlID09IDMpIHtcclxuICAgICAgICAgICAgdGhpcy5ub2RlLnBhcmVudC5wYXJlbnQuZ2V0Q2hpbGRCeU5hbWUoXCJXaW5cIikuYWN0aXZlID0gZmFsc2U7XHJcbiAgICAgICAgICAgIHRoaXMub3Blbk5ld01vZGUoMSk7XHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcbiAgICAgICAgY2MuZnguQXVkaW9NYW5hZ2VyLl9pbnN0YW5jZS5wbGF5RWZmZWN0KFwiemh1YW4xXCIsIG51bGwpO1xyXG4gICAgICAgIHRoaXMubm9kZS5wYXJlbnQucGFyZW50LnBhcmVudC5nZXRDaGlsZEJ5TmFtZShcInpodWFuY2hhbmdcIikuYWN0aXZlID0gdHJ1ZTtcclxuICAgICAgICB0aGlzLm5vZGUucGFyZW50LnBhcmVudC5wYXJlbnQuZ2V0Q2hpbGRCeU5hbWUoXCJ6aHVhbmNoYW5nXCIpLmdldENvbXBvbmVudChzcC5Ta2VsZXRvbikuc2V0QW5pbWF0aW9uKDEsIFwidXBcIiwgZmFsc2UpO1xyXG4gICAgICAgIGNjLmRpcmVjdG9yLnByZWxvYWRTY2VuZShcIkhvbWVTY2VuZVwiLCAoZXJyLCBhc3NldCkgPT4ge1xyXG4gICAgICAgICAgICBpZiAoZXJyKSB7XHJcbiAgICAgICAgICAgICAgICBjb25zb2xlLmVycm9yKCfliqjmgIHliqDovb0gUHJlZmFiIOWksei0pTonLCBlcnIpO1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgICAgICB9XHJcblxyXG4gICAgICAgIH0pO1xyXG5cclxuICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgICAgICAgY2MuZGlyZWN0b3IubG9hZFNjZW5lKFwiSG9tZVNjZW5lXCIpO1xyXG4gICAgICAgIH0sIDEyMDApO1xyXG4gICAgfVxyXG5cclxuICAgIC8v5Yik5pat5ri45oiP5aSx6LSlXHJcbiAgICBmYWlsTGV2ZWwodHlwZSkge1xyXG4gICAgICAgIHRoaXMuc3RvcFRpbWVDdXREb3duKCk7XHJcbiAgICAgICAgaWYgKHRoaXMuZ2FtZU92ZXIgPT0gdHJ1ZSB8fCB0aGlzLmdhbWVXaW4gPT0gdHJ1ZSkge1xyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBsZXQgdGltZSA9IDA7XHJcbiAgICAgICAgdGhpcy5nYW1lT3ZlciA9IHRydWU7XHJcbiAgICAgICAgaWYgKHR5cGUgPT0gXCJib29tXCIpIHtcclxuICAgICAgICAgICAgdGltZSA9IDIwMDA7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICAgICAgICB0aGlzLm5vZGUucGFyZW50LnBhcmVudC5nZXRDaGlsZEJ5TmFtZShcIkxvc2VcIikuYWN0aXZlID0gdHJ1ZTtcclxuICAgICAgICAgICAgdGhpcy5ub2RlLnBhcmVudC5wYXJlbnQuZ2V0Q2hpbGRCeU5hbWUoXCJMb3NlXCIpLmdldENoaWxkQnlOYW1lKFwiVGltZVwiKS5hY3RpdmUgPSB0cnVlO1xyXG4gICAgICAgICAgICB0aGlzLm5vZGUucGFyZW50LnBhcmVudC5nZXRDaGlsZEJ5TmFtZShcIkxvc2VcIikuZ2V0Q2hpbGRCeU5hbWUoXCJCb29tXCIpLmFjdGl2ZSA9IGZhbHNlO1xyXG4gICAgICAgICAgICBsZXQgYnV5QnRuID0gdGhpcy5ub2RlLnBhcmVudC5wYXJlbnQuZ2V0Q2hpbGRCeU5hbWUoXCJMb3NlXCIpLmdldENoaWxkQnlOYW1lKFwiVGltZVwiKS5nZXRDaGlsZEJ5TmFtZShcImJ1eUJ0blwiKTtcclxuICAgICAgICAgICAgYnV5QnRuLmdldENoaWxkQnlOYW1lKFwiY29pbjFcIikuYWN0aXZlID0gYnV5QnRuLmdldENoaWxkQnlOYW1lKFwiY29pbjJcIikuYWN0aXZlID0gYnV5QnRuLmdldENoaWxkQnlOYW1lKFwiY29pbjNcIikuYWN0aXZlID0gZmFsc2U7XHJcbiAgICAgICAgICAgIGlmIChjYy5meC5HYW1lQ29uZmlnLkdNX0lORk8ucmV2aWV3ID09IDApIGJ1eUJ0bi5nZXRDaGlsZEJ5TmFtZShcImNvaW4xXCIpLmFjdGl2ZSA9IHRydWU7XHJcbiAgICAgICAgICAgIGVsc2UgaWYgKGNjLmZ4LkdhbWVDb25maWcuR01fSU5GTy5yZXZpZXcgPT0gMSkgYnV5QnRuLmdldENoaWxkQnlOYW1lKFwiY29pbjJcIikuYWN0aXZlID0gdHJ1ZTtcclxuICAgICAgICAgICAgZWxzZSBpZiAoY2MuZnguR2FtZUNvbmZpZy5HTV9JTkZPLnJldmlldyA9PSAyKSBidXlCdG4uZ2V0Q2hpbGRCeU5hbWUoXCJjb2luM1wiKS5hY3RpdmUgPSB0cnVlO1xyXG4gICAgICAgICAgICBpZiAodHlwZSkge1xyXG4gICAgICAgICAgICAgICAgaWYgKHR5cGUgPT0gXCJib29tXCIpIHtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLm5vZGUucGFyZW50LnBhcmVudC5nZXRDaGlsZEJ5TmFtZShcIkxvc2VcIikuZ2V0Q2hpbGRCeU5hbWUoXCJUaW1lXCIpLmFjdGl2ZSA9IGZhbHNlO1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMubm9kZS5wYXJlbnQucGFyZW50LmdldENoaWxkQnlOYW1lKFwiTG9zZVwiKS5nZXRDaGlsZEJ5TmFtZShcIkJvb21cIikuYWN0aXZlID0gdHJ1ZTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH0sIHRpbWUpO1xyXG5cclxuICAgICAgICAvLyBjb25zb2xlLmxvZyhcIua4uOaIj+Wksei0pVwiKTtcclxuICAgIH1cclxuXHJcbiAgICAvL+aJk+W8gOaWsOaooeW8j+W8ueeql1xyXG4gICAgb3Blbk5ld01vZGUodHlwZSkge1xyXG4gICAgICAgIGxldCBpbmRleCA9IDA7XHJcbiAgICAgICAgY29uc3QgQkxPQ0tTX1BFUl9GUkFNRSA9IDU7IC8vIOavj+W4p+mUgOavgeeahOaWueWdl+aVsOmHj1xyXG4gICAgICAgIGNvbnN0IGRlc3Ryb3lCbG9ja3MgPSAoKSA9PiB7XHJcbiAgICAgICAgICAgIGNvbnN0IGVuZEluZGV4ID0gTWF0aC5taW4oaW5kZXggKyBCTE9DS1NfUEVSX0ZSQU1FLCB0aGlzLmJsb2Nrcy5sZW5ndGgpO1xyXG4gICAgICAgICAgICBmb3IgKDsgaW5kZXggPCBlbmRJbmRleDsgaW5kZXgrKykge1xyXG4gICAgICAgICAgICAgICAgaWYgKHRoaXMuYmxvY2tzW2luZGV4XSkge1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuYmxvY2tzW2luZGV4XS5kZXN0cm95KCk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgLy8g5aaC5p6c6L+Y5pyJ5pa55Z2X5pyq6ZSA5q+B77yM5LiL5LiA5bin57un57utXHJcbiAgICAgICAgICAgIGlmIChpbmRleCA8IHRoaXMuYmxvY2tzLmxlbmd0aCkge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5zY2hlZHVsZU9uY2UoZGVzdHJveUJsb2NrcywgMCk7XHJcbiAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9O1xyXG4gICAgICAgIC8vIOW8gOWni+WIhuW4p+mUgOavgeaWueWdl1xyXG4gICAgICAgIGRlc3Ryb3lCbG9ja3MoKTtcclxuICAgICAgICB0aGlzLm5vZGUucGFyZW50LnBhcmVudC5nZXRDaGlsZEJ5TmFtZShcIk5ld01vZGVcIikuYWN0aXZlID0gdHJ1ZTtcclxuICAgICAgICB0aGlzLm5vZGUucGFyZW50LnBhcmVudC5nZXRDaGlsZEJ5TmFtZShcIk5ld01vZGVcIikuZ2V0Q29tcG9uZW50KFwiTmV3TW9kZVwiKS5zZXRNb2RlKHR5cGUpO1xyXG4gICAgfVxyXG5cclxuXHJcbiAgICBkb3duRG9vcihjb2xvciwgdHlwZSkge1xyXG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdGhpcy53YWxsQXJyYXkubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICAgICAgaWYgKHRoaXMud2FsbEFycmF5W2ldLmdldENoaWxkQnlOYW1lKFwid2FsbFwiKS5nZXRDb21wb25lbnQoXCJXYWxsXCIpLmNvbG9yID09IGNvbG9yKSB7XHJcbiAgICAgICAgICAgICAgICBpZiAodHlwZSkge1xyXG4gICAgICAgICAgICAgICAgICAgIGlmICh0eXBlID09IDUpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMud2FsbEFycmF5W2ldLmdldENoaWxkQnlOYW1lKFwid2FsbFwiKS5nZXRDb21wb25lbnQoXCJXYWxsXCIpLnNwZWNpYWwgPT0gMSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy53YWxsQXJyYXlbaV0uZ2V0Q2hpbGRCeU5hbWUoXCJ3YWxsXCIpLmdldENvbXBvbmVudChcIldhbGxcIikuZG93bkRvb3IoKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICBlbHNlIHRoaXMud2FsbEFycmF5W2ldLmdldENoaWxkQnlOYW1lKFwid2FsbFwiKS5nZXRDb21wb25lbnQoXCJXYWxsXCIpLmRvd25Eb29yKCk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBlbHNlIHRoaXMud2FsbEFycmF5W2ldLmdldENoaWxkQnlOYW1lKFwid2FsbFwiKS5nZXRDb21wb25lbnQoXCJXYWxsXCIpLmRvd25Eb29yKCk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgdXBEb29yKCkge1xyXG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdGhpcy53YWxsQXJyYXkubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICAgICAgaWYgKHRoaXMud2FsbEFycmF5W2ldLmdldENoaWxkQnlOYW1lKFwid2FsbFwiKS5vcGFjaXR5ID09IDApIHtcclxuICAgICAgICAgICAgICAgIHRoaXMud2FsbEFycmF5W2ldLmdldENoaWxkQnlOYW1lKFwid2FsbFwiKS5nZXRDb21wb25lbnQoXCJXYWxsXCIpLnVwRG9vcigpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIC8v5byA5aeL5YCS6K6h5pe2XHJcbiAgICBzdGFydFRpbWVDdXREb3duKCkge1xyXG4gICAgICAgIHRoaXMuc2NoZWR1bGVDYWxsYmFjayA9IGZ1bmN0aW9uICgpIHtcclxuICAgICAgICAgICAgaWYgKHRoaXMucGF1c2UpIHJldHVybjtcclxuICAgICAgICAgICAgaWYgKHRoaXMudGltZU51bWJlciA8PSAwKSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLnN0b3BUaW1lQ3V0RG93bigpO1xyXG4gICAgICAgICAgICAgICAgdmFyIHRpbWVUZW1wID0gY2MuZnguR2FtZVRvb2wuZ2V0VGltZU1hcmdpbih0aGlzLnRpbWVOdW1iZXIpO1xyXG4gICAgICAgICAgICAgICAgTnVtYmVyVG9JbWFnZS5nZXRUaW1lTWFyZ2luKHRoaXMudGltZU51bWJlciwgNTAsIFwidGltZV9cIiwgdGhpcy50aW1lTGFiZWwpXHJcbiAgICAgICAgICAgICAgICAvLyB0aGlzLnRpbWVMYWJlbC5zdHJpbmcgPSB0aW1lVGVtcC50b1N0cmluZygpO1xyXG4gICAgICAgICAgICAgICAgaWYgKCF0aGlzLnBhdXNlKSB0aGlzLmZhaWxMZXZlbChcInRpbWVcIik7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLnRpbWVOdW1iZXIgLT0gMTtcclxuICAgICAgICAgICAgICAgIHRoaXMuY291bnRfVGltZSArPSAxO1xyXG4gICAgICAgICAgICAgICAgdmFyIHRpbWVUZW1wID0gY2MuZnguR2FtZVRvb2wuZ2V0VGltZU1hcmdpbih0aGlzLnRpbWVOdW1iZXIpO1xyXG4gICAgICAgICAgICAgICAgTnVtYmVyVG9JbWFnZS5nZXRUaW1lTWFyZ2luKHRoaXMudGltZU51bWJlciwgNTAsIFwidGltZV9cIiwgdGhpcy50aW1lTGFiZWwpXHJcbiAgICAgICAgICAgICAgICAvLyB0aGlzLnRpbWVMYWJlbC5zdHJpbmcgPSB0aW1lVGVtcC50b1N0cmluZygpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfS5iaW5kKHRoaXMpO1xyXG4gICAgICAgIHRoaXMuc2NoZWR1bGUodGhpcy5zY2hlZHVsZUNhbGxiYWNrLCAxKTtcclxuICAgIH1cclxuICAgIC8vIOWBnOatouWAkuiuoeaXtlxyXG4gICAgc3RvcFRpbWVDdXREb3duKCkge1xyXG4gICAgICAgIGlmICh0aGlzLnNjaGVkdWxlQ2FsbGJhY2spIHtcclxuICAgICAgICAgICAgdGhpcy51bnNjaGVkdWxlKHRoaXMuc2NoZWR1bGVDYWxsYmFjayk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIC8v5L2/55So5pe26Ze06YGT5YW3XHJcbiAgICB1c2VUaW1lUHJvcCgpIHtcclxuICAgICAgICBpZiAodGhpcy5ub2RlLnBhcmVudC5nZXRDaGlsZEJ5TmFtZShcIkljZVwiKS5hY3RpdmUgPT0gdHJ1ZSB8fCB0aGlzLmhhbW1lciA9PSB0cnVlXHJcbiAgICAgICAgICAgIHx8IHRoaXMubWFnaWNNYXNrLmFjdGl2ZSA9PSB0cnVlIHx8IHRoaXMudGltZU51bWJlciA8PSAxKSB7XHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcbiAgICAgICAgbGV0IGZyZWV6ZUJ0biA9IHRoaXMubm9kZS5wYXJlbnQuZ2V0Q2hpbGRCeU5hbWUoXCJCb3R0b21cIikuZ2V0Q2hpbGRCeU5hbWUoXCJ0aW1lQnRuXCIpO1xyXG4gICAgICAgIGlmIChmcmVlemVCdG4uZ2V0Q29tcG9uZW50KFwiYnRuQ29udHJvbFwiKS5fdG91Y2gpIHtcclxuICAgICAgICAgICAgZnJlZXplQnRuLmdldENvbXBvbmVudChcImJ0bkNvbnRyb2xcIikuc2V0VG91Y2goZmFsc2UpO1xyXG4gICAgICAgICAgICBpZiAoY2MuZnguR2FtZUNvbmZpZy5HTV9JTkZPLmZyZWV6ZUFtb3VudCA8IDEpIHtcclxuICAgICAgICAgICAgICAgIGlmIChjYy5meC5HYW1lQ29uZmlnLkdNX0lORk8uY29pbiA8IDE1MDApIHtcclxuICAgICAgICAgICAgICAgICAgICBNaW5pR2FtZVNkay5BUEkuc2hvd1RvYXN0KFwi6YeR5biB5LiN6Laz77yM5peg5rOV6LSt5Lmw6YGT5YW3XCIpO1xyXG4gICAgICAgICAgICAgICAgICAgIGZyZWV6ZUJ0bi5nZXRDb21wb25lbnQoXCJidG5Db250cm9sXCIpLnNldFRvdWNoKHRydWUpO1xyXG4gICAgICAgICAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIHRoaXMubm9kZS5wYXJlbnQucGFyZW50LmdldENoaWxkQnlOYW1lKFwicHJvcFdpbmRvd1wiKS5hY3RpdmUgPSB0cnVlO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5ub2RlLnBhcmVudC5wYXJlbnQucGFyZW50LmdldENvbXBvbmVudChcIlNjZW5lTWFuYWdlclwiKS5vcGVuUHJvcEJ1eShcImZyZWV6ZVwiKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgICAgIGlmICghdGhpcy5ub2RlLnBhcmVudC5nZXRDaGlsZEJ5TmFtZShcIkljZVwiKS5hY3RpdmUgJiYgIXRoaXMucGF1c2UpIHtcclxuICAgICAgICAgICAgICAgICAgICBjb25zdCB0aW1lc3RhbXAgPSBEYXRlLm5vdygpO1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZnJlZXplTWFzay5hY3RpdmUgPSB0cnVlO1xyXG5cclxuICAgICAgICAgICAgICAgICAgICB0aGlzLnBhdXNlID0gdHJ1ZTtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLm5vZGUucGFyZW50LmdldENoaWxkQnlOYW1lKFwiSWNlXCIpLmFjdGl2ZSA9IHRydWU7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5ub2RlLnBhcmVudC5nZXRDaGlsZEJ5TmFtZShcIlRvcFwiKS5nZXRDaGlsZEJ5TmFtZShcIkljZVwiKS5hY3RpdmUgPSB0cnVlO1xyXG5cclxuICAgICAgICAgICAgICAgICAgICBjYy5meC5HYW1lQ29uZmlnLkdNX0lORk8uZnJlZXplQW1vdW50IC09IDE7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKGNjLmZ4LkdhbWVDb25maWcuR01fSU5GTy5mcmVlemVBbW91bnQgPCAwKVxyXG4gICAgICAgICAgICAgICAgICAgICAgICBjYy5meC5HYW1lQ29uZmlnLkdNX0lORk8uZnJlZXplQW1vdW50ID0gMDtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLmljZUxhYmVsLnN0cmluZyA9IGNjLmZ4LkdhbWVDb25maWcuR01fSU5GTy5mcmVlemVBbW91bnQudG9TdHJpbmcoKTtcclxuICAgICAgICAgICAgICAgICAgICBsZXQgcHJvcEluZm8gPSBjYy5meC5TdG9yYWdlTWVzc2FnZS5nZXRTdG9yYWdlKFwicHJvcFwiKTtcclxuICAgICAgICAgICAgICAgICAgICBwcm9wSW5mby5mcmVlemVBbW91bnQgPSBjYy5meC5HYW1lQ29uZmlnLkdNX0lORk8uZnJlZXplQW1vdW50O1xyXG4gICAgICAgICAgICAgICAgICAgIHByb3BJbmZvLnRpbWVzdGFtcCA9IHRpbWVzdGFtcDtcclxuICAgICAgICAgICAgICAgICAgICBjYy5meC5TdG9yYWdlTWVzc2FnZS5zZXRTdG9yYWdlKFwicHJvcFwiLCBwcm9wSW5mbyk7XHJcbiAgICAgICAgICAgICAgICAgICAgY2MuZnguR2FtZVRvb2wuc2V0VXNlclByb3AoMjAwMSwgY2MuZnguR2FtZUNvbmZpZy5HTV9JTkZPLmZyZWV6ZUFtb3VudCwgKGRhdGEpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICB9KVxyXG4gICAgICAgICAgICAgICAgICAgIGxldCBkYXRhID0ge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBpZDogXCIyMDAxXCIsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIG51bTogLTFcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgY2MuZnguR2FtZVRvb2wuc2h1c2h1X1RyYWNrKFwicmVzb3VyY2VfY29zdFwiLCBkYXRhKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIGVsc2UgTWluaUdhbWVTZGsuQVBJLnNob3dUb2FzdChcIumBk+WFt+S9v+eUqOS4re+8jOivt+eojeWQjuWGjeivlVwiKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuXHJcblxyXG4gICAgfVxyXG5cclxuICAgIC8v6Kej5byA5pe26Ze05Ya757uTXHJcbiAgICBvcGVuSWNlKCkge1xyXG4gICAgICAgIGlmICh0aGlzLm5vZGUucGFyZW50LmdldENoaWxkQnlOYW1lKFwiSWNlXCIpLmFjdGl2ZSkge1xyXG4gICAgICAgICAgICB0aGlzLmZyZWV6ZU1hc2suYWN0aXZlID0gZmFsc2U7XHJcbiAgICAgICAgICAgIGxldCBmcmVlemVCdG4gPSB0aGlzLm5vZGUucGFyZW50LmdldENoaWxkQnlOYW1lKFwiQm90dG9tXCIpLmdldENoaWxkQnlOYW1lKFwidGltZUJ0blwiKTtcclxuICAgICAgICAgICAgZnJlZXplQnRuLmdldENvbXBvbmVudChcImJ0bkNvbnRyb2xcIikuc2V0VG91Y2godHJ1ZSk7XHJcbiAgICAgICAgICAgIHRoaXMubm9kZS5wYXJlbnQuZ2V0Q2hpbGRCeU5hbWUoXCJJY2VcIikuYWN0aXZlID0gZmFsc2U7XHJcbiAgICAgICAgICAgIHRoaXMubm9kZS5wYXJlbnQuZ2V0Q2hpbGRCeU5hbWUoXCJUb3BcIikuZ2V0Q2hpbGRCeU5hbWUoXCJJY2VcIikuYWN0aXZlID0gZmFsc2U7XHJcbiAgICAgICAgICAgIHRoaXMucGF1c2UgPSBmYWxzZTtcclxuICAgICAgICAgICAgLy8gdGhpcy5zdGFydFRpbWVDdXREb3duKCk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIGhhbmRsZUJ1eVN1Y2Nlc3MoZGF0YSkge1xyXG4gICAgICAgIHRoaXMucGF1c2UgPSBmYWxzZTtcclxuICAgICAgICBjb25zdCB0aW1lc3RhbXAgPSBEYXRlLm5vdygpO1xyXG4gICAgICAgIC8vIGNvbnNvbGUubG9nKFwi5Zue6LCD5Ye95pWw5YaFOlwiLHRoaXMucGF1c2UpO1xyXG4gICAgICAgIGxldCBmcmVlemVCdG4gPSB0aGlzLm5vZGUucGFyZW50LmdldENoaWxkQnlOYW1lKFwiQm90dG9tXCIpLmdldENoaWxkQnlOYW1lKFwidGltZUJ0blwiKTtcclxuICAgICAgICBsZXQgaGFtbWVyQnRuID0gdGhpcy5ub2RlLnBhcmVudC5nZXRDaGlsZEJ5TmFtZShcIkJvdHRvbVwiKS5nZXRDaGlsZEJ5TmFtZShcImRlc3Ryb3lCdG5cIik7XHJcbiAgICAgICAgbGV0IG1hZ2ljQnRuID0gdGhpcy5ub2RlLnBhcmVudC5nZXRDaGlsZEJ5TmFtZShcIkJvdHRvbVwiKS5nZXRDaGlsZEJ5TmFtZShcIm1hZ2ljQnRuXCIpO1xyXG4gICAgICAgIGlmIChkYXRhID09IFwiZnJlZXplQW1vdW50XCIpIGZyZWV6ZUJ0bi5nZXRDb21wb25lbnQoXCJidG5Db250cm9sXCIpLnNldFRvdWNoKHRydWUpO1xyXG4gICAgICAgIGVsc2UgaWYgKGRhdGEgPT0gXCJoYW1tZXJBbW91bnRcIikgaGFtbWVyQnRuLmdldENvbXBvbmVudChcImJ0bkNvbnRyb2xcIikuc2V0VG91Y2godHJ1ZSk7XHJcbiAgICAgICAgZWxzZSBpZiAoZGF0YSA9PSBcIm1hZ2ljQW1vdW50XCIpIG1hZ2ljQnRuLmdldENvbXBvbmVudChcImJ0bkNvbnRyb2xcIikuc2V0VG91Y2godHJ1ZSk7XHJcbiAgICAgICAgaWYgKGRhdGEgPT0gXCJmcmVlemVBbW91bnRcIikge1xyXG4gICAgICAgICAgICBjYy5meC5HYW1lQ29uZmlnLkdNX0lORk8uZnJlZXplQW1vdW50ICs9IDM7XHJcbiAgICAgICAgICAgIGxldCBwcm9wSW5mbyA9IGNjLmZ4LlN0b3JhZ2VNZXNzYWdlLmdldFN0b3JhZ2UoXCJwcm9wXCIpO1xyXG4gICAgICAgICAgICBwcm9wSW5mby5mcmVlemVBbW91bnQgPSBjYy5meC5HYW1lQ29uZmlnLkdNX0lORk8uZnJlZXplQW1vdW50O1xyXG4gICAgICAgICAgICBwcm9wSW5mby50aW1lc3RhbXAgPSB0aW1lc3RhbXA7XHJcbiAgICAgICAgICAgIGNjLmZ4LlN0b3JhZ2VNZXNzYWdlLnNldFN0b3JhZ2UoXCJwcm9wXCIsIHByb3BJbmZvKTtcclxuICAgICAgICAgICAgdGhpcy5ub2RlLnBhcmVudC5wYXJlbnQucGFyZW50LmdldENvbXBvbmVudChcIlNjZW5lTWFuYWdlclwiKS5jbG9zZVByb3BCdXkoKTtcclxuICAgICAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmljZUxhYmVsLnN0cmluZyA9IGNjLmZ4LkdhbWVDb25maWcuR01fSU5GTy5mcmVlemVBbW91bnQudG9TdHJpbmcoKTtcclxuICAgICAgICAgICAgICAgIE1pbmlHYW1lU2RrLkFQSS5zaG93VG9hc3QoXCLotK3kubDlhrvnu5Pml7bpl7TpgZPlhbfmiJDlip9cIik7XHJcbiAgICAgICAgICAgIH0sIDIwMCk7XHJcblxyXG5cclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSBpZiAoZGF0YSA9PSBcIm1hZ2ljQW1vdW50XCIpIHtcclxuICAgICAgICAgICAgY2MuZnguR2FtZUNvbmZpZy5HTV9JTkZPLm1hZ2ljQW1vdW50ICs9IDM7XHJcbiAgICAgICAgICAgIGxldCBwcm9wSW5mbyA9IGNjLmZ4LlN0b3JhZ2VNZXNzYWdlLmdldFN0b3JhZ2UoXCJwcm9wXCIpO1xyXG4gICAgICAgICAgICBwcm9wSW5mby5tYWdpY0Ftb3VudCA9IGNjLmZ4LkdhbWVDb25maWcuR01fSU5GTy5tYWdpY0Ftb3VudDtcclxuICAgICAgICAgICAgcHJvcEluZm8udGltZXN0YW1wID0gdGltZXN0YW1wO1xyXG4gICAgICAgICAgICBjYy5meC5TdG9yYWdlTWVzc2FnZS5zZXRTdG9yYWdlKFwicHJvcFwiLCBwcm9wSW5mbyk7XHJcbiAgICAgICAgICAgIHRoaXMubm9kZS5wYXJlbnQucGFyZW50LnBhcmVudC5nZXRDb21wb25lbnQoXCJTY2VuZU1hbmFnZXJcIikuY2xvc2VQcm9wQnV5KCk7XHJcbiAgICAgICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgTWluaUdhbWVTZGsuQVBJLnNob3dUb2FzdChcIui0reS5sOmUpOWtkOmBk+WFt+aIkOWKn1wiKTtcclxuICAgICAgICAgICAgICAgIHRoaXMubWFnaWNMYWJlbC5zdHJpbmcgPSBjYy5meC5HYW1lQ29uZmlnLkdNX0lORk8ubWFnaWNBbW91bnQudG9TdHJpbmcoKTtcclxuICAgICAgICAgICAgfSwgMjAwKTtcclxuXHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2UgaWYgKGRhdGEgPT0gXCJoYW1tZXJBbW91bnRcIikge1xyXG4gICAgICAgICAgICBjYy5meC5HYW1lQ29uZmlnLkdNX0lORk8uaGFtbWVyQW1vdW50ICs9IDM7XHJcbiAgICAgICAgICAgIGxldCBwcm9wSW5mbyA9IGNjLmZ4LlN0b3JhZ2VNZXNzYWdlLmdldFN0b3JhZ2UoXCJwcm9wXCIpO1xyXG4gICAgICAgICAgICBwcm9wSW5mby5oYW1tZXJBbW91bnQgPSBjYy5meC5HYW1lQ29uZmlnLkdNX0lORk8uaGFtbWVyQW1vdW50O1xyXG4gICAgICAgICAgICBwcm9wSW5mby50aW1lc3RhbXAgPSB0aW1lc3RhbXA7XHJcbiAgICAgICAgICAgIGNjLmZ4LlN0b3JhZ2VNZXNzYWdlLnNldFN0b3JhZ2UoXCJwcm9wXCIsIHByb3BJbmZvKTtcclxuICAgICAgICAgICAgdGhpcy5ub2RlLnBhcmVudC5wYXJlbnQucGFyZW50LmdldENvbXBvbmVudChcIlNjZW5lTWFuYWdlclwiKS5jbG9zZVByb3BCdXkoKTtcclxuICAgICAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmhhbW1lckxhYmVsLnN0cmluZyA9IGNjLmZ4LkdhbWVDb25maWcuR01fSU5GTy5oYW1tZXJBbW91bnQudG9TdHJpbmcoKTtcclxuICAgICAgICAgICAgICAgIE1pbmlHYW1lU2RrLkFQSS5zaG93VG9hc3QoXCLotK3kubDprZTms5Xmo5LpgZPlhbfmiJDlip9cIik7XHJcbiAgICAgICAgICAgIH0sIDIwMCk7XHJcblxyXG4gICAgICAgIH1cclxuXHJcblxyXG5cclxuICAgIH1cclxuXHJcbiAgICAvL+S9v+eUqOmUpOWtkOmBk+WFt1xyXG4gICAgdXNlSGFtbWVyKCkge1xyXG4gICAgICAgIGlmICh0aGlzLm5vZGUucGFyZW50LmdldENoaWxkQnlOYW1lKFwiSWNlXCIpLmFjdGl2ZSA9PSB0cnVlIHx8IHRoaXMuaGFtbWVyID09IHRydWVcclxuICAgICAgICAgICAgfHwgdGhpcy5tYWdpY01hc2suYWN0aXZlID09IHRydWUgfHwgdGhpcy50aW1lTnVtYmVyIDw9IDEpIHtcclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuICAgICAgICBsZXQgaGFtbWVyQnRuID0gdGhpcy5ub2RlLnBhcmVudC5nZXRDaGlsZEJ5TmFtZShcIkJvdHRvbVwiKS5nZXRDaGlsZEJ5TmFtZShcImRlc3Ryb3lCdG5cIik7XHJcbiAgICAgICAgaWYgKGhhbW1lckJ0bi5nZXRDb21wb25lbnQoXCJidG5Db250cm9sXCIpLl90b3VjaCkge1xyXG4gICAgICAgICAgICBoYW1tZXJCdG4uZ2V0Q29tcG9uZW50KFwiYnRuQ29udHJvbFwiKS5zZXRUb3VjaChmYWxzZSk7XHJcbiAgICAgICAgICAgIGlmIChjYy5meC5HYW1lQ29uZmlnLkdNX0lORk8uaGFtbWVyQW1vdW50IDwgMSkge1xyXG4gICAgICAgICAgICAgICAgaWYgKGNjLmZ4LkdhbWVDb25maWcuR01fSU5GTy5jb2luIDwgMTUwMCkge1xyXG4gICAgICAgICAgICAgICAgICAgIE1pbmlHYW1lU2RrLkFQSS5zaG93VG9hc3QoXCLph5HluIHkuI3otrPvvIzml6Dms5XotK3kubDpgZPlhbdcIik7XHJcbiAgICAgICAgICAgICAgICAgICAgaGFtbWVyQnRuLmdldENvbXBvbmVudChcImJ0bkNvbnRyb2xcIikuc2V0VG91Y2godHJ1ZSk7XHJcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgdGhpcy5ub2RlLnBhcmVudC5wYXJlbnQuZ2V0Q2hpbGRCeU5hbWUoXCJwcm9wV2luZG93XCIpLmFjdGl2ZSA9IHRydWU7XHJcbiAgICAgICAgICAgICAgICB0aGlzLm5vZGUucGFyZW50LnBhcmVudC5wYXJlbnQuZ2V0Q29tcG9uZW50KFwiU2NlbmVNYW5hZ2VyXCIpLm9wZW5Qcm9wQnV5KFwiaGFtbWVyXCIpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgaWYgKCF0aGlzLmhhbW1lcikge1xyXG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHRpbWVzdGFtcCA9IERhdGUubm93KCk7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5oYW1tZXJNYXNrLmFjdGl2ZSA9IHRydWU7XHJcblxyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuaGFtbWVyID0gdHJ1ZTtcclxuICAgICAgICAgICAgICAgICAgICBjYy5meC5HYW1lQ29uZmlnLkdNX0lORk8uaGFtbWVyQW1vdW50IC09IDE7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKGNjLmZ4LkdhbWVDb25maWcuR01fSU5GTy5oYW1tZXJBbW91bnQgPCAwKVxyXG4gICAgICAgICAgICAgICAgICAgICAgICBjYy5meC5HYW1lQ29uZmlnLkdNX0lORk8uaGFtbWVyQW1vdW50ID0gMDtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLmhhbW1lckxhYmVsLnN0cmluZyA9IGNjLmZ4LkdhbWVDb25maWcuR01fSU5GTy5oYW1tZXJBbW91bnQudG9TdHJpbmcoKTtcclxuICAgICAgICAgICAgICAgICAgICBsZXQgcHJvcEluZm8gPSBjYy5meC5TdG9yYWdlTWVzc2FnZS5nZXRTdG9yYWdlKFwicHJvcFwiKTtcclxuICAgICAgICAgICAgICAgICAgICBjb25zb2xlLmxvZyhcIumUpOWtkOmBk+WFt+S/oeaBrzpcIiwgcHJvcEluZm8pO1xyXG4gICAgICAgICAgICAgICAgICAgIHByb3BJbmZvLmhhbW1lckFtb3VudCA9IGNjLmZ4LkdhbWVDb25maWcuR01fSU5GTy5oYW1tZXJBbW91bnQ7XHJcbiAgICAgICAgICAgICAgICAgICAgcHJvcEluZm8udGltZXN0YW1wID0gdGltZXN0YW1wO1xyXG4gICAgICAgICAgICAgICAgICAgIGNjLmZ4LlN0b3JhZ2VNZXNzYWdlLnNldFN0b3JhZ2UoXCJwcm9wXCIsIHByb3BJbmZvKTtcclxuICAgICAgICAgICAgICAgICAgICBjYy5meC5HYW1lVG9vbC5zZXRVc2VyUHJvcCgyMDAyLCBjYy5meC5HYW1lQ29uZmlnLkdNX0lORk8uaGFtbWVyQW1vdW50LCAoZGF0YSkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgIH0pXHJcbiAgICAgICAgICAgICAgICAgICAgbGV0IGRhdGEgPSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGlkOiBcIjIwMDJcIixcclxuICAgICAgICAgICAgICAgICAgICAgICAgbnVtOiAtMVxyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICBjYy5meC5HYW1lVG9vbC5zaHVzaHVfVHJhY2soXCJyZXNvdXJjZV9jb3N0XCIsIGRhdGEpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgZWxzZSBNaW5pR2FtZVNkay5BUEkuc2hvd1RvYXN0KFwi6YGT5YW35L2/55So5Lit77yM6K+356iN5ZCO5YaN6K+VXCIpO1xyXG4gICAgICAgICAgICB9XHJcblxyXG4gICAgICAgIH1cclxuXHJcbiAgICB9XHJcblxyXG4gICAgYnV5TWFnaWMoKSB7XHJcbiAgICAgICAgaWYgKGNjLmZ4LkdhbWVDb25maWcuR01fSU5GTy5jb2luIDwgMTUwMCkge1xyXG4gICAgICAgICAgICBNaW5pR2FtZVNkay5BUEkuc2hvd1RvYXN0KFwi6YeR5biB5LiN6Laz77yM5peg5rOV6LSt5Lmw6YGT5YW3XCIpO1xyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGNjLmZ4LkdhbWVUb29sLmJ1eVByb3AoMjAwMywgdGhpcy5oYW5kbGVCdXlTdWNjZXNzLmJpbmQodGhpcywgXCJtYWdpY0Ftb3VudFwiKSk7XHJcbiAgICB9XHJcblxyXG4gICAgYnV5SGFtbWVyKCkge1xyXG4gICAgICAgIGlmIChjYy5meC5HYW1lQ29uZmlnLkdNX0lORk8uY29pbiA8IDE1MDApIHtcclxuICAgICAgICAgICAgTWluaUdhbWVTZGsuQVBJLnNob3dUb2FzdChcIumHkeW4geS4jei2s++8jOaXoOazlei0reS5sOmBk+WFt1wiKTtcclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuICAgICAgICBjYy5meC5HYW1lVG9vbC5idXlQcm9wKDIwMDIsIHRoaXMuaGFuZGxlQnV5U3VjY2Vzcy5iaW5kKHRoaXMsIFwiaGFtbWVyQW1vdW50XCIpKTtcclxuICAgIH1cclxuXHJcbiAgICBidXlGcmVlemUoKSB7XHJcbiAgICAgICAgaWYgKGNjLmZ4LkdhbWVDb25maWcuR01fSU5GTy5jb2luIDwgMTUwMCkge1xyXG4gICAgICAgICAgICBNaW5pR2FtZVNkay5BUEkuc2hvd1RvYXN0KFwi6YeR5biB5LiN6Laz77yM5peg5rOV6LSt5Lmw6YGT5YW3XCIpO1xyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGNjLmZ4LkdhbWVUb29sLmJ1eVByb3AoMjAwMSwgdGhpcy5oYW5kbGVCdXlTdWNjZXNzLmJpbmQodGhpcywgXCJmcmVlemVBbW91bnRcIikpO1xyXG4gICAgfVxyXG5cclxuICAgIC8v5L2/55So6a2U5rOV5qOS6ZqP5py65raI6Zmk5Lik5Liq5pa55Z2XXHJcbiAgICB1c2VNYWdpYygpIHtcclxuICAgICAgICBpZiAodGhpcy5ub2RlLnBhcmVudC5nZXRDaGlsZEJ5TmFtZShcIkljZVwiKS5hY3RpdmUgPT0gdHJ1ZSB8fCB0aGlzLmhhbW1lciA9PSB0cnVlXHJcbiAgICAgICAgICAgIHx8IHRoaXMubWFnaWNNYXNrLmFjdGl2ZSA9PSB0cnVlIHx8IHRoaXMudGltZU51bWJlciA8PSAxKSB7XHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcbiAgICAgICAgbGV0IG1hZ2ljQnRuID0gdGhpcy5ub2RlLnBhcmVudC5nZXRDaGlsZEJ5TmFtZShcIkJvdHRvbVwiKS5nZXRDaGlsZEJ5TmFtZShcIm1hZ2ljQnRuXCIpO1xyXG4gICAgICAgIGlmIChtYWdpY0J0bi5nZXRDb21wb25lbnQoXCJidG5Db250cm9sXCIpLl90b3VjaCkge1xyXG4gICAgICAgICAgICBtYWdpY0J0bi5nZXRDb21wb25lbnQoXCJidG5Db250cm9sXCIpLnNldFRvdWNoKGZhbHNlKTtcclxuICAgICAgICAgICAgaWYgKGNjLmZ4LkdhbWVDb25maWcuR01fSU5GTy5tYWdpY0Ftb3VudCA8IDEpIHtcclxuICAgICAgICAgICAgICAgIGlmIChjYy5meC5HYW1lQ29uZmlnLkdNX0lORk8uY29pbiA8IDE1MDApIHtcclxuICAgICAgICAgICAgICAgICAgICBNaW5pR2FtZVNkay5BUEkuc2hvd1RvYXN0KFwi6YeR5biB5LiN6Laz77yM5peg5rOV6LSt5Lmw6YGT5YW3XCIpO1xyXG4gICAgICAgICAgICAgICAgICAgIG1hZ2ljQnRuLmdldENvbXBvbmVudChcImJ0bkNvbnRyb2xcIikuc2V0VG91Y2godHJ1ZSk7XHJcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgdGhpcy5ub2RlLnBhcmVudC5wYXJlbnQuZ2V0Q2hpbGRCeU5hbWUoXCJwcm9wV2luZG93XCIpLmFjdGl2ZSA9IHRydWU7XHJcbiAgICAgICAgICAgICAgICB0aGlzLm5vZGUucGFyZW50LnBhcmVudC5wYXJlbnQuZ2V0Q29tcG9uZW50KFwiU2NlbmVNYW5hZ2VyXCIpLm9wZW5Qcm9wQnV5KFwibWFnaWNcIik7XHJcbiAgICAgICAgICAgICAgICAvLyBNaW5pR2FtZVNkay5BUEkuc2hvd1RvYXN0KFwi6a2U5rOV5qOS5pWw6YeP5LiN6LazLOiHquWKqOi0reS5sOmtlOazleajklwiKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgICAgIGNvbnN0IHRpbWVzdGFtcCA9IERhdGUubm93KCk7XHJcbiAgICAgICAgICAgICAgICB0aGlzLm1hZ2ljTWFzay5hY3RpdmUgPSB0cnVlO1xyXG4gICAgICAgICAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5tYWdpY01hc2suYWN0aXZlID0gZmFsc2U7XHJcbiAgICAgICAgICAgICAgICAgICAgbWFnaWNCdG4uZ2V0Q29tcG9uZW50KFwiYnRuQ29udHJvbFwiKS5zZXRUb3VjaCh0cnVlKTtcclxuICAgICAgICAgICAgICAgIH0sIDEwMDApO1xyXG5cclxuICAgICAgICAgICAgICAgIGNjLmZ4LkdhbWVDb25maWcuR01fSU5GTy5tYWdpY0Ftb3VudCAtPSAxO1xyXG4gICAgICAgICAgICAgICAgaWYgKGNjLmZ4LkdhbWVDb25maWcuR01fSU5GTy5tYWdpY0Ftb3VudCA8IDApXHJcbiAgICAgICAgICAgICAgICAgICAgY2MuZnguR2FtZUNvbmZpZy5HTV9JTkZPLm1hZ2ljQW1vdW50ID0gMDtcclxuICAgICAgICAgICAgICAgIHRoaXMubWFnaWNMYWJlbC5zdHJpbmcgPSBjYy5meC5HYW1lQ29uZmlnLkdNX0lORk8ubWFnaWNBbW91bnQudG9TdHJpbmcoKTtcclxuICAgICAgICAgICAgICAgIGxldCBwcm9wSW5mbyA9IGNjLmZ4LlN0b3JhZ2VNZXNzYWdlLmdldFN0b3JhZ2UoXCJwcm9wXCIpO1xyXG4gICAgICAgICAgICAgICAgcHJvcEluZm8ubWFnaWNBbW91bnQgPSBjYy5meC5HYW1lQ29uZmlnLkdNX0lORk8ubWFnaWNBbW91bnQ7XHJcbiAgICAgICAgICAgICAgICBwcm9wSW5mby50aW1lc3RhbXAgPSB0aW1lc3RhbXA7XHJcbiAgICAgICAgICAgICAgICBjYy5meC5TdG9yYWdlTWVzc2FnZS5zZXRTdG9yYWdlKFwicHJvcFwiLCBwcm9wSW5mbyk7XHJcbiAgICAgICAgICAgICAgICBjYy5meC5HYW1lVG9vbC5zZXRVc2VyUHJvcCgyMDAzLCBjYy5meC5HYW1lQ29uZmlnLkdNX0lORk8ubWFnaWNBbW91bnQsIChkYXRhKSA9PiB7XHJcbiAgICAgICAgICAgICAgICB9KVxyXG4gICAgICAgICAgICAgICAgbGV0IGRhdGEgPSB7XHJcbiAgICAgICAgICAgICAgICAgICAgaWQ6IFwiMjAwM1wiLFxyXG4gICAgICAgICAgICAgICAgICAgIG51bTogLTFcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIGNjLmZ4LkdhbWVUb29sLnNodXNodV9UcmFjayhcInJlc291cmNlX2Nvc3RcIiwgZGF0YSk7XHJcbiAgICAgICAgICAgICAgICBsZXQgbm9tYWxBcnJheSA9IFtdO1xyXG4gICAgICAgICAgICAgICAgLy8gdGhpcy5tYWdpY0J0bi5ub2RlLmFjdGl2ZSA9IGZhbHNlO1xyXG4gICAgICAgICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0aGlzLmJsb2Nrcy5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgICAgICAgICAgICAgIC8vIGNvbnNvbGUubG9nKFwi5pa55Z2X57G75Z6LXCIsdGhpcy5ibG9ja3NbaV0uZ2V0Q29tcG9uZW50KFwiQmxvY2tcIikudHlwZSk7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMuYmxvY2tzW2ldLmdldENvbXBvbmVudChcIkJsb2NrXCIpLnR5cGUgPT0gMykge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmxvYWNrQXJyYXkucHVzaCh0aGlzLmJsb2Nrc1tpXSk7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIGVsc2UgaWYgKHRoaXMuYmxvY2tzW2ldLmdldENvbXBvbmVudChcIkJsb2NrXCIpLnR5cGUgPT0gNCkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmZyZWV6ZUFycmF5LnB1c2godGhpcy5ibG9ja3NbaV0pO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICBlbHNlIGlmICh0aGlzLmJsb2Nrc1tpXS5nZXRDb21wb25lbnQoXCJCbG9ja1wiKS50eXBlID09IDEwKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLmJsb2Nrc1tpXS5nZXRDb21wb25lbnQoXCJCbG9ja1wiKS5ibG9ja19JbmZvLm5vZGUpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vbWFsQXJyYXkucHVzaCh0aGlzLmJsb2Nrc1tpXS5nZXRDb21wb25lbnQoXCJCbG9ja1wiKS5ibG9ja19JbmZvLm5vZGUpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGVsc2Ugbm9tYWxBcnJheS5wdXNoKHRoaXMuYmxvY2tzW2ldKTtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIG5vbWFsQXJyYXkucHVzaCh0aGlzLmJsb2Nrc1tpXSk7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgaWYgKG5vbWFsQXJyYXkubGVuZ3RoID4gMSkge1xyXG4gICAgICAgICAgICAgICAgICAgIG5vbWFsQXJyYXkgPSBjYy5meC5HYW1lVG9vbC5zaHVmZmxlQXJyYXkobm9tYWxBcnJheSk7XHJcbiAgICAgICAgICAgICAgICAgICAgbm9tYWxBcnJheVswXS5nZXRDb21wb25lbnQoXCJCbG9ja1wiKS5lbGltaW5hdGUoKTtcclxuICAgICAgICAgICAgICAgICAgICBsZXQgdGltZSA9IDA7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKG5vbWFsQXJyYXlbMF0uZ2V0Q29tcG9uZW50KFwiQmxvY2tcIikudHlwZSA9PSAxIHx8IG5vbWFsQXJyYXlbMF0uZ2V0Q29tcG9uZW50KFwiQmxvY2tcIikudHlwZSA9PSA5KSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHRpbWUgPSAyMDA7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIGlmICh0aW1lID4gMCkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vbWFsQXJyYXlbMV0uZ2V0Q29tcG9uZW50KFwiQmxvY2tcIikuZWxpbWluYXRlKCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sIHRpbWUpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBub21hbEFycmF5WzFdLmdldENvbXBvbmVudChcIkJsb2NrXCIpLmVsaW1pbmF0ZSgpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgZWxzZSBpZiAobm9tYWxBcnJheS5sZW5ndGggPT0gMSkge1xyXG4gICAgICAgICAgICAgICAgICAgIG5vbWFsQXJyYXlbMF0uZ2V0Q29tcG9uZW50KFwiQmxvY2tcIikuZWxpbWluYXRlKCk7XHJcbiAgICAgICAgICAgICAgICAgICAgbGV0IHRpbWUgPSAwO1xyXG4gICAgICAgICAgICAgICAgICAgIGlmIChub21hbEFycmF5WzBdLmdldENvbXBvbmVudChcIkJsb2NrXCIpLnR5cGUgPT0gMSB8fCBub21hbEFycmF5WzBdLmdldENvbXBvbmVudChcIkJsb2NrXCIpLnR5cGUgPT0gOSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB0aW1lID0gMjAwO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMuZnJlZXplQXJyYXkubGVuZ3RoID09IDAgJiYgdGhpcy5sb2Fja0FycmF5Lmxlbmd0aCA9PSAwKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBjb25zb2xlLmxvZyhcIuWPquWJqeS4i+S4gOS4quWdl+mBk+WFt+S9v+eUqOWujOavlVwiKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLmxvYWNrQXJyYXkubGVuZ3RoICE9IDApIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBjb25zb2xlLmxvZyhcIua2iOmZpOS4gOS4quaZrumAmuWdl+WQju+8jOa2iOmZpOS4gOS4quW4pumUgeWdl1wiKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmxvYWNrQXJyYXlbMF0uZ2V0Q29tcG9uZW50KFwiQmxvY2tcIikuZWxpbWluYXRlKCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSBpZiAodGhpcy5mcmVlemVBcnJheS5sZW5ndGggIT0gMCkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGNvbnNvbGUubG9nKFwi5raI6Zmk5LiA5Liq5pmu6YCa5Z2X5ZCO77yM5raI6Zmk5LiA5Liq5Ya757uT5Z2XXCIpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuZnJlZXplQXJyYXlbMF0uZ2V0Q29tcG9uZW50KFwiQmxvY2tcIikuZWxpbWluYXRlKCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgfSwgMjAwICsgdGltZSk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICBsZXQgY291bnQgPSAyO1xyXG4gICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLmxvYWNrQXJyYXkubGVuZ3RoICE9IDApIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0aGlzLmxvYWNrQXJyYXkubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGNvbnNvbGUubG9nKFwi5rKh5pyJ5pmu6YCa5b+r77yM6a2U5rOV5raI6Zmk5LiA5Liq5bim6ZSB5Z2XXCIpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5sb2Fja0FycmF5W2ldLmdldENvbXBvbmVudChcIkJsb2NrXCIpLmVsaW1pbmF0ZSgpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY291bnQgLT0gMTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChjb3VudCA9PSAwKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoY291bnQgIT0gMCkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0aGlzLmZyZWV6ZUFycmF5Lmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gY29uc29sZS5sb2coXCLmsqHmnInmma7pgJrlv6vvvIzprZTms5XmtojpmaTkuIDkuKrlhrvnu5PlnZdcIik7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gdGhpcy5mcmVlemVBcnJheVtpXS5nZXRDb21wb25lbnQoXCJCbG9ja1wiKS5lbGltaW5hdGUoKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb3VudCAtPSAxO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChjb3VudCA9PSAwKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIH0sIDEwMCk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgLy/mjInkuIvmmoLlgZzmjInpkq5cclxuICAgIHVzZVBhdXNlKCkge1xyXG4gICAgICAgIGlmICh0aGlzLnBhdXNlKSB7XHJcbiAgICAgICAgICAgIHRoaXMucGF1c2UgPSBmYWxzZTtcclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgIHRoaXMucGF1c2UgPSB0cnVlO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcblxyXG5cclxuICAgIC8v5qC55o2u5YWz5Y2h6K6+572u5Zyw5Zu+5aSn5bCPXHJcbiAgICBzZXRNYXBJbmZvKCkge1xyXG4gICAgICAgIGxldCB3aWR0aCA9IDA7XHJcbiAgICAgICAgaWYgKHRoaXMubWFwV2lkdGggPCAxMCkge1xyXG4gICAgICAgICAgICB3aWR0aCA9IDAuMjtcclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSBpZiAodGhpcy5tYXBXaWR0aCA8IDE3KSB7XHJcbiAgICAgICAgICAgIHdpZHRoID0gMC4xNSAtICh0aGlzLm1hcFdpZHRoIC0gMTEpICogMC4wMTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHRoaXMubm9kZS5zY2FsZSA9IDEuNiArICg2IC0gdGhpcy5tYXBXaWR0aCkgKiB3aWR0aDtcclxuXHJcbiAgICAgICAgaWYgKHRoaXMubWFwV2lkdGggPT0gOCAmJiB0aGlzLm1hcEhlaWdodCA+IDEzKSB7XHJcbiAgICAgICAgICAgIHRoaXMubm9kZS5zY2FsZSA9IDE7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICAvLyB0aGlzLm5vZGUuc2NhbGUgPSAxO1xyXG4gICAgICAgIGNjLmZ4LkdhbWVDb25maWcuR01fSU5GTy5zY2FsZSA9IHRoaXMubm9kZS5zY2FsZTtcclxuICAgICAgICAvLyB0aGlzLm5vZGUuc2NhbGUgPSAwLjU7XHJcbiAgICAgICAgLy8gY29uc29sZS5sb2codGhpcy5ub2RlLnNjYWxlKTtcclxuICAgICAgICAvLyB0aGlzLm5vZGUuc2NhbGUgPSAxO1xyXG4gICAgfVxyXG5cclxuICAgIC8v5Yib5bu66Zeo55qE57KS5a2Q54m55pWIXHJcbiAgICBjcmVhdGVQYXJ0aWNsZShibG9jaywgamcpIHtcclxuICAgICAgICBsZXQgcGFydGljbGUgPSBjYy5pbnN0YW50aWF0ZShNYXBDb25yb2xlci5faW5zdGFuY2UuQmxvY2tfUHJvcFs5XSk7XHJcbiAgICAgICAgcGFydGljbGUucGFyZW50ID0gdGhpcy5ub2RlO1xyXG4gICAgICAgIHBhcnRpY2xlLnpJbmRleCA9IDEwMDA7XHJcbiAgICAgICAgbGV0IHdpZHRoID0gTWF0aC5mbG9vcihibG9jay53aWR0aCAvIDEyMCk7XHJcbiAgICAgICAgbGV0IGhlaWdodCA9IE1hdGguZmxvb3IoYmxvY2suaGVpZ2h0IC8gMTIwKTtcclxuICAgICAgICBsZXQgbmFtZSA9IFwiXCI7XHJcblxyXG4gICAgICAgIGlmIChqZyA9PSAwIHx8IGpnID09IDEpIHtcclxuICAgICAgICAgICAgbGV0IHkgPSBibG9jay55ICsgYmxvY2suaGVpZ2h0O1xyXG4gICAgICAgICAgICBsZXQgeCA9IGJsb2NrLnggLSBibG9jay53aWR0aCAvIDI7XHJcbiAgICAgICAgICAgIG5hbWUgPSBcInRvcF9cIiArIHdpZHRoICsgXCJfXCIgKyBoZWlnaHQ7XHJcbiAgICAgICAgICAgIGlmIChqZyA9PSAxKSB7XHJcbiAgICAgICAgICAgICAgICBuYW1lID0gXCJib3RfXCIgKyB3aWR0aCArIFwiX1wiICsgaGVpZ2h0O1xyXG4gICAgICAgICAgICAgICAgeSA9IGJsb2NrLnk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgaWYgKGJsb2NrLmFuY2hvclggPT0gMC41KSB7XHJcbiAgICAgICAgICAgICAgICB4ID0gYmxvY2sueDtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBlbHNlIGlmIChibG9jay5hbmNob3JYID09IDAuMzMpIHtcclxuICAgICAgICAgICAgICAgIHggPSBibG9jay54ICsgYmxvY2sud2lkdGggKiAoMC41IC0gMC4zMyk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgZWxzZSBpZiAoYmxvY2suYW5jaG9yWCA9PSAwLjY2KSB7XHJcbiAgICAgICAgICAgICAgICB4ID0gYmxvY2sueCArIGJsb2NrLndpZHRoICogKDAuNSAtIDAuNjYpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIHBhcnRpY2xlLnNldFBvc2l0aW9uKHgsIHkpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIGlmIChqZyA9PSAyIHx8IGpnID09IDMpIHtcclxuICAgICAgICAgICAgbmFtZSA9IFwibGVmdF9cIiArIGhlaWdodCArIFwiX1wiICsgd2lkdGg7XHJcbiAgICAgICAgICAgIGxldCB4ID0gYmxvY2sueCAtIGJsb2NrLndpZHRoO1xyXG4gICAgICAgICAgICBsZXQgeSA9IGJsb2NrLnkgKyBibG9jay5oZWlnaHQgLyAyO1xyXG4gICAgICAgICAgICBpZiAoYmxvY2suYW5jaG9yWCA9PSAwLjUpIHtcclxuICAgICAgICAgICAgICAgIHggPSBibG9jay54IC0gYmxvY2sud2lkdGggLyAyO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGVsc2UgaWYgKGJsb2NrLmFuY2hvclggPT0gMC4zMykge1xyXG4gICAgICAgICAgICAgICAgeCA9IGJsb2NrLnggLSBibG9jay53aWR0aCAqIDAuMzM7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgZWxzZSBpZiAoYmxvY2suYW5jaG9yWCA9PSAwLjY2KSB7XHJcbiAgICAgICAgICAgICAgICB4ID0gYmxvY2sueCArIGJsb2NrLndpZHRoICogMC42NjtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBpZiAoamcgPT0gMykge1xyXG4gICAgICAgICAgICAgICAgbmFtZSA9IFwicmlnaHRfXCIgKyBoZWlnaHQgKyBcIl9cIiArIHdpZHRoO1xyXG4gICAgICAgICAgICAgICAgeCA9IGJsb2NrLng7XHJcbiAgICAgICAgICAgICAgICBpZiAoYmxvY2suYW5jaG9yWCA9PSAwLjUpIHtcclxuICAgICAgICAgICAgICAgICAgICB4ID0gYmxvY2sueCArIGJsb2NrLndpZHRoIC8gMjtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIGVsc2UgaWYgKGJsb2NrLmFuY2hvclggPT0gMC4zMykge1xyXG4gICAgICAgICAgICAgICAgICAgIHggPSBibG9jay54ICsgYmxvY2sud2lkdGggKiAwLjY2O1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgZWxzZSBpZiAoYmxvY2suYW5jaG9yWCA9PSAwLjY2KSB7XHJcbiAgICAgICAgICAgICAgICAgICAgeCA9IGJsb2NrLnggKyBibG9jay53aWR0aCAqIDAuMzM7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgIHBhcnRpY2xlLnNldFBvc2l0aW9uKHgsIHkpO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgbGV0IHBhcnRpY2xlTm9kZSA9IHBhcnRpY2xlLmdldENoaWxkQnlOYW1lKG5hbWUpO1xyXG4gICAgICAgIGxldCBjb2xvciA9IGJsb2NrLmdldENvbXBvbmVudChcIkJsb2NrXCIpLmNvbG9yIC0gMTtcclxuXHJcbiAgICAgICAgcGFydGljbGVOb2RlLmdldENvbXBvbmVudChjYy5QYXJ0aWNsZVN5c3RlbSkuc3ByaXRlRnJhbWUgPSBwYXJ0aWNsZS5nZXRDb21wb25lbnQoXCJSZWR1Y2VcIikuQmxvY2tfQ29sb3JbY29sb3JdO1xyXG4gICAgICAgIHBhcnRpY2xlTm9kZS5hY3RpdmUgPSB0cnVlO1xyXG4gICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICAgICAgICBjYy50d2VlbihwYXJ0aWNsZSlcclxuICAgICAgICAgICAgICAgIC50bygyLCB7IG9wYWNpdHk6IDAgfSlcclxuICAgICAgICAgICAgICAgIC5jYWxsKCgpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICBwYXJ0aWNsZS5kZXN0cm95KCk7XHJcbiAgICAgICAgICAgICAgICB9KVxyXG4gICAgICAgICAgICAgICAgLnN0YXJ0KCk7XHJcbiAgICAgICAgfSwgMTIwMCk7XHJcbiAgICB9XHJcblxyXG4gICAgcmVtb3ZlT25lQmxvY2soKSB7XHJcbiAgICAgICAgLy8g56e76Zmk5omA5pyJ5pa55Z2XXHJcbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0aGlzLmJsb2Nrcy5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgICAgICBpZiAodGhpcy5ibG9ja3NbaV0ub3BhY2l0eSA9PSAwKSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmJsb2Nrc1tpXS5kZXN0cm95KCk7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmJsb2Nrcy5zcGxpY2UoaSwgMSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG5cclxuXHJcbiAgICB1cGRhdGUoZHQpIHtcclxuXHJcbiAgICB9XHJcbn1cclxuIl19 ->>>>>>> 0a31a7a5abc2c505bf743aa596e1c765a0405152 -//------QC-SOURCE-SPLIT------ - - (function() { - var nodeEnv = typeof require !== 'undefined' && typeof process !== 'undefined'; - var __module = nodeEnv ? module : {exports:{}}; - var __filename = 'preview-scripts/assets/Script/Reduce.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, 'ca599IU5hFEYYrzoN59YOpT', 'Reduce'); -// Script/Reduce.ts - -"use strict"; -// Learn TypeScript: -// - https://docs.cocos.com/creator/manual/en/scripting/typescript.html -// Learn Attribute: -// - https://docs.cocos.com/creator/manual/en/scripting/reference/attributes.html -// Learn life-cycle callbacks: -// - https://docs.cocos.com/creator/manual/en/scripting/life-cycle-callbacks.html -var __extends = (this && this.__extends) || (function () { - var extendStatics = function (d, b) { - extendStatics = Object.setPrototypeOf || - ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) || - function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; }; - return extendStatics(d, b); - }; - return function (d, b) { - extendStatics(d, b); - function __() { this.constructor = d; } - d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); - }; -})(); -var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) { - var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; - if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc); - else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; - return c > 3 && r && Object.defineProperty(target, key, r), r; -}; -Object.defineProperty(exports, "__esModule", { value: true }); -var _a = cc._decorator, ccclass = _a.ccclass, property = _a.property; -var NewClass = /** @class */ (function (_super) { - __extends(NewClass, _super); - function NewClass() { - var _this = _super !== null && _super.apply(this, arguments) || this; - _this.Block_Color = []; - _this.level = null; - return _this; - // update (dt) {} - } - // LIFE-CYCLE CALLBACKS: - NewClass.prototype.onLoad = function () { - }; - NewClass.prototype.start = function () { - }; - __decorate([ - property({ type: [cc.SpriteFrame], tooltip: "方块颜色图片" }) - ], NewClass.prototype, "Block_Color", void 0); - __decorate([ - property(cc.Label) - ], NewClass.prototype, "level", void 0); - NewClass = __decorate([ - ccclass - ], NewClass); - return NewClass; -}(cc.Component)); -exports.default = NewClass; - -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,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImFzc2V0c1xcU2NyaXB0XFxSZWR1Y2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLG9CQUFvQjtBQUNwQix3RUFBd0U7QUFDeEUsbUJBQW1CO0FBQ25CLGtGQUFrRjtBQUNsRiw4QkFBOEI7QUFDOUIsa0ZBQWtGOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFFNUUsSUFBQSxLQUFzQixFQUFFLENBQUMsVUFBVSxFQUFsQyxPQUFPLGFBQUEsRUFBRSxRQUFRLGNBQWlCLENBQUM7QUFHMUM7SUFBc0MsNEJBQVk7SUFBbEQ7UUFBQSxxRUF1QkM7UUFwQkcsaUJBQVcsR0FBMkIsRUFBRSxDQUFDO1FBSXpDLFdBQUssR0FBYSxJQUFJLENBQUM7O1FBZXZCLGlCQUFpQjtJQUNyQixDQUFDO0lBZEcsd0JBQXdCO0lBRXhCLHlCQUFNLEdBQU47SUFFQSxDQUFDO0lBQ0Qsd0JBQUssR0FBTDtJQUVBLENBQUM7SUFiRDtRQURDLFFBQVEsQ0FBQyxFQUFDLElBQUksRUFBRSxDQUFDLEVBQUUsQ0FBQyxXQUFXLENBQUMsRUFBRSxPQUFPLEVBQUMsUUFBUSxFQUFDLENBQUM7aURBQ1o7SUFJekM7UUFEQyxRQUFRLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQzsyQ0FDSTtJQVBOLFFBQVE7UUFENUIsT0FBTztPQUNhLFFBQVEsQ0F1QjVCO0lBQUQsZUFBQztDQXZCRCxBQXVCQyxDQXZCcUMsRUFBRSxDQUFDLFNBQVMsR0F1QmpEO2tCQXZCb0IsUUFBUSIsImZpbGUiOiIiLCJzb3VyY2VSb290IjoiLyIsInNvdXJjZXNDb250ZW50IjpbIi8vIExlYXJuIFR5cGVTY3JpcHQ6XHJcbi8vICAtIGh0dHBzOi8vZG9jcy5jb2Nvcy5jb20vY3JlYXRvci9tYW51YWwvZW4vc2NyaXB0aW5nL3R5cGVzY3JpcHQuaHRtbFxyXG4vLyBMZWFybiBBdHRyaWJ1dGU6XHJcbi8vICAtIGh0dHBzOi8vZG9jcy5jb2Nvcy5jb20vY3JlYXRvci9tYW51YWwvZW4vc2NyaXB0aW5nL3JlZmVyZW5jZS9hdHRyaWJ1dGVzLmh0bWxcclxuLy8gTGVhcm4gbGlmZS1jeWNsZSBjYWxsYmFja3M6XHJcbi8vICAtIGh0dHBzOi8vZG9jcy5jb2Nvcy5jb20vY3JlYXRvci9tYW51YWwvZW4vc2NyaXB0aW5nL2xpZmUtY3ljbGUtY2FsbGJhY2tzLmh0bWxcclxuXHJcbmNvbnN0IHtjY2NsYXNzLCBwcm9wZXJ0eX0gPSBjYy5fZGVjb3JhdG9yO1xyXG5cclxuQGNjY2xhc3NcclxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgTmV3Q2xhc3MgZXh0ZW5kcyBjYy5Db21wb25lbnQge1xyXG5cclxuICAgIEBwcm9wZXJ0eSh7dHlwZTogW2NjLlNwcml0ZUZyYW1lXSwgdG9vbHRpcDpcIuaWueWdl+minOiJsuWbvueJh1wifSlcclxuICAgIEJsb2NrX0NvbG9yIDogQXJyYXk8Y2MuU3ByaXRlRnJhbWU+ID0gW107XHJcblxyXG5cclxuICAgIEBwcm9wZXJ0eShjYy5MYWJlbClcclxuICAgIGxldmVsOiBjYy5MYWJlbCA9IG51bGw7XHJcblxyXG4gICAgLy8gTElGRS1DWUNMRSBDQUxMQkFDS1M6XHJcblxyXG4gICAgb25Mb2FkICgpIHtcclxuXHJcbiAgICB9XHJcbiAgICBzdGFydCAoKSB7XHJcblxyXG4gICAgfVxyXG4gICAgXHJcblxyXG5cclxuXHJcblxyXG4gICAgLy8gdXBkYXRlIChkdCkge31cclxufVxyXG4iXX0= -//------QC-SOURCE-SPLIT------ - - (function() { - var nodeEnv = typeof require !== 'undefined' && typeof process !== 'undefined'; - var __module = nodeEnv ? module : {exports:{}}; - var __filename = 'preview-scripts/assets/Script/SceneManager.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, '80998T1AYNNRZdRxsVvXR65', 'SceneManager'); -// Script/SceneManager.ts - -"use strict"; -// Learn TypeScript: -// - https://docs.cocos.com/creator/manual/en/scripting/typescript.html -// Learn Attribute: -// - https://docs.cocos.com/creator/manual/en/scripting/reference/attributes.html -// Learn life-cycle callbacks: -// - https://docs.cocos.com/creator/manual/en/scripting/life-cycle-callbacks.html -var __extends = (this && this.__extends) || (function () { - var extendStatics = function (d, b) { - extendStatics = Object.setPrototypeOf || - ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) || - function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; }; - return extendStatics(d, b); - }; - return function (d, b) { - extendStatics(d, b); - function __() { this.constructor = d; } - d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); - }; -})(); -var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) { - var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; - if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc); - else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; - return c > 3 && r && Object.defineProperty(target, key, r), r; -}; -Object.defineProperty(exports, "__esModule", { value: true }); -var Map_1 = require("./Map"); -var MiniGameSdk_1 = require("./Sdk/MiniGameSdk"); -var _a = cc._decorator, ccclass = _a.ccclass, property = _a.property; -var SceneManager = /** @class */ (function (_super) { - __extends(SceneManager, _super); - function SceneManager() { - var _this = _super !== null && _super.apply(this, arguments) || this; - _this.label = null; - _this.text = 'hello'; - _this.freeze = null; - _this.hammer = null; - _this.magic_wand = null; - _this.pause = null; - _this.Block_Array = []; - _this.Wall_Prefab = []; - // @property({type: [cc.ParticleSystem], tooltip:"粒子数组"}) - // particleEffects : Array = []; - _this.load1 = false; - _this.load2 = false; - _this.load3 = false; - _this.btnName = ''; - return _this; - } - // LIFE-CYCLE CALLBACKS: - SceneManager.prototype.onLoad = function () { - cc.game.setFrameRate(63); - this.changeBg(); - setTimeout(function () { - cc.director.preloadScene("HomeScene", function (err) { - if (err) { - // console.error('预加载 HomeScene 场景失败:', err); - return; - } - // console.log('成功预加载 HomeScene 场景'); - }); - }, 1000); - }; - SceneManager.prototype.changeBg = function () { - var _this = this; - var number = Math.floor(Math.random() * 8) + 1; - var path = 'bg/bg' + number; - cc.resources.load(path, cc.SpriteFrame, function (err, spriteFrame) { - if (err) { - console.error('动态加载背景图失败:', err); - return; - } - _this.node.getChildByName("Game").getChildByName("bg").getComponent(cc.Sprite).spriteFrame = spriteFrame; - }); - }; - SceneManager.prototype.loadParticleEffects = function () { - var _this = this; - var path = 'Particle'; - cc.resources.loadDir(path, cc.ParticleAsset, function (err, assets) { - if (err) { - console.error('动态加载粒子特效失败:', err); - return; - } - _this.particleEffects = assets; - _this.setParticleSort(); - _this.load3 = true; - //console.log('粒子特效加载成功,共加载了', this.particleEffects.length, '个粒子特效'); - }); - }; - SceneManager.prototype.setWallPrefabSort = function () { - var order = ['down', 'downLeft', 'downRight', 'left', 'right', 'up', 'upLeft', 'upRight']; - this.Wall_Prefab.sort(function (a, b) { - var indexA = order.indexOf(a.name); - var indexB = order.indexOf(b.name); - if (indexA === -1) - return 1; - if (indexB === -1) - return -1; - return indexA - indexB; - }); - }; - SceneManager.prototype.setParticleSort = function () { - var order = ['top', 'bot', 'rig', 'lef']; - this.particleEffects.sort(function (a, b) { - // console.log(a.name.substr(0,3),b.name.substr(0,3)); - var indexA = order.indexOf(a.name.substr(0, 3)); - var indexB = order.indexOf(b.name.substr(0, 3)); - if (indexA === -1) - return 1; - if (indexB === -1) - return -1; - return indexA - indexB; - }); - }; - SceneManager.prototype.setSort = function () { - this.Block_Array.sort(function (a, b) { - var _a, _b; - // 从名称中提取数字部分 - var numberA = parseInt(((_a = a.name.match(/\d+/)) === null || _a === void 0 ? void 0 : _a[0]) || '0', 10); - var numberB = parseInt(((_b = b.name.match(/\d+/)) === null || _b === void 0 ? void 0 : _b[0]) || '0', 10); - return numberA - numberB; - }); - }; - SceneManager.prototype.start = function () { - }; - SceneManager.prototype.startGame = function () { - cc.director.loadScene("HomeScene", function (err) { - if (err) { - console.error('加载 HomeScene 场景失败:', err); - } - else { - // console.log('成功切换到 HomeScene 场景'); - cc.director.loadScene("HomeScene"); - } - }); - }; - SceneManager.prototype.returnHome = function () { - if (this.node.getChildByName("Pause").getChildByName("btn").getComponent("btnControl")._touch) { - if (Map_1.default._instance.gameStart == true) { - MiniGameSdk_1.MiniGameSdk.API.showToast("体力值减少"); - cc.fx.GameTool.setUserHealth(-1, function (data) { - }); - var data = { - time: Map_1.default._instance.count_Time, - add_Time: Map_1.default._instance.add_Time, - result: "give_up" - }; - cc.fx.GameTool.shushu_Track("finish_stage", data); - } - this.node.getChildByName("Pause").getChildByName("btn").getComponent("btnControl").setTouch(false); - cc.fx.AudioManager._instance.playEffect("zhuan1", null); - this.node.getChildByName("zhuanchang").active = true; - this.node.getChildByName("zhuanchang").getComponent(sp.Skeleton).setAnimation(1, "up", false); - cc.director.preloadScene("HomeScene", function (err, asset) { - if (err) { - console.error('动态加载 Prefab 失败:', err); - return; - } - }); - setTimeout(function () { - cc.director.loadScene("HomeScene"); - }, 1200); - } - }; - SceneManager.prototype.destroyNodesInFrames = function (nodes, callback) { - var _this = this; - var BATCH_SIZE = 10; // 每帧销毁的节点数量 - var index = 0; - var destroyBatch = function () { - var count = 0; - while (index < nodes.length && count < BATCH_SIZE) { - var node = nodes[index]; - if (node) { - node.active = false; - } - index++; - count++; - } - if (index < nodes.length) { - _this.scheduleOnce(destroyBatch, 6); - } - else { - callback(); - } - }; - destroyBatch(); - }; - // 改进后的切换场景方法 - SceneManager.prototype.switchToEmptyScene = function () { - var allNodes = cc.director.getScene().children; - this.destroyNodesInFrames(allNodes, function () { - cc.director.loadScene("HomeScene"); - }); - }; - SceneManager.prototype.openPause = function () { - cc.fx.AudioManager._instance.playEffect("anniu_little", null); - if (this.pause.getComponent("btnControl")._touch) { - this.pause.getComponent("btnControl").setTouch(false); - this.node.getChildByName("Pause").active = true; - Map_1.default._instance.pause = true; - } - }; - SceneManager.prototype.closePause = function () { - cc.fx.AudioManager._instance.playEffect("anniu_little", null); - this.pause.getComponent("btnControl").setTouch(true); - this.node.getChildByName("Pause").active = false; - if (Map_1.default._instance.node.parent.getChildByName("Ice").active == false) { - Map_1.default._instance.pause = false; - } - }; - SceneManager.prototype.openPropBuy = function (name) { - Map_1.default._instance.pause = true; - this.btnName = name; - var propWindow = this.node.getChildByName("Game").getChildByName("propWindow"); - propWindow.active = true; - propWindow.getChildByName("freeze").active = false; - propWindow.getChildByName("hammer").active = false; - propWindow.getChildByName("magic").active = false; - propWindow.getChildByName("buy_Btn").getComponent("btnControl").setTouch(true); - propWindow.getChildByName(name).active = true; - }; - SceneManager.prototype.clickBtn = function () { - cc.fx.AudioManager._instance.playEffect("anniu_Big", null); - var propWindow = this.node.getChildByName("Game").getChildByName("propWindow"); - if (propWindow.getChildByName("buy_Btn").getComponent("btnControl")._touch) { - propWindow.getChildByName("buy_Btn").getComponent("btnControl").setTouch(false); - if (this.btnName == "freeze") - Map_1.default._instance.buyFreeze(); - else if (this.btnName == "hammer") - Map_1.default._instance.buyHammer(); - else if (this.btnName == "magic") - Map_1.default._instance.buyMagic(); - } - }; - //打开商店 - SceneManager.prototype.openShop = function () { - var _this = this; - // 加载 shop bundle - cc.assetManager.loadBundle('shop', function (err, bundle) { - bundle.load('prefab/shop', cc.Prefab, function (err, prefab) { - if (err) { - cc.error(err.message || err); - return; - } - if (prefab) { - var shopNode = cc.instantiate(prefab); - _this.node.addChild(shopNode); - console.log("shopNode parent:", shopNode.parent); - } - }); - }); - }; - SceneManager.prototype.closePropBuy = function () { - Map_1.default._instance.pause = false; - var freezeBtn = Map_1.default._instance.node.parent.getChildByName("Bottom").getChildByName("timeBtn"); - var hammerBtn = Map_1.default._instance.node.parent.getChildByName("Bottom").getChildByName("destroyBtn"); - var magicBtn = Map_1.default._instance.node.parent.getChildByName("Bottom").getChildByName("magicBtn"); - if (this.btnName == "freeze") - freezeBtn.getComponent("btnControl").setTouch(true); - else if (this.btnName == "hammer") - hammerBtn.getComponent("btnControl").setTouch(true); - else if (this.btnName == "magic") - magicBtn.getComponent("btnControl").setTouch(true); - this.node.getChildByName("Game").getChildByName("propWindow").active = false; - }; - SceneManager.prototype.update = function (dt) { - }; - __decorate([ - property(cc.Label) - ], SceneManager.prototype, "label", void 0); - __decorate([ - property - ], SceneManager.prototype, "text", void 0); - __decorate([ - property(cc.Node) - ], SceneManager.prototype, "freeze", void 0); - __decorate([ - property(cc.Node) - ], SceneManager.prototype, "hammer", void 0); - __decorate([ - property(cc.Node) - ], SceneManager.prototype, "magic_wand", void 0); - __decorate([ - property(cc.Node) - ], SceneManager.prototype, "pause", void 0); - __decorate([ - property({ type: [cc.Prefab], tooltip: "方块数组" }) - ], SceneManager.prototype, "Block_Array", void 0); - __decorate([ - property({ type: [cc.Prefab], tooltip: "墙壁数组" }) - ], SceneManager.prototype, "Wall_Prefab", void 0); - SceneManager = __decorate([ - ccclass - ], SceneManager); - return SceneManager; -}(cc.Component)); -exports.default = SceneManager; - -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,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImFzc2V0c1xcU2NyaXB0XFxTY2VuZU1hbmFnZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLG9CQUFvQjtBQUNwQix3RUFBd0U7QUFDeEUsbUJBQW1CO0FBQ25CLGtGQUFrRjtBQUNsRiw4QkFBOEI7QUFDOUIsa0ZBQWtGOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFFbEYsNkJBQWdDO0FBQ2hDLGlEQUFnRDtBQUUxQyxJQUFBLEtBQXdCLEVBQUUsQ0FBQyxVQUFVLEVBQW5DLE9BQU8sYUFBQSxFQUFFLFFBQVEsY0FBa0IsQ0FBQztBQUc1QztJQUEwQyxnQ0FBWTtJQUF0RDtRQUFBLHFFQW1SQztRQWhSRyxXQUFLLEdBQWEsSUFBSSxDQUFDO1FBR3ZCLFVBQUksR0FBVyxPQUFPLENBQUM7UUFHdkIsWUFBTSxHQUFZLElBQUksQ0FBQztRQUd2QixZQUFNLEdBQVksSUFBSSxDQUFDO1FBR3ZCLGdCQUFVLEdBQVksSUFBSSxDQUFDO1FBRzNCLFdBQUssR0FBWSxJQUFJLENBQUM7UUFJdEIsaUJBQVcsR0FBcUIsRUFBRSxDQUFDO1FBR25DLGlCQUFXLEdBQXFCLEVBQUUsQ0FBQztRQUduQyx5REFBeUQ7UUFDekQsbURBQW1EO1FBRW5ELFdBQUssR0FBWSxLQUFLLENBQUM7UUFDdkIsV0FBSyxHQUFZLEtBQUssQ0FBQztRQUN2QixXQUFLLEdBQVksS0FBSyxDQUFDO1FBQ3ZCLGFBQU8sR0FBVyxFQUFFLENBQUM7O0lBaVB6QixDQUFDO0lBN09HLHdCQUF3QjtJQUV4Qiw2QkFBTSxHQUFOO1FBQ0ksRUFBRSxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsRUFBRSxDQUFDLENBQUM7UUFDekIsSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDO1FBRWhCLFVBQVUsQ0FBQztZQUNQLEVBQUUsQ0FBQyxRQUFRLENBQUMsWUFBWSxDQUFDLFdBQVcsRUFBRSxVQUFDLEdBQUc7Z0JBQ3RDLElBQUksR0FBRyxFQUFFO29CQUNMLDZDQUE2Qztv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QUFRLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQztnREFDSztJQUd2QjtRQURDLFFBQVEsQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDO2dEQUNLO0lBR3ZCO1FBREMsUUFBUSxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUM7b0RBQ1M7SUFHM0I7UUFEQyxRQUFRLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQzsrQ0FDSTtJQUl0QjtRQURDLFFBQVEsQ0FBQyxFQUFFLElBQUksRUFBRSxDQUFDLEVBQUUsQ0FBQyxNQUFNLENBQUMsRUFBRSxPQUFPLEVBQUUsTUFBTSxFQUFFLENBQUM7cURBQ2Q7SUFHbkM7UUFEQyxRQUFRLENBQUMsRUFBRSxJQUFJLEVBQUUsQ0FBQyxFQUFFLENBQUMsTUFBTSxDQUFDLEVBQUUsT0FBTyxFQUFFLE1BQU0sRUFBRSxDQUFDO3FEQUNkO0lBekJsQixZQUFZO1FBRGhDLE9BQU87T0FDYSxZQUFZLENBbVJoQztJQUFELG1CQUFDO0NBblJELEFBbVJDLENBblJ5QyxFQUFFLENBQUMsU0FBUyxHQW1SckQ7a0JBblJvQixZQUFZIiwiZmlsZSI6IiIsInNvdXJjZVJvb3QiOiIvIiwic291cmNlc0NvbnRlbnQiOlsiLy8gTGVhcm4gVHlwZVNjcmlwdDpcclxuLy8gIC0gaHR0cHM6Ly9kb2NzLmNvY29zLmNvbS9jcmVhdG9yL21hbnVhbC9lbi9zY3JpcHRpbmcvdHlwZXNjcmlwdC5odG1sXHJcbi8vIExlYXJuIEF0dHJpYnV0ZTpcclxuLy8gIC0gaHR0cHM6Ly9kb2NzLmNvY29zLmNvbS9jcmVhdG9yL21hbnVhbC9lbi9zY3JpcHRpbmcvcmVmZXJlbmNlL2F0dHJpYnV0ZXMuaHRtbFxyXG4vLyBMZWFybiBsaWZlLWN5Y2xlIGNhbGxiYWNrczpcclxuLy8gIC0gaHR0cHM6Ly9kb2NzLmNvY29zLmNvbS9jcmVhdG9yL21hbnVhbC9lbi9zY3JpcHRpbmcvbGlmZS1jeWNsZS1jYWxsYmFja3MuaHRtbFxyXG5cclxuaW1wb3J0IE1hcENvbnJvbGVyIGZyb20gXCIuL01hcFwiO1xyXG5pbXBvcnQgeyBNaW5pR2FtZVNkayB9IGZyb20gXCIuL1Nkay9NaW5pR2FtZVNka1wiO1xyXG5cclxuY29uc3QgeyBjY2NsYXNzLCBwcm9wZXJ0eSB9ID0gY2MuX2RlY29yYXRvcjtcclxuXHJcbkBjY2NsYXNzXHJcbmV4cG9ydCBkZWZhdWx0IGNsYXNzIFNjZW5lTWFuYWdlciBleHRlbmRzIGNjLkNvbXBvbmVudCB7XHJcblxyXG4gICAgQHByb3BlcnR5KGNjLkxhYmVsKVxyXG4gICAgbGFiZWw6IGNjLkxhYmVsID0gbnVsbDtcclxuXHJcbiAgICBAcHJvcGVydHlcclxuICAgIHRleHQ6IHN0cmluZyA9ICdoZWxsbyc7XHJcblxyXG4gICAgQHByb3BlcnR5KGNjLk5vZGUpXHJcbiAgICBmcmVlemU6IGNjLk5vZGUgPSBudWxsO1xyXG5cclxuICAgIEBwcm9wZXJ0eShjYy5Ob2RlKVxyXG4gICAgaGFtbWVyOiBjYy5Ob2RlID0gbnVsbDtcclxuXHJcbiAgICBAcHJvcGVydHkoY2MuTm9kZSlcclxuICAgIG1hZ2ljX3dhbmQ6IGNjLk5vZGUgPSBudWxsO1xyXG5cclxuICAgIEBwcm9wZXJ0eShjYy5Ob2RlKVxyXG4gICAgcGF1c2U6IGNjLk5vZGUgPSBudWxsO1xyXG5cclxuXHJcbiAgICBAcHJvcGVydHkoeyB0eXBlOiBbY2MuUHJlZmFiXSwgdG9vbHRpcDogXCLmlrnlnZfmlbDnu4RcIiB9KVxyXG4gICAgQmxvY2tfQXJyYXk6IEFycmF5PGNjLlByZWZhYj4gPSBbXTtcclxuXHJcbiAgICBAcHJvcGVydHkoeyB0eXBlOiBbY2MuUHJlZmFiXSwgdG9vbHRpcDogXCLlopnlo4HmlbDnu4RcIiB9KVxyXG4gICAgV2FsbF9QcmVmYWI6IEFycmF5PGNjLlByZWZhYj4gPSBbXTtcclxuXHJcbiAgICBwYXJ0aWNsZUVmZmVjdHM6IGNjLlBhcnRpY2xlQXNzZXRbXTtcclxuICAgIC8vIEBwcm9wZXJ0eSh7dHlwZTogW2NjLlBhcnRpY2xlU3lzdGVtXSwgdG9vbHRpcDpcIueykuWtkOaVsOe7hFwifSlcclxuICAgIC8vIHBhcnRpY2xlRWZmZWN0cyA6IEFycmF5PGNjLlBhcnRpY2xlU3lzdGVtPiA9IFtdO1xyXG5cclxuICAgIGxvYWQxOiBib29sZWFuID0gZmFsc2U7XHJcbiAgICBsb2FkMjogYm9vbGVhbiA9IGZhbHNlO1xyXG4gICAgbG9hZDM6IGJvb2xlYW4gPSBmYWxzZTtcclxuICAgIGJ0bk5hbWU6IHN0cmluZyA9ICcnO1xyXG4gICAgY2FsbEJhY2s6IGFueTtcclxuXHJcblxyXG4gICAgLy8gTElGRS1DWUNMRSBDQUxMQkFDS1M6XHJcblxyXG4gICAgb25Mb2FkKCkge1xyXG4gICAgICAgIGNjLmdhbWUuc2V0RnJhbWVSYXRlKDYzKTtcclxuICAgICAgICB0aGlzLmNoYW5nZUJnKCk7XHJcblxyXG4gICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICAgICAgICBjYy5kaXJlY3Rvci5wcmVsb2FkU2NlbmUoXCJIb21lU2NlbmVcIiwgKGVycikgPT4ge1xyXG4gICAgICAgICAgICAgICAgaWYgKGVycikge1xyXG4gICAgICAgICAgICAgICAgICAgIC8vIGNvbnNvbGUuZXJyb3IoJ+mihOWKoOi9vSBIb21lU2NlbmUg5Zy65pmv5aSx6LSlOicsIGVycik7XHJcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgLy8gY29uc29sZS5sb2coJ+aIkOWKn+mihOWKoOi9vSBIb21lU2NlbmUg5Zy65pmvJyk7XHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgIH0sIDEwMDApO1xyXG5cclxuICAgIH1cclxuXHJcbiAgICBjaGFuZ2VCZygpIHtcclxuICAgICAgICBsZXQgbnVtYmVyID0gTWF0aC5mbG9vcihNYXRoLnJhbmRvbSgpICogOCkgKyAxO1xyXG4gICAgICAgIGNvbnN0IHBhdGggPSAnYmcvYmcnICsgbnVtYmVyO1xyXG4gICAgICAgIGNjLnJlc291cmNlcy5sb2FkKHBhdGgsIGNjLlNwcml0ZUZyYW1lLCAoZXJyLCBzcHJpdGVGcmFtZTogY2MuU3ByaXRlRnJhbWUpID0+IHtcclxuICAgICAgICAgICAgaWYgKGVycikge1xyXG4gICAgICAgICAgICAgICAgY29uc29sZS5lcnJvcign5Yqo5oCB5Yqg6L296IOM5pmv5Zu+5aSx6LSlOicsIGVycik7XHJcbiAgICAgICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgdGhpcy5ub2RlLmdldENoaWxkQnlOYW1lKFwiR2FtZVwiKS5nZXRDaGlsZEJ5TmFtZShcImJnXCIpLmdldENvbXBvbmVudChjYy5TcHJpdGUpLnNwcml0ZUZyYW1lID0gc3ByaXRlRnJhbWU7XHJcbiAgICAgICAgfSlcclxuICAgIH1cclxuXHJcbiAgICBsb2FkUGFydGljbGVFZmZlY3RzKCkge1xyXG4gICAgICAgIGNvbnN0IHBhdGggPSAnUGFydGljbGUnO1xyXG4gICAgICAgIGNjLnJlc291cmNlcy5sb2FkRGlyKHBhdGgsIGNjLlBhcnRpY2xlQXNzZXQsIChlcnIsIGFzc2V0czogY2MuUGFydGljbGVBc3NldFtdKSA9PiB7XHJcbiAgICAgICAgICAgIGlmIChlcnIpIHtcclxuICAgICAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoJ+WKqOaAgeWKoOi9veeykuWtkOeJueaViOWksei0pTonLCBlcnIpO1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICB0aGlzLnBhcnRpY2xlRWZmZWN0cyA9IGFzc2V0cztcclxuICAgICAgICAgICAgdGhpcy5zZXRQYXJ0aWNsZVNvcnQoKTtcclxuICAgICAgICAgICAgdGhpcy5sb2FkMyA9IHRydWU7XHJcbiAgICAgICAgICAgIC8vY29uc29sZS5sb2coJ+eykuWtkOeJueaViOWKoOi9veaIkOWKn++8jOWFseWKoOi9veS6hicsIHRoaXMucGFydGljbGVFZmZlY3RzLmxlbmd0aCwgJ+S4queykuWtkOeJueaViCcpO1xyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG5cclxuICAgIHNldFdhbGxQcmVmYWJTb3J0KCkge1xyXG4gICAgICAgIGNvbnN0IG9yZGVyID0gWydkb3duJywgJ2Rvd25MZWZ0JywgJ2Rvd25SaWdodCcsICdsZWZ0JywgJ3JpZ2h0JywgJ3VwJywgJ3VwTGVmdCcsICd1cFJpZ2h0J107XHJcbiAgICAgICAgdGhpcy5XYWxsX1ByZWZhYi5zb3J0KChhLCBiKSA9PiB7XHJcbiAgICAgICAgICAgIGNvbnN0IGluZGV4QSA9IG9yZGVyLmluZGV4T2YoYS5uYW1lKTtcclxuICAgICAgICAgICAgY29uc3QgaW5kZXhCID0gb3JkZXIuaW5kZXhPZihiLm5hbWUpO1xyXG4gICAgICAgICAgICBpZiAoaW5kZXhBID09PSAtMSkgcmV0dXJuIDE7XHJcbiAgICAgICAgICAgIGlmIChpbmRleEIgPT09IC0xKSByZXR1cm4gLTE7XHJcbiAgICAgICAgICAgIHJldHVybiBpbmRleEEgLSBpbmRleEI7XHJcbiAgICAgICAgfSk7XHJcblxyXG4gICAgfVxyXG5cclxuICAgIHNldFBhcnRpY2xlU29ydCgpIHtcclxuICAgICAgICBjb25zdCBvcmRlciA9IFsndG9wJywgJ2JvdCcsICdyaWcnLCAnbGVmJ107XHJcbiAgICAgICAgdGhpcy5wYXJ0aWNsZUVmZmVjdHMuc29ydCgoYSwgYikgPT4ge1xyXG4gICAgICAgICAgICAvLyBjb25zb2xlLmxvZyhhLm5hbWUuc3Vic3RyKDAsMyksYi5uYW1lLnN1YnN0cigwLDMpKTtcclxuICAgICAgICAgICAgY29uc3QgaW5kZXhBID0gb3JkZXIuaW5kZXhPZihhLm5hbWUuc3Vic3RyKDAsIDMpKTtcclxuICAgICAgICAgICAgY29uc3QgaW5kZXhCID0gb3JkZXIuaW5kZXhPZihiLm5hbWUuc3Vic3RyKDAsIDMpKTtcclxuICAgICAgICAgICAgaWYgKGluZGV4QSA9PT0gLTEpIHJldHVybiAxO1xyXG4gICAgICAgICAgICBpZiAoaW5kZXhCID09PSAtMSkgcmV0dXJuIC0xO1xyXG4gICAgICAgICAgICByZXR1cm4gaW5kZXhBIC0gaW5kZXhCO1xyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG5cclxuICAgIHNldFNvcnQoKSB7XHJcbiAgICAgICAgdGhpcy5CbG9ja19BcnJheS5zb3J0KChhLCBiKSA9PiB7XHJcbiAgICAgICAgICAgIC8vIOS7juWQjeensOS4reaPkOWPluaVsOWtl+mDqOWIhlxyXG4gICAgICAgICAgICBjb25zdCBudW1iZXJBID0gcGFyc2VJbnQoYS5uYW1lLm1hdGNoKC9cXGQrLyk/LlswXSB8fCAnMCcsIDEwKTtcclxuICAgICAgICAgICAgY29uc3QgbnVtYmVyQiA9IHBhcnNlSW50KGIubmFtZS5tYXRjaCgvXFxkKy8pPy5bMF0gfHwgJzAnLCAxMCk7XHJcbiAgICAgICAgICAgIHJldHVybiBudW1iZXJBIC0gbnVtYmVyQjtcclxuICAgICAgICB9KTtcclxuICAgIH1cclxuXHJcbiAgICBzdGFydCgpIHtcclxuXHJcbiAgICB9XHJcblxyXG4gICAgc3RhcnRHYW1lKCkge1xyXG4gICAgICAgIGNjLmRpcmVjdG9yLmxvYWRTY2VuZShcIkhvbWVTY2VuZVwiLCAoZXJyKSA9PiB7XHJcbiAgICAgICAgICAgIGlmIChlcnIpIHtcclxuICAgICAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoJ+WKoOi9vSBIb21lU2NlbmUg5Zy65pmv5aSx6LSlOicsIGVycik7XHJcbiAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAvLyBjb25zb2xlLmxvZygn5oiQ5Yqf5YiH5o2i5YiwIEhvbWVTY2VuZSDlnLrmma8nKTtcclxuICAgICAgICAgICAgICAgIGNjLmRpcmVjdG9yLmxvYWRTY2VuZShcIkhvbWVTY2VuZVwiKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH0pO1xyXG5cclxuICAgIH1cclxuXHJcbiAgICByZXR1cm5Ib21lKCkge1xyXG4gICAgICAgIGlmICh0aGlzLm5vZGUuZ2V0Q2hpbGRCeU5hbWUoXCJQYXVzZVwiKS5nZXRDaGlsZEJ5TmFtZShcImJ0blwiKS5nZXRDb21wb25lbnQoXCJidG5Db250cm9sXCIpLl90b3VjaCkge1xyXG4gICAgICAgICAgICBpZiAoTWFwQ29ucm9sZXIuX2luc3RhbmNlLmdhbWVTdGFydCA9PSB0cnVlKSB7XHJcbiAgICAgICAgICAgICAgICBNaW5pR2FtZVNkay5BUEkuc2hvd1RvYXN0KFwi5L2T5Yqb5YC85YeP5bCRXCIpO1xyXG4gICAgICAgICAgICAgICAgY2MuZnguR2FtZVRvb2wuc2V0VXNlckhlYWx0aCgtMSwgKGRhdGEpID0+IHtcclxuICAgICAgICAgICAgICAgIH0pXHJcbiAgICAgICAgICAgICAgICBsZXQgZGF0YSA9IHtcclxuICAgICAgICAgICAgICAgICAgICB0aW1lOiBNYXBDb25yb2xlci5faW5zdGFuY2UuY291bnRfVGltZSxcclxuICAgICAgICAgICAgICAgICAgICBhZGRfVGltZTogTWFwQ29ucm9sZXIuX2luc3RhbmNlLmFkZF9UaW1lLFxyXG4gICAgICAgICAgICAgICAgICAgIHJlc3VsdDogXCJnaXZlX3VwXCJcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIGNjLmZ4LkdhbWVUb29sLnNodXNodV9UcmFjayhcImZpbmlzaF9zdGFnZVwiLCBkYXRhKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB0aGlzLm5vZGUuZ2V0Q2hpbGRCeU5hbWUoXCJQYXVzZVwiKS5nZXRDaGlsZEJ5TmFtZShcImJ0blwiKS5nZXRDb21wb25lbnQoXCJidG5Db250cm9sXCIpLnNldFRvdWNoKGZhbHNlKTtcclxuICAgICAgICAgICAgY2MuZnguQXVkaW9NYW5hZ2VyLl9pbnN0YW5jZS5wbGF5RWZmZWN0KFwiemh1YW4xXCIsIG51bGwpO1xyXG4gICAgICAgICAgICB0aGlzLm5vZGUuZ2V0Q2hpbGRCeU5hbWUoXCJ6aHVhbmNoYW5nXCIpLmFjdGl2ZSA9IHRydWU7XHJcbiAgICAgICAgICAgIHRoaXMubm9kZS5nZXRDaGlsZEJ5TmFtZShcInpodWFuY2hhbmdcIikuZ2V0Q29tcG9uZW50KHNwLlNrZWxldG9uKS5zZXRBbmltYXRpb24oMSwgXCJ1cFwiLCBmYWxzZSk7XHJcbiAgICAgICAgICAgIGNjLmRpcmVjdG9yLnByZWxvYWRTY2VuZShcIkhvbWVTY2VuZVwiLCAoZXJyLCBhc3NldCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgaWYgKGVycikge1xyXG4gICAgICAgICAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoJ+WKqOaAgeWKoOi9vSBQcmVmYWIg5aSx6LSlOicsIGVycik7XHJcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgY2MuZGlyZWN0b3IubG9hZFNjZW5lKFwiSG9tZVNjZW5lXCIpO1xyXG4gICAgICAgICAgICB9LCAxMjAwKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG5cclxuICAgIGRlc3Ryb3lOb2Rlc0luRnJhbWVzKG5vZGVzOiBjYy5Ob2RlW10sIGNhbGxiYWNrOiAoKSA9PiB2b2lkKSB7XHJcbiAgICAgICAgY29uc3QgQkFUQ0hfU0laRSA9IDEwOyAvLyDmr4/luKfplIDmr4HnmoToioLngrnmlbDph49cclxuICAgICAgICBsZXQgaW5kZXggPSAwO1xyXG5cclxuICAgICAgICBjb25zdCBkZXN0cm95QmF0Y2ggPSAoKSA9PiB7XHJcbiAgICAgICAgICAgIGxldCBjb3VudCA9IDA7XHJcbiAgICAgICAgICAgIHdoaWxlIChpbmRleCA8IG5vZGVzLmxlbmd0aCAmJiBjb3VudCA8IEJBVENIX1NJWkUpIHtcclxuICAgICAgICAgICAgICAgIGNvbnN0IG5vZGUgPSBub2Rlc1tpbmRleF07XHJcbiAgICAgICAgICAgICAgICBpZiAobm9kZSkge1xyXG5cclxuICAgICAgICAgICAgICAgICAgICBub2RlLmFjdGl2ZSA9IGZhbHNlO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgaW5kZXgrKztcclxuICAgICAgICAgICAgICAgIGNvdW50Kys7XHJcbiAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgIGlmIChpbmRleCA8IG5vZGVzLmxlbmd0aCkge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5zY2hlZHVsZU9uY2UoZGVzdHJveUJhdGNoLCA2KTtcclxuICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgIGNhbGxiYWNrKCk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9O1xyXG5cclxuICAgICAgICBkZXN0cm95QmF0Y2goKTtcclxuICAgIH1cclxuXHJcbiAgICAvLyDmlLnov5vlkI7nmoTliIfmjaLlnLrmma/mlrnms5VcclxuICAgIHN3aXRjaFRvRW1wdHlTY2VuZSgpIHtcclxuICAgICAgICBjb25zdCBhbGxOb2RlcyA9IGNjLmRpcmVjdG9yLmdldFNjZW5lKCkuY2hpbGRyZW47XHJcbiAgICAgICAgdGhpcy5kZXN0cm95Tm9kZXNJbkZyYW1lcyhhbGxOb2RlcywgKCkgPT4ge1xyXG4gICAgICAgICAgICBjYy5kaXJlY3Rvci5sb2FkU2NlbmUoXCJIb21lU2NlbmVcIik7XHJcbiAgICAgICAgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgb3BlblBhdXNlKCkge1xyXG4gICAgICAgIGNjLmZ4LkF1ZGlvTWFuYWdlci5faW5zdGFuY2UucGxheUVmZmVjdChcImFubml1X2xpdHRsZVwiLCBudWxsKTtcclxuICAgICAgICBpZiAodGhpcy5wYXVzZS5nZXRDb21wb25lbnQoXCJidG5Db250cm9sXCIpLl90b3VjaCkge1xyXG4gICAgICAgICAgICB0aGlzLnBhdXNlLmdldENvbXBvbmVudChcImJ0bkNvbnRyb2xcIikuc2V0VG91Y2goZmFsc2UpO1xyXG4gICAgICAgICAgICB0aGlzLm5vZGUuZ2V0Q2hpbGRCeU5hbWUoXCJQYXVzZVwiKS5hY3RpdmUgPSB0cnVlO1xyXG4gICAgICAgICAgICBNYXBDb25yb2xlci5faW5zdGFuY2UucGF1c2UgPSB0cnVlO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICB9XHJcblxyXG4gICAgY2xvc2VQYXVzZSgpIHtcclxuICAgICAgICBjYy5meC5BdWRpb01hbmFnZXIuX2luc3RhbmNlLnBsYXlFZmZlY3QoXCJhbm5pdV9saXR0bGVcIiwgbnVsbCk7XHJcbiAgICAgICAgdGhpcy5wYXVzZS5nZXRDb21wb25lbnQoXCJidG5Db250cm9sXCIpLnNldFRvdWNoKHRydWUpO1xyXG4gICAgICAgIHRoaXMubm9kZS5nZXRDaGlsZEJ5TmFtZShcIlBhdXNlXCIpLmFjdGl2ZSA9IGZhbHNlO1xyXG4gICAgICAgIGlmIChNYXBDb25yb2xlci5faW5zdGFuY2Uubm9kZS5wYXJlbnQuZ2V0Q2hpbGRCeU5hbWUoXCJJY2VcIikuYWN0aXZlID09IGZhbHNlKSB7XHJcbiAgICAgICAgICAgIE1hcENvbnJvbGVyLl9pbnN0YW5jZS5wYXVzZSA9IGZhbHNlO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBvcGVuUHJvcEJ1eShuYW1lKSB7XHJcbiAgICAgICAgTWFwQ29ucm9sZXIuX2luc3RhbmNlLnBhdXNlID0gdHJ1ZTtcclxuICAgICAgICB0aGlzLmJ0bk5hbWUgPSBuYW1lO1xyXG4gICAgICAgIGxldCBwcm9wV2luZG93ID0gdGhpcy5ub2RlLmdldENoaWxkQnlOYW1lKFwiR2FtZVwiKS5nZXRDaGlsZEJ5TmFtZShcInByb3BXaW5kb3dcIik7XHJcbiAgICAgICAgcHJvcFdpbmRvdy5hY3RpdmUgPSB0cnVlO1xyXG4gICAgICAgIHByb3BXaW5kb3cuZ2V0Q2hpbGRCeU5hbWUoXCJmcmVlemVcIikuYWN0aXZlID0gZmFsc2U7XHJcbiAgICAgICAgcHJvcFdpbmRvdy5nZXRDaGlsZEJ5TmFtZShcImhhbW1lclwiKS5hY3RpdmUgPSBmYWxzZTtcclxuICAgICAgICBwcm9wV2luZG93LmdldENoaWxkQnlOYW1lKFwibWFnaWNcIikuYWN0aXZlID0gZmFsc2U7XHJcbiAgICAgICAgcHJvcFdpbmRvdy5nZXRDaGlsZEJ5TmFtZShcImJ1eV9CdG5cIikuZ2V0Q29tcG9uZW50KFwiYnRuQ29udHJvbFwiKS5zZXRUb3VjaCh0cnVlKTtcclxuICAgICAgICBwcm9wV2luZG93LmdldENoaWxkQnlOYW1lKG5hbWUpLmFjdGl2ZSA9IHRydWU7XHJcbiAgICB9XHJcblxyXG4gICAgY2xpY2tCdG4oKSB7XHJcbiAgICAgICAgY2MuZnguQXVkaW9NYW5hZ2VyLl9pbnN0YW5jZS5wbGF5RWZmZWN0KFwiYW5uaXVfQmlnXCIsIG51bGwpO1xyXG4gICAgICAgIGxldCBwcm9wV2luZG93ID0gdGhpcy5ub2RlLmdldENoaWxkQnlOYW1lKFwiR2FtZVwiKS5nZXRDaGlsZEJ5TmFtZShcInByb3BXaW5kb3dcIik7XHJcbiAgICAgICAgaWYgKHByb3BXaW5kb3cuZ2V0Q2hpbGRCeU5hbWUoXCJidXlfQnRuXCIpLmdldENvbXBvbmVudChcImJ0bkNvbnRyb2xcIikuX3RvdWNoKSB7XHJcbiAgICAgICAgICAgIHByb3BXaW5kb3cuZ2V0Q2hpbGRCeU5hbWUoXCJidXlfQnRuXCIpLmdldENvbXBvbmVudChcImJ0bkNvbnRyb2xcIikuc2V0VG91Y2goZmFsc2UpO1xyXG4gICAgICAgICAgICBpZiAodGhpcy5idG5OYW1lID09IFwiZnJlZXplXCIpXHJcbiAgICAgICAgICAgICAgICBNYXBDb25yb2xlci5faW5zdGFuY2UuYnV5RnJlZXplKCk7XHJcbiAgICAgICAgICAgIGVsc2UgaWYgKHRoaXMuYnRuTmFtZSA9PSBcImhhbW1lclwiKVxyXG4gICAgICAgICAgICAgICAgTWFwQ29ucm9sZXIuX2luc3RhbmNlLmJ1eUhhbW1lcigpO1xyXG4gICAgICAgICAgICBlbHNlIGlmICh0aGlzLmJ0bk5hbWUgPT0gXCJtYWdpY1wiKVxyXG4gICAgICAgICAgICAgICAgTWFwQ29ucm9sZXIuX2luc3RhbmNlLmJ1eU1hZ2ljKCk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG4gICAgLy/miZPlvIDllYblupdcclxuICAgIG9wZW5TaG9wKCkge1xyXG4gICAgICAgIC8vIOWKoOi9vSBzaG9wICBidW5kbGVcclxuICAgICAgICBjYy5hc3NldE1hbmFnZXIubG9hZEJ1bmRsZSgnc2hvcCcsIChlcnI6IEVycm9yLCBidW5kbGU6IGNjLkFzc2V0TWFuYWdlci5CdW5kbGUpID0+IHtcclxuICAgICAgICAgICAgYnVuZGxlLmxvYWQoJ3ByZWZhYi9zaG9wJywgY2MuUHJlZmFiLCAoZXJyOiBFcnJvciwgcHJlZmFiOiBjYy5QcmVmYWIpID0+IHtcclxuICAgICAgICAgICAgICAgIGlmIChlcnIpIHtcclxuICAgICAgICAgICAgICAgICAgICBjYy5lcnJvcihlcnIubWVzc2FnZSB8fCBlcnIpO1xyXG4gICAgICAgICAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIGlmIChwcmVmYWIpIHtcclxuICAgICAgICAgICAgICAgICAgICBjb25zdCBzaG9wTm9kZSA9IGNjLmluc3RhbnRpYXRlKHByZWZhYik7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5ub2RlLmFkZENoaWxkKHNob3BOb2RlKTtcclxuICAgICAgICAgICAgICAgICAgICBjb25zb2xlLmxvZyhcInNob3BOb2RlIHBhcmVudDpcIiwgc2hvcE5vZGUucGFyZW50KTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgfSk7XHJcbiAgICB9XHJcblxyXG5cclxuICAgIGNsb3NlUHJvcEJ1eSgpIHtcclxuICAgICAgICBNYXBDb25yb2xlci5faW5zdGFuY2UucGF1c2UgPSBmYWxzZTtcclxuICAgICAgICBsZXQgZnJlZXplQnRuID0gTWFwQ29ucm9sZXIuX2luc3RhbmNlLm5vZGUucGFyZW50LmdldENoaWxkQnlOYW1lKFwiQm90dG9tXCIpLmdldENoaWxkQnlOYW1lKFwidGltZUJ0blwiKTtcclxuICAgICAgICBsZXQgaGFtbWVyQnRuID0gTWFwQ29ucm9sZXIuX2luc3RhbmNlLm5vZGUucGFyZW50LmdldENoaWxkQnlOYW1lKFwiQm90dG9tXCIpLmdldENoaWxkQnlOYW1lKFwiZGVzdHJveUJ0blwiKTtcclxuICAgICAgICBsZXQgbWFnaWNCdG4gPSBNYXBDb25yb2xlci5faW5zdGFuY2Uubm9kZS5wYXJlbnQuZ2V0Q2hpbGRCeU5hbWUoXCJCb3R0b21cIikuZ2V0Q2hpbGRCeU5hbWUoXCJtYWdpY0J0blwiKTtcclxuICAgICAgICBpZiAodGhpcy5idG5OYW1lID09IFwiZnJlZXplXCIpIGZyZWV6ZUJ0bi5nZXRDb21wb25lbnQoXCJidG5Db250cm9sXCIpLnNldFRvdWNoKHRydWUpO1xyXG4gICAgICAgIGVsc2UgaWYgKHRoaXMuYnRuTmFtZSA9PSBcImhhbW1lclwiKSBoYW1tZXJCdG4uZ2V0Q29tcG9uZW50KFwiYnRuQ29udHJvbFwiKS5zZXRUb3VjaCh0cnVlKTtcclxuICAgICAgICBlbHNlIGlmICh0aGlzLmJ0bk5hbWUgPT0gXCJtYWdpY1wiKSBtYWdpY0J0bi5nZXRDb21wb25lbnQoXCJidG5Db250cm9sXCIpLnNldFRvdWNoKHRydWUpO1xyXG5cclxuICAgICAgICB0aGlzLm5vZGUuZ2V0Q2hpbGRCeU5hbWUoXCJHYW1lXCIpLmdldENoaWxkQnlOYW1lKFwicHJvcFdpbmRvd1wiKS5hY3RpdmUgPSBmYWxzZTtcclxuICAgIH1cclxuXHJcbiAgICB1cGRhdGUoZHQpIHtcclxuXHJcbiAgICB9XHJcbn1cclxuIl19 -//------QC-SOURCE-SPLIT------ - - (function() { - var nodeEnv = typeof require !== 'undefined' && typeof process !== 'undefined'; - var __module = nodeEnv ? module : {exports:{}}; - var __filename = 'preview-scripts/assets/Script/btnControl.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, '6ee6czJ4eVNb4Feiqps5SIa', 'btnControl'); -// Script/btnControl.ts - -"use strict"; -var __extends = (this && this.__extends) || (function () { - var extendStatics = function (d, b) { - extendStatics = Object.setPrototypeOf || - ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) || - function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; }; - return extendStatics(d, b); - }; - return function (d, b) { - extendStatics(d, b); - function __() { this.constructor = d; } - d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); - }; -})(); -var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) { - var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; - if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc); - else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; - return c > 3 && r && Object.defineProperty(target, key, r), r; -}; -Object.defineProperty(exports, "__esModule", { value: true }); -var _a = cc._decorator, ccclass = _a.ccclass, property = _a.property; -var btnControl = /** @class */ (function (_super) { - __extends(btnControl, _super); - function btnControl() { - return _super !== null && _super.apply(this, arguments) || this; - } - btnControl.prototype.onLoad = function () { - this._touch = true; - }; - btnControl.prototype.start = function () { - }; - btnControl.prototype.setTouch = function (type) { - this._touch = type; - }; - btnControl.prototype.update = function (dt) { - }; - btnControl = __decorate([ - ccclass - ], btnControl); - return btnControl; -}(cc.Component)); -exports.default = btnControl; - -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,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImFzc2V0c1xcU2NyaXB0XFxidG5Db250cm9sLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUdNLElBQUEsS0FBc0IsRUFBRSxDQUFDLFVBQVUsRUFBbEMsT0FBTyxhQUFBLEVBQUUsUUFBUSxjQUFpQixDQUFDO0FBSTFDO0lBQXdDLDhCQUFZO0lBQXBEOztJQWtCQSxDQUFDO0lBYkcsMkJBQU0sR0FBTjtRQUNJLElBQUksQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFDO0lBQ3ZCLENBQUM7SUFFRCwwQkFBSyxHQUFMO0lBQ0EsQ0FBQztJQUVELDZCQUFRLEdBQVIsVUFBUyxJQUFJO1FBQ1QsSUFBSSxDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUM7SUFDdkIsQ0FBQztJQUVELDJCQUFNLEdBQU4sVUFBUSxFQUFFO0lBQ1YsQ0FBQztJQWpCZ0IsVUFBVTtRQUQ5QixPQUFPO09BQ2EsVUFBVSxDQWtCOUI7SUFBRCxpQkFBQztDQWxCRCxBQWtCQyxDQWxCdUMsRUFBRSxDQUFDLFNBQVMsR0FrQm5EO2tCQWxCb0IsVUFBVSIsImZpbGUiOiIiLCJzb3VyY2VSb290IjoiLyIsInNvdXJjZXNDb250ZW50IjpbIlxyXG5cclxuXHJcbmNvbnN0IHtjY2NsYXNzLCBwcm9wZXJ0eX0gPSBjYy5fZGVjb3JhdG9yO1xyXG5cclxuXHJcbkBjY2NsYXNzXHJcbmV4cG9ydCBkZWZhdWx0IGNsYXNzIGJ0bkNvbnRyb2wgZXh0ZW5kcyBjYy5Db21wb25lbnQge1xyXG4gICAgc3RhdGljIF9pbnN0YW5jZTogYW55O1xyXG4gICAgX3RvdWNoOiBib29sZWFuO1xyXG5cclxuXHJcbiAgICBvbkxvYWQgKCkgeyBcclxuICAgICAgICB0aGlzLl90b3VjaCA9IHRydWU7XHJcbiAgICB9IFxyXG5cclxuICAgIHN0YXJ0ICgpIHtcclxuICAgIH1cclxuXHJcbiAgICBzZXRUb3VjaCh0eXBlKXtcclxuICAgICAgICB0aGlzLl90b3VjaCA9IHR5cGU7XHJcbiAgICB9XHJcblxyXG4gICAgdXBkYXRlIChkdCkge1xyXG4gICAgfVxyXG59XHJcbiJdfQ== -//------QC-SOURCE-SPLIT------ - - (function() { - var nodeEnv = typeof require !== 'undefined' && typeof process !== 'undefined'; - var __module = nodeEnv ? module : {exports:{}}; - var __filename = 'preview-scripts/assets/Script/NewMode.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, '7fe14dRFQZKSKKAoEn4S7OU', 'NewMode'); -// Script/NewMode.ts - -"use strict"; -// Learn TypeScript: -// - https://docs.cocos.com/creator/manual/en/scripting/typescript.html -// Learn Attribute: -// - https://docs.cocos.com/creator/manual/en/scripting/reference/attributes.html -// Learn life-cycle callbacks: -// - https://docs.cocos.com/creator/manual/en/scripting/life-cycle-callbacks.html -var __extends = (this && this.__extends) || (function () { - var extendStatics = function (d, b) { - extendStatics = Object.setPrototypeOf || - ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) || - function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; }; - return extendStatics(d, b); - }; - return function (d, b) { - extendStatics(d, b); - function __() { this.constructor = d; } - d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); - }; -})(); -var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) { - var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; - if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc); - else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; - return c > 3 && r && Object.defineProperty(target, key, r), r; -}; -Object.defineProperty(exports, "__esModule", { value: true }); -var _a = cc._decorator, ccclass = _a.ccclass, property = _a.property; -var NewClass = /** @class */ (function (_super) { - __extends(NewClass, _super); - function NewClass() { - var _this = _super !== null && _super.apply(this, arguments) || this; - _this.label = null; - _this.text = 'hello'; - _this.btnStatic = 0; - _this.propName = ""; - return _this; - // update (dt) {} - } - // LIFE-CYCLE CALLBACKS: - // onLoad () {} - NewClass.prototype.start = function () { - var _this = this; - for (var i = 0; i < cc.fx.GameConfig.NEW_LEVEL.length; i++) { - if ((cc.fx.GameConfig.GM_INFO.level + 1) == cc.fx.GameConfig.NEW_LEVEL[i].level) { - this.propName = cc.fx.GameConfig.NEW_LEVEL[i].name; - var path = 'Window_Prop/' + this.propName; - cc.resources.load(path, cc.SpriteFrame, function (err, spriteFrame) { - if (err) { - console.error('动态加载背景图失败:', err); - return; - } - _this.node.getChildByName("icon").getComponent(cc.Sprite).spriteFrame = spriteFrame; - }); - break; - } - } - }; - NewClass.prototype.setMode = function (mode) { - this.btnStatic = mode; - var name = "GameScene"; - if (mode == 1) { - name = "HomeScene"; - } - cc.director.preloadScene(name, function () { - }); - }; - NewClass.prototype.clickBtn = function () { - cc.fx.AudioManager._instance.playEffect("anniu_Big", null); - if (this.btnStatic == 1) { - cc.director.loadScene("HomeScene"); - } - else if (this.btnStatic == 2) { - cc.director.loadScene("GameScene"); - } - }; - __decorate([ - property(cc.Label) - ], NewClass.prototype, "label", void 0); - __decorate([ - property - ], NewClass.prototype, "text", void 0); - NewClass = __decorate([ - ccclass - ], NewClass); - return NewClass; -}(cc.Component)); -exports.default = NewClass; - -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,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImFzc2V0c1xcU2NyaXB0XFxOZXdNb2RlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSxvQkFBb0I7QUFDcEIsd0VBQXdFO0FBQ3hFLG1CQUFtQjtBQUNuQixrRkFBa0Y7QUFDbEYsOEJBQThCO0FBQzlCLGtGQUFrRjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBRTVFLElBQUEsS0FBc0IsRUFBRSxDQUFDLFVBQVUsRUFBbEMsT0FBTyxhQUFBLEVBQUUsUUFBUSxjQUFpQixDQUFDO0FBRzFDO0lBQXNDLDRCQUFZO0lBQWxEO1FBQUEscUVBdURDO1FBcERHLFdBQUssR0FBYSxJQUFJLENBQUM7UUFHdkIsVUFBSSxHQUFXLE9BQU8sQ0FBQztRQUV2QixlQUFTLEdBQVcsQ0FBQyxDQUFDO1FBRXRCLGNBQVEsR0FBVyxFQUFFLENBQUM7O1FBNEN0QixpQkFBaUI7SUFDckIsQ0FBQztJQTNDRyx3QkFBd0I7SUFFeEIsZUFBZTtJQUVmLHdCQUFLLEdBQUw7UUFBQSxpQkFlQztRQWRHLEtBQUksSUFBSSxDQUFDLEdBQUMsQ0FBQyxFQUFFLENBQUMsR0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLFVBQVUsQ0FBQyxTQUFTLENBQUMsTUFBTSxFQUFFLENBQUMsRUFBRSxFQUFDO1lBQ2xELElBQUcsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLFVBQVUsQ0FBQyxPQUFPLENBQUMsS0FBSyxHQUFDLENBQUMsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxFQUFFLENBQUMsVUFBVSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLEVBQUM7Z0JBQ3pFLElBQUksQ0FBQyxRQUFRLEdBQUcsRUFBRSxDQUFDLEVBQUUsQ0FBQyxVQUFVLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQztnQkFDbkQsSUFBTSxJQUFJLEdBQUcsY0FBYyxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUM7Z0JBQzVDLEVBQUUsQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxFQUFFLENBQUMsV0FBVyxFQUFFLFVBQUMsR0FBRyxFQUFFLFdBQTJCO29CQUNyRSxJQUFJLEdBQUcsRUFBRTt3QkFDTCxPQUFPLENBQUMsS0FBSyxDQUFDLFlBQVksRUFBRSxHQUFHLENBQUMsQ0FBQzt3QkFDakMsT0FBTztxQkFDVjtvQkFDRCxLQUFJLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxZQUFZLENBQUMsRUFBRSxDQUFDLE1BQU0sQ0FBQyxDQUFDLFdBQVcsR0FBRyxXQUFXLENBQUM7Z0JBQ3ZGLENBQUMsQ0FBQyxDQUFBO2dCQUNGLE1BQU07YUFDVDtTQUNKO0lBQ0wsQ0FBQztJQUVELDBCQUFPLEdBQVAsVUFBUSxJQUFXO1FBQ2YsSUFBSSxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUM7UUFDdEIsSUFBSSxJQUFJLEdBQUcsV0FBVyxDQUFDO1FBQ3ZCLElBQUcsSUFBSSxJQUFJLENBQUMsRUFBQztZQUNULElBQUksR0FBRyxXQUFXLENBQUM7U0FDdEI7UUFDRCxFQUFFLENBQUMsUUFBUSxDQUFDLFlBQVksQ0FBQyxJQUFJLEVBQUU7UUFFL0IsQ0FBQyxDQUFDLENBQUE7SUFDTixDQUFDO0lBRUQsMkJBQVEsR0FBUjtRQUNJLEVBQUUsQ0FBQyxFQUFFLENBQUMsWUFBWSxDQUFDLFNBQVMsQ0FBQyxVQUFVLENBQUMsV0FBVyxFQUFDLElBQUksQ0FBQyxDQUFDO1FBQzFELElBQUcsSUFBSSxDQUFDLFNBQVMsSUFBSSxDQUFDLEVBQUM7WUFDbkIsRUFBRSxDQUFDLFFBQVEsQ0FBQyxTQUFTLENBQUMsV0FBVyxDQUFDLENBQUM7U0FDdEM7YUFDSSxJQUFHLElBQUksQ0FBQyxTQUFTLElBQUksQ0FBQyxFQUFDO1lBQ3hCLEVBQUUsQ0FBQyxRQUFRLENBQUMsU0FBUyxDQUFDLFdBQVcsQ0FBQyxDQUFDO1NBQ3RDO0lBQ0wsQ0FBQztJQWpERDtRQURDLFFBQVEsQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDOzJDQUNJO0lBR3ZCO1FBREMsUUFBUTswQ0FDYztJQU5OLFFBQVE7UUFENUIsT0FBTztPQUNhLFFBQVEsQ0F1RDVCO0lBQUQsZUFBQztDQXZERCxBQXVEQyxDQXZEcUMsRUFBRSxDQUFDLFNBQVMsR0F1RGpEO2tCQXZEb0IsUUFBUSIsImZpbGUiOiIiLCJzb3VyY2VSb290IjoiLyIsInNvdXJjZXNDb250ZW50IjpbIi8vIExlYXJuIFR5cGVTY3JpcHQ6XHJcbi8vICAtIGh0dHBzOi8vZG9jcy5jb2Nvcy5jb20vY3JlYXRvci9tYW51YWwvZW4vc2NyaXB0aW5nL3R5cGVzY3JpcHQuaHRtbFxyXG4vLyBMZWFybiBBdHRyaWJ1dGU6XHJcbi8vICAtIGh0dHBzOi8vZG9jcy5jb2Nvcy5jb20vY3JlYXRvci9tYW51YWwvZW4vc2NyaXB0aW5nL3JlZmVyZW5jZS9hdHRyaWJ1dGVzLmh0bWxcclxuLy8gTGVhcm4gbGlmZS1jeWNsZSBjYWxsYmFja3M6XHJcbi8vICAtIGh0dHBzOi8vZG9jcy5jb2Nvcy5jb20vY3JlYXRvci9tYW51YWwvZW4vc2NyaXB0aW5nL2xpZmUtY3ljbGUtY2FsbGJhY2tzLmh0bWxcclxuXHJcbmNvbnN0IHtjY2NsYXNzLCBwcm9wZXJ0eX0gPSBjYy5fZGVjb3JhdG9yO1xyXG5cclxuQGNjY2xhc3NcclxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgTmV3Q2xhc3MgZXh0ZW5kcyBjYy5Db21wb25lbnQge1xyXG5cclxuICAgIEBwcm9wZXJ0eShjYy5MYWJlbClcclxuICAgIGxhYmVsOiBjYy5MYWJlbCA9IG51bGw7XHJcblxyXG4gICAgQHByb3BlcnR5XHJcbiAgICB0ZXh0OiBzdHJpbmcgPSAnaGVsbG8nO1xyXG5cclxuICAgIGJ0blN0YXRpYzogbnVtYmVyID0gMDtcclxuXHJcbiAgICBwcm9wTmFtZTogc3RyaW5nID0gXCJcIjtcclxuXHJcbiAgICAvLyBMSUZFLUNZQ0xFIENBTExCQUNLUzpcclxuXHJcbiAgICAvLyBvbkxvYWQgKCkge31cclxuXHJcbiAgICBzdGFydCAoKSB7XHJcbiAgICAgICAgZm9yKGxldCBpPTA7IGk8Y2MuZnguR2FtZUNvbmZpZy5ORVdfTEVWRUwubGVuZ3RoOyBpKyspe1xyXG4gICAgICAgICAgICBpZigoY2MuZnguR2FtZUNvbmZpZy5HTV9JTkZPLmxldmVsKzEpID09IGNjLmZ4LkdhbWVDb25maWcuTkVXX0xFVkVMW2ldLmxldmVsKXtcclxuICAgICAgICAgICAgICAgIHRoaXMucHJvcE5hbWUgPSBjYy5meC5HYW1lQ29uZmlnLk5FV19MRVZFTFtpXS5uYW1lO1xyXG4gICAgICAgICAgICAgICAgY29uc3QgcGF0aCA9ICdXaW5kb3dfUHJvcC8nICsgdGhpcy5wcm9wTmFtZTtcclxuICAgICAgICAgICAgICAgIGNjLnJlc291cmNlcy5sb2FkKHBhdGgsIGNjLlNwcml0ZUZyYW1lLCAoZXJyLCBzcHJpdGVGcmFtZTogY2MuU3ByaXRlRnJhbWUpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICBpZiAoZXJyKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoJ+WKqOaAgeWKoOi9veiDjOaZr+WbvuWksei0pTonLCBlcnIpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgICAgICAgICAgICAgfSBcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLm5vZGUuZ2V0Q2hpbGRCeU5hbWUoXCJpY29uXCIpLmdldENvbXBvbmVudChjYy5TcHJpdGUpLnNwcml0ZUZyYW1lID0gc3ByaXRlRnJhbWU7XHJcbiAgICAgICAgICAgICAgICB9KVxyXG4gICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgc2V0TW9kZShtb2RlOm51bWJlcil7XHJcbiAgICAgICAgdGhpcy5idG5TdGF0aWMgPSBtb2RlO1xyXG4gICAgICAgIGxldCBuYW1lID0gXCJHYW1lU2NlbmVcIjtcclxuICAgICAgICBpZihtb2RlID09IDEpe1xyXG4gICAgICAgICAgICBuYW1lID0gXCJIb21lU2NlbmVcIjtcclxuICAgICAgICB9XHJcbiAgICAgICAgY2MuZGlyZWN0b3IucHJlbG9hZFNjZW5lKG5hbWUsICgpPT57XHJcblxyXG4gICAgICAgIH0pXHJcbiAgICB9XHJcblxyXG4gICAgY2xpY2tCdG4oKXtcclxuICAgICAgICBjYy5meC5BdWRpb01hbmFnZXIuX2luc3RhbmNlLnBsYXlFZmZlY3QoXCJhbm5pdV9CaWdcIixudWxsKTtcclxuICAgICAgICBpZih0aGlzLmJ0blN0YXRpYyA9PSAxKXtcclxuICAgICAgICAgICAgY2MuZGlyZWN0b3IubG9hZFNjZW5lKFwiSG9tZVNjZW5lXCIpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIGlmKHRoaXMuYnRuU3RhdGljID09IDIpeyBcclxuICAgICAgICAgICAgY2MuZGlyZWN0b3IubG9hZFNjZW5lKFwiR2FtZVNjZW5lXCIpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICAvLyB1cGRhdGUgKGR0KSB7fVxyXG59XHJcbiJdfQ== -//------QC-SOURCE-SPLIT------ - - (function() { - var nodeEnv = typeof require !== 'undefined' && typeof process !== 'undefined'; - var __module = nodeEnv ? module : {exports:{}}; - var __filename = 'preview-scripts/assets/Script/module/Share/share.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, '7290caA39xMWZc2phTMKovP', 'share'); -// Script/module/Share/share.ts - - - -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,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImFzc2V0c1xcU2NyaXB0XFxtb2R1bGVcXFNoYXJlXFxzaGFyZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwiZmlsZSI6IiIsInNvdXJjZVJvb3QiOiIvIiwic291cmNlc0NvbnRlbnQiOlsiIl19 -//------QC-SOURCE-SPLIT------ - - (function() { - var nodeEnv = typeof require !== 'undefined' && typeof process !== 'undefined'; - var __module = nodeEnv ? module : {exports:{}}; - var __filename = 'preview-scripts/assets/Script/GameManager.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, 'df248lSLllOZpCHwGqQ5Ye3', 'GameManager'); -// Script/GameManager.ts - -"use strict"; -// Learn TypeScript: -// - https://docs.cocos.com/creator/manual/en/scripting/typescript.html -// Learn Attribute: -// - https://docs.cocos.com/creator/manual/en/scripting/reference/attributes.html -// Learn life-cycle callbacks: -// - https://docs.cocos.com/creator/manual/en/scripting/life-cycle-callbacks.html -var __extends = (this && this.__extends) || (function () { - var extendStatics = function (d, b) { - extendStatics = Object.setPrototypeOf || - ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) || - function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; }; - return extendStatics(d, b); - }; - return function (d, b) { - extendStatics(d, b); - function __() { this.constructor = d; } - d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); - }; -})(); -var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) { - var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; - if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc); - else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; - return c > 3 && r && Object.defineProperty(target, key, r), r; -}; -Object.defineProperty(exports, "__esModule", { value: true }); -var MiniGameSdk_1 = require("./Sdk/MiniGameSdk"); -var _a = cc._decorator, ccclass = _a.ccclass, property = _a.property; -var GameManager = /** @class */ (function (_super) { - __extends(GameManager, _super); - function GameManager() { - var _this = _super !== null && _super.apply(this, arguments) || this; - _this.label = null; - _this.text = 'hello'; - _this.Block_Array = []; - _this.Wall_Prefab = []; - _this.Block_Color = []; - // @property({type: [cc.ParticleSystem], tooltip:"粒子数组"}) - // particleEffects : Array = []; - _this.load1 = false; - _this.load2 = false; - _this.load3 = false; - _this.load4 = false; - _this.load5 = false; - return _this; - } - GameManager_1 = GameManager; - // LIFE-CYCLE CALLBACKS: - GameManager.prototype.onLoad = function () { - var _this = this; - window.initMgr(); - this.timeNumber = 3; - this.startTimeCutDown(); - cc.fx.GameConfig.init(true); - cc.fx.GameConfig.GM_INFO.gameState = false; - this.readMusicConfig(); - console.log("音乐开关", cc.fx.GameConfig.GM_INFO.musicOpen); - cc.fx.AudioManager._instance.playMusicGame(); - this.load1 = this.load2 = this.load3 = this.load4 = this.load5 = false; - setTimeout(function () { - _this.readUserData(); - }, 200); - if (GameManager_1._instance == null) { - GameManager_1._instance = this; - cc.game.addPersistRootNode(this.node); - } - else { - return; - } - var path = 'prefab/block'; - var path2 = 'prefab/wall'; - cc.resources.loadDir(path, cc.Prefab, function (err, assets) { - if (err) { - console.error('动态加载 Prefab 失败:', err); - cc.director.loadScene("LoadScene"); - return; - } - // 将加载的 Prefab 赋值给 Block_Array - _this.Block_Array = assets; - console.log('方块加载成功,共加载了', _this.Block_Array.length, '个方块'); - _this.setSort(); - _this.load1 = true; - }); - cc.resources.loadDir(path2, cc.Prefab, function (err, assets) { - if (err) { - console.error('动态加载 Prefab 失败:', err); - cc.director.loadScene("LoadScene"); - return; - } - // 将加载的 Prefab 赋值给 Block_Array - _this.Wall_Prefab = assets; - _this.load2 = true; - console.log('墙加载成功,共加载了', _this.Wall_Prefab.length, '个墙'); - _this.setWallPrefabSort(); - }); - // debugger; - // setTimeout(() => { - // cc.director.preloadScene("HomeScene", (err) => { - // if (err) { - // console.error('预加载 HomeScene 场景失败:', err); - // return; - // } - // }); - // }, 1000); - // 检测微信小游戏切到后台 - if (cc.sys.platform === cc.sys.WECHAT_GAME) { - //@ts-ignore - wx.onHide(function () { - _this.onHide(); - }); - // 检测微信小游戏回到前台 - //@ts-ignore - wx.onShow(function () { - _this.onShow(); - }); - } - }; - GameManager.prototype.onHide = function () { - cc.audioEngine.stopMusic(); - cc.game.pause(); - }; - GameManager.prototype.onShow = function () { - cc.audioEngine.resumeMusic(); - cc.game.resume(); - }; - GameManager.prototype.loadParticleEffects = function () { - }; - GameManager.prototype.setWallPrefabSort = function () { - var order = ['down', 'downLeft', 'downRight', 'left', 'right', 'up', 'upLeft', 'upRight']; - this.Wall_Prefab.sort(function (a, b) { - var indexA = order.indexOf(a.name); - var indexB = order.indexOf(b.name); - if (indexA === -1) - return 1; - if (indexB === -1) - return -1; - return indexA - indexB; - }); - }; - GameManager.prototype.setParticleSort = function () { - var order = ['top', 'bot', 'rig', 'lef']; - this.particleEffects.sort(function (a, b) { - var indexA = order.indexOf(a.name.substr(0, 3)); - var indexB = order.indexOf(b.name.substr(0, 3)); - if (indexA === -1) - return 1; - if (indexB === -1) - return -1; - return indexA - indexB; - }); - }; - GameManager.prototype.setSort = function () { - this.Block_Array.sort(function (a, b) { - var _a, _b; - // 从名称中提取数字部分 - var numberA = parseInt(((_a = a.name.match(/\d+/)) === null || _a === void 0 ? void 0 : _a[0]) || '0', 10); - var numberB = parseInt(((_b = b.name.match(/\d+/)) === null || _b === void 0 ? void 0 : _b[0]) || '0', 10); - return numberA - numberB; - }); - }; - GameManager.prototype.start = function () { - }; - GameManager.prototype.startGame = function () { - console.log("进入场景之前_____________", cc.fx.GameConfig.GM_INFO.first); - cc.director.loadScene("HomeScene"); - }; - GameManager.prototype.returnHome = function () { - cc.tween(this.node.getChildByName("Game")) - .to(0.5, { opacity: 100 }) - .call(function () { - // 预加载成功后加载场景 - cc.director.loadScene("HomeScene", function (err) { - if (err) { - console.error('加载 HomeScene 场景失败:', err); - } - else { - cc.director.loadScene("HomeScene"); - } - }); - }) - .start(); - cc.tween(this.node.getChildByName("mask")) - .to(0.5, { opacity: 255 }) - .start(); - // cc.loader.releaseAll(); - // 预加载 HomeScene 场景 - }; - GameManager.prototype.readUserData = function (retryCount) { - var _this = this; - if (retryCount === void 0) { retryCount = 0; } - //@ts-ignore - if (typeof wx !== 'undefined' && wx !== null) { - var levelInfo = cc.fx.StorageMessage.getStorage("level"); - //旧的读取数据设置数据方法,以强联网为主 - if (levelInfo == undefined || levelInfo == "" || levelInfo == null) { - this.oldReadData(retryCount); - } - //新的读取数据设置方法,以本地为主 - else { - this.newReadData(); - } - console.log("即将读取体力值"); - cc.fx.GameTool.getHealth(function (data) { - console.log("体力值完成进入游戏"); - _this.load5 = true; - }); - } - else { - this.load3 = true; - this.load4 = true; - this.load5 = true; - cc.fx.GameTool.getHealth(null); - } - // 存储用户数据 - }; - GameManager.prototype.readMusicConfig = function () { - var audioInfo = cc.fx.StorageMessage.getStorage("music"); - if (audioInfo == undefined || audioInfo == "" || audioInfo == null) { - audioInfo = { - "musicOpen": true, - "effectOpen": true, - "vibrateOpen": true, - }; - cc.fx.StorageMessage.setStorage("music", audioInfo); - } - else { - cc.fx.GameConfig.GM_INFO.musicOpen = audioInfo.musicOpen; - cc.fx.GameConfig.GM_INFO.effectOpen = audioInfo.effectOpen; - cc.fx.GameConfig.GM_INFO.vibrateOpen = audioInfo.vibrateOpen; - } - }; - //新用户,有本地缓存读取配置 - GameManager.prototype.newReadData = function () { - var _this = this; - console.log("读取新信息"); - var openid = cc.fx.StorageMessage.getStorage("openid"); - if (openid == null || openid == "" || openid == undefined) { - console.log("没有openid"); - //@ts-ignore - wx.cloud.callFunction({ - name: 'userData', - data: { - action: 'read' - }, - success: function (res) { - console.log('读取用户数据成功', res.result); - if (res.result.code == 404 && res.result.message == "未找到用户数据") { - } - else if (res.result.code == 200) { - if (res.result.data) { - cc.fx.GameConfig.GM_INFO.openid = res.result.openid; - cc.fx.GameConfig.GM_INFO.username = res.result.data.username; - cc.fx.GameConfig.GM_INFO.useravatar = res.result.data.useravatar; - var register_time = res.result.data.register_time; - MiniGameSdk_1.MiniGameSdk.API.shushu_userSet(register_time); - cc.fx.StorageMessage.setStorage("openid", cc.fx.GameConfig.GM_INFO.openid); - } - } - }, - fail: function (err) { - console.error('读取用户数据失败', err); - } - }); - } - else { - if (openid) - cc.fx.GameConfig.GM_INFO.openid = openid; - } - //等级信息 - cc.fx.GameTool.getUserLevel(function (data) { - var timestamp = Date.now(); - var levelInfo = cc.fx.StorageMessage.getStorage("level"); - if (data.result.code == 404 && data.result.message == "未找到关卡数据") { - // console.log("没有等级信息,从用户接口拿到数据"); - if (levelInfo.level) { - cc.fx.GameConfig.GM_INFO.level = levelInfo.level; - } - _this.load4 = true; - cc.fx.GameTool.setUserLevel(function (data) { - }); - } - else if (data.result.code == 200) { - // console.log("有等级信息,从关卡接口拿到数据",data.result.data); - //游戏前端存储 新于服务器端,以游戏前端信息为主,放服务器存储 - var temp = data.result.timestamp - levelInfo.timestamp; - console.log("等级时间差:", temp); - if ((data.result.timestamp - levelInfo.timestamp) < 10000) { - if (levelInfo.level) { - console.log("以游戏前端等级为准", data.result.data); - cc.fx.GameConfig.GM_INFO.level = levelInfo.level; - // console.log("等级为:",cc.fx.GameConfig.GM_INFO.level); - cc.fx.GameTool.setUserLevel(function (data) { - }); - } - } - //服务器端存储时间新于游戏端,以服务器端为主,往前端存储 - else { - console.log("以服务器等级为准", data.result.data); - cc.fx.GameConfig.GM_INFO.level = data.result.data; - levelInfo.level = cc.fx.GameConfig.GM_INFO.level; - levelInfo.timestamp = timestamp; - // console.log("1111111存储关卡数据:",cc.fx.GameConfig.GM_INFO.level); - cc.fx.StorageMessage.setStorage("level", levelInfo); - } - _this.load4 = true; - } - }); - //金币信息 - cc.fx.GameTool.getUserCoin(function (data) { - var timestamp = Date.now(); - var coinInfo = cc.fx.StorageMessage.getStorage("coin"); - if (data.result.code == 404 && data.result.message == "未找到金币数据") { - if (coinInfo.coin) - cc.fx.GameConfig.GM_INFO.coin = coinInfo.coin; - console.log("没有金币信息,从用户接口拿到数据", cc.fx.GameConfig.GM_INFO.coin); - _this.load3 = true; - cc.fx.GameTool.setUserCoin(function (data) { - }); - } - else if (data.result.code == 200) { - // console.log("有金币信息,从金币接口拿到数据",data.result.data); - //游戏前端存储 新于服务器端,以游戏前端信息为主,放服务器存储 - var temp = data.result.timestamp - coinInfo.timestamp; - console.log("金币时间差:", temp); - if ((data.result.timestamp - coinInfo.timestamp) < 10000) { - console.log("以前端金幣为准:", coinInfo); - if (coinInfo.coin) - cc.fx.GameConfig.GM_INFO.coin = coinInfo.coin; - else { - cc.fx.GameConfig.GM_INFO.coin = data.result.data; - coinInfo.coin = cc.fx.GameConfig.GM_INFO.coin; - coinInfo.timestamp = timestamp; - console.log("11111111111"); - cc.fx.StorageMessage.setStorage("coin", coinInfo); - } - console.log("改变后金币:", cc.fx.GameConfig.GM_INFO.coin); - cc.fx.GameTool.setUserCoin(function (data) { - }); - } - //服务器端存储时间新于游戏端,以服务器端为主,往前端存储 - else { - console.log("以服务器金幣为准:", data.result.data); - cc.fx.GameConfig.GM_INFO.coin = data.result.data; - coinInfo.coin = cc.fx.GameConfig.GM_INFO.coin; - coinInfo.timestamp = timestamp; - console.log("2222222222"); - cc.fx.StorageMessage.setStorage("coin", coinInfo); - } - _this.load3 = true; - } - }); - //道具信息 - cc.fx.GameTool.getUserProp(function (data) { - var timestamp = Date.now(); - var propInfo = cc.fx.StorageMessage.getStorage("prop"); - if (data.result.code == 404 && data.result.message == "未找到道具数据") { - console.log("没有道具信息,从用户接口拿到数据", propInfo); - if (propInfo.freezeAmount == undefined || propInfo.hammerAmount == undefined || propInfo.magicAmount == undefined) { - console.log("2222222道具数据异常"); - cc.fx.GameConfig.GM_INFO.freezeAmount = 0; - cc.fx.GameConfig.GM_INFO.hammerAmount = 0; - cc.fx.GameConfig.GM_INFO.magicAmoun = 0; - var propInfoNew = { - "freezeAmount": cc.fx.GameConfig.GM_INFO.freezeAmount, - "hammerAmount": cc.fx.GameConfig.GM_INFO.hammerAmount, - "magicAmount": cc.fx.GameConfig.GM_INFO.magicAmoun, - "timestamp": timestamp - }; - console.log("1111111上传道具信息:", propInfoNew); - cc.fx.StorageMessage.setStorage("prop", propInfoNew); - } - else { - cc.fx.GameConfig.GM_INFO.freezeAmount = data.result.data.freeze; - cc.fx.GameConfig.GM_INFO.hammerAmount = data.result.data.hammer; - cc.fx.GameConfig.GM_INFO.magicAmount = data.result.data.magic_wand; - } - cc.fx.GameConfig.GM_INFO.freezeAmount = propInfo.freezeAmount; - cc.fx.GameConfig.GM_INFO.hammerAmount = propInfo.hammerAmount; - cc.fx.GameConfig.GM_INFO.magicAmount = propInfo.magicAmount; - cc.fx.GameTool.setUserProp(0, 0, function (data) { - }); - } - else if (data.result.code == 200) { - // console.log("本地时间戳",propInfo.timestamp,"服务器时间戳",data.result.timestamp); - if ((data.result.timestamp - propInfo.timestamp) < 10000) { - console.log("以前端道具为主:", propInfo); - if (propInfo.freezeAmount == undefined || propInfo.hammerAmount == undefined || propInfo.magicAmount == undefined) { - console.log("111111道具数据异常", data.result.data); - cc.fx.GameConfig.GM_INFO.freezeAmount = data.result.data.freeze; - cc.fx.GameConfig.GM_INFO.hammerAmount = data.result.data.hammer; - cc.fx.GameConfig.GM_INFO.magicAmount = data.result.data.magic_wand; - var propInfoNew = { - "freezeAmount": cc.fx.GameConfig.GM_INFO.freezeAmount, - "hammerAmount": cc.fx.GameConfig.GM_INFO.hammerAmount, - "magicAmount": cc.fx.GameConfig.GM_INFO.magicAmount, - "timestamp": timestamp - }; - console.log("333333上传道具信息:", propInfoNew); - cc.fx.StorageMessage.setStorage("prop", propInfoNew); - } - else { - console.log("道具数据正常"); - cc.fx.GameConfig.GM_INFO.freezeAmount = propInfo.freezeAmount; - cc.fx.GameConfig.GM_INFO.hammerAmount = propInfo.hammerAmount; - cc.fx.GameConfig.GM_INFO.magicAmount = propInfo.magicAmount; - cc.fx.GameTool.setUserProp(0, 0, function (data) { - }); - } - } - else { - cc.fx.GameConfig.GM_INFO.freezeAmount = data.result.data.freeze; - cc.fx.GameConfig.GM_INFO.hammerAmount = data.result.data.hammer; - cc.fx.GameConfig.GM_INFO.magicAmount = data.result.data.magic_wand; - var propInfoNew = { - "freezeAmount": cc.fx.GameConfig.GM_INFO.freezeAmount, - "hammerAmount": cc.fx.GameConfig.GM_INFO.hammerAmount, - "magicAmount": cc.fx.GameConfig.GM_INFO.magicAmount, - "timestamp": timestamp - }; - console.log("22222222上传道具信息:", propInfoNew, data.result); - cc.fx.StorageMessage.setStorage("prop", propInfoNew); - } - } - }); - }; - //旧用户,无本地缓存读取配置 - GameManager.prototype.oldReadData = function (retryCount) { - var _this = this; - console.log("读取旧信息"); - var MAX_RETRIES = 15; - var timestamp = Date.now(); - // 读取用户数据 - //@ts-ignore - wx.cloud.callFunction({ - name: 'userData', - data: { - action: 'read' - }, - success: function (res) { - console.log('读取用户数据成功', res.result); - if (res.result.code == 404 && res.result.message == "未找到用户数据") { - if (res.result.openid) { - cc.fx.GameConfig.GM_INFO.openid = res.result.openid; - } - cc.fx.GameConfig.GM_INFO.first = true; - _this.load3 = true; - _this.load4 = true; - var levelInfo = { "level": 0, "timestamp": timestamp }; - cc.fx.StorageMessage.setStorage("level", levelInfo); - var coinInfo = { "coin": 0, "timestamp": timestamp }; - console.log("33333333333"); - cc.fx.StorageMessage.setStorage("coin", coinInfo); - var propInfo = { - "freezeAmount": 0, - "hammerAmount": 0, - "magicAmount": 0, - "timestamp": timestamp, - }; - cc.fx.StorageMessage.setStorage("prop", propInfo); - cc.fx.GameTool.setUserInfo(function (data) { - if (data.result.code == 200) { - console.log("上传用户信息成功", data); - //@ts-ignore - wx.cloud.callFunction({ - name: 'userData', - data: { - action: 'read' - }, - success: function (res) { - console.log("上传后,读取用户信息,为上报注册时间"); - if (res.result.code == 200) { - var time = res.result.data.register_time; - MiniGameSdk_1.MiniGameSdk.API.shushu_userSet(time); - } - } - }); - } - }); - console.log("服务器也没有金币信息", cc.fx.GameConfig.GM_INFO.coin); - cc.fx.GameTool.setUserCoin(cc.fx.GameConfig.GM_INFO.coin, function (data) { - }); - cc.fx.GameTool.setUserLevel(function (data) { - }); - setTimeout(function () { - cc.fx.GameConfig.GM_INFO.freezeAmount = 0; - cc.fx.GameConfig.GM_INFO.hammerAmount = 0; - cc.fx.GameConfig.GM_INFO.magicAmount = 0; - cc.fx.GameTool.setUserProp(0, 0, function (data) { - if (data.result.code == 200) { - console.log("上传道具信息成功", data); - } - else { - MiniGameSdk_1.MiniGameSdk.API.showToast("网络异常,正在努力加载"); - setTimeout(function () { - _this.oldReadData(0); - }, 1000); - } - }); - }, 0); - } - else if (res.result.code == 200) { - if (res.result.data) { - cc.fx.GameConfig.GM_INFO.openid = res.result.openid; - cc.fx.GameConfig.GM_INFO.level = res.result.data.level; - cc.fx.GameConfig.GM_INFO.coin = res.result.data.coinAmount; - cc.fx.GameConfig.GM_INFO.freezeAmount = res.result.data.freezeAmount; - cc.fx.GameConfig.GM_INFO.hammerAmount = res.result.data.hammerAmount; - cc.fx.GameConfig.GM_INFO.magicAmount = res.result.data.magicAmount; - cc.fx.GameConfig.GM_INFO.username = res.result.data.username; - cc.fx.GameConfig.GM_INFO.useravatar = res.result.data.useravatar; - cc.fx.StorageMessage.setStorage("openid", cc.fx.GameConfig.GM_INFO.openid); - var register_time = res.result.data.register_time; - MiniGameSdk_1.MiniGameSdk.API.shushu_userSet(register_time); - } - setTimeout(function () { - cc.fx.GameTool.getUserCoin(function (data) { - if (data.result.code == 404 && data.result.message == "未找到金币数据") { - var coinInfo = { "coin": 0, "timestamp": timestamp }; - cc.fx.GameConfig.GM_INFO.coin = 0; - cc.fx.StorageMessage.setStorage("coin", coinInfo); - console.log("没有金币信息,从用户接口拿到数据", cc.fx.GameConfig.GM_INFO.coin); - cc.fx.GameTool.setUserCoin(function (data) { - // console.log("上传",data); - _this.load3 = true; - }); - } - else if (data.result.code == 200) { - // console.log("有金币信息,从金币接口拿到数据",data.result.data); - cc.fx.GameConfig.GM_INFO.coin = data.result.data; - var coinInfo = { "coin": cc.fx.GameConfig.GM_INFO.coin, "timestamp": timestamp }; - console.log("存储金币信息:", cc.fx.GameConfig.GM_INFO.coin); - console.log("4444444444"); - cc.fx.StorageMessage.setStorage("coin", coinInfo); - _this.load3 = true; - } - }); - }, 500); - cc.fx.GameTool.getUserLevel(function (data) { - if (data.result.code == 404 && data.result.message == "未找到关卡数据") { - console.log("没有等级信息,从用户接口拿到数据"); - var levelInfo = { "level": 0, "timestamp": timestamp }; - // console.log("333333存储关卡数据:",levelInfo); - cc.fx.GameConfig.GM_INFO.level = 0; - cc.fx.StorageMessage.setStorage("level", levelInfo); - cc.fx.GameTool.setUserLevel(function (data) { - console.log("拿到的数据", data); - _this.load4 = true; - }); - } - else if (data.result.code == 200) { - console.log("有等级信息,从关卡接口拿到数据", data.result.data); - cc.fx.GameConfig.GM_INFO.level = data.result.data; - var levelInfo = { "level": cc.fx.GameConfig.GM_INFO.level, "timestamp": timestamp }; - // console.log("444444存储关卡信息:",levelInfo); - cc.fx.StorageMessage.setStorage("level", levelInfo); - _this.load4 = true; - } - }); - setTimeout(function () { - cc.fx.GameTool.getUserProp(function (data) { - if (data.result.code == 404 && data.result.message == "未找到道具数据") { - console.log("没有道具信息,从用户接口拿到数据"); - cc.fx.GameConfig.GM_INFO.freezeAmount = 0; - cc.fx.GameConfig.GM_INFO.hammerAmount = 0; - cc.fx.GameConfig.GM_INFO.magicAmount = 0; - var propInfo = { - "freezeAmount": 0, - "hammerAmount": 0, - "magicAmount": 0, - "timestamp": timestamp, - }; - console.log("上传道具信息:", propInfo); - cc.fx.StorageMessage.setStorage("prop", propInfo); - cc.fx.GameTool.setUserProp(0, 0, function (data) { - }); - } - else if (data.result.code == 200) { - console.log("有道具信息,从道具接口拿到数据", data.result.data); - cc.fx.GameConfig.GM_INFO.freezeAmount = data.result.data.freeze || 0; - cc.fx.GameConfig.GM_INFO.hammerAmount = data.result.data.hammer || 0; - cc.fx.GameConfig.GM_INFO.magicAmount = data.result.data.magic_wand || 0; - var propInfo = { - "freezeAmount": cc.fx.GameConfig.GM_INFO.freezeAmount, - "hammerAmount": cc.fx.GameConfig.GM_INFO.hammerAmount, - "magicAmount": cc.fx.GameConfig.GM_INFO.magicAmount, - "timestamp": timestamp, - }; - console.log("上传道具信息:", propInfo); - cc.fx.StorageMessage.setStorage("prop", propInfo); - } - }); - }, 0); - } - }, - fail: function (err) { - console.error('读取用户数据失败', err); - if (retryCount < MAX_RETRIES) { - console.error("\u8BFB\u53D6\u7528\u6237\u6570\u636E\u5931\u8D25\uFF0C\u7B2C " + (retryCount + 1) + " \u6B21\u91CD\u8BD5\uFF0C\u9519\u8BEF\u4FE1\u606F:", err); - // 延迟 2 秒后重试 - setTimeout(function () { - _this.readUserData(retryCount + 1); - }, 2000); - } - else { - console.error('读取用户数据失败,达到最大重试次数,退出游戏', err); - // 退出游戏 - cc.game.end(); - } - } - }); - }; - GameManager.prototype.setUserData = function () { - cc.fx.GameConfig.GameTool(function (data) { - console.log("上传", data); - }); - }; - GameManager.prototype.startTimeCutDown = function () { - this.scheduleCallback = function () { - if (this.timeNumber <= 0) { - this.stopTimeCutDown(); - } - else { - this.timeNumber -= 1; - } - }.bind(this); - this.schedule(this.scheduleCallback, 1); - }; - GameManager.prototype.stopTimeCutDown = function () { - if (this.scheduleCallback) { - this.unschedule(this.scheduleCallback); - } - }; - GameManager.prototype.update = function (dt) { - if (this.load1 && this.load2 && this.load3 && this.load4 && this.load5 && this.timeNumber <= 0) { - this.load1 = this.load2 = false; - MiniGameSdk_1.MiniGameSdk.API.shushu_Init(); - this.startGame(); - } - }; - var GameManager_1; - GameManager._instance = null; - __decorate([ - property(cc.Label) - ], GameManager.prototype, "label", void 0); - __decorate([ - property - ], GameManager.prototype, "text", void 0); - __decorate([ - property({ type: [cc.Prefab], tooltip: "方块数组" }) - ], GameManager.prototype, "Block_Array", void 0); - __decorate([ - property({ type: [cc.Prefab], tooltip: "墙壁数组" }) - ], GameManager.prototype, "Wall_Prefab", void 0); - __decorate([ - property({ type: [cc.SpriteAtlas], tooltip: "方块颜色" }) - ], GameManager.prototype, "Block_Color", void 0); - GameManager = GameManager_1 = __decorate([ - ccclass - ], GameManager); - return GameManager; -}(cc.Component)); -exports.default = GameManager; - -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,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImFzc2V0c1xcU2NyaXB0XFxHYW1lTWFuYWdlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsb0JBQW9CO0FBQ3BCLHdFQUF3RTtBQUN4RSxtQkFBbUI7QUFDbkIsa0ZBQWtGO0FBQ2xGLDhCQUE4QjtBQUM5QixrRkFBa0Y7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUdsRixpREFBZ0Q7QUFFMUMsSUFBQSxLQUFzQixFQUFFLENBQUMsVUFBVSxFQUFsQyxPQUFPLGFBQUEsRUFBRSxRQUFRLGNBQWlCLENBQUM7QUFHMUM7SUFBeUMsK0JBQVk7SUFBckQ7UUFBQSxxRUF5cEJDO1FBdHBCRyxXQUFLLEdBQWEsSUFBSSxDQUFDO1FBR3ZCLFVBQUksR0FBVyxPQUFPLENBQUM7UUFJdkIsaUJBQVcsR0FBc0IsRUFBRSxDQUFDO1FBR3BDLGlCQUFXLEdBQXNCLEVBQUUsQ0FBQztRQUdwQyxpQkFBVyxHQUEyQixFQUFFLENBQUM7UUFHekMseURBQXlEO1FBQ3pELG1EQUFtRDtRQUVuRCxXQUFLLEdBQVksS0FBSyxDQUFDO1FBQ3ZCLFdBQUssR0FBWSxLQUFLLENBQUM7UUFDdkIsV0FBSyxHQUFZLEtBQUssQ0FBQztRQUN2QixXQUFLLEdBQVksS0FBSyxDQUFDO1FBQ3ZCLFdBQUssR0FBWSxLQUFLLENBQUM7O0lBK25CM0IsQ0FBQztvQkF6cEJvQixXQUFXO0lBK0I1Qix3QkFBd0I7SUFFeEIsNEJBQU0sR0FBTjtRQUFBLGlCQThFQztRQTVFRyxNQUFNLENBQUMsT0FBTyxFQUFFLENBQUM7UUFDakIsSUFBSSxDQUFDLFVBQVUsR0FBRyxDQUFDLENBQUM7UUFDcEIsSUFBSSxDQUFDLGdCQUFnQixFQUFFLENBQUM7UUFDeEIsRUFBRSxDQUFDLEVBQUUsQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQzVCLEVBQUUsQ0FBQyxFQUFFLENBQUMsVUFBVSxDQUFDLE9BQU8sQ0FBQyxTQUFTLEdBQUcsS0FBSyxD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LEdBQUcsS0FBSyxDQUFDO1lBQ2hDLHlCQUFXLENBQUMsR0FBRyxDQUFDLFdBQVcsRUFBRSxDQUFDO1lBQzlCLElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQztTQUNwQjtJQUNMLENBQUM7O0lBanBCTSxxQkFBUyxHQUFpQixJQUFJLENBQUM7SUFKdEM7UUFEQyxRQUFRLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQzs4Q0FDSTtJQUd2QjtRQURDLFFBQVE7NkNBQ2M7SUFJdkI7UUFEQyxRQUFRLENBQUMsRUFBQyxJQUFJLEVBQUUsQ0FBQyxFQUFFLENBQUMsTUFBTSxDQUFDLEVBQUUsT0FBTyxFQUFDLE1BQU0sRUFBQyxDQUFDO29EQUNWO0lBR3BDO1FBREMsUUFBUSxDQUFDLEVBQUMsSUFBSSxFQUFFLENBQUMsRUFBRSxDQUFDLE1BQU0sQ0FBQyxFQUFFLE9BQU8sRUFBQyxNQUFNLEVBQUMsQ0FBQztvREFDVjtJQUdwQztRQURDLFFBQVEsQ0FBQyxFQUFDLElBQUksRUFBRSxDQUFDLEVBQUUsQ0FBQyxXQUFXLENBQUMsRUFBRSxPQUFPLEVBQUMsTUFBTSxFQUFDLENBQUM7b0RBQ1Y7SUFoQnhCLFdBQVc7UUFEL0IsT0FBTztPQUNhLFdBQVcsQ0F5cEIvQjtJQUFELGtCQUFDO0NBenBCRCxBQXlwQkMsQ0F6cEJ3QyxFQUFFLENBQUMsU0FBUyxHQXlwQnBEO2tCQXpwQm9CLFdBQVciLCJmaWxlIjoiIiwic291cmNlUm9vdCI6Ii8iLCJzb3VyY2VzQ29udGVudCI6WyIvLyBMZWFybiBUeXBlU2NyaXB0OlxyXG4vLyAgLSBodHRwczovL2RvY3MuY29jb3MuY29tL2NyZWF0b3IvbWFudWFsL2VuL3NjcmlwdGluZy90eXBlc2NyaXB0Lmh0bWxcclxuLy8gTGVhcm4gQXR0cmlidXRlOlxyXG4vLyAgLSBodHRwczovL2RvY3MuY29jb3MuY29tL2NyZWF0b3IvbWFudWFsL2VuL3NjcmlwdGluZy9yZWZlcmVuY2UvYXR0cmlidXRlcy5odG1sXHJcbi8vIExlYXJuIGxpZmUtY3ljbGUgY2FsbGJhY2tzOlxyXG4vLyAgLSBodHRwczovL2RvY3MuY29jb3MuY29tL2NyZWF0b3IvbWFudWFsL2VuL3NjcmlwdGluZy9saWZlLWN5Y2xlLWNhbGxiYWNrcy5odG1sXHJcblxyXG5pbXBvcnQgeyBNaW5pR2FtZU1hbmFnZXIgfSBmcm9tIFwiLi9TZGsvTWluaUdhbWVNYW5hZ2VyXCI7XHJcbmltcG9ydCB7IE1pbmlHYW1lU2RrIH0gZnJvbSBcIi4vU2RrL01pbmlHYW1lU2RrXCI7XHJcblxyXG5jb25zdCB7Y2NjbGFzcywgcHJvcGVydHl9ID0gY2MuX2RlY29yYXRvcjtcclxuXHJcbkBjY2NsYXNzXHJcbmV4cG9ydCBkZWZhdWx0IGNsYXNzIEdhbWVNYW5hZ2VyIGV4dGVuZHMgY2MuQ29tcG9uZW50IHtcclxuXHJcbiAgICBAcHJvcGVydHkoY2MuTGFiZWwpXHJcbiAgICBsYWJlbDogY2MuTGFiZWwgPSBudWxsO1xyXG5cclxuICAgIEBwcm9wZXJ0eVxyXG4gICAgdGV4dDogc3RyaW5nID0gJ2hlbGxvJztcclxuICAgIHN0YXRpYyBfaW5zdGFuY2UgOiBHYW1lTWFuYWdlciA9IG51bGw7XHJcblxyXG4gICAgQHByb3BlcnR5KHt0eXBlOiBbY2MuUHJlZmFiXSwgdG9vbHRpcDpcIuaWueWdl+aVsOe7hFwifSlcclxuICAgIEJsb2NrX0FycmF5IDogQXJyYXk8Y2MuUHJlZmFiPiA9IFtdO1xyXG5cclxuICAgIEBwcm9wZXJ0eSh7dHlwZTogW2NjLlByZWZhYl0sIHRvb2x0aXA6XCLlopnlo4HmlbDnu4RcIn0pXHJcbiAgICBXYWxsX1ByZWZhYiA6IEFycmF5PGNjLlByZWZhYj4gPSBbXTtcclxuXHJcbiAgICBAcHJvcGVydHkoe3R5cGU6IFtjYy5TcHJpdGVBdGxhc10sIHRvb2x0aXA6XCLmlrnlnZfpopzoibJcIn0pXHJcbiAgICBCbG9ja19Db2xvciA6IEFycmF5PGNjLlNwcml0ZUF0bGFzPiA9IFtdO1xyXG5cclxuICAgIHBhcnRpY2xlRWZmZWN0czogY2MuUGFydGljbGVBc3NldFtdO1xyXG4gICAgLy8gQHByb3BlcnR5KHt0eXBlOiBbY2MuUGFydGljbGVTeXN0ZW1dLCB0b29sdGlwOlwi57KS5a2Q5pWw57uEXCJ9KVxyXG4gICAgLy8gcGFydGljbGVFZmZlY3RzIDogQXJyYXk8Y2MuUGFydGljbGVTeXN0ZW0+ID0gW107XHJcblxyXG4gICAgbG9hZDEgOmJvb2xlYW4gPSBmYWxzZTtcclxuICAgIGxvYWQyIDpib29sZWFuID0gZmFsc2U7XHJcbiAgICBsb2FkMyA6Ym9vbGVhbiA9IGZhbHNlO1xyXG4gICAgbG9hZDQgOmJvb2xlYW4gPSBmYWxzZTtcclxuICAgIGxvYWQ1IDpib29sZWFuID0gZmFsc2U7XHJcbiAgICBzY2hlZHVsZUNhbGxiYWNrOiBhbnk7XHJcbiAgICB0aW1lTnVtYmVyOiBudW1iZXI7XHJcblxyXG4gICAgXHJcbiAgICAvLyBMSUZFLUNZQ0xFIENBTExCQUNLUzpcclxuXHJcbiAgICBvbkxvYWQgKCkge1xyXG5cclxuICAgICAgICB3aW5kb3cuaW5pdE1ncigpO1xyXG4gICAgICAgIHRoaXMudGltZU51bWJlciA9IDM7XHJcbiAgICAgICAgdGhpcy5zdGFydFRpbWVDdXREb3duKCk7XHJcbiAgICAgICAgY2MuZnguR2FtZUNvbmZpZy5pbml0KHRydWUpO1xyXG4gICAgICAgIGNjLmZ4LkdhbWVDb25maWcuR01fSU5GTy5nYW1lU3RhdGUgPSBmYWxzZTtcclxuICAgICAgICB0aGlzLnJlYWRNdXNpY0NvbmZpZygpO1xyXG4gICAgICAgIGNvbnNvbGUubG9nKFwi6Z+z5LmQ5byA5YWzXCIsY2MuZnguR2FtZUNvbmZpZy5HTV9JTkZPLm11c2ljT3Blbik7XHJcbiAgICAgICAgY2MuZnguQXVkaW9NYW5hZ2VyLl9pbnN0YW5jZS5wbGF5TXVzaWNHYW1lKCk7XHJcblxyXG4gICAgICAgIHRoaXMubG9hZDEgPSB0aGlzLmxvYWQyID0gdGhpcy5sb2FkMyA9IHRoaXMubG9hZDQgPSB0aGlzLmxvYWQ1ID1mYWxzZTtcclxuICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgICAgICAgdGhpcy5yZWFkVXNlckRhdGEoKTtcclxuICAgICAgICB9LCAyMDApO1xyXG4gXHJcblxyXG4gICAgICAgIGlmIChHYW1lTWFuYWdlci5faW5zdGFuY2UgPT0gbnVsbCkge1xyXG4gICAgICAgICAgICBHYW1lTWFuYWdlci5faW5zdGFuY2UgPSB0aGlzO1xyXG4gICAgICAgICAgICBjYy5nYW1lLmFkZFBlcnNpc3RSb290Tm9kZSh0aGlzLm5vZGUpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgY29uc3QgcGF0aCA9ICdwcmVmYWIvYmxvY2snO1xyXG4gICAgICAgIGNvbnN0IHBhdGgyID0gJ3ByZWZhYi93YWxsJztcclxuICAgICAgICBjYy5yZXNvdXJjZXMubG9hZERpcihwYXRoLCBjYy5QcmVmYWIsIChlcnIsIGFzc2V0czogY2MuUHJlZmFiW10pID0+IHtcclxuICAgICAgICAgICAgaWYgKGVycikge1xyXG4gICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoJ+WKqOaAgeWKoOi9vSBQcmVmYWIg5aSx6LSlOicsIGVycik7XHJcbiAgICAgICAgICAgICAgICBjYy5kaXJlY3Rvci5sb2FkU2NlbmUoXCJMb2FkU2NlbmVcIik7XHJcbiAgICAgICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgLy8g5bCG5Yqg6L2955qEIFByZWZhYiDotYvlgLznu5kgQmxvY2tfQXJyYXlcclxuICAgICAgICAgICAgdGhpcy5CbG9ja19BcnJheSA9IGFzc2V0cztcclxuICAgICAgICAgICAgY29uc29sZS5sb2coJ+aWueWdl+WKoOi9veaIkOWKn++8jOWFseWKoOi9veS6hicsIHRoaXMuQmxvY2tfQXJyYXkubGVuZ3RoLCAn5Liq5pa55Z2XJyk7XHJcbiAgICAgICAgICAgIHRoaXMuc2V0U29ydCgpO1xyXG4gICAgICAgICAgICB0aGlzLmxvYWQxID0gdHJ1ZTtcclxuICAgICAgICB9KTtcclxuXHJcbiAgICAgICAgY2MucmVzb3VyY2VzLmxvYWREaXIocGF0aDIsIGNjLlByZWZhYiwgKGVyciwgYXNzZXRzOiBjYy5QcmVmYWJbXSkgPT4ge1xyXG4gICAgICAgICAgICBpZiAoZXJyKSB7XHJcbiAgICAgICAgICAgICAgICBjb25zb2xlLmVycm9yKCfliqjmgIHliqDovb0gUHJlZmFiIOWksei0pTonLCBlcnIpO1xyXG4gICAgICAgICAgICAgICAgY2MuZGlyZWN0b3IubG9hZFNjZW5lKFwiTG9hZFNjZW5lXCIpO1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIC8vIOWwhuWKoOi9veeahCBQcmVmYWIg6LWL5YC857uZIEJsb2NrX0FycmF5XHJcbiAgICAgICAgICAgIHRoaXMuV2FsbF9QcmVmYWIgPSBhc3NldHM7XHJcbiAgICAgICAgICAgIHRoaXMubG9hZDIgPSB0cnVlO1xyXG4gICAgICAgICAgICBjb25zb2xlLmxvZygn5aKZ5Yqg6L295oiQ5Yqf77yM5YWx5Yqg6L295LqGJywgdGhpcy5XYWxsX1ByZWZhYi5sZW5ndGgsICfkuKrlopknKTtcclxuICAgICAgICAgICAgdGhpcy5zZXRXYWxsUHJlZmFiU29ydCgpO1xyXG4gICAgICAgIH0pO1xyXG5cclxuICAgICAgICAvLyBkZWJ1Z2dlcjtcclxuXHJcbiAgICAgICAgLy8gc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgICAgLy8gICAgIGNjLmRpcmVjdG9yLnByZWxvYWRTY2VuZShcIkhvbWVTY2VuZVwiLCAoZXJyKSA9PiB7XHJcbiAgICAgICAgLy8gICAgICAgICBpZiAoZXJyKSB7XHJcbiAgICAgICAgLy8gICAgICAgICAgICAgY29uc29sZS5lcnJvcign6aKE5Yqg6L29IEhvbWVTY2VuZSDlnLrmma/lpLHotKU6JywgZXJyKTtcclxuICAgICAgICAvLyAgICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgLy8gICAgICAgICB9XHJcbiAgICAgICAgLy8gICAgIH0pO1xyXG4gICAgICAgIC8vIH0sIDEwMDApO1xyXG5cclxuICAgICAgICAgICAgICAgIC8vIOajgOa1i+W+ruS/oeWwj+a4uOaIj+WIh+WIsOWQjuWPsFxyXG4gICAgICAgIGlmIChjYy5zeXMucGxhdGZvcm0gPT09IGNjLnN5cy5XRUNIQVRfR0FNRSkge1xyXG4gICAgICAgICAgICAvL0B0cy1pZ25vcmVcclxuICAgICAgICAgICAgd3gub25IaWRlKCgpID0+IHtcclxuICAgICAgICAgICAgICAgIHRoaXMub25IaWRlKCk7XHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICAvLyDmo4DmtYvlvq7kv6HlsI/muLjmiI/lm57liLDliY3lj7BcclxuICAgICAgICAgICAgLy9AdHMtaWdub3JlXHJcbiAgICAgICAgICAgIHd4Lm9uU2hvdygoKSA9PiB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLm9uU2hvdygpO1xyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICB9XHJcblxyXG4gICAgfVxyXG5cclxuICAgIG9uSGlkZSAoKSB7XHJcbiAgICAgICAgY2MuYXVkaW9FbmdpbmUuc3RvcE11c2ljKCk7XHJcbiAgICAgICAgY2MuZ2FtZS5wYXVzZSgpO1xyXG4gICAgfVxyXG5cclxuICAgIG9uU2hvdyAoKSB7XHJcbiAgICAgICAgY2MuYXVkaW9FbmdpbmUucmVzdW1lTXVzaWMoKTtcclxuICAgICAgICBjYy5nYW1lLnJlc3VtZSgpO1xyXG4gICAgfVxyXG5cclxuICAgIGxvYWRQYXJ0aWNsZUVmZmVjdHMoKSB7XHJcbiAgICB9XHJcblxyXG5cclxuICAgIFxyXG5cclxuICAgIHNldFdhbGxQcmVmYWJTb3J0KCkge1xyXG4gICAgICAgIGNvbnN0IG9yZGVyID0gWydkb3duJywgJ2Rvd25MZWZ0JywgJ2Rvd25SaWdodCcsICdsZWZ0JywncmlnaHQnLCd1cCcsJ3VwTGVmdCcsJ3VwUmlnaHQnXTtcclxuICAgICAgICB0aGlzLldhbGxfUHJlZmFiLnNvcnQoKGEsIGIpID0+IHtcclxuICAgICAgICAgICAgY29uc3QgaW5kZXhBID0gb3JkZXIuaW5kZXhPZihhLm5hbWUpO1xyXG4gICAgICAgICAgICBjb25zdCBpbmRleEIgPSBvcmRlci5pbmRleE9mKGIubmFtZSk7XHJcbiAgICAgICAgICAgIGlmIChpbmRleEEgPT09IC0xKSByZXR1cm4gMTtcclxuICAgICAgICAgICAgaWYgKGluZGV4QiA9PT0gLTEpIHJldHVybiAtMTtcclxuICAgICAgICAgICAgcmV0dXJuIGluZGV4QSAtIGluZGV4QjtcclxuICAgICAgICB9KTtcclxuICAgICAgICBcclxuICAgIH1cclxuXHJcbiAgICBzZXRQYXJ0aWNsZVNvcnQoKSB7XHJcbiAgICAgICAgY29uc3Qgb3JkZXIgPSBbJ3RvcCcsICdib3QnLCAncmlnJywgJ2xlZiddO1xyXG4gICAgICAgIHRoaXMucGFydGljbGVFZmZlY3RzLnNvcnQoKGEsIGIpID0+IHtcclxuICAgICAgICAgICAgY29uc3QgaW5kZXhBID0gb3JkZXIuaW5kZXhPZihhLm5hbWUuc3Vic3RyKDAsMykpO1xyXG4gICAgICAgICAgICBjb25zdCBpbmRleEIgPSBvcmRlci5pbmRleE9mKGIubmFtZS5zdWJzdHIoMCwzKSk7XHJcbiAgICAgICAgICAgIGlmIChpbmRleEEgPT09IC0xKSByZXR1cm4gMTtcclxuICAgICAgICAgICAgaWYgKGluZGV4QiA9PT0gLTEpIHJldHVybiAtMTtcclxuICAgICAgICAgICAgcmV0dXJuIGluZGV4QSAtIGluZGV4QjtcclxuICAgICAgICB9KTtcclxuICAgIH1cclxuXHJcbiAgICBzZXRTb3J0KCl7XHJcbiAgICAgICAgdGhpcy5CbG9ja19BcnJheS5zb3J0KChhLCBiKSA9PiB7XHJcbiAgICAgICAgICAgIC8vIOS7juWQjeensOS4reaPkOWPluaVsOWtl+mDqOWIhlxyXG4gICAgICAgICAgICBjb25zdCBudW1iZXJBID0gcGFyc2VJbnQoYS5uYW1lLm1hdGNoKC9cXGQrLyk/LlswXSB8fCAnMCcsIDEwKTtcclxuICAgICAgICAgICAgY29uc3QgbnVtYmVyQiA9IHBhcnNlSW50KGIubmFtZS5tYXRjaCgvXFxkKy8pPy5bMF0gfHwgJzAnLCAxMCk7XHJcbiAgICAgICAgICAgIHJldHVybiBudW1iZXJBIC0gbnVtYmVyQjtcclxuICAgICAgICB9KTtcclxuICAgIH1cclxuXHJcbiAgICBzdGFydCAoKSB7XHJcblxyXG4gICAgfVxyXG5cclxuICAgIHN0YXJ0R2FtZSgpe1xyXG4gICAgICAgIGNvbnNvbGUubG9nKFwi6L+b5YWl5Zy65pmv5LmL5YmNX19fX19fX19fX19fX1wiLGNjLmZ4LkdhbWVDb25maWcuR01fSU5GTy5maXJzdCk7XHJcbiAgICAgICAgY2MuZGlyZWN0b3IubG9hZFNjZW5lKFwiSG9tZVNjZW5lXCIpO1xyXG4gICAgfVxyXG5cclxuICAgIHJldHVybkhvbWUoKXtcclxuICAgICAgICBjYy50d2Vlbih0aGlzLm5vZGUuZ2V0Q2hpbGRCeU5hbWUoXCJHYW1lXCIpKVxyXG4gICAgICAgICAgICAudG8oMC41LCB7b3BhY2l0eTogMTAwfSlcclxuICAgICAgICAgICAgLmNhbGwoKCkgPT4ge1xyXG4gICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgLy8g6aKE5Yqg6L295oiQ5Yqf5ZCO5Yqg6L295Zy65pmvXHJcbiAgICAgICAgICAgICAgICBjYy5kaXJlY3Rvci5sb2FkU2NlbmUoXCJIb21lU2NlbmVcIiwgKGVycikgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgIGlmIChlcnIpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgY29uc29sZS5lcnJvcign5Yqg6L29IEhvbWVTY2VuZSDlnLrmma/lpLHotKU6JywgZXJyKTtcclxuICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBjYy5kaXJlY3Rvci5sb2FkU2NlbmUoXCJIb21lU2NlbmVcIik7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgIH0pXHJcbiAgICAgICAgICAgIC5zdGFydCgpO1xyXG5cclxuICAgICAgICAgICAgY2MudHdlZW4odGhpcy5ub2RlLmdldENoaWxkQnlOYW1lKFwibWFza1wiKSlcclxuICAgICAgICAgICAgLnRvKDAuNSx7b3BhY2l0eTogMjU1fSlcclxuICAgICAgICAgICAgLnN0YXJ0KCk7XHJcblxyXG4gICAgICAgIC8vIGNjLmxvYWRlci5yZWxlYXNlQWxsKCk7XHJcbiAgICAgICAgLy8g6aKE5Yqg6L29IEhvbWVTY2VuZSDlnLrmma9cclxuXHJcbiAgIFxyXG4gICAgfVxyXG5cclxuXHJcbiAgICByZWFkVXNlckRhdGEocmV0cnlDb3VudCA9IDApe1xyXG4gICAgICAgIC8vQHRzLWlnbm9yZVxyXG4gICAgICAgICBpZiAodHlwZW9mIHd4ICE9PSAndW5kZWZpbmVkJyAmJiB3eCAhPT0gbnVsbCkgeyBcclxuICAgICAgICAgICAgICAgIGxldCBsZXZlbEluZm8gPSBjYy5meC5TdG9yYWdlTWVzc2FnZS5nZXRTdG9yYWdlKFwibGV2ZWxcIik7XHJcbiAgICAgICAgICAgICAgICAvL+aXp+eahOivu+WPluaVsOaNruiuvue9ruaVsOaNruaWueazlSzku6XlvLrogZTnvZHkuLrkuLtcclxuICAgICAgICAgICAgICAgIGlmKGxldmVsSW5mbyA9PSB1bmRlZmluZWQgfHwgbGV2ZWxJbmZvID09IFwiXCIgfHwgbGV2ZWxJbmZvID09IG51bGwpe1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMub2xkUmVhZERhdGEocmV0cnlDb3VudCk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAvL+aWsOeahOivu+WPluaVsOaNruiuvue9ruaWueazle+8jOS7peacrOWcsOS4uuS4u1xyXG4gICAgICAgICAgICAgICAgZWxzZXtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLm5ld1JlYWREYXRhKCk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBjb25zb2xlLmxvZyhcIuWNs+Wwhuivu+WPluS9k+WKm+WAvFwiKTtcclxuICAgICAgICAgICAgICAgIGNjLmZ4LkdhbWVUb29sLmdldEhlYWx0aCgoZGF0YSk9PntcclxuICAgICAgICAgICAgICAgICAgICBjb25zb2xlLmxvZyhcIuS9k+WKm+WAvOWujOaIkOi/m+WFpea4uOaIj1wiKTtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLmxvYWQ1ID0gdHJ1ZTtcclxuICAgICAgICAgICAgICAgIH0pO1xyXG5cclxuICAgICAgICAgfVxyXG4gICAgICAgICBlbHNle1xyXG4gICAgICAgICAgICB0aGlzLmxvYWQzID0gdHJ1ZTtcclxuICAgICAgICAgICAgdGhpcy5sb2FkNCA9IHRydWU7XHJcbiAgICAgICAgICAgIHRoaXMubG9hZDUgPSB0cnVlO1xyXG4gICAgICAgICAgICBjYy5meC5HYW1lVG9vbC5nZXRIZWFsdGgobnVsbCk7XHJcbiAgICAgICAgIH1cclxuICAgICAgICAvLyDlrZjlgqjnlKjmiLfmlbDmja5cclxuICAgIH1cclxuXHJcbiAgICByZWFkTXVzaWNDb25maWcoKXtcclxuICAgICAgICBsZXQgYXVkaW9JbmZvID0gY2MuZnguU3RvcmFnZU1lc3NhZ2UuZ2V0U3RvcmFnZShcIm11c2ljXCIpO1xyXG4gICAgICAgIGlmKGF1ZGlvSW5mbyA9PSB1bmRlZmluZWQgfHwgYXVkaW9JbmZvID09IFwiXCIgfHwgYXVkaW9JbmZvID09IG51bGwpe1xyXG4gICAgICAgICAgICBhdWRpb0luZm8gPSB7XHJcbiAgICAgICAgICAgICAgICBcIm11c2ljT3BlblwiOiB0cnVlLCAgICAgICAgICAgICAvL+mfs+S5kFxyXG4gICAgICAgICAgICAgICAgXCJlZmZlY3RPcGVuXCI6IHRydWUsICAgICAgICAgICAgLy/pn7PmlYhcclxuICAgICAgICAgICAgICAgIFwidmlicmF0ZU9wZW5cIjogdHJ1ZSwgICAgICAgICAgIC8v6ZyH5YqoXHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgY2MuZnguU3RvcmFnZU1lc3NhZ2Uuc2V0U3RvcmFnZShcIm11c2ljXCIsYXVkaW9JbmZvKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZXtcclxuICAgICAgICAgICAgY2MuZnguR2FtZUNvbmZpZy5HTV9JTkZPLm11c2ljT3BlbiA9IGF1ZGlvSW5mby5tdXNpY09wZW47XHJcbiAgICAgICAgICAgIGNjLmZ4LkdhbWVDb25maWcuR01fSU5GTy5lZmZlY3RPcGVuID0gYXVkaW9JbmZvLmVmZmVjdE9wZW47XHJcbiAgICAgICAgICAgIGNjLmZ4LkdhbWVDb25maWcuR01fSU5GTy52aWJyYXRlT3BlbiA9IGF1ZGlvSW5mby52aWJyYXRlT3BlbjtcclxuICAgICAgICB9XHJcbiAgICB9XHJcbiAgICBcclxuICAgIC8v5paw55So5oi377yM5pyJ5pys5Zyw57yT5a2Y6K+75Y+W6YWN572uXHJcbiAgICBuZXdSZWFkRGF0YSgpe1xyXG4gICAgICAgIGNvbnNvbGUubG9nKFwi6K+75Y+W5paw5L+h5oGvXCIpO1xyXG4gICAgICAgIGxldCBvcGVuaWQgPSBjYy5meC5TdG9yYWdlTWVzc2FnZS5nZXRTdG9yYWdlKFwib3BlbmlkXCIpO1xyXG4gICAgICAgIGlmKG9wZW5pZCA9PSBudWxsIHx8IG9wZW5pZCA9PSBcIlwiIHx8IG9wZW5pZCA9PSB1bmRlZmluZWQpe1xyXG4gICAgICAgICAgICBjb25zb2xlLmxvZyhcIuayoeaciW9wZW5pZFwiKTtcclxuICAgICAgICAgICAgLy9AdHMtaWdub3JlXHJcbiAgICAgICAgICAgIHd4LmNsb3VkLmNhbGxGdW5jdGlvbih7XHJcbiAgICAgICAgICAgIG5hbWU6ICd1c2VyRGF0YScsXHJcbiAgICAgICAgICAgICAgICBkYXRhOiB7XHJcbiAgICAgICAgICAgICAgICAgICAgYWN0aW9uOiAncmVhZCdcclxuICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgICBzdWNjZXNzOiByZXMgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKCfor7vlj5bnlKjmiLfmlbDmja7miJDlip8nLCByZXMucmVzdWx0KVxyXG4gICAgICAgICAgICAgICAgICAgIGlmKHJlcy5yZXN1bHQuY29kZSA9PSA0MDQgJiYgcmVzLnJlc3VsdC5tZXNzYWdlID09IFwi5pyq5om+5Yiw55So5oi35pWw5o2uXCIpe1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICBlbHNlIGlmKHJlcy5yZXN1bHQuY29kZSA9PSAyMDApe1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBpZihyZXMucmVzdWx0LmRhdGEpe1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2MuZnguR2FtZUNvbmZpZy5HTV9JTkZPLm9wZW5pZCA9IHJlcy5yZXN1bHQub3BlbmlkO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2MuZnguR2FtZUNvbmZpZy5HTV9JTkZPLnVzZXJuYW1lID0gcmVzLnJlc3VsdC5kYXRhLnVzZXJuYW1lO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2MuZnguR2FtZUNvbmZpZy5HTV9JTkZPLnVzZXJhdmF0YXIgPSByZXMucmVzdWx0LmRhdGEudXNlcmF2YXRhcjtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHJlZ2lzdGVyX3RpbWUgPSByZXMucmVzdWx0LmRhdGEucmVnaXN0ZXJfdGltZTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1pbmlHYW1lU2RrLkFQSS5zaHVzaHVfdXNlclNldChyZWdpc3Rlcl90aW1lKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNjLmZ4LlN0b3JhZ2VNZXNzYWdlLnNldFN0b3JhZ2UoXCJvcGVuaWRcIixjYy5meC5HYW1lQ29uZmlnLkdNX0lORk8ub3BlbmlkKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgICBmYWlsOiBlcnIgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoJ+ivu+WPlueUqOaIt+aVsOaNruWksei0pScsIGVycilcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfSlcclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZXtcclxuICAgICAgICAgICAgaWYob3BlbmlkKVxyXG4gICAgICAgICAgICAgICAgY2MuZnguR2FtZUNvbmZpZy5HTV9JTkZPLm9wZW5pZCA9IG9wZW5pZDtcclxuICAgICAgICB9XHJcbiAgIFxyXG5cclxuXHJcbiAgICAgICAgLy/nrYnnuqfkv6Hmga9cclxuICAgICAgICBjYy5meC5HYW1lVG9vbC5nZXRVc2VyTGV2ZWwoKGRhdGEpID0+e1xyXG4gICAgICAgICAgICBjb25zdCB0aW1lc3RhbXAgPSBEYXRlLm5vdygpO1xyXG4gICAgICAgICAgICBsZXQgbGV2ZWxJbmZvID0gY2MuZnguU3RvcmFnZU1lc3NhZ2UuZ2V0U3RvcmFnZShcImxldmVsXCIpO1xyXG4gICAgICAgICAgICBpZihkYXRhLnJlc3VsdC5jb2RlID09IDQwNCAmJiBkYXRhLnJlc3VsdC5tZXNzYWdlID09IFwi5pyq5om+5Yiw5YWz5Y2h5pWw5o2uXCIpe1xyXG4gICAgICAgICAgICAgICAgLy8gY29uc29sZS5sb2coXCLmsqHmnInnrYnnuqfkv6Hmga/vvIzku47nlKjmiLfmjqXlj6Pmi7/liLDmlbDmja5cIik7XHJcbiAgICAgICAgICAgICAgICBpZihsZXZlbEluZm8ubGV2ZWwpe1xyXG4gICAgICAgICAgICAgICAgICAgIGNjLmZ4LkdhbWVDb25maWcuR01fSU5GTy5sZXZlbCA9IGxldmVsSW5mby5sZXZlbDtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIHRoaXMubG9hZDQgPSB0cnVlO1xyXG4gICAgICAgICAgICAgICAgY2MuZnguR2FtZVRvb2wuc2V0VXNlckxldmVsKChkYXRhKT0+e1xyXG4gICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgIH0gXHJcbiAgICAgICAgICAgIGVsc2UgaWYoZGF0YS5yZXN1bHQuY29kZSA9PSAyMDApe1xyXG4gICAgICAgICAgICAgICAgLy8gY29uc29sZS5sb2coXCLmnInnrYnnuqfkv6Hmga/vvIzku47lhbPljaHmjqXlj6Pmi7/liLDmlbDmja5cIixkYXRhLnJlc3VsdC5kYXRhKTtcclxuICAgICAgICAgICAgICAgIC8v5ri45oiP5YmN56uv5a2Y5YKoIOaWsOS6juacjeWKoeWZqOerryzku6XmuLjmiI/liY3nq6/kv6Hmga/kuLrkuLvvvIzmlL7mnI3liqHlmajlrZjlgqhcclxuICAgICAgICAgICAgICAgIGxldCB0ZW1wID0gZGF0YS5yZXN1bHQudGltZXN0YW1wIC0gbGV2ZWxJbmZvLnRpbWVzdGFtcDtcclxuICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKFwi562J57qn5pe26Ze05beuOlwiLHRlbXApO1xyXG4gICAgICAgICAgICAgICAgaWYoKGRhdGEucmVzdWx0LnRpbWVzdGFtcCAtIGxldmVsSW5mby50aW1lc3RhbXApIDwgMTAwMDApe1xyXG4gICAgICAgICAgICAgICAgICAgIGlmKGxldmVsSW5mby5sZXZlbCl7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKFwi5Lul5ri45oiP5YmN56uv562J57qn5Li65YeGXCIsZGF0YS5yZXN1bHQuZGF0YSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNjLmZ4LkdhbWVDb25maWcuR01fSU5GTy5sZXZlbCA9IGxldmVsSW5mby5sZXZlbDtcclxuICAgICAgICAgICAgICAgICAgICAgICAgLy8gY29uc29sZS5sb2coXCLnrYnnuqfkuLo6XCIsY2MuZnguR2FtZUNvbmZpZy5HTV9JTkZPLmxldmVsKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgY2MuZnguR2FtZVRvb2wuc2V0VXNlckxldmVsKChkYXRhKT0+e1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgLy/mnI3liqHlmajnq6/lrZjlgqjml7bpl7TmlrDkuo7muLjmiI/nq6/vvIzku6XmnI3liqHlmajnq6/kuLrkuLss5b6A5YmN56uv5a2Y5YKoXHJcbiAgICAgICAgICAgICAgICBlbHNle1xyXG4gICAgICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKFwi5Lul5pyN5Yqh5Zmo562J57qn5Li65YeGXCIsZGF0YS5yZXN1bHQuZGF0YSk7XHJcbiAgICAgICAgICAgICAgICAgICAgY2MuZnguR2FtZUNvbmZpZy5HTV9JTkZPLmxldmVsID0gZGF0YS5yZXN1bHQuZGF0YTsgXHJcbiAgICAgICAgICAgICAgICAgICAgbGV2ZWxJbmZvLmxldmVsID0gY2MuZnguR2FtZUNvbmZpZy5HTV9JTkZPLmxldmVsO1xyXG4gICAgICAgICAgICAgICAgICAgIGxldmVsSW5mby50aW1lc3RhbXAgPSB0aW1lc3RhbXA7XHJcbiAgICAgICAgICAgICAgICAgICAgLy8gY29uc29sZS5sb2coXCIxMTExMTEx5a2Y5YKo5YWz5Y2h5pWw5o2uOlwiLGNjLmZ4LkdhbWVDb25maWcuR01fSU5GTy5sZXZlbCk7XHJcbiAgICAgICAgICAgICAgICAgICAgY2MuZnguU3RvcmFnZU1lc3NhZ2Uuc2V0U3RvcmFnZShcImxldmVsXCIsbGV2ZWxJbmZvKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIHRoaXMubG9hZDQgPSB0cnVlO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfSk7XHJcbiAgICAgICAgLy/ph5HluIHkv6Hmga9cclxuICAgICAgICBjYy5meC5HYW1lVG9vbC5nZXRVc2VyQ29pbigoZGF0YSkgPT57XHJcbiAgICAgICAgICAgIGNvbnN0IHRpbWVzdGFtcCA9IERhdGUubm93KCk7XHJcbiAgICAgICAgICAgIGxldCBjb2luSW5mbyA9IGNjLmZ4LlN0b3JhZ2VNZXNzYWdlLmdldFN0b3JhZ2UoXCJjb2luXCIpO1xyXG4gICAgICAgICAgICBpZihkYXRhLnJlc3VsdC5jb2RlID09IDQwNCAmJiBkYXRhLnJlc3VsdC5tZXNzYWdlID09IFwi5pyq5om+5Yiw6YeR5biB5pWw5o2uXCIpe1xyXG4gICAgICAgICAgICAgICAgaWYoY29pbkluZm8uY29pbilcclxuICAgICAgICAgICAgICAgICAgICBjYy5meC5HYW1lQ29uZmlnLkdNX0lORk8uY29pbiA9IGNvaW5JbmZvLmNvaW47XHJcbiAgICAgICAgICAgICAgICBjb25zb2xlLmxvZyhcIuayoeaciemHkeW4geS/oeaBr++8jOS7jueUqOaIt+aOpeWPo+aLv+WIsOaVsOaNrlwiLGNjLmZ4LkdhbWVDb25maWcuR01fSU5GTy5jb2luKTtcclxuICAgICAgICAgICAgICAgIHRoaXMubG9hZDMgPSB0cnVlO1xyXG4gICAgICAgICAgICAgICAgY2MuZnguR2FtZVRvb2wuc2V0VXNlckNvaW4oKGRhdGEpPT57XHJcbiAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgfSBcclxuICAgICAgICAgICAgZWxzZSBpZihkYXRhLnJlc3VsdC5jb2RlID09IDIwMCl7XHJcbiAgICAgICAgICAgICAgICAvLyBjb25zb2xlLmxvZyhcIuaciemHkeW4geS/oeaBr++8jOS7jumHkeW4geaOpeWPo+aLv+WIsOaVsOaNrlwiLGRhdGEucmVzdWx0LmRhdGEpO1xyXG4gICAgICAgICAgICAgICAgLy/muLjmiI/liY3nq6/lrZjlgqgg5paw5LqO5pyN5Yqh5Zmo56uvLOS7pea4uOaIj+WJjeerr+S/oeaBr+S4uuS4u++8jOaUvuacjeWKoeWZqOWtmOWCqFxyXG4gICAgICAgICAgICAgICAgbGV0IHRlbXAgPSBkYXRhLnJlc3VsdC50aW1lc3RhbXAgLSBjb2luSW5mby50aW1lc3RhbXA7XHJcbiAgICAgICAgICAgICAgICBjb25zb2xlLmxvZyhcIumHkeW4geaXtumXtOW3rjpcIix0ZW1wKTtcclxuICAgICAgICAgICAgICAgIGlmKChkYXRhLnJlc3VsdC50aW1lc3RhbXAgLSBjb2luSW5mby50aW1lc3RhbXApIDwgMTAwMDApe1xyXG4gICAgICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKFwi5Lul5YmN56uv6YeR5bmj5Li65YeGOlwiLGNvaW5JbmZvKTtcclxuICAgICAgICAgICAgICAgICAgICBpZihjb2luSW5mby5jb2luKVxyXG4gICAgICAgICAgICAgICAgICAgICAgICBjYy5meC5HYW1lQ29uZmlnLkdNX0lORk8uY29pbiA9IGNvaW5JbmZvLmNvaW47XHJcbiAgICAgICAgICAgICAgICAgICAgZWxzZXtcclxuICAgICAgICAgICAgICAgICAgICAgICAgY2MuZnguR2FtZUNvbmZpZy5HTV9JTkZPLmNvaW4gPSBkYXRhLnJlc3VsdC5kYXRhO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBjb2luSW5mby5jb2luID0gY2MuZnguR2FtZUNvbmZpZy5HTV9JTkZPLmNvaW47XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvaW5JbmZvLnRpbWVzdGFtcCA9IHRpbWVzdGFtcDtcclxuICAgICAgICAgICAgICAgICAgICAgICAgY29uc29sZS5sb2coXCIxMTExMTExMTExMVwiKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgY2MuZnguU3RvcmFnZU1lc3NhZ2Uuc2V0U3RvcmFnZShcImNvaW5cIixjb2luSW5mbyk7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKFwi5pS55Y+Y5ZCO6YeR5biBOlwiLGNjLmZ4LkdhbWVDb25maWcuR01fSU5GTy5jb2luKTtcclxuICAgICAgICAgICAgICAgICAgICBjYy5meC5HYW1lVG9vbC5zZXRVc2VyQ29pbigoZGF0YSk9PntcclxuICAgICAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIC8v5pyN5Yqh5Zmo56uv5a2Y5YKo5pe26Ze05paw5LqO5ri45oiP56uv77yM5Lul5pyN5Yqh5Zmo56uv5Li65Li7LOW+gOWJjeerr+WtmOWCqFxyXG4gICAgICAgICAgICAgICAgZWxzZXtcclxuICAgICAgICAgICAgICAgICAgICBjb25zb2xlLmxvZyhcIuS7peacjeWKoeWZqOmHkeW5o+S4uuWHhjpcIixkYXRhLnJlc3VsdC5kYXRhKTtcclxuICAgICAgICAgICAgICAgICAgICBjYy5meC5HYW1lQ29uZmlnLkdNX0lORk8uY29pbiA9IGRhdGEucmVzdWx0LmRhdGE7IFxyXG4gICAgICAgICAgICAgICAgICAgIGNvaW5JbmZvLmNvaW4gPSBjYy5meC5HYW1lQ29uZmlnLkdNX0lORk8uY29pbjtcclxuICAgICAgICAgICAgICAgICAgICBjb2luSW5mby50aW1lc3RhbXAgPSB0aW1lc3RhbXA7XHJcbiAgICAgICAgICAgICAgICAgICAgY29uc29sZS5sb2coXCIyMjIyMjIyMjIyXCIpO1xyXG4gICAgICAgICAgICAgICAgICAgIGNjLmZ4LlN0b3JhZ2VNZXNzYWdlLnNldFN0b3JhZ2UoXCJjb2luXCIsY29pbkluZm8pO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgdGhpcy5sb2FkMyA9IHRydWU7XHJcbiAgICAgICAgICAgIH0gXHJcbiAgICAgICAgfSk7XHJcbiAgICAgICAgLy/pgZPlhbfkv6Hmga9cclxuICAgICAgICBjYy5meC5HYW1lVG9vbC5nZXRVc2VyUHJvcCgoZGF0YSkgPT57XHJcbiAgICAgICAgICAgIGNvbnN0IHRpbWVzdGFtcCA9IERhdGUubm93KCk7XHJcbiAgICAgICAgICAgIGxldCBwcm9wSW5mbyA9IGNjLmZ4LlN0b3JhZ2VNZXNzYWdlLmdldFN0b3JhZ2UoXCJwcm9wXCIpO1xyXG4gICAgICAgICAgICBpZihkYXRhLnJlc3VsdC5jb2RlID09IDQwNCAmJiBkYXRhLnJlc3VsdC5tZXNzYWdlID09IFwi5pyq5om+5Yiw6YGT5YW35pWw5o2uXCIpe1xyXG4gICAgICAgICAgICAgICAgY29uc29sZS5sb2coXCLmsqHmnInpgZPlhbfkv6Hmga/vvIzku47nlKjmiLfmjqXlj6Pmi7/liLDmlbDmja5cIixwcm9wSW5mbyk7XHJcbiAgICAgICAgICAgICAgICBpZihwcm9wSW5mby5mcmVlemVBbW91bnQgPT0gdW5kZWZpbmVkIHx8IHByb3BJbmZvLmhhbW1lckFtb3VudCA9PSB1bmRlZmluZWQgfHwgcHJvcEluZm8ubWFnaWNBbW91bnQgPT0gdW5kZWZpbmVkKXtcclxuICAgICAgICAgICAgICAgICAgICAgICAgY29uc29sZS5sb2coXCIyMjIyMjIy6YGT5YW35pWw5o2u5byC5bi4XCIpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBjYy5meC5HYW1lQ29uZmlnLkdNX0lORk8uZnJlZXplQW1vdW50ID0gMDtcclxuICAgICAgICAgICAgICAgICAgICAgICAgY2MuZnguR2FtZUNvbmZpZy5HTV9JTkZPLmhhbW1lckFtb3VudCA9IDA7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNjLmZ4LkdhbWVDb25maWcuR01fSU5GTy5tYWdpY0Ftb3VuID0gMDtcclxuICAgICAgICAgICAgICAgICAgICAgICAgbGV0IHByb3BJbmZvTmV3ID0ge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJmcmVlemVBbW91bnRcIjpjYy5meC5HYW1lQ29uZmlnLkdNX0lORk8uZnJlZXplQW1vdW50LFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJoYW1tZXJBbW91bnRcIjpjYy5meC5HYW1lQ29uZmlnLkdNX0lORk8uaGFtbWVyQW1vdW50LFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJtYWdpY0Ftb3VudFwiOmNjLmZ4LkdhbWVDb25maWcuR01fSU5GTy5tYWdpY0Ftb3VuLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJ0aW1lc3RhbXBcIjp0aW1lc3RhbXBcclxuICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zb2xlLmxvZyhcIjExMTExMTHkuIrkvKDpgZPlhbfkv6Hmga86XCIscHJvcEluZm9OZXcpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBjYy5meC5TdG9yYWdlTWVzc2FnZS5zZXRTdG9yYWdlKFwicHJvcFwiLHByb3BJbmZvTmV3KTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIGVsc2V7XHJcbiAgICAgICAgICAgICAgICAgICAgY2MuZnguR2FtZUNvbmZpZy5HTV9JTkZPLmZyZWV6ZUFtb3VudCA9IGRhdGEucmVzdWx0LmRhdGEuZnJlZXplO1xyXG4gICAgICAgICAgICAgICAgICAgIGNjLmZ4LkdhbWVDb25maWcuR01fSU5GTy5oYW1tZXJBbW91bnQgPSBkYXRhLnJlc3VsdC5kYXRhLmhhbW1lcjtcclxuICAgICAgICAgICAgICAgICAgICBjYy5meC5HYW1lQ29uZmlnLkdNX0lORk8ubWFnaWNBbW91bnQgPSBkYXRhLnJlc3VsdC5kYXRhLm1hZ2ljX3dhbmQ7XHJcbiAgICAgICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICBjYy5meC5HYW1lQ29uZmlnLkdNX0lORk8uZnJlZXplQW1vdW50ID0gcHJvcEluZm8uZnJlZXplQW1vdW50O1xyXG4gICAgICAgICAgICAgICAgY2MuZnguR2FtZUNvbmZpZy5HTV9JTkZPLmhhbW1lckFtb3VudCA9IHByb3BJbmZvLmhhbW1lckFtb3VudDtcclxuICAgICAgICAgICAgICAgIGNjLmZ4LkdhbWVDb25maWcuR01fSU5GTy5tYWdpY0Ftb3VudCA9IHByb3BJbmZvLm1hZ2ljQW1vdW50O1xyXG4gICAgICAgICAgICAgICAgY2MuZnguR2FtZVRvb2wuc2V0VXNlclByb3AoMCwwLChkYXRhKT0+e1xyXG4gICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgIH0gXHJcbiAgICAgICAgICAgIGVsc2UgaWYoZGF0YS5yZXN1bHQuY29kZSA9PSAyMDApe1xyXG4gICAgICAgICAgICAgICAgLy8gY29uc29sZS5sb2coXCLmnKzlnLDml7bpl7TmiLNcIixwcm9wSW5mby50aW1lc3RhbXAsXCLmnI3liqHlmajml7bpl7TmiLNcIixkYXRhLnJlc3VsdC50aW1lc3RhbXApO1xyXG4gICAgICAgICAgICAgICAgaWYoKGRhdGEucmVzdWx0LnRpbWVzdGFtcCAtIHByb3BJbmZvLnRpbWVzdGFtcCkgPCAxMDAwMCl7XHJcbiAgICAgICAgICAgICAgICAgICAgY29uc29sZS5sb2coXCLku6XliY3nq6/pgZPlhbfkuLrkuLs6XCIscHJvcEluZm8pO1xyXG4gICAgICAgICAgICAgICAgICAgIGlmKHByb3BJbmZvLmZyZWV6ZUFtb3VudCA9PSB1bmRlZmluZWQgfHwgcHJvcEluZm8uaGFtbWVyQW1vdW50ID09IHVuZGVmaW5lZCB8fCBwcm9wSW5mby5tYWdpY0Ftb3VudCA9PSB1bmRlZmluZWQpe1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zb2xlLmxvZyhcIjExMTExMemBk+WFt+aVsOaNruW8guW4uFwiLGRhdGEucmVzdWx0LmRhdGEpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBjYy5meC5HYW1lQ29uZmlnLkdNX0lORk8uZnJlZXplQW1vdW50ID0gZGF0YS5yZXN1bHQuZGF0YS5mcmVlemU7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNjLmZ4LkdhbWVDb25maWcuR01fSU5GTy5oYW1tZXJBbW91bnQgPSBkYXRhLnJlc3VsdC5kYXRhLmhhbW1lcjtcclxuICAgICAgICAgICAgICAgICAgICAgICAgY2MuZnguR2FtZUNvbmZpZy5HTV9JTkZPLm1hZ2ljQW1vdW50ID0gZGF0YS5yZXN1bHQuZGF0YS5tYWdpY193YW5kO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBsZXQgcHJvcEluZm9OZXcgPSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBcImZyZWV6ZUFtb3VudFwiOmNjLmZ4LkdhbWVDb25maWcuR01fSU5GTy5mcmVlemVBbW91bnQsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBcImhhbW1lckFtb3VudFwiOmNjLmZ4LkdhbWVDb25maWcuR01fSU5GTy5oYW1tZXJBbW91bnQsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIm1hZ2ljQW1vdW50XCI6Y2MuZnguR2FtZUNvbmZpZy5HTV9JTkZPLm1hZ2ljQW1vdW50LFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJ0aW1lc3RhbXBcIjp0aW1lc3RhbXBcclxuICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zb2xlLmxvZyhcIjMzMzMzM+S4iuS8oOmBk+WFt+S/oeaBrzpcIixwcm9wSW5mb05ldyk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNjLmZ4LlN0b3JhZ2VNZXNzYWdlLnNldFN0b3JhZ2UoXCJwcm9wXCIscHJvcEluZm9OZXcpO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICBlbHNle1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zb2xlLmxvZyhcIumBk+WFt+aVsOaNruato+W4uFwiKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgY2MuZnguR2FtZUNvbmZpZy5HTV9JTkZPLmZyZWV6ZUFtb3VudCA9IHByb3BJbmZvLmZyZWV6ZUFtb3VudDtcclxuICAgICAgICAgICAgICAgICAgICAgICAgY2MuZnguR2FtZUNvbmZpZy5HTV9JTkZPLmhhbW1lckFtb3VudCA9IHByb3BJbmZvLmhhbW1lckFtb3VudDtcclxuICAgICAgICAgICAgICAgICAgICAgICAgY2MuZnguR2FtZUNvbmZpZy5HTV9JTkZPLm1hZ2ljQW1vdW50ID0gcHJvcEluZm8ubWFnaWNBbW91bnQ7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNjLmZ4LkdhbWVUb29sLnNldFVzZXJQcm9wKDAsMCwoZGF0YSk9PntcclxuICAgICAgICAgICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgZWxzZXtcclxuICAgICAgICAgICAgICAgICAgICBjYy5meC5HYW1lQ29uZmlnLkdNX0lORk8uZnJlZXplQW1vdW50ID0gZGF0YS5yZXN1bHQuZGF0YS5mcmVlemU7XHJcbiAgICAgICAgICAgICAgICAgICAgY2MuZnguR2FtZUNvbmZpZy5HTV9JTkZPLmhhbW1lckFtb3VudCA9IGRhdGEucmVzdWx0LmRhdGEuaGFtbWVyO1xyXG4gICAgICAgICAgICAgICAgICAgIGNjLmZ4LkdhbWVDb25maWcuR01fSU5GTy5tYWdpY0Ftb3VudCA9IGRhdGEucmVzdWx0LmRhdGEubWFnaWNfd2FuZDtcclxuICAgICAgICAgICAgICAgICAgICBsZXQgcHJvcEluZm9OZXcgPSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFwiZnJlZXplQW1vdW50XCI6Y2MuZnguR2FtZUNvbmZpZy5HTV9JTkZPLmZyZWV6ZUFtb3VudCxcclxuICAgICAgICAgICAgICAgICAgICAgICAgXCJoYW1tZXJBbW91bnRcIjpjYy5meC5HYW1lQ29uZmlnLkdNX0lORk8uaGFtbWVyQW1vdW50LFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBcIm1hZ2ljQW1vdW50XCI6Y2MuZnguR2FtZUNvbmZpZy5HTV9JTkZPLm1hZ2ljQW1vdW50LFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBcInRpbWVzdGFtcFwiOnRpbWVzdGFtcFxyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICBjb25zb2xlLmxvZyhcIjIyMjIyMjIy5LiK5Lyg6YGT5YW35L+h5oGvOlwiLHByb3BJbmZvTmV3LGRhdGEucmVzdWx0KTtcclxuICAgICAgICAgICAgICAgICAgICBjYy5meC5TdG9yYWdlTWVzc2FnZS5zZXRTdG9yYWdlKFwicHJvcFwiLHByb3BJbmZvTmV3KTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfSBcclxuICAgICAgICB9KTtcclxuICAgIH1cclxuICAgIC8v5pen55So5oi377yM5peg5pys5Zyw57yT5a2Y6K+75Y+W6YWN572uXHJcbiAgICBvbGRSZWFkRGF0YShyZXRyeUNvdW50Om51bWJlcil7XHJcbiAgICAgICAgY29uc29sZS5sb2coXCLor7vlj5bml6fkv6Hmga9cIik7XHJcbiAgICAgICAgY29uc3QgTUFYX1JFVFJJRVMgPSAxNTtcclxuICAgICAgICBjb25zdCB0aW1lc3RhbXAgPSBEYXRlLm5vdygpO1xyXG4gICAgICAgIC8vIOivu+WPlueUqOaIt+aVsOaNrlxyXG4gICAgICAgIC8vQHRzLWlnbm9yZVxyXG4gICAgICAgIHd4LmNsb3VkLmNhbGxGdW5jdGlvbih7XHJcbiAgICAgICAgbmFtZTogJ3VzZXJEYXRhJyxcclxuICAgICAgICBkYXRhOiB7XHJcbiAgICAgICAgICAgIGFjdGlvbjogJ3JlYWQnXHJcbiAgICAgICAgfSxcclxuICAgICAgICBzdWNjZXNzOiByZXMgPT4geyAgIFxyXG4gICAgICAgICAgICBjb25zb2xlLmxvZygn6K+75Y+W55So5oi35pWw5o2u5oiQ5YqfJywgcmVzLnJlc3VsdClcclxuICAgICAgICAgICAgaWYocmVzLnJlc3VsdC5jb2RlID09IDQwNCAmJiByZXMucmVzdWx0Lm1lc3NhZ2UgPT0gXCLmnKrmib7liLDnlKjmiLfmlbDmja5cIil7XHJcbiAgICAgICAgICAgICAgICBpZihyZXMucmVzdWx0Lm9wZW5pZCl7XHJcbiAgICAgICAgICAgICAgICAgICAgY2MuZnguR2FtZUNvbmZpZy5HTV9JTkZPLm9wZW5pZCA9IHJlcy5yZXN1bHQub3BlbmlkXHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBjYy5meC5HYW1lQ29uZmlnLkdNX0lORk8uZmlyc3QgPSB0cnVlO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5sb2FkMyA9IHRydWU7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmxvYWQ0ID0gdHJ1ZTtcclxuICAgICAgICAgICAgICAgIGxldCBsZXZlbEluZm8gPSB7XCJsZXZlbFwiOjAsXCJ0aW1lc3RhbXBcIjp0aW1lc3RhbXB9O1xyXG4gICAgICAgICAgICAgICAgY2MuZnguU3RvcmFnZU1lc3NhZ2Uuc2V0U3RvcmFnZShcImxldmVsXCIsbGV2ZWxJbmZvKTtcclxuICAgICAgICAgICAgICAgIGxldCBjb2luSW5mbyA9IHtcImNvaW5cIjowLFwidGltZXN0YW1wXCI6dGltZXN0YW1wfTtcclxuICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKFwiMzMzMzMzMzMzMzNcIik7XHJcbiAgICAgICAgICAgICAgICBjYy5meC5TdG9yYWdlTWVzc2FnZS5zZXRTdG9yYWdlKFwiY29pblwiLGNvaW5JbmZvKTtcclxuICAgICAgICAgICAgICAgIGxldCBwcm9wSW5mbyA9IHtcclxuICAgICAgICAgICAgICAgICAgICBcImZyZWV6ZUFtb3VudFwiOjAsXHJcbiAgICAgICAgICAgICAgICAgICAgXCJoYW1tZXJBbW91bnRcIjowLFxyXG4gICAgICAgICAgICAgICAgICAgIFwibWFnaWNBbW91bnRcIjowLFxyXG4gICAgICAgICAgICAgICAgICAgIFwidGltZXN0YW1wXCI6dGltZXN0YW1wLFxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgY2MuZnguU3RvcmFnZU1lc3NhZ2Uuc2V0U3RvcmFnZShcInByb3BcIixwcm9wSW5mbyk7XHJcblxyXG5cclxuICAgICAgICAgICAgICAgIGNjLmZ4LkdhbWVUb29sLnNldFVzZXJJbmZvKChkYXRhKT0+e1xyXG4gICAgICAgICAgICAgICAgICAgIGlmKGRhdGEucmVzdWx0LmNvZGUgPT0gMjAwKXtcclxuICAgICAgICAgICAgICAgICAgICAgICAgY29uc29sZS5sb2coXCLkuIrkvKDnlKjmiLfkv6Hmga/miJDlip9cIixkYXRhKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgLy9AdHMtaWdub3JlXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHd4LmNsb3VkLmNhbGxGdW5jdGlvbih7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiAndXNlckRhdGEnLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0YToge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFjdGlvbjogJ3JlYWQnXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LCAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdWNjZXNzOiByZXMgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKFwi5LiK5Lyg5ZCO77yM6K+75Y+W55So5oi35L+h5oGv77yM5Li65LiK5oql5rOo5YaM5pe26Ze0XCIpXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYocmVzLnJlc3VsdC5jb2RlID09IDIwMCl7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHRpbWUgPSByZXMucmVzdWx0LmRhdGEucmVnaXN0ZXJfdGltZTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTWluaUdhbWVTZGsuQVBJLnNodXNodV91c2VyU2V0KHRpbWUpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgfSlcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKFwi5pyN5Yqh5Zmo5Lmf5rKh5pyJ6YeR5biB5L+h5oGvXCIsY2MuZnguR2FtZUNvbmZpZy5HTV9JTkZPLmNvaW4pO1xyXG4gICAgICAgICAgICAgICAgY2MuZnguR2FtZVRvb2wuc2V0VXNlckNvaW4oY2MuZnguR2FtZUNvbmZpZy5HTV9JTkZPLmNvaW4sKGRhdGEpPT57XHJcbiAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgICAgIGNjLmZ4LkdhbWVUb29sLnNldFVzZXJMZXZlbCgoZGF0YSk9PntcclxuICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgY2MuZnguR2FtZUNvbmZpZy5HTV9JTkZPLmZyZWV6ZUFtb3VudCA9IDA7XHJcbiAgICAgICAgICAgICAgICAgICAgY2MuZnguR2FtZUNvbmZpZy5HTV9JTkZPLmhhbW1lckFtb3VudCA9IDA7XHJcbiAgICAgICAgICAgICAgICAgICAgY2MuZnguR2FtZUNvbmZpZy5HTV9JTkZPLm1hZ2ljQW1vdW50ID0gMDtcclxuICAgICAgICAgICAgICAgICAgICBjYy5meC5HYW1lVG9vbC5zZXRVc2VyUHJvcCgwLDAsKGRhdGEpPT57XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmKGRhdGEucmVzdWx0LmNvZGUgPT0gMjAwKXtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKFwi5LiK5Lyg6YGT5YW35L+h5oGv5oiQ5YqfXCIsZGF0YSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgZWxzZXtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1pbmlHYW1lU2RrLkFQSS5zaG93VG9hc3QoXCLnvZHnu5zlvILluLjvvIzmraPlnKjliqrlipvliqDovb1cIik7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLm9sZFJlYWREYXRhKDApO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwgMTAwMCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgICAgIH0sIDApO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGVsc2UgaWYocmVzLnJlc3VsdC5jb2RlID09IDIwMCl7XHJcbiAgICAgICAgICAgICAgICBpZihyZXMucmVzdWx0LmRhdGEpe1xyXG4gICAgICAgICAgICAgICAgICAgIGNjLmZ4LkdhbWVDb25maWcuR01fSU5GTy5vcGVuaWQgPSByZXMucmVzdWx0Lm9wZW5pZDtcclxuICAgICAgICAgICAgICAgICAgICBjYy5meC5HYW1lQ29uZmlnLkdNX0lORk8ubGV2ZWwgPSByZXMucmVzdWx0LmRhdGEubGV2ZWw7XHJcbiAgICAgICAgICAgICAgICAgICAgY2MuZnguR2FtZUNvbmZpZy5HTV9JTkZPLmNvaW4gPSByZXMucmVzdWx0LmRhdGEuY29pbkFtb3VudDtcclxuICAgICAgICAgICAgICAgICAgICBjYy5meC5HYW1lQ29uZmlnLkdNX0lORk8uZnJlZXplQW1vdW50ID0gcmVzLnJlc3VsdC5kYXRhLmZyZWV6ZUFtb3VudDtcclxuICAgICAgICAgICAgICAgICAgICBjYy5meC5HYW1lQ29uZmlnLkdNX0lORk8uaGFtbWVyQW1vdW50ID0gcmVzLnJlc3VsdC5kYXRhLmhhbW1lckFtb3VudDtcclxuICAgICAgICAgICAgICAgICAgICBjYy5meC5HYW1lQ29uZmlnLkdNX0lORk8ubWFnaWNBbW91bnQgPSByZXMucmVzdWx0LmRhdGEubWFnaWNBbW91bnQ7XHJcbiAgICAgICAgICAgICAgICAgICAgY2MuZnguR2FtZUNvbmZpZy5HTV9JTkZPLnVzZXJuYW1lID0gcmVzLnJlc3VsdC5kYXRhLnVzZXJuYW1lO1xyXG4gICAgICAgICAgICAgICAgICAgIGNjLmZ4LkdhbWVDb25maWcuR01fSU5GTy51c2VyYXZhdGFyID0gcmVzLnJlc3VsdC5kYXRhLnVzZXJhdmF0YXI7XHJcbiAgICAgICAgICAgICAgICAgICAgY2MuZnguU3RvcmFnZU1lc3NhZ2Uuc2V0U3RvcmFnZShcIm9wZW5pZFwiLGNjLmZ4LkdhbWVDb25maWcuR01fSU5GTy5vcGVuaWQpO1xyXG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHJlZ2lzdGVyX3RpbWUgPSByZXMucmVzdWx0LmRhdGEucmVnaXN0ZXJfdGltZTtcclxuICAgICAgICAgICAgICAgICAgICBNaW5pR2FtZVNkay5BUEkuc2h1c2h1X3VzZXJTZXQocmVnaXN0ZXJfdGltZSk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICBjYy5meC5HYW1lVG9vbC5nZXRVc2VyQ29pbigoZGF0YSkgPT57XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmKGRhdGEucmVzdWx0LmNvZGUgPT0gNDA0ICYmIGRhdGEucmVzdWx0Lm1lc3NhZ2UgPT0gXCLmnKrmib7liLDph5HluIHmlbDmja5cIil7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgY29pbkluZm8gPSB7XCJjb2luXCI6MCxcInRpbWVzdGFtcFwiOnRpbWVzdGFtcH07XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYy5meC5HYW1lQ29uZmlnLkdNX0lORk8uY29pbiA9IDA7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYy5meC5TdG9yYWdlTWVzc2FnZS5zZXRTdG9yYWdlKFwiY29pblwiLGNvaW5JbmZvKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKFwi5rKh5pyJ6YeR5biB5L+h5oGv77yM5LuO55So5oi35o6l5Y+j5ou/5Yiw5pWw5o2uXCIsY2MuZnguR2FtZUNvbmZpZy5HTV9JTkZPLmNvaW4pO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2MuZnguR2FtZVRvb2wuc2V0VXNlckNvaW4oKGRhdGEpPT57XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gY29uc29sZS5sb2coXCLkuIrkvKBcIixkYXRhKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmxvYWQzID0gdHJ1ZTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgaWYoZGF0YS5yZXN1bHQuY29kZSA9PSAyMDApe1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gY29uc29sZS5sb2coXCLmnInph5HluIHkv6Hmga/vvIzku47ph5HluIHmjqXlj6Pmi7/liLDmlbDmja5cIixkYXRhLnJlc3VsdC5kYXRhKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNjLmZ4LkdhbWVDb25maWcuR01fSU5GTy5jb2luID0gZGF0YS5yZXN1bHQuZGF0YTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBjb2luSW5mbyA9IHtcImNvaW5cIjpjYy5meC5HYW1lQ29uZmlnLkdNX0lORk8uY29pbixcInRpbWVzdGFtcFwiOnRpbWVzdGFtcH07XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zb2xlLmxvZyhcIuWtmOWCqOmHkeW4geS/oeaBrzpcIixjYy5meC5HYW1lQ29uZmlnLkdNX0lORk8uY29pbik7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zb2xlLmxvZyhcIjQ0NDQ0NDQ0NDRcIik7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYy5meC5TdG9yYWdlTWVzc2FnZS5zZXRTdG9yYWdlKFwiY29pblwiLGNvaW5JbmZvKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMubG9hZDMgPSB0cnVlO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgfSlcclxuICAgICAgICAgICAgICAgIH0sIDUwMCk7XHJcblxyXG4gICAgICAgICAgICAgICAgY2MuZnguR2FtZVRvb2wuZ2V0VXNlckxldmVsKChkYXRhKSA9PntcclxuICAgICAgICAgICAgICAgICAgICBpZihkYXRhLnJlc3VsdC5jb2RlID09IDQwNCAmJiBkYXRhLnJlc3VsdC5tZXNzYWdlID09IFwi5pyq5om+5Yiw5YWz5Y2h5pWw5o2uXCIpe1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zb2xlLmxvZyhcIuayoeacieetiee6p+S/oeaBr++8jOS7jueUqOaIt+aOpeWPo+aLv+WIsOaVsOaNrlwiKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGxldmVsSW5mbyA9IHtcImxldmVsXCI6MCxcInRpbWVzdGFtcFwiOnRpbWVzdGFtcH07XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIGNvbnNvbGUubG9nKFwiMzMzMzMz5a2Y5YKo5YWz5Y2h5pWw5o2uOlwiLGxldmVsSW5mbyk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICBjYy5meC5HYW1lQ29uZmlnLkdNX0lORk8ubGV2ZWwgPSAwO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBjYy5meC5TdG9yYWdlTWVzc2FnZS5zZXRTdG9yYWdlKFwibGV2ZWxcIixsZXZlbEluZm8pO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBjYy5meC5HYW1lVG9vbC5zZXRVc2VyTGV2ZWwoKGRhdGEpPT57XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zb2xlLmxvZyhcIuaLv+WIsOeahOaVsOaNrlwiLGRhdGEpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5sb2FkNCA9IHRydWU7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICAgICAgICAgIH0gXHJcbiAgICAgICAgICAgICAgICAgICAgZWxzZSBpZihkYXRhLnJlc3VsdC5jb2RlID09IDIwMCl7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKFwi5pyJ562J57qn5L+h5oGv77yM5LuO5YWz5Y2h5o6l5Y+j5ou/5Yiw5pWw5o2uXCIsZGF0YS5yZXN1bHQuZGF0YSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNjLmZ4LkdhbWVDb25maWcuR01fSU5GTy5sZXZlbCA9IGRhdGEucmVzdWx0LmRhdGE7IFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBsZXQgbGV2ZWxJbmZvID0ge1wibGV2ZWxcIjpjYy5meC5HYW1lQ29uZmlnLkdNX0lORk8ubGV2ZWwsXCJ0aW1lc3RhbXBcIjp0aW1lc3RhbXB9O1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBjb25zb2xlLmxvZyhcIjQ0NDQ0NOWtmOWCqOWFs+WNoeS/oeaBrzpcIixsZXZlbEluZm8pO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBjYy5meC5TdG9yYWdlTWVzc2FnZS5zZXRTdG9yYWdlKFwibGV2ZWxcIixsZXZlbEluZm8pO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmxvYWQ0ID0gdHJ1ZTtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9KVxyXG4gICAgICAgICAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgY2MuZnguR2FtZVRvb2wuZ2V0VXNlclByb3AoKGRhdGEpID0+e1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBpZihkYXRhLnJlc3VsdC5jb2RlID09IDQwNCAmJiBkYXRhLnJlc3VsdC5tZXNzYWdlID09IFwi5pyq5om+5Yiw6YGT5YW35pWw5o2uXCIpe1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc29sZS5sb2coXCLmsqHmnInpgZPlhbfkv6Hmga/vvIzku47nlKjmiLfmjqXlj6Pmi7/liLDmlbDmja5cIik7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYy5meC5HYW1lQ29uZmlnLkdNX0lORk8uZnJlZXplQW1vdW50ID0gMDtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNjLmZ4LkdhbWVDb25maWcuR01fSU5GTy5oYW1tZXJBbW91bnQgPSAwO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2MuZnguR2FtZUNvbmZpZy5HTV9JTkZPLm1hZ2ljQW1vdW50ID0gMDtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBwcm9wSW5mbyA9IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcImZyZWV6ZUFtb3VudFwiOjAsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJoYW1tZXJBbW91bnRcIjowLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwibWFnaWNBbW91bnRcIjowLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwidGltZXN0YW1wXCI6dGltZXN0YW1wLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc29sZS5sb2coXCLkuIrkvKDpgZPlhbfkv6Hmga86XCIscHJvcEluZm8pO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2MuZnguU3RvcmFnZU1lc3NhZ2Uuc2V0U3RvcmFnZShcInByb3BcIixwcm9wSW5mbyk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYy5meC5HYW1lVG9vbC5zZXRVc2VyUHJvcCgwLDAsKGRhdGEpPT57XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgfSBcclxuICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSBpZihkYXRhLnJlc3VsdC5jb2RlID09IDIwMCl7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zb2xlLmxvZyhcIuaciemBk+WFt+S/oeaBr++8jOS7jumBk+WFt+aOpeWPo+aLv+WIsOaVsOaNrlwiLGRhdGEucmVzdWx0LmRhdGEpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2MuZnguR2FtZUNvbmZpZy5HTV9JTkZPLmZyZWV6ZUFtb3VudCA9IGRhdGEucmVzdWx0LmRhdGEuZnJlZXplIHx8IDA7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYy5meC5HYW1lQ29uZmlnLkdNX0lORk8uaGFtbWVyQW1vdW50ID0gZGF0YS5yZXN1bHQuZGF0YS5oYW1tZXIgfHwgMDtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNjLmZ4LkdhbWVDb25maWcuR01fSU5GTy5tYWdpY0Ftb3VudCA9IGRhdGEucmVzdWx0LmRhdGEubWFnaWNfd2FuZCB8fCAwO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IHByb3BJbmZvID0ge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiZnJlZXplQW1vdW50XCI6Y2MuZnguR2FtZUNvbmZpZy5HTV9JTkZPLmZyZWV6ZUFtb3VudCxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcImhhbW1lckFtb3VudFwiOmNjLmZ4LkdhbWVDb25maWcuR01fSU5GTy5oYW1tZXJBbW91bnQsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJtYWdpY0Ftb3VudFwiOmNjLmZ4LkdhbWVDb25maWcuR01fSU5GTy5tYWdpY0Ftb3VudCxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcInRpbWVzdGFtcFwiOnRpbWVzdGFtcCxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKFwi5LiK5Lyg6YGT5YW35L+h5oGvOlwiLHByb3BJbmZvKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNjLmZ4LlN0b3JhZ2VNZXNzYWdlLnNldFN0b3JhZ2UoXCJwcm9wXCIscHJvcEluZm8pO1xyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIH0pXHJcbiAgICAgICAgICAgICAgICB9LCAwKTtcclxuICAgIFxyXG4gICAgICAgICAgICB9XHJcblxyXG4gICAgICAgIH0sXHJcbiAgICAgICAgZmFpbDogZXJyID0+IHtcclxuICAgICAgICAgICAgY29uc29sZS5lcnJvcign6K+75Y+W55So5oi35pWw5o2u5aSx6LSlJywgZXJyKVxyXG4gICAgICAgICAgICBpZiAocmV0cnlDb3VudCA8IE1BWF9SRVRSSUVTKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgY29uc29sZS5lcnJvcihg6K+75Y+W55So5oi35pWw5o2u5aSx6LSl77yM56ysICR7cmV0cnlDb3VudCArIDF9IOasoemHjeivle+8jOmUmeivr+S/oeaBrzpgLCBlcnIpO1xyXG4gICAgICAgICAgICAgICAgICAgIC8vIOW7tui/nyAyIOenkuWQjumHjeivlVxyXG4gICAgICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnJlYWRVc2VyRGF0YShyZXRyeUNvdW50ICsgMSk7XHJcbiAgICAgICAgICAgICAgICAgICAgfSwgMjAwMCk7XHJcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoJ+ivu+WPlueUqOaIt+aVsOaNruWksei0pe+8jOi+vuWIsOacgOWkp+mHjeivleasoeaVsO+8jOmAgOWHuua4uOaIjycsIGVycik7XHJcbiAgICAgICAgICAgICAgICAgICAgLy8g6YCA5Ye65ri45oiPXHJcbiAgICAgICAgICAgICAgICAgICAgY2MuZ2FtZS5lbmQoKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH0pXHJcbiAgICB9XHJcblxyXG4gICAgc2V0VXNlckRhdGEoKXtcclxuICAgICAgICBjYy5meC5HYW1lQ29uZmlnLkdhbWVUb29sKChkYXRhKT0+e1xyXG4gICAgICAgICAgICBjb25zb2xlLmxvZyhcIuS4iuS8oFwiLGRhdGEpO1xyXG4gICAgICAgIH0pXHJcbiAgICB9XHJcblxyXG4gICAgc3RhcnRUaW1lQ3V0RG93bigpe1xyXG4gICAgICAgIHRoaXMuc2NoZWR1bGVDYWxsYmFjayA9IGZ1bmN0aW9uKCl7XHJcbiAgICAgICAgICAgIGlmKHRoaXMudGltZU51bWJlciA8PSAwKXtcclxuICAgICAgICAgICAgICAgIHRoaXMuc3RvcFRpbWVDdXREb3duKCk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgZWxzZXtcclxuICAgICAgICAgICAgICAgIHRoaXMudGltZU51bWJlciAtPSAxO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfS5iaW5kKHRoaXMpO1xyXG4gICAgICAgIHRoaXMuc2NoZWR1bGUodGhpcy5zY2hlZHVsZUNhbGxiYWNrLCAxKTtcclxuICAgIH1cclxuXHJcbiAgICBzdG9wVGltZUN1dERvd24oKXtcclxuICAgICAgICBpZih0aGlzLnNjaGVkdWxlQ2FsbGJhY2spe1xyXG4gICAgICAgICAgICB0aGlzLnVuc2NoZWR1bGUodGhpcy5zY2hlZHVsZUNhbGxiYWNrKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgdXBkYXRlIChkdCkge1xyXG4gICAgICAgIGlmKHRoaXMubG9hZDEgJiYgdGhpcy5sb2FkMiAmJiB0aGlzLmxvYWQzICAmJiB0aGlzLmxvYWQ0ICYmIHRoaXMubG9hZDUgJiYgdGhpcy50aW1lTnVtYmVyIDw9IDApe1xyXG4gICAgICAgICAgICB0aGlzLmxvYWQxID0gdGhpcy5sb2FkMiA9IGZhbHNlO1xyXG4gICAgICAgICAgICBNaW5pR2FtZVNkay5BUEkuc2h1c2h1X0luaXQoKTtcclxuICAgICAgICAgICAgdGhpcy5zdGFydEdhbWUoKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcbn1cclxuIl19 -//------QC-SOURCE-SPLIT------ - - (function() { - var nodeEnv = typeof require !== 'undefined' && typeof process !== 'undefined'; - var __module = nodeEnv ? module : {exports:{}}; -<<<<<<< HEAD - var __filename = 'preview-scripts/assets/Script/Sdk/MiniGameSdk.js'; -======= - var __filename = 'preview-scripts/assets/Script/Pause.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, 'aca4aut33NCvIC0yg3JmY0h', 'Pause'); -// Script/Pause.ts - -"use strict"; -// Learn TypeScript: -// - https://docs.cocos.com/creator/manual/en/scripting/typescript.html -// Learn Attribute: -// - https://docs.cocos.com/creator/manual/en/scripting/reference/attributes.html -// Learn life-cycle callbacks: -// - https://docs.cocos.com/creator/manual/en/scripting/life-cycle-callbacks.html -var __extends = (this && this.__extends) || (function () { - var extendStatics = function (d, b) { - extendStatics = Object.setPrototypeOf || - ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) || - function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; }; - return extendStatics(d, b); - }; - return function (d, b) { - extendStatics(d, b); - function __() { this.constructor = d; } - d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); - }; -})(); -var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) { - var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; - if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc); - else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; - return c > 3 && r && Object.defineProperty(target, key, r), r; -}; -Object.defineProperty(exports, "__esModule", { value: true }); -var _a = cc._decorator, ccclass = _a.ccclass, property = _a.property; -var Pause = /** @class */ (function (_super) { - __extends(Pause, _super); - function Pause() { - var _this = _super !== null && _super.apply(this, arguments) || this; - _this.time = 0; - _this.music = null; - _this.effect = null; - _this.vibrate = null; - _this.open = null; - _this.close = null; - // mapInfo: number[][] = []; - _this.musicState = true; - _this.effectState = true; - _this.vibrateState = true; - return _this; - // update (dt) {} - } - Pause.prototype.onLoad = function () { - if (cc.fx.GameConfig.GM_INFO.musicOpen) { - this.music.getComponent(cc.Sprite).spriteFrame = this.open; - this.music.x = 278; - } - else { - this.music.getComponent(cc.Sprite).spriteFrame = this.close; - this.music.x = 161; - } - if (cc.fx.GameConfig.GM_INFO.effectOpen) { - this.effect.getComponent(cc.Sprite).spriteFrame = this.open; - this.effect.x = 278; - } - else { - this.effect.getComponent(cc.Sprite).spriteFrame = this.close; - this.effect.x = 161; - } - if (cc.fx.GameConfig.GM_INFO.vibrateOpen) { - this.vibrate.getComponent(cc.Sprite).spriteFrame = this.open; - this.vibrate.x = 278; - } - else { - this.vibrate.getComponent(cc.Sprite).spriteFrame = this.close; - this.vibrate.x = 161; - } - this.musicState = cc.fx.GameConfig.GM_INFO.musicOpen; - this.effectState = cc.fx.GameConfig.GM_INFO.effectOpen; - this.vibrateState = cc.fx.GameConfig.GM_INFO.vibrateOpen; - }; - Pause.prototype.start = function () { - }; - Pause.prototype.init = function (time) { - }; - Pause.prototype.clickMusic = function () { - var _this = this; - if (this.musicState) { - this.musicState = false; - cc.fx.GameConfig.GM_INFO.musicOpen = this.musicState; - this.setMusicConfig(); - this.music.runAction(cc.sequence(cc.spawn(cc.moveTo(0.05, cc.v2(161, this.music.y)), cc.fadeOut(0.05)), cc.callFunc(function () { - _this.music.getComponent(cc.Sprite).spriteFrame = _this.close; - }), cc.fadeIn(0.1))); - cc.fx.AudioManager._instance.stopMusic(); - } - else { - this.musicState = true; - cc.fx.GameConfig.GM_INFO.musicOpen = this.musicState; - this.setMusicConfig(); - this.music.runAction(cc.sequence(cc.spawn(cc.moveTo(0.05, cc.v2(278, this.music.y)), cc.fadeOut(0.05)), cc.callFunc(function () { - _this.music.getComponent(cc.Sprite).spriteFrame = _this.open; - }), cc.fadeIn(0.1))); - cc.fx.AudioManager._instance.playMusicGame(); - } - }; - Pause.prototype.setMusicConfig = function () { - var audioInfo = { - "musicOpen": cc.fx.GameConfig.GM_INFO.musicOpen, - "effectOpen": cc.fx.GameConfig.GM_INFO.effectOpen, - "vibrateOpen": cc.fx.GameConfig.GM_INFO.vibrateOpen, - }; - cc.fx.StorageMessage.setStorage("music", audioInfo); - }; - Pause.prototype.clickEffect = function () { - var _this = this; - if (this.effectState) { - this.effectState = false; - cc.fx.GameConfig.GM_INFO.effectOpen = this.effectState; - this.setMusicConfig(); - this.effect.runAction(cc.sequence(cc.spawn(cc.moveTo(0.05, cc.v2(161, this.effect.y)), cc.fadeOut(0.05)), cc.callFunc(function () { - _this.effect.getComponent(cc.Sprite).spriteFrame = _this.close; - }), cc.fadeIn(0.1))); - } - else { - this.effectState = true; - cc.fx.GameConfig.GM_INFO.effectOpen = this.effectState; - this.setMusicConfig(); - this.effect.runAction(cc.sequence(cc.spawn(cc.moveTo(0.05, cc.v2(278, this.effect.y)), cc.fadeOut(0.05)), cc.callFunc(function () { - _this.effect.getComponent(cc.Sprite).spriteFrame = _this.open; - }), cc.fadeIn(0.1))); - } - }; - Pause.prototype.clickVibrate = function () { - var _this = this; - if (this.vibrateState) { - this.vibrateState = false; - cc.fx.GameConfig.GM_INFO.vibrateOpen = this.vibrateState; - this.setMusicConfig(); - this.vibrate.runAction(cc.sequence(cc.spawn(cc.moveTo(0.05, cc.v2(161, this.vibrate.y)), cc.fadeOut(0.05)), cc.callFunc(function () { - _this.vibrate.getComponent(cc.Sprite).spriteFrame = _this.close; - }), cc.fadeIn(0.1))); - } - else { - this.vibrateState = true; - cc.fx.GameConfig.GM_INFO.vibrateOpen = this.vibrateState; - this.setMusicConfig(); - this.vibrate.runAction(cc.sequence(cc.spawn(cc.moveTo(0.05, cc.v2(278, this.vibrate.y)), cc.fadeOut(0.05)), cc.callFunc(function () { - _this.vibrate.getComponent(cc.Sprite).spriteFrame = _this.open; - }), cc.fadeIn(0.1))); - } - }; - __decorate([ - property(cc.Node) - ], Pause.prototype, "music", void 0); - __decorate([ - property(cc.Node) - ], Pause.prototype, "effect", void 0); - __decorate([ - property(cc.Node) - ], Pause.prototype, "vibrate", void 0); - __decorate([ - property(cc.SpriteFrame) - ], Pause.prototype, "open", void 0); - __decorate([ - property(cc.SpriteFrame) - ], Pause.prototype, "close", void 0); - Pause = __decorate([ - ccclass - ], Pause); - return Pause; -}(cc.Component)); -exports.default = Pause; - -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,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImFzc2V0c1xcU2NyaXB0XFxQYXVzZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsb0JBQW9CO0FBQ3BCLHdFQUF3RTtBQUN4RSxtQkFBbUI7QUFDbkIsa0ZBQWtGO0FBQ2xGLDhCQUE4QjtBQUM5QixrRkFBa0Y7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUc1RSxJQUFBLEtBQXNCLEVBQUUsQ0FBQyxVQUFVLEVBQWxDLE9BQU8sYUFBQSxFQUFFLFFBQVEsY0FBaUIsQ0FBQztBQUkxQztJQUFtQyx5QkFBWTtJQUEvQztRQUFBLHFFQW1JQztRQWpJRyxVQUFJLEdBQVcsQ0FBQyxDQUFDO1FBR2pCLFdBQUssR0FBWSxJQUFJLENBQUM7UUFHdEIsWUFBTSxHQUFZLElBQUksQ0FBQztRQUd2QixhQUFPLEdBQVksSUFBSSxDQUFDO1FBR3hCLFVBQUksR0FBbUIsSUFBSSxDQUFDO1FBRzVCLFdBQUssR0FBbUIsSUFBSSxDQUFDO1FBRTdCLDRCQUE0QjtRQUU1QixnQkFBVSxHQUFZLElBQUksQ0FBQztRQUMzQixpQkFBVyxHQUFZLElBQUksQ0FBQztRQUM1QixrQkFBWSxHQUFZLElBQUksQ0FBQzs7UUEyRzdCLGlCQUFpQjtJQUNyQixDQUFDO0lBMUdHLHNCQUFNLEdBQU47UUFDSSxJQUFHLEVBQUUsQ0FBQyxFQUFFLENBQUMsVUFBVSxDQUFDLE9BQU8sQ0FBQyxTQUFTLEVBQUM7WUFDbEMsSUFBSSxDQUFDLEtBQUssQ0FBQyxZQUFZLENBQUMsRUFBRSxDQUFDLE1BQU0sQ0FBQyxDQUFDLFdBQVcsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDO1lBQzNELElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxHQUFHLEdBQUcsQ0FBQztTQUN0QjthQUNHO1lBQ0EsSUFBSSxDQUFDLEtBQUssQ0FBQyxZQUFZLENBQUMsRUFBRSxDQUFDLE1BQU0sQ0FBQyxDQUFDLFdBQVcsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDO1lBQzVELElBQUksQ0FB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Q0FBQztZQUN6RCxJQUFJLENBQUMsY0FBYyxFQUFFLENBQUM7WUFDdEIsSUFBSSxDQUFDLE9BQU8sQ0FBQyxTQUFTLENBQUMsRUFBRSxDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxNQUFNLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FBQyxFQUFFLENBQUMsR0FBRyxFQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDLEVBQUMsRUFBRSxDQUFDLFFBQVEsQ0FBQztnQkFDbEgsS0FBSSxDQUFDLE9BQU8sQ0FBQyxZQUFZLENBQUMsRUFBRSxDQUFDLE1BQU0sQ0FBQyxDQUFDLFdBQVcsR0FBRyxLQUFJLENBQUMsSUFBSSxDQUFDO1lBQ2pFLENBQUMsQ0FBQyxFQUFDLEVBQUUsQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFBO1NBQ3RCO0lBQ0wsQ0FBQztJQTNIRDtRQURDLFFBQVEsQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDO3dDQUNJO0lBR3RCO1FBREMsUUFBUSxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUM7eUNBQ0s7SUFHdkI7UUFEQyxRQUFRLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQzswQ0FDTTtJQUd4QjtRQURDLFFBQVEsQ0FBQyxFQUFFLENBQUMsV0FBVyxDQUFDO3VDQUNHO0lBRzVCO1FBREMsUUFBUSxDQUFDLEVBQUUsQ0FBQyxXQUFXLENBQUM7d0NBQ0k7SUFqQlosS0FBSztRQUR6QixPQUFPO09BQ2EsS0FBSyxDQW1JekI7SUFBRCxZQUFDO0NBbklELEFBbUlDLENBbklrQyxFQUFFLENBQUMsU0FBUyxHQW1JOUM7a0JBbklvQixLQUFLIiwiZmlsZSI6IiIsInNvdXJjZVJvb3QiOiIvIiwic291cmNlc0NvbnRlbnQiOlsiLy8gTGVhcm4gVHlwZVNjcmlwdDpcclxuLy8gIC0gaHR0cHM6Ly9kb2NzLmNvY29zLmNvbS9jcmVhdG9yL21hbnVhbC9lbi9zY3JpcHRpbmcvdHlwZXNjcmlwdC5odG1sXHJcbi8vIExlYXJuIEF0dHJpYnV0ZTpcclxuLy8gIC0gaHR0cHM6Ly9kb2NzLmNvY29zLmNvbS9jcmVhdG9yL21hbnVhbC9lbi9zY3JpcHRpbmcvcmVmZXJlbmNlL2F0dHJpYnV0ZXMuaHRtbFxyXG4vLyBMZWFybiBsaWZlLWN5Y2xlIGNhbGxiYWNrczpcclxuLy8gIC0gaHR0cHM6Ly9kb2NzLmNvY29zLmNvbS9jcmVhdG9yL21hbnVhbC9lbi9zY3JpcHRpbmcvbGlmZS1jeWNsZS1jYWxsYmFja3MuaHRtbFxyXG5cclxuXHJcbmNvbnN0IHtjY2NsYXNzLCBwcm9wZXJ0eX0gPSBjYy5fZGVjb3JhdG9yO1xyXG5cclxuXHJcbkBjY2NsYXNzXHJcbmV4cG9ydCBkZWZhdWx0IGNsYXNzIFBhdXNlIGV4dGVuZHMgY2MuQ29tcG9uZW50IHtcclxuICAgIHN0YXRpYyBfaW5zdGFuY2U6IGFueTtcclxuICAgIHRpbWU6IG51bWJlciA9IDA7XHJcblxyXG4gICAgQHByb3BlcnR5KGNjLk5vZGUpXHJcbiAgICBtdXNpYzogY2MuTm9kZSA9IG51bGw7XHJcblxyXG4gICAgQHByb3BlcnR5KGNjLk5vZGUpXHJcbiAgICBlZmZlY3Q6IGNjLk5vZGUgPSBudWxsO1xyXG5cclxuICAgIEBwcm9wZXJ0eShjYy5Ob2RlKVxyXG4gICAgdmlicmF0ZTogY2MuTm9kZSA9IG51bGw7XHJcblxyXG4gICAgQHByb3BlcnR5KGNjLlNwcml0ZUZyYW1lKVxyXG4gICAgb3BlbjogY2MuU3ByaXRlRnJhbWUgPSBudWxsO1xyXG5cclxuICAgIEBwcm9wZXJ0eShjYy5TcHJpdGVGcmFtZSlcclxuICAgIGNsb3NlOiBjYy5TcHJpdGVGcmFtZSA9IG51bGw7XHJcbiAgICBcclxuICAgIC8vIG1hcEluZm86IG51bWJlcltdW10gPSBbXTtcclxuXHJcbiAgICBtdXNpY1N0YXRlOiBib29sZWFuID0gdHJ1ZTtcclxuICAgIGVmZmVjdFN0YXRlOiBib29sZWFuID0gdHJ1ZTtcclxuICAgIHZpYnJhdGVTdGF0ZTogYm9vbGVhbiA9IHRydWU7XHJcblxyXG4gICAgb25Mb2FkICgpIHtcclxuICAgICAgICBpZihjYy5meC5HYW1lQ29uZmlnLkdNX0lORk8ubXVzaWNPcGVuKXtcclxuICAgICAgICAgICAgdGhpcy5tdXNpYy5nZXRDb21wb25lbnQoY2MuU3ByaXRlKS5zcHJpdGVGcmFtZSA9IHRoaXMub3BlbjtcclxuICAgICAgICAgICAgdGhpcy5tdXNpYy54ID0gMjc4O1xyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNle1xyXG4gICAgICAgICAgICB0aGlzLm11c2ljLmdldENvbXBvbmVudChjYy5TcHJpdGUpLnNwcml0ZUZyYW1lID0gdGhpcy5jbG9zZTtcclxuICAgICAgICAgICAgdGhpcy5tdXNpYy54ID0gMTYxO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZihjYy5meC5HYW1lQ29uZmlnLkdNX0lORk8uZWZmZWN0T3Blbil7XHJcbiAgICAgICAgICAgIHRoaXMuZWZmZWN0LmdldENvbXBvbmVudChjYy5TcHJpdGUpLnNwcml0ZUZyYW1lID0gdGhpcy5vcGVuO1xyXG4gICAgICAgICAgICB0aGlzLmVmZmVjdC54ID0gMjc4OyBcclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZXtcclxuICAgICAgICAgICAgdGhpcy5lZmZlY3QuZ2V0Q29tcG9uZW50KGNjLlNwcml0ZSkuc3ByaXRlRnJhbWUgPSB0aGlzLmNsb3NlO1xyXG4gICAgICAgICAgICB0aGlzLmVmZmVjdC54ID0gMTYxOyBcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYoY2MuZnguR2FtZUNvbmZpZy5HTV9JTkZPLnZpYnJhdGVPcGVuKXtcclxuICAgICAgICAgICAgdGhpcy52aWJyYXRlLmdldENvbXBvbmVudChjYy5TcHJpdGUpLnNwcml0ZUZyYW1lID0gdGhpcy5vcGVuO1xyXG4gICAgICAgICAgICB0aGlzLnZpYnJhdGUueCA9IDI3ODsgXHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2V7XHJcbiAgICAgICAgICAgIHRoaXMudmlicmF0ZS5nZXRDb21wb25lbnQoY2MuU3ByaXRlKS5zcHJpdGVGcmFtZSA9IHRoaXMuY2xvc2U7IFxyXG4gICAgICAgICAgICB0aGlzLnZpYnJhdGUueCA9IDE2MTtcclxuICAgICAgICB9XHJcbiAgICAgICAgdGhpcy5tdXNpY1N0YXRlID0gY2MuZnguR2FtZUNvbmZpZy5HTV9JTkZPLm11c2ljT3BlbjtcclxuICAgICAgICB0aGlzLmVmZmVjdFN0YXRlID0gY2MuZnguR2FtZUNvbmZpZy5HTV9JTkZPLmVmZmVjdE9wZW47XHJcbiAgICAgICAgdGhpcy52aWJyYXRlU3RhdGUgPSBjYy5meC5HYW1lQ29uZmlnLkdNX0lORk8udmlicmF0ZU9wZW47XHJcbiAgICB9IFxyXG5cclxuICAgIHN0YXJ0ICgpIHtcclxuICAgIH1cclxuXHJcbiAgICBpbml0KHRpbWUpe1xyXG5cclxuICAgIH1cclxuICAgIFxyXG4gICAgY2xpY2tNdXNpYygpe1xyXG4gICAgICAgIGlmKHRoaXMubXVzaWNTdGF0ZSl7XHJcbiAgICAgICAgICAgIHRoaXMubXVzaWNTdGF0ZSA9IGZhbHNlO1xyXG4gICAgICAgICAgICBjYy5meC5HYW1lQ29uZmlnLkdNX0lORk8ubXVzaWNPcGVuID0gdGhpcy5tdXNpY1N0YXRlO1xyXG4gICAgICAgICAgICB0aGlzLnNldE11c2ljQ29uZmlnKCk7XHJcbiAgICAgICAgICAgIHRoaXMubXVzaWMucnVuQWN0aW9uKGNjLnNlcXVlbmNlKGNjLnNwYXduKGNjLm1vdmVUbygwLjA1LCBjYy52MigxNjEsdGhpcy5tdXNpYy55KSksIGNjLmZhZGVPdXQoMC4wNSkpLGNjLmNhbGxGdW5jKCgpPT57XHJcbiAgICAgICAgICAgICAgICB0aGlzLm11c2ljLmdldENvbXBvbmVudChjYy5TcHJpdGUpLnNwcml0ZUZyYW1lID0gdGhpcy5jbG9zZTtcclxuICAgICAgICAgICAgfSksY2MuZmFkZUluKDAuMSkpKVxyXG4gICAgICAgICAgICBjYy5meC5BdWRpb01hbmFnZXIuX2luc3RhbmNlLnN0b3BNdXNpYygpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNle1xyXG4gICAgICAgICAgICB0aGlzLm11c2ljU3RhdGUgPSB0cnVlO1xyXG4gICAgICAgICAgICBjYy5meC5HYW1lQ29uZmlnLkdNX0lORk8ubXVzaWNPcGVuID0gdGhpcy5tdXNpY1N0YXRlO1xyXG4gICAgICAgICAgICB0aGlzLnNldE11c2ljQ29uZmlnKCk7XHJcbiAgICAgICAgICAgIHRoaXMubXVzaWMucnVuQWN0aW9uKGNjLnNlcXVlbmNlKGNjLnNwYXduKGNjLm1vdmVUbygwLjA1LCBjYy52MigyNzgsdGhpcy5tdXNpYy55KSksIGNjLmZhZGVPdXQoMC4wNSkpLGNjLmNhbGxGdW5jKCgpPT57XHJcbiAgICAgICAgICAgICAgICB0aGlzLm11c2ljLmdldENvbXBvbmVudChjYy5TcHJpdGUpLnNwcml0ZUZyYW1lID0gdGhpcy5vcGVuO1xyXG4gICAgICAgICAgICB9KSxjYy5mYWRlSW4oMC4xKSkpXHJcbiAgICAgICAgICAgIGNjLmZ4LkF1ZGlvTWFuYWdlci5faW5zdGFuY2UucGxheU11c2ljR2FtZSgpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBzZXRNdXNpY0NvbmZpZygpe1xyXG4gICAgICAgIGxldCBhdWRpb0luZm8gPSB7XHJcbiAgICAgICAgICAgIFwibXVzaWNPcGVuXCI6IGNjLmZ4LkdhbWVDb25maWcuR01fSU5GTy5tdXNpY09wZW4sICAgICAgICAgICAgIC8v6Z+z5LmQXHJcbiAgICAgICAgICAgIFwiZWZmZWN0T3BlblwiOiBjYy5meC5HYW1lQ29uZmlnLkdNX0lORk8uZWZmZWN0T3BlbiwgICAgICAgICAgICAvL+mfs+aViFxyXG4gICAgICAgICAgICBcInZpYnJhdGVPcGVuXCI6IGNjLmZ4LkdhbWVDb25maWcuR01fSU5GTy52aWJyYXRlT3BlbiwgICAgICAgICAgIC8v6ZyH5YqoXHJcbiAgICAgICAgfVxyXG4gICAgICAgIGNjLmZ4LlN0b3JhZ2VNZXNzYWdlLnNldFN0b3JhZ2UoXCJtdXNpY1wiLGF1ZGlvSW5mbyk7XHJcbiAgICB9XHJcblxyXG4gICAgY2xpY2tFZmZlY3QoKXtcclxuICAgICAgICBpZih0aGlzLmVmZmVjdFN0YXRlKXtcclxuICAgICAgICAgICAgdGhpcy5lZmZlY3RTdGF0ZSA9IGZhbHNlO1xyXG4gICAgICAgICAgICBjYy5meC5HYW1lQ29uZmlnLkdNX0lORk8uZWZmZWN0T3BlbiA9IHRoaXMuZWZmZWN0U3RhdGU7XHJcbiAgICAgICAgICAgIHRoaXMuc2V0TXVzaWNDb25maWcoKTtcclxuICAgICAgICAgICAgdGhpcy5lZmZlY3QucnVuQWN0aW9uKGNjLnNlcXVlbmNlKGNjLnNwYXduKGNjLm1vdmVUbygwLjA1LCBjYy52MigxNjEsdGhpcy5lZmZlY3QueSkpLCBjYy5mYWRlT3V0KDAuMDUpKSxjYy5jYWxsRnVuYygoKT0+e1xyXG4gICAgICAgICAgICAgICAgdGhpcy5lZmZlY3QuZ2V0Q29tcG9uZW50KGNjLlNwcml0ZSkuc3ByaXRlRnJhbWUgPSB0aGlzLmNsb3NlO1xyXG4gICAgICAgICAgICB9KSxjYy5mYWRlSW4oMC4xKSkpXHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2V7XHJcbiAgICAgICAgICAgIHRoaXMuZWZmZWN0U3RhdGUgPSB0cnVlO1xyXG4gICAgICAgICAgICBjYy5meC5HYW1lQ29uZmlnLkdNX0lORk8uZWZmZWN0T3BlbiA9IHRoaXMuZWZmZWN0U3RhdGU7XHJcbiAgICAgICAgICAgIHRoaXMuc2V0TXVzaWNDb25maWcoKTtcclxuICAgICAgICAgICAgdGhpcy5lZmZlY3QucnVuQWN0aW9uKGNjLnNlcXVlbmNlKGNjLnNwYXduKGNjLm1vdmVUbygwLjA1LCBjYy52MigyNzgsdGhpcy5lZmZlY3QueSkpLCBjYy5mYWRlT3V0KDAuMDUpKSxjYy5jYWxsRnVuYygoKT0+e1xyXG4gICAgICAgICAgICAgICAgdGhpcy5lZmZlY3QuZ2V0Q29tcG9uZW50KGNjLlNwcml0ZSkuc3ByaXRlRnJhbWUgPSB0aGlzLm9wZW47XHJcbiAgICAgICAgICAgIH0pLGNjLmZhZGVJbigwLjEpKSlcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgY2xpY2tWaWJyYXRlKCl7XHJcbiAgICAgICAgaWYodGhpcy52aWJyYXRlU3RhdGUpe1xyXG4gICAgICAgICAgICB0aGlzLnZpYnJhdGVTdGF0ZSA9IGZhbHNlOyBcclxuICAgICAgICAgICAgY2MuZnguR2FtZUNvbmZpZy5HTV9JTkZPLnZpYnJhdGVPcGVuID0gdGhpcy52aWJyYXRlU3RhdGU7XHJcbiAgICAgICAgICAgIHRoaXMuc2V0TXVzaWNDb25maWcoKTtcclxuICAgICAgICAgICAgdGhpcy52aWJyYXRlLnJ1bkFjdGlvbihjYy5zZXF1ZW5jZShjYy5zcGF3bihjYy5tb3ZlVG8oMC4wNSwgY2MudjIoMTYxLHRoaXMudmlicmF0ZS55KSksIGNjLmZhZGVPdXQoMC4wNSkpLGNjLmNhbGxGdW5jKCgpPT57XHJcbiAgICAgICAgICAgICAgICB0aGlzLnZpYnJhdGUuZ2V0Q29tcG9uZW50KGNjLlNwcml0ZSkuc3ByaXRlRnJhbWUgPSB0aGlzLmNsb3NlO1xyXG4gICAgICAgICAgICB9KSxjYy5mYWRlSW4oMC4xKSkpXHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2V7XHJcbiAgICAgICAgICAgIHRoaXMudmlicmF0ZVN0YXRlID0gdHJ1ZTtcclxuICAgICAgICAgICAgY2MuZnguR2FtZUNvbmZpZy5HTV9JTkZPLnZpYnJhdGVPcGVuID0gdGhpcy52aWJyYXRlU3RhdGU7XHJcbiAgICAgICAgICAgIHRoaXMuc2V0TXVzaWNDb25maWcoKTtcclxuICAgICAgICAgICAgdGhpcy52aWJyYXRlLnJ1bkFjdGlvbihjYy5zZXF1ZW5jZShjYy5zcGF3bihjYy5tb3ZlVG8oMC4wNSwgY2MudjIoMjc4LHRoaXMudmlicmF0ZS55KSksIGNjLmZhZGVPdXQoMC4wNSkpLGNjLmNhbGxGdW5jKCgpPT57XHJcbiAgICAgICAgICAgICAgICB0aGlzLnZpYnJhdGUuZ2V0Q29tcG9uZW50KGNjLlNwcml0ZSkuc3ByaXRlRnJhbWUgPSB0aGlzLm9wZW47XHJcbiAgICAgICAgICAgIH0pLGNjLmZhZGVJbigwLjEpKSlcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgLy8gdXBkYXRlIChkdCkge31cclxufVxyXG4iXX0= -//------QC-SOURCE-SPLIT------ - - (function() { - var nodeEnv = typeof require !== 'undefined' && typeof process !== 'undefined'; - var __module = nodeEnv ? module : {exports:{}}; - var __filename = 'preview-scripts/assets/Script/peizhi.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, '7d800jRKkRGfqSS3fhSet26', 'peizhi'); -// Script/peizhi.ts - -"use strict"; -var __extends = (this && this.__extends) || (function () { - var extendStatics = function (d, b) { - extendStatics = Object.setPrototypeOf || - ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) || - function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; }; - return extendStatics(d, b); - }; - return function (d, b) { - extendStatics(d, b); - function __() { this.constructor = d; } - d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); - }; -})(); -var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) { - var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; - if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc); - else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; - return c > 3 && r && Object.defineProperty(target, key, r), r; -}; -Object.defineProperty(exports, "__esModule", { value: true }); -var _a = cc._decorator, ccclass = _a.ccclass, property = _a.property, requireComponent = _a.requireComponent; -var NewClass = /** @class */ (function (_super) { - __extends(NewClass, _super); - function NewClass() { - var _this = _super !== null && _super.apply(this, arguments) || this; - _this.node1 = null; - _this.node2 = null; - _this.node3 = null; - _this.localTest = false; - _this.clientTestVersion = "1.0.0"; - _this.testVersion = null; - return _this; - // 3月17日 - 3月21日 工作完成内容 - // 1:游戏框架搭建 - // 2:制作18个基础方块预制体 (方块可编辑颜色与道具和状态) - // 3:完成地图的搭建,可配置8*8以内,任意组合,包括可缺口和障碍物配置 - // 4:完成地图墙面建立,根据 ↑3上面构建的地图自动生成墙体。 - // 5:做完方块的基础移动,跟随手指,遇到方块或者墙壁或者障碍物阻碍移动。 - // 6:方块的自动落点做完11个基础方块的(未做完还差11个) - // 3月24日 - 3月28日 预计完成目标 - // 1:完成全部方块的落点。 - // 2:完成门的搭建,门可选颜色,可选开关或者星星等特殊状态 - // 3:完成方块通过门的游戏逻辑,使游戏可以最基础运行玩起来 - // 4:出5关版本,配合小白备案审核。 - // 5:根据方块,地图,以及道具,制作地图编辑器 (方块和地图制作的时候都已经考虑到编辑器的需求了) - // 优先制作,后续开发拓展玩法功能时,小白可同步进行制作关卡。 - } - NewClass.prototype.start = function () { - // cc.fx.AudioManager.Instance.init(); - // this.testVersion.string = this.clientTestVersion; - // cc.director.loadScene("GameScene"); - // cc.director.preloadScene("GameScene", ()=>{ - // // debugger; - // }) - }; - //判断来源 - NewClass.prototype.containsTrain = function (str) { - return /from=train/i.test(str); - }; - //开始游戏,跳转至引导页面 - NewClass.prototype.startGame = function () { - cc.director.loadScene("GameScene"); - // cc.director.loadScene("GuideScene"); - }; - //备用,用来测试跳转 指定关卡 - NewClass.prototype.clickBtn = function (event, data) { - cc.fx.GameConfig.GM_INFO.custom = parseInt(data); - cc.director.loadScene("GameScene"); - }; - //打开排行榜 - NewClass.prototype.openRank = function () { - cc.director.loadScene("RankScene"); - }; - NewClass.prototype.update = function (dt) { - }; - __decorate([ - property(cc.Node) - ], NewClass.prototype, "node1", void 0); - __decorate([ - property(cc.Node) - ], NewClass.prototype, "node2", void 0); - __decorate([ - property(cc.Node) - ], NewClass.prototype, "node3", void 0); - __decorate([ - property(false) - ], NewClass.prototype, "localTest", void 0); - __decorate([ - property("") - ], NewClass.prototype, "clientTestVersion", void 0); - __decorate([ - property(cc.Label) - ], NewClass.prototype, "testVersion", void 0); - NewClass = __decorate([ - ccclass - ], NewClass); - return NewClass; -}(cc.Component)); -exports.default = NewClass; - -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,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImFzc2V0c1xcU2NyaXB0XFxwZWl6aGkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBRU0sSUFBQSxLQUF3QyxFQUFFLENBQUMsVUFBVSxFQUFwRCxPQUFPLGFBQUEsRUFBRSxRQUFRLGNBQUEsRUFBRSxnQkFBZ0Isc0JBQWlCLENBQUM7QUFHNUQ7SUFBc0MsNEJBQVk7SUFBbEQ7UUFBQSxxRUE0RUM7UUF4RUcsV0FBSyxHQUFZLElBQUksQ0FBQztRQUd0QixXQUFLLEdBQVksSUFBSSxDQUFDO1FBR3RCLFdBQUssR0FBWSxJQUFJLENBQUM7UUFHdEIsZUFBUyxHQUFZLEtBQUssQ0FBQztRQUczQix1QkFBaUIsR0FBVyxPQUFPLENBQUM7UUFHcEMsaUJBQVcsR0FBYSxJQUFJLENBQUM7O1FBd0NqQywyQkFBMkI7UUFFM0IsV0FBVztRQUNYLGlDQUFpQztRQUNqQyxzQ0FBc0M7UUFDdEMsaUNBQWlDO1FBQ2pDLHNDQUFzQztRQUN0QyxnQ0FBZ0M7UUFFaEMsdUJBQXVCO1FBRXZCLGVBQWU7UUFDZiwrQkFBK0I7UUFDL0IsK0JBQStCO1FBQy9CLG9CQUFvQjtRQUNwQixvREFBb0Q7UUFDcEQsaUNBQWlDO0lBQ2pDLENBQUM7SUF2REcsd0JBQUssR0FBTDtRQUVJLHNDQUFzQztRQUN0QyxvREFBb0Q7UUFFcEQsc0NBQXNDO1FBRXRDLDhDQUE4QztRQUM5QyxtQkFBbUI7UUFFbkIsS0FBSztJQUNULENBQUM7SUFFRCxNQUFNO0lBQ04sZ0NBQWEsR0FBYixVQUFjLEdBQUc7UUFFYixPQUFPLGFBQWEsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDbkMsQ0FBQztJQUVELGNBQWM7SUFDZCw0QkFBUyxHQUFUO1FBQ0ksRUFBRSxDQUFDLFFBQVEsQ0FBQyxTQUFTLENBQUMsV0FBVyxDQUFDLENBQUM7UUFDbkMsdUNBQXVDO0lBQzNDLENBQUM7SUFDRCxnQkFBZ0I7SUFDaEIsMkJBQVEsR0FBUixVQUFTLEtBQUssRUFBQyxJQUFJO1FBQ2YsRUFBRSxDQUFDLEVBQUUsQ0FBQyxVQUFVLENBQUMsT0FBTyxDQUFDLE1BQU0sR0FBRyxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDakQsRUFBRSxDQUFDLFFBQVEsQ0FBQyxTQUFTLENBQUMsV0FBVyxDQUFDLENBQUM7SUFDdkMsQ0FBQztJQUNELE9BQU87SUFDUCwyQkFBUSxHQUFSO1FBQ0ksRUFBRSxDQUFDLFFBQVEsQ0FBQyxTQUFTLENBQUMsV0FBVyxDQUFDLENBQUM7SUFDdkMsQ0FBQztJQUdTLHlCQUFNLEdBQWhCLFVBQWlCLEVBQVU7SUFDM0IsQ0FBQztJQXJERDtRQURDLFFBQVEsQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDOzJDQUNJO0lBR3RCO1FBREMsUUFBUSxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUM7MkNBQ0k7SUFHdEI7UUFEQyxRQUFRLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQzsyQ0FDSTtJQUd0QjtRQURDLFFBQVEsQ0FBQyxLQUFLLENBQUM7K0NBQ1c7SUFHM0I7UUFEQyxRQUFRLENBQUMsRUFBRSxDQUFDO3VEQUN1QjtJQUdwQztRQURDLFFBQVEsQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDO2lEQUNVO0lBbkJaLFFBQVE7UUFENUIsT0FBTztPQUNhLFFBQVEsQ0E0RTVCO0lBQUQsZUFBQztDQTVFRCxBQTRFQyxDQTVFcUMsRUFBRSxDQUFDLFNBQVMsR0E0RWpEO2tCQTVFb0IsUUFBUSIsImZpbGUiOiIiLCJzb3VyY2VSb290IjoiLyIsInNvdXJjZXNDb250ZW50IjpbIlxyXG5cclxuY29uc3Qge2NjY2xhc3MsIHByb3BlcnR5LCByZXF1aXJlQ29tcG9uZW50fSA9IGNjLl9kZWNvcmF0b3I7XHJcblxyXG5AY2NjbGFzc1xyXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBOZXdDbGFzcyBleHRlbmRzIGNjLkNvbXBvbmVudCB7XHJcblxyXG5cclxuICAgIEBwcm9wZXJ0eShjYy5Ob2RlKVxyXG4gICAgbm9kZTE6IGNjLk5vZGUgPSBudWxsO1xyXG5cclxuICAgIEBwcm9wZXJ0eShjYy5Ob2RlKVxyXG4gICAgbm9kZTI6IGNjLk5vZGUgPSBudWxsO1xyXG5cclxuICAgIEBwcm9wZXJ0eShjYy5Ob2RlKVxyXG4gICAgbm9kZTM6IGNjLk5vZGUgPSBudWxsO1xyXG5cclxuICAgIEBwcm9wZXJ0eShmYWxzZSlcclxuICAgIGxvY2FsVGVzdDogYm9vbGVhbiA9IGZhbHNlO1xyXG5cclxuICAgIEBwcm9wZXJ0eShcIlwiKVxyXG4gICAgY2xpZW50VGVzdFZlcnNpb246IHN0cmluZyA9IFwiMS4wLjBcIjtcclxuXHJcbiAgICBAcHJvcGVydHkoY2MuTGFiZWwpXHJcbiAgICB0ZXN0VmVyc2lvbjogY2MuTGFiZWwgPSBudWxsO1xyXG5cclxuICAgIHN0YXJ0ICgpIHtcclxuXHJcbiAgICAgICAgLy8gY2MuZnguQXVkaW9NYW5hZ2VyLkluc3RhbmNlLmluaXQoKTtcclxuICAgICAgICAvLyB0aGlzLnRlc3RWZXJzaW9uLnN0cmluZyA9IHRoaXMuY2xpZW50VGVzdFZlcnNpb247XHJcblxyXG4gICAgICAgIC8vIGNjLmRpcmVjdG9yLmxvYWRTY2VuZShcIkdhbWVTY2VuZVwiKTtcclxuXHJcbiAgICAgICAgLy8gY2MuZGlyZWN0b3IucHJlbG9hZFNjZW5lKFwiR2FtZVNjZW5lXCIsICgpPT57XHJcbiAgICAgICAgLy8gICAgIC8vIGRlYnVnZ2VyO1xyXG4gICAgICAgICBcclxuICAgICAgICAvLyB9KVxyXG4gICAgfVxyXG5cclxuICAgIC8v5Yik5pat5p2l5rqQXHJcbiAgICBjb250YWluc1RyYWluKHN0cikge1xyXG4gICAgXHJcbiAgICAgICAgcmV0dXJuIC9mcm9tPXRyYWluL2kudGVzdChzdHIpO1xyXG4gICAgfVxyXG5cclxuICAgIC8v5byA5aeL5ri45oiP77yM6Lez6L2s6Iez5byV5a+86aG16Z2iXHJcbiAgICBzdGFydEdhbWUoKXtcclxuICAgICAgICBjYy5kaXJlY3Rvci5sb2FkU2NlbmUoXCJHYW1lU2NlbmVcIik7XHJcbiAgICAgICAgLy8gY2MuZGlyZWN0b3IubG9hZFNjZW5lKFwiR3VpZGVTY2VuZVwiKTtcclxuICAgIH1cclxuICAgIC8v5aSH55So77yM55So5p2l5rWL6K+V6Lez6L2sIOaMh+WumuWFs+WNoVxyXG4gICAgY2xpY2tCdG4oZXZlbnQsZGF0YSl7XHJcbiAgICAgICAgY2MuZnguR2FtZUNvbmZpZy5HTV9JTkZPLmN1c3RvbSA9IHBhcnNlSW50KGRhdGEpO1xyXG4gICAgICAgIGNjLmRpcmVjdG9yLmxvYWRTY2VuZShcIkdhbWVTY2VuZVwiKTtcclxuICAgIH0gICBcclxuICAgIC8v5omT5byA5o6S6KGM5qacXHJcbiAgICBvcGVuUmFuaygpe1xyXG4gICAgICAgIGNjLmRpcmVjdG9yLmxvYWRTY2VuZShcIlJhbmtTY2VuZVwiKTtcclxuICAgIH1cclxuXHJcbiAgICBcclxuICAgIHByb3RlY3RlZCB1cGRhdGUoZHQ6IG51bWJlcik6IHZvaWQge1xyXG4gICAgfVxyXG4gICAgXHJcbi8vICAgICAz5pyIMTfml6UgLSAz5pyIMjHml6Ug5bel5L2c5a6M5oiQ5YaF5a65XHJcblxyXG4vLyAx77ya5ri45oiP5qGG5p625pCt5bu6XHJcbi8vIDLvvJrliLbkvZwxOOS4quWfuuehgOaWueWdl+mihOWItuS9kyAo5pa55Z2X5Y+v57yW6L6R6aKc6Imy5LiO6YGT5YW35ZKM54q25oCBKVxyXG4vLyAz77ya5a6M5oiQ5Zyw5Zu+55qE5pCt5bu677yM5Y+v6YWN572uOCo45Lul5YaF77yM5Lu75oSP57uE5ZCI77yM5YyF5ous5Y+v57y65Y+j5ZKM6Zqc56KN54mp6YWN572uXHJcbi8vIDTvvJrlrozmiJDlnLDlm77lopnpnaLlu7rnq4vvvIzmoLnmja4g4oaRM+S4iumdouaehOW7uueahOWcsOWbvuiHquWKqOeUn+aIkOWimeS9k+OAglxyXG4vLyA177ya5YGa5a6M5pa55Z2X55qE5Z+656GA56e75Yqo77yM6Lef6ZqP5omL5oyH77yM6YGH5Yiw5pa55Z2X5oiW6ICF5aKZ5aOB5oiW6ICF6Zqc56KN54mp6Zi756KN56e75Yqo44CCXHJcbi8vIDbvvJrmlrnlnZfnmoToh6rliqjokL3ngrnlgZrlrowxMeS4quWfuuehgOaWueWdl+eahO+8iOacquWBmuWujOi/mOW3rjEx5Liq77yJXHJcblxyXG4vLyAz5pyIMjTml6UgLSAz5pyIMjjml6Ug6aKE6K6h5a6M5oiQ55uu5qCHXHJcblxyXG4vLyAx77ya5a6M5oiQ5YWo6YOo5pa55Z2X55qE6JC954K544CCXHJcbi8vIDLvvJrlrozmiJDpl6jnmoTmkK3lu7rvvIzpl6jlj6/pgInpopzoibLvvIzlj6/pgInlvIDlhbPmiJbogIXmmJ/mmJ/nrYnnibnmrornirbmgIFcclxuLy8gM++8muWujOaIkOaWueWdl+mAmui/h+mXqOeahOa4uOaIj+mAu+i+ke+8jOS9v+a4uOaIj+WPr+S7peacgOWfuuehgOi/kOihjOeOqei1t+adpVxyXG4vLyA077ya5Ye6NeWFs+eJiOacrO+8jOmFjeWQiOWwj+eZveWkh+ahiOWuoeaguOOAglxyXG4vLyA177ya5qC55o2u5pa55Z2X77yM5Zyw5Zu+77yM5Lul5Y+K6YGT5YW377yM5Yi25L2c5Zyw5Zu+57yW6L6R5ZmoICjmlrnlnZflkozlnLDlm77liLbkvZznmoTml7blgJnpg73lt7Lnu4/ogIPomZHliLDnvJbovpHlmajnmoTpnIDmsYLkuoYpIFxyXG4vLyBcdOS8mOWFiOWItuS9nO+8jOWQjue7reW8gOWPkeaLk+WxleeOqeazleWKn+iDveaXtu+8jOWwj+eZveWPr+WQjOatpei/m+ihjOWItuS9nOWFs+WNoeOAglxyXG59XHJcbiJdfQ== -//------QC-SOURCE-SPLIT------ - - (function() { - var nodeEnv = typeof require !== 'undefined' && typeof process !== 'undefined'; - var __module = nodeEnv ? module : {exports:{}}; - var __filename = 'preview-scripts/assets/Script/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, '3bad2uyOw5MzLq3b5g9aHn2', 'Window'); -// Script/Window.ts - -"use strict"; -// Learn TypeScript: -// - https://docs.cocos.com/creator/manual/en/scripting/typescript.html -// Learn Attribute: -// - https://docs.cocos.com/creator/manual/en/scripting/reference/attributes.html -// Learn life-cycle callbacks: -// - https://docs.cocos.com/creator/manual/en/scripting/life-cycle-callbacks.html -var __extends = (this && this.__extends) || (function () { - var extendStatics = function (d, b) { - extendStatics = Object.setPrototypeOf || - ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) || - function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; }; - return extendStatics(d, b); - }; - return function (d, b) { - extendStatics(d, b); - function __() { this.constructor = d; } - d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); - }; -})(); -var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) { - var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; - if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc); - else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; - return c > 3 && r && Object.defineProperty(target, key, r), r; -}; -Object.defineProperty(exports, "__esModule", { value: true }); -var _a = cc._decorator, ccclass = _a.ccclass, property = _a.property; -var NewClass = /** @class */ (function (_super) { - __extends(NewClass, _super); - function NewClass() { - return _super !== null && _super.apply(this, arguments) || this; - } - // LIFE-CYCLE CALLBACKS: - NewClass.prototype.onLoad = function () { - this.can_Touch = false; - }; - NewClass.prototype.start = function () { - }; - NewClass.prototype.init = function (data) { - var _this = this; - this.can_Touch = false; - this.node.getChildByName("win").active = false; - this.node.getChildByName("lose").active = false; - this.node.getChildByName("finishi").active = false; - this.node.getChildByName(data.result).active = true; - if (data.result == "lose") { - this.setErrLabel(data.code); - } - var target = this.node.getChildByName(data.result); - target.getChildByName("btn").active = false; - target.opacity = 0; - target.scale = 2; - target.getChildByName("tip").opacity = 0; - if (data.result == "win") { - var lianXi = false; - if (cc.fx.GameConfig.GM_INFO.level == 2) - lianXi = true; - target.getChildByName("yes").active = !lianXi; - target.getChildByName("start").active = lianXi; - } - cc.tween(target) - .delay(0.1) - .to(0.25, { opacity: 255, scale: 1 }) - .delay(0.3) - .call(function () { - if (target.name == "lose") { - cc.tween(target.getChildByName("tip")) - .to(0.5, { opacity: 255 }) - .delay(0.5) - .call(function () { - _this.can_Touch = true; - target.getChildByName("btn").active = true; - }) - .start(); - } - else { - _this.can_Touch = true; - target.getChildByName("btn").active = true; - } - }) - .start(); - }; - NewClass.prototype.setErrLabel = function (code) { - var tip = this.node.getChildByName("lose").getChildByName("tip").getComponent(cc.Label); - tip.string = cc.fx.GameConfig.TIP_ERR[code]; - }; - NewClass.prototype.click_Next = function () { - var _this = this; - if (!this.can_Touch) { - return; - } - this.can_Touch = false; - cc.tween(this.node) - .to(0.3, { opacity: 0 }) - .call(function () { - _this.node.active = false; - cc.director.loadScene("GameScene"); - }) - .start(); - }; - NewClass = __decorate([ - ccclass - ], NewClass); - return NewClass; -}(cc.Component)); -exports.default = NewClass; - -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,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImFzc2V0c1xcU2NyaXB0XFxXaW5kb3cudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLG9CQUFvQjtBQUNwQix3RUFBd0U7QUFDeEUsbUJBQW1CO0FBQ25CLGtGQUFrRjtBQUNsRiw4QkFBOEI7QUFDOUIsa0ZBQWtGOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFFNUUsSUFBQSxLQUFzQixFQUFFLENBQUMsVUFBVSxFQUFsQyxPQUFPLGFBQUEsRUFBRSxRQUFRLGNBQWlCLENBQUM7QUFHMUM7SUFBc0MsNEJBQVk7SUFBbEQ7O0lBMkVBLENBQUM7SUF4RUcsd0JBQXdCO0lBRXhCLHlCQUFNLEdBQU47UUFDSSxJQUFJLENBQUMsU0FBUyxHQUFHLEtBQUssQ0FBQztJQUMzQixDQUFDO0lBRUQsd0JBQUssR0FBTDtJQUVBLENBQUM7SUFFRCx1QkFBSSxHQUFKLFVBQUssSUFBSTtRQUFULGlCQXdDQztRQXZDRyxJQUFJLENBQUMsU0FBUyxHQUFHLEtBQUssQ0FBQztRQUN2QixJQUFJLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxNQUFNLEdBQUcsS0FBSyxDQUFDO1FBQy9DLElBQUksQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLE1BQU0sQ0FBQyxDQUFDLE1BQU0sR0FBRyxLQUFLLENBQUM7UUFDaEQsSUFBSSxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsU0FBUyxDQUFDLENBQUMsTUFBTSxHQUFHLEtBQUssQ0FBQztRQUNuRCxJQUFJLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQztRQUNwRCxJQUFHLElBQUksQ0FBQyxNQUFNLElBQUksTUFBTSxFQUFDO1lBQ3JCLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO1NBQy9CO1FBQ0QsSUFBSSxNQUFNLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FB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Q0FBQztJQUNiLENBQUM7SUF4RWdCLFFBQVE7UUFENUIsT0FBTztPQUNhLFFBQVEsQ0EyRTVCO0lBQUQsZUFBQztDQTNFRCxBQTJFQyxDQTNFcUMsRUFBRSxDQUFDLFNBQVMsR0EyRWpEO2tCQTNFb0IsUUFBUSIsImZpbGUiOiIiLCJzb3VyY2VSb290IjoiLyIsInNvdXJjZXNDb250ZW50IjpbIi8vIExlYXJuIFR5cGVTY3JpcHQ6XHJcbi8vICAtIGh0dHBzOi8vZG9jcy5jb2Nvcy5jb20vY3JlYXRvci9tYW51YWwvZW4vc2NyaXB0aW5nL3R5cGVzY3JpcHQuaHRtbFxyXG4vLyBMZWFybiBBdHRyaWJ1dGU6XHJcbi8vICAtIGh0dHBzOi8vZG9jcy5jb2Nvcy5jb20vY3JlYXRvci9tYW51YWwvZW4vc2NyaXB0aW5nL3JlZmVyZW5jZS9hdHRyaWJ1dGVzLmh0bWxcclxuLy8gTGVhcm4gbGlmZS1jeWNsZSBjYWxsYmFja3M6XHJcbi8vICAtIGh0dHBzOi8vZG9jcy5jb2Nvcy5jb20vY3JlYXRvci9tYW51YWwvZW4vc2NyaXB0aW5nL2xpZmUtY3ljbGUtY2FsbGJhY2tzLmh0bWxcclxuXHJcbmNvbnN0IHtjY2NsYXNzLCBwcm9wZXJ0eX0gPSBjYy5fZGVjb3JhdG9yO1xyXG5cclxuQGNjY2xhc3NcclxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgTmV3Q2xhc3MgZXh0ZW5kcyBjYy5Db21wb25lbnQge1xyXG4gICAgY2FuX1RvdWNoOiBib29sZWFuO1xyXG5cclxuICAgIC8vIExJRkUtQ1lDTEUgQ0FMTEJBQ0tTOlxyXG5cclxuICAgIG9uTG9hZCAoKSB7XHJcbiAgICAgICAgdGhpcy5jYW5fVG91Y2ggPSBmYWxzZTtcclxuICAgIH1cclxuXHJcbiAgICBzdGFydCAoKSB7XHJcblxyXG4gICAgfVxyXG5cclxuICAgIGluaXQoZGF0YSl7XHJcbiAgICAgICAgdGhpcy5jYW5fVG91Y2ggPSBmYWxzZTtcclxuICAgICAgICB0aGlzLm5vZGUuZ2V0Q2hpbGRCeU5hbWUoXCJ3aW5cIikuYWN0aXZlID0gZmFsc2U7XHJcbiAgICAgICAgdGhpcy5ub2RlLmdldENoaWxkQnlOYW1lKFwibG9zZVwiKS5hY3RpdmUgPSBmYWxzZTtcclxuICAgICAgICB0aGlzLm5vZGUuZ2V0Q2hpbGRCeU5hbWUoXCJmaW5pc2hpXCIpLmFjdGl2ZSA9IGZhbHNlO1xyXG4gICAgICAgIHRoaXMubm9kZS5nZXRDaGlsZEJ5TmFtZShkYXRhLnJlc3VsdCkuYWN0aXZlID0gdHJ1ZTtcclxuICAgICAgICBpZihkYXRhLnJlc3VsdCA9PSBcImxvc2VcIil7XHJcbiAgICAgICAgICAgIHRoaXMuc2V0RXJyTGFiZWwoZGF0YS5jb2RlKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgdmFyIHRhcmdldCA9IHRoaXMubm9kZS5nZXRDaGlsZEJ5TmFtZShkYXRhLnJlc3VsdCk7XHJcbiAgICAgICAgdGFyZ2V0LmdldENoaWxkQnlOYW1lKFwiYnRuXCIpLmFjdGl2ZSA9IGZhbHNlO1xyXG4gICAgICAgIHRhcmdldC5vcGFjaXR5ID0gMDsgdGFyZ2V0LnNjYWxlID0gMjt0YXJnZXQuZ2V0Q2hpbGRCeU5hbWUoXCJ0aXBcIikub3BhY2l0eSA9IDA7XHJcbiAgICAgICAgaWYoZGF0YS5yZXN1bHQgPT0gXCJ3aW5cIil7XHJcbiAgICAgICAgICAgIHZhciBsaWFuWGkgPSBmYWxzZTtcclxuICAgICAgICAgICAgaWYoY2MuZnguR2FtZUNvbmZpZy5HTV9JTkZPLmxldmVsID09IDIpIGxpYW5YaSA9IHRydWU7XHJcbiAgICAgICAgICAgIHRhcmdldC5nZXRDaGlsZEJ5TmFtZShcInllc1wiKS5hY3RpdmUgPSAhbGlhblhpO1xyXG4gICAgICAgICAgICB0YXJnZXQuZ2V0Q2hpbGRCeU5hbWUoXCJzdGFydFwiKS5hY3RpdmUgPSBsaWFuWGk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGNjLnR3ZWVuKHRhcmdldClcclxuICAgICAgICAuZGVsYXkoMC4xKVxyXG4gICAgICAgIC50bygwLjI1LHtvcGFjaXR5OjI1NSxzY2FsZToxfSlcclxuICAgICAgICAuZGVsYXkoMC4zKVxyXG4gICAgICAgIC5jYWxsKCgpPT57XHJcbiAgICAgICAgICAgIGlmKHRhcmdldC5uYW1lID09IFwibG9zZVwiKXtcclxuICAgICAgICAgICAgICAgIGNjLnR3ZWVuKHRhcmdldC5nZXRDaGlsZEJ5TmFtZShcInRpcFwiKSlcclxuICAgICAgICAgICAgICAgIC50bygwLjUse29wYWNpdHk6MjU1fSlcclxuICAgICAgICAgICAgICAgIC5kZWxheSgwLjUpXHJcbiAgICAgICAgICAgICAgICAuY2FsbCgoKSA9PntcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLmNhbl9Ub3VjaCA9IHRydWU7XHJcbiAgICAgICAgICAgICAgICAgICAgdGFyZ2V0LmdldENoaWxkQnlOYW1lKFwiYnRuXCIpLmFjdGl2ZSA9IHRydWU7XHJcbiAgICAgICAgICAgICAgICB9KVxyXG4gICAgICAgICAgICAgICAgLnN0YXJ0KCk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgZWxzZXtcclxuICAgICAgICAgICAgICAgIHRoaXMuY2FuX1RvdWNoID0gdHJ1ZTtcclxuICAgICAgICAgICAgICAgIHRhcmdldC5nZXRDaGlsZEJ5TmFtZShcImJ0blwiKS5hY3RpdmUgPSB0cnVlO1xyXG4gICAgICAgICAgICB9XHJcblxyXG4gICAgICAgIH0pXHJcbiAgICAgICAgLnN0YXJ0KCk7XHJcbiAgICB9XHJcblxyXG4gICAgc2V0RXJyTGFiZWwoY29kZSl7XHJcbiAgICAgICAgdmFyIHRpcCA9IHRoaXMubm9kZS5nZXRDaGlsZEJ5TmFtZShcImxvc2VcIikuZ2V0Q2hpbGRCeU5hbWUoXCJ0aXBcIikuZ2V0Q29tcG9uZW50KGNjLkxhYmVsKTtcclxuICAgICAgICB0aXAuc3RyaW5nID0gY2MuZnguR2FtZUNvbmZpZy5USVBfRVJSW2NvZGVdO1xyXG4gICAgfVxyXG5cclxuICAgIGNsaWNrX05leHQoKXtcclxuICAgICAgICBpZighdGhpcy5jYW5fVG91Y2gpe1xyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRoaXMuY2FuX1RvdWNoID0gZmFsc2U7XHJcbiAgICAgICAgY2MudHdlZW4odGhpcy5ub2RlKVxyXG4gICAgICAgIC50bygwLjMse29wYWNpdHk6MH0pXHJcbiAgICAgICAgLmNhbGwoKCkgPT57XHJcbiAgICAgICAgICAgIHRoaXMubm9kZS5hY3RpdmUgPSBmYWxzZTtcclxuICAgICAgICAgICAgY2MuZGlyZWN0b3IubG9hZFNjZW5lKFwiR2FtZVNjZW5lXCIpO1xyXG4gICAgICAgIH0pXHJcbiAgICAgICAgLnN0YXJ0KCk7XHJcbiAgICB9XHJcblxyXG4gICAgLy8gdXBkYXRlIChkdCkge31cclxufVxyXG4iXX0= -//------QC-SOURCE-SPLIT------ - - (function() { - var nodeEnv = typeof require !== 'undefined' && typeof process !== 'undefined'; - var __module = nodeEnv ? module : {exports:{}}; - var __filename = 'preview-scripts/assets/Script/JiaZai.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, '1dc93b4fehOrpGgTkihBH4g', 'JiaZai'); -// Script/JiaZai.ts - -"use strict"; -// Learn TypeScript: -// - https://docs.cocos.com/creator/manual/en/scripting/typescript.html -// Learn Attribute: -// - https://docs.cocos.com/creator/manual/en/scripting/reference/attributes.html -// Learn life-cycle callbacks: -// - https://docs.cocos.com/creator/manual/en/scripting/life-cycle-callbacks.html -var __extends = (this && this.__extends) || (function () { - var extendStatics = function (d, b) { - extendStatics = Object.setPrototypeOf || - ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) || - function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; }; - return extendStatics(d, b); - }; - return function (d, b) { - extendStatics(d, b); - function __() { this.constructor = d; } - d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); - }; -})(); -var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) { - var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; - if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc); - else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; - return c > 3 && r && Object.defineProperty(target, key, r), r; -}; -Object.defineProperty(exports, "__esModule", { value: true }); -var GameManager_1 = require("./GameManager"); -var NumberToImage_1 = require("./NumberToImage"); -var MiniGameSdk_1 = require("./Sdk/MiniGameSdk"); -var lq_collide_system_1 = require("./lq_collide_system/lq_collide_system"); -var _a = cc._decorator, ccclass = _a.ccclass, property = _a.property; -var NewClass = /** @class */ (function (_super) { - __extends(NewClass, _super); - function NewClass() { - var _this = _super !== null && _super.apply(this, arguments) || this; - _this.node1 = null; - _this.node2 = null; - _this.node3 = null; - _this.Block_Color = []; - _this.custom = null; - _this.level = null; - _this.coin = null; - _this.Stamina = null; - return _this; - // update (dt) {} - } - // LIFE-CYCLE CALLBACKS: - NewClass.prototype.onLoad = function () { - cc.game.setFrameRate(63); - lq_collide_system_1.LQCollideSystem.is_enable = true; - // console.log("加载关卡配置2"); - // window.initMgr(); - GameManager_1.default._instance.Block_Color = this.Block_Color; - if (cc.fx.GameConfig.GM_INFO.first) { - console.log("————————准备注册事件", cc.fx.GameConfig.GM_INFO.openid); - if (cc.fx.GameConfig.GM_INFO.openid != "") { - console.log("————————发送注册事件"); - cc.fx.GameTool.shushu_Track("register"); - } - cc.fx.AudioManager._instance.playEffect("zhuan1", null); - this.node.getChildByName("zhuanchang").active = true; - this.node.getChildByName("zhuanchang").getComponent(sp.Skeleton).setAnimation(1, "up", false); - setTimeout(function () { - cc.fx.GameConfig.GM_INFO.first = false; - cc.director.loadScene("GameScene"); - }, 1000); - } - }; - NewClass.prototype.start = function () { - // console.log("已经进入Home界面"); - // console.log("金币",cc.fx.GameConfig.GM_INFO.coin); - // console.log("关卡",cc.fx.GameConfig.GM_INFO.level+1); - var _this = this; - cc.fx.GameTool.getHealth(null); - // cc.fx.GameConfig.LEVEL_INFO_init(false,0); - setTimeout(function () { - NumberToImage_1.default.numberToImageNodes((cc.fx.GameConfig.GM_INFO.level + 1), 25, 15, "big_", _this.level, false); - NumberToImage_1.default.numberToImageNodes(cc.fx.GameConfig.GM_INFO.coin, 30, 15, "coin_", _this.coin, true); - _this.setHealthInfo(); - }, 0); - if (cc.fx.GameConfig.GM_INFO.gameState) { - this.node.getChildByName("zhuanchang").active = true; - setTimeout(function () { - cc.fx.AudioManager._instance.playEffect("zhuan2", null); - _this.node.getChildByName("zhuanchang").getComponent(sp.Skeleton).setAnimation(1, "down", false); - _this.node.getChildByName("zhuanchang").getComponent(sp.Skeleton).setCompleteListener(function (entry) { - if (entry.animation.name === "down" && !cc.fx.GameConfig.GM_INFO.first) { - // 动画播放结束后执行的逻辑 - _this.node.getChildByName("zhuanchang").active = false; - } - }); - }, 500); - } - else { - if (!cc.fx.GameConfig.GM_INFO.first) - this.node.getChildByName("zhuanchang").active = false; - } - }; - //开始倒计时 - NewClass.prototype.startTimeCutDown = function () { - this.scheduleCallback = function () { - var _this = this; - if (this.pause) - return; - if (cc.fx.GameConfig.GM_INFO.min_Time <= 0) { - this.stopTimeCutDown(); - var timeTemp = cc.fx.GameTool.getTimeMargin(cc.fx.GameConfig.GM_INFO.min_Time); - this.Stamina.getChildByName("time").getComponent(cc.Label).string = timeTemp; - cc.fx.GameTool.setUserHealth(1, function (data) { - cc.fx.GameTool.getHealth(null); - _this.setHealthInfo(); - }); - } - else { - cc.fx.GameConfig.GM_INFO.min_Time -= 1; - var timeTemp = cc.fx.GameTool.getTimeMargin(cc.fx.GameConfig.GM_INFO.min_Time); - this.Stamina.getChildByName("time").getComponent(cc.Label).string = timeTemp; - } - }.bind(this); - this.schedule(this.scheduleCallback, 1); - }; - // 停止倒计时 - NewClass.prototype.stopTimeCutDown = function () { - if (this.scheduleCallback) { - this.unschedule(this.scheduleCallback); - } - }; - NewClass.prototype.setHealthInfo = function () { - if (cc.fx.GameConfig.GM_INFO.hp == 5) { - this.Stamina.getChildByName("man").active = true; - this.Stamina.getChildByName("health").active = false; - this.Stamina.getChildByName("time").active = false; - } - else { - this.Stamina.getChildByName("man").active = false; - this.Stamina.getChildByName("health").active = true; - NumberToImage_1.default.numberToImageNodes((cc.fx.GameConfig.GM_INFO.hp), 25, 15, "coin_", this.Stamina.getChildByName("health"), false); - this.Stamina.getChildByName("time").active = true; - if (cc.fx.GameConfig.GM_INFO.min_Time != 0) { - var time = cc.fx.GameTool.getTimeMargin(cc.fx.GameConfig.GM_INFO.min_Time); - this.Stamina.getChildByName("time").getComponent(cc.Label).string = time; - this.startTimeCutDown(); - } - } - }; - NewClass.prototype.startGame = function () { - cc.fx.AudioManager._instance.playEffect("anniu_Big", null); - if (cc.fx.GameConfig.GM_INFO.hp < 1) { - MiniGameSdk_1.MiniGameSdk.API.showToast("体力值不足"); - return; - } - if (this.node.getChildByName("Load").getChildByName("startBtn").getComponent("btnControl")._touch) { - this.node.getChildByName("Load").getChildByName("startBtn").getComponent("btnControl").setTouch(false); - // if(this.custom.string != ""){ - // cc.fx.GameConfig.GM_INFO.level = parseInt(this.custom.string) - 1; - // // cc.fx.StorageMessage.setStorage("level",cc.fx.GameConfig.GM_INFO.level.toString()); - // cc.fx.GameConfig.LEVEL_INFO_init(true); - // } - // else{ - cc.fx.AudioManager._instance.playEffect("zhuan1", null); - this.node.getChildByName("zhuanchang").active = true; - this.node.getChildByName("zhuanchang").getComponent(sp.Skeleton).setAnimation(1, "up", false); - cc.fx.GameConfig.LEVEL_INFO_init(true, 1000); - // } - } - }; - //打开商店 - NewClass.prototype.openShop = function () { - var _this = this; - // 加载 shop bundle - cc.assetManager.loadBundle('shop', function (err, bundle) { - bundle.load('prefab/shop', cc.Prefab, function (err, prefab) { - if (err) { - cc.error(err.message || err); - return; - } - if (prefab) { - var shopNode = cc.instantiate(prefab); - _this.node.addChild(shopNode); - console.log("shopNode parent:", shopNode.parent); - } - }); - }); - }; - NewClass.prototype.closeRank = function () { - this.node.getChildByName("Rank").active = false; - }; - NewClass.prototype.openRank = function () { - this.node.getChildByName("Rank").active = true; - }; - NewClass.prototype.openReward = function () { - this.node.getChildByName("Reward").active = true; - }; - NewClass.prototype.clickShop = function () { - // 假设已经获取到了 userId 和 productId - var userId = cc.fx.GameConfig.GM_INFO.openid; - var productId = '1'; - console.log("即将创建createorder"); - //@ts-ignore - wx.cloud.callFunction({ - name: "createOrder", - data: { - "userId": userId, - "productId": productId, - }, - success: function (res) { - // 取得云函数返回的订单信息 - console.log("createOrder结果:", res.result); - var payment = res.result.paymentResult.payment; - console.log("payment:", payment); - // 调起微信客户端支付 - //@ts-ignore - // 调起微信客户端支付 - //@ts-ignore - wx.requestPayment({ - // 时间戳,从 1970 年 1 月 1 日 00:00:00 至今的秒数,即当前的时间 - timeStamp: payment.timeStamp, - // 随机字符串,长度为32个字符以下 - nonceStr: payment.nonceStr, - // 统一下单接口返回的 prepay_id 参数值 - package: payment.package, - // 签名算法,暂支持 MD5、HMAC-SHA256 - signType: payment.signType || 'MD5', - // 支付签名 - paySign: payment.paySign, - success: function (res) { - /* 成功回调 */ - console.log("支付成功", res); - }, - fail: function (res) { - /* 失败回调 */ - console.log("支付失败", res); - }, - complete: function (res) { - console.log("支付完成", res); - } - }); - }, - }); - }; - NewClass.prototype.openPause = function () { - cc.fx.AudioManager._instance.playEffect("anniu_little", null); - console.log(cc.fx.GameConfig.GM_INFO); - if (cc.fx.GameConfig.GM_INFO.openid == undefined) { - console.log(cc.fx.GameConfig.GM_INFO.openid); - cc.fx.GameConfig.GM_INFO.openid = ""; - } - this.node.getChildByName("Pause").active = true; - this.node.getChildByName("Pause").getChildByName("openID").getComponent(cc.Label).string = cc.fx.GameConfig.GM_INFO.openid; - }; - NewClass.prototype.closePause = function () { - cc.fx.AudioManager._instance.playEffect("anniu_little", null); - this.node.getChildByName("Pause").active = false; - }; - NewClass.prototype.closeReward = function () { - this.node.getChildByName("Reward").active = false; - }; - NewClass.prototype.openStamina = function () { - this.node.getChildByName("Stamina").active = true; - }; - NewClass.prototype.closeStamina = function () { - this.node.getChildByName("Stamina").active = false; - }; - __decorate([ - property(cc.Node) - ], NewClass.prototype, "node1", void 0); - __decorate([ - property(cc.Node) - ], NewClass.prototype, "node2", void 0); - __decorate([ - property(cc.Node) - ], NewClass.prototype, "node3", void 0); - __decorate([ - property({ type: [cc.SpriteAtlas], tooltip: "方块颜色" }) - ], NewClass.prototype, "Block_Color", void 0); - __decorate([ - property(cc.EditBox) - ], NewClass.prototype, "custom", void 0); - __decorate([ - property(cc.Node) - ], NewClass.prototype, "level", void 0); - __decorate([ - property(cc.Node) - ], NewClass.prototype, "coin", void 0); - __decorate([ - property(cc.Node) - ], NewClass.prototype, "Stamina", void 0); - NewClass = __decorate([ - ccclass - ], NewClass); - return NewClass; -}(cc.Component)); -exports.default = NewClass; - -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,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImFzc2V0c1xcU2NyaXB0XFxKaWFaYWkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLG9CQUFvQjtBQUNwQix3RUFBd0U7QUFDeEUsbUJBQW1CO0FBQ25CLGtGQUFrRjtBQUNsRiw4QkFBOEI7QUFDOUIsa0ZBQWtGOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFFbEYsNkNBQXdDO0FBQ3hDLGlEQUE0QztBQUM1QyxpREFBZ0Q7QUFDaEQsMkVBQXdFO0FBQ2xFLElBQUEsS0FBd0IsRUFBRSxDQUFDLFVBQVUsRUFBbkMsT0FBTyxhQUFBLEVBQUUsUUFBUSxjQUFrQixDQUFDO0FBRzVDO0lBQXNDLDRCQUFZO0lBQWxEO1FBQUEscUVBaVJDO1FBOVFHLFdBQUssR0FBWSxJQUFJLENBQUM7UUFHdEIsV0FBSyxHQUFZLElBQUksQ0FBQztRQUd0QixXQUFLLEdBQVksSUFBSSxDQUFDO1FBS3RCLGlCQUFXLEdBQTBCLEVBQUUsQ0FBQztRQUd4QyxZQUFNLEdBQWUsSUFBSSxDQUFDO1FBSzFCLFdBQUssR0FBWSxJQUFJLENBQUM7UUFHdEIsVUFBSSxHQUFZLElBQUksQ0FBQztRQUdyQixhQUFPLEdBQVksSUFBSSxDQUFDOztRQW9QeEIsaUJBQWlCO0lBQ3JCLENBQUM7SUFsUEcsd0JBQXdCO0lBRXhCLHlCQUFNLEdBQU47UUFDSSxFQUFFLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUN6QixtQ0FBZSxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUM7UUFDakMsMEJBQTBCO1FBQzFCLG9CQUFvQjtRQUNwQixxQkFBVyxDQUFDLFNBQVMsQ0FBQyxXQUFXLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQztRQUNyRCxJQUFJLEVBQUUsQ0FBQyxFQUFFLENBQUMsVUFBVSxDQUFDLE9BQU8sQ0FBQyxLQUFLLEVBQUU7WUFDaEMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxnQkFBZ0IsRUFBRSxFQUFFLENBQUMsRUFBRSxDQUFD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R0FBRyxLQUFLLENBQUM7SUFDdEQsQ0FBQztJQUVELDhCQUFXLEdBQVg7UUFDSSxJQUFJLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFDO0lBQ3RELENBQUM7SUFFRCwrQkFBWSxHQUFaO1FBQ0ksSUFBSSxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsU0FBUyxDQUFDLENBQUMsTUFBTSxHQUFHLEtBQUssQ0FBQztJQUN2RCxDQUFDO0lBMVFEO1FBREMsUUFBUSxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUM7MkNBQ0k7SUFHdEI7UUFEQyxRQUFRLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQzsyQ0FDSTtJQUd0QjtRQURDLFFBQVEsQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDOzJDQUNJO0lBS3RCO1FBREMsUUFBUSxDQUFDLEVBQUUsSUFBSSxFQUFFLENBQUMsRUFBRSxDQUFDLFdBQVcsQ0FBQyxFQUFFLE9BQU8sRUFBRSxNQUFNLEVBQUUsQ0FBQztpREFDZDtJQUd4QztRQURDLFFBQVEsQ0FBQyxFQUFFLENBQUMsT0FBTyxDQUFDOzRDQUNLO0lBSzFCO1FBREMsUUFBUSxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUM7MkNBQ0k7SUFHdEI7UUFEQyxRQUFRLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQzswQ0FDRztJQUdyQjtRQURDLFFBQVEsQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDOzZDQUNNO0lBNUJQLFFBQVE7UUFENUIsT0FBTztPQUNhLFFBQVEsQ0FpUjVCO0lBQUQsZUFBQztDQWpSRCxBQWlSQyxDQWpScUMsRUFBRSxDQUFDLFNBQVMsR0FpUmpEO2tCQWpSb0IsUUFBUSIsImZpbGUiOiIiLCJzb3VyY2VSb290IjoiLyIsInNvdXJjZXNDb250ZW50IjpbIi8vIExlYXJuIFR5cGVTY3JpcHQ6XHJcbi8vICAtIGh0dHBzOi8vZG9jcy5jb2Nvcy5jb20vY3JlYXRvci9tYW51YWwvZW4vc2NyaXB0aW5nL3R5cGVzY3JpcHQuaHRtbFxyXG4vLyBMZWFybiBBdHRyaWJ1dGU6XHJcbi8vICAtIGh0dHBzOi8vZG9jcy5jb2Nvcy5jb20vY3JlYXRvci9tYW51YWwvZW4vc2NyaXB0aW5nL3JlZmVyZW5jZS9hdHRyaWJ1dGVzLmh0bWxcclxuLy8gTGVhcm4gbGlmZS1jeWNsZSBjYWxsYmFja3M6XHJcbi8vICAtIGh0dHBzOi8vZG9jcy5jb2Nvcy5jb20vY3JlYXRvci9tYW51YWwvZW4vc2NyaXB0aW5nL2xpZmUtY3ljbGUtY2FsbGJhY2tzLmh0bWxcclxuXHJcbmltcG9ydCBHYW1lTWFuYWdlciBmcm9tIFwiLi9HYW1lTWFuYWdlclwiO1xyXG5pbXBvcnQgTnVtYmVyVG9JbWFnZSBmcm9tIFwiLi9OdW1iZXJUb0ltYWdlXCI7XHJcbmltcG9ydCB7IE1pbmlHYW1lU2RrIH0gZnJvbSBcIi4vU2RrL01pbmlHYW1lU2RrXCI7XHJcbmltcG9ydCB7IExRQ29sbGlkZVN5c3RlbSB9IGZyb20gXCIuL2xxX2NvbGxpZGVfc3lzdGVtL2xxX2NvbGxpZGVfc3lzdGVtXCI7XHJcbmNvbnN0IHsgY2NjbGFzcywgcHJvcGVydHkgfSA9IGNjLl9kZWNvcmF0b3I7XHJcblxyXG5AY2NjbGFzc1xyXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBOZXdDbGFzcyBleHRlbmRzIGNjLkNvbXBvbmVudCB7XHJcblxyXG4gICAgQHByb3BlcnR5KGNjLk5vZGUpXHJcbiAgICBub2RlMTogY2MuTm9kZSA9IG51bGw7XHJcblxyXG4gICAgQHByb3BlcnR5KGNjLk5vZGUpXHJcbiAgICBub2RlMjogY2MuTm9kZSA9IG51bGw7XHJcblxyXG4gICAgQHByb3BlcnR5KGNjLk5vZGUpXHJcbiAgICBub2RlMzogY2MuTm9kZSA9IG51bGw7XHJcblxyXG5cclxuXHJcbiAgICBAcHJvcGVydHkoeyB0eXBlOiBbY2MuU3ByaXRlQXRsYXNdLCB0b29sdGlwOiBcIuaWueWdl+minOiJslwiIH0pXHJcbiAgICBCbG9ja19Db2xvcjogQXJyYXk8Y2MuU3ByaXRlQXRsYXM+ID0gW107XHJcblxyXG4gICAgQHByb3BlcnR5KGNjLkVkaXRCb3gpXHJcbiAgICBjdXN0b206IGNjLkVkaXRCb3ggPSBudWxsO1xyXG5cclxuXHJcblxyXG4gICAgQHByb3BlcnR5KGNjLk5vZGUpXHJcbiAgICBsZXZlbDogY2MuTm9kZSA9IG51bGw7XHJcblxyXG4gICAgQHByb3BlcnR5KGNjLk5vZGUpXHJcbiAgICBjb2luOiBjYy5Ob2RlID0gbnVsbDtcclxuXHJcbiAgICBAcHJvcGVydHkoY2MuTm9kZSlcclxuICAgIFN0YW1pbmE6IGNjLk5vZGUgPSBudWxsO1xyXG4gICAgc2NoZWR1bGVDYWxsYmFjazogYW55O1xyXG5cclxuICAgIC8vIExJRkUtQ1lDTEUgQ0FMTEJBQ0tTOlxyXG5cclxuICAgIG9uTG9hZCgpIHtcclxuICAgICAgICBjYy5nYW1lLnNldEZyYW1lUmF0ZSg2Myk7XHJcbiAgICAgICAgTFFDb2xsaWRlU3lzdGVtLmlzX2VuYWJsZSA9IHRydWU7XHJcbiAgICAgICAgLy8gY29uc29sZS5sb2coXCLliqDovb3lhbPljaHphY3nva4yXCIpO1xyXG4gICAgICAgIC8vIHdpbmRvdy5pbml0TWdyKCk7XHJcbiAgICAgICAgR2FtZU1hbmFnZXIuX2luc3RhbmNlLkJsb2NrX0NvbG9yID0gdGhpcy5CbG9ja19Db2xvcjtcclxuICAgICAgICBpZiAoY2MuZnguR2FtZUNvbmZpZy5HTV9JTkZPLmZpcnN0KSB7XHJcbiAgICAgICAgICAgIGNvbnNvbGUubG9nKFwi4oCU4oCU4oCU4oCU4oCU4oCU4oCU4oCU5YeG5aSH5rOo5YaM5LqL5Lu2XCIsIGNjLmZ4LkdhbWVDb25maWcuR01fSU5GTy5vcGVuaWQpO1xyXG4gICAgICAgICAgICBpZiAoY2MuZnguR2FtZUNvbmZpZy5HTV9JTkZPLm9wZW5pZCAhPSBcIlwiKSB7XHJcbiAgICAgICAgICAgICAgICBjb25zb2xlLmxvZyhcIuKAlOKAlOKAlOKAlOKAlOKAlOKAlOKAlOWPkemAgeazqOWGjOS6i+S7tlwiKTtcclxuICAgICAgICAgICAgICAgIGNjLmZ4LkdhbWVUb29sLnNodXNodV9UcmFjayhcInJlZ2lzdGVyXCIpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGNjLmZ4LkF1ZGlvTWFuYWdlci5faW5zdGFuY2UucGxheUVmZmVjdChcInpodWFuMVwiLCBudWxsKTtcclxuICAgICAgICAgICAgdGhpcy5ub2RlLmdldENoaWxkQnlOYW1lKFwiemh1YW5jaGFuZ1wiKS5hY3RpdmUgPSB0cnVlO1xyXG4gICAgICAgICAgICB0aGlzLm5vZGUuZ2V0Q2hpbGRCeU5hbWUoXCJ6aHVhbmNoYW5nXCIpLmdldENvbXBvbmVudChzcC5Ta2VsZXRvbikuc2V0QW5pbWF0aW9uKDEsIFwidXBcIiwgZmFsc2UpO1xyXG4gICAgICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgICAgICAgICAgIGNjLmZ4LkdhbWVDb25maWcuR01fSU5GTy5maXJzdCA9IGZhbHNlO1xyXG4gICAgICAgICAgICAgICAgY2MuZGlyZWN0b3IubG9hZFNjZW5lKFwiR2FtZVNjZW5lXCIpO1xyXG4gICAgICAgICAgICB9LCAxMDAwKTtcclxuXHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHN0YXJ0KCkge1xyXG4gICAgICAgIC8vIGNvbnNvbGUubG9nKFwi5bey57uP6L+b5YWlSG9tZeeVjOmdolwiKTtcclxuICAgICAgICAvLyBjb25zb2xlLmxvZyhcIumHkeW4gVwiLGNjLmZ4LkdhbWVDb25maWcuR01fSU5GTy5jb2luKTtcclxuICAgICAgICAvLyBjb25zb2xlLmxvZyhcIuWFs+WNoVwiLGNjLmZ4LkdhbWVDb25maWcuR01fSU5GTy5sZXZlbCsxKTtcclxuXHJcbiAgICAgICAgY2MuZnguR2FtZVRvb2wuZ2V0SGVhbHRoKG51bGwpO1xyXG4gICAgICAgIC8vIGNjLmZ4LkdhbWVDb25maWcuTEVWRUxfSU5GT19pbml0KGZhbHNlLDApO1xyXG4gICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICAgICAgICBOdW1iZXJUb0ltYWdlLm51bWJlclRvSW1hZ2VOb2RlcygoY2MuZnguR2FtZUNvbmZpZy5HTV9JTkZPLmxldmVsICsgMSksIDI1LCAxNSwgXCJiaWdfXCIsIHRoaXMubGV2ZWwsIGZhbHNlKTtcclxuICAgICAgICAgICAgTnVtYmVyVG9JbWFnZS5udW1iZXJUb0ltYWdlTm9kZXMoY2MuZnguR2FtZUNvbmZpZy5HTV9JTkZPLmNvaW4sIDMwLCAxNSwgXCJjb2luX1wiLCB0aGlzLmNvaW4sIHRydWUpO1xyXG4gICAgICAgICAgICB0aGlzLnNldEhlYWx0aEluZm8oKTtcclxuICAgICAgICB9LCAwKTtcclxuICAgICAgICBpZiAoY2MuZnguR2FtZUNvbmZpZy5HTV9JTkZPLmdhbWVTdGF0ZSkge1xyXG4gICAgICAgICAgICB0aGlzLm5vZGUuZ2V0Q2hpbGRCeU5hbWUoXCJ6aHVhbmNoYW5nXCIpLmFjdGl2ZSA9IHRydWU7XHJcbiAgICAgICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgY2MuZnguQXVkaW9NYW5hZ2VyLl9pbnN0YW5jZS5wbGF5RWZmZWN0KFwiemh1YW4yXCIsIG51bGwpO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5ub2RlLmdldENoaWxkQnlOYW1lKFwiemh1YW5jaGFuZ1wiKS5nZXRDb21wb25lbnQoc3AuU2tlbGV0b24pLnNldEFuaW1hdGlvbigxLCBcImRvd25cIiwgZmFsc2UpO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5ub2RlLmdldENoaWxkQnlOYW1lKFwiemh1YW5jaGFuZ1wiKS5nZXRDb21wb25lbnQoc3AuU2tlbGV0b24pLnNldENvbXBsZXRlTGlzdGVuZXIoKGVudHJ5KSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKGVudHJ5LmFuaW1hdGlvbi5uYW1lID09PSBcImRvd25cIiAmJiAhY2MuZnguR2FtZUNvbmZpZy5HTV9JTkZPLmZpcnN0KSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIOWKqOeUu+aSreaUvue7k+adn+WQjuaJp+ihjOeahOmAu+i+kVxyXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLm5vZGUuZ2V0Q2hpbGRCeU5hbWUoXCJ6aHVhbmNoYW5nXCIpLmFjdGl2ZSA9IGZhbHNlO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICB9LCA1MDApO1xyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgaWYgKCFjYy5meC5HYW1lQ29uZmlnLkdNX0lORk8uZmlyc3QpXHJcbiAgICAgICAgICAgICAgICB0aGlzLm5vZGUuZ2V0Q2hpbGRCeU5hbWUoXCJ6aHVhbmNoYW5nXCIpLmFjdGl2ZSA9IGZhbHNlO1xyXG4gICAgICAgIH1cclxuXHJcblxyXG5cclxuICAgIH1cclxuXHJcbiAgICAvL+W8gOWni+WAkuiuoeaXtlxyXG4gICAgc3RhcnRUaW1lQ3V0RG93bigpIHtcclxuICAgICAgICB0aGlzLnNjaGVkdWxlQ2FsbGJhY2sgPSBmdW5jdGlvbiAoKSB7XHJcbiAgICAgICAgICAgIGlmICh0aGlzLnBhdXNlKSByZXR1cm47XHJcbiAgICAgICAgICAgIGlmIChjYy5meC5HYW1lQ29uZmlnLkdNX0lORk8ubWluX1RpbWUgPD0gMCkge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5zdG9wVGltZUN1dERvd24oKTtcclxuICAgICAgICAgICAgICAgIHZhciB0aW1lVGVtcCA9IGNjLmZ4LkdhbWVUb29sLmdldFRpbWVNYXJnaW4oY2MuZnguR2FtZUNvbmZpZy5HTV9JTkZPLm1pbl9UaW1lKTtcclxuICAgICAgICAgICAgICAgIHRoaXMuU3RhbWluYS5nZXRDaGlsZEJ5TmFtZShcInRpbWVcIikuZ2V0Q29tcG9uZW50KGNjLkxhYmVsKS5zdHJpbmcgPSB0aW1lVGVtcDtcclxuICAgICAgICAgICAgICAgIGNjLmZ4LkdhbWVUb29sLnNldFVzZXJIZWFsdGgoMSwgKGRhdGEpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICBjYy5meC5HYW1lVG9vbC5nZXRIZWFsdGgobnVsbCk7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5zZXRIZWFsdGhJbmZvKCk7XHJcbiAgICAgICAgICAgICAgICB9KVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgY2MuZnguR2FtZUNvbmZpZy5HTV9JTkZPLm1pbl9UaW1lIC09IDE7XHJcbiAgICAgICAgICAgICAgICB2YXIgdGltZVRlbXAgPSBjYy5meC5HYW1lVG9vbC5nZXRUaW1lTWFyZ2luKGNjLmZ4LkdhbWVDb25maWcuR01fSU5GTy5taW5fVGltZSk7XHJcbiAgICAgICAgICAgICAgICB0aGlzLlN0YW1pbmEuZ2V0Q2hpbGRCeU5hbWUoXCJ0aW1lXCIpLmdldENvbXBvbmVudChjYy5MYWJlbCkuc3RyaW5nID0gdGltZVRlbXA7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9LmJpbmQodGhpcyk7XHJcbiAgICAgICAgdGhpcy5zY2hlZHVsZSh0aGlzLnNjaGVkdWxlQ2FsbGJhY2ssIDEpO1xyXG4gICAgfVxyXG4gICAgLy8g5YGc5q2i5YCS6K6h5pe2XHJcbiAgICBzdG9wVGltZUN1dERvd24oKSB7XHJcbiAgICAgICAgaWYgKHRoaXMuc2NoZWR1bGVDYWxsYmFjaykge1xyXG4gICAgICAgICAgICB0aGlzLnVuc2NoZWR1bGUodGhpcy5zY2hlZHVsZUNhbGxiYWNrKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgc2V0SGVhbHRoSW5mbygpIHtcclxuICAgICAgICBpZiAoY2MuZnguR2FtZUNvbmZpZy5HTV9JTkZPLmhwID09IDUpIHtcclxuICAgICAgICAgICAgdGhpcy5TdGFtaW5hLmdldENoaWxkQnlOYW1lKFwibWFuXCIpLmFjdGl2ZSA9IHRydWU7XHJcbiAgICAgICAgICAgIHRoaXMuU3RhbWluYS5nZXRDaGlsZEJ5TmFtZShcImhlYWx0aFwiKS5hY3RpdmUgPSBmYWxzZTtcclxuICAgICAgICAgICAgdGhpcy5TdGFtaW5hLmdldENoaWxkQnlOYW1lKFwidGltZVwiKS5hY3RpdmUgPSBmYWxzZTtcclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgIHRoaXMuU3RhbWluYS5nZXRDaGlsZEJ5TmFtZShcIm1hblwiKS5hY3RpdmUgPSBmYWxzZTtcclxuICAgICAgICAgICAgdGhpcy5TdGFtaW5hLmdldENoaWxkQnlOYW1lKFwiaGVhbHRoXCIpLmFjdGl2ZSA9IHRydWU7XHJcbiAgICAgICAgICAgIE51bWJlclRvSW1hZ2UubnVtYmVyVG9JbWFnZU5vZGVzKChjYy5meC5HYW1lQ29uZmlnLkdNX0lORk8uaHApLCAyNSwgMTUsIFwiY29pbl9cIiwgdGhpcy5TdGFtaW5hLmdldENoaWxkQnlOYW1lKFwiaGVhbHRoXCIpLCBmYWxzZSk7XHJcbiAgICAgICAgICAgIHRoaXMuU3RhbWluYS5nZXRDaGlsZEJ5TmFtZShcInRpbWVcIikuYWN0aXZlID0gdHJ1ZTtcclxuICAgICAgICAgICAgaWYgKGNjLmZ4LkdhbWVDb25maWcuR01fSU5GTy5taW5fVGltZSAhPSAwKSB7XHJcbiAgICAgICAgICAgICAgICBsZXQgdGltZSA9IGNjLmZ4LkdhbWVUb29sLmdldFRpbWVNYXJnaW4oY2MuZnguR2FtZUNvbmZpZy5HTV9JTkZPLm1pbl9UaW1lKTtcclxuICAgICAgICAgICAgICAgIHRoaXMuU3RhbWluYS5nZXRDaGlsZEJ5TmFtZShcInRpbWVcIikuZ2V0Q29tcG9uZW50KGNjLkxhYmVsKS5zdHJpbmcgPSB0aW1lO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5zdGFydFRpbWVDdXREb3duKCk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG5cclxuICAgIHN0YXJ0R2FtZSgpIHtcclxuICAgICAgICBjYy5meC5BdWRpb01hbmFnZXIuX2luc3RhbmNlLnBsYXlFZmZlY3QoXCJhbm5pdV9CaWdcIiwgbnVsbCk7XHJcbiAgICAgICAgaWYgKGNjLmZ4LkdhbWVDb25maWcuR01fSU5GTy5ocCA8IDEpIHtcclxuICAgICAgICAgICAgTWluaUdhbWVTZGsuQVBJLnNob3dUb2FzdChcIuS9k+WKm+WAvOS4jei2s1wiKTtcclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAodGhpcy5ub2RlLmdldENoaWxkQnlOYW1lKFwiTG9hZFwiKS5nZXRDaGlsZEJ5TmFtZShcInN0YXJ0QnRuXCIpLmdldENvbXBvbmVudChcImJ0bkNvbnRyb2xcIikuX3RvdWNoKSB7XHJcbiAgICAgICAgICAgIHRoaXMubm9kZS5nZXRDaGlsZEJ5TmFtZShcIkxvYWRcIikuZ2V0Q2hpbGRCeU5hbWUoXCJzdGFydEJ0blwiKS5nZXRDb21wb25lbnQoXCJidG5Db250cm9sXCIpLnNldFRvdWNoKGZhbHNlKTtcclxuICAgICAgICAgICAgLy8gaWYodGhpcy5jdXN0b20uc3RyaW5nICE9IFwiXCIpe1xyXG4gICAgICAgICAgICAvLyAgICAgY2MuZnguR2FtZUNvbmZpZy5HTV9JTkZPLmxldmVsID0gcGFyc2VJbnQodGhpcy5jdXN0b20uc3RyaW5nKSAtIDE7XHJcbiAgICAgICAgICAgIC8vICAgICAvLyBjYy5meC5TdG9yYWdlTWVzc2FnZS5zZXRTdG9yYWdlKFwibGV2ZWxcIixjYy5meC5HYW1lQ29uZmlnLkdNX0lORk8ubGV2ZWwudG9TdHJpbmcoKSk7IFxyXG4gICAgICAgICAgICAvLyAgICAgY2MuZnguR2FtZUNvbmZpZy5MRVZFTF9JTkZPX2luaXQodHJ1ZSk7XHJcbiAgICAgICAgICAgIC8vIH1cclxuICAgICAgICAgICAgLy8gZWxzZXtcclxuICAgICAgICAgICAgY2MuZnguQXVkaW9NYW5hZ2VyLl9pbnN0YW5jZS5wbGF5RWZmZWN0KFwiemh1YW4xXCIsIG51bGwpO1xyXG4gICAgICAgICAgICB0aGlzLm5vZGUuZ2V0Q2hpbGRCeU5hbWUoXCJ6aHVhbmNoYW5nXCIpLmFjdGl2ZSA9IHRydWU7XHJcbiAgICAgICAgICAgIHRoaXMubm9kZS5nZXRDaGlsZEJ5TmFtZShcInpodWFuY2hhbmdcIikuZ2V0Q29tcG9uZW50KHNwLlNrZWxldG9uKS5zZXRBbmltYXRpb24oMSwgXCJ1cFwiLCBmYWxzZSk7XHJcbiAgICAgICAgICAgIGNjLmZ4LkdhbWVDb25maWcuTEVWRUxfSU5GT19pbml0KHRydWUsIDEwMDApO1xyXG4gICAgICAgICAgICAvLyB9XHJcbiAgICAgICAgfVxyXG5cclxuXHJcblxyXG4gICAgfVxyXG5cclxuICAgIC8v5omT5byA5ZWG5bqXXHJcbiAgICBvcGVuU2hvcCgpIHtcclxuICAgICAgICAvLyDliqDovb0gc2hvcCAgYnVuZGxlXHJcbiAgICAgICAgY2MuYXNzZXRNYW5hZ2VyLmxvYWRCdW5kbGUoJ3Nob3AnLCAoZXJyOiBFcnJvciwgYnVuZGxlOiBjYy5Bc3NldE1hbmFnZXIuQnVuZGxlKSA9PiB7XHJcbiAgICAgICAgICAgIGJ1bmRsZS5sb2FkKCdwcmVmYWIvc2hvcCcsIGNjLlByZWZhYiwgKGVycjogRXJyb3IsIHByZWZhYjogY2MuUHJlZmFiKSA9PiB7XHJcbiAgICAgICAgICAgICAgICBpZiAoZXJyKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgY2MuZXJyb3IoZXJyLm1lc3NhZ2UgfHwgZXJyKTtcclxuICAgICAgICAgICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBpZiAocHJlZmFiKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgY29uc3Qgc2hvcE5vZGUgPSBjYy5pbnN0YW50aWF0ZShwcmVmYWIpO1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMubm9kZS5hZGRDaGlsZChzaG9wTm9kZSk7XHJcbiAgICAgICAgICAgICAgICAgICAgY29uc29sZS5sb2coXCJzaG9wTm9kZSBwYXJlbnQ6XCIsIHNob3BOb2RlLnBhcmVudCk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG5cclxuICAgIGNsb3NlUmFuaygpIHtcclxuICAgICAgICB0aGlzLm5vZGUuZ2V0Q2hpbGRCeU5hbWUoXCJSYW5rXCIpLmFjdGl2ZSA9IGZhbHNlO1xyXG4gICAgfVxyXG5cclxuICAgIG9wZW5SYW5rKCkge1xyXG4gICAgICAgIHRoaXMubm9kZS5nZXRDaGlsZEJ5TmFtZShcIlJhbmtcIikuYWN0aXZlID0gdHJ1ZTtcclxuICAgIH1cclxuXHJcbiAgICBvcGVuUmV3YXJkKCkge1xyXG4gICAgICAgIHRoaXMubm9kZS5nZXRDaGlsZEJ5TmFtZShcIlJld2FyZFwiKS5hY3RpdmUgPSB0cnVlO1xyXG4gICAgfVxyXG5cclxuICAgIGNsaWNrU2hvcCgpIHtcclxuICAgICAgICAvLyDlgYforr7lt7Lnu4/ojrflj5bliLDkuoYgdXNlcklkIOWSjCBwcm9kdWN0SWRcclxuICAgICAgICBjb25zdCB1c2VySWQgPSBjYy5meC5HYW1lQ29uZmlnLkdNX0lORk8ub3BlbmlkO1xyXG4gICAgICAgIGNvbnN0IHByb2R1Y3RJZCA9ICcxJztcclxuICAgICAgICBjb25zb2xlLmxvZyhcIuWNs+WwhuWIm+W7umNyZWF0ZW9yZGVyXCIpO1xyXG4gICAgICAgIC8vQHRzLWlnbm9yZVxyXG4gICAgICAgIHd4LmNsb3VkLmNhbGxGdW5jdGlvbih7XHJcbiAgICAgICAgICAgIG5hbWU6IFwiY3JlYXRlT3JkZXJcIixcclxuICAgICAgICAgICAgZGF0YToge1xyXG4gICAgICAgICAgICAgICAgXCJ1c2VySWRcIjogdXNlcklkLFxyXG4gICAgICAgICAgICAgICAgXCJwcm9kdWN0SWRcIjogcHJvZHVjdElkLFxyXG4gICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICBzdWNjZXNzOiAocmVzKSA9PiB7XHJcbiAgICAgICAgICAgICAgICAvLyDlj5blvpfkupHlh73mlbDov5Tlm57nmoTorqLljZXkv6Hmga9cclxuICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKFwiY3JlYXRlT3JkZXLnu5Pmnpw6XCIsIHJlcy5yZXN1bHQpO1xyXG4gICAgICAgICAgICAgICAgY29uc3QgcGF5bWVudCA9IHJlcy5yZXN1bHQucGF5bWVudFJlc3VsdC5wYXltZW50O1xyXG4gICAgICAgICAgICAgICAgY29uc29sZS5sb2coXCJwYXltZW50OlwiLCBwYXltZW50KTtcclxuICAgICAgICAgICAgICAgIC8vIOiwg+i1t+W+ruS/oeWuouaIt+err+aUr+S7mFxyXG4gICAgICAgICAgICAgICAgLy9AdHMtaWdub3JlXHJcbiAgICAgICAgICAgICAgICAvLyDosIPotbflvq7kv6HlrqLmiLfnq6/mlK/ku5hcclxuICAgICAgICAgICAgICAgIC8vQHRzLWlnbm9yZVxyXG4gICAgICAgICAgICAgICAgd3gucmVxdWVzdFBheW1lbnQoe1xyXG4gICAgICAgICAgICAgICAgICAgIC8vIOaXtumXtOaIs++8jOS7jiAxOTcwIOW5tCAxIOaciCAxIOaXpSAwMDowMDowMCDoh7Pku4rnmoTnp5LmlbDvvIzljbPlvZPliY3nmoTml7bpl7RcclxuICAgICAgICAgICAgICAgICAgICB0aW1lU3RhbXA6IHBheW1lbnQudGltZVN0YW1wLFxyXG4gICAgICAgICAgICAgICAgICAgIC8vIOmaj+acuuWtl+espuS4su+8jOmVv+W6puS4ujMy5Liq5a2X56ym5Lul5LiLXHJcbiAgICAgICAgICAgICAgICAgICAgbm9uY2VTdHI6IHBheW1lbnQubm9uY2VTdHIsXHJcbiAgICAgICAgICAgICAgICAgICAgLy8g57uf5LiA5LiL5Y2V5o6l5Y+j6L+U5Zue55qEIHByZXBheV9pZCDlj4LmlbDlgLxcclxuICAgICAgICAgICAgICAgICAgICBwYWNrYWdlOiBwYXltZW50LnBhY2thZ2UsXHJcbiAgICAgICAgICAgICAgICAgICAgLy8g562+5ZCN566X5rOV77yM5pqC5pSv5oyBIE1ENeOAgUhNQUMtU0hBMjU2XHJcbiAgICAgICAgICAgICAgICAgICAgc2lnblR5cGU6IHBheW1lbnQuc2lnblR5cGUgfHwgJ01ENScsXHJcbiAgICAgICAgICAgICAgICAgICAgLy8g5pSv5LuY562+5ZCNXHJcbiAgICAgICAgICAgICAgICAgICAgcGF5U2lnbjogcGF5bWVudC5wYXlTaWduLFxyXG4gICAgICAgICAgICAgICAgICAgIHN1Y2Nlc3MocmVzKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIC8qIOaIkOWKn+WbnuiwgyAqL1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zb2xlLmxvZyhcIuaUr+S7mOaIkOWKn1wiLCByZXMpO1xyXG4gICAgICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgICAgICAgZmFpbChyZXMpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgLyog5aSx6LSl5Zue6LCDICovXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKFwi5pSv5LuY5aSx6LSlXCIsIHJlcyk7XHJcbiAgICAgICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICAgICAgICBjb21wbGV0ZShyZXMpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgY29uc29sZS5sb2coXCLmlK/ku5jlrozmiJBcIiwgcmVzKTtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgfSxcclxuICAgICAgICB9KTtcclxuICAgIH1cclxuXHJcblxyXG4gICAgb3BlblBhdXNlKCkge1xyXG4gICAgICAgIGNjLmZ4LkF1ZGlvTWFuYWdlci5faW5zdGFuY2UucGxheUVmZmVjdChcImFubml1X2xpdHRsZVwiLCBudWxsKTtcclxuICAgICAgICBjb25zb2xlLmxvZyhjYy5meC5HYW1lQ29uZmlnLkdNX0lORk8pO1xyXG4gICAgICAgIGlmIChjYy5meC5HYW1lQ29uZmlnLkdNX0lORk8ub3BlbmlkID09IHVuZGVmaW5lZCkge1xyXG4gICAgICAgICAgICBjb25zb2xlLmxvZyhjYy5meC5HYW1lQ29uZmlnLkdNX0lORk8ub3BlbmlkKTtcclxuICAgICAgICAgICAgY2MuZnguR2FtZUNvbmZpZy5HTV9JTkZPLm9wZW5pZCA9IFwiXCI7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRoaXMubm9kZS5nZXRDaGlsZEJ5TmFtZShcIlBhdXNlXCIpLmFjdGl2ZSA9IHRydWU7XHJcbiAgICAgICAgdGhpcy5ub2RlLmdldENoaWxkQnlOYW1lKFwiUGF1c2VcIikuZ2V0Q2hpbGRCeU5hbWUoXCJvcGVuSURcIikuZ2V0Q29tcG9uZW50KGNjLkxhYmVsKS5zdHJpbmcgPSBjYy5meC5HYW1lQ29uZmlnLkdNX0lORk8ub3BlbmlkO1xyXG4gICAgfVxyXG5cclxuICAgIGNsb3NlUGF1c2UoKSB7XHJcbiAgICAgICAgY2MuZnguQXVkaW9NYW5hZ2VyLl9pbnN0YW5jZS5wbGF5RWZmZWN0KFwiYW5uaXVfbGl0dGxlXCIsIG51bGwpO1xyXG4gICAgICAgIHRoaXMubm9kZS5nZXRDaGlsZEJ5TmFtZShcIlBhdXNlXCIpLmFjdGl2ZSA9IGZhbHNlO1xyXG5cclxuICAgIH1cclxuXHJcbiAgICBjbG9zZVJld2FyZCgpIHtcclxuICAgICAgICB0aGlzLm5vZGUuZ2V0Q2hpbGRCeU5hbWUoXCJSZXdhcmRcIikuYWN0aXZlID0gZmFsc2U7XHJcbiAgICB9XHJcblxyXG4gICAgb3BlblN0YW1pbmEoKSB7XHJcbiAgICAgICAgdGhpcy5ub2RlLmdldENoaWxkQnlOYW1lKFwiU3RhbWluYVwiKS5hY3RpdmUgPSB0cnVlO1xyXG4gICAgfVxyXG5cclxuICAgIGNsb3NlU3RhbWluYSgpIHtcclxuICAgICAgICB0aGlzLm5vZGUuZ2V0Q2hpbGRCeU5hbWUoXCJTdGFtaW5hXCIpLmFjdGl2ZSA9IGZhbHNlO1xyXG4gICAgfVxyXG5cclxuXHJcbiAgICAvLyB1cGRhdGUgKGR0KSB7fVxyXG59XHJcbiJdfQ== -//------QC-SOURCE-SPLIT------ - - (function() { - var nodeEnv = typeof require !== 'undefined' && typeof process !== 'undefined'; - var __module = nodeEnv ? module : {exports:{}}; - var __filename = 'preview-scripts/assets/Script/NumberToImage.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, '669f4SuSl9ORqawBcbwCNpG', 'NumberToImage'); -// Script/NumberToImage.ts - -"use strict"; -// Learn TypeScript: -// - https://docs.cocos.com/creator/manual/en/scripting/typescript.html -// Learn Attribute: -// - https://docs.cocos.com/creator/manual/en/scripting/reference/attributes.html -// Learn life-cycle callbacks: -// - https://docs.cocos.com/creator/manual/en/scripting/life-cycle-callbacks.html -var __extends = (this && this.__extends) || (function () { - var extendStatics = function (d, b) { - extendStatics = Object.setPrototypeOf || - ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) || - function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; }; - return extendStatics(d, b); - }; - return function (d, b) { - extendStatics(d, b); - function __() { this.constructor = d; } - d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); - }; -})(); -var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) { - var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; - if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc); - else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; - return c > 3 && r && Object.defineProperty(target, key, r), r; -}; -Object.defineProperty(exports, "__esModule", { value: true }); -var _a = cc._decorator, ccclass = _a.ccclass, property = _a.property; -var NumberToImage = /** @class */ (function (_super) { - __extends(NumberToImage, _super); - function NumberToImage() { - var _this = _super !== null && _super.apply(this, arguments) || this; - _this.fontUI = null; - return _this; - // static calculateAndConvert(num1: number, num2: number, operator: '+' | '-' | '*' | '/', spriteFrames: SpriteFrame[]): Node[] { - // let result: number; - // switch (operator) { - // case '+': - // result = num1 + num2; - // break; - // case '-': - // result = num1 - num2; - // break; - // case '*': - // result = num1 * num2; - // break; - // case '/': - // result = num1 / num2; - // break; - // default: - // throw new Error('不支持的运算符'); - // } - // // 处理结果为小数的情况,这里简单取整 - // result = Math.floor(result); - // return this.numberToImageNodes(result, spriteFrames); - // } - // update (dt) {} - } - NumberToImage_1 = NumberToImage; - // LIFE-CYCLE CALLBACKS: - NumberToImage.prototype.onLoad = function () { - if (this.fontUI != null) { - NumberToImage_1.font = this.fontUI; - } - }; - //第一个参数 数字, 第二个参数 数字间距 第三个参数 占位宽度 第四个参数 目标节点 - NumberToImage.numberToImageNodes = function (number, width, posX, name, targetNode, middle) { - if (middle === void 0) { middle = false; } - var numStr = number.toString(); - var cha = 0; - if (number > 99) - cha = -posX; - else if (number < 10) - cha = posX; - if (targetNode.children.length > 0) - targetNode.removeAllChildren(); - for (var i = 0; i < numStr.length; i++) { - var digit = parseInt(numStr[i], 10); - var node = new cc.Node(); - var sprite = node.addComponent(cc.Sprite); - // debugger; - sprite.spriteFrame = this.font._spriteFrames[name + digit + ""]; - // 将节点添加到目标节点下 - node.x = i * width + cha; - node.parent = targetNode; - } - if (middle) { - targetNode.x = targetNode.x - targetNode.children.length * (width - 15) / 2; - } - }; - NumberToImage.getTimeMargin = function (number, width, name, targetNode) { - var timeArr = []; - var total = 0; - total = number; - var hour = 0; - hour = parseInt((total / 3600) + ""); //计算整数小时数 - var afterHour = total - hour * 60 * 60; //取得算出小时数后剩余的秒数 - var min = parseInt((afterHour / 60) + ""); //计算整数分 - var m = "" + min; - if (min < 10) - m = "0" + min; - var afterMin = total - hour * 60 * 60 - min * 60; //取得算出分后剩余的秒数 - var miao = afterMin + ""; - if (afterMin < 10) - miao = "0" + afterMin; - var result = m + miao; - for (var i = 0; i < result.length; i++) { - var digit = parseInt(result[i], 10); - timeArr.push(digit); - } - if (targetNode.children.length > 0) { - for (var i = 0; i < targetNode.children.length; i++) { - targetNode.children[i].getComponent(cc.Sprite).spriteFrame = this.font._spriteFrames[name + timeArr[i] + ""]; - } - } - else { - for (var i = 0; i < 4; i++) { - var node = new cc.Node(); - var sprite = node.addComponent(cc.Sprite); - var digit = timeArr[i]; - // debugger; - sprite.spriteFrame = this.font._spriteFrames[name + digit + ""]; - // 将节点添加到目标节点下 - node.x = i * width; - if (i > 1) - node.x += 35; - node.parent = targetNode; - } - } - }; - var NumberToImage_1; - NumberToImage.font = null; - __decorate([ - property(cc.SpriteAtlas) - ], NumberToImage.prototype, "fontUI", void 0); - NumberToImage = NumberToImage_1 = __decorate([ - ccclass - ], NumberToImage); - return NumberToImage; -}(cc.Component)); -exports.default = NumberToImage; - -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,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImFzc2V0c1xcU2NyaXB0XFxOdW1iZXJUb0ltYWdlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSxvQkFBb0I7QUFDcEIsd0VBQXdFO0FBQ3hFLG1CQUFtQjtBQUNuQixrRkFBa0Y7QUFDbEYsOEJBQThCO0FBQzlCLGtGQUFrRjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBRTVFLElBQUEsS0FBc0IsRUFBRSxDQUFDLFVBQVUsRUFBbEMsT0FBTyxhQUFBLEVBQUUsUUFBUSxjQUFpQixDQUFDO0FBRzFDO0lBQTJDLGlDQUFZO0lBQXZEO1FBQUEscUVBeUdDO1FBdEdHLFlBQU0sR0FBbUIsSUFBSSxDQUFDOztRQTZFOUIsaUlBQWlJO1FBQ2pJLDBCQUEwQjtRQUMxQiwwQkFBMEI7UUFDMUIsb0JBQW9CO1FBQ3BCLG9DQUFvQztRQUNwQyxxQkFBcUI7UUFDckIsb0JBQW9CO1FBQ3BCLG9DQUFvQztRQUNwQyxxQkFBcUI7UUFDckIsb0JBQW9CO1FBQ3BCLG9DQUFvQztRQUNwQyxxQkFBcUI7UUFDckIsb0JBQW9CO1FBQ3BCLG9DQUFvQztRQUNwQyxxQkFBcUI7UUFDckIsbUJBQW1CO1FBQ25CLDBDQUEwQztRQUMxQyxRQUFRO1FBRVIsMkJBQTJCO1FBQzNCLG1DQUFtQztRQUNuQyw0REFBNEQ7UUFDNUQsSUFBSTtRQUVKLGlCQUFpQjtJQUNyQixDQUFDO3NCQXpHb0IsYUFBYTtJQU05Qix3QkFBd0I7SUFFeEIsOEJBQU0sR0FBTjtRQUNJLElBQUcsSUFBSSxDQUFDLE1BQU0sSUFBSSxJQUFJLEVBQUM7WUFDbkIsZUFBYSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDO1NBQ3BDO0lBQ0wsQ0FBQztJQUVELGdEQUFnRDtJQUN6QyxnQ0FBa0IsR0FBekIsVUFBMEIsTUFBTSxFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLFVBQWtCLEVBQUMsTUFBc0I7UUFBdEIsdUJBQUEsRUFBQSxjQUFzQjtRQUMx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Q0FBQztJQUZ2QjtRQURDLFFBQVEsQ0FBQyxFQUFFLENBQUMsV0FBVyxDQUFDO2lEQUNLO0lBSGIsYUFBYTtRQURqQyxPQUFPO09BQ2EsYUFBYSxDQXlHakM7SUFBRCxvQkFBQztDQXpHRCxBQXlHQyxDQXpHMEMsRUFBRSxDQUFDLFNBQVMsR0F5R3REO2tCQXpHb0IsYUFBYSIsImZpbGUiOiIiLCJzb3VyY2VSb290IjoiLyIsInNvdXJjZXNDb250ZW50IjpbIi8vIExlYXJuIFR5cGVTY3JpcHQ6XHJcbi8vICAtIGh0dHBzOi8vZG9jcy5jb2Nvcy5jb20vY3JlYXRvci9tYW51YWwvZW4vc2NyaXB0aW5nL3R5cGVzY3JpcHQuaHRtbFxyXG4vLyBMZWFybiBBdHRyaWJ1dGU6XHJcbi8vICAtIGh0dHBzOi8vZG9jcy5jb2Nvcy5jb20vY3JlYXRvci9tYW51YWwvZW4vc2NyaXB0aW5nL3JlZmVyZW5jZS9hdHRyaWJ1dGVzLmh0bWxcclxuLy8gTGVhcm4gbGlmZS1jeWNsZSBjYWxsYmFja3M6XHJcbi8vICAtIGh0dHBzOi8vZG9jcy5jb2Nvcy5jb20vY3JlYXRvci9tYW51YWwvZW4vc2NyaXB0aW5nL2xpZmUtY3ljbGUtY2FsbGJhY2tzLmh0bWxcclxuXHJcbmNvbnN0IHtjY2NsYXNzLCBwcm9wZXJ0eX0gPSBjYy5fZGVjb3JhdG9yO1xyXG5cclxuQGNjY2xhc3NcclxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgTnVtYmVyVG9JbWFnZSBleHRlbmRzIGNjLkNvbXBvbmVudCB7XHJcblxyXG4gICAgQHByb3BlcnR5KGNjLlNwcml0ZUF0bGFzKVxyXG4gICAgZm9udFVJOiBjYy5TcHJpdGVBdGxhcyA9IG51bGw7XHJcblxyXG4gICAgc3RhdGljIGZvbnQ6YW55ID0gbnVsbDtcclxuICAgIC8vIExJRkUtQ1lDTEUgQ0FMTEJBQ0tTOlxyXG5cclxuICAgIG9uTG9hZCAoKSB7XHJcbiAgICAgICAgaWYodGhpcy5mb250VUkgIT0gbnVsbCl7XHJcbiAgICAgICAgICAgIE51bWJlclRvSW1hZ2UuZm9udCA9IHRoaXMuZm9udFVJO1xyXG4gICAgICAgIH0gXHJcbiAgICB9XHJcblxyXG4gICAgLy/nrKzkuIDkuKrlj4LmlbAgIOaVsOWtl++8jCDnrKzkuozkuKrlj4LmlbAgIOaVsOWtl+mXtOi3nSAg56ys5LiJ5Liq5Y+C5pWwIOWNoOS9jeWuveW6piAg56ys5Zub5Liq5Y+C5pWwIOebruagh+iKgueCuVxyXG4gICAgc3RhdGljIG51bWJlclRvSW1hZ2VOb2RlcyhudW1iZXIsIHdpZHRoLCBwb3NYLCBuYW1lICx0YXJnZXROb2RlOmNjLk5vZGUsbWlkZGxlOmJvb2xlYW4gPSBmYWxzZSkge1xyXG4gICAgICAgIGNvbnN0IG51bVN0ciA9IG51bWJlci50b1N0cmluZygpO1xyXG4gICAgICAgIGxldCBjaGEgPSAwOyBcclxuICAgICAgICBpZihudW1iZXIgPiA5OSkgY2hhICA9IC1wb3NYXHJcbiAgICAgICAgZWxzZSBpZihudW1iZXIgPCAxMCkgY2hhICA9IHBvc1hcclxuICAgICAgICBpZih0YXJnZXROb2RlLmNoaWxkcmVuLmxlbmd0aCA+IDApXHJcbiAgICAgICAgICAgIHRhcmdldE5vZGUucmVtb3ZlQWxsQ2hpbGRyZW4oKTtcclxuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IG51bVN0ci5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgICAgICBjb25zdCBkaWdpdCA9IHBhcnNlSW50KG51bVN0cltpXSwgMTApO1xyXG4gICAgICAgICAgICBjb25zdCBub2RlID0gbmV3IGNjLk5vZGUoKTtcclxuICAgICAgICAgICAgY29uc3Qgc3ByaXRlID0gbm9kZS5hZGRDb21wb25lbnQoY2MuU3ByaXRlKTtcclxuICAgICAgICAgICAgLy8gZGVidWdnZXI7XHJcbiAgICAgICAgICAgIHNwcml0ZS5zcHJpdGVGcmFtZSA9IHRoaXMuZm9udC5fc3ByaXRlRnJhbWVzW25hbWUgKyBkaWdpdCArIFwiXCJdO1xyXG4gICAgICAgICAgICAvLyDlsIboioLngrnmt7vliqDliLDnm67moIfoioLngrnkuItcclxuICAgICAgICAgICAgbm9kZS54ID0gaSAqIHdpZHRoICsgY2hhO1xyXG4gICAgICAgICAgICBub2RlLnBhcmVudCA9IHRhcmdldE5vZGU7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmKG1pZGRsZSl7XHJcbiAgICAgICAgICAgIHRhcmdldE5vZGUueCA9IHRhcmdldE5vZGUueCAtIHRhcmdldE5vZGUuY2hpbGRyZW4ubGVuZ3RoICogKHdpZHRoLTE1KSAvIDI7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHN0YXRpYyBnZXRUaW1lTWFyZ2luKG51bWJlciwgd2lkdGgsIG5hbWUgLHRhcmdldE5vZGU6Y2MuTm9kZSkge1xyXG4gICAgICAgIGxldCB0aW1lQXJyID0gW107XHJcbiAgICAgICAgbGV0IHRvdGFsID0gMDtcclxuICAgICAgICB0b3RhbCA9IG51bWJlcjtcclxuICAgICAgICBsZXQgaG91ciA9IDA7XHJcbiAgICAgICAgaG91ciA9IHBhcnNlSW50KCh0b3RhbCAvIDM2MDApICsgXCJcIik7Ly/orqHnrpfmlbTmlbDlsI/ml7bmlbBcclxuICAgICAgICBsZXQgYWZ0ZXJIb3VyID0gdG90YWwgLSBob3VyICogNjAgKiA2MDsvL+WPluW+l+eul+WHuuWwj+aXtuaVsOWQjuWJqeS9meeahOenkuaVsFxyXG4gICAgICAgIGxldCBtaW4gPSBwYXJzZUludCgoYWZ0ZXJIb3VyIC8gNjApK1wiXCIpOy8v6K6h566X5pW05pWw5YiGXHJcbiAgICAgICAgbGV0IG0gPSBcIlwiICsgbWluOyAgXHJcblxyXG4gICAgICAgIGlmKG1pbiA8IDEwKSBtID0gXCIwXCIrbWluO1xyXG4gICAgICAgIGxldCBhZnRlck1pbiA9IHRvdGFsIC0gaG91ciAqIDYwICogNjAgLSBtaW4gKiA2MDsvL+WPluW+l+eul+WHuuWIhuWQjuWJqeS9meeahOenkuaVsFxyXG4gICAgICAgIGxldCBtaWFvID0gYWZ0ZXJNaW4gKyBcIlwiO1xyXG5cclxuICAgICAgICBpZihhZnRlck1pbiA8IDEwKSBtaWFvID0gXCIwXCIgKyBhZnRlck1pbjtcclxuXHJcbiAgICAgICAgbGV0IHJlc3VsdCA9IG0gKyBtaWFvO1xyXG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgcmVzdWx0Lmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgICAgIGNvbnN0IGRpZ2l0ID0gcGFyc2VJbnQocmVzdWx0W2ldLCAxMCk7XHJcbiAgICAgICAgICAgIHRpbWVBcnIucHVzaChkaWdpdCk7XHJcbiAgICAgICAgfVxyXG4gIFxyXG4gICAgICAgIGlmKHRhcmdldE5vZGUuY2hpbGRyZW4ubGVuZ3RoID4gMCl7XHJcbiAgICAgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdGFyZ2V0Tm9kZS5jaGlsZHJlbi5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgICAgICAgICAgdGFyZ2V0Tm9kZS5jaGlsZHJlbltpXS5nZXRDb21wb25lbnQoY2MuU3ByaXRlKS5zcHJpdGVGcmFtZSA9IHRoaXMuZm9udC5fc3ByaXRlRnJhbWVzW25hbWUgKyB0aW1lQXJyW2ldICsgXCJcIl07XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZXtcclxuICAgICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCA0OyBpKyspIHtcclxuICAgICAgICAgICAgICAgIGNvbnN0IG5vZGUgPSBuZXcgY2MuTm9kZSgpO1xyXG4gICAgICAgICAgICAgICAgY29uc3Qgc3ByaXRlID0gbm9kZS5hZGRDb21wb25lbnQoY2MuU3ByaXRlKTtcclxuICAgICAgICAgICAgICAgIGNvbnN0IGRpZ2l0ID0gdGltZUFycltpXTtcclxuICAgICAgICAgICAgICAgIC8vIGRlYnVnZ2VyO1xyXG4gICAgICAgICAgICAgICAgc3ByaXRlLnNwcml0ZUZyYW1lID0gdGhpcy5mb250Ll9zcHJpdGVGcmFtZXNbbmFtZSArIGRpZ2l0ICsgXCJcIl07XHJcbiAgICAgICAgICAgICAgICAvLyDlsIboioLngrnmt7vliqDliLDnm67moIfoioLngrnkuItcclxuICAgICAgICAgICAgICAgIG5vZGUueCA9IGkgKiB3aWR0aDtcclxuICAgICAgICAgICAgICAgIGlmKGkgPiAxKSBub2RlLnggKz0gMzU7XHJcbiAgICAgICAgICAgICAgICBub2RlLnBhcmVudCA9IHRhcmdldE5vZGU7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcblxyXG4gICAgfVxyXG5cclxuICAgIC8vIHN0YXRpYyBjYWxjdWxhdGVBbmRDb252ZXJ0KG51bTE6IG51bWJlciwgbnVtMjogbnVtYmVyLCBvcGVyYXRvcjogJysnIHwgJy0nIHwgJyonIHwgJy8nLCBzcHJpdGVGcmFtZXM6IFNwcml0ZUZyYW1lW10pOiBOb2RlW10ge1xyXG4gICAgLy8gICAgIGxldCByZXN1bHQ6IG51bWJlcjtcclxuICAgIC8vICAgICBzd2l0Y2ggKG9wZXJhdG9yKSB7XHJcbiAgICAvLyAgICAgICAgIGNhc2UgJysnOlxyXG4gICAgLy8gICAgICAgICAgICAgcmVzdWx0ID0gbnVtMSArIG51bTI7XHJcbiAgICAvLyAgICAgICAgICAgICBicmVhaztcclxuICAgIC8vICAgICAgICAgY2FzZSAnLSc6XHJcbiAgICAvLyAgICAgICAgICAgICByZXN1bHQgPSBudW0xIC0gbnVtMjtcclxuICAgIC8vICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgLy8gICAgICAgICBjYXNlICcqJzpcclxuICAgIC8vICAgICAgICAgICAgIHJlc3VsdCA9IG51bTEgKiBudW0yO1xyXG4gICAgLy8gICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAvLyAgICAgICAgIGNhc2UgJy8nOlxyXG4gICAgLy8gICAgICAgICAgICAgcmVzdWx0ID0gbnVtMSAvIG51bTI7XHJcbiAgICAvLyAgICAgICAgICAgICBicmVhaztcclxuICAgIC8vICAgICAgICAgZGVmYXVsdDpcclxuICAgIC8vICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcign5LiN5pSv5oyB55qE6L+Q566X56ymJyk7XHJcbiAgICAvLyAgICAgfVxyXG5cclxuICAgIC8vICAgICAvLyDlpITnkIbnu5PmnpzkuLrlsI/mlbDnmoTmg4XlhrXvvIzov5nph4znroDljZXlj5bmlbRcclxuICAgIC8vICAgICByZXN1bHQgPSBNYXRoLmZsb29yKHJlc3VsdCk7XHJcbiAgICAvLyAgICAgcmV0dXJuIHRoaXMubnVtYmVyVG9JbWFnZU5vZGVzKHJlc3VsdCwgc3ByaXRlRnJhbWVzKTtcclxuICAgIC8vIH1cclxuXHJcbiAgICAvLyB1cGRhdGUgKGR0KSB7fVxyXG59XHJcbiJdfQ== -//------QC-SOURCE-SPLIT------ - - (function() { - var nodeEnv = typeof require !== 'undefined' && typeof process !== 'undefined'; - var __module = nodeEnv ? module : {exports:{}}; - var __filename = 'preview-scripts/assets/Script/Wall.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, '87a44m5f/pPAKIrsyArSr/V', 'Wall'); -// Script/Wall.ts - -"use strict"; -// Learn TypeScript: -// - https://docs.cocos.com/creator/manual/en/scripting/typescript.html -// Learn Attribute: -// - https://docs.cocos.com/creator/manual/en/scripting/reference/attributes.html -// Learn life-cycle callbacks: -// - https://docs.cocos.com/creator/manual/en/scripting/life-cycle-callbacks.html -var __extends = (this && this.__extends) || (function () { - var extendStatics = function (d, b) { - extendStatics = Object.setPrototypeOf || - ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) || - function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; }; - return extendStatics(d, b); - }; - return function (d, b) { - extendStatics(d, b); - function __() { this.constructor = d; } - d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); - }; -})(); -var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) { - var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; - if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc); - else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; - return c > 3 && r && Object.defineProperty(target, key, r), r; -}; -Object.defineProperty(exports, "__esModule", { value: true }); -exports.WallColor = exports.WallType = exports.WallSpecial = void 0; -var Map_1 = require("./Map"); -var _a = cc._decorator, ccclass = _a.ccclass, property = _a.property; -var WallSpecial; -(function (WallSpecial) { - /*普通门*/ - WallSpecial[WallSpecial["\u666E\u901A\u95E8"] = 0] = "\u666E\u901A\u95E8"; - /*星星门*/ - WallSpecial[WallSpecial["\u661F\u661F\u95E8"] = 1] = "\u661F\u661F\u95E8"; - /*开关门*/ - WallSpecial[WallSpecial["\u5F00\u5173\u95E8"] = 2] = "\u5F00\u5173\u95E8"; - /*冻结门 */ - WallSpecial[WallSpecial["\u51BB\u7ED3\u95E8"] = 3] = "\u51BB\u7ED3\u95E8"; -})(WallSpecial = exports.WallSpecial || (exports.WallSpecial = {})); -var WallType; -(function (WallType) { - /*普通地块 */ - WallType[WallType["\u95E8\u6A2A\u5411\u4E0B"] = 0] = "\u95E8\u6A2A\u5411\u4E0B"; - /*起点地块 */ - WallType[WallType["\u95E8\u6A2A\u5411\u4E0A"] = 1] = "\u95E8\u6A2A\u5411\u4E0A"; - /*湿地 */ - WallType[WallType["\u95E8\u7AD6\u5411\u53F3"] = 2] = "\u95E8\u7AD6\u5411\u53F3"; - /*山峰 */ - WallType[WallType["\u95E8\u7AD6\u5411\u5DE6"] = 3] = "\u95E8\u7AD6\u5411\u5DE6"; - /*终点地块 */ - WallType[WallType["\u5899\u6A2A\u5411\u4E0B"] = 4] = "\u5899\u6A2A\u5411\u4E0B"; - /*息壤 */ - WallType[WallType["\u5899\u6A2A\u5411\u4E0A"] = 5] = "\u5899\u6A2A\u5411\u4E0A"; - /*加固 */ - WallType[WallType["\u5899\u7AD6\u5411\u53F3"] = 6] = "\u5899\u7AD6\u5411\u53F3"; - /*加固 */ - WallType[WallType["\u5899\u7AD6\u5411\u5DE6"] = 7] = "\u5899\u7AD6\u5411\u5DE6"; -})(WallType = exports.WallType || (exports.WallType = {})); -var WallColor; -(function (WallColor) { - /*普通地块 */ - WallColor[WallColor["\u7D2B\u8272"] = 0] = "\u7D2B\u8272"; - /*湿地 */ - WallColor[WallColor["\u9EC4\u8272"] = 1] = "\u9EC4\u8272"; - /*山峰 */ - WallColor[WallColor["\u7EFF\u8272"] = 2] = "\u7EFF\u8272"; - /*终点地块 */ - WallColor[WallColor["\u84DD\u8272"] = 3] = "\u84DD\u8272"; - /*息壤 */ - WallColor[WallColor["\u7C89\u8272"] = 4] = "\u7C89\u8272"; - /*加固 */ - WallColor[WallColor["\u6A58\u9EC4\u8272"] = 5] = "\u6A58\u9EC4\u8272"; - /*加固 */ - WallColor[WallColor["\u9752\u8272"] = 6] = "\u9752\u8272"; - /*加固 */ - WallColor[WallColor["\u767D\u8272"] = 7] = "\u767D\u8272"; - /*普通地块 */ - WallColor[WallColor["\u7EA2\u8272"] = 8] = "\u7EA2\u8272"; - /*普通地块 */ - WallColor[WallColor["\u7070\u8272"] = 9] = "\u7070\u8272"; -})(WallColor = exports.WallColor || (exports.WallColor = {})); -var Wall = /** @class */ (function (_super) { - __extends(Wall, _super); - function Wall() { - var _this = _super !== null && _super.apply(this, arguments) || this; - _this.number = null; - _this.type = WallType.墙横向下; - _this.special = WallSpecial.普通门; - _this.color = WallColor.紫色; - _this.wall_SpriteFrames = null; - _this.down_SpriteFrames = null; - return _this; - // update (dt) {} - } - // LIFE-CYCLE CALLBACKS: - // onLoad () {} - Wall.prototype.start = function () { - // console.log(this.type); - }; - Wall.prototype.jsonDeepClone = function (obj) { - return JSON.parse(JSON.stringify(obj)); - }; - Wall.prototype.init = function (wall_Info, posX, posY, direction) { - this.wall_Info = this.jsonDeepClone(wall_Info); - // this.open = true; - if (wall_Info == null) { - this.posX = posX; - this.posY = posY; - if (direction) - this.direction = direction; - // console.log("门方向赋值",direction); - if (direction == "up") { - this.node.parent.zIndex = 100 + this.posX - this.posY * 3; - } - else if (direction == "down" || direction == "right" || - direction == "rightdown" || direction == "downright" - || direction == "rightup" || direction == "upright") { - this.node.parent.zIndex = 30 + this.posX - this.posY * 3; - } - else if (direction == "left" || direction == "leftdown" || direction == "downleft") { - this.node.parent.zIndex = 70 + this.posX - this.posY * 3; - } - else - this.node.parent.zIndex = 70 + this.posX - this.posY * 3; - Map_1.default._instance.mapBlocksWall[this.posX][this.posY].getComponent("MapBlock").block_Id = "Wall"; - //console.log(this.posX,this.posY,MapConroler._instance.mapBlocksWall[this.posX][this.posY].getComponent("MapBlock").block_Id); - // console.log(this.posX,this.posY,this.node.zIndex); - //this.node.getChildByName("num").getComponent(cc.Label).string = direction; - //this.node.getChildByName("num").getComponent(cc.Label).string = ":" + this.node.parent.zIndex; - } - if (wall_Info != null) { - this.color = wall_Info.color; - this.special = wall_Info.special; - this.initType(); - if (wall_Info.length > 0) { - this.initColor(wall_Info.length); - } - else - this.node.removeComponent("cc.Sprite"); - if (this.posX != null) { - Map_1.default._instance.mapBlocksWall[this.posX][this.posY].getComponent("MapBlock").block_Id = "Wall"; - //console.log(this.posX,this.posY,MapConroler._instance.mapBlocksWall[this.posX][this.posY].getComponent("MapBlock").block_Id); - } - } - // setTimeout(() => { - // this.node.getChildByName("num").getComponent(cc.Label).string = ":" + this.node.parent.zIndex; - // }, 1000); - }; - //创建门的颜色 - Wall.prototype.initColor = function (length) { - var direction = this.node.parent.name; - var double = 0; - if (direction == "left" || direction == "right") { - double = 3; - } - // debugger; - if (this.wall_SpriteFrames) { - var name = this.color + "color" + (length + double); - var spriteFrame = this.wall_SpriteFrames._spriteFrames[name]; - this.node.getComponent(cc.Sprite).spriteFrame = spriteFrame; - } - if (this.down_SpriteFrames) { - var name2 = this.color + "down" + (length + double); - var downFrame = this.down_SpriteFrames._spriteFrames[name2]; - this.node.parent.getChildByName("down").getComponent(cc.Sprite).spriteFrame = downFrame; - } - }; - //创建特殊类型门 - Wall.prototype.initType = function () { - switch (this.special) { - case WallSpecial.星星门: - var star = cc.instantiate(Map_1.default._instance.Block_Prop[this.special]); - star.parent = this.node.parent; - // console.log("门的方向",this.direction,"长度",this.wall_Info.length); - // star.scaleX = star.scaleY = 0.5; - if (this.wall_Info.length > 0) { - if (this.direction == "right" || this.direction == "left") { - star.children[this.wall_Info.length + 2].active = true; - } - else if (this.direction == "up" || this.direction == "down") { - star.children[this.wall_Info.length - 1].active = true; - } - } - star.setPosition(this.node.width / 2 + this.node.x, this.node.height / 2 + this.node.y); - break; - case WallSpecial.开关门: - var name = "open" + this.wall_Info.length; - this.openNode = this.node.parent.getChildByName("open").getChildByName(name); - this.openNode.active = true; - if (this.wall_Info.lock == false) { - this.open = true; - this.openNode.children[0].scaleX *= 0.01; - this.openNode.children[1].scaleX *= 0.01; - } - else { - this.open = false; - } - break; - case WallSpecial.冻结门: - var freeze = "freeze" + this.wall_Info.length; - this.freezeNode = this.node.parent.getChildByName("freeze").getChildByName(freeze); - this.freezeNode.active = true; - if (this.wall_Info.freeze) { - this.freezeNode.getChildByName("num").getComponent(cc.Label).string = this.wall_Info.freeze + ""; - } - break; - } - }; - //播放星星门通过 - Wall.prototype.playStarDoor = function () { - if (this.node.parent.getChildByName("star")) { - var star = this.node.parent.getChildByName("star"); - for (var i = 0; i < star.children.length; i++) { - if (star.children[i].active == true) { - var starChild = star.children[i]; - for (var j = 0; j < starChild.children.length; j++) { - starChild.children[j].active = true; - starChild.children[j].getComponent(sp.Skeleton).setAnimation(1, "taopao1", false); - } - } - } - } - }; - //改变开关门状态 - Wall.prototype.changeLock = function () { - this.open = !this.open; - console.log("开关门状态改变", this.open); - if (!this.openNode.active) { - this.openNode.active = true; - } - var fill = this.openNode.children[0].scaleX == 1 ? 0.01 : 1; - if (this.openNode.children[0].scaleX < 0) - fill = -fill; - // console.log("目标",fill); - cc.tween(this.openNode.children[0]) - .to(0.3, { scaleX: this.openNode.children[0].scaleX < 0 ? -fill : fill }) - .call(function () { - // console.log("左边完成"); - }) - .start(); - cc.tween(this.openNode.children[1]) - .to(0.3, { scaleX: this.openNode.children[1].scaleX < 0 ? -fill : fill }) - .call(function () { - // console.log("右边完成"); - }) - .start(); - }; - Wall.prototype.changeFreeze = function () { - var numStr = this.freezeNode.getChildByName("num").getComponent(cc.Label); - var num = parseInt(numStr.string); - num -= 1; - this.freezeNode.getChildByName("num").getComponent(cc.Label).string = num + ""; - if (num == 0) { - this.freezeNode.parent.active = false; - } - }; - Wall.prototype.downDoor = function () { - if (this.openNode) { - if (this.openNode.children[0].scaleX == 1) - return; - } - if (this.freezeNode) { - if (this.freezeNode.active == true) - return; - } - this.node.opacity = 0; - if (this.special == WallSpecial.星星门) { - this.node.parent.getChildByName("star").y -= 10; - } - this.node.parent.getChildByName("down").active = true; - }; - Wall.prototype.upDoor = function () { - if (this.special == WallSpecial.星星门) { - this.node.parent.getChildByName("star").y += 10; - } - this.node.parent.getChildByName("down").active = false; - this.node.opacity = 250; - }; - __decorate([ - property(cc.Label) - ], Wall.prototype, "number", void 0); - __decorate([ - property({ - tooltip: '墙或者门的方向', - type: cc.Enum(WallType), - }) - ], Wall.prototype, "type", void 0); - __decorate([ - property({ - tooltip: '墙或者门的方向', - type: cc.Enum(WallSpecial), - }) - ], Wall.prototype, "special", void 0); - __decorate([ - property({ - tooltip: '门的颜色', - type: cc.Enum(WallColor), - }) - ], Wall.prototype, "color", void 0); - __decorate([ - property(cc.SpriteAtlas) - ], Wall.prototype, "wall_SpriteFrames", void 0); - __decorate([ - property(cc.SpriteAtlas) - ], Wall.prototype, "down_SpriteFrames", void 0); - Wall = __decorate([ - ccclass - ], Wall); - return Wall; -}(cc.Component)); -exports.default = Wall; - -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,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImFzc2V0c1xcU2NyaXB0XFxXYWxsLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSxvQkFBb0I7QUFDcEIsd0VBQXdFO0FBQ3hFLG1CQUFtQjtBQUNuQixrRkFBa0Y7QUFDbEYsOEJBQThCO0FBQzlCLGtGQUFrRjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUVsRiw2QkFBZ0M7QUFFMUIsSUFBQSxLQUFzQixFQUFFLENBQUMsVUFBVSxFQUFsQyxPQUFPLGFBQUEsRUFBRSxRQUFRLGNBQWlCLENBQUM7QUFFMUMsSUFBWSxXQVNYO0FBVEQsV0FBWSxXQUFXO0lBQ25CLE9BQU87SUFDUCx5RUFBUyxDQUFBO0lBQ1QsT0FBTztJQUNQLHlFQUFTLENBQUE7SUFDVCxPQUFPO0lBQ1AseUVBQVMsQ0FBQTtJQUNULFFBQVE7SUFDUix5RUFBUyxDQUFBO0FBQ2IsQ0FBQyxFQVRXLFdBQVcsR0FBWCxtQkFBVyxLQUFYLG1CQUFXLFFBU3RCO0FBRUQsSUFBWSxRQWtCWDtBQWxCRCxXQUFZLFFBQVE7SUFFaEIsU0FBUztJQUNULCtFQUFVLENBQUE7SUFDVixTQUFTO0lBQ1QsK0VBQVUsQ0FBQTtJQUNWLE9BQU87SUFDUCwrRUFBVSxDQUFBO0lBQ1YsT0FBTztJQUNQLCtFQUFVLENBQUE7SUFDVixTQUFTO0lBQ1QsK0VBQVUsQ0FBQTtJQUNWLE9BQU87SUFDUCwrRUFBVSxDQUFBO0lBQ1YsT0FBTztJQUNQLCtFQUFVLENBQUE7SUFDVixPQUFPO0lBQ1AsK0VBQVUsQ0FBQTtBQUNkLENBQUMsRUFsQlcsUUFBUSxHQUFSLGdCQUFRLEtBQVIsZ0JBQVEsUUFrQm5CO0FBRUQsSUFBWSxTQXFCWDtBQXJCRCxXQUFZLFNBQVM7SUFDakIsU0FBUztJQUNULHlEQUFRLENBQUE7SUFDUixPQUFPO0lBQ1AseURBQVEsQ0FBQTtJQUNSLE9BQU87SUFDUCx5REFBUSxDQUFBO0lBQ1IsU0FBUztJQUNULHlEQUFRLENBQUE7SUFDUixPQUFPO0lBQ1AseURB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LFFBQVEsQ0FBQztZQUNOLE9BQU8sRUFBRSxTQUFTO1lBQ2xCLElBQUksRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQztTQUM3QixDQUFDO3lDQUNxQztJQU12QztRQUpDLFFBQVEsQ0FBQztZQUNOLE9BQU8sRUFBRSxNQUFNO1lBQ2YsSUFBSSxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDO1NBQzNCLENBQUM7dUNBQzhCO0lBR2hDO1FBREMsUUFBUSxDQUFDLEVBQUUsQ0FBQyxXQUFXLENBQUM7bURBQ2dCO0lBR3pDO1FBREMsUUFBUSxDQUFDLEVBQUUsQ0FBQyxXQUFXLENBQUM7bURBQ2dCO0lBM0J4QixJQUFJO1FBRHhCLE9BQU87T0FDYSxJQUFJLENBcVB4QjtJQUFELFdBQUM7Q0FyUEQsQUFxUEMsQ0FyUGlDLEVBQUUsQ0FBQyxTQUFTLEdBcVA3QztrQkFyUG9CLElBQUkiLCJmaWxlIjoiIiwic291cmNlUm9vdCI6Ii8iLCJzb3VyY2VzQ29udGVudCI6WyIvLyBMZWFybiBUeXBlU2NyaXB0OlxyXG4vLyAgLSBodHRwczovL2RvY3MuY29jb3MuY29tL2NyZWF0b3IvbWFudWFsL2VuL3NjcmlwdGluZy90eXBlc2NyaXB0Lmh0bWxcclxuLy8gTGVhcm4gQXR0cmlidXRlOlxyXG4vLyAgLSBodHRwczovL2RvY3MuY29jb3MuY29tL2NyZWF0b3IvbWFudWFsL2VuL3NjcmlwdGluZy9yZWZlcmVuY2UvYXR0cmlidXRlcy5odG1sXHJcbi8vIExlYXJuIGxpZmUtY3ljbGUgY2FsbGJhY2tzOlxyXG4vLyAgLSBodHRwczovL2RvY3MuY29jb3MuY29tL2NyZWF0b3IvbWFudWFsL2VuL3NjcmlwdGluZy9saWZlLWN5Y2xlLWNhbGxiYWNrcy5odG1sXHJcblxyXG5pbXBvcnQgTWFwQ29ucm9sZXIgZnJvbSBcIi4vTWFwXCI7XHJcblxyXG5jb25zdCB7Y2NjbGFzcywgcHJvcGVydHl9ID0gY2MuX2RlY29yYXRvcjtcclxuXHJcbmV4cG9ydCBlbnVtIFdhbGxTcGVjaWFse1xyXG4gICAgLyrmma7pgJrpl6gqL1xyXG4gICAgXCLmma7pgJrpl6hcIiA9IDAsICBcclxuICAgIC8q5pif5pif6ZeoKi9cclxuICAgIFwi5pif5pif6ZeoXCIgPSAxLCAgXHJcbiAgICAvKuW8gOWFs+mXqCovXHJcbiAgICBcIuW8gOWFs+mXqFwiID0gMiwgIFxyXG4gICAgLyrlhrvnu5Ppl6ggKi9cclxuICAgIFwi5Ya757uT6ZeoXCIgPSAzLCAgXHJcbn1cclxuXHJcbmV4cG9ydCBlbnVtIFdhbGxUeXBle1xyXG4gICAgXHJcbiAgICAvKuaZrumAmuWcsOWdlyAqL1xyXG4gICAgXCLpl6jmqKrlkJHkuItcIiA9IDAsICBcclxuICAgIC8q6LW354K55Zyw5Z2XICovXHJcbiAgICBcIumXqOaoquWQkeS4ilwiID0gMSwgIFxyXG4gICAgLyrmub/lnLAgKi9cclxuICAgIFwi6Zeo56uW5ZCR5Y+zXCIgPSAyLCAgXHJcbiAgICAvKuWxseWzsCAqL1xyXG4gICAgXCLpl6jnq5blkJHlt6ZcIiA9IDMsICBcclxuICAgIC8q57uI54K55Zyw5Z2XICovXHJcbiAgICBcIuWimeaoquWQkeS4i1wiID0gNCwgIFxyXG4gICAgLyrmga/lo6QgKi9cclxuICAgIFwi5aKZ5qiq5ZCR5LiKXCIgPSA1LCAgXHJcbiAgICAvKuWKoOWbuiAqL1xyXG4gICAgXCLlopnnq5blkJHlj7NcIiA9IDYsICBcclxuICAgIC8q5Yqg5Zu6ICovXHJcbiAgICBcIuWimeerluWQkeW3plwiID0gNywgIFxyXG59XHJcblxyXG5leHBvcnQgZW51bSBXYWxsQ29sb3J7XHJcbiAgICAvKuaZrumAmuWcsOWdlyAqL1xyXG4gICAgXCLntKvoibJcIiA9IDAsICBcclxuICAgIC8q5rm/5ZywICovXHJcbiAgICBcIum7hOiJslwiID0gMSwgIFxyXG4gICAgLyrlsbHls7AgKi9cclxuICAgIFwi57u/6ImyXCIgPSAyLCAgXHJcbiAgICAvKue7iOeCueWcsOWdlyAqL1xyXG4gICAgXCLok53oibJcIiA9IDMsICBcclxuICAgIC8q5oGv5aOkICovXHJcbiAgICBcIueyieiJslwiID0gNCwgIFxyXG4gICAgLyrliqDlm7ogKi9cclxuICAgIFwi5qmY6buE6ImyXCIgPSA1LCAgXHJcbiAgICAvKuWKoOWbuiAqL1xyXG4gICAgXCLpnZLoibJcIiA9IDYsICBcclxuICAgIC8q5Yqg5Zu6ICovXHJcbiAgICBcIueZveiJslwiID0gNywgIFxyXG4gICAgLyrmma7pgJrlnLDlnZcgKi9cclxuICAgIFwi57qi6ImyXCIgPSA4LCBcclxuICAgIC8q5pmu6YCa5Zyw5Z2XICovXHJcbiAgICBcIueBsOiJslwiID0gOSwgXHJcbn1cclxuXHJcbkBjY2NsYXNzXHJcbmV4cG9ydCBkZWZhdWx0IGNsYXNzIFdhbGwgZXh0ZW5kcyBjYy5Db21wb25lbnQge1xyXG5cclxuICAgIEBwcm9wZXJ0eShjYy5MYWJlbClcclxuICAgIG51bWJlcjogY2MuTGFiZWwgPSBudWxsO1xyXG5cclxuICAgIEBwcm9wZXJ0eSh7XHJcbiAgICAgICAgdG9vbHRpcDogJ+WimeaIluiAhemXqOeahOaWueWQkScsXHJcbiAgICAgICAgdHlwZTogY2MuRW51bShXYWxsVHlwZSksXHJcbiAgICB9KVxyXG4gICAgdHlwZTogV2FsbFR5cGUgPSBXYWxsVHlwZS7lopnmqKrlkJHkuIs7XHJcblxyXG4gICAgQHByb3BlcnR5KHtcclxuICAgICAgICB0b29sdGlwOiAn5aKZ5oiW6ICF6Zeo55qE5pa55ZCRJyxcclxuICAgICAgICB0eXBlOiBjYy5FbnVtKFdhbGxTcGVjaWFsKSxcclxuICAgIH0pXHJcbiAgICBzcGVjaWFsOiBXYWxsU3BlY2lhbCA9IFdhbGxTcGVjaWFsLuaZrumAmumXqDtcclxuXHJcbiAgICBAcHJvcGVydHkoe1xyXG4gICAgICAgIHRvb2x0aXA6ICfpl6jnmoTpopzoibInLFxyXG4gICAgICAgIHR5cGU6IGNjLkVudW0oV2FsbENvbG9yKSxcclxuICAgIH0pXHJcbiAgICBjb2xvcjogV2FsbENvbG9yID0gV2FsbENvbG9yLue0q+iJsjtcclxuXHJcbiAgICBAcHJvcGVydHkoY2MuU3ByaXRlQXRsYXMpXHJcbiAgICB3YWxsX1Nwcml0ZUZyYW1lczogY2MuU3ByaXRlQXRsYXMgPSBudWxsO1xyXG5cclxuICAgIEBwcm9wZXJ0eShjYy5TcHJpdGVBdGxhcylcclxuICAgIGRvd25fU3ByaXRlRnJhbWVzOiBjYy5TcHJpdGVBdGxhcyA9IG51bGw7XHJcblxyXG5cclxuICAgIHBvc1g6IG51bWJlcjtcclxuICAgIHBvc1k6IG51bWJlcjtcclxuICAgIGRpcmVjdGlvbjogYW55O1xyXG4gICAgd2FsbF9JbmZvOiBhbnk7XHJcbiAgICBvcGVuTm9kZTogY2MuTm9kZTtcclxuICAgIGZyZWV6ZU5vZGU6IGNjLk5vZGU7XHJcbiAgICBvcGVuOmJvb2xlYW47XHJcbiAgICBcclxuXHJcbiAgICAvLyBMSUZFLUNZQ0xFIENBTExCQUNLUzpcclxuXHJcbiAgICAvLyBvbkxvYWQgKCkge31cclxuXHJcbiAgICBzdGFydCAoKSB7XHJcbiAgICAgICAgLy8gY29uc29sZS5sb2codGhpcy50eXBlKTtcclxuICAgIH1cclxuXHJcbiAgICBqc29uRGVlcENsb25lPFQ+KG9iajogVCk6IFQge1xyXG4gICAgICAgIHJldHVybiBKU09OLnBhcnNlKEpTT04uc3RyaW5naWZ5KG9iaikpO1xyXG4gICAgfVxyXG5cclxuICAgIGluaXQod2FsbF9JbmZvLCBwb3NYOiBudW1iZXIsIHBvc1k6IG51bWJlciwgZGlyZWN0aW9uOiBhbnkpe1xyXG4gICAgICAgIFxyXG4gICAgICAgIHRoaXMud2FsbF9JbmZvID0gdGhpcy5qc29uRGVlcENsb25lKHdhbGxfSW5mbyk7XHJcbiAgICAgICAgLy8gdGhpcy5vcGVuID0gdHJ1ZTtcclxuICAgICAgICBpZih3YWxsX0luZm8gPT0gbnVsbCl7XHJcbiAgICAgICAgICAgIHRoaXMucG9zWCA9IHBvc1g7XHJcbiAgICAgICAgICAgIHRoaXMucG9zWSA9IHBvc1k7XHJcbiAgICAgICAgICAgIFxyXG4gICAgICAgICAgICBpZihkaXJlY3Rpb24pdGhpcy5kaXJlY3Rpb24gPSBkaXJlY3Rpb247XHJcbiAgICAgICAgICAgIC8vIGNvbnNvbGUubG9nKFwi6Zeo5pa55ZCR6LWL5YC8XCIsZGlyZWN0aW9uKTtcclxuICAgICAgICAgICAgaWYoZGlyZWN0aW9uID09IFwidXBcIiApe1xyXG4gICAgICAgICAgICAgICAgdGhpcy5ub2RlLnBhcmVudC56SW5kZXggPSAxMDAgKyB0aGlzLnBvc1ggLSB0aGlzLnBvc1kqMztcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBlbHNlIGlmKCBkaXJlY3Rpb24gPT0gXCJkb3duXCIgfHwgZGlyZWN0aW9uID09IFwicmlnaHRcIiB8fCBcclxuICAgICAgICAgICAgICAgIGRpcmVjdGlvbiA9PSBcInJpZ2h0ZG93blwiIHx8IGRpcmVjdGlvbiA9PSBcImRvd25yaWdodFwiXHJcbiAgICAgICAgICAgIHx8IGRpcmVjdGlvbiA9PSBcInJpZ2h0dXBcIiB8fCBkaXJlY3Rpb24gPT0gXCJ1cHJpZ2h0XCIpe1xyXG4gICAgICAgICAgICAgICAgdGhpcy5ub2RlLnBhcmVudC56SW5kZXggPSAzMCArIHRoaXMucG9zWCAtIHRoaXMucG9zWSozO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBlbHNlIGlmKCBkaXJlY3Rpb24gPT0gXCJsZWZ0XCJ8fCBkaXJlY3Rpb24gPT0gXCJsZWZ0ZG93blwiIHx8IGRpcmVjdGlvbiA9PSBcImRvd25sZWZ0XCIpe1xyXG4gICAgICAgICAgICAgICAgdGhpcy5ub2RlLnBhcmVudC56SW5kZXggPSA3MCArIHRoaXMucG9zWCAtIHRoaXMucG9zWSozOyBcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBlbHNlIHRoaXMubm9kZS5wYXJlbnQuekluZGV4ID0gNzAgKyB0aGlzLnBvc1ggLSB0aGlzLnBvc1kqMztcclxuXHJcbiAgICAgICAgICAgIE1hcENvbnJvbGVyLl9pbnN0YW5jZS5tYXBCbG9ja3NXYWxsW3RoaXMucG9zWF1bdGhpcy5wb3NZXS5nZXRDb21wb25lbnQoXCJNYXBCbG9ja1wiKS5ibG9ja19JZCA9IFwiV2FsbFwiO1xyXG4gICAgICAgICAgICAvL2NvbnNvbGUubG9nKHRoaXMucG9zWCx0aGlzLnBvc1ksTWFwQ29ucm9sZXIuX2luc3RhbmNlLm1hcEJsb2Nrc1dhbGxbdGhpcy5wb3NYXVt0aGlzLnBvc1ldLmdldENvbXBvbmVudChcIk1hcEJsb2NrXCIpLmJsb2NrX0lkKTtcclxuICAgICAgICAgICAgLy8gY29uc29sZS5sb2codGhpcy5wb3NYLHRoaXMucG9zWSx0aGlzLm5vZGUuekluZGV4KTtcclxuICAgICAgICAgICAgLy90aGlzLm5vZGUuZ2V0Q2hpbGRCeU5hbWUoXCJudW1cIikuZ2V0Q29tcG9uZW50KGNjLkxhYmVsKS5zdHJpbmcgPSBkaXJlY3Rpb247XHJcbiAgICAgICAgICAgLy90aGlzLm5vZGUuZ2V0Q2hpbGRCeU5hbWUoXCJudW1cIikuZ2V0Q29tcG9uZW50KGNjLkxhYmVsKS5zdHJpbmcgPSBcIjpcIiArIHRoaXMubm9kZS5wYXJlbnQuekluZGV4O1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZih3YWxsX0luZm8gIT0gbnVsbCl7XHJcbiAgICAgICAgICAgIHRoaXMuY29sb3IgPSB3YWxsX0luZm8uY29sb3I7XHJcbiAgICAgICAgICAgIHRoaXMuc3BlY2lhbCA9IHdhbGxfSW5mby5zcGVjaWFsO1xyXG4gICAgICAgICAgICB0aGlzLmluaXRUeXBlKCk7XHJcbiAgICAgICAgICAgIGlmKHdhbGxfSW5mby5sZW5ndGggPiAwKXtcclxuICAgICAgICAgICAgICAgIHRoaXMuaW5pdENvbG9yKHdhbGxfSW5mby5sZW5ndGgpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGVsc2UgdGhpcy5ub2RlLnJlbW92ZUNvbXBvbmVudChcImNjLlNwcml0ZVwiKTtcclxuICAgICAgICAgICAgaWYodGhpcy5wb3NYICE9IG51bGwpe1xyXG4gICAgICAgICAgICAgICAgTWFwQ29ucm9sZXIuX2luc3RhbmNlLm1hcEJsb2Nrc1dhbGxbdGhpcy5wb3NYXVt0aGlzLnBvc1ldLmdldENvbXBvbmVudChcIk1hcEJsb2NrXCIpLmJsb2NrX0lkID0gXCJXYWxsXCI7XHJcbiAgICAgICAgICAgICAgICAvL2NvbnNvbGUubG9nKHRoaXMucG9zWCx0aGlzLnBvc1ksTWFwQ29ucm9sZXIuX2luc3RhbmNlLm1hcEJsb2Nrc1dhbGxbdGhpcy5wb3NYXVt0aGlzLnBvc1ldLmdldENvbXBvbmVudChcIk1hcEJsb2NrXCIpLmJsb2NrX0lkKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICAvLyBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgICAvLyAgICAgdGhpcy5ub2RlLmdldENoaWxkQnlOYW1lKFwibnVtXCIpLmdldENvbXBvbmVudChjYy5MYWJlbCkuc3RyaW5nID0gXCI6XCIgKyB0aGlzLm5vZGUucGFyZW50LnpJbmRleDtcclxuICAgICAgICAvLyB9LCAxMDAwKTtcclxuIFxyXG4gICAgfVxyXG5cclxuICAgIC8v5Yib5bu66Zeo55qE6aKc6ImyXHJcbiAgICBpbml0Q29sb3IobGVuZ3RoOiBudW1iZXIpe1xyXG4gICAgICAgIGxldCBkaXJlY3Rpb24gPSB0aGlzLm5vZGUucGFyZW50Lm5hbWU7XHJcbiAgICAgICAgbGV0IGRvdWJsZSA9IDA7XHJcbiAgICAgICAgaWYoZGlyZWN0aW9uID09IFwibGVmdFwiICB8fCBkaXJlY3Rpb24gPT0gXCJyaWdodFwiKXtcclxuICAgICAgICAgICAgZG91YmxlID0gMztcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIC8vIGRlYnVnZ2VyO1xyXG4gICAgICAgIGlmKHRoaXMud2FsbF9TcHJpdGVGcmFtZXMpe1xyXG4gICAgICAgICAgICBsZXQgbmFtZSA9IHRoaXMuY29sb3IrXCJjb2xvclwiICsgKGxlbmd0aCtkb3VibGUpO1xyXG4gICAgICAgICAgICB2YXIgc3ByaXRlRnJhbWUgPSB0aGlzLndhbGxfU3ByaXRlRnJhbWVzLl9zcHJpdGVGcmFtZXNbbmFtZV07XHJcbiAgICAgICAgICAgIHRoaXMubm9kZS5nZXRDb21wb25lbnQoY2MuU3ByaXRlKS5zcHJpdGVGcmFtZSA9IHNwcml0ZUZyYW1lO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZih0aGlzLmRvd25fU3ByaXRlRnJhbWVzKXtcclxuICAgICAgICAgICAgbGV0IG5hbWUyID0gdGhpcy5jb2xvciArIFwiZG93blwiICsgKGxlbmd0aCtkb3VibGUpO1xyXG4gICAgICAgICAgICB2YXIgZG93bkZyYW1lID0gdGhpcy5kb3duX1Nwcml0ZUZyYW1lcy5fc3ByaXRlRnJhbWVzW25hbWUyXTtcclxuICAgICAgICAgICAgdGhpcy5ub2RlLnBhcmVudC5nZXRDaGlsZEJ5TmFtZShcImRvd25cIikuZ2V0Q29tcG9uZW50KGNjLlNwcml0ZSkuc3ByaXRlRnJhbWUgPSBkb3duRnJhbWU7XHJcbiAgICAgICAgfVxyXG5cclxuICAgIFxyXG4gICAgfVxyXG5cclxuICAgIC8v5Yib5bu654m55q6K57G75Z6L6ZeoXHJcbiAgICBpbml0VHlwZSgpe1xyXG4gICAgICAgIHN3aXRjaCh0aGlzLnNwZWNpYWwpe1xyXG4gICAgICAgICAgICBjYXNlIFdhbGxTcGVjaWFsLuaYn+aYn+mXqDpcclxuICAgICAgICAgICAgICAgIGxldCBzdGFyID0gY2MuaW5zdGFudGlhdGUoTWFwQ29ucm9sZXIuX2luc3RhbmNlLkJsb2NrX1Byb3BbdGhpcy5zcGVjaWFsXSk7XHJcbiAgICAgICAgICAgICAgICBzdGFyLnBhcmVudCA9IHRoaXMubm9kZS5wYXJlbnQ7XHJcbiAgICAgICAgICAgICAgICAvLyBjb25zb2xlLmxvZyhcIumXqOeahOaWueWQkVwiLHRoaXMuZGlyZWN0aW9uLFwi6ZW/5bqmXCIsdGhpcy53YWxsX0luZm8ubGVuZ3RoKTtcclxuICAgICAgICAgICAgICAgIC8vIHN0YXIuc2NhbGVYID0gc3Rhci5zY2FsZVkgPSAwLjU7XHJcbiAgICAgICAgICAgICAgICBpZih0aGlzLndhbGxfSW5mby5sZW5ndGggPiAwKXtcclxuICAgICAgICAgICAgICAgICAgICBpZih0aGlzLmRpcmVjdGlvbiA9PSBcInJpZ2h0XCIgfHwgdGhpcy5kaXJlY3Rpb24gPT0gXCJsZWZ0XCIpe1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBzdGFyLmNoaWxkcmVuW3RoaXMud2FsbF9JbmZvLmxlbmd0aCArIDJdLmFjdGl2ZSA9IHRydWU7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIGVsc2UgaWYodGhpcy5kaXJlY3Rpb24gPT0gXCJ1cFwiIHx8IHRoaXMuZGlyZWN0aW9uID09IFwiZG93blwiKXtcclxuICAgICAgICAgICAgICAgICAgICAgICAgc3Rhci5jaGlsZHJlblt0aGlzLndhbGxfSW5mby5sZW5ndGggLSAxXS5hY3RpdmUgPSB0cnVlO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIHN0YXIuc2V0UG9zaXRpb24odGhpcy5ub2RlLndpZHRoLzIrdGhpcy5ub2RlLngsdGhpcy5ub2RlLmhlaWdodC8yK3RoaXMubm9kZS55KTtcclxuICAgICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICBjYXNlIFdhbGxTcGVjaWFsLuW8gOWFs+mXqDpcclxuICAgICAgICAgICAgICAgIGxldCBuYW1lID0gXCJvcGVuXCIgKyB0aGlzLndhbGxfSW5mby5sZW5ndGg7XHJcbiAgICAgICAgICAgICAgICB0aGlzLm9wZW5Ob2RlID0gdGhpcy5ub2RlLnBhcmVudC5nZXRDaGlsZEJ5TmFtZShcIm9wZW5cIikuZ2V0Q2hpbGRCeU5hbWUobmFtZSk7XHJcbiAgICAgICAgICAgICAgICB0aGlzLm9wZW5Ob2RlLmFjdGl2ZSA9IHRydWU7XHJcbiAgICAgICAgICAgICAgICBpZih0aGlzLndhbGxfSW5mby5sb2NrID09IGZhbHNlKXtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLm9wZW4gPSB0cnVlO1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMub3Blbk5vZGUuY2hpbGRyZW5bMF0uc2NhbGVYICo9IDAuMDE7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5vcGVuTm9kZS5jaGlsZHJlblsxXS5zY2FsZVggKj0gMC4wMTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIGVsc2V7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5vcGVuID0gZmFsc2U7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgY2FzZSBXYWxsU3BlY2lhbC7lhrvnu5Ppl6g6XHJcbiAgICAgICAgICAgICAgICBsZXQgZnJlZXplID0gXCJmcmVlemVcIiArIHRoaXMud2FsbF9JbmZvLmxlbmd0aDtcclxuICAgICAgICAgICAgICAgIHRoaXMuZnJlZXplTm9kZSA9IHRoaXMubm9kZS5wYXJlbnQuZ2V0Q2hpbGRCeU5hbWUoXCJmcmVlemVcIikuZ2V0Q2hpbGRCeU5hbWUoZnJlZXplKTtcclxuICAgICAgICAgICAgICAgIHRoaXMuZnJlZXplTm9kZS5hY3RpdmUgPSB0cnVlO1xyXG4gICAgICAgICAgICAgICAgaWYodGhpcy53YWxsX0luZm8uZnJlZXplKXtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLmZyZWV6ZU5vZGUuZ2V0Q2hpbGRCeU5hbWUoXCJudW1cIikuZ2V0Q29tcG9uZW50KGNjLkxhYmVsKS5zdHJpbmcgPSB0aGlzLndhbGxfSW5mby5mcmVlemUrXCJcIjtcclxuICAgICAgICAgICAgICAgIH0gXHJcbiAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICB9IFxyXG4gICAgfVxyXG5cclxuICAgIC8v5pKt5pS+5pif5pif6Zeo6YCa6L+HXHJcbiAgICBwbGF5U3RhckRvb3IoKXtcclxuICAgICAgICBpZih0aGlzLm5vZGUucGFyZW50LmdldENoaWxkQnlOYW1lKFwic3RhclwiKSl7XHJcbiAgICAgICAgICAgIGxldCBzdGFyID0gdGhpcy5ub2RlLnBhcmVudC5nZXRDaGlsZEJ5TmFtZShcInN0YXJcIik7XHJcbiAgICAgICAgICAgIGZvcihsZXQgaT0wOyBpPHN0YXIuY2hpbGRyZW4ubGVuZ3RoOyBpKyspe1xyXG4gICAgICAgICAgICAgICAgaWYoc3Rhci5jaGlsZHJlbltpXS5hY3RpdmUgPT0gdHJ1ZSl7XHJcbiAgICAgICAgICAgICAgICAgICAgbGV0IHN0YXJDaGlsZCA9IHN0YXIuY2hpbGRyZW5baV07XHJcbiAgICAgICAgICAgICAgICAgICAgZm9yKGxldCBqPTA7IGo8c3RhckNoaWxkLmNoaWxkcmVuLmxlbmd0aDsgaisrKXtcclxuICAgICAgICAgICAgICAgICAgICAgICAgc3RhckNoaWxkLmNoaWxkcmVuW2pdLmFjdGl2ZSA9IHRydWVcclxuICAgICAgICAgICAgICAgICAgICAgICAgc3RhckNoaWxkLmNoaWxkcmVuW2pdLmdldENvbXBvbmVudChzcC5Ta2VsZXRvbikuc2V0QW5pbWF0aW9uKDEsXCJ0YW9wYW8xXCIsZmFsc2UpO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcblxyXG4gICAgLy/mlLnlj5jlvIDlhbPpl6jnirbmgIFcclxuICAgIGNoYW5nZUxvY2soKXtcclxuICAgICAgICB0aGlzLm9wZW4gPSAhdGhpcy5vcGVuO1xyXG4gICAgICAgIGNvbnNvbGUubG9nKFwi5byA5YWz6Zeo54q25oCB5pS55Y+YXCIsdGhpcy5vcGVuKTtcclxuICAgICAgICBpZighdGhpcy5vcGVuTm9kZS5hY3RpdmUpe1xyXG4gICAgICAgICAgICB0aGlzLm9wZW5Ob2RlLmFjdGl2ZSA9IHRydWU7XHJcbiAgICAgICAgfVxyXG4gIFxyXG5cclxuICAgICAgICBsZXQgZmlsbCA9IHRoaXMub3Blbk5vZGUuY2hpbGRyZW5bMF0uc2NhbGVYPT0xID8gMC4wMToxO1xyXG4gICAgICAgIGlmKHRoaXMub3Blbk5vZGUuY2hpbGRyZW5bMF0uc2NhbGVYIDwgMCkgZmlsbCA9IC1maWxsO1xyXG4gICAgICAgIC8vIGNvbnNvbGUubG9nKFwi55uu5qCHXCIsZmlsbCk7XHJcblxyXG4gICAgICAgIGNjLnR3ZWVuKHRoaXMub3Blbk5vZGUuY2hpbGRyZW5bMF0pXHJcbiAgICAgICAgLnRvKDAuMywge3NjYWxlWDogdGhpcy5vcGVuTm9kZS5jaGlsZHJlblswXS5zY2FsZVggPCAwPy1maWxsOmZpbGx9KVxyXG4gICAgICAgIC5jYWxsKCgpPT57XHJcbiAgICAgICAgICAgIC8vIGNvbnNvbGUubG9nKFwi5bem6L655a6M5oiQXCIpO1xyXG4gICAgICAgIH0pXHJcbiAgICAgICAgLnN0YXJ0KCk7XHJcblxyXG4gICAgICAgIGNjLnR3ZWVuKHRoaXMub3Blbk5vZGUuY2hpbGRyZW5bMV0pXHJcbiAgICAgICAgLnRvKDAuMywge3NjYWxlWDogdGhpcy5vcGVuTm9kZS5jaGlsZHJlblsxXS5zY2FsZVggPCAwPy1maWxsOmZpbGx9KVxyXG4gICAgICAgIC5jYWxsKCgpPT57XHJcbiAgICAgICAgICAgIC8vIGNvbnNvbGUubG9nKFwi5Y+z6L655a6M5oiQXCIpO1xyXG4gICAgICAgIH0pXHJcbiAgICAgICAgLnN0YXJ0KCk7XHJcbiAgICB9XHJcblxyXG4gICAgY2hhbmdlRnJlZXplKCl7XHJcbiAgICAgICAgbGV0IG51bVN0ciA9IHRoaXMuZnJlZXplTm9kZS5nZXRDaGlsZEJ5TmFtZShcIm51bVwiKS5nZXRDb21wb25lbnQoY2MuTGFiZWwpO1xyXG4gICAgICAgIGxldCBudW0gPSBwYXJzZUludChudW1TdHIuc3RyaW5nKTtcclxuICAgICAgICBudW0gLT0gMTtcclxuICAgICAgICB0aGlzLmZyZWV6ZU5vZGUuZ2V0Q2hpbGRCeU5hbWUoXCJudW1cIikuZ2V0Q29tcG9uZW50KGNjLkxhYmVsKS5zdHJpbmcgPSBudW0rXCJcIjtcclxuICAgICAgICBpZihudW0gPT0gMCl7XHJcbiAgICAgICAgICAgIHRoaXMuZnJlZXplTm9kZS5wYXJlbnQuYWN0aXZlID0gZmFsc2U7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIGRvd25Eb29yKCl7XHJcbiAgICAgICAgaWYodGhpcy5vcGVuTm9kZSl7XHJcbiAgICAgICAgICAgIGlmKHRoaXMub3Blbk5vZGUuY2hpbGRyZW5bMF0uc2NhbGVYID09IDEpXHJcbiAgICAgICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmKHRoaXMuZnJlZXplTm9kZSl7XHJcbiAgICAgICAgICAgIGlmKHRoaXMuZnJlZXplTm9kZS5hY3RpdmUgPT0gdHJ1ZSlcclxuICAgICAgICAgICAgICAgIHJldHVybjsgXHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICB0aGlzLm5vZGUub3BhY2l0eSA9IDA7XHJcbiAgICAgICAgaWYodGhpcy5zcGVjaWFsID09IFdhbGxTcGVjaWFsLuaYn+aYn+mXqCl7XHJcbiAgICAgICAgICAgIHRoaXMubm9kZS5wYXJlbnQuZ2V0Q2hpbGRCeU5hbWUoXCJzdGFyXCIpLnkgLT0gMTA7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRoaXMubm9kZS5wYXJlbnQuZ2V0Q2hpbGRCeU5hbWUoXCJkb3duXCIpLmFjdGl2ZSA9IHRydWU7XHJcbiAgICB9XHJcblxyXG4gICAgdXBEb29yKCl7XHJcbiAgICAgICAgaWYodGhpcy5zcGVjaWFsID09IFdhbGxTcGVjaWFsLuaYn+aYn+mXqCl7XHJcbiAgICAgICAgICAgIHRoaXMubm9kZS5wYXJlbnQuZ2V0Q2hpbGRCeU5hbWUoXCJzdGFyXCIpLnkgKz0gMTA7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRoaXMubm9kZS5wYXJlbnQuZ2V0Q2hpbGRCeU5hbWUoXCJkb3duXCIpLmFjdGl2ZSA9IGZhbHNlO1xyXG4gICAgICAgIHRoaXMubm9kZS5vcGFjaXR5ID0gMjUwO1xyXG4gICAgfVxyXG5cclxuICAgIC8vIHVwZGF0ZSAoZHQpIHt9XHJcbn1cclxuIl19 -//------QC-SOURCE-SPLIT------ - - (function() { - var nodeEnv = typeof require !== 'undefined' && typeof process !== 'undefined'; - var __module = nodeEnv ? module : {exports:{}}; - var __filename = 'preview-scripts/assets/Script/lq_collide_system/lq_collide_config.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, '4bd21i88J9KfoWB6fqk7oW1', 'lq_collide_config'); -// Script/lq_collide_system/lq_collide_config.ts - -"use strict"; -Object.defineProperty(exports, "__esModule", { value: true }); -exports.LQCollideConfig = exports.LQCollideInfoList = void 0; -var LQCollideInfoList; -(function (LQCollideInfoList) { - LQCollideInfoList[LQCollideInfoList["default"] = 0] = "default"; - LQCollideInfoList[LQCollideInfoList["role"] = 1] = "role"; - LQCollideInfoList[LQCollideInfoList["role_bullet"] = 2] = "role_bullet"; - LQCollideInfoList[LQCollideInfoList["enemy"] = 3] = "enemy"; - LQCollideInfoList[LQCollideInfoList["enemy_bullet"] = 4] = "enemy_bullet"; - LQCollideInfoList[LQCollideInfoList["prop"] = 5] = "prop"; -})(LQCollideInfoList = exports.LQCollideInfoList || (exports.LQCollideInfoList = {})); -var LQCollideConfig = /** @class */ (function () { - function LQCollideConfig() { - } - LQCollideConfig.switch_auto_run = true; - LQCollideConfig.switch_print_log = true; - LQCollideConfig.switch_quad_tree = false; - LQCollideConfig.max_node_len = 10; - LQCollideConfig.per_frame = 60; - LQCollideConfig.max_node_level = 4; - LQCollideConfig.active_area_x = 0; - LQCollideConfig.active_area_y = 0; - LQCollideConfig.active_area_width = 1000; - LQCollideConfig.active_area_height = 1000; - LQCollideConfig.collide_group_map = { - "default": { id: 1, category: 1, index: 0, mask: 1 }, - "role": { id: 2, category: 2, index: 1, mask: 56 }, - "role_bullet": { id: 3, category: 4, index: 2, mask: 8 }, - "enemy": { id: 4, category: 8, index: 3, mask: 6 }, - "enemy_bullet": { id: 5, category: 16, index: 4, mask: 2 }, - "prop": { id: 6, category: 32, index: 5, mask: 2 }, - }; - return LQCollideConfig; -}()); -exports.LQCollideConfig = LQCollideConfig; - -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,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImFzc2V0c1xcU2NyaXB0XFxscV9jb2xsaWRlX3N5c3RlbVxcbHFfY29sbGlkZV9jb25maWcudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsSUFBWSxpQkFFWDtBQUZELFdBQVksaUJBQWlCO0lBQ3pCLCtEQUFPLENBQUE7SUFBRSx5REFBSSxDQUFBO0lBQUUsdUVBQVcsQ0FBQTtJQUFFLDJEQUFLLENBQUE7SUFBRSx5RUFBWSxDQUFBO0lBQUUseURBQUksQ0FBQTtBQUN6RCxDQUFDLEVBRlcsaUJBQWlCLEdBQWpCLHlCQUFpQixLQUFqQix5QkFBaUIsUUFFNUI7QUFFRDtJQUFBO0lBbUJBLENBQUM7SUFsQmlCLCtCQUFlLEdBQVksSUFBSSxDQUFDO0lBQ2hDLGdDQUFnQixHQUFZLElBQUksQ0FBQztJQUNqQyxnQ0FBZ0IsR0FBWSxLQUFLLENBQUM7SUFDbEMsNEJBQVksR0FBVyxFQUFFLENBQUM7SUFDMUIseUJBQVMsR0FBVyxFQUFFLENBQUM7SUFDdkIsOEJBQWMsR0FBVyxDQUFDLENBQUM7SUFDM0IsNkJBQWEsR0FBVyxDQUFDLENBQUM7SUFDMUIsNkJBQWEsR0FBVyxDQUFDLENBQUM7SUFDMUIsaUNBQWlCLEdBQVcsSUFBSSxDQUFDO0lBQ2pDLGtDQUFrQixHQUFXLElBQUksQ0FBQztJQUNsQyxpQ0FBaUIsR0FBRztRQUM5QixTQUFTLEVBQUUsRUFBQyxFQUFFLEVBQUUsQ0FBQyxFQUFFLFFBQVEsRUFBRSxDQUFDLEVBQUUsS0FBSyxFQUFFLENBQUMsRUFBRSxJQUFJLEVBQUUsQ0FBQyxFQUFDO1FBQ2xELE1BQU0sRUFBRSxFQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsUUFBUSxFQUFFLENBQUMsRUFBRSxLQUFLLEVBQUUsQ0FBQyxFQUFFLElBQUksRUFBRSxFQUFFLEVBQUM7UUFDaEQsYUFBYSxFQUFFLEVBQUMsRUFBRSxFQUFFLENBQUMsRUFBRSxRQUFRLEVBQUUsQ0FBQyxFQUFFLEtBQUssRUFBRSxDQUFDLEVBQUUsSUFBSSxFQUFFLENBQUMsRUFBQztRQUN0RCxPQUFPLEVBQUUsRUFBQyxFQUFFLEVBQUUsQ0FBQyxFQUFFLFFBQVEsRUFBRSxDQUFDLEVBQUUsS0FBSyxFQUFFLENBQUMsRUFBRSxJQUFJLEVBQUUsQ0FBQyxFQUFDO1FBQ2hELGNBQWMsRUFBRSxFQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsUUFBUSxFQUFFLEVBQUUsRUFBRSxLQUFLLEVBQUUsQ0FBQyxFQUFFLElBQUksRUFBRSxDQUFDLEVBQUM7UUFDeEQsTUFBTSxFQUFFLEVBQUMsRUFBRSxFQUFFLENBQUMsRUFBRSxRQUFRLEVBQUUsRUFBRSxFQUFFLEtBQUssRUFBRSxDQUFDLEVBQUUsSUFBSSxFQUFFLENBQUMsRUFBQztLQUNuRCxDQUFBO0lBQ0wsc0JBQUM7Q0FuQkQsQUFtQkMsSUFBQTtBQW5CWSwwQ0FBZSIsImZpbGUiOiIiLCJzb3VyY2VSb290IjoiLyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBlbnVtIExRQ29sbGlkZUluZm9MaXN0IHtcclxuICAgIGRlZmF1bHQsIHJvbGUsIHJvbGVfYnVsbGV0LCBlbmVteSwgZW5lbXlfYnVsbGV0LCBwcm9wXHJcbn1cclxuXHJcbmV4cG9ydCBjbGFzcyBMUUNvbGxpZGVDb25maWcge1xyXG4gICAgcHVibGljIHN0YXRpYyBzd2l0Y2hfYXV0b19ydW46IGJvb2xlYW4gPSB0cnVlO1xyXG4gICAgcHVibGljIHN0YXRpYyBzd2l0Y2hfcHJpbnRfbG9nOiBib29sZWFuID0gdHJ1ZTtcclxuICAgIHB1YmxpYyBzdGF0aWMgc3dpdGNoX3F1YWRfdHJlZTogYm9vbGVhbiA9IGZhbHNlO1xyXG4gICAgcHVibGljIHN0YXRpYyBtYXhfbm9kZV9sZW46IG51bWJlciA9IDEwO1xyXG4gICAgcHVibGljIHN0YXRpYyBwZXJfZnJhbWU6IG51bWJlciA9IDYwO1xyXG4gICAgcHVibGljIHN0YXRpYyBtYXhfbm9kZV9sZXZlbDogbnVtYmVyID0gNDtcclxuICAgIHB1YmxpYyBzdGF0aWMgYWN0aXZlX2FyZWFfeDogbnVtYmVyID0gMDtcclxuICAgIHB1YmxpYyBzdGF0aWMgYWN0aXZlX2FyZWFfeTogbnVtYmVyID0gMDtcclxuICAgIHB1YmxpYyBzdGF0aWMgYWN0aXZlX2FyZWFfd2lkdGg6IG51bWJlciA9IDEwMDA7XHJcbiAgICBwdWJsaWMgc3RhdGljIGFjdGl2ZV9hcmVhX2hlaWdodDogbnVtYmVyID0gMTAwMDtcclxuICAgIHB1YmxpYyBzdGF0aWMgY29sbGlkZV9ncm91cF9tYXAgPSB7XHJcbiAgICAgICAgXCJkZWZhdWx0XCI6IHtpZDogMSwgY2F0ZWdvcnk6IDEsIGluZGV4OiAwLCBtYXNrOiAxfSxcclxuICAgICAgICBcInJvbGVcIjoge2lkOiAyLCBjYXRlZ29yeTogMiwgaW5kZXg6IDEsIG1hc2s6IDU2fSxcclxuICAgICAgICBcInJvbGVfYnVsbGV0XCI6IHtpZDogMywgY2F0ZWdvcnk6IDQsIGluZGV4OiAyLCBtYXNrOiA4fSxcclxuICAgICAgICBcImVuZW15XCI6IHtpZDogNCwgY2F0ZWdvcnk6IDgsIGluZGV4OiAzLCBtYXNrOiA2fSxcclxuICAgICAgICBcImVuZW15X2J1bGxldFwiOiB7aWQ6IDUsIGNhdGVnb3J5OiAxNiwgaW5kZXg6IDQsIG1hc2s6IDJ9LFxyXG4gICAgICAgIFwicHJvcFwiOiB7aWQ6IDYsIGNhdGVnb3J5OiAzMiwgaW5kZXg6IDUsIG1hc2s6IDJ9LFxyXG4gICAgfVxyXG59Il19 -//------QC-SOURCE-SPLIT------ - - (function() { - var nodeEnv = typeof require !== 'undefined' && typeof process !== 'undefined'; - var __module = nodeEnv ? module : {exports:{}}; - var __filename = 'preview-scripts/assets/Script/position.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, 'e0e34n/+FRF5JdkULm6vdT0', 'position'); -// Script/position.ts - -var _PROP_INFO = [{ "pos1": { "x": -60, "y": 60, "z": 0 }, "pos2": { "x": -16.442, "y": 30, "z": 0 }, "pos3": { "x": -34.362, "y": 13.246, "z": 0 }, "pos4": { "x": -17, "y": 12, "z": 0 } }, { "pos1": { "x": -126, "y": 63, "z": 0 }, "pos2": { "x": -25.792, "y": 34.675, "z": 0 }, "pos3": { "x": -94.792, "y": 21.675, "z": 0 }, "pos4": { "x": -20, "y": 13, "z": 0 } }, { "pos1": { "x": -60, "y": 125, "z": 0 }, "pos2": { "x": -12.792, "y": 92.675, "z": 0 }, "pos3": { "x": -27.792, "y": 23.675, "z": 0 }, "pos4": { "x": -14, "y": 24, "z": 0 } }, { "pos1": { "x": -185, "y": 63, "z": 0 }, "pos2": { "x": -34.792, "y": 37.675, "z": 0 }, "pos3": { "x": -154.792, "y": 23.675, "z": 0 }, "pos4": { "x": -22, "y": 16, "z": 0 } }, { "pos1": { "x": -57, "y": 178, "z": 0 }, "pos2": { "x": -17.792, "y": 166.675, "z": 0 }, "pos3": { "x": -31.792, "y": 33.675, "z": 0 }, "pos4": { "x": -14, "y": 37, "z": 0 } }, { "pos1": { "x": -123, "y": 127, "z": 0 }, "pos2": { "x": -25.792, "y": 99.675, "z": 0 }, "pos3": { "x": -97.792, "y": 27.675, "z": 0 }, "pos4": { "x": -27, "y": 19, "z": 0 } }, { "pos1": { "x": -62, "y": 181, "z": 0 }, "pos2": { "x": -24.792, "y": 275.675, "z": 0 }, "pos3": { "x": -31.792, "y": 35.675, "z": 0 }, "pos4": { "x": -7, "y": 39, "z": 0 } }, { "pos1": { "x": -181, "y": 180, "z": 0 }, "pos2": { "x": -31.792, "y": 163.675, "z": 0 }, "pos3": { "x": -33.792, "y": 34.675, "z": 0 }, "pos4": { "x": -18, "y": 25, "z": 0 } }, { "pos1": { "x": -182, "y": 182, "z": 0 }, "pos2": { "x": -25.792, "y": 38.675, "z": 0 }, "pos3": { "x": -153.792, "y": 34.675, "z": 0 }, "pos4": { "x": -23, "y": 14, "z": 0 } }, { "pos1": { "x": -186, "y": 61, "z": 0 }, "pos2": { "x": -37.792, "y": 37.675, "z": 0 }, "pos3": { "x": -36.792, "y": 26.675, "z": 0 }, "pos4": { "x": -24, "y": 17, "z": 0 } }, { "pos1": { "x": -62, "y": 177, "z": 0 }, "pos2": { "x": 93.208, "y": 276.675, "z": 0 }, "pos3": { "x": -33.792, "y": 34.675, "z": 0 }, "pos4": { "x": 3, "y": 31, "z": 0 } }, { "pos1": { "x": 58, "y": 179, "z": 0 }, "pos2": { "x": 205.225, "y": 154.034, "z": 0 }, "pos3": { "x": -29.642, "y": 25.691, "z": 0 }, "pos4": { "x": 7.218, "y": 29.765, "z": 0 } }, { "pos1": { "x": -57, "y": 182, "z": 0 }, "pos2": { "x": -25.792, "y": 37.675, "z": 0 }, "pos3": { "x": -35.792, "y": 33.675, "z": 0 }, "pos4": { "x": -14, "y": 12, "z": 0 } }, { "pos1": { "x": -180, "y": 62, "z": 0 }, "pos2": { "x": -35.792, "y": 36.675, "z": 0 }, "pos3": { "x": -271.792, "y": 24.675, "z": 0 }, "pos4": { "x": -17, "y": 20, "z": 0 } }, { "pos1": { "x": -62, "y": 178, "z": 0 }, "pos2": { "x": 87.208, "y": 164.675, "z": 0 }, "pos3": { "x": -31.792, "y": 35.675, "z": 0 }, "pos4": { "x": -6, "y": 24, "z": 0 } }, { "pos1": { "x": -176, "y": 60, "z": 0 }, "pos2": { "x": -33.792, "y": 38.675, "z": 0 }, "pos3": { "x": -154.792, "y": 29.675, "z": 0 }, "pos4": { "x": -29, "y": 16, "z": 0 } }, { "pos1": { "x": -60, "y": 181, "z": 0 }, "pos2": { "x": 95.208, "y": 155.675, "z": 0 }, "pos3": { "x": -30.792, "y": 36.675, "z": 0 }, "pos4": { "x": -12, "y": 32, "z": 0 } }, { "pos1": { "x": -63, "y": 178, "z": 0 }, "pos2": { "x": -21.792, "y": 156.675, "z": 0 }, "pos3": { "x": -31.792, "y": 37.675, "z": 0 }, "pos4": { "x": -12, "y": 32, "z": 0 } }, { "pos1": { "x": -60, "y": 183, "z": 0 }, "pos2": { "x": 88.208, "y": 162.675, "z": 0 }, "pos3": { "x": -29.792, "y": 41.675, "z": 0 }, "pos4": { "x": -12, "y": 18, "z": 0 } }, { "pos1": { "x": -64, "y": 58, "z": 0 }, "pos2": { "x": -26.792, "y": 32.675, "z": 0 }, "pos3": { "x": -34.792, "y": 23.675, "z": 0 }, "pos4": { "x": -12, "y": 18, "z": 0 } }, { "pos1": { "x": -184, "y": 62, "z": 0 }, "pos2": { "x": -25.792, "y": 34.675, "z": 0 }, "pos3": { "x": -155.792, "y": 25.675, "z": 0 }, "pos4": { "x": -18, "y": 26, "z": 0 } }, { "pos1": { "x": -57, "y": 190, "z": 0 }, "pos2": { "x": 95.208, "y": 158.675, "z": 0 }, "pos3": { "x": -33.792, "y": 29.675, "z": 0 }, "pos4": { "x": -18, "y": 26, "z": 0 } }, { "pos1": { "x": -71, "y": 184, "z": 0 }, "pos2": { "x": -25.792, "y": 156.675, "z": 0 }, "pos3": { "x": -35.792, "y": 27.675, "z": 0 }, "pos4": { "x": -25, "y": 40, "z": 0 } }]; - -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,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImFzc2V0c1xcU2NyaXB0XFxwb3NpdGlvbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7QUFBQSxJQUFJLFVBQVUsR0FBRyxDQUFDLEVBQUMsTUFBTSxFQUFFLEVBQUMsR0FBRyxFQUFFLENBQUMsRUFBRSxFQUFDLEdBQUcsRUFBRSxFQUFFLEVBQUMsR0FBRyxFQUFFLENBQUMsRUFBQyxFQUFDLE1BQU0sRUFBRSxFQUFDLEdBQUcsRUFBRSxDQUFDLE1BQU0sRUFBQyxHQUFHLEVBQUUsRUFBRSxFQUFDLEdBQUcsRUFBRSxDQUFDLEVBQUMsRUFBQyxNQUFNLEVBQUUsRUFBQyxHQUFHLEVBQUUsQ0FBQyxNQUFNLEVBQUMsR0FBRyxFQUFFLE1BQU0sRUFBQyxHQUFHLEVBQUUsQ0FBQyxFQUFDLEVBQUMsTUFBTSxFQUFFLEVBQUMsR0FBRyxFQUFFLENBQUMsRUFBRSxFQUFDLEdBQUcsRUFBRSxFQUFFLEVBQUMsR0FBRyxFQUFFLENBQUMsRUFBQyxFQUFDLEVBQUMsRUFBQyxNQUFNLEVBQUUsRUFBQyxHQUFHLEVBQUUsQ0FBQyxHQUFHLEVBQUMsR0FBRyxFQUFFLEVBQUUsRUFBQyxHQUFHLEVBQUUsQ0FBQyxFQUFDLEVBQUMsTUFBTSxFQUFFLEVBQUMsR0FBRyxFQUFFLENBQUMsTUFBTSxFQUFDLEdBQUcsRUFBRSxNQUFNLEVBQUMsR0FBRyxFQUFFLENBQUMsRUFBQyxFQUFDLE1BQU0sRUFBRSxFQUFDLEdBQUcsRUFBRSxDQUFDLE1BQU0sRUFBQyxHQUFHLEVBQUUsTUFBTSxFQUFDLEdBQUcsRUFBRSxDQUFDLEVBQUMsRUFBQyxNQUFNLEVBQUUsRUFBQyxHQUFHLEVBQUUsQ0FBQyxFQUFFLEVBQUMsR0FBRyxFQUFFLEVBQUUsRUFBQyxHQUFHLEVBQUUsQ0FBQyxFQUFDLEVBQUMsRUFBQyxFQUFDLE1BQU0sRUFBRSxFQUFDLEdBQUcsRUFBRSxDQUFDLEVBQUUsRUFBQyxHQUFHLEVBQUUsR0FBRyxFQUFDLEdBQUcsRUFBRSxDQUFDLEVBQUMsRUFBQyxNQUFNLEVBQUUsRUFBQyxHQUFHLEVBQUUsQ0FBQyxNQUFNLEVBQUMsR0FBRyxFQUFFLE1BQU0sRUFBQyxHQUFHLEVBQUUsQ0FBQyxFQUFDLEVBQUMsTUFBTSxFQUFFLEVBQUMsR0FBRyxFQUFFLENBQUMsTUFBTSxFQUFDLEdBQUcsRUFBRSxNQUFNLEVBQUMsR0FBRyxFQUFFLENBQUMsRUFBQyxFQUFDLE1BQU0sRUFBRSxFQUFDLEdBQUcsRUFBRSxDQUFDLEVBQUUsRUFBQyxHQUFHLEVBQUUsRUFBRSxFQUFDLEdBQUcsRUFBRSxDQUFDLEVBQUMsRUFBQyxFQUFDLEVBQUMsTUFBTSxFQUFFLEVBQUMsR0FBRyxFQUFFLENBQUMsR0FBRyxFQUFDLEdBQUcsRUFBRSxFQUFFLEVBQUMsR0FBRyxFQUFFLENBQUMsRUFBQyxFQUFDLE1BQU0sRUFBRSxFQUFDLEdBQUcsRUFBRSxDQUFDLE1BQU0sRUFBQyxHQUFHLEVBQUUsTUFBTSxFQUFDLEdBQUcsRUFBRSxDQUFDLEVBQUMsRUFBQyxNQUFNLEVBQUUsRUFBQyxHQUFHLEVBQUUsQ0FBQyxPQUFPLEVBQUMsR0FBRyxFQUFFLE1BQU0sRUFBQyxHQUFHLEVBQUUsQ0FBQyxFQUFDLEVBQUMsTUFBTSxFQUFFLEVBQUMsR0FBRyxFQUFFLENBQUMsRUFBRSxFQUFDLEdBQUcsRUFBRSxFQUFFLEVBQUMsR0FBRyxFQUFFLENBQUMsRUFBQyxFQUFDLEVBQUMsRUFBQyxNQUFNLEVBQUUsRUFBQyxHQUFHLEVBQUUsQ0FBQyxFQUFFLEVBQUMsR0FBRyxFQUFFLEdBQUcsRUFBQyxHQUFHLEVBQUUsQ0FBQyxFQUFDLEVBQUMsTUFBTSxFQUFFLEVBQUMsR0FBRyxFQUFFLENBQUMsTUFBTSxFQUFDLEdBQUcsRUFBRSxPQUFPLEVBQUMsR0FBRyxFQUFFLENBQUMsRUFBQyxFQUFDLE1BQU0sRUFBRSxFQUFDLEdBQUcsRUFBRSxDQUFDLE1BQU0sRUFBQyxHQUFHLEVBQUUsTUFBTSxFQUFDLEdBQUcsRUFBRSxDQUFDLEVBQUMsRUFBQyxNQUFNLEVBQUUsRUFBQyxHQUFHLEVBQUUsQ0FBQyxFQUFFLEVBQUMsR0FBRyxFQUFFLEVBQUUsRUFBQyxHQUFHLEVBQUUsQ0FBQyxFQUFDLEVBQUMsRUFBQyxFQUFDLE1BQU0sRUFBRSxFQUFDLEdBQUcsRUFBRSxDQUFDLEdBQUcsRUFBQyxHQUFHLEVBQUUsR0FBRyxFQUFDLEdBQUcsRUFBRSxDQUFDLEVBQUMsRUFBQyxNQUFNLEVBQUUsRUFBQyxHQUFHLEVBQUUsQ0FBQyxNQUFNLEVBQUMsR0FBRyxFQUFFLE1BQU0sRUFBQyxHQUFHLEVBQUUsQ0FBQyxFQUFDLEVBQUMsTUFBTSxFQUFFLEVBQUMsR0FBRyxFQUFFLENBQUMsTUFBTSxFQUFDLEdBQUcsRUFBRSxNQUFNLEVBQUMsR0FBRyxFQUFFLENBQUMsRUFBQyxFQUFDLE1BQU0sRUFBRSxFQUFDLEdBQUcsRUFBRSxDQUFDLEVBQUUsRUFBQyxHQUFHLEVBQUUsRUFBRSxFQUFDLEdBQUcsRUFBRSxDQUFDLEVBQUMsRUFBQyxFQUFDLEVBQUMsTUFBTSxFQUFFLEVBQUMsR0FBRyxFQUFFLENBQUMsRUFBRSxFQUFDLEdBQUcsRUFBRSxHQUFHLEVBQUMsR0FBRyxFQUFFLENBQUMsRUFBQyxFQUFDLE1BQU0sRUFBRSxFQUFDLEdBQUcsRUFBRSxDQUFDLE1BQU0sRUFBQyxHQUFHLEVBQUUsT0FBTyxFQUFDLEdBQUcsRUFBRSxDQUFDLEVBQUMsRUFBQyxNQUFNLEVBQUUsRUFBQyxHQUFHLEVBQUUsQ0FBQyxNQUFNLEVBQUMsR0FBRyxFQUFFLE1BQU0sRUFBQyxHQUFHLEVBQUUsQ0FBQyxFQUFDLEVBQUMsTUFBTSxFQUFFLEVBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxFQUFDLEdBQUcsRUFBRSxFQUFFLEVBQUMsR0FBRyxFQUFFLENBQUMsRUFBQyxFQUFDLEVBQUMsRUFBQyxNQUFNLEVBQUUsRUFBQyxHQUFHLEVBQUUsQ0FBQyxHQUFHLEVBQUMsR0FBRyxFQUFFLEdBQUcsRUFBQyxHQUFHLEVBQUUsQ0FBQyxFQUFDLEVBQUMsTUFBTSxFQUFFLEVBQUMsR0FBRyxFQUFFLENBQUMsTUFBTSxFQUFDLEdBQUcsRUFBRSxPQUFPLEVBQUMsR0FBRyxFQUFFLENBQUMsRUFBQyxFQUFDLE1BQU0sRUFBRSxFQUFDLEdBQUcsRUFBRSxDQUFDLE1BQU0sRUFBQyxHQUFHLEVBQUUsTUFBTSxFQUFDLEdBQUcsRUFBRSxDQUFDLEVBQUMsRUFBQyxNQUFNLEVBQUUsRUFBQyxHQUFHLEVBQUUsQ0FBQyxFQUFFLEVBQUMsR0FBRyxFQUFFLEVBQUUsRUFBQyxHQUFHLEVBQUUsQ0FBQyxFQUFDLEVBQUMsRUFBQyxFQUFDLE1BQU0sRUFBRSxFQUFDLEdBQUcsRUFBRSxDQUFDLEdBQUcsRUFBQyxHQUFHLEVBQUUsR0FBRyxFQUFDLEdBQUcsRUFBRSxDQUFDLEVBQUMsRUFBQyxNQUFNLEVBQUUsRUFBQyxHQUFHLEVBQUUsQ0FBQyxNQUFNLEVBQUMsR0FBRyxFQUFFLE1BQU0sRUFBQyxHQUFHLEVBQUUsQ0FBQyxFQUFDLEVBQUMsTUFBTSxFQUFFLEVBQUMsR0FBRyxFQUFFLENBQUMsT0FBTyxFQUFDLEdBQUcsRUFBRSxNQUFNLEVBQUMsR0FBRyxFQUFFLENBQUMsRUFBQyxFQUFDLE1BQU0sRUFBRSxFQUFDLEdBQUcsRUFBRSxDQUFDLEVBQUUsRUFBQyxHQUFHLEVBQUUsRUFBRSxFQUFDLEdBQUcsRUFBRSxDQUFDLEVBQUMsRUFBQyxFQUFDLEVBQUMsTUFBTSxFQUFFLEVBQUMsR0FBRyxFQUFFLENBQUMsR0FBRyxFQUFDLEdBQUcsRUFBRSxFQUFFLEVBQUMsR0FBRyxFQUFFLENBQUMsRUFBQyxFQUFDLE1BQU0sRUFBRSxFQUFDLEdBQUcsRUFBRSxDQUFDLE1BQU0sRUFBQyxHQUFHLEVBQUUsTUFBTSxFQUFDLEdBQUcsRUFBRSxDQUFDLEVBQUMsRUFBQyxNQUFNLEVBQUUsRUFBQyxHQUFHLEVBQUUsQ0FBQyxNQUFNLEVBQUMsR0FBRyxFQUFFLE1BQU0sRUFBQyxHQUFHLEVBQUUsQ0FBQyxFQUFDLEVBQUMsTUFBTSxFQUFFLEVBQUMsR0FBRyxFQUFFLENBQUMsRUFBRSxFQUFDLEdBQUcsRUFBRSxFQUFFLEVBQUMsR0FBRyxFQUFFLENBQUMsRUFBQyxFQUFDLEVBQUMsRUFBQyxNQUFNLEVBQUUsRUFBQyxHQUFHLEVBQUUsQ0FBQyxFQUFFLEVBQUMsR0FBRyxFQUFFLEdBQUcsRUFBQyxHQUFHLEVBQUUsQ0FBQyxFQUFDLEVBQUMsTUFBTSxFQUFFLEVBQUMsR0FBRyxFQUFFLE1BQU0sRUFBQyxHQUFHLEVBQUUsT0FBTyxFQUFDLEdBQUcsRUFBRSxDQUFDLEVBQUMsRUFBQyxNQUFNLEVBQUUsRUFBQyxHQUFHLEVBQUUsQ0FBQyxNQUFNLEVBQUMsR0FBRyxFQUFFLE1BQU0sRUFBQyxHQUFHLEVBQUUsQ0FBQyxFQUFDLEVBQUMsTUFBTSxFQUFFLEVBQUMsR0FBRyxFQUFFLENBQUMsRUFBQyxHQUFHLEVBQUUsRUFBRSxFQUFDLEdBQUcsRUFBRSxDQUFDLEVBQUMsRUFBQyxFQUFDLEVBQUMsTUFBTSxFQUFFLEVBQUMsR0FBRyxFQUFFLEVBQUUsRUFBQyxHQUFHLEVBQUUsR0FBRyxFQUFDLEdBQUcsRUFBRSxDQUFDLEVBQUMsRUFBQyxNQUFNLEVBQUUsRUFBQyxHQUFHLEVBQUUsT0FBTyxFQUFDLEdBQUcsRUFBRSxPQUFPLEVBQUMsR0FBRyxFQUFFLENBQUMsRUFBQyxFQUFDLE1BQU0sRUFBRSxFQUFDLEdBQUcsRUFBRSxDQUFDLE1BQU0sRUFBQyxHQUFHLEVBQUUsTUFBTSxFQUFDLEdBQUcsRUFBRSxDQUFDLEVBQUMsRUFBQyxNQUFNLEVBQUUsRUFBQyxHQUFHLEVBQUUsS0FBSyxFQUFDLEdBQUcsRUFBRSxNQUFNLEVBQUMsR0FBRyxFQUFFLENBQUMsRUFBQyxFQUFDLEVBQUMsRUFBQyxNQUFNLEVBQUUsRUFBQyxHQUFHLEVBQUUsQ0FBQyxFQUFFLEVBQUMsR0FBRyxFQUFFLEdBQUcsRUFBQyxHQUFHLEVBQUUsQ0FBQyxFQUFDLEVBQUMsTUFBTSxFQUFFLEVBQUMsR0FBRyxFQUFFLENBQUMsTUFBTSxFQUFDLEdBQUcsRUFBRSxNQUFNLEVBQUMsR0FBRyxFQUFFLENBQUMsRUFBQyxFQUFDLE1BQU0sRUFBRSxFQUFDLEdBQUcsRUFBRSxDQUFDLE1BQU0sRUFBQyxHQUFHLEVBQUUsTUFBTSxFQUFDLEdBQUcsRUFBRSxDQUFDLEVBQUMsRUFBQyxNQUFNLEVBQUUsRUFBQyxHQUFHLEVBQUUsQ0FBQyxFQUFFLEVBQUMsR0FBRyxFQUFFLEVBQUUsRUFBQyxHQUFHLEVBQUUsQ0FBQyxFQUFDLEVBQUMsRUFBQyxFQUFDLE1BQU0sRUFBRSxFQUFDLEdBQUcsRUFBRSxDQUFDLEdBQUcsRUFBQyxHQUFHLEVBQUUsRUFBRSxFQUFDLEdBQUcsRUFBRSxDQUFDLEVBQUMsRUFBQyxNQUFNLEVBQUUsRUFBQyxHQUFHLEVBQUUsQ0FBQyxNQUFNLEVBQUMsR0FBRyxFQUFFLE1BQU0sRUFBQyxHQUFHLEVBQUUsQ0FBQyxFQUFDLEVBQUMsTUFBTSxFQUFFLEVBQUMsR0FBRyxFQUFFLENBQUMsT0FBTyxFQUFDLEdBQUcsRUFBRSxNQUFNLEVBQUMsR0FBRyxFQUFFLENBQUMsRUFBQyxFQUFDLE1BQU0sRUFBRSxFQUFDLEdBQUcsRUFBRSxDQUFDLEVBQUUsRUFBQyxHQUFHLEVBQUUsRUFBRSxFQUFDLEdBQUcsRUFBRSxDQUFDLEVBQUMsRUFBQyxFQUFDLEVBQUMsTUFBTSxFQUFFLEVBQUMsR0FBRyxFQUFFLENBQUMsRUFBRSxFQUFDLEdBQUcsRUFBRSxHQUFHLEVBQUMsR0FBRyxFQUFFLENBQUMsRUFBQyxFQUFDLE1BQU0sRUFBRSxFQUFDLEdBQUcsRUFBRSxNQUFNLEVBQUMsR0FBRyxFQUFFLE9BQU8sRUFBQyxHQUFHLEVBQUUsQ0FBQyxFQUFDLEVBQUMsTUFBTSxFQUFFLEVBQUMsR0FBRyxFQUFFLENBQUMsTUFBTSxFQUFDLEdBQUcsRUFBRSxNQUFNLEVBQUMsR0FBRyxFQUFFLENBQUMsRUFBQyxFQUFDLE1BQU0sRUFBRSxFQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsRUFBQyxHQUFHLEVBQUUsRUFBRSxFQUFDLEdBQUcsRUFBRSxDQUFDLEVBQUMsRUFBQyxFQUFDLEVBQUMsTUFBTSxFQUFFLEVBQUMsR0FBRyxFQUFFLENBQUMsR0FBRyxFQUFDLEdBQUcsRUFBRSxFQUFFLEVBQUMsR0FBRyxFQUFFLENBQUMsRUFBQyxFQUFDLE1BQU0sRUFBRSxFQUFDLEdBQUcsRUFBRSxDQUFDLE1BQU0sRUFBQyxHQUFHLEVBQUUsTUFBTSxFQUFDLEdBQUcsRUFBRSxDQUFDLEVBQUMsRUFBQyxNQUFNLEVBQUUsRUFBQyxHQUFHLEVBQUUsQ0FBQyxPQUFPLEVBQUMsR0FBRyxFQUFFLE1BQU0sRUFBQyxHQUFHLEVBQUUsQ0FBQyxFQUFDLEVBQUMsTUFBTSxFQUFFLEVBQUMsR0FBRyxFQUFFLENBQUMsRUFBRSxFQUFDLEdBQUcsRUFBRSxFQUFFLEVBQUMsR0FBRyxFQUFFLENBQUMsRUFBQyxFQUFDLEVBQUMsRUFBQyxNQUFNLEVBQUUsRUFBQyxHQUFHLEVBQUUsQ0FBQyxFQUFFLEVBQUMsR0FBRyxFQUFFLEdBQUcsRUFBQyxHQUFHLEVBQUUsQ0FBQyxFQUFDLEVBQUMsTUFBTSxFQUFFLEVBQUMsR0FBRyxFQUFFLE1BQU0sRUFBQyxHQUFHLEVBQUUsT0FBTyxFQUFDLEdBQUcsRUFBRSxDQUFDLEVBQUMsRUFBQyxNQUFNLEVBQUUsRUFBQyxHQUFHLEVBQUUsQ0FBQyxNQUFNLEVBQUMsR0FBRyxFQUFFLE1BQU0sRUFBQyxHQUFHLEVBQUUsQ0FBQyxFQUFDLEVBQUMsTUFBTSxFQUFFLEVBQUMsR0FBRyxFQUFFLENBQUMsRUFBRSxFQUFDLEdBQUcsRUFBRSxFQUFFLEVBQUMsR0FBRyxFQUFFLENBQUMsRUFBQyxFQUFDLEVBQUMsRUFBQyxNQUFNLEVBQUUsRUFBQyxHQUFHLEVBQUUsQ0FBQyxFQUFFLEVBQUMsR0FBRyxFQUFFLEdBQUcsRUFBQyxHQUFHLEVBQUUsQ0FBQyxFQUFDLEVBQUMsTUFBTSxFQUFFLEVBQUMsR0FBRyxFQUFFLENBQUMsTUFBTSxFQUFDLEdBQUcsRUFBRSxPQUFPLEVBQUMsR0FBRyxFQUFFLENBQUMsRUFBQyxFQUFDLE1BQU0sRUFBRSxFQUFDLEdBQUcsRUFBRSxDQUFDLE1BQU0sRUFBQyxHQUFHLEVBQUUsTUFBTSxFQUFDLEdBQUcsRUFBRSxDQUFDLEVBQUMsRUFBQyxNQUFNLEVBQUUsRUFBQyxHQUFHLEVBQUUsQ0FBQyxFQUFFLEVBQUMsR0FBRyxFQUFFLEVBQUUsRUFBQyxHQUFHLEVBQUUsQ0FBQyxFQUFDLEVBQUMsRUFBQyxFQUFDLE1BQU0sRUFBRSxFQUFDLEdBQUcsRUFBRSxDQUFDLEVBQUUsRUFBQyxHQUFHLEVBQUUsR0FBRyxFQUFDLEdBQUcsRUFBRSxDQUFDLEVBQUMsRUFBQyxNQUFNLEVBQUUsRUFBQyxHQUFHLEVBQUUsTUFBTSxFQUFDLEdBQUcsRUFBRSxPQUFPLEVBQUMsR0FBRyxFQUFFLENBQUMsRUFBQyxFQUFDLE1BQU0sRUFBRSxFQUFDLEdBQUcsRUFBRSxDQUFDLE1BQU0sRUFBQyxHQUFHLEVBQUUsTUFBTSxFQUFDLEdBQUcsRUFBRSxDQUFDLEVBQUMsRUFBQyxNQUFNLEVBQUUsRUFBQyxHQUFHLEVBQUUsQ0FBQyxFQUFFLEVBQUMsR0FBRyxFQUFFLEVBQUUsRUFBQyxHQUFHLEVBQUUsQ0FBQyxFQUFDLEVBQUMsRUFBQyxFQUFDLE1BQU0sRUFBRSxFQUFDLEdBQUcsRUFBRSxDQUFDLEVBQUUsRUFBQyxHQUFHLEVBQUUsRUFBRSxFQUFDLEdBQUcsRUFBRSxDQUFDLEVBQUMsRUFBQyxNQUFNLEVBQUUsRUFBQyxHQUFHLEVBQUUsQ0FBQyxNQUFNLEVBQUMsR0FBRyxFQUFFLE1BQU0sRUFBQyxHQUFHLEVBQUUsQ0FBQyxFQUFDLEVBQUMsTUFBTSxFQUFFLEVBQUMsR0FBRyxFQUFFLENBQUMsTUFBTSxFQUFDLEdBQUcsRUFBRSxNQUFNLEVBQUMsR0FBRyxFQUFFLENBQUMsRUFBQyxFQUFDLE1BQU0sRUFBRSxFQUFDLEdBQUcsRUFBRSxDQUFDLEVBQUUsRUFBQyxHQUFHLEVBQUUsRUFBRSxFQUFDLEdBQUcsRUFBRSxDQUFDLEVBQUMsRUFBQyxFQUFDLEVBQUMsTUFBTSxFQUFFLEVBQUMsR0FBRyxFQUFFLENBQUMsR0FBRyxFQUFDLEdBQUcsRUFBRSxFQUFFLEVBQUMsR0FBRyxFQUFFLENBQUMsRUFBQyxFQUFDLE1BQU0sRUFBRSxFQUFDLEdBQUcsRUFBRSxDQUFDLE1BQU0sRUFBQyxHQUFHLEVBQUUsTUFBTSxFQUFDLEdBQUcsRUFBRSxDQUFDLEVBQUMsRUFBQyxNQUFNLEVBQUUsRUFBQyxHQUFHLEVBQUUsQ0FBQyxPQUFPLEVBQUMsR0FBRyxFQUFFLE1BQU0sRUFBQyxHQUFHLEVBQUUsQ0FBQyxFQUFDLEVBQUMsTUFBTSxFQUFFLEVBQUMsR0FBRyxFQUFFLENBQUMsRUFBRSxFQUFDLEdBQUcsRUFBRSxFQUFFLEVBQUMsR0FBRyxFQUFFLENBQUMsRUFBQyxFQUFDLEVBQUMsRUFBQyxNQUFNLEVBQUUsRUFBQyxHQUFHLEVBQUUsQ0FBQyxFQUFFLEVBQUMsR0FBRyxFQUFFLEdBQUcsRUFBQyxHQUFHLEVBQUUsQ0FBQyxFQUFDLEVBQUMsTUFBTSxFQUFFLEVBQUMsR0FBRyxFQUFFLE1BQU0sRUFBQyxHQUFHLEVBQUUsT0FBTyxFQUFDLEdBQUcsRUFBRSxDQUFDLEVBQUMsRUFBQyxNQUFNLEVBQUUsRUFBQyxHQUFHLEVBQUUsQ0FBQyxNQUFNLEVBQUMsR0FBRyxFQUFFLE1BQU0sRUFBQyxHQUFHLEVBQUUsQ0FBQyxFQUFDLEVBQUMsTUFBTSxFQUFFLEVBQUMsR0FBRyxFQUFFLENBQUMsRUFBRSxFQUFDLEdBQUcsRUFBRSxFQUFFLEVBQUMsR0FBRyxFQUFFLENBQUMsRUFBQyxFQUFDLEVBQUMsRUFBQyxNQUFNLEVBQUUsRUFBQyxHQUFHLEVBQUUsQ0FBQyxFQUFFLEVBQUMsR0FBRyxFQUFFLEdBQUcsRUFBQyxHQUFHLEVBQUUsQ0FBQyxFQUFDLEVBQUMsTUFBTSxFQUFFLEVBQUMsR0FBRyxFQUFFLENBQUMsTUFBTSxFQUFDLEdBQUcsRUFBRSxPQUFPLEVBQUMsR0FBRyxFQUFFLENBQUMsRUFBQyxFQUFDLE1BQU0sRUFBRSxFQUFDLEdBQUcsRUFBRSxDQUFDLE1BQU0sRUFBQyxHQUFHLEVBQUUsTUFBTSxFQUFDLEdBQUcsRUFBRSxDQUFDLEVBQUMsRUFBQyxNQUFNLEVBQUUsRUFBQyxHQUFHLEVBQUUsQ0FBQyxFQUFFLEVBQUMsR0FBRyxFQUFFLEVBQUUsRUFBQyxHQUFHLEVBQUUsQ0FBQyxFQUFDLEVBQUMsQ0FBQyxDQUFDIiwiZmlsZSI6IiIsInNvdXJjZVJvb3QiOiIvIiwic291cmNlc0NvbnRlbnQiOlsidmFyIF9QUk9QX0lORk8gPSBbe1wicG9zMVwiOiB7XCJ4XCI6IC02MCxcInlcIjogNjAsXCJ6XCI6IDB9LFwicG9zMlwiOiB7XCJ4XCI6IC0xNi40NDIsXCJ5XCI6IDMwLFwielwiOiAwfSxcInBvczNcIjoge1wieFwiOiAtMzQuMzYyLFwieVwiOiAxMy4yNDYsXCJ6XCI6IDB9LFwicG9zNFwiOiB7XCJ4XCI6IC0xNyxcInlcIjogMTIsXCJ6XCI6IDB9fSx7XCJwb3MxXCI6IHtcInhcIjogLTEyNixcInlcIjogNjMsXCJ6XCI6IDB9LFwicG9zMlwiOiB7XCJ4XCI6IC0yNS43OTIsXCJ5XCI6IDM0LjY3NSxcInpcIjogMH0sXCJwb3MzXCI6IHtcInhcIjogLTk0Ljc5MixcInlcIjogMjEuNjc1LFwielwiOiAwfSxcInBvczRcIjoge1wieFwiOiAtMjAsXCJ5XCI6IDEzLFwielwiOiAwfX0se1wicG9zMVwiOiB7XCJ4XCI6IC02MCxcInlcIjogMTI1LFwielwiOiAwfSxcInBvczJcIjoge1wieFwiOiAtMTIuNzkyLFwieVwiOiA5Mi42NzUsXCJ6XCI6IDB9LFwicG9zM1wiOiB7XCJ4XCI6IC0yNy43OTIsXCJ5XCI6IDIzLjY3NSxcInpcIjogMH0sXCJwb3M0XCI6IHtcInhcIjogLTE0LFwieVwiOiAyNCxcInpcIjogMH19LHtcInBvczFcIjoge1wieFwiOiAtMTg1LFwieVwiOiA2MyxcInpcIjogMH0sXCJwb3MyXCI6IHtcInhcIjogLTM0Ljc5MixcInlcIjogMzcuNjc1LFwielwiOiAwfSxcInBvczNcIjoge1wieFwiOiAtMTU0Ljc5MixcInlcIjogMjMuNjc1LFwielwiOiAwfSxcInBvczRcIjoge1wieFwiOiAtMjIsXCJ5XCI6IDE2LFwielwiOiAwfX0se1wicG9zMVwiOiB7XCJ4XCI6IC01NyxcInlcIjogMTc4LFwielwiOiAwfSxcInBvczJcIjoge1wieFwiOiAtMTcuNzkyLFwieVwiOiAxNjYuNjc1LFwielwiOiAwfSxcInBvczNcIjoge1wieFwiOiAtMzEuNzkyLFwieVwiOiAzMy42NzUsXCJ6XCI6IDB9LFwicG9zNFwiOiB7XCJ4XCI6IC0xNCxcInlcIjogMzcsXCJ6XCI6IDB9fSx7XCJwb3MxXCI6IHtcInhcIjogLTEyMyxcInlcIjogMTI3LFwielwiOiAwfSxcInBvczJcIjoge1wieFwiOiAtMjUuNzkyLFwieVwiOiA5OS42NzUsXCJ6XCI6IDB9LFwicG9zM1wiOiB7XCJ4XCI6IC05Ny43OTIsXCJ5XCI6IDI3LjY3NSxcInpcIjogMH0sXCJwb3M0XCI6IHtcInhcIjogLTI3LFwieVwiOiAxOSxcInpcIjogMH19LHtcInBvczFcIjoge1wieFwiOiAtNjIsXCJ5XCI6IDE4MSxcInpcIjogMH0sXCJwb3MyXCI6IHtcInhcIjogLTI0Ljc5MixcInlcIjogMjc1LjY3NSxcInpcIjogMH0sXCJwb3MzXCI6IHtcInhcIjogLTMxLjc5MixcInlcIjogMzUuNjc1LFwielwiOiAwfSxcInBvczRcIjoge1wieFwiOiAtNyxcInlcIjogMzksXCJ6XCI6IDB9fSx7XCJwb3MxXCI6IHtcInhcIjogLTE4MSxcInlcIjogMTgwLFwielwiOiAwfSxcInBvczJcIjoge1wieFwiOiAtMzEuNzkyLFwieVwiOiAxNjMuNjc1LFwielwiOiAwfSxcInBvczNcIjoge1wieFwiOiAtMzMuNzkyLFwieVwiOiAzNC42NzUsXCJ6XCI6IDB9LFwicG9zNFwiOiB7XCJ4XCI6IC0xOCxcInlcIjogMjUsXCJ6XCI6IDB9fSx7XCJwb3MxXCI6IHtcInhcIjogLTE4MixcInlcIjogMTgyLFwielwiOiAwfSxcInBvczJcIjoge1wieFwiOiAtMjUuNzkyLFwieVwiOiAzOC42NzUsXCJ6XCI6IDB9LFwicG9zM1wiOiB7XCJ4XCI6IC0xNTMuNzkyLFwieVwiOiAzNC42NzUsXCJ6XCI6IDB9LFwicG9zNFwiOiB7XCJ4XCI6IC0yMyxcInlcIjogMTQsXCJ6XCI6IDB9fSx7XCJwb3MxXCI6IHtcInhcIjogLTE4NixcInlcIjogNjEsXCJ6XCI6IDB9LFwicG9zMlwiOiB7XCJ4XCI6IC0zNy43OTIsXCJ5XCI6IDM3LjY3NSxcInpcIjogMH0sXCJwb3MzXCI6IHtcInhcIjogLTM2Ljc5MixcInlcIjogMjYuNjc1LFwielwiOiAwfSxcInBvczRcIjoge1wieFwiOiAtMjQsXCJ5XCI6IDE3LFwielwiOiAwfX0se1wicG9zMVwiOiB7XCJ4XCI6IC02MixcInlcIjogMTc3LFwielwiOiAwfSxcInBvczJcIjoge1wieFwiOiA5My4yMDgsXCJ5XCI6IDI3Ni42NzUsXCJ6XCI6IDB9LFwicG9zM1wiOiB7XCJ4XCI6IC0zMy43OTIsXCJ5XCI6IDM0LjY3NSxcInpcIjogMH0sXCJwb3M0XCI6IHtcInhcIjogMyxcInlcIjogMzEsXCJ6XCI6IDB9fSx7XCJwb3MxXCI6IHtcInhcIjogNTgsXCJ5XCI6IDE3OSxcInpcIjogMH0sXCJwb3MyXCI6IHtcInhcIjogMjA1LjIyNSxcInlcIjogMTU0LjAzNCxcInpcIjogMH0sXCJwb3MzXCI6IHtcInhcIjogLTI5LjY0MixcInlcIjogMjUuNjkxLFwielwiOiAwfSxcInBvczRcIjoge1wieFwiOiA3LjIxOCxcInlcIjogMjkuNzY1LFwielwiOiAwfX0se1wicG9zMVwiOiB7XCJ4XCI6IC01NyxcInlcIjogMTgyLFwielwiOiAwfSxcInBvczJcIjoge1wieFwiOiAtMjUuNzkyLFwieVwiOiAzNy42NzUsXCJ6XCI6IDB9LFwicG9zM1wiOiB7XCJ4XCI6IC0zNS43OTIsXCJ5XCI6IDMzLjY3NSxcInpcIjogMH0sXCJwb3M0XCI6IHtcInhcIjogLTE0LFwieVwiOiAxMixcInpcIjogMH19LHtcInBvczFcIjoge1wieFwiOiAtMTgwLFwieVwiOiA2MixcInpcIjogMH0sXCJwb3MyXCI6IHtcInhcIjogLTM1Ljc5MixcInlcIjogMzYuNjc1LFwielwiOiAwfSxcInBvczNcIjoge1wieFwiOiAtMjcxLjc5MixcInlcIjogMjQuNjc1LFwielwiOiAwfSxcInBvczRcIjoge1wieFwiOiAtMTcsXCJ5XCI6IDIwLFwielwiOiAwfX0se1wicG9zMVwiOiB7XCJ4XCI6IC02MixcInlcIjogMTc4LFwielwiOiAwfSxcInBvczJcIjoge1wieFwiOiA4Ny4yMDgsXCJ5XCI6IDE2NC42NzUsXCJ6XCI6IDB9LFwicG9zM1wiOiB7XCJ4XCI6IC0zMS43OTIsXCJ5XCI6IDM1LjY3NSxcInpcIjogMH0sXCJwb3M0XCI6IHtcInhcIjogLTYsXCJ5XCI6IDI0LFwielwiOiAwfX0se1wicG9zMVwiOiB7XCJ4XCI6IC0xNzYsXCJ5XCI6IDYwLFwielwiOiAwfSxcInBvczJcIjoge1wieFwiOiAtMzMuNzkyLFwieVwiOiAzOC42NzUsXCJ6XCI6IDB9LFwicG9zM1wiOiB7XCJ4XCI6IC0xNTQuNzkyLFwieVwiOiAyOS42NzUsXCJ6XCI6IDB9LFwicG9zNFwiOiB7XCJ4XCI6IC0yOSxcInlcIjogMTYsXCJ6XCI6IDB9fSx7XCJwb3MxXCI6IHtcInhcIjogLTYwLFwieVwiOiAxODEsXCJ6XCI6IDB9LFwicG9zMlwiOiB7XCJ4XCI6IDk1LjIwOCxcInlcIjogMTU1LjY3NSxcInpcIjogMH0sXCJwb3MzXCI6IHtcInhcIjogLTMwLjc5MixcInlcIjogMzYuNjc1LFwielwiOiAwfSxcInBvczRcIjoge1wieFwiOiAtMTIsXCJ5XCI6IDMyLFwielwiOiAwfX0se1wicG9zMVwiOiB7XCJ4XCI6IC02MyxcInlcIjogMTc4LFwielwiOiAwfSxcInBvczJcIjoge1wieFwiOiAtMjEuNzkyLFwieVwiOiAxNTYuNjc1LFwielwiOiAwfSxcInBvczNcIjoge1wieFwiOiAtMzEuNzkyLFwieVwiOiAzNy42NzUsXCJ6XCI6IDB9LFwicG9zNFwiOiB7XCJ4XCI6IC0xMixcInlcIjogMzIsXCJ6XCI6IDB9fSx7XCJwb3MxXCI6IHtcInhcIjogLTYwLFwieVwiOiAxODMsXCJ6XCI6IDB9LFwicG9zMlwiOiB7XCJ4XCI6IDg4LjIwOCxcInlcIjogMTYyLjY3NSxcInpcIjogMH0sXCJwb3MzXCI6IHtcInhcIjogLTI5Ljc5MixcInlcIjogNDEuNjc1LFwielwiOiAwfSxcInBvczRcIjoge1wieFwiOiAtMTIsXCJ5XCI6IDE4LFwielwiOiAwfX0se1wicG9zMVwiOiB7XCJ4XCI6IC02NCxcInlcIjogNTgsXCJ6XCI6IDB9LFwicG9zMlwiOiB7XCJ4XCI6IC0yNi43OTIsXCJ5XCI6IDMyLjY3NSxcInpcIjogMH0sXCJwb3MzXCI6IHtcInhcIjogLTM0Ljc5MixcInlcIjogMjMuNjc1LFwielwiOiAwfSxcInBvczRcIjoge1wieFwiOiAtMTIsXCJ5XCI6IDE4LFwielwiOiAwfX0se1wicG9zMVwiOiB7XCJ4XCI6IC0xODQsXCJ5XCI6IDYyLFwielwiOiAwfSxcInBvczJcIjoge1wieFwiOiAtMjUuNzkyLFwieVwiOiAzNC42NzUsXCJ6XCI6IDB9LFwicG9zM1wiOiB7XCJ4XCI6IC0xNTUuNzkyLFwieVwiOiAyNS42NzUsXCJ6XCI6IDB9LFwicG9zNFwiOiB7XCJ4XCI6IC0xOCxcInlcIjogMjYsXCJ6XCI6IDB9fSx7XCJwb3MxXCI6IHtcInhcIjogLTU3LFwieVwiOiAxOTAsXCJ6XCI6IDB9LFwicG9zMlwiOiB7XCJ4XCI6IDk1LjIwOCxcInlcIjogMTU4LjY3NSxcInpcIjogMH0sXCJwb3MzXCI6IHtcInhcIjogLTMzLjc5MixcInlcIjogMjkuNjc1LFwielwiOiAwfSxcInBvczRcIjoge1wieFwiOiAtMTgsXCJ5XCI6IDI2LFwielwiOiAwfX0se1wicG9zMVwiOiB7XCJ4XCI6IC03MSxcInlcIjogMTg0LFwielwiOiAwfSxcInBvczJcIjoge1wieFwiOiAtMjUuNzkyLFwieVwiOiAxNTYuNjc1LFwielwiOiAwfSxcInBvczNcIjoge1wieFwiOiAtMzUuNzkyLFwieVwiOiAyNy42NzUsXCJ6XCI6IDB9LFwicG9zNFwiOiB7XCJ4XCI6IC0yNSxcInlcIjogNDAsXCJ6XCI6IDB9fV07Il19 -//------QC-SOURCE-SPLIT------ - - (function() { - var nodeEnv = typeof require !== 'undefined' && typeof process !== 'undefined'; - var __module = nodeEnv ? module : {exports:{}}; - var __filename = 'preview-scripts/assets/migration/use_v2.1-2.2.1_cc.Toggle_event_1.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, 'c9ad1iUTB1PyqJ3cmtMGJ31', 'use_v2.1-2.2.1_cc.Toggle_event_1'); -// migration/use_v2.1-2.2.1_cc.Toggle_event_1.js - -"use strict"; - -/* - * This script is automatically generated by Cocos Creator and is only used for projects compatible with the v2.1.0 ~ 2.2.1 version. - * You do not need to manually add this script in any other project. - * If you don't use cc.Toggle in your project, you can delete this script directly. - * If your project is hosted in VCS such as git, submit this script together. - * - * 此脚本由 Cocos Creator 自动生成,仅用于兼容 v2.1.0 ~ 2.2.1 版本的工程, - * 你无需在任何其它项目中手动添加此脚本。 - * 如果你的项目中没用到 Toggle,可直接删除该脚本。 - * 如果你的项目有托管于 git 等版本库,请将此脚本一并上传。 - */ - -if (cc.Toggle) { - // Whether to trigger 'toggle' and 'checkEvents' events when modifying 'toggle.isChecked' in the code - // 在代码中修改 'toggle.isChecked' 时是否触发 'toggle' 与 'checkEvents' 事件 - cc.Toggle._triggerEventInScript_isChecked = true; -} - -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,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImFzc2V0c1xcbWlncmF0aW9uXFx1c2VfdjIuMS0yLjIuMV9jYy5Ub2dnbGVfZXZlbnRfMS5qcyJdLCJuYW1lcyI6WyJjYyIsIlRvZ2dsZSIsIl90cmlnZ2VyRXZlbnRJblNjcmlwdF9pc0NoZWNrZWQiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQSxJQUFJQSxFQUFFLENBQUNDLE1BQU0sRUFBRTtFQUNYO0VBQ0E7RUFDQUQsRUFBRSxDQUFDQyxNQUFNLENBQUNDLCtCQUErQixHQUFHLElBQUk7QUFDcEQiLCJzb3VyY2VSb290IjoiLyIsInNvdXJjZXNDb250ZW50IjpbIi8qXHJcbiAqIFRoaXMgc2NyaXB0IGlzIGF1dG9tYXRpY2FsbHkgZ2VuZXJhdGVkIGJ5IENvY29zIENyZWF0b3IgYW5kIGlzIG9ubHkgdXNlZCBmb3IgcHJvamVjdHMgY29tcGF0aWJsZSB3aXRoIHRoZSB2Mi4xLjAg772eIDIuMi4xIHZlcnNpb24uXHJcbiAqIFlvdSBkbyBub3QgbmVlZCB0byBtYW51YWxseSBhZGQgdGhpcyBzY3JpcHQgaW4gYW55IG90aGVyIHByb2plY3QuXHJcbiAqIElmIHlvdSBkb24ndCB1c2UgY2MuVG9nZ2xlIGluIHlvdXIgcHJvamVjdCwgeW91IGNhbiBkZWxldGUgdGhpcyBzY3JpcHQgZGlyZWN0bHkuXHJcbiAqIElmIHlvdXIgcHJvamVjdCBpcyBob3N0ZWQgaW4gVkNTIHN1Y2ggYXMgZ2l0LCBzdWJtaXQgdGhpcyBzY3JpcHQgdG9nZXRoZXIuXHJcbiAqXHJcbiAqIOatpOiEmuacrOeUsSBDb2NvcyBDcmVhdG9yIOiHquWKqOeUn+aIkO+8jOS7heeUqOS6juWFvOWuuSB2Mi4xLjAgfiAyLjIuMSDniYjmnKznmoTlt6XnqIvvvIxcclxuICog5L2g5peg6ZyA5Zyo5Lu75L2V5YW25a6D6aG555uu5Lit5omL5Yqo5re75Yqg5q2k6ISa5pys44CCXHJcbiAqIOWmguaenOS9oOeahOmhueebruS4reayoeeUqOWIsCBUb2dnbGXvvIzlj6/nm7TmjqXliKDpmaTor6XohJrmnKzjgIJcclxuICog5aaC5p6c5L2g55qE6aG555uu5pyJ5omY566h5LqOIGdpdCDnrYnniYjmnKzlupPvvIzor7flsIbmraTohJrmnKzkuIDlubbkuIrkvKDjgIJcclxuICovXHJcblxyXG5pZiAoY2MuVG9nZ2xlKSB7XHJcbiAgICAvLyBXaGV0aGVyIHRvIHRyaWdnZXIgJ3RvZ2dsZScgYW5kICdjaGVja0V2ZW50cycgZXZlbnRzIHdoZW4gbW9kaWZ5aW5nICd0b2dnbGUuaXNDaGVja2VkJyBpbiB0aGUgY29kZVxyXG4gICAgLy8g5Zyo5Luj56CB5Lit5L+u5pS5ICd0b2dnbGUuaXNDaGVja2VkJyDml7bmmK/lkKbop6blj5EgJ3RvZ2dsZScg5LiOICdjaGVja0V2ZW50cycg5LqL5Lu2XHJcbiAgICBjYy5Ub2dnbGUuX3RyaWdnZXJFdmVudEluU2NyaXB0X2lzQ2hlY2tlZCA9IHRydWU7XHJcbn1cclxuIl19 //------QC-SOURCE-SPLIT------ (function() { @@ -16077,338 +7535,338 @@ cc._RF.pop(); cc._RF.push(module, '0d272pXVChFDqi5FXTD2JlR', 'MiniGameManager'); // Script/Sdk/MiniGameManager.ts -"use strict"; -var __extends = (this && this.__extends) || (function () { - var extendStatics = function (d, b) { - extendStatics = Object.setPrototypeOf || - ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) || - function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; }; - return extendStatics(d, b); - }; - return function (d, b) { - extendStatics(d, b); - function __() { this.constructor = d; } - d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); - }; -})(); -var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) { - var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; - if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc); - else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; - return c > 3 && r && Object.defineProperty(target, key, r), r; -}; -Object.defineProperty(exports, "__esModule", { value: true }); -exports.MiniGameManager = void 0; -var MiniGameSdk_1 = require("./MiniGameSdk"); -var _a = cc._decorator, ccclass = _a.ccclass, property = _a.property; -var EWechatAD; -(function (EWechatAD) { - EWechatAD["CUMSTOM_01"] = "adunit-f7c2417eb2c2e473"; -})(EWechatAD || (EWechatAD = {})); -var MiniGameManager = /** @class */ (function (_super) { - __extends(MiniGameManager, _super); - function MiniGameManager() { - var _this = _super !== null && _super.apply(this, arguments) || this; - _this.entranceView = null; - return _this; - } - MiniGameManager_1 = MiniGameManager; - Object.defineProperty(MiniGameManager, "instance", { - get: function () { - if (!MiniGameManager_1._instance) { - MiniGameManager_1._instance = new MiniGameManager_1(); - } - return MiniGameManager_1._instance; - }, - enumerable: false, - configurable: true - }); - MiniGameManager.prototype.start = function () { - // 禁用游戏入口视图 - // this.entranceView.active = false; - // MiniGameSdk.API.getUserProfile(this.setUserId); - // cc.fx.GameTool.setUserInfo(""); - this.onGetLoginCode(); - // 尝试获取游戏入口按钮,如果存在则直接返回,不进行后续操作 - // let buttonEntrance = this.node.getChildByName('Btns')?.getChildByName('Button_EntranceView'); - // if (buttonEntrance) { - // return; - // } - // 如果是字节跳动小游戏环境,检查侧边栏是否存在 - if (MiniGameSdk_1.MiniGameSdk.isBytedance()) { - //抖音环境,检测侧边栏存在 - MiniGameSdk_1.MiniGameSdk.BytedanceSidebar.checkSideBar(function (success) { - // 根据侧边栏存在性激活或禁用游戏入口按钮 - // buttonEntrance.active = success; - }); - } - else { - // 非抖音小游戏环境,直接激活游戏入口按钮 - // 非抖音环境,正常显示按钮 - // buttonEntrance.active = true; - } - // 设置监听器,以处理来自侧边栏的交互事件 - MiniGameSdk_1.MiniGameSdk.BytedanceSidebar.listenFromSidebar(function (success) { - // 如果交互成功,显示奖励提示 - if (success) { - MiniGameSdk_1.MiniGameSdk.API.showToast('侧边栏奖励', 5); - } - }); - }; - MiniGameManager.prototype.update = function (deltaTime) { - }; - /** - * 弹出广告横幅。 - * 此方法用于加载并显示广告横幅。它首先加载指定广告位的横幅广告,然后显示广告。 - * 加载广告和显示广告是通过MiniGameSdk.AdvertManager的实例方法来实现的。 - * - * @remarks - * 此方法提供了两种显示横幅广告的方式: - * 1. 默认方式:调用showBanner方法显示广告,系统会自动选择显示位置。 - * 2. 指定位置方式:可以通过传入额外的参数来指定广告显示在屏幕的顶部或底部,或者通过坐标指定显示位置。 - * - * 示例代码中注释掉了两种显示广告的具体方法,可以根据实际需求选择使用。 - */ - MiniGameManager.prototype.onShowBanner = function () { - // 加载指定广告位的横幅广告。 - MiniGameSdk_1.MiniGameSdk.AdvertManager.instance.loadBanner('adunit-4e7ef467e3eaab51'); - // 默认方式显示横幅广告。 - // 方法1:默认调用 - MiniGameSdk_1.MiniGameSdk.AdvertManager.instance.showBanner(); - // 示例:指定屏幕底部正中显示横幅广告。 - // 方法2:指定屏幕顶部或底部正中 - // MiniGameSdk.AdvertManager.instance.showBanner('adunit-4e7ef467e3eaab51', MiniGameSdk.EAdBannerLocation.BOTTOM); - // 示例:通过坐标指定位置显示横幅广告。 - // 方法2:指定坐标 - // MiniGameSdk.AdvertManager.instance.showBanner('adunit-4e7ef467e3eaab51', { top: 10, left: 10 }); - }; - /** - * 隐藏广告横幅的函数。 - * - * 该函数调用MiniGameSdk.AdvertManager实例的方法,用于隐藏广告横幅。 - * 当需要暂时停止展示广告或用户主动请求隐藏广告时,可以调用此函数。 - * - * @remarks - * 此函数不接受任何参数,也不返回任何值。 - * 它单纯地触发广告横幅的隐藏操作,具体实现依赖于AdvertManager的实现。 - */ - MiniGameManager.prototype.onHideBanner = function () { - MiniGameSdk_1.MiniGameSdk.AdvertManager.instance.hideBanner(); - }; - /** - * 显示插屏广告的函数。 - * - * 此函数调用MiniGameSdk.AdvertManager实例的方法,以显示一个指定的插屏广告。 - * 它使用了硬编码的广告单元标识符,这意味着它专为特定的广告位设计。 - * 在实际应用中,可能需要根据应用的配置或用户的特定条件来动态选择广告单元标识符。 - */ - MiniGameManager.prototype.onShowInterstitial = function () { - MiniGameSdk_1.MiniGameSdk.AdvertManager.instance.showInterstitial('adunit-eadd67851d3050ad'); - }; - /** - * 调用广告管理器加载并展示自定义广告。 - * 此方法首先通过广告管理器的实例加载指定的自定义广告单元,然后展示这个自定义广告。 - * 加载和展示广告是广告管理系统中的常见操作,这里通过两步分别完成加载和展示的过程, - * 以确保广告在展示前正确且充分地被加载。 - */ - MiniGameManager.prototype.onShowCustom = function () { - // 加载指定的自定义广告单元。 - MiniGameSdk_1.MiniGameSdk.AdvertManager.instance.loadCustom(EWechatAD.CUMSTOM_01); - // 展示已加载的自定义广告。 - MiniGameSdk_1.MiniGameSdk.AdvertManager.instance.showCustom(EWechatAD.CUMSTOM_01); - }; - /** - * 隐藏自定义广告。 - * - * 本函数调用MiniGameSdk.AdvertManager.instance.hideCustom()来隐藏自定义广告。 - * 这是对接广告管理系统的一部分,用于控制广告的显示与隐藏。 - * 在需要隐藏自定义广告的场景下,调用此函数即可实现相应功能。 - */ - MiniGameManager.prototype.onHideCustom = function () { - MiniGameSdk_1.MiniGameSdk.AdvertManager.instance.hideCustom(EWechatAD.CUMSTOM_01); - }; - /** - * 触发显示视频广告的函数。 - * 通过调用MiniGameSdk.AdvertManager.instance.showVideo方法,显示一个视频广告,并根据用户观看广告的情况执行相应的逻辑。 - * - * @remarks - * 此函数首先传入一个广告单元ID,用于标识要显示的视频广告。然后传入一个回调函数,该回调函数在用户观看广告后被调用,无论用户是完成了观看、拒绝了观看还是观看过程中发生了错误。 - * 回调函数接收两个参数:一个是用户观看广告的结果,另一个是用户观看的广告数量。根据观看结果的不同,显示不同的提示信息。 - */ - MiniGameManager.prototype.onShowVideo = function () { - // 广告单元ID,用于标识要显示的视频广告 - // 广告单元ID的样例 - //抖音形如: 1re3nfqkmy81m4m8ge - //微信形如: adunit-a7718f6e195e42fe - MiniGameSdk_1.MiniGameSdk.AdvertManager.instance.showVideo('1re3nfqkmy81m4m8ge', function (res, count) { - // 输出用户观看的广告数量 - console.log('用户看的视频广告个数是:', count); - // 根据用户观看广告的结果,执行不同的逻辑 - switch (res) { - case MiniGameSdk_1.MiniGameSdk.EAdVideoResult.ACCEPT: - // 用户完成了广告观看,显示奖励提示 - MiniGameSdk_1.MiniGameSdk.API.showToast('用户看完广告,可以奖励'); - break; - case MiniGameSdk_1.MiniGameSdk.EAdVideoResult.REJECT: - // 用户拒绝了广告观看,显示不奖励提示 - MiniGameSdk_1.MiniGameSdk.API.showToast('用户拒绝掉广告,不奖励'); - break; - case MiniGameSdk_1.MiniGameSdk.EAdVideoResult.ERROR: - // 广告播放发生错误,显示错误提示 - MiniGameSdk_1.MiniGameSdk.API.showToast('播放广告发生错误,不奖励'); - break; - default: - // 其他情况,不作处理 - break; - } - }); - }; - /** - * 引导用户分享应用给朋友。 - * - * 通过调用MiniGameSdk的API分享功能,向用户的朋友圈发送邀请,邀请他们一起玩游戏。 - * 这是一个重要的推广手段,可以增加应用的曝光度和用户量。 - * - * @remarks - * 此方法中调用的API依赖于特定的小游戏平台,因此在不同的平台上可能需要不同的实现。 - */ - MiniGameManager.prototype.onShare = function () { - MiniGameSdk_1.MiniGameSdk.API.shareAppToFriends('来玩游戏吧'); - }; - /** - * 显示一个toast提示。 - * - * 通过调用MiniGameSdk的API方法来显示一个简短的提示信息。toast是一种轻量级的提示方式,用于在界面上短暂地展示一些信息,不影响用户操作。 - * 这里使用了固定的提示文本 '这是一个toast',在实际应用中,可以根据需要动态设置提示文本。 - */ - MiniGameManager.prototype.onShowToast = function () { - MiniGameSdk_1.MiniGameSdk.API.showToast('这是一个toast'); - }; - /** - * 触发设备振动功能。 - * - * 该方法用于调用MiniGameSdk提供的API,以实现设备的振动功能。当需要提醒用户或提供触觉反馈时,可以调用此方法。 - * 例如,在游戏或应用中,当用户完成特定操作或发生特定事件时,可以通过振动给予用户反馈。 - * - * @remarks - * 此方法无参数,也不返回任何值。 - */ - MiniGameManager.prototype.onVirbrate = function () { - MiniGameSdk_1.MiniGameSdk.API.vibrate(); - }; - /** - * 重新启动游戏实例。 - * - * 此函数调用MiniGameSdk中的API重新启动游戏。重新启动操作可能是为了初始化游戏环境、重置游戏状态或处理其他需要重启的场景。 - * 调用此函数后,游戏将会重新开始,当前的游戏状态将会被清除。 - * - * @remarks - * 此函数不接受任何参数。 - * - * @returns 无返回值。 - */ - MiniGameManager.prototype.onReboot = function () { - MiniGameSdk_1.MiniGameSdk.API.reboot(); - }; - /** - * 当前函数用于在迷你游戏中实现退出功能。 - * 它调用了MiniGameSdk提供的API方法来触发退出操作。 - * 该方法通常在需要结束当前迷你游戏或返回到上一级菜单时被调用。 - */ - MiniGameManager.prototype.onExit = function () { - MiniGameSdk_1.MiniGameSdk.API.exit(); - }; - /** - * 显示分享菜单。 - * - * 通过调用MiniGameSdk的API方法,触发显示分享菜单的操作。此函数旨在提供一个统一的入口, - * 以便在需要时轻松调用分享功能,而无需直接与具体的SDK接口交互。 - * - * @remarks - * 此方法不接受任何参数,也不返回任何值。 - */ - MiniGameManager.prototype.onShowShareMenu = function () { - MiniGameSdk_1.MiniGameSdk.API.showShareMenu(); - }; - /** - * 导航到指定的小游戏。 - * - * 本函数用于触发导航到一个特定的小游戏。这需要提供目标小游戏的ID, - * 以便系统能够正确地将用户重定向到目标小游戏。 - * - * 注意:这里的'xxx'是占位符,实际使用时需要替换为具体的小游戏ID。 - */ - MiniGameManager.prototype.onNavigate = function () { - MiniGameSdk_1.MiniGameSdk.API.navigateTo('xxx'); // xxx替换为你的小游戏id - }; - /** - * 激活字节跳动入口视图。 - * - * 此方法用于将字节跳动入口视图设置为活跃状态。当需要在用户界面中显示字节跳动的入口时, - * 可以调用此方法来激活相应的视图元素,使其对用户可见。 - */ - MiniGameManager.prototype.onBytedanceEntranceView = function () { - // this.entranceView.active = true; - }; - /** - * 请求登录代码 - * - * 本函数用于触发小程序的登录流程,获取微信或头条等第三方平台的登录代码。 - * 这些代码可以用于后续的用户身份验证和数据同步流程。 - */ - MiniGameManager.prototype.onGetLoginCode = function () { - // 调用MiniGameSdk的API登录方法,传入一个回调函数处理登录结果 - MiniGameSdk_1.MiniGameSdk.API.login(function (code, anonymousCode) { - // 打印微信或头条的登录代码 - console.log('Wechat Or Bytedance Code:', code); - // 打印头条的匿名登录代码 - // console.log('Bytedance Anonymous Code:', anonymousCode); - if (code) { - // cc.fx.GameTool.getUserId(code, data => this.setUserId(data)); - } - }); - }; - // setUserId(data){ - // cc.fx.GameConfig.GM_INFO.userId = data.data.userId; - // MiniGameSdk.API.getUserInfo(this.setUserInfo); - // } - // setUserInfo(data){ - // console.log("获取到的用户信息",data.userInfo); - // var useData = { - // "gameId": cc.fx.GameConfig.GM_INFO.gameId, - // "userId": cc.fx.GameConfig.GM_INFO.userId, - // "nickName":data.userInfo.nickName, - // "pic": data.userInfo.avatarUrl - // } - // console.log("即将上传的用户信息:",cc.fx.GameConfig.GM_INFO.userId,data.userInfo.nickName,data.userInfo.avatarUrl); - // console.log("Post数据:",useData); - // cc.fx.GameTool.setUserInfo(useData,(res)=>{ - // console.log("上传成功:",res); - // }); - // } - /** - * 创建并显示游戏圈按钮 - * - * 本函数通过调用MiniGameSdk的GameClub实例方法,实现游戏俱乐部的创建和显示。 - * 它首先配置俱乐部的图标类型和位置大小,然后创建俱乐部,最后显示俱乐部。 - * 这样做是为了在小游戏内创建并展示一个游戏俱乐部的图标,供玩家加入或互动。 - */ - MiniGameManager.prototype.onCreateClub = function () { - // 配置俱乐部图标为绿色,设置图标的位置为顶部200像素,左侧0像素 - MiniGameSdk_1.MiniGameSdk.GameClub.instance.create(MiniGameSdk_1.MiniGameSdk.EGameClubIcon.GREEN, { top: 200, left: 0 }, { width: 50, height: 50 }); - // 显示游戏俱乐部图标 - MiniGameSdk_1.MiniGameSdk.GameClub.instance.show(); - }; - var MiniGameManager_1; - __decorate([ - property(cc.Node) - ], MiniGameManager.prototype, "entranceView", void 0); - MiniGameManager = MiniGameManager_1 = __decorate([ - ccclass - ], MiniGameManager); - return MiniGameManager; -}(cc.Component)); -exports.MiniGameManager = MiniGameManager; +"use strict"; +var __extends = (this && this.__extends) || (function () { + var extendStatics = function (d, b) { + extendStatics = Object.setPrototypeOf || + ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) || + function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; }; + return extendStatics(d, b); + }; + return function (d, b) { + extendStatics(d, b); + function __() { this.constructor = d; } + d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); + }; +})(); +var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) { + var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; + if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc); + else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; + return c > 3 && r && Object.defineProperty(target, key, r), r; +}; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.MiniGameManager = void 0; +var MiniGameSdk_1 = require("./MiniGameSdk"); +var _a = cc._decorator, ccclass = _a.ccclass, property = _a.property; +var EWechatAD; +(function (EWechatAD) { + EWechatAD["CUMSTOM_01"] = "adunit-f7c2417eb2c2e473"; +})(EWechatAD || (EWechatAD = {})); +var MiniGameManager = /** @class */ (function (_super) { + __extends(MiniGameManager, _super); + function MiniGameManager() { + var _this = _super !== null && _super.apply(this, arguments) || this; + _this.entranceView = null; + return _this; + } + MiniGameManager_1 = MiniGameManager; + Object.defineProperty(MiniGameManager, "instance", { + get: function () { + if (!MiniGameManager_1._instance) { + MiniGameManager_1._instance = new MiniGameManager_1(); + } + return MiniGameManager_1._instance; + }, + enumerable: false, + configurable: true + }); + MiniGameManager.prototype.start = function () { + // 禁用游戏入口视图 + // this.entranceView.active = false; + // MiniGameSdk.API.getUserProfile(this.setUserId); + // cc.fx.GameTool.setUserInfo(""); + this.onGetLoginCode(); + // 尝试获取游戏入口按钮,如果存在则直接返回,不进行后续操作 + // let buttonEntrance = this.node.getChildByName('Btns')?.getChildByName('Button_EntranceView'); + // if (buttonEntrance) { + // return; + // } + // 如果是字节跳动小游戏环境,检查侧边栏是否存在 + if (MiniGameSdk_1.MiniGameSdk.isBytedance()) { + //抖音环境,检测侧边栏存在 + MiniGameSdk_1.MiniGameSdk.BytedanceSidebar.checkSideBar(function (success) { + // 根据侧边栏存在性激活或禁用游戏入口按钮 + // buttonEntrance.active = success; + }); + } + else { + // 非抖音小游戏环境,直接激活游戏入口按钮 + // 非抖音环境,正常显示按钮 + // buttonEntrance.active = true; + } + // 设置监听器,以处理来自侧边栏的交互事件 + MiniGameSdk_1.MiniGameSdk.BytedanceSidebar.listenFromSidebar(function (success) { + // 如果交互成功,显示奖励提示 + if (success) { + MiniGameSdk_1.MiniGameSdk.API.showToast('侧边栏奖励', 5); + } + }); + }; + MiniGameManager.prototype.update = function (deltaTime) { + }; + /** + * 弹出广告横幅。 + * 此方法用于加载并显示广告横幅。它首先加载指定广告位的横幅广告,然后显示广告。 + * 加载广告和显示广告是通过MiniGameSdk.AdvertManager的实例方法来实现的。 + * + * @remarks + * 此方法提供了两种显示横幅广告的方式: + * 1. 默认方式:调用showBanner方法显示广告,系统会自动选择显示位置。 + * 2. 指定位置方式:可以通过传入额外的参数来指定广告显示在屏幕的顶部或底部,或者通过坐标指定显示位置。 + * + * 示例代码中注释掉了两种显示广告的具体方法,可以根据实际需求选择使用。 + */ + MiniGameManager.prototype.onShowBanner = function () { + // 加载指定广告位的横幅广告。 + MiniGameSdk_1.MiniGameSdk.AdvertManager.instance.loadBanner('adunit-4e7ef467e3eaab51'); + // 默认方式显示横幅广告。 + // 方法1:默认调用 + MiniGameSdk_1.MiniGameSdk.AdvertManager.instance.showBanner(); + // 示例:指定屏幕底部正中显示横幅广告。 + // 方法2:指定屏幕顶部或底部正中 + // MiniGameSdk.AdvertManager.instance.showBanner('adunit-4e7ef467e3eaab51', MiniGameSdk.EAdBannerLocation.BOTTOM); + // 示例:通过坐标指定位置显示横幅广告。 + // 方法2:指定坐标 + // MiniGameSdk.AdvertManager.instance.showBanner('adunit-4e7ef467e3eaab51', { top: 10, left: 10 }); + }; + /** + * 隐藏广告横幅的函数。 + * + * 该函数调用MiniGameSdk.AdvertManager实例的方法,用于隐藏广告横幅。 + * 当需要暂时停止展示广告或用户主动请求隐藏广告时,可以调用此函数。 + * + * @remarks + * 此函数不接受任何参数,也不返回任何值。 + * 它单纯地触发广告横幅的隐藏操作,具体实现依赖于AdvertManager的实现。 + */ + MiniGameManager.prototype.onHideBanner = function () { + MiniGameSdk_1.MiniGameSdk.AdvertManager.instance.hideBanner(); + }; + /** + * 显示插屏广告的函数。 + * + * 此函数调用MiniGameSdk.AdvertManager实例的方法,以显示一个指定的插屏广告。 + * 它使用了硬编码的广告单元标识符,这意味着它专为特定的广告位设计。 + * 在实际应用中,可能需要根据应用的配置或用户的特定条件来动态选择广告单元标识符。 + */ + MiniGameManager.prototype.onShowInterstitial = function () { + MiniGameSdk_1.MiniGameSdk.AdvertManager.instance.showInterstitial('adunit-eadd67851d3050ad'); + }; + /** + * 调用广告管理器加载并展示自定义广告。 + * 此方法首先通过广告管理器的实例加载指定的自定义广告单元,然后展示这个自定义广告。 + * 加载和展示广告是广告管理系统中的常见操作,这里通过两步分别完成加载和展示的过程, + * 以确保广告在展示前正确且充分地被加载。 + */ + MiniGameManager.prototype.onShowCustom = function () { + // 加载指定的自定义广告单元。 + MiniGameSdk_1.MiniGameSdk.AdvertManager.instance.loadCustom(EWechatAD.CUMSTOM_01); + // 展示已加载的自定义广告。 + MiniGameSdk_1.MiniGameSdk.AdvertManager.instance.showCustom(EWechatAD.CUMSTOM_01); + }; + /** + * 隐藏自定义广告。 + * + * 本函数调用MiniGameSdk.AdvertManager.instance.hideCustom()来隐藏自定义广告。 + * 这是对接广告管理系统的一部分,用于控制广告的显示与隐藏。 + * 在需要隐藏自定义广告的场景下,调用此函数即可实现相应功能。 + */ + MiniGameManager.prototype.onHideCustom = function () { + MiniGameSdk_1.MiniGameSdk.AdvertManager.instance.hideCustom(EWechatAD.CUMSTOM_01); + }; + /** + * 触发显示视频广告的函数。 + * 通过调用MiniGameSdk.AdvertManager.instance.showVideo方法,显示一个视频广告,并根据用户观看广告的情况执行相应的逻辑。 + * + * @remarks + * 此函数首先传入一个广告单元ID,用于标识要显示的视频广告。然后传入一个回调函数,该回调函数在用户观看广告后被调用,无论用户是完成了观看、拒绝了观看还是观看过程中发生了错误。 + * 回调函数接收两个参数:一个是用户观看广告的结果,另一个是用户观看的广告数量。根据观看结果的不同,显示不同的提示信息。 + */ + MiniGameManager.prototype.onShowVideo = function () { + // 广告单元ID,用于标识要显示的视频广告 + // 广告单元ID的样例 + //抖音形如: 1re3nfqkmy81m4m8ge + //微信形如: adunit-a7718f6e195e42fe + MiniGameSdk_1.MiniGameSdk.AdvertManager.instance.showVideo('1re3nfqkmy81m4m8ge', function (res, count) { + // 输出用户观看的广告数量 + console.log('用户看的视频广告个数是:', count); + // 根据用户观看广告的结果,执行不同的逻辑 + switch (res) { + case MiniGameSdk_1.MiniGameSdk.EAdVideoResult.ACCEPT: + // 用户完成了广告观看,显示奖励提示 + MiniGameSdk_1.MiniGameSdk.API.showToast('用户看完广告,可以奖励'); + break; + case MiniGameSdk_1.MiniGameSdk.EAdVideoResult.REJECT: + // 用户拒绝了广告观看,显示不奖励提示 + MiniGameSdk_1.MiniGameSdk.API.showToast('用户拒绝掉广告,不奖励'); + break; + case MiniGameSdk_1.MiniGameSdk.EAdVideoResult.ERROR: + // 广告播放发生错误,显示错误提示 + MiniGameSdk_1.MiniGameSdk.API.showToast('播放广告发生错误,不奖励'); + break; + default: + // 其他情况,不作处理 + break; + } + }); + }; + /** + * 引导用户分享应用给朋友。 + * + * 通过调用MiniGameSdk的API分享功能,向用户的朋友圈发送邀请,邀请他们一起玩游戏。 + * 这是一个重要的推广手段,可以增加应用的曝光度和用户量。 + * + * @remarks + * 此方法中调用的API依赖于特定的小游戏平台,因此在不同的平台上可能需要不同的实现。 + */ + MiniGameManager.prototype.onShare = function () { + MiniGameSdk_1.MiniGameSdk.API.shareAppToFriends('来玩游戏吧'); + }; + /** + * 显示一个toast提示。 + * + * 通过调用MiniGameSdk的API方法来显示一个简短的提示信息。toast是一种轻量级的提示方式,用于在界面上短暂地展示一些信息,不影响用户操作。 + * 这里使用了固定的提示文本 '这是一个toast',在实际应用中,可以根据需要动态设置提示文本。 + */ + MiniGameManager.prototype.onShowToast = function () { + MiniGameSdk_1.MiniGameSdk.API.showToast('这是一个toast'); + }; + /** + * 触发设备振动功能。 + * + * 该方法用于调用MiniGameSdk提供的API,以实现设备的振动功能。当需要提醒用户或提供触觉反馈时,可以调用此方法。 + * 例如,在游戏或应用中,当用户完成特定操作或发生特定事件时,可以通过振动给予用户反馈。 + * + * @remarks + * 此方法无参数,也不返回任何值。 + */ + MiniGameManager.prototype.onVirbrate = function () { + MiniGameSdk_1.MiniGameSdk.API.vibrate(); + }; + /** + * 重新启动游戏实例。 + * + * 此函数调用MiniGameSdk中的API重新启动游戏。重新启动操作可能是为了初始化游戏环境、重置游戏状态或处理其他需要重启的场景。 + * 调用此函数后,游戏将会重新开始,当前的游戏状态将会被清除。 + * + * @remarks + * 此函数不接受任何参数。 + * + * @returns 无返回值。 + */ + MiniGameManager.prototype.onReboot = function () { + MiniGameSdk_1.MiniGameSdk.API.reboot(); + }; + /** + * 当前函数用于在迷你游戏中实现退出功能。 + * 它调用了MiniGameSdk提供的API方法来触发退出操作。 + * 该方法通常在需要结束当前迷你游戏或返回到上一级菜单时被调用。 + */ + MiniGameManager.prototype.onExit = function () { + MiniGameSdk_1.MiniGameSdk.API.exit(); + }; + /** + * 显示分享菜单。 + * + * 通过调用MiniGameSdk的API方法,触发显示分享菜单的操作。此函数旨在提供一个统一的入口, + * 以便在需要时轻松调用分享功能,而无需直接与具体的SDK接口交互。 + * + * @remarks + * 此方法不接受任何参数,也不返回任何值。 + */ + MiniGameManager.prototype.onShowShareMenu = function () { + MiniGameSdk_1.MiniGameSdk.API.showShareMenu(); + }; + /** + * 导航到指定的小游戏。 + * + * 本函数用于触发导航到一个特定的小游戏。这需要提供目标小游戏的ID, + * 以便系统能够正确地将用户重定向到目标小游戏。 + * + * 注意:这里的'xxx'是占位符,实际使用时需要替换为具体的小游戏ID。 + */ + MiniGameManager.prototype.onNavigate = function () { + MiniGameSdk_1.MiniGameSdk.API.navigateTo('xxx'); // xxx替换为你的小游戏id + }; + /** + * 激活字节跳动入口视图。 + * + * 此方法用于将字节跳动入口视图设置为活跃状态。当需要在用户界面中显示字节跳动的入口时, + * 可以调用此方法来激活相应的视图元素,使其对用户可见。 + */ + MiniGameManager.prototype.onBytedanceEntranceView = function () { + // this.entranceView.active = true; + }; + /** + * 请求登录代码 + * + * 本函数用于触发小程序的登录流程,获取微信或头条等第三方平台的登录代码。 + * 这些代码可以用于后续的用户身份验证和数据同步流程。 + */ + MiniGameManager.prototype.onGetLoginCode = function () { + // 调用MiniGameSdk的API登录方法,传入一个回调函数处理登录结果 + MiniGameSdk_1.MiniGameSdk.API.login(function (code, anonymousCode) { + // 打印微信或头条的登录代码 + console.log('Wechat Or Bytedance Code:', code); + // 打印头条的匿名登录代码 + // console.log('Bytedance Anonymous Code:', anonymousCode); + if (code) { + // cc.fx.GameTool.getUserId(code, data => this.setUserId(data)); + } + }); + }; + // setUserId(data){ + // cc.fx.GameConfig.GM_INFO.userId = data.data.userId; + // MiniGameSdk.API.getUserInfo(this.setUserInfo); + // } + // setUserInfo(data){ + // console.log("获取到的用户信息",data.userInfo); + // var useData = { + // "gameId": cc.fx.GameConfig.GM_INFO.gameId, + // "userId": cc.fx.GameConfig.GM_INFO.userId, + // "nickName":data.userInfo.nickName, + // "pic": data.userInfo.avatarUrl + // } + // console.log("即将上传的用户信息:",cc.fx.GameConfig.GM_INFO.userId,data.userInfo.nickName,data.userInfo.avatarUrl); + // console.log("Post数据:",useData); + // cc.fx.GameTool.setUserInfo(useData,(res)=>{ + // console.log("上传成功:",res); + // }); + // } + /** + * 创建并显示游戏圈按钮 + * + * 本函数通过调用MiniGameSdk的GameClub实例方法,实现游戏俱乐部的创建和显示。 + * 它首先配置俱乐部的图标类型和位置大小,然后创建俱乐部,最后显示俱乐部。 + * 这样做是为了在小游戏内创建并展示一个游戏俱乐部的图标,供玩家加入或互动。 + */ + MiniGameManager.prototype.onCreateClub = function () { + // 配置俱乐部图标为绿色,设置图标的位置为顶部200像素,左侧0像素 + MiniGameSdk_1.MiniGameSdk.GameClub.instance.create(MiniGameSdk_1.MiniGameSdk.EGameClubIcon.GREEN, { top: 200, left: 0 }, { width: 50, height: 50 }); + // 显示游戏俱乐部图标 + MiniGameSdk_1.MiniGameSdk.GameClub.instance.show(); + }; + var MiniGameManager_1; + __decorate([ + property(cc.Node) + ], MiniGameManager.prototype, "entranceView", void 0); + MiniGameManager = MiniGameManager_1 = __decorate([ + ccclass + ], MiniGameManager); + return MiniGameManager; +}(cc.Component)); +exports.MiniGameManager = MiniGameManager; cc._RF.pop(); } @@ -16422,6 +7880,2806 @@ cc._RF.pop(); } })(); //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImFzc2V0c1xcU2NyaXB0XFxTZGtcXE1pbmlHYW1lTWFuYWdlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQ0EsNkNBQTRDO0FBQ3RDLElBQUEsS0FBd0IsRUFBRSxDQUFDLFVBQVUsRUFBbkMsT0FBTyxhQUFBLEVBQUUsUUFBUSxjQUFrQixDQUFDO0FBQzVDLElBQUssU0FFSjtBQUZELFdBQUssU0FBUztJQUNWLG1EQUFzQyxDQUFBO0FBQzFDLENBQUMsRUFGSSxTQUFTLEtBQVQsU0FBUyxRQUViO0FBR0Q7SUFBcUMsbUNBQVk7SUFBakQ7UUFBQSxxRUEyVUM7UUF4VUcsa0JBQVksR0FBWSxJQUFJLENBQUM7O0lBd1VqQyxDQUFDO3dCQTNVWSxlQUFlO0lBa0J4QixzQkFBVywyQkFBUTthQUFuQjtZQUNJLElBQUksQ0FBQyxpQkFBZSxDQUFDLFNBQVMsRUFBRTtnQkFDNUIsaUJBQWUsQ0FBQyxTQUFTLEdBQUcsSUFBSSxpQkFBZSxFQUFFLENBQUM7YUFDckQ7WUFDRCxPQUFPLGlCQUFlLENBQUMsU0FBUyxDQUFDO1FBQ3JDLENBQUM7OztPQUFBO0lBRUQsK0JBQUssR0FBTDtRQUNJLFdBQVc7UUFDWCxvQ0FBb0M7UUFDcEMsa0RBQWtEO1FBQ2xELGtDQUFrQztRQUNsQyxJQUFJLENBQUMsY0FBYyxFQUFFLENBQUM7UUFDdEIsK0JBQStCO1FBQy9CLGdHQUFnRztRQUNoRyx3QkFBd0I7UUFDeEIsY0FBYztRQUNkLElBQUk7UUFFSix5QkFBeUI7UUFFekIsSUFBSSx5QkFBVyxDQUFDLFdBQVcsRUFBRSxFQUFFO1lBQzNCLGNBQWM7WUFDZCx5QkFBVyxDQUFDLGdCQUFnQixDQUFDLFlBQVksQ0FBQyxVQUFDLE9BQWdCO2dCQUN2RCxzQkFBc0I7Z0JBQ3RCLG1DQUFtQztZQUN2QyxDQUFDLENBQUMsQ0FBQztTQUNOO2FBQU07WUFDSCxzQkFBc0I7WUFDdEIsZUFBZTtZQUNmLGdDQUFn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LHFCQUFxQjtJQUNyQiw2Q0FBNkM7SUFDN0Msc0JBQXNCO0lBQ3RCLHFEQUFxRDtJQUNyRCxxREFBcUQ7SUFDckQsNkNBQTZDO0lBQzdDLHlDQUF5QztJQUV6QyxRQUFRO0lBQ1IsZ0hBQWdIO0lBQ2hILHNDQUFzQztJQUN0QyxrREFBa0Q7SUFDbEQsb0NBQW9DO0lBQ3BDLFVBQVU7SUFDVixJQUFJO0lBRUo7Ozs7OztPQU1HO0lBQ0gsc0NBQVksR0FBWjtRQUNJLG1DQUFtQztRQUNuQyx5QkFBVyxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUNoQyx5QkFBVyxDQUFDLGFBQWEsQ0FBQyxLQUFLLEVBQy9CLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxJQUFJLEVBQUUsQ0FBQyxFQUFFLEVBQ3JCLEVBQUUsS0FBSyxFQUFFLEVBQUUsRUFBRSxNQUFNLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQztRQUMvQixZQUFZO1FBQ1oseUJBQVcsQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLElBQUksRUFBRSxDQUFDO0lBQ3pDLENBQUM7O0lBdlVEO1FBREMsUUFBUSxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUM7eURBQ1c7SUFIcEIsZUFBZTtRQUQzQixPQUFPO09BQ0ssZUFBZSxDQTJVM0I7SUFBRCxzQkFBQztDQTNVRCxBQTJVQyxDQTNVb0MsRUFBRSxDQUFDLFNBQVMsR0EyVWhEO0FBM1VZLDBDQUFlIiwiZmlsZSI6IiIsInNvdXJjZVJvb3QiOiIvIiwic291cmNlc0NvbnRlbnQiOlsiXHJcbmltcG9ydCB7IE1pbmlHYW1lU2RrIH0gZnJvbSBcIi4vTWluaUdhbWVTZGtcIjtcclxuY29uc3QgeyBjY2NsYXNzLCBwcm9wZXJ0eSB9ID0gY2MuX2RlY29yYXRvcjtcclxuZW51bSBFV2VjaGF0QUQge1xyXG4gICAgQ1VNU1RPTV8wMSA9ICdhZHVuaXQtZjdjMjQxN2ViMmMyZTQ3MydcclxufVxyXG5cclxuQGNjY2xhc3NcclxuZXhwb3J0IGNsYXNzIE1pbmlHYW1lTWFuYWdlciBleHRlbmRzIGNjLkNvbXBvbmVudCB7XHJcblxyXG4gICAgQHByb3BlcnR5KGNjLk5vZGUpXHJcbiAgICBlbnRyYW5jZVZpZXc6IGNjLk5vZGUgPSBudWxsO1xyXG4gICAgLyoqXHJcbiAgICAgKiDlvIDlp4vmuLjmiI/liY3nmoTliJ3lp4vljJbmk43kvZzjgIJcclxuICAgICAqIOS4u+imgei0n+i0o+ajgOafpeW5tuWkhOeQhua4uOaIj+WFpeWPo+aMiemSrueahOa/gOa0u+eKtuaAge+8jOS7peWPiuWcqOeJueWumueOr+Wig+S4i+iuvue9ruS+p+i+ueagj+eahOebkeWQrOWZqOOAglxyXG4gICAgICogXHJcbiAgICAgKiBAcmVtYXJrc1xyXG4gICAgICog5q2k5pa55rOV6aaW5YWI5bCG5ri45oiP5YWl5Y+j6KeG5Zu+6K6+5Li66Z2e5r+A5rS754q25oCB77yM5Lul5YeG5aSH6L+b6KGM5ZCO57ut55qE5qOA5p+l5ZKM6K6+572u44CCXHJcbiAgICAgKiDlpoLmnpzlvZPliY3njq/looPmmK/mipbpn7PlsI/muLjmiI/vvIzkvJrmo4Dmn6XmmK/lkKblrZjlnKjkvqfovrnmoI/vvIzlubbmoLnmja7mo4Dmn6Xnu5Pmnpzmv4DmtLvmiJbnpoHnlKjmuLjmiI/lhaXlj6PmjInpkq7jgIJcclxuICAgICAqIOWvueS6jumdnuaKlumfs+Wwj+a4uOaIj+eOr+Wig++8jOebtOaOpea/gOa0u+a4uOaIj+WFpeWPo+aMiemSruOAglxyXG4gICAgICog5q2k5aSW77yM5peg6K66546v5aKD5aaC5L2V77yM6YO95Lya6K6+572u5LiA5Liq55uR5ZCs5Zmo77yM5Lul5aSE55CG5p2l6Ieq5L6n6L655qCP55qE5LqL5Lu277yM5aaC5oiQ5Yqf6Kem5Y+R5pe25pi+56S65aWW5Yqx5o+Q56S644CCXHJcbiAgICAgKi9cclxuICAgIHByaXZhdGUgX2lkOmFueTtcclxuICAgIHByaXZhdGUgX3VzZXJEYXRhOmFueTtcclxuXHJcbiAgICBwcml2YXRlIHN0YXRpYyBfaW5zdGFuY2U6IE1pbmlHYW1lTWFuYWdlcjtcclxuICAgIHN0YXRpYyBnZXQgaW5zdGFuY2UoKTogTWluaUdhbWVNYW5hZ2VyIHtcclxuICAgICAgICBpZiAoIU1pbmlHYW1lTWFuYWdlci5faW5zdGFuY2UpIHtcclxuICAgICAgICAgICAgTWluaUdhbWVNYW5hZ2VyLl9pbnN0YW5jZSA9IG5ldyBNaW5pR2FtZU1hbmFnZXIoKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIE1pbmlHYW1lTWFuYWdlci5faW5zdGFuY2U7XHJcbiAgICB9XHJcblxyXG4gICAgc3RhcnQoKSB7XHJcbiAgICAgICAgLy8g56aB55So5ri45oiP5YWl5Y+j6KeG5Zu+XHJcbiAgICAgICAgLy8gdGhpcy5lbnRyYW5jZVZpZXcuYWN0aXZlID0gZmFsc2U7XHJcbiAgICAgICAgLy8gTWluaUdhbWVTZGsuQVBJLmdldFVzZXJQcm9maWxlKHRoaXMuc2V0VXNlcklkKTtcclxuICAgICAgICAvLyBjYy5meC5HYW1lVG9vbC5zZXRVc2VySW5mbyhcIlwiKTtcclxuICAgICAgICB0aGlzLm9uR2V0TG9naW5Db2RlKCk7XHJcbiAgICAgICAgLy8g5bCd6K+V6I635Y+W5ri45oiP5YWl5Y+j5oyJ6ZKu77yM5aaC5p6c5a2Y5Zyo5YiZ55u05o6l6L+U5Zue77yM5LiN6L+b6KGM5ZCO57ut5pON5L2cXHJcbiAgICAgICAgLy8gbGV0IGJ1dHRvbkVudHJhbmNlID0gdGhpcy5ub2RlLmdldENoaWxkQnlOYW1lKCdCdG5zJyk/LmdldENoaWxkQnlOYW1lKCdCdXR0b25fRW50cmFuY2VWaWV3Jyk7XHJcbiAgICAgICAgLy8gaWYgKGJ1dHRvbkVudHJhbmNlKSB7XHJcbiAgICAgICAgLy8gICAgIHJldHVybjtcclxuICAgICAgICAvLyB9XHJcblxyXG4gICAgICAgIC8vIOWmguaenOaYr+Wtl+iKgui3s+WKqOWwj+a4uOaIj+eOr+Wig++8jOajgOafpeS+p+i+ueagj+aYr+WQpuWtmOWcqFxyXG5cclxuICAgICAgICBpZiAoTWluaUdhbWVTZGsuaXNCeXRlZGFuY2UoKSkge1xyXG4gICAgICAgICAgICAvL+aKlumfs+eOr+Wig++8jOajgOa1i+S+p+i+ueagj+WtmOWcqFxyXG4gICAgICAgICAgICBNaW5pR2FtZVNkay5CeXRlZGFuY2VTaWRlYmFyLmNoZWNrU2lkZUJhcigoc3VjY2VzczogYm9vbGVhbikgPT4ge1xyXG4gICAgICAgICAgICAgICAgLy8g5qC55o2u5L6n6L655qCP5a2Y5Zyo5oCn5r+A5rS75oiW56aB55So5ri45oiP5YWl5Y+j5oyJ6ZKuXHJcbiAgICAgICAgICAgICAgICAvLyBidXR0b25FbnRyYW5jZS5hY3RpdmUgPSBzdWNjZXNzO1xyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAvLyDpnZ7mipbpn7PlsI/muLjmiI/njq/looPvvIznm7TmjqXmv4DmtLvmuLjmiI/lhaXlj6PmjInpkq5cclxuICAgICAgICAgICAgLy8g6Z2e5oqW6Z+z546v5aKD77yM5q2j5bi45pi+56S65oyJ6ZKuXHJcbiAgICAgICAgICAgIC8vIGJ1dHRvbkVudHJhbmNlLmFjdGl2ZSA9IHRydWU7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICAvLyDorr7nva7nm5HlkKzlmajvvIzku6XlpITnkIbmnaXoh6rkvqfovrnmoI/nmoTkuqTkupLkuovku7ZcclxuICAgICAgICBNaW5pR2FtZVNkay5CeXRlZGFuY2VTaWRlYmFyLmxpc3RlbkZyb21TaWRlYmFyKChzdWNjZXNzOiBib29sZWFuKSA9PiB7XHJcbiAgICAgICAgICAgIC8vIOWmguaenOS6pOS6kuaIkOWKn++8jOaYvuekuuWlluWKseaPkOekulxyXG4gICAgICAgICAgICBpZiAoc3VjY2Vzcykge1xyXG4gICAgICAgICAgICAgICAgTWluaUdhbWVTZGsuQVBJLnNob3dUb2FzdCgn5L6n6L655qCP5aWW5YqxJywgNSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9KTtcclxuICAgIH1cclxuXHJcbiAgICB1cGRhdGUoZGVsdGFUaW1lOiBudW1iZXIpIHtcclxuXHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiDlvLnlh7rlub/lkYrmqKrluYXjgIJcclxuICAgICAqIOatpOaWueazleeUqOS6juWKoOi9veW5tuaYvuekuuW5v+WRiuaoquW5heOAguWug+mmluWFiOWKoOi9veaMh+WumuW5v+WRiuS9jeeahOaoquW5heW5v+WRiu+8jOeEtuWQjuaYvuekuuW5v+WRiuOAglxyXG4gICAgICog5Yqg6L295bm/5ZGK5ZKM5pi+56S65bm/5ZGK5piv6YCa6L+HTWluaUdhbWVTZGsuQWR2ZXJ0TWFuYWdlcueahOWunuS+i+aWueazleadpeWunueOsOeahOOAglxyXG4gICAgICogXHJcbiAgICAgKiBAcmVtYXJrc1xyXG4gICAgICog5q2k5pa55rOV5o+Q5L6b5LqG5Lik56eN5pi+56S65qiq5bmF5bm/5ZGK55qE5pa55byP77yaXHJcbiAgICAgKiAxLiDpu5jorqTmlrnlvI/vvJrosIPnlKhzaG93QmFubmVy5pa55rOV5pi+56S65bm/5ZGK77yM57O757uf5Lya6Ieq5Yqo6YCJ5oup5pi+56S65L2N572u44CCXHJcbiAgICAgKiAyLiDmjIflrprkvY3nva7mlrnlvI/vvJrlj6/ku6XpgJrov4fkvKDlhaXpop3lpJbnmoTlj4LmlbDmnaXmjIflrprlub/lkYrmmL7npLrlnKjlsY/luZXnmoTpobbpg6jmiJblupXpg6jvvIzmiJbogIXpgJrov4flnZDmoIfmjIflrprmmL7npLrkvY3nva7jgIJcclxuICAgICAqIFxyXG4gICAgICog56S65L6L5Luj56CB5Lit5rOo6YeK5o6J5LqG5Lik56eN5pi+56S65bm/5ZGK55qE5YW35L2T5pa55rOV77yM5Y+v5Lul5qC55o2u5a6e6ZmF6ZyA5rGC6YCJ5oup5L2/55So44CCXHJcbiAgICAgKi9cclxuICAgIG9uU2hvd0Jhbm5lcigpIHtcclxuICAgICAgICAvLyDliqDovb3mjIflrprlub/lkYrkvY3nmoTmqKrluYXlub/lkYrjgIJcclxuICAgICAgICBNaW5pR2FtZVNkay5BZHZlcnRNYW5hZ2VyLmluc3RhbmNlLmxvYWRCYW5uZXIoJ2FkdW5pdC00ZTdlZjQ2N2UzZWFhYjUxJyk7XHJcblxyXG4gICAgICAgIC8vIOm7mOiupOaWueW8j+aYvuekuuaoquW5heW5v+WRiuOAglxyXG4gICAgICAgIC8vIOaWueazlTHvvJrpu5jorqTosIPnlKhcclxuICAgICAgICBNaW5pR2FtZVNkay5BZHZlcnRNYW5hZ2VyLmluc3RhbmNlLnNob3dCYW5uZXIoKTtcclxuXHJcbiAgICAgICAgLy8g56S65L6L77ya5oyH5a6a5bGP5bmV5bqV6YOo5q2j5Lit5pi+56S65qiq5bmF5bm/5ZGK44CCXHJcbiAgICAgICAgLy8g5pa55rOVMu+8muaMh+WumuWxj+W5lemhtumDqOaIluW6lemDqOato+S4rVxyXG4gICAgICAgIC8vIE1pbmlHYW1lU2RrLkFkdmVydE1hbmFnZXIuaW5zdGFuY2Uuc2hvd0Jhbm5lcignYWR1bml0LTRlN2VmNDY3ZTNlYWFiNTEnLCBNaW5pR2FtZVNkay5FQWRCYW5uZXJMb2NhdGlvbi5CT1RUT00pOyBcclxuXHJcbiAgICAgICAgLy8g56S65L6L77ya6YCa6L+H5Z2Q5qCH5oyH5a6a5L2N572u5pi+56S65qiq5bmF5bm/5ZGK44CCXHJcbiAgICAgICAgLy8g5pa55rOVMu+8muaMh+WumuWdkOagh1xyXG4gICAgICAgIC8vIE1pbmlHYW1lU2RrLkFkdmVydE1hbmFnZXIuaW5zdGFuY2Uuc2hvd0Jhbm5lcignYWR1bml0LTRlN2VmNDY3ZTNlYWFiNTEnLCB7IHRvcDogMTAsIGxlZnQ6IDEwIH0pOyBcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIOmakOiXj+W5v+WRiuaoquW5heeahOWHveaVsOOAglxyXG4gICAgICogXHJcbiAgICAgKiDor6Xlh73mlbDosIPnlKhNaW5pR2FtZVNkay5BZHZlcnRNYW5hZ2Vy5a6e5L6L55qE5pa55rOV77yM55So5LqO6ZqQ6JeP5bm/5ZGK5qiq5bmF44CCXHJcbiAgICAgKiDlvZPpnIDopoHmmoLml7blgZzmraLlsZXnpLrlub/lkYrmiJbnlKjmiLfkuLvliqjor7fmsYLpmpDol4/lub/lkYrml7bvvIzlj6/ku6XosIPnlKjmraTlh73mlbDjgIJcclxuICAgICAqIFxyXG4gICAgICogQHJlbWFya3NcclxuICAgICAqIOatpOWHveaVsOS4jeaOpeWPl+S7u+S9leWPguaVsO+8jOS5n+S4jei/lOWbnuS7u+S9leWAvOOAglxyXG4gICAgICog5a6D5Y2V57qv5Zyw6Kem5Y+R5bm/5ZGK5qiq5bmF55qE6ZqQ6JeP5pON5L2c77yM5YW35L2T5a6e546w5L6d6LWW5LqOQWR2ZXJ0TWFuYWdlcueahOWunueOsOOAglxyXG4gICAgICovXHJcbiAgICBvbkhpZGVCYW5uZXIoKSB7XHJcbiAgICAgICAgTWluaUdhbWVTZGsuQWR2ZXJ0TWFuYWdlci5pbnN0YW5jZS5oaWRlQmFubmVyKCk7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiDmmL7npLrmj5LlsY/lub/lkYrnmoTlh73mlbDjgIJcclxuICAgICAqIFxyXG4gICAgICog5q2k5Ye95pWw6LCD55SoTWluaUdhbWVTZGsuQWR2ZXJ0TWFuYWdlcuWunuS+i+eahOaWueazle+8jOS7peaYvuekuuS4gOS4quaMh+WumueahOaPkuWxj+W5v+WRiuOAglxyXG4gICAgICog5a6D5L2/55So5LqG56Gs57yW56CB55qE5bm/5ZGK5Y2V5YWD5qCH6K+G56ym77yM6L+Z5oSP5ZGz552A5a6D5LiT5Li654m55a6a55qE5bm/5ZGK5L2N6K6+6K6h44CCXHJcbiAgICAgKiDlnKjlrp7pmYXlupTnlKjkuK3vvIzlj6/og73pnIDopoHmoLnmja7lupTnlKjnmoTphY3nva7miJbnlKjmiLfnmoTnibnlrprmnaHku7bmnaXliqjmgIHpgInmi6nlub/lkYrljZXlhYPmoIfor4bnrKbjgIJcclxuICAgICAqL1xyXG4gICAgb25TaG93SW50ZXJzdGl0aWFsKCkge1xyXG4gICAgICAgIE1pbmlHYW1lU2RrLkFkdmVydE1hbmFnZXIuaW5zdGFuY2Uuc2hvd0ludGVyc3RpdGlhbCgnYWR1bml0LWVhZGQ2Nzg1MWQzMDUwYWQnKTtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIOiwg+eUqOW5v+WRiueuoeeQhuWZqOWKoOi9veW5tuWxleekuuiHquWumuS5ieW5v+WRiuOAglxyXG4gICAgICog5q2k5pa55rOV6aaW5YWI6YCa6L+H5bm/5ZGK566h55CG5Zmo55qE5a6e5L6L5Yqg6L295oyH5a6a55qE6Ieq5a6a5LmJ5bm/5ZGK5Y2V5YWD77yM54S25ZCO5bGV56S66L+Z5Liq6Ieq5a6a5LmJ5bm/5ZGK44CCXHJcbiAgICAgKiDliqDovb3lkozlsZXnpLrlub/lkYrmmK/lub/lkYrnrqHnkIbns7vnu5/kuK3nmoTluLjop4Hmk43kvZzvvIzov5nph4zpgJrov4fkuKTmraXliIbliKvlrozmiJDliqDovb3lkozlsZXnpLrnmoTov4fnqIvvvIxcclxuICAgICAqIOS7peehruS/neW5v+WRiuWcqOWxleekuuWJjeato+ehruS4lOWFheWIhuWcsOiiq+WKoOi9veOAglxyXG4gICAgICovXHJcbiAgICBvblNob3dDdXN0b20oKSB7XHJcbiAgICAgICAgLy8g5Yqg6L295oyH5a6a55qE6Ieq5a6a5LmJ5bm/5ZGK5Y2V5YWD44CCXHJcbiAgICAgICAgTWluaUdhbWVTZGsuQWR2ZXJ0TWFuYWdlci5pbnN0YW5jZS5sb2FkQ3VzdG9tKEVXZWNoYXRBRC5DVU1TVE9NXzAxKTtcclxuICAgICAgICAvLyDlsZXnpLrlt7LliqDovb3nmoToh6rlrprkuYnlub/lkYrjgIJcclxuICAgICAgICBNaW5pR2FtZVNkay5BZHZlcnRNYW5hZ2VyLmluc3RhbmNlLnNob3dDdXN0b20oRVdlY2hhdEFELkNVTVNUT01fMDEpO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICog6ZqQ6JeP6Ieq5a6a5LmJ5bm/5ZGK44CCXHJcbiAgICAgKiBcclxuICAgICAqIOacrOWHveaVsOiwg+eUqE1pbmlHYW1lU2RrLkFkdmVydE1hbmFnZXIuaW5zdGFuY2UuaGlkZUN1c3RvbSgp5p2l6ZqQ6JeP6Ieq5a6a5LmJ5bm/5ZGK44CCXHJcbiAgICAgKiDov5nmmK/lr7nmjqXlub/lkYrnrqHnkIbns7vnu5/nmoTkuIDpg6jliIbvvIznlKjkuo7mjqfliLblub/lkYrnmoTmmL7npLrkuI7pmpDol4/jgIJcclxuICAgICAqIOWcqOmcgOimgemakOiXj+iHquWumuS5ieW5v+WRiueahOWcuuaZr+S4i++8jOiwg+eUqOatpOWHveaVsOWNs+WPr+WunueOsOebuOW6lOWKn+iDveOAglxyXG4gICAgICovXHJcbiAgICBvbkhpZGVDdXN0b20oKSB7XHJcbiAgICAgICAgTWluaUdhbWVTZGsuQWR2ZXJ0TWFuYWdlci5pbnN0YW5jZS5oaWRlQ3VzdG9tKEVXZWNoYXRBRC5DVU1TVE9NXzAxKTtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIOinpuWPkeaYvuekuuinhumikeW5v+WRiueahOWHveaVsOOAglxyXG4gICAgICog6YCa6L+H6LCD55SoTWluaUdhbWVTZGsuQWR2ZXJ0TWFuYWdlci5pbnN0YW5jZS5zaG93VmlkZW/mlrnms5XvvIzmmL7npLrkuIDkuKrop4bpopHlub/lkYrvvIzlubbmoLnmja7nlKjmiLfop4LnnIvlub/lkYrnmoTmg4XlhrXmiafooYznm7jlupTnmoTpgLvovpHjgIJcclxuICAgICAqIFxyXG4gICAgICogQHJlbWFya3NcclxuICAgICAqIOatpOWHveaVsOmmluWFiOS8oOWFpeS4gOS4quW5v+WRiuWNleWFg0lE77yM55So5LqO5qCH6K+G6KaB5pi+56S655qE6KeG6aKR5bm/5ZGK44CC54S25ZCO5Lyg5YWl5LiA5Liq5Zue6LCD5Ye95pWw77yM6K+l5Zue6LCD5Ye95pWw5Zyo55So5oi36KeC55yL5bm/5ZGK5ZCO6KKr6LCD55So77yM5peg6K6655So5oi35piv5a6M5oiQ5LqG6KeC55yL44CB5ouS57ud5LqG6KeC55yL6L+Y5piv6KeC55yL6L+H56iL5Lit5Y+R55Sf5LqG6ZSZ6K+v44CCXHJcbiAgICAgKiDlm57osIPlh73mlbDmjqXmlLbkuKTkuKrlj4LmlbDvvJrkuIDkuKrmmK/nlKjmiLfop4LnnIvlub/lkYrnmoTnu5PmnpzvvIzlj6bkuIDkuKrmmK/nlKjmiLfop4LnnIvnmoTlub/lkYrmlbDph4/jgILmoLnmja7op4LnnIvnu5PmnpznmoTkuI3lkIzvvIzmmL7npLrkuI3lkIznmoTmj5DnpLrkv6Hmga/jgIJcclxuICAgICAqL1xyXG4gICAgb25TaG93VmlkZW8oKSB7XHJcbiAgICAgICAgLy8g5bm/5ZGK5Y2V5YWDSUTvvIznlKjkuo7moIfor4bopoHmmL7npLrnmoTop4bpopHlub/lkYpcclxuICAgICAgICAvLyDlub/lkYrljZXlhYNJROeahOagt+S+i1xyXG4gICAgICAgIC8v5oqW6Z+z5b2i5aaCOiAxcmUzbmZxa215ODFtNG04Z2VcclxuICAgICAgICAvL+W+ruS/oeW9ouWmgjogYWR1bml0LWE3NzE4ZjZlMTk1ZTQyZmVcclxuICAgICAgICBNaW5pR2FtZVNkay5BZHZlcnRNYW5hZ2VyLmluc3RhbmNlLnNob3dWaWRlbygnMXJlM25mcWtteTgxbTRtOGdlJywgKHJlczogTWluaUdhbWVTZGsuRUFkVmlkZW9SZXN1bHQsIGNvdW50OiBudW1iZXIpID0+IHtcclxuICAgICAgICAgICAgLy8g6L6T5Ye655So5oi36KeC55yL55qE5bm/5ZGK5pWw6YePXHJcbiAgICAgICAgICAgIGNvbnNvbGUubG9nKCfnlKjmiLfnnIvnmoTop4bpopHlub/lkYrkuKrmlbDmmK86JywgY291bnQpO1xyXG5cclxuICAgICAgICAgICAgLy8g5qC55o2u55So5oi36KeC55yL5bm/5ZGK55qE57uT5p6c77yM5omn6KGM5LiN5ZCM55qE6YC76L6RXHJcbiAgICAgICAgICAgIHN3aXRjaCAocmVzKSB7XHJcbiAgICAgICAgICAgICAgICBjYXNlIE1pbmlHYW1lU2RrLkVBZFZpZGVvUmVzdWx0LkFDQ0VQVDpcclxuICAgICAgICAgICAgICAgICAgICAvLyDnlKjmiLflrozmiJDkuoblub/lkYrop4LnnIvvvIzmmL7npLrlpZblirHmj5DnpLpcclxuICAgICAgICAgICAgICAgICAgICBNaW5pR2FtZVNkay5BUEkuc2hvd1RvYXN0KCfnlKjmiLfnnIvlrozlub/lkYrvvIzlj6/ku6XlpZblirEnKTtcclxuICAgICAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgICAgIGNhc2UgTWluaUdhbWVTZGsuRUFkVmlkZW9SZXN1bHQuUkVKRUNUOlxyXG4gICAgICAgICAgICAgICAgICAgIC8vIOeUqOaIt+aLkue7neS6huW5v+WRiuingueci++8jOaYvuekuuS4jeWlluWKseaPkOekulxyXG4gICAgICAgICAgICAgICAgICAgIE1pbmlHYW1lU2RrLkFQSS5zaG93VG9hc3QoJ+eUqOaIt+aLkue7neaOieW5v+WRiu+8jOS4jeWlluWKsScpO1xyXG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICAgICAgY2FzZSBNaW5pR2FtZVNkay5FQWRWaWRlb1Jlc3VsdC5FUlJPUjpcclxuICAgICAgICAgICAgICAgICAgICAvLyDlub/lkYrmkq3mlL7lj5HnlJ/plJnor6/vvIzmmL7npLrplJnor6/mj5DnpLpcclxuICAgICAgICAgICAgICAgICAgICBNaW5pR2FtZVNkay5BUEkuc2hvd1RvYXN0KCfmkq3mlL7lub/lkYrlj5HnlJ/plJnor6/vvIzkuI3lpZblirEnKTtcclxuICAgICAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgICAgIGRlZmF1bHQ6XHJcbiAgICAgICAgICAgICAgICAgICAgLy8g5YW25LuW5oOF5Ya177yM5LiN5L2c5aSE55CGXHJcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9KTtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIOW8leWvvOeUqOaIt+WIhuS6q+W6lOeUqOe7meaci+WPi+OAglxyXG4gICAgICogXHJcbiAgICAgKiDpgJrov4fosIPnlKhNaW5pR2FtZVNka+eahEFQSeWIhuS6q+WKn+iDve+8jOWQkeeUqOaIt+eahOaci+WPi+WciOWPkemAgemCgOivt++8jOmCgOivt+S7luS7rOS4gOi1t+eOqea4uOaIj+OAglxyXG4gICAgICog6L+Z5piv5LiA5Liq6YeN6KaB55qE5o6o5bm/5omL5q6177yM5Y+v5Lul5aKe5Yqg5bqU55So55qE5pud5YWJ5bqm5ZKM55So5oi36YeP44CCXHJcbiAgICAgKiBcclxuICAgICAqIEByZW1hcmtzXHJcbiAgICAgKiDmraTmlrnms5XkuK3osIPnlKjnmoRBUEnkvp3otZbkuo7nibnlrprnmoTlsI/muLjmiI/lubPlj7DvvIzlm6DmraTlnKjkuI3lkIznmoTlubPlj7DkuIrlj6/og73pnIDopoHkuI3lkIznmoTlrp7njrDjgIJcclxuICAgICAqL1xyXG4gICAgb25TaGFyZSgpIHtcclxuICAgICAgICBNaW5pR2FtZVNkay5BUEkuc2hhcmVBcHBUb0ZyaWVuZHMoJ+adpeeOqea4uOaIj+WQpycpO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICog5pi+56S65LiA5LiqdG9hc3Tmj5DnpLrjgIJcclxuICAgICAqIFxyXG4gICAgICog6YCa6L+H6LCD55SoTWluaUdhbWVTZGvnmoRBUEnmlrnms5XmnaXmmL7npLrkuIDkuKrnroDnn63nmoTmj5DnpLrkv6Hmga/jgIJ0b2FzdOaYr+S4gOenjei9u+mHj+e6p+eahOaPkOekuuaWueW8j++8jOeUqOS6juWcqOeVjOmdouS4iuefreaaguWcsOWxleekuuS4gOS6m+S/oeaBr++8jOS4jeW9seWTjeeUqOaIt+aTjeS9nOOAglxyXG4gICAgICog6L+Z6YeM5L2/55So5LqG5Zu65a6a55qE5o+Q56S65paH5pysICfov5nmmK/kuIDkuKp0b2FzdCfvvIzlnKjlrp7pmYXlupTnlKjkuK3vvIzlj6/ku6XmoLnmja7pnIDopoHliqjmgIHorr7nva7mj5DnpLrmlofmnKzjgIJcclxuICAgICAqL1xyXG4gICAgb25TaG93VG9hc3QoKSB7XHJcbiAgICAgICAgTWluaUdhbWVTZGsuQVBJLnNob3dUb2FzdCgn6L+Z5piv5LiA5LiqdG9hc3QnKTtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIOinpuWPkeiuvuWkh+aMr+WKqOWKn+iDveOAglxyXG4gICAgICogXHJcbiAgICAgKiDor6Xmlrnms5XnlKjkuo7osIPnlKhNaW5pR2FtZVNka+aPkOS+m+eahEFQSe+8jOS7peWunueOsOiuvuWkh+eahOaMr+WKqOWKn+iDveOAguW9k+mcgOimgeaPkOmGkueUqOaIt+aIluaPkOS+m+inpuinieWPjemmiOaXtu+8jOWPr+S7peiwg+eUqOatpOaWueazleOAglxyXG4gICAgICog5L6L5aaC77yM5Zyo5ri45oiP5oiW5bqU55So5Lit77yM5b2T55So5oi35a6M5oiQ54m55a6a5pON5L2c5oiW5Y+R55Sf54m55a6a5LqL5Lu25pe277yM5Y+v5Lul6YCa6L+H5oyv5Yqo57uZ5LqI55So5oi35Y+N6aaI44CCXHJcbiAgICAgKiBcclxuICAgICAqIEByZW1hcmtzXHJcbiAgICAgKiDmraTmlrnms5Xml6Dlj4LmlbDvvIzkuZ/kuI3ov5Tlm57ku7vkvZXlgLzjgIJcclxuICAgICAqL1xyXG4gICAgb25WaXJicmF0ZSgpIHtcclxuICAgICAgICBNaW5pR2FtZVNkay5BUEkudmlicmF0ZSgpO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICog6YeN5paw5ZCv5Yqo5ri45oiP5a6e5L6L44CCXHJcbiAgICAgKiBcclxuICAgICAqIOatpOWHveaVsOiwg+eUqE1pbmlHYW1lU2Rr5Lit55qEQVBJ6YeN5paw5ZCv5Yqo5ri45oiP44CC6YeN5paw5ZCv5Yqo5pON5L2c5Y+v6IO95piv5Li65LqG5Yid5aeL5YyW5ri45oiP546v5aKD44CB6YeN572u5ri45oiP54q25oCB5oiW5aSE55CG5YW25LuW6ZyA6KaB6YeN5ZCv55qE5Zy65pmv44CCXHJcbiAgICAgKiDosIPnlKjmraTlh73mlbDlkI7vvIzmuLjmiI/lsIbkvJrph43mlrDlvIDlp4vvvIzlvZPliY3nmoTmuLjmiI/nirbmgIHlsIbkvJrooqvmuIXpmaTjgIJcclxuICAgICAqIFxyXG4gICAgICogQHJlbWFya3NcclxuICAgICAqIOatpOWHveaVsOS4jeaOpeWPl+S7u+S9leWPguaVsOOAglxyXG4gICAgICogXHJcbiAgICAgKiBAcmV0dXJucyDml6Dov5Tlm57lgLzjgIJcclxuICAgICAqL1xyXG4gICAgb25SZWJvb3QoKSB7XHJcbiAgICAgICAgTWluaUdhbWVTZGsuQVBJLnJlYm9vdCgpO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICog5b2T5YmN5Ye95pWw55So5LqO5Zyo6L+35L2g5ri45oiP5Lit5a6e546w6YCA5Ye65Yqf6IO944CCXHJcbiAgICAgKiDlroPosIPnlKjkuoZNaW5pR2FtZVNka+aPkOS+m+eahEFQSeaWueazleadpeinpuWPkemAgOWHuuaTjeS9nOOAglxyXG4gICAgICog6K+l5pa55rOV6YCa5bi45Zyo6ZyA6KaB57uT5p2f5b2T5YmN6L+35L2g5ri45oiP5oiW6L+U5Zue5Yiw5LiK5LiA57qn6I+c5Y2V5pe26KKr6LCD55So44CCXHJcbiAgICAgKi9cclxuICAgIG9uRXhpdCgpIHtcclxuICAgICAgICBNaW5pR2FtZVNkay5BUEkuZXhpdCgpO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICog5pi+56S65YiG5Lqr6I+c5Y2V44CCXHJcbiAgICAgKiBcclxuICAgICAqIOmAmui/h+iwg+eUqE1pbmlHYW1lU2Rr55qEQVBJ5pa55rOV77yM6Kem5Y+R5pi+56S65YiG5Lqr6I+c5Y2V55qE5pON5L2c44CC5q2k5Ye95pWw5peo5Zyo5o+Q5L6b5LiA5Liq57uf5LiA55qE5YWl5Y+j77yMXHJcbiAgICAgKiDku6Xkvr/lnKjpnIDopoHml7bovbvmnb7osIPnlKjliIbkuqvlip/og73vvIzogIzml6DpnIDnm7TmjqXkuI7lhbfkvZPnmoRTREvmjqXlj6PkuqTkupLjgIJcclxuICAgICAqIFxyXG4gICAgICogQHJlbWFya3NcclxuICAgICAqIOatpOaWueazleS4jeaOpeWPl+S7u+S9leWPguaVsO+8jOS5n+S4jei/lOWbnuS7u+S9leWAvOOAglxyXG4gICAgICovXHJcbiAgICBvblNob3dTaGFyZU1lbnUoKSB7XHJcbiAgICAgICAgTWluaUdhbWVTZGsuQVBJLnNob3dTaGFyZU1lbnUoKTtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIOWvvOiIquWIsOaMh+WumueahOWwj+a4uOaIj+OAglxyXG4gICAgICogXHJcbiAgICAgKiDmnKzlh73mlbDnlKjkuo7op6blj5Hlr7zoiKrliLDkuIDkuKrnibnlrprnmoTlsI/muLjmiI/jgILov5npnIDopoHmj5Dkvpvnm67moIflsI/muLjmiI/nmoRJRO+8jFxyXG4gICAgICog5Lul5L6/57O757uf6IO95aSf5q2j56Gu5Zyw5bCG55So5oi36YeN5a6a5ZCR5Yiw55uu5qCH5bCP5ri45oiP44CCXHJcbiAgICAgKiBcclxuICAgICAqIOazqOaEj++8mui/memHjOeahCd4eHgn5piv5Y2g5L2N56ym77yM5a6e6ZmF5L2/55So5pe26ZyA6KaB5pu/5o2i5Li65YW35L2T55qE5bCP5ri45oiPSUTjgIJcclxuICAgICAqL1xyXG4gICAgb25OYXZpZ2F0ZSgpIHtcclxuICAgICAgICBNaW5pR2FtZVNkay5BUEkubmF2aWdhdGVUbygneHh4Jyk7IC8vIHh4eOabv+aNouS4uuS9oOeahOWwj+a4uOaIj2lkXHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiDmv4DmtLvlrZfoioLot7PliqjlhaXlj6Pop4blm77jgIJcclxuICAgICAqIFxyXG4gICAgICog5q2k5pa55rOV55So5LqO5bCG5a2X6IqC6Lez5Yqo5YWl5Y+j6KeG5Zu+6K6+572u5Li65rS76LeD54q25oCB44CC5b2T6ZyA6KaB5Zyo55So5oi355WM6Z2i5Lit5pi+56S65a2X6IqC6Lez5Yqo55qE5YWl5Y+j5pe277yMXHJcbiAgICAgKiDlj6/ku6XosIPnlKjmraTmlrnms5XmnaXmv4DmtLvnm7jlupTnmoTop4blm77lhYPntKDvvIzkvb/lhbblr7nnlKjmiLflj6/op4HjgIJcclxuICAgICAqL1xyXG4gICAgb25CeXRlZGFuY2VFbnRyYW5jZVZpZXcoKSB7XHJcbiAgICAgICAgLy8gdGhpcy5lbnRyYW5jZVZpZXcuYWN0aXZlID0gdHJ1ZTtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIOivt+axgueZu+W9leS7o+eggVxyXG4gICAgICogXHJcbiAgICAgKiDmnKzlh73mlbDnlKjkuo7op6blj5HlsI/nqIvluo/nmoTnmbvlvZXmtYHnqIvvvIzojrflj5blvq7kv6HmiJblpLTmnaHnrYnnrKzkuInmlrnlubPlj7DnmoTnmbvlvZXku6PnoIHjgIJcclxuICAgICAqIOi/meS6m+S7o+eggeWPr+S7peeUqOS6juWQjue7reeahOeUqOaIt+i6q+S7vemqjOivgeWSjOaVsOaNruWQjOatpea1geeoi+OAglxyXG4gICAgICovXHJcbiAgICBvbkdldExvZ2luQ29kZSgpIHtcclxuICAgICAgICAvLyDosIPnlKhNaW5pR2FtZVNka+eahEFQSeeZu+W9leaWueazle+8jOS8oOWFpeS4gOS4quWbnuiwg+WHveaVsOWkhOeQhueZu+W9lee7k+aenFxyXG4gICAgICAgIE1pbmlHYW1lU2RrLkFQSS5sb2dpbigoY29kZTogc3RyaW5nLCBhbm9ueW1vdXNDb2RlOiBzdHJpbmcpID0+IHtcclxuICAgICAgICAgICAgLy8g5omT5Y2w5b6u5L+h5oiW5aS05p2h55qE55m75b2V5Luj56CBXHJcbiAgICAgICAgICAgIGNvbnNvbGUubG9nKCdXZWNoYXQgT3IgQnl0ZWRhbmNlIENvZGU6JywgY29kZSk7XHJcbiAgICAgICAgICAgIC8vIOaJk+WNsOWktOadoeeahOWMv+WQjeeZu+W9leS7o+eggVxyXG4gICAgICAgICAgICAvLyBjb25zb2xlLmxvZygnQnl0ZWRhbmNlIEFub255bW91cyBDb2RlOicsIGFub255bW91c0NvZGUpO1xyXG4gICAgICAgICAgICBpZihjb2RlKXtcclxuICAgICAgICAgICAgICAgIC8vIGNjLmZ4LkdhbWVUb29sLmdldFVzZXJJZChjb2RlLCBkYXRhID0+IHRoaXMuc2V0VXNlcklkKGRhdGEpKTsgXHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9KTtcclxuICAgIH1cclxuXHJcbiAgICAvLyBzZXRVc2VySWQoZGF0YSl7XHJcbiAgICAvLyAgICAgY2MuZnguR2FtZUNvbmZpZy5HTV9JTkZPLnVzZXJJZCA9IGRhdGEuZGF0YS51c2VySWQ7XHJcbiAgICAvLyAgICAgTWluaUdhbWVTZGsuQVBJLmdldFVzZXJJbmZvKHRoaXMuc2V0VXNlckluZm8pO1xyXG4gICAgLy8gfVxyXG5cclxuICAgIC8vIHNldFVzZXJJbmZvKGRhdGEpe1xyXG4gICAgLy8gICAgIGNvbnNvbGUubG9nKFwi6I635Y+W5Yiw55qE55So5oi35L+h5oGvXCIsZGF0YS51c2VySW5mbyk7XHJcbiAgICAvLyAgICAgdmFyIHVzZURhdGEgPSB7XHJcbiAgICAvLyAgICAgICAgIFwiZ2FtZUlkXCI6IGNjLmZ4LkdhbWVDb25maWcuR01fSU5GTy5nYW1lSWQsXHJcbiAgICAvLyAgICAgICAgIFwidXNlcklkXCI6IGNjLmZ4LkdhbWVDb25maWcuR01fSU5GTy51c2VySWQsXHJcbiAgICAvLyAgICAgICAgIFwibmlja05hbWVcIjpkYXRhLnVzZXJJbmZvLm5pY2tOYW1lLFxyXG4gICAgLy8gICAgICAgICBcInBpY1wiOiBkYXRhLnVzZXJJbmZvLmF2YXRhclVybFxyXG4gICAgICAgICAgIFxyXG4gICAgLy8gICAgIH1cclxuICAgIC8vICAgICBjb25zb2xlLmxvZyhcIuWNs+WwhuS4iuS8oOeahOeUqOaIt+S/oeaBrzpcIixjYy5meC5HYW1lQ29uZmlnLkdNX0lORk8udXNlcklkLGRhdGEudXNlckluZm8ubmlja05hbWUsZGF0YS51c2VySW5mby5hdmF0YXJVcmwpO1xyXG4gICAgLy8gICAgIGNvbnNvbGUubG9nKFwiUG9zdOaVsOaNrjpcIix1c2VEYXRhKTtcclxuICAgIC8vICAgICBjYy5meC5HYW1lVG9vbC5zZXRVc2VySW5mbyh1c2VEYXRhLChyZXMpPT57XHJcbiAgICAvLyAgICAgICAgIGNvbnNvbGUubG9nKFwi5LiK5Lyg5oiQ5YqfOlwiLHJlcyk7XHJcbiAgICAvLyAgICAgfSk7XHJcbiAgICAvLyB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiDliJvlu7rlubbmmL7npLrmuLjmiI/lnIjmjInpkq5cclxuICAgICAqIFxyXG4gICAgICog5pys5Ye95pWw6YCa6L+H6LCD55SoTWluaUdhbWVTZGvnmoRHYW1lQ2x1YuWunuS+i+aWueazle+8jOWunueOsOa4uOaIj+S/seS5kOmDqOeahOWIm+W7uuWSjOaYvuekuuOAglxyXG4gICAgICog5a6D6aaW5YWI6YWN572u5L+x5LmQ6YOo55qE5Zu+5qCH57G75Z6L5ZKM5L2N572u5aSn5bCP77yM54S25ZCO5Yib5bu65L+x5LmQ6YOo77yM5pyA5ZCO5pi+56S65L+x5LmQ6YOo44CCXHJcbiAgICAgKiDov5nmoLflgZrmmK/kuLrkuoblnKjlsI/muLjmiI/lhoXliJvlu7rlubblsZXnpLrkuIDkuKrmuLjmiI/kv7HkuZDpg6jnmoTlm77moIfvvIzkvpvnjqnlrrbliqDlhaXmiJbkupLliqjjgIJcclxuICAgICAqL1xyXG4gICAgb25DcmVhdGVDbHViKCkge1xyXG4gICAgICAgIC8vIOmFjee9ruS/seS5kOmDqOWbvuagh+S4uue7v+iJsu+8jOiuvue9ruWbvuagh+eahOS9jee9ruS4uumhtumDqDIwMOWDj+e0oO+8jOW3puS+pzDlg4/ntKBcclxuICAgICAgICBNaW5pR2FtZVNkay5HYW1lQ2x1Yi5pbnN0YW5jZS5jcmVhdGUoXHJcbiAgICAgICAgICAgIE1pbmlHYW1lU2RrLkVHYW1lQ2x1Ykljb24uR1JFRU4sXHJcbiAgICAgICAgICAgIHsgdG9wOiAyMDAsIGxlZnQ6IDAgfSxcclxuICAgICAgICAgICAgeyB3aWR0aDogNTAsIGhlaWdodDogNTAgfSk7XHJcbiAgICAgICAgLy8g5pi+56S65ri45oiP5L+x5LmQ6YOo5Zu+5qCHXHJcbiAgICAgICAgTWluaUdhbWVTZGsuR2FtZUNsdWIuaW5zdGFuY2Uuc2hvdygpO1xyXG4gICAgfVxyXG59XHJcbiJdfQ== +//------QC-SOURCE-SPLIT------ + + (function() { + var nodeEnv = typeof require !== 'undefined' && typeof process !== 'undefined'; + var __module = nodeEnv ? module : {exports:{}}; + var __filename = 'preview-scripts/assets/Script/Map.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, '2234assp7RIvpDgrnqljp2R', 'Map'); +// Script/Map.ts + +"use strict"; +// Learn TypeScript: +// - https://docs.cocos.com/creator/manual/en/scripting/typescript.html +// Learn Attribute: +// - https://docs.cocos.com/creator/manual/en/scripting/reference/attributes.html +// Learn life-cycle callbacks: +// - https://docs.cocos.com/creator/manual/en/scripting/life-cycle-callbacks.html +var __extends = (this && this.__extends) || (function () { + var extendStatics = function (d, b) { + extendStatics = Object.setPrototypeOf || + ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) || + function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; }; + return extendStatics(d, b); + }; + return function (d, b) { + extendStatics(d, b); + function __() { this.constructor = d; } + d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); + }; +})(); +var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) { + var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; + if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc); + else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; + return c > 3 && r && Object.defineProperty(target, key, r), r; +}; +Object.defineProperty(exports, "__esModule", { value: true }); +var GameManager_1 = require("./GameManager"); +var NumberToImage_1 = require("./NumberToImage"); +var MiniGameSdk_1 = require("./Sdk/MiniGameSdk"); +var _a = cc._decorator, ccclass = _a.ccclass, property = _a.property; +var MapConroler = /** @class */ (function (_super) { + __extends(MapConroler, _super); + function MapConroler() { + var _this = _super !== null && _super.apply(this, arguments) || this; + _this.Block_Array = []; + _this.Block_Prop = []; + _this.MapBlockPrefab = null; + _this.Block_Color = []; + _this.Wall_Prefab = []; + _this.wallTurnPrefab = null; + _this.timeBtn = null; + _this.destroyBtn = null; + _this.magicBtn = null; + _this.mask = null; + _this.iceLabel = null; + _this.hammerLabel = null; + _this.magicLabel = null; + _this.magicMask = null; + _this.hammerMask = null; + _this.freezeMask = null; + _this.coinPop = null; + _this.timeLabel = null; + _this.levelLabel = null; + _this.new_mode = 0; + _this.mapWidth = 0; + _this.mapHeight = 0; + _this.wallNum = 0; + _this.blockNum = 0; + _this.homeCanTouch = true; //按钮可用状态 + _this.againCanTouch = true; //重玩按钮可以用状态 + _this.gameOver = false; //游戏结束状态 + _this.gameWin = false; //游戏胜利状态 + _this.gameStart = false; //游戏开始状态 + _this.timeNumber = 0; //游戏时间 用于倒计时 + _this.count_Time = 0; //用于统计总游戏时长 + _this.add_Time = 0; //复活时间 + _this.pause = false; //暂停状态 + _this.hammer = false; //锤子状态 + return _this; + } + MapConroler_1 = MapConroler; + // mapInfo: number[][] = []; + MapConroler.prototype.onLoad = function () { + var _this = this; + cc.fx.GameConfig.GM_INFO.review = 0; + cc.fx.GameConfig.GM_INFO.gameState = true; + this.mask.opacity = 0; + this.node.getChildByName("Adhesive").zIndex = 500; + cc.game.setFrameRate(63); + cc.fx.AudioManager._instance.playEffect("zhuan2", null); + this.node.parent.parent.parent.getChildByName("zhuanchang").active = true; + this.node.parent.parent.parent.getChildByName("zhuanchang").getComponent(sp.Skeleton).setAnimation(1, "down", false); + this.node.parent.parent.parent.getChildByName("zhuanchang").getComponent(sp.Skeleton).setCompleteListener(function (entry) { + if (entry.animation.name === "down") { + // 动画播放结束后执行的逻辑 + _this.node.parent.parent.parent.getChildByName("zhuanchang").active = false; + } + }); + this.blocks = []; + this.leftDoors = []; //左门 + this.rightDoors = []; //右门 + this.topDoors = []; //上门 + this.bottomDoors = []; //下门 + this.gameWin = false; + this.gameOver = false; + this.gameStart = false; + this.homeCanTouch = true; + this.againCanTouch = true; + this.new_mode = 0; + this.count_Time = 0; + this.add_Time = 0; + this.iceLabel.string = cc.fx.GameConfig.GM_INFO.freezeAmount.toString(); + this.hammerLabel.string = cc.fx.GameConfig.GM_INFO.hammerAmount.toString(); + this.magicLabel.string = cc.fx.GameConfig.GM_INFO.magicAmount.toString(); + // cc.game.addPersistRootNode(this.node); + MapConroler_1._instance = this; + }; + MapConroler.prototype.start = function () { + setTimeout(function () { + cc.director.preloadScene("HomeScene", function (err, asset) { + if (err) { + console.error('动态加载 HomeScene 失败:', err); + return; + } + }); + }, 1000); + // console.log("进入GameScene"); + this.Block_Array = GameManager_1.default._instance.Block_Array; + this.Wall_Prefab = GameManager_1.default._instance.Wall_Prefab; + this.Block_Color = GameManager_1.default._instance.Block_Color; + // this.particleEffects = GameManager._instance.particleEffects; + this.initMap(); + }; + MapConroler.prototype.startUpdate = function () { + if (this.gameStart == false) { + this.gameStart = true; + //发送数数事件——进入关卡 + console.log("准备进入下一关,发送下一关进入"); + cc.fx.GameTool.shushu_Track("enter_stage"); + this.startTimeCutDown(); + for (var i = 0; i < this.blocks.length; i++) { + if (this.blocks[i].getComponent("Block").type == 6) { + this.blocks[i].getChildByName("boom").getComponent("Boom").startBoom(); + } + } + } + }; + MapConroler.prototype.initMap = function () { + // this.node.getChildByName("Wall").zIndex = 10; + this.timeLabel = this.node.parent.getChildByName("Top").getChildByName("time"); + this.levelLabel = this.node.parent.getChildByName("Top").getChildByName("level"); + this.timeNumber = cc.fx.GameConfig.LEVEL_INFO[0].time; + this.count_Time = 0; + this.add_Time = 0; + NumberToImage_1.default.getTimeMargin(this.timeNumber, 50, "time_", this.timeLabel); + // var timeTemp = cc.fx.GameTool.getTimeMargin(this.timeNumber); + // this.timeLabel.string = timeTemp.toString(); + NumberToImage_1.default.numberToImageNodes((cc.fx.GameConfig.GM_INFO.level + 1), 50, 20, "level_", this.levelLabel, false); + //this.startTimeCutDown(); + this.mapWidth = cc.fx.GameConfig.LEVEL_INFO[0].map[0]; + this.mapHeight = cc.fx.GameConfig.LEVEL_INFO[0].map[1]; + var gap = cc.fx.GameConfig.LEVEL_INFO[0].gap; + var risefall = cc.fx.GameConfig.LEVEL_INFO[0].risefall; + this.pause = false; + this.hammer = false; + this.wallNum = 0; + this.setMapInfo(); + this.blocks = []; + this.mapBlocksWall = []; + this.mapInfo = []; + this.wallInfo = []; + this.openWall = []; + this.wallArray = []; + this.freezeWall = []; + this.riseFallBlcok = []; + this.mapBlockArray = []; + this.freezeArray = []; + this.loackArray = []; + this.count_Time = 0; + this.add_Time = 0; + var startX = this.mapWidth % 2 == 0 ? -(this.mapWidth - 1) * 60 : -(this.mapWidth - 1) * 60; + var startY = this.mapHeight % 2 == 0 ? -(this.mapHeight - 1) * 60 : -(this.mapHeight - 1) * 60; + // startX =(this.mapWidth-1)*60 + 60; + // startY =-(this.mapHeight-1)*60 - 60; + for (var i = 0; i < this.mapWidth; i++) { + this.mapBlocksWall[i] = []; + for (var j = 0; j < this.mapHeight; j++) { + var block = cc.instantiate(this.MapBlockPrefab); + block.parent = this.node.getChildByName("mapBlock"); + block.getComponent("MapBlock").init(i, j); + // block.getChildByName("num").getComponent(cc.Label).string = i + ":" + j; + block.setPosition(cc.v2(startX + i * 120, startY + j * 120)); + if (risefall != null) { + if (this.mapRiseFall(cc.v2(i, j), risefall, block)) { + this.riseFallBlcok.push(block); + } + } + if (gap != null) { + if (!this.mapGap(cc.v2(i, j), gap) || i == 0 || i == this.mapWidth - 1 + || j == 0 || j == this.mapHeight - 1) { + block.opacity = 254; + block.removeComponent(cc.Sprite); + block.removeAllChildren(); + this.wallInfo.push(block); + } + else + this.mapInfo.push(block); + } + else { + if (i == 0 || i == this.mapWidth - 1 + || j == 0 || j == this.mapHeight - 1) { + block.opacity = 254; + block.removeComponent(cc.Sprite); + block.removeAllChildren(); + this.wallInfo.push(block); + } + else + this.mapInfo.push(block); + } + this.mapBlocksWall[i].push(block); + } + } + this.wallInit(); + this.blockInit(); + }; + //创建方块 + // ... 已有代码 ... + //创建方块 + // ... 已有代码 ... + MapConroler.prototype.blockInit = function () { + var _this = this; + var blockArray = cc.fx.GameConfig.BLOCK_INFO[0]; + blockArray = this.sortBlock(blockArray); + console.log("创建方块", blockArray); + var index = 0; // 当前要创建的方块索引 + var BLOCKS_PER_FRAME = 1; // 初始每帧创建的方块数量 + var MAX_PER_FRAME = 10; // 每帧最大创建数量 + var MIN_PER_FRAME = 1; // 每帧最小创建数量 + var createBlocks = function () { + var startTime = performance.now(); + var _loop_1 = function (i) { + var blockInfo = blockArray[index]; + // 缓存 Block_Array 访问 + var blockPrefab = _this.Block_Array[blockInfo.block]; + var block = cc.instantiate(blockPrefab); + block.parent = _this.node; + block.setPosition(cc.v2(blockInfo.position.x, blockInfo.position.y)); + if (blockInfo.block != 23) { + _this.blockNum += 1; + _this.blocks.push(block); + if (blockInfo.type == 1) { + var info = { + id: blockInfo.id + 1, + block: blockInfo.block, + color: blockInfo.stacking, + type: 10, + position: blockInfo.position, + stacking: blockInfo.color + }; + // 缓存 Block_Array 访问 + var blockUpPrefab = _this.Block_Array[info.block]; + var blockUp = cc.instantiate(blockUpPrefab); + blockUp.parent = _this.node; + blockUp.setPosition(cc.v2(info.position.x, info.position.y)); + _this.blocks.push(blockUp); + block.getComponent("Block").init(blockInfo, null, null, blockUp); + blockUp.getComponent("Block").init(info, null, null, block); + _this.blockNum += 1; + } + else if (blockInfo.type == 9) { + if (blockInfo.adhesiveTime < 2) { + index++; + return "continue"; + } + index++; + var info_1 = blockArray[index]; + // 缓存 Block_Array 访问 + var blockUpPrefab = _this.Block_Array[info_1.block]; + var blockUp_1 = cc.instantiate(blockUpPrefab); + blockUp_1.parent = _this.node; + blockUp_1.setPosition(cc.v2(info_1.position.x, info_1.position.y)); + _this.blocks.push(blockUp_1); + block.getComponent("Block").init(blockInfo, null, null, blockUp_1, false); + setTimeout(function () { + blockUp_1.getComponent("Block").init(info_1, null, null, block, true); + }, 100); + _this.blockNum += 1; + } + else { + block.getComponent("Block").init(blockInfo); + } + } + else { + block.getComponent("Barrier").init(blockInfo); + } + index++; + }; + for (var i = 0; i < BLOCKS_PER_FRAME && index < blockArray.length; i++) { + _loop_1(i); + } + var endTime = performance.now(); + var frameTime = endTime - startTime; + // 如果当前帧执行时间过长,减少每帧创建数量 + if (frameTime > 16) { + BLOCKS_PER_FRAME = Math.max(BLOCKS_PER_FRAME - 1, MIN_PER_FRAME); + } + else { + BLOCKS_PER_FRAME = Math.min(BLOCKS_PER_FRAME + 1, MAX_PER_FRAME); + } + // 如果还有方块未创建,下一帧继续创建 + if (index < blockArray.length) { + // 使用 scheduleOnce 在下一帧执行 createBlocks + _this.scheduleOnce(function () { + createBlocks(); + }, 0); + } + else { + } + }; + // 开始分帧创建方块 + createBlocks(); + }; + //给创建方块排序,用来降低drawcall 合批 + MapConroler.prototype.sortBlock = function (allBlocks) { + return allBlocks.sort(function (a, b) { + // 先处理 type 为 1 的情况,将其放到最后 + if (a.type === 1 && b.type !== 1) { + return 1; + } + if (a.type !== 1 && b.type === 1) { + return -1; + } + // 对 type 不为 0 的元素按 type 排序 + if (a.type !== 0 && b.type !== 0) { + return a.type - b.type; + } + if (a.type !== 0 && b.type === 0) { + return 1; + } + if (a.type === 0 && b.type !== 0) { + return -1; + } + // 再处理 block 为 23 的情况,将其放到最前面 + if (a.block === 23 && b.block !== 23) { + return -1; + } + if (a.block !== 23 && b.block === 23) { + return 1; + } + // 其余按 color 升序排列 + return a.color - b.color; + }); + }; + //创建墙壁 + MapConroler.prototype.wallInit = function () { + var _this = this; + var index = 0; // 当前要创建的墙壁索引 + var WALLS_PER_FRAME = 1; // 初始每帧创建的墙壁数量 + var MAX_PER_FRAME = 10; // 每帧最大创建数量 + var MIN_PER_FRAME = 1; // 每帧最小创建数量 + var createWalls = function () { + var startTime = performance.now(); + for (var i = 0; i < WALLS_PER_FRAME && index < _this.wallInfo.length; i++) { + var block = _this.wallInfo[index]; + var dir = _this.getWllDiraction("wall", cc.v2(block.getComponent("MapBlock").posX, block.getComponent("MapBlock").posY)); + if (dir != null) { + _this.createWall(dir, block); + } + index++; + } + var endTime = performance.now(); + var frameTime = endTime - startTime; + // 如果当前帧执行时间过长,减少每帧创建数量 + if (frameTime > 16) { + WALLS_PER_FRAME = Math.max(WALLS_PER_FRAME - 1, MIN_PER_FRAME); + } + else { + WALLS_PER_FRAME = Math.min(WALLS_PER_FRAME + 1, MAX_PER_FRAME); + } + // 如果还有墙壁未创建,下一帧继续创建 + if (index < _this.wallInfo.length) { + _this.scheduleOnce(function () { + createWalls(); + }, 0); + } + else { + // 所有墙壁创建完成后,创建拐角节点 + _this.createCornerNodes(); + } + }; + // 开始分帧创建墙壁 + createWalls(); + }; + // ... 已有代码 ... + MapConroler.prototype.getWllDiraction = function (type, pointA) { + var dir = []; + var pointB = cc.v2(pointA.x + 1, pointA.y); + var pointC = cc.v2(pointA.x - 1, pointA.y); + var pointD = cc.v2(pointA.x, pointA.y + 1); + var pointE = cc.v2(pointA.x, pointA.y - 1); + var opacity = 0; + if (type == "wall") + opacity = 255; + if (type == "turn") + opacity = 250; + if (pointB.x < this.mapWidth) { + if (this.mapBlocksWall[pointB.x][pointB.y].opacity == opacity) { + if (type == "turn" && this.mapBlocksWall[pointB.x][pointB.y].getComponent("MapBlock").direction == "right") { + } + else + dir.push("right"); + } + } + if (pointC.x >= 0) { + if (this.mapBlocksWall[pointC.x][pointC.y].opacity == opacity) { + if (type == "turn" && this.mapBlocksWall[pointC.x][pointC.y].getComponent("MapBlock").direction == "left") { + } + else + dir.push("left"); + } + } + if (pointD.y < this.mapHeight) { + if (this.mapBlocksWall[pointD.x][pointD.y].opacity == opacity) { + if (type == "turn" && this.mapBlocksWall[pointD.x][pointD.y].getComponent("MapBlock").direction == "up") { + } + else + dir.push("up"); + } + } + if (pointE.y >= 0) { + if (this.mapBlocksWall[pointE.x][pointE.y].opacity == opacity) { + if (type == "turn" && this.mapBlocksWall[pointE.x][pointE.y].getComponent("MapBlock").direction == "down") { + } + else + dir.push("down"); + } + } + if (dir.length > 2) { + return null; + } + if (dir.length == 1) { + if (type == "wall") + return dir[0]; + else + return null; + } + else if (dir.length == 2) { + return dir[0] + dir[1]; + } + }; + MapConroler.prototype.createCornerNodes = function () { + // 定义拐角位置 + for (var i = 0; i < this.wallInfo.length; i++) { + var block = this.wallInfo[i]; + if (block.opacity != 250) { + var dir = this.getWllDiraction("turn", cc.v2(block.getComponent("MapBlock").posX, block.getComponent("MapBlock").posY)); + if (dir != null) { + this.createTurn(dir, block, block.getComponent("MapBlock").posX, block.getComponent("MapBlock").posY); + } + } + } + }; + MapConroler.prototype.createWall = function (direction, node) { + var wall = null; + node.getComponent("MapBlock").setDiraction(direction); + switch (direction) { + case "right": + node.opacity = 250; + wall = cc.instantiate(this.Wall_Prefab[4]); + this.leftDoors.push(wall); + // wall.parent = this.node.getChildByName("Wall"); + wall.parent = this.node; + wall.setPosition(cc.v2(node.x, node.y)); + node.opacity = 250; + wall.getChildByName("wall").getComponent("Wall").init(null, node.getComponent("MapBlock").posX, node.getComponent("MapBlock").posY, direction); + //wall.getChildByName("wall").getChildByName("num").getComponent(cc.Label).string = this.wallNum.toString(); + this.setDoorInfo(wall.getChildByName("wall")); + this.wallNum += 1; + if (wall.getChildByName("wall").getComponent("Wall").special == 2) + this.openWall.push(wall); + else if (wall.getChildByName("wall").getComponent("Wall").special == 3) + this.freezeWall.push(wall); + break; + case "left": + node.opacity = 250; + wall = cc.instantiate(this.Wall_Prefab[3]); + // wall.parent = this.node.getChildByName("Wall"); + this.rightDoors.push(wall); + wall.parent = this.node; + wall.setPosition(cc.v2(node.x, node.y)); + wall.getChildByName("wall").getComponent("Wall").init(null, node.getComponent("MapBlock").posX, node.getComponent("MapBlock").posY, direction); + this.setDoorInfo(wall.getChildByName("wall")); + //wall.getChildByName("wall").getChildByName("num").getComponent(cc.Label).string = this.wallNum.toString(); + this.wallNum += 1; + if (wall.getChildByName("wall").getComponent("Wall").special == 2) + this.openWall.push(wall); + else if (wall.getChildByName("wall").getComponent("Wall").special == 3) + this.freezeWall.push(wall); + break; + case "up": + node.opacity = 250; + wall = cc.instantiate(this.Wall_Prefab[5]); + this.topDoors.push(wall); + // wall.parent = this.node.getChildByName("Wall"); + wall.parent = this.node; + wall.setPosition(cc.v2(node.x, node.y)); + wall.getChildByName("wall").getComponent("Wall").init(null, node.getComponent("MapBlock").posX, node.getComponent("MapBlock").posY, direction); + this.setDoorInfo(wall.getChildByName("wall")); + //wall.getChildByName("wall").getChildByName("num").getComponent(cc.Label).string = this.wallNum.toString(); + this.wallNum += 1; + if (wall.getChildByName("wall").getComponent("Wall").special == 2) + this.openWall.push(wall); + else if (wall.getChildByName("wall").getComponent("Wall").special == 3) + this.freezeWall.push(wall); + break; + case "down": + node.opacity = 250; + wall = cc.instantiate(this.Wall_Prefab[0]); + this.bottomDoors.push(wall); + // wall.parent = this.node.getChildByName("Wall"); + wall.parent = this.node; + wall.setPosition(cc.v2(node.x, node.y)); + // this.setDoorInfo(wall.getChildByName("wall")); + wall.getChildByName("wall").getComponent("Wall").init(null, node.getComponent("MapBlock").posX, node.getComponent("MapBlock").posY, direction); + this.setDoorInfo(wall.getChildByName("wall")); + //wall.getChildByName("wall").getChildByName("num").getComponent(cc.Label).string = this.wallNum.toString(); + this.wallNum += 1; + if (wall.getChildByName("wall").getComponent("Wall").special == 2) + this.openWall.push(wall); + else if (wall.getChildByName("wall").getComponent("Wall").special == 3) + this.freezeWall.push(wall); + break; + case "upright": + case "rightup": + node.opacity = 249; + wall = cc.instantiate(this.Wall_Prefab[7]); + // wall.parent = this.node.getChildByName("Wall"); + wall.parent = this.node; + wall.setPosition(cc.v2(node.x, node.y)); + wall.children[1].getComponent("Wall").init(null, node.getComponent("MapBlock").posX, node.getComponent("MapBlock").posY, direction); + wall.children[2].getComponent("Wall").init(null, node.getComponent("MapBlock").posX, node.getComponent("MapBlock").posY, direction); + //wall.children[0].getChildByName("num").getComponent(cc.Label).string = this.wallNum.toString(); + this.setDoorInfo(wall.children[0]); + this.wallNum += 1; + //wall.children[1].getChildByName("num").getComponent(cc.Label).string = this.wallNum.toString(); + this.setDoorInfo(wall.children[1]); + this.wallNum += 1; + break; + case "upleft": + case "leftup": + node.opacity = 249; + wall = cc.instantiate(this.Wall_Prefab[6]); + // wall.parent = this.node.getChildByName("Wall"); + wall.parent = this.node; + wall.setPosition(cc.v2(node.x, node.y)); + wall.children[1].getComponent("Wall").init(null, node.getComponent("MapBlock").posX, node.getComponent("MapBlock").posY, direction); + wall.children[2].getComponent("Wall").init(null, node.getComponent("MapBlock").posX, node.getComponent("MapBlock").posY, direction); + //wall.children[0].getChildByName("num").getComponent(cc.Label).string = this.wallNum.toString(); + this.setDoorInfo(wall.children[0]); + this.wallNum += 1; + //wall.children[1].getChildByName("num").getComponent(cc.Label).string = this.wallNum.toString(); + this.setDoorInfo(wall.children[1]); + this.wallNum += 1; + break; + case "downright": + case "rightdown": + node.opacity = 249; + wall = cc.instantiate(this.Wall_Prefab[2]); + // wall.parent = this.node.getChildByName("Wall"); + wall.parent = this.node; + wall.setPosition(cc.v2(node.x, node.y)); + wall.children[1].getComponent("Wall").init(null, node.getComponent("MapBlock").posX, node.getComponent("MapBlock").posY, direction); + wall.children[2].getComponent("Wall").init(null, node.getComponent("MapBlock").posX, node.getComponent("MapBlock").posY, direction); + //wall.children[0].getChildByName("num").getComponent(cc.Label).string = this.wallNum.toString(); + this.setDoorInfo(wall.children[0]); + this.wallNum += 1; + //wall.children[1].getChildByName("num").getComponent(cc.Label).string = this.wallNum.toString(); + this.setDoorInfo(wall.children[1]); + this.wallNum += 1; + break; + case "downleft": + case "leftdown": + node.opacity = 249; + wall = cc.instantiate(this.Wall_Prefab[1]); + // wall.parent = this.node.getChildByName("Wall"); + wall.parent = this.node; + wall.setPosition(cc.v2(node.x, node.y)); + wall.children[1].getComponent("Wall").init(null, node.getComponent("MapBlock").posX, node.getComponent("MapBlock").posY, direction); + wall.children[2].getComponent("Wall").init(null, node.getComponent("MapBlock").posX, node.getComponent("MapBlock").posY, direction); + //wall.children[0].getChildByName("num").getComponent(cc.Label).string = this.wallNum.toString(); + this.setDoorInfo(wall.children[0]); + this.wallNum += 1; + //wall.children[1].getChildByName("num").getComponent(cc.Label).string = this.wallNum.toString(); + this.setDoorInfo(wall.children[1]); + this.wallNum += 1; + break; + } + // if(wallTurn){ + // wallTurn.getComponent("wallTunr").init(wall); + // } + }; + MapConroler.prototype.setDoorInfo = function (wall) { + var doorInfo = cc.fx.GameConfig.WALL_INFO[0]; + if (doorInfo) { + for (var j = 0; j < doorInfo.length; j++) { + if (doorInfo[j].num == this.wallNum) { + wall.getComponent("Wall").init(doorInfo[j], null, null, null); + this.wallArray.push(wall.parent); + } + } + } + }; + MapConroler.prototype.createTurn = function (direction, node, posX, posY) { + var wall = null; + wall = cc.instantiate(this.wallTurnPrefab); + wall.parent = this.node; + wall.setPosition(cc.v2(node.x, node.y)); + switch (direction) { + case "upright": + case "rightup": + wall.angle = 0; + wall.getChildByName("icon").angle = 0; + break; + case "upleft": + case "leftup": + wall.angle = 90; + wall.getChildByName("icon").angle = -90; + wall.getChildByName("icon").y += 5; + wall.getChildByName("icon").x -= 1.3; + break; + case "downright": + case "rightdown": + wall.angle = 270; + wall.getChildByName("icon").angle = -270; + wall.getChildByName("icon").x += 2.5; + wall.getChildByName("icon").y += 1; + break; + case "downleft": + case "leftdown": + wall.angle = 180; + wall.getChildByName("icon").angle = -180; + wall.getChildByName("icon").x += 4.5; + wall.getChildByName("icon").y += 3.2; + break; + } + // if(direction == "rightdown" || direction == "downright") { + // wall.zIndex = 50 + posX - posY*3; + // } + // else + // wall.zIndex = 50 + posX - posY*3; + if (direction == "up" || direction == "leftup" || direction == "upleft") { + wall.zIndex = 100 + posX - posY * 3; + } + else if (direction == "rightup" || direction == "upright" || direction == "rightdown" || direction == "downright" || direction == "downleft") { + wall.zIndex = 30 + posX - posY * 3; + } + else if (direction == "left" || direction == "leftdown") { + wall.zIndex = 70 + posX - posY * 3; + } + else + wall.zIndex = 70 + posX - posY * 3; + // wall.getChildByName("num").angle = -wall.angle; + //wall.getChildByName("num").getComponent(cc.Label).string = direction; + //wall.getChildByName("num").getComponent(cc.Label).string = wall.zIndex+ ""; + // console.log(posX,posY,wall.zIndex); + // this.wallNum += 1; + // wall.getChildByName("num").getComponent(cc.Label).string = this.wallNum + ""; + }; + //地图底块缺口判断 + MapConroler.prototype.mapGap = function (point, gap) { + for (var i = 0; i < gap.length; i++) { + if (point.x == gap[i].x && point.y == gap[i].y) { + return false; + } + } + return true; + }; + //升降地块判断 + MapConroler.prototype.mapRiseFall = function (point, risefall, block) { + for (var i = 0; i < risefall.length; i++) { + if (point.x == risefall[i].pos.x && point.y == risefall[i].pos.y) { + block.getChildByName("risefall").active = true; + block.getChildByName('risefall').getChildByName("color").getComponent(cc.Label).string = risefall[i].color + ""; + block.getChildByName('risefall').addComponent(cc.BoxCollider); + block.getChildByName('risefall').getComponent(cc.BoxCollider).size = cc.size(110, 110); + return true; + } + } + return false; + }; + //升降地块 + MapConroler.prototype.changeRiseFall = function (color, down) { + color = color.toString(); + for (var i = 0; i < this.riseFallBlcok.length; i++) { + if (color == this.riseFallBlcok[i].getChildByName("risefall").getChildByName("color").getComponent(cc.Label).string) { + if (down) { + this.riseFallBlcok[i].getChildByName("risefall").active = false; + this.riseFallBlcok[i].getChildByName('risefall').removeComponent(cc.BoxCollider); + } + else { + this.riseFallBlcok[i].getChildByName("risefall").active = true; + this.riseFallBlcok[i].getChildByName('risefall').addComponent(cc.BoxCollider); + this.riseFallBlcok[i].getChildByName('risefall').getComponent(cc.BoxCollider).size = cc.size(110, 110); + } + } + } + }; + //查询叠加快id + MapConroler.prototype.foundDownBlock = function (id) { + for (var i = 0; i < this.blocks.length; i++) { + if (this.blocks[i].getComponent("Block").blockId == id) { + return this.blocks[i]; + } + } + return null; + }; + //删除块 + MapConroler.prototype.removeBlock = function (id) { + for (var i = 0; i < this.blocks.length; i++) { + if (this.blocks[i].getComponent("Block").blockId == id) { + return this.blocks[i]; + } + } + return null; + }; + MapConroler.prototype.getMinAndMax = function (block) { + var width = Math.floor(block.width / 120); + var height = Math.floor(block.height / 120); + var minX = width; + var maxX = this.mapWidth - 2; + var minY = 1; + var maxY = this.mapHeight - 2 - height + 1; + if (block.name == "block10") { + minX = width - 1; + if (this.mapWidth > 3) + maxX = maxX - 1; + } + else if (block.name == "block11") { + minX = width - 2; + if (this.mapWidth > 3) + maxX = maxX - 2; + } + else if (block.name == "block14") { + minX = width - 1; + maxX = maxX - 1; + } + else if (block.name == "block16") { + minX = width - 1; + maxX = maxX - 1; + } + else if (block.name == "block18") { + minX = width - 1; + maxX = maxX - 1; + } + else if (block.name == "block21") { + minX = width - 1; + maxX = maxX - 1; + } + return { minX: minX, maxX: maxX, minY: minY, maxY: maxY }; + }; + //检测落点是否可以消除 + MapConroler.prototype.checkPass = function (node, blocks) { + var minAndMax = this.getMinAndMax(node); + var minX = minAndMax.minX; + var maxX = minAndMax.maxX; + var minY = minAndMax.minY; + var maxY = minAndMax.maxY; + var nodePos = cc.v2(node.getComponent("Block").posX, node.getComponent("Block").posY); + // 获取地图边界信息 + var allBlocks = []; + for (var i = 0; i < blocks.length; i++) { + allBlocks.push(cc.v2(nodePos.x + blocks[i].x, nodePos.y + blocks[i].y)); + } + // const date1 = new Date().getTime(); + // console.log("将小块放入数组的时间",date1); + var jg = -1; + var pz = 0; + // 获取所有墙壁节点 + // let wall = this.node; + var direction = this.checkDiraction(allBlocks, maxX, maxY); + // 判断方块是否在地图边缘 + if (nodePos.x <= minX || direction[0] == true) { + // const date2 = new Date().getTime(); + // console.log("碰到左边缘",date2); + pz += 1; + var leftWalls = []; + for (var i = 0; i < this.leftDoors.length; i++) { + var wallLeft = this.leftDoors[i].getChildByName("wall"); + var wallPos = cc.v2(wallLeft.getComponent("Wall").posX, wallLeft.getComponent("Wall").posY); + for (var i_1 = 0; i_1 < allBlocks.length; i_1++) { + if (allBlocks[i_1].y == wallPos.y && allBlocks[i_1].x > wallPos.x) { + // console.log("id:",wall.getChildByName("num").getComponent(cc.Label).string); + leftWalls.push(wallLeft); + } + } + } + // console.log("得到左边墙壁数组",date6); + if (leftWalls.length != 0) { + var result = this.detectingBlock("left", node.getComponent("Block").posX, node.getComponent("Block").posY, allBlocks); + if (result == true) + result = this.passWall(result, leftWalls, node); + // console.log("碰到左边缘结果:",jg); + if (result) { + this.blockNum -= 1; + this.special_Treatment(node); + jg = 2; + this.createParticle(node, jg); + return jg; + } + } + } + if (nodePos.x >= maxX || direction[1] == true) { + // const date3 = new Date().getTime(); + // console.log("碰到右边缘",date3); + pz += 1; + var rightWalls = []; + for (var i = 0; i < this.rightDoors.length; i++) { + var wallRight = this.rightDoors[i].getChildByName("wall"); + var wallPos = cc.v2(wallRight.getComponent("Wall").posX, wallRight.getComponent("Wall").posY); + for (var i_2 = 0; i_2 < allBlocks.length; i_2++) { + if (allBlocks[i_2].y == wallPos.y && allBlocks[i_2].x < wallPos.x) { + // console.log("id:",wall.getChildByName("num").getComponent(cc.Label).string); + rightWalls.push(wallRight); + } + } + } + if (rightWalls.length != 0) { + var result = this.detectingBlock("right", node.getComponent("Block").posX, node.getComponent("Block").posY, allBlocks); + if (result == true) + result = this.passWall(result, rightWalls, node); + // console.log("碰到右边缘结果:",jg); + if (result) { + this.blockNum -= 1; + this.special_Treatment(node); + jg = 3; + this.createParticle(node, jg); + return jg; + } + } + } + if (nodePos.y <= minY || direction[2] == true) { + pz += 1; + // const date4 = new Date().getTime(); + // console.log("碰到下边缘",date4); + var downWalls = []; + for (var i = 0; i < this.topDoors.length; i++) { + var wallBottom = this.topDoors[i].getChildByName("wall"); + var wallPos = cc.v2(wallBottom.getComponent("Wall").posX, wallBottom.getComponent("Wall").posY); + for (var i_3 = 0; i_3 < allBlocks.length; i_3++) { + var luocha = Math.abs(allBlocks[i_3].y - wallPos.y); + if (allBlocks[i_3].x == wallPos.x && allBlocks[i_3].y > wallPos.y && luocha <= node.getComponent("Block").shu) { + // console.log("id:",wall.getChildByName("num").getComponent(cc.Label).string); + downWalls.push(wallBottom); + } + } + } + if (downWalls.length != 0) { + var result = this.detectingBlock("down", node.getComponent("Block").posX, node.getComponent("Block").posY, allBlocks); + if (result == true) + result = this.passWall(result, downWalls, node); + // console.log("碰到下边缘结果:",jg); + if (result) { + this.blockNum -= 1; + this.special_Treatment(node); + jg = 1; + this.createParticle(node, jg); + return jg; + } + } + } + if (nodePos.y >= maxY || direction[3] == true) { + pz += 1; + // const date5 = new Date().getTime(); + // console.log("碰到上边缘",date5); + var upWalls = []; + for (var i = 0; i < this.bottomDoors.length; i++) { + var wallTop = this.bottomDoors[i].getChildByName("wall"); + var wallPos = cc.v2(wallTop.getComponent("Wall").posX, wallTop.getComponent("Wall").posY); + for (var i_4 = 0; i_4 < allBlocks.length; i_4++) { + var luocha = Math.abs(allBlocks[i_4].y - wallPos.y); + if (allBlocks[i_4].x == wallPos.x && allBlocks[i_4].y < wallPos.y && luocha <= node.getComponent("Block").shu) { + upWalls.push(wallTop); + } + } + } + if (upWalls.length != 0) { + var result = this.detectingBlock("up", node.getComponent("Block").posX, node.getComponent("Block").posY, allBlocks); + if (result == true) + result = this.passWall(result, upWalls, node); + // console.log("碰到上边缘结果:",result); + if (result) { + this.blockNum -= 1; + this.special_Treatment(node); + jg = 0; + this.createParticle(node, jg); + return jg; + } + } + } + if (pz == 0) + jg = -1; + // const date10 = new Date().getTime(); + // console.log("所有检测结束耗时",date10,jg); + return jg; + }; + MapConroler.prototype.changeState = function () { + if (this.openWall.length != 0) { + for (var i = 0; i < this.openWall.length; i++) { + this.openWall[i].getChildByName("wall").getComponent("Wall").changeLock(); + } + } + if (this.freezeWall.length != 0) { + for (var i = 0; i < this.freezeWall.length; i++) { + this.freezeWall[i].getChildByName("wall").getComponent("Wall").changeFreeze(); + } + } + }; + //检测是否可以通过门 + MapConroler.prototype.passWall = function (jg, wallArray, node) { + for (var i = 0; i < wallArray.length; i++) { + if (wallArray[i].getComponent("Wall").special == 2) { + console.log("尝试通过开关门:", wallArray[i].getComponent("Wall").open); + } + if (wallArray[i].getComponent("Wall").special == 2 && wallArray[i].getComponent("Wall").open == false) { + jg = false; + break; + } + //console.log(wallArray[i].getChildByName("wall").getComponent("Wall").color,node.getComponent("Block").color) + if (wallArray[i].getComponent("Wall").color != node.getComponent("Block").color) { + jg = false; + break; + } + if (node.getComponent("Block").type == 5) { + if (wallArray[i].getComponent("Wall").special != 1) { + jg = false; + break; + } + } + } + if (jg == true && node.getComponent("Block").type == 5) { + for (var j = 0; j < wallArray.length; j++) { + if (wallArray[j].getComponent("Wall").special == 1 && wallArray[j].getComponent("Wall").wall_Info.length != 0) { + wallArray[j].getComponent("Wall").playStarDoor(); + } + } + } + // const date8 = new Date().getTime(); + // console.log("检测颜色是否能够通过门",date8); + return jg; + }; + //检测方块和门中间有没有夹杂其他块 + MapConroler.prototype.detectingBlock = function (direction, posX, posY, blocks) { + var jg = true; + var id = ""; + if (blocks.length > 0) { + for (var i = 0; i < blocks.length; i++) { + var pos = blocks[i]; + var x = pos.x; + var y = pos.y; + id = this.mapBlocksWall[x][y].getComponent("MapBlock").block_Id; + jg = this.checkAllDirections(id, direction, x, y); + if (!jg) { + // console.log("方向检测没过"); + i = 1000000; + return jg; + } + } + } + // const date7 = new Date().getTime(); + // console.log("方向检测通过",date7,jg); + return jg; + }; + //检测物体各方向是否有别的物块,防止碰到墙壁了但是是凹凸形状,墙与块之间有阻挡物块 + MapConroler.prototype.checkAllDirections = function (id, direction, x, y) { + var jg = true; + if (direction == "left") { + if (this.mapBlocksWall[x - 1][y].getComponent("MapBlock").block_Id != "" && this.mapBlocksWall[x - 1][y].getComponent("MapBlock").block_Id != "Wall" + && this.mapBlocksWall[x - 1][y].getComponent("MapBlock").block_Id != id) { + // console.log("左侧有物体") + jg = false; + return jg; + } + if (this.mapBlocksWall[x - 1][y].opacity == 249) { + jg = false; + return jg; + } + if ((x - 2) >= 0) { + if (this.mapBlocksWall[x - 2][y].getComponent("MapBlock").block_Id != "" && this.mapBlocksWall[x - 2][y].getComponent("MapBlock").block_Id != "Wall" + && this.mapBlocksWall[x - 2][y].getComponent("MapBlock").block_Id != id) { + // console.log("左侧有物体") + jg = false; + return jg; + } + if (this.mapBlocksWall[x - 2][y].opacity == 249) { + jg = false; + return jg; + } + } + } + else if (direction == "right") { + if (this.mapBlocksWall[x + 1][y].getComponent("MapBlock").block_Id != "" && this.mapBlocksWall[x + 1][y].getComponent("MapBlock").block_Id != "Wall" + && this.mapBlocksWall[x + 1][y].getComponent("MapBlock").block_Id != id) { + // console.log("右侧有物体") + jg = false; + return jg; + } + if (this.mapBlocksWall[x + 1][y].opacity == 249) { + jg = false; + return jg; + } + if ((x + 2) <= this.mapBlocksWall.length - 1) { + if (this.mapBlocksWall[x + 2][y].getComponent("MapBlock").block_Id != "" && this.mapBlocksWall[x + 2][y].getComponent("MapBlock").block_Id != "Wall" + && this.mapBlocksWall[x + 2][y].getComponent("MapBlock").block_Id != id) { + // console.log("右侧有物体") + jg = false; + return jg; + } + if (this.mapBlocksWall[x + 2][y].opacity == 249) { + jg = false; + return jg; + } + } + } + if (direction == "up") { + if (this.mapBlocksWall[x][y + 1].getComponent("MapBlock").block_Id != "" && this.mapBlocksWall[x][y + 1].getComponent("MapBlock").block_Id != "Wall" + && this.mapBlocksWall[x][y + 1].getComponent("MapBlock").block_Id != id) { + // console.log("上侧有物体") + jg = false; + return jg; + } + if (this.mapBlocksWall[x][y + 1].opacity == 249) { + jg = false; + return jg; + } + if ((y + 2) <= this.mapBlocksWall[x].length - 1) { + if (this.mapBlocksWall[x][y + 2].getComponent("MapBlock").block_Id != "" && this.mapBlocksWall[x][y + 2].getComponent("MapBlock").block_Id != "Wall" + && this.mapBlocksWall[x][y + 2].getComponent("MapBlock").block_Id != id) { + // console.log("上侧有物体") + jg = false; + return jg; + } + if (this.mapBlocksWall[x][y + 2].opacity == 249) { + jg = false; + return jg; + } + } + } + if (direction == "down") { + if (this.mapBlocksWall[x][y - 1].getComponent("MapBlock").block_Id != "" && this.mapBlocksWall[x][y - 1].getComponent("MapBlock").block_Id != "Wall" + && this.mapBlocksWall[x][y - 1].getComponent("MapBlock").block_Id != id) { + // console.log("下侧有物体") + jg = false; + return jg; + } + if (this.mapBlocksWall[x][y - 1].opacity == 249) { + jg = false; + return jg; + } + if ((y - 2) >= 0) { + if (this.mapBlocksWall[x][y - 2].getComponent("MapBlock").block_Id != "" && this.mapBlocksWall[x][y - 2].getComponent("MapBlock").block_Id != "Wall" + && this.mapBlocksWall[x][y - 2].getComponent("MapBlock").block_Id != id) { + // console.log("下侧有物体") + jg = false; + return jg; + } + if (this.mapBlocksWall[x][y - 2].opacity == 249) { + jg = false; + return jg; + } + } + } + // console.log("检测物体各方向是否有别的物块",jg); + return jg; + }; + MapConroler.prototype.checkDiraction = function (allBlocks, maxX, maxY) { + var jg = [false, false, false, false]; + for (var i = 0; i < allBlocks.length; i++) { + if (allBlocks[i].x > 0 && jg[0] == false) { + if (this.mapBlocksWall[allBlocks[i].x - 1][allBlocks[i].y].opacity == 250) { + jg[0] = true; + } + } + if (jg[1] == false) { + if (this.mapBlocksWall[allBlocks[i].x + 1][allBlocks[i].y].opacity == 250) { + jg[1] = true; + } + } + if (allBlocks[i].y > 0 && jg[2] == false) { + if (this.mapBlocksWall[allBlocks[i].x][allBlocks[i].y - 1].opacity == 250) { + jg[2] = true; + } + } + if (jg[3] == false) { + if (this.mapBlocksWall[allBlocks[i].x][allBlocks[i].y + 1].opacity == 250) { + jg[3] = true; + } + } + } + return jg; + }; + MapConroler.prototype.checkLeft = function (allBlocks) { + var jg = false; + return jg; + }; + MapConroler.prototype.checkRight = function (allBlocks, max) { + var jg = false; + for (var i = 0; i < allBlocks.length; i++) { + } + return jg; + }; + MapConroler.prototype.checkDown = function (allBlocks) { + var jg = false; + for (var i = 0; i < allBlocks.length; i++) { + } + return jg; + }; + MapConroler.prototype.checkUp = function (allBlocks, max) { + var jg = false; + for (var i = 0; i < allBlocks.length; i++) { + } + return jg; + }; + //特殊处理,方块带道具或者需要消除冰块 + MapConroler.prototype.special_Treatment = function (node) { + var freezeBlock = this.node.children.filter(function (child) { + if (child.getComponent("Block")) { + if (child.getComponent("Block").type == 4) + return child; + } + }); + if (freezeBlock.length > 0) { + for (var i = 0; i < freezeBlock.length; i++) { + freezeBlock[i].getChildByName("freeze").getComponent("Freeze").reduce(1); + } + } + if (node.getComponent("Block").type == 2 || node.getComponent("Block").type == 4) { + var lockBlock = this.node.children.filter(function (child) { + if (child.getComponent("Block")) { + if (child.getComponent("Block").type == 3) + return child; + } + }); + if (lockBlock.length > 0) + for (var i = 0; i < lockBlock.length; i++) { + lockBlock[i].getChildByName("lock").getComponent("Lock").reduce(); + } + } + for (var i = 0; i < this.blocks.length; i++) { + if (this.blocks[i] == node) { + this.blocks.splice(i, 1); + } + } + }; + //判断游戏成功下一关 + MapConroler.prototype.nextLevel = function () { + var _this = this; + this.pause = false; + this.openIce(); + this.blockNum = this.blocks.length; + if (this.blockNum == 0 && !this.gameWin && !this.gameOver) { + // alert("游戏成功"); + this.gameWin = true; + this.stopTimeCutDown(); + // console.log("成功消除一个"); + cc.fx.GameTool.changeCoin(40); + cc.fx.GameTool.addLevel(this.count_Time, this.add_Time); + this.check_NewMode(); + setTimeout(function () { + _this.node.parent.parent.getChildByName("Win").active = true; + }, 660); + // console.log("游戏成功"); + } + else { + if (this.gameOver == true) { + this.failLevel(null); + } + } + }; + MapConroler.prototype.check_NewMode = function () { + for (var i = 0; i < cc.fx.GameConfig.NEW_LEVEL.length; i++) { + if ((cc.fx.GameConfig.GM_INFO.level + 1) == cc.fx.GameConfig.NEW_LEVEL[i].level) { + this.new_mode = 3; + } + } + }; + MapConroler.prototype.winLevel = function () { + cc.fx.AudioManager._instance.playEffect("anniu_Big", null); + if (cc.fx.GameConfig.GM_INFO.level > 156) { + cc.fx.GameConfig.GM_INFO.level = 156; + // MapConroler._instance = null; + if (this.new_mode == 3) { + this.node.parent.parent.getChildByName("Win").active = false; + this.openNewMode(2); + cc.fx.GameConfig.LEVEL_INFO_init(false, 0); + return; + } + // cc.fx.GameConfig.LEVEL_INFO_init(true); + cc.fx.AudioManager._instance.playEffect("zhuan1", null); + this.node.parent.parent.parent.getChildByName("zhuanchang").active = true; + this.node.parent.parent.parent.getChildByName("zhuanchang").getComponent(sp.Skeleton).setAnimation(1, "up", false); + // this.node.parent.parent.parent.getChildByName("zhuanchang").getComponent(sp.Skeleton).setCompleteListener((entry) => { + // if (entry.animation.name === "up") { + // // 动画播放结束后执行的逻辑 + // this.node.parent.parent.parent.getChildByName("zhuanchang").active = false; + // } + // }); + cc.director.preloadScene("HomeScene", function (err, asset) { + if (err) { + console.error('动态加载 Prefab 失败:', err); + return; + } + }); + setTimeout(function () { + cc.director.loadScene("HomeScene"); + }, 1200); + } + else { + // console.log("下一关"); + // MapConroler._instance = null; + if (this.new_mode == 3) { + this.node.parent.parent.getChildByName("Win").active = false; + this.openNewMode(2); + cc.fx.GameConfig.LEVEL_INFO_init(false, 0); + return; + } + cc.fx.AudioManager._instance.playEffect("zhuan1", null); + this.node.parent.parent.parent.getChildByName("zhuanchang").active = true; + this.node.parent.parent.parent.getChildByName("zhuanchang").getComponent(sp.Skeleton).setAnimation(1, "up", false); + // this.node.parent.parent.parent.getChildByName("zhuanchang").getComponent(sp.Skeleton).setCompleteListener((entry) => { + // if (entry.animation.name === "up") { + // // 动画播放结束后执行的逻辑 + // this.node.parent.parent.parent.getChildByName("zhuanchang").active = false; + // } + // }); + setTimeout(function () { + cc.fx.GameConfig.LEVEL_INFO_init(true, 0); + }, 1200); + // this.node.parent.parent.parent.destroy(); + } + }; + MapConroler.prototype.againLevel = function () { + cc.fx.AudioManager._instance.playEffect("anniu_Big", null); + if (cc.fx.GameConfig.GM_INFO.hp < 1) { + MiniGameSdk_1.MiniGameSdk.API.showToast("体力值不足"); + return; + } + if (!this.againCanTouch) + return; + this.againCanTouch = false; + // MapConroler._instance = null; + cc.fx.AudioManager._instance.playEffect("zhuan1", null); + this.node.parent.parent.parent.getChildByName("zhuanchang").active = true; + this.node.parent.parent.parent.getChildByName("zhuanchang").getComponent(sp.Skeleton).setAnimation(1, "up", false); + // this.node.parent.parent.parent.getChildByName("zhuanchang").getComponent(sp.Skeleton).setCompleteListener((entry) => { + // if (entry.animation.name === "up") { + // // 动画播放结束后执行的逻辑 + // this.node.parent.parent.parent.getChildByName("zhuanchang").active = false; + // } + // }); + setTimeout(function () { + cc.fx.GameConfig.LEVEL_INFO_init(true, 0); + }, 1200); + // this.node.parent.parent.parent.destroy(); + }; + MapConroler.prototype.reviewLevel = function () { + cc.fx.AudioManager._instance.playEffect("anniu_Big", null); + var coin = 900; + if (cc.fx.GameConfig.GM_INFO.review == 1) + coin = 1900; + else if (cc.fx.GameConfig.GM_INFO.review == 2) + coin = 2500; + // console.log("自身金币:",cc.fx.GameConfig.GM_INFO.coin,"消耗金币:",coin); + if (cc.fx.GameConfig.GM_INFO.coin < Math.abs(coin)) { + MiniGameSdk_1.MiniGameSdk.API.showToast("金币不足,无法加时间"); + return; + } + else { + this.runRewive(-coin); + } + }; + MapConroler.prototype.runRewive = function (data) { + console.log("复活回调函数内", data); + cc.fx.GameTool.changeCoin(data); + MiniGameSdk_1.MiniGameSdk.API.showToast("继续游戏"); + if (cc.fx.GameConfig.GM_INFO.review < 2) + cc.fx.GameConfig.GM_INFO.review += 1; + this.gameOver = false; + this.timeNumber = 21; + this.add_Time += 20; + this.pause = false; + this.node.parent.parent.getChildByName("Lose").active = false; + this.startTimeCutDown(); + }; + MapConroler.prototype.homeBtn = function () { + // alert("游戏失败"); + cc.fx.AudioManager._instance.playEffect("anniu_Big", null); + if (!this.homeCanTouch) + return; + this.homeCanTouch = false; + this.node.parent.parent.getChildByName("Lose").active = true; + this.node.parent.parent.getChildByName("Lose").getChildByName("Time").active = false; + this.node.parent.parent.getChildByName("Lose").getChildByName("Boom").active = false; + this.node.parent.parent.getChildByName("Lose").getChildByName("Lock").active = false; + this.node.parent.parent.getChildByName("Lose").getChildByName("Health").active = true; + var data = { + time: this.count_Time, + add_Time: this.add_Time, + result: "fail" + }; + cc.fx.GameTool.shushu_Track("finish_stage", data); + if (this.gameStart == true) { + cc.fx.GameTool.setUserHealth(-1, function (data) { + }); + } + // this.node.parent.parent.parent.destroy(); + }; + MapConroler.prototype.returnHome = function () { + cc.fx.AudioManager._instance.playEffect("anniu_Big", null); + if (MapConroler_1._instance = null) { + return; + } + // MiniGameSdk.API.showToast("体力值减少"); + // MapConroler._instance = null; + cc.fx.GameConfig.LEVEL_INFO_init(false, 0); + if (this.new_mode == 3) { + this.node.parent.parent.getChildByName("Win").active = false; + this.openNewMode(1); + return; + } + cc.fx.AudioManager._instance.playEffect("zhuan1", null); + this.node.parent.parent.parent.getChildByName("zhuanchang").active = true; + this.node.parent.parent.parent.getChildByName("zhuanchang").getComponent(sp.Skeleton).setAnimation(1, "up", false); + cc.director.preloadScene("HomeScene", function (err, asset) { + if (err) { + console.error('动态加载 Prefab 失败:', err); + return; + } + }); + setTimeout(function () { + cc.director.loadScene("HomeScene"); + }, 1200); + }; + //判断游戏失败 + MapConroler.prototype.failLevel = function (type) { + var _this = this; + this.stopTimeCutDown(); + if (this.gameOver == true || this.gameWin == true) { + return; + } + var time = 0; + this.gameOver = true; + if (type == "boom") { + time = 2000; + } + setTimeout(function () { + _this.node.parent.parent.getChildByName("Lose").active = true; + _this.node.parent.parent.getChildByName("Lose").getChildByName("Time").active = true; + _this.node.parent.parent.getChildByName("Lose").getChildByName("Boom").active = false; + var buyBtn = _this.node.parent.parent.getChildByName("Lose").getChildByName("Time").getChildByName("buyBtn"); + buyBtn.getChildByName("coin1").active = buyBtn.getChildByName("coin2").active = buyBtn.getChildByName("coin3").active = false; + if (cc.fx.GameConfig.GM_INFO.review == 0) + buyBtn.getChildByName("coin1").active = true; + else if (cc.fx.GameConfig.GM_INFO.review == 1) + buyBtn.getChildByName("coin2").active = true; + else if (cc.fx.GameConfig.GM_INFO.review == 2) + buyBtn.getChildByName("coin3").active = true; + if (type) { + if (type == "boom") { + _this.node.parent.parent.getChildByName("Lose").getChildByName("Time").active = false; + _this.node.parent.parent.getChildByName("Lose").getChildByName("Boom").active = true; + } + } + }, time); + // console.log("游戏失败"); + }; + //打开新模式弹窗 + MapConroler.prototype.openNewMode = function (type) { + var _this = this; + var index = 0; + var BLOCKS_PER_FRAME = 5; // 每帧销毁的方块数量 + var destroyBlocks = function () { + var endIndex = Math.min(index + BLOCKS_PER_FRAME, _this.blocks.length); + for (; index < endIndex; index++) { + if (_this.blocks[index]) { + _this.blocks[index].destroy(); + } + } + // 如果还有方块未销毁,下一帧继续 + if (index < _this.blocks.length) { + _this.scheduleOnce(destroyBlocks, 0); + } + else { + } + }; + // 开始分帧销毁方块 + destroyBlocks(); + this.node.parent.parent.getChildByName("NewMode").active = true; + this.node.parent.parent.getChildByName("NewMode").getComponent("NewMode").setMode(type); + }; + MapConroler.prototype.downDoor = function (color, type) { + for (var i = 0; i < this.wallArray.length; i++) { + if (this.wallArray[i].getChildByName("wall").getComponent("Wall").color == color) { + if (type) { + if (type == 5) { + if (this.wallArray[i].getChildByName("wall").getComponent("Wall").special == 1) { + this.wallArray[i].getChildByName("wall").getComponent("Wall").downDoor(); + } + } + else + this.wallArray[i].getChildByName("wall").getComponent("Wall").downDoor(); + } + else + this.wallArray[i].getChildByName("wall").getComponent("Wall").downDoor(); + } + } + }; + MapConroler.prototype.upDoor = function () { + for (var i = 0; i < this.wallArray.length; i++) { + if (this.wallArray[i].getChildByName("wall").opacity == 0) { + this.wallArray[i].getChildByName("wall").getComponent("Wall").upDoor(); + } + } + }; + //开始倒计时 + MapConroler.prototype.startTimeCutDown = function () { + this.scheduleCallback = function () { + if (this.pause) + return; + if (this.timeNumber <= 0) { + this.stopTimeCutDown(); + var timeTemp = cc.fx.GameTool.getTimeMargin(this.timeNumber); + NumberToImage_1.default.getTimeMargin(this.timeNumber, 50, "time_", this.timeLabel); + // this.timeLabel.string = timeTemp.toString(); + if (!this.pause) + this.failLevel("time"); + } + else { + this.timeNumber -= 1; + this.count_Time += 1; + var timeTemp = cc.fx.GameTool.getTimeMargin(this.timeNumber); + NumberToImage_1.default.getTimeMargin(this.timeNumber, 50, "time_", this.timeLabel); + // this.timeLabel.string = timeTemp.toString(); + } + }.bind(this); + this.schedule(this.scheduleCallback, 1); + }; + // 停止倒计时 + MapConroler.prototype.stopTimeCutDown = function () { + if (this.scheduleCallback) { + this.unschedule(this.scheduleCallback); + } + }; + //使用时间道具 + MapConroler.prototype.useTimeProp = function () { + if (this.node.parent.getChildByName("Ice").active == true || this.hammer == true + || this.magicMask.active == true || this.timeNumber <= 1) { + return; + } + var freezeBtn = this.node.parent.getChildByName("Bottom").getChildByName("timeBtn"); + if (freezeBtn.getComponent("btnControl")._touch) { + freezeBtn.getComponent("btnControl").setTouch(false); + if (cc.fx.GameConfig.GM_INFO.freezeAmount < 1) { + if (cc.fx.GameConfig.GM_INFO.coin < 1500) { + MiniGameSdk_1.MiniGameSdk.API.showToast("金币不足,无法购买道具"); + freezeBtn.getComponent("btnControl").setTouch(true); + return; + } + this.node.parent.parent.getChildByName("propWindow").active = true; + this.node.parent.parent.parent.getComponent("SceneManager").openPropBuy("freeze"); + } + else { + if (!this.node.parent.getChildByName("Ice").active && !this.pause) { + var timestamp = Date.now(); + this.freezeMask.active = true; + this.pause = true; + this.node.parent.getChildByName("Ice").active = true; + this.node.parent.getChildByName("Top").getChildByName("Ice").active = true; + cc.fx.GameConfig.GM_INFO.freezeAmount -= 1; + if (cc.fx.GameConfig.GM_INFO.freezeAmount < 0) + cc.fx.GameConfig.GM_INFO.freezeAmount = 0; + this.iceLabel.string = cc.fx.GameConfig.GM_INFO.freezeAmount.toString(); + var propInfo = cc.fx.StorageMessage.getStorage("prop"); + propInfo.freezeAmount = cc.fx.GameConfig.GM_INFO.freezeAmount; + propInfo.timestamp = timestamp; + cc.fx.StorageMessage.setStorage("prop", propInfo); + cc.fx.GameTool.setUserProp(2001, cc.fx.GameConfig.GM_INFO.freezeAmount, function (data) { + }); + var data = { + id: "2001", + num: -1 + }; + cc.fx.GameTool.shushu_Track("resource_cost", data); + } + else + MiniGameSdk_1.MiniGameSdk.API.showToast("道具使用中,请稍后再试"); + } + } + }; + //解开时间冻结 + MapConroler.prototype.openIce = function () { + if (this.node.parent.getChildByName("Ice").active) { + this.freezeMask.active = false; + var freezeBtn = this.node.parent.getChildByName("Bottom").getChildByName("timeBtn"); + freezeBtn.getComponent("btnControl").setTouch(true); + this.node.parent.getChildByName("Ice").active = false; + this.node.parent.getChildByName("Top").getChildByName("Ice").active = false; + this.pause = false; + // this.startTimeCutDown(); + } + }; + MapConroler.prototype.handleBuySuccess = function (data) { + var _this = this; + this.pause = false; + var timestamp = Date.now(); + // console.log("回调函数内:",this.pause); + var freezeBtn = this.node.parent.getChildByName("Bottom").getChildByName("timeBtn"); + var hammerBtn = this.node.parent.getChildByName("Bottom").getChildByName("destroyBtn"); + var magicBtn = this.node.parent.getChildByName("Bottom").getChildByName("magicBtn"); + if (data == "freezeAmount") + freezeBtn.getComponent("btnControl").setTouch(true); + else if (data == "hammerAmount") + hammerBtn.getComponent("btnControl").setTouch(true); + else if (data == "magicAmount") + magicBtn.getComponent("btnControl").setTouch(true); + if (data == "freezeAmount") { + cc.fx.GameConfig.GM_INFO.freezeAmount += 3; + var propInfo = cc.fx.StorageMessage.getStorage("prop"); + propInfo.freezeAmount = cc.fx.GameConfig.GM_INFO.freezeAmount; + propInfo.timestamp = timestamp; + cc.fx.StorageMessage.setStorage("prop", propInfo); + this.node.parent.parent.parent.getComponent("SceneManager").closePropBuy(); + setTimeout(function () { + _this.iceLabel.string = cc.fx.GameConfig.GM_INFO.freezeAmount.toString(); + MiniGameSdk_1.MiniGameSdk.API.showToast("购买冻结时间道具成功"); + }, 200); + } + else if (data == "magicAmount") { + cc.fx.GameConfig.GM_INFO.magicAmount += 3; + var propInfo = cc.fx.StorageMessage.getStorage("prop"); + propInfo.magicAmount = cc.fx.GameConfig.GM_INFO.magicAmount; + propInfo.timestamp = timestamp; + cc.fx.StorageMessage.setStorage("prop", propInfo); + this.node.parent.parent.parent.getComponent("SceneManager").closePropBuy(); + setTimeout(function () { + MiniGameSdk_1.MiniGameSdk.API.showToast("购买锤子道具成功"); + _this.magicLabel.string = cc.fx.GameConfig.GM_INFO.magicAmount.toString(); + }, 200); + } + else if (data == "hammerAmount") { + cc.fx.GameConfig.GM_INFO.hammerAmount += 3; + var propInfo = cc.fx.StorageMessage.getStorage("prop"); + propInfo.hammerAmount = cc.fx.GameConfig.GM_INFO.hammerAmount; + propInfo.timestamp = timestamp; + cc.fx.StorageMessage.setStorage("prop", propInfo); + this.node.parent.parent.parent.getComponent("SceneManager").closePropBuy(); + setTimeout(function () { + _this.hammerLabel.string = cc.fx.GameConfig.GM_INFO.hammerAmount.toString(); + MiniGameSdk_1.MiniGameSdk.API.showToast("购买魔法棒道具成功"); + }, 200); + } + }; + //使用锤子道具 + MapConroler.prototype.useHammer = function () { + if (this.node.parent.getChildByName("Ice").active == true || this.hammer == true + || this.magicMask.active == true || this.timeNumber <= 1) { + return; + } + var hammerBtn = this.node.parent.getChildByName("Bottom").getChildByName("destroyBtn"); + if (hammerBtn.getComponent("btnControl")._touch) { + hammerBtn.getComponent("btnControl").setTouch(false); + if (cc.fx.GameConfig.GM_INFO.hammerAmount < 1) { + if (cc.fx.GameConfig.GM_INFO.coin < 1500) { + MiniGameSdk_1.MiniGameSdk.API.showToast("金币不足,无法购买道具"); + hammerBtn.getComponent("btnControl").setTouch(true); + return; + } + this.node.parent.parent.getChildByName("propWindow").active = true; + this.node.parent.parent.parent.getComponent("SceneManager").openPropBuy("hammer"); + } + else { + if (!this.hammer) { + var timestamp = Date.now(); + this.hammerMask.active = true; + this.hammer = true; + cc.fx.GameConfig.GM_INFO.hammerAmount -= 1; + if (cc.fx.GameConfig.GM_INFO.hammerAmount < 0) + cc.fx.GameConfig.GM_INFO.hammerAmount = 0; + this.hammerLabel.string = cc.fx.GameConfig.GM_INFO.hammerAmount.toString(); + var propInfo = cc.fx.StorageMessage.getStorage("prop"); + console.log("锤子道具信息:", propInfo); + propInfo.hammerAmount = cc.fx.GameConfig.GM_INFO.hammerAmount; + propInfo.timestamp = timestamp; + cc.fx.StorageMessage.setStorage("prop", propInfo); + cc.fx.GameTool.setUserProp(2002, cc.fx.GameConfig.GM_INFO.hammerAmount, function (data) { + }); + var data = { + id: "2002", + num: -1 + }; + cc.fx.GameTool.shushu_Track("resource_cost", data); + } + else + MiniGameSdk_1.MiniGameSdk.API.showToast("道具使用中,请稍后再试"); + } + } + }; + MapConroler.prototype.buyMagic = function () { + if (cc.fx.GameConfig.GM_INFO.coin < 1500) { + MiniGameSdk_1.MiniGameSdk.API.showToast("金币不足,无法购买道具"); + return; + } + cc.fx.GameTool.buyProp(2003, this.handleBuySuccess.bind(this, "magicAmount")); + }; + MapConroler.prototype.buyHammer = function () { + if (cc.fx.GameConfig.GM_INFO.coin < 1500) { + MiniGameSdk_1.MiniGameSdk.API.showToast("金币不足,无法购买道具"); + return; + } + cc.fx.GameTool.buyProp(2002, this.handleBuySuccess.bind(this, "hammerAmount")); + }; + MapConroler.prototype.buyFreeze = function () { + if (cc.fx.GameConfig.GM_INFO.coin < 1500) { + MiniGameSdk_1.MiniGameSdk.API.showToast("金币不足,无法购买道具"); + return; + } + cc.fx.GameTool.buyProp(2001, this.handleBuySuccess.bind(this, "freezeAmount")); + }; + //使用魔法棒随机消除两个方块 + MapConroler.prototype.useMagic = function () { + var _this = this; + if (this.node.parent.getChildByName("Ice").active == true || this.hammer == true + || this.magicMask.active == true || this.timeNumber <= 1) { + return; + } + var magicBtn = this.node.parent.getChildByName("Bottom").getChildByName("magicBtn"); + if (magicBtn.getComponent("btnControl")._touch) { + magicBtn.getComponent("btnControl").setTouch(false); + if (cc.fx.GameConfig.GM_INFO.magicAmount < 1) { + if (cc.fx.GameConfig.GM_INFO.coin < 1500) { + MiniGameSdk_1.MiniGameSdk.API.showToast("金币不足,无法购买道具"); + magicBtn.getComponent("btnControl").setTouch(true); + return; + } + this.node.parent.parent.getChildByName("propWindow").active = true; + this.node.parent.parent.parent.getComponent("SceneManager").openPropBuy("magic"); + // MiniGameSdk.API.showToast("魔法棒数量不足,自动购买魔法棒"); + } + else { + var timestamp = Date.now(); + this.magicMask.active = true; + setTimeout(function () { + _this.magicMask.active = false; + magicBtn.getComponent("btnControl").setTouch(true); + }, 1000); + cc.fx.GameConfig.GM_INFO.magicAmount -= 1; + if (cc.fx.GameConfig.GM_INFO.magicAmount < 0) + cc.fx.GameConfig.GM_INFO.magicAmount = 0; + this.magicLabel.string = cc.fx.GameConfig.GM_INFO.magicAmount.toString(); + var propInfo = cc.fx.StorageMessage.getStorage("prop"); + propInfo.magicAmount = cc.fx.GameConfig.GM_INFO.magicAmount; + propInfo.timestamp = timestamp; + cc.fx.StorageMessage.setStorage("prop", propInfo); + cc.fx.GameTool.setUserProp(2003, cc.fx.GameConfig.GM_INFO.magicAmount, function (data) { + }); + var data = { + id: "2003", + num: -1 + }; + cc.fx.GameTool.shushu_Track("resource_cost", data); + var nomalArray_1 = []; + // this.magicBtn.node.active = false; + for (var i = 0; i < this.blocks.length; i++) { + // console.log("方块类型",this.blocks[i].getComponent("Block").type); + if (this.blocks[i].getComponent("Block").type == 3) { + this.loackArray.push(this.blocks[i]); + } + else if (this.blocks[i].getComponent("Block").type == 4) { + this.freezeArray.push(this.blocks[i]); + } + else if (this.blocks[i].getComponent("Block").type == 10) { + if (this.blocks[i].getComponent("Block").block_Info.node) { + nomalArray_1.push(this.blocks[i].getComponent("Block").block_Info.node); + } + else + nomalArray_1.push(this.blocks[i]); + } + else { + nomalArray_1.push(this.blocks[i]); + } + } + if (nomalArray_1.length > 1) { + nomalArray_1 = cc.fx.GameTool.shuffleArray(nomalArray_1); + nomalArray_1[0].getComponent("Block").eliminate(); + var time = 0; + if (nomalArray_1[0].getComponent("Block").type == 1 || nomalArray_1[0].getComponent("Block").type == 9) { + time = 200; + } + if (time > 0) { + setTimeout(function () { + nomalArray_1[1].getComponent("Block").eliminate(); + }, time); + return; + } + else { + nomalArray_1[1].getComponent("Block").eliminate(); + return; + } + } + else if (nomalArray_1.length == 1) { + nomalArray_1[0].getComponent("Block").eliminate(); + var time = 0; + if (nomalArray_1[0].getComponent("Block").type == 1 || nomalArray_1[0].getComponent("Block").type == 9) { + time = 200; + } + setTimeout(function () { + if (_this.freezeArray.length == 0 && _this.loackArray.length == 0) { + // console.log("只剩下一个块道具使用完毕"); + } + else { + if (_this.loackArray.length != 0) { + // console.log("消除一个普通块后,消除一个带锁块"); + _this.loackArray[0].getComponent("Block").eliminate(); + return; + } + else if (_this.freezeArray.length != 0) { + // console.log("消除一个普通块后,消除一个冻结块"); + _this.freezeArray[0].getComponent("Block").eliminate(); + return; + } + } + }, 200 + time); + } + else { + var count_1 = 2; + if (this.loackArray.length != 0) { + for (var i = 0; i < this.loackArray.length; i++) { + // console.log("没有普通快,魔法消除一个带锁块"); + this.loackArray[i].getComponent("Block").eliminate(); + count_1 -= 1; + if (count_1 == 0) { + break; + } + } + } + setTimeout(function () { + if (count_1 != 0) { + for (var i = 0; i < _this.freezeArray.length; i++) { + // console.log("没有普通快,魔法消除一个冻结块"); + // this.freezeArray[i].getComponent("Block").eliminate(); + count_1 -= 1; + if (count_1 == 0) { + break; + } + } + } + }, 100); + } + } + } + }; + //按下暂停按钮 + MapConroler.prototype.usePause = function () { + if (this.pause) { + this.pause = false; + } + else { + this.pause = true; + } + }; + //根据关卡设置地图大小 + MapConroler.prototype.setMapInfo = function () { + var width = 0; + if (this.mapWidth < 10) { + width = 0.2; + } + else if (this.mapWidth < 17) { + width = 0.15 - (this.mapWidth - 11) * 0.01; + } + this.node.scale = 1.6 + (6 - this.mapWidth) * width; + if (this.mapWidth == 8 && this.mapHeight > 13) { + this.node.scale = 1; + } + // this.node.scale = 1; + cc.fx.GameConfig.GM_INFO.scale = this.node.scale; + // this.node.scale = 0.5; + // console.log(this.node.scale); + // this.node.scale = 1; + }; + //创建门的粒子特效 + MapConroler.prototype.createParticle = function (block, jg) { + var particle = cc.instantiate(MapConroler_1._instance.Block_Prop[9]); + particle.parent = this.node; + particle.zIndex = 1000; + var width = Math.floor(block.width / 120); + var height = Math.floor(block.height / 120); + var name = ""; + if (jg == 0 || jg == 1) { + var y = block.y + block.height; + var x = block.x - block.width / 2; + name = "top_" + width + "_" + height; + if (jg == 1) { + name = "bot_" + width + "_" + height; + y = block.y; + } + if (block.anchorX == 0.5) { + x = block.x; + } + else if (block.anchorX == 0.33) { + x = block.x + block.width * (0.5 - 0.33); + } + else if (block.anchorX == 0.66) { + x = block.x + block.width * (0.5 - 0.66); + } + particle.setPosition(x, y); + } + else if (jg == 2 || jg == 3) { + name = "left_" + height + "_" + width; + var x = block.x - block.width; + var y = block.y + block.height / 2; + if (block.anchorX == 0.5) { + x = block.x - block.width / 2; + } + else if (block.anchorX == 0.33) { + x = block.x - block.width * 0.33; + } + else if (block.anchorX == 0.66) { + x = block.x + block.width * 0.66; + } + if (jg == 3) { + name = "right_" + height + "_" + width; + x = block.x; + if (block.anchorX == 0.5) { + x = block.x + block.width / 2; + } + else if (block.anchorX == 0.33) { + x = block.x + block.width * 0.66; + } + else if (block.anchorX == 0.66) { + x = block.x + block.width * 0.33; + } + } + particle.setPosition(x, y); + } + var particleNode = particle.getChildByName(name); + var color = block.getComponent("Block").color - 1; + particleNode.getComponent(cc.ParticleSystem).spriteFrame = particle.getComponent("Reduce").Block_Color[color]; + particleNode.active = true; + setTimeout(function () { + cc.tween(particle) + .to(2, { opacity: 0 }) + .call(function () { + particle.destroy(); + }) + .start(); + }, 1200); + }; + MapConroler.prototype.removeOneBlock = function () { + // 移除所有方块 + for (var i = 0; i < this.blocks.length; i++) { + if (this.blocks[i].opacity == 0) { + this.blocks[i].destroy(); + this.blocks.splice(i, 1); + } + } + }; + MapConroler.prototype.update = function (dt) { + }; + var MapConroler_1; + __decorate([ + property({ type: [cc.Prefab], tooltip: "方块数组" }) + ], MapConroler.prototype, "Block_Array", void 0); + __decorate([ + property({ type: [cc.Prefab], tooltip: "方块道具数组" }) + ], MapConroler.prototype, "Block_Prop", void 0); + __decorate([ + property(cc.Prefab) + ], MapConroler.prototype, "MapBlockPrefab", void 0); + __decorate([ + property({ type: [cc.SpriteAtlas], tooltip: "方块颜色" }) + ], MapConroler.prototype, "Block_Color", void 0); + __decorate([ + property({ type: [cc.Prefab], tooltip: "墙壁数组" }) + ], MapConroler.prototype, "Wall_Prefab", void 0); + __decorate([ + property(cc.Prefab) + ], MapConroler.prototype, "wallTurnPrefab", void 0); + __decorate([ + property(cc.Button) + ], MapConroler.prototype, "timeBtn", void 0); + __decorate([ + property(cc.Button) + ], MapConroler.prototype, "destroyBtn", void 0); + __decorate([ + property(cc.Button) + ], MapConroler.prototype, "magicBtn", void 0); + __decorate([ + property(cc.Node) + ], MapConroler.prototype, "mask", void 0); + __decorate([ + property(cc.Label) + ], MapConroler.prototype, "iceLabel", void 0); + __decorate([ + property(cc.Label) + ], MapConroler.prototype, "hammerLabel", void 0); + __decorate([ + property(cc.Label) + ], MapConroler.prototype, "magicLabel", void 0); + __decorate([ + property(cc.Node) + ], MapConroler.prototype, "magicMask", void 0); + __decorate([ + property(cc.Node) + ], MapConroler.prototype, "hammerMask", void 0); + __decorate([ + property(cc.Node) + ], MapConroler.prototype, "freezeMask", void 0); + __decorate([ + property(cc.Node) + ], MapConroler.prototype, "coinPop", void 0); + MapConroler = MapConroler_1 = __decorate([ + ccclass + ], MapConroler); + return MapConroler; +}(cc.Component)); +exports.default = MapConroler; + +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,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QUNuQixJQUFJLENBQUMsTUFBTSxHQUFHLEtBQUssQ0FBQztRQUNwQixJQUFJLENBQUMsT0FBTyxHQUFHLENBQUMsQ0FBQztRQUNqQixJQUFJLENBQUMsVUFBVSxFQUFFLENBQUM7UUFDbEIsSUFBSSxDQUFDLE1BQU0sR0FBRyxFQUFFLENBQUM7UUFDakIsSUFBSSxDQUFDLGFBQWEsR0FBRyxFQUFFLENBQUM7UUFDeEIsSUFBSSxDQUFDLE9BQU8sR0FBRyxFQUFFLENBQUM7UUFDbEIsSUFBSSxDQUFDLFFBQVEsR0FBRyxFQUFFLENBQUM7UUFDbkIsSUFBSSxDQUFDLFFBQVEsR0FBRyxFQUFFLENBQUM7UUFDbkIsSUFBSSxDQUFDLFNBQVMsR0FBRyxFQUFFLENBQUM7UUFDcEIsSUFBSSxDQUFDLFVBQVUsR0FBRyxFQUFFLENBQUM7UUFDckIsSUFBSSxDQUFDLGFBQWEsR0FBRyxFQUFFLENBQUM7UUFDeEIsSUFBSSxDQUFDLGFBQWEsR0FBRyxFQUFFLENBQUM7UUFDeEIsSUFBSSxDQUFDLFdBQVcsR0FBRyxFQUFFLENBQUM7UUFDdEIsSUFBSSxDQUFDLFVBQVUsR0FBRyxFQUFFLENBQUM7UUFDckIsSUFBSSxDQUFDLFVBQVUsR0FBRyxDQUFDLENBQUM7UUFDcEIsSUFBSSxDQUFDLFFBQVEsR0FBRyxDQUFDLENBQUM7UUFHbEIsSUFBSSxNQUFNLEdBQUcsSUFBSSxDQUFDLFFBQVEsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFFBQVEsR0FBRyxDQUFDLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsUUFBUSxHQUFHLENBQUMsQ0FBQyxHQUFHLEVBQUUsQ0FBQztRQUM1RixJQUFJLE1BQU0sR0FBRyxJQUFJLENBQUMsU0FBUyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxHQUFHLENBQUMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FB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QUNVO0lBRTdCO1FBREMsUUFBUSxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUM7bURBQ1M7SUFHNUI7UUFEQyxRQUFRLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQztrREFDUTtJQUcxQjtRQURDLFFBQVEsQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDO21EQUNTO0lBRzNCO1FBREMsUUFBUSxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUM7bURBQ1M7SUFJM0I7UUFEQyxRQUFRLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQztnREFDTTtJQXJEUCxXQUFXO1FBRC9CLE9BQU87T0FDYSxXQUFXLENBcStEL0I7SUFBRCxrQkFBQztDQXIrREQsQUFxK0RDLENBcitEd0MsRUFBRSxDQUFDLFNBQVMsR0FxK0RwRDtrQkFyK0RvQixXQUFXIiwiZmlsZSI6IiIsInNvdXJjZVJvb3QiOiIvIiwic291cmNlc0NvbnRlbnQiOlsiLy8gTGVhcm4gVHlwZVNjcmlwdDpcclxuLy8gIC0gaHR0cHM6Ly9kb2NzLmNvY29zLmNvbS9jcmVhdG9yL21hbnVhbC9lbi9zY3JpcHRpbmcvdHlwZXNjcmlwdC5odG1sXHJcbi8vIExlYXJuIEF0dHJpYnV0ZTpcclxuLy8gIC0gaHR0cHM6Ly9kb2NzLmNvY29zLmNvbS9jcmVhdG9yL21hbnVhbC9lbi9zY3JpcHRpbmcvcmVmZXJlbmNlL2F0dHJpYnV0ZXMuaHRtbFxyXG4vLyBMZWFybiBsaWZlLWN5Y2xlIGNhbGxiYWNrczpcclxuLy8gIC0gaHR0cHM6Ly9kb2NzLmNvY29zLmNvbS9jcmVhdG9yL21hbnVhbC9lbi9zY3JpcHRpbmcvbGlmZS1jeWNsZS1jYWxsYmFja3MuaHRtbFxyXG5cclxuaW1wb3J0IEdhbWVNYW5hZ2VyIGZyb20gXCIuL0dhbWVNYW5hZ2VyXCI7XHJcbmltcG9ydCB7IExRQ29sbGlkZSB9IGZyb20gXCIuL2xxX2NvbGxpZGVfc3lzdGVtL2xxX2NvbGxpZGVcIjtcclxuaW1wb3J0IE51bWJlclRvSW1hZ2UgZnJvbSBcIi4vTnVtYmVyVG9JbWFnZVwiO1xyXG5pbXBvcnQgeyBNaW5pR2FtZVNkayB9IGZyb20gXCIuL1Nkay9NaW5pR2FtZVNka1wiO1xyXG5cclxuY29uc3QgeyBjY2NsYXNzLCBwcm9wZXJ0eSB9ID0gY2MuX2RlY29yYXRvcjtcclxuXHJcblxyXG5cclxuQGNjY2xhc3NcclxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgTWFwQ29ucm9sZXIgZXh0ZW5kcyBjYy5Db21wb25lbnQge1xyXG4gICAgc3RhdGljIF9pbnN0YW5jZTogYW55O1xyXG5cclxuXHJcbiAgICBAcHJvcGVydHkoeyB0eXBlOiBbY2MuUHJlZmFiXSwgdG9vbHRpcDogXCLmlrnlnZfmlbDnu4RcIiB9KVxyXG4gICAgQmxvY2tfQXJyYXk6IEFycmF5PGNjLlByZWZhYj4gPSBbXTtcclxuXHJcbiAgICBAcHJvcGVydHkoeyB0eXBlOiBbY2MuUHJlZmFiXSwgdG9vbHRpcDogXCLmlrnlnZfpgZPlhbfmlbDnu4RcIiB9KVxyXG4gICAgQmxvY2tfUHJvcDogQXJyYXk8Y2MuUHJlZmFiPiA9IFtdO1xyXG5cclxuICAgIEBwcm9wZXJ0eShjYy5QcmVmYWIpXHJcbiAgICBNYXBCbG9ja1ByZWZhYjogY2MuUHJlZmFiID0gbnVsbDtcclxuXHJcbiAgICBAcHJvcGVydHkoeyB0eXBlOiBbY2MuU3ByaXRlQXRsYXNdLCB0b29sdGlwOiBcIuaWueWdl+minOiJslwiIH0pXHJcbiAgICBCbG9ja19Db2xvcjogQXJyYXk8Y2MuU3ByaXRlQXRsYXM+ID0gW107XHJcblxyXG5cclxuICAgIEBwcm9wZXJ0eSh7IHR5cGU6IFtjYy5QcmVmYWJdLCB0b29sdGlwOiBcIuWimeWjgeaVsOe7hFwiIH0pXHJcbiAgICBXYWxsX1ByZWZhYjogQXJyYXk8Y2MuUHJlZmFiPiA9IFtdO1xyXG5cclxuXHJcblxyXG4gICAgQHByb3BlcnR5KGNjLlByZWZhYilcclxuICAgIHdhbGxUdXJuUHJlZmFiOiBjYy5QcmVmYWIgPSBudWxsO1xyXG5cclxuICAgIEBwcm9wZXJ0eShjYy5CdXR0b24pXHJcbiAgICB0aW1lQnRuOiBjYy5CdXR0b24gPSBudWxsO1xyXG4gICAgQHByb3BlcnR5KGNjLkJ1dHRvbilcclxuICAgIGRlc3Ryb3lCdG46IGNjLkJ1dHRvbiA9IG51bGw7XHJcbiAgICBAcHJvcGVydHkoY2MuQnV0dG9uKVxyXG4gICAgbWFnaWNCdG46IGNjLkJ1dHRvbiA9IG51bGw7XHJcblxyXG4gICAgQHByb3BlcnR5KGNjLk5vZGUpXHJcbiAgICBtYXNrOiBjYy5Ob2RlID0gbnVsbDtcclxuXHJcbiAgICBAcHJvcGVydHkoY2MuTGFiZWwpXHJcbiAgICBpY2VMYWJlbDogY2MuTGFiZWwgPSBudWxsO1xyXG4gICAgQHByb3BlcnR5KGNjLkxhYmVsKVxyXG4gICAgaGFtbWVyTGFiZWw6IGNjLkxhYmVsID0gbnVsbDtcclxuICAgIEBwcm9wZXJ0eShjYy5MYWJlbClcclxuICAgIG1hZ2ljTGFiZWw6IGNjLkxhYmVsID0gbnVsbDtcclxuXHJcbiAgICBAcHJvcGVydHkoY2MuTm9kZSlcclxuICAgIG1hZ2ljTWFzazogY2MuTm9kZSA9IG51bGw7XHJcblxyXG4gICAgQHByb3BlcnR5KGNjLk5vZGUpXHJcbiAgICBoYW1tZXJNYXNrOiBjYy5Ob2RlID0gbnVsbDtcclxuXHJcbiAgICBAcHJvcGVydHkoY2MuTm9kZSlcclxuICAgIGZyZWV6ZU1hc2s6IGNjLk5vZGUgPSBudWxsO1xyXG5cclxuXHJcbiAgICBAcHJvcGVydHkoY2MuTm9kZSlcclxuICAgIGNvaW5Qb3A6IGNjLk5vZGUgPSBudWxsO1xyXG5cclxuICAgIHRpbWVMYWJlbDogY2MuTm9kZSA9IG51bGw7XHJcbiAgICBsZXZlbExhYmVsOiBjYy5Ob2RlID0gbnVsbDtcclxuXHJcbiAgICBuZXdfbW9kZTogbnVtYmVyID0gMDtcclxuICAgIG1hcFdpZHRoOiBudW1iZXIgPSAwO1xyXG4gICAgbWFwSGVpZ2h0OiBudW1iZXIgPSAwO1xyXG4gICAgd2FsbE51bTogbnVtYmVyID0gMDtcclxuICAgIGJsb2NrTnVtOiBudW1iZXIgPSAwO1xyXG4gICAgbWFwQmxvY2tzV2FsbDogYW55OyAgICAgIC8v5Zyw5Zu+55qE5omA5pyJ5bqV5Z2XXHJcbiAgICBtYXBJbmZvOiBhbnk7ICAgICAgIC8v5Zyw5Zu+6Zmk5LqG5bqV5Z2X55qE5YW25LuW5L+h5oGvXHJcbiAgICBibG9ja3M6IGFueTsgICAgICAgIC8v5pa55Z2X5pWw57uEXHJcbiAgICB3YWxsSW5mbzogYW55OyAgICAgIC8v5aKZ5aOB5pWw57uEXHJcbiAgICB3YWxsQXJyYXk6IGFueTsgICAgICAvL1xyXG4gICAgb3BlbldhbGw6IGFueTsgICAgICAvL+W8gOWFs+WimeaVsOe7hFxyXG4gICAgZnJlZXplV2FsbDogYW55OyAgICAvL+WGu+e7k+WimeaVsOe7hFxyXG4gICAgcmlzZUZhbGxCbGNvazogYW55OyAgLy/ljYfpmY3lnLDlnZfmlbDnu4RcclxuICAgIHNjaGVkdWxlQ2FsbGJhY2s6IGFueTsvL+WAkuiuoeaXtueUqFxyXG4gICAgaG9tZUNhblRvdWNoOiBib29sZWFuID0gdHJ1ZTsvL+aMiemSruWPr+eUqOeKtuaAgVxyXG4gICAgYWdhaW5DYW5Ub3VjaDogYm9vbGVhbiA9IHRydWU7Ly/ph43njqnmjInpkq7lj6/ku6XnlKjnirbmgIFcclxuICAgIGdhbWVPdmVyOiBib29sZWFuID0gZmFsc2U7Ly/muLjmiI/nu5PmnZ/nirbmgIFcclxuICAgIGdhbWVXaW46IGJvb2xlYW4gPSBmYWxzZTsvL+a4uOaIj+iDnOWIqeeKtuaAgVxyXG4gICAgZ2FtZVN0YXJ0OiBib29sZWFuID0gZmFsc2U7Ly/muLjmiI/lvIDlp4vnirbmgIFcclxuICAgIHRpbWVOdW1iZXI6IG51bWJlciA9IDA7IC8v5ri45oiP5pe26Ze0IOeUqOS6juWAkuiuoeaXtlxyXG4gICAgY291bnRfVGltZTogbnVtYmVyID0gMDsgLy/nlKjkuo7nu5/orqHmgLvmuLjmiI/ml7bplb9cclxuICAgIGFkZF9UaW1lOiBudW1iZXIgPSAwOyAgIC8v5aSN5rS75pe26Ze0XHJcbiAgICBtYXBCbG9ja0FycmF5OiBhbnk7ICAvL+WcsOWbvueahOaJgOacieagvOWtkOeKtuaAgeWtmOWCqFxyXG4gICAgcGF1c2U6IGJvb2xlYW4gPSBmYWxzZTsvL+aaguWBnOeKtuaAgVxyXG4gICAgaGFtbWVyOiBib29sZWFuID0gZmFsc2U7Ly/plKTlrZDnirbmgIFcclxuICAgIGZyZWV6ZUFycmF5OiBhbnk7IC8v5Ya757uTXHJcbiAgICBsb2Fja0FycmF5OiBhbnk7IC8v5LiK6ZSBXHJcbiAgICBwYXJ0aWNsZUVmZmVjdHM6IGNjLlBhcnRpY2xlQXNzZXRbXTtcclxuICAgIC8vIGxlZnREb29yczogW107IC8v5bem6ZeoXHJcbiAgICByaWdodERvb3JzOiBhbnk7IC8v5Y+z6ZeoXHJcbiAgICB0b3BEb29yczogYW55OyAvL+S4iumXqFxyXG4gICAgYm90dG9tRG9vcnM6IGFueTsgLy/kuIvpl6hcclxuICAgIGxlZnREb29yczogYW55O1xyXG5cclxuXHJcbiAgICAvLyBtYXBJbmZvOiBudW1iZXJbXVtdID0gW107XHJcblxyXG4gICAgb25Mb2FkKCkge1xyXG5cclxuICAgICAgICBjYy5meC5HYW1lQ29uZmlnLkdNX0lORk8ucmV2aWV3ID0gMDtcclxuICAgICAgICBjYy5meC5HYW1lQ29uZmlnLkdNX0lORk8uZ2FtZVN0YXRlID0gdHJ1ZTtcclxuICAgICAgICB0aGlzLm1hc2sub3BhY2l0eSA9IDA7XHJcbiAgICAgICAgdGhpcy5ub2RlLmdldENoaWxkQnlOYW1lKFwiQWRoZXNpdmVcIikuekluZGV4ID0gNTAwO1xyXG4gICAgICAgIGNjLmdhbWUuc2V0RnJhbWVSYXRlKDYzKTtcclxuICAgICAgICBjYy5meC5BdWRpb01hbmFnZXIuX2luc3RhbmNlLnBsYXlFZmZlY3QoXCJ6aHVhbjJcIiwgbnVsbCk7XHJcbiAgICAgICAgdGhpcy5ub2RlLnBhcmVudC5wYXJlbnQucGFyZW50LmdldENoaWxkQnlOYW1lKFwiemh1YW5jaGFuZ1wiKS5hY3RpdmUgPSB0cnVlO1xyXG4gICAgICAgIHRoaXMubm9kZS5wYXJlbnQucGFyZW50LnBhcmVudC5nZXRDaGlsZEJ5TmFtZShcInpodWFuY2hhbmdcIikuZ2V0Q29tcG9uZW50KHNwLlNrZWxldG9uKS5zZXRBbmltYXRpb24oMSwgXCJkb3duXCIsIGZhbHNlKTtcclxuICAgICAgICB0aGlzLm5vZGUucGFyZW50LnBhcmVudC5wYXJlbnQuZ2V0Q2hpbGRCeU5hbWUoXCJ6aHVhbmNoYW5nXCIpLmdldENvbXBvbmVudChzcC5Ta2VsZXRvbikuc2V0Q29tcGxldGVMaXN0ZW5lcigoZW50cnkpID0+IHtcclxuICAgICAgICAgICAgaWYgKGVudHJ5LmFuaW1hdGlvbi5uYW1lID09PSBcImRvd25cIikge1xyXG4gICAgICAgICAgICAgICAgLy8g5Yqo55S75pKt5pS+57uT5p2f5ZCO5omn6KGM55qE6YC76L6RXHJcbiAgICAgICAgICAgICAgICB0aGlzLm5vZGUucGFyZW50LnBhcmVudC5wYXJlbnQuZ2V0Q2hpbGRCeU5hbWUoXCJ6aHVhbmNoYW5nXCIpLmFjdGl2ZSA9IGZhbHNlO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfSk7XHJcbiAgICAgICAgdGhpcy5ibG9ja3MgPSBbXTtcclxuICAgICAgICB0aGlzLmxlZnREb29ycyA9IFtdOyAvL+W3pumXqFxyXG4gICAgICAgIHRoaXMucmlnaHREb29ycyA9IFtdOyAvL+WPs+mXqFxyXG4gICAgICAgIHRoaXMudG9wRG9vcnMgPSBbXTsgLy/kuIrpl6hcclxuICAgICAgICB0aGlzLmJvdHRvbURvb3JzID0gW107IC8v5LiL6ZeoXHJcbiAgICAgICAgdGhpcy5nYW1lV2luID0gZmFsc2U7XHJcbiAgICAgICAgdGhpcy5nYW1lT3ZlciA9IGZhbHNlO1xyXG4gICAgICAgIHRoaXMuZ2FtZVN0YXJ0ID0gZmFsc2U7XHJcbiAgICAgICAgdGhpcy5ob21lQ2FuVG91Y2ggPSB0cnVlO1xyXG4gICAgICAgIHRoaXMuYWdhaW5DYW5Ub3VjaCA9IHRydWU7XHJcbiAgICAgICAgdGhpcy5uZXdfbW9kZSA9IDA7XHJcbiAgICAgICAgdGhpcy5jb3VudF9UaW1lID0gMDtcclxuICAgICAgICB0aGlzLmFkZF9UaW1lID0gMDtcclxuXHJcblxyXG4gICAgICAgIHRoaXMuaWNlTGFiZWwuc3RyaW5nID0gY2MuZnguR2FtZUNvbmZpZy5HTV9JTkZPLmZyZWV6ZUFtb3VudC50b1N0cmluZygpO1xyXG4gICAgICAgIHRoaXMuaGFtbWVyTGFiZWwuc3RyaW5nID0gY2MuZnguR2FtZUNvbmZpZy5HTV9JTkZPLmhhbW1lckFtb3VudC50b1N0cmluZygpO1xyXG4gICAgICAgIHRoaXMubWFnaWNMYWJlbC5zdHJpbmcgPSBjYy5meC5HYW1lQ29uZmlnLkdNX0lORk8ubWFnaWNBbW91bnQudG9TdHJpbmcoKTtcclxuXHJcbiAgICAgICAgLy8gY2MuZ2FtZS5hZGRQZXJzaXN0Um9vdE5vZGUodGhpcy5ub2RlKTtcclxuICAgICAgICBNYXBDb25yb2xlci5faW5zdGFuY2UgPSB0aGlzO1xyXG4gICAgfVxyXG5cclxuICAgIHN0YXJ0KCkge1xyXG4gICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICAgICAgICBjYy5kaXJlY3Rvci5wcmVsb2FkU2NlbmUoXCJIb21lU2NlbmVcIiwgKGVyciwgYXNzZXQpID0+IHtcclxuICAgICAgICAgICAgICAgIGlmIChlcnIpIHtcclxuICAgICAgICAgICAgICAgICAgICBjb25zb2xlLmVycm9yKCfliqjmgIHliqDovb0gSG9tZVNjZW5lIOWksei0pTonLCBlcnIpO1xyXG4gICAgICAgICAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgfSwgMTAwMCk7XHJcbiAgICAgICAgLy8gY29uc29sZS5sb2coXCLov5vlhaVHYW1lU2NlbmVcIik7XHJcbiAgICAgICAgdGhpcy5CbG9ja19BcnJheSA9IEdhbWVNYW5hZ2VyLl9pbnN0YW5jZS5CbG9ja19BcnJheTtcclxuICAgICAgICB0aGlzLldhbGxfUHJlZmFiID0gR2FtZU1hbmFnZXIuX2luc3RhbmNlLldhbGxfUHJlZmFiO1xyXG4gICAgICAgIHRoaXMuQmxvY2tfQ29sb3IgPSBHYW1lTWFuYWdlci5faW5zdGFuY2UuQmxvY2tfQ29sb3I7XHJcbiAgICAgICAgLy8gdGhpcy5wYXJ0aWNsZUVmZmVjdHMgPSBHYW1lTWFuYWdlci5faW5zdGFuY2UucGFydGljbGVFZmZlY3RzO1xyXG5cclxuICAgICAgICB0aGlzLmluaXRNYXAoKTtcclxuXHJcbiAgICB9XHJcblxyXG4gICAgc3RhcnRVcGRhdGUoKSB7XHJcbiAgICAgICAgaWYgKHRoaXMuZ2FtZVN0YXJ0ID09IGZhbHNlKSB7XHJcbiAgICAgICAgICAgIHRoaXMuZ2FtZVN0YXJ0ID0gdHJ1ZTtcclxuICAgICAgICAgICAgLy/lj5HpgIHmlbDmlbDkuovku7bigJTigJTov5vlhaXlhbPljaFcclxuICAgICAgICAgICAgY29uc29sZS5sb2coXCLlh4blpIfov5vlhaXkuIvkuIDlhbMs5Y+R6YCB5LiL5LiA5YWz6L+b5YWlXCIpO1xyXG4gICAgICAgICAgICBjYy5meC5HYW1lVG9vbC5zaHVzaHVfVHJhY2soXCJlbnRlcl9zdGFnZVwiKTtcclxuICAgICAgICAgICAgdGhpcy5zdGFydFRpbWVDdXREb3duKCk7XHJcbiAgICAgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdGhpcy5ibG9ja3MubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICAgICAgICAgIGlmICh0aGlzLmJsb2Nrc1tpXS5nZXRDb21wb25lbnQoXCJCbG9ja1wiKS50eXBlID09IDYpIHtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLmJsb2Nrc1tpXS5nZXRDaGlsZEJ5TmFtZShcImJvb21cIikuZ2V0Q29tcG9uZW50KFwiQm9vbVwiKS5zdGFydEJvb20oKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBpbml0TWFwKCkge1xyXG4gICAgICAgIC8vIHRoaXMubm9kZS5nZXRDaGlsZEJ5TmFtZShcIldhbGxcIikuekluZGV4ID0gMTA7XHJcbiAgICAgICAgdGhpcy50aW1lTGFiZWwgPSB0aGlzLm5vZGUucGFyZW50LmdldENoaWxkQnlOYW1lKFwiVG9wXCIpLmdldENoaWxkQnlOYW1lKFwidGltZVwiKTtcclxuICAgICAgICB0aGlzLmxldmVsTGFiZWwgPSB0aGlzLm5vZGUucGFyZW50LmdldENoaWxkQnlOYW1lKFwiVG9wXCIpLmdldENoaWxkQnlOYW1lKFwibGV2ZWxcIik7XHJcbiAgICAgICAgdGhpcy50aW1lTnVtYmVyID0gY2MuZnguR2FtZUNvbmZpZy5MRVZFTF9JTkZPWzBdLnRpbWU7XHJcblxyXG4gICAgICAgIHRoaXMuY291bnRfVGltZSA9IDA7XHJcbiAgICAgICAgdGhpcy5hZGRfVGltZSA9IDA7XHJcbiAgICAgICAgTnVtYmVyVG9JbWFnZS5nZXRUaW1lTWFyZ2luKHRoaXMudGltZU51bWJlciwgNTAsIFwidGltZV9cIiwgdGhpcy50aW1lTGFiZWwpXHJcbiAgICAgICAgLy8gdmFyIHRpbWVUZW1wID0gY2MuZnguR2FtZVRvb2wuZ2V0VGltZU1hcmdpbih0aGlzLnRpbWVOdW1iZXIpO1xyXG4gICAgICAgIC8vIHRoaXMudGltZUxhYmVsLnN0cmluZyA9IHRpbWVUZW1wLnRvU3RyaW5nKCk7XHJcbiAgICAgICAgTnVtYmVyVG9JbWFnZS5udW1iZXJUb0ltYWdlTm9kZXMoKGNjLmZ4LkdhbWVDb25maWcuR01fSU5GTy5sZXZlbCArIDEpLCA1MCwgMjAsIFwibGV2ZWxfXCIsIHRoaXMubGV2ZWxMYWJlbCwgZmFsc2UpXHJcblxyXG4gICAgICAgIC8vdGhpcy5zdGFydFRpbWVDdXREb3duKCk7XHJcblxyXG4gICAgICAgIHRoaXMubWFwV2lkdGggPSBjYy5meC5HYW1lQ29uZmlnLkxFVkVMX0lORk9bMF0ubWFwWzBdO1xyXG4gICAgICAgIHRoaXMubWFwSGVpZ2h0ID0gY2MuZnguR2FtZUNvbmZpZy5MRVZFTF9JTkZPWzBdLm1hcFsxXTtcclxuICAgICAgICBsZXQgZ2FwID0gY2MuZnguR2FtZUNvbmZpZy5MRVZFTF9JTkZPWzBdLmdhcDtcclxuICAgICAgICBsZXQgcmlzZWZhbGwgPSBjYy5meC5HYW1lQ29uZmlnLkxFVkVMX0lORk9bMF0ucmlzZWZhbGw7XHJcblxyXG4gICAgICAgIHRoaXMucGF1c2UgPSBmYWxzZTtcclxuICAgICAgICB0aGlzLmhhbW1lciA9IGZhbHNlO1xyXG4gICAgICAgIHRoaXMud2FsbE51bSA9IDA7XHJcbiAgICAgICAgdGhpcy5zZXRNYXBJbmZvKCk7XHJcbiAgICAgICAgdGhpcy5ibG9ja3MgPSBbXTtcclxuICAgICAgICB0aGlzLm1hcEJsb2Nrc1dhbGwgPSBbXTtcclxuICAgICAgICB0aGlzLm1hcEluZm8gPSBbXTtcclxuICAgICAgICB0aGlzLndhbGxJbmZvID0gW107XHJcbiAgICAgICAgdGhpcy5vcGVuV2FsbCA9IFtdO1xyXG4gICAgICAgIHRoaXMud2FsbEFycmF5ID0gW107XHJcbiAgICAgICAgdGhpcy5mcmVlemVXYWxsID0gW107XHJcbiAgICAgICAgdGhpcy5yaXNlRmFsbEJsY29rID0gW107XHJcbiAgICAgICAgdGhpcy5tYXBCbG9ja0FycmF5ID0gW107XHJcbiAgICAgICAgdGhpcy5mcmVlemVBcnJheSA9IFtdO1xyXG4gICAgICAgIHRoaXMubG9hY2tBcnJheSA9IFtdO1xyXG4gICAgICAgIHRoaXMuY291bnRfVGltZSA9IDA7XHJcbiAgICAgICAgdGhpcy5hZGRfVGltZSA9IDA7XHJcblxyXG5cclxuICAgICAgICBsZXQgc3RhcnRYID0gdGhpcy5tYXBXaWR0aCAlIDIgPT0gMCA/IC0odGhpcy5tYXBXaWR0aCAtIDEpICogNjAgOiAtKHRoaXMubWFwV2lkdGggLSAxKSAqIDYwO1xyXG4gICAgICAgIGxldCBzdGFydFkgPSB0aGlzLm1hcEhlaWdodCAlIDIgPT0gMCA/IC0odGhpcy5tYXBIZWlnaHQgLSAxKSAqIDYwIDogLSh0aGlzLm1hcEhlaWdodCAtIDEpICogNjA7XHJcbiAgICAgICAgLy8gc3RhcnRYID0odGhpcy5tYXBXaWR0aC0xKSo2MCArIDYwO1xyXG4gICAgICAgIC8vIHN0YXJ0WSA9LSh0aGlzLm1hcEhlaWdodC0xKSo2MCAtIDYwO1xyXG5cclxuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRoaXMubWFwV2lkdGg7IGkrKykge1xyXG4gICAgICAgICAgICB0aGlzLm1hcEJsb2Nrc1dhbGxbaV0gPSBbXTtcclxuXHJcbiAgICAgICAgICAgIGZvciAobGV0IGogPSAwOyBqIDwgdGhpcy5tYXBIZWlnaHQ7IGorKykge1xyXG4gICAgICAgICAgICAgICAgbGV0IGJsb2NrID0gY2MuaW5zdGFudGlhdGUodGhpcy5NYXBCbG9ja1ByZWZhYik7XHJcbiAgICAgICAgICAgICAgICBibG9jay5wYXJlbnQgPSB0aGlzLm5vZGUuZ2V0Q2hpbGRCeU5hbWUoXCJtYXBCbG9ja1wiKTtcclxuICAgICAgICAgICAgICAgIGJsb2NrLmdldENvbXBvbmVudChcIk1hcEJsb2NrXCIpLmluaXQoaSwgaik7XHJcbiAgICAgICAgICAgICAgICAvLyBibG9jay5nZXRDaGlsZEJ5TmFtZShcIm51bVwiKS5nZXRDb21wb25lbnQoY2MuTGFiZWwpLnN0cmluZyA9IGkgKyBcIjpcIiArIGo7XHJcbiAgICAgICAgICAgICAgICBibG9jay5zZXRQb3NpdGlvbihjYy52MihzdGFydFggKyBpICogMTIwLCBzdGFydFkgKyBqICogMTIwKSlcclxuICAgICAgICAgICAgICAgIGlmIChyaXNlZmFsbCAhPSBudWxsKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMubWFwUmlzZUZhbGwoY2MudjIoaSwgaiksIHJpc2VmYWxsLCBibG9jaykpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5yaXNlRmFsbEJsY29rLnB1c2goYmxvY2spO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIGlmIChnYXAgIT0gbnVsbCkge1xyXG4gICAgICAgICAgICAgICAgICAgIGlmICghdGhpcy5tYXBHYXAoY2MudjIoaSwgaiksIGdhcCkgfHwgaSA9PSAwIHx8IGkgPT0gdGhpcy5tYXBXaWR0aCAtIDFcclxuICAgICAgICAgICAgICAgICAgICAgICAgfHwgaiA9PSAwIHx8IGogPT0gdGhpcy5tYXBIZWlnaHQgLSAxKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGJsb2NrLm9wYWNpdHkgPSAyNTQ7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGJsb2NrLnJlbW92ZUNvbXBvbmVudChjYy5TcHJpdGUpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBibG9jay5yZW1vdmVBbGxDaGlsZHJlbigpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLndhbGxJbmZvLnB1c2goYmxvY2spO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICBlbHNlIHRoaXMubWFwSW5mby5wdXNoKGJsb2NrKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICAgIGlmIChpID09IDAgfHwgaSA9PSB0aGlzLm1hcFdpZHRoIC0gMVxyXG4gICAgICAgICAgICAgICAgICAgICAgICB8fCBqID09IDAgfHwgaiA9PSB0aGlzLm1hcEhlaWdodCAtIDEpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgYmxvY2sub3BhY2l0eSA9IDI1NDtcclxuICAgICAgICAgICAgICAgICAgICAgICAgYmxvY2sucmVtb3ZlQ29tcG9uZW50KGNjLlNwcml0ZSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGJsb2NrLnJlbW92ZUFsbENoaWxkcmVuKCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMud2FsbEluZm8ucHVzaChibG9jayk7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIGVsc2UgdGhpcy5tYXBJbmZvLnB1c2goYmxvY2spO1xyXG4gICAgICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgICAgIHRoaXMubWFwQmxvY2tzV2FsbFtpXS5wdXNoKGJsb2NrKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgdGhpcy53YWxsSW5pdCgpO1xyXG4gICAgICAgIHRoaXMuYmxvY2tJbml0KCk7XHJcblxyXG4gICAgfVxyXG5cclxuICAgIC8v5Yib5bu65pa55Z2XXHJcbiAgICAvLyAuLi4g5bey5pyJ5Luj56CBIC4uLlxyXG5cclxuICAgIC8v5Yib5bu65pa55Z2XXHJcbiAgICAvLyAuLi4g5bey5pyJ5Luj56CBIC4uLlxyXG5cclxuXHJcblxyXG5cclxuICAgIGJsb2NrSW5pdCgpIHtcclxuICAgICAgICBsZXQgYmxvY2tBcnJheSA9IGNjLmZ4LkdhbWVDb25maWcuQkxPQ0tfSU5GT1swXTtcclxuICAgICAgICBibG9ja0FycmF5ID0gdGhpcy5zb3J0QmxvY2soYmxvY2tBcnJheSk7XHJcbiAgICAgICAgY29uc29sZS5sb2coXCLliJvlu7rmlrnlnZdcIiwgYmxvY2tBcnJheSk7XHJcbiAgICAgICAgbGV0IGluZGV4ID0gMDsgLy8g5b2T5YmN6KaB5Yib5bu655qE5pa55Z2X57Si5byVXHJcbiAgICAgICAgbGV0IEJMT0NLU19QRVJfRlJBTUUgPSAxOyAvLyDliJ3lp4vmr4/luKfliJvlu7rnmoTmlrnlnZfmlbDph49cclxuICAgICAgICBjb25zdCBNQVhfUEVSX0ZSQU1FID0gMTA7IC8vIOavj+W4p+acgOWkp+WIm+W7uuaVsOmHj1xyXG4gICAgICAgIGNvbnN0IE1JTl9QRVJfRlJBTUUgPSAxOyAvLyDmr4/luKfmnIDlsI/liJvlu7rmlbDph49cclxuXHJcbiAgICAgICAgY29uc3QgY3JlYXRlQmxvY2tzID0gKCkgPT4ge1xyXG4gICAgICAgICAgICBjb25zdCBzdGFydFRpbWUgPSBwZXJmb3JtYW5jZS5ub3coKTtcclxuICAgICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBCTE9DS1NfUEVSX0ZSQU1FICYmIGluZGV4IDwgYmxvY2tBcnJheS5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgICAgICAgICAgbGV0IGJsb2NrSW5mbyA9IGJsb2NrQXJyYXlbaW5kZXhdO1xyXG4gICAgICAgICAgICAgICAgLy8g57yT5a2YIEJsb2NrX0FycmF5IOiuv+mXrlxyXG4gICAgICAgICAgICAgICAgY29uc3QgYmxvY2tQcmVmYWIgPSB0aGlzLkJsb2NrX0FycmF5W2Jsb2NrSW5mby5ibG9ja107XHJcbiAgICAgICAgICAgICAgICBsZXQgYmxvY2sgPSBjYy5pbnN0YW50aWF0ZShibG9ja1ByZWZhYik7XHJcbiAgICAgICAgICAgICAgICBibG9jay5wYXJlbnQgPSB0aGlzLm5vZGU7XHJcbiAgICAgICAgICAgICAgICBibG9jay5zZXRQb3NpdGlvbihjYy52MihibG9ja0luZm8ucG9zaXRpb24ueCwgYmxvY2tJbmZvLnBvc2l0aW9uLnkpKTtcclxuICAgICAgICAgICAgICAgIGlmIChibG9ja0luZm8uYmxvY2sgIT0gMjMpIHtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLmJsb2NrTnVtICs9IDE7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5ibG9ja3MucHVzaChibG9jayk7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKGJsb2NrSW5mby50eXBlID09IDEpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGluZm8gPSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZDogYmxvY2tJbmZvLmlkICsgMSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJsb2NrOiBibG9ja0luZm8uYmxvY2ssXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb2xvcjogYmxvY2tJbmZvLnN0YWNraW5nLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZTogMTAsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwb3NpdGlvbjogYmxvY2tJbmZvLnBvc2l0aW9uLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhY2tpbmc6IGJsb2NrSW5mby5jb2xvclxyXG4gICAgICAgICAgICAgICAgICAgICAgICB9O1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyDnvJPlrZggQmxvY2tfQXJyYXkg6K6/6ZeuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGJsb2NrVXBQcmVmYWIgPSB0aGlzLkJsb2NrX0FycmF5W2luZm8uYmxvY2tdO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBsZXQgYmxvY2tVcCA9IGNjLmluc3RhbnRpYXRlKGJsb2NrVXBQcmVmYWIpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBibG9ja1VwLnBhcmVudCA9IHRoaXMubm9kZTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgYmxvY2tVcC5zZXRQb3NpdGlvbihjYy52MihpbmZvLnBvc2l0aW9uLngsIGluZm8ucG9zaXRpb24ueSkpO1xyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5ibG9ja3MucHVzaChibG9ja1VwKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgYmxvY2suZ2V0Q29tcG9uZW50KFwiQmxvY2tcIikuaW5pdChibG9ja0luZm8sIG51bGwsIG51bGwsIGJsb2NrVXApO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBibG9ja1VwLmdldENvbXBvbmVudChcIkJsb2NrXCIpLmluaXQoaW5mbywgbnVsbCwgbnVsbCwgYmxvY2spO1xyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5ibG9ja051bSArPSAxO1xyXG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoYmxvY2tJbmZvLnR5cGUgPT0gOSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoYmxvY2tJbmZvLmFkaGVzaXZlVGltZSA8IDIpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluZGV4Kys7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICBpbmRleCsrO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBsZXQgaW5mbyA9IGJsb2NrQXJyYXlbaW5kZXhdO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyDnvJPlrZggQmxvY2tfQXJyYXkg6K6/6ZeuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGJsb2NrVXBQcmVmYWIgPSB0aGlzLkJsb2NrX0FycmF5W2luZm8uYmxvY2tdO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBsZXQgYmxvY2tVcCA9IGNjLmluc3RhbnRpYXRlKGJsb2NrVXBQcmVmYWIpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBibG9ja1VwLnBhcmVudCA9IHRoaXMubm9kZTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgYmxvY2tVcC5zZXRQb3NpdGlvbihjYy52MihpbmZvLnBvc2l0aW9uLngsIGluZm8ucG9zaXRpb24ueSkpO1xyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5ibG9ja3MucHVzaChibG9ja1VwKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgYmxvY2suZ2V0Q29tcG9uZW50KFwiQmxvY2tcIikuaW5pdChibG9ja0luZm8sIG51bGwsIG51bGwsIGJsb2NrVXAsIGZhbHNlKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBibG9ja1VwLmdldENvbXBvbmVudChcIkJsb2NrXCIpLmluaXQoaW5mbywgbnVsbCwgbnVsbCwgYmxvY2ssIHRydWUpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB9LCAxMDApO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmJsb2NrTnVtICs9IDE7XHJcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgYmxvY2suZ2V0Q29tcG9uZW50KFwiQmxvY2tcIikuaW5pdChibG9ja0luZm8pO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICAgIGJsb2NrLmdldENvbXBvbmVudChcIkJhcnJpZXJcIikuaW5pdChibG9ja0luZm8pO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgaW5kZXgrKztcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBjb25zdCBlbmRUaW1lID0gcGVyZm9ybWFuY2Uubm93KCk7XHJcbiAgICAgICAgICAgIGNvbnN0IGZyYW1lVGltZSA9IGVuZFRpbWUgLSBzdGFydFRpbWU7XHJcbiAgICAgICAgICAgIC8vIOWmguaenOW9k+WJjeW4p+aJp+ihjOaXtumXtOi/h+mVv++8jOWHj+Wwkeavj+W4p+WIm+W7uuaVsOmHj1xyXG4gICAgICAgICAgICBpZiAoZnJhbWVUaW1lID4gMTYpIHtcclxuICAgICAgICAgICAgICAgIEJMT0NLU19QRVJfRlJBTUUgPSBNYXRoLm1heChCTE9DS1NfUEVSX0ZSQU1FIC0gMSwgTUlOX1BFUl9GUkFNRSk7XHJcbiAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICBCTE9DS1NfUEVSX0ZSQU1FID0gTWF0aC5taW4oQkxPQ0tTX1BFUl9GUkFNRSArIDEsIE1BWF9QRVJfRlJBTUUpO1xyXG4gICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAvLyDlpoLmnpzov5jmnInmlrnlnZfmnKrliJvlu7rvvIzkuIvkuIDluKfnu6fnu63liJvlu7pcclxuICAgICAgICAgICAgaWYgKGluZGV4IDwgYmxvY2tBcnJheS5sZW5ndGgpIHtcclxuICAgICAgICAgICAgICAgIC8vIOS9v+eUqCBzY2hlZHVsZU9uY2Ug5Zyo5LiL5LiA5bin5omn6KGMIGNyZWF0ZUJsb2Nrc1xyXG4gICAgICAgICAgICAgICAgdGhpcy5zY2hlZHVsZU9uY2UoKCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgIGNyZWF0ZUJsb2NrcygpO1xyXG4gICAgICAgICAgICAgICAgfSwgMCk7XHJcbiAgICAgICAgICAgIH0gZWxzZSB7XHJcblxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfTtcclxuXHJcbiAgICAgICAgLy8g5byA5aeL5YiG5bin5Yib5bu65pa55Z2XXHJcbiAgICAgICAgY3JlYXRlQmxvY2tzKCk7XHJcbiAgICB9XHJcbiAgICAvL+e7meWIm+W7uuaWueWdl+aOkuW6j++8jOeUqOadpemZjeS9jmRyYXdjYWxsIOWQiOaJuVxyXG4gICAgc29ydEJsb2NrKGFsbEJsb2NrczogeyBjb2xvcjogbnVtYmVyOyBibG9jazogbnVtYmVyOyB0eXBlOiBudW1iZXIgfVtdKSB7XHJcbiAgICAgICAgcmV0dXJuIGFsbEJsb2Nrcy5zb3J0KChhLCBiKSA9PiB7XHJcbiAgICAgICAgICAgIC8vIOWFiOWkhOeQhiB0eXBlIOS4uiAxIOeahOaDheWGte+8jOWwhuWFtuaUvuWIsOacgOWQjlxyXG4gICAgICAgICAgICBpZiAoYS50eXBlID09PSAxICYmIGIudHlwZSAhPT0gMSkge1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIDE7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgaWYgKGEudHlwZSAhPT0gMSAmJiBiLnR5cGUgPT09IDEpIHtcclxuICAgICAgICAgICAgICAgIHJldHVybiAtMTtcclxuICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgLy8g5a+5IHR5cGUg5LiN5Li6IDAg55qE5YWD57Sg5oyJIHR5cGUg5o6S5bqPXHJcbiAgICAgICAgICAgIGlmIChhLnR5cGUgIT09IDAgJiYgYi50eXBlICE9PSAwKSB7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gYS50eXBlIC0gYi50eXBlO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGlmIChhLnR5cGUgIT09IDAgJiYgYi50eXBlID09PSAwKSB7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gMTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBpZiAoYS50eXBlID09PSAwICYmIGIudHlwZSAhPT0gMCkge1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIC0xO1xyXG4gICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAvLyDlho3lpITnkIYgYmxvY2sg5Li6IDIzIOeahOaDheWGte+8jOWwhuWFtuaUvuWIsOacgOWJjemdolxyXG4gICAgICAgICAgICBpZiAoYS5ibG9jayA9PT0gMjMgJiYgYi5ibG9jayAhPT0gMjMpIHtcclxuICAgICAgICAgICAgICAgIHJldHVybiAtMTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBpZiAoYS5ibG9jayAhPT0gMjMgJiYgYi5ibG9jayA9PT0gMjMpIHtcclxuICAgICAgICAgICAgICAgIHJldHVybiAxO1xyXG4gICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAvLyDlhbbkvZnmjIkgY29sb3Ig5Y2H5bqP5o6S5YiXXHJcbiAgICAgICAgICAgIHJldHVybiBhLmNvbG9yIC0gYi5jb2xvcjtcclxuICAgICAgICB9KTtcclxuICAgIH1cclxuXHJcblxyXG4gICAgLy/liJvlu7rlopnlo4FcclxuXHJcbiAgICB3YWxsSW5pdCgpIHtcclxuICAgICAgICBsZXQgaW5kZXggPSAwOyAvLyDlvZPliY3opoHliJvlu7rnmoTlopnlo4HntKLlvJVcclxuICAgICAgICBsZXQgV0FMTFNfUEVSX0ZSQU1FID0gMTsgLy8g5Yid5aeL5q+P5bin5Yib5bu655qE5aKZ5aOB5pWw6YePXHJcbiAgICAgICAgY29uc3QgTUFYX1BFUl9GUkFNRSA9IDEwOyAvLyDmr4/luKfmnIDlpKfliJvlu7rmlbDph49cclxuICAgICAgICBjb25zdCBNSU5fUEVSX0ZSQU1FID0gMTsgLy8g5q+P5bin5pyA5bCP5Yib5bu65pWw6YePXHJcblxyXG4gICAgICAgIGNvbnN0IGNyZWF0ZVdhbGxzID0gKCkgPT4ge1xyXG4gICAgICAgICAgICBjb25zdCBzdGFydFRpbWUgPSBwZXJmb3JtYW5jZS5ub3coKTtcclxuICAgICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBXQUxMU19QRVJfRlJBTUUgJiYgaW5kZXggPCB0aGlzLndhbGxJbmZvLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgICAgICAgICBsZXQgYmxvY2sgPSB0aGlzLndhbGxJbmZvW2luZGV4XTtcclxuICAgICAgICAgICAgICAgIGxldCBkaXIgPSB0aGlzLmdldFdsbERpcmFjdGlvbihcIndhbGxcIiwgY2MudjIoYmxvY2suZ2V0Q29tcG9uZW50KFwiTWFwQmxvY2tcIikucG9zWCwgYmxvY2suZ2V0Q29tcG9uZW50KFwiTWFwQmxvY2tcIikucG9zWSkpO1xyXG4gICAgICAgICAgICAgICAgaWYgKGRpciAhPSBudWxsKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5jcmVhdGVXYWxsKGRpciwgYmxvY2spO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgaW5kZXgrKztcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBjb25zdCBlbmRUaW1lID0gcGVyZm9ybWFuY2Uubm93KCk7XHJcbiAgICAgICAgICAgIGNvbnN0IGZyYW1lVGltZSA9IGVuZFRpbWUgLSBzdGFydFRpbWU7XHJcbiAgICAgICAgICAgIC8vIOWmguaenOW9k+WJjeW4p+aJp+ihjOaXtumXtOi/h+mVv++8jOWHj+Wwkeavj+W4p+WIm+W7uuaVsOmHj1xyXG4gICAgICAgICAgICBpZiAoZnJhbWVUaW1lID4gMTYpIHtcclxuICAgICAgICAgICAgICAgIFdBTExTX1BFUl9GUkFNRSA9IE1hdGgubWF4KFdBTExTX1BFUl9GUkFNRSAtIDEsIE1JTl9QRVJfRlJBTUUpO1xyXG4gICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgV0FMTFNfUEVSX0ZSQU1FID0gTWF0aC5taW4oV0FMTFNfUEVSX0ZSQU1FICsgMSwgTUFYX1BFUl9GUkFNRSk7XHJcbiAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgIC8vIOWmguaenOi/mOacieWimeWjgeacquWIm+W7uu+8jOS4i+S4gOW4p+e7p+e7reWIm+W7ulxyXG4gICAgICAgICAgICBpZiAoaW5kZXggPCB0aGlzLndhbGxJbmZvLmxlbmd0aCkge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5zY2hlZHVsZU9uY2UoKCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgIGNyZWF0ZVdhbGxzKCk7XHJcbiAgICAgICAgICAgICAgICB9LCAwKTtcclxuICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgIC8vIOaJgOacieWimeWjgeWIm+W7uuWujOaIkOWQju+8jOWIm+W7uuaLkOinkuiKgueCuVxyXG4gICAgICAgICAgICAgICAgdGhpcy5jcmVhdGVDb3JuZXJOb2RlcygpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfTtcclxuXHJcbiAgICAgICAgLy8g5byA5aeL5YiG5bin5Yib5bu65aKZ5aOBXHJcbiAgICAgICAgY3JlYXRlV2FsbHMoKTtcclxuICAgIH1cclxuXHJcbiAgICAvLyAuLi4g5bey5pyJ5Luj56CBIC4uLlxyXG5cclxuICAgIGdldFdsbERpcmFjdGlvbih0eXBlLCBwb2ludEEpIHtcclxuICAgICAgICBsZXQgZGlyID0gW107XHJcbiAgICAgICAgbGV0IHBvaW50QiA9IGNjLnYyKHBvaW50QS54ICsgMSwgcG9pbnRBLnkpO1xyXG4gICAgICAgIGxldCBwb2ludEMgPSBjYy52Mihwb2ludEEueCAtIDEsIHBvaW50QS55KTtcclxuICAgICAgICBsZXQgcG9pbnREID0gY2MudjIocG9pbnRBLngsIHBvaW50QS55ICsgMSk7XHJcbiAgICAgICAgbGV0IHBvaW50RSA9IGNjLnYyKHBvaW50QS54LCBwb2ludEEueSAtIDEpO1xyXG4gICAgICAgIGxldCBvcGFjaXR5ID0gMDtcclxuICAgICAgICBpZiAodHlwZSA9PSBcIndhbGxcIikgb3BhY2l0eSA9IDI1NTtcclxuICAgICAgICBpZiAodHlwZSA9PSBcInR1cm5cIikgb3BhY2l0eSA9IDI1MDtcclxuXHJcbiAgICAgICAgaWYgKHBvaW50Qi54IDwgdGhpcy5tYXBXaWR0aCkge1xyXG4gICAgICAgICAgICBpZiAodGhpcy5tYXBCbG9ja3NXYWxsW3BvaW50Qi54XVtwb2ludEIueV0ub3BhY2l0eSA9PSBvcGFjaXR5KSB7XHJcbiAgICAgICAgICAgICAgICBpZiAodHlwZSA9PSBcInR1cm5cIiAmJiB0aGlzLm1hcEJsb2Nrc1dhbGxbcG9pbnRCLnhdW3BvaW50Qi55XS5nZXRDb21wb25lbnQoXCJNYXBCbG9ja1wiKS5kaXJlY3Rpb24gPT0gXCJyaWdodFwiKSB7XHJcblxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgZWxzZSBkaXIucHVzaChcInJpZ2h0XCIpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmIChwb2ludEMueCA+PSAwKSB7XHJcbiAgICAgICAgICAgIGlmICh0aGlzLm1hcEJsb2Nrc1dhbGxbcG9pbnRDLnhdW3BvaW50Qy55XS5vcGFjaXR5ID09IG9wYWNpdHkpIHtcclxuICAgICAgICAgICAgICAgIGlmICh0eXBlID09IFwidHVyblwiICYmIHRoaXMubWFwQmxvY2tzV2FsbFtwb2ludEMueF1bcG9pbnRDLnldLmdldENvbXBvbmVudChcIk1hcEJsb2NrXCIpLmRpcmVjdGlvbiA9PSBcImxlZnRcIikge1xyXG5cclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIGVsc2UgZGlyLnB1c2goXCJsZWZ0XCIpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmIChwb2ludEQueSA8IHRoaXMubWFwSGVpZ2h0KSB7XHJcbiAgICAgICAgICAgIGlmICh0aGlzLm1hcEJsb2Nrc1dhbGxbcG9pbnRELnhdW3BvaW50RC55XS5vcGFjaXR5ID09IG9wYWNpdHkpIHtcclxuICAgICAgICAgICAgICAgIGlmICh0eXBlID09IFwidHVyblwiICYmIHRoaXMubWFwQmxvY2tzV2FsbFtwb2ludEQueF1bcG9pbnRELnldLmdldENvbXBvbmVudChcIk1hcEJsb2NrXCIpLmRpcmVjdGlvbiA9PSBcInVwXCIpIHtcclxuXHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBlbHNlIGRpci5wdXNoKFwidXBcIik7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKHBvaW50RS55ID49IDApIHtcclxuICAgICAgICAgICAgaWYgKHRoaXMubWFwQmxvY2tzV2FsbFtwb2ludEUueF1bcG9pbnRFLnldLm9wYWNpdHkgPT0gb3BhY2l0eSkge1xyXG4gICAgICAgICAgICAgICAgaWYgKHR5cGUgPT0gXCJ0dXJuXCIgJiYgdGhpcy5tYXBCbG9ja3NXYWxsW3BvaW50RS54XVtwb2ludEUueV0uZ2V0Q29tcG9uZW50KFwiTWFwQmxvY2tcIikuZGlyZWN0aW9uID09IFwiZG93blwiKSB7XHJcblxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgZWxzZSBkaXIucHVzaChcImRvd25cIik7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKGRpci5sZW5ndGggPiAyKSB7XHJcblxyXG4gICAgICAgICAgICByZXR1cm4gbnVsbDtcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKGRpci5sZW5ndGggPT0gMSkge1xyXG4gICAgICAgICAgICBpZiAodHlwZSA9PSBcIndhbGxcIilcclxuICAgICAgICAgICAgICAgIHJldHVybiBkaXJbMF07XHJcbiAgICAgICAgICAgIGVsc2VcclxuICAgICAgICAgICAgICAgIHJldHVybiBudWxsO1xyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIGlmIChkaXIubGVuZ3RoID09IDIpIHtcclxuICAgICAgICAgICAgcmV0dXJuIGRpclswXSArIGRpclsxXTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgY3JlYXRlQ29ybmVyTm9kZXMoKSB7XHJcbiAgICAgICAgLy8g5a6a5LmJ5ouQ6KeS5L2N572uXHJcbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0aGlzLndhbGxJbmZvLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgICAgIGxldCBibG9jayA9IHRoaXMud2FsbEluZm9baV07XHJcbiAgICAgICAgICAgIGlmIChibG9jay5vcGFjaXR5ICE9IDI1MCkge1xyXG4gICAgICAgICAgICAgICAgbGV0IGRpciA9IHRoaXMuZ2V0V2xsRGlyYWN0aW9uKFwidHVyblwiLCBjYy52MihibG9jay5nZXRDb21wb25lbnQoXCJNYXBCbG9ja1wiKS5wb3NYLCBibG9jay5nZXRDb21wb25lbnQoXCJNYXBCbG9ja1wiKS5wb3NZKSk7XHJcbiAgICAgICAgICAgICAgICBpZiAoZGlyICE9IG51bGwpIHtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLmNyZWF0ZVR1cm4oZGlyLCBibG9jaywgYmxvY2suZ2V0Q29tcG9uZW50KFwiTWFwQmxvY2tcIikucG9zWCwgYmxvY2suZ2V0Q29tcG9uZW50KFwiTWFwQmxvY2tcIikucG9zWSk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgfVxyXG5cclxuICAgIH1cclxuXHJcbiAgICBjcmVhdGVXYWxsKGRpcmVjdGlvbiwgbm9kZSkge1xyXG4gICAgICAgIGxldCB3YWxsID0gbnVsbDtcclxuICAgICAgICBub2RlLmdldENvbXBvbmVudChcIk1hcEJsb2NrXCIpLnNldERpcmFjdGlvbihkaXJlY3Rpb24pO1xyXG4gICAgICAgIHN3aXRjaCAoZGlyZWN0aW9uKSB7XHJcbiAgICAgICAgICAgIGNhc2UgXCJyaWdodFwiOlxyXG4gICAgICAgICAgICAgICAgbm9kZS5vcGFjaXR5ID0gMjUwO1xyXG4gICAgICAgICAgICAgICAgd2FsbCA9IGNjLmluc3RhbnRpYXRlKHRoaXMuV2FsbF9QcmVmYWJbNF0pO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5sZWZ0RG9vcnMucHVzaCh3YWxsKTtcclxuICAgICAgICAgICAgICAgIC8vIHdhbGwucGFyZW50ID0gdGhpcy5ub2RlLmdldENoaWxkQnlOYW1lKFwiV2FsbFwiKTtcclxuICAgICAgICAgICAgICAgIHdhbGwucGFyZW50ID0gdGhpcy5ub2RlO1xyXG4gICAgICAgICAgICAgICAgd2FsbC5zZXRQb3NpdGlvbihjYy52Mihub2RlLngsIG5vZGUueSkpO1xyXG4gICAgICAgICAgICAgICAgbm9kZS5vcGFjaXR5ID0gMjUwO1xyXG4gICAgICAgICAgICAgICAgd2FsbC5nZXRDaGlsZEJ5TmFtZShcIndhbGxcIikuZ2V0Q29tcG9uZW50KFwiV2FsbFwiKS5pbml0KG51bGwsIG5vZGUuZ2V0Q29tcG9uZW50KFwiTWFwQmxvY2tcIikucG9zWCwgbm9kZS5nZXRDb21wb25lbnQoXCJNYXBCbG9ja1wiKS5wb3NZLCBkaXJlY3Rpb24pO1xyXG4gICAgICAgICAgICAgICAgLy93YWxsLmdldENoaWxkQnlOYW1lKFwid2FsbFwiKS5nZXRDaGlsZEJ5TmFtZShcIm51bVwiKS5nZXRDb21wb25lbnQoY2MuTGFiZWwpLnN0cmluZyA9IHRoaXMud2FsbE51bS50b1N0cmluZygpO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5zZXREb29ySW5mbyh3YWxsLmdldENoaWxkQnlOYW1lKFwid2FsbFwiKSk7XHJcbiAgICAgICAgICAgICAgICB0aGlzLndhbGxOdW0gKz0gMTtcclxuICAgICAgICAgICAgICAgIGlmICh3YWxsLmdldENoaWxkQnlOYW1lKFwid2FsbFwiKS5nZXRDb21wb25lbnQoXCJXYWxsXCIpLnNwZWNpYWwgPT0gMilcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLm9wZW5XYWxsLnB1c2god2FsbCk7XHJcbiAgICAgICAgICAgICAgICBlbHNlIGlmICh3YWxsLmdldENoaWxkQnlOYW1lKFwid2FsbFwiKS5nZXRDb21wb25lbnQoXCJXYWxsXCIpLnNwZWNpYWwgPT0gMylcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLmZyZWV6ZVdhbGwucHVzaCh3YWxsKTtcclxuXHJcbiAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgY2FzZSBcImxlZnRcIjpcclxuICAgICAgICAgICAgICAgIG5vZGUub3BhY2l0eSA9IDI1MDtcclxuICAgICAgICAgICAgICAgIHdhbGwgPSBjYy5pbnN0YW50aWF0ZSh0aGlzLldhbGxfUHJlZmFiWzNdKTtcclxuICAgICAgICAgICAgICAgIC8vIHdhbGwucGFyZW50ID0gdGhpcy5ub2RlLmdldENoaWxkQnlOYW1lKFwiV2FsbFwiKTtcclxuICAgICAgICAgICAgICAgIHRoaXMucmlnaHREb29ycy5wdXNoKHdhbGwpO1xyXG4gICAgICAgICAgICAgICAgd2FsbC5wYXJlbnQgPSB0aGlzLm5vZGU7XHJcbiAgICAgICAgICAgICAgICB3YWxsLnNldFBvc2l0aW9uKGNjLnYyKG5vZGUueCwgbm9kZS55KSk7XHJcbiAgICAgICAgICAgICAgICB3YWxsLmdldENoaWxkQnlOYW1lKFwid2FsbFwiKS5nZXRDb21wb25lbnQoXCJXYWxsXCIpLmluaXQobnVsbCwgbm9kZS5nZXRDb21wb25lbnQoXCJNYXBCbG9ja1wiKS5wb3NYLCBub2RlLmdldENvbXBvbmVudChcIk1hcEJsb2NrXCIpLnBvc1ksIGRpcmVjdGlvbik7XHJcbiAgICAgICAgICAgICAgICB0aGlzLnNldERvb3JJbmZvKHdhbGwuZ2V0Q2hpbGRCeU5hbWUoXCJ3YWxsXCIpKTtcclxuICAgICAgICAgICAgICAgIC8vd2FsbC5nZXRDaGlsZEJ5TmFtZShcIndhbGxcIikuZ2V0Q2hpbGRCeU5hbWUoXCJudW1cIikuZ2V0Q29tcG9uZW50KGNjLkxhYmVsKS5zdHJpbmcgPSB0aGlzLndhbGxOdW0udG9TdHJpbmcoKTtcclxuICAgICAgICAgICAgICAgIHRoaXMud2FsbE51bSArPSAxO1xyXG4gICAgICAgICAgICAgICAgaWYgKHdhbGwuZ2V0Q2hpbGRCeU5hbWUoXCJ3YWxsXCIpLmdldENvbXBvbmVudChcIldhbGxcIikuc3BlY2lhbCA9PSAyKVxyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMub3BlbldhbGwucHVzaCh3YWxsKTtcclxuICAgICAgICAgICAgICAgIGVsc2UgaWYgKHdhbGwuZ2V0Q2hpbGRCeU5hbWUoXCJ3YWxsXCIpLmdldENvbXBvbmVudChcIldhbGxcIikuc3BlY2lhbCA9PSAzKVxyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZnJlZXplV2FsbC5wdXNoKHdhbGwpO1xyXG4gICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgIGNhc2UgXCJ1cFwiOlxyXG4gICAgICAgICAgICAgICAgbm9kZS5vcGFjaXR5ID0gMjUwO1xyXG4gICAgICAgICAgICAgICAgd2FsbCA9IGNjLmluc3RhbnRpYXRlKHRoaXMuV2FsbF9QcmVmYWJbNV0pO1xyXG5cclxuICAgICAgICAgICAgICAgIHRoaXMudG9wRG9vcnMucHVzaCh3YWxsKTtcclxuICAgICAgICAgICAgICAgIC8vIHdhbGwucGFyZW50ID0gdGhpcy5ub2RlLmdldENoaWxkQnlOYW1lKFwiV2FsbFwiKTtcclxuICAgICAgICAgICAgICAgIHdhbGwucGFyZW50ID0gdGhpcy5ub2RlO1xyXG4gICAgICAgICAgICAgICAgd2FsbC5zZXRQb3NpdGlvbihjYy52Mihub2RlLngsIG5vZGUueSkpO1xyXG5cclxuICAgICAgICAgICAgICAgIHdhbGwuZ2V0Q2hpbGRCeU5hbWUoXCJ3YWxsXCIpLmdldENvbXBvbmVudChcIldhbGxcIikuaW5pdChudWxsLCBub2RlLmdldENvbXBvbmVudChcIk1hcEJsb2NrXCIpLnBvc1gsIG5vZGUuZ2V0Q29tcG9uZW50KFwiTWFwQmxvY2tcIikucG9zWSwgZGlyZWN0aW9uKTtcclxuICAgICAgICAgICAgICAgIHRoaXMuc2V0RG9vckluZm8od2FsbC5nZXRDaGlsZEJ5TmFtZShcIndhbGxcIikpO1xyXG4gICAgICAgICAgICAgICAgLy93YWxsLmdldENoaWxkQnlOYW1lKFwid2FsbFwiKS5nZXRDaGlsZEJ5TmFtZShcIm51bVwiKS5nZXRDb21wb25lbnQoY2MuTGFiZWwpLnN0cmluZyA9IHRoaXMud2FsbE51bS50b1N0cmluZygpO1xyXG4gICAgICAgICAgICAgICAgdGhpcy53YWxsTnVtICs9IDE7XHJcbiAgICAgICAgICAgICAgICBpZiAod2FsbC5nZXRDaGlsZEJ5TmFtZShcIndhbGxcIikuZ2V0Q29tcG9uZW50KFwiV2FsbFwiKS5zcGVjaWFsID09IDIpXHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5vcGVuV2FsbC5wdXNoKHdhbGwpO1xyXG4gICAgICAgICAgICAgICAgZWxzZSBpZiAod2FsbC5nZXRDaGlsZEJ5TmFtZShcIndhbGxcIikuZ2V0Q29tcG9uZW50KFwiV2FsbFwiKS5zcGVjaWFsID09IDMpXHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5mcmVlemVXYWxsLnB1c2god2FsbCk7XHJcbiAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgY2FzZSBcImRvd25cIjpcclxuICAgICAgICAgICAgICAgIG5vZGUub3BhY2l0eSA9IDI1MDtcclxuICAgICAgICAgICAgICAgIHdhbGwgPSBjYy5pbnN0YW50aWF0ZSh0aGlzLldhbGxfUHJlZmFiWzBdKTtcclxuICAgICAgICAgICAgICAgIHRoaXMuYm90dG9tRG9vcnMucHVzaCh3YWxsKTtcclxuICAgICAgICAgICAgICAgIC8vIHdhbGwucGFyZW50ID0gdGhpcy5ub2RlLmdldENoaWxkQnlOYW1lKFwiV2FsbFwiKTtcclxuICAgICAgICAgICAgICAgIHdhbGwucGFyZW50ID0gdGhpcy5ub2RlO1xyXG4gICAgICAgICAgICAgICAgd2FsbC5zZXRQb3NpdGlvbihjYy52Mihub2RlLngsIG5vZGUueSkpO1xyXG4gICAgICAgICAgICAgICAgLy8gdGhpcy5zZXREb29ySW5mbyh3YWxsLmdldENoaWxkQnlOYW1lKFwid2FsbFwiKSk7XHJcbiAgICAgICAgICAgICAgICB3YWxsLmdldENoaWxkQnlOYW1lKFwid2FsbFwiKS5nZXRDb21wb25lbnQoXCJXYWxsXCIpLmluaXQobnVsbCwgbm9kZS5nZXRDb21wb25lbnQoXCJNYXBCbG9ja1wiKS5wb3NYLCBub2RlLmdldENvbXBvbmVudChcIk1hcEJsb2NrXCIpLnBvc1ksIGRpcmVjdGlvbik7XHJcbiAgICAgICAgICAgICAgICB0aGlzLnNldERvb3JJbmZvKHdhbGwuZ2V0Q2hpbGRCeU5hbWUoXCJ3YWxsXCIpKTtcclxuICAgICAgICAgICAgICAgIC8vd2FsbC5nZXRDaGlsZEJ5TmFtZShcIndhbGxcIikuZ2V0Q2hpbGRCeU5hbWUoXCJudW1cIikuZ2V0Q29tcG9uZW50KGNjLkxhYmVsKS5zdHJpbmcgPSB0aGlzLndhbGxOdW0udG9TdHJpbmcoKTtcclxuICAgICAgICAgICAgICAgIHRoaXMud2FsbE51bSArPSAxO1xyXG4gICAgICAgICAgICAgICAgaWYgKHdhbGwuZ2V0Q2hpbGRCeU5hbWUoXCJ3YWxsXCIpLmdldENvbXBvbmVudChcIldhbGxcIikuc3BlY2lhbCA9PSAyKVxyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMub3BlbldhbGwucHVzaCh3YWxsKTtcclxuICAgICAgICAgICAgICAgIGVsc2UgaWYgKHdhbGwuZ2V0Q2hpbGRCeU5hbWUoXCJ3YWxsXCIpLmdldENvbXBvbmVudChcIldhbGxcIikuc3BlY2lhbCA9PSAzKVxyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZnJlZXplV2FsbC5wdXNoKHdhbGwpO1xyXG4gICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgIGNhc2UgXCJ1cHJpZ2h0XCI6IGNhc2UgXCJyaWdodHVwXCI6XHJcbiAgICAgICAgICAgICAgICBub2RlLm9wYWNpdHkgPSAyNDk7XHJcbiAgICAgICAgICAgICAgICB3YWxsID0gY2MuaW5zdGFudGlhdGUodGhpcy5XYWxsX1ByZWZhYls3XSk7XHJcbiAgICAgICAgICAgICAgICAvLyB3YWxsLnBhcmVudCA9IHRoaXMubm9kZS5nZXRDaGlsZEJ5TmFtZShcIldhbGxcIik7XHJcbiAgICAgICAgICAgICAgICB3YWxsLnBhcmVudCA9IHRoaXMubm9kZTtcclxuICAgICAgICAgICAgICAgIHdhbGwuc2V0UG9zaXRpb24oY2MudjIobm9kZS54LCBub2RlLnkpKTtcclxuICAgICAgICAgICAgICAgIHdhbGwuY2hpbGRyZW5bMV0uZ2V0Q29tcG9uZW50KFwiV2FsbFwiKS5pbml0KG51bGwsIG5vZGUuZ2V0Q29tcG9uZW50KFwiTWFwQmxvY2tcIikucG9zWCwgbm9kZS5nZXRDb21wb25lbnQoXCJNYXBCbG9ja1wiKS5wb3NZLCBkaXJlY3Rpb24pO1xyXG4gICAgICAgICAgICAgICAgd2FsbC5jaGlsZHJlblsyXS5nZXRDb21wb25lbnQoXCJXYWxsXCIpLmluaXQobnVsbCwgbm9kZS5nZXRDb21wb25lbnQoXCJNYXBCbG9ja1wiKS5wb3NYLCBub2RlLmdldENvbXBvbmVudChcIk1hcEJsb2NrXCIpLnBvc1ksIGRpcmVjdGlvbik7XHJcbiAgICAgICAgICAgICAgICAvL3dhbGwuY2hpbGRyZW5bMF0uZ2V0Q2hpbGRCeU5hbWUoXCJudW1cIikuZ2V0Q29tcG9uZW50KGNjLkxhYmVsKS5zdHJpbmcgPSB0aGlzLndhbGxOdW0udG9TdHJpbmcoKTtcclxuICAgICAgICAgICAgICAgIHRoaXMuc2V0RG9vckluZm8od2FsbC5jaGlsZHJlblswXSk7XHJcbiAgICAgICAgICAgICAgICB0aGlzLndhbGxOdW0gKz0gMTtcclxuICAgICAgICAgICAgICAgIC8vd2FsbC5jaGlsZHJlblsxXS5nZXRDaGlsZEJ5TmFtZShcIm51bVwiKS5nZXRDb21wb25lbnQoY2MuTGFiZWwpLnN0cmluZyA9IHRoaXMud2FsbE51bS50b1N0cmluZygpO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5zZXREb29ySW5mbyh3YWxsLmNoaWxkcmVuWzFdKTtcclxuICAgICAgICAgICAgICAgIHRoaXMud2FsbE51bSArPSAxO1xyXG5cclxuICAgICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICBjYXNlIFwidXBsZWZ0XCI6IGNhc2UgXCJsZWZ0dXBcIjpcclxuICAgICAgICAgICAgICAgIG5vZGUub3BhY2l0eSA9IDI0OTtcclxuICAgICAgICAgICAgICAgIHdhbGwgPSBjYy5pbnN0YW50aWF0ZSh0aGlzLldhbGxfUHJlZmFiWzZdKTtcclxuICAgICAgICAgICAgICAgIC8vIHdhbGwucGFyZW50ID0gdGhpcy5ub2RlLmdldENoaWxkQnlOYW1lKFwiV2FsbFwiKTtcclxuICAgICAgICAgICAgICAgIHdhbGwucGFyZW50ID0gdGhpcy5ub2RlO1xyXG4gICAgICAgICAgICAgICAgd2FsbC5zZXRQb3NpdGlvbihjYy52Mihub2RlLngsIG5vZGUueSkpO1xyXG4gICAgICAgICAgICAgICAgd2FsbC5jaGlsZHJlblsxXS5nZXRDb21wb25lbnQoXCJXYWxsXCIpLmluaXQobnVsbCwgbm9kZS5nZXRDb21wb25lbnQoXCJNYXBCbG9ja1wiKS5wb3NYLCBub2RlLmdldENvbXBvbmVudChcIk1hcEJsb2NrXCIpLnBvc1ksIGRpcmVjdGlvbik7XHJcbiAgICAgICAgICAgICAgICB3YWxsLmNoaWxkcmVuWzJdLmdldENvbXBvbmVudChcIldhbGxcIikuaW5pdChudWxsLCBub2RlLmdldENvbXBvbmVudChcIk1hcEJsb2NrXCIpLnBvc1gsIG5vZGUuZ2V0Q29tcG9uZW50KFwiTWFwQmxvY2tcIikucG9zWSwgZGlyZWN0aW9uKTtcclxuICAgICAgICAgICAgICAgIC8vd2FsbC5jaGlsZHJlblswXS5nZXRDaGlsZEJ5TmFtZShcIm51bVwiKS5nZXRDb21wb25lbnQoY2MuTGFiZWwpLnN0cmluZyA9IHRoaXMud2FsbE51bS50b1N0cmluZygpO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5zZXREb29ySW5mbyh3YWxsLmNoaWxkcmVuWzBdKTtcclxuICAgICAgICAgICAgICAgIHRoaXMud2FsbE51bSArPSAxO1xyXG4gICAgICAgICAgICAgICAgLy93YWxsLmNoaWxkcmVuWzFdLmdldENoaWxkQnlOYW1lKFwibnVtXCIpLmdldENvbXBvbmVudChjYy5MYWJlbCkuc3RyaW5nID0gdGhpcy53YWxsTnVtLnRvU3RyaW5nKCk7XHJcbiAgICAgICAgICAgICAgICB0aGlzLnNldERvb3JJbmZvKHdhbGwuY2hpbGRyZW5bMV0pO1xyXG4gICAgICAgICAgICAgICAgdGhpcy53YWxsTnVtICs9IDE7XHJcblxyXG4gICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgIGNhc2UgXCJkb3ducmlnaHRcIjogY2FzZSBcInJpZ2h0ZG93blwiOlxyXG4gICAgICAgICAgICAgICAgbm9kZS5vcGFjaXR5ID0gMjQ5O1xyXG4gICAgICAgICAgICAgICAgd2FsbCA9IGNjLmluc3RhbnRpYXRlKHRoaXMuV2FsbF9QcmVmYWJbMl0pO1xyXG4gICAgICAgICAgICAgICAgLy8gd2FsbC5wYXJlbnQgPSB0aGlzLm5vZGUuZ2V0Q2hpbGRCeU5hbWUoXCJXYWxsXCIpO1xyXG4gICAgICAgICAgICAgICAgd2FsbC5wYXJlbnQgPSB0aGlzLm5vZGU7XHJcbiAgICAgICAgICAgICAgICB3YWxsLnNldFBvc2l0aW9uKGNjLnYyKG5vZGUueCwgbm9kZS55KSk7XHJcbiAgICAgICAgICAgICAgICB3YWxsLmNoaWxkcmVuWzFdLmdldENvbXBvbmVudChcIldhbGxcIikuaW5pdChudWxsLCBub2RlLmdldENvbXBvbmVudChcIk1hcEJsb2NrXCIpLnBvc1gsIG5vZGUuZ2V0Q29tcG9uZW50KFwiTWFwQmxvY2tcIikucG9zWSwgZGlyZWN0aW9uKTtcclxuICAgICAgICAgICAgICAgIHdhbGwuY2hpbGRyZW5bMl0uZ2V0Q29tcG9uZW50KFwiV2FsbFwiKS5pbml0KG51bGwsIG5vZGUuZ2V0Q29tcG9uZW50KFwiTWFwQmxvY2tcIikucG9zWCwgbm9kZS5nZXRDb21wb25lbnQoXCJNYXBCbG9ja1wiKS5wb3NZLCBkaXJlY3Rpb24pO1xyXG4gICAgICAgICAgICAgICAgLy93YWxsLmNoaWxkcmVuWzBdLmdldENoaWxkQnlOYW1lKFwibnVtXCIpLmdldENvbXBvbmVudChjYy5MYWJlbCkuc3RyaW5nID0gdGhpcy53YWxsTnVtLnRvU3RyaW5nKCk7XHJcbiAgICAgICAgICAgICAgICB0aGlzLnNldERvb3JJbmZvKHdhbGwuY2hpbGRyZW5bMF0pO1xyXG4gICAgICAgICAgICAgICAgdGhpcy53YWxsTnVtICs9IDE7XHJcbiAgICAgICAgICAgICAgICAvL3dhbGwuY2hpbGRyZW5bMV0uZ2V0Q2hpbGRCeU5hbWUoXCJudW1cIikuZ2V0Q29tcG9uZW50KGNjLkxhYmVsKS5zdHJpbmcgPSB0aGlzLndhbGxOdW0udG9TdHJpbmcoKTtcclxuICAgICAgICAgICAgICAgIHRoaXMuc2V0RG9vckluZm8od2FsbC5jaGlsZHJlblsxXSk7XHJcbiAgICAgICAgICAgICAgICB0aGlzLndhbGxOdW0gKz0gMTtcclxuXHJcbiAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgY2FzZSBcImRvd25sZWZ0XCI6IGNhc2UgXCJsZWZ0ZG93blwiOlxyXG4gICAgICAgICAgICAgICAgbm9kZS5vcGFjaXR5ID0gMjQ5O1xyXG4gICAgICAgICAgICAgICAgd2FsbCA9IGNjLmluc3RhbnRpYXRlKHRoaXMuV2FsbF9QcmVmYWJbMV0pO1xyXG4gICAgICAgICAgICAgICAgLy8gd2FsbC5wYXJlbnQgPSB0aGlzLm5vZGUuZ2V0Q2hpbGRCeU5hbWUoXCJXYWxsXCIpO1xyXG4gICAgICAgICAgICAgICAgd2FsbC5wYXJlbnQgPSB0aGlzLm5vZGU7XHJcbiAgICAgICAgICAgICAgICB3YWxsLnNldFBvc2l0aW9uKGNjLnYyKG5vZGUueCwgbm9kZS55KSk7XHJcbiAgICAgICAgICAgICAgICB3YWxsLmNoaWxkcmVuWzFdLmdldENvbXBvbmVudChcIldhbGxcIikuaW5pdChudWxsLCBub2RlLmdldENvbXBvbmVudChcIk1hcEJsb2NrXCIpLnBvc1gsIG5vZGUuZ2V0Q29tcG9uZW50KFwiTWFwQmxvY2tcIikucG9zWSwgZGlyZWN0aW9uKTtcclxuICAgICAgICAgICAgICAgIHdhbGwuY2hpbGRyZW5bMl0uZ2V0Q29tcG9uZW50KFwiV2FsbFwiKS5pbml0KG51bGwsIG5vZGUuZ2V0Q29tcG9uZW50KFwiTWFwQmxvY2tcIikucG9zWCwgbm9kZS5nZXRDb21wb25lbnQoXCJNYXBCbG9ja1wiKS5wb3NZLCBkaXJlY3Rpb24pO1xyXG4gICAgICAgICAgICAgICAgLy93YWxsLmNoaWxkcmVuWzBdLmdldENoaWxkQnlOYW1lKFwibnVtXCIpLmdldENvbXBvbmVudChjYy5MYWJlbCkuc3RyaW5nID0gdGhpcy53YWxsTnVtLnRvU3RyaW5nKCk7XHJcbiAgICAgICAgICAgICAgICB0aGlzLnNldERvb3JJbmZvKHdhbGwuY2hpbGRyZW5bMF0pO1xyXG4gICAgICAgICAgICAgICAgdGhpcy53YWxsTnVtICs9IDE7XHJcbiAgICAgICAgICAgICAgICAvL3dhbGwuY2hpbGRyZW5bMV0uZ2V0Q2hpbGRCeU5hbWUoXCJudW1cIikuZ2V0Q29tcG9uZW50KGNjLkxhYmVsKS5zdHJpbmcgPSB0aGlzLndhbGxOdW0udG9TdHJpbmcoKTtcclxuICAgICAgICAgICAgICAgIHRoaXMuc2V0RG9vckluZm8od2FsbC5jaGlsZHJlblsxXSk7XHJcbiAgICAgICAgICAgICAgICB0aGlzLndhbGxOdW0gKz0gMTtcclxuXHJcbiAgICAgICAgICAgICAgICBicmVhaztcclxuXHJcbiAgICAgICAgfVxyXG5cclxuXHJcbiAgICAgICAgLy8gaWYod2FsbFR1cm4pe1xyXG4gICAgICAgIC8vICAgICB3YWxsVHVybi5nZXRDb21wb25lbnQoXCJ3YWxsVHVuclwiKS5pbml0KHdhbGwpO1xyXG4gICAgICAgIC8vIH1cclxuICAgIH1cclxuXHJcbiAgICBzZXREb29ySW5mbyh3YWxsKSB7XHJcbiAgICAgICAgbGV0IGRvb3JJbmZvID0gY2MuZnguR2FtZUNvbmZpZy5XQUxMX0lORk9bMF07XHJcblxyXG4gICAgICAgIGlmIChkb29ySW5mbykge1xyXG4gICAgICAgICAgICBmb3IgKGxldCBqID0gMDsgaiA8IGRvb3JJbmZvLmxlbmd0aDsgaisrKSB7XHJcbiAgICAgICAgICAgICAgICBpZiAoZG9vckluZm9bal0ubnVtID09IHRoaXMud2FsbE51bSkge1xyXG4gICAgICAgICAgICAgICAgICAgIHdhbGwuZ2V0Q29tcG9uZW50KFwiV2FsbFwiKS5pbml0KGRvb3JJbmZvW2pdLCBudWxsLCBudWxsLCBudWxsKTtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLndhbGxBcnJheS5wdXNoKHdhbGwucGFyZW50KTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBjcmVhdGVUdXJuKGRpcmVjdGlvbiwgbm9kZSwgcG9zWCwgcG9zWSkge1xyXG4gICAgICAgIGxldCB3YWxsID0gbnVsbDtcclxuICAgICAgICB3YWxsID0gY2MuaW5zdGFudGlhdGUodGhpcy53YWxsVHVyblByZWZhYik7XHJcbiAgICAgICAgd2FsbC5wYXJlbnQgPSB0aGlzLm5vZGU7XHJcbiAgICAgICAgd2FsbC5zZXRQb3NpdGlvbihjYy52Mihub2RlLngsIG5vZGUueSkpO1xyXG4gICAgICAgIHN3aXRjaCAoZGlyZWN0aW9uKSB7XHJcbiAgICAgICAgICAgIGNhc2UgXCJ1cHJpZ2h0XCI6IGNhc2UgXCJyaWdodHVwXCI6XHJcbiAgICAgICAgICAgICAgICB3YWxsLmFuZ2xlID0gMDtcclxuICAgICAgICAgICAgICAgIHdhbGwuZ2V0Q2hpbGRCeU5hbWUoXCJpY29uXCIpLmFuZ2xlID0gMDtcclxuXHJcbiAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgY2FzZSBcInVwbGVmdFwiOiBjYXNlIFwibGVmdHVwXCI6XHJcbiAgICAgICAgICAgICAgICB3YWxsLmFuZ2xlID0gOTA7XHJcbiAgICAgICAgICAgICAgICB3YWxsLmdldENoaWxkQnlOYW1lKFwiaWNvblwiKS5hbmdsZSA9IC05MDtcclxuICAgICAgICAgICAgICAgIHdhbGwuZ2V0Q2hpbGRCeU5hbWUoXCJpY29uXCIpLnkgKz0gNTtcclxuICAgICAgICAgICAgICAgIHdhbGwuZ2V0Q2hpbGRCeU5hbWUoXCJpY29uXCIpLnggLT0gMS4zO1xyXG4gICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgIGNhc2UgXCJkb3ducmlnaHRcIjogY2FzZSBcInJpZ2h0ZG93blwiOlxyXG4gICAgICAgICAgICAgICAgd2FsbC5hbmdsZSA9IDI3MDtcclxuICAgICAgICAgICAgICAgIHdhbGwuZ2V0Q2hpbGRCeU5hbWUoXCJpY29uXCIpLmFuZ2xlID0gLTI3MDtcclxuICAgICAgICAgICAgICAgIHdhbGwuZ2V0Q2hpbGRCeU5hbWUoXCJpY29uXCIpLnggKz0gMi41O1xyXG4gICAgICAgICAgICAgICAgd2FsbC5nZXRDaGlsZEJ5TmFtZShcImljb25cIikueSArPSAxO1xyXG4gICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgIGNhc2UgXCJkb3dubGVmdFwiOiBjYXNlIFwibGVmdGRvd25cIjpcclxuICAgICAgICAgICAgICAgIHdhbGwuYW5nbGUgPSAxODA7XHJcbiAgICAgICAgICAgICAgICB3YWxsLmdldENoaWxkQnlOYW1lKFwiaWNvblwiKS5hbmdsZSA9IC0xODA7XHJcbiAgICAgICAgICAgICAgICB3YWxsLmdldENoaWxkQnlOYW1lKFwiaWNvblwiKS54ICs9IDQuNTtcclxuICAgICAgICAgICAgICAgIHdhbGwuZ2V0Q2hpbGRCeU5hbWUoXCJpY29uXCIpLnkgKz0gMy4yO1xyXG4gICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICAvLyBpZihkaXJlY3Rpb24gPT0gXCJyaWdodGRvd25cIiB8fCBkaXJlY3Rpb24gPT0gXCJkb3ducmlnaHRcIikge1xyXG4gICAgICAgIC8vICAgICB3YWxsLnpJbmRleCA9IDUwICsgcG9zWCAtIHBvc1kqMztcclxuICAgICAgICAvLyB9XHJcbiAgICAgICAgLy8gZWxzZSBcclxuICAgICAgICAvLyAgICAgd2FsbC56SW5kZXggPSA1MCArIHBvc1ggLSBwb3NZKjM7XHJcblxyXG4gICAgICAgIGlmIChkaXJlY3Rpb24gPT0gXCJ1cFwiIHx8IGRpcmVjdGlvbiA9PSBcImxlZnR1cFwiIHx8IGRpcmVjdGlvbiA9PSBcInVwbGVmdFwiXHJcbiAgICAgICAgKSB7XHJcbiAgICAgICAgICAgIHdhbGwuekluZGV4ID0gMTAwICsgcG9zWCAtIHBvc1kgKiAzO1xyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIGlmIChkaXJlY3Rpb24gPT0gXCJyaWdodHVwXCIgfHwgZGlyZWN0aW9uID09IFwidXByaWdodFwiIHx8IGRpcmVjdGlvbiA9PSBcInJpZ2h0ZG93blwiIHx8IGRpcmVjdGlvbiA9PSBcImRvd25yaWdodFwiIHx8IGRpcmVjdGlvbiA9PSBcImRvd25sZWZ0XCIpIHtcclxuICAgICAgICAgICAgd2FsbC56SW5kZXggPSAzMCArIHBvc1ggLSBwb3NZICogMztcclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSBpZiAoZGlyZWN0aW9uID09IFwibGVmdFwiIHx8IGRpcmVjdGlvbiA9PSBcImxlZnRkb3duXCIpIHtcclxuICAgICAgICAgICAgd2FsbC56SW5kZXggPSA3MCArIHBvc1ggLSBwb3NZICogMztcclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSB3YWxsLnpJbmRleCA9IDcwICsgcG9zWCAtIHBvc1kgKiAzO1xyXG5cclxuICAgICAgICAvLyB3YWxsLmdldENoaWxkQnlOYW1lKFwibnVtXCIpLmFuZ2xlID0gLXdhbGwuYW5nbGU7XHJcbiAgICAgICAgLy93YWxsLmdldENoaWxkQnlOYW1lKFwibnVtXCIpLmdldENvbXBvbmVudChjYy5MYWJlbCkuc3RyaW5nID0gZGlyZWN0aW9uO1xyXG4gICAgICAgIC8vd2FsbC5nZXRDaGlsZEJ5TmFtZShcIm51bVwiKS5nZXRDb21wb25lbnQoY2MuTGFiZWwpLnN0cmluZyA9IHdhbGwuekluZGV4KyBcIlwiO1xyXG4gICAgICAgIC8vIGNvbnNvbGUubG9nKHBvc1gscG9zWSx3YWxsLnpJbmRleCk7XHJcbiAgICAgICAgLy8gdGhpcy53YWxsTnVtICs9ICAxO1xyXG4gICAgICAgIC8vIHdhbGwuZ2V0Q2hpbGRCeU5hbWUoXCJudW1cIikuZ2V0Q29tcG9uZW50KGNjLkxhYmVsKS5zdHJpbmcgPSB0aGlzLndhbGxOdW0gKyBcIlwiO1xyXG4gICAgfVxyXG5cclxuICAgIC8v5Zyw5Zu+5bqV5Z2X57y65Y+j5Yik5patXHJcbiAgICBtYXBHYXAocG9pbnQsIGdhcCkge1xyXG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgZ2FwLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgICAgIGlmIChwb2ludC54ID09IGdhcFtpXS54ICYmIHBvaW50LnkgPT0gZ2FwW2ldLnkpIHtcclxuICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gdHJ1ZTtcclxuICAgIH1cclxuXHJcbiAgICAvL+WNh+mZjeWcsOWdl+WIpOaWrVxyXG4gICAgbWFwUmlzZUZhbGwocG9pbnQsIHJpc2VmYWxsLCBibG9jaykge1xyXG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgcmlzZWZhbGwubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICAgICAgaWYgKHBvaW50LnggPT0gcmlzZWZhbGxbaV0ucG9zLnggJiYgcG9pbnQueSA9PSByaXNlZmFsbFtpXS5wb3MueSkge1xyXG4gICAgICAgICAgICAgICAgYmxvY2suZ2V0Q2hpbGRCeU5hbWUoXCJyaXNlZmFsbFwiKS5hY3RpdmUgPSB0cnVlO1xyXG4gICAgICAgICAgICAgICAgYmxvY2suZ2V0Q2hpbGRCeU5hbWUoJ3Jpc2VmYWxsJykuZ2V0Q2hpbGRCeU5hbWUoXCJjb2xvclwiKS5nZXRDb21wb25lbnQoY2MuTGFiZWwpLnN0cmluZyA9IHJpc2VmYWxsW2ldLmNvbG9yICsgXCJcIjtcclxuICAgICAgICAgICAgICAgIGJsb2NrLmdldENoaWxkQnlOYW1lKCdyaXNlZmFsbCcpLmFkZENvbXBvbmVudChjYy5Cb3hDb2xsaWRlcik7XHJcbiAgICAgICAgICAgICAgICBibG9jay5nZXRDaGlsZEJ5TmFtZSgncmlzZWZhbGwnKS5nZXRDb21wb25lbnQoY2MuQm94Q29sbGlkZXIpLnNpemUgPSBjYy5zaXplKDExMCwgMTEwKTtcclxuICAgICAgICAgICAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgIH1cclxuICAgIC8v5Y2H6ZmN5Zyw5Z2XXHJcbiAgICBjaGFuZ2VSaXNlRmFsbChjb2xvciwgZG93bikge1xyXG4gICAgICAgIGNvbG9yID0gY29sb3IudG9TdHJpbmcoKTtcclxuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRoaXMucmlzZUZhbGxCbGNvay5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgICAgICBpZiAoY29sb3IgPT0gdGhpcy5yaXNlRmFsbEJsY29rW2ldLmdldENoaWxkQnlOYW1lKFwicmlzZWZhbGxcIikuZ2V0Q2hpbGRCeU5hbWUoXCJjb2xvclwiKS5nZXRDb21wb25lbnQoY2MuTGFiZWwpLnN0cmluZykge1xyXG4gICAgICAgICAgICAgICAgaWYgKGRvd24pIHtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLnJpc2VGYWxsQmxjb2tbaV0uZ2V0Q2hpbGRCeU5hbWUoXCJyaXNlZmFsbFwiKS5hY3RpdmUgPSBmYWxzZTtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLnJpc2VGYWxsQmxjb2tbaV0uZ2V0Q2hpbGRCeU5hbWUoJ3Jpc2VmYWxsJykucmVtb3ZlQ29tcG9uZW50KGNjLkJveENvbGxpZGVyKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMucmlzZUZhbGxCbGNva1tpXS5nZXRDaGlsZEJ5TmFtZShcInJpc2VmYWxsXCIpLmFjdGl2ZSA9IHRydWU7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5yaXNlRmFsbEJsY29rW2ldLmdldENoaWxkQnlOYW1lKCdyaXNlZmFsbCcpLmFkZENvbXBvbmVudChjYy5Cb3hDb2xsaWRlcik7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5yaXNlRmFsbEJsY29rW2ldLmdldENoaWxkQnlOYW1lKCdyaXNlZmFsbCcpLmdldENvbXBvbmVudChjYy5Cb3hDb2xsaWRlcikuc2l6ZSA9IGNjLnNpemUoMTEwLCAxMTApO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcblxyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcblxyXG5cclxuICAgIC8v5p+l6K+i5Y+g5Yqg5b+raWRcclxuICAgIGZvdW5kRG93bkJsb2NrKGlkKSB7XHJcbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0aGlzLmJsb2Nrcy5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgICAgICBpZiAodGhpcy5ibG9ja3NbaV0uZ2V0Q29tcG9uZW50KFwiQmxvY2tcIikuYmxvY2tJZCA9PSBpZCkge1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuYmxvY2tzW2ldO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiBudWxsO1xyXG4gICAgfVxyXG5cclxuICAgIC8v5Yig6Zmk5Z2XXHJcbiAgICByZW1vdmVCbG9jayhpZCkge1xyXG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdGhpcy5ibG9ja3MubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICAgICAgaWYgKHRoaXMuYmxvY2tzW2ldLmdldENvbXBvbmVudChcIkJsb2NrXCIpLmJsb2NrSWQgPT0gaWQpIHtcclxuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmJsb2Nrc1tpXTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gbnVsbDtcclxuICAgIH1cclxuXHJcbiAgICBnZXRNaW5BbmRNYXgoYmxvY2spIHtcclxuICAgICAgICBsZXQgd2lkdGggPSBNYXRoLmZsb29yKGJsb2NrLndpZHRoIC8gMTIwKTtcclxuICAgICAgICBsZXQgaGVpZ2h0ID0gTWF0aC5mbG9vcihibG9jay5oZWlnaHQgLyAxMjApO1xyXG5cclxuICAgICAgICBsZXQgbWluWCA9IHdpZHRoO1xyXG4gICAgICAgIGxldCBtYXhYID0gdGhpcy5tYXBXaWR0aCAtIDI7XHJcbiAgICAgICAgbGV0IG1pblkgPSAxO1xyXG4gICAgICAgIGxldCBtYXhZID0gdGhpcy5tYXBIZWlnaHQgLSAyIC0gaGVpZ2h0ICsgMTtcclxuXHJcbiAgICAgICAgaWYgKGJsb2NrLm5hbWUgPT0gXCJibG9jazEwXCIpIHtcclxuICAgICAgICAgICAgbWluWCA9IHdpZHRoIC0gMTtcclxuICAgICAgICAgICAgaWYgKHRoaXMubWFwV2lkdGggPiAzKSBtYXhYID0gbWF4WCAtIDE7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2UgaWYgKGJsb2NrLm5hbWUgPT0gXCJibG9jazExXCIpIHtcclxuICAgICAgICAgICAgbWluWCA9IHdpZHRoIC0gMjtcclxuICAgICAgICAgICAgaWYgKHRoaXMubWFwV2lkdGggPiAzKSBtYXhYID0gbWF4WCAtIDI7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBlbHNlIGlmIChibG9jay5uYW1lID09IFwiYmxvY2sxNFwiKSB7XHJcbiAgICAgICAgICAgIG1pblggPSB3aWR0aCAtIDE7XHJcbiAgICAgICAgICAgIG1heFggPSBtYXhYIC0gMTtcclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSBpZiAoYmxvY2submFtZSA9PSBcImJsb2NrMTZcIikge1xyXG4gICAgICAgICAgICBtaW5YID0gd2lkdGggLSAxO1xyXG4gICAgICAgICAgICBtYXhYID0gbWF4WCAtIDE7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2UgaWYgKGJsb2NrLm5hbWUgPT0gXCJibG9jazE4XCIpIHtcclxuICAgICAgICAgICAgbWluWCA9IHdpZHRoIC0gMTtcclxuICAgICAgICAgICAgbWF4WCA9IG1heFggLSAxO1xyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIGlmIChibG9jay5uYW1lID09IFwiYmxvY2syMVwiKSB7XHJcbiAgICAgICAgICAgIG1pblggPSB3aWR0aCAtIDE7XHJcbiAgICAgICAgICAgIG1heFggPSBtYXhYIC0gMTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHJldHVybiB7IG1pblg6IG1pblgsIG1heFg6IG1heFgsIG1pblk6IG1pblksIG1heFk6IG1heFkgfTtcclxuICAgIH1cclxuXHJcbiAgICAvL+ajgOa1i+iQveeCueaYr+WQpuWPr+S7pea2iOmZpFxyXG4gICAgY2hlY2tQYXNzKG5vZGUsIGJsb2Nrcykge1xyXG4gICAgICAgIGxldCBtaW5BbmRNYXggPSB0aGlzLmdldE1pbkFuZE1heChub2RlKTtcclxuICAgICAgICBsZXQgbWluWCA9IG1pbkFuZE1heC5taW5YO1xyXG4gICAgICAgIGxldCBtYXhYID0gbWluQW5kTWF4Lm1heFg7XHJcbiAgICAgICAgbGV0IG1pblkgPSBtaW5BbmRNYXgubWluWTtcclxuICAgICAgICBsZXQgbWF4WSA9IG1pbkFuZE1heC5tYXhZO1xyXG5cclxuICAgICAgICBsZXQgbm9kZVBvcyA9IGNjLnYyKG5vZGUuZ2V0Q29tcG9uZW50KFwiQmxvY2tcIikucG9zWCwgbm9kZS5nZXRDb21wb25lbnQoXCJCbG9ja1wiKS5wb3NZKTtcclxuXHJcbiAgICAgICAgLy8g6I635Y+W5Zyw5Zu+6L6555WM5L+h5oGvXHJcblxyXG4gICAgICAgIGxldCBhbGxCbG9ja3MgPSBbXTtcclxuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGJsb2Nrcy5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgICAgICBhbGxCbG9ja3MucHVzaChjYy52Mihub2RlUG9zLnggKyBibG9ja3NbaV0ueCwgbm9kZVBvcy55ICsgYmxvY2tzW2ldLnkpKTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIC8vIGNvbnN0IGRhdGUxID0gbmV3IERhdGUoKS5nZXRUaW1lKCk7XHJcbiAgICAgICAgLy8gY29uc29sZS5sb2coXCLlsIblsI/lnZfmlL7lhaXmlbDnu4TnmoTml7bpl7RcIixkYXRlMSk7XHJcblxyXG4gICAgICAgIGxldCBqZyA9IC0xO1xyXG4gICAgICAgIGxldCBweiA9IDA7XHJcbiAgICAgICAgLy8g6I635Y+W5omA5pyJ5aKZ5aOB6IqC54K5XHJcbiAgICAgICAgLy8gbGV0IHdhbGwgPSB0aGlzLm5vZGU7XHJcbiAgICAgICAgbGV0IGRpcmVjdGlvbiA9IHRoaXMuY2hlY2tEaXJhY3Rpb24oYWxsQmxvY2tzLCBtYXhYLCBtYXhZKTtcclxuXHJcbiAgICAgICAgLy8g5Yik5pat5pa55Z2X5piv5ZCm5Zyo5Zyw5Zu+6L6557yYXHJcbiAgICAgICAgaWYgKG5vZGVQb3MueCA8PSBtaW5YIHx8IGRpcmVjdGlvblswXSA9PSB0cnVlKSB7XHJcbiAgICAgICAgICAgIC8vIGNvbnN0IGRhdGUyID0gbmV3IERhdGUoKS5nZXRUaW1lKCk7XHJcbiAgICAgICAgICAgIC8vIGNvbnNvbGUubG9nKFwi56Kw5Yiw5bem6L6557yYXCIsZGF0ZTIpO1xyXG4gICAgICAgICAgICBweiArPSAxO1xyXG4gICAgICAgICAgICBsZXQgbGVmdFdhbGxzID0gW107XHJcbiAgICAgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdGhpcy5sZWZ0RG9vcnMubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICAgICAgICAgIGxldCB3YWxsTGVmdCA9IHRoaXMubGVmdERvb3JzW2ldLmdldENoaWxkQnlOYW1lKFwid2FsbFwiKTtcclxuICAgICAgICAgICAgICAgIGxldCB3YWxsUG9zID0gY2MudjIod2FsbExlZnQuZ2V0Q29tcG9uZW50KFwiV2FsbFwiKS5wb3NYLCB3YWxsTGVmdC5nZXRDb21wb25lbnQoXCJXYWxsXCIpLnBvc1kpO1xyXG4gICAgICAgICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBhbGxCbG9ja3MubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICAgICAgICAgICAgICBpZiAoYWxsQmxvY2tzW2ldLnkgPT0gd2FsbFBvcy55ICYmIGFsbEJsb2Nrc1tpXS54ID4gd2FsbFBvcy54KSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIGNvbnNvbGUubG9nKFwiaWQ6XCIsd2FsbC5nZXRDaGlsZEJ5TmFtZShcIm51bVwiKS5nZXRDb21wb25lbnQoY2MuTGFiZWwpLnN0cmluZyk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGxlZnRXYWxscy5wdXNoKHdhbGxMZWZ0KTtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgLy8gY29uc29sZS5sb2coXCLlvpfliLDlt6bovrnlopnlo4HmlbDnu4RcIixkYXRlNik7XHJcbiAgICAgICAgICAgIGlmIChsZWZ0V2FsbHMubGVuZ3RoICE9IDApIHtcclxuICAgICAgICAgICAgICAgIGxldCByZXN1bHQgPSB0aGlzLmRldGVjdGluZ0Jsb2NrKFwibGVmdFwiLCBub2RlLmdldENvbXBvbmVudChcIkJsb2NrXCIpLnBvc1gsIG5vZGUuZ2V0Q29tcG9uZW50KFwiQmxvY2tcIikucG9zWSwgYWxsQmxvY2tzKTtcclxuICAgICAgICAgICAgICAgIGlmIChyZXN1bHQgPT0gdHJ1ZSkgcmVzdWx0ID0gdGhpcy5wYXNzV2FsbChyZXN1bHQsIGxlZnRXYWxscywgbm9kZSk7XHJcbiAgICAgICAgICAgICAgICAvLyBjb25zb2xlLmxvZyhcIueisOWIsOW3pui+uee8mOe7k+aenDpcIixqZyk7XHJcbiAgICAgICAgICAgICAgICBpZiAocmVzdWx0KSB7XHJcblxyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuYmxvY2tOdW0gLT0gMTtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLnNwZWNpYWxfVHJlYXRtZW50KG5vZGUpO1xyXG4gICAgICAgICAgICAgICAgICAgIGpnID0gMjtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLmNyZWF0ZVBhcnRpY2xlKG5vZGUsIGpnKTtcclxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gamc7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKG5vZGVQb3MueCA+PSBtYXhYIHx8IGRpcmVjdGlvblsxXSA9PSB0cnVlKSB7XHJcbiAgICAgICAgICAgIC8vIGNvbnN0IGRhdGUzID0gbmV3IERhdGUoKS5nZXRUaW1lKCk7XHJcbiAgICAgICAgICAgIC8vIGNvbnNvbGUubG9nKFwi56Kw5Yiw5Y+z6L6557yYXCIsZGF0ZTMpO1xyXG4gICAgICAgICAgICBweiArPSAxO1xyXG4gICAgICAgICAgICBsZXQgcmlnaHRXYWxscyA9IFtdO1xyXG4gICAgICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRoaXMucmlnaHREb29ycy5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgICAgICAgICAgbGV0IHdhbGxSaWdodCA9IHRoaXMucmlnaHREb29yc1tpXS5nZXRDaGlsZEJ5TmFtZShcIndhbGxcIik7XHJcbiAgICAgICAgICAgICAgICBsZXQgd2FsbFBvcyA9IGNjLnYyKHdhbGxSaWdodC5nZXRDb21wb25lbnQoXCJXYWxsXCIpLnBvc1gsIHdhbGxSaWdodC5nZXRDb21wb25lbnQoXCJXYWxsXCIpLnBvc1kpO1xyXG4gICAgICAgICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBhbGxCbG9ja3MubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICAgICAgICAgICAgICBpZiAoYWxsQmxvY2tzW2ldLnkgPT0gd2FsbFBvcy55ICYmIGFsbEJsb2Nrc1tpXS54IDwgd2FsbFBvcy54KSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIGNvbnNvbGUubG9nKFwiaWQ6XCIsd2FsbC5nZXRDaGlsZEJ5TmFtZShcIm51bVwiKS5nZXRDb21wb25lbnQoY2MuTGFiZWwpLnN0cmluZyk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHJpZ2h0V2FsbHMucHVzaCh3YWxsUmlnaHQpO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgaWYgKHJpZ2h0V2FsbHMubGVuZ3RoICE9IDApIHtcclxuICAgICAgICAgICAgICAgIGxldCByZXN1bHQgPSB0aGlzLmRldGVjdGluZ0Jsb2NrKFwicmlnaHRcIiwgbm9kZS5nZXRDb21wb25lbnQoXCJCbG9ja1wiKS5wb3NYLCBub2RlLmdldENvbXBvbmVudChcIkJsb2NrXCIpLnBvc1ksIGFsbEJsb2Nrcyk7XHJcblxyXG4gICAgICAgICAgICAgICAgaWYgKHJlc3VsdCA9PSB0cnVlKSByZXN1bHQgPSB0aGlzLnBhc3NXYWxsKHJlc3VsdCwgcmlnaHRXYWxscywgbm9kZSk7XHJcbiAgICAgICAgICAgICAgICAvLyBjb25zb2xlLmxvZyhcIueisOWIsOWPs+i+uee8mOe7k+aenDpcIixqZyk7XHJcbiAgICAgICAgICAgICAgICBpZiAocmVzdWx0KSB7XHJcblxyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuYmxvY2tOdW0gLT0gMTtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLnNwZWNpYWxfVHJlYXRtZW50KG5vZGUpO1xyXG4gICAgICAgICAgICAgICAgICAgIGpnID0gMztcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLmNyZWF0ZVBhcnRpY2xlKG5vZGUsIGpnKTtcclxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gamc7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuXHJcblxyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAobm9kZVBvcy55IDw9IG1pblkgfHwgZGlyZWN0aW9uWzJdID09IHRydWUpIHtcclxuICAgICAgICAgICAgcHogKz0gMTtcclxuICAgICAgICAgICAgLy8gY29uc3QgZGF0ZTQgPSBuZXcgRGF0ZSgpLmdldFRpbWUoKTtcclxuICAgICAgICAgICAgLy8gY29uc29sZS5sb2coXCLnorDliLDkuIvovrnnvJhcIixkYXRlNCk7XHJcbiAgICAgICAgICAgIGxldCBkb3duV2FsbHMgPSBbXTtcclxuICAgICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0aGlzLnRvcERvb3JzLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgICAgICAgICBsZXQgd2FsbEJvdHRvbSA9IHRoaXMudG9wRG9vcnNbaV0uZ2V0Q2hpbGRCeU5hbWUoXCJ3YWxsXCIpO1xyXG4gICAgICAgICAgICAgICAgbGV0IHdhbGxQb3MgPSBjYy52Mih3YWxsQm90dG9tLmdldENvbXBvbmVudChcIldhbGxcIikucG9zWCwgd2FsbEJvdHRvbS5nZXRDb21wb25lbnQoXCJXYWxsXCIpLnBvc1kpO1xyXG4gICAgICAgICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBhbGxCbG9ja3MubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICAgICAgICAgICAgICBsZXQgbHVvY2hhID0gTWF0aC5hYnMoYWxsQmxvY2tzW2ldLnkgLSB3YWxsUG9zLnkpXHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKGFsbEJsb2Nrc1tpXS54ID09IHdhbGxQb3MueCAmJiBhbGxCbG9ja3NbaV0ueSA+IHdhbGxQb3MueSAmJiBsdW9jaGEgPD0gbm9kZS5nZXRDb21wb25lbnQoXCJCbG9ja1wiKS5zaHUpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgLy8gY29uc29sZS5sb2coXCJpZDpcIix3YWxsLmdldENoaWxkQnlOYW1lKFwibnVtXCIpLmdldENvbXBvbmVudChjYy5MYWJlbCkuc3RyaW5nKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgZG93bldhbGxzLnB1c2god2FsbEJvdHRvbSk7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICBpZiAoZG93bldhbGxzLmxlbmd0aCAhPSAwKSB7XHJcbiAgICAgICAgICAgICAgICBsZXQgcmVzdWx0ID0gdGhpcy5kZXRlY3RpbmdCbG9jayhcImRvd25cIiwgbm9kZS5nZXRDb21wb25lbnQoXCJCbG9ja1wiKS5wb3NYLCBub2RlLmdldENvbXBvbmVudChcIkJsb2NrXCIpLnBvc1ksIGFsbEJsb2Nrcyk7XHJcbiAgICAgICAgICAgICAgICBpZiAocmVzdWx0ID09IHRydWUpIHJlc3VsdCA9IHRoaXMucGFzc1dhbGwocmVzdWx0LCBkb3duV2FsbHMsIG5vZGUpO1xyXG4gICAgICAgICAgICAgICAgLy8gY29uc29sZS5sb2coXCLnorDliLDkuIvovrnnvJjnu5Pmnpw6XCIsamcpO1xyXG4gICAgICAgICAgICAgICAgaWYgKHJlc3VsdCkge1xyXG5cclxuICAgICAgICAgICAgICAgICAgICB0aGlzLmJsb2NrTnVtIC09IDE7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5zcGVjaWFsX1RyZWF0bWVudChub2RlKTtcclxuICAgICAgICAgICAgICAgICAgICBqZyA9IDE7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5jcmVhdGVQYXJ0aWNsZShub2RlLCBqZyk7XHJcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGpnO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcblxyXG5cclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKG5vZGVQb3MueSA+PSBtYXhZIHx8IGRpcmVjdGlvblszXSA9PSB0cnVlKSB7XHJcbiAgICAgICAgICAgIHB6ICs9IDE7XHJcbiAgICAgICAgICAgIC8vIGNvbnN0IGRhdGU1ID0gbmV3IERhdGUoKS5nZXRUaW1lKCk7XHJcbiAgICAgICAgICAgIC8vIGNvbnNvbGUubG9nKFwi56Kw5Yiw5LiK6L6557yYXCIsZGF0ZTUpO1xyXG4gICAgICAgICAgICBsZXQgdXBXYWxscyA9IFtdO1xyXG4gICAgICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRoaXMuYm90dG9tRG9vcnMubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICAgICAgICAgIGxldCB3YWxsVG9wID0gdGhpcy5ib3R0b21Eb29yc1tpXS5nZXRDaGlsZEJ5TmFtZShcIndhbGxcIik7XHJcbiAgICAgICAgICAgICAgICBsZXQgd2FsbFBvcyA9IGNjLnYyKHdhbGxUb3AuZ2V0Q29tcG9uZW50KFwiV2FsbFwiKS5wb3NYLCB3YWxsVG9wLmdldENvbXBvbmVudChcIldhbGxcIikucG9zWSk7XHJcbiAgICAgICAgICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGFsbEJsb2Nrcy5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgICAgICAgICAgICAgIGxldCBsdW9jaGEgPSBNYXRoLmFicyhhbGxCbG9ja3NbaV0ueSAtIHdhbGxQb3MueSlcclxuICAgICAgICAgICAgICAgICAgICBpZiAoYWxsQmxvY2tzW2ldLnggPT0gd2FsbFBvcy54ICYmIGFsbEJsb2Nrc1tpXS55IDwgd2FsbFBvcy55ICYmIGx1b2NoYSA8PSBub2RlLmdldENvbXBvbmVudChcIkJsb2NrXCIpLnNodSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB1cFdhbGxzLnB1c2god2FsbFRvcCk7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICBpZiAodXBXYWxscy5sZW5ndGggIT0gMCkge1xyXG4gICAgICAgICAgICAgICAgbGV0IHJlc3VsdCA9IHRoaXMuZGV0ZWN0aW5nQmxvY2soXCJ1cFwiLCBub2RlLmdldENvbXBvbmVudChcIkJsb2NrXCIpLnBvc1gsIG5vZGUuZ2V0Q29tcG9uZW50KFwiQmxvY2tcIikucG9zWSwgYWxsQmxvY2tzKTtcclxuICAgICAgICAgICAgICAgIGlmIChyZXN1bHQgPT0gdHJ1ZSkgcmVzdWx0ID0gdGhpcy5wYXNzV2FsbChyZXN1bHQsIHVwV2FsbHMsIG5vZGUpO1xyXG4gICAgICAgICAgICAgICAgLy8gY29uc29sZS5sb2coXCLnorDliLDkuIrovrnnvJjnu5Pmnpw6XCIscmVzdWx0KTtcclxuICAgICAgICAgICAgICAgIGlmIChyZXN1bHQpIHtcclxuXHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5ibG9ja051bSAtPSAxO1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuc3BlY2lhbF9UcmVhdG1lbnQobm9kZSk7XHJcbiAgICAgICAgICAgICAgICAgICAgamcgPSAwO1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuY3JlYXRlUGFydGljbGUobm9kZSwgamcpO1xyXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBqZztcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKHB6ID09IDApIGpnID0gLTE7XHJcbiAgICAgICAgLy8gY29uc3QgZGF0ZTEwID0gbmV3IERhdGUoKS5nZXRUaW1lKCk7XHJcbiAgICAgICAgLy8gY29uc29sZS5sb2coXCLmiYDmnInmo4DmtYvnu5PmnZ/ogJfml7ZcIixkYXRlMTAsamcpO1xyXG4gICAgICAgIHJldHVybiBqZztcclxuICAgIH1cclxuXHJcbiAgICBjaGFuZ2VTdGF0ZSgpIHtcclxuICAgICAgICBpZiAodGhpcy5vcGVuV2FsbC5sZW5ndGggIT0gMCkge1xyXG4gICAgICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRoaXMub3BlbldhbGwubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICAgICAgICAgIHRoaXMub3BlbldhbGxbaV0uZ2V0Q2hpbGRCeU5hbWUoXCJ3YWxsXCIpLmdldENvbXBvbmVudChcIldhbGxcIikuY2hhbmdlTG9jaygpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBpZiAodGhpcy5mcmVlemVXYWxsLmxlbmd0aCAhPSAwKSB7XHJcbiAgICAgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdGhpcy5mcmVlemVXYWxsLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmZyZWV6ZVdhbGxbaV0uZ2V0Q2hpbGRCeU5hbWUoXCJ3YWxsXCIpLmdldENvbXBvbmVudChcIldhbGxcIikuY2hhbmdlRnJlZXplKCk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgLy/mo4DmtYvmmK/lkKblj6/ku6XpgJrov4fpl6hcclxuICAgIHBhc3NXYWxsKGpnLCB3YWxsQXJyYXksIG5vZGUpIHtcclxuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHdhbGxBcnJheS5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgICAgICBpZiAod2FsbEFycmF5W2ldLmdldENvbXBvbmVudChcIldhbGxcIikuc3BlY2lhbCA9PSAyKSB7XHJcbiAgICAgICAgICAgICAgICBjb25zb2xlLmxvZyhcIuWwneivlemAmui/h+W8gOWFs+mXqDpcIiwgd2FsbEFycmF5W2ldLmdldENvbXBvbmVudChcIldhbGxcIikub3Blbik7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgaWYgKHdhbGxBcnJheVtpXS5nZXRDb21wb25lbnQoXCJXYWxsXCIpLnNwZWNpYWwgPT0gMiAmJiB3YWxsQXJyYXlbaV0uZ2V0Q29tcG9uZW50KFwiV2FsbFwiKS5vcGVuID09IGZhbHNlKSB7XHJcbiAgICAgICAgICAgICAgICBqZyA9IGZhbHNlO1xyXG4gICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgLy9jb25zb2xlLmxvZyh3YWxsQXJyYXlbaV0uZ2V0Q2hpbGRCeU5hbWUoXCJ3YWxsXCIpLmdldENvbXBvbmVudChcIldhbGxcIikuY29sb3Isbm9kZS5nZXRDb21wb25lbnQoXCJCbG9ja1wiKS5jb2xvcilcclxuICAgICAgICAgICAgaWYgKHdhbGxBcnJheVtpXS5nZXRDb21wb25lbnQoXCJXYWxsXCIpLmNvbG9yICE9IG5vZGUuZ2V0Q29tcG9uZW50KFwiQmxvY2tcIikuY29sb3IpIHtcclxuXHJcbiAgICAgICAgICAgICAgICBqZyA9IGZhbHNlO1xyXG4gICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgaWYgKG5vZGUuZ2V0Q29tcG9uZW50KFwiQmxvY2tcIikudHlwZSA9PSA1KSB7XHJcbiAgICAgICAgICAgICAgICBpZiAod2FsbEFycmF5W2ldLmdldENvbXBvbmVudChcIldhbGxcIikuc3BlY2lhbCAhPSAxKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgamcgPSBmYWxzZTtcclxuICAgICAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAoamcgPT0gdHJ1ZSAmJiBub2RlLmdldENvbXBvbmVudChcIkJsb2NrXCIpLnR5cGUgPT0gNSkge1xyXG4gICAgICAgICAgICBmb3IgKGxldCBqID0gMDsgaiA8IHdhbGxBcnJheS5sZW5ndGg7IGorKykge1xyXG4gICAgICAgICAgICAgICAgaWYgKHdhbGxBcnJheVtqXS5nZXRDb21wb25lbnQoXCJXYWxsXCIpLnNwZWNpYWwgPT0gMSAmJiB3YWxsQXJyYXlbal0uZ2V0Q29tcG9uZW50KFwiV2FsbFwiKS53YWxsX0luZm8ubGVuZ3RoICE9IDApIHtcclxuICAgICAgICAgICAgICAgICAgICB3YWxsQXJyYXlbal0uZ2V0Q29tcG9uZW50KFwiV2FsbFwiKS5wbGF5U3RhckRvb3IoKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICAvLyBjb25zdCBkYXRlOCA9IG5ldyBEYXRlKCkuZ2V0VGltZSgpO1xyXG4gICAgICAgIC8vIGNvbnNvbGUubG9nKFwi5qOA5rWL6aKc6Imy5piv5ZCm6IO95aSf6YCa6L+H6ZeoXCIsZGF0ZTgpO1xyXG4gICAgICAgIHJldHVybiBqZztcclxuICAgIH1cclxuXHJcbiAgICAvL+ajgOa1i+aWueWdl+WSjOmXqOS4remXtOacieayoeacieWkueadguWFtuS7luWdl1xyXG4gICAgZGV0ZWN0aW5nQmxvY2soZGlyZWN0aW9uLCBwb3NYLCBwb3NZLCBibG9ja3MpIHtcclxuICAgICAgICBsZXQgamcgPSB0cnVlO1xyXG4gICAgICAgIGxldCBpZCA9IFwiXCI7XHJcbiAgICAgICAgaWYgKGJsb2Nrcy5sZW5ndGggPiAwKSB7XHJcbiAgICAgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgYmxvY2tzLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgICAgICAgICBsZXQgcG9zID0gYmxvY2tzW2ldO1xyXG4gICAgICAgICAgICAgICAgbGV0IHggPSBwb3MueDtcclxuICAgICAgICAgICAgICAgIGxldCB5ID0gcG9zLnk7XHJcbiAgICAgICAgICAgICAgICBpZCA9IHRoaXMubWFwQmxvY2tzV2FsbFt4XVt5XS5nZXRDb21wb25lbnQoXCJNYXBCbG9ja1wiKS5ibG9ja19JZDtcclxuICAgICAgICAgICAgICAgIGpnID0gdGhpcy5jaGVja0FsbERpcmVjdGlvbnMoaWQsIGRpcmVjdGlvbiwgeCwgeSk7XHJcbiAgICAgICAgICAgICAgICBpZiAoIWpnKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgLy8gY29uc29sZS5sb2coXCLmlrnlkJHmo4DmtYvmsqHov4dcIik7XHJcbiAgICAgICAgICAgICAgICAgICAgaSA9IDEwMDAwMDA7XHJcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGpnO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIC8vIGNvbnN0IGRhdGU3ID0gbmV3IERhdGUoKS5nZXRUaW1lKCk7XHJcbiAgICAgICAgLy8gY29uc29sZS5sb2coXCLmlrnlkJHmo4DmtYvpgJrov4dcIixkYXRlNyxqZyk7XHJcbiAgICAgICAgcmV0dXJuIGpnO1xyXG4gICAgfVxyXG5cclxuICAgIC8v5qOA5rWL54mp5L2T5ZCE5pa55ZCR5piv5ZCm5pyJ5Yir55qE54mp5Z2X77yM6Ziy5q2i56Kw5Yiw5aKZ5aOB5LqG5L2G5piv5piv5Ye55Ye45b2i54q277yM5aKZ5LiO5Z2X5LmL6Ze05pyJ6Zi75oyh54mp5Z2XXHJcbiAgICBjaGVja0FsbERpcmVjdGlvbnMoaWQsIGRpcmVjdGlvbiwgeCwgeSkge1xyXG4gICAgICAgIGxldCBqZyA9IHRydWU7XHJcblxyXG4gICAgICAgIGlmIChkaXJlY3Rpb24gPT0gXCJsZWZ0XCIpIHtcclxuICAgICAgICAgICAgaWYgKHRoaXMubWFwQmxvY2tzV2FsbFt4IC0gMV1beV0uZ2V0Q29tcG9uZW50KFwiTWFwQmxvY2tcIikuYmxvY2tfSWQgIT0gXCJcIiAmJiB0aGlzLm1hcEJsb2Nrc1dhbGxbeCAtIDFdW3ldLmdldENvbXBvbmVudChcIk1hcEJsb2NrXCIpLmJsb2NrX0lkICE9IFwiV2FsbFwiXHJcbiAgICAgICAgICAgICAgICAmJiB0aGlzLm1hcEJsb2Nrc1dhbGxbeCAtIDFdW3ldLmdldENvbXBvbmVudChcIk1hcEJsb2NrXCIpLmJsb2NrX0lkICE9IGlkKSB7XHJcbiAgICAgICAgICAgICAgICAvLyBjb25zb2xlLmxvZyhcIuW3puS+p+acieeJqeS9k1wiKVxyXG4gICAgICAgICAgICAgICAgamcgPSBmYWxzZTtcclxuICAgICAgICAgICAgICAgIHJldHVybiBqZztcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBpZiAodGhpcy5tYXBCbG9ja3NXYWxsW3ggLSAxXVt5XS5vcGFjaXR5ID09IDI0OSkge1xyXG4gICAgICAgICAgICAgICAgamcgPSBmYWxzZTtcclxuICAgICAgICAgICAgICAgIHJldHVybiBqZztcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBpZiAoKHggLSAyKSA+PSAwKSB7XHJcbiAgICAgICAgICAgICAgICBpZiAodGhpcy5tYXBCbG9ja3NXYWxsW3ggLSAyXVt5XS5nZXRDb21wb25lbnQoXCJNYXBCbG9ja1wiKS5ibG9ja19JZCAhPSBcIlwiICYmIHRoaXMubWFwQmxvY2tzV2FsbFt4IC0gMl1beV0uZ2V0Q29tcG9uZW50KFwiTWFwQmxvY2tcIikuYmxvY2tfSWQgIT0gXCJXYWxsXCJcclxuICAgICAgICAgICAgICAgICAgICAmJiB0aGlzLm1hcEJsb2Nrc1dhbGxbeCAtIDJdW3ldLmdldENvbXBvbmVudChcIk1hcEJsb2NrXCIpLmJsb2NrX0lkICE9IGlkKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgLy8gY29uc29sZS5sb2coXCLlt6bkvqfmnInniankvZNcIilcclxuICAgICAgICAgICAgICAgICAgICBqZyA9IGZhbHNlO1xyXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBqZztcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIGlmICh0aGlzLm1hcEJsb2Nrc1dhbGxbeCAtIDJdW3ldLm9wYWNpdHkgPT0gMjQ5KSB7XHJcbiAgICAgICAgICAgICAgICAgICAgamcgPSBmYWxzZTtcclxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gamc7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSBpZiAoZGlyZWN0aW9uID09IFwicmlnaHRcIikge1xyXG4gICAgICAgICAgICBpZiAodGhpcy5tYXBCbG9ja3NXYWxsW3ggKyAxXVt5XS5nZXRDb21wb25lbnQoXCJNYXBCbG9ja1wiKS5ibG9ja19JZCAhPSBcIlwiICYmIHRoaXMubWFwQmxvY2tzV2FsbFt4ICsgMV1beV0uZ2V0Q29tcG9uZW50KFwiTWFwQmxvY2tcIikuYmxvY2tfSWQgIT0gXCJXYWxsXCJcclxuICAgICAgICAgICAgICAgICYmIHRoaXMubWFwQmxvY2tzV2FsbFt4ICsgMV1beV0uZ2V0Q29tcG9uZW50KFwiTWFwQmxvY2tcIikuYmxvY2tfSWQgIT0gaWQpIHtcclxuICAgICAgICAgICAgICAgIC8vIGNvbnNvbGUubG9nKFwi5Y+z5L6n5pyJ54mp5L2TXCIpXHJcbiAgICAgICAgICAgICAgICBqZyA9IGZhbHNlO1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIGpnO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGlmICh0aGlzLm1hcEJsb2Nrc1dhbGxbeCArIDFdW3ldLm9wYWNpdHkgPT0gMjQ5KSB7XHJcbiAgICAgICAgICAgICAgICBqZyA9IGZhbHNlO1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIGpnO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGlmICgoeCArIDIpIDw9IHRoaXMubWFwQmxvY2tzV2FsbC5sZW5ndGggLSAxKSB7XHJcbiAgICAgICAgICAgICAgICBpZiAodGhpcy5tYXBCbG9ja3NXYWxsW3ggKyAyXVt5XS5nZXRDb21wb25lbnQoXCJNYXBCbG9ja1wiKS5ibG9ja19JZCAhPSBcIlwiICYmIHRoaXMubWFwQmxvY2tzV2FsbFt4ICsgMl1beV0uZ2V0Q29tcG9uZW50KFwiTWFwQmxvY2tcIikuYmxvY2tfSWQgIT0gXCJXYWxsXCJcclxuICAgICAgICAgICAgICAgICAgICAmJiB0aGlzLm1hcEJsb2Nrc1dhbGxbeCArIDJdW3ldLmdldENvbXBvbmVudChcIk1hcEJsb2NrXCIpLmJsb2NrX0lkICE9IGlkKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgLy8gY29uc29sZS5sb2coXCLlj7PkvqfmnInniankvZNcIilcclxuICAgICAgICAgICAgICAgICAgICBqZyA9IGZhbHNlO1xyXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBqZztcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIGlmICh0aGlzLm1hcEJsb2Nrc1dhbGxbeCArIDJdW3ldLm9wYWNpdHkgPT0gMjQ5KSB7XHJcbiAgICAgICAgICAgICAgICAgICAgamcgPSBmYWxzZTtcclxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gamc7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKGRpcmVjdGlvbiA9PSBcInVwXCIpIHtcclxuICAgICAgICAgICAgaWYgKHRoaXMubWFwQmxvY2tzV2FsbFt4XVt5ICsgMV0uZ2V0Q29tcG9uZW50KFwiTWFwQmxvY2tcIikuYmxvY2tfSWQgIT0gXCJcIiAmJiB0aGlzLm1hcEJsb2Nrc1dhbGxbeF1beSArIDFdLmdldENvbXBvbmVudChcIk1hcEJsb2NrXCIpLmJsb2NrX0lkICE9IFwiV2FsbFwiXHJcbiAgICAgICAgICAgICAgICAmJiB0aGlzLm1hcEJsb2Nrc1dhbGxbeF1beSArIDFdLmdldENvbXBvbmVudChcIk1hcEJsb2NrXCIpLmJsb2NrX0lkICE9IGlkKSB7XHJcbiAgICAgICAgICAgICAgICAvLyBjb25zb2xlLmxvZyhcIuS4iuS+p+acieeJqeS9k1wiKVxyXG4gICAgICAgICAgICAgICAgamcgPSBmYWxzZTtcclxuICAgICAgICAgICAgICAgIHJldHVybiBqZztcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBpZiAodGhpcy5tYXBCbG9ja3NXYWxsW3hdW3kgKyAxXS5vcGFjaXR5ID09IDI0OSkge1xyXG4gICAgICAgICAgICAgICAgamcgPSBmYWxzZTtcclxuICAgICAgICAgICAgICAgIHJldHVybiBqZztcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBpZiAoKHkgKyAyKSA8PSB0aGlzLm1hcEJsb2Nrc1dhbGxbeF0ubGVuZ3RoIC0gMSkge1xyXG4gICAgICAgICAgICAgICAgaWYgKHRoaXMubWFwQmxvY2tzV2FsbFt4XVt5ICsgMl0uZ2V0Q29tcG9uZW50KFwiTWFwQmxvY2tcIikuYmxvY2tfSWQgIT0gXCJcIiAmJiB0aGlzLm1hcEJsb2Nrc1dhbGxbeF1beSArIDJdLmdldENvbXBvbmVudChcIk1hcEJsb2NrXCIpLmJsb2NrX0lkICE9IFwiV2FsbFwiXHJcbiAgICAgICAgICAgICAgICAgICAgJiYgdGhpcy5tYXBCbG9ja3NXYWxsW3hdW3kgKyAyXS5nZXRDb21wb25lbnQoXCJNYXBCbG9ja1wiKS5ibG9ja19JZCAhPSBpZCkge1xyXG4gICAgICAgICAgICAgICAgICAgIC8vIGNvbnNvbGUubG9nKFwi5LiK5L6n5pyJ54mp5L2TXCIpXHJcbiAgICAgICAgICAgICAgICAgICAgamcgPSBmYWxzZTtcclxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gamc7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBpZiAodGhpcy5tYXBCbG9ja3NXYWxsW3hdW3kgKyAyXS5vcGFjaXR5ID09IDI0OSkge1xyXG4gICAgICAgICAgICAgICAgICAgIGpnID0gZmFsc2U7XHJcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGpnO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmIChkaXJlY3Rpb24gPT0gXCJkb3duXCIpIHtcclxuICAgICAgICAgICAgaWYgKHRoaXMubWFwQmxvY2tzV2FsbFt4XVt5IC0gMV0uZ2V0Q29tcG9uZW50KFwiTWFwQmxvY2tcIikuYmxvY2tfSWQgIT0gXCJcIiAmJiB0aGlzLm1hcEJsb2Nrc1dhbGxbeF1beSAtIDFdLmdldENvbXBvbmVudChcIk1hcEJsb2NrXCIpLmJsb2NrX0lkICE9IFwiV2FsbFwiXHJcbiAgICAgICAgICAgICAgICAmJiB0aGlzLm1hcEJsb2Nrc1dhbGxbeF1beSAtIDFdLmdldENvbXBvbmVudChcIk1hcEJsb2NrXCIpLmJsb2NrX0lkICE9IGlkKSB7XHJcbiAgICAgICAgICAgICAgICAvLyBjb25zb2xlLmxvZyhcIuS4i+S+p+acieeJqeS9k1wiKVxyXG4gICAgICAgICAgICAgICAgamcgPSBmYWxzZTtcclxuICAgICAgICAgICAgICAgIHJldHVybiBqZztcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBpZiAodGhpcy5tYXBCbG9ja3NXYWxsW3hdW3kgLSAxXS5vcGFjaXR5ID09IDI0OSkge1xyXG4gICAgICAgICAgICAgICAgamcgPSBmYWxzZTtcclxuICAgICAgICAgICAgICAgIHJldHVybiBqZztcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBpZiAoKHkgLSAyKSA+PSAwKSB7XHJcbiAgICAgICAgICAgICAgICBpZiAodGhpcy5tYXBCbG9ja3NXYWxsW3hdW3kgLSAyXS5nZXRDb21wb25lbnQoXCJNYXBCbG9ja1wiKS5ibG9ja19JZCAhPSBcIlwiICYmIHRoaXMubWFwQmxvY2tzV2FsbFt4XVt5IC0gMl0uZ2V0Q29tcG9uZW50KFwiTWFwQmxvY2tcIikuYmxvY2tfSWQgIT0gXCJXYWxsXCJcclxuICAgICAgICAgICAgICAgICAgICAmJiB0aGlzLm1hcEJsb2Nrc1dhbGxbeF1beSAtIDJdLmdldENvbXBvbmVudChcIk1hcEJsb2NrXCIpLmJsb2NrX0lkICE9IGlkKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgLy8gY29uc29sZS5sb2coXCLkuIvkvqfmnInniankvZNcIilcclxuICAgICAgICAgICAgICAgICAgICBqZyA9IGZhbHNlO1xyXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBqZztcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIGlmICh0aGlzLm1hcEJsb2Nrc1dhbGxbeF1beSAtIDJdLm9wYWNpdHkgPT0gMjQ5KSB7XHJcbiAgICAgICAgICAgICAgICAgICAgamcgPSBmYWxzZTtcclxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gamc7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgLy8gY29uc29sZS5sb2coXCLmo4DmtYvniankvZPlkITmlrnlkJHmmK/lkKbmnInliKvnmoTnianlnZdcIixqZyk7XHJcbiAgICAgICAgcmV0dXJuIGpnO1xyXG4gICAgfVxyXG5cclxuICAgIGNoZWNrRGlyYWN0aW9uKGFsbEJsb2NrcywgbWF4WCwgbWF4WSkge1xyXG4gICAgICAgIGxldCBqZyA9IFtmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZV07XHJcbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBhbGxCbG9ja3MubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICAgICAgaWYgKGFsbEJsb2Nrc1tpXS54ID4gMCAmJiBqZ1swXSA9PSBmYWxzZSkge1xyXG4gICAgICAgICAgICAgICAgaWYgKHRoaXMubWFwQmxvY2tzV2FsbFthbGxCbG9ja3NbaV0ueCAtIDFdW2FsbEJsb2Nrc1tpXS55XS5vcGFjaXR5ID09IDI1MCkge1xyXG4gICAgICAgICAgICAgICAgICAgIGpnWzBdID0gdHJ1ZTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBpZiAoamdbMV0gPT0gZmFsc2UpIHtcclxuICAgICAgICAgICAgICAgIGlmICh0aGlzLm1hcEJsb2Nrc1dhbGxbYWxsQmxvY2tzW2ldLnggKyAxXVthbGxCbG9ja3NbaV0ueV0ub3BhY2l0eSA9PSAyNTApIHtcclxuICAgICAgICAgICAgICAgICAgICBqZ1sxXSA9IHRydWU7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgaWYgKGFsbEJsb2Nrc1tpXS55ID4gMCAmJiBqZ1syXSA9PSBmYWxzZSkge1xyXG4gICAgICAgICAgICAgICAgaWYgKHRoaXMubWFwQmxvY2tzV2FsbFthbGxCbG9ja3NbaV0ueF1bYWxsQmxvY2tzW2ldLnkgLSAxXS5vcGFjaXR5ID09IDI1MCkge1xyXG4gICAgICAgICAgICAgICAgICAgIGpnWzJdID0gdHJ1ZTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBpZiAoamdbM10gPT0gZmFsc2UpIHtcclxuICAgICAgICAgICAgICAgIGlmICh0aGlzLm1hcEJsb2Nrc1dhbGxbYWxsQmxvY2tzW2ldLnhdW2FsbEJsb2Nrc1tpXS55ICsgMV0ub3BhY2l0eSA9PSAyNTApIHtcclxuICAgICAgICAgICAgICAgICAgICBqZ1szXSA9IHRydWU7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIGpnO1xyXG4gICAgfVxyXG5cclxuICAgIGNoZWNrTGVmdChhbGxCbG9ja3MpIHtcclxuICAgICAgICBsZXQgamcgPSBmYWxzZTtcclxuICAgICAgICByZXR1cm4gamc7XHJcbiAgICB9XHJcblxyXG4gICAgY2hlY2tSaWdodChhbGxCbG9ja3MsIG1heCkge1xyXG4gICAgICAgIGxldCBqZyA9IGZhbHNlO1xyXG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgYWxsQmxvY2tzLmxlbmd0aDsgaSsrKSB7XHJcblxyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gamc7XHJcbiAgICB9XHJcblxyXG4gICAgY2hlY2tEb3duKGFsbEJsb2Nrcykge1xyXG4gICAgICAgIGxldCBqZyA9IGZhbHNlO1xyXG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgYWxsQmxvY2tzLmxlbmd0aDsgaSsrKSB7XHJcblxyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gamc7XHJcbiAgICB9XHJcblxyXG4gICAgY2hlY2tVcChhbGxCbG9ja3MsIG1heCkge1xyXG4gICAgICAgIGxldCBqZyA9IGZhbHNlO1xyXG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgYWxsQmxvY2tzLmxlbmd0aDsgaSsrKSB7XHJcblxyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gamc7XHJcbiAgICB9XHJcblxyXG5cclxuICAgIC8v54m55q6K5aSE55CG77yM5pa55Z2X5bim6YGT5YW35oiW6ICF6ZyA6KaB5raI6Zmk5Yaw5Z2XXHJcbiAgICBzcGVjaWFsX1RyZWF0bWVudChub2RlKSB7XHJcbiAgICAgICAgbGV0IGZyZWV6ZUJsb2NrID0gdGhpcy5ub2RlLmNoaWxkcmVuLmZpbHRlcihjaGlsZCA9PiB7XHJcbiAgICAgICAgICAgIGlmIChjaGlsZC5nZXRDb21wb25lbnQoXCJCbG9ja1wiKSkge1xyXG4gICAgICAgICAgICAgICAgaWYgKGNoaWxkLmdldENvbXBvbmVudChcIkJsb2NrXCIpLnR5cGUgPT0gNClcclxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gY2hpbGRcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH0pO1xyXG4gICAgICAgIGlmIChmcmVlemVCbG9jay5sZW5ndGggPiAwKSB7XHJcbiAgICAgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgZnJlZXplQmxvY2subGVuZ3RoOyBpKyspIHtcclxuICAgICAgICAgICAgICAgIGZyZWV6ZUJsb2NrW2ldLmdldENoaWxkQnlOYW1lKFwiZnJlZXplXCIpLmdldENvbXBvbmVudChcIkZyZWV6ZVwiKS5yZWR1Y2UoMSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGlmIChub2RlLmdldENvbXBvbmVudChcIkJsb2NrXCIpLnR5cGUgPT0gMiB8fCBub2RlLmdldENvbXBvbmVudChcIkJsb2NrXCIpLnR5cGUgPT0gNCkge1xyXG4gICAgICAgICAgICBsZXQgbG9ja0Jsb2NrID0gdGhpcy5ub2RlLmNoaWxkcmVuLmZpbHRlcihjaGlsZCA9PiB7XHJcbiAgICAgICAgICAgICAgICBpZiAoY2hpbGQuZ2V0Q29tcG9uZW50KFwiQmxvY2tcIikpIHtcclxuICAgICAgICAgICAgICAgICAgICBpZiAoY2hpbGQuZ2V0Q29tcG9uZW50KFwiQmxvY2tcIikudHlwZSA9PSAzKVxyXG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gY2hpbGRcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgIGlmIChsb2NrQmxvY2subGVuZ3RoID4gMClcclxuICAgICAgICAgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgbG9ja0Jsb2NrLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgbG9ja0Jsb2NrW2ldLmdldENoaWxkQnlOYW1lKFwibG9ja1wiKS5nZXRDb21wb25lbnQoXCJMb2NrXCIpLnJlZHVjZSgpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdGhpcy5ibG9ja3MubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICAgICAgaWYgKHRoaXMuYmxvY2tzW2ldID09IG5vZGUpIHtcclxuICAgICAgICAgICAgICAgIHRoaXMuYmxvY2tzLnNwbGljZShpLCAxKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuXHJcbiAgICB9XHJcblxyXG4gICAgLy/liKTmlq3muLjmiI/miJDlip/kuIvkuIDlhbNcclxuICAgIG5leHRMZXZlbCgpIHtcclxuICAgICAgICB0aGlzLnBhdXNlID0gZmFsc2U7XHJcbiAgICAgICAgdGhpcy5vcGVuSWNlKCk7XHJcblxyXG4gICAgICAgIHRoaXMuYmxvY2tOdW0gPSB0aGlzLmJsb2Nrcy5sZW5ndGg7XHJcblxyXG4gICAgICAgIGlmICh0aGlzLmJsb2NrTnVtID09IDAgJiYgIXRoaXMuZ2FtZVdpbiAmJiAhdGhpcy5nYW1lT3Zlcikge1xyXG4gICAgICAgICAgICAvLyBhbGVydChcIua4uOaIj+aIkOWKn1wiKTtcclxuICAgICAgICAgICAgdGhpcy5nYW1lV2luID0gdHJ1ZTtcclxuXHJcbiAgICAgICAgICAgIHRoaXMuc3RvcFRpbWVDdXREb3duKCk7XHJcbiAgICAgICAgICAgIC8vIGNvbnNvbGUubG9nKFwi5oiQ5Yqf5raI6Zmk5LiA5LiqXCIpO1xyXG4gICAgICAgICAgICBjYy5meC5HYW1lVG9vbC5jaGFuZ2VDb2luKDQwKTtcclxuICAgICAgICAgICAgY2MuZnguR2FtZVRvb2wuYWRkTGV2ZWwodGhpcy5jb3VudF9UaW1lLCB0aGlzLmFkZF9UaW1lKTtcclxuXHJcbiAgICAgICAgICAgIHRoaXMuY2hlY2tfTmV3TW9kZSgpO1xyXG4gICAgICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgICAgICAgICAgIHRoaXMubm9kZS5wYXJlbnQucGFyZW50LmdldENoaWxkQnlOYW1lKFwiV2luXCIpLmFjdGl2ZSA9IHRydWU7XHJcbiAgICAgICAgICAgIH0sIDY2MCk7XHJcbiAgICAgICAgICAgIC8vIGNvbnNvbGUubG9nKFwi5ri45oiP5oiQ5YqfXCIpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgaWYgKHRoaXMuZ2FtZU92ZXIgPT0gdHJ1ZSkge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5mYWlsTGV2ZWwobnVsbCk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgY2hlY2tfTmV3TW9kZSgpIHtcclxuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGNjLmZ4LkdhbWVDb25maWcuTkVXX0xFVkVMLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgICAgIGlmICgoY2MuZnguR2FtZUNvbmZpZy5HTV9JTkZPLmxldmVsICsgMSkgPT0gY2MuZnguR2FtZUNvbmZpZy5ORVdfTEVWRUxbaV0ubGV2ZWwpIHtcclxuICAgICAgICAgICAgICAgIHRoaXMubmV3X21vZGUgPSAzO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHdpbkxldmVsKCkge1xyXG4gICAgICAgIGNjLmZ4LkF1ZGlvTWFuYWdlci5faW5zdGFuY2UucGxheUVmZmVjdChcImFubml1X0JpZ1wiLCBudWxsKTtcclxuICAgICAgICBpZiAoY2MuZnguR2FtZUNvbmZpZy5HTV9JTkZPLmxldmVsID4gMTU2KSB7XHJcbiAgICAgICAgICAgIGNjLmZ4LkdhbWVDb25maWcuR01fSU5GTy5sZXZlbCA9IDE1NjtcclxuICAgICAgICAgICAgLy8gTWFwQ29ucm9sZXIuX2luc3RhbmNlID0gbnVsbDtcclxuXHJcbiAgICAgICAgICAgIGlmICh0aGlzLm5ld19tb2RlID09IDMpIHtcclxuICAgICAgICAgICAgICAgIHRoaXMubm9kZS5wYXJlbnQucGFyZW50LmdldENoaWxkQnlOYW1lKFwiV2luXCIpLmFjdGl2ZSA9IGZhbHNlO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5vcGVuTmV3TW9kZSgyKTtcclxuICAgICAgICAgICAgICAgIGNjLmZ4LkdhbWVDb25maWcuTEVWRUxfSU5GT19pbml0KGZhbHNlLCAwKTtcclxuICAgICAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAvLyBjYy5meC5HYW1lQ29uZmlnLkxFVkVMX0lORk9faW5pdCh0cnVlKTtcclxuICAgICAgICAgICAgY2MuZnguQXVkaW9NYW5hZ2VyLl9pbnN0YW5jZS5wbGF5RWZmZWN0KFwiemh1YW4xXCIsIG51bGwpO1xyXG4gICAgICAgICAgICB0aGlzLm5vZGUucGFyZW50LnBhcmVudC5wYXJlbnQuZ2V0Q2hpbGRCeU5hbWUoXCJ6aHVhbmNoYW5nXCIpLmFjdGl2ZSA9IHRydWU7XHJcbiAgICAgICAgICAgIHRoaXMubm9kZS5wYXJlbnQucGFyZW50LnBhcmVudC5nZXRDaGlsZEJ5TmFtZShcInpodWFuY2hhbmdcIikuZ2V0Q29tcG9uZW50KHNwLlNrZWxldG9uKS5zZXRBbmltYXRpb24oMSwgXCJ1cFwiLCBmYWxzZSk7XHJcbiAgICAgICAgICAgIC8vIHRoaXMubm9kZS5wYXJlbnQucGFyZW50LnBhcmVudC5nZXRDaGlsZEJ5TmFtZShcInpodWFuY2hhbmdcIikuZ2V0Q29tcG9uZW50KHNwLlNrZWxldG9uKS5zZXRDb21wbGV0ZUxpc3RlbmVyKChlbnRyeSkgPT4ge1xyXG4gICAgICAgICAgICAvLyAgICAgaWYgKGVudHJ5LmFuaW1hdGlvbi5uYW1lID09PSBcInVwXCIpIHtcclxuICAgICAgICAgICAgLy8gICAgICAgICAvLyDliqjnlLvmkq3mlL7nu5PmnZ/lkI7miafooYznmoTpgLvovpFcclxuICAgICAgICAgICAgLy8gICAgICAgICB0aGlzLm5vZGUucGFyZW50LnBhcmVudC5wYXJlbnQuZ2V0Q2hpbGRCeU5hbWUoXCJ6aHVhbmNoYW5nXCIpLmFjdGl2ZSA9IGZhbHNlO1xyXG4gICAgICAgICAgICAvLyAgICAgfVxyXG4gICAgICAgICAgICAvLyB9KTtcclxuXHJcbiAgICAgICAgICAgIGNjLmRpcmVjdG9yLnByZWxvYWRTY2VuZShcIkhvbWVTY2VuZVwiLCAoZXJyLCBhc3NldCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgaWYgKGVycikge1xyXG4gICAgICAgICAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoJ+WKqOaAgeWKoOi9vSBQcmVmYWIg5aSx6LSlOicsIGVycik7XHJcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgICAgICAgICAgICBjYy5kaXJlY3Rvci5sb2FkU2NlbmUoXCJIb21lU2NlbmVcIik7XHJcbiAgICAgICAgICAgIH0sIDEyMDApO1xyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIHtcclxuXHJcbiAgICAgICAgICAgIC8vIGNvbnNvbGUubG9nKFwi5LiL5LiA5YWzXCIpO1xyXG4gICAgICAgICAgICAvLyBNYXBDb25yb2xlci5faW5zdGFuY2UgPSBudWxsO1xyXG5cclxuICAgICAgICAgICAgaWYgKHRoaXMubmV3X21vZGUgPT0gMykge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5ub2RlLnBhcmVudC5wYXJlbnQuZ2V0Q2hpbGRCeU5hbWUoXCJXaW5cIikuYWN0aXZlID0gZmFsc2U7XHJcbiAgICAgICAgICAgICAgICB0aGlzLm9wZW5OZXdNb2RlKDIpO1xyXG4gICAgICAgICAgICAgICAgY2MuZnguR2FtZUNvbmZpZy5MRVZFTF9JTkZPX2luaXQoZmFsc2UsIDApO1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGNjLmZ4LkF1ZGlvTWFuYWdlci5faW5zdGFuY2UucGxheUVmZmVjdChcInpodWFuMVwiLCBudWxsKTtcclxuICAgICAgICAgICAgdGhpcy5ub2RlLnBhcmVudC5wYXJlbnQucGFyZW50LmdldENoaWxkQnlOYW1lKFwiemh1YW5jaGFuZ1wiKS5hY3RpdmUgPSB0cnVlO1xyXG4gICAgICAgICAgICB0aGlzLm5vZGUucGFyZW50LnBhcmVudC5wYXJlbnQuZ2V0Q2hpbGRCeU5hbWUoXCJ6aHVhbmNoYW5nXCIpLmdldENvbXBvbmVudChzcC5Ta2VsZXRvbikuc2V0QW5pbWF0aW9uKDEsIFwidXBcIiwgZmFsc2UpO1xyXG4gICAgICAgICAgICAvLyB0aGlzLm5vZGUucGFyZW50LnBhcmVudC5wYXJlbnQuZ2V0Q2hpbGRCeU5hbWUoXCJ6aHVhbmNoYW5nXCIpLmdldENvbXBvbmVudChzcC5Ta2VsZXRvbikuc2V0Q29tcGxldGVMaXN0ZW5lcigoZW50cnkpID0+IHtcclxuICAgICAgICAgICAgLy8gICAgIGlmIChlbnRyeS5hbmltYXRpb24ubmFtZSA9PT0gXCJ1cFwiKSB7XHJcbiAgICAgICAgICAgIC8vICAgICAgICAgLy8g5Yqo55S75pKt5pS+57uT5p2f5ZCO5omn6KGM55qE6YC76L6RXHJcbiAgICAgICAgICAgIC8vICAgICAgICAgdGhpcy5ub2RlLnBhcmVudC5wYXJlbnQucGFyZW50LmdldENoaWxkQnlOYW1lKFwiemh1YW5jaGFuZ1wiKS5hY3RpdmUgPSBmYWxzZTtcclxuICAgICAgICAgICAgLy8gICAgIH1cclxuICAgICAgICAgICAgLy8gfSk7XHJcbiAgICAgICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgY2MuZnguR2FtZUNvbmZpZy5MRVZFTF9JTkZPX2luaXQodHJ1ZSwgMCk7XHJcbiAgICAgICAgICAgIH0sIDEyMDApO1xyXG5cclxuICAgICAgICAgICAgLy8gdGhpcy5ub2RlLnBhcmVudC5wYXJlbnQucGFyZW50LmRlc3Ryb3koKTtcclxuXHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIGFnYWluTGV2ZWwoKSB7XHJcbiAgICAgICAgY2MuZnguQXVkaW9NYW5hZ2VyLl9pbnN0YW5jZS5wbGF5RWZmZWN0KFwiYW5uaXVfQmlnXCIsIG51bGwpO1xyXG4gICAgICAgIGlmIChjYy5meC5HYW1lQ29uZmlnLkdNX0lORk8uaHAgPCAxKSB7XHJcbiAgICAgICAgICAgIE1pbmlHYW1lU2RrLkFQSS5zaG93VG9hc3QoXCLkvZPlipvlgLzkuI3otrNcIik7XHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKCF0aGlzLmFnYWluQ2FuVG91Y2gpIHJldHVybjtcclxuXHJcbiAgICAgICAgdGhpcy5hZ2FpbkNhblRvdWNoID0gZmFsc2U7XHJcblxyXG4gICAgICAgIC8vIE1hcENvbnJvbGVyLl9pbnN0YW5jZSA9IG51bGw7XHJcbiAgICAgICAgY2MuZnguQXVkaW9NYW5hZ2VyLl9pbnN0YW5jZS5wbGF5RWZmZWN0KFwiemh1YW4xXCIsIG51bGwpO1xyXG4gICAgICAgIHRoaXMubm9kZS5wYXJlbnQucGFyZW50LnBhcmVudC5nZXRDaGlsZEJ5TmFtZShcInpodWFuY2hhbmdcIikuYWN0aXZlID0gdHJ1ZTtcclxuICAgICAgICB0aGlzLm5vZGUucGFyZW50LnBhcmVudC5wYXJlbnQuZ2V0Q2hpbGRCeU5hbWUoXCJ6aHVhbmNoYW5nXCIpLmdldENvbXBvbmVudChzcC5Ta2VsZXRvbikuc2V0QW5pbWF0aW9uKDEsIFwidXBcIiwgZmFsc2UpO1xyXG4gICAgICAgIC8vIHRoaXMubm9kZS5wYXJlbnQucGFyZW50LnBhcmVudC5nZXRDaGlsZEJ5TmFtZShcInpodWFuY2hhbmdcIikuZ2V0Q29tcG9uZW50KHNwLlNrZWxldG9uKS5zZXRDb21wbGV0ZUxpc3RlbmVyKChlbnRyeSkgPT4ge1xyXG4gICAgICAgIC8vICAgICBpZiAoZW50cnkuYW5pbWF0aW9uLm5hbWUgPT09IFwidXBcIikge1xyXG4gICAgICAgIC8vICAgICAgICAgLy8g5Yqo55S75pKt5pS+57uT5p2f5ZCO5omn6KGM55qE6YC76L6RXHJcbiAgICAgICAgLy8gICAgICAgICB0aGlzLm5vZGUucGFyZW50LnBhcmVudC5wYXJlbnQuZ2V0Q2hpbGRCeU5hbWUoXCJ6aHVhbmNoYW5nXCIpLmFjdGl2ZSA9IGZhbHNlO1xyXG4gICAgICAgIC8vICAgICB9XHJcbiAgICAgICAgLy8gfSk7XHJcbiAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgICAgICAgIGNjLmZ4LkdhbWVDb25maWcuTEVWRUxfSU5GT19pbml0KHRydWUsIDApO1xyXG4gICAgICAgIH0sIDEyMDApO1xyXG4gICAgICAgIC8vIHRoaXMubm9kZS5wYXJlbnQucGFyZW50LnBhcmVudC5kZXN0cm95KCk7XHJcbiAgICB9XHJcblxyXG4gICAgcmV2aWV3TGV2ZWwoKSB7XHJcbiAgICAgICAgY2MuZnguQXVkaW9NYW5hZ2VyLl9pbnN0YW5jZS5wbGF5RWZmZWN0KFwiYW5uaXVfQmlnXCIsIG51bGwpO1xyXG4gICAgICAgIGxldCBjb2luID0gOTAwO1xyXG4gICAgICAgIGlmIChjYy5meC5HYW1lQ29uZmlnLkdNX0lORk8ucmV2aWV3ID09IDEpIGNvaW4gPSAxOTAwO1xyXG4gICAgICAgIGVsc2UgaWYgKGNjLmZ4LkdhbWVDb25maWcuR01fSU5GTy5yZXZpZXcgPT0gMikgY29pbiA9IDI1MDA7XHJcbiAgICAgICAgLy8gY29uc29sZS5sb2coXCLoh6rouqvph5HluIE6XCIsY2MuZnguR2FtZUNvbmZpZy5HTV9JTkZPLmNvaW4sXCLmtojogJfph5HluIE6XCIsY29pbik7XHJcbiAgICAgICAgaWYgKGNjLmZ4LkdhbWVDb25maWcuR01fSU5GTy5jb2luIDwgTWF0aC5hYnMoY29pbikpIHtcclxuICAgICAgICAgICAgTWluaUdhbWVTZGsuQVBJLnNob3dUb2FzdChcIumHkeW4geS4jei2s++8jOaXoOazleWKoOaXtumXtFwiKTtcclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgdGhpcy5ydW5SZXdpdmUoLWNvaW4pO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBydW5SZXdpdmUoZGF0YSkge1xyXG4gICAgICAgIGNvbnNvbGUubG9nKFwi5aSN5rS75Zue6LCD5Ye95pWw5YaFXCIsIGRhdGEpO1xyXG4gICAgICAgIGNjLmZ4LkdhbWVUb29sLmNoYW5nZUNvaW4oZGF0YSk7XHJcbiAgICAgICAgTWluaUdhbWVTZGsuQVBJLnNob3dUb2FzdChcIue7p+e7rea4uOaIj1wiKTtcclxuXHJcbiAgICAgICAgaWYgKGNjLmZ4LkdhbWVDb25maWcuR01fSU5GTy5yZXZpZXcgPCAyKVxyXG4gICAgICAgICAgICBjYy5meC5HYW1lQ29uZmlnLkdNX0lORk8ucmV2aWV3ICs9IDE7XHJcblxyXG4gICAgICAgIHRoaXMuZ2FtZU92ZXIgPSBmYWxzZTtcclxuICAgICAgICB0aGlzLnRpbWVOdW1iZXIgPSAyMTtcclxuICAgICAgICB0aGlzLmFkZF9UaW1lICs9IDIwO1xyXG4gICAgICAgIHRoaXMucGF1c2UgPSBmYWxzZTtcclxuICAgICAgICB0aGlzLm5vZGUucGFyZW50LnBhcmVudC5nZXRDaGlsZEJ5TmFtZShcIkxvc2VcIikuYWN0aXZlID0gZmFsc2U7XHJcbiAgICAgICAgdGhpcy5zdGFydFRpbWVDdXREb3duKCk7XHJcbiAgICB9XHJcblxyXG5cclxuXHJcbiAgICBob21lQnRuKCkge1xyXG4gICAgICAgIC8vIGFsZXJ0KFwi5ri45oiP5aSx6LSlXCIpO1xyXG4gICAgICAgIGNjLmZ4LkF1ZGlvTWFuYWdlci5faW5zdGFuY2UucGxheUVmZmVjdChcImFubml1X0JpZ1wiLCBudWxsKTtcclxuICAgICAgICBpZiAoIXRoaXMuaG9tZUNhblRvdWNoKSByZXR1cm47XHJcbiAgICAgICAgdGhpcy5ob21lQ2FuVG91Y2ggPSBmYWxzZTtcclxuICAgICAgICB0aGlzLm5vZGUucGFyZW50LnBhcmVudC5nZXRDaGlsZEJ5TmFtZShcIkxvc2VcIikuYWN0aXZlID0gdHJ1ZTtcclxuICAgICAgICB0aGlzLm5vZGUucGFyZW50LnBhcmVudC5nZXRDaGlsZEJ5TmFtZShcIkxvc2VcIikuZ2V0Q2hpbGRCeU5hbWUoXCJUaW1lXCIpLmFjdGl2ZSA9IGZhbHNlO1xyXG4gICAgICAgIHRoaXMubm9kZS5wYXJlbnQucGFyZW50LmdldENoaWxkQnlOYW1lKFwiTG9zZVwiKS5nZXRDaGlsZEJ5TmFtZShcIkJvb21cIikuYWN0aXZlID0gZmFsc2U7XHJcbiAgICAgICAgdGhpcy5ub2RlLnBhcmVudC5wYXJlbnQuZ2V0Q2hpbGRCeU5hbWUoXCJMb3NlXCIpLmdldENoaWxkQnlOYW1lKFwiTG9ja1wiKS5hY3RpdmUgPSBmYWxzZTtcclxuICAgICAgICB0aGlzLm5vZGUucGFyZW50LnBhcmVudC5nZXRDaGlsZEJ5TmFtZShcIkxvc2VcIikuZ2V0Q2hpbGRCeU5hbWUoXCJIZWFsdGhcIikuYWN0aXZlID0gdHJ1ZTtcclxuICAgICAgICBsZXQgZGF0YSA9IHtcclxuICAgICAgICAgICAgdGltZTogdGhpcy5jb3VudF9UaW1lLFxyXG4gICAgICAgICAgICBhZGRfVGltZTogdGhpcy5hZGRfVGltZSxcclxuICAgICAgICAgICAgcmVzdWx0OiBcImZhaWxcIlxyXG4gICAgICAgIH1cclxuICAgICAgICBjYy5meC5HYW1lVG9vbC5zaHVzaHVfVHJhY2soXCJmaW5pc2hfc3RhZ2VcIiwgZGF0YSk7XHJcbiAgICAgICAgaWYgKHRoaXMuZ2FtZVN0YXJ0ID09IHRydWUpIHtcclxuICAgICAgICAgICAgY2MuZnguR2FtZVRvb2wuc2V0VXNlckhlYWx0aCgtMSwgKGRhdGEpID0+IHtcclxuICAgICAgICAgICAgfSlcclxuICAgICAgICB9XHJcbiAgICAgICAgLy8gdGhpcy5ub2RlLnBhcmVudC5wYXJlbnQucGFyZW50LmRlc3Ryb3koKTtcclxuICAgIH1cclxuXHJcbiAgICByZXR1cm5Ib21lKCkge1xyXG4gICAgICAgIGNjLmZ4LkF1ZGlvTWFuYWdlci5faW5zdGFuY2UucGxheUVmZmVjdChcImFubml1X0JpZ1wiLCBudWxsKTtcclxuICAgICAgICBpZiAoTWFwQ29ucm9sZXIuX2luc3RhbmNlID0gbnVsbCkge1xyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG4gICAgICAgIC8vIE1pbmlHYW1lU2RrLkFQSS5zaG93VG9hc3QoXCLkvZPlipvlgLzlh4/lsJFcIik7XHJcbiAgICAgICAgLy8gTWFwQ29ucm9sZXIuX2luc3RhbmNlID0gbnVsbDtcclxuICAgICAgICBjYy5meC5HYW1lQ29uZmlnLkxFVkVMX0lORk9faW5pdChmYWxzZSwgMCk7XHJcbiAgICAgICAgaWYgKHRoaXMubmV3X21vZGUgPT0gMykge1xyXG4gICAgICAgICAgICB0aGlzLm5vZGUucGFyZW50LnBhcmVudC5nZXRDaGlsZEJ5TmFtZShcIldpblwiKS5hY3RpdmUgPSBmYWxzZTtcclxuICAgICAgICAgICAgdGhpcy5vcGVuTmV3TW9kZSgxKTtcclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuICAgICAgICBjYy5meC5BdWRpb01hbmFnZXIuX2luc3RhbmNlLnBsYXlFZmZlY3QoXCJ6aHVhbjFcIiwgbnVsbCk7XHJcbiAgICAgICAgdGhpcy5ub2RlLnBhcmVudC5wYXJlbnQucGFyZW50LmdldENoaWxkQnlOYW1lKFwiemh1YW5jaGFuZ1wiKS5hY3RpdmUgPSB0cnVlO1xyXG4gICAgICAgIHRoaXMubm9kZS5wYXJlbnQucGFyZW50LnBhcmVudC5nZXRDaGlsZEJ5TmFtZShcInpodWFuY2hhbmdcIikuZ2V0Q29tcG9uZW50KHNwLlNrZWxldG9uKS5zZXRBbmltYXRpb24oMSwgXCJ1cFwiLCBmYWxzZSk7XHJcbiAgICAgICAgY2MuZGlyZWN0b3IucHJlbG9hZFNjZW5lKFwiSG9tZVNjZW5lXCIsIChlcnIsIGFzc2V0KSA9PiB7XHJcbiAgICAgICAgICAgIGlmIChlcnIpIHtcclxuICAgICAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoJ+WKqOaAgeWKoOi9vSBQcmVmYWIg5aSx6LSlOicsIGVycik7XHJcbiAgICAgICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgfSk7XHJcblxyXG4gICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICAgICAgICBjYy5kaXJlY3Rvci5sb2FkU2NlbmUoXCJIb21lU2NlbmVcIik7XHJcbiAgICAgICAgfSwgMTIwMCk7XHJcbiAgICB9XHJcblxyXG4gICAgLy/liKTmlq3muLjmiI/lpLHotKVcclxuICAgIGZhaWxMZXZlbCh0eXBlKSB7XHJcbiAgICAgICAgdGhpcy5zdG9wVGltZUN1dERvd24oKTtcclxuICAgICAgICBpZiAodGhpcy5nYW1lT3ZlciA9PSB0cnVlIHx8IHRoaXMuZ2FtZVdpbiA9PSB0cnVlKSB7XHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGxldCB0aW1lID0gMDtcclxuICAgICAgICB0aGlzLmdhbWVPdmVyID0gdHJ1ZTtcclxuICAgICAgICBpZiAodHlwZSA9PSBcImJvb21cIikge1xyXG4gICAgICAgICAgICB0aW1lID0gMjAwMDtcclxuICAgICAgICB9XHJcbiAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgICAgICAgIHRoaXMubm9kZS5wYXJlbnQucGFyZW50LmdldENoaWxkQnlOYW1lKFwiTG9zZVwiKS5hY3RpdmUgPSB0cnVlO1xyXG4gICAgICAgICAgICB0aGlzLm5vZGUucGFyZW50LnBhcmVudC5nZXRDaGlsZEJ5TmFtZShcIkxvc2VcIikuZ2V0Q2hpbGRCeU5hbWUoXCJUaW1lXCIpLmFjdGl2ZSA9IHRydWU7XHJcbiAgICAgICAgICAgIHRoaXMubm9kZS5wYXJlbnQucGFyZW50LmdldENoaWxkQnlOYW1lKFwiTG9zZVwiKS5nZXRDaGlsZEJ5TmFtZShcIkJvb21cIikuYWN0aXZlID0gZmFsc2U7XHJcbiAgICAgICAgICAgIGxldCBidXlCdG4gPSB0aGlzLm5vZGUucGFyZW50LnBhcmVudC5nZXRDaGlsZEJ5TmFtZShcIkxvc2VcIikuZ2V0Q2hpbGRCeU5hbWUoXCJUaW1lXCIpLmdldENoaWxkQnlOYW1lKFwiYnV5QnRuXCIpO1xyXG4gICAgICAgICAgICBidXlCdG4uZ2V0Q2hpbGRCeU5hbWUoXCJjb2luMVwiKS5hY3RpdmUgPSBidXlCdG4uZ2V0Q2hpbGRCeU5hbWUoXCJjb2luMlwiKS5hY3RpdmUgPSBidXlCdG4uZ2V0Q2hpbGRCeU5hbWUoXCJjb2luM1wiKS5hY3RpdmUgPSBmYWxzZTtcclxuICAgICAgICAgICAgaWYgKGNjLmZ4LkdhbWVDb25maWcuR01fSU5GTy5yZXZpZXcgPT0gMCkgYnV5QnRuLmdldENoaWxkQnlOYW1lKFwiY29pbjFcIikuYWN0aXZlID0gdHJ1ZTtcclxuICAgICAgICAgICAgZWxzZSBpZiAoY2MuZnguR2FtZUNvbmZpZy5HTV9JTkZPLnJldmlldyA9PSAxKSBidXlCdG4uZ2V0Q2hpbGRCeU5hbWUoXCJjb2luMlwiKS5hY3RpdmUgPSB0cnVlO1xyXG4gICAgICAgICAgICBlbHNlIGlmIChjYy5meC5HYW1lQ29uZmlnLkdNX0lORk8ucmV2aWV3ID09IDIpIGJ1eUJ0bi5nZXRDaGlsZEJ5TmFtZShcImNvaW4zXCIpLmFjdGl2ZSA9IHRydWU7XHJcbiAgICAgICAgICAgIGlmICh0eXBlKSB7XHJcbiAgICAgICAgICAgICAgICBpZiAodHlwZSA9PSBcImJvb21cIikge1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMubm9kZS5wYXJlbnQucGFyZW50LmdldENoaWxkQnlOYW1lKFwiTG9zZVwiKS5nZXRDaGlsZEJ5TmFtZShcIlRpbWVcIikuYWN0aXZlID0gZmFsc2U7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5ub2RlLnBhcmVudC5wYXJlbnQuZ2V0Q2hpbGRCeU5hbWUoXCJMb3NlXCIpLmdldENoaWxkQnlOYW1lKFwiQm9vbVwiKS5hY3RpdmUgPSB0cnVlO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfSwgdGltZSk7XHJcblxyXG4gICAgICAgIC8vIGNvbnNvbGUubG9nKFwi5ri45oiP5aSx6LSlXCIpO1xyXG4gICAgfVxyXG5cclxuICAgIC8v5omT5byA5paw5qih5byP5by556qXXHJcbiAgICBvcGVuTmV3TW9kZSh0eXBlKSB7XHJcbiAgICAgICAgbGV0IGluZGV4ID0gMDtcclxuICAgICAgICBjb25zdCBCTE9DS1NfUEVSX0ZSQU1FID0gNTsgLy8g5q+P5bin6ZSA5q+B55qE5pa55Z2X5pWw6YePXHJcbiAgICAgICAgY29uc3QgZGVzdHJveUJsb2NrcyA9ICgpID0+IHtcclxuICAgICAgICAgICAgY29uc3QgZW5kSW5kZXggPSBNYXRoLm1pbihpbmRleCArIEJMT0NLU19QRVJfRlJBTUUsIHRoaXMuYmxvY2tzLmxlbmd0aCk7XHJcbiAgICAgICAgICAgIGZvciAoOyBpbmRleCA8IGVuZEluZGV4OyBpbmRleCsrKSB7XHJcbiAgICAgICAgICAgICAgICBpZiAodGhpcy5ibG9ja3NbaW5kZXhdKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5ibG9ja3NbaW5kZXhdLmRlc3Ryb3koKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAvLyDlpoLmnpzov5jmnInmlrnlnZfmnKrplIDmr4HvvIzkuIvkuIDluKfnu6fnu61cclxuICAgICAgICAgICAgaWYgKGluZGV4IDwgdGhpcy5ibG9ja3MubGVuZ3RoKSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLnNjaGVkdWxlT25jZShkZXN0cm95QmxvY2tzLCAwKTtcclxuICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH07XHJcbiAgICAgICAgLy8g5byA5aeL5YiG5bin6ZSA5q+B5pa55Z2XXHJcbiAgICAgICAgZGVzdHJveUJsb2NrcygpO1xyXG4gICAgICAgIHRoaXMubm9kZS5wYXJlbnQucGFyZW50LmdldENoaWxkQnlOYW1lKFwiTmV3TW9kZVwiKS5hY3RpdmUgPSB0cnVlO1xyXG4gICAgICAgIHRoaXMubm9kZS5wYXJlbnQucGFyZW50LmdldENoaWxkQnlOYW1lKFwiTmV3TW9kZVwiKS5nZXRDb21wb25lbnQoXCJOZXdNb2RlXCIpLnNldE1vZGUodHlwZSk7XHJcbiAgICB9XHJcblxyXG5cclxuICAgIGRvd25Eb29yKGNvbG9yLCB0eXBlKSB7XHJcbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0aGlzLndhbGxBcnJheS5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgICAgICBpZiAodGhpcy53YWxsQXJyYXlbaV0uZ2V0Q2hpbGRCeU5hbWUoXCJ3YWxsXCIpLmdldENvbXBvbmVudChcIldhbGxcIikuY29sb3IgPT0gY29sb3IpIHtcclxuICAgICAgICAgICAgICAgIGlmICh0eXBlKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKHR5cGUgPT0gNSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy53YWxsQXJyYXlbaV0uZ2V0Q2hpbGRCeU5hbWUoXCJ3YWxsXCIpLmdldENvbXBvbmVudChcIldhbGxcIikuc3BlY2lhbCA9PSAxKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLndhbGxBcnJheVtpXS5nZXRDaGlsZEJ5TmFtZShcIndhbGxcIikuZ2V0Q29tcG9uZW50KFwiV2FsbFwiKS5kb3duRG9vcigpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIGVsc2UgdGhpcy53YWxsQXJyYXlbaV0uZ2V0Q2hpbGRCeU5hbWUoXCJ3YWxsXCIpLmdldENvbXBvbmVudChcIldhbGxcIikuZG93bkRvb3IoKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIGVsc2UgdGhpcy53YWxsQXJyYXlbaV0uZ2V0Q2hpbGRCeU5hbWUoXCJ3YWxsXCIpLmdldENvbXBvbmVudChcIldhbGxcIikuZG93bkRvb3IoKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICB1cERvb3IoKSB7XHJcbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0aGlzLndhbGxBcnJheS5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgICAgICBpZiAodGhpcy53YWxsQXJyYXlbaV0uZ2V0Q2hpbGRCeU5hbWUoXCJ3YWxsXCIpLm9wYWNpdHkgPT0gMCkge1xyXG4gICAgICAgICAgICAgICAgdGhpcy53YWxsQXJyYXlbaV0uZ2V0Q2hpbGRCeU5hbWUoXCJ3YWxsXCIpLmdldENvbXBvbmVudChcIldhbGxcIikudXBEb29yKCk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgLy/lvIDlp4vlgJLorqHml7ZcclxuICAgIHN0YXJ0VGltZUN1dERvd24oKSB7XHJcbiAgICAgICAgdGhpcy5zY2hlZHVsZUNhbGxiYWNrID0gZnVuY3Rpb24gKCkge1xyXG4gICAgICAgICAgICBpZiAodGhpcy5wYXVzZSkgcmV0dXJuO1xyXG4gICAgICAgICAgICBpZiAodGhpcy50aW1lTnVtYmVyIDw9IDApIHtcclxuICAgICAgICAgICAgICAgIHRoaXMuc3RvcFRpbWVDdXREb3duKCk7XHJcbiAgICAgICAgICAgICAgICB2YXIgdGltZVRlbXAgPSBjYy5meC5HYW1lVG9vbC5nZXRUaW1lTWFyZ2luKHRoaXMudGltZU51bWJlcik7XHJcbiAgICAgICAgICAgICAgICBOdW1iZXJUb0ltYWdlLmdldFRpbWVNYXJnaW4odGhpcy50aW1lTnVtYmVyLCA1MCwgXCJ0aW1lX1wiLCB0aGlzLnRpbWVMYWJlbClcclxuICAgICAgICAgICAgICAgIC8vIHRoaXMudGltZUxhYmVsLnN0cmluZyA9IHRpbWVUZW1wLnRvU3RyaW5nKCk7XHJcbiAgICAgICAgICAgICAgICBpZiAoIXRoaXMucGF1c2UpIHRoaXMuZmFpbExldmVsKFwidGltZVwiKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgICAgIHRoaXMudGltZU51bWJlciAtPSAxO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5jb3VudF9UaW1lICs9IDE7XHJcbiAgICAgICAgICAgICAgICB2YXIgdGltZVRlbXAgPSBjYy5meC5HYW1lVG9vbC5nZXRUaW1lTWFyZ2luKHRoaXMudGltZU51bWJlcik7XHJcbiAgICAgICAgICAgICAgICBOdW1iZXJUb0ltYWdlLmdldFRpbWVNYXJnaW4odGhpcy50aW1lTnVtYmVyLCA1MCwgXCJ0aW1lX1wiLCB0aGlzLnRpbWVMYWJlbClcclxuICAgICAgICAgICAgICAgIC8vIHRoaXMudGltZUxhYmVsLnN0cmluZyA9IHRpbWVUZW1wLnRvU3RyaW5nKCk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9LmJpbmQodGhpcyk7XHJcbiAgICAgICAgdGhpcy5zY2hlZHVsZSh0aGlzLnNjaGVkdWxlQ2FsbGJhY2ssIDEpO1xyXG4gICAgfVxyXG4gICAgLy8g5YGc5q2i5YCS6K6h5pe2XHJcbiAgICBzdG9wVGltZUN1dERvd24oKSB7XHJcbiAgICAgICAgaWYgKHRoaXMuc2NoZWR1bGVDYWxsYmFjaykge1xyXG4gICAgICAgICAgICB0aGlzLnVuc2NoZWR1bGUodGhpcy5zY2hlZHVsZUNhbGxiYWNrKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgLy/kvb/nlKjml7bpl7TpgZPlhbdcclxuICAgIHVzZVRpbWVQcm9wKCkge1xyXG4gICAgICAgIGlmICh0aGlzLm5vZGUucGFyZW50LmdldENoaWxkQnlOYW1lKFwiSWNlXCIpLmFjdGl2ZSA9PSB0cnVlIHx8IHRoaXMuaGFtbWVyID09IHRydWVcclxuICAgICAgICAgICAgfHwgdGhpcy5tYWdpY01hc2suYWN0aXZlID09IHRydWUgfHwgdGhpcy50aW1lTnVtYmVyIDw9IDEpIHtcclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuICAgICAgICBsZXQgZnJlZXplQnRuID0gdGhpcy5ub2RlLnBhcmVudC5nZXRDaGlsZEJ5TmFtZShcIkJvdHRvbVwiKS5nZXRDaGlsZEJ5TmFtZShcInRpbWVCdG5cIik7XHJcbiAgICAgICAgaWYgKGZyZWV6ZUJ0bi5nZXRDb21wb25lbnQoXCJidG5Db250cm9sXCIpLl90b3VjaCkge1xyXG4gICAgICAgICAgICBmcmVlemVCdG4uZ2V0Q29tcG9uZW50KFwiYnRuQ29udHJvbFwiKS5zZXRUb3VjaChmYWxzZSk7XHJcbiAgICAgICAgICAgIGlmIChjYy5meC5HYW1lQ29uZmlnLkdNX0lORk8uZnJlZXplQW1vdW50IDwgMSkge1xyXG4gICAgICAgICAgICAgICAgaWYgKGNjLmZ4LkdhbWVDb25maWcuR01fSU5GTy5jb2luIDwgMTUwMCkge1xyXG4gICAgICAgICAgICAgICAgICAgIE1pbmlHYW1lU2RrLkFQSS5zaG93VG9hc3QoXCLph5HluIHkuI3otrPvvIzml6Dms5XotK3kubDpgZPlhbdcIik7XHJcbiAgICAgICAgICAgICAgICAgICAgZnJlZXplQnRuLmdldENvbXBvbmVudChcImJ0bkNvbnRyb2xcIikuc2V0VG91Y2godHJ1ZSk7XHJcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgdGhpcy5ub2RlLnBhcmVudC5wYXJlbnQuZ2V0Q2hpbGRCeU5hbWUoXCJwcm9wV2luZG93XCIpLmFjdGl2ZSA9IHRydWU7XHJcbiAgICAgICAgICAgICAgICB0aGlzLm5vZGUucGFyZW50LnBhcmVudC5wYXJlbnQuZ2V0Q29tcG9uZW50KFwiU2NlbmVNYW5hZ2VyXCIpLm9wZW5Qcm9wQnV5KFwiZnJlZXplXCIpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgaWYgKCF0aGlzLm5vZGUucGFyZW50LmdldENoaWxkQnlOYW1lKFwiSWNlXCIpLmFjdGl2ZSAmJiAhdGhpcy5wYXVzZSkge1xyXG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHRpbWVzdGFtcCA9IERhdGUubm93KCk7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5mcmVlemVNYXNrLmFjdGl2ZSA9IHRydWU7XHJcblxyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMucGF1c2UgPSB0cnVlO1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMubm9kZS5wYXJlbnQuZ2V0Q2hpbGRCeU5hbWUoXCJJY2VcIikuYWN0aXZlID0gdHJ1ZTtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLm5vZGUucGFyZW50LmdldENoaWxkQnlOYW1lKFwiVG9wXCIpLmdldENoaWxkQnlOYW1lKFwiSWNlXCIpLmFjdGl2ZSA9IHRydWU7XHJcblxyXG4gICAgICAgICAgICAgICAgICAgIGNjLmZ4LkdhbWVDb25maWcuR01fSU5GTy5mcmVlemVBbW91bnQgLT0gMTtcclxuICAgICAgICAgICAgICAgICAgICBpZiAoY2MuZnguR2FtZUNvbmZpZy5HTV9JTkZPLmZyZWV6ZUFtb3VudCA8IDApXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNjLmZ4LkdhbWVDb25maWcuR01fSU5GTy5mcmVlemVBbW91bnQgPSAwO1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuaWNlTGFiZWwuc3RyaW5nID0gY2MuZnguR2FtZUNvbmZpZy5HTV9JTkZPLmZyZWV6ZUFtb3VudC50b1N0cmluZygpO1xyXG4gICAgICAgICAgICAgICAgICAgIGxldCBwcm9wSW5mbyA9IGNjLmZ4LlN0b3JhZ2VNZXNzYWdlLmdldFN0b3JhZ2UoXCJwcm9wXCIpO1xyXG4gICAgICAgICAgICAgICAgICAgIHByb3BJbmZvLmZyZWV6ZUFtb3VudCA9IGNjLmZ4LkdhbWVDb25maWcuR01fSU5GTy5mcmVlemVBbW91bnQ7XHJcbiAgICAgICAgICAgICAgICAgICAgcHJvcEluZm8udGltZXN0YW1wID0gdGltZXN0YW1wO1xyXG4gICAgICAgICAgICAgICAgICAgIGNjLmZ4LlN0b3JhZ2VNZXNzYWdlLnNldFN0b3JhZ2UoXCJwcm9wXCIsIHByb3BJbmZvKTtcclxuICAgICAgICAgICAgICAgICAgICBjYy5meC5HYW1lVG9vbC5zZXRVc2VyUHJvcCgyMDAxLCBjYy5meC5HYW1lQ29uZmlnLkdNX0lORk8uZnJlZXplQW1vdW50LCAoZGF0YSkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgIH0pXHJcbiAgICAgICAgICAgICAgICAgICAgbGV0IGRhdGEgPSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGlkOiBcIjIwMDFcIixcclxuICAgICAgICAgICAgICAgICAgICAgICAgbnVtOiAtMVxyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICBjYy5meC5HYW1lVG9vbC5zaHVzaHVfVHJhY2soXCJyZXNvdXJjZV9jb3N0XCIsIGRhdGEpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgZWxzZSBNaW5pR2FtZVNkay5BUEkuc2hvd1RvYXN0KFwi6YGT5YW35L2/55So5Lit77yM6K+356iN5ZCO5YaN6K+VXCIpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG5cclxuXHJcbiAgICB9XHJcblxyXG4gICAgLy/op6PlvIDml7bpl7Tlhrvnu5NcclxuICAgIG9wZW5JY2UoKSB7XHJcbiAgICAgICAgaWYgKHRoaXMubm9kZS5wYXJlbnQuZ2V0Q2hpbGRCeU5hbWUoXCJJY2VcIikuYWN0aXZlKSB7XHJcbiAgICAgICAgICAgIHRoaXMuZnJlZXplTWFzay5hY3RpdmUgPSBmYWxzZTtcclxuICAgICAgICAgICAgbGV0IGZyZWV6ZUJ0biA9IHRoaXMubm9kZS5wYXJlbnQuZ2V0Q2hpbGRCeU5hbWUoXCJCb3R0b21cIikuZ2V0Q2hpbGRCeU5hbWUoXCJ0aW1lQnRuXCIpO1xyXG4gICAgICAgICAgICBmcmVlemVCdG4uZ2V0Q29tcG9uZW50KFwiYnRuQ29udHJvbFwiKS5zZXRUb3VjaCh0cnVlKTtcclxuICAgICAgICAgICAgdGhpcy5ub2RlLnBhcmVudC5nZXRDaGlsZEJ5TmFtZShcIkljZVwiKS5hY3RpdmUgPSBmYWxzZTtcclxuICAgICAgICAgICAgdGhpcy5ub2RlLnBhcmVudC5nZXRDaGlsZEJ5TmFtZShcIlRvcFwiKS5nZXRDaGlsZEJ5TmFtZShcIkljZVwiKS5hY3RpdmUgPSBmYWxzZTtcclxuICAgICAgICAgICAgdGhpcy5wYXVzZSA9IGZhbHNlO1xyXG4gICAgICAgICAgICAvLyB0aGlzLnN0YXJ0VGltZUN1dERvd24oKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgaGFuZGxlQnV5U3VjY2VzcyhkYXRhKSB7XHJcbiAgICAgICAgdGhpcy5wYXVzZSA9IGZhbHNlO1xyXG4gICAgICAgIGNvbnN0IHRpbWVzdGFtcCA9IERhdGUubm93KCk7XHJcbiAgICAgICAgLy8gY29uc29sZS5sb2coXCLlm57osIPlh73mlbDlhoU6XCIsdGhpcy5wYXVzZSk7XHJcbiAgICAgICAgbGV0IGZyZWV6ZUJ0biA9IHRoaXMubm9kZS5wYXJlbnQuZ2V0Q2hpbGRCeU5hbWUoXCJCb3R0b21cIikuZ2V0Q2hpbGRCeU5hbWUoXCJ0aW1lQnRuXCIpO1xyXG4gICAgICAgIGxldCBoYW1tZXJCdG4gPSB0aGlzLm5vZGUucGFyZW50LmdldENoaWxkQnlOYW1lKFwiQm90dG9tXCIpLmdldENoaWxkQnlOYW1lKFwiZGVzdHJveUJ0blwiKTtcclxuICAgICAgICBsZXQgbWFnaWNCdG4gPSB0aGlzLm5vZGUucGFyZW50LmdldENoaWxkQnlOYW1lKFwiQm90dG9tXCIpLmdldENoaWxkQnlOYW1lKFwibWFnaWNCdG5cIik7XHJcbiAgICAgICAgaWYgKGRhdGEgPT0gXCJmcmVlemVBbW91bnRcIikgZnJlZXplQnRuLmdldENvbXBvbmVudChcImJ0bkNvbnRyb2xcIikuc2V0VG91Y2godHJ1ZSk7XHJcbiAgICAgICAgZWxzZSBpZiAoZGF0YSA9PSBcImhhbW1lckFtb3VudFwiKSBoYW1tZXJCdG4uZ2V0Q29tcG9uZW50KFwiYnRuQ29udHJvbFwiKS5zZXRUb3VjaCh0cnVlKTtcclxuICAgICAgICBlbHNlIGlmIChkYXRhID09IFwibWFnaWNBbW91bnRcIikgbWFnaWNCdG4uZ2V0Q29tcG9uZW50KFwiYnRuQ29udHJvbFwiKS5zZXRUb3VjaCh0cnVlKTtcclxuICAgICAgICBpZiAoZGF0YSA9PSBcImZyZWV6ZUFtb3VudFwiKSB7XHJcbiAgICAgICAgICAgIGNjLmZ4LkdhbWVDb25maWcuR01fSU5GTy5mcmVlemVBbW91bnQgKz0gMztcclxuICAgICAgICAgICAgbGV0IHByb3BJbmZvID0gY2MuZnguU3RvcmFnZU1lc3NhZ2UuZ2V0U3RvcmFnZShcInByb3BcIik7XHJcbiAgICAgICAgICAgIHByb3BJbmZvLmZyZWV6ZUFtb3VudCA9IGNjLmZ4LkdhbWVDb25maWcuR01fSU5GTy5mcmVlemVBbW91bnQ7XHJcbiAgICAgICAgICAgIHByb3BJbmZvLnRpbWVzdGFtcCA9IHRpbWVzdGFtcDtcclxuICAgICAgICAgICAgY2MuZnguU3RvcmFnZU1lc3NhZ2Uuc2V0U3RvcmFnZShcInByb3BcIiwgcHJvcEluZm8pO1xyXG4gICAgICAgICAgICB0aGlzLm5vZGUucGFyZW50LnBhcmVudC5wYXJlbnQuZ2V0Q29tcG9uZW50KFwiU2NlbmVNYW5hZ2VyXCIpLmNsb3NlUHJvcEJ1eSgpO1xyXG4gICAgICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgICAgICAgICAgIHRoaXMuaWNlTGFiZWwuc3RyaW5nID0gY2MuZnguR2FtZUNvbmZpZy5HTV9JTkZPLmZyZWV6ZUFtb3VudC50b1N0cmluZygpO1xyXG4gICAgICAgICAgICAgICAgTWluaUdhbWVTZGsuQVBJLnNob3dUb2FzdChcIui0reS5sOWGu+e7k+aXtumXtOmBk+WFt+aIkOWKn1wiKTtcclxuICAgICAgICAgICAgfSwgMjAwKTtcclxuXHJcblxyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIGlmIChkYXRhID09IFwibWFnaWNBbW91bnRcIikge1xyXG4gICAgICAgICAgICBjYy5meC5HYW1lQ29uZmlnLkdNX0lORk8ubWFnaWNBbW91bnQgKz0gMztcclxuICAgICAgICAgICAgbGV0IHByb3BJbmZvID0gY2MuZnguU3RvcmFnZU1lc3NhZ2UuZ2V0U3RvcmFnZShcInByb3BcIik7XHJcbiAgICAgICAgICAgIHByb3BJbmZvLm1hZ2ljQW1vdW50ID0gY2MuZnguR2FtZUNvbmZpZy5HTV9JTkZPLm1hZ2ljQW1vdW50O1xyXG4gICAgICAgICAgICBwcm9wSW5mby50aW1lc3RhbXAgPSB0aW1lc3RhbXA7XHJcbiAgICAgICAgICAgIGNjLmZ4LlN0b3JhZ2VNZXNzYWdlLnNldFN0b3JhZ2UoXCJwcm9wXCIsIHByb3BJbmZvKTtcclxuICAgICAgICAgICAgdGhpcy5ub2RlLnBhcmVudC5wYXJlbnQucGFyZW50LmdldENvbXBvbmVudChcIlNjZW5lTWFuYWdlclwiKS5jbG9zZVByb3BCdXkoKTtcclxuICAgICAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgICAgICAgICAgICBNaW5pR2FtZVNkay5BUEkuc2hvd1RvYXN0KFwi6LSt5Lmw6ZSk5a2Q6YGT5YW35oiQ5YqfXCIpO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5tYWdpY0xhYmVsLnN0cmluZyA9IGNjLmZ4LkdhbWVDb25maWcuR01fSU5GTy5tYWdpY0Ftb3VudC50b1N0cmluZygpO1xyXG4gICAgICAgICAgICB9LCAyMDApO1xyXG5cclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSBpZiAoZGF0YSA9PSBcImhhbW1lckFtb3VudFwiKSB7XHJcbiAgICAgICAgICAgIGNjLmZ4LkdhbWVDb25maWcuR01fSU5GTy5oYW1tZXJBbW91bnQgKz0gMztcclxuICAgICAgICAgICAgbGV0IHByb3BJbmZvID0gY2MuZnguU3RvcmFnZU1lc3NhZ2UuZ2V0U3RvcmFnZShcInByb3BcIik7XHJcbiAgICAgICAgICAgIHByb3BJbmZvLmhhbW1lckFtb3VudCA9IGNjLmZ4LkdhbWVDb25maWcuR01fSU5GTy5oYW1tZXJBbW91bnQ7XHJcbiAgICAgICAgICAgIHByb3BJbmZvLnRpbWVzdGFtcCA9IHRpbWVzdGFtcDtcclxuICAgICAgICAgICAgY2MuZnguU3RvcmFnZU1lc3NhZ2Uuc2V0U3RvcmFnZShcInByb3BcIiwgcHJvcEluZm8pO1xyXG4gICAgICAgICAgICB0aGlzLm5vZGUucGFyZW50LnBhcmVudC5wYXJlbnQuZ2V0Q29tcG9uZW50KFwiU2NlbmVNYW5hZ2VyXCIpLmNsb3NlUHJvcEJ1eSgpO1xyXG4gICAgICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgICAgICAgICAgIHRoaXMuaGFtbWVyTGFiZWwuc3RyaW5nID0gY2MuZnguR2FtZUNvbmZpZy5HTV9JTkZPLmhhbW1lckFtb3VudC50b1N0cmluZygpO1xyXG4gICAgICAgICAgICAgICAgTWluaUdhbWVTZGsuQVBJLnNob3dUb2FzdChcIui0reS5sOmtlOazleajkumBk+WFt+aIkOWKn1wiKTtcclxuICAgICAgICAgICAgfSwgMjAwKTtcclxuXHJcbiAgICAgICAgfVxyXG5cclxuXHJcblxyXG4gICAgfVxyXG5cclxuICAgIC8v5L2/55So6ZSk5a2Q6YGT5YW3XHJcbiAgICB1c2VIYW1tZXIoKSB7XHJcbiAgICAgICAgaWYgKHRoaXMubm9kZS5wYXJlbnQuZ2V0Q2hpbGRCeU5hbWUoXCJJY2VcIikuYWN0aXZlID09IHRydWUgfHwgdGhpcy5oYW1tZXIgPT0gdHJ1ZVxyXG4gICAgICAgICAgICB8fCB0aGlzLm1hZ2ljTWFzay5hY3RpdmUgPT0gdHJ1ZSB8fCB0aGlzLnRpbWVOdW1iZXIgPD0gMSkge1xyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGxldCBoYW1tZXJCdG4gPSB0aGlzLm5vZGUucGFyZW50LmdldENoaWxkQnlOYW1lKFwiQm90dG9tXCIpLmdldENoaWxkQnlOYW1lKFwiZGVzdHJveUJ0blwiKTtcclxuICAgICAgICBpZiAoaGFtbWVyQnRuLmdldENvbXBvbmVudChcImJ0bkNvbnRyb2xcIikuX3RvdWNoKSB7XHJcbiAgICAgICAgICAgIGhhbW1lckJ0bi5nZXRDb21wb25lbnQoXCJidG5Db250cm9sXCIpLnNldFRvdWNoKGZhbHNlKTtcclxuICAgICAgICAgICAgaWYgKGNjLmZ4LkdhbWVDb25maWcuR01fSU5GTy5oYW1tZXJBbW91bnQgPCAxKSB7XHJcbiAgICAgICAgICAgICAgICBpZiAoY2MuZnguR2FtZUNvbmZpZy5HTV9JTkZPLmNvaW4gPCAxNTAwKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgTWluaUdhbWVTZGsuQVBJLnNob3dUb2FzdChcIumHkeW4geS4jei2s++8jOaXoOazlei0reS5sOmBk+WFt1wiKTtcclxuICAgICAgICAgICAgICAgICAgICBoYW1tZXJCdG4uZ2V0Q29tcG9uZW50KFwiYnRuQ29udHJvbFwiKS5zZXRUb3VjaCh0cnVlKTtcclxuICAgICAgICAgICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB0aGlzLm5vZGUucGFyZW50LnBhcmVudC5nZXRDaGlsZEJ5TmFtZShcInByb3BXaW5kb3dcIikuYWN0aXZlID0gdHJ1ZTtcclxuICAgICAgICAgICAgICAgIHRoaXMubm9kZS5wYXJlbnQucGFyZW50LnBhcmVudC5nZXRDb21wb25lbnQoXCJTY2VuZU1hbmFnZXJcIikub3BlblByb3BCdXkoXCJoYW1tZXJcIik7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgICAgICBpZiAoIXRoaXMuaGFtbWVyKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgdGltZXN0YW1wID0gRGF0ZS5ub3coKTtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLmhhbW1lck1hc2suYWN0aXZlID0gdHJ1ZTtcclxuXHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5oYW1tZXIgPSB0cnVlO1xyXG4gICAgICAgICAgICAgICAgICAgIGNjLmZ4LkdhbWVDb25maWcuR01fSU5GTy5oYW1tZXJBbW91bnQgLT0gMTtcclxuICAgICAgICAgICAgICAgICAgICBpZiAoY2MuZnguR2FtZUNvbmZpZy5HTV9JTkZPLmhhbW1lckFtb3VudCA8IDApXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNjLmZ4LkdhbWVDb25maWcuR01fSU5GTy5oYW1tZXJBbW91bnQgPSAwO1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuaGFtbWVyTGFiZWwuc3RyaW5nID0gY2MuZnguR2FtZUNvbmZpZy5HTV9JTkZPLmhhbW1lckFtb3VudC50b1N0cmluZygpO1xyXG4gICAgICAgICAgICAgICAgICAgIGxldCBwcm9wSW5mbyA9IGNjLmZ4LlN0b3JhZ2VNZXNzYWdlLmdldFN0b3JhZ2UoXCJwcm9wXCIpO1xyXG4gICAgICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKFwi6ZSk5a2Q6YGT5YW35L+h5oGvOlwiLCBwcm9wSW5mbyk7XHJcbiAgICAgICAgICAgICAgICAgICAgcHJvcEluZm8uaGFtbWVyQW1vdW50ID0gY2MuZnguR2FtZUNvbmZpZy5HTV9JTkZPLmhhbW1lckFtb3VudDtcclxuICAgICAgICAgICAgICAgICAgICBwcm9wSW5mby50aW1lc3RhbXAgPSB0aW1lc3RhbXA7XHJcbiAgICAgICAgICAgICAgICAgICAgY2MuZnguU3RvcmFnZU1lc3NhZ2Uuc2V0U3RvcmFnZShcInByb3BcIiwgcHJvcEluZm8pO1xyXG4gICAgICAgICAgICAgICAgICAgIGNjLmZ4LkdhbWVUb29sLnNldFVzZXJQcm9wKDIwMDIsIGNjLmZ4LkdhbWVDb25maWcuR01fSU5GTy5oYW1tZXJBbW91bnQsIChkYXRhKSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgfSlcclxuICAgICAgICAgICAgICAgICAgICBsZXQgZGF0YSA9IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgaWQ6IFwiMjAwMlwiLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBudW06IC0xXHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIGNjLmZ4LkdhbWVUb29sLnNodXNodV9UcmFjayhcInJlc291cmNlX2Nvc3RcIiwgZGF0YSk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBlbHNlIE1pbmlHYW1lU2RrLkFQSS5zaG93VG9hc3QoXCLpgZPlhbfkvb/nlKjkuK3vvIzor7fnqI3lkI7lho3or5VcIik7XHJcbiAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgfVxyXG5cclxuICAgIH1cclxuXHJcbiAgICBidXlNYWdpYygpIHtcclxuICAgICAgICBpZiAoY2MuZnguR2FtZUNvbmZpZy5HTV9JTkZPLmNvaW4gPCAxNTAwKSB7XHJcbiAgICAgICAgICAgIE1pbmlHYW1lU2RrLkFQSS5zaG93VG9hc3QoXCLph5HluIHkuI3otrPvvIzml6Dms5XotK3kubDpgZPlhbdcIik7XHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcbiAgICAgICAgY2MuZnguR2FtZVRvb2wuYnV5UHJvcCgyMDAzLCB0aGlzLmhhbmRsZUJ1eVN1Y2Nlc3MuYmluZCh0aGlzLCBcIm1hZ2ljQW1vdW50XCIpKTtcclxuICAgIH1cclxuXHJcbiAgICBidXlIYW1tZXIoKSB7XHJcbiAgICAgICAgaWYgKGNjLmZ4LkdhbWVDb25maWcuR01fSU5GTy5jb2luIDwgMTUwMCkge1xyXG4gICAgICAgICAgICBNaW5pR2FtZVNkay5BUEkuc2hvd1RvYXN0KFwi6YeR5biB5LiN6Laz77yM5peg5rOV6LSt5Lmw6YGT5YW3XCIpO1xyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGNjLmZ4LkdhbWVUb29sLmJ1eVByb3AoMjAwMiwgdGhpcy5oYW5kbGVCdXlTdWNjZXNzLmJpbmQodGhpcywgXCJoYW1tZXJBbW91bnRcIikpO1xyXG4gICAgfVxyXG5cclxuICAgIGJ1eUZyZWV6ZSgpIHtcclxuICAgICAgICBpZiAoY2MuZnguR2FtZUNvbmZpZy5HTV9JTkZPLmNvaW4gPCAxNTAwKSB7XHJcbiAgICAgICAgICAgIE1pbmlHYW1lU2RrLkFQSS5zaG93VG9hc3QoXCLph5HluIHkuI3otrPvvIzml6Dms5XotK3kubDpgZPlhbdcIik7XHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcbiAgICAgICAgY2MuZnguR2FtZVRvb2wuYnV5UHJvcCgyMDAxLCB0aGlzLmhhbmRsZUJ1eVN1Y2Nlc3MuYmluZCh0aGlzLCBcImZyZWV6ZUFtb3VudFwiKSk7XHJcbiAgICB9XHJcblxyXG4gICAgLy/kvb/nlKjprZTms5Xmo5Lpmo/mnLrmtojpmaTkuKTkuKrmlrnlnZdcclxuICAgIHVzZU1hZ2ljKCkge1xyXG4gICAgICAgIGlmICh0aGlzLm5vZGUucGFyZW50LmdldENoaWxkQnlOYW1lKFwiSWNlXCIpLmFjdGl2ZSA9PSB0cnVlIHx8IHRoaXMuaGFtbWVyID09IHRydWVcclxuICAgICAgICAgICAgfHwgdGhpcy5tYWdpY01hc2suYWN0aXZlID09IHRydWUgfHwgdGhpcy50aW1lTnVtYmVyIDw9IDEpIHtcclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuICAgICAgICBsZXQgbWFnaWNCdG4gPSB0aGlzLm5vZGUucGFyZW50LmdldENoaWxkQnlOYW1lKFwiQm90dG9tXCIpLmdldENoaWxkQnlOYW1lKFwibWFnaWNCdG5cIik7XHJcbiAgICAgICAgaWYgKG1hZ2ljQnRuLmdldENvbXBvbmVudChcImJ0bkNvbnRyb2xcIikuX3RvdWNoKSB7XHJcbiAgICAgICAgICAgIG1hZ2ljQnRuLmdldENvbXBvbmVudChcImJ0bkNvbnRyb2xcIikuc2V0VG91Y2goZmFsc2UpO1xyXG4gICAgICAgICAgICBpZiAoY2MuZnguR2FtZUNvbmZpZy5HTV9JTkZPLm1hZ2ljQW1vdW50IDwgMSkge1xyXG4gICAgICAgICAgICAgICAgaWYgKGNjLmZ4LkdhbWVDb25maWcuR01fSU5GTy5jb2luIDwgMTUwMCkge1xyXG4gICAgICAgICAgICAgICAgICAgIE1pbmlHYW1lU2RrLkFQSS5zaG93VG9hc3QoXCLph5HluIHkuI3otrPvvIzml6Dms5XotK3kubDpgZPlhbdcIik7XHJcbiAgICAgICAgICAgICAgICAgICAgbWFnaWNCdG4uZ2V0Q29tcG9uZW50KFwiYnRuQ29udHJvbFwiKS5zZXRUb3VjaCh0cnVlKTtcclxuICAgICAgICAgICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB0aGlzLm5vZGUucGFyZW50LnBhcmVudC5nZXRDaGlsZEJ5TmFtZShcInByb3BXaW5kb3dcIikuYWN0aXZlID0gdHJ1ZTtcclxuICAgICAgICAgICAgICAgIHRoaXMubm9kZS5wYXJlbnQucGFyZW50LnBhcmVudC5nZXRDb21wb25lbnQoXCJTY2VuZU1hbmFnZXJcIikub3BlblByb3BCdXkoXCJtYWdpY1wiKTtcclxuICAgICAgICAgICAgICAgIC8vIE1pbmlHYW1lU2RrLkFQSS5zaG93VG9hc3QoXCLprZTms5Xmo5LmlbDph4/kuI3otrMs6Ieq5Yqo6LSt5Lmw6a2U5rOV5qOSXCIpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgY29uc3QgdGltZXN0YW1wID0gRGF0ZS5ub3coKTtcclxuICAgICAgICAgICAgICAgIHRoaXMubWFnaWNNYXNrLmFjdGl2ZSA9IHRydWU7XHJcbiAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLm1hZ2ljTWFzay5hY3RpdmUgPSBmYWxzZTtcclxuICAgICAgICAgICAgICAgICAgICBtYWdpY0J0bi5nZXRDb21wb25lbnQoXCJidG5Db250cm9sXCIpLnNldFRvdWNoKHRydWUpO1xyXG4gICAgICAgICAgICAgICAgfSwgMTAwMCk7XHJcblxyXG4gICAgICAgICAgICAgICAgY2MuZnguR2FtZUNvbmZpZy5HTV9JTkZPLm1hZ2ljQW1vdW50IC09IDE7XHJcbiAgICAgICAgICAgICAgICBpZiAoY2MuZnguR2FtZUNvbmZpZy5HTV9JTkZPLm1hZ2ljQW1vdW50IDwgMClcclxuICAgICAgICAgICAgICAgICAgICBjYy5meC5HYW1lQ29uZmlnLkdNX0lORk8ubWFnaWNBbW91bnQgPSAwO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5tYWdpY0xhYmVsLnN0cmluZyA9IGNjLmZ4LkdhbWVDb25maWcuR01fSU5GTy5tYWdpY0Ftb3VudC50b1N0cmluZygpO1xyXG4gICAgICAgICAgICAgICAgbGV0IHByb3BJbmZvID0gY2MuZnguU3RvcmFnZU1lc3NhZ2UuZ2V0U3RvcmFnZShcInByb3BcIik7XHJcbiAgICAgICAgICAgICAgICBwcm9wSW5mby5tYWdpY0Ftb3VudCA9IGNjLmZ4LkdhbWVDb25maWcuR01fSU5GTy5tYWdpY0Ftb3VudDtcclxuICAgICAgICAgICAgICAgIHByb3BJbmZvLnRpbWVzdGFtcCA9IHRpbWVzdGFtcDtcclxuICAgICAgICAgICAgICAgIGNjLmZ4LlN0b3JhZ2VNZXNzYWdlLnNldFN0b3JhZ2UoXCJwcm9wXCIsIHByb3BJbmZvKTtcclxuICAgICAgICAgICAgICAgIGNjLmZ4LkdhbWVUb29sLnNldFVzZXJQcm9wKDIwMDMsIGNjLmZ4LkdhbWVDb25maWcuR01fSU5GTy5tYWdpY0Ftb3VudCwgKGRhdGEpID0+IHtcclxuICAgICAgICAgICAgICAgIH0pXHJcbiAgICAgICAgICAgICAgICBsZXQgZGF0YSA9IHtcclxuICAgICAgICAgICAgICAgICAgICBpZDogXCIyMDAzXCIsXHJcbiAgICAgICAgICAgICAgICAgICAgbnVtOiAtMVxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgY2MuZnguR2FtZVRvb2wuc2h1c2h1X1RyYWNrKFwicmVzb3VyY2VfY29zdFwiLCBkYXRhKTtcclxuICAgICAgICAgICAgICAgIGxldCBub21hbEFycmF5ID0gW107XHJcbiAgICAgICAgICAgICAgICAvLyB0aGlzLm1hZ2ljQnRuLm5vZGUuYWN0aXZlID0gZmFsc2U7XHJcbiAgICAgICAgICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRoaXMuYmxvY2tzLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgLy8gY29uc29sZS5sb2coXCLmlrnlnZfnsbvlnotcIix0aGlzLmJsb2Nrc1tpXS5nZXRDb21wb25lbnQoXCJCbG9ja1wiKS50eXBlKTtcclxuICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy5ibG9ja3NbaV0uZ2V0Q29tcG9uZW50KFwiQmxvY2tcIikudHlwZSA9PSAzKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMubG9hY2tBcnJheS5wdXNoKHRoaXMuYmxvY2tzW2ldKTtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgZWxzZSBpZiAodGhpcy5ibG9ja3NbaV0uZ2V0Q29tcG9uZW50KFwiQmxvY2tcIikudHlwZSA9PSA0KSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuZnJlZXplQXJyYXkucHVzaCh0aGlzLmJsb2Nrc1tpXSk7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIGVsc2UgaWYgKHRoaXMuYmxvY2tzW2ldLmdldENvbXBvbmVudChcIkJsb2NrXCIpLnR5cGUgPT0gMTApIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMuYmxvY2tzW2ldLmdldENvbXBvbmVudChcIkJsb2NrXCIpLmJsb2NrX0luZm8ubm9kZSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9tYWxBcnJheS5wdXNoKHRoaXMuYmxvY2tzW2ldLmdldENvbXBvbmVudChcIkJsb2NrXCIpLmJsb2NrX0luZm8ubm9kZSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSBub21hbEFycmF5LnB1c2godGhpcy5ibG9ja3NbaV0pO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgbm9tYWxBcnJheS5wdXNoKHRoaXMuYmxvY2tzW2ldKTtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBpZiAobm9tYWxBcnJheS5sZW5ndGggPiAxKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgbm9tYWxBcnJheSA9IGNjLmZ4LkdhbWVUb29sLnNodWZmbGVBcnJheShub21hbEFycmF5KTtcclxuICAgICAgICAgICAgICAgICAgICBub21hbEFycmF5WzBdLmdldENvbXBvbmVudChcIkJsb2NrXCIpLmVsaW1pbmF0ZSgpO1xyXG4gICAgICAgICAgICAgICAgICAgIGxldCB0aW1lID0gMDtcclxuICAgICAgICAgICAgICAgICAgICBpZiAobm9tYWxBcnJheVswXS5nZXRDb21wb25lbnQoXCJCbG9ja1wiKS50eXBlID09IDEgfHwgbm9tYWxBcnJheVswXS5nZXRDb21wb25lbnQoXCJCbG9ja1wiKS50eXBlID09IDkpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgdGltZSA9IDIwMDtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKHRpbWUgPiAwKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9tYWxBcnJheVsxXS5nZXRDb21wb25lbnQoXCJCbG9ja1wiKS5lbGltaW5hdGUoKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgfSwgdGltZSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIG5vbWFsQXJyYXlbMV0uZ2V0Q29tcG9uZW50KFwiQmxvY2tcIikuZWxpbWluYXRlKCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBlbHNlIGlmIChub21hbEFycmF5Lmxlbmd0aCA9PSAxKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgbm9tYWxBcnJheVswXS5nZXRDb21wb25lbnQoXCJCbG9ja1wiKS5lbGltaW5hdGUoKTtcclxuICAgICAgICAgICAgICAgICAgICBsZXQgdGltZSA9IDA7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKG5vbWFsQXJyYXlbMF0uZ2V0Q29tcG9uZW50KFwiQmxvY2tcIikudHlwZSA9PSAxIHx8IG5vbWFsQXJyYXlbMF0uZ2V0Q29tcG9uZW50KFwiQmxvY2tcIikudHlwZSA9PSA5KSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHRpbWUgPSAyMDA7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy5mcmVlemVBcnJheS5sZW5ndGggPT0gMCAmJiB0aGlzLmxvYWNrQXJyYXkubGVuZ3RoID09IDApIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGNvbnNvbGUubG9nKFwi5Y+q5Ymp5LiL5LiA5Liq5Z2X6YGT5YW35L2/55So5a6M5q+VXCIpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMubG9hY2tBcnJheS5sZW5ndGggIT0gMCkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGNvbnNvbGUubG9nKFwi5raI6Zmk5LiA5Liq5pmu6YCa5Z2X5ZCO77yM5raI6Zmk5LiA5Liq5bim6ZSB5Z2XXCIpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMubG9hY2tBcnJheVswXS5nZXRDb21wb25lbnQoXCJCbG9ja1wiKS5lbGltaW5hdGUoKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlIGlmICh0aGlzLmZyZWV6ZUFycmF5Lmxlbmd0aCAhPSAwKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gY29uc29sZS5sb2coXCLmtojpmaTkuIDkuKrmma7pgJrlnZflkI7vvIzmtojpmaTkuIDkuKrlhrvnu5PlnZdcIik7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5mcmVlemVBcnJheVswXS5nZXRDb21wb25lbnQoXCJCbG9ja1wiKS5lbGltaW5hdGUoKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICB9LCAyMDAgKyB0aW1lKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICAgIGxldCBjb3VudCA9IDI7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMubG9hY2tBcnJheS5sZW5ndGggIT0gMCkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRoaXMubG9hY2tBcnJheS5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gY29uc29sZS5sb2coXCLmsqHmnInmma7pgJrlv6vvvIzprZTms5XmtojpmaTkuIDkuKrluKbplIHlnZdcIik7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmxvYWNrQXJyYXlbaV0uZ2V0Q29tcG9uZW50KFwiQmxvY2tcIikuZWxpbWluYXRlKCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb3VudCAtPSAxO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGNvdW50ID09IDApIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChjb3VudCAhPSAwKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRoaXMuZnJlZXplQXJyYXkubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBjb25zb2xlLmxvZyhcIuayoeacieaZrumAmuW/q++8jOmtlOazlea2iOmZpOS4gOS4quWGu+e7k+Wdl1wiKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyB0aGlzLmZyZWV6ZUFycmF5W2ldLmdldENvbXBvbmVudChcIkJsb2NrXCIpLmVsaW1pbmF0ZSgpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvdW50IC09IDE7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGNvdW50ID09IDApIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgfSwgMTAwKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICAvL+aMieS4i+aaguWBnOaMiemSrlxyXG4gICAgdXNlUGF1c2UoKSB7XHJcbiAgICAgICAgaWYgKHRoaXMucGF1c2UpIHtcclxuICAgICAgICAgICAgdGhpcy5wYXVzZSA9IGZhbHNlO1xyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgdGhpcy5wYXVzZSA9IHRydWU7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuXHJcblxyXG4gICAgLy/moLnmja7lhbPljaHorr7nva7lnLDlm77lpKflsI9cclxuICAgIHNldE1hcEluZm8oKSB7XHJcbiAgICAgICAgbGV0IHdpZHRoID0gMDtcclxuICAgICAgICBpZiAodGhpcy5tYXBXaWR0aCA8IDEwKSB7XHJcbiAgICAgICAgICAgIHdpZHRoID0gMC4yO1xyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIGlmICh0aGlzLm1hcFdpZHRoIDwgMTcpIHtcclxuICAgICAgICAgICAgd2lkdGggPSAwLjE1IC0gKHRoaXMubWFwV2lkdGggLSAxMSkgKiAwLjAxO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgdGhpcy5ub2RlLnNjYWxlID0gMS42ICsgKDYgLSB0aGlzLm1hcFdpZHRoKSAqIHdpZHRoO1xyXG5cclxuICAgICAgICBpZiAodGhpcy5tYXBXaWR0aCA9PSA4ICYmIHRoaXMubWFwSGVpZ2h0ID4gMTMpIHtcclxuICAgICAgICAgICAgdGhpcy5ub2RlLnNjYWxlID0gMTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIC8vIHRoaXMubm9kZS5zY2FsZSA9IDE7XHJcbiAgICAgICAgY2MuZnguR2FtZUNvbmZpZy5HTV9JTkZPLnNjYWxlID0gdGhpcy5ub2RlLnNjYWxlO1xyXG4gICAgICAgIC8vIHRoaXMubm9kZS5zY2FsZSA9IDAuNTtcclxuICAgICAgICAvLyBjb25zb2xlLmxvZyh0aGlzLm5vZGUuc2NhbGUpO1xyXG4gICAgICAgIC8vIHRoaXMubm9kZS5zY2FsZSA9IDE7XHJcbiAgICB9XHJcblxyXG4gICAgLy/liJvlu7rpl6jnmoTnspLlrZDnibnmlYhcclxuICAgIGNyZWF0ZVBhcnRpY2xlKGJsb2NrLCBqZykge1xyXG4gICAgICAgIGxldCBwYXJ0aWNsZSA9IGNjLmluc3RhbnRpYXRlKE1hcENvbnJvbGVyLl9pbnN0YW5jZS5CbG9ja19Qcm9wWzldKTtcclxuICAgICAgICBwYXJ0aWNsZS5wYXJlbnQgPSB0aGlzLm5vZGU7XHJcbiAgICAgICAgcGFydGljbGUuekluZGV4ID0gMTAwMDtcclxuICAgICAgICBsZXQgd2lkdGggPSBNYXRoLmZsb29yKGJsb2NrLndpZHRoIC8gMTIwKTtcclxuICAgICAgICBsZXQgaGVpZ2h0ID0gTWF0aC5mbG9vcihibG9jay5oZWlnaHQgLyAxMjApO1xyXG4gICAgICAgIGxldCBuYW1lID0gXCJcIjtcclxuXHJcbiAgICAgICAgaWYgKGpnID09IDAgfHwgamcgPT0gMSkge1xyXG4gICAgICAgICAgICBsZXQgeSA9IGJsb2NrLnkgKyBibG9jay5oZWlnaHQ7XHJcbiAgICAgICAgICAgIGxldCB4ID0gYmxvY2sueCAtIGJsb2NrLndpZHRoIC8gMjtcclxuICAgICAgICAgICAgbmFtZSA9IFwidG9wX1wiICsgd2lkdGggKyBcIl9cIiArIGhlaWdodDtcclxuICAgICAgICAgICAgaWYgKGpnID09IDEpIHtcclxuICAgICAgICAgICAgICAgIG5hbWUgPSBcImJvdF9cIiArIHdpZHRoICsgXCJfXCIgKyBoZWlnaHQ7XHJcbiAgICAgICAgICAgICAgICB5ID0gYmxvY2sueTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBpZiAoYmxvY2suYW5jaG9yWCA9PSAwLjUpIHtcclxuICAgICAgICAgICAgICAgIHggPSBibG9jay54O1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGVsc2UgaWYgKGJsb2NrLmFuY2hvclggPT0gMC4zMykge1xyXG4gICAgICAgICAgICAgICAgeCA9IGJsb2NrLnggKyBibG9jay53aWR0aCAqICgwLjUgLSAwLjMzKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBlbHNlIGlmIChibG9jay5hbmNob3JYID09IDAuNjYpIHtcclxuICAgICAgICAgICAgICAgIHggPSBibG9jay54ICsgYmxvY2sud2lkdGggKiAoMC41IC0gMC42Nik7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgcGFydGljbGUuc2V0UG9zaXRpb24oeCwgeSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2UgaWYgKGpnID09IDIgfHwgamcgPT0gMykge1xyXG4gICAgICAgICAgICBuYW1lID0gXCJsZWZ0X1wiICsgaGVpZ2h0ICsgXCJfXCIgKyB3aWR0aDtcclxuICAgICAgICAgICAgbGV0IHggPSBibG9jay54IC0gYmxvY2sud2lkdGg7XHJcbiAgICAgICAgICAgIGxldCB5ID0gYmxvY2sueSArIGJsb2NrLmhlaWdodCAvIDI7XHJcbiAgICAgICAgICAgIGlmIChibG9jay5hbmNob3JYID09IDAuNSkge1xyXG4gICAgICAgICAgICAgICAgeCA9IGJsb2NrLnggLSBibG9jay53aWR0aCAvIDI7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgZWxzZSBpZiAoYmxvY2suYW5jaG9yWCA9PSAwLjMzKSB7XHJcbiAgICAgICAgICAgICAgICB4ID0gYmxvY2sueCAtIGJsb2NrLndpZHRoICogMC4zMztcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBlbHNlIGlmIChibG9jay5hbmNob3JYID09IDAuNjYpIHtcclxuICAgICAgICAgICAgICAgIHggPSBibG9jay54ICsgYmxvY2sud2lkdGggKiAwLjY2O1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGlmIChqZyA9PSAzKSB7XHJcbiAgICAgICAgICAgICAgICBuYW1lID0gXCJyaWdodF9cIiArIGhlaWdodCArIFwiX1wiICsgd2lkdGg7XHJcbiAgICAgICAgICAgICAgICB4ID0gYmxvY2sueDtcclxuICAgICAgICAgICAgICAgIGlmIChibG9jay5hbmNob3JYID09IDAuNSkge1xyXG4gICAgICAgICAgICAgICAgICAgIHggPSBibG9jay54ICsgYmxvY2sud2lkdGggLyAyO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgZWxzZSBpZiAoYmxvY2suYW5jaG9yWCA9PSAwLjMzKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgeCA9IGJsb2NrLnggKyBibG9jay53aWR0aCAqIDAuNjY7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBlbHNlIGlmIChibG9jay5hbmNob3JYID09IDAuNjYpIHtcclxuICAgICAgICAgICAgICAgICAgICB4ID0gYmxvY2sueCArIGJsb2NrLndpZHRoICogMC4zMztcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgcGFydGljbGUuc2V0UG9zaXRpb24oeCwgeSk7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBsZXQgcGFydGljbGVOb2RlID0gcGFydGljbGUuZ2V0Q2hpbGRCeU5hbWUobmFtZSk7XHJcbiAgICAgICAgbGV0IGNvbG9yID0gYmxvY2suZ2V0Q29tcG9uZW50KFwiQmxvY2tcIikuY29sb3IgLSAxO1xyXG5cclxuICAgICAgICBwYXJ0aWNsZU5vZGUuZ2V0Q29tcG9uZW50KGNjLlBhcnRpY2xlU3lzdGVtKS5zcHJpdGVGcmFtZSA9IHBhcnRpY2xlLmdldENvbXBvbmVudChcIlJlZHVjZVwiKS5CbG9ja19Db2xvcltjb2xvcl07XHJcbiAgICAgICAgcGFydGljbGVOb2RlLmFjdGl2ZSA9IHRydWU7XHJcbiAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgICAgICAgIGNjLnR3ZWVuKHBhcnRpY2xlKVxyXG4gICAgICAgICAgICAgICAgLnRvKDIsIHsgb3BhY2l0eTogMCB9KVxyXG4gICAgICAgICAgICAgICAgLmNhbGwoKCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgIHBhcnRpY2xlLmRlc3Ryb3koKTtcclxuICAgICAgICAgICAgICAgIH0pXHJcbiAgICAgICAgICAgICAgICAuc3RhcnQoKTtcclxuICAgICAgICB9LCAxMjAwKTtcclxuICAgIH1cclxuXHJcbiAgICByZW1vdmVPbmVCbG9jaygpIHtcclxuICAgICAgICAvLyDnp7vpmaTmiYDmnInmlrnlnZdcclxuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRoaXMuYmxvY2tzLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgICAgIGlmICh0aGlzLmJsb2Nrc1tpXS5vcGFjaXR5ID09IDApIHtcclxuICAgICAgICAgICAgICAgIHRoaXMuYmxvY2tzW2ldLmRlc3Ryb3koKTtcclxuICAgICAgICAgICAgICAgIHRoaXMuYmxvY2tzLnNwbGljZShpLCAxKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcblxyXG5cclxuICAgIHVwZGF0ZShkdCkge1xyXG5cclxuICAgIH1cclxufVxyXG4iXX0= +//------QC-SOURCE-SPLIT------ + + (function() { + var nodeEnv = typeof require !== 'undefined' && typeof process !== 'undefined'; + var __module = nodeEnv ? module : {exports:{}}; + var __filename = 'preview-scripts/assets/Script/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, '3bad2uyOw5MzLq3b5g9aHn2', 'Window'); +// Script/Window.ts + +"use strict"; +// Learn TypeScript: +// - https://docs.cocos.com/creator/manual/en/scripting/typescript.html +// Learn Attribute: +// - https://docs.cocos.com/creator/manual/en/scripting/reference/attributes.html +// Learn life-cycle callbacks: +// - https://docs.cocos.com/creator/manual/en/scripting/life-cycle-callbacks.html +var __extends = (this && this.__extends) || (function () { + var extendStatics = function (d, b) { + extendStatics = Object.setPrototypeOf || + ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) || + function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; }; + return extendStatics(d, b); + }; + return function (d, b) { + extendStatics(d, b); + function __() { this.constructor = d; } + d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); + }; +})(); +var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) { + var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; + if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc); + else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; + return c > 3 && r && Object.defineProperty(target, key, r), r; +}; +Object.defineProperty(exports, "__esModule", { value: true }); +var _a = cc._decorator, ccclass = _a.ccclass, property = _a.property; +var NewClass = /** @class */ (function (_super) { + __extends(NewClass, _super); + function NewClass() { + return _super !== null && _super.apply(this, arguments) || this; + } + // LIFE-CYCLE CALLBACKS: + NewClass.prototype.onLoad = function () { + this.can_Touch = false; + }; + NewClass.prototype.start = function () { + }; + NewClass.prototype.init = function (data) { + var _this = this; + this.can_Touch = false; + this.node.getChildByName("win").active = false; + this.node.getChildByName("lose").active = false; + this.node.getChildByName("finishi").active = false; + this.node.getChildByName(data.result).active = true; + if (data.result == "lose") { + this.setErrLabel(data.code); + } + var target = this.node.getChildByName(data.result); + target.getChildByName("btn").active = false; + target.opacity = 0; + target.scale = 2; + target.getChildByName("tip").opacity = 0; + if (data.result == "win") { + var lianXi = false; + if (cc.fx.GameConfig.GM_INFO.level == 2) + lianXi = true; + target.getChildByName("yes").active = !lianXi; + target.getChildByName("start").active = lianXi; + } + cc.tween(target) + .delay(0.1) + .to(0.25, { opacity: 255, scale: 1 }) + .delay(0.3) + .call(function () { + if (target.name == "lose") { + cc.tween(target.getChildByName("tip")) + .to(0.5, { opacity: 255 }) + .delay(0.5) + .call(function () { + _this.can_Touch = true; + target.getChildByName("btn").active = true; + }) + .start(); + } + else { + _this.can_Touch = true; + target.getChildByName("btn").active = true; + } + }) + .start(); + }; + NewClass.prototype.setErrLabel = function (code) { + var tip = this.node.getChildByName("lose").getChildByName("tip").getComponent(cc.Label); + tip.string = cc.fx.GameConfig.TIP_ERR[code]; + }; + NewClass.prototype.click_Next = function () { + var _this = this; + if (!this.can_Touch) { + return; + } + this.can_Touch = false; + cc.tween(this.node) + .to(0.3, { opacity: 0 }) + .call(function () { + _this.node.active = false; + cc.director.loadScene("GameScene"); + }) + .start(); + }; + NewClass = __decorate([ + ccclass + ], NewClass); + return NewClass; +}(cc.Component)); +exports.default = NewClass; + +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,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImFzc2V0c1xcU2NyaXB0XFxXaW5kb3cudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLG9CQUFvQjtBQUNwQix3RUFBd0U7QUFDeEUsbUJBQW1CO0FBQ25CLGtGQUFrRjtBQUNsRiw4QkFBOEI7QUFDOUIsa0ZBQWtGOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFFNUUsSUFBQSxLQUFzQixFQUFFLENBQUMsVUFBVSxFQUFsQyxPQUFPLGFBQUEsRUFBRSxRQUFRLGNBQWlCLENBQUM7QUFHMUM7SUFBc0MsNEJBQVk7SUFBbEQ7O0lBMkVBLENBQUM7SUF4RUcsd0JBQXdCO0lBRXhCLHlCQUFNLEdBQU47UUFDSSxJQUFJLENBQUMsU0FBUyxHQUFHLEtBQUssQ0FBQztJQUMzQixDQUFDO0lBRUQsd0JBQUssR0FBTDtJQUVBLENBQUM7SUFFRCx1QkFBSSxHQUFKLFVBQUssSUFBSTtRQUFULGlCQXdDQztRQXZDRyxJQUFJLENBQUMsU0FBUyxHQUFHLEtBQUssQ0FBQztRQUN2QixJQUFJLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxNQUFNLEdBQUcsS0FBSyxDQUFDO1FBQy9DLElBQUksQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLE1BQU0sQ0FBQyxDQUFDLE1BQU0sR0FBRyxLQUFLLENBQUM7UUFDaEQsSUFBSSxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsU0FBUyxDQUFDLENBQUMsTUFBTSxHQUFHLEtBQUssQ0FBQztRQUNuRCxJQUFJLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQztRQUNwRCxJQUFHLElBQUksQ0FBQyxNQUFNLElBQUksTUFBTSxFQUFDO1lBQ3JCLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO1NBQy9CO1FBQ0QsSUFBSSxNQUFNLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FB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Q0FBQztJQUNiLENBQUM7SUF4RWdCLFFBQVE7UUFENUIsT0FBTztPQUNhLFFBQVEsQ0EyRTVCO0lBQUQsZUFBQztDQTNFRCxBQTJFQyxDQTNFcUMsRUFBRSxDQUFDLFNBQVMsR0EyRWpEO2tCQTNFb0IsUUFBUSIsImZpbGUiOiIiLCJzb3VyY2VSb290IjoiLyIsInNvdXJjZXNDb250ZW50IjpbIi8vIExlYXJuIFR5cGVTY3JpcHQ6XHJcbi8vICAtIGh0dHBzOi8vZG9jcy5jb2Nvcy5jb20vY3JlYXRvci9tYW51YWwvZW4vc2NyaXB0aW5nL3R5cGVzY3JpcHQuaHRtbFxyXG4vLyBMZWFybiBBdHRyaWJ1dGU6XHJcbi8vICAtIGh0dHBzOi8vZG9jcy5jb2Nvcy5jb20vY3JlYXRvci9tYW51YWwvZW4vc2NyaXB0aW5nL3JlZmVyZW5jZS9hdHRyaWJ1dGVzLmh0bWxcclxuLy8gTGVhcm4gbGlmZS1jeWNsZSBjYWxsYmFja3M6XHJcbi8vICAtIGh0dHBzOi8vZG9jcy5jb2Nvcy5jb20vY3JlYXRvci9tYW51YWwvZW4vc2NyaXB0aW5nL2xpZmUtY3ljbGUtY2FsbGJhY2tzLmh0bWxcclxuXHJcbmNvbnN0IHtjY2NsYXNzLCBwcm9wZXJ0eX0gPSBjYy5fZGVjb3JhdG9yO1xyXG5cclxuQGNjY2xhc3NcclxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgTmV3Q2xhc3MgZXh0ZW5kcyBjYy5Db21wb25lbnQge1xyXG4gICAgY2FuX1RvdWNoOiBib29sZWFuO1xyXG5cclxuICAgIC8vIExJRkUtQ1lDTEUgQ0FMTEJBQ0tTOlxyXG5cclxuICAgIG9uTG9hZCAoKSB7XHJcbiAgICAgICAgdGhpcy5jYW5fVG91Y2ggPSBmYWxzZTtcclxuICAgIH1cclxuXHJcbiAgICBzdGFydCAoKSB7XHJcblxyXG4gICAgfVxyXG5cclxuICAgIGluaXQoZGF0YSl7XHJcbiAgICAgICAgdGhpcy5jYW5fVG91Y2ggPSBmYWxzZTtcclxuICAgICAgICB0aGlzLm5vZGUuZ2V0Q2hpbGRCeU5hbWUoXCJ3aW5cIikuYWN0aXZlID0gZmFsc2U7XHJcbiAgICAgICAgdGhpcy5ub2RlLmdldENoaWxkQnlOYW1lKFwibG9zZVwiKS5hY3RpdmUgPSBmYWxzZTtcclxuICAgICAgICB0aGlzLm5vZGUuZ2V0Q2hpbGRCeU5hbWUoXCJmaW5pc2hpXCIpLmFjdGl2ZSA9IGZhbHNlO1xyXG4gICAgICAgIHRoaXMubm9kZS5nZXRDaGlsZEJ5TmFtZShkYXRhLnJlc3VsdCkuYWN0aXZlID0gdHJ1ZTtcclxuICAgICAgICBpZihkYXRhLnJlc3VsdCA9PSBcImxvc2VcIil7XHJcbiAgICAgICAgICAgIHRoaXMuc2V0RXJyTGFiZWwoZGF0YS5jb2RlKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgdmFyIHRhcmdldCA9IHRoaXMubm9kZS5nZXRDaGlsZEJ5TmFtZShkYXRhLnJlc3VsdCk7XHJcbiAgICAgICAgdGFyZ2V0LmdldENoaWxkQnlOYW1lKFwiYnRuXCIpLmFjdGl2ZSA9IGZhbHNlO1xyXG4gICAgICAgIHRhcmdldC5vcGFjaXR5ID0gMDsgdGFyZ2V0LnNjYWxlID0gMjt0YXJnZXQuZ2V0Q2hpbGRCeU5hbWUoXCJ0aXBcIikub3BhY2l0eSA9IDA7XHJcbiAgICAgICAgaWYoZGF0YS5yZXN1bHQgPT0gXCJ3aW5cIil7XHJcbiAgICAgICAgICAgIHZhciBsaWFuWGkgPSBmYWxzZTtcclxuICAgICAgICAgICAgaWYoY2MuZnguR2FtZUNvbmZpZy5HTV9JTkZPLmxldmVsID09IDIpIGxpYW5YaSA9IHRydWU7XHJcbiAgICAgICAgICAgIHRhcmdldC5nZXRDaGlsZEJ5TmFtZShcInllc1wiKS5hY3RpdmUgPSAhbGlhblhpO1xyXG4gICAgICAgICAgICB0YXJnZXQuZ2V0Q2hpbGRCeU5hbWUoXCJzdGFydFwiKS5hY3RpdmUgPSBsaWFuWGk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGNjLnR3ZWVuKHRhcmdldClcclxuICAgICAgICAuZGVsYXkoMC4xKVxyXG4gICAgICAgIC50bygwLjI1LHtvcGFjaXR5OjI1NSxzY2FsZToxfSlcclxuICAgICAgICAuZGVsYXkoMC4zKVxyXG4gICAgICAgIC5jYWxsKCgpPT57XHJcbiAgICAgICAgICAgIGlmKHRhcmdldC5uYW1lID09IFwibG9zZVwiKXtcclxuICAgICAgICAgICAgICAgIGNjLnR3ZWVuKHRhcmdldC5nZXRDaGlsZEJ5TmFtZShcInRpcFwiKSlcclxuICAgICAgICAgICAgICAgIC50bygwLjUse29wYWNpdHk6MjU1fSlcclxuICAgICAgICAgICAgICAgIC5kZWxheSgwLjUpXHJcbiAgICAgICAgICAgICAgICAuY2FsbCgoKSA9PntcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLmNhbl9Ub3VjaCA9IHRydWU7XHJcbiAgICAgICAgICAgICAgICAgICAgdGFyZ2V0LmdldENoaWxkQnlOYW1lKFwiYnRuXCIpLmFjdGl2ZSA9IHRydWU7XHJcbiAgICAgICAgICAgICAgICB9KVxyXG4gICAgICAgICAgICAgICAgLnN0YXJ0KCk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgZWxzZXtcclxuICAgICAgICAgICAgICAgIHRoaXMuY2FuX1RvdWNoID0gdHJ1ZTtcclxuICAgICAgICAgICAgICAgIHRhcmdldC5nZXRDaGlsZEJ5TmFtZShcImJ0blwiKS5hY3RpdmUgPSB0cnVlO1xyXG4gICAgICAgICAgICB9XHJcblxyXG4gICAgICAgIH0pXHJcbiAgICAgICAgLnN0YXJ0KCk7XHJcbiAgICB9XHJcblxyXG4gICAgc2V0RXJyTGFiZWwoY29kZSl7XHJcbiAgICAgICAgdmFyIHRpcCA9IHRoaXMubm9kZS5nZXRDaGlsZEJ5TmFtZShcImxvc2VcIikuZ2V0Q2hpbGRCeU5hbWUoXCJ0aXBcIikuZ2V0Q29tcG9uZW50KGNjLkxhYmVsKTtcclxuICAgICAgICB0aXAuc3RyaW5nID0gY2MuZnguR2FtZUNvbmZpZy5USVBfRVJSW2NvZGVdO1xyXG4gICAgfVxyXG5cclxuICAgIGNsaWNrX05leHQoKXtcclxuICAgICAgICBpZighdGhpcy5jYW5fVG91Y2gpe1xyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRoaXMuY2FuX1RvdWNoID0gZmFsc2U7XHJcbiAgICAgICAgY2MudHdlZW4odGhpcy5ub2RlKVxyXG4gICAgICAgIC50bygwLjMse29wYWNpdHk6MH0pXHJcbiAgICAgICAgLmNhbGwoKCkgPT57XHJcbiAgICAgICAgICAgIHRoaXMubm9kZS5hY3RpdmUgPSBmYWxzZTtcclxuICAgICAgICAgICAgY2MuZGlyZWN0b3IubG9hZFNjZW5lKFwiR2FtZVNjZW5lXCIpO1xyXG4gICAgICAgIH0pXHJcbiAgICAgICAgLnN0YXJ0KCk7XHJcbiAgICB9XHJcblxyXG4gICAgLy8gdXBkYXRlIChkdCkge31cclxufVxyXG4iXX0= +//------QC-SOURCE-SPLIT------ + + (function() { + var nodeEnv = typeof require !== 'undefined' && typeof process !== 'undefined'; + var __module = nodeEnv ? module : {exports:{}}; + var __filename = 'preview-scripts/assets/Script/lq_collide_system/lq_collide_config.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, '4bd21i88J9KfoWB6fqk7oW1', 'lq_collide_config'); +// Script/lq_collide_system/lq_collide_config.ts + +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.LQCollideConfig = exports.LQCollideInfoList = void 0; +var LQCollideInfoList; +(function (LQCollideInfoList) { + LQCollideInfoList[LQCollideInfoList["default"] = 0] = "default"; + LQCollideInfoList[LQCollideInfoList["role"] = 1] = "role"; + LQCollideInfoList[LQCollideInfoList["role_bullet"] = 2] = "role_bullet"; + LQCollideInfoList[LQCollideInfoList["enemy"] = 3] = "enemy"; + LQCollideInfoList[LQCollideInfoList["enemy_bullet"] = 4] = "enemy_bullet"; + LQCollideInfoList[LQCollideInfoList["prop"] = 5] = "prop"; +})(LQCollideInfoList = exports.LQCollideInfoList || (exports.LQCollideInfoList = {})); +var LQCollideConfig = /** @class */ (function () { + function LQCollideConfig() { + } + LQCollideConfig.switch_auto_run = true; + LQCollideConfig.switch_print_log = true; + LQCollideConfig.switch_quad_tree = false; + LQCollideConfig.max_node_len = 10; + LQCollideConfig.per_frame = 60; + LQCollideConfig.max_node_level = 4; + LQCollideConfig.active_area_x = 0; + LQCollideConfig.active_area_y = 0; + LQCollideConfig.active_area_width = 1000; + LQCollideConfig.active_area_height = 1000; + LQCollideConfig.collide_group_map = { + "default": { id: 1, category: 1, index: 0, mask: 1 }, + "role": { id: 2, category: 2, index: 1, mask: 56 }, + "role_bullet": { id: 3, category: 4, index: 2, mask: 8 }, + "enemy": { id: 4, category: 8, index: 3, mask: 6 }, + "enemy_bullet": { id: 5, category: 16, index: 4, mask: 2 }, + "prop": { id: 6, category: 32, index: 5, mask: 2 }, + }; + return LQCollideConfig; +}()); +exports.LQCollideConfig = LQCollideConfig; + +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,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImFzc2V0c1xcU2NyaXB0XFxscV9jb2xsaWRlX3N5c3RlbVxcbHFfY29sbGlkZV9jb25maWcudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsSUFBWSxpQkFFWDtBQUZELFdBQVksaUJBQWlCO0lBQ3pCLCtEQUFPLENBQUE7SUFBRSx5REFBSSxDQUFBO0lBQUUsdUVBQVcsQ0FBQTtJQUFFLDJEQUFLLENBQUE7SUFBRSx5RUFBWSxDQUFBO0lBQUUseURBQUksQ0FBQTtBQUN6RCxDQUFDLEVBRlcsaUJBQWlCLEdBQWpCLHlCQUFpQixLQUFqQix5QkFBaUIsUUFFNUI7QUFFRDtJQUFBO0lBbUJBLENBQUM7SUFsQmlCLCtCQUFlLEdBQVksSUFBSSxDQUFDO0lBQ2hDLGdDQUFnQixHQUFZLElBQUksQ0FBQztJQUNqQyxnQ0FBZ0IsR0FBWSxLQUFLLENBQUM7SUFDbEMsNEJBQVksR0FBVyxFQUFFLENBQUM7SUFDMUIseUJBQVMsR0FBVyxFQUFFLENBQUM7SUFDdkIsOEJBQWMsR0FBVyxDQUFDLENBQUM7SUFDM0IsNkJBQWEsR0FBVyxDQUFDLENBQUM7SUFDMUIsNkJBQWEsR0FBVyxDQUFDLENBQUM7SUFDMUIsaUNBQWlCLEdBQVcsSUFBSSxDQUFDO0lBQ2pDLGtDQUFrQixHQUFXLElBQUksQ0FBQztJQUNsQyxpQ0FBaUIsR0FBRztRQUM5QixTQUFTLEVBQUUsRUFBQyxFQUFFLEVBQUUsQ0FBQyxFQUFFLFFBQVEsRUFBRSxDQUFDLEVBQUUsS0FBSyxFQUFFLENBQUMsRUFBRSxJQUFJLEVBQUUsQ0FBQyxFQUFDO1FBQ2xELE1BQU0sRUFBRSxFQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsUUFBUSxFQUFFLENBQUMsRUFBRSxLQUFLLEVBQUUsQ0FBQyxFQUFFLElBQUksRUFBRSxFQUFFLEVBQUM7UUFDaEQsYUFBYSxFQUFFLEVBQUMsRUFBRSxFQUFFLENBQUMsRUFBRSxRQUFRLEVBQUUsQ0FBQyxFQUFFLEtBQUssRUFBRSxDQUFDLEVBQUUsSUFBSSxFQUFFLENBQUMsRUFBQztRQUN0RCxPQUFPLEVBQUUsRUFBQyxFQUFFLEVBQUUsQ0FBQyxFQUFFLFFBQVEsRUFBRSxDQUFDLEVBQUUsS0FBSyxFQUFFLENBQUMsRUFBRSxJQUFJLEVBQUUsQ0FBQyxFQUFDO1FBQ2hELGNBQWMsRUFBRSxFQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsUUFBUSxFQUFFLEVBQUUsRUFBRSxLQUFLLEVBQUUsQ0FBQyxFQUFFLElBQUksRUFBRSxDQUFDLEVBQUM7UUFDeEQsTUFBTSxFQUFFLEVBQUMsRUFBRSxFQUFFLENBQUMsRUFBRSxRQUFRLEVBQUUsRUFBRSxFQUFFLEtBQUssRUFBRSxDQUFDLEVBQUUsSUFBSSxFQUFFLENBQUMsRUFBQztLQUNuRCxDQUFBO0lBQ0wsc0JBQUM7Q0FuQkQsQUFtQkMsSUFBQTtBQW5CWSwwQ0FBZSIsImZpbGUiOiIiLCJzb3VyY2VSb290IjoiLyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBlbnVtIExRQ29sbGlkZUluZm9MaXN0IHtcclxuICAgIGRlZmF1bHQsIHJvbGUsIHJvbGVfYnVsbGV0LCBlbmVteSwgZW5lbXlfYnVsbGV0LCBwcm9wXHJcbn1cclxuXHJcbmV4cG9ydCBjbGFzcyBMUUNvbGxpZGVDb25maWcge1xyXG4gICAgcHVibGljIHN0YXRpYyBzd2l0Y2hfYXV0b19ydW46IGJvb2xlYW4gPSB0cnVlO1xyXG4gICAgcHVibGljIHN0YXRpYyBzd2l0Y2hfcHJpbnRfbG9nOiBib29sZWFuID0gdHJ1ZTtcclxuICAgIHB1YmxpYyBzdGF0aWMgc3dpdGNoX3F1YWRfdHJlZTogYm9vbGVhbiA9IGZhbHNlO1xyXG4gICAgcHVibGljIHN0YXRpYyBtYXhfbm9kZV9sZW46IG51bWJlciA9IDEwO1xyXG4gICAgcHVibGljIHN0YXRpYyBwZXJfZnJhbWU6IG51bWJlciA9IDYwO1xyXG4gICAgcHVibGljIHN0YXRpYyBtYXhfbm9kZV9sZXZlbDogbnVtYmVyID0gNDtcclxuICAgIHB1YmxpYyBzdGF0aWMgYWN0aXZlX2FyZWFfeDogbnVtYmVyID0gMDtcclxuICAgIHB1YmxpYyBzdGF0aWMgYWN0aXZlX2FyZWFfeTogbnVtYmVyID0gMDtcclxuICAgIHB1YmxpYyBzdGF0aWMgYWN0aXZlX2FyZWFfd2lkdGg6IG51bWJlciA9IDEwMDA7XHJcbiAgICBwdWJsaWMgc3RhdGljIGFjdGl2ZV9hcmVhX2hlaWdodDogbnVtYmVyID0gMTAwMDtcclxuICAgIHB1YmxpYyBzdGF0aWMgY29sbGlkZV9ncm91cF9tYXAgPSB7XHJcbiAgICAgICAgXCJkZWZhdWx0XCI6IHtpZDogMSwgY2F0ZWdvcnk6IDEsIGluZGV4OiAwLCBtYXNrOiAxfSxcclxuICAgICAgICBcInJvbGVcIjoge2lkOiAyLCBjYXRlZ29yeTogMiwgaW5kZXg6IDEsIG1hc2s6IDU2fSxcclxuICAgICAgICBcInJvbGVfYnVsbGV0XCI6IHtpZDogMywgY2F0ZWdvcnk6IDQsIGluZGV4OiAyLCBtYXNrOiA4fSxcclxuICAgICAgICBcImVuZW15XCI6IHtpZDogNCwgY2F0ZWdvcnk6IDgsIGluZGV4OiAzLCBtYXNrOiA2fSxcclxuICAgICAgICBcImVuZW15X2J1bGxldFwiOiB7aWQ6IDUsIGNhdGVnb3J5OiAxNiwgaW5kZXg6IDQsIG1hc2s6IDJ9LFxyXG4gICAgICAgIFwicHJvcFwiOiB7aWQ6IDYsIGNhdGVnb3J5OiAzMiwgaW5kZXg6IDUsIG1hc2s6IDJ9LFxyXG4gICAgfVxyXG59Il19 +//------QC-SOURCE-SPLIT------ + + (function() { + var nodeEnv = typeof require !== 'undefined' && typeof process !== 'undefined'; + var __module = nodeEnv ? module : {exports:{}}; + var __filename = 'preview-scripts/assets/Script/Wall.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, '87a44m5f/pPAKIrsyArSr/V', 'Wall'); +// Script/Wall.ts + +"use strict"; +// Learn TypeScript: +// - https://docs.cocos.com/creator/manual/en/scripting/typescript.html +// Learn Attribute: +// - https://docs.cocos.com/creator/manual/en/scripting/reference/attributes.html +// Learn life-cycle callbacks: +// - https://docs.cocos.com/creator/manual/en/scripting/life-cycle-callbacks.html +var __extends = (this && this.__extends) || (function () { + var extendStatics = function (d, b) { + extendStatics = Object.setPrototypeOf || + ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) || + function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; }; + return extendStatics(d, b); + }; + return function (d, b) { + extendStatics(d, b); + function __() { this.constructor = d; } + d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); + }; +})(); +var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) { + var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; + if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc); + else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; + return c > 3 && r && Object.defineProperty(target, key, r), r; +}; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.WallColor = exports.WallType = exports.WallSpecial = void 0; +var Map_1 = require("./Map"); +var _a = cc._decorator, ccclass = _a.ccclass, property = _a.property; +var WallSpecial; +(function (WallSpecial) { + /*普通门*/ + WallSpecial[WallSpecial["\u666E\u901A\u95E8"] = 0] = "\u666E\u901A\u95E8"; + /*星星门*/ + WallSpecial[WallSpecial["\u661F\u661F\u95E8"] = 1] = "\u661F\u661F\u95E8"; + /*开关门*/ + WallSpecial[WallSpecial["\u5F00\u5173\u95E8"] = 2] = "\u5F00\u5173\u95E8"; + /*冻结门 */ + WallSpecial[WallSpecial["\u51BB\u7ED3\u95E8"] = 3] = "\u51BB\u7ED3\u95E8"; +})(WallSpecial = exports.WallSpecial || (exports.WallSpecial = {})); +var WallType; +(function (WallType) { + /*普通地块 */ + WallType[WallType["\u95E8\u6A2A\u5411\u4E0B"] = 0] = "\u95E8\u6A2A\u5411\u4E0B"; + /*起点地块 */ + WallType[WallType["\u95E8\u6A2A\u5411\u4E0A"] = 1] = "\u95E8\u6A2A\u5411\u4E0A"; + /*湿地 */ + WallType[WallType["\u95E8\u7AD6\u5411\u53F3"] = 2] = "\u95E8\u7AD6\u5411\u53F3"; + /*山峰 */ + WallType[WallType["\u95E8\u7AD6\u5411\u5DE6"] = 3] = "\u95E8\u7AD6\u5411\u5DE6"; + /*终点地块 */ + WallType[WallType["\u5899\u6A2A\u5411\u4E0B"] = 4] = "\u5899\u6A2A\u5411\u4E0B"; + /*息壤 */ + WallType[WallType["\u5899\u6A2A\u5411\u4E0A"] = 5] = "\u5899\u6A2A\u5411\u4E0A"; + /*加固 */ + WallType[WallType["\u5899\u7AD6\u5411\u53F3"] = 6] = "\u5899\u7AD6\u5411\u53F3"; + /*加固 */ + WallType[WallType["\u5899\u7AD6\u5411\u5DE6"] = 7] = "\u5899\u7AD6\u5411\u5DE6"; +})(WallType = exports.WallType || (exports.WallType = {})); +var WallColor; +(function (WallColor) { + /*普通地块 */ + WallColor[WallColor["\u7D2B\u8272"] = 0] = "\u7D2B\u8272"; + /*湿地 */ + WallColor[WallColor["\u9EC4\u8272"] = 1] = "\u9EC4\u8272"; + /*山峰 */ + WallColor[WallColor["\u7EFF\u8272"] = 2] = "\u7EFF\u8272"; + /*终点地块 */ + WallColor[WallColor["\u84DD\u8272"] = 3] = "\u84DD\u8272"; + /*息壤 */ + WallColor[WallColor["\u7C89\u8272"] = 4] = "\u7C89\u8272"; + /*加固 */ + WallColor[WallColor["\u6A58\u9EC4\u8272"] = 5] = "\u6A58\u9EC4\u8272"; + /*加固 */ + WallColor[WallColor["\u9752\u8272"] = 6] = "\u9752\u8272"; + /*加固 */ + WallColor[WallColor["\u767D\u8272"] = 7] = "\u767D\u8272"; + /*普通地块 */ + WallColor[WallColor["\u7EA2\u8272"] = 8] = "\u7EA2\u8272"; + /*普通地块 */ + WallColor[WallColor["\u7070\u8272"] = 9] = "\u7070\u8272"; +})(WallColor = exports.WallColor || (exports.WallColor = {})); +var Wall = /** @class */ (function (_super) { + __extends(Wall, _super); + function Wall() { + var _this = _super !== null && _super.apply(this, arguments) || this; + _this.number = null; + _this.type = WallType.墙横向下; + _this.special = WallSpecial.普通门; + _this.color = WallColor.紫色; + _this.wall_SpriteFrames = null; + _this.down_SpriteFrames = null; + return _this; + // update (dt) {} + } + // LIFE-CYCLE CALLBACKS: + // onLoad () {} + Wall.prototype.start = function () { + // console.log(this.type); + }; + Wall.prototype.jsonDeepClone = function (obj) { + return JSON.parse(JSON.stringify(obj)); + }; + Wall.prototype.init = function (wall_Info, posX, posY, direction) { + this.wall_Info = this.jsonDeepClone(wall_Info); + // this.open = true; + if (wall_Info == null) { + this.posX = posX; + this.posY = posY; + if (direction) + this.direction = direction; + // console.log("门方向赋值",direction); + if (direction == "up") { + this.node.parent.zIndex = 100 + this.posX - this.posY * 3; + } + else if (direction == "down" || direction == "right" || + direction == "rightdown" || direction == "downright" + || direction == "rightup" || direction == "upright") { + this.node.parent.zIndex = 30 + this.posX - this.posY * 3; + } + else if (direction == "left" || direction == "leftdown" || direction == "downleft") { + this.node.parent.zIndex = 70 + this.posX - this.posY * 3; + } + else + this.node.parent.zIndex = 70 + this.posX - this.posY * 3; + Map_1.default._instance.mapBlocksWall[this.posX][this.posY].getComponent("MapBlock").block_Id = "Wall"; + //console.log(this.posX,this.posY,MapConroler._instance.mapBlocksWall[this.posX][this.posY].getComponent("MapBlock").block_Id); + // console.log(this.posX,this.posY,this.node.zIndex); + //this.node.getChildByName("num").getComponent(cc.Label).string = direction; + //this.node.getChildByName("num").getComponent(cc.Label).string = ":" + this.node.parent.zIndex; + } + if (wall_Info != null) { + this.color = wall_Info.color; + this.special = wall_Info.special; + this.initType(); + if (wall_Info.length > 0) { + this.initColor(wall_Info.length); + } + else + this.node.removeComponent("cc.Sprite"); + if (this.posX != null) { + Map_1.default._instance.mapBlocksWall[this.posX][this.posY].getComponent("MapBlock").block_Id = "Wall"; + //console.log(this.posX,this.posY,MapConroler._instance.mapBlocksWall[this.posX][this.posY].getComponent("MapBlock").block_Id); + } + } + // setTimeout(() => { + // this.node.getChildByName("num").getComponent(cc.Label).string = ":" + this.node.parent.zIndex; + // }, 1000); + }; + //创建门的颜色 + Wall.prototype.initColor = function (length) { + var direction = this.node.parent.name; + var double = 0; + if (direction == "left" || direction == "right") { + double = 3; + } + // debugger; + if (this.wall_SpriteFrames) { + var name = this.color + "color" + (length + double); + var spriteFrame = this.wall_SpriteFrames._spriteFrames[name]; + this.node.getComponent(cc.Sprite).spriteFrame = spriteFrame; + } + if (this.down_SpriteFrames) { + var name2 = this.color + "down" + (length + double); + var downFrame = this.down_SpriteFrames._spriteFrames[name2]; + this.node.parent.getChildByName("down").getComponent(cc.Sprite).spriteFrame = downFrame; + } + }; + //创建特殊类型门 + Wall.prototype.initType = function () { + switch (this.special) { + case WallSpecial.星星门: + var star = cc.instantiate(Map_1.default._instance.Block_Prop[this.special]); + star.parent = this.node.parent; + // console.log("门的方向",this.direction,"长度",this.wall_Info.length); + // star.scaleX = star.scaleY = 0.5; + if (this.wall_Info.length > 0) { + if (this.direction == "right" || this.direction == "left") { + star.children[this.wall_Info.length + 2].active = true; + } + else if (this.direction == "up" || this.direction == "down") { + star.children[this.wall_Info.length - 1].active = true; + } + } + star.setPosition(this.node.width / 2 + this.node.x, this.node.height / 2 + this.node.y); + break; + case WallSpecial.开关门: + var name = "open" + this.wall_Info.length; + this.openNode = this.node.parent.getChildByName("open").getChildByName(name); + this.openNode.active = true; + if (this.wall_Info.lock == false) { + this.open = true; + this.openNode.children[0].scaleX *= 0.01; + this.openNode.children[1].scaleX *= 0.01; + } + else { + this.open = false; + } + break; + case WallSpecial.冻结门: + var freeze = "freeze" + this.wall_Info.length; + this.freezeNode = this.node.parent.getChildByName("freeze").getChildByName(freeze); + this.freezeNode.active = true; + if (this.wall_Info.freeze) { + this.freezeNode.getChildByName("num").getComponent(cc.Label).string = this.wall_Info.freeze + ""; + } + break; + } + }; + //播放星星门通过 + Wall.prototype.playStarDoor = function () { + if (this.node.parent.getChildByName("star")) { + var star = this.node.parent.getChildByName("star"); + for (var i = 0; i < star.children.length; i++) { + if (star.children[i].active == true) { + var starChild = star.children[i]; + for (var j = 0; j < starChild.children.length; j++) { + starChild.children[j].active = true; + starChild.children[j].getComponent(sp.Skeleton).setAnimation(1, "taopao1", false); + } + } + } + } + }; + //改变开关门状态 + Wall.prototype.changeLock = function () { + this.open = !this.open; + console.log("开关门状态改变", this.open); + if (!this.openNode.active) { + this.openNode.active = true; + } + var fill = this.openNode.children[0].scaleX == 1 ? 0.01 : 1; + if (this.openNode.children[0].scaleX < 0) + fill = -fill; + // console.log("目标",fill); + cc.tween(this.openNode.children[0]) + .to(0.3, { scaleX: this.openNode.children[0].scaleX < 0 ? -fill : fill }) + .call(function () { + // console.log("左边完成"); + }) + .start(); + cc.tween(this.openNode.children[1]) + .to(0.3, { scaleX: this.openNode.children[1].scaleX < 0 ? -fill : fill }) + .call(function () { + // console.log("右边完成"); + }) + .start(); + }; + Wall.prototype.changeFreeze = function () { + var numStr = this.freezeNode.getChildByName("num").getComponent(cc.Label); + var num = parseInt(numStr.string); + num -= 1; + this.freezeNode.getChildByName("num").getComponent(cc.Label).string = num + ""; + if (num == 0) { + this.freezeNode.parent.active = false; + } + }; + Wall.prototype.downDoor = function () { + if (this.openNode) { + if (this.openNode.children[0].scaleX == 1) + return; + } + if (this.freezeNode) { + if (this.freezeNode.active == true) + return; + } + this.node.opacity = 0; + if (this.special == WallSpecial.星星门) { + this.node.parent.getChildByName("star").y -= 10; + } + this.node.parent.getChildByName("down").active = true; + }; + Wall.prototype.upDoor = function () { + if (this.special == WallSpecial.星星门) { + this.node.parent.getChildByName("star").y += 10; + } + this.node.parent.getChildByName("down").active = false; + this.node.opacity = 250; + }; + __decorate([ + property(cc.Label) + ], Wall.prototype, "number", void 0); + __decorate([ + property({ + tooltip: '墙或者门的方向', + type: cc.Enum(WallType), + }) + ], Wall.prototype, "type", void 0); + __decorate([ + property({ + tooltip: '墙或者门的方向', + type: cc.Enum(WallSpecial), + }) + ], Wall.prototype, "special", void 0); + __decorate([ + property({ + tooltip: '门的颜色', + type: cc.Enum(WallColor), + }) + ], Wall.prototype, "color", void 0); + __decorate([ + property(cc.SpriteAtlas) + ], Wall.prototype, "wall_SpriteFrames", void 0); + __decorate([ + property(cc.SpriteAtlas) + ], Wall.prototype, "down_SpriteFrames", void 0); + Wall = __decorate([ + ccclass + ], Wall); + return Wall; +}(cc.Component)); +exports.default = Wall; + +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,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImFzc2V0c1xcU2NyaXB0XFxXYWxsLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSxvQkFBb0I7QUFDcEIsd0VBQXdFO0FBQ3hFLG1CQUFtQjtBQUNuQixrRkFBa0Y7QUFDbEYsOEJBQThCO0FBQzlCLGtGQUFrRjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUVsRiw2QkFBZ0M7QUFFMUIsSUFBQSxLQUFzQixFQUFFLENBQUMsVUFBVSxFQUFsQyxPQUFPLGFBQUEsRUFBRSxRQUFRLGNBQWlCLENBQUM7QUFFMUMsSUFBWSxXQVNYO0FBVEQsV0FBWSxXQUFXO0lBQ25CLE9BQU87SUFDUCx5RUFBUyxDQUFBO0lBQ1QsT0FBTztJQUNQLHlFQUFTLENBQUE7SUFDVCxPQUFPO0lBQ1AseUVBQVMsQ0FBQTtJQUNULFFBQVE7SUFDUix5RUFBUyxDQUFBO0FBQ2IsQ0FBQyxFQVRXLFdBQVcsR0FBWCxtQkFBVyxLQUFYLG1CQUFXLFFBU3RCO0FBRUQsSUFBWSxRQWtCWDtBQWxCRCxXQUFZLFFBQVE7SUFFaEIsU0FBUztJQUNULCtFQUFVLENBQUE7SUFDVixTQUFTO0lBQ1QsK0VBQVUsQ0FBQTtJQUNWLE9BQU87SUFDUCwrRUFBVSxDQUFBO0lBQ1YsT0FBTztJQUNQLCtFQUFVLENBQUE7SUFDVixTQUFTO0lBQ1QsK0VBQVUsQ0FBQTtJQUNWLE9BQU87SUFDUCwrRUFBVSxDQUFBO0lBQ1YsT0FBTztJQUNQLCtFQUFVLENBQUE7SUFDVixPQUFPO0lBQ1AsK0VBQVUsQ0FBQTtBQUNkLENBQUMsRUFsQlcsUUFBUSxHQUFSLGdCQUFRLEtBQVIsZ0JBQVEsUUFrQm5CO0FBRUQsSUFBWSxTQXFCWDtBQXJCRCxXQUFZLFNBQVM7SUFDakIsU0FBUztJQUNULHlEQUFRLENBQUE7SUFDUixPQUFPO0lBQ1AseURBQVEsQ0FBQTtJQUNSLE9BQU87SUFDUCx5REFBUSxDQUFBO0lBQ1IsU0FBUztJQUNULHlEQUFRLENBQUE7SUFDUixPQUFPO0lBQ1AseURB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LFFBQVEsQ0FBQztZQUNOLE9BQU8sRUFBRSxTQUFTO1lBQ2xCLElBQUksRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQztTQUM3QixDQUFDO3lDQUNxQztJQU12QztRQUpDLFFBQVEsQ0FBQztZQUNOLE9BQU8sRUFBRSxNQUFNO1lBQ2YsSUFBSSxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDO1NBQzNCLENBQUM7dUNBQzhCO0lBR2hDO1FBREMsUUFBUSxDQUFDLEVBQUUsQ0FBQyxXQUFXLENBQUM7bURBQ2dCO0lBR3pDO1FBREMsUUFBUSxDQUFDLEVBQUUsQ0FBQyxXQUFXLENBQUM7bURBQ2dCO0lBM0J4QixJQUFJO1FBRHhCLE9BQU87T0FDYSxJQUFJLENBcVB4QjtJQUFELFdBQUM7Q0FyUEQsQUFxUEMsQ0FyUGlDLEVBQUUsQ0FBQyxTQUFTLEdBcVA3QztrQkFyUG9CLElBQUkiLCJmaWxlIjoiIiwic291cmNlUm9vdCI6Ii8iLCJzb3VyY2VzQ29udGVudCI6WyIvLyBMZWFybiBUeXBlU2NyaXB0OlxyXG4vLyAgLSBodHRwczovL2RvY3MuY29jb3MuY29tL2NyZWF0b3IvbWFudWFsL2VuL3NjcmlwdGluZy90eXBlc2NyaXB0Lmh0bWxcclxuLy8gTGVhcm4gQXR0cmlidXRlOlxyXG4vLyAgLSBodHRwczovL2RvY3MuY29jb3MuY29tL2NyZWF0b3IvbWFudWFsL2VuL3NjcmlwdGluZy9yZWZlcmVuY2UvYXR0cmlidXRlcy5odG1sXHJcbi8vIExlYXJuIGxpZmUtY3ljbGUgY2FsbGJhY2tzOlxyXG4vLyAgLSBodHRwczovL2RvY3MuY29jb3MuY29tL2NyZWF0b3IvbWFudWFsL2VuL3NjcmlwdGluZy9saWZlLWN5Y2xlLWNhbGxiYWNrcy5odG1sXHJcblxyXG5pbXBvcnQgTWFwQ29ucm9sZXIgZnJvbSBcIi4vTWFwXCI7XHJcblxyXG5jb25zdCB7Y2NjbGFzcywgcHJvcGVydHl9ID0gY2MuX2RlY29yYXRvcjtcclxuXHJcbmV4cG9ydCBlbnVtIFdhbGxTcGVjaWFse1xyXG4gICAgLyrmma7pgJrpl6gqL1xyXG4gICAgXCLmma7pgJrpl6hcIiA9IDAsICBcclxuICAgIC8q5pif5pif6ZeoKi9cclxuICAgIFwi5pif5pif6ZeoXCIgPSAxLCAgXHJcbiAgICAvKuW8gOWFs+mXqCovXHJcbiAgICBcIuW8gOWFs+mXqFwiID0gMiwgIFxyXG4gICAgLyrlhrvnu5Ppl6ggKi9cclxuICAgIFwi5Ya757uT6ZeoXCIgPSAzLCAgXHJcbn1cclxuXHJcbmV4cG9ydCBlbnVtIFdhbGxUeXBle1xyXG4gICAgXHJcbiAgICAvKuaZrumAmuWcsOWdlyAqL1xyXG4gICAgXCLpl6jmqKrlkJHkuItcIiA9IDAsICBcclxuICAgIC8q6LW354K55Zyw5Z2XICovXHJcbiAgICBcIumXqOaoquWQkeS4ilwiID0gMSwgIFxyXG4gICAgLyrmub/lnLAgKi9cclxuICAgIFwi6Zeo56uW5ZCR5Y+zXCIgPSAyLCAgXHJcbiAgICAvKuWxseWzsCAqL1xyXG4gICAgXCLpl6jnq5blkJHlt6ZcIiA9IDMsICBcclxuICAgIC8q57uI54K55Zyw5Z2XICovXHJcbiAgICBcIuWimeaoquWQkeS4i1wiID0gNCwgIFxyXG4gICAgLyrmga/lo6QgKi9cclxuICAgIFwi5aKZ5qiq5ZCR5LiKXCIgPSA1LCAgXHJcbiAgICAvKuWKoOWbuiAqL1xyXG4gICAgXCLlopnnq5blkJHlj7NcIiA9IDYsICBcclxuICAgIC8q5Yqg5Zu6ICovXHJcbiAgICBcIuWimeerluWQkeW3plwiID0gNywgIFxyXG59XHJcblxyXG5leHBvcnQgZW51bSBXYWxsQ29sb3J7XHJcbiAgICAvKuaZrumAmuWcsOWdlyAqL1xyXG4gICAgXCLntKvoibJcIiA9IDAsICBcclxuICAgIC8q5rm/5ZywICovXHJcbiAgICBcIum7hOiJslwiID0gMSwgIFxyXG4gICAgLyrlsbHls7AgKi9cclxuICAgIFwi57u/6ImyXCIgPSAyLCAgXHJcbiAgICAvKue7iOeCueWcsOWdlyAqL1xyXG4gICAgXCLok53oibJcIiA9IDMsICBcclxuICAgIC8q5oGv5aOkICovXHJcbiAgICBcIueyieiJslwiID0gNCwgIFxyXG4gICAgLyrliqDlm7ogKi9cclxuICAgIFwi5qmY6buE6ImyXCIgPSA1LCAgXHJcbiAgICAvKuWKoOWbuiAqL1xyXG4gICAgXCLpnZLoibJcIiA9IDYsICBcclxuICAgIC8q5Yqg5Zu6ICovXHJcbiAgICBcIueZveiJslwiID0gNywgIFxyXG4gICAgLyrmma7pgJrlnLDlnZcgKi9cclxuICAgIFwi57qi6ImyXCIgPSA4LCBcclxuICAgIC8q5pmu6YCa5Zyw5Z2XICovXHJcbiAgICBcIueBsOiJslwiID0gOSwgXHJcbn1cclxuXHJcbkBjY2NsYXNzXHJcbmV4cG9ydCBkZWZhdWx0IGNsYXNzIFdhbGwgZXh0ZW5kcyBjYy5Db21wb25lbnQge1xyXG5cclxuICAgIEBwcm9wZXJ0eShjYy5MYWJlbClcclxuICAgIG51bWJlcjogY2MuTGFiZWwgPSBudWxsO1xyXG5cclxuICAgIEBwcm9wZXJ0eSh7XHJcbiAgICAgICAgdG9vbHRpcDogJ+WimeaIluiAhemXqOeahOaWueWQkScsXHJcbiAgICAgICAgdHlwZTogY2MuRW51bShXYWxsVHlwZSksXHJcbiAgICB9KVxyXG4gICAgdHlwZTogV2FsbFR5cGUgPSBXYWxsVHlwZS7lopnmqKrlkJHkuIs7XHJcblxyXG4gICAgQHByb3BlcnR5KHtcclxuICAgICAgICB0b29sdGlwOiAn5aKZ5oiW6ICF6Zeo55qE5pa55ZCRJyxcclxuICAgICAgICB0eXBlOiBjYy5FbnVtKFdhbGxTcGVjaWFsKSxcclxuICAgIH0pXHJcbiAgICBzcGVjaWFsOiBXYWxsU3BlY2lhbCA9IFdhbGxTcGVjaWFsLuaZrumAmumXqDtcclxuXHJcbiAgICBAcHJvcGVydHkoe1xyXG4gICAgICAgIHRvb2x0aXA6ICfpl6jnmoTpopzoibInLFxyXG4gICAgICAgIHR5cGU6IGNjLkVudW0oV2FsbENvbG9yKSxcclxuICAgIH0pXHJcbiAgICBjb2xvcjogV2FsbENvbG9yID0gV2FsbENvbG9yLue0q+iJsjtcclxuXHJcbiAgICBAcHJvcGVydHkoY2MuU3ByaXRlQXRsYXMpXHJcbiAgICB3YWxsX1Nwcml0ZUZyYW1lczogY2MuU3ByaXRlQXRsYXMgPSBudWxsO1xyXG5cclxuICAgIEBwcm9wZXJ0eShjYy5TcHJpdGVBdGxhcylcclxuICAgIGRvd25fU3ByaXRlRnJhbWVzOiBjYy5TcHJpdGVBdGxhcyA9IG51bGw7XHJcblxyXG5cclxuICAgIHBvc1g6IG51bWJlcjtcclxuICAgIHBvc1k6IG51bWJlcjtcclxuICAgIGRpcmVjdGlvbjogYW55O1xyXG4gICAgd2FsbF9JbmZvOiBhbnk7XHJcbiAgICBvcGVuTm9kZTogY2MuTm9kZTtcclxuICAgIGZyZWV6ZU5vZGU6IGNjLk5vZGU7XHJcbiAgICBvcGVuOmJvb2xlYW47XHJcbiAgICBcclxuXHJcbiAgICAvLyBMSUZFLUNZQ0xFIENBTExCQUNLUzpcclxuXHJcbiAgICAvLyBvbkxvYWQgKCkge31cclxuXHJcbiAgICBzdGFydCAoKSB7XHJcbiAgICAgICAgLy8gY29uc29sZS5sb2codGhpcy50eXBlKTtcclxuICAgIH1cclxuXHJcbiAgICBqc29uRGVlcENsb25lPFQ+KG9iajogVCk6IFQge1xyXG4gICAgICAgIHJldHVybiBKU09OLnBhcnNlKEpTT04uc3RyaW5naWZ5KG9iaikpO1xyXG4gICAgfVxyXG5cclxuICAgIGluaXQod2FsbF9JbmZvLCBwb3NYOiBudW1iZXIsIHBvc1k6IG51bWJlciwgZGlyZWN0aW9uOiBhbnkpe1xyXG4gICAgICAgIFxyXG4gICAgICAgIHRoaXMud2FsbF9JbmZvID0gdGhpcy5qc29uRGVlcENsb25lKHdhbGxfSW5mbyk7XHJcbiAgICAgICAgLy8gdGhpcy5vcGVuID0gdHJ1ZTtcclxuICAgICAgICBpZih3YWxsX0luZm8gPT0gbnVsbCl7XHJcbiAgICAgICAgICAgIHRoaXMucG9zWCA9IHBvc1g7XHJcbiAgICAgICAgICAgIHRoaXMucG9zWSA9IHBvc1k7XHJcbiAgICAgICAgICAgIFxyXG4gICAgICAgICAgICBpZihkaXJlY3Rpb24pdGhpcy5kaXJlY3Rpb24gPSBkaXJlY3Rpb247XHJcbiAgICAgICAgICAgIC8vIGNvbnNvbGUubG9nKFwi6Zeo5pa55ZCR6LWL5YC8XCIsZGlyZWN0aW9uKTtcclxuICAgICAgICAgICAgaWYoZGlyZWN0aW9uID09IFwidXBcIiApe1xyXG4gICAgICAgICAgICAgICAgdGhpcy5ub2RlLnBhcmVudC56SW5kZXggPSAxMDAgKyB0aGlzLnBvc1ggLSB0aGlzLnBvc1kqMztcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBlbHNlIGlmKCBkaXJlY3Rpb24gPT0gXCJkb3duXCIgfHwgZGlyZWN0aW9uID09IFwicmlnaHRcIiB8fCBcclxuICAgICAgICAgICAgICAgIGRpcmVjdGlvbiA9PSBcInJpZ2h0ZG93blwiIHx8IGRpcmVjdGlvbiA9PSBcImRvd25yaWdodFwiXHJcbiAgICAgICAgICAgIHx8IGRpcmVjdGlvbiA9PSBcInJpZ2h0dXBcIiB8fCBkaXJlY3Rpb24gPT0gXCJ1cHJpZ2h0XCIpe1xyXG4gICAgICAgICAgICAgICAgdGhpcy5ub2RlLnBhcmVudC56SW5kZXggPSAzMCArIHRoaXMucG9zWCAtIHRoaXMucG9zWSozO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBlbHNlIGlmKCBkaXJlY3Rpb24gPT0gXCJsZWZ0XCJ8fCBkaXJlY3Rpb24gPT0gXCJsZWZ0ZG93blwiIHx8IGRpcmVjdGlvbiA9PSBcImRvd25sZWZ0XCIpe1xyXG4gICAgICAgICAgICAgICAgdGhpcy5ub2RlLnBhcmVudC56SW5kZXggPSA3MCArIHRoaXMucG9zWCAtIHRoaXMucG9zWSozOyBcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBlbHNlIHRoaXMubm9kZS5wYXJlbnQuekluZGV4ID0gNzAgKyB0aGlzLnBvc1ggLSB0aGlzLnBvc1kqMztcclxuXHJcbiAgICAgICAgICAgIE1hcENvbnJvbGVyLl9pbnN0YW5jZS5tYXBCbG9ja3NXYWxsW3RoaXMucG9zWF1bdGhpcy5wb3NZXS5nZXRDb21wb25lbnQoXCJNYXBCbG9ja1wiKS5ibG9ja19JZCA9IFwiV2FsbFwiO1xyXG4gICAgICAgICAgICAvL2NvbnNvbGUubG9nKHRoaXMucG9zWCx0aGlzLnBvc1ksTWFwQ29ucm9sZXIuX2luc3RhbmNlLm1hcEJsb2Nrc1dhbGxbdGhpcy5wb3NYXVt0aGlzLnBvc1ldLmdldENvbXBvbmVudChcIk1hcEJsb2NrXCIpLmJsb2NrX0lkKTtcclxuICAgICAgICAgICAgLy8gY29uc29sZS5sb2codGhpcy5wb3NYLHRoaXMucG9zWSx0aGlzLm5vZGUuekluZGV4KTtcclxuICAgICAgICAgICAgLy90aGlzLm5vZGUuZ2V0Q2hpbGRCeU5hbWUoXCJudW1cIikuZ2V0Q29tcG9uZW50KGNjLkxhYmVsKS5zdHJpbmcgPSBkaXJlY3Rpb247XHJcbiAgICAgICAgICAgLy90aGlzLm5vZGUuZ2V0Q2hpbGRCeU5hbWUoXCJudW1cIikuZ2V0Q29tcG9uZW50KGNjLkxhYmVsKS5zdHJpbmcgPSBcIjpcIiArIHRoaXMubm9kZS5wYXJlbnQuekluZGV4O1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZih3YWxsX0luZm8gIT0gbnVsbCl7XHJcbiAgICAgICAgICAgIHRoaXMuY29sb3IgPSB3YWxsX0luZm8uY29sb3I7XHJcbiAgICAgICAgICAgIHRoaXMuc3BlY2lhbCA9IHdhbGxfSW5mby5zcGVjaWFsO1xyXG4gICAgICAgICAgICB0aGlzLmluaXRUeXBlKCk7XHJcbiAgICAgICAgICAgIGlmKHdhbGxfSW5mby5sZW5ndGggPiAwKXtcclxuICAgICAgICAgICAgICAgIHRoaXMuaW5pdENvbG9yKHdhbGxfSW5mby5sZW5ndGgpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGVsc2UgdGhpcy5ub2RlLnJlbW92ZUNvbXBvbmVudChcImNjLlNwcml0ZVwiKTtcclxuICAgICAgICAgICAgaWYodGhpcy5wb3NYICE9IG51bGwpe1xyXG4gICAgICAgICAgICAgICAgTWFwQ29ucm9sZXIuX2luc3RhbmNlLm1hcEJsb2Nrc1dhbGxbdGhpcy5wb3NYXVt0aGlzLnBvc1ldLmdldENvbXBvbmVudChcIk1hcEJsb2NrXCIpLmJsb2NrX0lkID0gXCJXYWxsXCI7XHJcbiAgICAgICAgICAgICAgICAvL2NvbnNvbGUubG9nKHRoaXMucG9zWCx0aGlzLnBvc1ksTWFwQ29ucm9sZXIuX2luc3RhbmNlLm1hcEJsb2Nrc1dhbGxbdGhpcy5wb3NYXVt0aGlzLnBvc1ldLmdldENvbXBvbmVudChcIk1hcEJsb2NrXCIpLmJsb2NrX0lkKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICAvLyBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgICAvLyAgICAgdGhpcy5ub2RlLmdldENoaWxkQnlOYW1lKFwibnVtXCIpLmdldENvbXBvbmVudChjYy5MYWJlbCkuc3RyaW5nID0gXCI6XCIgKyB0aGlzLm5vZGUucGFyZW50LnpJbmRleDtcclxuICAgICAgICAvLyB9LCAxMDAwKTtcclxuIFxyXG4gICAgfVxyXG5cclxuICAgIC8v5Yib5bu66Zeo55qE6aKc6ImyXHJcbiAgICBpbml0Q29sb3IobGVuZ3RoOiBudW1iZXIpe1xyXG4gICAgICAgIGxldCBkaXJlY3Rpb24gPSB0aGlzLm5vZGUucGFyZW50Lm5hbWU7XHJcbiAgICAgICAgbGV0IGRvdWJsZSA9IDA7XHJcbiAgICAgICAgaWYoZGlyZWN0aW9uID09IFwibGVmdFwiICB8fCBkaXJlY3Rpb24gPT0gXCJyaWdodFwiKXtcclxuICAgICAgICAgICAgZG91YmxlID0gMztcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIC8vIGRlYnVnZ2VyO1xyXG4gICAgICAgIGlmKHRoaXMud2FsbF9TcHJpdGVGcmFtZXMpe1xyXG4gICAgICAgICAgICBsZXQgbmFtZSA9IHRoaXMuY29sb3IrXCJjb2xvclwiICsgKGxlbmd0aCtkb3VibGUpO1xyXG4gICAgICAgICAgICB2YXIgc3ByaXRlRnJhbWUgPSB0aGlzLndhbGxfU3ByaXRlRnJhbWVzLl9zcHJpdGVGcmFtZXNbbmFtZV07XHJcbiAgICAgICAgICAgIHRoaXMubm9kZS5nZXRDb21wb25lbnQoY2MuU3ByaXRlKS5zcHJpdGVGcmFtZSA9IHNwcml0ZUZyYW1lO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZih0aGlzLmRvd25fU3ByaXRlRnJhbWVzKXtcclxuICAgICAgICAgICAgbGV0IG5hbWUyID0gdGhpcy5jb2xvciArIFwiZG93blwiICsgKGxlbmd0aCtkb3VibGUpO1xyXG4gICAgICAgICAgICB2YXIgZG93bkZyYW1lID0gdGhpcy5kb3duX1Nwcml0ZUZyYW1lcy5fc3ByaXRlRnJhbWVzW25hbWUyXTtcclxuICAgICAgICAgICAgdGhpcy5ub2RlLnBhcmVudC5nZXRDaGlsZEJ5TmFtZShcImRvd25cIikuZ2V0Q29tcG9uZW50KGNjLlNwcml0ZSkuc3ByaXRlRnJhbWUgPSBkb3duRnJhbWU7XHJcbiAgICAgICAgfVxyXG5cclxuICAgIFxyXG4gICAgfVxyXG5cclxuICAgIC8v5Yib5bu654m55q6K57G75Z6L6ZeoXHJcbiAgICBpbml0VHlwZSgpe1xyXG4gICAgICAgIHN3aXRjaCh0aGlzLnNwZWNpYWwpe1xyXG4gICAgICAgICAgICBjYXNlIFdhbGxTcGVjaWFsLuaYn+aYn+mXqDpcclxuICAgICAgICAgICAgICAgIGxldCBzdGFyID0gY2MuaW5zdGFudGlhdGUoTWFwQ29ucm9sZXIuX2luc3RhbmNlLkJsb2NrX1Byb3BbdGhpcy5zcGVjaWFsXSk7XHJcbiAgICAgICAgICAgICAgICBzdGFyLnBhcmVudCA9IHRoaXMubm9kZS5wYXJlbnQ7XHJcbiAgICAgICAgICAgICAgICAvLyBjb25zb2xlLmxvZyhcIumXqOeahOaWueWQkVwiLHRoaXMuZGlyZWN0aW9uLFwi6ZW/5bqmXCIsdGhpcy53YWxsX0luZm8ubGVuZ3RoKTtcclxuICAgICAgICAgICAgICAgIC8vIHN0YXIuc2NhbGVYID0gc3Rhci5zY2FsZVkgPSAwLjU7XHJcbiAgICAgICAgICAgICAgICBpZih0aGlzLndhbGxfSW5mby5sZW5ndGggPiAwKXtcclxuICAgICAgICAgICAgICAgICAgICBpZih0aGlzLmRpcmVjdGlvbiA9PSBcInJpZ2h0XCIgfHwgdGhpcy5kaXJlY3Rpb24gPT0gXCJsZWZ0XCIpe1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBzdGFyLmNoaWxkcmVuW3RoaXMud2FsbF9JbmZvLmxlbmd0aCArIDJdLmFjdGl2ZSA9IHRydWU7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIGVsc2UgaWYodGhpcy5kaXJlY3Rpb24gPT0gXCJ1cFwiIHx8IHRoaXMuZGlyZWN0aW9uID09IFwiZG93blwiKXtcclxuICAgICAgICAgICAgICAgICAgICAgICAgc3Rhci5jaGlsZHJlblt0aGlzLndhbGxfSW5mby5sZW5ndGggLSAxXS5hY3RpdmUgPSB0cnVlO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIHN0YXIuc2V0UG9zaXRpb24odGhpcy5ub2RlLndpZHRoLzIrdGhpcy5ub2RlLngsdGhpcy5ub2RlLmhlaWdodC8yK3RoaXMubm9kZS55KTtcclxuICAgICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICBjYXNlIFdhbGxTcGVjaWFsLuW8gOWFs+mXqDpcclxuICAgICAgICAgICAgICAgIGxldCBuYW1lID0gXCJvcGVuXCIgKyB0aGlzLndhbGxfSW5mby5sZW5ndGg7XHJcbiAgICAgICAgICAgICAgICB0aGlzLm9wZW5Ob2RlID0gdGhpcy5ub2RlLnBhcmVudC5nZXRDaGlsZEJ5TmFtZShcIm9wZW5cIikuZ2V0Q2hpbGRCeU5hbWUobmFtZSk7XHJcbiAgICAgICAgICAgICAgICB0aGlzLm9wZW5Ob2RlLmFjdGl2ZSA9IHRydWU7XHJcbiAgICAgICAgICAgICAgICBpZih0aGlzLndhbGxfSW5mby5sb2NrID09IGZhbHNlKXtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLm9wZW4gPSB0cnVlO1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMub3Blbk5vZGUuY2hpbGRyZW5bMF0uc2NhbGVYICo9IDAuMDE7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5vcGVuTm9kZS5jaGlsZHJlblsxXS5zY2FsZVggKj0gMC4wMTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIGVsc2V7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5vcGVuID0gZmFsc2U7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgY2FzZSBXYWxsU3BlY2lhbC7lhrvnu5Ppl6g6XHJcbiAgICAgICAgICAgICAgICBsZXQgZnJlZXplID0gXCJmcmVlemVcIiArIHRoaXMud2FsbF9JbmZvLmxlbmd0aDtcclxuICAgICAgICAgICAgICAgIHRoaXMuZnJlZXplTm9kZSA9IHRoaXMubm9kZS5wYXJlbnQuZ2V0Q2hpbGRCeU5hbWUoXCJmcmVlemVcIikuZ2V0Q2hpbGRCeU5hbWUoZnJlZXplKTtcclxuICAgICAgICAgICAgICAgIHRoaXMuZnJlZXplTm9kZS5hY3RpdmUgPSB0cnVlO1xyXG4gICAgICAgICAgICAgICAgaWYodGhpcy53YWxsX0luZm8uZnJlZXplKXtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLmZyZWV6ZU5vZGUuZ2V0Q2hpbGRCeU5hbWUoXCJudW1cIikuZ2V0Q29tcG9uZW50KGNjLkxhYmVsKS5zdHJpbmcgPSB0aGlzLndhbGxfSW5mby5mcmVlemUrXCJcIjtcclxuICAgICAgICAgICAgICAgIH0gXHJcbiAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICB9IFxyXG4gICAgfVxyXG5cclxuICAgIC8v5pKt5pS+5pif5pif6Zeo6YCa6L+HXHJcbiAgICBwbGF5U3RhckRvb3IoKXtcclxuICAgICAgICBpZih0aGlzLm5vZGUucGFyZW50LmdldENoaWxkQnlOYW1lKFwic3RhclwiKSl7XHJcbiAgICAgICAgICAgIGxldCBzdGFyID0gdGhpcy5ub2RlLnBhcmVudC5nZXRDaGlsZEJ5TmFtZShcInN0YXJcIik7XHJcbiAgICAgICAgICAgIGZvcihsZXQgaT0wOyBpPHN0YXIuY2hpbGRyZW4ubGVuZ3RoOyBpKyspe1xyXG4gICAgICAgICAgICAgICAgaWYoc3Rhci5jaGlsZHJlbltpXS5hY3RpdmUgPT0gdHJ1ZSl7XHJcbiAgICAgICAgICAgICAgICAgICAgbGV0IHN0YXJDaGlsZCA9IHN0YXIuY2hpbGRyZW5baV07XHJcbiAgICAgICAgICAgICAgICAgICAgZm9yKGxldCBqPTA7IGo8c3RhckNoaWxkLmNoaWxkcmVuLmxlbmd0aDsgaisrKXtcclxuICAgICAgICAgICAgICAgICAgICAgICAgc3RhckNoaWxkLmNoaWxkcmVuW2pdLmFjdGl2ZSA9IHRydWVcclxuICAgICAgICAgICAgICAgICAgICAgICAgc3RhckNoaWxkLmNoaWxkcmVuW2pdLmdldENvbXBvbmVudChzcC5Ta2VsZXRvbikuc2V0QW5pbWF0aW9uKDEsXCJ0YW9wYW8xXCIsZmFsc2UpO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcblxyXG4gICAgLy/mlLnlj5jlvIDlhbPpl6jnirbmgIFcclxuICAgIGNoYW5nZUxvY2soKXtcclxuICAgICAgICB0aGlzLm9wZW4gPSAhdGhpcy5vcGVuO1xyXG4gICAgICAgIGNvbnNvbGUubG9nKFwi5byA5YWz6Zeo54q25oCB5pS55Y+YXCIsdGhpcy5vcGVuKTtcclxuICAgICAgICBpZighdGhpcy5vcGVuTm9kZS5hY3RpdmUpe1xyXG4gICAgICAgICAgICB0aGlzLm9wZW5Ob2RlLmFjdGl2ZSA9IHRydWU7XHJcbiAgICAgICAgfVxyXG4gIFxyXG5cclxuICAgICAgICBsZXQgZmlsbCA9IHRoaXMub3Blbk5vZGUuY2hpbGRyZW5bMF0uc2NhbGVYPT0xID8gMC4wMToxO1xyXG4gICAgICAgIGlmKHRoaXMub3Blbk5vZGUuY2hpbGRyZW5bMF0uc2NhbGVYIDwgMCkgZmlsbCA9IC1maWxsO1xyXG4gICAgICAgIC8vIGNvbnNvbGUubG9nKFwi55uu5qCHXCIsZmlsbCk7XHJcblxyXG4gICAgICAgIGNjLnR3ZWVuKHRoaXMub3Blbk5vZGUuY2hpbGRyZW5bMF0pXHJcbiAgICAgICAgLnRvKDAuMywge3NjYWxlWDogdGhpcy5vcGVuTm9kZS5jaGlsZHJlblswXS5zY2FsZVggPCAwPy1maWxsOmZpbGx9KVxyXG4gICAgICAgIC5jYWxsKCgpPT57XHJcbiAgICAgICAgICAgIC8vIGNvbnNvbGUubG9nKFwi5bem6L655a6M5oiQXCIpO1xyXG4gICAgICAgIH0pXHJcbiAgICAgICAgLnN0YXJ0KCk7XHJcblxyXG4gICAgICAgIGNjLnR3ZWVuKHRoaXMub3Blbk5vZGUuY2hpbGRyZW5bMV0pXHJcbiAgICAgICAgLnRvKDAuMywge3NjYWxlWDogdGhpcy5vcGVuTm9kZS5jaGlsZHJlblsxXS5zY2FsZVggPCAwPy1maWxsOmZpbGx9KVxyXG4gICAgICAgIC5jYWxsKCgpPT57XHJcbiAgICAgICAgICAgIC8vIGNvbnNvbGUubG9nKFwi5Y+z6L655a6M5oiQXCIpO1xyXG4gICAgICAgIH0pXHJcbiAgICAgICAgLnN0YXJ0KCk7XHJcbiAgICB9XHJcblxyXG4gICAgY2hhbmdlRnJlZXplKCl7XHJcbiAgICAgICAgbGV0IG51bVN0ciA9IHRoaXMuZnJlZXplTm9kZS5nZXRDaGlsZEJ5TmFtZShcIm51bVwiKS5nZXRDb21wb25lbnQoY2MuTGFiZWwpO1xyXG4gICAgICAgIGxldCBudW0gPSBwYXJzZUludChudW1TdHIuc3RyaW5nKTtcclxuICAgICAgICBudW0gLT0gMTtcclxuICAgICAgICB0aGlzLmZyZWV6ZU5vZGUuZ2V0Q2hpbGRCeU5hbWUoXCJudW1cIikuZ2V0Q29tcG9uZW50KGNjLkxhYmVsKS5zdHJpbmcgPSBudW0rXCJcIjtcclxuICAgICAgICBpZihudW0gPT0gMCl7XHJcbiAgICAgICAgICAgIHRoaXMuZnJlZXplTm9kZS5wYXJlbnQuYWN0aXZlID0gZmFsc2U7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIGRvd25Eb29yKCl7XHJcbiAgICAgICAgaWYodGhpcy5vcGVuTm9kZSl7XHJcbiAgICAgICAgICAgIGlmKHRoaXMub3Blbk5vZGUuY2hpbGRyZW5bMF0uc2NhbGVYID09IDEpXHJcbiAgICAgICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmKHRoaXMuZnJlZXplTm9kZSl7XHJcbiAgICAgICAgICAgIGlmKHRoaXMuZnJlZXplTm9kZS5hY3RpdmUgPT0gdHJ1ZSlcclxuICAgICAgICAgICAgICAgIHJldHVybjsgXHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICB0aGlzLm5vZGUub3BhY2l0eSA9IDA7XHJcbiAgICAgICAgaWYodGhpcy5zcGVjaWFsID09IFdhbGxTcGVjaWFsLuaYn+aYn+mXqCl7XHJcbiAgICAgICAgICAgIHRoaXMubm9kZS5wYXJlbnQuZ2V0Q2hpbGRCeU5hbWUoXCJzdGFyXCIpLnkgLT0gMTA7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRoaXMubm9kZS5wYXJlbnQuZ2V0Q2hpbGRCeU5hbWUoXCJkb3duXCIpLmFjdGl2ZSA9IHRydWU7XHJcbiAgICB9XHJcblxyXG4gICAgdXBEb29yKCl7XHJcbiAgICAgICAgaWYodGhpcy5zcGVjaWFsID09IFdhbGxTcGVjaWFsLuaYn+aYn+mXqCl7XHJcbiAgICAgICAgICAgIHRoaXMubm9kZS5wYXJlbnQuZ2V0Q2hpbGRCeU5hbWUoXCJzdGFyXCIpLnkgKz0gMTA7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRoaXMubm9kZS5wYXJlbnQuZ2V0Q2hpbGRCeU5hbWUoXCJkb3duXCIpLmFjdGl2ZSA9IGZhbHNlO1xyXG4gICAgICAgIHRoaXMubm9kZS5vcGFjaXR5ID0gMjUwO1xyXG4gICAgfVxyXG5cclxuICAgIC8vIHVwZGF0ZSAoZHQpIHt9XHJcbn1cclxuIl19 +//------QC-SOURCE-SPLIT------ + + (function() { + var nodeEnv = typeof require !== 'undefined' && typeof process !== 'undefined'; + var __module = nodeEnv ? module : {exports:{}}; + var __filename = 'preview-scripts/assets/Script/position.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, 'e0e34n/+FRF5JdkULm6vdT0', 'position'); +// Script/position.ts + +var _PROP_INFO = [{ "pos1": { "x": -60, "y": 60, "z": 0 }, "pos2": { "x": -16.442, "y": 30, "z": 0 }, "pos3": { "x": -34.362, "y": 13.246, "z": 0 }, "pos4": { "x": -17, "y": 12, "z": 0 } }, { "pos1": { "x": -126, "y": 63, "z": 0 }, "pos2": { "x": -25.792, "y": 34.675, "z": 0 }, "pos3": { "x": -94.792, "y": 21.675, "z": 0 }, "pos4": { "x": -20, "y": 13, "z": 0 } }, { "pos1": { "x": -60, "y": 125, "z": 0 }, "pos2": { "x": -12.792, "y": 92.675, "z": 0 }, "pos3": { "x": -27.792, "y": 23.675, "z": 0 }, "pos4": { "x": -14, "y": 24, "z": 0 } }, { "pos1": { "x": -185, "y": 63, "z": 0 }, "pos2": { "x": -34.792, "y": 37.675, "z": 0 }, "pos3": { "x": -154.792, "y": 23.675, "z": 0 }, "pos4": { "x": -22, "y": 16, "z": 0 } }, { "pos1": { "x": -57, "y": 178, "z": 0 }, "pos2": { "x": -17.792, "y": 166.675, "z": 0 }, "pos3": { "x": -31.792, "y": 33.675, "z": 0 }, "pos4": { "x": -14, "y": 37, "z": 0 } }, { "pos1": { "x": -123, "y": 127, "z": 0 }, "pos2": { "x": -25.792, "y": 99.675, "z": 0 }, "pos3": { "x": -97.792, "y": 27.675, "z": 0 }, "pos4": { "x": -27, "y": 19, "z": 0 } }, { "pos1": { "x": -62, "y": 181, "z": 0 }, "pos2": { "x": -24.792, "y": 275.675, "z": 0 }, "pos3": { "x": -31.792, "y": 35.675, "z": 0 }, "pos4": { "x": -7, "y": 39, "z": 0 } }, { "pos1": { "x": -181, "y": 180, "z": 0 }, "pos2": { "x": -31.792, "y": 163.675, "z": 0 }, "pos3": { "x": -33.792, "y": 34.675, "z": 0 }, "pos4": { "x": -18, "y": 25, "z": 0 } }, { "pos1": { "x": -182, "y": 182, "z": 0 }, "pos2": { "x": -25.792, "y": 38.675, "z": 0 }, "pos3": { "x": -153.792, "y": 34.675, "z": 0 }, "pos4": { "x": -23, "y": 14, "z": 0 } }, { "pos1": { "x": -186, "y": 61, "z": 0 }, "pos2": { "x": -37.792, "y": 37.675, "z": 0 }, "pos3": { "x": -36.792, "y": 26.675, "z": 0 }, "pos4": { "x": -24, "y": 17, "z": 0 } }, { "pos1": { "x": -62, "y": 177, "z": 0 }, "pos2": { "x": 93.208, "y": 276.675, "z": 0 }, "pos3": { "x": -33.792, "y": 34.675, "z": 0 }, "pos4": { "x": 3, "y": 31, "z": 0 } }, { "pos1": { "x": 58, "y": 179, "z": 0 }, "pos2": { "x": 205.225, "y": 154.034, "z": 0 }, "pos3": { "x": -29.642, "y": 25.691, "z": 0 }, "pos4": { "x": 7.218, "y": 29.765, "z": 0 } }, { "pos1": { "x": -57, "y": 182, "z": 0 }, "pos2": { "x": -25.792, "y": 37.675, "z": 0 }, "pos3": { "x": -35.792, "y": 33.675, "z": 0 }, "pos4": { "x": -14, "y": 12, "z": 0 } }, { "pos1": { "x": -180, "y": 62, "z": 0 }, "pos2": { "x": -35.792, "y": 36.675, "z": 0 }, "pos3": { "x": -271.792, "y": 24.675, "z": 0 }, "pos4": { "x": -17, "y": 20, "z": 0 } }, { "pos1": { "x": -62, "y": 178, "z": 0 }, "pos2": { "x": 87.208, "y": 164.675, "z": 0 }, "pos3": { "x": -31.792, "y": 35.675, "z": 0 }, "pos4": { "x": -6, "y": 24, "z": 0 } }, { "pos1": { "x": -176, "y": 60, "z": 0 }, "pos2": { "x": -33.792, "y": 38.675, "z": 0 }, "pos3": { "x": -154.792, "y": 29.675, "z": 0 }, "pos4": { "x": -29, "y": 16, "z": 0 } }, { "pos1": { "x": -60, "y": 181, "z": 0 }, "pos2": { "x": 95.208, "y": 155.675, "z": 0 }, "pos3": { "x": -30.792, "y": 36.675, "z": 0 }, "pos4": { "x": -12, "y": 32, "z": 0 } }, { "pos1": { "x": -63, "y": 178, "z": 0 }, "pos2": { "x": -21.792, "y": 156.675, "z": 0 }, "pos3": { "x": -31.792, "y": 37.675, "z": 0 }, "pos4": { "x": -12, "y": 32, "z": 0 } }, { "pos1": { "x": -60, "y": 183, "z": 0 }, "pos2": { "x": 88.208, "y": 162.675, "z": 0 }, "pos3": { "x": -29.792, "y": 41.675, "z": 0 }, "pos4": { "x": -12, "y": 18, "z": 0 } }, { "pos1": { "x": -64, "y": 58, "z": 0 }, "pos2": { "x": -26.792, "y": 32.675, "z": 0 }, "pos3": { "x": -34.792, "y": 23.675, "z": 0 }, "pos4": { "x": -12, "y": 18, "z": 0 } }, { "pos1": { "x": -184, "y": 62, "z": 0 }, "pos2": { "x": -25.792, "y": 34.675, "z": 0 }, "pos3": { "x": -155.792, "y": 25.675, "z": 0 }, "pos4": { "x": -18, "y": 26, "z": 0 } }, { "pos1": { "x": -57, "y": 190, "z": 0 }, "pos2": { "x": 95.208, "y": 158.675, "z": 0 }, "pos3": { "x": -33.792, "y": 29.675, "z": 0 }, "pos4": { "x": -18, "y": 26, "z": 0 } }, { "pos1": { "x": -71, "y": 184, "z": 0 }, "pos2": { "x": -25.792, "y": 156.675, "z": 0 }, "pos3": { "x": -35.792, "y": 27.675, "z": 0 }, "pos4": { "x": -25, "y": 40, "z": 0 } }]; + +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,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImFzc2V0c1xcU2NyaXB0XFxwb3NpdGlvbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7QUFBQSxJQUFJLFVBQVUsR0FBRyxDQUFDLEVBQUMsTUFBTSxFQUFFLEVBQUMsR0FBRyxFQUFFLENBQUMsRUFBRSxFQUFDLEdBQUcsRUFBRSxFQUFFLEVBQUMsR0FBRyxFQUFFLENBQUMsRUFBQyxFQUFDLE1BQU0sRUFBRSxFQUFDLEdBQUcsRUFBRSxDQUFDLE1BQU0sRUFBQyxHQUFHLEVBQUUsRUFBRSxFQUFDLEdBQUcsRUFBRSxDQUFDLEVBQUMsRUFBQyxNQUFNLEVBQUUsRUFBQyxHQUFHLEVBQUUsQ0FBQyxNQUFNLEVBQUMsR0FBRyxFQUFFLE1BQU0sRUFBQyxHQUFHLEVBQUUsQ0FBQyxFQUFDLEVBQUMsTUFBTSxFQUFFLEVBQUMsR0FBRyxFQUFFLENBQUMsRUFBRSxFQUFDLEdBQUcsRUFBRSxFQUFFLEVBQUMsR0FBRyxFQUFFLENBQUMsRUFBQyxFQUFDLEVBQUMsRUFBQyxNQUFNLEVBQUUsRUFBQyxHQUFHLEVBQUUsQ0FBQyxHQUFHLEVBQUMsR0FBRyxFQUFFLEVBQUUsRUFBQyxHQUFHLEVBQUUsQ0FBQyxFQUFDLEVBQUMsTUFBTSxFQUFFLEVBQUMsR0FBRyxFQUFFLENBQUMsTUFBTSxFQUFDLEdBQUcsRUFBRSxNQUFNLEVBQUMsR0FBRyxFQUFFLENBQUMsRUFBQyxFQUFDLE1BQU0sRUFBRSxFQUFDLEdBQUcsRUFBRSxDQUFDLE1BQU0sRUFBQyxHQUFHLEVBQUUsTUFBTSxFQUFDLEdBQUcsRUFBRSxDQUFDLEVBQUMsRUFBQyxNQUFNLEVBQUUsRUFBQyxHQUFHLEVBQUUsQ0FBQyxFQUFFLEVBQUMsR0FBRyxFQUFFLEVBQUUsRUFBQyxHQUFHLEVBQUUsQ0FBQyxFQUFDLEVBQUMsRUFBQyxFQUFDLE1BQU0sRUFBRSxFQUFDLEdBQUcsRUFBRSxDQUFDLEVBQUUsRUFBQyxHQUFHLEVBQUUsR0FBRyxFQUFDLEdBQUcsRUFBRSxDQUFDLEVBQUMsRUFBQyxNQUFNLEVBQUUsRUFBQyxHQUFHLEVBQUUsQ0FBQyxNQUFNLEVBQUMsR0FBRyxFQUFFLE1BQU0sRUFBQyxHQUFHLEVBQUUsQ0FBQyxFQUFDLEVBQUMsTUFBTSxFQUFFLEVBQUMsR0FBRyxFQUFFLENBQUMsTUFBTSxFQUFDLEdBQUcsRUFBRSxNQUFNLEVBQUMsR0FBRyxFQUFFLENBQUMsRUFBQyxFQUFDLE1BQU0sRUFBRSxFQUFDLEdBQUcsRUFBRSxDQUFDLEVBQUUsRUFBQyxHQUFHLEVBQUUsRUFBRSxFQUFDLEdBQUcsRUFBRSxDQUFDLEVBQUMsRUFBQyxFQUFDLEVBQUMsTUFBTSxFQUFFLEVBQUMsR0FBRyxFQUFFLENBQUMsR0FBRyxFQUFDLEdBQUcsRUFBRSxFQUFFLEVBQUMsR0FBRyxFQUFFLENBQUMsRUFBQyxFQUFDLE1BQU0sRUFBRSxFQUFDLEdBQUcsRUFBRSxDQUFDLE1BQU0sRUFBQyxHQUFHLEVBQUUsTUFBTSxFQUFDLEdBQUcsRUFBRSxDQUFDLEVBQUMsRUFBQyxNQUFNLEVBQUUsRUFBQyxHQUFHLEVBQUUsQ0FBQyxPQUFPLEVBQUMsR0FBRyxFQUFFLE1BQU0sRUFBQyxHQUFHLEVBQUUsQ0FBQyxFQUFDLEVBQUMsTUFBTSxFQUFFLEVBQUMsR0FBRyxFQUFFLENBQUMsRUFBRSxFQUFDLEdBQUcsRUFBRSxFQUFFLEVBQUMsR0FBRyxFQUFFLENBQUMsRUFBQyxFQUFDLEVBQUMsRUFBQyxNQUFNLEVBQUUsRUFBQyxHQUFHLEVBQUUsQ0FBQyxFQUFFLEVBQUMsR0FBRyxFQUFFLEdBQUcsRUFBQyxHQUFHLEVBQUUsQ0FBQyxFQUFDLEVBQUMsTUFBTSxFQUFFLEVBQUMsR0FBRyxFQUFFLENBQUMsTUFBTSxFQUFDLEdBQUcsRUFBRSxPQUFPLEVBQUMsR0FBRyxFQUFFLENBQUMsRUFBQyxFQUFDLE1BQU0sRUFBRSxFQUFDLEdBQUcsRUFBRSxDQUFDLE1BQU0sRUFBQyxHQUFHLEVBQUUsTUFBTSxFQUFDLEdBQUcsRUFBRSxDQUFDLEVBQUMsRUFBQyxNQUFNLEVBQUUsRUFBQyxHQUFHLEVBQUUsQ0FBQyxFQUFFLEVBQUMsR0FBRyxFQUFFLEVBQUUsRUFBQyxHQUFHLEVBQUUsQ0FBQyxFQUFDLEVBQUMsRUFBQyxFQUFDLE1BQU0sRUFBRSxFQUFDLEdBQUcsRUFBRSxDQUFDLEdBQUcsRUFBQyxHQUFHLEVBQUUsR0FBRyxFQUFDLEdBQUcsRUFBRSxDQUFDLEVBQUMsRUFBQyxNQUFNLEVBQUUsRUFBQyxHQUFHLEVBQUUsQ0FBQyxNQUFNLEVBQUMsR0FBRyxFQUFFLE1BQU0sRUFBQyxHQUFHLEVBQUUsQ0FBQyxFQUFDLEVBQUMsTUFBTSxFQUFFLEVBQUMsR0FBRyxFQUFFLENBQUMsTUFBTSxFQUFDLEdBQUcsRUFBRSxNQUFNLEVBQUMsR0FBRyxFQUFFLENBQUMsRUFBQyxFQUFDLE1BQU0sRUFBRSxFQUFDLEdBQUcsRUFBRSxDQUFDLEVBQUUsRUFBQyxHQUFHLEVBQUUsRUFBRSxFQUFDLEdBQUcsRUFBRSxDQUFDLEVBQUMsRUFBQyxFQUFDLEVBQUMsTUFBTSxFQUFFLEVBQUMsR0FBRyxFQUFFLENBQUMsRUFBRSxFQUFDLEdBQUcsRUFBRSxHQUFHLEVBQUMsR0FBRyxFQUFFLENBQUMsRUFBQyxFQUFDLE1BQU0sRUFBRSxFQUFDLEdBQUcsRUFBRSxDQUFDLE1BQU0sRUFBQyxHQUFHLEVBQUUsT0FBTyxFQUFDLEdBQUcsRUFBRSxDQUFDLEVBQUMsRUFBQyxNQUFNLEVBQUUsRUFBQyxHQUFHLEVBQUUsQ0FBQyxNQUFNLEVBQUMsR0FBRyxFQUFFLE1BQU0sRUFBQyxHQUFHLEVBQUUsQ0FBQyxFQUFDLEVBQUMsTUFBTSxFQUFFLEVBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxFQUFDLEdBQUcsRUFBRSxFQUFFLEVBQUMsR0FBRyxFQUFFLENBQUMsRUFBQyxFQUFDLEVBQUMsRUFBQyxNQUFNLEVBQUUsRUFBQyxHQUFHLEVBQUUsQ0FBQyxHQUFHLEVBQUMsR0FBRyxFQUFFLEdBQUcsRUFBQyxHQUFHLEVBQUUsQ0FBQyxFQUFDLEVBQUMsTUFBTSxFQUFFLEVBQUMsR0FBRyxFQUFFLENBQUMsTUFBTSxFQUFDLEdBQUcsRUFBRSxPQUFPLEVBQUMsR0FBRyxFQUFFLENBQUMsRUFBQyxFQUFDLE1BQU0sRUFBRSxFQUFDLEdBQUcsRUFBRSxDQUFDLE1BQU0sRUFBQyxHQUFHLEVBQUUsTUFBTSxFQUFDLEdBQUcsRUFBRSxDQUFDLEVBQUMsRUFBQyxNQUFNLEVBQUUsRUFBQyxHQUFHLEVBQUUsQ0FBQyxFQUFFLEVBQUMsR0FBRyxFQUFFLEVBQUUsRUFBQyxHQUFHLEVBQUUsQ0FBQyxFQUFDLEVBQUMsRUFBQyxFQUFDLE1BQU0sRUFBRSxFQUFDLEdBQUcsRUFBRSxDQUFDLEdBQUcsRUFBQyxHQUFHLEVBQUUsR0FBRyxFQUFDLEdBQUcsRUFBRSxDQUFDLEVBQUMsRUFBQyxNQUFNLEVBQUUsRUFBQyxHQUFHLEVBQUUsQ0FBQyxNQUFNLEVBQUMsR0FBRyxFQUFFLE1BQU0sRUFBQyxHQUFHLEVBQUUsQ0FBQyxFQUFDLEVBQUMsTUFBTSxFQUFFLEVBQUMsR0FBRyxFQUFFLENBQUMsT0FBTyxFQUFDLEdBQUcsRUFBRSxNQUFNLEVBQUMsR0FBRyxFQUFFLENBQUMsRUFBQyxFQUFDLE1BQU0sRUFBRSxFQUFDLEdBQUcsRUFBRSxDQUFDLEVBQUUsRUFBQyxHQUFHLEVBQUUsRUFBRSxFQUFDLEdBQUcsRUFBRSxDQUFDLEVBQUMsRUFBQyxFQUFDLEVBQUMsTUFBTSxFQUFFLEVBQUMsR0FBRyxFQUFFLENBQUMsR0FBRyxFQUFDLEdBQUcsRUFBRSxFQUFFLEVBQUMsR0FBRyxFQUFFLENBQUMsRUFBQyxFQUFDLE1BQU0sRUFBRSxFQUFDLEdBQUcsRUFBRSxDQUFDLE1BQU0sRUFBQyxHQUFHLEVBQUUsTUFBTSxFQUFDLEdBQUcsRUFBRSxDQUFDLEVBQUMsRUFBQyxNQUFNLEVBQUUsRUFBQyxHQUFHLEVBQUUsQ0FBQyxNQUFNLEVBQUMsR0FBRyxFQUFFLE1BQU0sRUFBQyxHQUFHLEVBQUUsQ0FBQyxFQUFDLEVBQUMsTUFBTSxFQUFFLEVBQUMsR0FBRyxFQUFFLENBQUMsRUFBRSxFQUFDLEdBQUcsRUFBRSxFQUFFLEVBQUMsR0FBRyxFQUFFLENBQUMsRUFBQyxFQUFDLEVBQUMsRUFBQyxNQUFNLEVBQUUsRUFBQyxHQUFHLEVBQUUsQ0FBQyxFQUFFLEVBQUMsR0FBRyxFQUFFLEdBQUcsRUFBQyxHQUFHLEVBQUUsQ0FBQyxFQUFDLEVBQUMsTUFBTSxFQUFFLEVBQUMsR0FBRyxFQUFFLE1BQU0sRUFBQyxHQUFHLEVBQUUsT0FBTyxFQUFDLEdBQUcsRUFBRSxDQUFDLEVBQUMsRUFBQyxNQUFNLEVBQUUsRUFBQyxHQUFHLEVBQUUsQ0FBQyxNQUFNLEVBQUMsR0FBRyxFQUFFLE1BQU0sRUFBQyxHQUFHLEVBQUUsQ0FBQyxFQUFDLEVBQUMsTUFBTSxFQUFFLEVBQUMsR0FBRyxFQUFFLENBQUMsRUFBQyxHQUFHLEVBQUUsRUFBRSxFQUFDLEdBQUcsRUFBRSxDQUFDLEVBQUMsRUFBQyxFQUFDLEVBQUMsTUFBTSxFQUFFLEVBQUMsR0FBRyxFQUFFLEVBQUUsRUFBQyxHQUFHLEVBQUUsR0FBRyxFQUFDLEdBQUcsRUFBRSxDQUFDLEVBQUMsRUFBQyxNQUFNLEVBQUUsRUFBQyxHQUFHLEVBQUUsT0FBTyxFQUFDLEdBQUcsRUFBRSxPQUFPLEVBQUMsR0FBRyxFQUFFLENBQUMsRUFBQyxFQUFDLE1BQU0sRUFBRSxFQUFDLEdBQUcsRUFBRSxDQUFDLE1BQU0sRUFBQyxHQUFHLEVBQUUsTUFBTSxFQUFDLEdBQUcsRUFBRSxDQUFDLEVBQUMsRUFBQyxNQUFNLEVBQUUsRUFBQyxHQUFHLEVBQUUsS0FBSyxFQUFDLEdBQUcsRUFBRSxNQUFNLEVBQUMsR0FBRyxFQUFFLENBQUMsRUFBQyxFQUFDLEVBQUMsRUFBQyxNQUFNLEVBQUUsRUFBQyxHQUFHLEVBQUUsQ0FBQyxFQUFFLEVBQUMsR0FBRyxFQUFFLEdBQUcsRUFBQyxHQUFHLEVBQUUsQ0FBQyxFQUFDLEVBQUMsTUFBTSxFQUFFLEVBQUMsR0FBRyxFQUFFLENBQUMsTUFBTSxFQUFDLEdBQUcsRUFBRSxNQUFNLEVBQUMsR0FBRyxFQUFFLENBQUMsRUFBQyxFQUFDLE1BQU0sRUFBRSxFQUFDLEdBQUcsRUFBRSxDQUFDLE1BQU0sRUFBQyxHQUFHLEVBQUUsTUFBTSxFQUFDLEdBQUcsRUFBRSxDQUFDLEVBQUMsRUFBQyxNQUFNLEVBQUUsRUFBQyxHQUFHLEVBQUUsQ0FBQyxFQUFFLEVBQUMsR0FBRyxFQUFFLEVBQUUsRUFBQyxHQUFHLEVBQUUsQ0FBQyxFQUFDLEVBQUMsRUFBQyxFQUFDLE1BQU0sRUFBRSxFQUFDLEdBQUcsRUFBRSxDQUFDLEdBQUcsRUFBQyxHQUFHLEVBQUUsRUFBRSxFQUFDLEdBQUcsRUFBRSxDQUFDLEVBQUMsRUFBQyxNQUFNLEVBQUUsRUFBQyxHQUFHLEVBQUUsQ0FBQyxNQUFNLEVBQUMsR0FBRyxFQUFFLE1BQU0sRUFBQyxHQUFHLEVBQUUsQ0FBQyxFQUFDLEVBQUMsTUFBTSxFQUFFLEVBQUMsR0FBRyxFQUFFLENBQUMsT0FBTyxFQUFDLEdBQUcsRUFBRSxNQUFNLEVBQUMsR0FBRyxFQUFFLENBQUMsRUFBQyxFQUFDLE1BQU0sRUFBRSxFQUFDLEdBQUcsRUFBRSxDQUFDLEVBQUUsRUFBQyxHQUFHLEVBQUUsRUFBRSxFQUFDLEdBQUcsRUFBRSxDQUFDLEVBQUMsRUFBQyxFQUFDLEVBQUMsTUFBTSxFQUFFLEVBQUMsR0FBRyxFQUFFLENBQUMsRUFBRSxFQUFDLEdBQUcsRUFBRSxHQUFHLEVBQUMsR0FBRyxFQUFFLENBQUMsRUFBQyxFQUFDLE1BQU0sRUFBRSxFQUFDLEdBQUcsRUFBRSxNQUFNLEVBQUMsR0FBRyxFQUFFLE9BQU8sRUFBQyxHQUFHLEVBQUUsQ0FBQyxFQUFDLEVBQUMsTUFBTSxFQUFFLEVBQUMsR0FBRyxFQUFFLENBQUMsTUFBTSxFQUFDLEdBQUcsRUFBRSxNQUFNLEVBQUMsR0FBRyxFQUFFLENBQUMsRUFBQyxFQUFDLE1BQU0sRUFBRSxFQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsRUFBQyxHQUFHLEVBQUUsRUFBRSxFQUFDLEdBQUcsRUFBRSxDQUFDLEVBQUMsRUFBQyxFQUFDLEVBQUMsTUFBTSxFQUFFLEVBQUMsR0FBRyxFQUFFLENBQUMsR0FBRyxFQUFDLEdBQUcsRUFBRSxFQUFFLEVBQUMsR0FBRyxFQUFFLENBQUMsRUFBQyxFQUFDLE1BQU0sRUFBRSxFQUFDLEdBQUcsRUFBRSxDQUFDLE1BQU0sRUFBQyxHQUFHLEVBQUUsTUFBTSxFQUFDLEdBQUcsRUFBRSxDQUFDLEVBQUMsRUFBQyxNQUFNLEVBQUUsRUFBQyxHQUFHLEVBQUUsQ0FBQyxPQUFPLEVBQUMsR0FBRyxFQUFFLE1BQU0sRUFBQyxHQUFHLEVBQUUsQ0FBQyxFQUFDLEVBQUMsTUFBTSxFQUFFLEVBQUMsR0FBRyxFQUFFLENBQUMsRUFBRSxFQUFDLEdBQUcsRUFBRSxFQUFFLEVBQUMsR0FBRyxFQUFFLENBQUMsRUFBQyxFQUFDLEVBQUMsRUFBQyxNQUFNLEVBQUUsRUFBQyxHQUFHLEVBQUUsQ0FBQyxFQUFFLEVBQUMsR0FBRyxFQUFFLEdBQUcsRUFBQyxHQUFHLEVBQUUsQ0FBQyxFQUFDLEVBQUMsTUFBTSxFQUFFLEVBQUMsR0FBRyxFQUFFLE1BQU0sRUFBQyxHQUFHLEVBQUUsT0FBTyxFQUFDLEdBQUcsRUFBRSxDQUFDLEVBQUMsRUFBQyxNQUFNLEVBQUUsRUFBQyxHQUFHLEVBQUUsQ0FBQyxNQUFNLEVBQUMsR0FBRyxFQUFFLE1BQU0sRUFBQyxHQUFHLEVBQUUsQ0FBQyxFQUFDLEVBQUMsTUFBTSxFQUFFLEVBQUMsR0FBRyxFQUFFLENBQUMsRUFBRSxFQUFDLEdBQUcsRUFBRSxFQUFFLEVBQUMsR0FBRyxFQUFFLENBQUMsRUFBQyxFQUFDLEVBQUMsRUFBQyxNQUFNLEVBQUUsRUFBQyxHQUFHLEVBQUUsQ0FBQyxFQUFFLEVBQUMsR0FBRyxFQUFFLEdBQUcsRUFBQyxHQUFHLEVBQUUsQ0FBQyxFQUFDLEVBQUMsTUFBTSxFQUFFLEVBQUMsR0FBRyxFQUFFLENBQUMsTUFBTSxFQUFDLEdBQUcsRUFBRSxPQUFPLEVBQUMsR0FBRyxFQUFFLENBQUMsRUFBQyxFQUFDLE1BQU0sRUFBRSxFQUFDLEdBQUcsRUFBRSxDQUFDLE1BQU0sRUFBQyxHQUFHLEVBQUUsTUFBTSxFQUFDLEdBQUcsRUFBRSxDQUFDLEVBQUMsRUFBQyxNQUFNLEVBQUUsRUFBQyxHQUFHLEVBQUUsQ0FBQyxFQUFFLEVBQUMsR0FBRyxFQUFFLEVBQUUsRUFBQyxHQUFHLEVBQUUsQ0FBQyxFQUFDLEVBQUMsRUFBQyxFQUFDLE1BQU0sRUFBRSxFQUFDLEdBQUcsRUFBRSxDQUFDLEVBQUUsRUFBQyxHQUFHLEVBQUUsR0FBRyxFQUFDLEdBQUcsRUFBRSxDQUFDLEVBQUMsRUFBQyxNQUFNLEVBQUUsRUFBQyxHQUFHLEVBQUUsTUFBTSxFQUFDLEdBQUcsRUFBRSxPQUFPLEVBQUMsR0FBRyxFQUFFLENBQUMsRUFBQyxFQUFDLE1BQU0sRUFBRSxFQUFDLEdBQUcsRUFBRSxDQUFDLE1BQU0sRUFBQyxHQUFHLEVBQUUsTUFBTSxFQUFDLEdBQUcsRUFBRSxDQUFDLEVBQUMsRUFBQyxNQUFNLEVBQUUsRUFBQyxHQUFHLEVBQUUsQ0FBQyxFQUFFLEVBQUMsR0FBRyxFQUFFLEVBQUUsRUFBQyxHQUFHLEVBQUUsQ0FBQyxFQUFDLEVBQUMsRUFBQyxFQUFDLE1BQU0sRUFBRSxFQUFDLEdBQUcsRUFBRSxDQUFDLEVBQUUsRUFBQyxHQUFHLEVBQUUsRUFBRSxFQUFDLEdBQUcsRUFBRSxDQUFDLEVBQUMsRUFBQyxNQUFNLEVBQUUsRUFBQyxHQUFHLEVBQUUsQ0FBQyxNQUFNLEVBQUMsR0FBRyxFQUFFLE1BQU0sRUFBQyxHQUFHLEVBQUUsQ0FBQyxFQUFDLEVBQUMsTUFBTSxFQUFFLEVBQUMsR0FBRyxFQUFFLENBQUMsTUFBTSxFQUFDLEdBQUcsRUFBRSxNQUFNLEVBQUMsR0FBRyxFQUFFLENBQUMsRUFBQyxFQUFDLE1BQU0sRUFBRSxFQUFDLEdBQUcsRUFBRSxDQUFDLEVBQUUsRUFBQyxHQUFHLEVBQUUsRUFBRSxFQUFDLEdBQUcsRUFBRSxDQUFDLEVBQUMsRUFBQyxFQUFDLEVBQUMsTUFBTSxFQUFFLEVBQUMsR0FBRyxFQUFFLENBQUMsR0FBRyxFQUFDLEdBQUcsRUFBRSxFQUFFLEVBQUMsR0FBRyxFQUFFLENBQUMsRUFBQyxFQUFDLE1BQU0sRUFBRSxFQUFDLEdBQUcsRUFBRSxDQUFDLE1BQU0sRUFBQyxHQUFHLEVBQUUsTUFBTSxFQUFDLEdBQUcsRUFBRSxDQUFDLEVBQUMsRUFBQyxNQUFNLEVBQUUsRUFBQyxHQUFHLEVBQUUsQ0FBQyxPQUFPLEVBQUMsR0FBRyxFQUFFLE1BQU0sRUFBQyxHQUFHLEVBQUUsQ0FBQyxFQUFDLEVBQUMsTUFBTSxFQUFFLEVBQUMsR0FBRyxFQUFFLENBQUMsRUFBRSxFQUFDLEdBQUcsRUFBRSxFQUFFLEVBQUMsR0FBRyxFQUFFLENBQUMsRUFBQyxFQUFDLEVBQUMsRUFBQyxNQUFNLEVBQUUsRUFBQyxHQUFHLEVBQUUsQ0FBQyxFQUFFLEVBQUMsR0FBRyxFQUFFLEdBQUcsRUFBQyxHQUFHLEVBQUUsQ0FBQyxFQUFDLEVBQUMsTUFBTSxFQUFFLEVBQUMsR0FBRyxFQUFFLE1BQU0sRUFBQyxHQUFHLEVBQUUsT0FBTyxFQUFDLEdBQUcsRUFBRSxDQUFDLEVBQUMsRUFBQyxNQUFNLEVBQUUsRUFBQyxHQUFHLEVBQUUsQ0FBQyxNQUFNLEVBQUMsR0FBRyxFQUFFLE1BQU0sRUFBQyxHQUFHLEVBQUUsQ0FBQyxFQUFDLEVBQUMsTUFBTSxFQUFFLEVBQUMsR0FBRyxFQUFFLENBQUMsRUFBRSxFQUFDLEdBQUcsRUFBRSxFQUFFLEVBQUMsR0FBRyxFQUFFLENBQUMsRUFBQyxFQUFDLEVBQUMsRUFBQyxNQUFNLEVBQUUsRUFBQyxHQUFHLEVBQUUsQ0FBQyxFQUFFLEVBQUMsR0FBRyxFQUFFLEdBQUcsRUFBQyxHQUFHLEVBQUUsQ0FBQyxFQUFDLEVBQUMsTUFBTSxFQUFFLEVBQUMsR0FBRyxFQUFFLENBQUMsTUFBTSxFQUFDLEdBQUcsRUFBRSxPQUFPLEVBQUMsR0FBRyxFQUFFLENBQUMsRUFBQyxFQUFDLE1BQU0sRUFBRSxFQUFDLEdBQUcsRUFBRSxDQUFDLE1BQU0sRUFBQyxHQUFHLEVBQUUsTUFBTSxFQUFDLEdBQUcsRUFBRSxDQUFDLEVBQUMsRUFBQyxNQUFNLEVBQUUsRUFBQyxHQUFHLEVBQUUsQ0FBQyxFQUFFLEVBQUMsR0FBRyxFQUFFLEVBQUUsRUFBQyxHQUFHLEVBQUUsQ0FBQyxFQUFDLEVBQUMsQ0FBQyxDQUFDIiwiZmlsZSI6IiIsInNvdXJjZVJvb3QiOiIvIiwic291cmNlc0NvbnRlbnQiOlsidmFyIF9QUk9QX0lORk8gPSBbe1wicG9zMVwiOiB7XCJ4XCI6IC02MCxcInlcIjogNjAsXCJ6XCI6IDB9LFwicG9zMlwiOiB7XCJ4XCI6IC0xNi40NDIsXCJ5XCI6IDMwLFwielwiOiAwfSxcInBvczNcIjoge1wieFwiOiAtMzQuMzYyLFwieVwiOiAxMy4yNDYsXCJ6XCI6IDB9LFwicG9zNFwiOiB7XCJ4XCI6IC0xNyxcInlcIjogMTIsXCJ6XCI6IDB9fSx7XCJwb3MxXCI6IHtcInhcIjogLTEyNixcInlcIjogNjMsXCJ6XCI6IDB9LFwicG9zMlwiOiB7XCJ4XCI6IC0yNS43OTIsXCJ5XCI6IDM0LjY3NSxcInpcIjogMH0sXCJwb3MzXCI6IHtcInhcIjogLTk0Ljc5MixcInlcIjogMjEuNjc1LFwielwiOiAwfSxcInBvczRcIjoge1wieFwiOiAtMjAsXCJ5XCI6IDEzLFwielwiOiAwfX0se1wicG9zMVwiOiB7XCJ4XCI6IC02MCxcInlcIjogMTI1LFwielwiOiAwfSxcInBvczJcIjoge1wieFwiOiAtMTIuNzkyLFwieVwiOiA5Mi42NzUsXCJ6XCI6IDB9LFwicG9zM1wiOiB7XCJ4XCI6IC0yNy43OTIsXCJ5XCI6IDIzLjY3NSxcInpcIjogMH0sXCJwb3M0XCI6IHtcInhcIjogLTE0LFwieVwiOiAyNCxcInpcIjogMH19LHtcInBvczFcIjoge1wieFwiOiAtMTg1LFwieVwiOiA2MyxcInpcIjogMH0sXCJwb3MyXCI6IHtcInhcIjogLTM0Ljc5MixcInlcIjogMzcuNjc1LFwielwiOiAwfSxcInBvczNcIjoge1wieFwiOiAtMTU0Ljc5MixcInlcIjogMjMuNjc1LFwielwiOiAwfSxcInBvczRcIjoge1wieFwiOiAtMjIsXCJ5XCI6IDE2LFwielwiOiAwfX0se1wicG9zMVwiOiB7XCJ4XCI6IC01NyxcInlcIjogMTc4LFwielwiOiAwfSxcInBvczJcIjoge1wieFwiOiAtMTcuNzkyLFwieVwiOiAxNjYuNjc1LFwielwiOiAwfSxcInBvczNcIjoge1wieFwiOiAtMzEuNzkyLFwieVwiOiAzMy42NzUsXCJ6XCI6IDB9LFwicG9zNFwiOiB7XCJ4XCI6IC0xNCxcInlcIjogMzcsXCJ6XCI6IDB9fSx7XCJwb3MxXCI6IHtcInhcIjogLTEyMyxcInlcIjogMTI3LFwielwiOiAwfSxcInBvczJcIjoge1wieFwiOiAtMjUuNzkyLFwieVwiOiA5OS42NzUsXCJ6XCI6IDB9LFwicG9zM1wiOiB7XCJ4XCI6IC05Ny43OTIsXCJ5XCI6IDI3LjY3NSxcInpcIjogMH0sXCJwb3M0XCI6IHtcInhcIjogLTI3LFwieVwiOiAxOSxcInpcIjogMH19LHtcInBvczFcIjoge1wieFwiOiAtNjIsXCJ5XCI6IDE4MSxcInpcIjogMH0sXCJwb3MyXCI6IHtcInhcIjogLTI0Ljc5MixcInlcIjogMjc1LjY3NSxcInpcIjogMH0sXCJwb3MzXCI6IHtcInhcIjogLTMxLjc5MixcInlcIjogMzUuNjc1LFwielwiOiAwfSxcInBvczRcIjoge1wieFwiOiAtNyxcInlcIjogMzksXCJ6XCI6IDB9fSx7XCJwb3MxXCI6IHtcInhcIjogLTE4MSxcInlcIjogMTgwLFwielwiOiAwfSxcInBvczJcIjoge1wieFwiOiAtMzEuNzkyLFwieVwiOiAxNjMuNjc1LFwielwiOiAwfSxcInBvczNcIjoge1wieFwiOiAtMzMuNzkyLFwieVwiOiAzNC42NzUsXCJ6XCI6IDB9LFwicG9zNFwiOiB7XCJ4XCI6IC0xOCxcInlcIjogMjUsXCJ6XCI6IDB9fSx7XCJwb3MxXCI6IHtcInhcIjogLTE4MixcInlcIjogMTgyLFwielwiOiAwfSxcInBvczJcIjoge1wieFwiOiAtMjUuNzkyLFwieVwiOiAzOC42NzUsXCJ6XCI6IDB9LFwicG9zM1wiOiB7XCJ4XCI6IC0xNTMuNzkyLFwieVwiOiAzNC42NzUsXCJ6XCI6IDB9LFwicG9zNFwiOiB7XCJ4XCI6IC0yMyxcInlcIjogMTQsXCJ6XCI6IDB9fSx7XCJwb3MxXCI6IHtcInhcIjogLTE4NixcInlcIjogNjEsXCJ6XCI6IDB9LFwicG9zMlwiOiB7XCJ4XCI6IC0zNy43OTIsXCJ5XCI6IDM3LjY3NSxcInpcIjogMH0sXCJwb3MzXCI6IHtcInhcIjogLTM2Ljc5MixcInlcIjogMjYuNjc1LFwielwiOiAwfSxcInBvczRcIjoge1wieFwiOiAtMjQsXCJ5XCI6IDE3LFwielwiOiAwfX0se1wicG9zMVwiOiB7XCJ4XCI6IC02MixcInlcIjogMTc3LFwielwiOiAwfSxcInBvczJcIjoge1wieFwiOiA5My4yMDgsXCJ5XCI6IDI3Ni42NzUsXCJ6XCI6IDB9LFwicG9zM1wiOiB7XCJ4XCI6IC0zMy43OTIsXCJ5XCI6IDM0LjY3NSxcInpcIjogMH0sXCJwb3M0XCI6IHtcInhcIjogMyxcInlcIjogMzEsXCJ6XCI6IDB9fSx7XCJwb3MxXCI6IHtcInhcIjogNTgsXCJ5XCI6IDE3OSxcInpcIjogMH0sXCJwb3MyXCI6IHtcInhcIjogMjA1LjIyNSxcInlcIjogMTU0LjAzNCxcInpcIjogMH0sXCJwb3MzXCI6IHtcInhcIjogLTI5LjY0MixcInlcIjogMjUuNjkxLFwielwiOiAwfSxcInBvczRcIjoge1wieFwiOiA3LjIxOCxcInlcIjogMjkuNzY1LFwielwiOiAwfX0se1wicG9zMVwiOiB7XCJ4XCI6IC01NyxcInlcIjogMTgyLFwielwiOiAwfSxcInBvczJcIjoge1wieFwiOiAtMjUuNzkyLFwieVwiOiAzNy42NzUsXCJ6XCI6IDB9LFwicG9zM1wiOiB7XCJ4XCI6IC0zNS43OTIsXCJ5XCI6IDMzLjY3NSxcInpcIjogMH0sXCJwb3M0XCI6IHtcInhcIjogLTE0LFwieVwiOiAxMixcInpcIjogMH19LHtcInBvczFcIjoge1wieFwiOiAtMTgwLFwieVwiOiA2MixcInpcIjogMH0sXCJwb3MyXCI6IHtcInhcIjogLTM1Ljc5MixcInlcIjogMzYuNjc1LFwielwiOiAwfSxcInBvczNcIjoge1wieFwiOiAtMjcxLjc5MixcInlcIjogMjQuNjc1LFwielwiOiAwfSxcInBvczRcIjoge1wieFwiOiAtMTcsXCJ5XCI6IDIwLFwielwiOiAwfX0se1wicG9zMVwiOiB7XCJ4XCI6IC02MixcInlcIjogMTc4LFwielwiOiAwfSxcInBvczJcIjoge1wieFwiOiA4Ny4yMDgsXCJ5XCI6IDE2NC42NzUsXCJ6XCI6IDB9LFwicG9zM1wiOiB7XCJ4XCI6IC0zMS43OTIsXCJ5XCI6IDM1LjY3NSxcInpcIjogMH0sXCJwb3M0XCI6IHtcInhcIjogLTYsXCJ5XCI6IDI0LFwielwiOiAwfX0se1wicG9zMVwiOiB7XCJ4XCI6IC0xNzYsXCJ5XCI6IDYwLFwielwiOiAwfSxcInBvczJcIjoge1wieFwiOiAtMzMuNzkyLFwieVwiOiAzOC42NzUsXCJ6XCI6IDB9LFwicG9zM1wiOiB7XCJ4XCI6IC0xNTQuNzkyLFwieVwiOiAyOS42NzUsXCJ6XCI6IDB9LFwicG9zNFwiOiB7XCJ4XCI6IC0yOSxcInlcIjogMTYsXCJ6XCI6IDB9fSx7XCJwb3MxXCI6IHtcInhcIjogLTYwLFwieVwiOiAxODEsXCJ6XCI6IDB9LFwicG9zMlwiOiB7XCJ4XCI6IDk1LjIwOCxcInlcIjogMTU1LjY3NSxcInpcIjogMH0sXCJwb3MzXCI6IHtcInhcIjogLTMwLjc5MixcInlcIjogMzYuNjc1LFwielwiOiAwfSxcInBvczRcIjoge1wieFwiOiAtMTIsXCJ5XCI6IDMyLFwielwiOiAwfX0se1wicG9zMVwiOiB7XCJ4XCI6IC02MyxcInlcIjogMTc4LFwielwiOiAwfSxcInBvczJcIjoge1wieFwiOiAtMjEuNzkyLFwieVwiOiAxNTYuNjc1LFwielwiOiAwfSxcInBvczNcIjoge1wieFwiOiAtMzEuNzkyLFwieVwiOiAzNy42NzUsXCJ6XCI6IDB9LFwicG9zNFwiOiB7XCJ4XCI6IC0xMixcInlcIjogMzIsXCJ6XCI6IDB9fSx7XCJwb3MxXCI6IHtcInhcIjogLTYwLFwieVwiOiAxODMsXCJ6XCI6IDB9LFwicG9zMlwiOiB7XCJ4XCI6IDg4LjIwOCxcInlcIjogMTYyLjY3NSxcInpcIjogMH0sXCJwb3MzXCI6IHtcInhcIjogLTI5Ljc5MixcInlcIjogNDEuNjc1LFwielwiOiAwfSxcInBvczRcIjoge1wieFwiOiAtMTIsXCJ5XCI6IDE4LFwielwiOiAwfX0se1wicG9zMVwiOiB7XCJ4XCI6IC02NCxcInlcIjogNTgsXCJ6XCI6IDB9LFwicG9zMlwiOiB7XCJ4XCI6IC0yNi43OTIsXCJ5XCI6IDMyLjY3NSxcInpcIjogMH0sXCJwb3MzXCI6IHtcInhcIjogLTM0Ljc5MixcInlcIjogMjMuNjc1LFwielwiOiAwfSxcInBvczRcIjoge1wieFwiOiAtMTIsXCJ5XCI6IDE4LFwielwiOiAwfX0se1wicG9zMVwiOiB7XCJ4XCI6IC0xODQsXCJ5XCI6IDYyLFwielwiOiAwfSxcInBvczJcIjoge1wieFwiOiAtMjUuNzkyLFwieVwiOiAzNC42NzUsXCJ6XCI6IDB9LFwicG9zM1wiOiB7XCJ4XCI6IC0xNTUuNzkyLFwieVwiOiAyNS42NzUsXCJ6XCI6IDB9LFwicG9zNFwiOiB7XCJ4XCI6IC0xOCxcInlcIjogMjYsXCJ6XCI6IDB9fSx7XCJwb3MxXCI6IHtcInhcIjogLTU3LFwieVwiOiAxOTAsXCJ6XCI6IDB9LFwicG9zMlwiOiB7XCJ4XCI6IDk1LjIwOCxcInlcIjogMTU4LjY3NSxcInpcIjogMH0sXCJwb3MzXCI6IHtcInhcIjogLTMzLjc5MixcInlcIjogMjkuNjc1LFwielwiOiAwfSxcInBvczRcIjoge1wieFwiOiAtMTgsXCJ5XCI6IDI2LFwielwiOiAwfX0se1wicG9zMVwiOiB7XCJ4XCI6IC03MSxcInlcIjogMTg0LFwielwiOiAwfSxcInBvczJcIjoge1wieFwiOiAtMjUuNzkyLFwieVwiOiAxNTYuNjc1LFwielwiOiAwfSxcInBvczNcIjoge1wieFwiOiAtMzUuNzkyLFwieVwiOiAyNy42NzUsXCJ6XCI6IDB9LFwicG9zNFwiOiB7XCJ4XCI6IC0yNSxcInlcIjogNDAsXCJ6XCI6IDB9fV07Il19 +//------QC-SOURCE-SPLIT------ + + (function() { + var nodeEnv = typeof require !== 'undefined' && typeof process !== 'undefined'; + var __module = nodeEnv ? module : {exports:{}}; + var __filename = 'preview-scripts/assets/Script/peizhi.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, '7d800jRKkRGfqSS3fhSet26', 'peizhi'); +// Script/peizhi.ts + +"use strict"; +var __extends = (this && this.__extends) || (function () { + var extendStatics = function (d, b) { + extendStatics = Object.setPrototypeOf || + ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) || + function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; }; + return extendStatics(d, b); + }; + return function (d, b) { + extendStatics(d, b); + function __() { this.constructor = d; } + d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); + }; +})(); +var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) { + var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; + if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc); + else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; + return c > 3 && r && Object.defineProperty(target, key, r), r; +}; +Object.defineProperty(exports, "__esModule", { value: true }); +var _a = cc._decorator, ccclass = _a.ccclass, property = _a.property, requireComponent = _a.requireComponent; +var NewClass = /** @class */ (function (_super) { + __extends(NewClass, _super); + function NewClass() { + var _this = _super !== null && _super.apply(this, arguments) || this; + _this.node1 = null; + _this.node2 = null; + _this.node3 = null; + _this.localTest = false; + _this.clientTestVersion = "1.0.0"; + _this.testVersion = null; + return _this; + // 3月17日 - 3月21日 工作完成内容 + // 1:游戏框架搭建 + // 2:制作18个基础方块预制体 (方块可编辑颜色与道具和状态) + // 3:完成地图的搭建,可配置8*8以内,任意组合,包括可缺口和障碍物配置 + // 4:完成地图墙面建立,根据 ↑3上面构建的地图自动生成墙体。 + // 5:做完方块的基础移动,跟随手指,遇到方块或者墙壁或者障碍物阻碍移动。 + // 6:方块的自动落点做完11个基础方块的(未做完还差11个) + // 3月24日 - 3月28日 预计完成目标 + // 1:完成全部方块的落点。 + // 2:完成门的搭建,门可选颜色,可选开关或者星星等特殊状态 + // 3:完成方块通过门的游戏逻辑,使游戏可以最基础运行玩起来 + // 4:出5关版本,配合小白备案审核。 + // 5:根据方块,地图,以及道具,制作地图编辑器 (方块和地图制作的时候都已经考虑到编辑器的需求了) + // 优先制作,后续开发拓展玩法功能时,小白可同步进行制作关卡。 + } + NewClass.prototype.start = function () { + // cc.fx.AudioManager.Instance.init(); + // this.testVersion.string = this.clientTestVersion; + // cc.director.loadScene("GameScene"); + // cc.director.preloadScene("GameScene", ()=>{ + // // debugger; + // }) + }; + //判断来源 + NewClass.prototype.containsTrain = function (str) { + return /from=train/i.test(str); + }; + //开始游戏,跳转至引导页面 + NewClass.prototype.startGame = function () { + cc.director.loadScene("GameScene"); + // cc.director.loadScene("GuideScene"); + }; + //备用,用来测试跳转 指定关卡 + NewClass.prototype.clickBtn = function (event, data) { + cc.fx.GameConfig.GM_INFO.custom = parseInt(data); + cc.director.loadScene("GameScene"); + }; + //打开排行榜 + NewClass.prototype.openRank = function () { + cc.director.loadScene("RankScene"); + }; + NewClass.prototype.update = function (dt) { + }; + __decorate([ + property(cc.Node) + ], NewClass.prototype, "node1", void 0); + __decorate([ + property(cc.Node) + ], NewClass.prototype, "node2", void 0); + __decorate([ + property(cc.Node) + ], NewClass.prototype, "node3", void 0); + __decorate([ + property(false) + ], NewClass.prototype, "localTest", void 0); + __decorate([ + property("") + ], NewClass.prototype, "clientTestVersion", void 0); + __decorate([ + property(cc.Label) + ], NewClass.prototype, "testVersion", void 0); + NewClass = __decorate([ + ccclass + ], NewClass); + return NewClass; +}(cc.Component)); +exports.default = NewClass; + +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,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImFzc2V0c1xcU2NyaXB0XFxwZWl6aGkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBRU0sSUFBQSxLQUF3QyxFQUFFLENBQUMsVUFBVSxFQUFwRCxPQUFPLGFBQUEsRUFBRSxRQUFRLGNBQUEsRUFBRSxnQkFBZ0Isc0JBQWlCLENBQUM7QUFHNUQ7SUFBc0MsNEJBQVk7SUFBbEQ7UUFBQSxxRUE0RUM7UUF4RUcsV0FBSyxHQUFZLElBQUksQ0FBQztRQUd0QixXQUFLLEdBQVksSUFBSSxDQUFDO1FBR3RCLFdBQUssR0FBWSxJQUFJLENBQUM7UUFHdEIsZUFBUyxHQUFZLEtBQUssQ0FBQztRQUczQix1QkFBaUIsR0FBVyxPQUFPLENBQUM7UUFHcEMsaUJBQVcsR0FBYSxJQUFJLENBQUM7O1FBd0NqQywyQkFBMkI7UUFFM0IsV0FBVztRQUNYLGlDQUFpQztRQUNqQyxzQ0FBc0M7UUFDdEMsaUNBQWlDO1FBQ2pDLHNDQUFzQztRQUN0QyxnQ0FBZ0M7UUFFaEMsdUJBQXVCO1FBRXZCLGVBQWU7UUFDZiwrQkFBK0I7UUFDL0IsK0JBQStCO1FBQy9CLG9CQUFvQjtRQUNwQixvREFBb0Q7UUFDcEQsaUNBQWlDO0lBQ2pDLENBQUM7SUF2REcsd0JBQUssR0FBTDtRQUVJLHNDQUFzQztRQUN0QyxvREFBb0Q7UUFFcEQsc0NBQXNDO1FBRXRDLDhDQUE4QztRQUM5QyxtQkFBbUI7UUFFbkIsS0FBSztJQUNULENBQUM7SUFFRCxNQUFNO0lBQ04sZ0NBQWEsR0FBYixVQUFjLEdBQUc7UUFFYixPQUFPLGFBQWEsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDbkMsQ0FBQztJQUVELGNBQWM7SUFDZCw0QkFBUyxHQUFUO1FBQ0ksRUFBRSxDQUFDLFFBQVEsQ0FBQyxTQUFTLENBQUMsV0FBVyxDQUFDLENBQUM7UUFDbkMsdUNBQXVDO0lBQzNDLENBQUM7SUFDRCxnQkFBZ0I7SUFDaEIsMkJBQVEsR0FBUixVQUFTLEtBQUssRUFBQyxJQUFJO1FBQ2YsRUFBRSxDQUFDLEVBQUUsQ0FBQyxVQUFVLENBQUMsT0FBTyxDQUFDLE1BQU0sR0FBRyxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDakQsRUFBRSxDQUFDLFFBQVEsQ0FBQyxTQUFTLENBQUMsV0FBVyxDQUFDLENBQUM7SUFDdkMsQ0FBQztJQUNELE9BQU87SUFDUCwyQkFBUSxHQUFSO1FBQ0ksRUFBRSxDQUFDLFFBQVEsQ0FBQyxTQUFTLENBQUMsV0FBVyxDQUFDLENBQUM7SUFDdkMsQ0FBQztJQUdTLHlCQUFNLEdBQWhCLFVBQWlCLEVBQVU7SUFDM0IsQ0FBQztJQXJERDtRQURDLFFBQVEsQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDOzJDQUNJO0lBR3RCO1FBREMsUUFBUSxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUM7MkNBQ0k7SUFHdEI7UUFEQyxRQUFRLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQzsyQ0FDSTtJQUd0QjtRQURDLFFBQVEsQ0FBQyxLQUFLLENBQUM7K0NBQ1c7SUFHM0I7UUFEQyxRQUFRLENBQUMsRUFBRSxDQUFDO3VEQUN1QjtJQUdwQztRQURDLFFBQVEsQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDO2lEQUNVO0lBbkJaLFFBQVE7UUFENUIsT0FBTztPQUNhLFFBQVEsQ0E0RTVCO0lBQUQsZUFBQztDQTVFRCxBQTRFQyxDQTVFcUMsRUFBRSxDQUFDLFNBQVMsR0E0RWpEO2tCQTVFb0IsUUFBUSIsImZpbGUiOiIiLCJzb3VyY2VSb290IjoiLyIsInNvdXJjZXNDb250ZW50IjpbIlxyXG5cclxuY29uc3Qge2NjY2xhc3MsIHByb3BlcnR5LCByZXF1aXJlQ29tcG9uZW50fSA9IGNjLl9kZWNvcmF0b3I7XHJcblxyXG5AY2NjbGFzc1xyXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBOZXdDbGFzcyBleHRlbmRzIGNjLkNvbXBvbmVudCB7XHJcblxyXG5cclxuICAgIEBwcm9wZXJ0eShjYy5Ob2RlKVxyXG4gICAgbm9kZTE6IGNjLk5vZGUgPSBudWxsO1xyXG5cclxuICAgIEBwcm9wZXJ0eShjYy5Ob2RlKVxyXG4gICAgbm9kZTI6IGNjLk5vZGUgPSBudWxsO1xyXG5cclxuICAgIEBwcm9wZXJ0eShjYy5Ob2RlKVxyXG4gICAgbm9kZTM6IGNjLk5vZGUgPSBudWxsO1xyXG5cclxuICAgIEBwcm9wZXJ0eShmYWxzZSlcclxuICAgIGxvY2FsVGVzdDogYm9vbGVhbiA9IGZhbHNlO1xyXG5cclxuICAgIEBwcm9wZXJ0eShcIlwiKVxyXG4gICAgY2xpZW50VGVzdFZlcnNpb246IHN0cmluZyA9IFwiMS4wLjBcIjtcclxuXHJcbiAgICBAcHJvcGVydHkoY2MuTGFiZWwpXHJcbiAgICB0ZXN0VmVyc2lvbjogY2MuTGFiZWwgPSBudWxsO1xyXG5cclxuICAgIHN0YXJ0ICgpIHtcclxuXHJcbiAgICAgICAgLy8gY2MuZnguQXVkaW9NYW5hZ2VyLkluc3RhbmNlLmluaXQoKTtcclxuICAgICAgICAvLyB0aGlzLnRlc3RWZXJzaW9uLnN0cmluZyA9IHRoaXMuY2xpZW50VGVzdFZlcnNpb247XHJcblxyXG4gICAgICAgIC8vIGNjLmRpcmVjdG9yLmxvYWRTY2VuZShcIkdhbWVTY2VuZVwiKTtcclxuXHJcbiAgICAgICAgLy8gY2MuZGlyZWN0b3IucHJlbG9hZFNjZW5lKFwiR2FtZVNjZW5lXCIsICgpPT57XHJcbiAgICAgICAgLy8gICAgIC8vIGRlYnVnZ2VyO1xyXG4gICAgICAgICBcclxuICAgICAgICAvLyB9KVxyXG4gICAgfVxyXG5cclxuICAgIC8v5Yik5pat5p2l5rqQXHJcbiAgICBjb250YWluc1RyYWluKHN0cikge1xyXG4gICAgXHJcbiAgICAgICAgcmV0dXJuIC9mcm9tPXRyYWluL2kudGVzdChzdHIpO1xyXG4gICAgfVxyXG5cclxuICAgIC8v5byA5aeL5ri45oiP77yM6Lez6L2s6Iez5byV5a+86aG16Z2iXHJcbiAgICBzdGFydEdhbWUoKXtcclxuICAgICAgICBjYy5kaXJlY3Rvci5sb2FkU2NlbmUoXCJHYW1lU2NlbmVcIik7XHJcbiAgICAgICAgLy8gY2MuZGlyZWN0b3IubG9hZFNjZW5lKFwiR3VpZGVTY2VuZVwiKTtcclxuICAgIH1cclxuICAgIC8v5aSH55So77yM55So5p2l5rWL6K+V6Lez6L2sIOaMh+WumuWFs+WNoVxyXG4gICAgY2xpY2tCdG4oZXZlbnQsZGF0YSl7XHJcbiAgICAgICAgY2MuZnguR2FtZUNvbmZpZy5HTV9JTkZPLmN1c3RvbSA9IHBhcnNlSW50KGRhdGEpO1xyXG4gICAgICAgIGNjLmRpcmVjdG9yLmxvYWRTY2VuZShcIkdhbWVTY2VuZVwiKTtcclxuICAgIH0gICBcclxuICAgIC8v5omT5byA5o6S6KGM5qacXHJcbiAgICBvcGVuUmFuaygpe1xyXG4gICAgICAgIGNjLmRpcmVjdG9yLmxvYWRTY2VuZShcIlJhbmtTY2VuZVwiKTtcclxuICAgIH1cclxuXHJcbiAgICBcclxuICAgIHByb3RlY3RlZCB1cGRhdGUoZHQ6IG51bWJlcik6IHZvaWQge1xyXG4gICAgfVxyXG4gICAgXHJcbi8vICAgICAz5pyIMTfml6UgLSAz5pyIMjHml6Ug5bel5L2c5a6M5oiQ5YaF5a65XHJcblxyXG4vLyAx77ya5ri45oiP5qGG5p625pCt5bu6XHJcbi8vIDLvvJrliLbkvZwxOOS4quWfuuehgOaWueWdl+mihOWItuS9kyAo5pa55Z2X5Y+v57yW6L6R6aKc6Imy5LiO6YGT5YW35ZKM54q25oCBKVxyXG4vLyAz77ya5a6M5oiQ5Zyw5Zu+55qE5pCt5bu677yM5Y+v6YWN572uOCo45Lul5YaF77yM5Lu75oSP57uE5ZCI77yM5YyF5ous5Y+v57y65Y+j5ZKM6Zqc56KN54mp6YWN572uXHJcbi8vIDTvvJrlrozmiJDlnLDlm77lopnpnaLlu7rnq4vvvIzmoLnmja4g4oaRM+S4iumdouaehOW7uueahOWcsOWbvuiHquWKqOeUn+aIkOWimeS9k+OAglxyXG4vLyA177ya5YGa5a6M5pa55Z2X55qE5Z+656GA56e75Yqo77yM6Lef6ZqP5omL5oyH77yM6YGH5Yiw5pa55Z2X5oiW6ICF5aKZ5aOB5oiW6ICF6Zqc56KN54mp6Zi756KN56e75Yqo44CCXHJcbi8vIDbvvJrmlrnlnZfnmoToh6rliqjokL3ngrnlgZrlrowxMeS4quWfuuehgOaWueWdl+eahO+8iOacquWBmuWujOi/mOW3rjEx5Liq77yJXHJcblxyXG4vLyAz5pyIMjTml6UgLSAz5pyIMjjml6Ug6aKE6K6h5a6M5oiQ55uu5qCHXHJcblxyXG4vLyAx77ya5a6M5oiQ5YWo6YOo5pa55Z2X55qE6JC954K544CCXHJcbi8vIDLvvJrlrozmiJDpl6jnmoTmkK3lu7rvvIzpl6jlj6/pgInpopzoibLvvIzlj6/pgInlvIDlhbPmiJbogIXmmJ/mmJ/nrYnnibnmrornirbmgIFcclxuLy8gM++8muWujOaIkOaWueWdl+mAmui/h+mXqOeahOa4uOaIj+mAu+i+ke+8jOS9v+a4uOaIj+WPr+S7peacgOWfuuehgOi/kOihjOeOqei1t+adpVxyXG4vLyA077ya5Ye6NeWFs+eJiOacrO+8jOmFjeWQiOWwj+eZveWkh+ahiOWuoeaguOOAglxyXG4vLyA177ya5qC55o2u5pa55Z2X77yM5Zyw5Zu+77yM5Lul5Y+K6YGT5YW377yM5Yi25L2c5Zyw5Zu+57yW6L6R5ZmoICjmlrnlnZflkozlnLDlm77liLbkvZznmoTml7blgJnpg73lt7Lnu4/ogIPomZHliLDnvJbovpHlmajnmoTpnIDmsYLkuoYpIFxyXG4vLyBcdOS8mOWFiOWItuS9nO+8jOWQjue7reW8gOWPkeaLk+WxleeOqeazleWKn+iDveaXtu+8jOWwj+eZveWPr+WQjOatpei/m+ihjOWItuS9nOWFs+WNoeOAglxyXG59XHJcbiJdfQ== +//------QC-SOURCE-SPLIT------ + + (function() { + var nodeEnv = typeof require !== 'undefined' && typeof process !== 'undefined'; + var __module = nodeEnv ? module : {exports:{}}; + var __filename = 'preview-scripts/assets/Script/Sdk/DouyinEntranceView.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, '8a024+q5K9MrpxcaTvucSDB', 'DouyinEntranceView'); +// Script/Sdk/DouyinEntranceView.ts + +"use strict"; +var __extends = (this && this.__extends) || (function () { + var extendStatics = function (d, b) { + extendStatics = Object.setPrototypeOf || + ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) || + function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; }; + return extendStatics(d, b); + }; + return function (d, b) { + extendStatics(d, b); + function __() { this.constructor = d; } + d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); + }; +})(); +var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) { + var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; + if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc); + else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; + return c > 3 && r && Object.defineProperty(target, key, r), r; +}; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.DouyinEntranceView = void 0; +var MiniGameSdk_1 = require("./MiniGameSdk"); +var _a = cc._decorator, ccclass = _a.ccclass, property = _a.property; +var DouyinEntranceView = /** @class */ (function (_super) { + __extends(DouyinEntranceView, _super); + function DouyinEntranceView() { + return _super !== null && _super.apply(this, arguments) || this; + } + DouyinEntranceView.prototype.start = function () { + }; + DouyinEntranceView.prototype.update = function (deltaTime) { + }; + DouyinEntranceView.prototype.onCloseClick = function () { + this.node.active = false; + }; + DouyinEntranceView.prototype.onNavigateToDouyinClick = function () { + MiniGameSdk_1.MiniGameSdk.BytedanceSidebar.navigateToSidebar(function (success) { + if (success) { + console.log('跳转成功'); + } + else { + console.log('跳转失败'); + } + }); + }; + DouyinEntranceView = __decorate([ + ccclass + ], DouyinEntranceView); + return DouyinEntranceView; +}(cc.Component)); +exports.DouyinEntranceView = DouyinEntranceView; + +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,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImFzc2V0c1xcU2NyaXB0XFxTZGtcXERvdXlpbkVudHJhbmNlVmlldy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsNkNBQTRDO0FBQ3RDLElBQUEsS0FBd0IsRUFBRSxDQUFDLFVBQVUsRUFBbkMsT0FBTyxhQUFBLEVBQUUsUUFBUSxjQUFrQixDQUFDO0FBSTVDO0lBQXdDLHNDQUFZO0lBQXBEOztJQXVCQSxDQUFDO0lBdEJHLGtDQUFLLEdBQUw7SUFFQSxDQUFDO0lBRUQsbUNBQU0sR0FBTixVQUFPLFNBQWlCO0lBRXhCLENBQUM7SUFFRCx5Q0FBWSxHQUFaO1FBQ0ksSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLEdBQUcsS0FBSyxDQUFDO0lBQzdCLENBQUM7SUFFRCxvREFBdUIsR0FBdkI7UUFFSSx5QkFBVyxDQUFDLGdCQUFnQixDQUFDLGlCQUFpQixDQUFDLFVBQUMsT0FBZ0I7WUFDNUQsSUFBSSxPQUFPLEVBQUU7Z0JBQ1QsT0FBTyxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsQ0FBQzthQUN2QjtpQkFBTTtnQkFDSCxPQUFPLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxDQUFDO2FBQ3ZCO1FBQ0wsQ0FBQyxDQUFDLENBQUM7SUFDUCxDQUFDO0lBdEJRLGtCQUFrQjtRQUQ5QixPQUFPO09BQ0ssa0JBQWtCLENBdUI5QjtJQUFELHlCQUFDO0NBdkJELEFBdUJDLENBdkJ1QyxFQUFFLENBQUMsU0FBUyxHQXVCbkQ7QUF2QlksZ0RBQWtCIiwiZmlsZSI6IiIsInNvdXJjZVJvb3QiOiIvIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgTWluaUdhbWVTZGsgfSBmcm9tIFwiLi9NaW5pR2FtZVNka1wiO1xyXG5jb25zdCB7IGNjY2xhc3MsIHByb3BlcnR5IH0gPSBjYy5fZGVjb3JhdG9yO1xyXG5cclxuXHJcbkBjY2NsYXNzXHJcbmV4cG9ydCBjbGFzcyBEb3V5aW5FbnRyYW5jZVZpZXcgZXh0ZW5kcyBjYy5Db21wb25lbnQge1xyXG4gICAgc3RhcnQoKSB7XHJcblxyXG4gICAgfVxyXG5cclxuICAgIHVwZGF0ZShkZWx0YVRpbWU6IG51bWJlcikge1xyXG5cclxuICAgIH1cclxuXHJcbiAgICBvbkNsb3NlQ2xpY2soKSB7XHJcbiAgICAgICAgdGhpcy5ub2RlLmFjdGl2ZSA9IGZhbHNlO1xyXG4gICAgfVxyXG5cclxuICAgIG9uTmF2aWdhdGVUb0RvdXlpbkNsaWNrKCkge1xyXG5cclxuICAgICAgICBNaW5pR2FtZVNkay5CeXRlZGFuY2VTaWRlYmFyLm5hdmlnYXRlVG9TaWRlYmFyKChzdWNjZXNzOiBib29sZWFuKSA9PiB7IC8vIOi3s+i9rOWIsOaKlumfs+S+p+i+ueagj1xyXG4gICAgICAgICAgICBpZiAoc3VjY2Vzcykge1xyXG4gICAgICAgICAgICAgICAgY29uc29sZS5sb2coJ+i3s+i9rOaIkOWKnycpO1xyXG4gICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgY29uc29sZS5sb2coJ+i3s+i9rOWksei0pScpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfSk7XHJcbiAgICB9XHJcbn1cclxuIl19 +//------QC-SOURCE-SPLIT------ + + (function() { + var nodeEnv = typeof require !== 'undefined' && typeof process !== 'undefined'; + var __module = nodeEnv ? module : {exports:{}}; + var __filename = 'preview-scripts/assets/Script/btnControl.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, '6ee6czJ4eVNb4Feiqps5SIa', 'btnControl'); +// Script/btnControl.ts + +"use strict"; +var __extends = (this && this.__extends) || (function () { + var extendStatics = function (d, b) { + extendStatics = Object.setPrototypeOf || + ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) || + function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; }; + return extendStatics(d, b); + }; + return function (d, b) { + extendStatics(d, b); + function __() { this.constructor = d; } + d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); + }; +})(); +var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) { + var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; + if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc); + else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; + return c > 3 && r && Object.defineProperty(target, key, r), r; +}; +Object.defineProperty(exports, "__esModule", { value: true }); +var _a = cc._decorator, ccclass = _a.ccclass, property = _a.property; +var btnControl = /** @class */ (function (_super) { + __extends(btnControl, _super); + function btnControl() { + return _super !== null && _super.apply(this, arguments) || this; + } + btnControl.prototype.onLoad = function () { + this._touch = true; + }; + btnControl.prototype.start = function () { + }; + btnControl.prototype.setTouch = function (type) { + this._touch = type; + }; + btnControl.prototype.update = function (dt) { + }; + btnControl = __decorate([ + ccclass + ], btnControl); + return btnControl; +}(cc.Component)); +exports.default = btnControl; + +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,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImFzc2V0c1xcU2NyaXB0XFxidG5Db250cm9sLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUdNLElBQUEsS0FBc0IsRUFBRSxDQUFDLFVBQVUsRUFBbEMsT0FBTyxhQUFBLEVBQUUsUUFBUSxjQUFpQixDQUFDO0FBSTFDO0lBQXdDLDhCQUFZO0lBQXBEOztJQWtCQSxDQUFDO0lBYkcsMkJBQU0sR0FBTjtRQUNJLElBQUksQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFDO0lBQ3ZCLENBQUM7SUFFRCwwQkFBSyxHQUFMO0lBQ0EsQ0FBQztJQUVELDZCQUFRLEdBQVIsVUFBUyxJQUFJO1FBQ1QsSUFBSSxDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUM7SUFDdkIsQ0FBQztJQUVELDJCQUFNLEdBQU4sVUFBUSxFQUFFO0lBQ1YsQ0FBQztJQWpCZ0IsVUFBVTtRQUQ5QixPQUFPO09BQ2EsVUFBVSxDQWtCOUI7SUFBRCxpQkFBQztDQWxCRCxBQWtCQyxDQWxCdUMsRUFBRSxDQUFDLFNBQVMsR0FrQm5EO2tCQWxCb0IsVUFBVSIsImZpbGUiOiIiLCJzb3VyY2VSb290IjoiLyIsInNvdXJjZXNDb250ZW50IjpbIlxyXG5cclxuXHJcbmNvbnN0IHtjY2NsYXNzLCBwcm9wZXJ0eX0gPSBjYy5fZGVjb3JhdG9yO1xyXG5cclxuXHJcbkBjY2NsYXNzXHJcbmV4cG9ydCBkZWZhdWx0IGNsYXNzIGJ0bkNvbnRyb2wgZXh0ZW5kcyBjYy5Db21wb25lbnQge1xyXG4gICAgc3RhdGljIF9pbnN0YW5jZTogYW55O1xyXG4gICAgX3RvdWNoOiBib29sZWFuO1xyXG5cclxuXHJcbiAgICBvbkxvYWQgKCkgeyBcclxuICAgICAgICB0aGlzLl90b3VjaCA9IHRydWU7XHJcbiAgICB9IFxyXG5cclxuICAgIHN0YXJ0ICgpIHtcclxuICAgIH1cclxuXHJcbiAgICBzZXRUb3VjaCh0eXBlKXtcclxuICAgICAgICB0aGlzLl90b3VjaCA9IHR5cGU7XHJcbiAgICB9XHJcblxyXG4gICAgdXBkYXRlIChkdCkge1xyXG4gICAgfVxyXG59XHJcbiJdfQ== //------QC-SOURCE-SPLIT------ (function() { @@ -16438,106 +10696,106 @@ cc._RF.pop(); cc._RF.push(module, '90c37YHUUVPsY0mlNmom67u', 'Barrier'); // Script/Barrier.ts -"use strict"; -var __extends = (this && this.__extends) || (function () { - var extendStatics = function (d, b) { - extendStatics = Object.setPrototypeOf || - ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) || - function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; }; - return extendStatics(d, b); - }; - return function (d, b) { - extendStatics(d, b); - function __() { this.constructor = d; } - d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); - }; -})(); -var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) { - var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; - if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc); - else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; - return c > 3 && r && Object.defineProperty(target, key, r), r; -}; -Object.defineProperty(exports, "__esModule", { value: true }); -var Map_1 = require("./Map"); -var _a = cc._decorator, ccclass = _a.ccclass, property = _a.property; -var Block = /** @class */ (function (_super) { - __extends(Block, _super); - function Block() { - var _this = _super !== null && _super.apply(this, arguments) || this; - // 新增缓存变量 - _this.selfBoxColliders = []; - _this.allBoxColliders = []; - // @property({ - // tooltip: '碰撞形状,None就是无敌,不参与碰撞', - // type: cc.Enum(BlockType), - // // default: BlockType.Nomal, - // displayName: '碰撞形状' - // }) - // LIFE-CYCLE CALLBACKS: - // @property(cc.SpriteAtlas) - // UI: cc.SpriteAtlas = null; - _this.initialTouchOffset = null; - _this.offsetTolerance = 100; // 偏移容忍度; - _this.touchPoint = null; //触摸点 - _this.isTouch = false; //是否触摸 - _this.posX = 0; //地图块的X坐标 - _this.posY = 0; //地图块的Y坐标 - _this.moveLeft = true; //是否可以左移; - _this.moveRight = true; //是否可以右移; - _this.moveUp = true; //是否可以上移; - _this.moveDown = true; //是否可以下移; - _this.moveCorner = 0; //是否碰撞角落 - _this.moveY = 0; //是否可以上下移动; - _this.moveX = 0; //是否可以左右移动; - _this.touchPointX = 0; //触摸点X坐标; - _this.touchPointY = 0; //触摸点Y坐标; - _this.blockId = 0; //方块ID; - _this.level = 0; //叠加方块层数; - _this.pz = false; - return _this; - } - Block.prototype.onLoad = function () { - // this.node.on(cc.Node.EventType.TOUCH_START, this.touchStart, this); - // this.node.on(cc.Node.EventType.TOUCH_MOVE, this.touchMove, this); - // this.node.on(cc.Node.EventType.TOUCH_CANCEL, this.touchEnd, this); - // this.node.on(cc.Node.EventType.TOUCH_END, this.touchEnd, this); - this.pz = false; - this.stacking = cc.v2(0, 0); - // this.selfBoxColliders = this.node.getComponentsInChildren(cc.BoxCollider) - // .filter(collider => collider.tag < 4); - }; - Block.prototype.start = function () { - }; - Block.prototype.jsonDeepClone = function (obj) { - return JSON.parse(JSON.stringify(obj)); - }; - Block.prototype.init = function (block_Info, posX, posY, node) { - this.block_Info = this.jsonDeepClone(block_Info); - var mapInfo = Map_1.default._instance.mapInfo; - console.log("block_Info", this.block_Info); - for (var i = 0; i < mapInfo.length; i++) { - var blockRect = mapInfo[i].getBoundingBox(); - // 使用 cc.Intersection.pointInRect 方法判断点是否在矩形范围内 - var point = cc.v2(this.node.position.x - 5, this.node.position.y + 10); - if (blockRect.contains(point)) { - this.posX = mapInfo[i].getComponent("MapBlock").posX; - this.posY = mapInfo[i].getComponent("MapBlock").posY; - this.level = 50 + this.posX - this.posY * 3; - this.node.zIndex = this.level; - this.node.x = mapInfo[i].x + 65; - this.node.y = mapInfo[i].y - 60; - i = 10000; - break; - } - } - }; - Block = __decorate([ - ccclass - ], Block); - return Block; -}(cc.Component)); -exports.default = Block; +"use strict"; +var __extends = (this && this.__extends) || (function () { + var extendStatics = function (d, b) { + extendStatics = Object.setPrototypeOf || + ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) || + function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; }; + return extendStatics(d, b); + }; + return function (d, b) { + extendStatics(d, b); + function __() { this.constructor = d; } + d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); + }; +})(); +var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) { + var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; + if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc); + else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; + return c > 3 && r && Object.defineProperty(target, key, r), r; +}; +Object.defineProperty(exports, "__esModule", { value: true }); +var Map_1 = require("./Map"); +var _a = cc._decorator, ccclass = _a.ccclass, property = _a.property; +var Block = /** @class */ (function (_super) { + __extends(Block, _super); + function Block() { + var _this = _super !== null && _super.apply(this, arguments) || this; + // 新增缓存变量 + _this.selfBoxColliders = []; + _this.allBoxColliders = []; + // @property({ + // tooltip: '碰撞形状,None就是无敌,不参与碰撞', + // type: cc.Enum(BlockType), + // // default: BlockType.Nomal, + // displayName: '碰撞形状' + // }) + // LIFE-CYCLE CALLBACKS: + // @property(cc.SpriteAtlas) + // UI: cc.SpriteAtlas = null; + _this.initialTouchOffset = null; + _this.offsetTolerance = 100; // 偏移容忍度; + _this.touchPoint = null; //触摸点 + _this.isTouch = false; //是否触摸 + _this.posX = 0; //地图块的X坐标 + _this.posY = 0; //地图块的Y坐标 + _this.moveLeft = true; //是否可以左移; + _this.moveRight = true; //是否可以右移; + _this.moveUp = true; //是否可以上移; + _this.moveDown = true; //是否可以下移; + _this.moveCorner = 0; //是否碰撞角落 + _this.moveY = 0; //是否可以上下移动; + _this.moveX = 0; //是否可以左右移动; + _this.touchPointX = 0; //触摸点X坐标; + _this.touchPointY = 0; //触摸点Y坐标; + _this.blockId = 0; //方块ID; + _this.level = 0; //叠加方块层数; + _this.pz = false; + return _this; + } + Block.prototype.onLoad = function () { + // this.node.on(cc.Node.EventType.TOUCH_START, this.touchStart, this); + // this.node.on(cc.Node.EventType.TOUCH_MOVE, this.touchMove, this); + // this.node.on(cc.Node.EventType.TOUCH_CANCEL, this.touchEnd, this); + // this.node.on(cc.Node.EventType.TOUCH_END, this.touchEnd, this); + this.pz = false; + this.stacking = cc.v2(0, 0); + // this.selfBoxColliders = this.node.getComponentsInChildren(cc.BoxCollider) + // .filter(collider => collider.tag < 4); + }; + Block.prototype.start = function () { + }; + Block.prototype.jsonDeepClone = function (obj) { + return JSON.parse(JSON.stringify(obj)); + }; + Block.prototype.init = function (block_Info, posX, posY, node) { + this.block_Info = this.jsonDeepClone(block_Info); + var mapInfo = Map_1.default._instance.mapInfo; + console.log("block_Info", this.block_Info); + for (var i = 0; i < mapInfo.length; i++) { + var blockRect = mapInfo[i].getBoundingBox(); + // 使用 cc.Intersection.pointInRect 方法判断点是否在矩形范围内 + var point = cc.v2(this.node.position.x - 5, this.node.position.y + 10); + if (blockRect.contains(point)) { + this.posX = mapInfo[i].getComponent("MapBlock").posX; + this.posY = mapInfo[i].getComponent("MapBlock").posY; + this.level = 50 + this.posX - this.posY * 3; + this.node.zIndex = this.level; + this.node.x = mapInfo[i].x + 65; + this.node.y = mapInfo[i].y - 60; + i = 10000; + break; + } + } + }; + Block = __decorate([ + ccclass + ], Block); + return Block; +}(cc.Component)); +exports.default = Block; cc._RF.pop(); } @@ -16551,6 +10809,98 @@ cc._RF.pop(); } })(); //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImFzc2V0c1xcU2NyaXB0XFxCYXJyaWVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUNBLDZCQUFnQztBQUUxQixJQUFBLEtBQXdCLEVBQUUsQ0FBQyxVQUFVLEVBQW5DLE9BQU8sYUFBQSxFQUFFLFFBQVEsY0FBa0IsQ0FBQztBQUc1QztJQUFtQyx5QkFBWTtJQUEvQztRQUFBLHFFQTBGQztRQXhGRyxTQUFTO1FBQ0Qsc0JBQWdCLEdBQXFCLEVBQUUsQ0FBQztRQUN4QyxxQkFBZSxHQUFxQixFQUFFLENBQUM7UUFDL0MsY0FBYztRQUNkLHNDQUFzQztRQUN0QyxnQ0FBZ0M7UUFDaEMsbUNBQW1DO1FBQ25DLDBCQUEwQjtRQUMxQixLQUFLO1FBS0wsd0JBQXdCO1FBQ3hCLDRCQUE0QjtRQUM1Qiw2QkFBNkI7UUFDckIsd0JBQWtCLEdBQVksSUFBSSxDQUFDO1FBQ25DLHFCQUFlLEdBQUcsR0FBRyxDQUFDLENBQUMsVUFBVTtRQUd6QyxnQkFBVSxHQUFZLElBQUksQ0FBQyxDQUFLLEtBQUs7UUFDckMsYUFBTyxHQUFZLEtBQUssQ0FBQyxDQUFPLE1BQU07UUFDdEMsVUFBSSxHQUFXLENBQUMsQ0FBQyxDQUFlLFNBQVM7UUFDekMsVUFBSSxHQUFXLENBQUMsQ0FBQyxDQUFlLFNBQVM7UUFDekMsY0FBUSxHQUFZLElBQUksQ0FBQyxDQUFNLFNBQVM7UUFDeEMsZUFBUyxHQUFZLElBQUksQ0FBQyxDQUFLLFNBQVM7UUFDeEMsWUFBTSxHQUFZLElBQUksQ0FBQyxDQUFRLFNBQVM7UUFDeEMsY0FBUSxHQUFZLElBQUksQ0FBQyxDQUFNLFNBQVM7UUFDeEMsZ0JBQVUsR0FBVyxDQUFDLENBQUMsQ0FBUSxRQUFRO1FBQ3ZDLFdBQUssR0FBVyxDQUFDLENBQUMsQ0FBVSxXQUFXO1FBQ3ZDLFdBQUssR0FBVyxDQUFDLENBQUMsQ0FBVSxXQUFXO1FBQ3ZDLGlCQUFXLEdBQVcsQ0FBQyxDQUFDLENBQVEsU0FBUztRQUN6QyxpQkFBVyxHQUFXLENBQUMsQ0FBQyxDQUFRLFNBQVM7UUFDekMsYUFBTyxHQUFXLENBQUMsQ0FBQyxDQUFZLE9BQU87UUFFdkMsV0FBSyxHQUFXLENBQUMsQ0FBQyxDQUFZLFNBQVM7UUFDdkMsUUFBRSxHQUFZLEtBQUssQ0FBQzs7SUFvRHhCLENBQUM7SUExQ0csc0JBQU0sR0FBTjtRQUNJLHNFQUFzRTtRQUN0RSxzRUFBc0U7UUFDdEUsdUVBQXVFO1FBQ3ZFLG9FQUFvRTtRQUNwRSxJQUFJLENBQUMsRUFBRSxHQUFHLEtBQUssQ0FBQztRQUNoQixJQUFJLENBQUMsUUFBUSxHQUFHLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO1FBQzVCLDRFQUE0RTtRQUM1RSx5Q0FBeUM7SUFDN0MsQ0FBQztJQUdELHFCQUFLLEdBQUw7SUFFQSxDQUFDO0lBRUQsNkJBQWEsR0FBYixVQUFpQixHQUFNO1FBQ25CLE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7SUFDM0MsQ0FBQztJQUVELG9CQUFJLEdBQUosVUFBSyxVQUFVLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJO1FBQzdCLElBQUksQ0FBQyxVQUFVLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQyxVQUFVLENBQUMsQ0FBQztRQUNqRCxJQUFJLE9BQU8sR0FBRyxhQUFXLENBQUMsU0FBUyxDQUFDLE9BQU8sQ0FBQztRQUM1QyxPQUFPLENBQUMsR0FBRyxDQUFDLFlBQVksRUFBRSxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUM7UUFDM0MsS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLE9BQU8sQ0FBQyxNQUFNLEVBQUUsQ0FBQyxFQUFFLEVBQUU7WUFDckMsSUFBSSxTQUFTLEdBQUcsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLGNBQWMsRUFBRSxDQUFDO1lBQzVDLCtDQUErQztZQUMvQyxJQUFJLEtBQUssR0FBRyxFQUFFLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUMsR0FBRyxDQUFDLEVBQUUsSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFBO1lBQ3RFLElBQUksU0FBUyxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsRUFBRTtnQkFDM0IsSUFBSSxDQUFDLElBQUksR0FBRyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsWUFBWSxDQUFDLFVBQVUsQ0FBQyxDQUFDLElBQUksQ0FBQztnQkFDckQsSUFBSSxDQUFDLElBQUksR0FBRyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsWUFBWSxDQUFDLFVBQVUsQ0FBQyxDQUFDLElBQUksQ0FBQztnQkFDckQsSUFBSSxDQUFDLEtBQUssR0FBRyxFQUFFLEdBQUcsSUFBSSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUMsSUFBSSxHQUFHLENBQUMsQ0FBQztnQkFDNUMsSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQztnQkFDOUIsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLEdBQUcsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxFQUFFLENBQUM7Z0JBQ2hDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxHQUFHLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsRUFBRSxDQUFDO2dCQUNoQyxDQUFDLEdBQUcsS0FBSyxDQUFDO2dCQUNWLE1BQU07YUFDVDtTQUNKO0lBRUwsQ0FBQztJQXhGZ0IsS0FBSztRQUR6QixPQUFPO09BQ2EsS0FBSyxDQTBGekI7SUFBRCxZQUFDO0NBMUZELEFBMEZDLENBMUZrQyxFQUFFLENBQUMsU0FBUyxHQTBGOUM7a0JBMUZvQixLQUFLIiwiZmlsZSI6IiIsInNvdXJjZVJvb3QiOiIvIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IENvbGxpc2lvbkRldGVjdGlvbiBmcm9tIFwiLi9Db2xsaXNpb25EZXRlY3Rpb25cIjtcclxuaW1wb3J0IE1hcENvbnJvbGVyIGZyb20gXCIuL01hcFwiO1xyXG5cclxuY29uc3QgeyBjY2NsYXNzLCBwcm9wZXJ0eSB9ID0gY2MuX2RlY29yYXRvcjtcclxuXHJcbkBjY2NsYXNzXHJcbmV4cG9ydCBkZWZhdWx0IGNsYXNzIEJsb2NrIGV4dGVuZHMgY2MuQ29tcG9uZW50IHtcclxuXHJcbiAgICAvLyDmlrDlop7nvJPlrZjlj5jph49cclxuICAgIHByaXZhdGUgc2VsZkJveENvbGxpZGVyczogY2MuQm94Q29sbGlkZXJbXSA9IFtdO1xyXG4gICAgcHJpdmF0ZSBhbGxCb3hDb2xsaWRlcnM6IGNjLkJveENvbGxpZGVyW10gPSBbXTtcclxuICAgIC8vIEBwcm9wZXJ0eSh7XHJcbiAgICAvLyAgICAgdG9vbHRpcDogJ+eisOaSnuW9oueKtu+8jE5vbmXlsLHmmK/ml6DmlYzvvIzkuI3lj4LkuI7norDmkp4nLFxyXG4gICAgLy8gICAgIHR5cGU6IGNjLkVudW0oQmxvY2tUeXBlKSxcclxuICAgIC8vICAgICAvLyBkZWZhdWx0OiBCbG9ja1R5cGUuTm9tYWwsXHJcbiAgICAvLyAgICAgZGlzcGxheU5hbWU6ICfnorDmkp7lvaLnirYnXHJcbiAgICAvLyB9KVxyXG5cclxuXHJcblxyXG5cclxuICAgIC8vIExJRkUtQ1lDTEUgQ0FMTEJBQ0tTOlxyXG4gICAgLy8gQHByb3BlcnR5KGNjLlNwcml0ZUF0bGFzKVxyXG4gICAgLy8gVUk6IGNjLlNwcml0ZUF0bGFzID0gbnVsbDtcclxuICAgIHByaXZhdGUgaW5pdGlhbFRvdWNoT2Zmc2V0OiBjYy5WZWMyID0gbnVsbDtcclxuICAgIHByaXZhdGUgb2Zmc2V0VG9sZXJhbmNlID0gMTAwOyAvLyDlgY/np7vlrrnlv43luqY7IFxyXG5cclxuICAgIGFsbEJsb2NrczogYW55OyAgICAgICAvL+aJgOacieeahOaWueWdlyznlKjkuo7orqHnrpdwb3NYLHBvc1nmtojpmaRcclxuICAgIHRvdWNoUG9pbnQ6IGNjLlZlYzIgPSBudWxsOyAgICAgLy/op6bmkbjngrlcclxuICAgIGlzVG91Y2g6IGJvb2xlYW4gPSBmYWxzZTsgICAgICAgLy/mmK/lkKbop6bmkbhcclxuICAgIHBvc1g6IG51bWJlciA9IDA7ICAgICAgICAgICAgICAgLy/lnLDlm77lnZfnmoRY5Z2Q5qCHXHJcbiAgICBwb3NZOiBudW1iZXIgPSAwOyAgICAgICAgICAgICAgIC8v5Zyw5Zu+5Z2X55qEWeWdkOagh1xyXG4gICAgbW92ZUxlZnQ6IGJvb2xlYW4gPSB0cnVlOyAgICAgIC8v5piv5ZCm5Y+v5Lul5bem56e7O1xyXG4gICAgbW92ZVJpZ2h0OiBib29sZWFuID0gdHJ1ZTsgICAgIC8v5piv5ZCm5Y+v5Lul5Y+z56e7O1xyXG4gICAgbW92ZVVwOiBib29sZWFuID0gdHJ1ZTsgICAgICAgIC8v5piv5ZCm5Y+v5Lul5LiK56e7O1xyXG4gICAgbW92ZURvd246IGJvb2xlYW4gPSB0cnVlOyAgICAgIC8v5piv5ZCm5Y+v5Lul5LiL56e7O1xyXG4gICAgbW92ZUNvcm5lcjogbnVtYmVyID0gMDsgICAgICAgIC8v5piv5ZCm56Kw5pKe6KeS6JC9XHJcbiAgICBtb3ZlWTogbnVtYmVyID0gMDsgICAgICAgICAgLy/mmK/lkKblj6/ku6XkuIrkuIvnp7vliqg7XHJcbiAgICBtb3ZlWDogbnVtYmVyID0gMDsgICAgICAgICAgLy/mmK/lkKblj6/ku6Xlt6blj7Pnp7vliqg7XHJcbiAgICB0b3VjaFBvaW50WDogbnVtYmVyID0gMDsgICAgICAgIC8v6Kem5pG454K5WOWdkOaghztcclxuICAgIHRvdWNoUG9pbnRZOiBudW1iZXIgPSAwOyAgICAgICAgLy/op6bmkbjngrlZ5Z2Q5qCHO1xyXG4gICAgYmxvY2tJZDogbnVtYmVyID0gMDsgICAgICAgICAgICAvL+aWueWdl0lEO1xyXG4gICAgc3RhY2tpbmc6IGNjLlZlYzI7ICAgICAgICAvL+WPoOWKoOaWueWdl1xyXG4gICAgbGV2ZWw6IG51bWJlciA9IDA7ICAgICAgICAgICAgLy/lj6DliqDmlrnlnZflsYLmlbA7XHJcbiAgICBwejogYm9vbGVhbiA9IGZhbHNlO1xyXG4gICAgY29sbGlkZXI6IGFueTtcclxuICAgIGJsb2NrX0luZm86IGFueTtcclxuICAgIF90b3VjaExpc3RlbmVyOiBhbnk7XHJcbiAgICByZWxhdGl2ZV9Qb3NpdGlvbjogY2MuVmVjMjsgIC8v54K55Ye75ZKM5pa55Z2X55u45a+55L2N572uXHJcbiAgICBwcml2YXRlIF9ldmVudE1hbmFnZXI6IGFueTtcclxuICAgIGhpdDogY2MuTm9kZTtcclxuXHJcblxyXG5cclxuICAgIG9uTG9hZCgpIHtcclxuICAgICAgICAvLyB0aGlzLm5vZGUub24oY2MuTm9kZS5FdmVudFR5cGUuVE9VQ0hfU1RBUlQsIHRoaXMudG91Y2hTdGFydCwgdGhpcyk7XHJcbiAgICAgICAgLy8gdGhpcy5ub2RlLm9uKGNjLk5vZGUuRXZlbnRUeXBlLlRPVUNIX01PVkUsIHRoaXMudG91Y2hNb3ZlLCB0aGlzKTsgIFxyXG4gICAgICAgIC8vIHRoaXMubm9kZS5vbihjYy5Ob2RlLkV2ZW50VHlwZS5UT1VDSF9DQU5DRUwsIHRoaXMudG91Y2hFbmQsIHRoaXMpOyAgXHJcbiAgICAgICAgLy8gdGhpcy5ub2RlLm9uKGNjLk5vZGUuRXZlbnRUeXBlLlRPVUNIX0VORCwgdGhpcy50b3VjaEVuZCwgdGhpcyk7ICBcclxuICAgICAgICB0aGlzLnB6ID0gZmFsc2U7XHJcbiAgICAgICAgdGhpcy5zdGFja2luZyA9IGNjLnYyKDAsIDApO1xyXG4gICAgICAgIC8vIHRoaXMuc2VsZkJveENvbGxpZGVycyA9IHRoaXMubm9kZS5nZXRDb21wb25lbnRzSW5DaGlsZHJlbihjYy5Cb3hDb2xsaWRlcilcclxuICAgICAgICAvLyAuZmlsdGVyKGNvbGxpZGVyID0+IGNvbGxpZGVyLnRhZyA8IDQpO1xyXG4gICAgfVxyXG5cclxuXHJcbiAgICBzdGFydCgpIHtcclxuXHJcbiAgICB9XHJcblxyXG4gICAganNvbkRlZXBDbG9uZTxUPihvYmo6IFQpOiBUIHtcclxuICAgICAgICByZXR1cm4gSlNPTi5wYXJzZShKU09OLnN0cmluZ2lmeShvYmopKTtcclxuICAgIH1cclxuXHJcbiAgICBpbml0KGJsb2NrX0luZm8sIHBvc1gsIHBvc1ksIG5vZGUpIHtcclxuICAgICAgICB0aGlzLmJsb2NrX0luZm8gPSB0aGlzLmpzb25EZWVwQ2xvbmUoYmxvY2tfSW5mbyk7XHJcbiAgICAgICAgbGV0IG1hcEluZm8gPSBNYXBDb25yb2xlci5faW5zdGFuY2UubWFwSW5mbztcclxuICAgICAgICBjb25zb2xlLmxvZyhcImJsb2NrX0luZm9cIiwgdGhpcy5ibG9ja19JbmZvKTtcclxuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IG1hcEluZm8ubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICAgICAgbGV0IGJsb2NrUmVjdCA9IG1hcEluZm9baV0uZ2V0Qm91bmRpbmdCb3goKTtcclxuICAgICAgICAgICAgLy8g5L2/55SoIGNjLkludGVyc2VjdGlvbi5wb2ludEluUmVjdCDmlrnms5XliKTmlq3ngrnmmK/lkKblnKjnn6nlvaLojIPlm7TlhoVcclxuICAgICAgICAgICAgbGV0IHBvaW50ID0gY2MudjIodGhpcy5ub2RlLnBvc2l0aW9uLnggLSA1LCB0aGlzLm5vZGUucG9zaXRpb24ueSArIDEwKVxyXG4gICAgICAgICAgICBpZiAoYmxvY2tSZWN0LmNvbnRhaW5zKHBvaW50KSkge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5wb3NYID0gbWFwSW5mb1tpXS5nZXRDb21wb25lbnQoXCJNYXBCbG9ja1wiKS5wb3NYO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5wb3NZID0gbWFwSW5mb1tpXS5nZXRDb21wb25lbnQoXCJNYXBCbG9ja1wiKS5wb3NZO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5sZXZlbCA9IDUwICsgdGhpcy5wb3NYIC0gdGhpcy5wb3NZICogMztcclxuICAgICAgICAgICAgICAgIHRoaXMubm9kZS56SW5kZXggPSB0aGlzLmxldmVsO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5ub2RlLnggPSBtYXBJbmZvW2ldLnggKyA2NTtcclxuICAgICAgICAgICAgICAgIHRoaXMubm9kZS55ID0gbWFwSW5mb1tpXS55IC0gNjA7XHJcbiAgICAgICAgICAgICAgICBpID0gMTAwMDA7XHJcbiAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuXHJcbiAgICB9XHJcblxyXG59XHJcblxyXG5cclxuIl19 +//------QC-SOURCE-SPLIT------ + + (function() { + var nodeEnv = typeof require !== 'undefined' && typeof process !== 'undefined'; + var __module = nodeEnv ? module : {exports:{}}; + var __filename = 'preview-scripts/assets/Script/prop/Lock.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, '41cb8ugLSBH/5aNhnsJ5lX7', 'Lock'); +// Script/prop/Lock.ts + +"use strict"; +// Learn TypeScript: +// - https://docs.cocos.com/creator/manual/en/scripting/typescript.html +// Learn Attribute: +// - https://docs.cocos.com/creator/manual/en/scripting/reference/attributes.html +// Learn life-cycle callbacks: +// - https://docs.cocos.com/creator/manual/en/scripting/life-cycle-callbacks.html +var __extends = (this && this.__extends) || (function () { + var extendStatics = function (d, b) { + extendStatics = Object.setPrototypeOf || + ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) || + function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; }; + return extendStatics(d, b); + }; + return function (d, b) { + extendStatics(d, b); + function __() { this.constructor = d; } + d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); + }; +})(); +var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) { + var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; + if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc); + else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; + return c > 3 && r && Object.defineProperty(target, key, r), r; +}; +Object.defineProperty(exports, "__esModule", { value: true }); +var NumberToImage_1 = require("../NumberToImage"); +var _a = cc._decorator, ccclass = _a.ccclass, property = _a.property; +var Lock = /** @class */ (function (_super) { + __extends(Lock, _super); + function Lock() { + var _this = _super !== null && _super.apply(this, arguments) || this; + _this.time = 0; + return _this; + // update (dt) {} + } + // mapInfo: number[][] = []; + Lock.prototype.onLoad = function () { + }; + Lock.prototype.start = function () { + }; + Lock.prototype.init = function (time) { + if (time) + this.time = time; + this.node.getChildByName("time").active = true; + NumberToImage_1.default.numberToImageNodes(this.time, 20, 8, "lock_", this.node.getChildByName("time"), false); + }; + Lock.prototype.reduce = function () { + this.time -= 1; + NumberToImage_1.default.numberToImageNodes(this.time, 20, 8, "lock_", this.node.getChildByName("time"), false); + if (this.time <= 0) { + this.node.parent.getComponent("Block").type = 0; + this.node.destroy(); + this.node.removeFromParent(); + } + }; + Lock = __decorate([ + ccclass + ], Lock); + return Lock; +}(cc.Component)); +exports.default = Lock; + +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,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImFzc2V0c1xcU2NyaXB0XFxwcm9wXFxMb2NrLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSxvQkFBb0I7QUFDcEIsd0VBQXdFO0FBQ3hFLG1CQUFtQjtBQUNuQixrRkFBa0Y7QUFDbEYsOEJBQThCO0FBQzlCLGtGQUFrRjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBR2xGLGtEQUE2QztBQUV2QyxJQUFBLEtBQXNCLEVBQUUsQ0FBQyxVQUFVLEVBQWxDLE9BQU8sYUFBQSxFQUFFLFFBQVEsY0FBaUIsQ0FBQztBQUsxQztJQUFrQyx3QkFBWTtJQUE5QztRQUFBLHFFQStCQztRQTdCRyxVQUFJLEdBQVcsQ0FBQyxDQUFDOztRQTRCakIsaUJBQWlCO0lBQ3JCLENBQUM7SUEzQkcsNEJBQTRCO0lBRTVCLHFCQUFNLEdBQU47SUFFQSxDQUFDO0lBRUQsb0JBQUssR0FBTDtJQUNBLENBQUM7SUFFRCxtQkFBSSxHQUFKLFVBQUssSUFBSTtRQUNMLElBQUcsSUFBSTtZQUFFLElBQUksQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDO1FBQzFCLElBQUksQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLE1BQU0sQ0FBQyxDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUM7UUFDL0MsdUJBQWEsQ0FBQyxrQkFBa0IsQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFDLEVBQUUsRUFBQyxDQUFDLEVBQUMsT0FBTyxFQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLE1BQU0sQ0FBQyxFQUFDLEtBQUssQ0FBQyxDQUFDO0lBRXBHLENBQUM7SUFFRCxxQkFBTSxHQUFOO1FBQ0ksSUFBSSxDQUFDLElBQUksSUFBSSxDQUFDLENBQUM7UUFDZix1QkFBYSxDQUFDLGtCQUFrQixDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUMsRUFBRSxFQUFDLENBQUMsRUFBQyxPQUFPLEVBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsTUFBTSxDQUFDLEVBQUMsS0FBSyxDQUFDLENBQUM7UUFDaEcsSUFBRyxJQUFJLENBQUMsSUFBSSxJQUFJLENBQUMsRUFBQztZQUNkLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLFlBQVksQ0FBQyxPQUFPLENBQUMsQ0FBQyxJQUFJLEdBQUcsQ0FBQyxDQUFDO1lBQ2hELElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUM7WUFDcEIsSUFBSSxDQUFDLElBQUksQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDO1NBQ2hDO0lBQ0wsQ0FBQztJQTVCZ0IsSUFBSTtRQUR4QixPQUFPO09BQ2EsSUFBSSxDQStCeEI7SUFBRCxXQUFDO0NBL0JELEFBK0JDLENBL0JpQyxFQUFFLENBQUMsU0FBUyxHQStCN0M7a0JBL0JvQixJQUFJIiwiZmlsZSI6IiIsInNvdXJjZVJvb3QiOiIvIiwic291cmNlc0NvbnRlbnQiOlsiLy8gTGVhcm4gVHlwZVNjcmlwdDpcclxuLy8gIC0gaHR0cHM6Ly9kb2NzLmNvY29zLmNvbS9jcmVhdG9yL21hbnVhbC9lbi9zY3JpcHRpbmcvdHlwZXNjcmlwdC5odG1sXHJcbi8vIExlYXJuIEF0dHJpYnV0ZTpcclxuLy8gIC0gaHR0cHM6Ly9kb2NzLmNvY29zLmNvbS9jcmVhdG9yL21hbnVhbC9lbi9zY3JpcHRpbmcvcmVmZXJlbmNlL2F0dHJpYnV0ZXMuaHRtbFxyXG4vLyBMZWFybiBsaWZlLWN5Y2xlIGNhbGxiYWNrczpcclxuLy8gIC0gaHR0cHM6Ly9kb2NzLmNvY29zLmNvbS9jcmVhdG9yL21hbnVhbC9lbi9zY3JpcHRpbmcvbGlmZS1jeWNsZS1jYWxsYmFja3MuaHRtbFxyXG5cclxuaW1wb3J0IE1hcENvbnJvbGVyIGZyb20gXCIuLi9NYXBcIjtcclxuaW1wb3J0IE51bWJlclRvSW1hZ2UgZnJvbSBcIi4uL051bWJlclRvSW1hZ2VcIjtcclxuXHJcbmNvbnN0IHtjY2NsYXNzLCBwcm9wZXJ0eX0gPSBjYy5fZGVjb3JhdG9yO1xyXG5cclxuXHJcblxyXG5AY2NjbGFzc1xyXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBMb2NrIGV4dGVuZHMgY2MuQ29tcG9uZW50IHtcclxuICAgIHN0YXRpYyBfaW5zdGFuY2U6IGFueTtcclxuICAgIHRpbWU6IG51bWJlciA9IDA7XHJcblxyXG4gICAgLy8gbWFwSW5mbzogbnVtYmVyW11bXSA9IFtdO1xyXG5cclxuICAgIG9uTG9hZCAoKSB7XHJcblxyXG4gICAgfSBcclxuXHJcbiAgICBzdGFydCAoKSB7XHJcbiAgICB9XHJcblxyXG4gICAgaW5pdCh0aW1lKXtcclxuICAgICAgICBpZih0aW1lKSB0aGlzLnRpbWUgPSB0aW1lO1xyXG4gICAgICAgIHRoaXMubm9kZS5nZXRDaGlsZEJ5TmFtZShcInRpbWVcIikuYWN0aXZlID0gdHJ1ZTtcclxuICAgICAgICBOdW1iZXJUb0ltYWdlLm51bWJlclRvSW1hZ2VOb2Rlcyh0aGlzLnRpbWUsMjAsOCxcImxvY2tfXCIsdGhpcy5ub2RlLmdldENoaWxkQnlOYW1lKFwidGltZVwiKSxmYWxzZSk7XHJcblxyXG4gICAgfVxyXG5cclxuICAgIHJlZHVjZSgpe1xyXG4gICAgICAgIHRoaXMudGltZSAtPSAxO1xyXG4gICAgICAgIE51bWJlclRvSW1hZ2UubnVtYmVyVG9JbWFnZU5vZGVzKHRoaXMudGltZSwyMCw4LFwibG9ja19cIix0aGlzLm5vZGUuZ2V0Q2hpbGRCeU5hbWUoXCJ0aW1lXCIpLGZhbHNlKTtcclxuICAgICAgICBpZih0aGlzLnRpbWUgPD0gMCl7XHJcbiAgICAgICAgICAgIHRoaXMubm9kZS5wYXJlbnQuZ2V0Q29tcG9uZW50KFwiQmxvY2tcIikudHlwZSA9IDA7XHJcbiAgICAgICAgICAgIHRoaXMubm9kZS5kZXN0cm95KCk7XHJcbiAgICAgICAgICAgIHRoaXMubm9kZS5yZW1vdmVGcm9tUGFyZW50KCk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIC8vIHVwZGF0ZSAoZHQpIHt9XHJcbn1cclxuIl19 //------QC-SOURCE-SPLIT------ (function() { @@ -16567,92 +10917,92 @@ cc._RF.pop(); cc._RF.push(module, 'ad8cbbzCohCR5uifssdRTf+', 'Freeze'); // Script/prop/Freeze.ts -"use strict"; -// Learn TypeScript: -// - https://docs.cocos.com/creator/manual/en/scripting/typescript.html -// Learn Attribute: -// - https://docs.cocos.com/creator/manual/en/scripting/reference/attributes.html -// Learn life-cycle callbacks: -// - https://docs.cocos.com/creator/manual/en/scripting/life-cycle-callbacks.html -var __extends = (this && this.__extends) || (function () { - var extendStatics = function (d, b) { - extendStatics = Object.setPrototypeOf || - ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) || - function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; }; - return extendStatics(d, b); - }; - return function (d, b) { - extendStatics(d, b); - function __() { this.constructor = d; } - d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); - }; -})(); -var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) { - var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; - if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc); - else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; - return c > 3 && r && Object.defineProperty(target, key, r), r; -}; -Object.defineProperty(exports, "__esModule", { value: true }); -var NumberToImage_1 = require("../NumberToImage"); -var _a = cc._decorator, ccclass = _a.ccclass, property = _a.property; -var Freeze = /** @class */ (function (_super) { - __extends(Freeze, _super); - function Freeze() { - var _this = _super !== null && _super.apply(this, arguments) || this; - _this.time = 60; - _this.freeze = null; - return _this; - // update (dt) {} - } - // mapInfo: number[][] = []; - Freeze.prototype.onLoad = function () { - }; - Freeze.prototype.start = function () { - }; - Freeze.prototype.init = function (time, type) { - if (time) - this.time = time; - this.node.getChildByName("time").active = true; - NumberToImage_1.default.numberToImageNodes(this.time, 40, 25, "ice_", this.node.getChildByName("time"), false); - // this.node.getChildByName("time").getComponent(cc.Label).string = this.time.toString(); - }; - Freeze.prototype.reduce = function (number) { - var _this = this; - this.time -= number; - if (this.time <= 0) - this.time = 0; - NumberToImage_1.default.numberToImageNodes(this.time, 40, 25, "ice_", this.node.getChildByName("time"), false); - // this.node.getChildByName("time").getComponent(cc.Label).string = this.time.toString(); - if (this.time <= 0) { - this.node.getChildByName("bingkuai").active = true; - var skeleton = this.node.getChildByName("bingkuai").getComponent(sp.Skeleton); - skeleton.setAnimation(1, "bingkuai", false); - this.node.getChildByName("icon").active = true; - this.node.getChildByName("time").active = false; - cc.tween(this.node.getChildByName("icon")) - .to(0.5, { opacity: 0 }) - .start(); - // this.node.getChildByName("icon").getComponent(cc.Sprite).setMaterial(0,this.freeze); - // this.node.children.forEach(element => { - // element.destroy(); - // }); - setTimeout(function () { - _this.node.parent.getComponent("Block").resetFreeze(); - _this.node.destroy(); - _this.node.removeFromParent(); - }, 600); - } - }; - __decorate([ - property(cc.Material) - ], Freeze.prototype, "freeze", void 0); - Freeze = __decorate([ - ccclass - ], Freeze); - return Freeze; -}(cc.Component)); -exports.default = Freeze; +"use strict"; +// Learn TypeScript: +// - https://docs.cocos.com/creator/manual/en/scripting/typescript.html +// Learn Attribute: +// - https://docs.cocos.com/creator/manual/en/scripting/reference/attributes.html +// Learn life-cycle callbacks: +// - https://docs.cocos.com/creator/manual/en/scripting/life-cycle-callbacks.html +var __extends = (this && this.__extends) || (function () { + var extendStatics = function (d, b) { + extendStatics = Object.setPrototypeOf || + ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) || + function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; }; + return extendStatics(d, b); + }; + return function (d, b) { + extendStatics(d, b); + function __() { this.constructor = d; } + d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); + }; +})(); +var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) { + var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; + if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc); + else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; + return c > 3 && r && Object.defineProperty(target, key, r), r; +}; +Object.defineProperty(exports, "__esModule", { value: true }); +var NumberToImage_1 = require("../NumberToImage"); +var _a = cc._decorator, ccclass = _a.ccclass, property = _a.property; +var Freeze = /** @class */ (function (_super) { + __extends(Freeze, _super); + function Freeze() { + var _this = _super !== null && _super.apply(this, arguments) || this; + _this.time = 60; + _this.freeze = null; + return _this; + // update (dt) {} + } + // mapInfo: number[][] = []; + Freeze.prototype.onLoad = function () { + }; + Freeze.prototype.start = function () { + }; + Freeze.prototype.init = function (time, type) { + if (time) + this.time = time; + this.node.getChildByName("time").active = true; + NumberToImage_1.default.numberToImageNodes(this.time, 40, 25, "ice_", this.node.getChildByName("time"), false); + // this.node.getChildByName("time").getComponent(cc.Label).string = this.time.toString(); + }; + Freeze.prototype.reduce = function (number) { + var _this = this; + this.time -= number; + if (this.time <= 0) + this.time = 0; + NumberToImage_1.default.numberToImageNodes(this.time, 40, 25, "ice_", this.node.getChildByName("time"), false); + // this.node.getChildByName("time").getComponent(cc.Label).string = this.time.toString(); + if (this.time <= 0) { + this.node.getChildByName("bingkuai").active = true; + var skeleton = this.node.getChildByName("bingkuai").getComponent(sp.Skeleton); + skeleton.setAnimation(1, "bingkuai", false); + this.node.getChildByName("icon").active = true; + this.node.getChildByName("time").active = false; + cc.tween(this.node.getChildByName("icon")) + .to(0.5, { opacity: 0 }) + .start(); + // this.node.getChildByName("icon").getComponent(cc.Sprite).setMaterial(0,this.freeze); + // this.node.children.forEach(element => { + // element.destroy(); + // }); + setTimeout(function () { + _this.node.parent.getComponent("Block").resetFreeze(); + _this.node.destroy(); + _this.node.removeFromParent(); + }, 600); + } + }; + __decorate([ + property(cc.Material) + ], Freeze.prototype, "freeze", void 0); + Freeze = __decorate([ + ccclass + ], Freeze); + return Freeze; +}(cc.Component)); +exports.default = Freeze; cc._RF.pop(); } @@ -16671,8 +11021,7 @@ cc._RF.pop(); (function() { var nodeEnv = typeof require !== 'undefined' && typeof process !== 'undefined'; var __module = nodeEnv ? module : {exports:{}}; - var __filename = 'preview-scripts/assets/Script/prop/Key.js'; ->>>>>>> 0a31a7a5abc2c505bf743aa596e1c765a0405152 + var __filename = 'preview-scripts/assets/Script/prop/Adhesive.js'; var __require = nodeEnv ? function (request) { return cc.require(request); } : function (request) { @@ -16680,1229 +11029,417 @@ cc._RF.pop(); }; function __define (exports, require, module) { if (!nodeEnv) {__quick_compile_project__.registerModule(__filename, module);}"use strict"; -<<<<<<< HEAD -cc._RF.push(module, 'c1af9nd7gNA95YJ04h9DdNX', 'MiniGameSdk'); -// Script/Sdk/MiniGameSdk.ts +cc._RF.push(module, '5fc5bz1aV5PKIBJQh99jpm2', 'Adhesive'); +// Script/prop/Adhesive.ts -"use strict"; -Object.defineProperty(exports, "__esModule", { value: true }); -exports.MiniGameSdk = void 0; -/** - * 小游戏平台SDK工具封装,目前只支持微信和抖音平台 - */ -var MiniGameSdk; -(function (MiniGameSdk) { - function isWechat() { - //@ts-ignore - return window.wx !== null && window.wx !== undefined; - } - MiniGameSdk.isWechat = isWechat; - function isBytedance() { - //@ts-ignore - return window.tt !== null && window.tt !== undefined; - } - MiniGameSdk.isBytedance = isBytedance; - function getSysWinSize() { - var sys; - if (isWechat()) { - // @ts-ignore - sys = wx.getSystemInfoSync(); - } - else if (isBytedance()) { - // @ts-ignore - sys = tt.getSystemInfoSync(); - } - var size = { width: 0, height: 0 }; - if (sys) { - size.width = sys.windowWidth; - size.height = sys.windowHeight; - } - return size; - } - /** - * 插屏广告。微信抖音都支持! - */ - var ADInterstitial = /** @class */ (function () { - function ADInterstitial(adUid) { - this._adUid = adUid; - } - Object.defineProperty(ADInterstitial.prototype, "aduid", { - get: function () { - return this._adUid; - }, - enumerable: false, - configurable: true - }); - ADInterstitial.prototype.show = function () { - var _this = this; - var _a, _b; - // @ts-ignore - if (isWechat() && !wx.createInterstitialAd) { - console.warn('wechat unsupport interstitial AD!'); - this._interstitial = null; - return; - } - // @ts-ignore - if (isBytedance() && !tt.createInterstitialAd) { - console.warn('bytedance unsupport interstitial AD!'); - this._interstitial = null; - return; - } - if (this._interstitial) { - this._interstitial.load(); - } - else { - if (isWechat()) { - // @ts-ignore - this._interstitial = wx.createInterstitialAd({ adUnitId: this._adUid }); - } - else if (isBytedance()) { - // @ts-ignore - this._interstitial = tt.createInterstitialAd({ adUnitId: this._adUid }); - } - else { - this._interstitial = null; - } - (_a = this._interstitial) === null || _a === void 0 ? void 0 : _a.onLoad(function () { - console.log('load interstitial ad success'); - _this._interstitial.show().catch(function (err) { - console.log('catch interstitial ad error:', err); - }); - }); - (_b = this._interstitial) === null || _b === void 0 ? void 0 : _b.onError(function (err) { - console.log('interstitial ad on error:', err); - }); - } - }; - ADInterstitial.prototype.destory = function () { - var _a; - (_a = this._interstitial) === null || _a === void 0 ? void 0 : _a.destroy(); - }; - return ADInterstitial; - }()); - var ADBanner = /** @class */ (function () { - /** - * 抖音和微信都支持 - * 横幅广告。预估宽度默认为300,预估高度为140。如果你不确定就按默认值来。 - * @param adUid 广告UID,后端配置 - * @param isTop 是否在屏幕顶部展示。内部会自动居中计算位置。 - * @param bannerWidth 横幅广告的预估宽度。默认300 - * @param autoShow 广告加载完成后是否立刻显示,默认为不显示 - */ - function ADBanner(adUid, param, bannerWidth, autoShow) { - if (bannerWidth === void 0) { bannerWidth = 300; } - if (autoShow === void 0) { autoShow = false; } - this._adUid = adUid; - this.create(autoShow, bannerWidth, param); // 默认300比较合适 - } - Object.defineProperty(ADBanner.prototype, "aduid", { - get: function () { - return this._adUid; - }, - enumerable: false, - configurable: true - }); - ADBanner.prototype.create = function (autoShow, bannerWidth, param) { - var _this = this; - var _a, _b; - if (!isWechat() && !isBytedance()) { - this._banner = null; - return; - } - this.destroy(); - var winSize = getSysWinSize(); - var height = bannerWidth * 0.4; - var top = 0, left = 0; - if (typeof param === "boolean") { - left = (winSize.width - bannerWidth) / 2; - top = param ? 5 : (winSize.height - height); - } - else { - left = param.left; - top = param.top; - } - var params = { - adUnitId: this._adUid, - adIntervals: 30, - style: { left: left, top: top, width: bannerWidth } - }; - if (isWechat()) { - // @ts-ignore - this._banner = wx.createBannerAd(params); - } - else if (isBytedance()) { - // @ts-ignore - this._banner = tt.createBannerAd(params); - } - else { - this._banner = null; - } - (_a = this._banner) === null || _a === void 0 ? void 0 : _a.onError(function (err) { - console.log('ad banner error:', err); - }); - (_b = this._banner) === null || _b === void 0 ? void 0 : _b.onLoad(function () { - autoShow && _this._banner.show(); - }); - }; - ADBanner.prototype.show = function () { - var _a; - (_a = this._banner) === null || _a === void 0 ? void 0 : _a.show(); - }; - ADBanner.prototype.hide = function () { - var _a; - (_a = this._banner) === null || _a === void 0 ? void 0 : _a.hide(); - }; - ADBanner.prototype.destroy = function () { - var _a; - (_a = this._banner) === null || _a === void 0 ? void 0 : _a.destroy(); - }; - return ADBanner; - }()); - var ADCustom = /** @class */ (function () { - /** - * 由于原生模板广告在微信服务后端可以定制宽度大小,个数,缩放比例等,所以位置调整要根据设置的宽度来定。抖音不支持! - * @param adUid 广告UID,后端配置 - * @param top 从左上角开始,距离屏幕顶部的距离。注意:这个数据为设备屏幕宽度width。如果需要获取屏幕的像素,需要乘以设备像素比Pixel-Ratio,例如iPhone 13 Pro的Pixel-Ratio为3,像素为Width*3。 - * @param left 从左上角开始,距离屏幕最左边的距离。注意:这个数据为设备屏幕宽度width。如果需要获取屏幕的像素,需要乘以设备像素比Pixel-Ratio,例如iPhone 13 Pro的Pixel-Ratio为3,像素为Width*3。 - * @param scale 原生模板广告的尺寸,默认为1,即100%。此值在微信服务后端广告中获得,默认为100%,目前有100%,90%,80%三种,一般情况不用修改。若有修改,记得传入值,例如90%就传入0.9。 - */ - function ADCustom(adUid, top, left, scale) { - if (top === void 0) { top = 0; } - if (left === void 0) { left = 0; } - if (scale === void 0) { scale = 1.0; } - this._adUid = adUid; - this.createCustomAd(top, left, scale); - } - Object.defineProperty(ADCustom.prototype, "aduid", { - get: function () { - return this._adUid; - }, - enumerable: false, - configurable: true - }); - ADCustom.prototype.createCustomAd = function (top, left, scale) { - var _a; - if (!isWechat()) { // only wechat support custom ad - this._adCustom = null; - console.log('Only wechat support Custom Ad'); - return; - } - this.destroy(); - // 原生模板5个应用宽度为375,若设置了缩放比例,则宽度也需要设置 - // let width = 375 * this._scale; - // let newLeft = (sys.windowWidth - width) / 2; - // let newTop = sys.windowHeight / 2; // 120是预估高度 - // @ts-ignore - this._adCustom = wx.createCustomAd({ - adUnitId: this._adUid, - //@ts-ignore - style: { left: left, top: top, fixed: true } - }); - (_a = this._adCustom) === null || _a === void 0 ? void 0 : _a.onError(function (err) { - console.log('ad custom error:', err); - }); - }; - ADCustom.prototype.show = function () { - var _a; - (_a = this._adCustom) === null || _a === void 0 ? void 0 : _a.show(); - }; - ADCustom.prototype.hide = function () { - var _a; - (_a = this._adCustom) === null || _a === void 0 ? void 0 : _a.hide(); - }; - ADCustom.prototype.destroy = function () { - var _a; - (_a = this._adCustom) === null || _a === void 0 ? void 0 : _a.destroy(); - }; - return ADCustom; - }()); - /** - * 视频广告用户点击行为结果 - */ - var EAdVideoResult; - (function (EAdVideoResult) { - /** - * 用户看完了广告,游戏可发放奖励。 - */ - EAdVideoResult[EAdVideoResult["ACCEPT"] = 0] = "ACCEPT"; - /** - * 用户中途关闭了广告,即未看完状态。不可发放奖励。 - */ - EAdVideoResult[EAdVideoResult["REJECT"] = 1] = "REJECT"; - /** - * 广告组件内部发生了错误。不可发放奖励。 - */ - EAdVideoResult[EAdVideoResult["ERROR"] = 2] = "ERROR"; - })(EAdVideoResult = MiniGameSdk.EAdVideoResult || (MiniGameSdk.EAdVideoResult = {})); - var ADVideo = /** @class */ (function () { - function ADVideo(adUid) { - this._adVideo = null; - this._adUid = adUid; - } - Object.defineProperty(ADVideo.prototype, "aduid", { - get: function () { - return this._adUid; - }, - enumerable: false, - configurable: true - }); - /** - * 由于微信和抖音视频广告机制不同,微信可以看的视频广告个数只有0和1个,抖音平台则可以看0~maxVideoCount - * @param onResult 两个参数:第一个res是EAdVideoResult定义,第二count是用户看了多少个视频广告。 - * @param target onResult的拥有者 - * @param maxVideoCount 可以连续看最大视频个数,可最大化商业效率。默认为3个。 - * @returns - */ - ADVideo.prototype.show = function (onResult, target, maxVideoCount) { - var _this = this; - var _a, _b, _c, _d, _e; - if (maxVideoCount === void 0) { maxVideoCount = 3; } - var callback = function (state, count) { - onResult === null || onResult === void 0 ? void 0 : onResult.call(target, state, count); - }; - if (!isWechat() && !isBytedance()) { - callback(EAdVideoResult.ACCEPT, 1); - this._adVideo = null; - return; - } - var onAdVideoClosed = function (res) { - var _a; - (_a = _this._adVideo) === null || _a === void 0 ? void 0 : _a.offClose(onAdVideoClosed); - if (isWechat()) { - if (res && res.isEnded || res === undefined) { - callback(EAdVideoResult.ACCEPT, 1); - } - else { - callback(EAdVideoResult.REJECT, 0); - } - } - else if (isBytedance()) { - var resConverted = res; - if (resConverted && resConverted.count > 0) { - callback(EAdVideoResult.ACCEPT, resConverted.count); - } - else { - callback(EAdVideoResult.REJECT, 0); - } - } - }; - (_a = this._adVideo) === null || _a === void 0 ? void 0 : _a.offClose(onAdVideoClosed); - if (isWechat()) { - // @ts-ignore - this._adVideo = wx.createRewardedVideoAd({ - adUnitId: this._adUid - }); - } - else if (isBytedance()) { - // @ts-ignore - this._adVideo = tt.createRewardedVideoAd({ - adUnitId: this._adUid, - multiton: true, - multitonRewardMsg: ['多1次奖励', '再多一次奖励', '再多一次奖励'], - multitonRewardTimes: maxVideoCount, - }); - } - else { - this._adVideo = null; - } - (_b = this._adVideo) === null || _b === void 0 ? void 0 : _b.onLoad(function () { - console.log('Ad load success'); - }); - (_c = this._adVideo) === null || _c === void 0 ? void 0 : _c.onError(function (err) { - console.log('Ad video error:', err); - callback(EAdVideoResult.ERROR, 0); - }); - (_d = this._adVideo) === null || _d === void 0 ? void 0 : _d.onClose(onAdVideoClosed); - (_e = this._adVideo) === null || _e === void 0 ? void 0 : _e.show().catch(function () { - var _a; - (_a = _this._adVideo) === null || _a === void 0 ? void 0 : _a.load().then(function () { var _a; return (_a = _this._adVideo) === null || _a === void 0 ? void 0 : _a.show(); }).catch(function (err) { - console.log('Catch video ad error:', err); - callback(EAdVideoResult.ERROR, 0); - }); - }); - }; - ADVideo.prototype.destory = function () { - var _a; - (_a = this._adVideo) === null || _a === void 0 ? void 0 : _a.destory(); - }; - return ADVideo; - }()); - var EAdBannerLocation; - (function (EAdBannerLocation) { - /** - * 屏幕顶部 - */ - EAdBannerLocation[EAdBannerLocation["TOP"] = 0] = "TOP"; - /** - * 屏幕底部 - */ - EAdBannerLocation[EAdBannerLocation["BOTTOM"] = 1] = "BOTTOM"; - })(EAdBannerLocation = MiniGameSdk.EAdBannerLocation || (MiniGameSdk.EAdBannerLocation = {})); - var AdvertManager = /** @class */ (function () { - function AdvertManager() { - this._customs = {}; - } - Object.defineProperty(AdvertManager, "instance", { - get: function () { - if (!AdvertManager._instance) { - AdvertManager._instance = new AdvertManager(); - } - return AdvertManager._instance; - }, - enumerable: false, - configurable: true - }); - /** - * 预加载横幅广告,不会显示。只有你在调用showBanner时才会显示。 - * 可重复调用,但是会销毁上一次的实例。一般情况,全局有一个就行了,太多占用内存,而且没必要。 - * @param adUid 广告UID - * @param location 位置有两种情况:1、可以传入枚举值,默认上方; 2、可以自定义位置传入IPosition,注意IPosition中的top和left跟平台的top,left是一致(没有乘以设备像素比ratio),需要开发者自己调试位置 - * @param scale 默认为跟屏幕一样的宽度,可以通过设置缩放比例来调整大小。当然,平台有规定最大或最小宽度,函数内部会自动计算。 - */ - AdvertManager.prototype.loadBanner = function (adUid, location, scale) { - var _a; - if (location === void 0) { location = EAdBannerLocation.TOP; } - if (scale === void 0) { scale = 1.0; } - (_a = this._banner) === null || _a === void 0 ? void 0 : _a.destroy(); - var size = getSysWinSize(); - // 当 style.width 小于 300 时,会取作 300。 当 style.width 大于屏幕宽度时,会取作屏幕宽度。 - var width = size.width * scale; - width = width < 300 ? 300 : width; // 最小值矫正 - width = width > size.width ? size.width : width; //最大值矫正 - this._banner = typeof location === 'number' ? new ADBanner(adUid, location === EAdBannerLocation.TOP, width, false) : new ADBanner(adUid, location, width, false); - }; - /** - * 显示横幅广告 - */ - AdvertManager.prototype.showBanner = function () { - if (this._banner) { - this._banner.show(); - } - else { - console.warn('MiniGameSDK: banner is null, you must call loadBanner(...) first!'); - } - }; - /** - * 隐藏横幅广告 - */ - AdvertManager.prototype.hideBanner = function () { - var _a; - (_a = this._banner) === null || _a === void 0 ? void 0 : _a.hide(); - }; - /** - * 弹出插屏广告 - * @param adUid 广告单元id - */ - AdvertManager.prototype.showInterstitial = function (adUid) { - var _a; - if (this._interstitial && this._interstitial.aduid === adUid) { - this._interstitial.show(); - } - else { - (_a = this._interstitial) === null || _a === void 0 ? void 0 : _a.destory(); - this._interstitial = new ADInterstitial(adUid); - this._interstitial.show(); - } - }; - /** - * 加载原生模板广告,不会显示。只有你在调用showCustom时才会显示。 - * 由于原生模板广告在微信服务后端可以定制宽度大小,个数,缩放比例等,所以位置调整要根据设置的宽度来定。抖音不支持本函数,会调用无效! - * @param adUid 广告ID - * @param location 位置有两种情况:1、可以传入枚举值,默认上方; 2、可以自定义位置传入IPosition,注意IPosition中的top和left跟平台的top,left是一致(没有乘以设备像素比ratio),需要开发者自己调试位置 - * @param scale 缩放比例,默认是1,即不缩放。这个缩放并不是自己填,而是根据微信MP后台你配置的原生模板广告的缩放比例填,目前有100%,90%,80%三种,一般情况不用修改。若有后台修改,记得传入值,例如90%就传入0.9。 - */ - AdvertManager.prototype.loadCustom = function (adUid, location, scale) { - if (location === void 0) { location = { top: 0, left: 0 }; } - if (scale === void 0) { scale = 1; } - // this._custom?.destroy(); - // this._custom = new ADCustom(adUid, location.top, location.left, scale); - if (this._customs[adUid]) { - console.log(adUid + " has been loaded."); - return; - } - this._customs[adUid] = new ADCustom(adUid, location.top, location.left, scale); - }; - /** - * 显示自定义广告。 - * @param adUid 广告的唯一标识符。使用此标识符来查找和显示特定的自定义广告。 - * - * 此方法尝试根据提供的adUid显示一个自定义广告。如果给定的adUid对应的自定义广告已加载, - * 则调用该广告的显示方法。如果广告未加载,则在控制台输出警告信息。 - */ - AdvertManager.prototype.showCustom = function (adUid) { - if (this._customs[adUid]) { - this._customs[adUid].show(); - } - else { - console.warn("You have not load " + adUid + " of Custom AD, can not show!"); - } - }; - /** - * 隐藏指定的自定义广告单元 - * - * 此方法用于隐藏通过广告单元标识符(adUid)指定的自定义广告。如果指定的广告单元已加载并显示, - * 则将其隐藏;如果广告单元未加载,则在控制台输出警告信息。 - * - * @param adUid 广告单元标识符,用于唯一标识一个自定义广告单元。 - */ - AdvertManager.prototype.hideCustom = function (adUid) { - if (this._customs[adUid]) { - this._customs[adUid].hide(); - } - else { - console.warn("You have not load " + adUid + " of Custom AD, can not hide!"); - } - }; - /** - * 由于微信和抖音视频广告机制不同,微信可以看的视频广告个数只有0和1个,抖音平台则可以看0~maxVideoCount - * @param adUid 广告ID。如果与上一次UID不同,则内部会重新创建实例。开发者完全不用关心这个细节。 - * @param onVideoResult 两个参数:第一个res是EAdVideoResult定义,第二count是用户看了多少个视频广告。 - * @param target onVideoResult的拥有者 - * @param maxVideoCount 最大视频个数。默认是3,仅对抖音平台生效。微信平台看完视频count的结果永远是1或0 - */ - AdvertManager.prototype.showVideo = function (adUid, onVideoResult, target, maxVideoCount) { - var _a; - if (maxVideoCount === void 0) { maxVideoCount = 3; } - if (this._video && this._video.aduid === adUid) { - this._video.show(onVideoResult, target, maxVideoCount); - } - else { - (_a = this._video) === null || _a === void 0 ? void 0 : _a.destory(); - this._video = new ADVideo(adUid); - this._video.show(onVideoResult, target, maxVideoCount); - } - }; - /** - * 销毁内部所有实例,清空内存 - */ - AdvertManager.prototype.destroyAll = function () { - var _a, _b, _c, _d; - (_a = this._banner) === null || _a === void 0 ? void 0 : _a.destroy(); - this._banner = null; - (_b = this._interstitial) === null || _b === void 0 ? void 0 : _b.destory(); - this._interstitial = null; - (_c = this._video) === null || _c === void 0 ? void 0 : _c.destory(); - this._video = null; - if (this._customs) { - for (var val in this._customs) { - (_d = this._customs[val]) === null || _d === void 0 ? void 0 : _d.destroy(); - } - this._customs = {}; - } - }; - return AdvertManager; - }()); - MiniGameSdk.AdvertManager = AdvertManager; - var EGameClubIcon; - (function (EGameClubIcon) { - /** 绿色图标 */ - EGameClubIcon["GREEN"] = "green"; - /** 红色图标 */ - EGameClubIcon["WHITE"] = "white"; - /** 有黑色圆角背景的白色图标 */ - EGameClubIcon["DARK"] = "dark"; - /** 有白色圆角背景的绿色图标 */ - EGameClubIcon["LIGHT"] = "light"; - })(EGameClubIcon = MiniGameSdk.EGameClubIcon || (MiniGameSdk.EGameClubIcon = {})); - var GameClub = /** @class */ (function () { - function GameClub() { - } - Object.defineProperty(GameClub, "instance", { - get: function () { - if (!this._instance) { - this._instance = new GameClub(); - } - return this._instance; - }, - enumerable: false, - configurable: true - }); - /** - * 创建游戏圈按钮 - * @param icon - * @param position - * @param size - * @param openLink - */ - GameClub.prototype.create = function (icon, position, size, openLink) { - if (icon === void 0) { icon = EGameClubIcon.GREEN; } - if (position === void 0) { position = { top: 0, left: 0 }; } - if (size === void 0) { size = { width: 40, height: 40 }; } - if (isWechat()) { - // @ts-ignore - this._club = wx.createGameClubButton({ - icon: icon, - style: { - left: position.left, - top: position.top, - width: size.width, - height: size.height - }, - openlink: openLink - }); - } - }; - GameClub.prototype.show = function () { - var _a; - (_a = this._club) === null || _a === void 0 ? void 0 : _a.show(); - }; - GameClub.prototype.hide = function () { - var _a; - (_a = this._club) === null || _a === void 0 ? void 0 : _a.hide(); - }; - GameClub.prototype.destory = function () { - var _a; - (_a = this._club) === null || _a === void 0 ? void 0 : _a.destroy(); - }; - return GameClub; - }()); - MiniGameSdk.GameClub = GameClub; - /** - * 振动类型 - */ - var EVirbrateType; - (function (EVirbrateType) { - /** - * 短振动 - */ - EVirbrateType[EVirbrateType["SHORT"] = 0] = "SHORT"; - /** - * 长振动 - */ - EVirbrateType[EVirbrateType["LONG"] = 1] = "LONG"; - })(EVirbrateType = MiniGameSdk.EVirbrateType || (MiniGameSdk.EVirbrateType = {})); - /** - * 抖音侧边栏专属接口 - */ - var BytedanceSidebar = /** @class */ (function () { - function BytedanceSidebar() { - } - /** - * 本游戏在抖音环境下启动监控,需要放在全局环境中,保证能第一时间启动。因为可能监听抖音失败(抖音小游戏官方的说明)! - * @param onResult 包含一个boolean参数的函数 - * @param target 上述函数的拥有者,如果是类的成员函数,需要传入this。普通或匿名函数忽略即可。 - */ - BytedanceSidebar.listenFromSidebar = function (onResult, target) { - if (!isBytedance()) { - onResult === null || onResult === void 0 ? void 0 : onResult.call(target, false); - return; - } - // @ts-ignore - tt.onShow(function (res) { - console.log('onShow launch res:', res); - if (res.scene === '021036') { - onResult === null || onResult === void 0 ? void 0 : onResult.call(target, true); - console.log('launch from sidebar'); - } - else { - onResult === null || onResult === void 0 ? void 0 : onResult.call(target, false); - console.log('NOT launch from douyin sidebar!'); - } - }); - // @ts-ignore - var options = tt.getLaunchOptionsSync(); - if (options && options.scene === '021036') { - onResult === null || onResult === void 0 ? void 0 : onResult.call(target, true); - } - }; - /** - * 检测抖音侧边栏是否存在 - * @param onResult 包含一个boolean参数的函数 - * @param target 上述函数的拥有者,如果是类的成员函数,需要传入this。普通或匿名函数忽略即可。 - * @returns - */ - BytedanceSidebar.checkSideBar = function (onResult, target) { - if (!isBytedance()) { - onResult === null || onResult === void 0 ? void 0 : onResult.call(target, false); - return; - } - //@ts-ignore - tt.checkScene({ - scene: "sidebar", - success: function (res) { - console.log("check scene success: ", res.isExist); - onResult === null || onResult === void 0 ? void 0 : onResult.call(target, res.isExist); - }, - fail: function (res) { - console.log("check scene fail:", res); - onResult === null || onResult === void 0 ? void 0 : onResult.call(target, false); - } - }); - }; - /** - * 跳转到抖音侧边栏 - * @param onResult 包含一个boolean参数的函数 - * @param target 上述函数的拥有者,如果是类的成员函数,需要传入this。普通或匿名函数忽略即可。 - * @returns - */ - BytedanceSidebar.navigateToSidebar = function (onResult, target) { - if (!isBytedance()) { - console.log("not douyin platform!"); - onResult === null || onResult === void 0 ? void 0 : onResult.call(target, false); - return; - } - // @ts-ignore - tt.navigateToScene({ - scene: "sidebar", - success: function () { - console.log("navigate success"); - onResult === null || onResult === void 0 ? void 0 : onResult.call(target, true); - }, - fail: function (res) { - console.log("navigate failed reason:", res); - onResult === null || onResult === void 0 ? void 0 : onResult.call(target, false); - }, - }); - }; - return BytedanceSidebar; - }()); - MiniGameSdk.BytedanceSidebar = BytedanceSidebar; - /** - * 平台常用API合集 - */ - var API = /** @class */ (function () { - function API() { - } - /** - * 分享app给朋友,微信小游戏分享是没有onSuccess回调的。 - * @param title 标题 - * @param description 细节描述信息 - * @param imageUrl 图片地址 - * @param query 查询信息 - * @param onSuccess 抖音会回调,微信不会回调 - */ - API.shareAppToFriends = function (title, description, imageUrl, query, onSuccess) { - if (description === void 0) { description = ''; } - if (isWechat()) { - try { - //@ts-ignore - wx.shareAppMessage({ - title: title, - imageUrl: imageUrl, - query: query, - }); - } - catch (err) { - console.log("share faild: " + err); - } - } - if (isBytedance()) { - //@ts-ignore - tt.shareAppMessage({ - title: title, - desc: description, - imageUrl: imageUrl !== null && imageUrl !== void 0 ? imageUrl : '', - query: query !== null && query !== void 0 ? query : '', - success: function (res) { - console.log('share success:', res); - onSuccess === null || onSuccess === void 0 ? void 0 : onSuccess(); - }, - fail: function (res) { - console.log('share fail:', res); - } - }); - } - }; - /** - * 显示提示信息 - * @param title 标题 - * @param duration 时长(单位:秒) - * @returns - */ - API.showToast = function (title, duration) { - if (duration === void 0) { duration = 2; } - if (isWechat()) { - // @ts-ignore - wx.showToast({ - title: title, - icon: 'none', - duration: duration * 500 - }); - } - }; - /** - * 设备震动效果,默认为短震动。注意:可能一些机型不会生效,具体看平台方的说明 - * @param type MiniGameSdk.API.EVirbrateType - */ - API.vibrate = function (type) { - if (type === void 0) { type = EVirbrateType.SHORT; } - if (isWechat()) { - switch (type) { - case EVirbrateType.SHORT: - //@ts-ignore - wx.vibrateShort({ - success: function (res) { - console.log('vibrate success:', res); - }, - fail: function (res) { - console.log('vibrateShort failed', res); - }, - }); - break; - case EVirbrateType.LONG: - //@ts-ignore - wx.vibrateLong({ - success: function (res) { - console.log('vibrate success', res); - }, - fail: function (res) { - console.log("vibrateLong failed", res); - }, - }); - break; - default: - break; - } - } - if (isBytedance()) { - switch (type) { - case EVirbrateType.SHORT: - //@ts-ignore - tt.vibrateShort({ - success: function (res) { - console.log('vibrate success:', res); - }, - fail: function (res) { - console.log('vibrateShort failed', res); - }, - }); - break; - case EVirbrateType.LONG: - //@ts-ignore - tt.vibrateLong({ - success: function (res) { - console.log('vibrate success', res); - }, - fail: function (res) { - console.log("vibrateLong failed", res); - }, - }); - break; - default: - break; - } - } - }; - /** - * 重启小游戏 - */ - API.reboot = function () { - if (isWechat()) { - //@ts-ignore - wx.restartMiniProgram({ - success: function () { - console.log('restart success'); - }, - fail: function () { - console.log('restart failed'); - } - }); - } - if (isBytedance()) { - try { - // @ts-ignore - tt.restartMiniProgramSync(); - } - catch (error) { - console.log("restartMiniProgramSync", error); - } - } - }; - /** - * 退出小游戏 - */ - API.exit = function () { - if (isWechat()) { - //@ts-ignore - wx.exitMiniProgram({ - success: function () { - console.log('exit success'); - }, - fail: function () { - console.log('exit failed'); - } - }); - } - if (isBytedance()) { - // @ts-ignore - tt.exitMiniProgram({ - success: function (res) { - console.log("exit success:", res === null || res === void 0 ? void 0 : res.data); - }, - fail: function (res) { - console.log("exit fail:", res === null || res === void 0 ? void 0 : res.errMsg); - }, - }); - } - }; - /** - * 显示转发按钮。通常在刚进入游戏的时候调用。 - * 主要是打开平台“...”这个按钮里面的分享菜单,一般默认是关闭的,需要调用这个函数打开。可以让用户分享你的游戏入口。 - */ - API.showShareMenu = function () { - if (isWechat()) { - //@ts-ignore - wx.showShareMenu({ - withShareTicket: true, - menus: ['shareAppMessage', 'shareTimeline'], - success: function () { }, - fail: function () { }, - complete: function () { } - }); - } - }; - /** - * 微信小游戏:跳转到另外一款小游戏 - * 抖音小游戏:跳转到指定的视频界面 - * @param targetId 微信小游戏appid或者视频界面 - */ - API.navigateTo = function (targetId, onSuccess) { - if (isWechat()) { - // @ts-ignore - wx.navigateToMiniProgram({ - appId: targetId, - extraData: { - foo: 'bar' - }, - envVersion: 'develop', - success: function (res) { - onSuccess === null || onSuccess === void 0 ? void 0 : onSuccess(); - } - }); - } - if (isBytedance()) { - // @ts-ignore - tt.navigateToVideoView({ - videoId: targetId, - success: function (res) { - onSuccess === null || onSuccess === void 0 ? void 0 : onSuccess(); - }, - fail: function (err) { - console.log("bytedance navigateToVideoView fail", err); - }, - }); - } - }; - /** - * 小游戏平台登录功能。微信返回code,抖音返回code和anonymousCode。用于登录的凭证,需要把这个code传回你的服务器程序中去调用code2Session - * @param callback (code, anonymousCode) 第一个参数为code,微信和抖音都支持;第二个参数为匿名设备ID,仅抖音支持,失败都返回null - */ - API.login = function (callback) { - var loginPlatform = function () { - if (isWechat()) { - //@ts-ignore - wx.login({ - success: function (res) { - if (res.code) { - API._loginCode = res.code; - API._loginAnonymousCode = null; - callback === null || callback === void 0 ? void 0 : callback(API._loginCode, API._loginAnonymousCode); - } - else { - console.log('login error:', res.errMsg); - } - }, - fail: function () { - API._loginCode = null; - API._loginAnonymousCode = null; - callback === null || callback === void 0 ? void 0 : callback(API._loginCode, API._loginAnonymousCode); - console.log('login fail'); - } - }); - } - else if (isBytedance()) { - //@ts-ignore - tt.login({ - force: true, - success: function (res) { - var _a, _b; - console.log("login " + res.code + " " + res.anonymousCode); - if (res.code) { - API._loginCode = (_a = res.code) === null || _a === void 0 ? void 0 : _a.toString(); - API._loginAnonymousCode = (_b = res.anonymousCode) === null || _b === void 0 ? void 0 : _b.toString(); - callback === null || callback === void 0 ? void 0 : callback(API._loginCode, API._loginAnonymousCode); - } - else { - console.log('login error:', res.errMsg); - } - }, - fail: function (res) { - API._loginCode = null; - API._loginAnonymousCode = null; - callback === null || callback === void 0 ? void 0 : callback(API._loginCode, API._loginAnonymousCode); - console.log("login fail", res); - }, - }); - } - else { - API._loginCode = null; - API._loginAnonymousCode = null; - callback === null || callback === void 0 ? void 0 : callback(API._loginCode, API._loginAnonymousCode); - console.log('not mini game platform, login codes are all null'); - } - }; - if (!API._loginCode) { - loginPlatform(); - } - else { - if (isWechat()) { - //@ts-ignore - wx.checkSession({ - success: function () { - console.log("session is valid, use current code:", API._loginCode); - callback === null || callback === void 0 ? void 0 : callback(API._loginCode, API._loginAnonymousCode); - }, - fail: function () { - console.log("session expired"); - loginPlatform(); - } - }); - } - else if (isBytedance()) { - //@ts-ignore - tt.checkSession({ - success: function () { - console.log("session is valid, user current code: " + API._loginCode + ", " + API._loginAnonymousCode); - callback === null || callback === void 0 ? void 0 : callback(API._loginCode, API._loginAnonymousCode); - }, - fail: function () { - console.log("session expired"); - loginPlatform(); - }, - }); - } - else { - console.log('not mini game platform, login null'); - callback === null || callback === void 0 ? void 0 : callback(null, null); - } - } - }; - /** - * 小游戏平台登录功能。微信返回code,抖音返回code和anonymousCode。用于登录的凭证,需要把这个code传回你的服务器程序中去调用code2Session - * @param callback (code, anonymousCode) 第一个参数为code,微信和抖音都支持;第二个参数为匿名设备ID,仅抖音支持,失败都返回null - */ - API.getUserInfo = function (callback) { - //@ts-ignore - tt.getUserInfo({ - withCredentials: true, - success: function (res) { - API._userInfo = res; - callback(API._userInfo); - }, - fail: function (err) { - callback(err); - } - }); - }; - /** - * 调用微信云函数。由于参数需要自定义,所以为any,需要自行解释。函数只完成通道和处理一场的作用 - * @param callback 返回云函数调用结果。需要检查返回参数是否为空,失败的时候为空 - * @param name 云函数的名字 - * @param data 云函数的内容 - */ - API.callWechatCloudFunction = function (callback, name, data) { - if (!isWechat()) { - console.log('Not wechat platform, not support callWechatCloudFunction'); - return; - } - this.login(function (code, anonymousCode) { - if (!API._hasInitWechatCloudFunction) { - //@ts-ignore - wx.cloud.init(); - API._hasInitWechatCloudFunction = true; - } - //@ts-ignore - wx.cloud.callFunction({ - name: name, - data: data, - success: function (res) { return callback === null || callback === void 0 ? void 0 : callback(res); }, - fail: function (err) { - console.log('wechat cloud function error:', err); - callback === null || callback === void 0 ? void 0 : callback(null); - } - }); - }); - }; - /** - * 存储用户信息,数据量不能大。可以考虑用于分数排行榜。用户之间可共享排行数据。 - * @param key - * @param value - */ - API.setUserCloudStorage = function (key, value) { - if (isWechat()) { - // @ts-ignore - wx.setUserCloudStorage({ - KVDataList: [{ key: key, value: value }], - success: function () { return console.log("set cloud storage success:" + key + ", value:" + value); }, - fail: function (err) { return console.log('set cloud storage error:', err); } - }); - } - if (isBytedance()) { - // @ts-ignore - tt.setUserCloudStorage({ - KVDataList: [{ key: key, value: value, }], - success: function () { return console.log("set cloud storage success:" + key + ", value:" + value); }, - fail: function (err) { return console.log('set cloud storage error:', err); } - }); - } - }; - /* - * 数数平台初始化以及登录 - */ - API.shushu_Init = function () { - if (typeof wx !== 'undefined' && wx !== null) { - console.log("开始接入数数平台"); - //getWechatGameVersion - var appId = "121591378fc1423893deb12041413eb3"; - var test = cc.fx.GameTool.getWechatGameVersion(); - if (test == "正式版") { - appId = "87d18958cea145f29d3265470ecd3486"; - } - var config = { - // appId: "73e1ec654f15b47a1a7354fbabec05ad", // 项目 APP ID - appId: appId, - serverUrl: "https://data.nika4fun.com", - autoTrack: { - appShow: true, - appHide: true // 自动采集 ta_mg_hide - } - }; - // 创建 TA 实例 - API._ta = new ThinkingAnalyticsAPI(config); - //var deviceId = API._ta.getDeviceId(); - API._ta.login(cc.fx.GameConfig.GM_INFO.openid); - var result = "success"; - API.shushu_Track("login", result); - // 初始化 - API._ta.init(); - API.shushu_SetSuperProperties(); - //console.log("数数平台初始化成功!"); - // this.TA.clearSuperProperties(); - //设置用户属性 - // this.TA.userSet({ username: "大核桃" }); - } - }; - API.shushu_userSet = function (time) { - if (typeof wx !== 'undefined' && wx !== null) { - console.log("设置用户注册属性"); - API._ta.userSet({ register_time: time }); - } - }; - /* - * 数数平台设置动态公共属性 - */ - API.shushu_SetSuperProperties = function () { - if (typeof wx !== 'undefined' && wx !== null && API._ta) { - var versionData = "1.3"; - // API._ta.userSetOnce({ register_time:time}); - var superProperties = { - current_level: (cc.fx.GameConfig.GM_INFO.level + 1), - current_health: cc.fx.GameConfig.GM_INFO.hp, - tmp_coin: cc.fx.GameConfig.GM_INFO.coin, - version: versionData - }; - API._ta.setSuperProperties(superProperties); //设置公共事件属性 - } - }; - API.getWechatGameVersion = function () { - if (typeof wx !== 'undefined' && wx !== null) { - // @ts-ignore - var accountInfo = wx.getAccountInfoSync(); - return accountInfo.miniProgram.version; - } - }; - /* - * 数数平台具体埋点 - */ - API.shushu_Track = function (name, data, callback) { - if (typeof wx !== 'undefined' && wx !== null) { - if (API._ta) { - // 假设 track 方法返回一个 Promise - API._ta.track(name, // 事件名称 - data // 事件属性 - ); - } - } - }; - API._loginCode = null; - API._loginAnonymousCode = null; - API._hasInitWechatCloudFunction = false; - API._userInfo = null; - API._ta = null; - return API; - }()); - MiniGameSdk.API = API; -})(MiniGameSdk = exports.MiniGameSdk || (exports.MiniGameSdk = {})); -======= -cc._RF.push(module, '92465qnUTJDw5STq1t7oelo', 'Key'); -// Script/prop/Key.ts - -"use strict"; -// Learn TypeScript: -// - https://docs.cocos.com/creator/manual/en/scripting/typescript.html -// Learn Attribute: -// - https://docs.cocos.com/creator/manual/en/scripting/reference/attributes.html -// Learn life-cycle callbacks: -// - https://docs.cocos.com/creator/manual/en/scripting/life-cycle-callbacks.html -var __extends = (this && this.__extends) || (function () { - var extendStatics = function (d, b) { - extendStatics = Object.setPrototypeOf || - ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) || - function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; }; - return extendStatics(d, b); - }; - return function (d, b) { - extendStatics(d, b); - function __() { this.constructor = d; } - d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); - }; -})(); -var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) { - var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; - if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc); - else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; - return c > 3 && r && Object.defineProperty(target, key, r), r; -}; -Object.defineProperty(exports, "__esModule", { value: true }); -var Map_1 = require("../Map"); -var _a = cc._decorator, ccclass = _a.ccclass, property = _a.property; -var Key = /** @class */ (function (_super) { - __extends(Key, _super); - function Key() { - var _this = _super !== null && _super.apply(this, arguments) || this; - _this.time = 60; - return _this; - // update (dt) {} - } - // mapInfo: number[][] = []; - Key.prototype.onLoad = function () { - }; - Key.prototype.start = function () { - }; - Key.prototype.init = function (time) { - if (time) - this.time = time; - this.node.getChildByName("time").active = true; - this.node.getChildByName("time").getComponent(cc.Label).string = this.time.toString(); - this.schedule(this.updateTime, 1); - }; - Key.prototype.updateTime = function () { - this.time--; - this.node.getChildByName("time").getComponent(cc.Label).string = this.time.toString(); - if (this.time <= 0) { - this.unschedule(this.updateTime); - this.node.destroy(); - Map_1.default._instance.failLevel(); - // this.node.destroy(); - } - }; - Key = __decorate([ - ccclass - ], Key); - return Key; -}(cc.Component)); -exports.default = Key; ->>>>>>> 0a31a7a5abc2c505bf743aa596e1c765a0405152 +"use strict"; +// Learn TypeScript: +// - https://docs.cocos.com/creator/manual/en/scripting/typescript.html +// Learn Attribute: +// - https://docs.cocos.com/creator/manual/en/scripting/reference/attributes.html +// Learn life-cycle callbacks: +// - https://docs.cocos.com/creator/manual/en/scripting/life-cycle-callbacks.html +var __extends = (this && this.__extends) || (function () { + var extendStatics = function (d, b) { + extendStatics = Object.setPrototypeOf || + ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) || + function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; }; + return extendStatics(d, b); + }; + return function (d, b) { + extendStatics(d, b); + function __() { this.constructor = d; } + d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); + }; +})(); +var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) { + var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; + if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc); + else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; + return c > 3 && r && Object.defineProperty(target, key, r), r; +}; +Object.defineProperty(exports, "__esModule", { value: true }); +var _a = cc._decorator, ccclass = _a.ccclass, property = _a.property; +var Adhesive = /** @class */ (function (_super) { + __extends(Adhesive, _super); + function Adhesive() { + var _this = _super !== null && _super.apply(this, arguments) || this; + _this.time = 60; + _this.pos = { x: 0, y: 0 }; + return _this; + } + Adhesive.prototype.onLoad = function () { + this.pos.x = this.pos.y = 0; + this.target = null; + }; + Adhesive.prototype.start = function () { + }; + Adhesive.prototype.init = function (node) { + this.pos.x = node.x - this.node.x; + this.pos.y = node.y - this.node.y; + this.target = node; + }; + Adhesive.prototype.remove = function () { + var _this = this; + this.target = null; + for (var j = 0; j < this.node.children.length; j++) { + if (this.node.children[j].active == true) { + this.node.children[j].getComponent(sp.Skeleton).setAnimation(0, "animation", false); + } + } + setTimeout(function () { + _this.node.active = false; + }, 2000); + }; + Adhesive.prototype.update = function (dt) { + if (this.target != null) { + this.node.x = this.target.x - this.pos.x; + this.node.y = this.target.y - this.pos.y; + } + }; + Adhesive = __decorate([ + ccclass + ], Adhesive); + return Adhesive; +}(cc.Component)); +exports.default = Adhesive; + +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,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImFzc2V0c1xcU2NyaXB0XFxwcm9wXFxBZGhlc2l2ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsb0JBQW9CO0FBQ3BCLHdFQUF3RTtBQUN4RSxtQkFBbUI7QUFDbkIsa0ZBQWtGO0FBQ2xGLDhCQUE4QjtBQUM5QixrRkFBa0Y7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUk1RSxJQUFBLEtBQXNCLEVBQUUsQ0FBQyxVQUFVLEVBQWxDLE9BQU8sYUFBQSxFQUFFLFFBQVEsY0FBaUIsQ0FBQztBQUsxQztJQUFzQyw0QkFBWTtJQUFsRDtRQUFBLHFFQXVDQztRQXJDRyxVQUFJLEdBQVcsRUFBRSxDQUFDO1FBQ2xCLFNBQUcsR0FBUSxFQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBQyxDQUFDOztJQW9DNUIsQ0FBQztJQWpDRyx5QkFBTSxHQUFOO1FBQ0ksSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQzVCLElBQUksQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFDO0lBQ3ZCLENBQUM7SUFFRCx3QkFBSyxHQUFMO0lBQ0EsQ0FBQztJQUVELHVCQUFJLEdBQUosVUFBSyxJQUFJO1FBQ0wsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQztRQUNsQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO1FBQ2xDLElBQUksQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFDO0lBQ3ZCLENBQUM7SUFFRCx5QkFBTSxHQUFOO1FBQUEsaUJBVUM7UUFURyxJQUFJLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQztRQUNuQixLQUFJLElBQUksQ0FBQyxHQUFFLENBQUMsRUFBRSxDQUFDLEdBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsTUFBTSxFQUFFLENBQUMsRUFBRSxFQUFDO1lBQzNDLElBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxJQUFJLElBQUksRUFBQztnQkFDcEMsSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsWUFBWSxDQUFDLEVBQUUsQ0FBQyxRQUFRLENBQUMsQ0FBQyxZQUFZLENBQUMsQ0FBQyxFQUFDLFdBQVcsRUFBQyxLQUFLLENBQUMsQ0FBQzthQUNyRjtTQUNKO1FBQ0QsVUFBVSxDQUFDO1lBQ1AsS0FBSSxDQUFDLElBQUksQ0FBQyxNQUFNLEdBQUcsS0FBSyxDQUFDO1FBQzdCLENBQUMsRUFBRSxJQUFJLENBQUMsQ0FBQztJQUNiLENBQUM7SUFHRCx5QkFBTSxHQUFOLFVBQVEsRUFBRTtRQUNOLElBQUcsSUFBSSxDQUFDLE1BQU0sSUFBSSxJQUFJLEVBQUM7WUFDbkIsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7WUFDekMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7U0FDNUM7SUFDTCxDQUFDO0lBdENnQixRQUFRO1FBRDVCLE9BQU87T0FDYSxRQUFRLENBdUM1QjtJQUFELGVBQUM7Q0F2Q0QsQUF1Q0MsQ0F2Q3FDLEVBQUUsQ0FBQyxTQUFTLEdBdUNqRDtrQkF2Q29CLFFBQVEiLCJmaWxlIjoiIiwic291cmNlUm9vdCI6Ii8iLCJzb3VyY2VzQ29udGVudCI6WyIvLyBMZWFybiBUeXBlU2NyaXB0OlxyXG4vLyAgLSBodHRwczovL2RvY3MuY29jb3MuY29tL2NyZWF0b3IvbWFudWFsL2VuL3NjcmlwdGluZy90eXBlc2NyaXB0Lmh0bWxcclxuLy8gTGVhcm4gQXR0cmlidXRlOlxyXG4vLyAgLSBodHRwczovL2RvY3MuY29jb3MuY29tL2NyZWF0b3IvbWFudWFsL2VuL3NjcmlwdGluZy9yZWZlcmVuY2UvYXR0cmlidXRlcy5odG1sXHJcbi8vIExlYXJuIGxpZmUtY3ljbGUgY2FsbGJhY2tzOlxyXG4vLyAgLSBodHRwczovL2RvY3MuY29jb3MuY29tL2NyZWF0b3IvbWFudWFsL2VuL3NjcmlwdGluZy9saWZlLWN5Y2xlLWNhbGxiYWNrcy5odG1sXHJcblxyXG5pbXBvcnQgTWFwQ29ucm9sZXIgZnJvbSBcIi4uL01hcFwiO1xyXG5cclxuY29uc3Qge2NjY2xhc3MsIHByb3BlcnR5fSA9IGNjLl9kZWNvcmF0b3I7XHJcblxyXG5cclxuXHJcbkBjY2NsYXNzXHJcbmV4cG9ydCBkZWZhdWx0IGNsYXNzIEFkaGVzaXZlIGV4dGVuZHMgY2MuQ29tcG9uZW50IHtcclxuICAgIHN0YXRpYyBfaW5zdGFuY2U6IGFueTtcclxuICAgIHRpbWU6IG51bWJlciA9IDYwO1xyXG4gICAgcG9zOiBhbnkgPSB7eDogMCwgeTogMH07XHJcbiAgICB0YXJnZXQ6IGFueTtcclxuXHJcbiAgICBvbkxvYWQgKCkgeyBcclxuICAgICAgICB0aGlzLnBvcy54ID0gdGhpcy5wb3MueSA9IDA7XHJcbiAgICAgICAgdGhpcy50YXJnZXQgPSBudWxsO1xyXG4gICAgfSBcclxuXHJcbiAgICBzdGFydCAoKSB7XHJcbiAgICB9XHJcblxyXG4gICAgaW5pdChub2RlKXtcclxuICAgICAgICB0aGlzLnBvcy54ID0gbm9kZS54IC0gdGhpcy5ub2RlLng7XHJcbiAgICAgICAgdGhpcy5wb3MueSA9IG5vZGUueSAtIHRoaXMubm9kZS55O1xyXG4gICAgICAgIHRoaXMudGFyZ2V0ID0gbm9kZTtcclxuICAgIH1cclxuXHJcbiAgICByZW1vdmUoKXtcclxuICAgICAgICB0aGlzLnRhcmdldCA9IG51bGw7XHJcbiAgICAgICAgZm9yKGxldCBqID0wOyBqPHRoaXMubm9kZS5jaGlsZHJlbi5sZW5ndGg7IGorKyl7XHJcbiAgICAgICAgICAgIGlmKHRoaXMubm9kZS5jaGlsZHJlbltqXS5hY3RpdmUgPT0gdHJ1ZSl7XHJcbiAgICAgICAgICAgICAgICB0aGlzLm5vZGUuY2hpbGRyZW5bal0uZ2V0Q29tcG9uZW50KHNwLlNrZWxldG9uKS5zZXRBbmltYXRpb24oMCxcImFuaW1hdGlvblwiLGZhbHNlKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgICAgICAgdGhpcy5ub2RlLmFjdGl2ZSA9IGZhbHNlO1xyXG4gICAgICAgIH0sIDIwMDApO1xyXG4gICAgfVxyXG5cclxuXHJcbiAgICB1cGRhdGUgKGR0KSB7XHJcbiAgICAgICAgaWYodGhpcy50YXJnZXQgIT0gbnVsbCl7XHJcbiAgICAgICAgICAgIHRoaXMubm9kZS54ID0gdGhpcy50YXJnZXQueCAtIHRoaXMucG9zLng7XHJcbiAgICAgICAgICAgIHRoaXMubm9kZS55ID0gdGhpcy50YXJnZXQueSAtIHRoaXMucG9zLnk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG59XHJcbiJdfQ== +//------QC-SOURCE-SPLIT------ + + (function() { + var nodeEnv = typeof require !== 'undefined' && typeof process !== 'undefined'; + var __module = nodeEnv ? module : {exports:{}}; + var __filename = 'preview-scripts/assets/Script/prop/Star.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, 'd773dbWW6tAz6F+Z0L3IXUx', 'Star'); +// Script/prop/Star.ts + +"use strict"; +// Learn TypeScript: +// - https://docs.cocos.com/creator/manual/en/scripting/typescript.html +// Learn Attribute: +// - https://docs.cocos.com/creator/manual/en/scripting/reference/attributes.html +// Learn life-cycle callbacks: +// - https://docs.cocos.com/creator/manual/en/scripting/life-cycle-callbacks.html +var __extends = (this && this.__extends) || (function () { + var extendStatics = function (d, b) { + extendStatics = Object.setPrototypeOf || + ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) || + function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; }; + return extendStatics(d, b); + }; + return function (d, b) { + extendStatics(d, b); + function __() { this.constructor = d; } + d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); + }; +})(); +var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) { + var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; + if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc); + else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; + return c > 3 && r && Object.defineProperty(target, key, r), r; +}; +Object.defineProperty(exports, "__esModule", { value: true }); +var Map_1 = require("../Map"); +var _a = cc._decorator, ccclass = _a.ccclass, property = _a.property; +var Star = /** @class */ (function (_super) { + __extends(Star, _super); + function Star() { + var _this = _super !== null && _super.apply(this, arguments) || this; + _this.time = 60; + // mapInfo: number[][] = []; + _this.star_SpriteFrame = null; + return _this; + // update (dt) {} + } + Star.prototype.onLoad = function () { + }; + Star.prototype.start = function () { + }; + Star.prototype.init = function (time) { + if (time) + this.time = time; + this.node.getChildByName("time").active = true; + this.node.getChildByName("time").getComponent(cc.Label).string = this.time.toString(); + this.schedule(this.updateTime, 1); + }; + Star.prototype.updateTime = function () { + this.time--; + this.node.getChildByName("time").getComponent(cc.Label).string = this.time.toString(); + if (this.time <= 0) { + this.unschedule(this.updateTime); + this.node.destroy(); + Map_1.default._instance.failLevel(); + // this.node.destroy(); + } + }; + __decorate([ + property(cc.SpriteAtlas) + ], Star.prototype, "star_SpriteFrame", void 0); + Star = __decorate([ + ccclass + ], Star); + return Star; +}(cc.Component)); +exports.default = Star; + +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,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImFzc2V0c1xcU2NyaXB0XFxwcm9wXFxTdGFyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSxvQkFBb0I7QUFDcEIsd0VBQXdFO0FBQ3hFLG1CQUFtQjtBQUNuQixrRkFBa0Y7QUFDbEYsOEJBQThCO0FBQzlCLGtGQUFrRjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBRWxGLDhCQUFpQztBQUUzQixJQUFBLEtBQXNCLEVBQUUsQ0FBQyxVQUFVLEVBQWxDLE9BQU8sYUFBQSxFQUFFLFFBQVEsY0FBaUIsQ0FBQztBQUsxQztJQUFrQyx3QkFBWTtJQUE5QztRQUFBLHFFQW1DQztRQWpDRyxVQUFJLEdBQVcsRUFBRSxDQUFDO1FBRWxCLDRCQUE0QjtRQUU1QixzQkFBZ0IsR0FBbUIsSUFBSSxDQUFDOztRQTRCeEMsaUJBQWlCO0lBQ3JCLENBQUM7SUEzQkcscUJBQU0sR0FBTjtJQUVBLENBQUM7SUFFRCxvQkFBSyxHQUFMO0lBQ0EsQ0FBQztJQUVELG1CQUFJLEdBQUosVUFBSyxJQUFJO1FBQ0wsSUFBRyxJQUFJO1lBQUUsSUFBSSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUM7UUFDMUIsSUFBSSxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsTUFBTSxDQUFDLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQztRQUMvQyxJQUFJLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxZQUFZLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDO1FBQ3RGLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFDLENBQUMsQ0FBQztJQUN0QyxDQUFDO0lBR0QseUJBQVUsR0FBVjtRQUNJLElBQUksQ0FBQyxJQUFJLEVBQUcsQ0FBQztRQUNiLElBQUksQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLE1BQU0sQ0FBQyxDQUFDLFlBQVksQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUM7UUFDdEYsSUFBRyxJQUFJLENBQUMsSUFBSSxJQUFJLENBQUMsRUFBQztZQUNkLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDO1lBQ2pDLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUM7WUFDcEIsYUFBVyxDQUFDLFNBQVMsQ0FBQyxTQUFTLEVBQUUsQ0FBQztZQUNsQyx1QkFBdUI7U0FDMUI7SUFDTCxDQUFDO0lBMUJEO1FBREMsUUFBUSxDQUFDLEVBQUUsQ0FBQyxXQUFXLENBQUM7a0RBQ2U7SUFOdkIsSUFBSTtRQUR4QixPQUFPO09BQ2EsSUFBSSxDQW1DeEI7SUFBRCxXQUFDO0NBbkNELEFBbUNDLENBbkNpQyxFQUFFLENBQUMsU0FBUyxHQW1DN0M7a0JBbkNvQixJQUFJIiwiZmlsZSI6IiIsInNvdXJjZVJvb3QiOiIvIiwic291cmNlc0NvbnRlbnQiOlsiLy8gTGVhcm4gVHlwZVNjcmlwdDpcclxuLy8gIC0gaHR0cHM6Ly9kb2NzLmNvY29zLmNvbS9jcmVhdG9yL21hbnVhbC9lbi9zY3JpcHRpbmcvdHlwZXNjcmlwdC5odG1sXHJcbi8vIExlYXJuIEF0dHJpYnV0ZTpcclxuLy8gIC0gaHR0cHM6Ly9kb2NzLmNvY29zLmNvbS9jcmVhdG9yL21hbnVhbC9lbi9zY3JpcHRpbmcvcmVmZXJlbmNlL2F0dHJpYnV0ZXMuaHRtbFxyXG4vLyBMZWFybiBsaWZlLWN5Y2xlIGNhbGxiYWNrczpcclxuLy8gIC0gaHR0cHM6Ly9kb2NzLmNvY29zLmNvbS9jcmVhdG9yL21hbnVhbC9lbi9zY3JpcHRpbmcvbGlmZS1jeWNsZS1jYWxsYmFja3MuaHRtbFxyXG5cclxuaW1wb3J0IE1hcENvbnJvbGVyIGZyb20gXCIuLi9NYXBcIjtcclxuXHJcbmNvbnN0IHtjY2NsYXNzLCBwcm9wZXJ0eX0gPSBjYy5fZGVjb3JhdG9yO1xyXG5cclxuXHJcblxyXG5AY2NjbGFzc1xyXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBTdGFyIGV4dGVuZHMgY2MuQ29tcG9uZW50IHtcclxuICAgIHN0YXRpYyBfaW5zdGFuY2U6IGFueTtcclxuICAgIHRpbWU6IG51bWJlciA9IDYwO1xyXG5cclxuICAgIC8vIG1hcEluZm86IG51bWJlcltdW10gPSBbXTtcclxuICAgIEBwcm9wZXJ0eShjYy5TcHJpdGVBdGxhcylcclxuICAgIHN0YXJfU3ByaXRlRnJhbWU6IGNjLlNwcml0ZUF0bGFzID0gbnVsbDtcclxuXHJcbiAgICBvbkxvYWQgKCkge1xyXG5cclxuICAgIH0gXHJcblxyXG4gICAgc3RhcnQgKCkge1xyXG4gICAgfVxyXG5cclxuICAgIGluaXQodGltZSl7XHJcbiAgICAgICAgaWYodGltZSkgdGhpcy50aW1lID0gdGltZTtcclxuICAgICAgICB0aGlzLm5vZGUuZ2V0Q2hpbGRCeU5hbWUoXCJ0aW1lXCIpLmFjdGl2ZSA9IHRydWU7XHJcbiAgICAgICAgdGhpcy5ub2RlLmdldENoaWxkQnlOYW1lKFwidGltZVwiKS5nZXRDb21wb25lbnQoY2MuTGFiZWwpLnN0cmluZyA9IHRoaXMudGltZS50b1N0cmluZygpO1xyXG4gICAgICAgIHRoaXMuc2NoZWR1bGUodGhpcy51cGRhdGVUaW1lLCAxKTtcclxuICAgIH1cclxuXHJcbiAgICBcclxuICAgIHVwZGF0ZVRpbWUoKXtcclxuICAgICAgICB0aGlzLnRpbWUgLS07XHJcbiAgICAgICAgdGhpcy5ub2RlLmdldENoaWxkQnlOYW1lKFwidGltZVwiKS5nZXRDb21wb25lbnQoY2MuTGFiZWwpLnN0cmluZyA9IHRoaXMudGltZS50b1N0cmluZygpO1xyXG4gICAgICAgIGlmKHRoaXMudGltZSA8PSAwKXtcclxuICAgICAgICAgICAgdGhpcy51bnNjaGVkdWxlKHRoaXMudXBkYXRlVGltZSk7XHJcbiAgICAgICAgICAgIHRoaXMubm9kZS5kZXN0cm95KCk7XHJcbiAgICAgICAgICAgIE1hcENvbnJvbGVyLl9pbnN0YW5jZS5mYWlsTGV2ZWwoKTtcclxuICAgICAgICAgICAgLy8gdGhpcy5ub2RlLmRlc3Ryb3koKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgLy8gdXBkYXRlIChkdCkge31cclxufVxyXG4iXX0= +//------QC-SOURCE-SPLIT------ + + (function() { + var nodeEnv = typeof require !== 'undefined' && typeof process !== 'undefined'; + var __module = nodeEnv ? module : {exports:{}}; + var __filename = 'preview-scripts/assets/Script/lq_base/util/lq_platform_util.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, '35875T0lsRL3rzhNkUdX4/G', 'lq_platform_util'); +// Script/lq_base/util/lq_platform_util.ts + +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.LQPlatformUtil = void 0; +var lq_const_1 = require("../data/lq_const"); +var LQPlatformUtil = /** @class */ (function () { + function LQPlatformUtil() { + } + LQPlatformUtil.init = function () { + if (typeof qq !== 'undefined') { + this.platform_type = lq_const_1.LQPlatformType.qq; + } + else if (typeof swan !== 'undefined') { + this.platform_type = lq_const_1.LQPlatformType.baidu; + } + else if (typeof tt !== 'undefined') { + this.platform_type = lq_const_1.LQPlatformType.tt; + var info = tt.getSystemInfoSync(); + switch (info.appName) { + case 'Toutiao': + this.byte_dance_type = lq_const_1.LQByteDanceType.tt; + break; + case 'news_article_lite': + this.byte_dance_type = lq_const_1.LQByteDanceType.tt_lite; + break; + case 'Douyin': + this.byte_dance_type = lq_const_1.LQByteDanceType.douyin; + break; + case 'douyin_lite': + this.byte_dance_type = lq_const_1.LQByteDanceType.douyin_lite; + break; + case 'PPX': + this.byte_dance_type = lq_const_1.LQByteDanceType.ppx; + break; + case 'devtools': + this.byte_dance_type = lq_const_1.LQByteDanceType.devtools; + break; + } + } + else if (typeof qg !== 'undefined') { + if (!!qg.getBattle) { + this.platform_type = lq_const_1.LQPlatformType.oppo; + } + else { + this.platform_type = lq_const_1.LQPlatformType.vivo; + } + } + else if (typeof wx !== 'undefined') { + this.platform_type = lq_const_1.LQPlatformType.wx; + } + else if (typeof jsb !== 'undefined') { + if (cc.sys.os === cc.sys.OS_ANDROID) { + this.platform_type = lq_const_1.LQPlatformType.android; + } + else if (cc.sys.os === cc.sys.OS_IOS) { + this.platform_type = lq_const_1.LQPlatformType.ios; + } + else { + this.platform_type = lq_const_1.LQPlatformType.unknown; + } + } + else if (cc.sys.isBrowser) { + this.platform_type = lq_const_1.LQPlatformType.browser; + } + }; + LQPlatformUtil.get_platform = function () { + return this.platform_type; + }; + LQPlatformUtil.get_byte_dance = function () { + return this.byte_dance_type; + }; + LQPlatformUtil.is_wx = function () { + return this.platform_type === lq_const_1.LQPlatformType.wx; + }; + LQPlatformUtil.is_tt = function () { + return this.platform_type === lq_const_1.LQPlatformType.tt; + }; + LQPlatformUtil.is_oppo = function () { + return this.platform_type === lq_const_1.LQPlatformType.oppo; + }; + LQPlatformUtil.is_vivo = function () { + return this.platform_type === lq_const_1.LQPlatformType.vivo; + }; + LQPlatformUtil.is_ov = function () { + return this.platform_type === lq_const_1.LQPlatformType.oppo || this.platform_type === lq_const_1.LQPlatformType.vivo; + }; + LQPlatformUtil.is_browser = function () { + return this.platform_type === lq_const_1.LQPlatformType.browser; + }; + LQPlatformUtil.is_android = function () { + return this.platform_type === lq_const_1.LQPlatformType.android; + }; + LQPlatformUtil.is_ios = function () { + return this.platform_type === lq_const_1.LQPlatformType.ios; + }; + LQPlatformUtil.is_native = function () { + return this.platform_type === lq_const_1.LQPlatformType.android || this.platform_type === lq_const_1.LQPlatformType.ios; + }; + LQPlatformUtil.is_qq = function () { + return this.platform_type === lq_const_1.LQPlatformType.qq; + }; + LQPlatformUtil.is_baidu = function () { + return this.platform_type === lq_const_1.LQPlatformType.baidu; + }; + LQPlatformUtil.is_kwaigame = function () { + return this.platform_type === lq_const_1.LQPlatformType.kwaigame; + }; + return LQPlatformUtil; +}()); +exports.LQPlatformUtil = LQPlatformUtil; +LQPlatformUtil.init(); +if (LQPlatformUtil.is_tt()) { + // console.log('---------当前平台:' + LQPlatformUtil.get_byte_dance()); +} +else { + // console.log('---------当前平台:' + LQPlatformUtil.get_platform()); +} + +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,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImFzc2V0c1xcU2NyaXB0XFxscV9iYXNlXFx1dGlsXFxscV9wbGF0Zm9ybV91dGlsLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLDZDQUFpRTtBQUVqRTtJQUFBO0lBNEdBLENBQUM7SUF4R2lCLG1CQUFJLEdBQWxCO1FBQ0ksSUFBSSxPQUFPLEVBQUUsS0FBSyxXQUFXLEVBQUU7WUFDM0IsSUFBSSxDQUFDLGFBQWEsR0FBRyx5QkFBYyxDQUFDLEVBQUUsQ0FBQztTQUMxQzthQUFNLElBQUksT0FBTyxJQUFJLEtBQUssV0FBVyxFQUFFO1lBQ3BDLElBQUksQ0FBQyxhQUFhLEdBQUcseUJBQWMsQ0FBQyxLQUFLLENBQUM7U0FDN0M7YUFBTSxJQUFJLE9BQU8sRUFBRSxLQUFLLFdBQVcsRUFBRTtZQUNsQyxJQUFJLENBQUMsYUFBYSxHQUFHLHlCQUFjLENBQUMsRUFBRSxDQUFDO1lBQ3ZDLElBQU0sSUFBSSxHQUFHLEVBQUUsQ0FBQyxpQkFBaUIsRUFBRSxDQUFDO1lBQ3BDLFFBQVEsSUFBSSxDQUFDLE9BQU8sRUFBRTtnQkFDbEIsS0FBSyxTQUFTO29CQUNWLElBQUksQ0FBQyxlQUFlLEdBQUcsMEJBQWUsQ0FBQyxFQUFFLENBQUM7b0JBQzFDLE1BQU07Z0JBQ1YsS0FBSyxtQkFBbUI7b0JBQ3BCLElBQUksQ0FBQyxlQUFlLEdBQUcsMEJBQWUsQ0FBQyxPQUFPLENBQUM7b0JBQy9DLE1BQU07Z0JBQ1YsS0FBSyxRQUFRO29CQUNULElBQUksQ0FBQyxlQUFlLEdBQUcsMEJBQWUsQ0FBQyxNQUFNLENBQUM7b0JBQzlDLE1BQU07Z0JBQ1YsS0FBSyxhQUFhO29CQUNkLElBQUksQ0FBQyxlQUFlLEdBQUcsMEJBQWUsQ0FBQyxXQUFXLENBQUM7b0JBQ25ELE1BQU07Z0JBQ1YsS0FBSyxLQUFLO29CQUNOLElBQUksQ0FBQyxlQUFlLEdBQUcsMEJBQWUsQ0FBQyxHQUFHLENBQUM7b0JBQzNDLE1BQU07Z0JBQ1YsS0FBSyxVQUFVO29CQUNYLElBQUksQ0FBQyxlQUFlLEdBQUcsMEJBQWUsQ0FBQyxRQUFRLENBQUM7b0JBQ2hELE1BQU07YUFDYjtTQUNKO2FBQU0sSUFBSSxPQUFPLEVBQUUsS0FBSyxXQUFXLEVBQUU7WUFDbEMsSUFBSSxDQUFDLENBQUMsRUFBRSxDQUFDLFNBQVMsRUFBRTtnQkFDaEIsSUFBSSxDQUFDLGFBQWEsR0FBRyx5QkFBYyxDQUFDLElBQUksQ0FBQzthQUM1QztpQkFBTTtnQkFDSCxJQUFJLENBQUMsYUFBYSxHQUFHLHlCQUFjLENBQUMsSUFBSSxDQUFDO2FBQzVDO1NBQ0o7YUFBTSxJQUFJLE9BQU8sRUFBRSxLQUFLLFdBQVcsRUFBRTtZQUNsQyxJQUFJLENBQUMsYUFBYSxHQUFHLHlCQUFjLENBQUMsRUFBRSxDQUFDO1NBQzFDO2FBQU0sSUFBSSxPQUFPLEdBQUcsS0FBSyxXQUFXLEVBQUU7WUFDbkMsSUFBSSxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsS0FBSyxFQUFFLENBQUMsR0FBRyxDQUFDLFVBQVUsRUFBRTtnQkFDakMsSUFBSSxDQUFDLGFBQWEsR0FBRyx5QkFBYyxDQUFDLE9BQU8sQ0FBQzthQUMvQztpQkFBTSxJQUFJLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxLQUFLLEVBQUUsQ0FBQyxHQUFHLENBQUMsTUFBTSxFQUFFO2dCQUNwQyxJQUFJLENBQUMsYUFBYSxHQUFHLHlCQUFjLENBQUMsR0FBRyxDQUFDO2FBQzNDO2lCQUFNO2dCQUNILElBQUksQ0FBQyxhQUFhLEdBQUcseUJBQWMsQ0FBQyxPQUFPLENBQUM7YUFDL0M7U0FDSjthQUFNLElBQUksRUFBRSxDQUFDLEdBQUcsQ0FBQyxTQUFTLEVBQUU7WUFDekIsSUFBSSxDQUFDLGFBQWEsR0FBRyx5QkFBYyxDQUFDLE9BQU8sQ0FBQztTQUMvQztJQUNMLENBQUM7SUFFYSwyQkFBWSxHQUExQjtRQUNJLE9BQU8sSUFBSSxDQUFDLGFBQWEsQ0FBQztJQUM5QixDQUFDO0lBRWEsNkJBQWMsR0FBNUI7UUFDSSxPQUFPLElBQUksQ0FBQyxlQUFlLENBQUM7SUFDaEMsQ0FBQztJQUVhLG9CQUFLLEdBQW5CO1FBQ0ksT0FBTyxJQUFJLENBQUMsYUFBYSxLQUFLLHlCQUFjLENBQUMsRUFBRSxDQUFDO0lBQ3BELENBQUM7SUFFYSxvQkFBSyxHQUFuQjtRQUNJLE9BQU8sSUFBSSxDQUFDLGFBQWEsS0FBSyx5QkFBYyxDQUFDLEVBQUUsQ0FBQztJQUNwRCxDQUFDO0lBRWEsc0JBQU8sR0FBckI7UUFDSSxPQUFPLElBQUksQ0FBQyxhQUFhLEtBQUsseUJBQWMsQ0FBQyxJQUFJLENBQUM7SUFDdEQsQ0FBQztJQUVhLHNCQUFPLEdBQXJCO1FBQ0ksT0FBTyxJQUFJLENBQUMsYUFBYSxLQUFLLHlCQUFjLENBQUMsSUFBSSxDQUFDO0lBQ3RELENBQUM7SUFFYSxvQkFBSyxHQUFuQjtRQUNJLE9BQU8sSUFBSSxDQUFDLGFBQWEsS0FBSyx5QkFBYyxDQUFDLElBQUksSUFBSSxJQUFJLENBQUMsYUFBYSxLQUFLLHlCQUFjLENBQUMsSUFBSSxDQUFDO0lBQ3BHLENBQUM7SUFFYSx5QkFBVSxHQUF4QjtRQUNJLE9BQU8sSUFBSSxDQUFDLGFBQWEsS0FBSyx5QkFBYyxDQUFDLE9BQU8sQ0FBQztJQUN6RCxDQUFDO0lBRWEseUJBQVUsR0FBeEI7UUFDSSxPQUFPLElBQUksQ0FBQyxhQUFhLEtBQUsseUJBQWMsQ0FBQyxPQUFPLENBQUM7SUFDekQsQ0FBQztJQUVhLHFCQUFNLEdBQXBCO1FBQ0ksT0FBTyxJQUFJLENBQUMsYUFBYSxLQUFLLHlCQUFjLENBQUMsR0FBRyxDQUFDO0lBQ3JELENBQUM7SUFFYSx3QkFBUyxHQUF2QjtRQUNJLE9BQU8sSUFBSSxDQUFDLGFBQWEsS0FBSyx5QkFBYyxDQUFDLE9BQU8sSUFBSSxJQUFJLENBQUMsYUFBYSxLQUFLLHlCQUFjLENBQUMsR0FBRyxDQUFDO0lBQ3RHLENBQUM7SUFFYSxvQkFBSyxHQUFuQjtRQUNJLE9BQU8sSUFBSSxDQUFDLGFBQWEsS0FBSyx5QkFBYyxDQUFDLEVBQUUsQ0FBQztJQUNwRCxDQUFDO0lBRWEsdUJBQVEsR0FBdEI7UUFDSSxPQUFPLElBQUksQ0FBQyxhQUFhLEtBQUsseUJBQWMsQ0FBQyxLQUFLLENBQUM7SUFDdkQsQ0FBQztJQUVhLDBCQUFXLEdBQXpCO1FBQ0ksT0FBTyxJQUFJLENBQUMsYUFBYSxLQUFLLHlCQUFjLENBQUMsUUFBUSxDQUFDO0lBQzFELENBQUM7SUFDTCxxQkFBQztBQUFELENBNUdBLEFBNEdDLElBQUE7QUE1R1ksd0NBQWM7QUE4RzNCLGNBQWMsQ0FBQyxJQUFJLEVBQUUsQ0FBQztBQUN0QixJQUFJLGNBQWMsQ0FBQyxLQUFLLEVBQUUsRUFBRTtJQUN4QixtRUFBbUU7Q0FDdEU7S0FBTTtJQUNILGlFQUFpRTtDQUNwRSIsImZpbGUiOiIiLCJzb3VyY2VSb290IjoiLyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7TFFCeXRlRGFuY2VUeXBlLCBMUVBsYXRmb3JtVHlwZX0gZnJvbSBcIi4uL2RhdGEvbHFfY29uc3RcIjtcclxuXHJcbmV4cG9ydCBjbGFzcyBMUVBsYXRmb3JtVXRpbCB7XHJcbiAgICBwcml2YXRlIHN0YXRpYyBwbGF0Zm9ybV90eXBlOiBMUVBsYXRmb3JtVHlwZTtcclxuICAgIHByaXZhdGUgc3RhdGljIGJ5dGVfZGFuY2VfdHlwZTogTFFCeXRlRGFuY2VUeXBlO1xyXG5cclxuICAgIHB1YmxpYyBzdGF0aWMgaW5pdCgpIHtcclxuICAgICAgICBpZiAodHlwZW9mIHFxICE9PSAndW5kZWZpbmVkJykge1xyXG4gICAgICAgICAgICB0aGlzLnBsYXRmb3JtX3R5cGUgPSBMUVBsYXRmb3JtVHlwZS5xcTtcclxuICAgICAgICB9IGVsc2UgaWYgKHR5cGVvZiBzd2FuICE9PSAndW5kZWZpbmVkJykge1xyXG4gICAgICAgICAgICB0aGlzLnBsYXRmb3JtX3R5cGUgPSBMUVBsYXRmb3JtVHlwZS5iYWlkdTtcclxuICAgICAgICB9IGVsc2UgaWYgKHR5cGVvZiB0dCAhPT0gJ3VuZGVmaW5lZCcpIHtcclxuICAgICAgICAgICAgdGhpcy5wbGF0Zm9ybV90eXBlID0gTFFQbGF0Zm9ybVR5cGUudHQ7XHJcbiAgICAgICAgICAgIGNvbnN0IGluZm8gPSB0dC5nZXRTeXN0ZW1JbmZvU3luYygpO1xyXG4gICAgICAgICAgICBzd2l0Y2ggKGluZm8uYXBwTmFtZSkge1xyXG4gICAgICAgICAgICAgICAgY2FzZSAnVG91dGlhbyc6XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5ieXRlX2RhbmNlX3R5cGUgPSBMUUJ5dGVEYW5jZVR5cGUudHQ7XHJcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgICAgICBjYXNlICduZXdzX2FydGljbGVfbGl0ZSc6XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5ieXRlX2RhbmNlX3R5cGUgPSBMUUJ5dGVEYW5jZVR5cGUudHRfbGl0ZTtcclxuICAgICAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgICAgIGNhc2UgJ0RvdXlpbic6XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5ieXRlX2RhbmNlX3R5cGUgPSBMUUJ5dGVEYW5jZVR5cGUuZG91eWluO1xyXG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICAgICAgY2FzZSAnZG91eWluX2xpdGUnOlxyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuYnl0ZV9kYW5jZV90eXBlID0gTFFCeXRlRGFuY2VUeXBlLmRvdXlpbl9saXRlO1xyXG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICAgICAgY2FzZSAnUFBYJzpcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLmJ5dGVfZGFuY2VfdHlwZSA9IExRQnl0ZURhbmNlVHlwZS5wcHg7XHJcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgICAgICBjYXNlICdkZXZ0b29scyc6XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5ieXRlX2RhbmNlX3R5cGUgPSBMUUJ5dGVEYW5jZVR5cGUuZGV2dG9vbHM7XHJcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9IGVsc2UgaWYgKHR5cGVvZiBxZyAhPT0gJ3VuZGVmaW5lZCcpIHtcclxuICAgICAgICAgICAgaWYgKCEhcWcuZ2V0QmF0dGxlKSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLnBsYXRmb3JtX3R5cGUgPSBMUVBsYXRmb3JtVHlwZS5vcHBvO1xyXG4gICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5wbGF0Zm9ybV90eXBlID0gTFFQbGF0Zm9ybVR5cGUudml2bztcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH0gZWxzZSBpZiAodHlwZW9mIHd4ICE9PSAndW5kZWZpbmVkJykge1xyXG4gICAgICAgICAgICB0aGlzLnBsYXRmb3JtX3R5cGUgPSBMUVBsYXRmb3JtVHlwZS53eDtcclxuICAgICAgICB9IGVsc2UgaWYgKHR5cGVvZiBqc2IgIT09ICd1bmRlZmluZWQnKSB7XHJcbiAgICAgICAgICAgIGlmIChjYy5zeXMub3MgPT09IGNjLnN5cy5PU19BTkRST0lEKSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLnBsYXRmb3JtX3R5cGUgPSBMUVBsYXRmb3JtVHlwZS5hbmRyb2lkO1xyXG4gICAgICAgICAgICB9IGVsc2UgaWYgKGNjLnN5cy5vcyA9PT0gY2Muc3lzLk9TX0lPUykge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5wbGF0Zm9ybV90eXBlID0gTFFQbGF0Zm9ybVR5cGUuaW9zO1xyXG4gICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5wbGF0Zm9ybV90eXBlID0gTFFQbGF0Zm9ybVR5cGUudW5rbm93bjtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH0gZWxzZSBpZiAoY2Muc3lzLmlzQnJvd3Nlcikge1xyXG4gICAgICAgICAgICB0aGlzLnBsYXRmb3JtX3R5cGUgPSBMUVBsYXRmb3JtVHlwZS5icm93c2VyO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgc3RhdGljIGdldF9wbGF0Zm9ybSgpOiBMUVBsYXRmb3JtVHlwZSB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMucGxhdGZvcm1fdHlwZTtcclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgc3RhdGljIGdldF9ieXRlX2RhbmNlKCk6IExRQnl0ZURhbmNlVHlwZSB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuYnl0ZV9kYW5jZV90eXBlO1xyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyBzdGF0aWMgaXNfd3goKSB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMucGxhdGZvcm1fdHlwZSA9PT0gTFFQbGF0Zm9ybVR5cGUud3g7XHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIHN0YXRpYyBpc190dCgpIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5wbGF0Zm9ybV90eXBlID09PSBMUVBsYXRmb3JtVHlwZS50dDtcclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgc3RhdGljIGlzX29wcG8oKSB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMucGxhdGZvcm1fdHlwZSA9PT0gTFFQbGF0Zm9ybVR5cGUub3BwbztcclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgc3RhdGljIGlzX3Zpdm8oKSB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMucGxhdGZvcm1fdHlwZSA9PT0gTFFQbGF0Zm9ybVR5cGUudml2bztcclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgc3RhdGljIGlzX292KCkge1xyXG4gICAgICAgIHJldHVybiB0aGlzLnBsYXRmb3JtX3R5cGUgPT09IExRUGxhdGZvcm1UeXBlLm9wcG8gfHwgdGhpcy5wbGF0Zm9ybV90eXBlID09PSBMUVBsYXRmb3JtVHlwZS52aXZvO1xyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyBzdGF0aWMgaXNfYnJvd3NlcigpIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5wbGF0Zm9ybV90eXBlID09PSBMUVBsYXRmb3JtVHlwZS5icm93c2VyO1xyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyBzdGF0aWMgaXNfYW5kcm9pZCgpIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5wbGF0Zm9ybV90eXBlID09PSBMUVBsYXRmb3JtVHlwZS5hbmRyb2lkO1xyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyBzdGF0aWMgaXNfaW9zKCkge1xyXG4gICAgICAgIHJldHVybiB0aGlzLnBsYXRmb3JtX3R5cGUgPT09IExRUGxhdGZvcm1UeXBlLmlvcztcclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgc3RhdGljIGlzX25hdGl2ZSgpIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5wbGF0Zm9ybV90eXBlID09PSBMUVBsYXRmb3JtVHlwZS5hbmRyb2lkIHx8IHRoaXMucGxhdGZvcm1fdHlwZSA9PT0gTFFQbGF0Zm9ybVR5cGUuaW9zO1xyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyBzdGF0aWMgaXNfcXEoKSB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMucGxhdGZvcm1fdHlwZSA9PT0gTFFQbGF0Zm9ybVR5cGUucXE7XHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIHN0YXRpYyBpc19iYWlkdSgpIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5wbGF0Zm9ybV90eXBlID09PSBMUVBsYXRmb3JtVHlwZS5iYWlkdTtcclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgc3RhdGljIGlzX2t3YWlnYW1lKCkge1xyXG4gICAgICAgIHJldHVybiB0aGlzLnBsYXRmb3JtX3R5cGUgPT09IExRUGxhdGZvcm1UeXBlLmt3YWlnYW1lO1xyXG4gICAgfVxyXG59XHJcblxyXG5MUVBsYXRmb3JtVXRpbC5pbml0KCk7XHJcbmlmIChMUVBsYXRmb3JtVXRpbC5pc190dCgpKSB7XHJcbiAgICAvLyBjb25zb2xlLmxvZygnLS0tLS0tLS0t5b2T5YmN5bmz5Y+wOicgKyBMUVBsYXRmb3JtVXRpbC5nZXRfYnl0ZV9kYW5jZSgpKTtcclxufSBlbHNlIHtcclxuICAgIC8vIGNvbnNvbGUubG9nKCctLS0tLS0tLS3lvZPliY3lubPlj7A6JyArIExRUGxhdGZvcm1VdGlsLmdldF9wbGF0Zm9ybSgpKTtcclxufVxyXG4iXX0= +//------QC-SOURCE-SPLIT------ + + (function() { + var nodeEnv = typeof require !== 'undefined' && typeof process !== 'undefined'; + var __module = nodeEnv ? module : {exports:{}}; + var __filename = 'preview-scripts/assets/Script/prop/Key.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, '92465qnUTJDw5STq1t7oelo', 'Key'); +// Script/prop/Key.ts + +"use strict"; +// Learn TypeScript: +// - https://docs.cocos.com/creator/manual/en/scripting/typescript.html +// Learn Attribute: +// - https://docs.cocos.com/creator/manual/en/scripting/reference/attributes.html +// Learn life-cycle callbacks: +// - https://docs.cocos.com/creator/manual/en/scripting/life-cycle-callbacks.html +var __extends = (this && this.__extends) || (function () { + var extendStatics = function (d, b) { + extendStatics = Object.setPrototypeOf || + ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) || + function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; }; + return extendStatics(d, b); + }; + return function (d, b) { + extendStatics(d, b); + function __() { this.constructor = d; } + d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); + }; +})(); +var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) { + var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; + if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc); + else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; + return c > 3 && r && Object.defineProperty(target, key, r), r; +}; +Object.defineProperty(exports, "__esModule", { value: true }); +var Map_1 = require("../Map"); +var _a = cc._decorator, ccclass = _a.ccclass, property = _a.property; +var Key = /** @class */ (function (_super) { + __extends(Key, _super); + function Key() { + var _this = _super !== null && _super.apply(this, arguments) || this; + _this.time = 60; + return _this; + // update (dt) {} + } + // mapInfo: number[][] = []; + Key.prototype.onLoad = function () { + }; + Key.prototype.start = function () { + }; + Key.prototype.init = function (time) { + if (time) + this.time = time; + this.node.getChildByName("time").active = true; + this.node.getChildByName("time").getComponent(cc.Label).string = this.time.toString(); + this.schedule(this.updateTime, 1); + }; + Key.prototype.updateTime = function () { + this.time--; + this.node.getChildByName("time").getComponent(cc.Label).string = this.time.toString(); + if (this.time <= 0) { + this.unschedule(this.updateTime); + this.node.destroy(); + Map_1.default._instance.failLevel(); + // this.node.destroy(); + } + }; + Key = __decorate([ + ccclass + ], Key); + return Key; +}(cc.Component)); +exports.default = Key; cc._RF.pop(); } @@ -17915,11 +11452,7 @@ cc._RF.pop(); }); } })(); -<<<<<<< HEAD -//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImFzc2V0c1xcU2NyaXB0XFxTZGtcXE1pbmlHYW1lU2RrLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBOztHQUVHO0FBQ0gsSUFBaUIsV0FBVyxDQXlxQzNCO0FBenFDRCxXQUFpQixXQUFXO0lBWXhCLFNBQWdCLFFBQVE7UUFDcEIsWUFBWTtRQUNaLE9BQU8sTUFBTSxDQUFDLEVBQUUsS0FBSyxJQUFJLElBQUksTUFBTSxDQUFDLEVBQUUsS0FBSyxTQUFTLENBQUM7SUFDekQsQ0FBQztJQUhlLG9CQUFRLFdBR3ZCLENBQUE7SUFFRCxTQUFnQixXQUFXO1FBQ3ZCLFlBQVk7UUFDWixPQUFPLE1BQU0sQ0FBQyxFQUFFLEtBQUssSUFBSSxJQUFJLE1BQU0sQ0FBQyxFQUFFLEtBQUssU0FBUyxDQUFDO0lBQ3pELENBQUM7SUFIZSx1QkFBVyxjQUcxQixDQUFBO0lBR0QsU0FBUyxhQUFhO1FBQ2xCLElBQUksR0FBUSxDQUFDO1FBQ2IsSUFBSSxRQUFRLEVBQUUsRUFBRTtZQUNaLGFBQWE7WUFDYixHQUFHLEdBQUcsRUFBRSxDQUFDLGlCQUFpQixFQUFFLENBQUM7U0FDaEM7YUFBTSxJQUFJLFdBQVcsRUFBRSxFQUFFO1lBQ3RCLGFBQWE7WUFDYixHQUFHLEdBQUcsRUFBRSxDQUFDLGlCQUFpQixFQUFFLENBQUM7U0FDaEM7UUFFRCxJQUFJLElBQUksR0FBVSxFQUFFLEtBQUssRUFBRSxDQUFDLEVBQUUsTUFBTSxFQUFFLENBQUMsRUFBRSxDQUFDO1FBQzFDLElBQUksR0FBRyxFQUFFO1lBQ0wsSUFBSSxDQUFDLEtBQUssR0FBRyxHQUFHLENBQUMsV0FBVyxDQUFDO1lBQzdCLElBQUksQ0FBQyxNQUFNLEdBQUcsR0FBRyxDQUFDLFlBQVksQ0FBQztTQUNsQztRQUVELE9BQU8sSUFBSSxDQUFDO0lBQ2hCLENBQUM7SUFFRDs7T0FFRztJQUNIO1FBUUksd0JBQVksS0FBYTtZQUNyQixJQUFJLENBQUMsTUFBTSxHQUFHLEtBQUssQ0FBQztRQUN4QixDQUFDO1FBTkQsc0JBQUksaUNBQUs7aUJBQVQ7Z0JBQ0ksT0FBTyxJQUFJLENBQUMsTUFBTSxDQUFDO1lBQ3ZCLENBQUM7OztXQUFBO1FBTUQsNkJBQUksR0FBSjtZQUFBLGlCQXdDQzs7WUF2Q0csYUFBYTtZQUNiLElBQUksUUFBUSxFQUFFLElBQUksQ0FBQyxFQUFFLENBQUMsb0JBQW9CLEVBQUU7Z0JBQ3hDLE9BQU8sQ0FBQyxJQUFJLENBQUMsbUNBQW1DLENBQUMsQ0FBQztnQkFDbEQsSUFBSSxDQUFDLGFBQWEsR0FBRyxJQUFJLENBQUM7Z0JBQzFCLE9BQU87YUFDVjtZQUVELGFBQWE7WUFDYixJQUFJLFdBQVcsRUFBRSxJQUFJLENBQUMsRUFBRSxDQUFDLG9CQUFvQixFQUFFO2dCQUMzQyxPQUFPLENBQUMsSUFBSSxDQUFDLHNDQUFzQyxDQUFDLENBQUM7Z0JBQ3JELElBQUksQ0FBQyxhQUFhLEdBQUcsSUFBSSxDQUFDO2dCQUMxQixPQUFPO2FBQ1Y7WUFHRCxJQUFJLElBQUksQ0FBQyxhQUFhLEVBQUU7Z0JBQ3BCLElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxFQUFFLENBQUM7YUFDN0I7aUJBQU07Z0JBQ0gsSUFBSSxRQUFRLEVBQUUsRUFBRTtvQkFDWixhQUFhO29CQUNiLElBQUksQ0FBQyxhQUFhLEdBQUcsRUFBRSxDQUFDLG9CQUFvQixDQUFDLEVBQUUsUUFBUSxFQUFFLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQyxDQUFDO2lCQUMzRTtxQkFBTSxJQUFJLFdBQVcsRUFBRSxFQUFFO29CQUN0QixhQUFhO29CQUNiLElBQUksQ0FBQyxhQUFhLEdBQUcsRUFBRSxDQUFDLG9CQUFvQixDQUFDLEVBQUUsUUFBUSxFQUFFLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQyxDQUFDO2lCQUMzRTtxQkFBTTtvQkFDSCxJQUFJLENBQUMsYUFBYSxHQUFHLElBQUksQ0FBQztpQkFDN0I7Z0JBRUQsTUFBQSxJQUFJLENBQUMsYUFBYSwwQ0FBRSxNQUFNLENBQUM7b0JBQ3ZCLE9BQU8sQ0FBQyxHQUFHLENBQUMsOEJBQThCLENBQUMsQ0FBQztvQkFDNUMsS0FBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxLQUFLLENBQUMsVUFBQyxHQUFRO3dCQUNyQyxPQUFPLENBQUMsR0FBRyxDQUFDLDhCQUE4QixFQUFFLEdBQUcsQ0FBQyxDQUFDO29CQUNyRCxDQUFDLENBQUMsQ0FBQztnQkFDUCxDQUFDLEVBQUU7Z0JBRUgsTUFBQSxJQUFJLENBQUMsYUFBYSwwQ0FBRSxPQUFPLENBQUMsVUFBQyxHQUFRO29CQUNqQyxPQUFPLENBQUMsR0FBRyxDQUFDLDJCQUEyQixFQUFFLEdBQUcsQ0FBQyxDQUFDO2dCQUNsRCxDQUFDLEVBQUU7YUFDTjtRQUNMLENBQUM7UUFDRCxnQ0FBTyxHQUFQOztZQUNJLE1BQUEsSUFBSSxDQUFDLGFBQWEsMENBQUUsT0FBTyxHQUFHO1FBQ2xDLENBQUM7UUFDTCxxQkFBQztJQUFELENBeERBLEFBd0RDLElBQUE7SUFFRDtRQVFJOzs7Ozs7O1dBT0c7UUFDSCxrQkFBWSxLQUFhLEVBQUUsS0FBMEIsRUFBRSxXQUF5QixFQUFFLFFBQXlCO1lBQXBELDRCQUFBLEVBQUEsaUJBQXlCO1lBQUUseUJBQUEsRUFBQSxnQkFBeUI7WUFDdkcsSUFBSSxDQUFDLE1BQU0sR0FBRyxLQUFLLENBQUM7WUFDcEIsSUFBSSxDQUFDLE1BQU0sQ0FBQyxRQUFRLEVBQUUsV0FBVyxFQUFFLEtBQUssQ0FBQyxDQUFDLENBQUMsWUFBWTtRQUMzRCxDQUFDO1FBZkQsc0JBQUksMkJBQUs7aUJBQVQ7Z0JBQ0ksT0FBTyxJQUFJLENBQUMsTUFBTSxDQUFDO1lBQ3ZCLENBQUM7OztXQUFBO1FBZU8seUJBQU0sR0FBZCxVQUFlLFFBQWlCLEVBQUUsV0FBbUIsRUFBRSxLQUEwQjtZQUFqRixpQkE0Q0M7O1lBM0NHLElBQUksQ0FBQyxRQUFRLEVBQUUsSUFBSSxDQUFDLFdBQVcsRUFBRSxFQUFFO2dCQUMvQixJQUFJLENBQUMsT0FBTyxHQUFHLElBQUksQ0FBQztnQkFDcEIsT0FBTzthQUNWO1lBRUQsSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDO1lBRWYsSUFBSSxPQUFPLEdBQUcsYUFBYSxFQUFFLENBQUM7WUFFOUIsSUFBSSxNQUFNLEdBQUcsV0FBVyxHQUFHLEdBQUcsQ0FBQztZQUMvQixJQUFJLEdBQUcsR0FBRyxDQUFDLEVBQUUsSUFBSSxHQUFHLENBQUMsQ0FBQztZQUV0QixJQUFJLE9BQU8sS0FBSyxLQUFLLFNBQVMsRUFBRTtnQkFDNUIsSUFBSSxHQUFHLENBQUMsT0FBTyxDQUFDLEtBQUssR0FBRyxXQUFXLENBQUMsR0FBRyxDQUFDLENBQUE7Z0JBQ3hDLEdBQUcsR0FBRyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsTUFBTSxHQUFHLE1BQU0sQ0FBQyxDQUFDO2FBQy9DO2lCQUFNO2dCQUNILElBQUksR0FBRyxLQUFLLENBQUMsSUFBSSxDQUFDO2dCQUNsQixHQUFHLEdBQUcsS0FBSyxDQUFDLEdBQUcsQ0FBQzthQUNuQjtZQUVELElBQUksTUFBTSxHQUFHO2dCQUNULFFBQVEsRUFBRSxJQUFJLENBQUMsTUFBTTtnQkFDckIsV0FBVyxFQUFFLEVBQUU7Z0JBQ2YsS0FBSyxFQUFFLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEtBQUssRUFBRSxXQUFXLEVBQUU7YUFDdEQsQ0FBQTtZQUVELElBQUksUUFBUSxFQUFFLEVBQUU7Z0JBQ1osYUFBYTtnQkFDYixJQUFJLENBQUMsT0FBTyxHQUFHLEVBQUUsQ0FBQyxjQUFjLENBQUMsTUFBTSxDQUFDLENBQUM7YUFDNUM7aUJBQU0sSUFBSSxXQUFXLEVBQUUsRUFBRTtnQkFDdEIsYUFBYTtnQkFDYixJQUFJLENBQUMsT0FBTyxHQUFHLEVBQUUsQ0FBQyxjQUFjLENBQUMsTUFBTSxDQUFDLENBQUM7YUFDNUM7aUJBQU07Z0JBQ0gsSUFBSSxDQUFDLE9BQU8sR0FBRyxJQUFJLENBQUM7YUFDdkI7WUFFRCxNQUFBLElBQUksQ0FBQyxPQUFPLDBDQUFFLE9BQU8sQ0FBQyxVQUFDLEdBQVE7Z0JBQzNCLE9BQU8sQ0FBQyxHQUFHLENBQUMsa0JBQWtCLEVBQUUsR0FBRyxDQUFDLENBQUM7WUFDekMsQ0FBQyxFQUFFO1lBRUgsTUFBQSxJQUFJLENBQUMsT0FBTywwQ0FBRSxNQUFNLENBQUM7Z0JBQ2pCLFFBQVEsSUFBSSxLQUFJLENBQUMsT0FBTyxDQUFDLElBQUksRUFBRSxDQUFDO1lBQ3BDLENBQUMsRUFBRTtRQUNQLENBQUM7UUFFRCx1QkFBSSxHQUFKOztZQUNJLE1BQUEsSUFBSSxDQUFDLE9BQU8sMENBQUUsSUFBSSxHQUFHO1FBQ3pCLENBQUM7UUFFRCx1QkFBSSxHQUFKOztZQUNJLE1BQUEsSUFBSSxDQUFDLE9BQU8sMENBQUUsSUFBSSxHQUFHO1FBQ3pCLENBQUM7UUFFRCwwQkFBTyxHQUFQOztZQUNJLE1BQUEsSUFBSSxDQUFDLE9BQU8sMENBQUUsT0FBTyxHQUFHO1FBQzVCLENBQUM7UUFDTCxlQUFDO0lBQUQsQ0E5RUEsQUE4RUMsSUFBQTtJQUVEO1FBT0k7Ozs7OztXQU1HO1FBQ0gsa0JBQVksS0FBYSxFQUFFLEdBQWUsRUFBRSxJQUFnQixFQUFFLEtBQW1CO1lBQXRELG9CQUFBLEVBQUEsT0FBZTtZQUFFLHFCQUFBLEVBQUEsUUFBZ0I7WUFBRSxzQkFBQSxFQUFBLFdBQW1CO1lBQzdFLElBQUksQ0FBQyxNQUFNLEdBQUcsS0FBSyxDQUFDO1lBQ3BCLElBQUksQ0FBQyxjQUFjLENBQUMsR0FBRyxFQUFFLElBQUksRUFBRSxLQUFLLENBQUMsQ0FBQztRQUMxQyxDQUFDO1FBYkQsc0JBQUksMkJBQUs7aUJBQVQ7Z0JBQ0ksT0FBTyxJQUFJLENBQUMsTUFBTSxDQUFDO1lBQ3ZCLENBQUM7OztXQUFBO1FBYU8saUNBQWMsR0FBdEIsVUFBdUIsR0FBVyxFQUFFLElBQVksRUFBRSxLQUFhOztZQUMzRCxJQUFJLENBQUMsUUFBUSxFQUFFLEVBQUUsRUFBRSxnQ0FBZ0M7Z0JBQy9DLElBQUksQ0FBQyxTQUFTLEdBQUcsSUFBSSxDQUFDO2dCQUN0QixPQUFPLENBQUMsR0FBRyxDQUFDLCtCQUErQixDQUFDLENBQUM7Z0JBQzdDLE9BQU87YUFDVjtZQUVELElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQztZQUNmLG1DQUFtQztZQUNuQyxpQ0FBaUM7WUFDakMsK0NBQStDO1lBQy9DLGlEQUFpRDtZQUVqRCxhQUFhO1lBQ2IsSUFBSSxDQUFDLFNBQVMsR0FBRyxFQUFFLENBQUMsY0FBYyxDQUFDO2dCQUMvQixRQUFRLEVBQUUsSUFBSSxDQUFDLE1BQU07Z0JBQ3JCLFlBQVk7Z0JBQ1osS0FBSyxFQUFFLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUU7YUFDL0MsQ0FBQyxDQUFDO1lBRUgsTUFBQSxJQUFJLENBQUMsU0FBUywwQ0FBRSxPQUFPLENBQUMsVUFBQyxHQUFRO2dCQUM3QixPQUFPLENBQUMsR0FBRyxDQUFDLGtCQUFrQixFQUFFLEdBQUcsQ0FBQyxDQUFDO1lBQ3pDLENBQUMsRUFBRTtRQUNQLENBQUM7UUFDRCx1QkFBSSxHQUFKOztZQUNJLE1BQUEsSUFBSSxDQUFDLFNBQVMsMENBQUUsSUFBSSxHQUFHO1FBQzNCLENBQUM7UUFFRCx1QkFBSSxHQUFKOztZQUNJLE1BQUEsSUFBSSxDQUFDLFNBQVMsMENBQUUsSUFBSSxHQUFHO1FBQzNCLENBQUM7UUFFRCwwQkFBTyxHQUFQOztZQUNJLE1BQUEsSUFBSSxDQUFDLFNBQVMsMENBQUUsT0FBTyxHQUFHO1FBQzlCLENBQUM7UUFDTCxlQUFDO0lBQUQsQ0F0REEsQUFzREMsSUFBQTtJQUdEOztPQUVHO0lBQ0gsSUFBWSxjQWVYO0lBZkQsV0FBWSxjQUFjO1FBQ3RCOztXQUVHO1FBQ0gsdURBQU0sQ0FBQTtRQUVOOztXQUVHO1FBQ0gsdURBQU0sQ0FBQTtRQUVOOztXQUVHO1FBQ0gscURBQUssQ0FBQTtJQUNULENBQUMsRUFmVyxjQUFjLEdBQWQsMEJBQWMsS0FBZCwwQkFBYyxRQWV6QjtJQUVEO1FBUUksaUJBQVksS0FBYTtZQU5qQixhQUFRLEdBQVEsSUFBSSxDQUFDO1lBT3pCLElBQUksQ0FBQyxNQUFNLEdBQUcsS0FBSyxDQUFDO1FBQ3hCLENBQUM7UUFORCxzQkFBSSwwQkFBSztpQkFBVDtnQkFDSSxPQUFPLElBQUksQ0FBQyxNQUFNLENBQUM7WUFDdkIsQ0FBQzs7O1dBQUE7UUFNRDs7Ozs7O1dBTUc7UUFDSCxzQkFBSSxHQUFKLFVBQUssUUFBc0QsRUFBRSxNQUFZLEVBQUUsYUFBeUI7WUFBcEcsaUJBbUVDOztZQW5FMEUsOEJBQUEsRUFBQSxpQkFBeUI7WUFDaEcsSUFBSSxRQUFRLEdBQUcsVUFBQyxLQUFxQixFQUFFLEtBQWE7Z0JBQ2hELFFBQVEsYUFBUixRQUFRLHVCQUFSLFFBQVEsQ0FBRSxJQUFJLENBQUMsTUFBTSxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUU7WUFDekMsQ0FBQyxDQUFBO1lBRUQsSUFBSSxDQUFDLFFBQVEsRUFBRSxJQUFJLENBQUMsV0FBVyxFQUFFLEVBQUU7Z0JBQy9CLFFBQVEsQ0FBQyxjQUFjLENBQUMsTUFBTSxFQUFFLENBQUMsQ0FBQyxDQUFDO2dCQUNuQyxJQUFJLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQztnQkFDckIsT0FBTzthQUNWO1lBRUQsSUFBSSxlQUFlLEdBQUcsVUFBQyxHQUFROztnQkFDM0IsTUFBQSxLQUFJLENBQUMsUUFBUSwwQ0FBRSxRQUFRLENBQUMsZUFBZSxFQUFFO2dCQUN6QyxJQUFJLFFBQVEsRUFBRSxFQUFFO29CQUNaLElBQUksR0FBRyxJQUFJLEdBQUcsQ0FBQyxPQUFPLElBQUksR0FBRyxLQUFLLFNBQVMsRUFBRTt3QkFDekMsUUFBUSxDQUFDLGNBQWMsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxDQUFDLENBQUM7cUJBQ3RDO3lCQUFNO3dCQUNILFFBQVEsQ0FBQyxjQUFjLENBQUMsTUFBTSxFQUFFLENBQUMsQ0FBQyxDQUFDO3FCQUN0QztpQkFDSjtxQkFBTSxJQUFJLFdBQVcsRUFBRSxFQUFFO29CQUN0QixJQUFJLFlBQVksR0FBRyxHQUEwQyxDQUFDO29CQUM5RCxJQUFJLFlBQVksSUFBSSxZQUFZLENBQUMsS0FBSyxHQUFHLENBQUMsRUFBRTt3QkFDeEMsUUFBUSxDQUFDLGNBQWMsQ0FBQyxNQUFNLEVBQUUsWUFBWSxDQUFDLEtBQUssQ0FBQyxDQUFDO3FCQUN2RDt5QkFBTTt3QkFDSCxRQUFRLENBQUMsY0FBYyxDQUFDLE1BQU0sRUFBRSxDQUFDLENBQUMsQ0FBQztxQkFDdEM7aUJBQ0o7WUFDTCxDQUFDLENBQUE7WUFFRCxNQUFBLElBQUksQ0FBQyxRQUFRLDBDQUFFLFFBQVEsQ0FBQyxlQUFlLEVBQUU7WUFFekMsSUFBSSxRQUFRLEVBQUUsRUFBRTtnQkFDWixhQUFhO2dCQUNiLElBQUksQ0FBQyxRQUFRLEdBQUcsRUFBRSxDQUFDLHFCQUFxQixDQUFDO29CQUNyQyxRQUFRLEVBQUUsSUFBSSxDQUFDLE1BQU07aUJBQ3hCLENBQUMsQ0FBQzthQUNOO2lCQUFNLElBQUksV0FBVyxFQUFFLEVBQUU7Z0JBQ3RCLGFBQWE7Z0JBQ2IsSUFBSSxDQUFDLFFBQVEsR0FBRyxFQUFFLENBQUMscUJBQXFCLENBQUM7b0JBQ3JDLFFBQVEsRUFBRSxJQUFJLENBQUMsTUFBTTtvQkFDckIsUUFBUSxFQUFFLElBQUk7b0JBQ2QsaUJBQWlCLEVBQUUsQ0FBQyxPQUFPLEVBQUUsUUFBUSxFQUFFLFFBQVEsQ0FBQztvQkFDaEQsbUJBQW1CLEVBQUUsYUFBYTtpQkFDckMsQ0FBQyxDQUFDO2FBQ047aUJBQU07Z0JBQ0gsSUFBSSxDQUFDLFFBQVEsR0FBRyxJQUFJLENBQUM7YUFDeEI7WUFHRCxNQUFBLElBQUksQ0FBQyxRQUFRLDBDQUFFLE1BQU0sQ0FBQztnQkFDbEIsT0FBTyxDQUFDLEdBQUcsQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDO1lBQ25DLENBQUMsRUFBRTtZQUVILE1BQUEsSUFBSSxDQUFDLFFBQVEsMENBQUUsT0FBTyxDQUFDLFVBQUMsR0FBd0M7Z0JBQzVELE9BQU8sQ0FBQyxHQUFHLENBQUMsaUJBQWlCLEVBQUUsR0FBRyxDQUFDLENBQUM7Z0JBQ3BDLFFBQVEsQ0FBQyxjQUFjLENBQUMsS0FBSyxFQUFFLENBQUMsQ0FBQyxDQUFDO1lBQ3RDLENBQUMsRUFBRTtZQUVILE1BQUEsSUFBSSxDQUFDLFFBQVEsMENBQUUsT0FBTyxDQUFDLGVBQWUsRUFBRTtZQUV4QyxNQUFBLElBQUksQ0FBQyxRQUFRLDBDQUFFLElBQUksR0FBRyxLQUFLLENBQUM7O2dCQUN4QixNQUFBLEtBQUksQ0FBQyxRQUFRLDBDQUFFLElBQUksR0FBRyxJQUFJLENBQUMsbUNBQ3ZCLEtBQUksQ0FBQyxRQUFRLDBDQUFFLElBQUksS0FBRSxFQUFFLEtBQUssQ0FBQyxVQUFDLEdBQXdDO29CQUNsRSxPQUFPLENBQUMsR0FBRyxDQUFDLHVCQUF1QixFQUFFLEdBQUcsQ0FBQyxDQUFDO29CQUMxQyxRQUFRLENBQUMsY0FBYyxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUMsQ0FBQztnQkFDdEMsQ0FBQyxFQUFFO1lBQ1gsQ0FBQyxFQUFFO1FBQ1AsQ0FBQztRQUVELHlCQUFPLEdBQVA7O1lBQ0ksTUFBQSxJQUFJLENBQUMsUUFBUSwwQ0FBRSxPQUFPLEdBQUc7UUFDN0IsQ0FBQztRQUNMLGNBQUM7SUFBRCxDQTNGQSxBQTJGQyxJQUFBO0lBRUQsSUFBWSxpQkFVWDtJQVZELFdBQVksaUJBQWlCO1FBQ3pCOztXQUVHO1FBQ0gsdURBQUcsQ0FBQTtRQUVIOztXQUVHO1FBQ0gsNkRBQU0sQ0FBQTtJQUNWLENBQUMsRUFWVyxpQkFBaUIsR0FBakIsNkJBQWlCLEtBQWpCLDZCQUFpQixRQVU1QjtJQUVEO1FBZ0JJO1lBRlEsYUFBUSxHQUE2QixFQUFFLENBQUM7UUFJaEQsQ0FBQztRQWRELHNCQUFXLHlCQUFRO2lCQUFuQjtnQkFDSSxJQUFJLENBQUMsYUFBYSxDQUFDLFNBQVMsRUFBRTtvQkFDMUIsYUFBYSxDQUFDLFNBQVMsR0FBRyxJQUFJLGFBQWEsRUFBRSxDQUFDO2lCQUNqRDtnQkFDRCxPQUFPLGFBQWEsQ0FBQyxTQUFTLENBQUM7WUFDbkMsQ0FBQzs7O1dBQUE7UUFXRDs7Ozs7O1dBTUc7UUFDSSxrQ0FBVSxHQUFqQixVQUFrQixLQUFhLEVBQUUsUUFBK0QsRUFBRSxLQUFtQjs7WUFBcEYseUJBQUEsRUFBQSxXQUEwQyxpQkFBaUIsQ0FBQyxHQUFHO1lBQUUsc0JBQUEsRUFBQSxXQUFtQjtZQUNqSCxNQUFBLElBQUksQ0FBQyxPQUFPLDBDQUFFLE9BQU8sR0FBRztZQUN4QixJQUFJLElBQUksR0FBVSxhQUFhLEVBQUUsQ0FBQztZQUNsQyxpRUFBaUU7WUFDakUsSUFBSSxLQUFLLEdBQUcsSUFBSSxDQUFDLEtBQUssR0FBRyxLQUFLLENBQUM7WUFDL0IsS0FBSyxHQUFHLEtBQUssR0FBRyxHQUFHLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsUUFBUTtZQUMzQyxLQUFLLEdBQUcsS0FBSyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLE9BQU87WUFDeEQsSUFBSSxDQUFDLE9BQU8sR0FBRyxPQUFPLFFBQVEsS0FBSyxRQUFRLENBQUMsQ0FBQyxDQUFDLElBQUksUUFBUSxDQUFDLEtBQUssRUFBRSxRQUFRLEtBQUssaUJBQWlCLENBQUMsR0FBRyxFQUFFLEtBQUssRUFBRSxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxRQUFRLENBQUMsS0FBSyxFQUFFLFFBQVEsRUFBRSxLQUFLLEVBQUUsS0FBSyxDQUFDLENBQUM7UUFDdEssQ0FBQztRQUVEOztXQUVHO1FBQ0ksa0NBQVUsR0FBakI7WUFDSSxJQUFJLElBQUksQ0FBQyxPQUFPLEVBQUU7Z0JBQ2QsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLEVBQUUsQ0FBQzthQUN2QjtpQkFBTTtnQkFDSCxPQUFPLENBQUMsSUFBSSxDQUFDLG1FQUFtRSxDQUFDLENBQUM7YUFDckY7UUFDTCxDQUFDO1FBRUQ7O1dBRUc7UUFDSSxrQ0FBVSxHQUFqQjs7WUFDSSxNQUFBLElBQUksQ0FBQyxPQUFPLDBDQUFFLElBQUksR0FBRztRQUN6QixDQUFDO1FBRUQ7OztXQUdHO1FBQ0ksd0NBQWdCLEdBQXZCLFVBQXdCLEtBQWE7O1lBQ2pDLElBQUksSUFBSSxDQUFDLGFBQWEsSUFBSSxJQUFJLENBQUMsYUFBYSxDQUFDLEtBQUssS0FBSyxLQUFLLEVBQUU7Z0JBQzFELElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxFQUFFLENBQUM7YUFDN0I7aUJBQU07Z0JBQ0gsTUFBQSxJQUFJLENBQUMsYUFBYSwwQ0FBRSxPQUFPLEdBQUc7Z0JBQzlCLElBQUksQ0FBQyxhQUFhLEdBQUcsSUFBSSxjQUFjLENBQUMsS0FBSyxDQUFDLENBQUM7Z0JBQy9DLElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxFQUFFLENBQUM7YUFDN0I7UUFDTCxDQUFDO1FBRUQ7Ozs7OztXQU1HO1FBQ0ksa0NBQVUsR0FBakIsVUFBa0IsS0FBYSxFQUFFLFFBQXlDLEVBQUUsS0FBaUI7WUFBNUQseUJBQUEsRUFBQSxhQUF3QixHQUFHLEVBQUUsQ0FBQyxFQUFFLElBQUksRUFBRSxDQUFDLEVBQUU7WUFBRSxzQkFBQSxFQUFBLFNBQWlCO1lBQ3pGLDJCQUEyQjtZQUMzQiwwRUFBMEU7WUFDMUUsSUFBSSxJQUFJLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxFQUFFO2dCQUN0QixPQUFPLENBQUMsR0FBRyxDQUFJLEtBQUssc0JBQW1CLENBQUMsQ0FBQztnQkFDekMsT0FBTzthQUNWO1lBRUQsSUFBSSxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsR0FBRyxJQUFJLFFBQVEsQ0FBQyxLQUFLLEVBQUUsUUFBUSxDQUFDLEdBQUcsRUFBRSxRQUFRLENBQUMsSUFBSSxFQUFFLEtBQUssQ0FBQyxDQUFDO1FBQ25GLENBQUM7UUFFRDs7Ozs7O1dBTUc7UUFDSSxrQ0FBVSxHQUFqQixVQUFrQixLQUFhO1lBQzNCLElBQUksSUFBSSxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsRUFBRTtnQkFDdEIsSUFBSSxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsQ0FBQyxJQUFJLEVBQUUsQ0FBQzthQUMvQjtpQkFBTTtnQkFDSCxPQUFPLENBQUMsSUFBSSxDQUFDLHVCQUFxQixLQUFLLGlDQUE4QixDQUFDLENBQUM7YUFDMUU7UUFDTCxDQUFDO1FBRUQ7Ozs7Ozs7V0FPRztRQUNJLGtDQUFVLEdBQWpCLFVBQWtCLEtBQWE7WUFDM0IsSUFBSSxJQUFJLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxFQUFFO2dCQUN0QixJQUFJLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxDQUFDLElBQUksRUFBRSxDQUFDO2FBQy9CO2lCQUFNO2dCQUNILE9BQU8sQ0FBQyxJQUFJLENBQUMsdUJBQXFCLEtBQUssaUNBQThCLENBQUMsQ0FBQzthQUMxRTtRQUNMLENBQUM7UUFFRDs7Ozs7O1dBTUc7UUFDSSxpQ0FBUyxHQUFoQixVQUFpQixLQUFhLEVBQUUsYUFBMkQsRUFBRSxNQUFZLEVBQUUsYUFBeUI7O1lBQXpCLDhCQUFBLEVBQUEsaUJBQXlCO1lBQ2hJLElBQUksSUFBSSxDQUFDLE1BQU0sSUFBSSxJQUFJLENBQUMsTUFBTSxDQUFDLEtBQUssS0FBSyxLQUFLLEVBQUU7Z0JBQzVDLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLGFBQWEsRUFBRSxNQUFNLEVBQUUsYUFBYSxDQUFDLENBQUM7YUFDMUQ7aUJBQU07Z0JBQ0gsTUFBQSxJQUFJLENBQUMsTUFBTSwwQ0FBRSxPQUFPLEdBQUc7Z0JBQ3ZCLElBQUksQ0FBQyxNQUFNLEdBQUcsSUFBSSxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUM7Z0JBQ2pDLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLGFBQWEsRUFBRSxNQUFNLEVBQUUsYUFBYSxDQUFDLENBQUM7YUFDMUQ7UUFDTCxDQUFDO1FBRUQ7O1dBRUc7UUFDSSxrQ0FBVSxHQUFqQjs7WUFDSSxNQUFBLElBQUksQ0FBQyxPQUFPLDBDQUFFLE9BQU8sR0FBRztZQUN4QixJQUFJLENBQUMsT0FBTyxHQUFHLElBQUksQ0FBQztZQUVwQixNQUFBLElBQUksQ0FBQyxhQUFhLDBDQUFFLE9BQU8sR0FBRztZQUM5QixJQUFJLENBQUMsYUFBYSxHQUFHLElBQUksQ0FBQztZQUUxQixNQUFBLElBQUksQ0FBQyxNQUFNLDBDQUFFLE9BQU8sR0FBRztZQUN2QixJQUFJLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQztZQUVuQixJQUFJLElBQUksQ0FBQyxRQUFRLEVBQUU7Z0JBQ2YsS0FBSyxJQUFJLEdBQUcsSUFBSSxJQUFJLENBQUMsUUFBUSxFQUFFO29CQUMzQixNQUFBLElBQUksQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLDBDQUFFLE9BQU8sR0FBRztpQkFDakM7Z0JBQ0QsSUFBSSxDQUFDLFFBQVEsR0FBRyxFQUFFLENBQUM7YUFDdEI7UUFDTCxDQUFDO1FBQ0wsb0JBQUM7SUFBRCxDQTNKQSxBQTJKQyxJQUFBO0lBM0pZLHlCQUFhLGdCQTJKekIsQ0FBQTtJQUVELElBQVksYUFZWDtJQVpELFdBQVksYUFBYTtRQUNyQixXQUFXO1FBQ1gsZ0NBQWUsQ0FBQTtRQUVmLFdBQVc7UUFDWCxnQ0FBZSxDQUFBO1FBRWYsbUJBQW1CO1FBQ25CLDhCQUFhLENBQUE7UUFFYixtQkFBbUI7UUFDbkIsZ0NBQWUsQ0FBQTtJQUNuQixDQUFDLEVBWlcsYUFBYSxHQUFiLHlCQUFhLEtBQWIseUJBQWEsUUFZeEI7SUFFRDtRQVlJO1FBRUEsQ0FBQztRQVhELHNCQUFXLG9CQUFRO2lCQUFuQjtnQkFDSSxJQUFJLENBQUMsSUFBSSxDQUFDLFNBQVMsRUFBRTtvQkFDakIsSUFBSSxDQUFDLFNBQVMsR0FBRyxJQUFJLFFBQVEsRUFBRSxDQUFDO2lCQUNuQztnQkFDRCxPQUFPLElBQUksQ0FBQyxTQUFTLENBQUM7WUFDMUIsQ0FBQzs7O1dBQUE7UUFRRDs7Ozs7O1dBTUc7UUFDSCx5QkFBTSxHQUFOLFVBQU8sSUFBeUMsRUFBRSxRQUF5QyxFQUFFLElBQXVDLEVBQUUsUUFBaUI7WUFBaEoscUJBQUEsRUFBQSxPQUFzQixhQUFhLENBQUMsS0FBSztZQUFFLHlCQUFBLEVBQUEsYUFBd0IsR0FBRyxFQUFFLENBQUMsRUFBRSxJQUFJLEVBQUUsQ0FBQyxFQUFFO1lBQUUscUJBQUEsRUFBQSxTQUFnQixLQUFLLEVBQUUsRUFBRSxFQUFFLE1BQU0sRUFBRSxFQUFFLEVBQUU7WUFDaEksSUFBSSxRQUFRLEVBQUUsRUFBRTtnQkFDWixhQUFhO2dCQUNiLElBQUksQ0FBQyxLQUFLLEdBQUcsRUFBRSxDQUFDLG9CQUFvQixDQUFDO29CQUNqQyxJQUFJLEVBQUUsSUFBSTtvQkFDVixLQUFLLEVBQUU7d0JBQ0gsSUFBSSxFQUFFLFFBQVEsQ0FBQyxJQUFJO3dCQUNuQixHQUFHLEVBQUUsUUFBUSxDQUFDLEdBQUc7d0JBQ2pCLEtBQUssRUFBRSxJQUFJLENBQUMsS0FBSzt3QkFDakIsTUFBTSxFQUFFLElBQUksQ0FBQyxNQUFNO3FCQUN0QjtvQkFDRCxRQUFRLEVBQUUsUUFBUTtpQkFDckIsQ0FBQyxDQUFDO2FBQ047UUFDTCxDQUFDO1FBRUQsdUJBQUksR0FBSjs7WUFDSSxNQUFBLElBQUksQ0FBQyxLQUFLLDBDQUFFLElBQUksR0FBRztRQUN2QixDQUFDO1FBRUQsdUJBQUksR0FBSjs7WUFDSSxNQUFBLElBQUksQ0FBQyxLQUFLLDBDQUFFLElBQUksR0FBRztRQUN2QixDQUFDO1FBRUQsMEJBQU8sR0FBUDs7WUFDSSxNQUFBLElBQUksQ0FBQyxLQUFLLDBDQUFFLE9BQU8sR0FBRztRQUMxQixDQUFDO1FBQ0wsZUFBQztJQUFELENBbERBLEFBa0RDLElBQUE7SUFsRFksb0JBQVEsV0FrRHBCLENBQUE7SUFHRDs7T0FFRztJQUNILElBQVksYUFVWDtJQVZELFdBQVksYUFBYTtRQUNyQjs7V0FFRztRQUNILG1EQUFLLENBQUE7UUFFTDs7V0FFRztRQUNILGlEQUFJLENBQUE7SUFDUixDQUFDLEVBVlcsYUFBYSxHQUFiLHlCQUFhLEtBQWIseUJBQWEsUUFVeEI7SUFJRzs7R0FFRDtJQUNIO1FBQUE7UUFtRkEsQ0FBQztRQWxGRzs7OztXQUlHO1FBQ0ksa0NBQWlCLEdBQXhCLFVBQXlCLFFBQW9DLEVBQUUsTUFBWTtZQUN2RSxJQUFJLENBQUMsV0FBVyxFQUFFLEVBQUU7Z0JBQ2hCLFFBQVEsYUFBUixRQUFRLHVCQUFSLFFBQVEsQ0FBRSxJQUFJLENBQUMsTUFBTSxFQUFFLEtBQUssRUFBRTtnQkFDOUIsT0FBTzthQUNWO1lBQ0QsYUFBYTtZQUNiLEVBQUUsQ0FBQyxNQUFNLENBQUMsVUFBQyxHQUFRO2dCQUNmLE9BQU8sQ0FBQyxHQUFHLENBQUMsb0JBQW9CLEVBQUUsR0FBRyxDQUFDLENBQUM7Z0JBQ3ZDLElBQUksR0FBRyxDQUFDLEtBQUssS0FBSyxRQUFRLEVBQUU7b0JBQ3hCLFFBQVEsYUFBUixRQUFRLHVCQUFSLFFBQVEsQ0FBRSxJQUFJLENBQUMsTUFBTSxFQUFFLElBQUksRUFBRTtvQkFDN0IsT0FBTyxDQUFDLEdBQUcsQ0FBQyxxQkFBcUIsQ0FBQyxDQUFDO2lCQUN0QztxQkFBTTtvQkFDSCxRQUFRLGFBQVIsUUFBUSx1QkFBUixRQUFRLENBQUUsSUFBSSxDQUFDLE1BQU0sRUFBRSxLQUFLLEVBQUU7b0JBQzlCLE9BQU8sQ0FBQyxHQUFHLENBQUMsaUNBQWlDLENBQUMsQ0FBQztpQkFDbEQ7WUFDTCxDQUFDLENBQUMsQ0FBQztZQUVILGFBQWE7WUFDYixJQUFJLE9BQU8sR0FBRyxFQUFFLENBQUMsb0JBQW9CLEVBQUUsQ0FBQztZQUN4QyxJQUFJLE9BQU8sSUFBSSxPQUFPLENBQUMsS0FBSyxLQUFLLFFBQVEsRUFBRTtnQkFDdkMsUUFBUSxhQUFSLFFBQVEsdUJBQVIsUUFBUSxDQUFFLElBQUksQ0FBQyxNQUFNLEVBQUUsSUFBSSxFQUFFO2FBQ2hDO1FBQ0wsQ0FBQztRQUVEOzs7OztXQUtHO1FBQ0ksNkJBQVksR0FBbkIsVUFBb0IsUUFBb0MsRUFBRSxNQUFZO1lBQ2xFLElBQUksQ0FBQyxXQUFXLEVBQUUsRUFBRTtnQkFDaEIsUUFBUSxhQUFSLFFBQVEsdUJBQVIsUUFBUSxDQUFFLElBQUksQ0FBQyxNQUFNLEVBQUUsS0FBSyxFQUFFO2dCQUM5QixPQUFPO2FBQ1Y7WUFFRCxZQUFZO1lBQ1osRUFBRSxDQUFDLFVBQVUsQ0FBQztnQkFDVixLQUFLLEVBQUUsU0FBUztnQkFDaEIsT0FBTyxFQUFFLFVBQUMsR0FBUTtvQkFDZCxPQUFPLENBQUMsR0FBRyxDQUFDLHVCQUF1QixFQUFFLEdBQUcsQ0FBQyxPQUFPLENBQUMsQ0FBQztvQkFDbEQsUUFBUSxhQUFSLFFBQVEsdUJBQVIsUUFBUSxDQUFFLElBQUksQ0FBQyxNQUFNLEVBQVcsR0FBRyxDQUFDLE9BQU8sRUFBRTtnQkFFakQsQ0FBQztnQkFDRCxJQUFJLEVBQUUsVUFBQyxHQUFRO29CQUNYLE9BQU8sQ0FBQyxHQUFHLENBQUMsbUJBQW1CLEVBQUUsR0FBRyxDQUFDLENBQUM7b0JBQ3RDLFFBQVEsYUFBUixRQUFRLHVCQUFSLFFBQVEsQ0FBRSxJQUFJLENBQUMsTUFBTSxFQUFFLEtBQUssRUFBRTtnQkFDbEMsQ0FBQzthQUNKLENBQUMsQ0FBQztRQUNQLENBQUM7UUFFRDs7Ozs7V0FLRztRQUNJLGtDQUFpQixHQUF4QixVQUF5QixRQUFvQyxFQUFFLE1BQVk7WUFDdkUsSUFBSSxDQUFDLFdBQVcsRUFBRSxFQUFFO2dCQUNoQixPQUFPLENBQUMsR0FBRyxDQUFDLHNCQUFzQixDQUFDLENBQUM7Z0JBQ3BDLFFBQVEsYUFBUixRQUFRLHVCQUFSLFFBQVEsQ0FBRSxJQUFJLENBQUMsTUFBTSxFQUFFLEtBQUssRUFBRTtnQkFDOUIsT0FBTzthQUNWO1lBRUQsYUFBYTtZQUNiLEVBQUUsQ0FBQyxlQUFlLENBQUM7Z0JBQ2YsS0FBSyxFQUFFLFNBQVM7Z0JBQ2hCLE9BQU8sRUFBRTtvQkFDTCxPQUFPLENBQUMsR0FBRyxDQUFDLGtCQUFrQixDQUFDLENBQUM7b0JBQ2hDLFFBQVEsYUFBUixRQUFRLHVCQUFSLFFBQVEsQ0FBRSxJQUFJLENBQUMsTUFBTSxFQUFFLElBQUksRUFBRTtnQkFDakMsQ0FBQztnQkFDRCxJQUFJLEVBQUUsVUFBQyxHQUFRO29CQUNYLE9BQU8sQ0FBQyxHQUFHLENBQUMseUJBQXlCLEVBQUUsR0FBRyxDQUFDLENBQUM7b0JBQzVDLFFBQVEsYUFBUixRQUFRLHVCQUFSLFFBQVEsQ0FBRSxJQUFJLENBQUMsTUFBTSxFQUFFLEtBQUssRUFBRTtnQkFDbEMsQ0FBQzthQUNKLENBQUMsQ0FBQztRQUNQLENBQUM7UUFDTCx1QkFBQztJQUFELENBbkZBLEFBbUZDLElBQUE7SUFuRlksNEJBQWdCLG1CQW1GNUIsQ0FBQTtJQUVEOztPQUVHO0lBQ0g7UUFBQTtRQThlQSxDQUFDO1FBdmVHOzs7Ozs7O1dBT0c7UUFDSSxxQkFBaUIsR0FBeEIsVUFBeUIsS0FBYSxFQUFFLFdBQXdCLEVBQUUsUUFBaUIsRUFBRSxLQUFjLEVBQUUsU0FBc0I7WUFBbkYsNEJBQUEsRUFBQSxnQkFBd0I7WUFDNUQsSUFBSSxRQUFRLEVBQUUsRUFBRTtnQkFDWixJQUFJO29CQUNBLFlBQVk7b0JBQ1osRUFBRSxDQUFDLGVBQWUsQ0FBQzt3QkFDZixLQUFLLEVBQUUsS0FBSzt3QkFDWixRQUFRLEVBQUUsUUFBUTt3QkFDbEIsS0FBSyxFQUFFLEtBQUs7cUJBQ2YsQ0FBQyxDQUFDO2lCQUNOO2dCQUFDLE9BQU8sR0FBRyxFQUFFO29CQUNWLE9BQU8sQ0FBQyxHQUFHLENBQUMsa0JBQWdCLEdBQUssQ0FBQyxDQUFDO2lCQUN0QzthQUNKO1lBRUQsSUFBSSxXQUFXLEVBQUUsRUFBRTtnQkFDZixZQUFZO2dCQUNaLEVBQUUsQ0FBQyxlQUFlLENBQUM7b0JBQ2YsS0FBSyxFQUFFLEtBQUs7b0JBQ1osSUFBSSxFQUFFLFdBQVc7b0JBQ2pCLFFBQVEsRUFBRSxRQUFRLGFBQVIsUUFBUSxjQUFSLFFBQVEsR0FBSSxFQUFFO29CQUN4QixLQUFLLEVBQUUsS0FBSyxhQUFMLEtBQUssY0FBTCxLQUFLLEdBQUksRUFBRTtvQkFDbEIsT0FBTyxFQUFQLFVBQVEsR0FBUTt3QkFDWixPQUFPLENBQUMsR0FBRyxDQUFDLGdCQUFnQixFQUFFLEdBQUcsQ0FBQyxDQUFDO3dCQUNuQyxTQUFTLGFBQVQsU0FBUyx1QkFBVCxTQUFTLEdBQUs7b0JBQ2xCLENBQUM7b0JBQ0QsSUFBSSxFQUFKLFVBQUssR0FBUTt3QkFDVCxPQUFPLENBQUMsR0FBRyxDQUFDLGFBQWEsRUFBRSxHQUFHLENBQUMsQ0FBQztvQkFDcEMsQ0FBQztpQkFDSixDQUFDLENBQUM7YUFDTjtRQUNMLENBQUM7UUFFRDs7Ozs7V0FLRztRQUNJLGFBQVMsR0FBaEIsVUFBaUIsS0FBYSxFQUFFLFFBQW9CO1lBQXBCLHlCQUFBLEVBQUEsWUFBb0I7WUFDaEQsSUFBSSxRQUFRLEVBQUUsRUFBRTtnQkFDWixhQUFhO2dCQUNiLEVBQUUsQ0FBQyxTQUFTLENBQUM7b0JBQ1QsS0FBSyxFQUFFLEtBQUs7b0JBQ1osSUFBSSxFQUFFLE1BQU07b0JBQ1osUUFBUSxFQUFFLFFBQVEsR0FBRyxHQUFHO2lCQUMzQixDQUFDLENBQUM7YUFDTjtRQUVMLENBQUM7UUFFRDs7O1dBR0c7UUFDSSxXQUFPLEdBQWQsVUFBZSxJQUF5QztZQUF6QyxxQkFBQSxFQUFBLE9BQXNCLGFBQWEsQ0FBQyxLQUFLO1lBQ3BELElBQUksUUFBUSxFQUFFLEVBQUU7Z0JBQ1osUUFBUSxJQUFJLEVBQUU7b0JBQ1YsS0FBSyxhQUFhLENBQUMsS0FBSzt3QkFDcEIsWUFBWTt3QkFDWixFQUFFLENBQUMsWUFBWSxDQUFDOzRCQUNaLE9BQU8sRUFBUCxVQUFRLEdBQVE7Z0NBQ1osT0FBTyxDQUFDLEdBQUcsQ0FBQyxrQkFBa0IsRUFBRSxHQUFHLENBQUMsQ0FBQzs0QkFDekMsQ0FBQzs0QkFDRCxJQUFJLEVBQUosVUFBSyxHQUFRO2dDQUNULE9BQU8sQ0FBQyxHQUFHLENBQUMscUJBQXFCLEVBQUUsR0FBRyxDQUFDLENBQUM7NEJBQzVDLENBQUM7eUJBQ0osQ0FBQyxDQUFDO3dCQUNILE1BQU07b0JBQ1YsS0FBSyxhQUFhLENBQUMsSUFBSTt3QkFDbkIsWUFBWTt3QkFDWixFQUFFLENBQUMsV0FBVyxDQUFDOzRCQUNYLE9BQU8sRUFBUCxVQUFRLEdBQVE7Z0NBQ1osT0FBTyxDQUFDLEdBQUcsQ0FBQyxpQkFBaUIsRUFBRSxHQUFHLENBQUMsQ0FBQzs0QkFDeEMsQ0FBQzs0QkFDRCxJQUFJLEVBQUosVUFBSyxHQUFRO2dDQUNULE9BQU8sQ0FBQyxHQUFHLENBQUMsb0JBQW9CLEVBQUUsR0FBRyxDQUFDLENBQUM7NEJBQzNDLENBQUM7eUJBQ0osQ0FBQyxDQUFDO3dCQUNILE1BQU07b0JBQ1Y7d0JBQ0ksTUFBTTtpQkFDYjthQUNKO1lBRUQsSUFBSSxXQUFXLEVBQUUsRUFBRTtnQkFDZixRQUFRLElBQUksRUFBRTtvQkFDVixLQUFLLGFBQWEsQ0FBQyxLQUFLO3dCQUNwQixZQUFZO3dCQUNaLEVBQUUsQ0FBQyxZQUFZLENBQUM7NEJBQ1osT0FBTyxFQUFQLFVBQVEsR0FBUTtnQ0FDWixPQUFPLENBQUMsR0FBRyxDQUFDLGtCQUFrQixFQUFFLEdBQUcsQ0FBQyxDQUFDOzRCQUN6QyxDQUFDOzRCQUNELElBQUksRUFBSixVQUFLLEdBQVE7Z0NBQ1QsT0FBTyxDQUFDLEdBQUcsQ0FBQyxxQkFBcUIsRUFBRSxHQUFHLENBQUMsQ0FBQzs0QkFDNUMsQ0FBQzt5QkFDSixDQUFDLENBQUM7d0JBQ0gsTUFBTTtvQkFDVixLQUFLLGFBQWEsQ0FBQyxJQUFJO3dCQUNuQixZQUFZO3dCQUNaLEVBQUUsQ0FBQyxXQUFXLENBQUM7NEJBQ1gsT0FBTyxFQUFQLFVBQVEsR0FBUTtnQ0FDWixPQUFPLENBQUMsR0FBRyxDQUFDLGlCQUFpQixFQUFFLEdBQUcsQ0FBQyxDQUFDOzRCQUN4QyxDQUFDOzRCQUNELElBQUksRUFBSixVQUFLLEdBQVE7Z0NBQ1QsT0FBTyxDQUFDLEdBQUcsQ0FBQyxvQkFBb0IsRUFBRSxHQUFHLENBQUMsQ0FBQzs0QkFDM0MsQ0FBQzt5QkFDSixDQUFDLENBQUM7d0JBQ0gsTUFBTTtvQkFDVjt3QkFDSSxNQUFNO2lCQUNiO2FBQ0o7UUFDTCxDQUFDO1FBRUQ7O1dBRUc7UUFDSSxVQUFNLEdBQWI7WUFDSSxJQUFJLFFBQVEsRUFBRSxFQUFFO2dCQUNaLFlBQVk7Z0JBQ1osRUFBRSxDQUFDLGtCQUFrQixDQUFDO29CQUNsQixPQUFPLEVBQUU7d0JBQ0wsT0FBTyxDQUFDLEdBQUcsQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDO29CQUNuQyxDQUFDO29CQUVELElBQUksRUFBRTt3QkFDRixPQUFPLENBQUMsR0FBRyxDQUFDLGdCQUFnQixDQUFDLENBQUM7b0JBQ2xDLENBQUM7aUJBQ0osQ0FBQyxDQUFBO2FBQ0w7WUFFRCxJQUFJLFdBQVcsRUFBRSxFQUFFO2dCQUNmLElBQUk7b0JBQ0EsYUFBYTtvQkFDYixFQUFFLENBQUMsc0JBQXNCLEVBQUUsQ0FBQztpQkFDL0I7Z0JBQUMsT0FBTyxLQUFLLEVBQUU7b0JBQ1osT0FBTyxDQUFDLEdBQUcsQ0FBQyx3QkFBd0IsRUFBRSxLQUFLLENBQUMsQ0FBQztpQkFDaEQ7YUFDSjtRQUNMLENBQUM7UUFFRDs7V0FFRztRQUNJLFFBQUksR0FBWDtZQUNJLElBQUksUUFBUSxFQUFFLEVBQUU7Z0JBQ1osWUFBWTtnQkFDWixFQUFFLENBQUMsZUFBZSxDQUFDO29CQUNmLE9BQU8sRUFBRTt3QkFDTCxPQUFPLENBQUMsR0FBRyxDQUFDLGNBQWMsQ0FBQyxDQUFDO29CQUNoQyxDQUFDO29CQUNELElBQUksRUFBRTt3QkFDRixPQUFPLENBQUMsR0FBRyxDQUFDLGFBQWEsQ0FBQyxDQUFDO29CQUMvQixDQUFDO2lCQUNKLENBQUMsQ0FBQzthQUNOO1lBRUQsSUFBSSxXQUFXLEVBQUUsRUFBRTtnQkFDZixhQUFhO2dCQUNiLEVBQUUsQ0FBQyxlQUFlLENBQUM7b0JBQ2YsT0FBTyxFQUFQLFVBQVEsR0FBUTt3QkFDWixPQUFPLENBQUMsR0FBRyxDQUFDLGVBQWUsRUFBRSxHQUFHLGFBQUgsR0FBRyx1QkFBSCxHQUFHLENBQUUsSUFBSSxDQUFDLENBQUM7b0JBQzVDLENBQUM7b0JBQ0QsSUFBSSxFQUFKLFVBQUssR0FBUTt3QkFDVCxPQUFPLENBQUMsR0FBRyxDQUFDLFlBQVksRUFBRSxHQUFHLGFBQUgsR0FBRyx1QkFBSCxHQUFHLENBQUUsTUFBTSxDQUFDLENBQUM7b0JBQzNDLENBQUM7aUJBQ0osQ0FBQyxDQUFDO2FBQ047UUFDTCxDQUFDO1FBRUQ7OztXQUdHO1FBQ0ksaUJBQWEsR0FBcEI7WUFDSSxJQUFJLFFBQVEsRUFBRSxFQUFFO2dCQUNaLFlBQVk7Z0JBQ1osRUFBRSxDQUFDLGFBQWEsQ0FBQztvQkFDYixlQUFlLEVBQUUsSUFBSTtvQkFDckIsS0FBSyxFQUFFLENBQUMsaUJBQWlCLEVBQUUsZUFBZSxDQUFDO29CQUMzQyxPQUFPLEVBQUUsY0FBUSxDQUFDO29CQUNsQixJQUFJLEVBQUUsY0FBUSxDQUFDO29CQUNmLFFBQVEsRUFBRSxjQUFRLENBQUM7aUJBQ3RCLENBQUMsQ0FBQzthQUNOO1FBRUwsQ0FBQztRQUVEOzs7O1dBSUc7UUFDSSxjQUFVLEdBQWpCLFVBQWtCLFFBQWdCLEVBQUUsU0FBc0I7WUFDdEQsSUFBSSxRQUFRLEVBQUUsRUFBRTtnQkFDWixhQUFhO2dCQUNiLEVBQUUsQ0FBQyxxQkFBcUIsQ0FBQztvQkFDckIsS0FBSyxFQUFFLFFBQVE7b0JBQ2YsU0FBUyxFQUFFO3dCQUNQLEdBQUcsRUFBRSxLQUFLO3FCQUNiO29CQUNELFVBQVUsRUFBRSxTQUFTO29CQUNyQixPQUFPLEVBQVAsVUFBUSxHQUFRO3dCQUNaLFNBQVMsYUFBVCxTQUFTLHVCQUFULFNBQVMsR0FBSztvQkFDbEIsQ0FBQztpQkFDSixDQUFDLENBQUM7YUFDTjtZQUVELElBQUksV0FBVyxFQUFFLEVBQUU7Z0JBQ2YsYUFBYTtnQkFDYixFQUFFLENBQUMsbUJBQW1CLENBQUM7b0JBQ25CLE9BQU8sRUFBRSxRQUFRO29CQUNqQixPQUFPLEVBQUUsVUFBQyxHQUFRO3dCQUNkLFNBQVMsYUFBVCxTQUFTLHVCQUFULFNBQVMsR0FBSztvQkFDbEIsQ0FBQztvQkFDRCxJQUFJLEVBQUUsVUFBQyxHQUFRO3dCQUNYLE9BQU8sQ0FBQyxHQUFHLENBQUMsb0NBQW9DLEVBQUUsR0FBRyxDQUFDLENBQUM7b0JBQzNELENBQUM7aUJBQ0osQ0FBQyxDQUFDO2FBQ047UUFDTCxDQUFDO1FBR0Q7OztXQUdHO1FBQ0ksU0FBSyxHQUFaLFVBQWEsUUFBdUQ7WUFDaEUsSUFBSSxhQUFhLEdBQUc7Z0JBQ2hCLElBQUksUUFBUSxFQUFFLEVBQUU7b0JBQ1osWUFBWTtvQkFDWixFQUFFLENBQUMsS0FBSyxDQUFDO3dCQUNMLE9BQU8sRUFBRSxVQUFDLEdBQWdDOzRCQUN0QyxJQUFJLEdBQUcsQ0FBQyxJQUFJLEVBQUU7Z0NBQ1YsR0FBRyxDQUFDLFVBQVUsR0FBRyxHQUFHLENBQUMsSUFBSSxDQUFDO2dDQUMxQixHQUFHLENBQUMsbUJBQW1CLEdBQUcsSUFBSSxDQUFDO2dDQUMvQixRQUFRLGFBQVIsUUFBUSx1QkFBUixRQUFRLENBQUcsR0FBRyxDQUFDLFVBQVUsRUFBRSxHQUFHLENBQUMsbUJBQW1CLEVBQUU7NkJBQ3ZEO2lDQUFNO2dDQUNILE9BQU8sQ0FBQyxHQUFHLENBQUMsY0FBYyxFQUFFLEdBQUcsQ0FBQyxNQUFNLENBQUMsQ0FBQTs2QkFDMUM7d0JBQ0wsQ0FBQzt3QkFFRCxJQUFJLEVBQUU7NEJBQ0YsR0FBRyxDQUFDLFVBQVUsR0FBRyxJQUFJLENBQUM7NEJBQ3RCLEdBQUcsQ0FBQyxtQkFBbUIsR0FBRyxJQUFJLENBQUM7NEJBQy9CLFFBQVEsYUFBUixRQUFRLHVCQUFSLFFBQVEsQ0FBRyxHQUFHLENBQUMsVUFBVSxFQUFFLEdBQUcsQ0FBQyxtQkFBbUIsRUFBRTs0QkFDcEQsT0FBTyxDQUFDLEdBQUcsQ0FBQyxZQUFZLENBQUMsQ0FBQTt3QkFDN0IsQ0FBQztxQkFDSixDQUFDLENBQUM7aUJBQ047cUJBQU0sSUFBSSxXQUFXLEVBQUUsRUFBRTtvQkFDdEIsWUFBWTtvQkFDWixFQUFFLENBQUMsS0FBSyxDQUFDO3dCQUNMLEtBQUssRUFBRSxJQUFJO3dCQUNYLE9BQU8sRUFBUCxVQUFRLEdBQVE7OzRCQUNaLE9BQU8sQ0FBQyxHQUFHLENBQUMsV0FBUyxHQUFHLENBQUMsSUFBSSxTQUFJLEdBQUcsQ0FBQyxhQUFlLENBQUMsQ0FBQzs0QkFDdEQsSUFBSSxHQUFHLENBQUMsSUFBSSxFQUFFO2dDQUNWLEdBQUcsQ0FBQyxVQUFVLFNBQUcsR0FBRyxDQUFDLElBQUksMENBQUUsUUFBUSxFQUFFLENBQUM7Z0NBQ3RDLEdBQUcsQ0FBQyxtQkFBbUIsU0FBRyxHQUFHLENBQUMsYUFBYSwwQ0FBRSxRQUFRLEVBQUUsQ0FBQztnQ0FDeEQsUUFBUSxhQUFSLFFBQVEsdUJBQVIsUUFBUSxDQUFHLEdBQUcsQ0FBQyxVQUFVLEVBQUUsR0FBRyxDQUFDLG1CQUFtQixFQUFFOzZCQUN2RDtpQ0FBTTtnQ0FDSCxPQUFPLENBQUMsR0FBRyxDQUFDLGNBQWMsRUFBRSxHQUFHLENBQUMsTUFBTSxDQUFDLENBQUE7NkJBQzFDO3dCQUNMLENBQUM7d0JBQ0QsSUFBSSxFQUFKLFVBQUssR0FBUTs0QkFDVCxHQUFHLENBQUMsVUFBVSxHQUFHLElBQUksQ0FBQzs0QkFDdEIsR0FBRyxDQUFDLG1CQUFtQixHQUFHLElBQUksQ0FBQzs0QkFDL0IsUUFBUSxhQUFSLFFBQVEsdUJBQVIsUUFBUSxDQUFHLEdBQUcsQ0FBQyxVQUFVLEVBQUUsR0FBRyxDQUFDLG1CQUFtQixFQUFFOzRCQUNwRCxPQUFPLENBQUMsR0FBRyxDQUFDLFlBQVksRUFBRSxHQUFHLENBQUMsQ0FBQzt3QkFDbkMsQ0FBQztxQkFDSixDQUFDLENBQUM7aUJBQ047cUJBQU07b0JBQ0gsR0FBRyxDQUFDLFVBQVUsR0FBRyxJQUFJLENBQUM7b0JBQ3RCLEdBQUcsQ0FBQyxtQkFBbUIsR0FBRyxJQUFJLENBQUM7b0JBQy9CLFFBQVEsYUFBUixRQUFRLHVCQUFSLFFBQVEsQ0FBRyxHQUFHLENBQUMsVUFBVSxFQUFFLEdBQUcsQ0FBQyxtQkFBbUIsRUFBRTtvQkFDcEQsT0FBTyxDQUFDLEdBQUcsQ0FBQyxrREFBa0QsQ0FBQyxDQUFDO2lCQUNuRTtZQUNMLENBQUMsQ0FBQTtZQUlELElBQUksQ0FBQyxHQUFHLENBQUMsVUFBVSxFQUFFO2dCQUNqQixhQUFhLEVBQUUsQ0FBQzthQUNuQjtpQkFBTTtnQkFDSCxJQUFJLFFBQVEsRUFBRSxFQUFFO29CQUNaLFlBQVk7b0JBQ1osRUFBRSxDQUFDLFlBQVksQ0FBQzt3QkFDWixPQUFPOzRCQUNILE9BQU8sQ0FBQyxHQUFHLENBQUMscUNBQXFDLEVBQUUsR0FBRyxDQUFDLFVBQVUsQ0FBQyxDQUFDOzRCQUNuRSxRQUFRLGFBQVIsUUFBUSx1QkFBUixRQUFRLENBQUcsR0FBRyxDQUFDLFVBQVUsRUFBRSxHQUFHLENBQUMsbUJBQW1CLEVBQUU7d0JBQ3hELENBQUM7d0JBQ0QsSUFBSTs0QkFDQSxPQUFPLENBQUMsR0FBRyxDQUFDLGlCQUFpQixDQUFDLENBQUM7NEJBQy9CLGFBQWEsRUFBRSxDQUFDO3dCQUNwQixDQUFDO3FCQUNKLENBQUMsQ0FBQztpQkFDTjtxQkFBTSxJQUFJLFdBQVcsRUFBRSxFQUFFO29CQUN0QixZQUFZO29CQUNaLEVBQUUsQ0FBQyxZQUFZLENBQUM7d0JBQ1osT0FBTzs0QkFDSCxPQUFPLENBQUMsR0FBRyxDQUFDLDBDQUF3QyxHQUFHLENBQUMsVUFBVSxVQUFLLEdBQUcsQ0FBQyxtQkFBcUIsQ0FBQyxDQUFDOzRCQUNsRyxRQUFRLGFBQVIsUUFBUSx1QkFBUixRQUFRLENBQUcsR0FBRyxDQUFDLFVBQVUsRUFBRSxHQUFHLENBQUMsbUJBQW1CLEVBQUU7d0JBQ3hELENBQUM7d0JBQ0QsSUFBSTs0QkFDQSxPQUFPLENBQUMsR0FBRyxDQUFDLGlCQUFpQixDQUFDLENBQUM7NEJBQy9CLGFBQWEsRUFBRSxDQUFDO3dCQUNwQixDQUFDO3FCQUNKLENBQUMsQ0FBQztpQkFFTjtxQkFBTTtvQkFDSCxPQUFPLENBQUMsR0FBRyxDQUFDLG9DQUFvQyxDQUFDLENBQUM7b0JBQ2xELFFBQVEsYUFBUixRQUFRLHVCQUFSLFFBQVEsQ0FBRyxJQUFJLEVBQUUsSUFBSSxFQUFFO2lCQUMxQjthQUNKO1FBQ0wsQ0FBQztRQUVPOzs7R0FHTDtRQUNJLGVBQVcsR0FBbEIsVUFBbUIsUUFBaUM7WUFDaEQsWUFBWTtZQUNaLEVBQUUsQ0FBQyxXQUFXLENBQUM7Z0JBQ1gsZUFBZSxFQUFFLElBQUk7Z0JBQ3JCLE9BQU8sRUFBRSxVQUFDLEdBQVE7b0JBQ2QsR0FBRyxDQUFDLFNBQVMsR0FBRyxHQUFHLENBQUM7b0JBQ3BCLFFBQVEsQ0FBQyxHQUFHLENBQUMsU0FBUyxDQUFDLENBQUM7Z0JBQzVCLENBQUM7Z0JBQ0QsSUFBSSxFQUFFLFVBQUMsR0FBUTtvQkFDWCxRQUFRLENBQUMsR0FBRyxDQUFDLENBQUM7Z0JBQ2xCLENBQUM7YUFDSixDQUFDLENBQUM7UUFDUCxDQUFDO1FBRUQ7Ozs7O1dBS0c7UUFDSSwyQkFBdUIsR0FBOUIsVUFBK0IsUUFBNEIsRUFBRSxJQUFZLEVBQUUsSUFBUTtZQUMvRSxJQUFJLENBQUMsUUFBUSxFQUFFLEVBQUU7Z0JBQ2IsT0FBTyxDQUFDLEdBQUcsQ0FBQywwREFBMEQsQ0FBQyxDQUFDO2dCQUN4RSxPQUFPO2FBQ1Y7WUFFRCxJQUFJLENBQUMsS0FBSyxDQUFDLFVBQUMsSUFBWSxFQUFFLGFBQXFCO2dCQUMzQyxJQUFJLENBQUMsR0FBRyxDQUFDLDJCQUEyQixFQUFFO29CQUNsQyxZQUFZO29CQUNaLEVBQUUsQ0FBQyxLQUFLLENBQUMsSUFBSSxFQUFFLENBQUM7b0JBQ2hCLEdBQUcsQ0FBQywyQkFBMkIsR0FBRyxJQUFJLENBQUM7aUJBQzFDO2dCQUNELFlBQVk7Z0JBQ1osRUFBRSxDQUFDLEtBQUssQ0FBQyxZQUFZLENBQUM7b0JBQ2xCLElBQUksRUFBRSxJQUFJO29CQUNWLElBQUksRUFBRSxJQUFJO29CQUNWLE9BQU8sRUFBRSxVQUFDLEdBQVEsV0FBSyxRQUFRLGFBQVIsUUFBUSx1QkFBUixRQUFRLENBQUcsR0FBRyxJQUFDO29CQUN0QyxJQUFJLEVBQUUsVUFBQyxHQUFRO3dCQUNYLE9BQU8sQ0FBQyxHQUFHLENBQUMsOEJBQThCLEVBQUUsR0FBRyxDQUFDLENBQUM7d0JBQ2pELFFBQVEsYUFBUixRQUFRLHVCQUFSLFFBQVEsQ0FBRyxJQUFJLEVBQUU7b0JBQ3JCLENBQUM7aUJBQ0osQ0FBQyxDQUFDO1lBQ1AsQ0FBQyxDQUFDLENBQUM7UUFDUCxDQUFDO1FBRUQ7Ozs7V0FJRztRQUNJLHVCQUFtQixHQUExQixVQUEyQixHQUFXLEVBQUUsS0FBYTtZQUNqRCxJQUFJLFFBQVEsRUFBRSxFQUFFO2dCQUNaLGFBQWE7Z0JBQ2IsRUFBRSxDQUFDLG1CQUFtQixDQUFDO29CQUNuQixVQUFVLEVBQUUsQ0FBQyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxDQUFDO29CQUN4QyxPQUFPLEVBQUUsY0FBTSxPQUFBLE9BQU8sQ0FBQyxHQUFHLENBQUMsK0JBQTZCLEdBQUcsZ0JBQVcsS0FBTyxDQUFDLEVBQS9ELENBQStEO29CQUM5RSxJQUFJLEVBQUUsVUFBQyxHQUFRLElBQUssT0FBQSxPQUFPLENBQUMsR0FBRyxDQUFDLDBCQUEwQixFQUFFLEdBQUcsQ0FBQyxFQUE1QyxDQUE0QztpQkFDbkUsQ0FBQyxDQUFDO2FBQ047WUFFRCxJQUFJLFdBQVcsRUFBRSxFQUFFO2dCQUNmLGFBQWE7Z0JBQ2IsRUFBRSxDQUFDLG1CQUFtQixDQUFDO29CQUNuQixVQUFVLEVBQUUsQ0FBQyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsS0FBSyxFQUFFLEtBQUssR0FBRyxDQUFDO29CQUN6QyxPQUFPLEVBQUUsY0FBTSxPQUFBLE9BQU8sQ0FBQyxHQUFHLENBQUMsK0JBQTZCLEdBQUcsZ0JBQVcsS0FBTyxDQUFDLEVBQS9ELENBQStEO29CQUM5RSxJQUFJLEVBQUUsVUFBQyxHQUFRLElBQUssT0FBQSxPQUFPLENBQUMsR0FBRyxDQUFDLDBCQUEwQixFQUFFLEdBQUcsQ0FBQyxFQUE1QyxDQUE0QztpQkFDbkUsQ0FBQyxDQUFDO2FBQ047UUFDTCxDQUFDO1FBR0Q7O1VBRUU7UUFFSyxlQUFXLEdBQWxCO1lBQ0ksSUFBSSxPQUFPLEVBQUUsS0FBSSxXQUFXLElBQUksRUFBRSxLQUFJLElBQUksRUFBRTtnQkFDeEMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxVQUFVLENBQUMsQ0FBQztnQkFDeEIsc0JBQXNCO2dCQUN0QixJQUFJLEtBQUssR0FBRyxrQ0FBa0MsQ0FBQztnQkFDL0MsSUFBSSxJQUFJLEdBQUcsRUFBRSxDQUFDLEVBQUUsQ0FBQyxRQUFRLENBQUMsb0JBQW9CLEVBQUUsQ0FBQztnQkFDakQsSUFBRyxJQUFJLElBQUksS0FBSyxFQUFDO29CQUNiLEtBQUssR0FBRyxrQ0FBa0MsQ0FBQztpQkFDOUM7Z0JBQ0QsSUFBSSxNQUFNLEdBQUc7b0JBQ1QsMERBQTBEO29CQUMxRCxLQUFLLEVBQUMsS0FBSztvQkFDWCxTQUFTLEVBQUUsMkJBQTJCO29CQUN0QyxTQUFTLEVBQUU7d0JBQ1AsT0FBTyxFQUFFLElBQUk7d0JBQ2IsT0FBTyxFQUFFLElBQUksQ0FBQyxrQkFBa0I7cUJBQ25DO2lCQUNKLENBQUM7Z0JBQ0YsV0FBVztnQkFDWCxHQUFHLENBQUMsR0FBRyxHQUFHLElBQUksb0JBQW9CLENBQUMsTUFBTSxDQUFDLENBQUM7Z0JBQzNDLHVDQUF1QztnQkFFdkMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxVQUFVLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQUFDO2dCQUMvQyxJQUFNLE1BQU0sR0FBRyxTQUFTLENBQUM7Z0JBQ3pCLEdBQUcsQ0FBQyxZQUFZLENBQUMsT0FBTyxFQUFDLE1BQU0sQ0FBQyxDQUFDO2dCQUVqQyxNQUFNO2dCQUNOLEdBQUcsQ0FBQyxHQUFHLENBQUUsSUFBSSxFQUFFLENBQUM7Z0JBRWhCLEdBQUcsQ0FBQyx5QkFBeUIsRUFBRSxDQUFDO2dCQUNoQyw0QkFBNEI7Z0JBQzVCLGtDQUFrQztnQkFDbEMsUUFBUTtnQkFDUix3Q0FBd0M7YUFDM0M7UUFDTCxDQUFDO1FBRU0sa0JBQWMsR0FBckIsVUFBc0IsSUFBSTtZQUN0QixJQUFJLE9BQU8sRUFBRSxLQUFJLFdBQVcsSUFBSSxFQUFFLEtBQUksSUFBSSxFQUFFO2dCQUN4QyxPQUFPLENBQUMsR0FBRyxDQUFDLFVBQVUsQ0FBQyxDQUFDO2dCQUN4QixHQUFHLENBQUMsR0FBRyxDQUFDLE9BQU8sQ0FBQyxFQUFFLGFBQWEsRUFBQyxJQUFJLEVBQUMsQ0FBQyxDQUFDO2FBQzFDO1FBQ0wsQ0FBQztRQUVEOztVQUVFO1FBRUssNkJBQXlCLEdBQWhDO1lBQ0csSUFBSSxPQUFPLEVBQUUsS0FBSSxXQUFXLElBQUksRUFBRSxLQUFJLElBQUksSUFBSSxHQUFHLENBQUMsR0FBRyxFQUFFO2dCQUNsRCxJQUFNLFdBQVcsR0FBRyxLQUFLLENBQUM7Z0JBQzFCLDhDQUE4QztnQkFDOUMsSUFBSSxlQUFlLEdBQUc7b0JBQ2xCLGFBQWEsRUFBRyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsVUFBVSxDQUFDLE9BQU8sQ0FBQyxLQUFLLEdBQUMsQ0FBQyxDQUFDO29CQUNsRCxjQUFjLEVBQUUsRUFBRSxDQUFDLEVBQUUsQ0FBQyxVQUFVLENBQUMsT0FBTyxDQUFDLEVBQUU7b0JBQzNDLFFBQVEsRUFBRyxFQUFFLENBQUMsRUFBRSxDQUFDLFVBQVUsQ0FBQyxPQUFPLENBQUMsSUFBSTtvQkFDeEMsT0FBTyxFQUFFLFdBQVc7aUJBQ3ZCLENBQUM7Z0JBQ0YsR0FBRyxDQUFDLEdBQUcsQ0FBQyxrQkFBa0IsQ0FBQyxlQUFlLENBQUMsQ0FBQyxDQUFBLFVBQVU7YUFDMUQ7UUFDSixDQUFDO1FBRU0sd0JBQW9CLEdBQTNCO1lBQ0ksSUFBSSxPQUFPLEVBQUUsS0FBSSxXQUFXLElBQUksRUFBRSxLQUFJLElBQUksRUFBRTtnQkFDeEMsYUFBYTtnQkFDYixJQUFNLFdBQVcsR0FBRyxFQUFFLENBQUMsa0JBQWtCLEVBQUUsQ0FBQztnQkFDNUMsT0FBTyxXQUFXLENBQUMsV0FBVyxDQUFDLE9BQU8sQ0FBQzthQUMxQztRQUNMLENBQUM7UUFFRDs7VUFFRTtRQUVLLGdCQUFZLEdBQW5CLFVBQW9CLElBQUksRUFBRSxJQUFJLEVBQUUsUUFBa0Q7WUFDOUUsSUFBSSxPQUFPLEVBQUUsS0FBSSxXQUFXLElBQUksRUFBRSxLQUFJLElBQUksRUFBRTtnQkFDeEMsSUFBSSxHQUFHLENBQUMsR0FBRyxFQUFFO29CQUNULDBCQUEwQjtvQkFDMUIsR0FBRyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQ1QsSUFBSSxFQUFFLE9BQU87b0JBQ2IsSUFBSSxDQUFDLFFBQVE7cUJBQ2hCLENBQUE7aUJBQ0o7YUFDSjtRQUNMLENBQUM7UUE1ZWMsY0FBVSxHQUFXLElBQUksQ0FBQztRQUMxQix1QkFBbUIsR0FBVyxJQUFJLENBQUM7UUFDbkMsK0JBQTJCLEdBQVksS0FBSyxDQUFDO1FBQzdDLGFBQVMsR0FBUSxJQUFJLENBQUM7UUFDdEIsT0FBRyxHQUFRLElBQUksQ0FBQztRQXllbkMsVUFBQztLQTllRCxBQThlQyxJQUFBO0lBOWVZLGVBQUcsTUE4ZWYsQ0FBQTtBQUVMLENBQUMsRUF6cUNnQixXQUFXLEdBQVgsbUJBQVcsS0FBWCxtQkFBVyxRQXlxQzNCIiwiZmlsZSI6IiIsInNvdXJjZVJvb3QiOiIvIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXHJcbiAqIOWwj+a4uOaIj+W5s+WPsFNES+W3peWFt+Wwgeijhe+8jOebruWJjeWPquaUr+aMgeW+ruS/oeWSjOaKlumfs+W5s+WPsFxyXG4gKi9cclxuZXhwb3J0IG5hbWVzcGFjZSBNaW5pR2FtZVNkayB7XHJcblxyXG4gICAgaW50ZXJmYWNlIElTaXplIHtcclxuICAgICAgICB3aWR0aDogbnVtYmVyO1xyXG4gICAgICAgIGhlaWdodDogbnVtYmVyO1xyXG4gICAgfVxyXG5cclxuICAgIGV4cG9ydCBpbnRlcmZhY2UgSVBvc2l0aW9uIHtcclxuICAgICAgICB0b3A6IG51bWJlcjtcclxuICAgICAgICBsZWZ0OiBudW1iZXI7XHJcbiAgICB9XHJcblxyXG4gICAgZXhwb3J0IGZ1bmN0aW9uIGlzV2VjaGF0KCk6IGJvb2xlYW4ge1xyXG4gICAgICAgIC8vQHRzLWlnbm9yZVxyXG4gICAgICAgIHJldHVybiB3aW5kb3cud3ggIT09IG51bGwgJiYgd2luZG93Lnd4ICE9PSB1bmRlZmluZWQ7XHJcbiAgICB9XHJcblxyXG4gICAgZXhwb3J0IGZ1bmN0aW9uIGlzQnl0ZWRhbmNlKCk6IGJvb2xlYW4ge1xyXG4gICAgICAgIC8vQHRzLWlnbm9yZVxyXG4gICAgICAgIHJldHVybiB3aW5kb3cudHQgIT09IG51bGwgJiYgd2luZG93LnR0ICE9PSB1bmRlZmluZWQ7XHJcbiAgICB9XHJcblxyXG5cclxuICAgIGZ1bmN0aW9uIGdldFN5c1dpblNpemUoKTogSVNpemUge1xyXG4gICAgICAgIGxldCBzeXM6IGFueTtcclxuICAgICAgICBpZiAoaXNXZWNoYXQoKSkge1xyXG4gICAgICAgICAgICAvLyBAdHMtaWdub3JlXHJcbiAgICAgICAgICAgIHN5cyA9IHd4LmdldFN5c3RlbUluZm9TeW5jKCk7XHJcbiAgICAgICAgfSBlbHNlIGlmIChpc0J5dGVkYW5jZSgpKSB7XHJcbiAgICAgICAgICAgIC8vIEB0cy1pZ25vcmVcclxuICAgICAgICAgICAgc3lzID0gdHQuZ2V0U3lzdGVtSW5mb1N5bmMoKTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGxldCBzaXplOiBJU2l6ZSA9IHsgd2lkdGg6IDAsIGhlaWdodDogMCB9O1xyXG4gICAgICAgIGlmIChzeXMpIHtcclxuICAgICAgICAgICAgc2l6ZS53aWR0aCA9IHN5cy53aW5kb3dXaWR0aDtcclxuICAgICAgICAgICAgc2l6ZS5oZWlnaHQgPSBzeXMud2luZG93SGVpZ2h0O1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgcmV0dXJuIHNpemU7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiDmj5LlsY/lub/lkYrjgILlvq7kv6Hmipbpn7Ppg73mlK/mjIHvvIFcclxuICAgICAqL1xyXG4gICAgY2xhc3MgQURJbnRlcnN0aXRpYWwge1xyXG4gICAgICAgIHByaXZhdGUgX2FkVWlkOiBzdHJpbmc7XHJcbiAgICAgICAgcHJpdmF0ZSBfaW50ZXJzdGl0aWFsOiBhbnk7XHJcblxyXG4gICAgICAgIGdldCBhZHVpZCgpIHtcclxuICAgICAgICAgICAgcmV0dXJuIHRoaXMuX2FkVWlkO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgY29uc3RydWN0b3IoYWRVaWQ6IHN0cmluZykge1xyXG4gICAgICAgICAgICB0aGlzLl9hZFVpZCA9IGFkVWlkO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgc2hvdygpIHtcclxuICAgICAgICAgICAgLy8gQHRzLWlnbm9yZVxyXG4gICAgICAgICAgICBpZiAoaXNXZWNoYXQoKSAmJiAhd3guY3JlYXRlSW50ZXJzdGl0aWFsQWQpIHtcclxuICAgICAgICAgICAgICAgIGNvbnNvbGUud2Fybignd2VjaGF0IHVuc3VwcG9ydCBpbnRlcnN0aXRpYWwgQUQhJyk7XHJcbiAgICAgICAgICAgICAgICB0aGlzLl9pbnRlcnN0aXRpYWwgPSBudWxsO1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAvLyBAdHMtaWdub3JlXHJcbiAgICAgICAgICAgIGlmIChpc0J5dGVkYW5jZSgpICYmICF0dC5jcmVhdGVJbnRlcnN0aXRpYWxBZCkge1xyXG4gICAgICAgICAgICAgICAgY29uc29sZS53YXJuKCdieXRlZGFuY2UgdW5zdXBwb3J0IGludGVyc3RpdGlhbCBBRCEnKTtcclxuICAgICAgICAgICAgICAgIHRoaXMuX2ludGVyc3RpdGlhbCA9IG51bGw7XHJcbiAgICAgICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgICAgIH1cclxuXHJcblxyXG4gICAgICAgICAgICBpZiAodGhpcy5faW50ZXJzdGl0aWFsKSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLl9pbnRlcnN0aXRpYWwubG9hZCgpO1xyXG4gICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgaWYgKGlzV2VjaGF0KCkpIHtcclxuICAgICAgICAgICAgICAgICAgICAvLyBAdHMtaWdub3JlXHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5faW50ZXJzdGl0aWFsID0gd3guY3JlYXRlSW50ZXJzdGl0aWFsQWQoeyBhZFVuaXRJZDogdGhpcy5fYWRVaWQgfSk7XHJcbiAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKGlzQnl0ZWRhbmNlKCkpIHtcclxuICAgICAgICAgICAgICAgICAgICAvLyBAdHMtaWdub3JlXHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5faW50ZXJzdGl0aWFsID0gdHQuY3JlYXRlSW50ZXJzdGl0aWFsQWQoeyBhZFVuaXRJZDogdGhpcy5fYWRVaWQgfSk7XHJcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuX2ludGVyc3RpdGlhbCA9IG51bGw7XHJcbiAgICAgICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAgICAgdGhpcy5faW50ZXJzdGl0aWFsPy5vbkxvYWQoKCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKCdsb2FkIGludGVyc3RpdGlhbCBhZCBzdWNjZXNzJyk7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5faW50ZXJzdGl0aWFsLnNob3coKS5jYXRjaCgoZXJyOiBhbnkpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgY29uc29sZS5sb2coJ2NhdGNoIGludGVyc3RpdGlhbCBhZCBlcnJvcjonLCBlcnIpO1xyXG4gICAgICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICAgICAgfSk7XHJcblxyXG4gICAgICAgICAgICAgICAgdGhpcy5faW50ZXJzdGl0aWFsPy5vbkVycm9yKChlcnI6IGFueSkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKCdpbnRlcnN0aXRpYWwgYWQgb24gZXJyb3I6JywgZXJyKTtcclxuICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGRlc3RvcnkoKSB7XHJcbiAgICAgICAgICAgIHRoaXMuX2ludGVyc3RpdGlhbD8uZGVzdHJveSgpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBjbGFzcyBBREJhbm5lciB7XHJcbiAgICAgICAgcHJpdmF0ZSBfYWRVaWQ6IHN0cmluZztcclxuICAgICAgICBwcml2YXRlIF9iYW5uZXI6IGFueTtcclxuXHJcbiAgICAgICAgZ2V0IGFkdWlkKCkge1xyXG4gICAgICAgICAgICByZXR1cm4gdGhpcy5fYWRVaWQ7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICAvKipcclxuICAgICAgICAgKiDmipbpn7Plkozlvq7kv6Hpg73mlK/mjIFcclxuICAgICAgICAgKiDmqKrluYXlub/lkYrjgILpooTkvLDlrr3luqbpu5jorqTkuLozMDDvvIzpooTkvLDpq5jluqbkuLoxNDDjgILlpoLmnpzkvaDkuI3noa7lrprlsLHmjInpu5jorqTlgLzmnaXjgIJcclxuICAgICAgICAgKiBAcGFyYW0gYWRVaWQg5bm/5ZGKVUlE77yM5ZCO56uv6YWN572uXHJcbiAgICAgICAgICogQHBhcmFtIGlzVG9wIOaYr+WQpuWcqOWxj+W5lemhtumDqOWxleekuuOAguWGhemDqOS8muiHquWKqOWxheS4reiuoeeul+S9jee9ruOAglxyXG4gICAgICAgICAqIEBwYXJhbSBiYW5uZXJXaWR0aCDmqKrluYXlub/lkYrnmoTpooTkvLDlrr3luqbjgILpu5jorqQzMDBcclxuICAgICAgICAgKiBAcGFyYW0gYXV0b1Nob3cg5bm/5ZGK5Yqg6L295a6M5oiQ5ZCO5piv5ZCm56uL5Yi75pi+56S677yM6buY6K6k5Li65LiN5pi+56S6XHJcbiAgICAgICAgICovXHJcbiAgICAgICAgY29uc3RydWN0b3IoYWRVaWQ6IHN0cmluZywgcGFyYW06IGJvb2xlYW4gfCBJUG9zaXRpb24sIGJhbm5lcldpZHRoOiBudW1iZXIgPSAzMDAsIGF1dG9TaG93OiBib29sZWFuID0gZmFsc2UpIHtcclxuICAgICAgICAgICAgdGhpcy5fYWRVaWQgPSBhZFVpZDtcclxuICAgICAgICAgICAgdGhpcy5jcmVhdGUoYXV0b1Nob3csIGJhbm5lcldpZHRoLCBwYXJhbSk7IC8vIOm7mOiupDMwMOavlOi+g+WQiOmAglxyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgcHJpdmF0ZSBjcmVhdGUoYXV0b1Nob3c6IGJvb2xlYW4sIGJhbm5lcldpZHRoOiBudW1iZXIsIHBhcmFtOiBib29sZWFuIHwgSVBvc2l0aW9uKSB7XHJcbiAgICAgICAgICAgIGlmICghaXNXZWNoYXQoKSAmJiAhaXNCeXRlZGFuY2UoKSkge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5fYmFubmVyID0gbnVsbDtcclxuICAgICAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgdGhpcy5kZXN0cm95KCk7XHJcblxyXG4gICAgICAgICAgICBsZXQgd2luU2l6ZSA9IGdldFN5c1dpblNpemUoKTtcclxuXHJcbiAgICAgICAgICAgIGxldCBoZWlnaHQgPSBiYW5uZXJXaWR0aCAqIDAuNDtcclxuICAgICAgICAgICAgbGV0IHRvcCA9IDAsIGxlZnQgPSAwO1xyXG5cclxuICAgICAgICAgICAgaWYgKHR5cGVvZiBwYXJhbSA9PT0gXCJib29sZWFuXCIpIHtcclxuICAgICAgICAgICAgICAgIGxlZnQgPSAod2luU2l6ZS53aWR0aCAtIGJhbm5lcldpZHRoKSAvIDJcclxuICAgICAgICAgICAgICAgIHRvcCA9IHBhcmFtID8gNSA6ICh3aW5TaXplLmhlaWdodCAtIGhlaWdodCk7XHJcbiAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICBsZWZ0ID0gcGFyYW0ubGVmdDtcclxuICAgICAgICAgICAgICAgIHRvcCA9IHBhcmFtLnRvcDtcclxuICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgbGV0IHBhcmFtcyA9IHtcclxuICAgICAgICAgICAgICAgIGFkVW5pdElkOiB0aGlzLl9hZFVpZCxcclxuICAgICAgICAgICAgICAgIGFkSW50ZXJ2YWxzOiAzMCwvLyDoh6rliqjliLfmlrDpopHnjofkuI3og73lsI/kuo4zMOenklxyXG4gICAgICAgICAgICAgICAgc3R5bGU6IHsgbGVmdDogbGVmdCwgdG9wOiB0b3AsIHdpZHRoOiBiYW5uZXJXaWR0aCB9XHJcbiAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgIGlmIChpc1dlY2hhdCgpKSB7XHJcbiAgICAgICAgICAgICAgICAvLyBAdHMtaWdub3JlXHJcbiAgICAgICAgICAgICAgICB0aGlzLl9iYW5uZXIgPSB3eC5jcmVhdGVCYW5uZXJBZChwYXJhbXMpO1xyXG4gICAgICAgICAgICB9IGVsc2UgaWYgKGlzQnl0ZWRhbmNlKCkpIHtcclxuICAgICAgICAgICAgICAgIC8vIEB0cy1pZ25vcmVcclxuICAgICAgICAgICAgICAgIHRoaXMuX2Jhbm5lciA9IHR0LmNyZWF0ZUJhbm5lckFkKHBhcmFtcyk7XHJcbiAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLl9iYW5uZXIgPSBudWxsO1xyXG4gICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICB0aGlzLl9iYW5uZXI/Lm9uRXJyb3IoKGVycjogYW55KSA9PiB7XHJcbiAgICAgICAgICAgICAgICBjb25zb2xlLmxvZygnYWQgYmFubmVyIGVycm9yOicsIGVycik7XHJcbiAgICAgICAgICAgIH0pO1xyXG5cclxuICAgICAgICAgICAgdGhpcy5fYmFubmVyPy5vbkxvYWQoKCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgYXV0b1Nob3cgJiYgdGhpcy5fYmFubmVyLnNob3coKTtcclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBzaG93KCkge1xyXG4gICAgICAgICAgICB0aGlzLl9iYW5uZXI/LnNob3coKTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGhpZGUoKSB7XHJcbiAgICAgICAgICAgIHRoaXMuX2Jhbm5lcj8uaGlkZSgpO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgZGVzdHJveSgpIHtcclxuICAgICAgICAgICAgdGhpcy5fYmFubmVyPy5kZXN0cm95KCk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIGNsYXNzIEFEQ3VzdG9tIHtcclxuICAgICAgICBwcml2YXRlIF9hZFVpZDogc3RyaW5nO1xyXG4gICAgICAgIHByaXZhdGUgX2FkQ3VzdG9tOiBhbnk7XHJcblxyXG4gICAgICAgIGdldCBhZHVpZCgpIHtcclxuICAgICAgICAgICAgcmV0dXJuIHRoaXMuX2FkVWlkO1xyXG4gICAgICAgIH1cclxuICAgICAgICAvKipcclxuICAgICAgICAgKiDnlLHkuo7ljp/nlJ/mqKHmnb/lub/lkYrlnKjlvq7kv6HmnI3liqHlkI7nq6/lj6/ku6XlrprliLblrr3luqblpKflsI/vvIzkuKrmlbDvvIznvKnmlL7mr5TkvovnrYnvvIzmiYDku6XkvY3nva7osIPmlbTopoHmoLnmja7orr7nva7nmoTlrr3luqbmnaXlrprjgILmipbpn7PkuI3mlK/mjIHvvIFcclxuICAgICAgICAgKiBAcGFyYW0gYWRVaWQg5bm/5ZGKVUlE77yM5ZCO56uv6YWN572uXHJcbiAgICAgICAgICogQHBhcmFtIHRvcCDku47lt6bkuIrop5LlvIDlp4vvvIzot53nprvlsY/luZXpobbpg6jnmoTot53nprvjgILms6jmhI/vvJrov5nkuKrmlbDmja7kuLrorr7lpIflsY/luZXlrr3luqZ3aWR0aOOAguWmguaenOmcgOimgeiOt+WPluWxj+W5leeahOWDj+e0oO+8jOmcgOimgeS5mOS7peiuvuWkh+WDj+e0oOavlFBpeGVsLVJhdGlv77yM5L6L5aaCaVBob25lIDEzIFByb+eahFBpeGVsLVJhdGlv5Li6M++8jOWDj+e0oOS4uldpZHRoKjPjgIJcclxuICAgICAgICAgKiBAcGFyYW0gbGVmdCDku47lt6bkuIrop5LlvIDlp4vvvIzot53nprvlsY/luZXmnIDlt6bovrnnmoTot53nprvjgILms6jmhI/vvJrov5nkuKrmlbDmja7kuLrorr7lpIflsY/luZXlrr3luqZ3aWR0aOOAguWmguaenOmcgOimgeiOt+WPluWxj+W5leeahOWDj+e0oO+8jOmcgOimgeS5mOS7peiuvuWkh+WDj+e0oOavlFBpeGVsLVJhdGlv77yM5L6L5aaCaVBob25lIDEzIFByb+eahFBpeGVsLVJhdGlv5Li6M++8jOWDj+e0oOS4uldpZHRoKjPjgIJcclxuICAgICAgICAgKiBAcGFyYW0gc2NhbGUg5Y6f55Sf5qih5p2/5bm/5ZGK55qE5bC65a+477yM6buY6K6k5Li6Me+8jOWNszEwMCXjgILmraTlgLzlnKjlvq7kv6HmnI3liqHlkI7nq6/lub/lkYrkuK3ojrflvpfvvIzpu5jorqTkuLoxMDAl77yM55uu5YmN5pyJMTAwJe+8jDkwJe+8jDgwJeS4ieenje+8jOS4gOiIrOaDheWGteS4jeeUqOS/ruaUueOAguiLpeacieS/ruaUue+8jOiusOW+l+S8oOWFpeWAvO+8jOS+i+WmgjkwJeWwseS8oOWFpTAuOeOAglxyXG4gICAgICAgICAqL1xyXG4gICAgICAgIGNvbnN0cnVjdG9yKGFkVWlkOiBzdHJpbmcsIHRvcDogbnVtYmVyID0gMCwgbGVmdDogbnVtYmVyID0gMCwgc2NhbGU6IG51bWJlciA9IDEuMCkge1xyXG4gICAgICAgICAgICB0aGlzLl9hZFVpZCA9IGFkVWlkO1xyXG4gICAgICAgICAgICB0aGlzLmNyZWF0ZUN1c3RvbUFkKHRvcCwgbGVmdCwgc2NhbGUpO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgcHJpdmF0ZSBjcmVhdGVDdXN0b21BZCh0b3A6IG51bWJlciwgbGVmdDogbnVtYmVyLCBzY2FsZTogbnVtYmVyKSB7XHJcbiAgICAgICAgICAgIGlmICghaXNXZWNoYXQoKSkgeyAvLyBvbmx5IHdlY2hhdCBzdXBwb3J0IGN1c3RvbSBhZFxyXG4gICAgICAgICAgICAgICAgdGhpcy5fYWRDdXN0b20gPSBudWxsO1xyXG4gICAgICAgICAgICAgICAgY29uc29sZS5sb2coJ09ubHkgd2VjaGF0IHN1cHBvcnQgQ3VzdG9tIEFkJyk7XHJcbiAgICAgICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgIHRoaXMuZGVzdHJveSgpO1xyXG4gICAgICAgICAgICAvLyDljp/nlJ/mqKHmnb815Liq5bqU55So5a695bqm5Li6Mzc177yM6Iul6K6+572u5LqG57yp5pS+5q+U5L6L77yM5YiZ5a695bqm5Lmf6ZyA6KaB6K6+572uXHJcbiAgICAgICAgICAgIC8vIGxldCB3aWR0aCA9IDM3NSAqIHRoaXMuX3NjYWxlO1xyXG4gICAgICAgICAgICAvLyBsZXQgbmV3TGVmdCA9IChzeXMud2luZG93V2lkdGggLSB3aWR0aCkgLyAyO1xyXG4gICAgICAgICAgICAvLyBsZXQgbmV3VG9wID0gc3lzLndpbmRvd0hlaWdodCAvIDI7IC8vIDEyMOaYr+mihOS8sOmrmOW6plxyXG5cclxuICAgICAgICAgICAgLy8gQHRzLWlnbm9yZVxyXG4gICAgICAgICAgICB0aGlzLl9hZEN1c3RvbSA9IHd4LmNyZWF0ZUN1c3RvbUFkKHtcclxuICAgICAgICAgICAgICAgIGFkVW5pdElkOiB0aGlzLl9hZFVpZCxcclxuICAgICAgICAgICAgICAgIC8vQHRzLWlnbm9yZVxyXG4gICAgICAgICAgICAgICAgc3R5bGU6IHsgbGVmdDogbGVmdCwgdG9wOiB0b3AsIGZpeGVkOiB0cnVlIH1cclxuICAgICAgICAgICAgfSk7XHJcblxyXG4gICAgICAgICAgICB0aGlzLl9hZEN1c3RvbT8ub25FcnJvcigoZXJyOiBhbnkpID0+IHtcclxuICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKCdhZCBjdXN0b20gZXJyb3I6JywgZXJyKTtcclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHNob3coKSB7XHJcbiAgICAgICAgICAgIHRoaXMuX2FkQ3VzdG9tPy5zaG93KCk7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBoaWRlKCkge1xyXG4gICAgICAgICAgICB0aGlzLl9hZEN1c3RvbT8uaGlkZSgpO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgZGVzdHJveSgpIHtcclxuICAgICAgICAgICAgdGhpcy5fYWRDdXN0b20/LmRlc3Ryb3koKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG5cclxuICAgIC8qKlxyXG4gICAgICog6KeG6aKR5bm/5ZGK55So5oi354K55Ye76KGM5Li657uT5p6cXHJcbiAgICAgKi9cclxuICAgIGV4cG9ydCBlbnVtIEVBZFZpZGVvUmVzdWx0IHtcclxuICAgICAgICAvKipcclxuICAgICAgICAgKiDnlKjmiLfnnIvlrozkuoblub/lkYrvvIzmuLjmiI/lj6/lj5HmlL7lpZblirHjgIJcclxuICAgICAgICAgKi9cclxuICAgICAgICBBQ0NFUFQsXHJcblxyXG4gICAgICAgIC8qKlxyXG4gICAgICAgICAqIOeUqOaIt+S4remAlOWFs+mXreS6huW5v+WRiu+8jOWNs+acqueci+WujOeKtuaAgeOAguS4jeWPr+WPkeaUvuWlluWKseOAglxyXG4gICAgICAgICAqL1xyXG4gICAgICAgIFJFSkVDVCxcclxuXHJcbiAgICAgICAgLyoqXHJcbiAgICAgICAgICog5bm/5ZGK57uE5Lu25YaF6YOo5Y+R55Sf5LqG6ZSZ6K+v44CC5LiN5Y+v5Y+R5pS+5aWW5Yqx44CCXHJcbiAgICAgICAgICovXHJcbiAgICAgICAgRVJST1IsXHJcbiAgICB9XHJcblxyXG4gICAgY2xhc3MgQURWaWRlbyB7XHJcbiAgICAgICAgcHJpdmF0ZSBfYWRVaWQ6IHN0cmluZztcclxuICAgICAgICBwcml2YXRlIF9hZFZpZGVvOiBhbnkgPSBudWxsO1xyXG5cclxuICAgICAgICBnZXQgYWR1aWQoKSB7XHJcbiAgICAgICAgICAgIHJldHVybiB0aGlzLl9hZFVpZDtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGNvbnN0cnVjdG9yKGFkVWlkOiBzdHJpbmcpIHtcclxuICAgICAgICAgICAgdGhpcy5fYWRVaWQgPSBhZFVpZDtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIC8qKlxyXG4gICAgICAgICAqIOeUseS6juW+ruS/oeWSjOaKlumfs+inhumikeW5v+WRiuacuuWItuS4jeWQjO+8jOW+ruS/oeWPr+S7peeci+eahOinhumikeW5v+WRiuS4quaVsOWPquaciTDlkowx5Liq77yM5oqW6Z+z5bmz5Y+w5YiZ5Y+v5Lul55yLMH5tYXhWaWRlb0NvdW50XHJcbiAgICAgICAgICogQHBhcmFtIG9uUmVzdWx0IOS4pOS4quWPguaVsO+8muesrOS4gOS4qnJlc+aYr0VBZFZpZGVvUmVzdWx05a6a5LmJ77yM56ys5LqMY291bnTmmK/nlKjmiLfnnIvkuoblpJrlsJHkuKrop4bpopHlub/lkYrjgIJcclxuICAgICAgICAgKiBAcGFyYW0gdGFyZ2V0IG9uUmVzdWx055qE5oul5pyJ6ICFXHJcbiAgICAgICAgICogQHBhcmFtIG1heFZpZGVvQ291bnQg5Y+v5Lul6L+e57ut55yL5pyA5aSn6KeG6aKR5Liq5pWw77yM5Y+v5pyA5aSn5YyW5ZWG5Lia5pWI546H44CC6buY6K6k5Li6M+S4quOAglxyXG4gICAgICAgICAqIEByZXR1cm5zIFxyXG4gICAgICAgICAqL1xyXG4gICAgICAgIHNob3cob25SZXN1bHQ6IChyZXM6IEVBZFZpZGVvUmVzdWx0LCBjb3VudDogbnVtYmVyKSA9PiB2b2lkLCB0YXJnZXQ/OiBhbnksIG1heFZpZGVvQ291bnQ6IG51bWJlciA9IDMpOiB2b2lkIHtcclxuICAgICAgICAgICAgbGV0IGNhbGxiYWNrID0gKHN0YXRlOiBFQWRWaWRlb1Jlc3VsdCwgY291bnQ6IG51bWJlcikgPT4ge1xyXG4gICAgICAgICAgICAgICAgb25SZXN1bHQ/LmNhbGwodGFyZ2V0LCBzdGF0ZSwgY291bnQpO1xyXG4gICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICBpZiAoIWlzV2VjaGF0KCkgJiYgIWlzQnl0ZWRhbmNlKCkpIHtcclxuICAgICAgICAgICAgICAgIGNhbGxiYWNrKEVBZFZpZGVvUmVzdWx0LkFDQ0VQVCwgMSk7XHJcbiAgICAgICAgICAgICAgICB0aGlzLl9hZFZpZGVvID0gbnVsbDtcclxuICAgICAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgbGV0IG9uQWRWaWRlb0Nsb3NlZCA9IChyZXM6IGFueSkgPT4ge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5fYWRWaWRlbz8ub2ZmQ2xvc2Uob25BZFZpZGVvQ2xvc2VkKTtcclxuICAgICAgICAgICAgICAgIGlmIChpc1dlY2hhdCgpKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKHJlcyAmJiByZXMuaXNFbmRlZCB8fCByZXMgPT09IHVuZGVmaW5lZCkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBjYWxsYmFjayhFQWRWaWRlb1Jlc3VsdC5BQ0NFUFQsIDEpO1xyXG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhbGxiYWNrKEVBZFZpZGVvUmVzdWx0LlJFSkVDVCwgMCk7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfSBlbHNlIGlmIChpc0J5dGVkYW5jZSgpKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgbGV0IHJlc0NvbnZlcnRlZCA9IHJlcyBhcyB7IGlzRW5kZWQ6IGJvb2xlYW4sIGNvdW50OiBudW1iZXIgfTtcclxuICAgICAgICAgICAgICAgICAgICBpZiAocmVzQ29udmVydGVkICYmIHJlc0NvbnZlcnRlZC5jb3VudCA+IDApIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgY2FsbGJhY2soRUFkVmlkZW9SZXN1bHQuQUNDRVBULCByZXNDb252ZXJ0ZWQuY291bnQpO1xyXG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhbGxiYWNrKEVBZFZpZGVvUmVzdWx0LlJFSkVDVCwgMCk7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICB0aGlzLl9hZFZpZGVvPy5vZmZDbG9zZShvbkFkVmlkZW9DbG9zZWQpO1xyXG5cclxuICAgICAgICAgICAgaWYgKGlzV2VjaGF0KCkpIHtcclxuICAgICAgICAgICAgICAgIC8vIEB0cy1pZ25vcmVcclxuICAgICAgICAgICAgICAgIHRoaXMuX2FkVmlkZW8gPSB3eC5jcmVhdGVSZXdhcmRlZFZpZGVvQWQoe1xyXG4gICAgICAgICAgICAgICAgICAgIGFkVW5pdElkOiB0aGlzLl9hZFVpZFxyXG4gICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoaXNCeXRlZGFuY2UoKSkge1xyXG4gICAgICAgICAgICAgICAgLy8gQHRzLWlnbm9yZVxyXG4gICAgICAgICAgICAgICAgdGhpcy5fYWRWaWRlbyA9IHR0LmNyZWF0ZVJld2FyZGVkVmlkZW9BZCh7XHJcbiAgICAgICAgICAgICAgICAgICAgYWRVbml0SWQ6IHRoaXMuX2FkVWlkLFxyXG4gICAgICAgICAgICAgICAgICAgIG11bHRpdG9uOiB0cnVlLFxyXG4gICAgICAgICAgICAgICAgICAgIG11bHRpdG9uUmV3YXJkTXNnOiBbJ+WkmjHmrKHlpZblirEnLCAn5YaN5aSa5LiA5qyh5aWW5YqxJywgJ+WGjeWkmuS4gOasoeWlluWKsSddLFxyXG4gICAgICAgICAgICAgICAgICAgIG11bHRpdG9uUmV3YXJkVGltZXM6IG1heFZpZGVvQ291bnQsXHJcbiAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgIHRoaXMuX2FkVmlkZW8gPSBudWxsO1xyXG4gICAgICAgICAgICB9XHJcblxyXG5cclxuICAgICAgICAgICAgdGhpcy5fYWRWaWRlbz8ub25Mb2FkKCgpID0+IHtcclxuICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKCdBZCBsb2FkIHN1Y2Nlc3MnKTtcclxuICAgICAgICAgICAgfSk7XHJcblxyXG4gICAgICAgICAgICB0aGlzLl9hZFZpZGVvPy5vbkVycm9yKChlcnI6IHsgZXJyTXNnOiBzdHJpbmcsIGVyckNvZGU6IG51bWJlciB9KSA9PiB7XHJcbiAgICAgICAgICAgICAgICBjb25zb2xlLmxvZygnQWQgdmlkZW8gZXJyb3I6JywgZXJyKTtcclxuICAgICAgICAgICAgICAgIGNhbGxiYWNrKEVBZFZpZGVvUmVzdWx0LkVSUk9SLCAwKTtcclxuICAgICAgICAgICAgfSk7XHJcblxyXG4gICAgICAgICAgICB0aGlzLl9hZFZpZGVvPy5vbkNsb3NlKG9uQWRWaWRlb0Nsb3NlZCk7XHJcblxyXG4gICAgICAgICAgICB0aGlzLl9hZFZpZGVvPy5zaG93KCkuY2F0Y2goKCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5fYWRWaWRlbz8ubG9hZCgpLnRoZW4oKCkgPT5cclxuICAgICAgICAgICAgICAgICAgICB0aGlzLl9hZFZpZGVvPy5zaG93KCkpLmNhdGNoKChlcnI6IHsgZXJyTXNnOiBzdHJpbmcsIGVyckNvZGU6IG51bWJlciB9KSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKCdDYXRjaCB2aWRlbyBhZCBlcnJvcjonLCBlcnIpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBjYWxsYmFjayhFQWRWaWRlb1Jlc3VsdC5FUlJPUiwgMCk7XHJcbiAgICAgICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgZGVzdG9yeSgpIHtcclxuICAgICAgICAgICAgdGhpcy5fYWRWaWRlbz8uZGVzdG9yeSgpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBleHBvcnQgZW51bSBFQWRCYW5uZXJMb2NhdGlvbiB7XHJcbiAgICAgICAgLyoqXHJcbiAgICAgICAgICog5bGP5bmV6aG26YOoXHJcbiAgICAgICAgICovXHJcbiAgICAgICAgVE9QLFxyXG5cclxuICAgICAgICAvKipcclxuICAgICAgICAgKiDlsY/luZXlupXpg6hcclxuICAgICAgICAgKi9cclxuICAgICAgICBCT1RUT00sXHJcbiAgICB9XHJcblxyXG4gICAgZXhwb3J0IGNsYXNzIEFkdmVydE1hbmFnZXIge1xyXG5cclxuICAgICAgICBwcml2YXRlIHN0YXRpYyBfaW5zdGFuY2U6IEFkdmVydE1hbmFnZXI7XHJcblxyXG4gICAgICAgIHN0YXRpYyBnZXQgaW5zdGFuY2UoKTogQWR2ZXJ0TWFuYWdlciB7XHJcbiAgICAgICAgICAgIGlmICghQWR2ZXJ0TWFuYWdlci5faW5zdGFuY2UpIHtcclxuICAgICAgICAgICAgICAgIEFkdmVydE1hbmFnZXIuX2luc3RhbmNlID0gbmV3IEFkdmVydE1hbmFnZXIoKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICByZXR1cm4gQWR2ZXJ0TWFuYWdlci5faW5zdGFuY2U7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBwcml2YXRlIF92aWRlbzogQURWaWRlbztcclxuICAgICAgICBwcml2YXRlIF9pbnRlcnN0aXRpYWw6IEFESW50ZXJzdGl0aWFsO1xyXG4gICAgICAgIHByaXZhdGUgX2Jhbm5lcjogQURCYW5uZXI7XHJcbiAgICAgICAgcHJpdmF0ZSBfY3VzdG9tczogUmVjb3JkPHN0cmluZywgQURDdXN0b20+ID0ge307XHJcblxyXG4gICAgICAgIHByaXZhdGUgY29uc3RydWN0b3IoKSB7XHJcblxyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgLyoqXHJcbiAgICAgICAgICog6aKE5Yqg6L295qiq5bmF5bm/5ZGK77yM5LiN5Lya5pi+56S644CC5Y+q5pyJ5L2g5Zyo6LCD55Soc2hvd0Jhbm5lcuaXtuaJjeS8muaYvuekuuOAglxyXG4gICAgICAgICAqIOWPr+mHjeWkjeiwg+eUqO+8jOS9huaYr+S8mumUgOavgeS4iuS4gOasoeeahOWunuS+i+OAguS4gOiIrOaDheWGte+8jOWFqOWxgOacieS4gOS4quWwseihjOS6hu+8jOWkquWkmuWNoOeUqOWGheWtmO+8jOiAjOS4lOayoeW/heimgeOAglxyXG4gICAgICAgICAqIEBwYXJhbSBhZFVpZCDlub/lkYpVSURcclxuICAgICAgICAgKiBAcGFyYW0gbG9jYXRpb24g5L2N572u5pyJ5Lik56eN5oOF5Ya177yaMeOAgeWPr+S7peS8oOWFpeaemuS4vuWAvO+8jOm7mOiupOS4iuaWuTsgMuOAgeWPr+S7peiHquWumuS5ieS9jee9ruS8oOWFpUlQb3NpdGlvbu+8jOazqOaEj0lQb3NpdGlvbuS4reeahHRvcOWSjGxlZnTot5/lubPlj7DnmoR0b3AsbGVmdOaYr+S4gOiHtO+8iOayoeacieS5mOS7peiuvuWkh+WDj+e0oOavlHJhdGlv77yJ77yM6ZyA6KaB5byA5Y+R6ICF6Ieq5bex6LCD6K+V5L2N572uXHJcbiAgICAgICAgICogQHBhcmFtIHNjYWxlIOm7mOiupOS4uui3n+Wxj+W5leS4gOagt+eahOWuveW6pu+8jOWPr+S7pemAmui/h+iuvue9rue8qeaUvuavlOS+i+adpeiwg+aVtOWkp+Wwj+OAguW9k+eEtu+8jOW5s+WPsOacieinhOWumuacgOWkp+aIluacgOWwj+WuveW6pu+8jOWHveaVsOWGhemDqOS8muiHquWKqOiuoeeul+OAglxyXG4gICAgICAgICAqL1xyXG4gICAgICAgIHB1YmxpYyBsb2FkQmFubmVyKGFkVWlkOiBzdHJpbmcsIGxvY2F0aW9uOiBFQWRCYW5uZXJMb2NhdGlvbiB8IElQb3NpdGlvbiA9IEVBZEJhbm5lckxvY2F0aW9uLlRPUCwgc2NhbGU6IG51bWJlciA9IDEuMCkge1xyXG4gICAgICAgICAgICB0aGlzLl9iYW5uZXI/LmRlc3Ryb3koKTtcclxuICAgICAgICAgICAgbGV0IHNpemU6IElTaXplID0gZ2V0U3lzV2luU2l6ZSgpO1xyXG4gICAgICAgICAgICAvLyDlvZMgc3R5bGUud2lkdGgg5bCP5LqOIDMwMCDml7bvvIzkvJrlj5bkvZwgMzAw44CCIOW9kyBzdHlsZS53aWR0aCDlpKfkuo7lsY/luZXlrr3luqbml7bvvIzkvJrlj5bkvZzlsY/luZXlrr3luqbjgIJcclxuICAgICAgICAgICAgbGV0IHdpZHRoID0gc2l6ZS53aWR0aCAqIHNjYWxlO1xyXG4gICAgICAgICAgICB3aWR0aCA9IHdpZHRoIDwgMzAwID8gMzAwIDogd2lkdGg7IC8vIOacgOWwj+WAvOefq+ato1xyXG4gICAgICAgICAgICB3aWR0aCA9IHdpZHRoID4gc2l6ZS53aWR0aCA/IHNpemUud2lkdGggOiB3aWR0aDsgLy/mnIDlpKflgLznn6vmraNcclxuICAgICAgICAgICAgdGhpcy5fYmFubmVyID0gdHlwZW9mIGxvY2F0aW9uID09PSAnbnVtYmVyJyA/IG5ldyBBREJhbm5lcihhZFVpZCwgbG9jYXRpb24gPT09IEVBZEJhbm5lckxvY2F0aW9uLlRPUCwgd2lkdGgsIGZhbHNlKSA6IG5ldyBBREJhbm5lcihhZFVpZCwgbG9jYXRpb24sIHdpZHRoLCBmYWxzZSk7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICAvKipcclxuICAgICAgICAgKiDmmL7npLrmqKrluYXlub/lkYpcclxuICAgICAgICAgKi9cclxuICAgICAgICBwdWJsaWMgc2hvd0Jhbm5lcigpIHtcclxuICAgICAgICAgICAgaWYgKHRoaXMuX2Jhbm5lcikge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5fYmFubmVyLnNob3coKTtcclxuICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgIGNvbnNvbGUud2FybignTWluaUdhbWVTREs6IGJhbm5lciBpcyBudWxsLCB5b3UgbXVzdCBjYWxsIGxvYWRCYW5uZXIoLi4uKSBmaXJzdCEnKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgLyoqXHJcbiAgICAgICAgICog6ZqQ6JeP5qiq5bmF5bm/5ZGKXHJcbiAgICAgICAgICovXHJcbiAgICAgICAgcHVibGljIGhpZGVCYW5uZXIoKSB7XHJcbiAgICAgICAgICAgIHRoaXMuX2Jhbm5lcj8uaGlkZSgpO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgLyoqXHJcbiAgICAgICAgICog5by55Ye65o+S5bGP5bm/5ZGKXHJcbiAgICAgICAgICogQHBhcmFtIGFkVWlkIOW5v+WRiuWNleWFg2lkXHJcbiAgICAgICAgICovXHJcbiAgICAgICAgcHVibGljIHNob3dJbnRlcnN0aXRpYWwoYWRVaWQ6IHN0cmluZykge1xyXG4gICAgICAgICAgICBpZiAodGhpcy5faW50ZXJzdGl0aWFsICYmIHRoaXMuX2ludGVyc3RpdGlhbC5hZHVpZCA9PT0gYWRVaWQpIHtcclxuICAgICAgICAgICAgICAgIHRoaXMuX2ludGVyc3RpdGlhbC5zaG93KCk7XHJcbiAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLl9pbnRlcnN0aXRpYWw/LmRlc3RvcnkoKTtcclxuICAgICAgICAgICAgICAgIHRoaXMuX2ludGVyc3RpdGlhbCA9IG5ldyBBREludGVyc3RpdGlhbChhZFVpZCk7XHJcbiAgICAgICAgICAgICAgICB0aGlzLl9pbnRlcnN0aXRpYWwuc2hvdygpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICAvKipcclxuICAgICAgICAgKiDliqDovb3ljp/nlJ/mqKHmnb/lub/lkYrvvIzkuI3kvJrmmL7npLrjgILlj6rmnInkvaDlnKjosIPnlKhzaG93Q3VzdG9t5pe25omN5Lya5pi+56S644CCXHJcbiAgICAgICAgICog55Sx5LqO5Y6f55Sf5qih5p2/5bm/5ZGK5Zyo5b6u5L+h5pyN5Yqh5ZCO56uv5Y+v5Lul5a6a5Yi25a695bqm5aSn5bCP77yM5Liq5pWw77yM57yp5pS+5q+U5L6L562J77yM5omA5Lul5L2N572u6LCD5pW06KaB5qC55o2u6K6+572u55qE5a695bqm5p2l5a6a44CC5oqW6Z+z5LiN5pSv5oyB5pys5Ye95pWw77yM5Lya6LCD55So5peg5pWI77yBXHJcbiAgICAgICAgICogQHBhcmFtIGFkVWlkIOW5v+WRiklEXHJcbiAgICAgICAgICogQHBhcmFtIGxvY2F0aW9uIOS9jee9ruacieS4pOenjeaDheWGte+8mjHjgIHlj6/ku6XkvKDlhaXmnprkuL7lgLzvvIzpu5jorqTkuIrmlrk7IDLjgIHlj6/ku6Xoh6rlrprkuYnkvY3nva7kvKDlhaVJUG9zaXRpb27vvIzms6jmhI9JUG9zaXRpb27kuK3nmoR0b3DlkoxsZWZ06Lef5bmz5Y+w55qEdG9wLGxlZnTmmK/kuIDoh7TvvIjmsqHmnInkuZjku6Xorr7lpIflg4/ntKDmr5RyYXRpb++8ie+8jOmcgOimgeW8gOWPkeiAheiHquW3seiwg+ivleS9jee9rlxyXG4gICAgICAgICAqIEBwYXJhbSBzY2FsZSDnvKnmlL7mr5TkvovvvIzpu5jorqTmmK8x77yM5Y2z5LiN57yp5pS+44CC6L+Z5Liq57yp5pS+5bm25LiN5piv6Ieq5bex5aGr77yM6ICM5piv5qC55o2u5b6u5L+hTVDlkI7lj7DkvaDphY3nva7nmoTljp/nlJ/mqKHmnb/lub/lkYrnmoTnvKnmlL7mr5TkvovloavvvIznm67liY3mnIkxMDAl77yMOTAl77yMODAl5LiJ56eN77yM5LiA6Iis5oOF5Ya15LiN55So5L+u5pS544CC6Iul5pyJ5ZCO5Y+w5L+u5pS577yM6K6w5b6X5Lyg5YWl5YC877yM5L6L5aaCOTAl5bCx5Lyg5YWlMC4544CCXHJcbiAgICAgICAgICovXHJcbiAgICAgICAgcHVibGljIGxvYWRDdXN0b20oYWRVaWQ6IHN0cmluZywgbG9jYXRpb246IElQb3NpdGlvbiA9IHsgdG9wOiAwLCBsZWZ0OiAwIH0sIHNjYWxlOiBudW1iZXIgPSAxKSB7XHJcbiAgICAgICAgICAgIC8vIHRoaXMuX2N1c3RvbT8uZGVzdHJveSgpO1xyXG4gICAgICAgICAgICAvLyB0aGlzLl9jdXN0b20gPSBuZXcgQURDdXN0b20oYWRVaWQsIGxvY2F0aW9uLnRvcCwgbG9jYXRpb24ubGVmdCwgc2NhbGUpO1xyXG4gICAgICAgICAgICBpZiAodGhpcy5fY3VzdG9tc1thZFVpZF0pIHtcclxuICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKGAke2FkVWlkfSBoYXMgYmVlbiBsb2FkZWQuYCk7XHJcbiAgICAgICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgIHRoaXMuX2N1c3RvbXNbYWRVaWRdID0gbmV3IEFEQ3VzdG9tKGFkVWlkLCBsb2NhdGlvbi50b3AsIGxvY2F0aW9uLmxlZnQsIHNjYWxlKTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIC8qKlxyXG4gICAgICAgICAqIOaYvuekuuiHquWumuS5ieW5v+WRiuOAglxyXG4gICAgICAgICAqIEBwYXJhbSBhZFVpZCDlub/lkYrnmoTllK/kuIDmoIfor4bnrKbjgILkvb/nlKjmraTmoIfor4bnrKbmnaXmn6Xmib7lkozmmL7npLrnibnlrprnmoToh6rlrprkuYnlub/lkYrjgIJcclxuICAgICAgICAgKiBcclxuICAgICAgICAgKiDmraTmlrnms5XlsJ3or5XmoLnmja7mj5DkvpvnmoRhZFVpZOaYvuekuuS4gOS4quiHquWumuS5ieW5v+WRiuOAguWmguaenOe7meWumueahGFkVWlk5a+55bqU55qE6Ieq5a6a5LmJ5bm/5ZGK5bey5Yqg6L2977yMXHJcbiAgICAgICAgICog5YiZ6LCD55So6K+l5bm/5ZGK55qE5pi+56S65pa55rOV44CC5aaC5p6c5bm/5ZGK5pyq5Yqg6L2977yM5YiZ5Zyo5o6n5Yi25Y+w6L6T5Ye66K2m5ZGK5L+h5oGv44CCXHJcbiAgICAgICAgICovXHJcbiAgICAgICAgcHVibGljIHNob3dDdXN0b20oYWRVaWQ6IHN0cmluZykge1xyXG4gICAgICAgICAgICBpZiAodGhpcy5fY3VzdG9tc1thZFVpZF0pIHtcclxuICAgICAgICAgICAgICAgIHRoaXMuX2N1c3RvbXNbYWRVaWRdLnNob3coKTtcclxuICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgIGNvbnNvbGUud2FybihgWW91IGhhdmUgbm90IGxvYWQgJHthZFVpZH0gb2YgQ3VzdG9tIEFELCBjYW4gbm90IHNob3chYCk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIC8qKlxyXG4gICAgICAgICAqIOmakOiXj+aMh+WumueahOiHquWumuS5ieW5v+WRiuWNleWFg1xyXG4gICAgICAgICAqIFxyXG4gICAgICAgICAqIOatpOaWueazleeUqOS6jumakOiXj+mAmui/h+W5v+WRiuWNleWFg+agh+ivhuespu+8iGFkVWlk77yJ5oyH5a6a55qE6Ieq5a6a5LmJ5bm/5ZGK44CC5aaC5p6c5oyH5a6a55qE5bm/5ZGK5Y2V5YWD5bey5Yqg6L295bm25pi+56S677yMXHJcbiAgICAgICAgICog5YiZ5bCG5YW26ZqQ6JeP77yb5aaC5p6c5bm/5ZGK5Y2V5YWD5pyq5Yqg6L2977yM5YiZ5Zyo5o6n5Yi25Y+w6L6T5Ye66K2m5ZGK5L+h5oGv44CCXHJcbiAgICAgICAgICogXHJcbiAgICAgICAgICogQHBhcmFtIGFkVWlkIOW5v+WRiuWNleWFg+agh+ivhuespu+8jOeUqOS6juWUr+S4gOagh+ivhuS4gOS4quiHquWumuS5ieW5v+WRiuWNleWFg+OAglxyXG4gICAgICAgICAqL1xyXG4gICAgICAgIHB1YmxpYyBoaWRlQ3VzdG9tKGFkVWlkOiBzdHJpbmcpIHtcclxuICAgICAgICAgICAgaWYgKHRoaXMuX2N1c3RvbXNbYWRVaWRdKSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLl9jdXN0b21zW2FkVWlkXS5oaWRlKCk7XHJcbiAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICBjb25zb2xlLndhcm4oYFlvdSBoYXZlIG5vdCBsb2FkICR7YWRVaWR9IG9mIEN1c3RvbSBBRCwgY2FuIG5vdCBoaWRlIWApO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICAvKipcclxuICAgICAgICAgKiDnlLHkuo7lvq7kv6Hlkozmipbpn7Pop4bpopHlub/lkYrmnLrliLbkuI3lkIzvvIzlvq7kv6Hlj6/ku6XnnIvnmoTop4bpopHlub/lkYrkuKrmlbDlj6rmnIkw5ZKMMeS4qu+8jOaKlumfs+W5s+WPsOWImeWPr+S7peecizB+bWF4VmlkZW9Db3VudFxyXG4gICAgICAgICAqIEBwYXJhbSBhZFVpZCDlub/lkYpJROOAguWmguaenOS4juS4iuS4gOasoVVJROS4jeWQjO+8jOWImeWGhemDqOS8mumHjeaWsOWIm+W7uuWunuS+i+OAguW8gOWPkeiAheWujOWFqOS4jeeUqOWFs+W/g+i/meS4que7huiKguOAglxyXG4gICAgICAgICAqIEBwYXJhbSBvblZpZGVvUmVzdWx0IOS4pOS4quWPguaVsO+8muesrOS4gOS4qnJlc+aYr0VBZFZpZGVvUmVzdWx05a6a5LmJ77yM56ys5LqMY291bnTmmK/nlKjmiLfnnIvkuoblpJrlsJHkuKrop4bpopHlub/lkYrjgIIgXHJcbiAgICAgICAgICogQHBhcmFtIHRhcmdldCBvblZpZGVvUmVzdWx055qE5oul5pyJ6ICFXHJcbiAgICAgICAgICogQHBhcmFtIG1heFZpZGVvQ291bnQg5pyA5aSn6KeG6aKR5Liq5pWw44CC6buY6K6k5pivM++8jOS7heWvueaKlumfs+W5s+WPsOeUn+aViOOAguW+ruS/oeW5s+WPsOeci+WujOinhumikWNvdW5055qE57uT5p6c5rC46L+c5pivMeaIljBcclxuICAgICAgICAgKi9cclxuICAgICAgICBwdWJsaWMgc2hvd1ZpZGVvKGFkVWlkOiBzdHJpbmcsIG9uVmlkZW9SZXN1bHQ6IChyZXM6IEVBZFZpZGVvUmVzdWx0LCBjb3VudDogbnVtYmVyKSA9PiB2b2lkLCB0YXJnZXQ/OiBhbnksIG1heFZpZGVvQ291bnQ6IG51bWJlciA9IDMpIHtcclxuICAgICAgICAgICAgaWYgKHRoaXMuX3ZpZGVvICYmIHRoaXMuX3ZpZGVvLmFkdWlkID09PSBhZFVpZCkge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5fdmlkZW8uc2hvdyhvblZpZGVvUmVzdWx0LCB0YXJnZXQsIG1heFZpZGVvQ291bnQpO1xyXG4gICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5fdmlkZW8/LmRlc3RvcnkoKTtcclxuICAgICAgICAgICAgICAgIHRoaXMuX3ZpZGVvID0gbmV3IEFEVmlkZW8oYWRVaWQpO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5fdmlkZW8uc2hvdyhvblZpZGVvUmVzdWx0LCB0YXJnZXQsIG1heFZpZGVvQ291bnQpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICAvKipcclxuICAgICAgICAgKiDplIDmr4HlhoXpg6jmiYDmnInlrp7kvovvvIzmuIXnqbrlhoXlrZhcclxuICAgICAgICAgKi9cclxuICAgICAgICBwdWJsaWMgZGVzdHJveUFsbCgpIHtcclxuICAgICAgICAgICAgdGhpcy5fYmFubmVyPy5kZXN0cm95KCk7XHJcbiAgICAgICAgICAgIHRoaXMuX2Jhbm5lciA9IG51bGw7XHJcblxyXG4gICAgICAgICAgICB0aGlzLl9pbnRlcnN0aXRpYWw/LmRlc3RvcnkoKTtcclxuICAgICAgICAgICAgdGhpcy5faW50ZXJzdGl0aWFsID0gbnVsbDtcclxuXHJcbiAgICAgICAgICAgIHRoaXMuX3ZpZGVvPy5kZXN0b3J5KCk7XHJcbiAgICAgICAgICAgIHRoaXMuX3ZpZGVvID0gbnVsbDtcclxuXHJcbiAgICAgICAgICAgIGlmICh0aGlzLl9jdXN0b21zKSB7XHJcbiAgICAgICAgICAgICAgICBmb3IgKGxldCB2YWwgaW4gdGhpcy5fY3VzdG9tcykge1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuX2N1c3RvbXNbdmFsXT8uZGVzdHJveSgpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgdGhpcy5fY3VzdG9tcyA9IHt9O1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIGV4cG9ydCBlbnVtIEVHYW1lQ2x1Ykljb24ge1xyXG4gICAgICAgIC8qKiDnu7/oibLlm77moIcgKi9cclxuICAgICAgICBHUkVFTiA9ICdncmVlbicsXHJcblxyXG4gICAgICAgIC8qKiDnuqLoibLlm77moIcgKi9cclxuICAgICAgICBXSElURSA9ICd3aGl0ZScsXHJcblxyXG4gICAgICAgIC8qKiDmnInpu5HoibLlnIbop5Log4zmma/nmoTnmb3oibLlm77moIcgKi9cclxuICAgICAgICBEQVJLID0gJ2RhcmsnLFxyXG5cclxuICAgICAgICAvKiog5pyJ55m96Imy5ZyG6KeS6IOM5pmv55qE57u/6Imy5Zu+5qCHICovXHJcbiAgICAgICAgTElHSFQgPSAnbGlnaHQnXHJcbiAgICB9XHJcblxyXG4gICAgZXhwb3J0IGNsYXNzIEdhbWVDbHViIHtcclxuICAgICAgICBwcml2YXRlIHN0YXRpYyBfaW5zdGFuY2U6IEdhbWVDbHViO1xyXG5cclxuICAgICAgICBzdGF0aWMgZ2V0IGluc3RhbmNlKCk6IEdhbWVDbHViIHtcclxuICAgICAgICAgICAgaWYgKCF0aGlzLl9pbnN0YW5jZSkge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5faW5zdGFuY2UgPSBuZXcgR2FtZUNsdWIoKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICByZXR1cm4gdGhpcy5faW5zdGFuY2U7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBwcml2YXRlIF9jbHViOiBhbnk7XHJcblxyXG4gICAgICAgIHByaXZhdGUgY29uc3RydWN0b3IoKSB7XHJcblxyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgLyoqXHJcbiAgICAgICAgICog5Yib5bu65ri45oiP5ZyI5oyJ6ZKuXHJcbiAgICAgICAgICogQHBhcmFtIGljb24gXHJcbiAgICAgICAgICogQHBhcmFtIHBvc2l0aW9uIFxyXG4gICAgICAgICAqIEBwYXJhbSBzaXplIFxyXG4gICAgICAgICAqIEBwYXJhbSBvcGVuTGluayBcclxuICAgICAgICAgKi9cclxuICAgICAgICBjcmVhdGUoaWNvbjogRUdhbWVDbHViSWNvbiA9IEVHYW1lQ2x1Ykljb24uR1JFRU4sIHBvc2l0aW9uOiBJUG9zaXRpb24gPSB7IHRvcDogMCwgbGVmdDogMCB9LCBzaXplOiBJU2l6ZSA9IHsgd2lkdGg6IDQwLCBoZWlnaHQ6IDQwIH0sIG9wZW5MaW5rPzogc3RyaW5nKSB7XHJcbiAgICAgICAgICAgIGlmIChpc1dlY2hhdCgpKSB7XHJcbiAgICAgICAgICAgICAgICAvLyBAdHMtaWdub3JlXHJcbiAgICAgICAgICAgICAgICB0aGlzLl9jbHViID0gd3guY3JlYXRlR2FtZUNsdWJCdXR0b24oe1xyXG4gICAgICAgICAgICAgICAgICAgIGljb246IGljb24sXHJcbiAgICAgICAgICAgICAgICAgICAgc3R5bGU6IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgbGVmdDogcG9zaXRpb24ubGVmdCxcclxuICAgICAgICAgICAgICAgICAgICAgICAgdG9wOiBwb3NpdGlvbi50b3AsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHdpZHRoOiBzaXplLndpZHRoLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBoZWlnaHQ6IHNpemUuaGVpZ2h0XHJcbiAgICAgICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICAgICAgICBvcGVubGluazogb3BlbkxpbmtcclxuICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBzaG93KCkge1xyXG4gICAgICAgICAgICB0aGlzLl9jbHViPy5zaG93KCk7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBoaWRlKCkge1xyXG4gICAgICAgICAgICB0aGlzLl9jbHViPy5oaWRlKCk7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBkZXN0b3J5KCkge1xyXG4gICAgICAgICAgICB0aGlzLl9jbHViPy5kZXN0cm95KCk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuXHJcbiAgICAvKipcclxuICAgICAqIOaMr+WKqOexu+Wei1xyXG4gICAgICovXHJcbiAgICBleHBvcnQgZW51bSBFVmlyYnJhdGVUeXBlIHtcclxuICAgICAgICAvKipcclxuICAgICAgICAgKiDnn63mjK/liqhcclxuICAgICAgICAgKi9cclxuICAgICAgICBTSE9SVCxcclxuXHJcbiAgICAgICAgLyoqXHJcbiAgICAgICAgICog6ZW/5oyv5YqoXHJcbiAgICAgICAgICovXHJcbiAgICAgICAgTE9OR1xyXG4gICAgfVxyXG5cclxuXHJcblxyXG4gICAgICAgIC8qKlxyXG4gICAgICog5oqW6Z+z5L6n6L655qCP5LiT5bGe5o6l5Y+jXHJcbiAgICAgKi9cclxuICAgIGV4cG9ydCBjbGFzcyBCeXRlZGFuY2VTaWRlYmFyIHtcclxuICAgICAgICAvKipcclxuICAgICAgICAgKiDmnKzmuLjmiI/lnKjmipbpn7Pnjq/looPkuIvlkK/liqjnm5HmjqfvvIzpnIDopoHmlL7lnKjlhajlsYDnjq/looPkuK3vvIzkv53or4Hog73nrKzkuIDml7bpl7TlkK/liqjjgILlm6DkuLrlj6/og73nm5HlkKzmipbpn7PlpLHotKXvvIjmipbpn7PlsI/muLjmiI/lrpjmlrnnmoTor7TmmI7vvInvvIFcclxuICAgICAgICAgKiBAcGFyYW0gb25SZXN1bHQg5YyF5ZCr5LiA5LiqYm9vbGVhbuWPguaVsOeahOWHveaVsFxyXG4gICAgICAgICAqIEBwYXJhbSB0YXJnZXQg5LiK6L+w5Ye95pWw55qE5oul5pyJ6ICF77yM5aaC5p6c5piv57G755qE5oiQ5ZGY5Ye95pWw77yM6ZyA6KaB5Lyg5YWldGhpc+OAguaZrumAmuaIluWMv+WQjeWHveaVsOW/veeVpeWNs+WPr+OAglxyXG4gICAgICAgICAqL1xyXG4gICAgICAgIHN0YXRpYyBsaXN0ZW5Gcm9tU2lkZWJhcihvblJlc3VsdDogKHN1Y2Nlc3M6IGJvb2xlYW4pID0+IHZvaWQsIHRhcmdldD86IGFueSkge1xyXG4gICAgICAgICAgICBpZiAoIWlzQnl0ZWRhbmNlKCkpIHtcclxuICAgICAgICAgICAgICAgIG9uUmVzdWx0Py5jYWxsKHRhcmdldCwgZmFsc2UpO1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIC8vIEB0cy1pZ25vcmVcclxuICAgICAgICAgICAgdHQub25TaG93KChyZXM6IGFueSkgPT4ge1xyXG4gICAgICAgICAgICAgICAgY29uc29sZS5sb2coJ29uU2hvdyBsYXVuY2ggcmVzOicsIHJlcyk7XHJcbiAgICAgICAgICAgICAgICBpZiAocmVzLnNjZW5lID09PSAnMDIxMDM2Jykge1xyXG4gICAgICAgICAgICAgICAgICAgIG9uUmVzdWx0Py5jYWxsKHRhcmdldCwgdHJ1ZSk7XHJcbiAgICAgICAgICAgICAgICAgICAgY29uc29sZS5sb2coJ2xhdW5jaCBmcm9tIHNpZGViYXInKTtcclxuICAgICAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgICAgb25SZXN1bHQ/LmNhbGwodGFyZ2V0LCBmYWxzZSk7XHJcbiAgICAgICAgICAgICAgICAgICAgY29uc29sZS5sb2coJ05PVCBsYXVuY2ggZnJvbSBkb3V5aW4gc2lkZWJhciEnKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfSk7XHJcblxyXG4gICAgICAgICAgICAvLyBAdHMtaWdub3JlXHJcbiAgICAgICAgICAgIGxldCBvcHRpb25zID0gdHQuZ2V0TGF1bmNoT3B0aW9uc1N5bmMoKTtcclxuICAgICAgICAgICAgaWYgKG9wdGlvbnMgJiYgb3B0aW9ucy5zY2VuZSA9PT0gJzAyMTAzNicpIHtcclxuICAgICAgICAgICAgICAgIG9uUmVzdWx0Py5jYWxsKHRhcmdldCwgdHJ1ZSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIC8qKlxyXG4gICAgICAgICAqIOajgOa1i+aKlumfs+S+p+i+ueagj+aYr+WQpuWtmOWcqFxyXG4gICAgICAgICAqIEBwYXJhbSBvblJlc3VsdCDljIXlkKvkuIDkuKpib29sZWFu5Y+C5pWw55qE5Ye95pWwXHJcbiAgICAgICAgICogQHBhcmFtIHRhcmdldCDkuIrov7Dlh73mlbDnmoTmi6XmnInogIXvvIzlpoLmnpzmmK/nsbvnmoTmiJDlkZjlh73mlbDvvIzpnIDopoHkvKDlhaV0aGlz44CC5pmu6YCa5oiW5Yy/5ZCN5Ye95pWw5b+955Wl5Y2z5Y+v44CCXHJcbiAgICAgICAgICogQHJldHVybnMgXHJcbiAgICAgICAgICovXHJcbiAgICAgICAgc3RhdGljIGNoZWNrU2lkZUJhcihvblJlc3VsdDogKHN1Y2Nlc3M6IGJvb2xlYW4pID0+IHZvaWQsIHRhcmdldD86IGFueSkge1xyXG4gICAgICAgICAgICBpZiAoIWlzQnl0ZWRhbmNlKCkpIHtcclxuICAgICAgICAgICAgICAgIG9uUmVzdWx0Py5jYWxsKHRhcmdldCwgZmFsc2UpO1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAvL0B0cy1pZ25vcmVcclxuICAgICAgICAgICAgdHQuY2hlY2tTY2VuZSh7XHJcbiAgICAgICAgICAgICAgICBzY2VuZTogXCJzaWRlYmFyXCIsXHJcbiAgICAgICAgICAgICAgICBzdWNjZXNzOiAocmVzOiBhbnkpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICBjb25zb2xlLmxvZyhcImNoZWNrIHNjZW5lIHN1Y2Nlc3M6IFwiLCByZXMuaXNFeGlzdCk7XHJcbiAgICAgICAgICAgICAgICAgICAgb25SZXN1bHQ/LmNhbGwodGFyZ2V0LCA8Ym9vbGVhbj5yZXMuaXNFeGlzdCk7XHJcblxyXG4gICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICAgIGZhaWw6IChyZXM6IGFueSkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKFwiY2hlY2sgc2NlbmUgZmFpbDpcIiwgcmVzKTtcclxuICAgICAgICAgICAgICAgICAgICBvblJlc3VsdD8uY2FsbCh0YXJnZXQsIGZhbHNlKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICAvKipcclxuICAgICAgICAgKiDot7PovazliLDmipbpn7PkvqfovrnmoI9cclxuICAgICAgICAgKiBAcGFyYW0gb25SZXN1bHQg5YyF5ZCr5LiA5LiqYm9vbGVhbuWPguaVsOeahOWHveaVsFxyXG4gICAgICAgICAqIEBwYXJhbSB0YXJnZXQg5LiK6L+w5Ye95pWw55qE5oul5pyJ6ICF77yM5aaC5p6c5piv57G755qE5oiQ5ZGY5Ye95pWw77yM6ZyA6KaB5Lyg5YWldGhpc+OAguaZrumAmuaIluWMv+WQjeWHveaVsOW/veeVpeWNs+WPr+OAglxyXG4gICAgICAgICAqIEByZXR1cm5zIFxyXG4gICAgICAgICAqL1xyXG4gICAgICAgIHN0YXRpYyBuYXZpZ2F0ZVRvU2lkZWJhcihvblJlc3VsdDogKHN1Y2Nlc3M6IGJvb2xlYW4pID0+IHZvaWQsIHRhcmdldD86IGFueSkge1xyXG4gICAgICAgICAgICBpZiAoIWlzQnl0ZWRhbmNlKCkpIHtcclxuICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKFwibm90IGRvdXlpbiBwbGF0Zm9ybSFcIik7XHJcbiAgICAgICAgICAgICAgICBvblJlc3VsdD8uY2FsbCh0YXJnZXQsIGZhbHNlKTtcclxuICAgICAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgLy8gQHRzLWlnbm9yZVxyXG4gICAgICAgICAgICB0dC5uYXZpZ2F0ZVRvU2NlbmUoe1xyXG4gICAgICAgICAgICAgICAgc2NlbmU6IFwic2lkZWJhclwiLFxyXG4gICAgICAgICAgICAgICAgc3VjY2VzczogKCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKFwibmF2aWdhdGUgc3VjY2Vzc1wiKTtcclxuICAgICAgICAgICAgICAgICAgICBvblJlc3VsdD8uY2FsbCh0YXJnZXQsIHRydWUpO1xyXG4gICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICAgIGZhaWw6IChyZXM6IGFueSkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKFwibmF2aWdhdGUgZmFpbGVkIHJlYXNvbjpcIiwgcmVzKTtcclxuICAgICAgICAgICAgICAgICAgICBvblJlc3VsdD8uY2FsbCh0YXJnZXQsIGZhbHNlKTtcclxuICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIOW5s+WPsOW4uOeUqEFQSeWQiOmbhlxyXG4gICAgICovXHJcbiAgICBleHBvcnQgY2xhc3MgQVBJIHtcclxuICAgICAgICBwcml2YXRlIHN0YXRpYyBfbG9naW5Db2RlOiBzdHJpbmcgPSBudWxsO1xyXG4gICAgICAgIHByaXZhdGUgc3RhdGljIF9sb2dpbkFub255bW91c0NvZGU6IHN0cmluZyA9IG51bGw7XHJcbiAgICAgICAgcHJpdmF0ZSBzdGF0aWMgX2hhc0luaXRXZWNoYXRDbG91ZEZ1bmN0aW9uOiBib29sZWFuID0gZmFsc2U7XHJcbiAgICAgICAgcHJpdmF0ZSBzdGF0aWMgX3VzZXJJbmZvOiBhbnkgPSBudWxsO1xyXG4gICAgICAgIHByaXZhdGUgc3RhdGljIF90YTogYW55ID0gbnVsbDtcclxuXHJcbiAgICAgICAgLyoqXHJcbiAgICAgICAgICog5YiG5LqrYXBw57uZ5pyL5Y+L77yM5b6u5L+h5bCP5ri45oiP5YiG5Lqr5piv5rKh5pyJb25TdWNjZXNz5Zue6LCD55qE44CCXHJcbiAgICAgICAgICogQHBhcmFtIHRpdGxlIOagh+mimFxyXG4gICAgICAgICAqIEBwYXJhbSBkZXNjcmlwdGlvbiDnu4boioLmj4/ov7Dkv6Hmga8gXHJcbiAgICAgICAgICogQHBhcmFtIGltYWdlVXJsIOWbvueJh+WcsOWdgFxyXG4gICAgICAgICAqIEBwYXJhbSBxdWVyeSDmn6Xor6Lkv6Hmga9cclxuICAgICAgICAgKiBAcGFyYW0gb25TdWNjZXNzIOaKlumfs+S8muWbnuiwg++8jOW+ruS/oeS4jeS8muWbnuiwg1xyXG4gICAgICAgICAqL1xyXG4gICAgICAgIHN0YXRpYyBzaGFyZUFwcFRvRnJpZW5kcyh0aXRsZTogc3RyaW5nLCBkZXNjcmlwdGlvbjogc3RyaW5nID0gJycsIGltYWdlVXJsPzogc3RyaW5nLCBxdWVyeT86IHN0cmluZywgb25TdWNjZXNzPzogKCkgPT4gdm9pZCkge1xyXG4gICAgICAgICAgICBpZiAoaXNXZWNoYXQoKSkge1xyXG4gICAgICAgICAgICAgICAgdHJ5IHtcclxuICAgICAgICAgICAgICAgICAgICAvL0B0cy1pZ25vcmVcclxuICAgICAgICAgICAgICAgICAgICB3eC5zaGFyZUFwcE1lc3NhZ2Uoe1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB0aXRsZTogdGl0bGUsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGltYWdlVXJsOiBpbWFnZVVybCxcclxuICAgICAgICAgICAgICAgICAgICAgICAgcXVlcnk6IHF1ZXJ5LFxyXG4gICAgICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICAgICAgfSBjYXRjaCAoZXJyKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgY29uc29sZS5sb2coYHNoYXJlIGZhaWxkOiAke2Vycn1gKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgaWYgKGlzQnl0ZWRhbmNlKCkpIHtcclxuICAgICAgICAgICAgICAgIC8vQHRzLWlnbm9yZVxyXG4gICAgICAgICAgICAgICAgdHQuc2hhcmVBcHBNZXNzYWdlKHtcclxuICAgICAgICAgICAgICAgICAgICB0aXRsZTogdGl0bGUsXHJcbiAgICAgICAgICAgICAgICAgICAgZGVzYzogZGVzY3JpcHRpb24sXHJcbiAgICAgICAgICAgICAgICAgICAgaW1hZ2VVcmw6IGltYWdlVXJsID8/ICcnLFxyXG4gICAgICAgICAgICAgICAgICAgIHF1ZXJ5OiBxdWVyeSA/PyAnJyxcclxuICAgICAgICAgICAgICAgICAgICBzdWNjZXNzKHJlczogYW55KSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKCdzaGFyZSBzdWNjZXNzOicsIHJlcyk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIG9uU3VjY2Vzcz8uKCk7XHJcbiAgICAgICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICAgICAgICBmYWlsKHJlczogYW55KSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKCdzaGFyZSBmYWlsOicsIHJlcyk7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIC8qKlxyXG4gICAgICAgICAqIOaYvuekuuaPkOekuuS/oeaBr1xyXG4gICAgICAgICAqIEBwYXJhbSB0aXRsZSDmoIfpophcclxuICAgICAgICAgKiBAcGFyYW0gZHVyYXRpb24g5pe26ZW/77yI5Y2V5L2N77ya56eS77yJXHJcbiAgICAgICAgICogQHJldHVybnMgXHJcbiAgICAgICAgICovXHJcbiAgICAgICAgc3RhdGljIHNob3dUb2FzdCh0aXRsZTogc3RyaW5nLCBkdXJhdGlvbjogbnVtYmVyID0gMikge1xyXG4gICAgICAgICAgICBpZiAoaXNXZWNoYXQoKSkge1xyXG4gICAgICAgICAgICAgICAgLy8gQHRzLWlnbm9yZVxyXG4gICAgICAgICAgICAgICAgd3guc2hvd1RvYXN0KHtcclxuICAgICAgICAgICAgICAgICAgICB0aXRsZTogdGl0bGUsXHJcbiAgICAgICAgICAgICAgICAgICAgaWNvbjogJ25vbmUnLFxyXG4gICAgICAgICAgICAgICAgICAgIGR1cmF0aW9uOiBkdXJhdGlvbiAqIDUwMFxyXG4gICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICAvKipcclxuICAgICAgICAgKiDorr7lpIfpnIfliqjmlYjmnpzvvIzpu5jorqTkuLrnn63pnIfliqjjgILms6jmhI/vvJrlj6/og73kuIDkupvmnLrlnovkuI3kvJrnlJ/mlYjvvIzlhbfkvZPnnIvlubPlj7DmlrnnmoTor7TmmI5cclxuICAgICAgICAgKiBAcGFyYW0gdHlwZSBNaW5pR2FtZVNkay5BUEkuRVZpcmJyYXRlVHlwZVxyXG4gICAgICAgICAqL1xyXG4gICAgICAgIHN0YXRpYyB2aWJyYXRlKHR5cGU6IEVWaXJicmF0ZVR5cGUgPSBFVmlyYnJhdGVUeXBlLlNIT1JUKSB7XHJcbiAgICAgICAgICAgIGlmIChpc1dlY2hhdCgpKSB7XHJcbiAgICAgICAgICAgICAgICBzd2l0Y2ggKHR5cGUpIHtcclxuICAgICAgICAgICAgICAgICAgICBjYXNlIEVWaXJicmF0ZVR5cGUuU0hPUlQ6XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vQHRzLWlnbm9yZVxyXG4gICAgICAgICAgICAgICAgICAgICAgICB3eC52aWJyYXRlU2hvcnQoe1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc3VjY2VzcyhyZXM6IGFueSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKCd2aWJyYXRlIHN1Y2Nlc3M6JywgcmVzKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWlsKHJlczogYW55KSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc29sZS5sb2coJ3ZpYnJhdGVTaG9ydCBmYWlsZWQnLCByZXMpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICAgICAgICAgIGNhc2UgRVZpcmJyYXRlVHlwZS5MT05HOlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAvL0B0cy1pZ25vcmVcclxuICAgICAgICAgICAgICAgICAgICAgICAgd3gudmlicmF0ZUxvbmcoe1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc3VjY2VzcyhyZXM6IGFueSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKCd2aWJyYXRlIHN1Y2Nlc3MnLCByZXMpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhaWwocmVzOiBhbnkpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zb2xlLmxvZyhgdmlicmF0ZUxvbmcgZmFpbGVkYCwgcmVzKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgICAgICAgICBkZWZhdWx0OlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgaWYgKGlzQnl0ZWRhbmNlKCkpIHtcclxuICAgICAgICAgICAgICAgIHN3aXRjaCAodHlwZSkge1xyXG4gICAgICAgICAgICAgICAgICAgIGNhc2UgRVZpcmJyYXRlVHlwZS5TSE9SVDpcclxuICAgICAgICAgICAgICAgICAgICAgICAgLy9AdHMtaWdub3JlXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHR0LnZpYnJhdGVTaG9ydCh7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdWNjZXNzKHJlczogYW55KSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc29sZS5sb2coJ3ZpYnJhdGUgc3VjY2VzczonLCByZXMpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhaWwocmVzOiBhbnkpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zb2xlLmxvZygndmlicmF0ZVNob3J0IGZhaWxlZCcsIHJlcyk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgICAgICAgICAgY2FzZSBFVmlyYnJhdGVUeXBlLkxPTkc6XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vQHRzLWlnbm9yZVxyXG4gICAgICAgICAgICAgICAgICAgICAgICB0dC52aWJyYXRlTG9uZyh7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdWNjZXNzKHJlczogYW55KSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc29sZS5sb2coJ3ZpYnJhdGUgc3VjY2VzcycsIHJlcyk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFpbChyZXM6IGFueSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKGB2aWJyYXRlTG9uZyBmYWlsZWRgLCByZXMpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICAgICAgICAgIGRlZmF1bHQ6XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICAvKipcclxuICAgICAgICAgKiDph43lkK/lsI/muLjmiI9cclxuICAgICAgICAgKi9cclxuICAgICAgICBzdGF0aWMgcmVib290KCkge1xyXG4gICAgICAgICAgICBpZiAoaXNXZWNoYXQoKSkge1xyXG4gICAgICAgICAgICAgICAgLy9AdHMtaWdub3JlXHJcbiAgICAgICAgICAgICAgICB3eC5yZXN0YXJ0TWluaVByb2dyYW0oe1xyXG4gICAgICAgICAgICAgICAgICAgIHN1Y2Nlc3M6ICgpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgY29uc29sZS5sb2coJ3Jlc3RhcnQgc3VjY2VzcycpO1xyXG4gICAgICAgICAgICAgICAgICAgIH0sXHJcblxyXG4gICAgICAgICAgICAgICAgICAgIGZhaWw6ICgpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgY29uc29sZS5sb2coJ3Jlc3RhcnQgZmFpbGVkJyk7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfSlcclxuICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgaWYgKGlzQnl0ZWRhbmNlKCkpIHtcclxuICAgICAgICAgICAgICAgIHRyeSB7XHJcbiAgICAgICAgICAgICAgICAgICAgLy8gQHRzLWlnbm9yZVxyXG4gICAgICAgICAgICAgICAgICAgIHR0LnJlc3RhcnRNaW5pUHJvZ3JhbVN5bmMoKTtcclxuICAgICAgICAgICAgICAgIH0gY2F0Y2ggKGVycm9yKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgY29uc29sZS5sb2coYHJlc3RhcnRNaW5pUHJvZ3JhbVN5bmNgLCBlcnJvcik7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIC8qKlxyXG4gICAgICAgICAqIOmAgOWHuuWwj+a4uOaIj1xyXG4gICAgICAgICAqL1xyXG4gICAgICAgIHN0YXRpYyBleGl0KCkge1xyXG4gICAgICAgICAgICBpZiAoaXNXZWNoYXQoKSkge1xyXG4gICAgICAgICAgICAgICAgLy9AdHMtaWdub3JlXHJcbiAgICAgICAgICAgICAgICB3eC5leGl0TWluaVByb2dyYW0oe1xyXG4gICAgICAgICAgICAgICAgICAgIHN1Y2Nlc3M6ICgpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgY29uc29sZS5sb2coJ2V4aXQgc3VjY2VzcycpO1xyXG4gICAgICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgICAgICAgZmFpbDogKCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zb2xlLmxvZygnZXhpdCBmYWlsZWQnKTtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgaWYgKGlzQnl0ZWRhbmNlKCkpIHtcclxuICAgICAgICAgICAgICAgIC8vIEB0cy1pZ25vcmVcclxuICAgICAgICAgICAgICAgIHR0LmV4aXRNaW5pUHJvZ3JhbSh7XHJcbiAgICAgICAgICAgICAgICAgICAgc3VjY2VzcyhyZXM6IGFueSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zb2xlLmxvZyhcImV4aXQgc3VjY2VzczpcIiwgcmVzPy5kYXRhKTtcclxuICAgICAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgICAgICAgIGZhaWwocmVzOiBhbnkpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgY29uc29sZS5sb2coXCJleGl0IGZhaWw6XCIsIHJlcz8uZXJyTXNnKTtcclxuICAgICAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIC8qKlxyXG4gICAgICAgICAqIOaYvuekuui9rOWPkeaMiemSruOAgumAmuW4uOWcqOWImui/m+WFpea4uOaIj+eahOaXtuWAmeiwg+eUqOOAglxyXG4gICAgICAgICAqIOS4u+imgeaYr+aJk+W8gOW5s+WPsOKAnC4uLuKAnei/meS4quaMiemSrumHjOmdoueahOWIhuS6q+iPnOWNle+8jOS4gOiIrOm7mOiupOaYr+WFs+mXreeahO+8jOmcgOimgeiwg+eUqOi/meS4quWHveaVsOaJk+W8gOOAguWPr+S7peiuqeeUqOaIt+WIhuS6q+S9oOeahOa4uOaIj+WFpeWPo+OAglxyXG4gICAgICAgICAqL1xyXG4gICAgICAgIHN0YXRpYyBzaG93U2hhcmVNZW51KCkge1xyXG4gICAgICAgICAgICBpZiAoaXNXZWNoYXQoKSkge1xyXG4gICAgICAgICAgICAgICAgLy9AdHMtaWdub3JlXHJcbiAgICAgICAgICAgICAgICB3eC5zaG93U2hhcmVNZW51KHtcclxuICAgICAgICAgICAgICAgICAgICB3aXRoU2hhcmVUaWNrZXQ6IHRydWUsXHJcbiAgICAgICAgICAgICAgICAgICAgbWVudXM6IFsnc2hhcmVBcHBNZXNzYWdlJywgJ3NoYXJlVGltZWxpbmUnXSxcclxuICAgICAgICAgICAgICAgICAgICBzdWNjZXNzOiAoKSA9PiB7IH0sXHJcbiAgICAgICAgICAgICAgICAgICAgZmFpbDogKCkgPT4geyB9LFxyXG4gICAgICAgICAgICAgICAgICAgIGNvbXBsZXRlOiAoKSA9PiB7IH1cclxuICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICB9XHJcblxyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgLyoqXHJcbiAgICAgICAgICog5b6u5L+h5bCP5ri45oiP77ya6Lez6L2s5Yiw5Y+m5aSW5LiA5qy+5bCP5ri45oiPXHJcbiAgICAgICAgICog5oqW6Z+z5bCP5ri45oiP77ya6Lez6L2s5Yiw5oyH5a6a55qE6KeG6aKR55WM6Z2iXHJcbiAgICAgICAgICogQHBhcmFtIHRhcmdldElkIOW+ruS/oeWwj+a4uOaIj2FwcGlk5oiW6ICF6KeG6aKR55WM6Z2iXHJcbiAgICAgICAgICovXHJcbiAgICAgICAgc3RhdGljIG5hdmlnYXRlVG8odGFyZ2V0SWQ6IHN0cmluZywgb25TdWNjZXNzPzogKCkgPT4gdm9pZCkge1xyXG4gICAgICAgICAgICBpZiAoaXNXZWNoYXQoKSkge1xyXG4gICAgICAgICAgICAgICAgLy8gQHRzLWlnbm9yZVxyXG4gICAgICAgICAgICAgICAgd3gubmF2aWdhdGVUb01pbmlQcm9ncmFtKHtcclxuICAgICAgICAgICAgICAgICAgICBhcHBJZDogdGFyZ2V0SWQsXHJcbiAgICAgICAgICAgICAgICAgICAgZXh0cmFEYXRhOiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGZvbzogJ2JhcidcclxuICAgICAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgICAgICAgIGVudlZlcnNpb246ICdkZXZlbG9wJyxcclxuICAgICAgICAgICAgICAgICAgICBzdWNjZXNzKHJlczogYW55KSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIG9uU3VjY2Vzcz8uKCk7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgIGlmIChpc0J5dGVkYW5jZSgpKSB7XHJcbiAgICAgICAgICAgICAgICAvLyBAdHMtaWdub3JlXHJcbiAgICAgICAgICAgICAgICB0dC5uYXZpZ2F0ZVRvVmlkZW9WaWV3KHtcclxuICAgICAgICAgICAgICAgICAgICB2aWRlb0lkOiB0YXJnZXRJZCxcclxuICAgICAgICAgICAgICAgICAgICBzdWNjZXNzOiAocmVzOiBhbnkpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgb25TdWNjZXNzPy4oKTtcclxuICAgICAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgICAgICAgIGZhaWw6IChlcnI6IGFueSkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zb2xlLmxvZyhcImJ5dGVkYW5jZSBuYXZpZ2F0ZVRvVmlkZW9WaWV3IGZhaWxcIiwgZXJyKTtcclxuICAgICAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcblxyXG5cclxuICAgICAgICAvKipcclxuICAgICAgICAgKiDlsI/muLjmiI/lubPlj7DnmbvlvZXlip/og73jgILlvq7kv6Hov5Tlm55jb2Rl77yM5oqW6Z+z6L+U5ZueY29kZeWSjGFub255bW91c0NvZGXjgILnlKjkuo7nmbvlvZXnmoTlh63or4HvvIzpnIDopoHmiorov5nkuKpjb2Rl5Lyg5Zue5L2g55qE5pyN5Yqh5Zmo56iL5bqP5Lit5Y676LCD55SoY29kZTJTZXNzaW9uXHJcbiAgICAgICAgICogQHBhcmFtIGNhbGxiYWNrIChjb2RlLCBhbm9ueW1vdXNDb2RlKSDnrKzkuIDkuKrlj4LmlbDkuLpjb2Rl77yM5b6u5L+h5ZKM5oqW6Z+z6YO95pSv5oyB77yb56ys5LqM5Liq5Y+C5pWw5Li65Yy/5ZCN6K6+5aSHSUTvvIzku4Xmipbpn7PmlK/mjIHvvIzlpLHotKXpg73ov5Tlm55udWxsXHJcbiAgICAgICAgICovXHJcbiAgICAgICAgc3RhdGljIGxvZ2luKGNhbGxiYWNrOiAoY29kZTogc3RyaW5nLCBhbm9ueW1vdXNDb2RlOiBzdHJpbmcpID0+IHZvaWQpIHtcclxuICAgICAgICAgICAgbGV0IGxvZ2luUGxhdGZvcm0gPSAoKSA9PiB7XHJcbiAgICAgICAgICAgICAgICBpZiAoaXNXZWNoYXQoKSkge1xyXG4gICAgICAgICAgICAgICAgICAgIC8vQHRzLWlnbm9yZVxyXG4gICAgICAgICAgICAgICAgICAgIHd4LmxvZ2luKHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgc3VjY2VzczogKHJlczogeyBjb2RlOiBhbnk7IGVyck1zZzogYW55OyB9KSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAocmVzLmNvZGUpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBBUEkuX2xvZ2luQ29kZSA9IHJlcy5jb2RlO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFQSS5fbG9naW5Bbm9ueW1vdXNDb2RlID0gbnVsbDtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYWxsYmFjaz8uKEFQSS5fbG9naW5Db2RlLCBBUEkuX2xvZ2luQW5vbnltb3VzQ29kZSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKCdsb2dpbiBlcnJvcjonLCByZXMuZXJyTXNnKVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgZmFpbDogKCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgQVBJLl9sb2dpbkNvZGUgPSBudWxsO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgQVBJLl9sb2dpbkFub255bW91c0NvZGUgPSBudWxsO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FsbGJhY2s/LihBUEkuX2xvZ2luQ29kZSwgQVBJLl9sb2dpbkFub255bW91c0NvZGUpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc29sZS5sb2coJ2xvZ2luIGZhaWwnKVxyXG4gICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKGlzQnl0ZWRhbmNlKCkpIHtcclxuICAgICAgICAgICAgICAgICAgICAvL0B0cy1pZ25vcmVcclxuICAgICAgICAgICAgICAgICAgICB0dC5sb2dpbih7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGZvcmNlOiB0cnVlLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBzdWNjZXNzKHJlczogYW55KSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zb2xlLmxvZyhgbG9naW4gJHtyZXMuY29kZX0gJHtyZXMuYW5vbnltb3VzQ29kZX1gKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChyZXMuY29kZSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFQSS5fbG9naW5Db2RlID0gcmVzLmNvZGU/LnRvU3RyaW5nKCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQVBJLl9sb2dpbkFub255bW91c0NvZGUgPSByZXMuYW5vbnltb3VzQ29kZT8udG9TdHJpbmcoKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYWxsYmFjaz8uKEFQSS5fbG9naW5Db2RlLCBBUEkuX2xvZ2luQW5vbnltb3VzQ29kZSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKCdsb2dpbiBlcnJvcjonLCByZXMuZXJyTXNnKVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBmYWlsKHJlczogYW55KSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBBUEkuX2xvZ2luQ29kZSA9IG51bGw7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBBUEkuX2xvZ2luQW5vbnltb3VzQ29kZSA9IG51bGw7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYWxsYmFjaz8uKEFQSS5fbG9naW5Db2RlLCBBUEkuX2xvZ2luQW5vbnltb3VzQ29kZSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zb2xlLmxvZyhgbG9naW4gZmFpbGAsIHJlcyk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICAgIEFQSS5fbG9naW5Db2RlID0gbnVsbDtcclxuICAgICAgICAgICAgICAgICAgICBBUEkuX2xvZ2luQW5vbnltb3VzQ29kZSA9IG51bGw7XHJcbiAgICAgICAgICAgICAgICAgICAgY2FsbGJhY2s/LihBUEkuX2xvZ2luQ29kZSwgQVBJLl9sb2dpbkFub255bW91c0NvZGUpO1xyXG4gICAgICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKCdub3QgbWluaSBnYW1lIHBsYXRmb3JtLCBsb2dpbiBjb2RlcyBhcmUgYWxsIG51bGwnKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG5cclxuXHJcblxyXG4gICAgICAgICAgICBpZiAoIUFQSS5fbG9naW5Db2RlKSB7XHJcbiAgICAgICAgICAgICAgICBsb2dpblBsYXRmb3JtKCk7XHJcbiAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICBpZiAoaXNXZWNoYXQoKSkge1xyXG4gICAgICAgICAgICAgICAgICAgIC8vQHRzLWlnbm9yZVxyXG4gICAgICAgICAgICAgICAgICAgIHd4LmNoZWNrU2Vzc2lvbih7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHN1Y2Nlc3MoKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zb2xlLmxvZyhgc2Vzc2lvbiBpcyB2YWxpZCwgdXNlIGN1cnJlbnQgY29kZTpgLCBBUEkuX2xvZ2luQ29kZSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYWxsYmFjaz8uKEFQSS5fbG9naW5Db2RlLCBBUEkuX2xvZ2luQW5vbnltb3VzQ29kZSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGZhaWwoKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zb2xlLmxvZyhgc2Vzc2lvbiBleHBpcmVkYCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb2dpblBsYXRmb3JtKCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoaXNCeXRlZGFuY2UoKSkge1xyXG4gICAgICAgICAgICAgICAgICAgIC8vQHRzLWlnbm9yZVxyXG4gICAgICAgICAgICAgICAgICAgIHR0LmNoZWNrU2Vzc2lvbih7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHN1Y2Nlc3MoKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zb2xlLmxvZyhgc2Vzc2lvbiBpcyB2YWxpZCwgdXNlciBjdXJyZW50IGNvZGU6ICR7QVBJLl9sb2dpbkNvZGV9LCAke0FQSS5fbG9naW5Bbm9ueW1vdXNDb2RlfWApO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FsbGJhY2s/LihBUEkuX2xvZ2luQ29kZSwgQVBJLl9sb2dpbkFub255bW91c0NvZGUpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBmYWlsKCkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc29sZS5sb2coYHNlc3Npb24gZXhwaXJlZGApO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9naW5QbGF0Zm9ybSgpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgICAgICAgIH0pO1xyXG5cclxuICAgICAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgICAgY29uc29sZS5sb2coJ25vdCBtaW5pIGdhbWUgcGxhdGZvcm0sIGxvZ2luIG51bGwnKTtcclxuICAgICAgICAgICAgICAgICAgICBjYWxsYmFjaz8uKG51bGwsIG51bGwpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgICAgIC8qKlxyXG4gICAgICAgICAqIOWwj+a4uOaIj+W5s+WPsOeZu+W9leWKn+iDveOAguW+ruS/oei/lOWbnmNvZGXvvIzmipbpn7Pov5Tlm55jb2Rl5ZKMYW5vbnltb3VzQ29kZeOAgueUqOS6jueZu+W9leeahOWHreivge+8jOmcgOimgeaKiui/meS4qmNvZGXkvKDlm57kvaDnmoTmnI3liqHlmajnqIvluo/kuK3ljrvosIPnlKhjb2RlMlNlc3Npb25cclxuICAgICAgICAgKiBAcGFyYW0gY2FsbGJhY2sgKGNvZGUsIGFub255bW91c0NvZGUpIOesrOS4gOS4quWPguaVsOS4umNvZGXvvIzlvq7kv6Hlkozmipbpn7Ppg73mlK/mjIHvvJvnrKzkuozkuKrlj4LmlbDkuLrljL/lkI3orr7lpIdJRO+8jOS7heaKlumfs+aUr+aMge+8jOWksei0pemDvei/lOWbnm51bGxcclxuICAgICAgICAgKi9cclxuICAgICAgICBzdGF0aWMgZ2V0VXNlckluZm8oY2FsbGJhY2s6ICh1c2VySW5mbzogYW55KSA9PiB2b2lkKSB7XHJcbiAgICAgICAgICAgIC8vQHRzLWlnbm9yZVxyXG4gICAgICAgICAgICB0dC5nZXRVc2VySW5mbyh7XHJcbiAgICAgICAgICAgICAgICB3aXRoQ3JlZGVudGlhbHM6IHRydWUsXHJcbiAgICAgICAgICAgICAgICBzdWNjZXNzOiAocmVzOiBhbnkpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICBBUEkuX3VzZXJJbmZvID0gcmVzO1xyXG4gICAgICAgICAgICAgICAgICAgIGNhbGxiYWNrKEFQSS5fdXNlckluZm8pO1xyXG4gICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICAgIGZhaWw6IChlcnI6IGFueSkgPT57XHJcbiAgICAgICAgICAgICAgICAgICAgY2FsbGJhY2soZXJyKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICAvKipcclxuICAgICAgICAgKiDosIPnlKjlvq7kv6HkupHlh73mlbDjgILnlLHkuo7lj4LmlbDpnIDopoHoh6rlrprkuYnvvIzmiYDku6XkuLphbnnvvIzpnIDopoHoh6rooYzop6Pph4rjgILlh73mlbDlj6rlrozmiJDpgJrpgZPlkozlpITnkIbkuIDlnLrnmoTkvZznlKhcclxuICAgICAgICAgKiBAcGFyYW0gY2FsbGJhY2sg6L+U5Zue5LqR5Ye95pWw6LCD55So57uT5p6c44CC6ZyA6KaB5qOA5p+l6L+U5Zue5Y+C5pWw5piv5ZCm5Li656m677yM5aSx6LSl55qE5pe25YCZ5Li656m6XHJcbiAgICAgICAgICogQHBhcmFtIG5hbWUg5LqR5Ye95pWw55qE5ZCN5a2XXHJcbiAgICAgICAgICogQHBhcmFtIGRhdGEg5LqR5Ye95pWw55qE5YaF5a65XHJcbiAgICAgICAgICovXHJcbiAgICAgICAgc3RhdGljIGNhbGxXZWNoYXRDbG91ZEZ1bmN0aW9uKGNhbGxiYWNrOiAocmVzOiBhbnkpID0+IHZvaWQsIG5hbWU6IHN0cmluZywgZGF0YToge30pIHtcclxuICAgICAgICAgICAgaWYgKCFpc1dlY2hhdCgpKSB7XHJcbiAgICAgICAgICAgICAgICBjb25zb2xlLmxvZygnTm90IHdlY2hhdCBwbGF0Zm9ybSwgbm90IHN1cHBvcnQgY2FsbFdlY2hhdENsb3VkRnVuY3Rpb24nKTtcclxuICAgICAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgdGhpcy5sb2dpbigoY29kZTogc3RyaW5nLCBhbm9ueW1vdXNDb2RlOiBzdHJpbmcpID0+IHtcclxuICAgICAgICAgICAgICAgIGlmICghQVBJLl9oYXNJbml0V2VjaGF0Q2xvdWRGdW5jdGlvbikge1xyXG4gICAgICAgICAgICAgICAgICAgIC8vQHRzLWlnbm9yZVxyXG4gICAgICAgICAgICAgICAgICAgIHd4LmNsb3VkLmluaXQoKTtcclxuICAgICAgICAgICAgICAgICAgICBBUEkuX2hhc0luaXRXZWNoYXRDbG91ZEZ1bmN0aW9uID0gdHJ1ZTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIC8vQHRzLWlnbm9yZVxyXG4gICAgICAgICAgICAgICAgd3guY2xvdWQuY2FsbEZ1bmN0aW9uKHtcclxuICAgICAgICAgICAgICAgICAgICBuYW1lOiBuYW1lLFxyXG4gICAgICAgICAgICAgICAgICAgIGRhdGE6IGRhdGEsXHJcbiAgICAgICAgICAgICAgICAgICAgc3VjY2VzczogKHJlczogYW55KSA9PiBjYWxsYmFjaz8uKHJlcyksXHJcbiAgICAgICAgICAgICAgICAgICAgZmFpbDogKGVycjogYW55KSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKCd3ZWNoYXQgY2xvdWQgZnVuY3Rpb24gZXJyb3I6JywgZXJyKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgY2FsbGJhY2s/LihudWxsKTtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICAvKipcclxuICAgICAgICAgKiDlrZjlgqjnlKjmiLfkv6Hmga/vvIzmlbDmja7ph4/kuI3og73lpKfjgILlj6/ku6XogIPomZHnlKjkuo7liIbmlbDmjpLooYzmppzjgILnlKjmiLfkuYvpl7Tlj6/lhbHkuqvmjpLooYzmlbDmja7jgIJcclxuICAgICAgICAgKiBAcGFyYW0ga2V5IFxyXG4gICAgICAgICAqIEBwYXJhbSB2YWx1ZSBcclxuICAgICAgICAgKi9cclxuICAgICAgICBzdGF0aWMgc2V0VXNlckNsb3VkU3RvcmFnZShrZXk6IHN0cmluZywgdmFsdWU6IHN0cmluZykge1xyXG4gICAgICAgICAgICBpZiAoaXNXZWNoYXQoKSkge1xyXG4gICAgICAgICAgICAgICAgLy8gQHRzLWlnbm9yZVxyXG4gICAgICAgICAgICAgICAgd3guc2V0VXNlckNsb3VkU3RvcmFnZSh7XHJcbiAgICAgICAgICAgICAgICAgICAgS1ZEYXRhTGlzdDogW3sga2V5OiBrZXksIHZhbHVlOiB2YWx1ZSB9XSxcclxuICAgICAgICAgICAgICAgICAgICBzdWNjZXNzOiAoKSA9PiBjb25zb2xlLmxvZyhgc2V0IGNsb3VkIHN0b3JhZ2Ugc3VjY2Vzczoke2tleX0sIHZhbHVlOiR7dmFsdWV9YCksXHJcbiAgICAgICAgICAgICAgICAgICAgZmFpbDogKGVycjogYW55KSA9PiBjb25zb2xlLmxvZygnc2V0IGNsb3VkIHN0b3JhZ2UgZXJyb3I6JywgZXJyKVxyXG4gICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgIGlmIChpc0J5dGVkYW5jZSgpKSB7XHJcbiAgICAgICAgICAgICAgICAvLyBAdHMtaWdub3JlXHJcbiAgICAgICAgICAgICAgICB0dC5zZXRVc2VyQ2xvdWRTdG9yYWdlKHtcclxuICAgICAgICAgICAgICAgICAgICBLVkRhdGFMaXN0OiBbeyBrZXk6IGtleSwgdmFsdWU6IHZhbHVlLCB9XSxcclxuICAgICAgICAgICAgICAgICAgICBzdWNjZXNzOiAoKSA9PiBjb25zb2xlLmxvZyhgc2V0IGNsb3VkIHN0b3JhZ2Ugc3VjY2Vzczoke2tleX0sIHZhbHVlOiR7dmFsdWV9YCksXHJcbiAgICAgICAgICAgICAgICAgICAgZmFpbDogKGVycjogYW55KSA9PiBjb25zb2xlLmxvZygnc2V0IGNsb3VkIHN0b3JhZ2UgZXJyb3I6JywgZXJyKVxyXG4gICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcblxyXG5cclxuICAgICAgICAvKlxyXG4gICAgICAgICog5pWw5pWw5bmz5Y+w5Yid5aeL5YyW5Lul5Y+K55m75b2VXHJcbiAgICAgICAgKi9cclxuXHJcbiAgICAgICAgc3RhdGljIHNodXNodV9Jbml0KCl7XHJcbiAgICAgICAgICAgIGlmICh0eXBlb2Ygd3ghPT0gJ3VuZGVmaW5lZCcgJiYgd3ghPT0gbnVsbCkge1xyXG4gICAgICAgICAgICAgICAgY29uc29sZS5sb2coXCLlvIDlp4vmjqXlhaXmlbDmlbDlubPlj7BcIik7XHJcbiAgICAgICAgICAgICAgICAvL2dldFdlY2hhdEdhbWVWZXJzaW9uXHJcbiAgICAgICAgICAgICAgICBsZXQgYXBwSWQgPSBcIjEyMTU5MTM3OGZjMTQyMzg5M2RlYjEyMDQxNDEzZWIzXCI7XHJcbiAgICAgICAgICAgICAgICBsZXQgdGVzdCA9IGNjLmZ4LkdhbWVUb29sLmdldFdlY2hhdEdhbWVWZXJzaW9uKCk7XHJcbiAgICAgICAgICAgICAgICBpZih0ZXN0ID09IFwi5q2j5byP54mIXCIpe1xyXG4gICAgICAgICAgICAgICAgICAgIGFwcElkID0gXCI4N2QxODk1OGNlYTE0NWYyOWQzMjY1NDcwZWNkMzQ4NlwiO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgdmFyIGNvbmZpZyA9IHtcclxuICAgICAgICAgICAgICAgICAgICAvLyBhcHBJZDogXCI3M2UxZWM2NTRmMTViNDdhMWE3MzU0ZmJhYmVjMDVhZFwiLCAvLyDpobnnm64gQVBQIElEXHJcbiAgICAgICAgICAgICAgICAgICAgYXBwSWQ6YXBwSWQsXHJcbiAgICAgICAgICAgICAgICAgICAgc2VydmVyVXJsOiBcImh0dHBzOi8vZGF0YS5uaWthNGZ1bi5jb21cIiwgLy8g5LiK5oql5Zyw5Z2AXHJcbiAgICAgICAgICAgICAgICAgICAgYXV0b1RyYWNrOiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGFwcFNob3c6IHRydWUsIC8vIOiHquWKqOmHh+mbhiB0YV9tZ19zaG93XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGFwcEhpZGU6IHRydWUgLy8g6Ieq5Yqo6YeH6ZuGIHRhX21nX2hpZGVcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9O1xyXG4gICAgICAgICAgICAgICAgLy8g5Yib5bu6IFRBIOWunuS+i1xyXG4gICAgICAgICAgICAgICAgQVBJLl90YSA9IG5ldyBUaGlua2luZ0FuYWx5dGljc0FQSShjb25maWcpO1xyXG4gICAgICAgICAgICAgICAgLy92YXIgZGV2aWNlSWQgPSBBUEkuX3RhLmdldERldmljZUlkKCk7XHJcblxyXG4gICAgICAgICAgICAgICAgQVBJLl90YS5sb2dpbihjYy5meC5HYW1lQ29uZmlnLkdNX0lORk8ub3BlbmlkKTtcclxuICAgICAgICAgICAgICAgIGNvbnN0IHJlc3VsdCA9IFwic3VjY2Vzc1wiO1xyXG4gICAgICAgICAgICAgICAgQVBJLnNodXNodV9UcmFjayhcImxvZ2luXCIscmVzdWx0KTtcclxuXHJcbiAgICAgICAgICAgICAgICAvLyDliJ3lp4vljJZcclxuICAgICAgICAgICAgICAgIEFQSS5fdGEgLmluaXQoKTsgXHJcblxyXG4gICAgICAgICAgICAgICAgQVBJLnNodXNodV9TZXRTdXBlclByb3BlcnRpZXMoKTtcclxuICAgICAgICAgICAgICAgIC8vY29uc29sZS5sb2coXCLmlbDmlbDlubPlj7DliJ3lp4vljJbmiJDlip8hXCIpO1xyXG4gICAgICAgICAgICAgICAgLy8gdGhpcy5UQS5jbGVhclN1cGVyUHJvcGVydGllcygpO1xyXG4gICAgICAgICAgICAgICAgLy/orr7nva7nlKjmiLflsZ7mgKdcclxuICAgICAgICAgICAgICAgIC8vIHRoaXMuVEEudXNlclNldCh7IHVzZXJuYW1lOiBcIuWkp+aguOahg1wiIH0pO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBzdGF0aWMgc2h1c2h1X3VzZXJTZXQodGltZSl7XHJcbiAgICAgICAgICAgIGlmICh0eXBlb2Ygd3ghPT0gJ3VuZGVmaW5lZCcgJiYgd3ghPT0gbnVsbCkge1xyXG4gICAgICAgICAgICAgICAgY29uc29sZS5sb2coXCLorr7nva7nlKjmiLfms6jlhozlsZ7mgKdcIik7XHJcbiAgICAgICAgICAgICAgICBBUEkuX3RhLnVzZXJTZXQoeyByZWdpc3Rlcl90aW1lOnRpbWV9KTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgLypcclxuICAgICAgICAqIOaVsOaVsOW5s+WPsOiuvue9ruWKqOaAgeWFrOWFseWxnuaAp1xyXG4gICAgICAgICovXHJcblxyXG4gICAgICAgIHN0YXRpYyBzaHVzaHVfU2V0U3VwZXJQcm9wZXJ0aWVzKCl7XHJcbiAgICAgICAgICAgaWYgKHR5cGVvZiB3eCE9PSAndW5kZWZpbmVkJyAmJiB3eCE9PSBudWxsICYmIEFQSS5fdGEpIHtcclxuICAgICAgICAgICAgICAgIGNvbnN0IHZlcnNpb25EYXRhID0gXCIxLjNcIjtcclxuICAgICAgICAgICAgICAgIC8vIEFQSS5fdGEudXNlclNldE9uY2UoeyByZWdpc3Rlcl90aW1lOnRpbWV9KTtcclxuICAgICAgICAgICAgICAgIHZhciBzdXBlclByb3BlcnRpZXMgPSB7XHJcbiAgICAgICAgICAgICAgICAgICAgY3VycmVudF9sZXZlbCA6IChjYy5meC5HYW1lQ29uZmlnLkdNX0lORk8ubGV2ZWwrMSksIC8v5b2T5YmN5YWz5Y2h562J57qnICBudW1iZXJcclxuICAgICAgICAgICAgICAgICAgICBjdXJyZW50X2hlYWx0aDogY2MuZnguR2FtZUNvbmZpZy5HTV9JTkZPLmhwLCAgICAgICAgLy/lvZPliY3kvZPlipvlgLxcclxuICAgICAgICAgICAgICAgICAgICB0bXBfY29pbiA6IGNjLmZ4LkdhbWVDb25maWcuR01fSU5GTy5jb2luLC8v5b2T5YmN6YeR5biBXHJcbiAgICAgICAgICAgICAgICAgICAgdmVyc2lvbjogdmVyc2lvbkRhdGFcclxuICAgICAgICAgICAgICAgIH07XHJcbiAgICAgICAgICAgICAgICBBUEkuX3RhLnNldFN1cGVyUHJvcGVydGllcyhzdXBlclByb3BlcnRpZXMpOy8v6K6+572u5YWs5YWx5LqL5Lu25bGe5oCnXHJcbiAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgc3RhdGljIGdldFdlY2hhdEdhbWVWZXJzaW9uKCk6IHN0cmluZyB8IG51bGwge1xyXG4gICAgICAgICAgICBpZiAodHlwZW9mIHd4IT09ICd1bmRlZmluZWQnICYmIHd4IT09IG51bGwpIHtcclxuICAgICAgICAgICAgICAgIC8vIEB0cy1pZ25vcmVcclxuICAgICAgICAgICAgICAgIGNvbnN0IGFjY291bnRJbmZvID0gd3guZ2V0QWNjb3VudEluZm9TeW5jKCk7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gYWNjb3VudEluZm8ubWluaVByb2dyYW0udmVyc2lvbjtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgLypcclxuICAgICAgICAqIOaVsOaVsOW5s+WPsOWFt+S9k+Wfi+eCuVxyXG4gICAgICAgICovXHJcblxyXG4gICAgICAgIHN0YXRpYyBzaHVzaHVfVHJhY2sobmFtZSwgZGF0YSwgY2FsbGJhY2s/OiAoc3VjY2VzczogYm9vbGVhbiwgZXJyb3I/OiBhbnkpID0+IHZvaWQpIHtcclxuICAgICAgICAgICAgaWYgKHR5cGVvZiB3eCE9PSAndW5kZWZpbmVkJyAmJiB3eCE9PSBudWxsKSB7XHJcbiAgICAgICAgICAgICAgICBpZiAoQVBJLl90YSkge1xyXG4gICAgICAgICAgICAgICAgICAgIC8vIOWBh+iuviB0cmFjayDmlrnms5Xov5Tlm57kuIDkuKogUHJvbWlzZVxyXG4gICAgICAgICAgICAgICAgICAgIEFQSS5fdGEudHJhY2soXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIG5hbWUsIC8vIOS6i+S7tuWQjeensFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBkYXRhIC8vIOS6i+S7tuWxnuaApyBcclxuICAgICAgICAgICAgICAgICAgICApXHJcbiAgICAgICAgICAgICAgICB9IFxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxufSJdfQ== -======= //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImFzc2V0c1xcU2NyaXB0XFxwcm9wXFxLZXkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLG9CQUFvQjtBQUNwQix3RUFBd0U7QUFDeEUsbUJBQW1CO0FBQ25CLGtGQUFrRjtBQUNsRiw4QkFBOEI7QUFDOUIsa0ZBQWtGOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFFbEYsOEJBQWlDO0FBRTNCLElBQUEsS0FBc0IsRUFBRSxDQUFDLFVBQVUsRUFBbEMsT0FBTyxhQUFBLEVBQUUsUUFBUSxjQUFpQixDQUFDO0FBSzFDO0lBQWlDLHVCQUFZO0lBQTdDO1FBQUEscUVBaUNDO1FBL0JHLFVBQUksR0FBVyxFQUFFLENBQUM7O1FBOEJsQixpQkFBaUI7SUFDckIsQ0FBQztJQTdCRyw0QkFBNEI7SUFFNUIsb0JBQU0sR0FBTjtJQUVBLENBQUM7SUFFRCxtQkFBSyxHQUFMO0lBQ0EsQ0FBQztJQUVELGtCQUFJLEdBQUosVUFBSyxJQUFJO1FBQ0wsSUFBRyxJQUFJO1lBQUUsSUFBSSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUM7UUFDMUIsSUFBSSxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsTUFBTSxDQUFDLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQztRQUMvQyxJQUFJLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxZQUFZLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDO1FBQ3RGLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFDLENBQUMsQ0FBQztJQUN0QyxDQUFDO0lBR0Qsd0JBQVUsR0FBVjtRQUNJLElBQUksQ0FBQyxJQUFJLEVBQUcsQ0FBQztRQUNiLElBQUksQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLE1BQU0sQ0FBQyxDQUFDLFlBQVksQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUM7UUFDdEYsSUFBRyxJQUFJLENBQUMsSUFBSSxJQUFJLENBQUMsRUFBQztZQUNkLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDO1lBQ2pDLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUM7WUFDcEIsYUFBVyxDQUFDLFNBQVMsQ0FBQyxTQUFTLEVBQUUsQ0FBQztZQUNsQyx1QkFBdUI7U0FDMUI7SUFDTCxDQUFDO0lBOUJnQixHQUFHO1FBRHZCLE9BQU87T0FDYSxHQUFHLENBaUN2QjtJQUFELFVBQUM7Q0FqQ0QsQUFpQ0MsQ0FqQ2dDLEVBQUUsQ0FBQyxTQUFTLEdBaUM1QztrQkFqQ29CLEdBQUciLCJmaWxlIjoiIiwic291cmNlUm9vdCI6Ii8iLCJzb3VyY2VzQ29udGVudCI6WyIvLyBMZWFybiBUeXBlU2NyaXB0OlxyXG4vLyAgLSBodHRwczovL2RvY3MuY29jb3MuY29tL2NyZWF0b3IvbWFudWFsL2VuL3NjcmlwdGluZy90eXBlc2NyaXB0Lmh0bWxcclxuLy8gTGVhcm4gQXR0cmlidXRlOlxyXG4vLyAgLSBodHRwczovL2RvY3MuY29jb3MuY29tL2NyZWF0b3IvbWFudWFsL2VuL3NjcmlwdGluZy9yZWZlcmVuY2UvYXR0cmlidXRlcy5odG1sXHJcbi8vIExlYXJuIGxpZmUtY3ljbGUgY2FsbGJhY2tzOlxyXG4vLyAgLSBodHRwczovL2RvY3MuY29jb3MuY29tL2NyZWF0b3IvbWFudWFsL2VuL3NjcmlwdGluZy9saWZlLWN5Y2xlLWNhbGxiYWNrcy5odG1sXHJcblxyXG5pbXBvcnQgTWFwQ29ucm9sZXIgZnJvbSBcIi4uL01hcFwiO1xyXG5cclxuY29uc3Qge2NjY2xhc3MsIHByb3BlcnR5fSA9IGNjLl9kZWNvcmF0b3I7XHJcblxyXG5cclxuXHJcbkBjY2NsYXNzXHJcbmV4cG9ydCBkZWZhdWx0IGNsYXNzIEtleSBleHRlbmRzIGNjLkNvbXBvbmVudCB7XHJcbiAgICBzdGF0aWMgX2luc3RhbmNlOiBhbnk7XHJcbiAgICB0aW1lOiBudW1iZXIgPSA2MDtcclxuXHJcbiAgICAvLyBtYXBJbmZvOiBudW1iZXJbXVtdID0gW107XHJcblxyXG4gICAgb25Mb2FkICgpIHtcclxuXHJcbiAgICB9IFxyXG5cclxuICAgIHN0YXJ0ICgpIHtcclxuICAgIH1cclxuXHJcbiAgICBpbml0KHRpbWUpe1xyXG4gICAgICAgIGlmKHRpbWUpIHRoaXMudGltZSA9IHRpbWU7XHJcbiAgICAgICAgdGhpcy5ub2RlLmdldENoaWxkQnlOYW1lKFwidGltZVwiKS5hY3RpdmUgPSB0cnVlO1xyXG4gICAgICAgIHRoaXMubm9kZS5nZXRDaGlsZEJ5TmFtZShcInRpbWVcIikuZ2V0Q29tcG9uZW50KGNjLkxhYmVsKS5zdHJpbmcgPSB0aGlzLnRpbWUudG9TdHJpbmcoKTtcclxuICAgICAgICB0aGlzLnNjaGVkdWxlKHRoaXMudXBkYXRlVGltZSwgMSk7XHJcbiAgICB9XHJcblxyXG4gICAgXHJcbiAgICB1cGRhdGVUaW1lKCl7XHJcbiAgICAgICAgdGhpcy50aW1lIC0tO1xyXG4gICAgICAgIHRoaXMubm9kZS5nZXRDaGlsZEJ5TmFtZShcInRpbWVcIikuZ2V0Q29tcG9uZW50KGNjLkxhYmVsKS5zdHJpbmcgPSB0aGlzLnRpbWUudG9TdHJpbmcoKTtcclxuICAgICAgICBpZih0aGlzLnRpbWUgPD0gMCl7XHJcbiAgICAgICAgICAgIHRoaXMudW5zY2hlZHVsZSh0aGlzLnVwZGF0ZVRpbWUpO1xyXG4gICAgICAgICAgICB0aGlzLm5vZGUuZGVzdHJveSgpO1xyXG4gICAgICAgICAgICBNYXBDb25yb2xlci5faW5zdGFuY2UuZmFpbExldmVsKCk7XHJcbiAgICAgICAgICAgIC8vIHRoaXMubm9kZS5kZXN0cm95KCk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIC8vIHVwZGF0ZSAoZHQpIHt9XHJcbn1cclxuIl19 ->>>>>>> 0a31a7a5abc2c505bf743aa596e1c765a0405152 //------QC-SOURCE-SPLIT------ (function() { @@ -18569,3810 +12102,6 @@ cc._RF.pop(); } })(); //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImFzc2V0c1xcU2NyaXB0XFxscV9jb2xsaWRlX3N5c3RlbVxcbHFfY29sbGlkZV9zeXN0ZW0uanMiXSwibmFtZXMiOlsiZXhwb3J0cyIsImxxX2NvbnN0XzEiLCJyZXF1aXJlIiwibHFfbWF0aF91dGlsXzEiLCJscV9jb2xsaWRlX2NvbmZpZ18xIiwibHFfZGF0YV8xIiwiVmVjMiIsImNjIiwiZ2FtZSIsImRpcmVjdG9yIiwiU2NoZWR1bGVyIiwibWlzYyIsIkxRUXVhZFRyZWUiLCJfMHg1NjU2NWUiLCJfMHgzZDNhMGUiLCJfMHgzZmIwNTUiLCJfMHgyMGNlMDQiLCJfMHg0MDYwMzMiLCJfMHgzMmE5Y2IiLCJfMHgxNzhkODEiLCJfMHgxZDFkOTciLCJfMHg1ZjUwOTMiLCJfMHgzMjY5YzIiLCJfMHg1OWQ2ZWMiLCJfMHgxZGM1NDciLCJfMHgyZWE3Y2QiLCJfMHg1ZTk3YjciLCJfMHgyNDFmNTkiLCJfMHg0Mzc3OTAiLCJfMHg1ZTY2MTkiLCJfMHgzYjQyYWEiLCJfMHgzMmYyM2EiLCJfMHgzODUwZmUiLCJfMHg0ODU2Y2YiLCJfMHgyZDEzNmMiLCJfMHgxZTlmMzUiLCJfMHg3N2E3MSIsIl8weGFhOGM3YSIsIl8weDQyMjY0YyIsIl8weDRjMzQ5NyIsIl8weDNkNWM5ZiIsIl8weDE3MGVjYSIsIkxRQ29sbGlkZVN5c3RlbSIsIl8weDliZjYwZSIsIl8weGJjM2QyMiIsIl8weDUzMjM1ZSIsIl8weDJmMWU2YyIsIl8weDFiZTYzMCIsIl8weDFhMDU5OCIsIk1hdGgiLCJfMHgyNTk2N2UiLCJfMHhmYmYyNDEiLCJfMHg1ZWQzYTUiLCJfMHgyOTZhMWEiLCJfMHgzZDFjYTIiLCJfMHgyYjRlYzkiLCJfMHg2MDAzNjciLCJfMHg1ZDY4YjUiLCJfMHgyYzRkZDAiLCJfMHgxOTBmODgiLCJfMHg1MjNkYzgiLCJfMHgyNjRiNzIiLCJ1bmRlZmluZWQiLCJfMHgxYjlhMmMiLCJfMHgxZDhkOGMiLCJfMHgxNDA2YjUiLCJfMHg2NGYwNjQiLCJfMHgzYmVjZGQiLCJfMHg0NWIwMjkiLCJfMHg1NDRhNWMiLCJfMHgyZTg5N2QiLCJfMHg0MTYyOTgiLCJfMHgxMjA1OWEiLCJfMHg0YTczNzAiLCJfMHgyNGM3YTEiLCJfMHg0ZTE4ZWUiLCJfMHgxMjIzNTYiLCJfMHgyYmQ3MTMiLCJfMHgyZDNiNmUiLCJfMHg1Y2NhM2IiLCJfMHgxMWI2NzgiLCJfMHgxZjBiNjMiLCJfMHg1MmNlYzciLCJfMHg0MjM2YzAiLCJfMHgxMmU4MjUiLCJfMHg1Y2Q0ZGQiLCJfMHhiZDZmZDAiLCJfMHgxZjRmYmMiLCJfMHgyNjdiNTgiLCJfMHg0YTFiYWUiLCJfMHg1NzRlM2UiLCJfMHg0YjkyZDgiLCJfMHg1ZDM5ZDQiLCJfMHgxMjRlOWMiLCJfMHgzODcxODgiLCJfMHg2MTEwMTIiLCJfMHgzNzA3ZTgiLCJfMHgyNDMyZTEiLCJfMHgxOTc2NTciLCJfMHgzZGY2ZmMiLCJfMHgxMmJiYTEiLCJfMHgzMjEyOTAiLCJfMHgxMzY3MDMiLCJfMHg1MzdlMGUiLCJfMHgzYWQxNDciLCJfMHg1NTlhN2QiLCJfMHg0OGE4MzQiLCJfMHgzYmZkOTQiLCJfMHg2ZGE2MjAiLCJfMHgxZmVkYTQiLCJfMHg1MzkxM2QiLCJfMHgzNjc0ZjUiLCJfMHgxNTAwMzMiLCJfMHg0NDJhZjEiLCJfMHgxZTc5YTUiLCJfMHgxNzljOTIiLCJfMHhiMTcyNzgiLCJfMHgxMzM3YmQiLCJfMHgyMDE4MWUiLCJfMHg0YWY2ZmYiLCJfMHg1Y2FjNzEiLCJfMHg1NDlhNjYiLCJfMHg1NzkzZmYiLCJfMHg0NzQwZmUiLCJfMHg0ZjMzMzciLCJfMHgxYTE1MmMiLCJfMHg0ODRjZDIiLCJfMHgxNzNmNjEiLCJfMHgzZmNjZGEiLCJfMHgyMmVlZjkiLCJfMHgzNjYyZWQiLCJfMHgxMGJiZGIiLCJfMHgyOTEzM2MiLCJfMHg1Y2UxOTIiLCJfMHg4MDExYzciLCJfMHhkZmU4YmMiLCJfMHgzYWVlOGMiLCJfMHgxY2U4ZmQiLCJfMHgyYWIyZmYiLCJfMHgzNzNiZDIiLCJfMHg0YjY0YTQiLCJfMHg0MGUyZjEiLCJfMHhmY2E4ZDEiLCJfMHg1YWM4MTUiLCJfMHhmZmJjZGMiLCJfMHgzMDgzMjUiLCJfMHgxNDlmNWUiLCJfMHgxMjE1MGYiLCJfMHgzMDgwODIiLCJfMHgzMTMxYzUiLCJfMHhjM2MzODAiLCJfMHg1ODVmNGYiLCJfMHgzZGRiODMiLCJfMHgzY2NmNzQiLCJfMHg0Y2Y2YTYiLCJfMHg1MzdiMmQiLCJfMHgxOTdkMmYiLCJfMHgxODNkZTIiLCJfMHgyNWNlYTEiLCJfMHhhN2IwNSIsIl8weDM4MWFmMiIsIl8weDVkYjdiMyIsIkF1dG9SdW4iLCJfMHhmNWIwODciLCJfMHgzNjVlNTUiLCJDQ19FRElUT1IiLCJfMHgyODdmODYiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7OztBQUFBLDZCQUE2QixZQUFZOztBQUFDQSxPQUFPLENBQUMsWUFBWSxDQUFDLEdBQUMsQ0FBQyxDQUFDLEVBQUU7QUFBQ0EsT0FBTyxDQUFDLGlCQUFpQixDQUFDLEdBQUMsS0FBSyxHQUFHO0FBQUMsSUFBSUMsVUFBVSxHQUFDQyxPQUFPLENBQUMsMEJBQTBCLENBQUM7QUFBQyxJQUFJQyxjQUFjLEdBQUNELE9BQU8sQ0FBQyw4QkFBOEIsQ0FBQztBQUFDLElBQUlFLG1CQUFtQixHQUFDRixPQUFPLENBQUMscUJBQXFCLENBQUM7QUFBQyxJQUFJRyxTQUFTLEdBQUNILE9BQU8sQ0FBQyx5QkFBeUIsQ0FBQztBQUFDLElBQUlJLElBQUksR0FBQ0MsRUFBRSxDQUFDLE1BQU0sQ0FBQztBQUFDLElBQUlDLElBQUksR0FBQ0QsRUFBRSxDQUFDLE1BQU0sQ0FBQztBQUFDLElBQUlFLFFBQVEsR0FBQ0YsRUFBRSxDQUFDLFVBQVUsQ0FBQztBQUFDLElBQUlHLFNBQVMsR0FBQ0gsRUFBRSxDQUFDLFdBQVcsQ0FBQztBQUFDLElBQUlJLElBQUksR0FBQ0osRUFBRSxDQUFDLE1BQU0sQ0FBQztBQUFDLElBQUlLLFVBQVUsR0FBQyxZQUFVO0VBQUMsU0FBU0MsU0FBU0EsQ0FBQ0MsU0FBUyxFQUFDQyxTQUFTLEVBQUNDLFNBQVMsRUFBQ0MsU0FBUyxFQUFDO0lBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxHQUFDLEVBQUU7SUFBQyxJQUFJLENBQUMsVUFBVSxDQUFDLEdBQUMsRUFBRTtJQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsR0FBQ0YsU0FBUyxJQUFFLEdBQUc7SUFBQyxJQUFJLENBQUMsV0FBVyxDQUFDLEdBQUNDLFNBQVMsSUFBRSxHQUFHO0lBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxHQUFDQyxTQUFTLElBQUUsR0FBRztJQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsR0FBQ0gsU0FBUztJQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsR0FBQyxFQUFFO0lBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxHQUFDLEVBQUU7RUFBQztFQUFDRCxTQUFTLENBQUMsV0FBVyxDQUFDLENBQUMsT0FBTyxDQUFDLEdBQUMsWUFBVTtJQUFDLElBQUlLLFNBQVMsR0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLEdBQUMsR0FBRztJQUFDLElBQUlDLFNBQVMsR0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsT0FBTyxDQUFDLEdBQUMsR0FBRztJQUFDLElBQUlDLFNBQVMsR0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsUUFBUSxDQUFDLEdBQUMsR0FBRztJQUFDLElBQUlDLFNBQVMsR0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsR0FBRyxDQUFDO0lBQUMsSUFBSUMsU0FBUyxHQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQyxHQUFHLENBQUM7SUFBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUMsR0FBRyxDQUFDLEdBQUMsSUFBSVQsU0FBUyxDQUFDLElBQUlSLFNBQVMsQ0FBQyxRQUFRLENBQUMsQ0FBQ2dCLFNBQVMsR0FBQ0YsU0FBUyxFQUFDRyxTQUFTLEVBQUNILFNBQVMsRUFBQ0MsU0FBUyxDQUFDLEVBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxFQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsRUFBQ0YsU0FBUyxDQUFDO0lBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxHQUFDLElBQUlMLFNBQVMsQ0FBQyxJQUFJUixTQUFTLENBQUMsUUFBUSxDQUFDLENBQUNnQixTQUFTLEVBQUNDLFNBQVMsRUFBQ0gsU0FBUyxFQUFDQyxTQUFTLENBQUMsRUFBQyxJQUFJLENBQUMsWUFBWSxDQUFDLEVBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxFQUFDRixTQUFTLENBQUM7SUFBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUMsR0FBRyxDQUFDLEdBQUMsSUFBSUwsU0FBUyxDQUFDLElBQUlSLFNBQVMsQ0FBQyxRQUFRLENBQUMsQ0FBQ2dCLFNBQVMsRUFBQ0MsU0FBUyxHQUFDRixTQUFTLEVBQUNELFNBQVMsRUFBQ0MsU0FBUyxDQUFDLEVBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxFQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsRUFBQ0YsU0FBUyxDQUFDO0lBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxHQUFDLElBQUlMLFNBQVMsQ0FBQyxJQUFJUixTQUFTLENBQUMsUUFBUSxDQUFDLENBQUNnQixTQUFTLEdBQUNGLFNBQVMsRUFBQ0csU0FBUyxHQUFDRixTQUFTLEVBQUNELFNBQVMsRUFBQ0MsU0FBUyxDQUFDLEVBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxFQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsRUFBQ0YsU0FBUyxDQUFDO0VBQUMsQ0FBQztFQUFDTCxTQUFTLENBQUMsV0FBVyxDQUFDLENBQUMsV0FBVyxDQUFDLEdBQUMsVUFBU1UsU0FBUyxFQUFDO0lBQUMsSUFBSUMsU0FBUyxHQUFDLEVBQUU7SUFBQyxJQUFJQyxTQUFTLEdBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDLEdBQUcsQ0FBQyxHQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQyxZQUFZLENBQUM7SUFBQyxJQUFJQyxTQUFTLEdBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDLEdBQUcsQ0FBQyxHQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQyxhQUFhLENBQUM7SUFBQyxJQUFJQyxTQUFTLEdBQUNKLFNBQVMsQ0FBQyxZQUFZLENBQUMsQ0FBQyxHQUFHLENBQUMsR0FBQ0EsU0FBUyxDQUFDLFlBQVksQ0FBQyxDQUFDLGFBQWEsQ0FBQyxHQUFDRyxTQUFTO0lBQUMsSUFBSUUsU0FBUyxHQUFDTCxTQUFTLENBQUMsWUFBWSxDQUFDLENBQUMsR0FBRyxDQUFDLEdBQUNBLFNBQVMsQ0FBQyxZQUFZLENBQUMsQ0FBQyxZQUFZLENBQUMsR0FBQ0UsU0FBUztJQUFDLElBQUlJLFNBQVMsR0FBQ04sU0FBUyxDQUFDLFlBQVksQ0FBQyxDQUFDLEdBQUcsQ0FBQyxHQUFDQSxTQUFTLENBQUMsWUFBWSxDQUFDLENBQUMsWUFBWSxDQUFDLEdBQUNFLFNBQVM7SUFBQyxJQUFJSyxTQUFTLEdBQUNQLFNBQVMsQ0FBQyxZQUFZLENBQUMsQ0FBQyxHQUFHLENBQUMsR0FBQ0EsU0FBUyxDQUFDLFlBQVksQ0FBQyxDQUFDLGFBQWEsQ0FBQyxHQUFDRyxTQUFTO0lBQUMsSUFBR0csU0FBUyxJQUFFRixTQUFTLEVBQUM7TUFBQ0gsU0FBUyxDQUFDLE1BQU0sQ0FBQyxDQUFDLEdBQUcsQ0FBQztJQUFDO0lBQUMsSUFBR0ksU0FBUyxJQUFFRCxTQUFTLEVBQUM7TUFBQ0gsU0FBUyxDQUFDLE1BQU0sQ0FBQyxDQUFDLEdBQUcsQ0FBQztJQUFDO0lBQUMsSUFBR0ksU0FBUyxJQUFFRSxTQUFTLEVBQUM7TUFBQ04sU0FBUyxDQUFDLE1BQU0sQ0FBQyxDQUFDLEdBQUcsQ0FBQztJQUFDO0lBQUMsSUFBR00sU0FBUyxJQUFFRCxTQUFTLEVBQUM7TUFBQ0wsU0FBUyxDQUFDLE1BQU0sQ0FBQyxDQUFDLEdBQUcsQ0FBQztJQUFDO0lBQUMsT0FBT0EsU0FBUztFQUFDLENBQUM7RUFBQztFQUFDWCxTQUFTLENBQUMsV0FBVyxDQUFDLENBQUMsUUFBUSxDQUFDLEdBQUMsVUFBU2tCLFNBQVMsRUFBQztJQUFDLElBQUlDLFNBQVM7SUFBQyxJQUFHLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQyxRQUFRLENBQUMsRUFBQztNQUFDQSxTQUFTLEdBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDRCxTQUFTLENBQUM7TUFBQyxLQUFJLElBQUlFLFNBQVMsR0FBQyxHQUFHLEVBQUNBLFNBQVMsR0FBQ0QsU0FBUyxDQUFDLFFBQVEsQ0FBQyxFQUFDQyxTQUFTLEVBQUUsRUFBQztRQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQ0QsU0FBUyxDQUFDQyxTQUFTLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDRixTQUFTLENBQUM7TUFBQztNQUFDO0lBQU87SUFBQyxJQUFJLENBQUMsYUFBYSxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUNBLFNBQVMsQ0FBQztJQUFDLElBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxHQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBRSxJQUFJLENBQUMsT0FBTyxDQUFDLEdBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxFQUFDO01BQUMsSUFBRyxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQyxRQUFRLENBQUMsRUFBQztRQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsRUFBRTtNQUFDO01BQUMsS0FBSSxJQUFJRSxTQUFTLEdBQUMsR0FBRyxFQUFDQSxTQUFTLEdBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxFQUFDQSxTQUFTLEVBQUUsRUFBQztRQUFDLElBQUlDLFNBQVMsR0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLENBQUNELFNBQVMsQ0FBQztRQUFDRCxTQUFTLEdBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDRSxTQUFTLENBQUM7UUFBQyxLQUFJLElBQUlDLFNBQVMsR0FBQyxHQUFHLEVBQUNBLFNBQVMsR0FBQ0gsU0FBUyxDQUFDLFFBQVEsQ0FBQyxFQUFDRyxTQUFTLEVBQUUsRUFBQztVQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQ0gsU0FBUyxDQUFDRyxTQUFTLENBQUMsQ0FBQyxDQUFDLFFBQVEs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UyxDQUFDLHNCQUFzQixDQUFDLENBQUMsTUFBTSxDQUFDLENBQUNDLFNBQVMsQ0FBQyxHQUFHLENBQUMsQ0FBQztNQUFDRCxTQUFTLENBQUMsc0JBQXNCLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQ0MsU0FBUyxDQUFDLEdBQUcsQ0FBQyxDQUFDO01BQUNBLFNBQVMsR0FBQ0QsU0FBUyxDQUFDLFlBQVksQ0FBQyxDQUFDLGFBQWEsQ0FBQyxFQUFFO01BQUNBLFNBQVMsQ0FBQyxzQkFBc0IsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDQyxTQUFTLENBQUMsR0FBRyxDQUFDLENBQUM7TUFBQ0QsU0FBUyxDQUFDLHNCQUFzQixDQUFDLENBQUMsTUFBTSxDQUFDLENBQUNDLFNBQVMsQ0FBQyxHQUFHLENBQUMsQ0FBQztNQUFDQSxTQUFTLEdBQUNELFNBQVMsQ0FBQyxZQUFZLENBQUMsQ0FBQyxjQUFjLENBQUMsRUFBRTtNQUFDQSxTQUFTLENBQUMsc0JBQXNCLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQ0MsU0FBUyxDQUFDLEdBQUcsQ0FBQyxDQUFDO01BQUNELFNBQVMsQ0FBQyxzQkFBc0IsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDQyxTQUFTLENBQUMsR0FBRyxDQUFDLENBQUM7TUFBQ0EsU0FBUyxHQUFDRCxTQUFTLENBQUMsWUFBWSxDQUFDLENBQUMsV0FBVyxDQUFDLEVBQUU7TUFBQ0EsU0FBUyxDQUFDLHNCQUFzQixDQUFDLENBQUMsTUFBTSxDQUFDLENBQUNDLFNBQVMsQ0FBQyxHQUFHLENBQUMsQ0FBQztNQUFDRCxTQUFTLENBQUMsc0JBQXNCLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQ0MsU0FBUyxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQUMsQ0FBQyxNQUFLLElBQUdELFNBQVMsQ0FBQyxnQkFBZ0IsQ0FBQyxLQUFHM0MsVUFBVSxDQUFDLGdCQUFnQixDQUFDLENBQUMsU0FBUyxDQUFDLEVBQUM7TUFBQzJDLFNBQVMsQ0FBQyxzQkFBc0IsQ0FBQyxHQUFDLEVBQUU7TUFBQyxJQUFHQSxTQUFT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R0FBQyxVQUFTb0IsU0FBUyxFQUFDO0lBQUMsSUFBR0EsU0FBUyxDQUFDLGNBQWMsQ0FBQyxFQUFDO01BQUMsS0FBSSxJQUFJQyxTQUFTLElBQUlELFNBQVMsQ0FBQyxhQUFhLENBQUMsRUFBQztRQUFDLElBQUlFLFNBQVMsR0FBQ0YsU0FBUyxDQUFDLGFBQWEsQ0FBQyxDQUFDQyxTQUFTLENBQUM7UUFBQyxJQUFHQyxTQUFTLENBQUMsUUFBUSxDQUFDLEtBQUcsR0FBRyxFQUFDO1VBQUNBLFNBQVMsQ0FBQyxRQUFRLENBQUMsR0FBQyxHQUFHO1FBQUMsQ0FBQyxNQUFJO1VBQUMsT0FBT0YsU0FBUyxDQUFDLGFBQWEsQ0FBQyxDQUFDQyxTQUFTLENBQUM7VUFBQ0QsU0FBUyxDQUFDLFNBQVMsQ0FBQyxDQUFDRSxTQUFTLENBQUMsU0FBUyxDQUFDLENBQUM7UUFBQztNQUFDO0lBQUM7SUFBQ0YsU0FBUyxDQUFDLG1CQUFtQixDQUFDLEVBQUU7RUFBQyxDQUFDO0VBQUNwQixTQUFTLENBQUMsZUFBZSxDQUFDLEdBQUMsVUFBU3VCLFNBQVMsRUFBQ0MsU0FBUyxFQUFDO0lBQUMsSUFBR0QsU0FBUyxDQUFDLGNBQWMsQ0FBQyxFQUFDO01BQUMsSUFBSUUsU0FBUyxHQUFDRixTQUFTLENBQUMsYUFBYSxDQUFDLENBQUNDLFNBQVMsQ0FBQyxZQUFZLENBQUMsQ0FBQztNQUFDLElBQUdDLFNBQVMsRUFBQztRQUFDQSxTQUFTLENBQUMsUUFBUSxDQUFDLEdBQUMsR0FBRztNQUFDLENBQUMsTUFBSTtRQUFDRixTQUFTLENBQUMsYUFBYSxDQUFDLENBQUNDLFNBQVMsQ0FBQyxZQUFZLENBQUMsQ0FBQyxHQUFDO1VBQUMsU0FBUyxFQUFDQSxTQUFTO1VBQUMsUUFBUSxFQUFDO1FBQUcsQ0FBQztRQUFDRCxTQUFTLENBQUMsVUFBVSxDQUFDLENBQUNDLFNBQVMsQ0FBQztNQUFDO0lBQUM7SUFBQyxJQUFHQSxTQUFTLENBQUMsY0FBYyxDQUFDLEVBQUM7TUFBQyxJQUFJRSxTQUFTLEdBQUNGLFNBQVMsQ0FBQyxhQUFhLENBQUMsQ0FBQ0QsU0FBUyxDQUFDLFlBQVksQ0FBQyxDQUFDO01BQUMsSUFBR0csU0FBUyxFQUFDO1FBQUNBLFNBQVMsQ0FBQyxRQUFRLENBQUMsR0FBQyxHQUFHO01BQUMsQ0FBQyxNQUFJO1FBQUNGLFNBQVMsQ0FBQyxhQUFhLENBQUMsQ0FBQ0QsU0FBUyxDQUFDLFlBQVksQ0FBQyxDQUFDLEdBQUM7VUFBQyxTQUFTLEVBQUNBLFNBQVM7VUFBQyxRQUFRLEVBQUM7UUFBRyxDQUFDO1FBQUNDLFNBQVMsQ0FBQyxVQUFVLENBQUMsQ0FBQ0QsU0FBUyxDQUFDO01BQUM7SUFBQztJQUFDQSxTQUFTLENBQUMsWUFBWSxDQUFDLENBQUNDLFNBQVMsQ0FBQztJQUFDQSxTQUFTLENBQUMsWUFBWSxDQUFDLENBQUNELFNBQVMsQ0FBQztFQUFDLENBQUM7RUFBQ3ZCLFNBQVMsQ0FBQyxhQUFhLENBQUMsR0FBQyxVQUFTMkIsU0FBUyxFQUFDO0lBQUMsSUFBSSxDQUFDLG1CQUFtQixDQUFDLENBQUNBLFNBQVMsQ0FBQztJQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQ0EsU0FBUyxDQUFDO0VBQUMsQ0FBQztFQUFDM0IsU0FBUyxDQUFDLGdCQUFnQixDQUFDLEdBQUMsVUFBUzRCLFNBQVMsRUFBQztJQUFDLEtBQUksSUFBSUMsU0FBUyxHQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsQ0FBQyxRQUFRLENBQUMsR0FBQyxHQUFHLEVBQUNBLFNBQVMsSUFBRSxHQUFHLEVBQUNBLFNBQVMsRUFBRSxFQUFDO01BQUMsSUFBRyxJQUFJLENBQUMsYUFBYSxDQUFDLENBQUNBLFNBQVMsQ0FBQyxDQUFDLFlBQVksQ0FBQyxLQUFHRCxTQUFTLENBQUMsWUFBWSxDQUFDLEVBQUM7UUFBQyxJQUFJLENBQUMsYUFBYSxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUNDLFNBQVMsRUFBQyxHQUFHLENBQUM7UUFBQztNQUFNO0lBQUM7RUFBQyxDQUFDO0VBQUM3QixTQUFTLENBQUMsWUFBWSxDQUFDLEdBQUMsVUFBUzhCLFNBQVMsRUFBQ0MsU0FBUyxFQUFDQyxTQUFTLEVBQUNDLFNBQVMsRUFBQ0MsU0FBUyxFQUFDQyxTQUFTLEVBQUM7SUFBQyxPQUFPN0IsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDd0IsU0FBUyxFQUFDQyxTQUFTLEVBQUNDLFNBQVMsRUFBQ0MsU0FBUyxDQUFDLElBQUUsSUFBSSxDQUFDLGlCQUFpQixDQUFDLENBQUNILFNBQVMsRUFBQ0MsU0FBUyxFQUFDRyxTQUFTLEVBQUNDLFNBQVMsQ0FBQyxHQUFDLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDSCxTQUFTLEVBQUNDLFNBQVMsRUFBQ0MsU0FBUyxFQUFDQyxTQUFTLENBQUMsQ0FBQyxDQUFDLElBQUUsR0FBRztFQUFDLENBQUM7RUFBQ25DLFNBQVMsQ0FBQyxpQkFBaUIsQ0FBQyxHQUFDLFVBQVNvQyxTQUFTLEVBQUNDLFNBQVMsRUFBQ0MsU0FBUyxFQUFDQyxTQUFTLEVBQUM7SUFBQyxPQUFPakMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDQSxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM4QixTQUFTLEdBQUNFLFNBQVMsRUFBQyxHQUFHLENBQUMsR0FBQ2hDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQytCLFNBQVMsR0FBQ0UsU0FBUyxFQUFDLEdBQUcsQ0FBQyxDQUFDO0VBQUMsQ0FBQztFQUFDdkMsU0FBUyxDQUFDLGVBQWUsQ0FBQyxHQUFDLFVBQVN3QyxTQUFTLEVBQUNDLFNBQVMsRUFBQ0MsU0FBUyxFQUFDO0lBQUMsSUFBSUMsU0FBUyxHQUFDSCxTQUFTLENBQUMsUUFBUSxDQUFDO0lBQUMsSUFBSUksU0FBUyxHQUFDLENBQUMsRUFBRTtJQUFDLElBQUlDLFNBQVMsRUFBQ0MsU0FBUztJQUFDLEtBQUlELFNBQVMsR0FBQyxHQUFHLEVBQUNDLFNBQVMsR0FBQ0gsU0FBUyxHQUFDLEdBQUcsRUFBQ0UsU0FBUyxHQUFDRixTQUFTLEVBQUNFLFNBQVMsSUFBRSxHQUFHLEVBQUM7TUFBQyxJQUFHTCxTQUFTLENBQUNLLFNBQVMsR0FBQyxHQUFHLENBQUMsR0FBQ0gsU0FBUyxLQUFHRixTQUFTLENBQUNNLFNBQVMsR0FBQyxHQUFHLENBQUMsR0FBQ0osU0FBUyxJQUFFRCxTQUFTLEdBQUMsQ0FBQ0QsU0FBUyxDQUFDTSxTQUFTLENBQUMsR0FBQ04sU0FBUyxDQUFDSyxTQUFTLENBQUMsS0FBR0gsU0FBUyxHQUFDRixTQUFTLENBQUNLLFNBQVMsR0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFFTCxTQUFTLENBQUNNLFNBQVMsR0FBQyxHQUFHLENBQUMsR0FBQ04sU0FBUyxDQUFDSyxTQUFTLEdBQUMsR0FBRyxDQUFDLENBQUMsR0FBQ0wsU0FBUyxDQUFDSyxTQUFTLENBQUMsRUFBQztRQUFDRCxTQUFTLEdBQUMsQ0FBQ0EsU0FBUztNQUFDO01BQUNFLFNBQVMsR0FBQ0QsU0FBUztJQUFDO0lBQUMsSUFBR0QsU0FBUyxFQUFDO01BQUMsT0FBTSxDQUFDLENBQUMsRUFBRTtJQUFDO0lBQUMsS0FBSUMsU0FBUyxHQUFDLEdBQUcsRUFBQ0EsU0FBUyxHQUFDRixTQUFTLEVBQUNFLFNBQVMsSUFBRSxHQUFHLEVBQUM7TUFBQyxJQUFJRSxTQUFTLEdBQUNQLFNBQVMsQ0FBQ0ssU0FBUyxDQUFDO01BQUMsSUFBSUcsU0FBUyxHQUFDUixTQUFTLENBQUNLLFNBQVMsR0FBQyxHQUFHLENBQUM7TUFBQyxJQUFJSSxTQUFTLEdBQUMsS0FBSyxHQUFHO1FBQUNDLFNBQVMsR0FBQyxLQUFLLEdBQUc7TUFBQyxJQUFHTCxTQUFTLEtBQUdGLFNBQVMsR0FBQyxHQUFHLEVBQUM7UUFBQ00sU0FBUyxHQUFDVCxTQUFTLENBQUMsR0FBRyxDQUFDO1FBQUNVLFNBQVMsR0FBQ1YsU0FBUyxDQUFDLEdBQUcsQ0FBQztNQUFDLENBQUMsTUFBSTtRQUFDUyxTQUFTLEdBQUNULFNBQVMsQ0FBQ0ssU0FBUyxHQUFDLEdBQUcsQ0FBQztRQUFDSyxTQUFTLEdBQUNWLFNBQVMsQ0FBQ0ssU0FBUyxHQUFDLEdBQUcsQ0FBQztNQUFDO01BQUMsSUFBRyxJQUFJLENBQUMsWUFBWSxDQUFDLENBQUNFLFNBQVMsRUFBQ0MsU0FBUyxFQUFDQyxTQUFTLEVBQUNDLFNBQVMsRUFBQ1QsU0FBUyxFQUFDQyxTQUFTLENBQUMsRUFBQztRQUFDLE9BQU0sQ0FBQyxDQUFDLEVBQUU7TUFBQztJQUFDO0lBQUMsT0FBTSxDQUFDLEVBQUU7RUFBQyxDQUFDO0VBQUMxQyxTQUFTLENBQUMsZ0JBQWdCLENBQUMsR0FBQyxVQUFTbUQsU0FBUyxFQUFDQyxTQUFTLEVBQUNDLFNBQVMsRUFBQ0MsU0FBUyxFQUFDO0lBQUMsSUFBRyxJQUFJLENBQUMsZUFBZSxDQUFDLENBQUNILFNBQVMsRUFBQ0MsU0FBUyxFQUFDQyxTQUFTLENBQUMsRUFBQztNQUFDLE9BQU0sQ0FBQyxDQUFDLEVBQUU7SUFBQztJQUFDLElBQUlFLFNBQVMsR0FBQ0osU0FBUyxDQUFDLFFBQVEsQ0FBQztJQUFDLEtBQUksSUFBSUssU0FBUyxHQUFDLEdBQUcsRUFBQ0EsU0FBUyxHQUFDRCxTQUFTLEdBQUMsR0FBRyxFQUFDQyxTQUFTLElBQUUsR0FBRyxFQUFDO01BQUMsSUFBRyxJQUFJLENBQUMsYUFBYSxDQUFDLENBQUNMLFNBQVMsQ0FBQ0ssU0FBUyxDQUFDLEVBQUNMLFNBQVMsQ0FBQ0ssU0FBUyxHQUFDLEdBQUcsQ0FBQyxFQUFDTCxTQUFTLENBQUNLLFNBQVMsR0FBQyxHQUFHLENBQUMsRUFBQ0wsU0FBUyxDQUFDSyxTQUFTLEdBQUMsR0FBRyxDQUFDLEVBQUNKLFNBQVMsRUFBQ0MsU0FBUyxFQUFDQyxTQUFTLENBQUMsRUFBQztRQUFDLE9BQU0sQ0FBQyxDQUFDLEVBQUU7TUFBQztJQUFDO0lBQUMsT0FBTyxJQUFJLENBQUMsYUFBYSxDQUFDLENBQUNILFNBQVMsQ0FBQyxHQUFHLENBQUMsRUFBQ0EsU0FBUyxDQUFDLEdBQUcsQ0FBQyxFQUFDQSxTQUFTLENBQUNJLFNBQVMsR0FBQyxHQUFHLENBQUMsRUFBQ0osU0FBUyxDQUFDSSxTQUFTLEdBQUMsR0FBRyxDQUFDLEVBQUNILFNBQVMsRUFBQ0MsU0FBUyxFQUFDQyxTQUFTLENBQUM7RUFBQyxDQUFDO0VBQUN0RCxTQUFTLENBQUMsYUFBYSxDQUFDLEdBQUMsVUFBU3lELFNBQVMsRUFBQ0MsU0FBUyxFQUFDQyxTQUFTLEVBQUNDLFNBQVMsRUFBQ0MsU0FBUyxFQUFDQyxTQUFTLEVBQUNDLFNBQVMsRUFBQztJQUFDLElBQUlDLFNBQVMsR0FBQyxDQUFDSCxTQUFTLEdBQUNKLFNBQVMsRUFBQ0ssU0FBUyxHQUFDSixTQUFTLENBQUM7SUFBQyxJQUFJTyxTQUFTLEdBQUMsQ0FBQ04sU0FBUyxHQUFDRixTQUFTLEVBQUNHLFNBQVMsR0FBQ0YsU0FBUyxDQUFDO0lBQUMsSUFBSVEsU0FBUyxHQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQ0QsU0FBUyxFQUFDQSxTQUFTLENBQUM7SUFBQyxJQUFJRSxTQUFTLEdBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDSCxTQUFTLEVBQUNDLFNBQVMsQ0FBQztJQUFDLElBQUlHLFNBQVMsR0FBQ0QsU0FBUyxHQUFDRCxTQUFTO0lBQUNFLFNBQVMsR0FBQ0EsU0FBUyxHQUFDLEdBQUcsR0FBQyxHQUFHLEdBQUNBLFNBQVM7SUFBQ0EsU0FBUyxHQUFDQSxTQUFTLEdBQUMsR0FBRyxHQUFDLEdBQUcsR0FBQ0EsU0FBUztJQUFDLElBQUlDLFNBQVMsR0FBQyxDQUFDSixTQUFTLENBQUMsR0FBRyxDQUFDLEdBQUNHLFNBQVMsR0FBQ1gsU0FBUyxHQUFDSSxTQUFTLEVBQUNJLFNBQVMsQ0FBQyxHQUFHLENBQUMsR0FBQ0csU0FBUyxHQUFDVixTQUFTLEdBQUNJLFNBQVMsQ0FBQztJQUFDLElBQUlRLFNBQVMsR0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUNELFNBQVMsRUFBQ0EsU0FBUyxDQUFDO0lBQUMsT0FBT0MsU0FBUyxJQUFFUCxTQUFTLEdBQUNBLFNBQVM7RUFBQyxDQUFDO0VBQUMvRCxTQUFTLENBQUMsS0FBSyxDQUFDLEdBQUMsVUFBU3VFLFNBQVMsRUFBQ0MsU0FBUyxFQUFDO0lB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QUFHLEVBQUM7Z0JBQUMsSUFBRyxDQUFDRixTQUFTLENBQUMsc0JBQXNCLENBQUMsRUFBQztrQkFBQyxJQUFJLENBQUMsZUFBZSxDQUFDLENBQUNBLFNBQVMsQ0FBQztnQkFBQztnQkFBQyxJQUFHLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDQSxTQUFTLENBQUMsc0JBQXNCLENBQUMsRUFBQ0UsU0FBUyxDQUFDLFlBQVksQ0FBQyxDQUFDLEdBQUcsQ0FBQyxFQUFDQSxTQUFTLENBQUMsWUFBWSxDQUFDLENBQUMsR0FBRyxDQUFDLEVBQUNBLFNBQVMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxFQUFDO2tCQUFDLElBQUksQ0FBQyxlQUFlLENBQUMsQ0FBQ0YsU0FBUyxFQUFDRSxTQUFTLENBQUM7Z0JBQUM7Y0FBQyxDQUFDLE1BQUssSUFBR0YsU0FBUyxDQUFDLGdCQUFnQixDQUFDLElBQUUsR0FBRyxJQUFFRSxTQUFTLENBQUMsZ0JBQWdCLENBQUMsSUFBRSxHQUFHLEVBQUM7Z0JBQUMsSUFBRyxDQUFDQSxTQUFTLENBQUMsc0JBQXNCLENBQUMsRUFBQztrQkFBQyxJQUFJLENBQUMsZUFBZSxDQUFDLENBQUNBLFNBQVMsQ0FBQztnQkFBQztnQkFBQyxJQUFHLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDQSxTQUFTLENBQUMsc0JBQXNCLENBQUMsRUFBQ0YsU0FBUyxDQUFDLFlBQVksQ0FBQyxDQUFDLEdBQUcsQ0FBQyxFQUFDQSxTQUFTLENBQUMsWUFBWSxDQUFDLENBQUMsR0FBRyxDQUFDLEVBQUNBLFNBQVMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxFQUFDO2tCQUFDLElBQUksQ0FBQyxlQUFlLENBQUMsQ0FBQ0EsU0FBUyxFQUFDRSxTQUFTLENBQUM7Z0JBQUM7Y0FBQyxDQUFDLE1BQUk7Z0JBQUMsSUFBRyxDQUFDRixTQUFTLENBQUMsc0JBQXNCLENBQUMsRUFBQztrQkFBQyxJQUFJLENBQUMsZUFBZSxDQUFDLENBQUNBLFNBQVMsQ0FBQztnQkFBQztnQkFBQyxJQUFHLENBQUNFLFNBQVMsQ0FBQyxz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UyxHQUFDRixTQUFTO0lBQUMsSUFBSUcsU0FBUyxHQUFDRixTQUFTO0lBQUMsSUFBSUcsU0FBUyxHQUFDLENBQUNGLFNBQVMsRUFBQ0MsU0FBUyxDQUFDO0lBQUMsSUFBSUUsU0FBUyxFQUFDQyxTQUFTLEVBQUNDLFNBQVMsRUFBQ0MsU0FBUyxFQUFDQyxTQUFTLEVBQUNDLFNBQVM7SUFBQyxLQUFJLElBQUlDLFNBQVMsR0FBQyxHQUFHLEVBQUNBLFNBQVMsR0FBQ1AsU0FBUyxDQUFDLFFBQVEsQ0FBQyxFQUFDTyxTQUFTLEVBQUUsRUFBQztNQUFDLElBQUlDLFNBQVMsR0FBQ1IsU0FBUyxDQUFDTyxTQUFTLENBQUM7TUFBQyxLQUFJLElBQUlFLFNBQVMsR0FBQyxHQUFHLEVBQUNBLFNBQVMsR0FBQ0QsU0FBUyxDQUFDLFFBQVEsQ0FBQyxFQUFDQyxTQUFTLElBQUUsR0FBRyxFQUFDO1FBQUMsSUFBSUMsU0FBUyxHQUFDLENBQUNELFNBQVMsR0FBQyxHQUFHLElBQUVELFNBQVMsQ0FBQyxRQUFRLENBQUM7UUFBQyxJQUFJRyxTQUFTLEdBQUM7VUFBQyxHQUFHLEVBQUNILFNBQVMsQ0FBQ0UsU0FBUyxHQUFDLEdBQUcsQ0FBQyxHQUFDRixTQUFTLENBQUNDLFNBQVMsR0FBQyxHQUFHLENBQUM7VUFBQyxHQUFHLEVBQUNELFNBQVMsQ0FBQ0MsU0FBUyxDQUFDLEdBQUNELFNBQVMsQ0FBQ0UsU0FBUztRQUFDLENBQUM7UUFBQ1QsU0FBUyxHQUFDLElBQUk7UUFBQ0MsU0FBUyxHQUFDLElBQUk7UUFBQyxLQUFJSSxTQUFTLEdBQUMsR0FBRyxFQUFDQSxTQUFTLEdBQUNSLFNBQVMsQ0FBQyxRQUFRLENBQUMsRUFBQ1EsU0FBUyxJQUFFLEdBQUcsRUFBQztVQUFDSCxTQUFTLEdBQUNRLFNBQVMsQ0FBQyxHQUFHLENBQUMsR0FBQ2IsU0FBUyxDQUFDUSxTQUFTLENBQUMsR0FBQ0ssU0FBUyxDQUFDLEdBQUcsQ0FBQyxHQUFDYixTQUFTLENBQUNRLFNBQVMsR0FBQyxHQUFHLENBQUM7VUFBQyxJQUFHTCxTQUFT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O01BQUMsSUFBRyxJQUFJLENBQUMsTUFBTSxDQUFDLEVBQUM7UUFBQyxJQUFJLENBQUMsTUFBTSxDQUFDLEdBQUMsQ0FBQyxFQUFFO1FBQUMxSCxlQUFlLENBQUMsY0FBYyxDQUFDLENBQUMwSCxTQUFTLENBQUM7TUFBQyxDQUFDLE1BQUk7UUFBQyxJQUFJLENBQUMsTUFBTSxDQUFDLEdBQUMsQ0FBQyxDQUFDLEVBQUU7TUFBQztJQUFDO0VBQUMsQ0FBQztFQUFDLE9BQU9ELFNBQVM7QUFBQyxDQUFDLEVBQUU7QUFBQzNKLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQ0EsSUFBSSxDQUFDLG1CQUFtQixDQUFDLEVBQUMsWUFBVTtFQUFDLElBQUdKLG1CQUFtQixDQUFDLGlCQUFpQixDQUFDLENBQUMsaUJBQWlCLENBQUMsSUFBRSxDQUFDaUssU0FBUyxFQUFDO0lBQUMsSUFBSUMsU0FBUyxHQUFDLElBQUlKLE9BQU8sRUFBRTtJQUFDekosUUFBUSxDQUFDLGNBQWMsQ0FBQyxFQUFFLENBQUMsaUJBQWlCLENBQUMsQ0FBQzZKLFNBQVMsQ0FBQztJQUFDN0osUUFBUSxDQUFDLGNBQWMsQ0FBQyxFQUFFLENBQUMsZ0JBQWdCLENBQUMsQ0FBQzZKLFNBQVMsRUFBQzVKLFNBQVMsQ0FBQyxpQkFBaUIsQ0FBQyxFQUFDLENBQUMsRUFBRSxDQUFDO0VBQUM7QUFBQyxDQUFDLENBQUMiLCJzb3VyY2VSb290IjoiLyIsInNvdXJjZXNDb250ZW50IjpbIi8qT2JmdXNjYXRlZCBieSBKU2hhbWFuLmNvbSovJ3VzZSBzdHJpY3QnO2V4cG9ydHNbJ19fZXNNb2R1bGUnXT0hIVtdO2V4cG9ydHNbJ0xRQ29sbGlkZVN5c3RlbSddPXZvaWQgMHgwO3ZhciBscV9jb25zdF8xPXJlcXVpcmUoJy4uL2xxX2Jhc2UvZGF0YS9scV9jb25zdCcpO3ZhciBscV9tYXRoX3V0aWxfMT1yZXF1aXJlKCcuLi9scV9iYXNlL3V0aWwvbHFfbWF0aF91dGlsJyk7dmFyIGxxX2NvbGxpZGVfY29uZmlnXzE9cmVxdWlyZSgnLi9scV9jb2xsaWRlX2NvbmZpZycpO3ZhciBscV9kYXRhXzE9cmVxdWlyZSgnLi4vbHFfYmFzZS9kYXRhL2xxX2RhdGEnKTt2YXIgVmVjMj1jY1snVmVjMiddO3ZhciBnYW1lPWNjWydnYW1lJ107dmFyIGRpcmVjdG9yPWNjWydkaXJlY3RvciddO3ZhciBTY2hlZHVsZXI9Y2NbJ1NjaGVkdWxlciddO3ZhciBtaXNjPWNjWydtaXNjJ107dmFyIExRUXVhZFRyZWU9ZnVuY3Rpb24oKXtmdW5jdGlvbiBfMHg1NjU2NWUoXzB4M2QzYTBlLF8weDNmYjA1NSxfMHgyMGNlMDQsXzB4NDA2MDMzKXt0aGlzWydjb2xsaWRlX2FyciddPVtdO3RoaXNbJ25vZGVfYXJyJ109W107dGhpc1snbWF4X29iamVjdCddPV8weDNmYjA1NXx8MHhhO3RoaXNbJ21heF9sZXZlbCddPV8weDIwY2UwNHx8MHg0O3RoaXNbJ2xldmVsJ109XzB4NDA2MDMzfHwweDA7dGhpc1sncmVjdCddPV8weDNkM2EwZTt0aGlzWydjb2xsaWRlX2FyciddPVtdO3RoaXNbJ25vZGVfYXJyJ109W107fV8weDU2NTY1ZVsncHJvdG90eXBlJ11bJ3NwbGl0J109ZnVuY3Rpb24oKXt2YXIgXzB4MzJhOWNiPXRoaXNbJ2xldmVsJ10rMHgxO3ZhciBfMHgxNzhkODE9dGhpc1sncmVjdCddWyd3aWR0aCddKjAuNTt2YXIgXzB4MWQxZDk3PXRoaXNbJ3JlY3QnXVsnaGVpZ2h0J10qMC41O3ZhciBfMHg1ZjUwOTM9dGhpc1sncmVjdCddWyd4J107dmFyIF8weDMyNjljMj10aGlzWydyZWN0J11bJ3knXTt0aGlzWydub2RlX2FyciddWzB4MF09bmV3IF8weDU2NTY1ZShuZXcgbHFfZGF0YV8xWydMUVJlY3QnXShfMHg1ZjUwOTMrXzB4MTc4ZDgxLF8weDMyNjljMixfMHgxNzhkODEsXzB4MWQxZDk3KSx0aGlzWydtYXhfb2JqZWN0J10sdGhpc1snbWF4X2xldmVsJ10sXzB4MzJhOWNiKTt0aGlzWydub2RlX2FyciddWzB4MV09bmV3IF8weDU2NTY1ZShuZXcgbHFfZGF0YV8xWydMUVJlY3QnXShfMHg1ZjUwOTMsXzB4MzI2OWMyLF8weDE3OGQ4MSxfMHgxZDFkOTcpLHRoaXNbJ21heF9vYmplY3QnXSx0aGlzWydtYXhfbGV2ZWwnXSxfMHgzMmE5Y2IpO3RoaXNbJ25vZGVfYXJyJ11bMHgyXT1uZXcgXzB4NTY1NjVlKG5ldyBscV9kYXRhXzFbJ0xRUmVjdCddKF8weDVmNTA5MyxfMHgzMjY5YzIrXzB4MWQxZDk3LF8weDE3OGQ4MSxfMHgxZDFkOTcpLHRoaXNbJ21heF9vYmplY3QnXSx0aGlzWydtYXhfbGV2ZWwnXSxfMHgzMmE5Y2IpO3RoaXNbJ25vZGVfYXJyJ11bMHgzXT1uZXcgXzB4NTY1NjVlKG5ldyBscV9kYXRhXzFbJ0xRUmVjdCddKF8weDVmNTA5MytfMHgxNzhkODEsXzB4MzI2OWMyK18weDFkMWQ5NyxfMHgxNzhkODEsXzB4MWQxZDk3KSx0aGlzWydtYXhfb2JqZWN0J10sdGhpc1snbWF4X2xldmVsJ10sXzB4MzJhOWNiKTt9O18weDU2NTY1ZVsncHJvdG90eXBlJ11bJ2dldF9pbmRleCddPWZ1bmN0aW9uKF8weDU5ZDZlYyl7dmFyIF8weDFkYzU0Nz1bXTt2YXIgXzB4MmVhN2NkPXRoaXNbJ3JlY3QnXVsneCddK3RoaXNbJ3JlY3QnXVsnaGFsZl93aWR0aCddO3ZhciBfMHg1ZTk3Yjc9dGhpc1sncmVjdCddWyd5J10rdGhpc1sncmVjdCddWydoYWxmX2hlaWdodCddO3ZhciBfMHgyNDFmNTk9XzB4NTlkNmVjWyd3b3JsZF9yZWN0J11bJ3knXStfMHg1OWQ2ZWNbJ3dvcmxkX3JlY3QnXVsnaGFsZl9oZWlnaHQnXT5fMHg1ZTk3Yjc7dmFyIF8weDQzNzc5MD1fMHg1OWQ2ZWNbJ3dvcmxkX3JlY3QnXVsneCddLV8weDU5ZDZlY1snd29ybGRfcmVjdCddWydoYWxmX3dpZHRoJ108XzB4MmVhN2NkO3ZhciBfMHg1ZTY2MTk9XzB4NTlkNmVjWyd3b3JsZF9yZWN0J11bJ3gnXStfMHg1OWQ2ZWNbJ3dvcmxkX3JlY3QnXVsnaGFsZl93aWR0aCddPl8weDJlYTdjZDt2YXIgXzB4M2I0MmFhPV8weDU5ZDZlY1snd29ybGRfcmVjdCddWyd5J10tXzB4NTlkNmVjWyd3b3JsZF9yZWN0J11bJ2hhbGZfaGVpZ2h0J108XzB4NWU5N2I3O2lmKF8weDVlNjYxOSYmXzB4MjQxZjU5KXtfMHgxZGM1NDdbJ3B1c2gnXSgweDApO31pZihfMHg0Mzc3OTAmJl8weDI0MWY1OSl7XzB4MWRjNTQ3WydwdXNoJ10oMHgxKTt9aWYoXzB4NDM3NzkwJiZfMHgzYjQyYWEpe18weDFkYzU0N1sncHVzaCddKDB4Mik7fWlmKF8weDNiNDJhYSYmXzB4NWU2NjE5KXtfMHgxZGM1NDdbJ3B1c2gnXSgweDMpO31yZXR1cm4gXzB4MWRjNTQ3O307O18weDU2NTY1ZVsncHJvdG90eXBlJ11bJ2luc2VydCddPWZ1bmN0aW9uKF8weDMyZjIzYSl7dmFyIF8weDM4NTBmZTtpZih0aGlzWydub2RlX2FyciddWydsZW5ndGgnXSl7XzB4Mzg1MGZlPXRoaXNbJ2dldF9pbmRleCddKF8weDMyZjIzYSk7Zm9yKHZhciBfMHg0ODU2Y2Y9MHgwO18weDQ4NTZjZjxfMHgzODUwZmVbJ2xlbmd0aCddO18weDQ4NTZjZisrKXt0aGlzWydub2RlX2FyciddW18weDM4NTBmZVtfMHg0ODU2Y2ZdXVsnaW5zZXJ0J10oXzB4MzJmMjNhKTt9cmV0dXJuO310aGlzWydjb2xsaWRlX2FyciddWydwdXNoJ10oXzB4MzJmMjNhKTtpZih0aGlzWydjb2xsaWRlX2FyciddWydsZW5ndGgnXT50aGlzWydtYXhfb2JqZWN0J10mJnRoaXNbJ2xldmVsJ108dGhpc1snbWF4X2xldmVsJ10pe2lmKCF0aGlzWydub2RlX2FyciddWydsZW5ndGgnXSl7dGhpc1snc3BsaXQnXSgpO31mb3IodmFyIF8weDQ4NTZjZj0weDA7XzB4NDg1NmNmPHRoaXNbJ2NvbGxpZGVfYXJyJ11bJ2xlbmd0aCddO18weDQ4NTZjZisrKXt2YXIgXzB4MmQxMzZjPXRoaXNbJ2NvbGxpZGVfYXJyJ11bXzB4NDg1NmNmXTtfMHgzODUwZmU9dGhpc1snZ2V0X2luZGV4J10oXzB4MmQxMzZjKTtmb3IodmFyIF8weDFlOWYzNT0weDA7XzB4MWU5ZjM1PF8weDM4NTBmZVsnbGVuZ3RoJ107XzB4MWU5ZjM1Kyspe3RoaXNbJ25vZGVfYXJyJ11bXzB4Mzg1MGZlW18weDFlOWYzNV1dWydpbnNlcnQnXShfMHgyZDEzNmMpO319dGhpc1snY29sbGlkZV9hcnInXT1bXTt9fTs7XzB4NTY1NjVlWydwcm90b3R5cGUnXVsncmV0cmlldmUnXT1mdW5jdGlvbihfMHg3N2E3MSl7dmFyIF8weGFhOGM3YTt2YXIgXzB4NDIyNjRjPXRoaXNbJ2dldF9pbmRleCddKF8weDc3YTcxKTtpZih0aGlzWydjb2xsaWRlX2FyciddWydsZW5ndGgnXSl7KF8weGFhOGM3YT1fMHg1NjU2NWVbJ3RlbXBfY29sbGlkZV9hcnInXSlbJ3B1c2gnXVsnYXBwbHknXShfMHhhYThjN2EsdGhpc1snY29sbGlkZV9hcnInXSk7fWlmKHRoaXNbJ25vZGVfYXJyJ11bJ2xlbmd0aCddKXtmb3IodmFyIF8weDRjMzQ5Nz0weDA7XzB4NGMzNDk3PF8weDQyMjY0Y1snbGVuZ3RoJ107XzB4NGMzNDk3Kyspe3RoaXNbJ25vZGVfYXJyJ11bXzB4NDIyNjRjW18weDRjMzQ5N11dWydyZXRyaWV2ZSddKF8weDc3YTcxKTt9fX07O18weDU2NTY1ZVsncHJvdG90eXBlJ11bJ2dldF9hbGxfYXJlYSddPWZ1bmN0aW9uKCl7aWYodGhpc1snY29sbGlkZV9hcnInXVsnbGVuZ3RoJ10pe18weDU2NTY1ZVsnYWxsX2NvbGxpZGVfYXJyJ11bJ3B1c2gnXSh0aGlzWydjb2xsaWRlX2FyciddKTt9aWYodGhpc1snbm9kZV9hcnInXVsnbGVuZ3RoJ10pe2Zvcih2YXIgXzB4M2Q1YzlmPTB4MDtfMHgzZDVjOWY8MHg0O18weDNkNWM5ZisrKXt0aGlzWydub2RlX2FyciddW18weDNkNWM5Zl1bJ2dldF9hbGxfYXJlYSddKCk7fX19O18weDU2NTY1ZVsncHJvdG90eXBlJ11bJ2NsZWFyJ109ZnVuY3Rpb24oKXt0aGlzWydjb2xsaWRlX2FyciddPVtdO2Zvcih2YXIgXzB4MTcwZWNhPTB4MDtfMHgxNzBlY2E8dGhpc1snbm9kZV9hcnInXVsnbGVuZ3RoJ107XzB4MTcwZWNhKyspe2lmKHRoaXNbJ25vZGVfYXJyJ11bJ2xlbmd0aCddKXt0aGlzWydub2RlX2FyciddW18weDE3MGVjYV1bJ2NsZWFyJ10oKTt9fXRoaXNbJ25vZGVfYXJyJ109W107fTs7XzB4NTY1NjVlWyd0ZW1wX2NvbGxpZGVfYXJyJ109W107XzB4NTY1NjVlWydhbGxfY29sbGlkZV9hcnInXT1bXTtyZXR1cm4gXzB4NTY1NjVlO30oKTt2YXIgTFFDb2xsaWRlU3lzdGVtPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gXzB4OWJmNjBlKCl7fV8weDliZjYwZVsnY2FjaGVfcG9seWdvbiddPWZ1bmN0aW9uKF8weGJjM2QyMil7aWYoXzB4YmMzZDIyWydfY29sbGlkZV9zaGFwZSddPT09bHFfY29uc3RfMVsnTFFDb2xsaWRlU2hhcGUnXVsnUmVjdCddKXtfMHhiYzNkMjJbJ2NhY2hlX3BvbHlnb25fcG9pbnRzJ109W107dmFyIF8weDUzMjM1ZT1fMHhiYzNkMjJbJ3dvcmxkX3JlY3QnXVsndG9wX2xlZnQnXSgpO18weGJjM2QyMlsnY2FjaGVfcG9seWdvbl9wb2ludHMnXVsncHVzaCddKF8weDUzMjM1ZVsneCddKTtfMHhiYzNkMjJbJ2NhY2hlX3BvbHlnb25fcG9pbnRzJ11bJ3B1c2gnXShfMHg1MzIzNWVbJ3knXSk7XzB4NTMyMzVlPV8weGJjM2QyMlsnd29ybGRfcmVjdCddWydib3R0b21fbGVmdCddKCk7XzB4YmMzZDIyWydjYWNoZV9wb2x5Z29uX3BvaW50cyddWydwdXNoJ10oXzB4NTMyMzVlWyd4J10pO18weGJjM2QyMlsnY2FjaGVfcG9seWdvbl9wb2ludHMnXVsncHVzaCddKF8weDUzMjM1ZVsneSddKTtfMHg1MzIzNWU9XzB4YmMzZDIyWyd3b3JsZF9yZWN0J11bJ2JvdHRvbV9yaWdodCddKCk7XzB4YmMzZDIyWydjYWNoZV9wb2x5Z29uX3BvaW50cyddWydwdXNoJ10oXzB4NTMyMzVlWyd4J10pO18weGJjM2QyMlsnY2FjaGVfcG9seWdvbl9wb2ludHMnXVsncHVzaCddKF8weDUzMjM1ZVsneSddKTtfMHg1MzIzNWU9XzB4YmMzZDIyWyd3b3JsZF9yZWN0J11bJ3RvcF9yaWdodCddKCk7XzB4YmMzZDIyWydjYWNoZV9wb2x5Z29uX3BvaW50cyddWydwdXNoJ10oXzB4NTMyMzVlWyd4J10pO18weGJjM2QyMlsnY2FjaGVfcG9seWdvbl9wb2ludHMnXVsncHVzaCddKF8weDUzMjM1ZVsneSddKTt9ZWxzZSBpZihfMHhiYzNkMjJbJ19jb2xsaWRlX3NoYXBlJ109PT1scV9jb25zdF8xWydMUUNvbGxpZGVTaGFwZSddWydQb2x5Z29uJ10pe18weGJjM2QyMlsnY2FjaGVfcG9seWdvbl9wb2ludHMnXT1bXTtpZihfMHhiYzNkMjJbJ25vZGUnXVsnYW5nbGUnXT09MHgwKXtmb3IodmFyIF8weDJmMWU2Yz0weDA7XzB4MmYxZTZjPF8weGJjM2QyMlsnX3BvbHlnb25fcG9pbnRzJ11bJ2xlbmd0aCddO18weDJmMWU2YysrKXt2YXIgXzB4NTMyMzVlPV8weGJjM2QyMlsnd29ybGRfcmVjdCddWydhZGQnXShfMHhiYzNkMjJbJ19wb2x5Z29uX3BvaW50cyddW18weDJmMWU2Y10pO18weGJjM2QyMlsnY2FjaGVfcG9seWdvbl9wb2ludHMnXVsncHVzaCddKF8weDUzMjM1ZVsneCddKTtfMHhiYzNkMjJbJ2NhY2hlX3BvbHlnb25fcG9pbnRzJ11bJ3B1c2gnXShfMHg1MzIzNWVbJ3knXSk7fX1lbHNle3ZhciBfMHgxYmU2MzA9bWlzY1snZGVncmVlc1RvUmFkaWFucyddKF8weGJjM2QyMlsnbm9kZSddWydhbmdsZSddKTt2YXIgXzB4MWEwNTk4PU1hdGhbJ3NpbiddKF8weDFiZTYzMCk7dmFyIF8weDI1OTY3ZT1NYXRoWydjb3MnXShfMHgxYmU2MzApO3ZhciBfMHhmYmYyNDE9ZnVuY3Rpb24oXzB4NWVkM2E1KXtyZXR1cm4gbmV3IFZlYzIoXzB4NWVkM2E1Wyd4J10qXzB4MjU5NjdlLV8weDVlZDNhNVsneSddKl8weDFhMDU5OCtfMHhiYzNkMjJbJ3dvcmxkX3JlY3QnXVsneCddLF8weDVlZDNhNVsneCddKl8weDFhMDU5OCtfMHg1ZWQzYTVbJ3knXSpfMHgyNTk2N2UrXzB4YmMzZDIyWyd3b3JsZF9yZWN0J11bJ3knXSk7fTtmb3IodmFyIF8weDJmMWU2Yz0weDA7XzB4MmYxZTZjPF8weGJjM2QyMlsnX3BvbHlnb25fcG9pbnRzJ11bJ2xlbmd0aCddO18weDJmMWU2YysrKXt2YXIgXzB4NTMyMzVlPV8weGZiZjI0MShfMHhiYzNkMjJbJ19wb2x5Z29uX3BvaW50cyddW18weDJmMWU2Y10pO18weGJjM2QyMlsnY2FjaGVfcG9seWdvbl9wb2ludHMnXVsncHVzaCddKF8weDUzMjM1ZVsneCddKTtfMHhiYzNkMjJbJ2NhY2hlX3BvbHlnb25fcG9pbnRzJ11bJ3B1c2gnXShfMHg1MzIzNWVbJ3knXSk7fX19fTtfMHg5YmY2MGVbJ191cGRhdGVXb3JsZE1hdHJpeCddPWZ1bmN0aW9uKF8weDI5NmExYSl7aWYoXzB4Mjk2YTFhWydfcGFyZW50J10pe18weDliZjYwZVsnX3VwZGF0ZVdvcmxkTWF0cml4J10oXzB4Mjk2YTFhWydfcGFyZW50J10pO31pZihfMHgyOTZhMWFbJ193b3JsZE1hdERpcnR5J10pe3RoaXNbJ3RtcF9ib29sJ109ISFbXTtfMHgyOTZhMWFbJ19jYWxjdWxXb3JsZE1hdHJpeCddKCk7dmFyIF8weDNkMWNhMj1fMHgyOTZhMWFbJ19jaGlsZHJlbiddO2Zvcih2YXIgXzB4MmI0ZWM5PTB4MCxfMHg2MDAzNjc9XzB4M2QxY2EyWydsZW5ndGgnXTtfMHgyYjRlYzk8XzB4NjAwMzY3O18weDJiNGVjOSsrKXtfMHgzZDFjYTJbXzB4MmI0ZWM5XVsnX3dvcmxkTWF0RGlydHknXT0hIVtdO319fTtfMHg5YmY2MGVbJ3RyYW5zZm9ybU1hdDQnXT1mdW5jdGlvbihfMHg1ZDY4YjUsXzB4MmM0ZGQwLF8weDE5MGY4OCl7dmFyIF8weDUyM2RjOD1fMHgxOTBmODhbJ20nXTtfMHg1ZDY4YjVbJ3gnXT1fMHg1MjNkYzhbMHgwXSpfMHgyYzRkZDBbJ3gnXStfMHg1MjNkYzhbMHg0XSpfMHgyYzRkZDBbJ3knXStfMHg1MjNkYzhbMHhjXTtfMHg1ZDY4YjVbJ3knXT1fMHg1MjNkYzhbMHgxXSpfMHgyYzRkZDBbJ3gnXStfMHg1MjNkYzhbMHg1XSpfMHgyYzRkZDBbJ3knXStfMHg1MjNkYzhbMHhkXTtyZXR1cm4gXzB4NWQ2OGI1O307XzB4OWJmNjBlWyd1cGRhdGVfd29ybGRfcmVjdCddPWZ1bmN0aW9uKF8weDI2NGI3Mil7aWYoIV8weDI2NGI3Mlsnd29ybGRfcmVjdCddKXtyZXR1cm47fXRoaXNbJ3RtcF9ib29sJ109IVtdO3RoaXNbJ191cGRhdGVXb3JsZE1hdHJpeCddKF8weDI2NGI3Mlsnbm9kZSddKTtpZih0aGlzWyd0bXBfYm9vbCddKXtfMHgyNjRiNzJbJ2NhY2hlX3BvbHlnb25fcG9pbnRzJ109dW5kZWZpbmVkO31fMHg5YmY2MGVbJ3RyYW5zZm9ybU1hdDQnXShfMHgyNjRiNzJbJ3dvcmxkX3JlY3QnXSxfMHgyNjRiNzJbJ19vZmZzZXQnXSxfMHgyNjRiNzJbJ25vZGUnXVsnX3dvcmxkTWF0cml4J10pO307XzB4OWJmNjBlWyd1cGRhdGVfY29sbGlkZV9sb2dpYyddPWZ1bmN0aW9uKF8weDFiOWEyYyl7aWYoXzB4MWI5YTJjWydpc19vcGVuX2Z1bmMnXSl7Zm9yKHZhciBfMHgxZDhkOGMgaW4gXzB4MWI5YTJjWydjb2xsaWRlX21hcCddKXt2YXIgXzB4MTQwNmI1PV8weDFiOWEyY1snY29sbGlkZV9tYXAnXVtfMHgxZDhkOGNdO2lmKF8weDE0MDZiNVsnc3RhdHVzJ109PT0weDEpe18weDE0MDZiNVsnc3RhdHVzJ109MHgyO31lbHNle2RlbGV0ZSBfMHgxYjlhMmNbJ2NvbGxpZGVfbWFwJ11bXzB4MWQ4ZDhjXTtfMHgxYjlhMmNbJ29uX2V4aXQnXShfMHgxNDA2YjVbJ2NvbGxpZGUnXSk7fX19XzB4MWI5YTJjWyd1cGRhdGVfbHFfY29sbGlkZSddKCk7fTtfMHg5YmY2MGVbJ2NvbGxpZGVfb3RoZXInXT1mdW5jdGlvbihfMHg2NGYwNjQsXzB4M2JlY2RkKXtpZihfMHg2NGYwNjRbJ2lzX29wZW5fZnVuYyddKXt2YXIgXzB4NDViMDI5PV8weDY0ZjA2NFsnY29sbGlkZV9tYXAnXVtfMHgzYmVjZGRbJ2NvbGxpZGVfaWQnXV07aWYoXzB4NDViMDI5KXtfMHg0NWIwMjlbJ3N0YXR1cyddPTB4MTt9ZWxzZXtfMHg2NGYwNjRbJ2NvbGxpZGVfbWFwJ11bXzB4M2JlY2RkWydjb2xsaWRlX2lkJ11dPXsnY29sbGlkZSc6XzB4M2JlY2RkLCdzdGF0dXMnOjB4MX07XzB4NjRmMDY0Wydvbl9lbnRlciddKF8weDNiZWNkZCk7fX1pZihfMHgzYmVjZGRbJ2lzX29wZW5fZnVuYyddKXt2YXIgXzB4NTQ0YTVjPV8weDNiZWNkZFsnY29sbGlkZV9tYXAnXVtfMHg2NGYwNjRbJ2NvbGxpZGVfaWQnXV07aWYoXzB4NTQ0YTVjKXtfMHg1NDRhNWNbJ3N0YXR1cyddPTB4MTt9ZWxzZXtfMHgzYmVjZGRbJ2NvbGxpZGVfbWFwJ11bXzB4NjRmMDY0Wydjb2xsaWRlX2lkJ11dPXsnY29sbGlkZSc6XzB4NjRmMDY0LCdzdGF0dXMnOjB4MX07XzB4M2JlY2RkWydvbl9lbnRlciddKF8weDY0ZjA2NCk7fX1fMHg2NGYwNjRbJ29uX2NvbGxpZGUnXShfMHgzYmVjZGQpO18weDNiZWNkZFsnb25fY29sbGlkZSddKF8weDY0ZjA2NCk7fTtfMHg5YmY2MGVbJ2FkZF9jb2xsaWRlJ109ZnVuY3Rpb24oXzB4MmU4OTdkKXt0aGlzWyd1cGRhdGVfd29ybGRfcmVjdCddKF8weDJlODk3ZCk7dGhpc1snY29sbGlkZV9hcnInXVsncHVzaCddKF8weDJlODk3ZCk7fTtfMHg5YmY2MGVbJ3JlbW92ZV9jb2xsaWRlJ109ZnVuY3Rpb24oXzB4NDE2Mjk4KXtmb3IodmFyIF8weDEyMDU5YT10aGlzWydjb2xsaWRlX2FyciddWydsZW5ndGgnXS0weDE7XzB4MTIwNTlhPj0weDA7XzB4MTIwNTlhLS0pe2lmKHRoaXNbJ2NvbGxpZGVfYXJyJ11bXzB4MTIwNTlhXVsnY29sbGlkZV9pZCddPT09XzB4NDE2Mjk4Wydjb2xsaWRlX2lkJ10pe3RoaXNbJ2NvbGxpZGVfYXJyJ11bJ3NwbGljZSddKF8weDEyMDU5YSwweDEpO2JyZWFrO319fTtfMHg5YmY2MGVbJ2xpbmVfcG9pbnQnXT1mdW5jdGlvbihfMHg0YTczNzAsXzB4MjRjN2ExLF8weDRlMThlZSxfMHgxMjIzNTYsXzB4MmJkNzEzLF8weDJkM2I2ZSl7cmV0dXJuIE1hdGhbJ2FicyddKHRoaXNbJ2Rpc3RhbmNlU3F1YXJlZCddKF8weDRhNzM3MCxfMHgyNGM3YTEsXzB4NGUxOGVlLF8weDEyMjM1NiktKHRoaXNbJ2Rpc3RhbmNlU3F1YXJlZCddKF8weDRhNzM3MCxfMHgyNGM3YTEsXzB4MmJkNzEzLF8weDJkM2I2ZSkrdGhpc1snZGlzdGFuY2VTcXVhcmVkJ10oXzB4NGUxOGVlLF8weDEyMjM1NixfMHgyYmQ3MTMsXzB4MmQzYjZlKSkpPD0weDE7fTtfMHg5YmY2MGVbJ2Rpc3RhbmNlU3F1YXJlZCddPWZ1bmN0aW9uKF8weDVjY2EzYixfMHgxMWI2NzgsXzB4MWYwYjYzLF8weDUyY2VjNyl7cmV0dXJuIE1hdGhbJ3NxcnQnXShNYXRoWydwb3cnXShfMHg1Y2NhM2ItXzB4MWYwYjYzLDB4MikrTWF0aFsncG93J10oXzB4MTFiNjc4LV8weDUyY2VjNywweDIpKTt9O18weDliZjYwZVsncG9seWdvbl9wb2ludCddPWZ1bmN0aW9uKF8weDQyMzZjMCxfMHgxMmU4MjUsXzB4NWNkNGRkKXt2YXIgXzB4YmQ2ZmQwPV8weDQyMzZjMFsnbGVuZ3RoJ107dmFyIF8weDFmNGZiYz0hW107dmFyIF8weDI2N2I1OCxfMHg0YTFiYWU7Zm9yKF8weDI2N2I1OD0weDAsXzB4NGExYmFlPV8weGJkNmZkMC0weDI7XzB4MjY3YjU4PF8weGJkNmZkMDtfMHgyNjdiNTgrPTB4Mil7aWYoXzB4NDIzNmMwW18weDI2N2I1OCsweDFdPl8weDVjZDRkZCE9PV8weDQyMzZjMFtfMHg0YTFiYWUrMHgxXT5fMHg1Y2Q0ZGQmJl8weDEyZTgyNTwoXzB4NDIzNmMwW18weDRhMWJhZV0tXzB4NDIzNmMwW18weDI2N2I1OF0pKihfMHg1Y2Q0ZGQtXzB4NDIzNmMwW18weDI2N2I1OCsweDFdKS8oXzB4NDIzNmMwW18weDRhMWJhZSsweDFdLV8weDQyMzZjMFtfMHgyNjdiNTgrMHgxXSkrXzB4NDIzNmMwW18weDI2N2I1OF0pe18weDFmNGZiYz0hXzB4MWY0ZmJjO31fMHg0YTFiYWU9XzB4MjY3YjU4O31pZihfMHgxZjRmYmMpe3JldHVybiEhW107fWZvcihfMHgyNjdiNTg9MHgwO18weDI2N2I1ODxfMHhiZDZmZDA7XzB4MjY3YjU4Kz0weDIpe3ZhciBfMHg1NzRlM2U9XzB4NDIzNmMwW18weDI2N2I1OF07dmFyIF8weDRiOTJkOD1fMHg0MjM2YzBbXzB4MjY3YjU4KzB4MV07dmFyIF8weDVkMzlkND12b2lkIDB4MCxfMHgxMjRlOWM9dm9pZCAweDA7aWYoXzB4MjY3YjU4PT09XzB4YmQ2ZmQwLTB4Mil7XzB4NWQzOWQ0PV8weDQyMzZjMFsweDBdO18weDEyNGU5Yz1fMHg0MjM2YzBbMHgxXTt9ZWxzZXtfMHg1ZDM5ZDQ9XzB4NDIzNmMwW18weDI2N2I1OCsweDJdO18weDEyNGU5Yz1fMHg0MjM2YzBbXzB4MjY3YjU4KzB4M107fWlmKHRoaXNbJ2xpbmVfcG9pbnQnXShfMHg1NzRlM2UsXzB4NGI5MmQ4LF8weDVkMzlkNCxfMHgxMjRlOWMsXzB4MTJlODI1LF8weDVjZDRkZCkpe3JldHVybiEhW107fX1yZXR1cm4hW107fTtfMHg5YmY2MGVbJ3BvbHlnb25fY2lyY2xlJ109ZnVuY3Rpb24oXzB4Mzg3MTg4LF8weDYxMTAxMixfMHgzNzA3ZTgsXzB4MjQzMmUxKXtpZih0aGlzWydwb2x5Z29uX3BvaW50J10oXzB4Mzg3MTg4LF8weDYxMTAxMixfMHgzNzA3ZTgpKXtyZXR1cm4hIVtdO312YXIgXzB4MTk3NjU3PV8weDM4NzE4OFsnbGVuZ3RoJ107Zm9yKHZhciBfMHgzZGY2ZmM9MHgwO18weDNkZjZmYzxfMHgxOTc2NTctMHgyO18weDNkZjZmYys9MHgyKXtpZih0aGlzWydsaW5lX2NpcmNsZSddKF8weDM4NzE4OFtfMHgzZGY2ZmNdLF8weDM4NzE4OFtfMHgzZGY2ZmMrMHgxXSxfMHgzODcxODhbXzB4M2RmNmZjKzB4Ml0sXzB4Mzg3MTg4W18weDNkZjZmYysweDNdLF8weDYxMTAxMixfMHgzNzA3ZTgsXzB4MjQzMmUxKSl7cmV0dXJuISFbXTt9fXJldHVybiB0aGlzWydsaW5lX2NpcmNsZSddKF8weDM4NzE4OFsweDBdLF8weDM4NzE4OFsweDFdLF8weDM4NzE4OFtfMHgxOTc2NTctMHgyXSxfMHgzODcxODhbXzB4MTk3NjU3LTB4MV0sXzB4NjExMDEyLF8weDM3MDdlOCxfMHgyNDMyZTEpO307XzB4OWJmNjBlWydsaW5lX2NpcmNsZSddPWZ1bmN0aW9uKF8weDEyYmJhMSxfMHgzMjEyOTAsXzB4MTM2NzAzLF8weDUzN2UwZSxfMHgzYWQxNDcsXzB4NTU5YTdkLF8weDQ4YTgzNCl7dmFyIF8weDNiZmQ5ND1bXzB4M2FkMTQ3LV8weDEyYmJhMSxfMHg1NTlhN2QtXzB4MzIxMjkwXTt2YXIgXzB4NmRhNjIwPVtfMHgxMzY3MDMtXzB4MTJiYmExLF8weDUzN2UwZS1fMHgzMjEyOTBdO3ZhciBfMHgxZmVkYTQ9dGhpc1snZG90J10oXzB4NmRhNjIwLF8weDZkYTYyMCk7dmFyIF8weDUzOTEzZD10aGlzWydkb3QnXShfMHgzYmZkOTQsXzB4NmRhNjIwKTt2YXIgXzB4MzY3NGY1PV8weDUzOTEzZC9fMHgxZmVkYTQ7XzB4MzY3NGY1PV8weDM2NzRmNTwweDA/MHgwOl8weDM2NzRmNTtfMHgzNjc0ZjU9XzB4MzY3NGY1PjB4MT8weDE6XzB4MzY3NGY1O3ZhciBfMHgxNTAwMzM9W18weDZkYTYyMFsweDBdKl8weDM2NzRmNStfMHgxMmJiYTEtXzB4M2FkMTQ3LF8weDZkYTYyMFsweDFdKl8weDM2NzRmNStfMHgzMjEyOTAtXzB4NTU5YTdkXTt2YXIgXzB4NDQyYWYxPXRoaXNbJ2RvdCddKF8weDE1MDAzMyxfMHgxNTAwMzMpO3JldHVybiBfMHg0NDJhZjE8PV8weDQ4YTgzNCpfMHg0OGE4MzQ7fTtfMHg5YmY2MGVbJ2RvdCddPWZ1bmN0aW9uKF8weDFlNzlhNSxfMHgxNzljOTIpe3JldHVybiBfMHgxZTc5YTVbMHgwXSpfMHgxNzljOTJbMHgwXStfMHgxZTc5YTVbMHgxXSpfMHgxNzljOTJbMHgxXTt9O18weDliZjYwZVsndXBkYXRlX2xvZ2ljJ109ZnVuY3Rpb24oXzB4YjE3Mjc4KXtpZighdGhpc1snaXNfZW5hYmxlJ10pe3JldHVybjt9aWYobHFfY29sbGlkZV9jb25maWdfMVsnTFFDb2xsaWRlQ29uZmlnJ11bJ3N3aXRjaF9xdWFkX3RyZWUnXSl7dGhpc1sncXVhZF90cmVlJ11bJ2NsZWFyJ10oKTtmb3IodmFyIF8weDEzMzdiZD10aGlzWydjb2xsaWRlX2FyciddWydsZW5ndGgnXS0weDE7XzB4MTMzN2JkPj0weDA7XzB4MTMzN2JkLS0pe3ZhciBfMHgyMDE4MWU9dGhpc1snY29sbGlkZV9hcnInXVtfMHgxMzM3YmRdO2lmKCFfMHgyMDE4MWUpe3JldHVybjt9aWYoIV8weDIwMTgxZVsnaXNWYWxpZCddKXt0aGlzWydjb2xsaWRlX2FyciddWydzcGxpY2UnXShfMHgxMzM3YmQsMHgxKTtjb250aW51ZTt9dGhpc1sndXBkYXRlX2NvbGxpZGVfbG9naWMnXShfMHgyMDE4MWUpO2lmKF8weDIwMTgxZVsnaXNfZW5hYmxlJ10pe3RoaXNbJ3VwZGF0ZV93b3JsZF9yZWN0J10oXzB4MjAxODFlKTt0aGlzWydxdWFkX3RyZWUnXVsnaW5zZXJ0J10oXzB4MjAxODFlKTt9fUxRUXVhZFRyZWVbJ2FsbF9jb2xsaWRlX2FyciddPVtdO3RoaXNbJ3F1YWRfdHJlZSddWydnZXRfYWxsX2FyZWEnXSgpO2Zvcih2YXIgXzB4NGFmNmZmPTB4MDtfMHg0YWY2ZmY8TFFRdWFkVHJlZVsnYWxsX2NvbGxpZGVfYXJyJ11bJ2xlbmd0aCddO18weDRhZjZmZisrKXt2YXIgXzB4NWNhYzcxPUxRUXVhZFRyZWVbJ2FsbF9jb2xsaWRlX2FyciddW18weDRhZjZmZl07Zm9yKHZhciBfMHgxMzM3YmQ9MHgwO18weDEzMzdiZDxfMHg1Y2FjNzFbJ2xlbmd0aCddO18weDEzMzdiZCsrKXt2YXIgXzB4NTQ5YTY2PV8weDVjYWM3MVtfMHgxMzM3YmRdO2Zvcih2YXIgXzB4NTc5M2ZmPV8weDEzMzdiZCsweDE7XzB4NTc5M2ZmPF8weDVjYWM3MVsnbGVuZ3RoJ107XzB4NTc5M2ZmKyspe3ZhciBfMHg0NzQwZmU9XzB4NWNhYzcxW18weDU3OTNmZl07aWYoXzB4NTQ5YTY2Wydjb2xsaWRlX2NhdGVnb3J5J10mXzB4NDc0MGZlWydjb2xsaWRlX21hc2snXSYmXzB4NTQ5YTY2IT09XzB4NDc0MGZlKXtpZihfMHg1NDlhNjZbJ19jb2xsaWRlX3NoYXBlJ109PT0weDEmJl8weDQ3NDBmZVsnX2NvbGxpZGVfc2hhcGUnXT09PTB4MSl7aWYobHFfbWF0aF91dGlsXzFbJ0xRTWF0aFV0aWwnXVsnaW50ZXJzZWN0c19yZWN0J10oXzB4NTQ5YTY2Wyd3b3JsZF9yZWN0J10sXzB4NDc0MGZlWyd3b3JsZF9yZWN0J10pKXt0aGlzWydjb2xsaWRlX290aGVyJ10oXzB4NTQ5YTY2LF8weDQ3NDBmZSk7fX1lbHNlIGlmKF8weDU0OWE2NlsnX2NvbGxpZGVfc2hhcGUnXT09PTB4MSYmXzB4NDc0MGZlWydfY29sbGlkZV9zaGFwZSddPT09MHgyKXtpZihscV9tYXRoX3V0aWxfMVsnTFFNYXRoVXRpbCddWydpbnRlcnNlY3RzX2NpcmNsZV9yZWN0J10oXzB4NDc0MGZlWyd3b3JsZF9yZWN0J10sXzB4NDc0MGZlWydyYWRpdXMnXSxfMHg1NDlhNjZbJ3dvcmxkX3JlY3QnXSkpe3RoaXNbJ2NvbGxpZGVfb3RoZXInXShfMHg1NDlhNjYsXzB4NDc0MGZlKTt9fWVsc2UgaWYoXzB4NTQ5YTY2WydfY29sbGlkZV9zaGFwZSddPT09MHgyJiZfMHg0NzQwZmVbJ19jb2xsaWRlX3NoYXBlJ109PT0weDEpe2lmKGxxX21hdGhfdXRpbF8xWydMUU1hdGhVdGlsJ11bJ2ludGVyc2VjdHNfY2lyY2xlX3JlY3QnXShfMHg1NDlhNjZbJ3dvcmxkX3JlY3QnXSxfMHg1NDlhNjZbJ3JhZGl1cyddLF8weDQ3NDBmZVsnd29ybGRfcmVjdCddKSl7dGhpc1snY29sbGlkZV9vdGhlciddKF8weDU0OWE2NixfMHg0NzQwZmUpO319ZWxzZSBpZihfMHg1NDlhNjZbJ19jb2xsaWRlX3NoYXBlJ109PT0weDImJl8weDQ3NDBmZVsnX2NvbGxpZGVfc2hhcGUnXT09PTB4Mil7aWYobHFfbWF0aF91dGlsXzFbJ0xRTWF0aFV0aWwnXVsnaW50ZXJzZWN0c19jaXJjbGUnXShfMHg1NDlhNjZbJ3dvcmxkX3JlY3QnXSxfMHg1NDlhNjZbJ3JhZGl1cyddLF8weDQ3NDBmZVsnd29ybGRfcmVjdCddLF8weDQ3NDBmZVsncmFkaXVzJ10pKXt0aGlzWydjb2xsaWRlX290aGVyJ10oXzB4NTQ5YTY2LF8weDQ3NDBmZSk7fX1lbHNlIGlmKF8weDU0OWE2NlsnX2NvbGxpZGVfc2hhcGUnXT09MHgzJiZfMHg0NzQwZmVbJ19jb2xsaWRlX3NoYXBlJ109PTB4Mil7aWYoIV8weDU0OWE2NlsnY2FjaGVfcG9seWdvbl9wb2ludHMnXSl7dGhpc1snY2FjaGVfcG9seWdvbiddKF8weDU0OWE2Nik7fWlmKHRoaXNbJ3BvbHlnb25fY2lyY2xlJ10oXzB4NTQ5YTY2WydjYWNoZV9wb2x5Z29uX3BvaW50cyddLF8weDQ3NDBmZVsnd29ybGRfcmVjdCddWyd4J10sXzB4NDc0MGZlWyd3b3JsZF9yZWN0J11bJ3knXSxfMHg0NzQwZmVbJ3JhZGl1cyddKSl7dGhpc1snY29sbGlkZV9vdGhlciddKF8weDU0OWE2NixfMHg0NzQwZmUpO319ZWxzZSBpZihfMHg1NDlhNjZbJ19jb2xsaWRlX3NoYXBlJ109PTB4MiYmXzB4NDc0MGZlWydfY29sbGlkZV9zaGFwZSddPT0weDMpe2lmKCFfMHg0NzQwZmVbJ2NhY2hlX3BvbHlnb25fcG9pbnRzJ10pe3RoaXNbJ2NhY2hlX3BvbHlnb24nXShfMHg0NzQwZmUpO31pZih0aGlzWydwb2x5Z29uX2NpcmNsZSddKF8weDQ3NDBmZVsnY2FjaGVfcG9seWdvbl9wb2ludHMnXSxfMHg1NDlhNjZbJ3dvcmxkX3JlY3QnXVsneCddLF8weDU0OWE2Nlsnd29ybGRfcmVjdCddWyd5J10sXzB4NTQ5YTY2WydyYWRpdXMnXSkpe3RoaXNbJ2NvbGxpZGVfb3RoZXInXShfMHg1NDlhNjYsXzB4NDc0MGZlKTt9fWVsc2V7aWYoIV8weDU0OWE2NlsnY2FjaGVfcG9seWdvbl9wb2ludHMnXSl7dGhpc1snY2FjaGVfcG9seWdvbiddKF8weDU0OWE2Nik7fWlmKCFfMHg0NzQwZmVbJ2NhY2hlX3BvbHlnb25fcG9pbnRzJ10pe3RoaXNbJ2NhY2hlX3BvbHlnb24nXShfMHg0NzQwZmUpO31pZih0aGlzWydwb2x5Z29uX3BvbHlnb24nXShfMHg1NDlhNjZbJ2NhY2hlX3BvbHlnb25fcG9pbnRzJ10sXzB4NDc0MGZlWydjYWNoZV9wb2x5Z29uX3BvaW50cyddKSl7dGhpc1snY29sbGlkZV9vdGhlciddKF8weDU0OWE2NixfMHg0NzQwZmUpO319fX19fX1lbHNle3ZhciBfMHg1Y2FjNzE9W107Zm9yKHZhciBfMHgxMzM3YmQ9dGhpc1snY29sbGlkZV9hcnInXVsnbGVuZ3RoJ10tMHgxO18weDEzMzdiZD49MHgwO18weDEzMzdiZC0tKXt2YXIgXzB4MjAxODFlPXRoaXNbJ2NvbGxpZGVfYXJyJ11bXzB4MTMzN2JkXTtpZighXzB4MjAxODFlKXtyZXR1cm47fWlmKCFfMHgyMDE4MWVbJ2lzVmFsaWQnXSl7dGhpc1snY29sbGlkZV9hcnInXVsnc3BsaWNlJ10oXzB4MTMzN2JkLDB4MSk7Y29udGludWU7fXRoaXNbJ3VwZGF0ZV9jb2xsaWRlX2xvZ2ljJ10oXzB4MjAxODFlKTtpZihfMHgyMDE4MWVbJ2lzX2VuYWJsZSddKXt0aGlzWyd1cGRhdGVfd29ybGRfcmVjdCddKF8weDIwMTgxZSk7XzB4NWNhYzcxWydwdXNoJ10oXzB4MjAxODFlKTt9fXZhciBfMHg0ZjMzMzc9XzB4NWNhYzcxWydsZW5ndGgnXTtmb3IodmFyIF8weDEzMzdiZD0weDA7XzB4MTMzN2JkPF8weDRmMzMzNztfMHgxMzM3YmQrKyl7dmFyIF8weDU0OWE2Nj1fMHg1Y2FjNzFbXzB4MTMzN2JkXTtmb3IodmFyIF8weDU3OTNmZj1fMHgxMzM3YmQrMHgxO18weDU3OTNmZjxfMHg0ZjMzMzc7XzB4NTc5M2ZmKyspe3ZhciBfMHg0NzQwZmU9XzB4NWNhYzcxW18weDU3OTNmZl07aWYoXzB4NTQ5YTY2Wydjb2xsaWRlX2NhdGVnb3J5J10mXzB4NDc0MGZlWydjb2xsaWRlX21hc2snXSl7aWYoXzB4NTQ5YTY2WydfY29sbGlkZV9zaGFwZSddPT09MHgxJiZfMHg0NzQwZmVbJ19jb2xsaWRlX3NoYXBlJ109PT0weDEpe2lmKGxxX21hdGhfdXRpbF8xWydMUU1hdGhVdGlsJ11bJ2ludGVyc2VjdHNfcmVjdCddKF8weDU0OWE2Nlsnd29ybGRfcmVjdCddLF8weDQ3NDBmZVsnd29ybGRfcmVjdCddKSl7dGhpc1snY29sbGlkZV9vdGhlciddKF8weDU0OWE2NixfMHg0NzQwZmUpO319ZWxzZSBpZihfMHg1NDlhNjZbJ19jb2xsaWRlX3NoYXBlJ109PT0weDEmJl8weDQ3NDBmZVsnX2NvbGxpZGVfc2hhcGUnXT09PTB4Mil7aWYobHFfbWF0aF91dGlsXzFbJ0xRTWF0aFV0aWwnXVsnaW50ZXJzZWN0c19jaXJjbGVfcmVjdCddKF8weDQ3NDBmZVsnd29ybGRfcmVjdCddLF8weDQ3NDBmZVsncmFkaXVzJ10sXzB4NTQ5YTY2Wyd3b3JsZF9yZWN0J10pKXt0aGlzWydjb2xsaWRlX290aGVyJ10oXzB4NTQ5YTY2LF8weDQ3NDBmZSk7fX1lbHNlIGlmKF8weDU0OWE2NlsnX2NvbGxpZGVfc2hhcGUnXT09PTB4MiYmXzB4NDc0MGZlWydfY29sbGlkZV9zaGFwZSddPT09MHgxKXtpZihscV9tYXRoX3V0aWxfMVsnTFFNYXRoVXRpbCddWydpbnRlcnNlY3RzX2NpcmNsZV9yZWN0J10oXzB4NTQ5YTY2Wyd3b3JsZF9yZWN0J10sXzB4NTQ5YTY2WydyYWRpdXMnXSxfMHg0NzQwZmVbJ3dvcmxkX3JlY3QnXSkpe3RoaXNbJ2NvbGxpZGVfb3RoZXInXShfMHg1NDlhNjYsXzB4NDc0MGZlKTt9fWVsc2UgaWYoXzB4NTQ5YTY2WydfY29sbGlkZV9zaGFwZSddPT09MHgyJiZfMHg0NzQwZmVbJ19jb2xsaWRlX3NoYXBlJ109PT0weDIpe2lmKGxxX21hdGhfdXRpbF8xWydMUU1hdGhVdGlsJ11bJ2ludGVyc2VjdHNfY2lyY2xlJ10oXzB4NTQ5YTY2Wyd3b3JsZF9yZWN0J10sXzB4NTQ5YTY2WydyYWRpdXMnXSxfMHg0NzQwZmVbJ3dvcmxkX3JlY3QnXSxfMHg0NzQwZmVbJ3JhZGl1cyddKSl7dGhpc1snY29sbGlkZV9vdGhlciddKF8weDU0OWE2NixfMHg0NzQwZmUpO319ZWxzZSBpZihfMHg1NDlhNjZbJ19jb2xsaWRlX3NoYXBlJ109PTB4MyYmXzB4NDc0MGZlWydfY29sbGlkZV9zaGFwZSddPT0weDIpe2lmKCFfMHg1NDlhNjZbJ2NhY2hlX3BvbHlnb25fcG9pbnRzJ10pe3RoaXNbJ2NhY2hlX3BvbHlnb24nXShfMHg1NDlhNjYpO31pZih0aGlzWydwb2x5Z29uX2NpcmNsZSddKF8weDU0OWE2NlsnY2FjaGVfcG9seWdvbl9wb2ludHMnXSxfMHg0NzQwZmVbJ3dvcmxkX3JlY3QnXVsneCddLF8weDQ3NDBmZVsnd29ybGRfcmVjdCddWyd5J10sXzB4NDc0MGZlWydyYWRpdXMnXSkpe3RoaXNbJ2NvbGxpZGVfb3RoZXInXShfMHg1NDlhNjYsXzB4NDc0MGZlKTt9fWVsc2UgaWYoXzB4NTQ5YTY2WydfY29sbGlkZV9zaGFwZSddPT0weDImJl8weDQ3NDBmZVsnX2NvbGxpZGVfc2hhcGUnXT09MHgzKXtpZighXzB4NDc0MGZlWydjYWNoZV9wb2x5Z29uX3BvaW50cyddKXt0aGlzWydjYWNoZV9wb2x5Z29uJ10oXzB4NDc0MGZlKTt9aWYodGhpc1sncG9seWdvbl9jaXJjbGUnXShfMHg0NzQwZmVbJ2NhY2hlX3BvbHlnb25fcG9pbnRzJ10sXzB4NTQ5YTY2Wyd3b3JsZF9yZWN0J11bJ3gnXSxfMHg1NDlhNjZbJ3dvcmxkX3JlY3QnXVsneSddLF8weDU0OWE2NlsncmFkaXVzJ10pKXt0aGlzWydjb2xsaWRlX290aGVyJ10oXzB4NTQ5YTY2LF8weDQ3NDBmZSk7fX1lbHNle2lmKCFfMHg1NDlhNjZbJ2NhY2hlX3BvbHlnb25fcG9pbnRzJ10pe3RoaXNbJ2NhY2hlX3BvbHlnb24nXShfMHg1NDlhNjYpO31pZighXzB4NDc0MGZlWydjYWNoZV9wb2x5Z29uX3BvaW50cyddKXt0aGlzWydjYWNoZV9wb2x5Z29uJ10oXzB4NDc0MGZlKTt9aWYodGhpc1sncG9seWdvbl9wb2x5Z29uJ10oXzB4NTQ5YTY2WydjYWNoZV9wb2x5Z29uX3BvaW50cyddLF8weDQ3NDBmZVsnY2FjaGVfcG9seWdvbl9wb2ludHMnXSkpe3RoaXNbJ2NvbGxpZGVfb3RoZXInXShfMHg1NDlhNjYsXzB4NDc0MGZlKTt9fX19fX19O18weDliZjYwZVsncG9seWdvbl9wb2x5Z29uJ109ZnVuY3Rpb24oXzB4MWExNTJjLF8weDQ4NGNkMil7dmFyIF8weDE3M2Y2MT1fMHgxYTE1MmM7dmFyIF8weDNmY2NkYT1fMHg0ODRjZDI7dmFyIF8weDIyZWVmOT1bXzB4MTczZjYxLF8weDNmY2NkYV07dmFyIF8weDM2NjJlZCxfMHgxMGJiZGIsXzB4MjkxMzNjLF8weDVjZTE5MixfMHg4MDExYzcsXzB4ZGZlOGJjO2Zvcih2YXIgXzB4M2FlZThjPTB4MDtfMHgzYWVlOGM8XzB4MjJlZWY5WydsZW5ndGgnXTtfMHgzYWVlOGMrKyl7dmFyIF8weDFjZThmZD1fMHgyMmVlZjlbXzB4M2FlZThjXTtmb3IodmFyIF8weDJhYjJmZj0weDA7XzB4MmFiMmZmPF8weDFjZThmZFsnbGVuZ3RoJ107XzB4MmFiMmZmKz0weDIpe3ZhciBfMHgzNzNiZDI9KF8weDJhYjJmZisweDIpJV8weDFjZThmZFsnbGVuZ3RoJ107dmFyIF8weDRiNjRhND17J3gnOl8weDFjZThmZFtfMHgzNzNiZDIrMHgxXS1fMHgxY2U4ZmRbXzB4MmFiMmZmKzB4MV0sJ3knOl8weDFjZThmZFtfMHgyYWIyZmZdLV8weDFjZThmZFtfMHgzNzNiZDJdfTtfMHgzNjYyZWQ9bnVsbDtfMHgxMGJiZGI9bnVsbDtmb3IoXzB4ZGZlOGJjPTB4MDtfMHhkZmU4YmM8XzB4MTczZjYxWydsZW5ndGgnXTtfMHhkZmU4YmMrPTB4Mil7XzB4MjkxMzNjPV8weDRiNjRhNFsneCddKl8weDE3M2Y2MVtfMHhkZmU4YmNdK18weDRiNjRhNFsneSddKl8weDE3M2Y2MVtfMHhkZmU4YmMrMHgxXTtpZihfMHgzNjYyZWQ9PT1udWxsfHxfMHgyOTEzM2M8XzB4MzY2MmVkKXtfMHgzNjYyZWQ9XzB4MjkxMzNjO31pZihfMHgxMGJiZGI9PT1udWxsfHxfMHgyOTEzM2M+XzB4MTBiYmRiKXtfMHgxMGJiZGI9XzB4MjkxMzNjO319XzB4NWNlMTkyPW51bGw7XzB4ODAxMWM3PW51bGw7Zm9yKF8weGRmZThiYz0weDA7XzB4ZGZlOGJjPF8weDNmY2NkYVsnbGVuZ3RoJ107XzB4ZGZlOGJjKz0weDIpe18weDI5MTMzYz1fMHg0YjY0YTRbJ3gnXSpfMHgzZmNjZGFbXzB4ZGZlOGJjXStfMHg0YjY0YTRbJ3knXSpfMHgzZmNjZGFbXzB4ZGZlOGJjKzB4MV07aWYoXzB4NWNlMTkyPT09bnVsbHx8XzB4MjkxMzNjPF8weDVjZTE5Mil7XzB4NWNlMTkyPV8weDI5MTMzYzt9aWYoXzB4ODAxMWM3PT09bnVsbHx8XzB4MjkxMzNjPl8weDgwMTFjNyl7XzB4ODAxMWM3PV8weDI5MTMzYzt9fWlmKF8weDEwYmJkYjxfMHg1Y2UxOTJ8fF8weDgwMTFjNzxfMHgzNjYyZWQpe3JldHVybiFbXTt9fX1yZXR1cm4hIVtdO307XzB4OWJmNjBlWydnZXRfZ3JvdXBfYnlfaW5kZXgnXT1mdW5jdGlvbihfMHg0MGUyZjEpe2Zvcih2YXIgXzB4ZmNhOGQxIGluIGxxX2NvbGxpZGVfY29uZmlnXzFbJ0xRQ29sbGlkZUNvbmZpZyddWydjb2xsaWRlX2dyb3VwX21hcCddKXt2YXIgXzB4NWFjODE1PWxxX2NvbGxpZGVfY29uZmlnXzFbJ0xRQ29sbGlkZUNvbmZpZyddWydjb2xsaWRlX2dyb3VwX21hcCddW18weGZjYThkMV07aWYoXzB4NWFjODE1WydpbmRleCddPT09XzB4NDBlMmYxKXtyZXR1cm4gXzB4NWFjODE1O319cmV0dXJuIHVuZGVmaW5lZDt9O18weDliZjYwZVsnZ2V0X2luZm9fYnlfaWQnXT1mdW5jdGlvbihfMHhmZmJjZGMpe3ZhciBfMHgzMDgzMjU7Zm9yKHZhciBfMHgxNDlmNWUgaW4gbHFfY29sbGlkZV9jb25maWdfMVsnTFFDb2xsaWRlQ29uZmlnJ11bJ2NvbGxpZGVfZ3JvdXBfbWFwJ10pe3ZhciBfMHgxMjE1MGY9bHFfY29sbGlkZV9jb25maWdfMVsnTFFDb2xsaWRlQ29uZmlnJ11bJ2NvbGxpZGVfZ3JvdXBfbWFwJ11bXzB4MTQ5ZjVlXTtpZihfMHgxMjE1MGZbJ2lkJ109PT1fMHhmZmJjZGMpe3JldHVybiBfMHgxMjE1MGY7fWlmKCFfMHgzMDgzMjUpe18weDMwODMyNT1fMHgxMjE1MGY7fX1yZXR1cm4gXzB4MzA4MzI1O307XzB4OWJmNjBlWydmaW5kX25lYXJlc3RfY29sbGlkZSddPWZ1bmN0aW9uKF8weDMwODA4Mil7dmFyIF8weDMxMzFjNT1bXTtmb3IodmFyIF8weGMzYzM4MD1fMHg5YmY2MGVbJ2NvbGxpZGVfYXJyJ11bJ2xlbmd0aCddLTB4MTtfMHhjM2MzODA+PTB4MDtfMHhjM2MzODAtLSl7dmFyIF8weDU4NWY0Zj1fMHg5YmY2MGVbJ2NvbGxpZGVfYXJyJ11bXzB4YzNjMzgwXTtpZihfMHgzMDgwODI9PT1fMHg1ODVmNGZ8fCFfMHg1ODVmNGZbJ2lzX2VuYWJsZSddKXtjb250aW51ZTt9aWYoXzB4MzA4MDgyWydmb2xsb3dfdGFyZ2V0X2NhdGVnb3J5J10pe2lmKF8weDU4NWY0ZlsnY29sbGlkZV9jYXRlZ29yeSddPT09XzB4MzA4MDgyWydmb2xsb3dfdGFyZ2V0X2NhdGVnb3J5J10pe18weDMxMzFjNVsncHVzaCddKF8weDU4NWY0Zik7fX1lbHNlIGlmKChfMHg1ODVmNGZbJ2NvbGxpZGVfY2F0ZWdvcnknXSZfMHgzMDgwODJbJ2NvbGxpZGVfbWFzayddKSE9PTB4MCl7XzB4MzEzMWM1WydwdXNoJ10oXzB4NTg1ZjRmKTt9fV8weDMxMzFjNVsnc29ydCddKGZ1bmN0aW9uKF8weDNkZGI4MyxfMHgzY2NmNzQpe3JldHVybiBfMHgzMDgwODJbJ3dvcmxkX3JlY3QnXVsnc3ViJ10oXzB4M2RkYjgzWyd3b3JsZF9yZWN0J10pWydtYWdTcXInXSgpLV8weDMwODA4Mlsnd29ybGRfcmVjdCddWydzdWInXShfMHgzY2NmNzRbJ3dvcmxkX3JlY3QnXSlbJ21hZ1NxciddKCk7fSk7cmV0dXJuIF8weDMxMzFjNVsweDBdO307XzB4OWJmNjBlWydjbGVhciddPWZ1bmN0aW9uKF8weDRjZjZhNil7aWYoXzB4NGNmNmE2PT09dm9pZCAweDApe18weDRjZjZhNj0hW107fWlmKF8weDRjZjZhNil7Zm9yKHZhciBfMHg1MzdiMmQ9dGhpc1snY29sbGlkZV9hcnInXVsnbGVuZ3RoJ10tMHgxO18weDUzN2IyZD49MHgwO18weDUzN2IyZC0tKXt2YXIgXzB4MTk3ZDJmPXRoaXNbJ2NvbGxpZGVfYXJyJ11bXzB4NTM3YjJkXTtpZihfMHgxOTdkMmZbJ2lzVmFsaWQnXSl7XzB4MTk3ZDJmWydub2RlJ11bJ2Rlc3Ryb3knXSgpO319fXRoaXNbJ2NvbGxpZGVfYXJyJ109W107fTtfMHg5YmY2MGVbJ2NoZWNrX2NvbGxpZGUnXT1mdW5jdGlvbihfMHgxODNkZTIpe3ZhciBfMHgyNWNlYTE9W107dmFyIF8weGE3YjA1O2lmKGxxX2NvbGxpZGVfY29uZmlnXzFbJ0xRQ29sbGlkZUNvbmZpZyddWydzd2l0Y2hfcXVhZF90cmVlJ10pe0xRUXVhZFRyZWVbJ3RlbXBfY29sbGlkZV9hcnInXT1bXTt0aGlzWydxdWFkX3RyZWUnXVsncmV0cmlldmUnXShfMHgxODNkZTIpO18weGE3YjA1PUxRUXVhZFRyZWVbJ3RlbXBfY29sbGlkZV9hcnInXTt9ZWxzZXtfMHhhN2IwNT10aGlzWydjb2xsaWRlX2FyciddO31mb3IodmFyIF8weDM4MWFmMj0weDA7XzB4MzgxYWYyPF8weGE3YjA1WydsZW5ndGgnXTtfMHgzODFhZjIrKyl7dmFyIF8weDVkYjdiMz1fMHhhN2IwNVtfMHgzODFhZjJdO2lmKF8weDE4M2RlMj09PV8weDVkYjdiMyl7Y29udGludWU7fWlmKF8weDE4M2RlMlsnY29sbGlkZV9jYXRlZ29yeSddJl8weDVkYjdiM1snY29sbGlkZV9tYXNrJ10pe2lmKF8weDE4M2RlMlsnX2NvbGxpZGVfc2hhcGUnXT09PTB4MSYmXzB4NWRiN2IzWydfY29sbGlkZV9zaGFwZSddPT09MHgxKXtpZihscV9tYXRoX3V0aWxfMVsnTFFNYXRoVXRpbCddWydpbnRlcnNlY3RzX3JlY3QnXShfMHgxODNkZTJbJ3dvcmxkX3JlY3QnXSxfMHg1ZGI3YjNbJ3dvcmxkX3JlY3QnXSkpe18weDI1Y2VhMVsncHVzaCddKF8weDVkYjdiMyk7fX1lbHNlIGlmKF8weDE4M2RlMlsnX2NvbGxpZGVfc2hhcGUnXT09PTB4MSYmXzB4NWRiN2IzWydfY29sbGlkZV9zaGFwZSddPT09MHgyKXtpZihscV9tYXRoX3V0aWxfMVsnTFFNYXRoVXRpbCddWydpbnRlcnNlY3RzX2NpcmNsZV9yZWN0J10oXzB4NWRiN2IzWyd3b3JsZF9yZWN0J10sXzB4NWRiN2IzWydyYWRpdXMnXSxfMHgxODNkZTJbJ3dvcmxkX3JlY3QnXSkpe18weDI1Y2VhMVsncHVzaCddKF8weDVkYjdiMyk7fX1lbHNlIGlmKF8weDE4M2RlMlsnX2NvbGxpZGVfc2hhcGUnXT09PTB4MiYmXzB4NWRiN2IzWydfY29sbGlkZV9zaGFwZSddPT09MHgxKXtpZihscV9tYXRoX3V0aWxfMVsnTFFNYXRoVXRpbCddWydpbnRlcnNlY3RzX2NpcmNsZV9yZWN0J10oXzB4MTgzZGUyWyd3b3JsZF9yZWN0J10sXzB4MTgzZGUyWydyYWRpdXMnXSxfMHg1ZGI3YjNbJ3dvcmxkX3JlY3QnXSkpe18weDI1Y2VhMVsncHVzaCddKF8weDVkYjdiMyk7fX1lbHNlIGlmKF8weDE4M2RlMlsnX2NvbGxpZGVfc2hhcGUnXT09PTB4MiYmXzB4NWRiN2IzWydfY29sbGlkZV9zaGFwZSddPT09MHgyKXtpZihscV9tYXRoX3V0aWxfMVsnTFFNYXRoVXRpbCddWydpbnRlcnNlY3RzX2NpcmNsZSddKF8weDE4M2RlMlsnd29ybGRfcmVjdCddLF8weDE4M2RlMlsncmFkaXVzJ10sXzB4NWRiN2IzWyd3b3JsZF9yZWN0J10sXzB4NWRiN2IzWydyYWRpdXMnXSkpe18weDI1Y2VhMVsncHVzaCddKF8weDVkYjdiMyk7fX1lbHNlIGlmKHRoaXNbJ3BvbHlnb25fcG9seWdvbiddKF8weDE4M2RlMixfMHg1ZGI3YjMpKXtfMHgyNWNlYTFbJ3B1c2gnXShfMHg1ZGI3YjMpO319fXJldHVybiBfMHgyNWNlYTE7fTtfMHg5YmY2MGVbJ2lzX2VuYWJsZSddPSFbXTtfMHg5YmY2MGVbJ2NvbGxpZGVfYXJyJ109W107XzB4OWJmNjBlWydxdWFkX3RyZWUnXT1uZXcgTFFRdWFkVHJlZShuZXcgbHFfZGF0YV8xWydMUVJlY3QnXShscV9jb2xsaWRlX2NvbmZpZ18xWydMUUNvbGxpZGVDb25maWcnXVsnYWN0aXZlX2FyZWFfeCddLGxxX2NvbGxpZGVfY29uZmlnXzFbJ0xRQ29sbGlkZUNvbmZpZyddWydhY3RpdmVfYXJlYV95J10sbHFfY29sbGlkZV9jb25maWdfMVsnTFFDb2xsaWRlQ29uZmlnJ11bJ2FjdGl2ZV9hcmVhX3dpZHRoJ10sbHFfY29sbGlkZV9jb25maWdfMVsnTFFDb2xsaWRlQ29uZmlnJ11bJ2FjdGl2ZV9hcmVhX2hlaWdodCddKSxscV9jb2xsaWRlX2NvbmZpZ18xWydMUUNvbGxpZGVDb25maWcnXVsnbWF4X25vZGVfbGVuJ10sbHFfY29sbGlkZV9jb25maWdfMVsnTFFDb2xsaWRlQ29uZmlnJ11bJ21heF9ub2RlX2xldmVsJ10pO3JldHVybiBfMHg5YmY2MGU7fSgpO2V4cG9ydHNbJ0xRQ29sbGlkZVN5c3RlbSddPUxRQ29sbGlkZVN5c3RlbTt2YXIgQXV0b1J1bj1mdW5jdGlvbigpe2Z1bmN0aW9uIF8weGY1YjA4Nygpe3RoaXNbJ2ZsYWcnXT0hIVtdO31fMHhmNWIwODdbJ3Byb3RvdHlwZSddWyd1cGRhdGUnXT1mdW5jdGlvbihfMHgzNjVlNTUpe2lmKGxxX2NvbGxpZGVfY29uZmlnXzFbJ0xRQ29sbGlkZUNvbmZpZyddWydwZXJfZnJhbWUnXT09PTB4M2Mpe0xRQ29sbGlkZVN5c3RlbVsndXBkYXRlX2xvZ2ljJ10oXzB4MzY1ZTU1KTt9ZWxzZXtpZih0aGlzWydmbGFnJ10pe3RoaXNbJ2ZsYWcnXT0hW107TFFDb2xsaWRlU3lzdGVtWyd1cGRhdGVfbG9naWMnXShfMHgzNjVlNTUpO31lbHNle3RoaXNbJ2ZsYWcnXT0hIVtdO319fTtyZXR1cm4gXzB4ZjViMDg3O30oKTtnYW1lWydvbiddKGdhbWVbJ0VWRU5UX0dBTUVfSU5JVEVEJ10sZnVuY3Rpb24oKXtpZihscV9jb2xsaWRlX2NvbmZpZ18xWydMUUNvbGxpZGVDb25maWcnXVsnc3dpdGNoX2F1dG9fcnVuJ10mJiFDQ19FRElUT1Ipe3ZhciBfMHgyODdmODY9bmV3IEF1dG9SdW4oKTtkaXJlY3RvclsnZ2V0U2NoZWR1bGVyJ10oKVsnZW5hYmxlRm9yVGFyZ2V0J10oXzB4Mjg3Zjg2KTtkaXJlY3RvclsnZ2V0U2NoZWR1bGVyJ10oKVsnc2NoZWR1bGVVcGRhdGUnXShfMHgyODdmODYsU2NoZWR1bGVyWydQUklPUklUWV9TWVNURU0nXSwhW10pO319KTsiXX0= -//------QC-SOURCE-SPLIT------ - - (function() { - var nodeEnv = typeof require !== 'undefined' && typeof process !== 'undefined'; - var __module = nodeEnv ? module : {exports:{}}; -<<<<<<< HEAD - var __filename = 'preview-scripts/assets/Script/prop/Key.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, '92465qnUTJDw5STq1t7oelo', 'Key'); -// Script/prop/Key.ts - -"use strict"; -// Learn TypeScript: -// - https://docs.cocos.com/creator/manual/en/scripting/typescript.html -// Learn Attribute: -// - https://docs.cocos.com/creator/manual/en/scripting/reference/attributes.html -// Learn life-cycle callbacks: -// - https://docs.cocos.com/creator/manual/en/scripting/life-cycle-callbacks.html -var __extends = (this && this.__extends) || (function () { - var extendStatics = function (d, b) { - extendStatics = Object.setPrototypeOf || - ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) || - function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; }; - return extendStatics(d, b); - }; - return function (d, b) { - extendStatics(d, b); - function __() { this.constructor = d; } - d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); - }; -})(); -var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) { - var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; - if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc); - else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; - return c > 3 && r && Object.defineProperty(target, key, r), r; -}; -Object.defineProperty(exports, "__esModule", { value: true }); -var Map_1 = require("../Map"); -var _a = cc._decorator, ccclass = _a.ccclass, property = _a.property; -var Key = /** @class */ (function (_super) { - __extends(Key, _super); - function Key() { - var _this = _super !== null && _super.apply(this, arguments) || this; - _this.time = 60; - return _this; - // update (dt) {} - } - // mapInfo: number[][] = []; - Key.prototype.onLoad = function () { - }; - Key.prototype.start = function () { - }; - Key.prototype.init = function (time) { - if (time) - this.time = time; - this.node.getChildByName("time").active = true; - this.node.getChildByName("time").getComponent(cc.Label).string = this.time.toString(); - this.schedule(this.updateTime, 1); - }; - Key.prototype.updateTime = function () { - this.time--; - this.node.getChildByName("time").getComponent(cc.Label).string = this.time.toString(); - if (this.time <= 0) { - this.unschedule(this.updateTime); - this.node.destroy(); - Map_1.default._instance.failLevel(); - // this.node.destroy(); - } - }; - Key = __decorate([ - ccclass - ], Key); - return Key; -}(cc.Component)); -exports.default = Key; - -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,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImFzc2V0c1xcU2NyaXB0XFxwcm9wXFxLZXkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLG9CQUFvQjtBQUNwQix3RUFBd0U7QUFDeEUsbUJBQW1CO0FBQ25CLGtGQUFrRjtBQUNsRiw4QkFBOEI7QUFDOUIsa0ZBQWtGOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFFbEYsOEJBQWlDO0FBRTNCLElBQUEsS0FBc0IsRUFBRSxDQUFDLFVBQVUsRUFBbEMsT0FBTyxhQUFBLEVBQUUsUUFBUSxjQUFpQixDQUFDO0FBSzFDO0lBQWlDLHVCQUFZO0lBQTdDO1FBQUEscUVBaUNDO1FBL0JHLFVBQUksR0FBVyxFQUFFLENBQUM7O1FBOEJsQixpQkFBaUI7SUFDckIsQ0FBQztJQTdCRyw0QkFBNEI7SUFFNUIsb0JBQU0sR0FBTjtJQUVBLENBQUM7SUFFRCxtQkFBSyxHQUFMO0lBQ0EsQ0FBQztJQUVELGtCQUFJLEdBQUosVUFBSyxJQUFJO1FBQ0wsSUFBRyxJQUFJO1lBQUUsSUFBSSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUM7UUFDMUIsSUFBSSxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsTUFBTSxDQUFDLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQztRQUMvQyxJQUFJLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxZQUFZLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDO1FBQ3RGLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFDLENBQUMsQ0FBQztJQUN0QyxDQUFDO0lBR0Qsd0JBQVUsR0FBVjtRQUNJLElBQUksQ0FBQyxJQUFJLEVBQUcsQ0FBQztRQUNiLElBQUksQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLE1BQU0sQ0FBQyxDQUFDLFlBQVksQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUM7UUFDdEYsSUFBRyxJQUFJLENBQUMsSUFBSSxJQUFJLENBQUMsRUFBQztZQUNkLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDO1lBQ2pDLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUM7WUFDcEIsYUFBVyxDQUFDLFNBQVMsQ0FBQyxTQUFTLEVBQUUsQ0FBQztZQUNsQyx1QkFBdUI7U0FDMUI7SUFDTCxDQUFDO0lBOUJnQixHQUFHO1FBRHZCLE9BQU87T0FDYSxHQUFHLENBaUN2QjtJQUFELFVBQUM7Q0FqQ0QsQUFpQ0MsQ0FqQ2dDLEVBQUUsQ0FBQyxTQUFTLEdBaUM1QztrQkFqQ29CLEdBQUciLCJmaWxlIjoiIiwic291cmNlUm9vdCI6Ii8iLCJzb3VyY2VzQ29udGVudCI6WyIvLyBMZWFybiBUeXBlU2NyaXB0OlxyXG4vLyAgLSBodHRwczovL2RvY3MuY29jb3MuY29tL2NyZWF0b3IvbWFudWFsL2VuL3NjcmlwdGluZy90eXBlc2NyaXB0Lmh0bWxcclxuLy8gTGVhcm4gQXR0cmlidXRlOlxyXG4vLyAgLSBodHRwczovL2RvY3MuY29jb3MuY29tL2NyZWF0b3IvbWFudWFsL2VuL3NjcmlwdGluZy9yZWZlcmVuY2UvYXR0cmlidXRlcy5odG1sXHJcbi8vIExlYXJuIGxpZmUtY3ljbGUgY2FsbGJhY2tzOlxyXG4vLyAgLSBodHRwczovL2RvY3MuY29jb3MuY29tL2NyZWF0b3IvbWFudWFsL2VuL3NjcmlwdGluZy9saWZlLWN5Y2xlLWNhbGxiYWNrcy5odG1sXHJcblxyXG5pbXBvcnQgTWFwQ29ucm9sZXIgZnJvbSBcIi4uL01hcFwiO1xyXG5cclxuY29uc3Qge2NjY2xhc3MsIHByb3BlcnR5fSA9IGNjLl9kZWNvcmF0b3I7XHJcblxyXG5cclxuXHJcbkBjY2NsYXNzXHJcbmV4cG9ydCBkZWZhdWx0IGNsYXNzIEtleSBleHRlbmRzIGNjLkNvbXBvbmVudCB7XHJcbiAgICBzdGF0aWMgX2luc3RhbmNlOiBhbnk7XHJcbiAgICB0aW1lOiBudW1iZXIgPSA2MDtcclxuXHJcbiAgICAvLyBtYXBJbmZvOiBudW1iZXJbXVtdID0gW107XHJcblxyXG4gICAgb25Mb2FkICgpIHtcclxuXHJcbiAgICB9IFxyXG5cclxuICAgIHN0YXJ0ICgpIHtcclxuICAgIH1cclxuXHJcbiAgICBpbml0KHRpbWUpe1xyXG4gICAgICAgIGlmKHRpbWUpIHRoaXMudGltZSA9IHRpbWU7XHJcbiAgICAgICAgdGhpcy5ub2RlLmdldENoaWxkQnlOYW1lKFwidGltZVwiKS5hY3RpdmUgPSB0cnVlO1xyXG4gICAgICAgIHRoaXMubm9kZS5nZXRDaGlsZEJ5TmFtZShcInRpbWVcIikuZ2V0Q29tcG9uZW50KGNjLkxhYmVsKS5zdHJpbmcgPSB0aGlzLnRpbWUudG9TdHJpbmcoKTtcclxuICAgICAgICB0aGlzLnNjaGVkdWxlKHRoaXMudXBkYXRlVGltZSwgMSk7XHJcbiAgICB9XHJcblxyXG4gICAgXHJcbiAgICB1cGRhdGVUaW1lKCl7XHJcbiAgICAgICAgdGhpcy50aW1lIC0tO1xyXG4gICAgICAgIHRoaXMubm9kZS5nZXRDaGlsZEJ5TmFtZShcInRpbWVcIikuZ2V0Q29tcG9uZW50KGNjLkxhYmVsKS5zdHJpbmcgPSB0aGlzLnRpbWUudG9TdHJpbmcoKTtcclxuICAgICAgICBpZih0aGlzLnRpbWUgPD0gMCl7XHJcbiAgICAgICAgICAgIHRoaXMudW5zY2hlZHVsZSh0aGlzLnVwZGF0ZVRpbWUpO1xyXG4gICAgICAgICAgICB0aGlzLm5vZGUuZGVzdHJveSgpO1xyXG4gICAgICAgICAgICBNYXBDb25yb2xlci5faW5zdGFuY2UuZmFpbExldmVsKCk7XHJcbiAgICAgICAgICAgIC8vIHRoaXMubm9kZS5kZXN0cm95KCk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIC8vIHVwZGF0ZSAoZHQpIHt9XHJcbn1cclxuIl19 -//------QC-SOURCE-SPLIT------ - - (function() { - var nodeEnv = typeof require !== 'undefined' && typeof process !== 'undefined'; - var __module = nodeEnv ? module : {exports:{}}; - var __filename = 'preview-scripts/assets/Script/Barrier.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, '90c37YHUUVPsY0mlNmom67u', 'Barrier'); -// Script/Barrier.ts - -"use strict"; -var __extends = (this && this.__extends) || (function () { - var extendStatics = function (d, b) { - extendStatics = Object.setPrototypeOf || - ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) || - function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; }; - return extendStatics(d, b); - }; - return function (d, b) { - extendStatics(d, b); - function __() { this.constructor = d; } - d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); - }; -})(); -var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) { - var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; - if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc); - else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; - return c > 3 && r && Object.defineProperty(target, key, r), r; -}; -Object.defineProperty(exports, "__esModule", { value: true }); -var Map_1 = require("./Map"); -var _a = cc._decorator, ccclass = _a.ccclass, property = _a.property; -var Block = /** @class */ (function (_super) { - __extends(Block, _super); - function Block() { - var _this = _super !== null && _super.apply(this, arguments) || this; - // 新增缓存变量 - _this.selfBoxColliders = []; - _this.allBoxColliders = []; - // @property({ - // tooltip: '碰撞形状,None就是无敌,不参与碰撞', - // type: cc.Enum(BlockType), - // // default: BlockType.Nomal, - // displayName: '碰撞形状' - // }) - // LIFE-CYCLE CALLBACKS: - // @property(cc.SpriteAtlas) - // UI: cc.SpriteAtlas = null; - _this.initialTouchOffset = null; - _this.offsetTolerance = 100; // 偏移容忍度; - _this.touchPoint = null; //触摸点 - _this.isTouch = false; //是否触摸 - _this.posX = 0; //地图块的X坐标 - _this.posY = 0; //地图块的Y坐标 - _this.moveLeft = true; //是否可以左移; - _this.moveRight = true; //是否可以右移; - _this.moveUp = true; //是否可以上移; - _this.moveDown = true; //是否可以下移; - _this.moveCorner = 0; //是否碰撞角落 - _this.moveY = 0; //是否可以上下移动; - _this.moveX = 0; //是否可以左右移动; - _this.touchPointX = 0; //触摸点X坐标; - _this.touchPointY = 0; //触摸点Y坐标; - _this.blockId = 0; //方块ID; - _this.level = 0; //叠加方块层数; - _this.pz = false; - return _this; - } - Block.prototype.onLoad = function () { - // this.node.on(cc.Node.EventType.TOUCH_START, this.touchStart, this); - // this.node.on(cc.Node.EventType.TOUCH_MOVE, this.touchMove, this); - // this.node.on(cc.Node.EventType.TOUCH_CANCEL, this.touchEnd, this); - // this.node.on(cc.Node.EventType.TOUCH_END, this.touchEnd, this); - this.pz = false; - this.stacking = cc.v2(0, 0); - // this.selfBoxColliders = this.node.getComponentsInChildren(cc.BoxCollider) - // .filter(collider => collider.tag < 4); - }; - Block.prototype.start = function () { - }; - Block.prototype.jsonDeepClone = function (obj) { - return JSON.parse(JSON.stringify(obj)); - }; - Block.prototype.init = function (block_Info, posX, posY, node) { - this.block_Info = this.jsonDeepClone(block_Info); - var mapInfo = Map_1.default._instance.mapInfo; - for (var i = 0; i < mapInfo.length; i++) { - var blockRect = mapInfo[i].getBoundingBox(); - // 使用 cc.Intersection.pointInRect 方法判断点是否在矩形范围内 - var point = cc.v2(this.node.position.x - 5, this.node.position.y + 10); - if (blockRect.contains(point)) { - this.posX = mapInfo[i].getComponent("MapBlock").posX; - this.posY = mapInfo[i].getComponent("MapBlock").posY; - this.level = 50 + this.posX - this.posY * 3; - this.node.zIndex = this.level; - this.node.x = mapInfo[i].x + 65; - this.node.y = mapInfo[i].y - 60; - i = 10000; - break; - } - } - }; - Block = __decorate([ - ccclass - ], Block); - return Block; -}(cc.Component)); -exports.default = Block; - -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,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImFzc2V0c1xcU2NyaXB0XFxCYXJyaWVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUNBLDZCQUFnQztBQUUxQixJQUFBLEtBQXNCLEVBQUUsQ0FBQyxVQUFVLEVBQWxDLE9BQU8sYUFBQSxFQUFFLFFBQVEsY0FBaUIsQ0FBQztBQUcxQztJQUFtQyx5QkFBWTtJQUEvQztRQUFBLHFFQXlGQztRQXZGRyxTQUFTO1FBQ0Qsc0JBQWdCLEdBQXFCLEVBQUUsQ0FBQztRQUN4QyxxQkFBZSxHQUFxQixFQUFFLENBQUM7UUFDL0MsY0FBYztRQUNkLHNDQUFzQztRQUN0QyxnQ0FBZ0M7UUFDaEMsbUNBQW1DO1FBQ25DLDBCQUEwQjtRQUMxQixLQUFLO1FBS0wsd0JBQXdCO1FBQ3hCLDRCQUE0QjtRQUM1Qiw2QkFBNkI7UUFDckIsd0JBQWtCLEdBQVksSUFBSSxDQUFDO1FBQ25DLHFCQUFlLEdBQUcsR0FBRyxDQUFDLENBQUMsVUFBVTtRQUd6QyxnQkFBVSxHQUFZLElBQUksQ0FBQyxDQUFLLEtBQUs7UUFDckMsYUFBTyxHQUFZLEtBQUssQ0FBQyxDQUFPLE1BQU07UUFDdEMsVUFBSSxHQUFXLENBQUMsQ0FBQyxDQUFlLFNBQVM7UUFDekMsVUFBSSxHQUFXLENBQUMsQ0FBQyxDQUFlLFNBQVM7UUFDekMsY0FBUSxHQUFZLElBQUksQ0FBQyxDQUFNLFNBQVM7UUFDeEMsZUFBUyxHQUFZLElBQUksQ0FBQyxDQUFLLFNBQVM7UUFDeEMsWUFBTSxHQUFZLElBQUksQ0FBQyxDQUFRLFNBQVM7UUFDeEMsY0FBUSxHQUFZLElBQUksQ0FBQyxDQUFNLFNBQVM7UUFDeEMsZ0JBQVUsR0FBVyxDQUFDLENBQUMsQ0FBUSxRQUFRO1FBQ3ZDLFdBQUssR0FBVSxDQUFDLENBQUMsQ0FBVSxXQUFXO1FBQ3RDLFdBQUssR0FBVSxDQUFDLENBQUMsQ0FBVSxXQUFXO1FBQ3RDLGlCQUFXLEdBQVcsQ0FBQyxDQUFDLENBQVEsU0FBUztRQUN6QyxpQkFBVyxHQUFXLENBQUMsQ0FBQyxDQUFRLFNBQVM7UUFDekMsYUFBTyxHQUFXLENBQUMsQ0FBQyxDQUFZLE9BQU87UUFFdkMsV0FBSyxHQUFXLENBQUMsQ0FBQyxDQUFZLFNBQVM7UUFDdkMsUUFBRSxHQUFZLEtBQUssQ0FBQzs7SUFtRHhCLENBQUM7SUF6Q0csc0JBQU0sR0FBTjtRQUNJLHNFQUFzRTtRQUN0RSxzRUFBc0U7UUFDdEUsdUVBQXVFO1FBQ3ZFLG9FQUFvRTtRQUNwRSxJQUFJLENBQUMsRUFBRSxHQUFHLEtBQUssQ0FBQztRQUNoQixJQUFJLENBQUMsUUFBUSxHQUFHLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxDQUFDO1FBQzNCLDRFQUE0RTtRQUM1RSx5Q0FBeUM7SUFDN0MsQ0FBQztJQUdELHFCQUFLLEdBQUw7SUFFQSxDQUFDO0lBRUQsNkJBQWEsR0FBYixVQUFpQixHQUFNO1FBQ25CLE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7SUFDM0MsQ0FBQztJQUVELG9CQUFJLEdBQUosVUFBSyxVQUFVLEVBQUMsSUFBSSxFQUFDLElBQUksRUFBQyxJQUFJO1FBQzFCLElBQUksQ0FBQyxVQUFVLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQyxVQUFVLENBQUMsQ0FBQztRQUNqRCxJQUFJLE9BQU8sR0FBRyxhQUFXLENBQUMsU0FBUyxDQUFDLE9BQU8sQ0FBQztRQUM1QyxLQUFJLElBQUksQ0FBQyxHQUFDLENBQUMsRUFBRSxDQUFDLEdBQUMsT0FBTyxDQUFDLE1BQU0sRUFBRSxDQUFDLEVBQUUsRUFBQztZQUMvQixJQUFJLFNBQVMsR0FBRyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsY0FBYyxFQUFFLENBQUM7WUFDNUMsK0NBQStDO1lBQy9DLElBQUksS0FBSyxHQUFHLEVBQUUsQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQyxHQUFDLENBQUMsRUFBRSxJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDLEdBQUMsRUFBRSxDQUFDLENBQUE7WUFDbEUsSUFBRyxTQUFTLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxFQUFDO2dCQUN6QixJQUFJLENBQUMsSUFBSSxHQUFHLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxZQUFZLENBQUMsVUFBVSxDQUFDLENBQUMsSUFBSSxDQUFDO2dCQUNyRCxJQUFJLENBQUMsSUFBSSxHQUFHLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxZQUFZLENBQUMsVUFBVSxDQUFDLENBQUMsSUFBSSxDQUFDO2dCQUNyRCxJQUFJLENBQUMsS0FBSyxHQUFHLEVBQUUsR0FBRyxJQUFJLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQyxJQUFJLEdBQUMsQ0FBQyxDQUFDO2dCQUMxQyxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDO2dCQUM5QixJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsR0FBRyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLEVBQUUsQ0FBQztnQkFDaEMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLEdBQUcsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxFQUFFLENBQUM7Z0JBQ2hDLENBQUMsR0FBRSxLQUFLLENBQUM7Z0JBQ1QsTUFBTTthQUNUO1NBQ0o7SUFFTCxDQUFDO0lBdkZnQixLQUFLO1FBRHpCLE9BQU87T0FDYSxLQUFLLENBeUZ6QjtJQUFELFlBQUM7Q0F6RkQsQUF5RkMsQ0F6RmtDLEVBQUUsQ0FBQyxTQUFTLEdBeUY5QztrQkF6Rm9CLEtBQUsiLCJmaWxlIjoiIiwic291cmNlUm9vdCI6Ii8iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgQ29sbGlzaW9uRGV0ZWN0aW9uIGZyb20gXCIuL0NvbGxpc2lvbkRldGVjdGlvblwiO1xyXG5pbXBvcnQgTWFwQ29ucm9sZXIgZnJvbSBcIi4vTWFwXCI7XHJcblxyXG5jb25zdCB7Y2NjbGFzcywgcHJvcGVydHl9ID0gY2MuX2RlY29yYXRvcjtcclxuXHJcbkBjY2NsYXNzXHJcbmV4cG9ydCBkZWZhdWx0IGNsYXNzIEJsb2NrIGV4dGVuZHMgY2MuQ29tcG9uZW50IHtcclxuXHJcbiAgICAvLyDmlrDlop7nvJPlrZjlj5jph49cclxuICAgIHByaXZhdGUgc2VsZkJveENvbGxpZGVyczogY2MuQm94Q29sbGlkZXJbXSA9IFtdO1xyXG4gICAgcHJpdmF0ZSBhbGxCb3hDb2xsaWRlcnM6IGNjLkJveENvbGxpZGVyW10gPSBbXTtcclxuICAgIC8vIEBwcm9wZXJ0eSh7XHJcbiAgICAvLyAgICAgdG9vbHRpcDogJ+eisOaSnuW9oueKtu+8jE5vbmXlsLHmmK/ml6DmlYzvvIzkuI3lj4LkuI7norDmkp4nLFxyXG4gICAgLy8gICAgIHR5cGU6IGNjLkVudW0oQmxvY2tUeXBlKSxcclxuICAgIC8vICAgICAvLyBkZWZhdWx0OiBCbG9ja1R5cGUuTm9tYWwsXHJcbiAgICAvLyAgICAgZGlzcGxheU5hbWU6ICfnorDmkp7lvaLnirYnXHJcbiAgICAvLyB9KVxyXG5cclxuXHJcblxyXG5cclxuICAgIC8vIExJRkUtQ1lDTEUgQ0FMTEJBQ0tTOlxyXG4gICAgLy8gQHByb3BlcnR5KGNjLlNwcml0ZUF0bGFzKVxyXG4gICAgLy8gVUk6IGNjLlNwcml0ZUF0bGFzID0gbnVsbDtcclxuICAgIHByaXZhdGUgaW5pdGlhbFRvdWNoT2Zmc2V0OiBjYy5WZWMyID0gbnVsbDtcclxuICAgIHByaXZhdGUgb2Zmc2V0VG9sZXJhbmNlID0gMTAwOyAvLyDlgY/np7vlrrnlv43luqY7IFxyXG5cclxuICAgIGFsbEJsb2Nrczphbnk7ICAgICAgIC8v5omA5pyJ55qE5pa55Z2XLOeUqOS6juiuoeeul3Bvc1gscG9zWea2iOmZpFxyXG4gICAgdG91Y2hQb2ludDogY2MuVmVjMiA9IG51bGw7ICAgICAvL+inpuaRuOeCuVxyXG4gICAgaXNUb3VjaDogYm9vbGVhbiA9IGZhbHNlOyAgICAgICAvL+aYr+WQpuinpuaRuFxyXG4gICAgcG9zWDogbnVtYmVyID0gMDsgICAgICAgICAgICAgICAvL+WcsOWbvuWdl+eahFjlnZDmoIdcclxuICAgIHBvc1k6IG51bWJlciA9IDA7ICAgICAgICAgICAgICAgLy/lnLDlm77lnZfnmoRZ5Z2Q5qCHXHJcbiAgICBtb3ZlTGVmdDogYm9vbGVhbiA9IHRydWU7ICAgICAgLy/mmK/lkKblj6/ku6Xlt6bnp7s7XHJcbiAgICBtb3ZlUmlnaHQ6IGJvb2xlYW4gPSB0cnVlOyAgICAgLy/mmK/lkKblj6/ku6Xlj7Pnp7s7XHJcbiAgICBtb3ZlVXA6IGJvb2xlYW4gPSB0cnVlOyAgICAgICAgLy/mmK/lkKblj6/ku6XkuIrnp7s7XHJcbiAgICBtb3ZlRG93bjogYm9vbGVhbiA9IHRydWU7ICAgICAgLy/mmK/lkKblj6/ku6XkuIvnp7s7XHJcbiAgICBtb3ZlQ29ybmVyOiBudW1iZXIgPSAwOyAgICAgICAgLy/mmK/lkKbnorDmkp7op5LokL1cclxuICAgIG1vdmVZOm51bWJlciA9IDA7ICAgICAgICAgIC8v5piv5ZCm5Y+v5Lul5LiK5LiL56e75YqoO1xyXG4gICAgbW92ZVg6bnVtYmVyID0gMDsgICAgICAgICAgLy/mmK/lkKblj6/ku6Xlt6blj7Pnp7vliqg7XHJcbiAgICB0b3VjaFBvaW50WDogbnVtYmVyID0gMDsgICAgICAgIC8v6Kem5pG454K5WOWdkOaghztcclxuICAgIHRvdWNoUG9pbnRZOiBudW1iZXIgPSAwOyAgICAgICAgLy/op6bmkbjngrlZ5Z2Q5qCHO1xyXG4gICAgYmxvY2tJZDogbnVtYmVyID0gMDsgICAgICAgICAgICAvL+aWueWdl0lEO1xyXG4gICAgc3RhY2tpbmc6IGNjLlZlYzI7ICAgICAgICAvL+WPoOWKoOaWueWdl1xyXG4gICAgbGV2ZWw6IG51bWJlciA9IDA7ICAgICAgICAgICAgLy/lj6DliqDmlrnlnZflsYLmlbA7XHJcbiAgICBwejogYm9vbGVhbiA9IGZhbHNlO1xyXG4gICAgY29sbGlkZXI6IGFueTtcclxuICAgIGJsb2NrX0luZm86YW55O1xyXG4gICAgX3RvdWNoTGlzdGVuZXI6IGFueTtcclxuICAgIHJlbGF0aXZlX1Bvc2l0aW9uOmNjLlZlYzI7ICAvL+eCueWHu+WSjOaWueWdl+ebuOWvueS9jee9rlxyXG4gICAgcHJpdmF0ZSBfZXZlbnRNYW5hZ2VyOiBhbnk7XHJcbiAgICBoaXQ6IGNjLk5vZGU7XHJcblxyXG5cclxuXHJcbiAgICBvbkxvYWQgKCkge1xyXG4gICAgICAgIC8vIHRoaXMubm9kZS5vbihjYy5Ob2RlLkV2ZW50VHlwZS5UT1VDSF9TVEFSVCwgdGhpcy50b3VjaFN0YXJ0LCB0aGlzKTtcclxuICAgICAgICAvLyB0aGlzLm5vZGUub24oY2MuTm9kZS5FdmVudFR5cGUuVE9VQ0hfTU9WRSwgdGhpcy50b3VjaE1vdmUsIHRoaXMpOyAgXHJcbiAgICAgICAgLy8gdGhpcy5ub2RlLm9uKGNjLk5vZGUuRXZlbnRUeXBlLlRPVUNIX0NBTkNFTCwgdGhpcy50b3VjaEVuZCwgdGhpcyk7ICBcclxuICAgICAgICAvLyB0aGlzLm5vZGUub24oY2MuTm9kZS5FdmVudFR5cGUuVE9VQ0hfRU5ELCB0aGlzLnRvdWNoRW5kLCB0aGlzKTsgIFxyXG4gICAgICAgIHRoaXMucHogPSBmYWxzZTtcclxuICAgICAgICB0aGlzLnN0YWNraW5nID0gY2MudjIoMCwwKTtcclxuICAgICAgICAvLyB0aGlzLnNlbGZCb3hDb2xsaWRlcnMgPSB0aGlzLm5vZGUuZ2V0Q29tcG9uZW50c0luQ2hpbGRyZW4oY2MuQm94Q29sbGlkZXIpXHJcbiAgICAgICAgLy8gLmZpbHRlcihjb2xsaWRlciA9PiBjb2xsaWRlci50YWcgPCA0KTtcclxuICAgIH1cclxuXHJcblxyXG4gICAgc3RhcnQgKCkge1xyXG5cclxuICAgIH1cclxuXHJcbiAgICBqc29uRGVlcENsb25lPFQ+KG9iajogVCk6IFQge1xyXG4gICAgICAgIHJldHVybiBKU09OLnBhcnNlKEpTT04uc3RyaW5naWZ5KG9iaikpO1xyXG4gICAgfVxyXG5cclxuICAgIGluaXQoYmxvY2tfSW5mbyxwb3NYLHBvc1ksbm9kZSl7XHJcbiAgICAgICAgdGhpcy5ibG9ja19JbmZvID0gdGhpcy5qc29uRGVlcENsb25lKGJsb2NrX0luZm8pO1xyXG4gICAgICAgIGxldCBtYXBJbmZvID0gTWFwQ29ucm9sZXIuX2luc3RhbmNlLm1hcEluZm87XHJcbiAgICAgICAgZm9yKGxldCBpPTA7IGk8bWFwSW5mby5sZW5ndGg7IGkrKyl7XHJcbiAgICAgICAgICAgIGxldCBibG9ja1JlY3QgPSBtYXBJbmZvW2ldLmdldEJvdW5kaW5nQm94KCk7XHJcbiAgICAgICAgICAgIC8vIOS9v+eUqCBjYy5JbnRlcnNlY3Rpb24ucG9pbnRJblJlY3Qg5pa55rOV5Yik5pat54K55piv5ZCm5Zyo55+p5b2i6IyD5Zu05YaFXHJcbiAgICAgICAgICAgIGxldCBwb2ludCA9IGNjLnYyKHRoaXMubm9kZS5wb3NpdGlvbi54LTUsIHRoaXMubm9kZS5wb3NpdGlvbi55KzEwKVxyXG4gICAgICAgICAgICBpZihibG9ja1JlY3QuY29udGFpbnMocG9pbnQpKXtcclxuICAgICAgICAgICAgICAgIHRoaXMucG9zWCA9IG1hcEluZm9baV0uZ2V0Q29tcG9uZW50KFwiTWFwQmxvY2tcIikucG9zWDtcclxuICAgICAgICAgICAgICAgIHRoaXMucG9zWSA9IG1hcEluZm9baV0uZ2V0Q29tcG9uZW50KFwiTWFwQmxvY2tcIikucG9zWTtcclxuICAgICAgICAgICAgICAgIHRoaXMubGV2ZWwgPSA1MCArIHRoaXMucG9zWCAtIHRoaXMucG9zWSozO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5ub2RlLnpJbmRleCA9IHRoaXMubGV2ZWw7XHJcbiAgICAgICAgICAgICAgICB0aGlzLm5vZGUueCA9IG1hcEluZm9baV0ueCArIDY1O1xyXG4gICAgICAgICAgICAgICAgdGhpcy5ub2RlLnkgPSBtYXBJbmZvW2ldLnkgLSA2MDtcclxuICAgICAgICAgICAgICAgIGk9IDEwMDAwO1xyXG4gICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcblxyXG4gICAgfVxyXG5cclxufVxyXG5cclxuXHJcbiJdfQ== -//------QC-SOURCE-SPLIT------ - - (function() { - var nodeEnv = typeof require !== 'undefined' && typeof process !== 'undefined'; - var __module = nodeEnv ? module : {exports:{}}; - var __filename = 'preview-scripts/assets/Script/prop/Boom.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, '3c749iEEwlAMKPyjGEkwU2l', 'Boom'); -// Script/prop/Boom.ts - -"use strict"; -// Learn TypeScript: -// - https://docs.cocos.com/creator/manual/en/scripting/typescript.html -// Learn Attribute: -// - https://docs.cocos.com/creator/manual/en/scripting/reference/attributes.html -// Learn life-cycle callbacks: -// - https://docs.cocos.com/creator/manual/en/scripting/life-cycle-callbacks.html -var __extends = (this && this.__extends) || (function () { - var extendStatics = function (d, b) { - extendStatics = Object.setPrototypeOf || - ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) || - function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; }; - return extendStatics(d, b); - }; - return function (d, b) { - extendStatics(d, b); - function __() { this.constructor = d; } - d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); - }; -})(); -var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) { - var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; - if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc); - else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; - return c > 3 && r && Object.defineProperty(target, key, r), r; -}; -Object.defineProperty(exports, "__esModule", { value: true }); -var Map_1 = require("../Map"); -var NumberToImage_1 = require("../NumberToImage"); -var _a = cc._decorator, ccclass = _a.ccclass, property = _a.property; -var Boom = /** @class */ (function (_super) { - __extends(Boom, _super); - function Boom() { - var _this = _super !== null && _super.apply(this, arguments) || this; - _this.time = 60; - return _this; - // update (dt) {} - } - // mapInfo: number[][] = []; - Boom.prototype.onLoad = function () { - }; - Boom.prototype.start = function () { - }; - Boom.prototype.init = function (time) { - if (time) - this.time = time; - this.node.getChildByName("time").active = true; - NumberToImage_1.default.numberToImageNodes(this.time, 20, 8, "lock_", this.node.getChildByName("time"), false); - // this.node.getChildByName("time").getComponent(cc.Label).string = this.time.toString(); - }; - Boom.prototype.startBoom = function () { - this.schedule(this.updateTime, 1); - }; - Boom.prototype.stopBoom = function () { - this.unschedule(this.updateTime); - this.node.parent.getComponent("Block").resetFreeze(); - this.node.destroy(); - }; - Boom.prototype.updateTime = function () { - var _this = this; - this.time--; - NumberToImage_1.default.numberToImageNodes(this.time, 20, 8, "lock_", this.node.getChildByName("time"), false); - if (this.time <= 0) { - this.unschedule(this.updateTime); - this.node.getChildByName("zhandan").active = true; - var skeleton = this.node.getChildByName("zhandan").getComponent(sp.Skeleton); - skeleton.setAnimation(1, "eff", false); - // 监听动画完成事件 - skeleton.setCompleteListener(function () { - // 动画播放完成后销毁节点 - _this.node.destroy(); - }); - Map_1.default._instance.failLevel("boom"); - // this.node.destroy(); - } - }; - Boom = __decorate([ - ccclass - ], Boom); - return Boom; -}(cc.Component)); -exports.default = Boom; - -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,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImFzc2V0c1xcU2NyaXB0XFxwcm9wXFxCb29tLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSxvQkFBb0I7QUFDcEIsd0VBQXdFO0FBQ3hFLG1CQUFtQjtBQUNuQixrRkFBa0Y7QUFDbEYsOEJBQThCO0FBQzlCLGtGQUFrRjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBRWxGLDhCQUFpQztBQUNqQyxrREFBNkM7QUFFdkMsSUFBQSxLQUFzQixFQUFFLENBQUMsVUFBVSxFQUFsQyxPQUFPLGFBQUEsRUFBRSxRQUFRLGNBQWlCLENBQUM7QUFLMUM7SUFBa0Msd0JBQVk7SUFBOUM7UUFBQSxxRUFtREM7UUFqREcsVUFBSSxHQUFXLEVBQUUsQ0FBQzs7UUFnRGxCLGlCQUFpQjtJQUNyQixDQUFDO0lBL0NHLDRCQUE0QjtJQUU1QixxQkFBTSxHQUFOO0lBRUEsQ0FBQztJQUVELG9CQUFLLEdBQUw7SUFDQSxDQUFDO0lBRUQsbUJBQUksR0FBSixVQUFLLElBQUk7UUFDTCxJQUFHLElBQUk7WUFBRSxJQUFJLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQztRQUMxQixJQUFJLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFDO1FBQzdDLHVCQUFhLENBQUMsa0JBQWtCLENBQUMsSUFBSSxDQUFDLElBQUksRUFBQyxFQUFFLEVBQUMsQ0FBQyxFQUFDLE9BQU8sRUFBQyxJQUFJLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxNQUFNLENBQUMsRUFBQyxLQUFLLENBQUMsQ0FBQztRQUNsRyx5RkFBeUY7SUFFN0YsQ0FBQztJQUVELHdCQUFTLEdBQVQ7UUFDSSxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDdEMsQ0FBQztJQUVELHVCQUFRLEdBQVI7UUFDSSxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQztRQUNqQyxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxZQUFZLENBQUMsT0FBTyxDQUFDLENBQUMsV0FBVyxFQUFFLENBQUM7UUFDckQsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQztJQUN4QixDQUFDO0lBR0QseUJBQVUsR0FBVjtRQUFBLGlCQWdCQztRQWZHLElBQUksQ0FBQyxJQUFJLEVBQUcsQ0FBQztRQUNiLHVCQUFhLENBQUMsa0JBQWtCLENBQUMsSUFBSSxDQUFDLElBQUksRUFBQyxFQUFFLEVBQUMsQ0FBQyxFQUFDLE9BQU8sRUFBQyxJQUFJLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxNQUFNLENBQUMsRUFBQyxLQUFLLENBQUMsQ0FBQztRQUNoRyxJQUFHLElBQUksQ0FBQyxJQUFJLElBQUksQ0FBQyxFQUFDO1lBQ2QsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUM7WUFDakMsSUFBSSxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsU0FBUyxDQUFDLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQztZQUNsRCxJQUFNLFFBQVEsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxZQUFZLENBQUMsRUFBRSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1lBQy9FLFFBQVEsQ0FBQyxZQUFZLENBQUMsQ0FBQyxFQUFDLEtBQUssRUFBQyxLQUFLLENBQUMsQ0FBQztZQUNyQyxXQUFXO1lBQ1gsUUFBUSxDQUFDLG1CQUFtQixDQUFDO2dCQUN6QixjQUFjO2dCQUNkLEtBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUM7WUFDeEIsQ0FBQyxDQUFDLENBQUM7WUFDSCxhQUFXLENBQUMsU0FBUyxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsQ0FBQztZQUN4Qyx1QkFBdUI7U0FDMUI7SUFDTCxDQUFDO0lBaERnQixJQUFJO1FBRHhCLE9BQU87T0FDYSxJQUFJLENBbUR4QjtJQUFELFdBQUM7Q0FuREQsQUFtREMsQ0FuRGlDLEVBQUUsQ0FBQyxTQUFTLEdBbUQ3QztrQkFuRG9CLElBQUkiLCJmaWxlIjoiIiwic291cmNlUm9vdCI6Ii8iLCJzb3VyY2VzQ29udGVudCI6WyIvLyBMZWFybiBUeXBlU2NyaXB0OlxyXG4vLyAgLSBodHRwczovL2RvY3MuY29jb3MuY29tL2NyZWF0b3IvbWFudWFsL2VuL3NjcmlwdGluZy90eXBlc2NyaXB0Lmh0bWxcclxuLy8gTGVhcm4gQXR0cmlidXRlOlxyXG4vLyAgLSBodHRwczovL2RvY3MuY29jb3MuY29tL2NyZWF0b3IvbWFudWFsL2VuL3NjcmlwdGluZy9yZWZlcmVuY2UvYXR0cmlidXRlcy5odG1sXHJcbi8vIExlYXJuIGxpZmUtY3ljbGUgY2FsbGJhY2tzOlxyXG4vLyAgLSBodHRwczovL2RvY3MuY29jb3MuY29tL2NyZWF0b3IvbWFudWFsL2VuL3NjcmlwdGluZy9saWZlLWN5Y2xlLWNhbGxiYWNrcy5odG1sXHJcblxyXG5pbXBvcnQgTWFwQ29ucm9sZXIgZnJvbSBcIi4uL01hcFwiO1xyXG5pbXBvcnQgTnVtYmVyVG9JbWFnZSBmcm9tIFwiLi4vTnVtYmVyVG9JbWFnZVwiO1xyXG5cclxuY29uc3Qge2NjY2xhc3MsIHByb3BlcnR5fSA9IGNjLl9kZWNvcmF0b3I7XHJcblxyXG5cclxuXHJcbkBjY2NsYXNzXHJcbmV4cG9ydCBkZWZhdWx0IGNsYXNzIEJvb20gZXh0ZW5kcyBjYy5Db21wb25lbnQge1xyXG4gICAgc3RhdGljIF9pbnN0YW5jZTogYW55O1xyXG4gICAgdGltZTogbnVtYmVyID0gNjA7XHJcblxyXG4gICAgLy8gbWFwSW5mbzogbnVtYmVyW11bXSA9IFtdO1xyXG5cclxuICAgIG9uTG9hZCAoKSB7XHJcblxyXG4gICAgfSBcclxuXHJcbiAgICBzdGFydCAoKSB7XHJcbiAgICB9XHJcblxyXG4gICAgaW5pdCh0aW1lKXtcclxuICAgICAgICBpZih0aW1lKSB0aGlzLnRpbWUgPSB0aW1lO1xyXG4gICAgICAgIHRoaXMubm9kZS5nZXRDaGlsZEJ5TmFtZShcInRpbWVcIikuYWN0aXZlID0gdHJ1ZTtcclxuICAgICAgICAgIE51bWJlclRvSW1hZ2UubnVtYmVyVG9JbWFnZU5vZGVzKHRoaXMudGltZSwyMCw4LFwibG9ja19cIix0aGlzLm5vZGUuZ2V0Q2hpbGRCeU5hbWUoXCJ0aW1lXCIpLGZhbHNlKTtcclxuICAgICAgICAvLyB0aGlzLm5vZGUuZ2V0Q2hpbGRCeU5hbWUoXCJ0aW1lXCIpLmdldENvbXBvbmVudChjYy5MYWJlbCkuc3RyaW5nID0gdGhpcy50aW1lLnRvU3RyaW5nKCk7XHJcbiAgIFxyXG4gICAgfVxyXG5cclxuICAgIHN0YXJ0Qm9vbSgpe1xyXG4gICAgICAgIHRoaXMuc2NoZWR1bGUodGhpcy51cGRhdGVUaW1lLCAxKTtcclxuICAgIH1cclxuXHJcbiAgICBzdG9wQm9vbSgpe1xyXG4gICAgICAgIHRoaXMudW5zY2hlZHVsZSh0aGlzLnVwZGF0ZVRpbWUpO1xyXG4gICAgICAgIHRoaXMubm9kZS5wYXJlbnQuZ2V0Q29tcG9uZW50KFwiQmxvY2tcIikucmVzZXRGcmVlemUoKTtcclxuICAgICAgICB0aGlzLm5vZGUuZGVzdHJveSgpO1xyXG4gICAgfVxyXG5cclxuICAgIFxyXG4gICAgdXBkYXRlVGltZSgpe1xyXG4gICAgICAgIHRoaXMudGltZSAtLTtcclxuICAgICAgICBOdW1iZXJUb0ltYWdlLm51bWJlclRvSW1hZ2VOb2Rlcyh0aGlzLnRpbWUsMjAsOCxcImxvY2tfXCIsdGhpcy5ub2RlLmdldENoaWxkQnlOYW1lKFwidGltZVwiKSxmYWxzZSk7XHJcbiAgICAgICAgaWYodGhpcy50aW1lIDw9IDApe1xyXG4gICAgICAgICAgICB0aGlzLnVuc2NoZWR1bGUodGhpcy51cGRhdGVUaW1lKTtcclxuICAgICAgICAgICAgdGhpcy5ub2RlLmdldENoaWxkQnlOYW1lKFwiemhhbmRhblwiKS5hY3RpdmUgPSB0cnVlO1xyXG4gICAgICAgICAgICBjb25zdCBza2VsZXRvbiA9IHRoaXMubm9kZS5nZXRDaGlsZEJ5TmFtZShcInpoYW5kYW5cIikuZ2V0Q29tcG9uZW50KHNwLlNrZWxldG9uKTtcclxuICAgICAgICAgICAgc2tlbGV0b24uc2V0QW5pbWF0aW9uKDEsXCJlZmZcIixmYWxzZSk7XHJcbiAgICAgICAgICAgIC8vIOebkeWQrOWKqOeUu+WujOaIkOS6i+S7tlxyXG4gICAgICAgICAgICBza2VsZXRvbi5zZXRDb21wbGV0ZUxpc3RlbmVyKCgpID0+IHtcclxuICAgICAgICAgICAgICAgIC8vIOWKqOeUu+aSreaUvuWujOaIkOWQjumUgOavgeiKgueCuVxyXG4gICAgICAgICAgICAgICAgdGhpcy5ub2RlLmRlc3Ryb3koKTtcclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgIE1hcENvbnJvbGVyLl9pbnN0YW5jZS5mYWlsTGV2ZWwoXCJib29tXCIpO1xyXG4gICAgICAgICAgICAvLyB0aGlzLm5vZGUuZGVzdHJveSgpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICAvLyB1cGRhdGUgKGR0KSB7fVxyXG59XHJcbiJdfQ== -//------QC-SOURCE-SPLIT------ - - (function() { - var nodeEnv = typeof require !== 'undefined' && typeof process !== 'undefined'; - var __module = nodeEnv ? module : {exports:{}}; - var __filename = 'preview-scripts/assets/Script/prop/Freeze.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, 'ad8cbbzCohCR5uifssdRTf+', 'Freeze'); -// Script/prop/Freeze.ts - -"use strict"; -// Learn TypeScript: -// - https://docs.cocos.com/creator/manual/en/scripting/typescript.html -// Learn Attribute: -// - https://docs.cocos.com/creator/manual/en/scripting/reference/attributes.html -// Learn life-cycle callbacks: -// - https://docs.cocos.com/creator/manual/en/scripting/life-cycle-callbacks.html -var __extends = (this && this.__extends) || (function () { - var extendStatics = function (d, b) { - extendStatics = Object.setPrototypeOf || - ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) || - function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; }; - return extendStatics(d, b); - }; - return function (d, b) { - extendStatics(d, b); - function __() { this.constructor = d; } - d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); - }; -})(); -var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) { - var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; - if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc); - else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; - return c > 3 && r && Object.defineProperty(target, key, r), r; -}; -Object.defineProperty(exports, "__esModule", { value: true }); -var NumberToImage_1 = require("../NumberToImage"); -var _a = cc._decorator, ccclass = _a.ccclass, property = _a.property; -var Freeze = /** @class */ (function (_super) { - __extends(Freeze, _super); - function Freeze() { - var _this = _super !== null && _super.apply(this, arguments) || this; - _this.time = 60; - _this.freeze = null; - return _this; - // update (dt) {} - } - // mapInfo: number[][] = []; - Freeze.prototype.onLoad = function () { - }; - Freeze.prototype.start = function () { - }; - Freeze.prototype.init = function (time, type) { - if (time) - this.time = time; - this.node.getChildByName("time").active = true; - NumberToImage_1.default.numberToImageNodes(this.time, 40, 25, "ice_", this.node.getChildByName("time"), false); - // this.node.getChildByName("time").getComponent(cc.Label).string = this.time.toString(); - }; - Freeze.prototype.reduce = function (number) { - var _this = this; - this.time -= number; - if (this.time <= 0) - this.time = 0; - NumberToImage_1.default.numberToImageNodes(this.time, 40, 25, "ice_", this.node.getChildByName("time"), false); - // this.node.getChildByName("time").getComponent(cc.Label).string = this.time.toString(); - if (this.time <= 0) { - this.node.getChildByName("bingkuai").active = true; - var skeleton = this.node.getChildByName("bingkuai").getComponent(sp.Skeleton); - skeleton.setAnimation(1, "bingkuai", false); - this.node.getChildByName("icon").active = true; - this.node.getChildByName("time").active = false; - cc.tween(this.node.getChildByName("icon")) - .to(0.5, { opacity: 0 }) - .start(); - // this.node.getChildByName("icon").getComponent(cc.Sprite).setMaterial(0,this.freeze); - // this.node.children.forEach(element => { - // element.destroy(); - // }); - setTimeout(function () { - _this.node.parent.getComponent("Block").resetFreeze(); - _this.node.destroy(); - _this.node.removeFromParent(); - }, 600); - } - }; - __decorate([ - property(cc.Material) - ], Freeze.prototype, "freeze", void 0); - Freeze = __decorate([ - ccclass - ], Freeze); - return Freeze; -}(cc.Component)); -exports.default = Freeze; - -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,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImFzc2V0c1xcU2NyaXB0XFxwcm9wXFxGcmVlemUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLG9CQUFvQjtBQUNwQix3RUFBd0U7QUFDeEUsbUJBQW1CO0FBQ25CLGtGQUFrRjtBQUNsRiw4QkFBOEI7QUFDOUIsa0ZBQWtGOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFHbEYsa0RBQTZDO0FBRXZDLElBQUEsS0FBc0IsRUFBRSxDQUFDLFVBQVUsRUFBbEMsT0FBTyxhQUFBLEVBQUUsUUFBUSxjQUFpQixDQUFDO0FBSzFDO0lBQW9DLDBCQUFZO0lBQWhEO1FBQUEscUVBc0RDO1FBcERHLFVBQUksR0FBVyxFQUFFLENBQUM7UUFHbEIsWUFBTSxHQUFnQixJQUFJLENBQUM7O1FBZ0QzQixpQkFBaUI7SUFDckIsQ0FBQztJQS9DRyw0QkFBNEI7SUFFNUIsdUJBQU0sR0FBTjtJQUVBLENBQUM7SUFFRCxzQkFBSyxHQUFMO0lBRUEsQ0FBQztJQUVELHFCQUFJLEdBQUosVUFBSyxJQUFJLEVBQUMsSUFBSTtRQUNWLElBQUcsSUFBSTtZQUFFLElBQUksQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDO1FBQzFCLElBQUksQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLE1BQU0sQ0FBQyxDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUM7UUFDL0MsdUJBQWEsQ0FBQyxrQkFBa0IsQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFDLEVBQUUsRUFBQyxFQUFFLEVBQUMsTUFBTSxFQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLE1BQU0sQ0FBQyxFQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ2hHLHlGQUF5RjtJQUU3RixDQUFDO0lBRUQsdUJBQU0sR0FBTixVQUFPLE1BQU07UUFBYixpQkF5QkM7UUF4QkcsSUFBSSxDQUFDLElBQUksSUFBSSxNQUFNLENBQUM7UUFDcEIsSUFBRyxJQUFJLENBQUMsSUFBSSxJQUFJLENBQUM7WUFBRSxJQUFJLENBQUMsSUFBSSxHQUFHLENBQUMsQ0FBQTtRQUNoQyx1QkFBYSxDQUFDLGtCQUFrQixDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUMsRUFBRSxFQUFDLEVBQUUsRUFBQyxNQUFNLEVBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsTUFBTSxDQUFDLEVBQUMsS0FBSyxDQUFDLENBQUM7UUFDaEcseUZBQXlGO1FBQ3pGLElBQUcsSUFBSSxDQUFDLElBQUksSUFBSSxDQUFDLEVBQUM7WUFDZCxJQUFJLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxVQUFVLENBQUMsQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFDO1lBQ25ELElBQU0sUUFBUSxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLFVBQVUsQ0FBQyxDQUFDLFlBQVksQ0FBQyxFQUFFLENBQUMsUUFBUSxDQUFDLENBQUM7WUFDaEYsUUFBUSxDQUFDLFlBQVksQ0FBQyxDQUFDLEVBQUMsVUFBVSxFQUFDLEtBQUssQ0FBQyxDQUFDO1lBQzFDLElBQUksQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLE1BQU0sQ0FBQyxDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUM7WUFDL0MsSUFBSSxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsTUFBTSxDQUFDLENBQUMsTUFBTSxHQUFHLEtBQUssQ0FBQztZQUNoRCxFQUFFLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLE1BQU0sQ0FBQyxDQUFDO2lCQUN6QyxFQUFFLENBQUMsR0FBRyxFQUFFLEVBQUUsT0FBTyxFQUFFLENBQUMsRUFBRSxDQUFDO2lCQUN2QixLQUFLLEVBQUUsQ0FBQztZQUVULHVGQUF1RjtZQUN2RiwwQ0FBMEM7WUFDMUMseUJBQXlCO1lBQ3pCLE1BQU07WUFDTixVQUFVLENBQUM7Z0JBQ1AsS0FBSSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsWUFBWSxDQUFDLE9BQU8sQ0FBQyxDQUFDLFdBQVcsRUFBRSxDQUFDO2dCQUNyRCxLQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDO2dCQUNwQixLQUFJLENBQUMsSUFBSSxDQUFDLGdCQUFnQixFQUFFLENBQUM7WUFDakMsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxDQUFDO1NBQ1g7SUFDTCxDQUFDO0lBN0NEO1FBREMsUUFBUSxDQUFDLEVBQUUsQ0FBQyxRQUFRLENBQUM7MENBQ0s7SUFMVixNQUFNO1FBRDFCLE9BQU87T0FDYSxNQUFNLENBc0QxQjtJQUFELGFBQUM7Q0F0REQsQUFzREMsQ0F0RG1DLEVBQUUsQ0FBQyxTQUFTLEdBc0QvQztrQkF0RG9CLE1BQU0iLCJmaWxlIjoiIiwic291cmNlUm9vdCI6Ii8iLCJzb3VyY2VzQ29udGVudCI6WyIvLyBMZWFybiBUeXBlU2NyaXB0OlxyXG4vLyAgLSBodHRwczovL2RvY3MuY29jb3MuY29tL2NyZWF0b3IvbWFudWFsL2VuL3NjcmlwdGluZy90eXBlc2NyaXB0Lmh0bWxcclxuLy8gTGVhcm4gQXR0cmlidXRlOlxyXG4vLyAgLSBodHRwczovL2RvY3MuY29jb3MuY29tL2NyZWF0b3IvbWFudWFsL2VuL3NjcmlwdGluZy9yZWZlcmVuY2UvYXR0cmlidXRlcy5odG1sXHJcbi8vIExlYXJuIGxpZmUtY3ljbGUgY2FsbGJhY2tzOlxyXG4vLyAgLSBodHRwczovL2RvY3MuY29jb3MuY29tL2NyZWF0b3IvbWFudWFsL2VuL3NjcmlwdGluZy9saWZlLWN5Y2xlLWNhbGxiYWNrcy5odG1sXHJcblxyXG5pbXBvcnQgTWFwQ29ucm9sZXIgZnJvbSBcIi4uL01hcFwiO1xyXG5pbXBvcnQgTnVtYmVyVG9JbWFnZSBmcm9tIFwiLi4vTnVtYmVyVG9JbWFnZVwiO1xyXG5cclxuY29uc3Qge2NjY2xhc3MsIHByb3BlcnR5fSA9IGNjLl9kZWNvcmF0b3I7XHJcblxyXG5cclxuXHJcbkBjY2NsYXNzXHJcbmV4cG9ydCBkZWZhdWx0IGNsYXNzIEZyZWV6ZSBleHRlbmRzIGNjLkNvbXBvbmVudCB7XHJcbiAgICBzdGF0aWMgX2luc3RhbmNlOiBhbnk7XHJcbiAgICB0aW1lOiBudW1iZXIgPSA2MDtcclxuXHJcbiAgICBAcHJvcGVydHkoY2MuTWF0ZXJpYWwpXHJcbiAgICBmcmVlemU6IGNjLk1hdGVyaWFsID0gbnVsbDtcclxuXHJcbiAgICAvLyBtYXBJbmZvOiBudW1iZXJbXVtdID0gW107XHJcblxyXG4gICAgb25Mb2FkICgpIHtcclxuXHJcbiAgICB9IFxyXG5cclxuICAgIHN0YXJ0ICgpIHtcclxuXHJcbiAgICB9XHJcblxyXG4gICAgaW5pdCh0aW1lLHR5cGUpe1xyXG4gICAgICAgIGlmKHRpbWUpIHRoaXMudGltZSA9IHRpbWU7XHJcbiAgICAgICAgdGhpcy5ub2RlLmdldENoaWxkQnlOYW1lKFwidGltZVwiKS5hY3RpdmUgPSB0cnVlO1xyXG4gICAgICAgIE51bWJlclRvSW1hZ2UubnVtYmVyVG9JbWFnZU5vZGVzKHRoaXMudGltZSw0MCwyNSxcImljZV9cIix0aGlzLm5vZGUuZ2V0Q2hpbGRCeU5hbWUoXCJ0aW1lXCIpLGZhbHNlKTtcclxuICAgICAgICAvLyB0aGlzLm5vZGUuZ2V0Q2hpbGRCeU5hbWUoXCJ0aW1lXCIpLmdldENvbXBvbmVudChjYy5MYWJlbCkuc3RyaW5nID0gdGhpcy50aW1lLnRvU3RyaW5nKCk7XHJcblxyXG4gICAgfVxyXG5cclxuICAgIHJlZHVjZShudW1iZXIpe1xyXG4gICAgICAgIHRoaXMudGltZSAtPSBudW1iZXI7XHJcbiAgICAgICAgaWYodGhpcy50aW1lIDw9IDApIHRoaXMudGltZSA9IDBcclxuICAgICAgICBOdW1iZXJUb0ltYWdlLm51bWJlclRvSW1hZ2VOb2Rlcyh0aGlzLnRpbWUsNDAsMjUsXCJpY2VfXCIsdGhpcy5ub2RlLmdldENoaWxkQnlOYW1lKFwidGltZVwiKSxmYWxzZSk7XHJcbiAgICAgICAgLy8gdGhpcy5ub2RlLmdldENoaWxkQnlOYW1lKFwidGltZVwiKS5nZXRDb21wb25lbnQoY2MuTGFiZWwpLnN0cmluZyA9IHRoaXMudGltZS50b1N0cmluZygpO1xyXG4gICAgICAgIGlmKHRoaXMudGltZSA8PSAwKXtcclxuICAgICAgICAgICAgdGhpcy5ub2RlLmdldENoaWxkQnlOYW1lKFwiYmluZ2t1YWlcIikuYWN0aXZlID0gdHJ1ZTtcclxuICAgICAgICAgICAgY29uc3Qgc2tlbGV0b24gPSB0aGlzLm5vZGUuZ2V0Q2hpbGRCeU5hbWUoXCJiaW5na3VhaVwiKS5nZXRDb21wb25lbnQoc3AuU2tlbGV0b24pO1xyXG4gICAgICAgICAgICBza2VsZXRvbi5zZXRBbmltYXRpb24oMSxcImJpbmdrdWFpXCIsZmFsc2UpO1xyXG4gICAgICAgICAgICB0aGlzLm5vZGUuZ2V0Q2hpbGRCeU5hbWUoXCJpY29uXCIpLmFjdGl2ZSA9IHRydWU7XHJcbiAgICAgICAgICAgIHRoaXMubm9kZS5nZXRDaGlsZEJ5TmFtZShcInRpbWVcIikuYWN0aXZlID0gZmFsc2U7XHJcbiAgICAgICAgICAgIGNjLnR3ZWVuKHRoaXMubm9kZS5nZXRDaGlsZEJ5TmFtZShcImljb25cIikpXHJcbiAgICAgICAgICAgIC50bygwLjUsIHsgb3BhY2l0eTogMCB9KVxyXG4gICAgICAgICAgICAuc3RhcnQoKTtcclxuXHJcbiAgICAgICAgICAgIC8vIHRoaXMubm9kZS5nZXRDaGlsZEJ5TmFtZShcImljb25cIikuZ2V0Q29tcG9uZW50KGNjLlNwcml0ZSkuc2V0TWF0ZXJpYWwoMCx0aGlzLmZyZWV6ZSk7XHJcbiAgICAgICAgICAgIC8vIHRoaXMubm9kZS5jaGlsZHJlbi5mb3JFYWNoKGVsZW1lbnQgPT4ge1xyXG4gICAgICAgICAgICAvLyAgICAgZWxlbWVudC5kZXN0cm95KCk7XHJcbiAgICAgICAgICAgIC8vIH0pO1xyXG4gICAgICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgICAgICAgICAgIHRoaXMubm9kZS5wYXJlbnQuZ2V0Q29tcG9uZW50KFwiQmxvY2tcIikucmVzZXRGcmVlemUoKTtcclxuICAgICAgICAgICAgICAgIHRoaXMubm9kZS5kZXN0cm95KCk7XHJcbiAgICAgICAgICAgICAgICB0aGlzLm5vZGUucmVtb3ZlRnJvbVBhcmVudCgpO1xyXG4gICAgICAgICAgICB9LCA2MDApO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcblxyXG4gICAgLy8gdXBkYXRlIChkdCkge31cclxufVxyXG4iXX0= -//------QC-SOURCE-SPLIT------ - - (function() { - var nodeEnv = typeof require !== 'undefined' && typeof process !== 'undefined'; - var __module = nodeEnv ? module : {exports:{}}; - var __filename = 'preview-scripts/assets/Script/prop/Adhesive.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, '5fc5bz1aV5PKIBJQh99jpm2', 'Adhesive'); -// Script/prop/Adhesive.ts - -"use strict"; -// Learn TypeScript: -// - https://docs.cocos.com/creator/manual/en/scripting/typescript.html -// Learn Attribute: -// - https://docs.cocos.com/creator/manual/en/scripting/reference/attributes.html -// Learn life-cycle callbacks: -// - https://docs.cocos.com/creator/manual/en/scripting/life-cycle-callbacks.html -var __extends = (this && this.__extends) || (function () { - var extendStatics = function (d, b) { - extendStatics = Object.setPrototypeOf || - ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) || - function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; }; - return extendStatics(d, b); - }; - return function (d, b) { - extendStatics(d, b); - function __() { this.constructor = d; } - d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); - }; -})(); -var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) { - var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; - if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc); - else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; - return c > 3 && r && Object.defineProperty(target, key, r), r; -}; -Object.defineProperty(exports, "__esModule", { value: true }); -var _a = cc._decorator, ccclass = _a.ccclass, property = _a.property; -var Adhesive = /** @class */ (function (_super) { - __extends(Adhesive, _super); - function Adhesive() { - var _this = _super !== null && _super.apply(this, arguments) || this; - _this.time = 60; - _this.pos = { x: 0, y: 0 }; - return _this; - } - Adhesive.prototype.onLoad = function () { - this.pos.x = this.pos.y = 0; - this.target = null; - }; - Adhesive.prototype.start = function () { - }; - Adhesive.prototype.init = function (node) { - this.pos.x = node.x - this.node.x; - this.pos.y = node.y - this.node.y; - this.target = node; - }; - Adhesive.prototype.remove = function () { - var _this = this; - this.target = null; - for (var j = 0; j < this.node.children.length; j++) { - if (this.node.children[j].active == true) { - this.node.children[j].getComponent(sp.Skeleton).setAnimation(0, "animation", false); - } - } - setTimeout(function () { - _this.node.active = false; - }, 2000); - }; - Adhesive.prototype.update = function (dt) { - if (this.target != null) { - this.node.x = this.target.x - this.pos.x; - this.node.y = this.target.y - this.pos.y; - } - }; - Adhesive = __decorate([ - ccclass - ], Adhesive); - return Adhesive; -}(cc.Component)); -exports.default = Adhesive; - -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,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImFzc2V0c1xcU2NyaXB0XFxwcm9wXFxBZGhlc2l2ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsb0JBQW9CO0FBQ3BCLHdFQUF3RTtBQUN4RSxtQkFBbUI7QUFDbkIsa0ZBQWtGO0FBQ2xGLDhCQUE4QjtBQUM5QixrRkFBa0Y7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUk1RSxJQUFBLEtBQXNCLEVBQUUsQ0FBQyxVQUFVLEVBQWxDLE9BQU8sYUFBQSxFQUFFLFFBQVEsY0FBaUIsQ0FBQztBQUsxQztJQUFzQyw0QkFBWTtJQUFsRDtRQUFBLHFFQXVDQztRQXJDRyxVQUFJLEdBQVcsRUFBRSxDQUFDO1FBQ2xCLFNBQUcsR0FBUSxFQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBQyxDQUFDOztJQW9DNUIsQ0FBQztJQWpDRyx5QkFBTSxHQUFOO1FBQ0ksSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQzVCLElBQUksQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFDO0lBQ3ZCLENBQUM7SUFFRCx3QkFBSyxHQUFMO0lBQ0EsQ0FBQztJQUVELHVCQUFJLEdBQUosVUFBSyxJQUFJO1FBQ0wsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQztRQUNsQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO1FBQ2xDLElBQUksQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFDO0lBQ3ZCLENBQUM7SUFFRCx5QkFBTSxHQUFOO1FBQUEsaUJBVUM7UUFURyxJQUFJLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQztRQUNuQixLQUFJLElBQUksQ0FBQyxHQUFFLENBQUMsRUFBRSxDQUFDLEdBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsTUFBTSxFQUFFLENBQUMsRUFBRSxFQUFDO1lBQzNDLElBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxJQUFJLElBQUksRUFBQztnQkFDcEMsSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsWUFBWSxDQUFDLEVBQUUsQ0FBQyxRQUFRLENBQUMsQ0FBQyxZQUFZLENBQUMsQ0FBQyxFQUFDLFdBQVcsRUFBQyxLQUFLLENBQUMsQ0FBQzthQUNyRjtTQUNKO1FBQ0QsVUFBVSxDQUFDO1lBQ1AsS0FBSSxDQUFDLElBQUksQ0FBQyxNQUFNLEdBQUcsS0FBSyxDQUFDO1FBQzdCLENBQUMsRUFBRSxJQUFJLENBQUMsQ0FBQztJQUNiLENBQUM7SUFHRCx5QkFBTSxHQUFOLFVBQVEsRUFBRTtRQUNOLElBQUcsSUFBSSxDQUFDLE1BQU0sSUFBSSxJQUFJLEVBQUM7WUFDbkIsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7WUFDekMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7U0FDNUM7SUFDTCxDQUFDO0lBdENnQixRQUFRO1FBRDVCLE9BQU87T0FDYSxRQUFRLENBdUM1QjtJQUFELGVBQUM7Q0F2Q0QsQUF1Q0MsQ0F2Q3FDLEVBQUUsQ0FBQyxTQUFTLEdBdUNqRDtrQkF2Q29CLFFBQVEiLCJmaWxlIjoiIiwic291cmNlUm9vdCI6Ii8iLCJzb3VyY2VzQ29udGVudCI6WyIvLyBMZWFybiBUeXBlU2NyaXB0OlxyXG4vLyAgLSBodHRwczovL2RvY3MuY29jb3MuY29tL2NyZWF0b3IvbWFudWFsL2VuL3NjcmlwdGluZy90eXBlc2NyaXB0Lmh0bWxcclxuLy8gTGVhcm4gQXR0cmlidXRlOlxyXG4vLyAgLSBodHRwczovL2RvY3MuY29jb3MuY29tL2NyZWF0b3IvbWFudWFsL2VuL3NjcmlwdGluZy9yZWZlcmVuY2UvYXR0cmlidXRlcy5odG1sXHJcbi8vIExlYXJuIGxpZmUtY3ljbGUgY2FsbGJhY2tzOlxyXG4vLyAgLSBodHRwczovL2RvY3MuY29jb3MuY29tL2NyZWF0b3IvbWFudWFsL2VuL3NjcmlwdGluZy9saWZlLWN5Y2xlLWNhbGxiYWNrcy5odG1sXHJcblxyXG5pbXBvcnQgTWFwQ29ucm9sZXIgZnJvbSBcIi4uL01hcFwiO1xyXG5cclxuY29uc3Qge2NjY2xhc3MsIHByb3BlcnR5fSA9IGNjLl9kZWNvcmF0b3I7XHJcblxyXG5cclxuXHJcbkBjY2NsYXNzXHJcbmV4cG9ydCBkZWZhdWx0IGNsYXNzIEFkaGVzaXZlIGV4dGVuZHMgY2MuQ29tcG9uZW50IHtcclxuICAgIHN0YXRpYyBfaW5zdGFuY2U6IGFueTtcclxuICAgIHRpbWU6IG51bWJlciA9IDYwO1xyXG4gICAgcG9zOiBhbnkgPSB7eDogMCwgeTogMH07XHJcbiAgICB0YXJnZXQ6IGFueTtcclxuXHJcbiAgICBvbkxvYWQgKCkgeyBcclxuICAgICAgICB0aGlzLnBvcy54ID0gdGhpcy5wb3MueSA9IDA7XHJcbiAgICAgICAgdGhpcy50YXJnZXQgPSBudWxsO1xyXG4gICAgfSBcclxuXHJcbiAgICBzdGFydCAoKSB7XHJcbiAgICB9XHJcblxyXG4gICAgaW5pdChub2RlKXtcclxuICAgICAgICB0aGlzLnBvcy54ID0gbm9kZS54IC0gdGhpcy5ub2RlLng7XHJcbiAgICAgICAgdGhpcy5wb3MueSA9IG5vZGUueSAtIHRoaXMubm9kZS55O1xyXG4gICAgICAgIHRoaXMudGFyZ2V0ID0gbm9kZTtcclxuICAgIH1cclxuXHJcbiAgICByZW1vdmUoKXtcclxuICAgICAgICB0aGlzLnRhcmdldCA9IG51bGw7XHJcbiAgICAgICAgZm9yKGxldCBqID0wOyBqPHRoaXMubm9kZS5jaGlsZHJlbi5sZW5ndGg7IGorKyl7XHJcbiAgICAgICAgICAgIGlmKHRoaXMubm9kZS5jaGlsZHJlbltqXS5hY3RpdmUgPT0gdHJ1ZSl7XHJcbiAgICAgICAgICAgICAgICB0aGlzLm5vZGUuY2hpbGRyZW5bal0uZ2V0Q29tcG9uZW50KHNwLlNrZWxldG9uKS5zZXRBbmltYXRpb24oMCxcImFuaW1hdGlvblwiLGZhbHNlKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgICAgICAgdGhpcy5ub2RlLmFjdGl2ZSA9IGZhbHNlO1xyXG4gICAgICAgIH0sIDIwMDApO1xyXG4gICAgfVxyXG5cclxuXHJcbiAgICB1cGRhdGUgKGR0KSB7XHJcbiAgICAgICAgaWYodGhpcy50YXJnZXQgIT0gbnVsbCl7XHJcbiAgICAgICAgICAgIHRoaXMubm9kZS54ID0gdGhpcy50YXJnZXQueCAtIHRoaXMucG9zLng7XHJcbiAgICAgICAgICAgIHRoaXMubm9kZS55ID0gdGhpcy50YXJnZXQueSAtIHRoaXMucG9zLnk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG59XHJcbiJdfQ== -//------QC-SOURCE-SPLIT------ - - (function() { - var nodeEnv = typeof require !== 'undefined' && typeof process !== 'undefined'; - var __module = nodeEnv ? module : {exports:{}}; - var __filename = 'preview-scripts/assets/Script/lq_collide_system/lq_collide_config.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, '4bd21i88J9KfoWB6fqk7oW1', 'lq_collide_config'); -// Script/lq_collide_system/lq_collide_config.ts - -"use strict"; -Object.defineProperty(exports, "__esModule", { value: true }); -exports.LQCollideConfig = exports.LQCollideInfoList = void 0; -var LQCollideInfoList; -(function (LQCollideInfoList) { - LQCollideInfoList[LQCollideInfoList["default"] = 0] = "default"; - LQCollideInfoList[LQCollideInfoList["role"] = 1] = "role"; - LQCollideInfoList[LQCollideInfoList["role_bullet"] = 2] = "role_bullet"; - LQCollideInfoList[LQCollideInfoList["enemy"] = 3] = "enemy"; - LQCollideInfoList[LQCollideInfoList["enemy_bullet"] = 4] = "enemy_bullet"; - LQCollideInfoList[LQCollideInfoList["prop"] = 5] = "prop"; -})(LQCollideInfoList = exports.LQCollideInfoList || (exports.LQCollideInfoList = {})); -var LQCollideConfig = /** @class */ (function () { - function LQCollideConfig() { - } - LQCollideConfig.switch_auto_run = true; - LQCollideConfig.switch_print_log = true; - LQCollideConfig.switch_quad_tree = false; - LQCollideConfig.max_node_len = 10; - LQCollideConfig.per_frame = 60; - LQCollideConfig.max_node_level = 4; - LQCollideConfig.active_area_x = 0; - LQCollideConfig.active_area_y = 0; - LQCollideConfig.active_area_width = 1000; - LQCollideConfig.active_area_height = 1000; - LQCollideConfig.collide_group_map = { - "default": { id: 1, category: 1, index: 0, mask: 1 }, - "role": { id: 2, category: 2, index: 1, mask: 56 }, - "role_bullet": { id: 3, category: 4, index: 2, mask: 8 }, - "enemy": { id: 4, category: 8, index: 3, mask: 6 }, - "enemy_bullet": { id: 5, category: 16, index: 4, mask: 2 }, - "prop": { id: 6, category: 32, index: 5, mask: 2 }, - }; - return LQCollideConfig; -}()); -exports.LQCollideConfig = LQCollideConfig; - -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,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImFzc2V0c1xcU2NyaXB0XFxscV9jb2xsaWRlX3N5c3RlbVxcbHFfY29sbGlkZV9jb25maWcudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsSUFBWSxpQkFFWDtBQUZELFdBQVksaUJBQWlCO0lBQ3pCLCtEQUFPLENBQUE7SUFBRSx5REFBSSxDQUFBO0lBQUUsdUVBQVcsQ0FBQTtJQUFFLDJEQUFLLENBQUE7SUFBRSx5RUFBWSxDQUFBO0lBQUUseURBQUksQ0FBQTtBQUN6RCxDQUFDLEVBRlcsaUJBQWlCLEdBQWpCLHlCQUFpQixLQUFqQix5QkFBaUIsUUFFNUI7QUFFRDtJQUFBO0lBbUJBLENBQUM7SUFsQmlCLCtCQUFlLEdBQVksSUFBSSxDQUFDO0lBQ2hDLGdDQUFnQixHQUFZLElBQUksQ0FBQztJQUNqQyxnQ0FBZ0IsR0FBWSxLQUFLLENBQUM7SUFDbEMsNEJBQVksR0FBVyxFQUFFLENBQUM7SUFDMUIseUJBQVMsR0FBVyxFQUFFLENBQUM7SUFDdkIsOEJBQWMsR0FBVyxDQUFDLENBQUM7SUFDM0IsNkJBQWEsR0FBVyxDQUFDLENBQUM7SUFDMUIsNkJBQWEsR0FBVyxDQUFDLENBQUM7SUFDMUIsaUNBQWlCLEdBQVcsSUFBSSxDQUFDO0lBQ2pDLGtDQUFrQixHQUFXLElBQUksQ0FBQztJQUNsQyxpQ0FBaUIsR0FBRztRQUM5QixTQUFTLEVBQUUsRUFBQyxFQUFFLEVBQUUsQ0FBQyxFQUFFLFFBQVEsRUFBRSxDQUFDLEVBQUUsS0FBSyxFQUFFLENBQUMsRUFBRSxJQUFJLEVBQUUsQ0FBQyxFQUFDO1FBQ2xELE1BQU0sRUFBRSxFQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsUUFBUSxFQUFFLENBQUMsRUFBRSxLQUFLLEVBQUUsQ0FBQyxFQUFFLElBQUksRUFBRSxFQUFFLEVBQUM7UUFDaEQsYUFBYSxFQUFFLEVBQUMsRUFBRSxFQUFFLENBQUMsRUFBRSxRQUFRLEVBQUUsQ0FBQyxFQUFFLEtBQUssRUFBRSxDQUFDLEVBQUUsSUFBSSxFQUFFLENBQUMsRUFBQztRQUN0RCxPQUFPLEVBQUUsRUFBQyxFQUFFLEVBQUUsQ0FBQyxFQUFFLFFBQVEsRUFBRSxDQUFDLEVBQUUsS0FBSyxFQUFFLENBQUMsRUFBRSxJQUFJLEVBQUUsQ0FBQyxFQUFDO1FBQ2hELGNBQWMsRUFBRSxFQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsUUFBUSxFQUFFLEVBQUUsRUFBRSxLQUFLLEVBQUUsQ0FBQyxFQUFFLElBQUksRUFBRSxDQUFDLEVBQUM7UUFDeEQsTUFBTSxFQUFFLEVBQUMsRUFBRSxFQUFFLENBQUMsRUFBRSxRQUFRLEVBQUUsRUFBRSxFQUFFLEtBQUssRUFBRSxDQUFDLEVBQUUsSUFBSSxFQUFFLENBQUMsRUFBQztLQUNuRCxDQUFBO0lBQ0wsc0JBQUM7Q0FuQkQsQUFtQkMsSUFBQTtBQW5CWSwwQ0FBZSIsImZpbGUiOiIiLCJzb3VyY2VSb290IjoiLyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBlbnVtIExRQ29sbGlkZUluZm9MaXN0IHtcclxuICAgIGRlZmF1bHQsIHJvbGUsIHJvbGVfYnVsbGV0LCBlbmVteSwgZW5lbXlfYnVsbGV0LCBwcm9wXHJcbn1cclxuXHJcbmV4cG9ydCBjbGFzcyBMUUNvbGxpZGVDb25maWcge1xyXG4gICAgcHVibGljIHN0YXRpYyBzd2l0Y2hfYXV0b19ydW46IGJvb2xlYW4gPSB0cnVlO1xyXG4gICAgcHVibGljIHN0YXRpYyBzd2l0Y2hfcHJpbnRfbG9nOiBib29sZWFuID0gdHJ1ZTtcclxuICAgIHB1YmxpYyBzdGF0aWMgc3dpdGNoX3F1YWRfdHJlZTogYm9vbGVhbiA9IGZhbHNlO1xyXG4gICAgcHVibGljIHN0YXRpYyBtYXhfbm9kZV9sZW46IG51bWJlciA9IDEwO1xyXG4gICAgcHVibGljIHN0YXRpYyBwZXJfZnJhbWU6IG51bWJlciA9IDYwO1xyXG4gICAgcHVibGljIHN0YXRpYyBtYXhfbm9kZV9sZXZlbDogbnVtYmVyID0gNDtcclxuICAgIHB1YmxpYyBzdGF0aWMgYWN0aXZlX2FyZWFfeDogbnVtYmVyID0gMDtcclxuICAgIHB1YmxpYyBzdGF0aWMgYWN0aXZlX2FyZWFfeTogbnVtYmVyID0gMDtcclxuICAgIHB1YmxpYyBzdGF0aWMgYWN0aXZlX2FyZWFfd2lkdGg6IG51bWJlciA9IDEwMDA7XHJcbiAgICBwdWJsaWMgc3RhdGljIGFjdGl2ZV9hcmVhX2hlaWdodDogbnVtYmVyID0gMTAwMDtcclxuICAgIHB1YmxpYyBzdGF0aWMgY29sbGlkZV9ncm91cF9tYXAgPSB7XHJcbiAgICAgICAgXCJkZWZhdWx0XCI6IHtpZDogMSwgY2F0ZWdvcnk6IDEsIGluZGV4OiAwLCBtYXNrOiAxfSxcclxuICAgICAgICBcInJvbGVcIjoge2lkOiAyLCBjYXRlZ29yeTogMiwgaW5kZXg6IDEsIG1hc2s6IDU2fSxcclxuICAgICAgICBcInJvbGVfYnVsbGV0XCI6IHtpZDogMywgY2F0ZWdvcnk6IDQsIGluZGV4OiAyLCBtYXNrOiA4fSxcclxuICAgICAgICBcImVuZW15XCI6IHtpZDogNCwgY2F0ZWdvcnk6IDgsIGluZGV4OiAzLCBtYXNrOiA2fSxcclxuICAgICAgICBcImVuZW15X2J1bGxldFwiOiB7aWQ6IDUsIGNhdGVnb3J5OiAxNiwgaW5kZXg6IDQsIG1hc2s6IDJ9LFxyXG4gICAgICAgIFwicHJvcFwiOiB7aWQ6IDYsIGNhdGVnb3J5OiAzMiwgaW5kZXg6IDUsIG1hc2s6IDJ9LFxyXG4gICAgfVxyXG59Il19 -//------QC-SOURCE-SPLIT------ - - (function() { - var nodeEnv = typeof require !== 'undefined' && typeof process !== 'undefined'; - var __module = nodeEnv ? module : {exports:{}}; - var __filename = 'preview-scripts/assets/migration/use_v2.1-2.2.1_cc.Toggle_event.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, '7a231Rz0d9LBYYgY3bDYlLB', 'use_v2.1-2.2.1_cc.Toggle_event'); -// migration/use_v2.1-2.2.1_cc.Toggle_event.js - -"use strict"; - -/* - * This script is automatically generated by Cocos Creator and is only used for projects compatible with the v2.1.0 ~ 2.2.1 version. - * You do not need to manually add this script in any other project. - * If you don't use cc.Toggle in your project, you can delete this script directly. - * If your project is hosted in VCS such as git, submit this script together. - * - * 此脚本由 Cocos Creator 自动生成,仅用于兼容 v2.1.0 ~ 2.2.1 版本的工程, - * 你无需在任何其它项目中手动添加此脚本。 - * 如果你的项目中没用到 Toggle,可直接删除该脚本。 - * 如果你的项目有托管于 git 等版本库,请将此脚本一并上传。 - */ -if (cc.Toggle) { - // Whether to trigger 'toggle' and 'checkEvents' events when modifying 'toggle.isChecked' in the code - // 在代码中修改 'toggle.isChecked' 时是否触发 'toggle' 与 'checkEvents' 事件 - cc.Toggle._triggerEventInScript_isChecked = true; -} - -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,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImFzc2V0c1xcbWlncmF0aW9uXFx1c2VfdjIuMS0yLjIuMV9jYy5Ub2dnbGVfZXZlbnQuanMiXSwibmFtZXMiOlsiY2MiLCJUb2dnbGUiLCJfdHJpZ2dlckV2ZW50SW5TY3JpcHRfaXNDaGVja2VkIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7OztBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQSxJQUFJQSxFQUFFLENBQUNDLE1BQVAsRUFBZTtBQUNYO0FBQ0E7QUFDQUQsRUFBQUEsRUFBRSxDQUFDQyxNQUFILENBQVVDLCtCQUFWLEdBQTRDLElBQTVDO0FBQ0giLCJzb3VyY2VSb290IjoiLyIsInNvdXJjZXNDb250ZW50IjpbIi8qXHJcbiAqIFRoaXMgc2NyaXB0IGlzIGF1dG9tYXRpY2FsbHkgZ2VuZXJhdGVkIGJ5IENvY29zIENyZWF0b3IgYW5kIGlzIG9ubHkgdXNlZCBmb3IgcHJvamVjdHMgY29tcGF0aWJsZSB3aXRoIHRoZSB2Mi4xLjAg772eIDIuMi4xIHZlcnNpb24uXHJcbiAqIFlvdSBkbyBub3QgbmVlZCB0byBtYW51YWxseSBhZGQgdGhpcyBzY3JpcHQgaW4gYW55IG90aGVyIHByb2plY3QuXHJcbiAqIElmIHlvdSBkb24ndCB1c2UgY2MuVG9nZ2xlIGluIHlvdXIgcHJvamVjdCwgeW91IGNhbiBkZWxldGUgdGhpcyBzY3JpcHQgZGlyZWN0bHkuXHJcbiAqIElmIHlvdXIgcHJvamVjdCBpcyBob3N0ZWQgaW4gVkNTIHN1Y2ggYXMgZ2l0LCBzdWJtaXQgdGhpcyBzY3JpcHQgdG9nZXRoZXIuXHJcbiAqXHJcbiAqIOatpOiEmuacrOeUsSBDb2NvcyBDcmVhdG9yIOiHquWKqOeUn+aIkO+8jOS7heeUqOS6juWFvOWuuSB2Mi4xLjAgfiAyLjIuMSDniYjmnKznmoTlt6XnqIvvvIxcclxuICog5L2g5peg6ZyA5Zyo5Lu75L2V5YW25a6D6aG555uu5Lit5omL5Yqo5re75Yqg5q2k6ISa5pys44CCXHJcbiAqIOWmguaenOS9oOeahOmhueebruS4reayoeeUqOWIsCBUb2dnbGXvvIzlj6/nm7TmjqXliKDpmaTor6XohJrmnKzjgIJcclxuICog5aaC5p6c5L2g55qE6aG555uu5pyJ5omY566h5LqOIGdpdCDnrYnniYjmnKzlupPvvIzor7flsIbmraTohJrmnKzkuIDlubbkuIrkvKDjgIJcclxuICovXHJcblxyXG5pZiAoY2MuVG9nZ2xlKSB7XHJcbiAgICAvLyBXaGV0aGVyIHRvIHRyaWdnZXIgJ3RvZ2dsZScgYW5kICdjaGVja0V2ZW50cycgZXZlbnRzIHdoZW4gbW9kaWZ5aW5nICd0b2dnbGUuaXNDaGVja2VkJyBpbiB0aGUgY29kZVxyXG4gICAgLy8g5Zyo5Luj56CB5Lit5L+u5pS5ICd0b2dnbGUuaXNDaGVja2VkJyDml7bmmK/lkKbop6blj5EgJ3RvZ2dsZScg5LiOICdjaGVja0V2ZW50cycg5LqL5Lu2XHJcbiAgICBjYy5Ub2dnbGUuX3RyaWdnZXJFdmVudEluU2NyaXB0X2lzQ2hlY2tlZCA9IHRydWU7XHJcbn1cclxuIl19 -//------QC-SOURCE-SPLIT------ - - (function() { - var nodeEnv = typeof require !== 'undefined' && typeof process !== 'undefined'; - var __module = nodeEnv ? module : {exports:{}}; - var __filename = 'preview-scripts/assets/Script/lq_collide_system/lq_collide.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, 'd2addiRqXVKQ4YEp6sK5d6R', 'lq_collide'); -// Script/lq_collide_system/lq_collide.ts - -"use strict"; -var __extends = (this && this.__extends) || (function () { - var extendStatics = function (d, b) { - extendStatics = Object.setPrototypeOf || - ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) || - function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; }; - return extendStatics(d, b); - }; - return function (d, b) { - extendStatics(d, b); - function __() { this.constructor = d; } - d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); - }; -})(); -var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) { - var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; - if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc); - else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; - return c > 3 && r && Object.defineProperty(target, key, r), r; -}; -Object.defineProperty(exports, "__esModule", { value: true }); -exports.LQCollide = void 0; -var ccclass = cc._decorator.ccclass; -var property = cc._decorator.property; -var requireComponent = cc._decorator.requireComponent; -var menu = cc._decorator.menu; -var Component = cc.Component; -var Enum = cc.Enum; -var Size = cc.Size; -var Vec2 = cc.Vec2; -var Graphics = cc.Graphics; -var Node = cc.Node; -var macro = cc.macro; -var Color = cc.Color; -var lq_const_1 = require("../lq_base/data/lq_const"); -var lq_collide_config_1 = require("./lq_collide_config"); -var lq_collide_system_1 = require("./lq_collide_system"); -var lq_data_1 = require("../lq_base/data/lq_data"); -var lq_collide_base_1 = require("./lq_collide_base"); -var lq_game_util_1 = require("../lq_base/util/lq_game_util"); -var Map_1 = require("../Map"); -var LQCollide = /** @class */ (function (_super) { - __extends(LQCollide, _super); - function LQCollide() { - var _this = _super !== null && _super.apply(this, arguments) || this; - _this._draw_collide = true; - _this.can_move = true; - _this._collide_shape = lq_const_1.LQCollideShape.Rect; - _this._collide_group_index = -1; - _this.collide_group_id = 0; - _this.collide_scle = 1; - _this._radius = 50; - _this._size = new Size(100, 100); - _this._polygon_points = [new Vec2(-45, -45), new Vec2(45, -45), new Vec2(60, 40), new Vec2(0, 70), new Vec2(-60, 40)]; - //collide碰撞位置偏移 - _this._offset = new Vec2(0, 0); - _this.data_string = ''; - //每个collide的id唯一 - _this.collide_id = 0; - //状态 - _this.collide_status = lq_const_1.LQCollideStatus.Idle; - //是否可碰撞 - _this.is_enable = true; - //是否开启碰撞前后的函数 - _this.is_open_func = true; - //碰撞类别 - _this.collide_category = 0; - //碰撞筛选 - _this.collide_mask = 0; - _this.collide_map = {}; - return _this; - } - LQCollide_1 = LQCollide; - Object.defineProperty(LQCollide.prototype, "draw_collide", { - get: function () { - return this._draw_collide; - }, - set: function (value) { - this._draw_collide = value; - this.draw_shape(); - }, - enumerable: false, - configurable: true - }); - Object.defineProperty(LQCollide.prototype, "collide_shape", { - get: function () { - return this._collide_shape; - }, - set: function (value) { - this._collide_shape = value; - this.draw_shape(); - }, - enumerable: false, - configurable: true - }); - Object.defineProperty(LQCollide.prototype, "collide_group_index", { - get: function () { - if (this._collide_group_index === -1) { - this._collide_group_index = lq_collide_system_1.LQCollideSystem.get_info_by_id(this.collide_group_id).index; - } - return this._collide_group_index; - }, - set: function (value) { - if (this._collide_group_index === value) { - return; - } - this._collide_group_index = value; - this.collide_group_id = lq_collide_system_1.LQCollideSystem.get_group_by_index(value).id; - }, - enumerable: false, - configurable: true - }); - Object.defineProperty(LQCollide.prototype, "radius", { - get: function () { - return this._radius; - }, - set: function (value) { - this._radius = value; - this.draw_shape(); - }, - enumerable: false, - configurable: true - }); - Object.defineProperty(LQCollide.prototype, "size", { - // 物体速度 - // public velocity: Vec2 = new Vec2(0, 0); - get: function () { - return this._size; - }, - set: function (value) { - this._size = value; - if (this.world_rect) { - this.world_rect.width = value.width; - this.world_rect.height = value.height; - this.world_rect.half_width = value.width * 0.5; - this.world_rect.half_height = value.height * 0.5; - } - this.draw_shape(); - }, - enumerable: false, - configurable: true - }); - Object.defineProperty(LQCollide.prototype, "offset", { - get: function () { - return this._offset; - }, - set: function (value) { - this._offset = value; - this.draw_shape(); - }, - enumerable: false, - configurable: true - }); - Object.defineProperty(LQCollide.prototype, "polygon_points", { - get: function () { - return this._polygon_points; - }, - set: function (value) { - this._polygon_points = value; - this.draw_shape(); - }, - enumerable: false, - configurable: true - }); - //检测绘制组件是否添加 - LQCollide.prototype.checkDebugDrawValid = function () { - if (!this._debugDrawer || !this._debugDrawer.isValid) { - var node = this.node.getChildByName('Collide'); - if (!node) { - node = new Node('Collide'); - node.zIndex = macro.MAX_ZINDEX; - this.node.addChild(node); - // @ts-ignore - node._objFlags = 1096; - this._debugDrawer = node.addComponent(Graphics); - this._debugDrawer.lineWidth = 3; - this._debugDrawer.strokeColor = new Color(255, 0, 0); - this._debugDrawer.fillColor = new Color(255, 0, 0); - } - else { - this._debugDrawer = node.getComponent(Graphics); - } - } - }; - //绘制形状 - LQCollide.prototype.draw_shape = function () { - if (!this._draw_collide) { - if (this._debugDrawer) { - this._debugDrawer.clear(); - } - return; - } - this.checkDebugDrawValid(); - this._debugDrawer.clear(); - var o1 = { key: 'scaleX', value: this.node.scale }; - var o2 = { key: 'scaleY', value: this.node.scale }; - lq_game_util_1.LQGameUtil.recursion_node_property(this.node, o1); - lq_game_util_1.LQGameUtil.recursion_node_property(this.node, o2); - if (o1.value === 0 || o2.value === 0) { - return; - } - this._debugDrawer.node.scaleX = 1 / o1.value; - this._debugDrawer.node.scaleY = 1 / o2.value; - switch (this._collide_shape) { - case lq_const_1.LQCollideShape.Circle: - this._debugDrawer.circle(+this._offset.x, +this._offset.y, this._radius); - this._debugDrawer.stroke(); - break; - case lq_const_1.LQCollideShape.Rect: - this._debugDrawer.moveTo(-this._size.width * 0.5 + this._offset.x, -this._size.height * 0.5 + this._offset.y); - this._debugDrawer.lineTo(-this._size.width * 0.5 + this._offset.x, +this._size.height * 0.5 + this._offset.y); - this._debugDrawer.lineTo(this._size.width * 0.5 + this._offset.x, +this._size.height * 0.5 + this._offset.y); - this._debugDrawer.lineTo(this._size.width * 0.5 + this._offset.x, -this._size.height * 0.5 + this._offset.y); - this._debugDrawer.lineTo(-this._size.width * 0.5 + this._offset.x, -this._size.height * 0.5 + this._offset.y); - this._debugDrawer.stroke(); - break; - case lq_const_1.LQCollideShape.Polygon: - this._debugDrawer.moveTo(this._polygon_points[0].x + this._offset.x, this._polygon_points[0].y + this._offset.y); - for (var i = 1; i < this._polygon_points.length; i++) { - this._debugDrawer.lineTo(this._polygon_points[i].x + this._offset.x, this._polygon_points[i].y + this._offset.y); - } - this._debugDrawer.lineTo(this._polygon_points[0].x + this._offset.x, this._polygon_points[0].y + this._offset.y); - this._debugDrawer.stroke(); - break; - } - }; - //仅用于矩形 - LQCollide.prototype.update_size = function (width, height) { - this._size.width = width; - this.world_rect.width = width; - this.world_rect.half_width = width * 0.5; - this._size.height = height; - this.world_rect.height = height; - this.world_rect.half_height = height * 0.5; - this.draw_shape(); - }; - LQCollide.prototype.init_lq_collide = function () { - this.world_rect = new lq_data_1.LQRect(0, 0, this._size.width, this._size.height); - this.draw_shape(); - var info = lq_collide_system_1.LQCollideSystem.get_info_by_id(this.collide_group_id); - this.collide_mask = info.mask; - this.collide_category = info.category; - this.collide_id = LQCollide_1.id_maker++; - this.updateCollisionArea(); - }; - LQCollide.prototype.updateCollisionArea = function () { - if (this._size.width == 0 || this._size.height == 0 || Map_1.default._instance == undefined) { - return; - } - if (Map_1.default._instance.node.scale) { - var scaleX_1 = Map_1.default._instance.node.scale; - var scaleY_1 = Map_1.default._instance.node.scale; - if (scaleX_1 === 0 || scaleX_1 == undefined || scaleX_1 == null || scaleX_1 == 1) { - return; - } - switch (this._collide_shape) { - case lq_const_1.LQCollideShape.Circle: - // 圆形碰撞区域半径更新 - this._radius = this._radius * Math.max(scaleX_1, scaleY_1); - break; - case lq_const_1.LQCollideShape.Rect: - // 矩形碰撞区域尺寸更新 - // console.log(this.data_string); - if (this._size.width !== 10 && this.data_string != "-1") { - // if(this._size.width == 105 || this._size.height == 105){} - this._size.width = this._size.width * scaleX_1; - // console.log("放大倍数",scaleX); - } - if (this._size.height !== 10 && this.data_string != "-1") { - // if(this._size.width == 105 || this._size.height == 105){} - this._size.height = this._size.height * scaleY_1; - // console.log("放大倍数",scaleY); - } - // this._size.width = this._size.width * scaleX; - // this._size.height = this._size.height * scaleY; - if (this.world_rect) { - this.world_rect.width = this._size.width; - this.world_rect.height = this._size.height; - this.world_rect.half_width = this._size.width * 0.5; - this.world_rect.half_height = this._size.height * 0.5; - } - break; - case lq_const_1.LQCollideShape.Polygon: - // 多边形碰撞点坐标更新 - this._polygon_points = this._polygon_points.map(function (point) { - return new Vec2(point.x * scaleX_1, point.y * scaleY_1); - }); - break; - } - this.draw_shape(); - } - }; - LQCollide.prototype.enable_lq_collide = function () { - if (this.collide_status === lq_const_1.LQCollideStatus.Live) { - console.warn(this.node.name + '重复添加'); - return; - } - this.is_enable = true; - this.collide_status = lq_const_1.LQCollideStatus.Live; - lq_collide_system_1.LQCollideSystem.add_collide(this); - }; - LQCollide.prototype.disable_lq_collide = function () { - if (this.collide_status !== lq_const_1.LQCollideStatus.Live) { - return; - } - this.is_enable = false; - this.collide_status = lq_const_1.LQCollideStatus.Idle; - lq_collide_system_1.LQCollideSystem.remove_collide(this); - }; - LQCollide.prototype.update_lq_collide = function () { - }; - // @ts-ignore - // public on_collide(collide: LQCollide): void { - // if(collide.node.parent.uuid == this.node.parent.uuid){ - // return; - // } - // if (LQCollideConfig.switch_print_log) { - // if(this.node.parent.getComponent("Block")){ - // let block = this.node.parent.getComponent("Block"); - // if(block.isTouch){ - // block.checkCollision = true; - // // console.log("碰撞",this.node.name); - // if(this.node.name == "top" ){ - // console.log("碰到上边缘"); - // block.moveUp = false; - // if(block.touchPointY > (this.node.parent.y+this.node.height)){ - // block.moveY = 1; - // } - // } - // if(this.node.name === "down"){ - // block.moveDown = false; - // console.log("碰到下边缘"); - // if(block.touchPointY < (this.node.parent.y )){ - // block.moveY = -1; - // } - // } - // if(this.node.name === "left" ){ - // block.moveLeft = false; - // console.log("碰到左边缘"); - // if(block.touchPointX < (this.node.parent.x - this.node.parent.width)){ - // block.moveX = -1; - // } - // } - // if(this.node.name === "right"){ - // block.moveRight = false; - // console.log("碰到右边缘"); - // if(block.touchPointX > (this.node.parent.x)){ - // block.moveX = 1; - // } - // } - // } - // } - // } - // } - //@ts-ignore - LQCollide.prototype.on_enter = function (collide) { - if (this.disableCollider(collide)) { - return; - } - // if (LQCollideConfig.switch_print_log) { - // console.log(this.node.name + ' on_enter'); - // } - }; - //@ts-ignore - LQCollide.prototype.on_exit = function (collide) { - if (this.disableCollider(collide)) { - return; - } - if (lq_collide_config_1.LQCollideConfig.switch_print_log) { - if (this.node.parent.getComponent("Block")) { - var block = this.node.parent.getComponent("Block"); - // if(!block.isTouch){ - // return; - // } - block.checkCollision = false; - if (this.node.name == "top") { - block.moveUp = true; - } - if (this.node.name === "down") { - block.moveDown = true; - } - if (this.node.name === "left") { - block.moveLeft = true; - } - if (this.node.name === "right") { - block.moveRight = true; - } - } - } - }; - LQCollide.prototype.on_collide = function (collide) { - if (this.disableCollider(collide)) { - return; - } - if (lq_collide_config_1.LQCollideConfig.switch_print_log) { - if (this.node.parent.getComponent("Block")) { - var block = this.node.parent.getComponent("Block"); - var jg = false; - if (block.isTouch) { - block.checkCollision = true; - // console.log("碰撞",this.node.name); - if (this.node.name == "top") { - // console.log(collide.node.parent.name); - block.moveUp = false; - if (block.touchPointY > (this.node.parent.y + this.node.parent.height)) { - block.moveY = 1; - } - // console.log("碰到上边缘"); - } - if (this.node.name === "down") { - block.moveDown = false; - if (block.touchPointY < (this.node.parent.y)) { - block.moveY = -1; - } - // console.log("碰到下边缘"); - } - if (this.node.name === "left") { - block.moveLeft = false; - if (block.touchPointX < (this.node.parent.x - this.node.parent.width)) { - block.moveX = -1; - } - } - if (this.node.name === "right") { - block.moveRight = false; - if (block.touchPointX > (this.node.parent.x)) { - block.moveX = 1; - } - } - } - } - } - }; - LQCollide.prototype.disableCollider = function (collide) { - var jg = false; - if (collide.node && this.node) { - if (collide.node.parent && this.node.parent) { - if (collide.node.parent.uuid == this.node.parent.uuid) { - jg = true; - } - if (this.node.parent.getComponent("Block")) { - var block = this.node.parent.getComponent("Block"); - if (block.type == 1 || block.type == 10 || block.type == 9) { - if (collide.node.parent == block.block_Info.node) { - jg = true; - } - } - } - } - } - return jg; - }; - var LQCollide_1; - LQCollide.id_maker = 1; - __decorate([ - property({ displayName: '绘制形状' }) - ], LQCollide.prototype, "draw_collide", null); - __decorate([ - property - ], LQCollide.prototype, "_draw_collide", void 0); - __decorate([ - property({ tooltip: '能否移动' }) - ], LQCollide.prototype, "can_move", void 0); - __decorate([ - property({ - tooltip: '碰撞形状,None就是无敌,不参与碰撞', - type: Enum(lq_const_1.LQCollideShape), - displayName: '碰撞形状' - }) - ], LQCollide.prototype, "collide_shape", null); - __decorate([ - property() - ], LQCollide.prototype, "_collide_shape", void 0); - __decorate([ - property({ - type: Enum(lq_collide_config_1.LQCollideInfoList), tooltip: '碰撞类别', - displayName: '碰撞类别' - }) - ], LQCollide.prototype, "collide_group_index", null); - __decorate([ - property({ serializable: false }) - ], LQCollide.prototype, "_collide_group_index", void 0); - __decorate([ - property({ visible: false }) - ], LQCollide.prototype, "collide_group_id", void 0); - __decorate([ - property({ visible: false }) - ], LQCollide.prototype, "collide_scle", void 0); - __decorate([ - property({ - tooltip: 'collide半径', - visible: function () { - // @ts-ignore - return this._collide_shape === lq_const_1.LQCollideShape.Circle; - }, - displayName: '半径' - }) - ], LQCollide.prototype, "radius", null); - __decorate([ - property() - ], LQCollide.prototype, "_radius", void 0); - __decorate([ - property({ - tooltip: 'collide长宽', - visible: function () { - // @ts-ignore - return this._collide_shape === lq_const_1.LQCollideShape.Rect; - }, - displayName: '长宽' - }) - ], LQCollide.prototype, "size", null); - __decorate([ - property() - ], LQCollide.prototype, "_size", void 0); - __decorate([ - property({ displayName: '位置偏移' }) - ], LQCollide.prototype, "offset", null); - __decorate([ - property({ - type: Vec2, - visible: function () { - // @ts-ignore - return this._collide_shape === lq_const_1.LQCollideShape.Polygon; - }, - displayName: '多边形碰撞点' - }) - ], LQCollide.prototype, "polygon_points", null); - __decorate([ - property() - ], LQCollide.prototype, "_polygon_points", void 0); - __decorate([ - property() - ], LQCollide.prototype, "_offset", void 0); - __decorate([ - property({ displayName: '自定义字符串' }) - ], LQCollide.prototype, "data_string", void 0); - LQCollide = LQCollide_1 = __decorate([ - ccclass, - requireComponent(lq_collide_base_1.LQCollideBase), - menu("lq/collide") - ], LQCollide); - return LQCollide; -}(Component)); -exports.LQCollide = LQCollide; - -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,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImFzc2V0c1xcU2NyaXB0XFxscV9jb2xsaWRlX3N5c3RlbVxcbHFfY29sbGlkZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsSUFBTyxPQUFPLEdBQUcsRUFBRSxDQUFDLFVBQVUsQ0FBQyxPQUFPLENBQUM7QUFDdkMsSUFBTyxRQUFRLEdBQUcsRUFBRSxDQUFDLFVBQVUsQ0FBQyxRQUFRLENBQUM7QUFDekMsSUFBTyxnQkFBZ0IsR0FBRyxFQUFFLENBQUMsVUFBVSxDQUFDLGdCQUFnQixDQUFDO0FBQ3pELElBQU8sSUFBSSxHQUFHLEVBQUUsQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDO0FBQ2pDLElBQU8sU0FBUyxHQUFHLEVBQUUsQ0FBQyxTQUFTLENBQUM7QUFDaEMsSUFBTyxJQUFJLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQztBQUN0QixJQUFPLElBQUksR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDO0FBQ3RCLElBQU8sSUFBSSxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUM7QUFDdEIsSUFBTyxRQUFRLEdBQUcsRUFBRSxDQUFDLFFBQVEsQ0FBQztBQUM5QixJQUFPLElBQUksR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDO0FBQ3RCLElBQU8sS0FBSyxHQUFHLEVBQUUsQ0FBQyxLQUFLLENBQUM7QUFDeEIsSUFBTyxLQUFLLEdBQUcsRUFBRSxDQUFDLEtBQUssQ0FBQztBQUN4QixxREFBeUU7QUFDekUseURBQXVFO0FBQ3ZFLHlEQUFvRDtBQUNwRCxtREFBK0M7QUFDL0MscURBQWdEO0FBQ2hELDZEQUF3RDtBQUN4RCw4QkFBaUM7QUFLakM7SUFBK0IsNkJBQVM7SUFBeEM7UUFBQSxxRUFpZUM7UUFwZGEsbUJBQWEsR0FBWSxJQUFJLENBQUM7UUFHOUIsY0FBUSxHQUFZLElBQUksQ0FBQztRQWtCNUIsb0JBQWMsR0FBbUIseUJBQWMsQ0FBQyxJQUFJLENBQUM7UUFzQnBELDBCQUFvQixHQUFHLENBQUMsQ0FBQyxDQUFDO1FBR3hCLHNCQUFnQixHQUFXLENBQUMsQ0FBQztRQUc3QixrQkFBWSxHQUFXLENBQUMsQ0FBQztRQW9CekIsYUFBTyxHQUFXLEVBQUUsQ0FBQztRQTZCckIsV0FBSyxHQUFTLElBQUksSUFBSSxDQUFDLEdBQUcsRUFBRSxHQUFHLENBQUMsQ0FBQztRQThCcEMscUJBQWUsR0FBVyxDQUFDLElBQUksSUFBSSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsSUFBSSxJQUFJLENBQUMsRUFBRSxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsSUFBSSxJQUFJLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxFQUFFLElBQUksSUFBSSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsRUFBRSxJQUFJLElBQUksQ0FBQyxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDO1FBQy9ILGVBQWU7UUFFUixhQUFPLEdBQVMsSUFBSSxJQUFJLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO1FBRy9CLGlCQUFXLEdBQVcsRUFBRSxDQUFDO1FBQ2hDLGdCQUFnQjtRQUNULGdCQUFVLEdBQVcsQ0FBQyxDQUFDO1FBQzlCLElBQUk7UUFDRyxvQkFBYyxHQUFvQiwwQkFBZSxDQUFDLElBQUksQ0FBQztRQUM5RCxPQUFPO1FBQ0EsZUFBUyxHQUFZLElBQUksQ0FBQztRQUNqQyxhQUFhO1FBQ04sa0JBQVksR0FBWSxJQUFJLENBQUM7UUFDcEMsTUFBTTtRQUNDLHNCQUFnQixHQUFHLENBQUMsQ0FBQztRQUM1QixNQUFNO1FBQ0Msa0JBQVksR0FBRyxDQUFDLENBQUM7UUFNakIsaUJBQVcsR0FBNkQsRUFBRSxDQUFDOztJQTRUdEYsQ0FBQztrQkFqZVksU0FBUztJQUdsQixzQkFBSSxtQ0FBWTthQUFoQjtZQUNJLE9BQU8sSUFBSSxDQUFDLGFBQWEsQ0FBQztRQUM5QixDQUFDO2FBRUQsVUFBaUIsS0FBYztZQUMzQixJQUFJLENBQUMsYUFBYSxHQUFHLEtBQUssQ0FBQztZQUMzQixJQUFJLENBQUMsVUFBVSxFQUFFLENBQUM7UUFDdEIsQ0FBQzs7O09BTEE7SUFtQkQsc0JBQUksb0NBQWE7YUFBakI7WUFDSSxPQUFPLElBQUksQ0FBQyxjQUFjLENBQUM7UUFDL0IsQ0FBQzthQUVELFVBQWtCLEtBQXFCO1lBQ25DLElBQUksQ0FBQyxjQUFjLEdBQUcsS0FBSyxDQUFDO1lBQzVCLElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQztRQUN0QixDQUFDOzs7T0FMQTtJQWNELHNCQUFJLDBDQUFtQjthQUF2QjtZQUNJLElBQUksSUFBSSxDQUFDLG9CQUFvQixLQUFLLENBQUMsQ0FBQyxFQUFFO2dCQUNsQyxJQUFJLENBQUMsb0JBQW9CLEdBQUcsbUNBQWUsQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLGdCQUFnQixDQUFDLENBQUMsS0FBSyxDQUFDO2FBQzNGO1lBQ0QsT0FBTyxJQUFJLENBQUMsb0JBQW9CLENBQUM7UUFDckMsQ0FBQzthQUVELFVBQXdCLEtBQUs7WUFDekIsSUFBSSxJQUFJLENBQUMsb0JBQW9CLEtBQUssS0FBSyxFQUFFO2dCQUNyQyxPQUFPO2FBQ1Y7WUFDRCxJQUFJLENBQUMsb0JBQW9CLEdBQUcsS0FBSyxDQUFDO1lBQ2xDLElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxtQ0FBZSxDQUFDLGtCQUFrQixDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUUsQ0FBQztRQUN6RSxDQUFDOzs7T0FSQTtJQTJCRCxzQkFBSSw2QkFBTTthQUFWO1lBQ0ksT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFDO1FBQ3hCLENBQUM7YUFFRCxVQUFXLEtBQWE7WUFDcEIsSUFBSSxDQUFDLE9BQU8sR0FBRyxLQUFLLENBQUM7WUFDckIsSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFDO1FBQ3RCLENBQUM7OztPQUxBO0lBcUJELHNCQUFJLDJCQUFJO1FBWFIsT0FBTztRQUNQLDBDQUEwQzthQVUxQztZQUNJLE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQztRQUN0QixDQUFDO2FBRUQsVUFBUyxLQUFXO1lBQ2hCLElBQUksQ0FBQyxLQUFLLEdBQUcsS0FBSyxDQUFDO1lBQ25CLElBQUksSUFBSSxDQUFDLFVBQVUsRUFBRTtnQkFDakIsSUFBSSxDQUFDLFVBQVUsQ0FBQyxLQUFLLEdBQUcsS0FBSyxDQUFDLEtBQUssQ0FBQztnQkFDcEMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxNQUFNLEdBQUcsS0FBSyxDQUFDLE1BQU0sQ0FBQztnQkFDdEMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxVQUFVLEdBQUcsS0FBSyxDQUFDLEtBQUssR0FBRyxHQUFHLENBQUM7Z0JBQy9DLElBQUksQ0FBQyxVQUFVLENBQUMsV0FBVyxHQUFHLEtBQUssQ0FBQyxNQUFNLEdBQUcsR0FBRyxDQUFDO2FBQ3BEO1lBQ0QsSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFDO1FBQ3RCLENBQUM7OztPQVhBO0lBaUJELHNCQUFJLDZCQUFNO2FBQVY7WUFDSSxPQUFPLElBQUksQ0FBQyxPQUFPLENBQUM7UUFDeEIsQ0FBQzthQUVELFVBQVcsS0FBVztZQUNsQixJQUFJLENBQUMsT0FBTyxHQUFHLEtBQUssQ0FBQztZQUNyQixJQUFJLENBQUMsVUFBVSxFQUFFLENBQUM7UUFDdEIsQ0FBQzs7O09BTEE7SUFlRCxzQkFBSSxxQ0FBYzthQUFsQjtZQUNJLE9BQU8sSUFBSSxDQUFDLGVBQWUsQ0FBQztRQUNoQyxDQUFDO2FBRUQsVUFBbUIsS0FBYTtZQUM1QixJQUFJLENBQUMsZUFBZSxHQUFHLEtBQUssQ0FBQztZQUM3QixJQUFJLENBQUMsVUFBVSxFQUFFLENBQUM7UUFDdEIsQ0FBQzs7O09BTEE7SUFvQ0QsWUFBWTtJQUNKLHVDQUFtQixHQUEzQjtRQUNJLElBQUksQ0FBQyxJQUFJLENBQUMsWUFBWSxJQUFJLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxPQUFPLEVBQUU7WUFDbEQsSUFBSSxJQUFJLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsU0FBUyxDQUFDLENBQUM7WUFDL0MsSUFBSSxDQUFDLElBQUksRUFBRTtnQkFDUCxJQUFJLEdBQUcsSUFBSSxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUM7Z0JBQzNCLElBQUksQ0FBQyxNQUFNLEdBQUcsS0FBSyxDQUFDLFVBQVUsQ0FBQztnQkFDL0IsSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUM7Z0JBQ3pCLGFBQWE7Z0JBQ2IsSUFBSSxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUM7Z0JBQ3RCLElBQUksQ0FBQyxZQUFZLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQyxRQUFRLENBQUMsQ0FBQztnQkFDaEQsSUFBSSxDQUFDLFlBQVksQ0FBQyxTQUFTLEdBQUcsQ0FBQyxDQUFDO2dCQUNoQyxJQUFJLENBQUMsWUFBWSxDQUFDLFdBQVcsR0FBRyxJQUFJLEtBQUssQ0FBQyxHQUFHLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO2dCQUNyRCxJQUFJLENBQUMsWUFBWSxDQUFDLFNBQVMsR0FBRyxJQUFJLEtBQUssQ0FBQyxHQUFHLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO2FBQ3REO2lCQUFNO2dCQUNILElBQUksQ0FBQyxZQUFZLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQyxRQUFRLENBQUMsQ0FBQzthQUNuRDtTQUNKO0lBQ0wsQ0FBQztJQUVELE1BQU07SUFDSSw4QkFBVSxHQUFwQjtRQUNJLElBQUksQ0FBQyxJQUFJLENBQUMsYUFBYSxFQUFFO1lBQ3JCLElBQUksSUFBSSxDQUFDLFlBQVksRUFBRTtnQkFDbkIsSUFBSSxDQUFDLFlBQVksQ0FBQyxLQUFLLEVBQUUsQ0FBQzthQUM3QjtZQUNELE9BQU87U0FDVjtRQUNELElBQUksQ0FBQyxtQkFBbUIsRUFBRSxDQUFDO1FBQzNCLElBQUksQ0FBQyxZQUFZLENBQUMsS0FBSyxFQUFFLENBQUM7UUFFMUIsSUFBSSxFQUFFLEdBQUcsRUFBQyxHQUFHLEVBQUUsUUFBUSxFQUFFLEtBQUssRUFBRSxJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssRUFBQyxDQUFDO1FBQ2pELElBQUksRUFBRSxHQUFHLEVBQUMsR0FBRyxFQUFFLFFBQVEsRUFBRSxLQUFLLEVBQUUsSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLEVBQUMsQ0FBQztRQUNqRCx5QkFBVSxDQUFDLHVCQUF1QixDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDLENBQUM7UUFDbEQseUJBQVUsQ0FBQyx1QkFBdUIsQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FBQyxDQUFDO1FBQ2xELElBQUksRUFBRSxDQUFDLEtBQUssS0FBSyxDQUFDLElBQUksRUFBRSxDQUFDLEtBQUssS0FBSyxDQUFDLEVBQUU7WUFDbEMsT0FBTztTQUNWO1FBQ0QsSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsTUFBTSxHQUFHLENBQUMsR0FBRyxFQUFFLENBQUMsS0FBSyxDQUFDO1FBQzdDLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLE1BQU0sR0FBRyxDQUFDLEdBQUcsRUFBRSxDQUFDLEtBQUssQ0FBQztRQUM3QyxRQUFRLElBQUksQ0FBQyxjQUFjLEVBQUU7WUFDekIsS0FBSyx5QkFBYyxDQUFDLE1BQU07Z0JBQ3RCLElBQUksQ0FBQyxZQUFZLENBQUMsTUFBTSxDQUFDLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUMsRUFBRSxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUM7Z0JBQ3pFLElBQUksQ0FBQyxZQUFZLENBQUMsTUFBTSxFQUFFLENBQUM7Z0JBQzNCLE1BQU07WUFDVixLQUFLLHlCQUFjLENBQUMsSUFBSTtnQkFDcEIsSUFBSSxDQUFDLFlBQVksQ0FBQyxNQUFNLENBQUMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLEtBQUssR0FBRyxHQUFHLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sR0FBRyxHQUFHLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQztnQkFDOUcsSUFBSSxDQUFDLFlBQVksQ0FBQyxNQUFNLENBQUMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLEtBQUssR0FBRyxHQUFHLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sR0FBRyxHQUFHLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQztnQkFDOUcsSUFBSSxDQUFDLFlBQVksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxLQUFLLEdBQUcsR0FBRyxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNLEdBQUcsR0FBRyxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUM7Z0JBQzdHLElBQUksQ0FBQyxZQUFZLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsS0FBSyxHQUFHLEdBQUcsR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsTUFBTSxHQUFHLEdBQUcsR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDO2dCQUM3RyxJQUFJLENBQUMsWUFBWSxDQUFDLE1BQU0sQ0FBQyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsS0FBSyxHQUFHLEdBQUcsR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsTUFBTSxHQUFHLEdBQUcsR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDO2dCQUM5RyxJQUFJLENBQUMsWUFBWSxDQUFDLE1BQU0sRUFBRSxDQUFDO2dCQUMzQixNQUFNO1lBQ1YsS0FBSyx5QkFBYyxDQUFDLE9BQU87Z0JBQ3ZCLElBQUksQ0FBQyxZQUFZLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxlQUFlLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQyxFQUFFLElBQUksQ0FBQyxlQUFlLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUM7Z0JBQ2pILEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxJQUFJLENBQUMsZUFBZSxDQUFDLE1BQU0sRUFBRSxDQUFDLEVBQUUsRUFBRTtvQkFDbEQsSUFBSSxDQUFDLFlBQVksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDLEVBQUUsSUFBSSxDQUFDLGVBQWUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQztpQkFDcEg7Z0JBQ0QsSUFBSSxDQUFDLFlBQVksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDLEVBQUUsSUFBSSxDQUFDLGVBQWUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQztnQkFDakgsSUFBSSxDQUFDLFlBQVksQ0FBQyxNQUFNLEVBQUUsQ0FBQztnQkFDM0IsTUFBTTtTQUNiO0lBQ0wsQ0FBQztJQUVELE9BQU87SUFDQSwrQkFBVyxHQUFsQixVQUFtQixLQUFhLEVBQUUsTUFBYztRQUM1QyxJQUFJLENBQUMsS0FBSyxDQUFDLEtBQUssR0FBRyxLQUFLLENBQUM7UUFDekIsSUFBSSxDQUFDLFVBQVUsQ0FBQyxLQUFLLEdBQUcsS0FBSyxDQUFDO1FBQzlCLElBQUksQ0FBQyxVQUFVLENBQUMsVUFBVSxHQUFHLEtBQUssR0FBRyxHQUFHLENBQUM7UUFDekMsSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNLEdBQUcsTUFBTSxDQUFDO1FBQzNCLElBQUksQ0FBQyxVQUFVLENBQUMsTUFBTSxHQUFHLE1BQU0sQ0FBQztRQUNoQyxJQUFJLENBQUMsVUFBVSxDQUFDLFdBQVcsR0FBRyxNQUFNLEdBQUcsR0FBRyxDQUFDO1FBRTNDLElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQztJQUN0QixDQUFDO0lBRU0sbUNBQWUsR0FBdEI7UUFFSSxJQUFJLENBQUMsVUFBVSxHQUFHLElBQUksZ0JBQU0sQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLElBQUksQ0FBQyxLQUFLLENBQUMsS0FBSyxFQUFFLElBQUksQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDeEUsSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFDO1FBQ2xCLElBQU0sSUFBSSxHQUFHLG1DQUFlLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDO1FBQ25FLElBQUksQ0FBQyxZQUFZLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQztRQUM5QixJQUFJLENBQUMsZ0JBQWdCLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQztRQUN0QyxJQUFJLENBQUMsVUFBVSxHQUFHLFdBQVMsQ0FBQyxRQUFRLEVBQUUsQ0FBQztRQUV2QyxJQUFJLENBQUMsbUJBQW1CLEVBQUUsQ0FBQztJQUMvQixDQUFDO0lBRU8sdUNBQW1CLEdBQTNCO1FBQ0ksSUFBRyxJQUFJLENBQUMsS0FBSyxDQUFDLEtBQUssSUFBRSxDQUFDLElBQUksSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNLElBQUUsQ0FBQyxJQUFJLGFBQVcsQ0FBQyxTQUFTLElBQUksU0FBUyxFQUFDO1lBQ2pGLE9BQU87U0FDVjtRQUNELElBQUcsYUFBVyxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsS0FBSyxFQUFDO1lBQ2hDLElBQUksUUFBTSxHQUFHLGFBQVcsQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQztZQUM5QyxJQUFJLFFBQU0sR0FBRyxhQUFXLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUM7WUFFOUMsSUFBSSxRQUFNLEtBQUssQ0FBQyxJQUFJLFFBQU0sSUFBSSxTQUFTLElBQUksUUFBTSxJQUFJLElBQUksSUFBSSxRQUFNLElBQUksQ0FBQyxFQUFFO2dCQUN0RSxPQUFPO2FBQ1Y7WUFDRCxRQUFRLElBQUksQ0FBQyxjQUFjLEVBQUU7Z0JBQ3pCLEtBQUsseUJBQWMsQ0FBQyxNQUFNO29CQUN0QixhQUFhO29CQUNiLElBQUksQ0FBQyxPQUFPLEdBQUcsSUFBSSxDQUFDLE9BQU8sR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLFFBQU0sRUFBRSxRQUFNLENBQUMsQ0FBQztvQkFDdkQsTUFBTTtnQkFDVixLQUFLLHlCQUFjLENBQUMsSUFBSTtvQkFDcEIsYUFBYTtvQkFDYixpQ0FBaUM7b0JBQ2pDLElBQUksSUFBSSxDQUFDLEtBQUssQ0FBQyxLQUFLLEtBQUssRUFBRSxJQUFJLElBQUksQ0FBQyxXQUFXLElBQUUsSUFBSSxFQUFFO3dCQUNuRCw0REFBNEQ7d0JBQzNELElBQUksQ0FBQyxLQUFLLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsS0FBSyxHQUFHLFFBQU0sQ0FBQzt3QkFDOUMsK0JBQStCO3FCQUNsQztvQkFDRCxJQUFJLElBQUksQ0FBQyxLQUFLLENBQUMsTUFBTSxLQUFJLEVBQUUsSUFBSSxJQUFJLENBQUMsV0FBVyxJQUFFLElBQUksRUFBRTt3QkFDbkQsNERBQTREO3dCQUMzRCxJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sR0FBRyxRQUFNLENBQUM7d0JBQ2hELDhCQUE4QjtxQkFDakM7b0JBQ0QsZ0RBQWdEO29CQUNoRCxrREFBa0Q7b0JBQ2xELElBQUksSUFBSSxDQUFDLFVBQVUsRUFBRTt3QkFDakIsSUFBSSxDQUFDLFVBQVUsQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUM7d0JBQ3pDLElBQUksQ0FBQyxVQUFVLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDO3dCQUMzQyxJQUFJLENBQUMsVUFBVSxDQUFDLFVBQVUsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLEtBQUssR0FBRyxHQUFHLENBQUM7d0JBQ3BELElBQUksQ0FBQyxVQUFVLENBQUMsV0FBVyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsTUFBTSxHQUFHLEdBQUcsQ0FBQztxQkFDekQ7b0JBQ0QsTUFBTTtnQkFDVixLQUFLLHlCQUFjLENBQUMsT0FBTztvQkFDdkIsYUFBYTtvQkFDYixJQUFJLENBQUMsZUFBZSxHQUFHLElBQUksQ0FBQyxlQUFlLENBQUMsR0FBRyxDQUFDLFVBQUEsS0FBSzt3QkFDakQsT0FBTyxJQUFJLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxHQUFHLFFBQU0sRUFBRSxLQUFLLENBQUMsQ0FBQyxHQUFHLFFBQU0sQ0FBQyxDQUFDO29CQUN4RCxDQUFDLENBQUMsQ0FBQztvQkFDSCxNQUFNO2FBQ2I7WUFFRCxJQUFJLENBQUMsVUFBVSxFQUFFLENBQUM7U0FDckI7SUFFTCxDQUFDO0lBRU0scUNBQWlCLEdBQXhCO1FBRUksSUFBSSxJQUFJLENBQUMsY0FBYyxLQUFLLDBCQUFlLENBQUMsSUFBSSxFQUFFO1lBQzlDLE9BQU8sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLEdBQUcsTUFBTSxDQUFDLENBQUM7WUFDdEMsT0FBTztTQUNWO1FBQ0QsSUFBSSxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUM7UUFDdEIsSUFBSSxDQUFDLGNBQWMsR0FBRywwQkFBZSxDQUFDLElBQUksQ0FBQztRQUMzQyxtQ0FBZSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUN0QyxDQUFDO0lBRU0sc0NBQWtCLEdBQXpCO1FBQ0ksSUFBSSxJQUFJLENBQUMsY0FBYyxLQUFLLDBCQUFlLENBQUMsSUFBSSxFQUFFO1lBQzlDLE9BQU87U0FDVjtRQUNELElBQUksQ0FBQyxTQUFTLEdBQUcsS0FBSyxDQUFDO1FBQ3ZCLElBQUksQ0FBQyxjQUFjLEdBQUcsMEJBQWUsQ0FBQyxJQUFJLENBQUM7UUFDM0MsbUNBQWUsQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDekMsQ0FBQztJQUVNLHFDQUFpQixHQUF4QjtJQUVBLENBQUM7SUFFRCxhQUFhO0lBQ2IsZ0RBQWdEO0lBQ2hELDZEQUE2RDtJQUM3RCxrQkFBa0I7SUFDbEIsUUFBUTtJQUNSLDhDQUE4QztJQUM5QyxzREFBc0Q7SUFDdEQsa0VBQWtFO0lBQ2xFLGlDQUFpQztJQUNqQywrQ0FBK0M7SUFDL0MsdURBQXVEO0lBQ3ZELGdEQUFnRDtJQUNoRCw0Q0FBNEM7SUFDNUMsNENBQTRDO0lBQzVDLHFGQUFxRjtJQUNyRiwyQ0FBMkM7SUFDM0Msd0JBQXdCO0lBQ3hCLG9CQUFvQjtJQUNwQixpREFBaUQ7SUFDakQsOENBQThDO0lBQzlDLDRDQUE0QztJQUM1QyxxRUFBcUU7SUFDckUsNENBQTRDO0lBQzVDLHdCQUF3QjtJQUN4QixvQkFBb0I7SUFDcEIsa0RBQWtEO0lBQ2xELDhDQUE4QztJQUM5Qyw0Q0FBNEM7SUFDNUMsNkZBQTZGO0lBQzdGLDRDQUE0QztJQUM1Qyx3QkFBd0I7SUFDeEIsb0JBQW9CO0lBQ3BCLGtEQUFrRDtJQUVsRCwrQ0FBK0M7SUFDL0MsNENBQTRDO0lBQzVDLG9FQUFvRTtJQUNwRSwyQ0FBMkM7SUFDM0Msd0JBQXdCO0lBQ3hCLG9CQUFvQjtJQUNwQixnQkFBZ0I7SUFDaEIsWUFBWTtJQUVaLFFBQVE7SUFDUixJQUFJO0lBRUosWUFBWTtJQUNMLDRCQUFRLEdBQWYsVUFBZ0IsT0FBa0I7UUFDOUIsSUFBRyxJQUFJLENBQUMsZUFBZSxDQUFDLE9BQU8sQ0FBQyxFQUFDO1lBQzdCLE9BQU87U0FDVjtRQUNELDBDQUEwQztRQUMxQyxpREFBaUQ7UUFDakQsSUFBSTtJQUNSLENBQUM7SUFFRCxZQUFZO0lBQ0wsMkJBQU8sR0FBZCxVQUFlLE9BQWtCO1FBQzdCLElBQUcsSUFBSSxDQUFDLGVBQWUsQ0FBQyxPQUFPLENBQUMsRUFBQztZQUM3QixPQUFPO1NBQ1Y7UUFDRCxJQUFJLG1DQUFlLENBQUMsZ0JBQWdCLEVBQUU7WUFDbEMsSUFBRyxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxZQUFZLENBQUMsT0FBTyxDQUFDLEVBQUM7Z0JBQ3RDLElBQUksS0FBSyxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLFlBQVksQ0FBQyxPQUFPLENBQUMsQ0FBQztnQkFDbkQsc0JBQXNCO2dCQUN0QixjQUFjO2dCQUNkLElBQUk7Z0JBQ0osS0FBSyxDQUFDLGNBQWMsR0FBRyxLQUFLLENBQUM7Z0JBQ3pCLElBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLElBQUksS0FBSyxFQUFFO29CQUN4QixLQUFLLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQztpQkFDdkI7Z0JBQ0QsSUFBRyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksS0FBSyxNQUFNLEVBQUM7b0JBQ3pCLEtBQUssQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDO2lCQUN6QjtnQkFDRCxJQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxLQUFLLE1BQU0sRUFBRTtvQkFDMUIsS0FBSyxDQUFDLFFBQVEsR0FBRyxJQUFJLENBQUM7aUJBQ3pCO2dCQUNELElBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLEtBQUssT0FBTyxFQUFDO29CQUMxQixLQUFLLENBQUMsU0FBUyxHQUFHLElBQUksQ0FBQztpQkFDMUI7YUFDUjtTQUNKO0lBQ0wsQ0FBQztJQUVNLDhCQUFVLEdBQWpCLFVBQWtCLE9BQWtCO1FBQ2hDLElBQUcsSUFBSSxDQUFDLGVBQWUsQ0FBQyxPQUFPLENBQUMsRUFBQztZQUM3QixPQUFPO1NBQ1Y7UUFDRCxJQUFJLG1DQUFlLENBQUMsZ0JBQWdCLEVBQUU7WUFDbEMsSUFBRyxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxZQUFZLENBQUMsT0FBTyxDQUFDLEVBQUM7Z0JBQ3RDLElBQUksS0FBSyxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLFlBQVksQ0FBQyxPQUFPLENBQUMsQ0FBQztnQkFDbkQsSUFBSSxFQUFFLEdBQUcsS0FBSyxDQUFDO2dCQUNmLElBQUcsS0FBSyxDQUFDLE9BQU8sRUFBQztvQkFDYixLQUFLLENBQUMsY0FBYyxHQUFHLElBQUksQ0FBQztvQkFDNUIsb0NBQW9DO29CQUNwQyxJQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxJQUFJLEtBQUssRUFBRTt3QkFDeEIseUNBQXlDO3dCQUN6QyxLQUFLLENBQUMsTUFBTSxHQUFHLEtBQUssQ0FBQzt3QkFDckIsSUFBRyxLQUFLLENBQUMsV0FBVyxHQUFHLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQyxHQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxFQUFDOzRCQUNoRSxLQUFLLENBQUMsS0FBSyxHQUFHLENBQUMsQ0FBQzt5QkFDbkI7d0JBQ0Qsd0JBQXdCO3FCQUMzQjtvQkFDRCxJQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxLQUFLLE1BQU0sRUFBQzt3QkFFekIsS0FBSyxDQUFDLFFBQVEsR0FBRyxLQUFLLENBQUM7d0JBQ3ZCLElBQUcsS0FBSyxDQUFDLFdBQVcsR0FBRyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBRSxFQUFDOzRCQUN6QyxLQUFLLENBQUMsS0FBSyxHQUFHLENBQUMsQ0FBQyxDQUFDO3lCQUNwQjt3QkFDRCx3QkFBd0I7cUJBQzNCO29CQUNELElBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLEtBQUssTUFBTSxFQUFFO3dCQUMxQixLQUFLLENBQUMsUUFBUSxHQUFHLEtBQUssQ0FBQzt3QkFDdkIsSUFBRyxLQUFLLENBQUMsV0FBVyxHQUFHLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxFQUFDOzRCQUNqRSxLQUFLLENBQUMsS0FBSyxHQUFHLENBQUMsQ0FBQyxDQUFDO3lCQUNwQjtxQkFDSjtvQkFDRCxJQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxLQUFLLE9BQU8sRUFBQzt3QkFDMUIsS0FBSyxDQUFDLFNBQVMsR0FBRyxLQUFLLENBQUM7d0JBQ3hCLElBQUcsS0FBSyxDQUFDLFdBQVcsR0FBRyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFDOzRCQUN4QyxLQUFLLENBQUMsS0FBSyxHQUFHLENBQUMsQ0FBQzt5QkFDbkI7cUJBQ0o7aUJBQ0o7YUFDSjtTQUNKO0lBQ0wsQ0FBQztJQUVNLG1DQUFlLEdBQXRCLFVBQXVCLE9BQWtCO1FBQ3JDLElBQUksRUFBRSxHQUFHLEtBQUssQ0FBQztRQUNmLElBQUcsT0FBTyxDQUFDLElBQUksSUFBSSxJQUFJLENBQUMsSUFBSSxFQUFDO1lBQ3pCLElBQUcsT0FBTyxDQUFDLElBQUksQ0FBQyxNQUFNLElBQUksSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLEVBQUM7Z0JBQ3ZDLElBQUcsT0FBTyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxJQUFJLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksRUFBQztvQkFDakQsRUFBRSxHQUFHLElBQUksQ0FBQztpQkFDYjtnQkFDRCxJQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLFlBQVksQ0FBQyxPQUFPLENBQUMsRUFBQztvQkFDdEMsSUFBSSxLQUFLLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsWUFBWSxDQUFDLE9BQU8sQ0FBQyxDQUFDO29CQUNuRCxJQUFHLEtBQUssQ0FBQyxJQUFJLElBQUksQ0FBQyxJQUFJLEtBQUssQ0FBQyxJQUFJLElBQUksRUFBRSxJQUFJLEtBQUssQ0FBQyxJQUFJLElBQUksQ0FBQyxFQUFDO3dCQUN0RCxJQUFHLE9BQU8sQ0FBQyxJQUFJLENBQUMsTUFBTSxJQUFJLEtBQUssQ0FBQyxVQUFVLENBQUMsSUFBSSxFQUFDOzRCQUM1QyxFQUFFLEdBQUcsSUFBSSxDQUFDO3lCQUNiO3FCQUNKO2lCQUNKO2FBQ0o7U0FDSjtRQUdELE9BQU8sRUFBRSxDQUFDO0lBQ2QsQ0FBQzs7SUF6VGMsa0JBQVEsR0FBVyxDQUFDLENBQUM7SUFwS3BDO1FBREMsUUFBUSxDQUFDLEVBQUMsV0FBVyxFQUFFLE1BQU0sRUFBQyxDQUFDO2lEQUcvQjtJQVFEO1FBREMsUUFBUTtvREFDK0I7SUFHeEM7UUFEQyxRQUFRLENBQUMsRUFBQyxPQUFPLEVBQUUsTUFBTSxFQUFDLENBQUM7K0NBQ087SUFRbkM7UUFMQyxRQUFRLENBQUM7WUFDTixPQUFPLEVBQUUscUJBQXFCO1lBQzlCLElBQUksRUFBRSxJQUFJLENBQUMseUJBQWMsQ0FBQztZQUMxQixXQUFXLEVBQUUsTUFBTTtTQUN0QixDQUFDO2tEQUdEO0lBUUQ7UUFEQyxRQUFRLEVBQUU7cURBQ2lEO0lBTTVEO1FBSkMsUUFBUSxDQUFDO1lBQ04sSUFBSSxFQUFFLElBQUksQ0FBQyxxQ0FBaUIsQ0FBQyxFQUFFLE9BQU8sRUFBRSxNQUFNO1lBQzlDLFdBQVcsRUFBRSxNQUFNO1NBQ3RCLENBQUM7d0RBTUQ7SUFXRDtRQURDLFFBQVEsQ0FBQyxFQUFDLFlBQVksRUFBRSxLQUFLLEVBQUMsQ0FBQzsyREFDRTtJQUdsQztRQURDLFFBQVEsQ0FBQyxFQUFDLE9BQU8sRUFBRSxLQUFLLEVBQUMsQ0FBQzt1REFDWTtJQUd2QztRQURDLFFBQVEsQ0FBQyxFQUFDLE9BQU8sRUFBRSxLQUFLLEVBQUMsQ0FBQzttREFDUTtJQVVuQztRQVJDLFFBQVEsQ0FBQztZQUNOLE9BQU8sRUFBRSxXQUFXO1lBQ3BCLE9BQU87Z0JBQ0gsYUFBYTtnQkFDYixPQUFPLElBQUksQ0FBQyxjQUFjLEtBQUsseUJBQWMsQ0FBQyxNQUFNLENBQUM7WUFDekQsQ0FBQztZQUNELFdBQVcsRUFBRSxJQUFJO1NBQ3BCLENBQUM7MkNBR0Q7SUFRRDtRQURDLFFBQVEsRUFBRTs4Q0FDb0I7SUFhL0I7UUFSQyxRQUFRLENBQUM7WUFDTixPQUFPLEVBQUUsV0FBVztZQUNwQixPQUFPO2dCQUNILGFBQWE7Z0JBQ2IsT0FBTyxJQUFJLENBQUMsY0FBYyxLQUFLLHlCQUFjLENBQUMsSUFBSSxDQUFDO1lBQ3ZELENBQUM7WUFDRCxXQUFXLEVBQUUsSUFBSTtTQUNwQixDQUFDO3lDQUdEO0lBY0Q7UUFEQyxRQUFRLEVBQUU7NENBQ2dDO0lBRzNDO1FBREMsUUFBUSxDQUFDLEVBQUMsV0FBVyxFQUFFLE1BQU0sRUFBQyxDQUFDOzJDQUcvQjtJQWVEO1FBUkMsUUFBUSxDQUFDO1lBQ04sSUFBSSxFQUFFLElBQUk7WUFDVixPQUFPO2dCQUNILGFBQWE7Z0JBQ2IsT0FBTyxJQUFJLENBQUMsY0FBYyxLQUFLLHlCQUFjLENBQUMsT0FBTyxDQUFDO1lBQzFELENBQUM7WUFDRCxXQUFXLEVBQUUsUUFBUTtTQUN4QixDQUFDO21EQUdEO0lBUUQ7UUFEQyxRQUFRLEVBQUU7c0RBQ29IO0lBRy9IO1FBREMsUUFBUSxFQUFFOzhDQUMyQjtJQUd0QztRQURDLFFBQVEsQ0FBQyxFQUFDLFdBQVcsRUFBRSxRQUFRLEVBQUMsQ0FBQztrREFDRjtJQW5KdkIsU0FBUztRQUhyQixPQUFPO1FBQ1AsZ0JBQWdCLENBQUMsK0JBQWEsQ0FBQztRQUMvQixJQUFJLENBQUMsWUFBWSxDQUFDO09BQ04sU0FBUyxDQWllckI7SUFBRCxnQkFBQztDQWplRCxBQWllQyxDQWplOEIsU0FBUyxHQWlldkM7QUFqZVksOEJBQVMiLCJmaWxlIjoiIiwic291cmNlUm9vdCI6Ii8iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgY2NjbGFzcyA9IGNjLl9kZWNvcmF0b3IuY2NjbGFzcztcclxuaW1wb3J0IHByb3BlcnR5ID0gY2MuX2RlY29yYXRvci5wcm9wZXJ0eTtcclxuaW1wb3J0IHJlcXVpcmVDb21wb25lbnQgPSBjYy5fZGVjb3JhdG9yLnJlcXVpcmVDb21wb25lbnQ7XHJcbmltcG9ydCBtZW51ID0gY2MuX2RlY29yYXRvci5tZW51O1xyXG5pbXBvcnQgQ29tcG9uZW50ID0gY2MuQ29tcG9uZW50O1xyXG5pbXBvcnQgRW51bSA9IGNjLkVudW07XHJcbmltcG9ydCBTaXplID0gY2MuU2l6ZTtcclxuaW1wb3J0IFZlYzIgPSBjYy5WZWMyO1xyXG5pbXBvcnQgR3JhcGhpY3MgPSBjYy5HcmFwaGljcztcclxuaW1wb3J0IE5vZGUgPSBjYy5Ob2RlO1xyXG5pbXBvcnQgbWFjcm8gPSBjYy5tYWNybztcclxuaW1wb3J0IENvbG9yID0gY2MuQ29sb3I7XHJcbmltcG9ydCB7TFFDb2xsaWRlU2hhcGUsIExRQ29sbGlkZVN0YXR1c30gZnJvbSBcIi4uL2xxX2Jhc2UvZGF0YS9scV9jb25zdFwiO1xyXG5pbXBvcnQge0xRQ29sbGlkZUNvbmZpZywgTFFDb2xsaWRlSW5mb0xpc3R9IGZyb20gXCIuL2xxX2NvbGxpZGVfY29uZmlnXCI7XHJcbmltcG9ydCB7TFFDb2xsaWRlU3lzdGVtfSBmcm9tIFwiLi9scV9jb2xsaWRlX3N5c3RlbVwiO1xyXG5pbXBvcnQge0xRUmVjdH0gZnJvbSBcIi4uL2xxX2Jhc2UvZGF0YS9scV9kYXRhXCI7XHJcbmltcG9ydCB7TFFDb2xsaWRlQmFzZX0gZnJvbSBcIi4vbHFfY29sbGlkZV9iYXNlXCI7XHJcbmltcG9ydCB7TFFHYW1lVXRpbH0gZnJvbSBcIi4uL2xxX2Jhc2UvdXRpbC9scV9nYW1lX3V0aWxcIjtcclxuaW1wb3J0IE1hcENvbnJvbGVyIGZyb20gXCIuLi9NYXBcIjtcclxuXHJcbkBjY2NsYXNzXHJcbkByZXF1aXJlQ29tcG9uZW50KExRQ29sbGlkZUJhc2UpXHJcbkBtZW51KFwibHEvY29sbGlkZVwiKVxyXG5leHBvcnQgY2xhc3MgTFFDb2xsaWRlIGV4dGVuZHMgQ29tcG9uZW50IHtcclxuICAgIHZlbG9jaXR5OiBhbnk7XHJcbiAgICBAcHJvcGVydHkoe2Rpc3BsYXlOYW1lOiAn57uY5Yi25b2i54q2J30pXHJcbiAgICBnZXQgZHJhd19jb2xsaWRlKCk6IGJvb2xlYW4ge1xyXG4gICAgICAgIHJldHVybiB0aGlzLl9kcmF3X2NvbGxpZGU7XHJcbiAgICB9XHJcblxyXG4gICAgc2V0IGRyYXdfY29sbGlkZSh2YWx1ZTogYm9vbGVhbikge1xyXG4gICAgICAgIHRoaXMuX2RyYXdfY29sbGlkZSA9IHZhbHVlO1xyXG4gICAgICAgIHRoaXMuZHJhd19zaGFwZSgpO1xyXG4gICAgfVxyXG5cclxuICAgIEBwcm9wZXJ0eVxyXG4gICAgcHJvdGVjdGVkIF9kcmF3X2NvbGxpZGU6IGJvb2xlYW4gPSB0cnVlO1xyXG5cclxuICAgIEBwcm9wZXJ0eSh7dG9vbHRpcDogJ+iDveWQpuenu+WKqCd9KVxyXG4gICAgcHJvdGVjdGVkIGNhbl9tb3ZlOiBib29sZWFuID0gdHJ1ZTtcclxuXHJcblxyXG4gICAgQHByb3BlcnR5KHtcclxuICAgICAgICB0b29sdGlwOiAn56Kw5pKe5b2i54q277yMTm9uZeWwseaYr+aXoOaVjO+8jOS4jeWPguS4jueisOaSnicsXHJcbiAgICAgICAgdHlwZTogRW51bShMUUNvbGxpZGVTaGFwZSksXHJcbiAgICAgICAgZGlzcGxheU5hbWU6ICfnorDmkp7lvaLnirYnXHJcbiAgICB9KVxyXG4gICAgZ2V0IGNvbGxpZGVfc2hhcGUoKTogTFFDb2xsaWRlU2hhcGUge1xyXG4gICAgICAgIHJldHVybiB0aGlzLl9jb2xsaWRlX3NoYXBlO1xyXG4gICAgfVxyXG5cclxuICAgIHNldCBjb2xsaWRlX3NoYXBlKHZhbHVlOiBMUUNvbGxpZGVTaGFwZSkge1xyXG4gICAgICAgIHRoaXMuX2NvbGxpZGVfc2hhcGUgPSB2YWx1ZTtcclxuICAgICAgICB0aGlzLmRyYXdfc2hhcGUoKTtcclxuICAgIH1cclxuXHJcbiAgICBAcHJvcGVydHkoKVxyXG4gICAgcHVibGljIF9jb2xsaWRlX3NoYXBlOiBMUUNvbGxpZGVTaGFwZSA9IExRQ29sbGlkZVNoYXBlLlJlY3Q7XHJcblxyXG4gICAgQHByb3BlcnR5KHtcclxuICAgICAgICB0eXBlOiBFbnVtKExRQ29sbGlkZUluZm9MaXN0KSwgdG9vbHRpcDogJ+eisOaSnuexu+WIqycsXHJcbiAgICAgICAgZGlzcGxheU5hbWU6ICfnorDmkp7nsbvliKsnXHJcbiAgICB9KVxyXG4gICAgZ2V0IGNvbGxpZGVfZ3JvdXBfaW5kZXgoKSB7XHJcbiAgICAgICAgaWYgKHRoaXMuX2NvbGxpZGVfZ3JvdXBfaW5kZXggPT09IC0xKSB7XHJcbiAgICAgICAgICAgIHRoaXMuX2NvbGxpZGVfZ3JvdXBfaW5kZXggPSBMUUNvbGxpZGVTeXN0ZW0uZ2V0X2luZm9fYnlfaWQodGhpcy5jb2xsaWRlX2dyb3VwX2lkKS5pbmRleDtcclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuX2NvbGxpZGVfZ3JvdXBfaW5kZXg7XHJcbiAgICB9XHJcblxyXG4gICAgc2V0IGNvbGxpZGVfZ3JvdXBfaW5kZXgodmFsdWUpIHtcclxuICAgICAgICBpZiAodGhpcy5fY29sbGlkZV9ncm91cF9pbmRleCA9PT0gdmFsdWUpIHtcclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLl9jb2xsaWRlX2dyb3VwX2luZGV4ID0gdmFsdWU7XHJcbiAgICAgICAgdGhpcy5jb2xsaWRlX2dyb3VwX2lkID0gTFFDb2xsaWRlU3lzdGVtLmdldF9ncm91cF9ieV9pbmRleCh2YWx1ZSkuaWQ7XHJcbiAgICB9XHJcblxyXG4gICAgQHByb3BlcnR5KHtzZXJpYWxpemFibGU6IGZhbHNlfSlcclxuICAgIHByaXZhdGUgX2NvbGxpZGVfZ3JvdXBfaW5kZXggPSAtMTtcclxuXHJcbiAgICBAcHJvcGVydHkoe3Zpc2libGU6IGZhbHNlfSlcclxuICAgIHByb3RlY3RlZCBjb2xsaWRlX2dyb3VwX2lkOiBudW1iZXIgPSAwO1xyXG5cclxuICAgIEBwcm9wZXJ0eSh7dmlzaWJsZTogZmFsc2V9KVxyXG4gICAgcHJvdGVjdGVkIGNvbGxpZGVfc2NsZTogbnVtYmVyID0gMTtcclxuXHJcbiAgICBAcHJvcGVydHkoe1xyXG4gICAgICAgIHRvb2x0aXA6ICdjb2xsaWRl5Y2K5b6EJyxcclxuICAgICAgICB2aXNpYmxlKCkge1xyXG4gICAgICAgICAgICAvLyBAdHMtaWdub3JlXHJcbiAgICAgICAgICAgIHJldHVybiB0aGlzLl9jb2xsaWRlX3NoYXBlID09PSBMUUNvbGxpZGVTaGFwZS5DaXJjbGU7XHJcbiAgICAgICAgfSxcclxuICAgICAgICBkaXNwbGF5TmFtZTogJ+WNiuW+hCdcclxuICAgIH0pXHJcbiAgICBnZXQgcmFkaXVzKCk6IG51bWJlciB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuX3JhZGl1cztcclxuICAgIH1cclxuXHJcbiAgICBzZXQgcmFkaXVzKHZhbHVlOiBudW1iZXIpIHtcclxuICAgICAgICB0aGlzLl9yYWRpdXMgPSB2YWx1ZTtcclxuICAgICAgICB0aGlzLmRyYXdfc2hhcGUoKTtcclxuICAgIH1cclxuXHJcbiAgICBAcHJvcGVydHkoKVxyXG4gICAgcHJvdGVjdGVkIF9yYWRpdXM6IG51bWJlciA9IDUwO1xyXG5cclxuICAgIC8vIOeJqeS9k+mAn+W6plxyXG4gICAgLy8gcHVibGljIHZlbG9jaXR5OiBWZWMyID0gbmV3IFZlYzIoMCwgMCk7XHJcblxyXG4gICAgQHByb3BlcnR5KHtcclxuICAgICAgICB0b29sdGlwOiAnY29sbGlkZemVv+WuvScsXHJcbiAgICAgICAgdmlzaWJsZSgpIHtcclxuICAgICAgICAgICAgLy8gQHRzLWlnbm9yZVxyXG4gICAgICAgICAgICByZXR1cm4gdGhpcy5fY29sbGlkZV9zaGFwZSA9PT0gTFFDb2xsaWRlU2hhcGUuUmVjdDtcclxuICAgICAgICB9LFxyXG4gICAgICAgIGRpc3BsYXlOYW1lOiAn6ZW/5a69J1xyXG4gICAgfSlcclxuICAgIGdldCBzaXplKCk6IFNpemUge1xyXG4gICAgICAgIHJldHVybiB0aGlzLl9zaXplO1xyXG4gICAgfVxyXG5cclxuICAgIHNldCBzaXplKHZhbHVlOiBTaXplKSB7XHJcbiAgICAgICAgdGhpcy5fc2l6ZSA9IHZhbHVlO1xyXG4gICAgICAgIGlmICh0aGlzLndvcmxkX3JlY3QpIHtcclxuICAgICAgICAgICAgdGhpcy53b3JsZF9yZWN0LndpZHRoID0gdmFsdWUud2lkdGg7XHJcbiAgICAgICAgICAgIHRoaXMud29ybGRfcmVjdC5oZWlnaHQgPSB2YWx1ZS5oZWlnaHQ7XHJcbiAgICAgICAgICAgIHRoaXMud29ybGRfcmVjdC5oYWxmX3dpZHRoID0gdmFsdWUud2lkdGggKiAwLjU7XHJcbiAgICAgICAgICAgIHRoaXMud29ybGRfcmVjdC5oYWxmX2hlaWdodCA9IHZhbHVlLmhlaWdodCAqIDAuNTtcclxuICAgICAgICB9XHJcbiAgICAgICAgdGhpcy5kcmF3X3NoYXBlKCk7XHJcbiAgICB9XHJcblxyXG4gICAgQHByb3BlcnR5KClcclxuICAgIHByb3RlY3RlZCBfc2l6ZTogU2l6ZSA9IG5ldyBTaXplKDEwMCwgMTAwKTtcclxuXHJcbiAgICBAcHJvcGVydHkoe2Rpc3BsYXlOYW1lOiAn5L2N572u5YGP56e7J30pXHJcbiAgICBnZXQgb2Zmc2V0KCk6IFZlYzIge1xyXG4gICAgICAgIHJldHVybiB0aGlzLl9vZmZzZXQ7XHJcbiAgICB9XHJcblxyXG4gICAgc2V0IG9mZnNldCh2YWx1ZTogVmVjMikge1xyXG4gICAgICAgIHRoaXMuX29mZnNldCA9IHZhbHVlO1xyXG4gICAgICAgIHRoaXMuZHJhd19zaGFwZSgpO1xyXG4gICAgfVxyXG5cclxuICAgIEBwcm9wZXJ0eSh7XHJcbiAgICAgICAgdHlwZTogVmVjMixcclxuICAgICAgICB2aXNpYmxlKCkge1xyXG4gICAgICAgICAgICAvLyBAdHMtaWdub3JlXHJcbiAgICAgICAgICAgIHJldHVybiB0aGlzLl9jb2xsaWRlX3NoYXBlID09PSBMUUNvbGxpZGVTaGFwZS5Qb2x5Z29uO1xyXG4gICAgICAgIH0sXHJcbiAgICAgICAgZGlzcGxheU5hbWU6ICflpJrovrnlvaLnorDmkp7ngrknXHJcbiAgICB9KVxyXG4gICAgZ2V0IHBvbHlnb25fcG9pbnRzKCk6IFZlYzJbXSB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuX3BvbHlnb25fcG9pbnRzO1xyXG4gICAgfVxyXG5cclxuICAgIHNldCBwb2x5Z29uX3BvaW50cyh2YWx1ZTogVmVjMltdKSB7XHJcbiAgICAgICAgdGhpcy5fcG9seWdvbl9wb2ludHMgPSB2YWx1ZTtcclxuICAgICAgICB0aGlzLmRyYXdfc2hhcGUoKTtcclxuICAgIH1cclxuXHJcbiAgICBAcHJvcGVydHkoKVxyXG4gICAgcHVibGljIF9wb2x5Z29uX3BvaW50czogVmVjMltdID0gW25ldyBWZWMyKC00NSwgLTQ1KSwgbmV3IFZlYzIoNDUsIC00NSksIG5ldyBWZWMyKDYwLCA0MCksIG5ldyBWZWMyKDAsIDcwKSwgbmV3IFZlYzIoLTYwLCA0MCldO1xyXG4gICAgLy9jb2xsaWRl56Kw5pKe5L2N572u5YGP56e7XHJcbiAgICBAcHJvcGVydHkoKVxyXG4gICAgcHVibGljIF9vZmZzZXQ6IFZlYzIgPSBuZXcgVmVjMigwLCAwKTtcclxuXHJcbiAgICBAcHJvcGVydHkoe2Rpc3BsYXlOYW1lOiAn6Ieq5a6a5LmJ5a2X56ym5LiyJ30pXHJcbiAgICBwdWJsaWMgZGF0YV9zdHJpbmc6IHN0cmluZyA9ICcnO1xyXG4gICAgLy/mr4/kuKpjb2xsaWRl55qEaWTllK/kuIBcclxuICAgIHB1YmxpYyBjb2xsaWRlX2lkOiBudW1iZXIgPSAwO1xyXG4gICAgLy/nirbmgIFcclxuICAgIHB1YmxpYyBjb2xsaWRlX3N0YXR1czogTFFDb2xsaWRlU3RhdHVzID0gTFFDb2xsaWRlU3RhdHVzLklkbGU7XHJcbiAgICAvL+aYr+WQpuWPr+eisOaSnlxyXG4gICAgcHVibGljIGlzX2VuYWJsZTogYm9vbGVhbiA9IHRydWU7XHJcbiAgICAvL+aYr+WQpuW8gOWQr+eisOaSnuWJjeWQjueahOWHveaVsFxyXG4gICAgcHVibGljIGlzX29wZW5fZnVuYzogYm9vbGVhbiA9IHRydWU7XHJcbiAgICAvL+eisOaSnuexu+WIq1xyXG4gICAgcHVibGljIGNvbGxpZGVfY2F0ZWdvcnkgPSAwO1xyXG4gICAgLy/norDmkp7nrZvpgIlcclxuICAgIHB1YmxpYyBjb2xsaWRlX21hc2sgPSAwO1xyXG4gICAgLy/nvJPlrZjlpJrovrnlvaLnorDmkp7mlbDmja5cclxuICAgIHB1YmxpYyBjYWNoZV9wb2x5Z29uX3BvaW50czogbnVtYmVyW107XHJcbiAgICAvL+e7mOWItmNvbGxpZGXlvaLnirbnu4Tku7ZcclxuICAgIHByaXZhdGUgX2RlYnVnRHJhd2VyITogR3JhcGhpY3M7XHJcbiAgICBwdWJsaWMgd29ybGRfcmVjdCE6IExRUmVjdDtcclxuICAgIHB1YmxpYyBjb2xsaWRlX21hcDogeyBba2V5OiBudW1iZXJdOiB7IGNvbGxpZGU6IExRQ29sbGlkZSwgc3RhdHVzOiAxIHwgMiB9IH0gPSB7fTtcclxuICAgIHB1YmxpYyBmb2xsb3dfdGFyZ2V0X2NhdGVnb3J5OiBudW1iZXIgfCB1bmRlZmluZWQ7XHJcbiAgICBwcml2YXRlIHN0YXRpYyBpZF9tYWtlcjogbnVtYmVyID0gMTtcclxuXHJcbiAgICAvL+ajgOa1i+e7mOWItue7hOS7tuaYr+WQpua3u+WKoFxyXG4gICAgcHJpdmF0ZSBjaGVja0RlYnVnRHJhd1ZhbGlkKCkge1xyXG4gICAgICAgIGlmICghdGhpcy5fZGVidWdEcmF3ZXIgfHwgIXRoaXMuX2RlYnVnRHJhd2VyLmlzVmFsaWQpIHtcclxuICAgICAgICAgICAgbGV0IG5vZGUgPSB0aGlzLm5vZGUuZ2V0Q2hpbGRCeU5hbWUoJ0NvbGxpZGUnKTtcclxuICAgICAgICAgICAgaWYgKCFub2RlKSB7XHJcbiAgICAgICAgICAgICAgICBub2RlID0gbmV3IE5vZGUoJ0NvbGxpZGUnKTtcclxuICAgICAgICAgICAgICAgIG5vZGUuekluZGV4ID0gbWFjcm8uTUFYX1pJTkRFWDtcclxuICAgICAgICAgICAgICAgIHRoaXMubm9kZS5hZGRDaGlsZChub2RlKTtcclxuICAgICAgICAgICAgICAgIC8vIEB0cy1pZ25vcmVcclxuICAgICAgICAgICAgICAgIG5vZGUuX29iakZsYWdzID0gMTA5NjtcclxuICAgICAgICAgICAgICAgIHRoaXMuX2RlYnVnRHJhd2VyID0gbm9kZS5hZGRDb21wb25lbnQoR3JhcGhpY3MpO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5fZGVidWdEcmF3ZXIubGluZVdpZHRoID0gMztcclxuICAgICAgICAgICAgICAgIHRoaXMuX2RlYnVnRHJhd2VyLnN0cm9rZUNvbG9yID0gbmV3IENvbG9yKDI1NSwgMCwgMCk7XHJcbiAgICAgICAgICAgICAgICB0aGlzLl9kZWJ1Z0RyYXdlci5maWxsQ29sb3IgPSBuZXcgQ29sb3IoMjU1LCAwLCAwKTtcclxuICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgIHRoaXMuX2RlYnVnRHJhd2VyID0gbm9kZS5nZXRDb21wb25lbnQoR3JhcGhpY3MpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIC8v57uY5Yi25b2i54q2XHJcbiAgICBwcm90ZWN0ZWQgZHJhd19zaGFwZSgpIHtcclxuICAgICAgICBpZiAoIXRoaXMuX2RyYXdfY29sbGlkZSkge1xyXG4gICAgICAgICAgICBpZiAodGhpcy5fZGVidWdEcmF3ZXIpIHtcclxuICAgICAgICAgICAgICAgIHRoaXMuX2RlYnVnRHJhd2VyLmNsZWFyKCk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLmNoZWNrRGVidWdEcmF3VmFsaWQoKTtcclxuICAgICAgICB0aGlzLl9kZWJ1Z0RyYXdlci5jbGVhcigpO1xyXG5cclxuICAgICAgICBsZXQgbzEgPSB7a2V5OiAnc2NhbGVYJywgdmFsdWU6IHRoaXMubm9kZS5zY2FsZX07XHJcbiAgICAgICAgbGV0IG8yID0ge2tleTogJ3NjYWxlWScsIHZhbHVlOiB0aGlzLm5vZGUuc2NhbGV9O1xyXG4gICAgICAgIExRR2FtZVV0aWwucmVjdXJzaW9uX25vZGVfcHJvcGVydHkodGhpcy5ub2RlLCBvMSk7XHJcbiAgICAgICAgTFFHYW1lVXRpbC5yZWN1cnNpb25fbm9kZV9wcm9wZXJ0eSh0aGlzLm5vZGUsIG8yKTtcclxuICAgICAgICBpZiAobzEudmFsdWUgPT09IDAgfHwgbzIudmFsdWUgPT09IDApIHtcclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLl9kZWJ1Z0RyYXdlci5ub2RlLnNjYWxlWCA9IDEgLyBvMS52YWx1ZTtcclxuICAgICAgICB0aGlzLl9kZWJ1Z0RyYXdlci5ub2RlLnNjYWxlWSA9IDEgLyBvMi52YWx1ZTtcclxuICAgICAgICBzd2l0Y2ggKHRoaXMuX2NvbGxpZGVfc2hhcGUpIHtcclxuICAgICAgICAgICAgY2FzZSBMUUNvbGxpZGVTaGFwZS5DaXJjbGU6XHJcbiAgICAgICAgICAgICAgICB0aGlzLl9kZWJ1Z0RyYXdlci5jaXJjbGUoK3RoaXMuX29mZnNldC54LCArdGhpcy5fb2Zmc2V0LnksIHRoaXMuX3JhZGl1cyk7XHJcbiAgICAgICAgICAgICAgICB0aGlzLl9kZWJ1Z0RyYXdlci5zdHJva2UoKTtcclxuICAgICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICBjYXNlIExRQ29sbGlkZVNoYXBlLlJlY3Q6XHJcbiAgICAgICAgICAgICAgICB0aGlzLl9kZWJ1Z0RyYXdlci5tb3ZlVG8oLXRoaXMuX3NpemUud2lkdGggKiAwLjUgKyB0aGlzLl9vZmZzZXQueCwgLXRoaXMuX3NpemUuaGVpZ2h0ICogMC41ICsgdGhpcy5fb2Zmc2V0LnkpO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5fZGVidWdEcmF3ZXIubGluZVRvKC10aGlzLl9zaXplLndpZHRoICogMC41ICsgdGhpcy5fb2Zmc2V0LngsICt0aGlzLl9zaXplLmhlaWdodCAqIDAuNSArIHRoaXMuX29mZnNldC55KTtcclxuICAgICAgICAgICAgICAgIHRoaXMuX2RlYnVnRHJhd2VyLmxpbmVUbyh0aGlzLl9zaXplLndpZHRoICogMC41ICsgdGhpcy5fb2Zmc2V0LngsICt0aGlzLl9zaXplLmhlaWdodCAqIDAuNSArIHRoaXMuX29mZnNldC55KTtcclxuICAgICAgICAgICAgICAgIHRoaXMuX2RlYnVnRHJhd2VyLmxpbmVUbyh0aGlzLl9zaXplLndpZHRoICogMC41ICsgdGhpcy5fb2Zmc2V0LngsIC10aGlzLl9zaXplLmhlaWdodCAqIDAuNSArIHRoaXMuX29mZnNldC55KTtcclxuICAgICAgICAgICAgICAgIHRoaXMuX2RlYnVnRHJhd2VyLmxpbmVUbygtdGhpcy5fc2l6ZS53aWR0aCAqIDAuNSArIHRoaXMuX29mZnNldC54LCAtdGhpcy5fc2l6ZS5oZWlnaHQgKiAwLjUgKyB0aGlzLl9vZmZzZXQueSk7XHJcbiAgICAgICAgICAgICAgICB0aGlzLl9kZWJ1Z0RyYXdlci5zdHJva2UoKTtcclxuICAgICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICBjYXNlIExRQ29sbGlkZVNoYXBlLlBvbHlnb246XHJcbiAgICAgICAgICAgICAgICB0aGlzLl9kZWJ1Z0RyYXdlci5tb3ZlVG8odGhpcy5fcG9seWdvbl9wb2ludHNbMF0ueCArIHRoaXMuX29mZnNldC54LCB0aGlzLl9wb2x5Z29uX3BvaW50c1swXS55ICsgdGhpcy5fb2Zmc2V0LnkpO1xyXG4gICAgICAgICAgICAgICAgZm9yIChsZXQgaSA9IDE7IGkgPCB0aGlzLl9wb2x5Z29uX3BvaW50cy5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuX2RlYnVnRHJhd2VyLmxpbmVUbyh0aGlzLl9wb2x5Z29uX3BvaW50c1tpXS54ICsgdGhpcy5fb2Zmc2V0LngsIHRoaXMuX3BvbHlnb25fcG9pbnRzW2ldLnkgKyB0aGlzLl9vZmZzZXQueSk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB0aGlzLl9kZWJ1Z0RyYXdlci5saW5lVG8odGhpcy5fcG9seWdvbl9wb2ludHNbMF0ueCArIHRoaXMuX29mZnNldC54LCB0aGlzLl9wb2x5Z29uX3BvaW50c1swXS55ICsgdGhpcy5fb2Zmc2V0LnkpO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5fZGVidWdEcmF3ZXIuc3Ryb2tlKCk7XHJcbiAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgLy/ku4XnlKjkuo7nn6nlvaJcclxuICAgIHB1YmxpYyB1cGRhdGVfc2l6ZSh3aWR0aDogbnVtYmVyLCBoZWlnaHQ6IG51bWJlcikge1xyXG4gICAgICAgIHRoaXMuX3NpemUud2lkdGggPSB3aWR0aDtcclxuICAgICAgICB0aGlzLndvcmxkX3JlY3Qud2lkdGggPSB3aWR0aDtcclxuICAgICAgICB0aGlzLndvcmxkX3JlY3QuaGFsZl93aWR0aCA9IHdpZHRoICogMC41O1xyXG4gICAgICAgIHRoaXMuX3NpemUuaGVpZ2h0ID0gaGVpZ2h0O1xyXG4gICAgICAgIHRoaXMud29ybGRfcmVjdC5oZWlnaHQgPSBoZWlnaHQ7XHJcbiAgICAgICAgdGhpcy53b3JsZF9yZWN0LmhhbGZfaGVpZ2h0ID0gaGVpZ2h0ICogMC41O1xyXG5cclxuICAgICAgICB0aGlzLmRyYXdfc2hhcGUoKTtcclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgaW5pdF9scV9jb2xsaWRlKCkge1xyXG5cclxuICAgICAgICB0aGlzLndvcmxkX3JlY3QgPSBuZXcgTFFSZWN0KDAsIDAsIHRoaXMuX3NpemUud2lkdGgsIHRoaXMuX3NpemUuaGVpZ2h0KTtcclxuICAgICAgICB0aGlzLmRyYXdfc2hhcGUoKTtcclxuICAgICAgICBjb25zdCBpbmZvID0gTFFDb2xsaWRlU3lzdGVtLmdldF9pbmZvX2J5X2lkKHRoaXMuY29sbGlkZV9ncm91cF9pZCk7XHJcbiAgICAgICAgdGhpcy5jb2xsaWRlX21hc2sgPSBpbmZvLm1hc2s7XHJcbiAgICAgICAgdGhpcy5jb2xsaWRlX2NhdGVnb3J5ID0gaW5mby5jYXRlZ29yeTtcclxuICAgICAgICB0aGlzLmNvbGxpZGVfaWQgPSBMUUNvbGxpZGUuaWRfbWFrZXIrKztcclxuXHJcbiAgICAgICAgdGhpcy51cGRhdGVDb2xsaXNpb25BcmVhKCk7XHJcbiAgICB9XHJcblxyXG4gICAgcHJpdmF0ZSB1cGRhdGVDb2xsaXNpb25BcmVhKCkge1xyXG4gICAgICAgIGlmKHRoaXMuX3NpemUud2lkdGg9PTAgfHwgdGhpcy5fc2l6ZS5oZWlnaHQ9PTAgfHwgTWFwQ29ucm9sZXIuX2luc3RhbmNlID09IHVuZGVmaW5lZCl7XHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYoTWFwQ29ucm9sZXIuX2luc3RhbmNlLm5vZGUuc2NhbGUpe1xyXG4gICAgICAgICAgICBsZXQgc2NhbGVYID0gTWFwQ29ucm9sZXIuX2luc3RhbmNlLm5vZGUuc2NhbGU7XHJcbiAgICAgICAgICAgIGxldCBzY2FsZVkgPSBNYXBDb25yb2xlci5faW5zdGFuY2Uubm9kZS5zY2FsZTtcclxuXHJcbiAgICAgICAgICAgIGlmIChzY2FsZVggPT09IDAgfHwgc2NhbGVYID09IHVuZGVmaW5lZCB8fCBzY2FsZVggPT0gbnVsbCB8fCBzY2FsZVggPT0gMSkge1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIHN3aXRjaCAodGhpcy5fY29sbGlkZV9zaGFwZSkge1xyXG4gICAgICAgICAgICAgICAgY2FzZSBMUUNvbGxpZGVTaGFwZS5DaXJjbGU6XHJcbiAgICAgICAgICAgICAgICAgICAgLy8g5ZyG5b2i56Kw5pKe5Yy65Z+f5Y2K5b6E5pu05pawXHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5fcmFkaXVzID0gdGhpcy5fcmFkaXVzICogTWF0aC5tYXgoc2NhbGVYLCBzY2FsZVkpO1xyXG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICAgICAgY2FzZSBMUUNvbGxpZGVTaGFwZS5SZWN0OlxyXG4gICAgICAgICAgICAgICAgICAgIC8vIOefqeW9oueisOaSnuWMuuWfn+WwuuWvuOabtOaWsFxyXG4gICAgICAgICAgICAgICAgICAgIC8vIGNvbnNvbGUubG9nKHRoaXMuZGF0YV9zdHJpbmcpO1xyXG4gICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLl9zaXplLndpZHRoICE9PSAxMCAmJiB0aGlzLmRhdGFfc3RyaW5nIT1cIi0xXCIpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgLy8gaWYodGhpcy5fc2l6ZS53aWR0aCA9PSAxMDUgfHwgdGhpcy5fc2l6ZS5oZWlnaHQgPT0gMTA1KXt9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLl9zaXplLndpZHRoID0gdGhpcy5fc2l6ZS53aWR0aCAqIHNjYWxlWDtcclxuICAgICAgICAgICAgICAgICAgICAgICAgLy8gIGNvbnNvbGUubG9nKFwi5pS+5aSn5YCN5pWwXCIsc2NhbGVYKTtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMuX3NpemUuaGVpZ2h0IT09IDEwICYmIHRoaXMuZGF0YV9zdHJpbmchPVwiLTFcIikge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBpZih0aGlzLl9zaXplLndpZHRoID09IDEwNSB8fCB0aGlzLl9zaXplLmhlaWdodCA9PSAxMDUpe31cclxuICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuX3NpemUuaGVpZ2h0ID0gdGhpcy5fc2l6ZS5oZWlnaHQgKiBzY2FsZVk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIGNvbnNvbGUubG9nKFwi5pS+5aSn5YCN5pWwXCIsc2NhbGVZKTtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgLy8gdGhpcy5fc2l6ZS53aWR0aCA9IHRoaXMuX3NpemUud2lkdGggKiBzY2FsZVg7XHJcbiAgICAgICAgICAgICAgICAgICAgLy8gdGhpcy5fc2l6ZS5oZWlnaHQgPSB0aGlzLl9zaXplLmhlaWdodCAqIHNjYWxlWTtcclxuICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy53b3JsZF9yZWN0KSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMud29ybGRfcmVjdC53aWR0aCA9IHRoaXMuX3NpemUud2lkdGg7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMud29ybGRfcmVjdC5oZWlnaHQgPSB0aGlzLl9zaXplLmhlaWdodDtcclxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy53b3JsZF9yZWN0LmhhbGZfd2lkdGggPSB0aGlzLl9zaXplLndpZHRoICogMC41O1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLndvcmxkX3JlY3QuaGFsZl9oZWlnaHQgPSB0aGlzLl9zaXplLmhlaWdodCAqIDAuNTtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgICAgICBjYXNlIExRQ29sbGlkZVNoYXBlLlBvbHlnb246XHJcbiAgICAgICAgICAgICAgICAgICAgLy8g5aSa6L655b2i56Kw5pKe54K55Z2Q5qCH5pu05pawXHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5fcG9seWdvbl9wb2ludHMgPSB0aGlzLl9wb2x5Z29uX3BvaW50cy5tYXAocG9pbnQgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gbmV3IFZlYzIocG9pbnQueCAqIHNjYWxlWCwgcG9pbnQueSAqIHNjYWxlWSk7XHJcbiAgICAgICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgIHRoaXMuZHJhd19zaGFwZSgpO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIGVuYWJsZV9scV9jb2xsaWRlKCkge1xyXG5cclxuICAgICAgICBpZiAodGhpcy5jb2xsaWRlX3N0YXR1cyA9PT0gTFFDb2xsaWRlU3RhdHVzLkxpdmUpIHtcclxuICAgICAgICAgICAgY29uc29sZS53YXJuKHRoaXMubm9kZS5uYW1lICsgJ+mHjeWkjea3u+WKoCcpO1xyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRoaXMuaXNfZW5hYmxlID0gdHJ1ZTtcclxuICAgICAgICB0aGlzLmNvbGxpZGVfc3RhdHVzID0gTFFDb2xsaWRlU3RhdHVzLkxpdmU7XHJcbiAgICAgICAgTFFDb2xsaWRlU3lzdGVtLmFkZF9jb2xsaWRlKHRoaXMpO1xyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyBkaXNhYmxlX2xxX2NvbGxpZGUoKSB7XHJcbiAgICAgICAgaWYgKHRoaXMuY29sbGlkZV9zdGF0dXMgIT09IExRQ29sbGlkZVN0YXR1cy5MaXZlKSB7XHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcbiAgICAgICAgdGhpcy5pc19lbmFibGUgPSBmYWxzZTtcclxuICAgICAgICB0aGlzLmNvbGxpZGVfc3RhdHVzID0gTFFDb2xsaWRlU3RhdHVzLklkbGU7XHJcbiAgICAgICAgTFFDb2xsaWRlU3lzdGVtLnJlbW92ZV9jb2xsaWRlKHRoaXMpO1xyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyB1cGRhdGVfbHFfY29sbGlkZSgpIHtcclxuXHJcbiAgICB9XHJcblxyXG4gICAgLy8gQHRzLWlnbm9yZVxyXG4gICAgLy8gcHVibGljIG9uX2NvbGxpZGUoY29sbGlkZTogTFFDb2xsaWRlKTogdm9pZCB7XHJcbiAgICAvLyAgICAgaWYoY29sbGlkZS5ub2RlLnBhcmVudC51dWlkID09IHRoaXMubm9kZS5wYXJlbnQudXVpZCl7XHJcbiAgICAvLyAgICAgICAgIHJldHVybjtcclxuICAgIC8vICAgICB9XHJcbiAgICAvLyAgICAgaWYgKExRQ29sbGlkZUNvbmZpZy5zd2l0Y2hfcHJpbnRfbG9nKSB7XHJcbiAgICAvLyAgICAgICAgIGlmKHRoaXMubm9kZS5wYXJlbnQuZ2V0Q29tcG9uZW50KFwiQmxvY2tcIikpe1xyXG4gICAgLy8gICAgICAgICAgICAgbGV0IGJsb2NrID0gdGhpcy5ub2RlLnBhcmVudC5nZXRDb21wb25lbnQoXCJCbG9ja1wiKTtcclxuICAgIC8vICAgICAgICAgICAgIGlmKGJsb2NrLmlzVG91Y2gpe1xyXG4gICAgLy8gICAgICAgICAgICAgICAgIGJsb2NrLmNoZWNrQ29sbGlzaW9uID0gdHJ1ZTtcclxuICAgIC8vICAgICAgICAgICAgICAgICAvLyBjb25zb2xlLmxvZyhcIueisOaSnlwiLHRoaXMubm9kZS5uYW1lKTtcclxuICAgIC8vICAgICAgICAgICAgICAgICBpZih0aGlzLm5vZGUubmFtZSA9PSBcInRvcFwiICl7XHJcbiAgICAvLyAgICAgICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKFwi56Kw5Yiw5LiK6L6557yYXCIpO1xyXG4gICAgLy8gICAgICAgICAgICAgICAgICAgICBibG9jay5tb3ZlVXAgPSBmYWxzZTtcclxuICAgIC8vICAgICAgICAgICAgICAgICAgICAgaWYoYmxvY2sudG91Y2hQb2ludFkgPiAodGhpcy5ub2RlLnBhcmVudC55K3RoaXMubm9kZS5oZWlnaHQpKXtcclxuICAgIC8vICAgICAgICAgICAgICAgICAgICAgICAgIGJsb2NrLm1vdmVZID0gMTtcclxuICAgIC8vICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgLy8gICAgICAgICAgICAgICAgIH1cclxuICAgIC8vICAgICAgICAgICAgICAgICBpZih0aGlzLm5vZGUubmFtZSA9PT0gXCJkb3duXCIpe1xyXG4gICAgLy8gICAgICAgICAgICAgICAgICAgICBibG9jay5tb3ZlRG93biA9IGZhbHNlO1xyXG4gICAgLy8gICAgICAgICAgICAgICAgICAgICBjb25zb2xlLmxvZyhcIueisOWIsOS4i+i+uee8mFwiKTtcclxuICAgIC8vICAgICAgICAgICAgICAgICAgICAgaWYoYmxvY2sudG91Y2hQb2ludFkgPCAodGhpcy5ub2RlLnBhcmVudC55ICkpe1xyXG4gICAgLy8gICAgICAgICAgICAgICAgICAgICAgICAgYmxvY2subW92ZVkgPSAtMTtcclxuICAgIC8vICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgLy8gICAgICAgICAgICAgICAgIH1cclxuICAgIC8vICAgICAgICAgICAgICAgICBpZih0aGlzLm5vZGUubmFtZSA9PT0gXCJsZWZ0XCIgKXtcclxuICAgIC8vICAgICAgICAgICAgICAgICAgICAgYmxvY2subW92ZUxlZnQgPSBmYWxzZTtcclxuICAgIC8vICAgICAgICAgICAgICAgICAgICAgY29uc29sZS5sb2coXCLnorDliLDlt6bovrnnvJhcIik7XHJcbiAgICAvLyAgICAgICAgICAgICAgICAgICAgIGlmKGJsb2NrLnRvdWNoUG9pbnRYIDwgKHRoaXMubm9kZS5wYXJlbnQueCAtIHRoaXMubm9kZS5wYXJlbnQud2lkdGgpKXtcclxuICAgIC8vICAgICAgICAgICAgICAgICAgICAgICAgIGJsb2NrLm1vdmVYID0gLTE7XHJcbiAgICAvLyAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgIC8vICAgICAgICAgICAgICAgICB9XHJcbiAgICAvLyAgICAgICAgICAgICAgICAgaWYodGhpcy5ub2RlLm5hbWUgPT09IFwicmlnaHRcIil7XHJcblxyXG4gICAgLy8gICAgICAgICAgICAgICAgICAgICBibG9jay5tb3ZlUmlnaHQgPSBmYWxzZTtcclxuICAgIC8vICAgICAgICAgICAgICAgICAgICAgY29uc29sZS5sb2coXCLnorDliLDlj7PovrnnvJhcIik7XHJcbiAgICAvLyAgICAgICAgICAgICAgICAgICAgIGlmKGJsb2NrLnRvdWNoUG9pbnRYID4gKHRoaXMubm9kZS5wYXJlbnQueCkpe1xyXG4gICAgLy8gICAgICAgICAgICAgICAgICAgICAgICAgYmxvY2subW92ZVggPSAxO1xyXG4gICAgLy8gICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAvLyAgICAgICAgICAgICAgICAgfVxyXG4gICAgLy8gICAgICAgICAgICAgfVxyXG4gICAgLy8gICAgICAgICB9XHJcbiAgICAgICAgIFxyXG4gICAgLy8gICAgIH1cclxuICAgIC8vIH1cclxuXHJcbiAgICAvL0B0cy1pZ25vcmVcclxuICAgIHB1YmxpYyBvbl9lbnRlcihjb2xsaWRlOiBMUUNvbGxpZGUpIHtcclxuICAgICAgICBpZih0aGlzLmRpc2FibGVDb2xsaWRlcihjb2xsaWRlKSl7XHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcbiAgICAgICAgLy8gaWYgKExRQ29sbGlkZUNvbmZpZy5zd2l0Y2hfcHJpbnRfbG9nKSB7XHJcbiAgICAgICAgLy8gICAgIGNvbnNvbGUubG9nKHRoaXMubm9kZS5uYW1lICsgJyBvbl9lbnRlcicpO1xyXG4gICAgICAgIC8vIH1cclxuICAgIH1cclxuXHJcbiAgICAvL0B0cy1pZ25vcmVcclxuICAgIHB1YmxpYyBvbl9leGl0KGNvbGxpZGU6IExRQ29sbGlkZSkge1xyXG4gICAgICAgIGlmKHRoaXMuZGlzYWJsZUNvbGxpZGVyKGNvbGxpZGUpKXtcclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAoTFFDb2xsaWRlQ29uZmlnLnN3aXRjaF9wcmludF9sb2cpIHtcclxuICAgICAgICAgICAgaWYodGhpcy5ub2RlLnBhcmVudC5nZXRDb21wb25lbnQoXCJCbG9ja1wiKSl7XHJcbiAgICAgICAgICAgICAgICBsZXQgYmxvY2sgPSB0aGlzLm5vZGUucGFyZW50LmdldENvbXBvbmVudChcIkJsb2NrXCIpO1xyXG4gICAgICAgICAgICAgICAgLy8gaWYoIWJsb2NrLmlzVG91Y2gpe1xyXG4gICAgICAgICAgICAgICAgLy8gICAgIHJldHVybjtcclxuICAgICAgICAgICAgICAgIC8vIH1cclxuICAgICAgICAgICAgICAgIGJsb2NrLmNoZWNrQ29sbGlzaW9uID0gZmFsc2U7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYodGhpcy5ub2RlLm5hbWUgPT0gXCJ0b3BcIiApe1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBibG9jay5tb3ZlVXAgPSB0cnVlO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICBpZih0aGlzLm5vZGUubmFtZSA9PT0gXCJkb3duXCIpe1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBibG9jay5tb3ZlRG93biA9IHRydWU7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIGlmKHRoaXMubm9kZS5uYW1lID09PSBcImxlZnRcIiApe1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBibG9jay5tb3ZlTGVmdCA9IHRydWU7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIGlmKHRoaXMubm9kZS5uYW1lID09PSBcInJpZ2h0XCIpe1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBibG9jay5tb3ZlUmlnaHQgPSB0cnVlO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgb25fY29sbGlkZShjb2xsaWRlOiBMUUNvbGxpZGUpOiB2b2lkIHtcclxuICAgICAgICBpZih0aGlzLmRpc2FibGVDb2xsaWRlcihjb2xsaWRlKSl7XHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKExRQ29sbGlkZUNvbmZpZy5zd2l0Y2hfcHJpbnRfbG9nKSB7XHJcbiAgICAgICAgICAgIGlmKHRoaXMubm9kZS5wYXJlbnQuZ2V0Q29tcG9uZW50KFwiQmxvY2tcIikpe1xyXG4gICAgICAgICAgICAgICAgbGV0IGJsb2NrID0gdGhpcy5ub2RlLnBhcmVudC5nZXRDb21wb25lbnQoXCJCbG9ja1wiKTtcclxuICAgICAgICAgICAgICAgIGxldCBqZyA9IGZhbHNlO1xyXG4gICAgICAgICAgICAgICAgaWYoYmxvY2suaXNUb3VjaCl7XHJcbiAgICAgICAgICAgICAgICAgICAgYmxvY2suY2hlY2tDb2xsaXNpb24gPSB0cnVlO1xyXG4gICAgICAgICAgICAgICAgICAgIC8vIGNvbnNvbGUubG9nKFwi56Kw5pKeXCIsdGhpcy5ub2RlLm5hbWUpO1xyXG4gICAgICAgICAgICAgICAgICAgIGlmKHRoaXMubm9kZS5uYW1lID09IFwidG9wXCIgKXtcclxuICAgICAgICAgICAgICAgICAgICAgICAgLy8gY29uc29sZS5sb2coY29sbGlkZS5ub2RlLnBhcmVudC5uYW1lKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgYmxvY2subW92ZVVwID0gZmFsc2U7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmKGJsb2NrLnRvdWNoUG9pbnRZID4gKHRoaXMubm9kZS5wYXJlbnQueSt0aGlzLm5vZGUucGFyZW50LmhlaWdodCkpe1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYmxvY2subW92ZVkgPSAxO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIGNvbnNvbGUubG9nKFwi56Kw5Yiw5LiK6L6557yYXCIpO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICBpZih0aGlzLm5vZGUubmFtZSA9PT0gXCJkb3duXCIpe1xyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgYmxvY2subW92ZURvd24gPSBmYWxzZTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgaWYoYmxvY2sudG91Y2hQb2ludFkgPCAodGhpcy5ub2RlLnBhcmVudC55ICkpe1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYmxvY2subW92ZVkgPSAtMTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBjb25zb2xlLmxvZyhcIueisOWIsOS4i+i+uee8mFwiKTtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgaWYodGhpcy5ub2RlLm5hbWUgPT09IFwibGVmdFwiICl7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGJsb2NrLm1vdmVMZWZ0ID0gZmFsc2U7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmKGJsb2NrLnRvdWNoUG9pbnRYIDwgKHRoaXMubm9kZS5wYXJlbnQueCAtIHRoaXMubm9kZS5wYXJlbnQud2lkdGgpKXtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJsb2NrLm1vdmVYID0gLTE7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgaWYodGhpcy5ub2RlLm5hbWUgPT09IFwicmlnaHRcIil7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGJsb2NrLm1vdmVSaWdodCA9IGZhbHNlO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBpZihibG9jay50b3VjaFBvaW50WCA+ICh0aGlzLm5vZGUucGFyZW50LngpKXtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJsb2NrLm1vdmVYID0gMTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgZGlzYWJsZUNvbGxpZGVyKGNvbGxpZGU6IExRQ29sbGlkZSl7XHJcbiAgICAgICAgbGV0IGpnID0gZmFsc2U7XHJcbiAgICAgICAgaWYoY29sbGlkZS5ub2RlICYmIHRoaXMubm9kZSl7XHJcbiAgICAgICAgICAgIGlmKGNvbGxpZGUubm9kZS5wYXJlbnQgJiYgdGhpcy5ub2RlLnBhcmVudCl7XHJcbiAgICAgICAgICAgICAgICBpZihjb2xsaWRlLm5vZGUucGFyZW50LnV1aWQgPT0gdGhpcy5ub2RlLnBhcmVudC51dWlkKXtcclxuICAgICAgICAgICAgICAgICAgICBqZyA9IHRydWU7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBpZih0aGlzLm5vZGUucGFyZW50LmdldENvbXBvbmVudChcIkJsb2NrXCIpKXtcclxuICAgICAgICAgICAgICAgICAgICBsZXQgYmxvY2sgPSB0aGlzLm5vZGUucGFyZW50LmdldENvbXBvbmVudChcIkJsb2NrXCIpO1xyXG4gICAgICAgICAgICAgICAgICAgIGlmKGJsb2NrLnR5cGUgPT0gMSB8fCBibG9jay50eXBlID09IDEwIHx8IGJsb2NrLnR5cGUgPT0gOSl7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmKGNvbGxpZGUubm9kZS5wYXJlbnQgPT0gYmxvY2suYmxvY2tfSW5mby5ub2RlKXtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGpnID0gdHJ1ZTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuXHJcblxyXG4gICAgICAgIHJldHVybiBqZztcclxuICAgIH1cclxufSJdfQ== -//------QC-SOURCE-SPLIT------ - - (function() { - var nodeEnv = typeof require !== 'undefined' && typeof process !== 'undefined'; - var __module = nodeEnv ? module : {exports:{}}; - var __filename = 'preview-scripts/assets/Script/lq_base/util/lq_base_util.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, 'cd21fuTZY5LOoiXtN66R7wx', 'lq_base_util'); -// Script/lq_base/util/lq_base_util.ts - -"use strict"; -Object.defineProperty(exports, "__esModule", { value: true }); -exports.LQBaseUtil = void 0; -var lq_platform_util_1 = require("./lq_platform_util"); -var lq_const_1 = require("../data/lq_const"); -var view = cc.view; -var LQBaseUtil = /** @class */ (function () { - function LQBaseUtil() { - } - // public static readonly unit_arr = ['K', 'M', 'B', 'T']; - LQBaseUtil.has_value = function (arr, v) { - var has = false; - for (var i = 0; i < arr.length; i++) { - if (arr[i] === v) { - has = true; - break; - } - } - return has; - }; - LQBaseUtil.get_value_by_duration = function (percent, timeline) { - if (timeline.length === 0) { - return 1; - } - var end_index = -1; - for (var i = 1; i < timeline.length; i++) { - if (timeline[i].x > percent) { - end_index = i; - break; - } - } - if (end_index === -1) { - return timeline[timeline.length - 1].y; - } - var start_index = end_index - 1; - return timeline[start_index].y + (timeline[end_index].y - timeline[start_index].y) * ((percent - timeline[start_index].x) / (timeline[end_index].x - timeline[start_index].x)); - }; - LQBaseUtil.number_to_counting = function (num) { - if (num < 1000) { - return num + ''; - } - else if (num < 1000000) { - return Math.floor(num / 1000) + 'K'; - } - else if (num < 1000000000) { - return Math.floor(num / 1000000) + 'M'; - } - else if (num < 1000000000000) { - return Math.floor(num / 1000000000) + 'B'; - } - else if (num < 1000000000000000) { - return Math.floor(num / 1000000000000) + 'T'; - } - return Math.floor(num / 1000000000000) + 'T'; - }; - LQBaseUtil.number_to_time = function (time) { - var t = Math.floor(time / (60 * 60)); - time = time - t * 60 * 60; - var hour = t.toString(); - var min = Math.floor(time / 60).toString(); - var sec = (time % 60).toString(); - if (hour.length === 1) { - hour = '0' + hour; - } - if (min.length === 1) { - min = '0' + min; - } - if (sec.length === 1) { - sec = '0' + sec; - } - return [hour, min, sec]; - }; - LQBaseUtil.set_normal_angle = function (angle) { - while (angle > 360) { - angle -= 360; - } - while (angle < 0) { - angle += 360; - } - return angle; - }; - LQBaseUtil.compare_version = function (v1, v2) { - var v1_arr = v1.split('.'); - var v2_arr = v2.split('.'); - var len = Math.max(v1_arr.length, v2_arr.length); - while (v1_arr.length < len) { - v1_arr.push('0'); - } - while (v2_arr.length < len) { - v2_arr.push('0'); - } - for (var i = 0; i < len; i++) { - var num1 = parseInt(v1_arr[i]); - var num2 = parseInt(v2_arr[i]); - if (num1 > num2) { - return 1; - } - else if (num1 < num2) { - return -1; - } - } - return 0; - }; - LQBaseUtil.is_today = function (date) { - var d1 = new Date(); - var d2; - if (date && date !== '') { - d2 = new Date(date); - } - else { - d2 = new Date(); - d2.setDate(d2.getDate() - 1); - } - return d1.getFullYear() === d2.getFullYear() && d1.getMonth() === d2.getMonth() && d1.getDate() === d2.getDate(); - }; - LQBaseUtil.is_safe_area = function () { - var cb = function (width, height) { - return (width === 2280 && height === 1080) || (width === 1792 && height === 828) || (width === 2436 && height === 1125) || (width === 2688 && height === 1242); - }; - switch (lq_platform_util_1.LQPlatformUtil.get_platform()) { - case lq_const_1.LQPlatformType.baidu: - var sys_info_swan = swan.getSystemInfoSync(); - return cb(sys_info_swan.pixelRatio * sys_info_swan.screenWidth, sys_info_swan.pixelRatio * sys_info_swan.screenHeight); - case lq_const_1.LQPlatformType.qq: - var sys_info_qq = qq.getSystemInfoSync(); - return cb(sys_info_qq.pixelRatio * sys_info_qq.screenWidth, sys_info_qq.pixelRatio * sys_info_qq.screenHeight); - case lq_const_1.LQPlatformType.tt: - var sys_info_tt = tt.getSystemInfoSync(); - return cb(sys_info_tt.pixelRatio * sys_info_tt.screenWidth, sys_info_tt.pixelRatio * sys_info_tt.screenHeight); - case lq_const_1.LQPlatformType.oppo: - case lq_const_1.LQPlatformType.vivo: - var sys_info_vivo = qg.getSystemInfoSync(); - return cb(sys_info_vivo.pixelRatio * sys_info_vivo.screenWidth, sys_info_vivo.pixelRatio * sys_info_vivo.screenHeight); - case lq_const_1.LQPlatformType.wx: - var sys_info_wx = wx.getSystemInfoSync(); - return cb(sys_info_wx.pixelRatio * sys_info_wx.screenWidth, sys_info_wx.pixelRatio * sys_info_wx.screenHeight); - case lq_const_1.LQPlatformType.android: - break; - case lq_const_1.LQPlatformType.ios: - var size = view.getFrameSize(); - return cb(size.width, size.height); - } - return false; - }; - LQBaseUtil.deep_clone = function (obj) { - if (typeof obj !== 'object') { - return obj; - } - var new_obj = (obj instanceof Array ? [] : {}); - for (var key in obj) { - if (typeof obj[key] === 'object') { - new_obj[key] = this.deep_clone(obj[key]); - } - else { - new_obj[key] = obj[key]; - } - } - return new_obj; - }; - return LQBaseUtil; -}()); -exports.LQBaseUtil = LQBaseUtil; - -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,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImFzc2V0c1xcU2NyaXB0XFxscV9iYXNlXFx1dGlsXFxscV9iYXNlX3V0aWwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsdURBQWtEO0FBQ2xELDZDQUFnRDtBQUNoRCxJQUFPLElBQUksR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDO0FBR3RCO0lBQUE7SUE0SkEsQ0FBQztJQTNKRywwREFBMEQ7SUFFNUMsb0JBQVMsR0FBdkIsVUFBMkIsR0FBUSxFQUFFLENBQUk7UUFDckMsSUFBSSxHQUFHLEdBQUcsS0FBSyxDQUFDO1FBQ2hCLEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxHQUFHLENBQUMsTUFBTSxFQUFFLENBQUMsRUFBRSxFQUFFO1lBQ2pDLElBQUksR0FBRyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsRUFBRTtnQkFDZCxHQUFHLEdBQUcsSUFBSSxDQUFDO2dCQUNYLE1BQU07YUFDVDtTQUNKO1FBQ0QsT0FBTyxHQUFHLENBQUM7SUFDZixDQUFDO0lBRWEsZ0NBQXFCLEdBQW5DLFVBQW9DLE9BQWUsRUFBRSxRQUFnQjtRQUNqRSxJQUFJLFFBQVEsQ0FBQyxNQUFNLEtBQUssQ0FBQyxFQUFFO1lBQ3ZCLE9BQU8sQ0FBQyxDQUFDO1NBQ1o7UUFDRCxJQUFJLFNBQVMsR0FBRyxDQUFDLENBQUMsQ0FBQztRQUNuQixLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsUUFBUSxDQUFDLE1BQU0sRUFBRSxDQUFDLEVBQUUsRUFBRTtZQUN0QyxJQUFJLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsT0FBTyxFQUFFO2dCQUN6QixTQUFTLEdBQUcsQ0FBQyxDQUFDO2dCQUNkLE1BQU07YUFDVDtTQUNKO1FBQ0QsSUFBSSxTQUFTLEtBQUssQ0FBQyxDQUFDLEVBQUU7WUFDbEIsT0FBTyxRQUFRLENBQUMsUUFBUSxDQUFDLE1BQU0sR0FBRyxDQUFDLENB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R0FBeEIsVUFBeUIsR0FBUTtRQUM3QixJQUFJLE9BQU8sR0FBRyxLQUFLLFFBQVEsRUFBRTtZQUN6QixPQUFPLEdBQUcsQ0FBQztTQUNkO1FBQ0QsSUFBSSxPQUFPLEdBQUcsQ0FBQyxHQUFHLFlBQVksS0FBSyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBUSxDQUFDO1FBQ3RELEtBQUssSUFBSSxHQUFHLElBQUksR0FBRyxFQUFFO1lBQ2pCLElBQUksT0FBTyxHQUFHLENBQUMsR0FBRyxDQUFDLEtBQUssUUFBUSxFQUFFO2dCQUM5QixPQUFPLENBQUMsR0FBRyxDQUFDLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQzthQUM1QztpQkFBTTtnQkFDSCxPQUFPLENBQUMsR0FBRyxDQUFDLEdBQUcsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDO2FBQzNCO1NBQ0o7UUFDRCxPQUFPLE9BQU8sQ0FBQztJQUNuQixDQUFDO0lBQ0wsaUJBQUM7QUFBRCxDQTVKQSxBQTRKQyxJQUFBO0FBNUpZLGdDQUFVIiwiZmlsZSI6IiIsInNvdXJjZVJvb3QiOiIvIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtMUVBsYXRmb3JtVXRpbH0gZnJvbSBcIi4vbHFfcGxhdGZvcm1fdXRpbFwiO1xyXG5pbXBvcnQge0xRUGxhdGZvcm1UeXBlfSBmcm9tIFwiLi4vZGF0YS9scV9jb25zdFwiO1xyXG5pbXBvcnQgdmlldyA9IGNjLnZpZXc7XHJcbmltcG9ydCBWZWMyID0gY2MuVmVjMjtcclxuXHJcbmV4cG9ydCBjbGFzcyBMUUJhc2VVdGlsIHtcclxuICAgIC8vIHB1YmxpYyBzdGF0aWMgcmVhZG9ubHkgdW5pdF9hcnIgPSBbJ0snLCAnTScsICdCJywgJ1QnXTtcclxuXHJcbiAgICBwdWJsaWMgc3RhdGljIGhhc192YWx1ZTxUPihhcnI6IFRbXSwgdjogVCk6IGJvb2xlYW4ge1xyXG4gICAgICAgIGxldCBoYXMgPSBmYWxzZTtcclxuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGFyci5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgICAgICBpZiAoYXJyW2ldID09PSB2KSB7XHJcbiAgICAgICAgICAgICAgICBoYXMgPSB0cnVlO1xyXG4gICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIGhhcztcclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgc3RhdGljIGdldF92YWx1ZV9ieV9kdXJhdGlvbihwZXJjZW50OiBudW1iZXIsIHRpbWVsaW5lOiBWZWMyW10pOiBudW1iZXIge1xyXG4gICAgICAgIGlmICh0aW1lbGluZS5sZW5ndGggPT09IDApIHtcclxuICAgICAgICAgICAgcmV0dXJuIDE7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGxldCBlbmRfaW5kZXggPSAtMTtcclxuICAgICAgICBmb3IgKGxldCBpID0gMTsgaSA8IHRpbWVsaW5lLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgICAgIGlmICh0aW1lbGluZVtpXS54ID4gcGVyY2VudCkge1xyXG4gICAgICAgICAgICAgICAgZW5kX2luZGV4ID0gaTtcclxuICAgICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmIChlbmRfaW5kZXggPT09IC0xKSB7XHJcbiAgICAgICAgICAgIHJldHVybiB0aW1lbGluZVt0aW1lbGluZS5sZW5ndGggLSAxXS55O1xyXG4gICAgICAgIH1cclxuICAgICAgICBjb25zdCBzdGFydF9pbmRleCA9IGVuZF9pbmRleCAtIDE7XHJcbiAgICAgICAgcmV0dXJuIHRpbWVsaW5lW3N0YXJ0X2luZGV4XS55ICsgKHRpbWVsaW5lW2VuZF9pbmRleF0ueSAtIHRpbWVsaW5lW3N0YXJ0X2luZGV4XS55KSAqICgocGVyY2VudCAtIHRpbWVsaW5lW3N0YXJ0X2luZGV4XS54KSAvICh0aW1lbGluZVtlbmRfaW5kZXhdLnggLSB0aW1lbGluZVtzdGFydF9pbmRleF0ueCkpO1xyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyBzdGF0aWMgbnVtYmVyX3RvX2NvdW50aW5nKG51bTogbnVtYmVyKTogc3RyaW5nIHtcclxuICAgICAgICBpZiAobnVtIDwgMTAwMCkge1xyXG4gICAgICAgICAgICByZXR1cm4gbnVtICsgJyc7XHJcbiAgICAgICAgfSBlbHNlIGlmIChudW0gPCAxMDAwMDAwKSB7XHJcbiAgICAgICAgICAgIHJldHVybiBNYXRoLmZsb29yKG51bSAvIDEwMDApICsgJ0snO1xyXG4gICAgICAgIH0gZWxzZSBpZiAobnVtIDwgMTAwMDAwMDAwMCkge1xyXG4gICAgICAgICAgICByZXR1cm4gTWF0aC5mbG9vcihudW0gLyAxMDAwMDAwKSArICdNJztcclxuICAgICAgICB9IGVsc2UgaWYgKG51bSA8IDEwMDAwMDAwMDAwMDApIHtcclxuICAgICAgICAgICAgcmV0dXJuIE1hdGguZmxvb3IobnVtIC8gMTAwMDAwMDAwMCkgKyAnQic7XHJcbiAgICAgICAgfSBlbHNlIGlmIChudW0gPCAxMDAwMDAwMDAwMDAwMDAwKSB7XHJcbiAgICAgICAgICAgIHJldHVybiBNYXRoLmZsb29yKG51bSAvIDEwMDAwMDAwMDAwMDApICsgJ1QnO1xyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gTWF0aC5mbG9vcihudW0gLyAxMDAwMDAwMDAwMDAwKSArICdUJztcclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgc3RhdGljIG51bWJlcl90b190aW1lKHRpbWU6IG51bWJlcik6IFtzdHJpbmcsIHN0cmluZywgc3RyaW5nXSB7XHJcbiAgICAgICAgY29uc3QgdCA9IE1hdGguZmxvb3IodGltZSAvICg2MCAqIDYwKSk7XHJcbiAgICAgICAgdGltZSA9IHRpbWUgLSB0ICogNjAgKiA2MDtcclxuICAgICAgICBsZXQgaG91ciA9IHQudG9TdHJpbmcoKTtcclxuICAgICAgICBsZXQgbWluID0gTWF0aC5mbG9vcih0aW1lIC8gNjApLnRvU3RyaW5nKCk7XHJcbiAgICAgICAgbGV0IHNlYyA9ICh0aW1lICUgNjApLnRvU3RyaW5nKCk7XHJcblxyXG4gICAgICAgIGlmIChob3VyLmxlbmd0aCA9PT0gMSkge1xyXG4gICAgICAgICAgICBob3VyID0gJzAnICsgaG91cjtcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKG1pbi5sZW5ndGggPT09IDEpIHtcclxuICAgICAgICAgICAgbWluID0gJzAnICsgbWluO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAoc2VjLmxlbmd0aCA9PT0gMSkge1xyXG4gICAgICAgICAgICBzZWMgPSAnMCcgKyBzZWM7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiBbaG91ciwgbWluLCBzZWNdO1xyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyBzdGF0aWMgc2V0X25vcm1hbF9hbmdsZShhbmdsZTogbnVtYmVyKSB7XHJcbiAgICAgICAgd2hpbGUgKGFuZ2xlID4gMzYwKSB7XHJcbiAgICAgICAgICAgIGFuZ2xlIC09IDM2MDtcclxuICAgICAgICB9XHJcbiAgICAgICAgd2hpbGUgKGFuZ2xlIDwgMCkge1xyXG4gICAgICAgICAgICBhbmdsZSArPSAzNjA7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiBhbmdsZTtcclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgc3RhdGljIGNvbXBhcmVfdmVyc2lvbih2MTogc3RyaW5nLCB2Mjogc3RyaW5nKTogbnVtYmVyIHtcclxuICAgICAgICBsZXQgdjFfYXJyID0gdjEuc3BsaXQoJy4nKTtcclxuICAgICAgICBsZXQgdjJfYXJyID0gdjIuc3BsaXQoJy4nKTtcclxuICAgICAgICBjb25zdCBsZW4gPSBNYXRoLm1heCh2MV9hcnIubGVuZ3RoLCB2Ml9hcnIubGVuZ3RoKTtcclxuXHJcbiAgICAgICAgd2hpbGUgKHYxX2Fyci5sZW5ndGggPCBsZW4pIHtcclxuICAgICAgICAgICAgdjFfYXJyLnB1c2goJzAnKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgd2hpbGUgKHYyX2Fyci5sZW5ndGggPCBsZW4pIHtcclxuICAgICAgICAgICAgdjJfYXJyLnB1c2goJzAnKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBsZW47IGkrKykge1xyXG4gICAgICAgICAgICBjb25zdCBudW0xID0gcGFyc2VJbnQodjFfYXJyW2ldKTtcclxuICAgICAgICAgICAgY29uc3QgbnVtMiA9IHBhcnNlSW50KHYyX2FycltpXSk7XHJcblxyXG4gICAgICAgICAgICBpZiAobnVtMSA+IG51bTIpIHtcclxuICAgICAgICAgICAgICAgIHJldHVybiAxO1xyXG4gICAgICAgICAgICB9IGVsc2UgaWYgKG51bTEgPCBudW0yKSB7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gLTE7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIDA7XHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIHN0YXRpYyBpc190b2RheShkYXRlOiBzdHJpbmcpOiBib29sZWFuIHtcclxuICAgICAgICBjb25zdCBkMSA9IG5ldyBEYXRlKCk7XHJcbiAgICAgICAgbGV0IGQyO1xyXG4gICAgICAgIGlmIChkYXRlICYmIGRhdGUgIT09ICcnKSB7XHJcbiAgICAgICAgICAgIGQyID0gbmV3IERhdGUoZGF0ZSk7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgZDIgPSBuZXcgRGF0ZSgpO1xyXG4gICAgICAgICAgICBkMi5zZXREYXRlKGQyLmdldERhdGUoKSAtIDEpO1xyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gZDEuZ2V0RnVsbFllYXIoKSA9PT0gZDIuZ2V0RnVsbFllYXIoKSAmJiBkMS5nZXRNb250aCgpID09PSBkMi5nZXRNb250aCgpICYmIGQxLmdldERhdGUoKSA9PT0gZDIuZ2V0RGF0ZSgpO1xyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyBzdGF0aWMgaXNfc2FmZV9hcmVhKCk6IGJvb2xlYW4ge1xyXG4gICAgICAgIGNvbnN0IGNiID0gKHdpZHRoOiBudW1iZXIsIGhlaWdodDogbnVtYmVyKSA9PiB7XHJcbiAgICAgICAgICAgIHJldHVybiAod2lkdGggPT09IDIyODAgJiYgaGVpZ2h0ID09PSAxMDgwKSB8fCAod2lkdGggPT09IDE3OTIgJiYgaGVpZ2h0ID09PSA4MjgpIHx8ICh3aWR0aCA9PT0gMjQzNiAmJiBoZWlnaHQgPT09IDExMjUpIHx8ICh3aWR0aCA9PT0gMjY4OCAmJiBoZWlnaHQgPT09IDEyNDIpO1xyXG4gICAgICAgIH07XHJcbiAgICAgICAgc3dpdGNoIChMUVBsYXRmb3JtVXRpbC5nZXRfcGxhdGZvcm0oKSkge1xyXG4gICAgICAgICAgICBjYXNlIExRUGxhdGZvcm1UeXBlLmJhaWR1OlxyXG4gICAgICAgICAgICAgICAgY29uc3Qgc3lzX2luZm9fc3dhbiA9IHN3YW4uZ2V0U3lzdGVtSW5mb1N5bmMoKTtcclxuICAgICAgICAgICAgICAgIHJldHVybiBjYihzeXNfaW5mb19zd2FuLnBpeGVsUmF0aW8gKiBzeXNfaW5mb19zd2FuLnNjcmVlbldpZHRoLCBzeXNfaW5mb19zd2FuLnBpeGVsUmF0aW8gKiBzeXNfaW5mb19zd2FuLnNjcmVlbkhlaWdodCk7XHJcbiAgICAgICAgICAgIGNhc2UgTFFQbGF0Zm9ybVR5cGUucXE6XHJcbiAgICAgICAgICAgICAgICBjb25zdCBzeXNfaW5mb19xcSA9IHFxLmdldFN5c3RlbUluZm9TeW5jKCk7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gY2Ioc3lzX2luZm9fcXEucGl4ZWxSYXRpbyAqIHN5c19pbmZvX3FxLnNjcmVlbldpZHRoLCBzeXNfaW5mb19xcS5waXhlbFJhdGlvICogc3lzX2luZm9fcXEuc2NyZWVuSGVpZ2h0KTtcclxuICAgICAgICAgICAgY2FzZSBMUVBsYXRmb3JtVHlwZS50dDpcclxuICAgICAgICAgICAgICAgIGNvbnN0IHN5c19pbmZvX3R0ID0gdHQuZ2V0U3lzdGVtSW5mb1N5bmMoKTtcclxuICAgICAgICAgICAgICAgIHJldHVybiBjYihzeXNfaW5mb190dC5waXhlbFJhdGlvICogc3lzX2luZm9fdHQuc2NyZWVuV2lkdGgsIHN5c19pbmZvX3R0LnBpeGVsUmF0aW8gKiBzeXNfaW5mb190dC5zY3JlZW5IZWlnaHQpO1xyXG4gICAgICAgICAgICBjYXNlIExRUGxhdGZvcm1UeXBlLm9wcG86XHJcbiAgICAgICAgICAgIGNhc2UgTFFQbGF0Zm9ybVR5cGUudml2bzpcclxuICAgICAgICAgICAgICAgIGNvbnN0IHN5c19pbmZvX3Zpdm8gPSBxZy5nZXRTeXN0ZW1JbmZvU3luYygpO1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIGNiKHN5c19pbmZvX3Zpdm8ucGl4ZWxSYXRpbyAqIHN5c19pbmZvX3Zpdm8uc2NyZWVuV2lkdGgsIHN5c19pbmZvX3Zpdm8ucGl4ZWxSYXRpbyAqIHN5c19pbmZvX3Zpdm8uc2NyZWVuSGVpZ2h0KTtcclxuICAgICAgICAgICAgY2FzZSBMUVBsYXRmb3JtVHlwZS53eDpcclxuICAgICAgICAgICAgICAgIGNvbnN0IHN5c19pbmZvX3d4ID0gd3guZ2V0U3lzdGVtSW5mb1N5bmMoKTtcclxuICAgICAgICAgICAgICAgIHJldHVybiBjYihzeXNfaW5mb193eC5waXhlbFJhdGlvICogc3lzX2luZm9fd3guc2NyZWVuV2lkdGgsIHN5c19pbmZvX3d4LnBpeGVsUmF0aW8gKiBzeXNfaW5mb193eC5zY3JlZW5IZWlnaHQpO1xyXG4gICAgICAgICAgICBjYXNlIExRUGxhdGZvcm1UeXBlLmFuZHJvaWQ6XHJcbiAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgY2FzZSBMUVBsYXRmb3JtVHlwZS5pb3M6XHJcbiAgICAgICAgICAgICAgICBsZXQgc2l6ZSA9IHZpZXcuZ2V0RnJhbWVTaXplKCk7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gY2Ioc2l6ZS53aWR0aCwgc2l6ZS5oZWlnaHQpO1xyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIHN0YXRpYyBkZWVwX2Nsb25lKG9iajogYW55KSB7XHJcbiAgICAgICAgaWYgKHR5cGVvZiBvYmogIT09ICdvYmplY3QnKSB7XHJcbiAgICAgICAgICAgIHJldHVybiBvYmo7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGxldCBuZXdfb2JqID0gKG9iaiBpbnN0YW5jZW9mIEFycmF5ID8gW10gOiB7fSkgYXMgYW55O1xyXG4gICAgICAgIGZvciAobGV0IGtleSBpbiBvYmopIHtcclxuICAgICAgICAgICAgaWYgKHR5cGVvZiBvYmpba2V5XSA9PT0gJ29iamVjdCcpIHtcclxuICAgICAgICAgICAgICAgIG5ld19vYmpba2V5XSA9IHRoaXMuZGVlcF9jbG9uZShvYmpba2V5XSk7XHJcbiAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICBuZXdfb2JqW2tleV0gPSBvYmpba2V5XTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gbmV3X29iajtcclxuICAgIH1cclxufSJdfQ== -//------QC-SOURCE-SPLIT------ - - (function() { - var nodeEnv = typeof require !== 'undefined' && typeof process !== 'undefined'; - var __module = nodeEnv ? module : {exports:{}}; -======= ->>>>>>> 0a31a7a5abc2c505bf743aa596e1c765a0405152 - var __filename = 'preview-scripts/assets/Script/Block.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, 'c58deN2u1NGZL8nJwvnu1PR', 'Block'); -// Script/Block.ts - -"use strict"; -var __extends = (this && this.__extends) || (function () { - var extendStatics = function (d, b) { - extendStatics = Object.setPrototypeOf || - ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) || - function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; }; - return extendStatics(d, b); - }; - return function (d, b) { - extendStatics(d, b); - function __() { this.constructor = d; } - d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); - }; -})(); -var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) { - var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; - if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc); - else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; - return c > 3 && r && Object.defineProperty(target, key, r), r; -}; -Object.defineProperty(exports, "__esModule", { value: true }); -exports.PathType = exports.BlockColor = exports.BlockType = void 0; -var lq_collide_system_1 = require("./lq_collide_system/lq_collide_system"); -var Map_1 = require("./Map"); -var _a = cc._decorator, ccclass = _a.ccclass, property = _a.property; -var BlockType; -(function (BlockType) { - /*普通地块 */ - BlockType[BlockType["\u666E\u901A\u5757"] = 0] = "\u666E\u901A\u5757"; - /*起点地块 */ - BlockType[BlockType["\u53E0\u52A0\u5757\u4E0B"] = 1] = "\u53E0\u52A0\u5757\u4E0B"; - /*湿地 */ - BlockType[BlockType["\u94A5\u5319\u5757"] = 2] = "\u94A5\u5319\u5757"; - /*山峰 */ - BlockType[BlockType["\u4E0A\u9501\u5757"] = 3] = "\u4E0A\u9501\u5757"; - /*终点地块 */ - BlockType[BlockType["\u51BB\u7ED3\u5757"] = 4] = "\u51BB\u7ED3\u5757"; - /*息壤 */ - BlockType[BlockType["\u661F\u661F\u5757"] = 5] = "\u661F\u661F\u5757"; - /*加固 */ - BlockType[BlockType["\u70B8\u5F39\u5757"] = 6] = "\u70B8\u5F39\u5757"; - /*加固 */ - BlockType[BlockType["\u6C34\u5E73\u5757"] = 7] = "\u6C34\u5E73\u5757"; - /*加固 */ - BlockType[BlockType["\u5782\u76F4\u5757"] = 8] = "\u5782\u76F4\u5757"; - /*加固 */ - BlockType[BlockType["\u7C98\u5408\u5757"] = 9] = "\u7C98\u5408\u5757"; - /*加固 */ - BlockType[BlockType["\u53E0\u52A0\u5757\u4E0A"] = 10] = "\u53E0\u52A0\u5757\u4E0A"; -})(BlockType = exports.BlockType || (exports.BlockType = {})); -var BlockColor; -(function (BlockColor) { - /*起点地块 */ - BlockColor[BlockColor["\u7D2B\u8272"] = 0] = "\u7D2B\u8272"; - /*湿地 */ - BlockColor[BlockColor["\u9EC4\u8272"] = 1] = "\u9EC4\u8272"; - /*山峰 */ - BlockColor[BlockColor["\u7EFF\u8272"] = 2] = "\u7EFF\u8272"; - /*终点地块 */ - BlockColor[BlockColor["\u84DD\u8272"] = 3] = "\u84DD\u8272"; - /*息壤 */ - BlockColor[BlockColor["\u7C89\u8272"] = 4] = "\u7C89\u8272"; - /*加固 */ - BlockColor[BlockColor["\u6A58\u9EC4\u8272"] = 5] = "\u6A58\u9EC4\u8272"; - /*加固 */ - BlockColor[BlockColor["\u9752\u8272"] = 6] = "\u9752\u8272"; - /*加固 */ - BlockColor[BlockColor["\u767D\u8272"] = 7] = "\u767D\u8272"; - /*加固 */ - BlockColor[BlockColor["\u7EA2\u8272"] = 8] = "\u7EA2\u8272"; - /*加固 */ - BlockColor[BlockColor["\u7070\u8272"] = 9] = "\u7070\u8272"; -})(BlockColor = exports.BlockColor || (exports.BlockColor = {})); -var PathType; -(function (PathType) { - PathType["err"] = "err"; - PathType["up"] = "up"; - PathType["down"] = "down"; - PathType["left"] = "left"; - PathType["right"] = "right"; - PathType["up_left"] = "up_left"; - PathType["up_right"] = "up_right"; - PathType["down_left"] = "down_left"; - PathType["down_right"] = "down_right"; - PathType["left_up"] = "left_up"; - PathType["left_down"] = "left_down"; - PathType["right_up"] = "right_up"; - PathType["right_down"] = "right_down"; -})(PathType = exports.PathType || (exports.PathType = {})); -var Block = /** @class */ (function (_super) { - __extends(Block, _super); - function Block() { - var _this = _super !== null && _super.apply(this, arguments) || this; - // 新增缓存变量 - _this.moveInterval = 0; // 约 60 FPS - _this.lastMoveTime = 0; // 上下两个值来调节跟手,一个是时间轴,一个是距离轴 - _this.maxSpeed = 300; // 最大移动距离 - // private otherCollider: cc.Collider = null; - // @property({ - // tooltip: '碰撞形状,None就是无敌,不参与碰撞', - // type: cc.Enum(BlockType), - // // default: BlockType.Nomal, - // displayName: '碰撞形状' - // }) - _this.type = BlockType.普通块; - _this.color = BlockColor.紫色; - _this.heng = 1; - _this.shu = 1; - _this.ice_SpriteFrame = null; - // LIFE-CYCLE CALLBACKS: - // @property(cc.SpriteAtlas) - // UI: cc.SpriteAtlas = null; - _this.initialTouchOffset = null; - _this.offsetTolerance = 100; // 偏移容忍度; - _this.touchPoint = null; //触摸点 - _this.isTouch = false; //是否触摸 - _this.posX = 0; //地图块的X坐标 - _this.posY = 0; //地图块的Y坐标 - _this.moveLeft = true; //是否可以左移; - _this.moveRight = true; //是否可以右移; - _this.moveUp = true; //是否可以上移; - _this.moveDown = true; //是否可以下移; - _this.moveCorner = 0; //是否碰撞角落 - _this.moveY = 0; //是否可以上下移动; - _this.moveX = 0; //是否可以左右移动; - _this.touchPointX = 0; //触摸点X坐标; - _this.touchPointY = 0; //触摸点Y坐标; - _this.blockId = 0; //方块ID; - _this.level = 0; //叠加方块层数; - _this.pz = false; - _this.over = false; //方块是否失效已消失 - _this.touchDelta = cc.v2(0, 0); - _this.checkCollision = false; - return _this; - } - Block.prototype.onLoad = function () { - this.pz = false; - this.stacking = cc.v2(0, 0); - this.adhesive = cc.v2(0, 0); - this.adhesiveNode = []; - this.collider = this.node.getComponent(cc.PolygonCollider); - this.over = false; - this.checkCollision = false; - }; - Block.prototype.start = function () { - }; - Block.prototype.jsonDeepClone = function (obj) { - return JSON.parse(JSON.stringify(obj)); - }; - //createAd 为是否创建粘合快图片 - Block.prototype.init = function (block_Info, posX, posY, node, createAd) { - var _this = this; - this.block_Info = this.jsonDeepClone(block_Info); - if (node) - this.block_Info.node = node; - this.type = block_Info.type; - this.color = block_Info.color; - this.blockId = block_Info.id; - // if(posX&&posY){ - // this.posX = posX; - // this.posY = posY; - // } - // console.log("方块层级",this.node.zIndex); - this.initColor(); - this.initType(); - this.initBlocks(); - if (this.type != BlockType.叠加块上) { - this.node.on(cc.Node.EventType.TOUCH_START, this.touchStart, this); - this.node.on(cc.Node.EventType.TOUCH_MOVE, this.touchMove, this); - this.node.on(cc.Node.EventType.TOUCH_CANCEL, this.touchEnd, this); - this.node.on(cc.Node.EventType.TOUCH_END, this.touchEnd, this); - this.node['_touchListener'].setSwallowTouches(false); - setTimeout(function () { - if (_this.type == BlockType.粘合块) { - // 计算位置偏移 - var posOffset_1 = cc.v2(_this.node.x - _this.block_Info.node.x, _this.node.y - _this.block_Info.node.y); - if (createAd) { - if (_this.node.zIndex >= _this.block_Info.node.zIndex) - _this.createAdhesive(); - else - _this.block_Info.node.getComponent("Block").createAdhesive(); - } - var targetNames_1 = ['top', 'down', 'left', 'right']; - _this.block_Info.node.children.forEach(function (child) { - if (child instanceof cc.Node && targetNames_1.includes(child.name) && child.getComponent("lq_collide").data_string != "-1") { - var clonedChild = cc.instantiate(child); - clonedChild.getComponent("lq_collide").data_string = "-1"; - clonedChild.parent = _this.node; - // 获取子节点相对于父节点的位置 - var relativePos = child.getPosition(); - // 调整子节点位置以保证相对位置不变 - clonedChild.setPosition(relativePos.x - posOffset_1.x, relativePos.y - posOffset_1.y); - } - }); - _this.adhesive = posOffset_1; - } - }, 100); - var mapInfo = Map_1.default._instance.mapInfo; - for (var i = 0; i < mapInfo.length; i++) { - var blockRect = mapInfo[i].getBoundingBox(); - // 使用 cc.Intersection.pointInRect 方法判断点是否在矩形范围内 - var point = cc.v2(this.node.position.x - 5, this.node.position.y + 10); - if (blockRect.contains(point)) { - this.posX = mapInfo[i].getComponent("MapBlock").posX; - this.posY = mapInfo[i].getComponent("MapBlock").posY; - this.setMapBlock(); - this.level = 50 + this.posX - this.posY * 3; - this.node.zIndex = this.level; - this.node.x = mapInfo[i].x + 65; - this.node.y = mapInfo[i].y - 60; - i = 10000; - this.hit = new cc.Node(); - this.hit.addComponent(cc.Sprite); - this.hit.parent = this.node; - var name = "xz_" + this.block_Info.block; - this.hit.getComponent(cc.Sprite).spriteFrame = this.ice_SpriteFrame._spriteFrames[name]; - this.hit.setAnchorPoint(this.node.anchorX, this.node.anchorY); - this.hit.setPosition(13, -11); - if (this.hit.anchorX == 0.5) - this.hit.setPosition(0, -11); - else if (this.hit.anchorX == 0.33) - this.hit.setPosition(-13, -11); - else if (this.hit.anchorX == 0.66) - this.hit.setPosition(2, -9); - // this.hit.opacity = 0; - this.hit.active = false; - break; - } - } - } - }; - //初始化方块类型 - Block.prototype.initType = function () { - var _a; - var posConfig = cc.fx.GameConfig.PROP_INFO[this.block_Info.block]; - switch (this.type) { - case BlockType.炸弹块: - var boom = cc.instantiate(Map_1.default._instance.Block_Prop[this.type]); - boom.parent = this.node; - boom.setPosition(posConfig.pos1.x, posConfig.pos1.y); - if ((_a = this.block_Info) === null || _a === void 0 ? void 0 : _a.boomTime) - boom.getComponent("Boom").init(this.block_Info.boomTime); - break; - case BlockType.星星块: - var star = cc.instantiate(Map_1.default._instance.Block_Prop[this.type]); - star.anchorX = this.node.anchorX; - star.anchorY = this.node.anchorY; - star.getComponent(cc.Sprite).spriteFrame = star.getComponent("Star").star_SpriteFrame.getSpriteFrame("star_" + this.block_Info.block); - star.parent = this.node; - star.setPosition(posConfig.pos4.x - 10, posConfig.pos4.y); - case BlockType.钥匙块: - var key = cc.instantiate(Map_1.default._instance.Block_Prop[this.type]); - key.parent = this.node; - key.setPosition(posConfig.pos1.x, posConfig.pos1.y); - break; - case BlockType.上锁块: - var lock = cc.instantiate(Map_1.default._instance.Block_Prop[this.type]); - lock.parent = this.node; - lock.setPosition(posConfig.pos1.x, posConfig.pos1.y); - lock.getComponent("Lock").init(this.block_Info.lockTime); - break; - case BlockType.冻结块: - var freeze = cc.instantiate(Map_1.default._instance.Block_Prop[this.type]); - freeze.parent = this.node; - var name = "ice_" + this.block_Info.block; - var spriteFrame = this.ice_SpriteFrame._spriteFrames[name]; - freeze.getChildByName("icon").getComponent(cc.Sprite).spriteFrame = spriteFrame; - var freezeX = posConfig.pos6.x - (this.node.width * (this.node.anchorX - 0.5)); - var freezeY = posConfig.pos6.y + this.node.height / 2; - freeze.setPosition(freezeX, freezeY); - freeze.getComponent("Freeze").init(this.block_Info.freezeTime); - freeze.getChildByName("time").setPosition(posConfig.pos5.x - 10 - freezeX, posConfig.pos5.y - 2 - freezeY); - break; - case BlockType.水平块: - var horizontal = cc.instantiate(Map_1.default._instance.Block_Prop[this.type]); - horizontal.parent = this.node; - var heng = "heng" + this.heng; - horizontal.getChildByName(heng).active = true; - horizontal.setPosition(posConfig.pos2.x - 3, posConfig.pos2.y); - break; - case BlockType.垂直块: - var vertical = cc.instantiate(Map_1.default._instance.Block_Prop[this.type]); - vertical.parent = this.node; - var shu = "shu" + this.shu; - vertical.getChildByName(shu).active = true; - vertical.setPosition(posConfig.pos3.x, posConfig.pos3.y); - break; - case BlockType.叠加块上: - this.moveStack = false; - this.node.off(cc.Node.EventType.TOUCH_START); - this.node.off(cc.Node.EventType.TOUCH_MOVE); - this.node.off(cc.Node.EventType.TOUCH_CANCEL); - this.node.off(cc.Node.EventType.TOUCH_END); - // this.selfBoxColliders = []; - this.node.zIndex = 201; - var pos = this.getStackingPos(); - this.node.setPosition(this.node.x + pos.x, this.node.y + pos.y); - this.stacking = cc.v2(this.node.x - this.block_Info.node.x, this.node.y - this.block_Info.node.y); - this.block_Info.node.getComponent("Block").block_Info.node = this.node; - this.node.scaleX *= 0.7; - this.node.scaleY *= 0.7; - for (var i = 0; i < this.node.children.length; i++) { - if (this.node.children[i].name == "left" || this.node.children[i].name == "right" || this.node.children[i].name == "top" || this.node.children[i].name == "down") - this.node.children[i].active = false; - } - break; - } - }; - //初始化方块颜色 - Block.prototype.initColor = function () { - var name = this.color + "color" + this.block_Info.block; - var number = Math.floor((this.color - 1) / 2); - var blockSpriteFrame = Map_1.default._instance.Block_Color[number]._spriteFrames; - var spriteFrame = blockSpriteFrame[name]; - // if(this.type == BlockType.冻结块){ - // name = "ice_"+this.block_Info.block; - // spriteFrame = this.ice_SpriteFrame._spriteFrames[name]; - // } - this.node.getChildByName("icon").getComponent(cc.Sprite).spriteFrame = spriteFrame; - }; - //创建粘合快连接处 - Block.prototype.createAdhesive = function () { - var box = []; - for (var i = 0; i < this.allBlocks.length; i++) { - box.push(cc.v2(this.allBlocks[i].x + this.posX, this.allBlocks[i].y + this.posY)); - } - var otherBox = []; - for (var i = 0; i < this.block_Info.node.getComponent("Block").allBlocks.length; i++) { - otherBox.push(cc.v2(this.block_Info.node.getComponent("Block").allBlocks[i].x + this.block_Info.node.getComponent("Block").posX, this.block_Info.node.getComponent("Block").allBlocks[i].y + this.block_Info.node.getComponent("Block").posY)); - } - for (var k = 0; k < box.length; k++) { - for (var j = 0; j < otherBox.length; j++) { - if ((box[k].x == otherBox[j].x + 1 || box[k].x == otherBox[j].x - 1) && (box[k].y == otherBox[j].y)) { - //在X轴 相邻 - var left = box[k].x == otherBox[j].x + 1 ? "left" : "right"; - this.addAdhesive(left, box[k]); - otherBox.splice(j, 1); - j--; // 调整索引 - if (j < 0) - break; - } - if ((box[k].y == otherBox[j].y + 1 || box[k].y == otherBox[j].y - 1) && (box[k].x == otherBox[j].x)) { - //在Y轴 相邻 - var down = box[k].y == otherBox[j].y + 1 ? "down" : "up"; - this.addAdhesive(down, box[k]); - otherBox.splice(j, 1); - j--; // 调整索引 - if (j < 0) - break; - } - } - } - // let adhesive = cc.instantiate(MapConroler._instance.Block_Prop[this.type]); - }; - //具体添加粘合快锁链方法 - Block.prototype.addAdhesive = function (diraction, box) { - var pos = cc.v2(box.x - this.posX, box.y - this.posY); - var adhesive = cc.instantiate(Map_1.default._instance.Block_Prop[10]); - adhesive.parent = this.node.parent.getChildByName("Adhesive"); - // adhesive.parent = this.node.getChildByName("adhesive"); - adhesive.setPosition(120 * pos.x - 65 + this.node.x, 120 * pos.y + 60 + this.node.y); - if (diraction == "left" || diraction == "right") { - adhesive.getChildByName("heng").active = true; - adhesive.getChildByName("heng").x = -60; - if (diraction == "right") - adhesive.getChildByName("heng").x = 60; - adhesive.getChildByName("heng").x += 9; - adhesive.getChildByName("heng").y += 7; - } - else { - adhesive.getChildByName("shu").active = true; - adhesive.getChildByName("shu").y = -60; - if (diraction == "up") - adhesive.getChildByName("shu").y = 60; - } - adhesive.getComponent("Adhesive").init(this.node); - this.adhesiveNode.push(adhesive); - }; - Block.prototype.removeAdhesive = function () { - if (this.adhesiveNode.length > 0) { - for (var i = 0; i < this.adhesiveNode.length; i++) { - var adhesive = this.adhesiveNode[i]; - adhesive.getComponent("Adhesive").remove(); - } - } - }; - //方块落点 - Block.prototype.blockFall = function (point) { - if (this.over == true) - return; - // // 假设 MapConroler 有网格信息,这里简单示例 - var mapWidth = Map_1.default._instance.mapWidth; - var mapHeight = Map_1.default._instance.mapHeight; - var cellSize = 120; // 每个格子的大小,根据实际情况调整 - // 计算点所在的网格坐标 - var gridX = Math.floor((point.x + (mapWidth * cellSize / 2)) / cellSize); - var gridY = Math.floor((point.y + (mapHeight * cellSize / 2)) / cellSize); - // 检查网格坐标是否越界 - if (gridX >= 0 && gridX < mapWidth && gridY >= 0 && gridY < mapHeight) { - var mapBlock = Map_1.default._instance.mapBlocksWall[gridX][gridY]; - var blockRect = mapBlock.getBoundingBox(); - // 使用 cc.Intersection.pointInRect 方法判断点是否在矩形范围内 - if (blockRect.contains(point)) { - //寻找落点 - this.removeMapBlock(); - this.posX = mapBlock.getComponent("MapBlock").posX; - this.posY = mapBlock.getComponent("MapBlock").posY; - this.setMapBlock(); - this.level = 50 + this.posX - this.posY * 3; - this.node.zIndex = this.level; - // console.log("方块层级",this.node.zIndex); - this.node.x = mapBlock.x + 65; - this.node.y = mapBlock.y - 60; - if (this.type == 9) { - if (this.block_Info.node) { - this.block_Info.node.x = this.node.x - this.adhesive.x; - this.block_Info.node.y = this.node.y - this.adhesive.y; - } - } - else if (this.type == 1) { - this.block_Info.node.getComponent("Block").moveStack = false; - this.block_Info.node.x = this.node.x + this.block_Info.node.getComponent("Block").stacking.x; - this.block_Info.node.y = this.node.y + this.block_Info.node.getComponent("Block").stacking.y; - } - } - } - var jg = Map_1.default._instance.checkPass(this.node, this.allBlocks); - if (jg >= 0) { - this.over = true; - Map_1.default._instance.changeState(); - this.removeBoxCollider(); - this.removeMapBlock(); - this.removeAction(jg); - } - else { - Map_1.default._instance.upDoor(this.color); - this.setVibrate("medium", 1); - //@ts-ignore - } - }; - Block.prototype.removeBoxCollider = function () { - for (var i = 0; i < this.node.children.length; i++) { - if (this.node.children[i].name == "left" || this.node.children[i].name == "right" || this.node.children[i].name == "top" || this.node.children[i].name == "down") - this.node.children[i].destroy(); - } - }; - Block.prototype.removeAction = function (diraction) { - var _this = this; - this.node.off(cc.Node.EventType.TOUCH_START); - this.node.off(cc.Node.EventType.TOUCH_MOVE); - this.node.off(cc.Node.EventType.TOUCH_CANCEL); - this.node.off(cc.Node.EventType.TOUCH_END); - this.node.addComponent(cc.Mask); - var self = this; - var pos = this.node.getPosition(); - if (this.type == BlockType.叠加块下) { - var scaleX = this.node.scaleX; - var scaleY = this.node.scaleY; - this.block_Info.node.getComponent("Block").restoreNomal(this.posX, this.posY, true); - cc.tween(this.block_Info.node) - .to(0.3, { position: pos, scaleX: scaleX > 0 ? 1 : -1, scaleY: scaleY > 0 ? 1 : -1 }) - .start(); - } - else if (this.type == BlockType.粘合块) { - this.removeAdhesive(); - this.block_Info.node.getComponent("Block").removeAdhesive(); - this.block_Info.node.getComponent("Block").restoreNomal(this.block_Info.node.getComponent("Block").posX, this.block_Info.node.getComponent("Block").posY, false); - this.block_Info.node = null; - } - else if (this.type == BlockType.炸弹块) { - this.node.getChildByName("boom").getComponent("Boom").stopBoom(); - } - var time = 0.33; - // this.node.zIndex = 0; - var width = Math.floor(this.node.width / 120); - var height = Math.floor(this.node.height / 120); - setTimeout(function () { - cc.fx.AudioManager._instance.playEffect("xiaochu", null); - }, 300); - this.setVibrate("light", 3); - if (diraction == 0) { - time = 0.33 * height; - // time = 0.99; - for (var i = 0; i < this.node.children.length; i++) { - cc.tween(this.node.children[i]) - .to(time, { y: this.node.children[i].y + this.node.children[0].height }) - .start(); - } - } - else if (diraction == 1) { - time = 0.33 * height; - // time = 0.99 - for (var i = 0; i < this.node.children.length; i++) { - cc.tween(this.node.children[i]) - .to(time, { y: this.node.children[i].y - this.node.children[0].height }) - .start(); - } - } - else if (diraction == 2) { - time = 0.33 * width; - // time = 0.99 - for (var i = 0; i < this.node.children.length; i++) { - cc.tween(this.node.children[i]) - .to(time, { x: this.node.children[i].x - this.node.children[0].width }) - .start(); - } - } - else if (diraction == 3) { - time = 0.33 * width; - // time = 0.99 - for (var i = 0; i < this.node.children.length; i++) { - cc.tween(this.node.children[i]) - .to(time, { x: this.node.children[i].x + this.node.children[0].width }) - .start(); - } - } - setTimeout(function () { - var tempColor = _this.color; - setTimeout(function () { - Map_1.default._instance.upDoor(tempColor); - }, 250); - Map_1.default._instance.nextLevel(); - _this.node.active = false; - _this.node.removeFromParent(); - // this.node.active = false; - // this.node.removeFromParent(); - }, time * 1000); - }; - Block.prototype.touchStart = function (event) { - if (this.over || Map_1.default._instance.gameOver) - return; - // 返回世界坐标 - var touchLoc = event.getLocation(); - // https://docs.cocos.com/creator/api/zh/classes/Intersection.html 检测辅助类 - // let pos = this.collider.world.points - if (!this.collider.world) { - return; - } - // 判断触摸点是否在多边形内 - if (cc.Intersection.pointInPolygon(touchLoc, this.collider.world.points)) { - if (Map_1.default._instance.hammer) { - this.eliminate(); - this.isTouch = false; - Map_1.default._instance.hammerMask.active = false; - Map_1.default._instance.node.parent.getChildByName("Bottom").getChildByName("destroyBtn").getComponent("btnControl").setTouch(true); - return false; - } - if (this.type != BlockType.上锁块 && this.type != BlockType.冻结块) { - Map_1.default._instance.startUpdate(); - cc.fx.AudioManager._instance.playEffect("hit", null); - this.node.zIndex = 200; - if (this.type == 9) { - if (this.block_Info.node) { - this.block_Info.node.zIndex = 200; - this.block_Info.node.getComponent("Block").hit.active = true; - Map_1.default._instance.downDoor(this.block_Info.node.getComponent("Block").color, this.block_Info.node.getComponent("Block").type); - } - } - else if (this.type == 1) { - this.block_Info.node.getComponent("Block").moveStack = true; - } - var touchPoint = event.getLocation(); - var local = this.node.parent.convertToNodeSpaceAR(touchPoint); - this.touchPointX = local.x; - this.touchPointY = local.y; - this.moveLeft = this.moveRight = this.moveUp = this.moveDown = true; - this.isTouch = true; - this.moveCorner = 0; - this.relative_Position = cc.v2(this.node.x - local.x, this.node.y - local.y); - Map_1.default._instance.changeRiseFall(this.color, true); - Map_1.default._instance.downDoor(this.color, this.type); - this.setVibrate("light", 1); - if (this.hit) - this.hit.active = true; - return true; - } - else { - this.isTouch = false; - return false; - } - } - else { - this.isTouch = false; - return false; - } - }; - Block.prototype.touchEnd = function (event) { - if (Map_1.default._instance.gameOver) - return; - if (this.isTouch) { - this.touchDelta = cc.v2(0, 0); - this.checkCollision = false; - Map_1.default._instance.changeRiseFall(this.color, false); - cc.fx.AudioManager._instance.playEffect("down", null); - Map_1.default._instance.removeOneBlock(); - this.isTouch = false; - this.node.zIndex = this.level; - this.hit.active = false; - if (this.type == 9) { - if (this.block_Info.node) { - this.block_Info.node.getComponent("Block").hit.active = false; - // this.block_Info.node.getComponent("Block").isTouch = false; - } - } - this.touchPoint = event.getLocation(); - var local = cc.v2(this.node.x - 50, this.node.y + 50); - if (this.type != 10) { - //@ts-ignore - this.blockFall(local); - if (this.type == 9) { - if (this.block_Info.node) { - var localTemp = cc.v2(this.block_Info.node.x - 50, this.block_Info.node.y + 50); - this.block_Info.node.getComponent("Block").blockFall(localTemp); - } - } - } - this.moveLeft = this.moveRight = this.moveUp = this.moveDown = true; - } - }; - Block.prototype.touchMove = function (event) { - if (Map_1.default._instance.gameOver) - return; - // const currentTime = Date.now(); - // // 如果距离上次移动时间小于间隔时间,直接返回 - // if (currentTime - this.lastMoveTime < this.moveInterval) { - // return; - // } - // this.lastMoveTime = currentTime; - if (this.isTouch) { - var delta = event.getDelta(); - var touchPoint = event.getLocation(); - var local = this.node.parent.convertToNodeSpaceAR(touchPoint); - this.touchPointX = local.x; - this.touchPointY = local.y; - delta.x = this.touchPointX - this.node.x + this.relative_Position.x; - delta.y = this.touchPointY - this.node.y + this.relative_Position.y; - // 限制移动速度 - this.touchPointX = local.x; - this.touchPointY = local.y; - delta.x = this.touchPointX - this.node.x + this.relative_Position.x; - delta.y = this.touchPointY - this.node.y + this.relative_Position.y; - // 限制移动速度 - delta.x = Math.max(-this.maxSpeed, Math.min(this.maxSpeed, delta.x)); - delta.y = Math.max(-this.maxSpeed, Math.min(this.maxSpeed, delta.y)); - // 记录触摸移动的增量 - this.touchDelta = delta; - } - }; - //超出限制判断 - Block.prototype.exceeds = function (stepx, stepy) { - }; - Block.prototype.eliminate = function () { - var _this = this; - //锤子状态消失 - Map_1.default._instance.pause = true; - Map_1.default._instance.hammer = false; - //如果方块是有特殊状态,则特殊处理 - if (this.type == BlockType.冻结块) { - this.node.getChildByName("freeze").getComponent("Freeze").reduce(2); - return; - } - else if (this.type == BlockType.上锁块) { - this.node.getChildByName("lock").getComponent("Lock").reduce(); - return; - } - //如果方块可以消除 - Map_1.default._instance.blockNum -= 1; - Map_1.default._instance.special_Treatment(this.node); - var self = this; - this.removeMapBlock(); - setTimeout(function () { - var pos = _this.node.getPosition(); - if (self.type == BlockType.叠加块下) { - var scaleX = self.node.scaleX; - var scaleY = self.node.scaleY; - self.block_Info.node.getComponent("Block").restoreNomal(_this.posX, _this.posY, true); - cc.tween(self.block_Info.node) - .to(0.1, { position: pos, scaleX: scaleX > 0 ? 1 : -1, scaleY: scaleY > 0 ? 1 : -1 }) - .start(); - } - else if (self.type == BlockType.粘合块) { - self.block_Info.node.getComponent("Block").restoreNomal(self.block_Info.node.getComponent("Block").posX, self.block_Info.node.getComponent("Block").posY, false); - } - else if (self.type == BlockType.炸弹块) { - _this.node.getChildByName("boom").getComponent("Boom").stopBoom(); - } - Map_1.default._instance.nextLevel(); - _this.node.active = false; - _this.node.removeFromParent(); - }, 200); - }; - Block.prototype.setVibrate = function (type, count) { - // return; - if (!cc.fx.GameConfig.GM_INFO.vibrateOpen) { - return; - } - if (count == 1) { - //@ts-ignore - if (typeof wx !== 'undefined' && wx !== null) { // 判断是否在微信环境 - //@ts-ignore - wx.vibrateShort({ - type: type, - success: function () { - }, - fail: function (err) { - } - }); - } - else { - } - return; - } - var time = 150; - for (var i = 0; i < 4; i++) { - setTimeout(function () { - //@ts-ignore - if (typeof wx !== 'undefined' && wx !== null) { // 判断是否在微信环境 - //@ts-ignore - wx.vibrateShort({ - type: type, - success: function () { - }, - fail: function (err) { - } - }); - } - else { - } - }, time * i); - } - }; - Block.prototype.setMoveCorner = function (diraction) { - return; - }; - Block.prototype.cmupdate = function () { - var cm = cc.director.getCollisionManager(); - cm.update(); - }; - Block.prototype.restoreNomal = function (posX, posY, type) { - this.type = 0; - this.block_Info.node = null; - this.moveStack = false; - this.posX = posX; - this.posY = posY; - this.setMapBlock(); - this.level = 50 + this.posX - this.posY * 3; - this.node.zIndex = this.level; - var j = 1000; - for (var i = 0; i < this.node.children.length; i++) { - if (this.node.children[i].name == "New Node") { - j = i; - } - if (i > j) { - this.node.children[i].active = false; - } - } - if (type) { - for (var i = 0; i < this.node.children.length; i++) { - if (this.node.children[i].name == "left" || this.node.children[i].name == "right" || this.node.children[i].name == "top" || this.node.children[i].name == "down") - this.node.children[i].active = true; - } - } - this.node.on(cc.Node.EventType.TOUCH_START, this.touchStart, this); - this.node.on(cc.Node.EventType.TOUCH_MOVE, this.touchMove, this); - this.node.on(cc.Node.EventType.TOUCH_CANCEL, this.touchEnd, this); - this.node.on(cc.Node.EventType.TOUCH_END, this.touchEnd, this); - this.node['_touchListener'].setSwallowTouches(false); - this.hit = new cc.Node(); - this.hit.addComponent(cc.Sprite); - this.hit.parent = this.node; - var name = "xz_" + this.block_Info.block; - this.hit.getComponent(cc.Sprite).spriteFrame = this.ice_SpriteFrame._spriteFrames[name]; - this.hit.setAnchorPoint(this.node.anchorX, this.node.anchorY); - this.hit.setPosition(13, -11); - if (this.hit.anchorX == 0.5) - this.hit.setPosition(0, -11); - else if (this.hit.anchorX == 0.33) - this.hit.setPosition(-13, -11); - else if (this.hit.anchorX == 0.66) - this.hit.setPosition(2, -9); - this.hit.active = false; - }; - //冻结状态恢复为常规状态 - Block.prototype.resetFreeze = function () { - this.type = 0; - this.block_Info.type = 0; - var name = this.color + "color" + this.block_Info.block; - var number = Math.floor((this.color - 1) / 2); - var blockSpriteFrame = Map_1.default._instance.Block_Color[number]._spriteFrames; - var spriteFrame = blockSpriteFrame[name]; - this.node.getChildByName("icon").getComponent(cc.Sprite).spriteFrame = spriteFrame; - }; - Block.prototype.initBlocks = function () { - this.allBlocks = []; - switch (this.block_Info.block) { - case 0: - var pos = cc.v2(0, 0); - this.allBlocks = [pos]; - break; - case 1: - var pos1 = cc.v2(0, 0); - var pos2 = cc.v2(-1, 0); - this.allBlocks = [pos1, pos2]; - break; - case 2: - var pos3 = cc.v2(0, 0); - var pos4 = cc.v2(0, 1); - this.allBlocks = [pos3, pos4]; - break; - case 3: - var pos5 = cc.v2(0, 0); - var pos6 = cc.v2(-1, 0); - var pos7 = cc.v2(-2, 0); - this.allBlocks = [pos5, pos6, pos7]; - break; - case 4: - var pos8 = cc.v2(0, 0); - var pos9 = cc.v2(0, 1); - var pos10 = cc.v2(0, 2); - this.allBlocks = [pos8, pos9, pos10]; - break; - case 5: - var pos11 = cc.v2(0, 0); - var pos12 = cc.v2(-1, 0); - var pos13 = cc.v2(-1, 1); - var pos14 = cc.v2(0, 1); - this.allBlocks = [pos11, pos12, pos13, pos14]; - break; - case 6: - var pos15 = cc.v2(0, 0); - var pos16 = cc.v2(0, 1); - var pos17 = cc.v2(0, 2); - var pos18 = cc.v2(-1, 2); - this.allBlocks = [pos15, pos16, pos17, pos18]; - break; - case 7: - var pos19 = cc.v2(0, 0); - var pos20 = cc.v2(0, 1); - var pos21 = cc.v2(-1, 1); - var pos22 = cc.v2(-2, 1); - this.allBlocks = [pos19, pos20, pos21, pos22]; - break; - case 8: - var pos23 = cc.v2(0, 0); - var pos24 = cc.v2(-1, 0); - var pos25 = cc.v2(-1, 1); - var pos26 = cc.v2(-1, 2); - this.allBlocks = [pos23, pos24, pos25, pos26]; - break; - case 9: - var pos27 = cc.v2(0, 0); - var pos28 = cc.v2(-1, 0); - var pos29 = cc.v2(-2, 0); - var pos30 = cc.v2(0, 1); - this.allBlocks = [pos27, pos28, pos29, pos30]; - break; - case 10: - var pos31 = cc.v2(0, 0); - var pos32 = cc.v2(1, 2); - var pos33 = cc.v2(0, 1); - var pos34 = cc.v2(0, 2); - this.allBlocks = [pos31, pos32, pos33, pos34]; - break; - case 11: - var pos35 = cc.v2(0, 0); - var pos36 = cc.v2(2, 1); - var pos37 = cc.v2(1, 1); - var pos38 = cc.v2(0, 1); - this.allBlocks = [pos35, pos36, pos37, pos38]; - break; - case 12: - var pos39 = cc.v2(0, 0); - var pos40 = cc.v2(0, 1); - var pos41 = cc.v2(0, 2); - var pos42 = cc.v2(-1, 0); - this.allBlocks = [pos39, pos40, pos41, pos42]; - break; - case 13: - var pos43 = cc.v2(0, 0); - var pos44 = cc.v2(-1, 0); - var pos45 = cc.v2(-2, 0); - var pos46 = cc.v2(-2, 1); - this.allBlocks = [pos43, pos44, pos45, pos46]; - break; - case 14: - var pos47 = cc.v2(0, 0); - var pos48 = cc.v2(0, 1); - var pos49 = cc.v2(-1, 1); - var pos50 = cc.v2(1, 1); - this.allBlocks = [pos47, pos48, pos49, pos50]; - break; - case 15: - var pos51 = cc.v2(0, 0); - var pos52 = cc.v2(-1, 0); - var pos53 = cc.v2(-2, 0); - var pos54 = cc.v2(-1, 1); - this.allBlocks = [pos51, pos52, pos53, pos54]; - break; - case 16: - var pos55 = cc.v2(0, 0); - var pos56 = cc.v2(1, 1); - var pos57 = cc.v2(0, 1); - var pos58 = cc.v2(0, 2); - this.allBlocks = [pos55, pos56, pos57, pos58]; - break; - case 17: - var pos59 = cc.v2(0, 0); - var pos60 = cc.v2(0, 1); - var pos61 = cc.v2(0, 2); - var pos62 = cc.v2(-1, 1); - this.allBlocks = [pos59, pos60, pos61, pos62]; - break; - case 18: - var pos63 = cc.v2(0, 0); - var pos64 = cc.v2(0, 1); - var pos65 = cc.v2(0, 2); - var pos66 = cc.v2(1, 1); - var pos67 = cc.v2(-1, 1); - this.allBlocks = [pos63, pos64, pos65, pos66, pos67]; - break; - case 19: - var pos68 = cc.v2(0, 0); - var pos69 = cc.v2(0, 1); - var pos70 = cc.v2(-1, 0); - this.allBlocks = [pos68, pos69, pos70]; - break; - case 20: - var pos71 = cc.v2(0, 0); - var pos72 = cc.v2(-1, 0); - var pos73 = cc.v2(-1, 1); - this.allBlocks = [pos71, pos72, pos73]; - break; - case 21: - var pos74 = cc.v2(0, 0); - var pos75 = cc.v2(0, 1); - var pos76 = cc.v2(1, 1); - this.allBlocks = [pos74, pos75, pos76]; - break; - case 22: - var pos77 = cc.v2(0, 0); - var pos78 = cc.v2(0, 1); - var pos79 = cc.v2(-1, 1); - this.allBlocks = [pos77, pos78, pos79]; - break; - } - }; - Block.prototype.setMapBlock = function () { - if (this.allBlocks.length > 0) { - for (var i = 0; i < this.allBlocks.length; i++) { - var pos = this.allBlocks[i]; - var x = this.posX + pos.x; - var y = this.posY + pos.y; - Map_1.default._instance.mapBlocksWall[x][y].getComponent("MapBlock").block_Id = this.node.uuid; - } - } - }; - Block.prototype.removeMapBlock = function () { - if (this.posX == 0 && this.posY == 0) { - return; - } - if (this.allBlocks) { - if (this.allBlocks.length > 0) { - for (var i = 0; i < this.allBlocks.length; i++) { - if (this.allBlocks[i]) { - var pos = this.allBlocks[i]; - var x = this.posX + pos.x; - var y = this.posY + pos.y; - if (Map_1.default._instance.mapBlocksWall[x][y]) { - if (Map_1.default._instance.mapBlocksWall[x][y].getComponent("MapBlock")) - Map_1.default._instance.mapBlocksWall[x][y].getComponent("MapBlock").block_Id = ""; - } - } - } - } - } - }; - //叠加块,位置差异,校准位置 - Block.prototype.getStackingPos = function () { - switch (this.node.name) { - case "block0": - return cc.v2(-21, 22); - case "block1": - return cc.v2(-36, 23); - case "block2": - return cc.v2(-18, 40); - case "block3": - return cc.v2(-59, 25); - case "block4": - return cc.v2(-19, 57); - case "block5": - return cc.v2(-36, 38); - case "block6": - return cc.v2(-19, 97); - case "block7": - return cc.v2(-19, 61); - case "block8": - return cc.v2(-55, 24); - case "block9": - return cc.v2(-20, 24); - case "block10": - return cc.v2(-17, 96); - case "block11": - return cc.v2(-17, 58); - case "block12": - return cc.v2(-20, 24); - case "block13": - return cc.v2(-92, 25); - case "block14": - return cc.v2(-18, 60); - case "block15": - return cc.v2(-58, 24); - case "block16": - return cc.v2(-20, 60); - case "block17": - return cc.v2(-17, 60); - case "block18": - return cc.v2(-17, 60); - case "block19": - return cc.v2(-20, 24); - case "block20": - return cc.v2(-54, 25); - case "block21": - return cc.v2(-17, 60); - case "block22": - return cc.v2(-17, 60); - } - }; - Block.prototype.update = function (dt) { - if (this.isTouch && this.touchDelta.mag() > 0) { - //this.moveLeft = this.moveRight = this.moveUp = this.moveDown = true; - var delta = this.touchDelta; - var newX = this.node.x + delta.x; - var newY = this.node.y + delta.y; - var distance = Math.sqrt(Math.pow(newX - this.node.x, 2) + Math.pow(newY - this.node.y, 2)); - var mag = Math.round(delta.mag()); - if (this.moveY === 1) { - if (this.touchPointY <= this.node.y + this.node.height / 2) { - this.moveY = 0; - } - } - else if (this.moveY === -1) { - if (this.touchPointY >= this.node.y + this.node.height / 2) { - this.moveY = 0; - } - } - if (this.moveX === 1) { - if (this.touchPointX <= this.node.x - this.node.width / 2) { - this.moveX = 0; - } - else { - } - } - else if (this.moveX === -1) { - if (this.touchPointX >= this.node.x - this.node.width / 2) { - this.moveX = 0; - } - else { - } - } - if (distance > 100) { - mag = 10; - var speedScale = 0.5; - delta.x *= speedScale; - delta.y *= speedScale; - } - else { - if (mag > 5) { - mag = Math.floor(mag / 5); - } - } - // mag = 2; - var stepx = delta.x / mag; - var stepy = delta.y / mag; - for (var index = 0; index < mag; index++) { - this.moveCorner = 0; - var tempX = this.node.x + stepx; - var tempY = this.node.y + stepy; - if (!this.checkCollision) { - if (this.type !== 8 && this.type !== 10) { - this.node.x = Math.round(tempX); - } - if (this.type !== 7 && this.type !== 10) { - this.node.y = Math.round(tempY); - } - } - else { - var isXMain = Math.abs(stepx) > Math.abs(stepy); - if (isXMain) { - if (this.node.x > tempX) { - if (this.moveLeft && this.moveX === 0 && this.type !== 8 && this.type !== 10) { - this.node.x = tempX; - } - if (this.moveX !== 0) { - this.moveX = 0; - } - } - else if (this.node.x <= tempX) { - if (this.moveRight && this.moveX === 0 && this.type !== 8 && this.type !== 10) { - this.node.x = tempX; - } - if (this.moveX !== 0) { - this.moveX = 0; - } - } - if (this.node.y > tempY) { - if (this.moveDown && this.moveY === 0 && this.type !== 7 && this.type !== 10) { - this.node.y = tempY; - } - if (this.moveY !== 0) { - this.moveY = 0; - } - } - else if (this.node.y <= tempY) { - if (this.moveUp && this.moveY === 0 && this.type !== 7 && this.type !== 10) { - this.node.y = tempY; - } - if (this.moveY !== 0) { - this.moveY = 0; - } - } - } - else { - if (this.node.y > tempY) { - if (this.moveDown && this.moveY === 0 && this.type !== 7 && this.type !== 10) { - this.node.y = tempY; - } - if (this.moveY !== 0) { - this.moveY = 0; - } - } - else if (this.node.y <= tempY) { - if (this.moveUp && this.moveY === 0 && this.type !== 7 && this.type !== 10) { - this.node.y = tempY; - } - if (this.moveY !== 0) { - this.moveY = 0; - } - } - if (this.node.x > tempX) { - if (this.moveLeft && this.moveX === 0 && this.type !== 8 && this.type !== 10) { - this.node.x = tempX; - } - if (this.moveX !== 0) { - this.moveX = 0; - } - } - else if (this.node.x <= tempX) { - if (this.moveRight && this.moveX === 0 && this.type !== 8 && this.type !== 10) { - this.node.x = tempX; - } - if (this.moveX !== 0) { - this.moveX = 0; - } - } - } - } - lq_collide_system_1.LQCollideSystem.update_logic(dt); - } - // 移动完成后重置触摸增量 - this.touchDelta = cc.v2(0, 0); - } - if (this.type == BlockType.叠加块上 && this.moveStack == true) { - if (this.stacking.x != 0 || this.stacking.y != 0) { - this.node.x = this.block_Info.node.x + this.stacking.x; - this.node.y = this.block_Info.node.y + this.stacking.y; - } - } - if (this.block_Info) { - if (this.block_Info.node != null) { - if (this.type == BlockType.粘合块) { - if (this.adhesive.x != 0 && this.adhesive.y != 0 && this.block_Info.node != null) { - this.block_Info.node.x = this.node.x - this.adhesive.x; - this.block_Info.node.y = this.node.y - this.adhesive.y; - } - if (this.isTouch == true && this.block_Info.node.getComponent("Block").isTouch == false) { - lq_collide_system_1.LQCollideSystem.update_logic(dt); - this.block_Info.node.x = this.node.x - this.adhesive.x; - this.block_Info.node.y = this.node.y - this.adhesive.y; - } - } - } - } - }; - __decorate([ - property({ - tooltip: '碰撞形状,None就是无敌,不参与碰撞', - type: cc.Enum(BlockType), - }) - ], Block.prototype, "type", void 0); - __decorate([ - property({ - tooltip: '碰撞形状,None就是无敌,不参与碰撞', - type: cc.Enum(BlockColor), - }) - ], Block.prototype, "color", void 0); - __decorate([ - property({ - tooltip: '横向长度', - type: cc.Integer, - }) - ], Block.prototype, "heng", void 0); - __decorate([ - property({ - tooltip: '竖向长度', - type: cc.Integer, - }) - ], Block.prototype, "shu", void 0); - __decorate([ - property(cc.SpriteAtlas) - ], Block.prototype, "ice_SpriteFrame", void 0); - Block = __decorate([ - ccclass - ], Block); - return Block; -}(cc.Component)); -exports.default = Block; - -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,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImFzc2V0c1xcU2NyaXB0XFxCbG9jay50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQ0EsMkVBQXdFO0FBQ3hFLDZCQUFnQztBQUUxQixJQUFBLEtBQXNCLEVBQUUsQ0FBQyxVQUFVLEVBQWxDLE9BQU8sYUFBQSxFQUFFLFFBQVEsY0FBaUIsQ0FBQztBQUN6QyxJQUFZLFNBdUJaO0FBdkJBLFdBQVksU0FBUztJQUNsQixTQUFTO0lBQ1QscUVBQVMsQ0FBQTtJQUNULFNBQVM7SUFDVCxpRkFBVSxDQUFBO0lBQ1YsT0FBTztJQUNQLHFFQUFTLENBQUE7SUFDVCxPQUFPO0lBQ1AscUVBQVMsQ0FBQTtJQUNULFNBQVM7SUFDVCxxRUFBUyxDQUFBO0lBQ1QsT0FBTztJQUNQLHFFQUFTLENBQUE7SUFDVCxPQUFPO0lBQ1AscUVBQVMsQ0FBQTtJQUNULE9BQU87SUFDUCxxRUFBUyxDQUFBO0lBQ1QsT0FBTztJQUNQLHFFQUFTLENBQUE7SUFDVCxPQUFPO0lBQ1AscUVBQVMsQ0FBQTtJQUNULE9BQU87SUFDUCxrRkFBVyxDQUFBO0FBQ2YsQ0FBQyxFQXZCWSxTQUFTLEdBQVQsaUJBQVMsS0FBVCxpQkFBUyxRQXVCckI7QUFFRCxJQUFZLFVBc0JYO0FBdEJELFdBQVksVUFBVTtJQUVsQixTQUFTO0lBQ1QsMkRBQVEsQ0FBQTtJQUNSLE9BQU87SUFDUCwyREFBUSxDQUFBO0lBQ1IsT0FBTztJQUNQLDJEQUFRLENBQUE7SUFDUixTQUFTO0lBQ1QsMkRBQVEsQ0FBQTtJQUNSLE9BQU87SUFDUCwyREFBUSxDQUFBO0lBQ1IsT0FBTztJQUNQLHVFQUFTLENBQUE7SUFDVCxPQUFPO0lBQ1AsMkRBQVEsQ0FBQTtJQUNSLE9BQU87SUFDUCwyREFBUSxDQUFBO0lBQ1IsT0FBTztJQUNQLDJEQUFRLENBQUE7SUFDUixPQUFPO0lBQ1AsMkRBQVEsQ0FBQTtBQUNaLENBQUMsRUF0QlcsVUFBVSxHQUFWLGtCQUFV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b0IsQ0FBQyxVQUFVLENBQUMsQ0FBQztZQUNoRSxJQUFJLENBQUMsV0FBVyxHQUFHLEtBQUssQ0FBQyxDQUFDLENBQUM7WUFDM0IsSUFBSSxDQUFDLFdBQVcsR0FBRyxLQUFLLENBQUMsQ0FBQyxDQUFDO1lBQzNCLEtBQUssQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDLFdBQVcsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUMsaUJBQWlCLENBQUMsQ0FBQyxDQUFDO1lBQ3BFLEtBQUssQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDLFdBQVcsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsR0FBSSxJQUFJLENBQUMsaUJBQWlCLENBQUMsQ0FBQyxDQUFDO1lBRXJFLFNBQVM7WUFDVCxJQUFJLENBQUMsV0FBVyxHQUFHLEtBQUssQ0FBQyxDQUFDLENBQUM7WUFDM0IsSUFBSSxDQUFDLFdBQVcsR0FBRyxLQUFLLENBQUMsQ0FBQyxDQUFDO1lBQzNCLEtBQUssQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDLFdBQVcsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUMsaUJBQWlCLENBQUMsQ0FBQyxDQUFDO1lBQ3BFLEtBQUssQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDLFdBQVcsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsR0FBSSxJQUFJLENBQUMsaUJBQWlCLENBQUMsQ0FBQyxDQUFDO1lBRXJFLFNBQVM7WUFDVCxLQUFLLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLENBQUMsUUFBUSxFQUFFLElBQUksQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLFFBQVEsRUFBRSxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUNyRSxLQUFLLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLENBQUMsUUFBUSxFQUFFLElBQUksQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFD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QUFDO2dCQUNGLElBQUksR0FBRyxHQUFHLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxDQUFDO2dCQUNyQixJQUFJLENBQUMsU0FBUyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUM7Z0JBQ3ZCLE1BQU07WUFDVixLQUFLLENBQUM7Z0JBQ0YsSUFBSSxJQUFJLEdBQUcsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLENBQUM7Z0JBQ3RCLElBQUksSUFBSSxHQUFHLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLENBQUM7Z0JBQ3ZCLElBQUksQ0FBQyxTQUFTLEdBQUcsQ0FBQyxJQUFJLEVBQUMsSUFBSSxDQUFDLENBQUM7Z0JBQzdCLE1BQU07WUFDVixLQUFLLENBQUM7Z0JBQ0YsSUFBSSxJQUFJLEdBQUcsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLENBQUM7Z0JBQ3RCLElBQUksSUFBSSxHQUFHLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxDQUFDO2dCQUN0QixJQUFJLENBQUMsU0FBUyxHQUFHLENBQUMsSUFBSSxFQUFDLElBQUksQ0FBQyxDQUFDO2dCQUM3QixNQUFNO1lBQ1YsS0FBSyxDQUFDO2dCQUNGLElBQUksSUFBSSxHQUFHLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxDQUFDO2dCQUN0QixJQUFJLElBQUksR0FBRyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxDQUFDO2dCQUN2QixJQUFJLElBQUksR0FBRyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxDQUFDO2dCQUN2QixJQUFJLENBQUMsU0FBUyxHQUFHLENBQUMsSUFBSSxFQUFDLElBQUksRUFBQyxJQUFJLENBQUMsQ0FBQztnQkFDbEMsTUFBTTtZQUNWLEtBQUssQ0FBQztnQkFDRixJQUFJLElBQUksR0FBRyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsQ0FBQztnQkFDdEIsSUFBSSxJQUFJLEdBQUcsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLENBQUM7Z0JBQ3RCLElBQUksS0FBSyxHQUFHLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxDQUFDO2dCQUN2QixJQUFJLENBQUMsU0FBUyxHQUFHLENBQUMsSUFBSSxFQUFDLElBQUksRUFBQyxLQUFLLENBQUMsQ0FBQztnQkFDbkMsTUFBTTtZQUNWLEtBQUssQ0FBQztnQkFDRixJQUFJLEtBQUssR0FBRyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsQ0FBQztnQkFDdkIsSUFBSSxLQUFLLEdBQUcsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsQ0FBQztnQkFDeEIsSUFBSSxLQUFLLEdBQUcsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsQ0FBQztnQkFDeEIsSUFBSSxLQUFLLEdBQUcsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLENBQUM7Z0JBQ3ZCLElBQUksQ0FBQyxTQUFTLEdBQUcsQ0FBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLENBQUMsQ0FBQztnQkFDM0MsTUFBTTtZQUNWLEtBQUssQ0FBQztnQkFDRixJQUFJLEtBQUssR0FBRyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsQ0FBQztnQkFDdkIsSUFBSSxLQUFLLEdBQUcsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLENBQUM7Z0JBQ3ZCLElBQUksS0FBSyxHQUFHLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxDQUFDO2dCQUN2QixJQUFJLEtBQUssR0FBRyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxDQUFDO2dCQUN4QixJQUFJLENBQUMsU0FBUyxHQUFHLENBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxDQUFDLENBQUM7Z0JBQzNDLE1BQU07WUFDVixLQUFLLENBQUM7Z0JBQ0YsSUFBSSxLQUFLLEdBQUcsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLENBQUM7Z0JBQ3ZCLElBQUksS0FBSyxHQUFHLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxDQUFDO2dCQUN2QixJQUFJLEtBQUssR0FBRyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxDQUFDO2dCQUN4QixJQUFJLEtBQUssR0FBRyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxDQUFDO2dCQUN4QixJQUFJLENBQUMsU0FBUyxHQUFHLENBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxDQUFDLENBQUM7Z0JBQzNDLE1BQU07WUFDVixLQUFLLENBQUM7Z0JBQ0YsSUFBSSxLQUFLLEdBQUcsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLENBQUM7Z0JBQ3ZCLElBQUksS0FBSyxHQUFHLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLENBQUM7Z0JBQ3hCLElBQUksS0FBSyxHQUFHLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLENBQUM7Z0JBQ3hCLElBQUksS0FBSyxHQUFHLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLENBQUM7Z0JBQ3hCLElBQUksQ0FBQyxTQUFTLEdBQUcsQ0FBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLENBQUMsQ0FBQztnQkFDM0MsTUFBTTtZQUNWLEtBQUssQ0FBQztnQkFDRixJQUFJLEtBQUssR0FBRyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsQ0FBQztnQkFDdkIsSUFBSSxLQUFLLEdBQUcsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsQ0FBQztnQkFDeEIsSUFBSSxLQUFLLEdBQUcsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsQ0FBQztnQkFDeEIsSUFBSSxLQUFLLEdBQUcsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLENBQUM7Z0JBQ3ZCLElBQUksQ0FBQyxTQUFTLEdBQUcsQ0FBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLENBQUMsQ0FBQztnQkFDM0MsTUFBTTtZQUNWLEtBQUssRUFBRTtnQkFDSCxJQUFJLEtBQUssR0FBRyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsQ0FBQztnQkFDdkIsSUFBSSxLQUFLLEdBQUcsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLENBQUM7Z0JBQ3ZCLElBQUksS0FBSyxHQUFHLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxDQUFDO2dCQUN2QixJQUFJLEtBQUssR0FBRyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsQ0FBQztnQkFDdkIsSUFBSSxDQUFDLFNBQVMsR0FBRyxDQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssQ0FBQyxDQUFDO2dCQUMzQyxNQUFNO1lBQ1YsS0FBSyxFQUFFO2dCQUNILElBQUksS0FBSyxHQUFHLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxDQUFDO2dCQUN2QixJQUFJLEtBQUssR0FBRyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsQ0FBQztnQkFDdkIsSUFBSSxLQUFLLEdBQUcsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLENBQUM7Z0JBQ3ZCLElBQUksS0FBSyxHQUFHLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxDQUFDO2dCQUN2QixJQUFJLENBQUMsU0FBUyxHQUFHLENBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxDQUFDLENBQUM7Z0JBQzNDLE1BQU07WUFDVixLQUFLLEVBQUU7Z0JBQ0gsSUFBSSxLQUFLLEdBQUcsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLENBQUM7Z0JBQ3ZCLElBQUksS0FBSyxHQUFHLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxDQUFDO2dCQUN2QixJQUFJLEtBQUssR0FBRyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsQ0FBQztnQkFDdkIsSUFBSSxLQUFLLEdBQUcsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsQ0FBQztnQkFDeEIsSUFBSSxDQUFDLFNBQVMsR0FBRyxDQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssQ0FBQyxDQUFDO2dCQUMzQyxNQUFNO1lBQ1YsS0FBSyxFQUFFO2dCQUNILElBQUksS0FBSyxHQUFHLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxDQUFDO2dCQUN2QixJQUFJLEtBQUssR0FBRyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxDQUFDO2dCQUN4QixJQUFJLEtBQUssR0FBRyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxDQUFDO2dCQUN4QixJQUFJLEtBQUssR0FBRyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxDQUFDO2dCQUN4QixJQUFJLENBQUMsU0FBUyxHQUFHLENBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxDQUFDLENBQUM7Z0JBQzNDLE1BQU07WUFDVixLQUFLLEVBQUU7Z0JBQ0gsSUFBSSxLQUFLLEdBQUcsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLENBQUM7Z0JBQ3ZCLElBQUksS0FBSyxHQUFHLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxDQUFDO2dCQUN2QixJQUFJLEtBQUssR0FBRyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxDQUFDO2dCQUN4QixJQUFJLEtBQUssR0FBRyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsQ0FBQztnQkFDdkIsSUFBSSxDQUFDLFNBQVMsR0FBRyxDQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssQ0FBQyxDQUFDO2dCQUMzQyxNQUFNO1lBQ1YsS0FBSyxFQUFFO2dCQUNILElBQUksS0FBSyxHQUFHLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxDQUFDO2dCQUN2QixJQUFJLEtBQUssR0FBRyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxDQUFDO2dCQUN4QixJQUFJLEtBQUssR0FBRyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxDQUFDO2dCQUN4QixJQUFJLEtBQUssR0FBRyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxDQUFDO2dCQUN4QixJQUFJLENBQUMsU0FBUyxHQUFHLENBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxDQUFDLENBQUM7Z0JBQzNDLE1BQU07WUFDVixLQUFLLEVBQUU7Z0JBQ0gsSUFBSSxLQUFLLEdBQUcsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLENBQUM7Z0JBQ3ZCLElBQUksS0FBSyxHQUFHLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxDQUFDO2dCQUN2QixJQUFJLEtBQUssR0FBRyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsQ0FBQztnQkFDdkIsSUFBSSxLQUFLLEdBQUcsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLENBQUM7Z0JBQ3ZCLElBQUksQ0FBQyxTQUFTLEdBQUcsQ0FBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLENBQUMsQ0FBQztnQkFDM0MsTUFBTTtZQUNWLEtBQUssRUFBRTtnQkFDSCxJQUFJLEtBQUssR0FBRyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsQ0FBQztnQkFDdkIsSUFBSSxLQUFLLEdBQUcsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLENBQUM7Z0JBQ3ZCLElBQUksS0FBSyxHQUFHLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxDQUFDO2dCQUN2QixJQUFJLEtBQUssR0FBRyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxDQUFDO2dCQUN4QixJQUFJLENBQUMsU0FBUyxHQUFHLENBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxDQUFDLENBQUM7Z0JBQzNDLE1BQU07WUFDVixLQUFLLEVBQUU7Z0JBQ0gsSUFBSSxLQUFLLEdBQUcsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLENBQUM7Z0JBQ3ZCLElBQUksS0FBSyxHQUFHLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxDQUFDO2dCQUN2QixJQUFJLEtBQUssR0FBRyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsQ0FBQztnQkFDdkIsSUFBSSxLQUFLLEdBQUcsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLENBQUM7Z0JBQ3ZCLElBQUksS0FBSyxHQUFHLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLENBQUM7Z0JBQ3hCLElBQUksQ0FBQyxTQUFTLEdBQUcsQ0FBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxDQUFDLENBQUM7Z0JBQ2pELE1BQU07WUFDVixLQUFLLEVBQUU7Z0JBQ0gsSUFBSSxLQUFLLEdBQUcsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLENBQUM7Z0JBQ3ZCLElBQUksS0FBSyxHQUFHLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxDQUFDO2dCQUN2QixJQUFJLEtBQUssR0FBRyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxDQUFDO2dCQUN4QixJQUFJLENBQUMsU0FBUyxHQUFHLENBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLENBQUMsQ0FBQztnQkFDckMsTUFBTTtZQUNWLEtBQUssRUFBRTtnQkFDSCxJQUFJLEtBQUssR0FBRyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsQ0FBQztnQkFDdkIsSUFBSSxLQUFLLEdBQUcsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsQ0FBQztnQkFDeEIsSUFBSSxLQUFLLEdBQUcsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsQ0FBQztnQkFDeEIsSUFBSSxDQUFDLFNBQVMsR0FBRyxDQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxDQUFDLENBQUM7Z0JBQ3JDLE1BQU07WUFDVixLQUFLLEVBQUU7Z0JBQ0gsSUFBSSxLQUFLLEdBQUcsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLENBQUM7Z0JBQ3ZCLElBQUksS0FBSyxHQUFHLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxDQUFDO2dCQUN2QixJQUFJLEtBQUssR0FBRyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsQ0FBQztnQkFDdkIsSUFBSSxDQUFDLFNBQVMsR0FBRyxDQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxDQUFDLENBQUM7Z0JBQ3JDLE1BQU07WUFDVixLQUFLLEVBQUU7Z0JBQ0gsSUFBSSxLQUFLLEdBQUcsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLENBQUM7Z0JBQ3ZCLElBQUksS0FBSyxHQUFHLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxDQUFDO2dCQUN2QixJQUFJLEtBQUssR0FBRyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxDQUFDO2dCQUN4QixJQUFJLENBQUMsU0FBUyxHQUFHLENBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLENBQUMsQ0FBQztnQkFDckMsTUFBTTtTQUNUO0lBQ1QsQ0FBQztJQUVELDJCQUFXLEdBQVg7UUFDSSxJQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBQztZQUN6QixLQUFJLElBQUksQ0FBQyxHQUFDLENBQUMsRUFBRSxDQUFDLEdBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxFQUFFLEVBQUM7Z0JBQ3RDLElBQUksR0FBRyxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUM7Z0JBQzVCLElBQUksQ0FBQyxHQUFHLElBQUksQ0FBQyxJQUFJLEdBQUcsR0FBRyxDQUFDLENBQUMsQ0FBQztnQkFDMUIsSUFBSSxDQUFDLEdBQUcsSUFBSSxDQUFDLElBQUksR0FBRyxHQUFHLENBQUMsQ0FBQyxDQUFDO2dCQUMxQixhQUFXLENBQUMsU0FBUyxDQUFDLGFBQWEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxZQUFZLENBQUMsVUFBVSxDQUFDLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDO2FBQ2hHO1NBQ0o7SUFDTCxDQUFDO0lBRUQsOEJBQWMsR0FBZDtRQUNJLElBQUcsSUFBSSxDQUFDLElBQUksSUFBSSxDQUFDLElBQUksSUFBSSxDQUFDLElBQUksSUFBSSxDQUFDLEVBQUM7WUFDaEMsT0FBTztTQUNWO1FBQ0QsSUFBRyxJQUFJLENBQUMsU0FBUyxFQUFDO1lBQ2QsSUFBRyxJQUFJLENBQUMsU0FBUyxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUM7Z0JBQ3pCLEtBQUksSUFBSSxDQUFDLEdBQUMsQ0FBQyxFQUFFLENBQUMsR0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLE1BQU0sRUFBRSxDQUFDLEVBQUUsRUFBQztvQkFDdEMsSUFBRyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxFQUFDO3dCQUNqQixJQUFJLEdBQUcsR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDO3dCQUM1QixJQUFJLENBQUMsR0FBRyxJQUFJLENBQUMsSUFBSSxHQUFHLEdBQUcsQ0FBQyxDQUFDLENBQUM7d0JBQzFCLElBQUksQ0FBQyxHQUFHLElBQUksQ0FBQyxJQUFJLEdBQUcsR0FBRyxDQUFDLENBQUMsQ0FBQzt3QkFDMUIsSUFBRyxhQUFXLENBQUMsU0FBUyxDQUFDLGFBQWEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBQzs0QkFDekMsSUFBRyxhQUFXLENBQUMsU0FBUyxDQUFDLGFBQWEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxZQUFZLENBQUMsVUFBVSxDQUFDO2dDQUNqRSxhQUFXLENBQUMsU0FBUyxDQUFDLGFBQWEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxZQUFZLENBQUMsVUFBVSxDQUFDLENBQUMsUUFBUSxHQUFHLEVBQUUsQ0FBQzt5QkFDeEY7cUJBQ0o7aUJBQ0o7YUFDSjtTQUNKO0lBRUwsQ0FBQztJQUNELGVBQWU7SUFDZiw4QkFBYyxHQUFkO1FBQ0ksUUFBTyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksRUFBQztZQUNsQixLQUFLLFFBQVE7Z0JBQ1QsT0FBTyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFDLEVBQUUsQ0FBQyxDQUFDO1lBQ3pCLEtBQUssUUFBUTtnQkFDVCxPQUFPLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUMsRUFBRSxDQUFDLENBQUM7WUFDekIsS0FBSyxRQUFRO2dCQUNULE9BQU8sRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBQyxFQUFFLENBQUMsQ0FBQztZQUN6QixLQUFLLFFBQVE7Z0JBQ1QsT0FBTyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFDLEVBQUUsQ0FBQyxDQUFDO1lBQ3pCLEtBQUssUUFBUTtnQkFDVCxPQUFPLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUMsRUFBRSxDQUFDLENBQUM7WUFDekIsS0FBSyxRQUFRO2dCQUNULE9BQU8sRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBQyxFQUFFLENBQUMsQ0FBQztZQUN6QixLQUFLLFFBQVE7Z0JBQ1QsT0FBTyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFDLEVBQUUsQ0FBQyxDQUFDO1lBQ3pCLEtBQUssUUFBUTtnQkFDVCxPQUFPLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUMsRUFBRSxDQUFDLENBQUM7WUFDekIsS0FBSyxRQUFRO2dCQUNULE9BQU8sRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBQyxFQUFFLENBQUMsQ0FBQztZQUN6QixLQUFLLFFBQVE7Z0JBQ1QsT0FBTyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFDLEVBQUUsQ0FBQyxDQUFDO1lBQ3pCLEtBQUssU0FBUztnQkFDVixPQUFPLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUMsRUFBRSxDQUFDLENBQUM7WUFDekIsS0FBSyxTQUFTO2dCQUNWLE9BQU8sRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBQyxFQUFFLENBQUMsQ0FBQztZQUN6QixLQUFLLFNBQVM7Z0JBQ1YsT0FBTyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFDLEVBQUUsQ0FBQyxDQUFDO1lBQ3pCLEtBQUssU0FBUztnQkFDVixPQUFPLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUMsRUFBRSxDQUFDLENBQUM7WUFDekIsS0FBSyxTQUFTO2dCQUNWLE9BQU8sRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBQyxFQUFFLENBQUMsQ0FBQztZQUN6QixLQUFLLFNBQVM7Z0JBQ1YsT0FBTyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFDLEVBQUUsQ0FBQyxDQUFDO1lBQ3pCLEtBQUssU0FBUztnQkFDVixPQUFPLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUMsRUFBRSxDQUFDLENBQUM7WUFDekIsS0FBSyxTQUFTO2dCQUNWLE9BQU8sRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBQyxFQUFFLENBQUMsQ0FBQztZQUN6QixLQUFLLFNBQVM7Z0JBQ1YsT0FBTyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFDLEVBQUUsQ0FBQyxDQUFDO1lBQ3pCLEtBQUssU0FBUztnQkFDVixPQUFPLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUMsRUFBRSxDQUFDLENBQUM7WUFDekIsS0FBSyxTQUFTO2dCQUNWLE9BQU8sRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBQyxFQUFFLENBQUMsQ0FBQztZQUN6QixLQUFLLFNBQVM7Z0JBQ1YsT0FBTyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFD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LElBQUksQ0FBQyxJQUFJLEtBQUssRUFBRSxFQUFFO2dDQUMxRSxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsR0FBRyxLQUFLLENBQUM7NkJBQ3ZCOzRCQUNELElBQUcsSUFBSSxDQUFDLEtBQUssS0FBSyxDQUFDLEVBQUM7Z0NBQ2hCLElBQUksQ0FBQyxLQUFLLEdBQUcsQ0FBQyxDQUFDOzZCQUNsQjt5QkFDSjs2QkFBTSxJQUFJLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxJQUFJLEtBQUssRUFBRTs0QkFDN0IsSUFBSSxJQUFJLENBQUMsU0FBUyxJQUFJLElBQUksQ0FBQyxLQUFLLEtBQUssQ0FBQyxJQUFJLElBQUksQ0FBQyxJQUFJLEtBQUssQ0FBQyxJQUFJLElBQUksQ0FBQyxJQUFJLEtBQUssRUFBRSxFQUFFO2dDQUMzRSxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsR0FBRyxLQUFLLENBQUM7NkJBQ3ZCOzRCQUNELElBQUcsSUFBSSxDQUFDLEtBQUssS0FBSyxDQUFDLEVBQUM7Z0NBQ2hCLElBQUksQ0FBQyxLQUFLLEdBQUcsQ0FBQyxDQUFDOzZCQUNsQjt5QkFDSjt3QkFFRCxJQUFJLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxHQUFHLEtBQUssRUFBRTs0QkFDckIsSUFBSSxJQUFJLENBQUMsUUFBUSxJQUFJLElBQUksQ0FBQyxLQUFLLEtBQUssQ0FBQyxJQUFJLElBQUksQ0FBQyxJQUFJLEtBQUssQ0FBQyxJQUFJLElBQUksQ0FBQyxJQUFJLEtBQUssRUFBRSxFQUFFO2dDQUMxRSxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsR0FBRyxLQUFLLENBQUM7NkJBQ3ZCOzRCQUNELElBQUcsSUFBSSxDQUFDLEtBQUssS0FBSyxDQUFDLEVBQUM7Z0NBQ2hCLElBQUksQ0FBQyxLQUFLLEdBQUcsQ0FBQyxDQUFDOzZCQUNsQjt5QkFDSjs2QkFBTSxJQUFJLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxJQUFJLEtBQUssRUFBRTs0QkFDN0IsSUFBSSxJQUFJLENBQUMsTUFBTSxJQUFJLElBQUksQ0FBQyxLQUFLLEtBQUssQ0FBQyxJQUFJLElBQUksQ0FBQyxJQUFJLEtBQUssQ0FBQyxJQUFJLElBQUksQ0FBQyxJQUFJLEtBQUssRUFBRSxFQUFFO2dDQUN4RSxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsR0FBRyxLQUFLLENBQUM7NkJBQ3ZCOzRCQUNELElBQUcsSUFBSSxDQUFDLEtBQUssS0FBSyxDQUFDLEVBQUM7Z0NBQ2hCLElBQUksQ0FBQyxLQUFLLEdBQUcsQ0FBQyxDQUFDOzZCQUNsQjt5QkFDSjtxQkFDSjt5QkFBTTt3QkFDSCxJQUFJLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxHQUFHLEtBQUssRUFBRTs0QkFDckIsSUFBSSxJQUFJLENBQUMsUUFBUSxJQUFJLElBQUksQ0FBQyxLQUFLLEtBQUssQ0FBQyxJQUFJLElBQUksQ0FBQyxJQUFJLEtBQUssQ0FBQyxJQUFJLElBQUksQ0FBQyxJQUFJLEtBQUssRUFBRSxFQUFFO2dDQUMxRSxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsR0FBRyxLQUFLLENBQUM7NkJBQ3ZCOzRCQUNELElBQUcsSUFBSSxDQUFDLEtBQUssS0FBSyxDQUFDLEVBQUM7Z0NBQ2hCLElBQUksQ0FBQyxLQUFLLEdBQUcsQ0FBQyxDQUFDOzZCQUNsQjt5QkFDSjs2QkFBTSxJQUFJLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxJQUFJLEtBQUssRUFBRTs0QkFDN0IsSUFBSSxJQUFJLENBQUMsTUFBTSxJQUFJLElBQUksQ0FBQyxLQUFLLEtBQUssQ0FBQyxJQUFJLElBQUksQ0FBQyxJQUFJLEtBQUssQ0FBQyxJQUFJLElBQUksQ0FBQyxJQUFJLEtBQUssRUFBRSxFQUFFO2dDQUN4RSxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsR0FBRyxLQUFLLENBQUM7NkJBQ3ZCOzRCQUNELElBQUcsSUFBSSxDQUFDLEtBQUssS0FBSyxDQUFDLEVBQUM7Z0NBQ2hCLElBQUksQ0FBQyxLQUFLLEdBQUcsQ0FBQyxDQUFDOzZCQUNsQjt5QkFDSjt3QkFFRCxJQUFJLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxHQUFHLEtBQUssRUFBRTs0QkFDckIsSUFBSSxJQUFJLENBQUMsUUFBUSxJQUFJLElBQUksQ0FBQyxLQUFLLEtBQUssQ0FBQyxJQUFJLElBQUksQ0FBQyxJQUFJLEtBQUssQ0FBQyxJQUFJLElBQUksQ0FBQyxJQUFJLEtBQUssRUFBRSxFQUFFO2dDQUMxRSxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsR0FBRyxLQUFLLENBQUM7NkJBQ3ZCOzRCQUNELElBQUcsSUFBSSxDQUFDLEtBQUssS0FBSyxDQUFDLEVBQUM7Z0NBQ2hCLElBQUksQ0FBQyxLQUFLLEdBQUcsQ0FBQyxDQUFDOzZCQUNsQjt5QkFDSjs2QkFBTSxJQUFJLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxJQUFJLEtBQUssRUFBRTs0QkFDN0IsSUFBSSxJQUFJLENBQUMsU0FBUyxJQUFJLElBQUksQ0FBQyxLQUFLLEtBQUssQ0FBQyxJQUFJLElBQUksQ0FBQyxJQUFJLEtBQUssQ0FBQyxJQUFJLElBQUksQ0FBQyxJQUFJLEtBQUssRUFBRSxFQUFFO2dDQUMzRSxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsR0FBRyxLQUFLLENBQUM7NkJBQ3ZCOzRCQUNELElBQUcsSUFBSSxDQUFDLEtBQUssS0FBSyxDQUFDLEVBQUM7Z0NBQ2hCLElBQUksQ0FBQyxLQUFLLEdBQUcsQ0FBQyxDQUFDOzZCQUNsQjt5QkFDSjtxQkFDSjtpQkFDSjtnQkFDTCxtQ0FBZSxDQUFDLFlBQVksQ0FBQyxFQUFFLENBQUMsQ0FBQzthQUNoQztZQUNELGNBQWM7WUFDZCxJQUFJLENBQUMsVUFBVSxHQUFHLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO1NBRXJDO1FBQ0QsSUFBRyxJQUFJLENBQUMsSUFBSSxJQUFJLFNBQVMsQ0FBQyxJQUFJLElBQUksSUFBSSxDQUFDLFNBQVMsSUFBSSxJQUFJLEVBQUM7WUFDckQsSUFBRyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDLElBQUcsQ0FBQyxFQUFDO2dCQUMzQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUM7Z0JBQ3ZELElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQzthQUMxRDtTQUNKO1FBQ0QsSUFBRyxJQUFJLENBQUMsVUFBVSxFQUFDO1lBQ2YsSUFBRyxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksSUFBSSxJQUFJLEVBQUM7Z0JBQ3hCLElBQUcsSUFBSSxDQUFDLElBQUksSUFBSSxTQUFTLENBQUMsR0FBRyxFQUFDO29CQUMxQixJQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQyxJQUFHLENBQUMsSUFBSSxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUMsSUFBRSxDQUFDLElBQUksSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLElBQUcsSUFBSSxFQUFDO3dCQUN4RSxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUM7d0JBQ3ZELElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQztxQkFDMUQ7b0JBQ0QsSUFBRyxJQUFJLENBQUMsT0FBTyxJQUFLLElBQUksSUFBSSxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsT0FBTyxDQUFDLENBQUMsT0FBTyxJQUFJLEtBQUssRUFBQzt3QkFDcEYsbUNBQWUsQ0FBQyxZQUFZLENBQUMsRUFBRSxDQUFDLENBQUM7d0JBQ2pDLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQzt3QkFDdkQsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDO3FCQUMxRDtpQkFDSjthQUNSO1NBQ0o7SUFFTCxDQUFDO0lBcHBDRDtRQUpDLFFBQVEsQ0FBQztZQUNOLE9BQU8sRUFBRSxxQkFBcUI7WUFDOUIsSUFBSSxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDO1NBQzNCLENBQUM7dUNBQzhCO0lBTWhDO1FBSkMsUUFBUSxDQUFDO1lBQ04sT0FBTyxFQUFFLHFCQUFxQjtZQUM5QixJQUFJLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUM7U0FDNUIsQ0FBQzt3Q0FDZ0M7SUFNbEM7UUFKQyxRQUFRLENBQUM7WUFDTixPQUFPLEVBQUUsTUFBTTtZQUNmLElBQUksRUFBRSxFQUFFLENBQUMsT0FBTztTQUNuQixDQUFDO3VDQUNlO0lBTWpCO1FBSkMsUUFBUSxDQUFDO1lBQ04sT0FBTyxFQUFFLE1BQU07WUFDZixJQUFJLEVBQUUsRUFBRSxDQUFDLE9BQU87U0FDbkIsQ0FBQztzQ0FDYztJQUdoQjtRQURDLFFBQVEsQ0FBQyxFQUFFLENBQUMsV0FBVyxDQUFDO2tEQUNjO0lBeEN0QixLQUFLO1FBRHpCLE9BQU87T0FDYSxLQUFLLENBd3FDekI7SUFBRCxZQUFDO0NBeHFDRCxBQXdxQ0MsQ0F4cUNrQyxFQUFFLENBQUMsU0FBUyxHQXdxQzlDO2tCQXhxQ29CLEtBQUsiLCJmaWxlIjoiIiwic291cmNlUm9vdCI6Ii8iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgQ29sbGlzaW9uRGV0ZWN0aW9uIGZyb20gXCIuL0NvbGxpc2lvbkRldGVjdGlvblwiO1xyXG5pbXBvcnQgeyBMUUNvbGxpZGVTeXN0ZW0gfSBmcm9tIFwiLi9scV9jb2xsaWRlX3N5c3RlbS9scV9jb2xsaWRlX3N5c3RlbVwiO1xyXG5pbXBvcnQgTWFwQ29ucm9sZXIgZnJvbSBcIi4vTWFwXCI7XHJcblxyXG5jb25zdCB7Y2NjbGFzcywgcHJvcGVydHl9ID0gY2MuX2RlY29yYXRvcjtcclxuIGV4cG9ydCBlbnVtIEJsb2NrVHlwZXtcclxuICAgIC8q5pmu6YCa5Zyw5Z2XICovXHJcbiAgICBcIuaZrumAmuWdl1wiID0gMCwgIFxyXG4gICAgLyrotbfngrnlnLDlnZcgKi9cclxuICAgIFwi5Y+g5Yqg5Z2X5LiLXCIgPSAxLCAgXHJcbiAgICAvKua5v+WcsCAqL1xyXG4gICAgXCLpkqXljJnlnZdcIiA9IDIsICBcclxuICAgIC8q5bGx5bOwICovXHJcbiAgICBcIuS4iumUgeWdl1wiID0gMywgIFxyXG4gICAgLyrnu4jngrnlnLDlnZcgKi9cclxuICAgIFwi5Ya757uT5Z2XXCIgPSA0LCAgXHJcbiAgICAvKuaBr+WjpCAqL1xyXG4gICAgXCLmmJ/mmJ/lnZdcIiA9IDUsICAgXHJcbiAgICAvKuWKoOWbuiAqL1xyXG4gICAgXCLngrjlvLnlnZdcIiA9IDYsICBcclxuICAgIC8q5Yqg5Zu6ICovXHJcbiAgICBcIuawtOW5s+Wdl1wiID0gNywgIFxyXG4gICAgLyrliqDlm7ogKi9cclxuICAgIFwi5Z6C55u05Z2XXCIgPSA4LCAgXHJcbiAgICAvKuWKoOWbuiAqL1xyXG4gICAgXCLnspjlkIjlnZdcIiA9IDksICBcclxuICAgIC8q5Yqg5Zu6ICovXHJcbiAgICBcIuWPoOWKoOWdl+S4ilwiID0gMTAsICBcclxufVxyXG5cclxuZXhwb3J0IGVudW0gQmxvY2tDb2xvcntcclxuXHJcbiAgICAvKui1t+eCueWcsOWdlyAqL1xyXG4gICAgXCLntKvoibJcIiA9IDAsICBcclxuICAgIC8q5rm/5ZywICovXHJcbiAgICBcIum7hOiJslwiID0gMSwgIFxyXG4gICAgLyrlsbHls7AgKi9cclxuICAgIFwi57u/6ImyXCIgPSAyLCAgXHJcbiAgICAvKue7iOeCueWcsOWdlyAqL1xyXG4gICAgXCLok53oibJcIiA9IDMsICBcclxuICAgIC8q5oGv5aOkICovXHJcbiAgICBcIueyieiJslwiID0gNCwgIFxyXG4gICAgLyrliqDlm7ogKi9cclxuICAgIFwi5qmY6buE6ImyXCIgPSA1LCAgXHJcbiAgICAvKuWKoOWbuiAqL1xyXG4gICAgXCLpnZLoibJcIiA9IDYsICBcclxuICAgIC8q5Yqg5Zu6ICovXHJcbiAgICBcIueZveiJslwiID0gNywgIFxyXG4gICAgLyrliqDlm7ogKi9cclxuICAgIFwi57qi6ImyXCIgPSA4LCAgXHJcbiAgICAvKuWKoOWbuiAqL1xyXG4gICAgXCLngbDoibJcIiA9IDksXHJcbn1cclxuXHJcbmV4cG9ydCBlbnVtIFBhdGhUeXBle1xyXG4gICAgZXJyID0gXCJlcnJcIixcclxuICAgIHVwID0gXCJ1cFwiLCAgXHJcbiAgICBkb3duID0gXCJkb3duXCIsICBcclxuICAgIGxlZnQgPSBcImxlZnRcIixcclxuICAgIHJpZ2h0ID0gXCJyaWdodFwiLFxyXG4gICAgdXBfbGVmdCA9IFwidXBfbGVmdFwiLFxyXG4gICAgdXBfcmlnaHQgPSBcInVwX3JpZ2h0XCIsXHJcbiAgICBkb3duX2xlZnQgPSBcImRvd25fbGVmdFwiLFxyXG4gICAgZG93bl9yaWdodCA9IFwiZG93bl9yaWdodFwiLFxyXG4gICAgbGVmdF91cCA9IFwibGVmdF91cFwiLFxyXG4gICAgbGVmdF9kb3duID0gXCJsZWZ0X2Rvd25cIixcclxuICAgIHJpZ2h0X3VwID0gXCJyaWdodF91cFwiLFxyXG4gICAgcmlnaHRfZG93biA9IFwicmlnaHRfZG93blwiLFxyXG59XHJcbkBjY2NsYXNzXHJcbmV4cG9ydCBkZWZhdWx0IGNsYXNzIEJsb2NrIGV4dGVuZHMgY2MuQ29tcG9uZW50IHtcclxuXHJcbiAgICAvLyDmlrDlop7nvJPlrZjlj5jph49cclxuICAgIHByaXZhdGUgbW92ZUludGVydmFsID0gMDsgLy8g57qmIDYwIEZQUyBcclxuICAgIHByaXZhdGUgbGFzdE1vdmVUaW1lID0gMDsgIC8vIOS4iuS4i+S4pOS4quWAvOadpeiwg+iKgui3n+aJi++8jOS4gOS4quaYr+aXtumXtOi9tO+8jOS4gOS4quaYr+i3neemu+i9tFxyXG4gICAgcHJpdmF0ZSBtYXhTcGVlZCA9IDMwMDsgICAgLy8gIOacgOWkp+enu+WKqOi3neemu1xyXG5cclxuICAgIC8vIHByaXZhdGUgb3RoZXJDb2xsaWRlcjogY2MuQ29sbGlkZXIgPSBudWxsO1xyXG4gICAgLy8gQHByb3BlcnR5KHtcclxuICAgIC8vICAgICB0b29sdGlwOiAn56Kw5pKe5b2i54q277yMTm9uZeWwseaYr+aXoOaVjO+8jOS4jeWPguS4jueisOaSnicsXHJcbiAgICAvLyAgICAgdHlwZTogY2MuRW51bShCbG9ja1R5cGUpLFxyXG4gICAgLy8gICAgIC8vIGRlZmF1bHQ6IEJsb2NrVHlwZS5Ob21hbCxcclxuICAgIC8vICAgICBkaXNwbGF5TmFtZTogJ+eisOaSnuW9oueKtidcclxuICAgIC8vIH0pXHJcbiAgICBcclxuICAgIEBwcm9wZXJ0eSh7XHJcbiAgICAgICAgdG9vbHRpcDogJ+eisOaSnuW9oueKtu+8jE5vbmXlsLHmmK/ml6DmlYzvvIzkuI3lj4LkuI7norDmkp4nLFxyXG4gICAgICAgIHR5cGU6IGNjLkVudW0oQmxvY2tUeXBlKSxcclxuICAgIH0pXHJcbiAgICB0eXBlOiBCbG9ja1R5cGUgPSBCbG9ja1R5cGUu5pmu6YCa5Z2XO1xyXG5cclxuICAgIEBwcm9wZXJ0eSh7XHJcbiAgICAgICAgdG9vbHRpcDogJ+eisOaSnuW9oueKtu+8jE5vbmXlsLHmmK/ml6DmlYzvvIzkuI3lj4LkuI7norDmkp4nLFxyXG4gICAgICAgIHR5cGU6IGNjLkVudW0oQmxvY2tDb2xvciksXHJcbiAgICB9KVxyXG4gICAgY29sb3I6IEJsb2NrQ29sb3IgPSBCbG9ja0NvbG9yLue0q+iJsjtcclxuXHJcbiAgICBAcHJvcGVydHkoe1xyXG4gICAgICAgIHRvb2x0aXA6ICfmqKrlkJHplb/luqYnLFxyXG4gICAgICAgIHR5cGU6IGNjLkludGVnZXIsXHJcbiAgICB9KVxyXG4gICAgaGVuZzogTnVtYmVyID0gMTtcclxuXHJcbiAgICBAcHJvcGVydHkoe1xyXG4gICAgICAgIHRvb2x0aXA6ICfnq5blkJHplb/luqYnLFxyXG4gICAgICAgIHR5cGU6IGNjLkludGVnZXIsXHJcbiAgICB9KVxyXG4gICAgc2h1OiBOdW1iZXIgPSAxO1xyXG5cclxuICAgIEBwcm9wZXJ0eShjYy5TcHJpdGVBdGxhcylcclxuICAgIGljZV9TcHJpdGVGcmFtZTogY2MuU3ByaXRlQXRsYXMgPSBudWxsO1xyXG5cclxuXHJcbiAgICAvLyBMSUZFLUNZQ0xFIENBTExCQUNLUzpcclxuICAgIC8vIEBwcm9wZXJ0eShjYy5TcHJpdGVBdGxhcylcclxuICAgIC8vIFVJOiBjYy5TcHJpdGVBdGxhcyA9IG51bGw7XHJcbiAgICBwcml2YXRlIGluaXRpYWxUb3VjaE9mZnNldDogY2MuVmVjMiA9IG51bGw7XHJcbiAgICBwcml2YXRlIG9mZnNldFRvbGVyYW5jZSA9IDEwMDsgLy8g5YGP56e75a655b+N5bqmOyBcclxuXHJcbiAgICBhbGxCbG9ja3M6YW55OyAgICAgICAvL+aJgOacieeahOaWueWdlyznlKjkuo7orqHnrpdwb3NYLHBvc1nmtojpmaRcclxuICAgIHRvdWNoUG9pbnQ6IGNjLlZlYzIgPSBudWxsOyAgICAgLy/op6bmkbjngrlcclxuICAgIGlzVG91Y2g6IGJvb2xlYW4gPSBmYWxzZTsgICAgICAgLy/mmK/lkKbop6bmkbhcclxuICAgIHBvc1g6IG51bWJlciA9IDA7ICAgICAgICAgICAgICAgLy/lnLDlm77lnZfnmoRY5Z2Q5qCHXHJcbiAgICBwb3NZOiBudW1iZXIgPSAwOyAgICAgICAgICAgICAgIC8v5Zyw5Zu+5Z2X55qEWeWdkOagh1xyXG4gICAgbW92ZUxlZnQ6IGJvb2xlYW4gPSB0cnVlOyAgICAgIC8v5piv5ZCm5Y+v5Lul5bem56e7O1xyXG4gICAgbW92ZVJpZ2h0OiBib29sZWFuID0gdHJ1ZTsgICAgIC8v5piv5ZCm5Y+v5Lul5Y+z56e7O1xyXG4gICAgbW92ZVVwOiBib29sZWFuID0gdHJ1ZTsgICAgICAgIC8v5piv5ZCm5Y+v5Lul5LiK56e7O1xyXG4gICAgbW92ZURvd246IGJvb2xlYW4gPSB0cnVlOyAgICAgIC8v5piv5ZCm5Y+v5Lul5LiL56e7O1xyXG4gICAgbW92ZUNvcm5lcjogbnVtYmVyID0gMDsgICAgICAgIC8v5piv5ZCm56Kw5pKe6KeS6JC9XHJcbiAgICBtb3ZlWTpudW1iZXIgPSAwOyAgICAgICAgICAvL+aYr+WQpuWPr+S7peS4iuS4i+enu+WKqDtcclxuICAgIG1vdmVYOm51bWJlciA9IDA7ICAgICAgICAgIC8v5piv5ZCm5Y+v5Lul5bem5Y+z56e75YqoO1xyXG4gICAgdG91Y2hQb2ludFg6IG51bWJlciA9IDA7ICAgICAgICAvL+inpuaRuOeCuVjlnZDmoIc7XHJcbiAgICB0b3VjaFBvaW50WTogbnVtYmVyID0gMDsgICAgICAgIC8v6Kem5pG454K5WeWdkOaghztcclxuICAgIGJsb2NrSWQ6IG51bWJlciA9IDA7ICAgICAgICAgICAgLy/mlrnlnZdJRDtcclxuICAgIHN0YWNraW5nOiBjYy5WZWMyOyAgICAgICAgICAgICAgLy/lj6DliqDmlrnlnZdcclxuICAgIGFkaGVzaXZlOiBjYy5WZWMyOyAgICAgICAgICAgICAgLy/nspjlkIjmlrnlnZdcclxuICAgIGxldmVsOiBudW1iZXIgPSAwOyAgICAgICAgICAgIC8v5Y+g5Yqg5pa55Z2X5bGC5pWwO1xyXG4gICAgcHo6IGJvb2xlYW4gPSBmYWxzZTtcclxuICAgIG92ZXI6IGJvb2xlYW4gPSBmYWxzZTsgICAgICAvL+aWueWdl+aYr+WQpuWkseaViOW3sua2iOWksVxyXG4gICAgY29sbGlkZXI6IGFueTtcclxuICAgIGJsb2NrX0luZm86YW55O1xyXG4gICAgX3RvdWNoTGlzdGVuZXI6IGFueTtcclxuICAgIHJlbGF0aXZlX1Bvc2l0aW9uOmNjLlZlYzI7ICAvL+eCueWHu+WSjOaWueWdl+ebuOWvueS9jee9rlxyXG4gICAgcHJpdmF0ZSBfZXZlbnRNYW5hZ2VyOiBhbnk7XHJcbiAgICBoaXQ6IGNjLk5vZGU7XHJcbiAgICBvdGhlckNvbGxpZGVyOiBhbnk7XHJcbiAgICBtb3ZlU3RhY2s6IGJvb2xlYW47XHJcbiAgICB0b3VjaERlbHRhOiBjYy5WZWMyID0gY2MudjIoMCwgMCk7IFxyXG4gICAgYWRoZXNpdmVOb2RlOiBhbnk7XHJcbiAgICBjaGVja0NvbGxpc2lvbjogYm9vbGVhbiA9IGZhbHNlO1xyXG5cclxuXHJcblxyXG4gICAgb25Mb2FkICgpIHtcclxuICAgICAgICB0aGlzLnB6ID0gZmFsc2U7XHJcbiAgICAgICAgdGhpcy5zdGFja2luZyA9IGNjLnYyKDAsMCk7XHJcbiAgICAgICAgdGhpcy5hZGhlc2l2ZSA9IGNjLnYyKDAsMCk7XHJcbiAgICAgICAgdGhpcy5hZGhlc2l2ZU5vZGUgPSBbXTtcclxuICAgICAgICB0aGlzLmNvbGxpZGVyID0gdGhpcy5ub2RlLmdldENvbXBvbmVudChjYy5Qb2x5Z29uQ29sbGlkZXIpO1xyXG4gICAgICAgIHRoaXMub3ZlciA9IGZhbHNlO1xyXG4gICAgICAgIHRoaXMuY2hlY2tDb2xsaXNpb24gPSBmYWxzZTtcclxuICAgIH1cclxuXHJcblxyXG4gICAgc3RhcnQgKCkge1xyXG5cclxuICAgIH1cclxuXHJcbiAgICBqc29uRGVlcENsb25lPFQ+KG9iajogVCk6IFQge1xyXG4gICAgICAgIHJldHVybiBKU09OLnBhcnNlKEpTT04uc3RyaW5naWZ5KG9iaikpO1xyXG4gICAgfVxyXG4gICAgLy9jcmVhdGVBZCDkuLrmmK/lkKbliJvlu7rnspjlkIjlv6vlm77niYdcclxuICAgIGluaXQoYmxvY2tfSW5mbyxwb3NYLHBvc1ksbm9kZSxjcmVhdGVBZCl7XHJcbiAgICAgICAgdGhpcy5ibG9ja19JbmZvID0gdGhpcy5qc29uRGVlcENsb25lKGJsb2NrX0luZm8pO1xyXG4gICAgICAgIGlmKG5vZGUpIHRoaXMuYmxvY2tfSW5mby5ub2RlID0gbm9kZTtcclxuICAgICAgICB0aGlzLnR5cGUgPSBibG9ja19JbmZvLnR5cGU7XHJcbiAgICAgICAgdGhpcy5jb2xvciA9IGJsb2NrX0luZm8uY29sb3I7XHJcbiAgICAgICAgdGhpcy5ibG9ja0lkID0gYmxvY2tfSW5mby5pZDtcclxuICAgICAgICAvLyBpZihwb3NYJiZwb3NZKXtcclxuICAgICAgICAvLyAgICAgdGhpcy5wb3NYID0gcG9zWDtcclxuICAgICAgICAvLyAgICAgdGhpcy5wb3NZID0gcG9zWTtcclxuICAgICAgICAvLyB9XHJcblxyXG4gICAgICAgIC8vIGNvbnNvbGUubG9nKFwi5pa55Z2X5bGC57qnXCIsdGhpcy5ub2RlLnpJbmRleCk7XHJcbiAgICAgICAgdGhpcy5pbml0Q29sb3IoKTtcclxuICAgICAgICB0aGlzLmluaXRUeXBlKCk7XHJcbiAgICAgICAgdGhpcy5pbml0QmxvY2tzKCk7XHJcblxyXG4gICAgICAgIGlmKHRoaXMudHlwZSAhPSBCbG9ja1R5cGUu5Y+g5Yqg5Z2X5LiKKXtcclxuICAgICAgICAgICAgdGhpcy5ub2RlLm9uKGNjLk5vZGUuRXZlbnRUeXBlLlRPVUNIX1NUQVJULCB0aGlzLnRvdWNoU3RhcnQsIHRoaXMpO1xyXG4gICAgICAgICAgICB0aGlzLm5vZGUub24oY2MuTm9kZS5FdmVudFR5cGUuVE9VQ0hfTU9WRSwgdGhpcy50b3VjaE1vdmUsIHRoaXMpO1xyXG4gICAgICAgICAgICB0aGlzLm5vZGUub24oY2MuTm9kZS5FdmVudFR5cGUuVE9VQ0hfQ0FOQ0VMLCB0aGlzLnRvdWNoRW5kLCB0aGlzKTtcclxuICAgICAgICAgICAgdGhpcy5ub2RlLm9uKGNjLk5vZGUuRXZlbnRUeXBlLlRPVUNIX0VORCwgdGhpcy50b3VjaEVuZCwgdGhpcyk7XHJcbiAgICAgICAgICAgIHRoaXMubm9kZVsnX3RvdWNoTGlzdGVuZXInXS5zZXRTd2FsbG93VG91Y2hlcyhmYWxzZSk7XHJcbiAgICAgICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgaWYodGhpcy50eXBlID09IEJsb2NrVHlwZS7nspjlkIjlnZcpe1xyXG4gICAgICAgICAgICAgICAgICAgICAgLy8g6K6h566X5L2N572u5YGP56e7XHJcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgcG9zT2Zmc2V0ID0gY2MudjIoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMubm9kZS54IC0gdGhpcy5ibG9ja19JbmZvLm5vZGUueCxcclxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5ub2RlLnkgLSB0aGlzLmJsb2NrX0luZm8ubm9kZS55XHJcbiAgICAgICAgICAgICAgICAgICAgKTtcclxuICAgICAgICAgICAgICAgICAgICBpZihjcmVhdGVBZCl7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmKHRoaXMubm9kZS56SW5kZXggPj0gdGhpcy5ibG9ja19JbmZvLm5vZGUuekluZGV4KVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5jcmVhdGVBZGhlc2l2ZSgpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBlbHNlICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5ibG9ja19JbmZvLm5vZGUuZ2V0Q29tcG9uZW50KFwiQmxvY2tcIikuY3JlYXRlQWRoZXNpdmUoKTtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgdGFyZ2V0TmFtZXMgPSBbJ3RvcCcsICdkb3duJywgJ2xlZnQnLCAncmlnaHQnXTtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLmJsb2NrX0luZm8ubm9kZS5jaGlsZHJlbi5mb3JFYWNoKGNoaWxkID0+IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGNoaWxkIGluc3RhbmNlb2YgY2MuTm9kZSAmJiB0YXJnZXROYW1lcy5pbmNsdWRlcyhjaGlsZC5uYW1lKSAmJiBjaGlsZC5nZXRDb21wb25lbnQoXCJscV9jb2xsaWRlXCIpLmRhdGFfc3RyaW5nICE9IFwiLTFcIikge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2xvbmVkQ2hpbGQgPSBjYy5pbnN0YW50aWF0ZShjaGlsZCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbG9uZWRDaGlsZC5nZXRDb21wb25lbnQoXCJscV9jb2xsaWRlXCIpLmRhdGFfc3RyaW5nID0gXCItMVwiO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xvbmVkQ2hpbGQucGFyZW50ID0gdGhpcy5ub2RlO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8g6I635Y+W5a2Q6IqC54K555u45a+55LqO54i26IqC54K555qE5L2N572uXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCByZWxhdGl2ZVBvcyA9IGNoaWxkLmdldFBvc2l0aW9uKCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyDosIPmlbTlrZDoioLngrnkvY3nva7ku6Xkv53or4Hnm7jlr7nkvY3nva7kuI3lj5hcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsb25lZENoaWxkLnNldFBvc2l0aW9uKFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlbGF0aXZlUG9zLnggLSBwb3NPZmZzZXQueCxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWxhdGl2ZVBvcy55IC0gcG9zT2Zmc2V0LnlcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH0gXHJcbiAgICAgICAgICAgICAgICAgICAgfSk7XHJcblxyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuYWRoZXNpdmUgPSBwb3NPZmZzZXQ7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH0sIDEwMCk7XHJcblxyXG5cclxuXHJcbiAgICAgICAgICAgIGxldCBtYXBJbmZvID0gTWFwQ29ucm9sZXIuX2luc3RhbmNlLm1hcEluZm87XHJcbiAgICAgICAgICAgIGZvcihsZXQgaT0wOyBpPG1hcEluZm8ubGVuZ3RoOyBpKyspe1xyXG4gICAgICAgICAgICAgICAgbGV0IGJsb2NrUmVjdCA9IG1hcEluZm9baV0uZ2V0Qm91bmRpbmdCb3goKTtcclxuICAgICAgICAgICAgICAgIC8vIOS9v+eUqCBjYy5JbnRlcnNlY3Rpb24ucG9pbnRJblJlY3Qg5pa55rOV5Yik5pat54K55piv5ZCm5Zyo55+p5b2i6IyD5Zu05YaFXHJcbiAgICAgICAgICAgICAgICBsZXQgcG9pbnQgPSBjYy52Mih0aGlzLm5vZGUucG9zaXRpb24ueC01LCB0aGlzLm5vZGUucG9zaXRpb24ueSsxMClcclxuICAgICAgICAgICAgICAgIGlmKGJsb2NrUmVjdC5jb250YWlucyhwb2ludCkpe1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMucG9zWCA9IG1hcEluZm9baV0uZ2V0Q29tcG9uZW50KFwiTWFwQmxvY2tcIikucG9zWDtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLnBvc1kgPSBtYXBJbmZvW2ldLmdldENvbXBvbmVudChcIk1hcEJsb2NrXCIpLnBvc1k7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5zZXRNYXBCbG9jaygpO1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMubGV2ZWwgPSA1MCArIHRoaXMucG9zWCAtIHRoaXMucG9zWSozO1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMubm9kZS56SW5kZXggPSB0aGlzLmxldmVsO1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMubm9kZS54ID0gbWFwSW5mb1tpXS54ICsgNjU7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5ub2RlLnkgPSBtYXBJbmZvW2ldLnkgLSA2MDtcclxuICAgICAgICAgICAgICAgICAgICBpPSAxMDAwMDtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLmhpdCA9IG5ldyBjYy5Ob2RlKCk7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5oaXQuYWRkQ29tcG9uZW50KGNjLlNwcml0ZSk7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5oaXQucGFyZW50ID0gdGhpcy5ub2RlO1xyXG4gICAgICAgICAgICAgICAgICAgIGxldCBuYW1lID0gXCJ4el9cIit0aGlzLmJsb2NrX0luZm8uYmxvY2s7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5oaXQuZ2V0Q29tcG9uZW50KGNjLlNwcml0ZSkuc3ByaXRlRnJhbWUgPSB0aGlzLmljZV9TcHJpdGVGcmFtZS5fc3ByaXRlRnJhbWVzW25hbWVdO1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuaGl0LnNldEFuY2hvclBvaW50KHRoaXMubm9kZS5hbmNob3JYLHRoaXMubm9kZS5hbmNob3JZKTtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLmhpdC5zZXRQb3NpdGlvbigxMywtMTEpO1xyXG4gICAgICAgICAgICAgICAgICAgIGlmKHRoaXMuaGl0LmFuY2hvclggPT0gMC41KSB0aGlzLmhpdC5zZXRQb3NpdGlvbigwLC0xMSk7XHJcbiAgICAgICAgICAgICAgICAgICAgZWxzZSBpZih0aGlzLmhpdC5hbmNob3JYID09IDAuMzMpIHRoaXMuaGl0LnNldFBvc2l0aW9uKC0xMywtMTEpO1xyXG4gICAgICAgICAgICAgICAgICAgIGVsc2UgaWYodGhpcy5oaXQuYW5jaG9yWCA9PSAwLjY2KSB0aGlzLmhpdC5zZXRQb3NpdGlvbigyLC05KTtcclxuICAgICAgICAgICAgICAgICAgICAvLyB0aGlzLmhpdC5vcGFjaXR5ID0gMDtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLmhpdC5hY3RpdmUgPSBmYWxzZTtcclxuICAgICAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuXHJcbiAgICB9XHJcblxyXG5cclxuXHJcbiAgICAvL+WIneWni+WMluaWueWdl+exu+Wei1xyXG4gICAgaW5pdFR5cGUoKXtcclxuICAgICAgICBsZXQgcG9zQ29uZmlnID0gY2MuZnguR2FtZUNvbmZpZy5QUk9QX0lORk9bdGhpcy5ibG9ja19JbmZvLmJsb2NrXTtcclxuICAgICAgICBcclxuICAgICAgICBzd2l0Y2godGhpcy50eXBlKXtcclxuICAgICAgICAgICAgY2FzZSBCbG9ja1R5cGUu54K45by55Z2XOlxyXG4gICAgICAgICAgICAgICAgbGV0IGJvb20gPSBjYy5pbnN0YW50aWF0ZShNYXBDb25yb2xlci5faW5zdGFuY2UuQmxvY2tfUHJvcFt0aGlzLnR5cGVdKTtcclxuICAgICAgICAgICAgICAgIGJvb20ucGFyZW50ID0gdGhpcy5ub2RlO1xyXG4gICAgICAgICAgICAgICAgYm9vbS5zZXRQb3NpdGlvbihwb3NDb25maWcucG9zMS54LHBvc0NvbmZpZy5wb3MxLnkpO1xyXG4gICAgICAgICAgICAgICAgaWYodGhpcy5ibG9ja19JbmZvPy5ib29tVGltZSkgXHJcbiAgICAgICAgICAgICAgICAgICAgYm9vbS5nZXRDb21wb25lbnQoXCJCb29tXCIpLmluaXQodGhpcy5ibG9ja19JbmZvLmJvb21UaW1lKTtcclxuICAgICAgICAgICAgICAgIGJyZWFrOyBcclxuICAgICAgICAgICAgY2FzZSBCbG9ja1R5cGUu5pif5pif5Z2XOlxyXG4gICAgICAgICAgICAgICAgbGV0IHN0YXIgPSBjYy5pbnN0YW50aWF0ZShNYXBDb25yb2xlci5faW5zdGFuY2UuQmxvY2tfUHJvcFt0aGlzLnR5cGVdKTtcclxuICAgICAgICAgICAgICAgIHN0YXIuYW5jaG9yWCA9IHRoaXMubm9kZS5hbmNob3JYO1xyXG4gICAgICAgICAgICAgICAgc3Rhci5hbmNob3JZID0gdGhpcy5ub2RlLmFuY2hvclk7XHJcbiAgICAgICAgICAgICAgICBzdGFyLmdldENvbXBvbmVudChjYy5TcHJpdGUpLnNwcml0ZUZyYW1lID0gc3Rhci5nZXRDb21wb25lbnQoXCJTdGFyXCIpLnN0YXJfU3ByaXRlRnJhbWUuZ2V0U3ByaXRlRnJhbWUoXCJzdGFyX1wiK3RoaXMuYmxvY2tfSW5mby5ibG9jayk7XHJcbiAgICAgICAgICAgICAgICBzdGFyLnBhcmVudCA9IHRoaXMubm9kZTtcclxuICAgICAgICAgICAgICAgIHN0YXIuc2V0UG9zaXRpb24ocG9zQ29uZmlnLnBvczQueCAtIDEwLHBvc0NvbmZpZy5wb3M0LnkpO1xyXG4gICAgICAgICAgICBjYXNlIEJsb2NrVHlwZS7pkqXljJnlnZc6XHJcbiAgICAgICAgICAgICAgICBsZXQga2V5ID0gY2MuaW5zdGFudGlhdGUoTWFwQ29ucm9sZXIuX2luc3RhbmNlLkJsb2NrX1Byb3BbdGhpcy50eXBlXSk7XHJcbiAgICAgICAgICAgICAgICBrZXkucGFyZW50ID0gdGhpcy5ub2RlO1xyXG4gICAgICAgICAgICAgICAga2V5LnNldFBvc2l0aW9uKHBvc0NvbmZpZy5wb3MxLngscG9zQ29uZmlnLnBvczEueSk7XHJcbiAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgY2FzZSBCbG9ja1R5cGUu5LiK6ZSB5Z2XOlxyXG4gICAgICAgICAgICAgICAgbGV0IGxvY2sgPSBjYy5pbnN0YW50aWF0ZShNYXBDb25yb2xlci5faW5zdGFuY2UuQmxvY2tfUHJvcFt0aGlzLnR5cGVdKTtcclxuICAgICAgICAgICAgICAgIGxvY2sucGFyZW50ID0gdGhpcy5ub2RlO1xyXG4gICAgICAgICAgICAgICAgbG9jay5zZXRQb3NpdGlvbihwb3NDb25maWcucG9zMS54LHBvc0NvbmZpZy5wb3MxLnkpO1xyXG4gICAgICAgICAgICAgICAgbG9jay5nZXRDb21wb25lbnQoXCJMb2NrXCIpLmluaXQodGhpcy5ibG9ja19JbmZvLmxvY2tUaW1lKTtcclxuICAgICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICBjYXNlIEJsb2NrVHlwZS7lhrvnu5PlnZc6XHJcbiAgICAgICAgICAgICAgICBsZXQgZnJlZXplID0gY2MuaW5zdGFudGlhdGUoTWFwQ29ucm9sZXIuX2luc3RhbmNlLkJsb2NrX1Byb3BbdGhpcy50eXBlXSk7XHJcbiAgICAgICAgICAgICAgICBmcmVlemUucGFyZW50ID0gdGhpcy5ub2RlO1xyXG4gICAgICAgICAgICAgICAgbGV0ICBuYW1lID0gXCJpY2VfXCIrdGhpcy5ibG9ja19JbmZvLmJsb2NrO1xyXG4gICAgICAgICAgICAgICAgbGV0IHNwcml0ZUZyYW1lID0gdGhpcy5pY2VfU3ByaXRlRnJhbWUuX3Nwcml0ZUZyYW1lc1tuYW1lXTtcclxuICAgICAgICAgICAgICAgIGZyZWV6ZS5nZXRDaGlsZEJ5TmFtZShcImljb25cIikuZ2V0Q29tcG9uZW50KGNjLlNwcml0ZSkuc3ByaXRlRnJhbWUgPSBzcHJpdGVGcmFtZTtcclxuICAgICAgICAgICAgICAgIGxldCBmcmVlemVYID0gcG9zQ29uZmlnLnBvczYueC0odGhpcy5ub2RlLndpZHRoKih0aGlzLm5vZGUuYW5jaG9yWC0wLjUpKTsgbGV0IGZyZWV6ZVkgPSBwb3NDb25maWcucG9zNi55ICsgdGhpcy5ub2RlLmhlaWdodC8yO1xyXG4gICAgICAgICAgICAgICAgZnJlZXplLnNldFBvc2l0aW9uKGZyZWV6ZVgsZnJlZXplWSk7XHJcbiAgICAgICAgICAgICAgICBmcmVlemUuZ2V0Q29tcG9uZW50KFwiRnJlZXplXCIpLmluaXQodGhpcy5ibG9ja19JbmZvLmZyZWV6ZVRpbWUpO1xyXG4gICAgICAgICAgICAgICAgZnJlZXplLmdldENoaWxkQnlOYW1lKFwidGltZVwiKS5zZXRQb3NpdGlvbihwb3NDb25maWcucG9zNS54LTEwLWZyZWV6ZVgscG9zQ29uZmlnLnBvczUueS0yLWZyZWV6ZVkpO1xyXG4gICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgIGNhc2UgQmxvY2tUeXBlLuawtOW5s+WdlzpcclxuICAgICAgICAgICAgICAgIGxldCBob3Jpem9udGFsID0gY2MuaW5zdGFudGlhdGUoTWFwQ29ucm9sZXIuX2luc3RhbmNlLkJsb2NrX1Byb3BbdGhpcy50eXBlXSk7XHJcbiAgICAgICAgICAgICAgICBob3Jpem9udGFsLnBhcmVudCA9IHRoaXMubm9kZTtcclxuICAgICAgICAgICAgICAgIGxldCBoZW5nID0gXCJoZW5nXCIgKyB0aGlzLmhlbmc7XHJcbiAgICAgICAgICAgICAgICBob3Jpem9udGFsLmdldENoaWxkQnlOYW1lKGhlbmcpLmFjdGl2ZSA9IHRydWU7XHJcbiAgICAgICAgICAgICAgICBob3Jpem9udGFsLnNldFBvc2l0aW9uKHBvc0NvbmZpZy5wb3MyLngtMyxwb3NDb25maWcucG9zMi55KTtcclxuICAgICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICBjYXNlIEJsb2NrVHlwZS7lnoLnm7TlnZc6XHJcbiAgICAgICAgICAgICAgICBsZXQgdmVydGljYWwgPSBjYy5pbnN0YW50aWF0ZShNYXBDb25yb2xlci5faW5zdGFuY2UuQmxvY2tfUHJvcFt0aGlzLnR5cGVdKTtcclxuICAgICAgICAgICAgICAgIHZlcnRpY2FsLnBhcmVudCA9IHRoaXMubm9kZTtcclxuICAgICAgICAgICAgICAgIGxldCBzaHUgPSBcInNodVwiICsgdGhpcy5zaHU7XHJcbiAgICAgICAgICAgICAgICB2ZXJ0aWNhbC5nZXRDaGlsZEJ5TmFtZShzaHUpLmFjdGl2ZSA9IHRydWU7XHJcbiAgICAgICAgICAgICAgICB2ZXJ0aWNhbC5zZXRQb3NpdGlvbihwb3NDb25maWcucG9zMy54LHBvc0NvbmZpZy5wb3MzLnkpO1xyXG4gICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgIGNhc2UgQmxvY2tUeXBlLuWPoOWKoOWdl+S4ijpcclxuICAgICAgICAgICAgICAgIHRoaXMubW92ZVN0YWNrID0gZmFsc2U7XHJcbiAgICAgICAgICAgICAgICB0aGlzLm5vZGUub2ZmKGNjLk5vZGUuRXZlbnRUeXBlLlRPVUNIX1NUQVJUKTtcclxuICAgICAgICAgICAgICAgIHRoaXMubm9kZS5vZmYoY2MuTm9kZS5FdmVudFR5cGUuVE9VQ0hfTU9WRSk7XHJcbiAgICAgICAgICAgICAgICB0aGlzLm5vZGUub2ZmKGNjLk5vZGUuRXZlbnRUeXBlLlRPVUNIX0NBTkNFTCk7XHJcbiAgICAgICAgICAgICAgICB0aGlzLm5vZGUub2ZmKGNjLk5vZGUuRXZlbnRUeXBlLlRPVUNIX0VORCk7XHJcbiAgICAgICAgICAgICAgICAvLyB0aGlzLnNlbGZCb3hDb2xsaWRlcnMgPSBbXTtcclxuICAgICAgICAgICAgICAgIHRoaXMubm9kZS56SW5kZXggPSAyMDE7XHJcbiAgICAgICAgICAgICAgICBsZXQgcG9zID0gdGhpcy5nZXRTdGFja2luZ1BvcygpO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5ub2RlLnNldFBvc2l0aW9uKHRoaXMubm9kZS54ICsgcG9zLngsdGhpcy5ub2RlLnkgKyBwb3MueSk7XHJcbiAgICAgICAgICAgICAgICB0aGlzLnN0YWNraW5nID0gY2MudjIodGhpcy5ub2RlLnggLSB0aGlzLmJsb2NrX0luZm8ubm9kZS54LHRoaXMubm9kZS55IC0gdGhpcy5ibG9ja19JbmZvLm5vZGUueSk7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmJsb2NrX0luZm8ubm9kZS5nZXRDb21wb25lbnQoXCJCbG9ja1wiKS5ibG9ja19JbmZvLm5vZGUgPSB0aGlzLm5vZGU7XHJcbiAgICAgICAgICAgICAgICB0aGlzLm5vZGUuc2NhbGVYICo9IDAuNztcclxuICAgICAgICAgICAgICAgIHRoaXMubm9kZS5zY2FsZVkgKj0gMC43O1xyXG4gICAgICAgICAgICAgICAgZm9yKGxldCBpPTA7IGk8dGhpcy5ub2RlLmNoaWxkcmVuLmxlbmd0aDsgaSsrKXtcclxuICAgICAgICAgICAgICAgICAgICBpZih0aGlzLm5vZGUuY2hpbGRyZW5baV0ubmFtZSA9PSBcImxlZnRcIiB8fCB0aGlzLm5vZGUuY2hpbGRyZW5baV0ubmFtZSA9PSBcInJpZ2h0XCIgfHwgdGhpcy5ub2RlLmNoaWxkcmVuW2ldLm5hbWUgPT0gXCJ0b3BcIiB8fCB0aGlzLm5vZGUuY2hpbGRyZW5baV0ubmFtZSA9PSBcImRvd25cIilcclxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5ub2RlLmNoaWxkcmVuW2ldLmFjdGl2ZSA9IGZhbHNlO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIC8v5Yid5aeL5YyW5pa55Z2X6aKc6ImyXHJcbiAgICBpbml0Q29sb3IoKXsgICAgICAgICAgIFxyXG4gICAgIFxyXG4gICAgICAgIGxldCBuYW1lID0gdGhpcy5jb2xvcitcImNvbG9yXCIrdGhpcy5ibG9ja19JbmZvLmJsb2NrO1xyXG5cclxuICAgICAgICBsZXQgbnVtYmVyID0gTWF0aC5mbG9vcigodGhpcy5jb2xvci0xKS8yKTtcclxuXHJcbiAgICAgICAgbGV0IGJsb2NrU3ByaXRlRnJhbWUgPSBNYXBDb25yb2xlci5faW5zdGFuY2UuQmxvY2tfQ29sb3JbbnVtYmVyXS5fc3ByaXRlRnJhbWVzO1xyXG4gICAgICAgIHZhciBzcHJpdGVGcmFtZSA9IGJsb2NrU3ByaXRlRnJhbWVbbmFtZV07XHJcbiAgICAgIFxyXG4gICAgICAgIC8vIGlmKHRoaXMudHlwZSA9PSBCbG9ja1R5cGUu5Ya757uT5Z2XKXtcclxuICAgICAgICAvLyAgICAgbmFtZSA9IFwiaWNlX1wiK3RoaXMuYmxvY2tfSW5mby5ibG9jaztcclxuICAgICAgICAvLyAgICAgc3ByaXRlRnJhbWUgPSB0aGlzLmljZV9TcHJpdGVGcmFtZS5fc3ByaXRlRnJhbWVzW25hbWVdO1xyXG4gICAgICAgIC8vIH1cclxuXHJcbiAgICAgICAgdGhpcy5ub2RlLmdldENoaWxkQnlOYW1lKFwiaWNvblwiKS5nZXRDb21wb25lbnQoY2MuU3ByaXRlKS5zcHJpdGVGcmFtZSA9IHNwcml0ZUZyYW1lO1xyXG4gICAgfVxyXG5cclxuICAgIC8v5Yib5bu657KY5ZCI5b+r6L+e5o6l5aSEXHJcbiAgICBjcmVhdGVBZGhlc2l2ZSgpe1xyXG4gICAgICAgIGxldCBib3ggPSBbXTtcclxuICAgICAgICBmb3IobGV0IGk9MDsgaTx0aGlzLmFsbEJsb2Nrcy5sZW5ndGg7aSsrKXtcclxuICAgICAgICAgICAgYm94LnB1c2goY2MudjIodGhpcy5hbGxCbG9ja3NbaV0ueCt0aGlzLnBvc1gsdGhpcy5hbGxCbG9ja3NbaV0ueSt0aGlzLnBvc1kpKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgbGV0IG90aGVyQm94ID0gW107XHJcbiAgICAgICAgZm9yKGxldCBpPTA7IGk8dGhpcy5ibG9ja19JbmZvLm5vZGUuZ2V0Q29tcG9uZW50KFwiQmxvY2tcIikuYWxsQmxvY2tzLmxlbmd0aDtpKyspe1xyXG4gICAgICAgICAgICBvdGhlckJveC5wdXNoKGNjLnYyKHRoaXMuYmxvY2tfSW5mby5ub2RlLmdldENvbXBvbmVudChcIkJsb2NrXCIpLmFsbEJsb2Nrc1tpXS54K3RoaXMuYmxvY2tfSW5mby5ub2RlLmdldENvbXBvbmVudChcIkJsb2NrXCIpLnBvc1gsdGhpcy5ibG9ja19JbmZvLm5vZGUuZ2V0Q29tcG9uZW50KFwiQmxvY2tcIikuYWxsQmxvY2tzW2ldLnkrdGhpcy5ibG9ja19JbmZvLm5vZGUuZ2V0Q29tcG9uZW50KFwiQmxvY2tcIikucG9zWSkpOyBcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGZvcihsZXQgaz0wOyBrPGJveC5sZW5ndGg7IGsrKyl7XHJcbiAgICAgICAgICAgIGZvcihsZXQgaj0wOyBqPG90aGVyQm94Lmxlbmd0aDsgaisrKXtcclxuICAgICAgICAgICAgICAgIGlmKChib3hba10ueCA9PSBvdGhlckJveFtqXS54KzEgfHwgYm94W2tdLnggPT0gb3RoZXJCb3hbal0ueC0xKSAmJiAoYm94W2tdLnkgPT0gb3RoZXJCb3hbal0ueSkpe1xyXG4gICAgICAgICAgICAgICAgICAgIC8v5ZyoWOi9tCDnm7jpgrtcclxuICAgICAgICAgICAgICAgICAgICBsZXQgbGVmdCA9IGJveFtrXS54ID09IG90aGVyQm94W2pdLngrMSA/IFwibGVmdFwiIDogXCJyaWdodFwiO1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuYWRkQWRoZXNpdmUobGVmdCxib3hba10pO1xyXG4gICAgICAgICAgICAgICAgICAgIG90aGVyQm94LnNwbGljZShqLCAxKTtcclxuICAgICAgICAgICAgICAgICAgICBqLS07IC8vIOiwg+aVtOe0ouW8lVxyXG4gICAgICAgICAgICAgICAgICAgIGlmKGogPCAwKSBicmVhaztcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIGlmKChib3hba10ueSA9PSBvdGhlckJveFtqXS55KzEgfHwgYm94W2tdLnkgPT0gb3RoZXJCb3hbal0ueS0xKSAmJiAoYm94W2tdLnggPT0gb3RoZXJCb3hbal0ueCkpe1xyXG4gICAgICAgICAgICAgICAgICAgIC8v5ZyoWei9tCDnm7jpgrtcclxuICAgICAgICAgICAgICAgICAgICBsZXQgZG93biA9IGJveFtrXS55ID09IG90aGVyQm94W2pdLnkrMSA/IFwiZG93blwiIDogXCJ1cFwiO1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuYWRkQWRoZXNpdmUoZG93bixib3hba10pO1xyXG4gICAgICAgICAgICAgICAgICAgIG90aGVyQm94LnNwbGljZShqLCAxKTtcclxuICAgICAgICAgICAgICAgICAgICBqLS07IC8vIOiwg+aVtOe0ouW8lVxyXG4gICAgICAgICAgICAgICAgICAgIGlmKGogPCAwKSBicmVhaztcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfSBcclxuICAgICAgICB9XHJcbiAgICAgICAgLy8gbGV0IGFkaGVzaXZlID0gY2MuaW5zdGFudGlhdGUoTWFwQ29ucm9sZXIuX2luc3RhbmNlLkJsb2NrX1Byb3BbdGhpcy50eXBlXSk7XHJcbiAgICB9XHJcblxyXG4gICAgLy/lhbfkvZPmt7vliqDnspjlkIjlv6vplIHpk77mlrnms5VcclxuICAgIGFkZEFkaGVzaXZlKGRpcmFjdGlvbixib3gpe1xyXG4gICAgICAgIGxldCBwb3MgPSBjYy52Mihib3gueCAtIHRoaXMucG9zWCxib3gueSAtIHRoaXMucG9zWSk7XHJcbiAgICAgICAgbGV0IGFkaGVzaXZlID0gY2MuaW5zdGFudGlhdGUoTWFwQ29ucm9sZXIuX2luc3RhbmNlLkJsb2NrX1Byb3BbMTBdKTtcclxuICAgICAgICBhZGhlc2l2ZS5wYXJlbnQgPSB0aGlzLm5vZGUucGFyZW50LmdldENoaWxkQnlOYW1lKFwiQWRoZXNpdmVcIik7XHJcbiAgICAgICAgLy8gYWRoZXNpdmUucGFyZW50ID0gdGhpcy5ub2RlLmdldENoaWxkQnlOYW1lKFwiYWRoZXNpdmVcIik7XHJcbiAgICAgICAgYWRoZXNpdmUuc2V0UG9zaXRpb24oIDEyMCpwb3MueCAtIDY1ICsgdGhpcy5ub2RlLngsIDEyMCpwb3MueSArIDYwICsgdGhpcy5ub2RlLnkpO1xyXG4gICAgICAgIGlmKGRpcmFjdGlvbiA9PSBcImxlZnRcIiB8fCBkaXJhY3Rpb24gPT0gXCJyaWdodFwiKXtcclxuICAgICAgICAgICAgYWRoZXNpdmUuZ2V0Q2hpbGRCeU5hbWUoXCJoZW5nXCIpLmFjdGl2ZSA9IHRydWU7XHJcbiAgICAgICAgICAgIGFkaGVzaXZlLmdldENoaWxkQnlOYW1lKFwiaGVuZ1wiKS54ID0gLTYwO1xyXG4gICAgICAgICAgICBpZihkaXJhY3Rpb24gPT0gXCJyaWdodFwiKSBhZGhlc2l2ZS5nZXRDaGlsZEJ5TmFtZShcImhlbmdcIikueCA9IDYwO1xyXG4gICAgICAgICAgICBhZGhlc2l2ZS5nZXRDaGlsZEJ5TmFtZShcImhlbmdcIikueCArPSA5O1xyXG4gICAgICAgICAgICBhZGhlc2l2ZS5nZXRDaGlsZEJ5TmFtZShcImhlbmdcIikueSArPSA3O1xyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNle1xyXG4gICAgICAgICAgICBhZGhlc2l2ZS5nZXRDaGlsZEJ5TmFtZShcInNodVwiKS5hY3RpdmUgPSB0cnVlO1xyXG4gICAgICAgICAgICBhZGhlc2l2ZS5nZXRDaGlsZEJ5TmFtZShcInNodVwiKS55ID0gLTYwO1xyXG4gICAgICAgICAgICBpZihkaXJhY3Rpb24gPT0gXCJ1cFwiKSBhZGhlc2l2ZS5nZXRDaGlsZEJ5TmFtZShcInNodVwiKS55ID0gNjA7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGFkaGVzaXZlLmdldENvbXBvbmVudChcIkFkaGVzaXZlXCIpLmluaXQodGhpcy5ub2RlKTtcclxuICAgICAgICB0aGlzLmFkaGVzaXZlTm9kZS5wdXNoKGFkaGVzaXZlKTtcclxuICAgIH1cclxuXHJcbiAgICByZW1vdmVBZGhlc2l2ZSgpe1xyXG4gICAgICAgIGlmKHRoaXMuYWRoZXNpdmVOb2RlLmxlbmd0aCA+IDApe1xyXG4gICAgICAgICAgICBmb3IobGV0IGk9MDsgaTx0aGlzLmFkaGVzaXZlTm9kZS5sZW5ndGg7IGkrKyl7XHJcbiAgICAgICAgICAgICAgICBsZXQgYWRoZXNpdmUgPSB0aGlzLmFkaGVzaXZlTm9kZVtpXTtcclxuICAgICAgICAgICAgICAgIGFkaGVzaXZlLmdldENvbXBvbmVudChcIkFkaGVzaXZlXCIpLnJlbW92ZSgpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIC8v5pa55Z2X6JC954K5XHJcbiAgICBibG9ja0ZhbGwocG9pbnQpe1xyXG4gICAgICAgIGlmKHRoaXMub3ZlciA9PSB0cnVlKSByZXR1cm47XHJcbiAgICAgICAgLy8gLy8g5YGH6K6+IE1hcENvbnJvbGVyIOaciee9keagvOS/oeaBr++8jOi/memHjOeugOWNleekuuS+i1xyXG4gICAgICAgIGNvbnN0IG1hcFdpZHRoID0gTWFwQ29ucm9sZXIuX2luc3RhbmNlLm1hcFdpZHRoO1xyXG4gICAgICAgIGNvbnN0IG1hcEhlaWdodCA9IE1hcENvbnJvbGVyLl9pbnN0YW5jZS5tYXBIZWlnaHQ7XHJcbiAgICAgICAgY29uc3QgY2VsbFNpemUgPSAxMjA7IC8vIOavj+S4quagvOWtkOeahOWkp+Wwj++8jOagueaNruWunumZheaDheWGteiwg+aVtFxyXG5cclxuICAgICAgICAvLyDorqHnrpfngrnmiYDlnKjnmoTnvZHmoLzlnZDmoIdcclxuICAgICAgICBjb25zdCBncmlkWCA9IE1hdGguZmxvb3IoKHBvaW50LnggKyAobWFwV2lkdGggKiBjZWxsU2l6ZSAvIDIpKSAvIGNlbGxTaXplKTtcclxuICAgICAgICBjb25zdCBncmlkWSA9IE1hdGguZmxvb3IoKHBvaW50LnkgKyAobWFwSGVpZ2h0ICogY2VsbFNpemUgLyAyKSkgLyBjZWxsU2l6ZSk7XHJcblxyXG4gICAgICAgIC8vIOajgOafpee9keagvOWdkOagh+aYr+WQpui2iueVjFxyXG4gICAgICAgIGlmIChncmlkWCA+PSAwICYmIGdyaWRYIDwgbWFwV2lkdGggJiYgZ3JpZFkgPj0gMCAmJiBncmlkWSA8IG1hcEhlaWdodCkge1xyXG4gICAgICAgICAgICBjb25zdCBtYXBCbG9jayA9IE1hcENvbnJvbGVyLl9pbnN0YW5jZS5tYXBCbG9ja3NXYWxsW2dyaWRYXVtncmlkWV07XHJcbiAgICAgICAgICAgIGNvbnN0IGJsb2NrUmVjdCA9IG1hcEJsb2NrLmdldEJvdW5kaW5nQm94KCk7XHJcblxyXG4gICAgICAgICAgICAvLyDkvb/nlKggY2MuSW50ZXJzZWN0aW9uLnBvaW50SW5SZWN0IOaWueazleWIpOaWreeCueaYr+WQpuWcqOefqeW9ouiMg+WbtOWGhVxyXG4gICAgICAgICAgICBpZiAoYmxvY2tSZWN0LmNvbnRhaW5zKHBvaW50KSkge1xyXG4gICAgICAgICAgICAgICAgLy/lr7vmib7okL3ngrlcclxuICAgICAgICAgICAgICAgIHRoaXMucmVtb3ZlTWFwQmxvY2soKTtcclxuICAgICAgICAgICAgICAgIHRoaXMucG9zWCA9IG1hcEJsb2NrLmdldENvbXBvbmVudChcIk1hcEJsb2NrXCIpLnBvc1g7XHJcbiAgICAgICAgICAgICAgICB0aGlzLnBvc1kgPSBtYXBCbG9jay5nZXRDb21wb25lbnQoXCJNYXBCbG9ja1wiKS5wb3NZO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5zZXRNYXBCbG9jaygpO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5sZXZlbCA9IDUwICsgdGhpcy5wb3NYIC0gdGhpcy5wb3NZICogMztcclxuICAgICAgICAgICAgICAgIHRoaXMubm9kZS56SW5kZXggPSB0aGlzLmxldmVsO1xyXG4gICAgICAgICAgICAgICAgLy8gY29uc29sZS5sb2coXCLmlrnlnZflsYLnuqdcIix0aGlzLm5vZGUuekluZGV4KTtcclxuICAgICAgICAgICAgICAgIHRoaXMubm9kZS54ID0gbWFwQmxvY2sueCArIDY1O1xyXG4gICAgICAgICAgICAgICAgdGhpcy5ub2RlLnkgPSBtYXBCbG9jay55IC0gNjA7XHJcbiAgICAgICAgICAgICAgICBpZiAodGhpcy50eXBlID09IDkpIHtcclxuICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy5ibG9ja19JbmZvLm5vZGUpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5ibG9ja19JbmZvLm5vZGUueCA9IHRoaXMubm9kZS54IC0gdGhpcy5hZGhlc2l2ZS54O1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmJsb2NrX0luZm8ubm9kZS55ID0gdGhpcy5ub2RlLnkgLSB0aGlzLmFkaGVzaXZlLnk7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgZWxzZSBpZih0aGlzLnR5cGUgPT0gMSl7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5ibG9ja19JbmZvLm5vZGUuZ2V0Q29tcG9uZW50KFwiQmxvY2tcIikubW92ZVN0YWNrID0gZmFsc2U7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5ibG9ja19JbmZvLm5vZGUueCA9IHRoaXMubm9kZS54ICsgdGhpcy5ibG9ja19JbmZvLm5vZGUuZ2V0Q29tcG9uZW50KFwiQmxvY2tcIikuc3RhY2tpbmcueDtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLmJsb2NrX0luZm8ubm9kZS55ID0gdGhpcy5ub2RlLnkgKyB0aGlzLmJsb2NrX0luZm8ubm9kZS5nZXRDb21wb25lbnQoXCJCbG9ja1wiKS5zdGFja2luZy55O1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgICAgICBcclxuICAgICAgICBsZXQgamcgPSBNYXBDb25yb2xlci5faW5zdGFuY2UuY2hlY2tQYXNzKHRoaXMubm9kZSx0aGlzLmFsbEJsb2Nrcyk7XHJcblxyXG4gICAgICAgIGlmKGpnID49IDApe1xyXG4gICAgICAgICAgICB0aGlzLm92ZXIgPSB0cnVlO1xyXG4gICAgICAgICAgICBNYXBDb25yb2xlci5faW5zdGFuY2UuY2hhbmdlU3RhdGUoKTtcclxuICAgICAgICAgICAgdGhpcy5yZW1vdmVCb3hDb2xsaWRlcigpO1xyXG4gICAgICAgICAgICB0aGlzLnJlbW92ZU1hcEJsb2NrKCk7XHJcbiAgICAgICAgICAgIHRoaXMucmVtb3ZlQWN0aW9uKGpnKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZXtcclxuICAgICAgICAgICAgTWFwQ29ucm9sZXIuX2luc3RhbmNlLnVwRG9vcih0aGlzLmNvbG9yKTtcclxuICAgICAgICAgICAgdGhpcy5zZXRWaWJyYXRlKFwibWVkaXVtXCIsMSlcclxuICAgICAgICAgICAgLy9AdHMtaWdub3JlXHJcbiAgICAgICAgfVxyXG5cclxuICAgIH1cclxuXHJcbiAgICByZW1vdmVCb3hDb2xsaWRlcigpe1xyXG4gICAgICAgIGZvcihsZXQgaT0wOyBpPHRoaXMubm9kZS5jaGlsZHJlbi5sZW5ndGg7IGkrKyl7XHJcbiAgICAgICAgICAgIGlmKHRoaXMubm9kZS5jaGlsZHJlbltpXS5uYW1lID09IFwibGVmdFwiIHx8IHRoaXMubm9kZS5jaGlsZHJlbltpXS5uYW1lID09IFwicmlnaHRcIiB8fCB0aGlzLm5vZGUuY2hpbGRyZW5baV0ubmFtZSA9PSBcInRvcFwiIHx8IHRoaXMubm9kZS5jaGlsZHJlbltpXS5uYW1lID09IFwiZG93blwiKVxyXG4gICAgICAgICAgICAgICAgdGhpcy5ub2RlLmNoaWxkcmVuW2ldLmRlc3Ryb3koKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgcmVtb3ZlQWN0aW9uKGRpcmFjdGlvbil7XHJcbiAgICAgICAgdGhpcy5ub2RlLm9mZihjYy5Ob2RlLkV2ZW50VHlwZS5UT1VDSF9TVEFSVCk7XHJcbiAgICAgICAgdGhpcy5ub2RlLm9mZihjYy5Ob2RlLkV2ZW50VHlwZS5UT1VDSF9NT1ZFKTtcclxuICAgICAgICB0aGlzLm5vZGUub2ZmKGNjLk5vZGUuRXZlbnRUeXBlLlRPVUNIX0NBTkNFTCk7XHJcbiAgICAgICAgdGhpcy5ub2RlLm9mZihjYy5Ob2RlLkV2ZW50VHlwZS5UT1VDSF9FTkQpO1xyXG4gICAgICAgIHRoaXMubm9kZS5hZGRDb21wb25lbnQoY2MuTWFzayk7XHJcbiAgICAgICAgbGV0IHNlbGYgPSB0aGlzO1xyXG4gICAgICAgIGxldCBwb3MgPSB0aGlzLm5vZGUuZ2V0UG9zaXRpb24oKTtcclxuICAgICAgICBpZih0aGlzLnR5cGUgPT0gQmxvY2tUeXBlLuWPoOWKoOWdl+S4iyl7XHJcbiAgICAgICAgICAgIGxldCBzY2FsZVggPSB0aGlzLm5vZGUuc2NhbGVYO1xyXG4gICAgICAgICAgICBsZXQgc2NhbGVZID0gdGhpcy5ub2RlLnNjYWxlWTtcclxuICAgICAgICAgICAgdGhpcy5ibG9ja19JbmZvLm5vZGUuZ2V0Q29tcG9uZW50KFwiQmxvY2tcIikucmVzdG9yZU5vbWFsKHRoaXMucG9zWCx0aGlzLnBvc1ksdHJ1ZSk7XHJcbiAgICAgICAgICAgIGNjLnR3ZWVuKHRoaXMuYmxvY2tfSW5mby5ub2RlKVxyXG4gICAgICAgICAgICAudG8oMC4zLHtwb3NpdGlvbjpwb3Msc2NhbGVYOnNjYWxlWD4wPzE6LTEsc2NhbGVZOnNjYWxlWT4wPzE6LTF9KVxyXG4gICAgICAgICAgICAuc3RhcnQoKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSBpZih0aGlzLnR5cGUgPT0gQmxvY2tUeXBlLueymOWQiOWdlyl7XHJcbiAgICAgICAgICAgIHRoaXMucmVtb3ZlQWRoZXNpdmUoKTtcclxuICAgICAgICAgICAgdGhpcy5ibG9ja19JbmZvLm5vZGUuZ2V0Q29tcG9uZW50KFwiQmxvY2tcIikucmVtb3ZlQWRoZXNpdmUoKTtcclxuICAgICAgICAgICAgdGhpcy5ibG9ja19JbmZvLm5vZGUuZ2V0Q29tcG9uZW50KFwiQmxvY2tcIikucmVzdG9yZU5vbWFsKHRoaXMuYmxvY2tfSW5mby5ub2RlLmdldENvbXBvbmVudChcIkJsb2NrXCIpLnBvc1gsXHJcbiAgICAgICAgICAgIHRoaXMuYmxvY2tfSW5mby5ub2RlLmdldENvbXBvbmVudChcIkJsb2NrXCIpLnBvc1ksZmFsc2UpO1xyXG4gICAgICAgICAgICB0aGlzLmJsb2NrX0luZm8ubm9kZSA9IG51bGw7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2UgaWYodGhpcy50eXBlID09IEJsb2NrVHlwZS7ngrjlvLnlnZcpe1xyXG4gICAgICAgICAgICB0aGlzLm5vZGUuZ2V0Q2hpbGRCeU5hbWUoXCJib29tXCIpLmdldENvbXBvbmVudChcIkJvb21cIikuc3RvcEJvb20oKTtcclxuICAgICAgICB9XHJcblxyXG4gICAgIFxyXG4gICAgICAgIGxldCB0aW1lID0gMC4zMztcclxuICAgICAgICAvLyB0aGlzLm5vZGUuekluZGV4ID0gMDtcclxuICAgICAgICBsZXQgd2lkdGggPSBNYXRoLmZsb29yKHRoaXMubm9kZS53aWR0aCAvIDEyMCk7XHJcbiAgICAgICAgbGV0IGhlaWdodCA9IE1hdGguZmxvb3IodGhpcy5ub2RlLmhlaWdodCAvIDEyMCk7XHJcblxyXG5cclxuICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgICAgICAgY2MuZnguQXVkaW9NYW5hZ2VyLl9pbnN0YW5jZS5wbGF5RWZmZWN0KFwieGlhb2NodVwiLG51bGwpO1xyXG4gICAgICAgIH0sIDMwMCApO1xyXG4gICAgICAgIHRoaXMuc2V0VmlicmF0ZShcImxpZ2h0XCIsMylcclxuXHJcbiAgICAgICAgaWYoZGlyYWN0aW9uID09IDApe1xyXG4gICAgICAgICAgICB0aW1lID0gMC4zMypoZWlnaHQ7XHJcbiAgICAgICAgICAgIC8vIHRpbWUgPSAwLjk5O1xyXG4gICAgICAgICAgICBmb3IobGV0IGk9MDsgaTx0aGlzLm5vZGUuY2hpbGRyZW4ubGVuZ3RoO2krKyl7XHJcbiAgICAgICAgICAgICAgICBjYy50d2Vlbih0aGlzLm5vZGUuY2hpbGRyZW5baV0pXHJcbiAgICAgICAgICAgICAgICAudG8odGltZSx7eTp0aGlzLm5vZGUuY2hpbGRyZW5baV0ueSArIHRoaXMubm9kZS5jaGlsZHJlblswXS5oZWlnaHR9KVxyXG4gICAgICAgICAgICAgICAgLnN0YXJ0KCk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSBpZihkaXJhY3Rpb24gPT0gMSl7XHJcbiAgICAgICAgICAgIHRpbWUgPSAwLjMzKmhlaWdodDtcclxuICAgICAgICAgICAgLy8gdGltZSA9IDAuOTlcclxuICAgICAgICAgICAgZm9yKGxldCBpPTA7IGk8dGhpcy5ub2RlLmNoaWxkcmVuLmxlbmd0aDtpKyspe1xyXG4gICAgICAgICAgICAgICAgY2MudHdlZW4odGhpcy5ub2RlLmNoaWxkcmVuW2ldKSBcclxuICAgICAgICAgICAgICAudG8odGltZSx7eTp0aGlzLm5vZGUuY2hpbGRyZW5baV0ueSAtIHRoaXMubm9kZS5jaGlsZHJlblswXS5oZWlnaHR9KVxyXG4gICAgICAgICAgICAgIC5zdGFydCgpOyBcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH0gICBcclxuICAgICAgICBlbHNlIGlmKGRpcmFjdGlvbiA9PSAyKXtcclxuICAgICAgICAgICAgdGltZSA9IDAuMzMqd2lkdGg7XHJcbiAgICAgICAgICAgIC8vIHRpbWUgPSAwLjk5XHJcbiAgICAgICAgICAgIGZvcihsZXQgaT0wOyBpPHRoaXMubm9kZS5jaGlsZHJlbi5sZW5ndGg7aSsrKXtcclxuICAgICAgICAgICAgICAgIGNjLnR3ZWVuKHRoaXMubm9kZS5jaGlsZHJlbltpXSkgXHJcbiAgICAgICAgICAgICAgICAudG8odGltZSx7eDp0aGlzLm5vZGUuY2hpbGRyZW5baV0ueCAtIHRoaXMubm9kZS5jaGlsZHJlblswXS53aWR0aH0pXHJcbiAgICAgICAgICAgICAgICAuc3RhcnQoKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIGlmKGRpcmFjdGlvbiA9PSAzKXtcclxuICAgICAgICAgICAgdGltZSA9IDAuMzMqd2lkdGhcclxuICAgICAgICAgICAgLy8gdGltZSA9IDAuOTlcclxuICAgICAgICAgICAgZm9yKGxldCBpPTA7IGk8dGhpcy5ub2RlLmNoaWxkcmVuLmxlbmd0aDtpKyspe1xyXG4gICAgICAgICAgICAgICAgY2MudHdlZW4odGhpcy5ub2RlLmNoaWxkcmVuW2ldKSBcclxuICAgICAgICAgICAgICAgIC50byh0aW1lLHt4OnRoaXMubm9kZS5jaGlsZHJlbltpXS54ICsgdGhpcy5ub2RlLmNoaWxkcmVuWzBdLndpZHRofSlcclxuICAgICAgICAgICAgICAgIC5zdGFydCgpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgICAgICAgbGV0IHRlbXBDb2xvciA9IHRoaXMuY29sb3I7XHJcbiAgICAgICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgTWFwQ29ucm9sZXIuX2luc3RhbmNlLnVwRG9vcih0ZW1wQ29sb3IpOyBcclxuICAgICAgICAgICAgfSwgMjUwKTtcclxuXHJcbiAgICAgICAgICAgIE1hcENvbnJvbGVyLl9pbnN0YW5jZS5uZXh0TGV2ZWwoKTtcclxuICAgICAgICAgICAgdGhpcy5ub2RlLmFjdGl2ZSA9IGZhbHNlO1xyXG4gICAgICAgICAgICB0aGlzLm5vZGUucmVtb3ZlRnJvbVBhcmVudCgpO1xyXG5cclxuICAgICAgICAgICAgLy8gdGhpcy5ub2RlLmFjdGl2ZSA9IGZhbHNlO1xyXG4gICAgICAgICAgICAvLyB0aGlzLm5vZGUucmVtb3ZlRnJvbVBhcmVudCgpO1xyXG4gICAgICAgIH0sIHRpbWUqMTAwMCk7XHJcblxyXG4gICAgfVxyXG5cclxuXHJcbiAgICBcclxuICAgIHRvdWNoU3RhcnQoZXZlbnQpe1xyXG4gICAgICAgIGlmKHRoaXMub3ZlciB8fCBNYXBDb25yb2xlci5faW5zdGFuY2UuZ2FtZU92ZXIpIHJldHVybjtcclxuICAgICAgICAvLyDov5Tlm57kuJbnlYzlnZDmoIdcclxuICAgICAgICBsZXQgdG91Y2hMb2MgPSBldmVudC5nZXRMb2NhdGlvbigpO1xyXG4gICAgICAgIC8vIGh0dHBzOi8vZG9jcy5jb2Nvcy5jb20vY3JlYXRvci9hcGkvemgvY2xhc3Nlcy9JbnRlcnNlY3Rpb24uaHRtbCDmo4DmtYvovoXliqnnsbtcclxuICAgICAgICAvLyBsZXQgcG9zID0gdGhpcy5jb2xsaWRlci53b3JsZC5wb2ludHNcclxuXHJcbiAgICAgICAgaWYoIXRoaXMuY29sbGlkZXIud29ybGQpe1xyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG4gICAgICAgIC8vIOWIpOaWreinpuaRuOeCueaYr+WQpuWcqOWkmui+ueW9ouWGhVxyXG4gICAgICAgIGlmIChjYy5JbnRlcnNlY3Rpb24ucG9pbnRJblBvbHlnb24odG91Y2hMb2MsIHRoaXMuY29sbGlkZXIud29ybGQucG9pbnRzKSkge1xyXG4gICAgICAgICAgICBpZihNYXBDb25yb2xlci5faW5zdGFuY2UuaGFtbWVyKXtcclxuICAgICAgICAgICAgICAgIHRoaXMuZWxpbWluYXRlKCk7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmlzVG91Y2ggPSBmYWxzZTtcclxuICAgICAgICAgICAgICAgIE1hcENvbnJvbGVyLl9pbnN0YW5jZS5oYW1tZXJNYXNrLmFjdGl2ZSA9IGZhbHNlO1xyXG4gICAgICAgICAgICAgICAgTWFwQ29ucm9sZXIuX2luc3RhbmNlLm5vZGUucGFyZW50LmdldENoaWxkQnlOYW1lKFwiQm90dG9tXCIpLmdldENoaWxkQnlOYW1lKFwiZGVzdHJveUJ0blwiKS5nZXRDb21wb25lbnQoXCJidG5Db250cm9sXCIpLnNldFRvdWNoKHRydWUpO1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgICAgICAgICB9IFxyXG4gICAgICAgICAgICBpZih0aGlzLnR5cGUgIT0gQmxvY2tUeXBlLuS4iumUgeWdlyAmJiB0aGlzLnR5cGUgIT0gQmxvY2tUeXBlLuWGu+e7k+Wdlyl7XHJcbiAgICAgICAgICAgICAgICBNYXBDb25yb2xlci5faW5zdGFuY2Uuc3RhcnRVcGRhdGUoKTtcclxuICAgICAgICAgICAgICAgIGNjLmZ4LkF1ZGlvTWFuYWdlci5faW5zdGFuY2UucGxheUVmZmVjdChcImhpdFwiLG51bGwpO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5ub2RlLnpJbmRleCA9IDIwMDtcclxuICAgICAgICAgICAgICAgIGlmKHRoaXMudHlwZSA9PSA5KXtcclxuICAgICAgICAgICAgICAgICAgICBpZih0aGlzLmJsb2NrX0luZm8ubm9kZSl7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuYmxvY2tfSW5mby5ub2RlLnpJbmRleCA9IDIwMDtcclxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5ibG9ja19JbmZvLm5vZGUuZ2V0Q29tcG9uZW50KFwiQmxvY2tcIikuaGl0LmFjdGl2ZSA9IHRydWU7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIE1hcENvbnJvbGVyLl9pbnN0YW5jZS5kb3duRG9vcih0aGlzLmJsb2NrX0luZm8ubm9kZS5nZXRDb21wb25lbnQoXCJCbG9ja1wiKS5jb2xvcix0aGlzLmJsb2NrX0luZm8ubm9kZS5nZXRDb21wb25lbnQoXCJCbG9ja1wiKS50eXBlKTtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBlbHNlIGlmKHRoaXMudHlwZSA9PSAxKXtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLmJsb2NrX0luZm8ubm9kZS5nZXRDb21wb25lbnQoXCJCbG9ja1wiKS5tb3ZlU3RhY2sgPSB0cnVlO1xyXG4gICAgICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgICAgIGxldCB0b3VjaFBvaW50ID0gZXZlbnQuZ2V0TG9jYXRpb24oKTtcclxuICAgICAgICAgICAgICAgIGxldCBsb2NhbCA9IHRoaXMubm9kZS5wYXJlbnQuY29udmVydFRvTm9kZVNwYWNlQVIodG91Y2hQb2ludCk7XHJcbiAgICAgICAgICAgICAgICB0aGlzLnRvdWNoUG9pbnRYID0gbG9jYWwueDtcclxuICAgICAgICAgICAgICAgIHRoaXMudG91Y2hQb2ludFkgPSBsb2NhbC55O1xyXG4gICAgICAgICAgICAgICAgdGhpcy5tb3ZlTGVmdCA9IHRoaXMubW92ZVJpZ2h0ID0gdGhpcy5tb3ZlVXAgPSB0aGlzLm1vdmVEb3duID0gdHJ1ZTtcclxuICAgICAgICAgICAgICAgIHRoaXMuaXNUb3VjaCA9IHRydWU7XHJcbiAgICAgICAgICAgICAgICB0aGlzLm1vdmVDb3JuZXIgPSAwO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5yZWxhdGl2ZV9Qb3NpdGlvbiA9IGNjLnYyKHRoaXMubm9kZS54LWxvY2FsLngsdGhpcy5ub2RlLnktbG9jYWwueSk7XHJcbiAgICAgICAgICAgICAgICBNYXBDb25yb2xlci5faW5zdGFuY2UuY2hhbmdlUmlzZUZhbGwodGhpcy5jb2xvcix0cnVlKTtcclxuICAgICAgICAgICAgICAgIE1hcENvbnJvbGVyLl9pbnN0YW5jZS5kb3duRG9vcih0aGlzLmNvbG9yLHRoaXMudHlwZSk7XHJcbiAgICAgICAgICAgICAgICB0aGlzLnNldFZpYnJhdGUoXCJsaWdodFwiLDEpXHJcbiAgICAgICAgICAgICAgICBpZih0aGlzLmhpdCkgdGhpcy5oaXQuYWN0aXZlID0gdHJ1ZTtcclxuICAgICAgICAgICAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGVsc2V7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmlzVG91Y2ggPSBmYWxzZTtcclxuICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgdGhpcy5pc1RvdWNoID0gZmFsc2U7XHJcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgICAgICB9XHJcblxyXG4gICAgfVxyXG5cclxuICAgIHRvdWNoRW5kKGV2ZW50KXtcclxuICAgICAgICBpZihNYXBDb25yb2xlci5faW5zdGFuY2UuZ2FtZU92ZXIpIHJldHVybjtcclxuICAgICAgICBpZih0aGlzLmlzVG91Y2gpe1xyXG4gICAgICAgICAgICB0aGlzLnRvdWNoRGVsdGEgPSBjYy52MigwLCAwKTtcclxuICAgICAgICAgICAgdGhpcy5jaGVja0NvbGxpc2lvbiA9IGZhbHNlO1xyXG4gICAgICAgICAgICBNYXBDb25yb2xlci5faW5zdGFuY2UuY2hhbmdlUmlzZUZhbGwodGhpcy5jb2xvcixmYWxzZSk7XHJcbiAgICAgICAgICAgIGNjLmZ4LkF1ZGlvTWFuYWdlci5faW5zdGFuY2UucGxheUVmZmVjdChcImRvd25cIixudWxsKTtcclxuICAgICAgICAgICAgTWFwQ29ucm9sZXIuX2luc3RhbmNlLnJlbW92ZU9uZUJsb2NrKCk7XHJcbiAgICAgICAgICAgIHRoaXMuaXNUb3VjaCA9IGZhbHNlO1xyXG4gICAgICAgICAgICB0aGlzLm5vZGUuekluZGV4ID0gdGhpcy5sZXZlbDtcclxuICAgICAgICAgICAgdGhpcy5oaXQuYWN0aXZlID0gZmFsc2U7XHJcbiAgICAgICAgICAgIGlmKHRoaXMudHlwZSA9PSA5KXtcclxuICAgICAgICAgICAgICAgIGlmKHRoaXMuYmxvY2tfSW5mby5ub2RlKXtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLmJsb2NrX0luZm8ubm9kZS5nZXRDb21wb25lbnQoXCJCbG9ja1wiKS5oaXQuYWN0aXZlID0gZmFsc2U7XHJcbiAgICAgICAgICAgICAgICAgICAgLy8gdGhpcy5ibG9ja19JbmZvLm5vZGUuZ2V0Q29tcG9uZW50KFwiQmxvY2tcIikuaXNUb3VjaCA9IGZhbHNlO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICB0aGlzLnRvdWNoUG9pbnQgPSBldmVudC5nZXRMb2NhdGlvbigpO1xyXG4gICAgICAgICAgICBsZXQgbG9jYWwgPSBjYy52Mih0aGlzLm5vZGUueCAtIDUwLHRoaXMubm9kZS55ICsgNTAgKTtcclxuICAgICAgICAgICAgaWYodGhpcy50eXBlICE9IDEwKXtcclxuICAgICAgICAgICAgICAgIC8vQHRzLWlnbm9yZVxyXG4gICAgICAgICAgICAgICAgdGhpcy5ibG9ja0ZhbGwobG9jYWwpO1xyXG4gICAgICAgICAgICAgICAgaWYodGhpcy50eXBlID09IDkpe1xyXG4gICAgICAgICAgICAgICAgICAgIGlmKHRoaXMuYmxvY2tfSW5mby5ub2RlKXtcclxuICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGxvY2FsVGVtcCA9IGNjLnYyKHRoaXMuYmxvY2tfSW5mby5ub2RlLngtNTAsdGhpcy5ibG9ja19JbmZvLm5vZGUueSs1MCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuYmxvY2tfSW5mby5ub2RlLmdldENvbXBvbmVudChcIkJsb2NrXCIpLmJsb2NrRmFsbChsb2NhbFRlbXApO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB0aGlzLm1vdmVMZWZ0ID0gdGhpcy5tb3ZlUmlnaHQgPSB0aGlzLm1vdmVVcCA9IHRoaXMubW92ZURvd24gPSB0cnVlO1xyXG4gICAgICAgIH1cclxuXHJcbiAgXHJcbiAgICB9XHJcblxyXG4gICAgdG91Y2hNb3ZlKGV2ZW50OiBjYy5FdmVudC5FdmVudFRvdWNoKSB7XHJcbiAgICAgICAgaWYoTWFwQ29ucm9sZXIuX2luc3RhbmNlLmdhbWVPdmVyKSByZXR1cm47XHJcbiAgICAgICAgLy8gY29uc3QgY3VycmVudFRpbWUgPSBEYXRlLm5vdygpO1xyXG4gICAgICAgIC8vIC8vIOWmguaenOi3neemu+S4iuasoeenu+WKqOaXtumXtOWwj+S6jumXtOmalOaXtumXtO+8jOebtOaOpei/lOWbnlxyXG4gICAgICAgIC8vIGlmIChjdXJyZW50VGltZSAtIHRoaXMubGFzdE1vdmVUaW1lIDwgdGhpcy5tb3ZlSW50ZXJ2YWwpIHtcclxuICAgICAgICAvLyAgICAgcmV0dXJuO1xyXG4gICAgICAgIC8vIH1cclxuICAgICAgICAvLyB0aGlzLmxhc3RNb3ZlVGltZSA9IGN1cnJlbnRUaW1lO1xyXG5cclxuICAgICAgICBpZiAodGhpcy5pc1RvdWNoKSB7XHJcbiAgICAgICAgICAgIGNvbnN0IGRlbHRhID0gZXZlbnQuZ2V0RGVsdGEoKTtcclxuICAgICAgICAgICAgY29uc3QgdG91Y2hQb2ludCA9IGV2ZW50LmdldExvY2F0aW9uKCk7XHJcbiAgICAgICAgICAgIGNvbnN0IGxvY2FsID0gdGhpcy5ub2RlLnBhcmVudC5jb252ZXJ0VG9Ob2RlU3BhY2VBUih0b3VjaFBvaW50KTtcclxuICAgICAgICAgICAgdGhpcy50b3VjaFBvaW50WCA9IGxvY2FsLng7XHJcbiAgICAgICAgICAgIHRoaXMudG91Y2hQb2ludFkgPSBsb2NhbC55O1xyXG4gICAgICAgICAgICBkZWx0YS54ID0gdGhpcy50b3VjaFBvaW50WCAtIHRoaXMubm9kZS54ICsgdGhpcy5yZWxhdGl2ZV9Qb3NpdGlvbi54O1xyXG4gICAgICAgICAgICBkZWx0YS55ID0gdGhpcy50b3VjaFBvaW50WSAtIHRoaXMubm9kZS55ICsgIHRoaXMucmVsYXRpdmVfUG9zaXRpb24ueTtcclxuXHJcbiAgICAgICAgICAgIC8vIOmZkOWItuenu+WKqOmAn+W6plxyXG4gICAgICAgICAgICB0aGlzLnRvdWNoUG9pbnRYID0gbG9jYWwueDtcclxuICAgICAgICAgICAgdGhpcy50b3VjaFBvaW50WSA9IGxvY2FsLnk7XHJcbiAgICAgICAgICAgIGRlbHRhLnggPSB0aGlzLnRvdWNoUG9pbnRYIC0gdGhpcy5ub2RlLnggKyB0aGlzLnJlbGF0aXZlX1Bvc2l0aW9uLng7XHJcbiAgICAgICAgICAgIGRlbHRhLnkgPSB0aGlzLnRvdWNoUG9pbnRZIC0gdGhpcy5ub2RlLnkgKyAgdGhpcy5yZWxhdGl2ZV9Qb3NpdGlvbi55O1xyXG5cclxuICAgICAgICAgICAgLy8g6ZmQ5Yi256e75Yqo6YCf5bqmXHJcbiAgICAgICAgICAgIGRlbHRhLnggPSBNYXRoLm1heCgtdGhpcy5tYXhTcGVlZCwgTWF0aC5taW4odGhpcy5tYXhTcGVlZCwgZGVsdGEueCkpO1xyXG4gICAgICAgICAgICBkZWx0YS55ID0gTWF0aC5tYXgoLXRoaXMubWF4U3BlZWQsIE1hdGgubWluKHRoaXMubWF4U3BlZWQsIGRlbHRhLnkpKTtcclxuXHJcbiAgICAgICAgICAgIC8vIOiusOW9leinpuaRuOenu+WKqOeahOWinumHj1xyXG4gICAgICAgICAgICB0aGlzLnRvdWNoRGVsdGEgPSBkZWx0YTsgXHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIC8v6LaF5Ye66ZmQ5Yi25Yik5patXHJcbiAgICBleGNlZWRzKHN0ZXB4LHN0ZXB5KXtcclxuICAgICBcclxuICAgIH1cclxuXHJcbiAgICBlbGltaW5hdGUoKXtcclxuICAgICAgICAvL+mUpOWtkOeKtuaAgea2iOWksVxyXG4gICAgICAgIE1hcENvbnJvbGVyLl9pbnN0YW5jZS5wYXVzZSA9IHRydWU7XHJcbiAgICAgICAgTWFwQ29ucm9sZXIuX2luc3RhbmNlLmhhbW1lciA9IGZhbHNlO1xyXG4gICAgICAgIC8v5aaC5p6c5pa55Z2X5piv5pyJ54m55q6K54q25oCB77yM5YiZ54m55q6K5aSE55CGXHJcbiAgICAgICAgaWYodGhpcy50eXBlID09IEJsb2NrVHlwZS7lhrvnu5PlnZcpe1xyXG4gICAgICAgICAgICB0aGlzLm5vZGUuZ2V0Q2hpbGRCeU5hbWUoXCJmcmVlemVcIikuZ2V0Q29tcG9uZW50KFwiRnJlZXplXCIpLnJlZHVjZSgyKTtcclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIGlmKHRoaXMudHlwZSA9PSBCbG9ja1R5cGUu5LiK6ZSB5Z2XKXtcclxuICAgICAgICAgICAgdGhpcy5ub2RlLmdldENoaWxkQnlOYW1lKFwibG9ja1wiKS5nZXRDb21wb25lbnQoXCJMb2NrXCIpLnJlZHVjZSgpO1xyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICAvL+WmguaenOaWueWdl+WPr+S7pea2iOmZpFxyXG4gICAgICAgIE1hcENvbnJvbGVyLl9pbnN0YW5jZS5ibG9ja051bSAtPSAxO1xyXG4gICAgICAgIE1hcENvbnJvbGVyLl9pbnN0YW5jZS5zcGVjaWFsX1RyZWF0bWVudCh0aGlzLm5vZGUpO1xyXG4gICAgICAgIHZhciBzZWxmID0gdGhpcztcclxuICAgICAgICB0aGlzLnJlbW92ZU1hcEJsb2NrKCk7XHJcblxyXG4gICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICAgICAgICBsZXQgcG9zID0gdGhpcy5ub2RlLmdldFBvc2l0aW9uKCk7XHJcbiAgICAgICAgICAgIGlmKHNlbGYudHlwZSA9PSBCbG9ja1R5cGUu5Y+g5Yqg5Z2X5LiLKXtcclxuICAgICAgICAgICAgICAgIGxldCBzY2FsZVggPSBzZWxmLm5vZGUuc2NhbGVYO1xyXG4gICAgICAgICAgICAgICAgbGV0IHNjYWxlWSA9IHNlbGYubm9kZS5zY2FsZVk7XHJcbiAgICAgICAgICAgICAgICBzZWxmLmJsb2NrX0luZm8ubm9kZS5nZXRDb21wb25lbnQoXCJCbG9ja1wiKS5yZXN0b3JlTm9tYWwodGhpcy5wb3NYLHRoaXMucG9zWSx0cnVlKTtcclxuICAgICAgICAgICAgICAgIGNjLnR3ZWVuKHNlbGYuYmxvY2tfSW5mby5ub2RlKVxyXG4gICAgICAgICAgICAgICAgLnRvKDAuMSx7cG9zaXRpb246cG9zLHNjYWxlWDpzY2FsZVg+MD8xOi0xLHNjYWxlWTpzY2FsZVk+MD8xOi0xfSlcclxuICAgICAgICAgICAgICAgIC5zdGFydCgpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGVsc2UgaWYoc2VsZi50eXBlID09IEJsb2NrVHlwZS7nspjlkIjlnZcpe1xyXG4gICAgICAgICAgICAgICAgc2VsZi5ibG9ja19JbmZvLm5vZGUuZ2V0Q29tcG9uZW50KFwiQmxvY2tcIikucmVzdG9yZU5vbWFsKHNlbGYuYmxvY2tfSW5mby5ub2RlLmdldENvbXBvbmVudChcIkJsb2NrXCIpLnBvc1gsXHJcbiAgICAgICAgICAgICAgICBzZWxmLmJsb2NrX0luZm8ubm9kZS5nZXRDb21wb25lbnQoXCJCbG9ja1wiKS5wb3NZLGZhbHNlKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBlbHNlIGlmKHNlbGYudHlwZSA9PSBCbG9ja1R5cGUu54K45by55Z2XKXtcclxuICAgICAgICAgICAgICAgIHRoaXMubm9kZS5nZXRDaGlsZEJ5TmFtZShcImJvb21cIikuZ2V0Q29tcG9uZW50KFwiQm9vbVwiKS5zdG9wQm9vbSgpO1xyXG4gICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICBNYXBDb25yb2xlci5faW5zdGFuY2UubmV4dExldmVsKCk7XHJcbiAgICAgICAgICAgIHRoaXMubm9kZS5hY3RpdmUgPSBmYWxzZTtcclxuICAgICAgICAgICAgdGhpcy5ub2RlLnJlbW92ZUZyb21QYXJlbnQoKTtcclxuICAgICAgICB9LCAyMDApO1xyXG4gICAgfVxyXG4gICAgIFxyXG4gICAgc2V0VmlicmF0ZSh0eXBlLCBjb3VudCl7XHJcbiAgICAgICAgLy8gcmV0dXJuO1xyXG4gICAgICAgIGlmKCFjYy5meC5HYW1lQ29uZmlnLkdNX0lORk8udmlicmF0ZU9wZW4pe1xyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmKGNvdW50ID09IDEpe1xyXG4gICAgICAgICAgICAvL0B0cy1pZ25vcmVcclxuICAgICAgICAgICAgaWYgKHR5cGVvZiB3eCAhPT0gJ3VuZGVmaW5lZCcgJiYgd3ggIT09IG51bGwpIHsgLy8g5Yik5pat5piv5ZCm5Zyo5b6u5L+h546v5aKDXHJcbiAgICAgICAgICAgICAgICAvL0B0cy1pZ25vcmVcclxuICAgICAgICAgICAgICAgIHd4LnZpYnJhdGVTaG9ydCh7XHJcbiAgICAgICAgICAgICAgICAgICAgdHlwZTogdHlwZSxcclxuICAgICAgICAgICAgICAgICAgICBzdWNjZXNzOiAoKSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICAgICAgICBmYWlsOiAoZXJyKSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuICAgICAgICBsZXQgdGltZSA9IDE1MDtcclxuICAgICAgICBmb3IobGV0IGk9MDsgaTw0OyBpKyspe1xyXG4gICAgICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgICAgICAgICAgIC8vQHRzLWlnbm9yZVxyXG4gICAgICAgICAgICAgICAgaWYgKHR5cGVvZiB3eCAhPT0gJ3VuZGVmaW5lZCcgJiYgd3ggIT09IG51bGwpIHsgLy8g5Yik5pat5piv5ZCm5Zyo5b6u5L+h546v5aKDXHJcbiAgICAgICAgICAgICAgICAgICAgLy9AdHMtaWdub3JlXHJcbiAgICAgICAgICAgICAgICAgICAgd3gudmlicmF0ZVNob3J0KHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgdHlwZTogdHlwZSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgc3VjY2VzczogKCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBmYWlsOiAoZXJyKSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH0sIHRpbWUqaSk7XHJcbiAgICAgICAgfVxyXG5cclxuICAgIH1cclxuXHJcblxyXG4gICAgc2V0TW92ZUNvcm5lcihkaXJhY3Rpb24pe1xyXG4gICAgICAgIHJldHVybjtcclxuICAgIH1cclxuXHJcbiAgICBjbXVwZGF0ZSgpIHtcclxuICAgICAgICBsZXQgY206YW55ID0gY2MuZGlyZWN0b3IuZ2V0Q29sbGlzaW9uTWFuYWdlcigpOyAgICAgICAgXHJcbiAgICAgICAgY20udXBkYXRlKCk7XHJcbiAgICB9XHJcblxyXG4gICAgcmVzdG9yZU5vbWFsKHBvc1gscG9zWSx0eXBlKXtcclxuICAgICAgICB0aGlzLnR5cGUgPSAwO1xyXG4gICAgICAgIHRoaXMuYmxvY2tfSW5mby5ub2RlID0gbnVsbDtcclxuICAgICAgICB0aGlzLm1vdmVTdGFjayA9IGZhbHNlOyBcclxuICAgICAgICB0aGlzLnBvc1ggPSBwb3NYO1xyXG4gICAgICAgIHRoaXMucG9zWSA9IHBvc1k7XHJcbiAgICAgICAgdGhpcy5zZXRNYXBCbG9jaygpO1xyXG4gICAgICAgIHRoaXMubGV2ZWwgPSA1MCArIHRoaXMucG9zWCAtIHRoaXMucG9zWSozO1xyXG4gICAgICAgIHRoaXMubm9kZS56SW5kZXggPSB0aGlzLmxldmVsO1xyXG4gICAgICAgIGxldCBqID0gMTAwMDtcclxuICAgICAgICBmb3IobGV0IGkgPTA7IGk8IHRoaXMubm9kZS5jaGlsZHJlbi5sZW5ndGg7IGkrKyl7XHJcbiAgICAgICAgICAgIGlmKHRoaXMubm9kZS5jaGlsZHJlbltpXS5uYW1lID09IFwiTmV3IE5vZGVcIil7XHJcbiAgICAgICAgICAgICAgICBqID0gaTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBpZihpID4gail7XHJcbiAgICAgICAgICAgICAgICB0aGlzLm5vZGUuY2hpbGRyZW5baV0uYWN0aXZlID0gZmFsc2U7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgaWYodHlwZSl7XHJcbiAgICAgICAgICAgIGZvcihsZXQgaT0wOyBpPHRoaXMubm9kZS5jaGlsZHJlbi5sZW5ndGg7IGkrKyl7XHJcbiAgICAgICAgICAgICAgICBpZih0aGlzLm5vZGUuY2hpbGRyZW5baV0ubmFtZSA9PSBcImxlZnRcIiB8fCB0aGlzLm5vZGUuY2hpbGRyZW5baV0ubmFtZSA9PSBcInJpZ2h0XCIgfHwgdGhpcy5ub2RlLmNoaWxkcmVuW2ldLm5hbWUgPT0gXCJ0b3BcIiB8fCB0aGlzLm5vZGUuY2hpbGRyZW5baV0ubmFtZSA9PSBcImRvd25cIilcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLm5vZGUuY2hpbGRyZW5baV0uYWN0aXZlID0gdHJ1ZTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLm5vZGUub24oY2MuTm9kZS5FdmVudFR5cGUuVE9VQ0hfU1RBUlQsIHRoaXMudG91Y2hTdGFydCwgdGhpcyk7XHJcbiAgICAgICAgdGhpcy5ub2RlLm9uKGNjLk5vZGUuRXZlbnRUeXBlLlRPVUNIX01PVkUsIHRoaXMudG91Y2hNb3ZlLCB0aGlzKTtcclxuICAgICAgICB0aGlzLm5vZGUub24oY2MuTm9kZS5FdmVudFR5cGUuVE9VQ0hfQ0FOQ0VMLCB0aGlzLnRvdWNoRW5kLCB0aGlzKTtcclxuICAgICAgICB0aGlzLm5vZGUub24oY2MuTm9kZS5FdmVudFR5cGUuVE9VQ0hfRU5ELCB0aGlzLnRvdWNoRW5kLCB0aGlzKTtcclxuICAgICAgICB0aGlzLm5vZGVbJ190b3VjaExpc3RlbmVyJ10uc2V0U3dhbGxvd1RvdWNoZXMoZmFsc2UpO1xyXG4gICAgICAgIHRoaXMuaGl0ID0gbmV3IGNjLk5vZGUoKTtcclxuICAgICAgICB0aGlzLmhpdC5hZGRDb21wb25lbnQoY2MuU3ByaXRlKTtcclxuICAgICAgICB0aGlzLmhpdC5wYXJlbnQgPSB0aGlzLm5vZGU7XHJcbiAgICAgICAgbGV0IG5hbWUgPSBcInh6X1wiK3RoaXMuYmxvY2tfSW5mby5ibG9jaztcclxuICAgICAgICB0aGlzLmhpdC5nZXRDb21wb25lbnQoY2MuU3ByaXRlKS5zcHJpdGVGcmFtZSA9IHRoaXMuaWNlX1Nwcml0ZUZyYW1lLl9zcHJpdGVGcmFtZXNbbmFtZV07XHJcbiAgICAgICAgdGhpcy5oaXQuc2V0QW5jaG9yUG9pbnQodGhpcy5ub2RlLmFuY2hvclgsdGhpcy5ub2RlLmFuY2hvclkpO1xyXG4gICAgICAgIHRoaXMuaGl0LnNldFBvc2l0aW9uKDEzLC0xMSk7XHJcbiAgICAgICAgaWYodGhpcy5oaXQuYW5jaG9yWCA9PSAwLjUpIHRoaXMuaGl0LnNldFBvc2l0aW9uKDAsLTExKTtcclxuICAgICAgICBlbHNlIGlmKHRoaXMuaGl0LmFuY2hvclggPT0gMC4zMykgdGhpcy5oaXQuc2V0UG9zaXRpb24oLTEzLC0xMSk7XHJcbiAgICAgICAgZWxzZSBpZih0aGlzLmhpdC5hbmNob3JYID09IDAuNjYpIHRoaXMuaGl0LnNldFBvc2l0aW9uKDIsLTkpO1xyXG4gICAgICAgIHRoaXMuaGl0LmFjdGl2ZSA9IGZhbHNlO1xyXG4gICAgfVxyXG5cclxuICAgIC8v5Ya757uT54q25oCB5oGi5aSN5Li65bi46KeE54q25oCBXHJcbiAgICByZXNldEZyZWV6ZSgpe1xyXG4gICAgICAgIHRoaXMudHlwZSA9IDA7XHJcbiAgICAgICAgdGhpcy5ibG9ja19JbmZvLnR5cGUgPSAwO1xyXG4gICAgICAgIGxldCBuYW1lID0gdGhpcy5jb2xvcitcImNvbG9yXCIrdGhpcy5ibG9ja19JbmZvLmJsb2NrO1xyXG4gICAgICAgIGxldCBudW1iZXIgPSBNYXRoLmZsb29yKCh0aGlzLmNvbG9yLTEpLzIpO1xyXG4gICAgICAgIGxldCBibG9ja1Nwcml0ZUZyYW1lID0gTWFwQ29ucm9sZXIuX2luc3RhbmNlLkJsb2NrX0NvbG9yW251bWJlcl0uX3Nwcml0ZUZyYW1lcztcclxuICAgICAgICB2YXIgc3ByaXRlRnJhbWUgPSBibG9ja1Nwcml0ZUZyYW1lW25hbWVdO1xyXG4gICAgICAgIHRoaXMubm9kZS5nZXRDaGlsZEJ5TmFtZShcImljb25cIikuZ2V0Q29tcG9uZW50KGNjLlNwcml0ZSkuc3ByaXRlRnJhbWUgPSBzcHJpdGVGcmFtZTtcclxuICAgIH1cclxuXHJcbiAgICBpbml0QmxvY2tzKCl7XHJcbiAgICAgICAgdGhpcy5hbGxCbG9ja3MgPSBbXTtcclxuICAgICAgICBzd2l0Y2godGhpcy5ibG9ja19JbmZvLmJsb2NrKXtcclxuICAgICAgICAgICAgY2FzZSAwOlxyXG4gICAgICAgICAgICAgICAgbGV0IHBvcyA9IGNjLnYyKDAsMCk7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmFsbEJsb2NrcyA9IFtwb3NdO1xyXG4gICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgIGNhc2UgMTpcclxuICAgICAgICAgICAgICAgIGxldCBwb3MxID0gY2MudjIoMCwwKTtcclxuICAgICAgICAgICAgICAgIGxldCBwb3MyID0gY2MudjIoLTEsMCk7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmFsbEJsb2NrcyA9IFtwb3MxLHBvczJdO1xyXG4gICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgIGNhc2UgMjpcclxuICAgICAgICAgICAgICAgIGxldCBwb3MzID0gY2MudjIoMCwwKTtcclxuICAgICAgICAgICAgICAgIGxldCBwb3M0ID0gY2MudjIoMCwxKTtcclxuICAgICAgICAgICAgICAgIHRoaXMuYWxsQmxvY2tzID0gW3BvczMscG9zNF07XHJcbiAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgY2FzZSAzOlxyXG4gICAgICAgICAgICAgICAgbGV0IHBvczUgPSBjYy52MigwLDApO1xyXG4gICAgICAgICAgICAgICAgbGV0IHBvczYgPSBjYy52MigtMSwwKTtcclxuICAgICAgICAgICAgICAgIGxldCBwb3M3ID0gY2MudjIoLTIsMCk7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmFsbEJsb2NrcyA9IFtwb3M1LHBvczYscG9zN107XHJcbiAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgY2FzZSA0OlxyXG4gICAgICAgICAgICAgICAgbGV0IHBvczggPSBjYy52MigwLDApO1xyXG4gICAgICAgICAgICAgICAgbGV0IHBvczkgPSBjYy52MigwLDEpO1xyXG4gICAgICAgICAgICAgICAgbGV0IHBvczEwID0gY2MudjIoMCwyKTtcclxuICAgICAgICAgICAgICAgIHRoaXMuYWxsQmxvY2tzID0gW3BvczgscG9zOSxwb3MxMF07XHJcbiAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgY2FzZSA1OlxyXG4gICAgICAgICAgICAgICAgbGV0IHBvczExID0gY2MudjIoMCwwKTtcclxuICAgICAgICAgICAgICAgIGxldCBwb3MxMiA9IGNjLnYyKC0xLDApO1xyXG4gICAgICAgICAgICAgICAgbGV0IHBvczEzID0gY2MudjIoLTEsMSk7ICAgIFxyXG4gICAgICAgICAgICAgICAgbGV0IHBvczE0ID0gY2MudjIoMCwxKTtcclxuICAgICAgICAgICAgICAgIHRoaXMuYWxsQmxvY2tzID0gW3BvczExLHBvczEyLHBvczEzLHBvczE0XTtcclxuICAgICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICBjYXNlIDY6XHJcbiAgICAgICAgICAgICAgICBsZXQgcG9zMTUgPSBjYy52MigwLDApO1xyXG4gICAgICAgICAgICAgICAgbGV0IHBvczE2ID0gY2MudjIoMCwxKTtcclxuICAgICAgICAgICAgICAgIGxldCBwb3MxNyA9IGNjLnYyKDAsMik7XHJcbiAgICAgICAgICAgICAgICBsZXQgcG9zMTggPSBjYy52MigtMSwyKTtcclxuICAgICAgICAgICAgICAgIHRoaXMuYWxsQmxvY2tzID0gW3BvczE1LHBvczE2LHBvczE3LHBvczE4XTtcclxuICAgICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICBjYXNlIDc6XHJcbiAgICAgICAgICAgICAgICBsZXQgcG9zMTkgPSBjYy52MigwLDApO1xyXG4gICAgICAgICAgICAgICAgbGV0IHBvczIwID0gY2MudjIoMCwxKTtcclxuICAgICAgICAgICAgICAgIGxldCBwb3MyMSA9IGNjLnYyKC0xLDEpO1xyXG4gICAgICAgICAgICAgICAgbGV0IHBvczIyID0gY2MudjIoLTIsMSk7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmFsbEJsb2NrcyA9IFtwb3MxOSxwb3MyMCxwb3MyMSxwb3MyMl07XHJcbiAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgY2FzZSA4OlxyXG4gICAgICAgICAgICAgICAgbGV0IHBvczIzID0gY2MudjIoMCwwKTtcclxuICAgICAgICAgICAgICAgIGxldCBwb3MyNCA9IGNjLnYyKC0xLDApO1xyXG4gICAgICAgICAgICAgICAgbGV0IHBvczI1ID0gY2MudjIoLTEsMSk7XHJcbiAgICAgICAgICAgICAgICBsZXQgcG9zMjYgPSBjYy52MigtMSwyKTtcclxuICAgICAgICAgICAgICAgIHRoaXMuYWxsQmxvY2tzID0gW3BvczIzLHBvczI0LHBvczI1LHBvczI2XTtcclxuICAgICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICBjYXNlIDk6XHJcbiAgICAgICAgICAgICAgICBsZXQgcG9zMjcgPSBjYy52MigwLDApO1xyXG4gICAgICAgICAgICAgICAgbGV0IHBvczI4ID0gY2MudjIoLTEsMCk7XHJcbiAgICAgICAgICAgICAgICBsZXQgcG9zMjkgPSBjYy52MigtMiwwKTtcclxuICAgICAgICAgICAgICAgIGxldCBwb3MzMCA9IGNjLnYyKDAsMSk7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmFsbEJsb2NrcyA9IFtwb3MyNyxwb3MyOCxwb3MyOSxwb3MzMF07XHJcbiAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgY2FzZSAxMDpcclxuICAgICAgICAgICAgICAgIGxldCBwb3MzMSA9IGNjLnYyKDAsMCk7XHJcbiAgICAgICAgICAgICAgICBsZXQgcG9zMzIgPSBjYy52MigxLDIpO1xyXG4gICAgICAgICAgICAgICAgbGV0IHBvczMzID0gY2MudjIoMCwxKTtcclxuICAgICAgICAgICAgICAgIGxldCBwb3MzNCA9IGNjLnYyKDAsMik7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmFsbEJsb2NrcyA9IFtwb3MzMSxwb3MzMixwb3MzMyxwb3MzNF07XHJcbiAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgY2FzZSAxMTpcclxuICAgICAgICAgICAgICAgIGxldCBwb3MzNSA9IGNjLnYyKDAsMCk7XHJcbiAgICAgICAgICAgICAgICBsZXQgcG9zMzYgPSBjYy52MigyLDEpO1xyXG4gICAgICAgICAgICAgICAgbGV0IHBvczM3ID0gY2MudjIoMSwxKTtcclxuICAgICAgICAgICAgICAgIGxldCBwb3MzOCA9IGNjLnYyKDAsMSk7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmFsbEJsb2NrcyA9IFtwb3MzNSxwb3MzNixwb3MzNyxwb3MzOF07XHJcbiAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgY2FzZSAxMjpcclxuICAgICAgICAgICAgICAgIGxldCBwb3MzOSA9IGNjLnYyKDAsMCk7XHJcbiAgICAgICAgICAgICAgICBsZXQgcG9zNDAgPSBjYy52MigwLDEpO1xyXG4gICAgICAgICAgICAgICAgbGV0IHBvczQxID0gY2MudjIoMCwyKTtcclxuICAgICAgICAgICAgICAgIGxldCBwb3M0MiA9IGNjLnYyKC0xLDApO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5hbGxCbG9ja3MgPSBbcG9zMzkscG9zNDAscG9zNDEscG9zNDJdO1xyXG4gICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgIGNhc2UgMTM6XHJcbiAgICAgICAgICAgICAgICBsZXQgcG9zNDMgPSBjYy52MigwLDApO1xyXG4gICAgICAgICAgICAgICAgbGV0IHBvczQ0ID0gY2MudjIoLTEsMCk7XHJcbiAgICAgICAgICAgICAgICBsZXQgcG9zNDUgPSBjYy52MigtMiwwKTtcclxuICAgICAgICAgICAgICAgIGxldCBwb3M0NiA9IGNjLnYyKC0yLDEpO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5hbGxCbG9ja3MgPSBbcG9zNDMscG9zNDQscG9zNDUscG9zNDZdO1xyXG4gICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgIGNhc2UgMTQ6XHJcbiAgICAgICAgICAgICAgICBsZXQgcG9zNDcgPSBjYy52MigwLDApO1xyXG4gICAgICAgICAgICAgICAgbGV0IHBvczQ4ID0gY2MudjIoMCwxKTtcclxuICAgICAgICAgICAgICAgIGxldCBwb3M0OSA9IGNjLnYyKC0xLDEpO1xyXG4gICAgICAgICAgICAgICAgbGV0IHBvczUwID0gY2MudjIoMSwxKTtcclxuICAgICAgICAgICAgICAgIHRoaXMuYWxsQmxvY2tzID0gW3BvczQ3LHBvczQ4LHBvczQ5LHBvczUwXTtcclxuICAgICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICBjYXNlIDE1OlxyXG4gICAgICAgICAgICAgICAgbGV0IHBvczUxID0gY2MudjIoMCwwKTtcclxuICAgICAgICAgICAgICAgIGxldCBwb3M1MiA9IGNjLnYyKC0xLDApO1xyXG4gICAgICAgICAgICAgICAgbGV0IHBvczUzID0gY2MudjIoLTIsMCk7XHJcbiAgICAgICAgICAgICAgICBsZXQgcG9zNTQgPSBjYy52MigtMSwxKTtcclxuICAgICAgICAgICAgICAgIHRoaXMuYWxsQmxvY2tzID0gW3BvczUxLHBvczUyLHBvczUzLHBvczU0XTtcclxuICAgICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICBjYXNlIDE2OlxyXG4gICAgICAgICAgICAgICAgbGV0IHBvczU1ID0gY2MudjIoMCwwKTtcclxuICAgICAgICAgICAgICAgIGxldCBwb3M1NiA9IGNjLnYyKDEsMSk7XHJcbiAgICAgICAgICAgICAgICBsZXQgcG9zNTcgPSBjYy52MigwLDEpO1xyXG4gICAgICAgICAgICAgICAgbGV0IHBvczU4ID0gY2MudjIoMCwyKTtcclxuICAgICAgICAgICAgICAgIHRoaXMuYWxsQmxvY2tzID0gW3BvczU1LHBvczU2LHBvczU3LHBvczU4XTtcclxuICAgICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICBjYXNlIDE3OlxyXG4gICAgICAgICAgICAgICAgbGV0IHBvczU5ID0gY2MudjIoMCwwKTtcclxuICAgICAgICAgICAgICAgIGxldCBwb3M2MCA9IGNjLnYyKDAsMSk7XHJcbiAgICAgICAgICAgICAgICBsZXQgcG9zNjEgPSBjYy52MigwLDIpO1xyXG4gICAgICAgICAgICAgICAgbGV0IHBvczYyID0gY2MudjIoLTEsMSk7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmFsbEJsb2NrcyA9IFtwb3M1OSxwb3M2MCxwb3M2MSxwb3M2Ml07XHJcbiAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgY2FzZSAxODpcclxuICAgICAgICAgICAgICAgIGxldCBwb3M2MyA9IGNjLnYyKDAsMCk7XHJcbiAgICAgICAgICAgICAgICBsZXQgcG9zNjQgPSBjYy52MigwLDEpO1xyXG4gICAgICAgICAgICAgICAgbGV0IHBvczY1ID0gY2MudjIoMCwyKTtcclxuICAgICAgICAgICAgICAgIGxldCBwb3M2NiA9IGNjLnYyKDEsMSk7XHJcbiAgICAgICAgICAgICAgICBsZXQgcG9zNjcgPSBjYy52MigtMSwxKTtcclxuICAgICAgICAgICAgICAgIHRoaXMuYWxsQmxvY2tzID0gW3BvczYzLHBvczY0LHBvczY1LHBvczY2LHBvczY3XTtcclxuICAgICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICBjYXNlIDE5OlxyXG4gICAgICAgICAgICAgICAgbGV0IHBvczY4ID0gY2MudjIoMCwwKTtcclxuICAgICAgICAgICAgICAgIGxldCBwb3M2OSA9IGNjLnYyKDAsMSk7XHJcbiAgICAgICAgICAgICAgICBsZXQgcG9zNzAgPSBjYy52MigtMSwwKTtcclxuICAgICAgICAgICAgICAgIHRoaXMuYWxsQmxvY2tzID0gW3BvczY4LHBvczY5LHBvczcwXTtcclxuICAgICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICBjYXNlIDIwOlxyXG4gICAgICAgICAgICAgICAgbGV0IHBvczcxID0gY2MudjIoMCwwKTtcclxuICAgICAgICAgICAgICAgIGxldCBwb3M3MiA9IGNjLnYyKC0xLDApO1xyXG4gICAgICAgICAgICAgICAgbGV0IHBvczczID0gY2MudjIoLTEsMSk7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmFsbEJsb2NrcyA9IFtwb3M3MSxwb3M3Mixwb3M3M107XHJcbiAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgY2FzZSAyMTpcclxuICAgICAgICAgICAgICAgIGxldCBwb3M3NCA9IGNjLnYyKDAsMCk7XHJcbiAgICAgICAgICAgICAgICBsZXQgcG9zNzUgPSBjYy52MigwLDEpO1xyXG4gICAgICAgICAgICAgICAgbGV0IHBvczc2ID0gY2MudjIoMSwxKTtcclxuICAgICAgICAgICAgICAgIHRoaXMuYWxsQmxvY2tzID0gW3Bvczc0LHBvczc1LHBvczc2XTtcclxuICAgICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICBjYXNlIDIyOlxyXG4gICAgICAgICAgICAgICAgbGV0IHBvczc3ID0gY2MudjIoMCwwKTtcclxuICAgICAgICAgICAgICAgIGxldCBwb3M3OCA9IGNjLnYyKDAsMSk7XHJcbiAgICAgICAgICAgICAgICBsZXQgcG9zNzkgPSBjYy52MigtMSwxKTtcclxuICAgICAgICAgICAgICAgIHRoaXMuYWxsQmxvY2tzID0gW3Bvczc3LHBvczc4LHBvczc5XTtcclxuICAgICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgc2V0TWFwQmxvY2soKXtcclxuICAgICAgICBpZih0aGlzLmFsbEJsb2Nrcy5sZW5ndGggPiAwKXtcclxuICAgICAgICAgICAgZm9yKGxldCBpPTA7IGk8dGhpcy5hbGxCbG9ja3MubGVuZ3RoOyBpKyspe1xyXG4gICAgICAgICAgICAgICAgbGV0IHBvcyA9IHRoaXMuYWxsQmxvY2tzW2ldO1xyXG4gICAgICAgICAgICAgICAgbGV0IHggPSB0aGlzLnBvc1ggKyBwb3MueDtcclxuICAgICAgICAgICAgICAgIGxldCB5ID0gdGhpcy5wb3NZICsgcG9zLnk7IFxyXG4gICAgICAgICAgICAgICAgTWFwQ29ucm9sZXIuX2luc3RhbmNlLm1hcEJsb2Nrc1dhbGxbeF1beV0uZ2V0Q29tcG9uZW50KFwiTWFwQmxvY2tcIikuYmxvY2tfSWQgPSB0aGlzLm5vZGUudXVpZDtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICByZW1vdmVNYXBCbG9jaygpe1xyXG4gICAgICAgIGlmKHRoaXMucG9zWCA9PSAwICYmIHRoaXMucG9zWSA9PSAwKXtcclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZih0aGlzLmFsbEJsb2Nrcyl7XHJcbiAgICAgICAgICAgIGlmKHRoaXMuYWxsQmxvY2tzLmxlbmd0aCA+IDApe1xyXG4gICAgICAgICAgICAgICAgZm9yKGxldCBpPTA7IGk8dGhpcy5hbGxCbG9ja3MubGVuZ3RoOyBpKyspe1xyXG4gICAgICAgICAgICAgICAgICAgIGlmKHRoaXMuYWxsQmxvY2tzW2ldKXtcclxuICAgICAgICAgICAgICAgICAgICAgICAgbGV0IHBvcyA9IHRoaXMuYWxsQmxvY2tzW2ldO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBsZXQgeCA9IHRoaXMucG9zWCArIHBvcy54O1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBsZXQgeSA9IHRoaXMucG9zWSArIHBvcy55OyBcclxuICAgICAgICAgICAgICAgICAgICAgICAgaWYoTWFwQ29ucm9sZXIuX2luc3RhbmNlLm1hcEJsb2Nrc1dhbGxbeF1beV0pe1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYoTWFwQ29ucm9sZXIuX2luc3RhbmNlLm1hcEJsb2Nrc1dhbGxbeF1beV0uZ2V0Q29tcG9uZW50KFwiTWFwQmxvY2tcIikpXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTWFwQ29ucm9sZXIuX2luc3RhbmNlLm1hcEJsb2Nrc1dhbGxbeF1beV0uZ2V0Q29tcG9uZW50KFwiTWFwQmxvY2tcIikuYmxvY2tfSWQgPSBcIlwiO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfSBcclxuICAgICAgICAgICAgfSBcclxuICAgICAgICB9XHJcblxyXG4gICAgfVxyXG4gICAgLy/lj6DliqDlnZfvvIzkvY3nva7lt67lvILvvIzmoKHlh4bkvY3nva5cclxuICAgIGdldFN0YWNraW5nUG9zKCl7XHJcbiAgICAgICAgc3dpdGNoKHRoaXMubm9kZS5uYW1lKXtcclxuICAgICAgICAgICAgY2FzZSBcImJsb2NrMFwiOlxyXG4gICAgICAgICAgICAgICAgcmV0dXJuIGNjLnYyKC0yMSwyMik7XHJcbiAgICAgICAgICAgIGNhc2UgXCJibG9jazFcIjpcclxuICAgICAgICAgICAgICAgIHJldHVybiBjYy52MigtMzYsMjMpO1xyXG4gICAgICAgICAgICBjYXNlIFwiYmxvY2syXCI6XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gY2MudjIoLTE4LDQwKTtcclxuICAgICAgICAgICAgY2FzZSBcImJsb2NrM1wiOlxyXG4gICAgICAgICAgICAgICAgcmV0dXJuIGNjLnYyKC01OSwyNSk7XHJcbiAgICAgICAgICAgIGNhc2UgXCJibG9jazRcIjpcclxuICAgICAgICAgICAgICAgIHJldHVybiBjYy52MigtMTksNTcpO1xyXG4gICAgICAgICAgICBjYXNlIFwiYmxvY2s1XCI6XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gY2MudjIoLTM2LDM4KTtcclxuICAgICAgICAgICAgY2FzZSBcImJsb2NrNlwiOlxyXG4gICAgICAgICAgICAgICAgcmV0dXJuIGNjLnYyKC0xOSw5Nyk7XHJcbiAgICAgICAgICAgIGNhc2UgXCJibG9jazdcIjpcclxuICAgICAgICAgICAgICAgIHJldHVybiBjYy52MigtMTksNjEpO1xyXG4gICAgICAgICAgICBjYXNlIFwiYmxvY2s4XCI6XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gY2MudjIoLTU1LDI0KTtcclxuICAgICAgICAgICAgY2FzZSBcImJsb2NrOVwiOlxyXG4gICAgICAgICAgICAgICAgcmV0dXJuIGNjLnYyKC0yMCwyNCk7XHJcbiAgICAgICAgICAgIGNhc2UgXCJibG9jazEwXCI6XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gY2MudjIoLTE3LDk2KTtcclxuICAgICAgICAgICAgY2FzZSBcImJsb2NrMTFcIjpcclxuICAgICAgICAgICAgICAgIHJldHVybiBjYy52MigtMTcsNTgpO1xyXG4gICAgICAgICAgICBjYXNlIFwiYmxvY2sxMlwiOlxyXG4gICAgICAgICAgICAgICAgcmV0dXJuIGNjLnYyKC0yMCwyNCk7XHJcbiAgICAgICAgICAgIGNhc2UgXCJibG9jazEzXCI6XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gY2MudjIoLTkyLDI1KTtcclxuICAgICAgICAgICAgY2FzZSBcImJsb2NrMTRcIjpcclxuICAgICAgICAgICAgICAgIHJldHVybiBjYy52MigtMTgsNjApO1xyXG4gICAgICAgICAgICBjYXNlIFwiYmxvY2sxNVwiOlxyXG4gICAgICAgICAgICAgICAgcmV0dXJuIGNjLnYyKC01OCwyNCk7XHJcbiAgICAgICAgICAgIGNhc2UgXCJibG9jazE2XCI6XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gY2MudjIoLTIwLDYwKTtcclxuICAgICAgICAgICAgY2FzZSBcImJsb2NrMTdcIjpcclxuICAgICAgICAgICAgICAgIHJldHVybiBjYy52MigtMTcsNjApO1xyXG4gICAgICAgICAgICBjYXNlIFwiYmxvY2sxOFwiOlxyXG4gICAgICAgICAgICAgICAgcmV0dXJuIGNjLnYyKC0xNyw2MCk7XHJcbiAgICAgICAgICAgIGNhc2UgXCJibG9jazE5XCI6XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gY2MudjIoLTIwLDI0KTtcclxuICAgICAgICAgICAgY2FzZSBcImJsb2NrMjBcIjpcclxuICAgICAgICAgICAgICAgIHJldHVybiBjYy52MigtNTQsMjUpO1xyXG4gICAgICAgICAgICBjYXNlIFwiYmxvY2syMVwiOlxyXG4gICAgICAgICAgICAgICAgcmV0dXJuIGNjLnYyKC0xNyw2MCk7XHJcbiAgICAgICAgICAgIGNhc2UgXCJibG9jazIyXCI6XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gY2MudjIoLTE3LDYwKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgdXBkYXRlIChkdDogbnVtYmVyKSB7XHJcbiAgICAgICAgaWYgKHRoaXMuaXNUb3VjaCAmJiB0aGlzLnRvdWNoRGVsdGEubWFnKCkgPiAwKSB7XHJcbiAgICAgICAgICAgICAgICAvL3RoaXMubW92ZUxlZnQgPSB0aGlzLm1vdmVSaWdodCA9IHRoaXMubW92ZVVwID0gdGhpcy5tb3ZlRG93biA9IHRydWU7XHJcbiAgICAgICAgICAgICAgICBjb25zdCBkZWx0YSA9IHRoaXMudG91Y2hEZWx0YTtcclxuICAgICAgICAgICAgICAgIGNvbnN0IG5ld1ggPSB0aGlzLm5vZGUueCArIGRlbHRhLng7XHJcbiAgICAgICAgICAgICAgICBjb25zdCBuZXdZID0gdGhpcy5ub2RlLnkgKyBkZWx0YS55O1xyXG4gICAgICAgICAgICAgICAgY29uc3QgZGlzdGFuY2UgPSBNYXRoLnNxcnQoTWF0aC5wb3cobmV3WCAtIHRoaXMubm9kZS54LCAyKSArIE1hdGgucG93KG5ld1kgLSB0aGlzLm5vZGUueSwgMikpO1xyXG4gICAgICAgICAgICAgICAgbGV0IG1hZyA9IE1hdGgucm91bmQoZGVsdGEubWFnKCkpO1xyXG5cclxuICAgICAgICAgICAgICAgIGlmKHRoaXMubW92ZVkgPT09IDEpe1xyXG4gICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLnRvdWNoUG9pbnRZIDw9IHRoaXMubm9kZS55ICsgdGhpcy5ub2RlLmhlaWdodC8yKXtcclxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5tb3ZlWSA9IDA7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfSBlbHNlIGlmKHRoaXMubW92ZVkgPT09IC0xKXtcclxuICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy50b3VjaFBvaW50WSA+PSB0aGlzLm5vZGUueSArIHRoaXMubm9kZS5oZWlnaHQvMil7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMubW92ZVkgPSAwO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgICAgICBpZih0aGlzLm1vdmVYID09PSAxKXtcclxuICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy50b3VjaFBvaW50WCA8PSB0aGlzLm5vZGUueCAtIHRoaXMubm9kZS53aWR0aC8yKXtcclxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5tb3ZlWCA9IDA7XHJcbiAgICAgICAgICAgICAgICAgICAgfSBcclxuICAgICAgICAgICAgICAgICAgICBlbHNle1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH0gZWxzZSBpZih0aGlzLm1vdmVYID09PSAtMSl7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMudG91Y2hQb2ludFggPj0gdGhpcy5ub2RlLnggLSB0aGlzLm5vZGUud2lkdGgvMil7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMubW92ZVggPSAwO1xyXG4gICAgICAgICAgICAgICAgICAgIH0gXHJcbiAgICAgICAgICAgICAgICAgICAgZWxzZXtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBpZiAoZGlzdGFuY2UgPiAxMDApIHtcclxuICAgICAgICAgICAgICAgICAgICBtYWcgPSAxMDtcclxuICAgICAgICAgICAgICAgICAgICBjb25zdCBzcGVlZFNjYWxlID0gMC41OyBcclxuICAgICAgICAgICAgICAgICAgICBkZWx0YS54ICo9IHNwZWVkU2NhbGU7XHJcbiAgICAgICAgICAgICAgICAgICAgZGVsdGEueSAqPSBzcGVlZFNjYWxlO1xyXG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICBpZiAobWFnID4gNSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBtYWcgPSBNYXRoLmZsb29yKG1hZyAvIDUpO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgICAgICAvLyBtYWcgPSAyO1xyXG4gICAgICAgICAgICAgICAgY29uc3Qgc3RlcHggPSBkZWx0YS54IC8gbWFnO1xyXG4gICAgICAgICAgICAgICAgY29uc3Qgc3RlcHkgPSBkZWx0YS55IC8gbWFnO1xyXG5cclxuICAgICAgICAgICAgICAgIGZvciAobGV0IGluZGV4ID0gMDsgaW5kZXggPCBtYWc7IGluZGV4KyspIHtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLm1vdmVDb3JuZXIgPSAwO1xyXG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHRlbXBYID0gdGhpcy5ub2RlLnggKyBzdGVweDtcclxuICAgICAgICAgICAgICAgICAgICBjb25zdCB0ZW1wWSA9IHRoaXMubm9kZS55ICsgc3RlcHk7XHJcblxyXG4gICAgICAgICAgICAgICAgICAgIGlmICghdGhpcy5jaGVja0NvbGxpc2lvbikge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBpZih0aGlzLnR5cGUgIT09IDggJiYgdGhpcy50eXBlICE9PSAxMCl7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLm5vZGUueCA9IE1hdGgucm91bmQodGVtcFgpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB9IFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBpZih0aGlzLnR5cGUgIT09IDcgJiYgdGhpcy50eXBlICE9PSAxMCl7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLm5vZGUueSA9ICBNYXRoLnJvdW5kKHRlbXBZKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgfSBcclxuICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBpc1hNYWluID0gTWF0aC5hYnMoc3RlcHgpID4gTWF0aC5hYnMoc3RlcHkpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoaXNYTWFpbikge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMubm9kZS54ID4gdGVtcFgpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy5tb3ZlTGVmdCAmJiB0aGlzLm1vdmVYID09PSAwICYmIHRoaXMudHlwZSAhPT0gOCAmJiB0aGlzLnR5cGUgIT09IDEwKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMubm9kZS54ID0gdGVtcFg7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmKHRoaXMubW92ZVggIT09IDApe1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLm1vdmVYID0gMDtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKHRoaXMubm9kZS54IDw9IHRlbXBYKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMubW92ZVJpZ2h0ICYmIHRoaXMubW92ZVggPT09IDAgJiYgdGhpcy50eXBlICE9PSA4ICYmIHRoaXMudHlwZSAhPT0gMTApIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5ub2RlLnggPSB0ZW1wWDtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYodGhpcy5tb3ZlWCAhPT0gMCl7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMubW92ZVggPSAwO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy5ub2RlLnkgPiB0ZW1wWSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLm1vdmVEb3duICYmIHRoaXMubW92ZVkgPT09IDAgJiYgdGhpcy50eXBlICE9PSA3ICYmIHRoaXMudHlwZSAhPT0gMTApIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5ub2RlLnkgPSB0ZW1wWTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYodGhpcy5tb3ZlWSAhPT0gMCl7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMubW92ZVkgPSAwO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAodGhpcy5ub2RlLnkgPD0gdGVtcFkpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy5tb3ZlVXAgJiYgdGhpcy5tb3ZlWSA9PT0gMCAmJiB0aGlzLnR5cGUgIT09IDcgJiYgdGhpcy50eXBlICE9PSAxMCkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLm5vZGUueSA9IHRlbXBZO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZih0aGlzLm1vdmVZICE9PSAwKXtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5tb3ZlWSA9IDA7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMubm9kZS55ID4gdGVtcFkpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy5tb3ZlRG93biAmJiB0aGlzLm1vdmVZID09PSAwICYmIHRoaXMudHlwZSAhPT0gNyAmJiB0aGlzLnR5cGUgIT09IDEwKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMubm9kZS55ID0gdGVtcFk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmKHRoaXMubW92ZVkgIT09IDApe1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLm1vdmVZID0gMDtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKHRoaXMubm9kZS55IDw9IHRlbXBZKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMubW92ZVVwICYmIHRoaXMubW92ZVkgPT09IDAgJiYgdGhpcy50eXBlICE9PSA3ICYmIHRoaXMudHlwZSAhPT0gMTApIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5ub2RlLnkgPSB0ZW1wWTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYodGhpcy5tb3ZlWSAhPT0gMCl7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMubW92ZVkgPSAwO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy5ub2RlLnggPiB0ZW1wWCkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLm1vdmVMZWZ0ICYmIHRoaXMubW92ZVggPT09IDAgJiYgdGhpcy50eXBlICE9PSA4ICYmIHRoaXMudHlwZSAhPT0gMTApIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5ub2RlLnggPSB0ZW1wWDtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYodGhpcy5tb3ZlWCAhPT0gMCl7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMubW92ZVggPSAwO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAodGhpcy5ub2RlLnggPD0gdGVtcFgpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy5tb3ZlUmlnaHQgJiYgdGhpcy5tb3ZlWCA9PT0gMCAmJiB0aGlzLnR5cGUgIT09IDggJiYgdGhpcy50eXBlICE9PSAxMCkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLm5vZGUueCA9IHRlbXBYO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZih0aGlzLm1vdmVYICE9PSAwKXtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5tb3ZlWCA9IDA7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgTFFDb2xsaWRlU3lzdGVtLnVwZGF0ZV9sb2dpYyhkdCk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAvLyDnp7vliqjlrozmiJDlkI7ph43nva7op6bmkbjlop7ph49cclxuICAgICAgICAgICAgICAgIHRoaXMudG91Y2hEZWx0YSA9IGNjLnYyKDAsIDApOyBcclxuICAgICAgICAgICAgIFxyXG4gICAgICAgIH1cclxuICAgICAgICBpZih0aGlzLnR5cGUgPT0gQmxvY2tUeXBlLuWPoOWKoOWdl+S4iiAmJiB0aGlzLm1vdmVTdGFjayA9PSB0cnVlKXtcclxuICAgICAgICAgICAgaWYodGhpcy5zdGFja2luZy54ICE9IDAgfHwgdGhpcy5zdGFja2luZy55IT0gMCl7XHJcbiAgICAgICAgICAgICAgICB0aGlzLm5vZGUueCA9IHRoaXMuYmxvY2tfSW5mby5ub2RlLnggKyB0aGlzLnN0YWNraW5nLng7XHJcbiAgICAgICAgICAgICAgICB0aGlzLm5vZGUueSA9IHRoaXMuYmxvY2tfSW5mby5ub2RlLnkgKyB0aGlzLnN0YWNraW5nLnk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgaWYodGhpcy5ibG9ja19JbmZvKXtcclxuICAgICAgICAgICAgaWYodGhpcy5ibG9ja19JbmZvLm5vZGUgIT0gbnVsbCl7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYodGhpcy50eXBlID09IEJsb2NrVHlwZS7nspjlkIjlnZcpe1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBpZih0aGlzLmFkaGVzaXZlLnggIT0wICYmIHRoaXMuYWRoZXNpdmUueSE9MCAmJiB0aGlzLmJsb2NrX0luZm8ubm9kZSE9IG51bGwpe1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5ibG9ja19JbmZvLm5vZGUueCA9IHRoaXMubm9kZS54IC0gdGhpcy5hZGhlc2l2ZS54O1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5ibG9ja19JbmZvLm5vZGUueSA9IHRoaXMubm9kZS55IC0gdGhpcy5hZGhlc2l2ZS55O1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmKHRoaXMuaXNUb3VjaCA9PSAgdHJ1ZSAmJiB0aGlzLmJsb2NrX0luZm8ubm9kZS5nZXRDb21wb25lbnQoXCJCbG9ja1wiKS5pc1RvdWNoID09IGZhbHNlKXtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIExRQ29sbGlkZVN5c3RlbS51cGRhdGVfbG9naWMoZHQpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5ibG9ja19JbmZvLm5vZGUueCA9IHRoaXMubm9kZS54IC0gdGhpcy5hZGhlc2l2ZS54O1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5ibG9ja19JbmZvLm5vZGUueSA9IHRoaXMubm9kZS55IC0gdGhpcy5hZGhlc2l2ZS55O1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gXHJcbiAgICB9XHJcbn1cclxuXHJcblxyXG4iXX0= -//------QC-SOURCE-SPLIT------ - - (function() { - var nodeEnv = typeof require !== 'undefined' && typeof process !== 'undefined'; - var __module = nodeEnv ? module : {exports:{}}; -<<<<<<< HEAD - var __filename = 'preview-scripts/assets/Script/lq_base/data/lq_const.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, '98309gPXUxEF6zBe9e75Knb', 'lq_const'); -// Script/lq_base/data/lq_const.ts - -"use strict"; -Object.defineProperty(exports, "__esModule", { value: true }); -exports.LQConst = exports.LQOperateType = exports.LQLevelStatus = exports.LQAdErrStr = exports.LQCallAd = exports.LQCallBase = exports.LQAnalysisTag = exports.LQByteDanceType = exports.LQPlatformType = exports.LQHttpDataType = exports.LQHttpRequestType = exports.LQEasing = exports.LQCollideStatus = exports.LQFollowTargetMode = exports.LQCollideShape = exports.LQBulletEmitterStatus = exports.LQRecordStatus = void 0; -var Vec2 = cc.Vec2; -var LQRecordStatus; -(function (LQRecordStatus) { - LQRecordStatus[LQRecordStatus["Idle"] = 0] = "Idle"; - LQRecordStatus[LQRecordStatus["Start"] = 1] = "Start"; - LQRecordStatus[LQRecordStatus["Pause"] = 2] = "Pause"; -})(LQRecordStatus = exports.LQRecordStatus || (exports.LQRecordStatus = {})); -var LQBulletEmitterStatus; -(function (LQBulletEmitterStatus) { - LQBulletEmitterStatus[LQBulletEmitterStatus["Idle"] = 0] = "Idle"; - LQBulletEmitterStatus[LQBulletEmitterStatus["Start"] = 1] = "Start"; - LQBulletEmitterStatus[LQBulletEmitterStatus["End"] = 2] = "End"; -})(LQBulletEmitterStatus = exports.LQBulletEmitterStatus || (exports.LQBulletEmitterStatus = {})); -var LQCollideShape; -(function (LQCollideShape) { - LQCollideShape[LQCollideShape["Rect"] = 1] = "Rect"; - LQCollideShape[LQCollideShape["Circle"] = 2] = "Circle"; - LQCollideShape[LQCollideShape["Polygon"] = 3] = "Polygon"; -})(LQCollideShape = exports.LQCollideShape || (exports.LQCollideShape = {})); -var LQFollowTargetMode; -(function (LQFollowTargetMode) { - LQFollowTargetMode[LQFollowTargetMode["Always"] = 0] = "Always"; - LQFollowTargetMode[LQFollowTargetMode["Once"] = 1] = "Once"; - LQFollowTargetMode[LQFollowTargetMode["Pass"] = 2] = "Pass"; -})(LQFollowTargetMode = exports.LQFollowTargetMode || (exports.LQFollowTargetMode = {})); -var LQCollideStatus; -(function (LQCollideStatus) { - LQCollideStatus[LQCollideStatus["Idle"] = 0] = "Idle"; - LQCollideStatus[LQCollideStatus["Live"] = 1] = "Live"; -})(LQCollideStatus = exports.LQCollideStatus || (exports.LQCollideStatus = {})); -var LQEasing; -(function (LQEasing) { - LQEasing["BackIn"] = "backIn"; - LQEasing["BackOut"] = "backOut"; - LQEasing["quadIn"] = "quadIn"; - LQEasing["quadOut"] = "quadOut"; - LQEasing["quadInOut"] = "quadInOut"; - LQEasing["cubicIn"] = "cubicIn"; - LQEasing["expoOut"] = "expoOut"; -})(LQEasing = exports.LQEasing || (exports.LQEasing = {})); -var LQHttpRequestType; -(function (LQHttpRequestType) { - LQHttpRequestType["Get"] = "get"; - LQHttpRequestType["Post"] = "post"; -})(LQHttpRequestType = exports.LQHttpRequestType || (exports.LQHttpRequestType = {})); -var LQHttpDataType; -(function (LQHttpDataType) { - LQHttpDataType[LQHttpDataType["Text"] = 0] = "Text"; - LQHttpDataType[LQHttpDataType["Binary"] = 1] = "Binary"; -})(LQHttpDataType = exports.LQHttpDataType || (exports.LQHttpDataType = {})); -var LQPlatformType; -(function (LQPlatformType) { - LQPlatformType["unknown"] = "\u672A\u77E5\u5E73\u53F0"; - LQPlatformType["all"] = "\u5168\u5E73\u53F0"; - LQPlatformType["wx"] = "\u5FAE\u4FE1"; - LQPlatformType["tt"] = "\u5B57\u8282\u8DF3\u52A8"; - LQPlatformType["oppo"] = "oppo"; - LQPlatformType["vivo"] = "vivo"; - LQPlatformType["qq"] = "qq"; - LQPlatformType["baidu"] = "\u767E\u5EA6"; - LQPlatformType["kwaigame"] = "\u5FEB\u624B"; - LQPlatformType["android"] = "\u5B89\u5353"; - LQPlatformType["ios"] = "\u82F9\u679C"; - LQPlatformType["browser"] = "\u6D4F\u89C8\u5668"; -})(LQPlatformType = exports.LQPlatformType || (exports.LQPlatformType = {})); -var LQByteDanceType; -(function (LQByteDanceType) { - LQByteDanceType["tt"] = "\u5934\u6761"; - LQByteDanceType["tt_lite"] = "\u5934\u6761\u6781\u901F\u7248"; - LQByteDanceType["douyin"] = "\u6296\u97F3"; - LQByteDanceType["douyin_lite"] = "\u6296\u97F3\u6781\u901F\u7248"; - LQByteDanceType["ppx"] = "\u76AE\u76AE\u867E"; - LQByteDanceType["devtools"] = "\u5B57\u8282\u5F00\u53D1\u5DE5\u5177"; -})(LQByteDanceType = exports.LQByteDanceType || (exports.LQByteDanceType = {})); -var LQAnalysisTag; -(function (LQAnalysisTag) { - LQAnalysisTag["VideoComplete"] = "video_complete"; - LQAnalysisTag["VideoBegin"] = "video_begin"; - LQAnalysisTag["VideoInterrupt"] = "video_interrupt"; - LQAnalysisTag["InterstitialShow"] = "interstitial_show"; - LQAnalysisTag["BannerShow"] = "banner_show"; - LQAnalysisTag["ExportShow"] = "export_show"; - LQAnalysisTag["NativeShow"] = "native_show"; - LQAnalysisTag["NativeClick"] = "native_show"; -})(LQAnalysisTag = exports.LQAnalysisTag || (exports.LQAnalysisTag = {})); -var LQCallBase; -(function (LQCallBase) { - LQCallBase[LQCallBase["InitSdk"] = 0] = "InitSdk"; - LQCallBase[LQCallBase["KeepScreenOn"] = 1] = "KeepScreenOn"; - LQCallBase[LQCallBase["Vibrate"] = 2] = "Vibrate"; - LQCallBase[LQCallBase["GetVersionCode"] = 3] = "GetVersionCode"; - LQCallBase[LQCallBase["GetVersionName"] = 4] = "GetVersionName"; - LQCallBase[LQCallBase["OpenUrl"] = 5] = "OpenUrl"; - LQCallBase[LQCallBase["DeleteDir"] = 6] = "DeleteDir"; - LQCallBase[LQCallBase["DeleteFile"] = 7] = "DeleteFile"; -})(LQCallBase = exports.LQCallBase || (exports.LQCallBase = {})); -var LQCallAd; -(function (LQCallAd) { - LQCallAd[LQCallAd["ShowBanner"] = 0] = "ShowBanner"; - LQCallAd[LQCallAd["HideBanner"] = 1] = "HideBanner"; - LQCallAd[LQCallAd["ShowVideo"] = 2] = "ShowVideo"; - LQCallAd[LQCallAd["ShowInterstitial"] = 3] = "ShowInterstitial"; - LQCallAd[LQCallAd["ShowNative"] = 4] = "ShowNative"; - LQCallAd[LQCallAd["CacheAd"] = 5] = "CacheAd"; -})(LQCallAd = exports.LQCallAd || (exports.LQCallAd = {})); -var LQAdErrStr; -(function (LQAdErrStr) { - LQAdErrStr["Unsupported"] = "\u4E0D\u652F\u6301"; - LQAdErrStr["NoParameters"] = "\u6CA1\u6709\u914D\u7F6E\u53C2\u6570"; - LQAdErrStr["NoAD"] = "\u6682\u65E0\u5E7F\u544A"; - LQAdErrStr["VersionOld"] = "\u7248\u672C\u8FC7\u4F4E"; - LQAdErrStr["VideoInterrupt"] = "\u4E2D\u65AD\u64AD\u653E"; - LQAdErrStr["InstanceErr"] = "\u5B9E\u4F8B\u4E3A\u7A7A"; - LQAdErrStr["AlreadyExist"] = "\u5DF2\u7ECF\u5B58\u5728"; - LQAdErrStr["IntervalTooShort"] = "\u95F4\u9694\u592A\u77ED"; -})(LQAdErrStr = exports.LQAdErrStr || (exports.LQAdErrStr = {})); -var LQLevelStatus; -(function (LQLevelStatus) { - LQLevelStatus[LQLevelStatus["Begin"] = 0] = "Begin"; - LQLevelStatus[LQLevelStatus["Failed"] = 1] = "Failed"; - LQLevelStatus[LQLevelStatus["Complete"] = 2] = "Complete"; -})(LQLevelStatus = exports.LQLevelStatus || (exports.LQLevelStatus = {})); -var LQOperateType; -(function (LQOperateType) { - LQOperateType[LQOperateType["ClickNode"] = 0] = "ClickNode"; - LQOperateType[LQOperateType["ClickScreen"] = 1] = "ClickScreen"; - LQOperateType[LQOperateType["Move"] = 2] = "Move"; - LQOperateType[LQOperateType["Null"] = 3] = "Null"; -})(LQOperateType = exports.LQOperateType || (exports.LQOperateType = {})); -var LQConst = /** @class */ (function () { - function LQConst() { - } - LQConst.VEC_ZERO = Vec2.ZERO; - return LQConst; -}()); -exports.LQConst = LQConst; - -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,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImFzc2V0c1xcU2NyaXB0XFxscV9iYXNlXFxkYXRhXFxscV9jb25zdC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSxJQUFPLElBQUksR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDO0FBRXRCLElBQVksY0FFWDtBQUZELFdBQVksY0FBYztJQUN0QixtREFBSSxDQUFBO0lBQUUscURBQUssQ0FBQTtJQUFFLHFEQUFLLENBQUE7QUFDdEIsQ0FBQyxFQUZXLGNBQWMsR0FBZCxzQkFBYyxLQUFkLHNCQUFjLFFBRXpCO0FBRUQsSUFBWSxxQkFFWDtBQUZELFdBQVkscUJBQXFCO0lBQzdCLGlFQUFJLENBQUE7SUFBRSxtRUFBSyxDQUFBO0lBQUUsK0RBQUcsQ0FBQTtBQUNwQixDQUFDLEVBRlcscUJBQXFCLEdBQXJCLDZCQUFxQixLQUFyQiw2QkFBcUIsUUFFaEM7QUFFRCxJQUFZLGNBRVg7QUFGRCxXQUFZLGNBQWM7SUFDdEIsbURBQVEsQ0FBQTtJQUFFLHVEQUFNLENBQUE7SUFBRSx5REFBTyxDQUFBO0FBQzdCLENBQUMsRUFGVyxjQUFjLEdBQWQsc0JBQWMsS0FBZCxzQkFBYyxRQUV6QjtBQUVELElBQVksa0JBRVg7QUFGRCxXQUFZLGtCQUFrQjtJQUMxQiwrREFBTSxDQUFBO0lBQUUsMkRBQUksQ0FBQTtJQUFFLDJEQUFJLENBQUE7QUFDdEIsQ0FBQyxFQUZXLGtCQUFrQixHQUFsQiwwQkFBa0IsS0FBbEIsMEJBQWtCLFFBRTdCO0FBRUQsSUFBWSxlQUVYO0FBRkQsV0FBWSxlQUFlO0lBQ3ZCLHFEQUFJLENBQUE7SUFBRSxxREFBSSxDQUFBO0FBQ2QsQ0FBQyxFQUZXLGVBQWUsR0FBZix1QkFBZSxLQUFmLHVCQUFlLFFBRTFCO0FBRUQsSUFBWSxRQUdYO0FBSEQsV0FBWSxRQUFRO0lBQ2hCLDZCQUFpQixDQUFBO0lBQUUsK0JBQW1CLENBQUE7SUFBRSw2QkFBaUIsQ0FBQTtJQUN6RCwrQkFBbUIsQ0FBQTtJQUFFLG1D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O0lBQUUsaURBQUksQ0FBQTtBQUN0QyxDQUFDLEVBRlcsYUFBYSxHQUFiLHFCQUFhLEtBQWIscUJBQWEsUUFFeEI7QUFFRDtJQUFBO0lBRUEsQ0FBQztJQURpQixnQkFBUSxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUM7SUFDdkMsY0FBQztDQUZELEFBRUMsSUFBQTtBQUZZLDBCQUFPIiwiZmlsZSI6IiIsInNvdXJjZVJvb3QiOiIvIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IFZlYzIgPSBjYy5WZWMyO1xyXG5cclxuZXhwb3J0IGVudW0gTFFSZWNvcmRTdGF0dXMge1xyXG4gICAgSWRsZSwgU3RhcnQsIFBhdXNlXHJcbn1cclxuXHJcbmV4cG9ydCBlbnVtIExRQnVsbGV0RW1pdHRlclN0YXR1cyB7XHJcbiAgICBJZGxlLCBTdGFydCwgRW5kXHJcbn1cclxuXHJcbmV4cG9ydCBlbnVtIExRQ29sbGlkZVNoYXBlIHtcclxuICAgIFJlY3QgPSAxLCBDaXJjbGUsIFBvbHlnb25cclxufVxyXG5cclxuZXhwb3J0IGVudW0gTFFGb2xsb3dUYXJnZXRNb2RlIHtcclxuICAgIEFsd2F5cywgT25jZSwgUGFzc1xyXG59XHJcblxyXG5leHBvcnQgZW51bSBMUUNvbGxpZGVTdGF0dXMge1xyXG4gICAgSWRsZSwgTGl2ZVxyXG59XHJcblxyXG5leHBvcnQgZW51bSBMUUVhc2luZyB7XHJcbiAgICBCYWNrSW4gPSAnYmFja0luJywgQmFja091dCA9ICdiYWNrT3V0JywgcXVhZEluID0gJ3F1YWRJbicsXHJcbiAgICBxdWFkT3V0ID0gJ3F1YWRPdXQnLCBxdWFkSW5PdXQgPSAncXVhZEluT3V0JywgY3ViaWNJbiA9ICdjdWJpY0luJywgZXhwb091dCA9ICdleHBvT3V0J1xyXG59XHJcblxyXG5leHBvcnQgZW51bSBMUUh0dHBSZXF1ZXN0VHlwZSB7XHJcbiAgICBHZXQgPSAnZ2V0JywgUG9zdCA9ICdwb3N0J1xyXG59XHJcblxyXG5leHBvcnQgZW51bSBMUUh0dHBEYXRhVHlwZSB7XHJcbiAgICBUZXh0LCBCaW5hcnlcclxufVxyXG5cclxuZXhwb3J0IGVudW0gTFFQbGF0Zm9ybVR5cGUge1xyXG4gICAgdW5rbm93biA9ICfmnKrnn6XlubPlj7AnLCBhbGwgPSAn5YWo5bmz5Y+wJywgd3ggPSAn5b6u5L+hJywgdHQgPSAn5a2X6IqC6Lez5YqoJywgb3BwbyA9ICdvcHBvJywgdml2byA9ICd2aXZvJywgcXEgPSAncXEnLCBiYWlkdSA9ICfnmb7luqYnLCBrd2FpZ2FtZSA9ICflv6vmiYsnLCBhbmRyb2lkID0gJ+WuieWNkycsIGlvcyA9ICfoi7nmnpwnLCBicm93c2VyID0gJ+a1j+iniOWZqCdcclxufVxyXG5cclxuZXhwb3J0IGVudW0gTFFCeXRlRGFuY2VUeXBlIHtcclxuICAgIHR0ID0gJ+WktOadoScsIHR0X2xpdGUgPSAn5aS05p2h5p6B6YCf54mIJywgZG91eWluID0gJ+aKlumfsycsIGRvdXlpbl9saXRlID0gJ+aKlumfs+aegemAn+eJiCcsIHBweCA9ICfnmq7nmq7omb4nLCBkZXZ0b29scyA9ICflrZfoioLlvIDlj5Hlt6XlhbcnXHJcbn1cclxuXHJcbmV4cG9ydCBlbnVtIExRQW5hbHlzaXNUYWcge1xyXG4gICAgVmlkZW9Db21wbGV0ZSA9ICd2aWRlb19jb21wbGV0ZScsIFZpZGVvQmVnaW4gPSAndmlkZW9fYmVnaW4nLCBWaWRlb0ludGVycnVwdCA9ICd2aWRlb19pbnRlcnJ1cHQnLCBJbnRlcnN0aXRpYWxTaG93ID0gJ2ludGVyc3RpdGlhbF9zaG93JywgQmFubmVyU2hvdyA9ICdiYW5uZXJfc2hvdycsIEV4cG9ydFNob3cgPSAnZXhwb3J0X3Nob3cnLCBOYXRpdmVTaG93ID0gJ25hdGl2ZV9zaG93JywgTmF0aXZlQ2xpY2sgPSAnbmF0aXZlX3Nob3cnXHJcbn1cclxuXHJcbmV4cG9ydCBlbnVtIExRQ2FsbEJhc2Uge1xyXG4gICAgSW5pdFNkaywgS2VlcFNjcmVlbk9uLCBWaWJyYXRlLCBHZXRWZXJzaW9uQ29kZSwgR2V0VmVyc2lvbk5hbWUsIE9wZW5VcmwsIERlbGV0ZURpciwgRGVsZXRlRmlsZVxyXG59XHJcblxyXG5leHBvcnQgZW51bSBMUUNhbGxBZCB7XHJcbiAgICBTaG93QmFubmVyLCBIaWRlQmFubmVyLCBTaG93VmlkZW8sIFNob3dJbnRlcnN0aXRpYWwsIFNob3dOYXRpdmUsIENhY2hlQWRcclxufVxyXG5cclxuZXhwb3J0IGVudW0gTFFBZEVyclN0ciB7XHJcbiAgICBVbnN1cHBvcnRlZCA9ICfkuI3mlK/mjIEnLCBOb1BhcmFtZXRlcnMgPSAn5rKh5pyJ6YWN572u5Y+C5pWwJywgTm9BRCA9ICfmmoLml6Dlub/lkYonLCBWZXJzaW9uT2xkID0gJ+eJiOacrOi/h+S9jicsIFZpZGVvSW50ZXJydXB0ID0gJ+S4reaWreaSreaUvicsIEluc3RhbmNlRXJyID0gJ+WunuS+i+S4uuepuicsIEFscmVhZHlFeGlzdCA9ICflt7Lnu4/lrZjlnKgnLCBJbnRlcnZhbFRvb1Nob3J0ID0gJ+mXtOmalOWkquefrSdcclxufVxyXG5cclxuZXhwb3J0IGVudW0gTFFMZXZlbFN0YXR1cyB7XHJcbiAgICBCZWdpbiwgRmFpbGVkLCBDb21wbGV0ZVxyXG59XHJcblxyXG5leHBvcnQgZW51bSBMUU9wZXJhdGVUeXBlIHtcclxuICAgIENsaWNrTm9kZSwgQ2xpY2tTY3JlZW4sIE1vdmUsIE51bGxcclxufVxyXG5cclxuZXhwb3J0IGNsYXNzIExRQ29uc3Qge1xyXG4gICAgcHVibGljIHN0YXRpYyBWRUNfWkVSTyA9IFZlYzIuWkVSTztcclxufVxyXG5cclxuIl19 -//------QC-SOURCE-SPLIT------ - - (function() { - var nodeEnv = typeof require !== 'undefined' && typeof process !== 'undefined'; - var __module = nodeEnv ? module : {exports:{}}; - var __filename = 'preview-scripts/assets/Script/lq_base/util/lq_math_util.js'; -======= - var __filename = 'preview-scripts/assets/Script/prop/Adhesive.js'; ->>>>>>> 0a31a7a5abc2c505bf743aa596e1c765a0405152 - 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, '5fc5bz1aV5PKIBJQh99jpm2', 'Adhesive'); -// Script/prop/Adhesive.ts - -"use strict"; -// Learn TypeScript: -// - https://docs.cocos.com/creator/manual/en/scripting/typescript.html -// Learn Attribute: -// - https://docs.cocos.com/creator/manual/en/scripting/reference/attributes.html -// Learn life-cycle callbacks: -// - https://docs.cocos.com/creator/manual/en/scripting/life-cycle-callbacks.html -var __extends = (this && this.__extends) || (function () { - var extendStatics = function (d, b) { - extendStatics = Object.setPrototypeOf || - ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) || - function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; }; - return extendStatics(d, b); - }; - return function (d, b) { - extendStatics(d, b); - function __() { this.constructor = d; } - d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); - }; -})(); -var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) { - var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; - if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc); - else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; - return c > 3 && r && Object.defineProperty(target, key, r), r; -}; -Object.defineProperty(exports, "__esModule", { value: true }); -var _a = cc._decorator, ccclass = _a.ccclass, property = _a.property; -var Adhesive = /** @class */ (function (_super) { - __extends(Adhesive, _super); - function Adhesive() { - var _this = _super !== null && _super.apply(this, arguments) || this; - _this.time = 60; - _this.pos = { x: 0, y: 0 }; - return _this; - } - Adhesive.prototype.onLoad = function () { - this.pos.x = this.pos.y = 0; - this.target = null; - }; - Adhesive.prototype.start = function () { - }; - Adhesive.prototype.init = function (node) { - this.pos.x = node.x - this.node.x; - this.pos.y = node.y - this.node.y; - this.target = node; - }; - Adhesive.prototype.remove = function () { - var _this = this; - this.target = null; - for (var j = 0; j < this.node.children.length; j++) { - if (this.node.children[j].active == true) { - this.node.children[j].getComponent(sp.Skeleton).setAnimation(0, "animation", false); - } - } - setTimeout(function () { - _this.node.active = false; - }, 2000); - }; - Adhesive.prototype.update = function (dt) { - if (this.target != null) { - this.node.x = this.target.x - this.pos.x; - this.node.y = this.target.y - this.pos.y; - } - }; - Adhesive = __decorate([ - ccclass - ], Adhesive); - return Adhesive; -}(cc.Component)); -exports.default = Adhesive; - -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,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImFzc2V0c1xcU2NyaXB0XFxwcm9wXFxBZGhlc2l2ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsb0JBQW9CO0FBQ3BCLHdFQUF3RTtBQUN4RSxtQkFBbUI7QUFDbkIsa0ZBQWtGO0FBQ2xGLDhCQUE4QjtBQUM5QixrRkFBa0Y7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUk1RSxJQUFBLEtBQXNCLEVBQUUsQ0FBQyxVQUFVLEVBQWxDLE9BQU8sYUFBQSxFQUFFLFFBQVEsY0FBaUIsQ0FBQztBQUsxQztJQUFzQyw0QkFBWTtJQUFsRDtRQUFBLHFFQXVDQztRQXJDRyxVQUFJLEdBQVcsRUFBRSxDQUFDO1FBQ2xCLFNBQUcsR0FBUSxFQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBQyxDQUFDOztJQW9DNUIsQ0FBQztJQWpDRyx5QkFBTSxHQUFOO1FBQ0ksSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQzVCLElBQUksQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFDO0lBQ3ZCLENBQUM7SUFFRCx3QkFBSyxHQUFMO0lBQ0EsQ0FBQztJQUVELHVCQUFJLEdBQUosVUFBSyxJQUFJO1FBQ0wsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQztRQUNsQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO1FBQ2xDLElBQUksQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFDO0lBQ3ZCLENBQUM7SUFFRCx5QkFBTSxHQUFOO1FBQUEsaUJBVUM7UUFURyxJQUFJLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQztRQUNuQixLQUFJLElBQUksQ0FBQyxHQUFFLENBQUMsRUFBRSxDQUFDLEdBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsTUFBTSxFQUFFLENBQUMsRUFBRSxFQUFDO1lBQzNDLElBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxJQUFJLElBQUksRUFBQztnQkFDcEMsSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsWUFBWSxDQUFDLEVBQUUsQ0FBQyxRQUFRLENBQUMsQ0FBQyxZQUFZLENBQUMsQ0FBQyxFQUFDLFdBQVcsRUFBQyxLQUFLLENBQUMsQ0FBQzthQUNyRjtTQUNKO1FBQ0QsVUFBVSxDQUFDO1lBQ1AsS0FBSSxDQUFDLElBQUksQ0FBQyxNQUFNLEdBQUcsS0FBSyxDQUFDO1FBQzdCLENBQUMsRUFBRSxJQUFJLENBQUMsQ0FBQztJQUNiLENBQUM7SUFHRCx5QkFBTSxHQUFOLFVBQVEsRUFBRTtRQUNOLElBQUcsSUFBSSxDQUFDLE1BQU0sSUFBSSxJQUFJLEVBQUM7WUFDbkIsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7WUFDekMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7U0FDNUM7SUFDTCxDQUFDO0lBdENnQixRQUFRO1FBRDVCLE9BQU87T0FDYSxRQUFRLENBdUM1QjtJQUFELGVBQUM7Q0F2Q0QsQUF1Q0MsQ0F2Q3FDLEVBQUUsQ0FBQyxTQUFTLEdBdUNqRDtrQkF2Q29CLFFBQVEiLCJmaWxlIjoiIiwic291cmNlUm9vdCI6Ii8iLCJzb3VyY2VzQ29udGVudCI6WyIvLyBMZWFybiBUeXBlU2NyaXB0OlxyXG4vLyAgLSBodHRwczovL2RvY3MuY29jb3MuY29tL2NyZWF0b3IvbWFudWFsL2VuL3NjcmlwdGluZy90eXBlc2NyaXB0Lmh0bWxcclxuLy8gTGVhcm4gQXR0cmlidXRlOlxyXG4vLyAgLSBodHRwczovL2RvY3MuY29jb3MuY29tL2NyZWF0b3IvbWFudWFsL2VuL3NjcmlwdGluZy9yZWZlcmVuY2UvYXR0cmlidXRlcy5odG1sXHJcbi8vIExlYXJuIGxpZmUtY3ljbGUgY2FsbGJhY2tzOlxyXG4vLyAgLSBodHRwczovL2RvY3MuY29jb3MuY29tL2NyZWF0b3IvbWFudWFsL2VuL3NjcmlwdGluZy9saWZlLWN5Y2xlLWNhbGxiYWNrcy5odG1sXHJcblxyXG5pbXBvcnQgTWFwQ29ucm9sZXIgZnJvbSBcIi4uL01hcFwiO1xyXG5cclxuY29uc3Qge2NjY2xhc3MsIHByb3BlcnR5fSA9IGNjLl9kZWNvcmF0b3I7XHJcblxyXG5cclxuXHJcbkBjY2NsYXNzXHJcbmV4cG9ydCBkZWZhdWx0IGNsYXNzIEFkaGVzaXZlIGV4dGVuZHMgY2MuQ29tcG9uZW50IHtcclxuICAgIHN0YXRpYyBfaW5zdGFuY2U6IGFueTtcclxuICAgIHRpbWU6IG51bWJlciA9IDYwO1xyXG4gICAgcG9zOiBhbnkgPSB7eDogMCwgeTogMH07XHJcbiAgICB0YXJnZXQ6IGFueTtcclxuXHJcbiAgICBvbkxvYWQgKCkgeyBcclxuICAgICAgICB0aGlzLnBvcy54ID0gdGhpcy5wb3MueSA9IDA7XHJcbiAgICAgICAgdGhpcy50YXJnZXQgPSBudWxsO1xyXG4gICAgfSBcclxuXHJcbiAgICBzdGFydCAoKSB7XHJcbiAgICB9XHJcblxyXG4gICAgaW5pdChub2RlKXtcclxuICAgICAgICB0aGlzLnBvcy54ID0gbm9kZS54IC0gdGhpcy5ub2RlLng7XHJcbiAgICAgICAgdGhpcy5wb3MueSA9IG5vZGUueSAtIHRoaXMubm9kZS55O1xyXG4gICAgICAgIHRoaXMudGFyZ2V0ID0gbm9kZTtcclxuICAgIH1cclxuXHJcbiAgICByZW1vdmUoKXtcclxuICAgICAgICB0aGlzLnRhcmdldCA9IG51bGw7XHJcbiAgICAgICAgZm9yKGxldCBqID0wOyBqPHRoaXMubm9kZS5jaGlsZHJlbi5sZW5ndGg7IGorKyl7XHJcbiAgICAgICAgICAgIGlmKHRoaXMubm9kZS5jaGlsZHJlbltqXS5hY3RpdmUgPT0gdHJ1ZSl7XHJcbiAgICAgICAgICAgICAgICB0aGlzLm5vZGUuY2hpbGRyZW5bal0uZ2V0Q29tcG9uZW50KHNwLlNrZWxldG9uKS5zZXRBbmltYXRpb24oMCxcImFuaW1hdGlvblwiLGZhbHNlKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgICAgICAgdGhpcy5ub2RlLmFjdGl2ZSA9IGZhbHNlO1xyXG4gICAgICAgIH0sIDIwMDApO1xyXG4gICAgfVxyXG5cclxuXHJcbiAgICB1cGRhdGUgKGR0KSB7XHJcbiAgICAgICAgaWYodGhpcy50YXJnZXQgIT0gbnVsbCl7XHJcbiAgICAgICAgICAgIHRoaXMubm9kZS54ID0gdGhpcy50YXJnZXQueCAtIHRoaXMucG9zLng7XHJcbiAgICAgICAgICAgIHRoaXMubm9kZS55ID0gdGhpcy50YXJnZXQueSAtIHRoaXMucG9zLnk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG59XHJcbiJdfQ== -//------QC-SOURCE-SPLIT------ - - (function() { - var nodeEnv = typeof require !== 'undefined' && typeof process !== 'undefined'; - var __module = nodeEnv ? module : {exports:{}}; - var __filename = 'preview-scripts/assets/Script/Sdk/DouyinEntranceView.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, '8a024+q5K9MrpxcaTvucSDB', 'DouyinEntranceView'); -// Script/Sdk/DouyinEntranceView.ts - -"use strict"; -var __extends = (this && this.__extends) || (function () { - var extendStatics = function (d, b) { - extendStatics = Object.setPrototypeOf || - ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) || - function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; }; - return extendStatics(d, b); - }; - return function (d, b) { - extendStatics(d, b); - function __() { this.constructor = d; } - d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); - }; -})(); -var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) { - var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; - if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc); - else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; - return c > 3 && r && Object.defineProperty(target, key, r), r; -}; -Object.defineProperty(exports, "__esModule", { value: true }); -exports.DouyinEntranceView = void 0; -var MiniGameSdk_1 = require("./MiniGameSdk"); -var _a = cc._decorator, ccclass = _a.ccclass, property = _a.property; -var DouyinEntranceView = /** @class */ (function (_super) { - __extends(DouyinEntranceView, _super); - function DouyinEntranceView() { - return _super !== null && _super.apply(this, arguments) || this; - } - DouyinEntranceView.prototype.start = function () { - }; - DouyinEntranceView.prototype.update = function (deltaTime) { - }; - DouyinEntranceView.prototype.onCloseClick = function () { - this.node.active = false; - }; - DouyinEntranceView.prototype.onNavigateToDouyinClick = function () { - MiniGameSdk_1.MiniGameSdk.BytedanceSidebar.navigateToSidebar(function (success) { - if (success) { - console.log('跳转成功'); - } - else { - console.log('跳转失败'); - } - }); - }; - DouyinEntranceView = __decorate([ - ccclass - ], DouyinEntranceView); - return DouyinEntranceView; -}(cc.Component)); -exports.DouyinEntranceView = DouyinEntranceView; - -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,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImFzc2V0c1xcU2NyaXB0XFxTZGtcXERvdXlpbkVudHJhbmNlVmlldy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsNkNBQTRDO0FBQ3RDLElBQUEsS0FBd0IsRUFBRSxDQUFDLFVBQVUsRUFBbkMsT0FBTyxhQUFBLEVBQUUsUUFBUSxjQUFrQixDQUFDO0FBSTVDO0lBQXdDLHNDQUFZO0lBQXBEOztJQXVCQSxDQUFDO0lBdEJHLGtDQUFLLEdBQUw7SUFFQSxDQUFDO0lBRUQsbUNBQU0sR0FBTixVQUFPLFNBQWlCO0lBRXhCLENBQUM7SUFFRCx5Q0FBWSxHQUFaO1FBQ0ksSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLEdBQUcsS0FBSyxDQUFDO0lBQzdCLENBQUM7SUFFRCxvREFBdUIsR0FBdkI7UUFFSSx5QkFBVyxDQUFDLGdCQUFnQixDQUFDLGlCQUFpQixDQUFDLFVBQUMsT0FBZ0I7WUFDNUQsSUFBSSxPQUFPLEVBQUU7Z0JBQ1QsT0FBTyxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsQ0FBQzthQUN2QjtpQkFBTTtnQkFDSCxPQUFPLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxDQUFDO2FBQ3ZCO1FBQ0wsQ0FBQyxDQUFDLENBQUM7SUFDUCxDQUFDO0lBdEJRLGtCQUFrQjtRQUQ5QixPQUFPO09BQ0ssa0JBQWtCLENBdUI5QjtJQUFELHlCQUFDO0NBdkJELEFBdUJDLENBdkJ1QyxFQUFFLENBQUMsU0FBUyxHQXVCbkQ7QUF2QlksZ0RBQWtCIiwiZmlsZSI6IiIsInNvdXJjZVJvb3QiOiIvIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgTWluaUdhbWVTZGsgfSBmcm9tIFwiLi9NaW5pR2FtZVNka1wiO1xyXG5jb25zdCB7IGNjY2xhc3MsIHByb3BlcnR5IH0gPSBjYy5fZGVjb3JhdG9yO1xyXG5cclxuXHJcbkBjY2NsYXNzXHJcbmV4cG9ydCBjbGFzcyBEb3V5aW5FbnRyYW5jZVZpZXcgZXh0ZW5kcyBjYy5Db21wb25lbnQge1xyXG4gICAgc3RhcnQoKSB7XHJcblxyXG4gICAgfVxyXG5cclxuICAgIHVwZGF0ZShkZWx0YVRpbWU6IG51bWJlcikge1xyXG5cclxuICAgIH1cclxuXHJcbiAgICBvbkNsb3NlQ2xpY2soKSB7XHJcbiAgICAgICAgdGhpcy5ub2RlLmFjdGl2ZSA9IGZhbHNlO1xyXG4gICAgfVxyXG5cclxuICAgIG9uTmF2aWdhdGVUb0RvdXlpbkNsaWNrKCkge1xyXG5cclxuICAgICAgICBNaW5pR2FtZVNkay5CeXRlZGFuY2VTaWRlYmFyLm5hdmlnYXRlVG9TaWRlYmFyKChzdWNjZXNzOiBib29sZWFuKSA9PiB7IC8vIOi3s+i9rOWIsOaKlumfs+S+p+i+ueagj1xyXG4gICAgICAgICAgICBpZiAoc3VjY2Vzcykge1xyXG4gICAgICAgICAgICAgICAgY29uc29sZS5sb2coJ+i3s+i9rOaIkOWKnycpO1xyXG4gICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgY29uc29sZS5sb2coJ+i3s+i9rOWksei0pScpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfSk7XHJcbiAgICB9XHJcbn1cclxuIl19 -//------QC-SOURCE-SPLIT------ - - (function() { - var nodeEnv = typeof require !== 'undefined' && typeof process !== 'undefined'; - var __module = nodeEnv ? module : {exports:{}}; - var __filename = 'preview-scripts/assets/Script/prop/Star.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, 'd773dbWW6tAz6F+Z0L3IXUx', 'Star'); -// Script/prop/Star.ts - -"use strict"; -// Learn TypeScript: -// - https://docs.cocos.com/creator/manual/en/scripting/typescript.html -// Learn Attribute: -// - https://docs.cocos.com/creator/manual/en/scripting/reference/attributes.html -// Learn life-cycle callbacks: -// - https://docs.cocos.com/creator/manual/en/scripting/life-cycle-callbacks.html -var __extends = (this && this.__extends) || (function () { - var extendStatics = function (d, b) { - extendStatics = Object.setPrototypeOf || - ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) || - function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; }; - return extendStatics(d, b); - }; - return function (d, b) { - extendStatics(d, b); - function __() { this.constructor = d; } - d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); - }; -})(); -var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) { - var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; - if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc); - else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; - return c > 3 && r && Object.defineProperty(target, key, r), r; -}; -Object.defineProperty(exports, "__esModule", { value: true }); -var Map_1 = require("../Map"); -var _a = cc._decorator, ccclass = _a.ccclass, property = _a.property; -var Star = /** @class */ (function (_super) { - __extends(Star, _super); - function Star() { - var _this = _super !== null && _super.apply(this, arguments) || this; - _this.time = 60; - // mapInfo: number[][] = []; - _this.star_SpriteFrame = null; - return _this; - // update (dt) {} - } - Star.prototype.onLoad = function () { - }; - Star.prototype.start = function () { - }; - Star.prototype.init = function (time) { - if (time) - this.time = time; - this.node.getChildByName("time").active = true; - this.node.getChildByName("time").getComponent(cc.Label).string = this.time.toString(); - this.schedule(this.updateTime, 1); - }; - Star.prototype.updateTime = function () { - this.time--; - this.node.getChildByName("time").getComponent(cc.Label).string = this.time.toString(); - if (this.time <= 0) { - this.unschedule(this.updateTime); - this.node.destroy(); - Map_1.default._instance.failLevel(); - // this.node.destroy(); - } - }; - __decorate([ - property(cc.SpriteAtlas) - ], Star.prototype, "star_SpriteFrame", void 0); - Star = __decorate([ - ccclass - ], Star); - return Star; -}(cc.Component)); -exports.default = Star; - -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,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImFzc2V0c1xcU2NyaXB0XFxwcm9wXFxTdGFyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSxvQkFBb0I7QUFDcEIsd0VBQXdFO0FBQ3hFLG1CQUFtQjtBQUNuQixrRkFBa0Y7QUFDbEYsOEJBQThCO0FBQzlCLGtGQUFrRjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBRWxGLDhCQUFpQztBQUUzQixJQUFBLEtBQXNCLEVBQUUsQ0FBQyxVQUFVLEVBQWxDLE9BQU8sYUFBQSxFQUFFLFFBQVEsY0FBaUIsQ0FBQztBQUsxQztJQUFrQyx3QkFBWTtJQUE5QztRQUFBLHFFQW1DQztRQWpDRyxVQUFJLEdBQVcsRUFBRSxDQUFDO1FBRWxCLDRCQUE0QjtRQUU1QixzQkFBZ0IsR0FBbUIsSUFBSSxDQUFDOztRQTRCeEMsaUJBQWlCO0lBQ3JCLENBQUM7SUEzQkcscUJBQU0sR0FBTjtJQUVBLENBQUM7SUFFRCxvQkFBSyxHQUFMO0lBQ0EsQ0FBQztJQUVELG1CQUFJLEdBQUosVUFBSyxJQUFJO1FBQ0wsSUFBRyxJQUFJO1lBQUUsSUFBSSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUM7UUFDMUIsSUFBSSxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsTUFBTSxDQUFDLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQztRQUMvQyxJQUFJLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxZQUFZLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDO1FBQ3RGLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFDLENBQUMsQ0FBQztJQUN0QyxDQUFDO0lBR0QseUJBQVUsR0FBVjtRQUNJLElBQUksQ0FBQyxJQUFJLEVBQUcsQ0FBQztRQUNiLElBQUksQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLE1BQU0sQ0FBQyxDQUFDLFlBQVksQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUM7UUFDdEYsSUFBRyxJQUFJLENBQUMsSUFBSSxJQUFJLENBQUMsRUFBQztZQUNkLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDO1lBQ2pDLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUM7WUFDcEIsYUFBVyxDQUFDLFNBQVMsQ0FBQyxTQUFTLEVBQUUsQ0FBQztZQUNsQyx1QkFBdUI7U0FDMUI7SUFDTCxDQUFDO0lBMUJEO1FBREMsUUFBUSxDQUFDLEVBQUUsQ0FBQyxXQUFXLENBQUM7a0RBQ2U7SUFOdkIsSUFBSTtRQUR4QixPQUFPO09BQ2EsSUFBSSxDQW1DeEI7SUFBRCxXQUFDO0NBbkNELEFBbUNDLENBbkNpQyxFQUFFLENBQUMsU0FBUyxHQW1DN0M7a0JBbkNvQixJQUFJIiwiZmlsZSI6IiIsInNvdXJjZVJvb3QiOiIvIiwic291cmNlc0NvbnRlbnQiOlsiLy8gTGVhcm4gVHlwZVNjcmlwdDpcclxuLy8gIC0gaHR0cHM6Ly9kb2NzLmNvY29zLmNvbS9jcmVhdG9yL21hbnVhbC9lbi9zY3JpcHRpbmcvdHlwZXNjcmlwdC5odG1sXHJcbi8vIExlYXJuIEF0dHJpYnV0ZTpcclxuLy8gIC0gaHR0cHM6Ly9kb2NzLmNvY29zLmNvbS9jcmVhdG9yL21hbnVhbC9lbi9zY3JpcHRpbmcvcmVmZXJlbmNlL2F0dHJpYnV0ZXMuaHRtbFxyXG4vLyBMZWFybiBsaWZlLWN5Y2xlIGNhbGxiYWNrczpcclxuLy8gIC0gaHR0cHM6Ly9kb2NzLmNvY29zLmNvbS9jcmVhdG9yL21hbnVhbC9lbi9zY3JpcHRpbmcvbGlmZS1jeWNsZS1jYWxsYmFja3MuaHRtbFxyXG5cclxuaW1wb3J0IE1hcENvbnJvbGVyIGZyb20gXCIuLi9NYXBcIjtcclxuXHJcbmNvbnN0IHtjY2NsYXNzLCBwcm9wZXJ0eX0gPSBjYy5fZGVjb3JhdG9yO1xyXG5cclxuXHJcblxyXG5AY2NjbGFzc1xyXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBTdGFyIGV4dGVuZHMgY2MuQ29tcG9uZW50IHtcclxuICAgIHN0YXRpYyBfaW5zdGFuY2U6IGFueTtcclxuICAgIHRpbWU6IG51bWJlciA9IDYwO1xyXG5cclxuICAgIC8vIG1hcEluZm86IG51bWJlcltdW10gPSBbXTtcclxuICAgIEBwcm9wZXJ0eShjYy5TcHJpdGVBdGxhcylcclxuICAgIHN0YXJfU3ByaXRlRnJhbWU6IGNjLlNwcml0ZUF0bGFzID0gbnVsbDtcclxuXHJcbiAgICBvbkxvYWQgKCkge1xyXG5cclxuICAgIH0gXHJcblxyXG4gICAgc3RhcnQgKCkge1xyXG4gICAgfVxyXG5cclxuICAgIGluaXQodGltZSl7XHJcbiAgICAgICAgaWYodGltZSkgdGhpcy50aW1lID0gdGltZTtcclxuICAgICAgICB0aGlzLm5vZGUuZ2V0Q2hpbGRCeU5hbWUoXCJ0aW1lXCIpLmFjdGl2ZSA9IHRydWU7XHJcbiAgICAgICAgdGhpcy5ub2RlLmdldENoaWxkQnlOYW1lKFwidGltZVwiKS5nZXRDb21wb25lbnQoY2MuTGFiZWwpLnN0cmluZyA9IHRoaXMudGltZS50b1N0cmluZygpO1xyXG4gICAgICAgIHRoaXMuc2NoZWR1bGUodGhpcy51cGRhdGVUaW1lLCAxKTtcclxuICAgIH1cclxuXHJcbiAgICBcclxuICAgIHVwZGF0ZVRpbWUoKXtcclxuICAgICAgICB0aGlzLnRpbWUgLS07XHJcbiAgICAgICAgdGhpcy5ub2RlLmdldENoaWxkQnlOYW1lKFwidGltZVwiKS5nZXRDb21wb25lbnQoY2MuTGFiZWwpLnN0cmluZyA9IHRoaXMudGltZS50b1N0cmluZygpO1xyXG4gICAgICAgIGlmKHRoaXMudGltZSA8PSAwKXtcclxuICAgICAgICAgICAgdGhpcy51bnNjaGVkdWxlKHRoaXMudXBkYXRlVGltZSk7XHJcbiAgICAgICAgICAgIHRoaXMubm9kZS5kZXN0cm95KCk7XHJcbiAgICAgICAgICAgIE1hcENvbnJvbGVyLl9pbnN0YW5jZS5mYWlsTGV2ZWwoKTtcclxuICAgICAgICAgICAgLy8gdGhpcy5ub2RlLmRlc3Ryb3koKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgLy8gdXBkYXRlIChkdCkge31cclxufVxyXG4iXX0= -//------QC-SOURCE-SPLIT------ - - (function() { - var nodeEnv = typeof require !== 'undefined' && typeof process !== 'undefined'; - var __module = nodeEnv ? module : {exports:{}}; - var __filename = 'preview-scripts/assets/Script/lq_collide_system/lq_collide.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, 'd2addiRqXVKQ4YEp6sK5d6R', 'lq_collide'); -// Script/lq_collide_system/lq_collide.ts - -"use strict"; -var __extends = (this && this.__extends) || (function () { - var extendStatics = function (d, b) { - extendStatics = Object.setPrototypeOf || - ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) || - function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; }; - return extendStatics(d, b); - }; - return function (d, b) { - extendStatics(d, b); - function __() { this.constructor = d; } - d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); - }; -})(); -var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) { - var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; - if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc); - else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; - return c > 3 && r && Object.defineProperty(target, key, r), r; -}; -Object.defineProperty(exports, "__esModule", { value: true }); -exports.LQCollide = void 0; -var ccclass = cc._decorator.ccclass; -var property = cc._decorator.property; -var requireComponent = cc._decorator.requireComponent; -var menu = cc._decorator.menu; -var Component = cc.Component; -var Enum = cc.Enum; -var Size = cc.Size; -var Vec2 = cc.Vec2; -var Graphics = cc.Graphics; -var Node = cc.Node; -var macro = cc.macro; -var Color = cc.Color; -var lq_const_1 = require("../lq_base/data/lq_const"); -var lq_collide_config_1 = require("./lq_collide_config"); -var lq_collide_system_1 = require("./lq_collide_system"); -var lq_data_1 = require("../lq_base/data/lq_data"); -var lq_collide_base_1 = require("./lq_collide_base"); -var lq_game_util_1 = require("../lq_base/util/lq_game_util"); -var Map_1 = require("../Map"); -var LQCollide = /** @class */ (function (_super) { - __extends(LQCollide, _super); - function LQCollide() { - var _this = _super !== null && _super.apply(this, arguments) || this; - _this._draw_collide = true; - _this.can_move = true; - _this._collide_shape = lq_const_1.LQCollideShape.Rect; - _this._collide_group_index = -1; - _this.collide_group_id = 0; - _this.collide_scle = 1; - _this._radius = 50; - _this._size = new Size(100, 100); - _this._polygon_points = [new Vec2(-45, -45), new Vec2(45, -45), new Vec2(60, 40), new Vec2(0, 70), new Vec2(-60, 40)]; - //collide碰撞位置偏移 - _this._offset = new Vec2(0, 0); - _this.data_string = ''; - //每个collide的id唯一 - _this.collide_id = 0; - //状态 - _this.collide_status = lq_const_1.LQCollideStatus.Idle; - //是否可碰撞 - _this.is_enable = true; - //是否开启碰撞前后的函数 - _this.is_open_func = true; - //碰撞类别 - _this.collide_category = 0; - //碰撞筛选 - _this.collide_mask = 0; - _this.collide_map = {}; - return _this; - } - LQCollide_1 = LQCollide; - Object.defineProperty(LQCollide.prototype, "draw_collide", { - get: function () { - return this._draw_collide; - }, - set: function (value) { - this._draw_collide = value; - this.draw_shape(); - }, - enumerable: false, - configurable: true - }); - Object.defineProperty(LQCollide.prototype, "collide_shape", { - get: function () { - return this._collide_shape; - }, - set: function (value) { - this._collide_shape = value; - this.draw_shape(); - }, - enumerable: false, - configurable: true - }); - Object.defineProperty(LQCollide.prototype, "collide_group_index", { - get: function () { - if (this._collide_group_index === -1) { - this._collide_group_index = lq_collide_system_1.LQCollideSystem.get_info_by_id(this.collide_group_id).index; - } - return this._collide_group_index; - }, - set: function (value) { - if (this._collide_group_index === value) { - return; - } - this._collide_group_index = value; - this.collide_group_id = lq_collide_system_1.LQCollideSystem.get_group_by_index(value).id; - }, - enumerable: false, - configurable: true - }); - Object.defineProperty(LQCollide.prototype, "radius", { - get: function () { - return this._radius; - }, - set: function (value) { - this._radius = value; - this.draw_shape(); - }, - enumerable: false, - configurable: true - }); - Object.defineProperty(LQCollide.prototype, "size", { - // 物体速度 - // public velocity: Vec2 = new Vec2(0, 0); - get: function () { - return this._size; - }, - set: function (value) { - this._size = value; - if (this.world_rect) { - this.world_rect.width = value.width; - this.world_rect.height = value.height; - this.world_rect.half_width = value.width * 0.5; - this.world_rect.half_height = value.height * 0.5; - } - this.draw_shape(); - }, - enumerable: false, - configurable: true - }); - Object.defineProperty(LQCollide.prototype, "offset", { - get: function () { - return this._offset; - }, - set: function (value) { - this._offset = value; - this.draw_shape(); - }, - enumerable: false, - configurable: true - }); - Object.defineProperty(LQCollide.prototype, "polygon_points", { - get: function () { - return this._polygon_points; - }, - set: function (value) { - this._polygon_points = value; - this.draw_shape(); - }, - enumerable: false, - configurable: true - }); - //检测绘制组件是否添加 - LQCollide.prototype.checkDebugDrawValid = function () { - if (!this._debugDrawer || !this._debugDrawer.isValid) { - var node = this.node.getChildByName('Collide'); - if (!node) { - node = new Node('Collide'); - node.zIndex = macro.MAX_ZINDEX; - this.node.addChild(node); - // @ts-ignore - node._objFlags = 1096; - this._debugDrawer = node.addComponent(Graphics); - this._debugDrawer.lineWidth = 3; - this._debugDrawer.strokeColor = new Color(255, 0, 0); - this._debugDrawer.fillColor = new Color(255, 0, 0); - } - else { - this._debugDrawer = node.getComponent(Graphics); - } - } - }; - //绘制形状 - LQCollide.prototype.draw_shape = function () { - if (!this._draw_collide) { - if (this._debugDrawer) { - this._debugDrawer.clear(); - } - return; - } - this.checkDebugDrawValid(); - this._debugDrawer.clear(); - var o1 = { key: 'scaleX', value: this.node.scale }; - var o2 = { key: 'scaleY', value: this.node.scale }; - lq_game_util_1.LQGameUtil.recursion_node_property(this.node, o1); - lq_game_util_1.LQGameUtil.recursion_node_property(this.node, o2); - if (o1.value === 0 || o2.value === 0) { - return; - } - this._debugDrawer.node.scaleX = 1 / o1.value; - this._debugDrawer.node.scaleY = 1 / o2.value; - switch (this._collide_shape) { - case lq_const_1.LQCollideShape.Circle: - this._debugDrawer.circle(+this._offset.x, +this._offset.y, this._radius); - this._debugDrawer.stroke(); - break; - case lq_const_1.LQCollideShape.Rect: - this._debugDrawer.moveTo(-this._size.width * 0.5 + this._offset.x, -this._size.height * 0.5 + this._offset.y); - this._debugDrawer.lineTo(-this._size.width * 0.5 + this._offset.x, +this._size.height * 0.5 + this._offset.y); - this._debugDrawer.lineTo(this._size.width * 0.5 + this._offset.x, +this._size.height * 0.5 + this._offset.y); - this._debugDrawer.lineTo(this._size.width * 0.5 + this._offset.x, -this._size.height * 0.5 + this._offset.y); - this._debugDrawer.lineTo(-this._size.width * 0.5 + this._offset.x, -this._size.height * 0.5 + this._offset.y); - this._debugDrawer.stroke(); - break; - case lq_const_1.LQCollideShape.Polygon: - this._debugDrawer.moveTo(this._polygon_points[0].x + this._offset.x, this._polygon_points[0].y + this._offset.y); - for (var i = 1; i < this._polygon_points.length; i++) { - this._debugDrawer.lineTo(this._polygon_points[i].x + this._offset.x, this._polygon_points[i].y + this._offset.y); - } - this._debugDrawer.lineTo(this._polygon_points[0].x + this._offset.x, this._polygon_points[0].y + this._offset.y); - this._debugDrawer.stroke(); - break; - } - }; - //仅用于矩形 - LQCollide.prototype.update_size = function (width, height) { - this._size.width = width; - this.world_rect.width = width; - this.world_rect.half_width = width * 0.5; - this._size.height = height; - this.world_rect.height = height; - this.world_rect.half_height = height * 0.5; - this.draw_shape(); - }; - LQCollide.prototype.init_lq_collide = function () { - this.world_rect = new lq_data_1.LQRect(0, 0, this._size.width, this._size.height); - this.draw_shape(); - var info = lq_collide_system_1.LQCollideSystem.get_info_by_id(this.collide_group_id); - this.collide_mask = info.mask; - this.collide_category = info.category; - this.collide_id = LQCollide_1.id_maker++; - this.updateCollisionArea(); - }; - LQCollide.prototype.updateCollisionArea = function () { - if (this._size.width == 0 || this._size.height == 0 || Map_1.default._instance == undefined) { - return; - } - if (Map_1.default._instance.node.scale) { - var scaleX_1 = Map_1.default._instance.node.scale; - var scaleY_1 = Map_1.default._instance.node.scale; - if (scaleX_1 === 0 || scaleX_1 == undefined || scaleX_1 == null || scaleX_1 == 1) { - return; - } - switch (this._collide_shape) { - case lq_const_1.LQCollideShape.Circle: - // 圆形碰撞区域半径更新 - this._radius = this._radius * Math.max(scaleX_1, scaleY_1); - break; - case lq_const_1.LQCollideShape.Rect: - // 矩形碰撞区域尺寸更新 - // console.log(this.data_string); - if (this._size.width !== 10 && this.data_string != "-1") { - // if(this._size.width == 105 || this._size.height == 105){} - this._size.width = this._size.width * scaleX_1; - // console.log("放大倍数",scaleX); - } - if (this._size.height !== 10 && this.data_string != "-1") { - // if(this._size.width == 105 || this._size.height == 105){} - this._size.height = this._size.height * scaleY_1; - // console.log("放大倍数",scaleY); - } - // this._size.width = this._size.width * scaleX; - // this._size.height = this._size.height * scaleY; - if (this.world_rect) { - this.world_rect.width = this._size.width; - this.world_rect.height = this._size.height; - this.world_rect.half_width = this._size.width * 0.5; - this.world_rect.half_height = this._size.height * 0.5; - } - break; - case lq_const_1.LQCollideShape.Polygon: - // 多边形碰撞点坐标更新 - this._polygon_points = this._polygon_points.map(function (point) { - return new Vec2(point.x * scaleX_1, point.y * scaleY_1); - }); - break; - } - this.draw_shape(); - } - }; - LQCollide.prototype.enable_lq_collide = function () { - if (this.collide_status === lq_const_1.LQCollideStatus.Live) { - console.warn(this.node.name + '重复添加'); - return; - } - this.is_enable = true; - this.collide_status = lq_const_1.LQCollideStatus.Live; - lq_collide_system_1.LQCollideSystem.add_collide(this); - }; - LQCollide.prototype.disable_lq_collide = function () { - if (this.collide_status !== lq_const_1.LQCollideStatus.Live) { - return; - } - this.is_enable = false; - this.collide_status = lq_const_1.LQCollideStatus.Idle; - lq_collide_system_1.LQCollideSystem.remove_collide(this); - }; - LQCollide.prototype.update_lq_collide = function () { - }; - // @ts-ignore - // public on_collide(collide: LQCollide): void { - // if(collide.node.parent.uuid == this.node.parent.uuid){ - // return; - // } - // if (LQCollideConfig.switch_print_log) { - // if(this.node.parent.getComponent("Block")){ - // let block = this.node.parent.getComponent("Block"); - // if(block.isTouch){ - // block.checkCollision = true; - // // console.log("碰撞",this.node.name); - // if(this.node.name == "top" ){ - // console.log("碰到上边缘"); - // block.moveUp = false; - // if(block.touchPointY > (this.node.parent.y+this.node.height)){ - // block.moveY = 1; - // } - // } - // if(this.node.name === "down"){ - // block.moveDown = false; - // console.log("碰到下边缘"); - // if(block.touchPointY < (this.node.parent.y )){ - // block.moveY = -1; - // } - // } - // if(this.node.name === "left" ){ - // block.moveLeft = false; - // console.log("碰到左边缘"); - // if(block.touchPointX < (this.node.parent.x - this.node.parent.width)){ - // block.moveX = -1; - // } - // } - // if(this.node.name === "right"){ - // block.moveRight = false; - // console.log("碰到右边缘"); - // if(block.touchPointX > (this.node.parent.x)){ - // block.moveX = 1; - // } - // } - // } - // } - // } - // } - //@ts-ignore - LQCollide.prototype.on_enter = function (collide) { - if (this.disableCollider(collide)) { - return; - } - // if (LQCollideConfig.switch_print_log) { - // console.log(this.node.name + ' on_enter'); - // } - }; - //@ts-ignore - LQCollide.prototype.on_exit = function (collide) { - if (this.disableCollider(collide)) { - return; - } - if (lq_collide_config_1.LQCollideConfig.switch_print_log) { - if (this.node.parent.getComponent("Block")) { - var block = this.node.parent.getComponent("Block"); - // if(!block.isTouch){ - // return; - // } - block.checkCollision = false; - if (this.node.name == "top") { - block.moveUp = true; - } - if (this.node.name === "down") { - block.moveDown = true; - } - if (this.node.name === "left") { - block.moveLeft = true; - } - if (this.node.name === "right") { - block.moveRight = true; - } - } - } - }; - LQCollide.prototype.on_collide = function (collide) { - if (this.disableCollider(collide)) { - return; - } - if (lq_collide_config_1.LQCollideConfig.switch_print_log) { - if (this.node.parent.getComponent("Block")) { - var block = this.node.parent.getComponent("Block"); - var jg = false; - if (block.isTouch) { - block.checkCollision = true; - // console.log("碰撞",this.node.name); - if (this.node.name == "top") { - // console.log(collide.node.parent.name); - block.moveUp = false; - if (block.touchPointY > (this.node.parent.y + this.node.parent.height)) { - block.moveY = 1; - } - // console.log("碰到上边缘"); - } - if (this.node.name === "down") { - block.moveDown = false; - if (block.touchPointY < (this.node.parent.y)) { - block.moveY = -1; - } - // console.log("碰到下边缘"); - } - if (this.node.name === "left") { - block.moveLeft = false; - if (block.touchPointX < (this.node.parent.x - this.node.parent.width)) { - block.moveX = -1; - } - } - if (this.node.name === "right") { - block.moveRight = false; - if (block.touchPointX > (this.node.parent.x)) { - block.moveX = 1; - } - } - } - } - } - }; - LQCollide.prototype.disableCollider = function (collide) { - var jg = false; - if (collide.node && this.node) { - if (collide.node.parent && this.node.parent) { - if (collide.node.parent.uuid == this.node.parent.uuid) { - jg = true; - } - if (this.node.parent.getComponent("Block")) { - var block = this.node.parent.getComponent("Block"); - if (block.type == 1 || block.type == 10 || block.type == 9) { - if (collide.node.parent == block.block_Info.node) { - jg = true; - } - } - } - } - } - return jg; - }; - var LQCollide_1; - LQCollide.id_maker = 1; - __decorate([ - property({ displayName: '绘制形状' }) - ], LQCollide.prototype, "draw_collide", null); - __decorate([ - property - ], LQCollide.prototype, "_draw_collide", void 0); - __decorate([ - property({ tooltip: '能否移动' }) - ], LQCollide.prototype, "can_move", void 0); - __decorate([ - property({ - tooltip: '碰撞形状,None就是无敌,不参与碰撞', - type: Enum(lq_const_1.LQCollideShape), - displayName: '碰撞形状' - }) - ], LQCollide.prototype, "collide_shape", null); - __decorate([ - property() - ], LQCollide.prototype, "_collide_shape", void 0); - __decorate([ - property({ - type: Enum(lq_collide_config_1.LQCollideInfoList), tooltip: '碰撞类别', - displayName: '碰撞类别' - }) - ], LQCollide.prototype, "collide_group_index", null); - __decorate([ - property({ serializable: false }) - ], LQCollide.prototype, "_collide_group_index", void 0); - __decorate([ - property({ visible: false }) - ], LQCollide.prototype, "collide_group_id", void 0); - __decorate([ - property({ visible: false }) - ], LQCollide.prototype, "collide_scle", void 0); - __decorate([ - property({ - tooltip: 'collide半径', - visible: function () { - // @ts-ignore - return this._collide_shape === lq_const_1.LQCollideShape.Circle; - }, - displayName: '半径' - }) - ], LQCollide.prototype, "radius", null); - __decorate([ - property() - ], LQCollide.prototype, "_radius", void 0); - __decorate([ - property({ - tooltip: 'collide长宽', - visible: function () { - // @ts-ignore - return this._collide_shape === lq_const_1.LQCollideShape.Rect; - }, - displayName: '长宽' - }) - ], LQCollide.prototype, "size", null); - __decorate([ - property() - ], LQCollide.prototype, "_size", void 0); - __decorate([ - property({ displayName: '位置偏移' }) - ], LQCollide.prototype, "offset", null); - __decorate([ - property({ - type: Vec2, - visible: function () { - // @ts-ignore - return this._collide_shape === lq_const_1.LQCollideShape.Polygon; - }, - displayName: '多边形碰撞点' - }) - ], LQCollide.prototype, "polygon_points", null); - __decorate([ - property() - ], LQCollide.prototype, "_polygon_points", void 0); - __decorate([ - property() - ], LQCollide.prototype, "_offset", void 0); - __decorate([ - property({ displayName: '自定义字符串' }) - ], LQCollide.prototype, "data_string", void 0); - LQCollide = LQCollide_1 = __decorate([ - ccclass, - requireComponent(lq_collide_base_1.LQCollideBase), - menu("lq/collide") - ], LQCollide); - return LQCollide; -}(Component)); -exports.LQCollide = LQCollide; - -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,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImFzc2V0c1xcU2NyaXB0XFxscV9jb2xsaWRlX3N5c3RlbVxcbHFfY29sbGlkZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsSUFBTyxPQUFPLEdBQUcsRUFBRSxDQUFDLFVBQVUsQ0FBQyxPQUFPLENBQUM7QUFDdkMsSUFBTyxRQUFRLEdBQUcsRUFBRSxDQUFDLFVBQVUsQ0FBQyxRQUFRLENBQUM7QUFDekMsSUFBTyxnQkFBZ0IsR0FBRyxFQUFFLENBQUMsVUFBVSxDQUFDLGdCQUFnQixDQUFDO0FBQ3pELElBQU8sSUFBSSxHQUFHLEVBQUUsQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDO0FBQ2pDLElBQU8sU0FBUyxHQUFHLEVBQUUsQ0FBQyxTQUFTLENBQUM7QUFDaEMsSUFBTyxJQUFJLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQztBQUN0QixJQUFPLElBQUksR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDO0FBQ3RCLElBQU8sSUFBSSxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUM7QUFDdEIsSUFBTyxRQUFRLEdBQUcsRUFBRSxDQUFDLFFBQVEsQ0FBQztBQUM5QixJQUFPLElBQUksR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDO0FBQ3RCLElBQU8sS0FBSyxHQUFHLEVBQUUsQ0FBQyxLQUFLLENBQUM7QUFDeEIsSUFBTyxLQUFLLEdBQUcsRUFBRSxDQUFDLEtBQUssQ0FBQztBQUN4QixxREFBeUU7QUFDekUseURBQXVFO0FBQ3ZFLHlEQUFvRDtBQUNwRCxtREFBK0M7QUFDL0MscURBQWdEO0FBQ2hELDZEQUF3RDtBQUN4RCw4QkFBaUM7QUFLakM7SUFBK0IsNkJBQVM7SUFBeEM7UUFBQSxxRUFpZUM7UUFwZGEsbUJBQWEsR0FBWSxJQUFJLENBQUM7UUFHOUIsY0FBUSxHQUFZLElBQUksQ0FBQztRQWtCNUIsb0JBQWMsR0FBbUIseUJBQWMsQ0FBQyxJQUFJLENBQUM7UUFzQnBELDBC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QUFRLENBQUM7WUFDTixPQUFPLEVBQUUsV0FBVztZQUNwQixPQUFPO2dCQUNILGFBQWE7Z0JBQ2IsT0FBTyxJQUFJLENBQUMsY0FBYyxLQUFLLHlCQUFjLENBQUMsSUFBSSxDQUFDO1lBQ3ZELENBQUM7WUFDRCxXQUFXLEVBQUUsSUFBSTtTQUNwQixDQUFDO3lDQUdEO0lBY0Q7UUFEQyxRQUFRLEVBQUU7NENBQ2dDO0lBRzNDO1FBREMsUUFBUSxDQUFDLEVBQUMsV0FBVyxFQUFFLE1BQU0sRUFBQyxDQUFDOzJDQUcvQjtJQWVEO1FBUkMsUUFBUSxDQUFDO1lBQ04sSUFBSSxFQUFFLElBQUk7WUFDVixPQUFPO2dCQUNILGFBQWE7Z0JBQ2IsT0FBTyxJQUFJLENBQUMsY0FBYyxLQUFLLHlCQUFjLENBQUMsT0FBTyxDQUFDO1lBQzFELENBQUM7WUFDRCxXQUFXLEVBQUUsUUFBUTtTQUN4QixDQUFDO21EQUdEO0lBUUQ7UUFEQyxRQUFRLEVBQUU7c0RBQ29IO0lBRy9IO1FBREMsUUFBUSxFQUFFOzhDQUMyQjtJQUd0QztRQURDLFFBQVEsQ0FBQyxFQUFDLFdBQVcsRUFBRSxRQUFRLEVBQUMsQ0FBQztrREFDRjtJQW5KdkIsU0FBUztRQUhyQixPQUFPO1FBQ1AsZ0JBQWdCLENBQUMsK0JBQWEsQ0FBQztRQUMvQixJQUFJLENBQUMsWUFBWSxDQUFDO09BQ04sU0FBUyxDQWllckI7SUFBRCxnQkFBQztDQWplRCxBQWllQyxDQWplOEIsU0FBUyxHQWlldkM7QUFqZVksOEJBQVMiLCJmaWxlIjoiIiwic291cmNlUm9vdCI6Ii8iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgY2NjbGFzcyA9IGNjLl9kZWNvcmF0b3IuY2NjbGFzcztcclxuaW1wb3J0IHByb3BlcnR5ID0gY2MuX2RlY29yYXRvci5wcm9wZXJ0eTtcclxuaW1wb3J0IHJlcXVpcmVDb21wb25lbnQgPSBjYy5fZGVjb3JhdG9yLnJlcXVpcmVDb21wb25lbnQ7XHJcbmltcG9ydCBtZW51ID0gY2MuX2RlY29yYXRvci5tZW51O1xyXG5pbXBvcnQgQ29tcG9uZW50ID0gY2MuQ29tcG9uZW50O1xyXG5pbXBvcnQgRW51bSA9IGNjLkVudW07XHJcbmltcG9ydCBTaXplID0gY2MuU2l6ZTtcclxuaW1wb3J0IFZlYzIgPSBjYy5WZWMyO1xyXG5pbXBvcnQgR3JhcGhpY3MgPSBjYy5HcmFwaGljcztcclxuaW1wb3J0IE5vZGUgPSBjYy5Ob2RlO1xyXG5pbXBvcnQgbWFjcm8gPSBjYy5tYWNybztcclxuaW1wb3J0IENvbG9yID0gY2MuQ29sb3I7XHJcbmltcG9ydCB7TFFDb2xsaWRlU2hhcGUsIExRQ29sbGlkZVN0YXR1c30gZnJvbSBcIi4uL2xxX2Jhc2UvZGF0YS9scV9jb25zdFwiO1xyXG5pbXBvcnQge0xRQ29sbGlkZUNvbmZpZywgTFFDb2xsaWRlSW5mb0xpc3R9IGZyb20gXCIuL2xxX2NvbGxpZGVfY29uZmlnXCI7XHJcbmltcG9ydCB7TFFDb2xsaWRlU3lzdGVtfSBmcm9tIFwiLi9scV9jb2xsaWRlX3N5c3RlbVwiO1xyXG5pbXBvcnQge0xRUmVjdH0gZnJvbSBcIi4uL2xxX2Jhc2UvZGF0YS9scV9kYXRhXCI7XHJcbmltcG9ydCB7TFFDb2xsaWRlQmFzZX0gZnJvbSBcIi4vbHFfY29sbGlkZV9iYXNlXCI7XHJcbmltcG9ydCB7TFFHYW1lVXRpbH0gZnJvbSBcIi4uL2xxX2Jhc2UvdXRpbC9scV9nYW1lX3V0aWxcIjtcclxuaW1wb3J0IE1hcENvbnJvbGVyIGZyb20gXCIuLi9NYXBcIjtcclxuXHJcbkBjY2NsYXNzXHJcbkByZXF1aXJlQ29tcG9uZW50KExRQ29sbGlkZUJhc2UpXHJcbkBtZW51KFwibHEvY29sbGlkZVwiKVxyXG5leHBvcnQgY2xhc3MgTFFDb2xsaWRlIGV4dGVuZHMgQ29tcG9uZW50IHtcclxuICAgIHZlbG9jaXR5OiBhbnk7XHJcbiAgICBAcHJvcGVydHkoe2Rpc3BsYXlOYW1lOiAn57uY5Yi25b2i54q2J30pXHJcbiAgICBnZXQgZHJhd19jb2xsaWRlKCk6IGJvb2xlYW4ge1xyXG4gICAgICAgIHJldHVybiB0aGlzLl9kcmF3X2NvbGxpZGU7XHJcbiAgICB9XHJcblxyXG4gICAgc2V0IGRyYXdfY29sbGlkZSh2YWx1ZTogYm9vbGVhbikge1xyXG4gICAgICAgIHRoaXMuX2RyYXdfY29sbGlkZSA9IHZhbHVlO1xyXG4gICAgICAgIHRoaXMuZHJhd19zaGFwZSgpO1xyXG4gICAgfVxyXG5cclxuICAgIEBwcm9wZXJ0eVxyXG4gICAgcHJvdGVjdGVkIF9kcmF3X2NvbGxpZGU6IGJvb2xlYW4gPSB0cnVlO1xyXG5cclxuICAgIEBwcm9wZXJ0eSh7dG9vbHRpcDogJ+iDveWQpuenu+WKqCd9KVxyXG4gICAgcHJvdGVjdGVkIGNhbl9tb3ZlOiBib29sZWFuID0gdHJ1ZTtcclxuXHJcblxyXG4gICAgQHByb3BlcnR5KHtcclxuICAgICAgICB0b29sdGlwOiAn56Kw5pKe5b2i54q277yMTm9uZeWwseaYr+aXoOaVjO+8jOS4jeWPguS4jueisOaSnicsXHJcbiAgICAgICAgdHlwZTogRW51bShMUUNvbGxpZGVTaGFwZSksXHJcbiAgICAgICAgZGlzcGxheU5hbWU6ICfnorDmkp7lvaLnirYnXHJcbiAgICB9KVxyXG4gICAgZ2V0IGNvbGxpZGVfc2hhcGUoKTogTFFDb2xsaWRlU2hhcGUge1xyXG4gICAgICAgIHJldHVybiB0aGlzLl9jb2xsaWRlX3NoYXBlO1xyXG4gICAgfVxyXG5cclxuICAgIHNldCBjb2xsaWRlX3NoYXBlKHZhbHVlOiBMUUNvbGxpZGVTaGFwZSkge1xyXG4gICAgICAgIHRoaXMuX2NvbGxpZGVfc2hhcGUgPSB2YWx1ZTtcclxuICAgICAgICB0aGlzLmRyYXdfc2hhcGUoKTtcclxuICAgIH1cclxuXHJcbiAgICBAcHJvcGVydHkoKVxyXG4gICAgcHVibGljIF9jb2xsaWRlX3NoYXBlOiBMUUNvbGxpZGVTaGFwZSA9IExRQ29sbGlkZVNoYXBlLlJlY3Q7XHJcblxyXG4gICAgQHByb3BlcnR5KHtcclxuICAgICAgICB0eXBlOiBFbnVtKExRQ29sbGlkZUluZm9MaXN0KSwgdG9vbHRpcDogJ+eisOaSnuexu+WIqycsXHJcbiAgICAgICAgZGlzcGxheU5hbWU6ICfnorDmkp7nsbvliKsnXHJcbiAgICB9KVxyXG4gICAgZ2V0IGNvbGxpZGVfZ3JvdXBfaW5kZXgoKSB7XHJcbiAgICAgICAgaWYgKHRoaXMuX2NvbGxpZGVfZ3JvdXBfaW5kZXggPT09IC0xKSB7XHJcbiAgICAgICAgICAgIHRoaXMuX2NvbGxpZGVfZ3JvdXBfaW5kZXggPSBMUUNvbGxpZGVTeXN0ZW0uZ2V0X2luZm9fYnlfaWQodGhpcy5jb2xsaWRlX2dyb3VwX2lkKS5pbmRleDtcclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuX2NvbGxpZGVfZ3JvdXBfaW5kZXg7XHJcbiAgICB9XHJcblxyXG4gICAgc2V0IGNvbGxpZGVfZ3JvdXBfaW5kZXgodmFsdWUpIHtcclxuICAgICAgICBpZiAodGhpcy5fY29sbGlkZV9ncm91cF9pbmRleCA9PT0gdmFsdWUpIHtcclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLl9jb2xsaWRlX2dyb3VwX2luZGV4ID0gdmFsdWU7XHJcbiAgICAgICAgdGhpcy5jb2xsaWRlX2dyb3VwX2lkID0gTFFDb2xsaWRlU3lzdGVtLmdldF9ncm91cF9ieV9pbmRleCh2YWx1ZSkuaWQ7XHJcbiAgICB9XHJcblxyXG4gICAgQHByb3BlcnR5KHtzZXJpYWxpemFibGU6IGZhbHNlfSlcclxuICAgIHByaXZhdGUgX2NvbGxpZGVfZ3JvdXBfaW5kZXggPSAtMTtcclxuXHJcbiAgICBAcHJvcGVydHkoe3Zpc2libGU6IGZhbHNlfSlcclxuICAgIHByb3RlY3RlZCBjb2xsaWRlX2dyb3VwX2lkOiBudW1iZXIgPSAwO1xyXG5cclxuICAgIEBwcm9wZXJ0eSh7dmlzaWJsZTogZmFsc2V9KVxyXG4gICAgcHJvdGVjdGVkIGNvbGxpZGVfc2NsZTogbnVtYmVyID0gMTtcclxuXHJcbiAgICBAcHJvcGVydHkoe1xyXG4gICAgICAgIHRvb2x0aXA6ICdjb2xsaWRl5Y2K5b6EJyxcclxuICAgICAgICB2aXNpYmxlKCkge1xyXG4gICAgICAgICAgICAvLyBAdHMtaWdub3JlXHJcbiAgICAgICAgICAgIHJldHVybiB0aGlzLl9jb2xsaWRlX3NoYXBlID09PSBMUUNvbGxpZGVTaGFwZS5DaXJjbGU7XHJcbiAgICAgICAgfSxcclxuICAgICAgICBkaXNwbGF5TmFtZTogJ+WNiuW+hCdcclxuICAgIH0pXHJcbiAgICBnZXQgcmFkaXVzKCk6IG51bWJlciB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuX3JhZGl1cztcclxuICAgIH1cclxuXHJcbiAgICBzZXQgcmFkaXVzKHZhbHVlOiBudW1iZXIpIHtcclxuICAgICAgICB0aGlzLl9yYWRpdXMgPSB2YWx1ZTtcclxuICAgICAgICB0aGlzLmRyYXdfc2hhcGUoKTtcclxuICAgIH1cclxuXHJcbiAgICBAcHJvcGVydHkoKVxyXG4gICAgcHJvdGVjdGVkIF9yYWRpdXM6IG51bWJlciA9IDUwO1xyXG5cclxuICAgIC8vIOeJqeS9k+mAn+W6plxyXG4gICAgLy8gcHVibGljIHZlbG9jaXR5OiBWZWMyID0gbmV3IFZlYzIoMCwgMCk7XHJcblxyXG4gICAgQHByb3BlcnR5KHtcclxuICAgICAgICB0b29sdGlwOiAnY29sbGlkZemVv+WuvScsXHJcbiAgICAgICAgdmlzaWJsZSgpIHtcclxuICAgICAgICAgICAgLy8gQHRzLWlnbm9yZVxyXG4gICAgICAgICAgICByZXR1cm4gdGhpcy5fY29sbGlkZV9zaGFwZSA9PT0gTFFDb2xsaWRlU2hhcGUuUmVjdDtcclxuICAgICAgICB9LFxyXG4gICAgICAgIGRpc3BsYXlOYW1lOiAn6ZW/5a69J1xyXG4gICAgfSlcclxuICAgIGdldCBzaXplKCk6IFNpemUge1xyXG4gICAgICAgIHJldHVybiB0aGlzLl9zaXplO1xyXG4gICAgfVxyXG5cclxuICAgIHNldCBzaXplKHZhbHVlOiBTaXplKSB7XHJcbiAgICAgICAgdGhpcy5fc2l6ZSA9IHZhbHVlO1xyXG4gICAgICAgIGlmICh0aGlzLndvcmxkX3JlY3QpIHtcclxuICAgICAgICAgICAgdGhpcy53b3JsZF9yZWN0LndpZHRoID0gdmFsdWUud2lkdGg7XHJcbiAgICAgICAgICAgIHRoaXMud29ybGRfcmVjdC5oZWlnaHQgPSB2YWx1ZS5oZWlnaHQ7XHJcbiAgICAgICAgICAgIHRoaXMud29ybGRfcmVjdC5oYWxmX3dpZHRoID0gdmFsdWUud2lkdGggKiAwLjU7XHJcbiAgICAgICAgICAgIHRoaXMud29ybGRfcmVjdC5oYWxmX2hlaWdodCA9IHZhbHVlLmhlaWdodCAqIDAuNTtcclxuICAgICAgICB9XHJcbiAgICAgICAgdGhpcy5kcmF3X3NoYXBlKCk7XHJcbiAgICB9XHJcblxyXG4gICAgQHByb3BlcnR5KClcclxuICAgIHByb3RlY3RlZCBfc2l6ZTogU2l6ZSA9IG5ldyBTaXplKDEwMCwgMTAwKTtcclxuXHJcbiAgICBAcHJvcGVydHkoe2Rpc3BsYXlOYW1lOiAn5L2N572u5YGP56e7J30pXHJcbiAgICBnZXQgb2Zmc2V0KCk6IFZlYzIge1xyXG4gICAgICAgIHJldHVybiB0aGlzLl9vZmZzZXQ7XHJcbiAgICB9XHJcblxyXG4gICAgc2V0IG9mZnNldCh2YWx1ZTogVmVjMikge1xyXG4gICAgICAgIHRoaXMuX29mZnNldCA9IHZhbHVlO1xyXG4gICAgICAgIHRoaXMuZHJhd19zaGFwZSgpO1xyXG4gICAgfVxyXG5cclxuICAgIEBwcm9wZXJ0eSh7XHJcbiAgICAgICAgdHlwZTogVmVjMixcclxuICAgICAgICB2aXNpYmxlKCkge1xyXG4gICAgICAgICAgICAvLyBAdHMtaWdub3JlXHJcbiAgICAgICAgICAgIHJldHVybiB0aGlzLl9jb2xsaWRlX3NoYXBlID09PSBMUUNvbGxpZGVTaGFwZS5Qb2x5Z29uO1xyXG4gICAgICAgIH0sXHJcbiAgICAgICAgZGlzcGxheU5hbWU6ICflpJrovrnlvaLnorDmkp7ngrknXHJcbiAgICB9KVxyXG4gICAgZ2V0IHBvbHlnb25fcG9pbnRzKCk6IFZlYzJbXSB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuX3BvbHlnb25fcG9pbnRzO1xyXG4gICAgfVxyXG5cclxuICAgIHNldCBwb2x5Z29uX3BvaW50cyh2YWx1ZTogVmVjMltdKSB7XHJcbiAgICAgICAgdGhpcy5fcG9seWdvbl9wb2ludHMgPSB2YWx1ZTtcclxuICAgICAgICB0aGlzLmRyYXdfc2hhcGUoKTtcclxuICAgIH1cclxuXHJcbiAgICBAcHJvcGVydHkoKVxyXG4gICAgcHVibGljIF9wb2x5Z29uX3BvaW50czogVmVjMltdID0gW25ldyBWZWMyKC00NSwgLTQ1KSwgbmV3IFZlYzIoNDUsIC00NSksIG5ldyBWZWMyKDYwLCA0MCksIG5ldyBWZWMyKDAsIDcwKSwgbmV3IFZlYzIoLTYwLCA0MCldO1xyXG4gICAgLy9jb2xsaWRl56Kw5pKe5L2N572u5YGP56e7XHJcbiAgICBAcHJvcGVydHkoKVxyXG4gICAgcHVibGljIF9vZmZzZXQ6IFZlYzIgPSBuZXcgVmVjMigwLCAwKTtcclxuXHJcbiAgICBAcHJvcGVydHkoe2Rpc3BsYXlOYW1lOiAn6Ieq5a6a5LmJ5a2X56ym5LiyJ30pXHJcbiAgICBwdWJsaWMgZGF0YV9zdHJpbmc6IHN0cmluZyA9ICcnO1xyXG4gICAgLy/mr4/kuKpjb2xsaWRl55qEaWTllK/kuIBcclxuICAgIHB1YmxpYyBjb2xsaWRlX2lkOiBudW1iZXIgPSAwO1xyXG4gICAgLy/nirbmgIFcclxuICAgIHB1YmxpYyBjb2xsaWRlX3N0YXR1czogTFFDb2xsaWRlU3RhdHVzID0gTFFDb2xsaWRlU3RhdHVzLklkbGU7XHJcbiAgICAvL+aYr+WQpuWPr+eisOaSnlxyXG4gICAgcHVibGljIGlzX2VuYWJsZTogYm9vbGVhbiA9IHRydWU7XHJcbiAgICAvL+aYr+WQpuW8gOWQr+eisOaSnuWJjeWQjueahOWHveaVsFxyXG4gICAgcHVibGljIGlzX29wZW5fZnVuYzogYm9vbGVhbiA9IHRydWU7XHJcbiAgICAvL+eisOaSnuexu+WIq1xyXG4gICAgcHVibGljIGNvbGxpZGVfY2F0ZWdvcnkgPSAwO1xyXG4gICAgLy/norDmkp7nrZvpgIlcclxuICAgIHB1YmxpYyBjb2xsaWRlX21hc2sgPSAwO1xyXG4gICAgLy/nvJPlrZjlpJrovrnlvaLnorDmkp7mlbDmja5cclxuICAgIHB1YmxpYyBjYWNoZV9wb2x5Z29uX3BvaW50czogbnVtYmVyW107XHJcbiAgICAvL+e7mOWItmNvbGxpZGXlvaLnirbnu4Tku7ZcclxuICAgIHByaXZhdGUgX2RlYnVnRHJhd2VyITogR3JhcGhpY3M7XHJcbiAgICBwdWJsaWMgd29ybGRfcmVjdCE6IExRUmVjdDtcclxuICAgIHB1YmxpYyBjb2xsaWRlX21hcDogeyBba2V5OiBudW1iZXJdOiB7IGNvbGxpZGU6IExRQ29sbGlkZSwgc3RhdHVzOiAxIHwgMiB9IH0gPSB7fTtcclxuICAgIHB1YmxpYyBmb2xsb3dfdGFyZ2V0X2NhdGVnb3J5OiBudW1iZXIgfCB1bmRlZmluZWQ7XHJcbiAgICBwcml2YXRlIHN0YXRpYyBpZF9tYWtlcjogbnVtYmVyID0gMTtcclxuXHJcbiAgICAvL+ajgOa1i+e7mOWItue7hOS7tuaYr+WQpua3u+WKoFxyXG4gICAgcHJpdmF0ZSBjaGVja0RlYnVnRHJhd1ZhbGlkKCkge1xyXG4gICAgICAgIGlmICghdGhpcy5fZGVidWdEcmF3ZXIgfHwgIXRoaXMuX2RlYnVnRHJhd2VyLmlzVmFsaWQpIHtcclxuICAgICAgICAgICAgbGV0IG5vZGUgPSB0aGlzLm5vZGUuZ2V0Q2hpbGRCeU5hbWUoJ0NvbGxpZGUnKTtcclxuICAgICAgICAgICAgaWYgKCFub2RlKSB7XHJcbiAgICAgICAgICAgICAgICBub2RlID0gbmV3IE5vZGUoJ0NvbGxpZGUnKTtcclxuICAgICAgICAgICAgICAgIG5vZGUuekluZGV4ID0gbWFjcm8uTUFYX1pJTkRFWDtcclxuICAgICAgICAgICAgICAgIHRoaXMubm9kZS5hZGRDaGlsZChub2RlKTtcclxuICAgICAgICAgICAgICAgIC8vIEB0cy1pZ25vcmVcclxuICAgICAgICAgICAgICAgIG5vZGUuX29iakZsYWdzID0gMTA5NjtcclxuICAgICAgICAgICAgICAgIHRoaXMuX2RlYnVnRHJhd2VyID0gbm9kZS5hZGRDb21wb25lbnQoR3JhcGhpY3MpO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5fZGVidWdEcmF3ZXIubGluZVdpZHRoID0gMztcclxuICAgICAgICAgICAgICAgIHRoaXMuX2RlYnVnRHJhd2VyLnN0cm9rZUNvbG9yID0gbmV3IENvbG9yKDI1NSwgMCwgMCk7XHJcbiAgICAgICAgICAgICAgICB0aGlzLl9kZWJ1Z0RyYXdlci5maWxsQ29sb3IgPSBuZXcgQ29sb3IoMjU1LCAwLCAwKTtcclxuICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgIHRoaXMuX2RlYnVnRHJhd2VyID0gbm9kZS5nZXRDb21wb25lbnQoR3JhcGhpY3MpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIC8v57uY5Yi25b2i54q2XHJcbiAgICBwcm90ZWN0ZWQgZHJhd19zaGFwZSgpIHtcclxuICAgICAgICBpZiAoIXRoaXMuX2RyYXdfY29sbGlkZSkge1xyXG4gICAgICAgICAgICBpZiAodGhpcy5fZGVidWdEcmF3ZXIpIHtcclxuICAgICAgICAgICAgICAgIHRoaXMuX2RlYnVnRHJhd2VyLmNsZWFyKCk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLmNoZWNrRGVidWdEcmF3VmFsaWQoKTtcclxuICAgICAgICB0aGlzLl9kZWJ1Z0RyYXdlci5jbGVhcigpO1xyXG5cclxuICAgICAgICBsZXQgbzEgPSB7a2V5OiAnc2NhbGVYJywgdmFsdWU6IHRoaXMubm9kZS5zY2FsZX07XHJcbiAgICAgICAgbGV0IG8yID0ge2tleTogJ3NjYWxlWScsIHZhbHVlOiB0aGlzLm5vZGUuc2NhbGV9O1xyXG4gICAgICAgIExRR2FtZVV0aWwucmVjdXJzaW9uX25vZGVfcHJvcGVydHkodGhpcy5ub2RlLCBvMSk7XHJcbiAgICAgICAgTFFHYW1lVXRpbC5yZWN1cnNpb25fbm9kZV9wcm9wZXJ0eSh0aGlzLm5vZGUsIG8yKTtcclxuICAgICAgICBpZiAobzEudmFsdWUgPT09IDAgfHwgbzIudmFsdWUgPT09IDApIHtcclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLl9kZWJ1Z0RyYXdlci5ub2RlLnNjYWxlWCA9IDEgLyBvMS52YWx1ZTtcclxuICAgICAgICB0aGlzLl9kZWJ1Z0RyYXdlci5ub2RlLnNjYWxlWSA9IDEgLyBvMi52YWx1ZTtcclxuICAgICAgICBzd2l0Y2ggKHRoaXMuX2NvbGxpZGVfc2hhcGUpIHtcclxuICAgICAgICAgICAgY2FzZSBMUUNvbGxpZGVTaGFwZS5DaXJjbGU6XHJcbiAgICAgICAgICAgICAgICB0aGlzLl9kZWJ1Z0RyYXdlci5jaXJjbGUoK3RoaXMuX29mZnNldC54LCArdGhpcy5fb2Zmc2V0LnksIHRoaXMuX3JhZGl1cyk7XHJcbiAgICAgICAgICAgICAgICB0aGlzLl9kZWJ1Z0RyYXdlci5zdHJva2UoKTtcclxuICAgICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICBjYXNlIExRQ29sbGlkZVNoYXBlLlJlY3Q6XHJcbiAgICAgICAgICAgICAgICB0aGlzLl9kZWJ1Z0RyYXdlci5tb3ZlVG8oLXRoaXMuX3NpemUud2lkdGggKiAwLjUgKyB0aGlzLl9vZmZzZXQueCwgLXRoaXMuX3NpemUuaGVpZ2h0ICogMC41ICsgdGhpcy5fb2Zmc2V0LnkpO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5fZGVidWdEcmF3ZXIubGluZVRvKC10aGlzLl9zaXplLndpZHRoICogMC41ICsgdGhpcy5fb2Zmc2V0LngsICt0aGlzLl9zaXplLmhlaWdodCAqIDAuNSArIHRoaXMuX29mZnNldC55KTtcclxuICAgICAgICAgICAgICAgIHRoaXMuX2RlYnVnRHJhd2VyLmxpbmVUbyh0aGlzLl9zaXplLndpZHRoICogMC41ICsgdGhpcy5fb2Zmc2V0LngsICt0aGlzLl9zaXplLmhlaWdodCAqIDAuNSArIHRoaXMuX29mZnNldC55KTtcclxuICAgICAgICAgICAgICAgIHRoaXMuX2RlYnVnRHJhd2VyLmxpbmVUbyh0aGlzLl9zaXplLndpZHRoICogMC41ICsgdGhpcy5fb2Zmc2V0LngsIC10aGlzLl9zaXplLmhlaWdodCAqIDAuNSArIHRoaXMuX29mZnNldC55KTtcclxuICAgICAgICAgICAgICAgIHRoaXMuX2RlYnVnRHJhd2VyLmxpbmVUbygtdGhpcy5fc2l6ZS53aWR0aCAqIDAuNSArIHRoaXMuX29mZnNldC54LCAtdGhpcy5fc2l6ZS5oZWlnaHQgKiAwLjUgKyB0aGlzLl9vZmZzZXQueSk7XHJcbiAgICAgICAgICAgICAgICB0aGlzLl9kZWJ1Z0RyYXdlci5zdHJva2UoKTtcclxuICAgICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICBjYXNlIExRQ29sbGlkZVNoYXBlLlBvbHlnb246XHJcbiAgICAgICAgICAgICAgICB0aGlzLl9kZWJ1Z0RyYXdlci5tb3ZlVG8odGhpcy5fcG9seWdvbl9wb2ludHNbMF0ueCArIHRoaXMuX29mZnNldC54LCB0aGlzLl9wb2x5Z29uX3BvaW50c1swXS55ICsgdGhpcy5fb2Zmc2V0LnkpO1xyXG4gICAgICAgICAgICAgICAgZm9yIChsZXQgaSA9IDE7IGkgPCB0aGlzLl9wb2x5Z29uX3BvaW50cy5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuX2RlYnVnRHJhd2VyLmxpbmVUbyh0aGlzLl9wb2x5Z29uX3BvaW50c1tpXS54ICsgdGhpcy5fb2Zmc2V0LngsIHRoaXMuX3BvbHlnb25fcG9pbnRzW2ldLnkgKyB0aGlzLl9vZmZzZXQueSk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB0aGlzLl9kZWJ1Z0RyYXdlci5saW5lVG8odGhpcy5fcG9seWdvbl9wb2ludHNbMF0ueCArIHRoaXMuX29mZnNldC54LCB0aGlzLl9wb2x5Z29uX3BvaW50c1swXS55ICsgdGhpcy5fb2Zmc2V0LnkpO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5fZGVidWdEcmF3ZXIuc3Ryb2tlKCk7XHJcbiAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgLy/ku4XnlKjkuo7nn6nlvaJcclxuICAgIHB1YmxpYyB1cGRhdGVfc2l6ZSh3aWR0aDogbnVtYmVyLCBoZWlnaHQ6IG51bWJlcikge1xyXG4gICAgICAgIHRoaXMuX3NpemUud2lkdGggPSB3aWR0aDtcclxuICAgICAgICB0aGlzLndvcmxkX3JlY3Qud2lkdGggPSB3aWR0aDtcclxuICAgICAgICB0aGlzLndvcmxkX3JlY3QuaGFsZl93aWR0aCA9IHdpZHRoICogMC41O1xyXG4gICAgICAgIHRoaXMuX3NpemUuaGVpZ2h0ID0gaGVpZ2h0O1xyXG4gICAgICAgIHRoaXMud29ybGRfcmVjdC5oZWlnaHQgPSBoZWlnaHQ7XHJcbiAgICAgICAgdGhpcy53b3JsZF9yZWN0LmhhbGZfaGVpZ2h0ID0gaGVpZ2h0ICogMC41O1xyXG5cclxuICAgICAgICB0aGlzLmRyYXdfc2hhcGUoKTtcclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgaW5pdF9scV9jb2xsaWRlKCkge1xyXG5cclxuICAgICAgICB0aGlzLndvcmxkX3JlY3QgPSBuZXcgTFFSZWN0KDAsIDAsIHRoaXMuX3NpemUud2lkdGgsIHRoaXMuX3NpemUuaGVpZ2h0KTtcclxuICAgICAgICB0aGlzLmRyYXdfc2hhcGUoKTtcclxuICAgICAgICBjb25zdCBpbmZvID0gTFFDb2xsaWRlU3lzdGVtLmdldF9pbmZvX2J5X2lkKHRoaXMuY29sbGlkZV9ncm91cF9pZCk7XHJcbiAgICAgICAgdGhpcy5jb2xsaWRlX21hc2sgPSBpbmZvLm1hc2s7XHJcbiAgICAgICAgdGhpcy5jb2xsaWRlX2NhdGVnb3J5ID0gaW5mby5jYXRlZ29yeTtcclxuICAgICAgICB0aGlzLmNvbGxpZGVfaWQgPSBMUUNvbGxpZGUuaWRfbWFrZXIrKztcclxuXHJcbiAgICAgICAgdGhpcy51cGRhdGVDb2xsaXNpb25BcmVhKCk7XHJcbiAgICB9XHJcblxyXG4gICAgcHJpdmF0ZSB1cGRhdGVDb2xsaXNpb25BcmVhKCkge1xyXG4gICAgICAgIGlmKHRoaXMuX3NpemUud2lkdGg9PTAgfHwgdGhpcy5fc2l6ZS5oZWlnaHQ9PTAgfHwgTWFwQ29ucm9sZXIuX2luc3RhbmNlID09IHVuZGVmaW5lZCl7XHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYoTWFwQ29ucm9sZXIuX2luc3RhbmNlLm5vZGUuc2NhbGUpe1xyXG4gICAgICAgICAgICBsZXQgc2NhbGVYID0gTWFwQ29ucm9sZXIuX2luc3RhbmNlLm5vZGUuc2NhbGU7XHJcbiAgICAgICAgICAgIGxldCBzY2FsZVkgPSBNYXBDb25yb2xlci5faW5zdGFuY2Uubm9kZS5zY2FsZTtcclxuXHJcbiAgICAgICAgICAgIGlmIChzY2FsZVggPT09IDAgfHwgc2NhbGVYID09IHVuZGVmaW5lZCB8fCBzY2FsZVggPT0gbnVsbCB8fCBzY2FsZVggPT0gMSkge1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIHN3aXRjaCAodGhpcy5fY29sbGlkZV9zaGFwZSkge1xyXG4gICAgICAgICAgICAgICAgY2FzZSBMUUNvbGxpZGVTaGFwZS5DaXJjbGU6XHJcbiAgICAgICAgICAgICAgICAgICAgLy8g5ZyG5b2i56Kw5pKe5Yy65Z+f5Y2K5b6E5pu05pawXHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5fcmFkaXVzID0gdGhpcy5fcmFkaXVzICogTWF0aC5tYXgoc2NhbGVYLCBzY2FsZVkpO1xyXG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICAgICAgY2FzZSBMUUNvbGxpZGVTaGFwZS5SZWN0OlxyXG4gICAgICAgICAgICAgICAgICAgIC8vIOefqeW9oueisOaSnuWMuuWfn+WwuuWvuOabtOaWsFxyXG4gICAgICAgICAgICAgICAgICAgIC8vIGNvbnNvbGUubG9nKHRoaXMuZGF0YV9zdHJpbmcpO1xyXG4gICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLl9zaXplLndpZHRoICE9PSAxMCAmJiB0aGlzLmRhdGFfc3RyaW5nIT1cIi0xXCIpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgLy8gaWYodGhpcy5fc2l6ZS53aWR0aCA9PSAxMDUgfHwgdGhpcy5fc2l6ZS5oZWlnaHQgPT0gMTA1KXt9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLl9zaXplLndpZHRoID0gdGhpcy5fc2l6ZS53aWR0aCAqIHNjYWxlWDtcclxuICAgICAgICAgICAgICAgICAgICAgICAgLy8gIGNvbnNvbGUubG9nKFwi5pS+5aSn5YCN5pWwXCIsc2NhbGVYKTtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMuX3NpemUuaGVpZ2h0IT09IDEwICYmIHRoaXMuZGF0YV9zdHJpbmchPVwiLTFcIikge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBpZih0aGlzLl9zaXplLndpZHRoID09IDEwNSB8fCB0aGlzLl9zaXplLmhlaWdodCA9PSAxMDUpe31cclxuICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuX3NpemUuaGVpZ2h0ID0gdGhpcy5fc2l6ZS5oZWlnaHQgKiBzY2FsZVk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIGNvbnNvbGUubG9nKFwi5pS+5aSn5YCN5pWwXCIsc2NhbGVZKTtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgLy8gdGhpcy5fc2l6ZS53aWR0aCA9IHRoaXMuX3NpemUud2lkdGggKiBzY2FsZVg7XHJcbiAgICAgICAgICAgICAgICAgICAgLy8gdGhpcy5fc2l6ZS5oZWlnaHQgPSB0aGlzLl9zaXplLmhlaWdodCAqIHNjYWxlWTtcclxuICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy53b3JsZF9yZWN0KSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMud29ybGRfcmVjdC53aWR0aCA9IHRoaXMuX3NpemUud2lkdGg7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMud29ybGRfcmVjdC5oZWlnaHQgPSB0aGlzLl9zaXplLmhlaWdodDtcclxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy53b3JsZF9yZWN0LmhhbGZfd2lkdGggPSB0aGlzLl9zaXplLndpZHRoICogMC41O1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLndvcmxkX3JlY3QuaGFsZl9oZWlnaHQgPSB0aGlzLl9zaXplLmhlaWdodCAqIDAuNTtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgICAgICBjYXNlIExRQ29sbGlkZVNoYXBlLlBvbHlnb246XHJcbiAgICAgICAgICAgICAgICAgICAgLy8g5aSa6L655b2i56Kw5pKe54K55Z2Q5qCH5pu05pawXHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5fcG9seWdvbl9wb2ludHMgPSB0aGlzLl9wb2x5Z29uX3BvaW50cy5tYXAocG9pbnQgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gbmV3IFZlYzIocG9pbnQueCAqIHNjYWxlWCwgcG9pbnQueSAqIHNjYWxlWSk7XHJcbiAgICAgICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgIHRoaXMuZHJhd19zaGFwZSgpO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIGVuYWJsZV9scV9jb2xsaWRlKCkge1xyXG5cclxuICAgICAgICBpZiAodGhpcy5jb2xsaWRlX3N0YXR1cyA9PT0gTFFDb2xsaWRlU3RhdHVzLkxpdmUpIHtcclxuICAgICAgICAgICAgY29uc29sZS53YXJuKHRoaXMubm9kZS5uYW1lICsgJ+mHjeWkjea3u+WKoCcpO1xyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRoaXMuaXNfZW5hYmxlID0gdHJ1ZTtcclxuICAgICAgICB0aGlzLmNvbGxpZGVfc3RhdHVzID0gTFFDb2xsaWRlU3RhdHVzLkxpdmU7XHJcbiAgICAgICAgTFFDb2xsaWRlU3lzdGVtLmFkZF9jb2xsaWRlKHRoaXMpO1xyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyBkaXNhYmxlX2xxX2NvbGxpZGUoKSB7XHJcbiAgICAgICAgaWYgKHRoaXMuY29sbGlkZV9zdGF0dXMgIT09IExRQ29sbGlkZVN0YXR1cy5MaXZlKSB7XHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcbiAgICAgICAgdGhpcy5pc19lbmFibGUgPSBmYWxzZTtcclxuICAgICAgICB0aGlzLmNvbGxpZGVfc3RhdHVzID0gTFFDb2xsaWRlU3RhdHVzLklkbGU7XHJcbiAgICAgICAgTFFDb2xsaWRlU3lzdGVtLnJlbW92ZV9jb2xsaWRlKHRoaXMpO1xyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyB1cGRhdGVfbHFfY29sbGlkZSgpIHtcclxuXHJcbiAgICB9XHJcblxyXG4gICAgLy8gQHRzLWlnbm9yZVxyXG4gICAgLy8gcHVibGljIG9uX2NvbGxpZGUoY29sbGlkZTogTFFDb2xsaWRlKTogdm9pZCB7XHJcbiAgICAvLyAgICAgaWYoY29sbGlkZS5ub2RlLnBhcmVudC51dWlkID09IHRoaXMubm9kZS5wYXJlbnQudXVpZCl7XHJcbiAgICAvLyAgICAgICAgIHJldHVybjtcclxuICAgIC8vICAgICB9XHJcbiAgICAvLyAgICAgaWYgKExRQ29sbGlkZUNvbmZpZy5zd2l0Y2hfcHJpbnRfbG9nKSB7XHJcbiAgICAvLyAgICAgICAgIGlmKHRoaXMubm9kZS5wYXJlbnQuZ2V0Q29tcG9uZW50KFwiQmxvY2tcIikpe1xyXG4gICAgLy8gICAgICAgICAgICAgbGV0IGJsb2NrID0gdGhpcy5ub2RlLnBhcmVudC5nZXRDb21wb25lbnQoXCJCbG9ja1wiKTtcclxuICAgIC8vICAgICAgICAgICAgIGlmKGJsb2NrLmlzVG91Y2gpe1xyXG4gICAgLy8gICAgICAgICAgICAgICAgIGJsb2NrLmNoZWNrQ29sbGlzaW9uID0gdHJ1ZTtcclxuICAgIC8vICAgICAgICAgICAgICAgICAvLyBjb25zb2xlLmxvZyhcIueisOaSnlwiLHRoaXMubm9kZS5uYW1lKTtcclxuICAgIC8vICAgICAgICAgICAgICAgICBpZih0aGlzLm5vZGUubmFtZSA9PSBcInRvcFwiICl7XHJcbiAgICAvLyAgICAgICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKFwi56Kw5Yiw5LiK6L6557yYXCIpO1xyXG4gICAgLy8gICAgICAgICAgICAgICAgICAgICBibG9jay5tb3ZlVXAgPSBmYWxzZTtcclxuICAgIC8vICAgICAgICAgICAgICAgICAgICAgaWYoYmxvY2sudG91Y2hQb2ludFkgPiAodGhpcy5ub2RlLnBhcmVudC55K3RoaXMubm9kZS5oZWlnaHQpKXtcclxuICAgIC8vICAgICAgICAgICAgICAgICAgICAgICAgIGJsb2NrLm1vdmVZID0gMTtcclxuICAgIC8vICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgLy8gICAgICAgICAgICAgICAgIH1cclxuICAgIC8vICAgICAgICAgICAgICAgICBpZih0aGlzLm5vZGUubmFtZSA9PT0gXCJkb3duXCIpe1xyXG4gICAgLy8gICAgICAgICAgICAgICAgICAgICBibG9jay5tb3ZlRG93biA9IGZhbHNlO1xyXG4gICAgLy8gICAgICAgICAgICAgICAgICAgICBjb25zb2xlLmxvZyhcIueisOWIsOS4i+i+uee8mFwiKTtcclxuICAgIC8vICAgICAgICAgICAgICAgICAgICAgaWYoYmxvY2sudG91Y2hQb2ludFkgPCAodGhpcy5ub2RlLnBhcmVudC55ICkpe1xyXG4gICAgLy8gICAgICAgICAgICAgICAgICAgICAgICAgYmxvY2subW92ZVkgPSAtMTtcclxuICAgIC8vICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgLy8gICAgICAgICAgICAgICAgIH1cclxuICAgIC8vICAgICAgICAgICAgICAgICBpZih0aGlzLm5vZGUubmFtZSA9PT0gXCJsZWZ0XCIgKXtcclxuICAgIC8vICAgICAgICAgICAgICAgICAgICAgYmxvY2subW92ZUxlZnQgPSBmYWxzZTtcclxuICAgIC8vICAgICAgICAgICAgICAgICAgICAgY29uc29sZS5sb2coXCLnorDliLDlt6bovrnnvJhcIik7XHJcbiAgICAvLyAgICAgICAgICAgICAgICAgICAgIGlmKGJsb2NrLnRvdWNoUG9pbnRYIDwgKHRoaXMubm9kZS5wYXJlbnQueCAtIHRoaXMubm9kZS5wYXJlbnQud2lkdGgpKXtcclxuICAgIC8vICAgICAgICAgICAgICAgICAgICAgICAgIGJsb2NrLm1vdmVYID0gLTE7XHJcbiAgICAvLyAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgIC8vICAgICAgICAgICAgICAgICB9XHJcbiAgICAvLyAgICAgICAgICAgICAgICAgaWYodGhpcy5ub2RlLm5hbWUgPT09IFwicmlnaHRcIil7XHJcblxyXG4gICAgLy8gICAgICAgICAgICAgICAgICAgICBibG9jay5tb3ZlUmlnaHQgPSBmYWxzZTtcclxuICAgIC8vICAgICAgICAgICAgICAgICAgICAgY29uc29sZS5sb2coXCLnorDliLDlj7PovrnnvJhcIik7XHJcbiAgICAvLyAgICAgICAgICAgICAgICAgICAgIGlmKGJsb2NrLnRvdWNoUG9pbnRYID4gKHRoaXMubm9kZS5wYXJlbnQueCkpe1xyXG4gICAgLy8gICAgICAgICAgICAgICAgICAgICAgICAgYmxvY2subW92ZVggPSAxO1xyXG4gICAgLy8gICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAvLyAgICAgICAgICAgICAgICAgfVxyXG4gICAgLy8gICAgICAgICAgICAgfVxyXG4gICAgLy8gICAgICAgICB9XHJcbiAgICAgICAgIFxyXG4gICAgLy8gICAgIH1cclxuICAgIC8vIH1cclxuXHJcbiAgICAvL0B0cy1pZ25vcmVcclxuICAgIHB1YmxpYyBvbl9lbnRlcihjb2xsaWRlOiBMUUNvbGxpZGUpIHtcclxuICAgICAgICBpZih0aGlzLmRpc2FibGVDb2xsaWRlcihjb2xsaWRlKSl7XHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcbiAgICAgICAgLy8gaWYgKExRQ29sbGlkZUNvbmZpZy5zd2l0Y2hfcHJpbnRfbG9nKSB7XHJcbiAgICAgICAgLy8gICAgIGNvbnNvbGUubG9nKHRoaXMubm9kZS5uYW1lICsgJyBvbl9lbnRlcicpO1xyXG4gICAgICAgIC8vIH1cclxuICAgIH1cclxuXHJcbiAgICAvL0B0cy1pZ25vcmVcclxuICAgIHB1YmxpYyBvbl9leGl0KGNvbGxpZGU6IExRQ29sbGlkZSkge1xyXG4gICAgICAgIGlmKHRoaXMuZGlzYWJsZUNvbGxpZGVyKGNvbGxpZGUpKXtcclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAoTFFDb2xsaWRlQ29uZmlnLnN3aXRjaF9wcmludF9sb2cpIHtcclxuICAgICAgICAgICAgaWYodGhpcy5ub2RlLnBhcmVudC5nZXRDb21wb25lbnQoXCJCbG9ja1wiKSl7XHJcbiAgICAgICAgICAgICAgICBsZXQgYmxvY2sgPSB0aGlzLm5vZGUucGFyZW50LmdldENvbXBvbmVudChcIkJsb2NrXCIpO1xyXG4gICAgICAgICAgICAgICAgLy8gaWYoIWJsb2NrLmlzVG91Y2gpe1xyXG4gICAgICAgICAgICAgICAgLy8gICAgIHJldHVybjtcclxuICAgICAgICAgICAgICAgIC8vIH1cclxuICAgICAgICAgICAgICAgIGJsb2NrLmNoZWNrQ29sbGlzaW9uID0gZmFsc2U7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYodGhpcy5ub2RlLm5hbWUgPT0gXCJ0b3BcIiApe1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBibG9jay5tb3ZlVXAgPSB0cnVlO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICBpZih0aGlzLm5vZGUubmFtZSA9PT0gXCJkb3duXCIpe1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBibG9jay5tb3ZlRG93biA9IHRydWU7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIGlmKHRoaXMubm9kZS5uYW1lID09PSBcImxlZnRcIiApe1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBibG9jay5tb3ZlTGVmdCA9IHRydWU7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIGlmKHRoaXMubm9kZS5uYW1lID09PSBcInJpZ2h0XCIpe1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBibG9jay5tb3ZlUmlnaHQgPSB0cnVlO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgb25fY29sbGlkZShjb2xsaWRlOiBMUUNvbGxpZGUpOiB2b2lkIHtcclxuICAgICAgICBpZih0aGlzLmRpc2FibGVDb2xsaWRlcihjb2xsaWRlKSl7XHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKExRQ29sbGlkZUNvbmZpZy5zd2l0Y2hfcHJpbnRfbG9nKSB7XHJcbiAgICAgICAgICAgIGlmKHRoaXMubm9kZS5wYXJlbnQuZ2V0Q29tcG9uZW50KFwiQmxvY2tcIikpe1xyXG4gICAgICAgICAgICAgICAgbGV0IGJsb2NrID0gdGhpcy5ub2RlLnBhcmVudC5nZXRDb21wb25lbnQoXCJCbG9ja1wiKTtcclxuICAgICAgICAgICAgICAgIGxldCBqZyA9IGZhbHNlO1xyXG4gICAgICAgICAgICAgICAgaWYoYmxvY2suaXNUb3VjaCl7XHJcbiAgICAgICAgICAgICAgICAgICAgYmxvY2suY2hlY2tDb2xsaXNpb24gPSB0cnVlO1xyXG4gICAgICAgICAgICAgICAgICAgIC8vIGNvbnNvbGUubG9nKFwi56Kw5pKeXCIsdGhpcy5ub2RlLm5hbWUpO1xyXG4gICAgICAgICAgICAgICAgICAgIGlmKHRoaXMubm9kZS5uYW1lID09IFwidG9wXCIgKXtcclxuICAgICAgICAgICAgICAgICAgICAgICAgLy8gY29uc29sZS5sb2coY29sbGlkZS5ub2RlLnBhcmVudC5uYW1lKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgYmxvY2subW92ZVVwID0gZmFsc2U7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmKGJsb2NrLnRvdWNoUG9pbnRZID4gKHRoaXMubm9kZS5wYXJlbnQueSt0aGlzLm5vZGUucGFyZW50LmhlaWdodCkpe1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYmxvY2subW92ZVkgPSAxO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIGNvbnNvbGUubG9nKFwi56Kw5Yiw5LiK6L6557yYXCIpO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICBpZih0aGlzLm5vZGUubmFtZSA9PT0gXCJkb3duXCIpe1xyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgYmxvY2subW92ZURvd24gPSBmYWxzZTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgaWYoYmxvY2sudG91Y2hQb2ludFkgPCAodGhpcy5ub2RlLnBhcmVudC55ICkpe1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYmxvY2subW92ZVkgPSAtMTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBjb25zb2xlLmxvZyhcIueisOWIsOS4i+i+uee8mFwiKTtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgaWYodGhpcy5ub2RlLm5hbWUgPT09IFwibGVmdFwiICl7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGJsb2NrLm1vdmVMZWZ0ID0gZmFsc2U7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmKGJsb2NrLnRvdWNoUG9pbnRYIDwgKHRoaXMubm9kZS5wYXJlbnQueCAtIHRoaXMubm9kZS5wYXJlbnQud2lkdGgpKXtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJsb2NrLm1vdmVYID0gLTE7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgaWYodGhpcy5ub2RlLm5hbWUgPT09IFwicmlnaHRcIil7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGJsb2NrLm1vdmVSaWdodCA9IGZhbHNlO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBpZihibG9jay50b3VjaFBvaW50WCA+ICh0aGlzLm5vZGUucGFyZW50LngpKXtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJsb2NrLm1vdmVYID0gMTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgZGlzYWJsZUNvbGxpZGVyKGNvbGxpZGU6IExRQ29sbGlkZSl7XHJcbiAgICAgICAgbGV0IGpnID0gZmFsc2U7XHJcbiAgICAgICAgaWYoY29sbGlkZS5ub2RlICYmIHRoaXMubm9kZSl7XHJcbiAgICAgICAgICAgIGlmKGNvbGxpZGUubm9kZS5wYXJlbnQgJiYgdGhpcy5ub2RlLnBhcmVudCl7XHJcbiAgICAgICAgICAgICAgICBpZihjb2xsaWRlLm5vZGUucGFyZW50LnV1aWQgPT0gdGhpcy5ub2RlLnBhcmVudC51dWlkKXtcclxuICAgICAgICAgICAgICAgICAgICBqZyA9IHRydWU7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBpZih0aGlzLm5vZGUucGFyZW50LmdldENvbXBvbmVudChcIkJsb2NrXCIpKXtcclxuICAgICAgICAgICAgICAgICAgICBsZXQgYmxvY2sgPSB0aGlzLm5vZGUucGFyZW50LmdldENvbXBvbmVudChcIkJsb2NrXCIpO1xyXG4gICAgICAgICAgICAgICAgICAgIGlmKGJsb2NrLnR5cGUgPT0gMSB8fCBibG9jay50eXBlID09IDEwIHx8IGJsb2NrLnR5cGUgPT0gOSl7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmKGNvbGxpZGUubm9kZS5wYXJlbnQgPT0gYmxvY2suYmxvY2tfSW5mby5ub2RlKXtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGpnID0gdHJ1ZTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuXHJcblxyXG4gICAgICAgIHJldHVybiBqZztcclxuICAgIH1cclxufSJdfQ== -//------QC-SOURCE-SPLIT------ - - (function() { - var nodeEnv = typeof require !== 'undefined' && typeof process !== 'undefined'; - var __module = nodeEnv ? module : {exports:{}}; - var __filename = 'preview-scripts/assets/Script/lq_base/data/lq_data.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, 'a54702UNV9NA7pYgQd6eA5/', 'lq_data'); -// Script/lq_base/data/lq_data.ts - -"use strict"; -Object.defineProperty(exports, "__esModule", { value: true }); -exports.LQPlatformData = exports.LQShareData = exports.LQNativeComponent = exports.LQRect = void 0; -var Vec2 = cc.Vec2; -var Rect = cc.Rect; -var LQRect = /** @class */ (function () { - function LQRect(x, y, width, height) { - this.x = x; - this.y = y; - this.width = width; - this.height = height; - this.half_width = width * 0.5; - this.half_height = height * 0.5; - } - LQRect.prototype.top_left = function () { - return new Vec2(this.x - this.half_width, this.y + this.half_height); - }; - LQRect.prototype.top_right = function () { - return new Vec2(this.x + this.half_width, this.y + this.half_height); - }; - LQRect.prototype.bottom_left = function () { - return new Vec2(this.x - this.half_width, this.y - this.half_height); - }; - LQRect.prototype.bottom_right = function () { - return new Vec2(this.x + this.half_width, this.y - this.half_height); - }; - LQRect.prototype.pos = function () { - return new Vec2(this.x, this.y); - }; - LQRect.prototype.sub = function (pos) { - return new Vec2(pos.x - this.x, pos.y - this.y); - }; - LQRect.prototype.add = function (pos) { - return new Vec2(pos.x + this.x, pos.y + this.y); - }; - LQRect.prototype.to_cocos_rect = function () { - return new Rect(this.x - this.half_width, this.y - this.half_height, this.width, this.height); - }; - return LQRect; -}()); -exports.LQRect = LQRect; -var LQNativeComponent = /** @class */ (function () { - function LQNativeComponent() { - this.node_btn_arr = []; - } - return LQNativeComponent; -}()); -exports.LQNativeComponent = LQNativeComponent; -var LQShareData = /** @class */ (function () { - function LQShareData(obj) { - if (obj.title) { - this.title = obj.title; - } - if (obj.remote_url) { - this.remote_url = obj.remote_url; - } - if (obj.url_id) { - this.url_id = obj.url_id; - } - if (obj.query) { - this.query = obj.query; - } - if (obj.content) { - this.content = obj.content; - } - if (obj.extra) { - this.extra = obj.extra; - } - if (obj.type) { - this.type = obj.type; - } - } - return LQShareData; -}()); -exports.LQShareData = LQShareData; -var LQPlatformData = /** @class */ (function () { - function LQPlatformData() { - } - return LQPlatformData; -}()); -exports.LQPlatformData = LQPlatformData; - -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,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImFzc2V0c1xcU2NyaXB0XFxscV9iYXNlXFxkYXRhXFxscV9kYXRhLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUNBLElBQU8sSUFBSSxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUM7QUFDdEIsSUFBTyxJQUFJLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQztBQUt0QjtJQVFJLGdCQUFZLENBQVMsRUFBRSxDQUFTLEVBQUUsS0FBYSxFQUFFLE1BQWM7UUFDM0QsSUFBSSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDWCxJQUFJLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUNYLElBQUksQ0FBQyxLQUFLLEdBQUcsS0FBSyxDQUFDO1FBQ25CLElBQUksQ0FBQyxNQUFNLEdBQUcsTUFBTSxDQUFDO1FBQ3JCLElBQUksQ0FBQyxVQUFVLEdBQUcsS0FBSyxHQUFHLEdBQUcsQ0FBQztRQUM5QixJQUFJLENBQUMsV0FBVyxHQUFHLE1BQU0sR0FBRyxHQUFHLENBQUM7SUFDcEMsQ0FBQztJQUVNLHlCQUFRLEdBQWY7UUFDSSxPQUFPLElBQUksSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDLFVBQVUsRUFBRSxJQUFJLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQztJQUN6RSxDQUFDO0lBRU0sMEJBQVMsR0FBaEI7UUFDSSxPQUFPLElBQUksSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDLFVBQVUsRUFBRSxJQUFJLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQztJQUN6RSxDQUFDO0lBRU0sNEJBQVcsR0FBbEI7UUFDSSxPQUFPLElBQUksSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDLFVBQVUsRUFBRSxJQUFJLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQztJQUN6RSxDQUFDO0lBRU0sNkJBQVksR0FBbkI7UUFDSSxPQUFPLElBQUksSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDLFVBQVUsRUFBRSxJQUFJLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQztJQUN6RSxDQUFDO0lBRU0sb0JBQUcsR0FBVjtRQUNJLE9BQU8sSUFBSSxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsRUFBRSxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDcEMsQ0FBQztJQUVNLG9CQUFHLEdBQVYsVUFBVyxHQUFTO1FBQ2hCLE9BQU8sSUFBSSxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUMsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ3BELENBQUM7SUFFTSxvQkFBRyxHQUFWLFVBQVcsR0FBUztRQUNoQixPQUFPLElBQUksSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDLENBQUMsRUFBRSxHQUFHLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUNwRCxDQUFDO0lBRU0sOEJBQWEsR0FBcEI7UUFDSSxPQUFPLElBQUksSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDLFVBQVUsRUFBRSxJQUFJLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQyxXQUFXLEVBQUUsSUFBSSxDQUFDLEtBQUssRUFBRSxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDbEcsQ0FBQztJQUNMLGFBQUM7QUFBRCxDQWhEQSxBQWdEQyxJQUFBO0FBaERZLHdCQUFNO0FBa0RuQjtJQUFBO1FBQ1csaUJBQVksR0FBVyxFQUFFLENBQUM7SUFNckMsQ0FBQztJQUFELHdCQUFDO0FBQUQsQ0FQQSxBQU9DLElBQUE7QUFQWSw4Q0FBaUI7QUFTOUI7SUFTSSxxQkFBWSxHQUE0SDtRQUNwSSxJQUFJLEdBQUcsQ0FBQyxLQUFLLEVBQUU7WUFDWCxJQUFJLENBQUMsS0FBSyxHQUFHLEdBQUcsQ0FBQyxLQUFLLENBQUM7U0FDMUI7UUFDRCxJQUFJLEdBQUcsQ0FBQyxVQUFVLEVBQUU7WUFDaEIsSUFBSSxDQUFDLFVBQVUsR0FBRyxHQUFHLENBQUMsVUFBVSxDQUFDO1NBQ3BDO1FBQ0QsSUFBSSxHQUFHLENBQUMsTUFBTSxFQUFFO1lBQ1osSUFBSSxDQUFDLE1BQU0sR0FBRyxHQUFHLENBQUMsTUFBTSxDQUFDO1NBQzVCO1FBQ0QsSUFBSSxHQUFHLENBQUMsS0FBSyxFQUFFO1lBQ1gsSUFBSSxDQUFDLEtBQUssR0FBRyxHQUFHLENBQUMsS0FBSyxDQUFDO1NBQzFCO1FBQ0QsSUFBSSxHQUFHLENBQUMsT0FBTyxFQUFFO1lBQ2IsSUFBSSxDQUFDLE9BQU8sR0FBRyxHQUFHLENBQUMsT0FBTyxDQUFDO1NBQzlCO1FBQ0QsSUFBSSxHQUFHLENBQUMsS0FBSyxFQUFFO1lBQ1gsSUFBSSxDQUFDLEtBQUssR0FBRyxHQUFHLENBQUMsS0FBSyxDQUFDO1NBQzFCO1FBQ0QsSUFBSSxHQUFHLENBQUMsSUFBSSxFQUFFO1lBQ1YsSUFBSSxDQUFDLElBQUksR0FBRyxHQUFHLENBQUMsSUFBSSxDQUFDO1NBQ3hCO0lBQ0wsQ0FBQztJQUNMLGtCQUFDO0FBQUQsQ0FoQ0EsQUFnQ0MsSUFBQTtBQWhDWSxrQ0FBVztBQWtDeEI7SUFBQTtJQWlCQSxDQUFDO0lBQUQscUJBQUM7QUFBRCxDQWpCQSxBQWlCQyxJQUFBO0FBakJZLHdDQUFjIiwiZmlsZSI6IiIsInNvdXJjZVJvb3QiOiIvIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtJUG9zLCBJUmVjdH0gZnJvbSBcIi4vbHFfaW50ZXJmYWNlXCI7XHJcbmltcG9ydCBWZWMyID0gY2MuVmVjMjtcclxuaW1wb3J0IFJlY3QgPSBjYy5SZWN0O1xyXG5pbXBvcnQgU3ByaXRlID0gY2MuU3ByaXRlO1xyXG5pbXBvcnQgTGFiZWwgPSBjYy5MYWJlbDtcclxuaW1wb3J0IE5vZGUgPSBjYy5Ob2RlO1xyXG5cclxuZXhwb3J0IGNsYXNzIExRUmVjdCBpbXBsZW1lbnRzIElSZWN0IHtcclxuICAgIHB1YmxpYyB4OiBudW1iZXI7XHJcbiAgICBwdWJsaWMgeTogbnVtYmVyO1xyXG4gICAgcHVibGljIHdpZHRoOiBudW1iZXI7XHJcbiAgICBwdWJsaWMgaGVpZ2h0OiBudW1iZXI7XHJcbiAgICBwdWJsaWMgaGFsZl93aWR0aDogbnVtYmVyO1xyXG4gICAgcHVibGljIGhhbGZfaGVpZ2h0OiBudW1iZXI7XHJcblxyXG4gICAgY29uc3RydWN0b3IoeDogbnVtYmVyLCB5OiBudW1iZXIsIHdpZHRoOiBudW1iZXIsIGhlaWdodDogbnVtYmVyKSB7XHJcbiAgICAgICAgdGhpcy54ID0geDtcclxuICAgICAgICB0aGlzLnkgPSB5O1xyXG4gICAgICAgIHRoaXMud2lkdGggPSB3aWR0aDtcclxuICAgICAgICB0aGlzLmhlaWdodCA9IGhlaWdodDtcclxuICAgICAgICB0aGlzLmhhbGZfd2lkdGggPSB3aWR0aCAqIDAuNTtcclxuICAgICAgICB0aGlzLmhhbGZfaGVpZ2h0ID0gaGVpZ2h0ICogMC41O1xyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyB0b3BfbGVmdCgpOiBWZWMyIHtcclxuICAgICAgICByZXR1cm4gbmV3IFZlYzIodGhpcy54IC0gdGhpcy5oYWxmX3dpZHRoLCB0aGlzLnkgKyB0aGlzLmhhbGZfaGVpZ2h0KTtcclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgdG9wX3JpZ2h0KCk6IFZlYzIge1xyXG4gICAgICAgIHJldHVybiBuZXcgVmVjMih0aGlzLnggKyB0aGlzLmhhbGZfd2lkdGgsIHRoaXMueSArIHRoaXMuaGFsZl9oZWlnaHQpO1xyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyBib3R0b21fbGVmdCgpOiBWZWMyIHtcclxuICAgICAgICByZXR1cm4gbmV3IFZlYzIodGhpcy54IC0gdGhpcy5oYWxmX3dpZHRoLCB0aGlzLnkgLSB0aGlzLmhhbGZfaGVpZ2h0KTtcclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgYm90dG9tX3JpZ2h0KCk6IFZlYzIge1xyXG4gICAgICAgIHJldHVybiBuZXcgVmVjMih0aGlzLnggKyB0aGlzLmhhbGZfd2lkdGgsIHRoaXMueSAtIHRoaXMuaGFsZl9oZWlnaHQpO1xyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyBwb3MoKTogY2MuVmVjMiB7XHJcbiAgICAgICAgcmV0dXJuIG5ldyBWZWMyKHRoaXMueCwgdGhpcy55KTtcclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgc3ViKHBvczogSVBvcyk6IFZlYzIge1xyXG4gICAgICAgIHJldHVybiBuZXcgVmVjMihwb3MueCAtIHRoaXMueCwgcG9zLnkgLSB0aGlzLnkpO1xyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyBhZGQocG9zOiBJUG9zKTogVmVjMiB7XHJcbiAgICAgICAgcmV0dXJuIG5ldyBWZWMyKHBvcy54ICsgdGhpcy54LCBwb3MueSArIHRoaXMueSk7XHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIHRvX2NvY29zX3JlY3QoKSB7XHJcbiAgICAgICAgcmV0dXJuIG5ldyBSZWN0KHRoaXMueCAtIHRoaXMuaGFsZl93aWR0aCwgdGhpcy55IC0gdGhpcy5oYWxmX2hlaWdodCwgdGhpcy53aWR0aCwgdGhpcy5oZWlnaHQpO1xyXG4gICAgfVxyXG59XHJcblxyXG5leHBvcnQgY2xhc3MgTFFOYXRpdmVDb21wb25lbnQge1xyXG4gICAgcHVibGljIG5vZGVfYnRuX2FycjogTm9kZVtdID0gW107XHJcbiAgICBwdWJsaWMgc3ByaXRlX2xvZ28hOiBTcHJpdGU7XHJcbiAgICBwdWJsaWMgc3ByaXRlX2ltZyE6IFNwcml0ZTtcclxuICAgIHB1YmxpYyBzcHJpdGVfYWRfdGlwITogU3ByaXRlO1xyXG4gICAgcHVibGljIGxhYmVsX3RpdGxlITogTGFiZWw7XHJcbiAgICBwdWJsaWMgbGFiZWxfZGVzYyE6IExhYmVsO1xyXG59XHJcblxyXG5leHBvcnQgY2xhc3MgTFFTaGFyZURhdGEge1xyXG4gICAgcHVibGljIHRpdGxlITogc3RyaW5nO1xyXG4gICAgcHVibGljIHJlbW90ZV91cmwhOiBzdHJpbmc7XHJcbiAgICBwdWJsaWMgdXJsX2lkITogc3RyaW5nO1xyXG4gICAgcHVibGljIHF1ZXJ5ITogc3RyaW5nO1xyXG4gICAgcHVibGljIGNvbnRlbnQhOiBzdHJpbmc7XHJcbiAgICBwdWJsaWMgZXh0cmEhOiBhbnk7XHJcbiAgICBwdWJsaWMgdHlwZSE6IHN0cmluZztcclxuXHJcbiAgICBjb25zdHJ1Y3RvcihvYmo/OiB7IHRpdGxlPzogc3RyaW5nLCByZW1vdGVfdXJsPzogc3RyaW5nLCB1cmxfaWQ/OiBzdHJpbmcsIHF1ZXJ5Pzogc3RyaW5nLCBjb250ZW50Pzogc3RyaW5nLCBleHRyYT86IGFueSwgdHlwZT86IHN0cmluZyB9KSB7XHJcbiAgICAgICAgaWYgKG9iai50aXRsZSkge1xyXG4gICAgICAgICAgICB0aGlzLnRpdGxlID0gb2JqLnRpdGxlO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAob2JqLnJlbW90ZV91cmwpIHtcclxuICAgICAgICAgICAgdGhpcy5yZW1vdGVfdXJsID0gb2JqLnJlbW90ZV91cmw7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmIChvYmoudXJsX2lkKSB7XHJcbiAgICAgICAgICAgIHRoaXMudXJsX2lkID0gb2JqLnVybF9pZDtcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKG9iai5xdWVyeSkge1xyXG4gICAgICAgICAgICB0aGlzLnF1ZXJ5ID0gb2JqLnF1ZXJ5O1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAob2JqLmNvbnRlbnQpIHtcclxuICAgICAgICAgICAgdGhpcy5jb250ZW50ID0gb2JqLmNvbnRlbnQ7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmIChvYmouZXh0cmEpIHtcclxuICAgICAgICAgICAgdGhpcy5leHRyYSA9IG9iai5leHRyYTtcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKG9iai50eXBlKSB7XHJcbiAgICAgICAgICAgIHRoaXMudHlwZSA9IG9iai50eXBlO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxufVxyXG5cclxuZXhwb3J0IGNsYXNzIExRUGxhdGZvcm1EYXRhIHtcclxuICAgIHB1YmxpYyBhcHBfaWQhOiBzdHJpbmc7XHJcbiAgICBwdWJsaWMgcHJpbnRfbG9nITogYm9vbGVhbjtcclxuICAgIHB1YmxpYyBzaG93X3NoYXJlX21lbnUhOiBib29sZWFuO1xyXG4gICAgcHVibGljIGtlZXBfc2NyZWVuX29uITogYm9vbGVhbjtcclxuICAgIHB1YmxpYyBiYW5uZXJfaWQhOiBzdHJpbmc7XHJcbiAgICBwdWJsaWMgYmFubmVyX3dpZHRoITogbnVtYmVyO1xyXG4gICAgcHVibGljIGludGVyc3RpdGlhbF9pZCE6IHN0cmluZztcclxuICAgIHB1YmxpYyBuYXRpdmVfaWQhOiBzdHJpbmc7XHJcbiAgICBwdWJsaWMgdmlkZW9faWQhOiBzdHJpbmc7XHJcbiAgICBwdWJsaWMgaXNfdmlkZW9fZnJlZSE6IGJvb2xlYW47XHJcbiAgICBwdWJsaWMgaXNfY2FjaGVfdmlkZW8hOiBib29sZWFuO1xyXG4gICAgcHVibGljIGFkX3R5cGUhOiBzdHJpbmc7XHJcbiAgICBwdWJsaWMgYWRfaWQhOiBzdHJpbmc7XHJcbiAgICBwdWJsaWMgYWRfa2V5ITogc3RyaW5nO1xyXG4gICAgcHVibGljIHN3aXRjaF9hZCE6IGJvb2xlYW47XHJcbiAgICBwdWJsaWMgc2hhcmVfZGF0YV9hcnIhOiBMUVNoYXJlRGF0YVtdO1xyXG59Il19 //------QC-SOURCE-SPLIT------ (function() { @@ -22389,146 +12118,146 @@ cc._RF.pop(); cc._RF.push(module, '63c53CB9dhL/phFOPtTeuF7', 'lq_game_util'); // Script/lq_base/util/lq_game_util.ts -"use strict"; -Object.defineProperty(exports, "__esModule", { value: true }); -exports.LQGameUtil = void 0; -var director = cc.director; -var tween = cc.tween; -var visibleRect = cc.visibleRect; -var find = cc.find; -var LQGameUtil = /** @class */ (function () { - function LQGameUtil() { - } - LQGameUtil.get_image = function (url, callback, cache) { - if (cache === void 0) { cache = true; } - if (!url || url === '') { - callback(false, undefined); - return; - } - if (this.image_cache[url]) { - callback(true, this.image_cache[url]); - return; - } - // cc.loader.load( - // {url: url, type: 'png'}, - // (err: string, texture: Texture2D | undefined) => { - // if (err) { - // // console.error('err:' + err); - // callback(false, undefined); - // return; - // } - // const frame = new SpriteFrame(texture); - // callback(true, frame); - // if (cache) { - // this.image_cache[url] = frame; - // } - // }); - }; - LQGameUtil.canvas_policy = function (c, width, height) { - // @ts-ignore - var ratio = visibleRect.height / visibleRect.width; - if (ratio > height / width) { - c.fitHeight = false; - c.fitWidth = true; - } - else { - c.fitHeight = true; - c.fitWidth = false; - } - return c.fitHeight; - }; - LQGameUtil.recursion_node_property = function (node, p) { - if (node.parent) { - // @ts-ignore - p.value *= node.parent[p.key]; - this.recursion_node_property(node.parent, p); - } - }; - /** - * - * @param path - * eg.'Canvas>node_main>btn_start' - */ - LQGameUtil.find_node = function (path) { - if (!path || path.length <= 0) { - console.warn('路径不正确'); - return undefined; - } - var arr = path.split('/'); - var root = find(arr[0]); - if (!root) { - console.warn('没找到节点:' + arr[0]); - return undefined; - } - var node = root; - for (var i = 1; i < arr.length; i++) { - var temp = node.getChildByName(arr[i]); - if (!temp) { - console.warn('没找到节点:' + arr[i]); - return undefined; - } - node = temp; - } - return node; - }; - LQGameUtil.wait = function (time) { - return new Promise(function (resolve) { - tween(director.getScene()).delay(time).call(function () { - resolve(); - }).start(); - }); - }; - LQGameUtil.set_clip = function (clip, off, flip_x, flip_y) { - var s = function (arr) { - for (var i = 0; i < arr.length; i++) { - if (i % 2 === 0) { - if (flip_x) { - arr[i] = -arr[i]; - } - arr[i] += off.x; - } - else { - if (flip_y) { - arr[i] = -arr[i]; - } - arr[i] += off.y; - } - } - }; - var pos_arr = clip.curveData.props.position; - for (var i = 0; i < pos_arr.length; i++) { - var motionPath = pos_arr[i].motionPath; - var value = pos_arr[i].value; - if (motionPath) { - for (var i_1 = 0; i_1 < motionPath.length; i_1++) { - s(motionPath[i_1]); - } - } - s(value); - } - }; - LQGameUtil.scroll_layout = function (layout, speed) { - if (speed === void 0) { speed = 50; } - layout.updateLayout(); - var len = layout.type === cc.Layout.Type.HORIZONTAL ? layout.node.width : layout.node.height; - var time = len / speed; - if (layout.type === cc.Layout.Type.HORIZONTAL) { - var offset_1 = layout.node.anchorX === 1 ? layout.node.width * 0.5 : -layout.node.width * 0.5; - layout.node.runAction(cc.repeatForever(cc.sequence(cc.moveBy(time, cc.v2(offset_1, 0)), cc.callFunc(function () { - layout.node.x -= offset_1; - })))); - } - else if (layout.type === cc.Layout.Type.VERTICAL || layout.type === cc.Layout.Type.GRID) { - var offset_2 = layout.node.anchorY === 1 ? layout.node.height * 0.5 : -layout.node.height * 0.5; - layout.node.runAction(cc.repeatForever(cc.sequence(cc.moveBy(time, cc.v2(0, offset_2)), cc.callFunc(function () { - layout.node.y -= offset_2; - })))); - } - }; - LQGameUtil.image_cache = {}; - return LQGameUtil; -}()); -exports.LQGameUtil = LQGameUtil; +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.LQGameUtil = void 0; +var director = cc.director; +var tween = cc.tween; +var visibleRect = cc.visibleRect; +var find = cc.find; +var LQGameUtil = /** @class */ (function () { + function LQGameUtil() { + } + LQGameUtil.get_image = function (url, callback, cache) { + if (cache === void 0) { cache = true; } + if (!url || url === '') { + callback(false, undefined); + return; + } + if (this.image_cache[url]) { + callback(true, this.image_cache[url]); + return; + } + // cc.loader.load( + // {url: url, type: 'png'}, + // (err: string, texture: Texture2D | undefined) => { + // if (err) { + // // console.error('err:' + err); + // callback(false, undefined); + // return; + // } + // const frame = new SpriteFrame(texture); + // callback(true, frame); + // if (cache) { + // this.image_cache[url] = frame; + // } + // }); + }; + LQGameUtil.canvas_policy = function (c, width, height) { + // @ts-ignore + var ratio = visibleRect.height / visibleRect.width; + if (ratio > height / width) { + c.fitHeight = false; + c.fitWidth = true; + } + else { + c.fitHeight = true; + c.fitWidth = false; + } + return c.fitHeight; + }; + LQGameUtil.recursion_node_property = function (node, p) { + if (node.parent) { + // @ts-ignore + p.value *= node.parent[p.key]; + this.recursion_node_property(node.parent, p); + } + }; + /** + * + * @param path + * eg.'Canvas>node_main>btn_start' + */ + LQGameUtil.find_node = function (path) { + if (!path || path.length <= 0) { + console.warn('路径不正确'); + return undefined; + } + var arr = path.split('/'); + var root = find(arr[0]); + if (!root) { + console.warn('没找到节点:' + arr[0]); + return undefined; + } + var node = root; + for (var i = 1; i < arr.length; i++) { + var temp = node.getChildByName(arr[i]); + if (!temp) { + console.warn('没找到节点:' + arr[i]); + return undefined; + } + node = temp; + } + return node; + }; + LQGameUtil.wait = function (time) { + return new Promise(function (resolve) { + tween(director.getScene()).delay(time).call(function () { + resolve(); + }).start(); + }); + }; + LQGameUtil.set_clip = function (clip, off, flip_x, flip_y) { + var s = function (arr) { + for (var i = 0; i < arr.length; i++) { + if (i % 2 === 0) { + if (flip_x) { + arr[i] = -arr[i]; + } + arr[i] += off.x; + } + else { + if (flip_y) { + arr[i] = -arr[i]; + } + arr[i] += off.y; + } + } + }; + var pos_arr = clip.curveData.props.position; + for (var i = 0; i < pos_arr.length; i++) { + var motionPath = pos_arr[i].motionPath; + var value = pos_arr[i].value; + if (motionPath) { + for (var i_1 = 0; i_1 < motionPath.length; i_1++) { + s(motionPath[i_1]); + } + } + s(value); + } + }; + LQGameUtil.scroll_layout = function (layout, speed) { + if (speed === void 0) { speed = 50; } + layout.updateLayout(); + var len = layout.type === cc.Layout.Type.HORIZONTAL ? layout.node.width : layout.node.height; + var time = len / speed; + if (layout.type === cc.Layout.Type.HORIZONTAL) { + var offset_1 = layout.node.anchorX === 1 ? layout.node.width * 0.5 : -layout.node.width * 0.5; + layout.node.runAction(cc.repeatForever(cc.sequence(cc.moveBy(time, cc.v2(offset_1, 0)), cc.callFunc(function () { + layout.node.x -= offset_1; + })))); + } + else if (layout.type === cc.Layout.Type.VERTICAL || layout.type === cc.Layout.Type.GRID) { + var offset_2 = layout.node.anchorY === 1 ? layout.node.height * 0.5 : -layout.node.height * 0.5; + layout.node.runAction(cc.repeatForever(cc.sequence(cc.moveBy(time, cc.v2(0, offset_2)), cc.callFunc(function () { + layout.node.y -= offset_2; + })))); + } + }; + LQGameUtil.image_cache = {}; + return LQGameUtil; +}()); +exports.LQGameUtil = LQGameUtil; cc._RF.pop(); } @@ -22547,139 +12276,37 @@ cc._RF.pop(); (function() { var nodeEnv = typeof require !== 'undefined' && typeof process !== 'undefined'; var __module = nodeEnv ? module : {exports:{}}; - var __filename = 'preview-scripts/assets/Script/lq_base/util/lq_pool_util.js'; + var __filename = 'preview-scripts/assets/migration/use_v2.1-2.2.1_cc.Toggle_event_1.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, '984882e2dpD17LvCQnTDykE', 'lq_pool_util'); -// Script/lq_base/util/lq_pool_util.ts - -"use strict"; -Object.defineProperty(exports, "__esModule", { value: true }); -exports.LQPoolUtil = void 0; -var Animation = cc.Animation; -var ParticleSystem = cc.ParticleSystem; -var instantiate = cc.instantiate; -var LQPoolUtil = /** @class */ (function () { - function LQPoolUtil() { - } - LQPoolUtil.reset_ani = function (node) { - var ani = node.getComponent(Animation); - if (ani) { - var clip = ani.currentClip ? ani.currentClip : ani.defaultClip; - if (!clip) { - return; - } - if (ani.playOnLoad && clip && clip.wrapMode === cc.WrapMode.Normal) { - ani.play(clip.name); - } - } - else { - var ani_1 = node.getComponent(sp.Skeleton); - if (ani_1 && !ani_1.loop) { - ani_1.setAnimation(0, ani_1.animation, false); - } - } - for (var i = 0; i < node.childrenCount; i++) { - var child = node.children[i]; - this.reset_ani(child); - } - }; - LQPoolUtil.recursion_stop_particle = function (node, obj) { - var p = node.getComponent(ParticleSystem); - if (p) { - p.stopSystem(); - obj.has = true; - p.node.opacity = 0; - } - for (var i = 0; i < node.childrenCount; i++) { - var child = node.children[i]; - this.recursion_stop_particle(child, obj); - } - }; - LQPoolUtil.recursion_reset_particle = function (node) { - if (!node.isValid) { - return; - } - var p = node.getComponent(ParticleSystem); - if (p) { - p.resetSystem(); - p.node.opacity = 255; - } - for (var i = 0; i < node.childrenCount; i++) { - var child = node.children[i]; - this.recursion_reset_particle(child); - } - }; - LQPoolUtil.get_node_from_pool = function (node_parent, prefab) { - var arr = this.any_pool[prefab.uuid]; - if (!arr) { - this.any_pool[prefab.uuid] = []; - arr = []; - } - var node = arr.pop(); - if (!node || !node.isValid) { - node = instantiate(prefab); - //@ts-ignore - node.recovery_uuid = prefab.uuid; - //@ts-ignore - node.is_from_pool = false; - node_parent.addChild(node); - } - else { - node.active = true; - //@ts-ignore - node.is_from_pool = true; - this.reset_ani(node); - } - return node; - }; - LQPoolUtil.check_pool_push = function (arr, node) { - for (var i = 0; i < arr.length; i++) { - if (arr[i] === node) { - //@ts-ignore - console.warn("\u6C60\u5B50\u4E0D\u80FD\u91CD\u590D\u6DFB\u52A0\u8282\u70B9", node.name, node.recovery_uuid); - return; - } - } - node.active = false; - arr.push(node); - }; - LQPoolUtil.push_node_to_pool = function (node) { - var _this = this; - //@ts-ignore - if (!node.recovery_uuid || !this.any_pool[node.recovery_uuid]) { - if (node.isValid) { - node.destroy(); - } - return; - } - var obj = { has: false }; - this.recursion_stop_particle(node, obj); - if (obj.has) { - var old_opacity_1 = node.opacity; - node.opacity = 0; - setTimeout(function () { - _this.recursion_reset_particle(node); - node.opacity = old_opacity_1; - //@ts-ignore - _this.check_pool_push(_this.any_pool[node.recovery_uuid], node); - }, 500); - } - else { - //@ts-ignore - this.check_pool_push(this.any_pool[node.recovery_uuid], node); - } - }; - LQPoolUtil.any_pool = {}; - return LQPoolUtil; -}()); -exports.LQPoolUtil = LQPoolUtil; - + if (!nodeEnv) {__quick_compile_project__.registerModule(__filename, module);}"use strict"; +cc._RF.push(module, 'c9ad1iUTB1PyqJ3cmtMGJ31', 'use_v2.1-2.2.1_cc.Toggle_event_1'); +// migration/use_v2.1-2.2.1_cc.Toggle_event_1.js + +"use strict"; + +/* + * This script is automatically generated by Cocos Creator and is only used for projects compatible with the v2.1.0 ~ 2.2.1 version. + * You do not need to manually add this script in any other project. + * If you don't use cc.Toggle in your project, you can delete this script directly. + * If your project is hosted in VCS such as git, submit this script together. + * + * 此脚本由 Cocos Creator 自动生成,仅用于兼容 v2.1.0 ~ 2.2.1 版本的工程, + * 你无需在任何其它项目中手动添加此脚本。 + * 如果你的项目中没用到 Toggle,可直接删除该脚本。 + * 如果你的项目有托管于 git 等版本库,请将此脚本一并上传。 + */ + +if (cc.Toggle) { + // Whether to trigger 'toggle' and 'checkEvents' events when modifying 'toggle.isChecked' in the code + // 在代码中修改 'toggle.isChecked' 时是否触发 'toggle' 与 'checkEvents' 事件 + cc.Toggle._triggerEventInScript_isChecked = true; +} + cc._RF.pop(); } if (nodeEnv) { @@ -22691,13 +12318,13 @@ cc._RF.pop(); }); } })(); -//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImFzc2V0c1xcU2NyaXB0XFxscV9iYXNlXFx1dGlsXFxscV9wb29sX3V0aWwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQ0EsSUFBTyxTQUFTLEdBQUcsRUFBRSxDQUFDLFNBQVMsQ0FBQztBQUNoQyxJQUFPLGNBQWMsR0FBRyxFQUFFLENBQUMsY0FBYyxDQUFDO0FBQzFDLElBQU8sV0FBVyxHQUFHLEVBQUUsQ0FBQyxXQUFXLENBQUM7QUFFcEM7SUFBQTtJQWdIQSxDQUFDO0lBN0drQixvQkFBUyxHQUF4QixVQUF5QixJQUFVO1FBQy9CLElBQUksR0FBRyxHQUFHLElBQUksQ0FBQyxZQUFZLENBQUMsU0FBUyxDQUFDLENBQUM7UUFDdkMsSUFBSSxHQUFHLEVBQUU7WUFDTCxJQUFJLElBQUksR0FBRyxHQUFHLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsV0FBVyxDQUFDO1lBQy9ELElBQUksQ0FBQyxJQUFJLEVBQUU7Z0JBQ1AsT0FBTzthQUNWO1lBQ0QsSUFBSSxHQUFHLENBQUMsVUFBVSxJQUFJLElBQUksSUFBSSxJQUFJLENBQUMsUUFBUSxLQUFLLEVBQUUsQ0FBQyxRQUFRLENBQUMsTUFBTSxFQUFFO2dCQUNoRSxHQUFHLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQzthQUN2QjtTQUNKO2FBQU07WUFDSCxJQUFJLEtBQUcsR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDLEVBQUUsQ0FBQyxRQUFRLENBQUMsQ0FBQztZQUN6QyxJQUFJLEtBQUcsSUFBSSxDQUFDLEtBQUcsQ0FBQyxJQUFJLEVBQUU7Z0JBQ2xCLEtBQUcsQ0FBQyxZQUFZLENBQUMsQ0FBQyxFQUFFLEtBQUcsQ0FBQyxTQUFTLEVBQUUsS0FBSyxDQUFDLENBQUM7YUFDN0M7U0FDSjtRQUNELEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMs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QyxFQUFFLEdBQUcsQ0FBQyxDQUFDO1NBQ1g7YUFBTTtZQUNILFlBQVk7WUFDWixJQUFJLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxFQUFFLElBQUksQ0FBQyxDQUFDO1NBQ2pFO0lBQ0wsQ0FBQztJQTlHYyxtQkFBUSxHQUE4QixFQUFFLENBQUM7SUErRzVELGlCQUFDO0NBaEhELEFBZ0hDLElBQUE7QUFoSFksZ0NBQVUiLCJmaWxlIjoiIiwic291cmNlUm9vdCI6Ii8iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgTm9kZSA9IGNjLk5vZGU7XHJcbmltcG9ydCBBbmltYXRpb24gPSBjYy5BbmltYXRpb247XHJcbmltcG9ydCBQYXJ0aWNsZVN5c3RlbSA9IGNjLlBhcnRpY2xlU3lzdGVtO1xyXG5pbXBvcnQgaW5zdGFudGlhdGUgPSBjYy5pbnN0YW50aWF0ZTtcclxuXHJcbmV4cG9ydCBjbGFzcyBMUVBvb2xVdGlsIHtcclxuICAgIHByaXZhdGUgc3RhdGljIGFueV9wb29sOiB7IFtrZXk6IHN0cmluZ106IE5vZGVbXSB9ID0ge307XHJcblxyXG4gICAgcHJpdmF0ZSBzdGF0aWMgcmVzZXRfYW5pKG5vZGU6IE5vZGUpIHtcclxuICAgICAgICBsZXQgYW5pID0gbm9kZS5nZXRDb21wb25lbnQoQW5pbWF0aW9uKTtcclxuICAgICAgICBpZiAoYW5pKSB7XHJcbiAgICAgICAgICAgIGxldCBjbGlwID0gYW5pLmN1cnJlbnRDbGlwID8gYW5pLmN1cnJlbnRDbGlwIDogYW5pLmRlZmF1bHRDbGlwO1xyXG4gICAgICAgICAgICBpZiAoIWNsaXApIHtcclxuICAgICAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBpZiAoYW5pLnBsYXlPbkxvYWQgJiYgY2xpcCAmJiBjbGlwLndyYXBNb2RlID09PSBjYy5XcmFwTW9kZS5Ob3JtYWwpIHtcclxuICAgICAgICAgICAgICAgIGFuaS5wbGF5KGNsaXAubmFtZSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICBsZXQgYW5pID0gbm9kZS5nZXRDb21wb25lbnQoc3AuU2tlbGV0b24pO1xyXG4gICAgICAgICAgICBpZiAoYW5pICYmICFhbmkubG9vcCkge1xyXG4gICAgICAgICAgICAgICAgYW5pLnNldEFuaW1hdGlvbigwLCBhbmkuYW5pbWF0aW9uLCBmYWxzZSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBub2RlLmNoaWxkcmVuQ291bnQ7IGkrKykge1xyXG4gICAgICAgICAgICBjb25zdCBjaGlsZCA9IG5vZGUuY2hpbGRyZW5baV07XHJcbiAgICAgICAgICAgIHRoaXMucmVzZXRfYW5pKGNoaWxkKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIHN0YXRpYyByZWN1cnNpb25fc3RvcF9wYXJ0aWNsZShub2RlOiBOb2RlLCBvYmo6IHsgaGFzOiBib29sZWFuIH0pIHtcclxuICAgICAgICBjb25zdCBwID0gbm9kZS5nZXRDb21wb25lbnQoUGFydGljbGVTeXN0ZW0pO1xyXG4gICAgICAgIGlmIChwKSB7XHJcbiAgICAgICAgICAgIHAuc3RvcFN5c3RlbSgpO1xyXG4gICAgICAgICAgICBvYmouaGFzID0gdHJ1ZTtcclxuICAgICAgICAgICAgcC5ub2RlLm9wYWNpdHkgPSAwO1xyXG4gICAgICAgIH1cclxuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IG5vZGUuY2hpbGRyZW5Db3VudDsgaSsrKSB7XHJcbiAgICAgICAgICAgIGNvbnN0IGNoaWxkID0gbm9kZS5jaGlsZHJlbltpXTtcclxuICAgICAgICAgICAgdGhpcy5yZWN1cnNpb25fc3RvcF9wYXJ0aWNsZShjaGlsZCwgb2JqKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIHN0YXRpYyByZWN1cnNpb25fcmVzZXRfcGFydGljbGUobm9kZTogTm9kZSkge1xyXG4gICAgICAgIGlmICghbm9kZS5pc1ZhbGlkKSB7XHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcbiAgICAgICAgY29uc3QgcCA9IG5vZGUuZ2V0Q29tcG9uZW50KFBhcnRpY2xlU3lzdGVtKTtcclxuICAgICAgICBpZiAocCkge1xyXG4gICAgICAgICAgICBwLnJlc2V0U3lzdGVtKCk7XHJcbiAgICAgICAgICAgIHAubm9kZS5vcGFjaXR5ID0gMjU1O1xyXG4gICAgICAgIH1cclxuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IG5vZGUuY2hpbGRyZW5Db3VudDsgaSsrKSB7XHJcbiAgICAgICAgICAgIGNvbnN0IGNoaWxkID0gbm9kZS5jaGlsZHJlbltpXTtcclxuICAgICAgICAgICAgdGhpcy5yZWN1cnNpb25fcmVzZXRfcGFydGljbGUoY2hpbGQpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgc3RhdGljIGdldF9ub2RlX2Zyb21fcG9vbChub2RlX3BhcmVudDogTm9kZSwgcHJlZmFiOiBOb2RlKSB7XHJcbiAgICAgICAgbGV0IGFyciA9IHRoaXMuYW55X3Bvb2xbcHJlZmFiLnV1aWRdO1xyXG4gICAgICAgIGlmICghYXJyKSB7XHJcbiAgICAgICAgICAgIHRoaXMuYW55X3Bvb2xbcHJlZmFiLnV1aWRdID0gW107XHJcbiAgICAgICAgICAgIGFyciA9IFtdO1xyXG4gICAgICAgIH1cclxuICAgICAgICBsZXQgbm9kZSA9IGFyci5wb3AoKTtcclxuICAgICAgICBpZiAoIW5vZGUgfHwgIW5vZGUuaXNWYWxpZCkge1xyXG4gICAgICAgICAgICBub2RlID0gaW5zdGFudGlhdGUocHJlZmFiKTtcclxuICAgICAgICAgICAgLy9AdHMtaWdub3JlXHJcbiAgICAgICAgICAgIG5vZGUucmVjb3ZlcnlfdXVpZCA9IHByZWZhYi51dWlkO1xyXG4gICAgICAgICAgICAvL0B0cy1pZ25vcmVcclxuICAgICAgICAgICAgbm9kZS5pc19mcm9tX3Bvb2wgPSBmYWxzZTtcclxuICAgICAgICAgICAgbm9kZV9wYXJlbnQuYWRkQ2hpbGQobm9kZSk7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgbm9kZS5hY3RpdmUgPSB0cnVlO1xyXG4gICAgICAgICAgICAvL0B0cy1pZ25vcmVcclxuICAgICAgICAgICAgbm9kZS5pc19mcm9tX3Bvb2wgPSB0cnVlO1xyXG4gICAgICAgICAgICB0aGlzLnJlc2V0X2FuaShub2RlKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIG5vZGU7XHJcbiAgICB9XHJcblxyXG4gICAgcHJpdmF0ZSBzdGF0aWMgY2hlY2tfcG9vbF9wdXNoKGFycjogTm9kZVtdLCBub2RlOiBOb2RlKSB7XHJcbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBhcnIubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICAgICAgaWYgKGFycltpXSA9PT0gbm9kZSkge1xyXG4gICAgICAgICAgICAgICAgLy9AdHMtaWdub3JlXHJcbiAgICAgICAgICAgICAgICBjb25zb2xlLndhcm4oYOaxoOWtkOS4jeiDvemHjeWkjea3u+WKoOiKgueCuWAsIG5vZGUubmFtZSwgbm9kZS5yZWNvdmVyeV91dWlkKTtcclxuICAgICAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICBub2RlLmFjdGl2ZSA9IGZhbHNlO1xyXG4gICAgICAgIGFyci5wdXNoKG5vZGUpO1xyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyBzdGF0aWMgcHVzaF9ub2RlX3RvX3Bvb2wobm9kZTogTm9kZSkge1xyXG4gICAgICAgIC8vQHRzLWlnbm9yZVxyXG4gICAgICAgIGlmICghbm9kZS5yZWNvdmVyeV91dWlkIHx8ICF0aGlzLmFueV9wb29sW25vZGUucmVjb3ZlcnlfdXVpZF0pIHtcclxuICAgICAgICAgICAgaWYgKG5vZGUuaXNWYWxpZCkge1xyXG4gICAgICAgICAgICAgICAgbm9kZS5kZXN0cm95KCk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuICAgICAgICBjb25zdCBvYmo6IHsgaGFzOiBib29sZWFuIH0gPSB7aGFzOiBmYWxzZX07XHJcbiAgICAgICAgdGhpcy5yZWN1cnNpb25fc3RvcF9wYXJ0aWNsZShub2RlLCBvYmopO1xyXG4gICAgICAgIGlmIChvYmouaGFzKSB7XHJcbiAgICAgICAgICAgIGxldCBvbGRfb3BhY2l0eSA9IG5vZGUub3BhY2l0eTtcclxuICAgICAgICAgICAgbm9kZS5vcGFjaXR5ID0gMDtcclxuICAgICAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLnJlY3Vyc2lvbl9yZXNldF9wYXJ0aWNsZShub2RlKTtcclxuICAgICAgICAgICAgICAgIG5vZGUub3BhY2l0eSA9IG9sZF9vcGFjaXR5O1xyXG4gICAgICAgICAgICAgICAgLy9AdHMtaWdub3JlXHJcbiAgICAgICAgICAgICAgICB0aGlzLmNoZWNrX3Bvb2xfcHVzaCh0aGlzLmFueV9wb29sW25vZGUucmVjb3ZlcnlfdXVpZF0sIG5vZGUpO1xyXG4gICAgICAgICAgICB9LCA1MDApO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIC8vQHRzLWlnbm9yZVxyXG4gICAgICAgICAgICB0aGlzLmNoZWNrX3Bvb2xfcHVzaCh0aGlzLmFueV9wb29sW25vZGUucmVjb3ZlcnlfdXVpZF0sIG5vZGUpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxufSJdfQ== +//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImFzc2V0c1xcbWlncmF0aW9uXFx1c2VfdjIuMS0yLjIuMV9jYy5Ub2dnbGVfZXZlbnRfMS5qcyJdLCJuYW1lcyI6WyJjYyIsIlRvZ2dsZSIsIl90cmlnZ2VyRXZlbnRJblNjcmlwdF9pc0NoZWNrZWQiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQSxJQUFJQSxFQUFFLENBQUNDLE1BQU0sRUFBRTtFQUNYO0VBQ0E7RUFDQUQsRUFBRSxDQUFDQyxNQUFNLENBQUNDLCtCQUErQixHQUFHLElBQUk7QUFDcEQiLCJzb3VyY2VSb290IjoiLyIsInNvdXJjZXNDb250ZW50IjpbIi8qXHJcbiAqIFRoaXMgc2NyaXB0IGlzIGF1dG9tYXRpY2FsbHkgZ2VuZXJhdGVkIGJ5IENvY29zIENyZWF0b3IgYW5kIGlzIG9ubHkgdXNlZCBmb3IgcHJvamVjdHMgY29tcGF0aWJsZSB3aXRoIHRoZSB2Mi4xLjAg772eIDIuMi4xIHZlcnNpb24uXHJcbiAqIFlvdSBkbyBub3QgbmVlZCB0byBtYW51YWxseSBhZGQgdGhpcyBzY3JpcHQgaW4gYW55IG90aGVyIHByb2plY3QuXHJcbiAqIElmIHlvdSBkb24ndCB1c2UgY2MuVG9nZ2xlIGluIHlvdXIgcHJvamVjdCwgeW91IGNhbiBkZWxldGUgdGhpcyBzY3JpcHQgZGlyZWN0bHkuXHJcbiAqIElmIHlvdXIgcHJvamVjdCBpcyBob3N0ZWQgaW4gVkNTIHN1Y2ggYXMgZ2l0LCBzdWJtaXQgdGhpcyBzY3JpcHQgdG9nZXRoZXIuXHJcbiAqXHJcbiAqIOatpOiEmuacrOeUsSBDb2NvcyBDcmVhdG9yIOiHquWKqOeUn+aIkO+8jOS7heeUqOS6juWFvOWuuSB2Mi4xLjAgfiAyLjIuMSDniYjmnKznmoTlt6XnqIvvvIxcclxuICog5L2g5peg6ZyA5Zyo5Lu75L2V5YW25a6D6aG555uu5Lit5omL5Yqo5re75Yqg5q2k6ISa5pys44CCXHJcbiAqIOWmguaenOS9oOeahOmhueebruS4reayoeeUqOWIsCBUb2dnbGXvvIzlj6/nm7TmjqXliKDpmaTor6XohJrmnKzjgIJcclxuICog5aaC5p6c5L2g55qE6aG555uu5pyJ5omY566h5LqOIGdpdCDnrYnniYjmnKzlupPvvIzor7flsIbmraTohJrmnKzkuIDlubbkuIrkvKDjgIJcclxuICovXHJcblxyXG5pZiAoY2MuVG9nZ2xlKSB7XHJcbiAgICAvLyBXaGV0aGVyIHRvIHRyaWdnZXIgJ3RvZ2dsZScgYW5kICdjaGVja0V2ZW50cycgZXZlbnRzIHdoZW4gbW9kaWZ5aW5nICd0b2dnbGUuaXNDaGVja2VkJyBpbiB0aGUgY29kZVxyXG4gICAgLy8g5Zyo5Luj56CB5Lit5L+u5pS5ICd0b2dnbGUuaXNDaGVja2VkJyDml7bmmK/lkKbop6blj5EgJ3RvZ2dsZScg5LiOICdjaGVja0V2ZW50cycg5LqL5Lu2XHJcbiAgICBjYy5Ub2dnbGUuX3RyaWdnZXJFdmVudEluU2NyaXB0X2lzQ2hlY2tlZCA9IHRydWU7XHJcbn1cclxuIl19 //------QC-SOURCE-SPLIT------ (function() { var nodeEnv = typeof require !== 'undefined' && typeof process !== 'undefined'; var __module = nodeEnv ? module : {exports:{}}; - var __filename = 'preview-scripts/assets/Script/lq_base/util/lq_platform_util.js'; + var __filename = 'preview-scripts/assets/Script/lq_base/data/lq_interface.js'; var __require = nodeEnv ? function (request) { return cc.require(request); } : function (request) { @@ -22705,125 +12332,11 @@ cc._RF.pop(); }; function __define (exports, require, module) { if (!nodeEnv) {__quick_compile_project__.registerModule(__filename, module);}"use strict"; -cc._RF.push(module, '35875T0lsRL3rzhNkUdX4/G', 'lq_platform_util'); -// Script/lq_base/util/lq_platform_util.ts +cc._RF.push(module, '41e45V6/vBNz5ftgHCoFmei', 'lq_interface'); +// Script/lq_base/data/lq_interface.ts -"use strict"; -Object.defineProperty(exports, "__esModule", { value: true }); -exports.LQPlatformUtil = void 0; -var lq_const_1 = require("../data/lq_const"); -var LQPlatformUtil = /** @class */ (function () { - function LQPlatformUtil() { - } - LQPlatformUtil.init = function () { - if (typeof qq !== 'undefined') { - this.platform_type = lq_const_1.LQPlatformType.qq; - } - else if (typeof swan !== 'undefined') { - this.platform_type = lq_const_1.LQPlatformType.baidu; - } - else if (typeof tt !== 'undefined') { - this.platform_type = lq_const_1.LQPlatformType.tt; - var info = tt.getSystemInfoSync(); - switch (info.appName) { - case 'Toutiao': - this.byte_dance_type = lq_const_1.LQByteDanceType.tt; - break; - case 'news_article_lite': - this.byte_dance_type = lq_const_1.LQByteDanceType.tt_lite; - break; - case 'Douyin': - this.byte_dance_type = lq_const_1.LQByteDanceType.douyin; - break; - case 'douyin_lite': - this.byte_dance_type = lq_const_1.LQByteDanceType.douyin_lite; - break; - case 'PPX': - this.byte_dance_type = lq_const_1.LQByteDanceType.ppx; - break; - case 'devtools': - this.byte_dance_type = lq_const_1.LQByteDanceType.devtools; - break; - } - } - else if (typeof qg !== 'undefined') { - if (!!qg.getBattle) { - this.platform_type = lq_const_1.LQPlatformType.oppo; - } - else { - this.platform_type = lq_const_1.LQPlatformType.vivo; - } - } - else if (typeof wx !== 'undefined') { - this.platform_type = lq_const_1.LQPlatformType.wx; - } - else if (typeof jsb !== 'undefined') { - if (cc.sys.os === cc.sys.OS_ANDROID) { - this.platform_type = lq_const_1.LQPlatformType.android; - } - else if (cc.sys.os === cc.sys.OS_IOS) { - this.platform_type = lq_const_1.LQPlatformType.ios; - } - else { - this.platform_type = lq_const_1.LQPlatformType.unknown; - } - } - else if (cc.sys.isBrowser) { - this.platform_type = lq_const_1.LQPlatformType.browser; - } - }; - LQPlatformUtil.get_platform = function () { - return this.platform_type; - }; - LQPlatformUtil.get_byte_dance = function () { - return this.byte_dance_type; - }; - LQPlatformUtil.is_wx = function () { - return this.platform_type === lq_const_1.LQPlatformType.wx; - }; - LQPlatformUtil.is_tt = function () { - return this.platform_type === lq_const_1.LQPlatformType.tt; - }; - LQPlatformUtil.is_oppo = function () { - return this.platform_type === lq_const_1.LQPlatformType.oppo; - }; - LQPlatformUtil.is_vivo = function () { - return this.platform_type === lq_const_1.LQPlatformType.vivo; - }; - LQPlatformUtil.is_ov = function () { - return this.platform_type === lq_const_1.LQPlatformType.oppo || this.platform_type === lq_const_1.LQPlatformType.vivo; - }; - LQPlatformUtil.is_browser = function () { - return this.platform_type === lq_const_1.LQPlatformType.browser; - }; - LQPlatformUtil.is_android = function () { - return this.platform_type === lq_const_1.LQPlatformType.android; - }; - LQPlatformUtil.is_ios = function () { - return this.platform_type === lq_const_1.LQPlatformType.ios; - }; - LQPlatformUtil.is_native = function () { - return this.platform_type === lq_const_1.LQPlatformType.android || this.platform_type === lq_const_1.LQPlatformType.ios; - }; - LQPlatformUtil.is_qq = function () { - return this.platform_type === lq_const_1.LQPlatformType.qq; - }; - LQPlatformUtil.is_baidu = function () { - return this.platform_type === lq_const_1.LQPlatformType.baidu; - }; - LQPlatformUtil.is_kwaigame = function () { - return this.platform_type === lq_const_1.LQPlatformType.kwaigame; - }; - return LQPlatformUtil; -}()); -exports.LQPlatformUtil = LQPlatformUtil; -LQPlatformUtil.init(); -if (LQPlatformUtil.is_tt()) { - // console.log('---------当前平台:' + LQPlatformUtil.get_byte_dance()); -} -else { - // console.log('---------当前平台:' + LQPlatformUtil.get_platform()); -} +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); cc._RF.pop(); } @@ -22836,763 +12349,7 @@ cc._RF.pop(); }); } })(); -//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImFzc2V0c1xcU2NyaXB0XFxscV9iYXNlXFx1dGlsXFxscV9wbGF0Zm9ybV91dGlsLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLDZDQUFpRTtBQUVqRTtJQUFBO0lBNEdBLENBQUM7SUF4R2lCLG1CQUFJLEdBQWxCO1FBQ0ksSUFBSSxPQUFPLEVBQUUsS0FBSyxXQUFXLEVBQUU7WUFDM0IsSUFBSSxDQUFDLGFBQWEsR0FBRyx5QkFBYyxDQUFDLEVBQUUsQ0FBQztTQUMxQzthQUFNLElBQUksT0FBTyxJQUFJLEtBQUssV0FBVyxFQUFFO1lBQ3BDLElBQUksQ0FBQyxhQUFhLEdBQUcseUJBQWMsQ0FBQyxLQUFLLENBQUM7U0FDN0M7YUFBTSxJQUFJLE9BQU8sRUFBRSxLQUFLLFdBQVcsRUFBRTtZQUNsQyxJQUFJLENBQUMsYUFBYSxHQUFHLHlCQUFjLENBQUMsRUFBRSxDQUFDO1lBQ3ZDLElBQU0sSUFBSSxHQUFHLEVBQUUsQ0FBQyxpQkFBaUIsRUFBRSxDQUFDO1lBQ3BDLFFBQVEsSUFBSSxDQUFDLE9BQU8sRUFBRTtnQkFDbEIsS0FBSyxTQUFTO29CQUNWLElBQUksQ0FBQyxlQUFlLEdBQUcsMEJBQWUsQ0FBQyxFQUFFLENBQUM7b0JBQzFDLE1BQU07Z0JBQ1YsS0FBSyxtQkFBbUI7b0JBQ3BCLElBQUksQ0FBQyxlQUFlLEdBQUcsMEJBQWUsQ0FBQyxPQUFPLENBQUM7b0JBQy9DLE1BQU07Z0JBQ1YsS0FBSyxRQUFRO29CQUNULElBQUksQ0FBQyxlQUFlLEdBQUcsMEJBQWUsQ0FBQyxNQUFNLENBQUM7b0JBQzlDLE1BQU07Z0JBQ1YsS0FBSyxhQUFhO29CQUNkLElBQUksQ0FBQyxlQUFlLEdBQUcsMEJBQWUsQ0FBQyxXQUFXLENBQUM7b0JBQ25ELE1BQU07Z0JBQ1YsS0FBSyxLQUFLO29CQUNOLElBQUksQ0FBQyxlQUFlLEdBQUcsMEJBQWUsQ0FBQyxHQUFHLENBQUM7b0JBQzNDLE1BQU07Z0JBQ1YsS0FBSyxV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dUJBQVEsR0FBdEI7UUFDSSxPQUFPLElBQUksQ0FBQyxhQUFhLEtBQUsseUJBQWMsQ0FBQyxLQUFLLENBQUM7SUFDdkQsQ0FBQztJQUVhLDBCQUFXLEdBQXpCO1FBQ0ksT0FBTyxJQUFJLENBQUMsYUFBYSxLQUFLLHlCQUFjLENBQUMsUUFBUSxDQUFDO0lBQzFELENBQUM7SUFDTCxxQkFBQztBQUFELENBNUdBLEFBNEdDLElBQUE7QUE1R1ksd0NBQWM7QUE4RzNCLGNBQWMsQ0FBQyxJQUFJLEVBQUUsQ0FBQztBQUN0QixJQUFJLGNBQWMsQ0FBQyxLQUFLLEVBQUUsRUFBRTtJQUN4QixtRUFBbUU7Q0FDdEU7S0FBTTtJQUNILGlFQUFpRTtDQUNwRSIsImZpbGUiOiIiLCJzb3VyY2VSb290IjoiLyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7TFFCeXRlRGFuY2VUeXBlLCBMUVBsYXRmb3JtVHlwZX0gZnJvbSBcIi4uL2RhdGEvbHFfY29uc3RcIjtcclxuXHJcbmV4cG9ydCBjbGFzcyBMUVBsYXRmb3JtVXRpbCB7XHJcbiAgICBwcml2YXRlIHN0YXRpYyBwbGF0Zm9ybV90eXBlOiBMUVBsYXRmb3JtVHlwZTtcclxuICAgIHByaXZhdGUgc3RhdGljIGJ5dGVfZGFuY2VfdHlwZTogTFFCeXRlRGFuY2VUeXBlO1xyXG5cclxuICAgIHB1YmxpYyBzdGF0aWMgaW5pdCgpIHtcclxuICAgICAgICBpZiAodHlwZW9mIHFxICE9PSAndW5kZWZpbmVkJykge1xyXG4gICAgICAgICAgICB0aGlzLnBsYXRmb3JtX3R5cGUgPSBMUVBsYXRmb3JtVHlwZS5xcTtcclxuICAgICAgICB9IGVsc2UgaWYgKHR5cGVvZiBzd2FuICE9PSAndW5kZWZpbmVkJykge1xyXG4gICAgICAgICAgICB0aGlzLnBsYXRmb3JtX3R5cGUgPSBMUVBsYXRmb3JtVHlwZS5iYWlkdTtcclxuICAgICAgICB9IGVsc2UgaWYgKHR5cGVvZiB0dCAhPT0gJ3VuZGVmaW5lZCcpIHtcclxuICAgICAgICAgICAgdGhpcy5wbGF0Zm9ybV90eXBlID0gTFFQbGF0Zm9ybVR5cGUudHQ7XHJcbiAgICAgICAgICAgIGNvbnN0IGluZm8gPSB0dC5nZXRTeXN0ZW1JbmZvU3luYygpO1xyXG4gICAgICAgICAgICBzd2l0Y2ggKGluZm8uYXBwTmFtZSkge1xyXG4gICAgICAgICAgICAgICAgY2FzZSAnVG91dGlhbyc6XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5ieXRlX2RhbmNlX3R5cGUgPSBMUUJ5dGVEYW5jZVR5cGUudHQ7XHJcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgICAgICBjYXNlICduZXdzX2FydGljbGVfbGl0ZSc6XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5ieXRlX2RhbmNlX3R5cGUgPSBMUUJ5dGVEYW5jZVR5cGUudHRfbGl0ZTtcclxuICAgICAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgICAgIGNhc2UgJ0RvdXlpbic6XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5ieXRlX2RhbmNlX3R5cGUgPSBMUUJ5dGVEYW5jZVR5cGUuZG91eWluO1xyXG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICAgICAgY2FzZSAnZG91eWluX2xpdGUnOlxyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuYnl0ZV9kYW5jZV90eXBlID0gTFFCeXRlRGFuY2VUeXBlLmRvdXlpbl9saXRlO1xyXG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICAgICAgY2FzZSAnUFBYJzpcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLmJ5dGVfZGFuY2VfdHlwZSA9IExRQnl0ZURhbmNlVHlwZS5wcHg7XHJcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgICAgICBjYXNlICdkZXZ0b29scyc6XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5ieXRlX2RhbmNlX3R5cGUgPSBMUUJ5dGVEYW5jZVR5cGUuZGV2dG9vbHM7XHJcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9IGVsc2UgaWYgKHR5cGVvZiBxZyAhPT0gJ3VuZGVmaW5lZCcpIHtcclxuICAgICAgICAgICAgaWYgKCEhcWcuZ2V0QmF0dGxlKSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLnBsYXRmb3JtX3R5cGUgPSBMUVBsYXRmb3JtVHlwZS5vcHBvO1xyXG4gICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5wbGF0Zm9ybV90eXBlID0gTFFQbGF0Zm9ybVR5cGUudml2bztcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH0gZWxzZSBpZiAodHlwZW9mIHd4ICE9PSAndW5kZWZpbmVkJykge1xyXG4gICAgICAgICAgICB0aGlzLnBsYXRmb3JtX3R5cGUgPSBMUVBsYXRmb3JtVHlwZS53eDtcclxuICAgICAgICB9IGVsc2UgaWYgKHR5cGVvZiBqc2IgIT09ICd1bmRlZmluZWQnKSB7XHJcbiAgICAgICAgICAgIGlmIChjYy5zeXMub3MgPT09IGNjLnN5cy5PU19BTkRST0lEKSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLnBsYXRmb3JtX3R5cGUgPSBMUVBsYXRmb3JtVHlwZS5hbmRyb2lkO1xyXG4gICAgICAgICAgICB9IGVsc2UgaWYgKGNjLnN5cy5vcyA9PT0gY2Muc3lzLk9TX0lPUykge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5wbGF0Zm9ybV90eXBlID0gTFFQbGF0Zm9ybVR5cGUuaW9zO1xyXG4gICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5wbGF0Zm9ybV90eXBlID0gTFFQbGF0Zm9ybVR5cGUudW5rbm93bjtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH0gZWxzZSBpZiAoY2Muc3lzLmlzQnJvd3Nlcikge1xyXG4gICAgICAgICAgICB0aGlzLnBsYXRmb3JtX3R5cGUgPSBMUVBsYXRmb3JtVHlwZS5icm93c2VyO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgc3RhdGljIGdldF9wbGF0Zm9ybSgpOiBMUVBsYXRmb3JtVHlwZSB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMucGxhdGZvcm1fdHlwZTtcclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgc3RhdGljIGdldF9ieXRlX2RhbmNlKCk6IExRQnl0ZURhbmNlVHlwZSB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuYnl0ZV9kYW5jZV90eXBlO1xyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyBzdGF0aWMgaXNfd3goKSB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMucGxhdGZvcm1fdHlwZSA9PT0gTFFQbGF0Zm9ybVR5cGUud3g7XHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIHN0YXRpYyBpc190dCgpIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5wbGF0Zm9ybV90eXBlID09PSBMUVBsYXRmb3JtVHlwZS50dDtcclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgc3RhdGljIGlzX29wcG8oKSB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMucGxhdGZvcm1fdHlwZSA9PT0gTFFQbGF0Zm9ybVR5cGUub3BwbztcclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgc3RhdGljIGlzX3Zpdm8oKSB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMucGxhdGZvcm1fdHlwZSA9PT0gTFFQbGF0Zm9ybVR5cGUudml2bztcclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgc3RhdGljIGlzX292KCkge1xyXG4gICAgICAgIHJldHVybiB0aGlzLnBsYXRmb3JtX3R5cGUgPT09IExRUGxhdGZvcm1UeXBlLm9wcG8gfHwgdGhpcy5wbGF0Zm9ybV90eXBlID09PSBMUVBsYXRmb3JtVHlwZS52aXZvO1xyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyBzdGF0aWMgaXNfYnJvd3NlcigpIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5wbGF0Zm9ybV90eXBlID09PSBMUVBsYXRmb3JtVHlwZS5icm93c2VyO1xyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyBzdGF0aWMgaXNfYW5kcm9pZCgpIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5wbGF0Zm9ybV90eXBlID09PSBMUVBsYXRmb3JtVHlwZS5hbmRyb2lkO1xyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyBzdGF0aWMgaXNfaW9zKCkge1xyXG4gICAgICAgIHJldHVybiB0aGlzLnBsYXRmb3JtX3R5cGUgPT09IExRUGxhdGZvcm1UeXBlLmlvcztcclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgc3RhdGljIGlzX25hdGl2ZSgpIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5wbGF0Zm9ybV90eXBlID09PSBMUVBsYXRmb3JtVHlwZS5hbmRyb2lkIHx8IHRoaXMucGxhdGZvcm1fdHlwZSA9PT0gTFFQbGF0Zm9ybVR5cGUuaW9zO1xyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyBzdGF0aWMgaXNfcXEoKSB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMucGxhdGZvcm1fdHlwZSA9PT0gTFFQbGF0Zm9ybVR5cGUucXE7XHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIHN0YXRpYyBpc19iYWlkdSgpIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5wbGF0Zm9ybV90eXBlID09PSBMUVBsYXRmb3JtVHlwZS5iYWlkdTtcclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgc3RhdGljIGlzX2t3YWlnYW1lKCkge1xyXG4gICAgICAgIHJldHVybiB0aGlzLnBsYXRmb3JtX3R5cGUgPT09IExRUGxhdGZvcm1UeXBlLmt3YWlnYW1lO1xyXG4gICAgfVxyXG59XHJcblxyXG5MUVBsYXRmb3JtVXRpbC5pbml0KCk7XHJcbmlmIChMUVBsYXRmb3JtVXRpbC5pc190dCgpKSB7XHJcbiAgICAvLyBjb25zb2xlLmxvZygnLS0tLS0tLS0t5b2T5YmN5bmz5Y+wOicgKyBMUVBsYXRmb3JtVXRpbC5nZXRfYnl0ZV9kYW5jZSgpKTtcclxufSBlbHNlIHtcclxuICAgIC8vIGNvbnNvbGUubG9nKCctLS0tLS0tLS3lvZPliY3lubPlj7A6JyArIExRUGxhdGZvcm1VdGlsLmdldF9wbGF0Zm9ybSgpKTtcclxufVxyXG4iXX0= -//------QC-SOURCE-SPLIT------ - - (function() { - var nodeEnv = typeof require !== 'undefined' && typeof process !== 'undefined'; - var __module = nodeEnv ? module : {exports:{}}; - var __filename = 'preview-scripts/assets/Script/module/RankList/List.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, 'd5421HgLShFKIjj5f18m1mi', 'List'); -// Script/module/RankList/List.ts - -"use strict"; -// Learn TypeScript: -// - https://docs.cocos.com/creator/manual/en/scripting/typescript.html -// Learn Attribute: -// - https://docs.cocos.com/creator/manual/en/scripting/reference/attributes.html -// Learn life-cycle callbacks: -// - https://docs.cocos.com/creator/manual/en/scripting/life-cycle-callbacks.html -var __extends = (this && this.__extends) || (function () { - var extendStatics = function (d, b) { - extendStatics = Object.setPrototypeOf || - ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) || - function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; }; - return extendStatics(d, b); - }; - return function (d, b) { - extendStatics(d, b); - function __() { this.constructor = d; } - d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); - }; -})(); -var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) { - var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; - if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc); - else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; - return c > 3 && r && Object.defineProperty(target, key, r), r; -}; -Object.defineProperty(exports, "__esModule", { value: true }); -exports.StartAxisType = exports.ListType = void 0; -var ItemRender_1 = require("./ItemRender"); -var _a = cc._decorator, ccclass = _a.ccclass, property = _a.property; -/**列表排列方式 */ -var ListType; -(function (ListType) { - /**水平排列 */ - ListType[ListType["Horizontal"] = 1] = "Horizontal"; - /**垂直排列 */ - ListType[ListType["Vertical"] = 2] = "Vertical"; - /**网格排列 */ - ListType[ListType["Grid"] = 3] = "Grid"; -})(ListType = exports.ListType || (exports.ListType = {})); -/**网格布局中的方向 */ -var StartAxisType; -(function (StartAxisType) { - /**水平排列 */ - StartAxisType[StartAxisType["Horizontal"] = 1] = "Horizontal"; - /**垂直排列 */ - StartAxisType[StartAxisType["Vertical"] = 2] = "Vertical"; -})(StartAxisType = exports.StartAxisType || (exports.StartAxisType = {})); -/** - * 列表 - * 根据cocos_example的listView改动而来 - * @author chenkai 2020.7.8 - * @example - * 1.创建cocos的ScrollView组件,添加List,设置List属性即可 - * - */ -var List = /** @class */ (function (_super) { - __extends(List, _super); - function List() { - var _this = _super !== null && _super.apply(this, arguments) || this; - //==================== 属性面板 ========================= - /**列表选项 */ - _this.itemRender = null; - /**排列方式 */ - _this.type = ListType.Vertical; - /**网格布局中的方向 */ - _this.startAxis = StartAxisType.Horizontal; - /**列表项之间X间隔 */ - _this.spaceX = 0; - /**列表项之间Y间隔 */ - _this.spaceY = 0; - /**上间距 */ - _this.padding_top = 0; - /**下间距 */ - _this.padding_buttom = 0; - /**左间距 */ - _this.padding_left = 0; - _this._padding = 0; - /**右间距 */ - _this.padding_right = 0; - //====================== 滚动容器 =============================== - /**列表滚动容器 */ - _this.scrollView = null; - /**scrollView的内容容器 */ - _this.content = null; - //======================== 列表项 =========================== - /**列表项数据 */ - _this.itemDataList = []; - /**应创建的实例数量 */ - _this.spawnCount = 0; - /**存放列表项实例的数组 */ - _this.itemList = []; - /**item的高度 */ - _this.itemHeight = 0; - /**item的宽度 */ - _this.itemWidth = 0; - /**存放不再使用中的列表项 */ - _this.itemPool = []; - //======================= 计算参数 ========================== - /**距离scrollView中心点的距离,超过这个距离的item会被重置,一般设置为 scrollVIew.height/2 + item.heigt/2 + space,因为这个距离item正好超出scrollView显示范围 */ - _this.halfScrollView = 0; - /**上一次content的X值,用于和现在content的X值比较,得出是向左还是向右滚动 */ - _this.lastContentPosX = 0; - /**上一次content的Y值,用于和现在content的Y值比较,得出是向上还是向下滚动 */ - _this.lastContentPosY = 0; - /**网格行数 */ - _this.gridRow = 0; - /**网格列数 */ - _this.gridCol = 0; - /**刷新时间,单位s */ - _this.updateTimer = 0; - /**刷新间隔,单位s */ - _this.updateInterval = 0.1; - /**是否滚动容器 */ - _this.bScrolling = false; - /**刷新的函数 */ - _this.updateFun = function () { }; - return _this; - } - List.prototype.onLoad = function () { - this.itemHeight = this.itemRender.height; - this.itemWidth = this.itemRender.width; - this.scrollView = this.node.getComponent(cc.ScrollView); - this.content = this.scrollView.content; - this.content.anchorX = 0; - this.content.anchorY = 1; - this.content.removeAllChildren(); - this.scrollView.node.on("scrolling", this.onScrolling, this); - }; - /** - * 列表数据 (列表数据复制使用,如果列表数据改变,则需要重新设置一遍数据) - * @param itemDataList item数据列表 - */ - List.prototype.setData = function (itemDataList) { - this.itemDataList = itemDataList.slice(); - this.updateContent(); - }; - /**计算列表的各项参数 */ - List.prototype.countListParam = function () { - var dataLen = this.itemDataList.length; - if (this.type == ListType.Vertical) { - this.scrollView.horizontal = false; - this.scrollView.vertical = true; - this.content.width = this.content.parent.width; - this.content.height = dataLen * this.itemHeight + (dataLen - 1) * this.spaceY + this.padding_top + this.padding_buttom; - this.spawnCount = Math.round(this.scrollView.node.height / (this.itemHeight + this.spaceY)) + 2; //计算创建的item实例数量,比当前scrollView容器能放下的item数量再加上2个 - this.halfScrollView = this.scrollView.node.height / 2 + this.itemHeight / 2 + this.spaceY; //计算bufferZone,item的显示范围 - this.updateFun = this.updateV; - } - else if (this.type == ListType.Horizontal) { - this.scrollView.horizontal = true; - this.scrollView.vertical = false; - this.content.width = dataLen * this.itemWidth + (dataLen - 1) * this.spaceX + this.padding_left + this.padding_right; - this.content.height = this.content.parent.height; - this.spawnCount = Math.round(this.scrollView.node.width / (this.itemWidth + this.spaceX)) + 2; - this.halfScrollView = this.scrollView.node.width / 2 + this.itemWidth / 2 + this.spaceX; - this.updateFun = this.udpateH; - } - else if (this.type == ListType.Grid) { - if (this.startAxis == StartAxisType.Vertical) { - this.scrollView.horizontal = false; - this.scrollView.vertical = true; - this.content.width = this.content.parent.width; - //如果left和right间隔过大,导致放不下一个item,则left和right都设置为0,相当于不生效 - if (this.padding_left + this.padding_right + this.itemWidth + this.spaceX > this.content.width) { - this.padding_left = 0; - this.padding_right = 0; - console.error("padding_left或padding_right过大"); - } - this.gridCol = Math.floor((this.content.width - this.padding_left - this.padding_right) / (this.itemWidth + this.spaceX)); - this.gridRow = Math.ceil(dataLen / this.gridCol); - this.content.height = this.gridRow * this.itemHeight + (this.gridRow - 1) * this.spaceY + this.padding_top + this.padding_buttom; - this.spawnCount = Math.round(this.scrollView.node.height / (this.itemHeight + this.spaceY)) * this.gridCol + this.gridCol * 2; - this.halfScrollView = this.scrollView.node.height / 2 + this.itemHeight / 2 + this.spaceY; - this.updateFun = this.updateGrid_V; - } - else if (this.startAxis == StartAxisType.Horizontal) { - this.scrollView.horizontal = true; - this.scrollView.vertical = false; - //计算高间隔 - this.content.height = this.content.parent.height; - //如果left和right间隔过大,导致放不下一个item,则left和right都设置为0,相当于不生效 - if (this.padding_top + this.padding_buttom + this.itemHeight + this.spaceY > this.content.height) { - this.padding_top = 0; - this.padding_buttom = 0; - console.error("padding_top或padding_buttom过大"); - } - this.gridRow = Math.floor((this.content.height - this.padding_top - this.padding_buttom) / (this.itemHeight + this.spaceY)); - this.gridCol = Math.ceil(dataLen / this.gridRow); - this.content.width = this.gridCol * this.itemWidth + (this.gridCol - 1) * this.spaceX + this.padding_left + this.padding_right; - this.spawnCount = Math.round(this.scrollView.node.width / (this.itemWidth + this.spaceX)) * this.gridRow + this.gridRow * 2; - this.halfScrollView = this.scrollView.node.width / 2 + this.itemWidth / 2 + this.spaceX; - this.updateFun = this.updateGrid_H; - } - } - }; - /** - * 创建列表 - * @param startIndex 起始显示的数据索引 0表示第一项 - * @param offset scrollView偏移量 - */ - List.prototype.createList = function (startIndex, offset) { - //当需要显示的数据长度 > 虚拟列表长度, 删除最末尾几个数据时,列表需要重置位置到scrollView最底端 - if (this.itemDataList.length > this.spawnCount && (startIndex + this.spawnCount - 1) >= this.itemDataList.length) { - startIndex = this.itemDataList.length - this.spawnCount; - offset = this.scrollView.getMaxScrollOffset(); - //当需要显示的数据长度 <= 虚拟列表长度, 隐藏多余的虚拟列表项 - } - else if (this.itemDataList.length <= this.spawnCount) { - startIndex = 0; - } - for (var i = 0; i < this.spawnCount; i++) { - var item = void 0; - //需要显示的数据索引在数据范围内,则item实例显示出来 - if (i + startIndex < this.itemDataList.length) { - if (this.itemList[i] == null) { - item = this.getItem(); - this.itemList.push(item); - item.parent = this.content; - } - else { - item = this.itemList[i]; - } - //需要显示的数据索引超过了数据范围,则item实例隐藏起来 - } - else { - //item实例数量 > 需要显示的数据量 - if (this.itemList.length > (this.itemDataList.length - startIndex)) { - item = this.itemList.pop(); - item.removeFromParent(); - this.itemPool.push(item); - } - continue; - } - var itemRender = item.getComponent(ItemRender_1.default); - itemRender.itemIndex = i + startIndex; - itemRender.data = this.itemDataList[i + startIndex]; - itemRender.dataChanged(); - if (this.type == ListType.Vertical) { - //因为content的锚点X是0,所以item的x值是content.with/2表示居中,锚点Y是1,所以item的y值从content顶部向下是0到负无穷。所以item.y= -item.height/2时,是在content的顶部。 - item.setPosition(this.content.width / 2, -item.height * (0.5 + i + startIndex) - this.spaceY * (i + startIndex) - this.padding_top); - } - else if (this.type == ListType.Horizontal) { - item.setPosition(item.width * (0.5 + i + startIndex) + this.spaceX * (i + startIndex) + this.padding_left, -this.content.height / 2); - } - else if (this.type == ListType.Grid) { - if (this.startAxis == StartAxisType.Vertical) { - var row = Math.floor((i + startIndex) / this.gridCol); - var col = (i + startIndex) % this.gridCol; - item.setPosition(item.width * (0.5 + col) + this.spaceX * col + this.padding_left, -item.height * (0.5 + row) - this.spaceY * row - this.padding_top); - item.opacity = 255; - } - else if (this.startAxis == StartAxisType.Horizontal) { - var row = (i + startIndex) % this.gridRow; - var col = Math.floor((i + startIndex) / this.gridRow); - item.setPosition(item.width * (0.5 + col) + this.spaceX * col + this.padding_left, -item.height * (0.5 + row) - this.spaceY * row - this.padding_top); - item.opacity = 255; - } - } - } - this.scrollView.scrollToOffset(offset); - }; - /**获取一个列表项 */ - List.prototype.getItem = function () { - if (this.itemPool.length == 0) { - return cc.instantiate(this.itemRender); - } - else { - return this.itemPool.pop(); - } - }; - List.prototype.update = function (dt) { - if (this.bScrolling == false) { - return; - } - this.updateTimer += dt; - if (this.updateTimer < this.updateInterval) { - return; - } - this.updateTimer = 0; - this.bScrolling = false; - this.updateFun(); - }; - List.prototype.onScrolling = function () { - this.bScrolling = true; - }; - /**垂直排列 */ - List.prototype.updateV = function () { - var items = this.itemList; - var item; - var bufferZone = this.halfScrollView; - var isUp = this.scrollView.content.y > this.lastContentPosY; - var offset = (this.itemHeight + this.spaceY) * items.length; - for (var i = 0; i < items.length; i++) { - item = items[i]; - var viewPos = this.getPositionInView(item); - if (isUp) { - //item上滑时,超出了scrollView上边界,将item移动到下方复用,item移动到下方的位置必须不超过content的下边界 - if (viewPos.y > bufferZone && item.y - offset - this.padding_buttom > -this.content.height) { - var itemRender = item.getComponent(ItemRender_1.default); - var itemIndex = itemRender.itemIndex + items.length; - itemRender.itemIndex = itemIndex; - itemRender.data = this.itemDataList[itemIndex]; - itemRender.dataChanged(); - item.y = item.y - offset; - } - } - else { - //item下滑时,超出了scrollView下边界,将item移动到上方复用,item移动到上方的位置必须不超过content的上边界 - if (viewPos.y < -bufferZone && item.y + offset + this.padding_top < 0) { - var itemRender = item.getComponent(ItemRender_1.default); - var itemIndex = itemRender.itemIndex - items.length; - itemRender.itemIndex = itemIndex; - itemRender.data = this.itemDataList[itemIndex]; - itemRender.dataChanged(); - item.y = item.y + offset; - } - } - } - this.lastContentPosY = this.scrollView.content.y; - }; - /**水平排列 */ - List.prototype.udpateH = function () { - var items = this.itemList; - var item; - var bufferZone = this.halfScrollView; - var isRight = this.scrollView.content.x > this.lastContentPosX; - var offset = (this.itemWidth + this.spaceX) * items.length; - for (var i = 0; i < items.length; i++) { - item = items[i]; - var viewPos = this.getPositionInView(item); - if (isRight) { - //item右滑时,超出了scrollView右边界,将item移动到左方复用,item移动到左方的位置必须不超过content的左边界 - if (viewPos.x > bufferZone && item.x - offset - this.padding_left > 0) { - var itemRender = item.getComponent(ItemRender_1.default); - var itemIndex = itemRender.itemIndex - items.length; - itemRender.itemIndex = itemIndex; - itemRender.data = this.itemDataList[itemIndex]; - itemRender.dataChanged(); - item.x = item.x - offset; - } - } - else { - //item左滑时,超出了scrollView左边界,将item移动到右方复用,item移动到右方的位置必须不超过content的右边界 - if (viewPos.x < -bufferZone && item.x + offset + this.padding_right < this.content.width) { - var itemRender = item.getComponent(ItemRender_1.default); - var itemIndex = itemRender.itemIndex + items.length; - itemRender.itemIndex = itemIndex; - itemRender.data = this.itemDataList[itemIndex]; - itemRender.dataChanged(); - item.x = item.x + offset; - } - } - } - this.lastContentPosX = this.scrollView.content.x; - }; - /**网格垂直排列 */ - List.prototype.updateGrid_V = function () { - var items = this.itemList; - var item; - var bufferZone = this.halfScrollView; - var isUp = this.scrollView.content.y > this.lastContentPosY; - var offset = (this.itemHeight + this.spaceY) * (this.spawnCount / this.gridCol); - for (var i = 0; i < items.length; i++) { - item = items[i]; - var viewPos = this.getPositionInView(item); - if (isUp) { - //item上滑时,超出了scrollView上边界,将item移动到下方复用,item移动到下方的位置必须不超过content的下边界 - if (viewPos.y > bufferZone && item.y - offset - this.padding_buttom > -this.content.height) { - var itemRender = item.getComponent(ItemRender_1.default); - var itemIndex = itemRender.itemIndex + (this.spawnCount / this.gridCol) * this.gridCol; - if (this.itemDataList[itemIndex] != null) { - item.y = item.y - offset; - itemRender.itemIndex = itemIndex; - itemRender.data = this.itemDataList[itemIndex]; - itemRender.dataChanged(); - item.opacity = 255; - } - else { - item.y = item.y - offset; - itemRender.itemIndex = itemIndex; - item.opacity = 0; - } - } - } - else { //item下滑时,超出了scrollView下边界,将item移动到上方复用,item移动到上方的位置必须不超过content的上边界 - if (viewPos.y < -bufferZone && item.y + offset + this.padding_top < 0) { - var itemRender = item.getComponent(ItemRender_1.default); - var itemIndex = itemRender.itemIndex - (this.spawnCount / this.gridCol) * this.gridCol; - if (this.itemDataList[itemIndex] != null) { - item.y = item.y + offset; - itemRender.itemIndex = itemIndex; - itemRender.data = this.itemDataList[itemIndex]; - itemRender.dataChanged(); - item.opacity = 255; - } - else { - item.y = item.y + offset; - itemRender.itemIndex = itemIndex; - item.opacity = 0; - } - } - } - } - this.lastContentPosY = this.scrollView.content.y; - }; - /**网格水平排列 */ - List.prototype.updateGrid_H = function () { - var items = this.itemList; - var item; - var bufferZone = this.halfScrollView; - var isRight = this.scrollView.content.x > this.lastContentPosX; - var offset = (this.itemWidth + this.spaceX) * (this.spawnCount / this.gridRow); - for (var i = 0; i < items.length; i++) { - item = items[i]; - var viewPos = this.getPositionInView(item); - if (isRight) { - //item右滑时,超出了scrollView右边界,将item移动到左方复用,item移动到左方的位置必须不超过content的左边界 - if (viewPos.x > bufferZone && item.x - offset - this.padding_left > 0) { - var itemRender = item.getComponent(ItemRender_1.default); - var itemIndex = itemRender.itemIndex - (this.spawnCount / this.gridRow) * this.gridRow; - if (this.itemDataList[itemIndex] != null) { - item.x = item.x - offset; - itemRender.itemIndex = itemIndex; - itemRender.data = this.itemDataList[itemIndex]; - itemRender.dataChanged(); - item.opacity = 255; - } - else { - item.x = item.x - offset; - itemRender.itemIndex = itemIndex; - item.opacity = 0; - } - } - } - else { - //item左滑时,超出了scrollView左边界,将item移动到右方复用,item移动到右方的位置必须不超过content的右边界 - if (viewPos.x < -bufferZone && item.x + offset + this.padding_right < this.content.width) { - var itemRender = item.getComponent(ItemRender_1.default); - var itemIndex = itemRender.itemIndex + (this.spawnCount / this.gridRow) * this.gridRow; - if (this.itemDataList[itemIndex] != null) { - item.x = item.x + offset; - itemRender.itemIndex = itemIndex; - itemRender.data = this.itemDataList[itemIndex]; - itemRender.dataChanged(); - item.opacity = 255; - } - else { - item.x = item.x + offset; - itemRender.itemIndex = itemIndex; - item.opacity = 0; - } - } - } - } - this.lastContentPosX = this.scrollView.content.x; - }; - /**获取item在scrollView的局部坐标 */ - List.prototype.getPositionInView = function (item) { - var worldPos = item.parent.convertToWorldSpaceAR(item.position); - var viewPos = this.scrollView.node.convertToNodeSpaceAR(worldPos); - return viewPos; - }; - /**获取列表数据 */ - List.prototype.getListData = function () { - return this.itemDataList; - }; - /** - * 增加一项数据到列表的末尾 - * @param data 数据 - */ - List.prototype.addItem = function (data) { - this.itemDataList.push(data); - this.updateContent(); - }; - /** - * 增加一项数据到列表指定位置 - * @param index 位置,0表示第1项 - * @param data 数据 - */ - List.prototype.addItemAt = function (index, data) { - if (this.itemDataList[index] != null || this.itemDataList.length == index) { - this.itemDataList.splice(index, 1, data); - this.updateContent(); - } - }; - /** - * 删除一项数据 - * @param index 删除项的位置 ,0表示第1项 - */ - List.prototype.deleteItem = function (index) { - if (this.itemDataList[index] != null) { - this.itemDataList.splice(index, 1); - this.updateContent(); - } - }; - /** - * 改变一项数据 - * @param index 位置,0表示第1项 - * @param data 替换的数据 - */ - List.prototype.changeItem = function (index, data) { - if (this.itemDataList[index] != null) { - this.itemDataList[index] = data; - this.updateContent(); - } - }; - /**获取第一个Item的位置 */ - List.prototype.updateContent = function () { - //显示列表实例为0个 - if (this.itemList.length == 0) { - this.countListParam(); - this.createList(0, new cc.Vec2(0, 0)); - //显示列表的实例不为0个,则需要重新排列item实例数组 - } - else { - if (this.type == ListType.Vertical) { - this.itemList.sort(function (a, b) { - return b.y - a.y; - }); - } - else if (this.type == ListType.Horizontal) { - this.itemList.sort(function (a, b) { - return a.x - b.x; - }); - } - else if (this.type == ListType.Grid) { - if (this.startAxis == StartAxisType.Vertical) { - this.itemList.sort(function (a, b) { - return a.x - b.x; - }); - this.itemList.sort(function (a, b) { - return b.y - a.y; - }); - } - else if (this.startAxis == StartAxisType.Horizontal) { - this.itemList.sort(function (a, b) { - return b.y - a.y; - }); - this.itemList.sort(function (a, b) { - return a.x - b.x; - }); - } - } - this.countListParam(); - //获取第一个item实例需要显示的数据索引 - var startIndex = this.itemList[0].getComponent(ItemRender_1.default).itemIndex; - if (this.type == ListType.Grid && this.startAxis == StartAxisType.Vertical) { - startIndex += (startIndex + this.spawnCount) % this.gridCol; - } - else if (this.type == ListType.Grid && this.startAxis == StartAxisType.Horizontal) { - startIndex += (startIndex + this.spawnCount) % this.gridRow; - } - //getScrollOffset()和scrollToOffset()的x值是相反的 - var offset = this.scrollView.getScrollOffset(); - offset.x = -offset.x; - this.createList(startIndex, offset); - } - }; - /**销毁 */ - List.prototype.onDestroy = function () { - //清理列表项 - var len = this.itemList.length; - for (var i = 0; i < len; i++) { - if (cc.isValid(this.itemList[i], true)) { - this.itemList[i].destroy(); - } - } - this.itemList.length = 0; - //清理对象池 - len = this.itemPool.length; - for (var i = 0; i < len; i++) { - if (cc.isValid(this.itemPool[i], true)) { - this.itemPool[i].destroy(); - } - } - this.itemPool.length = 0; - //清理列表数据 - this.itemDataList.length = 0; - }; - __decorate([ - property({ type: cc.Node, tooltip: "列表项" }) - ], List.prototype, "itemRender", void 0); - __decorate([ - property({ type: cc.Enum(ListType), tooltip: "排列方式" }) - ], List.prototype, "type", void 0); - __decorate([ - property({ type: cc.Enum(StartAxisType), tooltip: "网格布局中的方向", visible: function () { return this.type == ListType.Grid; } }) - ], List.prototype, "startAxis", void 0); - __decorate([ - property({ type: cc.Integer, tooltip: "列表项X间隔", visible: function () { return (this.type == ListType.Horizontal || this.type == ListType.Grid); } }) - ], List.prototype, "spaceX", void 0); - __decorate([ - property({ type: cc.Integer, tooltip: "列表项Y间隔", visible: function () { return this.type == ListType.Vertical || this.type == ListType.Grid; } }) - ], List.prototype, "spaceY", void 0); - __decorate([ - property({ type: cc.Integer, tooltip: "上间距", visible: function () { return (this.type == ListType.Vertical || this.type == ListType.Grid); } }) - ], List.prototype, "padding_top", void 0); - __decorate([ - property({ type: cc.Integer, tooltip: "下间距", visible: function () { return (this.type == ListType.Vertical || this.type == ListType.Grid); } }) - ], List.prototype, "padding_buttom", void 0); - __decorate([ - property({ type: cc.Integer, tooltip: "左间距", visible: function () { return (this.type == ListType.Horizontal || this.type == ListType.Grid); } }) - ], List.prototype, "padding_left", void 0); - __decorate([ - property(cc.Integer) - ], List.prototype, "_padding", void 0); - __decorate([ - property({ type: cc.Integer, tooltip: "右间距", visible: function () { return (this.type == ListType.Horizontal || this.type == ListType.Grid); } }) - ], List.prototype, "padding_right", void 0); - List = __decorate([ - ccclass - ], List); - return List; -}(cc.Component)); -exports.default = List; - -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,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImFzc2V0c1xcU2NyaXB0XFxtb2R1bGVcXFJhbmtMaXN0XFxMaXN0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSxvQkFBb0I7QUFDcEIsd0VBQXdFO0FBQ3hFLG1CQUFtQjtBQUNuQixrRkFBa0Y7QUFDbEYsOEJBQThCO0FBQzlCLGtGQUFrRjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUVsRiwyQ0FBcUM7QUFFL0IsSUFBQSxLQUF3QixFQUFFLENBQUMsVUFBVSxFQUFuQyxPQUFPLGFBQUEsRUFBRSxRQUFRLGNBQWtCLENBQUM7QUFFNUMsWUFBWTtBQUNaLElBQVksUUFPWDtBQVBELFdBQVksUUFBUTtJQUNoQixVQUFVO0lBQ1YsbURBQWMsQ0FBQTtJQUNkLFVBQVU7SUFDViwrQ0FBWSxDQUFBO0lBQ1osVUFBVTtJQUNWLHVDQUFRLENBQUE7QUFDWixDQUFDLEVBUFcsUUFBUSxHQUFSLGdCQUFRLEtBQVIsZ0JBQVEsUUFPbkI7QUFFRCxjQUFjO0FBQ2QsSUFBWSxhQUtYO0FBTEQsV0FBWSxhQUFhO0lBQ3JCLFVBQVU7SUFDViw2REFBYyxDQUFBO0lBQ2QsVUFBVTtJQUNWLHlEQUFZLENBQUE7QUFDaEIsQ0FBQyxFQUxXLGFBQWEsR0FBYixxQkFBYSxLQUFiLHFCQUFhLFFBS3hCO0FBRUQ7Ozs7Ozs7R0FPRztBQUVIO0lBQWtDLHdCQUFZO0lBQTlDO1FBQUEscUVBeWlCQztRQXZpQkcscURBQXFEO1FBQ3JELFVBQVU7UUFFSCxnQkFBVSxHQUFZLElBQUksQ0FBQztRQUVsQyxVQUFVO1FBRUgsVUFBSSxHQUFhLFFBQVEsQ0FBQyxRQUFRLENBQUM7UUFFMUMsY0FBYztRQUVQLGVBQVMsR0FBa0IsYUFBYSxDQUFDLFVBQVUsQ0FBQztRQUUzRCxjQUFjO1FBRVAsWUFBTSxHQUFXLENBQUMsQ0FBQztRQUUxQixjQUFjO1FBRVAsWUFBTSxHQUFXLENBQUMsQ0FBQztRQUUxQixTQUFTO1FBRUYsaUJBQVcsR0FBVyxDQUFDLENB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SSxDQUFDLENBQUEsQ0FBQyxDQUFDLEVBQUUsQ0FBQzs4Q0FDdEc7SUFLaEM7UUFEQyxRQUFRLENBQUMsRUFBRSxDQUFDLE9BQU8sQ0FBQzswQ0FDTztJQUk1QjtRQURDLFFBQVEsQ0FBQyxFQUFFLElBQUksRUFBRSxFQUFFLENBQUMsT0FBTyxFQUFFLE9BQU8sRUFBRSxLQUFLLEVBQUUsT0FBTyxnQkFBSyxPQUFPLENBQUMsSUFBSSxDQUFDLElBQUksSUFBSSxRQUFRLENBQUMsVUFBVSxJQUFJLElBQUksQ0FBQyxJQUFJLElBQUksUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFBLENBQUMsQ0FBQyxFQUFFLENBQUM7K0NBQ3JHO0lBMUNoQixJQUFJO1FBRHhCLE9BQU87T0FDYSxJQUFJLENBeWlCeEI7SUFBRCxXQUFDO0NBemlCRCxBQXlpQkMsQ0F6aUJpQyxFQUFFLENBQUMsU0FBUyxHQXlpQjdDO2tCQXppQm9CLElBQUkiLCJmaWxlIjoiIiwic291cmNlUm9vdCI6Ii8iLCJzb3VyY2VzQ29udGVudCI6WyIvLyBMZWFybiBUeXBlU2NyaXB0OlxyXG4vLyAgLSBodHRwczovL2RvY3MuY29jb3MuY29tL2NyZWF0b3IvbWFudWFsL2VuL3NjcmlwdGluZy90eXBlc2NyaXB0Lmh0bWxcclxuLy8gTGVhcm4gQXR0cmlidXRlOlxyXG4vLyAgLSBodHRwczovL2RvY3MuY29jb3MuY29tL2NyZWF0b3IvbWFudWFsL2VuL3NjcmlwdGluZy9yZWZlcmVuY2UvYXR0cmlidXRlcy5odG1sXHJcbi8vIExlYXJuIGxpZmUtY3ljbGUgY2FsbGJhY2tzOlxyXG4vLyAgLSBodHRwczovL2RvY3MuY29jb3MuY29tL2NyZWF0b3IvbWFudWFsL2VuL3NjcmlwdGluZy9saWZlLWN5Y2xlLWNhbGxiYWNrcy5odG1sXHJcblxyXG5pbXBvcnQgSXRlbVJlbmRlciBmcm9tIFwiLi9JdGVtUmVuZGVyXCJcclxuXHJcbmNvbnN0IHsgY2NjbGFzcywgcHJvcGVydHkgfSA9IGNjLl9kZWNvcmF0b3I7XHJcblxyXG4vKirliJfooajmjpLliJfmlrnlvI8gKi9cclxuZXhwb3J0IGVudW0gTGlzdFR5cGUge1xyXG4gICAgLyoq5rC05bmz5o6S5YiXICovXHJcbiAgICBIb3Jpem9udGFsID0gMSxcclxuICAgIC8qKuWeguebtOaOkuWIlyAqL1xyXG4gICAgVmVydGljYWwgPSAyLFxyXG4gICAgLyoq572R5qC85o6S5YiXICovXHJcbiAgICBHcmlkID0gM1xyXG59XHJcblxyXG4vKirnvZHmoLzluIPlsYDkuK3nmoTmlrnlkJEgKi9cclxuZXhwb3J0IGVudW0gU3RhcnRBeGlzVHlwZSB7XHJcbiAgICAvKirmsLTlubPmjpLliJcgKi9cclxuICAgIEhvcml6b250YWwgPSAxLFxyXG4gICAgLyoq5Z6C55u05o6S5YiXICovXHJcbiAgICBWZXJ0aWNhbCA9IDIsXHJcbn1cclxuXHJcbi8qKlxyXG4gKiDliJfooahcclxuICog5qC55o2uY29jb3NfZXhhbXBsZeeahGxpc3RWaWV35pS55Yqo6ICM5p2lXHJcbiAqIEBhdXRob3IgY2hlbmthaSAyMDIwLjcuOFxyXG4gKiBAZXhhbXBsZVxyXG4gKiAgMS7liJvlu7pjb2Nvc+eahFNjcm9sbFZpZXfnu4Tku7bvvIzmt7vliqBMaXN077yM6K6+572uTGlzdOWxnuaAp+WNs+WPr1xyXG4gKiAgXHJcbiAqL1xyXG5AY2NjbGFzc1xyXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBMaXN0IGV4dGVuZHMgY2MuQ29tcG9uZW50IHtcclxuXHJcbiAgICAvLz09PT09PT09PT09PT09PT09PT09IOWxnuaAp+mdouadvyA9PT09PT09PT09PT09PT09PT09PT09PT09XHJcbiAgICAvKirliJfooajpgInpobkgKi9cclxuICAgIEBwcm9wZXJ0eSh7IHR5cGU6IGNjLk5vZGUsIHRvb2x0aXA6IFwi5YiX6KGo6aG5XCIgfSlcclxuICAgIHB1YmxpYyBpdGVtUmVuZGVyOiBjYy5Ob2RlID0gbnVsbDtcclxuXHJcbiAgICAvKirmjpLliJfmlrnlvI8gKi9cclxuICAgIEBwcm9wZXJ0eSh7IHR5cGU6IGNjLkVudW0oTGlzdFR5cGUpLCB0b29sdGlwOiBcIuaOkuWIl+aWueW8j1wiIH0pXHJcbiAgICBwdWJsaWMgdHlwZTogTGlzdFR5cGUgPSBMaXN0VHlwZS5WZXJ0aWNhbDtcclxuXHJcbiAgICAvKirnvZHmoLzluIPlsYDkuK3nmoTmlrnlkJEgKi9cclxuICAgIEBwcm9wZXJ0eSh7IHR5cGU6IGNjLkVudW0oU3RhcnRBeGlzVHlwZSksIHRvb2x0aXA6IFwi572R5qC85biD5bGA5Lit55qE5pa55ZCRXCIsIHZpc2libGUoKSB7IHJldHVybiB0aGlzLnR5cGUgPT0gTGlzdFR5cGUuR3JpZCB9IH0pXHJcbiAgICBwdWJsaWMgc3RhcnRBeGlzOiBTdGFydEF4aXNUeXBlID0gU3RhcnRBeGlzVHlwZS5Ib3Jpem9udGFsO1xyXG5cclxuICAgIC8qKuWIl+ihqOmhueS5i+mXtFjpl7TpmpQgKi9cclxuICAgIEBwcm9wZXJ0eSh7IHR5cGU6IGNjLkludGVnZXIsIHRvb2x0aXA6IFwi5YiX6KGo6aG5WOmXtOmalFwiLCB2aXNpYmxlKCkgeyByZXR1cm4gKHRoaXMudHlwZSA9PSBMaXN0VHlwZS5Ib3Jpem9udGFsIHx8IHRoaXMudHlwZSA9PSBMaXN0VHlwZS5HcmlkKSB9IH0pXHJcbiAgICBwdWJsaWMgc3BhY2VYOiBudW1iZXIgPSAwO1xyXG5cclxuICAgIC8qKuWIl+ihqOmhueS5i+mXtFnpl7TpmpQgKi9cclxuICAgIEBwcm9wZXJ0eSh7IHR5cGU6IGNjLkludGVnZXIsIHRvb2x0aXA6IFwi5YiX6KGo6aG5WemXtOmalFwiLCB2aXNpYmxlKCkgeyByZXR1cm4gdGhpcy50eXBlID09IExpc3RUeXBlLlZlcnRpY2FsIHx8IHRoaXMudHlwZSA9PSBMaXN0VHlwZS5HcmlkIH0gfSlcclxuICAgIHB1YmxpYyBzcGFjZVk6IG51bWJlciA9IDA7XHJcblxyXG4gICAgLyoq5LiK6Ze06LedICovXHJcbiAgICBAcHJvcGVydHkoeyB0eXBlOiBjYy5JbnRlZ2VyLCB0b29sdGlwOiBcIuS4iumXtOi3nVwiLCB2aXNpYmxlKCkgeyByZXR1cm4gKHRoaXMudHlwZSA9PSBMaXN0VHlwZS5WZXJ0aWNhbCB8fCB0aGlzLnR5cGUgPT0gTGlzdFR5cGUuR3JpZCkgfSB9KVxyXG4gICAgcHVibGljIHBhZGRpbmdfdG9wOiBudW1iZXIgPSAwO1xyXG5cclxuICAgIC8qKuS4i+mXtOi3nSAqL1xyXG4gICAgQHByb3BlcnR5KHsgdHlwZTogY2MuSW50ZWdlciwgdG9vbHRpcDogXCLkuIvpl7Tot51cIiwgdmlzaWJsZSgpIHsgcmV0dXJuICh0aGlzLnR5cGUgPT0gTGlzdFR5cGUuVmVydGljYWwgfHwgdGhpcy50eXBlID09IExpc3RUeXBlLkdyaWQpIH0gfSlcclxuICAgIHB1YmxpYyBwYWRkaW5nX2J1dHRvbTogbnVtYmVyID0gMDtcclxuXHJcbiAgICAvKirlt6bpl7Tot50gKi9cclxuICAgIEBwcm9wZXJ0eSh7IHR5cGU6IGNjLkludGVnZXIsIHRvb2x0aXA6IFwi5bem6Ze06LedXCIsIHZpc2libGUoKSB7IHJldHVybiAodGhpcy50eXBlID09IExpc3RUeXBlLkhvcml6b250YWwgfHwgdGhpcy50eXBlID09IExpc3RUeXBlLkdyaWQpIH0gfSlcclxuICAgIHB1YmxpYyBwYWRkaW5nX2xlZnQ6IG51bWJlciA9IDA7XHJcblxyXG5cclxuXHJcbiAgICBAcHJvcGVydHkoY2MuSW50ZWdlcilcclxuICAgIHB1YmxpYyBfcGFkZGluZzogbnVtYmVyID0gMDtcclxuXHJcbiAgICAvKirlj7Ppl7Tot50gKi9cclxuICAgIEBwcm9wZXJ0eSh7IHR5cGU6IGNjLkludGVnZXIsIHRvb2x0aXA6IFwi5Y+z6Ze06LedXCIsIHZpc2libGUoKSB7IHJldHVybiAodGhpcy50eXBlID09IExpc3RUeXBlLkhvcml6b250YWwgfHwgdGhpcy50eXBlID09IExpc3RUeXBlLkdyaWQpIH0gfSlcclxuICAgIHB1YmxpYyBwYWRkaW5nX3JpZ2h0OiBudW1iZXIgPSAwO1xyXG5cclxuICAgIC8vPT09PT09PT09PT09PT09PT09PT09PSDmu5rliqjlrrnlmaggPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxyXG4gICAgLyoq5YiX6KGo5rua5Yqo5a655ZmoICovXHJcbiAgICBwdWJsaWMgc2Nyb2xsVmlldzogY2MuU2Nyb2xsVmlldyA9IG51bGw7XHJcbiAgICAvKipzY3JvbGxWaWV355qE5YaF5a655a655ZmoICovXHJcbiAgICBwcml2YXRlIGNvbnRlbnQ6IGNjLk5vZGUgPSBudWxsO1xyXG5cclxuICAgIC8vPT09PT09PT09PT09PT09PT09PT09PT09IOWIl+ihqOmhuSA9PT09PT09PT09PT09PT09PT09PT09PT09PT1cclxuICAgIC8qKuWIl+ihqOmhueaVsOaNriAqL1xyXG4gICAgcHJpdmF0ZSBpdGVtRGF0YUxpc3Q6IEFycmF5PGFueT4gPSBbXTtcclxuICAgIC8qKuW6lOWIm+W7uueahOWunuS+i+aVsOmHjyAqL1xyXG4gICAgcHJpdmF0ZSBzcGF3bkNvdW50OiBudW1iZXIgPSAwO1xyXG4gICAgLyoq5a2Y5pS+5YiX6KGo6aG55a6e5L6L55qE5pWw57uEICovXHJcbiAgICBwcml2YXRlIGl0ZW1MaXN0OiBBcnJheTxjYy5Ob2RlPiA9IFtdO1xyXG4gICAgLyoqaXRlbeeahOmrmOW6piAqL1xyXG4gICAgcHJpdmF0ZSBpdGVtSGVpZ2h0OiBudW1iZXIgPSAwO1xyXG4gICAgLyoqaXRlbeeahOWuveW6piAqL1xyXG4gICAgcHJpdmF0ZSBpdGVtV2lkdGg6IG51bWJlciA9IDA7XHJcbiAgICAvKirlrZjmlL7kuI3lho3kvb/nlKjkuK3nmoTliJfooajpobkgKi9cclxuICAgIHByaXZhdGUgaXRlbVBvb2w6IEFycmF5PGNjLk5vZGU+ID0gW107XHJcblxyXG4gICAgLy89PT09PT09PT09PT09PT09PT09PT09PSDorqHnrpflj4LmlbAgPT09PT09PT09PT09PT09PT09PT09PT09PT1cclxuICAgIC8qKui3neemu3Njcm9sbFZpZXfkuK3lv4PngrnnmoTot53nprvvvIzotoXov4fov5nkuKrot53nprvnmoRpdGVt5Lya6KKr6YeN572u77yM5LiA6Iis6K6+572u5Li6IHNjcm9sbFZJZXcuaGVpZ2h0LzIgKyBpdGVtLmhlaWd0LzIgKyBzcGFjZe+8jOWboOS4uui/meS4qui3neemu2l0ZW3mraPlpb3otoXlh7pzY3JvbGxWaWV35pi+56S66IyD5Zu0ICovXHJcbiAgICBwcml2YXRlIGhhbGZTY3JvbGxWaWV3OiBudW1iZXIgPSAwO1xyXG4gICAgLyoq5LiK5LiA5qyhY29udGVudOeahFjlgLzvvIznlKjkuo7lkoznjrDlnKhjb250ZW5055qEWOWAvOavlOi+g++8jOW+l+WHuuaYr+WQkeW3pui/mOaYr+WQkeWPs+a7muWKqCAqL1xyXG4gICAgcHJpdmF0ZSBsYXN0Q29udGVudFBvc1g6IG51bWJlciA9IDA7XHJcbiAgICAvKirkuIrkuIDmrKFjb250ZW5055qEWeWAvO+8jOeUqOS6juWSjOeOsOWcqGNvbnRlbnTnmoRZ5YC85q+U6L6D77yM5b6X5Ye65piv5ZCR5LiK6L+Y5piv5ZCR5LiL5rua5YqoICovXHJcbiAgICBwcml2YXRlIGxhc3RDb250ZW50UG9zWTogbnVtYmVyID0gMDtcclxuICAgIC8qKue9keagvOihjOaVsCAqL1xyXG4gICAgcHJpdmF0ZSBncmlkUm93OiBudW1iZXIgPSAwO1xyXG4gICAgLyoq572R5qC85YiX5pWwICovXHJcbiAgICBwcml2YXRlIGdyaWRDb2w6IG51bWJlciA9IDA7XHJcbiAgICAvKirliLfmlrDml7bpl7TvvIzljZXkvY1zICovXHJcbiAgICBwcml2YXRlIHVwZGF0ZVRpbWVyOiBudW1iZXIgPSAwO1xyXG4gICAgLyoq5Yi35paw6Ze06ZqU77yM5Y2V5L2NcyAqL1xyXG4gICAgcHJpdmF0ZSB1cGRhdGVJbnRlcnZhbDogbnVtYmVyID0gMC4xO1xyXG4gICAgLyoq5piv5ZCm5rua5Yqo5a655ZmoICovXHJcbiAgICBwcml2YXRlIGJTY3JvbGxpbmc6IGJvb2xlYW4gPSBmYWxzZTtcclxuICAgIC8qKuWIt+aWsOeahOWHveaVsCAqL1xyXG4gICAgcHJpdmF0ZSB1cGRhdGVGdW46IEZ1bmN0aW9uID0gZnVuY3Rpb24gKCkgeyB9O1xyXG5cclxuICAgIG9uTG9hZCgpIHtcclxuICAgICAgICB0aGlzLml0ZW1IZWlnaHQgPSB0aGlzLml0ZW1SZW5kZXIuaGVpZ2h0O1xyXG4gICAgICAgIHRoaXMuaXRlbVdpZHRoID0gdGhpcy5pdGVtUmVuZGVyLndpZHRoO1xyXG4gICAgICAgIHRoaXMuc2Nyb2xsVmlldyA9IHRoaXMubm9kZS5nZXRDb21wb25lbnQoY2MuU2Nyb2xsVmlldyk7XHJcbiAgICAgICAgdGhpcy5jb250ZW50ID0gdGhpcy5zY3JvbGxWaWV3LmNvbnRlbnQ7XHJcbiAgICAgICAgdGhpcy5jb250ZW50LmFuY2hvclggPSAwO1xyXG4gICAgICAgIHRoaXMuY29udGVudC5hbmNob3JZID0gMTtcclxuICAgICAgICB0aGlzLmNvbnRlbnQucmVtb3ZlQWxsQ2hpbGRyZW4oKTtcclxuICAgICAgICB0aGlzLnNjcm9sbFZpZXcubm9kZS5vbihcInNjcm9sbGluZ1wiLCB0aGlzLm9uU2Nyb2xsaW5nLCB0aGlzKTtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIOWIl+ihqOaVsOaNriAo5YiX6KGo5pWw5o2u5aSN5Yi25L2/55So77yM5aaC5p6c5YiX6KGo5pWw5o2u5pS55Y+Y77yM5YiZ6ZyA6KaB6YeN5paw6K6+572u5LiA6YGN5pWw5o2uKVxyXG4gICAgICogQHBhcmFtIGl0ZW1EYXRhTGlzdCBpdGVt5pWw5o2u5YiX6KGoXHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyBzZXREYXRhKGl0ZW1EYXRhTGlzdDogQXJyYXk8YW55Pikge1xyXG4gICAgICAgIHRoaXMuaXRlbURhdGFMaXN0ID0gaXRlbURhdGFMaXN0LnNsaWNlKCk7XHJcbiAgICAgICAgdGhpcy51cGRhdGVDb250ZW50KCk7XHJcbiAgICAgICBcclxuICAgIH1cclxuXHJcbiAgICAvKirorqHnrpfliJfooajnmoTlkITpobnlj4LmlbAgKi9cclxuICAgIHByaXZhdGUgY291bnRMaXN0UGFyYW0oKSB7XHJcbiAgICAgICAgbGV0IGRhdGFMZW4gPSB0aGlzLml0ZW1EYXRhTGlzdC5sZW5ndGg7XHJcbiAgICAgICAgaWYgKHRoaXMudHlwZSA9PSBMaXN0VHlwZS5WZXJ0aWNhbCkge1xyXG4gICAgICAgICAgICB0aGlzLnNjcm9sbFZpZXcuaG9yaXpvbnRhbCA9IGZhbHNlO1xyXG4gICAgICAgICAgICB0aGlzLnNjcm9sbFZpZXcudmVydGljYWwgPSB0cnVlO1xyXG4gICAgICAgICAgICB0aGlzLmNvbnRlbnQud2lkdGggPSB0aGlzLmNvbnRlbnQucGFyZW50LndpZHRoO1xyXG4gICAgICAgICAgICB0aGlzLmNvbnRlbnQuaGVpZ2h0ID0gZGF0YUxlbiAqIHRoaXMuaXRlbUhlaWdodCArIChkYXRhTGVuIC0gMSkgKiB0aGlzLnNwYWNlWSArIHRoaXMucGFkZGluZ190b3AgKyB0aGlzLnBhZGRpbmdfYnV0dG9tO1xyXG4gICAgICAgICAgICB0aGlzLnNwYXduQ291bnQgPSBNYXRoLnJvdW5kKHRoaXMuc2Nyb2xsVmlldy5ub2RlLmhlaWdodCAvICh0aGlzLml0ZW1IZWlnaHQgKyB0aGlzLnNwYWNlWSkpICsgMjsgLy/orqHnrpfliJvlu7rnmoRpdGVt5a6e5L6L5pWw6YeP77yM5q+U5b2T5YmNc2Nyb2xsVmlld+WuueWZqOiDveaUvuS4i+eahGl0ZW3mlbDph4/lho3liqDkuIoy5LiqXHJcbiAgICAgICAgICAgIHRoaXMuaGFsZlNjcm9sbFZpZXcgPSB0aGlzLnNjcm9sbFZpZXcubm9kZS5oZWlnaHQgLyAyICsgdGhpcy5pdGVtSGVpZ2h0IC8gMiArIHRoaXMuc3BhY2VZOyAvL+iuoeeul2J1ZmZlclpvbmXvvIxpdGVt55qE5pi+56S66IyD5Zu0XHJcbiAgICAgICAgICAgIHRoaXMudXBkYXRlRnVuID0gdGhpcy51cGRhdGVWO1xyXG4gICAgICAgIH0gZWxzZSBpZiAodGhpcy50eXBlID09IExpc3RUeXBlLkhvcml6b250YWwpIHtcclxuICAgICAgICAgICAgdGhpcy5zY3JvbGxWaWV3Lmhvcml6b250YWwgPSB0cnVlO1xyXG4gICAgICAgICAgICB0aGlzLnNjcm9sbFZpZXcudmVydGljYWwgPSBmYWxzZTtcclxuICAgICAgICAgICAgdGhpcy5jb250ZW50LndpZHRoID0gZGF0YUxlbiAqIHRoaXMuaXRlbVdpZHRoICsgKGRhdGFMZW4gLSAxKSAqIHRoaXMuc3BhY2VYICsgdGhpcy5wYWRkaW5nX2xlZnQgKyB0aGlzLnBhZGRpbmdfcmlnaHQ7XHJcbiAgICAgICAgICAgIHRoaXMuY29udGVudC5oZWlnaHQgPSB0aGlzLmNvbnRlbnQucGFyZW50LmhlaWdodDtcclxuICAgICAgICAgICAgdGhpcy5zcGF3bkNvdW50ID0gTWF0aC5yb3VuZCh0aGlzLnNjcm9sbFZpZXcubm9kZS53aWR0aCAvICh0aGlzLml0ZW1XaWR0aCArIHRoaXMuc3BhY2VYKSkgKyAyO1xyXG4gICAgICAgICAgICB0aGlzLmhhbGZTY3JvbGxWaWV3ID0gdGhpcy5zY3JvbGxWaWV3Lm5vZGUud2lkdGggLyAyICsgdGhpcy5pdGVtV2lkdGggLyAyICsgdGhpcy5zcGFjZVg7XHJcbiAgICAgICAgICAgIHRoaXMudXBkYXRlRnVuID0gdGhpcy51ZHBhdGVIO1xyXG4gICAgICAgIH0gZWxzZSBpZiAodGhpcy50eXBlID09IExpc3RUeXBlLkdyaWQpIHtcclxuICAgICAgICAgICAgaWYgKHRoaXMuc3RhcnRBeGlzID09IFN0YXJ0QXhpc1R5cGUuVmVydGljYWwpIHtcclxuICAgICAgICAgICAgICAgIHRoaXMuc2Nyb2xsVmlldy5ob3Jpem9udGFsID0gZmFsc2U7XHJcbiAgICAgICAgICAgICAgICB0aGlzLnNjcm9sbFZpZXcudmVydGljYWwgPSB0cnVlO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5jb250ZW50LndpZHRoID0gdGhpcy5jb250ZW50LnBhcmVudC53aWR0aDtcclxuICAgICAgICAgICAgICAgIC8v5aaC5p6cbGVmdOWSjHJpZ2h06Ze06ZqU6L+H5aSn77yM5a+86Ie05pS+5LiN5LiL5LiA5LiqaXRlbe+8jOWImWxlZnTlkoxyaWdodOmDveiuvue9ruS4ujDvvIznm7jlvZPkuo7kuI3nlJ/mlYhcclxuICAgICAgICAgICAgICAgIGlmICh0aGlzLnBhZGRpbmdfbGVmdCArIHRoaXMucGFkZGluZ19yaWdodCArIHRoaXMuaXRlbVdpZHRoICsgdGhpcy5zcGFjZVggPiB0aGlzLmNvbnRlbnQud2lkdGgpIHtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLnBhZGRpbmdfbGVmdCA9IDA7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5wYWRkaW5nX3JpZ2h0ID0gMDtcclxuICAgICAgICAgICAgICAgICAgICBjb25zb2xlLmVycm9yKFwicGFkZGluZ19sZWZ05oiWcGFkZGluZ19yaWdodOi/h+Wkp1wiKTtcclxuICAgICAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgICAgICB0aGlzLmdyaWRDb2wgPSBNYXRoLmZsb29yKCh0aGlzLmNvbnRlbnQud2lkdGggLSB0aGlzLnBhZGRpbmdfbGVmdCAtIHRoaXMucGFkZGluZ19yaWdodCkgLyAodGhpcy5pdGVtV2lkdGggKyB0aGlzLnNwYWNlWCkpO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5ncmlkUm93ID0gTWF0aC5jZWlsKGRhdGFMZW4gLyB0aGlzLmdyaWRDb2wpO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5jb250ZW50LmhlaWdodCA9IHRoaXMuZ3JpZFJvdyAqIHRoaXMuaXRlbUhlaWdodCArICh0aGlzLmdyaWRSb3cgLSAxKSAqIHRoaXMuc3BhY2VZICsgdGhpcy5wYWRkaW5nX3RvcCArIHRoaXMucGFkZGluZ19idXR0b207XHJcbiAgICAgICAgICAgICAgICB0aGlzLnNwYXduQ291bnQgPSBNYXRoLnJvdW5kKHRoaXMuc2Nyb2xsVmlldy5ub2RlLmhlaWdodCAvICh0aGlzLml0ZW1IZWlnaHQgKyB0aGlzLnNwYWNlWSkpICogdGhpcy5ncmlkQ29sICsgdGhpcy5ncmlkQ29sICogMjtcclxuICAgICAgICAgICAgICAgIHRoaXMuaGFsZlNjcm9sbFZpZXcgPSB0aGlzLnNjcm9sbFZpZXcubm9kZS5oZWlnaHQgLyAyICsgdGhpcy5pdGVtSGVpZ2h0IC8gMiArIHRoaXMuc3BhY2VZO1xyXG4gICAgICAgICAgICAgICAgdGhpcy51cGRhdGVGdW4gPSB0aGlzLnVwZGF0ZUdyaWRfVjtcclxuICAgICAgICAgICAgfSBlbHNlIGlmICh0aGlzLnN0YXJ0QXhpcyA9PSBTdGFydEF4aXNUeXBlLkhvcml6b250YWwpIHtcclxuICAgICAgICAgICAgICAgIHRoaXMuc2Nyb2xsVmlldy5ob3Jpem9udGFsID0gdHJ1ZTtcclxuICAgICAgICAgICAgICAgIHRoaXMuc2Nyb2xsVmlldy52ZXJ0aWNhbCA9IGZhbHNlO1xyXG4gICAgICAgICAgICAgICAgLy/orqHnrpfpq5jpl7TpmpRcclxuICAgICAgICAgICAgICAgIHRoaXMuY29udGVudC5oZWlnaHQgPSB0aGlzLmNvbnRlbnQucGFyZW50LmhlaWdodDtcclxuICAgICAgICAgICAgICAgIC8v5aaC5p6cbGVmdOWSjHJpZ2h06Ze06ZqU6L+H5aSn77yM5a+86Ie05pS+5LiN5LiL5LiA5LiqaXRlbe+8jOWImWxlZnTlkoxyaWdodOmDveiuvue9ruS4ujDvvIznm7jlvZPkuo7kuI3nlJ/mlYhcclxuICAgICAgICAgICAgICAgIGlmICh0aGlzLnBhZGRpbmdfdG9wICsgdGhpcy5wYWRkaW5nX2J1dHRvbSArIHRoaXMuaXRlbUhlaWdodCArIHRoaXMuc3BhY2VZID4gdGhpcy5jb250ZW50LmhlaWdodCkge1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMucGFkZGluZ190b3AgPSAwO1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMucGFkZGluZ19idXR0b20gPSAwO1xyXG4gICAgICAgICAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoXCJwYWRkaW5nX3RvcOaIlnBhZGRpbmdfYnV0dG9t6L+H5aSnXCIpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgICAgIHRoaXMuZ3JpZFJvdyA9IE1hdGguZmxvb3IoKHRoaXMuY29udGVudC5oZWlnaHQgLSB0aGlzLnBhZGRpbmdfdG9wIC0gdGhpcy5wYWRkaW5nX2J1dHRvbSkgLyAodGhpcy5pdGVtSGVpZ2h0ICsgdGhpcy5zcGFjZVkpKTtcclxuICAgICAgICAgICAgICAgIHRoaXMuZ3JpZENvbCA9IE1hdGguY2VpbChkYXRhTGVuIC8gdGhpcy5ncmlkUm93KTtcclxuICAgICAgICAgICAgICAgIHRoaXMuY29udGVudC53aWR0aCA9IHRoaXMuZ3JpZENvbCAqIHRoaXMuaXRlbVdpZHRoICsgKHRoaXMuZ3JpZENvbCAtIDEpICogdGhpcy5zcGFjZVggKyB0aGlzLnBhZGRpbmdfbGVmdCArIHRoaXMucGFkZGluZ19yaWdodDtcclxuICAgICAgICAgICAgICAgIHRoaXMuc3Bhd25Db3VudCA9IE1hdGgucm91bmQodGhpcy5zY3JvbGxWaWV3Lm5vZGUud2lkdGggLyAodGhpcy5pdGVtV2lkdGggKyB0aGlzLnNwYWNlWCkpICogdGhpcy5ncmlkUm93ICsgdGhpcy5ncmlkUm93ICogMjtcclxuICAgICAgICAgICAgICAgIHRoaXMuaGFsZlNjcm9sbFZpZXcgPSB0aGlzLnNjcm9sbFZpZXcubm9kZS53aWR0aCAvIDIgKyB0aGlzLml0ZW1XaWR0aCAvIDIgKyB0aGlzLnNwYWNlWDtcclxuICAgICAgICAgICAgICAgIHRoaXMudXBkYXRlRnVuID0gdGhpcy51cGRhdGVHcmlkX0g7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiDliJvlu7rliJfooaggXHJcbiAgICAgKiBAcGFyYW0gc3RhcnRJbmRleCDotbflp4vmmL7npLrnmoTmlbDmja7ntKLlvJUgMOihqOekuuesrOS4gOmhuVxyXG4gICAgICogQHBhcmFtIG9mZnNldCAgICAgc2Nyb2xsVmlld+WBj+enu+mHj1xyXG4gICAgICovXHJcbiAgICBwcml2YXRlIGNyZWF0ZUxpc3Qoc3RhcnRJbmRleDogbnVtYmVyLCBvZmZzZXQ6IGNjLlZlYzIpIHtcclxuICAgICAgICAvL+W9k+mcgOimgeaYvuekuueahOaVsOaNrumVv+W6piA+IOiZmuaLn+WIl+ihqOmVv+W6pu+8jCDliKDpmaTmnIDmnKvlsL7lh6DkuKrmlbDmja7ml7bvvIzliJfooajpnIDopoHph43nva7kvY3nva7liLBzY3JvbGxWaWV35pyA5bqV56uvXHJcbiAgICAgICAgaWYgKHRoaXMuaXRlbURhdGFMaXN0Lmxlbmd0aCA+IHRoaXMuc3Bhd25Db3VudCAmJiAoc3RhcnRJbmRleCArIHRoaXMuc3Bhd25Db3VudCAtIDEpID49IHRoaXMuaXRlbURhdGFMaXN0Lmxlbmd0aCkge1xyXG4gICAgICAgICAgICBzdGFydEluZGV4ID0gdGhpcy5pdGVtRGF0YUxpc3QubGVuZ3RoIC0gdGhpcy5zcGF3bkNvdW50O1xyXG4gICAgICAgICAgICBvZmZzZXQgPSB0aGlzLnNjcm9sbFZpZXcuZ2V0TWF4U2Nyb2xsT2Zmc2V0KCk7XHJcblxyXG4gICAgICAgICAgICAvL+W9k+mcgOimgeaYvuekuueahOaVsOaNrumVv+W6piA8PSDomZrmi5/liJfooajplb/luqbvvIwg6ZqQ6JeP5aSa5L2Z55qE6Jma5ouf5YiX6KGo6aG5IFxyXG4gICAgICAgIH0gZWxzZSBpZiAodGhpcy5pdGVtRGF0YUxpc3QubGVuZ3RoIDw9IHRoaXMuc3Bhd25Db3VudCkge1xyXG4gICAgICAgICAgICBzdGFydEluZGV4ID0gMDtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdGhpcy5zcGF3bkNvdW50OyBpKyspIHtcclxuICAgICAgICAgICAgbGV0IGl0ZW06IGNjLk5vZGU7XHJcbiAgICAgICAgICAgIC8v6ZyA6KaB5pi+56S655qE5pWw5o2u57Si5byV5Zyo5pWw5o2u6IyD5Zu05YaF77yM5YiZaXRlbeWunuS+i+aYvuekuuWHuuadpVxyXG4gICAgICAgICAgICBpZiAoaSArIHN0YXJ0SW5kZXggPCB0aGlzLml0ZW1EYXRhTGlzdC5sZW5ndGgpIHtcclxuICAgICAgICAgICAgICAgIGlmICh0aGlzLml0ZW1MaXN0W2ldID09IG51bGwpIHtcclxuICAgICAgICAgICAgICAgICAgICBpdGVtID0gdGhpcy5nZXRJdGVtKCk7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5pdGVtTGlzdC5wdXNoKGl0ZW0pO1xyXG4gICAgICAgICAgICAgICAgICAgIGl0ZW0ucGFyZW50ID0gdGhpcy5jb250ZW50O1xyXG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICBpdGVtID0gdGhpcy5pdGVtTGlzdFtpXTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIC8v6ZyA6KaB5pi+56S655qE5pWw5o2u57Si5byV6LaF6L+H5LqG5pWw5o2u6IyD5Zu077yM5YiZaXRlbeWunuS+i+makOiXj+i1t+adpVxyXG4gICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgLy9pdGVt5a6e5L6L5pWw6YePID4g6ZyA6KaB5pi+56S655qE5pWw5o2u6YePXHJcbiAgICAgICAgICAgICAgICBpZiAodGhpcy5pdGVtTGlzdC5sZW5ndGggPiAodGhpcy5pdGVtRGF0YUxpc3QubGVuZ3RoIC0gc3RhcnRJbmRleCkpIHtcclxuICAgICAgICAgICAgICAgICAgICBpdGVtID0gdGhpcy5pdGVtTGlzdC5wb3AoKTtcclxuICAgICAgICAgICAgICAgICAgICBpdGVtLnJlbW92ZUZyb21QYXJlbnQoKTtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLml0ZW1Qb29sLnB1c2goaXRlbSk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBjb250aW51ZTtcclxuICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgbGV0IGl0ZW1SZW5kZXI6IEl0ZW1SZW5kZXIgPSBpdGVtLmdldENvbXBvbmVudChJdGVtUmVuZGVyKTtcclxuICAgICAgICAgICAgaXRlbVJlbmRlci5pdGVtSW5kZXggPSBpICsgc3RhcnRJbmRleDtcclxuICAgICAgICAgICAgaXRlbVJlbmRlci5kYXRhID0gdGhpcy5pdGVtRGF0YUxpc3RbaSArIHN0YXJ0SW5kZXhdO1xyXG4gICAgICAgICAgICBpdGVtUmVuZGVyLmRhdGFDaGFuZ2VkKCk7XHJcblxyXG4gICAgICAgICAgICBpZiAodGhpcy50eXBlID09IExpc3RUeXBlLlZlcnRpY2FsKSB7XHJcbiAgICAgICAgICAgICAgICAvL+WboOS4umNvbnRlbnTnmoTplJrngrlY5pivMO+8jOaJgOS7pWl0ZW3nmoR45YC85pivY29udGVudC53aXRoLzLooajnpLrlsYXkuK3vvIzplJrngrlZ5pivMe+8jOaJgOS7pWl0ZW3nmoR55YC85LuOY29udGVudOmhtumDqOWQkeS4i+aYrzDliLDotJ/ml6DnqbfjgILmiYDku6VpdGVtLnk9IC1pdGVtLmhlaWdodC8y5pe277yM5piv5ZyoY29udGVudOeahOmhtumDqOOAglxyXG4gICAgICAgICAgICAgICAgaXRlbS5zZXRQb3NpdGlvbih0aGlzLmNvbnRlbnQud2lkdGggLyAyLCAtaXRlbS5oZWlnaHQgKiAoMC41ICsgaSArIHN0YXJ0SW5kZXgpIC0gdGhpcy5zcGFjZVkgKiAoaSArIHN0YXJ0SW5kZXgpIC0gdGhpcy5wYWRkaW5nX3RvcCk7XHJcbiAgICAgICAgICAgIH0gZWxzZSBpZiAodGhpcy50eXBlID09IExpc3RUeXBlLkhvcml6b250YWwpIHtcclxuICAgICAgICAgICAgICAgIGl0ZW0uc2V0UG9zaXRpb24oaXRlbS53aWR0aCAqICgwLjUgKyBpICsgc3RhcnRJbmRleCkgKyB0aGlzLnNwYWNlWCAqIChpICsgc3RhcnRJbmRleCkgKyB0aGlzLnBhZGRpbmdfbGVmdCwgLXRoaXMuY29udGVudC5oZWlnaHQgLyAyKTtcclxuICAgICAgICAgICAgfSBlbHNlIGlmICh0aGlzLnR5cGUgPT0gTGlzdFR5cGUuR3JpZCkge1xyXG4gICAgICAgICAgICAgICAgaWYgKHRoaXMuc3RhcnRBeGlzID09IFN0YXJ0QXhpc1R5cGUuVmVydGljYWwpIHtcclxuICAgICAgICAgICAgICAgICAgICB2YXIgcm93ID0gTWF0aC5mbG9vcigoaSArIHN0YXJ0SW5kZXgpIC8gdGhpcy5ncmlkQ29sKTtcclxuICAgICAgICAgICAgICAgICAgICB2YXIgY29sID0gKGkgKyBzdGFydEluZGV4KSAlIHRoaXMuZ3JpZENvbDtcclxuICAgICAgICAgICAgICAgICAgICBpdGVtLnNldFBvc2l0aW9uKGl0ZW0ud2lkdGggKiAoMC41ICsgY29sKSArIHRoaXMuc3BhY2VYICogY29sICsgdGhpcy5wYWRkaW5nX2xlZnQsIC1pdGVtLmhlaWdodCAqICgwLjUgKyByb3cpIC0gdGhpcy5zcGFjZVkgKiByb3cgLSB0aGlzLnBhZGRpbmdfdG9wKTtcclxuICAgICAgICAgICAgICAgICAgICBpdGVtLm9wYWNpdHkgPSAyNTU7XHJcbiAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKHRoaXMuc3RhcnRBeGlzID09IFN0YXJ0QXhpc1R5cGUuSG9yaXpvbnRhbCkge1xyXG4gICAgICAgICAgICAgICAgICAgIHZhciByb3cgPSAoaSArIHN0YXJ0SW5kZXgpICUgdGhpcy5ncmlkUm93O1xyXG4gICAgICAgICAgICAgICAgICAgIHZhciBjb2wgPSBNYXRoLmZsb29yKChpICsgc3RhcnRJbmRleCkgLyB0aGlzLmdyaWRSb3cpO1xyXG4gICAgICAgICAgICAgICAgICAgIGl0ZW0uc2V0UG9zaXRpb24oaXRlbS53aWR0aCAqICgwLjUgKyBjb2wpICsgdGhpcy5zcGFjZVggKiBjb2wgKyB0aGlzLnBhZGRpbmdfbGVmdCwgLWl0ZW0uaGVpZ2h0ICogKDAuNSArIHJvdykgLSB0aGlzLnNwYWNlWSAqIHJvdyAtIHRoaXMucGFkZGluZ190b3ApO1xyXG4gICAgICAgICAgICAgICAgICAgIGl0ZW0ub3BhY2l0eSA9IDI1NTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgdGhpcy5zY3JvbGxWaWV3LnNjcm9sbFRvT2Zmc2V0KG9mZnNldCk7XHJcbiAgICB9XHJcblxyXG4gICAgLyoq6I635Y+W5LiA5Liq5YiX6KGo6aG5ICovXHJcbiAgICBwcml2YXRlIGdldEl0ZW0oKSB7XHJcbiAgICAgICAgaWYgKHRoaXMuaXRlbVBvb2wubGVuZ3RoID09IDApIHtcclxuICAgICAgICAgICAgcmV0dXJuIGNjLmluc3RhbnRpYXRlKHRoaXMuaXRlbVJlbmRlcik7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgcmV0dXJuIHRoaXMuaXRlbVBvb2wucG9wKCk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHVwZGF0ZShkdCkge1xyXG4gICAgICAgIGlmICh0aGlzLmJTY3JvbGxpbmcgPT0gZmFsc2UpIHtcclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLnVwZGF0ZVRpbWVyICs9IGR0O1xyXG4gICAgICAgIGlmICh0aGlzLnVwZGF0ZVRpbWVyIDwgdGhpcy51cGRhdGVJbnRlcnZhbCkge1xyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRoaXMudXBkYXRlVGltZXIgPSAwO1xyXG4gICAgICAgIHRoaXMuYlNjcm9sbGluZyA9IGZhbHNlO1xyXG4gICAgICAgIHRoaXMudXBkYXRlRnVuKCk7XHJcbiAgICB9XHJcblxyXG4gICAgb25TY3JvbGxpbmcoKSB7XHJcbiAgICAgICAgdGhpcy5iU2Nyb2xsaW5nID0gdHJ1ZTtcclxuICAgIH1cclxuXHJcbiAgICAvKirlnoLnm7TmjpLliJcgKi9cclxuICAgIHByaXZhdGUgdXBkYXRlVigpIHtcclxuICAgICAgICBsZXQgaXRlbXMgPSB0aGlzLml0ZW1MaXN0O1xyXG4gICAgICAgIGxldCBpdGVtO1xyXG4gICAgICAgIGxldCBidWZmZXJab25lID0gdGhpcy5oYWxmU2Nyb2xsVmlldztcclxuICAgICAgICBsZXQgaXNVcCA9IHRoaXMuc2Nyb2xsVmlldy5jb250ZW50LnkgPiB0aGlzLmxhc3RDb250ZW50UG9zWTtcclxuICAgICAgICBsZXQgb2Zmc2V0ID0gKHRoaXMuaXRlbUhlaWdodCArIHRoaXMuc3BhY2VZKSAqIGl0ZW1zLmxlbmd0aDtcclxuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGl0ZW1zLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgICAgIGl0ZW0gPSBpdGVtc1tpXTtcclxuICAgICAgICAgICAgbGV0IHZpZXdQb3MgPSB0aGlzLmdldFBvc2l0aW9uSW5WaWV3KGl0ZW0pO1xyXG4gICAgICAgICAgICBpZiAoaXNVcCkge1xyXG4gICAgICAgICAgICAgICAgLy9pdGVt5LiK5ruR5pe277yM6LaF5Ye65LqGc2Nyb2xsVmlld+S4iui+ueeVjO+8jOWwhml0ZW3np7vliqjliLDkuIvmlrnlpI3nlKjvvIxpdGVt56e75Yqo5Yiw5LiL5pa555qE5L2N572u5b+F6aG75LiN6LaF6L+HY29udGVudOeahOS4i+i+ueeVjFxyXG4gICAgICAgICAgICAgICAgaWYgKHZpZXdQb3MueSA+IGJ1ZmZlclpvbmUgJiYgaXRlbS55IC0gb2Zmc2V0IC0gdGhpcy5wYWRkaW5nX2J1dHRvbSA+IC10aGlzLmNvbnRlbnQuaGVpZ2h0KSB7XHJcbiAgICAgICAgICAgICAgICAgICAgbGV0IGl0ZW1SZW5kZXI6IEl0ZW1SZW5kZXIgPSBpdGVtLmdldENvbXBvbmVudChJdGVtUmVuZGVyKTtcclxuICAgICAgICAgICAgICAgICAgICBsZXQgaXRlbUluZGV4ID0gaXRlbVJlbmRlci5pdGVtSW5kZXggKyBpdGVtcy5sZW5ndGg7XHJcbiAgICAgICAgICAgICAgICAgICAgaXRlbVJlbmRlci5pdGVtSW5kZXggPSBpdGVtSW5kZXg7XHJcbiAgICAgICAgICAgICAgICAgICAgaXRlbVJlbmRlci5kYXRhID0gdGhpcy5pdGVtRGF0YUxpc3RbaXRlbUluZGV4XTtcclxuICAgICAgICAgICAgICAgICAgICBpdGVtUmVuZGVyLmRhdGFDaGFuZ2VkKCk7XHJcbiAgICAgICAgICAgICAgICAgICAgaXRlbS55ID0gaXRlbS55IC0gb2Zmc2V0O1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgLy9pdGVt5LiL5ruR5pe277yM6LaF5Ye65LqGc2Nyb2xsVmlld+S4i+i+ueeVjO+8jOWwhml0ZW3np7vliqjliLDkuIrmlrnlpI3nlKjvvIxpdGVt56e75Yqo5Yiw5LiK5pa555qE5L2N572u5b+F6aG75LiN6LaF6L+HY29udGVudOeahOS4iui+ueeVjFxyXG4gICAgICAgICAgICAgICAgaWYgKHZpZXdQb3MueSA8IC1idWZmZXJab25lICYmIGl0ZW0ueSArIG9mZnNldCArIHRoaXMucGFkZGluZ190b3AgPCAwKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgbGV0IGl0ZW1SZW5kZXI6IEl0ZW1SZW5kZXIgPSBpdGVtLmdldENvbXBvbmVudChJdGVtUmVuZGVyKTtcclxuICAgICAgICAgICAgICAgICAgICBsZXQgaXRlbUluZGV4ID0gaXRlbVJlbmRlci5pdGVtSW5kZXggLSBpdGVtcy5sZW5ndGg7XHJcbiAgICAgICAgICAgICAgICAgICAgaXRlbVJlbmRlci5pdGVtSW5kZXggPSBpdGVtSW5kZXg7XHJcbiAgICAgICAgICAgICAgICAgICAgaXRlbVJlbmRlci5kYXRhID0gdGhpcy5pdGVtRGF0YUxpc3RbaXRlbUluZGV4XTtcclxuICAgICAgICAgICAgICAgICAgICBpdGVtUmVuZGVyLmRhdGFDaGFuZ2VkKCk7XHJcbiAgICAgICAgICAgICAgICAgICAgaXRlbS55ID0gaXRlbS55ICsgb2Zmc2V0O1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRoaXMubGFzdENvbnRlbnRQb3NZID0gdGhpcy5zY3JvbGxWaWV3LmNvbnRlbnQueTtcclxuICAgIH1cclxuXHJcbiAgICAvKirmsLTlubPmjpLliJcgKi9cclxuICAgIHByaXZhdGUgdWRwYXRlSCgpIHtcclxuICAgICAgICBsZXQgaXRlbXMgPSB0aGlzLml0ZW1MaXN0O1xyXG4gICAgICAgIGxldCBpdGVtO1xyXG4gICAgICAgIGxldCBidWZmZXJab25lID0gdGhpcy5oYWxmU2Nyb2xsVmlldztcclxuICAgICAgICBsZXQgaXNSaWdodCA9IHRoaXMuc2Nyb2xsVmlldy5jb250ZW50LnggPiB0aGlzLmxhc3RDb250ZW50UG9zWDtcclxuICAgICAgICBsZXQgb2Zmc2V0ID0gKHRoaXMuaXRlbVdpZHRoICsgdGhpcy5zcGFjZVgpICogaXRlbXMubGVuZ3RoO1xyXG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgaXRlbXMubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICAgICAgaXRlbSA9IGl0ZW1zW2ldO1xyXG4gICAgICAgICAgICBsZXQgdmlld1BvcyA9IHRoaXMuZ2V0UG9zaXRpb25JblZpZXcoaXRlbSk7XHJcbiAgICAgICAgICAgIGlmIChpc1JpZ2h0KSB7XHJcbiAgICAgICAgICAgICAgICAvL2l0ZW3lj7Pmu5Hml7bvvIzotoXlh7rkuoZzY3JvbGxWaWV35Y+z6L6555WM77yM5bCGaXRlbeenu+WKqOWIsOW3puaWueWkjeeUqO+8jGl0ZW3np7vliqjliLDlt6bmlrnnmoTkvY3nva7lv4XpobvkuI3otoXov4djb250ZW5055qE5bem6L6555WMXHJcbiAgICAgICAgICAgICAgICBpZiAodmlld1Bvcy54ID4gYnVmZmVyWm9uZSAmJiBpdGVtLnggLSBvZmZzZXQgLSB0aGlzLnBhZGRpbmdfbGVmdCA+IDApIHtcclxuICAgICAgICAgICAgICAgICAgICBsZXQgaXRlbVJlbmRlcjogSXRlbVJlbmRlciA9IGl0ZW0uZ2V0Q29tcG9uZW50KEl0ZW1SZW5kZXIpO1xyXG4gICAgICAgICAgICAgICAgICAgIGxldCBpdGVtSW5kZXggPSBpdGVtUmVuZGVyLml0ZW1JbmRleCAtIGl0ZW1zLmxlbmd0aDtcclxuICAgICAgICAgICAgICAgICAgICBpdGVtUmVuZGVyLml0ZW1JbmRleCA9IGl0ZW1JbmRleDtcclxuICAgICAgICAgICAgICAgICAgICBpdGVtUmVuZGVyLmRhdGEgPSB0aGlzLml0ZW1EYXRhTGlzdFtpdGVtSW5kZXhdO1xyXG4gICAgICAgICAgICAgICAgICAgIGl0ZW1SZW5kZXIuZGF0YUNoYW5nZWQoKTtcclxuICAgICAgICAgICAgICAgICAgICBpdGVtLnggPSBpdGVtLnggLSBvZmZzZXQ7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAvL2l0ZW3lt6bmu5Hml7bvvIzotoXlh7rkuoZzY3JvbGxWaWV35bem6L6555WM77yM5bCGaXRlbeenu+WKqOWIsOWPs+aWueWkjeeUqO+8jGl0ZW3np7vliqjliLDlj7PmlrnnmoTkvY3nva7lv4XpobvkuI3otoXov4djb250ZW5055qE5Y+z6L6555WMXHJcbiAgICAgICAgICAgICAgICBpZiAodmlld1Bvcy54IDwgLWJ1ZmZlclpvbmUgJiYgaXRlbS54ICsgb2Zmc2V0ICsgdGhpcy5wYWRkaW5nX3JpZ2h0IDwgdGhpcy5jb250ZW50LndpZHRoKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgbGV0IGl0ZW1SZW5kZXI6IEl0ZW1SZW5kZXIgPSBpdGVtLmdldENvbXBvbmVudChJdGVtUmVuZGVyKTtcclxuICAgICAgICAgICAgICAgICAgICBsZXQgaXRlbUluZGV4ID0gaXRlbVJlbmRlci5pdGVtSW5kZXggKyBpdGVtcy5sZW5ndGg7XHJcbiAgICAgICAgICAgICAgICAgICAgaXRlbVJlbmRlci5pdGVtSW5kZXggPSBpdGVtSW5kZXg7XHJcbiAgICAgICAgICAgICAgICAgICAgaXRlbVJlbmRlci5kYXRhID0gdGhpcy5pdGVtRGF0YUxpc3RbaXRlbUluZGV4XTtcclxuICAgICAgICAgICAgICAgICAgICBpdGVtUmVuZGVyLmRhdGFDaGFuZ2VkKCk7XHJcbiAgICAgICAgICAgICAgICAgICAgaXRlbS54ID0gaXRlbS54ICsgb2Zmc2V0O1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRoaXMubGFzdENvbnRlbnRQb3NYID0gdGhpcy5zY3JvbGxWaWV3LmNvbnRlbnQueDtcclxuICAgIH1cclxuXHJcbiAgICAvKirnvZHmoLzlnoLnm7TmjpLliJcgKi9cclxuICAgIHByaXZhdGUgdXBkYXRlR3JpZF9WKCkge1xyXG4gICAgICAgIGxldCBpdGVtcyA9IHRoaXMuaXRlbUxpc3Q7XHJcbiAgICAgICAgbGV0IGl0ZW06IGNjLk5vZGU7XHJcbiAgICAgICAgbGV0IGJ1ZmZlclpvbmUgPSB0aGlzLmhhbGZTY3JvbGxWaWV3O1xyXG4gICAgICAgIGxldCBpc1VwID0gdGhpcy5zY3JvbGxWaWV3LmNvbnRlbnQueSA+IHRoaXMubGFzdENvbnRlbnRQb3NZO1xyXG4gICAgICAgIGxldCBvZmZzZXQgPSAodGhpcy5pdGVtSGVpZ2h0ICsgdGhpcy5zcGFjZVkpICogKHRoaXMuc3Bhd25Db3VudCAvIHRoaXMuZ3JpZENvbCk7XHJcbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBpdGVtcy5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgICAgICBpdGVtID0gaXRlbXNbaV07XHJcbiAgICAgICAgICAgIGxldCB2aWV3UG9zID0gdGhpcy5nZXRQb3NpdGlvbkluVmlldyhpdGVtKTtcclxuICAgICAgICAgICAgaWYgKGlzVXApIHtcclxuICAgICAgICAgICAgICAgIC8vaXRlbeS4iua7keaXtu+8jOi2heWHuuS6hnNjcm9sbFZpZXfkuIrovrnnlYzvvIzlsIZpdGVt56e75Yqo5Yiw5LiL5pa55aSN55So77yMaXRlbeenu+WKqOWIsOS4i+aWueeahOS9jee9ruW/hemhu+S4jei2hei/h2NvbnRlbnTnmoTkuIvovrnnlYxcclxuICAgICAgICAgICAgICAgIGlmICh2aWV3UG9zLnkgPiBidWZmZXJab25lICYmIGl0ZW0ueSAtIG9mZnNldCAtIHRoaXMucGFkZGluZ19idXR0b20gPiAtdGhpcy5jb250ZW50LmhlaWdodCkge1xyXG4gICAgICAgICAgICAgICAgICAgIGxldCBpdGVtUmVuZGVyOiBJdGVtUmVuZGVyID0gaXRlbS5nZXRDb21wb25lbnQoSXRlbVJlbmRlcik7XHJcbiAgICAgICAgICAgICAgICAgICAgbGV0IGl0ZW1JbmRleCA9IGl0ZW1SZW5kZXIuaXRlbUluZGV4ICsgKHRoaXMuc3Bhd25Db3VudCAvIHRoaXMuZ3JpZENvbCkgKiB0aGlzLmdyaWRDb2w7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMuaXRlbURhdGFMaXN0W2l0ZW1JbmRleF0gIT0gbnVsbCkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBpdGVtLnkgPSBpdGVtLnkgLSBvZmZzZXQ7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGl0ZW1SZW5kZXIuaXRlbUluZGV4ID0gaXRlbUluZGV4O1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBpdGVtUmVuZGVyLmRhdGEgPSB0aGlzLml0ZW1EYXRhTGlzdFtpdGVtSW5kZXhdO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBpdGVtUmVuZGVyLmRhdGFDaGFuZ2VkKCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGl0ZW0ub3BhY2l0eSA9IDI1NTtcclxuICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBpdGVtLnkgPSBpdGVtLnkgLSBvZmZzZXQ7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGl0ZW1SZW5kZXIuaXRlbUluZGV4ID0gaXRlbUluZGV4O1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBpdGVtLm9wYWNpdHkgPSAwO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfSBlbHNlIHsvL2l0ZW3kuIvmu5Hml7bvvIzotoXlh7rkuoZzY3JvbGxWaWV35LiL6L6555WM77yM5bCGaXRlbeenu+WKqOWIsOS4iuaWueWkjeeUqO+8jGl0ZW3np7vliqjliLDkuIrmlrnnmoTkvY3nva7lv4XpobvkuI3otoXov4djb250ZW5055qE5LiK6L6555WMXHJcbiAgICAgICAgICAgICAgICBpZiAodmlld1Bvcy55IDwgLWJ1ZmZlclpvbmUgJiYgaXRlbS55ICsgb2Zmc2V0ICsgdGhpcy5wYWRkaW5nX3RvcCA8IDApIHtcclxuICAgICAgICAgICAgICAgICAgICBsZXQgaXRlbVJlbmRlcjogSXRlbVJlbmRlciA9IGl0ZW0uZ2V0Q29tcG9uZW50KEl0ZW1SZW5kZXIpO1xyXG4gICAgICAgICAgICAgICAgICAgIGxldCBpdGVtSW5kZXggPSBpdGVtUmVuZGVyLml0ZW1JbmRleCAtICh0aGlzLnNwYXduQ291bnQgLyB0aGlzLmdyaWRDb2wpICogdGhpcy5ncmlkQ29sO1xyXG4gICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLml0ZW1EYXRhTGlzdFtpdGVtSW5kZXhdICE9IG51bGwpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgaXRlbS55ID0gaXRlbS55ICsgb2Zmc2V0O1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBpdGVtUmVuZGVyLml0ZW1JbmRleCA9IGl0ZW1JbmRleDtcclxuICAgICAgICAgICAgICAgICAgICAgICAgaXRlbVJlbmRlci5kYXRhID0gdGhpcy5pdGVtRGF0YUxpc3RbaXRlbUluZGV4XTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgaXRlbVJlbmRlci5kYXRhQ2hhbmdlZCgpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBpdGVtLm9wYWNpdHkgPSAyNTU7XHJcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgaXRlbS55ID0gaXRlbS55ICsgb2Zmc2V0O1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBpdGVtUmVuZGVyLml0ZW1JbmRleCA9IGl0ZW1JbmRleDtcclxuICAgICAgICAgICAgICAgICAgICAgICAgaXRlbS5vcGFjaXR5ID0gMDtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgdGhpcy5sYXN0Q29udGVudFBvc1kgPSB0aGlzLnNjcm9sbFZpZXcuY29udGVudC55O1xyXG4gICAgfVxyXG5cclxuICAgIC8qKue9keagvOawtOW5s+aOkuWIlyAqL1xyXG4gICAgcHJpdmF0ZSB1cGRhdGVHcmlkX0goKSB7XHJcbiAgICAgICAgbGV0IGl0ZW1zID0gdGhpcy5pdGVtTGlzdDtcclxuICAgICAgICBsZXQgaXRlbTtcclxuICAgICAgICBsZXQgYnVmZmVyWm9uZSA9IHRoaXMuaGFsZlNjcm9sbFZpZXc7XHJcbiAgICAgICAgbGV0IGlzUmlnaHQgPSB0aGlzLnNjcm9sbFZpZXcuY29udGVudC54ID4gdGhpcy5sYXN0Q29udGVudFBvc1g7XHJcbiAgICAgICAgbGV0IG9mZnNldCA9ICh0aGlzLml0ZW1XaWR0aCArIHRoaXMuc3BhY2VYKSAqICh0aGlzLnNwYXduQ291bnQgLyB0aGlzLmdyaWRSb3cpO1xyXG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgaXRlbXMubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICAgICAgaXRlbSA9IGl0ZW1zW2ldO1xyXG4gICAgICAgICAgICBsZXQgdmlld1BvcyA9IHRoaXMuZ2V0UG9zaXRpb25JblZpZXcoaXRlbSk7XHJcbiAgICAgICAgICAgIGlmIChpc1JpZ2h0KSB7XHJcbiAgICAgICAgICAgICAgICAvL2l0ZW3lj7Pmu5Hml7bvvIzotoXlh7rkuoZzY3JvbGxWaWV35Y+z6L6555WM77yM5bCGaXRlbeenu+WKqOWIsOW3puaWueWkjeeUqO+8jGl0ZW3np7vliqjliLDlt6bmlrnnmoTkvY3nva7lv4XpobvkuI3otoXov4djb250ZW5055qE5bem6L6555WMXHJcbiAgICAgICAgICAgICAgICBpZiAodmlld1Bvcy54ID4gYnVmZmVyWm9uZSAmJiBpdGVtLnggLSBvZmZzZXQgLSB0aGlzLnBhZGRpbmdfbGVmdCA+IDApIHtcclxuICAgICAgICAgICAgICAgICAgICBsZXQgaXRlbVJlbmRlcjogSXRlbVJlbmRlciA9IGl0ZW0uZ2V0Q29tcG9uZW50KEl0ZW1SZW5kZXIpO1xyXG4gICAgICAgICAgICAgICAgICAgIGxldCBpdGVtSW5kZXggPSBpdGVtUmVuZGVyLml0ZW1JbmRleCAtICh0aGlzLnNwYXduQ291bnQgLyB0aGlzLmdyaWRSb3cpICogdGhpcy5ncmlkUm93O1xyXG4gICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLml0ZW1EYXRhTGlzdFtpdGVtSW5kZXhdICE9IG51bGwpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgaXRlbS54ID0gaXRlbS54IC0gb2Zmc2V0O1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBpdGVtUmVuZGVyLml0ZW1JbmRleCA9IGl0ZW1JbmRleDtcclxuICAgICAgICAgICAgICAgICAgICAgICAgaXRlbVJlbmRlci5kYXRhID0gdGhpcy5pdGVtRGF0YUxpc3RbaXRlbUluZGV4XTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgaXRlbVJlbmRlci5kYXRhQ2hhbmdlZCgpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBpdGVtLm9wYWNpdHkgPSAyNTU7XHJcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgaXRlbS54ID0gaXRlbS54IC0gb2Zmc2V0O1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBpdGVtUmVuZGVyLml0ZW1JbmRleCA9IGl0ZW1JbmRleDtcclxuICAgICAgICAgICAgICAgICAgICAgICAgaXRlbS5vcGFjaXR5ID0gMDtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAvL2l0ZW3lt6bmu5Hml7bvvIzotoXlh7rkuoZzY3JvbGxWaWV35bem6L6555WM77yM5bCGaXRlbeenu+WKqOWIsOWPs+aWueWkjeeUqO+8jGl0ZW3np7vliqjliLDlj7PmlrnnmoTkvY3nva7lv4XpobvkuI3otoXov4djb250ZW5055qE5Y+z6L6555WMXHJcbiAgICAgICAgICAgICAgICBpZiAodmlld1Bvcy54IDwgLWJ1ZmZlclpvbmUgJiYgaXRlbS54ICsgb2Zmc2V0ICsgdGhpcy5wYWRkaW5nX3JpZ2h0IDwgdGhpcy5jb250ZW50LndpZHRoKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgbGV0IGl0ZW1SZW5kZXI6IEl0ZW1SZW5kZXIgPSBpdGVtLmdldENvbXBvbmVudChJdGVtUmVuZGVyKTtcclxuICAgICAgICAgICAgICAgICAgICBsZXQgaXRlbUluZGV4ID0gaXRlbVJlbmRlci5pdGVtSW5kZXggKyAodGhpcy5zcGF3bkNvdW50IC8gdGhpcy5ncmlkUm93KSAqIHRoaXMuZ3JpZFJvdztcclxuICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy5pdGVtRGF0YUxpc3RbaXRlbUluZGV4XSAhPSBudWxsKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGl0ZW0ueCA9IGl0ZW0ueCArIG9mZnNldDtcclxuICAgICAgICAgICAgICAgICAgICAgICAgaXRlbVJlbmRlci5pdGVtSW5kZXggPSBpdGVtSW5kZXg7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGl0ZW1SZW5kZXIuZGF0YSA9IHRoaXMuaXRlbURhdGFMaXN0W2l0ZW1JbmRleF07XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGl0ZW1SZW5kZXIuZGF0YUNoYW5nZWQoKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgaXRlbS5vcGFjaXR5ID0gMjU1O1xyXG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGl0ZW0ueCA9IGl0ZW0ueCArIG9mZnNldDtcclxuICAgICAgICAgICAgICAgICAgICAgICAgaXRlbVJlbmRlci5pdGVtSW5kZXggPSBpdGVtSW5kZXg7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGl0ZW0ub3BhY2l0eSA9IDA7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRoaXMubGFzdENvbnRlbnRQb3NYID0gdGhpcy5zY3JvbGxWaWV3LmNvbnRlbnQueDtcclxuICAgIH1cclxuXHJcbiAgICAvKirojrflj5ZpdGVt5Zyoc2Nyb2xsVmlld+eahOWxgOmDqOWdkOaghyAqL1xyXG4gICAgcHJpdmF0ZSBnZXRQb3NpdGlvbkluVmlldyhpdGVtKSB7XHJcbiAgICAgICAgbGV0IHdvcmxkUG9zID0gaXRlbS5wYXJlbnQuY29udmVydFRvV29ybGRTcGFjZUFSKGl0ZW0ucG9zaXRpb24pO1xyXG4gICAgICAgIGxldCB2aWV3UG9zID0gdGhpcy5zY3JvbGxWaWV3Lm5vZGUuY29udmVydFRvTm9kZVNwYWNlQVIod29ybGRQb3MpO1xyXG4gICAgICAgIHJldHVybiB2aWV3UG9zO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKuiOt+WPluWIl+ihqOaVsOaNriAqL1xyXG4gICAgcHVibGljIGdldExpc3REYXRhKCkge1xyXG4gICAgICAgIHJldHVybiB0aGlzLml0ZW1EYXRhTGlzdDtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIOWinuWKoOS4gOmhueaVsOaNruWIsOWIl+ihqOeahOacq+WwvlxyXG4gICAgICogQHBhcmFtIGRhdGEg5pWw5o2uXHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyBhZGRJdGVtKGRhdGE6IGFueSkge1xyXG4gICAgICAgIHRoaXMuaXRlbURhdGFMaXN0LnB1c2goZGF0YSk7XHJcbiAgICAgICAgdGhpcy51cGRhdGVDb250ZW50KCk7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiDlop7liqDkuIDpobnmlbDmja7liLDliJfooajmjIflrprkvY3nva5cclxuICAgICAqIEBwYXJhbSBpbmRleCAgIOS9jee9ru+8jDDooajnpLrnrKwx6aG5XHJcbiAgICAgKiBAcGFyYW0gZGF0YSAg5pWw5o2uXHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyBhZGRJdGVtQXQoaW5kZXg6IG51bWJlciwgZGF0YTogYW55KSB7XHJcbiAgICAgICAgaWYgKHRoaXMuaXRlbURhdGFMaXN0W2luZGV4XSAhPSBudWxsIHx8IHRoaXMuaXRlbURhdGFMaXN0Lmxlbmd0aCA9PSBpbmRleCkge1xyXG4gICAgICAgICAgICB0aGlzLml0ZW1EYXRhTGlzdC5zcGxpY2UoaW5kZXgsIDEsIGRhdGEpO1xyXG4gICAgICAgICAgICB0aGlzLnVwZGF0ZUNvbnRlbnQoKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiDliKDpmaTkuIDpobnmlbDmja5cclxuICAgICAqIEBwYXJhbSBpbmRleCDliKDpmaTpobnnmoTkvY3nva4gLDDooajnpLrnrKwx6aG5XHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyBkZWxldGVJdGVtKGluZGV4OiBudW1iZXIpIHtcclxuICAgICAgICBpZiAodGhpcy5pdGVtRGF0YUxpc3RbaW5kZXhdICE9IG51bGwpIHtcclxuICAgICAgICAgICAgdGhpcy5pdGVtRGF0YUxpc3Quc3BsaWNlKGluZGV4LCAxKTtcclxuICAgICAgICAgICAgdGhpcy51cGRhdGVDb250ZW50KCk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICog5pS55Y+Y5LiA6aG55pWw5o2uXHJcbiAgICAgKiBAcGFyYW0gaW5kZXggICDkvY3nva4sMOihqOekuuesrDHpoblcclxuICAgICAqIEBwYXJhbSBkYXRhICDmm7/mjaLnmoTmlbDmja5cclxuICAgICAqL1xyXG4gICAgcHVibGljIGNoYW5nZUl0ZW0oaW5kZXg6IG51bWJlciwgZGF0YTogYW55KSB7XHJcbiAgICAgICAgaWYgKHRoaXMuaXRlbURhdGFMaXN0W2luZGV4XSAhPSBudWxsKSB7XHJcbiAgICAgICAgICAgIHRoaXMuaXRlbURhdGFMaXN0W2luZGV4XSA9IGRhdGE7XHJcbiAgICAgICAgICAgIHRoaXMudXBkYXRlQ29udGVudCgpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICAvKirojrflj5bnrKzkuIDkuKpJdGVt55qE5L2N572uICovXHJcbiAgICBwcml2YXRlIHVwZGF0ZUNvbnRlbnQoKSB7XHJcbiAgICAgICAgLy/mmL7npLrliJfooajlrp7kvovkuLow5LiqXHJcbiAgICAgICAgaWYgKHRoaXMuaXRlbUxpc3QubGVuZ3RoID09IDApIHtcclxuICAgICAgICAgICAgdGhpcy5jb3VudExpc3RQYXJhbSgpO1xyXG4gICAgICAgICAgICB0aGlzLmNyZWF0ZUxpc3QoMCwgbmV3IGNjLlZlYzIoMCwgMCkpO1xyXG4gICAgICAgICAgICAvL+aYvuekuuWIl+ihqOeahOWunuS+i+S4jeS4ujDkuKrvvIzliJnpnIDopoHph43mlrDmjpLliJdpdGVt5a6e5L6L5pWw57uEXHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgaWYgKHRoaXMudHlwZSA9PSBMaXN0VHlwZS5WZXJ0aWNhbCkge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5pdGVtTGlzdC5zb3J0KChhOiBhbnksIGI6IGFueSkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBiLnkgLSBhLnk7XHJcbiAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgfSBlbHNlIGlmICh0aGlzLnR5cGUgPT0gTGlzdFR5cGUuSG9yaXpvbnRhbCkge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5pdGVtTGlzdC5zb3J0KChhOiBhbnksIGI6IGFueSkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBhLnggLSBiLng7XHJcbiAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgfSBlbHNlIGlmICh0aGlzLnR5cGUgPT0gTGlzdFR5cGUuR3JpZCkge1xyXG4gICAgICAgICAgICAgICAgaWYgKHRoaXMuc3RhcnRBeGlzID09IFN0YXJ0QXhpc1R5cGUuVmVydGljYWwpIHtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLml0ZW1MaXN0LnNvcnQoKGE6IGFueSwgYjogYW55KSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBhLnggLSBiLng7XHJcbiAgICAgICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5pdGVtTGlzdC5zb3J0KChhOiBhbnksIGI6IGFueSkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gYi55IC0gYS55O1xyXG4gICAgICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICAgICAgfSBlbHNlIGlmICh0aGlzLnN0YXJ0QXhpcyA9PSBTdGFydEF4aXNUeXBlLkhvcml6b250YWwpIHtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLml0ZW1MaXN0LnNvcnQoKGE6IGFueSwgYjogYW55KSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBiLnkgLSBhLnk7XHJcbiAgICAgICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5pdGVtTGlzdC5zb3J0KChhOiBhbnksIGI6IGFueSkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gYS54IC0gYi54O1xyXG4gICAgICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICB0aGlzLmNvdW50TGlzdFBhcmFtKCk7XHJcblxyXG4gICAgICAgICAgICAvL+iOt+WPluesrOS4gOS4qml0ZW3lrp7kvovpnIDopoHmmL7npLrnmoTmlbDmja7ntKLlvJVcclxuICAgICAgICAgICAgdmFyIHN0YXJ0SW5kZXggPSB0aGlzLml0ZW1MaXN0WzBdLmdldENvbXBvbmVudChJdGVtUmVuZGVyKS5pdGVtSW5kZXg7XHJcblxyXG4gICAgICAgICAgICBpZiAodGhpcy50eXBlID09IExpc3RUeXBlLkdyaWQgJiYgdGhpcy5zdGFydEF4aXMgPT0gU3RhcnRBeGlzVHlwZS5WZXJ0aWNhbCkge1xyXG4gICAgICAgICAgICAgICAgc3RhcnRJbmRleCArPSAoc3RhcnRJbmRleCArIHRoaXMuc3Bhd25Db3VudCkgJSB0aGlzLmdyaWRDb2w7XHJcbiAgICAgICAgICAgIH0gZWxzZSBpZiAodGhpcy50eXBlID09IExpc3RUeXBlLkdyaWQgJiYgdGhpcy5zdGFydEF4aXMgPT0gU3RhcnRBeGlzVHlwZS5Ib3Jpem9udGFsKSB7XHJcbiAgICAgICAgICAgICAgICBzdGFydEluZGV4ICs9IChzdGFydEluZGV4ICsgdGhpcy5zcGF3bkNvdW50KSAlIHRoaXMuZ3JpZFJvdztcclxuICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgLy9nZXRTY3JvbGxPZmZzZXQoKeWSjHNjcm9sbFRvT2Zmc2V0KCnnmoR45YC85piv55u45Y+N55qEXHJcbiAgICAgICAgICAgIHZhciBvZmZzZXQ6IGNjLlZlYzIgPSB0aGlzLnNjcm9sbFZpZXcuZ2V0U2Nyb2xsT2Zmc2V0KCk7XHJcbiAgICAgICAgICAgIG9mZnNldC54ID0gLSBvZmZzZXQueDtcclxuXHJcbiAgICAgICAgICAgIHRoaXMuY3JlYXRlTGlzdChzdGFydEluZGV4LCBvZmZzZXQpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICAvKirplIDmr4EgKi9cclxuICAgIHB1YmxpYyBvbkRlc3Ryb3koKSB7XHJcbiAgICAgICAgLy/muIXnkIbliJfooajpoblcclxuICAgICAgICBsZXQgbGVuID0gdGhpcy5pdGVtTGlzdC5sZW5ndGg7XHJcbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBsZW47IGkrKykge1xyXG4gICAgICAgICAgICBpZiAoY2MuaXNWYWxpZCh0aGlzLml0ZW1MaXN0W2ldLCB0cnVlKSkge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5pdGVtTGlzdFtpXS5kZXN0cm95KCk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgdGhpcy5pdGVtTGlzdC5sZW5ndGggPSAwO1xyXG4gICAgICAgIC8v5riF55CG5a+56LGh5rGgXHJcbiAgICAgICAgbGVuID0gdGhpcy5pdGVtUG9vbC5sZW5ndGg7XHJcbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBsZW47IGkrKykge1xyXG4gICAgICAgICAgICBpZiAoY2MuaXNWYWxpZCh0aGlzLml0ZW1Qb29sW2ldLCB0cnVlKSkge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5pdGVtUG9vbFtpXS5kZXN0cm95KCk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgdGhpcy5pdGVtUG9vbC5sZW5ndGggPSAwO1xyXG4gICAgICAgIC8v5riF55CG5YiX6KGo5pWw5o2uXHJcbiAgICAgICAgdGhpcy5pdGVtRGF0YUxpc3QubGVuZ3RoID0gMDtcclxuICAgIH1cclxufVxyXG4iXX0= -//------QC-SOURCE-SPLIT------ - - (function() { - var nodeEnv = typeof require !== 'undefined' && typeof process !== 'undefined'; - var __module = nodeEnv ? module : {exports:{}}; - var __filename = 'preview-scripts/assets/Script/prop/Boom.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, '3c749iEEwlAMKPyjGEkwU2l', 'Boom'); -// Script/prop/Boom.ts - -"use strict"; -// Learn TypeScript: -// - https://docs.cocos.com/creator/manual/en/scripting/typescript.html -// Learn Attribute: -// - https://docs.cocos.com/creator/manual/en/scripting/reference/attributes.html -// Learn life-cycle callbacks: -// - https://docs.cocos.com/creator/manual/en/scripting/life-cycle-callbacks.html -var __extends = (this && this.__extends) || (function () { - var extendStatics = function (d, b) { - extendStatics = Object.setPrototypeOf || - ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) || - function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; }; - return extendStatics(d, b); - }; - return function (d, b) { - extendStatics(d, b); - function __() { this.constructor = d; } - d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); - }; -})(); -var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) { - var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; - if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc); - else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; - return c > 3 && r && Object.defineProperty(target, key, r), r; -}; -Object.defineProperty(exports, "__esModule", { value: true }); -var Map_1 = require("../Map"); -var NumberToImage_1 = require("../NumberToImage"); -var _a = cc._decorator, ccclass = _a.ccclass, property = _a.property; -var Boom = /** @class */ (function (_super) { - __extends(Boom, _super); - function Boom() { - var _this = _super !== null && _super.apply(this, arguments) || this; - _this.time = 60; - return _this; - // update (dt) {} - } - // mapInfo: number[][] = []; - Boom.prototype.onLoad = function () { - }; - Boom.prototype.start = function () { - }; - Boom.prototype.init = function (time) { - if (time) - this.time = time; - this.node.getChildByName("time").active = true; - NumberToImage_1.default.numberToImageNodes(this.time, 20, 8, "lock_", this.node.getChildByName("time"), false); - // this.node.getChildByName("time").getComponent(cc.Label).string = this.time.toString(); - }; - Boom.prototype.startBoom = function () { - this.schedule(this.updateTime, 1); - }; - Boom.prototype.stopBoom = function () { - this.unschedule(this.updateTime); - this.node.parent.getComponent("Block").resetFreeze(); - this.node.destroy(); - }; - Boom.prototype.updateTime = function () { - var _this = this; - this.time--; - NumberToImage_1.default.numberToImageNodes(this.time, 20, 8, "lock_", this.node.getChildByName("time"), false); - if (this.time <= 0) { - this.unschedule(this.updateTime); - this.node.getChildByName("zhandan").active = true; - var skeleton = this.node.getChildByName("zhandan").getComponent(sp.Skeleton); - skeleton.setAnimation(1, "eff", false); - // 监听动画完成事件 - skeleton.setCompleteListener(function () { - // 动画播放完成后销毁节点 - _this.node.destroy(); - }); - Map_1.default._instance.failLevel("boom"); - // this.node.destroy(); - } - }; - Boom = __decorate([ - ccclass - ], Boom); - return Boom; -}(cc.Component)); -exports.default = Boom; - -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,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImFzc2V0c1xcU2NyaXB0XFxwcm9wXFxCb29tLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSxvQkFBb0I7QUFDcEIsd0VBQXdFO0FBQ3hFLG1CQUFtQjtBQUNuQixrRkFBa0Y7QUFDbEYsOEJBQThCO0FBQzlCLGtGQUFrRjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBRWxGLDhCQUFpQztBQUNqQyxrREFBNkM7QUFFdkMsSUFBQSxLQUFzQixFQUFFLENBQUMsVUFBVSxFQUFsQyxPQUFPLGFBQUEsRUFBRSxRQUFRLGNBQWlCLENBQUM7QUFLMUM7SUFBa0Msd0JBQVk7SUFBOUM7UUFBQSxxRUFtREM7UUFqREcsVUFBSSxHQUFXLEVBQUUsQ0FBQzs7UUFnRGxCLGlCQUFpQjtJQUNyQixDQUFDO0lBL0NHLDRCQUE0QjtJQUU1QixxQkFBTSxHQUFOO0lBRUEsQ0FBQztJQUVELG9CQUFLLEdBQUw7SUFDQSxDQUFDO0lBRUQsbUJBQUksR0FBSixVQUFLLElBQUk7UUFDTCxJQUFHLElBQUk7WUFBRSxJQUFJLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQztRQUMxQixJQUFJLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFDO1FBQzdDLHVCQUFhLENBQUMsa0JBQWtCLENBQUMsSUFBSSxDQUFDLElBQUksRUFBQyxFQUFFLEVBQUMsQ0FBQyxFQUFDLE9BQU8sRUFBQyxJQUFJLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxNQUFNLENBQUMsRUFBQyxLQUFLLENBQUMsQ0FBQztRQUNsRyx5RkFBeUY7SUFFN0YsQ0FBQztJQUVELHdCQUFTLEdBQVQ7UUFDSSxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDdEMsQ0FBQztJQUVELHVCQUFRLEdBQVI7UUFDSSxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQztRQUNqQyxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxZQUFZLENBQUMsT0FBTyxDQUFDLENBQUMsV0FBVyxFQUFFLENBQUM7UUFDckQsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQztJQUN4QixDQUFDO0lBR0QseUJBQVUsR0FBVjtRQUFBLGlCQWdCQztRQWZHLElBQUksQ0FBQyxJQUFJLEVBQUcsQ0FBQztRQUNiLHVCQUFhLENBQUMsa0JBQWtCLENBQUMsSUFBSSxDQUFDLElBQUksRUFBQyxFQUFFLEVBQUMsQ0FBQyxFQUFDLE9BQU8sRUFBQyxJQUFJLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxNQUFNLENBQUMsRUFBQyxLQUFLLENBQUMsQ0FBQztRQUNoRyxJQUFHLElBQUksQ0FBQyxJQUFJLElBQUksQ0FBQyxFQUFDO1lBQ2QsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUM7WUFDakMsSUFBSSxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsU0FBUyxDQUFDLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQztZQUNsRCxJQUFNLFFBQVEsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxZQUFZLENBQUMsRUFBRSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1lBQy9FLFFBQVEsQ0FBQyxZQUFZLENBQUMsQ0FBQyxFQUFDLEtBQUssRUFBQyxLQUFLLENBQUMsQ0FBQztZQUNyQyxXQUFXO1lBQ1gsUUFBUSxDQUFDLG1CQUFtQixDQUFDO2dCQUN6QixjQUFjO2dCQUNkLEtBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUM7WUFDeEIsQ0FBQyxDQUFDLENBQUM7WUFDSCxhQUFXLENBQUMsU0FBUyxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsQ0FBQztZQUN4Qyx1QkFBdUI7U0FDMUI7SUFDTCxDQUFDO0lBaERnQixJQUFJO1FBRHhCLE9BQU87T0FDYSxJQUFJLENBbUR4QjtJQUFELFdBQUM7Q0FuREQsQUFtREMsQ0FuRGlDLEVBQUUsQ0FBQyxTQUFTLEdBbUQ3QztrQkFuRG9CLElBQUkiLCJmaWxlIjoiIiwic291cmNlUm9vdCI6Ii8iLCJzb3VyY2VzQ29udGVudCI6WyIvLyBMZWFybiBUeXBlU2NyaXB0OlxyXG4vLyAgLSBodHRwczovL2RvY3MuY29jb3MuY29tL2NyZWF0b3IvbWFudWFsL2VuL3NjcmlwdGluZy90eXBlc2NyaXB0Lmh0bWxcclxuLy8gTGVhcm4gQXR0cmlidXRlOlxyXG4vLyAgLSBodHRwczovL2RvY3MuY29jb3MuY29tL2NyZWF0b3IvbWFudWFsL2VuL3NjcmlwdGluZy9yZWZlcmVuY2UvYXR0cmlidXRlcy5odG1sXHJcbi8vIExlYXJuIGxpZmUtY3ljbGUgY2FsbGJhY2tzOlxyXG4vLyAgLSBodHRwczovL2RvY3MuY29jb3MuY29tL2NyZWF0b3IvbWFudWFsL2VuL3NjcmlwdGluZy9saWZlLWN5Y2xlLWNhbGxiYWNrcy5odG1sXHJcblxyXG5pbXBvcnQgTWFwQ29ucm9sZXIgZnJvbSBcIi4uL01hcFwiO1xyXG5pbXBvcnQgTnVtYmVyVG9JbWFnZSBmcm9tIFwiLi4vTnVtYmVyVG9JbWFnZVwiO1xyXG5cclxuY29uc3Qge2NjY2xhc3MsIHByb3BlcnR5fSA9IGNjLl9kZWNvcmF0b3I7XHJcblxyXG5cclxuXHJcbkBjY2NsYXNzXHJcbmV4cG9ydCBkZWZhdWx0IGNsYXNzIEJvb20gZXh0ZW5kcyBjYy5Db21wb25lbnQge1xyXG4gICAgc3RhdGljIF9pbnN0YW5jZTogYW55O1xyXG4gICAgdGltZTogbnVtYmVyID0gNjA7XHJcblxyXG4gICAgLy8gbWFwSW5mbzogbnVtYmVyW11bXSA9IFtdO1xyXG5cclxuICAgIG9uTG9hZCAoKSB7XHJcblxyXG4gICAgfSBcclxuXHJcbiAgICBzdGFydCAoKSB7XHJcbiAgICB9XHJcblxyXG4gICAgaW5pdCh0aW1lKXtcclxuICAgICAgICBpZih0aW1lKSB0aGlzLnRpbWUgPSB0aW1lO1xyXG4gICAgICAgIHRoaXMubm9kZS5nZXRDaGlsZEJ5TmFtZShcInRpbWVcIikuYWN0aXZlID0gdHJ1ZTtcclxuICAgICAgICAgIE51bWJlclRvSW1hZ2UubnVtYmVyVG9JbWFnZU5vZGVzKHRoaXMudGltZSwyMCw4LFwibG9ja19cIix0aGlzLm5vZGUuZ2V0Q2hpbGRCeU5hbWUoXCJ0aW1lXCIpLGZhbHNlKTtcclxuICAgICAgICAvLyB0aGlzLm5vZGUuZ2V0Q2hpbGRCeU5hbWUoXCJ0aW1lXCIpLmdldENvbXBvbmVudChjYy5MYWJlbCkuc3RyaW5nID0gdGhpcy50aW1lLnRvU3RyaW5nKCk7XHJcbiAgIFxyXG4gICAgfVxyXG5cclxuICAgIHN0YXJ0Qm9vbSgpe1xyXG4gICAgICAgIHRoaXMuc2NoZWR1bGUodGhpcy51cGRhdGVUaW1lLCAxKTtcclxuICAgIH1cclxuXHJcbiAgICBzdG9wQm9vbSgpe1xyXG4gICAgICAgIHRoaXMudW5zY2hlZHVsZSh0aGlzLnVwZGF0ZVRpbWUpO1xyXG4gICAgICAgIHRoaXMubm9kZS5wYXJlbnQuZ2V0Q29tcG9uZW50KFwiQmxvY2tcIikucmVzZXRGcmVlemUoKTtcclxuICAgICAgICB0aGlzLm5vZGUuZGVzdHJveSgpO1xyXG4gICAgfVxyXG5cclxuICAgIFxyXG4gICAgdXBkYXRlVGltZSgpe1xyXG4gICAgICAgIHRoaXMudGltZSAtLTtcclxuICAgICAgICBOdW1iZXJUb0ltYWdlLm51bWJlclRvSW1hZ2VOb2Rlcyh0aGlzLnRpbWUsMjAsOCxcImxvY2tfXCIsdGhpcy5ub2RlLmdldENoaWxkQnlOYW1lKFwidGltZVwiKSxmYWxzZSk7XHJcbiAgICAgICAgaWYodGhpcy50aW1lIDw9IDApe1xyXG4gICAgICAgICAgICB0aGlzLnVuc2NoZWR1bGUodGhpcy51cGRhdGVUaW1lKTtcclxuICAgICAgICAgICAgdGhpcy5ub2RlLmdldENoaWxkQnlOYW1lKFwiemhhbmRhblwiKS5hY3RpdmUgPSB0cnVlO1xyXG4gICAgICAgICAgICBjb25zdCBza2VsZXRvbiA9IHRoaXMubm9kZS5nZXRDaGlsZEJ5TmFtZShcInpoYW5kYW5cIikuZ2V0Q29tcG9uZW50KHNwLlNrZWxldG9uKTtcclxuICAgICAgICAgICAgc2tlbGV0b24uc2V0QW5pbWF0aW9uKDEsXCJlZmZcIixmYWxzZSk7XHJcbiAgICAgICAgICAgIC8vIOebkeWQrOWKqOeUu+WujOaIkOS6i+S7tlxyXG4gICAgICAgICAgICBza2VsZXRvbi5zZXRDb21wbGV0ZUxpc3RlbmVyKCgpID0+IHtcclxuICAgICAgICAgICAgICAgIC8vIOWKqOeUu+aSreaUvuWujOaIkOWQjumUgOavgeiKgueCuVxyXG4gICAgICAgICAgICAgICAgdGhpcy5ub2RlLmRlc3Ryb3koKTtcclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgIE1hcENvbnJvbGVyLl9pbnN0YW5jZS5mYWlsTGV2ZWwoXCJib29tXCIpO1xyXG4gICAgICAgICAgICAvLyB0aGlzLm5vZGUuZGVzdHJveSgpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICAvLyB1cGRhdGUgKGR0KSB7fVxyXG59XHJcbiJdfQ== +//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImFzc2V0c1xcU2NyaXB0XFxscV9iYXNlXFxkYXRhXFxscV9pbnRlcmZhY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsImZpbGUiOiIiLCJzb3VyY2VSb290IjoiLyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBWZWMyID0gY2MuVmVjMjtcclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgSVBvcyB7XHJcbiAgICB4OiBudW1iZXI7XHJcbiAgICB5OiBudW1iZXI7XHJcblxyXG4gICAgc3ViKHBvczogSVBvcyk6IFZlYzI7XHJcblxyXG4gICAgYWRkKHBvczogSVBvcyk6IFZlYzI7XHJcbn1cclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgSVJlY3Qge1xyXG4gICAgeDogbnVtYmVyO1xyXG4gICAgeTogbnVtYmVyO1xyXG4gICAgd2lkdGg6IG51bWJlcjtcclxuICAgIGhlaWdodDogbnVtYmVyO1xyXG4gICAgaGFsZl93aWR0aDogbnVtYmVyO1xyXG4gICAgaGFsZl9oZWlnaHQ6IG51bWJlcjtcclxuXHJcbiAgICBzdWIocG9zOiBJUG9zKTogVmVjMjtcclxuXHJcbiAgICBhZGQocG9zOiBJUG9zKTogVmVjMjtcclxufSJdfQ== //------QC-SOURCE-SPLIT------ (function() { @@ -23609,87 +12366,87 @@ cc._RF.pop(); cc._RF.push(module, 'a54702UNV9NA7pYgQd6eA5/', 'lq_data'); // Script/lq_base/data/lq_data.ts -"use strict"; -Object.defineProperty(exports, "__esModule", { value: true }); -exports.LQPlatformData = exports.LQShareData = exports.LQNativeComponent = exports.LQRect = void 0; -var Vec2 = cc.Vec2; -var Rect = cc.Rect; -var LQRect = /** @class */ (function () { - function LQRect(x, y, width, height) { - this.x = x; - this.y = y; - this.width = width; - this.height = height; - this.half_width = width * 0.5; - this.half_height = height * 0.5; - } - LQRect.prototype.top_left = function () { - return new Vec2(this.x - this.half_width, this.y + this.half_height); - }; - LQRect.prototype.top_right = function () { - return new Vec2(this.x + this.half_width, this.y + this.half_height); - }; - LQRect.prototype.bottom_left = function () { - return new Vec2(this.x - this.half_width, this.y - this.half_height); - }; - LQRect.prototype.bottom_right = function () { - return new Vec2(this.x + this.half_width, this.y - this.half_height); - }; - LQRect.prototype.pos = function () { - return new Vec2(this.x, this.y); - }; - LQRect.prototype.sub = function (pos) { - return new Vec2(pos.x - this.x, pos.y - this.y); - }; - LQRect.prototype.add = function (pos) { - return new Vec2(pos.x + this.x, pos.y + this.y); - }; - LQRect.prototype.to_cocos_rect = function () { - return new Rect(this.x - this.half_width, this.y - this.half_height, this.width, this.height); - }; - return LQRect; -}()); -exports.LQRect = LQRect; -var LQNativeComponent = /** @class */ (function () { - function LQNativeComponent() { - this.node_btn_arr = []; - } - return LQNativeComponent; -}()); -exports.LQNativeComponent = LQNativeComponent; -var LQShareData = /** @class */ (function () { - function LQShareData(obj) { - if (obj.title) { - this.title = obj.title; - } - if (obj.remote_url) { - this.remote_url = obj.remote_url; - } - if (obj.url_id) { - this.url_id = obj.url_id; - } - if (obj.query) { - this.query = obj.query; - } - if (obj.content) { - this.content = obj.content; - } - if (obj.extra) { - this.extra = obj.extra; - } - if (obj.type) { - this.type = obj.type; - } - } - return LQShareData; -}()); -exports.LQShareData = LQShareData; -var LQPlatformData = /** @class */ (function () { - function LQPlatformData() { - } - return LQPlatformData; -}()); -exports.LQPlatformData = LQPlatformData; +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.LQPlatformData = exports.LQShareData = exports.LQNativeComponent = exports.LQRect = void 0; +var Vec2 = cc.Vec2; +var Rect = cc.Rect; +var LQRect = /** @class */ (function () { + function LQRect(x, y, width, height) { + this.x = x; + this.y = y; + this.width = width; + this.height = height; + this.half_width = width * 0.5; + this.half_height = height * 0.5; + } + LQRect.prototype.top_left = function () { + return new Vec2(this.x - this.half_width, this.y + this.half_height); + }; + LQRect.prototype.top_right = function () { + return new Vec2(this.x + this.half_width, this.y + this.half_height); + }; + LQRect.prototype.bottom_left = function () { + return new Vec2(this.x - this.half_width, this.y - this.half_height); + }; + LQRect.prototype.bottom_right = function () { + return new Vec2(this.x + this.half_width, this.y - this.half_height); + }; + LQRect.prototype.pos = function () { + return new Vec2(this.x, this.y); + }; + LQRect.prototype.sub = function (pos) { + return new Vec2(pos.x - this.x, pos.y - this.y); + }; + LQRect.prototype.add = function (pos) { + return new Vec2(pos.x + this.x, pos.y + this.y); + }; + LQRect.prototype.to_cocos_rect = function () { + return new Rect(this.x - this.half_width, this.y - this.half_height, this.width, this.height); + }; + return LQRect; +}()); +exports.LQRect = LQRect; +var LQNativeComponent = /** @class */ (function () { + function LQNativeComponent() { + this.node_btn_arr = []; + } + return LQNativeComponent; +}()); +exports.LQNativeComponent = LQNativeComponent; +var LQShareData = /** @class */ (function () { + function LQShareData(obj) { + if (obj.title) { + this.title = obj.title; + } + if (obj.remote_url) { + this.remote_url = obj.remote_url; + } + if (obj.url_id) { + this.url_id = obj.url_id; + } + if (obj.query) { + this.query = obj.query; + } + if (obj.content) { + this.content = obj.content; + } + if (obj.extra) { + this.extra = obj.extra; + } + if (obj.type) { + this.type = obj.type; + } + } + return LQShareData; +}()); +exports.LQShareData = LQShareData; +var LQPlatformData = /** @class */ (function () { + function LQPlatformData() { + } + return LQPlatformData; +}()); +exports.LQPlatformData = LQPlatformData; cc._RF.pop(); } @@ -23708,7 +12465,7 @@ cc._RF.pop(); (function() { var nodeEnv = typeof require !== 'undefined' && typeof process !== 'undefined'; var __module = nodeEnv ? module : {exports:{}}; - var __filename = 'preview-scripts/assets/Script/lq_base/util/lq_platform_util.js'; + var __filename = 'preview-scripts/assets/Script/Block.js'; var __require = nodeEnv ? function (request) { return cc.require(request); } : function (request) { @@ -23716,125 +12473,1225 @@ cc._RF.pop(); }; function __define (exports, require, module) { if (!nodeEnv) {__quick_compile_project__.registerModule(__filename, module);}"use strict"; -cc._RF.push(module, '35875T0lsRL3rzhNkUdX4/G', 'lq_platform_util'); -// Script/lq_base/util/lq_platform_util.ts +cc._RF.push(module, 'c58deN2u1NGZL8nJwvnu1PR', 'Block'); +// Script/Block.ts -"use strict"; -Object.defineProperty(exports, "__esModule", { value: true }); -exports.LQPlatformUtil = void 0; -var lq_const_1 = require("../data/lq_const"); -var LQPlatformUtil = /** @class */ (function () { - function LQPlatformUtil() { - } - LQPlatformUtil.init = function () { - if (typeof qq !== 'undefined') { - this.platform_type = lq_const_1.LQPlatformType.qq; - } - else if (typeof swan !== 'undefined') { - this.platform_type = lq_const_1.LQPlatformType.baidu; - } - else if (typeof tt !== 'undefined') { - this.platform_type = lq_const_1.LQPlatformType.tt; - var info = tt.getSystemInfoSync(); - switch (info.appName) { - case 'Toutiao': - this.byte_dance_type = lq_const_1.LQByteDanceType.tt; - break; - case 'news_article_lite': - this.byte_dance_type = lq_const_1.LQByteDanceType.tt_lite; - break; - case 'Douyin': - this.byte_dance_type = lq_const_1.LQByteDanceType.douyin; - break; - case 'douyin_lite': - this.byte_dance_type = lq_const_1.LQByteDanceType.douyin_lite; - break; - case 'PPX': - this.byte_dance_type = lq_const_1.LQByteDanceType.ppx; - break; - case 'devtools': - this.byte_dance_type = lq_const_1.LQByteDanceType.devtools; - break; - } - } - else if (typeof qg !== 'undefined') { - if (!!qg.getBattle) { - this.platform_type = lq_const_1.LQPlatformType.oppo; - } - else { - this.platform_type = lq_const_1.LQPlatformType.vivo; - } - } - else if (typeof wx !== 'undefined') { - this.platform_type = lq_const_1.LQPlatformType.wx; - } - else if (typeof jsb !== 'undefined') { - if (cc.sys.os === cc.sys.OS_ANDROID) { - this.platform_type = lq_const_1.LQPlatformType.android; - } - else if (cc.sys.os === cc.sys.OS_IOS) { - this.platform_type = lq_const_1.LQPlatformType.ios; - } - else { - this.platform_type = lq_const_1.LQPlatformType.unknown; - } - } - else if (cc.sys.isBrowser) { - this.platform_type = lq_const_1.LQPlatformType.browser; - } - }; - LQPlatformUtil.get_platform = function () { - return this.platform_type; - }; - LQPlatformUtil.get_byte_dance = function () { - return this.byte_dance_type; - }; - LQPlatformUtil.is_wx = function () { - return this.platform_type === lq_const_1.LQPlatformType.wx; - }; - LQPlatformUtil.is_tt = function () { - return this.platform_type === lq_const_1.LQPlatformType.tt; - }; - LQPlatformUtil.is_oppo = function () { - return this.platform_type === lq_const_1.LQPlatformType.oppo; - }; - LQPlatformUtil.is_vivo = function () { - return this.platform_type === lq_const_1.LQPlatformType.vivo; - }; - LQPlatformUtil.is_ov = function () { - return this.platform_type === lq_const_1.LQPlatformType.oppo || this.platform_type === lq_const_1.LQPlatformType.vivo; - }; - LQPlatformUtil.is_browser = function () { - return this.platform_type === lq_const_1.LQPlatformType.browser; - }; - LQPlatformUtil.is_android = function () { - return this.platform_type === lq_const_1.LQPlatformType.android; - }; - LQPlatformUtil.is_ios = function () { - return this.platform_type === lq_const_1.LQPlatformType.ios; - }; - LQPlatformUtil.is_native = function () { - return this.platform_type === lq_const_1.LQPlatformType.android || this.platform_type === lq_const_1.LQPlatformType.ios; - }; - LQPlatformUtil.is_qq = function () { - return this.platform_type === lq_const_1.LQPlatformType.qq; - }; - LQPlatformUtil.is_baidu = function () { - return this.platform_type === lq_const_1.LQPlatformType.baidu; - }; - LQPlatformUtil.is_kwaigame = function () { - return this.platform_type === lq_const_1.LQPlatformType.kwaigame; - }; - return LQPlatformUtil; -}()); -exports.LQPlatformUtil = LQPlatformUtil; -LQPlatformUtil.init(); -if (LQPlatformUtil.is_tt()) { - // console.log('---------当前平台:' + LQPlatformUtil.get_byte_dance()); -} -else { - // console.log('---------当前平台:' + LQPlatformUtil.get_platform()); -} +"use strict"; +var __extends = (this && this.__extends) || (function () { + var extendStatics = function (d, b) { + extendStatics = Object.setPrototypeOf || + ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) || + function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; }; + return extendStatics(d, b); + }; + return function (d, b) { + extendStatics(d, b); + function __() { this.constructor = d; } + d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); + }; +})(); +var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) { + var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; + if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc); + else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; + return c > 3 && r && Object.defineProperty(target, key, r), r; +}; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.PathType = exports.BlockColor = exports.BlockType = void 0; +var lq_collide_system_1 = require("./lq_collide_system/lq_collide_system"); +var Map_1 = require("./Map"); +var _a = cc._decorator, ccclass = _a.ccclass, property = _a.property; +var BlockType; +(function (BlockType) { + /*普通地块 */ + BlockType[BlockType["\u666E\u901A\u5757"] = 0] = "\u666E\u901A\u5757"; + /*起点地块 */ + BlockType[BlockType["\u53E0\u52A0\u5757\u4E0B"] = 1] = "\u53E0\u52A0\u5757\u4E0B"; + /*湿地 */ + BlockType[BlockType["\u94A5\u5319\u5757"] = 2] = "\u94A5\u5319\u5757"; + /*山峰 */ + BlockType[BlockType["\u4E0A\u9501\u5757"] = 3] = "\u4E0A\u9501\u5757"; + /*终点地块 */ + BlockType[BlockType["\u51BB\u7ED3\u5757"] = 4] = "\u51BB\u7ED3\u5757"; + /*息壤 */ + BlockType[BlockType["\u661F\u661F\u5757"] = 5] = "\u661F\u661F\u5757"; + /*加固 */ + BlockType[BlockType["\u70B8\u5F39\u5757"] = 6] = "\u70B8\u5F39\u5757"; + /*加固 */ + BlockType[BlockType["\u6C34\u5E73\u5757"] = 7] = "\u6C34\u5E73\u5757"; + /*加固 */ + BlockType[BlockType["\u5782\u76F4\u5757"] = 8] = "\u5782\u76F4\u5757"; + /*加固 */ + BlockType[BlockType["\u7C98\u5408\u5757"] = 9] = "\u7C98\u5408\u5757"; + /*加固 */ + BlockType[BlockType["\u53E0\u52A0\u5757\u4E0A"] = 10] = "\u53E0\u52A0\u5757\u4E0A"; +})(BlockType = exports.BlockType || (exports.BlockType = {})); +var BlockColor; +(function (BlockColor) { + /*起点地块 */ + BlockColor[BlockColor["\u7D2B\u8272"] = 0] = "\u7D2B\u8272"; + /*湿地 */ + BlockColor[BlockColor["\u9EC4\u8272"] = 1] = "\u9EC4\u8272"; + /*山峰 */ + BlockColor[BlockColor["\u7EFF\u8272"] = 2] = "\u7EFF\u8272"; + /*终点地块 */ + BlockColor[BlockColor["\u84DD\u8272"] = 3] = "\u84DD\u8272"; + /*息壤 */ + BlockColor[BlockColor["\u7C89\u8272"] = 4] = "\u7C89\u8272"; + /*加固 */ + BlockColor[BlockColor["\u6A58\u9EC4\u8272"] = 5] = "\u6A58\u9EC4\u8272"; + /*加固 */ + BlockColor[BlockColor["\u9752\u8272"] = 6] = "\u9752\u8272"; + /*加固 */ + BlockColor[BlockColor["\u767D\u8272"] = 7] = "\u767D\u8272"; + /*加固 */ + BlockColor[BlockColor["\u7EA2\u8272"] = 8] = "\u7EA2\u8272"; + /*加固 */ + BlockColor[BlockColor["\u7070\u8272"] = 9] = "\u7070\u8272"; +})(BlockColor = exports.BlockColor || (exports.BlockColor = {})); +var PathType; +(function (PathType) { + PathType["err"] = "err"; + PathType["up"] = "up"; + PathType["down"] = "down"; + PathType["left"] = "left"; + PathType["right"] = "right"; + PathType["up_left"] = "up_left"; + PathType["up_right"] = "up_right"; + PathType["down_left"] = "down_left"; + PathType["down_right"] = "down_right"; + PathType["left_up"] = "left_up"; + PathType["left_down"] = "left_down"; + PathType["right_up"] = "right_up"; + PathType["right_down"] = "right_down"; +})(PathType = exports.PathType || (exports.PathType = {})); +var Block = /** @class */ (function (_super) { + __extends(Block, _super); + function Block() { + var _this = _super !== null && _super.apply(this, arguments) || this; + // 新增缓存变量 + _this.moveInterval = 0; // 约 60 FPS + _this.lastMoveTime = 0; // 上下两个值来调节跟手,一个是时间轴,一个是距离轴 + _this.maxSpeed = 300; // 最大移动距离 + // private otherCollider: cc.Collider = null; + // @property({ + // tooltip: '碰撞形状,None就是无敌,不参与碰撞', + // type: cc.Enum(BlockType), + // // default: BlockType.Nomal, + // displayName: '碰撞形状' + // }) + _this.type = BlockType.普通块; + _this.color = BlockColor.紫色; + _this.heng = 1; + _this.shu = 1; + _this.ice_SpriteFrame = null; + // LIFE-CYCLE CALLBACKS: + // @property(cc.SpriteAtlas) + // UI: cc.SpriteAtlas = null; + _this.initialTouchOffset = null; + _this.offsetTolerance = 100; // 偏移容忍度; + _this.touchPoint = null; //触摸点 + _this.isTouch = false; //是否触摸 + _this.posX = 0; //地图块的X坐标 + _this.posY = 0; //地图块的Y坐标 + _this.moveLeft = true; //是否可以左移; + _this.moveRight = true; //是否可以右移; + _this.moveUp = true; //是否可以上移; + _this.moveDown = true; //是否可以下移; + _this.moveCorner = 0; //是否碰撞角落 + _this.moveY = 0; //是否可以上下移动; + _this.moveX = 0; //是否可以左右移动; + _this.touchPointX = 0; //触摸点X坐标; + _this.touchPointY = 0; //触摸点Y坐标; + _this.blockId = 0; //方块ID; + _this.level = 0; //叠加方块层数; + _this.pz = false; + _this.over = false; //方块是否失效已消失 + _this.touchDelta = cc.v2(0, 0); + _this.checkCollision = false; + return _this; + } + Block.prototype.onLoad = function () { + this.pz = false; + this.stacking = cc.v2(0, 0); + this.adhesive = cc.v2(0, 0); + this.adhesiveNode = []; + this.collider = this.node.getComponent(cc.PolygonCollider); + this.over = false; + this.checkCollision = false; + }; + Block.prototype.start = function () { + }; + Block.prototype.jsonDeepClone = function (obj) { + return JSON.parse(JSON.stringify(obj)); + }; + //createAd 为是否创建粘合快图片 + Block.prototype.init = function (block_Info, posX, posY, node, createAd) { + var _this = this; + this.block_Info = this.jsonDeepClone(block_Info); + if (node) + this.block_Info.node = node; + this.type = block_Info.type; + this.color = block_Info.color; + this.blockId = block_Info.id; + // if(posX&&posY){ + // this.posX = posX; + // this.posY = posY; + // } + // console.log("方块层级",this.node.zIndex); + this.initColor(); + this.initType(); + this.initBlocks(); + if (this.type != BlockType.叠加块上) { + this.node.on(cc.Node.EventType.TOUCH_START, this.touchStart, this); + this.node.on(cc.Node.EventType.TOUCH_MOVE, this.touchMove, this); + this.node.on(cc.Node.EventType.TOUCH_CANCEL, this.touchEnd, this); + this.node.on(cc.Node.EventType.TOUCH_END, this.touchEnd, this); + this.node['_touchListener'].setSwallowTouches(false); + setTimeout(function () { + if (_this.type == BlockType.粘合块) { + // 计算位置偏移 + var posOffset_1 = cc.v2(_this.node.x - _this.block_Info.node.x, _this.node.y - _this.block_Info.node.y); + if (createAd) { + if (_this.node.zIndex >= _this.block_Info.node.zIndex) + _this.createAdhesive(); + else + _this.block_Info.node.getComponent("Block").createAdhesive(); + } + var targetNames_1 = ['top', 'down', 'left', 'right']; + _this.block_Info.node.children.forEach(function (child) { + if (child instanceof cc.Node && targetNames_1.includes(child.name) && child.getComponent("lq_collide").data_string != "-1") { + var clonedChild = cc.instantiate(child); + clonedChild.getComponent("lq_collide").data_string = "-1"; + clonedChild.parent = _this.node; + // 获取子节点相对于父节点的位置 + var relativePos = child.getPosition(); + // 调整子节点位置以保证相对位置不变 + clonedChild.setPosition(relativePos.x - posOffset_1.x, relativePos.y - posOffset_1.y); + } + }); + _this.adhesive = posOffset_1; + } + }, 100); + var mapInfo = Map_1.default._instance.mapInfo; + for (var i = 0; i < mapInfo.length; i++) { + var blockRect = mapInfo[i].getBoundingBox(); + // 使用 cc.Intersection.pointInRect 方法判断点是否在矩形范围内 + var point = cc.v2(this.node.position.x - 5, this.node.position.y + 10); + if (blockRect.contains(point)) { + this.posX = mapInfo[i].getComponent("MapBlock").posX; + this.posY = mapInfo[i].getComponent("MapBlock").posY; + this.setMapBlock(); + this.level = 50 + this.posX - this.posY * 3; + this.node.zIndex = this.level; + this.node.x = mapInfo[i].x + 65; + this.node.y = mapInfo[i].y - 60; + i = 10000; + this.hit = new cc.Node(); + this.hit.addComponent(cc.Sprite); + this.hit.parent = this.node; + var name = "xz_" + this.block_Info.block; + this.hit.getComponent(cc.Sprite).spriteFrame = this.ice_SpriteFrame._spriteFrames[name]; + this.hit.setAnchorPoint(this.node.anchorX, this.node.anchorY); + this.hit.setPosition(13, -11); + if (this.hit.anchorX == 0.5) + this.hit.setPosition(0, -11); + else if (this.hit.anchorX == 0.33) + this.hit.setPosition(-13, -11); + else if (this.hit.anchorX == 0.66) + this.hit.setPosition(2, -9); + // this.hit.opacity = 0; + this.hit.active = false; + break; + } + } + } + }; + //初始化方块类型 + Block.prototype.initType = function () { + var _a; + var posConfig = cc.fx.GameConfig.PROP_INFO[this.block_Info.block]; + switch (this.type) { + case BlockType.炸弹块: + var boom = cc.instantiate(Map_1.default._instance.Block_Prop[this.type]); + boom.parent = this.node; + boom.setPosition(posConfig.pos1.x, posConfig.pos1.y); + if ((_a = this.block_Info) === null || _a === void 0 ? void 0 : _a.boomTime) + boom.getComponent("Boom").init(this.block_Info.boomTime); + break; + case BlockType.星星块: + var star = cc.instantiate(Map_1.default._instance.Block_Prop[this.type]); + star.anchorX = this.node.anchorX; + star.anchorY = this.node.anchorY; + star.getComponent(cc.Sprite).spriteFrame = star.getComponent("Star").star_SpriteFrame.getSpriteFrame("star_" + this.block_Info.block); + star.parent = this.node; + star.setPosition(posConfig.pos4.x - 10, posConfig.pos4.y); + case BlockType.钥匙块: + var key = cc.instantiate(Map_1.default._instance.Block_Prop[this.type]); + key.parent = this.node; + key.setPosition(posConfig.pos1.x, posConfig.pos1.y); + break; + case BlockType.上锁块: + var lock = cc.instantiate(Map_1.default._instance.Block_Prop[this.type]); + lock.parent = this.node; + lock.setPosition(posConfig.pos1.x, posConfig.pos1.y); + lock.getComponent("Lock").init(this.block_Info.lockTime); + break; + case BlockType.冻结块: + var freeze = cc.instantiate(Map_1.default._instance.Block_Prop[this.type]); + freeze.parent = this.node; + var name = "ice_" + this.block_Info.block; + var spriteFrame = this.ice_SpriteFrame._spriteFrames[name]; + freeze.getChildByName("icon").getComponent(cc.Sprite).spriteFrame = spriteFrame; + var freezeX = posConfig.pos6.x - (this.node.width * (this.node.anchorX - 0.5)); + var freezeY = posConfig.pos6.y + this.node.height / 2; + freeze.setPosition(freezeX, freezeY); + freeze.getComponent("Freeze").init(this.block_Info.freezeTime); + freeze.getChildByName("time").setPosition(posConfig.pos5.x - 10 - freezeX, posConfig.pos5.y - 2 - freezeY); + break; + case BlockType.水平块: + var horizontal = cc.instantiate(Map_1.default._instance.Block_Prop[this.type]); + horizontal.parent = this.node; + var heng = "heng" + this.heng; + horizontal.getChildByName(heng).active = true; + horizontal.setPosition(posConfig.pos2.x - 3, posConfig.pos2.y); + break; + case BlockType.垂直块: + var vertical = cc.instantiate(Map_1.default._instance.Block_Prop[this.type]); + vertical.parent = this.node; + var shu = "shu" + this.shu; + vertical.getChildByName(shu).active = true; + vertical.setPosition(posConfig.pos3.x, posConfig.pos3.y); + break; + case BlockType.叠加块上: + this.moveStack = false; + this.node.off(cc.Node.EventType.TOUCH_START); + this.node.off(cc.Node.EventType.TOUCH_MOVE); + this.node.off(cc.Node.EventType.TOUCH_CANCEL); + this.node.off(cc.Node.EventType.TOUCH_END); + // this.selfBoxColliders = []; + this.node.zIndex = 201; + var pos = this.getStackingPos(); + this.node.setPosition(this.node.x + pos.x, this.node.y + pos.y); + this.stacking = cc.v2(this.node.x - this.block_Info.node.x, this.node.y - this.block_Info.node.y); + this.block_Info.node.getComponent("Block").block_Info.node = this.node; + this.node.scaleX *= 0.7; + this.node.scaleY *= 0.7; + for (var i = 0; i < this.node.children.length; i++) { + if (this.node.children[i].name == "left" || this.node.children[i].name == "right" || this.node.children[i].name == "top" || this.node.children[i].name == "down") + this.node.children[i].active = false; + } + break; + } + }; + //初始化方块颜色 + Block.prototype.initColor = function () { + var name = this.color + "color" + this.block_Info.block; + var number = Math.floor((this.color - 1) / 2); + var blockSpriteFrame = Map_1.default._instance.Block_Color[number]._spriteFrames; + var spriteFrame = blockSpriteFrame[name]; + // if(this.type == BlockType.冻结块){ + // name = "ice_"+this.block_Info.block; + // spriteFrame = this.ice_SpriteFrame._spriteFrames[name]; + // } + this.node.getChildByName("icon").getComponent(cc.Sprite).spriteFrame = spriteFrame; + }; + //创建粘合快连接处 + Block.prototype.createAdhesive = function () { + var box = []; + for (var i = 0; i < this.allBlocks.length; i++) { + box.push(cc.v2(this.allBlocks[i].x + this.posX, this.allBlocks[i].y + this.posY)); + } + var otherBox = []; + for (var i = 0; i < this.block_Info.node.getComponent("Block").allBlocks.length; i++) { + otherBox.push(cc.v2(this.block_Info.node.getComponent("Block").allBlocks[i].x + this.block_Info.node.getComponent("Block").posX, this.block_Info.node.getComponent("Block").allBlocks[i].y + this.block_Info.node.getComponent("Block").posY)); + } + for (var k = 0; k < box.length; k++) { + for (var j = 0; j < otherBox.length; j++) { + if ((box[k].x == otherBox[j].x + 1 || box[k].x == otherBox[j].x - 1) && (box[k].y == otherBox[j].y)) { + //在X轴 相邻 + var left = box[k].x == otherBox[j].x + 1 ? "left" : "right"; + this.addAdhesive(left, box[k]); + otherBox.splice(j, 1); + j--; // 调整索引 + if (j < 0) + break; + } + if ((box[k].y == otherBox[j].y + 1 || box[k].y == otherBox[j].y - 1) && (box[k].x == otherBox[j].x)) { + //在Y轴 相邻 + var down = box[k].y == otherBox[j].y + 1 ? "down" : "up"; + this.addAdhesive(down, box[k]); + otherBox.splice(j, 1); + j--; // 调整索引 + if (j < 0) + break; + } + } + } + // let adhesive = cc.instantiate(MapConroler._instance.Block_Prop[this.type]); + }; + //具体添加粘合快锁链方法 + Block.prototype.addAdhesive = function (diraction, box) { + var pos = cc.v2(box.x - this.posX, box.y - this.posY); + var adhesive = cc.instantiate(Map_1.default._instance.Block_Prop[10]); + adhesive.parent = this.node.parent.getChildByName("Adhesive"); + // adhesive.parent = this.node.getChildByName("adhesive"); + adhesive.setPosition(120 * pos.x - 65 + this.node.x, 120 * pos.y + 60 + this.node.y); + if (diraction == "left" || diraction == "right") { + adhesive.getChildByName("heng").active = true; + adhesive.getChildByName("heng").x = -60; + if (diraction == "right") + adhesive.getChildByName("heng").x = 60; + adhesive.getChildByName("heng").x += 9; + adhesive.getChildByName("heng").y += 7; + } + else { + adhesive.getChildByName("shu").active = true; + adhesive.getChildByName("shu").y = -60; + if (diraction == "up") + adhesive.getChildByName("shu").y = 60; + } + adhesive.getComponent("Adhesive").init(this.node); + this.adhesiveNode.push(adhesive); + }; + Block.prototype.removeAdhesive = function () { + if (this.adhesiveNode.length > 0) { + for (var i = 0; i < this.adhesiveNode.length; i++) { + var adhesive = this.adhesiveNode[i]; + adhesive.getComponent("Adhesive").remove(); + } + } + }; + //方块落点 + Block.prototype.blockFall = function (point) { + if (this.over == true) + return; + // // 假设 MapConroler 有网格信息,这里简单示例 + var mapWidth = Map_1.default._instance.mapWidth; + var mapHeight = Map_1.default._instance.mapHeight; + var cellSize = 120; // 每个格子的大小,根据实际情况调整 + // 计算点所在的网格坐标 + var gridX = Math.floor((point.x + (mapWidth * cellSize / 2)) / cellSize); + var gridY = Math.floor((point.y + (mapHeight * cellSize / 2)) / cellSize); + // 检查网格坐标是否越界 + if (gridX >= 0 && gridX < mapWidth && gridY >= 0 && gridY < mapHeight) { + var mapBlock = Map_1.default._instance.mapBlocksWall[gridX][gridY]; + var blockRect = mapBlock.getBoundingBox(); + // 使用 cc.Intersection.pointInRect 方法判断点是否在矩形范围内 + if (blockRect.contains(point)) { + //寻找落点 + this.removeMapBlock(); + this.posX = mapBlock.getComponent("MapBlock").posX; + this.posY = mapBlock.getComponent("MapBlock").posY; + this.setMapBlock(); + this.level = 50 + this.posX - this.posY * 3; + this.node.zIndex = this.level; + // console.log("方块层级",this.node.zIndex); + this.node.x = mapBlock.x + 65; + this.node.y = mapBlock.y - 60; + if (this.type == 9) { + if (this.block_Info.node) { + this.block_Info.node.x = this.node.x - this.adhesive.x; + this.block_Info.node.y = this.node.y - this.adhesive.y; + } + } + else if (this.type == 1) { + this.block_Info.node.getComponent("Block").moveStack = false; + this.block_Info.node.x = this.node.x + this.block_Info.node.getComponent("Block").stacking.x; + this.block_Info.node.y = this.node.y + this.block_Info.node.getComponent("Block").stacking.y; + } + } + } + var jg = Map_1.default._instance.checkPass(this.node, this.allBlocks); + if (jg >= 0) { + this.over = true; + Map_1.default._instance.changeState(); + this.removeBoxCollider(); + this.removeMapBlock(); + this.removeAction(jg); + } + else { + Map_1.default._instance.upDoor(this.color); + this.setVibrate("medium", 1); + //@ts-ignore + } + }; + Block.prototype.removeBoxCollider = function () { + for (var i = 0; i < this.node.children.length; i++) { + if (this.node.children[i].name == "left" || this.node.children[i].name == "right" || this.node.children[i].name == "top" || this.node.children[i].name == "down") + this.node.children[i].destroy(); + } + }; + Block.prototype.removeAction = function (diraction) { + var _this = this; + this.node.off(cc.Node.EventType.TOUCH_START); + this.node.off(cc.Node.EventType.TOUCH_MOVE); + this.node.off(cc.Node.EventType.TOUCH_CANCEL); + this.node.off(cc.Node.EventType.TOUCH_END); + this.node.addComponent(cc.Mask); + var self = this; + var pos = this.node.getPosition(); + if (this.type == BlockType.叠加块下) { + var scaleX = this.node.scaleX; + var scaleY = this.node.scaleY; + this.block_Info.node.getComponent("Block").restoreNomal(this.posX, this.posY, true); + cc.tween(this.block_Info.node) + .to(0.3, { position: pos, scaleX: scaleX > 0 ? 1 : -1, scaleY: scaleY > 0 ? 1 : -1 }) + .start(); + } + else if (this.type == BlockType.粘合块) { + this.removeAdhesive(); + this.block_Info.node.getComponent("Block").removeAdhesive(); + this.block_Info.node.getComponent("Block").restoreNomal(this.block_Info.node.getComponent("Block").posX, this.block_Info.node.getComponent("Block").posY, false); + this.block_Info.node = null; + } + else if (this.type == BlockType.炸弹块) { + this.node.getChildByName("boom").getComponent("Boom").stopBoom(); + } + var time = 0.33; + // this.node.zIndex = 0; + var width = Math.floor(this.node.width / 120); + var height = Math.floor(this.node.height / 120); + setTimeout(function () { + cc.fx.AudioManager._instance.playEffect("xiaochu", null); + }, 300); + this.setVibrate("light", 3); + if (diraction == 0) { + time = 0.33 * height; + // time = 0.99; + for (var i = 0; i < this.node.children.length; i++) { + cc.tween(this.node.children[i]) + .to(time, { y: this.node.children[i].y + this.node.children[0].height }) + .start(); + } + } + else if (diraction == 1) { + time = 0.33 * height; + // time = 0.99 + for (var i = 0; i < this.node.children.length; i++) { + cc.tween(this.node.children[i]) + .to(time, { y: this.node.children[i].y - this.node.children[0].height }) + .start(); + } + } + else if (diraction == 2) { + time = 0.33 * width; + // time = 0.99 + for (var i = 0; i < this.node.children.length; i++) { + cc.tween(this.node.children[i]) + .to(time, { x: this.node.children[i].x - this.node.children[0].width }) + .start(); + } + } + else if (diraction == 3) { + time = 0.33 * width; + // time = 0.99 + for (var i = 0; i < this.node.children.length; i++) { + cc.tween(this.node.children[i]) + .to(time, { x: this.node.children[i].x + this.node.children[0].width }) + .start(); + } + } + setTimeout(function () { + var tempColor = _this.color; + setTimeout(function () { + Map_1.default._instance.upDoor(tempColor); + }, 250); + Map_1.default._instance.nextLevel(); + _this.node.active = false; + _this.node.removeFromParent(); + // this.node.active = false; + // this.node.removeFromParent(); + }, time * 1000); + }; + Block.prototype.touchStart = function (event) { + if (this.over || Map_1.default._instance.gameOver) + return; + // 返回世界坐标 + var touchLoc = event.getLocation(); + // https://docs.cocos.com/creator/api/zh/classes/Intersection.html 检测辅助类 + // let pos = this.collider.world.points + if (!this.collider.world) { + return; + } + // 判断触摸点是否在多边形内 + if (cc.Intersection.pointInPolygon(touchLoc, this.collider.world.points)) { + if (Map_1.default._instance.hammer) { + this.eliminate(); + this.isTouch = false; + Map_1.default._instance.hammerMask.active = false; + Map_1.default._instance.node.parent.getChildByName("Bottom").getChildByName("destroyBtn").getComponent("btnControl").setTouch(true); + return false; + } + if (this.type != BlockType.上锁块 && this.type != BlockType.冻结块) { + Map_1.default._instance.startUpdate(); + cc.fx.AudioManager._instance.playEffect("hit", null); + this.node.zIndex = 200; + if (this.type == 9) { + if (this.block_Info.node) { + this.block_Info.node.zIndex = 200; + this.block_Info.node.getComponent("Block").hit.active = true; + Map_1.default._instance.downDoor(this.block_Info.node.getComponent("Block").color, this.block_Info.node.getComponent("Block").type); + } + } + else if (this.type == 1) { + this.block_Info.node.getComponent("Block").moveStack = true; + } + var touchPoint = event.getLocation(); + var local = this.node.parent.convertToNodeSpaceAR(touchPoint); + this.touchPointX = local.x; + this.touchPointY = local.y; + this.moveLeft = this.moveRight = this.moveUp = this.moveDown = true; + this.isTouch = true; + this.moveCorner = 0; + this.relative_Position = cc.v2(this.node.x - local.x, this.node.y - local.y); + Map_1.default._instance.changeRiseFall(this.color, true); + Map_1.default._instance.downDoor(this.color, this.type); + this.setVibrate("light", 1); + if (this.hit) + this.hit.active = true; + return true; + } + else { + this.isTouch = false; + return false; + } + } + else { + this.isTouch = false; + return false; + } + }; + Block.prototype.touchEnd = function (event) { + if (Map_1.default._instance.gameOver) + return; + if (this.isTouch) { + this.touchDelta = cc.v2(0, 0); + this.checkCollision = false; + Map_1.default._instance.changeRiseFall(this.color, false); + cc.fx.AudioManager._instance.playEffect("down", null); + Map_1.default._instance.removeOneBlock(); + this.isTouch = false; + this.node.zIndex = this.level; + this.hit.active = false; + if (this.type == 9) { + if (this.block_Info.node) { + this.block_Info.node.getComponent("Block").hit.active = false; + // this.block_Info.node.getComponent("Block").isTouch = false; + } + } + this.touchPoint = event.getLocation(); + var local = cc.v2(this.node.x - 50, this.node.y + 50); + if (this.type != 10) { + //@ts-ignore + this.blockFall(local); + if (this.type == 9) { + if (this.block_Info.node) { + var localTemp = cc.v2(this.block_Info.node.x - 50, this.block_Info.node.y + 50); + this.block_Info.node.getComponent("Block").blockFall(localTemp); + } + } + } + this.moveLeft = this.moveRight = this.moveUp = this.moveDown = true; + } + }; + Block.prototype.touchMove = function (event) { + if (Map_1.default._instance.gameOver) + return; + // const currentTime = Date.now(); + // // 如果距离上次移动时间小于间隔时间,直接返回 + // if (currentTime - this.lastMoveTime < this.moveInterval) { + // return; + // } + // this.lastMoveTime = currentTime; + if (this.isTouch) { + var delta = event.getDelta(); + var touchPoint = event.getLocation(); + var local = this.node.parent.convertToNodeSpaceAR(touchPoint); + this.touchPointX = local.x; + this.touchPointY = local.y; + delta.x = this.touchPointX - this.node.x + this.relative_Position.x; + delta.y = this.touchPointY - this.node.y + this.relative_Position.y; + // 限制移动速度 + this.touchPointX = local.x; + this.touchPointY = local.y; + delta.x = this.touchPointX - this.node.x + this.relative_Position.x; + delta.y = this.touchPointY - this.node.y + this.relative_Position.y; + // 限制移动速度 + delta.x = Math.max(-this.maxSpeed, Math.min(this.maxSpeed, delta.x)); + delta.y = Math.max(-this.maxSpeed, Math.min(this.maxSpeed, delta.y)); + // 记录触摸移动的增量 + this.touchDelta = delta; + } + }; + //超出限制判断 + Block.prototype.exceeds = function (stepx, stepy) { + }; + Block.prototype.eliminate = function () { + var _this = this; + //锤子状态消失 + Map_1.default._instance.pause = true; + Map_1.default._instance.hammer = false; + //如果方块是有特殊状态,则特殊处理 + if (this.type == BlockType.冻结块) { + this.node.getChildByName("freeze").getComponent("Freeze").reduce(2); + return; + } + else if (this.type == BlockType.上锁块) { + this.node.getChildByName("lock").getComponent("Lock").reduce(); + return; + } + //如果方块可以消除 + Map_1.default._instance.blockNum -= 1; + Map_1.default._instance.special_Treatment(this.node); + var self = this; + this.removeMapBlock(); + setTimeout(function () { + var pos = _this.node.getPosition(); + if (self.type == BlockType.叠加块下) { + var scaleX = self.node.scaleX; + var scaleY = self.node.scaleY; + self.block_Info.node.getComponent("Block").restoreNomal(_this.posX, _this.posY, true); + cc.tween(self.block_Info.node) + .to(0.1, { position: pos, scaleX: scaleX > 0 ? 1 : -1, scaleY: scaleY > 0 ? 1 : -1 }) + .start(); + } + else if (self.type == BlockType.粘合块) { + self.block_Info.node.getComponent("Block").restoreNomal(self.block_Info.node.getComponent("Block").posX, self.block_Info.node.getComponent("Block").posY, false); + } + else if (self.type == BlockType.炸弹块) { + _this.node.getChildByName("boom").getComponent("Boom").stopBoom(); + } + Map_1.default._instance.nextLevel(); + _this.node.active = false; + _this.node.removeFromParent(); + }, 200); + }; + Block.prototype.setVibrate = function (type, count) { + // return; + if (!cc.fx.GameConfig.GM_INFO.vibrateOpen) { + return; + } + if (count == 1) { + //@ts-ignore + if (typeof wx !== 'undefined' && wx !== null) { // 判断是否在微信环境 + //@ts-ignore + wx.vibrateShort({ + type: type, + success: function () { + }, + fail: function (err) { + } + }); + } + else { + } + return; + } + var time = 150; + for (var i = 0; i < 4; i++) { + setTimeout(function () { + //@ts-ignore + if (typeof wx !== 'undefined' && wx !== null) { // 判断是否在微信环境 + //@ts-ignore + wx.vibrateShort({ + type: type, + success: function () { + }, + fail: function (err) { + } + }); + } + else { + } + }, time * i); + } + }; + Block.prototype.setMoveCorner = function (diraction) { + return; + }; + Block.prototype.cmupdate = function () { + var cm = cc.director.getCollisionManager(); + cm.update(); + }; + Block.prototype.restoreNomal = function (posX, posY, type) { + this.type = 0; + this.block_Info.node = null; + this.moveStack = false; + this.posX = posX; + this.posY = posY; + this.setMapBlock(); + this.level = 50 + this.posX - this.posY * 3; + this.node.zIndex = this.level; + var j = 1000; + for (var i = 0; i < this.node.children.length; i++) { + if (this.node.children[i].name == "New Node") { + j = i; + } + if (i > j) { + this.node.children[i].active = false; + } + } + if (type) { + for (var i = 0; i < this.node.children.length; i++) { + if (this.node.children[i].name == "left" || this.node.children[i].name == "right" || this.node.children[i].name == "top" || this.node.children[i].name == "down") + this.node.children[i].active = true; + } + } + this.node.on(cc.Node.EventType.TOUCH_START, this.touchStart, this); + this.node.on(cc.Node.EventType.TOUCH_MOVE, this.touchMove, this); + this.node.on(cc.Node.EventType.TOUCH_CANCEL, this.touchEnd, this); + this.node.on(cc.Node.EventType.TOUCH_END, this.touchEnd, this); + this.node['_touchListener'].setSwallowTouches(false); + this.hit = new cc.Node(); + this.hit.addComponent(cc.Sprite); + this.hit.parent = this.node; + var name = "xz_" + this.block_Info.block; + this.hit.getComponent(cc.Sprite).spriteFrame = this.ice_SpriteFrame._spriteFrames[name]; + this.hit.setAnchorPoint(this.node.anchorX, this.node.anchorY); + this.hit.setPosition(13, -11); + if (this.hit.anchorX == 0.5) + this.hit.setPosition(0, -11); + else if (this.hit.anchorX == 0.33) + this.hit.setPosition(-13, -11); + else if (this.hit.anchorX == 0.66) + this.hit.setPosition(2, -9); + this.hit.active = false; + }; + //冻结状态恢复为常规状态 + Block.prototype.resetFreeze = function () { + this.type = 0; + this.block_Info.type = 0; + var name = this.color + "color" + this.block_Info.block; + var number = Math.floor((this.color - 1) / 2); + var blockSpriteFrame = Map_1.default._instance.Block_Color[number]._spriteFrames; + var spriteFrame = blockSpriteFrame[name]; + this.node.getChildByName("icon").getComponent(cc.Sprite).spriteFrame = spriteFrame; + }; + Block.prototype.initBlocks = function () { + this.allBlocks = []; + switch (this.block_Info.block) { + case 0: + var pos = cc.v2(0, 0); + this.allBlocks = [pos]; + break; + case 1: + var pos1 = cc.v2(0, 0); + var pos2 = cc.v2(-1, 0); + this.allBlocks = [pos1, pos2]; + break; + case 2: + var pos3 = cc.v2(0, 0); + var pos4 = cc.v2(0, 1); + this.allBlocks = [pos3, pos4]; + break; + case 3: + var pos5 = cc.v2(0, 0); + var pos6 = cc.v2(-1, 0); + var pos7 = cc.v2(-2, 0); + this.allBlocks = [pos5, pos6, pos7]; + break; + case 4: + var pos8 = cc.v2(0, 0); + var pos9 = cc.v2(0, 1); + var pos10 = cc.v2(0, 2); + this.allBlocks = [pos8, pos9, pos10]; + break; + case 5: + var pos11 = cc.v2(0, 0); + var pos12 = cc.v2(-1, 0); + var pos13 = cc.v2(-1, 1); + var pos14 = cc.v2(0, 1); + this.allBlocks = [pos11, pos12, pos13, pos14]; + break; + case 6: + var pos15 = cc.v2(0, 0); + var pos16 = cc.v2(0, 1); + var pos17 = cc.v2(0, 2); + var pos18 = cc.v2(-1, 2); + this.allBlocks = [pos15, pos16, pos17, pos18]; + break; + case 7: + var pos19 = cc.v2(0, 0); + var pos20 = cc.v2(0, 1); + var pos21 = cc.v2(-1, 1); + var pos22 = cc.v2(-2, 1); + this.allBlocks = [pos19, pos20, pos21, pos22]; + break; + case 8: + var pos23 = cc.v2(0, 0); + var pos24 = cc.v2(-1, 0); + var pos25 = cc.v2(-1, 1); + var pos26 = cc.v2(-1, 2); + this.allBlocks = [pos23, pos24, pos25, pos26]; + break; + case 9: + var pos27 = cc.v2(0, 0); + var pos28 = cc.v2(-1, 0); + var pos29 = cc.v2(-2, 0); + var pos30 = cc.v2(0, 1); + this.allBlocks = [pos27, pos28, pos29, pos30]; + break; + case 10: + var pos31 = cc.v2(0, 0); + var pos32 = cc.v2(1, 2); + var pos33 = cc.v2(0, 1); + var pos34 = cc.v2(0, 2); + this.allBlocks = [pos31, pos32, pos33, pos34]; + break; + case 11: + var pos35 = cc.v2(0, 0); + var pos36 = cc.v2(2, 1); + var pos37 = cc.v2(1, 1); + var pos38 = cc.v2(0, 1); + this.allBlocks = [pos35, pos36, pos37, pos38]; + break; + case 12: + var pos39 = cc.v2(0, 0); + var pos40 = cc.v2(0, 1); + var pos41 = cc.v2(0, 2); + var pos42 = cc.v2(-1, 0); + this.allBlocks = [pos39, pos40, pos41, pos42]; + break; + case 13: + var pos43 = cc.v2(0, 0); + var pos44 = cc.v2(-1, 0); + var pos45 = cc.v2(-2, 0); + var pos46 = cc.v2(-2, 1); + this.allBlocks = [pos43, pos44, pos45, pos46]; + break; + case 14: + var pos47 = cc.v2(0, 0); + var pos48 = cc.v2(0, 1); + var pos49 = cc.v2(-1, 1); + var pos50 = cc.v2(1, 1); + this.allBlocks = [pos47, pos48, pos49, pos50]; + break; + case 15: + var pos51 = cc.v2(0, 0); + var pos52 = cc.v2(-1, 0); + var pos53 = cc.v2(-2, 0); + var pos54 = cc.v2(-1, 1); + this.allBlocks = [pos51, pos52, pos53, pos54]; + break; + case 16: + var pos55 = cc.v2(0, 0); + var pos56 = cc.v2(1, 1); + var pos57 = cc.v2(0, 1); + var pos58 = cc.v2(0, 2); + this.allBlocks = [pos55, pos56, pos57, pos58]; + break; + case 17: + var pos59 = cc.v2(0, 0); + var pos60 = cc.v2(0, 1); + var pos61 = cc.v2(0, 2); + var pos62 = cc.v2(-1, 1); + this.allBlocks = [pos59, pos60, pos61, pos62]; + break; + case 18: + var pos63 = cc.v2(0, 0); + var pos64 = cc.v2(0, 1); + var pos65 = cc.v2(0, 2); + var pos66 = cc.v2(1, 1); + var pos67 = cc.v2(-1, 1); + this.allBlocks = [pos63, pos64, pos65, pos66, pos67]; + break; + case 19: + var pos68 = cc.v2(0, 0); + var pos69 = cc.v2(0, 1); + var pos70 = cc.v2(-1, 0); + this.allBlocks = [pos68, pos69, pos70]; + break; + case 20: + var pos71 = cc.v2(0, 0); + var pos72 = cc.v2(-1, 0); + var pos73 = cc.v2(-1, 1); + this.allBlocks = [pos71, pos72, pos73]; + break; + case 21: + var pos74 = cc.v2(0, 0); + var pos75 = cc.v2(0, 1); + var pos76 = cc.v2(1, 1); + this.allBlocks = [pos74, pos75, pos76]; + break; + case 22: + var pos77 = cc.v2(0, 0); + var pos78 = cc.v2(0, 1); + var pos79 = cc.v2(-1, 1); + this.allBlocks = [pos77, pos78, pos79]; + break; + } + }; + Block.prototype.setMapBlock = function () { + if (this.allBlocks.length > 0) { + for (var i = 0; i < this.allBlocks.length; i++) { + var pos = this.allBlocks[i]; + var x = this.posX + pos.x; + var y = this.posY + pos.y; + Map_1.default._instance.mapBlocksWall[x][y].getComponent("MapBlock").block_Id = this.node.uuid; + } + } + }; + Block.prototype.removeMapBlock = function () { + if (this.posX == 0 && this.posY == 0) { + return; + } + if (this.allBlocks) { + if (this.allBlocks.length > 0) { + for (var i = 0; i < this.allBlocks.length; i++) { + if (this.allBlocks[i]) { + var pos = this.allBlocks[i]; + var x = this.posX + pos.x; + var y = this.posY + pos.y; + if (Map_1.default._instance.mapBlocksWall[x][y]) { + if (Map_1.default._instance.mapBlocksWall[x][y].getComponent("MapBlock")) + Map_1.default._instance.mapBlocksWall[x][y].getComponent("MapBlock").block_Id = ""; + } + } + } + } + } + }; + //叠加块,位置差异,校准位置 + Block.prototype.getStackingPos = function () { + switch (this.node.name) { + case "block0": + return cc.v2(-21, 22); + case "block1": + return cc.v2(-36, 23); + case "block2": + return cc.v2(-18, 40); + case "block3": + return cc.v2(-59, 25); + case "block4": + return cc.v2(-19, 57); + case "block5": + return cc.v2(-36, 38); + case "block6": + return cc.v2(-19, 97); + case "block7": + return cc.v2(-19, 61); + case "block8": + return cc.v2(-55, 24); + case "block9": + return cc.v2(-20, 24); + case "block10": + return cc.v2(-17, 96); + case "block11": + return cc.v2(-17, 58); + case "block12": + return cc.v2(-20, 24); + case "block13": + return cc.v2(-92, 25); + case "block14": + return cc.v2(-18, 60); + case "block15": + return cc.v2(-58, 24); + case "block16": + return cc.v2(-20, 60); + case "block17": + return cc.v2(-17, 60); + case "block18": + return cc.v2(-17, 60); + case "block19": + return cc.v2(-20, 24); + case "block20": + return cc.v2(-54, 25); + case "block21": + return cc.v2(-17, 60); + case "block22": + return cc.v2(-17, 60); + } + }; + Block.prototype.update = function (dt) { + if (this.isTouch && this.touchDelta.mag() > 0) { + //this.moveLeft = this.moveRight = this.moveUp = this.moveDown = true; + var delta = this.touchDelta; + var newX = this.node.x + delta.x; + var newY = this.node.y + delta.y; + var distance = Math.sqrt(Math.pow(newX - this.node.x, 2) + Math.pow(newY - this.node.y, 2)); + var mag = Math.round(delta.mag()); + if (this.moveY === 1) { + if (this.touchPointY <= this.node.y + this.node.height / 2) { + this.moveY = 0; + } + } + else if (this.moveY === -1) { + if (this.touchPointY >= this.node.y + this.node.height / 2) { + this.moveY = 0; + } + } + if (this.moveX === 1) { + if (this.touchPointX <= this.node.x - this.node.width / 2) { + this.moveX = 0; + } + else { + } + } + else if (this.moveX === -1) { + if (this.touchPointX >= this.node.x - this.node.width / 2) { + this.moveX = 0; + } + else { + } + } + if (distance > 100) { + mag = 10; + var speedScale = 0.5; + delta.x *= speedScale; + delta.y *= speedScale; + } + else { + if (mag > 5) { + mag = Math.floor(mag / 5); + } + } + // mag = 2; + var stepx = delta.x / mag; + var stepy = delta.y / mag; + for (var index = 0; index < mag; index++) { + this.moveCorner = 0; + var tempX = this.node.x + stepx; + var tempY = this.node.y + stepy; + if (!this.checkCollision) { + if (this.type !== 8 && this.type !== 10) { + this.node.x = Math.round(tempX); + } + if (this.type !== 7 && this.type !== 10) { + this.node.y = Math.round(tempY); + } + } + else { + var isXMain = Math.abs(stepx) > Math.abs(stepy); + if (isXMain) { + if (this.node.x > tempX) { + if (this.moveLeft && this.moveX === 0 && this.type !== 8 && this.type !== 10) { + this.node.x = tempX; + } + if (this.moveX !== 0) { + this.moveX = 0; + } + } + else if (this.node.x <= tempX) { + if (this.moveRight && this.moveX === 0 && this.type !== 8 && this.type !== 10) { + this.node.x = tempX; + } + if (this.moveX !== 0) { + this.moveX = 0; + } + } + if (this.node.y > tempY) { + if (this.moveDown && this.moveY === 0 && this.type !== 7 && this.type !== 10) { + this.node.y = tempY; + } + if (this.moveY !== 0) { + this.moveY = 0; + } + } + else if (this.node.y <= tempY) { + if (this.moveUp && this.moveY === 0 && this.type !== 7 && this.type !== 10) { + this.node.y = tempY; + } + if (this.moveY !== 0) { + this.moveY = 0; + } + } + } + else { + if (this.node.y > tempY) { + if (this.moveDown && this.moveY === 0 && this.type !== 7 && this.type !== 10) { + this.node.y = tempY; + } + if (this.moveY !== 0) { + this.moveY = 0; + } + } + else if (this.node.y <= tempY) { + if (this.moveUp && this.moveY === 0 && this.type !== 7 && this.type !== 10) { + this.node.y = tempY; + } + if (this.moveY !== 0) { + this.moveY = 0; + } + } + if (this.node.x > tempX) { + if (this.moveLeft && this.moveX === 0 && this.type !== 8 && this.type !== 10) { + this.node.x = tempX; + } + if (this.moveX !== 0) { + this.moveX = 0; + } + } + else if (this.node.x <= tempX) { + if (this.moveRight && this.moveX === 0 && this.type !== 8 && this.type !== 10) { + this.node.x = tempX; + } + if (this.moveX !== 0) { + this.moveX = 0; + } + } + } + } + lq_collide_system_1.LQCollideSystem.update_logic(dt); + } + // 移动完成后重置触摸增量 + this.touchDelta = cc.v2(0, 0); + } + if (this.type == BlockType.叠加块上 && this.moveStack == true) { + if (this.stacking.x != 0 || this.stacking.y != 0) { + this.node.x = this.block_Info.node.x + this.stacking.x; + this.node.y = this.block_Info.node.y + this.stacking.y; + } + } + if (this.block_Info) { + if (this.block_Info.node != null) { + if (this.type == BlockType.粘合块) { + if (this.adhesive.x != 0 && this.adhesive.y != 0 && this.block_Info.node != null) { + this.block_Info.node.x = this.node.x - this.adhesive.x; + this.block_Info.node.y = this.node.y - this.adhesive.y; + } + if (this.isTouch == true && this.block_Info.node.getComponent("Block").isTouch == false) { + lq_collide_system_1.LQCollideSystem.update_logic(dt); + this.block_Info.node.x = this.node.x - this.adhesive.x; + this.block_Info.node.y = this.node.y - this.adhesive.y; + } + } + } + } + }; + __decorate([ + property({ + tooltip: '碰撞形状,None就是无敌,不参与碰撞', + type: cc.Enum(BlockType), + }) + ], Block.prototype, "type", void 0); + __decorate([ + property({ + tooltip: '碰撞形状,None就是无敌,不参与碰撞', + type: cc.Enum(BlockColor), + }) + ], Block.prototype, "color", void 0); + __decorate([ + property({ + tooltip: '横向长度', + type: cc.Integer, + }) + ], Block.prototype, "heng", void 0); + __decorate([ + property({ + tooltip: '竖向长度', + type: cc.Integer, + }) + ], Block.prototype, "shu", void 0); + __decorate([ + property(cc.SpriteAtlas) + ], Block.prototype, "ice_SpriteFrame", void 0); + Block = __decorate([ + ccclass + ], Block); + return Block; +}(cc.Component)); +exports.default = Block; cc._RF.pop(); } @@ -23847,13 +13704,13 @@ cc._RF.pop(); }); } })(); -//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImFzc2V0c1xcU2NyaXB0XFxscV9iYXNlXFx1dGlsXFxscV9wbGF0Zm9ybV91dGlsLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLDZDQUFpRTtBQUVqRTtJQUFBO0lBNEdBLENBQUM7SUF4R2lCLG1CQUFJLEdBQWxCO1FBQ0ksSUFBSSxPQUFPLEVBQUUsS0FBSyxXQUFXLEVBQUU7WUFDM0IsSUFBSSxDQUFDLGFBQWEsR0FBRyx5QkFBYyxDQUFDLEVBQUUsQ0FBQztTQUMxQzthQUFNLElBQUksT0FBTyxJQUFJLEtBQUssV0FBVyxFQUFFO1lBQ3BDLElBQUksQ0FBQyxhQUFhLEdBQUcseUJBQWMsQ0FBQyxLQUFLLENBQUM7U0FDN0M7YUFBTSxJQUFJLE9BQU8sRUFBRSxLQUFLLFdBQVcsRUFBRTtZQUNsQyxJQUFJLENBQUMsYUFBYSxHQUFHLHlCQUFjLENBQUMsRUFBRSxDQUFDO1lBQ3ZDLElBQU0sSUFBSSxHQUFHLEVBQUUsQ0FBQyxpQkFBaUIsRUFBRSxDQUFDO1lBQ3BDLFFBQVEsSUFBSSxDQUFDLE9BQU8sRUFBRTtnQkFDbEIsS0FBSyxTQUFTO29CQUNWLElBQUksQ0FBQyxlQUFlLEdBQUcsMEJBQWUsQ0FBQyxFQUFFLENBQUM7b0JBQzFDLE1BQU07Z0JBQ1YsS0FBSyxtQkFBbUI7b0JBQ3BCLElBQUksQ0FBQyxlQUFlLEdBQUcsMEJBQWUsQ0FBQyxPQUFPLENBQUM7b0JBQy9DLE1BQU07Z0JBQ1YsS0FBSyxRQUFRO29CQUNULElBQUksQ0FBQyxlQUFlLEdBQUcsMEJBQWUsQ0FBQyxNQUFNLENBQUM7b0JBQzlDLE1BQU07Z0JBQ1YsS0FBSyxhQUFhO29CQUNkLElBQUksQ0FBQyxlQUFlLEdBQUcsMEJBQWUsQ0FBQyxXQUFXLENBQUM7b0JBQ25ELE1BQU07Z0JBQ1YsS0FBSyxLQUFLO29CQUNOLElBQUksQ0FBQyxlQUFlLEdBQUcsMEJBQWUsQ0FBQyxHQUFHLENBQUM7b0JBQzNDLE1BQU07Z0JBQ1YsS0FBSyxV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dUJBQVEsR0FBdEI7UUFDSSxPQUFPLElBQUksQ0FBQyxhQUFhLEtBQUsseUJBQWMsQ0FBQyxLQUFLLENBQUM7SUFDdkQsQ0FBQztJQUVhLDBCQUFXLEdBQXpCO1FBQ0ksT0FBTyxJQUFJLENBQUMsYUFBYSxLQUFLLHlCQUFjLENBQUMsUUFBUSxDQUFDO0lBQzFELENBQUM7SUFDTCxxQkFBQztBQUFELENBNUdBLEFBNEdDLElBQUE7QUE1R1ksd0NBQWM7QUE4RzNCLGNBQWMsQ0FBQyxJQUFJLEVBQUUsQ0FBQztBQUN0QixJQUFJLGNBQWMsQ0FBQyxLQUFLLEVBQUUsRUFBRTtJQUN4QixtRUFBbUU7Q0FDdEU7S0FBTTtJQUNILGlFQUFpRTtDQUNwRSIsImZpbGUiOiIiLCJzb3VyY2VSb290IjoiLyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7TFFCeXRlRGFuY2VUeXBlLCBMUVBsYXRmb3JtVHlwZX0gZnJvbSBcIi4uL2RhdGEvbHFfY29uc3RcIjtcclxuXHJcbmV4cG9ydCBjbGFzcyBMUVBsYXRmb3JtVXRpbCB7XHJcbiAgICBwcml2YXRlIHN0YXRpYyBwbGF0Zm9ybV90eXBlOiBMUVBsYXRmb3JtVHlwZTtcclxuICAgIHByaXZhdGUgc3RhdGljIGJ5dGVfZGFuY2VfdHlwZTogTFFCeXRlRGFuY2VUeXBlO1xyXG5cclxuICAgIHB1YmxpYyBzdGF0aWMgaW5pdCgpIHtcclxuICAgICAgICBpZiAodHlwZW9mIHFxICE9PSAndW5kZWZpbmVkJykge1xyXG4gICAgICAgICAgICB0aGlzLnBsYXRmb3JtX3R5cGUgPSBMUVBsYXRmb3JtVHlwZS5xcTtcclxuICAgICAgICB9IGVsc2UgaWYgKHR5cGVvZiBzd2FuICE9PSAndW5kZWZpbmVkJykge1xyXG4gICAgICAgICAgICB0aGlzLnBsYXRmb3JtX3R5cGUgPSBMUVBsYXRmb3JtVHlwZS5iYWlkdTtcclxuICAgICAgICB9IGVsc2UgaWYgKHR5cGVvZiB0dCAhPT0gJ3VuZGVmaW5lZCcpIHtcclxuICAgICAgICAgICAgdGhpcy5wbGF0Zm9ybV90eXBlID0gTFFQbGF0Zm9ybVR5cGUudHQ7XHJcbiAgICAgICAgICAgIGNvbnN0IGluZm8gPSB0dC5nZXRTeXN0ZW1JbmZvU3luYygpO1xyXG4gICAgICAgICAgICBzd2l0Y2ggKGluZm8uYXBwTmFtZSkge1xyXG4gICAgICAgICAgICAgICAgY2FzZSAnVG91dGlhbyc6XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5ieXRlX2RhbmNlX3R5cGUgPSBMUUJ5dGVEYW5jZVR5cGUudHQ7XHJcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgICAgICBjYXNlICduZXdzX2FydGljbGVfbGl0ZSc6XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5ieXRlX2RhbmNlX3R5cGUgPSBMUUJ5dGVEYW5jZVR5cGUudHRfbGl0ZTtcclxuICAgICAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgICAgIGNhc2UgJ0RvdXlpbic6XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5ieXRlX2RhbmNlX3R5cGUgPSBMUUJ5dGVEYW5jZVR5cGUuZG91eWluO1xyXG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICAgICAgY2FzZSAnZG91eWluX2xpdGUnOlxyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuYnl0ZV9kYW5jZV90eXBlID0gTFFCeXRlRGFuY2VUeXBlLmRvdXlpbl9saXRlO1xyXG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICAgICAgY2FzZSAnUFBYJzpcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLmJ5dGVfZGFuY2VfdHlwZSA9IExRQnl0ZURhbmNlVHlwZS5wcHg7XHJcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgICAgICBjYXNlICdkZXZ0b29scyc6XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5ieXRlX2RhbmNlX3R5cGUgPSBMUUJ5dGVEYW5jZVR5cGUuZGV2dG9vbHM7XHJcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9IGVsc2UgaWYgKHR5cGVvZiBxZyAhPT0gJ3VuZGVmaW5lZCcpIHtcclxuICAgICAgICAgICAgaWYgKCEhcWcuZ2V0QmF0dGxlKSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLnBsYXRmb3JtX3R5cGUgPSBMUVBsYXRmb3JtVHlwZS5vcHBvO1xyXG4gICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5wbGF0Zm9ybV90eXBlID0gTFFQbGF0Zm9ybVR5cGUudml2bztcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH0gZWxzZSBpZiAodHlwZW9mIHd4ICE9PSAndW5kZWZpbmVkJykge1xyXG4gICAgICAgICAgICB0aGlzLnBsYXRmb3JtX3R5cGUgPSBMUVBsYXRmb3JtVHlwZS53eDtcclxuICAgICAgICB9IGVsc2UgaWYgKHR5cGVvZiBqc2IgIT09ICd1bmRlZmluZWQnKSB7XHJcbiAgICAgICAgICAgIGlmIChjYy5zeXMub3MgPT09IGNjLnN5cy5PU19BTkRST0lEKSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLnBsYXRmb3JtX3R5cGUgPSBMUVBsYXRmb3JtVHlwZS5hbmRyb2lkO1xyXG4gICAgICAgICAgICB9IGVsc2UgaWYgKGNjLnN5cy5vcyA9PT0gY2Muc3lzLk9TX0lPUykge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5wbGF0Zm9ybV90eXBlID0gTFFQbGF0Zm9ybVR5cGUuaW9zO1xyXG4gICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5wbGF0Zm9ybV90eXBlID0gTFFQbGF0Zm9ybVR5cGUudW5rbm93bjtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH0gZWxzZSBpZiAoY2Muc3lzLmlzQnJvd3Nlcikge1xyXG4gICAgICAgICAgICB0aGlzLnBsYXRmb3JtX3R5cGUgPSBMUVBsYXRmb3JtVHlwZS5icm93c2VyO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgc3RhdGljIGdldF9wbGF0Zm9ybSgpOiBMUVBsYXRmb3JtVHlwZSB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMucGxhdGZvcm1fdHlwZTtcclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgc3RhdGljIGdldF9ieXRlX2RhbmNlKCk6IExRQnl0ZURhbmNlVHlwZSB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuYnl0ZV9kYW5jZV90eXBlO1xyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyBzdGF0aWMgaXNfd3goKSB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMucGxhdGZvcm1fdHlwZSA9PT0gTFFQbGF0Zm9ybVR5cGUud3g7XHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIHN0YXRpYyBpc190dCgpIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5wbGF0Zm9ybV90eXBlID09PSBMUVBsYXRmb3JtVHlwZS50dDtcclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgc3RhdGljIGlzX29wcG8oKSB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMucGxhdGZvcm1fdHlwZSA9PT0gTFFQbGF0Zm9ybVR5cGUub3BwbztcclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgc3RhdGljIGlzX3Zpdm8oKSB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMucGxhdGZvcm1fdHlwZSA9PT0gTFFQbGF0Zm9ybVR5cGUudml2bztcclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgc3RhdGljIGlzX292KCkge1xyXG4gICAgICAgIHJldHVybiB0aGlzLnBsYXRmb3JtX3R5cGUgPT09IExRUGxhdGZvcm1UeXBlLm9wcG8gfHwgdGhpcy5wbGF0Zm9ybV90eXBlID09PSBMUVBsYXRmb3JtVHlwZS52aXZvO1xyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyBzdGF0aWMgaXNfYnJvd3NlcigpIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5wbGF0Zm9ybV90eXBlID09PSBMUVBsYXRmb3JtVHlwZS5icm93c2VyO1xyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyBzdGF0aWMgaXNfYW5kcm9pZCgpIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5wbGF0Zm9ybV90eXBlID09PSBMUVBsYXRmb3JtVHlwZS5hbmRyb2lkO1xyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyBzdGF0aWMgaXNfaW9zKCkge1xyXG4gICAgICAgIHJldHVybiB0aGlzLnBsYXRmb3JtX3R5cGUgPT09IExRUGxhdGZvcm1UeXBlLmlvcztcclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgc3RhdGljIGlzX25hdGl2ZSgpIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5wbGF0Zm9ybV90eXBlID09PSBMUVBsYXRmb3JtVHlwZS5hbmRyb2lkIHx8IHRoaXMucGxhdGZvcm1fdHlwZSA9PT0gTFFQbGF0Zm9ybVR5cGUuaW9zO1xyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyBzdGF0aWMgaXNfcXEoKSB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMucGxhdGZvcm1fdHlwZSA9PT0gTFFQbGF0Zm9ybVR5cGUucXE7XHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIHN0YXRpYyBpc19iYWlkdSgpIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5wbGF0Zm9ybV90eXBlID09PSBMUVBsYXRmb3JtVHlwZS5iYWlkdTtcclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgc3RhdGljIGlzX2t3YWlnYW1lKCkge1xyXG4gICAgICAgIHJldHVybiB0aGlzLnBsYXRmb3JtX3R5cGUgPT09IExRUGxhdGZvcm1UeXBlLmt3YWlnYW1lO1xyXG4gICAgfVxyXG59XHJcblxyXG5MUVBsYXRmb3JtVXRpbC5pbml0KCk7XHJcbmlmIChMUVBsYXRmb3JtVXRpbC5pc190dCgpKSB7XHJcbiAgICAvLyBjb25zb2xlLmxvZygnLS0tLS0tLS0t5b2T5YmN5bmz5Y+wOicgKyBMUVBsYXRmb3JtVXRpbC5nZXRfYnl0ZV9kYW5jZSgpKTtcclxufSBlbHNlIHtcclxuICAgIC8vIGNvbnNvbGUubG9nKCctLS0tLS0tLS3lvZPliY3lubPlj7A6JyArIExRUGxhdGZvcm1VdGlsLmdldF9wbGF0Zm9ybSgpKTtcclxufVxyXG4iXX0= +//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImFzc2V0c1xcU2NyaXB0XFxCbG9jay50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQ0EsMkVBQXdFO0FBQ3hFLDZCQUFnQztBQUUxQixJQUFBLEtBQXNCLEVBQUUsQ0FBQyxVQUFVLEVBQWxDLE9BQU8sYUFBQSxFQUFFLFFBQVEsY0FBaUIsQ0FBQztBQUN6QyxJQUFZLFNBdUJaO0FBdkJBLFdBQVksU0FBUztJQUNsQixTQUFTO0lBQ1QscUVBQVMsQ0FBQTtJQUNULFNBQVM7SUFDVCxpRkFBVSxDQUFBO0lBQ1YsT0FBTztJQUNQLHFFQUFTLENBQUE7SUFDVCxPQUFPO0lBQ1AscUVBQVMsQ0FBQTtJQUNULFNBQVM7SUFDVCxxRUFBUyxDQUFBO0lBQ1QsT0FBTztJQUNQLHFFQUFTLENBQUE7SUFDVCxPQUFPO0lBQ1AscUVBQVMsQ0FBQTtJQUNULE9BQU87SUFDUCxxRUFBUyxDQUFBO0lBQ1QsT0FBTztJQUNQLHFFQUFTLENBQUE7SUFDVCxPQUFPO0lBQ1AscUVBQVMsQ0FBQTtJQUNULE9BQU87SUFDUCxrRkFBVyxDQUFBO0FBQ2YsQ0FBQyxFQXZCWSxTQUFTLEdBQVQsaUJBQVMsS0FBVCxpQkFBUyxRQXVCckI7QUFFRCxJQUFZLFVBc0JYO0FBdEJELFdBQVksVUFBVTtJQUVsQixTQUFTO0lBQ1QsMkRBQVEsQ0FBQTtJQUNSLE9BQU87SUFDUCwyREFBUSxDQUFBO0lBQ1IsT0FBTztJQUNQLDJEQUFRLENBQUE7SUFDUixTQUFTO0lBQ1QsMkRBQVEsQ0FBQTtJQUNSLE9BQU87SUFDUCwyREFBUSxDQUFBO0lBQ1IsT0FBTztJQUNQLHVFQUFTLENBQUE7SUFDVCxPQUFPO0lBQ1AsMkRBQVEsQ0FBQTtJQUNSLE9BQU87SUFDUCwyREFBUSxDQUFBO0lBQ1IsT0FBTztJQUNQLDJEQUFRLENBQUE7SUFDUixPQUFPO0lBQ1AsMkRBQVEsQ0FBQTtBQUNaLENBQUMsRUF0QlcsVUFBVSxHQUFWLGtCQUFV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b0IsQ0FBQyxVQUFVLENBQUMsQ0FBQztZQUNoRSxJQUFJLENBQUMsV0FBVyxHQUFHLEtBQUssQ0FBQyxDQUFDLENBQUM7WUFDM0IsSUFBSSxDQUFDLFdBQVcsR0FBRyxLQUFLLENBQUMsQ0FBQyxDQUFDO1lBQzNCLEtBQUssQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDLFdBQVcsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUMsaUJBQWlCLENBQUMsQ0FBQyxDQUFDO1lBQ3BFLEtBQUssQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDLFdBQVcsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsR0FBSSxJQUFJLENBQUMsaUJBQWlCLENBQUMsQ0FBQyxDQUFDO1lBRXJFLFNBQVM7WUFDVCxJQUFJLENBQUMsV0FBVyxHQUFHLEtBQUssQ0FBQyxDQUFDLENBQUM7WUFDM0IsSUFBSSxDQUFDLFdBQVcsR0FBRyxLQUFLLENBQUMsQ0FBQyxDQUFDO1lBQzNCLEtBQUssQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDLFdBQVcsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUMsaUJBQWlCLENBQUMsQ0FBQyxDQUFDO1lBQ3BFLEtBQUssQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDLFdBQVcsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsR0FBSSxJQUFJLENBQUMsaUJBQWlCLENBQUMsQ0FBQyxDQUFDO1lBRXJFLFNBQVM7WUFDVCxLQUFLLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLENBQUMsUUFBUSxFQUFFLElBQUksQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLFFBQVEsRUFBRSxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUNyRSxLQUFLLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLENBQUMsUUFBUSxFQUFFLElBQUksQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFD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QUFDO2dCQUNGLElBQUksR0FBRyxHQUFHLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxDQUFDO2dCQUNyQixJQUFJLENBQUMsU0FBUyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUM7Z0JBQ3ZCLE1BQU07WUFDVixLQUFLLENBQUM7Z0JBQ0YsSUFBSSxJQUFJLEdBQUcsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLENBQUM7Z0JBQ3RCLElBQUksSUFBSSxHQUFHLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLENBQUM7Z0JBQ3ZCLElBQUksQ0FBQyxTQUFTLEdBQUcsQ0FBQyxJQUFJLEVBQUMsSUFBSSxDQUFDLENBQUM7Z0JBQzdCLE1BQU07WUFDVixLQUFLLENBQUM7Z0JBQ0YsSUFBSSxJQUFJLEdBQUcsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLENBQUM7Z0JBQ3RCLElBQUksSUFBSSxHQUFHLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxDQUFDO2dCQUN0QixJQUFJLENBQUMsU0FBUyxHQUFHLENBQUMsSUFBSSxFQUFDLElBQUksQ0FBQyxDQUFDO2dCQUM3QixNQUFNO1lBQ1YsS0FBSyxDQUFDO2dCQUNGLElBQUksSUFBSSxHQUFHLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxDQUFDO2dCQUN0QixJQUFJLElBQUksR0FBRyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxDQUFDO2dCQUN2QixJQUFJLElBQUksR0FBRyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxDQUFDO2dCQUN2QixJQUFJLENBQUMsU0FBUyxHQUFHLENBQUMsSUFBSSxFQUFDLElBQUksRUFBQyxJQUFJLENBQUMsQ0FBQztnQkFDbEMsTUFBTTtZQUNWLEtBQUssQ0FBQztnQkFDRixJQUFJLElBQUksR0FBRyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsQ0FBQztnQkFDdEIsSUFBSSxJQUFJLEdBQUcsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLENBQUM7Z0JBQ3RCLElBQUksS0FBSyxHQUFHLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxDQUFDO2dCQUN2QixJQUFJLENBQUMsU0FBUyxHQUFHLENBQUMsSUFBSSxFQUFDLElBQUksRUFBQyxLQUFLLENBQUMsQ0FBQztnQkFDbkMsTUFBTTtZQUNWLEtBQUssQ0FBQztnQkFDRixJQUFJLEtBQUssR0FBRyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsQ0FBQztnQkFDdkIsSUFBSSxLQUFLLEdBQUcsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsQ0FBQztnQkFDeEIsSUFBSSxLQUFLLEdBQUcsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsQ0FBQztnQkFDeEIsSUFBSSxLQUFLLEdBQUcsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLENBQUM7Z0JBQ3ZCLElBQUksQ0FBQyxTQUFTLEdBQUcsQ0FBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLENBQUMsQ0FBQztnQkFDM0MsTUFBTTtZQUNWLEtBQUssQ0FBQztnQkFDRixJQUFJLEtBQUssR0FBRyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsQ0FBQztnQkFDdkIsSUFBSSxLQUFLLEdBQUcsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLENBQUM7Z0JBQ3ZCLElBQUksS0FBSyxHQUFHLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxDQUFDO2dCQUN2QixJQUFJLEtBQUssR0FBRyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxDQUFDO2dCQUN4QixJQUFJLENBQUMsU0FBUyxHQUFHLENBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxDQUFDLENBQUM7Z0JBQzNDLE1BQU07WUFDVixLQUFLLENBQUM7Z0JBQ0YsSUFBSSxLQUFLLEdBQUcsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLENBQUM7Z0JBQ3ZCLElBQUksS0FBSyxHQUFHLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxDQUFDO2dCQUN2QixJQUFJLEtBQUssR0FBRyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxDQUFDO2dCQUN4QixJQUFJLEtBQUssR0FBRyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxDQUFDO2dCQUN4QixJQUFJLENBQUMsU0FBUyxHQUFHLENBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxDQUFDLENBQUM7Z0JBQzNDLE1BQU07WUFDVixLQUFLLENBQUM7Z0JBQ0YsSUFBSSxLQUFLLEdBQUcsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLENBQUM7Z0JBQ3ZCLElBQUksS0FBSyxHQUFHLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLENBQUM7Z0JBQ3hCLElBQUksS0FBSyxHQUFHLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLENBQUM7Z0JBQ3hCLElBQUksS0FBSyxHQUFHLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLENBQUM7Z0JBQ3hCLElBQUksQ0FBQyxTQUFTLEdBQUcsQ0FBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLENBQUMsQ0FBQztnQkFDM0MsTUFBTTtZQUNWLEtBQUssQ0FBQztnQkFDRixJQUFJLEtBQUssR0FBRyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsQ0FBQztnQkFDdkIsSUFBSSxLQUFLLEdBQUcsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsQ0FBQztnQkFDeEIsSUFBSSxLQUFLLEdBQUcsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsQ0FBQztnQkFDeEIsSUFBSSxLQUFLLEdBQUcsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLENBQUM7Z0JBQ3ZCLElBQUksQ0FBQyxTQUFTLEdBQUcsQ0FBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLENBQUMsQ0FBQztnQkFDM0MsTUFBTTtZQUNWLEtBQUssRUFBRTtnQkFDSCxJQUFJLEtBQUssR0FBRyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsQ0FBQztnQkFDdkIsSUFBSSxLQUFLLEdBQUcsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLENBQUM7Z0JBQ3ZCLElBQUksS0FBSyxHQUFHLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxDQUFDO2dCQUN2QixJQUFJLEtBQUssR0FBRyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsQ0FBQztnQkFDdkIsSUFBSSxDQUFDLFNBQVMsR0FBRyxDQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssQ0FBQyxDQUFDO2dCQUMzQyxNQUFNO1lBQ1YsS0FBSyxFQUFFO2dCQUNILElBQUksS0FBSyxHQUFHLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxDQUFDO2dCQUN2QixJQUFJLEtBQUssR0FBRyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsQ0FBQztnQkFDdkIsSUFBSSxLQUFLLEdBQUcsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLENBQUM7Z0JBQ3ZCLElBQUksS0FBSyxHQUFHLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxDQUFDO2dCQUN2QixJQUFJLENBQUMsU0FBUyxHQUFHLENBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxDQUFDLENBQUM7Z0JBQzNDLE1BQU07WUFDVixLQUFLLEVBQUU7Z0JBQ0gsSUFBSSxLQUFLLEdBQUcsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLENBQUM7Z0JBQ3ZCLElBQUksS0FBSyxHQUFHLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxDQUFDO2dCQUN2QixJQUFJLEtBQUssR0FBRyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsQ0FBQztnQkFDdkIsSUFBSSxLQUFLLEdBQUcsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsQ0FBQztnQkFDeEIsSUFBSSxDQUFDLFNBQVMsR0FBRyxDQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssQ0FBQyxDQUFDO2dCQUMzQyxNQUFNO1lBQ1YsS0FBSyxFQUFFO2dCQUNILElBQUksS0FBSyxHQUFHLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxDQUFDO2dCQUN2QixJQUFJLEtBQUssR0FBRyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxDQUFDO2dCQUN4QixJQUFJLEtBQUssR0FBRyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxDQUFDO2dCQUN4QixJQUFJLEtBQUssR0FBRyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxDQUFDO2dCQUN4QixJQUFJLENBQUMsU0FBUyxHQUFHLENBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxDQUFDLENBQUM7Z0JBQzNDLE1BQU07WUFDVixLQUFLLEVBQUU7Z0JBQ0gsSUFBSSxLQUFLLEdBQUcsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLENBQUM7Z0JBQ3ZCLElBQUksS0FBSyxHQUFHLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxDQUFDO2dCQUN2QixJQUFJLEtBQUssR0FBRyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxDQUFDO2dCQUN4QixJQUFJLEtBQUssR0FBRyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsQ0FBQztnQkFDdkIsSUFBSSxDQUFDLFNBQVMsR0FBRyxDQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssQ0FBQyxDQUFDO2dCQUMzQyxNQUFNO1lBQ1YsS0FBSyxFQUFFO2dCQUNILElBQUksS0FBSyxHQUFHLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxDQUFDO2dCQUN2QixJQUFJLEtBQUssR0FBRyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxDQUFDO2dCQUN4QixJQUFJLEtBQUssR0FBRyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxDQUFDO2dCQUN4QixJQUFJLEtBQUssR0FBRyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxDQUFDO2dCQUN4QixJQUFJLENBQUMsU0FBUyxHQUFHLENBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxDQUFDLENBQUM7Z0JBQzNDLE1BQU07WUFDVixLQUFLLEVBQUU7Z0JBQ0gsSUFBSSxLQUFLLEdBQUcsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLENBQUM7Z0JBQ3ZCLElBQUksS0FBSyxHQUFHLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxDQUFDO2dCQUN2QixJQUFJLEtBQUssR0FBRyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsQ0FBQztnQkFDdkIsSUFBSSxLQUFLLEdBQUcsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLENBQUM7Z0JBQ3ZCLElBQUksQ0FBQyxTQUFTLEdBQUcsQ0FBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLENBQUMsQ0FBQztnQkFDM0MsTUFBTTtZQUNWLEtBQUssRUFBRTtnQkFDSCxJQUFJLEtBQUssR0FBRyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsQ0FBQztnQkFDdkIsSUFBSSxLQUFLLEdBQUcsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLENBQUM7Z0JBQ3ZCLElBQUksS0FBSyxHQUFHLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxDQUFDO2dCQUN2QixJQUFJLEtBQUssR0FBRyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxDQUFDO2dCQUN4QixJQUFJLENBQUMsU0FBUyxHQUFHLENBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxDQUFDLENBQUM7Z0JBQzNDLE1BQU07WUFDVixLQUFLLEVBQUU7Z0JBQ0gsSUFBSSxLQUFLLEdBQUcsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLENBQUM7Z0JBQ3ZCLElBQUksS0FBSyxHQUFHLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxDQUFDO2dCQUN2QixJQUFJLEtBQUssR0FBRyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsQ0FBQztn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QUssU0FBUztnQkFDVixPQUFPLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUMsRUFBRSxDQUFDLENBQUM7WUFDekIsS0FBSyxTQUFTO2dCQUNWLE9BQU8sRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBQyxFQUFFLENBQUMsQ0FBQztZQUN6QixLQUFLLFNBQVM7Z0JBQ1YsT0FBTyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFDLEVBQUUsQ0FBQyxDQUFDO1lBQ3pCLEtBQUssU0FBUztnQkFDVixPQUFPLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUMsRUFBRSxDQUFDLENBQUM7WUFDekIsS0FBSyxTQUFTO2dCQUNWLE9BQU8sRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBQyxFQUFFLENBQUMsQ0FBQztZQUN6QixLQUFLLFNBQVM7Z0JBQ1YsT0FBTyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFDLEVBQUUsQ0FBQyxDQUFDO1lBQ3pCLEtBQUssU0FBUztnQkFDVixPQUFPLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUMsRUFBRSxDQUFDLENBQUM7WUFDekIsS0FBSyxTQUFTO2dCQUNWLE9BQU8sRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBQyxFQUFFLENBQUMsQ0FBQztZQUN6QixLQUFLLFNBQVM7Z0JBQ1YsT0FBTyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFDLEVBQUUsQ0FBQyxDQUFDO1lBQ3pCLEtBQUssU0FBUztnQkFDVixPQUFPLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUMsRUFBRSxDQUFDLENBQUM7WUFDekIsS0FBSyxTQUFTO2dCQUNWLE9BQU8sRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBQyxFQUFFLENBQUMsQ0FBQztZQUN6QixLQUFLLFNBQVM7Z0JBQ1YsT0FBTyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFD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LElBQUksQ0FBQyxJQUFJLEtBQUssRUFBRSxFQUFFO2dDQUMxRSxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsR0FBRyxLQUFLLENBQUM7NkJBQ3ZCOzRCQUNELElBQUcsSUFBSSxDQUFDLEtBQUssS0FBSyxDQUFDLEVBQUM7Z0NBQ2hCLElBQUksQ0FBQyxLQUFLLEdBQUcsQ0FBQyxDQUFDOzZCQUNsQjt5QkFDSjs2QkFBTSxJQUFJLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxJQUFJLEtBQUssRUFBRTs0QkFDN0IsSUFBSSxJQUFJLENBQUMsU0FBUyxJQUFJLElBQUksQ0FBQyxLQUFLLEtBQUssQ0FBQyxJQUFJLElBQUksQ0FBQyxJQUFJLEtBQUssQ0FBQyxJQUFJLElBQUksQ0FBQyxJQUFJLEtBQUssRUFBRSxFQUFFO2dDQUMzRSxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsR0FBRyxLQUFLLENBQUM7NkJBQ3ZCOzRCQUNELElBQUcsSUFBSSxDQUFDLEtBQUssS0FBSyxDQUFDLEVBQUM7Z0NBQ2hCLElBQUksQ0FBQyxLQUFLLEdBQUcsQ0FBQyxDQUFDOzZCQUNsQjt5QkFDSjt3QkFFRCxJQUFJLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxHQUFHLEtBQUssRUFBRTs0QkFDckIsSUFBSSxJQUFJLENBQUMsUUFBUSxJQUFJLElBQUksQ0FBQyxLQUFLLEtBQUssQ0FBQyxJQUFJLElBQUksQ0FBQyxJQUFJLEtBQUssQ0FBQyxJQUFJLElBQUksQ0FBQyxJQUFJLEtBQUssRUFBRSxFQUFFO2dDQUMxRSxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsR0FBRyxLQUFLLENBQUM7NkJBQ3ZCOzRCQUNELElBQUcsSUFBSSxDQUFDLEtBQUssS0FBSyxDQUFDLEVBQUM7Z0NBQ2hCLElBQUksQ0FBQyxLQUFLLEdBQUcsQ0FBQyxDQUFDOzZCQUNsQjt5QkFDSjs2QkFBTSxJQUFJLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxJQUFJLEtBQUssRUFBRTs0QkFDN0IsSUFBSSxJQUFJLENBQUMsTUFBTSxJQUFJLElBQUksQ0FBQyxLQUFLLEtBQUssQ0FBQyxJQUFJLElBQUksQ0FBQyxJQUFJLEtBQUssQ0FBQyxJQUFJLElBQUksQ0FBQyxJQUFJLEtBQUssRUFBRSxFQUFFO2dDQUN4RSxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsR0FBRyxLQUFLLENBQUM7NkJBQ3ZCOzRCQUNELElBQUcsSUFBSSxDQUFDLEtBQUssS0FBSyxDQUFDLEVBQUM7Z0NBQ2hCLElBQUksQ0FBQyxLQUFLLEdBQUcsQ0FBQyxDQUFDOzZCQUNsQjt5QkFDSjtxQkFDSjt5QkFBTTt3QkFDSCxJQUFJLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxHQUFHLEtBQUssRUFBRTs0QkFDckIsSUFBSSxJQUFJLENBQUMsUUFBUSxJQUFJLElBQUksQ0FBQyxLQUFLLEtBQUssQ0FBQyxJQUFJLElBQUksQ0FBQyxJQUFJLEtBQUssQ0FBQyxJQUFJLElBQUksQ0FBQyxJQUFJLEtBQUssRUFBRSxFQUFFO2dDQUMxRSxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsR0FBRyxLQUFLLENBQUM7NkJBQ3ZCOzRCQUNELElBQUcsSUFBSSxDQUFDLEtBQUssS0FBSyxDQUFDLEVBQUM7Z0NBQ2hCLElBQUksQ0FBQyxLQUFLLEdBQUcsQ0FBQyxDQUFDOzZCQUNsQjt5QkFDSjs2QkFBTSxJQUFJLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxJQUFJLEtBQUssRUFBRTs0QkFDN0IsSUFBSSxJQUFJLENBQUMsTUFBTSxJQUFJLElBQUksQ0FBQyxLQUFLLEtBQUssQ0FBQyxJQUFJLElBQUksQ0FBQyxJQUFJLEtBQUssQ0FBQyxJQUFJLElBQUksQ0FBQyxJQUFJLEtBQUssRUFBRSxFQUFFO2dDQUN4RSxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsR0FBRyxLQUFLLENBQUM7NkJBQ3ZCOzRCQUNELElBQUcsSUFBSSxDQUFDLEtBQUssS0FBSyxDQUFDLEVBQUM7Z0NBQ2hCLElBQUksQ0FBQyxLQUFLLEdBQUcsQ0FBQyxDQUFDOzZCQUNsQjt5QkFDSjt3QkFFRCxJQUFJLElBQUksQ0FBQyxJ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d0JBQ2pDLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQzt3QkFDdkQsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDO3FCQUMxRDtpQkFDSjthQUNSO1NBQ0o7SUFFTCxDQUFDO0lBcHBDRDtRQUpDLFFBQVEsQ0FBQztZQUNOLE9BQU8sRUFBRSxxQkFBcUI7WUFDOUIsSUFBSSxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDO1NBQzNCLENBQUM7dUNBQzhCO0lBTWhDO1FBSkMsUUFBUSxDQUFDO1lBQ04sT0FBTyxFQUFFLHFCQUFxQjtZQUM5QixJQUFJLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUM7U0FDNUIsQ0FBQzt3Q0FDZ0M7SUFNbEM7UUFKQyxRQUFRLENBQUM7WUFDTixPQUFPLEVBQUUsTUFBTTtZQUNmLElBQUksRUFBRSxFQUFFLENBQUMsT0FBTztTQUNuQixDQUFDO3VDQUNlO0lBTWpCO1FBSkMsUUFBUSxDQUFDO1lBQ04sT0FBTyxFQUFFLE1BQU07WUFDZixJQUFJLEVBQUUsRUFBRSxDQUFDLE9BQU87U0FDbkIsQ0FBQztzQ0FDYztJQUdoQjtRQURDLFFBQVEsQ0FBQyxFQUFFLENBQUMsV0FBVyxDQUFDO2tEQUNjO0lBeEN0QixLQUFLO1FBRHpCLE9BQU87T0FDYSxLQUFLLENBd3FDekI7SUFBRCxZQUFDO0NBeHFDRCxBQXdxQ0MsQ0F4cUNrQyxFQUFFLENBQUMsU0FBUyxHQXdxQzlDO2tCQXhxQ29CLEtBQUsiLCJmaWxlIjoiIiwic291cmNlUm9vdCI6Ii8iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgQ29sbGlzaW9uRGV0ZWN0aW9uIGZyb20gXCIuL0NvbGxpc2lvbkRldGVjdGlvblwiO1xyXG5pbXBvcnQgeyBMUUNvbGxpZGVTeXN0ZW0gfSBmcm9tIFwiLi9scV9jb2xsaWRlX3N5c3RlbS9scV9jb2xsaWRlX3N5c3RlbVwiO1xyXG5pbXBvcnQgTWFwQ29ucm9sZXIgZnJvbSBcIi4vTWFwXCI7XHJcblxyXG5jb25zdCB7Y2NjbGFzcywgcHJvcGVydHl9ID0gY2MuX2RlY29yYXRvcjtcclxuIGV4cG9ydCBlbnVtIEJsb2NrVHlwZXtcclxuICAgIC8q5pmu6YCa5Zyw5Z2XICovXHJcbiAgICBcIuaZrumAmuWdl1wiID0gMCwgIFxyXG4gICAgLyrotbfngrnlnLDlnZcgKi9cclxuICAgIFwi5Y+g5Yqg5Z2X5LiLXCIgPSAxLCAgXHJcbiAgICAvKua5v+WcsCAqL1xyXG4gICAgXCLpkqXljJnlnZdcIiA9IDIsICBcclxuICAgIC8q5bGx5bOwICovXHJcbiAgICBcIuS4iumUgeWdl1wiID0gMywgIFxyXG4gICAgLyrnu4jngrnlnLDlnZcgKi9cclxuICAgIFwi5Ya757uT5Z2XXCIgPSA0LCAgXHJcbiAgICAvKuaBr+WjpCAqL1xyXG4gICAgXCLmmJ/mmJ/lnZdcIiA9IDUsICAgXHJcbiAgICAvKuWKoOWbuiAqL1xyXG4gICAgXCLngrjlvLnlnZdcIiA9IDYsICBcclxuICAgIC8q5Yqg5Zu6ICovXHJcbiAgICBcIuawtOW5s+Wdl1wiID0gNywgIFxyXG4gICAgLyrliqDlm7ogKi9cclxuICAgIFwi5Z6C55u05Z2XXCIgPSA4LCAgXHJcbiAgICAvKuWKoOWbuiAqL1xyXG4gICAgXCLnspjlkIjlnZdcIiA9IDksICBcclxuICAgIC8q5Yqg5Zu6ICovXHJcbiAgICBcIuWPoOWKoOWdl+S4ilwiID0gMTAsICBcclxufVxyXG5cclxuZXhwb3J0IGVudW0gQmxvY2tDb2xvcntcclxuXHJcbiAgICAvKui1t+eCueWcsOWdlyAqL1xyXG4gICAgXCLntKvoibJcIiA9IDAsICBcclxuICAgIC8q5rm/5ZywICovXHJcbiAgICBcIum7hOiJslwiID0gMSwgIFxyXG4gICAgLyrlsbHls7AgKi9cclxuICAgIFwi57u/6ImyXCIgPSAyLCAgXHJcbiAgICAvKue7iOeCueWcsOWdlyAqL1xyXG4gICAgXCLok53oibJcIiA9IDMsICBcclxuICAgIC8q5oGv5aOkICovXHJcbiAgICBcIueyieiJslwiID0gNCwgIFxyXG4gICAgLyrliqDlm7ogKi9cclxuICAgIFwi5qmY6buE6ImyXCIgPSA1LCAgXHJcbiAgICAvKuWKoOWbuiAqL1xyXG4gICAgXCLpnZLoibJcIiA9IDYsICBcclxuICAgIC8q5Yqg5Zu6ICovXHJcbiAgICBcIueZveiJslwiID0gNywgIFxyXG4gICAgLyrliqDlm7ogKi9cclxuICAgIFwi57qi6ImyXCIgPSA4LCAgXHJcbiAgICAvKuWKoOWbuiAqL1xyXG4gICAgXCLngbDoibJcIiA9IDksXHJcbn1cclxuXHJcbmV4cG9ydCBlbnVtIFBhdGhUeXBle1xyXG4gICAgZXJyID0gXCJlcnJcIixcclxuICAgIHVwID0gXCJ1cFwiLCAgXHJcbiAgICBkb3duID0gXCJkb3duXCIsICBcclxuICAgIGxlZnQgPSBcImxlZnRcIixcclxuICAgIHJpZ2h0ID0gXCJyaWdodFwiLFxyXG4gICAgdXBfbGVmdCA9IFwidXBfbGVmdFwiLFxyXG4gICAgdXBfcmlnaHQgPSBcInVwX3JpZ2h0XCIsXHJcbiAgICBkb3duX2xlZnQgPSBcImRvd25fbGVmdFwiLFxyXG4gICAgZG93bl9yaWdodCA9IFwiZG93bl9yaWdodFwiLFxyXG4gICAgbGVmdF91cCA9IFwibGVmdF91cFwiLFxyXG4gICAgbGVmdF9kb3duID0gXCJsZWZ0X2Rvd25cIixcclxuICAgIHJpZ2h0X3VwID0gXCJyaWdodF91cFwiLFxyXG4gICAgcmlnaHRfZG93biA9IFwicmlnaHRfZG93blwiLFxyXG59XHJcbkBjY2NsYXNzXHJcbmV4cG9ydCBkZWZhdWx0IGNsYXNzIEJsb2NrIGV4dGVuZHMgY2MuQ29tcG9uZW50IHtcclxuXHJcbiAgICAvLyDmlrDlop7nvJPlrZjlj5jph49cclxuICAgIHByaXZhdGUgbW92ZUludGVydmFsID0gMDsgLy8g57qmIDYwIEZQUyBcclxuICAgIHByaXZhdGUgbGFzdE1vdmVUaW1lID0gMDsgIC8vIOS4iuS4i+S4pOS4quWAvOadpeiwg+iKgui3n+aJi++8jOS4gOS4quaYr+aXtumXtOi9tO+8jOS4gOS4quaYr+i3neemu+i9tFxyXG4gICAgcHJpdmF0ZSBtYXhTcGVlZCA9IDMwMDsgICAgLy8gIOacgOWkp+enu+WKqOi3neemu1xyXG5cclxuICAgIC8vIHByaXZhdGUgb3RoZXJDb2xsaWRlcjogY2MuQ29sbGlkZXIgPSBudWxsO1xyXG4gICAgLy8gQHByb3BlcnR5KHtcclxuICAgIC8vICAgICB0b29sdGlwOiAn56Kw5pKe5b2i54q277yMTm9uZeWwseaYr+aXoOaVjO+8jOS4jeWPguS4jueisOaSnicsXHJcbiAgICAvLyAgICAgdHlwZTogY2MuRW51bShCbG9ja1R5cGUpLFxyXG4gICAgLy8gICAgIC8vIGRlZmF1bHQ6IEJsb2NrVHlwZS5Ob21hbCxcclxuICAgIC8vICAgICBkaXNwbGF5TmFtZTogJ+eisOaSnuW9oueKtidcclxuICAgIC8vIH0pXHJcbiAgICBcclxuICAgIEBwcm9wZXJ0eSh7XHJcbiAgICAgICAgdG9vbHRpcDogJ+eisOaSnuW9oueKtu+8jE5vbmXlsLHmmK/ml6DmlYzvvIzkuI3lj4LkuI7norDmkp4nLFxyXG4gICAgICAgIHR5cGU6IGNjLkVudW0oQmxvY2tUeXBlKSxcclxuICAgIH0pXHJcbiAgICB0eXBlOiBCbG9ja1R5cGUgPSBCbG9ja1R5cGUu5pmu6YCa5Z2XO1xyXG5cclxuICAgIEBwcm9wZXJ0eSh7XHJcbiAgICAgICAgdG9vbHRpcDogJ+eisOaSnuW9oueKtu+8jE5vbmXlsLHmmK/ml6DmlYzvvIzkuI3lj4LkuI7norDmkp4nLFxyXG4gICAgICAgIHR5cGU6IGNjLkVudW0oQmxvY2tDb2xvciksXHJcbiAgICB9KVxyXG4gICAgY29sb3I6IEJsb2NrQ29sb3IgPSBCbG9ja0NvbG9yLue0q+iJsjtcclxuXHJcbiAgICBAcHJvcGVydHkoe1xyXG4gICAgICAgIHRvb2x0aXA6ICfmqKrlkJHplb/luqYnLFxyXG4gICAgICAgIHR5cGU6IGNjLkludGVnZXIsXHJcbiAgICB9KVxyXG4gICAgaGVuZzogTnVtYmVyID0gMTtcclxuXHJcbiAgICBAcHJvcGVydHkoe1xyXG4gICAgICAgIHRvb2x0aXA6ICfnq5blkJHplb/luqYnLFxyXG4gICAgICAgIHR5cGU6IGNjLkludGVnZXIsXHJcbiAgICB9KVxyXG4gICAgc2h1OiBOdW1iZXIgPSAxO1xyXG5cclxuICAgIEBwcm9wZXJ0eShjYy5TcHJpdGVBdGxhcylcclxuICAgIGljZV9TcHJpdGVGcmFtZTogY2MuU3ByaXRlQXRsYXMgPSBudWxsO1xyXG5cclxuXHJcbiAgICAvLyBMSUZFLUNZQ0xFIENBTExCQUNLUzpcclxuICAgIC8vIEBwcm9wZXJ0eShjYy5TcHJpdGVBdGxhcylcclxuICAgIC8vIFVJOiBjYy5TcHJpdGVBdGxhcyA9IG51bGw7XHJcbiAgICBwcml2YXRlIGluaXRpYWxUb3VjaE9mZnNldDogY2MuVmVjMiA9IG51bGw7XHJcbiAgICBwcml2YXRlIG9mZnNldFRvbGVyYW5jZSA9IDEwMDsgLy8g5YGP56e75a655b+N5bqmOyBcclxuXHJcbiAgICBhbGxCbG9ja3M6YW55OyAgICAgICAvL+aJgOacieeahOaWueWdlyznlKjkuo7orqHnrpdwb3NYLHBvc1nmtojpmaRcclxuICAgIHRvdWNoUG9pbnQ6IGNjLlZlYzIgPSBudWxsOyAgICAgLy/op6bmkbjngrlcclxuICAgIGlzVG91Y2g6IGJvb2xlYW4gPSBmYWxzZTsgICAgICAgLy/mmK/lkKbop6bmkbhcclxuICAgIHBvc1g6IG51bWJlciA9IDA7ICAgICAgICAgICAgICAgLy/lnLDlm77lnZfnmoRY5Z2Q5qCHXHJcbiAgICBwb3NZOiBudW1iZXIgPSAwOyAgICAgICAgICAgICAgIC8v5Zyw5Zu+5Z2X55qEWeWdkOagh1xyXG4gICAgbW92ZUxlZnQ6IGJvb2xlYW4gPSB0cnVlOyAgICAgIC8v5piv5ZCm5Y+v5Lul5bem56e7O1xyXG4gICAgbW92ZVJpZ2h0OiBib29sZWFuID0gdHJ1ZTsgICAgIC8v5piv5ZCm5Y+v5Lul5Y+z56e7O1xyXG4gICAgbW92ZVVwOiBib29sZWFuID0gdHJ1ZTsgICAgICAgIC8v5piv5ZCm5Y+v5Lul5LiK56e7O1xyXG4gICAgbW92ZURvd246IGJvb2xlYW4gPSB0cnVlOyAgICAgIC8v5piv5ZCm5Y+v5Lul5LiL56e7O1xyXG4gICAgbW92ZUNvcm5lcjogbnVtYmVyID0gMDsgICAgICAgIC8v5piv5ZCm56Kw5pKe6KeS6JC9XHJcbiAgICBtb3ZlWTpudW1iZXIgPSAwOyAgICAgICAgICAvL+aYr+WQpuWPr+S7peS4iuS4i+enu+WKqDtcclxuICAgIG1vdmVYOm51bWJlciA9IDA7ICAgICAgICAgIC8v5piv5ZCm5Y+v5Lul5bem5Y+z56e75YqoO1xyXG4gICAgdG91Y2hQb2ludFg6IG51bWJlciA9IDA7ICAgICAgICAvL+inpuaRuOeCuVjlnZDmoIc7XHJcbiAgICB0b3VjaFBvaW50WTogbnVtYmVyID0gMDsgICAgICAgIC8v6Kem5pG454K5WeWdkOaghztcclxuICAgIGJsb2NrSWQ6IG51bWJlciA9IDA7ICAgICAgICAgICAgLy/mlrnlnZdJRDtcclxuICAgIHN0YWNraW5nOiBjYy5WZWMyOyAgICAgICAgICAgICAgLy/lj6DliqDmlrnlnZdcclxuICAgIGFkaGVzaXZlOiBjYy5WZWMyOyAgICAgICAgICAgICAgLy/nspjlkIjmlrnlnZdcclxuICAgIGxldmVsOiBudW1iZXIgPSAwOyAgICAgICAgICAgIC8v5Y+g5Yqg5pa55Z2X5bGC5pWwO1xyXG4gICAgcHo6IGJvb2xlYW4gPSBmYWxzZTtcclxuICAgIG92ZXI6IGJvb2xlYW4gPSBmYWxzZTsgICAgICAvL+aWueWdl+aYr+WQpuWkseaViOW3sua2iOWksVxyXG4gICAgY29sbGlkZXI6IGFueTtcclxuICAgIGJsb2NrX0luZm86YW55O1xyXG4gICAgX3RvdWNoTGlzdGVuZXI6IGFueTtcclxuICAgIHJlbGF0aXZlX1Bvc2l0aW9uOmNjLlZlYzI7ICAvL+eCueWHu+WSjOaWueWdl+ebuOWvueS9jee9rlxyXG4gICAgcHJpdmF0ZSBfZXZlbnRNYW5hZ2VyOiBhbnk7XHJcbiAgICBoaXQ6IGNjLk5vZGU7XHJcbiAgICBvdGhlckNvbGxpZGVyOiBhbnk7XHJcbiAgICBtb3ZlU3RhY2s6IGJvb2xlYW47XHJcbiAgICB0b3VjaERlbHRhOiBjYy5WZWMyID0gY2MudjIoMCwgMCk7IFxyXG4gICAgYWRoZXNpdmVOb2RlOiBhbnk7XHJcbiAgICBjaGVja0NvbGxpc2lvbjogYm9vbGVhbiA9IGZhbHNlO1xyXG5cclxuXHJcblxyXG4gICAgb25Mb2FkICgpIHtcclxuICAgICAgICB0aGlzLnB6ID0gZmFsc2U7XHJcbiAgICAgICAgdGhpcy5zdGFja2luZyA9IGNjLnYyKDAsMCk7XHJcbiAgICAgICAgdGhpcy5hZGhlc2l2ZSA9IGNjLnYyKDAsMCk7XHJcbiAgICAgICAgdGhpcy5hZGhlc2l2ZU5vZGUgPSBbXTtcclxuICAgICAgICB0aGlzLmNvbGxpZGVyID0gdGhpcy5ub2RlLmdldENvbXBvbmVudChjYy5Qb2x5Z29uQ29sbGlkZXIpO1xyXG4gICAgICAgIHRoaXMub3ZlciA9IGZhbHNlO1xyXG4gICAgICAgIHRoaXMuY2hlY2tDb2xsaXNpb24gPSBmYWxzZTtcclxuICAgIH1cclxuXHJcblxyXG4gICAgc3RhcnQgKCkge1xyXG5cclxuICAgIH1cclxuXHJcbiAgICBqc29uRGVlcENsb25lPFQ+KG9iajogVCk6IFQge1xyXG4gICAgICAgIHJldHVybiBKU09OLnBhcnNlKEpTT04uc3RyaW5naWZ5KG9iaikpO1xyXG4gICAgfVxyXG4gICAgLy9jcmVhdGVBZCDkuLrmmK/lkKbliJvlu7rnspjlkIjlv6vlm77niYdcclxuICAgIGluaXQoYmxvY2tfSW5mbyxwb3NYLHBvc1ksbm9kZSxjcmVhdGVBZCl7XHJcbiAgICAgICAgdGhpcy5ibG9ja19JbmZvID0gdGhpcy5qc29uRGVlcENsb25lKGJsb2NrX0luZm8pO1xyXG4gICAgICAgIGlmKG5vZGUpIHRoaXMuYmxvY2tfSW5mby5ub2RlID0gbm9kZTtcclxuICAgICAgICB0aGlzLnR5cGUgPSBibG9ja19JbmZvLnR5cGU7XHJcbiAgICAgICAgdGhpcy5jb2xvciA9IGJsb2NrX0luZm8uY29sb3I7XHJcbiAgICAgICAgdGhpcy5ibG9ja0lkID0gYmxvY2tfSW5mby5pZDtcclxuICAgICAgICAvLyBpZihwb3NYJiZwb3NZKXtcclxuICAgICAgICAvLyAgICAgdGhpcy5wb3NYID0gcG9zWDtcclxuICAgICAgICAvLyAgICAgdGhpcy5wb3NZID0gcG9zWTtcclxuICAgICAgICAvLyB9XHJcblxyXG4gICAgICAgIC8vIGNvbnNvbGUubG9nKFwi5pa55Z2X5bGC57qnXCIsdGhpcy5ub2RlLnpJbmRleCk7XHJcbiAgICAgICAgdGhpcy5pbml0Q29sb3IoKTtcclxuICAgICAgICB0aGlzLmluaXRUeXBlKCk7XHJcbiAgICAgICAgdGhpcy5pbml0QmxvY2tzKCk7XHJcblxyXG4gICAgICAgIGlmKHRoaXMudHlwZSAhPSBCbG9ja1R5cGUu5Y+g5Yqg5Z2X5LiKKXtcclxuICAgICAgICAgICAgdGhpcy5ub2RlLm9uKGNjLk5vZGUuRXZlbnRUeXBlLlRPVUNIX1NUQVJULCB0aGlzLnRvdWNoU3RhcnQsIHRoaXMpO1xyXG4gICAgICAgICAgICB0aGlzLm5vZGUub24oY2MuTm9kZS5FdmVudFR5cGUuVE9VQ0hfTU9WRSwgdGhpcy50b3VjaE1vdmUsIHRoaXMpO1xyXG4gICAgICAgICAgICB0aGlzLm5vZGUub24oY2MuTm9kZS5FdmVudFR5cGUuVE9VQ0hfQ0FOQ0VMLCB0aGlzLnRvdWNoRW5kLCB0aGlzKTtcclxuICAgICAgICAgICAgdGhpcy5ub2RlLm9uKGNjLk5vZGUuRXZlbnRUeXBlLlRPVUNIX0VORCwgdGhpcy50b3VjaEVuZCwgdGhpcyk7XHJcbiAgICAgICAgICAgIHRoaXMubm9kZVsnX3RvdWNoTGlzdGVuZXInXS5zZXRTd2FsbG93VG91Y2hlcyhmYWxzZSk7XHJcbiAgICAgICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgaWYodGhpcy50eXBlID09IEJsb2NrVHlwZS7nspjlkIjlnZcpe1xyXG4gICAgICAgICAgICAgICAgICAgICAgLy8g6K6h566X5L2N572u5YGP56e7XHJcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgcG9zT2Zmc2V0ID0gY2MudjIoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMubm9kZS54IC0gdGhpcy5ibG9ja19JbmZvLm5vZGUueCxcclxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5ub2RlLnkgLSB0aGlzLmJsb2NrX0luZm8ubm9kZS55XHJcbiAgICAgICAgICAgICAgICAgICAgKTtcclxuICAgICAgICAgICAgICAgICAgICBpZihjcmVhdGVBZCl7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmKHRoaXMubm9kZS56SW5kZXggPj0gdGhpcy5ibG9ja19JbmZvLm5vZGUuekluZGV4KVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5jcmVhdGVBZGhlc2l2ZSgpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBlbHNlICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5ibG9ja19JbmZvLm5vZGUuZ2V0Q29tcG9uZW50KFwiQmxvY2tcIikuY3JlYXRlQWRoZXNpdmUoKTtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgdGFyZ2V0TmFtZXMgPSBbJ3RvcCcsICdkb3duJywgJ2xlZnQnLCAncmlnaHQnXTtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLmJsb2NrX0luZm8ubm9kZS5jaGlsZHJlbi5mb3JFYWNoKGNoaWxkID0+IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGNoaWxkIGluc3RhbmNlb2YgY2MuTm9kZSAmJiB0YXJnZXROYW1lcy5pbmNsdWRlcyhjaGlsZC5uYW1lKSAmJiBjaGlsZC5nZXRDb21wb25lbnQoXCJscV9jb2xsaWRlXCIpLmRhdGFfc3RyaW5nICE9IFwiLTFcIikge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2xvbmVkQ2hpbGQgPSBjYy5pbnN0YW50aWF0ZShjaGlsZCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbG9uZWRDaGlsZC5nZXRDb21wb25lbnQoXCJscV9jb2xsaWRlXCIpLmRhdGFfc3RyaW5nID0gXCItMVwiO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xvbmVkQ2hpbGQucGFyZW50ID0gdGhpcy5ub2RlO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8g6I635Y+W5a2Q6IqC54K555u45a+55LqO54i26IqC54K555qE5L2N572uXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCByZWxhdGl2ZVBvcyA9IGNoaWxkLmdldFBvc2l0aW9uKCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyDosIPmlbTlrZDoioLngrnkvY3nva7ku6Xkv53or4Hnm7jlr7nkvY3nva7kuI3lj5hcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsb25lZENoaWxkLnNldFBvc2l0aW9uKFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlbGF0aXZlUG9zLnggLSBwb3NPZmZzZXQueCxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWxhdGl2ZVBvcy55IC0gcG9zT2Zmc2V0LnlcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH0gXHJcbiAgICAgICAgICAgICAgICAgICAgfSk7XHJcblxyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuYWRoZXNpdmUgPSBwb3NPZmZzZXQ7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH0sIDEwMCk7XHJcblxyXG5cclxuXHJcbiAgICAgICAgICAgIGxldCBtYXBJbmZvID0gTWFwQ29ucm9sZXIuX2luc3RhbmNlLm1hcEluZm87XHJcbiAgICAgICAgICAgIGZvcihsZXQgaT0wOyBpPG1hcEluZm8ubGVuZ3RoOyBpKyspe1xyXG4gICAgICAgICAgICAgICAgbGV0IGJsb2NrUmVjdCA9IG1hcEluZm9baV0uZ2V0Qm91bmRpbmdCb3goKTtcclxuICAgICAgICAgICAgICAgIC8vIOS9v+eUqCBjYy5JbnRlcnNlY3Rpb24ucG9pbnRJblJlY3Qg5pa55rOV5Yik5pat54K55piv5ZCm5Zyo55+p5b2i6IyD5Zu05YaFXHJcbiAgICAgICAgICAgICAgICBsZXQgcG9pbnQgPSBjYy52Mih0aGlzLm5vZGUucG9zaXRpb24ueC01LCB0aGlzLm5vZGUucG9zaXRpb24ueSsxMClcclxuICAgICAgICAgICAgICAgIGlmKGJsb2NrUmVjdC5jb250YWlucyhwb2ludCkpe1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMucG9zWCA9IG1hcEluZm9baV0uZ2V0Q29tcG9uZW50KFwiTWFwQmxvY2tcIikucG9zWDtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLnBvc1kgPSBtYXBJbmZvW2ldLmdldENvbXBvbmVudChcIk1hcEJsb2NrXCIpLnBvc1k7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5zZXRNYXBCbG9jaygpO1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMubGV2ZWwgPSA1MCArIHRoaXMucG9zWCAtIHRoaXMucG9zWSozO1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMubm9kZS56SW5kZXggPSB0aGlzLmxldmVsO1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMubm9kZS54ID0gbWFwSW5mb1tpXS54ICsgNjU7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5ub2RlLnkgPSBtYXBJbmZvW2ldLnkgLSA2MDtcclxuICAgICAgICAgICAgICAgICAgICBpPSAxMDAwMDtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLmhpdCA9IG5ldyBjYy5Ob2RlKCk7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5oaXQuYWRkQ29tcG9uZW50KGNjLlNwcml0ZSk7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5oaXQucGFyZW50ID0gdGhpcy5ub2RlO1xyXG4gICAgICAgICAgICAgICAgICAgIGxldCBuYW1lID0gXCJ4el9cIit0aGlzLmJsb2NrX0luZm8uYmxvY2s7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5oaXQuZ2V0Q29tcG9uZW50KGNjLlNwcml0ZSkuc3ByaXRlRnJhbWUgPSB0aGlzLmljZV9TcHJpdGVGcmFtZS5fc3ByaXRlRnJhbWVzW25hbWVdO1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuaGl0LnNldEFuY2hvclBvaW50KHRoaXMubm9kZS5hbmNob3JYLHRoaXMubm9kZS5hbmNob3JZKTtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLmhpdC5zZXRQb3NpdGlvbigxMywtMTEpO1xyXG4gICAgICAgICAgICAgICAgICAgIGlmKHRoaXMuaGl0LmFuY2hvclggPT0gMC41KSB0aGlzLmhpdC5zZXRQb3NpdGlvbigwLC0xMSk7XHJcbiAgICAgICAgICAgICAgICAgICAgZWxzZSBpZih0aGlzLmhpdC5hbmNob3JYID09IDAuMzMpIHRoaXMuaGl0LnNldFBvc2l0aW9uKC0xMywtMTEpO1xyXG4gICAgICAgICAgICAgICAgICAgIGVsc2UgaWYodGhpcy5oaXQuYW5jaG9yWCA9PSAwLjY2KSB0aGlzLmhpdC5zZXRQb3NpdGlvbigyLC05KTtcclxuICAgICAgICAgICAgICAgICAgICAvLyB0aGlzLmhpdC5vcGFjaXR5ID0gMDtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLmhpdC5hY3RpdmUgPSBmYWxzZTtcclxuICAgICAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuXHJcbiAgICB9XHJcblxyXG5cclxuXHJcbiAgICAvL+WIneWni+WMluaWueWdl+exu+Wei1xyXG4gICAgaW5pdFR5cGUoKXtcclxuICAgICAgICBsZXQgcG9zQ29uZmlnID0gY2MuZnguR2FtZUNvbmZpZy5QUk9QX0lORk9bdGhpcy5ibG9ja19JbmZvLmJsb2NrXTtcclxuICAgICAgICBcclxuICAgICAgICBzd2l0Y2godGhpcy50eXBlKXtcclxuICAgICAgICAgICAgY2FzZSBCbG9ja1R5cGUu54K45by55Z2XOlxyXG4gICAgICAgICAgICAgICAgbGV0IGJvb20gPSBjYy5pbnN0YW50aWF0ZShNYXBDb25yb2xlci5faW5zdGFuY2UuQmxvY2tfUHJvcFt0aGlzLnR5cGVdKTtcclxuICAgICAgICAgICAgICAgIGJvb20ucGFyZW50ID0gdGhpcy5ub2RlO1xyXG4gICAgICAgICAgICAgICAgYm9vbS5zZXRQb3NpdGlvbihwb3NDb25maWcucG9zMS54LHBvc0NvbmZpZy5wb3MxLnkpO1xyXG4gICAgICAgICAgICAgICAgaWYodGhpcy5ibG9ja19JbmZvPy5ib29tVGltZSkgXHJcbiAgICAgICAgICAgICAgICAgICAgYm9vbS5nZXRDb21wb25lbnQoXCJCb29tXCIpLmluaXQodGhpcy5ibG9ja19JbmZvLmJvb21UaW1lKTtcclxuICAgICAgICAgICAgICAgIGJyZWFrOyBcclxuICAgICAgICAgICAgY2FzZSBCbG9ja1R5cGUu5pif5pif5Z2XOlxyXG4gICAgICAgICAgICAgICAgbGV0IHN0YXIgPSBjYy5pbnN0YW50aWF0ZShNYXBDb25yb2xlci5faW5zdGFuY2UuQmxvY2tfUHJvcFt0aGlzLnR5cGVdKTtcclxuICAgICAgICAgICAgICAgIHN0YXIuYW5jaG9yWCA9IHRoaXMubm9kZS5hbmNob3JYO1xyXG4gICAgICAgICAgICAgICAgc3Rhci5hbmNob3JZID0gdGhpcy5ub2RlLmFuY2hvclk7XHJcbiAgICAgICAgICAgICAgICBzdGFyLmdldENvbXBvbmVudChjYy5TcHJpdGUpLnNwcml0ZUZyYW1lID0gc3Rhci5nZXRDb21wb25lbnQoXCJTdGFyXCIpLnN0YXJfU3ByaXRlRnJhbWUuZ2V0U3ByaXRlRnJhbWUoXCJzdGFyX1wiK3RoaXMuYmxvY2tfSW5mby5ibG9jayk7XHJcbiAgICAgICAgICAgICAgICBzdGFyLnBhcmVudCA9IHRoaXMubm9kZTtcclxuICAgICAgICAgICAgICAgIHN0YXIuc2V0UG9zaXRpb24ocG9zQ29uZmlnLnBvczQueCAtIDEwLHBvc0NvbmZpZy5wb3M0LnkpO1xyXG4gICAgICAgICAgICBjYXNlIEJsb2NrVHlwZS7pkqXljJnlnZc6XHJcbiAgICAgICAgICAgICAgICBsZXQga2V5ID0gY2MuaW5zdGFudGlhdGUoTWFwQ29ucm9sZXIuX2luc3RhbmNlLkJsb2NrX1Byb3BbdGhpcy50eXBlXSk7XHJcbiAgICAgICAgICAgICAgICBrZXkucGFyZW50ID0gdGhpcy5ub2RlO1xyXG4gICAgICAgICAgICAgICAga2V5LnNldFBvc2l0aW9uKHBvc0NvbmZpZy5wb3MxLngscG9zQ29uZmlnLnBvczEueSk7XHJcbiAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgY2FzZSBCbG9ja1R5cGUu5LiK6ZSB5Z2XOlxyXG4gICAgICAgICAgICAgICAgbGV0IGxvY2sgPSBjYy5pbnN0YW50aWF0ZShNYXBDb25yb2xlci5faW5zdGFuY2UuQmxvY2tfUHJvcFt0aGlzLnR5cGVdKTtcclxuICAgICAgICAgICAgICAgIGxvY2sucGFyZW50ID0gdGhpcy5ub2RlO1xyXG4gICAgICAgICAgICAgICAgbG9jay5zZXRQb3NpdGlvbihwb3NDb25maWcucG9zMS54LHBvc0NvbmZpZy5wb3MxLnkpO1xyXG4gICAgICAgICAgICAgICAgbG9jay5nZXRDb21wb25lbnQoXCJMb2NrXCIpLmluaXQodGhpcy5ibG9ja19JbmZvLmxvY2tUaW1lKTtcclxuICAgICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICBjYXNlIEJsb2NrVHlwZS7lhrvnu5PlnZc6XHJcbiAgICAgICAgICAgICAgICBsZXQgZnJlZXplID0gY2MuaW5zdGFudGlhdGUoTWFwQ29ucm9sZXIuX2luc3RhbmNlLkJsb2NrX1Byb3BbdGhpcy50eXBlXSk7XHJcbiAgICAgICAgICAgICAgICBmcmVlemUucGFyZW50ID0gdGhpcy5ub2RlO1xyXG4gICAgICAgICAgICAgICAgbGV0ICBuYW1lID0gXCJpY2VfXCIrdGhpcy5ibG9ja19JbmZvLmJsb2NrO1xyXG4gICAgICAgICAgICAgICAgbGV0IHNwcml0ZUZyYW1lID0gdGhpcy5pY2VfU3ByaXRlRnJhbWUuX3Nwcml0ZUZyYW1lc1tuYW1lXTtcclxuICAgICAgICAgICAgICAgIGZyZWV6ZS5nZXRDaGlsZEJ5TmFtZShcImljb25cIikuZ2V0Q29tcG9uZW50KGNjLlNwcml0ZSkuc3ByaXRlRnJhbWUgPSBzcHJpdGVGcmFtZTtcclxuICAgICAgICAgICAgICAgIGxldCBmcmVlemVYID0gcG9zQ29uZmlnLnBvczYueC0odGhpcy5ub2RlLndpZHRoKih0aGlzLm5vZGUuYW5jaG9yWC0wLjUpKTsgbGV0IGZyZWV6ZVkgPSBwb3NDb25maWcucG9zNi55ICsgdGhpcy5ub2RlLmhlaWdodC8yO1xyXG4gICAgICAgICAgICAgICAgZnJlZXplLnNldFBvc2l0aW9uKGZyZWV6ZVgsZnJlZXplWSk7XHJcbiAgICAgICAgICAgICAgICBmcmVlemUuZ2V0Q29tcG9uZW50KFwiRnJlZXplXCIpLmluaXQodGhpcy5ibG9ja19JbmZvLmZyZWV6ZVRpbWUpO1xyXG4gICAgICAgICAgICAgICAgZnJlZXplLmdldENoaWxkQnlOYW1lKFwidGltZVwiKS5zZXRQb3NpdGlvbihwb3NDb25maWcucG9zNS54LTEwLWZyZWV6ZVgscG9zQ29uZmlnLnBvczUueS0yLWZyZWV6ZVkpO1xyXG4gICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgIGNhc2UgQmxvY2tUeXBlLuawtOW5s+WdlzpcclxuICAgICAgICAgICAgICAgIGxldCBob3Jpem9udGFsID0gY2MuaW5zdGFudGlhdGUoTWFwQ29ucm9sZXIuX2luc3RhbmNlLkJsb2NrX1Byb3BbdGhpcy50eXBlXSk7XHJcbiAgICAgICAgICAgICAgICBob3Jpem9udGFsLnBhcmVudCA9IHRoaXMubm9kZTtcclxuICAgICAgICAgICAgICAgIGxldCBoZW5nID0gXCJoZW5nXCIgKyB0aGlzLmhlbmc7XHJcbiAgICAgICAgICAgICAgICBob3Jpem9udGFsLmdldENoaWxkQnlOYW1lKGhlbmcpLmFjdGl2ZSA9IHRydWU7XHJcbiAgICAgICAgICAgICAgICBob3Jpem9udGFsLnNldFBvc2l0aW9uKHBvc0NvbmZpZy5wb3MyLngtMyxwb3NDb25maWcucG9zMi55KTtcclxuICAgICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICBjYXNlIEJsb2NrVHlwZS7lnoLnm7TlnZc6XHJcbiAgICAgICAgICAgICAgICBsZXQgdmVydGljYWwgPSBjYy5pbnN0YW50aWF0ZShNYXBDb25yb2xlci5faW5zdGFuY2UuQmxvY2tfUHJvcFt0aGlzLnR5cGVdKTtcclxuICAgICAgICAgICAgICAgIHZlcnRpY2FsLnBhcmVudCA9IHRoaXMubm9kZTtcclxuICAgICAgICAgICAgICAgIGxldCBzaHUgPSBcInNodVwiICsgdGhpcy5zaHU7XHJcbiAgICAgICAgICAgICAgICB2ZXJ0aWNhbC5nZXRDaGlsZEJ5TmFtZShzaHUpLmFjdGl2ZSA9IHRydWU7XHJcbiAgICAgICAgICAgICAgICB2ZXJ0aWNhbC5zZXRQb3NpdGlvbihwb3NDb25maWcucG9zMy54LHBvc0NvbmZpZy5wb3MzLnkpO1xyXG4gICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgIGNhc2UgQmxvY2tUeXBlLuWPoOWKoOWdl+S4ijpcclxuICAgICAgICAgICAgICAgIHRoaXMubW92ZVN0YWNrID0gZmFsc2U7XHJcbiAgICAgICAgICAgICAgICB0aGlzLm5vZGUub2ZmKGNjLk5vZGUuRXZlbnRUeXBlLlRPVUNIX1NUQVJUKTtcclxuICAgICAgICAgICAgICAgIHRoaXMubm9kZS5vZmYoY2MuTm9kZS5FdmVudFR5cGUuVE9VQ0hfTU9WRSk7XHJcbiAgICAgICAgICAgICAgICB0aGlzLm5vZGUub2ZmKGNjLk5vZGUuRXZlbnRUeXBlLlRPVUNIX0NBTkNFTCk7XHJcbiAgICAgICAgICAgICAgICB0aGlzLm5vZGUub2ZmKGNjLk5vZGUuRXZlbnRUeXBlLlRPVUNIX0VORCk7XHJcbiAgICAgICAgICAgICAgICAvLyB0aGlzLnNlbGZCb3hDb2xsaWRlcnMgPSBbXTtcclxuICAgICAgICAgICAgICAgIHRoaXMubm9kZS56SW5kZXggPSAyMDE7XHJcbiAgICAgICAgICAgICAgICBsZXQgcG9zID0gdGhpcy5nZXRTdGFja2luZ1BvcygpO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5ub2RlLnNldFBvc2l0aW9uKHRoaXMubm9kZS54ICsgcG9zLngsdGhpcy5ub2RlLnkgKyBwb3MueSk7XHJcbiAgICAgICAgICAgICAgICB0aGlzLnN0YWNraW5nID0gY2MudjIodGhpcy5ub2RlLnggLSB0aGlzLmJsb2NrX0luZm8ubm9kZS54LHRoaXMubm9kZS55IC0gdGhpcy5ibG9ja19JbmZvLm5vZGUueSk7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmJsb2NrX0luZm8ubm9kZS5nZXRDb21wb25lbnQoXCJCbG9ja1wiKS5ibG9ja19JbmZvLm5vZGUgPSB0aGlzLm5vZGU7XHJcbiAgICAgICAgICAgICAgICB0aGlzLm5vZGUuc2NhbGVYICo9IDAuNztcclxuICAgICAgICAgICAgICAgIHRoaXMubm9kZS5zY2FsZVkgKj0gMC43O1xyXG4gICAgICAgICAgICAgICAgZm9yKGxldCBpPTA7IGk8dGhpcy5ub2RlLmNoaWxkcmVuLmxlbmd0aDsgaSsrKXtcclxuICAgICAgICAgICAgICAgICAgICBpZih0aGlzLm5vZGUuY2hpbGRyZW5baV0ubmFtZSA9PSBcImxlZnRcIiB8fCB0aGlzLm5vZGUuY2hpbGRyZW5baV0ubmFtZSA9PSBcInJpZ2h0XCIgfHwgdGhpcy5ub2RlLmNoaWxkcmVuW2ldLm5hbWUgPT0gXCJ0b3BcIiB8fCB0aGlzLm5vZGUuY2hpbGRyZW5baV0ubmFtZSA9PSBcImRvd25cIilcclxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5ub2RlLmNoaWxkcmVuW2ldLmFjdGl2ZSA9IGZhbHNlO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIC8v5Yid5aeL5YyW5pa55Z2X6aKc6ImyXHJcbiAgICBpbml0Q29sb3IoKXsgICAgICAgICAgIFxyXG4gICAgIFxyXG4gICAgICAgIGxldCBuYW1lID0gdGhpcy5jb2xvcitcImNvbG9yXCIrdGhpcy5ibG9ja19JbmZvLmJsb2NrO1xyXG5cclxuICAgICAgICBsZXQgbnVtYmVyID0gTWF0aC5mbG9vcigodGhpcy5jb2xvci0xKS8yKTtcclxuXHJcbiAgICAgICAgbGV0IGJsb2NrU3ByaXRlRnJhbWUgPSBNYXBDb25yb2xlci5faW5zdGFuY2UuQmxvY2tfQ29sb3JbbnVtYmVyXS5fc3ByaXRlRnJhbWVzO1xyXG4gICAgICAgIHZhciBzcHJpdGVGcmFtZSA9IGJsb2NrU3ByaXRlRnJhbWVbbmFtZV07XHJcbiAgICAgIFxyXG4gICAgICAgIC8vIGlmKHRoaXMudHlwZSA9PSBCbG9ja1R5cGUu5Ya757uT5Z2XKXtcclxuICAgICAgICAvLyAgICAgbmFtZSA9IFwiaWNlX1wiK3RoaXMuYmxvY2tfSW5mby5ibG9jaztcclxuICAgICAgICAvLyAgICAgc3ByaXRlRnJhbWUgPSB0aGlzLmljZV9TcHJpdGVGcmFtZS5fc3ByaXRlRnJhbWVzW25hbWVdO1xyXG4gICAgICAgIC8vIH1cclxuXHJcbiAgICAgICAgdGhpcy5ub2RlLmdldENoaWxkQnlOYW1lKFwiaWNvblwiKS5nZXRDb21wb25lbnQoY2MuU3ByaXRlKS5zcHJpdGVGcmFtZSA9IHNwcml0ZUZyYW1lO1xyXG4gICAgfVxyXG5cclxuICAgIC8v5Yib5bu657KY5ZCI5b+r6L+e5o6l5aSEXHJcbiAgICBjcmVhdGVBZGhlc2l2ZSgpe1xyXG4gICAgICAgIGxldCBib3ggPSBbXTtcclxuICAgICAgICBmb3IobGV0IGk9MDsgaTx0aGlzLmFsbEJsb2Nrcy5sZW5ndGg7aSsrKXtcclxuICAgICAgICAgICAgYm94LnB1c2goY2MudjIodGhpcy5hbGxCbG9ja3NbaV0ueCt0aGlzLnBvc1gsdGhpcy5hbGxCbG9ja3NbaV0ueSt0aGlzLnBvc1kpKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgbGV0IG90aGVyQm94ID0gW107XHJcbiAgICAgICAgZm9yKGxldCBpPTA7IGk8dGhpcy5ibG9ja19JbmZvLm5vZGUuZ2V0Q29tcG9uZW50KFwiQmxvY2tcIikuYWxsQmxvY2tzLmxlbmd0aDtpKyspe1xyXG4gICAgICAgICAgICBvdGhlckJveC5wdXNoKGNjLnYyKHRoaXMuYmxvY2tfSW5mby5ub2RlLmdldENvbXBvbmVudChcIkJsb2NrXCIpLmFsbEJsb2Nrc1tpXS54K3RoaXMuYmxvY2tfSW5mby5ub2RlLmdldENvbXBvbmVudChcIkJsb2NrXCIpLnBvc1gsdGhpcy5ibG9ja19JbmZvLm5vZGUuZ2V0Q29tcG9uZW50KFwiQmxvY2tcIikuYWxsQmxvY2tzW2ldLnkrdGhpcy5ibG9ja19JbmZvLm5vZGUuZ2V0Q29tcG9uZW50KFwiQmxvY2tcIikucG9zWSkpOyBcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGZvcihsZXQgaz0wOyBrPGJveC5sZW5ndGg7IGsrKyl7XHJcbiAgICAgICAgICAgIGZvcihsZXQgaj0wOyBqPG90aGVyQm94Lmxlbmd0aDsgaisrKXtcclxuICAgICAgICAgICAgICAgIGlmKChib3hba10ueCA9PSBvdGhlckJveFtqXS54KzEgfHwgYm94W2tdLnggPT0gb3RoZXJCb3hbal0ueC0xKSAmJiAoYm94W2tdLnkgPT0gb3RoZXJCb3hbal0ueSkpe1xyXG4gICAgICAgICAgICAgICAgICAgIC8v5ZyoWOi9tCDnm7jpgrtcclxuICAgICAgICAgICAgICAgICAgICBsZXQgbGVmdCA9IGJveFtrXS54ID09IG90aGVyQm94W2pdLngrMSA/IFwibGVmdFwiIDogXCJyaWdodFwiO1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuYWRkQWRoZXNpdmUobGVmdCxib3hba10pO1xyXG4gICAgICAgICAgICAgICAgICAgIG90aGVyQm94LnNwbGljZShqLCAxKTtcclxuICAgICAgICAgICAgICAgICAgICBqLS07IC8vIOiwg+aVtOe0ouW8lVxyXG4gICAgICAgICAgICAgICAgICAgIGlmKGogPCAwKSBicmVhaztcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIGlmKChib3hba10ueSA9PSBvdGhlckJveFtqXS55KzEgfHwgYm94W2tdLnkgPT0gb3RoZXJCb3hbal0ueS0xKSAmJiAoYm94W2tdLnggPT0gb3RoZXJCb3hbal0ueCkpe1xyXG4gICAgICAgICAgICAgICAgICAgIC8v5ZyoWei9tCDnm7jpgrtcclxuICAgICAgICAgICAgICAgICAgICBsZXQgZG93biA9IGJveFtrXS55ID09IG90aGVyQm94W2pdLnkrMSA/IFwiZG93blwiIDogXCJ1cFwiO1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuYWRkQWRoZXNpdmUoZG93bixib3hba10pO1xyXG4gICAgICAgICAgICAgICAgICAgIG90aGVyQm94LnNwbGljZShqLCAxKTtcclxuICAgICAgICAgICAgICAgICAgICBqLS07IC8vIOiwg+aVtOe0ouW8lVxyXG4gICAgICAgICAgICAgICAgICAgIGlmKGogPCAwKSBicmVhaztcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfSBcclxuICAgICAgICB9XHJcbiAgICAgICAgLy8gbGV0IGFkaGVzaXZlID0gY2MuaW5zdGFudGlhdGUoTWFwQ29ucm9sZXIuX2luc3RhbmNlLkJsb2NrX1Byb3BbdGhpcy50eXBlXSk7XHJcbiAgICB9XHJcblxyXG4gICAgLy/lhbfkvZPmt7vliqDnspjlkIjlv6vplIHpk77mlrnms5VcclxuICAgIGFkZEFkaGVzaXZlKGRpcmFjdGlvbixib3gpe1xyXG4gICAgICAgIGxldCBwb3MgPSBjYy52Mihib3gueCAtIHRoaXMucG9zWCxib3gueSAtIHRoaXMucG9zWSk7XHJcbiAgICAgICAgbGV0IGFkaGVzaXZlID0gY2MuaW5zdGFudGlhdGUoTWFwQ29ucm9sZXIuX2luc3RhbmNlLkJsb2NrX1Byb3BbMTBdKTtcclxuICAgICAgICBhZGhlc2l2ZS5wYXJlbnQgPSB0aGlzLm5vZGUucGFyZW50LmdldENoaWxkQnlOYW1lKFwiQWRoZXNpdmVcIik7XHJcbiAgICAgICAgLy8gYWRoZXNpdmUucGFyZW50ID0gdGhpcy5ub2RlLmdldENoaWxkQnlOYW1lKFwiYWRoZXNpdmVcIik7XHJcbiAgICAgICAgYWRoZXNpdmUuc2V0UG9zaXRpb24oIDEyMCpwb3MueCAtIDY1ICsgdGhpcy5ub2RlLngsIDEyMCpwb3MueSArIDYwICsgdGhpcy5ub2RlLnkpO1xyXG4gICAgICAgIGlmKGRpcmFjdGlvbiA9PSBcImxlZnRcIiB8fCBkaXJhY3Rpb24gPT0gXCJyaWdodFwiKXtcclxuICAgICAgICAgICAgYWRoZXNpdmUuZ2V0Q2hpbGRCeU5hbWUoXCJoZW5nXCIpLmFjdGl2ZSA9IHRydWU7XHJcbiAgICAgICAgICAgIGFkaGVzaXZlLmdldENoaWxkQnlOYW1lKFwiaGVuZ1wiKS54ID0gLTYwO1xyXG4gICAgICAgICAgICBpZihkaXJhY3Rpb24gPT0gXCJyaWdodFwiKSBhZGhlc2l2ZS5nZXRDaGlsZEJ5TmFtZShcImhlbmdcIikueCA9IDYwO1xyXG4gICAgICAgICAgICBhZGhlc2l2ZS5nZXRDaGlsZEJ5TmFtZShcImhlbmdcIikueCArPSA5O1xyXG4gICAgICAgICAgICBhZGhlc2l2ZS5nZXRDaGlsZEJ5TmFtZShcImhlbmdcIikueSArPSA3O1xyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNle1xyXG4gICAgICAgICAgICBhZGhlc2l2ZS5nZXRDaGlsZEJ5TmFtZShcInNodVwiKS5hY3RpdmUgPSB0cnVlO1xyXG4gICAgICAgICAgICBhZGhlc2l2ZS5nZXRDaGlsZEJ5TmFtZShcInNodVwiKS55ID0gLTYwO1xyXG4gICAgICAgICAgICBpZihkaXJhY3Rpb24gPT0gXCJ1cFwiKSBhZGhlc2l2ZS5nZXRDaGlsZEJ5TmFtZShcInNodVwiKS55ID0gNjA7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGFkaGVzaXZlLmdldENvbXBvbmVudChcIkFkaGVzaXZlXCIpLmluaXQodGhpcy5ub2RlKTtcclxuICAgICAgICB0aGlzLmFkaGVzaXZlTm9kZS5wdXNoKGFkaGVzaXZlKTtcclxuICAgIH1cclxuXHJcbiAgICByZW1vdmVBZGhlc2l2ZSgpe1xyXG4gICAgICAgIGlmKHRoaXMuYWRoZXNpdmVOb2RlLmxlbmd0aCA+IDApe1xyXG4gICAgICAgICAgICBmb3IobGV0IGk9MDsgaTx0aGlzLmFkaGVzaXZlTm9kZS5sZW5ndGg7IGkrKyl7XHJcbiAgICAgICAgICAgICAgICBsZXQgYWRoZXNpdmUgPSB0aGlzLmFkaGVzaXZlTm9kZVtpXTtcclxuICAgICAgICAgICAgICAgIGFkaGVzaXZlLmdldENvbXBvbmVudChcIkFkaGVzaXZlXCIpLnJlbW92ZSgpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIC8v5pa55Z2X6JC954K5XHJcbiAgICBibG9ja0ZhbGwocG9pbnQpe1xyXG4gICAgICAgIGlmKHRoaXMub3ZlciA9PSB0cnVlKSByZXR1cm47XHJcbiAgICAgICAgLy8gLy8g5YGH6K6+IE1hcENvbnJvbGVyIOaciee9keagvOS/oeaBr++8jOi/memHjOeugOWNleekuuS+i1xyXG4gICAgICAgIGNvbnN0IG1hcFdpZHRoID0gTWFwQ29ucm9sZXIuX2luc3RhbmNlLm1hcFdpZHRoO1xyXG4gICAgICAgIGNvbnN0IG1hcEhlaWdodCA9IE1hcENvbnJvbGVyLl9pbnN0YW5jZS5tYXBIZWlnaHQ7XHJcbiAgICAgICAgY29uc3QgY2VsbFNpemUgPSAxMjA7IC8vIOavj+S4quagvOWtkOeahOWkp+Wwj++8jOagueaNruWunumZheaDheWGteiwg+aVtFxyXG5cclxuICAgICAgICAvLyDorqHnrpfngrnmiYDlnKjnmoTnvZHmoLzlnZDmoIdcclxuICAgICAgICBjb25zdCBncmlkWCA9IE1hdGguZmxvb3IoKHBvaW50LnggKyAobWFwV2lkdGggKiBjZWxsU2l6ZSAvIDIpKSAvIGNlbGxTaXplKTtcclxuICAgICAgICBjb25zdCBncmlkWSA9IE1hdGguZmxvb3IoKHBvaW50LnkgKyAobWFwSGVpZ2h0ICogY2VsbFNpemUgLyAyKSkgLyBjZWxsU2l6ZSk7XHJcblxyXG4gICAgICAgIC8vIOajgOafpee9keagvOWdkOagh+aYr+WQpui2iueVjFxyXG4gICAgICAgIGlmIChncmlkWCA+PSAwICYmIGdyaWRYIDwgbWFwV2lkdGggJiYgZ3JpZFkgPj0gMCAmJiBncmlkWSA8IG1hcEhlaWdodCkge1xyXG4gICAgICAgICAgICBjb25zdCBtYXBCbG9jayA9IE1hcENvbnJvbGVyLl9pbnN0YW5jZS5tYXBCbG9ja3NXYWxsW2dyaWRYXVtncmlkWV07XHJcbiAgICAgICAgICAgIGNvbnN0IGJsb2NrUmVjdCA9IG1hcEJsb2NrLmdldEJvdW5kaW5nQm94KCk7XHJcblxyXG4gICAgICAgICAgICAvLyDkvb/nlKggY2MuSW50ZXJzZWN0aW9uLnBvaW50SW5SZWN0IOaWueazleWIpOaWreeCueaYr+WQpuWcqOefqeW9ouiMg+WbtOWGhVxyXG4gICAgICAgICAgICBpZiAoYmxvY2tSZWN0LmNvbnRhaW5zKHBvaW50KSkge1xyXG4gICAgICAgICAgICAgICAgLy/lr7vmib7okL3ngrlcclxuICAgICAgICAgICAgICAgIHRoaXMucmVtb3ZlTWFwQmxvY2soKTtcclxuICAgICAgICAgICAgICAgIHRoaXMucG9zWCA9IG1hcEJsb2NrLmdldENvbXBvbmVudChcIk1hcEJsb2NrXCIpLnBvc1g7XHJcbiAgICAgICAgICAgICAgICB0aGlzLnBvc1kgPSBtYXBCbG9jay5nZXRDb21wb25lbnQoXCJNYXBCbG9ja1wiKS5wb3NZO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5zZXRNYXBCbG9jaygpO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5sZXZlbCA9IDUwICsgdGhpcy5wb3NYIC0gdGhpcy5wb3NZICogMztcclxuICAgICAgICAgICAgICAgIHRoaXMubm9kZS56SW5kZXggPSB0aGlzLmxldmVsO1xyXG4gICAgICAgICAgICAgICAgLy8gY29uc29sZS5sb2coXCLmlrnlnZflsYLnuqdcIix0aGlzLm5vZGUuekluZGV4KTtcclxuICAgICAgICAgICAgICAgIHRoaXMubm9kZS54ID0gbWFwQmxvY2sueCArIDY1O1xyXG4gICAgICAgICAgICAgICAgdGhpcy5ub2RlLnkgPSBtYXBCbG9jay55IC0gNjA7XHJcbiAgICAgICAgICAgICAgICBpZiAodGhpcy50eXBlID09IDkpIHtcclxuICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy5ibG9ja19JbmZvLm5vZGUpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5ibG9ja19JbmZvLm5vZGUueCA9IHRoaXMubm9kZS54IC0gdGhpcy5hZGhlc2l2ZS54O1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmJsb2NrX0luZm8ubm9kZS55ID0gdGhpcy5ub2RlLnkgLSB0aGlzLmFkaGVzaXZlLnk7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgZWxzZSBpZih0aGlzLnR5cGUgPT0gMSl7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5ibG9ja19JbmZvLm5vZGUuZ2V0Q29tcG9uZW50KFwiQmxvY2tcIikubW92ZVN0YWNrID0gZmFsc2U7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5ibG9ja19JbmZvLm5vZGUueCA9IHRoaXMubm9kZS54ICsgdGhpcy5ibG9ja19JbmZvLm5vZGUuZ2V0Q29tcG9uZW50KFwiQmxvY2tcIikuc3RhY2tpbmcueDtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLmJsb2NrX0luZm8ubm9kZS55ID0gdGhpcy5ub2RlLnkgKyB0aGlzLmJsb2NrX0luZm8ubm9kZS5nZXRDb21wb25lbnQoXCJCbG9ja1wiKS5zdGFja2luZy55O1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgICAgICBcclxuICAgICAgICBsZXQgamcgPSBNYXBDb25yb2xlci5faW5zdGFuY2UuY2hlY2tQYXNzKHRoaXMubm9kZSx0aGlzLmFsbEJsb2Nrcyk7XHJcblxyXG4gICAgICAgIGlmKGpnID49IDApe1xyXG4gICAgICAgICAgICB0aGlzLm92ZXIgPSB0cnVlO1xyXG4gICAgICAgICAgICBNYXBDb25yb2xlci5faW5zdGFuY2UuY2hhbmdlU3RhdGUoKTtcclxuICAgICAgICAgICAgdGhpcy5yZW1vdmVCb3hDb2xsaWRlcigpO1xyXG4gICAgICAgICAgICB0aGlzLnJlbW92ZU1hcEJsb2NrKCk7XHJcbiAgICAgICAgICAgIHRoaXMucmVtb3ZlQWN0aW9uKGpnKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZXtcclxuICAgICAgICAgICAgTWFwQ29ucm9sZXIuX2luc3RhbmNlLnVwRG9vcih0aGlzLmNvbG9yKTtcclxuICAgICAgICAgICAgdGhpcy5zZXRWaWJyYXRlKFwibWVkaXVtXCIsMSlcclxuICAgICAgICAgICAgLy9AdHMtaWdub3JlXHJcbiAgICAgICAgfVxyXG5cclxuICAgIH1cclxuXHJcbiAgICByZW1vdmVCb3hDb2xsaWRlcigpe1xyXG4gICAgICAgIGZvcihsZXQgaT0wOyBpPHRoaXMubm9kZS5jaGlsZHJlbi5sZW5ndGg7IGkrKyl7XHJcbiAgICAgICAgICAgIGlmKHRoaXMubm9kZS5jaGlsZHJlbltpXS5uYW1lID09IFwibGVmdFwiIHx8IHRoaXMubm9kZS5jaGlsZHJlbltpXS5uYW1lID09IFwicmlnaHRcIiB8fCB0aGlzLm5vZGUuY2hpbGRyZW5baV0ubmFtZSA9PSBcInRvcFwiIHx8IHRoaXMubm9kZS5jaGlsZHJlbltpXS5uYW1lID09IFwiZG93blwiKVxyXG4gICAgICAgICAgICAgICAgdGhpcy5ub2RlLmNoaWxkcmVuW2ldLmRlc3Ryb3koKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgcmVtb3ZlQWN0aW9uKGRpcmFjdGlvbil7XHJcbiAgICAgICAgdGhpcy5ub2RlLm9mZihjYy5Ob2RlLkV2ZW50VHlwZS5UT1VDSF9TVEFSVCk7XHJcbiAgICAgICAgdGhpcy5ub2RlLm9mZihjYy5Ob2RlLkV2ZW50VHlwZS5UT1VDSF9NT1ZFKTtcclxuICAgICAgICB0aGlzLm5vZGUub2ZmKGNjLk5vZGUuRXZlbnRUeXBlLlRPVUNIX0NBTkNFTCk7XHJcbiAgICAgICAgdGhpcy5ub2RlLm9mZihjYy5Ob2RlLkV2ZW50VHlwZS5UT1VDSF9FTkQpO1xyXG4gICAgICAgIHRoaXMubm9kZS5hZGRDb21wb25lbnQoY2MuTWFzayk7XHJcbiAgICAgICAgbGV0IHNlbGYgPSB0aGlzO1xyXG4gICAgICAgIGxldCBwb3MgPSB0aGlzLm5vZGUuZ2V0UG9zaXRpb24oKTtcclxuICAgICAgICBpZih0aGlzLnR5cGUgPT0gQmxvY2tUeXBlLuWPoOWKoOWdl+S4iyl7XHJcbiAgICAgICAgICAgIGxldCBzY2FsZVggPSB0aGlzLm5vZGUuc2NhbGVYO1xyXG4gICAgICAgICAgICBsZXQgc2NhbGVZID0gdGhpcy5ub2RlLnNjYWxlWTtcclxuICAgICAgICAgICAgdGhpcy5ibG9ja19JbmZvLm5vZGUuZ2V0Q29tcG9uZW50KFwiQmxvY2tcIikucmVzdG9yZU5vbWFsKHRoaXMucG9zWCx0aGlzLnBvc1ksdHJ1ZSk7XHJcbiAgICAgICAgICAgIGNjLnR3ZWVuKHRoaXMuYmxvY2tfSW5mby5ub2RlKVxyXG4gICAgICAgICAgICAudG8oMC4zLHtwb3NpdGlvbjpwb3Msc2NhbGVYOnNjYWxlWD4wPzE6LTEsc2NhbGVZOnNjYWxlWT4wPzE6LTF9KVxyXG4gICAgICAgICAgICAuc3RhcnQoKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSBpZih0aGlzLnR5cGUgPT0gQmxvY2tUeXBlLueymOWQiOWdlyl7XHJcbiAgICAgICAgICAgIHRoaXMucmVtb3ZlQWRoZXNpdmUoKTtcclxuICAgICAgICAgICAgdGhpcy5ibG9ja19JbmZvLm5vZGUuZ2V0Q29tcG9uZW50KFwiQmxvY2tcIikucmVtb3ZlQWRoZXNpdmUoKTtcclxuICAgICAgICAgICAgdGhpcy5ibG9ja19JbmZvLm5vZGUuZ2V0Q29tcG9uZW50KFwiQmxvY2tcIikucmVzdG9yZU5vbWFsKHRoaXMuYmxvY2tfSW5mby5ub2RlLmdldENvbXBvbmVudChcIkJsb2NrXCIpLnBvc1gsXHJcbiAgICAgICAgICAgIHRoaXMuYmxvY2tfSW5mby5ub2RlLmdldENvbXBvbmVudChcIkJsb2NrXCIpLnBvc1ksZmFsc2UpO1xyXG4gICAgICAgICAgICB0aGlzLmJsb2NrX0luZm8ubm9kZSA9IG51bGw7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2UgaWYodGhpcy50eXBlID09IEJsb2NrVHlwZS7ngrjlvLnlnZcpe1xyXG4gICAgICAgICAgICB0aGlzLm5vZGUuZ2V0Q2hpbGRCeU5hbWUoXCJib29tXCIpLmdldENvbXBvbmVudChcIkJvb21cIikuc3RvcEJvb20oKTtcclxuICAgICAgICB9XHJcblxyXG4gICAgIFxyXG4gICAgICAgIGxldCB0aW1lID0gMC4zMztcclxuICAgICAgICAvLyB0aGlzLm5vZGUuekluZGV4ID0gMDtcclxuICAgICAgICBsZXQgd2lkdGggPSBNYXRoLmZsb29yKHRoaXMubm9kZS53aWR0aCAvIDEyMCk7XHJcbiAgICAgICAgbGV0IGhlaWdodCA9IE1hdGguZmxvb3IodGhpcy5ub2RlLmhlaWdodCAvIDEyMCk7XHJcblxyXG5cclxuICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgICAgICAgY2MuZnguQXVkaW9NYW5hZ2VyLl9pbnN0YW5jZS5wbGF5RWZmZWN0KFwieGlhb2NodVwiLG51bGwpO1xyXG4gICAgICAgIH0sIDMwMCApO1xyXG4gICAgICAgIHRoaXMuc2V0VmlicmF0ZShcImxpZ2h0XCIsMylcclxuXHJcbiAgICAgICAgaWYoZGlyYWN0aW9uID09IDApe1xyXG4gICAgICAgICAgICB0aW1lID0gMC4zMypoZWlnaHQ7XHJcbiAgICAgICAgICAgIC8vIHRpbWUgPSAwLjk5O1xyXG4gICAgICAgICAgICBmb3IobGV0IGk9MDsgaTx0aGlzLm5vZGUuY2hpbGRyZW4ubGVuZ3RoO2krKyl7XHJcbiAgICAgICAgICAgICAgICBjYy50d2Vlbih0aGlzLm5vZGUuY2hpbGRyZW5baV0pXHJcbiAgICAgICAgICAgICAgICAudG8odGltZSx7eTp0aGlzLm5vZGUuY2hpbGRyZW5baV0ueSArIHRoaXMubm9kZS5jaGlsZHJlblswXS5oZWlnaHR9KVxyXG4gICAgICAgICAgICAgICAgLnN0YXJ0KCk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSBpZihkaXJhY3Rpb24gPT0gMSl7XHJcbiAgICAgICAgICAgIHRpbWUgPSAwLjMzKmhlaWdodDtcclxuICAgICAgICAgICAgLy8gdGltZSA9IDAuOTlcclxuICAgICAgICAgICAgZm9yKGxldCBpPTA7IGk8dGhpcy5ub2RlLmNoaWxkcmVuLmxlbmd0aDtpKyspe1xyXG4gICAgICAgICAgICAgICAgY2MudHdlZW4odGhpcy5ub2RlLmNoaWxkcmVuW2ldKSBcclxuICAgICAgICAgICAgICAudG8odGltZSx7eTp0aGlzLm5vZGUuY2hpbGRyZW5baV0ueSAtIHRoaXMubm9kZS5jaGlsZHJlblswXS5oZWlnaHR9KVxyXG4gICAgICAgICAgICAgIC5zdGFydCgpOyBcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH0gICBcclxuICAgICAgICBlbHNlIGlmKGRpcmFjdGlvbiA9PSAyKXtcclxuICAgICAgICAgICAgdGltZSA9IDAuMzMqd2lkdGg7XHJcbiAgICAgICAgICAgIC8vIHRpbWUgPSAwLjk5XHJcbiAgICAgICAgICAgIGZvcihsZXQgaT0wOyBpPHRoaXMubm9kZS5jaGlsZHJlbi5sZW5ndGg7aSsrKXtcclxuICAgICAgICAgICAgICAgIGNjLnR3ZWVuKHRoaXMubm9kZS5jaGlsZHJlbltpXSkgXHJcbiAgICAgICAgICAgICAgICAudG8odGltZSx7eDp0aGlzLm5vZGUuY2hpbGRyZW5baV0ueCAtIHRoaXMubm9kZS5jaGlsZHJlblswXS53aWR0aH0pXHJcbiAgICAgICAgICAgICAgICAuc3RhcnQoKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIGlmKGRpcmFjdGlvbiA9PSAzKXtcclxuICAgICAgICAgICAgdGltZSA9IDAuMzMqd2lkdGhcclxuICAgICAgICAgICAgLy8gdGltZSA9IDAuOTlcclxuICAgICAgICAgICAgZm9yKGxldCBpPTA7IGk8dGhpcy5ub2RlLmNoaWxkcmVuLmxlbmd0aDtpKyspe1xyXG4gICAgICAgICAgICAgICAgY2MudHdlZW4odGhpcy5ub2RlLmNoaWxkcmVuW2ldKSBcclxuICAgICAgICAgICAgICAgIC50byh0aW1lLHt4OnRoaXMubm9kZS5jaGlsZHJlbltpXS54ICsgdGhpcy5ub2RlLmNoaWxkcmVuWzBdLndpZHRofSlcclxuICAgICAgICAgICAgICAgIC5zdGFydCgpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgICAgICAgbGV0IHRlbXBDb2xvciA9IHRoaXMuY29sb3I7XHJcbiAgICAgICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgTWFwQ29ucm9sZXIuX2luc3RhbmNlLnVwRG9vcih0ZW1wQ29sb3IpOyBcclxuICAgICAgICAgICAgfSwgMjUwKTtcclxuXHJcbiAgICAgICAgICAgIE1hcENvbnJvbGVyLl9pbnN0YW5jZS5uZXh0TGV2ZWwoKTtcclxuICAgICAgICAgICAgdGhpcy5ub2RlLmFjdGl2ZSA9IGZhbHNlO1xyXG4gICAgICAgICAgICB0aGlzLm5vZGUucmVtb3ZlRnJvbVBhcmVudCgpO1xyXG5cclxuICAgICAgICAgICAgLy8gdGhpcy5ub2RlLmFjdGl2ZSA9IGZhbHNlO1xyXG4gICAgICAgICAgICAvLyB0aGlzLm5vZGUucmVtb3ZlRnJvbVBhcmVudCgpO1xyXG4gICAgICAgIH0sIHRpbWUqMTAwMCk7XHJcblxyXG4gICAgfVxyXG5cclxuXHJcbiAgICBcclxuICAgIHRvdWNoU3RhcnQoZXZlbnQpe1xyXG4gICAgICAgIGlmKHRoaXMub3ZlciB8fCBNYXBDb25yb2xlci5faW5zdGFuY2UuZ2FtZU92ZXIpIHJldHVybjtcclxuICAgICAgICAvLyDov5Tlm57kuJbnlYzlnZDmoIdcclxuICAgICAgICBsZXQgdG91Y2hMb2MgPSBldmVudC5nZXRMb2NhdGlvbigpO1xyXG4gICAgICAgIC8vIGh0dHBzOi8vZG9jcy5jb2Nvcy5jb20vY3JlYXRvci9hcGkvemgvY2xhc3Nlcy9JbnRlcnNlY3Rpb24uaHRtbCDmo4DmtYvovoXliqnnsbtcclxuICAgICAgICAvLyBsZXQgcG9zID0gdGhpcy5jb2xsaWRlci53b3JsZC5wb2ludHNcclxuXHJcbiAgICAgICAgaWYoIXRoaXMuY29sbGlkZXIud29ybGQpe1xyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG4gICAgICAgIC8vIOWIpOaWreinpuaRuOeCueaYr+WQpuWcqOWkmui+ueW9ouWGhVxyXG4gICAgICAgIGlmIChjYy5JbnRlcnNlY3Rpb24ucG9pbnRJblBvbHlnb24odG91Y2hMb2MsIHRoaXMuY29sbGlkZXIud29ybGQucG9pbnRzKSkge1xyXG4gICAgICAgICAgICBpZihNYXBDb25yb2xlci5faW5zdGFuY2UuaGFtbWVyKXtcclxuICAgICAgICAgICAgICAgIHRoaXMuZWxpbWluYXRlKCk7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmlzVG91Y2ggPSBmYWxzZTtcclxuICAgICAgICAgICAgICAgIE1hcENvbnJvbGVyLl9pbnN0YW5jZS5oYW1tZXJNYXNrLmFjdGl2ZSA9IGZhbHNlO1xyXG4gICAgICAgICAgICAgICAgTWFwQ29ucm9sZXIuX2luc3RhbmNlLm5vZGUucGFyZW50LmdldENoaWxkQnlOYW1lKFwiQm90dG9tXCIpLmdldENoaWxkQnlOYW1lKFwiZGVzdHJveUJ0blwiKS5nZXRDb21wb25lbnQoXCJidG5Db250cm9sXCIpLnNldFRvdWNoKHRydWUpO1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgICAgICAgICB9IFxyXG4gICAgICAgICAgICBpZih0aGlzLnR5cGUgIT0gQmxvY2tUeXBlLuS4iumUgeWdlyAmJiB0aGlzLnR5cGUgIT0gQmxvY2tUeXBlLuWGu+e7k+Wdlyl7XHJcbiAgICAgICAgICAgICAgICBNYXBDb25yb2xlci5faW5zdGFuY2Uuc3RhcnRVcGRhdGUoKTtcclxuICAgICAgICAgICAgICAgIGNjLmZ4LkF1ZGlvTWFuYWdlci5faW5zdGFuY2UucGxheUVmZmVjdChcImhpdFwiLG51bGwpO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5ub2RlLnpJbmRleCA9IDIwMDtcclxuICAgICAgICAgICAgICAgIGlmKHRoaXMudHlwZSA9PSA5KXtcclxuICAgICAgICAgICAgICAgICAgICBpZih0aGlzLmJsb2NrX0luZm8ubm9kZSl7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuYmxvY2tfSW5mby5ub2RlLnpJbmRleCA9IDIwMDtcclxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5ibG9ja19JbmZvLm5vZGUuZ2V0Q29tcG9uZW50KFwiQmxvY2tcIikuaGl0LmFjdGl2ZSA9IHRydWU7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIE1hcENvbnJvbGVyLl9pbnN0YW5jZS5kb3duRG9vcih0aGlzLmJsb2NrX0luZm8ubm9kZS5nZXRDb21wb25lbnQoXCJCbG9ja1wiKS5jb2xvcix0aGlzLmJsb2NrX0luZm8ubm9kZS5nZXRDb21wb25lbnQoXCJCbG9ja1wiKS50eXBlKTtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBlbHNlIGlmKHRoaXMudHlwZSA9PSAxKXtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLmJsb2NrX0luZm8ubm9kZS5nZXRDb21wb25lbnQoXCJCbG9ja1wiKS5tb3ZlU3RhY2sgPSB0cnVlO1xyXG4gICAgICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgICAgIGxldCB0b3VjaFBvaW50ID0gZXZlbnQuZ2V0TG9jYXRpb24oKTtcclxuICAgICAgICAgICAgICAgIGxldCBsb2NhbCA9IHRoaXMubm9kZS5wYXJlbnQuY29udmVydFRvTm9kZVNwYWNlQVIodG91Y2hQb2ludCk7XHJcbiAgICAgICAgICAgICAgICB0aGlzLnRvdWNoUG9pbnRYID0gbG9jYWwueDtcclxuICAgICAgICAgICAgICAgIHRoaXMudG91Y2hQb2ludFkgPSBsb2NhbC55O1xyXG4gICAgICAgICAgICAgICAgdGhpcy5tb3ZlTGVmdCA9IHRoaXMubW92ZVJpZ2h0ID0gdGhpcy5tb3ZlVXAgPSB0aGlzLm1vdmVEb3duID0gdHJ1ZTtcclxuICAgICAgICAgICAgICAgIHRoaXMuaXNUb3VjaCA9IHRydWU7XHJcbiAgICAgICAgICAgICAgICB0aGlzLm1vdmVDb3JuZXIgPSAwO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5yZWxhdGl2ZV9Qb3NpdGlvbiA9IGNjLnYyKHRoaXMubm9kZS54LWxvY2FsLngsdGhpcy5ub2RlLnktbG9jYWwueSk7XHJcbiAgICAgICAgICAgICAgICBNYXBDb25yb2xlci5faW5zdGFuY2UuY2hhbmdlUmlzZUZhbGwodGhpcy5jb2xvcix0cnVlKTtcclxuICAgICAgICAgICAgICAgIE1hcENvbnJvbGVyLl9pbnN0YW5jZS5kb3duRG9vcih0aGlzLmNvbG9yLHRoaXMudHlwZSk7XHJcbiAgICAgICAgICAgICAgICB0aGlzLnNldFZpYnJhdGUoXCJsaWdodFwiLDEpXHJcbiAgICAgICAgICAgICAgICBpZih0aGlzLmhpdCkgdGhpcy5oaXQuYWN0aXZlID0gdHJ1ZTtcclxuICAgICAgICAgICAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGVsc2V7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmlzVG91Y2ggPSBmYWxzZTtcclxuICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgdGhpcy5pc1RvdWNoID0gZmFsc2U7XHJcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgICAgICB9XHJcblxyXG4gICAgfVxyXG5cclxuICAgIHRvdWNoRW5kKGV2ZW50KXtcclxuICAgICAgICBpZihNYXBDb25yb2xlci5faW5zdGFuY2UuZ2FtZU92ZXIpIHJldHVybjtcclxuICAgICAgICBpZih0aGlzLmlzVG91Y2gpe1xyXG4gICAgICAgICAgICB0aGlzLnRvdWNoRGVsdGEgPSBjYy52MigwLCAwKTtcclxuICAgICAgICAgICAgdGhpcy5jaGVja0NvbGxpc2lvbiA9IGZhbHNlO1xyXG4gICAgICAgICAgICBNYXBDb25yb2xlci5faW5zdGFuY2UuY2hhbmdlUmlzZUZhbGwodGhpcy5jb2xvcixmYWxzZSk7XHJcbiAgICAgICAgICAgIGNjLmZ4LkF1ZGlvTWFuYWdlci5faW5zdGFuY2UucGxheUVmZmVjdChcImRvd25cIixudWxsKTtcclxuICAgICAgICAgICAgTWFwQ29ucm9sZXIuX2luc3RhbmNlLnJlbW92ZU9uZUJsb2NrKCk7XHJcbiAgICAgICAgICAgIHRoaXMuaXNUb3VjaCA9IGZhbHNlO1xyXG4gICAgICAgICAgICB0aGlzLm5vZGUuekluZGV4ID0gdGhpcy5sZXZlbDtcclxuICAgICAgICAgICAgdGhpcy5oaXQuYWN0aXZlID0gZmFsc2U7XHJcbiAgICAgICAgICAgIGlmKHRoaXMudHlwZSA9PSA5KXtcclxuICAgICAgICAgICAgICAgIGlmKHRoaXMuYmxvY2tfSW5mby5ub2RlKXtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLmJsb2NrX0luZm8ubm9kZS5nZXRDb21wb25lbnQoXCJCbG9ja1wiKS5oaXQuYWN0aXZlID0gZmFsc2U7XHJcbiAgICAgICAgICAgICAgICAgICAgLy8gdGhpcy5ibG9ja19JbmZvLm5vZGUuZ2V0Q29tcG9uZW50KFwiQmxvY2tcIikuaXNUb3VjaCA9IGZhbHNlO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICB0aGlzLnRvdWNoUG9pbnQgPSBldmVudC5nZXRMb2NhdGlvbigpO1xyXG4gICAgICAgICAgICBsZXQgbG9jYWwgPSBjYy52Mih0aGlzLm5vZGUueCAtIDUwLHRoaXMubm9kZS55ICsgNTAgKTtcclxuICAgICAgICAgICAgaWYodGhpcy50eXBlICE9IDEwKXtcclxuICAgICAgICAgICAgICAgIC8vQHRzLWlnbm9yZVxyXG4gICAgICAgICAgICAgICAgdGhpcy5ibG9ja0ZhbGwobG9jYWwpO1xyXG4gICAgICAgICAgICAgICAgaWYodGhpcy50eXBlID09IDkpe1xyXG4gICAgICAgICAgICAgICAgICAgIGlmKHRoaXMuYmxvY2tfSW5mby5ub2RlKXtcclxuICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGxvY2FsVGVtcCA9IGNjLnYyKHRoaXMuYmxvY2tfSW5mby5ub2RlLngtNTAsdGhpcy5ibG9ja19JbmZvLm5vZGUueSs1MCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuYmxvY2tfSW5mby5ub2RlLmdldENvbXBvbmVudChcIkJsb2NrXCIpLmJsb2NrRmFsbChsb2NhbFRlbXApO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB0aGlzLm1vdmVMZWZ0ID0gdGhpcy5tb3ZlUmlnaHQgPSB0aGlzLm1vdmVVcCA9IHRoaXMubW92ZURvd24gPSB0cnVlO1xyXG4gICAgICAgIH1cclxuXHJcbiAgXHJcbiAgICB9XHJcblxyXG4gICAgdG91Y2hNb3ZlKGV2ZW50OiBjYy5FdmVudC5FdmVudFRvdWNoKSB7XHJcbiAgICAgICAgaWYoTWFwQ29ucm9sZXIuX2luc3RhbmNlLmdhbWVPdmVyKSByZXR1cm47XHJcbiAgICAgICAgLy8gY29uc3QgY3VycmVudFRpbWUgPSBEYXRlLm5vdygpO1xyXG4gICAgICAgIC8vIC8vIOWmguaenOi3neemu+S4iuasoeenu+WKqOaXtumXtOWwj+S6jumXtOmalOaXtumXtO+8jOebtOaOpei/lOWbnlxyXG4gICAgICAgIC8vIGlmIChjdXJyZW50VGltZSAtIHRoaXMubGFzdE1vdmVUaW1lIDwgdGhpcy5tb3ZlSW50ZXJ2YWwpIHtcclxuICAgICAgICAvLyAgICAgcmV0dXJuO1xyXG4gICAgICAgIC8vIH1cclxuICAgICAgICAvLyB0aGlzLmxhc3RNb3ZlVGltZSA9IGN1cnJlbnRUaW1lO1xyXG5cclxuICAgICAgICBpZiAodGhpcy5pc1RvdWNoKSB7XHJcbiAgICAgICAgICAgIGNvbnN0IGRlbHRhID0gZXZlbnQuZ2V0RGVsdGEoKTtcclxuICAgICAgICAgICAgY29uc3QgdG91Y2hQb2ludCA9IGV2ZW50LmdldExvY2F0aW9uKCk7XHJcbiAgICAgICAgICAgIGNvbnN0IGxvY2FsID0gdGhpcy5ub2RlLnBhcmVudC5jb252ZXJ0VG9Ob2RlU3BhY2VBUih0b3VjaFBvaW50KTtcclxuICAgICAgICAgICAgdGhpcy50b3VjaFBvaW50WCA9IGxvY2FsLng7XHJcbiAgICAgICAgICAgIHRoaXMudG91Y2hQb2ludFkgPSBsb2NhbC55O1xyXG4gICAgICAgICAgICBkZWx0YS54ID0gdGhpcy50b3VjaFBvaW50WCAtIHRoaXMubm9kZS54ICsgdGhpcy5yZWxhdGl2ZV9Qb3NpdGlvbi54O1xyXG4gICAgICAgICAgICBkZWx0YS55ID0gdGhpcy50b3VjaFBvaW50WSAtIHRoaXMubm9kZS55ICsgIHRoaXMucmVsYXRpdmVfUG9zaXRpb24ueTtcclxuXHJcbiAgICAgICAgICAgIC8vIOmZkOWItuenu+WKqOmAn+W6plxyXG4gICAgICAgICAgICB0aGlzLnRvdWNoUG9pbnRYID0gbG9jYWwueDtcclxuICAgICAgICAgICAgdGhpcy50b3VjaFBvaW50WSA9IGxvY2FsLnk7XHJcbiAgICAgICAgICAgIGRlbHRhLnggPSB0aGlzLnRvdWNoUG9pbnRYIC0gdGhpcy5ub2RlLnggKyB0aGlzLnJlbGF0aXZlX1Bvc2l0aW9uLng7XHJcbiAgICAgICAgICAgIGRlbHRhLnkgPSB0aGlzLnRvdWNoUG9pbnRZIC0gdGhpcy5ub2RlLnkgKyAgdGhpcy5yZWxhdGl2ZV9Qb3NpdGlvbi55O1xyXG5cclxuICAgICAgICAgICAgLy8g6ZmQ5Yi256e75Yqo6YCf5bqmXHJcbiAgICAgICAgICAgIGRlbHRhLnggPSBNYXRoLm1heCgtdGhpcy5tYXhTcGVlZCwgTWF0aC5taW4odGhpcy5tYXhTcGVlZCwgZGVsdGEueCkpO1xyXG4gICAgICAgICAgICBkZWx0YS55ID0gTWF0aC5tYXgoLXRoaXMubWF4U3BlZWQsIE1hdGgubWluKHRoaXMubWF4U3BlZWQsIGRlbHRhLnkpKTtcclxuXHJcbiAgICAgICAgICAgIC8vIOiusOW9leinpuaRuOenu+WKqOeahOWinumHj1xyXG4gICAgICAgICAgICB0aGlzLnRvdWNoRGVsdGEgPSBkZWx0YTsgXHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIC8v6LaF5Ye66ZmQ5Yi25Yik5patXHJcbiAgICBleGNlZWRzKHN0ZXB4LHN0ZXB5KXtcclxuICAgICBcclxuICAgIH1cclxuXHJcbiAgICBlbGltaW5hdGUoKXtcclxuICAgICAgICAvL+mUpOWtkOeKtuaAgea2iOWksVxyXG4gICAgICAgIE1hcENvbnJvbGVyLl9pbnN0YW5jZS5wYXVzZSA9IHRydWU7XHJcbiAgICAgICAgTWFwQ29ucm9sZXIuX2luc3RhbmNlLmhhbW1lciA9IGZhbHNlO1xyXG4gICAgICAgIC8v5aaC5p6c5pa55Z2X5piv5pyJ54m55q6K54q25oCB77yM5YiZ54m55q6K5aSE55CGXHJcbiAgICAgICAgaWYodGhpcy50eXBlID09IEJsb2NrVHlwZS7lhrvnu5PlnZcpe1xyXG4gICAgICAgICAgICB0aGlzLm5vZGUuZ2V0Q2hpbGRCeU5hbWUoXCJmcmVlemVcIikuZ2V0Q29tcG9uZW50KFwiRnJlZXplXCIpLnJlZHVjZSgyKTtcclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIGlmKHRoaXMudHlwZSA9PSBCbG9ja1R5cGUu5LiK6ZSB5Z2XKXtcclxuICAgICAgICAgICAgdGhpcy5ub2RlLmdldENoaWxkQnlOYW1lKFwibG9ja1wiKS5nZXRDb21wb25lbnQoXCJMb2NrXCIpLnJlZHVjZSgpO1xyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICAvL+WmguaenOaWueWdl+WPr+S7pea2iOmZpFxyXG4gICAgICAgIE1hcENvbnJvbGVyLl9pbnN0YW5jZS5ibG9ja051bSAtPSAxO1xyXG4gICAgICAgIE1hcENvbnJvbGVyLl9pbnN0YW5jZS5zcGVjaWFsX1RyZWF0bWVudCh0aGlzLm5vZGUpO1xyXG4gICAgICAgIHZhciBzZWxmID0gdGhpcztcclxuICAgICAgICB0aGlzLnJlbW92ZU1hcEJsb2NrKCk7XHJcblxyXG4gICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICAgICAgICBsZXQgcG9zID0gdGhpcy5ub2RlLmdldFBvc2l0aW9uKCk7XHJcbiAgICAgICAgICAgIGlmKHNlbGYudHlwZSA9PSBCbG9ja1R5cGUu5Y+g5Yqg5Z2X5LiLKXtcclxuICAgICAgICAgICAgICAgIGxldCBzY2FsZVggPSBzZWxmLm5vZGUuc2NhbGVYO1xyXG4gICAgICAgICAgICAgICAgbGV0IHNjYWxlWSA9IHNlbGYubm9kZS5zY2FsZVk7XHJcbiAgICAgICAgICAgICAgICBzZWxmLmJsb2NrX0luZm8ubm9kZS5nZXRDb21wb25lbnQoXCJCbG9ja1wiKS5yZXN0b3JlTm9tYWwodGhpcy5wb3NYLHRoaXMucG9zWSx0cnVlKTtcclxuICAgICAgICAgICAgICAgIGNjLnR3ZWVuKHNlbGYuYmxvY2tfSW5mby5ub2RlKVxyXG4gICAgICAgICAgICAgICAgLnRvKDAuMSx7cG9zaXRpb246cG9zLHNjYWxlWDpzY2FsZVg+MD8xOi0xLHNjYWxlWTpzY2FsZVk+MD8xOi0xfSlcclxuICAgICAgICAgICAgICAgIC5zdGFydCgpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGVsc2UgaWYoc2VsZi50eXBlID09IEJsb2NrVHlwZS7nspjlkIjlnZcpe1xyXG4gICAgICAgICAgICAgICAgc2VsZi5ibG9ja19JbmZvLm5vZGUuZ2V0Q29tcG9uZW50KFwiQmxvY2tcIikucmVzdG9yZU5vbWFsKHNlbGYuYmxvY2tfSW5mby5ub2RlLmdldENvbXBvbmVudChcIkJsb2NrXCIpLnBvc1gsXHJcbiAgICAgICAgICAgICAgICBzZWxmLmJsb2NrX0luZm8ubm9kZS5nZXRDb21wb25lbnQoXCJCbG9ja1wiKS5wb3NZLGZhbHNlKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBlbHNlIGlmKHNlbGYudHlwZSA9PSBCbG9ja1R5cGUu54K45by55Z2XKXtcclxuICAgICAgICAgICAgICAgIHRoaXMubm9kZS5nZXRDaGlsZEJ5TmFtZShcImJvb21cIikuZ2V0Q29tcG9uZW50KFwiQm9vbVwiKS5zdG9wQm9vbSgpO1xyXG4gICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICBNYXBDb25yb2xlci5faW5zdGFuY2UubmV4dExldmVsKCk7XHJcbiAgICAgICAgICAgIHRoaXMubm9kZS5hY3RpdmUgPSBmYWxzZTtcclxuICAgICAgICAgICAgdGhpcy5ub2RlLnJlbW92ZUZyb21QYXJlbnQoKTtcclxuICAgICAgICB9LCAyMDApO1xyXG4gICAgfVxyXG4gICAgIFxyXG4gICAgc2V0VmlicmF0ZSh0eXBlLCBjb3VudCl7XHJcbiAgICAgICAgLy8gcmV0dXJuO1xyXG4gICAgICAgIGlmKCFjYy5meC5HYW1lQ29uZmlnLkdNX0lORk8udmlicmF0ZU9wZW4pe1xyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmKGNvdW50ID09IDEpe1xyXG4gICAgICAgICAgICAvL0B0cy1pZ25vcmVcclxuICAgICAgICAgICAgaWYgKHR5cGVvZiB3eCAhPT0gJ3VuZGVmaW5lZCcgJiYgd3ggIT09IG51bGwpIHsgLy8g5Yik5pat5piv5ZCm5Zyo5b6u5L+h546v5aKDXHJcbiAgICAgICAgICAgICAgICAvL0B0cy1pZ25vcmVcclxuICAgICAgICAgICAgICAgIHd4LnZpYnJhdGVTaG9ydCh7XHJcbiAgICAgICAgICAgICAgICAgICAgdHlwZTogdHlwZSxcclxuICAgICAgICAgICAgICAgICAgICBzdWNjZXNzOiAoKSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICAgICAgICBmYWlsOiAoZXJyKSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuICAgICAgICBsZXQgdGltZSA9IDE1MDtcclxuICAgICAgICBmb3IobGV0IGk9MDsgaTw0OyBpKyspe1xyXG4gICAgICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgICAgICAgICAgIC8vQHRzLWlnbm9yZVxyXG4gICAgICAgICAgICAgICAgaWYgKHR5cGVvZiB3eCAhPT0gJ3VuZGVmaW5lZCcgJiYgd3ggIT09IG51bGwpIHsgLy8g5Yik5pat5piv5ZCm5Zyo5b6u5L+h546v5aKDXHJcbiAgICAgICAgICAgICAgICAgICAgLy9AdHMtaWdub3JlXHJcbiAgICAgICAgICAgICAgICAgICAgd3gudmlicmF0ZVNob3J0KHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgdHlwZTogdHlwZSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgc3VjY2VzczogKCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBmYWlsOiAoZXJyKSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH0sIHRpbWUqaSk7XHJcbiAgICAgICAgfVxyXG5cclxuICAgIH1cclxuXHJcblxyXG4gICAgc2V0TW92ZUNvcm5lcihkaXJhY3Rpb24pe1xyXG4gICAgICAgIHJldHVybjtcclxuICAgIH1cclxuXHJcbiAgICBjbXVwZGF0ZSgpIHtcclxuICAgICAgICBsZXQgY206YW55ID0gY2MuZGlyZWN0b3IuZ2V0Q29sbGlzaW9uTWFuYWdlcigpOyAgICAgICAgXHJcbiAgICAgICAgY20udXBkYXRlKCk7XHJcbiAgICB9XHJcblxyXG4gICAgcmVzdG9yZU5vbWFsKHBvc1gscG9zWSx0eXBlKXtcclxuICAgICAgICB0aGlzLnR5cGUgPSAwO1xyXG4gICAgICAgIHRoaXMuYmxvY2tfSW5mby5ub2RlID0gbnVsbDtcclxuICAgICAgICB0aGlzLm1vdmVTdGFjayA9IGZhbHNlOyBcclxuICAgICAgICB0aGlzLnBvc1ggPSBwb3NYO1xyXG4gICAgICAgIHRoaXMucG9zWSA9IHBvc1k7XHJcbiAgICAgICAgdGhpcy5zZXRNYXBCbG9jaygpO1xyXG4gICAgICAgIHRoaXMubGV2ZWwgPSA1MCArIHRoaXMucG9zWCAtIHRoaXMucG9zWSozO1xyXG4gICAgICAgIHRoaXMubm9kZS56SW5kZXggPSB0aGlzLmxldmVsO1xyXG4gICAgICAgIGxldCBqID0gMTAwMDtcclxuICAgICAgICBmb3IobGV0IGkgPTA7IGk8IHRoaXMubm9kZS5jaGlsZHJlbi5sZW5ndGg7IGkrKyl7XHJcbiAgICAgICAgICAgIGlmKHRoaXMubm9kZS5jaGlsZHJlbltpXS5uYW1lID09IFwiTmV3IE5vZGVcIil7XHJcbiAgICAgICAgICAgICAgICBqID0gaTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBpZihpID4gail7XHJcbiAgICAgICAgICAgICAgICB0aGlzLm5vZGUuY2hpbGRyZW5baV0uYWN0aXZlID0gZmFsc2U7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgaWYodHlwZSl7XHJcbiAgICAgICAgICAgIGZvcihsZXQgaT0wOyBpPHRoaXMubm9kZS5jaGlsZHJlbi5sZW5ndGg7IGkrKyl7XHJcbiAgICAgICAgICAgICAgICBpZih0aGlzLm5vZGUuY2hpbGRyZW5baV0ubmFtZSA9PSBcImxlZnRcIiB8fCB0aGlzLm5vZGUuY2hpbGRyZW5baV0ubmFtZSA9PSBcInJpZ2h0XCIgfHwgdGhpcy5ub2RlLmNoaWxkcmVuW2ldLm5hbWUgPT0gXCJ0b3BcIiB8fCB0aGlzLm5vZGUuY2hpbGRyZW5baV0ubmFtZSA9PSBcImRvd25cIilcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLm5vZGUuY2hpbGRyZW5baV0uYWN0aXZlID0gdHJ1ZTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLm5vZGUub24oY2MuTm9kZS5FdmVudFR5cGUuVE9VQ0hfU1RBUlQsIHRoaXMudG91Y2hTdGFydCwgdGhpcyk7XHJcbiAgICAgICAgdGhpcy5ub2RlLm9uKGNjLk5vZGUuRXZlbnRUeXBlLlRPVUNIX01PVkUsIHRoaXMudG91Y2hNb3ZlLCB0aGlzKTtcclxuICAgICAgICB0aGlzLm5vZGUub24oY2MuTm9kZS5FdmVudFR5cGUuVE9VQ0hfQ0FOQ0VMLCB0aGlzLnRvdWNoRW5kLCB0aGlzKTtcclxuICAgICAgICB0aGlzLm5vZGUub24oY2MuTm9kZS5FdmVudFR5cGUuVE9VQ0hfRU5ELCB0aGlzLnRvdWNoRW5kLCB0aGlzKTtcclxuICAgICAgICB0aGlzLm5vZGVbJ190b3VjaExpc3RlbmVyJ10uc2V0U3dhbGxvd1RvdWNoZXMoZmFsc2UpO1xyXG4gICAgICAgIHRoaXMuaGl0ID0gbmV3IGNjLk5vZGUoKTtcclxuICAgICAgICB0aGlzLmhpdC5hZGRDb21wb25lbnQoY2MuU3ByaXRlKTtcclxuICAgICAgICB0aGlzLmhpdC5wYXJlbnQgPSB0aGlzLm5vZGU7XHJcbiAgICAgICAgbGV0IG5hbWUgPSBcInh6X1wiK3RoaXMuYmxvY2tfSW5mby5ibG9jaztcclxuICAgICAgICB0aGlzLmhpdC5nZXRDb21wb25lbnQoY2MuU3ByaXRlKS5zcHJpdGVGcmFtZSA9IHRoaXMuaWNlX1Nwcml0ZUZyYW1lLl9zcHJpdGVGcmFtZXNbbmFtZV07XHJcbiAgICAgICAgdGhpcy5oaXQuc2V0QW5jaG9yUG9pbnQodGhpcy5ub2RlLmFuY2hvclgsdGhpcy5ub2RlLmFuY2hvclkpO1xyXG4gICAgICAgIHRoaXMuaGl0LnNldFBvc2l0aW9uKDEzLC0xMSk7XHJcbiAgICAgICAgaWYodGhpcy5oaXQuYW5jaG9yWCA9PSAwLjUpIHRoaXMuaGl0LnNldFBvc2l0aW9uKDAsLTExKTtcclxuICAgICAgICBlbHNlIGlmKHRoaXMuaGl0LmFuY2hvclggPT0gMC4zMykgdGhpcy5oaXQuc2V0UG9zaXRpb24oLTEzLC0xMSk7XHJcbiAgICAgICAgZWxzZSBpZih0aGlzLmhpdC5hbmNob3JYID09IDAuNjYpIHRoaXMuaGl0LnNldFBvc2l0aW9uKDIsLTkpO1xyXG4gICAgICAgIHRoaXMuaGl0LmFjdGl2ZSA9IGZhbHNlO1xyXG4gICAgfVxyXG5cclxuICAgIC8v5Ya757uT54q25oCB5oGi5aSN5Li65bi46KeE54q25oCBXHJcbiAgICByZXNldEZyZWV6ZSgpe1xyXG4gICAgICAgIHRoaXMudHlwZSA9IDA7XHJcbiAgICAgICAgdGhpcy5ibG9ja19JbmZvLnR5cGUgPSAwO1xyXG4gICAgICAgIGxldCBuYW1lID0gdGhpcy5jb2xvcitcImNvbG9yXCIrdGhpcy5ibG9ja19JbmZvLmJsb2NrO1xyXG4gICAgICAgIGxldCBudW1iZXIgPSBNYXRoLmZsb29yKCh0aGlzLmNvbG9yLTEpLzIpO1xyXG4gICAgICAgIGxldCBibG9ja1Nwcml0ZUZyYW1lID0gTWFwQ29ucm9sZXIuX2luc3RhbmNlLkJsb2NrX0NvbG9yW251bWJlcl0uX3Nwcml0ZUZyYW1lcztcclxuICAgICAgICB2YXIgc3ByaXRlRnJhbWUgPSBibG9ja1Nwcml0ZUZyYW1lW25hbWVdO1xyXG4gICAgICAgIHRoaXMubm9kZS5nZXRDaGlsZEJ5TmFtZShcImljb25cIikuZ2V0Q29tcG9uZW50KGNjLlNwcml0ZSkuc3ByaXRlRnJhbWUgPSBzcHJpdGVGcmFtZTtcclxuICAgIH1cclxuXHJcbiAgICBpbml0QmxvY2tzKCl7XHJcbiAgICAgICAgdGhpcy5hbGxCbG9ja3MgPSBbXTtcclxuICAgICAgICBzd2l0Y2godGhpcy5ibG9ja19JbmZvLmJsb2NrKXtcclxuICAgICAgICAgICAgY2FzZSAwOlxyXG4gICAgICAgICAgICAgICAgbGV0IHBvcyA9IGNjLnYyKDAsMCk7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmFsbEJsb2NrcyA9IFtwb3NdO1xyXG4gICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgIGNhc2UgMTpcclxuICAgICAgICAgICAgICAgIGxldCBwb3MxID0gY2MudjIoMCwwKTtcclxuICAgICAgICAgICAgICAgIGxldCBwb3MyID0gY2MudjIoLTEsMCk7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmFsbEJsb2NrcyA9IFtwb3MxLHBvczJdO1xyXG4gICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgIGNhc2UgMjpcclxuICAgICAgICAgICAgICAgIGxldCBwb3MzID0gY2MudjIoMCwwKTtcclxuICAgICAgICAgICAgICAgIGxldCBwb3M0ID0gY2MudjIoMCwxKTtcclxuICAgICAgICAgICAgICAgIHRoaXMuYWxsQmxvY2tzID0gW3BvczMscG9zNF07XHJcbiAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgY2FzZSAzOlxyXG4gICAgICAgICAgICAgICAgbGV0IHBvczUgPSBjYy52MigwLDApO1xyXG4gICAgICAgICAgICAgICAgbGV0IHBvczYgPSBjYy52MigtMSwwKTtcclxuICAgICAgICAgICAgICAgIGxldCBwb3M3ID0gY2MudjIoLTIsMCk7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmFsbEJsb2NrcyA9IFtwb3M1LHBvczYscG9zN107XHJcbiAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgY2FzZSA0OlxyXG4gICAgICAgICAgICAgICAgbGV0IHBvczggPSBjYy52MigwLDApO1xyXG4gICAgICAgICAgICAgICAgbGV0IHBvczkgPSBjYy52MigwLDEpO1xyXG4gICAgICAgICAgICAgICAgbGV0IHBvczEwID0gY2MudjIoMCwyKTtcclxuICAgICAgICAgICAgICAgIHRoaXMuYWxsQmxvY2tzID0gW3BvczgscG9zOSxwb3MxMF07XHJcbiAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgY2FzZSA1OlxyXG4gICAgICAgICAgICAgICAgbGV0IHBvczExID0gY2MudjIoMCwwKTtcclxuICAgICAgICAgICAgICAgIGxldCBwb3MxMiA9IGNjLnYyKC0xLDApO1xyXG4gICAgICAgICAgICAgICAgbGV0IHBvczEzID0gY2MudjIoLTEsMSk7ICAgIFxyXG4gICAgICAgICAgICAgICAgbGV0IHBvczE0ID0gY2MudjIoMCwxKTtcclxuICAgICAgICAgICAgICAgIHRoaXMuYWxsQmxvY2tzID0gW3BvczExLHBvczEyLHBvczEzLHBvczE0XTtcclxuICAgICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICBjYXNlIDY6XHJcbiAgICAgICAgICAgICAgICBsZXQgcG9zMTUgPSBjYy52MigwLDApO1xyXG4gICAgICAgICAgICAgICAgbGV0IHBvczE2ID0gY2MudjIoMCwxKTtcclxuICAgICAgICAgICAgICAgIGxldCBwb3MxNyA9IGNjLnYyKDAsMik7XHJcbiAgICAgICAgICAgICAgICBsZXQgcG9zMTggPSBjYy52MigtMSwyKTtcclxuICAgICAgICAgICAgICAgIHRoaXMuYWxsQmxvY2tzID0gW3BvczE1LHBvczE2LHBvczE3LHBvczE4XTtcclxuICAgICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICBjYXNlIDc6XHJcbiAgICAgICAgICAgICAgICBsZXQgcG9zMTkgPSBjYy52MigwLDApO1xyXG4gICAgICAgICAgICAgICAgbGV0IHBvczIwID0gY2MudjIoMCwxKTtcclxuICAgICAgICAgICAgICAgIGxldCBwb3MyMSA9IGNjLnYyKC0xLDEpO1xyXG4gICAgICAgICAgICAgICAgbGV0IHBvczIyID0gY2MudjIoLTIsMSk7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmFsbEJsb2NrcyA9IFtwb3MxOSxwb3MyMCxwb3MyMSxwb3MyMl07XHJcbiAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgY2FzZSA4OlxyXG4gICAgICAgICAgICAgICAgbGV0IHBvczIzID0gY2MudjIoMCwwKTtcclxuICAgICAgICAgICAgICAgIGxldCBwb3MyNCA9IGNjLnYyKC0xLDApO1xyXG4gICAgICAgICAgICAgICAgbGV0IHBvczI1ID0gY2MudjIoLTEsMSk7XHJcbiAgICAgICAgICAgICAgICBsZXQgcG9zMjYgPSBjYy52MigtMSwyKTtcclxuICAgICAgICAgICAgICAgIHRoaXMuYWxsQmxvY2tzID0gW3BvczIzLHBvczI0LHBvczI1LHBvczI2XTtcclxuICAgICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICBjYXNlIDk6XHJcbiAgICAgICAgICAgICAgICBsZXQgcG9zMjcgPSBjYy52MigwLDApO1xyXG4gICAgICAgICAgICAgICAgbGV0IHBvczI4ID0gY2MudjIoLTEsMCk7XHJcbiAgICAgICAgICAgICAgICBsZXQgcG9zMjkgPSBjYy52MigtMiwwKTtcclxuICAgICAgICAgICAgICAgIGxldCBwb3MzMCA9IGNjLnYyKDAsMSk7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmFsbEJsb2NrcyA9IFtwb3MyNyxwb3MyOCxwb3MyOSxwb3MzMF07XHJcbiAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgY2FzZSAxMDpcclxuICAgICAgICAgICAgICAgIGxldCBwb3MzMSA9IGNjLnYyKDAsMCk7XHJcbiAgICAgICAgICAgICAgICBsZXQgcG9zMzIgPSBjYy52MigxLDIpO1xyXG4gICAgICAgICAgICAgICAgbGV0IHBvczMzID0gY2MudjIoMCwxKTtcclxuICAgICAgICAgICAgICAgIGxldCBwb3MzNCA9IGNjLnYyKDAsMik7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmFsbEJsb2NrcyA9IFtwb3MzMSxwb3MzMixwb3MzMyxwb3MzNF07XHJcbiAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgY2FzZSAxMTpcclxuICAgICAgICAgICAgICAgIGxldCBwb3MzNSA9IGNjLnYyKDAsMCk7XHJcbiAgICAgICAgICAgICAgICBsZXQgcG9zMzYgPSBjYy52MigyLDEpO1xyXG4gICAgICAgICAgICAgICAgbGV0IHBvczM3ID0gY2MudjIoMSwxKTtcclxuICAgICAgICAgICAgICAgIGxldCBwb3MzOCA9IGNjLnYyKDAsMSk7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmFsbEJsb2NrcyA9IFtwb3MzNSxwb3MzNixwb3MzNyxwb3MzOF07XHJcbiAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgY2FzZSAxMjpcclxuICAgICAgICAgICAgICAgIGxldCBwb3MzOSA9IGNjLnYyKDAsMCk7XHJcbiAgICAgICAgICAgICAgICBsZXQgcG9zNDAgPSBjYy52MigwLDEpO1xyXG4gICAgICAgICAgICAgICAgbGV0IHBvczQxID0gY2MudjIoMCwyKTtcclxuICAgICAgICAgICAgICAgIGxldCBwb3M0MiA9IGNjLnYyKC0xLDApO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5hbGxCbG9ja3MgPSBbcG9zMzkscG9zNDAscG9zNDEscG9zNDJdO1xyXG4gICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgIGNhc2UgMTM6XHJcbiAgICAgICAgICAgICAgICBsZXQgcG9zNDMgPSBjYy52MigwLDApO1xyXG4gICAgICAgICAgICAgICAgbGV0IHBvczQ0ID0gY2MudjIoLTEsMCk7XHJcbiAgICAgICAgICAgICAgICBsZXQgcG9zNDUgPSBjYy52MigtMiwwKTtcclxuICAgICAgICAgICAgICAgIGxldCBwb3M0NiA9IGNjLnYyKC0yLDEpO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5hbGxCbG9ja3MgPSBbcG9zNDMscG9zNDQscG9zNDUscG9zNDZdO1xyXG4gICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgIGNhc2UgMTQ6XHJcbiAgICAgICAgICAgICAgICBsZXQgcG9zNDcgPSBjYy52MigwLDApO1xyXG4gICAgICAgICAgICAgICAgbGV0IHBvczQ4ID0gY2MudjIoMCwxKTtcclxuICAgICAgICAgICAgICAgIGxldCBwb3M0OSA9IGNjLnYyKC0xLDEpO1xyXG4gICAgICAgICAgICAgICAgbGV0IHBvczUwID0gY2MudjIoMSwxKTtcclxuICAgICAgICAgICAgICAgIHRoaXMuYWxsQmxvY2tzID0gW3BvczQ3LHBvczQ4LHBvczQ5LHBvczUwXTtcclxuICAgICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICBjYXNlIDE1OlxyXG4gICAgICAgICAgICAgICAgbGV0IHBvczUxID0gY2MudjIoMCwwKTtcclxuICAgICAgICAgICAgICAgIGxldCBwb3M1MiA9IGNjLnYyKC0xLDApO1xyXG4gICAgICAgICAgICAgICAgbGV0IHBvczUzID0gY2MudjIoLTIsMCk7XHJcbiAgICAgICAgICAgICAgICBsZXQgcG9zNTQgPSBjYy52MigtMSwxKTtcclxuICAgICAgICAgICAgICAgIHRoaXMuYWxsQmxvY2tzID0gW3BvczUxLHBvczUyLHBvczUzLHBvczU0XTtcclxuICAgICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICBjYXNlIDE2OlxyXG4gICAgICAgICAgICAgICAgbGV0IHBvczU1ID0gY2MudjIoMCwwKTtcclxuICAgICAgICAgICAgICAgIGxldCBwb3M1NiA9IGNjLnYyKDEsMSk7XHJcbiAgICAgICAgICAgICAgICBsZXQgcG9zNTcgPSBjYy52MigwLDEpO1xyXG4gICAgICAgICAgICAgICAgbGV0IHBvczU4ID0gY2MudjIoMCwyKTtcclxuICAgICAgICAgICAgICAgIHRoaXMuYWxsQmxvY2tzID0gW3BvczU1LHBvczU2LHBvczU3LHBvczU4XTtcclxuICAgICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICBjYXNlIDE3OlxyXG4gICAgICAgICAgICAgICAgbGV0IHBvczU5ID0gY2MudjIoMCwwKTtcclxuICAgICAgICAgICAgICAgIGxldCBwb3M2MCA9IGNjLnYyKDAsMSk7XHJcbiAgICAgICAgICAgICAgICBsZXQgcG9zNjEgPSBjYy52MigwLDIpO1xyXG4gICAgICAgICAgICAgICAgbGV0IHBvczYyID0gY2MudjIoLTEsMSk7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmFsbEJsb2NrcyA9IFtwb3M1OSxwb3M2MCxwb3M2MSxwb3M2Ml07XHJcbiAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgY2FzZSAxODpcclxuICAgICAgICAgICAgICAgIGxldCBwb3M2MyA9IGNjLnYyKDAsMCk7XHJcbiAgICAgICAgICAgICAgICBsZXQgcG9zNjQgPSBjYy52MigwLDEpO1xyXG4gICAgICAgICAgICAgICAgbGV0IHBvczY1ID0gY2MudjIoMCwyKTtcclxuICAgICAgICAgICAgICAgIGxldCBwb3M2NiA9IGNjLnYyKDEsMSk7XHJcbiAgICAgICAgICAgICAgICBsZXQgcG9zNjcgPSBjYy52MigtMSwxKTtcclxuICAgICAgICAgICAgICAgIHRoaXMuYWxsQmxvY2tzID0gW3BvczYzLHBvczY0LHBvczY1LHBvczY2LHBvczY3XTtcclxuICAgICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICBjYXNlIDE5OlxyXG4gICAgICAgICAgICAgICAgbGV0IHBvczY4ID0gY2MudjIoMCwwKTtcclxuICAgICAgICAgICAgICAgIGxldCBwb3M2OSA9IGNjLnYyKDAsMSk7XHJcbiAgICAgICAgICAgICAgICBsZXQgcG9zNzAgPSBjYy52MigtMSwwKTtcclxuICAgICAgICAgICAgICAgIHRoaXMuYWxsQmxvY2tzID0gW3BvczY4LHBvczY5LHBvczcwXTtcclxuICAgICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICBjYXNlIDIwOlxyXG4gICAgICAgICAgICAgICAgbGV0IHBvczcxID0gY2MudjIoMCwwKTtcclxuICAgICAgICAgICAgICAgIGxldCBwb3M3MiA9IGNjLnYyKC0xLDApO1xyXG4gICAgICAgICAgICAgICAgbGV0IHBvczczID0gY2MudjIoLTEsMSk7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmFsbEJsb2NrcyA9IFtwb3M3MSxwb3M3Mixwb3M3M107XHJcbiAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgY2FzZSAyMTpcclxuICAgICAgICAgICAgICAgIGxldCBwb3M3NCA9IGNjLnYyKDAsMCk7XHJcbiAgICAgICAgICAgICAgICBsZXQgcG9zNzUgPSBjYy52MigwLDEpO1xyXG4gICAgICAgICAgICAgICAgbGV0IHBvczc2ID0gY2MudjIoMSwxKTtcclxuICAgICAgICAgICAgICAgIHRoaXMuYWxsQmxvY2tzID0gW3Bvczc0LHBvczc1LHBvczc2XTtcclxuICAgICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICBjYXNlIDIyOlxyXG4gICAgICAgICAgICAgICAgbGV0IHBvczc3ID0gY2MudjIoMCwwKTtcclxuICAgICAgICAgICAgICAgIGxldCBwb3M3OCA9IGNjLnYyKDAsMSk7XHJcbiAgICAgICAgICAgICAgICBsZXQgcG9zNzkgPSBjYy52MigtMSwxKTtcclxuICAgICAgICAgICAgICAgIHRoaXMuYWxsQmxvY2tzID0gW3Bvczc3LHBvczc4LHBvczc5XTtcclxuICAgICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgc2V0TWFwQmxvY2soKXtcclxuICAgICAgICBpZih0aGlzLmFsbEJsb2Nrcy5sZW5ndGggPiAwKXtcclxuICAgICAgICAgICAgZm9yKGxldCBpPTA7IGk8dGhpcy5hbGxCbG9ja3MubGVuZ3RoOyBpKyspe1xyXG4gICAgICAgICAgICAgICAgbGV0IHBvcyA9IHRoaXMuYWxsQmxvY2tzW2ldO1xyXG4gICAgICAgICAgICAgICAgbGV0IHggPSB0aGlzLnBvc1ggKyBwb3MueDtcclxuICAgICAgICAgICAgICAgIGxldCB5ID0gdGhpcy5wb3NZICsgcG9zLnk7IFxyXG4gICAgICAgICAgICAgICAgTWFwQ29ucm9sZXIuX2luc3RhbmNlLm1hcEJsb2Nrc1dhbGxbeF1beV0uZ2V0Q29tcG9uZW50KFwiTWFwQmxvY2tcIikuYmxvY2tfSWQgPSB0aGlzLm5vZGUudXVpZDtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICByZW1vdmVNYXBCbG9jaygpe1xyXG4gICAgICAgIGlmKHRoaXMucG9zWCA9PSAwICYmIHRoaXMucG9zWSA9PSAwKXtcclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZih0aGlzLmFsbEJsb2Nrcyl7XHJcbiAgICAgICAgICAgIGlmKHRoaXMuYWxsQmxvY2tzLmxlbmd0aCA+IDApe1xyXG4gICAgICAgICAgICAgICAgZm9yKGxldCBpPTA7IGk8dGhpcy5hbGxCbG9ja3MubGVuZ3RoOyBpKyspe1xyXG4gICAgICAgICAgICAgICAgICAgIGlmKHRoaXMuYWxsQmxvY2tzW2ldKXtcclxuICAgICAgICAgICAgICAgICAgICAgICAgbGV0IHBvcyA9IHRoaXMuYWxsQmxvY2tzW2ldO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBsZXQgeCA9IHRoaXMucG9zWCArIHBvcy54O1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBsZXQgeSA9IHRoaXMucG9zWSArIHBvcy55OyBcclxuICAgICAgICAgICAgICAgICAgICAgICAgaWYoTWFwQ29ucm9sZXIuX2luc3RhbmNlLm1hcEJsb2Nrc1dhbGxbeF1beV0pe1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYoTWFwQ29ucm9sZXIuX2luc3RhbmNlLm1hcEJsb2Nrc1dhbGxbeF1beV0uZ2V0Q29tcG9uZW50KFwiTWFwQmxvY2tcIikpXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTWFwQ29ucm9sZXIuX2luc3RhbmNlLm1hcEJsb2Nrc1dhbGxbeF1beV0uZ2V0Q29tcG9uZW50KFwiTWFwQmxvY2tcIikuYmxvY2tfSWQgPSBcIlwiO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfSBcclxuICAgICAgICAgICAgfSBcclxuICAgICAgICB9XHJcblxyXG4gICAgfVxyXG4gICAgLy/lj6DliqDlnZfvvIzkvY3nva7lt67lvILvvIzmoKHlh4bkvY3nva5cclxuICAgIGdldFN0YWNraW5nUG9zKCl7XHJcbiAgICAgICAgc3dpdGNoKHRoaXMubm9kZS5uYW1lKXtcclxuICAgICAgICAgICAgY2FzZSBcImJsb2NrMFwiOlxyXG4gICAgICAgICAgICAgICAgcmV0dXJuIGNjLnYyKC0yMSwyMik7XHJcbiAgICAgICAgICAgIGNhc2UgXCJibG9jazFcIjpcclxuICAgICAgICAgICAgICAgIHJldHVybiBjYy52MigtMzYsMjMpO1xyXG4gICAgICAgICAgICBjYXNlIFwiYmxvY2syXCI6XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gY2MudjIoLTE4LDQwKTtcclxuICAgICAgICAgICAgY2FzZSBcImJsb2NrM1wiOlxyXG4gICAgICAgICAgICAgICAgcmV0dXJuIGNjLnYyKC01OSwyNSk7XHJcbiAgICAgICAgICAgIGNhc2UgXCJibG9jazRcIjpcclxuICAgICAgICAgICAgICAgIHJldHVybiBjYy52MigtMTksNTcpO1xyXG4gICAgICAgICAgICBjYXNlIFwiYmxvY2s1XCI6XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gY2MudjIoLTM2LDM4KTtcclxuICAgICAgICAgICAgY2FzZSBcImJsb2NrNlwiOlxyXG4gICAgICAgICAgICAgICAgcmV0dXJuIGNjLnYyKC0xOSw5Nyk7XHJcbiAgICAgICAgICAgIGNhc2UgXCJibG9jazdcIjpcclxuICAgICAgICAgICAgICAgIHJldHVybiBjYy52MigtMTksNjEpO1xyXG4gICAgICAgICAgICBjYXNlIFwiYmxvY2s4XCI6XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gY2MudjIoLTU1LDI0KTtcclxuICAgICAgICAgICAgY2FzZSBcImJsb2NrOVwiOlxyXG4gICAgICAgICAgICAgICAgcmV0dXJuIGNjLnYyKC0yMCwyNCk7XHJcbiAgICAgICAgICAgIGNhc2UgXCJibG9jazEwXCI6XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gY2MudjIoLTE3LDk2KTtcclxuICAgICAgICAgICAgY2FzZSBcImJsb2NrMTFcIjpcclxuICAgICAgICAgICAgICAgIHJldHVybiBjYy52MigtMTcsNTgpO1xyXG4gICAgICAgICAgICBjYXNlIFwiYmxvY2sxMlwiOlxyXG4gICAgICAgICAgICAgICAgcmV0dXJuIGNjLnYyKC0yMCwyNCk7XHJcbiAgICAgICAgICAgIGNhc2UgXCJibG9jazEzXCI6XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gY2MudjIoLTkyLDI1KTtcclxuICAgICAgICAgICAgY2FzZSBcImJsb2NrMTRcIjpcclxuICAgICAgICAgICAgICAgIHJldHVybiBjYy52MigtMTgsNjApO1xyXG4gICAgICAgICAgICBjYXNlIFwiYmxvY2sxNVwiOlxyXG4gICAgICAgICAgICAgICAgcmV0dXJuIGNjLnYyKC01OCwyNCk7XHJcbiAgICAgICAgICAgIGNhc2UgXCJibG9jazE2XCI6XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gY2MudjIoLTIwLDYwKTtcclxuICAgICAgICAgICAgY2FzZSBcImJsb2NrMTdcIjpcclxuICAgICAgICAgICAgICAgIHJldHVybiBjYy52MigtMTcsNjApO1xyXG4gICAgICAgICAgICBjYXNlIFwiYmxvY2sxOFwiOlxyXG4gICAgICAgICAgICAgICAgcmV0dXJuIGNjLnYyKC0xNyw2MCk7XHJcbiAgICAgICAgICAgIGNhc2UgXCJibG9jazE5XCI6XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gY2MudjIoLTIwLDI0KTtcclxuICAgICAgICAgICAgY2FzZSBcImJsb2NrMjBcIjpcclxuICAgICAgICAgICAgICAgIHJldHVybiBjYy52MigtNTQsMjUpO1xyXG4gICAgICAgICAgICBjYXNlIFwiYmxvY2syMVwiOlxyXG4gICAgICAgICAgICAgICAgcmV0dXJuIGNjLnYyKC0xNyw2MCk7XHJcbiAgICAgICAgICAgIGNhc2UgXCJibG9jazIyXCI6XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gY2MudjIoLTE3LDYwKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgdXBkYXRlIChkdDogbnVtYmVyKSB7XHJcbiAgICAgICAgaWYgKHRoaXMuaXNUb3VjaCAmJiB0aGlzLnRvdWNoRGVsdGEubWFnKCkgPiAwKSB7XHJcbiAgICAgICAgICAgICAgICAvL3RoaXMubW92ZUxlZnQgPSB0aGlzLm1vdmVSaWdodCA9IHRoaXMubW92ZVVwID0gdGhpcy5tb3ZlRG93biA9IHRydWU7XHJcbiAgICAgICAgICAgICAgICBjb25zdCBkZWx0YSA9IHRoaXMudG91Y2hEZWx0YTtcclxuICAgICAgICAgICAgICAgIGNvbnN0IG5ld1ggPSB0aGlzLm5vZGUueCArIGRlbHRhLng7XHJcbiAgICAgICAgICAgICAgICBjb25zdCBuZXdZID0gdGhpcy5ub2RlLnkgKyBkZWx0YS55O1xyXG4gICAgICAgICAgICAgICAgY29uc3QgZGlzdGFuY2UgPSBNYXRoLnNxcnQoTWF0aC5wb3cobmV3WCAtIHRoaXMubm9kZS54LCAyKSArIE1hdGgucG93KG5ld1kgLSB0aGlzLm5vZGUueSwgMikpO1xyXG4gICAgICAgICAgICAgICAgbGV0IG1hZyA9IE1hdGgucm91bmQoZGVsdGEubWFnKCkpO1xyXG5cclxuICAgICAgICAgICAgICAgIGlmKHRoaXMubW92ZVkgPT09IDEpe1xyXG4gICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLnRvdWNoUG9pbnRZIDw9IHRoaXMubm9kZS55ICsgdGhpcy5ub2RlLmhlaWdodC8yKXtcclxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5tb3ZlWSA9IDA7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfSBlbHNlIGlmKHRoaXMubW92ZVkgPT09IC0xKXtcclxuICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy50b3VjaFBvaW50WSA+PSB0aGlzLm5vZGUueSArIHRoaXMubm9kZS5oZWlnaHQvMil7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMubW92ZVkgPSAwO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgICAgICBpZih0aGlzLm1vdmVYID09PSAxKXtcclxuICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy50b3VjaFBvaW50WCA8PSB0aGlzLm5vZGUueCAtIHRoaXMubm9kZS53aWR0aC8yKXtcclxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5tb3ZlWCA9IDA7XHJcbiAgICAgICAgICAgICAgICAgICAgfSBcclxuICAgICAgICAgICAgICAgICAgICBlbHNle1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH0gZWxzZSBpZih0aGlzLm1vdmVYID09PSAtMSl7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMudG91Y2hQb2ludFggPj0gdGhpcy5ub2RlLnggLSB0aGlzLm5vZGUud2lkdGgvMil7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMubW92ZVggPSAwO1xyXG4gICAgICAgICAgICAgICAgICAgIH0gXHJcbiAgICAgICAgICAgICAgICAgICAgZWxzZXtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBpZiAoZGlzdGFuY2UgPiAxMDApIHtcclxuICAgICAgICAgICAgICAgICAgICBtYWcgPSAxMDtcclxuICAgICAgICAgICAgICAgICAgICBjb25zdCBzcGVlZFNjYWxlID0gMC41OyBcclxuICAgICAgICAgICAgICAgICAgICBkZWx0YS54ICo9IHNwZWVkU2NhbGU7XHJcbiAgICAgICAgICAgICAgICAgICAgZGVsdGEueSAqPSBzcGVlZFNjYWxlO1xyXG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICBpZiAobWFnID4gNSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBtYWcgPSBNYXRoLmZsb29yKG1hZyAvIDUpO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgICAgICAvLyBtYWcgPSAyO1xyXG4gICAgICAgICAgICAgICAgY29uc3Qgc3RlcHggPSBkZWx0YS54IC8gbWFnO1xyXG4gICAgICAgICAgICAgICAgY29uc3Qgc3RlcHkgPSBkZWx0YS55IC8gbWFnO1xyXG5cclxuICAgICAgICAgICAgICAgIGZvciAobGV0IGluZGV4ID0gMDsgaW5kZXggPCBtYWc7IGluZGV4KyspIHtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLm1vdmVDb3JuZXIgPSAwO1xyXG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHRlbXBYID0gdGhpcy5ub2RlLnggKyBzdGVweDtcclxuICAgICAgICAgICAgICAgICAgICBjb25zdCB0ZW1wWSA9IHRoaXMubm9kZS55ICsgc3RlcHk7XHJcblxyXG4gICAgICAgICAgICAgICAgICAgIGlmICghdGhpcy5jaGVja0NvbGxpc2lvbikge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBpZih0aGlzLnR5cGUgIT09IDggJiYgdGhpcy50eXBlICE9PSAxMCl7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLm5vZGUueCA9IE1hdGgucm91bmQodGVtcFgpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB9IFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBpZih0aGlzLnR5cGUgIT09IDcgJiYgdGhpcy50eXBlICE9PSAxMCl7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLm5vZGUueSA9ICBNYXRoLnJvdW5kKHRlbXBZKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgfSBcclxuICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBpc1hNYWluID0gTWF0aC5hYnMoc3RlcHgpID4gTWF0aC5hYnMoc3RlcHkpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoaXNYTWFpbikge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMubm9kZS54ID4gdGVtcFgpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy5tb3ZlTGVmdCAmJiB0aGlzLm1vdmVYID09PSAwICYmIHRoaXMudHlwZSAhPT0gOCAmJiB0aGlzLnR5cGUgIT09IDEwKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMubm9kZS54ID0gdGVtcFg7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmKHRoaXMubW92ZVggIT09IDApe1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLm1vdmVYID0gMDtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKHRoaXMubm9kZS54IDw9IHRlbXBYKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMubW92ZVJpZ2h0ICYmIHRoaXMubW92ZVggPT09IDAgJiYgdGhpcy50eXBlICE9PSA4ICYmIHRoaXMudHlwZSAhPT0gMTApIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5ub2RlLnggPSB0ZW1wWDtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYodGhpcy5tb3ZlWCAhPT0gMCl7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMubW92ZVggPSAwO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy5ub2RlLnkgPiB0ZW1wWSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLm1vdmVEb3duICYmIHRoaXMubW92ZVkgPT09IDAgJiYgdGhpcy50eXBlICE9PSA3ICYmIHRoaXMudHlwZSAhPT0gMTApIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5ub2RlLnkgPSB0ZW1wWTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYodGhpcy5tb3ZlWSAhPT0gMCl7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMubW92ZVkgPSAwO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAodGhpcy5ub2RlLnkgPD0gdGVtcFkpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy5tb3ZlVXAgJiYgdGhpcy5tb3ZlWSA9PT0gMCAmJiB0aGlzLnR5cGUgIT09IDcgJiYgdGhpcy50eXBlICE9PSAxMCkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLm5vZGUueSA9IHRlbXBZO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZih0aGlzLm1vdmVZICE9PSAwKXtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5tb3ZlWSA9IDA7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMubm9kZS55ID4gdGVtcFkpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy5tb3ZlRG93biAmJiB0aGlzLm1vdmVZID09PSAwICYmIHRoaXMudHlwZSAhPT0gNyAmJiB0aGlzLnR5cGUgIT09IDEwKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMubm9kZS55ID0gdGVtcFk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmKHRoaXMubW92ZVkgIT09IDApe1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLm1vdmVZID0gMDtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKHRoaXMubm9kZS55IDw9IHRlbXBZKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMubW92ZVVwICYmIHRoaXMubW92ZVkgPT09IDAgJiYgdGhpcy50eXBlICE9PSA3ICYmIHRoaXMudHlwZSAhPT0gMTApIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5ub2RlLnkgPSB0ZW1wWTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYodGhpcy5tb3ZlWSAhPT0gMCl7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMubW92ZVkgPSAwO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy5ub2RlLnggPiB0ZW1wWCkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLm1vdmVMZWZ0ICYmIHRoaXMubW92ZVggPT09IDAgJiYgdGhpcy50eXBlICE9PSA4ICYmIHRoaXMudHlwZSAhPT0gMTApIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5ub2RlLnggPSB0ZW1wWDtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYodGhpcy5tb3ZlWCAhPT0gMCl7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMubW92ZVggPSAwO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAodGhpcy5ub2RlLnggPD0gdGVtcFgpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy5tb3ZlUmlnaHQgJiYgdGhpcy5tb3ZlWCA9PT0gMCAmJiB0aGlzLnR5cGUgIT09IDggJiYgdGhpcy50eXBlICE9PSAxMCkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLm5vZGUueCA9IHRlbXBYO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZih0aGlzLm1vdmVYICE9PSAwKXtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5tb3ZlWCA9IDA7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgTFFDb2xsaWRlU3lzdGVtLnVwZGF0ZV9sb2dpYyhkdCk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAvLyDnp7vliqjlrozmiJDlkI7ph43nva7op6bmkbjlop7ph49cclxuICAgICAgICAgICAgICAgIHRoaXMudG91Y2hEZWx0YSA9IGNjLnYyKDAsIDApOyBcclxuICAgICAgICAgICAgIFxyXG4gICAgICAgIH1cclxuICAgICAgICBpZih0aGlzLnR5cGUgPT0gQmxvY2tUeXBlLuWPoOWKoOWdl+S4iiAmJiB0aGlzLm1vdmVTdGFjayA9PSB0cnVlKXtcclxuICAgICAgICAgICAgaWYodGhpcy5zdGFja2luZy54ICE9IDAgfHwgdGhpcy5zdGFja2luZy55IT0gMCl7XHJcbiAgICAgICAgICAgICAgICB0aGlzLm5vZGUueCA9IHRoaXMuYmxvY2tfSW5mby5ub2RlLnggKyB0aGlzLnN0YWNraW5nLng7XHJcbiAgICAgICAgICAgICAgICB0aGlzLm5vZGUueSA9IHRoaXMuYmxvY2tfSW5mby5ub2RlLnkgKyB0aGlzLnN0YWNraW5nLnk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgaWYodGhpcy5ibG9ja19JbmZvKXtcclxuICAgICAgICAgICAgaWYodGhpcy5ibG9ja19JbmZvLm5vZGUgIT0gbnVsbCl7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYodGhpcy50eXBlID09IEJsb2NrVHlwZS7nspjlkIjlnZcpe1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBpZih0aGlzLmFkaGVzaXZlLnggIT0wICYmIHRoaXMuYWRoZXNpdmUueSE9MCAmJiB0aGlzLmJsb2NrX0luZm8ubm9kZSE9IG51bGwpe1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5ibG9ja19JbmZvLm5vZGUueCA9IHRoaXMubm9kZS54IC0gdGhpcy5hZGhlc2l2ZS54O1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5ibG9ja19JbmZvLm5vZGUueSA9IHRoaXMubm9kZS55IC0gdGhpcy5hZGhlc2l2ZS55O1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmKHRoaXMuaXNUb3VjaCA9PSAgdHJ1ZSAmJiB0aGlzLmJsb2NrX0luZm8ubm9kZS5nZXRDb21wb25lbnQoXCJCbG9ja1wiKS5pc1RvdWNoID09IGZhbHNlKXtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIExRQ29sbGlkZVN5c3RlbS51cGRhdGVfbG9naWMoZHQpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5ibG9ja19JbmZvLm5vZGUueCA9IHRoaXMubm9kZS54IC0gdGhpcy5hZGhlc2l2ZS54O1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5ibG9ja19JbmZvLm5vZGUueSA9IHRoaXMubm9kZS55IC0gdGhpcy5hZGhlc2l2ZS55O1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gXHJcbiAgICB9XHJcbn1cclxuXHJcblxyXG4iXX0= //------QC-SOURCE-SPLIT------ (function() { var nodeEnv = typeof require !== 'undefined' && typeof process !== 'undefined'; var __module = nodeEnv ? module : {exports:{}}; - var __filename = 'preview-scripts/assets/Script/lq_base/util/lq_pool_util.js'; + var __filename = 'preview-scripts/assets/Script/lq_collide_system/lq_collide.js'; var __require = nodeEnv ? function (request) { return cc.require(request); } : function (request) { @@ -23861,130 +13718,552 @@ cc._RF.pop(); }; function __define (exports, require, module) { if (!nodeEnv) {__quick_compile_project__.registerModule(__filename, module);}"use strict"; -cc._RF.push(module, '984882e2dpD17LvCQnTDykE', 'lq_pool_util'); -// Script/lq_base/util/lq_pool_util.ts +cc._RF.push(module, 'd2addiRqXVKQ4YEp6sK5d6R', 'lq_collide'); +// Script/lq_collide_system/lq_collide.ts -"use strict"; -Object.defineProperty(exports, "__esModule", { value: true }); -exports.LQPoolUtil = void 0; -var Animation = cc.Animation; -var ParticleSystem = cc.ParticleSystem; -var instantiate = cc.instantiate; -var LQPoolUtil = /** @class */ (function () { - function LQPoolUtil() { - } - LQPoolUtil.reset_ani = function (node) { - var ani = node.getComponent(Animation); - if (ani) { - var clip = ani.currentClip ? ani.currentClip : ani.defaultClip; - if (!clip) { - return; - } - if (ani.playOnLoad && clip && clip.wrapMode === cc.WrapMode.Normal) { - ani.play(clip.name); - } - } - else { - var ani_1 = node.getComponent(sp.Skeleton); - if (ani_1 && !ani_1.loop) { - ani_1.setAnimation(0, ani_1.animation, false); - } - } - for (var i = 0; i < node.childrenCount; i++) { - var child = node.children[i]; - this.reset_ani(child); - } - }; - LQPoolUtil.recursion_stop_particle = function (node, obj) { - var p = node.getComponent(ParticleSystem); - if (p) { - p.stopSystem(); - obj.has = true; - p.node.opacity = 0; - } - for (var i = 0; i < node.childrenCount; i++) { - var child = node.children[i]; - this.recursion_stop_particle(child, obj); - } - }; - LQPoolUtil.recursion_reset_particle = function (node) { - if (!node.isValid) { - return; - } - var p = node.getComponent(ParticleSystem); - if (p) { - p.resetSystem(); - p.node.opacity = 255; - } - for (var i = 0; i < node.childrenCount; i++) { - var child = node.children[i]; - this.recursion_reset_particle(child); - } - }; - LQPoolUtil.get_node_from_pool = function (node_parent, prefab) { - var arr = this.any_pool[prefab.uuid]; - if (!arr) { - this.any_pool[prefab.uuid] = []; - arr = []; - } - var node = arr.pop(); - if (!node || !node.isValid) { - node = instantiate(prefab); - //@ts-ignore - node.recovery_uuid = prefab.uuid; - //@ts-ignore - node.is_from_pool = false; - node_parent.addChild(node); - } - else { - node.active = true; - //@ts-ignore - node.is_from_pool = true; - this.reset_ani(node); - } - return node; - }; - LQPoolUtil.check_pool_push = function (arr, node) { - for (var i = 0; i < arr.length; i++) { - if (arr[i] === node) { - //@ts-ignore - console.warn("\u6C60\u5B50\u4E0D\u80FD\u91CD\u590D\u6DFB\u52A0\u8282\u70B9", node.name, node.recovery_uuid); - return; - } - } - node.active = false; - arr.push(node); - }; - LQPoolUtil.push_node_to_pool = function (node) { - var _this = this; - //@ts-ignore - if (!node.recovery_uuid || !this.any_pool[node.recovery_uuid]) { - if (node.isValid) { - node.destroy(); - } - return; - } - var obj = { has: false }; - this.recursion_stop_particle(node, obj); - if (obj.has) { - var old_opacity_1 = node.opacity; - node.opacity = 0; - setTimeout(function () { - _this.recursion_reset_particle(node); - node.opacity = old_opacity_1; - //@ts-ignore - _this.check_pool_push(_this.any_pool[node.recovery_uuid], node); - }, 500); - } - else { - //@ts-ignore - this.check_pool_push(this.any_pool[node.recovery_uuid], node); - } - }; - LQPoolUtil.any_pool = {}; - return LQPoolUtil; -}()); -exports.LQPoolUtil = LQPoolUtil; +"use strict"; +var __extends = (this && this.__extends) || (function () { + var extendStatics = function (d, b) { + extendStatics = Object.setPrototypeOf || + ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) || + function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; }; + return extendStatics(d, b); + }; + return function (d, b) { + extendStatics(d, b); + function __() { this.constructor = d; } + d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); + }; +})(); +var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) { + var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; + if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc); + else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; + return c > 3 && r && Object.defineProperty(target, key, r), r; +}; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.LQCollide = void 0; +var ccclass = cc._decorator.ccclass; +var property = cc._decorator.property; +var requireComponent = cc._decorator.requireComponent; +var menu = cc._decorator.menu; +var Component = cc.Component; +var Enum = cc.Enum; +var Size = cc.Size; +var Vec2 = cc.Vec2; +var Graphics = cc.Graphics; +var Node = cc.Node; +var macro = cc.macro; +var Color = cc.Color; +var lq_const_1 = require("../lq_base/data/lq_const"); +var lq_collide_config_1 = require("./lq_collide_config"); +var lq_collide_system_1 = require("./lq_collide_system"); +var lq_data_1 = require("../lq_base/data/lq_data"); +var lq_collide_base_1 = require("./lq_collide_base"); +var lq_game_util_1 = require("../lq_base/util/lq_game_util"); +var Map_1 = require("../Map"); +var LQCollide = /** @class */ (function (_super) { + __extends(LQCollide, _super); + function LQCollide() { + var _this = _super !== null && _super.apply(this, arguments) || this; + _this._draw_collide = true; + _this.can_move = true; + _this._collide_shape = lq_const_1.LQCollideShape.Rect; + _this._collide_group_index = -1; + _this.collide_group_id = 0; + _this.collide_scle = 1; + _this._radius = 50; + _this._size = new Size(100, 100); + _this._polygon_points = [new Vec2(-45, -45), new Vec2(45, -45), new Vec2(60, 40), new Vec2(0, 70), new Vec2(-60, 40)]; + //collide碰撞位置偏移 + _this._offset = new Vec2(0, 0); + _this.data_string = ''; + //每个collide的id唯一 + _this.collide_id = 0; + //状态 + _this.collide_status = lq_const_1.LQCollideStatus.Idle; + //是否可碰撞 + _this.is_enable = true; + //是否开启碰撞前后的函数 + _this.is_open_func = true; + //碰撞类别 + _this.collide_category = 0; + //碰撞筛选 + _this.collide_mask = 0; + _this.collide_map = {}; + return _this; + } + LQCollide_1 = LQCollide; + Object.defineProperty(LQCollide.prototype, "draw_collide", { + get: function () { + return this._draw_collide; + }, + set: function (value) { + this._draw_collide = value; + this.draw_shape(); + }, + enumerable: false, + configurable: true + }); + Object.defineProperty(LQCollide.prototype, "collide_shape", { + get: function () { + return this._collide_shape; + }, + set: function (value) { + this._collide_shape = value; + this.draw_shape(); + }, + enumerable: false, + configurable: true + }); + Object.defineProperty(LQCollide.prototype, "collide_group_index", { + get: function () { + if (this._collide_group_index === -1) { + this._collide_group_index = lq_collide_system_1.LQCollideSystem.get_info_by_id(this.collide_group_id).index; + } + return this._collide_group_index; + }, + set: function (value) { + if (this._collide_group_index === value) { + return; + } + this._collide_group_index = value; + this.collide_group_id = lq_collide_system_1.LQCollideSystem.get_group_by_index(value).id; + }, + enumerable: false, + configurable: true + }); + Object.defineProperty(LQCollide.prototype, "radius", { + get: function () { + return this._radius; + }, + set: function (value) { + this._radius = value; + this.draw_shape(); + }, + enumerable: false, + configurable: true + }); + Object.defineProperty(LQCollide.prototype, "size", { + // 物体速度 + // public velocity: Vec2 = new Vec2(0, 0); + get: function () { + return this._size; + }, + set: function (value) { + this._size = value; + if (this.world_rect) { + this.world_rect.width = value.width; + this.world_rect.height = value.height; + this.world_rect.half_width = value.width * 0.5; + this.world_rect.half_height = value.height * 0.5; + } + this.draw_shape(); + }, + enumerable: false, + configurable: true + }); + Object.defineProperty(LQCollide.prototype, "offset", { + get: function () { + return this._offset; + }, + set: function (value) { + this._offset = value; + this.draw_shape(); + }, + enumerable: false, + configurable: true + }); + Object.defineProperty(LQCollide.prototype, "polygon_points", { + get: function () { + return this._polygon_points; + }, + set: function (value) { + this._polygon_points = value; + this.draw_shape(); + }, + enumerable: false, + configurable: true + }); + //检测绘制组件是否添加 + LQCollide.prototype.checkDebugDrawValid = function () { + if (!this._debugDrawer || !this._debugDrawer.isValid) { + var node = this.node.getChildByName('Collide'); + if (!node) { + node = new Node('Collide'); + node.zIndex = macro.MAX_ZINDEX; + this.node.addChild(node); + // @ts-ignore + node._objFlags = 1096; + this._debugDrawer = node.addComponent(Graphics); + this._debugDrawer.lineWidth = 3; + this._debugDrawer.strokeColor = new Color(255, 0, 0); + this._debugDrawer.fillColor = new Color(255, 0, 0); + } + else { + this._debugDrawer = node.getComponent(Graphics); + } + } + }; + //绘制形状 + LQCollide.prototype.draw_shape = function () { + if (!this._draw_collide) { + if (this._debugDrawer) { + this._debugDrawer.clear(); + } + return; + } + this.checkDebugDrawValid(); + this._debugDrawer.clear(); + var o1 = { key: 'scaleX', value: this.node.scale }; + var o2 = { key: 'scaleY', value: this.node.scale }; + lq_game_util_1.LQGameUtil.recursion_node_property(this.node, o1); + lq_game_util_1.LQGameUtil.recursion_node_property(this.node, o2); + if (o1.value === 0 || o2.value === 0) { + return; + } + this._debugDrawer.node.scaleX = 1 / o1.value; + this._debugDrawer.node.scaleY = 1 / o2.value; + switch (this._collide_shape) { + case lq_const_1.LQCollideShape.Circle: + this._debugDrawer.circle(+this._offset.x, +this._offset.y, this._radius); + this._debugDrawer.stroke(); + break; + case lq_const_1.LQCollideShape.Rect: + this._debugDrawer.moveTo(-this._size.width * 0.5 + this._offset.x, -this._size.height * 0.5 + this._offset.y); + this._debugDrawer.lineTo(-this._size.width * 0.5 + this._offset.x, +this._size.height * 0.5 + this._offset.y); + this._debugDrawer.lineTo(this._size.width * 0.5 + this._offset.x, +this._size.height * 0.5 + this._offset.y); + this._debugDrawer.lineTo(this._size.width * 0.5 + this._offset.x, -this._size.height * 0.5 + this._offset.y); + this._debugDrawer.lineTo(-this._size.width * 0.5 + this._offset.x, -this._size.height * 0.5 + this._offset.y); + this._debugDrawer.stroke(); + break; + case lq_const_1.LQCollideShape.Polygon: + this._debugDrawer.moveTo(this._polygon_points[0].x + this._offset.x, this._polygon_points[0].y + this._offset.y); + for (var i = 1; i < this._polygon_points.length; i++) { + this._debugDrawer.lineTo(this._polygon_points[i].x + this._offset.x, this._polygon_points[i].y + this._offset.y); + } + this._debugDrawer.lineTo(this._polygon_points[0].x + this._offset.x, this._polygon_points[0].y + this._offset.y); + this._debugDrawer.stroke(); + break; + } + }; + //仅用于矩形 + LQCollide.prototype.update_size = function (width, height) { + this._size.width = width; + this.world_rect.width = width; + this.world_rect.half_width = width * 0.5; + this._size.height = height; + this.world_rect.height = height; + this.world_rect.half_height = height * 0.5; + this.draw_shape(); + }; + LQCollide.prototype.init_lq_collide = function () { + this.world_rect = new lq_data_1.LQRect(0, 0, this._size.width, this._size.height); + this.draw_shape(); + var info = lq_collide_system_1.LQCollideSystem.get_info_by_id(this.collide_group_id); + this.collide_mask = info.mask; + this.collide_category = info.category; + this.collide_id = LQCollide_1.id_maker++; + this.updateCollisionArea(); + }; + LQCollide.prototype.updateCollisionArea = function () { + if (this._size.width == 0 || this._size.height == 0 || Map_1.default._instance == undefined) { + return; + } + if (Map_1.default._instance.node.scale) { + var scaleX_1 = Map_1.default._instance.node.scale; + var scaleY_1 = Map_1.default._instance.node.scale; + if (scaleX_1 === 0 || scaleX_1 == undefined || scaleX_1 == null || scaleX_1 == 1) { + return; + } + switch (this._collide_shape) { + case lq_const_1.LQCollideShape.Circle: + // 圆形碰撞区域半径更新 + this._radius = this._radius * Math.max(scaleX_1, scaleY_1); + break; + case lq_const_1.LQCollideShape.Rect: + // 矩形碰撞区域尺寸更新 + // console.log(this.data_string); + if (this._size.width !== 10 && this.data_string != "-1") { + // if(this._size.width == 105 || this._size.height == 105){} + this._size.width = this._size.width * scaleX_1; + // console.log("放大倍数",scaleX); + } + if (this._size.height !== 10 && this.data_string != "-1") { + // if(this._size.width == 105 || this._size.height == 105){} + this._size.height = this._size.height * scaleY_1; + // console.log("放大倍数",scaleY); + } + // this._size.width = this._size.width * scaleX; + // this._size.height = this._size.height * scaleY; + if (this.world_rect) { + this.world_rect.width = this._size.width; + this.world_rect.height = this._size.height; + this.world_rect.half_width = this._size.width * 0.5; + this.world_rect.half_height = this._size.height * 0.5; + } + break; + case lq_const_1.LQCollideShape.Polygon: + // 多边形碰撞点坐标更新 + this._polygon_points = this._polygon_points.map(function (point) { + return new Vec2(point.x * scaleX_1, point.y * scaleY_1); + }); + break; + } + this.draw_shape(); + } + }; + LQCollide.prototype.enable_lq_collide = function () { + if (this.collide_status === lq_const_1.LQCollideStatus.Live) { + console.warn(this.node.name + '重复添加'); + return; + } + this.is_enable = true; + this.collide_status = lq_const_1.LQCollideStatus.Live; + lq_collide_system_1.LQCollideSystem.add_collide(this); + }; + LQCollide.prototype.disable_lq_collide = function () { + if (this.collide_status !== lq_const_1.LQCollideStatus.Live) { + return; + } + this.is_enable = false; + this.collide_status = lq_const_1.LQCollideStatus.Idle; + lq_collide_system_1.LQCollideSystem.remove_collide(this); + }; + LQCollide.prototype.update_lq_collide = function () { + }; + // @ts-ignore + // public on_collide(collide: LQCollide): void { + // if(collide.node.parent.uuid == this.node.parent.uuid){ + // return; + // } + // if (LQCollideConfig.switch_print_log) { + // if(this.node.parent.getComponent("Block")){ + // let block = this.node.parent.getComponent("Block"); + // if(block.isTouch){ + // block.checkCollision = true; + // // console.log("碰撞",this.node.name); + // if(this.node.name == "top" ){ + // console.log("碰到上边缘"); + // block.moveUp = false; + // if(block.touchPointY > (this.node.parent.y+this.node.height)){ + // block.moveY = 1; + // } + // } + // if(this.node.name === "down"){ + // block.moveDown = false; + // console.log("碰到下边缘"); + // if(block.touchPointY < (this.node.parent.y )){ + // block.moveY = -1; + // } + // } + // if(this.node.name === "left" ){ + // block.moveLeft = false; + // console.log("碰到左边缘"); + // if(block.touchPointX < (this.node.parent.x - this.node.parent.width)){ + // block.moveX = -1; + // } + // } + // if(this.node.name === "right"){ + // block.moveRight = false; + // console.log("碰到右边缘"); + // if(block.touchPointX > (this.node.parent.x)){ + // block.moveX = 1; + // } + // } + // } + // } + // } + // } + //@ts-ignore + LQCollide.prototype.on_enter = function (collide) { + if (this.disableCollider(collide)) { + return; + } + // if (LQCollideConfig.switch_print_log) { + // console.log(this.node.name + ' on_enter'); + // } + }; + //@ts-ignore + LQCollide.prototype.on_exit = function (collide) { + if (this.disableCollider(collide)) { + return; + } + if (lq_collide_config_1.LQCollideConfig.switch_print_log) { + if (this.node.parent.getComponent("Block")) { + var block = this.node.parent.getComponent("Block"); + // if(!block.isTouch){ + // return; + // } + block.checkCollision = false; + if (this.node.name == "top") { + block.moveUp = true; + } + if (this.node.name === "down") { + block.moveDown = true; + } + if (this.node.name === "left") { + block.moveLeft = true; + } + if (this.node.name === "right") { + block.moveRight = true; + } + } + } + }; + LQCollide.prototype.on_collide = function (collide) { + if (this.disableCollider(collide)) { + return; + } + if (lq_collide_config_1.LQCollideConfig.switch_print_log) { + if (this.node.parent.getComponent("Block")) { + var block = this.node.parent.getComponent("Block"); + var jg = false; + if (block.isTouch) { + block.checkCollision = true; + // console.log("碰撞",this.node.name); + if (this.node.name == "top") { + // console.log(collide.node.parent.name); + block.moveUp = false; + if (block.touchPointY > (this.node.parent.y + this.node.parent.height)) { + block.moveY = 1; + } + // console.log("碰到上边缘"); + } + if (this.node.name === "down") { + block.moveDown = false; + if (block.touchPointY < (this.node.parent.y)) { + block.moveY = -1; + } + // console.log("碰到下边缘"); + } + if (this.node.name === "left") { + block.moveLeft = false; + if (block.touchPointX < (this.node.parent.x - this.node.parent.width)) { + block.moveX = -1; + } + } + if (this.node.name === "right") { + block.moveRight = false; + if (block.touchPointX > (this.node.parent.x)) { + block.moveX = 1; + } + } + } + } + } + }; + LQCollide.prototype.disableCollider = function (collide) { + var jg = false; + if (collide.node && this.node) { + if (collide.node.parent && this.node.parent) { + if (collide.node.parent.uuid == this.node.parent.uuid) { + jg = true; + } + if (this.node.parent.getComponent("Block")) { + var block = this.node.parent.getComponent("Block"); + if (block.type == 1 || block.type == 10 || block.type == 9) { + if (collide.node.parent == block.block_Info.node) { + jg = true; + } + } + } + } + } + return jg; + }; + var LQCollide_1; + LQCollide.id_maker = 1; + __decorate([ + property({ displayName: '绘制形状' }) + ], LQCollide.prototype, "draw_collide", null); + __decorate([ + property + ], LQCollide.prototype, "_draw_collide", void 0); + __decorate([ + property({ tooltip: '能否移动' }) + ], LQCollide.prototype, "can_move", void 0); + __decorate([ + property({ + tooltip: '碰撞形状,None就是无敌,不参与碰撞', + type: Enum(lq_const_1.LQCollideShape), + displayName: '碰撞形状' + }) + ], LQCollide.prototype, "collide_shape", null); + __decorate([ + property() + ], LQCollide.prototype, "_collide_shape", void 0); + __decorate([ + property({ + type: Enum(lq_collide_config_1.LQCollideInfoList), tooltip: '碰撞类别', + displayName: '碰撞类别' + }) + ], LQCollide.prototype, "collide_group_index", null); + __decorate([ + property({ serializable: false }) + ], LQCollide.prototype, "_collide_group_index", void 0); + __decorate([ + property({ visible: false }) + ], LQCollide.prototype, "collide_group_id", void 0); + __decorate([ + property({ visible: false }) + ], LQCollide.prototype, "collide_scle", void 0); + __decorate([ + property({ + tooltip: 'collide半径', + visible: function () { + // @ts-ignore + return this._collide_shape === lq_const_1.LQCollideShape.Circle; + }, + displayName: '半径' + }) + ], LQCollide.prototype, "radius", null); + __decorate([ + property() + ], LQCollide.prototype, "_radius", void 0); + __decorate([ + property({ + tooltip: 'collide长宽', + visible: function () { + // @ts-ignore + return this._collide_shape === lq_const_1.LQCollideShape.Rect; + }, + displayName: '长宽' + }) + ], LQCollide.prototype, "size", null); + __decorate([ + property() + ], LQCollide.prototype, "_size", void 0); + __decorate([ + property({ displayName: '位置偏移' }) + ], LQCollide.prototype, "offset", null); + __decorate([ + property({ + type: Vec2, + visible: function () { + // @ts-ignore + return this._collide_shape === lq_const_1.LQCollideShape.Polygon; + }, + displayName: '多边形碰撞点' + }) + ], LQCollide.prototype, "polygon_points", null); + __decorate([ + property() + ], LQCollide.prototype, "_polygon_points", void 0); + __decorate([ + property() + ], LQCollide.prototype, "_offset", void 0); + __decorate([ + property({ displayName: '自定义字符串' }) + ], LQCollide.prototype, "data_string", void 0); + LQCollide = LQCollide_1 = __decorate([ + ccclass, + requireComponent(lq_collide_base_1.LQCollideBase), + menu("lq/collide") + ], LQCollide); + return LQCollide; +}(Component)); +exports.LQCollide = LQCollide; cc._RF.pop(); } @@ -23997,797 +14276,12 @@ cc._RF.pop(); }); } })(); -//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImFzc2V0c1xcU2NyaXB0XFxscV9iYXNlXFx1dGlsXFxscV9wb29sX3V0aWwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQ0EsSUFBTyxTQUFTLEdBQUcsRUFBRSxDQUFDLFNBQVMsQ0FBQztBQUNoQyxJQUFPLGNBQWMsR0FBRyxFQUFFLENBQUMsY0FBYyxDQUFDO0FBQzFDLElBQU8sV0FBVyxHQUFHLEVBQUUsQ0FBQyxXQUFXLENBQUM7QUFFcEM7SUFBQTtJQWdIQSxDQUFDO0lBN0drQixvQkFBUyxHQUF4QixVQUF5QixJQUFVO1FBQy9CLElBQUksR0FBRyxHQUFHLElBQUksQ0FBQyxZQUFZLENBQUMsU0FBUyxDQUFDLENBQUM7UUFDdkMsSUFBSSxHQUFHLEVBQUU7WUFDTCxJQUFJLElBQUksR0FBRyxHQUFHLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsV0FBVyxDQUFDO1lBQy9ELElBQUksQ0FBQyxJQUFJLEVBQUU7Z0JBQ1AsT0FBTzthQUNWO1lBQ0QsSUFBSSxHQUFHLENBQUMsVUFBVSxJQUFJLElBQUksSUFBSSxJQUFJLENBQUMsUUFBUSxLQUFLLEVBQUUsQ0FBQyxRQUFRLENBQUMsTUFBTSxFQUFFO2dCQUNoRSxHQUFHLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQzthQUN2QjtTQUNKO2FBQU07WUFDSCxJQUFJLEtBQUcsR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDLEVBQUUsQ0FBQyxRQUFRLENBQUMsQ0FBQztZQUN6QyxJQUFJLEtBQUcsSUFBSSxDQUFDLEtBQUcsQ0FBQyxJQUFJLEVBQUU7Z0JBQ2xCLEtBQUcsQ0FBQyxZQUFZLENBQUMsQ0FBQyxFQUFFLEtBQUcsQ0FBQyxTQUFTLEVBQUUsS0FBSyxDQUFDLENBQUM7YUFDN0M7U0FDSjtRQUNELEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMs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QyxFQUFFLEdBQUcsQ0FBQyxDQUFDO1NBQ1g7YUFBTTtZQUNILFlBQVk7WUFDWixJQUFJLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxFQUFFLElBQUksQ0FBQyxDQUFDO1NBQ2pFO0lBQ0wsQ0FBQztJQTlHYyxtQkFBUSxHQUE4QixFQUFFLENBQUM7SUErRzVELGlCQUFDO0NBaEhELEFBZ0hDLElBQUE7QUFoSFksZ0NBQVUiLCJmaWxlIjoiIiwic291cmNlUm9vdCI6Ii8iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgTm9kZSA9IGNjLk5vZGU7XHJcbmltcG9ydCBBbmltYXRpb24gPSBjYy5BbmltYXRpb247XHJcbmltcG9ydCBQYXJ0aWNsZVN5c3RlbSA9IGNjLlBhcnRpY2xlU3lzdGVtO1xyXG5pbXBvcnQgaW5zdGFudGlhdGUgPSBjYy5pbnN0YW50aWF0ZTtcclxuXHJcbmV4cG9ydCBjbGFzcyBMUVBvb2xVdGlsIHtcclxuICAgIHByaXZhdGUgc3RhdGljIGFueV9wb29sOiB7IFtrZXk6IHN0cmluZ106IE5vZGVbXSB9ID0ge307XHJcblxyXG4gICAgcHJpdmF0ZSBzdGF0aWMgcmVzZXRfYW5pKG5vZGU6IE5vZGUpIHtcclxuICAgICAgICBsZXQgYW5pID0gbm9kZS5nZXRDb21wb25lbnQoQW5pbWF0aW9uKTtcclxuICAgICAgICBpZiAoYW5pKSB7XHJcbiAgICAgICAgICAgIGxldCBjbGlwID0gYW5pLmN1cnJlbnRDbGlwID8gYW5pLmN1cnJlbnRDbGlwIDogYW5pLmRlZmF1bHRDbGlwO1xyXG4gICAgICAgICAgICBpZiAoIWNsaXApIHtcclxuICAgICAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBpZiAoYW5pLnBsYXlPbkxvYWQgJiYgY2xpcCAmJiBjbGlwLndyYXBNb2RlID09PSBjYy5XcmFwTW9kZS5Ob3JtYWwpIHtcclxuICAgICAgICAgICAgICAgIGFuaS5wbGF5KGNsaXAubmFtZSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICBsZXQgYW5pID0gbm9kZS5nZXRDb21wb25lbnQoc3AuU2tlbGV0b24pO1xyXG4gICAgICAgICAgICBpZiAoYW5pICYmICFhbmkubG9vcCkge1xyXG4gICAgICAgICAgICAgICAgYW5pLnNldEFuaW1hdGlvbigwLCBhbmkuYW5pbWF0aW9uLCBmYWxzZSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBub2RlLmNoaWxkcmVuQ291bnQ7IGkrKykge1xyXG4gICAgICAgICAgICBjb25zdCBjaGlsZCA9IG5vZGUuY2hpbGRyZW5baV07XHJcbiAgICAgICAgICAgIHRoaXMucmVzZXRfYW5pKGNoaWxkKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIHN0YXRpYyByZWN1cnNpb25fc3RvcF9wYXJ0aWNsZShub2RlOiBOb2RlLCBvYmo6IHsgaGFzOiBib29sZWFuIH0pIHtcclxuICAgICAgICBjb25zdCBwID0gbm9kZS5nZXRDb21wb25lbnQoUGFydGljbGVTeXN0ZW0pO1xyXG4gICAgICAgIGlmIChwKSB7XHJcbiAgICAgICAgICAgIHAuc3RvcFN5c3RlbSgpO1xyXG4gICAgICAgICAgICBvYmouaGFzID0gdHJ1ZTtcclxuICAgICAgICAgICAgcC5ub2RlLm9wYWNpdHkgPSAwO1xyXG4gICAgICAgIH1cclxuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IG5vZGUuY2hpbGRyZW5Db3VudDsgaSsrKSB7XHJcbiAgICAgICAgICAgIGNvbnN0IGNoaWxkID0gbm9kZS5jaGlsZHJlbltpXTtcclxuICAgICAgICAgICAgdGhpcy5yZWN1cnNpb25fc3RvcF9wYXJ0aWNsZShjaGlsZCwgb2JqKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIHN0YXRpYyByZWN1cnNpb25fcmVzZXRfcGFydGljbGUobm9kZTogTm9kZSkge1xyXG4gICAgICAgIGlmICghbm9kZS5pc1ZhbGlkKSB7XHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcbiAgICAgICAgY29uc3QgcCA9IG5vZGUuZ2V0Q29tcG9uZW50KFBhcnRpY2xlU3lzdGVtKTtcclxuICAgICAgICBpZiAocCkge1xyXG4gICAgICAgICAgICBwLnJlc2V0U3lzdGVtKCk7XHJcbiAgICAgICAgICAgIHAubm9kZS5vcGFjaXR5ID0gMjU1O1xyXG4gICAgICAgIH1cclxuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IG5vZGUuY2hpbGRyZW5Db3VudDsgaSsrKSB7XHJcbiAgICAgICAgICAgIGNvbnN0IGNoaWxkID0gbm9kZS5jaGlsZHJlbltpXTtcclxuICAgICAgICAgICAgdGhpcy5yZWN1cnNpb25fcmVzZXRfcGFydGljbGUoY2hpbGQpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgc3RhdGljIGdldF9ub2RlX2Zyb21fcG9vbChub2RlX3BhcmVudDogTm9kZSwgcHJlZmFiOiBOb2RlKSB7XHJcbiAgICAgICAgbGV0IGFyciA9IHRoaXMuYW55X3Bvb2xbcHJlZmFiLnV1aWRdO1xyXG4gICAgICAgIGlmICghYXJyKSB7XHJcbiAgICAgICAgICAgIHRoaXMuYW55X3Bvb2xbcHJlZmFiLnV1aWRdID0gW107XHJcbiAgICAgICAgICAgIGFyciA9IFtdO1xyXG4gICAgICAgIH1cclxuICAgICAgICBsZXQgbm9kZSA9IGFyci5wb3AoKTtcclxuICAgICAgICBpZiAoIW5vZGUgfHwgIW5vZGUuaXNWYWxpZCkge1xyXG4gICAgICAgICAgICBub2RlID0gaW5zdGFudGlhdGUocHJlZmFiKTtcclxuICAgICAgICAgICAgLy9AdHMtaWdub3JlXHJcbiAgICAgICAgICAgIG5vZGUucmVjb3ZlcnlfdXVpZCA9IHByZWZhYi51dWlkO1xyXG4gICAgICAgICAgICAvL0B0cy1pZ25vcmVcclxuICAgICAgICAgICAgbm9kZS5pc19mcm9tX3Bvb2wgPSBmYWxzZTtcclxuICAgICAgICAgICAgbm9kZV9wYXJlbnQuYWRkQ2hpbGQobm9kZSk7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgbm9kZS5hY3RpdmUgPSB0cnVlO1xyXG4gICAgICAgICAgICAvL0B0cy1pZ25vcmVcclxuICAgICAgICAgICAgbm9kZS5pc19mcm9tX3Bvb2wgPSB0cnVlO1xyXG4gICAgICAgICAgICB0aGlzLnJlc2V0X2FuaShub2RlKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIG5vZGU7XHJcbiAgICB9XHJcblxyXG4gICAgcHJpdmF0ZSBzdGF0aWMgY2hlY2tfcG9vbF9wdXNoKGFycjogTm9kZVtdLCBub2RlOiBOb2RlKSB7XHJcbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBhcnIubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICAgICAgaWYgKGFycltpXSA9PT0gbm9kZSkge1xyXG4gICAgICAgICAgICAgICAgLy9AdHMtaWdub3JlXHJcbiAgICAgICAgICAgICAgICBjb25zb2xlLndhcm4oYOaxoOWtkOS4jeiDvemHjeWkjea3u+WKoOiKgueCuWAsIG5vZGUubmFtZSwgbm9kZS5yZWNvdmVyeV91dWlkKTtcclxuICAgICAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICBub2RlLmFjdGl2ZSA9IGZhbHNlO1xyXG4gICAgICAgIGFyci5wdXNoKG5vZGUpO1xyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyBzdGF0aWMgcHVzaF9ub2RlX3RvX3Bvb2wobm9kZTogTm9kZSkge1xyXG4gICAgICAgIC8vQHRzLWlnbm9yZVxyXG4gICAgICAgIGlmICghbm9kZS5yZWNvdmVyeV91dWlkIHx8ICF0aGlzLmFueV9wb29sW25vZGUucmVjb3ZlcnlfdXVpZF0pIHtcclxuICAgICAgICAgICAgaWYgKG5vZGUuaXNWYWxpZCkge1xyXG4gICAgICAgICAgICAgICAgbm9kZS5kZXN0cm95KCk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuICAgICAgICBjb25zdCBvYmo6IHsgaGFzOiBib29sZWFuIH0gPSB7aGFzOiBmYWxzZX07XHJcbiAgICAgICAgdGhpcy5yZWN1cnNpb25fc3RvcF9wYXJ0aWNsZShub2RlLCBvYmopO1xyXG4gICAgICAgIGlmIChvYmouaGFzKSB7XHJcbiAgICAgICAgICAgIGxldCBvbGRfb3BhY2l0eSA9IG5vZGUub3BhY2l0eTtcclxuICAgICAgICAgICAgbm9kZS5vcGFjaXR5ID0gMDtcclxuICAgICAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLnJlY3Vyc2lvbl9yZXNldF9wYXJ0aWNsZShub2RlKTtcclxuICAgICAgICAgICAgICAgIG5vZGUub3BhY2l0eSA9IG9sZF9vcGFjaXR5O1xyXG4gICAgICAgICAgICAgICAgLy9AdHMtaWdub3JlXHJcbiAgICAgICAgICAgICAgICB0aGlzLmNoZWNrX3Bvb2xfcHVzaCh0aGlzLmFueV9wb29sW25vZGUucmVjb3ZlcnlfdXVpZF0sIG5vZGUpO1xyXG4gICAgICAgICAgICB9LCA1MDApO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIC8vQHRzLWlnbm9yZVxyXG4gICAgICAgICAgICB0aGlzLmNoZWNrX3Bvb2xfcHVzaCh0aGlzLmFueV9wb29sW25vZGUucmVjb3ZlcnlfdXVpZF0sIG5vZGUpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxufSJdfQ== +//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImFzc2V0c1xcU2NyaXB0XFxscV9jb2xsaWRlX3N5c3RlbVxcbHFfY29sbGlkZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsSUFBTyxPQUFPLEdBQUcsRUFBRSxDQUFDLFVBQVUsQ0FBQyxPQUFPLENBQUM7QUFDdkMsSUFBTyxRQUFRLEdBQUcsRUFBRSxDQUFDLFVBQVUsQ0FBQyxRQUFRLENBQUM7QUFDekMsSUFBTyxnQkFBZ0IsR0FBRyxFQUFFLENBQUMsVUFBVSxDQUFDLGdCQUFnQixDQUFDO0FBQ3pELElBQU8sSUFBSSxHQUFHLEVBQUUsQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDO0FBQ2pDLElBQU8sU0FBUyxHQUFHLEVBQUUsQ0FBQyxTQUFTLENBQUM7QUFDaEMsSUFBTyxJQUFJLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQztBQUN0QixJQUFPLElBQUksR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDO0FBQ3RCLElBQU8sSUFBSSxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUM7QUFDdEIsSUFBTyxRQUFRLEdBQUcsRUFBRSxDQUFDLFFBQVEsQ0FBQztBQUM5QixJQUFPLElBQUksR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDO0FBQ3RCLElBQU8sS0FBSyxHQUFHLEVBQUUsQ0FBQyxLQUFLLENBQUM7QUFDeEIsSUFBTyxLQUFLLEdBQUcsRUFBRSxDQUFDLEtBQUssQ0FBQztBQUN4QixxREFBeUU7QUFDekUseURBQXVFO0FBQ3ZFLHlEQUFvRDtBQUNwRCxtREFBK0M7QUFDL0MscURBQWdEO0FBQ2hELDZEQUF3RDtBQUN4RCw4QkFBaUM7QUFLakM7SUFBK0IsNkJBQVM7SUFBeEM7UUFBQSxxRUFpZUM7UUFwZGEsbUJBQWEsR0FBWSxJQUFJLENBQUM7UUFHOUIsY0FBUSxHQUFZLElBQUksQ0FBQztRQWtCNUIsb0JBQWMsR0FBbUIseUJBQWMsQ0FBQyxJQUFJLENBQUM7UUFzQnBELDBC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QUFRLENBQUM7WUFDTixPQUFPLEVBQUUsV0FBVztZQUNwQixPQUFPO2dCQUNILGFBQWE7Z0JBQ2IsT0FBTyxJQUFJLENBQUMsY0FBYyxLQUFLLHlCQUFjLENBQUMsSUFBSSxDQUFDO1lBQ3ZELENBQUM7WUFDRCxXQUFXLEVBQUUsSUFBSTtTQUNwQixDQUFDO3lDQUdEO0lBY0Q7UUFEQyxRQUFRLEVBQUU7NENBQ2dDO0lBRzNDO1FBREMsUUFBUSxDQUFDLEVBQUMsV0FBVyxFQUFFLE1BQU0sRUFBQyxDQUFDOzJDQUcvQjtJQWVEO1FBUkMsUUFBUSxDQUFDO1lBQ04sSUFBSSxFQUFFLElBQUk7WUFDVixPQUFPO2dCQUNILGFBQWE7Z0JBQ2IsT0FBTyxJQUFJLENBQUMsY0FBYyxLQUFLLHlCQUFjLENBQUMsT0FBTyxDQUFDO1lBQzFELENBQUM7WUFDRCxXQUFXLEVBQUUsUUFBUTtTQUN4QixDQUFDO21EQUdEO0lBUUQ7UUFEQyxRQUFRLEVBQUU7c0RBQ29IO0lBRy9IO1FBREMsUUFBUSxFQUFFOzhDQUMyQjtJQUd0QztRQURDLFFBQVEsQ0FBQyxFQUFDLFdBQVcsRUFBRSxRQUFRLEVBQUMsQ0FBQztrREFDRjtJQW5KdkIsU0FBUztRQUhyQixPQUFPO1FBQ1AsZ0JBQWdCLENBQUMsK0JBQWEsQ0FBQztRQUMvQixJQUFJLENBQUMsWUFBWSxDQUFDO09BQ04sU0FBUyxDQWllckI7SUFBRCxnQkFBQztDQWplRCxBQWllQyxDQWplOEIsU0FBUyxHQWlldkM7QUFqZVksOEJBQVMiLCJmaWxlIjoiIiwic291cmNlUm9vdCI6Ii8iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgY2NjbGFzcyA9IGNjLl9kZWNvcmF0b3IuY2NjbGFzcztcclxuaW1wb3J0IHByb3BlcnR5ID0gY2MuX2RlY29yYXRvci5wcm9wZXJ0eTtcclxuaW1wb3J0IHJlcXVpcmVDb21wb25lbnQgPSBjYy5fZGVjb3JhdG9yLnJlcXVpcmVDb21wb25lbnQ7XHJcbmltcG9ydCBtZW51ID0gY2MuX2RlY29yYXRvci5tZW51O1xyXG5pbXBvcnQgQ29tcG9uZW50ID0gY2MuQ29tcG9uZW50O1xyXG5pbXBvcnQgRW51bSA9IGNjLkVudW07XHJcbmltcG9ydCBTaXplID0gY2MuU2l6ZTtcclxuaW1wb3J0IFZlYzIgPSBjYy5WZWMyO1xyXG5pbXBvcnQgR3JhcGhpY3MgPSBjYy5HcmFwaGljcztcclxuaW1wb3J0IE5vZGUgPSBjYy5Ob2RlO1xyXG5pbXBvcnQgbWFjcm8gPSBjYy5tYWNybztcclxuaW1wb3J0IENvbG9yID0gY2MuQ29sb3I7XHJcbmltcG9ydCB7TFFDb2xsaWRlU2hhcGUsIExRQ29sbGlkZVN0YXR1c30gZnJvbSBcIi4uL2xxX2Jhc2UvZGF0YS9scV9jb25zdFwiO1xyXG5pbXBvcnQge0xRQ29sbGlkZUNvbmZpZywgTFFDb2xsaWRlSW5mb0xpc3R9IGZyb20gXCIuL2xxX2NvbGxpZGVfY29uZmlnXCI7XHJcbmltcG9ydCB7TFFDb2xsaWRlU3lzdGVtfSBmcm9tIFwiLi9scV9jb2xsaWRlX3N5c3RlbVwiO1xyXG5pbXBvcnQge0xRUmVjdH0gZnJvbSBcIi4uL2xxX2Jhc2UvZGF0YS9scV9kYXRhXCI7XHJcbmltcG9ydCB7TFFDb2xsaWRlQmFzZX0gZnJvbSBcIi4vbHFfY29sbGlkZV9iYXNlXCI7XHJcbmltcG9ydCB7TFFHYW1lVXRpbH0gZnJvbSBcIi4uL2xxX2Jhc2UvdXRpbC9scV9nYW1lX3V0aWxcIjtcclxuaW1wb3J0IE1hcENvbnJvbGVyIGZyb20gXCIuLi9NYXBcIjtcclxuXHJcbkBjY2NsYXNzXHJcbkByZXF1aXJlQ29tcG9uZW50KExRQ29sbGlkZUJhc2UpXHJcbkBtZW51KFwibHEvY29sbGlkZVwiKVxyXG5leHBvcnQgY2xhc3MgTFFDb2xsaWRlIGV4dGVuZHMgQ29tcG9uZW50IHtcclxuICAgIHZlbG9jaXR5OiBhbnk7XHJcbiAgICBAcHJvcGVydHkoe2Rpc3BsYXlOYW1lOiAn57uY5Yi25b2i54q2J30pXHJcbiAgICBnZXQgZHJhd19jb2xsaWRlKCk6IGJvb2xlYW4ge1xyXG4gICAgICAgIHJldHVybiB0aGlzLl9kcmF3X2NvbGxpZGU7XHJcbiAgICB9XHJcblxyXG4gICAgc2V0IGRyYXdfY29sbGlkZSh2YWx1ZTogYm9vbGVhbikge1xyXG4gICAgICAgIHRoaXMuX2RyYXdfY29sbGlkZSA9IHZhbHVlO1xyXG4gICAgICAgIHRoaXMuZHJhd19zaGFwZSgpO1xyXG4gICAgfVxyXG5cclxuICAgIEBwcm9wZXJ0eVxyXG4gICAgcHJvdGVjdGVkIF9kcmF3X2NvbGxpZGU6IGJvb2xlYW4gPSB0cnVlO1xyXG5cclxuICAgIEBwcm9wZXJ0eSh7dG9vbHRpcDogJ+iDveWQpuenu+WKqCd9KVxyXG4gICAgcHJvdGVjdGVkIGNhbl9tb3ZlOiBib29sZWFuID0gdHJ1ZTtcclxuXHJcblxyXG4gICAgQHByb3BlcnR5KHtcclxuICAgICAgICB0b29sdGlwOiAn56Kw5pKe5b2i54q277yMTm9uZeWwseaYr+aXoOaVjO+8jOS4jeWPguS4jueisOaSnicsXHJcbiAgICAgICAgdHlwZTogRW51bShMUUNvbGxpZGVTaGFwZSksXHJcbiAgICAgICAgZGlzcGxheU5hbWU6ICfnorDmkp7lvaLnirYnXHJcbiAgICB9KVxyXG4gICAgZ2V0IGNvbGxpZGVfc2hhcGUoKTogTFFDb2xsaWRlU2hhcGUge1xyXG4gICAgICAgIHJldHVybiB0aGlzLl9jb2xsaWRlX3NoYXBlO1xyXG4gICAgfVxyXG5cclxuICAgIHNldCBjb2xsaWRlX3NoYXBlKHZhbHVlOiBMUUNvbGxpZGVTaGFwZSkge1xyXG4gICAgICAgIHRoaXMuX2NvbGxpZGVfc2hhcGUgPSB2YWx1ZTtcclxuICAgICAgICB0aGlzLmRyYXdfc2hhcGUoKTtcclxuICAgIH1cclxuXHJcbiAgICBAcHJvcGVydHkoKVxyXG4gICAgcHVibGljIF9jb2xsaWRlX3NoYXBlOiBMUUNvbGxpZGVTaGFwZSA9IExRQ29sbGlkZVNoYXBlLlJlY3Q7XHJcblxyXG4gICAgQHByb3BlcnR5KHtcclxuICAgICAgICB0eXBlOiBFbnVtKExRQ29sbGlkZUluZm9MaXN0KSwgdG9vbHRpcDogJ+eisOaSnuexu+WIqycsXHJcbiAgICAgICAgZGlzcGxheU5hbWU6ICfnorDmkp7nsbvliKsnXHJcbiAgICB9KVxyXG4gICAgZ2V0IGNvbGxpZGVfZ3JvdXBfaW5kZXgoKSB7XHJcbiAgICAgICAgaWYgKHRoaXMuX2NvbGxpZGVfZ3JvdXBfaW5kZXggPT09IC0xKSB7XHJcbiAgICAgICAgICAgIHRoaXMuX2NvbGxpZGVfZ3JvdXBfaW5kZXggPSBMUUNvbGxpZGVTeXN0ZW0uZ2V0X2luZm9fYnlfaWQodGhpcy5jb2xsaWRlX2dyb3VwX2lkKS5pbmRleDtcclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuX2NvbGxpZGVfZ3JvdXBfaW5kZXg7XHJcbiAgICB9XHJcblxyXG4gICAgc2V0IGNvbGxpZGVfZ3JvdXBfaW5kZXgodmFsdWUpIHtcclxuICAgICAgICBpZiAodGhpcy5fY29sbGlkZV9ncm91cF9pbmRleCA9PT0gdmFsdWUpIHtcclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLl9jb2xsaWRlX2dyb3VwX2luZGV4ID0gdmFsdWU7XHJcbiAgICAgICAgdGhpcy5jb2xsaWRlX2dyb3VwX2lkID0gTFFDb2xsaWRlU3lzdGVtLmdldF9ncm91cF9ieV9pbmRleCh2YWx1ZSkuaWQ7XHJcbiAgICB9XHJcblxyXG4gICAgQHByb3BlcnR5KHtzZXJpYWxpemFibGU6IGZhbHNlfSlcclxuICAgIHByaXZhdGUgX2NvbGxpZGVfZ3JvdXBfaW5kZXggPSAtMTtcclxuXHJcbiAgICBAcHJvcGVydHkoe3Zpc2libGU6IGZhbHNlfSlcclxuICAgIHByb3RlY3RlZCBjb2xsaWRlX2dyb3VwX2lkOiBudW1iZXIgPSAwO1xyXG5cclxuICAgIEBwcm9wZXJ0eSh7dmlzaWJsZTogZmFsc2V9KVxyXG4gICAgcHJvdGVjdGVkIGNvbGxpZGVfc2NsZTogbnVtYmVyID0gMTtcclxuXHJcbiAgICBAcHJvcGVydHkoe1xyXG4gICAgICAgIHRvb2x0aXA6ICdjb2xsaWRl5Y2K5b6EJyxcclxuICAgICAgICB2aXNpYmxlKCkge1xyXG4gICAgICAgICAgICAvLyBAdHMtaWdub3JlXHJcbiAgICAgICAgICAgIHJldHVybiB0aGlzLl9jb2xsaWRlX3NoYXBlID09PSBMUUNvbGxpZGVTaGFwZS5DaXJjbGU7XHJcbiAgICAgICAgfSxcclxuICAgICAgICBkaXNwbGF5TmFtZTogJ+WNiuW+hCdcclxuICAgIH0pXHJcbiAgICBnZXQgcmFkaXVzKCk6IG51bWJlciB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuX3JhZGl1cztcclxuICAgIH1cclxuXHJcbiAgICBzZXQgcmFkaXVzKHZhbHVlOiBudW1iZXIpIHtcclxuICAgICAgICB0aGlzLl9yYWRpdXMgPSB2YWx1ZTtcclxuICAgICAgICB0aGlzLmRyYXdfc2hhcGUoKTtcclxuICAgIH1cclxuXHJcbiAgICBAcHJvcGVydHkoKVxyXG4gICAgcHJvdGVjdGVkIF9yYWRpdXM6IG51bWJlciA9IDUwO1xyXG5cclxuICAgIC8vIOeJqeS9k+mAn+W6plxyXG4gICAgLy8gcHVibGljIHZlbG9jaXR5OiBWZWMyID0gbmV3IFZlYzIoMCwgMCk7XHJcblxyXG4gICAgQHByb3BlcnR5KHtcclxuICAgICAgICB0b29sdGlwOiAnY29sbGlkZemVv+WuvScsXHJcbiAgICAgICAgdmlzaWJsZSgpIHtcclxuICAgICAgICAgICAgLy8gQHRzLWlnbm9yZVxyXG4gICAgICAgICAgICByZXR1cm4gdGhpcy5fY29sbGlkZV9zaGFwZSA9PT0gTFFDb2xsaWRlU2hhcGUuUmVjdDtcclxuICAgICAgICB9LFxyXG4gICAgICAgIGRpc3BsYXlOYW1lOiAn6ZW/5a69J1xyXG4gICAgfSlcclxuICAgIGdldCBzaXplKCk6IFNpemUge1xyXG4gICAgICAgIHJldHVybiB0aGlzLl9zaXplO1xyXG4gICAgfVxyXG5cclxuICAgIHNldCBzaXplKHZhbHVlOiBTaXplKSB7XHJcbiAgICAgICAgdGhpcy5fc2l6ZSA9IHZhbHVlO1xyXG4gICAgICAgIGlmICh0aGlzLndvcmxkX3JlY3QpIHtcclxuICAgICAgICAgICAgdGhpcy53b3JsZF9yZWN0LndpZHRoID0gdmFsdWUud2lkdGg7XHJcbiAgICAgICAgICAgIHRoaXMud29ybGRfcmVjdC5oZWlnaHQgPSB2YWx1ZS5oZWlnaHQ7XHJcbiAgICAgICAgICAgIHRoaXMud29ybGRfcmVjdC5oYWxmX3dpZHRoID0gdmFsdWUud2lkdGggKiAwLjU7XHJcbiAgICAgICAgICAgIHRoaXMud29ybGRfcmVjdC5oYWxmX2hlaWdodCA9IHZhbHVlLmhlaWdodCAqIDAuNTtcclxuICAgICAgICB9XHJcbiAgICAgICAgdGhpcy5kcmF3X3NoYXBlKCk7XHJcbiAgICB9XHJcblxyXG4gICAgQHByb3BlcnR5KClcclxuICAgIHByb3RlY3RlZCBfc2l6ZTogU2l6ZSA9IG5ldyBTaXplKDEwMCwgMTAwKTtcclxuXHJcbiAgICBAcHJvcGVydHkoe2Rpc3BsYXlOYW1lOiAn5L2N572u5YGP56e7J30pXHJcbiAgICBnZXQgb2Zmc2V0KCk6IFZlYzIge1xyXG4gICAgICAgIHJldHVybiB0aGlzLl9vZmZzZXQ7XHJcbiAgICB9XHJcblxyXG4gICAgc2V0IG9mZnNldCh2YWx1ZTogVmVjMikge1xyXG4gICAgICAgIHRoaXMuX29mZnNldCA9IHZhbHVlO1xyXG4gICAgICAgIHRoaXMuZHJhd19zaGFwZSgpO1xyXG4gICAgfVxyXG5cclxuICAgIEBwcm9wZXJ0eSh7XHJcbiAgICAgICAgdHlwZTogVmVjMixcclxuICAgICAgICB2aXNpYmxlKCkge1xyXG4gICAgICAgICAgICAvLyBAdHMtaWdub3JlXHJcbiAgICAgICAgICAgIHJldHVybiB0aGlzLl9jb2xsaWRlX3NoYXBlID09PSBMUUNvbGxpZGVTaGFwZS5Qb2x5Z29uO1xyXG4gICAgICAgIH0sXHJcbiAgICAgICAgZGlzcGxheU5hbWU6ICflpJrovrnlvaLnorDmkp7ngrknXHJcbiAgICB9KVxyXG4gICAgZ2V0IHBvbHlnb25fcG9pbnRzKCk6IFZlYzJbXSB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuX3BvbHlnb25fcG9pbnRzO1xyXG4gICAgfVxyXG5cclxuICAgIHNldCBwb2x5Z29uX3BvaW50cyh2YWx1ZTogVmVjMltdKSB7XHJcbiAgICAgICAgdGhpcy5fcG9seWdvbl9wb2ludHMgPSB2YWx1ZTtcclxuICAgICAgICB0aGlzLmRyYXdfc2hhcGUoKTtcclxuICAgIH1cclxuXHJcbiAgICBAcHJvcGVydHkoKVxyXG4gICAgcHVibGljIF9wb2x5Z29uX3BvaW50czogVmVjMltdID0gW25ldyBWZWMyKC00NSwgLTQ1KSwgbmV3IFZlYzIoNDUsIC00NSksIG5ldyBWZWMyKDYwLCA0MCksIG5ldyBWZWMyKDAsIDcwKSwgbmV3IFZlYzIoLTYwLCA0MCldO1xyXG4gICAgLy9jb2xsaWRl56Kw5pKe5L2N572u5YGP56e7XHJcbiAgICBAcHJvcGVydHkoKVxyXG4gICAgcHVibGljIF9vZmZzZXQ6IFZlYzIgPSBuZXcgVmVjMigwLCAwKTtcclxuXHJcbiAgICBAcHJvcGVydHkoe2Rpc3BsYXlOYW1lOiAn6Ieq5a6a5LmJ5a2X56ym5LiyJ30pXHJcbiAgICBwdWJsaWMgZGF0YV9zdHJpbmc6IHN0cmluZyA9ICcnO1xyXG4gICAgLy/mr4/kuKpjb2xsaWRl55qEaWTllK/kuIBcclxuICAgIHB1YmxpYyBjb2xsaWRlX2lkOiBudW1iZXIgPSAwO1xyXG4gICAgLy/nirbmgIFcclxuICAgIHB1YmxpYyBjb2xsaWRlX3N0YXR1czogTFFDb2xsaWRlU3RhdHVzID0gTFFDb2xsaWRlU3RhdHVzLklkbGU7XHJcbiAgICAvL+aYr+WQpuWPr+eisOaSnlxyXG4gICAgcHVibGljIGlzX2VuYWJsZTogYm9vbGVhbiA9IHRydWU7XHJcbiAgICAvL+aYr+WQpuW8gOWQr+eisOaSnuWJjeWQjueahOWHveaVsFxyXG4gICAgcHVibGljIGlzX29wZW5fZnVuYzogYm9vbGVhbiA9IHRydWU7XHJcbiAgICAvL+eisOaSnuexu+WIq1xyXG4gICAgcHVibGljIGNvbGxpZGVfY2F0ZWdvcnkgPSAwO1xyXG4gICAgLy/norDmkp7nrZvpgIlcclxuICAgIHB1YmxpYyBjb2xsaWRlX21hc2sgPSAwO1xyXG4gICAgLy/nvJPlrZjlpJrovrnlvaLnorDmkp7mlbDmja5cclxuICAgIHB1YmxpYyBjYWNoZV9wb2x5Z29uX3BvaW50czogbnVtYmVyW107XHJcbiAgICAvL+e7mOWItmNvbGxpZGXlvaLnirbnu4Tku7ZcclxuICAgIHByaXZhdGUgX2RlYnVnRHJhd2VyITogR3JhcGhpY3M7XHJcbiAgICBwdWJsaWMgd29ybGRfcmVjdCE6IExRUmVjdDtcclxuICAgIHB1YmxpYyBjb2xsaWRlX21hcDogeyBba2V5OiBudW1iZXJdOiB7IGNvbGxpZGU6IExRQ29sbGlkZSwgc3RhdHVzOiAxIHwgMiB9IH0gPSB7fTtcclxuICAgIHB1YmxpYyBmb2xsb3dfdGFyZ2V0X2NhdGVnb3J5OiBudW1iZXIgfCB1bmRlZmluZWQ7XHJcbiAgICBwcml2YXRlIHN0YXRpYyBpZF9tYWtlcjogbnVtYmVyID0gMTtcclxuXHJcbiAgICAvL+ajgOa1i+e7mOWItue7hOS7tuaYr+WQpua3u+WKoFxyXG4gICAgcHJpdmF0ZSBjaGVja0RlYnVnRHJhd1ZhbGlkKCkge1xyXG4gICAgICAgIGlmICghdGhpcy5fZGVidWdEcmF3ZXIgfHwgIXRoaXMuX2RlYnVnRHJhd2VyLmlzVmFsaWQpIHtcclxuICAgICAgICAgICAgbGV0IG5vZGUgPSB0aGlzLm5vZGUuZ2V0Q2hpbGRCeU5hbWUoJ0NvbGxpZGUnKTtcclxuICAgICAgICAgICAgaWYgKCFub2RlKSB7XHJcbiAgICAgICAgICAgICAgICBub2RlID0gbmV3IE5vZGUoJ0NvbGxpZGUnKTtcclxuICAgICAgICAgICAgICAgIG5vZGUuekluZGV4ID0gbWFjcm8uTUFYX1pJTkRFWDtcclxuICAgICAgICAgICAgICAgIHRoaXMubm9kZS5hZGRDaGlsZChub2RlKTtcclxuICAgICAgICAgICAgICAgIC8vIEB0cy1pZ25vcmVcclxuICAgICAgICAgICAgICAgIG5vZGUuX29iakZsYWdzID0gMTA5NjtcclxuICAgICAgICAgICAgICAgIHRoaXMuX2RlYnVnRHJhd2VyID0gbm9kZS5hZGRDb21wb25lbnQoR3JhcGhpY3MpO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5fZGVidWdEcmF3ZXIubGluZVdpZHRoID0gMztcclxuICAgICAgICAgICAgICAgIHRoaXMuX2RlYnVnRHJhd2VyLnN0cm9rZUNvbG9yID0gbmV3IENvbG9yKDI1NSwgMCwgMCk7XHJcbiAgICAgICAgICAgICAgICB0aGlzLl9kZWJ1Z0RyYXdlci5maWxsQ29sb3IgPSBuZXcgQ29sb3IoMjU1LCAwLCAwKTtcclxuICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgIHRoaXMuX2RlYnVnRHJhd2VyID0gbm9kZS5nZXRDb21wb25lbnQoR3JhcGhpY3MpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIC8v57uY5Yi25b2i54q2XHJcbiAgICBwcm90ZWN0ZWQgZHJhd19zaGFwZSgpIHtcclxuICAgICAgICBpZiAoIXRoaXMuX2RyYXdfY29sbGlkZSkge1xyXG4gICAgICAgICAgICBpZiAodGhpcy5fZGVidWdEcmF3ZXIpIHtcclxuICAgICAgICAgICAgICAgIHRoaXMuX2RlYnVnRHJhd2VyLmNsZWFyKCk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLmNoZWNrRGVidWdEcmF3VmFsaWQoKTtcclxuICAgICAgICB0aGlzLl9kZWJ1Z0RyYXdlci5jbGVhcigpO1xyXG5cclxuICAgICAgICBsZXQgbzEgPSB7a2V5OiAnc2NhbGVYJywgdmFsdWU6IHRoaXMubm9kZS5zY2FsZX07XHJcbiAgICAgICAgbGV0IG8yID0ge2tleTogJ3NjYWxlWScsIHZhbHVlOiB0aGlzLm5vZGUuc2NhbGV9O1xyXG4gICAgICAgIExRR2FtZVV0aWwucmVjdXJzaW9uX25vZGVfcHJvcGVydHkodGhpcy5ub2RlLCBvMSk7XHJcbiAgICAgICAgTFFHYW1lVXRpbC5yZWN1cnNpb25fbm9kZV9wcm9wZXJ0eSh0aGlzLm5vZGUsIG8yKTtcclxuICAgICAgICBpZiAobzEudmFsdWUgPT09IDAgfHwgbzIudmFsdWUgPT09IDApIHtcclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLl9kZWJ1Z0RyYXdlci5ub2RlLnNjYWxlWCA9IDEgLyBvMS52YWx1ZTtcclxuICAgICAgICB0aGlzLl9kZWJ1Z0RyYXdlci5ub2RlLnNjYWxlWSA9IDEgLyBvMi52YWx1ZTtcclxuICAgICAgICBzd2l0Y2ggKHRoaXMuX2NvbGxpZGVfc2hhcGUpIHtcclxuICAgICAgICAgICAgY2FzZSBMUUNvbGxpZGVTaGFwZS5DaXJjbGU6XHJcbiAgICAgICAgICAgICAgICB0aGlzLl9kZWJ1Z0RyYXdlci5jaXJjbGUoK3RoaXMuX29mZnNldC54LCArdGhpcy5fb2Zmc2V0LnksIHRoaXMuX3JhZGl1cyk7XHJcbiAgICAgICAgICAgICAgICB0aGlzLl9kZWJ1Z0RyYXdlci5zdHJva2UoKTtcclxuICAgICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICBjYXNlIExRQ29sbGlkZVNoYXBlLlJlY3Q6XHJcbiAgICAgICAgICAgICAgICB0aGlzLl9kZWJ1Z0RyYXdlci5tb3ZlVG8oLXRoaXMuX3NpemUud2lkdGggKiAwLjUgKyB0aGlzLl9vZmZzZXQueCwgLXRoaXMuX3NpemUuaGVpZ2h0ICogMC41ICsgdGhpcy5fb2Zmc2V0LnkpO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5fZGVidWdEcmF3ZXIubGluZVRvKC10aGlzLl9zaXplLndpZHRoICogMC41ICsgdGhpcy5fb2Zmc2V0LngsICt0aGlzLl9zaXplLmhlaWdodCAqIDAuNSArIHRoaXMuX29mZnNldC55KTtcclxuICAgICAgICAgICAgICAgIHRoaXMuX2RlYnVnRHJhd2VyLmxpbmVUbyh0aGlzLl9zaXplLndpZHRoICogMC41ICsgdGhpcy5fb2Zmc2V0LngsICt0aGlzLl9zaXplLmhlaWdodCAqIDAuNSArIHRoaXMuX29mZnNldC55KTtcclxuICAgICAgICAgICAgICAgIHRoaXMuX2RlYnVnRHJhd2VyLmxpbmVUbyh0aGlzLl9zaXplLndpZHRoICogMC41ICsgdGhpcy5fb2Zmc2V0LngsIC10aGlzLl9zaXplLmhlaWdodCAqIDAuNSArIHRoaXMuX29mZnNldC55KTtcclxuICAgICAgICAgICAgICAgIHRoaXMuX2RlYnVnRHJhd2VyLmxpbmVUbygtdGhpcy5fc2l6ZS53aWR0aCAqIDAuNSArIHRoaXMuX29mZnNldC54LCAtdGhpcy5fc2l6ZS5oZWlnaHQgKiAwLjUgKyB0aGlzLl9vZmZzZXQueSk7XHJcbiAgICAgICAgICAgICAgICB0aGlzLl9kZWJ1Z0RyYXdlci5zdHJva2UoKTtcclxuICAgICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICBjYXNlIExRQ29sbGlkZVNoYXBlLlBvbHlnb246XHJcbiAgICAgICAgICAgICAgICB0aGlzLl9kZWJ1Z0RyYXdlci5tb3ZlVG8odGhpcy5fcG9seWdvbl9wb2ludHNbMF0ueCArIHRoaXMuX29mZnNldC54LCB0aGlzLl9wb2x5Z29uX3BvaW50c1swXS55ICsgdGhpcy5fb2Zmc2V0LnkpO1xyXG4gICAgICAgICAgICAgICAgZm9yIChsZXQgaSA9IDE7IGkgPCB0aGlzLl9wb2x5Z29uX3BvaW50cy5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuX2RlYnVnRHJhd2VyLmxpbmVUbyh0aGlzLl9wb2x5Z29uX3BvaW50c1tpXS54ICsgdGhpcy5fb2Zmc2V0LngsIHRoaXMuX3BvbHlnb25fcG9pbnRzW2ldLnkgKyB0aGlzLl9vZmZzZXQueSk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB0aGlzLl9kZWJ1Z0RyYXdlci5saW5lVG8odGhpcy5fcG9seWdvbl9wb2ludHNbMF0ueCArIHRoaXMuX29mZnNldC54LCB0aGlzLl9wb2x5Z29uX3BvaW50c1swXS55ICsgdGhpcy5fb2Zmc2V0LnkpO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5fZGVidWdEcmF3ZXIuc3Ryb2tlKCk7XHJcbiAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgLy/ku4XnlKjkuo7nn6nlvaJcclxuICAgIHB1YmxpYyB1cGRhdGVfc2l6ZSh3aWR0aDogbnVtYmVyLCBoZWlnaHQ6IG51bWJlcikge1xyXG4gICAgICAgIHRoaXMuX3NpemUud2lkdGggPSB3aWR0aDtcclxuICAgICAgICB0aGlzLndvcmxkX3JlY3Qud2lkdGggPSB3aWR0aDtcclxuICAgICAgICB0aGlzLndvcmxkX3JlY3QuaGFsZl93aWR0aCA9IHdpZHRoICogMC41O1xyXG4gICAgICAgIHRoaXMuX3NpemUuaGVpZ2h0ID0gaGVpZ2h0O1xyXG4gICAgICAgIHRoaXMud29ybGRfcmVjdC5oZWlnaHQgPSBoZWlnaHQ7XHJcbiAgICAgICAgdGhpcy53b3JsZF9yZWN0LmhhbGZfaGVpZ2h0ID0gaGVpZ2h0ICogMC41O1xyXG5cclxuICAgICAgICB0aGlzLmRyYXdfc2hhcGUoKTtcclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgaW5pdF9scV9jb2xsaWRlKCkge1xyXG5cclxuICAgICAgICB0aGlzLndvcmxkX3JlY3QgPSBuZXcgTFFSZWN0KDAsIDAsIHRoaXMuX3NpemUud2lkdGgsIHRoaXMuX3NpemUuaGVpZ2h0KTtcclxuICAgICAgICB0aGlzLmRyYXdfc2hhcGUoKTtcclxuICAgICAgICBjb25zdCBpbmZvID0gTFFDb2xsaWRlU3lzdGVtLmdldF9pbmZvX2J5X2lkKHRoaXMuY29sbGlkZV9ncm91cF9pZCk7XHJcbiAgICAgICAgdGhpcy5jb2xsaWRlX21hc2sgPSBpbmZvLm1hc2s7XHJcbiAgICAgICAgdGhpcy5jb2xsaWRlX2NhdGVnb3J5ID0gaW5mby5jYXRlZ29yeTtcclxuICAgICAgICB0aGlzLmNvbGxpZGVfaWQgPSBMUUNvbGxpZGUuaWRfbWFrZXIrKztcclxuXHJcbiAgICAgICAgdGhpcy51cGRhdGVDb2xsaXNpb25BcmVhKCk7XHJcbiAgICB9XHJcblxyXG4gICAgcHJpdmF0ZSB1cGRhdGVDb2xsaXNpb25BcmVhKCkge1xyXG4gICAgICAgIGlmKHRoaXMuX3NpemUud2lkdGg9PTAgfHwgdGhpcy5fc2l6ZS5oZWlnaHQ9PTAgfHwgTWFwQ29ucm9sZXIuX2luc3RhbmNlID09IHVuZGVmaW5lZCl7XHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYoTWFwQ29ucm9sZXIuX2luc3RhbmNlLm5vZGUuc2NhbGUpe1xyXG4gICAgICAgICAgICBsZXQgc2NhbGVYID0gTWFwQ29ucm9sZXIuX2luc3RhbmNlLm5vZGUuc2NhbGU7XHJcbiAgICAgICAgICAgIGxldCBzY2FsZVkgPSBNYXBDb25yb2xlci5faW5zdGFuY2Uubm9kZS5zY2FsZTtcclxuXHJcbiAgICAgICAgICAgIGlmIChzY2FsZVggPT09IDAgfHwgc2NhbGVYID09IHVuZGVmaW5lZCB8fCBzY2FsZVggPT0gbnVsbCB8fCBzY2FsZVggPT0gMSkge1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIHN3aXRjaCAodGhpcy5fY29sbGlkZV9zaGFwZSkge1xyXG4gICAgICAgICAgICAgICAgY2FzZSBMUUNvbGxpZGVTaGFwZS5DaXJjbGU6XHJcbiAgICAgICAgICAgICAgICAgICAgLy8g5ZyG5b2i56Kw5pKe5Yy65Z+f5Y2K5b6E5pu05pawXHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5fcmFkaXVzID0gdGhpcy5fcmFkaXVzICogTWF0aC5tYXgoc2NhbGVYLCBzY2FsZVkpO1xyXG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICAgICAgY2FzZSBMUUNvbGxpZGVTaGFwZS5SZWN0OlxyXG4gICAgICAgICAgICAgICAgICAgIC8vIOefqeW9oueisOaSnuWMuuWfn+WwuuWvuOabtOaWsFxyXG4gICAgICAgICAgICAgICAgICAgIC8vIGNvbnNvbGUubG9nKHRoaXMuZGF0YV9zdHJpbmcpO1xyXG4gICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLl9zaXplLndpZHRoICE9PSAxMCAmJiB0aGlzLmRhdGFfc3RyaW5nIT1cIi0xXCIpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgLy8gaWYodGhpcy5fc2l6ZS53aWR0aCA9PSAxMDUgfHwgdGhpcy5fc2l6ZS5oZWlnaHQgPT0gMTA1KXt9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLl9zaXplLndpZHRoID0gdGhpcy5fc2l6ZS53aWR0aCAqIHNjYWxlWDtcclxuICAgICAgICAgICAgICAgICAgICAgICAgLy8gIGNvbnNvbGUubG9nKFwi5pS+5aSn5YCN5pWwXCIsc2NhbGVYKTtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMuX3NpemUuaGVpZ2h0IT09IDEwICYmIHRoaXMuZGF0YV9zdHJpbmchPVwiLTFcIikge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBpZih0aGlzLl9zaXplLndpZHRoID09IDEwNSB8fCB0aGlzLl9zaXplLmhlaWdodCA9PSAxMDUpe31cclxuICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuX3NpemUuaGVpZ2h0ID0gdGhpcy5fc2l6ZS5oZWlnaHQgKiBzY2FsZVk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIGNvbnNvbGUubG9nKFwi5pS+5aSn5YCN5pWwXCIsc2NhbGVZKTtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgLy8gdGhpcy5fc2l6ZS53aWR0aCA9IHRoaXMuX3NpemUud2lkdGggKiBzY2FsZVg7XHJcbiAgICAgICAgICAgICAgICAgICAgLy8gdGhpcy5fc2l6ZS5oZWlnaHQgPSB0aGlzLl9zaXplLmhlaWdodCAqIHNjYWxlWTtcclxuICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy53b3JsZF9yZWN0KSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMud29ybGRfcmVjdC53aWR0aCA9IHRoaXMuX3NpemUud2lkdGg7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMud29ybGRfcmVjdC5oZWlnaHQgPSB0aGlzLl9zaXplLmhlaWdodDtcclxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy53b3JsZF9yZWN0LmhhbGZfd2lkdGggPSB0aGlzLl9zaXplLndpZHRoICogMC41O1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLndvcmxkX3JlY3QuaGFsZl9oZWlnaHQgPSB0aGlzLl9zaXplLmhlaWdodCAqIDAuNTtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgICAgICBjYXNlIExRQ29sbGlkZVNoYXBlLlBvbHlnb246XHJcbiAgICAgICAgICAgICAgICAgICAgLy8g5aSa6L655b2i56Kw5pKe54K55Z2Q5qCH5pu05pawXHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5fcG9seWdvbl9wb2ludHMgPSB0aGlzLl9wb2x5Z29uX3BvaW50cy5tYXAocG9pbnQgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gbmV3IFZlYzIocG9pbnQueCAqIHNjYWxlWCwgcG9pbnQueSAqIHNjYWxlWSk7XHJcbiAgICAgICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgIHRoaXMuZHJhd19zaGFwZSgpO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIGVuYWJsZV9scV9jb2xsaWRlKCkge1xyXG5cclxuICAgICAgICBpZiAodGhpcy5jb2xsaWRlX3N0YXR1cyA9PT0gTFFDb2xsaWRlU3RhdHVzLkxpdmUpIHtcclxuICAgICAgICAgICAgY29uc29sZS53YXJuKHRoaXMubm9kZS5uYW1lICsgJ+mHjeWkjea3u+WKoCcpO1xyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRoaXMuaXNfZW5hYmxlID0gdHJ1ZTtcclxuICAgICAgICB0aGlzLmNvbGxpZGVfc3RhdHVzID0gTFFDb2xsaWRlU3RhdHVzLkxpdmU7XHJcbiAgICAgICAgTFFDb2xsaWRlU3lzdGVtLmFkZF9jb2xsaWRlKHRoaXMpO1xyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyBkaXNhYmxlX2xxX2NvbGxpZGUoKSB7XHJcbiAgICAgICAgaWYgKHRoaXMuY29sbGlkZV9zdGF0dXMgIT09IExRQ29sbGlkZVN0YXR1cy5MaXZlKSB7XHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcbiAgICAgICAgdGhpcy5pc19lbmFibGUgPSBmYWxzZTtcclxuICAgICAgICB0aGlzLmNvbGxpZGVfc3RhdHVzID0gTFFDb2xsaWRlU3RhdHVzLklkbGU7XHJcbiAgICAgICAgTFFDb2xsaWRlU3lzdGVtLnJlbW92ZV9jb2xsaWRlKHRoaXMpO1xyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyB1cGRhdGVfbHFfY29sbGlkZSgpIHtcclxuXHJcbiAgICB9XHJcblxyXG4gICAgLy8gQHRzLWlnbm9yZVxyXG4gICAgLy8gcHVibGljIG9uX2NvbGxpZGUoY29sbGlkZTogTFFDb2xsaWRlKTogdm9pZCB7XHJcbiAgICAvLyAgICAgaWYoY29sbGlkZS5ub2RlLnBhcmVudC51dWlkID09IHRoaXMubm9kZS5wYXJlbnQudXVpZCl7XHJcbiAgICAvLyAgICAgICAgIHJldHVybjtcclxuICAgIC8vICAgICB9XHJcbiAgICAvLyAgICAgaWYgKExRQ29sbGlkZUNvbmZpZy5zd2l0Y2hfcHJpbnRfbG9nKSB7XHJcbiAgICAvLyAgICAgICAgIGlmKHRoaXMubm9kZS5wYXJlbnQuZ2V0Q29tcG9uZW50KFwiQmxvY2tcIikpe1xyXG4gICAgLy8gICAgICAgICAgICAgbGV0IGJsb2NrID0gdGhpcy5ub2RlLnBhcmVudC5nZXRDb21wb25lbnQoXCJCbG9ja1wiKTtcclxuICAgIC8vICAgICAgICAgICAgIGlmKGJsb2NrLmlzVG91Y2gpe1xyXG4gICAgLy8gICAgICAgICAgICAgICAgIGJsb2NrLmNoZWNrQ29sbGlzaW9uID0gdHJ1ZTtcclxuICAgIC8vICAgICAgICAgICAgICAgICAvLyBjb25zb2xlLmxvZyhcIueisOaSnlwiLHRoaXMubm9kZS5uYW1lKTtcclxuICAgIC8vICAgICAgICAgICAgICAgICBpZih0aGlzLm5vZGUubmFtZSA9PSBcInRvcFwiICl7XHJcbiAgICAvLyAgICAgICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKFwi56Kw5Yiw5LiK6L6557yYXCIpO1xyXG4gICAgLy8gICAgICAgICAgICAgICAgICAgICBibG9jay5tb3ZlVXAgPSBmYWxzZTtcclxuICAgIC8vICAgICAgICAgICAgICAgICAgICAgaWYoYmxvY2sudG91Y2hQb2ludFkgPiAodGhpcy5ub2RlLnBhcmVudC55K3RoaXMubm9kZS5oZWlnaHQpKXtcclxuICAgIC8vICAgICAgICAgICAgICAgICAgICAgICAgIGJsb2NrLm1vdmVZID0gMTtcclxuICAgIC8vICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgLy8gICAgICAgICAgICAgICAgIH1cclxuICAgIC8vICAgICAgICAgICAgICAgICBpZih0aGlzLm5vZGUubmFtZSA9PT0gXCJkb3duXCIpe1xyXG4gICAgLy8gICAgICAgICAgICAgICAgICAgICBibG9jay5tb3ZlRG93biA9IGZhbHNlO1xyXG4gICAgLy8gICAgICAgICAgICAgICAgICAgICBjb25zb2xlLmxvZyhcIueisOWIsOS4i+i+uee8mFwiKTtcclxuICAgIC8vICAgICAgICAgICAgICAgICAgICAgaWYoYmxvY2sudG91Y2hQb2ludFkgPCAodGhpcy5ub2RlLnBhcmVudC55ICkpe1xyXG4gICAgLy8gICAgICAgICAgICAgICAgICAgICAgICAgYmxvY2subW92ZVkgPSAtMTtcclxuICAgIC8vICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgLy8gICAgICAgICAgICAgICAgIH1cclxuICAgIC8vICAgICAgICAgICAgICAgICBpZih0aGlzLm5vZGUubmFtZSA9PT0gXCJsZWZ0XCIgKXtcclxuICAgIC8vICAgICAgICAgICAgICAgICAgICAgYmxvY2subW92ZUxlZnQgPSBmYWxzZTtcclxuICAgIC8vICAgICAgICAgICAgICAgICAgICAgY29uc29sZS5sb2coXCLnorDliLDlt6bovrnnvJhcIik7XHJcbiAgICAvLyAgICAgICAgICAgICAgICAgICAgIGlmKGJsb2NrLnRvdWNoUG9pbnRYIDwgKHRoaXMubm9kZS5wYXJlbnQueCAtIHRoaXMubm9kZS5wYXJlbnQud2lkdGgpKXtcclxuICAgIC8vICAgICAgICAgICAgICAgICAgICAgICAgIGJsb2NrLm1vdmVYID0gLTE7XHJcbiAgICAvLyAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgIC8vICAgICAgICAgICAgICAgICB9XHJcbiAgICAvLyAgICAgICAgICAgICAgICAgaWYodGhpcy5ub2RlLm5hbWUgPT09IFwicmlnaHRcIil7XHJcblxyXG4gICAgLy8gICAgICAgICAgICAgICAgICAgICBibG9jay5tb3ZlUmlnaHQgPSBmYWxzZTtcclxuICAgIC8vICAgICAgICAgICAgICAgICAgICAgY29uc29sZS5sb2coXCLnorDliLDlj7PovrnnvJhcIik7XHJcbiAgICAvLyAgICAgICAgICAgICAgICAgICAgIGlmKGJsb2NrLnRvdWNoUG9pbnRYID4gKHRoaXMubm9kZS5wYXJlbnQueCkpe1xyXG4gICAgLy8gICAgICAgICAgICAgICAgICAgICAgICAgYmxvY2subW92ZVggPSAxO1xyXG4gICAgLy8gICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAvLyAgICAgICAgICAgICAgICAgfVxyXG4gICAgLy8gICAgICAgICAgICAgfVxyXG4gICAgLy8gICAgICAgICB9XHJcbiAgICAgICAgIFxyXG4gICAgLy8gICAgIH1cclxuICAgIC8vIH1cclxuXHJcbiAgICAvL0B0cy1pZ25vcmVcclxuICAgIHB1YmxpYyBvbl9lbnRlcihjb2xsaWRlOiBMUUNvbGxpZGUpIHtcclxuICAgICAgICBpZih0aGlzLmRpc2FibGVDb2xsaWRlcihjb2xsaWRlKSl7XHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcbiAgICAgICAgLy8gaWYgKExRQ29sbGlkZUNvbmZpZy5zd2l0Y2hfcHJpbnRfbG9nKSB7XHJcbiAgICAgICAgLy8gICAgIGNvbnNvbGUubG9nKHRoaXMubm9kZS5uYW1lICsgJyBvbl9lbnRlcicpO1xyXG4gICAgICAgIC8vIH1cclxuICAgIH1cclxuXHJcbiAgICAvL0B0cy1pZ25vcmVcclxuICAgIHB1YmxpYyBvbl9leGl0KGNvbGxpZGU6IExRQ29sbGlkZSkge1xyXG4gICAgICAgIGlmKHRoaXMuZGlzYWJsZUNvbGxpZGVyKGNvbGxpZGUpKXtcclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAoTFFDb2xsaWRlQ29uZmlnLnN3aXRjaF9wcmludF9sb2cpIHtcclxuICAgICAgICAgICAgaWYodGhpcy5ub2RlLnBhcmVudC5nZXRDb21wb25lbnQoXCJCbG9ja1wiKSl7XHJcbiAgICAgICAgICAgICAgICBsZXQgYmxvY2sgPSB0aGlzLm5vZGUucGFyZW50LmdldENvbXBvbmVudChcIkJsb2NrXCIpO1xyXG4gICAgICAgICAgICAgICAgLy8gaWYoIWJsb2NrLmlzVG91Y2gpe1xyXG4gICAgICAgICAgICAgICAgLy8gICAgIHJldHVybjtcclxuICAgICAgICAgICAgICAgIC8vIH1cclxuICAgICAgICAgICAgICAgIGJsb2NrLmNoZWNrQ29sbGlzaW9uID0gZmFsc2U7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYodGhpcy5ub2RlLm5hbWUgPT0gXCJ0b3BcIiApe1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBibG9jay5tb3ZlVXAgPSB0cnVlO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICBpZih0aGlzLm5vZGUubmFtZSA9PT0gXCJkb3duXCIpe1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBibG9jay5tb3ZlRG93biA9IHRydWU7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIGlmKHRoaXMubm9kZS5uYW1lID09PSBcImxlZnRcIiApe1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBibG9jay5tb3ZlTGVmdCA9IHRydWU7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIGlmKHRoaXMubm9kZS5uYW1lID09PSBcInJpZ2h0XCIpe1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBibG9jay5tb3ZlUmlnaHQgPSB0cnVlO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgb25fY29sbGlkZShjb2xsaWRlOiBMUUNvbGxpZGUpOiB2b2lkIHtcclxuICAgICAgICBpZih0aGlzLmRpc2FibGVDb2xsaWRlcihjb2xsaWRlKSl7XHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKExRQ29sbGlkZUNvbmZpZy5zd2l0Y2hfcHJpbnRfbG9nKSB7XHJcbiAgICAgICAgICAgIGlmKHRoaXMubm9kZS5wYXJlbnQuZ2V0Q29tcG9uZW50KFwiQmxvY2tcIikpe1xyXG4gICAgICAgICAgICAgICAgbGV0IGJsb2NrID0gdGhpcy5ub2RlLnBhcmVudC5nZXRDb21wb25lbnQoXCJCbG9ja1wiKTtcclxuICAgICAgICAgICAgICAgIGxldCBqZyA9IGZhbHNlO1xyXG4gICAgICAgICAgICAgICAgaWYoYmxvY2suaXNUb3VjaCl7XHJcbiAgICAgICAgICAgICAgICAgICAgYmxvY2suY2hlY2tDb2xsaXNpb24gPSB0cnVlO1xyXG4gICAgICAgICAgICAgICAgICAgIC8vIGNvbnNvbGUubG9nKFwi56Kw5pKeXCIsdGhpcy5ub2RlLm5hbWUpO1xyXG4gICAgICAgICAgICAgICAgICAgIGlmKHRoaXMubm9kZS5uYW1lID09IFwidG9wXCIgKXtcclxuICAgICAgICAgICAgICAgICAgICAgICAgLy8gY29uc29sZS5sb2coY29sbGlkZS5ub2RlLnBhcmVudC5uYW1lKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgYmxvY2subW92ZVVwID0gZmFsc2U7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmKGJsb2NrLnRvdWNoUG9pbnRZID4gKHRoaXMubm9kZS5wYXJlbnQueSt0aGlzLm5vZGUucGFyZW50LmhlaWdodCkpe1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYmxvY2subW92ZVkgPSAxO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIGNvbnNvbGUubG9nKFwi56Kw5Yiw5LiK6L6557yYXCIpO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICBpZih0aGlzLm5vZGUubmFtZSA9PT0gXCJkb3duXCIpe1xyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgYmxvY2subW92ZURvd24gPSBmYWxzZTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgaWYoYmxvY2sudG91Y2hQb2ludFkgPCAodGhpcy5ub2RlLnBhcmVudC55ICkpe1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYmxvY2subW92ZVkgPSAtMTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBjb25zb2xlLmxvZyhcIueisOWIsOS4i+i+uee8mFwiKTtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgaWYodGhpcy5ub2RlLm5hbWUgPT09IFwibGVmdFwiICl7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGJsb2NrLm1vdmVMZWZ0ID0gZmFsc2U7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmKGJsb2NrLnRvdWNoUG9pbnRYIDwgKHRoaXMubm9kZS5wYXJlbnQueCAtIHRoaXMubm9kZS5wYXJlbnQud2lkdGgpKXtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJsb2NrLm1vdmVYID0gLTE7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgaWYodGhpcy5ub2RlLm5hbWUgPT09IFwicmlnaHRcIil7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGJsb2NrLm1vdmVSaWdodCA9IGZhbHNlO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBpZihibG9jay50b3VjaFBvaW50WCA+ICh0aGlzLm5vZGUucGFyZW50LngpKXtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJsb2NrLm1vdmVYID0gMTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgZGlzYWJsZUNvbGxpZGVyKGNvbGxpZGU6IExRQ29sbGlkZSl7XHJcbiAgICAgICAgbGV0IGpnID0gZmFsc2U7XHJcbiAgICAgICAgaWYoY29sbGlkZS5ub2RlICYmIHRoaXMubm9kZSl7XHJcbiAgICAgICAgICAgIGlmKGNvbGxpZGUubm9kZS5wYXJlbnQgJiYgdGhpcy5ub2RlLnBhcmVudCl7XHJcbiAgICAgICAgICAgICAgICBpZihjb2xsaWRlLm5vZGUucGFyZW50LnV1aWQgPT0gdGhpcy5ub2RlLnBhcmVudC51dWlkKXtcclxuICAgICAgICAgICAgICAgICAgICBqZyA9IHRydWU7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBpZih0aGlzLm5vZGUucGFyZW50LmdldENvbXBvbmVudChcIkJsb2NrXCIpKXtcclxuICAgICAgICAgICAgICAgICAgICBsZXQgYmxvY2sgPSB0aGlzLm5vZGUucGFyZW50LmdldENvbXBvbmVudChcIkJsb2NrXCIpO1xyXG4gICAgICAgICAgICAgICAgICAgIGlmKGJsb2NrLnR5cGUgPT0gMSB8fCBibG9jay50eXBlID09IDEwIHx8IGJsb2NrLnR5cGUgPT0gOSl7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmKGNvbGxpZGUubm9kZS5wYXJlbnQgPT0gYmxvY2suYmxvY2tfSW5mby5ub2RlKXtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGpnID0gdHJ1ZTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuXHJcblxyXG4gICAgICAgIHJldHVybiBqZztcclxuICAgIH1cclxufSJdfQ== //------QC-SOURCE-SPLIT------ (function() { var nodeEnv = typeof require !== 'undefined' && typeof process !== 'undefined'; var __module = nodeEnv ? module : {exports:{}}; - var __filename = 'preview-scripts/assets/shop/script/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, 'de906iE/HVHpI6VO7IMvKaI', 'item'); -// shop/script/item.ts - -"use strict"; -var __extends = (this && this.__extends) || (function () { - var extendStatics = function (d, b) { - extendStatics = Object.setPrototypeOf || - ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) || - function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; }; - return extendStatics(d, b); - }; - return function (d, b) { - extendStatics(d, b); - function __() { this.constructor = d; } - d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); - }; -})(); -var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) { - var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; - if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc); - else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; - return c > 3 && r && Object.defineProperty(target, key, r), r; -}; -Object.defineProperty(exports, "__esModule", { value: true }); -var _a = cc._decorator, ccclass = _a.ccclass, property = _a.property; -var NewClass = /** @class */ (function (_super) { - __extends(NewClass, _super); - function NewClass() { - var _this = _super !== null && _super.apply(this, arguments) || this; - _this.label = null; - _this.text = 'hello'; - return _this; - // update (dt) {} - } - // LIFE-CYCLE CALLBACKS: - // onLoad () {} - NewClass.prototype.start = function () { - }; - //购买商品道具 - NewClass.prototype.buyProp = function (propName) { - // if(cc.fx.GameConfig.GM_INFO.coin < 1500){ - // MiniGameSdk.API.showToast("金币不足,无法购买道具"); - // return; - // } - // let propWindow = this.node.parent.parent.getChildByName("propWindow"); - // propWindow.active = false; - // cc.fx.GameConfig.GM_INFO.coin -= 1500; - }; - __decorate([ - property(cc.Label) - ], NewClass.prototype, "label", void 0); - __decorate([ - property - ], NewClass.prototype, "text", void 0); - NewClass = __decorate([ - ccclass - ], NewClass); - return NewClass; -}(cc.Component)); -exports.default = NewClass; - -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,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImFzc2V0c1xcc2hvcFxcc2NyaXB0XFxpdGVtLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUVNLElBQUEsS0FBd0IsRUFBRSxDQUFDLFVBQVUsRUFBbkMsT0FBTyxhQUFBLEVBQUUsUUFBUSxjQUFrQixDQUFDO0FBRzVDO0lBQXNDLDRCQUFZO0lBQWxEO1FBQUEscUVBMkJDO1FBeEJHLFdBQUssR0FBYSxJQUFJLENBQUM7UUFHdkIsVUFBSSxHQUFXLE9BQU8sQ0FBQzs7UUFvQnZCLGlCQUFpQjtJQUNyQixDQUFDO0lBcEJHLHdCQUF3QjtJQUV4QixlQUFlO0lBRWYsd0JBQUssR0FBTDtJQUVBLENBQUM7SUFFRCxRQUFRO0lBQ1IsMEJBQU8sR0FBUCxVQUFRLFFBQVE7UUFDWiw0Q0FBNEM7UUFDNUMsZ0RBQWdEO1FBQ2hELGNBQWM7UUFDZCxJQUFJO1FBQ0oseUVBQXlFO1FBQ3pFLDZCQUE2QjtRQUM3Qix5Q0FBeUM7SUFDN0MsQ0FBQztJQXJCRDtRQURDLFFBQVEsQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDOzJDQUNJO0lBR3ZCO1FBREMsUUFBUTswQ0FDYztJQU5OLFFBQVE7UUFENUIsT0FBTztPQUNhLFFBQVEsQ0EyQjVCO0lBQUQsZUFBQztDQTNCRCxBQTJCQyxDQTNCcUMsRUFBRSxDQUFDLFNBQVMsR0EyQmpEO2tCQTNCb0IsUUFBUSIsImZpbGUiOiIiLCJzb3VyY2VSb290IjoiLyIsInNvdXJjZXNDb250ZW50IjpbIlxuXG5jb25zdCB7IGNjY2xhc3MsIHByb3BlcnR5IH0gPSBjYy5fZGVjb3JhdG9yO1xuXG5AY2NjbGFzc1xuZXhwb3J0IGRlZmF1bHQgY2xhc3MgTmV3Q2xhc3MgZXh0ZW5kcyBjYy5Db21wb25lbnQge1xuXG4gICAgQHByb3BlcnR5KGNjLkxhYmVsKVxuICAgIGxhYmVsOiBjYy5MYWJlbCA9IG51bGw7XG5cbiAgICBAcHJvcGVydHlcbiAgICB0ZXh0OiBzdHJpbmcgPSAnaGVsbG8nO1xuICAgIC8vIExJRkUtQ1lDTEUgQ0FMTEJBQ0tTOlxuXG4gICAgLy8gb25Mb2FkICgpIHt9XG5cbiAgICBzdGFydCgpIHtcblxuICAgIH1cblxuICAgIC8v6LSt5Lmw5ZWG5ZOB6YGT5YW3XG4gICAgYnV5UHJvcChwcm9wTmFtZSkge1xuICAgICAgICAvLyBpZihjYy5meC5HYW1lQ29uZmlnLkdNX0lORk8uY29pbiA8IDE1MDApe1xuICAgICAgICAvLyAgICAgTWluaUdhbWVTZGsuQVBJLnNob3dUb2FzdChcIumHkeW4geS4jei2s++8jOaXoOazlei0reS5sOmBk+WFt1wiKTtcbiAgICAgICAgLy8gICAgIHJldHVybjtcbiAgICAgICAgLy8gfVxuICAgICAgICAvLyBsZXQgcHJvcFdpbmRvdyA9IHRoaXMubm9kZS5wYXJlbnQucGFyZW50LmdldENoaWxkQnlOYW1lKFwicHJvcFdpbmRvd1wiKTtcbiAgICAgICAgLy8gcHJvcFdpbmRvdy5hY3RpdmUgPSBmYWxzZTtcbiAgICAgICAgLy8gY2MuZnguR2FtZUNvbmZpZy5HTV9JTkZPLmNvaW4gLT0gMTUwMDtcbiAgICB9XG5cbiAgICAvLyB1cGRhdGUgKGR0KSB7fVxufVxuIl19 -//------QC-SOURCE-SPLIT------ - - (function() { - var nodeEnv = typeof require !== 'undefined' && typeof process !== 'undefined'; - var __module = nodeEnv ? module : {exports:{}}; - var __filename = 'preview-scripts/tiledmap-optimize-resource/Script/TmoObjectGroup.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, '30e2eSQWDNKI69FbaYfN62j', 'TmoObjectGroup'); -// Script/TmoObjectGroup.js - -"use strict"; - -exports.__esModule = true; -exports["default"] = void 0; -// Learn cc.Class: -// - https://docs.cocos.com/creator/manual/en/scripting/class.html -// Learn Attribute: -// - https://docs.cocos.com/creator/manual/en/scripting/reference/attributes.html -// Learn life-cycle callbacks: -// - https://docs.cocos.com/creator/manual/en/scripting/life-cycle-callbacks.html - -var TmoSprite = require("./TmoSprite"); -var _default = cc.Class({ - "extends": cc.TiledObjectGroup, - _init: function _init(groupInfo, mapInfo, texGrids, tiledMap) { - var TiledMap = cc.TiledMap; - var TMXObjectType = TiledMap.TMXObjectType; - var Orientation = TiledMap.Orientation; - var StaggerAxis = TiledMap.StaggerAxis; - var TileFlag = TiledMap.TileFlag; - var FLIPPED_MASK = TileFlag.FLIPPED_MASK; - var FLAG_HORIZONTAL = TileFlag.HORIZONTAL; - var FLAG_VERTICAL = TileFlag.VERTICAL; - this._groupName = groupInfo.name; - this._positionOffset = groupInfo.offset; - this._mapInfo = mapInfo; - this._properties = groupInfo.getProperties(); - this._offset = cc.v2(groupInfo.offset.x, -groupInfo.offset.y); - this._opacity = groupInfo._opacity; - var mapSize = mapInfo._mapSize; - var tileSize = mapInfo._tileSize; - var width = 0, - height = 0; - if (mapInfo.orientation === Orientation.HEX) { - if (mapInfo.getStaggerAxis() === StaggerAxis.STAGGERAXIS_X) { - height = tileSize.height * (mapSize.height + 0.5); - width = (tileSize.width + mapInfo.getHexSideLength()) * Math.floor(mapSize.width / 2) + tileSize.width * (mapSize.width % 2); - } else { - width = tileSize.width * (mapSize.width + 0.5); - height = (tileSize.height + mapInfo.getHexSideLength()) * Math.floor(mapSize.height / 2) + tileSize.height * (mapSize.height % 2); - } - } else if (mapInfo.orientation === Orientation.ISO) { - var wh = mapSize.width + mapSize.height; - width = tileSize.width * 0.5 * wh; - height = tileSize.height * 0.5 * wh; - } else { - width = mapSize.width * tileSize.width; - height = mapSize.height * tileSize.height; - } - this.node.setContentSize(width, height); - var leftTopX = width * this.node.anchorX; - var leftTopY = height * (1 - this.node.anchorY); - var objects = groupInfo._objects; - var aliveNodes = {}; - - // 生成映射Map { Texture2D: textureIndex } - var textureIndexMap = new Map(); - var objectTextures = tiledMap.getObjectTextures(); - objectTextures.forEach(function (texture, idx) { - return textureIndexMap.set(texture, idx); - }); - for (var i = 0, l = objects.length; i < l; i++) { - var object = objects[i]; - var objType = object.type; - object.offset = cc.v2(object.x, object.y); - var points = object.points || object.polylinePoints; - if (points) { - for (var pi = 0; pi < points.length; pi++) { - points[pi].y *= -1; - } - } - if (Orientation.ISO !== mapInfo.orientation) { - object.y = height - object.y; - } else { - var posIdxX = object.x / tileSize.height; - var posIdxY = object.y / tileSize.height; - object.x = tileSize.width * 0.5 * (mapSize.height + posIdxX - posIdxY); - object.y = tileSize.height * 0.5 * (mapSize.width + mapSize.height - posIdxX - posIdxY); - } - if (objType === TMXObjectType.TEXT) { - var textName = "text" + object.id; - aliveNodes[textName] = true; - var textNode = this.node.getChildByName(textName); - if (!textNode) { - textNode = new cc.Node(); - } - textNode.active = object.visible; - textNode.anchorX = 0; - textNode.anchorY = 1; - textNode.angle = -object.rotation; - textNode.x = object.x - leftTopX; - textNode.y = object.y - leftTopY; - textNode.name = textName; - textNode.parent = this.node; - textNode.color = object.color; - textNode.opacity = this._opacity; - textNode.setSiblingIndex(i); - var label = textNode.getComponent(cc.Label); - if (!label) { - label = textNode.addComponent(cc.Label); - } - label.overflow = cc.Label.Overflow.SHRINK; - label.lineHeight = object.height; - label.string = object.text; - label.horizontalAlign = object.halign; - label.verticalAlign = object.valign; - label.fontSize = object.pixelsize; - textNode.width = object.width; - textNode.height = object.height; - } - if (objType === TMXObjectType.IMAGE) { - var gid = object.gid; - var grid = texGrids[(gid & FLIPPED_MASK) >>> 0]; - if (!grid) continue; - var tileset = grid.tileset; - var imgName = "img" + object.id; - aliveNodes[imgName] = true; - var imgNode = this.node.getChildByName(imgName); - var imgWidth = object.width || grid.width; - var imgHeight = object.height || grid.height; - var tileOffsetX = tileset.tileOffset.x; - var tileOffsetY = tileset.tileOffset.y; - - // Delete image nodes implemented as private nodes - // Use cc.Node to implement node-level requirements - if (imgNode instanceof cc.PrivateNode) { - imgNode.removeFromParent(); - imgNode.destroy(); - imgNode = null; - } - if (!imgNode) { - imgNode = new cc.Node(); - } - if (Orientation.ISO == mapInfo.orientation) { - imgNode.anchorX = 0.5 + tileOffsetX / imgWidth; - imgNode.anchorY = tileOffsetY / imgHeight; - } else { - imgNode.anchorX = tileOffsetX / imgWidth; - imgNode.anchorY = tileOffsetY / imgHeight; - } - imgNode.active = object.visible; - imgNode.angle = -object.rotation; - imgNode.x = object.x - leftTopX; - imgNode.y = object.y - leftTopY; - imgNode.name = imgName; - imgNode.parent = this.node; - imgNode.opacity = this._opacity; - imgNode.setSiblingIndex(i); - imgNode._tiledMap = tiledMap; - var sp = imgNode.getComponent(TmoSprite); - if (!sp) { - sp = imgNode.addComponent(TmoSprite); - } - var spf = sp.spriteFrame; - if (!spf) { - spf = new cc.SpriteFrame(); - } - if ((gid & FLAG_HORIZONTAL) >>> 0) { - spf.setFlipX(true); - } else { - spf.setFlipX(false); - } - if ((gid & FLAG_VERTICAL) >>> 0) { - spf.setFlipY(true); - } else { - spf.setFlipY(false); - } - var sourceImage = grid.tileset.sourceImage; - spf.setTexture(sourceImage, cc.rect(grid)); - sp.spriteFrame = spf; - sp.setVertsDirty(); - - // object group may has no width or height info - imgNode.width = imgWidth; - imgNode.height = imgHeight; - - // 收集图集 更新textureIndexMap - if (!textureIndexMap.has(sourceImage)) { - textureIndexMap.set(sourceImage, objectTextures.length); - objectTextures.push(sourceImage); - } - - // 设置textureIndex - var textureIndex = textureIndexMap.get(sourceImage); - sp.setTextureIdx(textureIndex + 1); - } - } - this._objects = objects; - - // destroy useless node - var children = this.node.children; - var uselessExp = /^(?:img|text)\d+$/; - for (var _i = 0, n = children.length; _i < n; _i++) { - var c = children[_i]; - var cName = c._name; - var isUseless = uselessExp.test(cName); - if (isUseless && !aliveNodes[cName]) c.destroy(); - } - } -}); -exports["default"] = _default; -module.exports = exports["default"]; - -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,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInBhY2thZ2VzXFxUaWxlZE1hcE9wdGltaXplclxccmVzb3VyY2VcXFNjcmlwdFxcVG1vT2JqZWN0R3JvdXAuanMiXSwibmFtZXMiOlsiVG1vU3ByaXRlIiwicmVxdWlyZSIsIl9kZWZhdWx0IiwiY2MiLCJDbGFzcyIsIlRpbGVkT2JqZWN0R3JvdXAiLCJfaW5pdCIsImdyb3VwSW5mbyIsIm1hcEluZm8iLCJ0ZXhHcmlkcyIsInRpbGVkTWFwIiwiVGlsZWRNYXAiLCJUTVhPYmplY3RUeXBlIiwiT3JpZW50YXRpb24iLCJTdGFnZ2VyQXhpcyIsIlRpbGVGbGFnIiwiRkxJUFBFRF9NQVNLIiwiRkxBR19IT1JJWk9OVEFMIiwiSE9SSVpPTlRBTCIsIkZMQUdfVkVSVElDQUwiLCJWRVJUSUNBTCIsIl9ncm91cE5hbWUiLCJuYW1lIiwiX3Bvc2l0aW9uT2Zmc2V0Iiwib2Zmc2V0IiwiX21hcEluZm8iLCJfcHJvcGVydGllcyIsImdldFByb3BlcnRpZXMiLCJfb2Zmc2V0IiwidjIiLCJ4IiwieSIsIl9vcGFjaXR5IiwibWFwU2l6ZSIsIl9tYXBTaXplIiwidGlsZVNpemUiLCJfdGlsZVNpemUiLCJ3aWR0aCIsImhlaWdodCIsIm9yaWVudGF0aW9uIiwiSEVYIiwiZ2V0U3RhZ2dlckF4aXMiLCJTVEFHR0VSQVhJU19YIiwiZ2V0SGV4U2lkZUxlbmd0aCIsIk1hdGgiLCJmbG9vciIsIklTTyIsIndoIiwibm9kZSIsInNldENvbnRlbnRTaXplIiwibGVmdFRvcFgiLCJhbmNob3JYIiwibGVmdFRvcFkiLCJhbmNob3JZIiwib2JqZWN0cyIsIl9vYmplY3RzIiwiYWxpdmVOb2RlcyIsInRleHR1cmVJbmRleE1hcCIsIk1hcCIsIm9iamVjdFRleHR1cmVzIiwiZ2V0T2JqZWN0VGV4dHVyZXMiLCJmb3JFYWNoIiwidGV4dHVyZSIsImlkeCIsInNldCIsImkiLCJsIiwibGVuZ3RoIiwib2JqZWN0Iiwib2JqVHlwZSIsInR5cGUiLCJwb2ludHMiLCJwb2x5bGluZVBvaW50cyIsInBpIiwicG9zSWR4WCIsInBvc0lkeFkiLCJURVhUIiwidGV4dE5hbWUiLCJpZCIsInRleHROb2RlIiwiZ2V0Q2hpbGRCeU5hbWUiLCJOb2RlIiwiYWN0aXZlIiwidmlzaWJsZSIsImFuZ2xlIiwicm90YXRpb24iLCJwYXJlbnQiLCJjb2xvciIsIm9wYWNpdHkiLCJzZXRTaWJsaW5nSW5kZXgiLCJsYWJlbCIsImdldENvbXBvbmVudCIsIkxhYmVsIiwiYWRkQ29tcG9uZW50Iiwib3ZlcmZsb3ciLCJPdmVyZmxvdyIsIlNIUklOSyIsImxpbmVIZWlnaHQiLCJzdHJpbmciLCJ0ZXh0IiwiaG9yaXpvbnRhbEFsaWduIiwiaGFsaWduIiwidmVydGljYWxBbGlnbiIsInZhbGlnbiIsImZvbnRTaXplIiwicGl4ZWxzaXplIiwiSU1BR0UiLCJnaWQiLCJncmlkIiwidGlsZXNldCIsImltZ05hbWUiLCJpbWdOb2RlIiwiaW1nV2lkdGgiLCJpbWdIZWlnaHQiLCJ0aWxlT2Zmc2V0WCIsInRpbGVPZmZzZXQiLCJ0aWxlT2Zmc2V0WSIsIlByaXZhdGVOb2RlIiwicmVtb3ZlRnJvbVBhcmVudCIsImRlc3Ryb3kiLCJfdGlsZWRNYXAiLCJzcCIsInNwZiIsInNwcml0ZUZyYW1lIiwiU3ByaXRlRnJhbWUiLCJzZXRGbGlwWCIsInNldEZsaXBZIiwic291cmNlSW1hZ2UiLCJzZXRUZXh0dXJlIiwicmVjdCIsInNldFZlcnRzRGlydHkiLCJoYXMiLCJwdXNoIiwidGV4dHVyZUluZGV4IiwiZ2V0Iiwic2V0VGV4dHVyZUlkeCIsImNoaWxkcmVuIiwidXNlbGVzc0V4cCIsIm4iLCJjIiwiY05hbWUiLCJfbmFtZSIsImlzVXNlbGVzcyIsInRlc3QiLCJleHBvcnRzIiwibW9kdWxlIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBLElBQU1BLFNBQVMsR0FBR0MsT0FBTyxDQUFDLGFBQWEsQ0FBQztBQUFDLElBQUFDLFFBQUEsR0FFMUJDLEVBQUUsQ0FB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RyxDQUFDSixXQUFXLENBQUMsRUFBRTtVQUNuQ3RFLGVBQWUsQ0FBQ08sR0FBRyxDQUFDK0QsV0FBVyxFQUFFcEUsY0FBYyxDQUFDUSxNQUFNLENBQUM7VUFDdkRSLGNBQWMsQ0FBQ3lFLElBQUksQ0FBQ0wsV0FBVyxDQUFDO1FBQ3BDOztRQUVBO1FBQ0EsSUFBSU0sWUFBWSxHQUFHNUUsZUFBZSxDQUFDNkUsR0FBRyxDQUFDUCxXQUFXLENBQUM7UUFDbkROLEVBQUUsQ0FBQ2MsYUFBYSxDQUFDRixZQUFZLEdBQUcsQ0FBQyxDQUFDO01BQ3RDO0lBQ0o7SUFDQSxJQUFJLENBQUM5RSxRQUFRLEdBQUdELE9BQU87O0lBR3ZCO0lBQ0EsSUFBSWtGLFFBQVEsR0FBRyxJQUFJLENBQUN4RixJQUFJLENBQUN3RixRQUFRO0lBQ2pDLElBQUlDLFVBQVUsR0FBRyxtQkFBbUI7SUFDcEMsS0FBSyxJQUFJeEUsRUFBQyxHQUFHLENBQUMsRUFBRXlFLENBQUMsR0FBR0YsUUFBUSxDQUFDckUsTUFBTSxFQUFFRixFQUFDLEdBQUd5RSxDQUFDLEVBQUV6RSxFQUFDLEVBQUUsRUFBRTtNQUM3QyxJQUFJMEUsQ0FBQyxHQUFHSCxRQUFRLENBQUN2RSxFQUFDLENBQUM7TUFDbkIsSUFBSTJFLEtBQUssR0FBR0QsQ0FBQyxDQUFDRSxLQUFLO01BQ25CLElBQUlDLFNBQVMsR0FBR0wsVUFBVSxDQUFDTSxJQUFJLENBQUNILEtBQUssQ0FBQztNQUN0QyxJQUFJRSxTQUFTLElBQUksQ0FBQ3RGLFVBQVUsQ0FBQ29GLEtBQUssQ0FBQyxFQUFFRCxDQUFDLENBQUNwQixPQUFPLEVBQUU7SUFDcEQ7RUFFSjtBQUNKLENBQUMsQ0FBQztBQUFBeUIsT0FBQSxjQUFBOUksUUFBQTtBQUFBK0ksTUFBQSxDQUFBRCxPQUFBLEdBQUFBLE9BQUEiLCJzb3VyY2VSb290IjoiLyIsInNvdXJjZXNDb250ZW50IjpbIi8vIExlYXJuIGNjLkNsYXNzOlxyXG4vLyAgLSBodHRwczovL2RvY3MuY29jb3MuY29tL2NyZWF0b3IvbWFudWFsL2VuL3NjcmlwdGluZy9jbGFzcy5odG1sXHJcbi8vIExlYXJuIEF0dHJpYnV0ZTpcclxuLy8gIC0gaHR0cHM6Ly9kb2NzLmNvY29zLmNvbS9jcmVhdG9yL21hbnVhbC9lbi9zY3JpcHRpbmcvcmVmZXJlbmNlL2F0dHJpYnV0ZXMuaHRtbFxyXG4vLyBMZWFybiBsaWZlLWN5Y2xlIGNhbGxiYWNrczpcclxuLy8gIC0gaHR0cHM6Ly9kb2NzLmNvY29zLmNvbS9jcmVhdG9yL21hbnVhbC9lbi9zY3JpcHRpbmcvbGlmZS1jeWNsZS1jYWxsYmFja3MuaHRtbFxyXG5cclxuY29uc3QgVG1vU3ByaXRlID0gcmVxdWlyZShcIi4vVG1vU3ByaXRlXCIpO1xyXG5cclxuZXhwb3J0IGRlZmF1bHQgY2MuQ2xhc3Moe1xyXG4gICAgZXh0ZW5kczogY2MuVGlsZWRPYmplY3RHcm91cCxcclxuXHJcbiAgICBfaW5pdChncm91cEluZm8sIG1hcEluZm8sIHRleEdyaWRzLCB0aWxlZE1hcCkge1xyXG4gICAgICAgIGNvbnN0IFRpbGVkTWFwID0gY2MuVGlsZWRNYXA7XHJcbiAgICAgICAgY29uc3QgVE1YT2JqZWN0VHlwZSA9IFRpbGVkTWFwLlRNWE9iamVjdFR5cGU7XHJcbiAgICAgICAgY29uc3QgT3JpZW50YXRpb24gPSBUaWxlZE1hcC5PcmllbnRhdGlvbjtcclxuICAgICAgICBjb25zdCBTdGFnZ2VyQXhpcyA9IFRpbGVkTWFwLlN0YWdnZXJBeGlzO1xyXG4gICAgICAgIGNvbnN0IFRpbGVGbGFnID0gVGlsZWRNYXAuVGlsZUZsYWc7XHJcbiAgICAgICAgY29uc3QgRkxJUFBFRF9NQVNLID0gVGlsZUZsYWcuRkxJUFBFRF9NQVNLO1xyXG4gICAgICAgIGNvbnN0IEZMQUdfSE9SSVpPTlRBTCA9IFRpbGVGbGFnLkhPUklaT05UQUw7XHJcbiAgICAgICAgY29uc3QgRkxBR19WRVJUSUNBTCA9IFRpbGVGbGFnLlZFUlRJQ0FMO1xyXG5cclxuICAgICAgICB0aGlzLl9ncm91cE5hbWUgPSBncm91cEluZm8ubmFtZTtcclxuICAgICAgICB0aGlzLl9wb3NpdGlvbk9mZnNldCA9IGdyb3VwSW5mby5vZmZzZXQ7XHJcbiAgICAgICAgdGhpcy5fbWFwSW5mbyA9IG1hcEluZm87XHJcbiAgICAgICAgdGhpcy5fcHJvcGVydGllcyA9IGdyb3VwSW5mby5nZXRQcm9wZXJ0aWVzKCk7XHJcbiAgICAgICAgdGhpcy5fb2Zmc2V0ID0gY2MudjIoZ3JvdXBJbmZvLm9mZnNldC54LCAtZ3JvdXBJbmZvLm9mZnNldC55KTtcclxuICAgICAgICB0aGlzLl9vcGFjaXR5ID0gZ3JvdXBJbmZvLl9vcGFjaXR5O1xyXG5cclxuICAgICAgICBsZXQgbWFwU2l6ZSA9IG1hcEluZm8uX21hcFNpemU7XHJcbiAgICAgICAgbGV0IHRpbGVTaXplID0gbWFwSW5mby5fdGlsZVNpemU7XHJcbiAgICAgICAgbGV0IHdpZHRoID0gMCwgaGVpZ2h0ID0gMDtcclxuICAgICAgICBpZiAobWFwSW5mby5vcmllbnRhdGlvbiA9PT0gT3JpZW50YXRpb24uSEVYKSB7XHJcbiAgICAgICAgICAgIGlmIChtYXBJbmZvLmdldFN0YWdnZXJBeGlzKCkgPT09IFN0YWdnZXJBeGlzLlNUQUdHRVJBWElTX1gpIHtcclxuICAgICAgICAgICAgICAgIGhlaWdodCA9IHRpbGVTaXplLmhlaWdodCAqIChtYXBTaXplLmhlaWdodCArIDAuNSk7XHJcbiAgICAgICAgICAgICAgICB3aWR0aCA9ICh0aWxlU2l6ZS53aWR0aCArIG1hcEluZm8uZ2V0SGV4U2lkZUxlbmd0aCgpKSAqIE1hdGguZmxvb3IobWFwU2l6ZS53aWR0aCAvIDIpICsgdGlsZVNpemUud2lkdGggKiAobWFwU2l6ZS53aWR0aCAlIDIpO1xyXG4gICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgd2lkdGggPSB0aWxlU2l6ZS53aWR0aCAqIChtYXBTaXplLndpZHRoICsgMC41KTtcclxuICAgICAgICAgICAgICAgIGhlaWdodCA9ICh0aWxlU2l6ZS5oZWlnaHQgKyBtYXBJbmZvLmdldEhleFNpZGVMZW5ndGgoKSkgKiBNYXRoLmZsb29yKG1hcFNpemUuaGVpZ2h0IC8gMikgKyB0aWxlU2l6ZS5oZWlnaHQgKiAobWFwU2l6ZS5oZWlnaHQgJSAyKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH0gZWxzZSBpZiAobWFwSW5mby5vcmllbnRhdGlvbiA9PT0gT3JpZW50YXRpb24uSVNPKSB7XHJcbiAgICAgICAgICAgIGxldCB3aCA9IG1hcFNpemUud2lkdGggKyBtYXBTaXplLmhlaWdodDtcclxuICAgICAgICAgICAgd2lkdGggPSB0aWxlU2l6ZS53aWR0aCAqIDAuNSAqIHdoO1xyXG4gICAgICAgICAgICBoZWlnaHQgPSB0aWxlU2l6ZS5oZWlnaHQgKiAwLjUgKiB3aDtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICB3aWR0aCA9IG1hcFNpemUud2lkdGggKiB0aWxlU2l6ZS53aWR0aDtcclxuICAgICAgICAgICAgaGVpZ2h0ID0gbWFwU2l6ZS5oZWlnaHQgKiB0aWxlU2l6ZS5oZWlnaHQ7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRoaXMubm9kZS5zZXRDb250ZW50U2l6ZSh3aWR0aCwgaGVpZ2h0KTtcclxuXHJcbiAgICAgICAgbGV0IGxlZnRUb3BYID0gd2lkdGggKiB0aGlzLm5vZGUuYW5jaG9yWDtcclxuICAgICAgICBsZXQgbGVmdFRvcFkgPSBoZWlnaHQgKiAoMSAtIHRoaXMubm9kZS5hbmNob3JZKTtcclxuXHJcbiAgICAgICAgbGV0IG9iamVjdHMgPSBncm91cEluZm8uX29iamVjdHM7XHJcbiAgICAgICAgbGV0IGFsaXZlTm9kZXMgPSB7fTtcclxuXHJcbiAgICAgICAgLy8g55Sf5oiQ5pig5bCETWFwICAgeyBUZXh0dXJlMkQ6IHRleHR1cmVJbmRleCB9XHJcbiAgICAgICAgbGV0IHRleHR1cmVJbmRleE1hcCA9IG5ldyBNYXAoKTtcclxuICAgICAgICBsZXQgb2JqZWN0VGV4dHVyZXMgPSB0aWxlZE1hcC5nZXRPYmplY3RUZXh0dXJlcygpO1xyXG4gICAgICAgIG9iamVjdFRleHR1cmVzLmZvckVhY2goKHRleHR1cmUsIGlkeCkgPT4gdGV4dHVyZUluZGV4TWFwLnNldCh0ZXh0dXJlLCBpZHgpKTtcclxuXHJcbiAgICAgICAgZm9yIChsZXQgaSA9IDAsIGwgPSBvYmplY3RzLmxlbmd0aDsgaSA8IGw7IGkrKykge1xyXG4gICAgICAgICAgICBsZXQgb2JqZWN0ID0gb2JqZWN0c1tpXTtcclxuICAgICAgICAgICAgbGV0IG9ialR5cGUgPSBvYmplY3QudHlwZTtcclxuICAgICAgICAgICAgb2JqZWN0Lm9mZnNldCA9IGNjLnYyKG9iamVjdC54LCBvYmplY3QueSk7XHJcblxyXG4gICAgICAgICAgICBsZXQgcG9pbnRzID0gb2JqZWN0LnBvaW50cyB8fCBvYmplY3QucG9seWxpbmVQb2ludHM7XHJcbiAgICAgICAgICAgIGlmIChwb2ludHMpIHtcclxuICAgICAgICAgICAgICAgIGZvciAobGV0IHBpID0gMDsgcGkgPCBwb2ludHMubGVuZ3RoOyBwaSsrKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgcG9pbnRzW3BpXS55ICo9IC0xO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICBpZiAoT3JpZW50YXRpb24uSVNPICE9PSBtYXBJbmZvLm9yaWVudGF0aW9uKSB7XHJcbiAgICAgICAgICAgICAgICBvYmplY3QueSA9IGhlaWdodCAtIG9iamVjdC55O1xyXG4gICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgbGV0IHBvc0lkeFggPSBvYmplY3QueCAvIHRpbGVTaXplLmhlaWdodDtcclxuICAgICAgICAgICAgICAgIGxldCBwb3NJZHhZID0gb2JqZWN0LnkgLyB0aWxlU2l6ZS5oZWlnaHQ7XHJcbiAgICAgICAgICAgICAgICBvYmplY3QueCA9IHRpbGVTaXplLndpZHRoICogMC41ICogKG1hcFNpemUuaGVpZ2h0ICsgcG9zSWR4WCAtIHBvc0lkeFkpO1xyXG4gICAgICAgICAgICAgICAgb2JqZWN0LnkgPSB0aWxlU2l6ZS5oZWlnaHQgKiAwLjUgKiAobWFwU2l6ZS53aWR0aCArIG1hcFNpemUuaGVpZ2h0IC0gcG9zSWR4WCAtIHBvc0lkeFkpO1xyXG4gICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICBpZiAob2JqVHlwZSA9PT0gVE1YT2JqZWN0VHlwZS5URVhUKSB7XHJcbiAgICAgICAgICAgICAgICBsZXQgdGV4dE5hbWUgPSBcInRleHRcIiArIG9iamVjdC5pZDtcclxuICAgICAgICAgICAgICAgIGFsaXZlTm9kZXNbdGV4dE5hbWVdID0gdHJ1ZTtcclxuXHJcbiAgICAgICAgICAgICAgICBsZXQgdGV4dE5vZGUgPSB0aGlzLm5vZGUuZ2V0Q2hpbGRCeU5hbWUodGV4dE5hbWUpO1xyXG4gICAgICAgICAgICAgICAgaWYgKCF0ZXh0Tm9kZSkge1xyXG4gICAgICAgICAgICAgICAgICAgIHRleHROb2RlID0gbmV3IGNjLk5vZGUoKTtcclxuICAgICAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgICAgICB0ZXh0Tm9kZS5hY3RpdmUgPSBvYmplY3QudmlzaWJsZTtcclxuICAgICAgICAgICAgICAgIHRleHROb2RlLmFuY2hvclggPSAwO1xyXG4gICAgICAgICAgICAgICAgdGV4dE5vZGUuYW5jaG9yWSA9IDE7XHJcbiAgICAgICAgICAgICAgICB0ZXh0Tm9kZS5hbmdsZSA9IC1vYmplY3Qucm90YXRpb247XHJcbiAgICAgICAgICAgICAgICB0ZXh0Tm9kZS54ID0gb2JqZWN0LnggLSBsZWZ0VG9wWDtcclxuICAgICAgICAgICAgICAgIHRleHROb2RlLnkgPSBvYmplY3QueSAtIGxlZnRUb3BZO1xyXG4gICAgICAgICAgICAgICAgdGV4dE5vZGUubmFtZSA9IHRleHROYW1lO1xyXG4gICAgICAgICAgICAgICAgdGV4dE5vZGUucGFyZW50ID0gdGhpcy5ub2RlO1xyXG4gICAgICAgICAgICAgICAgdGV4dE5vZGUuY29sb3IgPSBvYmplY3QuY29sb3I7XHJcbiAgICAgICAgICAgICAgICB0ZXh0Tm9kZS5vcGFjaXR5ID0gdGhpcy5fb3BhY2l0eTtcclxuICAgICAgICAgICAgICAgIHRleHROb2RlLnNldFNpYmxpbmdJbmRleChpKTtcclxuXHJcbiAgICAgICAgICAgICAgICBsZXQgbGFiZWwgPSB0ZXh0Tm9kZS5nZXRDb21wb25lbnQoY2MuTGFiZWwpO1xyXG4gICAgICAgICAgICAgICAgaWYgKCFsYWJlbCkge1xyXG4gICAgICAgICAgICAgICAgICAgIGxhYmVsID0gdGV4dE5vZGUuYWRkQ29tcG9uZW50KGNjLkxhYmVsKTtcclxuICAgICAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgICAgICBsYWJlbC5vdmVyZmxvdyA9IGNjLkxhYmVsLk92ZXJmbG93LlNIUklOSztcclxuICAgICAgICAgICAgICAgIGxhYmVsLmxpbmVIZWlnaHQgPSBvYmplY3QuaGVpZ2h0O1xyXG4gICAgICAgICAgICAgICAgbGFiZWwuc3RyaW5nID0gb2JqZWN0LnRleHQ7XHJcbiAgICAgICAgICAgICAgICBsYWJlbC5ob3Jpem9udGFsQWxpZ24gPSBvYmplY3QuaGFsaWduO1xyXG4gICAgICAgICAgICAgICAgbGFiZWwudmVydGljYWxBbGlnbiA9IG9iamVjdC52YWxpZ247XHJcbiAgICAgICAgICAgICAgICBsYWJlbC5mb250U2l6ZSA9IG9iamVjdC5waXhlbHNpemU7XHJcblxyXG4gICAgICAgICAgICAgICAgdGV4dE5vZGUud2lkdGggPSBvYmplY3Qud2lkdGg7XHJcbiAgICAgICAgICAgICAgICB0ZXh0Tm9kZS5oZWlnaHQgPSBvYmplY3QuaGVpZ2h0O1xyXG4gICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICBpZiAob2JqVHlwZSA9PT0gVE1YT2JqZWN0VHlwZS5JTUFHRSkge1xyXG4gICAgICAgICAgICAgICAgbGV0IGdpZCA9IG9iamVjdC5naWQ7XHJcbiAgICAgICAgICAgICAgICBsZXQgZ3JpZCA9IHRleEdyaWRzWyhnaWQgJiBGTElQUEVEX01BU0spID4+PiAwXTtcclxuICAgICAgICAgICAgICAgIGlmICghZ3JpZCkgY29udGludWU7XHJcbiAgICAgICAgICAgICAgICBsZXQgdGlsZXNldCA9IGdyaWQudGlsZXNldDtcclxuICAgICAgICAgICAgICAgIGxldCBpbWdOYW1lID0gXCJpbWdcIiArIG9iamVjdC5pZDtcclxuICAgICAgICAgICAgICAgIGFsaXZlTm9kZXNbaW1nTmFtZV0gPSB0cnVlO1xyXG4gICAgICAgICAgICAgICAgbGV0IGltZ05vZGUgPSB0aGlzLm5vZGUuZ2V0Q2hpbGRCeU5hbWUoaW1nTmFtZSk7XHJcbiAgICAgICAgICAgICAgICBsZXQgaW1nV2lkdGggPSBvYmplY3Qud2lkdGggfHwgZ3JpZC53aWR0aDtcclxuICAgICAgICAgICAgICAgIGxldCBpbWdIZWlnaHQgPSBvYmplY3QuaGVpZ2h0IHx8IGdyaWQuaGVpZ2h0O1xyXG4gICAgICAgICAgICAgICAgbGV0IHRpbGVPZmZzZXRYID0gdGlsZXNldC50aWxlT2Zmc2V0Lng7XHJcbiAgICAgICAgICAgICAgICBsZXQgdGlsZU9mZnNldFkgPSB0aWxlc2V0LnRpbGVPZmZzZXQueTtcclxuXHJcbiAgICAgICAgICAgICAgICAvLyBEZWxldGUgaW1hZ2Ugbm9kZXMgaW1wbGVtZW50ZWQgYXMgcHJpdmF0ZSBub2Rlc1xyXG4gICAgICAgICAgICAgICAgLy8gVXNlIGNjLk5vZGUgdG8gaW1wbGVtZW50IG5vZGUtbGV2ZWwgcmVxdWlyZW1lbnRzXHJcbiAgICAgICAgICAgICAgICBpZiAoaW1nTm9kZSBpbnN0YW5jZW9mIGNjLlByaXZhdGVOb2RlKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgaW1nTm9kZS5yZW1vdmVGcm9tUGFyZW50KCk7XHJcbiAgICAgICAgICAgICAgICAgICAgaW1nTm9kZS5kZXN0cm95KCk7XHJcbiAgICAgICAgICAgICAgICAgICAgaW1nTm9kZSA9IG51bGw7XHJcbiAgICAgICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAgICAgaWYgKCFpbWdOb2RlKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgaW1nTm9kZSA9IG5ldyBjYy5Ob2RlKCk7XHJcbiAgICAgICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAgICAgaWYgKE9yaWVudGF0aW9uLklTTyA9PSBtYXBJbmZvLm9yaWVudGF0aW9uKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgaW1nTm9kZS5hbmNob3JYID0gMC41ICsgdGlsZU9mZnNldFggLyBpbWdXaWR0aDtcclxuICAgICAgICAgICAgICAgICAgICBpbWdOb2RlLmFuY2hvclkgPSB0aWxlT2Zmc2V0WSAvIGltZ0hlaWdodDtcclxuICAgICAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgICAgaW1nTm9kZS5hbmNob3JYID0gdGlsZU9mZnNldFggLyBpbWdXaWR0aDtcclxuICAgICAgICAgICAgICAgICAgICBpbWdOb2RlLmFuY2hvclkgPSB0aWxlT2Zmc2V0WSAvIGltZ0hlaWdodDtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIGltZ05vZGUuYWN0aXZlID0gb2JqZWN0LnZpc2libGU7XHJcbiAgICAgICAgICAgICAgICBpbWdOb2RlLmFuZ2xlID0gLW9iamVjdC5yb3RhdGlvbjtcclxuICAgICAgICAgICAgICAgIGltZ05vZGUueCA9IG9iamVjdC54IC0gbGVmdFRvcFg7XHJcbiAgICAgICAgICAgICAgICBpbWdOb2RlLnkgPSBvYmplY3QueSAtIGxlZnRUb3BZO1xyXG4gICAgICAgICAgICAgICAgaW1nTm9kZS5uYW1lID0gaW1nTmFtZTtcclxuICAgICAgICAgICAgICAgIGltZ05vZGUucGFyZW50ID0gdGhpcy5ub2RlO1xyXG4gICAgICAgICAgICAgICAgaW1nTm9kZS5vcGFjaXR5ID0gdGhpcy5fb3BhY2l0eTtcclxuICAgICAgICAgICAgICAgIGltZ05vZGUuc2V0U2libGluZ0luZGV4KGkpO1xyXG4gICAgICAgICAgICAgICAgaW1nTm9kZS5fdGlsZWRNYXAgPSB0aWxlZE1hcDtcclxuXHJcblxyXG4gICAgICAgICAgICAgICAgbGV0IHNwID0gaW1nTm9kZS5nZXRDb21wb25lbnQoVG1vU3ByaXRlKTtcclxuICAgICAgICAgICAgICAgIGlmICghc3ApIHtcclxuICAgICAgICAgICAgICAgICAgICBzcCA9IGltZ05vZGUuYWRkQ29tcG9uZW50KFRtb1Nwcml0ZSk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBsZXQgc3BmID0gc3Auc3ByaXRlRnJhbWU7XHJcbiAgICAgICAgICAgICAgICBpZiAoIXNwZikge1xyXG4gICAgICAgICAgICAgICAgICAgIHNwZiA9IG5ldyBjYy5TcHJpdGVGcmFtZSgpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgICAgIGlmICgoZ2lkICYgRkxBR19IT1JJWk9OVEFMKSA+Pj4gMCkge1xyXG4gICAgICAgICAgICAgICAgICAgIHNwZi5zZXRGbGlwWCh0cnVlKTtcclxuICAgICAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgICAgc3BmLnNldEZsaXBYKGZhbHNlKTtcclxuICAgICAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgICAgICBpZiAoKGdpZCAmIEZMQUdfVkVSVElDQUwpID4+PiAwKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgc3BmLnNldEZsaXBZKHRydWUpO1xyXG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICBzcGYuc2V0RmxpcFkoZmFsc2UpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgICAgIGxldCBzb3VyY2VJbWFnZSA9IGdyaWQudGlsZXNldC5zb3VyY2VJbWFnZTtcclxuICAgICAgICAgICAgICAgIHNwZi5zZXRUZXh0dXJlKHNvdXJjZUltYWdlLCBjYy5yZWN0KGdyaWQpKTtcclxuICAgICAgICAgICAgICAgIHNwLnNwcml0ZUZyYW1lID0gc3BmO1xyXG4gICAgICAgICAgICAgICAgc3Auc2V0VmVydHNEaXJ0eSgpO1xyXG5cclxuICAgICAgICAgICAgICAgIC8vIG9iamVjdCBncm91cCBtYXkgaGFzIG5vIHdpZHRoIG9yIGhlaWdodCBpbmZvXHJcbiAgICAgICAgICAgICAgICBpbWdOb2RlLndpZHRoID0gaW1nV2lkdGg7XHJcbiAgICAgICAgICAgICAgICBpbWdOb2RlLmhlaWdodCA9IGltZ0hlaWdodDtcclxuXHJcbiAgICAgICAgICAgICAgICAvLyDmlLbpm4blm77pm4Yg5pu05pawdGV4dHVyZUluZGV4TWFwXHJcbiAgICAgICAgICAgICAgICBpZiAoIXRleHR1cmVJbmRleE1hcC5oYXMoc291cmNlSW1hZ2UpKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgdGV4dHVyZUluZGV4TWFwLnNldChzb3VyY2VJbWFnZSwgb2JqZWN0VGV4dHVyZXMubGVuZ3RoKTtcclxuICAgICAgICAgICAgICAgICAgICBvYmplY3RUZXh0dXJlcy5wdXNoKHNvdXJjZUltYWdlKTtcclxuICAgICAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgICAgICAvLyDorr7nva50ZXh0dXJlSW5kZXhcclxuICAgICAgICAgICAgICAgIGxldCB0ZXh0dXJlSW5kZXggPSB0ZXh0dXJlSW5kZXhNYXAuZ2V0KHNvdXJjZUltYWdlKTtcclxuICAgICAgICAgICAgICAgIHNwLnNldFRleHR1cmVJZHgodGV4dHVyZUluZGV4ICsgMSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgdGhpcy5fb2JqZWN0cyA9IG9iamVjdHM7XHJcblxyXG5cclxuICAgICAgICAvLyBkZXN0cm95IHVzZWxlc3Mgbm9kZVxyXG4gICAgICAgIGxldCBjaGlsZHJlbiA9IHRoaXMubm9kZS5jaGlsZHJlbjtcclxuICAgICAgICBsZXQgdXNlbGVzc0V4cCA9IC9eKD86aW1nfHRleHQpXFxkKyQvO1xyXG4gICAgICAgIGZvciAobGV0IGkgPSAwLCBuID0gY2hpbGRyZW4ubGVuZ3RoOyBpIDwgbjsgaSsrKSB7XHJcbiAgICAgICAgICAgIGxldCBjID0gY2hpbGRyZW5baV07XHJcbiAgICAgICAgICAgIGxldCBjTmFtZSA9IGMuX25hbWU7XHJcbiAgICAgICAgICAgIGxldCBpc1VzZWxlc3MgPSB1c2VsZXNzRXhwLnRlc3QoY05hbWUpO1xyXG4gICAgICAgICAgICBpZiAoaXNVc2VsZXNzICYmICFhbGl2ZU5vZGVzW2NOYW1lXSkgYy5kZXN0cm95KCk7XHJcbiAgICAgICAgfVxyXG5cclxuICAgIH1cclxufSk7XHJcbiJdfQ== -//------QC-SOURCE-SPLIT------ - - (function() { - var nodeEnv = typeof require !== 'undefined' && typeof process !== 'undefined'; - var __module = nodeEnv ? module : {exports:{}}; - var __filename = 'preview-scripts/tiledmap-optimize-resource/Script/TmoAssembler.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, '18d1c5ObBtCeaysyO5bMIgb', 'TmoAssembler'); -// Script/TmoAssembler.js - -"use strict"; - -exports.__esModule = true; -exports.TmoAssembler = void 0; - -function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } - -function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; } - -function _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; _setPrototypeOf(subClass, superClass); } - -function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); } - -var gfx = cc.gfx; // 颜色去除 + 物件图集合批 - -var vfmtPosUvIndex = new gfx.VertexFormat([{ - name: gfx.ATTR_POSITION, - type: gfx.ATTR_TYPE_FLOAT32, - num: 2 -}, { - name: gfx.ATTR_UV0, - type: gfx.ATTR_TYPE_FLOAT32, - num: 2 -}, { - name: "a_texture_idx", - type: gfx.ATTR_TYPE_FLOAT32, - num: 1 -}]); // 仅物件图集合批 - -var vfmtPosUvColorIndex = new gfx.VertexFormat([{ - name: gfx.ATTR_POSITION, - type: gfx.ATTR_TYPE_FLOAT32, - num: 2 -}, { - name: gfx.ATTR_UV0, - type: gfx.ATTR_TYPE_FLOAT32, - num: 2 -}, { - name: "a_texture_idx", - type: gfx.ATTR_TYPE_FLOAT32, - num: 1 -}, { - name: gfx.ATTR_COLOR, - type: gfx.ATTR_TYPE_UINT8, - num: 4, - normalize: true -}]); - -var TmoAssembler = /*#__PURE__*/function (_cc$Assembler) { - _inheritsLoose(TmoAssembler, _cc$Assembler); - - function TmoAssembler() { - return _cc$Assembler.apply(this, arguments) || this; - } - - var _proto = TmoAssembler.prototype; - - _proto.init = function init(comp) { - _cc$Assembler.prototype.init.call(this, comp); - - this._noColor = comp.isNoColor(); - this.updateColor = this._noColor ? undefined : this.updateColorFunc; - this.uvOffset = 2; - this.colorOffset = 5; - this.textureIndexOffset = 4; - this.floatsPerVert = this._noColor ? 5 : 6; - this.indicesCount = 6; - this.verticesCount = 4; - this._renderData = new cc.RenderData(); - - this._renderData.init(this); - - this.initLocal(); - this.initData(); - }; - - _proto.initLocal = function initLocal() { - this._local = []; - this._local.length = 4; - }; - - _proto.initData = function initData() { - var data = this._renderData; - data.createFlexData(0, this.verticesCount, this.indicesCount, this.getVfmt()); // 填充顶点索引信息 - - var indices = data.iDatas[0]; - var count = indices.length / 6; - - for (var i = 0, idx = 0; i < count; i++) { - var vertextID = i * 4; - indices[idx++] = vertextID; - indices[idx++] = vertextID + 1; - indices[idx++] = vertextID + 2; - indices[idx++] = vertextID + 1; - indices[idx++] = vertextID + 3; - indices[idx++] = vertextID + 2; - } - }; - - _proto.getBuffer = function getBuffer() { - return cc.renderer._handle.getBuffer("mesh", this.getVfmt()); - }; - - _proto.getVfmt = function getVfmt() { - return this._noColor ? vfmtPosUvIndex : vfmtPosUvColorIndex; - }; - - _proto.updateRenderData = function updateRenderData(sprite) { - this.packToDynamicAtlas(sprite, sprite._spriteFrame); - - if (sprite._vertsDirty) { - this.updateUVs(sprite); - this.updateVerts(sprite); - this.updateTextureIdx(sprite); - sprite._vertsDirty = false; - } - } - /** - * 填充textureIndex数据 - * @param {cc.Sprite} sprite - */ - ; - - _proto.updateTextureIdx = function updateTextureIdx(sprite) { - var textureIdx = sprite._textureIdx; - var verts = this._renderData.vDatas[0]; - var verticesCount = this.verticesCount; - var floatsPerVert = this.floatsPerVert; - var textureIndexOffset = this.textureIndexOffset; - - for (var i = 0; i < verticesCount; i++) { - var index = i * floatsPerVert + textureIndexOffset; - verts[index] = textureIdx; - } - }; - - _proto.updateUVs = function updateUVs(sprite) { - var uv = sprite._spriteFrame.uv; - var uvOffset = this.uvOffset; - var floatsPerVert = this.floatsPerVert; - var verts = this._renderData.vDatas[0]; - - for (var i = 0; i < 4; i++) { - var srcOffset = i * 2; - var dstOffset = floatsPerVert * i + uvOffset; - verts[dstOffset] = uv[srcOffset]; - verts[dstOffset + 1] = uv[srcOffset + 1]; - } - }; - - _proto.updateVerts = function updateVerts(sprite) { - var node = sprite.node, - cw = node.width, - ch = node.height, - appx = node.anchorX * cw, - appy = node.anchorY * ch, - l, - b, - r, - t; - - if (sprite.trim) { - l = -appx; - b = -appy; - r = cw - appx; - t = ch - appy; - } else { - var frame = sprite.spriteFrame, - ow = frame._originalSize.width, - oh = frame._originalSize.height, - rw = frame._rect.width, - rh = frame._rect.height, - offset = frame._offset, - scaleX = cw / ow, - scaleY = ch / oh; - var trimLeft = offset.x + (ow - rw) / 2; - var trimRight = offset.x - (ow - rw) / 2; - var trimBottom = offset.y + (oh - rh) / 2; - var trimTop = offset.y - (oh - rh) / 2; - l = trimLeft * scaleX - appx; - b = trimBottom * scaleY - appy; - r = cw + trimRight * scaleX - appx; - t = ch + trimTop * scaleY - appy; - } - - var local = this._local; - local[0] = l; - local[1] = b; - local[2] = r; - local[3] = t; - this.updateWorldVerts(sprite); - }; - - _proto.updateColorFunc = function updateColorFunc(comp, color) { - var uintVerts = this._renderData.uintVDatas[0]; - if (!uintVerts) return; - color = color != null ? color : comp.node.color._val; - var floatsPerVert = this.floatsPerVert; - var colorOffset = this.colorOffset; - - for (var i = colorOffset, l = uintVerts.length; i < l; i += floatsPerVert) { - uintVerts[i] = color; - } - }; - - _proto.updateWorldVerts = function updateWorldVerts(comp) { - if (CC_NATIVERENDERER) { - // 原生平台兼容代码 复制于jsb-engine.js中的cc.Assembler2D.prototype.updateWorldVerts - var local = this._local; - var verts = this._renderData.vDatas[0]; - var vl = local[0], - vr = local[2], - vb = local[1], - vt = local[3]; - var floatsPerVert = this.floatsPerVert; - var vertexOffset = 0; // left bottom - - verts[vertexOffset] = vl; - verts[vertexOffset + 1] = vb; - vertexOffset += floatsPerVert; // right bottom - - verts[vertexOffset] = vr; - verts[vertexOffset + 1] = vb; - vertexOffset += floatsPerVert; // left top - - verts[vertexOffset] = vl; - verts[vertexOffset + 1] = vt; - vertexOffset += floatsPerVert; // right top - - verts[vertexOffset] = vr; - verts[vertexOffset + 1] = vt; - } else { - var _local = this._local; - var _verts = this._renderData.vDatas[0]; - var matrix = comp.node._worldMatrix; - var matrixm = matrix.m, - a = matrixm[0], - b = matrixm[1], - c = matrixm[4], - d = matrixm[5], - tx = matrixm[12], - ty = matrixm[13]; - var _vl = _local[0], - _vr = _local[2], - _vb = _local[1], - _vt = _local[3]; - var _floatsPerVert = this.floatsPerVert; - var _vertexOffset = 0; - var justTranslate = a === 1 && b === 0 && c === 0 && d === 1; - - if (justTranslate) { - // left bottom - _verts[_vertexOffset] = _vl + tx; - _verts[_vertexOffset + 1] = _vb + ty; - _vertexOffset += _floatsPerVert; // right bottom - - _verts[_vertexOffset] = _vr + tx; - _verts[_vertexOffset + 1] = _vb + ty; - _vertexOffset += _floatsPerVert; // left top - - _verts[_vertexOffset] = _vl + tx; - _verts[_vertexOffset + 1] = _vt + ty; - _vertexOffset += _floatsPerVert; // right top - - _verts[_vertexOffset] = _vr + tx; - _verts[_vertexOffset + 1] = _vt + ty; - } else { - var al = a * _vl, - ar = a * _vr, - bl = b * _vl, - br = b * _vr, - cb = c * _vb, - ct = c * _vt, - db = d * _vb, - dt = d * _vt; // left bottom - - _verts[_vertexOffset] = al + cb + tx; - _verts[_vertexOffset + 1] = bl + db + ty; - _vertexOffset += _floatsPerVert; // right bottom - - _verts[_vertexOffset] = ar + cb + tx; - _verts[_vertexOffset + 1] = br + db + ty; - _vertexOffset += _floatsPerVert; // left top - - _verts[_vertexOffset] = al + ct + tx; - _verts[_vertexOffset + 1] = bl + dt + ty; - _vertexOffset += _floatsPerVert; // right top - - _verts[_vertexOffset] = ar + ct + tx; - _verts[_vertexOffset + 1] = br + dt + ty; - } - } - }; - - _proto.fillBuffers = function fillBuffers(comp, renderer) { - if (renderer.worldMatDirty) { - this.updateWorldVerts(comp); - } - - var renderData = this._renderData; - var vData = renderData.vDatas[0]; - var iData = renderData.iDatas[0]; - var buffer = this.getBuffer(renderer); - var offsetInfo = buffer.request(this.verticesCount, this.indicesCount); // buffer data may be realloc, need get reference after request. - // fill vertices - - var vertexOffset = offsetInfo.byteOffset >> 2, - vbuf = buffer._vData; - - if (vData.length + vertexOffset > vbuf.length) { - vbuf.set(vData.subarray(0, vbuf.length - vertexOffset), vertexOffset); - } else { - vbuf.set(vData, vertexOffset); - } // fill indices - - - var ibuf = buffer._iData, - indiceOffset = offsetInfo.indiceOffset, - vertexId = offsetInfo.vertexOffset; - - for (var i = 0, l = iData.length; i < l; i++) { - ibuf[indiceOffset++] = vertexId + iData[i]; - } - }; - - _proto.packToDynamicAtlas = function packToDynamicAtlas(comp, frame) { - if (CC_TEST) return; - - if (!frame._original && cc.dynamicAtlasManager && frame._texture.packable) { - var packedFrame = cc.dynamicAtlasManager.insertSpriteFrame(frame); - - if (packedFrame) { - frame._setDynamicAtlasFrame(packedFrame); - } - } - - var material = comp._materials[0]; - if (!material) return; - - if (material.getProperty('texture') !== frame._texture) { - // texture was packed to dynamic atlas, should update uvs - comp._vertsDirty = true; - - comp._updateMaterial(); - } - }; - - _createClass(TmoAssembler, [{ - key: "verticesFloats", - get: function get() { - return this.verticesCount * this.floatsPerVert; - } - }]); - - return TmoAssembler; -}(cc.Assembler); - -exports.TmoAssembler = TmoAssembler; - -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,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInBhY2thZ2VzXFxUaWxlZE1hcE9wdGltaXplclxccmVzb3VyY2VcXFNjcmlwdFxcVG1vQXNzZW1ibGVyLmpzIl0sIm5hbWVzIjpbImdmeCIsImNjIiwidmZtdFBvc1V2SW5kZXgiLCJWZXJ0ZXhGb3JtYXQiLCJuYW1lIiwiQVRUUl9QT1NJVElPTiIsInR5cGUiLCJBVFRSX1RZUEVfRkxPQVQzMiIsIm51bSIsIkFUVFJfVVYwIiwidmZtdFBvc1V2Q29sb3JJbmRleCIsIkFUVFJfQ09MT1IiLCJBVFRSX1RZUEVfVUlOVDgiLCJub3JtYWxpemUiLCJUbW9Bc3NlbWJsZXIiLCJpbml0IiwiY29tcCIsIl9ub0NvbG9yIiwiaXNOb0NvbG9yIiwidXBkYXRlQ29sb3IiLCJ1bmRlZmluZWQiLCJ1cGRhdGVDb2xvckZ1bmMiLCJ1dk9mZnNldCIsImNvbG9yT2Zmc2V0IiwidGV4dHVyZUluZGV4T2Zmc2V0IiwiZmxvYXRzUGVyVmVydCIsImluZGljZXNDb3VudCIsInZlcnRpY2VzQ291bnQiLCJfcmVuZGVyRGF0YSIsIlJlbmRlckRhdGEiLCJpbml0TG9jYWwiLCJpbml0RGF0YSIsIl9sb2NhbCIsImxlbmd0aCIsImRhdGEiLCJjcmVhdGVGbGV4RGF0YSIsImdldFZmbXQiLCJpbmRpY2VzIiwiaURhdGFzIiwiY291bnQiLCJpIiwiaWR4IiwidmVydGV4dElEIiwiZ2V0QnVmZmVyIiwicmVuZGVyZXIiLCJfaGFuZGxlIiwidXBkYXRlUmVuZGVyRGF0YSIsInNwcml0ZSIsInBhY2tUb0R5bmFtaWNBdGxhcyIsIl9zcHJpdGVGcmFtZSIsIl92ZXJ0c0RpcnR5IiwidXBkYXRlVVZzIiwidXBkYXRlVmVydHMiLCJ1cGRhdGVUZXh0dXJlSWR4IiwidGV4dHVyZUlkeCIsIl90ZXh0dXJlSWR4IiwidmVydHMiLCJ2RGF0YXMiLCJpbmRleCIsInV2Iiwic3JjT2Zmc2V0IiwiZHN0T2Zmc2V0Iiwibm9kZSIsImN3Iiwid2lkdGgiLCJjaCIsImhlaWdodCIsImFwcHgiLCJhbmNob3JYIiwiYXBweSIsImFuY2hvclkiLCJsIiwiYiIsInIiLCJ0IiwidHJpbSIsImZyYW1lIiwic3ByaXRlRnJhbWUiLCJvdyIsIl9vcmlnaW5hbFNpemUiLCJvaCIsInJ3IiwiX3JlY3QiLCJyaCIsIm9mZnNldCIsIl9vZmZzZXQiLCJzY2FsZVgiLCJzY2FsZVkiLCJ0cmltTGVmdCIsIngiLCJ0cmltUmlnaHQiLCJ0cmltQm90dG9tIiwieSIsInRyaW1Ub3AiLCJsb2NhbCIsInVwZGF0ZVdvcmxkVmVydHMiLCJjb2xvciIsInVpbnRWZXJ0cyIsInVpbnRWRGF0YXMiLCJfdmFsIiwiQ0NfTkFUSVZFUkVOREVSRVIiLCJ2bCIsInZyIiwidmIiLCJ2dCIsInZlcnRleE9mZnNldCIsIm1hdHJpeCIsIl93b3JsZE1hdHJpeCIsIm1hdHJpeG0iLCJtIiwiYSIsImMiLCJkIiwidHgiLCJ0eSIsImp1c3RUcmFuc2xhdGUiLCJhbCIsImFyIiwiYmwiLCJiciIsImNiIiwiY3QiLCJkYiIsImR0IiwiZmlsbEJ1ZmZlcnMiLCJ3b3JsZE1hdERpcnR5IiwicmVuZGVyRGF0YSIsInZEYXRhIiwiaURhdGEiLCJidWZmZXIiLCJvZmZzZXRJbmZvIiwicmVxdWVzdCIsImJ5dGVPZmZzZXQiLCJ2YnVmIiwiX3ZEYXRhIiwic2V0Iiwic3ViYXJyYXkiLCJpYnVmIiwiX2lEYXRhIiwiaW5kaWNlT2Zmc2V0IiwidmVydGV4SWQiLCJDQ19URVNUIiwiX29yaWdpbmFsIiwiZHluYW1pY0F0bGFzTWFuYWdlciIsIl90ZXh0dXJlIiwicGFja2FibGUiLCJwYWNrZWRGcmFtZSIsImluc2VydFNwcml0ZUZyYW1lIiwiX3NldER5bmFtaWNBdGxhc0ZyYW1lIiwibWF0ZXJpYWwiLCJfbWF0ZXJpYWxzIiwiZ2V0UHJvcGVydHkiLCJfdXBkYXRlTWF0ZXJpYWwiLCJBc3NlbWJsZXIiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSxJQUFJQSxHQUFHLEdBQUdDLEVBQUUsQ0FBQ0QsR0FBYixFQUNBOztBQUNBLElB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RSxFQUEyRTtBQUN2RSxVQUFJQyxXQUFXLEdBQUdqSixFQUFFLENBQUM4SSxtQkFBSCxDQUF1QkksaUJBQXZCLENBQXlDdkUsS0FBekMsQ0FBbEI7O0FBQ0EsVUFBSXNFLFdBQUosRUFBaUI7QUFDYnRFLFFBQUFBLEtBQUssQ0FBQ3dFLHFCQUFOLENBQTRCRixXQUE1QjtBQUNIO0FBQ0o7O0FBQ0QsUUFBSUcsUUFBUSxHQUFHckksSUFBSSxDQUFDc0ksVUFBTCxDQUFnQixDQUFoQixDQUFmO0FBQ0EsUUFBSSxDQUFDRCxRQUFMLEVBQWU7O0FBRWYsUUFBSUEsUUFBUSxDQUFDRSxXQUFULENBQXFCLFNBQXJCLE1BQW9DM0UsS0FBSyxDQUFDb0UsUUFBOUMsRUFBd0Q7QUFDcEQ7QUFDQWhJLE1BQUFBLElBQUksQ0FBQ2tDLFdBQUwsR0FBbUIsSUFBbkI7O0FBQ0FsQyxNQUFBQSxJQUFJLENBQUN3SSxlQUFMO0FBQ0g7QUFDSjs7OztTQXBKRCxlQUFxQjtBQUNqQixhQUFPLEtBQUs3SCxhQUFMLEdBQXFCLEtBQUtGLGFBQWpDO0FBQ0g7Ozs7RUFwSTZCeEIsRUFBRSxDQUFDd0oiLCJzb3VyY2VSb290IjoiLyIsInNvdXJjZXNDb250ZW50IjpbImxldCBnZnggPSBjYy5nZng7XHJcbi8vIOminOiJsuWOu+mZpCArIOeJqeS7tuWbvumbhuWQiOaJuVxyXG52YXIgdmZtdFBvc1V2SW5kZXggPSBuZXcgZ2Z4LlZlcnRleEZvcm1hdChbXHJcbiAgICB7IG5hbWU6IGdmeC5BVFRSX1BPU0lUSU9OLCB0eXBlOiBnZnguQVRUUl9UWVBFX0ZMT0FUMzIsIG51bTogMiB9LFxyXG4gICAgeyBuYW1lOiBnZnguQVRUUl9VVjAsIHR5cGU6IGdmeC5BVFRSX1RZUEVfRkxPQVQzMiwgbnVtOiAyIH0sXHJcbiAgICB7IG5hbWU6IFwiYV90ZXh0dXJlX2lkeFwiLCB0eXBlOiBnZnguQVRUUl9UWVBFX0ZMT0FUMzIsIG51bTogMSB9LFxyXG5dKTtcclxuXHJcbi8vIOS7heeJqeS7tuWbvumbhuWQiOaJuVxyXG52YXIgdmZtdFBvc1V2Q29sb3JJbmRleCA9IG5ldyBnZnguVmVydGV4Rm9ybWF0KFtcclxuICAgIHsgbmFtZTogZ2Z4LkFUVFJfUE9TSVRJT04sIHR5cGU6IGdmeC5BVFRSX1RZUEVfRkxPQVQzMiwgbnVtOiAyIH0sXHJcbiAgICB7IG5hbWU6IGdmeC5BVFRSX1VWMCwgdHlwZTogZ2Z4LkFUVFJfVFlQRV9GTE9BVDMyLCBudW06IDIgfSxcclxuICAgIHsgbmFtZTogXCJhX3RleHR1cmVfaWR4XCIsIHR5cGU6IGdmeC5BVFRSX1RZUEVfRkxPQVQzMiwgbnVtOiAxIH0sXHJcbiAgICB7IG5hbWU6IGdmeC5BVFRSX0NPTE9SLCB0eXBlOiBnZnguQVRUUl9UWVBFX1VJTlQ4LCBudW06IDQsIG5vcm1hbGl6ZTogdHJ1ZSB9LFxyXG5dKTtcclxuXHJcbmV4cG9ydCBjbGFzcyBUbW9Bc3NlbWJsZXIgZXh0ZW5kcyBjYy5Bc3NlbWJsZXIge1xyXG4gICAgaW5pdChjb21wKSB7XHJcbiAgICAgICAgc3VwZXIuaW5pdChjb21wKTtcclxuXHJcbiAgICAgICAgdGhpcy5fbm9Db2xvciA9IGNvbXAuaXNOb0NvbG9yKCk7XHJcbiAgICAgICAgdGhpcy51cGRhdGVDb2xvciA9IHRoaXMuX25vQ29sb3IgPyB1bmRlZmluZWQgOiB0aGlzLnVwZGF0ZUNvbG9yRnVuYztcclxuXHJcbiAgICAgICAgdGhpcy51dk9mZnNldCA9IDI7XHJcbiAgICAgICAgdGhpcy5jb2xvck9mZnNldCA9IDU7XHJcbiAgICAgICAgdGhpcy50ZXh0dXJlSW5kZXhPZmZzZXQgPSA0O1xyXG4gICAgICAgIHRoaXMuZmxvYXRzUGVyVmVydCA9IHRoaXMuX25vQ29sb3IgPyA1IDogNjtcclxuXHJcbiAgICAgICAgdGhpcy5pbmRpY2VzQ291bnQgPSA2O1xyXG4gICAgICAgIHRoaXMudmVydGljZXNDb3VudCA9IDQ7XHJcblxyXG4gICAgICAgIHRoaXMuX3JlbmRlckRhdGEgPSBuZXcgY2MuUmVuZGVyRGF0YSgpO1xyXG4gICAgICAgIHRoaXMuX3JlbmRlckRhdGEuaW5pdCh0aGlzKTtcclxuXHJcbiAgICAgICAgdGhpcy5pbml0TG9jYWwoKTtcclxuICAgICAgICB0aGlzLmluaXREYXRhKCk7XHJcbiAgICB9XHJcblxyXG4gICAgaW5pdExvY2FsKCkge1xyXG4gICAgICAgIHRoaXMuX2xvY2FsID0gW107XHJcbiAgICAgICAgdGhpcy5fbG9jYWwubGVuZ3RoID0gNDtcclxuICAgIH1cclxuXHJcbiAgICBpbml0RGF0YSgpIHtcclxuICAgICAgICBsZXQgZGF0YSA9IHRoaXMuX3JlbmRlckRhdGE7XHJcbiAgICAgICAgZGF0YS5jcmVhdGVGbGV4RGF0YSgwLCB0aGlzLnZlcnRpY2VzQ291bnQsIHRoaXMuaW5kaWNlc0NvdW50LCB0aGlzLmdldFZmbXQoKSk7XHJcblxyXG4gICAgICAgIC8vIOWhq+WFhemhtueCuee0ouW8leS/oeaBr1xyXG4gICAgICAgIGxldCBpbmRpY2VzID0gZGF0YS5pRGF0YXNbMF07XHJcbiAgICAgICAgbGV0IGNvdW50ID0gaW5kaWNlcy5sZW5ndGggLyA2O1xyXG4gICAgICAgIGZvciAobGV0IGkgPSAwLCBpZHggPSAwOyBpIDwgY291bnQ7IGkrKykge1xyXG4gICAgICAgICAgICBsZXQgdmVydGV4dElEID0gaSAqIDQ7XHJcbiAgICAgICAgICAgIGluZGljZXNbaWR4KytdID0gdmVydGV4dElEO1xyXG4gICAgICAgICAgICBpbmRpY2VzW2lkeCsrXSA9IHZlcnRleHRJRCArIDE7XHJcbiAgICAgICAgICAgIGluZGljZXNbaWR4KytdID0gdmVydGV4dElEICsgMjtcclxuICAgICAgICAgICAgaW5kaWNlc1tpZHgrK10gPSB2ZXJ0ZXh0SUQgKyAxO1xyXG4gICAgICAgICAgICBpbmRpY2VzW2lkeCsrXSA9IHZlcnRleHRJRCArIDM7XHJcbiAgICAgICAgICAgIGluZGljZXNbaWR4KytdID0gdmVydGV4dElEICsgMjtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgZ2V0QnVmZmVyKCkge1xyXG4gICAgICAgIHJldHVybiBjYy5yZW5kZXJlci5faGFuZGxlLmdldEJ1ZmZlcihcIm1lc2hcIiwgdGhpcy5nZXRWZm10KCkpO1xyXG4gICAgfVxyXG5cclxuICAgIGdldFZmbXQoKSB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuX25vQ29sb3IgPyB2Zm10UG9zVXZJbmRleCA6IHZmbXRQb3NVdkNvbG9ySW5kZXg7XHJcbiAgICB9XHJcblxyXG4gICAgdXBkYXRlUmVuZGVyRGF0YShzcHJpdGUpIHtcclxuICAgICAgICB0aGlzLnBhY2tUb0R5bmFtaWNBdGxhcyhzcHJpdGUsIHNwcml0ZS5fc3ByaXRlRnJhbWUpO1xyXG5cclxuICAgICAgICBpZiAoc3ByaXRlLl92ZXJ0c0RpcnR5KSB7XHJcbiAgICAgICAgICAgIHRoaXMudXBkYXRlVVZzKHNwcml0ZSk7XHJcbiAgICAgICAgICAgIHRoaXMudXBkYXRlVmVydHMoc3ByaXRlKTtcclxuICAgICAgICAgICAgdGhpcy51cGRhdGVUZXh0dXJlSWR4KHNwcml0ZSk7XHJcbiAgICAgICAgICAgIHNwcml0ZS5fdmVydHNEaXJ0eSA9IGZhbHNlO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIOWhq+WFhXRleHR1cmVJbmRleOaVsOaNrlxyXG4gICAgICogQHBhcmFtIHtjYy5TcHJpdGV9IHNwcml0ZSBcclxuICAgICAqL1xyXG4gICAgdXBkYXRlVGV4dHVyZUlkeChzcHJpdGUpIHtcclxuICAgICAgICBsZXQgdGV4dHVyZUlkeCA9IHNwcml0ZS5fdGV4dHVyZUlkeDtcclxuICAgICAgICBsZXQgdmVydHMgPSB0aGlzLl9yZW5kZXJEYXRhLnZEYXRhc1swXTtcclxuXHJcbiAgICAgICAgbGV0IHZlcnRpY2VzQ291bnQgPSB0aGlzLnZlcnRpY2VzQ291bnQ7XHJcbiAgICAgICAgbGV0IGZsb2F0c1BlclZlcnQgPSB0aGlzLmZsb2F0c1BlclZlcnQ7XHJcbiAgICAgICAgbGV0IHRleHR1cmVJbmRleE9mZnNldCA9IHRoaXMudGV4dHVyZUluZGV4T2Zmc2V0O1xyXG5cclxuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHZlcnRpY2VzQ291bnQ7IGkrKykge1xyXG4gICAgICAgICAgICBsZXQgaW5kZXggPSBpICogZmxvYXRzUGVyVmVydCArIHRleHR1cmVJbmRleE9mZnNldDtcclxuICAgICAgICAgICAgdmVydHNbaW5kZXhdID0gdGV4dHVyZUlkeDtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgdXBkYXRlVVZzKHNwcml0ZSkge1xyXG4gICAgICAgIGxldCB1diA9IHNwcml0ZS5fc3ByaXRlRnJhbWUudXY7XHJcbiAgICAgICAgbGV0IHV2T2Zmc2V0ID0gdGhpcy51dk9mZnNldDtcclxuICAgICAgICBsZXQgZmxvYXRzUGVyVmVydCA9IHRoaXMuZmxvYXRzUGVyVmVydDtcclxuICAgICAgICBsZXQgdmVydHMgPSB0aGlzLl9yZW5kZXJEYXRhLnZEYXRhc1swXTtcclxuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IDQ7IGkrKykge1xyXG4gICAgICAgICAgICBsZXQgc3JjT2Zmc2V0ID0gaSAqIDI7XHJcbiAgICAgICAgICAgIGxldCBkc3RPZmZzZXQgPSBmbG9hdHNQZXJWZXJ0ICogaSArIHV2T2Zmc2V0O1xyXG4gICAgICAgICAgICB2ZXJ0c1tkc3RPZmZzZXRdID0gdXZbc3JjT2Zmc2V0XTtcclxuICAgICAgICAgICAgdmVydHNbZHN0T2Zmc2V0ICsgMV0gPSB1dltzcmNPZmZzZXQgKyAxXTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgdXBkYXRlVmVydHMoc3ByaXRlKSB7XHJcbiAgICAgICAgbGV0IG5vZGUgPSBzcHJpdGUubm9kZSxcclxuICAgICAgICAgICAgY3cgPSBub2RlLndpZHRoLCBjaCA9IG5vZGUuaGVpZ2h0LFxyXG4gICAgICAgICAgICBhcHB4ID0gbm9kZS5hbmNob3JYICogY3csIGFwcHkgPSBub2RlLmFuY2hvclkgKiBjaCxcclxuICAgICAgICAgICAgbCwgYiwgciwgdDtcclxuICAgICAgICBpZiAoc3ByaXRlLnRyaW0pIHtcclxuICAgICAgICAgICAgbCA9IC1hcHB4O1xyXG4gICAgICAgICAgICBiID0gLWFwcHk7XHJcbiAgICAgICAgICAgIHIgPSBjdyAtIGFwcHg7XHJcbiAgICAgICAgICAgIHQgPSBjaCAtIGFwcHk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICBsZXQgZnJhbWUgPSBzcHJpdGUuc3ByaXRlRnJhbWUsXHJcbiAgICAgICAgICAgICAgICBvdyA9IGZyYW1lLl9vcmlnaW5hbFNpemUud2lkdGgsIG9oID0gZnJhbWUuX29yaWdpbmFsU2l6ZS5oZWlnaHQsXHJcbiAgICAgICAgICAgICAgICBydyA9IGZyYW1lLl9yZWN0LndpZHRoLCByaCA9IGZyYW1lLl9yZWN0LmhlaWdodCxcclxuICAgICAgICAgICAgICAgIG9mZnNldCA9IGZyYW1lLl9vZmZzZXQsXHJcbiAgICAgICAgICAgICAgICBzY2FsZVggPSBjdyAvIG93LCBzY2FsZVkgPSBjaCAvIG9oO1xyXG4gICAgICAgICAgICBsZXQgdHJpbUxlZnQgPSBvZmZzZXQueCArIChvdyAtIHJ3KSAvIDI7XHJcbiAgICAgICAgICAgIGxldCB0cmltUmlnaHQgPSBvZmZzZXQueCAtIChvdyAtIHJ3KSAvIDI7XHJcbiAgICAgICAgICAgIGxldCB0cmltQm90dG9tID0gb2Zmc2V0LnkgKyAob2ggLSByaCkgLyAyO1xyXG4gICAgICAgICAgICBsZXQgdHJpbVRvcCA9IG9mZnNldC55IC0gKG9oIC0gcmgpIC8gMjtcclxuICAgICAgICAgICAgbCA9IHRyaW1MZWZ0ICogc2NhbGVYIC0gYXBweDtcclxuICAgICAgICAgICAgYiA9IHRyaW1Cb3R0b20gKiBzY2FsZVkgLSBhcHB5O1xyXG4gICAgICAgICAgICByID0gY3cgKyB0cmltUmlnaHQgKiBzY2FsZVggLSBhcHB4O1xyXG4gICAgICAgICAgICB0ID0gY2ggKyB0cmltVG9wICogc2NhbGVZIC0gYXBweTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGxldCBsb2NhbCA9IHRoaXMuX2xvY2FsO1xyXG4gICAgICAgIGxvY2FsWzBdID0gbDtcclxuICAgICAgICBsb2NhbFsxXSA9IGI7XHJcbiAgICAgICAgbG9jYWxbMl0gPSByO1xyXG4gICAgICAgIGxvY2FsWzNdID0gdDtcclxuICAgICAgICB0aGlzLnVwZGF0ZVdvcmxkVmVydHMoc3ByaXRlKTtcclxuICAgIH1cclxuXHJcbiAgICBnZXQgdmVydGljZXNGbG9hdHMoKSB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMudmVydGljZXNDb3VudCAqIHRoaXMuZmxvYXRzUGVyVmVydDtcclxuICAgIH1cclxuXHJcbiAgICB1cGRhdGVDb2xvckZ1bmMoY29tcCwgY29sb3IpIHtcclxuICAgICAgICBsZXQgdWludFZlcnRzID0gdGhpcy5fcmVuZGVyRGF0YS51aW50VkRhdGFzWzBdO1xyXG4gICAgICAgIGlmICghdWludFZlcnRzKSByZXR1cm47XHJcbiAgICAgICAgY29sb3IgPSBjb2xvciAhPSBudWxsID8gY29sb3IgOiBjb21wLm5vZGUuY29sb3IuX3ZhbDtcclxuICAgICAgICBsZXQgZmxvYXRzUGVyVmVydCA9IHRoaXMuZmxvYXRzUGVyVmVydDtcclxuICAgICAgICBsZXQgY29sb3JPZmZzZXQgPSB0aGlzLmNvbG9yT2Zmc2V0O1xyXG4gICAgICAgIGZvciAobGV0IGkgPSBjb2xvck9mZnNldCwgbCA9IHVpbnRWZXJ0cy5sZW5ndGg7IGkgPCBsOyBpICs9IGZsb2F0c1BlclZlcnQpIHtcclxuICAgICAgICAgICAgdWludFZlcnRzW2ldID0gY29sb3I7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHVwZGF0ZVdvcmxkVmVydHMoY29tcCkge1xyXG4gICAgICAgIGlmIChDQ19OQVRJVkVSRU5ERVJFUikge1xyXG4gICAgICAgICAgICAvLyDljp/nlJ/lubPlj7Dlhbzlrrnku6PnoIEg5aSN5Yi25LqOanNiLWVuZ2luZS5qc+S4reeahGNjLkFzc2VtYmxlcjJELnByb3RvdHlwZS51cGRhdGVXb3JsZFZlcnRzXHJcbiAgICAgICAgICAgIHZhciBsb2NhbCA9IHRoaXMuX2xvY2FsO1xyXG4gICAgICAgICAgICB2YXIgdmVydHMgPSB0aGlzLl9yZW5kZXJEYXRhLnZEYXRhc1swXTtcclxuICAgICAgICAgICAgdmFyIHZsID0gbG9jYWxbMF0sXHJcbiAgICAgICAgICAgICAgICB2ciA9IGxvY2FsWzJdLFxyXG4gICAgICAgICAgICAgICAgdmIgPSBsb2NhbFsxXSxcclxuICAgICAgICAgICAgICAgIHZ0ID0gbG9jYWxbM107XHJcbiAgICAgICAgICAgIHZhciBmbG9hdHNQZXJWZXJ0ID0gdGhpcy5mbG9hdHNQZXJWZXJ0O1xyXG4gICAgICAgICAgICB2YXIgdmVydGV4T2Zmc2V0ID0gMDsgLy8gbGVmdCBib3R0b21cclxuXHJcbiAgICAgICAgICAgIHZlcnRzW3ZlcnRleE9mZnNldF0gPSB2bDtcclxuICAgICAgICAgICAgdmVydHNbdmVydGV4T2Zmc2V0ICsgMV0gPSB2YjtcclxuICAgICAgICAgICAgdmVydGV4T2Zmc2V0ICs9IGZsb2F0c1BlclZlcnQ7IC8vIHJpZ2h0IGJvdHRvbVxyXG5cclxuICAgICAgICAgICAgdmVydHNbdmVydGV4T2Zmc2V0XSA9IHZyO1xyXG4gICAgICAgICAgICB2ZXJ0c1t2ZXJ0ZXhPZmZzZXQgKyAxXSA9IHZiO1xyXG4gICAgICAgICAgICB2ZXJ0ZXhPZmZzZXQgKz0gZmxvYXRzUGVyVmVydDsgLy8gbGVmdCB0b3BcclxuXHJcbiAgICAgICAgICAgIHZlcnRzW3ZlcnRleE9mZnNldF0gPSB2bDtcclxuICAgICAgICAgICAgdmVydHNbdmVydGV4T2Zmc2V0ICsgMV0gPSB2dDtcclxuICAgICAgICAgICAgdmVydGV4T2Zmc2V0ICs9IGZsb2F0c1BlclZlcnQ7IC8vIHJpZ2h0IHRvcFxyXG5cclxuICAgICAgICAgICAgdmVydHNbdmVydGV4T2Zmc2V0XSA9IHZyO1xyXG4gICAgICAgICAgICB2ZXJ0c1t2ZXJ0ZXhPZmZzZXQgKyAxXSA9IHZ0O1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIGxldCBsb2NhbCA9IHRoaXMuX2xvY2FsO1xyXG4gICAgICAgICAgICBsZXQgdmVydHMgPSB0aGlzLl9yZW5kZXJEYXRhLnZEYXRhc1swXTtcclxuXHJcbiAgICAgICAgICAgIGxldCBtYXRyaXggPSBjb21wLm5vZGUuX3dvcmxkTWF0cml4O1xyXG4gICAgICAgICAgICBsZXQgbWF0cml4bSA9IG1hdHJpeC5tLFxyXG4gICAgICAgICAgICAgICAgYSA9IG1hdHJpeG1bMF0sIGIgPSBtYXRyaXhtWzFdLCBjID0gbWF0cml4bVs0XSwgZCA9IG1hdHJpeG1bNV0sXHJcbiAgICAgICAgICAgICAgICB0eCA9IG1hdHJpeG1bMTJdLCB0eSA9IG1hdHJpeG1bMTNdO1xyXG5cclxuICAgICAgICAgICAgbGV0IHZsID0gbG9jYWxbMF0sIHZyID0gbG9jYWxbMl0sXHJcbiAgICAgICAgICAgICAgICB2YiA9IGxvY2FsWzFdLCB2dCA9IGxvY2FsWzNdO1xyXG5cclxuICAgICAgICAgICAgbGV0IGZsb2F0c1BlclZlcnQgPSB0aGlzLmZsb2F0c1BlclZlcnQ7XHJcbiAgICAgICAgICAgIGxldCB2ZXJ0ZXhPZmZzZXQgPSAwO1xyXG4gICAgICAgICAgICBsZXQganVzdFRyYW5zbGF0ZSA9IGEgPT09IDEgJiYgYiA9PT0gMCAmJiBjID09PSAwICYmIGQgPT09IDE7XHJcblxyXG4gICAgICAgICAgICBpZiAoanVzdFRyYW5zbGF0ZSkge1xyXG4gICAgICAgICAgICAgICAgLy8gbGVmdCBib3R0b21cclxuICAgICAgICAgICAgICAgIHZlcnRzW3ZlcnRleE9mZnNldF0gPSB2bCArIHR4O1xyXG4gICAgICAgICAgICAgICAgdmVydHNbdmVydGV4T2Zmc2V0ICsgMV0gPSB2YiArIHR5O1xyXG4gICAgICAgICAgICAgICAgdmVydGV4T2Zmc2V0ICs9IGZsb2F0c1BlclZlcnQ7XHJcbiAgICAgICAgICAgICAgICAvLyByaWdodCBib3R0b21cclxuICAgICAgICAgICAgICAgIHZlcnRzW3ZlcnRleE9mZnNldF0gPSB2ciArIHR4O1xyXG4gICAgICAgICAgICAgICAgdmVydHNbdmVydGV4T2Zmc2V0ICsgMV0gPSB2YiArIHR5O1xyXG4gICAgICAgICAgICAgICAgdmVydGV4T2Zmc2V0ICs9IGZsb2F0c1BlclZlcnQ7XHJcbiAgICAgICAgICAgICAgICAvLyBsZWZ0IHRvcFxyXG4gICAgICAgICAgICAgICAgdmVydHNbdmVydGV4T2Zmc2V0XSA9IHZsICsgdHg7XHJcbiAgICAgICAgICAgICAgICB2ZXJ0c1t2ZXJ0ZXhPZmZzZXQgKyAxXSA9IHZ0ICsgdHk7XHJcbiAgICAgICAgICAgICAgICB2ZXJ0ZXhPZmZzZXQgKz0gZmxvYXRzUGVyVmVydDtcclxuICAgICAgICAgICAgICAgIC8vIHJpZ2h0IHRvcFxyXG4gICAgICAgICAgICAgICAgdmVydHNbdmVydGV4T2Zmc2V0XSA9IHZyICsgdHg7XHJcbiAgICAgICAgICAgICAgICB2ZXJ0c1t2ZXJ0ZXhPZmZzZXQgKyAxXSA9IHZ0ICsgdHk7XHJcbiAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICBsZXQgYWwgPSBhICogdmwsIGFyID0gYSAqIHZyLFxyXG4gICAgICAgICAgICAgICAgICAgIGJsID0gYiAqIHZsLCBiciA9IGIgKiB2cixcclxuICAgICAgICAgICAgICAgICAgICBjYiA9IGMgKiB2YiwgY3QgPSBjICogdnQsXHJcbiAgICAgICAgICAgICAgICAgICAgZGIgPSBkICogdmIsIGR0ID0gZCAqIHZ0O1xyXG5cclxuICAgICAgICAgICAgICAgIC8vIGxlZnQgYm90dG9tXHJcbiAgICAgICAgICAgICAgICB2ZXJ0c1t2ZXJ0ZXhPZmZzZXRdID0gYWwgKyBjYiArIHR4O1xyXG4gICAgICAgICAgICAgICAgdmVydHNbdmVydGV4T2Zmc2V0ICsgMV0gPSBibCArIGRiICsgdHk7XHJcbiAgICAgICAgICAgICAgICB2ZXJ0ZXhPZmZzZXQgKz0gZmxvYXRzUGVyVmVydDtcclxuICAgICAgICAgICAgICAgIC8vIHJpZ2h0IGJvdHRvbVxyXG4gICAgICAgICAgICAgICAgdmVydHNbdmVydGV4T2Zmc2V0XSA9IGFyICsgY2IgKyB0eDtcclxuICAgICAgICAgICAgICAgIHZlcnRzW3ZlcnRleE9mZnNldCArIDFdID0gYnIgKyBkYiArIHR5O1xyXG4gICAgICAgICAgICAgICAgdmVydGV4T2Zmc2V0ICs9IGZsb2F0c1BlclZlcnQ7XHJcbiAgICAgICAgICAgICAgICAvLyBsZWZ0IHRvcFxyXG4gICAgICAgICAgICAgICAgdmVydHNbdmVydGV4T2Zmc2V0XSA9IGFsICsgY3QgKyB0eDtcclxuICAgICAgICAgICAgICAgIHZlcnRzW3ZlcnRleE9mZnNldCArIDFdID0gYmwgKyBkdCArIHR5O1xyXG4gICAgICAgICAgICAgICAgdmVydGV4T2Zmc2V0ICs9IGZsb2F0c1BlclZlcnQ7XHJcbiAgICAgICAgICAgICAgICAvLyByaWdodCB0b3BcclxuICAgICAgICAgICAgICAgIHZlcnRzW3ZlcnRleE9mZnNldF0gPSBhciArIGN0ICsgdHg7XHJcbiAgICAgICAgICAgICAgICB2ZXJ0c1t2ZXJ0ZXhPZmZzZXQgKyAxXSA9IGJyICsgZHQgKyB0eTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBmaWxsQnVmZmVycyhjb21wLCByZW5kZXJlcikge1xyXG4gICAgICAgIGlmIChyZW5kZXJlci53b3JsZE1hdERpcnR5KSB7XHJcbiAgICAgICAgICAgIHRoaXMudXBkYXRlV29ybGRWZXJ0cyhjb21wKTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGxldCByZW5kZXJEYXRhID0gdGhpcy5fcmVuZGVyRGF0YTtcclxuICAgICAgICBsZXQgdkRhdGEgPSByZW5kZXJEYXRhLnZEYXRhc1swXTtcclxuICAgICAgICBsZXQgaURhdGEgPSByZW5kZXJEYXRhLmlEYXRhc1swXTtcclxuXHJcbiAgICAgICAgbGV0IGJ1ZmZlciA9IHRoaXMuZ2V0QnVmZmVyKHJlbmRlcmVyKTtcclxuICAgICAgICBsZXQgb2Zmc2V0SW5mbyA9IGJ1ZmZlci5yZXF1ZXN0KHRoaXMudmVydGljZXNDb3VudCwgdGhpcy5pbmRpY2VzQ291bnQpO1xyXG5cclxuICAgICAgICAvLyBidWZmZXIgZGF0YSBtYXkgYmUgcmVhbGxvYywgbmVlZCBnZXQgcmVmZXJlbmNlIGFmdGVyIHJlcXVlc3QuXHJcblxyXG4gICAgICAgIC8vIGZpbGwgdmVydGljZXNcclxuICAgICAgICBsZXQgdmVydGV4T2Zmc2V0ID0gb2Zmc2V0SW5mby5ieXRlT2Zmc2V0ID4+IDIsXHJcbiAgICAgICAgICAgIHZidWYgPSBidWZmZXIuX3ZEYXRhO1xyXG5cclxuICAgICAgICBpZiAodkRhdGEubGVuZ3RoICsgdmVydGV4T2Zmc2V0ID4gdmJ1Zi5sZW5ndGgpIHtcclxuICAgICAgICAgICAgdmJ1Zi5zZXQodkRhdGEuc3ViYXJyYXkoMCwgdmJ1Zi5sZW5ndGggLSB2ZXJ0ZXhPZmZzZXQpLCB2ZXJ0ZXhPZmZzZXQpO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIHZidWYuc2V0KHZEYXRhLCB2ZXJ0ZXhPZmZzZXQpO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgLy8gZmlsbCBpbmRpY2VzXHJcbiAgICAgICAgbGV0IGlidWYgPSBidWZmZXIuX2lEYXRhLFxyXG4gICAgICAgICAgICBpbmRpY2VPZmZzZXQgPSBvZmZzZXRJbmZvLmluZGljZU9mZnNldCxcclxuICAgICAgICAgICAgdmVydGV4SWQgPSBvZmZzZXRJbmZvLnZlcnRleE9mZnNldDtcclxuICAgICAgICBmb3IgKGxldCBpID0gMCwgbCA9IGlEYXRhLmxlbmd0aDsgaSA8IGw7IGkrKykge1xyXG4gICAgICAgICAgICBpYnVmW2luZGljZU9mZnNldCsrXSA9IHZlcnRleElkICsgaURhdGFbaV07XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHBhY2tUb0R5bmFtaWNBdGxhcyhjb21wLCBmcmFtZSkge1xyXG4gICAgICAgIGlmIChDQ19URVNUKSByZXR1cm47XHJcblxyXG4gICAgICAgIGlmICghZnJhbWUuX29yaWdpbmFsICYmIGNjLmR5bmFtaWNBdGxhc01hbmFnZXIgJiYgZnJhbWUuX3RleHR1cmUucGFja2FibGUpIHtcclxuICAgICAgICAgICAgbGV0IHBhY2tlZEZyYW1lID0gY2MuZHluYW1pY0F0bGFzTWFuYWdlci5pbnNlcnRTcHJpdGVGcmFtZShmcmFtZSk7XHJcbiAgICAgICAgICAgIGlmIChwYWNrZWRGcmFtZSkge1xyXG4gICAgICAgICAgICAgICAgZnJhbWUuX3NldER5bmFtaWNBdGxhc0ZyYW1lKHBhY2tlZEZyYW1lKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICBsZXQgbWF0ZXJpYWwgPSBjb21wLl9tYXRlcmlhbHNbMF07XHJcbiAgICAgICAgaWYgKCFtYXRlcmlhbCkgcmV0dXJuO1xyXG5cclxuICAgICAgICBpZiAobWF0ZXJpYWwuZ2V0UHJvcGVydHkoJ3RleHR1cmUnKSAhPT0gZnJhbWUuX3RleHR1cmUpIHtcclxuICAgICAgICAgICAgLy8gdGV4dHVyZSB3YXMgcGFja2VkIHRvIGR5bmFtaWMgYXRsYXMsIHNob3VsZCB1cGRhdGUgdXZzXHJcbiAgICAgICAgICAgIGNvbXAuX3ZlcnRzRGlydHkgPSB0cnVlO1xyXG4gICAgICAgICAgICBjb21wLl91cGRhdGVNYXRlcmlhbCgpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxufSJdfQ== -//------QC-SOURCE-SPLIT------ - - (function() { - var nodeEnv = typeof require !== 'undefined' && typeof process !== 'undefined'; - var __module = nodeEnv ? module : {exports:{}}; - var __filename = 'preview-scripts/tiledmap-optimize-resource/Script/TmoSprite.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, '4fa6cO05aBKGoM+5EX9zhkC', 'TmoSprite'); -// Script/TmoSprite.js - -"use strict"; - -exports.__esModule = true; -exports["default"] = void 0; -var _TmoAssembler = require("./TmoAssembler"); -var _default = cc.Class({ - "extends": cc.Sprite, - /** - * 设置TextureIndex - */ - setTextureIdx: function setTextureIdx(idx) { - this._textureIdx = idx; - this.setVertsDirty(); - }, - _getDefaultMaterial: function _getDefaultMaterial() { - // 从TiledMap取得默认的材质 - return this._getTiledMap().getObjectMaterial(); - }, - _updateMaterial: function _updateMaterial() { - // make sure material is belong to self. - var material = this.getMaterial(0); - if (material) { - if (material.getDefine('USE_TEXTURE') !== undefined) { - material.define('USE_TEXTURE', true); - } - // 手动设置哈希值,避免无法合批 - material.updateHash(999999); - - // 增加WITH_COLOR宏定义 - var noColor = this.isNoColor(); - material.define('WITH_COLOR', !noColor); - } - cc.BlendFunc.prototype._updateMaterial.call(this); - }, - _resetAssembler: function _resetAssembler() { - // 修改默认Assembler - var assembler = this._assembler = new _TmoAssembler.TmoAssembler(); - assembler.init(this); - this._updateColor(); - this.setVertsDirty(); - }, - _getTiledMap: function _getTiledMap() { - return this.node._tiledMap; - }, - isNoColor: function isNoColor() { - return this._getTiledMap().isNoColor(); - } -}); -exports["default"] = _default; -module.exports = exports["default"]; - -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,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInBhY2thZ2VzXFxUaWxlZE1hcE9wdGltaXplclxccmVzb3VyY2VcXFNjcmlwdFxcVG1vU3ByaXRlLmpzIl0sIm5hbWVzIjpbIl9UbW9Bc3NlbWJsZXIiLCJyZXF1aXJlIiwiX2RlZmF1bHQiLCJjYyIsIkNsYXNzIiwiU3ByaXRlIiwic2V0VGV4dHVyZUlkeCIsImlkeCIsIl90ZXh0dXJlSWR4Iiwic2V0VmVydHNEaXJ0eSIsIl9nZXREZWZhdWx0TWF0ZXJpYWwiLCJfZ2V0VGlsZWRNYXAiLCJnZXRPYmplY3RNYXRlcmlhbCIsIl91cGRhdGVNYXRlcmlhbCIsIm1hdGVyaWFsIiwiZ2V0TWF0ZXJpYWwiLCJnZXREZWZpbmUiLCJ1bmRlZmluZWQiLCJkZWZpbmUiLCJ1cGRhdGVIYXNoIiwibm9Db2xvciIsImlzTm9Db2xvciIsIkJsZW5kRnVuYyIsInByb3RvdHlwZSIsImNhbGwiLCJfcmVzZXRBc3NlbWJsZXIiLCJhc3NlbWJsZXIiLCJfYXNzZW1ibGVyIiwiVG1vQXNzZW1ibGVyIiwiaW5pdCIsIl91cGRhdGVDb2xvciIsIm5vZGUiLCJfdGlsZWRNYXAiLCJleHBvcnRzIiwibW9kdWxlIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsSUFBQUEsYUFBQSxHQUFBQyxPQUFBO0FBQThDLElBQUFDLFFBQUEsR0FFL0JDLEVBQUUsQ0FBQ0MsS0FBSyxDQUFDO0VBQ3BCLFdBQVNELEVBQUUsQ0FBQ0UsTUFBTTtFQUVsQjtBQUNKO0FBQ0E7RUFDSUMsYUFBYSxXQUFBQSxjQUFDQyxHQUFHLEVBQUU7SUFDZixJQUFJLENBQUNDLFdBQVcsR0FBR0QsR0FBRztJQUN0QixJQUFJLENBQUNFLGFBQWEsRUFBRTtFQUN4QixDQUFDO0VBRURDLG1CQUFtQixXQUFBQSxvQkFBQSxFQUFHO0lBQ2xCO0lBQ0EsT0FBTyxJQUFJLENBQUNDLFlBQVksRUFBRSxDQUFDQyxpQkFBaUIsRUFBRTtFQUNsRCxDQUFDO0VBRURDLGVBQWUsV0FBQUEsZ0JBQUEsRUFBRztJQUNkO0lBQ0EsSUFBSUMsUUFBUSxHQUFHLElBQUksQ0FBQ0MsV0FBVyxDQUFDLENBQUMsQ0FBQztJQUNsQyxJQUFJRCxRQUFRLEVBQUU7TUFDVixJQUFJQSxRQUFRLENBQUNFLFNBQVMsQ0FBQyxhQUFhLENBQUMsS0FBS0MsU0FBUyxFQUFFO1FBQ2pESCxRQUFRLENBQUNJLE1BQU0sQ0FBQyxhQUFhLEVBQUUsSUFBSSxDQUFDO01BQ3hDO01BQ0E7TUFDQUosUUFBUSxDQUFDSyxVQUFVLENBQUMsTUFBTSxDQUFDOztNQUUzQjtNQUNBLElBQUlDLE9BQU8sR0FBRyxJQUFJLENBQUNDLFNBQVMsRUFBRTtNQUM5QlAsUUFBUSxDQUFDSSxNQUFNLENBQUMsWUFBWSxFQUFFLENBQUNFLE9BQU8sQ0FBQztJQUMzQztJQUVBakIsRUFBRSxDQUFDbUIsU0FBUyxDQUFDQyxTQUFTLENBQUNWLGVBQWUsQ0FBQ1csSUFBSSxDQUFDLElBQUksQ0FBQztFQUNyRCxDQUFDO0VBRURDLGVBQWUsV0FBQUEsZ0JBQUEsRUFBRztJQUNkO0lBQ0EsSUFBSUMsU0FBUyxHQUFHLElBQUksQ0FBQ0MsVUFBVSxHQUFHLElBQUlDLDBCQUFZLEVBQUU7SUFDcERGLFNBQVMsQ0FBQ0csSUFBSSxDQUFDLElBQUksQ0FBQztJQUVwQixJQUFJLENBQUNDLFlBQVksRUFBRTtJQUNuQixJQUFJLENBQUNyQixhQUFhLEVBQUU7RUFDeEIsQ0FBQztFQUVERSxZQUFZLFdBQUFBLGFBQUEsRUFBRztJQUNYLE9BQU8sSUFBSSxDQUFDb0IsSUFBSSxDQUFDQyxTQUFTO0VBQzlCLENBQUM7RUFFRFgsU0FBUyxXQUFBQSxVQUFBLEVBQUc7SUFDUixPQUFPLElBQUksQ0FBQ1YsWUFBWSxFQUFFLENBQUNVLFNBQVMsRUFBRTtFQUMxQztBQUNKLENBQUMsQ0FBQztBQUFBWSxPQUFBLGNBQUEvQixRQUFBO0FBQUFnQyxNQUFBLENBQUFELE9BQUEsR0FBQUEsT0FBQSIsInNvdXJjZVJvb3QiOiIvIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgVG1vQXNzZW1ibGVyIH0gZnJvbSBcIi4vVG1vQXNzZW1ibGVyXCI7XHJcblxyXG5leHBvcnQgZGVmYXVsdCBjYy5DbGFzcyh7XHJcbiAgICBleHRlbmRzOiBjYy5TcHJpdGUsXHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiDorr7nva5UZXh0dXJlSW5kZXhcclxuICAgICAqL1xyXG4gICAgc2V0VGV4dHVyZUlkeChpZHgpIHtcclxuICAgICAgICB0aGlzLl90ZXh0dXJlSWR4ID0gaWR4XHJcbiAgICAgICAgdGhpcy5zZXRWZXJ0c0RpcnR5KCk7XHJcbiAgICB9LFxyXG5cclxuICAgIF9nZXREZWZhdWx0TWF0ZXJpYWwoKSB7XHJcbiAgICAgICAgLy8g5LuOVGlsZWRNYXDlj5blvpfpu5jorqTnmoTmnZDotKhcclxuICAgICAgICByZXR1cm4gdGhpcy5fZ2V0VGlsZWRNYXAoKS5nZXRPYmplY3RNYXRlcmlhbCgpO1xyXG4gICAgfSxcclxuXHJcbiAgICBfdXBkYXRlTWF0ZXJpYWwoKSB7XHJcbiAgICAgICAgLy8gbWFrZSBzdXJlIG1hdGVyaWFsIGlzIGJlbG9uZyB0byBzZWxmLlxyXG4gICAgICAgIGxldCBtYXRlcmlhbCA9IHRoaXMuZ2V0TWF0ZXJpYWwoMCk7XHJcbiAgICAgICAgaWYgKG1hdGVyaWFsKSB7XHJcbiAgICAgICAgICAgIGlmIChtYXRlcmlhbC5nZXREZWZpbmUoJ1VTRV9URVhUVVJFJykgIT09IHVuZGVmaW5lZCkge1xyXG4gICAgICAgICAgICAgICAgbWF0ZXJpYWwuZGVmaW5lKCdVU0VfVEVYVFVSRScsIHRydWUpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIC8vIOaJi+WKqOiuvue9ruWTiOW4jOWAvO+8jOmBv+WFjeaXoOazleWQiOaJuVxyXG4gICAgICAgICAgICBtYXRlcmlhbC51cGRhdGVIYXNoKDk5OTk5OSk7XHJcblxyXG4gICAgICAgICAgICAvLyDlop7liqBXSVRIX0NPTE9S5a6P5a6a5LmJXHJcbiAgICAgICAgICAgIGxldCBub0NvbG9yID0gdGhpcy5pc05vQ29sb3IoKTtcclxuICAgICAgICAgICAgbWF0ZXJpYWwuZGVmaW5lKCdXSVRIX0NPTE9SJywgIW5vQ29sb3IpO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgY2MuQmxlbmRGdW5jLnByb3RvdHlwZS5fdXBkYXRlTWF0ZXJpYWwuY2FsbCh0aGlzKTtcclxuICAgIH0sXHJcblxyXG4gICAgX3Jlc2V0QXNzZW1ibGVyKCkge1xyXG4gICAgICAgIC8vIOS/ruaUuem7mOiupEFzc2VtYmxlclxyXG4gICAgICAgIGxldCBhc3NlbWJsZXIgPSB0aGlzLl9hc3NlbWJsZXIgPSBuZXcgVG1vQXNzZW1ibGVyKCk7XHJcbiAgICAgICAgYXNzZW1ibGVyLmluaXQodGhpcyk7XHJcblxyXG4gICAgICAgIHRoaXMuX3VwZGF0ZUNvbG9yKCk7XHJcbiAgICAgICAgdGhpcy5zZXRWZXJ0c0RpcnR5KCk7XHJcbiAgICB9LFxyXG5cclxuICAgIF9nZXRUaWxlZE1hcCgpIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5ub2RlLl90aWxlZE1hcDtcclxuICAgIH0sXHJcblxyXG4gICAgaXNOb0NvbG9yKCkge1xyXG4gICAgICAgIHJldHVybiB0aGlzLl9nZXRUaWxlZE1hcCgpLmlzTm9Db2xvcigpO1xyXG4gICAgfVxyXG59KTtcclxuIl19 -//------QC-SOURCE-SPLIT------ - - (function() { - var nodeEnv = typeof require !== 'undefined' && typeof process !== 'undefined'; - var __module = nodeEnv ? module : {exports:{}}; -<<<<<<< HEAD -======= var __filename = 'preview-scripts/assets/Script/module/Crypto/crypto-js.min.js'; var __require = nodeEnv ? function (request) { return cc.require(request); @@ -24795,2067 +14289,2067 @@ cc._RF.pop(); 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, 'e64e1qXyT9CV6s0gDQdj/ed', 'crypto-js.min'); -// Script/module/Crypto/crypto-js.min.js - -"use strict"; - -!function (t, r) { - "object" == typeof exports ? module.exports = exports = r() : "function" == typeof define && define.amd ? define([], r) : t.CryptoJS = r(); -}(void 0, function () { - var t = t || function (t, r) { - var e = Object.create || function () { - function t() {} - return function (r) { - var e; - return t.prototype = r, e = new t(), t.prototype = null, e; - }; - }(), - i = {}, - n = i.lib = {}, - o = n.Base = function () { - return { - extend: function extend(t) { - var r = e(this); - return t && r.mixIn(t), r.hasOwnProperty("init") && this.init !== r.init || (r.init = function () { - r.$super.init.apply(this, arguments); - }), r.init.prototype = r, r.$super = this, r; - }, - create: function create() { - var t = this.extend(); - return t.init.apply(t, arguments), t; - }, - init: function init() {}, - mixIn: function mixIn(t) { - for (var r in t) t.hasOwnProperty(r) && (this[r] = t[r]); - t.hasOwnProperty("toString") && (this.toString = t.toString); - }, - clone: function clone() { - return this.init.prototype.extend(this); - } - }; - }(), - s = n.WordArray = o.extend({ - init: function init(t, e) { - t = this.words = t || [], e != r ? this.sigBytes = e : this.sigBytes = 4 * t.length; - }, - toString: function toString(t) { - return (t || c).stringify(this); - }, - concat: function concat(t) { - var r = this.words, - e = t.words, - i = this.sigBytes, - n = t.sigBytes; - if (this.clamp(), i % 4) for (var o = 0; o < n; o++) { - var s = e[o >>> 2] >>> 24 - o % 4 * 8 & 255; - r[i + o >>> 2] |= s << 24 - (i + o) % 4 * 8; - } else for (var o = 0; o < n; o += 4) r[i + o >>> 2] = e[o >>> 2]; - return this.sigBytes += n, this; - }, - clamp: function clamp() { - var r = this.words, - e = this.sigBytes; - r[e >>> 2] &= 4294967295 << 32 - e % 4 * 8, r.length = t.ceil(e / 4); - }, - clone: function clone() { - var t = o.clone.call(this); - return t.words = this.words.slice(0), t; - }, - random: function random(r) { - for (var e, i = [], n = function n(r) { - var r = r, - e = 987654321, - i = 4294967295; - return function () { - e = 36969 * (65535 & e) + (e >> 16) & i, r = 18e3 * (65535 & r) + (r >> 16) & i; - var n = (e << 16) + r & i; - return n /= 4294967296, n += .5, n * (t.random() > .5 ? 1 : -1); - }; - }, o = 0; o < r; o += 4) { - var a = n(4294967296 * (e || t.random())); - e = 987654071 * a(), i.push(4294967296 * a() | 0); - } - return new s.init(i, r); - } - }), - a = i.enc = {}, - c = a.Hex = { - stringify: function stringify(t) { - for (var r = t.words, e = t.sigBytes, i = [], n = 0; n < e; n++) { - var o = r[n >>> 2] >>> 24 - n % 4 * 8 & 255; - i.push((o >>> 4).toString(16)), i.push((15 & o).toString(16)); - } - return i.join(""); - }, - parse: function parse(t) { - for (var r = t.length, e = [], i = 0; i < r; i += 2) e[i >>> 3] |= parseInt(t.substr(i, 2), 16) << 24 - i % 8 * 4; - return new s.init(e, r / 2); - } - }, - h = a.Latin1 = { - stringify: function stringify(t) { - for (var r = t.words, e = t.sigBytes, i = [], n = 0; n < e; n++) { - var o = r[n >>> 2] >>> 24 - n % 4 * 8 & 255; - i.push(String.fromCharCode(o)); - } - return i.join(""); - }, - parse: function parse(t) { - for (var r = t.length, e = [], i = 0; i < r; i++) e[i >>> 2] |= (255 & t.charCodeAt(i)) << 24 - i % 4 * 8; - return new s.init(e, r); - } - }, - l = a.Utf8 = { - stringify: function stringify(t) { - try { - return decodeURIComponent(escape(h.stringify(t))); - } catch (t) { - throw new Error("Malformed UTF-8 data"); - } - }, - parse: function parse(t) { - return h.parse(unescape(encodeURIComponent(t))); - } - }, - f = n.BufferedBlockAlgorithm = o.extend({ - reset: function reset() { - this._data = new s.init(), this._nDataBytes = 0; - }, - _append: function _append(t) { - "string" == typeof t && (t = l.parse(t)), this._data.concat(t), this._nDataBytes += t.sigBytes; - }, - _process: function _process(r) { - var e = this._data, - i = e.words, - n = e.sigBytes, - o = this.blockSize, - a = 4 * o, - c = n / a; - c = r ? t.ceil(c) : t.max((0 | c) - this._minBufferSize, 0); - var h = c * o, - l = t.min(4 * h, n); - if (h) { - for (var f = 0; f < h; f += o) this._doProcessBlock(i, f); - var u = i.splice(0, h); - e.sigBytes -= l; - } - return new s.init(u, l); - }, - clone: function clone() { - var t = o.clone.call(this); - return t._data = this._data.clone(), t; - }, - _minBufferSize: 0 - }), - u = (n.Hasher = f.extend({ - cfg: o.extend(), - init: function init(t) { - this.cfg = this.cfg.extend(t), this.reset(); - }, - reset: function reset() { - f.reset.call(this), this._doReset(); - }, - update: function update(t) { - return this._append(t), this._process(), this; - }, - finalize: function finalize(t) { - t && this._append(t); - var r = this._doFinalize(); - return r; - }, - blockSize: 16, - _createHelper: function _createHelper(t) { - return function (r, e) { - return new t.init(e).finalize(r); - }; - }, - _createHmacHelper: function _createHmacHelper(t) { - return function (r, e) { - return new u.HMAC.init(t, e).finalize(r); - }; - } - }), i.algo = {}); - return i; - }(Math); - return function () { - function r(t, r, e) { - for (var i = [], o = 0, s = 0; s < r; s++) if (s % 4) { - var a = e[t.charCodeAt(s - 1)] << s % 4 * 2, - c = e[t.charCodeAt(s)] >>> 6 - s % 4 * 2; - i[o >>> 2] |= (a | c) << 24 - o % 4 * 8, o++; - } - return n.create(i, o); - } - var e = t, - i = e.lib, - n = i.WordArray, - o = e.enc; - o.Base64 = { - stringify: function stringify(t) { - var r = t.words, - e = t.sigBytes, - i = this._map; - t.clamp(); - for (var n = [], o = 0; o < e; o += 3) for (var s = r[o >>> 2] >>> 24 - o % 4 * 8 & 255, a = r[o + 1 >>> 2] >>> 24 - (o + 1) % 4 * 8 & 255, c = r[o + 2 >>> 2] >>> 24 - (o + 2) % 4 * 8 & 255, h = s << 16 | a << 8 | c, l = 0; l < 4 && o + .75 * l < e; l++) n.push(i.charAt(h >>> 6 * (3 - l) & 63)); - var f = i.charAt(64); - if (f) for (; n.length % 4;) n.push(f); - return n.join(""); - }, - parse: function parse(t) { - var e = t.length, - i = this._map, - n = this._reverseMap; - if (!n) { - n = this._reverseMap = []; - for (var o = 0; o < i.length; o++) n[i.charCodeAt(o)] = o; - } - var s = i.charAt(64); - if (s) { - var a = t.indexOf(s); - a !== -1 && (e = a); - } - return r(t, e, n); - }, - _map: "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=" - }; - }(), function (r) { - function e(t, r, e, i, n, o, s) { - var a = t + (r & e | ~r & i) + n + s; - return (a << o | a >>> 32 - o) + r; - } - function i(t, r, e, i, n, o, s) { - var a = t + (r & i | e & ~i) + n + s; - return (a << o | a >>> 32 - o) + r; - } - function n(t, r, e, i, n, o, s) { - var a = t + (r ^ e ^ i) + n + s; - return (a << o | a >>> 32 - o) + r; - } - function o(t, r, e, i, n, o, s) { - var a = t + (e ^ (r | ~i)) + n + s; - return (a << o | a >>> 32 - o) + r; - } - var s = t, - a = s.lib, - c = a.WordArray, - h = a.Hasher, - l = s.algo, - f = []; - !function () { - for (var t = 0; t < 64; t++) f[t] = 4294967296 * r.abs(r.sin(t + 1)) | 0; - }(); - var u = l.MD5 = h.extend({ - _doReset: function _doReset() { - this._hash = new c.init([1732584193, 4023233417, 2562383102, 271733878]); - }, - _doProcessBlock: function _doProcessBlock(t, r) { - for (var s = 0; s < 16; s++) { - var a = r + s, - c = t[a]; - t[a] = 16711935 & (c << 8 | c >>> 24) | 4278255360 & (c << 24 | c >>> 8); - } - var h = this._hash.words, - l = t[r + 0], - u = t[r + 1], - d = t[r + 2], - v = t[r + 3], - p = t[r + 4], - _ = t[r + 5], - y = t[r + 6], - g = t[r + 7], - B = t[r + 8], - w = t[r + 9], - k = t[r + 10], - S = t[r + 11], - m = t[r + 12], - x = t[r + 13], - b = t[r + 14], - H = t[r + 15], - z = h[0], - A = h[1], - C = h[2], - D = h[3]; - z = e(z, A, C, D, l, 7, f[0]), D = e(D, z, A, C, u, 12, f[1]), C = e(C, D, z, A, d, 17, f[2]), A = e(A, C, D, z, v, 22, f[3]), z = e(z, A, C, D, p, 7, f[4]), D = e(D, z, A, C, _, 12, f[5]), C = e(C, D, z, A, y, 17, f[6]), A = e(A, C, D, z, g, 22, f[7]), z = e(z, A, C, D, B, 7, f[8]), D = e(D, z, A, C, w, 12, f[9]), C = e(C, D, z, A, k, 17, f[10]), A = e(A, C, D, z, S, 22, f[11]), z = e(z, A, C, D, m, 7, f[12]), D = e(D, z, A, C, x, 12, f[13]), C = e(C, D, z, A, b, 17, f[14]), A = e(A, C, D, z, H, 22, f[15]), z = i(z, A, C, D, u, 5, f[16]), D = i(D, z, A, C, y, 9, f[17]), C = i(C, D, z, A, S, 14, f[18]), A = i(A, C, D, z, l, 20, f[19]), z = i(z, A, C, D, _, 5, f[20]), D = i(D, z, A, C, k, 9, f[21]), C = i(C, D, z, A, H, 14, f[22]), A = i(A, C, D, z, p, 20, f[23]), z = i(z, A, C, D, w, 5, f[24]), D = i(D, z, A, C, b, 9, f[25]), C = i(C, D, z, A, v, 14, f[26]), A = i(A, C, D, z, B, 20, f[27]), z = i(z, A, C, D, x, 5, f[28]), D = i(D, z, A, C, d, 9, f[29]), C = i(C, D, z, A, g, 14, f[30]), A = i(A, C, D, z, m, 20, f[31]), z = n(z, A, C, D, _, 4, f[32]), D = n(D, z, A, C, B, 11, f[33]), C = n(C, D, z, A, S, 16, f[34]), A = n(A, C, D, z, b, 23, f[35]), z = n(z, A, C, D, u, 4, f[36]), D = n(D, z, A, C, p, 11, f[37]), C = n(C, D, z, A, g, 16, f[38]), A = n(A, C, D, z, k, 23, f[39]), z = n(z, A, C, D, x, 4, f[40]), D = n(D, z, A, C, l, 11, f[41]), C = n(C, D, z, A, v, 16, f[42]), A = n(A, C, D, z, y, 23, f[43]), z = n(z, A, C, D, w, 4, f[44]), D = n(D, z, A, C, m, 11, f[45]), C = n(C, D, z, A, H, 16, f[46]), A = n(A, C, D, z, d, 23, f[47]), z = o(z, A, C, D, l, 6, f[48]), D = o(D, z, A, C, g, 10, f[49]), C = o(C, D, z, A, b, 15, f[50]), A = o(A, C, D, z, _, 21, f[51]), z = o(z, A, C, D, m, 6, f[52]), D = o(D, z, A, C, v, 10, f[53]), C = o(C, D, z, A, k, 15, f[54]), A = o(A, C, D, z, u, 21, f[55]), z = o(z, A, C, D, B, 6, f[56]), D = o(D, z, A, C, H, 10, f[57]), C = o(C, D, z, A, y, 15, f[58]), A = o(A, C, D, z, x, 21, f[59]), z = o(z, A, C, D, p, 6, f[60]), D = o(D, z, A, C, S, 10, f[61]), C = o(C, D, z, A, d, 15, f[62]), A = o(A, C, D, z, w, 21, f[63]), h[0] = h[0] + z | 0, h[1] = h[1] + A | 0, h[2] = h[2] + C | 0, h[3] = h[3] + D | 0; - }, - _doFinalize: function _doFinalize() { - var t = this._data, - e = t.words, - i = 8 * this._nDataBytes, - n = 8 * t.sigBytes; - e[n >>> 5] |= 128 << 24 - n % 32; - var o = r.floor(i / 4294967296), - s = i; - e[(n + 64 >>> 9 << 4) + 15] = 16711935 & (o << 8 | o >>> 24) | 4278255360 & (o << 24 | o >>> 8), e[(n + 64 >>> 9 << 4) + 14] = 16711935 & (s << 8 | s >>> 24) | 4278255360 & (s << 24 | s >>> 8), t.sigBytes = 4 * (e.length + 1), this._process(); - for (var a = this._hash, c = a.words, h = 0; h < 4; h++) { - var l = c[h]; - c[h] = 16711935 & (l << 8 | l >>> 24) | 4278255360 & (l << 24 | l >>> 8); - } - return a; - }, - clone: function clone() { - var t = h.clone.call(this); - return t._hash = this._hash.clone(), t; - } - }); - s.MD5 = h._createHelper(u), s.HmacMD5 = h._createHmacHelper(u); - }(Math), function () { - var r = t, - e = r.lib, - i = e.WordArray, - n = e.Hasher, - o = r.algo, - s = [], - a = o.SHA1 = n.extend({ - _doReset: function _doReset() { - this._hash = new i.init([1732584193, 4023233417, 2562383102, 271733878, 3285377520]); - }, - _doProcessBlock: function _doProcessBlock(t, r) { - for (var e = this._hash.words, i = e[0], n = e[1], o = e[2], a = e[3], c = e[4], h = 0; h < 80; h++) { - if (h < 16) s[h] = 0 | t[r + h];else { - var l = s[h - 3] ^ s[h - 8] ^ s[h - 14] ^ s[h - 16]; - s[h] = l << 1 | l >>> 31; - } - var f = (i << 5 | i >>> 27) + c + s[h]; - f += h < 20 ? (n & o | ~n & a) + 1518500249 : h < 40 ? (n ^ o ^ a) + 1859775393 : h < 60 ? (n & o | n & a | o & a) - 1894007588 : (n ^ o ^ a) - 899497514, c = a, a = o, o = n << 30 | n >>> 2, n = i, i = f; - } - e[0] = e[0] + i | 0, e[1] = e[1] + n | 0, e[2] = e[2] + o | 0, e[3] = e[3] + a | 0, e[4] = e[4] + c | 0; - }, - _doFinalize: function _doFinalize() { - var t = this._data, - r = t.words, - e = 8 * this._nDataBytes, - i = 8 * t.sigBytes; - return r[i >>> 5] |= 128 << 24 - i % 32, r[(i + 64 >>> 9 << 4) + 14] = Math.floor(e / 4294967296), r[(i + 64 >>> 9 << 4) + 15] = e, t.sigBytes = 4 * r.length, this._process(), this._hash; - }, - clone: function clone() { - var t = n.clone.call(this); - return t._hash = this._hash.clone(), t; - } - }); - r.SHA1 = n._createHelper(a), r.HmacSHA1 = n._createHmacHelper(a); - }(), function (r) { - var e = t, - i = e.lib, - n = i.WordArray, - o = i.Hasher, - s = e.algo, - a = [], - c = []; - !function () { - function t(t) { - for (var e = r.sqrt(t), i = 2; i <= e; i++) if (!(t % i)) return !1; - return !0; - } - function e(t) { - return 4294967296 * (t - (0 | t)) | 0; - } - for (var i = 2, n = 0; n < 64;) t(i) && (n < 8 && (a[n] = e(r.pow(i, .5))), c[n] = e(r.pow(i, 1 / 3)), n++), i++; - }(); - var h = [], - l = s.SHA256 = o.extend({ - _doReset: function _doReset() { - this._hash = new n.init(a.slice(0)); - }, - _doProcessBlock: function _doProcessBlock(t, r) { - for (var e = this._hash.words, i = e[0], n = e[1], o = e[2], s = e[3], a = e[4], l = e[5], f = e[6], u = e[7], d = 0; d < 64; d++) { - if (d < 16) h[d] = 0 | t[r + d];else { - var v = h[d - 15], - p = (v << 25 | v >>> 7) ^ (v << 14 | v >>> 18) ^ v >>> 3, - _ = h[d - 2], - y = (_ << 15 | _ >>> 17) ^ (_ << 13 | _ >>> 19) ^ _ >>> 10; - h[d] = p + h[d - 7] + y + h[d - 16]; - } - var g = a & l ^ ~a & f, - B = i & n ^ i & o ^ n & o, - w = (i << 30 | i >>> 2) ^ (i << 19 | i >>> 13) ^ (i << 10 | i >>> 22), - k = (a << 26 | a >>> 6) ^ (a << 21 | a >>> 11) ^ (a << 7 | a >>> 25), - S = u + k + g + c[d] + h[d], - m = w + B; - u = f, f = l, l = a, a = s + S | 0, s = o, o = n, n = i, i = S + m | 0; - } - e[0] = e[0] + i | 0, e[1] = e[1] + n | 0, e[2] = e[2] + o | 0, e[3] = e[3] + s | 0, e[4] = e[4] + a | 0, e[5] = e[5] + l | 0, e[6] = e[6] + f | 0, e[7] = e[7] + u | 0; - }, - _doFinalize: function _doFinalize() { - var t = this._data, - e = t.words, - i = 8 * this._nDataBytes, - n = 8 * t.sigBytes; - return e[n >>> 5] |= 128 << 24 - n % 32, e[(n + 64 >>> 9 << 4) + 14] = r.floor(i / 4294967296), e[(n + 64 >>> 9 << 4) + 15] = i, t.sigBytes = 4 * e.length, this._process(), this._hash; - }, - clone: function clone() { - var t = o.clone.call(this); - return t._hash = this._hash.clone(), t; - } - }); - e.SHA256 = o._createHelper(l), e.HmacSHA256 = o._createHmacHelper(l); - }(Math), function () { - function r(t) { - return t << 8 & 4278255360 | t >>> 8 & 16711935; - } - var e = t, - i = e.lib, - n = i.WordArray, - o = e.enc; - o.Utf16 = o.Utf16BE = { - stringify: function stringify(t) { - for (var r = t.words, e = t.sigBytes, i = [], n = 0; n < e; n += 2) { - var o = r[n >>> 2] >>> 16 - n % 4 * 8 & 65535; - i.push(String.fromCharCode(o)); - } - return i.join(""); - }, - parse: function parse(t) { - for (var r = t.length, e = [], i = 0; i < r; i++) e[i >>> 1] |= t.charCodeAt(i) << 16 - i % 2 * 16; - return n.create(e, 2 * r); - } - }; - o.Utf16LE = { - stringify: function stringify(t) { - for (var e = t.words, i = t.sigBytes, n = [], o = 0; o < i; o += 2) { - var s = r(e[o >>> 2] >>> 16 - o % 4 * 8 & 65535); - n.push(String.fromCharCode(s)); - } - return n.join(""); - }, - parse: function parse(t) { - for (var e = t.length, i = [], o = 0; o < e; o++) i[o >>> 1] |= r(t.charCodeAt(o) << 16 - o % 2 * 16); - return n.create(i, 2 * e); - } - }; - }(), function () { - if ("function" == typeof ArrayBuffer) { - var r = t, - e = r.lib, - i = e.WordArray, - n = i.init, - o = i.init = function (t) { - if (t instanceof ArrayBuffer && (t = new Uint8Array(t)), (t instanceof Int8Array || "undefined" != typeof Uint8ClampedArray && t instanceof Uint8ClampedArray || t instanceof Int16Array || t instanceof Uint16Array || t instanceof Int32Array || t instanceof Uint32Array || t instanceof Float32Array || t instanceof Float64Array) && (t = new Uint8Array(t.buffer, t.byteOffset, t.byteLength)), t instanceof Uint8Array) { - for (var r = t.byteLength, e = [], i = 0; i < r; i++) e[i >>> 2] |= t[i] << 24 - i % 4 * 8; - n.call(this, e, r); - } else n.apply(this, arguments); - }; - o.prototype = i; - } - }(), function (r) { - function e(t, r, e) { - return t ^ r ^ e; - } - function i(t, r, e) { - return t & r | ~t & e; - } - function n(t, r, e) { - return (t | ~r) ^ e; - } - function o(t, r, e) { - return t & e | r & ~e; - } - function s(t, r, e) { - return t ^ (r | ~e); - } - function a(t, r) { - return t << r | t >>> 32 - r; - } - var c = t, - h = c.lib, - l = h.WordArray, - f = h.Hasher, - u = c.algo, - d = l.create([0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 7, 4, 13, 1, 10, 6, 15, 3, 12, 0, 9, 5, 2, 14, 11, 8, 3, 10, 14, 4, 9, 15, 8, 1, 2, 7, 0, 6, 13, 11, 5, 12, 1, 9, 11, 10, 0, 8, 12, 4, 13, 3, 7, 15, 14, 5, 6, 2, 4, 0, 5, 9, 7, 12, 2, 10, 14, 1, 3, 8, 11, 6, 15, 13]), - v = l.create([5, 14, 7, 0, 9, 2, 11, 4, 13, 6, 15, 8, 1, 10, 3, 12, 6, 11, 3, 7, 0, 13, 5, 10, 14, 15, 8, 12, 4, 9, 1, 2, 15, 5, 1, 3, 7, 14, 6, 9, 11, 8, 12, 2, 10, 0, 4, 13, 8, 6, 4, 1, 3, 11, 15, 0, 5, 12, 2, 13, 9, 7, 10, 14, 12, 15, 10, 4, 1, 5, 8, 7, 6, 2, 13, 14, 0, 3, 9, 11]), - p = l.create([11, 14, 15, 12, 5, 8, 7, 9, 11, 13, 14, 15, 6, 7, 9, 8, 7, 6, 8, 13, 11, 9, 7, 15, 7, 12, 15, 9, 11, 7, 13, 12, 11, 13, 6, 7, 14, 9, 13, 15, 14, 8, 13, 6, 5, 12, 7, 5, 11, 12, 14, 15, 14, 15, 9, 8, 9, 14, 5, 6, 8, 6, 5, 12, 9, 15, 5, 11, 6, 8, 13, 12, 5, 12, 13, 14, 11, 8, 5, 6]), - _ = l.create([8, 9, 9, 11, 13, 15, 15, 5, 7, 7, 8, 11, 14, 14, 12, 6, 9, 13, 15, 7, 12, 8, 9, 11, 7, 7, 12, 7, 6, 15, 13, 11, 9, 7, 15, 11, 8, 6, 6, 14, 12, 13, 5, 14, 13, 13, 7, 5, 15, 5, 8, 11, 14, 14, 6, 14, 6, 9, 12, 9, 12, 5, 15, 8, 8, 5, 12, 9, 12, 5, 14, 6, 8, 13, 6, 5, 15, 13, 11, 11]), - y = l.create([0, 1518500249, 1859775393, 2400959708, 2840853838]), - g = l.create([1352829926, 1548603684, 1836072691, 2053994217, 0]), - B = u.RIPEMD160 = f.extend({ - _doReset: function _doReset() { - this._hash = l.create([1732584193, 4023233417, 2562383102, 271733878, 3285377520]); - }, - _doProcessBlock: function _doProcessBlock(t, r) { - for (var c = 0; c < 16; c++) { - var h = r + c, - l = t[h]; - t[h] = 16711935 & (l << 8 | l >>> 24) | 4278255360 & (l << 24 | l >>> 8); - } - var f, - u, - B, - w, - k, - S, - m, - x, - b, - H, - z = this._hash.words, - A = y.words, - C = g.words, - D = d.words, - R = v.words, - E = p.words, - M = _.words; - S = f = z[0], m = u = z[1], x = B = z[2], b = w = z[3], H = k = z[4]; - for (var F, c = 0; c < 80; c += 1) F = f + t[r + D[c]] | 0, F += c < 16 ? e(u, B, w) + A[0] : c < 32 ? i(u, B, w) + A[1] : c < 48 ? n(u, B, w) + A[2] : c < 64 ? o(u, B, w) + A[3] : s(u, B, w) + A[4], F |= 0, F = a(F, E[c]), F = F + k | 0, f = k, k = w, w = a(B, 10), B = u, u = F, F = S + t[r + R[c]] | 0, F += c < 16 ? s(m, x, b) + C[0] : c < 32 ? o(m, x, b) + C[1] : c < 48 ? n(m, x, b) + C[2] : c < 64 ? i(m, x, b) + C[3] : e(m, x, b) + C[4], F |= 0, F = a(F, M[c]), F = F + H | 0, S = H, H = b, b = a(x, 10), x = m, m = F; - F = z[1] + B + b | 0, z[1] = z[2] + w + H | 0, z[2] = z[3] + k + S | 0, z[3] = z[4] + f + m | 0, z[4] = z[0] + u + x | 0, z[0] = F; - }, - _doFinalize: function _doFinalize() { - var t = this._data, - r = t.words, - e = 8 * this._nDataBytes, - i = 8 * t.sigBytes; - r[i >>> 5] |= 128 << 24 - i % 32, r[(i + 64 >>> 9 << 4) + 14] = 16711935 & (e << 8 | e >>> 24) | 4278255360 & (e << 24 | e >>> 8), t.sigBytes = 4 * (r.length + 1), this._process(); - for (var n = this._hash, o = n.words, s = 0; s < 5; s++) { - var a = o[s]; - o[s] = 16711935 & (a << 8 | a >>> 24) | 4278255360 & (a << 24 | a >>> 8); - } - return n; - }, - clone: function clone() { - var t = f.clone.call(this); - return t._hash = this._hash.clone(), t; - } - }); - c.RIPEMD160 = f._createHelper(B), c.HmacRIPEMD160 = f._createHmacHelper(B); - }(Math), function () { - var r = t, - e = r.lib, - i = e.Base, - n = r.enc, - o = n.Utf8, - s = r.algo; - s.HMAC = i.extend({ - init: function init(t, r) { - t = this._hasher = new t.init(), "string" == typeof r && (r = o.parse(r)); - var e = t.blockSize, - i = 4 * e; - r.sigBytes > i && (r = t.finalize(r)), r.clamp(); - for (var n = this._oKey = r.clone(), s = this._iKey = r.clone(), a = n.words, c = s.words, h = 0; h < e; h++) a[h] ^= 1549556828, c[h] ^= 909522486; - n.sigBytes = s.sigBytes = i, this.reset(); - }, - reset: function reset() { - var t = this._hasher; - t.reset(), t.update(this._iKey); - }, - update: function update(t) { - return this._hasher.update(t), this; - }, - finalize: function finalize(t) { - var r = this._hasher, - e = r.finalize(t); - r.reset(); - var i = r.finalize(this._oKey.clone().concat(e)); - return i; - } - }); - }(), function () { - var r = t, - e = r.lib, - i = e.Base, - n = e.WordArray, - o = r.algo, - s = o.SHA1, - a = o.HMAC, - c = o.PBKDF2 = i.extend({ - cfg: i.extend({ - keySize: 4, - hasher: s, - iterations: 1 - }), - init: function init(t) { - this.cfg = this.cfg.extend(t); - }, - compute: function compute(t, r) { - for (var e = this.cfg, i = a.create(e.hasher, t), o = n.create(), s = n.create([1]), c = o.words, h = s.words, l = e.keySize, f = e.iterations; c.length < l;) { - var u = i.update(r).finalize(s); - i.reset(); - for (var d = u.words, v = d.length, p = u, _ = 1; _ < f; _++) { - p = i.finalize(p), i.reset(); - for (var y = p.words, g = 0; g < v; g++) d[g] ^= y[g]; - } - o.concat(u), h[0]++; - } - return o.sigBytes = 4 * l, o; - } - }); - r.PBKDF2 = function (t, r, e) { - return c.create(e).compute(t, r); - }; - }(), function () { - var r = t, - e = r.lib, - i = e.Base, - n = e.WordArray, - o = r.algo, - s = o.MD5, - a = o.EvpKDF = i.extend({ - cfg: i.extend({ - keySize: 4, - hasher: s, - iterations: 1 - }), - init: function init(t) { - this.cfg = this.cfg.extend(t); - }, - compute: function compute(t, r) { - for (var e = this.cfg, i = e.hasher.create(), o = n.create(), s = o.words, a = e.keySize, c = e.iterations; s.length < a;) { - h && i.update(h); - var h = i.update(t).finalize(r); - i.reset(); - for (var l = 1; l < c; l++) h = i.finalize(h), i.reset(); - o.concat(h); - } - return o.sigBytes = 4 * a, o; - } - }); - r.EvpKDF = function (t, r, e) { - return a.create(e).compute(t, r); - }; - }(), function () { - var r = t, - e = r.lib, - i = e.WordArray, - n = r.algo, - o = n.SHA256, - s = n.SHA224 = o.extend({ - _doReset: function _doReset() { - this._hash = new i.init([3238371032, 914150663, 812702999, 4144912697, 4290775857, 1750603025, 1694076839, 3204075428]); - }, - _doFinalize: function _doFinalize() { - var t = o._doFinalize.call(this); - return t.sigBytes -= 4, t; - } - }); - r.SHA224 = o._createHelper(s), r.HmacSHA224 = o._createHmacHelper(s); - }(), function (r) { - var e = t, - i = e.lib, - n = i.Base, - o = i.WordArray, - s = e.x64 = {}; - s.Word = n.extend({ - init: function init(t, r) { - this.high = t, this.low = r; - } - }), s.WordArray = n.extend({ - init: function init(t, e) { - t = this.words = t || [], e != r ? this.sigBytes = e : this.sigBytes = 8 * t.length; - }, - toX32: function toX32() { - for (var t = this.words, r = t.length, e = [], i = 0; i < r; i++) { - var n = t[i]; - e.push(n.high), e.push(n.low); - } - return o.create(e, this.sigBytes); - }, - clone: function clone() { - for (var t = n.clone.call(this), r = t.words = this.words.slice(0), e = r.length, i = 0; i < e; i++) r[i] = r[i].clone(); - return t; - } - }); - }(), function (r) { - var e = t, - i = e.lib, - n = i.WordArray, - o = i.Hasher, - s = e.x64, - a = s.Word, - c = e.algo, - h = [], - l = [], - f = []; - !function () { - for (var t = 1, r = 0, e = 0; e < 24; e++) { - h[t + 5 * r] = (e + 1) * (e + 2) / 2 % 64; - var i = r % 5, - n = (2 * t + 3 * r) % 5; - t = i, r = n; - } - for (var t = 0; t < 5; t++) for (var r = 0; r < 5; r++) l[t + 5 * r] = r + (2 * t + 3 * r) % 5 * 5; - for (var o = 1, s = 0; s < 24; s++) { - for (var c = 0, u = 0, d = 0; d < 7; d++) { - if (1 & o) { - var v = (1 << d) - 1; - v < 32 ? u ^= 1 << v : c ^= 1 << v - 32; - } - 128 & o ? o = o << 1 ^ 113 : o <<= 1; - } - f[s] = a.create(c, u); - } - }(); - var u = []; - !function () { - for (var t = 0; t < 25; t++) u[t] = a.create(); - }(); - var d = c.SHA3 = o.extend({ - cfg: o.cfg.extend({ - outputLength: 512 - }), - _doReset: function _doReset() { - for (var t = this._state = [], r = 0; r < 25; r++) t[r] = new a.init(); - this.blockSize = (1600 - 2 * this.cfg.outputLength) / 32; - }, - _doProcessBlock: function _doProcessBlock(t, r) { - for (var e = this._state, i = this.blockSize / 2, n = 0; n < i; n++) { - var o = t[r + 2 * n], - s = t[r + 2 * n + 1]; - o = 16711935 & (o << 8 | o >>> 24) | 4278255360 & (o << 24 | o >>> 8), s = 16711935 & (s << 8 | s >>> 24) | 4278255360 & (s << 24 | s >>> 8); - var a = e[n]; - a.high ^= s, a.low ^= o; - } - for (var c = 0; c < 24; c++) { - for (var d = 0; d < 5; d++) { - for (var v = 0, p = 0, _ = 0; _ < 5; _++) { - var a = e[d + 5 * _]; - v ^= a.high, p ^= a.low; - } - var y = u[d]; - y.high = v, y.low = p; - } - for (var d = 0; d < 5; d++) for (var g = u[(d + 4) % 5], B = u[(d + 1) % 5], w = B.high, k = B.low, v = g.high ^ (w << 1 | k >>> 31), p = g.low ^ (k << 1 | w >>> 31), _ = 0; _ < 5; _++) { - var a = e[d + 5 * _]; - a.high ^= v, a.low ^= p; - } - for (var S = 1; S < 25; S++) { - var a = e[S], - m = a.high, - x = a.low, - b = h[S]; - if (b < 32) var v = m << b | x >>> 32 - b, - p = x << b | m >>> 32 - b;else var v = x << b - 32 | m >>> 64 - b, - p = m << b - 32 | x >>> 64 - b; - var H = u[l[S]]; - H.high = v, H.low = p; - } - var z = u[0], - A = e[0]; - z.high = A.high, z.low = A.low; - for (var d = 0; d < 5; d++) for (var _ = 0; _ < 5; _++) { - var S = d + 5 * _, - a = e[S], - C = u[S], - D = u[(d + 1) % 5 + 5 * _], - R = u[(d + 2) % 5 + 5 * _]; - a.high = C.high ^ ~D.high & R.high, a.low = C.low ^ ~D.low & R.low; - } - var a = e[0], - E = f[c]; - a.high ^= E.high, a.low ^= E.low; - } - }, - _doFinalize: function _doFinalize() { - var t = this._data, - e = t.words, - i = (8 * this._nDataBytes, 8 * t.sigBytes), - o = 32 * this.blockSize; - e[i >>> 5] |= 1 << 24 - i % 32, e[(r.ceil((i + 1) / o) * o >>> 5) - 1] |= 128, t.sigBytes = 4 * e.length, this._process(); - for (var s = this._state, a = this.cfg.outputLength / 8, c = a / 8, h = [], l = 0; l < c; l++) { - var f = s[l], - u = f.high, - d = f.low; - u = 16711935 & (u << 8 | u >>> 24) | 4278255360 & (u << 24 | u >>> 8), d = 16711935 & (d << 8 | d >>> 24) | 4278255360 & (d << 24 | d >>> 8), h.push(d), h.push(u); - } - return new n.init(h, a); - }, - clone: function clone() { - for (var t = o.clone.call(this), r = t._state = this._state.slice(0), e = 0; e < 25; e++) r[e] = r[e].clone(); - return t; - } - }); - e.SHA3 = o._createHelper(d), e.HmacSHA3 = o._createHmacHelper(d); - }(Math), function () { - function r() { - return s.create.apply(s, arguments); - } - var e = t, - i = e.lib, - n = i.Hasher, - o = e.x64, - s = o.Word, - a = o.WordArray, - c = e.algo, - h = [r(1116352408, 3609767458), r(1899447441, 602891725), r(3049323471, 3964484399), r(3921009573, 2173295548), r(961987163, 4081628472), r(1508970993, 3053834265), r(2453635748, 2937671579), r(2870763221, 3664609560), r(3624381080, 2734883394), r(310598401, 1164996542), r(607225278, 1323610764), r(1426881987, 3590304994), r(1925078388, 4068182383), r(2162078206, 991336113), r(2614888103, 633803317), r(3248222580, 3479774868), r(3835390401, 2666613458), r(4022224774, 944711139), r(264347078, 2341262773), r(604807628, 2007800933), r(770255983, 1495990901), r(1249150122, 1856431235), r(1555081692, 3175218132), r(1996064986, 2198950837), r(2554220882, 3999719339), r(2821834349, 766784016), r(2952996808, 2566594879), r(3210313671, 3203337956), r(3336571891, 1034457026), r(3584528711, 2466948901), r(113926993, 3758326383), r(338241895, 168717936), r(666307205, 1188179964), r(773529912, 1546045734), r(1294757372, 1522805485), r(1396182291, 2643833823), r(1695183700, 2343527390), r(1986661051, 1014477480), r(2177026350, 1206759142), r(2456956037, 344077627), r(2730485921, 1290863460), r(2820302411, 3158454273), r(3259730800, 3505952657), r(3345764771, 106217008), r(3516065817, 3606008344), r(3600352804, 1432725776), r(4094571909, 1467031594), r(275423344, 851169720), r(430227734, 3100823752), r(506948616, 1363258195), r(659060556, 3750685593), r(883997877, 3785050280), r(958139571, 3318307427), r(1322822218, 3812723403), r(1537002063, 2003034995), r(1747873779, 3602036899), r(1955562222, 1575990012), r(2024104815, 1125592928), r(2227730452, 2716904306), r(2361852424, 442776044), r(2428436474, 593698344), r(2756734187, 3733110249), r(3204031479, 2999351573), r(3329325298, 3815920427), r(3391569614, 3928383900), r(3515267271, 566280711), r(3940187606, 3454069534), r(4118630271, 4000239992), r(116418474, 1914138554), r(174292421, 2731055270), r(289380356, 3203993006), r(460393269, 320620315), r(685471733, 587496836), r(852142971, 1086792851), r(1017036298, 365543100), r(1126000580, 2618297676), r(1288033470, 3409855158), r(1501505948, 4234509866), r(1607167915, 987167468), r(1816402316, 1246189591)], - l = []; - !function () { - for (var t = 0; t < 80; t++) l[t] = r(); - }(); - var f = c.SHA512 = n.extend({ - _doReset: function _doReset() { - this._hash = new a.init([new s.init(1779033703, 4089235720), new s.init(3144134277, 2227873595), new s.init(1013904242, 4271175723), new s.init(2773480762, 1595750129), new s.init(1359893119, 2917565137), new s.init(2600822924, 725511199), new s.init(528734635, 4215389547), new s.init(1541459225, 327033209)]); - }, - _doProcessBlock: function _doProcessBlock(t, r) { - for (var e = this._hash.words, i = e[0], n = e[1], o = e[2], s = e[3], a = e[4], c = e[5], f = e[6], u = e[7], d = i.high, v = i.low, p = n.high, _ = n.low, y = o.high, g = o.low, B = s.high, w = s.low, k = a.high, S = a.low, m = c.high, x = c.low, b = f.high, H = f.low, z = u.high, A = u.low, C = d, D = v, R = p, E = _, M = y, F = g, P = B, W = w, O = k, U = S, I = m, K = x, X = b, L = H, j = z, N = A, T = 0; T < 80; T++) { - var Z = l[T]; - if (T < 16) var q = Z.high = 0 | t[r + 2 * T], - G = Z.low = 0 | t[r + 2 * T + 1];else { - var J = l[T - 15], - $ = J.high, - Q = J.low, - V = ($ >>> 1 | Q << 31) ^ ($ >>> 8 | Q << 24) ^ $ >>> 7, - Y = (Q >>> 1 | $ << 31) ^ (Q >>> 8 | $ << 24) ^ (Q >>> 7 | $ << 25), - tt = l[T - 2], - rt = tt.high, - et = tt.low, - it = (rt >>> 19 | et << 13) ^ (rt << 3 | et >>> 29) ^ rt >>> 6, - nt = (et >>> 19 | rt << 13) ^ (et << 3 | rt >>> 29) ^ (et >>> 6 | rt << 26), - ot = l[T - 7], - st = ot.high, - at = ot.low, - ct = l[T - 16], - ht = ct.high, - lt = ct.low, - G = Y + at, - q = V + st + (G >>> 0 < Y >>> 0 ? 1 : 0), - G = G + nt, - q = q + it + (G >>> 0 < nt >>> 0 ? 1 : 0), - G = G + lt, - q = q + ht + (G >>> 0 < lt >>> 0 ? 1 : 0); - Z.high = q, Z.low = G; - } - var ft = O & I ^ ~O & X, - ut = U & K ^ ~U & L, - dt = C & R ^ C & M ^ R & M, - vt = D & E ^ D & F ^ E & F, - pt = (C >>> 28 | D << 4) ^ (C << 30 | D >>> 2) ^ (C << 25 | D >>> 7), - _t = (D >>> 28 | C << 4) ^ (D << 30 | C >>> 2) ^ (D << 25 | C >>> 7), - yt = (O >>> 14 | U << 18) ^ (O >>> 18 | U << 14) ^ (O << 23 | U >>> 9), - gt = (U >>> 14 | O << 18) ^ (U >>> 18 | O << 14) ^ (U << 23 | O >>> 9), - Bt = h[T], - wt = Bt.high, - kt = Bt.low, - St = N + gt, - mt = j + yt + (St >>> 0 < N >>> 0 ? 1 : 0), - St = St + ut, - mt = mt + ft + (St >>> 0 < ut >>> 0 ? 1 : 0), - St = St + kt, - mt = mt + wt + (St >>> 0 < kt >>> 0 ? 1 : 0), - St = St + G, - mt = mt + q + (St >>> 0 < G >>> 0 ? 1 : 0), - xt = _t + vt, - bt = pt + dt + (xt >>> 0 < _t >>> 0 ? 1 : 0); - j = X, N = L, X = I, L = K, I = O, K = U, U = W + St | 0, O = P + mt + (U >>> 0 < W >>> 0 ? 1 : 0) | 0, P = M, W = F, M = R, F = E, R = C, E = D, D = St + xt | 0, C = mt + bt + (D >>> 0 < St >>> 0 ? 1 : 0) | 0; - } - v = i.low = v + D, i.high = d + C + (v >>> 0 < D >>> 0 ? 1 : 0), _ = n.low = _ + E, n.high = p + R + (_ >>> 0 < E >>> 0 ? 1 : 0), g = o.low = g + F, o.high = y + M + (g >>> 0 < F >>> 0 ? 1 : 0), w = s.low = w + W, s.high = B + P + (w >>> 0 < W >>> 0 ? 1 : 0), S = a.low = S + U, a.high = k + O + (S >>> 0 < U >>> 0 ? 1 : 0), x = c.low = x + K, c.high = m + I + (x >>> 0 < K >>> 0 ? 1 : 0), H = f.low = H + L, f.high = b + X + (H >>> 0 < L >>> 0 ? 1 : 0), A = u.low = A + N, u.high = z + j + (A >>> 0 < N >>> 0 ? 1 : 0); - }, - _doFinalize: function _doFinalize() { - var t = this._data, - r = t.words, - e = 8 * this._nDataBytes, - i = 8 * t.sigBytes; - r[i >>> 5] |= 128 << 24 - i % 32, r[(i + 128 >>> 10 << 5) + 30] = Math.floor(e / 4294967296), r[(i + 128 >>> 10 << 5) + 31] = e, t.sigBytes = 4 * r.length, this._process(); - var n = this._hash.toX32(); - return n; - }, - clone: function clone() { - var t = n.clone.call(this); - return t._hash = this._hash.clone(), t; - }, - blockSize: 32 - }); - e.SHA512 = n._createHelper(f), e.HmacSHA512 = n._createHmacHelper(f); - }(), function () { - var r = t, - e = r.x64, - i = e.Word, - n = e.WordArray, - o = r.algo, - s = o.SHA512, - a = o.SHA384 = s.extend({ - _doReset: function _doReset() { - this._hash = new n.init([new i.init(3418070365, 3238371032), new i.init(1654270250, 914150663), new i.init(2438529370, 812702999), new i.init(355462360, 4144912697), new i.init(1731405415, 4290775857), new i.init(2394180231, 1750603025), new i.init(3675008525, 1694076839), new i.init(1203062813, 3204075428)]); - }, - _doFinalize: function _doFinalize() { - var t = s._doFinalize.call(this); - return t.sigBytes -= 16, t; - } - }); - r.SHA384 = s._createHelper(a), r.HmacSHA384 = s._createHmacHelper(a); - }(), t.lib.Cipher || function (r) { - var e = t, - i = e.lib, - n = i.Base, - o = i.WordArray, - s = i.BufferedBlockAlgorithm, - a = e.enc, - c = (a.Utf8, a.Base64), - h = e.algo, - l = h.EvpKDF, - f = i.Cipher = s.extend({ - cfg: n.extend(), - createEncryptor: function createEncryptor(t, r) { - return this.create(this._ENC_XFORM_MODE, t, r); - }, - createDecryptor: function createDecryptor(t, r) { - return this.create(this._DEC_XFORM_MODE, t, r); - }, - init: function init(t, r, e) { - this.cfg = this.cfg.extend(e), this._xformMode = t, this._key = r, this.reset(); - }, - reset: function reset() { - s.reset.call(this), this._doReset(); - }, - process: function process(t) { - return this._append(t), this._process(); - }, - finalize: function finalize(t) { - t && this._append(t); - var r = this._doFinalize(); - return r; - }, - keySize: 4, - ivSize: 4, - _ENC_XFORM_MODE: 1, - _DEC_XFORM_MODE: 2, - _createHelper: function () { - function t(t) { - return "string" == typeof t ? m : w; - } - return function (r) { - return { - encrypt: function encrypt(e, i, n) { - return t(i).encrypt(r, e, i, n); - }, - decrypt: function decrypt(e, i, n) { - return t(i).decrypt(r, e, i, n); - } - }; - }; - }() - }), - u = (i.StreamCipher = f.extend({ - _doFinalize: function _doFinalize() { - var t = this._process(!0); - return t; - }, - blockSize: 1 - }), e.mode = {}), - d = i.BlockCipherMode = n.extend({ - createEncryptor: function createEncryptor(t, r) { - return this.Encryptor.create(t, r); - }, - createDecryptor: function createDecryptor(t, r) { - return this.Decryptor.create(t, r); - }, - init: function init(t, r) { - this._cipher = t, this._iv = r; - } - }), - v = u.CBC = function () { - function t(t, e, i) { - var n = this._iv; - if (n) { - var o = n; - this._iv = r; - } else var o = this._prevBlock; - for (var s = 0; s < i; s++) t[e + s] ^= o[s]; - } - var e = d.extend(); - return e.Encryptor = e.extend({ - processBlock: function processBlock(r, e) { - var i = this._cipher, - n = i.blockSize; - t.call(this, r, e, n), i.encryptBlock(r, e), this._prevBlock = r.slice(e, e + n); - } - }), e.Decryptor = e.extend({ - processBlock: function processBlock(r, e) { - var i = this._cipher, - n = i.blockSize, - o = r.slice(e, e + n); - i.decryptBlock(r, e), t.call(this, r, e, n), this._prevBlock = o; - } - }), e; - }(), - p = e.pad = {}, - _ = p.Pkcs7 = { - pad: function pad(t, r) { - for (var e = 4 * r, i = e - t.sigBytes % e, n = i << 24 | i << 16 | i << 8 | i, s = [], a = 0; a < i; a += 4) s.push(n); - var c = o.create(s, i); - t.concat(c); - }, - unpad: function unpad(t) { - var r = 255 & t.words[t.sigBytes - 1 >>> 2]; - t.sigBytes -= r; - } - }, - y = (i.BlockCipher = f.extend({ - cfg: f.cfg.extend({ - mode: v, - padding: _ - }), - reset: function reset() { - f.reset.call(this); - var t = this.cfg, - r = t.iv, - e = t.mode; - if (this._xformMode == this._ENC_XFORM_MODE) var i = e.createEncryptor;else { - var i = e.createDecryptor; - this._minBufferSize = 1; - } - this._mode && this._mode.__creator == i ? this._mode.init(this, r && r.words) : (this._mode = i.call(e, this, r && r.words), this._mode.__creator = i); - }, - _doProcessBlock: function _doProcessBlock(t, r) { - this._mode.processBlock(t, r); - }, - _doFinalize: function _doFinalize() { - var t = this.cfg.padding; - if (this._xformMode == this._ENC_XFORM_MODE) { - t.pad(this._data, this.blockSize); - var r = this._process(!0); - } else { - var r = this._process(!0); - t.unpad(r); - } - return r; - }, - blockSize: 4 - }), i.CipherParams = n.extend({ - init: function init(t) { - this.mixIn(t); - }, - toString: function toString(t) { - return (t || this.formatter).stringify(this); - } - })), - g = e.format = {}, - B = g.OpenSSL = { - stringify: function stringify(t) { - var r = t.ciphertext, - e = t.salt; - if (e) var i = o.create([1398893684, 1701076831]).concat(e).concat(r);else var i = r; - return i.toString(c); - }, - parse: function parse(t) { - var r = c.parse(t), - e = r.words; - if (1398893684 == e[0] && 1701076831 == e[1]) { - var i = o.create(e.slice(2, 4)); - e.splice(0, 4), r.sigBytes -= 16; - } - return y.create({ - ciphertext: r, - salt: i - }); - } - }, - w = i.SerializableCipher = n.extend({ - cfg: n.extend({ - format: B - }), - encrypt: function encrypt(t, r, e, i) { - i = this.cfg.extend(i); - var n = t.createEncryptor(e, i), - o = n.finalize(r), - s = n.cfg; - return y.create({ - ciphertext: o, - key: e, - iv: s.iv, - algorithm: t, - mode: s.mode, - padding: s.padding, - blockSize: t.blockSize, - formatter: i.format - }); - }, - decrypt: function decrypt(t, r, e, i) { - i = this.cfg.extend(i), r = this._parse(r, i.format); - var n = t.createDecryptor(e, i).finalize(r.ciphertext); - return n; - }, - _parse: function _parse(t, r) { - return "string" == typeof t ? r.parse(t, this) : t; - } - }), - k = e.kdf = {}, - S = k.OpenSSL = { - execute: function execute(t, r, e, i) { - i || (i = o.random(8)); - var n = l.create({ - keySize: r + e - }).compute(t, i), - s = o.create(n.words.slice(r), 4 * e); - return n.sigBytes = 4 * r, y.create({ - key: n, - iv: s, - salt: i - }); - } - }, - m = i.PasswordBasedCipher = w.extend({ - cfg: w.cfg.extend({ - kdf: S - }), - encrypt: function encrypt(t, r, e, i) { - i = this.cfg.extend(i); - var n = i.kdf.execute(e, t.keySize, t.ivSize); - i.iv = n.iv; - var o = w.encrypt.call(this, t, r, n.key, i); - return o.mixIn(n), o; - }, - decrypt: function decrypt(t, r, e, i) { - i = this.cfg.extend(i), r = this._parse(r, i.format); - var n = i.kdf.execute(e, t.keySize, t.ivSize, r.salt); - i.iv = n.iv; - var o = w.decrypt.call(this, t, r, n.key, i); - return o; - } - }); - }(), t.mode.CFB = function () { - function r(t, r, e, i) { - var n = this._iv; - if (n) { - var o = n.slice(0); - this._iv = void 0; - } else var o = this._prevBlock; - i.encryptBlock(o, 0); - for (var s = 0; s < e; s++) t[r + s] ^= o[s]; - } - var e = t.lib.BlockCipherMode.extend(); - return e.Encryptor = e.extend({ - processBlock: function processBlock(t, e) { - var i = this._cipher, - n = i.blockSize; - r.call(this, t, e, n, i), this._prevBlock = t.slice(e, e + n); - } - }), e.Decryptor = e.extend({ - processBlock: function processBlock(t, e) { - var i = this._cipher, - n = i.blockSize, - o = t.slice(e, e + n); - r.call(this, t, e, n, i), this._prevBlock = o; - } - }), e; - }(), t.mode.ECB = function () { - var r = t.lib.BlockCipherMode.extend(); - return r.Encryptor = r.extend({ - processBlock: function processBlock(t, r) { - this._cipher.encryptBlock(t, r); - } - }), r.Decryptor = r.extend({ - processBlock: function processBlock(t, r) { - this._cipher.decryptBlock(t, r); - } - }), r; - }(), t.pad.AnsiX923 = { - pad: function pad(t, r) { - var e = t.sigBytes, - i = 4 * r, - n = i - e % i, - o = e + n - 1; - t.clamp(), t.words[o >>> 2] |= n << 24 - o % 4 * 8, t.sigBytes += n; - }, - unpad: function unpad(t) { - var r = 255 & t.words[t.sigBytes - 1 >>> 2]; - t.sigBytes -= r; - } - }, t.pad.Iso10126 = { - pad: function pad(r, e) { - var i = 4 * e, - n = i - r.sigBytes % i; - r.concat(t.lib.WordArray.random(n - 1)).concat(t.lib.WordArray.create([n << 24], 1)); - }, - unpad: function unpad(t) { - var r = 255 & t.words[t.sigBytes - 1 >>> 2]; - t.sigBytes -= r; - } - }, t.pad.Iso97971 = { - pad: function pad(r, e) { - r.concat(t.lib.WordArray.create([2147483648], 1)), t.pad.ZeroPadding.pad(r, e); - }, - unpad: function unpad(r) { - t.pad.ZeroPadding.unpad(r), r.sigBytes--; - } - }, t.mode.OFB = function () { - var r = t.lib.BlockCipherMode.extend(), - e = r.Encryptor = r.extend({ - processBlock: function processBlock(t, r) { - var e = this._cipher, - i = e.blockSize, - n = this._iv, - o = this._keystream; - n && (o = this._keystream = n.slice(0), this._iv = void 0), e.encryptBlock(o, 0); - for (var s = 0; s < i; s++) t[r + s] ^= o[s]; - } - }); - return r.Decryptor = e, r; - }(), t.pad.NoPadding = { - pad: function pad() {}, - unpad: function unpad() {} - }, function (r) { - var e = t, - i = e.lib, - n = i.CipherParams, - o = e.enc, - s = o.Hex, - a = e.format; - a.Hex = { - stringify: function stringify(t) { - return t.ciphertext.toString(s); - }, - parse: function parse(t) { - var r = s.parse(t); - return n.create({ - ciphertext: r - }); - } - }; - }(), function () { - var r = t, - e = r.lib, - i = e.BlockCipher, - n = r.algo, - o = [], - s = [], - a = [], - c = [], - h = [], - l = [], - f = [], - u = [], - d = [], - v = []; - !function () { - for (var t = [], r = 0; r < 256; r++) r < 128 ? t[r] = r << 1 : t[r] = r << 1 ^ 283; - for (var e = 0, i = 0, r = 0; r < 256; r++) { - var n = i ^ i << 1 ^ i << 2 ^ i << 3 ^ i << 4; - n = n >>> 8 ^ 255 & n ^ 99, o[e] = n, s[n] = e; - var p = t[e], - _ = t[p], - y = t[_], - g = 257 * t[n] ^ 16843008 * n; - a[e] = g << 24 | g >>> 8, c[e] = g << 16 | g >>> 16, h[e] = g << 8 | g >>> 24, l[e] = g; - var g = 16843009 * y ^ 65537 * _ ^ 257 * p ^ 16843008 * e; - f[n] = g << 24 | g >>> 8, u[n] = g << 16 | g >>> 16, d[n] = g << 8 | g >>> 24, v[n] = g, e ? (e = p ^ t[t[t[y ^ p]]], i ^= t[t[i]]) : e = i = 1; - } - }(); - var p = [0, 1, 2, 4, 8, 16, 32, 64, 128, 27, 54], - _ = n.AES = i.extend({ - _doReset: function _doReset() { - if (!this._nRounds || this._keyPriorReset !== this._key) { - for (var t = this._keyPriorReset = this._key, r = t.words, e = t.sigBytes / 4, i = this._nRounds = e + 6, n = 4 * (i + 1), s = this._keySchedule = [], a = 0; a < n; a++) if (a < e) s[a] = r[a];else { - var c = s[a - 1]; - a % e ? e > 6 && a % e == 4 && (c = o[c >>> 24] << 24 | o[c >>> 16 & 255] << 16 | o[c >>> 8 & 255] << 8 | o[255 & c]) : (c = c << 8 | c >>> 24, c = o[c >>> 24] << 24 | o[c >>> 16 & 255] << 16 | o[c >>> 8 & 255] << 8 | o[255 & c], c ^= p[a / e | 0] << 24), s[a] = s[a - e] ^ c; - } - for (var h = this._invKeySchedule = [], l = 0; l < n; l++) { - var a = n - l; - if (l % 4) var c = s[a];else var c = s[a - 4]; - l < 4 || a <= 4 ? h[l] = c : h[l] = f[o[c >>> 24]] ^ u[o[c >>> 16 & 255]] ^ d[o[c >>> 8 & 255]] ^ v[o[255 & c]]; - } - } - }, - encryptBlock: function encryptBlock(t, r) { - this._doCryptBlock(t, r, this._keySchedule, a, c, h, l, o); - }, - decryptBlock: function decryptBlock(t, r) { - var e = t[r + 1]; - t[r + 1] = t[r + 3], t[r + 3] = e, this._doCryptBlock(t, r, this._invKeySchedule, f, u, d, v, s); - var e = t[r + 1]; - t[r + 1] = t[r + 3], t[r + 3] = e; - }, - _doCryptBlock: function _doCryptBlock(t, r, e, i, n, o, s, a) { - for (var c = this._nRounds, h = t[r] ^ e[0], l = t[r + 1] ^ e[1], f = t[r + 2] ^ e[2], u = t[r + 3] ^ e[3], d = 4, v = 1; v < c; v++) { - var p = i[h >>> 24] ^ n[l >>> 16 & 255] ^ o[f >>> 8 & 255] ^ s[255 & u] ^ e[d++], - _ = i[l >>> 24] ^ n[f >>> 16 & 255] ^ o[u >>> 8 & 255] ^ s[255 & h] ^ e[d++], - y = i[f >>> 24] ^ n[u >>> 16 & 255] ^ o[h >>> 8 & 255] ^ s[255 & l] ^ e[d++], - g = i[u >>> 24] ^ n[h >>> 16 & 255] ^ o[l >>> 8 & 255] ^ s[255 & f] ^ e[d++]; - h = p, l = _, f = y, u = g; - } - var p = (a[h >>> 24] << 24 | a[l >>> 16 & 255] << 16 | a[f >>> 8 & 255] << 8 | a[255 & u]) ^ e[d++], - _ = (a[l >>> 24] << 24 | a[f >>> 16 & 255] << 16 | a[u >>> 8 & 255] << 8 | a[255 & h]) ^ e[d++], - y = (a[f >>> 24] << 24 | a[u >>> 16 & 255] << 16 | a[h >>> 8 & 255] << 8 | a[255 & l]) ^ e[d++], - g = (a[u >>> 24] << 24 | a[h >>> 16 & 255] << 16 | a[l >>> 8 & 255] << 8 | a[255 & f]) ^ e[d++]; - t[r] = p, t[r + 1] = _, t[r + 2] = y, t[r + 3] = g; - }, - keySize: 8 - }); - r.AES = i._createHelper(_); - }(), function () { - function r(t, r) { - var e = (this._lBlock >>> t ^ this._rBlock) & r; - this._rBlock ^= e, this._lBlock ^= e << t; - } - function e(t, r) { - var e = (this._rBlock >>> t ^ this._lBlock) & r; - this._lBlock ^= e, this._rBlock ^= e << t; - } - var i = t, - n = i.lib, - o = n.WordArray, - s = n.BlockCipher, - a = i.algo, - c = [57, 49, 41, 33, 25, 17, 9, 1, 58, 50, 42, 34, 26, 18, 10, 2, 59, 51, 43, 35, 27, 19, 11, 3, 60, 52, 44, 36, 63, 55, 47, 39, 31, 23, 15, 7, 62, 54, 46, 38, 30, 22, 14, 6, 61, 53, 45, 37, 29, 21, 13, 5, 28, 20, 12, 4], - h = [14, 17, 11, 24, 1, 5, 3, 28, 15, 6, 21, 10, 23, 19, 12, 4, 26, 8, 16, 7, 27, 20, 13, 2, 41, 52, 31, 37, 47, 55, 30, 40, 51, 45, 33, 48, 44, 49, 39, 56, 34, 53, 46, 42, 50, 36, 29, 32], - l = [1, 2, 4, 6, 8, 10, 12, 14, 15, 17, 19, 21, 23, 25, 27, 28], - f = [{ - 0: 8421888, - 268435456: 32768, - 536870912: 8421378, - 805306368: 2, - 1073741824: 512, - 1342177280: 8421890, - 1610612736: 8389122, - 1879048192: 8388608, - 2147483648: 514, - 2415919104: 8389120, - 2684354560: 33280, - 2952790016: 8421376, - 3221225472: 32770, - 3489660928: 8388610, - 3758096384: 0, - 4026531840: 33282, - 134217728: 0, - 402653184: 8421890, - 671088640: 33282, - 939524096: 32768, - 1207959552: 8421888, - 1476395008: 512, - 1744830464: 8421378, - 2013265920: 2, - 2281701376: 8389120, - 2550136832: 33280, - 2818572288: 8421376, - 3087007744: 8389122, - 3355443200: 8388610, - 3623878656: 32770, - 3892314112: 514, - 4160749568: 8388608, - 1: 32768, - 268435457: 2, - 536870913: 8421888, - 805306369: 8388608, - 1073741825: 8421378, - 1342177281: 33280, - 1610612737: 512, - 1879048193: 8389122, - 2147483649: 8421890, - 2415919105: 8421376, - 2684354561: 8388610, - 2952790017: 33282, - 3221225473: 514, - 3489660929: 8389120, - 3758096385: 32770, - 4026531841: 0, - 134217729: 8421890, - 402653185: 8421376, - 671088641: 8388608, - 939524097: 512, - 1207959553: 32768, - 1476395009: 8388610, - 1744830465: 2, - 2013265921: 33282, - 2281701377: 32770, - 2550136833: 8389122, - 2818572289: 514, - 3087007745: 8421888, - 3355443201: 8389120, - 3623878657: 0, - 3892314113: 33280, - 4160749569: 8421378 - }, { - 0: 1074282512, - 16777216: 16384, - 33554432: 524288, - 50331648: 1074266128, - 67108864: 1073741840, - 83886080: 1074282496, - 100663296: 1073758208, - 117440512: 16, - 134217728: 540672, - 150994944: 1073758224, - 167772160: 1073741824, - 184549376: 540688, - 201326592: 524304, - 218103808: 0, - 234881024: 16400, - 251658240: 1074266112, - 8388608: 1073758208, - 25165824: 540688, - 41943040: 16, - 58720256: 1073758224, - 75497472: 1074282512, - 92274688: 1073741824, - 109051904: 524288, - 125829120: 1074266128, - 142606336: 524304, - 159383552: 0, - 176160768: 16384, - 192937984: 1074266112, - 209715200: 1073741840, - 226492416: 540672, - 243269632: 1074282496, - 260046848: 16400, - 268435456: 0, - 285212672: 1074266128, - 301989888: 1073758224, - 318767104: 1074282496, - 335544320: 1074266112, - 352321536: 16, - 369098752: 540688, - 385875968: 16384, - 402653184: 16400, - 419430400: 524288, - 436207616: 524304, - 452984832: 1073741840, - 469762048: 540672, - 486539264: 1073758208, - 503316480: 1073741824, - 520093696: 1074282512, - 276824064: 540688, - 293601280: 524288, - 310378496: 1074266112, - 327155712: 16384, - 343932928: 1073758208, - 360710144: 1074282512, - 377487360: 16, - 394264576: 1073741824, - 411041792: 1074282496, - 427819008: 1073741840, - 444596224: 1073758224, - 461373440: 524304, - 478150656: 0, - 494927872: 16400, - 511705088: 1074266128, - 528482304: 540672 - }, { - 0: 260, - 1048576: 0, - 2097152: 67109120, - 3145728: 65796, - 4194304: 65540, - 5242880: 67108868, - 6291456: 67174660, - 7340032: 67174400, - 8388608: 67108864, - 9437184: 67174656, - 10485760: 65792, - 11534336: 67174404, - 12582912: 67109124, - 13631488: 65536, - 14680064: 4, - 15728640: 256, - 524288: 67174656, - 1572864: 67174404, - 2621440: 0, - 3670016: 67109120, - 4718592: 67108868, - 5767168: 65536, - 6815744: 65540, - 7864320: 260, - 8912896: 4, - 9961472: 256, - 11010048: 67174400, - 12058624: 65796, - 13107200: 65792, - 14155776: 67109124, - 15204352: 67174660, - 16252928: 67108864, - 16777216: 67174656, - 17825792: 65540, - 18874368: 65536, - 19922944: 67109120, - 20971520: 256, - 22020096: 67174660, - 23068672: 67108868, - 24117248: 0, - 25165824: 67109124, - 26214400: 67108864, - 27262976: 4, - 28311552: 65792, - 29360128: 67174400, - 30408704: 260, - 31457280: 65796, - 32505856: 67174404, - 17301504: 67108864, - 18350080: 260, - 19398656: 67174656, - 20447232: 0, - 21495808: 65540, - 22544384: 67109120, - 23592960: 256, - 24641536: 67174404, - 25690112: 65536, - 26738688: 67174660, - 27787264: 65796, - 28835840: 67108868, - 29884416: 67109124, - 30932992: 67174400, - 31981568: 4, - 33030144: 65792 - }, { - 0: 2151682048, - 65536: 2147487808, - 131072: 4198464, - 196608: 2151677952, - 262144: 0, - 327680: 4198400, - 393216: 2147483712, - 458752: 4194368, - 524288: 2147483648, - 589824: 4194304, - 655360: 64, - 720896: 2147487744, - 786432: 2151678016, - 851968: 4160, - 917504: 4096, - 983040: 2151682112, - 32768: 2147487808, - 98304: 64, - 163840: 2151678016, - 229376: 2147487744, - 294912: 4198400, - 360448: 2151682112, - 425984: 0, - 491520: 2151677952, - 557056: 4096, - 622592: 2151682048, - 688128: 4194304, - 753664: 4160, - 819200: 2147483648, - 884736: 4194368, - 950272: 4198464, - 1015808: 2147483712, - 1048576: 4194368, - 1114112: 4198400, - 1179648: 2147483712, - 1245184: 0, - 1310720: 4160, - 1376256: 2151678016, - 1441792: 2151682048, - 1507328: 2147487808, - 1572864: 2151682112, - 1638400: 2147483648, - 1703936: 2151677952, - 1769472: 4198464, - 1835008: 2147487744, - 1900544: 4194304, - 1966080: 64, - 2031616: 4096, - 1081344: 2151677952, - 1146880: 2151682112, - 1212416: 0, - 1277952: 4198400, - 1343488: 4194368, - 1409024: 2147483648, - 1474560: 2147487808, - 1540096: 64, - 1605632: 2147483712, - 1671168: 4096, - 1736704: 2147487744, - 1802240: 2151678016, - 1867776: 4160, - 1933312: 2151682048, - 1998848: 4194304, - 2064384: 4198464 - }, { - 0: 128, - 4096: 17039360, - 8192: 262144, - 12288: 536870912, - 16384: 537133184, - 20480: 16777344, - 24576: 553648256, - 28672: 262272, - 32768: 16777216, - 36864: 537133056, - 40960: 536871040, - 45056: 553910400, - 49152: 553910272, - 53248: 0, - 57344: 17039488, - 61440: 553648128, - 2048: 17039488, - 6144: 553648256, - 10240: 128, - 14336: 17039360, - 18432: 262144, - 22528: 537133184, - 26624: 553910272, - 30720: 536870912, - 34816: 537133056, - 38912: 0, - 43008: 553910400, - 47104: 16777344, - 51200: 536871040, - 55296: 553648128, - 59392: 16777216, - 63488: 262272, - 65536: 262144, - 69632: 128, - 73728: 536870912, - 77824: 553648256, - 81920: 16777344, - 86016: 553910272, - 90112: 537133184, - 94208: 16777216, - 98304: 553910400, - 102400: 553648128, - 106496: 17039360, - 110592: 537133056, - 114688: 262272, - 118784: 536871040, - 122880: 0, - 126976: 17039488, - 67584: 553648256, - 71680: 16777216, - 75776: 17039360, - 79872: 537133184, - 83968: 536870912, - 88064: 17039488, - 92160: 128, - 96256: 553910272, - 100352: 262272, - 104448: 553910400, - 108544: 0, - 112640: 553648128, - 116736: 16777344, - 120832: 262144, - 124928: 537133056, - 129024: 536871040 - }, { - 0: 268435464, - 256: 8192, - 512: 270532608, - 768: 270540808, - 1024: 268443648, - 1280: 2097152, - 1536: 2097160, - 1792: 268435456, - 2048: 0, - 2304: 268443656, - 2560: 2105344, - 2816: 8, - 3072: 270532616, - 3328: 2105352, - 3584: 8200, - 3840: 270540800, - 128: 270532608, - 384: 270540808, - 640: 8, - 896: 2097152, - 1152: 2105352, - 1408: 268435464, - 1664: 268443648, - 1920: 8200, - 2176: 2097160, - 2432: 8192, - 2688: 268443656, - 2944: 270532616, - 3200: 0, - 3456: 270540800, - 3712: 2105344, - 3968: 268435456, - 4096: 268443648, - 4352: 270532616, - 4608: 270540808, - 4864: 8200, - 5120: 2097152, - 5376: 268435456, - 5632: 268435464, - 5888: 2105344, - 6144: 2105352, - 6400: 0, - 6656: 8, - 6912: 270532608, - 7168: 8192, - 7424: 268443656, - 7680: 270540800, - 7936: 2097160, - 4224: 8, - 4480: 2105344, - 4736: 2097152, - 4992: 268435464, - 5248: 268443648, - 5504: 8200, - 5760: 270540808, - 6016: 270532608, - 6272: 270540800, - 6528: 270532616, - 6784: 8192, - 7040: 2105352, - 7296: 2097160, - 7552: 0, - 7808: 268435456, - 8064: 268443656 - }, { - 0: 1048576, - 16: 33555457, - 32: 1024, - 48: 1049601, - 64: 34604033, - 80: 0, - 96: 1, - 112: 34603009, - 128: 33555456, - 144: 1048577, - 160: 33554433, - 176: 34604032, - 192: 34603008, - 208: 1025, - 224: 1049600, - 240: 33554432, - 8: 34603009, - 24: 0, - 40: 33555457, - 56: 34604032, - 72: 1048576, - 88: 33554433, - 104: 33554432, - 120: 1025, - 136: 1049601, - 152: 33555456, - 168: 34603008, - 184: 1048577, - 200: 1024, - 216: 34604033, - 232: 1, - 248: 1049600, - 256: 33554432, - 272: 1048576, - 288: 33555457, - 304: 34603009, - 320: 1048577, - 336: 33555456, - 352: 34604032, - 368: 1049601, - 384: 1025, - 400: 34604033, - 416: 1049600, - 432: 1, - 448: 0, - 464: 34603008, - 480: 33554433, - 496: 1024, - 264: 1049600, - 280: 33555457, - 296: 34603009, - 312: 1, - 328: 33554432, - 344: 1048576, - 360: 1025, - 376: 34604032, - 392: 33554433, - 408: 34603008, - 424: 0, - 440: 34604033, - 456: 1049601, - 472: 1024, - 488: 33555456, - 504: 1048577 - }, { - 0: 134219808, - 1: 131072, - 2: 134217728, - 3: 32, - 4: 131104, - 5: 134350880, - 6: 134350848, - 7: 2048, - 8: 134348800, - 9: 134219776, - 10: 133120, - 11: 134348832, - 12: 2080, - 13: 0, - 14: 134217760, - 15: 133152, - 2147483648: 2048, - 2147483649: 134350880, - 2147483650: 134219808, - 2147483651: 134217728, - 2147483652: 134348800, - 2147483653: 133120, - 2147483654: 133152, - 2147483655: 32, - 2147483656: 134217760, - 2147483657: 2080, - 2147483658: 131104, - 2147483659: 134350848, - 2147483660: 0, - 2147483661: 134348832, - 2147483662: 134219776, - 2147483663: 131072, - 16: 133152, - 17: 134350848, - 18: 32, - 19: 2048, - 20: 134219776, - 21: 134217760, - 22: 134348832, - 23: 131072, - 24: 0, - 25: 131104, - 26: 134348800, - 27: 134219808, - 28: 134350880, - 29: 133120, - 30: 2080, - 31: 134217728, - 2147483664: 131072, - 2147483665: 2048, - 2147483666: 134348832, - 2147483667: 133152, - 2147483668: 32, - 2147483669: 134348800, - 2147483670: 134217728, - 2147483671: 134219808, - 2147483672: 134350880, - 2147483673: 134217760, - 2147483674: 134219776, - 2147483675: 0, - 2147483676: 133120, - 2147483677: 2080, - 2147483678: 131104, - 2147483679: 134350848 - }], - u = [4160749569, 528482304, 33030144, 2064384, 129024, 8064, 504, 2147483679], - d = a.DES = s.extend({ - _doReset: function _doReset() { - for (var t = this._key, r = t.words, e = [], i = 0; i < 56; i++) { - var n = c[i] - 1; - e[i] = r[n >>> 5] >>> 31 - n % 32 & 1; - } - for (var o = this._subKeys = [], s = 0; s < 16; s++) { - for (var a = o[s] = [], f = l[s], i = 0; i < 24; i++) a[i / 6 | 0] |= e[(h[i] - 1 + f) % 28] << 31 - i % 6, a[4 + (i / 6 | 0)] |= e[28 + (h[i + 24] - 1 + f) % 28] << 31 - i % 6; - a[0] = a[0] << 1 | a[0] >>> 31; - for (var i = 1; i < 7; i++) a[i] = a[i] >>> 4 * (i - 1) + 3; - a[7] = a[7] << 5 | a[7] >>> 27; - } - for (var u = this._invSubKeys = [], i = 0; i < 16; i++) u[i] = o[15 - i]; - }, - encryptBlock: function encryptBlock(t, r) { - this._doCryptBlock(t, r, this._subKeys); - }, - decryptBlock: function decryptBlock(t, r) { - this._doCryptBlock(t, r, this._invSubKeys); - }, - _doCryptBlock: function _doCryptBlock(t, i, n) { - this._lBlock = t[i], this._rBlock = t[i + 1], r.call(this, 4, 252645135), r.call(this, 16, 65535), e.call(this, 2, 858993459), e.call(this, 8, 16711935), r.call(this, 1, 1431655765); - for (var o = 0; o < 16; o++) { - for (var s = n[o], a = this._lBlock, c = this._rBlock, h = 0, l = 0; l < 8; l++) h |= f[l][((c ^ s[l]) & u[l]) >>> 0]; - this._lBlock = c, this._rBlock = a ^ h; - } - var d = this._lBlock; - this._lBlock = this._rBlock, this._rBlock = d, r.call(this, 1, 1431655765), e.call(this, 8, 16711935), e.call(this, 2, 858993459), r.call(this, 16, 65535), r.call(this, 4, 252645135), t[i] = this._lBlock, t[i + 1] = this._rBlock; - }, - keySize: 2, - ivSize: 2, - blockSize: 2 - }); - i.DES = s._createHelper(d); - var v = a.TripleDES = s.extend({ - _doReset: function _doReset() { - var t = this._key, - r = t.words; - this._des1 = d.createEncryptor(o.create(r.slice(0, 2))), this._des2 = d.createEncryptor(o.create(r.slice(2, 4))), this._des3 = d.createEncryptor(o.create(r.slice(4, 6))); - }, - encryptBlock: function encryptBlock(t, r) { - this._des1.encryptBlock(t, r), this._des2.decryptBlock(t, r), this._des3.encryptBlock(t, r); - }, - decryptBlock: function decryptBlock(t, r) { - this._des3.decryptBlock(t, r), this._des2.encryptBlock(t, r), this._des1.decryptBlock(t, r); - }, - keySize: 6, - ivSize: 2, - blockSize: 2 - }); - i.TripleDES = s._createHelper(v); - }(), function () { - function r() { - for (var t = this._S, r = this._i, e = this._j, i = 0, n = 0; n < 4; n++) { - r = (r + 1) % 256, e = (e + t[r]) % 256; - var o = t[r]; - t[r] = t[e], t[e] = o, i |= t[(t[r] + t[e]) % 256] << 24 - 8 * n; - } - return this._i = r, this._j = e, i; - } - var e = t, - i = e.lib, - n = i.StreamCipher, - o = e.algo, - s = o.RC4 = n.extend({ - _doReset: function _doReset() { - for (var t = this._key, r = t.words, e = t.sigBytes, i = this._S = [], n = 0; n < 256; n++) i[n] = n; - for (var n = 0, o = 0; n < 256; n++) { - var s = n % e, - a = r[s >>> 2] >>> 24 - s % 4 * 8 & 255; - o = (o + i[n] + a) % 256; - var c = i[n]; - i[n] = i[o], i[o] = c; - } - this._i = this._j = 0; - }, - _doProcessBlock: function _doProcessBlock(t, e) { - t[e] ^= r.call(this); - }, - keySize: 8, - ivSize: 0 - }); - e.RC4 = n._createHelper(s); - var a = o.RC4Drop = s.extend({ - cfg: s.cfg.extend({ - drop: 192 - }), - _doReset: function _doReset() { - s._doReset.call(this); - for (var t = this.cfg.drop; t > 0; t--) r.call(this); - } - }); - e.RC4Drop = n._createHelper(a); - }(), t.mode.CTRGladman = function () { - function r(t) { - if (255 === (t >> 24 & 255)) { - var r = t >> 16 & 255, - e = t >> 8 & 255, - i = 255 & t; - 255 === r ? (r = 0, 255 === e ? (e = 0, 255 === i ? i = 0 : ++i) : ++e) : ++r, t = 0, t += r << 16, t += e << 8, t += i; - } else t += 1 << 24; - return t; - } - function e(t) { - return 0 === (t[0] = r(t[0])) && (t[1] = r(t[1])), t; - } - var i = t.lib.BlockCipherMode.extend(), - n = i.Encryptor = i.extend({ - processBlock: function processBlock(t, r) { - var i = this._cipher, - n = i.blockSize, - o = this._iv, - s = this._counter; - o && (s = this._counter = o.slice(0), this._iv = void 0), e(s); - var a = s.slice(0); - i.encryptBlock(a, 0); - for (var c = 0; c < n; c++) t[r + c] ^= a[c]; - } - }); - return i.Decryptor = n, i; - }(), function () { - function r() { - for (var t = this._X, r = this._C, e = 0; e < 8; e++) a[e] = r[e]; - r[0] = r[0] + 1295307597 + this._b | 0, r[1] = r[1] + 3545052371 + (r[0] >>> 0 < a[0] >>> 0 ? 1 : 0) | 0, r[2] = r[2] + 886263092 + (r[1] >>> 0 < a[1] >>> 0 ? 1 : 0) | 0, r[3] = r[3] + 1295307597 + (r[2] >>> 0 < a[2] >>> 0 ? 1 : 0) | 0, r[4] = r[4] + 3545052371 + (r[3] >>> 0 < a[3] >>> 0 ? 1 : 0) | 0, r[5] = r[5] + 886263092 + (r[4] >>> 0 < a[4] >>> 0 ? 1 : 0) | 0, r[6] = r[6] + 1295307597 + (r[5] >>> 0 < a[5] >>> 0 ? 1 : 0) | 0, r[7] = r[7] + 3545052371 + (r[6] >>> 0 < a[6] >>> 0 ? 1 : 0) | 0, this._b = r[7] >>> 0 < a[7] >>> 0 ? 1 : 0; - for (var e = 0; e < 8; e++) { - var i = t[e] + r[e], - n = 65535 & i, - o = i >>> 16, - s = ((n * n >>> 17) + n * o >>> 15) + o * o, - h = ((4294901760 & i) * i | 0) + ((65535 & i) * i | 0); - c[e] = s ^ h; - } - t[0] = c[0] + (c[7] << 16 | c[7] >>> 16) + (c[6] << 16 | c[6] >>> 16) | 0, t[1] = c[1] + (c[0] << 8 | c[0] >>> 24) + c[7] | 0, t[2] = c[2] + (c[1] << 16 | c[1] >>> 16) + (c[0] << 16 | c[0] >>> 16) | 0, t[3] = c[3] + (c[2] << 8 | c[2] >>> 24) + c[1] | 0, t[4] = c[4] + (c[3] << 16 | c[3] >>> 16) + (c[2] << 16 | c[2] >>> 16) | 0, t[5] = c[5] + (c[4] << 8 | c[4] >>> 24) + c[3] | 0, t[6] = c[6] + (c[5] << 16 | c[5] >>> 16) + (c[4] << 16 | c[4] >>> 16) | 0, t[7] = c[7] + (c[6] << 8 | c[6] >>> 24) + c[5] | 0; - } - var e = t, - i = e.lib, - n = i.StreamCipher, - o = e.algo, - s = [], - a = [], - c = [], - h = o.Rabbit = n.extend({ - _doReset: function _doReset() { - for (var t = this._key.words, e = this.cfg.iv, i = 0; i < 4; i++) t[i] = 16711935 & (t[i] << 8 | t[i] >>> 24) | 4278255360 & (t[i] << 24 | t[i] >>> 8); - var n = this._X = [t[0], t[3] << 16 | t[2] >>> 16, t[1], t[0] << 16 | t[3] >>> 16, t[2], t[1] << 16 | t[0] >>> 16, t[3], t[2] << 16 | t[1] >>> 16], - o = this._C = [t[2] << 16 | t[2] >>> 16, 4294901760 & t[0] | 65535 & t[1], t[3] << 16 | t[3] >>> 16, 4294901760 & t[1] | 65535 & t[2], t[0] << 16 | t[0] >>> 16, 4294901760 & t[2] | 65535 & t[3], t[1] << 16 | t[1] >>> 16, 4294901760 & t[3] | 65535 & t[0]]; - this._b = 0; - for (var i = 0; i < 4; i++) r.call(this); - for (var i = 0; i < 8; i++) o[i] ^= n[i + 4 & 7]; - if (e) { - var s = e.words, - a = s[0], - c = s[1], - h = 16711935 & (a << 8 | a >>> 24) | 4278255360 & (a << 24 | a >>> 8), - l = 16711935 & (c << 8 | c >>> 24) | 4278255360 & (c << 24 | c >>> 8), - f = h >>> 16 | 4294901760 & l, - u = l << 16 | 65535 & h; - o[0] ^= h, o[1] ^= f, o[2] ^= l, o[3] ^= u, o[4] ^= h, o[5] ^= f, o[6] ^= l, o[7] ^= u; - for (var i = 0; i < 4; i++) r.call(this); - } - }, - _doProcessBlock: function _doProcessBlock(t, e) { - var i = this._X; - r.call(this), s[0] = i[0] ^ i[5] >>> 16 ^ i[3] << 16, s[1] = i[2] ^ i[7] >>> 16 ^ i[5] << 16, s[2] = i[4] ^ i[1] >>> 16 ^ i[7] << 16, s[3] = i[6] ^ i[3] >>> 16 ^ i[1] << 16; - for (var n = 0; n < 4; n++) s[n] = 16711935 & (s[n] << 8 | s[n] >>> 24) | 4278255360 & (s[n] << 24 | s[n] >>> 8), t[e + n] ^= s[n]; - }, - blockSize: 4, - ivSize: 2 - }); - e.Rabbit = n._createHelper(h); - }(), t.mode.CTR = function () { - var r = t.lib.BlockCipherMode.extend(), - e = r.Encryptor = r.extend({ - processBlock: function processBlock(t, r) { - var e = this._cipher, - i = e.blockSize, - n = this._iv, - o = this._counter; - n && (o = this._counter = n.slice(0), this._iv = void 0); - var s = o.slice(0); - e.encryptBlock(s, 0), o[i - 1] = o[i - 1] + 1 | 0; - for (var a = 0; a < i; a++) t[r + a] ^= s[a]; - } - }); - return r.Decryptor = e, r; - }(), function () { - function r() { - for (var t = this._X, r = this._C, e = 0; e < 8; e++) a[e] = r[e]; - r[0] = r[0] + 1295307597 + this._b | 0, r[1] = r[1] + 3545052371 + (r[0] >>> 0 < a[0] >>> 0 ? 1 : 0) | 0, r[2] = r[2] + 886263092 + (r[1] >>> 0 < a[1] >>> 0 ? 1 : 0) | 0, r[3] = r[3] + 1295307597 + (r[2] >>> 0 < a[2] >>> 0 ? 1 : 0) | 0, r[4] = r[4] + 3545052371 + (r[3] >>> 0 < a[3] >>> 0 ? 1 : 0) | 0, r[5] = r[5] + 886263092 + (r[4] >>> 0 < a[4] >>> 0 ? 1 : 0) | 0, r[6] = r[6] + 1295307597 + (r[5] >>> 0 < a[5] >>> 0 ? 1 : 0) | 0, r[7] = r[7] + 3545052371 + (r[6] >>> 0 < a[6] >>> 0 ? 1 : 0) | 0, this._b = r[7] >>> 0 < a[7] >>> 0 ? 1 : 0; - for (var e = 0; e < 8; e++) { - var i = t[e] + r[e], - n = 65535 & i, - o = i >>> 16, - s = ((n * n >>> 17) + n * o >>> 15) + o * o, - h = ((4294901760 & i) * i | 0) + ((65535 & i) * i | 0); - c[e] = s ^ h; - } - t[0] = c[0] + (c[7] << 16 | c[7] >>> 16) + (c[6] << 16 | c[6] >>> 16) | 0, t[1] = c[1] + (c[0] << 8 | c[0] >>> 24) + c[7] | 0, t[2] = c[2] + (c[1] << 16 | c[1] >>> 16) + (c[0] << 16 | c[0] >>> 16) | 0, t[3] = c[3] + (c[2] << 8 | c[2] >>> 24) + c[1] | 0, t[4] = c[4] + (c[3] << 16 | c[3] >>> 16) + (c[2] << 16 | c[2] >>> 16) | 0, t[5] = c[5] + (c[4] << 8 | c[4] >>> 24) + c[3] | 0, t[6] = c[6] + (c[5] << 16 | c[5] >>> 16) + (c[4] << 16 | c[4] >>> 16) | 0, t[7] = c[7] + (c[6] << 8 | c[6] >>> 24) + c[5] | 0; - } - var e = t, - i = e.lib, - n = i.StreamCipher, - o = e.algo, - s = [], - a = [], - c = [], - h = o.RabbitLegacy = n.extend({ - _doReset: function _doReset() { - var t = this._key.words, - e = this.cfg.iv, - i = this._X = [t[0], t[3] << 16 | t[2] >>> 16, t[1], t[0] << 16 | t[3] >>> 16, t[2], t[1] << 16 | t[0] >>> 16, t[3], t[2] << 16 | t[1] >>> 16], - n = this._C = [t[2] << 16 | t[2] >>> 16, 4294901760 & t[0] | 65535 & t[1], t[3] << 16 | t[3] >>> 16, 4294901760 & t[1] | 65535 & t[2], t[0] << 16 | t[0] >>> 16, 4294901760 & t[2] | 65535 & t[3], t[1] << 16 | t[1] >>> 16, 4294901760 & t[3] | 65535 & t[0]]; - this._b = 0; - for (var o = 0; o < 4; o++) r.call(this); - for (var o = 0; o < 8; o++) n[o] ^= i[o + 4 & 7]; - if (e) { - var s = e.words, - a = s[0], - c = s[1], - h = 16711935 & (a << 8 | a >>> 24) | 4278255360 & (a << 24 | a >>> 8), - l = 16711935 & (c << 8 | c >>> 24) | 4278255360 & (c << 24 | c >>> 8), - f = h >>> 16 | 4294901760 & l, - u = l << 16 | 65535 & h; - n[0] ^= h, n[1] ^= f, n[2] ^= l, n[3] ^= u, n[4] ^= h, n[5] ^= f, n[6] ^= l, n[7] ^= u; - for (var o = 0; o < 4; o++) r.call(this); - } - }, - _doProcessBlock: function _doProcessBlock(t, e) { - var i = this._X; - r.call(this), s[0] = i[0] ^ i[5] >>> 16 ^ i[3] << 16, s[1] = i[2] ^ i[7] >>> 16 ^ i[5] << 16, s[2] = i[4] ^ i[1] >>> 16 ^ i[7] << 16, s[3] = i[6] ^ i[3] >>> 16 ^ i[1] << 16; - for (var n = 0; n < 4; n++) s[n] = 16711935 & (s[n] << 8 | s[n] >>> 24) | 4278255360 & (s[n] << 24 | s[n] >>> 8), t[e + n] ^= s[n]; - }, - blockSize: 4, - ivSize: 2 - }); - e.RabbitLegacy = n._createHelper(h); - }(), t.pad.ZeroPadding = { - pad: function pad(t, r) { - var e = 4 * r; - t.clamp(), t.sigBytes += e - (t.sigBytes % e || e); - }, - unpad: function unpad(t) { - for (var r = t.words, e = t.sigBytes - 1; !(r[e >>> 2] >>> 24 - e % 4 * 8 & 255);) e--; - t.sigBytes = e + 1; - } - }, t; -}); - + if (!nodeEnv) {__quick_compile_project__.registerModule(__filename, module);}"use strict"; +cc._RF.push(module, 'e64e1qXyT9CV6s0gDQdj/ed', 'crypto-js.min'); +// Script/module/Crypto/crypto-js.min.js + +"use strict"; + +!function (t, r) { + "object" == typeof exports ? module.exports = exports = r() : "function" == typeof define && define.amd ? define([], r) : t.CryptoJS = r(); +}(void 0, function () { + var t = t || function (t, r) { + var e = Object.create || function () { + function t() {} + return function (r) { + var e; + return t.prototype = r, e = new t(), t.prototype = null, e; + }; + }(), + i = {}, + n = i.lib = {}, + o = n.Base = function () { + return { + extend: function extend(t) { + var r = e(this); + return t && r.mixIn(t), r.hasOwnProperty("init") && this.init !== r.init || (r.init = function () { + r.$super.init.apply(this, arguments); + }), r.init.prototype = r, r.$super = this, r; + }, + create: function create() { + var t = this.extend(); + return t.init.apply(t, arguments), t; + }, + init: function init() {}, + mixIn: function mixIn(t) { + for (var r in t) t.hasOwnProperty(r) && (this[r] = t[r]); + t.hasOwnProperty("toString") && (this.toString = t.toString); + }, + clone: function clone() { + return this.init.prototype.extend(this); + } + }; + }(), + s = n.WordArray = o.extend({ + init: function init(t, e) { + t = this.words = t || [], e != r ? this.sigBytes = e : this.sigBytes = 4 * t.length; + }, + toString: function toString(t) { + return (t || c).stringify(this); + }, + concat: function concat(t) { + var r = this.words, + e = t.words, + i = this.sigBytes, + n = t.sigBytes; + if (this.clamp(), i % 4) for (var o = 0; o < n; o++) { + var s = e[o >>> 2] >>> 24 - o % 4 * 8 & 255; + r[i + o >>> 2] |= s << 24 - (i + o) % 4 * 8; + } else for (var o = 0; o < n; o += 4) r[i + o >>> 2] = e[o >>> 2]; + return this.sigBytes += n, this; + }, + clamp: function clamp() { + var r = this.words, + e = this.sigBytes; + r[e >>> 2] &= 4294967295 << 32 - e % 4 * 8, r.length = t.ceil(e / 4); + }, + clone: function clone() { + var t = o.clone.call(this); + return t.words = this.words.slice(0), t; + }, + random: function random(r) { + for (var e, i = [], n = function n(r) { + var r = r, + e = 987654321, + i = 4294967295; + return function () { + e = 36969 * (65535 & e) + (e >> 16) & i, r = 18e3 * (65535 & r) + (r >> 16) & i; + var n = (e << 16) + r & i; + return n /= 4294967296, n += .5, n * (t.random() > .5 ? 1 : -1); + }; + }, o = 0; o < r; o += 4) { + var a = n(4294967296 * (e || t.random())); + e = 987654071 * a(), i.push(4294967296 * a() | 0); + } + return new s.init(i, r); + } + }), + a = i.enc = {}, + c = a.Hex = { + stringify: function stringify(t) { + for (var r = t.words, e = t.sigBytes, i = [], n = 0; n < e; n++) { + var o = r[n >>> 2] >>> 24 - n % 4 * 8 & 255; + i.push((o >>> 4).toString(16)), i.push((15 & o).toString(16)); + } + return i.join(""); + }, + parse: function parse(t) { + for (var r = t.length, e = [], i = 0; i < r; i += 2) e[i >>> 3] |= parseInt(t.substr(i, 2), 16) << 24 - i % 8 * 4; + return new s.init(e, r / 2); + } + }, + h = a.Latin1 = { + stringify: function stringify(t) { + for (var r = t.words, e = t.sigBytes, i = [], n = 0; n < e; n++) { + var o = r[n >>> 2] >>> 24 - n % 4 * 8 & 255; + i.push(String.fromCharCode(o)); + } + return i.join(""); + }, + parse: function parse(t) { + for (var r = t.length, e = [], i = 0; i < r; i++) e[i >>> 2] |= (255 & t.charCodeAt(i)) << 24 - i % 4 * 8; + return new s.init(e, r); + } + }, + l = a.Utf8 = { + stringify: function stringify(t) { + try { + return decodeURIComponent(escape(h.stringify(t))); + } catch (t) { + throw new Error("Malformed UTF-8 data"); + } + }, + parse: function parse(t) { + return h.parse(unescape(encodeURIComponent(t))); + } + }, + f = n.BufferedBlockAlgorithm = o.extend({ + reset: function reset() { + this._data = new s.init(), this._nDataBytes = 0; + }, + _append: function _append(t) { + "string" == typeof t && (t = l.parse(t)), this._data.concat(t), this._nDataBytes += t.sigBytes; + }, + _process: function _process(r) { + var e = this._data, + i = e.words, + n = e.sigBytes, + o = this.blockSize, + a = 4 * o, + c = n / a; + c = r ? t.ceil(c) : t.max((0 | c) - this._minBufferSize, 0); + var h = c * o, + l = t.min(4 * h, n); + if (h) { + for (var f = 0; f < h; f += o) this._doProcessBlock(i, f); + var u = i.splice(0, h); + e.sigBytes -= l; + } + return new s.init(u, l); + }, + clone: function clone() { + var t = o.clone.call(this); + return t._data = this._data.clone(), t; + }, + _minBufferSize: 0 + }), + u = (n.Hasher = f.extend({ + cfg: o.extend(), + init: function init(t) { + this.cfg = this.cfg.extend(t), this.reset(); + }, + reset: function reset() { + f.reset.call(this), this._doReset(); + }, + update: function update(t) { + return this._append(t), this._process(), this; + }, + finalize: function finalize(t) { + t && this._append(t); + var r = this._doFinalize(); + return r; + }, + blockSize: 16, + _createHelper: function _createHelper(t) { + return function (r, e) { + return new t.init(e).finalize(r); + }; + }, + _createHmacHelper: function _createHmacHelper(t) { + return function (r, e) { + return new u.HMAC.init(t, e).finalize(r); + }; + } + }), i.algo = {}); + return i; + }(Math); + return function () { + function r(t, r, e) { + for (var i = [], o = 0, s = 0; s < r; s++) if (s % 4) { + var a = e[t.charCodeAt(s - 1)] << s % 4 * 2, + c = e[t.charCodeAt(s)] >>> 6 - s % 4 * 2; + i[o >>> 2] |= (a | c) << 24 - o % 4 * 8, o++; + } + return n.create(i, o); + } + var e = t, + i = e.lib, + n = i.WordArray, + o = e.enc; + o.Base64 = { + stringify: function stringify(t) { + var r = t.words, + e = t.sigBytes, + i = this._map; + t.clamp(); + for (var n = [], o = 0; o < e; o += 3) for (var s = r[o >>> 2] >>> 24 - o % 4 * 8 & 255, a = r[o + 1 >>> 2] >>> 24 - (o + 1) % 4 * 8 & 255, c = r[o + 2 >>> 2] >>> 24 - (o + 2) % 4 * 8 & 255, h = s << 16 | a << 8 | c, l = 0; l < 4 && o + .75 * l < e; l++) n.push(i.charAt(h >>> 6 * (3 - l) & 63)); + var f = i.charAt(64); + if (f) for (; n.length % 4;) n.push(f); + return n.join(""); + }, + parse: function parse(t) { + var e = t.length, + i = this._map, + n = this._reverseMap; + if (!n) { + n = this._reverseMap = []; + for (var o = 0; o < i.length; o++) n[i.charCodeAt(o)] = o; + } + var s = i.charAt(64); + if (s) { + var a = t.indexOf(s); + a !== -1 && (e = a); + } + return r(t, e, n); + }, + _map: "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=" + }; + }(), function (r) { + function e(t, r, e, i, n, o, s) { + var a = t + (r & e | ~r & i) + n + s; + return (a << o | a >>> 32 - o) + r; + } + function i(t, r, e, i, n, o, s) { + var a = t + (r & i | e & ~i) + n + s; + return (a << o | a >>> 32 - o) + r; + } + function n(t, r, e, i, n, o, s) { + var a = t + (r ^ e ^ i) + n + s; + return (a << o | a >>> 32 - o) + r; + } + function o(t, r, e, i, n, o, s) { + var a = t + (e ^ (r | ~i)) + n + s; + return (a << o | a >>> 32 - o) + r; + } + var s = t, + a = s.lib, + c = a.WordArray, + h = a.Hasher, + l = s.algo, + f = []; + !function () { + for (var t = 0; t < 64; t++) f[t] = 4294967296 * r.abs(r.sin(t + 1)) | 0; + }(); + var u = l.MD5 = h.extend({ + _doReset: function _doReset() { + this._hash = new c.init([1732584193, 4023233417, 2562383102, 271733878]); + }, + _doProcessBlock: function _doProcessBlock(t, r) { + for (var s = 0; s < 16; s++) { + var a = r + s, + c = t[a]; + t[a] = 16711935 & (c << 8 | c >>> 24) | 4278255360 & (c << 24 | c >>> 8); + } + var h = this._hash.words, + l = t[r + 0], + u = t[r + 1], + d = t[r + 2], + v = t[r + 3], + p = t[r + 4], + _ = t[r + 5], + y = t[r + 6], + g = t[r + 7], + B = t[r + 8], + w = t[r + 9], + k = t[r + 10], + S = t[r + 11], + m = t[r + 12], + x = t[r + 13], + b = t[r + 14], + H = t[r + 15], + z = h[0], + A = h[1], + C = h[2], + D = h[3]; + z = e(z, A, C, D, l, 7, f[0]), D = e(D, z, A, C, u, 12, f[1]), C = e(C, D, z, A, d, 17, f[2]), A = e(A, C, D, z, v, 22, f[3]), z = e(z, A, C, D, p, 7, f[4]), D = e(D, z, A, C, _, 12, f[5]), C = e(C, D, z, A, y, 17, f[6]), A = e(A, C, D, z, g, 22, f[7]), z = e(z, A, C, D, B, 7, f[8]), D = e(D, z, A, C, w, 12, f[9]), C = e(C, D, z, A, k, 17, f[10]), A = e(A, C, D, z, S, 22, f[11]), z = e(z, A, C, D, m, 7, f[12]), D = e(D, z, A, C, x, 12, f[13]), C = e(C, D, z, A, b, 17, f[14]), A = e(A, C, D, z, H, 22, f[15]), z = i(z, A, C, D, u, 5, f[16]), D = i(D, z, A, C, y, 9, f[17]), C = i(C, D, z, A, S, 14, f[18]), A = i(A, C, D, z, l, 20, f[19]), z = i(z, A, C, D, _, 5, f[20]), D = i(D, z, A, C, k, 9, f[21]), C = i(C, D, z, A, H, 14, f[22]), A = i(A, C, D, z, p, 20, f[23]), z = i(z, A, C, D, w, 5, f[24]), D = i(D, z, A, C, b, 9, f[25]), C = i(C, D, z, A, v, 14, f[26]), A = i(A, C, D, z, B, 20, f[27]), z = i(z, A, C, D, x, 5, f[28]), D = i(D, z, A, C, d, 9, f[29]), C = i(C, D, z, A, g, 14, f[30]), A = i(A, C, D, z, m, 20, f[31]), z = n(z, A, C, D, _, 4, f[32]), D = n(D, z, A, C, B, 11, f[33]), C = n(C, D, z, A, S, 16, f[34]), A = n(A, C, D, z, b, 23, f[35]), z = n(z, A, C, D, u, 4, f[36]), D = n(D, z, A, C, p, 11, f[37]), C = n(C, D, z, A, g, 16, f[38]), A = n(A, C, D, z, k, 23, f[39]), z = n(z, A, C, D, x, 4, f[40]), D = n(D, z, A, C, l, 11, f[41]), C = n(C, D, z, A, v, 16, f[42]), A = n(A, C, D, z, y, 23, f[43]), z = n(z, A, C, D, w, 4, f[44]), D = n(D, z, A, C, m, 11, f[45]), C = n(C, D, z, A, H, 16, f[46]), A = n(A, C, D, z, d, 23, f[47]), z = o(z, A, C, D, l, 6, f[48]), D = o(D, z, A, C, g, 10, f[49]), C = o(C, D, z, A, b, 15, f[50]), A = o(A, C, D, z, _, 21, f[51]), z = o(z, A, C, D, m, 6, f[52]), D = o(D, z, A, C, v, 10, f[53]), C = o(C, D, z, A, k, 15, f[54]), A = o(A, C, D, z, u, 21, f[55]), z = o(z, A, C, D, B, 6, f[56]), D = o(D, z, A, C, H, 10, f[57]), C = o(C, D, z, A, y, 15, f[58]), A = o(A, C, D, z, x, 21, f[59]), z = o(z, A, C, D, p, 6, f[60]), D = o(D, z, A, C, S, 10, f[61]), C = o(C, D, z, A, d, 15, f[62]), A = o(A, C, D, z, w, 21, f[63]), h[0] = h[0] + z | 0, h[1] = h[1] + A | 0, h[2] = h[2] + C | 0, h[3] = h[3] + D | 0; + }, + _doFinalize: function _doFinalize() { + var t = this._data, + e = t.words, + i = 8 * this._nDataBytes, + n = 8 * t.sigBytes; + e[n >>> 5] |= 128 << 24 - n % 32; + var o = r.floor(i / 4294967296), + s = i; + e[(n + 64 >>> 9 << 4) + 15] = 16711935 & (o << 8 | o >>> 24) | 4278255360 & (o << 24 | o >>> 8), e[(n + 64 >>> 9 << 4) + 14] = 16711935 & (s << 8 | s >>> 24) | 4278255360 & (s << 24 | s >>> 8), t.sigBytes = 4 * (e.length + 1), this._process(); + for (var a = this._hash, c = a.words, h = 0; h < 4; h++) { + var l = c[h]; + c[h] = 16711935 & (l << 8 | l >>> 24) | 4278255360 & (l << 24 | l >>> 8); + } + return a; + }, + clone: function clone() { + var t = h.clone.call(this); + return t._hash = this._hash.clone(), t; + } + }); + s.MD5 = h._createHelper(u), s.HmacMD5 = h._createHmacHelper(u); + }(Math), function () { + var r = t, + e = r.lib, + i = e.WordArray, + n = e.Hasher, + o = r.algo, + s = [], + a = o.SHA1 = n.extend({ + _doReset: function _doReset() { + this._hash = new i.init([1732584193, 4023233417, 2562383102, 271733878, 3285377520]); + }, + _doProcessBlock: function _doProcessBlock(t, r) { + for (var e = this._hash.words, i = e[0], n = e[1], o = e[2], a = e[3], c = e[4], h = 0; h < 80; h++) { + if (h < 16) s[h] = 0 | t[r + h];else { + var l = s[h - 3] ^ s[h - 8] ^ s[h - 14] ^ s[h - 16]; + s[h] = l << 1 | l >>> 31; + } + var f = (i << 5 | i >>> 27) + c + s[h]; + f += h < 20 ? (n & o | ~n & a) + 1518500249 : h < 40 ? (n ^ o ^ a) + 1859775393 : h < 60 ? (n & o | n & a | o & a) - 1894007588 : (n ^ o ^ a) - 899497514, c = a, a = o, o = n << 30 | n >>> 2, n = i, i = f; + } + e[0] = e[0] + i | 0, e[1] = e[1] + n | 0, e[2] = e[2] + o | 0, e[3] = e[3] + a | 0, e[4] = e[4] + c | 0; + }, + _doFinalize: function _doFinalize() { + var t = this._data, + r = t.words, + e = 8 * this._nDataBytes, + i = 8 * t.sigBytes; + return r[i >>> 5] |= 128 << 24 - i % 32, r[(i + 64 >>> 9 << 4) + 14] = Math.floor(e / 4294967296), r[(i + 64 >>> 9 << 4) + 15] = e, t.sigBytes = 4 * r.length, this._process(), this._hash; + }, + clone: function clone() { + var t = n.clone.call(this); + return t._hash = this._hash.clone(), t; + } + }); + r.SHA1 = n._createHelper(a), r.HmacSHA1 = n._createHmacHelper(a); + }(), function (r) { + var e = t, + i = e.lib, + n = i.WordArray, + o = i.Hasher, + s = e.algo, + a = [], + c = []; + !function () { + function t(t) { + for (var e = r.sqrt(t), i = 2; i <= e; i++) if (!(t % i)) return !1; + return !0; + } + function e(t) { + return 4294967296 * (t - (0 | t)) | 0; + } + for (var i = 2, n = 0; n < 64;) t(i) && (n < 8 && (a[n] = e(r.pow(i, .5))), c[n] = e(r.pow(i, 1 / 3)), n++), i++; + }(); + var h = [], + l = s.SHA256 = o.extend({ + _doReset: function _doReset() { + this._hash = new n.init(a.slice(0)); + }, + _doProcessBlock: function _doProcessBlock(t, r) { + for (var e = this._hash.words, i = e[0], n = e[1], o = e[2], s = e[3], a = e[4], l = e[5], f = e[6], u = e[7], d = 0; d < 64; d++) { + if (d < 16) h[d] = 0 | t[r + d];else { + var v = h[d - 15], + p = (v << 25 | v >>> 7) ^ (v << 14 | v >>> 18) ^ v >>> 3, + _ = h[d - 2], + y = (_ << 15 | _ >>> 17) ^ (_ << 13 | _ >>> 19) ^ _ >>> 10; + h[d] = p + h[d - 7] + y + h[d - 16]; + } + var g = a & l ^ ~a & f, + B = i & n ^ i & o ^ n & o, + w = (i << 30 | i >>> 2) ^ (i << 19 | i >>> 13) ^ (i << 10 | i >>> 22), + k = (a << 26 | a >>> 6) ^ (a << 21 | a >>> 11) ^ (a << 7 | a >>> 25), + S = u + k + g + c[d] + h[d], + m = w + B; + u = f, f = l, l = a, a = s + S | 0, s = o, o = n, n = i, i = S + m | 0; + } + e[0] = e[0] + i | 0, e[1] = e[1] + n | 0, e[2] = e[2] + o | 0, e[3] = e[3] + s | 0, e[4] = e[4] + a | 0, e[5] = e[5] + l | 0, e[6] = e[6] + f | 0, e[7] = e[7] + u | 0; + }, + _doFinalize: function _doFinalize() { + var t = this._data, + e = t.words, + i = 8 * this._nDataBytes, + n = 8 * t.sigBytes; + return e[n >>> 5] |= 128 << 24 - n % 32, e[(n + 64 >>> 9 << 4) + 14] = r.floor(i / 4294967296), e[(n + 64 >>> 9 << 4) + 15] = i, t.sigBytes = 4 * e.length, this._process(), this._hash; + }, + clone: function clone() { + var t = o.clone.call(this); + return t._hash = this._hash.clone(), t; + } + }); + e.SHA256 = o._createHelper(l), e.HmacSHA256 = o._createHmacHelper(l); + }(Math), function () { + function r(t) { + return t << 8 & 4278255360 | t >>> 8 & 16711935; + } + var e = t, + i = e.lib, + n = i.WordArray, + o = e.enc; + o.Utf16 = o.Utf16BE = { + stringify: function stringify(t) { + for (var r = t.words, e = t.sigBytes, i = [], n = 0; n < e; n += 2) { + var o = r[n >>> 2] >>> 16 - n % 4 * 8 & 65535; + i.push(String.fromCharCode(o)); + } + return i.join(""); + }, + parse: function parse(t) { + for (var r = t.length, e = [], i = 0; i < r; i++) e[i >>> 1] |= t.charCodeAt(i) << 16 - i % 2 * 16; + return n.create(e, 2 * r); + } + }; + o.Utf16LE = { + stringify: function stringify(t) { + for (var e = t.words, i = t.sigBytes, n = [], o = 0; o < i; o += 2) { + var s = r(e[o >>> 2] >>> 16 - o % 4 * 8 & 65535); + n.push(String.fromCharCode(s)); + } + return n.join(""); + }, + parse: function parse(t) { + for (var e = t.length, i = [], o = 0; o < e; o++) i[o >>> 1] |= r(t.charCodeAt(o) << 16 - o % 2 * 16); + return n.create(i, 2 * e); + } + }; + }(), function () { + if ("function" == typeof ArrayBuffer) { + var r = t, + e = r.lib, + i = e.WordArray, + n = i.init, + o = i.init = function (t) { + if (t instanceof ArrayBuffer && (t = new Uint8Array(t)), (t instanceof Int8Array || "undefined" != typeof Uint8ClampedArray && t instanceof Uint8ClampedArray || t instanceof Int16Array || t instanceof Uint16Array || t instanceof Int32Array || t instanceof Uint32Array || t instanceof Float32Array || t instanceof Float64Array) && (t = new Uint8Array(t.buffer, t.byteOffset, t.byteLength)), t instanceof Uint8Array) { + for (var r = t.byteLength, e = [], i = 0; i < r; i++) e[i >>> 2] |= t[i] << 24 - i % 4 * 8; + n.call(this, e, r); + } else n.apply(this, arguments); + }; + o.prototype = i; + } + }(), function (r) { + function e(t, r, e) { + return t ^ r ^ e; + } + function i(t, r, e) { + return t & r | ~t & e; + } + function n(t, r, e) { + return (t | ~r) ^ e; + } + function o(t, r, e) { + return t & e | r & ~e; + } + function s(t, r, e) { + return t ^ (r | ~e); + } + function a(t, r) { + return t << r | t >>> 32 - r; + } + var c = t, + h = c.lib, + l = h.WordArray, + f = h.Hasher, + u = c.algo, + d = l.create([0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 7, 4, 13, 1, 10, 6, 15, 3, 12, 0, 9, 5, 2, 14, 11, 8, 3, 10, 14, 4, 9, 15, 8, 1, 2, 7, 0, 6, 13, 11, 5, 12, 1, 9, 11, 10, 0, 8, 12, 4, 13, 3, 7, 15, 14, 5, 6, 2, 4, 0, 5, 9, 7, 12, 2, 10, 14, 1, 3, 8, 11, 6, 15, 13]), + v = l.create([5, 14, 7, 0, 9, 2, 11, 4, 13, 6, 15, 8, 1, 10, 3, 12, 6, 11, 3, 7, 0, 13, 5, 10, 14, 15, 8, 12, 4, 9, 1, 2, 15, 5, 1, 3, 7, 14, 6, 9, 11, 8, 12, 2, 10, 0, 4, 13, 8, 6, 4, 1, 3, 11, 15, 0, 5, 12, 2, 13, 9, 7, 10, 14, 12, 15, 10, 4, 1, 5, 8, 7, 6, 2, 13, 14, 0, 3, 9, 11]), + p = l.create([11, 14, 15, 12, 5, 8, 7, 9, 11, 13, 14, 15, 6, 7, 9, 8, 7, 6, 8, 13, 11, 9, 7, 15, 7, 12, 15, 9, 11, 7, 13, 12, 11, 13, 6, 7, 14, 9, 13, 15, 14, 8, 13, 6, 5, 12, 7, 5, 11, 12, 14, 15, 14, 15, 9, 8, 9, 14, 5, 6, 8, 6, 5, 12, 9, 15, 5, 11, 6, 8, 13, 12, 5, 12, 13, 14, 11, 8, 5, 6]), + _ = l.create([8, 9, 9, 11, 13, 15, 15, 5, 7, 7, 8, 11, 14, 14, 12, 6, 9, 13, 15, 7, 12, 8, 9, 11, 7, 7, 12, 7, 6, 15, 13, 11, 9, 7, 15, 11, 8, 6, 6, 14, 12, 13, 5, 14, 13, 13, 7, 5, 15, 5, 8, 11, 14, 14, 6, 14, 6, 9, 12, 9, 12, 5, 15, 8, 8, 5, 12, 9, 12, 5, 14, 6, 8, 13, 6, 5, 15, 13, 11, 11]), + y = l.create([0, 1518500249, 1859775393, 2400959708, 2840853838]), + g = l.create([1352829926, 1548603684, 1836072691, 2053994217, 0]), + B = u.RIPEMD160 = f.extend({ + _doReset: function _doReset() { + this._hash = l.create([1732584193, 4023233417, 2562383102, 271733878, 3285377520]); + }, + _doProcessBlock: function _doProcessBlock(t, r) { + for (var c = 0; c < 16; c++) { + var h = r + c, + l = t[h]; + t[h] = 16711935 & (l << 8 | l >>> 24) | 4278255360 & (l << 24 | l >>> 8); + } + var f, + u, + B, + w, + k, + S, + m, + x, + b, + H, + z = this._hash.words, + A = y.words, + C = g.words, + D = d.words, + R = v.words, + E = p.words, + M = _.words; + S = f = z[0], m = u = z[1], x = B = z[2], b = w = z[3], H = k = z[4]; + for (var F, c = 0; c < 80; c += 1) F = f + t[r + D[c]] | 0, F += c < 16 ? e(u, B, w) + A[0] : c < 32 ? i(u, B, w) + A[1] : c < 48 ? n(u, B, w) + A[2] : c < 64 ? o(u, B, w) + A[3] : s(u, B, w) + A[4], F |= 0, F = a(F, E[c]), F = F + k | 0, f = k, k = w, w = a(B, 10), B = u, u = F, F = S + t[r + R[c]] | 0, F += c < 16 ? s(m, x, b) + C[0] : c < 32 ? o(m, x, b) + C[1] : c < 48 ? n(m, x, b) + C[2] : c < 64 ? i(m, x, b) + C[3] : e(m, x, b) + C[4], F |= 0, F = a(F, M[c]), F = F + H | 0, S = H, H = b, b = a(x, 10), x = m, m = F; + F = z[1] + B + b | 0, z[1] = z[2] + w + H | 0, z[2] = z[3] + k + S | 0, z[3] = z[4] + f + m | 0, z[4] = z[0] + u + x | 0, z[0] = F; + }, + _doFinalize: function _doFinalize() { + var t = this._data, + r = t.words, + e = 8 * this._nDataBytes, + i = 8 * t.sigBytes; + r[i >>> 5] |= 128 << 24 - i % 32, r[(i + 64 >>> 9 << 4) + 14] = 16711935 & (e << 8 | e >>> 24) | 4278255360 & (e << 24 | e >>> 8), t.sigBytes = 4 * (r.length + 1), this._process(); + for (var n = this._hash, o = n.words, s = 0; s < 5; s++) { + var a = o[s]; + o[s] = 16711935 & (a << 8 | a >>> 24) | 4278255360 & (a << 24 | a >>> 8); + } + return n; + }, + clone: function clone() { + var t = f.clone.call(this); + return t._hash = this._hash.clone(), t; + } + }); + c.RIPEMD160 = f._createHelper(B), c.HmacRIPEMD160 = f._createHmacHelper(B); + }(Math), function () { + var r = t, + e = r.lib, + i = e.Base, + n = r.enc, + o = n.Utf8, + s = r.algo; + s.HMAC = i.extend({ + init: function init(t, r) { + t = this._hasher = new t.init(), "string" == typeof r && (r = o.parse(r)); + var e = t.blockSize, + i = 4 * e; + r.sigBytes > i && (r = t.finalize(r)), r.clamp(); + for (var n = this._oKey = r.clone(), s = this._iKey = r.clone(), a = n.words, c = s.words, h = 0; h < e; h++) a[h] ^= 1549556828, c[h] ^= 909522486; + n.sigBytes = s.sigBytes = i, this.reset(); + }, + reset: function reset() { + var t = this._hasher; + t.reset(), t.update(this._iKey); + }, + update: function update(t) { + return this._hasher.update(t), this; + }, + finalize: function finalize(t) { + var r = this._hasher, + e = r.finalize(t); + r.reset(); + var i = r.finalize(this._oKey.clone().concat(e)); + return i; + } + }); + }(), function () { + var r = t, + e = r.lib, + i = e.Base, + n = e.WordArray, + o = r.algo, + s = o.SHA1, + a = o.HMAC, + c = o.PBKDF2 = i.extend({ + cfg: i.extend({ + keySize: 4, + hasher: s, + iterations: 1 + }), + init: function init(t) { + this.cfg = this.cfg.extend(t); + }, + compute: function compute(t, r) { + for (var e = this.cfg, i = a.create(e.hasher, t), o = n.create(), s = n.create([1]), c = o.words, h = s.words, l = e.keySize, f = e.iterations; c.length < l;) { + var u = i.update(r).finalize(s); + i.reset(); + for (var d = u.words, v = d.length, p = u, _ = 1; _ < f; _++) { + p = i.finalize(p), i.reset(); + for (var y = p.words, g = 0; g < v; g++) d[g] ^= y[g]; + } + o.concat(u), h[0]++; + } + return o.sigBytes = 4 * l, o; + } + }); + r.PBKDF2 = function (t, r, e) { + return c.create(e).compute(t, r); + }; + }(), function () { + var r = t, + e = r.lib, + i = e.Base, + n = e.WordArray, + o = r.algo, + s = o.MD5, + a = o.EvpKDF = i.extend({ + cfg: i.extend({ + keySize: 4, + hasher: s, + iterations: 1 + }), + init: function init(t) { + this.cfg = this.cfg.extend(t); + }, + compute: function compute(t, r) { + for (var e = this.cfg, i = e.hasher.create(), o = n.create(), s = o.words, a = e.keySize, c = e.iterations; s.length < a;) { + h && i.update(h); + var h = i.update(t).finalize(r); + i.reset(); + for (var l = 1; l < c; l++) h = i.finalize(h), i.reset(); + o.concat(h); + } + return o.sigBytes = 4 * a, o; + } + }); + r.EvpKDF = function (t, r, e) { + return a.create(e).compute(t, r); + }; + }(), function () { + var r = t, + e = r.lib, + i = e.WordArray, + n = r.algo, + o = n.SHA256, + s = n.SHA224 = o.extend({ + _doReset: function _doReset() { + this._hash = new i.init([3238371032, 914150663, 812702999, 4144912697, 4290775857, 1750603025, 1694076839, 3204075428]); + }, + _doFinalize: function _doFinalize() { + var t = o._doFinalize.call(this); + return t.sigBytes -= 4, t; + } + }); + r.SHA224 = o._createHelper(s), r.HmacSHA224 = o._createHmacHelper(s); + }(), function (r) { + var e = t, + i = e.lib, + n = i.Base, + o = i.WordArray, + s = e.x64 = {}; + s.Word = n.extend({ + init: function init(t, r) { + this.high = t, this.low = r; + } + }), s.WordArray = n.extend({ + init: function init(t, e) { + t = this.words = t || [], e != r ? this.sigBytes = e : this.sigBytes = 8 * t.length; + }, + toX32: function toX32() { + for (var t = this.words, r = t.length, e = [], i = 0; i < r; i++) { + var n = t[i]; + e.push(n.high), e.push(n.low); + } + return o.create(e, this.sigBytes); + }, + clone: function clone() { + for (var t = n.clone.call(this), r = t.words = this.words.slice(0), e = r.length, i = 0; i < e; i++) r[i] = r[i].clone(); + return t; + } + }); + }(), function (r) { + var e = t, + i = e.lib, + n = i.WordArray, + o = i.Hasher, + s = e.x64, + a = s.Word, + c = e.algo, + h = [], + l = [], + f = []; + !function () { + for (var t = 1, r = 0, e = 0; e < 24; e++) { + h[t + 5 * r] = (e + 1) * (e + 2) / 2 % 64; + var i = r % 5, + n = (2 * t + 3 * r) % 5; + t = i, r = n; + } + for (var t = 0; t < 5; t++) for (var r = 0; r < 5; r++) l[t + 5 * r] = r + (2 * t + 3 * r) % 5 * 5; + for (var o = 1, s = 0; s < 24; s++) { + for (var c = 0, u = 0, d = 0; d < 7; d++) { + if (1 & o) { + var v = (1 << d) - 1; + v < 32 ? u ^= 1 << v : c ^= 1 << v - 32; + } + 128 & o ? o = o << 1 ^ 113 : o <<= 1; + } + f[s] = a.create(c, u); + } + }(); + var u = []; + !function () { + for (var t = 0; t < 25; t++) u[t] = a.create(); + }(); + var d = c.SHA3 = o.extend({ + cfg: o.cfg.extend({ + outputLength: 512 + }), + _doReset: function _doReset() { + for (var t = this._state = [], r = 0; r < 25; r++) t[r] = new a.init(); + this.blockSize = (1600 - 2 * this.cfg.outputLength) / 32; + }, + _doProcessBlock: function _doProcessBlock(t, r) { + for (var e = this._state, i = this.blockSize / 2, n = 0; n < i; n++) { + var o = t[r + 2 * n], + s = t[r + 2 * n + 1]; + o = 16711935 & (o << 8 | o >>> 24) | 4278255360 & (o << 24 | o >>> 8), s = 16711935 & (s << 8 | s >>> 24) | 4278255360 & (s << 24 | s >>> 8); + var a = e[n]; + a.high ^= s, a.low ^= o; + } + for (var c = 0; c < 24; c++) { + for (var d = 0; d < 5; d++) { + for (var v = 0, p = 0, _ = 0; _ < 5; _++) { + var a = e[d + 5 * _]; + v ^= a.high, p ^= a.low; + } + var y = u[d]; + y.high = v, y.low = p; + } + for (var d = 0; d < 5; d++) for (var g = u[(d + 4) % 5], B = u[(d + 1) % 5], w = B.high, k = B.low, v = g.high ^ (w << 1 | k >>> 31), p = g.low ^ (k << 1 | w >>> 31), _ = 0; _ < 5; _++) { + var a = e[d + 5 * _]; + a.high ^= v, a.low ^= p; + } + for (var S = 1; S < 25; S++) { + var a = e[S], + m = a.high, + x = a.low, + b = h[S]; + if (b < 32) var v = m << b | x >>> 32 - b, + p = x << b | m >>> 32 - b;else var v = x << b - 32 | m >>> 64 - b, + p = m << b - 32 | x >>> 64 - b; + var H = u[l[S]]; + H.high = v, H.low = p; + } + var z = u[0], + A = e[0]; + z.high = A.high, z.low = A.low; + for (var d = 0; d < 5; d++) for (var _ = 0; _ < 5; _++) { + var S = d + 5 * _, + a = e[S], + C = u[S], + D = u[(d + 1) % 5 + 5 * _], + R = u[(d + 2) % 5 + 5 * _]; + a.high = C.high ^ ~D.high & R.high, a.low = C.low ^ ~D.low & R.low; + } + var a = e[0], + E = f[c]; + a.high ^= E.high, a.low ^= E.low; + } + }, + _doFinalize: function _doFinalize() { + var t = this._data, + e = t.words, + i = (8 * this._nDataBytes, 8 * t.sigBytes), + o = 32 * this.blockSize; + e[i >>> 5] |= 1 << 24 - i % 32, e[(r.ceil((i + 1) / o) * o >>> 5) - 1] |= 128, t.sigBytes = 4 * e.length, this._process(); + for (var s = this._state, a = this.cfg.outputLength / 8, c = a / 8, h = [], l = 0; l < c; l++) { + var f = s[l], + u = f.high, + d = f.low; + u = 16711935 & (u << 8 | u >>> 24) | 4278255360 & (u << 24 | u >>> 8), d = 16711935 & (d << 8 | d >>> 24) | 4278255360 & (d << 24 | d >>> 8), h.push(d), h.push(u); + } + return new n.init(h, a); + }, + clone: function clone() { + for (var t = o.clone.call(this), r = t._state = this._state.slice(0), e = 0; e < 25; e++) r[e] = r[e].clone(); + return t; + } + }); + e.SHA3 = o._createHelper(d), e.HmacSHA3 = o._createHmacHelper(d); + }(Math), function () { + function r() { + return s.create.apply(s, arguments); + } + var e = t, + i = e.lib, + n = i.Hasher, + o = e.x64, + s = o.Word, + a = o.WordArray, + c = e.algo, + h = [r(1116352408, 3609767458), r(1899447441, 602891725), r(3049323471, 3964484399), r(3921009573, 2173295548), r(961987163, 4081628472), r(1508970993, 3053834265), r(2453635748, 2937671579), r(2870763221, 3664609560), r(3624381080, 2734883394), r(310598401, 1164996542), r(607225278, 1323610764), r(1426881987, 3590304994), r(1925078388, 4068182383), r(2162078206, 991336113), r(2614888103, 633803317), r(3248222580, 3479774868), r(3835390401, 2666613458), r(4022224774, 944711139), r(264347078, 2341262773), r(604807628, 2007800933), r(770255983, 1495990901), r(1249150122, 1856431235), r(1555081692, 3175218132), r(1996064986, 2198950837), r(2554220882, 3999719339), r(2821834349, 766784016), r(2952996808, 2566594879), r(3210313671, 3203337956), r(3336571891, 1034457026), r(3584528711, 2466948901), r(113926993, 3758326383), r(338241895, 168717936), r(666307205, 1188179964), r(773529912, 1546045734), r(1294757372, 1522805485), r(1396182291, 2643833823), r(1695183700, 2343527390), r(1986661051, 1014477480), r(2177026350, 1206759142), r(2456956037, 344077627), r(2730485921, 1290863460), r(2820302411, 3158454273), r(3259730800, 3505952657), r(3345764771, 106217008), r(3516065817, 3606008344), r(3600352804, 1432725776), r(4094571909, 1467031594), r(275423344, 851169720), r(430227734, 3100823752), r(506948616, 1363258195), r(659060556, 3750685593), r(883997877, 3785050280), r(958139571, 3318307427), r(1322822218, 3812723403), r(1537002063, 2003034995), r(1747873779, 3602036899), r(1955562222, 1575990012), r(2024104815, 1125592928), r(2227730452, 2716904306), r(2361852424, 442776044), r(2428436474, 593698344), r(2756734187, 3733110249), r(3204031479, 2999351573), r(3329325298, 3815920427), r(3391569614, 3928383900), r(3515267271, 566280711), r(3940187606, 3454069534), r(4118630271, 4000239992), r(116418474, 1914138554), r(174292421, 2731055270), r(289380356, 3203993006), r(460393269, 320620315), r(685471733, 587496836), r(852142971, 1086792851), r(1017036298, 365543100), r(1126000580, 2618297676), r(1288033470, 3409855158), r(1501505948, 4234509866), r(1607167915, 987167468), r(1816402316, 1246189591)], + l = []; + !function () { + for (var t = 0; t < 80; t++) l[t] = r(); + }(); + var f = c.SHA512 = n.extend({ + _doReset: function _doReset() { + this._hash = new a.init([new s.init(1779033703, 4089235720), new s.init(3144134277, 2227873595), new s.init(1013904242, 4271175723), new s.init(2773480762, 1595750129), new s.init(1359893119, 2917565137), new s.init(2600822924, 725511199), new s.init(528734635, 4215389547), new s.init(1541459225, 327033209)]); + }, + _doProcessBlock: function _doProcessBlock(t, r) { + for (var e = this._hash.words, i = e[0], n = e[1], o = e[2], s = e[3], a = e[4], c = e[5], f = e[6], u = e[7], d = i.high, v = i.low, p = n.high, _ = n.low, y = o.high, g = o.low, B = s.high, w = s.low, k = a.high, S = a.low, m = c.high, x = c.low, b = f.high, H = f.low, z = u.high, A = u.low, C = d, D = v, R = p, E = _, M = y, F = g, P = B, W = w, O = k, U = S, I = m, K = x, X = b, L = H, j = z, N = A, T = 0; T < 80; T++) { + var Z = l[T]; + if (T < 16) var q = Z.high = 0 | t[r + 2 * T], + G = Z.low = 0 | t[r + 2 * T + 1];else { + var J = l[T - 15], + $ = J.high, + Q = J.low, + V = ($ >>> 1 | Q << 31) ^ ($ >>> 8 | Q << 24) ^ $ >>> 7, + Y = (Q >>> 1 | $ << 31) ^ (Q >>> 8 | $ << 24) ^ (Q >>> 7 | $ << 25), + tt = l[T - 2], + rt = tt.high, + et = tt.low, + it = (rt >>> 19 | et << 13) ^ (rt << 3 | et >>> 29) ^ rt >>> 6, + nt = (et >>> 19 | rt << 13) ^ (et << 3 | rt >>> 29) ^ (et >>> 6 | rt << 26), + ot = l[T - 7], + st = ot.high, + at = ot.low, + ct = l[T - 16], + ht = ct.high, + lt = ct.low, + G = Y + at, + q = V + st + (G >>> 0 < Y >>> 0 ? 1 : 0), + G = G + nt, + q = q + it + (G >>> 0 < nt >>> 0 ? 1 : 0), + G = G + lt, + q = q + ht + (G >>> 0 < lt >>> 0 ? 1 : 0); + Z.high = q, Z.low = G; + } + var ft = O & I ^ ~O & X, + ut = U & K ^ ~U & L, + dt = C & R ^ C & M ^ R & M, + vt = D & E ^ D & F ^ E & F, + pt = (C >>> 28 | D << 4) ^ (C << 30 | D >>> 2) ^ (C << 25 | D >>> 7), + _t = (D >>> 28 | C << 4) ^ (D << 30 | C >>> 2) ^ (D << 25 | C >>> 7), + yt = (O >>> 14 | U << 18) ^ (O >>> 18 | U << 14) ^ (O << 23 | U >>> 9), + gt = (U >>> 14 | O << 18) ^ (U >>> 18 | O << 14) ^ (U << 23 | O >>> 9), + Bt = h[T], + wt = Bt.high, + kt = Bt.low, + St = N + gt, + mt = j + yt + (St >>> 0 < N >>> 0 ? 1 : 0), + St = St + ut, + mt = mt + ft + (St >>> 0 < ut >>> 0 ? 1 : 0), + St = St + kt, + mt = mt + wt + (St >>> 0 < kt >>> 0 ? 1 : 0), + St = St + G, + mt = mt + q + (St >>> 0 < G >>> 0 ? 1 : 0), + xt = _t + vt, + bt = pt + dt + (xt >>> 0 < _t >>> 0 ? 1 : 0); + j = X, N = L, X = I, L = K, I = O, K = U, U = W + St | 0, O = P + mt + (U >>> 0 < W >>> 0 ? 1 : 0) | 0, P = M, W = F, M = R, F = E, R = C, E = D, D = St + xt | 0, C = mt + bt + (D >>> 0 < St >>> 0 ? 1 : 0) | 0; + } + v = i.low = v + D, i.high = d + C + (v >>> 0 < D >>> 0 ? 1 : 0), _ = n.low = _ + E, n.high = p + R + (_ >>> 0 < E >>> 0 ? 1 : 0), g = o.low = g + F, o.high = y + M + (g >>> 0 < F >>> 0 ? 1 : 0), w = s.low = w + W, s.high = B + P + (w >>> 0 < W >>> 0 ? 1 : 0), S = a.low = S + U, a.high = k + O + (S >>> 0 < U >>> 0 ? 1 : 0), x = c.low = x + K, c.high = m + I + (x >>> 0 < K >>> 0 ? 1 : 0), H = f.low = H + L, f.high = b + X + (H >>> 0 < L >>> 0 ? 1 : 0), A = u.low = A + N, u.high = z + j + (A >>> 0 < N >>> 0 ? 1 : 0); + }, + _doFinalize: function _doFinalize() { + var t = this._data, + r = t.words, + e = 8 * this._nDataBytes, + i = 8 * t.sigBytes; + r[i >>> 5] |= 128 << 24 - i % 32, r[(i + 128 >>> 10 << 5) + 30] = Math.floor(e / 4294967296), r[(i + 128 >>> 10 << 5) + 31] = e, t.sigBytes = 4 * r.length, this._process(); + var n = this._hash.toX32(); + return n; + }, + clone: function clone() { + var t = n.clone.call(this); + return t._hash = this._hash.clone(), t; + }, + blockSize: 32 + }); + e.SHA512 = n._createHelper(f), e.HmacSHA512 = n._createHmacHelper(f); + }(), function () { + var r = t, + e = r.x64, + i = e.Word, + n = e.WordArray, + o = r.algo, + s = o.SHA512, + a = o.SHA384 = s.extend({ + _doReset: function _doReset() { + this._hash = new n.init([new i.init(3418070365, 3238371032), new i.init(1654270250, 914150663), new i.init(2438529370, 812702999), new i.init(355462360, 4144912697), new i.init(1731405415, 4290775857), new i.init(2394180231, 1750603025), new i.init(3675008525, 1694076839), new i.init(1203062813, 3204075428)]); + }, + _doFinalize: function _doFinalize() { + var t = s._doFinalize.call(this); + return t.sigBytes -= 16, t; + } + }); + r.SHA384 = s._createHelper(a), r.HmacSHA384 = s._createHmacHelper(a); + }(), t.lib.Cipher || function (r) { + var e = t, + i = e.lib, + n = i.Base, + o = i.WordArray, + s = i.BufferedBlockAlgorithm, + a = e.enc, + c = (a.Utf8, a.Base64), + h = e.algo, + l = h.EvpKDF, + f = i.Cipher = s.extend({ + cfg: n.extend(), + createEncryptor: function createEncryptor(t, r) { + return this.create(this._ENC_XFORM_MODE, t, r); + }, + createDecryptor: function createDecryptor(t, r) { + return this.create(this._DEC_XFORM_MODE, t, r); + }, + init: function init(t, r, e) { + this.cfg = this.cfg.extend(e), this._xformMode = t, this._key = r, this.reset(); + }, + reset: function reset() { + s.reset.call(this), this._doReset(); + }, + process: function process(t) { + return this._append(t), this._process(); + }, + finalize: function finalize(t) { + t && this._append(t); + var r = this._doFinalize(); + return r; + }, + keySize: 4, + ivSize: 4, + _ENC_XFORM_MODE: 1, + _DEC_XFORM_MODE: 2, + _createHelper: function () { + function t(t) { + return "string" == typeof t ? m : w; + } + return function (r) { + return { + encrypt: function encrypt(e, i, n) { + return t(i).encrypt(r, e, i, n); + }, + decrypt: function decrypt(e, i, n) { + return t(i).decrypt(r, e, i, n); + } + }; + }; + }() + }), + u = (i.StreamCipher = f.extend({ + _doFinalize: function _doFinalize() { + var t = this._process(!0); + return t; + }, + blockSize: 1 + }), e.mode = {}), + d = i.BlockCipherMode = n.extend({ + createEncryptor: function createEncryptor(t, r) { + return this.Encryptor.create(t, r); + }, + createDecryptor: function createDecryptor(t, r) { + return this.Decryptor.create(t, r); + }, + init: function init(t, r) { + this._cipher = t, this._iv = r; + } + }), + v = u.CBC = function () { + function t(t, e, i) { + var n = this._iv; + if (n) { + var o = n; + this._iv = r; + } else var o = this._prevBlock; + for (var s = 0; s < i; s++) t[e + s] ^= o[s]; + } + var e = d.extend(); + return e.Encryptor = e.extend({ + processBlock: function processBlock(r, e) { + var i = this._cipher, + n = i.blockSize; + t.call(this, r, e, n), i.encryptBlock(r, e), this._prevBlock = r.slice(e, e + n); + } + }), e.Decryptor = e.extend({ + processBlock: function processBlock(r, e) { + var i = this._cipher, + n = i.blockSize, + o = r.slice(e, e + n); + i.decryptBlock(r, e), t.call(this, r, e, n), this._prevBlock = o; + } + }), e; + }(), + p = e.pad = {}, + _ = p.Pkcs7 = { + pad: function pad(t, r) { + for (var e = 4 * r, i = e - t.sigBytes % e, n = i << 24 | i << 16 | i << 8 | i, s = [], a = 0; a < i; a += 4) s.push(n); + var c = o.create(s, i); + t.concat(c); + }, + unpad: function unpad(t) { + var r = 255 & t.words[t.sigBytes - 1 >>> 2]; + t.sigBytes -= r; + } + }, + y = (i.BlockCipher = f.extend({ + cfg: f.cfg.extend({ + mode: v, + padding: _ + }), + reset: function reset() { + f.reset.call(this); + var t = this.cfg, + r = t.iv, + e = t.mode; + if (this._xformMode == this._ENC_XFORM_MODE) var i = e.createEncryptor;else { + var i = e.createDecryptor; + this._minBufferSize = 1; + } + this._mode && this._mode.__creator == i ? this._mode.init(this, r && r.words) : (this._mode = i.call(e, this, r && r.words), this._mode.__creator = i); + }, + _doProcessBlock: function _doProcessBlock(t, r) { + this._mode.processBlock(t, r); + }, + _doFinalize: function _doFinalize() { + var t = this.cfg.padding; + if (this._xformMode == this._ENC_XFORM_MODE) { + t.pad(this._data, this.blockSize); + var r = this._process(!0); + } else { + var r = this._process(!0); + t.unpad(r); + } + return r; + }, + blockSize: 4 + }), i.CipherParams = n.extend({ + init: function init(t) { + this.mixIn(t); + }, + toString: function toString(t) { + return (t || this.formatter).stringify(this); + } + })), + g = e.format = {}, + B = g.OpenSSL = { + stringify: function stringify(t) { + var r = t.ciphertext, + e = t.salt; + if (e) var i = o.create([1398893684, 1701076831]).concat(e).concat(r);else var i = r; + return i.toString(c); + }, + parse: function parse(t) { + var r = c.parse(t), + e = r.words; + if (1398893684 == e[0] && 1701076831 == e[1]) { + var i = o.create(e.slice(2, 4)); + e.splice(0, 4), r.sigBytes -= 16; + } + return y.create({ + ciphertext: r, + salt: i + }); + } + }, + w = i.SerializableCipher = n.extend({ + cfg: n.extend({ + format: B + }), + encrypt: function encrypt(t, r, e, i) { + i = this.cfg.extend(i); + var n = t.createEncryptor(e, i), + o = n.finalize(r), + s = n.cfg; + return y.create({ + ciphertext: o, + key: e, + iv: s.iv, + algorithm: t, + mode: s.mode, + padding: s.padding, + blockSize: t.blockSize, + formatter: i.format + }); + }, + decrypt: function decrypt(t, r, e, i) { + i = this.cfg.extend(i), r = this._parse(r, i.format); + var n = t.createDecryptor(e, i).finalize(r.ciphertext); + return n; + }, + _parse: function _parse(t, r) { + return "string" == typeof t ? r.parse(t, this) : t; + } + }), + k = e.kdf = {}, + S = k.OpenSSL = { + execute: function execute(t, r, e, i) { + i || (i = o.random(8)); + var n = l.create({ + keySize: r + e + }).compute(t, i), + s = o.create(n.words.slice(r), 4 * e); + return n.sigBytes = 4 * r, y.create({ + key: n, + iv: s, + salt: i + }); + } + }, + m = i.PasswordBasedCipher = w.extend({ + cfg: w.cfg.extend({ + kdf: S + }), + encrypt: function encrypt(t, r, e, i) { + i = this.cfg.extend(i); + var n = i.kdf.execute(e, t.keySize, t.ivSize); + i.iv = n.iv; + var o = w.encrypt.call(this, t, r, n.key, i); + return o.mixIn(n), o; + }, + decrypt: function decrypt(t, r, e, i) { + i = this.cfg.extend(i), r = this._parse(r, i.format); + var n = i.kdf.execute(e, t.keySize, t.ivSize, r.salt); + i.iv = n.iv; + var o = w.decrypt.call(this, t, r, n.key, i); + return o; + } + }); + }(), t.mode.CFB = function () { + function r(t, r, e, i) { + var n = this._iv; + if (n) { + var o = n.slice(0); + this._iv = void 0; + } else var o = this._prevBlock; + i.encryptBlock(o, 0); + for (var s = 0; s < e; s++) t[r + s] ^= o[s]; + } + var e = t.lib.BlockCipherMode.extend(); + return e.Encryptor = e.extend({ + processBlock: function processBlock(t, e) { + var i = this._cipher, + n = i.blockSize; + r.call(this, t, e, n, i), this._prevBlock = t.slice(e, e + n); + } + }), e.Decryptor = e.extend({ + processBlock: function processBlock(t, e) { + var i = this._cipher, + n = i.blockSize, + o = t.slice(e, e + n); + r.call(this, t, e, n, i), this._prevBlock = o; + } + }), e; + }(), t.mode.ECB = function () { + var r = t.lib.BlockCipherMode.extend(); + return r.Encryptor = r.extend({ + processBlock: function processBlock(t, r) { + this._cipher.encryptBlock(t, r); + } + }), r.Decryptor = r.extend({ + processBlock: function processBlock(t, r) { + this._cipher.decryptBlock(t, r); + } + }), r; + }(), t.pad.AnsiX923 = { + pad: function pad(t, r) { + var e = t.sigBytes, + i = 4 * r, + n = i - e % i, + o = e + n - 1; + t.clamp(), t.words[o >>> 2] |= n << 24 - o % 4 * 8, t.sigBytes += n; + }, + unpad: function unpad(t) { + var r = 255 & t.words[t.sigBytes - 1 >>> 2]; + t.sigBytes -= r; + } + }, t.pad.Iso10126 = { + pad: function pad(r, e) { + var i = 4 * e, + n = i - r.sigBytes % i; + r.concat(t.lib.WordArray.random(n - 1)).concat(t.lib.WordArray.create([n << 24], 1)); + }, + unpad: function unpad(t) { + var r = 255 & t.words[t.sigBytes - 1 >>> 2]; + t.sigBytes -= r; + } + }, t.pad.Iso97971 = { + pad: function pad(r, e) { + r.concat(t.lib.WordArray.create([2147483648], 1)), t.pad.ZeroPadding.pad(r, e); + }, + unpad: function unpad(r) { + t.pad.ZeroPadding.unpad(r), r.sigBytes--; + } + }, t.mode.OFB = function () { + var r = t.lib.BlockCipherMode.extend(), + e = r.Encryptor = r.extend({ + processBlock: function processBlock(t, r) { + var e = this._cipher, + i = e.blockSize, + n = this._iv, + o = this._keystream; + n && (o = this._keystream = n.slice(0), this._iv = void 0), e.encryptBlock(o, 0); + for (var s = 0; s < i; s++) t[r + s] ^= o[s]; + } + }); + return r.Decryptor = e, r; + }(), t.pad.NoPadding = { + pad: function pad() {}, + unpad: function unpad() {} + }, function (r) { + var e = t, + i = e.lib, + n = i.CipherParams, + o = e.enc, + s = o.Hex, + a = e.format; + a.Hex = { + stringify: function stringify(t) { + return t.ciphertext.toString(s); + }, + parse: function parse(t) { + var r = s.parse(t); + return n.create({ + ciphertext: r + }); + } + }; + }(), function () { + var r = t, + e = r.lib, + i = e.BlockCipher, + n = r.algo, + o = [], + s = [], + a = [], + c = [], + h = [], + l = [], + f = [], + u = [], + d = [], + v = []; + !function () { + for (var t = [], r = 0; r < 256; r++) r < 128 ? t[r] = r << 1 : t[r] = r << 1 ^ 283; + for (var e = 0, i = 0, r = 0; r < 256; r++) { + var n = i ^ i << 1 ^ i << 2 ^ i << 3 ^ i << 4; + n = n >>> 8 ^ 255 & n ^ 99, o[e] = n, s[n] = e; + var p = t[e], + _ = t[p], + y = t[_], + g = 257 * t[n] ^ 16843008 * n; + a[e] = g << 24 | g >>> 8, c[e] = g << 16 | g >>> 16, h[e] = g << 8 | g >>> 24, l[e] = g; + var g = 16843009 * y ^ 65537 * _ ^ 257 * p ^ 16843008 * e; + f[n] = g << 24 | g >>> 8, u[n] = g << 16 | g >>> 16, d[n] = g << 8 | g >>> 24, v[n] = g, e ? (e = p ^ t[t[t[y ^ p]]], i ^= t[t[i]]) : e = i = 1; + } + }(); + var p = [0, 1, 2, 4, 8, 16, 32, 64, 128, 27, 54], + _ = n.AES = i.extend({ + _doReset: function _doReset() { + if (!this._nRounds || this._keyPriorReset !== this._key) { + for (var t = this._keyPriorReset = this._key, r = t.words, e = t.sigBytes / 4, i = this._nRounds = e + 6, n = 4 * (i + 1), s = this._keySchedule = [], a = 0; a < n; a++) if (a < e) s[a] = r[a];else { + var c = s[a - 1]; + a % e ? e > 6 && a % e == 4 && (c = o[c >>> 24] << 24 | o[c >>> 16 & 255] << 16 | o[c >>> 8 & 255] << 8 | o[255 & c]) : (c = c << 8 | c >>> 24, c = o[c >>> 24] << 24 | o[c >>> 16 & 255] << 16 | o[c >>> 8 & 255] << 8 | o[255 & c], c ^= p[a / e | 0] << 24), s[a] = s[a - e] ^ c; + } + for (var h = this._invKeySchedule = [], l = 0; l < n; l++) { + var a = n - l; + if (l % 4) var c = s[a];else var c = s[a - 4]; + l < 4 || a <= 4 ? h[l] = c : h[l] = f[o[c >>> 24]] ^ u[o[c >>> 16 & 255]] ^ d[o[c >>> 8 & 255]] ^ v[o[255 & c]]; + } + } + }, + encryptBlock: function encryptBlock(t, r) { + this._doCryptBlock(t, r, this._keySchedule, a, c, h, l, o); + }, + decryptBlock: function decryptBlock(t, r) { + var e = t[r + 1]; + t[r + 1] = t[r + 3], t[r + 3] = e, this._doCryptBlock(t, r, this._invKeySchedule, f, u, d, v, s); + var e = t[r + 1]; + t[r + 1] = t[r + 3], t[r + 3] = e; + }, + _doCryptBlock: function _doCryptBlock(t, r, e, i, n, o, s, a) { + for (var c = this._nRounds, h = t[r] ^ e[0], l = t[r + 1] ^ e[1], f = t[r + 2] ^ e[2], u = t[r + 3] ^ e[3], d = 4, v = 1; v < c; v++) { + var p = i[h >>> 24] ^ n[l >>> 16 & 255] ^ o[f >>> 8 & 255] ^ s[255 & u] ^ e[d++], + _ = i[l >>> 24] ^ n[f >>> 16 & 255] ^ o[u >>> 8 & 255] ^ s[255 & h] ^ e[d++], + y = i[f >>> 24] ^ n[u >>> 16 & 255] ^ o[h >>> 8 & 255] ^ s[255 & l] ^ e[d++], + g = i[u >>> 24] ^ n[h >>> 16 & 255] ^ o[l >>> 8 & 255] ^ s[255 & f] ^ e[d++]; + h = p, l = _, f = y, u = g; + } + var p = (a[h >>> 24] << 24 | a[l >>> 16 & 255] << 16 | a[f >>> 8 & 255] << 8 | a[255 & u]) ^ e[d++], + _ = (a[l >>> 24] << 24 | a[f >>> 16 & 255] << 16 | a[u >>> 8 & 255] << 8 | a[255 & h]) ^ e[d++], + y = (a[f >>> 24] << 24 | a[u >>> 16 & 255] << 16 | a[h >>> 8 & 255] << 8 | a[255 & l]) ^ e[d++], + g = (a[u >>> 24] << 24 | a[h >>> 16 & 255] << 16 | a[l >>> 8 & 255] << 8 | a[255 & f]) ^ e[d++]; + t[r] = p, t[r + 1] = _, t[r + 2] = y, t[r + 3] = g; + }, + keySize: 8 + }); + r.AES = i._createHelper(_); + }(), function () { + function r(t, r) { + var e = (this._lBlock >>> t ^ this._rBlock) & r; + this._rBlock ^= e, this._lBlock ^= e << t; + } + function e(t, r) { + var e = (this._rBlock >>> t ^ this._lBlock) & r; + this._lBlock ^= e, this._rBlock ^= e << t; + } + var i = t, + n = i.lib, + o = n.WordArray, + s = n.BlockCipher, + a = i.algo, + c = [57, 49, 41, 33, 25, 17, 9, 1, 58, 50, 42, 34, 26, 18, 10, 2, 59, 51, 43, 35, 27, 19, 11, 3, 60, 52, 44, 36, 63, 55, 47, 39, 31, 23, 15, 7, 62, 54, 46, 38, 30, 22, 14, 6, 61, 53, 45, 37, 29, 21, 13, 5, 28, 20, 12, 4], + h = [14, 17, 11, 24, 1, 5, 3, 28, 15, 6, 21, 10, 23, 19, 12, 4, 26, 8, 16, 7, 27, 20, 13, 2, 41, 52, 31, 37, 47, 55, 30, 40, 51, 45, 33, 48, 44, 49, 39, 56, 34, 53, 46, 42, 50, 36, 29, 32], + l = [1, 2, 4, 6, 8, 10, 12, 14, 15, 17, 19, 21, 23, 25, 27, 28], + f = [{ + 0: 8421888, + 268435456: 32768, + 536870912: 8421378, + 805306368: 2, + 1073741824: 512, + 1342177280: 8421890, + 1610612736: 8389122, + 1879048192: 8388608, + 2147483648: 514, + 2415919104: 8389120, + 2684354560: 33280, + 2952790016: 8421376, + 3221225472: 32770, + 3489660928: 8388610, + 3758096384: 0, + 4026531840: 33282, + 134217728: 0, + 402653184: 8421890, + 671088640: 33282, + 939524096: 32768, + 1207959552: 8421888, + 1476395008: 512, + 1744830464: 8421378, + 2013265920: 2, + 2281701376: 8389120, + 2550136832: 33280, + 2818572288: 8421376, + 3087007744: 8389122, + 3355443200: 8388610, + 3623878656: 32770, + 3892314112: 514, + 4160749568: 8388608, + 1: 32768, + 268435457: 2, + 536870913: 8421888, + 805306369: 8388608, + 1073741825: 8421378, + 1342177281: 33280, + 1610612737: 512, + 1879048193: 8389122, + 2147483649: 8421890, + 2415919105: 8421376, + 2684354561: 8388610, + 2952790017: 33282, + 3221225473: 514, + 3489660929: 8389120, + 3758096385: 32770, + 4026531841: 0, + 134217729: 8421890, + 402653185: 8421376, + 671088641: 8388608, + 939524097: 512, + 1207959553: 32768, + 1476395009: 8388610, + 1744830465: 2, + 2013265921: 33282, + 2281701377: 32770, + 2550136833: 8389122, + 2818572289: 514, + 3087007745: 8421888, + 3355443201: 8389120, + 3623878657: 0, + 3892314113: 33280, + 4160749569: 8421378 + }, { + 0: 1074282512, + 16777216: 16384, + 33554432: 524288, + 50331648: 1074266128, + 67108864: 1073741840, + 83886080: 1074282496, + 100663296: 1073758208, + 117440512: 16, + 134217728: 540672, + 150994944: 1073758224, + 167772160: 1073741824, + 184549376: 540688, + 201326592: 524304, + 218103808: 0, + 234881024: 16400, + 251658240: 1074266112, + 8388608: 1073758208, + 25165824: 540688, + 41943040: 16, + 58720256: 1073758224, + 75497472: 1074282512, + 92274688: 1073741824, + 109051904: 524288, + 125829120: 1074266128, + 142606336: 524304, + 159383552: 0, + 176160768: 16384, + 192937984: 1074266112, + 209715200: 1073741840, + 226492416: 540672, + 243269632: 1074282496, + 260046848: 16400, + 268435456: 0, + 285212672: 1074266128, + 301989888: 1073758224, + 318767104: 1074282496, + 335544320: 1074266112, + 352321536: 16, + 369098752: 540688, + 385875968: 16384, + 402653184: 16400, + 419430400: 524288, + 436207616: 524304, + 452984832: 1073741840, + 469762048: 540672, + 486539264: 1073758208, + 503316480: 1073741824, + 520093696: 1074282512, + 276824064: 540688, + 293601280: 524288, + 310378496: 1074266112, + 327155712: 16384, + 343932928: 1073758208, + 360710144: 1074282512, + 377487360: 16, + 394264576: 1073741824, + 411041792: 1074282496, + 427819008: 1073741840, + 444596224: 1073758224, + 461373440: 524304, + 478150656: 0, + 494927872: 16400, + 511705088: 1074266128, + 528482304: 540672 + }, { + 0: 260, + 1048576: 0, + 2097152: 67109120, + 3145728: 65796, + 4194304: 65540, + 5242880: 67108868, + 6291456: 67174660, + 7340032: 67174400, + 8388608: 67108864, + 9437184: 67174656, + 10485760: 65792, + 11534336: 67174404, + 12582912: 67109124, + 13631488: 65536, + 14680064: 4, + 15728640: 256, + 524288: 67174656, + 1572864: 67174404, + 2621440: 0, + 3670016: 67109120, + 4718592: 67108868, + 5767168: 65536, + 6815744: 65540, + 7864320: 260, + 8912896: 4, + 9961472: 256, + 11010048: 67174400, + 12058624: 65796, + 13107200: 65792, + 14155776: 67109124, + 15204352: 67174660, + 16252928: 67108864, + 16777216: 67174656, + 17825792: 65540, + 18874368: 65536, + 19922944: 67109120, + 20971520: 256, + 22020096: 67174660, + 23068672: 67108868, + 24117248: 0, + 25165824: 67109124, + 26214400: 67108864, + 27262976: 4, + 28311552: 65792, + 29360128: 67174400, + 30408704: 260, + 31457280: 65796, + 32505856: 67174404, + 17301504: 67108864, + 18350080: 260, + 19398656: 67174656, + 20447232: 0, + 21495808: 65540, + 22544384: 67109120, + 23592960: 256, + 24641536: 67174404, + 25690112: 65536, + 26738688: 67174660, + 27787264: 65796, + 28835840: 67108868, + 29884416: 67109124, + 30932992: 67174400, + 31981568: 4, + 33030144: 65792 + }, { + 0: 2151682048, + 65536: 2147487808, + 131072: 4198464, + 196608: 2151677952, + 262144: 0, + 327680: 4198400, + 393216: 2147483712, + 458752: 4194368, + 524288: 2147483648, + 589824: 4194304, + 655360: 64, + 720896: 2147487744, + 786432: 2151678016, + 851968: 4160, + 917504: 4096, + 983040: 2151682112, + 32768: 2147487808, + 98304: 64, + 163840: 2151678016, + 229376: 2147487744, + 294912: 4198400, + 360448: 2151682112, + 425984: 0, + 491520: 2151677952, + 557056: 4096, + 622592: 2151682048, + 688128: 4194304, + 753664: 4160, + 819200: 2147483648, + 884736: 4194368, + 950272: 4198464, + 1015808: 2147483712, + 1048576: 4194368, + 1114112: 4198400, + 1179648: 2147483712, + 1245184: 0, + 1310720: 4160, + 1376256: 2151678016, + 1441792: 2151682048, + 1507328: 2147487808, + 1572864: 2151682112, + 1638400: 2147483648, + 1703936: 2151677952, + 1769472: 4198464, + 1835008: 2147487744, + 1900544: 4194304, + 1966080: 64, + 2031616: 4096, + 1081344: 2151677952, + 1146880: 2151682112, + 1212416: 0, + 1277952: 4198400, + 1343488: 4194368, + 1409024: 2147483648, + 1474560: 2147487808, + 1540096: 64, + 1605632: 2147483712, + 1671168: 4096, + 1736704: 2147487744, + 1802240: 2151678016, + 1867776: 4160, + 1933312: 2151682048, + 1998848: 4194304, + 2064384: 4198464 + }, { + 0: 128, + 4096: 17039360, + 8192: 262144, + 12288: 536870912, + 16384: 537133184, + 20480: 16777344, + 24576: 553648256, + 28672: 262272, + 32768: 16777216, + 36864: 537133056, + 40960: 536871040, + 45056: 553910400, + 49152: 553910272, + 53248: 0, + 57344: 17039488, + 61440: 553648128, + 2048: 17039488, + 6144: 553648256, + 10240: 128, + 14336: 17039360, + 18432: 262144, + 22528: 537133184, + 26624: 553910272, + 30720: 536870912, + 34816: 537133056, + 38912: 0, + 43008: 553910400, + 47104: 16777344, + 51200: 536871040, + 55296: 553648128, + 59392: 16777216, + 63488: 262272, + 65536: 262144, + 69632: 128, + 73728: 536870912, + 77824: 553648256, + 81920: 16777344, + 86016: 553910272, + 90112: 537133184, + 94208: 16777216, + 98304: 553910400, + 102400: 553648128, + 106496: 17039360, + 110592: 537133056, + 114688: 262272, + 118784: 536871040, + 122880: 0, + 126976: 17039488, + 67584: 553648256, + 71680: 16777216, + 75776: 17039360, + 79872: 537133184, + 83968: 536870912, + 88064: 17039488, + 92160: 128, + 96256: 553910272, + 100352: 262272, + 104448: 553910400, + 108544: 0, + 112640: 553648128, + 116736: 16777344, + 120832: 262144, + 124928: 537133056, + 129024: 536871040 + }, { + 0: 268435464, + 256: 8192, + 512: 270532608, + 768: 270540808, + 1024: 268443648, + 1280: 2097152, + 1536: 2097160, + 1792: 268435456, + 2048: 0, + 2304: 268443656, + 2560: 2105344, + 2816: 8, + 3072: 270532616, + 3328: 2105352, + 3584: 8200, + 3840: 270540800, + 128: 270532608, + 384: 270540808, + 640: 8, + 896: 2097152, + 1152: 2105352, + 1408: 268435464, + 1664: 268443648, + 1920: 8200, + 2176: 2097160, + 2432: 8192, + 2688: 268443656, + 2944: 270532616, + 3200: 0, + 3456: 270540800, + 3712: 2105344, + 3968: 268435456, + 4096: 268443648, + 4352: 270532616, + 4608: 270540808, + 4864: 8200, + 5120: 2097152, + 5376: 268435456, + 5632: 268435464, + 5888: 2105344, + 6144: 2105352, + 6400: 0, + 6656: 8, + 6912: 270532608, + 7168: 8192, + 7424: 268443656, + 7680: 270540800, + 7936: 2097160, + 4224: 8, + 4480: 2105344, + 4736: 2097152, + 4992: 268435464, + 5248: 268443648, + 5504: 8200, + 5760: 270540808, + 6016: 270532608, + 6272: 270540800, + 6528: 270532616, + 6784: 8192, + 7040: 2105352, + 7296: 2097160, + 7552: 0, + 7808: 268435456, + 8064: 268443656 + }, { + 0: 1048576, + 16: 33555457, + 32: 1024, + 48: 1049601, + 64: 34604033, + 80: 0, + 96: 1, + 112: 34603009, + 128: 33555456, + 144: 1048577, + 160: 33554433, + 176: 34604032, + 192: 34603008, + 208: 1025, + 224: 1049600, + 240: 33554432, + 8: 34603009, + 24: 0, + 40: 33555457, + 56: 34604032, + 72: 1048576, + 88: 33554433, + 104: 33554432, + 120: 1025, + 136: 1049601, + 152: 33555456, + 168: 34603008, + 184: 1048577, + 200: 1024, + 216: 34604033, + 232: 1, + 248: 1049600, + 256: 33554432, + 272: 1048576, + 288: 33555457, + 304: 34603009, + 320: 1048577, + 336: 33555456, + 352: 34604032, + 368: 1049601, + 384: 1025, + 400: 34604033, + 416: 1049600, + 432: 1, + 448: 0, + 464: 34603008, + 480: 33554433, + 496: 1024, + 264: 1049600, + 280: 33555457, + 296: 34603009, + 312: 1, + 328: 33554432, + 344: 1048576, + 360: 1025, + 376: 34604032, + 392: 33554433, + 408: 34603008, + 424: 0, + 440: 34604033, + 456: 1049601, + 472: 1024, + 488: 33555456, + 504: 1048577 + }, { + 0: 134219808, + 1: 131072, + 2: 134217728, + 3: 32, + 4: 131104, + 5: 134350880, + 6: 134350848, + 7: 2048, + 8: 134348800, + 9: 134219776, + 10: 133120, + 11: 134348832, + 12: 2080, + 13: 0, + 14: 134217760, + 15: 133152, + 2147483648: 2048, + 2147483649: 134350880, + 2147483650: 134219808, + 2147483651: 134217728, + 2147483652: 134348800, + 2147483653: 133120, + 2147483654: 133152, + 2147483655: 32, + 2147483656: 134217760, + 2147483657: 2080, + 2147483658: 131104, + 2147483659: 134350848, + 2147483660: 0, + 2147483661: 134348832, + 2147483662: 134219776, + 2147483663: 131072, + 16: 133152, + 17: 134350848, + 18: 32, + 19: 2048, + 20: 134219776, + 21: 134217760, + 22: 134348832, + 23: 131072, + 24: 0, + 25: 131104, + 26: 134348800, + 27: 134219808, + 28: 134350880, + 29: 133120, + 30: 2080, + 31: 134217728, + 2147483664: 131072, + 2147483665: 2048, + 2147483666: 134348832, + 2147483667: 133152, + 2147483668: 32, + 2147483669: 134348800, + 2147483670: 134217728, + 2147483671: 134219808, + 2147483672: 134350880, + 2147483673: 134217760, + 2147483674: 134219776, + 2147483675: 0, + 2147483676: 133120, + 2147483677: 2080, + 2147483678: 131104, + 2147483679: 134350848 + }], + u = [4160749569, 528482304, 33030144, 2064384, 129024, 8064, 504, 2147483679], + d = a.DES = s.extend({ + _doReset: function _doReset() { + for (var t = this._key, r = t.words, e = [], i = 0; i < 56; i++) { + var n = c[i] - 1; + e[i] = r[n >>> 5] >>> 31 - n % 32 & 1; + } + for (var o = this._subKeys = [], s = 0; s < 16; s++) { + for (var a = o[s] = [], f = l[s], i = 0; i < 24; i++) a[i / 6 | 0] |= e[(h[i] - 1 + f) % 28] << 31 - i % 6, a[4 + (i / 6 | 0)] |= e[28 + (h[i + 24] - 1 + f) % 28] << 31 - i % 6; + a[0] = a[0] << 1 | a[0] >>> 31; + for (var i = 1; i < 7; i++) a[i] = a[i] >>> 4 * (i - 1) + 3; + a[7] = a[7] << 5 | a[7] >>> 27; + } + for (var u = this._invSubKeys = [], i = 0; i < 16; i++) u[i] = o[15 - i]; + }, + encryptBlock: function encryptBlock(t, r) { + this._doCryptBlock(t, r, this._subKeys); + }, + decryptBlock: function decryptBlock(t, r) { + this._doCryptBlock(t, r, this._invSubKeys); + }, + _doCryptBlock: function _doCryptBlock(t, i, n) { + this._lBlock = t[i], this._rBlock = t[i + 1], r.call(this, 4, 252645135), r.call(this, 16, 65535), e.call(this, 2, 858993459), e.call(this, 8, 16711935), r.call(this, 1, 1431655765); + for (var o = 0; o < 16; o++) { + for (var s = n[o], a = this._lBlock, c = this._rBlock, h = 0, l = 0; l < 8; l++) h |= f[l][((c ^ s[l]) & u[l]) >>> 0]; + this._lBlock = c, this._rBlock = a ^ h; + } + var d = this._lBlock; + this._lBlock = this._rBlock, this._rBlock = d, r.call(this, 1, 1431655765), e.call(this, 8, 16711935), e.call(this, 2, 858993459), r.call(this, 16, 65535), r.call(this, 4, 252645135), t[i] = this._lBlock, t[i + 1] = this._rBlock; + }, + keySize: 2, + ivSize: 2, + blockSize: 2 + }); + i.DES = s._createHelper(d); + var v = a.TripleDES = s.extend({ + _doReset: function _doReset() { + var t = this._key, + r = t.words; + this._des1 = d.createEncryptor(o.create(r.slice(0, 2))), this._des2 = d.createEncryptor(o.create(r.slice(2, 4))), this._des3 = d.createEncryptor(o.create(r.slice(4, 6))); + }, + encryptBlock: function encryptBlock(t, r) { + this._des1.encryptBlock(t, r), this._des2.decryptBlock(t, r), this._des3.encryptBlock(t, r); + }, + decryptBlock: function decryptBlock(t, r) { + this._des3.decryptBlock(t, r), this._des2.encryptBlock(t, r), this._des1.decryptBlock(t, r); + }, + keySize: 6, + ivSize: 2, + blockSize: 2 + }); + i.TripleDES = s._createHelper(v); + }(), function () { + function r() { + for (var t = this._S, r = this._i, e = this._j, i = 0, n = 0; n < 4; n++) { + r = (r + 1) % 256, e = (e + t[r]) % 256; + var o = t[r]; + t[r] = t[e], t[e] = o, i |= t[(t[r] + t[e]) % 256] << 24 - 8 * n; + } + return this._i = r, this._j = e, i; + } + var e = t, + i = e.lib, + n = i.StreamCipher, + o = e.algo, + s = o.RC4 = n.extend({ + _doReset: function _doReset() { + for (var t = this._key, r = t.words, e = t.sigBytes, i = this._S = [], n = 0; n < 256; n++) i[n] = n; + for (var n = 0, o = 0; n < 256; n++) { + var s = n % e, + a = r[s >>> 2] >>> 24 - s % 4 * 8 & 255; + o = (o + i[n] + a) % 256; + var c = i[n]; + i[n] = i[o], i[o] = c; + } + this._i = this._j = 0; + }, + _doProcessBlock: function _doProcessBlock(t, e) { + t[e] ^= r.call(this); + }, + keySize: 8, + ivSize: 0 + }); + e.RC4 = n._createHelper(s); + var a = o.RC4Drop = s.extend({ + cfg: s.cfg.extend({ + drop: 192 + }), + _doReset: function _doReset() { + s._doReset.call(this); + for (var t = this.cfg.drop; t > 0; t--) r.call(this); + } + }); + e.RC4Drop = n._createHelper(a); + }(), t.mode.CTRGladman = function () { + function r(t) { + if (255 === (t >> 24 & 255)) { + var r = t >> 16 & 255, + e = t >> 8 & 255, + i = 255 & t; + 255 === r ? (r = 0, 255 === e ? (e = 0, 255 === i ? i = 0 : ++i) : ++e) : ++r, t = 0, t += r << 16, t += e << 8, t += i; + } else t += 1 << 24; + return t; + } + function e(t) { + return 0 === (t[0] = r(t[0])) && (t[1] = r(t[1])), t; + } + var i = t.lib.BlockCipherMode.extend(), + n = i.Encryptor = i.extend({ + processBlock: function processBlock(t, r) { + var i = this._cipher, + n = i.blockSize, + o = this._iv, + s = this._counter; + o && (s = this._counter = o.slice(0), this._iv = void 0), e(s); + var a = s.slice(0); + i.encryptBlock(a, 0); + for (var c = 0; c < n; c++) t[r + c] ^= a[c]; + } + }); + return i.Decryptor = n, i; + }(), function () { + function r() { + for (var t = this._X, r = this._C, e = 0; e < 8; e++) a[e] = r[e]; + r[0] = r[0] + 1295307597 + this._b | 0, r[1] = r[1] + 3545052371 + (r[0] >>> 0 < a[0] >>> 0 ? 1 : 0) | 0, r[2] = r[2] + 886263092 + (r[1] >>> 0 < a[1] >>> 0 ? 1 : 0) | 0, r[3] = r[3] + 1295307597 + (r[2] >>> 0 < a[2] >>> 0 ? 1 : 0) | 0, r[4] = r[4] + 3545052371 + (r[3] >>> 0 < a[3] >>> 0 ? 1 : 0) | 0, r[5] = r[5] + 886263092 + (r[4] >>> 0 < a[4] >>> 0 ? 1 : 0) | 0, r[6] = r[6] + 1295307597 + (r[5] >>> 0 < a[5] >>> 0 ? 1 : 0) | 0, r[7] = r[7] + 3545052371 + (r[6] >>> 0 < a[6] >>> 0 ? 1 : 0) | 0, this._b = r[7] >>> 0 < a[7] >>> 0 ? 1 : 0; + for (var e = 0; e < 8; e++) { + var i = t[e] + r[e], + n = 65535 & i, + o = i >>> 16, + s = ((n * n >>> 17) + n * o >>> 15) + o * o, + h = ((4294901760 & i) * i | 0) + ((65535 & i) * i | 0); + c[e] = s ^ h; + } + t[0] = c[0] + (c[7] << 16 | c[7] >>> 16) + (c[6] << 16 | c[6] >>> 16) | 0, t[1] = c[1] + (c[0] << 8 | c[0] >>> 24) + c[7] | 0, t[2] = c[2] + (c[1] << 16 | c[1] >>> 16) + (c[0] << 16 | c[0] >>> 16) | 0, t[3] = c[3] + (c[2] << 8 | c[2] >>> 24) + c[1] | 0, t[4] = c[4] + (c[3] << 16 | c[3] >>> 16) + (c[2] << 16 | c[2] >>> 16) | 0, t[5] = c[5] + (c[4] << 8 | c[4] >>> 24) + c[3] | 0, t[6] = c[6] + (c[5] << 16 | c[5] >>> 16) + (c[4] << 16 | c[4] >>> 16) | 0, t[7] = c[7] + (c[6] << 8 | c[6] >>> 24) + c[5] | 0; + } + var e = t, + i = e.lib, + n = i.StreamCipher, + o = e.algo, + s = [], + a = [], + c = [], + h = o.Rabbit = n.extend({ + _doReset: function _doReset() { + for (var t = this._key.words, e = this.cfg.iv, i = 0; i < 4; i++) t[i] = 16711935 & (t[i] << 8 | t[i] >>> 24) | 4278255360 & (t[i] << 24 | t[i] >>> 8); + var n = this._X = [t[0], t[3] << 16 | t[2] >>> 16, t[1], t[0] << 16 | t[3] >>> 16, t[2], t[1] << 16 | t[0] >>> 16, t[3], t[2] << 16 | t[1] >>> 16], + o = this._C = [t[2] << 16 | t[2] >>> 16, 4294901760 & t[0] | 65535 & t[1], t[3] << 16 | t[3] >>> 16, 4294901760 & t[1] | 65535 & t[2], t[0] << 16 | t[0] >>> 16, 4294901760 & t[2] | 65535 & t[3], t[1] << 16 | t[1] >>> 16, 4294901760 & t[3] | 65535 & t[0]]; + this._b = 0; + for (var i = 0; i < 4; i++) r.call(this); + for (var i = 0; i < 8; i++) o[i] ^= n[i + 4 & 7]; + if (e) { + var s = e.words, + a = s[0], + c = s[1], + h = 16711935 & (a << 8 | a >>> 24) | 4278255360 & (a << 24 | a >>> 8), + l = 16711935 & (c << 8 | c >>> 24) | 4278255360 & (c << 24 | c >>> 8), + f = h >>> 16 | 4294901760 & l, + u = l << 16 | 65535 & h; + o[0] ^= h, o[1] ^= f, o[2] ^= l, o[3] ^= u, o[4] ^= h, o[5] ^= f, o[6] ^= l, o[7] ^= u; + for (var i = 0; i < 4; i++) r.call(this); + } + }, + _doProcessBlock: function _doProcessBlock(t, e) { + var i = this._X; + r.call(this), s[0] = i[0] ^ i[5] >>> 16 ^ i[3] << 16, s[1] = i[2] ^ i[7] >>> 16 ^ i[5] << 16, s[2] = i[4] ^ i[1] >>> 16 ^ i[7] << 16, s[3] = i[6] ^ i[3] >>> 16 ^ i[1] << 16; + for (var n = 0; n < 4; n++) s[n] = 16711935 & (s[n] << 8 | s[n] >>> 24) | 4278255360 & (s[n] << 24 | s[n] >>> 8), t[e + n] ^= s[n]; + }, + blockSize: 4, + ivSize: 2 + }); + e.Rabbit = n._createHelper(h); + }(), t.mode.CTR = function () { + var r = t.lib.BlockCipherMode.extend(), + e = r.Encryptor = r.extend({ + processBlock: function processBlock(t, r) { + var e = this._cipher, + i = e.blockSize, + n = this._iv, + o = this._counter; + n && (o = this._counter = n.slice(0), this._iv = void 0); + var s = o.slice(0); + e.encryptBlock(s, 0), o[i - 1] = o[i - 1] + 1 | 0; + for (var a = 0; a < i; a++) t[r + a] ^= s[a]; + } + }); + return r.Decryptor = e, r; + }(), function () { + function r() { + for (var t = this._X, r = this._C, e = 0; e < 8; e++) a[e] = r[e]; + r[0] = r[0] + 1295307597 + this._b | 0, r[1] = r[1] + 3545052371 + (r[0] >>> 0 < a[0] >>> 0 ? 1 : 0) | 0, r[2] = r[2] + 886263092 + (r[1] >>> 0 < a[1] >>> 0 ? 1 : 0) | 0, r[3] = r[3] + 1295307597 + (r[2] >>> 0 < a[2] >>> 0 ? 1 : 0) | 0, r[4] = r[4] + 3545052371 + (r[3] >>> 0 < a[3] >>> 0 ? 1 : 0) | 0, r[5] = r[5] + 886263092 + (r[4] >>> 0 < a[4] >>> 0 ? 1 : 0) | 0, r[6] = r[6] + 1295307597 + (r[5] >>> 0 < a[5] >>> 0 ? 1 : 0) | 0, r[7] = r[7] + 3545052371 + (r[6] >>> 0 < a[6] >>> 0 ? 1 : 0) | 0, this._b = r[7] >>> 0 < a[7] >>> 0 ? 1 : 0; + for (var e = 0; e < 8; e++) { + var i = t[e] + r[e], + n = 65535 & i, + o = i >>> 16, + s = ((n * n >>> 17) + n * o >>> 15) + o * o, + h = ((4294901760 & i) * i | 0) + ((65535 & i) * i | 0); + c[e] = s ^ h; + } + t[0] = c[0] + (c[7] << 16 | c[7] >>> 16) + (c[6] << 16 | c[6] >>> 16) | 0, t[1] = c[1] + (c[0] << 8 | c[0] >>> 24) + c[7] | 0, t[2] = c[2] + (c[1] << 16 | c[1] >>> 16) + (c[0] << 16 | c[0] >>> 16) | 0, t[3] = c[3] + (c[2] << 8 | c[2] >>> 24) + c[1] | 0, t[4] = c[4] + (c[3] << 16 | c[3] >>> 16) + (c[2] << 16 | c[2] >>> 16) | 0, t[5] = c[5] + (c[4] << 8 | c[4] >>> 24) + c[3] | 0, t[6] = c[6] + (c[5] << 16 | c[5] >>> 16) + (c[4] << 16 | c[4] >>> 16) | 0, t[7] = c[7] + (c[6] << 8 | c[6] >>> 24) + c[5] | 0; + } + var e = t, + i = e.lib, + n = i.StreamCipher, + o = e.algo, + s = [], + a = [], + c = [], + h = o.RabbitLegacy = n.extend({ + _doReset: function _doReset() { + var t = this._key.words, + e = this.cfg.iv, + i = this._X = [t[0], t[3] << 16 | t[2] >>> 16, t[1], t[0] << 16 | t[3] >>> 16, t[2], t[1] << 16 | t[0] >>> 16, t[3], t[2] << 16 | t[1] >>> 16], + n = this._C = [t[2] << 16 | t[2] >>> 16, 4294901760 & t[0] | 65535 & t[1], t[3] << 16 | t[3] >>> 16, 4294901760 & t[1] | 65535 & t[2], t[0] << 16 | t[0] >>> 16, 4294901760 & t[2] | 65535 & t[3], t[1] << 16 | t[1] >>> 16, 4294901760 & t[3] | 65535 & t[0]]; + this._b = 0; + for (var o = 0; o < 4; o++) r.call(this); + for (var o = 0; o < 8; o++) n[o] ^= i[o + 4 & 7]; + if (e) { + var s = e.words, + a = s[0], + c = s[1], + h = 16711935 & (a << 8 | a >>> 24) | 4278255360 & (a << 24 | a >>> 8), + l = 16711935 & (c << 8 | c >>> 24) | 4278255360 & (c << 24 | c >>> 8), + f = h >>> 16 | 4294901760 & l, + u = l << 16 | 65535 & h; + n[0] ^= h, n[1] ^= f, n[2] ^= l, n[3] ^= u, n[4] ^= h, n[5] ^= f, n[6] ^= l, n[7] ^= u; + for (var o = 0; o < 4; o++) r.call(this); + } + }, + _doProcessBlock: function _doProcessBlock(t, e) { + var i = this._X; + r.call(this), s[0] = i[0] ^ i[5] >>> 16 ^ i[3] << 16, s[1] = i[2] ^ i[7] >>> 16 ^ i[5] << 16, s[2] = i[4] ^ i[1] >>> 16 ^ i[7] << 16, s[3] = i[6] ^ i[3] >>> 16 ^ i[1] << 16; + for (var n = 0; n < 4; n++) s[n] = 16711935 & (s[n] << 8 | s[n] >>> 24) | 4278255360 & (s[n] << 24 | s[n] >>> 8), t[e + n] ^= s[n]; + }, + blockSize: 4, + ivSize: 2 + }); + e.RabbitLegacy = n._createHelper(h); + }(), t.pad.ZeroPadding = { + pad: function pad(t, r) { + var e = 4 * r; + t.clamp(), t.sigBytes += e - (t.sigBytes % e || e); + }, + unpad: function unpad(t) { + for (var r = t.words, e = t.sigBytes - 1; !(r[e >>> 2] >>> 24 - e % 4 * 8 & 255);) e--; + t.sigBytes = e + 1; + } + }, t; +}); + cc._RF.pop(); //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImFzc2V0c1xcU2NyaXB0XFxtb2R1bGVcXENyeXB0b1xcY3J5cHRvLWpzLm1pbi5qcyJdLCJuYW1lcyI6WyJ0IiwiciIsImV4cG9ydHMiLCJtb2R1bGUiLCJkZWZpbmUiLCJhbWQiLCJDcnlwdG9KUyIsImUiLCJPYmplY3QiLCJjcmVhdGUiLCJwcm90b3R5cGUiLCJpIiwibiIsImxpYiIsIm8iLCJCYXNlIiwiZXh0ZW5kIiwibWl4SW4iLCJoYXNPd25Qcm9wZXJ0eSIsImluaXQiLCIkc3VwZXIiLCJhcHBseSIsImFyZ3VtZW50cyIsInRvU3RyaW5nIiwiY2xvbmUiLCJzIiwiV29yZEFycmF5Iiwid29yZHMiLCJzaWdCeXRlcyIsImxlbmd0aCIsImMiLCJzdHJpbmdpZnkiLCJjb25jYXQiLCJjbGFtcCIsImNlaWwiLCJjYWxsIiwic2xpY2UiLCJyYW5kb20iLCJhIiwicHVzaCIsImVuYyIsIkhleCIsImpvaW4iLCJwYXJzZSIsInBhcnNlSW50Iiwic3Vic3RyIiwiaCIsIkxhdGluMSIsIlN0cmluZyIsImZyb21DaGFyQ29kZSIsImNoYXJDb2RlQXQiLCJsIiwiVXRmOCIsImRlY29kZVVSSUNvbXBvbmVudCIsImVzY2FwZSIsIkVycm9yIiwidW5lc2NhcGUiLCJlbmNvZGVVUklDb21wb25lbnQiLCJmIiwiQnVmZmVyZWRCbG9ja0FsZ29yaXRobSIsInJlc2V0IiwiX2RhdGEiLCJfbkRhdGFCeXRlcyIsIl9hcHBlbmQiLCJfcHJvY2VzcyIsImJsb2NrU2l6ZSIsIm1heCIsIl9taW5CdWZmZXJTaXplIiwibWluIiwiX2RvUHJvY2Vzc0Jsb2NrIiwidSIsInNwbGljZSIsIkhhc2hlciIsImNmZyIsIl9kb1Jlc2V0IiwidXBkYXRlIiwiZmluYWxpemUiLCJfZG9GaW5hbGl6ZSIsIl9jcmVhdGVIZWxwZXIiLCJfY3JlYXRlSG1hY0hlbHBlciIsIkhNQUMiLCJhbGdvIiwiTWF0aCIsIkJhc2U2NCIsIl9tYXAiLCJjaGFyQXQiLCJfcmV2ZXJzZU1hcCIsImluZGV4T2YiLCJhYnMiLCJzaW4iLCJNRDUiLCJfaGFzaCIsImQiLCJ2IiwicCIsIl8iLCJ5IiwiZyIsIkIiLCJ3IiwiayIsIlMiLCJtIiwieCIsImIiLCJIIiwieiIsIkEiLCJDIiwiRCIsImZsb29yIiwiSG1hY01ENSIsIlNIQTEiLCJIbWFjU0hBMSIsInNxcnQiLCJwb3ciLCJTSEEyNTYiLCJIbWFjU0hBMjU2IiwiVXRmMTYiLCJVdGYxNkJFIiwiVXRmMTZMRSIsIkFycmF5QnVmZmVyIiwiVWludDhBcnJheSIsIkludDhBcnJheSIsIlVpbnQ4Q2xhbXBlZEFycmF5IiwiSW50MTZBcnJheSIsIlVpbnQxNkFycmF5IiwiSW50MzJBcnJheSIsIlVpbnQzMkFycmF5IiwiRmxvYXQzMkFycmF5IiwiRmxvYXQ2NEFycmF5IiwiYnVmZmVyIiwiYnl0ZU9mZnNldCIsImJ5dGVMZW5ndGgiLCJSSVBFTUQxNjAiLCJSIiwiRSIsIk0iLCJGIiwiSG1hY1JJUEVNRDE2MCIsIl9oYXNoZXIiLCJfb0tleSIsIl9pS2V5IiwiUEJLREYyIiwia2V5U2l6ZSIsImhhc2hlciIsIml0ZXJhdGlvbnMiLCJjb21wdXRlIiwiRXZwS0RGIiwiU0hBMjI0IiwiSG1hY1NIQTIyNCIsIng2NCIsIldvcmQiLCJoaWdoIiwibG93IiwidG9YMzIiLCJTSEEzIiwib3V0cHV0TGVuZ3RoIiwiX3N0YXRlIiwiSG1hY1NIQTMiLCJTSEE1MTIiLCJQIiwiVyIsIk8iLCJVIiwiSSIsIksiLCJYIiwiTCIsImoiLCJOIiwiVCIsIloiLCJxIiwiRyIsIkoiLCIkIiwiUSIsIlYiLCJZIiwidHQiLCJydCIsImV0IiwiaXQiLCJudCIsIm90Iiwic3QiLCJhdCIsImN0IiwiaHQiLCJsdCIsImZ0IiwidXQiLCJkdCIsInZ0IiwicHQiLCJfdCIsInl0IiwiZ3QiLCJCdCIsInd0Iiwia3QiLCJTdCIsIm10IiwieHQiLCJidCIsIkhtYWNTSEE1MTIiLCJTSEEzODQiLCJIbWFjU0hBMzg0IiwiQ2lwaGVyIiwiY3JlYXRlRW5jcnlwdG9yIiwiX0VOQ19YRk9STV9NT0RFIiwiY3JlYXRlRGVjcnlwdG9yIiwiX0RFQ19YRk9STV9NT0RFIiwiX3hmb3JtTW9kZSIsIl9rZXkiLCJwcm9jZXNzIiwiaXZTaXplIiwiZW5jcnlwdCIsImRlY3J5cHQiLCJTdHJlYW1DaXBoZXIiLCJtb2RlIiwiQmxvY2tDaXBoZXJNb2RlIiwiRW5jcnlwdG9yIiwiRGVjcnlwdG9yIiwiX2NpcGhlciIsIl9pdiIsIkNCQyIsIl9wcmV2QmxvY2siLCJwcm9jZXNzQmxvY2siLCJlbmNyeXB0QmxvY2siLCJkZWNyeXB0QmxvY2siLCJwYWQiLCJQa2NzNyIsInVucGFkIiwiQmxvY2tDaXBoZXIiLCJwYWRkaW5nIiwiaXYiLCJfbW9kZSIsIl9fY3JlYXRvciIsIkNpcGhlclBhcmFtcyIsImZvcm1hdHRlciIsImZvcm1hdCIsIk9wZW5TU0wiLCJjaXBoZXJ0ZXh0Iiwic2FsdCIsIlNlcmlhbGl6YWJsZUNpcGhlciIsImtleSIsImFsZ29yaXRobSIsIl9wYXJzZSIsImtkZiIsImV4ZWN1dGUiLCJQYXNzd29yZEJhc2VkQ2lwaGVyIiwiQ0ZCIiwiRUNCIiwiQW5zaVg5MjMiLCJJc28xMDEyNiIsIklzbzk3OTcxIiwiWmVyb1BhZGRpbmciLCJPRkIiLCJfa2V5c3RyZWFtIiwiTm9QYWRkaW5nIiwiQUVTIiwiX25Sb3VuZHMiLCJfa2V5UHJpb3JSZXNldCIsIl9rZXlTY2hlZHVsZSIsIl9pbnZLZXlTY2hlZHVsZSIsIl9kb0NyeXB0QmxvY2siLCJfbEJsb2NrIiwiX3JCbG9jayIsIkRFUyIsIl9zdWJLZXlzIiwiX2ludlN1YktleXMiLCJUcmlwbGVERVMiLCJfZGVzMSIsIl9kZXMyIiwiX2RlczMiLCJfUyIsIl9pIiwiX2oiLCJSQzQiLCJSQzREcm9wIiwiZHJvcCIsIkNUUkdsYWRtYW4iLCJfY291bnRlciIsIl9YIiwiX0MiLCJfYiIsIlJhYmJpdCIsIkNUUiIsIlJhYmJpdExlZ2FjeSJdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQUEsQ0FBQyxVQUFTQSxDQUFDLEVBQUNDLENBQUMsRUFBQztFQUFDLFFBQVEsSUFBRSxP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Q2hCLENBQUMsQ0FBQ2pCLEdBQUc7TUFBQ3NDLENBQUMsR0FBQ0wsQ0FBQyxDQUFDcEIsU0FBUztNQUFDZ0MsQ0FBQyxHQUFDWixDQUFDLENBQUMwQixNQUFNO01BQUNGLENBQUMsR0FBQ3hDLENBQUMsQ0FBQ21ELElBQUk7TUFBQ1csQ0FBQyxHQUFDekMsQ0FBQyxDQUFDMUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLEVBQUUsRUFBQyxFQUFFLEVBQUMsRUFBRSxFQUFDLEVBQUUsRUFBQyxFQUFFLEVBQUMsRUFBRSxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsRUFBRSxFQUFDLENBQUMsRUFBQyxFQUFFLEVBQUMsQ0FBQyxFQUFDLEVBQUUsRUFBQyxDQUFDLEVBQUMsRUFBRSxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxFQUFFLEVBQUMsRUFBRSxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsRUFBRSxFQUFDLEVBQUUsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLEVBQUUsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxFQUFFLEVBQUMsRUFBRSxFQUFDLENBQUMsRUFBQyxFQUFFLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxFQUFFLEVBQUMsRUFBRSxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsRUFBRSxFQUFDLENBQUMsRUFBQyxFQUFFLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxFQUFFLEVBQUMsRUFBRSxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsRUFBRSxFQUFDLENBQUMsRUFBQyxFQUFFLEVBQUMsRUFBRSxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLEVBQUUsRUFBQyxDQUFDLEVBQUMsRUFBRSxFQUFDLEVBQUUsQ0FBQyxDQUFDO01BQUNvRixDQUFDLEdBQUMxQyxDQUFDLENBQUMxQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUMsRUFBRSxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxFQUFFLEVBQUMsQ0FBQyxFQUFDLEVBQUUsRUFBQyxDQUFDLEVBQUMsRUFBRSxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsRUFBRSxFQUFDLENBQUMsRUFBQyxFQUFFLEVBQUMsQ0FBQyxFQUFDLEVBQUUsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxFQUFFLEVBQUMsQ0FBQyxFQUFDLEVBQUUsRUFBQyxFQUFFLEVBQUMsRUFBRSxFQUFDLENBQUMsRUFBQyxFQUFFLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLEVBQUUsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsRUFBRSxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsRUFBRSxFQUFDLENBQUMsRUFBQyxFQUFFLEVBQUMsQ0FBQyxFQUFDLEVBQUUsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLEVBQUUsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLEVBQUUsRUFBQyxFQUFFLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxFQUFFLEVBQUMsQ0FBQyxFQUFDLEVBQUUsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLEVBQUUsRUFBQyxFQUFFLEVBQUMsRUFBRSxFQUFDLEVBQUUsRUFBQyxFQUFFLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLEVBQUUsRUFBQyxFQUFFLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsRUFBRSxDQUFDLENBQUM7TUFBQ3FGLENBQUMsR0FBQzNDLENBQUMsQ0FBQzFDLE1BQU0sQ0FBQyxDQUFDLEVBQUUsRUFBQyxFQUFFLEVBQUMsRUFBRSxFQUFDLEVBQUUsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsRUFBRSxFQUFDLEVBQUUsRUFBQyxFQUFFLEVBQUMsRUFBRSxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxFQUFFLEVBQUMsRUFBRSxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsRUFBRSxFQUFDLENBQUMsRUFBQyxFQUFFLEVBQUMsRUFBRSxFQUFDLENBQUMsRUFBQyxFQUFFLEVBQUMsQ0FBQyxFQUFDLEVBQUUsRUFBQyxFQUFFLEVBQUMsRUFBRSxFQUFDLEVBQUUsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLEVBQUUsRUFBQyxDQUFDLEVBQUMsRUFBRSxFQUFDLEVBQUUsRUFBQyxFQUFFLEVBQUMsQ0FBQyxFQUFDLEVBQUUsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLEVBQUUsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLEVBQUUsRUFBQyxFQUFFLEVBQUMsRUFBRSxFQUFDLEVBQUUsRUFBQyxFQUFFLEVBQUMsRUFBRSxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLEVBQUUsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLEVBQUUsRUFBQyxDQUFDLEVBQUMsRUFBRSxFQUFDLENBQUMsRUFBQyxFQUFFLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxFQUFFLEVBQUMsRUFBRSxFQUFDLENBQUMsRUFBQyxFQUFFLEVBQUMsRUFBRSxFQUFDLEVBQUUsRUFBQyxFQUFFLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsQ0FBQztNQUFDc0YsQ0FBQyxHQUFDNUMsQ0FBQyxDQUFDMUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsRUFBRSxFQUFDLEVBQUUsRUFBQyxFQUFFLEVBQUMsRUFBRSxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxFQUFFLEVBQUMsRUFBRSxFQUFDLEVBQUUsRUFBQyxFQUFFLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxFQUFFLEVBQUMsRUFBRSxFQUFDLENBQUMsRUFBQyxFQUFFLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxFQUFFLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxFQUFFLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxFQUFFLEVBQUMsRUFBRSxFQUFDLEVBQUUsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLEVBQUUsRUFBQyxFQUFFLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsRUFBRSxFQUFDLEVBQUUsRUFBQyxFQUFFLEVBQUMsQ0FBQyxFQUFDLEVBQUUsRUFBQyxFQUFFLEVBQUMsRUFBRSxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsRUFBRSxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsRUFBRSxFQUFDLEVBQUUsRUFBQyxFQUFFLEVBQUMsQ0FBQyxFQUFDLEVBQUUsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLEVBQUUsRUFBQyxDQUFDLEVBQUMsRUFBRSxFQUFDLENBQUMsRUFBQyxFQUFFLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsRUFBRSxFQUFDLENBQUMsRUFBQyxFQUFFLEVBQUMsQ0FBQyxFQUFDLEVBQUUsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLEVBQUUsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLEVBQUUsRUFBQyxFQUFFLEVBQUMsRUFBRSxFQUFDLEVBQUUsQ0FBQyxDQUFDO01BQUN1RixDQUFDLEdBQUM3QyxDQUFDLENBQUMxQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUMsVUFBVSxFQUFDLFVBQVUs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QUMsR0FBQ1AsQ0FBQztNQUFDVyxDQUFDLEdBQUNKLENBQUMsQ0FBQ00sR0FBRztNQUFDRCxDQUFDLEdBQUNELENBQUMsQ0FBQzZELE1BQU07TUFBQzFELENBQUMsR0FBQ1AsQ0FBQyxDQUFDZ0osR0FBRztNQUFDOUgsQ0FBQyxHQUFDWCxDQUFDLENBQUMwSSxJQUFJO01BQUNsSCxDQUFDLEdBQUN4QixDQUFDLENBQUNZLFNBQVM7TUFBQ0ksQ0FBQyxHQUFDdkIsQ0FBQyxDQUFDMEUsSUFBSTtNQUFDbkMsQ0FBQyxHQUFDLENBQUM3QyxDQUFDLENBQUMsVUFBVSxFQUFDLFVBQVUsQ0FBQyxFQUFDQSxDQUFDLENBQUMsVUFBVSxFQUFDLFNBQVMsQ0FBQyxFQUFDQSxDQUFDLENBQUMsVUFBVSxFQUFDLFVBQVUsQ0FBQyxFQUFDQSxDQUFDLENBQUMsVUFBVSxFQUFDLFVBQVUsQ0FBQyxFQUFDQSxDQUFDLENBQUMsU0FBUyxFQUFDLFVBQVUsQ0FBQyxFQUFDQSxDQUFDLENBQUMsVUFBVSxFQUFDLFVBQVUsQ0FBQyxFQUFDQSxDQUFDLENBQUMsVUFBVSxFQUFDLFVBQVUsQ0FBQyxFQUFDQSxDQUFDLENBQUMsVUFBVSxFQUFDLFVBQVUsQ0FBQyxFQUFDQSxDQUFDLENBQUMsVUFBVSxFQUFDLFVBQVUsQ0FBQyxFQUFDQSxDQUFDLENBQUMsU0FBUyxFQUFDLFVBQVUsQ0FBQyxFQUFDQSxDQUFDLENBQUMsU0FBUyxFQUFDLFVBQVUsQ0FBQyxFQUFDQSxDQUFDLENBQUMsVUFBVSxFQUFDLFVBQVUsQ0FBQyxFQUFDQSxDQUFDLENBQUMsVUFBVSxFQUFDLFVBQVUsQ0FBQyxFQUFDQSxDQUFDLENBQUMsVUFBVSxFQUFDLFNBQVMsQ0FBQyxFQUFDQSxDQUFDLENBQUMsVUFBVSxFQUFDLFNBQVMsQ0FBQyxFQUFDQSxDQUFDLENBQUMsVUFBVSxFQUFDLFVBQVUsQ0FBQyxFQUFDQSxDQUFDLENBQUMsVUFBVSxFQUFDLFVBQVUsQ0FBQyxFQUFDQSxDQUFDLENBQUMsVUFBVSxFQUFDLFNBQVMsQ0FBQyxFQUFDQSxDQUFDLENBQUMsU0FBUyxFQUFDLFVBQVUsQ0FBQyxFQUFDQSxDQUFDLENBQUMsU0FBUyxFQUFDLFVBQVUsQ0FBQyxFQUFDQSxDQUFDLENBQUMsU0FBUyxFQUFDLFVBQVUsQ0FBQyxFQUFDQSxDQUFDLENBQUMsVUFBVSxFQUFDLFVBQVUsQ0FBQyxFQUFDQSxDQUFDLENBQUMsVUFBVSxFQUFDLFVBQVUsQ0FBQyxFQUFDQSxDQUFDLENBQUMsVUFBVSxFQUFDLFVBQVUsQ0FBQyxFQUFDQSxDQUFDLENBQUMsVUFBVSxFQUFDLFVBQVUsQ0FBQyxFQUFDQSxDQUFDLENBQUMsVUFBVSxFQUFDLFNBQVMsQ0FBQyxFQUFDQSxDQUFDLENBQUMsVUFBVSxFQUFDLFVBQVUsQ0FBQyxFQUFDQSxDQUFDLENBQUMsVUFBVSxFQUFDLFVBQVUsQ0FBQyxFQUFDQSxDQUFDLENBQUMsVUFBVSxFQUFDLFVBQVUsQ0FBQyxFQUFDQSxDQUFDLENBQUMsVUFBVSxFQUFDLFVBQVUsQ0FBQyxFQUFDQSxDQUFDLENBQUMsU0FBUyxFQUFDLFVBQVUsQ0FBQyxFQUFDQSxDQUFDLENBQUMsU0FBUyxFQUFDLFNBQVMsQ0FBQyxFQUFDQSxDQUFDLENBQUMsU0FBUyxFQUFDLFVBQVUsQ0FBQyxFQUFDQSxDQUFDLENBQUMsU0FBUyxFQUFDLFVBQVUsQ0FBQyxFQUFDQSxDQUFDLENBQUMsVUFBVSxFQUFDLFVBQVUsQ0FBQyxFQUFDQSxDQUFDLENBQUMsVUFBVSxFQUFDLFVBQVUsQ0FBQyxFQUFDQSxDQUFDLENBQUMsVUFBVSxFQUFDLFVBQVUsQ0FBQyxFQUFDQSxDQUFDLENBQUMsVUFBVSxFQUFDLFVBQVUsQ0FBQyxFQUFDQSxDQUFDLENBQUMsVUFBVSxFQUFDLFVBQVUsQ0FBQyxFQUFDQSxDQUFDLENBQUMsVUFBVSxFQUFDLFNBQVMsQ0FBQyxFQUFDQSxDQUFDLENBQUMsVUFBVSxFQUFDLFVBQVUsQ0FBQyxFQUFDQSxDQUFDLENBQUMsVUFBVSxFQUFDLFVBQVUsQ0FBQyxFQUFDQSxDQUFDLENBQUMsVUFBVSxFQUFDLFVBQVUsQ0FBQyxFQUFDQSxDQUFDLENBQUMsVUFBVSxFQUFDLFNBQVMsQ0FBQyxFQUFDQSxDQUFDLENBQUMsVUFBVSxFQUFDLFVBQVUsQ0FBQyxFQUFDQSxDQUFDLENBQUMsVUFBVSxFQUFDLFVBQVUsQ0FBQyxFQUFDQSxDQUFDLENBQUMsVUFBVSxFQUFDLFVBQVUsQ0FBQyxFQUFDQSxDQUFDLENBQUMsU0FBUyxFQUFDLFNBQVMsQ0FBQyxFQUFDQSxDQUFDLENBQUMsU0FBUyxFQUFDLFVBQVUsQ0FBQyxFQUFDQSxDQUFDLENBQUMsU0FBUyxFQUFDLFVBQVUsQ0FBQyxFQUFDQSxDQUFDLENBQUMsU0FBUyxFQUFDLFVBQVUsQ0FBQyxFQUFDQSxDQUFDLENBQUMsU0FBUyxFQUFDLFVBQVUsQ0FBQyxFQUFDQSxDQUFDLENBQUMsU0FBUyxFQUFDLFVBQVUsQ0FBQyxFQUFDQSxDQUFDLENBQUMsVUFBVSxFQUFDLFVBQVUsQ0FBQyxFQUFDQSxDQUFDLENBQUMsVUFBVSxFQUFDLFVBQVUsQ0FBQyxFQUFDQSxDQUFDLENBQUMsVUFBVSxFQUFDLFVBQVUsQ0FBQyxFQUFDQSxDQUFDLENBQUMsVUFBVSxFQUFDLFVBQVUsQ0FBQyxFQUFDQSxDQUFDLENBQUMsVUFBVSxFQUFDLFVBQVUsQ0FBQyxFQUFDQSxDQUFDLENBQUMsVUFBVSxFQUFDLFVBQVUsQ0FBQyxFQUFDQSxDQUFDLENBQUMsVUFBVSxFQUFDLFNBQVMsQ0FBQyxFQUFDQSxDQUFDLENBQUMsVUFBVSxFQUFDLFNBQVMsQ0FBQyxFQUFDQSxDQUFDLENBQUMsVUFBVSxFQUFDLFVBQVUsQ0FBQyxFQUFDQSxDQUFDLENBQUMsVUFBVSxFQUFDLFVBQVUsQ0FBQyxFQUFDQSxDQUFDLENBQUMsVUFBVSxFQUFDLFVBQVUsQ0FBQyxFQUFDQSxDQUFDLENBQUMsVUFBVSxFQUFDLFVBQVUsQ0FBQyxFQUFDQSxDQUFDLENBQUMsVUFBVSxFQUFDLFNBQVMsQ0FBQyxFQUFDQSxDQUFDLENBQUMsVUFBVSxFQUFDLFVBQVUsQ0FBQyxFQUFDQSxDQUFDLENBQUMsVUFBVSxFQUFDLFVBQVUsQ0FBQyxFQUFDQSxDQUFDLENBQUMsU0FBUyxFQUFDLFVBQVUsQ0FBQyxFQUFDQSxDQUFDLENBQUMsU0FBUyxFQUFDLFVBQVUsQ0FBQyxFQUFDQSxDQUFDLENBQUMsU0FBUyxFQUFDLFVBQVUsQ0FBQyxFQUFDQSxDQUFDLENBQUMsU0FBUyxFQUFDLFNBQVMsQ0FBQyxFQUFDQSxDQUFDLENBQUMsU0FBUyxFQUFDLFNBQVMsQ0FBQyxFQUFDQSxDQUFDLENBQUMsU0FBUyxFQUFDLFVBQVUsQ0FBQyxFQUFDQSxDQUFDLENBQUMsVUFBVSxFQUFDLFNBQVMsQ0FBQyxFQUFDQSxDQUFDLENBQUMsVUFBVSxFQUFDLFVBQVUsQ0FBQyxFQUFDQSxDQUFDLENBQUMsVUFBVSxFQUFDLFVBQVUsQ0FBQyxFQUFDQSxDQUFDLENBQUMsVUFBVSxFQUFDLFVBQVUsQ0FBQyxFQUFDQSxDQUFDLENBQUMsVUFBVSxFQUFDLFNBQVMsQ0FBQyxFQUFDQSxDQUFDLENBQUMsVUFBVSxFQUFDLFVBQVUsQ0FBQyxDQUFDO01BQUNrRCxDQUFDLEdBQUMsRUFBRTtJQUFDLENBQUMsWUFBVTtNQUFDLEtBQUksSUFBSW5ELENBQUMsR0FBQyxDQUFDLEVBQUNBLENBQUMsR0FBQyxFQUFFLEVBQUNBLENBQUMsRUFBRSxFQUFDbUQsQ0FBQyxDQUFDbkQsQ0FBQyxDQUFDLEdBQUNDLENBQUMsRUFBRTtJQUFBLENBQUMsRUFBRTtJQUFDLElBQUl5RCxDQUFDLEdBQUM1QixDQUFDLENBQUNrSSxNQUFNLEdBQUNwSixDQUFDLENBQUNJLE1BQU0sQ0FBQztNQUFDMEQsUUFBUSxFQUFDLFNBQUFBLFNBQUEsRUFBVTtRQUFDLElBQUksQ0FBQ2lCLEtBQUssR0FBQyxJQUFJckQsQ0FBQyxDQUFDbkIsSUFBSSxDQUFDLENBQUMsSUFBSU0sQ0FBQyxDQUFDTixJQUFJLENBQUMsVUFBVSxFQUFDLFVBQVUsQ0FBQyxFQUFDLElBQUlNLENBQUMsQ0FBQ04sSUFBSSxDQUFDLFVBQVUsRUFBQyxVQUFVLENBQUMsRUFBQyxJQUFJTSxDQUFDLENBQUNOLElBQUksQ0FBQyxVQUFVLEVBQUMsVUFBVSxDQUFDLEVBQUMsSUFBSU0sQ0FBQyxDQUFDTixJQUFJLENBQUMsVUFBVSxFQUFDLFVBQVUsQ0FBQyxFQUFDLElBQUlNLENBQUMsQ0FBQ04sSUFBSSxDQUFDLFVBQVUsRUFBQyxVQUFVLENBQUMsRUFBQyxJQUFJTSxDQUFDLENBQUNOLElBQUksQ0FBQyxVQUFVLEVBQUMsU0FBUyxDQUFDLEVBQUMsSUFBSU0sQ0FBQyxDQUFDTixJQUFJLENBQUMsU0FBUyxFQUFDLFVBQVUsQ0FBQyxFQUFDLElBQUlNLENBQUMsQ0FBQ04sSUFBSSxDQUFDLFVBQVUsRUFBQyxTQUFTLENBQUMsQ0FBQyxDQUFDO01BQUEsQ0FBQztNQUFDa0QsZUFBZSxFQUFDLFNBQUFBLGdCQUFTckUsQ0FBQyxFQUFDQyxDQUFDLEVBQUM7UUFBQyxLQUFJLElBQUlNLENBQUMsR0FBQyxJQUFJLENBQUNvRixLQUFLLENBQUNoRSxLQUFLLEVBQUNoQixDQUFDLEdBQUNKLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBQ0ssQ0FBQyxHQUFDTCxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUNPLENBQUMsR0FBQ1AsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFDa0IsQ0FBQyxHQUFDbEIsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFDK0IsQ0FBQyxHQUFDL0IsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFDdUIsQ0FBQyxHQUFDdkIsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFDbUQsQ0FBQyxHQUFDbkQsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFDK0QsQ0FBQyxHQUFDL0QsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFDcUYsQ0FBQyxHQUFDakYsQ0FBQyxDQUFDOEksSUFBSSxFQUFDNUQsQ0FBQyxHQUFDbEYsQ0FBQyxDQUFDK0ksR0FBRyxFQUFDNUQsQ0FBQyxHQUFDbEYsQ0FBQyxDQUFDNkksSUFBSSxFQUFDMUQsQ0FBQyxHQUFDbkYsQ0FBQyxDQUFDOEksR0FBRyxFQUFDMUQsQ0FBQyxHQUFDbEYsQ0FBQyxDQUFDMkksSUFBSSxFQUFDeEQsQ0FBQyxHQUFDbkYsQ0FBQyxDQUFDNEksR0FBRyxFQUFDeEQsQ0FBQyxHQUFDekUsQ0FBQyxDQUFDZ0ksSUFBSSxFQUFDdEQsQ0FBQyxHQUFDMUUsQ0FBQyxDQUFDaUksR0FBRyxFQUFDdEQsQ0FBQyxHQUFDOUQsQ0FBQyxDQUFDbUgsSUFBSSxFQUFDcEQsQ0FBQyxHQUFDL0QsQ0FBQyxDQUFDb0gsR0FBRyxFQUFDcEQsQ0FBQyxHQUFDeEUsQ0FBQyxDQUFDMkgsSUFBSSxFQUFDbEQsQ0FBQyxHQUFDekUsQ0FBQyxDQUFDNEgsR0FBRyxFQUFDbEQsQ0FBQyxHQUFDOUMsQ0FBQyxDQUFDK0YsSUFBSSxFQUFDaEQsQ0FBQyxHQUFDL0MsQ0FBQyxDQUFDZ0csR0FBRyxFQUFDaEQsQ0FBQyxHQUFDcEMsQ0FBQyxDQUFDbUYsSUFBSSxFQUFDOUMsQ0FBQyxHQUFDckMsQ0FBQyxDQUFDb0YsR0FBRyxFQUFDOUMsQ0FBQyxHQUFDaEIsQ0FBQyxFQUFDaUIsQ0FBQyxHQUFDaEIsQ0FBQyxFQUFDMEMsQ0FBQyxHQUFDekMsQ0FBQyxFQUFDMEMsQ0FBQyxHQUFDekMsQ0FBQyxFQUFDMEMsQ0FBQyxHQUFDekMsQ0FBQyxFQUFDMEMsQ0FBQyxHQUFDekMsQ0FBQyxFQUFDZ0UsQ0FBQyxHQUFDL0QsQ0FBQyxFQUFDZ0UsQ0FBQyxHQUFDL0QsQ0FBQyxFQUFDZ0UsQ0FBQyxHQUFDL0QsQ0FBQyxFQUFDZ0UsQ0FBQyxHQUFDL0QsQ0FBQyxFQUFDZ0UsQ0FBQyxHQUFDL0QsQ0FBQyxFQUFDZ0UsQ0FBQyxHQUFDL0QsQ0FBQyxFQUFDZ0UsQ0FBQyxHQUFDL0QsQ0FBQyxFQUFDZ0UsQ0FBQyxHQUFDL0QsQ0FBQyxFQUFDZ0UsQ0FBQyxHQUFDL0QsQ0FBQyxFQUFDZ0UsQ0FBQyxHQUFDL0QsQ0FBQyxFQUFDZ0UsQ0FBQyxHQUFDLENBQUMsRUFBQ0EsQ0FBQyxHQUFDLEVBQUUsRUFBQ0EsQ0FBQyxFQUFFLEVBQUM7VUFBQyxJQUFJQyxDQUFDLEdBQUN6SCxDQUFDLENBQUN3SCxDQUFDLENBQUM7VUFBQyxJQUFHQSxDQUFDLEdBQUMsRUFBRSxFQUFDLElB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QUN5QyxDQUFDLEtBQUcsQ0FBQyxHQUFDLENBQUMsR0FBQyxDQUFDLENBQUMsRUFBQ3ZDLENBQUMsR0FBQzFFLENBQUMsQ0FBQ2lJLEdBQUcsR0FBQ3ZELENBQUMsR0FBQytELENBQUMsRUFBQ3pJLENBQUMsQ0FBQ2dJLElBQUksR0FBQ3ZELENBQUMsR0FBQytELENBQUMsSUFBRTlELENBQUMsS0FBRyxDQUFDLEdBQUMrRCxDQUFDLEtBQUcsQ0FBQyxHQUFDLENBQUMsR0FBQyxDQUFDLENBQUMsRUFBQzdELENBQUMsR0FBQy9ELENBQUMsQ0FBQ29ILEdBQUcsR0FBQ3JELENBQUMsR0FBQytELENBQUMsRUFBQzlILENBQUMsQ0FBQ21ILElBQUksR0FBQ3JELENBQUMsR0FBQytELENBQUMsSUFBRTlELENBQUMsS0FBRyxDQUFDLEdBQUMrRCxDQUFDLEtBQUcsQ0FBQyxHQUFDLENBQUMsR0FBQyxDQUFDLENBQUMsRUFBQzdELENBQUMsR0FBQ3pFLENBQUMsQ0FBQzRILEdBQUcsR0FBQ25ELENBQUMsR0FBQytELENBQUMsRUFBQ3hJLENBQUMsQ0FBQzJILElBQUksR0FBQ25ELENBQUMsR0FBQytELENBQUMsSUFBRTlELENBQUMsS0FBRyxDQUFDLEdBQUMrRCxDQUFDLEtBQUcsQ0FBQyxHQUFDLENBQUMsR0FBQyxDQUFDLENBQUMsRUFBQzdELENBQUMsR0FBQy9DLENBQUMsQ0FBQ2dHLEdBQUcsR0FBQ2pELENBQUMsR0FBQytELENBQUMsRUFBQzlHLENBQUMsQ0FBQytGLElBQUksR0FBQ2pELENBQUMsR0FBQytELENBQUMsSUFBRTlELENBQUMsS0FBRyxDQUFDLEdBQUMrRCxDQUFDLEtBQUcsQ0FBQyxHQUFDLENBQUMsR0FBQyxDQUFDLENBQUMsRUFBQzdELENBQUMsR0FBQ3JDLENBQUMsQ0FBQ29GLEdBQUcsR0FBQy9DLENBQUMsR0FBQytELENBQUMsRUFBQ3BHLENBQUMsQ0FBQ21GLElBQUksR0FBQy9DLENBQUMsR0FBQytELENBQUMsSUFBRTlELENBQUMsS0FBRyxDQUFDLEdBQUMrRCxDQUFDLEtBQUcsQ0FBQyxHQUFDLENBQUMsR0FBQyxDQUFDLENBQUM7TUFBQSxDQUFDO01BQUM3RixXQUFXLEVBQUMsU0FBQUEsWUFBQSxFQUFVO1FBQUMsSUFBSTdFLENBQUMsR0FBQyxJQUFJLENBQUM2RCxLQUFLO1VBQUM1RCxDQUFDLEdBQUNELENBQUMsQ0FBQzJCLEtBQUs7VUFBQ3BCLENBQUMsR0FBQyxDQUFDLEdBQUMsSUFBSSxDQUFDdUQsV0FBVztVQUFDbkQsQ0FBQyxHQUFDLENBQUMsR0FBQ1gsQ0FBQyxDQUFDNEIsUUFBUTtRQUFDM0IsQ0FBQyxDQUFDVSxDQUFDLEtBQUcsQ0FBQyxDQUFDLElBQUUsR0FBRyxJQUFFLEVBQUUsR0FBQ0EsQ0FBQyxHQUFDLEVBQUUsRUFBQ1YsQ0FBQyxDQUFDLENBQUNVLENBQUMsR0FBQyxHQUFHLEtBQUcsRUFBRSxJQUFFLENBQUMsSUFBRSxFQUFFLENBQUMsR0FBQ3VFLElBQUksQ0FBQzRCLEtBQUssQ0FBQ3ZHLENBQUMsR0FBQyxVQUFVLENBQUMsRUFBQ04sQ0FBQyxDQUFDLENBQUNVLENBQUMsR0FBQyxHQUFHLEtBQUcsRUFBRSxJQUFFLENBQUMsSUFBRSxFQUFFLENBQUMsR0FBQ0osQ0FBQyxFQUFDUCxDQUFDLENBQUM0QixRQUFRLEdBQUMsQ0FBQyxHQUFDM0IsQ0FBQyxDQUFDNEIsTUFBTSxFQUFDLElBQUksQ0FBQ21DLFFBQVEsRUFBRTtRQUFDLElBQUlwRCxDQUFDLEdBQUMsSUFBSSxDQUFDK0UsS0FBSyxDQUFDZ0UsS0FBSyxFQUFFO1FBQUMsT0FBTy9JLENBQUM7TUFBQSxDQUFDO01BQUNZLEtBQUssRUFBQyxTQUFBQSxNQUFBLEVBQVU7UUFBQyxJQUFJeEIsQ0FBQyxHQUFDWSxDQUFDLENBQUNZLEtBQUssQ0FBQ1csSUFBSSxDQUFDLElBQUksQ0FBQztRQUFDLE9BQU9uQyxDQUFDLENBQUMyRixLQUFLLEdBQUMsSUFBSSxDQUFDQSxLQUFLLENBQUNuRSxLQUFLLEVBQUUsRUFBQ3hCLENBQUM7TUFBQSxDQUFDO01BQUNpRSxTQUFTLEVBQUM7SUFBRSxDQUFDLENBQUM7SUFBQzFELENBQUMsQ0FBQ3lKLE1BQU0sR0FBQ3BKLENBQUMsQ0FBQ2tFLGFBQWEsQ0FBQ3BCLENBQUMsQ0FBQyxFQUFDbkQsQ0FBQyxDQUFDdU0sVUFBVSxHQUFDbE0sQ0FBQyxDQUFDbUUsaUJBQWlCLENBQUNyQixDQUFDLENBQUM7RUFBQSxDQUFDLEVBQUUsRUFBQyxZQUFVO0lBQUMsSUFBSXpELENBQUMsR0FBQ0QsQ0FBQztNQUFDTyxDQUFDLEdBQUNOLENBQUMsQ0FBQ3NKLEdBQUc7TUFBQzVJLENBQUMsR0FBQ0osQ0FBQyxDQUFDaUosSUFBSTtNQUFDNUksQ0FBQyxHQUFDTCxDQUFDLENBQUNtQixTQUFTO01BQUNaLENBQUMsR0FBQ2IsQ0FBQyxDQUFDZ0YsSUFBSTtNQUFDeEQsQ0FBQyxHQUFDWCxDQUFDLENBQUNrSixNQUFNO01BQUMxSCxDQUFDLEdBQUN4QixDQUFDLENBQUNpTSxNQUFNLEdBQUN0TCxDQUFDLENBQUNULE1BQU0sQ0FBQztRQUFDMEQsUUFBUSxFQUFDLFNBQUFBLFNBQUEsRUFBVTtVQUFDLElBQUksQ0FBQ2lCLEtBQUssR0FBQyxJQUFJL0UsQ0FBQyxDQUFDTyxJQUFJLENBQUMsQ0FBQyxJQUFJUixDQUFDLENBQUNRLElBQUksQ0FBQyxVQUFVLEVBQUMsVUFBVSxDQUFDLEVBQUMsSUFBSVIsQ0FBQyxDQUFDUSxJQUFJLENBQUMsVUFBVSxFQUFDLFNBQVMsQ0FBQyxFQUFDLElBQUlSLENBQUMsQ0FBQ1EsSUFBSSxDQUFDLFVBQVUsRUFBQyxTQUFTLENBQUMsRUFBQyxJQUFJUixDQUFDLENBQUNRLElBQUksQ0FBQyxTQUFTLEVBQUMsVUFBVSxDQUFDLEVBQUMsSUFBSVIsQ0FBQyxDQUFDUSxJQUFJLENBQUMsVUFBVSxFQUFDLFVBQVUsQ0FBQyxFQUFDLElBQUlSLENBQUMsQ0FBQ1EsSUFBSSxDQUFDLFVBQVUsRUFBQyxVQUFVLENBQUMsRUFBQyxJQUFJUixDQUFDLENBQUNRLElBQUksQ0FBQyxVQUFVLEVBQUMsVUFBVSxDQUFDLEVBQUMsSUFBSVIsQ0FBQyxDQUFDUSxJQUFJLENBQUMsVUFBVSxFQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUM7UUFBQSxDQUFDO1FBQUMwRCxXQUFXLEVBQUMsU0FBQUEsWUFBQSxFQUFVO1VBQUMsSUFBSTdFLENBQUMsR0FBQ3lCLENBQUMsQ0FBQ29ELFdBQVcsQ0FBQzFDLElBQUksQ0FBQyxJQUFJLENBQUM7VUFBQyxPQUFPbkMsQ0FBQyxDQUFDNEIsUUFBUSxJQUFFLEVBQUUsRUFBQzVCLENBQUM7UUFBQTtNQUFDLENBQUMsQ0FBQztJQUFDQyxDQUFDLENBQUM4TSxNQUFNLEdBQUN0TCxDQUFDLENBQUNxRCxhQUFhLENBQUN4QyxDQUFDLENBQUMsRUFBQ3JDLENBQUMsQ0FBQytNLFVBQVUsR0FBQ3ZMLENBQUMsQ0FBQ3NELGlCQUFpQixDQUFDekMsQ0FBQyxDQUFDO0VBQUEsQ0FBQyxFQUFFLEVBQUN0QyxDQUFDLENBQUNhLEdBQUcsQ0FBQ29NLE1BQU0sSUFBRSxVQUFTaE4sQ0FBQyxFQUFDO0lBQUMsSUFBSU0sQ0FBQyxHQUFDUCxDQUFDO01BQUNXLENBQUMsR0FBQ0osQ0FBQyxDQUFDTSxHQUFHO01BQUNELENBQUMsR0FBQ0QsQ0FBQyxDQUFDSSxJQUFJO01BQUNELENBQUMsR0FBQ0gsQ0FBQyxDQUFDZSxTQUFTO01BQUNELENBQUMsR0FBQ2QsQ0FBQyxDQUFDZ0Qsc0JBQXNCO01BQUNyQixDQUFDLEdBQUMvQixDQUFDLENBQUNpQyxHQUFHO01BQUNWLENBQUMsSUFBRVEsQ0FBQyxDQUFDYyxJQUFJLEVBQUNkLENBQUMsQ0FBQzZDLE1BQU0sQ0FBQztNQUFDckMsQ0FBQyxHQUFDdkMsQ0FBQyxDQUFDMEUsSUFBSTtNQUFDOUIsQ0FBQyxHQUFDTCxDQUFDLENBQUNzRyxNQUFNO01BQUMxRixDQUFDLEdBQUMvQyxDQUFDLENBQUNzTSxNQUFNLEdBQUN4TCxDQUFDLENBQUNULE1BQU0sQ0FBQztRQUFDeUQsR0FBRyxFQUFDN0QsQ0FBQyxDQUFDSSxNQUFNLEVBQUU7UUFBQ2tNLGVBQWUsRUFBQyxTQUFBQSxnQkFBU2xOLENBQUMsRUFBQ0MsQ0FBQyxFQUFDO1VBQUMsT0FBTyxJQUFJLENBQUNRLE1BQU0sQ0FBQyxJQUFJLENBQUMwTSxlQUFlLEVBQUNuTixDQUFDLEVBQUNDLENBQUMsQ0FBQztRQUFBLENBQUM7UUFBQ21OLGVBQWUsRUFBQyxTQUFBQSxnQkFBU3BOLENBQUMsRUFBQ0MsQ0FBQyxFQUFDO1VBQUMsT0FBTyxJQUFJLENBQUNRLE1BQU0sQ0FBQyxJQUFJLENBQUM0TSxlQUFlLEVBQUNyTixDQUFDLEVBQUNDLENBQUMsQ0FBQztRQUFBLENBQUM7UUFBQ2tCLElBQUksRUFBQyxTQUFBQSxLQUFTbkIsQ0FBQyxFQUFDQyxDQUFDLEVBQUNNLENBQUMsRUFBQztVQUFDLElBQUksQ0FBQ2tFLEdBQUcsR0FBQyxJQUFJLENBQUNBLEdBQUcsQ0FBQ3pELE1BQU0sQ0FBQ1QsQ0FBQyxDQUFDLEVBQUMsSUFBSSxDQUFDK00sVUFBVSxHQUFDdE4sQ0FBQyxFQUFDLElBQUksQ0FBQ3VOLElBQUksR0FBQ3ROLENBQUMsRUFBQyxJQUFJLENBQUMyRCxLQUFLLEVBQUU7UUFBQSxDQUFDO1FBQUNBLEtBQUssRUFBQyxTQUFBQSxNQUFBLEVBQVU7VUFBQ25DLENBQUMsQ0FBQ21DLEtBQUssQ0FBQ3pCLElBQUksQ0FBQyxJQUFJLENBQUMsRUFBQyxJQUFJLENBQUN1QyxRQUFRLEVBQUU7UUFBQSxDQUFDO1FBQUM4SSxPQUFPLEVBQUMsU0FBQUEsUUFBU3hOLENBQUMsRUFBQztVQUFDLE9BQU8sSUFBSSxDQUFDK0QsT0FBTyxDQUFDL0QsQ0FBQyxDQUFDLEVBQUMsSUFBSSxDQUFDZ0UsUUFBUSxFQUFFO1FBQUEsQ0FBQztRQUFDWSxRQUFRLEVBQUMsU0FBQUEsU0FBUzVFLENBQUMsRUFBQztVQUFDQSxDQUFDLElBQUUsSUFBSSxDQUFDK0QsT0FBTyxDQUFDL0QsQ0FBQyxDQUFDO1VBQUMsSUFBSUMsQ0FBQyxHQUFDLElBQUksQ0FBQzRFLFdBQVcsRUFBRTtVQUFDLE9BQU81RSxDQUFDO1FBQUEsQ0FBQztRQUFDK0ksT0FBTyxFQUFDLENBQUM7UUFBQ3lFLE1BQU0sRUFBQyxDQUFDO1FBQUNOLGVBQWUsRUFBQyxDQUFDO1FBQUNFLGVBQWUsRUFBQyxDQUFDO1FBQUN2SSxhQUFhLEVBQUMsWUFBVTtVQUFDLFNBQVM5RSxDQUFDQSxDQUFDQSxDQUFDLEVBQUM7WUFBQyxPQUFNLFFBQVEsSUFBRSxPQUFPQSxDQUFDLEdBQUNzRyxDQUFDLEdBQUNILENBQUM7VUFBQTtVQUFDLE9BQU8sVUFBU2xHLENBQUMsRUFBQztZQUFDLE9BQU07Y0FBQ3lOLE9BQU8sRUFBQyxTQUFBQSxRQUFTbk4sQ0FBQyxFQUFDSSxDQUFDLEVBQUNDLENBQUMsRUFBQztnQkFBQyxPQUFPWixDQUFDLENBQUNXLENBQUMsQ0FBQyxDQUFDK00sT0FBTyxDQUFDek4sQ0FBQyxFQUFDTSxDQUFDLEVBQUNJLENBQUMsRUFBQ0MsQ0FBQyxDQUFDO2NBQUEsQ0FBQztjQUFDK00sT0FBTyxFQUFDLFNBQUFBLFFBQVNwTixDQUFDLEVBQUNJLENBQUMsRUFBQ0MsQ0FBQyxFQUFDO2dCQUFDLE9BQU9aLENBQUMsQ0FBQ1csQ0FBQyxDQUFDLENBQUNnTixPQUFPLENBQUMxTixDQUFDLEVBQUNNLENBQUMsRUFBQ0ksQ0FBQyxFQUFDQyxDQUFDLENBQUM7Y0FBQTtZQUFDLENBQUM7VUFBQSxDQUFDO1FBQUEsQ0FBQztNQUFFLENBQUMsQ0FBQztNQUFDMEQsQ0FBQyxJQUFFM0QsQ0FBQyxDQUFDaU4sWUFBWSxHQUFDbEssQ0FBQyxDQUFDMUMsTUFBTSxDQUFDO1FBQUM2RCxXQUFXLEVBQUMsU0FBQUEsWUFBQSxFQUFVO1VBQUMsSUFBSTdFLENBQUMsR0FBQyxJQUFJLENBQUNnRSxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUM7VUFBQyxPQUFPaEUsQ0FBQztRQUFBLENBQUM7UUFBQ2lFLFNBQVMsRUFBQztNQUFDLENBQUMsQ0FBQyxFQUFDMUQsQ0FBQyxDQUFDc04sSUFBSSxHQUFDLENBQUMsQ0FBQyxDQUFDO01BQUNqSSxDQUFDLEdBQUNqRixDQUFDLENBQUNtTixlQUFlLEdBQUNsTixDQUFDLENBQUNJLE1BQU0sQ0FBQztRQUFDa00sZUFBZSxFQUFDLFNBQUFBLGdCQUFTbE4sQ0FBQyxFQUFDQyxDQUFDLEVBQUM7VUFBQyxPQUFPLElBQUksQ0FBQzhOLFNBQVMsQ0FBQ3ROLE1BQU0sQ0FBQ1QsQ0FBQyxFQUFDQyxDQUFDLENBQUM7UUFBQSxDQUFDO1FBQUNtTixlQUFlLEVBQUMsU0FBQUEsZ0JBQVNwTixDQUFDLEVBQUNDLENBQUMsRUFBQztVQUFDLE9BQU8sSUFBSSxDQUFDK04sU0FBUyxDQUFDdk4sTUFBTSxDQUFDVCxDQUFDLEVBQUNDLENBQUMsQ0FBQztRQUFBLENBQUM7UUFBQ2tCLElBQUksRUFBQyxTQUFBQSxLQUFTbkIsQ0FBQyxFQUFDQyxDQUFDLEVBQUM7VUFBQyxJQUFJLENBQUNnTyxPQUFPLEdBQUNqTyxDQUFDLEVBQUMsSUFBSSxDQUFDa08sR0FBRyxHQUFDak8sQ0FBQztRQUFBO01BQUMsQ0FBQyxDQUFDO01BQUM0RixDQUFDLEdBQUN2QixDQUFDLENBQUM2SixHQUFHLEdBQUMsWUFBVTtRQUFDLFNBQVNuTyxDQUFDQSxDQUFDQSxDQUFDLEVBQUNPLENBQUMsRUFBQ0ksQ0FBQyxFQUFDO1VBQUMsSUFBSUMsQ0FBQyxHQUFDLElBQUksQ0FBQ3NOLEdBQUc7VUFBQyxJQUFHdE4sQ0FBQyxFQUFDO1lBQUMsSUFBSUUsQ0FBQyxHQUFDRixDQUFDO1lBQUMsSUFBSSxDQUFDc04sR0FBRyxHQUFDak8sQ0FBQztVQUFBLENBQUMsTUFBSyxJQUFJYSxDQUFDLEdBQUMsSUFBSSxDQUFDc04sVUFBVTtVQUFDLEtBQUksSUFBSTNNLENBQUMsR0FBQyxDQUFDLEVBQUNBLENBQUMsR0FBQ2QsQ0FBQyxFQUFDYyxDQUFDLEVBQUUsRUFBQ3pCLENBQUMsQ0FBQ08sQ0FBQyxHQUFDa0IsQ0FBQyxDQUFDLElBQUVYLENBQUMsQ0FBQ1csQ0FBQyxDQUFDO1FBQUE7UUFBQyxJQUFJbEIsQ0FBQyxHQUFDcUYsQ0FBQyxDQUFDNUUsTUFBTSxFQUFFO1FBQUMsT0FBT1QsQ0FBQyxDQUFDd04sU0FBUyxHQUFDeE4sQ0FBQyxDQUFDUyxNQUFNLENBQUM7VUFBQ3FOLFlBQVksRUFBQyxTQUFBQSxhQUFTcE8sQ0FBQyxFQUFDTSxDQUFDLEVBQUM7WUFBQyxJQUFJSSxDQUFDLEdBQUMsSUFBSSxDQUFDc04sT0FBTztjQUFDck4sQ0FBQyxHQUFDRCxDQUFDLENBQUNzRCxTQUFTO1lBQUNqRSxDQUFDLENBQUNtQyxJQUFJLENBQUMsSUFBSSxFQUFDbEMsQ0FBQyxFQUFDTSxDQUFDLEVBQUNLLENBQUMsQ0FBQyxFQUFDRCxDQUFDLENBQUMyTixZQUFZLENBQUNyTyxDQUFDLEVBQUNNLENBQUMsQ0FBQyxFQUFDLElBQUksQ0FBQzZOLFVBQVUsR0FBQ25PLENBQUMsQ0FBQ21DLEtBQUssQ0FBQzdCLENBQUMsRUFBQ0EsQ0FBQyxHQUFDSyxDQUFDLENBQUM7VUFBQTtRQUFDLENBQUMsQ0FBQyxFQUFDTCxDQUFDLENBQUN5TixTQUFTLEdBQUN6TixDQUFDLENBQUNTLE1BQU0sQ0FBQztVQUFDcU4sWUFBWSxFQUFDLFNBQUFBLGFBQVNwTyxDQUFDLEVBQUNNLENBQUMsRUFBQztZQUFDLElBQUlJLENBQUMsR0FBQyxJQUFJLENBQUNzTixPQUFPO2NBQUNyTixDQUFDLEdBQUNELENBQUMsQ0FBQ3NELFNBQVM7Y0FBQ25ELENBQUMsR0FBQ2IsQ0FBQyxDQUFDbUMsS0FBSyxDQUFDN0IsQ0FBQyxFQUFDQSxDQUFDLEdBQUNLLENBQUMsQ0FBQztZQUFDRCxDQUFDLENBQUM0TixZQUFZLENBQUN0TyxDQUFDLEVBQUNNLENBQUMsQ0FBQyxFQUFDUCxDQUFDLENBQUNtQyxJQUFJLENBQUMsSUFBSSxFQUFDbEMsQ0FBQyxFQUFDTSxDQUFDLEVBQUNLLENBQUMsQ0FBQyxFQUFDLElBQUksQ0FBQ3dOLFVBQVUsR0FBQ3ROLENBQUM7VUFBQTtRQUFDLENBQUMsQ0FBQyxFQUFDUCxDQUFDO01BQUEsQ0FBQyxFQUFFO01BQUN1RixDQUFDLEdBQUN2RixDQUFDLENBQUNpTyxHQUFHLEdBQUMsQ0FBQyxDQUFDO01BQUN6SSxDQUFDLEdBQUNELENBQUMsQ0FBQzJJLEtBQUssR0FBQztRQUFDRCxHQUFHLEVBQUMsU0FBQUEsSUFBU3hPLENBQUMsRUFBQ0MsQ0FBQyxFQUFDO1VBQUMsS0FBSSxJQUFJTSxDQUFDLEdBQUMsQ0FBQyxHQUFDTixDQUFDLEVBQUNVLENBQUMsR0FBQ0osQ0FBQyxHQUFDUCxDQUFDLENBQUM0QixRQUFRLEdBQUNyQixDQUFDLEVBQUNLLENBQUMsR0FBQ0QsQ0FBQyxJQUFFLEVBQUUsR0FBQ0EsQ0FBQyxJQUFFLEVBQUUsR0FBQ0EsQ0FBQyxJQUFFLENBQUMsR0FBQ0EsQ0FBQyxFQUFDYyxDQUFDLEdBQUMsRUFBRSxFQUFDYSxDQUFDLEdBQUMsQ0FBQyxFQUFDQSxDQUFDLEdBQUMzQixDQUFDLEVBQUMyQixDQUFDLElBQUUsQ0FBQyxFQUFDYixDQUFDLENBQUNjLElBQUksQ0FBQzNCLENBQUMsQ0FBQztVQUFDLElBQUlrQixDQUFDLEdBQUNoQixDQUFDLENBQUNMLE1BQU0sQ0FBQ2dCLENBQUMsRUFBQ2QsQ0FBQyxDQUFDO1VBQUNYLENBQUMsQ0FBQ2dDLE1BQU0sQ0FBQ0YsQ0FBQyxDQUFDO1FBQUEsQ0FBQztRQUFDNE0sS0FBSyxFQUFDLFNBQUFBLE1BQVMxTyxDQUFDLEVBQUM7VUFBQyxJQUFJQyxDQUFDLEdBQUMsR0FBRyxHQUFDRCxDQUFDLENBQUMyQixLQUFLLENBQUMzQixDQUFDLENBQUM0QixRQUFRLEdBQUMsQ0FBQyxLQUFHLENBQUMsQ0FBQztVQUFDNUIsQ0FBQyxDQUFDNEIsUUFBUSxJQUFFM0IsQ0FBQztRQUFBO01BQUMsQ0FBQztNQUFDK0YsQ0FBQyxJQUFFckYsQ0FBQyxDQUFDZ08sV0FBVyxHQUFDakwsQ0FBQyxDQUFDMUMsTUFBTSxDQUFDO1FBQUN5RCxHQUFHLEVBQUNmLENBQUMsQ0FBQ2UsR0FBRyxDQUFDekQsTUFBTSxDQUFDO1VBQUM2TSxJQUFJLEVBQUNoSSxDQUFDO1VBQUMrSSxPQUFPLEVBQUM3STtRQUFDLENBQUMsQ0FBQztRQUFDbkMsS0FBSyxFQUFDLFNBQUFBLE1BQUEsRUFBVTtVQUFDRixDQUFDLENBQUNFLEtBQUssQ0FBQ3pCLElBQUksQ0FBQyxJQUFJLENBQUM7VUFBQyxJQUFJbkMsQ0FBQyxHQUFDLElBQUksQ0FBQ3lFLEdBQUc7WUFBQ3hFLENBQUMsR0FBQ0QsQ0FBQyxDQUFDNk8sRUFBRTtZQUFDdE8sQ0FBQyxHQUFDUCxDQUFDLENBQUM2TixJQUFJO1VBQUMsSUFBRyxJQUFJLENBQUNQLFVBQVUsSUFBRSxJQUFJLENBQUNILGVBQWUsRUFBQyxJQUFJeE0sQ0FBQyxHQUFDSixDQUFDLENBQUMyTSxlQUFlLENBQUMsS0FBSTtZQUFDLElBQUl2TSxDQUFDLEdBQUNKLENBQUMsQ0FBQzZNLGVBQWU7WUFBQyxJQUFJLENBQUNqSixjQUFjLEdBQUMsQ0FBQztVQUFBO1VBQUMsSUFBSSxDQUFDMkssS0FBSyxJQUFFLElBQUksQ0FBQ0EsS0FBSyxDQUFDQyxTQUFTLElBQUVwTyxDQUFDLEdBQUMsSUFBSSxDQUFDbU8sS0FBSyxDQUFDM04sSUFBSSxDQUFDLElBQUksRUFBQ2xCLENBQUMsSUFBRUEsQ0FBQyxDQUFDMEIsS0FBSyxDQUFDLElBQUUsSUFBSSxDQUFDbU4sS0FBSyxHQUFDbk8sQ0FBQyxDQUFDd0IsSUFBSSxDQUFDNUIsQ0FBQyxFQUFDLElBQUksRUFBQ04sQ0FBQyxJQUFFQSxDQUFDLENBQUMwQixLQUFLLENBQUMsRUFBQyxJQUFJLENBQUNtTixLQUFLLENBQUNDLFNBQVMsR0FBQ3BPLENBQUMsQ0FBQztRQUFBLENBQUM7UUFBQzBELGVBQWUsRUFBQyxTQUFBQSxnQkFBU3JFLENBQUMsRUFBQ0MsQ0FBQyxFQUFDO1VBQUMsSUFBSSxDQUFDNk8sS0FBSyxDQUFDVCxZQUFZLENBQUNyTyxDQUFDLEVBQUNDLENBQUMsQ0FBQztRQUFBLENBQUM7UUFBQzRFLFdBQVcsRUFBQyxTQUFBQSxZQUFBLEVBQVU7VUFBQyxJQUFJN0UsQ0FBQyxHQUFDLElBQUksQ0FBQ3lFLEdBQUcsQ0FBQ21LLE9BQU87VUFBQyxJQUFHLElBQUksQ0FBQ3RCLFVBQVUsSUFBRSxJQUFJLENBQUNILGVBQWUsRUFBQztZQUFDbk4sQ0FBQyxDQUFDd08sR0FBRyxDQUFDLElBQUksQ0FBQzNLLEtBQUssRUFBQyxJQUFJLENBQUNJLFNBQVMsQ0FBQztZQUFDLElBQUloRSxDQUFDLEdBQUMsSUFBSSxDQUFDK0QsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDO1VBQUEsQ0FBQyxNQUFJO1lBQUMsSUFBSS9ELENBQUMsR0FBQyxJQUFJLENBQUMrRCxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFBQ2hFLENBQUMsQ0FBQzBPLEtBQUssQ0FBQ3pPLENBQUMsQ0FBQztVQUFBO1VBQUMsT0FBT0EsQ0FBQztRQUFBLENBQUM7UUFBQ2dFLFNBQVMsRUFBQztNQUFDLENBQUMsQ0FBQyxFQUFDdEQsQ0FBQyxDQUFDcU8sWUFBWSxHQUFDcE8sQ0FBQyxDQUFDSSxNQUFNLENBQUM7UUFBQ0csSUFBSSxFQUFDLFNBQUFBLEtBQVNuQixDQUFDLEVBQUM7VUFBQyxJQUFJLENBQUNpQixLQUFLLENBQUNqQixDQUFDLENBQUM7UUFBQSxDQUFDO1FBQUN1QixRQUFRLEVBQUMsU0FBQUEsU0FBU3ZCLENBQUMsRUFBQztVQUFDLE9BQU0sQ0FBQ0EsQ0FBQyxJQUFFLElBQUksQ0FBQ2lQLFNBQVMsRUFBRWxOLFNBQVMsQ0FBQyxJQUFJLENBQUM7UUFBQTtNQUFDLENBQUMsQ0FBQyxDQUFDO01BQUNrRSxDQUFDLEdBQUMxRixDQUFDLENBQUMyTyxNQUFNLEdBQUMsQ0FBQyxDQUFDO01BQUNoSixDQUFDLEdBQUNELENBQUMsQ0FBQ2tKLE9BQU8sR0FBQztRQUFDcE4sU0FBUyxFQUFDLFNBQUFBLFVBQVMvQixDQUFDLEVBQUM7VUFBQyxJQUFJQyxDQUFDLEdBQUNELENBQUMsQ0FBQ29QLFVBQVU7WUFBQzdPLENBQUMsR0FBQ1AsQ0FBQyxDQUFDcVAsSUFBSTtVQUFDLElBQUc5TyxDQUFDLEVBQUMsSUFBSUksQ0FBQyxHQUFDRyxDQUFDLENBQUNMLE1BQU0sQ0FBQyxDQUFDLFVBQVUsRUFBQyxVQUFVLENBQUMsQ0FBQyxDQUFDdUIsTUFBTSxDQUFDekIsQ0FBQyxDQUFDLENBQUN5QixNQUFNLENBQUMvQixDQUFDLENBQUMsQ0FBQyxLQUFLLElBQUlVLENBQUMsR0FBQ1YsQ0FBQztVQUFDLE9BQU9VLENBQUMsQ0FBQ1ksUUFBUSxDQUFDTyxDQUFDLENBQUM7UUFBQSxDQUFDO1FBQUNhLEtBQUssRUFBQyxTQUFBQSxNQUFTM0MsQ0FBQyxFQUFDO1VBQUMsSUFBSUMsQ0FBQyxHQUFDNkIsQ0FBQyxDQUFDYSxLQUFLLENBQUMzQyxDQUFDLENBQUM7WUFBQ08sQ0FBQyxHQUFDTixDQUFDLENBQUMwQixLQUFLO1VBQUMsSUFBRyxVQUFVLElBQUVwQixDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUUsVUFBVSxJQUFFQSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUM7WUFBQyxJQUFJSSxDQUFDLEdBQUNHLENBQUMsQ0FBQ0wsTUFBTSxDQUFDRixDQUFDLENBQUM2QixLQUFLLENBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxDQUFDO1lBQUM3QixDQUFDLENBQUNnRSxNQUFNLENBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxFQUFDdEUsQ0FBQyxDQUFDMkIsUUFBUSxJQUFFLEVBQUU7VUFBQTtVQUFDLE9BQU9vRSxDQUFDLENBQUN2RixNQUFNLENBQUM7WUFBQzJPLFVBQVUsRUFBQ25QLENBQUM7WUFBQ29QLElBQUksRUFBQzFPO1VBQUMsQ0FBQyxDQUFDO1FBQUE7TUFBQyxDQUFDO01BQUN3RixDQUFDLEdBQUN4RixDQUFDLENBQUMyTyxrQkFBa0IsR0FBQzFPLENBQUMsQ0FBQ0ksTUFBTSxDQUFDO1FBQUN5RCxHQUFHLEVBQUM3RCxDQUFDLENBQUNJLE1BQU0sQ0FBQztVQUFDa08sTUFBTSxFQUFDaEo7UUFBQyxDQUFDLENBQUM7UUFBQ3dILE9BQU8sRUFBQyxTQUFBQSxRQUFTMU4sQ0FBQyxFQUFDQyxDQUFDLEVBQUNNLENBQUMsRUFBQ0ksQ0FBQyxFQUFDO1VBQUNBLENBQUMsR0FBQyxJQUFJLENBQUM4RCxHQUFHLENBQUN6RCxNQUFNLENBQUNMLENBQUMsQ0FBQztVQUFDLElBQUlDLENBQUMsR0FBQ1osQ0FBQyxDQUFDa04sZUFBZSxDQUFDM00sQ0FBQyxFQUFDSSxDQUFDLENBQUM7WUFBQ0csQ0FBQyxHQUFDRixDQUFDLENBQUNnRSxRQUFRLENBQUMzRSxDQUFDLENBQUM7WUFBQ3dCLENBQUMsR0FBQ2IsQ0FBQyxDQUFDNkQsR0FBRztVQUFDLE9BQU91QixDQUFDLENBQUN2RixNQUFNLENBQUM7WUFBQzJPLFVBQVUsRUFBQ3RPLENBQUM7WUFBQ3lPLEdBQUcsRUFBQ2hQLENBQUM7WUFBQ3NPLEVBQUUsRUFBQ3BOLENBQUMsQ0FBQ29OLEVBQUU7WUFBQ1csU0FBUyxFQUFDeFAsQ0FBQztZQUFDNk4sSUFBSSxFQUFDcE0sQ0FBQyxDQUFDb00sSUFBSTtZQUFDZSxPQUFPLEVBQUNuTixDQUFDLENBQUNtTixPQUFPO1lBQUMzSyxTQUFTLEVBQUNqRSxDQUFDLENBQUNpRSxTQUFTO1lBQUNnTCxTQUFTLEVBQUN0TyxDQUFDLENBQUN1TztVQUFNLENBQUMsQ0FBQztRQUFBLENBQUM7UUFBQ3ZCLE9BQU8sRUFBQyxTQUFBQSxRQUFTM04sQ0FBQyxFQUFDQyxDQUFDLEVBQUNNLENBQUMsRUFBQ0ksQ0FBQyxFQUFDO1VBQUNBLENBQUMsR0FBQyxJQUFJLENBQUM4RCxHQUFHLENBQUN6RCxNQUFNLENBQUNMLENBQUMsQ0FBQyxFQUFDVixDQUFDLEdBQUMsSUFBSSxDQUFDd1AsTUFBTSxDQUFDeFAsQ0FBQyxFQUFDVSxDQUFDLENBQUN1TyxNQUFNLENBQUM7VUFBQyxJQUFJdE8sQ0FBQyxHQUFDWixDQUFDLENBQUNvTixlQUFlLENBQUM3TSxDQUFDLEVBQUNJLENBQUMsQ0FBQyxDQUFDaUUsUUFBUSxDQUFDM0UsQ0FBQyxDQUFDbVAsVUFBVSxDQUFDO1VBQUMsT0FBT3hPLENBQUM7UUFBQSxDQUFDO1FBQUM2TyxNQUFNLEVBQUMsU0FBQUEsT0FBU3pQLENBQUMsRUFBQ0MsQ0FBQyxFQUFDO1VBQUMsT0FBTSxRQUFRLElBQUUsT0FBT0QsQ0FBQyxHQUFDQyxDQUFDLENBQUMwQyxLQUFLLENBQUMzQyxDQUFDLEVBQUMsSUFBSSxDQUFDLEdBQUNBLENBQUM7UUFBQTtNQUFDLENBQUMsQ0FBQztNQUFDb0csQ0FBQyxHQUFDN0YsQ0FBQyxDQUFDbVAsR0FBRyxHQUFDLENBQUMsQ0FBQztNQUFDckosQ0FBQyxHQUFDRCxDQUFDLENBQUMrSSxPQUFPLEdBQUM7UUFBQ1EsT0FBTyxFQUFDLFNBQUFBLFFBQVMzUCxDQUFDLEVBQUNDLENBQUMsRUFBQ00sQ0FBQyxFQUFDSSxDQUFDLEVBQUM7VUFBQ0EsQ0FBQyxLQUFHQSxDQUFDLEdBQUNHLENBQUMsQ0FBQ3VCLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQztVQUFDLElBQUl6QixDQUFDLEdBQUN1QyxDQUFDLENBQUMxQyxNQUFNLENBQUM7Y0FBQ3VJLE9BQU8sRUFBQy9JLENBQUMsR0FBQ007WUFBQyxDQUFDLENBQUMsQ0FBQzRJLE9BQU8sQ0FBQ25KLENBQUMsRUFBQ1csQ0FBQyxDQUFDO1lBQUNjLENBQUMsR0FBQ1gsQ0FBQyxDQUFDTCxNQUFNLENBQUNHLENBQUMsQ0FBQ2UsS0FBSyxDQUFDUyxLQUFLLENBQUNuQyxDQUFDLENBQUMsRUFBQyxDQUFDLEdBQUNNLENBQUMsQ0FBQztVQUFDLE9BQU9LLENBQUMsQ0FBQ2dCLFFBQVEsR0FBQyxDQUFDLEdBQUMzQixDQUFDLEVBQUMrRixDQUFDLENBQUN2RixNQUFNLENBQUM7WUFBQzhPLEdBQUcsRUFBQzNPLENBQUM7WUFBQ2lPLEVBQUUsRUFBQ3BOLENBQUM7WUFBQzROLElBQUksRUFBQzFPO1VBQUMsQ0FBQyxDQUFDO1FBQUE7TUFBQyxDQUFDO01BQUMyRixDQUFDLEdBQUMzRixDQUFDLENBQUNpUCxtQkFBbUIsR0FBQ3pKLENBQUMsQ0FBQ25GLE1BQU0sQ0FBQztRQUFDeUQsR0FBRyxFQUFDMEIsQ0FBQyxDQUFDMUIsR0FBRyxDQUFDekQsTUFBTSxDQUFDO1VBQUMwTyxHQUFHLEVBQUNySjtRQUFDLENBQUMsQ0FBQztRQUFDcUgsT0FBTyxFQUFDLFNBQUFBLFFBQVMxTixDQUFDLEVBQUNDLENBQUMsRUFBQ00sQ0FBQyxFQUFDSSxDQUFDLEVBQUM7VUFBQ0EsQ0FBQyxHQUFDLElBQUksQ0FBQzhELEdBQUcsQ0FBQ3pELE1BQU0sQ0FBQ0wsQ0FBQyxDQUFDO1VBQUMsSUFBSUMsQ0FBQyxHQUFDRCxDQUFDLENBQUMrTyxHQUFHLENBQUNDLE9BQU8sQ0FBQ3BQLENBQUMsRUFBQ1AsQ0FBQyxDQUFDZ0osT0FBTyxFQUFDaEosQ0FBQyxDQUFDeU4sTUFBTSxDQUFDO1VBQUM5TSxDQUFDLENBQUNrTyxFQUFFLEdBQUNqTyxDQUFDLENBQUNpTyxFQUFFO1VBQUMsSUFBSS9OLENBQUMsR0FBQ3FGLENBQUMsQ0FBQ3VILE9BQU8sQ0FBQ3ZMLElBQUksQ0FBQyxJQUFJLEVBQUNuQyxDQUFDLEVBQUNDLENBQUMsRUFBQ1csQ0FBQyxDQUFDMk8sR0FBRyxFQUFDNU8sQ0FBQyxDQUFDO1VBQUMsT0FBT0csQ0FBQyxDQUFDRyxLQUFLLENBQUNMLENBQUMsQ0FBQyxFQUFDRSxDQUFDO1FBQUEsQ0FBQztRQUFDNk0sT0FBTyxFQUFDLFNBQUFBLFFBQVMzTixDQUFDLEVBQUNDLENBQUMsRUFBQ00sQ0FBQyxFQUFDSSxDQUFDLEVBQUM7VUFBQ0EsQ0FBQyxHQUFDLElBQUksQ0FBQzhELEdBQUcsQ0FBQ3pELE1BQU0sQ0FBQ0wsQ0FBQyxDQUFDLEVBQUNWLENBQUMsR0FBQyxJQUFJLENBQUN3UCxNQUFNLENBQUN4UCxDQUFDLEVBQUNVLENBQUMsQ0FBQ3VPLE1BQU0sQ0FBQztVQUFDLElBQUl0TyxDQUFDLEdBQUNELENBQUMsQ0FBQytPLEdBQUcsQ0FBQ0MsT0FBTyxDQUFDcFAsQ0FBQyxFQUFDUCxDQUFDLENBQUNnSixPQUFPLEVBQUNoSixDQUFDLENBQUN5TixNQUFNLEVBQUN4TixDQUFDLENBQUNvUCxJQUFJLENBQUM7VUFBQzFPLENBQUMsQ0FBQ2tPLEVBQUUsR0FBQ2pPLENBQUMsQ0FBQ2lPLEVBQUU7VUFBQyxJQUFJL04sQ0FBQyxHQUFDcUYsQ0FBQyxDQUFDd0gsT0FBTyxDQUFDeEwsSUFBSSxDQUFDLElBQUksRUFBQ25DLENBQUMsRUFBQ0MsQ0FBQyxFQUFDVyxDQUFDLENBQUMyTyxHQUFHLEVBQUM1TyxDQUFDLENBQUM7VUFBQyxPQUFPRyxDQUFDO1FBQUE7TUFBQyxDQUFDLENBQUM7RUFBQSxDQUFDLEVBQUUsRUFBQ2QsQ0FBQyxDQUFDNk4sSUFBSSxDQUFDZ0MsR0FBRyxHQUFDLFlBQVU7SUFBQyxTQUFTNVAsQ0FBQ0EsQ0FBQ0QsQ0FBQyxFQUFDQyxDQUFDLEVBQUNNLENBQUMsRUFBQ0ksQ0FBQyxFQUFDO01BQUMsSUFBSUMsQ0FBQyxHQUFDLElBQUksQ0FBQ3NOLEdBQUc7TUFBQyxJQUFHdE4sQ0FBQyxFQUFDO1FBQUMsSUFBSUUsQ0FBQyxHQUFDRixDQUFDLENBQUN3QixLQUFLLENBQUMsQ0FBQyxDQUFDO1FBQUMsSUFBSSxDQUFDOEwsR0FBRyxHQUFDLEtBQUssQ0FBQztNQUFBLENBQUMsTUFBSyxJQUFJcE4sQ0FBQyxHQUFDLElBQUksQ0FBQ3NOLFVBQVU7TUFBQ3pOLENBQUMsQ0FBQzJOLFlBQVksQ0FBQ3hOLENBQUMsRUFBQyxDQUFDLENBQUM7TUFBQyxLQUFJLElBQUlXLENBQUMsR0FBQyxDQUFDLEVBQUNBLENBQUMsR0FBQ2xCLENBQUMsRUFBQ2tCLENBQUMsRUFBRSxFQUFDekIsQ0FBQyxDQUFDQyxDQUFDLEdBQUN3QixDQUFDLENBQUMsSUFBRVgsQ0FBQyxDQUFDVyxDQUFDLENBQUM7SUFBQTtJQUFDLElBQUlsQixDQUFDLEdBQUNQLENBQUMsQ0FBQ2EsR0FBRyxDQUFDaU4sZUFBZSxDQUFDOU0sTUFBTSxFQUFFO0lBQUMsT0FBT1QsQ0FBQyxDQUFDd04sU0FBUyxHQUFDeE4sQ0FBQyxDQUFDUyxNQUFNLENBQUM7TUFBQ3FOLFlBQVksRUFBQyxTQUFBQSxhQUFTck8sQ0FBQyxFQUFDTyxDQUFDLEVBQUM7UUFBQyxJQUFJSSxDQUFDLEdBQUMsSUFBSSxDQUFDc04sT0FBTztVQUFDck4sQ0FBQyxHQUFDRCxDQUFDLENBQUNzRCxTQUFTO1FBQUNoRSxDQUFDLENBQUNrQyxJQUFJLENBQUMsSUFBSSxFQUFDbkMsQ0FBQyxFQUFDTyxDQUFDLEVBQUNLLENBQUMsRUFBQ0QsQ0FBQyxDQUFDLEVBQUMsSUFBSSxDQUFDeU4sVUFBVSxHQUFDcE8sQ0FBQyxDQUFDb0MsS0FBSyxDQUFDN0IsQ0FBQyxFQUFDQSxDQUFDLEdBQUNLLENBQUMsQ0FBQztNQUFBO0lBQUMsQ0FBQyxDQUFDLEVBQUNMLENBQUMsQ0FBQ3lOLFNBQVMsR0FBQ3pOLENBQUMsQ0FBQ1MsTUFBTSxDQUFDO01BQUNxTixZQUFZLEVBQUMsU0FBQUEsYUFBU3JPLENBQUMsRUFBQ08sQ0FBQyxFQUFDO1FBQUMsSUFBSUksQ0FBQyxHQUFDLElBQUksQ0FBQ3NOLE9BQU87VUFBQ3JOLENBQUMsR0FBQ0QsQ0FBQyxDQUFDc0QsU0FBUztVQUFDbkQsQ0FBQyxHQUFDZCxDQUFDLENBQUNvQyxLQUFLLENBQUM3QixDQUFDLEVBQUNBLENBQUMsR0FBQ0ssQ0FBQyxDQUFDO1FBQUNYLENBQUMsQ0FBQ2tDLElBQUksQ0FBQyxJQUFJLEVBQUNuQyxDQUFDLEVBQUNPLENBQUMsRUFBQ0ssQ0FBQyxFQUFDRCxDQUFDLENBQUMsRUFBQyxJQUFJLENBQUN5TixVQUFVLEdBQUN0TixDQUFDO01BQUE7SUFBQyxDQUFDLENBQUMsRUFBQ1AsQ0FBQztFQUFBLENBQUMsRUFBRSxFQUFDUCxDQUFDLENBQUM2TixJQUFJLENBQUNpQyxHQUFHLEdBQUMsWUFBVTtJQUFDLElBQUk3UCxDQUFDLEdBQUNELENBQUMsQ0FBQ2EsR0FBRyxDQUFDaU4sZUFBZSxDQUFDOU0sTUFBTSxFQUFFO0lBQUMsT0FBT2YsQ0FBQyxDQUFDOE4sU0FBUyxHQUFDOU4sQ0FBQyxDQUFDZSxNQUFNLENBQUM7TUFBQ3FOLFlBQVksRUFBQyxTQUFBQSxhQUFTck8sQ0FBQyxFQUFDQyxDQUFDLEVBQUM7UUFBQyxJQUFJLENBQUNnTyxPQUFPLENBQUNLLFlBQVksQ0FBQ3RPLENBQUMsRUFBQ0MsQ0FBQyxDQUFDO01BQUE7SUFBQyxDQUFDLENBQUMsRUFBQ0EsQ0FBQyxDQUFDK04sU0FBUyxHQUFDL04sQ0FBQyxDQUFDZSxNQUFNLENBQUM7TUFBQ3FOLFlBQVksRUFBQyxTQUFBQSxhQUFTck8sQ0FBQyxFQUFDQyxDQUFDLEVBQUM7UUFBQyxJQUFJLENBQUNnTyxPQUFPLENBQUNNLFlBQVksQ0FBQ3ZPLENBQUMsRUFBQ0MsQ0FBQyxDQUFDO01BQUE7SUFBQyxDQUFDLENBQUMsRUFBQ0EsQ0FBQztFQUFBLENBQUMsRUFBRSxFQUFDRCxDQUFDLENBQUN3TyxHQUFHLENBQUN1QixRQUFRLEdBQUM7SUFBQ3ZCLEdBQUcsRUFBQyxTQUFBQSxJQUFTeE8sQ0FBQyxFQUFDQyxDQUFDLEVBQUM7TUFBQyxJQUFJTSxDQUFDLEdBQUNQLENBQUMsQ0FBQzRCLFFBQVE7UUFBQ2pCLENBQUMsR0FBQyxDQUFDLEdBQUNWLENBQUM7UUFBQ1csQ0FBQyxHQUFDRCxDQUFDLEdBQUNKLENBQUMsR0FBQ0ksQ0FBQztRQUFDRyxDQUFDLEdBQUNQLENBQUMsR0FBQ0ssQ0FBQyxHQUFDLENBQUM7TUFBQ1osQ0FBQyxDQUFDaUMsS0FBSyxFQUFFLEVBQUNqQyxDQUFDLENBQUMyQixLQUFLLENBQUNiLENBQUMsS0FBRyxDQUFDLENBQUMsSUFBRUYsQ0FBQyxJQUFFLEVBQUUsR0FBQ0UsQ0FBQyxHQUFDLENBQUMsR0FBQyxDQUFDLEVBQUNkLENBQUMsQ0FBQzRCLFFBQVEsSUFBRWhCLENBQUM7SUFBQSxDQUFDO0lBQUM4TixLQUFLLEVBQUMsU0FBQUEsTUFBUzFPLENBQUMsRUFBQztNQUFDLElBQUlDLENBQUMsR0FBQyxHQUFHLEdBQUNELENBQUMsQ0FBQzJCLEtBQUssQ0FBQzNCLENBQUMsQ0FBQzRCLFFBQVEsR0FBQyxDQUFDLEtBQUcsQ0FBQyxDQUFDO01BQUM1QixDQUFDLENBQUM0QixRQUFRLElBQUUzQixDQUFDO0lBQUE7RUFBQyxDQUFDLEVBQUNELENBQUMsQ0FBQ3dPLEdBQUcsQ0FBQ3dCLFFBQVEsR0FBQztJQUFDeEIsR0FBRyxFQUFDLFNBQUFBLElBQVN2TyxDQUFDLEVBQUNNLENBQUMsRUFBQztNQUFDLElBQUlJLENBQUMsR0FBQyxDQUFDLEdBQUNKLENBQUM7UUFBQ0ssQ0FBQyxHQUFDRCxDQUFDLEdBQUNWLENBQUMsQ0FBQzJCLFFBQVEsR0FBQ2pCLENBQUM7TUFBQ1YsQ0FBQyxDQUFDK0IsTUFBTSxDQUFDaEMsQ0FBQyxDQUFDYSxHQUFHLENBQUNhLFNBQVMsQ0FBQ1csTUFBTSxDQUFDekIsQ0FBQyxHQUFDLENBQUMsQ0FBQyxDQUFDLENBQUNvQixNQUFNLENBQUNoQyxDQUFDLENBQUNhLEdBQUcsQ0FBQ2EsU0FBUyxDQUFDakIsTUFBTSxDQUFDLENBQUNHLENBQUMsSUFBRSxFQUFFLENBQUMsRUFBQyxDQUFDLENBQUMsQ0FBQztJQUFBLENBQUM7SUFBQzhOLEtBQUssRUFBQyxTQUFBQSxNQUFTMU8sQ0FBQyxFQUFDO01BQUMsSUFBSUMsQ0FBQyxHQUFDLEdBQUcsR0FBQ0QsQ0FBQyxDQUFDMkIsS0FBSyxDQUFDM0IsQ0FBQyxDQUFDNEIsUUFBUSxHQUFDLENBQUMsS0FBRyxDQUFDLENBQUM7TUFBQzVCLENBQUMsQ0FBQzRCLFFBQVEsSUFBRTNCLENBQUM7SUFBQTtFQUFDLENBQUMsRUFBQ0QsQ0FBQyxDQUFDd08sR0FBRyxDQUFDeUIsUUFBUSxHQUFDO0lBQUN6QixHQUFHLEVBQUMsU0FBQUEsSUFBU3ZPLENBQUMsRUFBQ00sQ0FBQyxFQUFDO01BQUNOLENBQUMsQ0FBQytCLE1BQU0sQ0FBQ2hDLENBQUMsQ0FBQ2EsR0FBRyxDQUFDYSxTQUFTLENBQUNqQixNQUFNLENBQUMsQ0FBQyxVQUFVLENBQUMsRUFBQyxDQUFDLENBQUMsQ0FBQyxFQUFDVCxDQUFDLENBQUN3TyxHQUFHLENBQUMwQixXQUFXLENBQUMxQixHQUFHLENBQUN2TyxDQUFDLEVBQUNNLENBQUMsQ0FBQztJQUFBLENBQUM7SUFBQ21PLEtBQUssRUFBQyxTQUFBQSxNQUFTek8sQ0FBQyxFQUFDO01BQUNELENBQUMsQ0FBQ3dPLEdBQUcsQ0FBQzBCLFdBQVcsQ0FBQ3hCLEtBQUssQ0FBQ3pPLENBQUMsQ0FBQyxFQUFDQSxDQUFDLENBQUMyQixRQUFRLEVBQUU7SUFBQTtFQUFDLENBQUMsRUFBQzVCLENBQUMsQ0FBQzZOLElBQUksQ0FBQ3NDLEdBQUcsR0FBQyxZQUFVO0lBQUMsSUFBSWxRLENBQUMsR0FBQ0QsQ0FBQyxDQUFDYSxHQUFHLENBQUNpTixlQUFlLENBQUM5TSxNQUFNLEVBQUU7TUFBQ1QsQ0FBQyxHQUFDTixDQUFDLENBQUM4TixTQUFTLEdBQUM5TixDQUFDLENBQUNlLE1BQU0sQ0FBQztRQUFDcU4sWUFBWSxFQUFDLFNBQUFBLGFBQVNyTyxDQUFDLEVBQUNDLENBQUMsRUFBQztVQUFDLElBQUlNLENBQUMsR0FBQyxJQUFJLENBQUMwTixPQUFPO1lBQUN0TixDQUFDLEdBQUNKLENBQUMsQ0FBQzBELFNBQVM7WUFBQ3JELENBQUMsR0FBQyxJQUFJLENBQUNzTixHQUFHO1lBQUNwTixDQUFDLEdBQUMsSUFBSSxDQUFDc1AsVUFBVTtVQUFDeFAsQ0FBQyxLQUFHRSxDQUFDLEdBQUMsSUFBSSxDQUFDc1AsVUFBVSxHQUFDeFAsQ0FBQyxDQUFDd0IsS0FBSyxDQUFDLENBQUMsQ0FBQyxFQUFDLElBQUksQ0FBQzhMLEdBQUcsR0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFDM04sQ0FBQyxDQUFDK04sWUFBWSxDQUFDeE4sQ0FBQyxFQUFDLENBQUMsQ0FBQztVQUFDLEtBQUksSUFBSVcsQ0FBQyxHQUFDLENBQUMsRUFBQ0EsQ0FBQyxHQUFDZCxDQUFDLEVBQUNjLENBQUMsRUFBRSxFQUFDekIsQ0FBQyxDQUFDQyxDQUFDLEdBQUN3QixDQUFDLENBQUMsSUFBRVgsQ0FBQyxDQUFDVyxDQUFDLENBQUM7UUFBQTtNQUFDLENBQUMsQ0FBQztJQUFDLE9BQU94QixDQUFDLENBQUMrTixTQUFTLEdBQUN6TixDQUFDLEVBQUNOLENBQUM7RUFBQSxDQUFDLEVBQUUsRUFBQ0QsQ0FBQyxDQUFDd08sR0FBRyxDQUFDNkIsU0FBUyxHQUFDO0lBQUM3QixHQUFHLEVBQUMsU0FBQUEsSUFBQSxFQUFVLENBQUMsQ0FBQztJQUFDRSxLQUFLLEVBQUMsU0FBQUEsTUFBQSxFQUFVLENBQUM7RUFBQyxDQUFDLEVBQUMsVUFBU3pPLENBQUMsRUFBQztJQUFDLElBQUlNLENBQUMsR0FBQ1AsQ0FBQztNQUFDVyxDQUFDLEdBQUNKLENBQUMsQ0FBQ00sR0FBRztNQUFDRCxDQUFDLEdBQUNELENBQUMsQ0FBQ3FPLFlBQVk7TUFBQ2xPLENBQUMsR0FBQ1AsQ0FBQyxDQUFDaUMsR0FBRztNQUFDZixDQUFDLEdBQUNYLENBQUMsQ0FBQzJCLEdBQUc7TUFBQ0gsQ0FBQyxHQUFDL0IsQ0FBQyxDQUFDMk8sTUFBTTtJQUFDNU0sQ0FBQyxDQUFDRyxHQUFHLEdBQUM7TUFBQ1YsU0FBUyxFQUFDLFNBQUFBLFVBQVMvQixDQUFDLEVBQUM7UUFBQyxPQUFPQSxDQUFDLENBQUNvUCxVQUFVLENBQUM3TixRQUFRLENBQUNFLENBQUMsQ0FBQztNQUFBLENBQUM7TUFBQ2tCLEtBQUssRUFBQyxTQUFBQSxNQUFTM0MsQ0FBQyxFQUFDO1FBQUMsSUFBSUMsQ0FBQyxHQUFDd0IsQ0FBQyxDQUFDa0IsS0FBSyxDQUFDM0MsQ0FBQyxDQUFDO1FBQUMsT0FBT1ksQ0FBQyxDQUFDSCxNQUFNLENBQUM7VUFBQzJPLFVBQVUsRUFBQ25QO1FBQUMsQ0FBQyxDQUFDO01BQUE7SUFBQyxDQUFDO0VBQUEsQ0FBQyxFQUFFLEVBQUMsWUFBVTtJQUFDLElBQUlBLENBQUMsR0FBQ0QsQ0FBQztNQUFDTyxDQUFDLEdBQUNOLENBQUMsQ0FBQ1ksR0FBRztNQUFDRixDQUFDLEdBQUNKLENBQUMsQ0FBQ29PLFdBQVc7TUFBQy9OLENBQUMsR0FBQ1gsQ0FBQyxDQUFDZ0YsSUFBSTtNQUFDbkUsQ0FBQyxHQUFDLEVBQUU7TUFBQ1csQ0FBQyxHQUFDLEVBQUU7TUFBQ2EsQ0FBQyxHQUFDLEVBQUU7TUFBQ1IsQ0FBQyxHQUFDLEVBQUU7TUFBQ2dCLENBQUMsR0FBQyxFQUFFO01BQUNLLENBQUMsR0FBQyxFQUFFO01BQUNPLENBQUMsR0FBQyxFQUFFO01BQUNZLENBQUMsR0FBQyxFQUFFO01BQUNzQixDQUFDLEdBQUMsRUFBRTtNQUFDQyxDQUFDLEdBQUMsRUFBRTtJQUFDLENBQUMsWUFBVTtNQUFDLEtBQUksSUFBSTdGLENBQUMsR0FBQyxFQUFFLEVBQUNDLENBQUMsR0FBQyxDQUFDLEVBQUNBLENBQUMsR0FBQyxHQUFHLEVBQUNBLENBQUMsRUFBRSxFQUFDQSxDQUFDLEdBQUMsR0FBRyxHQUFDRCxDQUFDLENBQUNDLENBQUMsQ0FBQyxHQUFDQSxDQUFDLElBQUUsQ0FBQyxHQUFDRCxDQUFDLENBQUNDLENBQUMsQ0FBQyxHQUFDQSxDQUFDLElBQUUsQ0FBQyxHQUFDLEdBQUc7TUFBQyxLQUFJLElBQUlNLENBQUMsR0FBQyxDQUFDLEVBQUNJLENBQUMsR0FBQyxDQUFDLEVBQUNWLENBQUMsR0FBQyxDQUFDLEVBQUNBLENBQUMsR0FBQyxHQUFHLEVBQUNBLENBQUMsRUFBRSxFQUFDO1FBQUMsSUFBSVcsQ0FBQyxHQUFDRCxDQUFDLEdBQUNBLENBQUMsSUFBRSxDQUFDLEdBQUNBLENBQUMsSUFBRSxDQUFDLEdBQUNBLENBQUMsSUFBRSxDQUFDLEdBQUNBLENBQUMsSUFBRSxDQUFDO1FBQUNDLENBQUMsR0FBQ0EsQ0FBQyxLQUFHLENBQUMsR0FBQyxHQUFHLEdBQUNBLENBQUMsR0FBQyxFQUFFLEVBQUNFLENBQUMsQ0FBQ1AsQ0FBQyxDQUFDLEdBQUNLLENBQUMsRUFBQ2EsQ0FBQyxDQUFDYixDQUFDLENBQUMsR0FBQ0wsQ0FBQztRQUFDLElBQUl1RixDQUFDLEdBQUM5RixDQUFDLENBQUNPLENBQUMsQ0FBQztVQUFDd0YsQ0FBQyxHQUFDL0YsQ0FBQyxDQUFDOEYsQ0FBQyxDQUFDO1VBQUNFLENBQUMsR0FBQ2hHLENBQUMsQ0FBQytGLENBQUMsQ0FBQztVQUFDRSxDQUFDLEdBQUMsR0FBRyxHQUFDakcsQ0FBQyxDQUFDWSxDQUFDLENBQUMsR0FBQyxRQUFRLEdBQUNBLENBQUM7UUFBQzBCLENBQUMsQ0FBQy9CLENBQUMsQ0FBQyxHQUFDMEYsQ0FBQyxJQUFFLEVBQUUsR0FBQ0EsQ0FBQyxLQUFHLENBQUMsRUFBQ25FLENBQUMsQ0FBQ3ZCLENBQUMsQ0FBQyxHQUFDMEYsQ0FBQyxJQUFFLEVBQUUsR0FBQ0EsQ0FBQyxLQUFHLEVBQUUsRUFBQ25ELENBQUMsQ0FBQ3ZDLENBQUMsQ0FBQyxHQUFDMEYsQ0FBQyxJQUFFLENBQUMsR0FBQ0EsQ0FBQyxLQUFHLEVBQUUsRUFBQzlDLENBQUMsQ0FBQzVDLENBQUMsQ0FBQyxHQUFDMEYsQ0FBQztRQUFDLElBQUlBLENBQUMsR0FBQyxRQUFRLEdBQUNELENBQUMsR0FBQyxLQUFLLEdBQUNELENBQUMsR0FBQyxHQUFHLEdBQUNELENBQUMsR0FBQyxRQUFRLEdBQUN2RixDQUFDO1FBQUNtRCxDQUFDLENBQUM5QyxDQUFDLENBQUMsR0FBQ3FGLENBQUMsSUFBRSxFQUFFLEdBQUNBLENBQUMsS0FBRyxDQUFDLEVBQUMzQixDQUFDLENBQUMxRCxDQUFDLENBQUMsR0FBQ3FGLENBQUMsSUFBRSxFQUFFLEdBQUNBLENBQUMsS0FBRyxFQUFFLEVBQUNMLENBQUMsQ0FBQ2hGLENBQUMsQ0FBQyxHQUFDcUYsQ0FBQyxJQUFFLENBQUMsR0FBQ0EsQ0FBQyxLQUFHLEVBQUUsRUFBQ0osQ0FBQyxDQUFDakYsQ0FBQyxDQUFDLEdBQUNxRixDQUFDLEVBQUMxRixDQUFDLElBQUVBLENBQUMsR0FBQ3VGLENBQUMsR0FBQzlGLENBQUMsQ0FBQ0EsQ0FBQyxDQUFDQSxDQUFDLENBQUNnRyxDQUFDLEdBQUNGLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBQ25GLENBQUMsSUFBRVgsQ0FBQyxDQUFDQSxDQUFDLENBQUNXLENBQUMsQ0FBQyxDQUFDLElBQUVKLENBQUMsR0FBQ0ksQ0FBQyxHQUFDLENBQUM7TUFBQTtJQUFDLENBQUMsRUFBRTtJQUFDLElBQUltRixDQUFDLEdBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLEVBQUUsRUFBQyxFQUFFLEVBQUMsRUFBRSxFQUFDLEdBQUcsRUFBQyxFQUFFLEVBQUMsRUFBRSxDQUFDO01BQUNDLENBQUMsR0FBQ25GLENBQUMsQ0FBQzBQLEdBQUcsR0FBQzNQLENBQUMsQ0FBQ0ssTUFBTSxDQUFDO1FBQUMwRCxRQUFRLEVBQUMsU0FBQUEsU0FBQSxFQUFVO1VBQUMsSUFBRyxDQUFDLElBQUksQ0FBQzZMLFFBQVEsSUFBRSxJQUFJLENBQUNDLGNBQWMsS0FBRyxJQUFJLENBQUNqRCxJQUFJLEVBQUM7WUFBQyxLQUFJLElBQUl2TixDQUFDLEdBQUMsSUFBSSxDQUFDd1EsY0FBYyxHQUFDLElBQUksQ0FBQ2pELElBQUksRUFBQ3ROLENBQUMsR0FBQ0QsQ0FBQyxDQUFDMkIsS0FBSyxFQUFDcEIsQ0FBQyxHQUFDUCxDQUFDLENBQUM0QixRQUFRLEdBQUMsQ0FBQyxFQUFDakIsQ0FBQyxHQUFDLElBQUksQ0FBQzRQLFFBQVEsR0FBQ2hRLENBQUMsR0FBQyxDQUFDLEVBQUNLLENBQUMsR0FBQyxDQUFDLElBQUVELENBQUMsR0FBQyxDQUFDLENBQUMsRUFBQ2MsQ0FBQyxHQUFDLElBQUksQ0FBQ2dQLFlBQVksR0FBQyxFQUFFLEVBQUNuTyxDQUFDLEdBQUMsQ0FBQyxFQUFDQSxDQUFDLEdBQUMxQixDQUFDLEVBQUMwQixDQUFDLEVBQUUsRUFBQyxJQUFHQSxDQUFDLEdBQUMvQixDQUFDLEVBQUNrQixDQUFDLENBQUNhLENBQUMsQ0FBQyxHQUFDckMsQ0FBQyxDQUFDcUMsQ0FBQyxDQUFDLENBQUMsS0FBSTtjQUFDLElBQUlSLENBQUMsR0FBQ0wsQ0FBQyxDQUFDYSxDQUFDLEdBQUMsQ0FBQyxDQUFDO2NBQUNBLENBQUMsR0FBQy9CLENBQUMsR0FBQ0EsQ0FBQyxHQUFDLENBQUMsSUFBRStCLENBQUMsR0FBQy9CLENBQUMsSUFBRSxDQUFDLEtBQUd1QixDQUFDLEdBQUNoQixDQUFDLENBQUNnQixDQUFDLEtBQUcsRUFBRSxDQUFDLElBQUUsRUFBRSxHQUFDaEIsQ0FBQyxDQUFDZ0IsQ0FBQyxLQUFHLEVBQUUsR0FBQyxHQUFHLENBQUMsSUFBRSxFQUFFLEdBQUNoQixDQUFDLENBQUNnQixDQUFDLEtBQUcsQ0FBQyxHQUFDLEdBQUcsQ0FBQyxJQUFFLENBQUMsR0FBQ2hCLENBQUMsQ0FBQyxHQUFHLEdBQUNnQixDQUFDLENBQUMsQ0FBQyxJQUFFQSxDQUFDLEdBQUNBLENBQUMsSUFBRSxDQUFDLEdBQUNBLENBQUMsS0FBRyxFQUFFLEVBQUNBLENBQUMsR0FBQ2hCLENBQUMsQ0FBQ2dCLENBQUMsS0FBRyxFQUFFLENBQUMsSUFBRSxFQUFFLEdBQUNoQixDQUFDLENBQUNnQixDQUFDLEtBQUcsRUFBRSxHQUFDLEdBQUcsQ0FBQyxJQUFFLEVBQUUsR0FBQ2hCLENBQUMsQ0FBQ2dCLENBQUMsS0FBRyxDQUFDLEdBQUMsR0FBRyxDQUFDLElBQUUsQ0FBQyxHQUFDaEIsQ0FBQyxDQUFDLEdBQUcsR0FBQ2dCLENBQUMsQ0FBQyxFQUFDQSxDQUFDLElBQUVnRSxDQUFDLENBQUN4RCxDQUFDLEdBQUMvQixDQUFDLEdBQUMsQ0FBQyxDQUFDLElBQUUsRUFBRSxDQUFDLEVBQUNrQixDQUFDLENBQUNhLENBQUMsQ0FBQyxHQUFDYixDQUFDLENBQUNhLENBQUMsR0FBQy9CLENBQUMsQ0FBQyxHQUFDdUIsQ0FBQztZQUFBO1lBQUMsS0FBSSxJQUFJZ0IsQ0FBQyxHQUFDLElBQUksQ0FBQzROLGVBQWUsR0FBQyxFQUFFLEVBQUN2TixDQUFDLEdBQUMsQ0FBQyxFQUFDQSxDQUFDLEdBQUN2QyxDQUFDLEVBQUN1QyxDQUFDLEVBQUUsRUFBQztjQUFDLElBQUliLENBQUMsR0FBQzFCLENBQUMsR0FBQ3VDLENBQUM7Y0FBQyxJQUFHQSxDQUFDLEdBQUMsQ0FBQyxFQUFDLElBQUlyQixDQUFDLEdBQUNMLENBQUMsQ0FBQ2EsQ0FBQyxDQUFDLENBQUMsS0FBSyxJQUFJUixDQUFDLEdBQUNMLENBQUMsQ0FBQ2EsQ0FBQyxHQUFDLENBQUMsQ0FBQztjQUFDYSxDQUFDLEdBQUMsQ0FBQyxJQUFFYixDQUFDLElBQUUsQ0FBQyxHQUFDUSxDQUFDLENBQUNLLENBQUMsQ0FBQyxHQUFDckIsQ0FBQyxHQUFDZ0IsQ0FBQyxDQUFDSyxDQUFDLENBQUMsR0FBQ08sQ0FBQyxDQUFDNUMsQ0FBQyxDQUFDZ0IsQ0FBQyxLQUFHLEVBQUUsQ0FBQyxDQUFDLEdBQUN3QyxDQUFDLENBQUN4RCxDQUFDLENBQUNnQixDQUFDLEtBQUcsRUFBRSxHQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUM4RCxDQUFDLENBQUM5RSxDQUFDLENBQUNnQixDQUFDLEtBQUcsQ0FBQyxHQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUMrRCxDQUFDLENBQUMvRSxDQUFDLENBQUMsR0FBRyxHQUFDZ0IsQ0FBQyxDQUFDLENBQUM7WUFBQTtVQUFDO1FBQUMsQ0FBQztRQUFDd00sWUFBWSxFQUFDLFNBQUFBLGFBQVN0TyxDQUFDLEVBQUNDLENBQUMsRUFBQztVQUFDLElBQUksQ0FBQzBRLGFBQWEsQ0FBQzNRLENBQUMsRUFBQ0MsQ0FBQyxFQUFDLElBQUksQ0FBQ3dRLFlBQVksRUFBQ25PLENBQUMsRUFBQ1IsQ0FBQyxFQUFDZ0IsQ0FBQyxFQUFDSyxDQUFDLEVBQUNyQyxDQUFDLENBQUM7UUFBQSxDQUFDO1FBQUN5TixZQUFZLEVBQUMsU0FBQUEsYUFBU3ZPLENBQUMsRUFBQ0MsQ0FBQyxFQUFDO1VBQUMsSUFBSU0sQ0FBQyxHQUFDUCxDQUFDLENBQUNDLENBQUMsR0FBQyxDQUFDLENBQUM7VUFBQ0QsQ0FBQyxDQUFDQyxDQUFDLEdBQUMsQ0FBQyxDQUFDLEdBQUNELENBQUMsQ0FBQ0MsQ0FBQyxHQUFDLENBQUMsQ0FBQyxFQUFDRCxDQUFDLENBQUNDLENBQUMsR0FBQyxDQUFDLENBQUMsR0FBQ00sQ0FBQyxFQUFDLElBQUksQ0FBQ29RLGFBQWEsQ0FBQzNRLENBQUMsRUFBQ0MsQ0FBQyxFQUFDLElBQUksQ0FBQ3lRLGVBQWUsRUFBQ2hOLENBQUMsRUFBQ1ksQ0FBQyxFQUFDc0IsQ0FBQyxFQUFDQyxDQUFDLEVBQUNwRSxDQUFDLENBQUM7VUFBQyxJQUFJbEIsQ0FBQyxHQUFDUCxDQUFDLENBQUNDLENBQUMsR0FBQyxDQUFDLENBQUM7VUFBQ0QsQ0FBQyxDQUFDQyxDQUFDLEdBQUMsQ0FBQyxDQUFDLEdBQUNELENBQUMsQ0FBQ0MsQ0FBQyxHQUFDLENBQUMsQ0FBQyxFQUFDRCxDQUFDLENBQUNDLENBQUMsR0FBQyxDQUFDLENBQUMsR0FBQ00sQ0FBQztRQUFBLENBQUM7UUFBQ29RLGFBQWEsRUFBQyxTQUFBQSxjQUFTM1EsQ0FBQyxFQUFDQyxDQUFDLEVBQUNNLENBQUMsRUFBQ0ksQ0FBQyxFQUFDQyxDQUFDLEVBQUNFLENBQUMsRUFBQ1csQ0FBQyxFQUFDYSxDQUFDLEVBQUM7VUFBQyxLQUFJLElBQUlSLENBQUMsR0FBQyxJQUFJLENBQUN5TyxRQUFRLEVBQUN6TixDQUFDLEdBQUM5QyxDQUFDLENBQUNDLENBQUMsQ0FBQyxHQUFDTSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUM0QyxDQUFDLEdBQUNuRCxDQUFDLENBQUNDLENBQUMsR0FBQyxDQUFDLENBQUMsR0FBQ00sQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFDbUQsQ0FBQyxHQUFDMUQsQ0FBQyxDQUFDQyxDQUFDLEdBQUMsQ0FBQyxDQUFDLEdBQUNNLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBQytELENBQUMsR0FBQ3RFLENBQUMsQ0FBQ0MsQ0FBQyxHQUFDLENBQUMsQ0FBQyxHQUFDTSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUNxRixDQUFDLEdBQUMsQ0FBQyxFQUFDQyxDQUFDLEdBQUMsQ0FBQyxFQUFDQSxDQUFDLEdBQUMvRCxDQUFDLEVBQUMrRCxDQUFDLEVBQUUsRUFBQztZQUFDLElBQUlDLENBQUMsR0FBQ25GLENBQUMsQ0FBQ21DLENBQUMsS0FBRyxFQUFFLENBQUMsR0FBQ2xDLENBQUMsQ0FBQ3VDLENBQUMsS0FBRyxFQUFFLEdBQUMsR0FBRyxDQUFDLEdBQUNyQyxDQUFDLENBQUM0QyxDQUFDLEtBQUcsQ0FBQyxHQUFDLEdBQUcsQ0FBQyxHQUFDakMsQ0FBQyxDQUFDLEdBQUcsR0FBQzZDLENBQUMsQ0FBQyxHQUFDL0QsQ0FBQyxDQUFDcUYsQ0FBQyxFQUFFLENBQUM7Y0FBQ0csQ0FBQyxHQUFDcEYsQ0FBQyxDQUFDd0MsQ0FBQyxLQUFHLEVBQUUsQ0FBQyxHQUFDdkMsQ0FBQyxDQUFDOEMsQ0FBQyxLQUFHLEVBQUUsR0FBQyxHQUFHLENBQUMsR0FBQzVDLENBQUMsQ0FBQ3dELENBQUMsS0FBRyxDQUFDLEdBQUMsR0FBRyxDQUFDLEdBQUM3QyxDQUFDLENBQUMsR0FBRyxHQUFDcUIsQ0FBQyxDQUFDLEdBQUN2QyxDQUFDLENBQUNxRixDQUFDLEVBQUUsQ0FBQztjQUFDSSxDQUFDLEdBQUNyRixDQUFDLENBQUMrQyxDQUFDLEtBQUcsRUFBRSxDQUFDLEdBQUM5QyxDQUFDLENBQUMwRCxDQUFDLEtBQUcsRUFBRSxHQUFDLEdBQUcsQ0FBQyxHQUFDeEQsQ0FBQyxDQUFDZ0MsQ0FBQyxLQUFHLENBQUMsR0FBQyxHQUFHLENBQUMsR0FBQ3JCLENBQUMsQ0FBQyxHQUFHLEdBQUMwQixDQUFDLENBQUMsR0FBQzVDLENBQUMsQ0FBQ3FGLENBQUMsRUFBRSxDQUFDO2NBQUNLLENBQUMsR0FBQ3RGLENBQUMsQ0FBQzJELENBQUMsS0FBRyxFQUFFLENBQUMsR0FBQzFELENBQUMsQ0FBQ2tDLENBQUMsS0FBRyxFQUFFLEdBQUMsR0FBRyxDQUFDLEdBQUNoQyxDQUFDLENBQUNxQyxDQUFDLEtBQUcsQ0FBQyxHQUFDLEdBQUcsQ0FBQyxHQUFDMUIsQ0FBQyxDQUFDLEdBQUcsR0FBQ2lDLENBQUMsQ0FBQyxHQUFDbkQsQ0FBQyxDQUFDcUYsQ0FBQyxFQUFFLENBQUM7WUFBQzlDLENBQUMsR0FBQ2dELENBQUMsRUFBQzNDLENBQUMsR0FBQzRDLENBQUMsRUFBQ3JDLENBQUMsR0FBQ3NDLENBQUMsRUFBQzFCLENBQUMsR0FBQzJCLENBQUM7VUFBQTtVQUFDLElBQUlILENBQUMsR0FBQyxDQUFDeEQsQ0FBQyxDQUFDUSxDQUFDLEtBQUcsRUFBRSxDQUFDLElBQUUsRUFBRSxHQUFDUixDQUFDLENBQUNhLENBQUMsS0FBRyxFQUFFLEdBQUMsR0FBRyxDQUFDLElBQUUsRUFBRSxHQUFDYixDQUFDLENBQUNvQixDQUFDLEtBQUcsQ0FBQyxHQUFDLEdBQUcsQ0FBQyxJQUFFLENBQUMsR0FBQ3BCLENBQUMsQ0FBQyxHQUFHLEdBQUNnQyxDQUFDLENBQUMsSUFBRS9ELENBQUMsQ0FBQ3FGLENBQUMsRUFBRSxDQUFDO1lBQUNHLENBQUMsR0FBQyxDQUFDekQsQ0FBQyxDQUFDYSxDQUFDLEtBQUcsRUFBRSxDQUFDLElBQUUsRUFBRSxHQUFDYixDQUFDLENBQUNvQixDQUFDLEtBQUcsRUFBRSxHQUFDLEdBQUcsQ0FBQyxJQUFFLEVBQUUsR0FBQ3BCLENBQUMsQ0FBQ2dDLENBQUMsS0FBRyxDQUFDLEdBQUMsR0FBRyxDQUFDLElBQUUsQ0FBQyxHQUFDaEMsQ0FBQyxDQUFDLEdBQUcsR0FBQ1EsQ0FBQyxDQUFDLElBQUV2QyxDQUFDLENBQUNxRixDQUFDLEVBQUUsQ0FBQztZQUFDSSxDQUFDLEdBQUMsQ0FBQzFELENBQUMsQ0FBQ29CLENBQUMsS0FBRyxFQUFFLENBQUMsSUFBRSxFQUFFLEdBQUNwQixDQUFDLENBQUNnQyxDQUFDLEtBQUcsRUFBRSxHQUFDLEdBQUcsQ0FBQyxJQUFFLEVBQUUsR0FBQ2hDLENBQUMsQ0FBQ1EsQ0FBQyxLQUFHLENBQUMsR0FBQyxHQUFHLENBQUMsSUFBRSxDQUFDLEdBQUNSLENBQUMsQ0FBQyxHQUFHLEdBQUNhLENBQUMsQ0FBQyxJQUFFNUMsQ0FBQyxDQUFDcUYsQ0FBQyxFQUFFLENBQUM7WUFBQ0ssQ0FBQyxHQUFDLENBQUMzRCxDQUFDLENBQUNnQyxDQUFDLEtBQUcsRUFBRSxDQUFDLElBQUUsRUFBRSxHQUFDaEMsQ0FBQyxDQUFDUSxDQUFDLEtBQUcsRUFBRSxHQUFDLEdBQUcsQ0FBQyxJQUFFLEVBQUUsR0FBQ1IsQ0FBQyxDQUFDYSxDQUFDLEtBQUcsQ0FBQyxHQUFDLEdBQUcsQ0FBQyxJQUFFLENBQUMsR0FBQ2IsQ0FBQyxDQUFDLEdBQUcsR0FBQ29CLENBQUMsQ0FBQyxJQUFFbkQsQ0FBQyxDQUFDcUYsQ0FBQyxFQUFFLENBQUM7VUFBQzVGLENBQUMsQ0FBQ0MsQ0FBQyxDQUFDLEdBQUM2RixDQUFDLEVBQUM5RixDQUFDLENBQUNDLENBQUMsR0FBQyxDQUFDLENBQUMsR0FBQzhGLENBQUMsRUFBQy9GLENBQUMsQ0FBQ0MsQ0FBQyxHQUFDLENBQUMsQ0FBQyxHQUFDK0YsQ0FBQyxFQUFDaEcsQ0FBQyxDQUFDQyxDQUFDLEdBQUMsQ0FBQyxDQUFDLEdBQUNnRyxDQUFDO1FBQUEsQ0FBQztRQUFDK0MsT0FBTyxFQUFDO01BQUMsQ0FBQyxDQUFDO0lBQUMvSSxDQUFDLENBQUNxUSxHQUFHLEdBQUMzUCxDQUFDLENBQUNtRSxhQUFhLENBQUNpQixDQUFDLENBQUM7RUFBQSxDQUFDLEVBQUUsRUFBQyxZQUFVO0lBQUMsU0FBUzlGLENBQUNBLENBQUNELENBQUMsRUFBQ0MsQ0FBQyxFQUFDO01BQUMsSUFBSU0sQ0FBQyxHQUFDLENBQUMsSUFBSSxDQUFDcVEsT0FBTyxLQUFHNVEsQ0FBQyxHQUFDLElBQUksQ0FBQzZRLE9BQU8sSUFBRTVRLENBQUM7TUFBQyxJQUFJLENBQUM0USxPQUFPLElBQUV0USxDQUFDLEVBQUMsSUFBSSxDQUFDcVEsT0FBTyxJQUFFclEsQ0FBQyxJQUFFUCxDQUFDO0lBQUE7SUFBQyxTQUFTTyxDQUFDQSxDQUFDUCxDQUFDLEVBQUNDLENBQUMsRUFBQztNQUFDLElBQUlNLENBQUMsR0FBQyxDQUFDLElBQUksQ0FBQ3NRLE9BQU8sS0FBRzdRLENBQUMsR0FBQyxJQUFJLENBQUM0USxPQUFPLElBQUUzUSxDQUFDO01BQUMsSUFBSSxDQUFDMlEsT0FBTyxJQUFFclEsQ0FBQyxFQUFDLElBQUksQ0FBQ3NRLE9BQU8sSUFBRXRRLENBQUMsSUFBRVAsQ0FBQztJQUN2dytCO0lBQUMsSUFBSVcsQ0FBQyxHQUFDWCxDQUFDO01BQUNZLENBQUMsR0FBQ0QsQ0FBQyxDQUFDRSxHQUFHO01BQUNDLENBQUMsR0FBQ0YsQ0FBQyxDQUFDYyxTQUFTO01BQUNELENBQUMsR0FBQ2IsQ0FBQyxDQUFDK04sV0FBVztNQUFDck0sQ0FBQyxHQUFDM0IsQ0FBQyxDQUFDc0UsSUFBSTtNQUFDbkQsQ0FBQyxHQUFDLENBQUMsRUFBRSxFQUFDLEVBQUUsRUFBQyxFQUFFLEVBQUMsRUFBRSxFQUFDLEVBQUUsRUFBQyxFQUFFLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxFQUFFLEVBQUMsRUFBRSxFQUFDLEVBQUUsRUFBQyxFQUFFLEVBQUMsRUFBRSxFQUFDLEVBQUUsRUFBQyxFQUFFLEVBQUMsQ0FBQyxFQUFDLEVBQUUsRUFBQyxFQUFFLEVBQUMsRUFBRSxFQUFDLEVBQUUsRUFBQyxFQUFFLEVBQUMsRUFBRSxFQUFDLEVBQUUsRUFBQyxDQUFDLEVBQUMsRUFBRSxFQUFDLEVBQUUsRUFBQyxFQUFFLEVBQUMsRUFBRSxFQUFDLEVBQUUsRUFBQyxFQUFFLEVBQUMsRUFBRSxFQUFDLEVBQUUsRUFBQyxFQUFFLEVBQUMsRUFBRSxFQUFDLEVBQUUsRUFBQyxDQUFDLEVBQUMsRUFBRSxFQUFDLEVBQUUsRUFBQyxFQUFFLEVBQUMsRUFBRSxFQUFDLEVBQUUsRUFBQyxFQUFFLEVBQUMsRUFBRSxFQUFDLENBQUMsRUFBQyxFQUFFLEVBQUMsRUFBRSxFQUFDLEVBQUUsRUFBQyxFQUFFLEVBQUMsRUFBRSxFQUFDLEVBQUUsRUFBQyxFQUFFLEVBQUMsQ0FBQyxFQUFDLEVBQUUsRUFBQyxFQUFFLEVBQUMsRUFBRSxFQUFDLENBQUMsQ0FBQztNQUFDZ0IsQ0FBQyxHQUFDLENBQUMsRUFBRSxFQUFDLEVBQUUsRUFBQyxFQUFFLEVBQUMsRUFBRSxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLEVBQUUsRUFBQyxFQUFFLEVBQUMsQ0FBQyxFQUFDLEVBQUUsRUFBQyxFQUFFLEVBQUMsRUFBRSxFQUFDLEVBQUUsRUFBQyxFQUFFLEVBQUMsQ0FBQyxFQUFDLEVBQUUsRUFBQyxDQUFDLEVBQUMsRUFBRSxFQUFDLENBQUMsRUFBQyxFQUFFLEVBQUMsRUFBRSxFQUFDLEVBQUUsRUFBQyxDQUFDLEVBQUMsRUFBRSxFQUFDLEVBQUUsRUFBQyxFQUFFLEVBQUMsRUFBRSxFQUFDLEVBQUUsRUFBQyxFQUFFLEVBQUMsRUFBRSxFQUFDLEVBQUUsRUFBQyxFQUFFLEVBQUMsRUFBRSxFQUFDLEVBQUUsRUFBQyxFQUFFLEVBQUMsRUFBRSxFQUFDLEVBQUUsRUFBQyxFQUFFLEVBQUMsRUFBRSxFQUFDLEVBQUUsRUFBQyxFQUFFLEVBQUMsRUFBRSxFQUFDLEVBQUUsRUFBQyxFQUFFLEVBQUMsRUFBRSxFQUFDLEVBQUUsRUFBQyxFQUFFLENBQUM7TUFBQ0ssQ0FBQyxHQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxFQUFFLEVBQUMsRUFBRSxFQUFDLEVBQUUsRUFBQyxFQUFFLEVBQUMsRUFBRSxFQUFDLEVBQUUsRUFBQyxFQUFFLEVBQUMsRUFBRSxFQUFDLEVBQUUsRUFBQyxFQUFFLEVBQUMsRUFBRSxDQUFDO01BQUNPLENBQUMsR0FBQyxDQUFDO1FBQUMsQ0FBQyxFQUFDLE9BQU87UUFBQyxTQUFTLEVBQUMsS0FBSztRQUFDLFNBQVMsRUFBQyxPQUFPO1FBQUMsU0FBUyxFQUFDLENBQUM7UUFBQyxVQUFVLEVBQUMsR0FBRztRQUFDLFVBQVUsRUFBQyxPQUFPO1FBQUMsVUFBVSxFQUFDLE9BQU87UUFBQyxVQUFVLEVBQUMsT0FBTztRQUFDLFVBQVUsRUFBQyxHQUFHO1FBQUMsVUFBVSxFQUFDLE9BQU87UUFBQyxVQUFVLEVBQUMsS0FBSztRQUFDLFVBQVUsRUFBQyxPQUFPO1FBQUMsVUFBVSxFQUFDLEtBQUs7UUFBQyxVQUFVLEVBQUMsT0FBTztRQUFDLFVBQVUsRUFBQyxDQUFDO1FBQUMsVUFBVSxFQUFDLEtBQUs7UUFBQyxTQUFTLEVBQUMsQ0FBQztRQUFDLFNBQVMsRUFBQyxPQUFPO1FBQUMsU0FBUyxFQUFDLEtBQUs7UUFBQyxTQUFTLEVBQUMsS0FBSztRQUFDLFVBQVUsRUFBQyxPQUFPO1FBQUMsVUFBVSxFQUFDLEdBQUc7UUFBQyxVQUFVLEVBQUMsT0FBTztRQUFDLFVBQVUsRUFBQyxDQUFDO1FBQUMsVUFBVSxFQUFDLE9BQU87UUFBQyxVQUFVLEVBQUMsS0FBSztRQUFDLFVBQVUsRUFBQyxPQUFPO1FBQUMsVUFBVSxFQUFDLE9BQU87UUFBQyxVQUFVLEVBQUMsT0FBTztRQUFDLFVBQVUsRUFBQyxLQUFLO1FBQUMsVUFBVSxFQUFDLEdBQUc7UUFBQyxVQUFVLEVBQUMsT0FBTztRQUFDLENBQUMsRUFBQyxLQUFLO1FBQUMsU0FBUyxFQUFDLENBQUM7UUFBQyxTQUFTLEVBQUMsT0FBTztRQUFDLFNBQVMsRUFBQyxPQUFPO1FBQUMsVUFBVSxFQUFDLE9BQU87UUFBQyxVQUFVLEVBQUMsS0FBSztRQUFDLFVBQVUsRUFBQyxHQUFHO1FBQUMsVUFBVSxFQUFDLE9BQU87UUFBQyxVQUFVLEVBQUMsT0FBTztRQUFDLFVBQVUsRUFBQyxPQUFPO1FBQUMsVUFBVSxFQUFDLE9BQU87UUFBQyxVQUFVLEVBQUMsS0FBSztRQUFDLFVBQVUsRUFBQyxHQUFHO1FBQUMsVUFBVSxFQUFDLE9BQU87UUFBQyxVQUFVLEVBQUMsS0FBSztRQUFDLFVBQVUsRUFBQyxDQUFDO1FBQUMsU0FBUyxFQUFDLE9BQU87UUFBQyxTQUFTLEVBQUMsT0FBTztRQUFDLFNBQVMsRUFBQyxPQUFPO1FBQUMsU0FBUyxFQUFDLEdBQUc7UUFBQyxVQUFVLEVBQUMsS0FBSztRQUFDLFVBQVUsRUFBQyxPQUFPO1FBQUMsVUFBVSxFQUFDLENBQUM7UUFBQyxVQUFVLEVBQUMsS0FBSztRQUFDLFVBQVUsRUFBQyxLQUFLO1FBQUMsVUFBVSxFQUFDLE9BQU87UUFBQyxVQUFVLEVBQUMsR0FBRztRQUFDLFVBQVUsRUFBQyxPQUFPO1FBQUMsVUFBVSxFQUFDLE9BQU87UUFBQyxVQUFVLEVBQUMsQ0FBQztRQUFDLFVBQVUsRUFBQyxLQUFLO1FBQUMsVUFBVSxFQUFDO01BQU8sQ0FBQyxFQUFDO1FBQUMsQ0FBQyxFQUFDLFVBQVU7UUFBQyxRQUFRLEVBQUMsS0FBSztRQUFDLFFBQVEsRUFBQyxNQUFNO1FBQUMsUUFBUSxFQUFDLFVBQVU7UUFBQyxRQUFRLEVBQUMsVUFBVTtRQUFDLFFBQVEsRUFBQyxVQUFVO1FBQUMsU0FBUyxFQUFDLFVBQVU7UUFBQyxTQUFTLEVBQUMsRUFBRTtRQUFDLFNBQVMsRUFBQyxNQUFNO1FBQUMsU0FBUyxFQUFDLFVBQVU7UUFBQyxTQUFTLEVBQUMsVUFBVTtRQUFDLFNBQVMsRUFBQyxNQUFNO1FBQUMsU0FBUyxFQUFDLE1BQU07UUFBQyxTQUFTLEVBQUMsQ0FBQztRQUFDLFNBQVMsRUFBQyxLQUFLO1FBQUMsU0FBUyxFQUFDLFVBQVU7UUFBQyxPQUFPLEVBQUMsVUFBVTtRQUFDLFFBQVEsRUFBQyxNQUFNO1FBQUMsUUFBUSxFQUFDLEVBQUU7UUFBQyxRQUFRLEVBQUMsVUFBVTtRQUFDLFFBQVEsRUFBQyxVQUFVO1FBQUMsUUFBUSxFQUFDLFVBQVU7UUFBQyxTQUFTLEVBQUMsTUFBTTtRQUFDLFNBQVMsRUFBQyxVQUFVO1FBQUMsU0FBUyxFQUFDLE1BQU07UUFBQyxTQUFTLEVBQUMsQ0FBQztRQUFDLFNBQVMsRUFBQyxLQUFLO1FBQUMsU0FBUyxFQUFDLFVBQVU7UUFBQyxTQUFTLEVBQUMsVUFBVTtRQUFDLFNBQVMsRUFBQyxNQUFNO1FBQUMsU0FBUyxFQUFDLFVBQVU7UUFBQyxTQUFTLEVBQUMsS0FBSztRQUFDLFNBQVMsRUFBQyxDQUFDO1FBQUMsU0FBUyxFQUFDLFVBQVU7UUFBQyxTQUFTLEVBQUMsVUFBVTtRQUFDLFNBQVMsRUFBQyxVQUFVO1FBQUMsU0FBUyxFQUFDLFVBQVU7UUFBQyxTQUFTLEVBQUMsRUFBRTtRQUFDLFNBQVMsRUFBQyxNQUFNO1FBQUMsU0FBUyxFQUFDLEtBQUs7UUFBQyxTQUFTLEVBQUMsS0FBSztRQUFDLFNBQVMsRUFBQyxNQUFNO1FBQUMsU0FBUyxFQUFDLE1BQU07UUFBQyxTQUFTLEVBQUMsVUFBVTtRQUFDLFNBQVMsRUFBQyxNQUFNO1FBQUMsU0FBUyxFQUFDLFVBQVU7UUFBQyxTQUFTLEVBQUMsVUFBVTtRQUFDLFNBQVMsRUFBQyxVQUFVO1FBQUMsU0FBUyxFQUFDLE1BQU07UUFBQyxTQUFTLEVBQUMsTUFBTTtRQUFDLFNBQVMsRUFBQyxVQUFVO1FBQUMsU0FBUyxFQUFDLEtBQUs7UUFBQyxTQUFTLEVBQUMsVUFBVTtRQUFDLFNBQVMsRUFBQyxVQUFVO1FBQUMsU0FBUyxFQUFDLEVBQUU7UUFBQyxTQUFTLEVBQUMsVUFBVTtRQUFDLFNBQVMsRUFBQyxVQUFVO1FBQUMsU0FBUyxFQUFDLFVBQVU7UUFBQyxTQUFTLEVBQUMsVUFBVTtRQUFDLFNBQVMsRUFBQyxNQUFNO1FBQUMsU0FBUyxFQUFDLENBQUM7UUFBQyxTQUFTLEVBQUMsS0FBSztRQUFDLFNBQVMsRUFBQyxVQUFVO1FBQUMsU0FBUyxFQUFDO01BQU0sQ0FBQyxFQUFDO1FBQUMsQ0FBQyxFQUFDLEdBQUc7UUFBQyxPQUFPLEVBQUMsQ0FBQztRQUFDLE9BQU8sRUFBQyxRQUFRO1FBQUMsT0FBTyxFQUFDLEtBQUs7UUFBQyxPQUFPLEVBQUMsS0FBSztRQUFDLE9BQU8sRUFBQyxRQUFRO1FBQUMsT0FBTyxFQUFDLFFBQVE7UUFBQyxPQUFPLEVBQUMsUUFBUTtRQUFDLE9BQU8sRUFBQyxRQUFRO1FBQUMsT0FBTyxFQUFDLFFBQVE7UUFBQyxRQUFRLEVBQUMsS0FBSztRQUFDLFFBQVEsRUFBQyxRQUFRO1FBQUMsUUFBUSxFQUFDLFFBQVE7UUFBQyxRQUFRLEVBQUMsS0FBSztRQUFDLFFBQVEsRUFBQyxDQUFDO1FBQUMsUUFBUSxFQUFDLEdBQUc7UUFBQyxNQUFNLEVBQUMsUUFBUTtRQUFDLE9BQU8sRUFBQyxRQUFRO1FBQUMsT0FBTyxFQUFDLENBQUM7UUFBQyxPQUFPLEVBQUMsUUFBUTtRQUFDLE9BQU8sRUFBQyxRQUFRO1FBQUMsT0FBTyxFQUFDLEtBQUs7UUFBQyxPQUFPLEVBQUMsS0FBSztRQUFDLE9BQU8sRUFBQyxHQUFHO1FBQUMsT0FBTyxFQUFDLENBQUM7UUFBQyxPQUFPLEVBQUMsR0FBRztRQUFDLFFBQVEsRUFBQyxRQUFRO1FBQUMsUUFBUSxFQUFDLEtBQUs7UUFBQyxRQUFRLEVBQUMsS0FBSztRQUFDLFFBQVEsRUFBQyxRQUFRO1FBQUMsUUFBUSxFQUFDLFFBQVE7UUFBQyxRQUFRLEVBQUMsUUFBUTtRQUFDLFFBQVEsRUFBQyxRQUFRO1FBQUMsUUFBUSxFQUFDLEtBQUs7UUFBQyxRQUFRLEVBQUMsS0FBSztRQUFDLFFBQVEsRUFBQyxRQUFRO1FBQUMsUUFBUSxFQUFDLEdBQUc7UUFBQyxRQUFRLEVBQUMsUUFBUTtRQUFDLFFBQVEsRUFBQyxRQUFRO1FBQUMsUUFBUSxFQUFDLENBQUM7UUFBQyxRQUFRLEVBQUMsUUFBUTtRQUFDLFFBQVEsRUFBQyxRQUFRO1FBQUMsUUFBUSxFQUFDLENBQUM7UUFBQyxRQUFRLEVBQUMsS0FBSztRQUFDLFFBQVEsRUFBQyxRQUFRO1FBQUMsUUFBUSxFQUFDLEdBQUc7UUFBQyxRQUFRLEVBQUMsS0FBSztRQUFDLFFBQVEsRUFBQyxRQUFRO1FBQUMsUUFBUSxFQUFDLFFBQVE7UUFBQyxRQUFRLEVBQUMsR0FBRztRQUFDLFFBQVEsRUFBQyxRQUFRO1FBQUMsUUFBUSxFQUFDLENBQUM7UUFBQyxRQUFRLEVBQUMsS0FBSztRQUFDLFFBQVEsRUFBQyxRQUFRO1FBQUMsUUFBUSxFQUFDLEdBQUc7UUFBQyxRQUFRLEVBQUMsUUFBUTtRQUFDLFFBQVEsRUFBQyxLQUFLO1FBQUMsUUFBUSxFQUFDLFFBQVE7UUFBQyxRQUFRLEVBQUMsS0FBSztRQUFDLFFBQVEsRUFBQyxRQUFRO1FBQUMsUUFBUSxFQUFDLFFBQVE7UUFBQyxRQUFRLEVBQUMsUUFBUTtRQUFDLFFBQVEsRUFBQyxDQUFDO1FBQUMsUUFBUSxFQUFDO01BQUssQ0FBQyxFQUFDO1FBQUMsQ0FBQyxFQUFDLFVBQVU7UUFBQyxLQUFLLEVBQUMsVUFBVTtRQUFDLE1BQU0sRUFBQyxPQUFPO1FBQUMsTUFBTSxFQUFDLFVBQVU7UUFBQyxNQUFNLEVBQUMsQ0FBQztRQUFDLE1BQU0sRUFBQyxPQUFPO1FBQUMsTUFBTSxFQUFDLFVBQVU7UUFBQyxNQUFNLEVBQUMsT0FBTztRQUFDLE1BQU0sRUFBQyxVQUFVO1FBQUMsTUFBTSxFQUFDLE9BQU87UUFBQyxNQUFNLEVBQUMsRUFBRTtRQUFDLE1BQU0sRUFBQyxVQUFVO1FBQUMsTUFBTSxFQUFDLFVBQVU7UUFBQyxNQUFNLEVBQUMsSUFBSTtRQUFDLE1BQU0sRUFBQyxJQUFJO1FBQUMsTUFBTSxFQUFDLFVBQVU7UUFBQyxLQUFLLEVBQUMsVUFBVTtRQUFDLEtBQUssRUFBQyxFQUFFO1FBQUMsTUFBTSxFQUFDLFVBQVU7UUFBQyxNQUFNLEVBQUMsVUFBVTtRQUFDLE1BQU0sRUFBQyxPQUFPO1FBQUMsTUFBTSxFQUFDLFVBQVU7UUFBQyxNQUFNLEVBQUMsQ0FBQztRQUFDLE1BQU0sRUFBQyxVQUFVO1FBQUMsTUFBTSxFQUFDLElBQUk7UUFBQyxNQUFNLEVBQUMsVUFBVTtRQUFDLE1BQU0sRUFBQyxPQUFPO1FBQUMsTUFBTSxFQUFDLElBQUk7UUFBQyxNQUFNLEVBQUMsVUFBVTtRQUFDLE1BQU0sRUFBQyxPQUFPO1FBQUMsTUFBTSxFQUFDLE9BQU87UUFBQyxPQUFPLEVBQUMsVUFBVTtRQUFDLE9BQU8sRUFBQyxPQUFPO1FBQUMsT0FBTyxFQUFDLE9BQU87UUFBQyxPQUFPLEVBQUMsVUFBVTtRQUFDLE9BQU8sRUFBQyxDQUFDO1FBQUMsT0FBTyxFQUFDLElBQUk7UUFBQyxPQUFPLEVBQUMsVUFBVTtRQUFDLE9BQU8sRUFBQyxVQUFVO1FBQUMsT0FBTyxFQUFDLFVBQVU7UUFBQyxPQUFPLEVBQUMsVUFBVTtRQUFDLE9BQU8sRUFBQyxVQUFVO1FBQUMsT0FBTyxFQUFDLFVBQVU7UUFBQyxPQUFPLEVBQUMsT0FBTztRQUFDLE9BQU8sRUFBQyxVQUFVO1FBQUMsT0FBTyxFQUFDLE9BQU87UUFBQyxPQUFPLEVBQUMsRUFBRTtRQUFDLE9BQU8sRUFBQyxJQUFJO1FBQUMsT0FBTyxFQUFDLFVBQVU7UUFBQyxPQUFPLEVBQUMsVUFBVTtRQUFDLE9BQU8sRUFBQyxDQUFDO1FBQUMsT0FBTyxFQUFDLE9BQU87UUFBQyxPQUFPLEVBQUMsT0FBTztRQUFDLE9BQU8sRUFBQyxVQUFVO1FBQUMsT0FBTyxFQUFDLFVBQVU7UUFBQyxPQUFPLEVBQUMsRUFBRTtRQUFDLE9BQU8sRUFBQyxVQUFVO1FBQUMsT0FBTyxFQUFDLElBQUk7UUFBQyxPQUFPLEVBQUMsVUFBVTtRQUFDLE9BQU8sRUFBQyxVQUFVO1FBQUMsT0FBTyxFQUFDLElBQUk7UUFBQyxPQUFPLEVBQUMsVUFBVTtRQUFDLE9BQU8sRUFBQyxPQUFPO1FBQUMsT0FBTyxFQUFDO01BQU8sQ0FBQyxFQUFDO1FBQUMsQ0FBQyxFQUFDLEdBQUc7UUFBQyxJQUFJLEVBQUMsUUFBUTtRQUFDLElBQUksRUFBQyxNQUFNO1FBQUMsS0FBSyxFQUFDLFNBQVM7UUFBQyxLQUFLLEVBQUMsU0FBUztRQUFDLEtBQUssRUFBQyxRQUFRO1FBQUMsS0FBSyxFQUFDLFNBQVM7UUFBQyxLQUFLLEVBQUMsTUFBTTtRQUFDLEtBQUssRUFBQyxRQUFRO1FBQUMsS0FBSyxFQUFDLFNBQVM7UUFBQyxLQUFLLEVBQUMsU0FBUztRQUFDLEtBQUssRUFBQyxTQUFTO1FBQUMsS0FBSyxFQUFDLFNBQVM7UUFBQyxLQUFLLEVBQUMsQ0FBQztRQUFDLEtBQUssRUFBQyxRQUFRO1FBQUMsS0FBSyxFQUFDLFNBQVM7UUFBQyxJQUFJLEVBQUMsUUFBUTtRQUFDLElBQUksRUFBQyxTQUFTO1FBQUMsS0FBSyxFQUFDLEdBQUc7UUFBQyxLQUFLLEVBQUMsUUFBUTtRQUFDLEtBQUssRUFBQyxNQUFNO1FBQUMsS0FBSyxFQUFDLFNBQVM7UUFBQyxLQUFLLEVBQUMsU0FBUztRQUFDLEtBQUssRUFBQyxTQUFTO1FBQUMsS0FBSyxFQUFDLFNBQVM7UUFBQyxLQUFLLEVBQUMsQ0FBQztRQUFDLEtBQUssRUFBQyxTQUFTO1FBQUMsS0FBSyxFQUFDLFFBQVE7UUFBQyxLQUFLLEVBQUMsU0FBUztRQUFDLEtBQUssRUFBQyxTQUFTO1FBQUMsS0FBSyxFQUFDLFFBQVE7UUFBQyxLQUFLLEVBQUMsTUFBTTtRQUFDLEtBQUssRUFBQyxNQUFNO1FBQUMsS0FBSyxFQUFDLEdBQUc7UUFBQyxLQUFLLEVBQUMsU0FBUztRQUFDLEtBQUssRUFBQyxTQUFTO1FBQUMsS0FBSyxFQUFDLFFBQVE7UUFBQyxLQUFLLEVBQUMsU0FBUztRQUFDLEtBQUssRUFBQyxTQUFTO1FBQUMsS0FBSyxFQUFDLFFBQVE7UUFBQyxLQUFLLEVBQUMsU0FBUztRQUFDLE1BQU0sRUFBQyxTQUFTO1FBQUMsTUFBTSxFQUFDLFFBQVE7UUFBQyxNQUFNLEVBQUMsU0FBUztRQUFDLE1BQU0sRUFBQyxNQUFNO1FBQUMsTUFBTSxFQUFDLFNBQVM7UUFBQyxNQUFNLEVBQUMsQ0FBQztRQUFDLE1BQU0sRUFBQyxRQUFRO1FBQUMsS0FBSyxFQUFDLFNBQVM7UUFBQyxLQUFLLEVBQUMsUUFBUTtRQUFDLEtBQUssRUFBQyxRQUFRO1FBQUMsS0FBSyxFQUFDLFNBQVM7UUFBQyxLQUFLLEVBQUMsU0FBUztRQUFDLEtBQUssRUFBQyxRQUFRO1FBQUMsS0FBSyxFQUFDLEdBQUc7UUFBQyxLQUFLLEVBQUMsU0FBUztRQUFDLE1BQU0sRUFBQyxNQUFNO1FBQUMsTUFBTSxFQUFDLFNBQVM7UUFBQyxNQUFNLEVBQUMsQ0FBQztRQUFDLE1BQU0sRUFBQyxTQUFTO1FBQUMsTUFBTSxFQUFDLFFBQVE7UUFBQyxNQUFNLEVBQUMsTUFBTTtRQUFDLE1BQU0sRUFBQyxTQUFTO1FBQUMsTUFBTSxFQUFDO01BQVMsQ0FBQyxFQUFDO1FBQUMsQ0FBQyxFQUFDLFNBQVM7UUFBQyxHQUFHLEVBQUMsSUFBSTtRQUFDLEdBQUcsRUFBQyxTQUFTO1FBQUMsR0FBRyxFQUFDLFNBQVM7UUFBQyxJQUFJLEVBQUMsU0FBUztRQUFDLElBQUksRUFBQyxPQUFPO1FBQUMsSUFBSSxFQUFDLE9BQU87UUFBQyxJQUFJLEVBQUMsU0FBUztRQUFDLElBQUksRUFBQyxDQUFDO1FBQUMsSUFBSSxFQUFDLFNBQVM7UUFBQyxJQUFJLEVBQUMsT0FBTztRQUFDLElBQUksRUFBQyxDQUFDO1FBQUMsSUFBSSxFQUFDLFNBQVM7UUFBQyxJQUFJLEVBQUMsT0FBTztRQUFDLElBQUksRUFBQyxJQUFJO1FBQUMsSUFBSSxFQUFDLFNBQVM7UUFBQyxHQUFHLEVBQUMsU0FBUztRQUFDLEdBQUcsRUFBQyxTQUFTO1FBQUMsR0FBRyxFQUFDLENBQUM7UUFBQyxHQUFHLEVBQUMsT0FBTztRQUFDLElBQUksRUFBQyxPQUFPO1FBQUMsSUFBSSxFQUFDLFNBQVM7UUFBQyxJQUFJLEVBQUMsU0FBUztRQUFDLElBQUksRUFBQyxJQUFJO1FBQUMsSUFBSSxFQUFDLE9BQU87UUFBQyxJQUFJLEVBQUMsSUFBSTtRQUFDLElBQUksRUFBQyxTQUFTO1FBQUMsSUFBSSxFQUFDLFNBQVM7UUFBQyxJQUFJLEVBQUMsQ0FBQztRQUFDLElBQUksRUFBQyxTQUFTO1FBQUMsSUFBSSxFQUFDLE9BQU87UUFBQyxJQUFJLEVBQUMsU0FBUztRQUFDLElBQUksRUFBQyxTQUFTO1FBQUMsSUFBSSxFQUFDLFNBQVM7UUFBQyxJQUFJLEVBQUMsU0FBUztRQUFDLElBQUksRUFBQyxJQUFJO1FBQUMsSUFBSSxFQUFDLE9BQU87UUFBQyxJQUFJLEVBQUMsU0FBUztRQUFDLElBQUksRUFBQyxTQUFTO1FBQUMsSUFBSSxFQUFDLE9BQU87UUFBQyxJQUFJLEVBQUMsT0FBTztRQUFDLElBQUksRUFBQyxDQUFDO1FBQUMsSUFBSSxFQUFDLENBQUM7UUFBQyxJQUFJLEVBQUMsU0FBUztRQUFDLElBQUksRUFBQyxJQUFJO1FBQUMsSUFBSSxFQUFDLFNBQVM7UUFBQyxJQUFJLEVBQUMsU0FBUztRQUFDLElBQUksRUFBQyxPQUFPO1FBQUMsSUFBSSxFQUFDLENBQUM7UUFBQyxJQUFJLEVBQUMsT0FBTztRQUFDLElBQUksRUFBQyxPQUFPO1FBQUMsSUFBSSxFQUFDLFNBQVM7UUFBQyxJQUFJLEVBQUMsU0FBUztRQUFDLElBQUksRUFBQyxJQUFJO1FBQUMsSUFBSSxFQUFDLFNBQVM7UUFBQyxJQUFJLEVBQUMsU0FBUztRQUFDLElBQUksRUFBQyxTQUFTO1FBQUMsSUFBSSxFQUFDLFNBQVM7UUFBQyxJQUFJLEVBQUMsSUFBSTtRQUFDLElBQUksRUFBQyxPQUFPO1FBQUMsSUFBSSxFQUFDLE9BQU87UUFBQyxJQUFJLEVBQUMsQ0FBQztRQUFDLElBQUksRUFBQyxTQUFTO1FBQUMsSUFBSSxFQUFDO01BQVMsQ0FBQyxFQUFDO1FBQUMsQ0FBQyxFQUFDLE9BQU87UUFBQyxFQUFFLEVBQUMsUUFBUTtRQUFDLEVBQUUsRUFBQyxJQUFJO1FBQUMsRUFBRSxFQUFDLE9BQU87UUFBQyxFQUFFLEVBQUMsUUFBUTtRQUFDLEVBQUUsRUFBQyxDQUFDO1FBQUMsRUFBRSxFQUFDLENBQUM7UUFBQyxHQUFHLEVBQUMsUUFBUTtRQUFDLEdBQUcsRUFBQyxRQUFRO1FBQUMsR0FBRyxFQUFDLE9BQU87UUFBQyxHQUFHLEVBQUMsUUFBUTtRQUFDLEdBQUcsRUFBQyxRQUFRO1FBQUMsR0FBRyxFQUFDLFFBQVE7UUFBQyxHQUFHLEVBQUMsSUFBSTtRQUFDLEdBQUcsRUFBQyxPQUFPO1FBQUMsR0FBRyxFQUFDLFFBQVE7UUFBQyxDQUFDLEVBQUMsUUFBUTtRQUFDLEVBQUUsRUFBQyxDQUFDO1FBQUMsRUFBRSxFQUFDLFFBQVE7UUFBQyxFQUFFLEVBQUMsUUFBUTtRQUFDLEVBQUUsRUFBQyxPQUFPO1FBQUMsRUFBRSxFQUFDLFFBQVE7UUFBQyxHQUFHLEVBQUMsUUFBUTtRQUFDLEdBQUcsRUFBQyxJQUFJO1FBQUMsR0FBRyxFQUFDLE9BQU87UUFBQyxHQUFHLEVBQUMsUUFBUTtRQUFDLEdBQUcsRUFBQyxRQUFRO1FBQUMsR0FBRyxFQUFDLE9BQU87UUFBQyxHQUFHLEVBQUMsSUFBSTtRQUFDLEdBQUcsRUFBQyxRQUFRO1FBQUMsR0FBRyxFQUFDLENBQUM7UUFBQyxHQUFHLEVBQUMsT0FBTztRQUFDLEdBQUcsRUFBQyxRQUFRO1FBQUMsR0FBRyxFQUFDLE9BQU87UUFBQyxHQUFHLEVBQUMsUUFBUTtRQUFDLEdBQUcsRUFBQyxRQUFRO1FBQUMsR0FBRyxFQUFDLE9BQU87UUFBQyxHQUFHLEVBQUMsUUFBUTtRQUFDLEdBQUcsRUFBQyxRQUFRO1FBQUMsR0FBRyxFQUFDLE9BQU87UUFBQyxHQUFHLEVBQUMsSUFBSTtRQUFDLEdBQUcsRUFBQyxRQUFRO1FBQUMsR0FBRyxFQUFDLE9BQU87UUFBQyxHQUFHLEVBQUMsQ0FBQztRQUFDLEdBQUcsRUFBQyxDQUFDO1FBQUMsR0FBRyxFQUFDLFFBQVE7UUFBQyxHQUFHLEVBQUMsUUFBUTtRQUFDLEdBQUcsRUFBQyxJQUFJO1FBQUMsR0FBRyxFQUFDLE9BQU87UUFBQyxHQUFHLEVBQUMsUUFBUTtRQUFDLEdBQUcsRUFBQyxRQUFRO1FBQUMsR0FBRyxFQUFDLENBQUM7UUFBQyxHQUFHLEVBQUMsUUFBUTtRQUFDLEdBQUcsRUFBQyxPQUFPO1FBQUMsR0FBRyxFQUFDLElBQUk7UUFBQyxHQUFHLEVBQUMsUUFBUTtRQUFDLEdBQUcsRUFBQyxRQUFRO1FBQUMsR0FBRyxFQUFDLFFBQVE7UUFBQyxHQUFHLEVBQUMsQ0FBQztRQUFDLEdBQUcsRUFBQyxRQUFRO1FBQUMsR0FBRyxFQUFDLE9BQU87UUFBQyxHQUFHLEVBQUMsSUFBSTtRQUFDLEdBQUcsRUFBQyxRQUFRO1FBQUMsR0FBRyxFQUFDO01BQU8sQ0FBQyxFQUFDO1FBQUMsQ0FBQyxFQUFDLFNBQVM7UUFBQyxDQUFDLEVBQUMsTUFBTTtRQUFDLENBQUMsRUFBQyxTQUFTO1FBQUMsQ0FBQyxFQUFDLEVBQUU7UUFBQyxDQUFDLEVBQUMsTUFBTTtRQUFDLENBQUMsRUFBQyxTQUFTO1FBQUMsQ0FBQyxFQUFDLFNBQVM7UUFBQyxDQUFDLEVBQUMsSUFBSTtRQUFDLENBQUMsRUFBQyxTQUFTO1FBQUMsQ0FBQyxFQUFDLFNBQVM7UUFBQyxFQUFFLEVBQUMsTUFBTTtRQUFDLEVBQUUsRUFBQyxTQUFTO1FBQUMsRUFBRSxFQUFDLElBQUk7UUFBQyxFQUFFLEVBQUMsQ0FBQztRQUFDLEVBQUUsRUFBQyxTQUFTO1FBQUMsRUFBRSxFQUFDLE1BQU07UUFBQyxVQUFVLEVBQUMsSUFBSTtRQUFDLFVBQVUsRUFBQyxTQUFTO1FBQUMsVUFBVSxFQUFDLFNBQVM7UUFBQyxVQUFVLEVBQUMsU0FBUztRQUFDLFVBQVUsRUFBQyxTQUFTO1FBQUMsVUFBVSxFQUFDLE1BQU07UUFBQyxVQUFVLEVBQUMsTUFBTTtRQUFDLFVBQVUsRUFBQyxFQUFFO1FBQUMsVUFBVSxFQUFDLFNBQVM7UUFBQyxVQUFVLEVBQUMsSUFBSTtRQUFDLFVBQVUsRUFBQyxNQUFNO1FBQUMsVUFBVSxFQUFDLFNBQVM7UUFBQyxVQUFVLEVBQUMsQ0FBQztRQUFDLFVBQVUsRUFBQyxTQUFTO1FBQUMsVUFBVSxFQUFDLFNBQVM7UUFBQyxVQUFVLEVBQUMsTUFBTTtRQUFDLEVBQUUsRUFBQyxNQUFNO1FBQUMsRUFBRSxFQUFDLFNBQVM7UUFBQyxFQUFFLEVBQUMsRUFBRTtRQUFDLEVBQUUsRUFBQyxJQUFJO1FBQUMsRUFBRSxFQUFDLFNBQVM7UUFBQyxFQUFFLEVBQUMsU0FBUztRQUFDLEVBQUUsRUFBQyxTQUFTO1FBQUMsRUFBRSxFQUFDLE1BQU07UUFBQyxFQUFFLEVBQUMsQ0FBQztRQUFDLEVBQUUsRUFBQyxNQUFNO1FBQUMsRUFBRSxFQUFDLFNBQVM7UUFBQyxFQUFFLEVBQUMsU0FBUztRQUFDLEVBQUUsRUFBQyxTQUFTO1FBQUMsRUFBRSxFQUFDLE1BQU07UUFBQyxFQUFFLEVBQUMsSUFBSTtRQUFDLEVBQUUsRUFBQyxTQUFTO1FBQUMsVUFBVSxFQUFDLE1BQU07UUFBQyxVQUFVLEVBQUMsSUFBSTtRQUFDLFVBQVUsRUFBQyxTQUFTO1FBQUMsVUFBVSxFQUFDLE1BQU07UUFBQyxVQUFVLEVBQUMsRUFBRTtRQUFDLFVBQVUsRUFBQyxTQUFTO1FBQUMsVUFBVSxFQUFDLFNBQVM7UUFBQyxVQUFVLEVBQUMsU0FBUztRQUFDLFVBQVUsRUFBQyxTQUFTO1FBQUMsVUFBVSxFQUFDLFNBQVM7UUFBQyxVQUFVLEVBQUMsU0FBUztRQUFDLFVBQVUsRUFBQyxDQUFDO1FBQUMsVUFBVSxFQUFDLE1BQU07UUFBQyxVQUFVLEVBQUMsSUFBSTtRQUFDLFVBQVUsRUFBQyxNQUFNO1FBQUMsVUFBVSxFQUFDO01BQVMsQ0FBQyxDQUFDO01BQUNZLENBQUMsR0FBQyxDQUFDLFVBQVUsRUFBQyxTQUFTLEVBQUMsUUFBUSxFQUFDLE9BQU8sRUFBQyxNQUFNLEVBQUMsSUFBSSxFQUFDLEdBQUcsRUFBQyxVQUFVLENBQUM7TUFBQ3NCLENBQUMsR0FBQ3RELENBQUMsQ0FBQ3dPLEdBQUcsR0FBQ3JQLENBQUMsQ0FB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QUksQ0FBQzhSLEVBQUUsR0FBQyxDQUFDLEVBQUM5UixDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUNBLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBQyxVQUFVLElBQUVBLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBRyxDQUFDLEdBQUNxQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUcsQ0FBQyxHQUFDLENBQUMsR0FBQyxDQUFDLENBQUMsR0FBQyxDQUFDLEVBQUNyQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUNBLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBQyxTQUFTLElBQUVBLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBRyxDQUFDLEdBQUNxQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUcsQ0FBQyxHQUFDLENBQUMsR0FBQyxDQUFDLENBQUMsR0FBQyxDQUFDLEVBQUNyQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUNBLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBQyxVQUFVLElBQUVBLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBRyxDQUFDLEdBQUNxQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUcsQ0FBQyxHQUFDLENBQUMsR0FBQyxDQUFDLENBQUMsR0FBQyxDQUFDLEVBQUNyQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUNBLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBQyxVQUFVLElBQUVBLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBRyxDQUFDLEdBQUNxQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUcsQ0FBQyxHQUFDLENBQUMsR0FBQyxDQUFDLENBQUMsR0FBQyxDQUFDLEVBQUNyQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUNBLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBQyxTQUFTLElBQUVBLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBRyxDQUFDLEdBQUNxQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUcsQ0FBQyxHQUFDLENBQUMsR0FBQyxDQUFDLENBQUMsR0FBQyxDQUFDLEVBQUNyQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUNBLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBQyxVQUFVLElBQUVBLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBRyxDQUFDLEdBQUNxQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUcsQ0FBQyxHQUFDLENBQUMsR0FBQyxDQUFDLENBQUMsR0FBQyxDQUFDLEVBQUNyQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUNBLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBQyxVQUFVLElBQUVBLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBRyxDQUFDLEdBQUNxQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUcsQ0FBQyxHQUFDLENBQUMsR0FBQyxDQUFDLENBQUMsR0FBQyxDQUFDLEVBQUMsSUFBSSxDQUFDeVAsRUFBRSxHQUFDOVIsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFHLENBQUMsR0FBQ3FDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBRyxDQUFDLEdBQUMsQ0FBQyxHQUFDLENBQUM7TUFBQyxLQUFJLElBQUkvQixDQUFDLEdBQUMsQ0FBQyxFQUFDQSxDQUFDLEdBQUMsQ0FBQyxFQUFDQSxDQUFDLEVBQUUsRUFBQztRQUFDLElBQUlJLENBQUMsR0FBQ1gsQ0FBQyxDQUFDTyxDQUFDLENBQUMsR0FBQ04sQ0FBQyxDQUFDTSxDQUFDLENBQUM7VUFBQ0ssQ0FBQyxHQUFDLEtBQUssR0FBQ0QsQ0FBQztVQUFDRyxDQUFDLEdBQUNILENBQUMsS0FBRyxFQUFFO1VBQUNjLENBQUMsR0FBQyxDQUFDLENBQUNiLENBQUMsR0FBQ0EsQ0FBQyxLQUFHLEVBQUUsSUFBRUEsQ0FBQyxHQUFDRSxDQUFDLEtBQUcsRUFBRSxJQUFFQSxDQUFDLEdBQUNBLENBQUM7VUFBQ2dDLENBQUMsR0FBQyxDQUFDLENBQUMsVUFBVSxHQUFDbkMsQ0FBQyxJQUFFQSxDQUFDLEdBQUMsQ0FBQyxLQUFHLENBQUMsS0FBSyxHQUFDQSxDQUFDLElBQUVBLENBQUMsR0FBQyxDQUFDLENBQUM7UUFBQ21CLENBQUMsQ0FBQ3ZCLENBQUMsQ0FBQyxHQUFDa0IsQ0FBQyxHQUFDcUIsQ0FBQztNQUFBO01BQUM5QyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUM4QixDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUVBLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBRSxFQUFFLEdBQUNBLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBRyxFQUFFLENBQUMsSUFBRUEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFFLEVBQUUsR0FBQ0EsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFHLEVBQUUsQ0FBQyxHQUFDLENBQUMsRUFBQzlCLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBQzhCLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBRUEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFFLENBQUMsR0FBQ0EsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFHLEVBQUUsQ0FBQyxHQUFDQSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUMsQ0FBQyxFQUFDOUIsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFDOEIsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFFQSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUUsRUFBRSxHQUFDQSxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUcsRUFBRSxDQUFDLElBQUVBLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBRSxFQUFFLEdBQUNBLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBRyxFQUFFLENBQUMsR0FBQyxDQUFDLEVBQUM5QixDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUM4QixDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUVBLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBRSxDQUFDLEdBQUNBLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBRyxFQUFFLENBQUMsR0FBQ0EsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFDLENBQUMsRUFBQzlCLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBQzhCLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBRUEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFFLEVBQUUsR0FBQ0EsQ0FBQyxD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QUFFLEdBQUMsQ0FBQzlSLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBRSxFQUFFLEdBQUNBLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBRyxFQUFFLEVBQUMsVUFBVSxHQUFDQSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUMsS0FBSyxHQUFDQSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUNBLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBRSxFQUFFLEdBQUNBLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBRyxFQUFFLEVBQUMsVUFBVSxHQUFDQSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUMsS0FBSyxHQUFDQSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUNBLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBRSxFQUFFLEdBQUNBLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBRyxFQUFFLEVBQUMsVUFBVSxHQUFDQSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUMsS0FBSyxHQUFDQSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUNBLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBRSxFQUFFLEdBQUNBLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBRyxFQUFFLEVBQUMsVUFBVSxHQUFDQSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUMsS0FBSyxHQUFDQSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7VUFBQyxJQUFJLENBQUMrUixFQUFFLEdBQUMsQ0FBQztVQUFDLEtBQUksSUFBSXBSLENBQUMsR0FBQyxDQUFDLEVBQUNBLENBQUMsR0FBQyxDQUFDLEVBQUNBLENBQUMsRUFBRSxFQUFDVixDQUFDLENBQUNrQyxJQUFJLENBQUMsSUFBSSxDQUFDO1VBQUMsS0FBSSxJQUFJeEIsQ0FBQyxHQUFDLENBQUMsRUFBQ0EsQ0FBQyxHQUFDLENBQUMsRUFBQ0EsQ0FBQyxFQUFFLEVBQUNHLENBQUMsQ0FBQ0gsQ0FBQyxDQUFDLElBQUVDLENBQUMsQ0FBQ0QsQ0FBQyxHQUFDLENBQUMsR0FBQyxDQUFDLENBQUM7VUFBQyxJQUFHSixDQUFDLEVBQUM7WUFBQyxJQUFJa0IsQ0FBQyxHQUFDbEIsQ0FBQyxDQUFDb0IsS0FBSztjQUFDVyxDQUFDLEdBQUNiLENBQUMsQ0FBQyxDQUFDLENBQUM7Y0FBQ0ssQ0FBQyxHQUFDTCxDQUFDLENBQUMsQ0FBQyxDQUFDO2NBQUNxQixDQUFDLEdBQUMsUUFBUSxJQUFFUixDQUFDLElBQUUsQ0FBQyxHQUFDQSxDQUFDLEtBQUcsRUFBRSxDQUFDLEdBQUMsVUFBVSxJQUFFQSxDQUFDLElBQUUsRUFBRSxHQUFDQSxDQUFDLEtBQUcsQ0FBQyxDQUFDO2NBQUNhLENBQUMsR0FBQyxRQUFRLElBQUVyQixDQUFDLElBQUUsQ0FBQyxHQUFDQSxDQUFDLEtBQUcsRUFBRSxDQUFDLEdBQUMsVUFBVSxJQUFFQSxDQUFDLElBQUUsRUFBRSxHQUFDQSxDQUFDLEtBQUcsQ0FBQyxDQUFDO2NBQUM0QixDQUFDLEdBQUNaLENBQUMsS0FBRyxFQUFFLEdBQUMsVUFBVSxHQUFDSyxDQUFDO2NBQUNtQixDQUFDLEdBQUNuQixDQUFDLElBQUUsRUFBRSxHQUFDLEtBQUssR0FBQ0wsQ0FBQztZQUFDaEMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFFZ0MsQ0FBQyxFQUFDaEMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFFNEMsQ0FBQyxFQUFDNUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFFcUMsQ0FBQyxFQUFDckMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFFd0QsQ0FBQyxFQUFDeEQsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFFZ0MsQ0FBQyxFQUFDaEMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFFNEMsQ0FBQyxFQUFDNUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFFcUMsQ0FBQyxFQUFDckMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFFd0QsQ0FBQztZQUFDLEtBQUksSUFBSTNELENBQUMsR0FBQyxDQUFDLEVBQUNBLENBQUMsR0FBQyxDQUFDLEVBQUNBLENBQUMsRUFBRSxFQUFDVixDQUFDLENBQUNrQyxJQUFJLENBQUMsSUFBSSxDQUFDO1VBQUE7UUFBQyxDQUFDO1FBQUNrQyxlQUFlLEVBQUMsU0FBQUEsZ0JBQVNyRSxDQUFDLEVBQUNPLENBQUMsRUFBQztVQUFDLElBQUlJLENBQUMsR0FBQyxJQUFJLENBQUNrUixFQUFFO1VBQUM1UixDQUFDLENBQUNrQyxJQUFJLENBQUMsSUFBSSxDQUFDLEVBQUNWLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBQ2QsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFDQSxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUcsRUFBRSxHQUFDQSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUUsRUFBRSxFQUFDYyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUNkLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBQ0EsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFHLEVBQUUsR0FBQ0EsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFFLEVBQUUsRUFBQ2MsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFDZCxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUNBLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBRyxFQUFFLEdBQUNBLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBRSxFQUFFLEVBQUNjLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBQ2QsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFDQSxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUcsRUFBRSxHQUFDQSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUUsRUFBRTtVQUFDLEtBQUksSUFBSUMsQ0FBQyxHQUFDLENBQUMsRUFBQ0EsQ0FBQyxHQUFDLENBQUMsRUFBQ0EsQ0FBQyxFQUFFLEVBQUNhLENBQUMsQ0FBQ2IsQ0FBQyxDQUFDLEdBQUMsUUFBUSxJQUFFYSxDQUFDLENBQUNiLENBQUMsQ0FBQyxJQUFFLENBQUMsR0FBQ2EsQ0FBQyxDQUFDYixDQUFDLENBQUMsS0FBRyxFQUFFLENBQUMsR0FBQyxVQUFVLElBQUVhLENBQUMsQ0FBQ2IsQ0FBQyxDQUFDLElBQUUsRUFBRSxHQUFDYSxDQUFDLENBQUNiLENBQUMsQ0FBQyxLQUFHLENBQUMsQ0FB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ckMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFDQSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUMsVUFBVSxJQUFFQSxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUcsQ0FBQyxHQUFDcUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFHLENBQUMsR0FBQyxDQUFDLEdBQUMsQ0FBQyxDQUFDLEdBQUMsQ0FBQyxFQUFDckMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFDQSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUMsVUFBVSxJQUFFQSxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUcsQ0FBQyxHQUFDcUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFHLENBQUMsR0FBQyxDQUFDLEdBQUMsQ0FBQyxDQUFDLEdBQUMsQ0FBQyxFQUFDckMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFDQSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUMsU0FBUyxJQUFFQSxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUcsQ0FBQyxHQUFDcUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFHLENBQUMsR0FBQyxDQUFDLEdBQUMsQ0FBQyxDQUFDLEdBQUMsQ0FBQyxFQUFDckMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFDQSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUMsVUFBVSxJQUFFQSxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUcsQ0FBQyxHQUFDcUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFHLENBQUMsR0FBQyxDQUFDLEdBQUMsQ0FBQyxDQUFDLEdBQUMsQ0FBQyxFQUFDckMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFDQSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUMsVUFBVSxJQUFFQSxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUcsQ0FBQyxHQUFDcUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFHLENBQUMsR0FBQyxDQUFDLEdBQUMsQ0FBQyxDQUFDLEdBQUMsQ0FBQyxFQUFDLElBQUksQ0FBQ3lQLEVBQUUsR0FBQzlSLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBRyxDQUFDLEdBQUNxQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUcsQ0FBQyxHQUFDLENBQUMsR0FBQyxDQUFDO01BQUMsS0FBSSxJQUFJL0IsQ0FBQyxHQUFDLENBQUMsRUFBQ0EsQ0FBQyxHQUFDLENBQUMsRUFBQ0EsQ0FBQyxFQUFFLEVBQUM7UUFBQyxJQUFJSSxDQUFDLEdBQUNYLENBQUMsQ0FBQ08sQ0FBQyxDQUFDLEdBQUNOLENBQUMsQ0FBQ00sQ0FBQyxDQUFDO1VBQUNLLENBQUMsR0FBQyxLQUFLLEdBQUNELENBQUM7VUFBQ0csQ0FBQyxHQUFDSCxDQUFDLEtBQUcsRUFBRTtVQUFDYyxDQUFDLEdBQUMsQ0FBQyxDQUFDYixDQUFDLEdBQUNBLENBQUMsS0FBRyxFQUFFLElBQUVBLENBQUMsR0FBQ0UsQ0FBQyxLQUFHLEVBQUUsSUFBRUEsQ0FBQyxHQUFDQSxDQUFDO1VBQUNnQyxDQUFDLEdBQUMsQ0FBQyxDQUFDLFVBQVUsR0FBQ25DLENBQUMsSUFBRUEsQ0FBQyxHQUFDLENBQUMsS0FBRyxDQUFDLEtBQUssR0FBQ0EsQ0FBQyxJQUFFQSxDQUFDLEdBQUMsQ0FBQyxDQUFDO1FBQUNtQixDQUFDLENBQUN2QixDQUFDLENBQUMsR0FBQ2tCLENBQUMsR0FBQ3FCLENBQUM7TUFBQTtNQUFDOUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFDOEIsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFFQSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUUsRUFBRSxHQUFDQSxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUcsRUFBRSxDQUFDLElBQUVBLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBRSxFQUFFLEdBQUNBLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBRyxFQUFFLENBQUMsR0FBQyxDQUFDLEVBQUM5QixDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUM4QixDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUVBLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBRSxDQUFDLEdBQUNBLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBRyxFQUFFLENBQUMsR0FBQ0EsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFDLENBQUMsRUFBQzlCLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBQzhCLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBRUEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFFLEVBQUUsR0FBQ0EsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFHLEVBQUUsQ0FBQyxJQUFFQSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUUsRUFBRSxHQUFDQSxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUcsRUFBRSxDQUFDLEdBQUMsQ0FBQyxFQUFDOUIsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFDOEIsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFFQSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUUsQ0FBQyxHQUFDQSxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUcsRUFBRSxDQUFDLEdBQUNBLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBQyxDQUFDLEVBQUM5QixDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUM4QixDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUVBLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBRSxFQUFFLEdBQUNBLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBRyxFQUFFLENBQUMsSUFBRUEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFFLEVBQUUsR0FBQ0EsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFHLEVBQUUsQ0FBQyxHQUFDLENBQUMsRUFBQzlCLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBQzhCLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBRUEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFFLENBQUMsR0FBQ0EsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFHLEVBQUUsQ0FBQyxHQUFDQSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUMsQ0FBQyxFQUFDOUIsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFDOEIsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFFQSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUUsRUFBRSxHQUFDQSxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUcsRUFBRSxDQUFDLElBQUVBLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBRSxFQUFFLEdBQUNBLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBRyxFQUFFLENBQUMsR0FBQyxDQUFDLEVBQUM5QixDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUM4QixDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUVBLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBRSxDQUFDLEdBQUNBLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBRyxFQUFFLENBQUMsR0FBQ0EsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFDLENBQUM7SUFBQTtJQUFDLElBQUl2QixDQUFDLEdBQUNQLENBQUM7TUFBQ1csQ0FBQyxHQUFDSixDQUFDLENBQUNNLEdBQUc7TUFBQ0QsQ0FBQyxHQUFDRCxDQUFDLENBQUNpTixZQUFZO01BQUM5TSxDQUFDLEdBQUNQLENBQUMsQ0FBQzBFLElBQUk7TUFBQ3hELENBQUMsR0FBQyxFQUFFO01BQUNhLENBQUMsR0FBQyxFQUFFO01BQUNSLENBQUMsR0FBQyxFQUFFO01BQUNnQixDQUFDLEdBQUNoQyxDQUFDLENBQUNvUixZQUFZLEdBQUN0UixDQUFDLENBQUNJLE1BQU0sQ0FBQztRQUFDMEQsUUFBUSxFQUFDLFNBQUFBLFNBQUEsRUFBVTtVQUFDLElBQUkxRSxDQUFDLEdBQUMsSUFBSSxDQUFDdU4sSUFBSSxDQUFDNUwsS0FBSztZQUFDcEIsQ0FBQyxHQUFDLElBQUksQ0FBQ2tFLEdBQUcsQ0FBQ29LLEVBQUU7WUFBQ2xPLENBQUMsR0FBQyxJQUFJLENBQUNrUixFQUFFLEdBQUMsQ0FBQzdSLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBQ0EsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFFLEVBQUUsR0FBQ0EsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFHLEVBQUUsRUFBQ0EsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFDQSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUUsRUFBRSxHQUFDQSxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUcsRUFBRSxFQUFDQSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUNBLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBRSxFQUFFLEdBQUNBLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBRyxFQUFFLEVBQUNBLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBQ0EsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFFLEVBQUUsR0FBQ0EsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFHLEVBQUUsQ0FBQztZQUFDWSxDQUFDLEdBQUMsSUFBSSxDQUFDa1IsRUFBRSxHQUFDLENBQUM5UixDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUUsRUFBRSxHQUFDQSxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUcsRUFBRSxFQUFDLFVBQVUsR0FBQ0EsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFDLEtBQUssR0FBQ0EsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFDQSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUUsRUFBRSxHQUFDQSxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUcsRUFBRSxFQUFDLFVBQVUsR0FBQ0EsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFDLEtBQUssR0FBQ0EsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFDQSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUUsRUFBRSxHQUFDQSxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUcsRUFBRSxFQUFDLFVBQVUsR0FBQ0EsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFDLEtBQUssR0FBQ0EsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFDQSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUUsRUFBRSxHQUFDQSxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUcsRUFBRSxFQUFDLFVBQVUsR0FBQ0EsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFDLEtBQUssR0FBQ0EsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1VBQUMsSUFBSSxDQUFDK1IsRUFBRSxHQUFDLENBQUM7VUFBQyxLQUFJLElBQUlqUixDQUFD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QUUsR0FBQ0EsQ0FBQyxHQUFDLENBQUMsR0FBQyxDQUFDLEdBQUMsR0FBRyxDQUFDLEdBQUVBLENBQUMsRUFBRTtNQUFDUCxDQUFDLENBQUM0QixRQUFRLEdBQUNyQixDQUFDLEdBQUMsQ0FBQztJQUFBO0VBQUMsQ0FBQyxFQUFDUCxDQUFDO0FBQUEsQ0FBQyxDQUFDO0FBQ25oZiIsInNvdXJjZVJvb3QiOiIvIiwic291cmNlc0NvbnRlbnQiOlsiIWZ1bmN0aW9uKHQscil7XCJvYmplY3RcIj09dHlwZW9mIGV4cG9ydHM/bW9kdWxlLmV4cG9ydHM9ZXhwb3J0cz1yKCk6XCJmdW5jdGlvblwiPT10eXBlb2YgZGVmaW5lJiZkZWZpbmUuYW1kP2RlZmluZShbXSxyKTp0LkNyeXB0b0pTPXIoKX0odGhpcyxmdW5jdGlvbigpe3ZhciB0PXR8fGZ1bmN0aW9uKHQscil7dmFyIGU9T2JqZWN0LmNyZWF0ZXx8ZnVuY3Rpb24oKXtmdW5jdGlvbiB0KCl7fXJldHVybiBmdW5jdGlvbihyKXt2YXIgZTtyZXR1cm4gdC5wcm90b3R5cGU9cixlPW5ldyB0LHQucHJvdG90eXBlPW51bGwsZX19KCksaT17fSxuPWkubGliPXt9LG89bi5CYXNlPWZ1bmN0aW9uKCl7cmV0dXJue2V4dGVuZDpmdW5jdGlvbih0KXt2YXIgcj1lKHRoaXMpO3JldHVybiB0JiZyLm1peEluKHQpLHIuaGFzT3duUHJvcGVydHkoXCJpbml0XCIpJiZ0aGlzLmluaXQhPT1yLmluaXR8fChyLmluaXQ9ZnVuY3Rpb24oKXtyLiRzdXBlci5pbml0LmFwcGx5KHRoaXMsYXJndW1lbnRzKX0pLHIuaW5pdC5wcm90b3R5cGU9cixyLiRzdXBlcj10aGlzLHJ9LGNyZWF0ZTpmdW5jdGlvbigpe3ZhciB0PXRoaXMuZXh0ZW5kKCk7cmV0dXJuIHQuaW5pdC5hcHBseSh0LGFyZ3VtZW50cyksdH0saW5pdDpmdW5jdGlvbigpe30sbWl4SW46ZnVuY3Rpb24odCl7Zm9yKHZhciByIGluIHQpdC5oYXNPd25Qcm9wZXJ0eShyKSYmKHRoaXNbcl09dFtyXSk7dC5oYXNPd25Qcm9wZXJ0eShcInRvU3RyaW5nXCIpJiYodGhpcy50b1N0cmluZz10LnRvU3RyaW5nKX0sY2xvbmU6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5pbml0LnByb3RvdHlwZS5leHRlbmQodGhpcyl9fX0oKSxzPW4uV29yZEFycmF5PW8uZXh0ZW5kKHtpbml0OmZ1bmN0aW9uKHQsZSl7dD10aGlzLndvcmRzPXR8fFtdLGUhPXI/dGhpcy5zaWdCeXRlcz1lOnRoaXMuc2lnQnl0ZXM9NCp0Lmxlbmd0aH0sdG9TdHJpbmc6ZnVuY3Rpb24odCl7cmV0dXJuKHR8fGMpLnN0cmluZ2lmeSh0aGlzKX0sY29uY2F0OmZ1bmN0aW9uKHQpe3ZhciByPXRoaXMud29yZHMsZT10LndvcmRzLGk9dGhpcy5zaWdCeXRlcyxuPXQuc2lnQnl0ZXM7aWYodGhpcy5jbGFtcCgpLGklNClmb3IodmFyIG89MDtvPG47bysrKXt2YXIgcz1lW28+Pj4yXT4+PjI0LW8lNCo4JjI1NTtyW2krbz4+PjJdfD1zPDwyNC0oaStvKSU0Kjh9ZWxzZSBmb3IodmFyIG89MDtvPG47bys9NClyW2krbz4+PjJdPWVbbz4+PjJdO3JldHVybiB0aGlzLnNpZ0J5dGVzKz1uLHRoaXN9LGNsYW1wOmZ1bmN0aW9uKCl7dmFyIHI9dGhpcy53b3JkcyxlPXRoaXMuc2lnQnl0ZXM7cltlPj4+Ml0mPTQyOTQ5NjcyOTU8PDMyLWUlNCo4LHIubGVuZ3RoPXQuY2VpbChlLzQpfSxjbG9uZTpmdW5jdGlvbigpe3ZhciB0PW8uY2xvbmUuY2FsbCh0aGlzKTtyZXR1cm4gdC53b3Jkcz10aGlzLndvcmRzLnNsaWNlKDApLHR9LHJhbmRvbTpmdW5jdGlvbihyKXtmb3IodmFyIGUsaT1bXSxuPWZ1bmN0aW9uKHIpe3ZhciByPXIsZT05ODc2NTQzMjEsaT00Mjk0OTY3Mjk1O3JldHVybiBmdW5jdGlvbigpe2U9MzY5NjkqKDY1NTM1JmUpKyhlPj4xNikmaSxyPTE4ZTMqKDY1NTM1JnIpKyhyPj4xNikmaTt2YXIgbj0oZTw8MTYpK3ImaTtyZXR1cm4gbi89NDI5NDk2NzI5NixuKz0uNSxuKih0LnJhbmRvbSgpPi41PzE6LTEpfX0sbz0wO288cjtvKz00KXt2YXIgYT1uKDQyOTQ5NjcyOTYqKGV8fHQucmFuZG9tKCkpKTtlPTk4NzY1NDA3MSphKCksaS5wdXNoKDQyOTQ5NjcyOTYqYSgpfDApfXJldHVybiBuZXcgcy5pbml0KGkscil9fSksYT1pLmVuYz17fSxjPWEuSGV4PXtzdHJpbmdpZnk6ZnVuY3Rpb24odCl7Zm9yKHZhciByPXQud29yZHMsZT10LnNpZ0J5dGVzLGk9W10sbj0wO248ZTtuKyspe3ZhciBvPXJbbj4+PjJdPj4+MjQtbiU0KjgmMjU1O2kucHVzaCgobz4+PjQpLnRvU3RyaW5nKDE2KSksaS5wdXNoKCgxNSZvKS50b1N0cmluZygxNikpfXJldHVybiBpLmpvaW4oXCJcIil9LHBhcnNlOmZ1bmN0aW9uKHQpe2Zvcih2YXIgcj10Lmxlbmd0aCxlPVtdLGk9MDtpPHI7aSs9MillW2k+Pj4zXXw9cGFyc2VJbnQodC5zdWJzdHIoaSwyKSwxNik8PDI0LWklOCo0O3JldHVybiBuZXcgcy5pbml0KGUsci8yKX19LGg9YS5MYXRpbjE9e3N0cmluZ2lmeTpmdW5jdGlvbih0KXtmb3IodmFyIHI9dC53b3JkcyxlPXQuc2lnQnl0ZXMsaT1bXSxuPTA7bjxlO24rKyl7dmFyIG89cltuPj4+Ml0+Pj4yNC1uJTQqOCYyNTU7aS5wdXNoKFN0cmluZy5mcm9tQ2hhckNvZGUobykpfXJldHVybiBpLmpvaW4oXCJcIil9LHBhcnNlOmZ1bmN0aW9uKHQpe2Zvcih2YXIgcj10Lmxlbmd0aCxlPVtdLGk9MDtpPHI7aSsrKWVbaT4+PjJdfD0oMjU1JnQuY2hhckNvZGVBdChpKSk8PDI0LWklNCo4O3JldHVybiBuZXcgcy5pbml0KGUscil9fSxsPWEuVXRmOD17c3RyaW5naWZ5OmZ1bmN0aW9uKHQpe3RyeXtyZXR1cm4gZGVjb2RlVVJJQ29tcG9uZW50KGVzY2FwZShoLnN0cmluZ2lmeSh0KSkpfWNhdGNoKHQpe3Rocm93IG5ldyBFcnJvcihcIk1hbGZvcm1lZCBVVEYtOCBkYXRhXCIpfX0scGFyc2U6ZnVuY3Rpb24odCl7cmV0dXJuIGgucGFyc2UodW5lc2NhcGUoZW5jb2RlVVJJQ29tcG9uZW50KHQpKSl9fSxmPW4uQnVmZmVyZWRCbG9ja0FsZ29yaXRobT1vLmV4dGVuZCh7cmVzZXQ6ZnVuY3Rpb24oKXt0aGlzLl9kYXRhPW5ldyBzLmluaXQsdGhpcy5fbkRhdGFCeXRlcz0wfSxfYXBwZW5kOmZ1bmN0aW9uKHQpe1wic3RyaW5nXCI9PXR5cGVvZiB0JiYodD1sLnBhcnNlKHQpKSx0aGlzLl9kYXRhLmNvbmNhdCh0KSx0aGlzLl9uRGF0YUJ5dGVzKz10LnNpZ0J5dGVzfSxfcHJvY2VzczpmdW5jdGlvbihyKXt2YXIgZT10aGlzLl9kYXRhLGk9ZS53b3JkcyxuPWUuc2lnQnl0ZXMsbz10aGlzLmJsb2NrU2l6ZSxhPTQqbyxjPW4vYTtjPXI/dC5jZWlsKGMpOnQubWF4KCgwfGMpLXRoaXMuX21pbkJ1ZmZlclNpemUsMCk7dmFyIGg9YypvLGw9dC5taW4oNCpoLG4pO2lmKGgpe2Zvcih2YXIgZj0wO2Y8aDtmKz1vKXRoaXMuX2RvUHJvY2Vzc0Jsb2NrKGksZik7dmFyIHU9aS5zcGxpY2UoMCxoKTtlLnNpZ0J5dGVzLT1sfXJldHVybiBuZXcgcy5pbml0KHUsbCl9LGNsb25lOmZ1bmN0aW9uKCl7dmFyIHQ9by5jbG9uZS5jYWxsKHRoaXMpO3JldHVybiB0Ll9kYXRhPXRoaXMuX2RhdGEuY2xvbmUoKSx0fSxfbWluQnVmZmVyU2l6ZTowfSksdT0obi5IYXNoZXI9Zi5leHRlbmQoe2NmZzpvLmV4dGVuZCgpLGluaXQ6ZnVuY3Rpb24odCl7dGhpcy5jZmc9dGhpcy5jZmcuZXh0ZW5kKHQpLHRoaXMucmVzZXQoKX0scmVzZXQ6ZnVuY3Rpb24oKXtmLnJlc2V0LmNhbGwodGhpcyksdGhpcy5fZG9SZXNldCgpfSx1cGRhdGU6ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuX2FwcGVuZCh0KSx0aGlzLl9wcm9jZXNzKCksdGhpc30sZmluYWxpemU6ZnVuY3Rpb24odCl7dCYmdGhpcy5fYXBwZW5kKHQpO3ZhciByPXRoaXMuX2RvRmluYWxpemUoKTtyZXR1cm4gcn0sYmxvY2tTaXplOjE2LF9jcmVhdGVIZWxwZXI6ZnVuY3Rpb24odCl7cmV0dXJuIGZ1bmN0aW9uKHIsZSl7cmV0dXJuIG5ldyB0LmluaXQoZSkuZmluYWxpemUocil9fSxfY3JlYXRlSG1hY0hlbHBlcjpmdW5jdGlvbih0KXtyZXR1cm4gZnVuY3Rpb24ocixlKXtyZXR1cm4gbmV3IHUuSE1BQy5pbml0KHQsZSkuZmluYWxpemUocil9fX0pLGkuYWxnbz17fSk7cmV0dXJuIGl9KE1hdGgpO3JldHVybiBmdW5jdGlvbigpe2Z1bmN0aW9uIHIodCxyLGUpe2Zvcih2YXIgaT1bXSxvPTAscz0wO3M8cjtzKyspaWYocyU0KXt2YXIgYT1lW3QuY2hhckNvZGVBdChzLTEpXTw8cyU0KjIsYz1lW3QuY2hhckNvZGVBdChzKV0+Pj42LXMlNCoyO2lbbz4+PjJdfD0oYXxjKTw8MjQtbyU0KjgsbysrfXJldHVybiBuLmNyZWF0ZShpLG8pfXZhciBlPXQsaT1lLmxpYixuPWkuV29yZEFycmF5LG89ZS5lbmM7by5CYXNlNjQ9e3N0cmluZ2lmeTpmdW5jdGlvbih0KXt2YXIgcj10LndvcmRzLGU9dC5zaWdCeXRlcyxpPXRoaXMuX21hcDt0LmNsYW1wKCk7Zm9yKHZhciBuPVtdLG89MDtvPGU7bys9Mylmb3IodmFyIHM9cltvPj4+Ml0+Pj4yNC1vJTQqOCYyNTUsYT1yW28rMT4+PjJdPj4+MjQtKG8rMSklNCo4JjI1NSxjPXJbbysyPj4+Ml0+Pj4yNC0obysyKSU0KjgmMjU1LGg9czw8MTZ8YTw8OHxjLGw9MDtsPDQmJm8rLjc1Kmw8ZTtsKyspbi5wdXNoKGkuY2hhckF0KGg+Pj42KigzLWwpJjYzKSk7dmFyIGY9aS5jaGFyQXQoNjQpO2lmKGYpZm9yKDtuLmxlbmd0aCU0OyluLnB1c2goZik7cmV0dXJuIG4uam9pbihcIlwiKX0scGFyc2U6ZnVuY3Rpb24odCl7dmFyIGU9dC5sZW5ndGgsaT10aGlzLl9tYXAsbj10aGlzLl9yZXZlcnNlTWFwO2lmKCFuKXtuPXRoaXMuX3JldmVyc2VNYXA9W107Zm9yKHZhciBvPTA7bzxpLmxlbmd0aDtvKyspbltpLmNoYXJDb2RlQXQobyldPW99dmFyIHM9aS5jaGFyQXQoNjQpO2lmKHMpe3ZhciBhPXQuaW5kZXhPZihzKTthIT09LTEmJihlPWEpfXJldHVybiByKHQsZSxuKX0sX21hcDpcIkFCQ0RFRkdISUpLTE1OT1BRUlNUVVZXWFlaYWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXowMTIzNDU2Nzg5Ky89XCJ9fSgpLGZ1bmN0aW9uKHIpe2Z1bmN0aW9uIGUodCxyLGUsaSxuLG8scyl7dmFyIGE9dCsociZlfH5yJmkpK24rcztyZXR1cm4oYTw8b3xhPj4+MzItbykrcn1mdW5jdGlvbiBpKHQscixlLGksbixvLHMpe3ZhciBhPXQrKHImaXxlJn5pKStuK3M7cmV0dXJuKGE8PG98YT4+PjMyLW8pK3J9ZnVuY3Rpb24gbih0LHIsZSxpLG4sbyxzKXt2YXIgYT10KyhyXmVeaSkrbitzO3JldHVybihhPDxvfGE+Pj4zMi1vKStyfWZ1bmN0aW9uIG8odCxyLGUsaSxuLG8scyl7dmFyIGE9dCsoZV4ocnx+aSkpK24rcztyZXR1cm4oYTw8b3xhPj4+MzItbykrcn12YXIgcz10LGE9cy5saWIsYz1hLldvcmRBcnJheSxoPWEuSGFzaGVyLGw9cy5hbGdvLGY9W107IWZ1bmN0aW9uKCl7Zm9yKHZhciB0PTA7dDw2NDt0KyspZlt0XT00Mjk0OTY3Mjk2KnIuYWJzKHIuc2luKHQrMSkpfDB9KCk7dmFyIHU9bC5NRDU9aC5leHRlbmQoe19kb1Jlc2V0OmZ1bmN0aW9uKCl7dGhpcy5faGFzaD1uZXcgYy5pbml0KFsxNzMyNTg0MTkzLDQwMjMyMzM0MTcsMjU2MjM4MzEwMiwyNzE3MzM4NzhdKX0sX2RvUHJvY2Vzc0Jsb2NrOmZ1bmN0aW9uKHQscil7Zm9yKHZhciBzPTA7czwxNjtzKyspe3ZhciBhPXIrcyxjPXRbYV07dFthXT0xNjcxMTkzNSYoYzw8OHxjPj4+MjQpfDQyNzgyNTUzNjAmKGM8PDI0fGM+Pj44KX12YXIgaD10aGlzLl9oYXNoLndvcmRzLGw9dFtyKzBdLHU9dFtyKzFdLGQ9dFtyKzJdLHY9dFtyKzNdLHA9dFtyKzRdLF89dFtyKzVdLHk9dFtyKzZdLGc9dFtyKzddLEI9dFtyKzhdLHc9dFtyKzldLGs9dFtyKzEwXSxTPXRbcisxMV0sbT10W3IrMTJdLHg9dFtyKzEzXSxiPXRbcisxNF0sSD10W3IrMTVdLHo9aFswXSxBPWhbMV0sQz1oWzJdLEQ9aFszXTt6PWUoeixBLEMsRCxsLDcsZlswXSksRD1lKEQseixBLEMsdSwxMixmWzFdKSxDPWUoQyxELHosQSxkLDE3LGZbMl0pLEE9ZShBLEMsRCx6LHYsMjIsZlszXSksej1lKHosQSxDLEQscCw3LGZbNF0pLEQ9ZShELHosQSxDLF8sMTIsZls1XSksQz1lKEMsRCx6LEEseSwxNyxmWzZdKSxBPWUoQSxDLEQseixnLDIyLGZbN10pLHo9ZSh6LEEsQyxELEIsNyxmWzhdKSxEPWUoRCx6LEEsQyx3LDEyLGZbOV0pLEM9ZShDLEQseixBLGssMTcsZlsxMF0pLEE9ZShBLEMsRCx6LFMsMjIsZlsxMV0pLHo9ZSh6LEEsQyxELG0sNyxmWzEyXSksRD1lKEQseixBLEMseCwxMixmWzEzXSksQz1lKEMsRCx6LEEsYiwxNyxmWzE0XSksQT1lKEEsQyxELHosSCwyMixmWzE1XSksej1pKHosQSxDLEQsdSw1LGZbMTZdKSxEPWkoRCx6LEEsQyx5LDksZlsxN10pLEM9aShDLEQseixBLFMsMTQsZlsxOF0pLEE9aShBLEMsRCx6LGwsMjAsZlsxOV0pLHo9aSh6LEEsQyxELF8sNSxmWzIwXSksRD1pKEQseixBLEMsayw5LGZbMjFdKSxDPWkoQyxELHosQSxILDE0LGZbMjJdKSxBPWkoQSxDLEQseixwLDIwLGZbMjNdKSx6PWkoeixBLEMsRCx3LDUsZlsyNF0pLEQ9aShELHosQSxDLGIsOSxmWzI1XSksQz1pKEMsRCx6LEEsdiwxNCxmWzI2XSksQT1pKEEsQyxELHosQiwyMCxmWzI3XSksej1pKHosQSxDLEQseCw1LGZbMjhdKSxEPWkoRCx6LEEsQyxkLDksZlsyOV0pLEM9aShDLEQseixBLGcsMTQsZlszMF0pLEE9aShBLEMsRCx6LG0sMjAsZlszMV0pLHo9bih6LEEsQyxELF8sNCxmWzMyXSksRD1uKEQseixBLEMsQiwxMSxmWzMzXSksQz1uKEMsRCx6LEEsUywxNixmWzM0XSksQT1uKEEsQyxELHosYiwyMyxmWzM1XSksej1uKHosQSxDLEQsdSw0LGZbMzZdKSxEPW4oRCx6LEEsQyxwLDExLGZbMzddKSxDPW4oQyxELHosQSxnLDE2LGZbMzhdKSxBPW4oQSxDLEQseixrLDIzLGZbMzldKSx6PW4oeixBLEMsRCx4LDQsZls0MF0pLEQ9bihELHosQSxDLGwsMTEsZls0MV0pLEM9bihDLEQseixBLHYsMTYsZls0Ml0pLEE9bihBLEMsRCx6LHksMjMsZls0M10pLHo9bih6LEEsQyxELHcsNCxmWzQ0XSksRD1uKEQseixBLEMsbSwxMSxmWzQ1XSksQz1uKEMsRCx6LEEsSCwxNixmWzQ2XSksQT1uKEEsQyxELHosZCwyMyxmWzQ3XSksej1vKHosQSxDLEQsbCw2LGZbNDhdKSxEPW8oRCx6LEEsQyxnLDEwLGZbNDldKSxDPW8oQyxELHosQSxiLDE1LGZbNTBdKSxBPW8oQSxDLEQseixfLDIxLGZbNTFdKSx6PW8oeixBLEMsRCxtLDYsZls1Ml0pLEQ9byhELHosQSxDLHYsMTAsZls1M10pLEM9byhDLEQseixBLGssMTUsZls1NF0pLEE9byhBLEMsRCx6LHUsMjEsZls1NV0pLHo9byh6LEEsQyxELEIsNixmWzU2XSksRD1vKEQseixBLEMsSCwxMCxmWzU3XSksQz1vKEMsRCx6LEEseSwxNSxmWzU4XSksQT1vKEEsQyxELHoseCwyMSxmWzU5XSksej1vKHosQSxDLEQscCw2LGZbNjBdKSxEPW8oRCx6LEEsQyxTLDEwLGZbNjFdKSxDPW8oQyxELHosQSxkLDE1LGZbNjJdKSxBPW8oQSxDLEQseix3LDIxLGZbNjNdKSxoWzBdPWhbMF0renwwLGhbMV09aFsxXStBfDAsaFsyXT1oWzJdK0N8MCxoWzNdPWhbM10rRHwwfSxfZG9GaW5hbGl6ZTpmdW5jdGlvbigpe3ZhciB0PXRoaXMuX2RhdGEsZT10LndvcmRzLGk9OCp0aGlzLl9uRGF0YUJ5dGVzLG49OCp0LnNpZ0J5dGVzO2Vbbj4+PjVdfD0xMjg8PDI0LW4lMzI7dmFyIG89ci5mbG9vcihpLzQyOTQ5NjcyOTYpLHM9aTtlWyhuKzY0Pj4+OTw8NCkrMTVdPTE2NzExOTM1JihvPDw4fG8+Pj4yNCl8NDI3ODI1NTM2MCYobzw8MjR8bz4+PjgpLGVbKG4rNjQ+Pj45PDw0KSsxNF09MTY3MTE5MzUmKHM8PDh8cz4+PjI0KXw0Mjc4MjU1MzYwJihzPDwyNHxzPj4+OCksdC5zaWdCeXRlcz00KihlLmxlbmd0aCsxKSx0aGlzLl9wcm9jZXNzKCk7Zm9yKHZhciBhPXRoaXMuX2hhc2gsYz1hLndvcmRzLGg9MDtoPDQ7aCsrKXt2YXIgbD1jW2hdO2NbaF09MTY3MTE5MzUmKGw8PDh8bD4+PjI0KXw0Mjc4MjU1MzYwJihsPDwyNHxsPj4+OCl9cmV0dXJuIGF9LGNsb25lOmZ1bmN0aW9uKCl7dmFyIHQ9aC5jbG9uZS5jYWxsKHRoaXMpO3JldHVybiB0Ll9oYXNoPXRoaXMuX2hhc2guY2xvbmUoKSx0fX0pO3MuTUQ1PWguX2NyZWF0ZUhlbHBlcih1KSxzLkhtYWNNRDU9aC5fY3JlYXRlSG1hY0hlbHBlcih1KX0oTWF0aCksZnVuY3Rpb24oKXt2YXIgcj10LGU9ci5saWIsaT1lLldvcmRBcnJheSxuPWUuSGFzaGVyLG89ci5hbGdvLHM9W10sYT1vLlNIQTE9bi5leHRlbmQoe19kb1Jlc2V0OmZ1bmN0aW9uKCl7dGhpcy5faGFzaD1uZXcgaS5pbml0KFsxNzMyNTg0MTkzLDQwMjMyMzM0MTcsMjU2MjM4MzEwMiwyNzE3MzM4NzgsMzI4NTM3NzUyMF0pfSxfZG9Qcm9jZXNzQmxvY2s6ZnVuY3Rpb24odCxyKXtmb3IodmFyIGU9dGhpcy5faGFzaC53b3JkcyxpPWVbMF0sbj1lWzFdLG89ZVsyXSxhPWVbM10sYz1lWzRdLGg9MDtoPDgwO2grKyl7aWYoaDwxNilzW2hdPTB8dFtyK2hdO2Vsc2V7dmFyIGw9c1toLTNdXnNbaC04XV5zW2gtMTRdXnNbaC0xNl07c1toXT1sPDwxfGw+Pj4zMX12YXIgZj0oaTw8NXxpPj4+MjcpK2Mrc1toXTtmKz1oPDIwPyhuJm98fm4mYSkrMTUxODUwMDI0OTpoPDQwPyhuXm9eYSkrMTg1OTc3NTM5MzpoPDYwPyhuJm98biZhfG8mYSktMTg5NDAwNzU4ODoobl5vXmEpLTg5OTQ5NzUxNCxjPWEsYT1vLG89bjw8MzB8bj4+PjIsbj1pLGk9Zn1lWzBdPWVbMF0raXwwLGVbMV09ZVsxXStufDAsZVsyXT1lWzJdK298MCxlWzNdPWVbM10rYXwwLGVbNF09ZVs0XStjfDB9LF9kb0ZpbmFsaXplOmZ1bmN0aW9uKCl7dmFyIHQ9dGhpcy5fZGF0YSxyPXQud29yZHMsZT04KnRoaXMuX25EYXRhQnl0ZXMsaT04KnQuc2lnQnl0ZXM7cmV0dXJuIHJbaT4+PjVdfD0xMjg8PDI0LWklMzIsclsoaSs2ND4+Pjk8PDQpKzE0XT1NYXRoLmZsb29yKGUvNDI5NDk2NzI5NiksclsoaSs2ND4+Pjk8PDQpKzE1XT1lLHQuc2lnQnl0ZXM9NCpyLmxlbmd0aCx0aGlzLl9wcm9jZXNzKCksdGhpcy5faGFzaH0sY2xvbmU6ZnVuY3Rpb24oKXt2YXIgdD1uLmNsb25lLmNhbGwodGhpcyk7cmV0dXJuIHQuX2hhc2g9dGhpcy5faGFzaC5jbG9uZSgpLHR9fSk7ci5TSEExPW4uX2NyZWF0ZUhlbHBlcihhKSxyLkhtYWNTSEExPW4uX2NyZWF0ZUhtYWNIZWxwZXIoYSl9KCksZnVuY3Rpb24ocil7dmFyIGU9dCxpPWUubGliLG49aS5Xb3JkQXJyYXksbz1pLkhhc2hlcixzPWUuYWxnbyxhPVtdLGM9W107IWZ1bmN0aW9uKCl7ZnVuY3Rpb24gdCh0KXtmb3IodmFyIGU9ci5zcXJ0KHQpLGk9MjtpPD1lO2krKylpZighKHQlaSkpcmV0dXJuITE7cmV0dXJuITB9ZnVuY3Rpb24gZSh0KXtyZXR1cm4gNDI5NDk2NzI5NioodC0oMHx0KSl8MH1mb3IodmFyIGk9MixuPTA7bjw2NDspdChpKSYmKG48OCYmKGFbbl09ZShyLnBvdyhpLC41KSkpLGNbbl09ZShyLnBvdyhpLDEvMykpLG4rKyksaSsrfSgpO3ZhciBoPVtdLGw9cy5TSEEyNTY9by5leHRlbmQoe19kb1Jlc2V0OmZ1bmN0aW9uKCl7dGhpcy5faGFzaD1uZXcgbi5pbml0KGEuc2xpY2UoMCkpfSxfZG9Qcm9jZXNzQmxvY2s6ZnVuY3Rpb24odCxyKXtmb3IodmFyIGU9dGhpcy5faGFzaC53b3JkcyxpPWVbMF0sbj1lWzFdLG89ZVsyXSxzPWVbM10sYT1lWzRdLGw9ZVs1XSxmPWVbNl0sdT1lWzddLGQ9MDtkPDY0O2QrKyl7aWYoZDwxNiloW2RdPTB8dFtyK2RdO2Vsc2V7dmFyIHY9aFtkLTE1XSxwPSh2PDwyNXx2Pj4+NyleKHY8PDE0fHY+Pj4xOCledj4+PjMsXz1oW2QtMl0seT0oXzw8MTV8Xz4+PjE3KV4oXzw8MTN8Xz4+PjE5KV5fPj4+MTA7aFtkXT1wK2hbZC03XSt5K2hbZC0xNl19dmFyIGc9YSZsXn5hJmYsQj1pJm5eaSZvXm4mbyx3PShpPDwzMHxpPj4+MileKGk8PDE5fGk+Pj4xMyleKGk8PDEwfGk+Pj4yMiksaz0oYTw8MjZ8YT4+PjYpXihhPDwyMXxhPj4+MTEpXihhPDw3fGE+Pj4yNSksUz11K2srZytjW2RdK2hbZF0sbT13K0I7dT1mLGY9bCxsPWEsYT1zK1N8MCxzPW8sbz1uLG49aSxpPVMrbXwwfWVbMF09ZVswXStpfDAsZVsxXT1lWzFdK258MCxlWzJdPWVbMl0rb3wwLGVbM109ZVszXStzfDAsZVs0XT1lWzRdK2F8MCxlWzVdPWVbNV0rbHwwLGVbNl09ZVs2XStmfDAsZVs3XT1lWzddK3V8MH0sX2RvRmluYWxpemU6ZnVuY3Rpb24oKXt2YXIgdD10aGlzLl9kYXRhLGU9dC53b3JkcyxpPTgqdGhpcy5fbkRhdGFCeXRlcyxuPTgqdC5zaWdCeXRlcztyZXR1cm4gZVtuPj4+NV18PTEyODw8MjQtbiUzMixlWyhuKzY0Pj4+OTw8NCkrMTRdPXIuZmxvb3IoaS80Mjk0OTY3Mjk2KSxlWyhuKzY0Pj4+OTw8NCkrMTVdPWksdC5zaWdCeXRlcz00KmUubGVuZ3RoLHRoaXMuX3Byb2Nlc3MoKSx0aGlzLl9oYXNofSxjbG9uZTpmdW5jdGlvbigpe3ZhciB0PW8uY2xvbmUuY2FsbCh0aGlzKTtyZXR1cm4gdC5faGFzaD10aGlzLl9oYXNoLmNsb25lKCksdH19KTtlLlNIQTI1Nj1vLl9jcmVhdGVIZWxwZXIobCksZS5IbWFjU0hBMjU2PW8uX2NyZWF0ZUhtYWNIZWxwZXIobCl9KE1hdGgpLGZ1bmN0aW9uKCl7ZnVuY3Rpb24gcih0KXtyZXR1cm4gdDw8OCY0Mjc4MjU1MzYwfHQ+Pj44JjE2NzExOTM1fXZhciBlPXQsaT1lLmxpYixuPWkuV29yZEFycmF5LG89ZS5lbmM7by5VdGYxNj1vLlV0ZjE2QkU9e3N0cmluZ2lmeTpmdW5jdGlvbih0KXtmb3IodmFyIHI9dC53b3JkcyxlPXQuc2lnQnl0ZXMsaT1bXSxuPTA7bjxlO24rPTIpe3ZhciBvPXJbbj4+PjJdPj4+MTYtbiU0KjgmNjU1MzU7aS5wdXNoKFN0cmluZy5mcm9tQ2hhckNvZGUobykpfXJldHVybiBpLmpvaW4oXCJcIil9LHBhcnNlOmZ1bmN0aW9uKHQpe2Zvcih2YXIgcj10Lmxlbmd0aCxlPVtdLGk9MDtpPHI7aSsrKWVbaT4+PjFdfD10LmNoYXJDb2RlQXQoaSk8PDE2LWklMioxNjtyZXR1cm4gbi5jcmVhdGUoZSwyKnIpfX07by5VdGYxNkxFPXtzdHJpbmdpZnk6ZnVuY3Rpb24odCl7Zm9yKHZhciBlPXQud29yZHMsaT10LnNpZ0J5dGVzLG49W10sbz0wO288aTtvKz0yKXt2YXIgcz1yKGVbbz4+PjJdPj4+MTYtbyU0KjgmNjU1MzUpO24ucHVzaChTdHJpbmcuZnJvbUNoYXJDb2RlKHMpKX1yZXR1cm4gbi5qb2luKFwiXCIpfSxwYXJzZTpmdW5jdGlvbih0KXtmb3IodmFyIGU9dC5sZW5ndGgsaT1bXSxvPTA7bzxlO28rKylpW28+Pj4xXXw9cih0LmNoYXJDb2RlQXQobyk8PDE2LW8lMioxNik7cmV0dXJuIG4uY3JlYXRlKGksMiplKX19fSgpLGZ1bmN0aW9uKCl7aWYoXCJmdW5jdGlvblwiPT10eXBlb2YgQXJyYXlCdWZmZXIpe3ZhciByPXQsZT1yLmxpYixpPWUuV29yZEFycmF5LG49aS5pbml0LG89aS5pbml0PWZ1bmN0aW9uKHQpe2lmKHQgaW5zdGFuY2VvZiBBcnJheUJ1ZmZlciYmKHQ9bmV3IFVpbnQ4QXJyYXkodCkpLCh0IGluc3RhbmNlb2YgSW50OEFycmF5fHxcInVuZGVmaW5lZFwiIT10eXBlb2YgVWludDhDbGFtcGVkQXJyYXkmJnQgaW5zdGFuY2VvZiBVaW50OENsYW1wZWRBcnJheXx8dCBpbnN0YW5jZW9mIEludDE2QXJyYXl8fHQgaW5zdGFuY2VvZiBVaW50MTZBcnJheXx8dCBpbnN0YW5jZW9mIEludDMyQXJyYXl8fHQgaW5zdGFuY2VvZiBVaW50MzJBcnJheXx8dCBpbnN0YW5jZW9mIEZsb2F0MzJBcnJheXx8dCBpbnN0YW5jZW9mIEZsb2F0NjRBcnJheSkmJih0PW5ldyBVaW50OEFycmF5KHQuYnVmZmVyLHQuYnl0ZU9mZnNldCx0LmJ5dGVMZW5ndGgpKSx0IGluc3RhbmNlb2YgVWludDhBcnJheSl7Zm9yKHZhciByPXQuYnl0ZUxlbmd0aCxlPVtdLGk9MDtpPHI7aSsrKWVbaT4+PjJdfD10W2ldPDwyNC1pJTQqODtuLmNhbGwodGhpcyxlLHIpfWVsc2Ugbi5hcHBseSh0aGlzLGFyZ3VtZW50cyl9O28ucHJvdG90eXBlPWl9fSgpLGZ1bmN0aW9uKHIpe2Z1bmN0aW9uIGUodCxyLGUpe3JldHVybiB0XnJeZX1mdW5jdGlvbiBpKHQscixlKXtyZXR1cm4gdCZyfH50JmV9ZnVuY3Rpb24gbih0LHIsZSl7cmV0dXJuKHR8fnIpXmV9ZnVuY3Rpb24gbyh0LHIsZSl7cmV0dXJuIHQmZXxyJn5lfWZ1bmN0aW9uIHModCxyLGUpe3JldHVybiB0XihyfH5lKX1mdW5jdGlvbiBhKHQscil7cmV0dXJuIHQ8PHJ8dD4+PjMyLXJ9dmFyIGM9dCxoPWMubGliLGw9aC5Xb3JkQXJyYXksZj1oLkhhc2hlcix1PWMuYWxnbyxkPWwuY3JlYXRlKFswLDEsMiwzLDQsNSw2LDcsOCw5LDEwLDExLDEyLDEzLDE0LDE1LDcsNCwxMywxLDEwLDYsMTUsMywxMiwwLDksNSwyLDE0LDExLDgsMywxMCwxNCw0LDksMTUsOCwxLDIsNywwLDYsMTMsMTEsNSwxMiwxLDksMTEsMTAsMCw4LDEyLDQsMTMsMyw3LDE1LDE0LDUsNiwyLDQsMCw1LDksNywxMiwyLDEwLDE0LDEsMyw4LDExLDYsMTUsMTNdKSx2PWwuY3JlYXRlKFs1LDE0LDcsMCw5LDIsMTEsNCwxMyw2LDE1LDgsMSwxMCwzLDEyLDYsMTEsMyw3LDAsMTMsNSwxMCwxNCwxNSw4LDEyLDQsOSwxLDIsMTUsNSwxLDMsNywxNCw2LDksMTEsOCwxMiwyLDEwLDAsNCwxMyw4LDYsNCwxLDMsMTEsMTUsMCw1LDEyLDIsMTMsOSw3LDEwLDE0LDEyLDE1LDEwLDQsMSw1LDgsNyw2LDIsMTMsMTQsMCwzLDksMTFdKSxwPWwuY3JlYXRlKFsxMSwxNCwxNSwxMiw1LDgsNyw5LDExLDEzLDE0LDE1LDYsNyw5LDgsNyw2LDgsMTMsMTEsOSw3LDE1LDcsMTIsMTUsOSwxMSw3LDEzLDEyLDExLDEzLDYsNywxNCw5LDEzLDE1LDE0LDgsMTMsNiw1LDEyLDcsNSwxMSwxMiwxNCwxNSwxNCwxNSw5LDgsOSwxNCw1LDYsOCw2LDUsMTIsOSwxNSw1LDExLDYsOCwxMywxMiw1LDEyLDEzLDE0LDExLDgsNSw2XSksXz1sLmNyZWF0ZShbOCw5LDksMTEsMTMsMTUsMTUsNSw3LDcsOCwxMSwxNCwxNCwxMiw2LDksMTMsMTUsNywxMiw4LDksMTEsNyw3LDEyLDcsNiwxNSwxMywxMSw5LDcsMTUsMTEsOCw2LDYsMTQsMTIsMTMsNSwxNCwxMywxMyw3LDUsMTUsNSw4LDExLDE0LDE0LDYsMTQsNiw5LDEyLDksMTIsNSwxNSw4LDgsNSwxMiw5LDEyLDUsMTQsNiw4LDEzLDYsNSwxNSwxMywxMSwxMV0pLHk9bC5jcmVhdGUoWzAsMTUxODUwMDI0OSwxODU5Nzc1MzkzLDI0MDA5NTk3MDgsMjg0MDg1MzgzOF0pLGc9bC5jcmVhdGUoWzEzNTI4Mjk5MjYsMTU0ODYwMzY4NCwxODM2MDcyNjkxLDIwNTM5OTQyMTcsMF0pLEI9dS5SSVBFTUQxNjA9Zi5leHRlbmQoe19kb1Jlc2V0OmZ1bmN0aW9uKCl7dGhpcy5faGFzaD1sLmNyZWF0ZShbMTczMjU4NDE5Myw0MDIzMjMzNDE3LDI1NjIzODMxMDIsMjcxNzMzODc4LDMyODUzNzc1MjBdKX0sX2RvUHJvY2Vzc0Jsb2NrOmZ1bmN0aW9uKHQscil7Zm9yKHZhciBjPTA7YzwxNjtjKyspe3ZhciBoPXIrYyxsPXRbaF07dFtoXT0xNjcxMTkzNSYobDw8OHxsPj4+MjQpfDQyNzgyNTUzNjAmKGw8PDI0fGw+Pj44KX12YXIgZix1LEIsdyxrLFMsbSx4LGIsSCx6PXRoaXMuX2hhc2gud29yZHMsQT15LndvcmRzLEM9Zy53b3JkcyxEPWQud29yZHMsUj12LndvcmRzLEU9cC53b3JkcyxNPV8ud29yZHM7Uz1mPXpbMF0sbT11PXpbMV0seD1CPXpbMl0sYj13PXpbM10sSD1rPXpbNF07Zm9yKHZhciBGLGM9MDtjPDgwO2MrPTEpRj1mK3RbcitEW2NdXXwwLEYrPWM8MTY/ZSh1LEIsdykrQVswXTpjPDMyP2kodSxCLHcpK0FbMV06Yzw0OD9uKHUsQix3KStBWzJdOmM8NjQ/byh1LEIsdykrQVszXTpzKHUsQix3KStBWzRdLEZ8PTAsRj1hKEYsRVtjXSksRj1GK2t8MCxmPWssaz13LHc9YShCLDEwKSxCPXUsdT1GLEY9Uyt0W3IrUltjXV18MCxGKz1jPDE2P3MobSx4LGIpK0NbMF06YzwzMj9vKG0seCxiKStDWzFdOmM8NDg/bihtLHgsYikrQ1syXTpjPDY0P2kobSx4LGIpK0NbM106ZShtLHgsYikrQ1s0XSxGfD0wLEY9YShGLE1bY10pLEY9RitIfDAsUz1ILEg9YixiPWEoeCwxMCkseD1tLG09RjtGPXpbMV0rQitifDAselsxXT16WzJdK3crSHwwLHpbMl09elszXStrK1N8MCx6WzNdPXpbNF0rZittfDAsels0XT16WzBdK3UreHwwLHpbMF09Rn0sX2RvRmluYWxpemU6ZnVuY3Rpb24oKXt2YXIgdD10aGlzLl9kYXRhLHI9dC53b3JkcyxlPTgqdGhpcy5fbkRhdGFCeXRlcyxpPTgqdC5zaWdCeXRlcztyW2k+Pj41XXw9MTI4PDwyNC1pJTMyLHJbKGkrNjQ+Pj45PDw0KSsxNF09MTY3MTE5MzUmKGU8PDh8ZT4+PjI0KXw0Mjc4MjU1MzYwJihlPDwyNHxlPj4+OCksdC5zaWdCeXRlcz00KihyLmxlbmd0aCsxKSx0aGlzLl9wcm9jZXNzKCk7Zm9yKHZhciBuPXRoaXMuX2hhc2gsbz1uLndvcmRzLHM9MDtzPDU7cysrKXt2YXIgYT1vW3NdO29bc109MTY3MTE5MzUmKGE8PDh8YT4+PjI0KXw0Mjc4MjU1MzYwJihhPDwyNHxhPj4+OCl9cmV0dXJuIG59LGNsb25lOmZ1bmN0aW9uKCl7dmFyIHQ9Zi5jbG9uZS5jYWxsKHRoaXMpO3JldHVybiB0Ll9oYXNoPXRoaXMuX2hhc2guY2xvbmUoKSx0fX0pO2MuUklQRU1EMTYwPWYuX2NyZWF0ZUhlbHBlcihCKSxjLkhtYWNSSVBFTUQxNjA9Zi5fY3JlYXRlSG1hY0hlbHBlcihCKX0oTWF0aCksZnVuY3Rpb24oKXt2YXIgcj10LGU9ci5saWIsaT1lLkJhc2Usbj1yLmVuYyxvPW4uVXRmOCxzPXIuYWxnbztzLkhNQUM9aS5leHRlbmQoe2luaXQ6ZnVuY3Rpb24odCxyKXt0PXRoaXMuX2hhc2hlcj1uZXcgdC5pbml0LFwic3RyaW5nXCI9PXR5cGVvZiByJiYocj1vLnBhcnNlKHIpKTt2YXIgZT10LmJsb2NrU2l6ZSxpPTQqZTtyLnNpZ0J5dGVzPmkmJihyPXQuZmluYWxpemUocikpLHIuY2xhbXAoKTtmb3IodmFyIG49dGhpcy5fb0tleT1yLmNsb25lKCkscz10aGlzLl9pS2V5PXIuY2xvbmUoKSxhPW4ud29yZHMsYz1zLndvcmRzLGg9MDtoPGU7aCsrKWFbaF1ePTE1NDk1NTY4MjgsY1toXV49OTA5NTIyNDg2O24uc2lnQnl0ZXM9cy5zaWdCeXRlcz1pLHRoaXMucmVzZXQoKX0scmVzZXQ6ZnVuY3Rpb24oKXt2YXIgdD10aGlzLl9oYXNoZXI7dC5yZXNldCgpLHQudXBkYXRlKHRoaXMuX2lLZXkpfSx1cGRhdGU6ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuX2hhc2hlci51cGRhdGUodCksdGhpc30sZmluYWxpemU6ZnVuY3Rpb24odCl7dmFyIHI9dGhpcy5faGFzaGVyLGU9ci5maW5hbGl6ZSh0KTtyLnJlc2V0KCk7dmFyIGk9ci5maW5hbGl6ZSh0aGlzLl9vS2V5LmNsb25lKCkuY29uY2F0KGUpKTtyZXR1cm4gaX19KX0oKSxmdW5jdGlvbigpe3ZhciByPXQsZT1yLmxpYixpPWUuQmFzZSxuPWUuV29yZEFycmF5LG89ci5hbGdvLHM9by5TSEExLGE9by5ITUFDLGM9by5QQktERjI9aS5leHRlbmQoe2NmZzppLmV4dGVuZCh7a2V5U2l6ZTo0LGhhc2hlcjpzLGl0ZXJhdGlvbnM6MX0pLGluaXQ6ZnVuY3Rpb24odCl7dGhpcy5jZmc9dGhpcy5jZmcuZXh0ZW5kKHQpfSxjb21wdXRlOmZ1bmN0aW9uKHQscil7Zm9yKHZhciBlPXRoaXMuY2ZnLGk9YS5jcmVhdGUoZS5oYXNoZXIsdCksbz1uLmNyZWF0ZSgpLHM9bi5jcmVhdGUoWzFdKSxjPW8ud29yZHMsaD1zLndvcmRzLGw9ZS5rZXlTaXplLGY9ZS5pdGVyYXRpb25zO2MubGVuZ3RoPGw7KXt2YXIgdT1pLnVwZGF0ZShyKS5maW5hbGl6ZShzKTtpLnJlc2V0KCk7Zm9yKHZhciBkPXUud29yZHMsdj1kLmxlbmd0aCxwPXUsXz0xO188ZjtfKyspe3A9aS5maW5hbGl6ZShwKSxpLnJlc2V0KCk7Zm9yKHZhciB5PXAud29yZHMsZz0wO2c8djtnKyspZFtnXV49eVtnXX1vLmNvbmNhdCh1KSxoWzBdKyt9cmV0dXJuIG8uc2lnQnl0ZXM9NCpsLG99fSk7ci5QQktERjI9ZnVuY3Rpb24odCxyLGUpe3JldHVybiBjLmNyZWF0ZShlKS5jb21wdXRlKHQscil9fSgpLGZ1bmN0aW9uKCl7dmFyIHI9dCxlPXIubGliLGk9ZS5CYXNlLG49ZS5Xb3JkQXJyYXksbz1yLmFsZ28scz1vLk1ENSxhPW8uRXZwS0RGPWkuZXh0ZW5kKHtjZmc6aS5leHRlbmQoe2tleVNpemU6NCxoYXNoZXI6cyxpdGVyYXRpb25zOjF9KSxpbml0OmZ1bmN0aW9uKHQpe3RoaXMuY2ZnPXRoaXMuY2ZnLmV4dGVuZCh0KX0sY29tcHV0ZTpmdW5jdGlvbih0LHIpe2Zvcih2YXIgZT10aGlzLmNmZyxpPWUuaGFzaGVyLmNyZWF0ZSgpLG89bi5jcmVhdGUoKSxzPW8ud29yZHMsYT1lLmtleVNpemUsYz1lLml0ZXJhdGlvbnM7cy5sZW5ndGg8YTspe2gmJmkudXBkYXRlKGgpO3ZhciBoPWkudXBkYXRlKHQpLmZpbmFsaXplKHIpO2kucmVzZXQoKTtmb3IodmFyIGw9MTtsPGM7bCsrKWg9aS5maW5hbGl6ZShoKSxpLnJlc2V0KCk7by5jb25jYXQoaCl9cmV0dXJuIG8uc2lnQnl0ZXM9NCphLG99fSk7ci5FdnBLREY9ZnVuY3Rpb24odCxyLGUpe3JldHVybiBhLmNyZWF0ZShlKS5jb21wdXRlKHQscil9fSgpLGZ1bmN0aW9uKCl7dmFyIHI9dCxlPXIubGliLGk9ZS5Xb3JkQXJyYXksbj1yLmFsZ28sbz1uLlNIQTI1NixzPW4uU0hBMjI0PW8uZXh0ZW5kKHtfZG9SZXNldDpmdW5jdGlvbigpe3RoaXMuX2hhc2g9bmV3IGkuaW5pdChbMzIzODM3MTAzMiw5MTQxNTA2NjMsODEyNzAyOTk5LDQxNDQ5MTI2OTcsNDI5MDc3NTg1NywxNzUwNjAzMDI1LDE2OTQwNzY4MzksMzIwNDA3NTQyOF0pfSxfZG9GaW5hbGl6ZTpmdW5jdGlvbigpe3ZhciB0PW8uX2RvRmluYWxpemUuY2FsbCh0aGlzKTtyZXR1cm4gdC5zaWdCeXRlcy09NCx0fX0pO3IuU0hBMjI0PW8uX2NyZWF0ZUhlbHBlcihzKSxyLkhtYWNTSEEyMjQ9by5fY3JlYXRlSG1hY0hlbHBlcihzKX0oKSxmdW5jdGlvbihyKXt2YXIgZT10LGk9ZS5saWIsbj1pLkJhc2Usbz1pLldvcmRBcnJheSxzPWUueDY0PXt9O3MuV29yZD1uLmV4dGVuZCh7aW5pdDpmdW5jdGlvbih0LHIpe3RoaXMuaGlnaD10LHRoaXMubG93PXJ9fSkscy5Xb3JkQXJyYXk9bi5leHRlbmQoe2luaXQ6ZnVuY3Rpb24odCxlKXt0PXRoaXMud29yZHM9dHx8W10sZSE9cj90aGlzLnNpZ0J5dGVzPWU6dGhpcy5zaWdCeXRlcz04KnQubGVuZ3RofSx0b1gzMjpmdW5jdGlvbigpe2Zvcih2YXIgdD10aGlzLndvcmRzLHI9dC5sZW5ndGgsZT1bXSxpPTA7aTxyO2krKyl7dmFyIG49dFtpXTtlLnB1c2gobi5oaWdoKSxlLnB1c2gobi5sb3cpfXJldHVybiBvLmNyZWF0ZShlLHRoaXMuc2lnQnl0ZXMpfSxjbG9uZTpmdW5jdGlvbigpe2Zvcih2YXIgdD1uLmNsb25lLmNhbGwodGhpcykscj10LndvcmRzPXRoaXMud29yZHMuc2xpY2UoMCksZT1yLmxlbmd0aCxpPTA7aTxlO2krKylyW2ldPXJbaV0uY2xvbmUoKTtyZXR1cm4gdH19KX0oKSxmdW5jdGlvbihyKXt2YXIgZT10LGk9ZS5saWIsbj1pLldvcmRBcnJheSxvPWkuSGFzaGVyLHM9ZS54NjQsYT1zLldvcmQsYz1lLmFsZ28saD1bXSxsPVtdLGY9W107IWZ1bmN0aW9uKCl7Zm9yKHZhciB0PTEscj0wLGU9MDtlPDI0O2UrKyl7aFt0KzUqcl09KGUrMSkqKGUrMikvMiU2NDt2YXIgaT1yJTUsbj0oMip0KzMqciklNTt0PWkscj1ufWZvcih2YXIgdD0wO3Q8NTt0KyspZm9yKHZhciByPTA7cjw1O3IrKylsW3QrNSpyXT1yKygyKnQrMypyKSU1KjU7Zm9yKHZhciBvPTEscz0wO3M8MjQ7cysrKXtmb3IodmFyIGM9MCx1PTAsZD0wO2Q8NztkKyspe2lmKDEmbyl7dmFyIHY9KDE8PGQpLTE7djwzMj91Xj0xPDx2OmNePTE8PHYtMzJ9MTI4Jm8/bz1vPDwxXjExMzpvPDw9MX1mW3NdPWEuY3JlYXRlKGMsdSl9fSgpO3ZhciB1PVtdOyFmdW5jdGlvbigpe2Zvcih2YXIgdD0wO3Q8MjU7dCsrKXVbdF09YS5jcmVhdGUoKX0oKTt2YXIgZD1jLlNIQTM9by5leHRlbmQoe2NmZzpvLmNmZy5leHRlbmQoe291dHB1dExlbmd0aDo1MTJ9KSxfZG9SZXNldDpmdW5jdGlvbigpe2Zvcih2YXIgdD10aGlzLl9zdGF0ZT1bXSxyPTA7cjwyNTtyKyspdFtyXT1uZXcgYS5pbml0O3RoaXMuYmxvY2tTaXplPSgxNjAwLTIqdGhpcy5jZmcub3V0cHV0TGVuZ3RoKS8zMn0sX2RvUHJvY2Vzc0Jsb2NrOmZ1bmN0aW9uKHQscil7Zm9yKHZhciBlPXRoaXMuX3N0YXRlLGk9dGhpcy5ibG9ja1NpemUvMixuPTA7bjxpO24rKyl7dmFyIG89dFtyKzIqbl0scz10W3IrMipuKzFdO289MTY3MTE5MzUmKG88PDh8bz4+PjI0KXw0Mjc4MjU1MzYwJihvPDwyNHxvPj4+OCkscz0xNjcxMTkzNSYoczw8OHxzPj4+MjQpfDQyNzgyNTUzNjAmKHM8PDI0fHM+Pj44KTt2YXIgYT1lW25dO2EuaGlnaF49cyxhLmxvd149b31mb3IodmFyIGM9MDtjPDI0O2MrKyl7Zm9yKHZhciBkPTA7ZDw1O2QrKyl7Zm9yKHZhciB2PTAscD0wLF89MDtfPDU7XysrKXt2YXIgYT1lW2QrNSpfXTt2Xj1hLmhpZ2gscF49YS5sb3d9dmFyIHk9dVtkXTt5LmhpZ2g9dix5Lmxvdz1wfWZvcih2YXIgZD0wO2Q8NTtkKyspZm9yKHZhciBnPXVbKGQrNCklNV0sQj11WyhkKzEpJTVdLHc9Qi5oaWdoLGs9Qi5sb3csdj1nLmhpZ2heKHc8PDF8az4+PjMxKSxwPWcubG93XihrPDwxfHc+Pj4zMSksXz0wO188NTtfKyspe3ZhciBhPWVbZCs1Kl9dO2EuaGlnaF49dixhLmxvd149cH1mb3IodmFyIFM9MTtTPDI1O1MrKyl7dmFyIGE9ZVtTXSxtPWEuaGlnaCx4PWEubG93LGI9aFtTXTtpZihiPDMyKXZhciB2PW08PGJ8eD4+PjMyLWIscD14PDxifG0+Pj4zMi1iO2Vsc2UgdmFyIHY9eDw8Yi0zMnxtPj4+NjQtYixwPW08PGItMzJ8eD4+PjY0LWI7dmFyIEg9dVtsW1NdXTtILmhpZ2g9dixILmxvdz1wfXZhciB6PXVbMF0sQT1lWzBdO3ouaGlnaD1BLmhpZ2gsei5sb3c9QS5sb3c7Zm9yKHZhciBkPTA7ZDw1O2QrKylmb3IodmFyIF89MDtfPDU7XysrKXt2YXIgUz1kKzUqXyxhPWVbU10sQz11W1NdLEQ9dVsoZCsxKSU1KzUqX10sUj11WyhkKzIpJTUrNSpfXTthLmhpZ2g9Qy5oaWdoXn5ELmhpZ2gmUi5oaWdoLGEubG93PUMubG93Xn5ELmxvdyZSLmxvd312YXIgYT1lWzBdLEU9ZltjXTthLmhpZ2hePUUuaGlnaCxhLmxvd149RS5sb3d9fSxfZG9GaW5hbGl6ZTpmdW5jdGlvbigpe3ZhciB0PXRoaXMuX2RhdGEsZT10LndvcmRzLGk9KDgqdGhpcy5fbkRhdGFCeXRlcyw4KnQuc2lnQnl0ZXMpLG89MzIqdGhpcy5ibG9ja1NpemU7ZVtpPj4+NV18PTE8PDI0LWklMzIsZVsoci5jZWlsKChpKzEpL28pKm8+Pj41KS0xXXw9MTI4LHQuc2lnQnl0ZXM9NCplLmxlbmd0aCx0aGlzLl9wcm9jZXNzKCk7Zm9yKHZhciBzPXRoaXMuX3N0YXRlLGE9dGhpcy5jZmcub3V0cHV0TGVuZ3RoLzgsYz1hLzgsaD1bXSxsPTA7bDxjO2wrKyl7dmFyIGY9c1tsXSx1PWYuaGlnaCxkPWYubG93O3U9MTY3MTE5MzUmKHU8PDh8dT4+PjI0KXw0Mjc4MjU1MzYwJih1PDwyNHx1Pj4+OCksZD0xNjcxMTkzNSYoZDw8OHxkPj4+MjQpfDQyNzgyNTUzNjAmKGQ8PDI0fGQ+Pj44KSxoLnB1c2goZCksaC5wdXNoKHUpfXJldHVybiBuZXcgbi5pbml0KGgsYSl9LGNsb25lOmZ1bmN0aW9uKCl7Zm9yKHZhciB0PW8uY2xvbmUuY2FsbCh0aGlzKSxyPXQuX3N0YXRlPXRoaXMuX3N0YXRlLnNsaWNlKDApLGU9MDtlPDI1O2UrKylyW2VdPXJbZV0uY2xvbmUoKTtyZXR1cm4gdH19KTtlLlNIQTM9by5fY3JlYXRlSGVscGVyKGQpLGUuSG1hY1NIQTM9by5fY3JlYXRlSG1hY0hlbHBlcihkKX0oTWF0aCksZnVuY3Rpb24oKXtmdW5jdGlvbiByKCl7cmV0dXJuIHMuY3JlYXRlLmFwcGx5KHMsYXJndW1lbnRzKX12YXIgZT10LGk9ZS5saWIsbj1pLkhhc2hlcixvPWUueDY0LHM9by5Xb3JkLGE9by5Xb3JkQXJyYXksYz1lLmFsZ28saD1bcigxMTE2MzUyNDA4LDM2MDk3Njc0NTgpLHIoMTg5OTQ0NzQ0MSw2MDI4OTE3MjUpLHIoMzA0OTMyMzQ3MSwzOTY0NDg0Mzk5KSxyKDM5MjEwMDk1NzMsMjE3MzI5NTU0OCkscig5NjE5ODcxNjMsNDA4MTYyODQ3MikscigxNTA4OTcwOTkzLDMwNTM4MzQyNjUpLHIoMjQ1MzYzNTc0OCwyOTM3NjcxNTc5KSxyKDI4NzA3NjMyMjEsMzY2NDYwOTU2MCkscigzNjI0MzgxMDgwLDI3MzQ4ODMzOTQpLHIoMzEwNTk4NDAxLDExNjQ5OTY1NDIpLHIoNjA3MjI1Mjc4LDEzMjM2MTA3NjQpLHIoMTQyNjg4MTk4NywzNTkwMzA0OTk0KSxyKDE5MjUwNzgzODgsNDA2ODE4MjM4MykscigyMTYyMDc4MjA2LDk5MTMzNjExMykscigyNjE0ODg4MTAzLDYzMzgwMzMxNykscigzMjQ4MjIyNTgwLDM0Nzk3NzQ4NjgpLHIoMzgzNTM5MDQwMSwyNjY2NjEzNDU4KSxyKDQwMjIyMjQ3NzQsOTQ0NzExMTM5KSxyKDI2NDM0NzA3OCwyMzQxMjYyNzczKSxyKDYwNDgwNzYyOCwyMDA3ODAwOTMzKSxyKDc3MDI1NTk4MywxNDk1OTkwOTAxKSxyKDEyNDkxNTAxMjIsMTg1NjQzMTIzNSkscigxNTU1MDgxNjkyLDMxNzUyMTgxMzIpLHIoMTk5NjA2NDk4NiwyMTk4OTUwODM3KSxyKDI1NTQyMjA4ODIsMzk5OTcxOTMzOSkscigyODIxODM0MzQ5LDc2Njc4NDAxNikscigyOTUyOTk2ODA4LDI1NjY1OTQ4NzkpLHIoMzIxMDMxMzY3MSwzMjAzMzM3OTU2KSxyKDMzMzY1NzE4OTEsMTAzNDQ1NzAyNikscigzNTg0NTI4NzExLDI0NjY5NDg5MDEpLHIoMTEzOTI2OTkzLDM3NTgzMjYzODMpLHIoMzM4MjQxODk1LDE2ODcxNzkzNikscig2NjYzMDcyMDUsMTE4ODE3OTk2NCkscig3NzM1Mjk5MTIsMTU0NjA0NTczNCkscigxMjk0NzU3MzcyLDE1MjI4MDU0ODUpLHIoMTM5NjE4MjI5MSwyNjQzODMzODIzKSxyKDE2OTUxODM3MDAsMjM0MzUyNzM5MCkscigxOTg2NjYxMDUxLDEwMTQ0Nzc0ODApLHIoMjE3NzAyNjM1MCwxMjA2NzU5MTQyKSxyKDI0NTY5NTYwMzcsMzQ0MDc3NjI3KSxyKDI3MzA0ODU5MjEsMTI5MDg2MzQ2MCkscigyODIwMzAyNDExLDMxNTg0NTQyNzMpLHIoMzI1OTczMDgwMCwzNTA1OTUyNjU3KSxyKDMzNDU3NjQ3NzEsMTA2MjE3MDA4KSxyKDM1MTYwNjU4MTcsMzYwNjAwODM0NCkscigzNjAwMzUyODA0LDE0MzI3MjU3NzYpLHIoNDA5NDU3MTkwOSwxNDY3MDMxNTk0KSxyKDI3NTQyMzM0NCw4NTExNjk3MjApLHIoNDMwMjI3NzM0LDMxMDA4MjM3NTIpLHIoNTA2OTQ4NjE2LDEzNjMyNTgxOTUpLHIoNjU5MDYwNTU2LDM3NTA2ODU1OTMpLHIoODgzOTk3ODc3LDM3ODUwNTAyODApLHIoOTU4MTM5NTcxLDMzMTgzMDc0MjcpLHIoMTMyMjgyMjIxOCwzODEyNzIzNDAzKSxyKDE1MzcwMDIwNjMsMjAwMzAzNDk5NSkscigxNzQ3ODczNzc5LDM2MDIwMzY4OTkpLHIoMTk1NTU2MjIyMiwxNTc1OTkwMDEyKSxyKDIwMjQxMDQ4MTUsMTEyNTU5MjkyOCkscigyMjI3NzMwNDUyLDI3MTY5MDQzMDYpLHIoMjM2MTg1MjQyNCw0NDI3NzYwNDQpLHIoMjQyODQzNjQ3NCw1OTM2OTgzNDQpLHIoMjc1NjczNDE4NywzNzMzMTEwMjQ5KSxyKDMyMDQwMzE0NzksMjk5OTM1MTU3MykscigzMzI5MzI1Mjk4LDM4MTU5MjA0MjcpLHIoMzM5MTU2OTYxNCwzOTI4MzgzOTAwKSxyKDM1MTUyNjcyNzEsNTY2MjgwNzExKSxyKDM5NDAxODc2MDYsMzQ1NDA2OTUzNCkscig0MTE4NjMwMjcxLDQwMDAyMzk5OTIpLHIoMTE2NDE4NDc0LDE5MTQxMzg1NTQpLHIoMTc0MjkyNDIxLDI3MzEwNTUyNzApLHIoMjg5MzgwMzU2LDMyMDM5OTMwMDYpLHIoNDYwMzkzMjY5LDMyMDYyMDMxNSkscig2ODU0NzE3MzMsNTg3NDk2ODM2KSxyKDg1MjE0Mjk3MSwxMDg2NzkyODUxKSxyKDEwMTcwMzYyOTgsMzY1NTQzMTAwKSxyKDExMjYwMDA1ODAsMjYxODI5NzY3NikscigxMjg4MDMzNDcwLDM0MDk4NTUxNTgpLHIoMTUwMTUwNTk0OCw0MjM0NTA5ODY2KSxyKDE2MDcxNjc5MTUsOTg3MTY3NDY4KSxyKDE4MTY0MDIzMTYsMTI0NjE4OTU5MSldLGw9W107IWZ1bmN0aW9uKCl7Zm9yKHZhciB0PTA7dDw4MDt0KyspbFt0XT1yKCl9KCk7dmFyIGY9Yy5TSEE1MTI9bi5leHRlbmQoe19kb1Jlc2V0OmZ1bmN0aW9uKCl7dGhpcy5faGFzaD1uZXcgYS5pbml0KFtuZXcgcy5pbml0KDE3NzkwMzM3MDMsNDA4OTIzNTcyMCksbmV3IHMuaW5pdCgzMTQ0MTM0Mjc3LDIyMjc4NzM1OTUpLG5ldyBzLmluaXQoMTAxMzkwNDI0Miw0MjcxMTc1NzIzKSxuZXcgcy5pbml0KDI3NzM0ODA3NjIsMTU5NTc1MDEyOSksbmV3IHMuaW5pdCgxMzU5ODkzMTE5LDI5MTc1NjUxMzcpLG5ldyBzLmluaXQoMjYwMDgyMjkyNCw3MjU1MTExOTkpLG5ldyBzLmluaXQoNTI4NzM0NjM1LDQyMTUzODk1NDcpLG5ldyBzLmluaXQoMTU0MTQ1OTIyNSwzMjcwMzMyMDkpXSl9LF9kb1Byb2Nlc3NCbG9jazpmdW5jdGlvbih0LHIpe2Zvcih2YXIgZT10aGlzLl9oYXNoLndvcmRzLGk9ZVswXSxuPWVbMV0sbz1lWzJdLHM9ZVszXSxhPWVbNF0sYz1lWzVdLGY9ZVs2XSx1PWVbN10sZD1pLmhpZ2gsdj1pLmxvdyxwPW4uaGlnaCxfPW4ubG93LHk9by5oaWdoLGc9by5sb3csQj1zLmhpZ2gsdz1zLmxvdyxrPWEuaGlnaCxTPWEubG93LG09Yy5oaWdoLHg9Yy5sb3csYj1mLmhpZ2gsSD1mLmxvdyx6PXUuaGlnaCxBPXUubG93LEM9ZCxEPXYsUj1wLEU9XyxNPXksRj1nLFA9QixXPXcsTz1rLFU9UyxJPW0sSz14LFg9YixMPUgsaj16LE49QSxUPTA7VDw4MDtUKyspe3ZhciBaPWxbVF07aWYoVDwxNil2YXIgcT1aLmhpZ2g9MHx0W3IrMipUXSxHPVoubG93PTB8dFtyKzIqVCsxXTtlbHNle3ZhciBKPWxbVC0xNV0sJD1KLmhpZ2gsUT1KLmxvdyxWPSgkPj4+MXxRPDwzMSleKCQ+Pj44fFE8PDI0KV4kPj4+NyxZPShRPj4+MXwkPDwzMSleKFE+Pj44fCQ8PDI0KV4oUT4+Pjd8JDw8MjUpLHR0PWxbVC0yXSxydD10dC5oaWdoLGV0PXR0LmxvdyxpdD0ocnQ+Pj4xOXxldDw8MTMpXihydDw8M3xldD4+PjI5KV5ydD4+PjYsbnQ9KGV0Pj4+MTl8cnQ8PDEzKV4oZXQ8PDN8cnQ+Pj4yOSleKGV0Pj4+NnxydDw8MjYpLG90PWxbVC03XSxzdD1vdC5oaWdoLGF0PW90LmxvdyxjdD1sW1QtMTZdLGh0PWN0LmhpZ2gsbHQ9Y3QubG93LEc9WSthdCxxPVYrc3QrKEc+Pj4wPFk+Pj4wPzE6MCksRz1HK250LHE9cStpdCsoRz4+PjA8bnQ+Pj4wPzE6MCksRz1HK2x0LHE9cStodCsoRz4+PjA8bHQ+Pj4wPzE6MCk7Wi5oaWdoPXEsWi5sb3c9R312YXIgZnQ9TyZJXn5PJlgsdXQ9VSZLXn5VJkwsZHQ9QyZSXkMmTV5SJk0sdnQ9RCZFXkQmRl5FJkYscHQ9KEM+Pj4yOHxEPDw0KV4oQzw8MzB8RD4+PjIpXihDPDwyNXxEPj4+NyksX3Q9KEQ+Pj4yOHxDPDw0KV4oRDw8MzB8Qz4+PjIpXihEPDwyNXxDPj4+NykseXQ9KE8+Pj4xNHxVPDwxOCleKE8+Pj4xOHxVPDwxNCleKE88PDIzfFU+Pj45KSxndD0oVT4+PjE0fE88PDE4KV4oVT4+PjE4fE88PDE0KV4oVTw8MjN8Tz4+PjkpLEJ0PWhbVF0sd3Q9QnQuaGlnaCxrdD1CdC5sb3csU3Q9TitndCxtdD1qK3l0KyhTdD4+PjA8Tj4+PjA/MTowKSxTdD1TdCt1dCxtdD1tdCtmdCsoU3Q+Pj4wPHV0Pj4+MD8xOjApLFN0PVN0K2t0LG10PW10K3d0KyhTdD4+PjA8a3Q+Pj4wPzE6MCksU3Q9U3QrRyxtdD1tdCtxKyhTdD4+PjA8Rz4+PjA/MTowKSx4dD1fdCt2dCxidD1wdCtkdCsoeHQ+Pj4wPF90Pj4+MD8xOjApO2o9WCxOPUwsWD1JLEw9SyxJPU8sSz1VLFU9VytTdHwwLE89UCttdCsoVT4+PjA8Vz4+PjA/MTowKXwwLFA9TSxXPUYsTT1SLEY9RSxSPUMsRT1ELEQ9U3QreHR8MCxDPW10K2J0KyhEPj4+MDxTdD4+PjA/MTowKXwwfXY9aS5sb3c9ditELGkuaGlnaD1kK0MrKHY+Pj4wPEQ+Pj4wPzE6MCksXz1uLmxvdz1fK0Usbi5oaWdoPXArUisoXz4+PjA8RT4+PjA/MTowKSxnPW8ubG93PWcrRixvLmhpZ2g9eStNKyhnPj4+MDxGPj4+MD8xOjApLHc9cy5sb3c9dytXLHMuaGlnaD1CK1ArKHc+Pj4wPFc+Pj4wPzE6MCksUz1hLmxvdz1TK1UsYS5oaWdoPWsrTysoUz4+PjA8VT4+PjA/MTowKSx4PWMubG93PXgrSyxjLmhpZ2g9bStJKyh4Pj4+MDxLPj4+MD8xOjApLEg9Zi5sb3c9SCtMLGYuaGlnaD1iK1grKEg+Pj4wPEw+Pj4wPzE6MCksQT11Lmxvdz1BK04sdS5oaWdoPXoraisoQT4+PjA8Tj4+PjA/MTowKX0sX2RvRmluYWxpemU6ZnVuY3Rpb24oKXt2YXIgdD10aGlzLl9kYXRhLHI9dC53b3JkcyxlPTgqdGhpcy5fbkRhdGFCeXRlcyxpPTgqdC5zaWdCeXRlcztyW2k+Pj41XXw9MTI4PDwyNC1pJTMyLHJbKGkrMTI4Pj4+MTA8PDUpKzMwXT1NYXRoLmZsb29yKGUvNDI5NDk2NzI5NiksclsoaSsxMjg+Pj4xMDw8NSkrMzFdPWUsdC5zaWdCeXRlcz00KnIubGVuZ3RoLHRoaXMuX3Byb2Nlc3MoKTt2YXIgbj10aGlzLl9oYXNoLnRvWDMyKCk7cmV0dXJuIG59LGNsb25lOmZ1bmN0aW9uKCl7dmFyIHQ9bi5jbG9uZS5jYWxsKHRoaXMpO3JldHVybiB0Ll9oYXNoPXRoaXMuX2hhc2guY2xvbmUoKSx0fSxibG9ja1NpemU6MzJ9KTtlLlNIQTUxMj1uLl9jcmVhdGVIZWxwZXIoZiksZS5IbWFjU0hBNTEyPW4uX2NyZWF0ZUhtYWNIZWxwZXIoZil9KCksZnVuY3Rpb24oKXt2YXIgcj10LGU9ci54NjQsaT1lLldvcmQsbj1lLldvcmRBcnJheSxvPXIuYWxnbyxzPW8uU0hBNTEyLGE9by5TSEEzODQ9cy5leHRlbmQoe19kb1Jlc2V0OmZ1bmN0aW9uKCl7dGhpcy5faGFzaD1uZXcgbi5pbml0KFtuZXcgaS5pbml0KDM0MTgwNzAzNjUsMzIzODM3MTAzMiksbmV3IGkuaW5pdCgxNjU0MjcwMjUwLDkxNDE1MDY2MyksbmV3IGkuaW5pdCgyNDM4NTI5MzcwLDgxMjcwMjk5OSksbmV3IGkuaW5pdCgzNTU0NjIzNjAsNDE0NDkxMjY5NyksbmV3IGkuaW5pdCgxNzMxNDA1NDE1LDQyOTA3NzU4NTcpLG5ldyBpLmluaXQoMjM5NDE4MDIzMSwxNzUwNjAzMDI1KSxuZXcgaS5pbml0KDM2NzUwMDg1MjUsMTY5NDA3NjgzOSksbmV3IGkuaW5pdCgxMjAzMDYyODEzLDMyMDQwNzU0MjgpXSl9LF9kb0ZpbmFsaXplOmZ1bmN0aW9uKCl7dmFyIHQ9cy5fZG9GaW5hbGl6ZS5jYWxsKHRoaXMpO3JldHVybiB0LnNpZ0J5dGVzLT0xNix0fX0pO3IuU0hBMzg0PXMuX2NyZWF0ZUhlbHBlcihhKSxyLkhtYWNTSEEzODQ9cy5fY3JlYXRlSG1hY0hlbHBlcihhKX0oKSx0LmxpYi5DaXBoZXJ8fGZ1bmN0aW9uKHIpe3ZhciBlPXQsaT1lLmxpYixuPWkuQmFzZSxvPWkuV29yZEFycmF5LHM9aS5CdWZmZXJlZEJsb2NrQWxnb3JpdGhtLGE9ZS5lbmMsYz0oYS5VdGY4LGEuQmFzZTY0KSxoPWUuYWxnbyxsPWguRXZwS0RGLGY9aS5DaXBoZXI9cy5leHRlbmQoe2NmZzpuLmV4dGVuZCgpLGNyZWF0ZUVuY3J5cHRvcjpmdW5jdGlvbih0LHIpe3JldHVybiB0aGlzLmNyZWF0ZSh0aGlzLl9FTkNfWEZPUk1fTU9ERSx0LHIpfSxjcmVhdGVEZWNyeXB0b3I6ZnVuY3Rpb24odCxyKXtyZXR1cm4gdGhpcy5jcmVhdGUodGhpcy5fREVDX1hGT1JNX01PREUsdCxyKX0saW5pdDpmdW5jdGlvbih0LHIsZSl7dGhpcy5jZmc9dGhpcy5jZmcuZXh0ZW5kKGUpLHRoaXMuX3hmb3JtTW9kZT10LHRoaXMuX2tleT1yLHRoaXMucmVzZXQoKX0scmVzZXQ6ZnVuY3Rpb24oKXtzLnJlc2V0LmNhbGwodGhpcyksdGhpcy5fZG9SZXNldCgpfSxwcm9jZXNzOmZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLl9hcHBlbmQodCksdGhpcy5fcHJvY2VzcygpfSxmaW5hbGl6ZTpmdW5jdGlvbih0KXt0JiZ0aGlzLl9hcHBlbmQodCk7dmFyIHI9dGhpcy5fZG9GaW5hbGl6ZSgpO3JldHVybiByfSxrZXlTaXplOjQsaXZTaXplOjQsX0VOQ19YRk9STV9NT0RFOjEsX0RFQ19YRk9STV9NT0RFOjIsX2NyZWF0ZUhlbHBlcjpmdW5jdGlvbigpe2Z1bmN0aW9uIHQodCl7cmV0dXJuXCJzdHJpbmdcIj09dHlwZW9mIHQ/bTp3fXJldHVybiBmdW5jdGlvbihyKXtyZXR1cm57ZW5jcnlwdDpmdW5jdGlvbihlLGksbil7cmV0dXJuIHQoaSkuZW5jcnlwdChyLGUsaSxuKX0sZGVjcnlwdDpmdW5jdGlvbihlLGksbil7cmV0dXJuIHQoaSkuZGVjcnlwdChyLGUsaSxuKX19fX0oKX0pLHU9KGkuU3RyZWFtQ2lwaGVyPWYuZXh0ZW5kKHtfZG9GaW5hbGl6ZTpmdW5jdGlvbigpe3ZhciB0PXRoaXMuX3Byb2Nlc3MoITApO3JldHVybiB0fSxibG9ja1NpemU6MX0pLGUubW9kZT17fSksZD1pLkJsb2NrQ2lwaGVyTW9kZT1uLmV4dGVuZCh7Y3JlYXRlRW5jcnlwdG9yOmZ1bmN0aW9uKHQscil7cmV0dXJuIHRoaXMuRW5jcnlwdG9yLmNyZWF0ZSh0LHIpfSxjcmVhdGVEZWNyeXB0b3I6ZnVuY3Rpb24odCxyKXtyZXR1cm4gdGhpcy5EZWNyeXB0b3IuY3JlYXRlKHQscil9LGluaXQ6ZnVuY3Rpb24odCxyKXt0aGlzLl9jaXBoZXI9dCx0aGlzLl9pdj1yfX0pLHY9dS5DQkM9ZnVuY3Rpb24oKXtmdW5jdGlvbiB0KHQsZSxpKXt2YXIgbj10aGlzLl9pdjtpZihuKXt2YXIgbz1uO3RoaXMuX2l2PXJ9ZWxzZSB2YXIgbz10aGlzLl9wcmV2QmxvY2s7Zm9yKHZhciBzPTA7czxpO3MrKyl0W2Urc11ePW9bc119dmFyIGU9ZC5leHRlbmQoKTtyZXR1cm4gZS5FbmNyeXB0b3I9ZS5leHRlbmQoe3Byb2Nlc3NCbG9jazpmdW5jdGlvbihyLGUpe3ZhciBpPXRoaXMuX2NpcGhlcixuPWkuYmxvY2tTaXplO3QuY2FsbCh0aGlzLHIsZSxuKSxpLmVuY3J5cHRCbG9jayhyLGUpLHRoaXMuX3ByZXZCbG9jaz1yLnNsaWNlKGUsZStuKX19KSxlLkRlY3J5cHRvcj1lLmV4dGVuZCh7cHJvY2Vzc0Jsb2NrOmZ1bmN0aW9uKHIsZSl7dmFyIGk9dGhpcy5fY2lwaGVyLG49aS5ibG9ja1NpemUsbz1yLnNsaWNlKGUsZStuKTtpLmRlY3J5cHRCbG9jayhyLGUpLHQuY2FsbCh0aGlzLHIsZSxuKSx0aGlzLl9wcmV2QmxvY2s9b319KSxlfSgpLHA9ZS5wYWQ9e30sXz1wLlBrY3M3PXtwYWQ6ZnVuY3Rpb24odCxyKXtmb3IodmFyIGU9NCpyLGk9ZS10LnNpZ0J5dGVzJWUsbj1pPDwyNHxpPDwxNnxpPDw4fGkscz1bXSxhPTA7YTxpO2ErPTQpcy5wdXNoKG4pO3ZhciBjPW8uY3JlYXRlKHMsaSk7dC5jb25jYXQoYyl9LHVucGFkOmZ1bmN0aW9uKHQpe3ZhciByPTI1NSZ0LndvcmRzW3Quc2lnQnl0ZXMtMT4+PjJdO3Quc2lnQnl0ZXMtPXJ9fSx5PShpLkJsb2NrQ2lwaGVyPWYuZXh0ZW5kKHtjZmc6Zi5jZmcuZXh0ZW5kKHttb2RlOnYscGFkZGluZzpffSkscmVzZXQ6ZnVuY3Rpb24oKXtmLnJlc2V0LmNhbGwodGhpcyk7dmFyIHQ9dGhpcy5jZmcscj10Lml2LGU9dC5tb2RlO2lmKHRoaXMuX3hmb3JtTW9kZT09dGhpcy5fRU5DX1hGT1JNX01PREUpdmFyIGk9ZS5jcmVhdGVFbmNyeXB0b3I7ZWxzZXt2YXIgaT1lLmNyZWF0ZURlY3J5cHRvcjt0aGlzLl9taW5CdWZmZXJTaXplPTF9dGhpcy5fbW9kZSYmdGhpcy5fbW9kZS5fX2NyZWF0b3I9PWk/dGhpcy5fbW9kZS5pbml0KHRoaXMsciYmci53b3Jkcyk6KHRoaXMuX21vZGU9aS5jYWxsKGUsdGhpcyxyJiZyLndvcmRzKSx0aGlzLl9tb2RlLl9fY3JlYXRvcj1pKX0sX2RvUHJvY2Vzc0Jsb2NrOmZ1bmN0aW9uKHQscil7dGhpcy5fbW9kZS5wcm9jZXNzQmxvY2sodCxyKX0sX2RvRmluYWxpemU6ZnVuY3Rpb24oKXt2YXIgdD10aGlzLmNmZy5wYWRkaW5nO2lmKHRoaXMuX3hmb3JtTW9kZT09dGhpcy5fRU5DX1hGT1JNX01PREUpe3QucGFkKHRoaXMuX2RhdGEsdGhpcy5ibG9ja1NpemUpO3ZhciByPXRoaXMuX3Byb2Nlc3MoITApfWVsc2V7dmFyIHI9dGhpcy5fcHJvY2VzcyghMCk7dC51bnBhZChyKX1yZXR1cm4gcn0sYmxvY2tTaXplOjR9KSxpLkNpcGhlclBhcmFtcz1uLmV4dGVuZCh7aW5pdDpmdW5jdGlvbih0KXt0aGlzLm1peEluKHQpfSx0b1N0cmluZzpmdW5jdGlvbih0KXtyZXR1cm4odHx8dGhpcy5mb3JtYXR0ZXIpLnN0cmluZ2lmeSh0aGlzKX19KSksZz1lLmZvcm1hdD17fSxCPWcuT3BlblNTTD17c3RyaW5naWZ5OmZ1bmN0aW9uKHQpe3ZhciByPXQuY2lwaGVydGV4dCxlPXQuc2FsdDtpZihlKXZhciBpPW8uY3JlYXRlKFsxMzk4ODkzNjg0LDE3MDEwNzY4MzFdKS5jb25jYXQoZSkuY29uY2F0KHIpO2Vsc2UgdmFyIGk9cjtyZXR1cm4gaS50b1N0cmluZyhjKX0scGFyc2U6ZnVuY3Rpb24odCl7dmFyIHI9Yy5wYXJzZSh0KSxlPXIud29yZHM7aWYoMTM5ODg5MzY4ND09ZVswXSYmMTcwMTA3NjgzMT09ZVsxXSl7dmFyIGk9by5jcmVhdGUoZS5zbGljZSgyLDQpKTtlLnNwbGljZSgwLDQpLHIuc2lnQnl0ZXMtPTE2fXJldHVybiB5LmNyZWF0ZSh7Y2lwaGVydGV4dDpyLHNhbHQ6aX0pfX0sdz1pLlNlcmlhbGl6YWJsZUNpcGhlcj1uLmV4dGVuZCh7Y2ZnOm4uZXh0ZW5kKHtmb3JtYXQ6Qn0pLGVuY3J5cHQ6ZnVuY3Rpb24odCxyLGUsaSl7aT10aGlzLmNmZy5leHRlbmQoaSk7dmFyIG49dC5jcmVhdGVFbmNyeXB0b3IoZSxpKSxvPW4uZmluYWxpemUocikscz1uLmNmZztyZXR1cm4geS5jcmVhdGUoe2NpcGhlcnRleHQ6byxrZXk6ZSxpdjpzLml2LGFsZ29yaXRobTp0LG1vZGU6cy5tb2RlLHBhZGRpbmc6cy5wYWRkaW5nLGJsb2NrU2l6ZTp0LmJsb2NrU2l6ZSxmb3JtYXR0ZXI6aS5mb3JtYXR9KX0sZGVjcnlwdDpmdW5jdGlvbih0LHIsZSxpKXtpPXRoaXMuY2ZnLmV4dGVuZChpKSxyPXRoaXMuX3BhcnNlKHIsaS5mb3JtYXQpO3ZhciBuPXQuY3JlYXRlRGVjcnlwdG9yKGUsaSkuZmluYWxpemUoci5jaXBoZXJ0ZXh0KTtyZXR1cm4gbn0sX3BhcnNlOmZ1bmN0aW9uKHQscil7cmV0dXJuXCJzdHJpbmdcIj09dHlwZW9mIHQ/ci5wYXJzZSh0LHRoaXMpOnR9fSksaz1lLmtkZj17fSxTPWsuT3BlblNTTD17ZXhlY3V0ZTpmdW5jdGlvbih0LHIsZSxpKXtpfHwoaT1vLnJhbmRvbSg4KSk7dmFyIG49bC5jcmVhdGUoe2tleVNpemU6citlfSkuY29tcHV0ZSh0LGkpLHM9by5jcmVhdGUobi53b3Jkcy5zbGljZShyKSw0KmUpO3JldHVybiBuLnNpZ0J5dGVzPTQqcix5LmNyZWF0ZSh7a2V5Om4saXY6cyxzYWx0Oml9KX19LG09aS5QYXNzd29yZEJhc2VkQ2lwaGVyPXcuZXh0ZW5kKHtjZmc6dy5jZmcuZXh0ZW5kKHtrZGY6U30pLGVuY3J5cHQ6ZnVuY3Rpb24odCxyLGUsaSl7aT10aGlzLmNmZy5leHRlbmQoaSk7dmFyIG49aS5rZGYuZXhlY3V0ZShlLHQua2V5U2l6ZSx0Lml2U2l6ZSk7aS5pdj1uLml2O3ZhciBvPXcuZW5jcnlwdC5jYWxsKHRoaXMsdCxyLG4ua2V5LGkpO3JldHVybiBvLm1peEluKG4pLG99LGRlY3J5cHQ6ZnVuY3Rpb24odCxyLGUsaSl7aT10aGlzLmNmZy5leHRlbmQoaSkscj10aGlzLl9wYXJzZShyLGkuZm9ybWF0KTt2YXIgbj1pLmtkZi5leGVjdXRlKGUsdC5rZXlTaXplLHQuaXZTaXplLHIuc2FsdCk7aS5pdj1uLml2O3ZhciBvPXcuZGVjcnlwdC5jYWxsKHRoaXMsdCxyLG4ua2V5LGkpO3JldHVybiBvfX0pfSgpLHQubW9kZS5DRkI9ZnVuY3Rpb24oKXtmdW5jdGlvbiByKHQscixlLGkpe3ZhciBuPXRoaXMuX2l2O2lmKG4pe3ZhciBvPW4uc2xpY2UoMCk7dGhpcy5faXY9dm9pZCAwfWVsc2UgdmFyIG89dGhpcy5fcHJldkJsb2NrO2kuZW5jcnlwdEJsb2NrKG8sMCk7Zm9yKHZhciBzPTA7czxlO3MrKyl0W3Irc11ePW9bc119dmFyIGU9dC5saWIuQmxvY2tDaXBoZXJNb2RlLmV4dGVuZCgpO3JldHVybiBlLkVuY3J5cHRvcj1lLmV4dGVuZCh7cHJvY2Vzc0Jsb2NrOmZ1bmN0aW9uKHQsZSl7dmFyIGk9dGhpcy5fY2lwaGVyLG49aS5ibG9ja1NpemU7ci5jYWxsKHRoaXMsdCxlLG4saSksdGhpcy5fcHJldkJsb2NrPXQuc2xpY2UoZSxlK24pfX0pLGUuRGVjcnlwdG9yPWUuZXh0ZW5kKHtwcm9jZXNzQmxvY2s6ZnVuY3Rpb24odCxlKXt2YXIgaT10aGlzLl9jaXBoZXIsbj1pLmJsb2NrU2l6ZSxvPXQuc2xpY2UoZSxlK24pO3IuY2FsbCh0aGlzLHQsZSxuLGkpLHRoaXMuX3ByZXZCbG9jaz1vfX0pLGV9KCksdC5tb2RlLkVDQj1mdW5jdGlvbigpe3ZhciByPXQubGliLkJsb2NrQ2lwaGVyTW9kZS5leHRlbmQoKTtyZXR1cm4gci5FbmNyeXB0b3I9ci5leHRlbmQoe3Byb2Nlc3NCbG9jazpmdW5jdGlvbih0LHIpe3RoaXMuX2NpcGhlci5lbmNyeXB0QmxvY2sodCxyKX19KSxyLkRlY3J5cHRvcj1yLmV4dGVuZCh7cHJvY2Vzc0Jsb2NrOmZ1bmN0aW9uKHQscil7dGhpcy5fY2lwaGVyLmRlY3J5cHRCbG9jayh0LHIpfX0pLHJ9KCksdC5wYWQuQW5zaVg5MjM9e3BhZDpmdW5jdGlvbih0LHIpe3ZhciBlPXQuc2lnQnl0ZXMsaT00KnIsbj1pLWUlaSxvPWUrbi0xO3QuY2xhbXAoKSx0LndvcmRzW28+Pj4yXXw9bjw8MjQtbyU0KjgsdC5zaWdCeXRlcys9bn0sdW5wYWQ6ZnVuY3Rpb24odCl7dmFyIHI9MjU1JnQud29yZHNbdC5zaWdCeXRlcy0xPj4+Ml07dC5zaWdCeXRlcy09cn19LHQucGFkLklzbzEwMTI2PXtwYWQ6ZnVuY3Rpb24ocixlKXt2YXIgaT00KmUsbj1pLXIuc2lnQnl0ZXMlaTtyLmNvbmNhdCh0LmxpYi5Xb3JkQXJyYXkucmFuZG9tKG4tMSkpLmNvbmNhdCh0LmxpYi5Xb3JkQXJyYXkuY3JlYXRlKFtuPDwyNF0sMSkpfSx1bnBhZDpmdW5jdGlvbih0KXt2YXIgcj0yNTUmdC53b3Jkc1t0LnNpZ0J5dGVzLTE+Pj4yXTt0LnNpZ0J5dGVzLT1yfX0sdC5wYWQuSXNvOTc5NzE9e3BhZDpmdW5jdGlvbihyLGUpe3IuY29uY2F0KHQubGliLldvcmRBcnJheS5jcmVhdGUoWzIxNDc0ODM2NDhdLDEpKSx0LnBhZC5aZXJvUGFkZGluZy5wYWQocixlKX0sdW5wYWQ6ZnVuY3Rpb24ocil7dC5wYWQuWmVyb1BhZGRpbmcudW5wYWQociksci5zaWdCeXRlcy0tfX0sdC5tb2RlLk9GQj1mdW5jdGlvbigpe3ZhciByPXQubGliLkJsb2NrQ2lwaGVyTW9kZS5leHRlbmQoKSxlPXIuRW5jcnlwdG9yPXIuZXh0ZW5kKHtwcm9jZXNzQmxvY2s6ZnVuY3Rpb24odCxyKXt2YXIgZT10aGlzLl9jaXBoZXIsaT1lLmJsb2NrU2l6ZSxuPXRoaXMuX2l2LG89dGhpcy5fa2V5c3RyZWFtO24mJihvPXRoaXMuX2tleXN0cmVhbT1uLnNsaWNlKDApLHRoaXMuX2l2PXZvaWQgMCksZS5lbmNyeXB0QmxvY2sobywwKTtmb3IodmFyIHM9MDtzPGk7cysrKXRbcitzXV49b1tzXX19KTtyZXR1cm4gci5EZWNyeXB0b3I9ZSxyfSgpLHQucGFkLk5vUGFkZGluZz17cGFkOmZ1bmN0aW9uKCl7fSx1bnBhZDpmdW5jdGlvbigpe319LGZ1bmN0aW9uKHIpe3ZhciBlPXQsaT1lLmxpYixuPWkuQ2lwaGVyUGFyYW1zLG89ZS5lbmMscz1vLkhleCxhPWUuZm9ybWF0O2EuSGV4PXtzdHJpbmdpZnk6ZnVuY3Rpb24odCl7cmV0dXJuIHQuY2lwaGVydGV4dC50b1N0cmluZyhzKX0scGFyc2U6ZnVuY3Rpb24odCl7dmFyIHI9cy5wYXJzZSh0KTtyZXR1cm4gbi5jcmVhdGUoe2NpcGhlcnRleHQ6cn0pfX19KCksZnVuY3Rpb24oKXt2YXIgcj10LGU9ci5saWIsaT1lLkJsb2NrQ2lwaGVyLG49ci5hbGdvLG89W10scz1bXSxhPVtdLGM9W10saD1bXSxsPVtdLGY9W10sdT1bXSxkPVtdLHY9W107IWZ1bmN0aW9uKCl7Zm9yKHZhciB0PVtdLHI9MDtyPDI1NjtyKyspcjwxMjg/dFtyXT1yPDwxOnRbcl09cjw8MV4yODM7Zm9yKHZhciBlPTAsaT0wLHI9MDtyPDI1NjtyKyspe3ZhciBuPWleaTw8MV5pPDwyXmk8PDNeaTw8NDtuPW4+Pj44XjI1NSZuXjk5LG9bZV09bixzW25dPWU7dmFyIHA9dFtlXSxfPXRbcF0seT10W19dLGc9MjU3KnRbbl1eMTY4NDMwMDgqbjthW2VdPWc8PDI0fGc+Pj44LGNbZV09Zzw8MTZ8Zz4+PjE2LGhbZV09Zzw8OHxnPj4+MjQsbFtlXT1nO3ZhciBnPTE2ODQzMDA5KnleNjU1MzcqX14yNTcqcF4xNjg0MzAwOCplO2Zbbl09Zzw8MjR8Zz4+PjgsdVtuXT1nPDwxNnxnPj4+MTYsZFtuXT1nPDw4fGc+Pj4yNCx2W25dPWcsZT8oZT1wXnRbdFt0W3lecF1dXSxpXj10W3RbaV1dKTplPWk9MX19KCk7dmFyIHA9WzAsMSwyLDQsOCwxNiwzMiw2NCwxMjgsMjcsNTRdLF89bi5BRVM9aS5leHRlbmQoe19kb1Jlc2V0OmZ1bmN0aW9uKCl7aWYoIXRoaXMuX25Sb3VuZHN8fHRoaXMuX2tleVByaW9yUmVzZXQhPT10aGlzLl9rZXkpe2Zvcih2YXIgdD10aGlzLl9rZXlQcmlvclJlc2V0PXRoaXMuX2tleSxyPXQud29yZHMsZT10LnNpZ0J5dGVzLzQsaT10aGlzLl9uUm91bmRzPWUrNixuPTQqKGkrMSkscz10aGlzLl9rZXlTY2hlZHVsZT1bXSxhPTA7YTxuO2ErKylpZihhPGUpc1thXT1yW2FdO2Vsc2V7dmFyIGM9c1thLTFdO2ElZT9lPjYmJmElZT09NCYmKGM9b1tjPj4+MjRdPDwyNHxvW2M+Pj4xNiYyNTVdPDwxNnxvW2M+Pj44JjI1NV08PDh8b1syNTUmY10pOihjPWM8PDh8Yz4+PjI0LGM9b1tjPj4+MjRdPDwyNHxvW2M+Pj4xNiYyNTVdPDwxNnxvW2M+Pj44JjI1NV08PDh8b1syNTUmY10sY149cFthL2V8MF08PDI0KSxzW2FdPXNbYS1lXV5jfWZvcih2YXIgaD10aGlzLl9pbnZLZXlTY2hlZHVsZT1bXSxsPTA7bDxuO2wrKyl7dmFyIGE9bi1sO2lmKGwlNCl2YXIgYz1zW2FdO2Vsc2UgdmFyIGM9c1thLTRdO2w8NHx8YTw9ND9oW2xdPWM6aFtsXT1mW29bYz4+PjI0XV1edVtvW2M+Pj4xNiYyNTVdXV5kW29bYz4+PjgmMjU1XV1edltvWzI1NSZjXV19fX0sZW5jcnlwdEJsb2NrOmZ1bmN0aW9uKHQscil7dGhpcy5fZG9DcnlwdEJsb2NrKHQscix0aGlzLl9rZXlTY2hlZHVsZSxhLGMsaCxsLG8pfSxkZWNyeXB0QmxvY2s6ZnVuY3Rpb24odCxyKXt2YXIgZT10W3IrMV07dFtyKzFdPXRbciszXSx0W3IrM109ZSx0aGlzLl9kb0NyeXB0QmxvY2sodCxyLHRoaXMuX2ludktleVNjaGVkdWxlLGYsdSxkLHYscyk7dmFyIGU9dFtyKzFdO3RbcisxXT10W3IrM10sdFtyKzNdPWV9LF9kb0NyeXB0QmxvY2s6ZnVuY3Rpb24odCxyLGUsaSxuLG8scyxhKXtmb3IodmFyIGM9dGhpcy5fblJvdW5kcyxoPXRbcl1eZVswXSxsPXRbcisxXV5lWzFdLGY9dFtyKzJdXmVbMl0sdT10W3IrM11eZVszXSxkPTQsdj0xO3Y8Yzt2Kyspe3ZhciBwPWlbaD4+PjI0XV5uW2w+Pj4xNiYyNTVdXm9bZj4+PjgmMjU1XV5zWzI1NSZ1XV5lW2QrK10sXz1pW2w+Pj4yNF1ebltmPj4+MTYmMjU1XV5vW3U+Pj44JjI1NV1ec1syNTUmaF1eZVtkKytdLHk9aVtmPj4+MjRdXm5bdT4+PjE2JjI1NV1eb1toPj4+OCYyNTVdXnNbMjU1JmxdXmVbZCsrXSxnPWlbdT4+PjI0XV5uW2g+Pj4xNiYyNTVdXm9bbD4+PjgmMjU1XV5zWzI1NSZmXV5lW2QrK107aD1wLGw9XyxmPXksdT1nfXZhciBwPShhW2g+Pj4yNF08PDI0fGFbbD4+PjE2JjI1NV08PDE2fGFbZj4+PjgmMjU1XTw8OHxhWzI1NSZ1XSleZVtkKytdLF89KGFbbD4+PjI0XTw8MjR8YVtmPj4+MTYmMjU1XTw8MTZ8YVt1Pj4+OCYyNTVdPDw4fGFbMjU1JmhdKV5lW2QrK10seT0oYVtmPj4+MjRdPDwyNHxhW3U+Pj4xNiYyNTVdPDwxNnxhW2g+Pj44JjI1NV08PDh8YVsyNTUmbF0pXmVbZCsrXSxnPShhW3U+Pj4yNF08PDI0fGFbaD4+PjE2JjI1NV08PDE2fGFbbD4+PjgmMjU1XTw8OHxhWzI1NSZmXSleZVtkKytdO3Rbcl09cCx0W3IrMV09Xyx0W3IrMl09eSx0W3IrM109Z30sa2V5U2l6ZTo4fSk7ci5BRVM9aS5fY3JlYXRlSGVscGVyKF8pfSgpLGZ1bmN0aW9uKCl7ZnVuY3Rpb24gcih0LHIpe3ZhciBlPSh0aGlzLl9sQmxvY2s+Pj50XnRoaXMuX3JCbG9jaykmcjt0aGlzLl9yQmxvY2tePWUsdGhpcy5fbEJsb2NrXj1lPDx0fWZ1bmN0aW9uIGUodCxyKXt2YXIgZT0odGhpcy5fckJsb2NrPj4+dF50aGlzLl9sQmxvY2spJnI7dGhpcy5fbEJsb2NrXj1lLHRoaXMuX3JCbG9ja149ZTw8dDtcclxufXZhciBpPXQsbj1pLmxpYixvPW4uV29yZEFycmF5LHM9bi5CbG9ja0NpcGhlcixhPWkuYWxnbyxjPVs1Nyw0OSw0MSwzMywyNSwxNyw5LDEsNTgsNTAsNDIsMzQsMjYsMTgsMTAsMiw1OSw1MSw0MywzNSwyNywxOSwxMSwzLDYwLDUyLDQ0LDM2LDYzLDU1LDQ3LDM5LDMxLDIzLDE1LDcsNjIsNTQsNDYsMzgsMzAsMjIsMTQsNiw2MSw1Myw0NSwzNywyOSwyMSwxMyw1LDI4LDIwLDEyLDRdLGg9WzE0LDE3LDExLDI0LDEsNSwzLDI4LDE1LDYsMjEsMTAsMjMsMTksMTIsNCwyNiw4LDE2LDcsMjcsMjAsMTMsMiw0MSw1MiwzMSwzNyw0Nyw1NSwzMCw0MCw1MSw0NSwzMyw0OCw0NCw0OSwzOSw1NiwzNCw1Myw0Niw0Miw1MCwzNiwyOSwzMl0sbD1bMSwyLDQsNiw4LDEwLDEyLDE0LDE1LDE3LDE5LDIxLDIzLDI1LDI3LDI4XSxmPVt7MDo4NDIxODg4LDI2ODQzNTQ1NjozMjc2OCw1MzY4NzA5MTI6ODQyMTM3OCw4MDUzMDYzNjg6MiwxMDczNzQxODI0OjUxMiwxMzQyMTc3MjgwOjg0MjE4OTAsMTYxMDYxMjczNjo4Mzg5MTIyLDE4NzkwNDgxOTI6ODM4ODYwOCwyMTQ3NDgzNjQ4OjUxNCwyNDE1OTE5MTA0OjgzODkxMjAsMjY4NDM1NDU2MDozMzI4MCwyOTUyNzkwMDE2Ojg0MjEzNzYsMzIyMTIyNTQ3MjozMjc3MCwzNDg5NjYwOTI4OjgzODg2MTAsMzc1ODA5NjM4NDowLDQwMjY1MzE4NDA6MzMyODIsMTM0MjE3NzI4OjAsNDAyNjUzMTg0Ojg0MjE4OTAsNjcxMDg4NjQwOjMzMjgyLDkzOTUyNDA5NjozMjc2OCwxMjA3OTU5NTUyOjg0MjE4ODgsMTQ3NjM5NTAwODo1MTIsMTc0NDgzMDQ2NDo4NDIxMzc4LDIwMTMyNjU5MjA6MiwyMjgxNzAxMzc2OjgzODkxMjAsMjU1MDEzNjgzMjozMzI4MCwyODE4NTcyMjg4Ojg0MjEzNzYsMzA4NzAwNzc0NDo4Mzg5MTIyLDMzNTU0NDMyMDA6ODM4ODYxMCwzNjIzODc4NjU2OjMyNzcwLDM4OTIzMTQxMTI6NTE0LDQxNjA3NDk1Njg6ODM4ODYwOCwxOjMyNzY4LDI2ODQzNTQ1NzoyLDUzNjg3MDkxMzo4NDIxODg4LDgwNTMwNjM2OTo4Mzg4NjA4LDEwNzM3NDE4MjU6ODQyMTM3OCwxMzQyMTc3MjgxOjMzMjgwLDE2MTA2MTI3Mzc6NTEyLDE4NzkwNDgxOTM6ODM4OTEyMiwyMTQ3NDgzNjQ5Ojg0MjE4OTAsMjQxNTkxOTEwNTo4NDIxMzc2LDI2ODQzNTQ1NjE6ODM4ODYxMCwyOTUyNzkwMDE3OjMzMjgyLDMyMjEyMjU0NzM6NTE0LDM0ODk2NjA5Mjk6ODM4OTEyMCwzNzU4MDk2Mzg1OjMyNzcwLDQwMjY1MzE4NDE6MCwxMzQyMTc3Mjk6ODQyMTg5MCw0MDI2NTMxODU6ODQyMTM3Niw2NzEwODg2NDE6ODM4ODYwOCw5Mzk1MjQwOTc6NTEyLDEyMDc5NTk1NTM6MzI3NjgsMTQ3NjM5NTAwOTo4Mzg4NjEwLDE3NDQ4MzA0NjU6MiwyMDEzMjY1OTIxOjMzMjgyLDIyODE3MDEzNzc6MzI3NzAsMjU1MDEzNjgzMzo4Mzg5MTIyLDI4MTg1NzIyODk6NTE0LDMwODcwMDc3NDU6ODQyMTg4OCwzMzU1NDQzMjAxOjgzODkxMjAsMzYyMzg3ODY1NzowLDM4OTIzMTQxMTM6MzMyODAsNDE2MDc0OTU2OTo4NDIxMzc4fSx7MDoxMDc0MjgyNTEyLDE2Nzc3MjE2OjE2Mzg0LDMzNTU0NDMyOjUyNDI4OCw1MDMzMTY0ODoxMDc0MjY2MTI4LDY3MTA4ODY0OjEwNzM3NDE4NDAsODM4ODYwODA6MTA3NDI4MjQ5NiwxMDA2NjMyOTY6MTA3Mzc1ODIwOCwxMTc0NDA1MTI6MTYsMTM0MjE3NzI4OjU0MDY3MiwxNTA5OTQ5NDQ6MTA3Mzc1ODIyNCwxNjc3NzIxNjA6MTA3Mzc0MTgyNCwxODQ1NDkzNzY6NTQwNjg4LDIwMTMyNjU5Mjo1MjQzMDQsMjE4MTAzODA4OjAsMjM0ODgxMDI0OjE2NDAwLDI1MTY1ODI0MDoxMDc0MjY2MTEyLDgzODg2MDg6MTA3Mzc1ODIwOCwyNTE2NTgyNDo1NDA2ODgsNDE5NDMwNDA6MTYsNTg3MjAyNTY6MTA3Mzc1ODIyNCw3NTQ5NzQ3MjoxMDc0MjgyNTEyLDkyMjc0Njg4OjEwNzM3NDE4MjQsMTA5MDUxOTA0OjUyNDI4OCwxMjU4MjkxMjA6MTA3NDI2NjEyOCwxNDI2MDYzMzY6NTI0MzA0LDE1OTM4MzU1MjowLDE3NjE2MDc2ODoxNjM4NCwxOTI5Mzc5ODQ6MTA3NDI2NjExMiwyMDk3MTUyMDA6MTA3Mzc0MTg0MCwyMjY0OTI0MTY6NTQwNjcyLDI0MzI2OTYzMjoxMDc0MjgyNDk2LDI2MDA0Njg0ODoxNjQwMCwyNjg0MzU0NTY6MCwyODUyMTI2NzI6MTA3NDI2NjEyOCwzMDE5ODk4ODg6MTA3Mzc1ODIyNCwzMTg3NjcxMDQ6MTA3NDI4MjQ5NiwzMzU1NDQzMjA6MTA3NDI2NjExMiwzNTIzMjE1MzY6MTYsMzY5MDk4NzUyOjU0MDY4OCwzODU4NzU5Njg6MTYzODQsNDAyNjUzMTg0OjE2NDAwLDQxOTQzMDQwMDo1MjQyODgsNDM2MjA3NjE2OjUyNDMwNCw0NTI5ODQ4MzI6MTA3Mzc0MTg0MCw0Njk3NjIwNDg6NTQwNjcyLDQ4NjUzOTI2NDoxMDczNzU4MjA4LDUwMzMxNjQ4MDoxMDczNzQxODI0LDUyMDA5MzY5NjoxMDc0MjgyNTEyLDI3NjgyNDA2NDo1NDA2ODgsMjkzNjAxMjgwOjUyNDI4OCwzMTAzNzg0OTY6MTA3NDI2NjExMiwzMjcxNTU3MTI6MTYzODQsMzQzOTMyOTI4OjEwNzM3NTgyMDgsMzYwNzEwMTQ0OjEwNzQyODI1MTIsMzc3NDg3MzYwOjE2LDM5NDI2NDU3NjoxMDczNzQxODI0LDQxMTA0MTc5MjoxMDc0MjgyNDk2LDQyNzgxOTAwODoxMDczNzQxODQwLDQ0NDU5NjIyNDoxMDczNzU4MjI0LDQ2MTM3MzQ0MDo1MjQzMDQsNDc4MTUwNjU2OjAsNDk0OTI3ODcyOjE2NDAwLDUxMTcwNTA4ODoxMDc0MjY2MTI4LDUyODQ4MjMwNDo1NDA2NzJ9LHswOjI2MCwxMDQ4NTc2OjAsMjA5NzE1Mjo2NzEwOTEyMCwzMTQ1NzI4OjY1Nzk2LDQxOTQzMDQ6NjU1NDAsNTI0Mjg4MDo2NzEwODg2OCw2MjkxNDU2OjY3MTc0NjYwLDczNDAwMzI6NjcxNzQ0MDAsODM4ODYwODo2NzEwODg2NCw5NDM3MTg0OjY3MTc0NjU2LDEwNDg1NzYwOjY1NzkyLDExNTM0MzM2OjY3MTc0NDA0LDEyNTgyOTEyOjY3MTA5MTI0LDEzNjMxNDg4OjY1NTM2LDE0NjgwMDY0OjQsMTU3Mjg2NDA6MjU2LDUyNDI4ODo2NzE3NDY1NiwxNTcyODY0OjY3MTc0NDA0LDI2MjE0NDA6MCwzNjcwMDE2OjY3MTA5MTIwLDQ3MTg1OTI6NjcxMDg4NjgsNTc2NzE2ODo2NTUzNiw2ODE1NzQ0OjY1NTQwLDc4NjQzMjA6MjYwLDg5MTI4OTY6NCw5OTYxNDcyOjI1NiwxMTAxMDA0ODo2NzE3NDQwMCwxMjA1ODYyNDo2NTc5NiwxMzEwNzIwMDo2NTc5MiwxNDE1NTc3Njo2NzEwOTEyNCwxNTIwNDM1Mjo2NzE3NDY2MCwxNjI1MjkyODo2NzEwODg2NCwxNjc3NzIxNjo2NzE3NDY1NiwxNzgyNTc5Mjo2NTU0MCwxODg3NDM2ODo2NTUzNiwxOTkyMjk0NDo2NzEwOTEyMCwyMDk3MTUyMDoyNTYsMjIwMjAwOTY6NjcxNzQ2NjAsMjMwNjg2NzI6NjcxMDg4NjgsMjQxMTcyNDg6MCwyNTE2NTgyNDo2NzEwOTEyNCwyNjIxNDQwMDo2NzEwODg2NCwyNzI2Mjk3Njo0LDI4MzExNTUyOjY1NzkyLDI5MzYwMTI4OjY3MTc0NDAwLDMwNDA4NzA0OjI2MCwzMTQ1NzI4MDo2NTc5NiwzMjUwNTg1Njo2NzE3NDQwNCwxNzMwMTUwNDo2NzEwODg2NCwxODM1MDA4MDoyNjAsMTkzOTg2NTY6NjcxNzQ2NTYsMjA0NDcyMzI6MCwyMTQ5NTgwODo2NTU0MCwyMjU0NDM4NDo2NzEwOTEyMCwyMzU5Mjk2MDoyNTYsMjQ2NDE1MzY6NjcxNzQ0MDQsMjU2OTAxMTI6NjU1MzYsMjY3Mzg2ODg6NjcxNzQ2NjAsMjc3ODcyNjQ6NjU3OTYsMjg4MzU4NDA6NjcxMDg4NjgsMjk4ODQ0MTY6NjcxMDkxMjQsMzA5MzI5OTI6NjcxNzQ0MDAsMzE5ODE1Njg6NCwzMzAzMDE0NDo2NTc5Mn0sezA6MjE1MTY4MjA0OCw2NTUzNjoyMTQ3NDg3ODA4LDEzMTA3Mjo0MTk4NDY0LDE5NjYwODoyMTUxNjc3OTUyLDI2MjE0NDowLDMyNzY4MDo0MTk4NDAwLDM5MzIxNjoyMTQ3NDgzNzEyLDQ1ODc1Mjo0MTk0MzY4LDUyNDI4ODoyMTQ3NDgzNjQ4LDU4OTgyNDo0MTk0MzA0LDY1NTM2MDo2NCw3MjA4OTY6MjE0NzQ4Nzc0NCw3ODY0MzI6MjE1MTY3ODAxNiw4NTE5Njg6NDE2MCw5MTc1MDQ6NDA5Niw5ODMwNDA6MjE1MTY4MjExMiwzMjc2ODoyMTQ3NDg3ODA4LDk4MzA0OjY0LDE2Mzg0MDoyMTUxNjc4MDE2LDIyOTM3NjoyMTQ3NDg3NzQ0LDI5NDkxMjo0MTk4NDAwLDM2MDQ0ODoyMTUxNjgyMTEyLDQyNTk4NDowLDQ5MTUyMDoyMTUxNjc3OTUyLDU1NzA1Njo0MDk2LDYyMjU5MjoyMTUxNjgyMDQ4LDY4ODEyODo0MTk0MzA0LDc1MzY2NDo0MTYwLDgxOTIwMDoyMTQ3NDgzNjQ4LDg4NDczNjo0MTk0MzY4LDk1MDI3Mjo0MTk4NDY0LDEwMTU4MDg6MjE0NzQ4MzcxMiwxMDQ4NTc2OjQxOTQzNjgsMTExNDExMjo0MTk4NDAwLDExNzk2NDg6MjE0NzQ4MzcxMiwxMjQ1MTg0OjAsMTMxMDcyMDo0MTYwLDEzNzYyNTY6MjE1MTY3ODAxNiwxNDQxNzkyOjIxNTE2ODIwNDgsMTUwNzMyODoyMTQ3NDg3ODA4LDE1NzI4NjQ6MjE1MTY4MjExMiwxNjM4NDAwOjIxNDc0ODM2NDgsMTcwMzkzNjoyMTUxNjc3OTUyLDE3Njk0NzI6NDE5ODQ2NCwxODM1MDA4OjIxNDc0ODc3NDQsMTkwMDU0NDo0MTk0MzA0LDE5NjYwODA6NjQsMjAzMTYxNjo0MDk2LDEwODEzNDQ6MjE1MTY3Nzk1MiwxMTQ2ODgwOjIxNTE2ODIxMTIsMTIxMjQxNjowLDEyNzc5NTI6NDE5ODQwMCwxMzQzNDg4OjQxOTQzNjgsMTQwOTAyNDoyMTQ3NDgzNjQ4LDE0NzQ1NjA6MjE0NzQ4NzgwOCwxNTQwMDk2OjY0LDE2MDU2MzI6MjE0NzQ4MzcxMiwxNjcxMTY4OjQwOTYsMTczNjcwNDoyMTQ3NDg3NzQ0LDE4MDIyNDA6MjE1MTY3ODAxNiwxODY3Nzc2OjQxNjAsMTkzMzMxMjoyMTUxNjgyMDQ4LDE5OTg4NDg6NDE5NDMwNCwyMDY0Mzg0OjQxOTg0NjR9LHswOjEyOCw0MDk2OjE3MDM5MzYwLDgxOTI6MjYyMTQ0LDEyMjg4OjUzNjg3MDkxMiwxNjM4NDo1MzcxMzMxODQsMjA0ODA6MTY3NzczNDQsMjQ1NzY6NTUzNjQ4MjU2LDI4NjcyOjI2MjI3MiwzMjc2ODoxNjc3NzIxNiwzNjg2NDo1MzcxMzMwNTYsNDA5NjA6NTM2ODcxMDQwLDQ1MDU2OjU1MzkxMDQwMCw0OTE1Mjo1NTM5MTAyNzIsNTMyNDg6MCw1NzM0NDoxNzAzOTQ4OCw2MTQ0MDo1NTM2NDgxMjgsMjA0ODoxNzAzOTQ4OCw2MTQ0OjU1MzY0ODI1NiwxMDI0MDoxMjgsMTQzMzY6MTcwMzkzNjAsMTg0MzI6MjYyMTQ0LDIyNTI4OjUzNzEzMzE4NCwyNjYyNDo1NTM5MTAyNzIsMzA3MjA6NTM2ODcwOTEyLDM0ODE2OjUzNzEzMzA1NiwzODkxMjowLDQzMDA4OjU1MzkxMDQwMCw0NzEwNDoxNjc3NzM0NCw1MTIwMDo1MzY4NzEwNDAsNTUyOTY6NTUzNjQ4MTI4LDU5MzkyOjE2Nzc3MjE2LDYzNDg4OjI2MjI3Miw2NTUzNjoyNjIxNDQsNjk2MzI6MTI4LDczNzI4OjUzNjg3MDkxMiw3NzgyNDo1NTM2NDgyNTYsODE5MjA6MTY3NzczNDQsODYwMTY6NTUzOTEwMjcyLDkwMTEyOjUzNzEzMzE4NCw5NDIwODoxNjc3NzIxNiw5ODMwNDo1NTM5MTA0MDAsMTAyNDAwOjU1MzY0ODEyOCwxMDY0OTY6MTcwMzkzNjAsMTEwNTkyOjUzNzEzMzA1NiwxMTQ2ODg6MjYyMjcyLDExODc4NDo1MzY4NzEwNDAsMTIyODgwOjAsMTI2OTc2OjE3MDM5NDg4LDY3NTg0OjU1MzY0ODI1Niw3MTY4MDoxNjc3NzIxNiw3NTc3NjoxNzAzOTM2MCw3OTg3Mjo1MzcxMzMxODQsODM5Njg6NTM2ODcwOTEyLDg4MDY0OjE3MDM5NDg4LDkyMTYwOjEyOCw5NjI1Njo1NTM5MTAyNzIsMTAwMzUyOjI2MjI3MiwxMDQ0NDg6NTUzOTEwNDAwLDEwODU0NDowLDExMjY0MDo1NTM2NDgxMjgsMTE2NzM2OjE2Nzc3MzQ0LDEyMDgzMjoyNjIxNDQsMTI0OTI4OjUzNzEzMzA1NiwxMjkwMjQ6NTM2ODcxMDQwfSx7MDoyNjg0MzU0NjQsMjU2OjgxOTIsNTEyOjI3MDUzMjYwOCw3Njg6MjcwNTQwODA4LDEwMjQ6MjY4NDQzNjQ4LDEyODA6MjA5NzE1MiwxNTM2OjIwOTcxNjAsMTc5MjoyNjg0MzU0NTYsMjA0ODowLDIzMDQ6MjY4NDQzNjU2LDI1NjA6MjEwNTM0NCwyODE2OjgsMzA3MjoyNzA1MzI2MTYsMzMyODoyMTA1MzUyLDM1ODQ6ODIwMCwzODQwOjI3MDU0MDgwMCwxMjg6MjcwNTMyNjA4LDM4NDoyNzA1NDA4MDgsNjQwOjgsODk2OjIwOTcxNTIsMTE1MjoyMTA1MzUyLDE0MDg6MjY4NDM1NDY0LDE2NjQ6MjY4NDQzNjQ4LDE5MjA6ODIwMCwyMTc2OjIwOTcxNjAsMjQzMjo4MTkyLDI2ODg6MjY4NDQzNjU2LDI5NDQ6MjcwNTMyNjE2LDMyMDA6MCwzNDU2OjI3MDU0MDgwMCwzNzEyOjIxMDUzNDQsMzk2ODoyNjg0MzU0NTYsNDA5NjoyNjg0NDM2NDgsNDM1MjoyNzA1MzI2MTYsNDYwODoyNzA1NDA4MDgsNDg2NDo4MjAwLDUxMjA6MjA5NzE1Miw1Mzc2OjI2ODQzNTQ1Niw1NjMyOjI2ODQzNTQ2NCw1ODg4OjIxMDUzNDQsNjE0NDoyMTA1MzUyLDY0MDA6MCw2NjU2OjgsNjkxMjoyNzA1MzI2MDgsNzE2ODo4MTkyLDc0MjQ6MjY4NDQzNjU2LDc2ODA6MjcwNTQwODAwLDc5MzY6MjA5NzE2MCw0MjI0OjgsNDQ4MDoyMTA1MzQ0LDQ3MzY6MjA5NzE1Miw0OTkyOjI2ODQzNTQ2NCw1MjQ4OjI2ODQ0MzY0OCw1NTA0OjgyMDAsNTc2MDoyNzA1NDA4MDgsNjAxNjoyNzA1MzI2MDgsNjI3MjoyNzA1NDA4MDAsNjUyODoyNzA1MzI2MTYsNjc4NDo4MTkyLDcwNDA6MjEwNTM1Miw3Mjk2OjIwOTcxNjAsNzU1MjowLDc4MDg6MjY4NDM1NDU2LDgwNjQ6MjY4NDQzNjU2fSx7MDoxMDQ4NTc2LDE2OjMzNTU1NDU3LDMyOjEwMjQsNDg6MTA0OTYwMSw2NDozNDYwNDAzMyw4MDowLDk2OjEsMTEyOjM0NjAzMDA5LDEyODozMzU1NTQ1NiwxNDQ6MTA0ODU3NywxNjA6MzM1NTQ0MzMsMTc2OjM0NjA0MDMyLDE5MjozNDYwMzAwOCwyMDg6MTAyNSwyMjQ6MTA0OTYwMCwyNDA6MzM1NTQ0MzIsODozNDYwMzAwOSwyNDowLDQwOjMzNTU1NDU3LDU2OjM0NjA0MDMyLDcyOjEwNDg1NzYsODg6MzM1NTQ0MzMsMTA0OjMzNTU0NDMyLDEyMDoxMDI1LDEzNjoxMDQ5NjAxLDE1MjozMzU1NTQ1NiwxNjg6MzQ2MDMwMDgsMTg0OjEwNDg1NzcsMjAwOjEwMjQsMjE2OjM0NjA0MDMzLDIzMjoxLDI0ODoxMDQ5NjAwLDI1NjozMzU1NDQzMiwyNzI6MTA0ODU3NiwyODg6MzM1NTU0NTcsMzA0OjM0NjAzMDA5LDMyMDoxMDQ4NTc3LDMzNjozMzU1NTQ1NiwzNTI6MzQ2MDQwMzIsMzY4OjEwNDk2MDEsMzg0OjEwMjUsNDAwOjM0NjA0MDMzLDQxNjoxMDQ5NjAwLDQzMjoxLDQ0ODowLDQ2NDozNDYwMzAwOCw0ODA6MzM1NTQ0MzMsNDk2OjEwMjQsMjY0OjEwNDk2MDAsMjgwOjMzNTU1NDU3LDI5NjozNDYwMzAwOSwzMTI6MSwzMjg6MzM1NTQ0MzIsMzQ0OjEwNDg1NzYsMzYwOjEwMjUsMzc2OjM0NjA0MDMyLDM5MjozMzU1NDQzMyw0MDg6MzQ2MDMwMDgsNDI0OjAsNDQwOjM0NjA0MDMzLDQ1NjoxMDQ5NjAxLDQ3MjoxMDI0LDQ4ODozMzU1NTQ1Niw1MDQ6MTA0ODU3N30sezA6MTM0MjE5ODA4LDE6MTMxMDcyLDI6MTM0MjE3NzI4LDM6MzIsNDoxMzExMDQsNToxMzQzNTA4ODAsNjoxMzQzNTA4NDgsNzoyMDQ4LDg6MTM0MzQ4ODAwLDk6MTM0MjE5Nzc2LDEwOjEzMzEyMCwxMToxMzQzNDg4MzIsMTI6MjA4MCwxMzowLDE0OjEzNDIxNzc2MCwxNToxMzMxNTIsMjE0NzQ4MzY0ODoyMDQ4LDIxNDc0ODM2NDk6MTM0MzUwODgwLDIxNDc0ODM2NTA6MTM0MjE5ODA4LDIxNDc0ODM2NTE6MTM0MjE3NzI4LDIxNDc0ODM2NTI6MTM0MzQ4ODAwLDIxNDc0ODM2NTM6MTMzMTIwLDIxNDc0ODM2NTQ6MTMzMTUyLDIxNDc0ODM2NTU6MzIsMjE0NzQ4MzY1NjoxMzQyMTc3NjAsMjE0NzQ4MzY1NzoyMDgwLDIxNDc0ODM2NTg6MTMxMTA0LDIxNDc0ODM2NTk6MTM0MzUwODQ4LDIxNDc0ODM2NjA6MCwyMTQ3NDgzNjYxOjEzNDM0ODgzMiwyMTQ3NDgzNjYyOjEzNDIxOTc3NiwyMTQ3NDgzNjYzOjEzMTA3MiwxNjoxMzMxNTIsMTc6MTM0MzUwODQ4LDE4OjMyLDE5OjIwNDgsMjA6MTM0MjE5Nzc2LDIxOjEzNDIxNzc2MCwyMjoxMzQzNDg4MzIsMjM6MTMxMDcyLDI0OjAsMjU6MTMxMTA0LDI2OjEzNDM0ODgwMCwyNzoxMzQyMTk4MDgsMjg6MTM0MzUwODgwLDI5OjEzMzEyMCwzMDoyMDgwLDMxOjEzNDIxNzcyOCwyMTQ3NDgzNjY0OjEzMTA3MiwyMTQ3NDgzNjY1OjIwNDgsMjE0NzQ4MzY2NjoxMzQzNDg4MzIsMjE0NzQ4MzY2NzoxMzMxNTIsMjE0NzQ4MzY2ODozMiwyMTQ3NDgzNjY5OjEzNDM0ODgwMCwyMTQ3NDgzNjcwOjEzNDIxNzcyOCwyMTQ3NDgzNjcxOjEzNDIxOTgwOCwyMTQ3NDgzNjcyOjEzNDM1MDg4MCwyMTQ3NDgzNjczOjEzNDIxNzc2MCwyMTQ3NDgzNjc0OjEzNDIxOTc3NiwyMTQ3NDgzNjc1OjAsMjE0NzQ4MzY3NjoxMzMxMjAsMjE0NzQ4MzY3NzoyMDgwLDIxNDc0ODM2Nzg6MTMxMTA0LDIxNDc0ODM2Nzk6MTM0MzUwODQ4fV0sdT1bNDE2MDc0OTU2OSw1Mjg0ODIzMDQsMzMwMzAxNDQsMjA2NDM4NCwxMjkwMjQsODA2NCw1MDQsMjE0NzQ4MzY3OV0sZD1hLkRFUz1zLmV4dGVuZCh7X2RvUmVzZXQ6ZnVuY3Rpb24oKXtmb3IodmFyIHQ9dGhpcy5fa2V5LHI9dC53b3JkcyxlPVtdLGk9MDtpPDU2O2krKyl7dmFyIG49Y1tpXS0xO2VbaV09cltuPj4+NV0+Pj4zMS1uJTMyJjF9Zm9yKHZhciBvPXRoaXMuX3N1YktleXM9W10scz0wO3M8MTY7cysrKXtmb3IodmFyIGE9b1tzXT1bXSxmPWxbc10saT0wO2k8MjQ7aSsrKWFbaS82fDBdfD1lWyhoW2ldLTErZiklMjhdPDwzMS1pJTYsYVs0KyhpLzZ8MCldfD1lWzI4KyhoW2krMjRdLTErZiklMjhdPDwzMS1pJTY7YVswXT1hWzBdPDwxfGFbMF0+Pj4zMTtmb3IodmFyIGk9MTtpPDc7aSsrKWFbaV09YVtpXT4+PjQqKGktMSkrMzthWzddPWFbN108PDV8YVs3XT4+PjI3fWZvcih2YXIgdT10aGlzLl9pbnZTdWJLZXlzPVtdLGk9MDtpPDE2O2krKyl1W2ldPW9bMTUtaV19LGVuY3J5cHRCbG9jazpmdW5jdGlvbih0LHIpe3RoaXMuX2RvQ3J5cHRCbG9jayh0LHIsdGhpcy5fc3ViS2V5cyl9LGRlY3J5cHRCbG9jazpmdW5jdGlvbih0LHIpe3RoaXMuX2RvQ3J5cHRCbG9jayh0LHIsdGhpcy5faW52U3ViS2V5cyl9LF9kb0NyeXB0QmxvY2s6ZnVuY3Rpb24odCxpLG4pe3RoaXMuX2xCbG9jaz10W2ldLHRoaXMuX3JCbG9jaz10W2krMV0sci5jYWxsKHRoaXMsNCwyNTI2NDUxMzUpLHIuY2FsbCh0aGlzLDE2LDY1NTM1KSxlLmNhbGwodGhpcywyLDg1ODk5MzQ1OSksZS5jYWxsKHRoaXMsOCwxNjcxMTkzNSksci5jYWxsKHRoaXMsMSwxNDMxNjU1NzY1KTtmb3IodmFyIG89MDtvPDE2O28rKyl7Zm9yKHZhciBzPW5bb10sYT10aGlzLl9sQmxvY2ssYz10aGlzLl9yQmxvY2ssaD0wLGw9MDtsPDg7bCsrKWh8PWZbbF1bKChjXnNbbF0pJnVbbF0pPj4+MF07dGhpcy5fbEJsb2NrPWMsdGhpcy5fckJsb2NrPWFeaH12YXIgZD10aGlzLl9sQmxvY2s7dGhpcy5fbEJsb2NrPXRoaXMuX3JCbG9jayx0aGlzLl9yQmxvY2s9ZCxyLmNhbGwodGhpcywxLDE0MzE2NTU3NjUpLGUuY2FsbCh0aGlzLDgsMTY3MTE5MzUpLGUuY2FsbCh0aGlzLDIsODU4OTkzNDU5KSxyLmNhbGwodGhpcywxNiw2NTUzNSksci5jYWxsKHRoaXMsNCwyNTI2NDUxMzUpLHRbaV09dGhpcy5fbEJsb2NrLHRbaSsxXT10aGlzLl9yQmxvY2t9LGtleVNpemU6MixpdlNpemU6MixibG9ja1NpemU6Mn0pO2kuREVTPXMuX2NyZWF0ZUhlbHBlcihkKTt2YXIgdj1hLlRyaXBsZURFUz1zLmV4dGVuZCh7X2RvUmVzZXQ6ZnVuY3Rpb24oKXt2YXIgdD10aGlzLl9rZXkscj10LndvcmRzO3RoaXMuX2RlczE9ZC5jcmVhdGVFbmNyeXB0b3Ioby5jcmVhdGUoci5zbGljZSgwLDIpKSksdGhpcy5fZGVzMj1kLmNyZWF0ZUVuY3J5cHRvcihvLmNyZWF0ZShyLnNsaWNlKDIsNCkpKSx0aGlzLl9kZXMzPWQuY3JlYXRlRW5jcnlwdG9yKG8uY3JlYXRlKHIuc2xpY2UoNCw2KSkpfSxlbmNyeXB0QmxvY2s6ZnVuY3Rpb24odCxyKXt0aGlzLl9kZXMxLmVuY3J5cHRCbG9jayh0LHIpLHRoaXMuX2RlczIuZGVjcnlwdEJsb2NrKHQsciksdGhpcy5fZGVzMy5lbmNyeXB0QmxvY2sodCxyKX0sZGVjcnlwdEJsb2NrOmZ1bmN0aW9uKHQscil7dGhpcy5fZGVzMy5kZWNyeXB0QmxvY2sodCxyKSx0aGlzLl9kZXMyLmVuY3J5cHRCbG9jayh0LHIpLHRoaXMuX2RlczEuZGVjcnlwdEJsb2NrKHQscil9LGtleVNpemU6NixpdlNpemU6MixibG9ja1NpemU6Mn0pO2kuVHJpcGxlREVTPXMuX2NyZWF0ZUhlbHBlcih2KX0oKSxmdW5jdGlvbigpe2Z1bmN0aW9uIHIoKXtmb3IodmFyIHQ9dGhpcy5fUyxyPXRoaXMuX2ksZT10aGlzLl9qLGk9MCxuPTA7bjw0O24rKyl7cj0ocisxKSUyNTYsZT0oZSt0W3JdKSUyNTY7dmFyIG89dFtyXTt0W3JdPXRbZV0sdFtlXT1vLGl8PXRbKHRbcl0rdFtlXSklMjU2XTw8MjQtOCpufXJldHVybiB0aGlzLl9pPXIsdGhpcy5faj1lLGl9dmFyIGU9dCxpPWUubGliLG49aS5TdHJlYW1DaXBoZXIsbz1lLmFsZ28scz1vLlJDND1uLmV4dGVuZCh7X2RvUmVzZXQ6ZnVuY3Rpb24oKXtmb3IodmFyIHQ9dGhpcy5fa2V5LHI9dC53b3JkcyxlPXQuc2lnQnl0ZXMsaT10aGlzLl9TPVtdLG49MDtuPDI1NjtuKyspaVtuXT1uO2Zvcih2YXIgbj0wLG89MDtuPDI1NjtuKyspe3ZhciBzPW4lZSxhPXJbcz4+PjJdPj4+MjQtcyU0KjgmMjU1O289KG8raVtuXSthKSUyNTY7dmFyIGM9aVtuXTtpW25dPWlbb10saVtvXT1jfXRoaXMuX2k9dGhpcy5faj0wfSxfZG9Qcm9jZXNzQmxvY2s6ZnVuY3Rpb24odCxlKXt0W2VdXj1yLmNhbGwodGhpcyl9LGtleVNpemU6OCxpdlNpemU6MH0pO2UuUkM0PW4uX2NyZWF0ZUhlbHBlcihzKTt2YXIgYT1vLlJDNERyb3A9cy5leHRlbmQoe2NmZzpzLmNmZy5leHRlbmQoe2Ryb3A6MTkyfSksX2RvUmVzZXQ6ZnVuY3Rpb24oKXtzLl9kb1Jlc2V0LmNhbGwodGhpcyk7Zm9yKHZhciB0PXRoaXMuY2ZnLmRyb3A7dD4wO3QtLSlyLmNhbGwodGhpcyl9fSk7ZS5SQzREcm9wPW4uX2NyZWF0ZUhlbHBlcihhKX0oKSx0Lm1vZGUuQ1RSR2xhZG1hbj1mdW5jdGlvbigpe2Z1bmN0aW9uIHIodCl7aWYoMjU1PT09KHQ+PjI0JjI1NSkpe3ZhciByPXQ+PjE2JjI1NSxlPXQ+PjgmMjU1LGk9MjU1JnQ7MjU1PT09cj8ocj0wLDI1NT09PWU/KGU9MCwyNTU9PT1pP2k9MDorK2kpOisrZSk6KytyLHQ9MCx0Kz1yPDwxNix0Kz1lPDw4LHQrPWl9ZWxzZSB0Kz0xPDwyNDtyZXR1cm4gdH1mdW5jdGlvbiBlKHQpe3JldHVybiAwPT09KHRbMF09cih0WzBdKSkmJih0WzFdPXIodFsxXSkpLHR9dmFyIGk9dC5saWIuQmxvY2tDaXBoZXJNb2RlLmV4dGVuZCgpLG49aS5FbmNyeXB0b3I9aS5leHRlbmQoe3Byb2Nlc3NCbG9jazpmdW5jdGlvbih0LHIpe3ZhciBpPXRoaXMuX2NpcGhlcixuPWkuYmxvY2tTaXplLG89dGhpcy5faXYscz10aGlzLl9jb3VudGVyO28mJihzPXRoaXMuX2NvdW50ZXI9by5zbGljZSgwKSx0aGlzLl9pdj12b2lkIDApLGUocyk7dmFyIGE9cy5zbGljZSgwKTtpLmVuY3J5cHRCbG9jayhhLDApO2Zvcih2YXIgYz0wO2M8bjtjKyspdFtyK2NdXj1hW2NdfX0pO3JldHVybiBpLkRlY3J5cHRvcj1uLGl9KCksZnVuY3Rpb24oKXtmdW5jdGlvbiByKCl7Zm9yKHZhciB0PXRoaXMuX1gscj10aGlzLl9DLGU9MDtlPDg7ZSsrKWFbZV09cltlXTtyWzBdPXJbMF0rMTI5NTMwNzU5Nyt0aGlzLl9ifDAsclsxXT1yWzFdKzM1NDUwNTIzNzErKHJbMF0+Pj4wPGFbMF0+Pj4wPzE6MCl8MCxyWzJdPXJbMl0rODg2MjYzMDkyKyhyWzFdPj4+MDxhWzFdPj4+MD8xOjApfDAsclszXT1yWzNdKzEyOTUzMDc1OTcrKHJbMl0+Pj4wPGFbMl0+Pj4wPzE6MCl8MCxyWzRdPXJbNF0rMzU0NTA1MjM3MSsoclszXT4+PjA8YVszXT4+PjA/MTowKXwwLHJbNV09cls1XSs4ODYyNjMwOTIrKHJbNF0+Pj4wPGFbNF0+Pj4wPzE6MCl8MCxyWzZdPXJbNl0rMTI5NTMwNzU5Nysocls1XT4+PjA8YVs1XT4+PjA/MTowKXwwLHJbN109cls3XSszNTQ1MDUyMzcxKyhyWzZdPj4+MDxhWzZdPj4+MD8xOjApfDAsdGhpcy5fYj1yWzddPj4+MDxhWzddPj4+MD8xOjA7Zm9yKHZhciBlPTA7ZTw4O2UrKyl7dmFyIGk9dFtlXStyW2VdLG49NjU1MzUmaSxvPWk+Pj4xNixzPSgobipuPj4+MTcpK24qbz4+PjE1KStvKm8saD0oKDQyOTQ5MDE3NjAmaSkqaXwwKSsoKDY1NTM1JmkpKml8MCk7Y1tlXT1zXmh9dFswXT1jWzBdKyhjWzddPDwxNnxjWzddPj4+MTYpKyhjWzZdPDwxNnxjWzZdPj4+MTYpfDAsdFsxXT1jWzFdKyhjWzBdPDw4fGNbMF0+Pj4yNCkrY1s3XXwwLHRbMl09Y1syXSsoY1sxXTw8MTZ8Y1sxXT4+PjE2KSsoY1swXTw8MTZ8Y1swXT4+PjE2KXwwLHRbM109Y1szXSsoY1syXTw8OHxjWzJdPj4+MjQpK2NbMV18MCx0WzRdPWNbNF0rKGNbM108PDE2fGNbM10+Pj4xNikrKGNbMl08PDE2fGNbMl0+Pj4xNil8MCx0WzVdPWNbNV0rKGNbNF08PDh8Y1s0XT4+PjI0KStjWzNdfDAsdFs2XT1jWzZdKyhjWzVdPDwxNnxjWzVdPj4+MTYpKyhjWzRdPDwxNnxjWzRdPj4+MTYpfDAsdFs3XT1jWzddKyhjWzZdPDw4fGNbNl0+Pj4yNCkrY1s1XXwwfXZhciBlPXQsaT1lLmxpYixuPWkuU3RyZWFtQ2lwaGVyLG89ZS5hbGdvLHM9W10sYT1bXSxjPVtdLGg9by5SYWJiaXQ9bi5leHRlbmQoe19kb1Jlc2V0OmZ1bmN0aW9uKCl7Zm9yKHZhciB0PXRoaXMuX2tleS53b3JkcyxlPXRoaXMuY2ZnLml2LGk9MDtpPDQ7aSsrKXRbaV09MTY3MTE5MzUmKHRbaV08PDh8dFtpXT4+PjI0KXw0Mjc4MjU1MzYwJih0W2ldPDwyNHx0W2ldPj4+OCk7dmFyIG49dGhpcy5fWD1bdFswXSx0WzNdPDwxNnx0WzJdPj4+MTYsdFsxXSx0WzBdPDwxNnx0WzNdPj4+MTYsdFsyXSx0WzFdPDwxNnx0WzBdPj4+MTYsdFszXSx0WzJdPDwxNnx0WzFdPj4+MTZdLG89dGhpcy5fQz1bdFsyXTw8MTZ8dFsyXT4+PjE2LDQyOTQ5MDE3NjAmdFswXXw2NTUzNSZ0WzFdLHRbM108PDE2fHRbM10+Pj4xNiw0Mjk0OTAxNzYwJnRbMV18NjU1MzUmdFsyXSx0WzBdPDwxNnx0WzBdPj4+MTYsNDI5NDkwMTc2MCZ0WzJdfDY1NTM1JnRbM10sdFsxXTw8MTZ8dFsxXT4+PjE2LDQyOTQ5MDE3NjAmdFszXXw2NTUzNSZ0WzBdXTt0aGlzLl9iPTA7Zm9yKHZhciBpPTA7aTw0O2krKylyLmNhbGwodGhpcyk7Zm9yKHZhciBpPTA7aTw4O2krKylvW2ldXj1uW2krNCY3XTtpZihlKXt2YXIgcz1lLndvcmRzLGE9c1swXSxjPXNbMV0saD0xNjcxMTkzNSYoYTw8OHxhPj4+MjQpfDQyNzgyNTUzNjAmKGE8PDI0fGE+Pj44KSxsPTE2NzExOTM1JihjPDw4fGM+Pj4yNCl8NDI3ODI1NTM2MCYoYzw8MjR8Yz4+PjgpLGY9aD4+PjE2fDQyOTQ5MDE3NjAmbCx1PWw8PDE2fDY1NTM1Jmg7b1swXV49aCxvWzFdXj1mLG9bMl1ePWwsb1szXV49dSxvWzRdXj1oLG9bNV1ePWYsb1s2XV49bCxvWzddXj11O2Zvcih2YXIgaT0wO2k8NDtpKyspci5jYWxsKHRoaXMpfX0sX2RvUHJvY2Vzc0Jsb2NrOmZ1bmN0aW9uKHQsZSl7dmFyIGk9dGhpcy5fWDtyLmNhbGwodGhpcyksc1swXT1pWzBdXmlbNV0+Pj4xNl5pWzNdPDwxNixzWzFdPWlbMl1eaVs3XT4+PjE2XmlbNV08PDE2LHNbMl09aVs0XV5pWzFdPj4+MTZeaVs3XTw8MTYsc1szXT1pWzZdXmlbM10+Pj4xNl5pWzFdPDwxNjtmb3IodmFyIG49MDtuPDQ7bisrKXNbbl09MTY3MTE5MzUmKHNbbl08PDh8c1tuXT4+PjI0KXw0Mjc4MjU1MzYwJihzW25dPDwyNHxzW25dPj4+OCksdFtlK25dXj1zW25dfSxibG9ja1NpemU6NCxpdlNpemU6Mn0pO2UuUmFiYml0PW4uX2NyZWF0ZUhlbHBlcihoKX0oKSx0Lm1vZGUuQ1RSPWZ1bmN0aW9uKCl7dmFyIHI9dC5saWIuQmxvY2tDaXBoZXJNb2RlLmV4dGVuZCgpLGU9ci5FbmNyeXB0b3I9ci5leHRlbmQoe3Byb2Nlc3NCbG9jazpmdW5jdGlvbih0LHIpe3ZhciBlPXRoaXMuX2NpcGhlcixpPWUuYmxvY2tTaXplLG49dGhpcy5faXYsbz10aGlzLl9jb3VudGVyO24mJihvPXRoaXMuX2NvdW50ZXI9bi5zbGljZSgwKSx0aGlzLl9pdj12b2lkIDApO3ZhciBzPW8uc2xpY2UoMCk7ZS5lbmNyeXB0QmxvY2socywwKSxvW2ktMV09b1tpLTFdKzF8MDtmb3IodmFyIGE9MDthPGk7YSsrKXRbcithXV49c1thXX19KTtyZXR1cm4gci5EZWNyeXB0b3I9ZSxyfSgpLGZ1bmN0aW9uKCl7ZnVuY3Rpb24gcigpe2Zvcih2YXIgdD10aGlzLl9YLHI9dGhpcy5fQyxlPTA7ZTw4O2UrKylhW2VdPXJbZV07clswXT1yWzBdKzEyOTUzMDc1OTcrdGhpcy5fYnwwLHJbMV09clsxXSszNTQ1MDUyMzcxKyhyWzBdPj4+MDxhWzBdPj4+MD8xOjApfDAsclsyXT1yWzJdKzg4NjI2MzA5MisoclsxXT4+PjA8YVsxXT4+PjA/MTowKXwwLHJbM109clszXSsxMjk1MzA3NTk3KyhyWzJdPj4+MDxhWzJdPj4+MD8xOjApfDAscls0XT1yWzRdKzM1NDUwNTIzNzErKHJbM10+Pj4wPGFbM10+Pj4wPzE6MCl8MCxyWzVdPXJbNV0rODg2MjYzMDkyKyhyWzRdPj4+MDxhWzRdPj4+MD8xOjApfDAscls2XT1yWzZdKzEyOTUzMDc1OTcrKHJbNV0+Pj4wPGFbNV0+Pj4wPzE6MCl8MCxyWzddPXJbN10rMzU0NTA1MjM3MSsocls2XT4+PjA8YVs2XT4+PjA/MTowKXwwLHRoaXMuX2I9cls3XT4+PjA8YVs3XT4+PjA/MTowO2Zvcih2YXIgZT0wO2U8ODtlKyspe3ZhciBpPXRbZV0rcltlXSxuPTY1NTM1Jmksbz1pPj4+MTYscz0oKG4qbj4+PjE3KStuKm8+Pj4xNSkrbypvLGg9KCg0Mjk0OTAxNzYwJmkpKml8MCkrKCg2NTUzNSZpKSppfDApO2NbZV09c15ofXRbMF09Y1swXSsoY1s3XTw8MTZ8Y1s3XT4+PjE2KSsoY1s2XTw8MTZ8Y1s2XT4+PjE2KXwwLHRbMV09Y1sxXSsoY1swXTw8OHxjWzBdPj4+MjQpK2NbN118MCx0WzJdPWNbMl0rKGNbMV08PDE2fGNbMV0+Pj4xNikrKGNbMF08PDE2fGNbMF0+Pj4xNil8MCx0WzNdPWNbM10rKGNbMl08PDh8Y1syXT4+PjI0KStjWzFdfDAsdFs0XT1jWzRdKyhjWzNdPDwxNnxjWzNdPj4+MTYpKyhjWzJdPDwxNnxjWzJdPj4+MTYpfDAsdFs1XT1jWzVdKyhjWzRdPDw4fGNbNF0+Pj4yNCkrY1szXXwwLHRbNl09Y1s2XSsoY1s1XTw8MTZ8Y1s1XT4+PjE2KSsoY1s0XTw8MTZ8Y1s0XT4+PjE2KXwwLHRbN109Y1s3XSsoY1s2XTw8OHxjWzZdPj4+MjQpK2NbNV18MH12YXIgZT10LGk9ZS5saWIsbj1pLlN0cmVhbUNpcGhlcixvPWUuYWxnbyxzPVtdLGE9W10sYz1bXSxoPW8uUmFiYml0TGVnYWN5PW4uZXh0ZW5kKHtfZG9SZXNldDpmdW5jdGlvbigpe3ZhciB0PXRoaXMuX2tleS53b3JkcyxlPXRoaXMuY2ZnLml2LGk9dGhpcy5fWD1bdFswXSx0WzNdPDwxNnx0WzJdPj4+MTYsdFsxXSx0WzBdPDwxNnx0WzNdPj4+MTYsdFsyXSx0WzFdPDwxNnx0WzBdPj4+MTYsdFszXSx0WzJdPDwxNnx0WzFdPj4+MTZdLG49dGhpcy5fQz1bdFsyXTw8MTZ8dFsyXT4+PjE2LDQyOTQ5MDE3NjAmdFswXXw2NTUzNSZ0WzFdLHRbM108PDE2fHRbM10+Pj4xNiw0Mjk0OTAxNzYwJnRbMV18NjU1MzUmdFsyXSx0WzBdPDwxNnx0WzBdPj4+MTYsNDI5NDkwMTc2MCZ0WzJdfDY1NTM1JnRbM10sdFsxXTw8MTZ8dFsxXT4+PjE2LDQyOTQ5MDE3NjAmdFszXXw2NTUzNSZ0WzBdXTt0aGlzLl9iPTA7Zm9yKHZhciBvPTA7bzw0O28rKylyLmNhbGwodGhpcyk7Zm9yKHZhciBvPTA7bzw4O28rKyluW29dXj1pW28rNCY3XTtpZihlKXt2YXIgcz1lLndvcmRzLGE9c1swXSxjPXNbMV0saD0xNjcxMTkzNSYoYTw8OHxhPj4+MjQpfDQyNzgyNTUzNjAmKGE8PDI0fGE+Pj44KSxsPTE2NzExOTM1JihjPDw4fGM+Pj4yNCl8NDI3ODI1NTM2MCYoYzw8MjR8Yz4+PjgpLGY9aD4+PjE2fDQyOTQ5MDE3NjAmbCx1PWw8PDE2fDY1NTM1Jmg7blswXV49aCxuWzFdXj1mLG5bMl1ePWwsblszXV49dSxuWzRdXj1oLG5bNV1ePWYsbls2XV49bCxuWzddXj11O2Zvcih2YXIgbz0wO288NDtvKyspci5jYWxsKHRoaXMpfX0sX2RvUHJvY2Vzc0Jsb2NrOmZ1bmN0aW9uKHQsZSl7dmFyIGk9dGhpcy5fWDtyLmNhbGwodGhpcyksc1swXT1pWzBdXmlbNV0+Pj4xNl5pWzNdPDwxNixzWzFdPWlbMl1eaVs3XT4+PjE2XmlbNV08PDE2LHNbMl09aVs0XV5pWzFdPj4+MTZeaVs3XTw8MTYsc1szXT1pWzZdXmlbM10+Pj4xNl5pWzFdPDwxNjtmb3IodmFyIG49MDtuPDQ7bisrKXNbbl09MTY3MTE5MzUmKHNbbl08PDh8c1tuXT4+PjI0KXw0Mjc4MjU1MzYwJihzW25dPDwyNHxzW25dPj4+OCksdFtlK25dXj1zW25dfSxibG9ja1NpemU6NCxpdlNpemU6Mn0pO2UuUmFiYml0TGVnYWN5PW4uX2NyZWF0ZUhlbHBlcihoKX0oKSx0LnBhZC5aZXJvUGFkZGluZz17cGFkOmZ1bmN0aW9uKHQscil7dmFyIGU9NCpyO3QuY2xhbXAoKSx0LnNpZ0J5dGVzKz1lLSh0LnNpZ0J5dGVzJWV8fGUpfSx1bnBhZDpmdW5jdGlvbih0KXtmb3IodmFyIHI9dC53b3JkcyxlPXQuc2lnQnl0ZXMtMTshKHJbZT4+PjJdPj4+MjQtZSU0KjgmMjU1KTspZS0tO3Quc2lnQnl0ZXM9ZSsxfX0sdH0pO1xyXG4vLyMgc291cmNlTWFwcGluZ1VSTD1jcnlwdG8tanMubWluLmpzLm1hcCJdfQ== } @@ -26874,7 +16368,86 @@ cc._RF.pop(); (function() { var nodeEnv = typeof require !== 'undefined' && typeof process !== 'undefined'; var __module = nodeEnv ? module : {exports:{}}; - var __filename = 'preview-scripts/assets/Script/lq_base/data/lq_const.js'; + var __filename = 'preview-scripts/tiledmap-optimize-resource/Script/TmoSprite.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, '4fa6cO05aBKGoM+5EX9zhkC', 'TmoSprite'); +// Script/TmoSprite.js + +"use strict"; + +exports.__esModule = true; +exports["default"] = void 0; +var _TmoAssembler = require("./TmoAssembler"); +var _default = cc.Class({ + "extends": cc.Sprite, + /** + * 设置TextureIndex + */ + setTextureIdx: function setTextureIdx(idx) { + this._textureIdx = idx; + this.setVertsDirty(); + }, + _getDefaultMaterial: function _getDefaultMaterial() { + // 从TiledMap取得默认的材质 + return this._getTiledMap().getObjectMaterial(); + }, + _updateMaterial: function _updateMaterial() { + // make sure material is belong to self. + var material = this.getMaterial(0); + if (material) { + if (material.getDefine('USE_TEXTURE') !== undefined) { + material.define('USE_TEXTURE', true); + } + // 手动设置哈希值,避免无法合批 + material.updateHash(999999); + + // 增加WITH_COLOR宏定义 + var noColor = this.isNoColor(); + material.define('WITH_COLOR', !noColor); + } + cc.BlendFunc.prototype._updateMaterial.call(this); + }, + _resetAssembler: function _resetAssembler() { + // 修改默认Assembler + var assembler = this._assembler = new _TmoAssembler.TmoAssembler(); + assembler.init(this); + this._updateColor(); + this.setVertsDirty(); + }, + _getTiledMap: function _getTiledMap() { + return this.node._tiledMap; + }, + isNoColor: function isNoColor() { + return this._getTiledMap().isNoColor(); + } +}); +exports["default"] = _default; +module.exports = exports["default"]; + +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,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInBhY2thZ2VzXFxUaWxlZE1hcE9wdGltaXplclxccmVzb3VyY2VcXFNjcmlwdFxcVG1vU3ByaXRlLmpzIl0sIm5hbWVzIjpbIl9UbW9Bc3NlbWJsZXIiLCJyZXF1aXJlIiwiX2RlZmF1bHQiLCJjYyIsIkNsYXNzIiwiU3ByaXRlIiwic2V0VGV4dHVyZUlkeCIsImlkeCIsIl90ZXh0dXJlSWR4Iiwic2V0VmVydHNEaXJ0eSIsIl9nZXREZWZhdWx0TWF0ZXJpYWwiLCJfZ2V0VGlsZWRNYXAiLCJnZXRPYmplY3RNYXRlcmlhbCIsIl91cGRhdGVNYXRlcmlhbCIsIm1hdGVyaWFsIiwiZ2V0TWF0ZXJpYWwiLCJnZXREZWZpbmUiLCJ1bmRlZmluZWQiLCJkZWZpbmUiLCJ1cGRhdGVIYXNoIiwibm9Db2xvciIsImlzTm9Db2xvciIsIkJsZW5kRnVuYyIsInByb3RvdHlwZSIsImNhbGwiLCJfcmVzZXRBc3NlbWJsZXIiLCJhc3NlbWJsZXIiLCJfYXNzZW1ibGVyIiwiVG1vQXNzZW1ibGVyIiwiaW5pdCIsIl91cGRhdGVDb2xvciIsIm5vZGUiLCJfdGlsZWRNYXAiLCJleHBvcnRzIiwibW9kdWxlIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsSUFBQUEsYUFBQSxHQUFBQyxPQUFBO0FBQThDLElBQUFDLFFBQUEsR0FFL0JDLEVBQUUsQ0FBQ0MsS0FBSyxDQUFDO0VBQ3BCLFdBQVNELEVBQUUsQ0FBQ0UsTUFBTTtFQUVsQjtBQUNKO0FBQ0E7RUFDSUMsYUFBYSxXQUFBQSxjQUFDQyxHQUFHLEVBQUU7SUFDZixJQUFJLENBQUNDLFdBQVcsR0FBR0QsR0FBRztJQUN0QixJQUFJLENBQUNFLGFBQWEsRUFBRTtFQUN4QixDQUFDO0VBRURDLG1CQUFtQixXQUFBQSxvQkFBQSxFQUFHO0lBQ2xCO0lBQ0EsT0FBTyxJQUFJLENBQUNDLFlBQVksRUFBRSxDQUFDQyxpQkFBaUIsRUFBRTtFQUNsRCxDQUFDO0VBRURDLGVBQWUsV0FBQUEsZ0JBQUEsRUFBRztJQUNkO0lBQ0EsSUFBSUMsUUFBUSxHQUFHLElBQUksQ0FBQ0MsV0FBVyxDQUFDLENBQUMsQ0FBQztJQUNsQyxJQUFJRCxRQUFRLEVBQUU7TUFDVixJQUFJQSxRQUFRLENBQUNFLFNBQVMsQ0FBQyxhQUFhLENBQUMsS0FBS0MsU0FBUyxFQUFFO1FBQ2pESCxRQUFRLENBQUNJLE1BQU0sQ0FBQyxhQUFhLEVBQUUsSUFBSSxDQUFDO01BQ3hDO01BQ0E7TUFDQUosUUFBUSxDQUFDSyxVQUFVLENBQUMsTUFBTSxDQUFDOztNQUUzQjtNQUNBLElBQUlDLE9BQU8sR0FBRyxJQUFJLENBQUNDLFNBQVMsRUFBRTtNQUM5QlAsUUFBUSxDQUFDSSxNQUFNLENBQUMsWUFBWSxFQUFFLENBQUNFLE9BQU8sQ0FBQztJQUMzQztJQUVBakIsRUFBRSxDQUFDbUIsU0FBUyxDQUFDQyxTQUFTLENBQUNWLGVBQWUsQ0FBQ1csSUFBSSxDQUFDLElBQUksQ0FBQztFQUNyRCxDQUFDO0VBRURDLGVBQWUsV0FBQUEsZ0JBQUEsRUFBRztJQUNkO0lBQ0EsSUFBSUMsU0FBUyxHQUFHLElBQUksQ0FBQ0MsVUFBVSxHQUFHLElBQUlDLDBCQUFZLEVBQUU7SUFDcERGLFNBQVMsQ0FBQ0csSUFBSSxDQUFDLElBQUksQ0FBQztJQUVwQixJQUFJLENBQUNDLFlBQVksRUFBRTtJQUNuQixJQUFJLENBQUNyQixhQUFhLEVBQUU7RUFDeEIsQ0FBQztFQUVERSxZQUFZLFdBQUFBLGFBQUEsRUFBRztJQUNYLE9BQU8sSUFBSSxDQUFDb0IsSUFBSSxDQUFDQyxTQUFTO0VBQzlCLENBQUM7RUFFRFgsU0FBUyxXQUFBQSxVQUFBLEVBQUc7SUFDUixPQUFPLElBQUksQ0FBQ1YsWUFBWSxFQUFFLENBQUNVLFNBQVMsRUFBRTtFQUMxQztBQUNKLENBQUMsQ0FBQztBQUFBWSxPQUFBLGNBQUEvQixRQUFBO0FBQUFnQyxNQUFBLENBQUFELE9BQUEsR0FBQUEsT0FBQSIsInNvdXJjZVJvb3QiOiIvIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgVG1vQXNzZW1ibGVyIH0gZnJvbSBcIi4vVG1vQXNzZW1ibGVyXCI7XHJcblxyXG5leHBvcnQgZGVmYXVsdCBjYy5DbGFzcyh7XHJcbiAgICBleHRlbmRzOiBjYy5TcHJpdGUsXHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiDorr7nva5UZXh0dXJlSW5kZXhcclxuICAgICAqL1xyXG4gICAgc2V0VGV4dHVyZUlkeChpZHgpIHtcclxuICAgICAgICB0aGlzLl90ZXh0dXJlSWR4ID0gaWR4XHJcbiAgICAgICAgdGhpcy5zZXRWZXJ0c0RpcnR5KCk7XHJcbiAgICB9LFxyXG5cclxuICAgIF9nZXREZWZhdWx0TWF0ZXJpYWwoKSB7XHJcbiAgICAgICAgLy8g5LuOVGlsZWRNYXDlj5blvpfpu5jorqTnmoTmnZDotKhcclxuICAgICAgICByZXR1cm4gdGhpcy5fZ2V0VGlsZWRNYXAoKS5nZXRPYmplY3RNYXRlcmlhbCgpO1xyXG4gICAgfSxcclxuXHJcbiAgICBfdXBkYXRlTWF0ZXJpYWwoKSB7XHJcbiAgICAgICAgLy8gbWFrZSBzdXJlIG1hdGVyaWFsIGlzIGJlbG9uZyB0byBzZWxmLlxyXG4gICAgICAgIGxldCBtYXRlcmlhbCA9IHRoaXMuZ2V0TWF0ZXJpYWwoMCk7XHJcbiAgICAgICAgaWYgKG1hdGVyaWFsKSB7XHJcbiAgICAgICAgICAgIGlmIChtYXRlcmlhbC5nZXREZWZpbmUoJ1VTRV9URVhUVVJFJykgIT09IHVuZGVmaW5lZCkge1xyXG4gICAgICAgICAgICAgICAgbWF0ZXJpYWwuZGVmaW5lKCdVU0VfVEVYVFVSRScsIHRydWUpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIC8vIOaJi+WKqOiuvue9ruWTiOW4jOWAvO+8jOmBv+WFjeaXoOazleWQiOaJuVxyXG4gICAgICAgICAgICBtYXRlcmlhbC51cGRhdGVIYXNoKDk5OTk5OSk7XHJcblxyXG4gICAgICAgICAgICAvLyDlop7liqBXSVRIX0NPTE9S5a6P5a6a5LmJXHJcbiAgICAgICAgICAgIGxldCBub0NvbG9yID0gdGhpcy5pc05vQ29sb3IoKTtcclxuICAgICAgICAgICAgbWF0ZXJpYWwuZGVmaW5lKCdXSVRIX0NPTE9SJywgIW5vQ29sb3IpO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgY2MuQmxlbmRGdW5jLnByb3RvdHlwZS5fdXBkYXRlTWF0ZXJpYWwuY2FsbCh0aGlzKTtcclxuICAgIH0sXHJcblxyXG4gICAgX3Jlc2V0QXNzZW1ibGVyKCkge1xyXG4gICAgICAgIC8vIOS/ruaUuem7mOiupEFzc2VtYmxlclxyXG4gICAgICAgIGxldCBhc3NlbWJsZXIgPSB0aGlzLl9hc3NlbWJsZXIgPSBuZXcgVG1vQXNzZW1ibGVyKCk7XHJcbiAgICAgICAgYXNzZW1ibGVyLmluaXQodGhpcyk7XHJcblxyXG4gICAgICAgIHRoaXMuX3VwZGF0ZUNvbG9yKCk7XHJcbiAgICAgICAgdGhpcy5zZXRWZXJ0c0RpcnR5KCk7XHJcbiAgICB9LFxyXG5cclxuICAgIF9nZXRUaWxlZE1hcCgpIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5ub2RlLl90aWxlZE1hcDtcclxuICAgIH0sXHJcblxyXG4gICAgaXNOb0NvbG9yKCkge1xyXG4gICAgICAgIHJldHVybiB0aGlzLl9nZXRUaWxlZE1hcCgpLmlzTm9Db2xvcigpO1xyXG4gICAgfVxyXG59KTtcclxuIl19 +//------QC-SOURCE-SPLIT------ + + (function() { + var nodeEnv = typeof require !== 'undefined' && typeof process !== 'undefined'; + var __module = nodeEnv ? module : {exports:{}}; + var __filename = 'preview-scripts/assets/shop/script/shop.js'; var __require = nodeEnv ? function (request) { return cc.require(request); } : function (request) { @@ -26882,148 +16455,92 @@ cc._RF.pop(); }; function __define (exports, require, module) { if (!nodeEnv) {__quick_compile_project__.registerModule(__filename, module);}"use strict"; -cc._RF.push(module, '98309gPXUxEF6zBe9e75Knb', 'lq_const'); -// Script/lq_base/data/lq_const.ts +cc._RF.push(module, '48bfeZuYFZE2qmgxbW2IigB', 'shop'); +// shop/script/shop.ts -"use strict"; -Object.defineProperty(exports, "__esModule", { value: true }); -exports.LQConst = exports.LQOperateType = exports.LQLevelStatus = exports.LQAdErrStr = exports.LQCallAd = exports.LQCallBase = exports.LQAnalysisTag = exports.LQByteDanceType = exports.LQPlatformType = exports.LQHttpDataType = exports.LQHttpRequestType = exports.LQEasing = exports.LQCollideStatus = exports.LQFollowTargetMode = exports.LQCollideShape = exports.LQBulletEmitterStatus = exports.LQRecordStatus = void 0; -var Vec2 = cc.Vec2; -var LQRecordStatus; -(function (LQRecordStatus) { - LQRecordStatus[LQRecordStatus["Idle"] = 0] = "Idle"; - LQRecordStatus[LQRecordStatus["Start"] = 1] = "Start"; - LQRecordStatus[LQRecordStatus["Pause"] = 2] = "Pause"; -})(LQRecordStatus = exports.LQRecordStatus || (exports.LQRecordStatus = {})); -var LQBulletEmitterStatus; -(function (LQBulletEmitterStatus) { - LQBulletEmitterStatus[LQBulletEmitterStatus["Idle"] = 0] = "Idle"; - LQBulletEmitterStatus[LQBulletEmitterStatus["Start"] = 1] = "Start"; - LQBulletEmitterStatus[LQBulletEmitterStatus["End"] = 2] = "End"; -})(LQBulletEmitterStatus = exports.LQBulletEmitterStatus || (exports.LQBulletEmitterStatus = {})); -var LQCollideShape; -(function (LQCollideShape) { - LQCollideShape[LQCollideShape["Rect"] = 1] = "Rect"; - LQCollideShape[LQCollideShape["Circle"] = 2] = "Circle"; - LQCollideShape[LQCollideShape["Polygon"] = 3] = "Polygon"; -})(LQCollideShape = exports.LQCollideShape || (exports.LQCollideShape = {})); -var LQFollowTargetMode; -(function (LQFollowTargetMode) { - LQFollowTargetMode[LQFollowTargetMode["Always"] = 0] = "Always"; - LQFollowTargetMode[LQFollowTargetMode["Once"] = 1] = "Once"; - LQFollowTargetMode[LQFollowTargetMode["Pass"] = 2] = "Pass"; -})(LQFollowTargetMode = exports.LQFollowTargetMode || (exports.LQFollowTargetMode = {})); -var LQCollideStatus; -(function (LQCollideStatus) { - LQCollideStatus[LQCollideStatus["Idle"] = 0] = "Idle"; - LQCollideStatus[LQCollideStatus["Live"] = 1] = "Live"; -})(LQCollideStatus = exports.LQCollideStatus || (exports.LQCollideStatus = {})); -var LQEasing; -(function (LQEasing) { - LQEasing["BackIn"] = "backIn"; - LQEasing["BackOut"] = "backOut"; - LQEasing["quadIn"] = "quadIn"; - LQEasing["quadOut"] = "quadOut"; - LQEasing["quadInOut"] = "quadInOut"; - LQEasing["cubicIn"] = "cubicIn"; - LQEasing["expoOut"] = "expoOut"; -})(LQEasing = exports.LQEasing || (exports.LQEasing = {})); -var LQHttpRequestType; -(function (LQHttpRequestType) { - LQHttpRequestType["Get"] = "get"; - LQHttpRequestType["Post"] = "post"; -})(LQHttpRequestType = exports.LQHttpRequestType || (exports.LQHttpRequestType = {})); -var LQHttpDataType; -(function (LQHttpDataType) { - LQHttpDataType[LQHttpDataType["Text"] = 0] = "Text"; - LQHttpDataType[LQHttpDataType["Binary"] = 1] = "Binary"; -})(LQHttpDataType = exports.LQHttpDataType || (exports.LQHttpDataType = {})); -var LQPlatformType; -(function (LQPlatformType) { - LQPlatformType["unknown"] = "\u672A\u77E5\u5E73\u53F0"; - LQPlatformType["all"] = "\u5168\u5E73\u53F0"; - LQPlatformType["wx"] = "\u5FAE\u4FE1"; - LQPlatformType["tt"] = "\u5B57\u8282\u8DF3\u52A8"; - LQPlatformType["oppo"] = "oppo"; - LQPlatformType["vivo"] = "vivo"; - LQPlatformType["qq"] = "qq"; - LQPlatformType["baidu"] = "\u767E\u5EA6"; - LQPlatformType["kwaigame"] = "\u5FEB\u624B"; - LQPlatformType["android"] = "\u5B89\u5353"; - LQPlatformType["ios"] = "\u82F9\u679C"; - LQPlatformType["browser"] = "\u6D4F\u89C8\u5668"; -})(LQPlatformType = exports.LQPlatformType || (exports.LQPlatformType = {})); -var LQByteDanceType; -(function (LQByteDanceType) { - LQByteDanceType["tt"] = "\u5934\u6761"; - LQByteDanceType["tt_lite"] = "\u5934\u6761\u6781\u901F\u7248"; - LQByteDanceType["douyin"] = "\u6296\u97F3"; - LQByteDanceType["douyin_lite"] = "\u6296\u97F3\u6781\u901F\u7248"; - LQByteDanceType["ppx"] = "\u76AE\u76AE\u867E"; - LQByteDanceType["devtools"] = "\u5B57\u8282\u5F00\u53D1\u5DE5\u5177"; -})(LQByteDanceType = exports.LQByteDanceType || (exports.LQByteDanceType = {})); -var LQAnalysisTag; -(function (LQAnalysisTag) { - LQAnalysisTag["VideoComplete"] = "video_complete"; - LQAnalysisTag["VideoBegin"] = "video_begin"; - LQAnalysisTag["VideoInterrupt"] = "video_interrupt"; - LQAnalysisTag["InterstitialShow"] = "interstitial_show"; - LQAnalysisTag["BannerShow"] = "banner_show"; - LQAnalysisTag["ExportShow"] = "export_show"; - LQAnalysisTag["NativeShow"] = "native_show"; - LQAnalysisTag["NativeClick"] = "native_show"; -})(LQAnalysisTag = exports.LQAnalysisTag || (exports.LQAnalysisTag = {})); -var LQCallBase; -(function (LQCallBase) { - LQCallBase[LQCallBase["InitSdk"] = 0] = "InitSdk"; - LQCallBase[LQCallBase["KeepScreenOn"] = 1] = "KeepScreenOn"; - LQCallBase[LQCallBase["Vibrate"] = 2] = "Vibrate"; - LQCallBase[LQCallBase["GetVersionCode"] = 3] = "GetVersionCode"; - LQCallBase[LQCallBase["GetVersionName"] = 4] = "GetVersionName"; - LQCallBase[LQCallBase["OpenUrl"] = 5] = "OpenUrl"; - LQCallBase[LQCallBase["DeleteDir"] = 6] = "DeleteDir"; - LQCallBase[LQCallBase["DeleteFile"] = 7] = "DeleteFile"; -})(LQCallBase = exports.LQCallBase || (exports.LQCallBase = {})); -var LQCallAd; -(function (LQCallAd) { - LQCallAd[LQCallAd["ShowBanner"] = 0] = "ShowBanner"; - LQCallAd[LQCallAd["HideBanner"] = 1] = "HideBanner"; - LQCallAd[LQCallAd["ShowVideo"] = 2] = "ShowVideo"; - LQCallAd[LQCallAd["ShowInterstitial"] = 3] = "ShowInterstitial"; - LQCallAd[LQCallAd["ShowNative"] = 4] = "ShowNative"; - LQCallAd[LQCallAd["CacheAd"] = 5] = "CacheAd"; -})(LQCallAd = exports.LQCallAd || (exports.LQCallAd = {})); -var LQAdErrStr; -(function (LQAdErrStr) { - LQAdErrStr["Unsupported"] = "\u4E0D\u652F\u6301"; - LQAdErrStr["NoParameters"] = "\u6CA1\u6709\u914D\u7F6E\u53C2\u6570"; - LQAdErrStr["NoAD"] = "\u6682\u65E0\u5E7F\u544A"; - LQAdErrStr["VersionOld"] = "\u7248\u672C\u8FC7\u4F4E"; - LQAdErrStr["VideoInterrupt"] = "\u4E2D\u65AD\u64AD\u653E"; - LQAdErrStr["InstanceErr"] = "\u5B9E\u4F8B\u4E3A\u7A7A"; - LQAdErrStr["AlreadyExist"] = "\u5DF2\u7ECF\u5B58\u5728"; - LQAdErrStr["IntervalTooShort"] = "\u95F4\u9694\u592A\u77ED"; -})(LQAdErrStr = exports.LQAdErrStr || (exports.LQAdErrStr = {})); -var LQLevelStatus; -(function (LQLevelStatus) { - LQLevelStatus[LQLevelStatus["Begin"] = 0] = "Begin"; - LQLevelStatus[LQLevelStatus["Failed"] = 1] = "Failed"; - LQLevelStatus[LQLevelStatus["Complete"] = 2] = "Complete"; -})(LQLevelStatus = exports.LQLevelStatus || (exports.LQLevelStatus = {})); -var LQOperateType; -(function (LQOperateType) { - LQOperateType[LQOperateType["ClickNode"] = 0] = "ClickNode"; - LQOperateType[LQOperateType["ClickScreen"] = 1] = "ClickScreen"; - LQOperateType[LQOperateType["Move"] = 2] = "Move"; - LQOperateType[LQOperateType["Null"] = 3] = "Null"; -})(LQOperateType = exports.LQOperateType || (exports.LQOperateType = {})); -var LQConst = /** @class */ (function () { - function LQConst() { - } - LQConst.VEC_ZERO = Vec2.ZERO; - return LQConst; -}()); -exports.LQConst = LQConst; +"use strict"; +var __extends = (this && this.__extends) || (function () { + var extendStatics = function (d, b) { + extendStatics = Object.setPrototypeOf || + ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) || + function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; }; + return extendStatics(d, b); + }; + return function (d, b) { + extendStatics(d, b); + function __() { this.constructor = d; } + d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); + }; +})(); +var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) { + var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; + if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc); + else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; + return c > 3 && r && Object.defineProperty(target, key, r), r; +}; +Object.defineProperty(exports, "__esModule", { value: true }); +var _a = cc._decorator, ccclass = _a.ccclass, property = _a.property; +var NewClass = /** @class */ (function (_super) { + __extends(NewClass, _super); + function NewClass() { + var _this = _super !== null && _super.apply(this, arguments) || this; + //商店界面 + _this.shop = null; + //商品列表 + _this.itemList = null; + return _this; + // update (dt) {} + } + // onLoad () {} + NewClass.prototype.start = function () { + this.openShop(); + }; + //打开商店界面 + NewClass.prototype.openShop = function () { + // 商品数据数组 + var products = [ + { product_id: "gold_pack_1", name: "金币包1", price: 600, title: "3x2六档金币" }, + { product_id: "gold_pack_2", name: "金币包2", price: 3600, title: "" }, + { product_id: "gold_pack_3", name: "金币包3", price: 6800, title: "" }, + { product_id: "gold_pack_4", name: "金币包4", price: 12800, title: "" }, + { product_id: "gold_pack_5", name: "金币包5", price: 32800, title: "" }, + { product_id: "gold_pack_6", name: "金币包6", price: 64800, title: "" }, + { product_id: "unlimited_health_bundle_1", name: "无限体力组合包1", price: 1800, title: "3个横版礼包" }, + { product_id: "unlimited_health_bundle_2", name: "无限体力组合包2", price: 6600, title: "" } + ]; + for (var i = 1; i <= 8 && i < this.itemList.children.length; i++) { + var spriteComp = this.itemList.children[i].children[0].getComponent(cc.Sprite); + var price = this.itemList.children[i].children[1].getComponent(cc.Label); + var title = this.itemList.children[i].children[2].getComponent(cc.Label); + var product = products[i - 1]; + if (spriteComp && product) { + // TODO: 根据 product_id 或 name 设置 spriteComp.spriteFrame + } + if (price && product) { + price.string = (product.price / 100).toString() + "元"; + } + if (title && product) { + title.string = product.name; + } + } + }; + //关闭商店界面 + NewClass.prototype.closeShop = function () { + //销毁预制体 + this.shop.destroy(); + }; + __decorate([ + property(cc.Node) + ], NewClass.prototype, "shop", void 0); + __decorate([ + property(cc.Node) + ], NewClass.prototype, "itemList", void 0); + NewClass = __decorate([ + ccclass + ], NewClass); + return NewClass; +}(cc.Component)); +exports.default = NewClass; cc._RF.pop(); } @@ -27036,7 +16553,1168 @@ cc._RF.pop(); }); } })(); -//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImFzc2V0c1xcU2NyaXB0XFxscV9iYXNlXFxkYXRhXFxscV9jb25zdC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSxJQUFPLElBQUksR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDO0FBRXRCLElBQVksY0FFWDtBQUZELFdBQVksY0FBYztJQUN0QixtREFBSSxDQUFBO0lBQUUscURBQUssQ0FBQTtJQUFFLHFEQUFLLENBQUE7QUFDdEIsQ0FBQyxFQUZXLGNBQWMsR0FBZCxzQkFBYyxLQUFkLHNCQUFjLFFBRXpCO0FBRUQsSUFBWSxxQkFFWDtBQUZELFdBQVkscUJBQXFCO0lBQzdCLGlFQUFJLENBQUE7SUFBRSxtRUFBSyxDQUFBO0lBQUUsK0RBQUcsQ0FBQTtBQUNwQixDQUFDLEVBRlcscUJBQXFCLEdBQXJCLDZCQUFxQixLQUFyQiw2QkFBcUIsUUFFaEM7QUFFRCxJQUFZLGNBRVg7QUFGRCxXQUFZLGNBQWM7SUFDdEIsbURBQVEsQ0FBQTtJQUFFLHVEQUFNLENBQUE7SUFBRSx5REFBTyxDQUFBO0FBQzdCLENBQUMsRUFGVyxjQUFjLEdBQWQsc0JBQWMsS0FBZCxzQkFBYyxRQUV6QjtBQUVELElBQVksa0JBRVg7QUFGRCxXQUFZLGtCQUFrQjtJQUMxQiwrREFBTSxDQUFBO0lBQUUsMkRBQUksQ0FBQTtJQUFFLDJEQUFJLENBQUE7QUFDdEIsQ0FBQyxFQUZXLGtCQUFrQixHQUFsQiwwQkFBa0IsS0FBbEIsMEJBQWtCLFFBRTdCO0FBRUQsSUFBWSxlQUVYO0FBRkQsV0FBWSxlQUFlO0lBQ3ZCLHFEQUFJLENBQUE7SUFBRSxxREFBSSxDQUFBO0FBQ2QsQ0FBQyxFQUZXLGVBQWUsR0FBZix1QkFBZSxLQUFmLHVCQUFlLFFBRTFCO0FBRUQsSUFBWSxRQUdYO0FBSEQsV0FBWSxRQUFRO0lBQ2hCLDZCQUFpQixDQUFBO0lBQUUsK0JBQW1CLENBQUE7SUFBRSw2QkFBaUIsQ0FBQTtJQUN6RCwrQkFBbUIsQ0FBQTtJQUFFLG1D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O0lBQUUsaURBQUksQ0FBQTtBQUN0QyxDQUFDLEVBRlcsYUFBYSxHQUFiLHFCQUFhLEtBQWIscUJBQWEsUUFFeEI7QUFFRDtJQUFBO0lBRUEsQ0FBQztJQURpQixnQkFBUSxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUM7SUFDdkMsY0FBQztDQUZELEFBRUMsSUFBQTtBQUZZLDBCQUFPIiwiZmlsZSI6IiIsInNvdXJjZVJvb3QiOiIvIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IFZlYzIgPSBjYy5WZWMyO1xyXG5cclxuZXhwb3J0IGVudW0gTFFSZWNvcmRTdGF0dXMge1xyXG4gICAgSWRsZSwgU3RhcnQsIFBhdXNlXHJcbn1cclxuXHJcbmV4cG9ydCBlbnVtIExRQnVsbGV0RW1pdHRlclN0YXR1cyB7XHJcbiAgICBJZGxlLCBTdGFydCwgRW5kXHJcbn1cclxuXHJcbmV4cG9ydCBlbnVtIExRQ29sbGlkZVNoYXBlIHtcclxuICAgIFJlY3QgPSAxLCBDaXJjbGUsIFBvbHlnb25cclxufVxyXG5cclxuZXhwb3J0IGVudW0gTFFGb2xsb3dUYXJnZXRNb2RlIHtcclxuICAgIEFsd2F5cywgT25jZSwgUGFzc1xyXG59XHJcblxyXG5leHBvcnQgZW51bSBMUUNvbGxpZGVTdGF0dXMge1xyXG4gICAgSWRsZSwgTGl2ZVxyXG59XHJcblxyXG5leHBvcnQgZW51bSBMUUVhc2luZyB7XHJcbiAgICBCYWNrSW4gPSAnYmFja0luJywgQmFja091dCA9ICdiYWNrT3V0JywgcXVhZEluID0gJ3F1YWRJbicsXHJcbiAgICBxdWFkT3V0ID0gJ3F1YWRPdXQnLCBxdWFkSW5PdXQgPSAncXVhZEluT3V0JywgY3ViaWNJbiA9ICdjdWJpY0luJywgZXhwb091dCA9ICdleHBvT3V0J1xyXG59XHJcblxyXG5leHBvcnQgZW51bSBMUUh0dHBSZXF1ZXN0VHlwZSB7XHJcbiAgICBHZXQgPSAnZ2V0JywgUG9zdCA9ICdwb3N0J1xyXG59XHJcblxyXG5leHBvcnQgZW51bSBMUUh0dHBEYXRhVHlwZSB7XHJcbiAgICBUZXh0LCBCaW5hcnlcclxufVxyXG5cclxuZXhwb3J0IGVudW0gTFFQbGF0Zm9ybVR5cGUge1xyXG4gICAgdW5rbm93biA9ICfmnKrnn6XlubPlj7AnLCBhbGwgPSAn5YWo5bmz5Y+wJywgd3ggPSAn5b6u5L+hJywgdHQgPSAn5a2X6IqC6Lez5YqoJywgb3BwbyA9ICdvcHBvJywgdml2byA9ICd2aXZvJywgcXEgPSAncXEnLCBiYWlkdSA9ICfnmb7luqYnLCBrd2FpZ2FtZSA9ICflv6vmiYsnLCBhbmRyb2lkID0gJ+WuieWNkycsIGlvcyA9ICfoi7nmnpwnLCBicm93c2VyID0gJ+a1j+iniOWZqCdcclxufVxyXG5cclxuZXhwb3J0IGVudW0gTFFCeXRlRGFuY2VUeXBlIHtcclxuICAgIHR0ID0gJ+WktOadoScsIHR0X2xpdGUgPSAn5aS05p2h5p6B6YCf54mIJywgZG91eWluID0gJ+aKlumfsycsIGRvdXlpbl9saXRlID0gJ+aKlumfs+aegemAn+eJiCcsIHBweCA9ICfnmq7nmq7omb4nLCBkZXZ0b29scyA9ICflrZfoioLlvIDlj5Hlt6XlhbcnXHJcbn1cclxuXHJcbmV4cG9ydCBlbnVtIExRQW5hbHlzaXNUYWcge1xyXG4gICAgVmlkZW9Db21wbGV0ZSA9ICd2aWRlb19jb21wbGV0ZScsIFZpZGVvQmVnaW4gPSAndmlkZW9fYmVnaW4nLCBWaWRlb0ludGVycnVwdCA9ICd2aWRlb19pbnRlcnJ1cHQnLCBJbnRlcnN0aXRpYWxTaG93ID0gJ2ludGVyc3RpdGlhbF9zaG93JywgQmFubmVyU2hvdyA9ICdiYW5uZXJfc2hvdycsIEV4cG9ydFNob3cgPSAnZXhwb3J0X3Nob3cnLCBOYXRpdmVTaG93ID0gJ25hdGl2ZV9zaG93JywgTmF0aXZlQ2xpY2sgPSAnbmF0aXZlX3Nob3cnXHJcbn1cclxuXHJcbmV4cG9ydCBlbnVtIExRQ2FsbEJhc2Uge1xyXG4gICAgSW5pdFNkaywgS2VlcFNjcmVlbk9uLCBWaWJyYXRlLCBHZXRWZXJzaW9uQ29kZSwgR2V0VmVyc2lvbk5hbWUsIE9wZW5VcmwsIERlbGV0ZURpciwgRGVsZXRlRmlsZVxyXG59XHJcblxyXG5leHBvcnQgZW51bSBMUUNhbGxBZCB7XHJcbiAgICBTaG93QmFubmVyLCBIaWRlQmFubmVyLCBTaG93VmlkZW8sIFNob3dJbnRlcnN0aXRpYWwsIFNob3dOYXRpdmUsIENhY2hlQWRcclxufVxyXG5cclxuZXhwb3J0IGVudW0gTFFBZEVyclN0ciB7XHJcbiAgICBVbnN1cHBvcnRlZCA9ICfkuI3mlK/mjIEnLCBOb1BhcmFtZXRlcnMgPSAn5rKh5pyJ6YWN572u5Y+C5pWwJywgTm9BRCA9ICfmmoLml6Dlub/lkYonLCBWZXJzaW9uT2xkID0gJ+eJiOacrOi/h+S9jicsIFZpZGVvSW50ZXJydXB0ID0gJ+S4reaWreaSreaUvicsIEluc3RhbmNlRXJyID0gJ+WunuS+i+S4uuepuicsIEFscmVhZHlFeGlzdCA9ICflt7Lnu4/lrZjlnKgnLCBJbnRlcnZhbFRvb1Nob3J0ID0gJ+mXtOmalOWkquefrSdcclxufVxyXG5cclxuZXhwb3J0IGVudW0gTFFMZXZlbFN0YXR1cyB7XHJcbiAgICBCZWdpbiwgRmFpbGVkLCBDb21wbGV0ZVxyXG59XHJcblxyXG5leHBvcnQgZW51bSBMUU9wZXJhdGVUeXBlIHtcclxuICAgIENsaWNrTm9kZSwgQ2xpY2tTY3JlZW4sIE1vdmUsIE51bGxcclxufVxyXG5cclxuZXhwb3J0IGNsYXNzIExRQ29uc3Qge1xyXG4gICAgcHVibGljIHN0YXRpYyBWRUNfWkVSTyA9IFZlYzIuWkVSTztcclxufVxyXG5cclxuIl19 +//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImFzc2V0c1xcc2hvcFxcc2NyaXB0XFxzaG9wLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUVNLElBQUEsS0FBd0IsRUFBRSxDQUFDLFVBQVUsRUFBbkMsT0FBTyxhQUFBLEVBQUUsUUFBUSxjQUFrQixDQUFDO0FBRzVDO0lBQXNDLDRCQUFZO0lBQWxEO1FBQUEscUVBa0RDO1FBakRHLE1BQU07UUFFTixVQUFJLEdBQVksSUFBSSxDQUFDO1FBQ3JCLE1BQU07UUFFTixjQUFRLEdBQVksSUFBSSxDQUFDOztRQTJDekIsaUJBQWlCO0lBQ3JCLENBQUM7SUEzQ0csZUFBZTtJQUVmLHdCQUFLLEdBQUw7UUFDSSxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUM7SUFDcEIsQ0FBQztJQUNELFFBQVE7SUFDUiwyQkFBUSxHQUFSO1FBQ0ksU0FBUztRQUNULElBQU0sUUFBUSxHQUFHO1lBQ2IsRUFBRSxVQUFVLEVBQUUsYUFBYSxFQUFFLElBQUksRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFLEdBQUcsRUFBRSxLQUFLLEVBQUUsU0FBUyxFQUFFO1lBQ3pFLEVBQUUsVUFBVSxFQUFFLGFBQWEsRUFBRSxJQUFJLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUUsS0FBSyxFQUFFLEVBQUUsRUFBRTtZQUNuRSxFQUFFLFVBQVUsRUFBRSxhQUFhLEVBQUUsSUFBSSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUsSUFBSSxFQUFFLEtBQUssRUFBRSxFQUFFLEVBQUU7WUFDbkUsRUFBRSxVQUFVLEVBQUUsYUFBYSxFQUFFLElBQUksRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsRUFBRSxFQUFFO1lBQ3BFLEVBQUUsVUFBVSxFQUFFLGFBQWEsRUFBRSxJQUFJLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEVBQUUsRUFBRTtZQUNwRSxFQUFFLFVBQVUsRUFBRSxhQUFhLEVBQUUsSUFBSSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxFQUFFLEVBQUU7WUFDcEUsRUFBRSxVQUFVLEVBQUUsMkJBQTJCLEVBQUUsSUFBSSxFQUFFLFVBQVUsRUFBRSxLQUFLLEVBQUUsSUFBSSxFQUFFLEtBQUssRUFBRSxRQUFRLEVBQUU7WUFDM0YsRUFBRSxVQUFVLEVBQUUsMkJBQTJCLEVBQUUsSUFBSSxFQUFFLFVBQVUsRUFBRSxLQUFLLEVBQUUsSUFBSSxFQUFFLEtBQUssRUFBRSxFQUFFLEVBQUU7U0FDeEYsQ0FBQztRQUNGLEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLE1BQU0sRUFBRSxDQUFDLEVBQUUsRUFBRTtZQUM5RCxJQUFNLFVBQVUsR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsWUFBWSxDQUFDLEVBQUUsQ0FBQyxNQUFNLENBQUMsQ0FBQztZQUNqRixJQUFNLEtBQUssR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsWUFBWSxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsQ0FBQztZQUMzRSxJQUFNLEtBQUssR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsWUFBWSxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsQ0FBQztZQUMzRSxJQUFNLE9BQU8sR0FBRyxRQUFRLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO1lBQ2hDLElBQUksVUFBVSxJQUFJLE9BQU8sRUFBRTtnQkFDdkIsdURBQXVEO2FBQzFEO1lBQ0QsSUFBSSxLQUFLLElBQUksT0FBTyxFQUFFO2dCQUNsQixLQUFLLENBQUMsTUFBTSxHQUFHLENBQUMsT0FBTyxDQUFDLEtBQUssR0FBRyxHQUFHLENBQUMsQ0FBQyxRQUFRLEVBQUUsR0FBRyxHQUFHLENBQUM7YUFDekQ7WUFDRCxJQUFJLEtBQUssSUFBSSxPQUFPLEVBQUU7Z0JBQ2xCLEtBQUssQ0FBQyxNQUFNLEdBQUcsT0FBTyxDQUFDLElBQUksQ0FBQzthQUMvQjtTQUNKO0lBQ0wsQ0FBQztJQUdELFFBQVE7SUFDUiw0QkFBUyxHQUFUO1FBQ0ksT0FBTztRQUNQLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUM7SUFDeEIsQ0FBQztJQTVDRDtRQURDLFFBQVEsQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDOzBDQUNHO0lBR3JCO1FBREMsUUFBUSxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUM7OENBQ087SUFOUixRQUFRO1FBRDVCLE9BQU87T0FDYSxRQUFRLENBa0Q1QjtJQUFELGVBQUM7Q0FsREQsQUFrREMsQ0FsRHFDLEVBQUUsQ0FBQyxTQUFTLEdBa0RqRDtrQkFsRG9CLFFBQVEiLCJmaWxlIjoiIiwic291cmNlUm9vdCI6Ii8iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgTGlzdCBmcm9tIFwiLi4vLi4vU2NyaXB0L21vZHVsZS9SYW5rTGlzdC9MaXN0XCI7XHJcblxyXG5jb25zdCB7IGNjY2xhc3MsIHByb3BlcnR5IH0gPSBjYy5fZGVjb3JhdG9yO1xyXG5cclxuQGNjY2xhc3NcclxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgTmV3Q2xhc3MgZXh0ZW5kcyBjYy5Db21wb25lbnQge1xyXG4gICAgLy/llYblupfnlYzpnaJcclxuICAgIEBwcm9wZXJ0eShjYy5Ob2RlKVxyXG4gICAgc2hvcDogY2MuTm9kZSA9IG51bGw7XHJcbiAgICAvL+WVhuWTgeWIl+ihqFxyXG4gICAgQHByb3BlcnR5KGNjLk5vZGUpXHJcbiAgICBpdGVtTGlzdDogY2MuTm9kZSA9IG51bGw7XHJcbiAgICAvLyBvbkxvYWQgKCkge31cclxuXHJcbiAgICBzdGFydCgpIHtcclxuICAgICAgICB0aGlzLm9wZW5TaG9wKCk7XHJcbiAgICB9XHJcbiAgICAvL+aJk+W8gOWVhuW6l+eVjOmdolxyXG4gICAgb3BlblNob3AoKSB7XHJcbiAgICAgICAgLy8g5ZWG5ZOB5pWw5o2u5pWw57uEXHJcbiAgICAgICAgY29uc3QgcHJvZHVjdHMgPSBbXHJcbiAgICAgICAgICAgIHsgcHJvZHVjdF9pZDogXCJnb2xkX3BhY2tfMVwiLCBuYW1lOiBcIumHkeW4geWMhTFcIiwgcHJpY2U6IDYwMCwgdGl0bGU6IFwiM3gy5YWt5qGj6YeR5biBXCIgfSxcclxuICAgICAgICAgICAgeyBwcm9kdWN0X2lkOiBcImdvbGRfcGFja18yXCIsIG5hbWU6IFwi6YeR5biB5YyFMlwiLCBwcmljZTogMzYwMCwgdGl0bGU6IFwiXCIgfSxcclxuICAgICAgICAgICAgeyBwcm9kdWN0X2lkOiBcImdvbGRfcGFja18zXCIsIG5hbWU6IFwi6YeR5biB5YyFM1wiLCBwcmljZTogNjgwMCwgdGl0bGU6IFwiXCIgfSxcclxuICAgICAgICAgICAgeyBwcm9kdWN0X2lkOiBcImdvbGRfcGFja180XCIsIG5hbWU6IFwi6YeR5biB5YyFNFwiLCBwcmljZTogMTI4MDAsIHRpdGxlOiBcIlwiIH0sXHJcbiAgICAgICAgICAgIHsgcHJvZHVjdF9pZDogXCJnb2xkX3BhY2tfNVwiLCBuYW1lOiBcIumHkeW4geWMhTVcIiwgcHJpY2U6IDMyODAwLCB0aXRsZTogXCJcIiB9LFxyXG4gICAgICAgICAgICB7IHByb2R1Y3RfaWQ6IFwiZ29sZF9wYWNrXzZcIiwgbmFtZTogXCLph5HluIHljIU2XCIsIHByaWNlOiA2NDgwMCwgdGl0bGU6IFwiXCIgfSxcclxuICAgICAgICAgICAgeyBwcm9kdWN0X2lkOiBcInVubGltaXRlZF9oZWFsdGhfYnVuZGxlXzFcIiwgbmFtZTogXCLml6DpmZDkvZPlipvnu4TlkIjljIUxXCIsIHByaWNlOiAxODAwLCB0aXRsZTogXCIz5Liq5qiq54mI56S85YyFXCIgfSxcclxuICAgICAgICAgICAgeyBwcm9kdWN0X2lkOiBcInVubGltaXRlZF9oZWFsdGhfYnVuZGxlXzJcIiwgbmFtZTogXCLml6DpmZDkvZPlipvnu4TlkIjljIUyXCIsIHByaWNlOiA2NjAwLCB0aXRsZTogXCJcIiB9XHJcbiAgICAgICAgXTtcclxuICAgICAgICBmb3IgKGxldCBpID0gMTsgaSA8PSA4ICYmIGkgPCB0aGlzLml0ZW1MaXN0LmNoaWxkcmVuLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgICAgIGNvbnN0IHNwcml0ZUNvbXAgPSB0aGlzLml0ZW1MaXN0LmNoaWxkcmVuW2ldLmNoaWxkcmVuWzBdLmdldENvbXBvbmVudChjYy5TcHJpdGUpO1xyXG4gICAgICAgICAgICBjb25zdCBwcmljZSA9IHRoaXMuaXRlbUxpc3QuY2hpbGRyZW5baV0uY2hpbGRyZW5bMV0uZ2V0Q29tcG9uZW50KGNjLkxhYmVsKTtcclxuICAgICAgICAgICAgY29uc3QgdGl0bGUgPSB0aGlzLml0ZW1MaXN0LmNoaWxkcmVuW2ldLmNoaWxkcmVuWzJdLmdldENvbXBvbmVudChjYy5MYWJlbCk7XHJcbiAgICAgICAgICAgIGNvbnN0IHByb2R1Y3QgPSBwcm9kdWN0c1tpIC0gMV07XHJcbiAgICAgICAgICAgIGlmIChzcHJpdGVDb21wICYmIHByb2R1Y3QpIHtcclxuICAgICAgICAgICAgICAgIC8vIFRPRE86IOagueaNriBwcm9kdWN0X2lkIOaIliBuYW1lIOiuvue9riBzcHJpdGVDb21wLnNwcml0ZUZyYW1lXHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgaWYgKHByaWNlICYmIHByb2R1Y3QpIHtcclxuICAgICAgICAgICAgICAgIHByaWNlLnN0cmluZyA9IChwcm9kdWN0LnByaWNlIC8gMTAwKS50b1N0cmluZygpICsgXCLlhYNcIjtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBpZiAodGl0bGUgJiYgcHJvZHVjdCkge1xyXG4gICAgICAgICAgICAgICAgdGl0bGUuc3RyaW5nID0gcHJvZHVjdC5uYW1lO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuXHJcbiAgICAvL+WFs+mXreWVhuW6l+eVjOmdolxyXG4gICAgY2xvc2VTaG9wKCkge1xyXG4gICAgICAgIC8v6ZSA5q+B6aKE5Yi25L2TXHJcbiAgICAgICAgdGhpcy5zaG9wLmRlc3Ryb3koKTtcclxuICAgIH1cclxuXHJcbiAgICAvLyB1cGRhdGUgKGR0KSB7fVxyXG59XHJcbiJdfQ== +//------QC-SOURCE-SPLIT------ + + (function() { + var nodeEnv = typeof require !== 'undefined' && typeof process !== 'undefined'; + var __module = nodeEnv ? module : {exports:{}}; + var __filename = 'preview-scripts/assets/Script/lq_base/util/lq_pool_util.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, '984882e2dpD17LvCQnTDykE', 'lq_pool_util'); +// Script/lq_base/util/lq_pool_util.ts + +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.LQPoolUtil = void 0; +var Animation = cc.Animation; +var ParticleSystem = cc.ParticleSystem; +var instantiate = cc.instantiate; +var LQPoolUtil = /** @class */ (function () { + function LQPoolUtil() { + } + LQPoolUtil.reset_ani = function (node) { + var ani = node.getComponent(Animation); + if (ani) { + var clip = ani.currentClip ? ani.currentClip : ani.defaultClip; + if (!clip) { + return; + } + if (ani.playOnLoad && clip && clip.wrapMode === cc.WrapMode.Normal) { + ani.play(clip.name); + } + } + else { + var ani_1 = node.getComponent(sp.Skeleton); + if (ani_1 && !ani_1.loop) { + ani_1.setAnimation(0, ani_1.animation, false); + } + } + for (var i = 0; i < node.childrenCount; i++) { + var child = node.children[i]; + this.reset_ani(child); + } + }; + LQPoolUtil.recursion_stop_particle = function (node, obj) { + var p = node.getComponent(ParticleSystem); + if (p) { + p.stopSystem(); + obj.has = true; + p.node.opacity = 0; + } + for (var i = 0; i < node.childrenCount; i++) { + var child = node.children[i]; + this.recursion_stop_particle(child, obj); + } + }; + LQPoolUtil.recursion_reset_particle = function (node) { + if (!node.isValid) { + return; + } + var p = node.getComponent(ParticleSystem); + if (p) { + p.resetSystem(); + p.node.opacity = 255; + } + for (var i = 0; i < node.childrenCount; i++) { + var child = node.children[i]; + this.recursion_reset_particle(child); + } + }; + LQPoolUtil.get_node_from_pool = function (node_parent, prefab) { + var arr = this.any_pool[prefab.uuid]; + if (!arr) { + this.any_pool[prefab.uuid] = []; + arr = []; + } + var node = arr.pop(); + if (!node || !node.isValid) { + node = instantiate(prefab); + //@ts-ignore + node.recovery_uuid = prefab.uuid; + //@ts-ignore + node.is_from_pool = false; + node_parent.addChild(node); + } + else { + node.active = true; + //@ts-ignore + node.is_from_pool = true; + this.reset_ani(node); + } + return node; + }; + LQPoolUtil.check_pool_push = function (arr, node) { + for (var i = 0; i < arr.length; i++) { + if (arr[i] === node) { + //@ts-ignore + console.warn("\u6C60\u5B50\u4E0D\u80FD\u91CD\u590D\u6DFB\u52A0\u8282\u70B9", node.name, node.recovery_uuid); + return; + } + } + node.active = false; + arr.push(node); + }; + LQPoolUtil.push_node_to_pool = function (node) { + var _this = this; + //@ts-ignore + if (!node.recovery_uuid || !this.any_pool[node.recovery_uuid]) { + if (node.isValid) { + node.destroy(); + } + return; + } + var obj = { has: false }; + this.recursion_stop_particle(node, obj); + if (obj.has) { + var old_opacity_1 = node.opacity; + node.opacity = 0; + setTimeout(function () { + _this.recursion_reset_particle(node); + node.opacity = old_opacity_1; + //@ts-ignore + _this.check_pool_push(_this.any_pool[node.recovery_uuid], node); + }, 500); + } + else { + //@ts-ignore + this.check_pool_push(this.any_pool[node.recovery_uuid], node); + } + }; + LQPoolUtil.any_pool = {}; + return LQPoolUtil; +}()); +exports.LQPoolUtil = LQPoolUtil; + +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,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImFzc2V0c1xcU2NyaXB0XFxscV9iYXNlXFx1dGlsXFxscV9wb29sX3V0aWwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQ0EsSUFBTyxTQUFTLEdBQUcsRUFBRSxDQUFDLFNBQVMsQ0FBQztBQUNoQyxJQUFPLGNBQWMsR0FBRyxFQUFFLENBQUMsY0FBYyxDQUFDO0FBQzFDLElBQU8sV0FBVyxHQUFHLEVBQUUsQ0FBQyxXQUFXLENBQUM7QUFFcEM7SUFBQTtJQWdIQSxDQUFDO0lBN0drQixvQkFBUyxHQUF4QixVQUF5QixJQUFVO1FBQy9CLElBQUksR0FBRyxHQUFHLElBQUksQ0FBQyxZQUFZLENBQUMsU0FBUyxDQUFDLENBQUM7UUFDdkMsSUFBSSxHQUFHLEVBQUU7WUFDTCxJQUFJLElBQUksR0FBRyxHQUFHLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsV0FBVyxDQUFDO1lBQy9ELElBQUksQ0FBQyxJQUFJLEVBQUU7Z0JBQ1AsT0FBTzthQUNWO1lBQ0QsSUFBSSxHQUFHLENBQUMsVUFBVSxJQUFJLElBQUksSUFBSSxJQUFJLENBQUMsUUFBUSxLQUFLLEVBQUUsQ0FBQyxRQUFRLENBQUMsTUFBTSxFQUFFO2dCQUNoRSxHQUFHLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQzthQUN2QjtTQUNKO2FBQU07WUFDSCxJQUFJLEtBQUcsR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDLEVBQUUsQ0FBQyxRQUFRLENBQUMsQ0FBQztZQUN6QyxJQUFJLEtBQUcsSUFBSSxDQUFDLEtBQUcsQ0FBQyxJQUFJLEVBQUU7Z0JBQ2xCLEtBQUcsQ0FBQyxZQUFZLENBQUMsQ0FBQyxFQUFFLEtBQUcsQ0FBQyxTQUFTLEVBQUUsS0FBSyxDQUFDLENBQUM7YUFDN0M7U0FDSjtRQUNELEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMs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QyxFQUFFLEdBQUcsQ0FBQyxDQUFDO1NBQ1g7YUFBTTtZQUNILFlBQVk7WUFDWixJQUFJLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxFQUFFLElBQUksQ0FBQyxDQUFDO1NBQ2pFO0lBQ0wsQ0FBQztJQTlHYyxtQkFBUSxHQUE4QixFQUFFLENBQUM7SUErRzVELGlCQUFDO0NBaEhELEFBZ0hDLElBQUE7QUFoSFksZ0NBQVUiLCJmaWxlIjoiIiwic291cmNlUm9vdCI6Ii8iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgTm9kZSA9IGNjLk5vZGU7XHJcbmltcG9ydCBBbmltYXRpb24gPSBjYy5BbmltYXRpb247XHJcbmltcG9ydCBQYXJ0aWNsZVN5c3RlbSA9IGNjLlBhcnRpY2xlU3lzdGVtO1xyXG5pbXBvcnQgaW5zdGFudGlhdGUgPSBjYy5pbnN0YW50aWF0ZTtcclxuXHJcbmV4cG9ydCBjbGFzcyBMUVBvb2xVdGlsIHtcclxuICAgIHByaXZhdGUgc3RhdGljIGFueV9wb29sOiB7IFtrZXk6IHN0cmluZ106IE5vZGVbXSB9ID0ge307XHJcblxyXG4gICAgcHJpdmF0ZSBzdGF0aWMgcmVzZXRfYW5pKG5vZGU6IE5vZGUpIHtcclxuICAgICAgICBsZXQgYW5pID0gbm9kZS5nZXRDb21wb25lbnQoQW5pbWF0aW9uKTtcclxuICAgICAgICBpZiAoYW5pKSB7XHJcbiAgICAgICAgICAgIGxldCBjbGlwID0gYW5pLmN1cnJlbnRDbGlwID8gYW5pLmN1cnJlbnRDbGlwIDogYW5pLmRlZmF1bHRDbGlwO1xyXG4gICAgICAgICAgICBpZiAoIWNsaXApIHtcclxuICAgICAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBpZiAoYW5pLnBsYXlPbkxvYWQgJiYgY2xpcCAmJiBjbGlwLndyYXBNb2RlID09PSBjYy5XcmFwTW9kZS5Ob3JtYWwpIHtcclxuICAgICAgICAgICAgICAgIGFuaS5wbGF5KGNsaXAubmFtZSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICBsZXQgYW5pID0gbm9kZS5nZXRDb21wb25lbnQoc3AuU2tlbGV0b24pO1xyXG4gICAgICAgICAgICBpZiAoYW5pICYmICFhbmkubG9vcCkge1xyXG4gICAgICAgICAgICAgICAgYW5pLnNldEFuaW1hdGlvbigwLCBhbmkuYW5pbWF0aW9uLCBmYWxzZSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBub2RlLmNoaWxkcmVuQ291bnQ7IGkrKykge1xyXG4gICAgICAgICAgICBjb25zdCBjaGlsZCA9IG5vZGUuY2hpbGRyZW5baV07XHJcbiAgICAgICAgICAgIHRoaXMucmVzZXRfYW5pKGNoaWxkKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIHN0YXRpYyByZWN1cnNpb25fc3RvcF9wYXJ0aWNsZShub2RlOiBOb2RlLCBvYmo6IHsgaGFzOiBib29sZWFuIH0pIHtcclxuICAgICAgICBjb25zdCBwID0gbm9kZS5nZXRDb21wb25lbnQoUGFydGljbGVTeXN0ZW0pO1xyXG4gICAgICAgIGlmIChwKSB7XHJcbiAgICAgICAgICAgIHAuc3RvcFN5c3RlbSgpO1xyXG4gICAgICAgICAgICBvYmouaGFzID0gdHJ1ZTtcclxuICAgICAgICAgICAgcC5ub2RlLm9wYWNpdHkgPSAwO1xyXG4gICAgICAgIH1cclxuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IG5vZGUuY2hpbGRyZW5Db3VudDsgaSsrKSB7XHJcbiAgICAgICAgICAgIGNvbnN0IGNoaWxkID0gbm9kZS5jaGlsZHJlbltpXTtcclxuICAgICAgICAgICAgdGhpcy5yZWN1cnNpb25fc3RvcF9wYXJ0aWNsZShjaGlsZCwgb2JqKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIHN0YXRpYyByZWN1cnNpb25fcmVzZXRfcGFydGljbGUobm9kZTogTm9kZSkge1xyXG4gICAgICAgIGlmICghbm9kZS5pc1ZhbGlkKSB7XHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcbiAgICAgICAgY29uc3QgcCA9IG5vZGUuZ2V0Q29tcG9uZW50KFBhcnRpY2xlU3lzdGVtKTtcclxuICAgICAgICBpZiAocCkge1xyXG4gICAgICAgICAgICBwLnJlc2V0U3lzdGVtKCk7XHJcbiAgICAgICAgICAgIHAubm9kZS5vcGFjaXR5ID0gMjU1O1xyXG4gICAgICAgIH1cclxuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IG5vZGUuY2hpbGRyZW5Db3VudDsgaSsrKSB7XHJcbiAgICAgICAgICAgIGNvbnN0IGNoaWxkID0gbm9kZS5jaGlsZHJlbltpXTtcclxuICAgICAgICAgICAgdGhpcy5yZWN1cnNpb25fcmVzZXRfcGFydGljbGUoY2hpbGQpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgc3RhdGljIGdldF9ub2RlX2Zyb21fcG9vbChub2RlX3BhcmVudDogTm9kZSwgcHJlZmFiOiBOb2RlKSB7XHJcbiAgICAgICAgbGV0IGFyciA9IHRoaXMuYW55X3Bvb2xbcHJlZmFiLnV1aWRdO1xyXG4gICAgICAgIGlmICghYXJyKSB7XHJcbiAgICAgICAgICAgIHRoaXMuYW55X3Bvb2xbcHJlZmFiLnV1aWRdID0gW107XHJcbiAgICAgICAgICAgIGFyciA9IFtdO1xyXG4gICAgICAgIH1cclxuICAgICAgICBsZXQgbm9kZSA9IGFyci5wb3AoKTtcclxuICAgICAgICBpZiAoIW5vZGUgfHwgIW5vZGUuaXNWYWxpZCkge1xyXG4gICAgICAgICAgICBub2RlID0gaW5zdGFudGlhdGUocHJlZmFiKTtcclxuICAgICAgICAgICAgLy9AdHMtaWdub3JlXHJcbiAgICAgICAgICAgIG5vZGUucmVjb3ZlcnlfdXVpZCA9IHByZWZhYi51dWlkO1xyXG4gICAgICAgICAgICAvL0B0cy1pZ25vcmVcclxuICAgICAgICAgICAgbm9kZS5pc19mcm9tX3Bvb2wgPSBmYWxzZTtcclxuICAgICAgICAgICAgbm9kZV9wYXJlbnQuYWRkQ2hpbGQobm9kZSk7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgbm9kZS5hY3RpdmUgPSB0cnVlO1xyXG4gICAgICAgICAgICAvL0B0cy1pZ25vcmVcclxuICAgICAgICAgICAgbm9kZS5pc19mcm9tX3Bvb2wgPSB0cnVlO1xyXG4gICAgICAgICAgICB0aGlzLnJlc2V0X2FuaShub2RlKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIG5vZGU7XHJcbiAgICB9XHJcblxyXG4gICAgcHJpdmF0ZSBzdGF0aWMgY2hlY2tfcG9vbF9wdXNoKGFycjogTm9kZVtdLCBub2RlOiBOb2RlKSB7XHJcbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBhcnIubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICAgICAgaWYgKGFycltpXSA9PT0gbm9kZSkge1xyXG4gICAgICAgICAgICAgICAgLy9AdHMtaWdub3JlXHJcbiAgICAgICAgICAgICAgICBjb25zb2xlLndhcm4oYOaxoOWtkOS4jeiDvemHjeWkjea3u+WKoOiKgueCuWAsIG5vZGUubmFtZSwgbm9kZS5yZWNvdmVyeV91dWlkKTtcclxuICAgICAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICBub2RlLmFjdGl2ZSA9IGZhbHNlO1xyXG4gICAgICAgIGFyci5wdXNoKG5vZGUpO1xyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyBzdGF0aWMgcHVzaF9ub2RlX3RvX3Bvb2wobm9kZTogTm9kZSkge1xyXG4gICAgICAgIC8vQHRzLWlnbm9yZVxyXG4gICAgICAgIGlmICghbm9kZS5yZWNvdmVyeV91dWlkIHx8ICF0aGlzLmFueV9wb29sW25vZGUucmVjb3ZlcnlfdXVpZF0pIHtcclxuICAgICAgICAgICAgaWYgKG5vZGUuaXNWYWxpZCkge1xyXG4gICAgICAgICAgICAgICAgbm9kZS5kZXN0cm95KCk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuICAgICAgICBjb25zdCBvYmo6IHsgaGFzOiBib29sZWFuIH0gPSB7aGFzOiBmYWxzZX07XHJcbiAgICAgICAgdGhpcy5yZWN1cnNpb25fc3RvcF9wYXJ0aWNsZShub2RlLCBvYmopO1xyXG4gICAgICAgIGlmIChvYmouaGFzKSB7XHJcbiAgICAgICAgICAgIGxldCBvbGRfb3BhY2l0eSA9IG5vZGUub3BhY2l0eTtcclxuICAgICAgICAgICAgbm9kZS5vcGFjaXR5ID0gMDtcclxuICAgICAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLnJlY3Vyc2lvbl9yZXNldF9wYXJ0aWNsZShub2RlKTtcclxuICAgICAgICAgICAgICAgIG5vZGUub3BhY2l0eSA9IG9sZF9vcGFjaXR5O1xyXG4gICAgICAgICAgICAgICAgLy9AdHMtaWdub3JlXHJcbiAgICAgICAgICAgICAgICB0aGlzLmNoZWNrX3Bvb2xfcHVzaCh0aGlzLmFueV9wb29sW25vZGUucmVjb3ZlcnlfdXVpZF0sIG5vZGUpO1xyXG4gICAgICAgICAgICB9LCA1MDApO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIC8vQHRzLWlnbm9yZVxyXG4gICAgICAgICAgICB0aGlzLmNoZWNrX3Bvb2xfcHVzaCh0aGlzLmFueV9wb29sW25vZGUucmVjb3ZlcnlfdXVpZF0sIG5vZGUpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxufSJdfQ== +//------QC-SOURCE-SPLIT------ + + (function() { + var nodeEnv = typeof require !== 'undefined' && typeof process !== 'undefined'; + var __module = nodeEnv ? module : {exports:{}}; + var __filename = 'preview-scripts/assets/Script/lq_base/util/lq_base_util.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, 'cd21fuTZY5LOoiXtN66R7wx', 'lq_base_util'); +// Script/lq_base/util/lq_base_util.ts + +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.LQBaseUtil = void 0; +var lq_platform_util_1 = require("./lq_platform_util"); +var lq_const_1 = require("../data/lq_const"); +var view = cc.view; +var LQBaseUtil = /** @class */ (function () { + function LQBaseUtil() { + } + // public static readonly unit_arr = ['K', 'M', 'B', 'T']; + LQBaseUtil.has_value = function (arr, v) { + var has = false; + for (var i = 0; i < arr.length; i++) { + if (arr[i] === v) { + has = true; + break; + } + } + return has; + }; + LQBaseUtil.get_value_by_duration = function (percent, timeline) { + if (timeline.length === 0) { + return 1; + } + var end_index = -1; + for (var i = 1; i < timeline.length; i++) { + if (timeline[i].x > percent) { + end_index = i; + break; + } + } + if (end_index === -1) { + return timeline[timeline.length - 1].y; + } + var start_index = end_index - 1; + return timeline[start_index].y + (timeline[end_index].y - timeline[start_index].y) * ((percent - timeline[start_index].x) / (timeline[end_index].x - timeline[start_index].x)); + }; + LQBaseUtil.number_to_counting = function (num) { + if (num < 1000) { + return num + ''; + } + else if (num < 1000000) { + return Math.floor(num / 1000) + 'K'; + } + else if (num < 1000000000) { + return Math.floor(num / 1000000) + 'M'; + } + else if (num < 1000000000000) { + return Math.floor(num / 1000000000) + 'B'; + } + else if (num < 1000000000000000) { + return Math.floor(num / 1000000000000) + 'T'; + } + return Math.floor(num / 1000000000000) + 'T'; + }; + LQBaseUtil.number_to_time = function (time) { + var t = Math.floor(time / (60 * 60)); + time = time - t * 60 * 60; + var hour = t.toString(); + var min = Math.floor(time / 60).toString(); + var sec = (time % 60).toString(); + if (hour.length === 1) { + hour = '0' + hour; + } + if (min.length === 1) { + min = '0' + min; + } + if (sec.length === 1) { + sec = '0' + sec; + } + return [hour, min, sec]; + }; + LQBaseUtil.set_normal_angle = function (angle) { + while (angle > 360) { + angle -= 360; + } + while (angle < 0) { + angle += 360; + } + return angle; + }; + LQBaseUtil.compare_version = function (v1, v2) { + var v1_arr = v1.split('.'); + var v2_arr = v2.split('.'); + var len = Math.max(v1_arr.length, v2_arr.length); + while (v1_arr.length < len) { + v1_arr.push('0'); + } + while (v2_arr.length < len) { + v2_arr.push('0'); + } + for (var i = 0; i < len; i++) { + var num1 = parseInt(v1_arr[i]); + var num2 = parseInt(v2_arr[i]); + if (num1 > num2) { + return 1; + } + else if (num1 < num2) { + return -1; + } + } + return 0; + }; + LQBaseUtil.is_today = function (date) { + var d1 = new Date(); + var d2; + if (date && date !== '') { + d2 = new Date(date); + } + else { + d2 = new Date(); + d2.setDate(d2.getDate() - 1); + } + return d1.getFullYear() === d2.getFullYear() && d1.getMonth() === d2.getMonth() && d1.getDate() === d2.getDate(); + }; + LQBaseUtil.is_safe_area = function () { + var cb = function (width, height) { + return (width === 2280 && height === 1080) || (width === 1792 && height === 828) || (width === 2436 && height === 1125) || (width === 2688 && height === 1242); + }; + switch (lq_platform_util_1.LQPlatformUtil.get_platform()) { + case lq_const_1.LQPlatformType.baidu: + var sys_info_swan = swan.getSystemInfoSync(); + return cb(sys_info_swan.pixelRatio * sys_info_swan.screenWidth, sys_info_swan.pixelRatio * sys_info_swan.screenHeight); + case lq_const_1.LQPlatformType.qq: + var sys_info_qq = qq.getSystemInfoSync(); + return cb(sys_info_qq.pixelRatio * sys_info_qq.screenWidth, sys_info_qq.pixelRatio * sys_info_qq.screenHeight); + case lq_const_1.LQPlatformType.tt: + var sys_info_tt = tt.getSystemInfoSync(); + return cb(sys_info_tt.pixelRatio * sys_info_tt.screenWidth, sys_info_tt.pixelRatio * sys_info_tt.screenHeight); + case lq_const_1.LQPlatformType.oppo: + case lq_const_1.LQPlatformType.vivo: + var sys_info_vivo = qg.getSystemInfoSync(); + return cb(sys_info_vivo.pixelRatio * sys_info_vivo.screenWidth, sys_info_vivo.pixelRatio * sys_info_vivo.screenHeight); + case lq_const_1.LQPlatformType.wx: + var sys_info_wx = wx.getSystemInfoSync(); + return cb(sys_info_wx.pixelRatio * sys_info_wx.screenWidth, sys_info_wx.pixelRatio * sys_info_wx.screenHeight); + case lq_const_1.LQPlatformType.android: + break; + case lq_const_1.LQPlatformType.ios: + var size = view.getFrameSize(); + return cb(size.width, size.height); + } + return false; + }; + LQBaseUtil.deep_clone = function (obj) { + if (typeof obj !== 'object') { + return obj; + } + var new_obj = (obj instanceof Array ? [] : {}); + for (var key in obj) { + if (typeof obj[key] === 'object') { + new_obj[key] = this.deep_clone(obj[key]); + } + else { + new_obj[key] = obj[key]; + } + } + return new_obj; + }; + return LQBaseUtil; +}()); +exports.LQBaseUtil = LQBaseUtil; + +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,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImFzc2V0c1xcU2NyaXB0XFxscV9iYXNlXFx1dGlsXFxscV9iYXNlX3V0aWwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsdURBQWtEO0FBQ2xELDZDQUFnRDtBQUNoRCxJQUFPLElBQUksR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDO0FBR3RCO0lBQUE7SUE0SkEsQ0FBQztJQTNKRywwREFBMEQ7SUFFNUMsb0JBQVMsR0FBdkIsVUFBMkIsR0FBUSxFQUFFLENBQUk7UUFDckMsSUFBSSxHQUFHLEdBQUcsS0FBSyxDQUFDO1FBQ2hCLEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxHQUFHLENBQUMsTUFBTSxFQUFFLENBQUMsRUFBRSxFQUFFO1lBQ2pDLElBQUksR0FBRyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsRUFBRTtnQkFDZCxHQUFHLEdBQUcsSUFBSSxDQUFDO2dCQUNYLE1BQU07YUFDVDtTQUNKO1FBQ0QsT0FBTyxHQUFHLENBQUM7SUFDZixDQUFDO0lBRWEsZ0NBQXFCLEdBQW5DLFVBQW9DLE9BQWUsRUFBRSxRQUFnQjtRQUNqRSxJQUFJLFFBQVEsQ0FBQyxNQUFNLEtBQUssQ0FBQyxFQUFFO1lBQ3ZCLE9BQU8sQ0FBQyxDQUFDO1NBQ1o7UUFDRCxJQUFJLFNBQVMsR0FBRyxDQUFDLENBQUMsQ0FBQztRQUNuQixLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsUUFBUSxDQUFDLE1BQU0sRUFBRSxDQUFDLEVBQUUsRUFBRTtZQUN0QyxJQUFJLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsT0FBTyxFQUFFO2dCQUN6QixTQUFTLEdBQUcsQ0FBQyxDQUFDO2dCQUNkLE1BQU07YUFDVDtTQUNKO1FBQ0QsSUFBSSxTQUFTLEtBQUssQ0FBQyxDQUFDLEVBQUU7WUFDbEIsT0FBTyxRQUFRLENBQUMsUUFBUSxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7U0FDMUM7UUFDRCxJQUFNLFdBQVcsR0FBRyxTQUFTLEdBQUcsQ0FBQyxDQUFDO1FBQ2xDLE9BQU8sUUFBUSxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLFFBQVEsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLEdBQUcsUUFBUSxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxPQUFPLEdBQUcsUUFBUSxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsUUFBUSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsR0FBRyxRQUFRLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUNuTCxDQUFDO0lBRWEsNkJBQWtCLEdBQWhDLFVBQWlDLEdBQVc7UUFDeEMsSUFBSSxHQUFHLEdBQUcsSUFBSSxFQUFFO1lBQ1osT0FBTyxHQUFHLEdBQUcsRUFBRSxDQUFDO1NBQ25CO2FBQU0sSUFBSSxHQUFHLEdBQUcsT0FBTyxFQUFFO1lBQ3RCLE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQyxHQUFHLEdBQUcsSUFBSSxDQUFDLEdBQUcsR0FBRyxDQUFDO1NBQ3ZDO2FBQU0sSUFBSSxHQUFHLEdBQUcsVUFBVSxFQUFFO1lBQ3pCLE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQyxHQUFHLEdBQUcsT0FBTyxDQUFDLEdBQUcsR0FBRyxDQUFDO1NBQzFDO2FBQU0sSUFBSSxHQUFHLEdBQUcsYUFBYSxFQUFFO1lBQzVCLE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQyxHQUFHLEdBQUcsVUFBVSxDQUFDLEdBQUcsR0FBRyxDQUFDO1NBQzdDO2FBQU0sSUFBSSxHQUFHLEdBQUcsZ0JBQWdCLEVBQUU7WUFDL0IsT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsR0FBRyxhQUFhLENBQUMsR0FBRyxHQUFHLENBQUM7U0FDaEQ7UUFDRCxPQUFPLElBQUksQ0FBQyxLQUFLLENBQUMsR0FBRyxHQUFHLGFBQWEsQ0FBQyxHQUFHLEdBQUcsQ0FBQztJQUNqRCxDQUFDO0lBRWEseUJBQWMsR0FBNUIsVUFBNkIsSUFBWTtRQUNyQyxJQUFNLENBQUMsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksR0FBRyxDQUFDLEVBQUUsR0FBRyxFQUFFLENBQUMsQ0FBQyxDQUFDO1FBQ3ZDLElBQUksR0FBRyxJQUFJLEdBQUcsQ0FBQyxHQUFHLEVBQUUsR0FBRyxFQUFFLENBQUM7UUFDMUIsSUFBSSxJQUFJLEdBQUcsQ0FBQyxDQUFDLFFBQVEsRUFBRSxDQUFDO1FBQ3hCLElBQUksR0FBRyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxHQUFHLEVBQUUsQ0FBQyxDQUFDLFFBQVEsRUFBRSxDQUFDO1FBQzNDLElBQUksR0FBRyxHQUFHLENBQUMsSUFBSSxHQUFHLEVBQUUsQ0FBQyxDQUFDLFFBQVEsRUFBRSxDQUFDO1FBRWpDLElBQUksSUFBSSxDQUFDLE1BQU0sS0FBSyxDQUFDLEVBQUU7WUFDbkIsSUFBSSxHQUFHLEdBQUcsR0FBRyxJQUFJLENBQUM7U0FDckI7UUFDRCxJQUFJLEdBQUcsQ0FBQyxNQUFNLEtBQUssQ0FBQyxFQUFFO1lBQ2xCLEdBQUcsR0FBRyxHQUFHLEdBQUcsR0FBRyxDQUFDO1NBQ25CO1FBQ0QsSUFBSSxHQUFHLENBQUMsTUFBTSxLQUFLLENBQUMsRUFBRTtZQUNsQixHQUFHLEdBQUcsR0FBRyxHQUFHLEdBQUcsQ0FBQztTQUNuQjtRQUNELE9BQU8sQ0FBQyxJQUFJLEVBQUUsR0FBRyxFQUFFLEdBQUcsQ0FBQyxDQUFDO0lBQzVCLENBQUM7SUFFYSwyQkFBZ0IsR0FBOUIsVUFBK0IsS0FBYTtRQUN4QyxPQUFPLEtBQUssR0FBRyxHQUFHLEVBQUU7WUFDaEIsS0FBSyxJQUFJLEdBQUcsQ0FBQztTQUNoQjtRQUNELE9BQU8sS0FBSyxHQUFHLENBQUMsRUFBRTtZQUNkLEtBQUssSUFBSSxHQUFHLENBQUM7U0FDaEI7UUFDRCxPQUFPLEtBQUssQ0FBQztJQUNqQixDQUFDO0lBRWEsMEJBQWUsR0FBN0IsVUFBOEIsRUFBVSxFQUFFLEVBQVU7UUFDaEQsSUFBSSxNQUFNLEdBQUcsRUFBRSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUMzQixJQUFJLE1BQU0sR0FBRyxFQUFFLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQzNCLElBQU0sR0FBRyxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLE1BQU0sRUFBRSxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUM7UUFFbkQsT0FBTyxNQUFNLENBQUMsTUFBTSxHQUFHLEdBQUcsRUFBRTtZQUN4QixNQUFNLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1NBQ3BCO1FBQ0QsT0FBTyxNQUFNLENBQUMsTUFBTSxHQUFHLEdBQUcsRUFBRTtZQUN4QixNQUFNLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1NBQ3BCO1FBQ0QsS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLEdBQUcsRUFBRSxDQUFDLEVBQUUsRUFBRTtZQUMxQixJQUFNLElBQUksR0FBRyxRQUFRLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDakMsSUFBTSxJQUFJLEdBQUcsUUFBUSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBRWpDLElBQUksSUFBSSxHQUFHLElBQUksRUFBRTtnQkFDYixPQUFPLENBQUMsQ0FBQzthQUNaO2lCQUFNLElBQUksSUFBSSxHQUFHLElBQUksRUFBRTtnQkFDcEIsT0FBTyxDQUFDLENBQUMsQ0FBQzthQUNiO1NBQ0o7UUFDRCxPQUFPLENBQUMsQ0FBQztJQUNiLENBQUM7SUFFYSxtQkFBUSxHQUF0QixVQUF1QixJQUFZO1FBQy9CLElBQU0sRUFBRSxHQUFHLElBQUksSUFBSSxFQUFFLENBQUM7UUFDdEIsSUFBSSxFQUFFLENBQUM7UUFDUCxJQUFJLElBQUksSUFBSSxJQUFJLEtBQUssRUFBRSxFQUFFO1lBQ3JCLEVBQUUsR0FBRyxJQUFJLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztTQUN2QjthQUFNO1lBQ0gsRUFBRSxHQUFHLElBQUksSUFBSSxFQUFFLENBQUM7WUFDaEIsRUFBRSxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUMsT0FBTyxFQUFFLEdBQUcsQ0FBQyxDQUFDLENBQUM7U0FDaEM7UUFDRCxPQUFPLEVBQUUsQ0FBQyxXQUFXLEVBQUUsS0FBSyxFQUFFLENBQUMsV0FBVyxFQUFFLElBQUksRUFBRSxDQUFDLFFBQVEsRUFBRSxLQUFLLEVBQUUsQ0FBQyxRQUFRLEVBQUUsSUFBSSxFQUFFLENBQUMsT0FBTyxFQUFFLEtBQUssRUFBRSxDQUFDLE9BQU8sRUFBRSxDQUFDO0lBQ3JILENBQUM7SUFFYSx1QkFBWSxHQUExQjtRQUNJLElBQU0sRUFBRSxHQUFHLFVBQUMsS0FBYSxFQUFFLE1BQWM7WUFDckMsT0FBTyxDQUFDLEtBQUssS0FBSyxJQUFJLElBQUksTUFBTSxLQUFLLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxLQUFLLElBQUksSUFBSSxNQUFNLEtBQUssR0FBRyxDQUFDLElBQUksQ0FBQyxLQUFLLEtBQUssSUFBSSxJQUFJLE1BQU0sS0FBSyxJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssS0FBSyxJQUFJLElBQUksTUFBTSxLQUFLLElBQUksQ0FBQyxDQUFDO1FBQ25LLENBQUMsQ0FBQztRQUNGLFFBQVEsaUNBQWMsQ0FBQyxZQUFZLEVBQUUsRUFBRTtZQUNuQyxLQUFLLHlCQUFjLENBQUMsS0FBSztnQkFDckIsSUFBTSxhQUFhLEdBQUcsSUFBSSxDQUFDLGlCQUFpQixFQUFFLENBQUM7Z0JBQy9DLE9BQU8sRUFBRSxDQUFDLGFBQWEsQ0FBQyxVQUFVLEdBQUcsYUFBYSxDQUFDLFdBQVcsRUFBRSxhQUFhLENBQUMsVUFBVSxHQUFHLGFBQWEsQ0FBQyxZQUFZLENBQUMsQ0FBQztZQUMzSCxLQUFLLHlCQUFjLENBQUMsRUFBRTtnQkFDbEIsSUFBTSxXQUFXLEdBQUcsRUFBRSxDQUFDLGlCQUFpQixFQUFFLENBQUM7Z0JBQzNDLE9BQU8sRUFBRSxDQUFDLFdBQVcsQ0FBQyxVQUFVLEdBQUcsV0FBVyxDQUFDLFdBQVcsRUFBRSxXQUFXLENBQUMsVUFBVSxHQUFHLFdBQVcsQ0FBQyxZQUFZLENBQUMsQ0FBQztZQUNuSCxLQUFLLHlCQUFjLENBQUMsRUFBRTtnQkFDbEIsSUFBTSxXQUFXLEdBQUcsRUFBRSxDQUFDLGlCQUFpQixFQUFFLENBQUM7Z0JBQzNDLE9BQU8sRUFBRSxDQUFDLFdBQVcsQ0FBQyxVQUFVLEdBQUcsV0FBVyxDQUFDLFdBQVcsRUFBRSxXQUFXLENBQUMsVUFBVSxHQUFHLFdBQVcsQ0FBQyxZQUFZLENBQUMsQ0FBQztZQUNuSCxLQUFLLHlCQUFjLENBQUMsSUFBSSxDQUFDO1lBQ3pCLEtBQUsseUJBQWMsQ0FBQyxJQUFJO2dCQUNwQixJQUFNLGFBQWEsR0FBRyxFQUFFLENBQUMsaUJBQWlCLEVBQUUsQ0FBQztnQkFDN0MsT0FBTyxFQUFFLENBQUMsYUFBYSxDQUFDLFVBQVUsR0FBRyxhQUFhLENBQUMsV0FBVyxFQUFFLGFBQWEsQ0FBQyxVQUFVLEdBQUcsYUFBYSxDQUFDLFlBQVksQ0FBQyxDQUFDO1lBQzNILEtBQUsseUJBQWMsQ0FBQyxFQUFFO2dCQUNsQixJQUFNLFdBQVcsR0FBRyxFQUFFLENBQUMsaUJBQWlCLEVBQUUsQ0FBQztnQkFDM0MsT0FBTyxFQUFFLENBQUMsV0FBVyxDQUFDLFVBQVUsR0FBRyxXQUFXLENBQUMsV0FBVyxFQUFFLFdBQVcsQ0FBQyxVQUFVLEdBQUcsV0FBVyxDQUFDLFlBQVksQ0FBQyxDQUFDO1lBQ25ILEtBQUsseUJBQWMsQ0FBQyxPQUFPO2dCQUN2QixNQUFNO1lBQ1YsS0FBSyx5QkFBYyxDQUFDLEdBQUc7Z0JBQ25CLElBQUksSUFBSSxHQUFHLElBQUksQ0FBQyxZQUFZLEVBQUUsQ0FBQztnQkFDL0IsT0FBTyxFQUFFLENBQUMsSUFBSSxDQUFDLEtBQUssRUFBRSxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUM7U0FDMUM7UUFDRCxPQUFPLEtBQUssQ0FBQztJQUNqQixDQUFDO0lBRWEscUJBQVUsR0FBeEIsVUFBeUIsR0FBUTtRQUM3QixJQUFJLE9BQU8sR0FBRyxLQUFLLFFBQVEsRUFBRTtZQUN6QixPQUFPLEdBQUcsQ0FBQztTQUNkO1FBQ0QsSUFBSSxPQUFPLEdBQUcsQ0FBQyxHQUFHLFlBQVksS0FBSyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBUSxDQUFDO1FBQ3RELEtBQUssSUFBSSxHQUFHLElBQUksR0FBRyxFQUFFO1lBQ2pCLElBQUksT0FBTyxHQUFHLENBQUMsR0FBRyxDQUFDLEtBQUssUUFBUSxFQUFFO2dCQUM5QixPQUFPLENBQUMsR0FBRyxDQUFDLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQzthQUM1QztpQkFBTTtnQkFDSCxPQUFPLENBQUMsR0FBRyxDQUFDLEdBQUcsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDO2FBQzNCO1NBQ0o7UUFDRCxPQUFPLE9BQU8sQ0FBQztJQUNuQixDQUFDO0lBQ0wsaUJBQUM7QUFBRCxDQTVKQSxBQTRKQyxJQUFBO0FBNUpZLGdDQUFVIiwiZmlsZSI6IiIsInNvdXJjZVJvb3QiOiIvIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtMUVBsYXRmb3JtVXRpbH0gZnJvbSBcIi4vbHFfcGxhdGZvcm1fdXRpbFwiO1xyXG5pbXBvcnQge0xRUGxhdGZvcm1UeXBlfSBmcm9tIFwiLi4vZGF0YS9scV9jb25zdFwiO1xyXG5pbXBvcnQgdmlldyA9IGNjLnZpZXc7XHJcbmltcG9ydCBWZWMyID0gY2MuVmVjMjtcclxuXHJcbmV4cG9ydCBjbGFzcyBMUUJhc2VVdGlsIHtcclxuICAgIC8vIHB1YmxpYyBzdGF0aWMgcmVhZG9ubHkgdW5pdF9hcnIgPSBbJ0snLCAnTScsICdCJywgJ1QnXTtcclxuXHJcbiAgICBwdWJsaWMgc3RhdGljIGhhc192YWx1ZTxUPihhcnI6IFRbXSwgdjogVCk6IGJvb2xlYW4ge1xyXG4gICAgICAgIGxldCBoYXMgPSBmYWxzZTtcclxuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGFyci5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgICAgICBpZiAoYXJyW2ldID09PSB2KSB7XHJcbiAgICAgICAgICAgICAgICBoYXMgPSB0cnVlO1xyXG4gICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIGhhcztcclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgc3RhdGljIGdldF92YWx1ZV9ieV9kdXJhdGlvbihwZXJjZW50OiBudW1iZXIsIHRpbWVsaW5lOiBWZWMyW10pOiBudW1iZXIge1xyXG4gICAgICAgIGlmICh0aW1lbGluZS5sZW5ndGggPT09IDApIHtcclxuICAgICAgICAgICAgcmV0dXJuIDE7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGxldCBlbmRfaW5kZXggPSAtMTtcclxuICAgICAgICBmb3IgKGxldCBpID0gMTsgaSA8IHRpbWVsaW5lLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgICAgIGlmICh0aW1lbGluZVtpXS54ID4gcGVyY2VudCkge1xyXG4gICAgICAgICAgICAgICAgZW5kX2luZGV4ID0gaTtcclxuICAgICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmIChlbmRfaW5kZXggPT09IC0xKSB7XHJcbiAgICAgICAgICAgIHJldHVybiB0aW1lbGluZVt0aW1lbGluZS5sZW5ndGggLSAxXS55O1xyXG4gICAgICAgIH1cclxuICAgICAgICBjb25zdCBzdGFydF9pbmRleCA9IGVuZF9pbmRleCAtIDE7XHJcbiAgICAgICAgcmV0dXJuIHRpbWVsaW5lW3N0YXJ0X2luZGV4XS55ICsgKHRpbWVsaW5lW2VuZF9pbmRleF0ueSAtIHRpbWVsaW5lW3N0YXJ0X2luZGV4XS55KSAqICgocGVyY2VudCAtIHRpbWVsaW5lW3N0YXJ0X2luZGV4XS54KSAvICh0aW1lbGluZVtlbmRfaW5kZXhdLnggLSB0aW1lbGluZVtzdGFydF9pbmRleF0ueCkpO1xyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyBzdGF0aWMgbnVtYmVyX3RvX2NvdW50aW5nKG51bTogbnVtYmVyKTogc3RyaW5nIHtcclxuICAgICAgICBpZiAobnVtIDwgMTAwMCkge1xyXG4gICAgICAgICAgICByZXR1cm4gbnVtICsgJyc7XHJcbiAgICAgICAgfSBlbHNlIGlmIChudW0gPCAxMDAwMDAwKSB7XHJcbiAgICAgICAgICAgIHJldHVybiBNYXRoLmZsb29yKG51bSAvIDEwMDApICsgJ0snO1xyXG4gICAgICAgIH0gZWxzZSBpZiAobnVtIDwgMTAwMDAwMDAwMCkge1xyXG4gICAgICAgICAgICByZXR1cm4gTWF0aC5mbG9vcihudW0gLyAxMDAwMDAwKSArICdNJztcclxuICAgICAgICB9IGVsc2UgaWYgKG51bSA8IDEwMDAwMDAwMDAwMDApIHtcclxuICAgICAgICAgICAgcmV0dXJuIE1hdGguZmxvb3IobnVtIC8gMTAwMDAwMDAwMCkgKyAnQic7XHJcbiAgICAgICAgfSBlbHNlIGlmIChudW0gPCAxMDAwMDAwMDAwMDAwMDAwKSB7XHJcbiAgICAgICAgICAgIHJldHVybiBNYXRoLmZsb29yKG51bSAvIDEwMDAwMDAwMDAwMDApICsgJ1QnO1xyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gTWF0aC5mbG9vcihudW0gLyAxMDAwMDAwMDAwMDAwKSArICdUJztcclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgc3RhdGljIG51bWJlcl90b190aW1lKHRpbWU6IG51bWJlcik6IFtzdHJpbmcsIHN0cmluZywgc3RyaW5nXSB7XHJcbiAgICAgICAgY29uc3QgdCA9IE1hdGguZmxvb3IodGltZSAvICg2MCAqIDYwKSk7XHJcbiAgICAgICAgdGltZSA9IHRpbWUgLSB0ICogNjAgKiA2MDtcclxuICAgICAgICBsZXQgaG91ciA9IHQudG9TdHJpbmcoKTtcclxuICAgICAgICBsZXQgbWluID0gTWF0aC5mbG9vcih0aW1lIC8gNjApLnRvU3RyaW5nKCk7XHJcbiAgICAgICAgbGV0IHNlYyA9ICh0aW1lICUgNjApLnRvU3RyaW5nKCk7XHJcblxyXG4gICAgICAgIGlmIChob3VyLmxlbmd0aCA9PT0gMSkge1xyXG4gICAgICAgICAgICBob3VyID0gJzAnICsgaG91cjtcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKG1pbi5sZW5ndGggPT09IDEpIHtcclxuICAgICAgICAgICAgbWluID0gJzAnICsgbWluO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAoc2VjLmxlbmd0aCA9PT0gMSkge1xyXG4gICAgICAgICAgICBzZWMgPSAnMCcgKyBzZWM7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiBbaG91ciwgbWluLCBzZWNdO1xyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyBzdGF0aWMgc2V0X25vcm1hbF9hbmdsZShhbmdsZTogbnVtYmVyKSB7XHJcbiAgICAgICAgd2hpbGUgKGFuZ2xlID4gMzYwKSB7XHJcbiAgICAgICAgICAgIGFuZ2xlIC09IDM2MDtcclxuICAgICAgICB9XHJcbiAgICAgICAgd2hpbGUgKGFuZ2xlIDwgMCkge1xyXG4gICAgICAgICAgICBhbmdsZSArPSAzNjA7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiBhbmdsZTtcclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgc3RhdGljIGNvbXBhcmVfdmVyc2lvbih2MTogc3RyaW5nLCB2Mjogc3RyaW5nKTogbnVtYmVyIHtcclxuICAgICAgICBsZXQgdjFfYXJyID0gdjEuc3BsaXQoJy4nKTtcclxuICAgICAgICBsZXQgdjJfYXJyID0gdjIuc3BsaXQoJy4nKTtcclxuICAgICAgICBjb25zdCBsZW4gPSBNYXRoLm1heCh2MV9hcnIubGVuZ3RoLCB2Ml9hcnIubGVuZ3RoKTtcclxuXHJcbiAgICAgICAgd2hpbGUgKHYxX2Fyci5sZW5ndGggPCBsZW4pIHtcclxuICAgICAgICAgICAgdjFfYXJyLnB1c2goJzAnKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgd2hpbGUgKHYyX2Fyci5sZW5ndGggPCBsZW4pIHtcclxuICAgICAgICAgICAgdjJfYXJyLnB1c2goJzAnKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBsZW47IGkrKykge1xyXG4gICAgICAgICAgICBjb25zdCBudW0xID0gcGFyc2VJbnQodjFfYXJyW2ldKTtcclxuICAgICAgICAgICAgY29uc3QgbnVtMiA9IHBhcnNlSW50KHYyX2FycltpXSk7XHJcblxyXG4gICAgICAgICAgICBpZiAobnVtMSA+IG51bTIpIHtcclxuICAgICAgICAgICAgICAgIHJldHVybiAxO1xyXG4gICAgICAgICAgICB9IGVsc2UgaWYgKG51bTEgPCBudW0yKSB7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gLTE7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIDA7XHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIHN0YXRpYyBpc190b2RheShkYXRlOiBzdHJpbmcpOiBib29sZWFuIHtcclxuICAgICAgICBjb25zdCBkMSA9IG5ldyBEYXRlKCk7XHJcbiAgICAgICAgbGV0IGQyO1xyXG4gICAgICAgIGlmIChkYXRlICYmIGRhdGUgIT09ICcnKSB7XHJcbiAgICAgICAgICAgIGQyID0gbmV3IERhdGUoZGF0ZSk7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgZDIgPSBuZXcgRGF0ZSgpO1xyXG4gICAgICAgICAgICBkMi5zZXREYXRlKGQyLmdldERhdGUoKSAtIDEpO1xyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gZDEuZ2V0RnVsbFllYXIoKSA9PT0gZDIuZ2V0RnVsbFllYXIoKSAmJiBkMS5nZXRNb250aCgpID09PSBkMi5nZXRNb250aCgpICYmIGQxLmdldERhdGUoKSA9PT0gZDIuZ2V0RGF0ZSgpO1xyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyBzdGF0aWMgaXNfc2FmZV9hcmVhKCk6IGJvb2xlYW4ge1xyXG4gICAgICAgIGNvbnN0IGNiID0gKHdpZHRoOiBudW1iZXIsIGhlaWdodDogbnVtYmVyKSA9PiB7XHJcbiAgICAgICAgICAgIHJldHVybiAod2lkdGggPT09IDIyODAgJiYgaGVpZ2h0ID09PSAxMDgwKSB8fCAod2lkdGggPT09IDE3OTIgJiYgaGVpZ2h0ID09PSA4MjgpIHx8ICh3aWR0aCA9PT0gMjQzNiAmJiBoZWlnaHQgPT09IDExMjUpIHx8ICh3aWR0aCA9PT0gMjY4OCAmJiBoZWlnaHQgPT09IDEyNDIpO1xyXG4gICAgICAgIH07XHJcbiAgICAgICAgc3dpdGNoIChMUVBsYXRmb3JtVXRpbC5nZXRfcGxhdGZvcm0oKSkge1xyXG4gICAgICAgICAgICBjYXNlIExRUGxhdGZvcm1UeXBlLmJhaWR1OlxyXG4gICAgICAgICAgICAgICAgY29uc3Qgc3lzX2luZm9fc3dhbiA9IHN3YW4uZ2V0U3lzdGVtSW5mb1N5bmMoKTtcclxuICAgICAgICAgICAgICAgIHJldHVybiBjYihzeXNfaW5mb19zd2FuLnBpeGVsUmF0aW8gKiBzeXNfaW5mb19zd2FuLnNjcmVlbldpZHRoLCBzeXNfaW5mb19zd2FuLnBpeGVsUmF0aW8gKiBzeXNfaW5mb19zd2FuLnNjcmVlbkhlaWdodCk7XHJcbiAgICAgICAgICAgIGNhc2UgTFFQbGF0Zm9ybVR5cGUucXE6XHJcbiAgICAgICAgICAgICAgICBjb25zdCBzeXNfaW5mb19xcSA9IHFxLmdldFN5c3RlbUluZm9TeW5jKCk7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gY2Ioc3lzX2luZm9fcXEucGl4ZWxSYXRpbyAqIHN5c19pbmZvX3FxLnNjcmVlbldpZHRoLCBzeXNfaW5mb19xcS5waXhlbFJhdGlvICogc3lzX2luZm9fcXEuc2NyZWVuSGVpZ2h0KTtcclxuICAgICAgICAgICAgY2FzZSBMUVBsYXRmb3JtVHlwZS50dDpcclxuICAgICAgICAgICAgICAgIGNvbnN0IHN5c19pbmZvX3R0ID0gdHQuZ2V0U3lzdGVtSW5mb1N5bmMoKTtcclxuICAgICAgICAgICAgICAgIHJldHVybiBjYihzeXNfaW5mb190dC5waXhlbFJhdGlvICogc3lzX2luZm9fdHQuc2NyZWVuV2lkdGgsIHN5c19pbmZvX3R0LnBpeGVsUmF0aW8gKiBzeXNfaW5mb190dC5zY3JlZW5IZWlnaHQpO1xyXG4gICAgICAgICAgICBjYXNlIExRUGxhdGZvcm1UeXBlLm9wcG86XHJcbiAgICAgICAgICAgIGNhc2UgTFFQbGF0Zm9ybVR5cGUudml2bzpcclxuICAgICAgICAgICAgICAgIGNvbnN0IHN5c19pbmZvX3Zpdm8gPSBxZy5nZXRTeXN0ZW1JbmZvU3luYygpO1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIGNiKHN5c19pbmZvX3Zpdm8ucGl4ZWxSYXRpbyAqIHN5c19pbmZvX3Zpdm8uc2NyZWVuV2lkdGgsIHN5c19pbmZvX3Zpdm8ucGl4ZWxSYXRpbyAqIHN5c19pbmZvX3Zpdm8uc2NyZWVuSGVpZ2h0KTtcclxuICAgICAgICAgICAgY2FzZSBMUVBsYXRmb3JtVHlwZS53eDpcclxuICAgICAgICAgICAgICAgIGNvbnN0IHN5c19pbmZvX3d4ID0gd3guZ2V0U3lzdGVtSW5mb1N5bmMoKTtcclxuICAgICAgICAgICAgICAgIHJldHVybiBjYihzeXNfaW5mb193eC5waXhlbFJhdGlvICogc3lzX2luZm9fd3guc2NyZWVuV2lkdGgsIHN5c19pbmZvX3d4LnBpeGVsUmF0aW8gKiBzeXNfaW5mb193eC5zY3JlZW5IZWlnaHQpO1xyXG4gICAgICAgICAgICBjYXNlIExRUGxhdGZvcm1UeXBlLmFuZHJvaWQ6XHJcbiAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgY2FzZSBMUVBsYXRmb3JtVHlwZS5pb3M6XHJcbiAgICAgICAgICAgICAgICBsZXQgc2l6ZSA9IHZpZXcuZ2V0RnJhbWVTaXplKCk7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gY2Ioc2l6ZS53aWR0aCwgc2l6ZS5oZWlnaHQpO1xyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIHN0YXRpYyBkZWVwX2Nsb25lKG9iajogYW55KSB7XHJcbiAgICAgICAgaWYgKHR5cGVvZiBvYmogIT09ICdvYmplY3QnKSB7XHJcbiAgICAgICAgICAgIHJldHVybiBvYmo7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGxldCBuZXdfb2JqID0gKG9iaiBpbnN0YW5jZW9mIEFycmF5ID8gW10gOiB7fSkgYXMgYW55O1xyXG4gICAgICAgIGZvciAobGV0IGtleSBpbiBvYmopIHtcclxuICAgICAgICAgICAgaWYgKHR5cGVvZiBvYmpba2V5XSA9PT0gJ29iamVjdCcpIHtcclxuICAgICAgICAgICAgICAgIG5ld19vYmpba2V5XSA9IHRoaXMuZGVlcF9jbG9uZShvYmpba2V5XSk7XHJcbiAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICBuZXdfb2JqW2tleV0gPSBvYmpba2V5XTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gbmV3X29iajtcclxuICAgIH1cclxufSJdfQ== +//------QC-SOURCE-SPLIT------ + + (function() { + var nodeEnv = typeof require !== 'undefined' && typeof process !== 'undefined'; + var __module = nodeEnv ? module : {exports:{}}; + var __filename = 'preview-scripts/tiledmap-optimize-resource/Script/TmoTiledMap.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, '0b9eetmSUdJRZCQS91TYCw/', 'TmoTiledMap'); +// Script/TmoTiledMap.js + +"use strict"; + +// Learn cc.Class: +// - https://docs.cocos.com/creator/manual/en/scripting/class.html +// Learn Attribute: +// - https://docs.cocos.com/creator/manual/en/scripting/reference/attributes.html +// Learn life-cycle callbacks: +// - https://docs.cocos.com/creator/manual/en/scripting/life-cycle-callbacks.html +var TmoTiledLayer = require("./TmoTiledLayer"); +var TmoObjectGroup = require("./TmoObjectGroup"); +cc.Class({ + "extends": cc.TiledMap, + properties: { + objectMaterial: cc.Material, + noColor: true, + singleTexture: true, + _objectTextures: [] + }, + _applyFile: function _applyFile() { + if (!this.objectMaterial) { + cc.error("TiledmapOptimize: 未设置objectMaterial!"); + return; + } + this._super(); + }, + _buildLayerAndGroup: function _buildLayerAndGroup() { + var tilesets = this._tilesets; + var texGrids = this._texGrids; + var animations = this._animations; + texGrids.length = 0; + for (var i = 0, l = tilesets.length; i < l; ++i) { + var tilesetInfo = tilesets[i]; + if (!tilesetInfo) continue; + cc.TiledMap.fillTextureGrids(tilesetInfo, texGrids, i); + } + this._fillAniGrids(texGrids, animations); + var layers = this._layers; + var groups = this._groups; + var images = this._images; + var oldNodeNames = {}; + for (var _i = 0, n = layers.length; _i < n; _i++) { + oldNodeNames[layers[_i].node._name] = true; + } + for (var _i2 = 0, _n = groups.length; _i2 < _n; _i2++) { + oldNodeNames[groups[_i2].node._name] = true; + } + for (var _i3 = 0, _n2 = images.length; _i3 < _n2; _i3++) { + oldNodeNames[images[_i3]._name] = true; + } + layers = this._layers = []; + groups = this._groups = []; + images = this._images = []; + var mapInfo = this._mapInfo; + var node = this.node; + var layerInfos = mapInfo.getAllChildren(); + var textures = this._textures; + var maxWidth = 0; + var maxHeight = 0; + this._objectTextures = []; + var firstTmxLayer = null; + if (layerInfos && layerInfos.length > 0) { + for (var _i4 = 0, len = layerInfos.length; _i4 < len; _i4++) { + var layerInfo = layerInfos[_i4]; + var name = layerInfo.name; + var child = this.node.getChildByName(name); + oldNodeNames[name] = false; + if (!child) { + child = new cc.Node(); + child.name = name; + node.addChild(child); + } + child.setSiblingIndex(_i4); + child.active = layerInfo.visible; + if (layerInfo instanceof cc.TMXLayerInfo) { + // 此处修改 改为创建MyTiledLayer + var layer = child.getComponent(TmoTiledLayer); + if (!layer) { + layer = child.addComponent(TmoTiledLayer); + } + // 修改结束 + // 此处修改 传递firstTmxLayer 记录firstTmxLayer + layer._init(layerInfo, mapInfo, tilesets, textures, texGrids, this, firstTmxLayer); + firstTmxLayer = firstTmxLayer || layer; + // 修改结束 + + // tell the layerinfo to release the ownership of the tiles map. + layerInfo.ownTiles = false; + layers.push(layer); + } else if (layerInfo instanceof cc.TMXObjectGroupInfo) { + var group = child.getComponent(TmoObjectGroup); + if (!group) { + group = child.addComponent(TmoObjectGroup); + } + group._init(layerInfo, mapInfo, texGrids, this); + groups.push(group); + } else if (layerInfo instanceof cc.TMXImageLayerInfo) { + var texture = layerInfo.sourceImage; + child.opacity = layerInfo.opacity; + child.layerInfo = layerInfo; + child._offset = cc.v2(layerInfo.offset.x, -layerInfo.offset.y); + var image = child.getComponent(cc.Sprite); + if (!image) { + image = child.addComponent(cc.Sprite); + } + var spf = image.spriteFrame || new cc.SpriteFrame(); + spf.setTexture(texture); + image.spriteFrame = spf; + child.width = texture.width; + child.height = texture.height; + images.push(child); + } + maxWidth = Math.max(maxWidth, child.width); + maxHeight = Math.max(maxHeight, child.height); + } + } + + // 设置材质的texture属性 + var objectTextures = this._objectTextures; + for (var _i5 = 0; _i5 < objectTextures.length; _i5++) { + var idx = _i5 === 0 ? '' : _i5; + this.objectMaterial.setProperty("texture" + idx, objectTextures[_i5], 0); + } + var children = node.children; + for (var _i6 = 0, _n3 = children.length; _i6 < _n3; _i6++) { + var c = children[_i6]; + if (oldNodeNames[c._name]) { + c.destroy(); + } + } + this.node.width = maxWidth; + this.node.height = maxHeight; + this._syncAnchorPoint(); + }, + getObjectMaterial: function getObjectMaterial() { + return this.objectMaterial; + }, + isNoColor: function isNoColor() { + return this.noColor; + }, + isSingleTexture: function isSingleTexture() { + return this.singleTexture; + }, + getObjectTextures: function getObjectTextures() { + return this._objectTextures; + } +}); + +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,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInBhY2thZ2VzXFxUaWxlZE1hcE9wdGltaXplclxccmVzb3VyY2VcXFNjcmlwdFxcVG1vVGlsZWRNYXAuanMiXSwibmFtZXMiOlsiVG1vVGlsZWRMYXllciIsInJlcXVpcmUiLCJUbW9PYmplY3RHcm91cCIsImNjIiwiQ2xhc3MiLCJUaWxlZE1hcCIsInByb3BlcnRpZXMiLCJvYmplY3RNYXRlcmlhbCIsIk1hdGVyaWFsIiwibm9Db2xvciIsInNpbmdsZVRleHR1cmUiLCJfb2JqZWN0VGV4dHVyZXMiLCJfYXBwbHlGaWxlIiwiZXJyb3IiLCJfc3VwZXIiLCJfYnVpbGRMYXllckFuZEdyb3VwIiwidGlsZXNldHMiLCJfdGlsZXNldHMiLCJ0ZXhHcmlkcyIsIl90ZXhHcmlkcyIsImFuaW1hdGlvbnMiLCJfYW5pbWF0aW9ucyIsImxlbmd0aCIsImkiLCJsIiwidGlsZXNldEluZm8iLCJmaWxsVGV4dHVyZUdyaWRzIiwiX2ZpbGxBbmlHcmlkcyIsImxheWVycyIsIl9sYXllcnMiLCJncm91cHMiLCJfZ3JvdXBzIiwiaW1hZ2VzIiwiX2ltYWdlcyIsIm9sZE5vZGVOYW1lcyIsIm4iLCJub2RlIiwiX25hbWUiLCJtYXBJbmZvIiwiX21hcEluZm8iLCJsYXllckluZm9zIiwiZ2V0QWxsQ2hpbGRyZW4iLCJ0ZXh0dXJlcyIsIl90ZXh0dXJlcyIsIm1heFdpZHRoIiwibWF4SGVpZ2h0IiwiZmlyc3RUbXhMYXllciIsImxlbiIsImxheWVySW5mbyIsIm5hbWUiLCJjaGlsZCIsImdldENoaWxkQnlOYW1lIiwiTm9kZSIsImFkZENoaWxkIiwic2V0U2libGluZ0luZGV4IiwiYWN0aXZlIiwidmlzaWJsZSIsIlRNWExheWVySW5mbyIsImxheWVyIiwiZ2V0Q29tcG9uZW50IiwiYWRkQ29tcG9uZW50IiwiX2luaXQiLCJvd25UaWxlcyIsInB1c2giLCJUTVhPYmplY3RHcm91cEluZm8iLCJncm91cCIsIlRNWEltYWdlTGF5ZXJJbmZvIiwidGV4dHVyZSIsInNvdXJjZUltYWdlIiwib3BhY2l0eSIsIl9vZmZzZXQiLCJ2MiIsIm9mZnNldCIsIngiLCJ5IiwiaW1hZ2UiLCJTcHJpdGUiLCJzcGYiLCJzcHJpdGVGcmFtZSIsIlNwcml0ZUZyYW1lIiwic2V0VGV4dHVyZSIsIndpZHRoIiwiaGVpZ2h0IiwiTWF0aCIsIm1heCIsIm9iamVjdFRleHR1cmVzIiwiaWR4Iiwic2V0UHJvcGVydHkiLCJjaGlsZHJlbiIsImMiLCJkZXN0cm95IiwiX3N5bmNBbmNob3JQb2ludCIsImdldE9iamVjdE1hdGVyaWFsIiwiaXNOb0NvbG9yIiwiaXNTaW5nbGVUZXh0dXJlIiwiZ2V0T2JqZWN0VGV4dHVyZXMiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsSUFBTUEsYUFBYSxHQUFHQyxPQUFPLENBQUMsaUJBQWlCLENBQUM7QUFDaEQsSUFBTUMsY0FBYyxHQUFHRCxPQUFPLENBQUMsa0JBQWtCLENBQUM7QUFDbERFLEVBQUUsQ0FBQ0MsS0FBSyxDQUFDO0VBQ0wsV0FBU0QsRUFBRSxDQUFDRSxRQUFRO0VBQ3BCQyxVQUFVLEVBQUU7SUFDUkMsY0FBYyxFQUFFSixFQUFFLENBQUNLLFFBQVE7SUFDM0JDLE9BQU8sRUFBRSxJQUFJO0lBQ2JDLGFBQWEsRUFBRSxJQUFJO0lBRW5CQyxlQUFlLEVBQUU7RUFDckIsQ0FBQztFQUdEQyxVQUFVLEVBQUUsU0FBQUEsV0FBQSxFQUFZO0lBQ3BCLElBQUksQ0FBQyxJQUFJLENBQUNMLGNBQWMsRUFBRTtNQUN0QkosRUFBRSxDQUFDVSxLQUFLLENBQUMsc0NBQXNDLENBQUM7TUFDaEQ7SUFDSjtJQUVBLElBQUksQ0FBQ0MsTUFBTSxFQUFFO0VBQ2pCLENBQUM7RUFFREMsbUJBQW1CLEVBQUUsU0FBQUEsb0JBQUEsRUFBWTtJQUM3QixJQUFJQyxRQUFRLEdBQUcsSUFBSSxDQUFDQyxTQUFTO0lBQzdCLElBQUlDLFFBQVEsR0FBRyxJQUFJLENBQUNDLFNBQVM7SUFDN0IsSUFBSUMsVUFBVSxHQUFHLElBQUksQ0FBQ0MsV0FBVztJQUNqQ0gsUUFBUSxDQUFDSSxNQUFNLEdBQUcsQ0FBQztJQUNuQixLQUFLLElBQUlDLENBQUMsR0FBRyxDQUFDLEVBQUVDLENBQUMsR0FBR1IsUUFBUSxDQUFDTSxNQUFNLEVBQUVDLENBQUMsR0FBR0MsQ0FBQyxFQUFFLEVBQUVELENBQUMsRUFBRTtNQUM3QyxJQUFJRSxXQUFXLEdBQUdULFFBQVEsQ0FBQ08sQ0FBQyxDQUFDO01BQzdCLElBQUksQ0FBQ0UsV0FBVyxFQUFFO01BQ2xCdEIsRUFBRSxDQUFDRSxRQUFRLENBQUNxQixnQkFBZ0IsQ0FBQ0QsV0FBVyxFQUFFUCxRQUFRLEVBQUVLLENBQUMsQ0FBQztJQUMxRDtJQUNBLElBQUksQ0FBQ0ksYUFBYSxDQUFDVCxRQUFRLEVBQUVFLFVBQVUsQ0FBQztJQUV4QyxJQUFJUSxNQUFNLEdBQUcsSUFBSSxDQUFDQyxPQUFPO0lBQ3pCLElBQUlDLE1BQU0sR0FBRyxJQUFJLENBQUNDLE9BQU87SUFDekIsSUFBSUMsTUFBTSxHQUFHLElBQUksQ0FBQ0MsT0FBTztJQUN6QixJQUFJQyxZQUFZLEdBQUcsQ0FBQyxDQUFDO0lBQ3JCLEtBQUssSUFBSVgsRUFBQyxHQUFHLENBQUMsRUFBRVksQ0FBQyxHQUFHUCxNQUFNLENBQUNOLE1BQU0sRUFBRUMsRUFBQyxHQUFHWSxDQUFDLEVBQUVaLEVBQUMsRUFBRSxFQUFFO01BQzNDVyxZQUFZLENBQUNOLE1BQU0sQ0FBQ0wsRUFBQyxDQUFDLENBQUNhLElBQUksQ0FBQ0MsS0FBSyxDQUFDLEdBQUcsSUFBSTtJQUM3QztJQUNBLEtBQUssSUFBSWQsR0FBQyxHQUFHLENBQUMsRUFBRVksRUFBQyxHQUFHTCxNQUFNLENBQUNSLE1BQU0sRUFBRUMsR0FBQyxHQUFHWSxFQUFDLEVBQUVaLEdBQUMsRUFBRSxFQUFFO01BQzNDVyxZQUFZLENBQUNKLE1BQU0sQ0FBQ1AsR0FBQyxDQUFDLENBQUNhLElBQUksQ0FBQ0MsS0FBSyxDQUFDLEdBQUcsSUFBSTtJQUM3QztJQUNBLEtBQUssSUFBSWQsR0FBQyxHQUFHLENBQUMsRUFBRVksR0FBQyxHQUFHSCxNQUFNLENBQUNWLE1BQU0sRUFBRUMsR0FBQyxHQUFHWSxHQUFDLEVBQUVaLEdBQUMsRUFBRSxFQUFFO01BQzNDVyxZQUFZLENBQUNGLE1BQU0sQ0FBQ1QsR0FBQyxDQUFDLENBQUNjLEtBQUssQ0FBQyxHQUFHLElBQUk7SUFDeEM7SUFFQVQsTUFBTSxHQUFHLElBQUksQ0FBQ0MsT0FBTyxHQUFHLEVBQUU7SUFDMUJDLE1BQU0sR0FBRyxJQUFJLENBQUNDLE9BQU8sR0FBRyxFQUFFO0lBQzFCQyxNQUFNLEdBQUcsSUFBSSxDQUFDQyxPQUFPLEdBQUcsRUFBRTtJQUUxQixJQUFJSyxPQUFPLEdBQUcsSUFBSSxDQUFDQyxRQUFRO0lBQzNCLElBQUlILElBQUksR0FBRyxJQUFJLENBQUNBLElBQUk7SUFDcEIsSUFBSUksVUFBVSxHQUFHRixPQUFPLENBQUNHLGNBQWMsRUFBRTtJQUN6QyxJQUFJQyxRQUFRLEdBQUcsSUFBSSxDQUFDQyxTQUFTO0lBQzdCLElBQUlDLFFBQVEsR0FBRyxDQUFDO0lBQ2hCLElBQUlDLFNBQVMsR0FBRyxDQUFDO0lBRWpCLElBQUksQ0FBQ2xDLGVBQWUsR0FBRyxFQUFFO0lBQ3pCLElBQUltQyxhQUFhLEdBQUcsSUFBSTtJQUV4QixJQUFJTixVQUFVLElBQUlBLFVBQVUsQ0FBQ2xCLE1BQU0sR0FBRyxDQUFDLEVBQUU7TUFDckMsS0FBSyxJQUFJQyxHQUFDLEdBQUcsQ0FBQyxFQUFFd0IsR0FBRyxHQUFHUCxVQUFVLENBQUNsQixNQUFNLEVBQUVDLEdBQUMsR0FBR3dCLEdBQUcsRUFBRXhCLEdBQUMsRUFBRSxFQUFFO1FBQ25ELElBQUl5QixTQUFTLEdBQUdSLFVBQVUsQ0FBQ2pCLEdBQUMsQ0FBQztRQUM3QixJQUFJMEIsSUFBSSxHQUFHRCxTQUFTLENBQUNDLElBQUk7UUFFekIsSUFBSUMsS0FBSyxHQUFHLElBQUksQ0FBQ2QsSUFBSSxDQUFDZSxjQUFjLENBQUNGLElBQUksQ0FBQztRQUMxQ2YsWUFBWSxDQUFDZSxJQUFJLENBQUMsR0FBRyxLQUFLO1FBRTFCLElBQUksQ0FBQ0MsS0FBSyxFQUFFO1VBQ1JBLEtBQUssR0FBRyxJQUFJL0MsRUFBRSxDQUFDaUQsSUFBSSxFQUFFO1VBQ3JCRixLQUFLLENBQUNELElBQUksR0FBR0EsSUFBSTtVQUNqQmIsSUFBSSxDQUFDaUIsUUFBUSxDQUFDSCxLQUFLLENBQUM7UUFDeEI7UUFFQUEsS0FBSyxDQUFDSSxlQUFlLENBQUMvQixHQUFDLENBQUM7UUFDeEIyQixLQUFLLENBQUNLLE1BQU0sR0FBR1AsU0FBUyxDQUFDUSxPQUFPO1FBRWhDLElBQUlSLFNBQVMsWUFBWTdDLEVBQUUsQ0FBQ3NELFlBQVksRUFBRTtVQUN0QztVQUNBLElBQUlDLEtBQUssR0FBR1IsS0FBSyxDQUFDUyxZQUFZLENBQUMzRCxhQUFhLENBQUM7VUFDN0MsSUFBSSxDQUFDMEQsS0FBSyxFQUFFO1lBQ1JBLEtBQUssR0FBR1IsS0FBSyxDQUFDVSxZQUFZLENBQUM1RCxhQUFhLENBQUM7VUFDN0M7VUFDQTtVQUNBO1VBQ0EwRCxLQUFLLENBQUNHLEtBQUssQ0FBQ2IsU0FBUyxFQUFFVixPQUFPLEVBQUV0QixRQUFRLEVBQUUwQixRQUFRLEVBQUV4QixRQUFRLEVBQUUsSUFBSSxFQUFFNEIsYUFBYSxDQUFDO1VBQ2xGQSxhQUFhLEdBQUdBLGFBQWEsSUFBSVksS0FBSztVQUN0Qzs7VUFFQTtVQUNBVixTQUFTLENBQUNjLFFBQVEsR0FBRyxLQUFLO1VBQzFCbEMsTUFBTSxDQUFDbUMsSUFBSSxDQUFDTCxLQUFLLENBQUM7UUFDdEIsQ0FBQyxNQUNJLElBQUlWLFNBQVMsWUFBWTdDLEVBQUUsQ0FBQzZELGtCQUFrQixFQUFFO1VBQ2pELElBQUlDLEtBQUssR0FBR2YsS0FBSyxDQUFDUyxZQUFZLENBQUN6RCxjQUFjLENBQUM7VUFDOUMsSUFBSSxDQUFDK0QsS0FBSyxFQUFFO1lBQ1JBLEtBQUssR0FBR2YsS0FBSyxDQUFDVSxZQUFZLENBQUMxRCxjQUFjLENBQUM7VUFDOUM7VUFFQStELEtBQUssQ0FBQ0osS0FBSyxDQUFDYixTQUFTLEVBQUVWLE9BQU8sRUFBRXBCLFFBQVEsRUFBRSxJQUFJLENBQUM7VUFDL0NZLE1BQU0sQ0FBQ2lDLElBQUksQ0FBQ0UsS0FBSyxDQUFDO1FBQ3RCLENBQUMsTUFDSSxJQUFJakIsU0FBUyxZQUFZN0MsRUFBRSxDQUFDK0QsaUJBQWlCLEVBQUU7VUFDaEQsSUFBSUMsT0FBTyxHQUFHbkIsU0FBUyxDQUFDb0IsV0FBVztVQUNuQ2xCLEtBQUssQ0FBQ21CLE9BQU8sR0FBR3JCLFNBQVMsQ0FBQ3FCLE9BQU87VUFDakNuQixLQUFLLENBQUNGLFNBQVMsR0FBR0EsU0FBUztVQUMzQkUsS0FBSyxDQUFDb0IsT0FBTyxHQUFHbkUsRUFBRSxDQUFDb0UsRUFBRSxDQUFDdkIsU0FBUyxDQUFDd0IsTUFBTSxDQUFDQyxDQUFDLEVBQUUsQ0FBQ3pCLFNBQVMsQ0FBQ3dCLE1BQU0sQ0FBQ0UsQ0FBQyxDQUFDO1VBRTlELElBQUlDLEtBQUssR0FBR3pCLEtBQUssQ0FBQ1MsWUFBWSxDQUFDeEQsRUFBRSxDQUFDeUUsTUFBTSxDQUFDO1VBQ3pDLElBQUksQ0FBQ0QsS0FBSyxFQUFFO1lBQ1JBLEtBQUssR0FBR3pCLEtBQUssQ0FBQ1UsWUFBWSxDQUFDekQsRUFBRSxDQUFDeUUsTUFBTSxDQUFDO1VBQ3pDO1VBRUEsSUFBSUMsR0FBRyxHQUFHRixLQUFLLENBQUNHLFdBQVcsSUFBSSxJQUFJM0UsRUFBRSxDQUFDNEUsV0FBVyxFQUFFO1VBQ25ERixHQUFHLENBQUNHLFVBQVUsQ0FBQ2IsT0FBTyxDQUFDO1VBQ3ZCUSxLQUFLLENBQUNHLFdBQVcsR0FBR0QsR0FBRztVQUV2QjNCLEtBQUssQ0FBQytCLEtBQUssR0FBR2QsT0FBTyxDQUFDYyxLQUFLO1VBQzNCL0IsS0FBSyxDQUFDZ0MsTUFBTSxHQUFHZixPQUFPLENBQUNlLE1BQU07VUFDN0JsRCxNQUFNLENBQUMrQixJQUFJLENBQUNiLEtBQUssQ0FBQztRQUN0QjtRQUVBTixRQUFRLEdBQUd1QyxJQUFJLENBQUNDLEdBQUcsQ0FBQ3hDLFFBQVEsRUFBRU0sS0FBSyxDQUFDK0IsS0FBSyxDQUFDO1FBQzFDcEMsU0FBUyxHQUFHc0MsSUFBSSxDQUFDQyxHQUFHLENBQUN2QyxTQUFTLEVBQUVLLEtBQUssQ0FBQ2dDLE1BQU0sQ0FBQztNQUNqRDtJQUNKOztJQUVBO0lBQ0EsSUFBSUcsY0FBYyxHQUFHLElBQUksQ0FBQzFFLGVBQWU7SUFDekMsS0FBSyxJQUFJWSxHQUFDLEdBQUcsQ0FBQyxFQUFFQSxHQUFDLEdBQUc4RCxjQUFjLENBQUMvRCxNQUFNLEVBQUVDLEdBQUMsRUFBRSxFQUFFO01BQzVDLElBQUkrRCxHQUFHLEdBQUcvRCxHQUFDLEtBQUssQ0FBQyxHQUFHLEVBQUUsR0FBR0EsR0FBQztNQUMxQixJQUFJLENBQUNoQixjQUFjLENBQUNnRixXQUFXLGFBQVdELEdBQUcsRUFBSUQsY0FBYyxDQUFDOUQsR0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBQzFFO0lBRUEsSUFBSWlFLFFBQVEsR0FBR3BELElBQUksQ0FBQ29ELFFBQVE7SUFDNUIsS0FBSyxJQUFJakUsR0FBQyxHQUFHLENBQUMsRUFBRVksR0FBQyxHQUFHcUQsUUFBUSxDQUFDbEUsTUFBTSxFQUFFQyxHQUFDLEdBQUdZLEdBQUMsRUFBRVosR0FBQyxFQUFFLEVBQUU7TUFDN0MsSUFBSWtFLENBQUMsR0FBR0QsUUFBUSxDQUFDakUsR0FBQyxDQUFDO01BQ25CLElBQUlXLFlBQVksQ0FBQ3VELENBQUMsQ0FBQ3BELEtBQUssQ0FBQyxFQUFFO1FBQ3ZCb0QsQ0FBQyxDQUFDQyxPQUFPLEVBQUU7TUFDZjtJQUNKO0lBRUEsSUFBSSxDQUFDdEQsSUFBSSxDQUFDNkMsS0FBSyxHQUFHckMsUUFBUTtJQUMxQixJQUFJLENBQUNSLElBQUksQ0FBQzhDLE1BQU0sR0FBR3JDLFNBQVM7SUFDNUIsSUFBSSxDQUFDOEMsZ0JBQWdCLEVBQUU7RUFDM0IsQ0FBQztFQUVEQyxpQkFBaUIsRUFBRSxTQUFBQSxrQkFBQSxFQUFZO0lBQzNCLE9BQU8sSUFBSSxDQUFDckYsY0FBYztFQUM5QixDQUFDO0VBRURzRixTQUFTLEVBQUUsU0FBQUEsVUFBQSxFQUFZO0lBQ25CLE9BQU8sSUFBSSxDQUFDcEYsT0FBTztFQUN2QixDQUFDO0VBRURxRixlQUFlLEVBQUUsU0FBQUEsZ0JBQUEsRUFBWTtJQUN6QixPQUFPLElBQUksQ0FBQ3BGLGFBQWE7RUFDN0IsQ0FBQztFQUVEcUYsaUJBQWlCLEVBQUUsU0FBQUEsa0JBQUEsRUFBWTtJQUMzQixPQUFPLElBQUksQ0FBQ3BGLGVBQWU7RUFDL0I7QUFDSixDQUFDLENBQUMiLCJzb3VyY2VSb290IjoiLyIsInNvdXJjZXNDb250ZW50IjpbIi8vIExlYXJuIGNjLkNsYXNzOlxyXG4vLyAgLSBodHRwczovL2RvY3MuY29jb3MuY29tL2NyZWF0b3IvbWFudWFsL2VuL3NjcmlwdGluZy9jbGFzcy5odG1sXHJcbi8vIExlYXJuIEF0dHJpYnV0ZTpcclxuLy8gIC0gaHR0cHM6Ly9kb2NzLmNvY29zLmNvbS9jcmVhdG9yL21hbnVhbC9lbi9zY3JpcHRpbmcvcmVmZXJlbmNlL2F0dHJpYnV0ZXMuaHRtbFxyXG4vLyBMZWFybiBsaWZlLWN5Y2xlIGNhbGxiYWNrczpcclxuLy8gIC0gaHR0cHM6Ly9kb2NzLmNvY29zLmNvbS9jcmVhdG9yL21hbnVhbC9lbi9zY3JpcHRpbmcvbGlmZS1jeWNsZS1jYWxsYmFja3MuaHRtbFxyXG5jb25zdCBUbW9UaWxlZExheWVyID0gcmVxdWlyZShcIi4vVG1vVGlsZWRMYXllclwiKTtcclxuY29uc3QgVG1vT2JqZWN0R3JvdXAgPSByZXF1aXJlKFwiLi9UbW9PYmplY3RHcm91cFwiKTtcclxuY2MuQ2xhc3Moe1xyXG4gICAgZXh0ZW5kczogY2MuVGlsZWRNYXAsXHJcbiAgICBwcm9wZXJ0aWVzOiB7XHJcbiAgICAgICAgb2JqZWN0TWF0ZXJpYWw6IGNjLk1hdGVyaWFsLFxyXG4gICAgICAgIG5vQ29sb3I6IHRydWUsXHJcbiAgICAgICAgc2luZ2xlVGV4dHVyZTogdHJ1ZSxcclxuXHJcbiAgICAgICAgX29iamVjdFRleHR1cmVzOiBbXSxcclxuICAgIH0sXHJcbiAgICBcclxuXHJcbiAgICBfYXBwbHlGaWxlOiBmdW5jdGlvbiAoKSB7XHJcbiAgICAgICAgaWYgKCF0aGlzLm9iamVjdE1hdGVyaWFsKSB7XHJcbiAgICAgICAgICAgIGNjLmVycm9yKFwiVGlsZWRtYXBPcHRpbWl6ZTog5pyq6K6+572ub2JqZWN0TWF0ZXJpYWwhXCIpO1xyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICB0aGlzLl9zdXBlcigpO1xyXG4gICAgfSxcclxuXHJcbiAgICBfYnVpbGRMYXllckFuZEdyb3VwOiBmdW5jdGlvbiAoKSB7XHJcbiAgICAgICAgbGV0IHRpbGVzZXRzID0gdGhpcy5fdGlsZXNldHM7XHJcbiAgICAgICAgbGV0IHRleEdyaWRzID0gdGhpcy5fdGV4R3JpZHM7XHJcbiAgICAgICAgbGV0IGFuaW1hdGlvbnMgPSB0aGlzLl9hbmltYXRpb25zO1xyXG4gICAgICAgIHRleEdyaWRzLmxlbmd0aCA9IDA7XHJcbiAgICAgICAgZm9yIChsZXQgaSA9IDAsIGwgPSB0aWxlc2V0cy5sZW5ndGg7IGkgPCBsOyArK2kpIHtcclxuICAgICAgICAgICAgbGV0IHRpbGVzZXRJbmZvID0gdGlsZXNldHNbaV07XHJcbiAgICAgICAgICAgIGlmICghdGlsZXNldEluZm8pIGNvbnRpbnVlO1xyXG4gICAgICAgICAgICBjYy5UaWxlZE1hcC5maWxsVGV4dHVyZUdyaWRzKHRpbGVzZXRJbmZvLCB0ZXhHcmlkcywgaSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRoaXMuX2ZpbGxBbmlHcmlkcyh0ZXhHcmlkcywgYW5pbWF0aW9ucyk7XHJcblxyXG4gICAgICAgIGxldCBsYXllcnMgPSB0aGlzLl9sYXllcnM7XHJcbiAgICAgICAgbGV0IGdyb3VwcyA9IHRoaXMuX2dyb3VwcztcclxuICAgICAgICBsZXQgaW1hZ2VzID0gdGhpcy5faW1hZ2VzO1xyXG4gICAgICAgIGxldCBvbGROb2RlTmFtZXMgPSB7fTtcclxuICAgICAgICBmb3IgKGxldCBpID0gMCwgbiA9IGxheWVycy5sZW5ndGg7IGkgPCBuOyBpKyspIHtcclxuICAgICAgICAgICAgb2xkTm9kZU5hbWVzW2xheWVyc1tpXS5ub2RlLl9uYW1lXSA9IHRydWU7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGZvciAobGV0IGkgPSAwLCBuID0gZ3JvdXBzLmxlbmd0aDsgaSA8IG47IGkrKykge1xyXG4gICAgICAgICAgICBvbGROb2RlTmFtZXNbZ3JvdXBzW2ldLm5vZGUuX25hbWVdID0gdHJ1ZTtcclxuICAgICAgICB9XHJcbiAgICAgICAgZm9yIChsZXQgaSA9IDAsIG4gPSBpbWFnZXMubGVuZ3RoOyBpIDwgbjsgaSsrKSB7XHJcbiAgICAgICAgICAgIG9sZE5vZGVOYW1lc1tpbWFnZXNbaV0uX25hbWVdID0gdHJ1ZTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGxheWVycyA9IHRoaXMuX2xheWVycyA9IFtdO1xyXG4gICAgICAgIGdyb3VwcyA9IHRoaXMuX2dyb3VwcyA9IFtdO1xyXG4gICAgICAgIGltYWdlcyA9IHRoaXMuX2ltYWdlcyA9IFtdO1xyXG5cclxuICAgICAgICBsZXQgbWFwSW5mbyA9IHRoaXMuX21hcEluZm87XHJcbiAgICAgICAgbGV0IG5vZGUgPSB0aGlzLm5vZGU7XHJcbiAgICAgICAgbGV0IGxheWVySW5mb3MgPSBtYXBJbmZvLmdldEFsbENoaWxkcmVuKCk7XHJcbiAgICAgICAgbGV0IHRleHR1cmVzID0gdGhpcy5fdGV4dHVyZXM7XHJcbiAgICAgICAgbGV0IG1heFdpZHRoID0gMDtcclxuICAgICAgICBsZXQgbWF4SGVpZ2h0ID0gMDtcclxuXHJcbiAgICAgICAgdGhpcy5fb2JqZWN0VGV4dHVyZXMgPSBbXTtcclxuICAgICAgICBsZXQgZmlyc3RUbXhMYXllciA9IG51bGw7XHJcblxyXG4gICAgICAgIGlmIChsYXllckluZm9zICYmIGxheWVySW5mb3MubGVuZ3RoID4gMCkge1xyXG4gICAgICAgICAgICBmb3IgKGxldCBpID0gMCwgbGVuID0gbGF5ZXJJbmZvcy5sZW5ndGg7IGkgPCBsZW47IGkrKykge1xyXG4gICAgICAgICAgICAgICAgbGV0IGxheWVySW5mbyA9IGxheWVySW5mb3NbaV07XHJcbiAgICAgICAgICAgICAgICBsZXQgbmFtZSA9IGxheWVySW5mby5uYW1lO1xyXG5cclxuICAgICAgICAgICAgICAgIGxldCBjaGlsZCA9IHRoaXMubm9kZS5nZXRDaGlsZEJ5TmFtZShuYW1lKTtcclxuICAgICAgICAgICAgICAgIG9sZE5vZGVOYW1lc1tuYW1lXSA9IGZhbHNlO1xyXG5cclxuICAgICAgICAgICAgICAgIGlmICghY2hpbGQpIHtcclxuICAgICAgICAgICAgICAgICAgICBjaGlsZCA9IG5ldyBjYy5Ob2RlKCk7XHJcbiAgICAgICAgICAgICAgICAgICAgY2hpbGQubmFtZSA9IG5hbWU7XHJcbiAgICAgICAgICAgICAgICAgICAgbm9kZS5hZGRDaGlsZChjaGlsZCk7XHJcbiAgICAgICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAgICAgY2hpbGQuc2V0U2libGluZ0luZGV4KGkpO1xyXG4gICAgICAgICAgICAgICAgY2hpbGQuYWN0aXZlID0gbGF5ZXJJbmZvLnZpc2libGU7XHJcblxyXG4gICAgICAgICAgICAgICAgaWYgKGxheWVySW5mbyBpbnN0YW5jZW9mIGNjLlRNWExheWVySW5mbykge1xyXG4gICAgICAgICAgICAgICAgICAgIC8vIOatpOWkhOS/ruaUuSDmlLnkuLrliJvlu7pNeVRpbGVkTGF5ZXJcclxuICAgICAgICAgICAgICAgICAgICBsZXQgbGF5ZXIgPSBjaGlsZC5nZXRDb21wb25lbnQoVG1vVGlsZWRMYXllcik7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKCFsYXllcikge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBsYXllciA9IGNoaWxkLmFkZENvbXBvbmVudChUbW9UaWxlZExheWVyKTtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgLy8g5L+u5pS557uT5p2fXHJcbiAgICAgICAgICAgICAgICAgICAgLy8g5q2k5aSE5L+u5pS5IOS8oOmAkmZpcnN0VG14TGF5ZXIg6K6w5b2VZmlyc3RUbXhMYXllclxyXG4gICAgICAgICAgICAgICAgICAgIGxheWVyLl9pbml0KGxheWVySW5mbywgbWFwSW5mbywgdGlsZXNldHMsIHRleHR1cmVzLCB0ZXhHcmlkcywgdGhpcywgZmlyc3RUbXhMYXllcik7XHJcbiAgICAgICAgICAgICAgICAgICAgZmlyc3RUbXhMYXllciA9IGZpcnN0VG14TGF5ZXIgfHwgbGF5ZXI7XHJcbiAgICAgICAgICAgICAgICAgICAgLy8g5L+u5pS557uT5p2fXHJcblxyXG4gICAgICAgICAgICAgICAgICAgIC8vIHRlbGwgdGhlIGxheWVyaW5mbyB0byByZWxlYXNlIHRoZSBvd25lcnNoaXAgb2YgdGhlIHRpbGVzIG1hcC5cclxuICAgICAgICAgICAgICAgICAgICBsYXllckluZm8ub3duVGlsZXMgPSBmYWxzZTtcclxuICAgICAgICAgICAgICAgICAgICBsYXllcnMucHVzaChsYXllcik7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBlbHNlIGlmIChsYXllckluZm8gaW5zdGFuY2VvZiBjYy5UTVhPYmplY3RHcm91cEluZm8pIHtcclxuICAgICAgICAgICAgICAgICAgICBsZXQgZ3JvdXAgPSBjaGlsZC5nZXRDb21wb25lbnQoVG1vT2JqZWN0R3JvdXApO1xyXG4gICAgICAgICAgICAgICAgICAgIGlmICghZ3JvdXApIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgZ3JvdXAgPSBjaGlsZC5hZGRDb21wb25lbnQoVG1vT2JqZWN0R3JvdXApO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgZ3JvdXAuX2luaXQobGF5ZXJJbmZvLCBtYXBJbmZvLCB0ZXhHcmlkcywgdGhpcyk7XHJcbiAgICAgICAgICAgICAgICAgICAgZ3JvdXBzLnB1c2goZ3JvdXApO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgZWxzZSBpZiAobGF5ZXJJbmZvIGluc3RhbmNlb2YgY2MuVE1YSW1hZ2VMYXllckluZm8pIHtcclxuICAgICAgICAgICAgICAgICAgICBsZXQgdGV4dHVyZSA9IGxheWVySW5mby5zb3VyY2VJbWFnZTtcclxuICAgICAgICAgICAgICAgICAgICBjaGlsZC5vcGFjaXR5ID0gbGF5ZXJJbmZvLm9wYWNpdHk7XHJcbiAgICAgICAgICAgICAgICAgICAgY2hpbGQubGF5ZXJJbmZvID0gbGF5ZXJJbmZvO1xyXG4gICAgICAgICAgICAgICAgICAgIGNoaWxkLl9vZmZzZXQgPSBjYy52MihsYXllckluZm8ub2Zmc2V0LngsIC1sYXllckluZm8ub2Zmc2V0LnkpO1xyXG5cclxuICAgICAgICAgICAgICAgICAgICBsZXQgaW1hZ2UgPSBjaGlsZC5nZXRDb21wb25lbnQoY2MuU3ByaXRlKTtcclxuICAgICAgICAgICAgICAgICAgICBpZiAoIWltYWdlKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGltYWdlID0gY2hpbGQuYWRkQ29tcG9uZW50KGNjLlNwcml0ZSk7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgICAgICAgICBsZXQgc3BmID0gaW1hZ2Uuc3ByaXRlRnJhbWUgfHwgbmV3IGNjLlNwcml0ZUZyYW1lKCk7XHJcbiAgICAgICAgICAgICAgICAgICAgc3BmLnNldFRleHR1cmUodGV4dHVyZSk7XHJcbiAgICAgICAgICAgICAgICAgICAgaW1hZ2Uuc3ByaXRlRnJhbWUgPSBzcGY7XHJcblxyXG4gICAgICAgICAgICAgICAgICAgIGNoaWxkLndpZHRoID0gdGV4dHVyZS53aWR0aDtcclxuICAgICAgICAgICAgICAgICAgICBjaGlsZC5oZWlnaHQgPSB0ZXh0dXJlLmhlaWdodDtcclxuICAgICAgICAgICAgICAgICAgICBpbWFnZXMucHVzaChjaGlsZCk7XHJcbiAgICAgICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAgICAgbWF4V2lkdGggPSBNYXRoLm1heChtYXhXaWR0aCwgY2hpbGQud2lkdGgpO1xyXG4gICAgICAgICAgICAgICAgbWF4SGVpZ2h0ID0gTWF0aC5tYXgobWF4SGVpZ2h0LCBjaGlsZC5oZWlnaHQpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICAvLyDorr7nva7mnZDotKjnmoR0ZXh0dXJl5bGe5oCnXHJcbiAgICAgICAgbGV0IG9iamVjdFRleHR1cmVzID0gdGhpcy5fb2JqZWN0VGV4dHVyZXM7XHJcbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBvYmplY3RUZXh0dXJlcy5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgICAgICBsZXQgaWR4ID0gaSA9PT0gMCA/ICcnIDogaTtcclxuICAgICAgICAgICAgdGhpcy5vYmplY3RNYXRlcmlhbC5zZXRQcm9wZXJ0eShgdGV4dHVyZSR7aWR4fWAsIG9iamVjdFRleHR1cmVzW2ldLCAwKTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGxldCBjaGlsZHJlbiA9IG5vZGUuY2hpbGRyZW47XHJcbiAgICAgICAgZm9yIChsZXQgaSA9IDAsIG4gPSBjaGlsZHJlbi5sZW5ndGg7IGkgPCBuOyBpKyspIHtcclxuICAgICAgICAgICAgbGV0IGMgPSBjaGlsZHJlbltpXTtcclxuICAgICAgICAgICAgaWYgKG9sZE5vZGVOYW1lc1tjLl9uYW1lXSkge1xyXG4gICAgICAgICAgICAgICAgYy5kZXN0cm95KCk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHRoaXMubm9kZS53aWR0aCA9IG1heFdpZHRoO1xyXG4gICAgICAgIHRoaXMubm9kZS5oZWlnaHQgPSBtYXhIZWlnaHQ7XHJcbiAgICAgICAgdGhpcy5fc3luY0FuY2hvclBvaW50KCk7XHJcbiAgICB9LFxyXG5cclxuICAgIGdldE9iamVjdE1hdGVyaWFsOiBmdW5jdGlvbiAoKSB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMub2JqZWN0TWF0ZXJpYWw7XHJcbiAgICB9LFxyXG5cclxuICAgIGlzTm9Db2xvcjogZnVuY3Rpb24gKCkge1xyXG4gICAgICAgIHJldHVybiB0aGlzLm5vQ29sb3I7XHJcbiAgICB9LFxyXG5cclxuICAgIGlzU2luZ2xlVGV4dHVyZTogZnVuY3Rpb24gKCkge1xyXG4gICAgICAgIHJldHVybiB0aGlzLnNpbmdsZVRleHR1cmU7XHJcbiAgICB9LFxyXG5cclxuICAgIGdldE9iamVjdFRleHR1cmVzOiBmdW5jdGlvbiAoKSB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuX29iamVjdFRleHR1cmVzO1xyXG4gICAgfVxyXG59KTsiXX0= +//------QC-SOURCE-SPLIT------ + + (function() { + var nodeEnv = typeof require !== 'undefined' && typeof process !== 'undefined'; + var __module = nodeEnv ? module : {exports:{}}; + var __filename = 'preview-scripts/assets/Script/module/RankList/List.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, 'd5421HgLShFKIjj5f18m1mi', 'List'); +// Script/module/RankList/List.ts + +"use strict"; +// Learn TypeScript: +// - https://docs.cocos.com/creator/manual/en/scripting/typescript.html +// Learn Attribute: +// - https://docs.cocos.com/creator/manual/en/scripting/reference/attributes.html +// Learn life-cycle callbacks: +// - https://docs.cocos.com/creator/manual/en/scripting/life-cycle-callbacks.html +var __extends = (this && this.__extends) || (function () { + var extendStatics = function (d, b) { + extendStatics = Object.setPrototypeOf || + ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) || + function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; }; + return extendStatics(d, b); + }; + return function (d, b) { + extendStatics(d, b); + function __() { this.constructor = d; } + d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); + }; +})(); +var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) { + var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; + if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc); + else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; + return c > 3 && r && Object.defineProperty(target, key, r), r; +}; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.StartAxisType = exports.ListType = void 0; +var ItemRender_1 = require("./ItemRender"); +var _a = cc._decorator, ccclass = _a.ccclass, property = _a.property; +/**列表排列方式 */ +var ListType; +(function (ListType) { + /**水平排列 */ + ListType[ListType["Horizontal"] = 1] = "Horizontal"; + /**垂直排列 */ + ListType[ListType["Vertical"] = 2] = "Vertical"; + /**网格排列 */ + ListType[ListType["Grid"] = 3] = "Grid"; +})(ListType = exports.ListType || (exports.ListType = {})); +/**网格布局中的方向 */ +var StartAxisType; +(function (StartAxisType) { + /**水平排列 */ + StartAxisType[StartAxisType["Horizontal"] = 1] = "Horizontal"; + /**垂直排列 */ + StartAxisType[StartAxisType["Vertical"] = 2] = "Vertical"; +})(StartAxisType = exports.StartAxisType || (exports.StartAxisType = {})); +/** + * 列表 + * 根据cocos_example的listView改动而来 + * @author chenkai 2020.7.8 + * @example + * 1.创建cocos的ScrollView组件,添加List,设置List属性即可 + * + */ +var List = /** @class */ (function (_super) { + __extends(List, _super); + function List() { + var _this = _super !== null && _super.apply(this, arguments) || this; + //==================== 属性面板 ========================= + /**列表选项 */ + _this.itemRender = null; + /**排列方式 */ + _this.type = ListType.Vertical; + /**网格布局中的方向 */ + _this.startAxis = StartAxisType.Horizontal; + /**列表项之间X间隔 */ + _this.spaceX = 0; + /**列表项之间Y间隔 */ + _this.spaceY = 0; + /**上间距 */ + _this.padding_top = 0; + /**下间距 */ + _this.padding_buttom = 0; + /**左间距 */ + _this.padding_left = 0; + _this._padding = 0; + /**右间距 */ + _this.padding_right = 0; + //====================== 滚动容器 =============================== + /**列表滚动容器 */ + _this.scrollView = null; + /**scrollView的内容容器 */ + _this.content = null; + //======================== 列表项 =========================== + /**列表项数据 */ + _this.itemDataList = []; + /**应创建的实例数量 */ + _this.spawnCount = 0; + /**存放列表项实例的数组 */ + _this.itemList = []; + /**item的高度 */ + _this.itemHeight = 0; + /**item的宽度 */ + _this.itemWidth = 0; + /**存放不再使用中的列表项 */ + _this.itemPool = []; + //======================= 计算参数 ========================== + /**距离scrollView中心点的距离,超过这个距离的item会被重置,一般设置为 scrollVIew.height/2 + item.heigt/2 + space,因为这个距离item正好超出scrollView显示范围 */ + _this.halfScrollView = 0; + /**上一次content的X值,用于和现在content的X值比较,得出是向左还是向右滚动 */ + _this.lastContentPosX = 0; + /**上一次content的Y值,用于和现在content的Y值比较,得出是向上还是向下滚动 */ + _this.lastContentPosY = 0; + /**网格行数 */ + _this.gridRow = 0; + /**网格列数 */ + _this.gridCol = 0; + /**刷新时间,单位s */ + _this.updateTimer = 0; + /**刷新间隔,单位s */ + _this.updateInterval = 0.1; + /**是否滚动容器 */ + _this.bScrolling = false; + /**刷新的函数 */ + _this.updateFun = function () { }; + return _this; + } + List.prototype.onLoad = function () { + this.itemHeight = this.itemRender.height; + this.itemWidth = this.itemRender.width; + this.scrollView = this.node.getComponent(cc.ScrollView); + this.content = this.scrollView.content; + this.content.anchorX = 0; + this.content.anchorY = 1; + this.content.removeAllChildren(); + this.scrollView.node.on("scrolling", this.onScrolling, this); + }; + /** + * 列表数据 (列表数据复制使用,如果列表数据改变,则需要重新设置一遍数据) + * @param itemDataList item数据列表 + */ + List.prototype.setData = function (itemDataList) { + this.itemDataList = itemDataList.slice(); + this.updateContent(); + }; + /**计算列表的各项参数 */ + List.prototype.countListParam = function () { + var dataLen = this.itemDataList.length; + if (this.type == ListType.Vertical) { + this.scrollView.horizontal = false; + this.scrollView.vertical = true; + this.content.width = this.content.parent.width; + this.content.height = dataLen * this.itemHeight + (dataLen - 1) * this.spaceY + this.padding_top + this.padding_buttom; + this.spawnCount = Math.round(this.scrollView.node.height / (this.itemHeight + this.spaceY)) + 2; //计算创建的item实例数量,比当前scrollView容器能放下的item数量再加上2个 + this.halfScrollView = this.scrollView.node.height / 2 + this.itemHeight / 2 + this.spaceY; //计算bufferZone,item的显示范围 + this.updateFun = this.updateV; + } + else if (this.type == ListType.Horizontal) { + this.scrollView.horizontal = true; + this.scrollView.vertical = false; + this.content.width = dataLen * this.itemWidth + (dataLen - 1) * this.spaceX + this.padding_left + this.padding_right; + this.content.height = this.content.parent.height; + this.spawnCount = Math.round(this.scrollView.node.width / (this.itemWidth + this.spaceX)) + 2; + this.halfScrollView = this.scrollView.node.width / 2 + this.itemWidth / 2 + this.spaceX; + this.updateFun = this.udpateH; + } + else if (this.type == ListType.Grid) { + if (this.startAxis == StartAxisType.Vertical) { + this.scrollView.horizontal = false; + this.scrollView.vertical = true; + this.content.width = this.content.parent.width; + //如果left和right间隔过大,导致放不下一个item,则left和right都设置为0,相当于不生效 + if (this.padding_left + this.padding_right + this.itemWidth + this.spaceX > this.content.width) { + this.padding_left = 0; + this.padding_right = 0; + console.error("padding_left或padding_right过大"); + } + this.gridCol = Math.floor((this.content.width - this.padding_left - this.padding_right) / (this.itemWidth + this.spaceX)); + this.gridRow = Math.ceil(dataLen / this.gridCol); + this.content.height = this.gridRow * this.itemHeight + (this.gridRow - 1) * this.spaceY + this.padding_top + this.padding_buttom; + this.spawnCount = Math.round(this.scrollView.node.height / (this.itemHeight + this.spaceY)) * this.gridCol + this.gridCol * 2; + this.halfScrollView = this.scrollView.node.height / 2 + this.itemHeight / 2 + this.spaceY; + this.updateFun = this.updateGrid_V; + } + else if (this.startAxis == StartAxisType.Horizontal) { + this.scrollView.horizontal = true; + this.scrollView.vertical = false; + //计算高间隔 + this.content.height = this.content.parent.height; + //如果left和right间隔过大,导致放不下一个item,则left和right都设置为0,相当于不生效 + if (this.padding_top + this.padding_buttom + this.itemHeight + this.spaceY > this.content.height) { + this.padding_top = 0; + this.padding_buttom = 0; + console.error("padding_top或padding_buttom过大"); + } + this.gridRow = Math.floor((this.content.height - this.padding_top - this.padding_buttom) / (this.itemHeight + this.spaceY)); + this.gridCol = Math.ceil(dataLen / this.gridRow); + this.content.width = this.gridCol * this.itemWidth + (this.gridCol - 1) * this.spaceX + this.padding_left + this.padding_right; + this.spawnCount = Math.round(this.scrollView.node.width / (this.itemWidth + this.spaceX)) * this.gridRow + this.gridRow * 2; + this.halfScrollView = this.scrollView.node.width / 2 + this.itemWidth / 2 + this.spaceX; + this.updateFun = this.updateGrid_H; + } + } + }; + /** + * 创建列表 + * @param startIndex 起始显示的数据索引 0表示第一项 + * @param offset scrollView偏移量 + */ + List.prototype.createList = function (startIndex, offset) { + //当需要显示的数据长度 > 虚拟列表长度, 删除最末尾几个数据时,列表需要重置位置到scrollView最底端 + if (this.itemDataList.length > this.spawnCount && (startIndex + this.spawnCount - 1) >= this.itemDataList.length) { + startIndex = this.itemDataList.length - this.spawnCount; + offset = this.scrollView.getMaxScrollOffset(); + //当需要显示的数据长度 <= 虚拟列表长度, 隐藏多余的虚拟列表项 + } + else if (this.itemDataList.length <= this.spawnCount) { + startIndex = 0; + } + for (var i = 0; i < this.spawnCount; i++) { + var item = void 0; + //需要显示的数据索引在数据范围内,则item实例显示出来 + if (i + startIndex < this.itemDataList.length) { + if (this.itemList[i] == null) { + item = this.getItem(); + this.itemList.push(item); + item.parent = this.content; + } + else { + item = this.itemList[i]; + } + //需要显示的数据索引超过了数据范围,则item实例隐藏起来 + } + else { + //item实例数量 > 需要显示的数据量 + if (this.itemList.length > (this.itemDataList.length - startIndex)) { + item = this.itemList.pop(); + item.removeFromParent(); + this.itemPool.push(item); + } + continue; + } + var itemRender = item.getComponent(ItemRender_1.default); + itemRender.itemIndex = i + startIndex; + itemRender.data = this.itemDataList[i + startIndex]; + itemRender.dataChanged(); + if (this.type == ListType.Vertical) { + //因为content的锚点X是0,所以item的x值是content.with/2表示居中,锚点Y是1,所以item的y值从content顶部向下是0到负无穷。所以item.y= -item.height/2时,是在content的顶部。 + item.setPosition(this.content.width / 2, -item.height * (0.5 + i + startIndex) - this.spaceY * (i + startIndex) - this.padding_top); + } + else if (this.type == ListType.Horizontal) { + item.setPosition(item.width * (0.5 + i + startIndex) + this.spaceX * (i + startIndex) + this.padding_left, -this.content.height / 2); + } + else if (this.type == ListType.Grid) { + if (this.startAxis == StartAxisType.Vertical) { + var row = Math.floor((i + startIndex) / this.gridCol); + var col = (i + startIndex) % this.gridCol; + item.setPosition(item.width * (0.5 + col) + this.spaceX * col + this.padding_left, -item.height * (0.5 + row) - this.spaceY * row - this.padding_top); + item.opacity = 255; + } + else if (this.startAxis == StartAxisType.Horizontal) { + var row = (i + startIndex) % this.gridRow; + var col = Math.floor((i + startIndex) / this.gridRow); + item.setPosition(item.width * (0.5 + col) + this.spaceX * col + this.padding_left, -item.height * (0.5 + row) - this.spaceY * row - this.padding_top); + item.opacity = 255; + } + } + } + this.scrollView.scrollToOffset(offset); + }; + /**获取一个列表项 */ + List.prototype.getItem = function () { + if (this.itemPool.length == 0) { + return cc.instantiate(this.itemRender); + } + else { + return this.itemPool.pop(); + } + }; + List.prototype.update = function (dt) { + if (this.bScrolling == false) { + return; + } + this.updateTimer += dt; + if (this.updateTimer < this.updateInterval) { + return; + } + this.updateTimer = 0; + this.bScrolling = false; + this.updateFun(); + }; + List.prototype.onScrolling = function () { + this.bScrolling = true; + }; + /**垂直排列 */ + List.prototype.updateV = function () { + var items = this.itemList; + var item; + var bufferZone = this.halfScrollView; + var isUp = this.scrollView.content.y > this.lastContentPosY; + var offset = (this.itemHeight + this.spaceY) * items.length; + for (var i = 0; i < items.length; i++) { + item = items[i]; + var viewPos = this.getPositionInView(item); + if (isUp) { + //item上滑时,超出了scrollView上边界,将item移动到下方复用,item移动到下方的位置必须不超过content的下边界 + if (viewPos.y > bufferZone && item.y - offset - this.padding_buttom > -this.content.height) { + var itemRender = item.getComponent(ItemRender_1.default); + var itemIndex = itemRender.itemIndex + items.length; + itemRender.itemIndex = itemIndex; + itemRender.data = this.itemDataList[itemIndex]; + itemRender.dataChanged(); + item.y = item.y - offset; + } + } + else { + //item下滑时,超出了scrollView下边界,将item移动到上方复用,item移动到上方的位置必须不超过content的上边界 + if (viewPos.y < -bufferZone && item.y + offset + this.padding_top < 0) { + var itemRender = item.getComponent(ItemRender_1.default); + var itemIndex = itemRender.itemIndex - items.length; + itemRender.itemIndex = itemIndex; + itemRender.data = this.itemDataList[itemIndex]; + itemRender.dataChanged(); + item.y = item.y + offset; + } + } + } + this.lastContentPosY = this.scrollView.content.y; + }; + /**水平排列 */ + List.prototype.udpateH = function () { + var items = this.itemList; + var item; + var bufferZone = this.halfScrollView; + var isRight = this.scrollView.content.x > this.lastContentPosX; + var offset = (this.itemWidth + this.spaceX) * items.length; + for (var i = 0; i < items.length; i++) { + item = items[i]; + var viewPos = this.getPositionInView(item); + if (isRight) { + //item右滑时,超出了scrollView右边界,将item移动到左方复用,item移动到左方的位置必须不超过content的左边界 + if (viewPos.x > bufferZone && item.x - offset - this.padding_left > 0) { + var itemRender = item.getComponent(ItemRender_1.default); + var itemIndex = itemRender.itemIndex - items.length; + itemRender.itemIndex = itemIndex; + itemRender.data = this.itemDataList[itemIndex]; + itemRender.dataChanged(); + item.x = item.x - offset; + } + } + else { + //item左滑时,超出了scrollView左边界,将item移动到右方复用,item移动到右方的位置必须不超过content的右边界 + if (viewPos.x < -bufferZone && item.x + offset + this.padding_right < this.content.width) { + var itemRender = item.getComponent(ItemRender_1.default); + var itemIndex = itemRender.itemIndex + items.length; + itemRender.itemIndex = itemIndex; + itemRender.data = this.itemDataList[itemIndex]; + itemRender.dataChanged(); + item.x = item.x + offset; + } + } + } + this.lastContentPosX = this.scrollView.content.x; + }; + /**网格垂直排列 */ + List.prototype.updateGrid_V = function () { + var items = this.itemList; + var item; + var bufferZone = this.halfScrollView; + var isUp = this.scrollView.content.y > this.lastContentPosY; + var offset = (this.itemHeight + this.spaceY) * (this.spawnCount / this.gridCol); + for (var i = 0; i < items.length; i++) { + item = items[i]; + var viewPos = this.getPositionInView(item); + if (isUp) { + //item上滑时,超出了scrollView上边界,将item移动到下方复用,item移动到下方的位置必须不超过content的下边界 + if (viewPos.y > bufferZone && item.y - offset - this.padding_buttom > -this.content.height) { + var itemRender = item.getComponent(ItemRender_1.default); + var itemIndex = itemRender.itemIndex + (this.spawnCount / this.gridCol) * this.gridCol; + if (this.itemDataList[itemIndex] != null) { + item.y = item.y - offset; + itemRender.itemIndex = itemIndex; + itemRender.data = this.itemDataList[itemIndex]; + itemRender.dataChanged(); + item.opacity = 255; + } + else { + item.y = item.y - offset; + itemRender.itemIndex = itemIndex; + item.opacity = 0; + } + } + } + else { //item下滑时,超出了scrollView下边界,将item移动到上方复用,item移动到上方的位置必须不超过content的上边界 + if (viewPos.y < -bufferZone && item.y + offset + this.padding_top < 0) { + var itemRender = item.getComponent(ItemRender_1.default); + var itemIndex = itemRender.itemIndex - (this.spawnCount / this.gridCol) * this.gridCol; + if (this.itemDataList[itemIndex] != null) { + item.y = item.y + offset; + itemRender.itemIndex = itemIndex; + itemRender.data = this.itemDataList[itemIndex]; + itemRender.dataChanged(); + item.opacity = 255; + } + else { + item.y = item.y + offset; + itemRender.itemIndex = itemIndex; + item.opacity = 0; + } + } + } + } + this.lastContentPosY = this.scrollView.content.y; + }; + /**网格水平排列 */ + List.prototype.updateGrid_H = function () { + var items = this.itemList; + var item; + var bufferZone = this.halfScrollView; + var isRight = this.scrollView.content.x > this.lastContentPosX; + var offset = (this.itemWidth + this.spaceX) * (this.spawnCount / this.gridRow); + for (var i = 0; i < items.length; i++) { + item = items[i]; + var viewPos = this.getPositionInView(item); + if (isRight) { + //item右滑时,超出了scrollView右边界,将item移动到左方复用,item移动到左方的位置必须不超过content的左边界 + if (viewPos.x > bufferZone && item.x - offset - this.padding_left > 0) { + var itemRender = item.getComponent(ItemRender_1.default); + var itemIndex = itemRender.itemIndex - (this.spawnCount / this.gridRow) * this.gridRow; + if (this.itemDataList[itemIndex] != null) { + item.x = item.x - offset; + itemRender.itemIndex = itemIndex; + itemRender.data = this.itemDataList[itemIndex]; + itemRender.dataChanged(); + item.opacity = 255; + } + else { + item.x = item.x - offset; + itemRender.itemIndex = itemIndex; + item.opacity = 0; + } + } + } + else { + //item左滑时,超出了scrollView左边界,将item移动到右方复用,item移动到右方的位置必须不超过content的右边界 + if (viewPos.x < -bufferZone && item.x + offset + this.padding_right < this.content.width) { + var itemRender = item.getComponent(ItemRender_1.default); + var itemIndex = itemRender.itemIndex + (this.spawnCount / this.gridRow) * this.gridRow; + if (this.itemDataList[itemIndex] != null) { + item.x = item.x + offset; + itemRender.itemIndex = itemIndex; + itemRender.data = this.itemDataList[itemIndex]; + itemRender.dataChanged(); + item.opacity = 255; + } + else { + item.x = item.x + offset; + itemRender.itemIndex = itemIndex; + item.opacity = 0; + } + } + } + } + this.lastContentPosX = this.scrollView.content.x; + }; + /**获取item在scrollView的局部坐标 */ + List.prototype.getPositionInView = function (item) { + var worldPos = item.parent.convertToWorldSpaceAR(item.position); + var viewPos = this.scrollView.node.convertToNodeSpaceAR(worldPos); + return viewPos; + }; + /**获取列表数据 */ + List.prototype.getListData = function () { + return this.itemDataList; + }; + /** + * 增加一项数据到列表的末尾 + * @param data 数据 + */ + List.prototype.addItem = function (data) { + this.itemDataList.push(data); + this.updateContent(); + }; + /** + * 增加一项数据到列表指定位置 + * @param index 位置,0表示第1项 + * @param data 数据 + */ + List.prototype.addItemAt = function (index, data) { + if (this.itemDataList[index] != null || this.itemDataList.length == index) { + this.itemDataList.splice(index, 1, data); + this.updateContent(); + } + }; + /** + * 删除一项数据 + * @param index 删除项的位置 ,0表示第1项 + */ + List.prototype.deleteItem = function (index) { + if (this.itemDataList[index] != null) { + this.itemDataList.splice(index, 1); + this.updateContent(); + } + }; + /** + * 改变一项数据 + * @param index 位置,0表示第1项 + * @param data 替换的数据 + */ + List.prototype.changeItem = function (index, data) { + if (this.itemDataList[index] != null) { + this.itemDataList[index] = data; + this.updateContent(); + } + }; + /**获取第一个Item的位置 */ + List.prototype.updateContent = function () { + //显示列表实例为0个 + if (this.itemList.length == 0) { + this.countListParam(); + this.createList(0, new cc.Vec2(0, 0)); + //显示列表的实例不为0个,则需要重新排列item实例数组 + } + else { + if (this.type == ListType.Vertical) { + this.itemList.sort(function (a, b) { + return b.y - a.y; + }); + } + else if (this.type == ListType.Horizontal) { + this.itemList.sort(function (a, b) { + return a.x - b.x; + }); + } + else if (this.type == ListType.Grid) { + if (this.startAxis == StartAxisType.Vertical) { + this.itemList.sort(function (a, b) { + return a.x - b.x; + }); + this.itemList.sort(function (a, b) { + return b.y - a.y; + }); + } + else if (this.startAxis == StartAxisType.Horizontal) { + this.itemList.sort(function (a, b) { + return b.y - a.y; + }); + this.itemList.sort(function (a, b) { + return a.x - b.x; + }); + } + } + this.countListParam(); + //获取第一个item实例需要显示的数据索引 + var startIndex = this.itemList[0].getComponent(ItemRender_1.default).itemIndex; + if (this.type == ListType.Grid && this.startAxis == StartAxisType.Vertical) { + startIndex += (startIndex + this.spawnCount) % this.gridCol; + } + else if (this.type == ListType.Grid && this.startAxis == StartAxisType.Horizontal) { + startIndex += (startIndex + this.spawnCount) % this.gridRow; + } + //getScrollOffset()和scrollToOffset()的x值是相反的 + var offset = this.scrollView.getScrollOffset(); + offset.x = -offset.x; + this.createList(startIndex, offset); + } + }; + /**销毁 */ + List.prototype.onDestroy = function () { + //清理列表项 + var len = this.itemList.length; + for (var i = 0; i < len; i++) { + if (cc.isValid(this.itemList[i], true)) { + this.itemList[i].destroy(); + } + } + this.itemList.length = 0; + //清理对象池 + len = this.itemPool.length; + for (var i = 0; i < len; i++) { + if (cc.isValid(this.itemPool[i], true)) { + this.itemPool[i].destroy(); + } + } + this.itemPool.length = 0; + //清理列表数据 + this.itemDataList.length = 0; + }; + __decorate([ + property({ type: cc.Node, tooltip: "列表项" }) + ], List.prototype, "itemRender", void 0); + __decorate([ + property({ type: cc.Enum(ListType), tooltip: "排列方式" }) + ], List.prototype, "type", void 0); + __decorate([ + property({ type: cc.Enum(StartAxisType), tooltip: "网格布局中的方向", visible: function () { return this.type == ListType.Grid; } }) + ], List.prototype, "startAxis", void 0); + __decorate([ + property({ type: cc.Integer, tooltip: "列表项X间隔", visible: function () { return (this.type == ListType.Horizontal || this.type == ListType.Grid); } }) + ], List.prototype, "spaceX", void 0); + __decorate([ + property({ type: cc.Integer, tooltip: "列表项Y间隔", visible: function () { return this.type == ListType.Vertical || this.type == ListType.Grid; } }) + ], List.prototype, "spaceY", void 0); + __decorate([ + property({ type: cc.Integer, tooltip: "上间距", visible: function () { return (this.type == ListType.Vertical || this.type == ListType.Grid); } }) + ], List.prototype, "padding_top", void 0); + __decorate([ + property({ type: cc.Integer, tooltip: "下间距", visible: function () { return (this.type == ListType.Vertical || this.type == ListType.Grid); } }) + ], List.prototype, "padding_buttom", void 0); + __decorate([ + property({ type: cc.Integer, tooltip: "左间距", visible: function () { return (this.type == ListType.Horizontal || this.type == ListType.Grid); } }) + ], List.prototype, "padding_left", void 0); + __decorate([ + property(cc.Integer) + ], List.prototype, "_padding", void 0); + __decorate([ + property({ type: cc.Integer, tooltip: "右间距", visible: function () { return (this.type == ListType.Horizontal || this.type == ListType.Grid); } }) + ], List.prototype, "padding_right", void 0); + List = __decorate([ + ccclass + ], List); + return List; +}(cc.Component)); +exports.default = List; + +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,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImFzc2V0c1xcU2NyaXB0XFxtb2R1bGVcXFJhbmtMaXN0XFxMaXN0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSxvQkFBb0I7QUFDcEIsd0VBQXdFO0FBQ3hFLG1CQUFtQjtBQUNuQixrRkFBa0Y7QUFDbEYsOEJBQThCO0FBQzlCLGtGQUFrRjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUVsRiwyQ0FBcUM7QUFFL0IsSUFBQSxLQUF3QixFQUFFLENBQUMsVUFBVSxFQUFuQyxPQUFPLGFBQUEsRUFBRSxRQUFRLGNBQWtCLENBQUM7QUFFNUMsWUFBWTtBQUNaLElBQVksUUFPWDtBQVBELFdBQVksUUFBUTtJQUNoQixVQUFVO0lBQ1YsbURBQWMsQ0FBQTtJQUNkLFVBQVU7SUFDViwrQ0FBWSxDQUFBO0lBQ1osVUFBVTtJQUNWLHVDQUFRLENBQUE7QUFDWixDQUFDLEVBUFcsUUFBUSxHQUFSLGdCQUFRLEtBQVIsZ0JBQVEsUUFPbkI7QUFFRCxjQUFjO0FBQ2QsSUFBWSxhQUtYO0FBTEQsV0FBWSxhQUFhO0lBQ3JCLFVBQVU7SUFDViw2REFBYyxDQUFBO0lBQ2QsVUFBVTtJQUNWLHlEQUFZLENBQUE7QUFDaEIsQ0FBQyxFQUxXLGFBQWEsR0FBYixxQkFBYSxLQUFiLHFCQUFhLFFBS3hCO0FBRUQ7Ozs7Ozs7R0FPRztBQUVIO0lBQWtDLHdCQUFZO0lBQTlDO1FBQUEscUVBeWlCQztRQXZpQkcscURBQXFEO1FBQ3JELFVBQVU7UUFFSCxnQkFBVSxHQUFZLElBQUksQ0FBQztRQUVsQyxVQUFVO1FBRUgsVUFBSSxHQUFhLFFBQVEsQ0FBQyxRQUFRLENBQUM7UUFFMUMsY0FBYztRQUVQLGVBQVMsR0FBa0IsYUFBYSxDQUFDLFVBQVUsQ0FBQztRQUUzRCxjQUFjO1FBRVAsWUFBTSxHQUFXLENBQUMsQ0FBQztRQUUxQixjQUFjO1FBRVAsWUFBTSxHQUFXLENBQUMsQ0FBQztRQUUxQixTQUFTO1FBRUYsaUJBQVcsR0FBVyxDQUFDLENB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SSxDQUFDLENBQUEsQ0FBQyxDQUFDLEVBQUUsQ0FBQzs4Q0FDdEc7SUFLaEM7UUFEQyxRQUFRLENBQUMsRUFBRSxDQUFDLE9BQU8sQ0FBQzswQ0FDTztJQUk1QjtRQURDLFFBQVEsQ0FBQyxFQUFFLElBQUksRUFBRSxFQUFFLENBQUMsT0FBTyxFQUFFLE9BQU8sRUFBRSxLQUFLLEVBQUUsT0FBTyxnQkFBSyxPQUFPLENBQUMsSUFBSSxDQUFDLElBQUksSUFBSSxRQUFRLENBQUMsVUFBVSxJQUFJLElBQUksQ0FBQyxJQUFJLElBQUksUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFBLENBQUMsQ0FBQyxFQUFFLENBQUM7K0NBQ3JHO0lBMUNoQixJQUFJO1FBRHhCLE9BQU87T0FDYSxJQUFJLENBeWlCeEI7SUFBRCxXQUFDO0NBemlCRCxBQXlpQkMsQ0F6aUJpQyxFQUFFLENBQUMsU0FBUyxHQXlpQjdDO2tCQXppQm9CLElBQUkiLCJmaWxlIjoiIiwic291cmNlUm9vdCI6Ii8iLCJzb3VyY2VzQ29udGVudCI6WyIvLyBMZWFybiBUeXBlU2NyaXB0OlxyXG4vLyAgLSBodHRwczovL2RvY3MuY29jb3MuY29tL2NyZWF0b3IvbWFudWFsL2VuL3NjcmlwdGluZy90eXBlc2NyaXB0Lmh0bWxcclxuLy8gTGVhcm4gQXR0cmlidXRlOlxyXG4vLyAgLSBodHRwczovL2RvY3MuY29jb3MuY29tL2NyZWF0b3IvbWFudWFsL2VuL3NjcmlwdGluZy9yZWZlcmVuY2UvYXR0cmlidXRlcy5odG1sXHJcbi8vIExlYXJuIGxpZmUtY3ljbGUgY2FsbGJhY2tzOlxyXG4vLyAgLSBodHRwczovL2RvY3MuY29jb3MuY29tL2NyZWF0b3IvbWFudWFsL2VuL3NjcmlwdGluZy9saWZlLWN5Y2xlLWNhbGxiYWNrcy5odG1sXHJcblxyXG5pbXBvcnQgSXRlbVJlbmRlciBmcm9tIFwiLi9JdGVtUmVuZGVyXCJcclxuXHJcbmNvbnN0IHsgY2NjbGFzcywgcHJvcGVydHkgfSA9IGNjLl9kZWNvcmF0b3I7XHJcblxyXG4vKirliJfooajmjpLliJfmlrnlvI8gKi9cclxuZXhwb3J0IGVudW0gTGlzdFR5cGUge1xyXG4gICAgLyoq5rC05bmz5o6S5YiXICovXHJcbiAgICBIb3Jpem9udGFsID0gMSxcclxuICAgIC8qKuWeguebtOaOkuWIlyAqL1xyXG4gICAgVmVydGljYWwgPSAyLFxyXG4gICAgLyoq572R5qC85o6S5YiXICovXHJcbiAgICBHcmlkID0gM1xyXG59XHJcblxyXG4vKirnvZHmoLzluIPlsYDkuK3nmoTmlrnlkJEgKi9cclxuZXhwb3J0IGVudW0gU3RhcnRBeGlzVHlwZSB7XHJcbiAgICAvKirmsLTlubPmjpLliJcgKi9cclxuICAgIEhvcml6b250YWwgPSAxLFxyXG4gICAgLyoq5Z6C55u05o6S5YiXICovXHJcbiAgICBWZXJ0aWNhbCA9IDIsXHJcbn1cclxuXHJcbi8qKlxyXG4gKiDliJfooahcclxuICog5qC55o2uY29jb3NfZXhhbXBsZeeahGxpc3RWaWV35pS55Yqo6ICM5p2lXHJcbiAqIEBhdXRob3IgY2hlbmthaSAyMDIwLjcuOFxyXG4gKiBAZXhhbXBsZVxyXG4gKiAgMS7liJvlu7pjb2Nvc+eahFNjcm9sbFZpZXfnu4Tku7bvvIzmt7vliqBMaXN077yM6K6+572uTGlzdOWxnuaAp+WNs+WPr1xyXG4gKiAgXHJcbiAqL1xyXG5AY2NjbGFzc1xyXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBMaXN0IGV4dGVuZHMgY2MuQ29tcG9uZW50IHtcclxuXHJcbiAgICAvLz09PT09PT09PT09PT09PT09PT09IOWxnuaAp+mdouadvyA9PT09PT09PT09PT09PT09PT09PT09PT09XHJcbiAgICAvKirliJfooajpgInpobkgKi9cclxuICAgIEBwcm9wZXJ0eSh7IHR5cGU6IGNjLk5vZGUsIHRvb2x0aXA6IFwi5YiX6KGo6aG5XCIgfSlcclxuICAgIHB1YmxpYyBpdGVtUmVuZGVyOiBjYy5Ob2RlID0gbnVsbDtcclxuXHJcbiAgICAvKirmjpLliJfmlrnlvI8gKi9cclxuICAgIEBwcm9wZXJ0eSh7IHR5cGU6IGNjLkVudW0oTGlzdFR5cGUpLCB0b29sdGlwOiBcIuaOkuWIl+aWueW8j1wiIH0pXHJcbiAgICBwdWJsaWMgdHlwZTogTGlzdFR5cGUgPSBMaXN0VHlwZS5WZXJ0aWNhbDtcclxuXHJcbiAgICAvKirnvZHmoLzluIPlsYDkuK3nmoTmlrnlkJEgKi9cclxuICAgIEBwcm9wZXJ0eSh7IHR5cGU6IGNjLkVudW0oU3RhcnRBeGlzVHlwZSksIHRvb2x0aXA6IFwi572R5qC85biD5bGA5Lit55qE5pa55ZCRXCIsIHZpc2libGUoKSB7IHJldHVybiB0aGlzLnR5cGUgPT0gTGlzdFR5cGUuR3JpZCB9IH0pXHJcbiAgICBwdWJsaWMgc3RhcnRBeGlzOiBTdGFydEF4aXNUeXBlID0gU3RhcnRBeGlzVHlwZS5Ib3Jpem9udGFsO1xyXG5cclxuICAgIC8qKuWIl+ihqOmhueS5i+mXtFjpl7TpmpQgKi9cclxuICAgIEBwcm9wZXJ0eSh7IHR5cGU6IGNjLkludGVnZXIsIHRvb2x0aXA6IFwi5YiX6KGo6aG5WOmXtOmalFwiLCB2aXNpYmxlKCkgeyByZXR1cm4gKHRoaXMudHlwZSA9PSBMaXN0VHlwZS5Ib3Jpem9udGFsIHx8IHRoaXMudHlwZSA9PSBMaXN0VHlwZS5HcmlkKSB9IH0pXHJcbiAgICBwdWJsaWMgc3BhY2VYOiBudW1iZXIgPSAwO1xyXG5cclxuICAgIC8qKuWIl+ihqOmhueS5i+mXtFnpl7TpmpQgKi9cclxuICAgIEBwcm9wZXJ0eSh7IHR5cGU6IGNjLkludGVnZXIsIHRvb2x0aXA6IFwi5YiX6KGo6aG5WemXtOmalFwiLCB2aXNpYmxlKCkgeyByZXR1cm4gdGhpcy50eXBlID09IExpc3RUeXBlLlZlcnRpY2FsIHx8IHRoaXMudHlwZSA9PSBMaXN0VHlwZS5HcmlkIH0gfSlcclxuICAgIHB1YmxpYyBzcGFjZVk6IG51bWJlciA9IDA7XHJcblxyXG4gICAgLyoq5LiK6Ze06LedICovXHJcbiAgICBAcHJvcGVydHkoeyB0eXBlOiBjYy5JbnRlZ2VyLCB0b29sdGlwOiBcIuS4iumXtOi3nVwiLCB2aXNpYmxlKCkgeyByZXR1cm4gKHRoaXMudHlwZSA9PSBMaXN0VHlwZS5WZXJ0aWNhbCB8fCB0aGlzLnR5cGUgPT0gTGlzdFR5cGUuR3JpZCkgfSB9KVxyXG4gICAgcHVibGljIHBhZGRpbmdfdG9wOiBudW1iZXIgPSAwO1xyXG5cclxuICAgIC8qKuS4i+mXtOi3nSAqL1xyXG4gICAgQHByb3BlcnR5KHsgdHlwZTogY2MuSW50ZWdlciwgdG9vbHRpcDogXCLkuIvpl7Tot51cIiwgdmlzaWJsZSgpIHsgcmV0dXJuICh0aGlzLnR5cGUgPT0gTGlzdFR5cGUuVmVydGljYWwgfHwgdGhpcy50eXBlID09IExpc3RUeXBlLkdyaWQpIH0gfSlcclxuICAgIHB1YmxpYyBwYWRkaW5nX2J1dHRvbTogbnVtYmVyID0gMDtcclxuXHJcbiAgICAvKirlt6bpl7Tot50gKi9cclxuICAgIEBwcm9wZXJ0eSh7IHR5cGU6IGNjLkludGVnZXIsIHRvb2x0aXA6IFwi5bem6Ze06LedXCIsIHZpc2libGUoKSB7IHJldHVybiAodGhpcy50eXBlID09IExpc3RUeXBlLkhvcml6b250YWwgfHwgdGhpcy50eXBlID09IExpc3RUeXBlLkdyaWQpIH0gfSlcclxuICAgIHB1YmxpYyBwYWRkaW5nX2xlZnQ6IG51bWJlciA9IDA7XHJcblxyXG5cclxuXHJcbiAgICBAcHJvcGVydHkoY2MuSW50ZWdlcilcclxuICAgIHB1YmxpYyBfcGFkZGluZzogbnVtYmVyID0gMDtcclxuXHJcbiAgICAvKirlj7Ppl7Tot50gKi9cclxuICAgIEBwcm9wZXJ0eSh7IHR5cGU6IGNjLkludGVnZXIsIHRvb2x0aXA6IFwi5Y+z6Ze06LedXCIsIHZpc2libGUoKSB7IHJldHVybiAodGhpcy50eXBlID09IExpc3RUeXBlLkhvcml6b250YWwgfHwgdGhpcy50eXBlID09IExpc3RUeXBlLkdyaWQpIH0gfSlcclxuICAgIHB1YmxpYyBwYWRkaW5nX3JpZ2h0OiBudW1iZXIgPSAwO1xyXG5cclxuICAgIC8vPT09PT09PT09PT09PT09PT09PT09PSDmu5rliqjlrrnlmaggPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxyXG4gICAgLyoq5YiX6KGo5rua5Yqo5a655ZmoICovXHJcbiAgICBwdWJsaWMgc2Nyb2xsVmlldzogY2MuU2Nyb2xsVmlldyA9IG51bGw7XHJcbiAgICAvKipzY3JvbGxWaWV355qE5YaF5a655a655ZmoICovXHJcbiAgICBwcml2YXRlIGNvbnRlbnQ6IGNjLk5vZGUgPSBudWxsO1xyXG5cclxuICAgIC8vPT09PT09PT09PT09PT09PT09PT09PT09IOWIl+ihqOmhuSA9PT09PT09PT09PT09PT09PT09PT09PT09PT1cclxuICAgIC8qKuWIl+ihqOmhueaVsOaNriAqL1xyXG4gICAgcHJpdmF0ZSBpdGVtRGF0YUxpc3Q6IEFycmF5PGFueT4gPSBbXTtcclxuICAgIC8qKuW6lOWIm+W7uueahOWunuS+i+aVsOmHjyAqL1xyXG4gICAgcHJpdmF0ZSBzcGF3bkNvdW50OiBudW1iZXIgPSAwO1xyXG4gICAgLyoq5a2Y5pS+5YiX6KGo6aG55a6e5L6L55qE5pWw57uEICovXHJcbiAgICBwcml2YXRlIGl0ZW1MaXN0OiBBcnJheTxjYy5Ob2RlPiA9IFtdO1xyXG4gICAgLyoqaXRlbeeahOmrmOW6piAqL1xyXG4gICAgcHJpdmF0ZSBpdGVtSGVpZ2h0OiBudW1iZXIgPSAwO1xyXG4gICAgLyoqaXRlbeeahOWuveW6piAqL1xyXG4gICAgcHJpdmF0ZSBpdGVtV2lkdGg6IG51bWJlciA9IDA7XHJcbiAgICAvKirlrZjmlL7kuI3lho3kvb/nlKjkuK3nmoTliJfooajpobkgKi9cclxuICAgIHByaXZhdGUgaXRlbVBvb2w6IEFycmF5PGNjLk5vZGU+ID0gW107XHJcblxyXG4gICAgLy89PT09PT09PT09PT09PT09PT09PT09PSDorqHnrpflj4LmlbAgPT09PT09PT09PT09PT09PT09PT09PT09PT1cclxuICAgIC8qKui3neemu3Njcm9sbFZpZXfkuK3lv4PngrnnmoTot53nprvvvIzotoXov4fov5nkuKrot53nprvnmoRpdGVt5Lya6KKr6YeN572u77yM5LiA6Iis6K6+572u5Li6IHNjcm9sbFZJZXcuaGVpZ2h0LzIgKyBpdGVtLmhlaWd0LzIgKyBzcGFjZe+8jOWboOS4uui/meS4qui3neemu2l0ZW3mraPlpb3otoXlh7pzY3JvbGxWaWV35pi+56S66IyD5Zu0ICovXHJcbiAgICBwcml2YXRlIGhhbGZTY3JvbGxWaWV3OiBudW1iZXIgPSAwO1xyXG4gICAgLyoq5LiK5LiA5qyhY29udGVudOeahFjlgLzvvIznlKjkuo7lkoznjrDlnKhjb250ZW5055qEWOWAvOavlOi+g++8jOW+l+WHuuaYr+WQkeW3pui/mOaYr+WQkeWPs+a7muWKqCAqL1xyXG4gICAgcHJpdmF0ZSBsYXN0Q29udGVudFBvc1g6IG51bWJlciA9IDA7XHJcbiAgICAvKirkuIrkuIDmrKFjb250ZW5055qEWeWAvO+8jOeUqOS6juWSjOeOsOWcqGNvbnRlbnTnmoRZ5YC85q+U6L6D77yM5b6X5Ye65piv5ZCR5LiK6L+Y5piv5ZCR5LiL5rua5YqoICovXHJcbiAgICBwcml2YXRlIGxhc3RDb250ZW50UG9zWTogbnVtYmVyID0gMDtcclxuICAgIC8qKue9keagvOihjOaVsCAqL1xyXG4gICAgcHJpdmF0ZSBncmlkUm93OiBudW1iZXIgPSAwO1xyXG4gICAgLyoq572R5qC85YiX5pWwICovXHJcbiAgICBwcml2YXRlIGdyaWRDb2w6IG51bWJlciA9IDA7XHJcbiAgICAvKirliLfmlrDml7bpl7TvvIzljZXkvY1zICovXHJcbiAgICBwcml2YXRlIHVwZGF0ZVRpbWVyOiBudW1iZXIgPSAwO1xyXG4gICAgLyoq5Yi35paw6Ze06ZqU77yM5Y2V5L2NcyAqL1xyXG4gICAgcHJpdmF0ZSB1cGRhdGVJbnRlcnZhbDogbnVtYmVyID0gMC4xO1xyXG4gICAgLyoq5piv5ZCm5rua5Yqo5a655ZmoICovXHJcbiAgICBwcml2YXRlIGJTY3JvbGxpbmc6IGJvb2xlYW4gPSBmYWxzZTtcclxuICAgIC8qKuWIt+aWsOeahOWHveaVsCAqL1xyXG4gICAgcHJpdmF0ZSB1cGRhdGVGdW46IEZ1bmN0aW9uID0gZnVuY3Rpb24gKCkgeyB9O1xyXG5cclxuICAgIG9uTG9hZCgpIHtcclxuICAgICAgICB0aGlzLml0ZW1IZWlnaHQgPSB0aGlzLml0ZW1SZW5kZXIuaGVpZ2h0O1xyXG4gICAgICAgIHRoaXMuaXRlbVdpZHRoID0gdGhpcy5pdGVtUmVuZGVyLndpZHRoO1xyXG4gICAgICAgIHRoaXMuc2Nyb2xsVmlldyA9IHRoaXMubm9kZS5nZXRDb21wb25lbnQoY2MuU2Nyb2xsVmlldyk7XHJcbiAgICAgICAgdGhpcy5jb250ZW50ID0gdGhpcy5zY3JvbGxWaWV3LmNvbnRlbnQ7XHJcbiAgICAgICAgdGhpcy5jb250ZW50LmFuY2hvclggPSAwO1xyXG4gICAgICAgIHRoaXMuY29udGVudC5hbmNob3JZID0gMTtcclxuICAgICAgICB0aGlzLmNvbnRlbnQucmVtb3ZlQWxsQ2hpbGRyZW4oKTtcclxuICAgICAgICB0aGlzLnNjcm9sbFZpZXcubm9kZS5vbihcInNjcm9sbGluZ1wiLCB0aGlzLm9uU2Nyb2xsaW5nLCB0aGlzKTtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIOWIl+ihqOaVsOaNriAo5YiX6KGo5pWw5o2u5aSN5Yi25L2/55So77yM5aaC5p6c5YiX6KGo5pWw5o2u5pS55Y+Y77yM5YiZ6ZyA6KaB6YeN5paw6K6+572u5LiA6YGN5pWw5o2uKVxyXG4gICAgICogQHBhcmFtIGl0ZW1EYXRhTGlzdCBpdGVt5pWw5o2u5YiX6KGoXHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyBzZXREYXRhKGl0ZW1EYXRhTGlzdDogQXJyYXk8YW55Pikge1xyXG4gICAgICAgIHRoaXMuaXRlbURhdGFMaXN0ID0gaXRlbURhdGFMaXN0LnNsaWNlKCk7XHJcbiAgICAgICAgdGhpcy51cGRhdGVDb250ZW50KCk7XHJcbiAgICAgICBcclxuICAgIH1cclxuXHJcbiAgICAvKirorqHnrpfliJfooajnmoTlkITpobnlj4LmlbAgKi9cclxuICAgIHByaXZhdGUgY291bnRMaXN0UGFyYW0oKSB7XHJcbiAgICAgICAgbGV0IGRhdGFMZW4gPSB0aGlzLml0ZW1EYXRhTGlzdC5sZW5ndGg7XHJcbiAgICAgICAgaWYgKHRoaXMudHlwZSA9PSBMaXN0VHlwZS5WZXJ0aWNhbCkge1xyXG4gICAgICAgICAgICB0aGlzLnNjcm9sbFZpZXcuaG9yaXpvbnRhbCA9IGZhbHNlO1xyXG4gICAgICAgICAgICB0aGlzLnNjcm9sbFZpZXcudmVydGljYWwgPSB0cnVlO1xyXG4gICAgICAgICAgICB0aGlzLmNvbnRlbnQud2lkdGggPSB0aGlzLmNvbnRlbnQucGFyZW50LndpZHRoO1xyXG4gICAgICAgICAgICB0aGlzLmNvbnRlbnQuaGVpZ2h0ID0gZGF0YUxlbiAqIHRoaXMuaXRlbUhlaWdodCArIChkYXRhTGVuIC0gMSkgKiB0aGlzLnNwYWNlWSArIHRoaXMucGFkZGluZ190b3AgKyB0aGlzLnBhZGRpbmdfYnV0dG9tO1xyXG4gICAgICAgICAgICB0aGlzLnNwYXduQ291bnQgPSBNYXRoLnJvdW5kKHRoaXMuc2Nyb2xsVmlldy5ub2RlLmhlaWdodCAvICh0aGlzLml0ZW1IZWlnaHQgKyB0aGlzLnNwYWNlWSkpICsgMjsgLy/orqHnrpfliJvlu7rnmoRpdGVt5a6e5L6L5pWw6YeP77yM5q+U5b2T5YmNc2Nyb2xsVmlld+WuueWZqOiDveaUvuS4i+eahGl0ZW3mlbDph4/lho3liqDkuIoy5LiqXHJcbiAgICAgICAgICAgIHRoaXMuaGFsZlNjcm9sbFZpZXcgPSB0aGlzLnNjcm9sbFZpZXcubm9kZS5oZWlnaHQgLyAyICsgdGhpcy5pdGVtSGVpZ2h0IC8gMiArIHRoaXMuc3BhY2VZOyAvL+iuoeeul2J1ZmZlclpvbmXvvIxpdGVt55qE5pi+56S66IyD5Zu0XHJcbiAgICAgICAgICAgIHRoaXMudXBkYXRlRnVuID0gdGhpcy51cGRhdGVWO1xyXG4gICAgICAgIH0gZWxzZSBpZiAodGhpcy50eXBlID09IExpc3RUeXBlLkhvcml6b250YWwpIHtcclxuICAgICAgICAgICAgdGhpcy5zY3JvbGxWaWV3Lmhvcml6b250YWwgPSB0cnVlO1xyXG4gICAgICAgICAgICB0aGlzLnNjcm9sbFZpZXcudmVydGljYWwgPSBmYWxzZTtcclxuICAgICAgICAgICAgdGhpcy5jb250ZW50LndpZHRoID0gZGF0YUxlbiAqIHRoaXMuaXRlbVdpZHRoICsgKGRhdGFMZW4gLSAxKSAqIHRoaXMuc3BhY2VYICsgdGhpcy5wYWRkaW5nX2xlZnQgKyB0aGlzLnBhZGRpbmdfcmlnaHQ7XHJcbiAgICAgICAgICAgIHRoaXMuY29udGVudC5oZWlnaHQgPSB0aGlzLmNvbnRlbnQucGFyZW50LmhlaWdodDtcclxuICAgICAgICAgICAgdGhpcy5zcGF3bkNvdW50ID0gTWF0aC5yb3VuZCh0aGlzLnNjcm9sbFZpZXcubm9kZS53aWR0aCAvICh0aGlzLml0ZW1XaWR0aCArIHRoaXMuc3BhY2VYKSkgKyAyO1xyXG4gICAgICAgICAgICB0aGlzLmhhbGZTY3JvbGxWaWV3ID0gdGhpcy5zY3JvbGxWaWV3Lm5vZGUud2lkdGggLyAyICsgdGhpcy5pdGVtV2lkdGggLyAyICsgdGhpcy5zcGFjZVg7XHJcbiAgICAgICAgICAgIHRoaXMudXBkYXRlRnVuID0gdGhpcy51ZHBhdGVIO1xyXG4gICAgICAgIH0gZWxzZSBpZiAodGhpcy50eXBlID09IExpc3RUeXBlLkdyaWQpIHtcclxuICAgICAgICAgICAgaWYgKHRoaXMuc3RhcnRBeGlzID09IFN0YXJ0QXhpc1R5cGUuVmVydGljYWwpIHtcclxuICAgICAgICAgICAgICAgIHRoaXMuc2Nyb2xsVmlldy5ob3Jpem9udGFsID0gZmFsc2U7XHJcbiAgICAgICAgICAgICAgICB0aGlzLnNjcm9sbFZpZXcudmVydGljYWwgPSB0cnVlO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5jb250ZW50LndpZHRoID0gdGhpcy5jb250ZW50LnBhcmVudC53aWR0aDtcclxuICAgICAgICAgICAgICAgIC8v5aaC5p6cbGVmdOWSjHJpZ2h06Ze06ZqU6L+H5aSn77yM5a+86Ie05pS+5LiN5LiL5LiA5LiqaXRlbe+8jOWImWxlZnTlkoxyaWdodOmDveiuvue9ruS4ujDvvIznm7jlvZPkuo7kuI3nlJ/mlYhcclxuICAgICAgICAgICAgICAgIGlmICh0aGlzLnBhZGRpbmdfbGVmdCArIHRoaXMucGFkZGluZ19yaWdodCArIHRoaXMuaXRlbVdpZHRoICsgdGhpcy5zcGFjZVggPiB0aGlzLmNvbnRlbnQud2lkdGgpIHtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLnBhZGRpbmdfbGVmdCA9IDA7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5wYWRkaW5nX3JpZ2h0ID0gMDtcclxuICAgICAgICAgICAgICAgICAgICBjb25zb2xlLmVycm9yKFwicGFkZGluZ19sZWZ05oiWcGFkZGluZ19yaWdodOi/h+Wkp1wiKTtcclxuICAgICAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgICAgICB0aGlzLmdyaWRDb2wgPSBNYXRoLmZsb29yKCh0aGlzLmNvbnRlbnQud2lkdGggLSB0aGlzLnBhZGRpbmdfbGVmdCAtIHRoaXMucGFkZGluZ19yaWdodCkgLyAodGhpcy5pdGVtV2lkdGggKyB0aGlzLnNwYWNlWCkpO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5ncmlkUm93ID0gTWF0aC5jZWlsKGRhdGFMZW4gLyB0aGlzLmdyaWRDb2wpO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5jb250ZW50LmhlaWdodCA9IHRoaXMuZ3JpZFJvdyAqIHRoaXMuaXRlbUhlaWdodCArICh0aGlzLmdyaWRSb3cgLSAxKSAqIHRoaXMuc3BhY2VZICsgdGhpcy5wYWRkaW5nX3RvcCArIHRoaXMucGFkZGluZ19idXR0b207XHJcbiAgICAgICAgICAgICAgICB0aGlzLnNwYXduQ291bnQgPSBNYXRoLnJvdW5kKHRoaXMuc2Nyb2xsVmlldy5ub2RlLmhlaWdodCAvICh0aGlzLml0ZW1IZWlnaHQgKyB0aGlzLnNwYWNlWSkpICogdGhpcy5ncmlkQ29sICsgdGhpcy5ncmlkQ29sICogMjtcclxuICAgICAgICAgICAgICAgIHRoaXMuaGFsZlNjcm9sbFZpZXcgPSB0aGlzLnNjcm9sbFZpZXcubm9kZS5oZWlnaHQgLyAyICsgdGhpcy5pdGVtSGVpZ2h0IC8gMiArIHRoaXMuc3BhY2VZO1xyXG4gICAgICAgICAgICAgICAgdGhpcy51cGRhdGVGdW4gPSB0aGlzLnVwZGF0ZUdyaWRfVjtcclxuICAgICAgICAgICAgfSBlbHNlIGlmICh0aGlzLnN0YXJ0QXhpcyA9PSBTdGFydEF4aXNUeXBlLkhvcml6b250YWwpIHtcclxuICAgICAgICAgICAgICAgIHRoaXMuc2Nyb2xsVmlldy5ob3Jpem9udGFsID0gdHJ1ZTtcclxuICAgICAgICAgICAgICAgIHRoaXMuc2Nyb2xsVmlldy52ZXJ0aWNhbCA9IGZhbHNlO1xyXG4gICAgICAgICAgICAgICAgLy/orqHnrpfpq5jpl7TpmpRcclxuICAgICAgICAgICAgICAgIHRoaXMuY29udGVudC5oZWlnaHQgPSB0aGlzLmNvbnRlbnQucGFyZW50LmhlaWdodDtcclxuICAgICAgICAgICAgICAgIC8v5aaC5p6cbGVmdOWSjHJpZ2h06Ze06ZqU6L+H5aSn77yM5a+86Ie05pS+5LiN5LiL5LiA5LiqaXRlbe+8jOWImWxlZnTlkoxyaWdodOmDveiuvue9ruS4ujDvvIznm7jlvZPkuo7kuI3nlJ/mlYhcclxuICAgICAgICAgICAgICAgIGlmICh0aGlzLnBhZGRpbmdfdG9wICsgdGhpcy5wYWRkaW5nX2J1dHRvbSArIHRoaXMuaXRlbUhlaWdodCArIHRoaXMuc3BhY2VZID4gdGhpcy5jb250ZW50LmhlaWdodCkge1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMucGFkZGluZ190b3AgPSAwO1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMucGFkZGluZ19idXR0b20gPSAwO1xyXG4gICAgICAgICAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoXCJwYWRkaW5nX3RvcOaIlnBhZGRpbmdfYnV0dG9t6L+H5aSnXCIpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgICAgIHRoaXMuZ3JpZFJvdyA9IE1hdGguZmxvb3IoKHRoaXMuY29udGVudC5oZWlnaHQgLSB0aGlzLnBhZGRpbmdfdG9wIC0gdGhpcy5wYWRkaW5nX2J1dHRvbSkgLyAodGhpcy5pdGVtSGVpZ2h0ICsgdGhpcy5zcGFjZVkpKTtcclxuICAgICAgICAgICAgICAgIHRoaXMuZ3JpZENvbCA9IE1hdGguY2VpbChkYXRhTGVuIC8gdGhpcy5ncmlkUm93KTtcclxuICAgICAgICAgICAgICAgIHRoaXMuY29udGVudC53aWR0aCA9IHRoaXMuZ3JpZENvbCAqIHRoaXMuaXRlbVdpZHRoICsgKHRoaXMuZ3JpZENvbCAtIDEpICogdGhpcy5zcGFjZVggKyB0aGlzLnBhZGRpbmdfbGVmdCArIHRoaXMucGFkZGluZ19yaWdodDtcclxuICAgICAgICAgICAgICAgIHRoaXMuc3Bhd25Db3VudCA9IE1hdGgucm91bmQodGhpcy5zY3JvbGxWaWV3Lm5vZGUud2lkdGggLyAodGhpcy5pdGVtV2lkdGggKyB0aGlzLnNwYWNlWCkpICogdGhpcy5ncmlkUm93ICsgdGhpcy5ncmlkUm93ICogMjtcclxuICAgICAgICAgICAgICAgIHRoaXMuaGFsZlNjcm9sbFZpZXcgPSB0aGlzLnNjcm9sbFZpZXcubm9kZS53aWR0aCAvIDIgKyB0aGlzLml0ZW1XaWR0aCAvIDIgKyB0aGlzLnNwYWNlWDtcclxuICAgICAgICAgICAgICAgIHRoaXMudXBkYXRlRnVuID0gdGhpcy51cGRhdGVHcmlkX0g7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiDliJvlu7rliJfooaggXHJcbiAgICAgKiBAcGFyYW0gc3RhcnRJbmRleCDotbflp4vmmL7npLrnmoTmlbDmja7ntKLlvJUgMOihqOekuuesrOS4gOmhuVxyXG4gICAgICogQHBhcmFtIG9mZnNldCAgICAgc2Nyb2xsVmlld+WBj+enu+mHj1xyXG4gICAgICovXHJcbiAgICBwcml2YXRlIGNyZWF0ZUxpc3Qoc3RhcnRJbmRleDogbnVtYmVyLCBvZmZzZXQ6IGNjLlZlYzIpIHtcclxuICAgICAgICAvL+W9k+mcgOimgeaYvuekuueahOaVsOaNrumVv+W6piA+IOiZmuaLn+WIl+ihqOmVv+W6pu+8jCDliKDpmaTmnIDmnKvlsL7lh6DkuKrmlbDmja7ml7bvvIzliJfooajpnIDopoHph43nva7kvY3nva7liLBzY3JvbGxWaWV35pyA5bqV56uvXHJcbiAgICAgICAgaWYgKHRoaXMuaXRlbURhdGFMaXN0Lmxlbmd0aCA+IHRoaXMuc3Bhd25Db3VudCAmJiAoc3RhcnRJbmRleCArIHRoaXMuc3Bhd25Db3VudCAtIDEpID49IHRoaXMuaXRlbURhdGFMaXN0Lmxlbmd0aCkge1xyXG4gICAgICAgICAgICBzdGFydEluZGV4ID0gdGhpcy5pdGVtRGF0YUxpc3QubGVuZ3RoIC0gdGhpcy5zcGF3bkNvdW50O1xyXG4gICAgICAgICAgICBvZmZzZXQgPSB0aGlzLnNjcm9sbFZpZXcuZ2V0TWF4U2Nyb2xsT2Zmc2V0KCk7XHJcblxyXG4gICAgICAgICAgICAvL+W9k+mcgOimgeaYvuekuueahOaVsOaNrumVv+W6piA8PSDomZrmi5/liJfooajplb/luqbvvIwg6ZqQ6JeP5aSa5L2Z55qE6Jma5ouf5YiX6KGo6aG5IFxyXG4gICAgICAgIH0gZWxzZSBpZiAodGhpcy5pdGVtRGF0YUxpc3QubGVuZ3RoIDw9IHRoaXMuc3Bhd25Db3VudCkge1xyXG4gICAgICAgICAgICBzdGFydEluZGV4ID0gMDtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdGhpcy5zcGF3bkNvdW50OyBpKyspIHtcclxuICAgICAgICAgICAgbGV0IGl0ZW06IGNjLk5vZGU7XHJcbiAgICAgICAgICAgIC8v6ZyA6KaB5pi+56S655qE5pWw5o2u57Si5byV5Zyo5pWw5o2u6IyD5Zu05YaF77yM5YiZaXRlbeWunuS+i+aYvuekuuWHuuadpVxyXG4gICAgICAgICAgICBpZiAoaSArIHN0YXJ0SW5kZXggPCB0aGlzLml0ZW1EYXRhTGlzdC5sZW5ndGgpIHtcclxuICAgICAgICAgICAgICAgIGlmICh0aGlzLml0ZW1MaXN0W2ldID09IG51bGwpIHtcclxuICAgICAgICAgICAgICAgICAgICBpdGVtID0gdGhpcy5nZXRJdGVtKCk7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5pdGVtTGlzdC5wdXNoKGl0ZW0pO1xyXG4gICAgICAgICAgICAgICAgICAgIGl0ZW0ucGFyZW50ID0gdGhpcy5jb250ZW50O1xyXG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICBpdGVtID0gdGhpcy5pdGVtTGlzdFtpXTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIC8v6ZyA6KaB5pi+56S655qE5pWw5o2u57Si5byV6LaF6L+H5LqG5pWw5o2u6IyD5Zu077yM5YiZaXRlbeWunuS+i+makOiXj+i1t+adpVxyXG4gICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgLy9pdGVt5a6e5L6L5pWw6YePID4g6ZyA6KaB5pi+56S655qE5pWw5o2u6YePXHJcbiAgICAgICAgICAgICAgICBpZiAodGhpcy5pdGVtTGlzdC5sZW5ndGggPiAodGhpcy5pdGVtRGF0YUxpc3QubGVuZ3RoIC0gc3RhcnRJbmRleCkpIHtcclxuICAgICAgICAgICAgICAgICAgICBpdGVtID0gdGhpcy5pdGVtTGlzdC5wb3AoKTtcclxuICAgICAgICAgICAgICAgICAgICBpdGVtLnJlbW92ZUZyb21QYXJlbnQoKTtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLml0ZW1Qb29sLnB1c2goaXRlbSk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBjb250aW51ZTtcclxuICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgbGV0IGl0ZW1SZW5kZXI6IEl0ZW1SZW5kZXIgPSBpdGVtLmdldENvbXBvbmVudChJdGVtUmVuZGVyKTtcclxuICAgICAgICAgICAgaXRlbVJlbmRlci5pdGVtSW5kZXggPSBpICsgc3RhcnRJbmRleDtcclxuICAgICAgICAgICAgaXRlbVJlbmRlci5kYXRhID0gdGhpcy5pdGVtRGF0YUxpc3RbaSArIHN0YXJ0SW5kZXhdO1xyXG4gICAgICAgICAgICBpdGVtUmVuZGVyLmRhdGFDaGFuZ2VkKCk7XHJcblxyXG4gICAgICAgICAgICBpZiAodGhpcy50eXBlID09IExpc3RUeXBlLlZlcnRpY2FsKSB7XHJcbiAgICAgICAgICAgICAgICAvL+WboOS4umNvbnRlbnTnmoTplJrngrlY5pivMO+8jOaJgOS7pWl0ZW3nmoR45YC85pivY29udGVudC53aXRoLzLooajnpLrlsYXkuK3vvIzplJrngrlZ5pivMe+8jOaJgOS7pWl0ZW3nmoR55YC85LuOY29udGVudOmhtumDqOWQkeS4i+aYrzDliLDotJ/ml6DnqbfjgILmiYDku6VpdGVtLnk9IC1pdGVtLmhlaWdodC8y5pe277yM5piv5ZyoY29udGVudOeahOmhtumDqOOAglxyXG4gICAgICAgICAgICAgICAgaXRlbS5zZXRQb3NpdGlvbih0aGlzLmNvbnRlbnQud2lkdGggLyAyLCAtaXRlbS5oZWlnaHQgKiAoMC41ICsgaSArIHN0YXJ0SW5kZXgpIC0gdGhpcy5zcGFjZVkgKiAoaSArIHN0YXJ0SW5kZXgpIC0gdGhpcy5wYWRkaW5nX3RvcCk7XHJcbiAgICAgICAgICAgIH0gZWxzZSBpZiAodGhpcy50eXBlID09IExpc3RUeXBlLkhvcml6b250YWwpIHtcclxuICAgICAgICAgICAgICAgIGl0ZW0uc2V0UG9zaXRpb24oaXRlbS53aWR0aCAqICgwLjUgKyBpICsgc3RhcnRJbmRleCkgKyB0aGlzLnNwYWNlWCAqIChpICsgc3RhcnRJbmRleCkgKyB0aGlzLnBhZGRpbmdfbGVmdCwgLXRoaXMuY29udGVudC5oZWlnaHQgLyAyKTtcclxuICAgICAgICAgICAgfSBlbHNlIGlmICh0aGlzLnR5cGUgPT0gTGlzdFR5cGUuR3JpZCkge1xyXG4gICAgICAgICAgICAgICAgaWYgKHRoaXMuc3RhcnRBeGlzID09IFN0YXJ0QXhpc1R5cGUuVmVydGljYWwpIHtcclxuICAgICAgICAgICAgICAgICAgICB2YXIgcm93ID0gTWF0aC5mbG9vcigoaSArIHN0YXJ0SW5kZXgpIC8gdGhpcy5ncmlkQ29sKTtcclxuICAgICAgICAgICAgICAgICAgICB2YXIgY29sID0gKGkgKyBzdGFydEluZGV4KSAlIHRoaXMuZ3JpZENvbDtcclxuICAgICAgICAgICAgICAgICAgICBpdGVtLnNldFBvc2l0aW9uKGl0ZW0ud2lkdGggKiAoMC41ICsgY29sKSArIHRoaXMuc3BhY2VYICogY29sICsgdGhpcy5wYWRkaW5nX2xlZnQsIC1pdGVtLmhlaWdodCAqICgwLjUgKyByb3cpIC0gdGhpcy5zcGFjZVkgKiByb3cgLSB0aGlzLnBhZGRpbmdfdG9wKTtcclxuICAgICAgICAgICAgICAgICAgICBpdGVtLm9wYWNpdHkgPSAyNTU7XHJcbiAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKHRoaXMuc3RhcnRBeGlzID09IFN0YXJ0QXhpc1R5cGUuSG9yaXpvbnRhbCkge1xyXG4gICAgICAgICAgICAgICAgICAgIHZhciByb3cgPSAoaSArIHN0YXJ0SW5kZXgpICUgdGhpcy5ncmlkUm93O1xyXG4gICAgICAgICAgICAgICAgICAgIHZhciBjb2wgPSBNYXRoLmZsb29yKChpICsgc3RhcnRJbmRleCkgLyB0aGlzLmdyaWRSb3cpO1xyXG4gICAgICAgICAgICAgICAgICAgIGl0ZW0uc2V0UG9zaXRpb24oaXRlbS53aWR0aCAqICgwLjUgKyBjb2wpICsgdGhpcy5zcGFjZVggKiBjb2wgKyB0aGlzLnBhZGRpbmdfbGVmdCwgLWl0ZW0uaGVpZ2h0ICogKDAuNSArIHJvdykgLSB0aGlzLnNwYWNlWSAqIHJvdyAtIHRoaXMucGFkZGluZ190b3ApO1xyXG4gICAgICAgICAgICAgICAgICAgIGl0ZW0ub3BhY2l0eSA9IDI1NTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgdGhpcy5zY3JvbGxWaWV3LnNjcm9sbFRvT2Zmc2V0KG9mZnNldCk7XHJcbiAgICB9XHJcblxyXG4gICAgLyoq6I635Y+W5LiA5Liq5YiX6KGo6aG5ICovXHJcbiAgICBwcml2YXRlIGdldEl0ZW0oKSB7XHJcbiAgICAgICAgaWYgKHRoaXMuaXRlbVBvb2wubGVuZ3RoID09IDApIHtcclxuICAgICAgICAgICAgcmV0dXJuIGNjLmluc3RhbnRpYXRlKHRoaXMuaXRlbVJlbmRlcik7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgcmV0dXJuIHRoaXMuaXRlbVBvb2wucG9wKCk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHVwZGF0ZShkdCkge1xyXG4gICAgICAgIGlmICh0aGlzLmJTY3JvbGxpbmcgPT0gZmFsc2UpIHtcclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLnVwZGF0ZVRpbWVyICs9IGR0O1xyXG4gICAgICAgIGlmICh0aGlzLnVwZGF0ZVRpbWVyIDwgdGhpcy51cGRhdGVJbnRlcnZhbCkge1xyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRoaXMudXBkYXRlVGltZXIgPSAwO1xyXG4gICAgICAgIHRoaXMuYlNjcm9sbGluZyA9IGZhbHNlO1xyXG4gICAgICAgIHRoaXMudXBkYXRlRnVuKCk7XHJcbiAgICB9XHJcblxyXG4gICAgb25TY3JvbGxpbmcoKSB7XHJcbiAgICAgICAgdGhpcy5iU2Nyb2xsaW5nID0gdHJ1ZTtcclxuICAgIH1cclxuXHJcbiAgICAvKirlnoLnm7TmjpLliJcgKi9cclxuICAgIHByaXZhdGUgdXBkYXRlVigpIHtcclxuICAgICAgICBsZXQgaXRlbXMgPSB0aGlzLml0ZW1MaXN0O1xyXG4gICAgICAgIGxldCBpdGVtO1xyXG4gICAgICAgIGxldCBidWZmZXJab25lID0gdGhpcy5oYWxmU2Nyb2xsVmlldztcclxuICAgICAgICBsZXQgaXNVcCA9IHRoaXMuc2Nyb2xsVmlldy5jb250ZW50LnkgPiB0aGlzLmxhc3RDb250ZW50UG9zWTtcclxuICAgICAgICBsZXQgb2Zmc2V0ID0gKHRoaXMuaXRlbUhlaWdodCArIHRoaXMuc3BhY2VZKSAqIGl0ZW1zLmxlbmd0aDtcclxuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGl0ZW1zLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgICAgIGl0ZW0gPSBpdGVtc1tpXTtcclxuICAgICAgICAgICAgbGV0IHZpZXdQb3MgPSB0aGlzLmdldFBvc2l0aW9uSW5WaWV3KGl0ZW0pO1xyXG4gICAgICAgICAgICBpZiAoaXNVcCkge1xyXG4gICAgICAgICAgICAgICAgLy9pdGVt5LiK5ruR5pe277yM6LaF5Ye65LqGc2Nyb2xsVmlld+S4iui+ueeVjO+8jOWwhml0ZW3np7vliqjliLDkuIvmlrnlpI3nlKjvvIxpdGVt56e75Yqo5Yiw5LiL5pa555qE5L2N572u5b+F6aG75LiN6LaF6L+HY29udGVudOeahOS4i+i+ueeVjFxyXG4gICAgICAgICAgICAgICAgaWYgKHZpZXdQb3MueSA+IGJ1ZmZlclpvbmUgJiYgaXRlbS55IC0gb2Zmc2V0IC0gdGhpcy5wYWRkaW5nX2J1dHRvbSA+IC10aGlzLmNvbnRlbnQuaGVpZ2h0KSB7XHJcbiAgICAgICAgICAgICAgICAgICAgbGV0IGl0ZW1SZW5kZXI6IEl0ZW1SZW5kZXIgPSBpdGVtLmdldENvbXBvbmVudChJdGVtUmVuZGVyKTtcclxuICAgICAgICAgICAgICAgICAgICBsZXQgaXRlbUluZGV4ID0gaXRlbVJlbmRlci5pdGVtSW5kZXggKyBpdGVtcy5sZW5ndGg7XHJcbiAgICAgICAgICAgICAgICAgICAgaXRlbVJlbmRlci5pdGVtSW5kZXggPSBpdGVtSW5kZXg7XHJcbiAgICAgICAgICAgICAgICAgICAgaXRlbVJlbmRlci5kYXRhID0gdGhpcy5pdGVtRGF0YUxpc3RbaXRlbUluZGV4XTtcclxuICAgICAgICAgICAgICAgICAgICBpdGVtUmVuZGVyLmRhdGFDaGFuZ2VkKCk7XHJcbiAgICAgICAgICAgICAgICAgICAgaXRlbS55ID0gaXRlbS55IC0gb2Zmc2V0O1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgLy9pdGVt5LiL5ruR5pe277yM6LaF5Ye65LqGc2Nyb2xsVmlld+S4i+i+ueeVjO+8jOWwhml0ZW3np7vliqjliLDkuIrmlrnlpI3nlKjvvIxpdGVt56e75Yqo5Yiw5LiK5pa555qE5L2N572u5b+F6aG75LiN6LaF6L+HY29udGVudOeahOS4iui+ueeVjFxyXG4gICAgICAgICAgICAgICAgaWYgKHZpZXdQb3MueSA8IC1idWZmZXJab25lICYmIGl0ZW0ueSArIG9mZnNldCArIHRoaXMucGFkZGluZ190b3AgPCAwKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgbGV0IGl0ZW1SZW5kZXI6IEl0ZW1SZW5kZXIgPSBpdGVtLmdldENvbXBvbmVudChJdGVtUmVuZGVyKTtcclxuICAgICAgICAgICAgICAgICAgICBsZXQgaXRlbUluZGV4ID0gaXRlbVJlbmRlci5pdGVtSW5kZXggLSBpdGVtcy5sZW5ndGg7XHJcbiAgICAgICAgICAgICAgICAgICAgaXRlbVJlbmRlci5pdGVtSW5kZXggPSBpdGVtSW5kZXg7XHJcbiAgICAgICAgICAgICAgICAgICAgaXRlbVJlbmRlci5kYXRhID0gdGhpcy5pdGVtRGF0YUxpc3RbaXRlbUluZGV4XTtcclxuICAgICAgICAgICAgICAgICAgICBpdGVtUmVuZGVyLmRhdGFDaGFuZ2VkKCk7XHJcbiAgICAgICAgICAgICAgICAgICAgaXRlbS55ID0gaXRlbS55ICsgb2Zmc2V0O1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRoaXMubGFzdENvbnRlbnRQb3NZID0gdGhpcy5zY3JvbGxWaWV3LmNvbnRlbnQueTtcclxuICAgIH1cclxuXHJcbiAgICAvKirmsLTlubPmjpLliJcgKi9cclxuICAgIHByaXZhdGUgdWRwYXRlSCgpIHtcclxuICAgICAgICBsZXQgaXRlbXMgPSB0aGlzLml0ZW1MaXN0O1xyXG4gICAgICAgIGxldCBpdGVtO1xyXG4gICAgICAgIGxldCBidWZmZXJab25lID0gdGhpcy5oYWxmU2Nyb2xsVmlldztcclxuICAgICAgICBsZXQgaXNSaWdodCA9IHRoaXMuc2Nyb2xsVmlldy5jb250ZW50LnggPiB0aGlzLmxhc3RDb250ZW50UG9zWDtcclxuICAgICAgICBsZXQgb2Zmc2V0ID0gKHRoaXMuaXRlbVdpZHRoICsgdGhpcy5zcGFjZVgpICogaXRlbXMubGVuZ3RoO1xyXG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgaXRlbXMubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICAgICAgaXRlbSA9IGl0ZW1zW2ldO1xyXG4gICAgICAgICAgICBsZXQgdmlld1BvcyA9IHRoaXMuZ2V0UG9zaXRpb25JblZpZXcoaXRlbSk7XHJcbiAgICAgICAgICAgIGlmIChpc1JpZ2h0KSB7XHJcbiAgICAgICAgICAgICAgICAvL2l0ZW3lj7Pmu5Hml7bvvIzotoXlh7rkuoZzY3JvbGxWaWV35Y+z6L6555WM77yM5bCGaXRlbeenu+WKqOWIsOW3puaWueWkjeeUqO+8jGl0ZW3np7vliqjliLDlt6bmlrnnmoTkvY3nva7lv4XpobvkuI3otoXov4djb250ZW5055qE5bem6L6555WMXHJcbiAgICAgICAgICAgICAgICBpZiAodmlld1Bvcy54ID4gYnVmZmVyWm9uZSAmJiBpdGVtLnggLSBvZmZzZXQgLSB0aGlzLnBhZGRpbmdfbGVmdCA+IDApIHtcclxuICAgICAgICAgICAgICAgICAgICBsZXQgaXRlbVJlbmRlcjogSXRlbVJlbmRlciA9IGl0ZW0uZ2V0Q29tcG9uZW50KEl0ZW1SZW5kZXIpO1xyXG4gICAgICAgICAgICAgICAgICAgIGxldCBpdGVtSW5kZXggPSBpdGVtUmVuZGVyLml0ZW1JbmRleCAtIGl0ZW1zLmxlbmd0aDtcclxuICAgICAgICAgICAgICAgICAgICBpdGVtUmVuZGVyLml0ZW1JbmRleCA9IGl0ZW1JbmRleDtcclxuICAgICAgICAgICAgICAgICAgICBpdGVtUmVuZGVyLmRhdGEgPSB0aGlzLml0ZW1EYXRhTGlzdFtpdGVtSW5kZXhdO1xyXG4gICAgICAgICAgICAgICAgICAgIGl0ZW1SZW5kZXIuZGF0YUNoYW5nZWQoKTtcclxuICAgICAgICAgICAgICAgICAgICBpdGVtLnggPSBpdGVtLnggLSBvZmZzZXQ7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAvL2l0ZW3lt6bmu5Hml7bvvIzotoXlh7rkuoZzY3JvbGxWaWV35bem6L6555WM77yM5bCGaXRlbeenu+WKqOWIsOWPs+aWueWkjeeUqO+8jGl0ZW3np7vliqjliLDlj7PmlrnnmoTkvY3nva7lv4XpobvkuI3otoXov4djb250ZW5055qE5Y+z6L6555WMXHJcbiAgICAgICAgICAgICAgICBpZiAodmlld1Bvcy54IDwgLWJ1ZmZlclpvbmUgJiYgaXRlbS54ICsgb2Zmc2V0ICsgdGhpcy5wYWRkaW5nX3JpZ2h0IDwgdGhpcy5jb250ZW50LndpZHRoKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgbGV0IGl0ZW1SZW5kZXI6IEl0ZW1SZW5kZXIgPSBpdGVtLmdldENvbXBvbmVudChJdGVtUmVuZGVyKTtcclxuICAgICAgICAgICAgICAgICAgICBsZXQgaXRlbUluZGV4ID0gaXRlbVJlbmRlci5pdGVtSW5kZXggKyBpdGVtcy5sZW5ndGg7XHJcbiAgICAgICAgICAgICAgICAgICAgaXRlbVJlbmRlci5pdGVtSW5kZXggPSBpdGVtSW5kZXg7XHJcbiAgICAgICAgICAgICAgICAgICAgaXRlbVJlbmRlci5kYXRhID0gdGhpcy5pdGVtRGF0YUxpc3RbaXRlbUluZGV4XTtcclxuICAgICAgICAgICAgICAgICAgICBpdGVtUmVuZGVyLmRhdGFDaGFuZ2VkKCk7XHJcbiAgICAgICAgICAgICAgICAgICAgaXRlbS54ID0gaXRlbS54ICsgb2Zmc2V0O1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRoaXMubGFzdENvbnRlbnRQb3NYID0gdGhpcy5zY3JvbGxWaWV3LmNvbnRlbnQueDtcclxuICAgIH1cclxuXHJcbiAgICAvKirnvZHmoLzlnoLnm7TmjpLliJcgKi9cclxuICAgIHByaXZhdGUgdXBkYXRlR3JpZF9WKCkge1xyXG4gICAgICAgIGxldCBpdGVtcyA9IHRoaXMuaXRlbUxpc3Q7XHJcbiAgICAgICAgbGV0IGl0ZW06IGNjLk5vZGU7XHJcbiAgICAgICAgbGV0IGJ1ZmZlclpvbmUgPSB0aGlzLmhhbGZTY3JvbGxWaWV3O1xyXG4gICAgICAgIGxldCBpc1VwID0gdGhpcy5zY3JvbGxWaWV3LmNvbnRlbnQueSA+IHRoaXMubGFzdENvbnRlbnRQb3NZO1xyXG4gICAgICAgIGxldCBvZmZzZXQgPSAodGhpcy5pdGVtSGVpZ2h0ICsgdGhpcy5zcGFjZVkpICogKHRoaXMuc3Bhd25Db3VudCAvIHRoaXMuZ3JpZENvbCk7XHJcbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBpdGVtcy5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgICAgICBpdGVtID0gaXRlbXNbaV07XHJcbiAgICAgICAgICAgIGxldCB2aWV3UG9zID0gdGhpcy5nZXRQb3NpdGlvbkluVmlldyhpdGVtKTtcclxuICAgICAgICAgICAgaWYgKGlzVXApIHtcclxuICAgICAgICAgICAgICAgIC8vaXRlbeS4iua7keaXtu+8jOi2heWHuuS6hnNjcm9sbFZpZXfkuIrovrnnlYzvvIzlsIZpdGVt56e75Yqo5Yiw5LiL5pa55aSN55So77yMaXRlbeenu+WKqOWIsOS4i+aWueeahOS9jee9ruW/hemhu+S4jei2hei/h2NvbnRlbnTnmoTkuIvovrnnlYxcclxuICAgICAgICAgICAgICAgIGlmICh2aWV3UG9zLnkgPiBidWZmZXJab25lICYmIGl0ZW0ueSAtIG9mZnNldCAtIHRoaXMucGFkZGluZ19idXR0b20gPiAtdGhpcy5jb250ZW50LmhlaWdodCkge1xyXG4gICAgICAgICAgICAgICAgICAgIGxldCBpdGVtUmVuZGVyOiBJdGVtUmVuZGVyID0gaXRlbS5nZXRDb21wb25lbnQoSXRlbVJlbmRlcik7XHJcbiAgICAgICAgICAgICAgICAgICAgbGV0IGl0ZW1JbmRleCA9IGl0ZW1SZW5kZXIuaXRlbUluZGV4ICsgKHRoaXMuc3Bhd25Db3VudCAvIHRoaXMuZ3JpZENvbCkgKiB0aGlzLmdyaWRDb2w7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMuaXRlbURhdGFMaXN0W2l0ZW1JbmRleF0gIT0gbnVsbCkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBpdGVtLnkgPSBpdGVtLnkgLSBvZmZzZXQ7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGl0ZW1SZW5kZXIuaXRlbUluZGV4ID0gaXRlbUluZGV4O1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBpdGVtUmVuZGVyLmRhdGEgPSB0aGlzLml0ZW1EYXRhTGlzdFtpdGVtSW5kZXhdO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBpdGVtUmVuZGVyLmRhdGFDaGFuZ2VkKCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGl0ZW0ub3BhY2l0eSA9IDI1NTtcclxuICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBpdGVtLnkgPSBpdGVtLnkgLSBvZmZzZXQ7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGl0ZW1SZW5kZXIuaXRlbUluZGV4ID0gaXRlbUluZGV4O1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBpdGVtLm9wYWNpdHkgPSAwO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfSBlbHNlIHsvL2l0ZW3kuIvmu5Hml7bvvIzotoXlh7rkuoZzY3JvbGxWaWV35LiL6L6555WM77yM5bCGaXRlbeenu+WKqOWIsOS4iuaWueWkjeeUqO+8jGl0ZW3np7vliqjliLDkuIrmlrnnmoTkvY3nva7lv4XpobvkuI3otoXov4djb250ZW5055qE5LiK6L6555WMXHJcbiAgICAgICAgICAgICAgICBpZiAodmlld1Bvcy55IDwgLWJ1ZmZlclpvbmUgJiYgaXRlbS55ICsgb2Zmc2V0ICsgdGhpcy5wYWRkaW5nX3RvcCA8IDApIHtcclxuICAgICAgICAgICAgICAgICAgICBsZXQgaXRlbVJlbmRlcjogSXRlbVJlbmRlciA9IGl0ZW0uZ2V0Q29tcG9uZW50KEl0ZW1SZW5kZXIpO1xyXG4gICAgICAgICAgICAgICAgICAgIGxldCBpdGVtSW5kZXggPSBpdGVtUmVuZGVyLml0ZW1JbmRleCAtICh0aGlzLnNwYXduQ291bnQgLyB0aGlzLmdyaWRDb2wpICogdGhpcy5ncmlkQ29sO1xyXG4gICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLml0ZW1EYXRhTGlzdFtpdGVtSW5kZXhdICE9IG51bGwpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgaXRlbS55ID0gaXRlbS55ICsgb2Zmc2V0O1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBpdGVtUmVuZGVyLml0ZW1JbmRleCA9IGl0ZW1JbmRleDtcclxuICAgICAgICAgICAgICAgICAgICAgICAgaXRlbVJlbmRlci5kYXRhID0gdGhpcy5pdGVtRGF0YUxpc3RbaXRlbUluZGV4XTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgaXRlbVJlbmRlci5kYXRhQ2hhbmdlZCgpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBpdGVtLm9wYWNpdHkgPSAyNTU7XHJcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgaXRlbS55ID0gaXRlbS55ICsgb2Zmc2V0O1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBpdGVtUmVuZGVyLml0ZW1JbmRleCA9IGl0ZW1JbmRleDtcclxuICAgICAgICAgICAgICAgICAgICAgICAgaXRlbS5vcGFjaXR5ID0gMDtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgdGhpcy5sYXN0Q29udGVudFBvc1kgPSB0aGlzLnNjcm9sbFZpZXcuY29udGVudC55O1xyXG4gICAgfVxyXG5cclxuICAgIC8qKue9keagvOawtOW5s+aOkuWIlyAqL1xyXG4gICAgcHJpdmF0ZSB1cGRhdGVHcmlkX0goKSB7XHJcbiAgICAgICAgbGV0IGl0ZW1zID0gdGhpcy5pdGVtTGlzdDtcclxuICAgICAgICBsZXQgaXRlbTtcclxuICAgICAgICBsZXQgYnVmZmVyWm9uZSA9IHRoaXMuaGFsZlNjcm9sbFZpZXc7XHJcbiAgICAgICAgbGV0IGlzUmlnaHQgPSB0aGlzLnNjcm9sbFZpZXcuY29udGVudC54ID4gdGhpcy5sYXN0Q29udGVudFBvc1g7XHJcbiAgICAgICAgbGV0IG9mZnNldCA9ICh0aGlzLml0ZW1XaWR0aCArIHRoaXMuc3BhY2VYKSAqICh0aGlzLnNwYXduQ291bnQgLyB0aGlzLmdyaWRSb3cpO1xyXG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgaXRlbXMubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICAgICAgaXRlbSA9IGl0ZW1zW2ldO1xyXG4gICAgICAgICAgICBsZXQgdmlld1BvcyA9IHRoaXMuZ2V0UG9zaXRpb25JblZpZXcoaXRlbSk7XHJcbiAgICAgICAgICAgIGlmIChpc1JpZ2h0KSB7XHJcbiAgICAgICAgICAgICAgICAvL2l0ZW3lj7Pmu5Hml7bvvIzotoXlh7rkuoZzY3JvbGxWaWV35Y+z6L6555WM77yM5bCGaXRlbeenu+WKqOWIsOW3puaWueWkjeeUqO+8jGl0ZW3np7vliqjliLDlt6bmlrnnmoTkvY3nva7lv4XpobvkuI3otoXov4djb250ZW5055qE5bem6L6555WMXHJcbiAgICAgICAgICAgICAgICBpZiAodmlld1Bvcy54ID4gYnVmZmVyWm9uZSAmJiBpdGVtLnggLSBvZmZzZXQgLSB0aGlzLnBhZGRpbmdfbGVmdCA+IDApIHtcclxuICAgICAgICAgICAgICAgICAgICBsZXQgaXRlbVJlbmRlcjogSXRlbVJlbmRlciA9IGl0ZW0uZ2V0Q29tcG9uZW50KEl0ZW1SZW5kZXIpO1xyXG4gICAgICAgICAgICAgICAgICAgIGxldCBpdGVtSW5kZXggPSBpdGVtUmVuZGVyLml0ZW1JbmRleCAtICh0aGlzLnNwYXduQ291bnQgLyB0aGlzLmdyaWRSb3cpICogdGhpcy5ncmlkUm93O1xyXG4gICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLml0ZW1EYXRhTGlzdFtpdGVtSW5kZXhdICE9IG51bGwpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgaXRlbS54ID0gaXRlbS54IC0gb2Zmc2V0O1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBpdGVtUmVuZGVyLml0ZW1JbmRleCA9IGl0ZW1JbmRleDtcclxuICAgICAgICAgICAgICAgICAgICAgICAgaXRlbVJlbmRlci5kYXRhID0gdGhpcy5pdGVtRGF0YUxpc3RbaXRlbUluZGV4XTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgaXRlbVJlbmRlci5kYXRhQ2hhbmdlZCgpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBpdGVtLm9wYWNpdHkgPSAyNTU7XHJcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgaXRlbS54ID0gaXRlbS54IC0gb2Zmc2V0O1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBpdGVtUmVuZGVyLml0ZW1JbmRleCA9IGl0ZW1JbmRleDtcclxuICAgICAgICAgICAgICAgICAgICAgICAgaXRlbS5vcGFjaXR5ID0gMDtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAvL2l0ZW3lt6bmu5Hml7bvvIzotoXlh7rkuoZzY3JvbGxWaWV35bem6L6555WM77yM5bCGaXRlbeenu+WKqOWIsOWPs+aWueWkjeeUqO+8jGl0ZW3np7vliqjliLDlj7PmlrnnmoTkvY3nva7lv4XpobvkuI3otoXov4djb250ZW5055qE5Y+z6L6555WMXHJcbiAgICAgICAgICAgICAgICBpZiAodmlld1Bvcy54IDwgLWJ1ZmZlclpvbmUgJiYgaXRlbS54ICsgb2Zmc2V0ICsgdGhpcy5wYWRkaW5nX3JpZ2h0IDwgdGhpcy5jb250ZW50LndpZHRoKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgbGV0IGl0ZW1SZW5kZXI6IEl0ZW1SZW5kZXIgPSBpdGVtLmdldENvbXBvbmVudChJdGVtUmVuZGVyKTtcclxuICAgICAgICAgICAgICAgICAgICBsZXQgaXRlbUluZGV4ID0gaXRlbVJlbmRlci5pdGVtSW5kZXggKyAodGhpcy5zcGF3bkNvdW50IC8gdGhpcy5ncmlkUm93KSAqIHRoaXMuZ3JpZFJvdztcclxuICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy5pdGVtRGF0YUxpc3RbaXRlbUluZGV4XSAhPSBudWxsKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGl0ZW0ueCA9IGl0ZW0ueCArIG9mZnNldDtcclxuICAgICAgICAgICAgICAgICAgICAgICAgaXRlbVJlbmRlci5pdGVtSW5kZXggPSBpdGVtSW5kZXg7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGl0ZW1SZW5kZXIuZGF0YSA9IHRoaXMuaXRlbURhdGFMaXN0W2l0ZW1JbmRleF07XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGl0ZW1SZW5kZXIuZGF0YUNoYW5nZWQoKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgaXRlbS5vcGFjaXR5ID0gMjU1O1xyXG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGl0ZW0ueCA9IGl0ZW0ueCArIG9mZnNldDtcclxuICAgICAgICAgICAgICAgICAgICAgICAgaXRlbVJlbmRlci5pdGVtSW5kZXggPSBpdGVtSW5kZXg7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGl0ZW0ub3BhY2l0eSA9IDA7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRoaXMubGFzdENvbnRlbnRQb3NYID0gdGhpcy5zY3JvbGxWaWV3LmNvbnRlbnQueDtcclxuICAgIH1cclxuXHJcbiAgICAvKirojrflj5ZpdGVt5Zyoc2Nyb2xsVmlld+eahOWxgOmDqOWdkOaghyAqL1xyXG4gICAgcHJpdmF0ZSBnZXRQb3NpdGlvbkluVmlldyhpdGVtKSB7XHJcbiAgICAgICAgbGV0IHdvcmxkUG9zID0gaXRlbS5wYXJlbnQuY29udmVydFRvV29ybGRTcGFjZUFSKGl0ZW0ucG9zaXRpb24pO1xyXG4gICAgICAgIGxldCB2aWV3UG9zID0gdGhpcy5zY3JvbGxWaWV3Lm5vZGUuY29udmVydFRvTm9kZVNwYWNlQVIod29ybGRQb3MpO1xyXG4gICAgICAgIHJldHVybiB2aWV3UG9zO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKuiOt+WPluWIl+ihqOaVsOaNriAqL1xyXG4gICAgcHVibGljIGdldExpc3REYXRhKCkge1xyXG4gICAgICAgIHJldHVybiB0aGlzLml0ZW1EYXRhTGlzdDtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIOWinuWKoOS4gOmhueaVsOaNruWIsOWIl+ihqOeahOacq+WwvlxyXG4gICAgICogQHBhcmFtIGRhdGEg5pWw5o2uXHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyBhZGRJdGVtKGRhdGE6IGFueSkge1xyXG4gICAgICAgIHRoaXMuaXRlbURhdGFMaXN0LnB1c2goZGF0YSk7XHJcbiAgICAgICAgdGhpcy51cGRhdGVDb250ZW50KCk7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiDlop7liqDkuIDpobnmlbDmja7liLDliJfooajmjIflrprkvY3nva5cclxuICAgICAqIEBwYXJhbSBpbmRleCAgIOS9jee9ru+8jDDooajnpLrnrKwx6aG5XHJcbiAgICAgKiBAcGFyYW0gZGF0YSAg5pWw5o2uXHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyBhZGRJdGVtQXQoaW5kZXg6IG51bWJlciwgZGF0YTogYW55KSB7XHJcbiAgICAgICAgaWYgKHRoaXMuaXRlbURhdGFMaXN0W2luZGV4XSAhPSBudWxsIHx8IHRoaXMuaXRlbURhdGFMaXN0Lmxlbmd0aCA9PSBpbmRleCkge1xyXG4gICAgICAgICAgICB0aGlzLml0ZW1EYXRhTGlzdC5zcGxpY2UoaW5kZXgsIDEsIGRhdGEpO1xyXG4gICAgICAgICAgICB0aGlzLnVwZGF0ZUNvbnRlbnQoKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiDliKDpmaTkuIDpobnmlbDmja5cclxuICAgICAqIEBwYXJhbSBpbmRleCDliKDpmaTpobnnmoTkvY3nva4gLDDooajnpLrnrKwx6aG5XHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyBkZWxldGVJdGVtKGluZGV4OiBudW1iZXIpIHtcclxuICAgICAgICBpZiAodGhpcy5pdGVtRGF0YUxpc3RbaW5kZXhdICE9IG51bGwpIHtcclxuICAgICAgICAgICAgdGhpcy5pdGVtRGF0YUxpc3Quc3BsaWNlKGluZGV4LCAxKTtcclxuICAgICAgICAgICAgdGhpcy51cGRhdGVDb250ZW50KCk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICog5pS55Y+Y5LiA6aG55pWw5o2uXHJcbiAgICAgKiBAcGFyYW0gaW5kZXggICDkvY3nva4sMOihqOekuuesrDHpoblcclxuICAgICAqIEBwYXJhbSBkYXRhICDmm7/mjaLnmoTmlbDmja5cclxuICAgICAqL1xyXG4gICAgcHVibGljIGNoYW5nZUl0ZW0oaW5kZXg6IG51bWJlciwgZGF0YTogYW55KSB7XHJcbiAgICAgICAgaWYgKHRoaXMuaXRlbURhdGFMaXN0W2luZGV4XSAhPSBudWxsKSB7XHJcbiAgICAgICAgICAgIHRoaXMuaXRlbURhdGFMaXN0W2luZGV4XSA9IGRhdGE7XHJcbiAgICAgICAgICAgIHRoaXMudXBkYXRlQ29udGVudCgpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICAvKirojrflj5bnrKzkuIDkuKpJdGVt55qE5L2N572uICovXHJcbiAgICBwcml2YXRlIHVwZGF0ZUNvbnRlbnQoKSB7XHJcbiAgICAgICAgLy/mmL7npLrliJfooajlrp7kvovkuLow5LiqXHJcbiAgICAgICAgaWYgKHRoaXMuaXRlbUxpc3QubGVuZ3RoID09IDApIHtcclxuICAgICAgICAgICAgdGhpcy5jb3VudExpc3RQYXJhbSgpO1xyXG4gICAgICAgICAgICB0aGlzLmNyZWF0ZUxpc3QoMCwgbmV3IGNjLlZlYzIoMCwgMCkpO1xyXG4gICAgICAgICAgICAvL+aYvuekuuWIl+ihqOeahOWunuS+i+S4jeS4ujDkuKrvvIzliJnpnIDopoHph43mlrDmjpLliJdpdGVt5a6e5L6L5pWw57uEXHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgaWYgKHRoaXMudHlwZSA9PSBMaXN0VHlwZS5WZXJ0aWNhbCkge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5pdGVtTGlzdC5zb3J0KChhOiBhbnksIGI6IGFueSkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBiLnkgLSBhLnk7XHJcbiAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgfSBlbHNlIGlmICh0aGlzLnR5cGUgPT0gTGlzdFR5cGUuSG9yaXpvbnRhbCkge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5pdGVtTGlzdC5zb3J0KChhOiBhbnksIGI6IGFueSkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBhLnggLSBiLng7XHJcbiAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgfSBlbHNlIGlmICh0aGlzLnR5cGUgPT0gTGlzdFR5cGUuR3JpZCkge1xyXG4gICAgICAgICAgICAgICAgaWYgKHRoaXMuc3RhcnRBeGlzID09IFN0YXJ0QXhpc1R5cGUuVmVydGljYWwpIHtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLml0ZW1MaXN0LnNvcnQoKGE6IGFueSwgYjogYW55KSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBhLnggLSBiLng7XHJcbiAgICAgICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5pdGVtTGlzdC5zb3J0KChhOiBhbnksIGI6IGFueSkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gYi55IC0gYS55O1xyXG4gICAgICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICAgICAgfSBlbHNlIGlmICh0aGlzLnN0YXJ0QXhpcyA9PSBTdGFydEF4aXNUeXBlLkhvcml6b250YWwpIHtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLml0ZW1MaXN0LnNvcnQoKGE6IGFueSwgYjogYW55KSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBiLnkgLSBhLnk7XHJcbiAgICAgICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5pdGVtTGlzdC5zb3J0KChhOiBhbnksIGI6IGFueSkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gYS54IC0gYi54O1xyXG4gICAgICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICB0aGlzLmNvdW50TGlzdFBhcmFtKCk7XHJcblxyXG4gICAgICAgICAgICAvL+iOt+WPluesrOS4gOS4qml0ZW3lrp7kvovpnIDopoHmmL7npLrnmoTmlbDmja7ntKLlvJVcclxuICAgICAgICAgICAgdmFyIHN0YXJ0SW5kZXggPSB0aGlzLml0ZW1MaXN0WzBdLmdldENvbXBvbmVudChJdGVtUmVuZGVyKS5pdGVtSW5kZXg7XHJcblxyXG4gICAgICAgICAgICBpZiAodGhpcy50eXBlID09IExpc3RUeXBlLkdyaWQgJiYgdGhpcy5zdGFydEF4aXMgPT0gU3RhcnRBeGlzVHlwZS5WZXJ0aWNhbCkge1xyXG4gICAgICAgICAgICAgICAgc3RhcnRJbmRleCArPSAoc3RhcnRJbmRleCArIHRoaXMuc3Bhd25Db3VudCkgJSB0aGlzLmdyaWRDb2w7XHJcbiAgICAgICAgICAgIH0gZWxzZSBpZiAodGhpcy50eXBlID09IExpc3RUeXBlLkdyaWQgJiYgdGhpcy5zdGFydEF4aXMgPT0gU3RhcnRBeGlzVHlwZS5Ib3Jpem9udGFsKSB7XHJcbiAgICAgICAgICAgICAgICBzdGFydEluZGV4ICs9IChzdGFydEluZGV4ICsgdGhpcy5zcGF3bkNvdW50KSAlIHRoaXMuZ3JpZFJvdztcclxuICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgLy9nZXRTY3JvbGxPZmZzZXQoKeWSjHNjcm9sbFRvT2Zmc2V0KCnnmoR45YC85piv55u45Y+N55qEXHJcbiAgICAgICAgICAgIHZhciBvZmZzZXQ6IGNjLlZlYzIgPSB0aGlzLnNjcm9sbFZpZXcuZ2V0U2Nyb2xsT2Zmc2V0KCk7XHJcbiAgICAgICAgICAgIG9mZnNldC54ID0gLSBvZmZzZXQueDtcclxuXHJcbiAgICAgICAgICAgIHRoaXMuY3JlYXRlTGlzdChzdGFydEluZGV4LCBvZmZzZXQpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICAvKirplIDmr4EgKi9cclxuICAgIHB1YmxpYyBvbkRlc3Ryb3koKSB7XHJcbiAgICAgICAgLy/muIXnkIbliJfooajpoblcclxuICAgICAgICBsZXQgbGVuID0gdGhpcy5pdGVtTGlzdC5sZW5ndGg7XHJcbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBsZW47IGkrKykge1xyXG4gICAgICAgICAgICBpZiAoY2MuaXNWYWxpZCh0aGlzLml0ZW1MaXN0W2ldLCB0cnVlKSkge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5pdGVtTGlzdFtpXS5kZXN0cm95KCk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgdGhpcy5pdGVtTGlzdC5sZW5ndGggPSAwO1xyXG4gICAgICAgIC8v5riF55CG5a+56LGh5rGgXHJcbiAgICAgICAgbGVuID0gdGhpcy5pdGVtUG9vbC5sZW5ndGg7XHJcbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBsZW47IGkrKykge1xyXG4gICAgICAgICAgICBpZiAoY2MuaXNWYWxpZCh0aGlzLml0ZW1Qb29sW2ldLCB0cnVlKSkge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5pdGVtUG9vbFtpXS5kZXN0cm95KCk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgdGhpcy5pdGVtUG9vbC5sZW5ndGggPSAwO1xyXG4gICAgICAgIC8v5riF55CG5YiX6KGo5pWw5o2uXHJcbiAgICAgICAgdGhpcy5pdGVtRGF0YUxpc3QubGVuZ3RoID0gMDtcclxuICAgIH1cclxufVxyXG4iXX0= //------QC-SOURCE-SPLIT------ (function() { @@ -27049,333 +17727,333 @@ cc._RF.pop(); 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, '18d1c5ObBtCeaysyO5bMIgb', 'TmoAssembler'); -// Script/TmoAssembler.js - -"use strict"; - -exports.__esModule = true; -exports.TmoAssembler = void 0; -function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, _toPropertyKey(descriptor.key), descriptor); } } -function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, "prototype", { writable: false }); return Constructor; } -function _toPropertyKey(arg) { var key = _toPrimitive(arg, "string"); return typeof key === "symbol" ? key : String(key); } -function _toPrimitive(input, hint) { if (typeof input !== "object" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || "default"); if (typeof res !== "object") return res; throw new TypeError("@@toPrimitive must return a primitive value."); } return (hint === "string" ? String : Number)(input); } -function _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; _setPrototypeOf(subClass, superClass); } -function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); } -var gfx = cc.gfx; -// 颜色去除 + 物件图集合批 -var vfmtPosUvIndex = new gfx.VertexFormat([{ - name: gfx.ATTR_POSITION, - type: gfx.ATTR_TYPE_FLOAT32, - num: 2 -}, { - name: gfx.ATTR_UV0, - type: gfx.ATTR_TYPE_FLOAT32, - num: 2 -}, { - name: "a_texture_idx", - type: gfx.ATTR_TYPE_FLOAT32, - num: 1 -}]); - -// 仅物件图集合批 -var vfmtPosUvColorIndex = new gfx.VertexFormat([{ - name: gfx.ATTR_POSITION, - type: gfx.ATTR_TYPE_FLOAT32, - num: 2 -}, { - name: gfx.ATTR_UV0, - type: gfx.ATTR_TYPE_FLOAT32, - num: 2 -}, { - name: "a_texture_idx", - type: gfx.ATTR_TYPE_FLOAT32, - num: 1 -}, { - name: gfx.ATTR_COLOR, - type: gfx.ATTR_TYPE_UINT8, - num: 4, - normalize: true -}]); -var TmoAssembler = /*#__PURE__*/function (_cc$Assembler) { - _inheritsLoose(TmoAssembler, _cc$Assembler); - function TmoAssembler() { - return _cc$Assembler.apply(this, arguments) || this; - } - var _proto = TmoAssembler.prototype; - _proto.init = function init(comp) { - _cc$Assembler.prototype.init.call(this, comp); - this._noColor = comp.isNoColor(); - this.updateColor = this._noColor ? undefined : this.updateColorFunc; - this.uvOffset = 2; - this.colorOffset = 5; - this.textureIndexOffset = 4; - this.floatsPerVert = this._noColor ? 5 : 6; - this.indicesCount = 6; - this.verticesCount = 4; - this._renderData = new cc.RenderData(); - this._renderData.init(this); - this.initLocal(); - this.initData(); - }; - _proto.initLocal = function initLocal() { - this._local = []; - this._local.length = 4; - }; - _proto.initData = function initData() { - var data = this._renderData; - data.createFlexData(0, this.verticesCount, this.indicesCount, this.getVfmt()); - - // 填充顶点索引信息 - var indices = data.iDatas[0]; - var count = indices.length / 6; - for (var i = 0, idx = 0; i < count; i++) { - var vertextID = i * 4; - indices[idx++] = vertextID; - indices[idx++] = vertextID + 1; - indices[idx++] = vertextID + 2; - indices[idx++] = vertextID + 1; - indices[idx++] = vertextID + 3; - indices[idx++] = vertextID + 2; - } - }; - _proto.getBuffer = function getBuffer() { - return cc.renderer._handle.getBuffer("mesh", this.getVfmt()); - }; - _proto.getVfmt = function getVfmt() { - return this._noColor ? vfmtPosUvIndex : vfmtPosUvColorIndex; - }; - _proto.updateRenderData = function updateRenderData(sprite) { - this.packToDynamicAtlas(sprite, sprite._spriteFrame); - if (sprite._vertsDirty) { - this.updateUVs(sprite); - this.updateVerts(sprite); - this.updateTextureIdx(sprite); - sprite._vertsDirty = false; - } - } - - /** - * 填充textureIndex数据 - * @param {cc.Sprite} sprite - */; - _proto.updateTextureIdx = function updateTextureIdx(sprite) { - var textureIdx = sprite._textureIdx; - var verts = this._renderData.vDatas[0]; - var verticesCount = this.verticesCount; - var floatsPerVert = this.floatsPerVert; - var textureIndexOffset = this.textureIndexOffset; - for (var i = 0; i < verticesCount; i++) { - var index = i * floatsPerVert + textureIndexOffset; - verts[index] = textureIdx; - } - }; - _proto.updateUVs = function updateUVs(sprite) { - var uv = sprite._spriteFrame.uv; - var uvOffset = this.uvOffset; - var floatsPerVert = this.floatsPerVert; - var verts = this._renderData.vDatas[0]; - for (var i = 0; i < 4; i++) { - var srcOffset = i * 2; - var dstOffset = floatsPerVert * i + uvOffset; - verts[dstOffset] = uv[srcOffset]; - verts[dstOffset + 1] = uv[srcOffset + 1]; - } - }; - _proto.updateVerts = function updateVerts(sprite) { - var node = sprite.node, - cw = node.width, - ch = node.height, - appx = node.anchorX * cw, - appy = node.anchorY * ch, - l, - b, - r, - t; - if (sprite.trim) { - l = -appx; - b = -appy; - r = cw - appx; - t = ch - appy; - } else { - var frame = sprite.spriteFrame, - ow = frame._originalSize.width, - oh = frame._originalSize.height, - rw = frame._rect.width, - rh = frame._rect.height, - offset = frame._offset, - scaleX = cw / ow, - scaleY = ch / oh; - var trimLeft = offset.x + (ow - rw) / 2; - var trimRight = offset.x - (ow - rw) / 2; - var trimBottom = offset.y + (oh - rh) / 2; - var trimTop = offset.y - (oh - rh) / 2; - l = trimLeft * scaleX - appx; - b = trimBottom * scaleY - appy; - r = cw + trimRight * scaleX - appx; - t = ch + trimTop * scaleY - appy; - } - var local = this._local; - local[0] = l; - local[1] = b; - local[2] = r; - local[3] = t; - this.updateWorldVerts(sprite); - }; - _proto.updateColorFunc = function updateColorFunc(comp, color) { - var uintVerts = this._renderData.uintVDatas[0]; - if (!uintVerts) return; - color = color != null ? color : comp.node.color._val; - var floatsPerVert = this.floatsPerVert; - var colorOffset = this.colorOffset; - for (var i = colorOffset, l = uintVerts.length; i < l; i += floatsPerVert) { - uintVerts[i] = color; - } - }; - _proto.updateWorldVerts = function updateWorldVerts(comp) { - if (CC_NATIVERENDERER) { - // 原生平台兼容代码 复制于jsb-engine.js中的cc.Assembler2D.prototype.updateWorldVerts - var local = this._local; - var verts = this._renderData.vDatas[0]; - var vl = local[0], - vr = local[2], - vb = local[1], - vt = local[3]; - var floatsPerVert = this.floatsPerVert; - var vertexOffset = 0; // left bottom - - verts[vertexOffset] = vl; - verts[vertexOffset + 1] = vb; - vertexOffset += floatsPerVert; // right bottom - - verts[vertexOffset] = vr; - verts[vertexOffset + 1] = vb; - vertexOffset += floatsPerVert; // left top - - verts[vertexOffset] = vl; - verts[vertexOffset + 1] = vt; - vertexOffset += floatsPerVert; // right top - - verts[vertexOffset] = vr; - verts[vertexOffset + 1] = vt; - } else { - var _local = this._local; - var _verts = this._renderData.vDatas[0]; - var matrix = comp.node._worldMatrix; - var matrixm = matrix.m, - a = matrixm[0], - b = matrixm[1], - c = matrixm[4], - d = matrixm[5], - tx = matrixm[12], - ty = matrixm[13]; - var _vl = _local[0], - _vr = _local[2], - _vb = _local[1], - _vt = _local[3]; - var _floatsPerVert = this.floatsPerVert; - var _vertexOffset = 0; - var justTranslate = a === 1 && b === 0 && c === 0 && d === 1; - if (justTranslate) { - // left bottom - _verts[_vertexOffset] = _vl + tx; - _verts[_vertexOffset + 1] = _vb + ty; - _vertexOffset += _floatsPerVert; - // right bottom - _verts[_vertexOffset] = _vr + tx; - _verts[_vertexOffset + 1] = _vb + ty; - _vertexOffset += _floatsPerVert; - // left top - _verts[_vertexOffset] = _vl + tx; - _verts[_vertexOffset + 1] = _vt + ty; - _vertexOffset += _floatsPerVert; - // right top - _verts[_vertexOffset] = _vr + tx; - _verts[_vertexOffset + 1] = _vt + ty; - } else { - var al = a * _vl, - ar = a * _vr, - bl = b * _vl, - br = b * _vr, - cb = c * _vb, - ct = c * _vt, - db = d * _vb, - dt = d * _vt; - - // left bottom - _verts[_vertexOffset] = al + cb + tx; - _verts[_vertexOffset + 1] = bl + db + ty; - _vertexOffset += _floatsPerVert; - // right bottom - _verts[_vertexOffset] = ar + cb + tx; - _verts[_vertexOffset + 1] = br + db + ty; - _vertexOffset += _floatsPerVert; - // left top - _verts[_vertexOffset] = al + ct + tx; - _verts[_vertexOffset + 1] = bl + dt + ty; - _vertexOffset += _floatsPerVert; - // right top - _verts[_vertexOffset] = ar + ct + tx; - _verts[_vertexOffset + 1] = br + dt + ty; - } - } - }; - _proto.fillBuffers = function fillBuffers(comp, renderer) { - if (renderer.worldMatDirty) { - this.updateWorldVerts(comp); - } - var renderData = this._renderData; - var vData = renderData.vDatas[0]; - var iData = renderData.iDatas[0]; - var buffer = this.getBuffer(renderer); - var offsetInfo = buffer.request(this.verticesCount, this.indicesCount); - - // buffer data may be realloc, need get reference after request. - - // fill vertices - var vertexOffset = offsetInfo.byteOffset >> 2, - vbuf = buffer._vData; - if (vData.length + vertexOffset > vbuf.length) { - vbuf.set(vData.subarray(0, vbuf.length - vertexOffset), vertexOffset); - } else { - vbuf.set(vData, vertexOffset); - } - - // fill indices - var ibuf = buffer._iData, - indiceOffset = offsetInfo.indiceOffset, - vertexId = offsetInfo.vertexOffset; - for (var i = 0, l = iData.length; i < l; i++) { - ibuf[indiceOffset++] = vertexId + iData[i]; - } - }; - _proto.packToDynamicAtlas = function packToDynamicAtlas(comp, frame) { - if (CC_TEST) return; - if (!frame._original && cc.dynamicAtlasManager && frame._texture.packable) { - var packedFrame = cc.dynamicAtlasManager.insertSpriteFrame(frame); - if (packedFrame) { - frame._setDynamicAtlasFrame(packedFrame); - } - } - var material = comp._materials[0]; - if (!material) return; - if (material.getProperty('texture') !== frame._texture) { - // texture was packed to dynamic atlas, should update uvs - comp._vertsDirty = true; - comp._updateMaterial(); - } - }; - _createClass(TmoAssembler, [{ - key: "verticesFloats", - get: function get() { - return this.verticesCount * this.floatsPerVert; - } - }]); - return TmoAssembler; -}(cc.Assembler); -exports.TmoAssembler = TmoAssembler; - + if (!nodeEnv) {__quick_compile_project__.registerModule(__filename, module);}"use strict"; +cc._RF.push(module, '18d1c5ObBtCeaysyO5bMIgb', 'TmoAssembler'); +// Script/TmoAssembler.js + +"use strict"; + +exports.__esModule = true; +exports.TmoAssembler = void 0; +function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, _toPropertyKey(descriptor.key), descriptor); } } +function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, "prototype", { writable: false }); return Constructor; } +function _toPropertyKey(arg) { var key = _toPrimitive(arg, "string"); return typeof key === "symbol" ? key : String(key); } +function _toPrimitive(input, hint) { if (typeof input !== "object" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || "default"); if (typeof res !== "object") return res; throw new TypeError("@@toPrimitive must return a primitive value."); } return (hint === "string" ? String : Number)(input); } +function _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; _setPrototypeOf(subClass, superClass); } +function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); } +var gfx = cc.gfx; +// 颜色去除 + 物件图集合批 +var vfmtPosUvIndex = new gfx.VertexFormat([{ + name: gfx.ATTR_POSITION, + type: gfx.ATTR_TYPE_FLOAT32, + num: 2 +}, { + name: gfx.ATTR_UV0, + type: gfx.ATTR_TYPE_FLOAT32, + num: 2 +}, { + name: "a_texture_idx", + type: gfx.ATTR_TYPE_FLOAT32, + num: 1 +}]); + +// 仅物件图集合批 +var vfmtPosUvColorIndex = new gfx.VertexFormat([{ + name: gfx.ATTR_POSITION, + type: gfx.ATTR_TYPE_FLOAT32, + num: 2 +}, { + name: gfx.ATTR_UV0, + type: gfx.ATTR_TYPE_FLOAT32, + num: 2 +}, { + name: "a_texture_idx", + type: gfx.ATTR_TYPE_FLOAT32, + num: 1 +}, { + name: gfx.ATTR_COLOR, + type: gfx.ATTR_TYPE_UINT8, + num: 4, + normalize: true +}]); +var TmoAssembler = /*#__PURE__*/function (_cc$Assembler) { + _inheritsLoose(TmoAssembler, _cc$Assembler); + function TmoAssembler() { + return _cc$Assembler.apply(this, arguments) || this; + } + var _proto = TmoAssembler.prototype; + _proto.init = function init(comp) { + _cc$Assembler.prototype.init.call(this, comp); + this._noColor = comp.isNoColor(); + this.updateColor = this._noColor ? undefined : this.updateColorFunc; + this.uvOffset = 2; + this.colorOffset = 5; + this.textureIndexOffset = 4; + this.floatsPerVert = this._noColor ? 5 : 6; + this.indicesCount = 6; + this.verticesCount = 4; + this._renderData = new cc.RenderData(); + this._renderData.init(this); + this.initLocal(); + this.initData(); + }; + _proto.initLocal = function initLocal() { + this._local = []; + this._local.length = 4; + }; + _proto.initData = function initData() { + var data = this._renderData; + data.createFlexData(0, this.verticesCount, this.indicesCount, this.getVfmt()); + + // 填充顶点索引信息 + var indices = data.iDatas[0]; + var count = indices.length / 6; + for (var i = 0, idx = 0; i < count; i++) { + var vertextID = i * 4; + indices[idx++] = vertextID; + indices[idx++] = vertextID + 1; + indices[idx++] = vertextID + 2; + indices[idx++] = vertextID + 1; + indices[idx++] = vertextID + 3; + indices[idx++] = vertextID + 2; + } + }; + _proto.getBuffer = function getBuffer() { + return cc.renderer._handle.getBuffer("mesh", this.getVfmt()); + }; + _proto.getVfmt = function getVfmt() { + return this._noColor ? vfmtPosUvIndex : vfmtPosUvColorIndex; + }; + _proto.updateRenderData = function updateRenderData(sprite) { + this.packToDynamicAtlas(sprite, sprite._spriteFrame); + if (sprite._vertsDirty) { + this.updateUVs(sprite); + this.updateVerts(sprite); + this.updateTextureIdx(sprite); + sprite._vertsDirty = false; + } + } + + /** + * 填充textureIndex数据 + * @param {cc.Sprite} sprite + */; + _proto.updateTextureIdx = function updateTextureIdx(sprite) { + var textureIdx = sprite._textureIdx; + var verts = this._renderData.vDatas[0]; + var verticesCount = this.verticesCount; + var floatsPerVert = this.floatsPerVert; + var textureIndexOffset = this.textureIndexOffset; + for (var i = 0; i < verticesCount; i++) { + var index = i * floatsPerVert + textureIndexOffset; + verts[index] = textureIdx; + } + }; + _proto.updateUVs = function updateUVs(sprite) { + var uv = sprite._spriteFrame.uv; + var uvOffset = this.uvOffset; + var floatsPerVert = this.floatsPerVert; + var verts = this._renderData.vDatas[0]; + for (var i = 0; i < 4; i++) { + var srcOffset = i * 2; + var dstOffset = floatsPerVert * i + uvOffset; + verts[dstOffset] = uv[srcOffset]; + verts[dstOffset + 1] = uv[srcOffset + 1]; + } + }; + _proto.updateVerts = function updateVerts(sprite) { + var node = sprite.node, + cw = node.width, + ch = node.height, + appx = node.anchorX * cw, + appy = node.anchorY * ch, + l, + b, + r, + t; + if (sprite.trim) { + l = -appx; + b = -appy; + r = cw - appx; + t = ch - appy; + } else { + var frame = sprite.spriteFrame, + ow = frame._originalSize.width, + oh = frame._originalSize.height, + rw = frame._rect.width, + rh = frame._rect.height, + offset = frame._offset, + scaleX = cw / ow, + scaleY = ch / oh; + var trimLeft = offset.x + (ow - rw) / 2; + var trimRight = offset.x - (ow - rw) / 2; + var trimBottom = offset.y + (oh - rh) / 2; + var trimTop = offset.y - (oh - rh) / 2; + l = trimLeft * scaleX - appx; + b = trimBottom * scaleY - appy; + r = cw + trimRight * scaleX - appx; + t = ch + trimTop * scaleY - appy; + } + var local = this._local; + local[0] = l; + local[1] = b; + local[2] = r; + local[3] = t; + this.updateWorldVerts(sprite); + }; + _proto.updateColorFunc = function updateColorFunc(comp, color) { + var uintVerts = this._renderData.uintVDatas[0]; + if (!uintVerts) return; + color = color != null ? color : comp.node.color._val; + var floatsPerVert = this.floatsPerVert; + var colorOffset = this.colorOffset; + for (var i = colorOffset, l = uintVerts.length; i < l; i += floatsPerVert) { + uintVerts[i] = color; + } + }; + _proto.updateWorldVerts = function updateWorldVerts(comp) { + if (CC_NATIVERENDERER) { + // 原生平台兼容代码 复制于jsb-engine.js中的cc.Assembler2D.prototype.updateWorldVerts + var local = this._local; + var verts = this._renderData.vDatas[0]; + var vl = local[0], + vr = local[2], + vb = local[1], + vt = local[3]; + var floatsPerVert = this.floatsPerVert; + var vertexOffset = 0; // left bottom + + verts[vertexOffset] = vl; + verts[vertexOffset + 1] = vb; + vertexOffset += floatsPerVert; // right bottom + + verts[vertexOffset] = vr; + verts[vertexOffset + 1] = vb; + vertexOffset += floatsPerVert; // left top + + verts[vertexOffset] = vl; + verts[vertexOffset + 1] = vt; + vertexOffset += floatsPerVert; // right top + + verts[vertexOffset] = vr; + verts[vertexOffset + 1] = vt; + } else { + var _local = this._local; + var _verts = this._renderData.vDatas[0]; + var matrix = comp.node._worldMatrix; + var matrixm = matrix.m, + a = matrixm[0], + b = matrixm[1], + c = matrixm[4], + d = matrixm[5], + tx = matrixm[12], + ty = matrixm[13]; + var _vl = _local[0], + _vr = _local[2], + _vb = _local[1], + _vt = _local[3]; + var _floatsPerVert = this.floatsPerVert; + var _vertexOffset = 0; + var justTranslate = a === 1 && b === 0 && c === 0 && d === 1; + if (justTranslate) { + // left bottom + _verts[_vertexOffset] = _vl + tx; + _verts[_vertexOffset + 1] = _vb + ty; + _vertexOffset += _floatsPerVert; + // right bottom + _verts[_vertexOffset] = _vr + tx; + _verts[_vertexOffset + 1] = _vb + ty; + _vertexOffset += _floatsPerVert; + // left top + _verts[_vertexOffset] = _vl + tx; + _verts[_vertexOffset + 1] = _vt + ty; + _vertexOffset += _floatsPerVert; + // right top + _verts[_vertexOffset] = _vr + tx; + _verts[_vertexOffset + 1] = _vt + ty; + } else { + var al = a * _vl, + ar = a * _vr, + bl = b * _vl, + br = b * _vr, + cb = c * _vb, + ct = c * _vt, + db = d * _vb, + dt = d * _vt; + + // left bottom + _verts[_vertexOffset] = al + cb + tx; + _verts[_vertexOffset + 1] = bl + db + ty; + _vertexOffset += _floatsPerVert; + // right bottom + _verts[_vertexOffset] = ar + cb + tx; + _verts[_vertexOffset + 1] = br + db + ty; + _vertexOffset += _floatsPerVert; + // left top + _verts[_vertexOffset] = al + ct + tx; + _verts[_vertexOffset + 1] = bl + dt + ty; + _vertexOffset += _floatsPerVert; + // right top + _verts[_vertexOffset] = ar + ct + tx; + _verts[_vertexOffset + 1] = br + dt + ty; + } + } + }; + _proto.fillBuffers = function fillBuffers(comp, renderer) { + if (renderer.worldMatDirty) { + this.updateWorldVerts(comp); + } + var renderData = this._renderData; + var vData = renderData.vDatas[0]; + var iData = renderData.iDatas[0]; + var buffer = this.getBuffer(renderer); + var offsetInfo = buffer.request(this.verticesCount, this.indicesCount); + + // buffer data may be realloc, need get reference after request. + + // fill vertices + var vertexOffset = offsetInfo.byteOffset >> 2, + vbuf = buffer._vData; + if (vData.length + vertexOffset > vbuf.length) { + vbuf.set(vData.subarray(0, vbuf.length - vertexOffset), vertexOffset); + } else { + vbuf.set(vData, vertexOffset); + } + + // fill indices + var ibuf = buffer._iData, + indiceOffset = offsetInfo.indiceOffset, + vertexId = offsetInfo.vertexOffset; + for (var i = 0, l = iData.length; i < l; i++) { + ibuf[indiceOffset++] = vertexId + iData[i]; + } + }; + _proto.packToDynamicAtlas = function packToDynamicAtlas(comp, frame) { + if (CC_TEST) return; + if (!frame._original && cc.dynamicAtlasManager && frame._texture.packable) { + var packedFrame = cc.dynamicAtlasManager.insertSpriteFrame(frame); + if (packedFrame) { + frame._setDynamicAtlasFrame(packedFrame); + } + } + var material = comp._materials[0]; + if (!material) return; + if (material.getProperty('texture') !== frame._texture) { + // texture was packed to dynamic atlas, should update uvs + comp._vertsDirty = true; + comp._updateMaterial(); + } + }; + _createClass(TmoAssembler, [{ + key: "verticesFloats", + get: function get() { + return this.verticesCount * this.floatsPerVert; + } + }]); + return TmoAssembler; +}(cc.Assembler); +exports.TmoAssembler = TmoAssembler; + cc._RF.pop(); } if (nodeEnv) { @@ -27393,165 +18071,220 @@ cc._RF.pop(); (function() { var nodeEnv = typeof require !== 'undefined' && typeof process !== 'undefined'; var __module = nodeEnv ? module : {exports:{}}; ->>>>>>> 0a31a7a5abc2c505bf743aa596e1c765a0405152 - var __filename = 'preview-scripts/tiledmap-optimize-resource/Script/TmoTiledMap.js'; + var __filename = 'preview-scripts/tiledmap-optimize-resource/Script/TmoObjectGroup.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, '0b9eetmSUdJRZCQS91TYCw/', 'TmoTiledMap'); -// Script/TmoTiledMap.js - -"use strict"; - -// Learn cc.Class: -// - https://docs.cocos.com/creator/manual/en/scripting/class.html -// Learn Attribute: -// - https://docs.cocos.com/creator/manual/en/scripting/reference/attributes.html -// Learn life-cycle callbacks: -// - https://docs.cocos.com/creator/manual/en/scripting/life-cycle-callbacks.html -var TmoTiledLayer = require("./TmoTiledLayer"); -var TmoObjectGroup = require("./TmoObjectGroup"); -cc.Class({ - "extends": cc.TiledMap, - properties: { - objectMaterial: cc.Material, - noColor: true, - singleTexture: true, - _objectTextures: [] - }, - _applyFile: function _applyFile() { - if (!this.objectMaterial) { - cc.error("TiledmapOptimize: 未设置objectMaterial!"); - return; - } - this._super(); - }, - _buildLayerAndGroup: function _buildLayerAndGroup() { - var tilesets = this._tilesets; - var texGrids = this._texGrids; - var animations = this._animations; - texGrids.length = 0; - for (var i = 0, l = tilesets.length; i < l; ++i) { - var tilesetInfo = tilesets[i]; - if (!tilesetInfo) continue; - cc.TiledMap.fillTextureGrids(tilesetInfo, texGrids, i); - } - this._fillAniGrids(texGrids, animations); - var layers = this._layers; - var groups = this._groups; - var images = this._images; - var oldNodeNames = {}; - for (var _i = 0, n = layers.length; _i < n; _i++) { - oldNodeNames[layers[_i].node._name] = true; - } - for (var _i2 = 0, _n = groups.length; _i2 < _n; _i2++) { - oldNodeNames[groups[_i2].node._name] = true; - } - for (var _i3 = 0, _n2 = images.length; _i3 < _n2; _i3++) { - oldNodeNames[images[_i3]._name] = true; - } - layers = this._layers = []; - groups = this._groups = []; - images = this._images = []; - var mapInfo = this._mapInfo; - var node = this.node; - var layerInfos = mapInfo.getAllChildren(); - var textures = this._textures; - var maxWidth = 0; - var maxHeight = 0; - this._objectTextures = []; - var firstTmxLayer = null; - if (layerInfos && layerInfos.length > 0) { - for (var _i4 = 0, len = layerInfos.length; _i4 < len; _i4++) { - var layerInfo = layerInfos[_i4]; - var name = layerInfo.name; - var child = this.node.getChildByName(name); - oldNodeNames[name] = false; - if (!child) { - child = new cc.Node(); - child.name = name; - node.addChild(child); - } - child.setSiblingIndex(_i4); - child.active = layerInfo.visible; - if (layerInfo instanceof cc.TMXLayerInfo) { - // 此处修改 改为创建MyTiledLayer - var layer = child.getComponent(TmoTiledLayer); - if (!layer) { - layer = child.addComponent(TmoTiledLayer); - } - // 修改结束 - // 此处修改 传递firstTmxLayer 记录firstTmxLayer - layer._init(layerInfo, mapInfo, tilesets, textures, texGrids, this, firstTmxLayer); - firstTmxLayer = firstTmxLayer || layer; - // 修改结束 - - // tell the layerinfo to release the ownership of the tiles map. - layerInfo.ownTiles = false; - layers.push(layer); - } else if (layerInfo instanceof cc.TMXObjectGroupInfo) { - var group = child.getComponent(TmoObjectGroup); - if (!group) { - group = child.addComponent(TmoObjectGroup); - } - group._init(layerInfo, mapInfo, texGrids, this); - groups.push(group); - } else if (layerInfo instanceof cc.TMXImageLayerInfo) { - var texture = layerInfo.sourceImage; - child.opacity = layerInfo.opacity; - child.layerInfo = layerInfo; - child._offset = cc.v2(layerInfo.offset.x, -layerInfo.offset.y); - var image = child.getComponent(cc.Sprite); - if (!image) { - image = child.addComponent(cc.Sprite); - } - var spf = image.spriteFrame || new cc.SpriteFrame(); - spf.setTexture(texture); - image.spriteFrame = spf; - child.width = texture.width; - child.height = texture.height; - images.push(child); - } - maxWidth = Math.max(maxWidth, child.width); - maxHeight = Math.max(maxHeight, child.height); - } - } - - // 设置材质的texture属性 - var objectTextures = this._objectTextures; - for (var _i5 = 0; _i5 < objectTextures.length; _i5++) { - var idx = _i5 === 0 ? '' : _i5; - this.objectMaterial.setProperty("texture" + idx, objectTextures[_i5], 0); - } - var children = node.children; - for (var _i6 = 0, _n3 = children.length; _i6 < _n3; _i6++) { - var c = children[_i6]; - if (oldNodeNames[c._name]) { - c.destroy(); - } - } - this.node.width = maxWidth; - this.node.height = maxHeight; - this._syncAnchorPoint(); - }, - getObjectMaterial: function getObjectMaterial() { - return this.objectMaterial; - }, - isNoColor: function isNoColor() { - return this.noColor; - }, - isSingleTexture: function isSingleTexture() { - return this.singleTexture; - }, - getObjectTextures: function getObjectTextures() { - return this._objectTextures; - } -}); - + if (!nodeEnv) {__quick_compile_project__.registerModule(__filename, module);}"use strict"; +cc._RF.push(module, '30e2eSQWDNKI69FbaYfN62j', 'TmoObjectGroup'); +// Script/TmoObjectGroup.js + +"use strict"; + +exports.__esModule = true; +exports["default"] = void 0; +// Learn cc.Class: +// - https://docs.cocos.com/creator/manual/en/scripting/class.html +// Learn Attribute: +// - https://docs.cocos.com/creator/manual/en/scripting/reference/attributes.html +// Learn life-cycle callbacks: +// - https://docs.cocos.com/creator/manual/en/scripting/life-cycle-callbacks.html + +var TmoSprite = require("./TmoSprite"); +var _default = cc.Class({ + "extends": cc.TiledObjectGroup, + _init: function _init(groupInfo, mapInfo, texGrids, tiledMap) { + var TiledMap = cc.TiledMap; + var TMXObjectType = TiledMap.TMXObjectType; + var Orientation = TiledMap.Orientation; + var StaggerAxis = TiledMap.StaggerAxis; + var TileFlag = TiledMap.TileFlag; + var FLIPPED_MASK = TileFlag.FLIPPED_MASK; + var FLAG_HORIZONTAL = TileFlag.HORIZONTAL; + var FLAG_VERTICAL = TileFlag.VERTICAL; + this._groupName = groupInfo.name; + this._positionOffset = groupInfo.offset; + this._mapInfo = mapInfo; + this._properties = groupInfo.getProperties(); + this._offset = cc.v2(groupInfo.offset.x, -groupInfo.offset.y); + this._opacity = groupInfo._opacity; + var mapSize = mapInfo._mapSize; + var tileSize = mapInfo._tileSize; + var width = 0, + height = 0; + if (mapInfo.orientation === Orientation.HEX) { + if (mapInfo.getStaggerAxis() === StaggerAxis.STAGGERAXIS_X) { + height = tileSize.height * (mapSize.height + 0.5); + width = (tileSize.width + mapInfo.getHexSideLength()) * Math.floor(mapSize.width / 2) + tileSize.width * (mapSize.width % 2); + } else { + width = tileSize.width * (mapSize.width + 0.5); + height = (tileSize.height + mapInfo.getHexSideLength()) * Math.floor(mapSize.height / 2) + tileSize.height * (mapSize.height % 2); + } + } else if (mapInfo.orientation === Orientation.ISO) { + var wh = mapSize.width + mapSize.height; + width = tileSize.width * 0.5 * wh; + height = tileSize.height * 0.5 * wh; + } else { + width = mapSize.width * tileSize.width; + height = mapSize.height * tileSize.height; + } + this.node.setContentSize(width, height); + var leftTopX = width * this.node.anchorX; + var leftTopY = height * (1 - this.node.anchorY); + var objects = groupInfo._objects; + var aliveNodes = {}; + + // 生成映射Map { Texture2D: textureIndex } + var textureIndexMap = new Map(); + var objectTextures = tiledMap.getObjectTextures(); + objectTextures.forEach(function (texture, idx) { + return textureIndexMap.set(texture, idx); + }); + for (var i = 0, l = objects.length; i < l; i++) { + var object = objects[i]; + var objType = object.type; + object.offset = cc.v2(object.x, object.y); + var points = object.points || object.polylinePoints; + if (points) { + for (var pi = 0; pi < points.length; pi++) { + points[pi].y *= -1; + } + } + if (Orientation.ISO !== mapInfo.orientation) { + object.y = height - object.y; + } else { + var posIdxX = object.x / tileSize.height; + var posIdxY = object.y / tileSize.height; + object.x = tileSize.width * 0.5 * (mapSize.height + posIdxX - posIdxY); + object.y = tileSize.height * 0.5 * (mapSize.width + mapSize.height - posIdxX - posIdxY); + } + if (objType === TMXObjectType.TEXT) { + var textName = "text" + object.id; + aliveNodes[textName] = true; + var textNode = this.node.getChildByName(textName); + if (!textNode) { + textNode = new cc.Node(); + } + textNode.active = object.visible; + textNode.anchorX = 0; + textNode.anchorY = 1; + textNode.angle = -object.rotation; + textNode.x = object.x - leftTopX; + textNode.y = object.y - leftTopY; + textNode.name = textName; + textNode.parent = this.node; + textNode.color = object.color; + textNode.opacity = this._opacity; + textNode.setSiblingIndex(i); + var label = textNode.getComponent(cc.Label); + if (!label) { + label = textNode.addComponent(cc.Label); + } + label.overflow = cc.Label.Overflow.SHRINK; + label.lineHeight = object.height; + label.string = object.text; + label.horizontalAlign = object.halign; + label.verticalAlign = object.valign; + label.fontSize = object.pixelsize; + textNode.width = object.width; + textNode.height = object.height; + } + if (objType === TMXObjectType.IMAGE) { + var gid = object.gid; + var grid = texGrids[(gid & FLIPPED_MASK) >>> 0]; + if (!grid) continue; + var tileset = grid.tileset; + var imgName = "img" + object.id; + aliveNodes[imgName] = true; + var imgNode = this.node.getChildByName(imgName); + var imgWidth = object.width || grid.width; + var imgHeight = object.height || grid.height; + var tileOffsetX = tileset.tileOffset.x; + var tileOffsetY = tileset.tileOffset.y; + + // Delete image nodes implemented as private nodes + // Use cc.Node to implement node-level requirements + if (imgNode instanceof cc.PrivateNode) { + imgNode.removeFromParent(); + imgNode.destroy(); + imgNode = null; + } + if (!imgNode) { + imgNode = new cc.Node(); + } + if (Orientation.ISO == mapInfo.orientation) { + imgNode.anchorX = 0.5 + tileOffsetX / imgWidth; + imgNode.anchorY = tileOffsetY / imgHeight; + } else { + imgNode.anchorX = tileOffsetX / imgWidth; + imgNode.anchorY = tileOffsetY / imgHeight; + } + imgNode.active = object.visible; + imgNode.angle = -object.rotation; + imgNode.x = object.x - leftTopX; + imgNode.y = object.y - leftTopY; + imgNode.name = imgName; + imgNode.parent = this.node; + imgNode.opacity = this._opacity; + imgNode.setSiblingIndex(i); + imgNode._tiledMap = tiledMap; + var sp = imgNode.getComponent(TmoSprite); + if (!sp) { + sp = imgNode.addComponent(TmoSprite); + } + var spf = sp.spriteFrame; + if (!spf) { + spf = new cc.SpriteFrame(); + } + if ((gid & FLAG_HORIZONTAL) >>> 0) { + spf.setFlipX(true); + } else { + spf.setFlipX(false); + } + if ((gid & FLAG_VERTICAL) >>> 0) { + spf.setFlipY(true); + } else { + spf.setFlipY(false); + } + var sourceImage = grid.tileset.sourceImage; + spf.setTexture(sourceImage, cc.rect(grid)); + sp.spriteFrame = spf; + sp.setVertsDirty(); + + // object group may has no width or height info + imgNode.width = imgWidth; + imgNode.height = imgHeight; + + // 收集图集 更新textureIndexMap + if (!textureIndexMap.has(sourceImage)) { + textureIndexMap.set(sourceImage, objectTextures.length); + objectTextures.push(sourceImage); + } + + // 设置textureIndex + var textureIndex = textureIndexMap.get(sourceImage); + sp.setTextureIdx(textureIndex + 1); + } + } + this._objects = objects; + + // destroy useless node + var children = this.node.children; + var uselessExp = /^(?:img|text)\d+$/; + for (var _i = 0, n = children.length; _i < n; _i++) { + var c = children[_i]; + var cName = c._name; + var isUseless = uselessExp.test(cName); + if (isUseless && !aliveNodes[cName]) c.destroy(); + } + } +}); +exports["default"] = _default; +module.exports = exports["default"]; + cc._RF.pop(); } if (nodeEnv) { @@ -27563,5 +18296,5 @@ cc._RF.pop(); }); } })(); -//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInBhY2thZ2VzXFxUaWxlZE1hcE9wdGltaXplclxccmVzb3VyY2VcXFNjcmlwdFxcVG1vVGlsZWRNYXAuanMiXSwibmFtZXMiOlsiVG1vVGlsZWRMYXllciIsInJlcXVpcmUiLCJUbW9PYmplY3RHcm91cCIsImNjIiwiQ2xhc3MiLCJUaWxlZE1hcCIsInByb3BlcnRpZXMiLCJvYmplY3RNYXRlcmlhbCIsIk1hdGVyaWFsIiwibm9Db2xvciIsInNpbmdsZVRleHR1cmUiLCJfb2JqZWN0VGV4dHVyZXMiLCJfYXBwbHlGaWxlIiwiZXJyb3IiLCJfc3VwZXIiLCJfYnVpbGRMYXllckFuZEdyb3VwIiwidGlsZXNldHMiLCJfdGlsZXNldHMiLCJ0ZXhHcmlkcyIsIl90ZXhHcmlkcyIsImFuaW1hdGlvbnMiLCJfYW5pbWF0aW9ucyIsImxlbmd0aCIsImkiLCJsIiwidGlsZXNldEluZm8iLCJmaWxsVGV4dHVyZUdyaWRzIiwiX2ZpbGxBbmlHcmlkcyIsImxheWVycyIsIl9sYXllcnMiLCJncm91cHMiLCJfZ3JvdXBzIiwiaW1hZ2VzIiwiX2ltYWdlcyIsIm9sZE5vZGVOYW1lcyIsIm4iLCJub2RlIiwiX25hbWUiLCJtYXBJbmZvIiwiX21hcEluZm8iLCJsYXllckluZm9zIiwiZ2V0QWxsQ2hpbGRyZW4iLCJ0ZXh0dXJlcyIsIl90ZXh0dXJlcyIsIm1heFdpZHRoIiwibWF4SGVpZ2h0IiwiZmlyc3RUbXhMYXllciIsImxlbiIsImxheWVySW5mbyIsIm5hbWUiLCJjaGlsZCIsImdldENoaWxkQnlOYW1lIiwiTm9kZSIsImFkZENoaWxkIiwic2V0U2libGluZ0luZGV4IiwiYWN0aXZlIiwidmlzaWJsZSIsIlRNWExheWVySW5mbyIsImxheWVyIiwiZ2V0Q29tcG9uZW50IiwiYWRkQ29tcG9uZW50IiwiX2luaXQiLCJvd25UaWxlcyIsInB1c2giLCJUTVhPYmplY3RHcm91cEluZm8iLCJncm91cCIsIlRNWEltYWdlTGF5ZXJJbmZvIiwidGV4dHVyZSIsInNvdXJjZUltYWdlIiwib3BhY2l0eSIsIl9vZmZzZXQiLCJ2MiIsIm9mZnNldCIsIngiLCJ5IiwiaW1hZ2UiLCJTcHJpdGUiLCJzcGYiLCJzcHJpdGVGcmFtZSIsIlNwcml0ZUZyYW1lIiwic2V0VGV4dHVyZSIsIndpZHRoIiwiaGVpZ2h0IiwiTWF0aCIsIm1heCIsIm9iamVjdFRleHR1cmVzIiwiaWR4Iiwic2V0UHJvcGVydHkiLCJjaGlsZHJlbiIsImMiLCJkZXN0cm95IiwiX3N5bmNBbmNob3JQb2ludCIsImdldE9iamVjdE1hdGVyaWFsIiwiaXNOb0NvbG9yIiwiaXNTaW5nbGVUZXh0dXJlIiwiZ2V0T2JqZWN0VGV4dHVyZXMiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsSUFBTUEsYUFBYSxHQUFHQyxPQUFPLENBQUMsaUJBQWlCLENBQUM7QUFDaEQsSUFBTUMsY0FBYyxHQUFHRCxPQUFPLENBQUMsa0JBQWtCLENBQUM7QUFDbERFLEVBQUUsQ0FBQ0MsS0FBSyxDQUFDO0VBQ0wsV0FBU0QsRUFBRSxDQUFDRSxRQUFRO0VBQ3BCQyxVQUFVLEVBQUU7SUFDUkMsY0FBYyxFQUFFSixFQUFFLENBQUNLLFFBQVE7SUFDM0JDLE9BQU8sRUFBRSxJQUFJO0lBQ2JDLGFBQWEsRUFBRSxJQUFJO0lBRW5CQyxlQUFlLEVBQUU7RUFDckIsQ0FBQztFQUdEQyxVQUFVLEVBQUUsU0FBQUEsV0FBQSxFQUFZO0lBQ3BCLElBQUksQ0FBQyxJQUFJLENBQUNMLGNBQWMsRUFBRTtNQUN0QkosRUFBRSxDQUFDVSxLQUFLLENBQUMsc0NBQXNDLENBQUM7TUFDaEQ7SUFDSjtJQUVBLElBQUksQ0FBQ0MsTUFBTSxFQUFFO0VBQ2pCLENBQUM7RUFFREMsbUJBQW1CLEVBQUUsU0FBQUEsb0JBQUEsRUFBWTtJQUM3QixJQUFJQyxRQUFRLEdBQUcsSUFBSSxDQUFDQyxTQUFTO0lBQzdCLElBQUlDLFFBQVEsR0FBRyxJQUFJLENBQUNDLFNBQVM7SUFDN0IsSUFBSUMsVUFBVSxH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QUFDO0VBRURzRixTQUFTLEVBQUUsU0FBQUEsVUFBQSxFQUFZO0lBQ25CLE9BQU8sSUFBSSxDQUFDcEYsT0FBTztFQUN2QixDQUFDO0VBRURxRixlQUFlLEVBQUUsU0FBQUEsZ0JBQUEsRUFBWTtJQUN6QixPQUFPLElBQUksQ0FBQ3BGLGFBQWE7RUFDN0IsQ0FBQztFQUVEcUYsaUJBQWlCLEVBQUUsU0FBQUEsa0JBQUEsRUFBWTtJQUMzQixPQUFPLElBQUksQ0FBQ3BGLGVBQWU7RUFDL0I7QUFDSixDQUFDLENBQUMiLCJzb3VyY2VSb290IjoiLyIsInNvdXJjZXNDb250ZW50IjpbIi8vIExlYXJuIGNjLkNsYXNzOlxyXG4vLyAgLSBodHRwczovL2RvY3MuY29jb3MuY29tL2NyZWF0b3IvbWFudWFsL2VuL3NjcmlwdGluZy9jbGFzcy5odG1sXHJcbi8vIExlYXJuIEF0dHJpYnV0ZTpcclxuLy8gIC0gaHR0cHM6Ly9kb2NzLmNvY29zLmNvbS9jcmVhdG9yL21hbnVhbC9lbi9zY3JpcHRpbmcvcmVmZXJlbmNlL2F0dHJpYnV0ZXMuaHRtbFxyXG4vLyBMZWFybiBsaWZlLWN5Y2xlIGNhbGxiYWNrczpcclxuLy8gIC0gaHR0cHM6Ly9kb2NzLmNvY29zLmNvbS9jcmVhdG9yL21hbnVhbC9lbi9zY3JpcHRpbmcvbGlmZS1jeWNsZS1jYWxsYmFja3MuaHRtbFxyXG5jb25zdCBUbW9UaWxlZExheWVyID0gcmVxdWlyZShcIi4vVG1vVGlsZWRMYXllclwiKTtcclxuY29uc3QgVG1vT2JqZWN0R3JvdXAgPSByZXF1aXJlKFwiLi9UbW9PYmplY3RHcm91cFwiKTtcclxuY2MuQ2xhc3Moe1xyXG4gICAgZXh0ZW5kczogY2MuVGlsZWRNYXAsXHJcbiAgICBwcm9wZXJ0aWVzOiB7XHJcbiAgICAgICAgb2JqZWN0TWF0ZXJpYWw6IGNjLk1hdGVyaWFsLFxyXG4gICAgICAgIG5vQ29sb3I6IHRydWUsXHJcbiAgICAgICAgc2luZ2xlVGV4dHVyZTogdHJ1ZSxcclxuXHJcbiAgICAgICAgX29iamVjdFRleHR1cmVzOiBbXSxcclxuICAgIH0sXHJcbiAgICBcclxuXHJcbiAgICBfYXBwbHlGaWxlOiBmdW5jdGlvbiAoKSB7XHJcbiAgICAgICAgaWYgKCF0aGlzLm9iamVjdE1hdGVyaWFsKSB7XHJcbiAgICAgICAgICAgIGNjLmVycm9yKFwiVGlsZWRtYXBPcHRpbWl6ZTog5pyq6K6+572ub2JqZWN0TWF0ZXJpYWwhXCIpO1xyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICB0aGlzLl9zdXBlcigpO1xyXG4gICAgfSxcclxuXHJcbiAgICBfYnVpbGRMYXllckFuZEdyb3VwOiBmdW5jdGlvbiAoKSB7XHJcbiAgICAgICAgbGV0IHRpbGVzZXRzID0gdGhpcy5fdGlsZXNldHM7XHJcbiAgICAgICAgbGV0IHRleEdyaWRzID0gdGhpcy5fdGV4R3JpZHM7XHJcbiAgICAgICAgbGV0IGFuaW1hdGlvbnMgPSB0aGlzLl9hbmltYXRpb25zO1xyXG4gICAgICAgIHRleEdyaWRzLmxlbmd0aCA9IDA7XHJcbiAgICAgICAgZm9yIChsZXQgaSA9IDAsIGwgPSB0aWxlc2V0cy5sZW5ndGg7IGkgPCBsOyArK2kpIHtcclxuICAgICAgICAgICAgbGV0IHRpbGVzZXRJbmZvID0gdGlsZXNldHNbaV07XHJcbiAgICAgICAgICAgIGlmICghdGlsZXNldEluZm8pIGNvbnRpbnVlO1xyXG4gICAgICAgICAgICBjYy5UaWxlZE1hcC5maWxsVGV4dHVyZUdyaWRzKHRpbGVzZXRJbmZvLCB0ZXhHcmlkcywgaSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRoaXMuX2ZpbGxBbmlHcmlkcyh0ZXhHcmlkcywgYW5pbWF0aW9ucyk7XHJcblxyXG4gICAgICAgIGxldCBsYXllcnMgPSB0aGlzLl9sYXllcnM7XHJcbiAgICAgICAgbGV0IGdyb3VwcyA9IHRoaXMuX2dyb3VwcztcclxuICAgICAgICBsZXQgaW1hZ2VzID0gdGhpcy5faW1hZ2VzO1xyXG4gICAgICAgIGxldCBvbGROb2RlTmFtZXMgPSB7fTtcclxuICAgICAgICBmb3IgKGxldCBpID0gMCwgbiA9IGxheWVycy5sZW5ndGg7IGkgPCBuOyBpKyspIHtcclxuICAgICAgICAgICAgb2xkTm9kZU5hbWVzW2xheWVyc1tpXS5ub2RlLl9uYW1lXSA9IHRydWU7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGZvciAobGV0IGkgPSAwLCBuID0gZ3JvdXBzLmxlbmd0aDsgaSA8IG47IGkrKykge1xyXG4gICAgICAgICAgICBvbGROb2RlTmFtZXNbZ3JvdXBzW2ldLm5vZGUuX25hbWVdID0gdHJ1ZTtcclxuICAgICAgICB9XHJcbiAgICAgICAgZm9yIChsZXQgaSA9IDAsIG4gPSBpbWFnZXMubGVuZ3RoOyBpIDwgbjsgaSsrKSB7XHJcbiAgICAgICAgICAgIG9sZE5vZGVOYW1lc1tpbWFnZXNbaV0uX25hbWVdID0gdHJ1ZTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGxheWVycyA9IHRoaXMuX2xheWVycyA9IFtdO1xyXG4gICAgICAgIGdyb3VwcyA9IHRoaXMuX2dyb3VwcyA9IFtdO1xyXG4gICAgICAgIGltYWdlcyA9IHRoaXMuX2ltYWdlcyA9IFtdO1xyXG5cclxuICAgICAgICBsZXQgbWFwSW5mbyA9IHRoaXMuX21hcEluZm87XHJcbiAgICAgICAgbGV0IG5vZGUgPSB0aGlzLm5vZGU7XHJcbiAgICAgICAgbGV0IGxheWVySW5mb3MgPSBtYXBJbmZvLmdldEFsbENoaWxkcmVuKCk7XHJcbiAgICAgICAgbGV0IHRleHR1cmVzID0gdGhpcy5fdGV4dHVyZXM7XHJcbiAgICAgICAgbGV0IG1heFdpZHRoID0gMDtcclxuICAgICAgICBsZXQgbWF4SGVpZ2h0ID0gMDtcclxuXHJcbiAgICAgICAgdGhpcy5fb2JqZWN0VGV4dHVyZXMgPSBbXTtcclxuICAgICAgICBsZXQgZmlyc3RUbXhMYXllciA9IG51bGw7XHJcblxyXG4gICAgICAgIGlmIChsYXllckluZm9zICYmIGxheWVySW5mb3MubGVuZ3RoID4gMCkge1xyXG4gICAgICAgICAgICBmb3IgKGxldCBpID0gMCwgbGVuID0gbGF5ZXJJbmZvcy5sZW5ndGg7IGkgPCBsZW47IGkrKykge1xyXG4gICAgICAgICAgICAgICAgbGV0IGxheWVySW5mbyA9IGxheWVySW5mb3NbaV07XHJcbiAgICAgICAgICAgICAgICBsZXQgbmFtZSA9IGxheWVySW5mby5uYW1lO1xyXG5cclxuICAgICAgICAgICAgICAgIGxldCBjaGlsZCA9IHRoaXMubm9kZS5nZXRDaGlsZEJ5TmFtZShuYW1lKTtcclxuICAgICAgICAgICAgICAgIG9sZE5vZGVOYW1lc1tuYW1lXSA9IGZhbHNlO1xyXG5cclxuICAgICAgICAgICAgICAgIGlmICghY2hpbGQpIHtcclxuICAgICAgICAgICAgICAgICAgICBjaGlsZCA9IG5ldyBjYy5Ob2RlKCk7XHJcbiAgICAgICAgICAgICAgICAgICAgY2hpbGQubmFtZSA9IG5hbWU7XHJcbiAgICAgICAgICAgICAgICAgICAgbm9kZS5hZGRDaGlsZChjaGlsZCk7XHJcbiAgICAgICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAgICAgY2hpbGQuc2V0U2libGluZ0luZGV4KGkpO1xyXG4gICAgICAgICAgICAgICAgY2hpbGQuYWN0aXZlID0gbGF5ZXJJbmZvLnZpc2libGU7XHJcblxyXG4gICAgICAgICAgICAgICAgaWYgKGxheWVySW5mbyBpbnN0YW5jZW9mIGNjLlRNWExheWVySW5mbykge1xyXG4gICAgICAgICAgICAgICAgICAgIC8vIOatpOWkhOS/ruaUuSDmlLnkuLrliJvlu7pNeVRpbGVkTGF5ZXJcclxuICAgICAgICAgICAgICAgICAgICBsZXQgbGF5ZXIgPSBjaGlsZC5nZXRDb21wb25lbnQoVG1vVGlsZWRMYXllcik7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKCFsYXllcikge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBsYXllciA9IGNoaWxkLmFkZENvbXBvbmVudChUbW9UaWxlZExheWVyKTtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgLy8g5L+u5pS557uT5p2fXHJcbiAgICAgICAgICAgICAgICAgICAgLy8g5q2k5aSE5L+u5pS5IOS8oOmAkmZpcnN0VG14TGF5ZXIg6K6w5b2VZmlyc3RUbXhMYXllclxyXG4gICAgICAgICAgICAgICAgICAgIGxheWVyLl9pbml0KGxheWVySW5mbywgbWFwSW5mbywgdGlsZXNldHMsIHRleHR1cmVzLCB0ZXhHcmlkcywgdGhpcywgZmlyc3RUbXhMYXllcik7XHJcbiAgICAgICAgICAgICAgICAgICAgZmlyc3RUbXhMYXllciA9IGZpcnN0VG14TGF5ZXIgfHwgbGF5ZXI7XHJcbiAgICAgICAgICAgICAgICAgICAgLy8g5L+u5pS557uT5p2fXHJcblxyXG4gICAgICAgICAgICAgICAgICAgIC8vIHRlbGwgdGhlIGxheWVyaW5mbyB0byByZWxlYXNlIHRoZSBvd25lcnNoaXAgb2YgdGhlIHRpbGVzIG1hcC5cclxuICAgICAgICAgICAgICAgICAgICBsYXllckluZm8ub3duVGlsZXMgPSBmYWxzZTtcclxuICAgICAgICAgICAgICAgICAgICBsYXllcnMucHVzaChsYXllcik7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBlbHNlIGlmIChsYXllckluZm8gaW5zdGFuY2VvZiBjYy5UTVhPYmplY3RHcm91cEluZm8pIHtcclxuICAgICAgICAgICAgICAgICAgICBsZXQgZ3JvdXAgPSBjaGlsZC5nZXRDb21wb25lbnQoVG1vT2JqZWN0R3JvdXApO1xyXG4gICAgICAgICAgICAgICAgICAgIGlmICghZ3JvdXApIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgZ3JvdXAgPSBjaGlsZC5hZGRDb21wb25lbnQoVG1vT2JqZWN0R3JvdXApO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgZ3JvdXAuX2luaXQobGF5ZXJJbmZvLCBtYXBJbmZvLCB0ZXhHcmlkcywgdGhpcyk7XHJcbiAgICAgICAgICAgICAgICAgICAgZ3JvdXBzLnB1c2goZ3JvdXApO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgZWxzZSBpZiAobGF5ZXJJbmZvIGluc3RhbmNlb2YgY2MuVE1YSW1hZ2VMYXllckluZm8pIHtcclxuICAgICAgICAgICAgICAgICAgICBsZXQgdGV4dHVyZSA9IGxheWVySW5mby5zb3VyY2VJbWFnZTtcclxuICAgICAgICAgICAgICAgICAgICBjaGlsZC5vcGFjaXR5ID0gbGF5ZXJJbmZvLm9wYWNpdHk7XHJcbiAgICAgICAgICAgICAgICAgICAgY2hpbGQubGF5ZXJJbmZvID0gbGF5ZXJJbmZvO1xyXG4gICAgICAgICAgICAgICAgICAgIGNoaWxkLl9vZmZzZXQgPSBjYy52MihsYXllckluZm8ub2Zmc2V0LngsIC1sYXllckluZm8ub2Zmc2V0LnkpO1xyXG5cclxuICAgICAgICAgICAgICAgICAgICBsZXQgaW1hZ2UgPSBjaGlsZC5nZXRDb21wb25lbnQoY2MuU3ByaXRlKTtcclxuICAgICAgICAgICAgICAgICAgICBpZiAoIWltYWdlKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGltYWdlID0gY2hpbGQuYWRkQ29tcG9uZW50KGNjLlNwcml0ZSk7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgICAgICAgICBsZXQgc3BmID0gaW1hZ2Uuc3ByaXRlRnJhbWUgfHwgbmV3IGNjLlNwcml0ZUZyYW1lKCk7XHJcbiAgICAgICAgICAgICAgICAgICAgc3BmLnNldFRleHR1cmUodGV4dHVyZSk7XHJcbiAgICAgICAgICAgICAgICAgICAgaW1hZ2Uuc3ByaXRlRnJhbWUgPSBzcGY7XHJcblxyXG4gICAgICAgICAgICAgICAgICAgIGNoaWxkLndpZHRoID0gdGV4dHVyZS53aWR0aDtcclxuICAgICAgICAgICAgICAgICAgICBjaGlsZC5oZWlnaHQgPSB0ZXh0dXJlLmhlaWdodDtcclxuICAgICAgICAgICAgICAgICAgICBpbWFnZXMucHVzaChjaGlsZCk7XHJcbiAgICAgICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAgICAgbWF4V2lkdGggPSBNYXRoLm1heChtYXhXaWR0aCwgY2hpbGQud2lkdGgpO1xyXG4gICAgICAgICAgICAgICAgbWF4SGVpZ2h0ID0gTWF0aC5tYXgobWF4SGVpZ2h0LCBjaGlsZC5oZWlnaHQpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICAvLyDorr7nva7mnZDotKjnmoR0ZXh0dXJl5bGe5oCnXHJcbiAgICAgICAgbGV0IG9iamVjdFRleHR1cmVzID0gdGhpcy5fb2JqZWN0VGV4dHVyZXM7XHJcbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBvYmplY3RUZXh0dXJlcy5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgICAgICBsZXQgaWR4ID0gaSA9PT0gMCA/ICcnIDogaTtcclxuICAgICAgICAgICAgdGhpcy5vYmplY3RNYXRlcmlhbC5zZXRQcm9wZXJ0eShgdGV4dHVyZSR7aWR4fWAsIG9iamVjdFRleHR1cmVzW2ldLCAwKTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGxldCBjaGlsZHJlbiA9IG5vZGUuY2hpbGRyZW47XHJcbiAgICAgICAgZm9yIChsZXQgaSA9IDAsIG4gPSBjaGlsZHJlbi5sZW5ndGg7IGkgPCBuOyBpKyspIHtcclxuICAgICAgICAgICAgbGV0IGMgPSBjaGlsZHJlbltpXTtcclxuICAgICAgICAgICAgaWYgKG9sZE5vZGVOYW1lc1tjLl9uYW1lXSkge1xyXG4gICAgICAgICAgICAgICAgYy5kZXN0cm95KCk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHRoaXMubm9kZS53aWR0aCA9IG1heFdpZHRoO1xyXG4gICAgICAgIHRoaXMubm9kZS5oZWlnaHQgPSBtYXhIZWlnaHQ7XHJcbiAgICAgICAgdGhpcy5fc3luY0FuY2hvclBvaW50KCk7XHJcbiAgICB9LFxyXG5cclxuICAgIGdldE9iamVjdE1hdGVyaWFsOiBmdW5jdGlvbiAoKSB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMub2JqZWN0TWF0ZXJpYWw7XHJcbiAgICB9LFxyXG5cclxuICAgIGlzTm9Db2xvcjogZnVuY3Rpb24gKCkge1xyXG4gICAgICAgIHJldHVybiB0aGlzLm5vQ29sb3I7XHJcbiAgICB9LFxyXG5cclxuICAgIGlzU2luZ2xlVGV4dHVyZTogZnVuY3Rpb24gKCkge1xyXG4gICAgICAgIHJldHVybiB0aGlzLnNpbmdsZVRleHR1cmU7XHJcbiAgICB9LFxyXG5cclxuICAgIGdldE9iamVjdFRleHR1cmVzOiBmdW5jdGlvbiAoKSB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuX29iamVjdFRleHR1cmVzO1xyXG4gICAgfVxyXG59KTsiXX0= +//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInBhY2thZ2VzXFxUaWxlZE1hcE9wdGltaXplclxccmVzb3VyY2VcXFNjcmlwdFxcVG1vT2JqZWN0R3JvdXAuanMiXSwibmFtZXMiOlsiVG1vU3ByaXRlIiwicmVxdWlyZSIsIl9kZWZhdWx0IiwiY2MiLCJDbGFzcyIsIlRpbGVkT2JqZWN0R3JvdXAiLCJfaW5pdCIsImdyb3VwSW5mbyIsIm1hcEluZm8iLCJ0ZXhHcmlkcyIsInRpbGVkTWFwIiwiVGlsZWRNYXAiLCJUTVhPYmplY3RUeXBlIiwiT3JpZW50YXRpb24iLCJTdGFnZ2VyQXhpcyIsIlRpbGVGbGFnIiwiRkxJUFBFRF9NQVNLIiwiRkxBR19IT1JJWk9OVEFMIiwiSE9SSVpPTlRBTCIsIkZMQUdfVkVSVElDQUwiLCJWRVJUSUNBTCIsIl9ncm91cE5hbWUiLCJuYW1lIiwiX3Bvc2l0aW9uT2Zmc2V0Iiwib2Zmc2V0IiwiX21hcEluZm8iLCJfcHJvcGVydGllcyIsImdldFByb3BlcnRpZXMiLCJfb2Zmc2V0IiwidjIiLCJ4IiwieSIsIl9vcGFjaXR5IiwibWFwU2l6ZSIsIl9tYXBTaXplIiwidGlsZVNpemUiLCJfdGlsZVNpemUiLCJ3aWR0aCIsImhlaWdodCIsIm9yaWVudGF0aW9uIiwiSEVYIiwiZ2V0U3RhZ2dlckF4aXMiLCJTVEFHR0VSQVhJU19YIiwiZ2V0SGV4U2lkZUxlbmd0aCIsIk1hdGgiLCJmbG9vciIsIklTTyIsIndoIiwibm9kZSIsInNldENvbnRlbnRTaXplIiwibGVmdFRvcFgiLCJhbmNob3JYIiwibGVmdFRvcFkiLCJhbmNob3JZIiwib2JqZWN0cyIsIl9vYmplY3RzIiwiYWxpdmVOb2RlcyIsInRleHR1cmVJbmRleE1hcCIsIk1hcCIsIm9iamVjdFRleHR1cmVzIiwiZ2V0T2JqZWN0VGV4dHVyZXMiLCJmb3JFYWNoIiwidGV4dHVyZSIsImlkeCIsInNldCIsImkiLCJsIiwibGVuZ3RoIiwib2JqZWN0Iiwib2JqVHlwZSIsInR5cGUiLCJwb2ludHMiLCJwb2x5bGluZVBvaW50cyIsInBpIiwicG9zSWR4WCIsInBvc0lkeFkiLCJURVhUIiwidGV4dE5hbWUiLCJpZCIsInRleHROb2RlIiwiZ2V0Q2hpbGRCeU5hbWUiLCJOb2RlIiwiYWN0aXZlIiwidmlzaWJsZSIsImFuZ2xlIiwicm90YXRpb24iLCJwYXJlbnQiLCJjb2xvciIsIm9wYWNpdHkiLCJzZXRTaWJsaW5nSW5kZXgiLCJsYWJlbCIsImdldENvbXBvbmVudCIsIkxhYmVsIiwiYWRkQ29tcG9uZW50Iiwib3ZlcmZsb3ciLCJPdmVyZmxvdyIsIlNIUklOSyIsImxpbmVIZWlnaHQiLCJzdHJpbmciLCJ0ZXh0IiwiaG9yaXpvbnRhbEFsaWduIiwiaGFsaWduIiwidmVydGljYWxBbGlnbiIsInZhbGlnbiIsImZvbnRTaXplIiwicGl4ZWxzaXplIiwiSU1BR0UiLCJnaWQiLCJncmlkIiwidGlsZXNldCIsImltZ05hbWUiLCJpbWdOb2RlIiwiaW1nV2lkdGgiLCJpbWdIZWlnaHQiLCJ0aWxlT2Zmc2V0WCIsInRpbGVPZmZzZXQiLCJ0aWxlT2Zmc2V0WSIsIlByaXZhdGVOb2RlIiwicmVtb3ZlRnJvbVBhcmVudCIsImRlc3Ryb3kiLCJfdGlsZWRNYXAiLCJzcCIsInNwZiIsInNwcml0ZUZyYW1lIiwiU3ByaXRlRnJhbWUiLCJzZXRGbGlwWCIsInNldEZsaXBZIiwic291cmNlSW1hZ2UiLCJzZXRUZXh0dXJlIiwicmVjdCIsInNldFZlcnRzRGlydHkiLCJoYXMiLCJwdXNoIiwidGV4dHVyZUluZGV4IiwiZ2V0Iiwic2V0VGV4dHVyZUlkeCIsImNoaWxkcmVuIiwidXNlbGVzc0V4cCIsIm4iLCJjIiwiY05hbWUiLCJfbmFtZSIsImlzVXNlbGVzcyIsInRlc3QiLCJleHBvcnRzIiwibW9kdWxlIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBLElBQU1BLFNBQVMsR0FBR0MsT0FBTyxDQUFDLGFBQWEsQ0FBQztBQUFDLElBQUFDLFFBQUEsR0FFMUJDLEVBQUUsQ0FBQ0MsS0FBSyxDQUFDO0VBQ3BCLFdBQVNELEVBQUUsQ0FBQ0UsZ0JBQWdCO0VBRTVCQyxLQUFLLFdBQUFBLE1BQUNDLFNBQVMsRUFBRUMsT0FBTyxFQUFFQyxRQUFRLEVBQUVDLFFBQVEsRUFBRTtJQUMxQyxJQUFNQyxRQUFRLEdBQUdSLEVBQUUsQ0FBQ1EsUUFBUTtJQUM1QixJQUFNQyxhQUFhLEdBQUdELFFBQVEsQ0FBQ0MsYUFBYTtJQUM1QyxJQUFNQyxXQUFXLEdBQUdGLFFBQVEsQ0FBQ0UsV0FBVztJQUN4QyxJQUFNQyxXQUFXLEdBQUdILFFBQVEsQ0FBQ0csV0FBVztJQUN4QyxJQUFNQyxRQUFRLEdBQUdKLFFBQVEsQ0FBQ0ksUUFBUTtJQUNsQyxJQUFNQyxZQUFZLEdBQUdELFFBQVEsQ0FBQ0MsWUFBWTtJQUMxQyxJQUFNQyxlQUFlLEdBQUdGLFFBQVEsQ0FBQ0csVUFBVTtJQUMzQyxJQUFNQyxhQUFhLEdBQUdKLFFBQVEsQ0FBQ0ssUUFBUTtJQUV2QyxJQUFJLENBQUNDLFVBQVUsR0FBR2QsU0FBUyxDQUFDZSxJQUFJO0lBQ2hDLElBQUksQ0FBQ0MsZUFBZSxHQUFHaEIsU0FBUyxDQUFDaUIsTUFBTTtJQUN2QyxJQUFJLENBQUNDLFFBQVEsR0FBR2pCLE9BQU87SUFDdkIsSUFBSSxDQUFDa0IsV0FBVyxHQUFHbkIsU0FBUyxDQUFDb0IsYUFBYSxFQUFFO0lBQzVDLElBQUksQ0FBQ0MsT0FBTyxHQUFHekIsRUFBRSxDQUFDMEIsRUFBRSxDQUFDdEIsU0FBUyxDQUFDaUIsTUFBTSxDQUFDTSxDQUFDLEVBQUUsQ0FBQ3ZCLFNBQVMsQ0FBQ2lCLE1BQU0sQ0FBQ08sQ0FBQyxDQUFDO0lBQzdELElBQUksQ0FBQ0MsUUFBUSxHQUFHekIsU0FBUyxDQUFDeUIsUUFBUTtJQUVsQyxJQUFJQyxPQUFPLEdBQUd6QixPQUFPLENBQUMwQixRQUFRO0lBQzlCLElBQUlDLFFBQVEsR0FBRzNCLE9BQU8sQ0FBQzRCLFNBQVM7SUFDaEMsSUFBSUMsS0FBSyxHQUFHLENBQUM7TUFBRUMsTUFBTSxHQUFHLENBQUM7SUFDekIsSUFBSTlCLE9BQU8sQ0FBQytCLFdBQVcsS0FBSzFCLFdBQVcsQ0FBQzJCLEdBQUcsRUFBRTtNQUN6QyxJQUFJaEMsT0FBTyxDQUFDaUMsY0FBYyxFQUFFLEtBQUszQixXQUFXLENBQUM0QixhQUFhLEVBQUU7UUFDeERKLE1BQU0sR0FBR0gsUUFBUSxDQUFDRyxNQUFNLElBQUlMLE9BQU8sQ0FBQ0ssTUFBTSxHQUFHLEdBQUcsQ0FBQztRQUNqREQsS0FBSyxHQUFHLENBQUNGLFFBQVEsQ0FBQ0UsS0FBSyxHQUFHN0IsT0FBTyxDQUFDbUMsZ0JBQWdCLEVBQUUsSUFBSUMsSUFBSSxDQUFDQyxLQUFLLENBQUNaLE9BQU8sQ0FBQ0ksS0FBSyxHQUFHLENBQUMsQ0FBQyxHQUFHRixRQUFRLENBQUNFLEtBQUssSUFBSUosT0FBTyxDQUFDSSxLQUFLLEdBQUcsQ0FBQyxDQUFDO01BQ2hJLENBQUMsTUFBTTtRQUNIQSxLQUFLLEdBQUdGLFFBQVEsQ0FBQ0UsS0FBSyxJQUFJSixPQUFPLENBQUNJLEtBQUssR0FBRyxHQUFHLENBQUM7UUFDOUNDLE1BQU0sR0FBRyxDQUFDSCxRQUFRLENBQUNHLE1BQU0sR0FBRzlCLE9BQU8sQ0FBQ21DLGdCQUFnQixFQUFFLElBQUlDLElBQUksQ0FBQ0MsS0FBSyxDQUFDWixPQUFPLENBQUNLLE1BQU0sR0FBRyxDQUFDLENBQUMsR0FBR0gsUUFBUSxDQUFDRyxNQUFNLElBQUlMLE9BQU8sQ0FBQ0ssTUFBTSxHQUFHLENBQUMsQ0FBQztNQUNySTtJQUNKLENBQUMsTUFBTSxJQUFJOUIsT0FBTyxDQUFDK0IsV0FBVyxLQUFLMUIsV0FBVyxDQUFDaUMsR0FBRyxFQUFFO01BQ2hELElBQUlDLEVBQUUsR0FBR2QsT0FBTyxDQUFDSSxLQUFLLEdBQUdKLE9BQU8sQ0FBQ0ssTUFBTTtNQUN2Q0QsS0FBSyxHQUFHRixRQUFRLENBQUNFLEtBQUssR0FBRyxHQUFHLEdBQUdVLEVBQUU7TUFDakNULE1BQU0sR0FBR0gsUUFBUSxDQUFDRyxNQUFNLEdBQUcsR0FBRyxHQUFHUyxFQUFFO0lBQ3ZDLENBQUMsTUFBTTtNQUNIVixLQUFLLEdBQUdKLE9BQU8sQ0FBQ0ksS0FBSyxHQUFHRixRQUFRLENBQUNFLEtBQUs7TUFDdENDLE1BQU0sR0FBR0wsT0FBTyxDQUFDSyxNQUFNLEdBQUdILFFBQVEsQ0FBQ0csTUFBTTtJQUM3QztJQUNBLElBQUksQ0FBQ1UsSUFBSSxDQUFDQyxjQUFjLENBQUNaLEtBQUssRUFBRUMsTUFBTSxDQUFDO0lBRXZDLElBQUlZLFFBQVEsR0FBR2IsS0FBSyxHQUFHLElBQUksQ0FBQ1csSUFBSSxDQUFDRyxPQUFPO0lBQ3hDLElBQUlDLFFBQVEsR0FBR2QsTUFBTSxJQUFJLENBQUMsR0FBRyxJQUFJLENBQUNVLElBQUksQ0FBQ0ssT0FBTyxDQUFDO0lBRS9DLElBQUlDLE9BQU8sR0FBRy9DLFNBQVMsQ0FBQ2dELFFBQVE7SUFDaEMsSUFBSUMsVUFBVSxHQUFHLENBQUMsQ0FBQzs7SUFFbkI7SUFDQSxJQUFJQyxlQUFlLEdBQUcsSUFBSUMsR0FBRyxFQUFFO0lBQy9CLElBQUlDLGNBQWMsR0FBR2pELFFBQVEsQ0FBQ2tELGlCQUFpQixFQUFFO0lBQ2pERCxjQUFjLENBQUNFLE9BQU8sQ0FBQyxVQUFDQyxPQUFPLEVBQUVDLEdBQUc7TUFBQSxPQUFLTixlQUFlLENBQUNPLEdBQUcsQ0FBQ0YsT0FBTyxFQUFFQyxHQUFHLENBQUM7SUFBQSxFQUFDO0lBRTNFLEtBQUssSUFBSUUsQ0FBQyxHQUFHLENBQUMsRUFBRUMsQ0FBQyxHQUFHWixPQUFPLENBQUNhLE1BQU0sRUFBRUYsQ0FBQyxHQUFHQyxDQUFDLEVBQUVELENBQUMsRUFBRSxFQUFFO01BQzVDLElBQUlHLE1BQU0sR0FBR2QsT0FBTyxDQUFDVyxDQUFDLENBQUM7TUFDdkIsSUFBSUksT0FBTyxHQUFHRCxNQUFNLENBQUNFLElBQUk7TUFDekJGLE1BQU0sQ0FBQzVDLE1BQU0sR0FBR3JCLEVBQUUsQ0FBQzBCLEVBQUUsQ0FBQ3VDLE1BQU0sQ0FBQ3RDLENBQUMsRUFBRXNDLE1BQU0sQ0FBQ3JDLENBQUMsQ0FBQztNQUV6QyxJQUFJd0MsTUFBTSxHQUFHSCxNQUFNLENBQUNHLE1BQU0sSUFBSUgsTUFBTSxDQUFDSSxjQUFjO01BQ25ELElBQUlELE1BQU0sRUFBRTtRQUNSLEtBQUssSUFBSUUsRUFBRSxHQUFHLENBQUMsRUFBRUEsRUFBRSxHQUFHRixNQUFNLENBQUNKLE1BQU0sRUFBRU0sRUFBRSxFQUFFLEVBQUU7VUFDdkNGLE1BQU0sQ0FBQ0UsRUFBRSxDQUFDLENBQUMxQyxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ3RCO01BQ0o7TUFFQSxJQUFJbEIsV0FBVyxDQUFDaUMsR0FBRyxLQUFLdEMsT0FBTyxDQUFDK0IsV0FBVyxFQUFFO1FBQ3pDNkIsTUFBTSxDQUFDckMsQ0FBQyxHQUFHTyxNQUFNLEdBQUc4QixNQUFNLENBQUNyQyxDQUFDO01BQ2hDLENBQUMsTUFBTTtRQUNILElBQUkyQyxPQUFPLEdBQUdOLE1BQU0sQ0FBQ3RDLENBQUMsR0FBR0ssUUFBUSxDQUFDRyxNQUFNO1FBQ3hDLElBQUlxQyxPQUFPLEdBQUdQLE1BQU0sQ0FBQ3JDLENBQUMsR0FBR0ksUUFBUSxDQUFDRyxNQUFNO1FBQ3hDOEIsTUFBTSxDQUFDdEMsQ0FBQyxHQUFHSyxRQUFRLENBQUNFLEtBQUssR0FBRyxHQUFHLElBQUlKLE9BQU8sQ0FBQ0ssTUFBTSxHQUFHb0MsT0FBTyxHQUFHQyxPQUFPLENBQUM7UUFDdEVQLE1BQU0sQ0FBQ3JDLENBQUMsR0FBR0ksUUFBUSxDQUFDRyxNQUFNLEdBQUcsR0FBRyxJQUFJTCxPQUFPLENBQUNJLEtBQUssR0FBR0osT0FBTyxDQUFDSyxNQUFNLEdBQUdvQyxPQUFPLEdBQUdDLE9BQU8sQ0FBQztNQUMzRjtNQUVBLElBQUlOLE9BQU8sS0FBS3pELGFBQWEsQ0FBQ2dFLElBQUksRUFBRTtRQUNoQyxJQUFJQyxRQUFRLEdBQUcsTUFBTSxHQUFHVCxNQUFNLENBQUNVLEVBQUU7UUFDakN0QixVQUFVLENBQUNxQixRQUFRLENBQUMsR0FBRyxJQUFJO1FBRTNCLElBQUlFLFFBQVEsR0FBRyxJQUFJLENBQUMvQixJQUFJLENBQUNnQyxjQUFjLENBQUNILFFBQVEsQ0FBQztRQUNqRCxJQUFJLENBQUNFLFFBQVEsRUFBRTtVQUNYQSxRQUFRLEdBQUcsSUFBSTVFLEVBQUUsQ0FBQzhFLElBQUksRUFBRTtRQUM1QjtRQUVBRixRQUFRLENBQUNHLE1BQU0sR0FBR2QsTUFBTSxDQUFDZSxPQUFPO1FBQ2hDSixRQUFRLENBQUM1QixPQUFPLEdBQUcsQ0FBQztRQUNwQjRCLFFBQVEsQ0FBQzFCLE9BQU8sR0FBRyxDQUFDO1FBQ3BCMEIsUUFBUSxDQUFDSyxLQUFLLEdBQUcsQ0FBQ2hCLE1BQU0sQ0FBQ2lCLFFBQVE7UUFDakNOLFFBQVEsQ0FBQ2pELENBQUMsR0FBR3NDLE1BQU0sQ0FBQ3RDLENBQUMsR0FBR29CLFFBQVE7UUFDaEM2QixRQUFRLENBQUNoRCxDQUFDLEdBQUdxQyxNQUFNLENBQUNyQyxDQUFDLEdBQUdxQixRQUFRO1FBQ2hDMkIsUUFBUSxDQUFDekQsSUFBSSxHQUFHdUQsUUFBUTtRQUN4QkUsUUFBUSxDQUFDTyxNQUFNLEdBQUcsSUFBSSxDQUFDdEMsSUFBSTtRQUMzQitCLFFBQVEsQ0FBQ1EsS0FBSyxHQUFHbkIsTUFBTSxDQUFDbUIsS0FBSztRQUM3QlIsUUFBUSxDQUFDUyxPQUFPLEdBQUcsSUFBSSxDQUFDeEQsUUFBUTtRQUNoQytDLFFBQVEsQ0FBQ1UsZUFBZSxDQUFDeEIsQ0FBQyxDQUFDO1FBRTNCLElBQUl5QixLQUFLLEdBQUdYLFFBQVEsQ0FBQ1ksWUFBWSxDQUFDeEYsRUFBRSxDQUFDeUYsS0FBSyxDQUFDO1FBQzNDLElBQUksQ0FBQ0YsS0FBSyxFQUFFO1VBQ1JBLEtBQUssR0FBR1gsUUFBUSxDQUFDYyxZQUFZLENBQUMxRixFQUFFLENBQUN5RixLQUFLLENBQUM7UUFDM0M7UUFFQUYsS0FBSyxDQUFDSSxRQUFRLEdBQUczRixFQUFFLENBQUN5RixLQUFLLENBQUNHLFFBQVEsQ0FBQ0MsTUFBTTtRQUN6Q04sS0FBSyxDQUFDTyxVQUFVLEdBQUc3QixNQUFNLENBQUM5QixNQUFNO1FBQ2hDb0QsS0FBSyxDQUFDUSxNQUFNLEdBQUc5QixNQUFNLENBQUMrQixJQUFJO1FBQzFCVCxLQUFLLENBQUNVLGVBQWUsR0FBR2hDLE1BQU0sQ0FBQ2lDLE1BQU07UUFDckNYLEtBQUssQ0FBQ1ksYUFBYSxHQUFHbEMsTUFBTSxDQUFDbUMsTUFBTTtRQUNuQ2IsS0FBSyxDQUFDYyxRQUFRLEdBQUdwQyxNQUFNLENBQUNxQyxTQUFTO1FBRWpDMUIsUUFBUSxDQUFDMUMsS0FBSyxHQUFHK0IsTUFBTSxDQUFDL0IsS0FBSztRQUM3QjBDLFFBQVEsQ0FBQ3pDLE1BQU0sR0FBRzhCLE1BQU0sQ0FBQzlCLE1BQU07TUFDbkM7TUFFQSxJQUFJK0IsT0FBTyxLQUFLekQsYUFBYSxDQUFDOEYsS0FBSyxFQUFFO1FBQ2pDLElBQUlDLEdBQUcsR0FBR3ZDLE1BQU0sQ0FBQ3VDLEdBQUc7UUFDcEIsSUFBSUMsSUFBSSxHQUFHbkcsUUFBUSxDQUFDLENBQUNrRyxHQUFHLEdBQUczRixZQUFZLE1BQU0sQ0FBQyxDQUFDO1FBQy9DLElBQUksQ0FBQzRGLElBQUksRUFBRTtRQUNYLElBQUlDLE9BQU8sR0FBR0QsSUFBSSxDQUFDQyxPQUFPO1FBQzFCLElBQUlDLE9BQU8sR0FBRyxLQUFLLEdBQUcxQyxNQUFNLENBQUNVLEVBQUU7UUFDL0J0QixVQUFVLENBQUNzRCxPQUFPLENBQUMsR0FBRyxJQUFJO1FBQzFCLElBQUlDLE9BQU8sR0FBRyxJQUFJLENBQUMvRCxJQUFJLENBQUNnQyxjQUFjLENBQUM4QixPQUFPLENBQUM7UUFDL0MsSUFBSUUsUUFBUSxHQUFHNUMsTUFBTSxDQUFDL0IsS0FBSyxJQUFJdUUsSUFBSSxDQUFDdkUsS0FBSztRQUN6QyxJQUFJNEUsU0FBUyxHQUFHN0MsTUFBTSxDQUFDOUIsTUFBTSxJQUFJc0UsSUFBSSxDQUFDdEUsTUFBTTtRQUM1QyxJQUFJNEUsV0FBVyxHQUFHTCxPQUFPLENBQUNNLFVBQVUsQ0FBQ3JGLENBQUM7UUFDdEMsSUFBSXNGLFdBQVcsR0FBR1AsT0FBTyxDQUFDTSxVQUFVLENBQUNwRixDQUFDOztRQUV0QztRQUNBO1FBQ0EsSUFBSWdGLE9BQU8sWUFBWTVHLEVBQUUsQ0FBQ2tILFdBQVcsRUFBRTtVQUNuQ04sT0FBTyxDQUFDTyxnQkFBZ0IsRUFBRTtVQUMxQlAsT0FBTyxDQUFDUSxPQUFPLEVBQUU7VUFDakJSLE9BQU8sR0FBRyxJQUFJO1FBQ2xCO1FBRUEsSUFBSSxDQUFDQSxPQUFPLEVBQUU7VUFDVkEsT0FBTyxHQUFHLElBQUk1RyxFQUFFLENBQUM4RSxJQUFJLEVBQUU7UUFDM0I7UUFFQSxJQUFJcEUsV0FBVyxDQUFDaUMsR0FBRyxJQUFJdEMsT0FBTyxDQUFDK0IsV0FBVyxFQUFFO1VBQ3hDd0UsT0FBTyxDQUFDNUQsT0FBTyxHQUFHLEdBQUcsR0FBRytELFdBQVcsR0FBR0YsUUFBUTtVQUM5Q0QsT0FBTyxDQUFDMUQsT0FBTyxHQUFHK0QsV0FBVyxHQUFHSCxTQUFTO1FBQzdDLENBQUMsTUFBTTtVQUNIRixPQUFPLENBQUM1RCxPQUFPLEdBQUcrRCxXQUFXLEdBQUdGLFFBQVE7VUFDeENELE9BQU8sQ0FBQzFELE9BQU8sR0FBRytELFdBQVcsR0FBR0gsU0FBUztRQUM3QztRQUNBRixPQUFPLENBQUM3QixNQUFNLEdBQUdkLE1BQU0sQ0FBQ2UsT0FBTztRQUMvQjRCLE9BQU8sQ0FBQzNCLEtBQUssR0FBRyxDQUFDaEIsTUFBTSxDQUFDaUIsUUFBUTtRQUNoQzBCLE9BQU8sQ0FBQ2pGLENBQUMsR0FBR3NDLE1BQU0sQ0FBQ3RDLENBQUMsR0FBR29CLFFBQVE7UUFDL0I2RCxPQUFPLENBQUNoRixDQUFDLEdBQUdxQyxNQUFNLENBQUNyQyxDQUFDLEdBQUdxQixRQUFRO1FBQy9CMkQsT0FBTyxDQUFDekYsSUFBSSxHQUFHd0YsT0FBTztRQUN0QkMsT0FBTyxDQUFDekIsTUFBTSxHQUFHLElBQUksQ0FBQ3RDLElBQUk7UUFDMUIrRCxPQUFPLENBQUN2QixPQUFPLEdBQUcsSUFBSSxDQUFDeEQsUUFBUTtRQUMvQitFLE9BQU8sQ0FBQ3RCLGVBQWUsQ0FBQ3hCLENBQUMsQ0FBQztRQUMxQjhDLE9BQU8sQ0FBQ1MsU0FBUyxHQUFHOUcsUUFBUTtRQUc1QixJQUFJK0csRUFBRSxHQUFHVixPQUFPLENBQUNwQixZQUFZLENBQUMzRixTQUFTLENBQUM7UUFDeEMsSUFBSSxDQUFDeUgsRUFBRSxFQUFFO1VBQ0xBLEVBQUUsR0FBR1YsT0FBTyxDQUFDbEIsWUFBWSxDQUFDN0YsU0FBUyxDQUFDO1FBQ3hDO1FBQ0EsSUFBSTBILEdBQUcsR0FBR0QsRUFBRSxDQUFDRSxXQUFXO1FBQ3hCLElBQUksQ0FBQ0QsR0FBRyxFQUFFO1VBQ05BLEdBQUcsR0FBRyxJQUFJdkgsRUFBRSxDQUFDeUgsV0FBVyxFQUFFO1FBQzlCO1FBRUEsSUFBSSxDQUFDakIsR0FBRyxHQUFHMUYsZUFBZSxNQUFNLENBQUMsRUFBRTtVQUMvQnlHLEdBQUcsQ0FBQ0csUUFBUSxDQUFDLElBQUksQ0FBQztRQUN0QixDQUFDLE1BQU07VUFDSEgsR0FBRyxDQUFDRyxRQUFRLENBQUMsS0FBSyxDQUFDO1FBQ3ZCO1FBRUEsSUFBSSxDQUFDbEIsR0FBRyxHQUFHeEYsYUFBYSxNQUFNLENBQUMsRUFBRTtVQUM3QnVHLEdBQUcsQ0FBQ0ksUUFBUSxDQUFDLElBQUksQ0FBQztRQUN0QixDQUFDLE1BQU07VUFDSEosR0FBRyxDQUFDSSxRQUFRLENBQUMsS0FBSyxDQUFDO1FBQ3ZCO1FBRUEsSUFBSUMsV0FBVyxHQUFHbkIsSUFBSSxDQUFDQyxPQUFPLENBQUNrQixXQUFXO1FBQzFDTCxHQUFHLENBQUNNLFVBQVUsQ0FBQ0QsV0FBVyxFQUFFNUgsRUFBRSxDQUFDOEgsSUFBSSxDQUFDckIsSUFBSSxDQUFDLENBQUM7UUFDMUNhLEVBQUUsQ0FBQ0UsV0FBVyxHQUFHRCxHQUFHO1FBQ3BCRCxFQUFFLENBQUNTLGFBQWEsRUFBRTs7UUFFbEI7UUFDQW5CLE9BQU8sQ0FBQzFFLEtBQUssR0FBRzJFLFFBQVE7UUFDeEJELE9BQU8sQ0FBQ3pFLE1BQU0sR0FBRzJFLFNBQVM7O1FBRTFCO1FBQ0EsSUFBSSxDQUFDeEQsZUFBZSxDQUFDMEUsR0FBRyxDQUFDSixXQUFXLENBQUMsRUFBRTtVQUNuQ3RFLGVBQWUsQ0FBQ08sR0FBRyxDQUFDK0QsV0FBVyxFQUFFcEUsY0FBYyxDQUFDUSxNQUFNLENBQUM7VUFDdkRSLGNBQWMsQ0FBQ3lFLElBQUksQ0FBQ0wsV0FBVyxDQUFDO1FBQ3BDOztRQUVBO1FBQ0EsSUFBSU0sWUFBWSxHQUFHNUUsZUFBZSxDQUFDNkUsR0FBRyxDQUFDUCxXQUFXLENBQUM7UUFDbkROLEVBQUUsQ0FBQ2MsYUFBYSxDQUFDRixZQUFZLEdBQUcsQ0FBQyxDQUFDO01BQ3RDO0lBQ0o7SUFDQSxJQUFJLENBQUM5RSxRQUFRLEdBQUdELE9BQU87O0lBR3ZCO0lBQ0EsSUFBSWtGLFFBQVEsR0FBRyxJQUFJLENBQUN4RixJQUFJLENBQUN3RixRQUFRO0lBQ2pDLElBQUlDLFVBQVUsR0FBRyxtQkFBbUI7SUFDcEMsS0FBSyxJQUFJeEUsRUFBQyxHQUFHLENBQUMsRUFBRXlFLENBQUMsR0FBR0YsUUFBUSxDQUFDckUsTUFBTSxFQUFFRixFQUFDLEdBQUd5RSxDQUFDLEVBQUV6RSxFQUFDLEVBQUUsRUFBRTtNQUM3QyxJQUFJMEUsQ0FBQyxHQUFHSCxRQUFRLENBQUN2RSxFQUFDLENBQUM7TUFDbkIsSUFBSTJFLEtBQUssR0FBR0QsQ0FBQyxDQUFDRSxLQUFLO01BQ25CLElBQUlDLFNBQVMsR0FBR0wsVUFBVSxDQUFDTSxJQUFJLENBQUNILEtBQUssQ0FBQztNQUN0QyxJQUFJRSxTQUFTLElBQUksQ0FBQ3RGLFVBQVUsQ0FBQ29GLEtBQUssQ0FBQyxFQUFFRCxDQUFDLENBQUNwQixPQUFPLEVBQUU7SUFDcEQ7RUFFSjtBQUNKLENBQUMsQ0FBQztBQUFBeUIsT0FBQSxjQUFBOUksUUFBQTtBQUFBK0ksTUFBQSxDQUFBRCxPQUFBLEdBQUFBLE9BQUEiLCJzb3VyY2VSb290IjoiLyIsInNvdXJjZXNDb250ZW50IjpbIi8vIExlYXJuIGNjLkNsYXNzOlxyXG4vLyAgLSBodHRwczovL2RvY3MuY29jb3MuY29tL2NyZWF0b3IvbWFudWFsL2VuL3NjcmlwdGluZy9jbGFzcy5odG1sXHJcbi8vIExlYXJuIEF0dHJpYnV0ZTpcclxuLy8gIC0gaHR0cHM6Ly9kb2NzLmNvY29zLmNvbS9jcmVhdG9yL21hbnVhbC9lbi9zY3JpcHRpbmcvcmVmZXJlbmNlL2F0dHJpYnV0ZXMuaHRtbFxyXG4vLyBMZWFybiBsaWZlLWN5Y2xlIGNhbGxiYWNrczpcclxuLy8gIC0gaHR0cHM6Ly9kb2NzLmNvY29zLmNvbS9jcmVhdG9yL21hbnVhbC9lbi9zY3JpcHRpbmcvbGlmZS1jeWNsZS1jYWxsYmFja3MuaHRtbFxyXG5cclxuY29uc3QgVG1vU3ByaXRlID0gcmVxdWlyZShcIi4vVG1vU3ByaXRlXCIpO1xyXG5cclxuZXhwb3J0IGRlZmF1bHQgY2MuQ2xhc3Moe1xyXG4gICAgZXh0ZW5kczogY2MuVGlsZWRPYmplY3RHcm91cCxcclxuXHJcbiAgICBfaW5pdChncm91cEluZm8sIG1hcEluZm8sIHRleEdyaWRzLCB0aWxlZE1hcCkge1xyXG4gICAgICAgIGNvbnN0IFRpbGVkTWFwID0gY2MuVGlsZWRNYXA7XHJcbiAgICAgICAgY29uc3QgVE1YT2JqZWN0VHlwZSA9IFRpbGVkTWFwLlRNWE9iamVjdFR5cGU7XHJcbiAgICAgICAgY29uc3QgT3JpZW50YXRpb24gPSBUaWxlZE1hcC5PcmllbnRhdGlvbjtcclxuICAgICAgICBjb25zdCBTdGFnZ2VyQXhpcyA9IFRpbGVkTWFwLlN0YWdnZXJBeGlzO1xyXG4gICAgICAgIGNvbnN0IFRpbGVGbGFnID0gVGlsZWRNYXAuVGlsZUZsYWc7XHJcbiAgICAgICAgY29uc3QgRkxJUFBFRF9NQVNLID0gVGlsZUZsYWcuRkxJUFBFRF9NQVNLO1xyXG4gICAgICAgIGNvbnN0IEZMQUdfSE9SSVpPTlRBTCA9IFRpbGVGbGFnLkhPUklaT05UQUw7XHJcbiAgICAgICAgY29uc3QgRkxBR19WRVJUSUNBTCA9IFRpbGVGbGFnLlZFUlRJQ0FMO1xyXG5cclxuICAgICAgICB0aGlzLl9ncm91cE5hbWUgPSBncm91cEluZm8ubmFtZTtcclxuICAgICAgICB0aGlzLl9wb3NpdGlvbk9mZnNldCA9IGdyb3VwSW5mby5vZmZzZXQ7XHJcbiAgICAgICAgdGhpcy5fbWFwSW5mbyA9IG1hcEluZm87XHJcbiAgICAgICAgdGhpcy5fcHJvcGVydGllcyA9IGdyb3VwSW5mby5nZXRQcm9wZXJ0aWVzKCk7XHJcbiAgICAgICAgdGhpcy5fb2Zmc2V0ID0gY2MudjIoZ3JvdXBJbmZvLm9mZnNldC54LCAtZ3JvdXBJbmZvLm9mZnNldC55KTtcclxuICAgICAgICB0aGlzLl9vcGFjaXR5ID0gZ3JvdXBJbmZvLl9vcGFjaXR5O1xyXG5cclxuICAgICAgICBsZXQgbWFwU2l6ZSA9IG1hcEluZm8uX21hcFNpemU7XHJcbiAgICAgICAgbGV0IHRpbGVTaXplID0gbWFwSW5mby5fdGlsZVNpemU7XHJcbiAgICAgICAgbGV0IHdpZHRoID0gMCwgaGVpZ2h0ID0gMDtcclxuICAgICAgICBpZiAobWFwSW5mby5vcmllbnRhdGlvbiA9PT0gT3JpZW50YXRpb24uSEVYKSB7XHJcbiAgICAgICAgICAgIGlmIChtYXBJbmZvLmdldFN0YWdnZXJBeGlzKCkgPT09IFN0YWdnZXJBeGlzLlNUQUdHRVJBWElTX1gpIHtcclxuICAgICAgICAgICAgICAgIGhlaWdodCA9IHRpbGVTaXplLmhlaWdodCAqIChtYXBTaXplLmhlaWdodCArIDAuNSk7XHJcbiAgICAgICAgICAgICAgICB3aWR0aCA9ICh0aWxlU2l6ZS53aWR0aCArIG1hcEluZm8uZ2V0SGV4U2lkZUxlbmd0aCgpKSAqIE1hdGguZmxvb3IobWFwU2l6ZS53aWR0aCAvIDIpICsgdGlsZVNpemUud2lkdGggKiAobWFwU2l6ZS53aWR0aCAlIDIpO1xyXG4gICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgd2lkdGggPSB0aWxlU2l6ZS53aWR0aCAqIChtYXBTaXplLndpZHRoICsgMC41KTtcclxuICAgICAgICAgICAgICAgIGhlaWdodCA9ICh0aWxlU2l6ZS5oZWlnaHQgKyBtYXBJbmZvLmdldEhleFNpZGVMZW5ndGgoKSkgKiBNYXRoLmZsb29yKG1hcFNpemUuaGVpZ2h0IC8gMikgKyB0aWxlU2l6ZS5oZWlnaHQgKiAobWFwU2l6ZS5oZWlnaHQgJSAyKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH0gZWxzZSBpZiAobWFwSW5mby5vcmllbnRhdGlvbiA9PT0gT3JpZW50YXRpb24uSVNPKSB7XHJcbiAgICAgICAgICAgIGxldCB3aCA9IG1hcFNpemUud2lkdGggKyBtYXBTaXplLmhlaWdodDtcclxuICAgICAgICAgICAgd2lkdGggPSB0aWxlU2l6ZS53aWR0aCAqIDAuNSAqIHdoO1xyXG4gICAgICAgICAgICBoZWlnaHQgPSB0aWxlU2l6ZS5oZWlnaHQgKiAwLjUgKiB3aDtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICB3aWR0aCA9IG1hcFNpemUud2lkdGggKiB0aWxlU2l6ZS53aWR0aDtcclxuICAgICAgICAgICAgaGVpZ2h0ID0gbWFwU2l6ZS5oZWlnaHQgKiB0aWxlU2l6ZS5oZWlnaHQ7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRoaXMubm9kZS5zZXRDb250ZW50U2l6ZSh3aWR0aCwgaGVpZ2h0KTtcclxuXHJcbiAgICAgICAgbGV0IGxlZnRUb3BYID0gd2lkdGggKiB0aGlzLm5vZGUuYW5jaG9yWDtcclxuICAgICAgICBsZXQgbGVmdFRvcFkgPSBoZWlnaHQgKiAoMSAtIHRoaXMubm9kZS5hbmNob3JZKTtcclxuXHJcbiAgICAgICAgbGV0IG9iamVjdHMgPSBncm91cEluZm8uX29iamVjdHM7XHJcbiAgICAgICAgbGV0IGFsaXZlTm9kZXMgPSB7fTtcclxuXHJcbiAgICAgICAgLy8g55Sf5oiQ5pig5bCETWFwICAgeyBUZXh0dXJlMkQ6IHRleHR1cmVJbmRleCB9XHJcbiAgICAgICAgbGV0IHRleHR1cmVJbmRleE1hcCA9IG5ldyBNYXAoKTtcclxuICAgICAgICBsZXQgb2JqZWN0VGV4dHVyZXMgPSB0aWxlZE1hcC5nZXRPYmplY3RUZXh0dXJlcygpO1xyXG4gICAgICAgIG9iamVjdFRleHR1cmVzLmZvckVhY2goKHRleHR1cmUsIGlkeCkgPT4gdGV4dHVyZUluZGV4TWFwLnNldCh0ZXh0dXJlLCBpZHgpKTtcclxuXHJcbiAgICAgICAgZm9yIChsZXQgaSA9IDAsIGwgPSBvYmplY3RzLmxlbmd0aDsgaSA8IGw7IGkrKykge1xyXG4gICAgICAgICAgICBsZXQgb2JqZWN0ID0gb2JqZWN0c1tpXTtcclxuICAgICAgICAgICAgbGV0IG9ialR5cGUgPSBvYmplY3QudHlwZTtcclxuICAgICAgICAgICAgb2JqZWN0Lm9mZnNldCA9IGNjLnYyKG9iamVjdC54LCBvYmplY3QueSk7XHJcblxyXG4gICAgICAgICAgICBsZXQgcG9pbnRzID0gb2JqZWN0LnBvaW50cyB8fCBvYmplY3QucG9seWxpbmVQb2ludHM7XHJcbiAgICAgICAgICAgIGlmIChwb2ludHMpIHtcclxuICAgICAgICAgICAgICAgIGZvciAobGV0IHBpID0gMDsgcGkgPCBwb2ludHMubGVuZ3RoOyBwaSsrKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgcG9pbnRzW3BpXS55ICo9IC0xO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICBpZiAoT3JpZW50YXRpb24uSVNPICE9PSBtYXBJbmZvLm9yaWVudGF0aW9uKSB7XHJcbiAgICAgICAgICAgICAgICBvYmplY3QueSA9IGhlaWdodCAtIG9iamVjdC55O1xyXG4gICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgbGV0IHBvc0lkeFggPSBvYmplY3QueCAvIHRpbGVTaXplLmhlaWdodDtcclxuICAgICAgICAgICAgICAgIGxldCBwb3NJZHhZID0gb2JqZWN0LnkgLyB0aWxlU2l6ZS5oZWlnaHQ7XHJcbiAgICAgICAgICAgICAgICBvYmplY3QueCA9IHRpbGVTaXplLndpZHRoICogMC41ICogKG1hcFNpemUuaGVpZ2h0ICsgcG9zSWR4WCAtIHBvc0lkeFkpO1xyXG4gICAgICAgICAgICAgICAgb2JqZWN0LnkgPSB0aWxlU2l6ZS5oZWlnaHQgKiAwLjUgKiAobWFwU2l6ZS53aWR0aCArIG1hcFNpemUuaGVpZ2h0IC0gcG9zSWR4WCAtIHBvc0lkeFkpO1xyXG4gICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICBpZiAob2JqVHlwZSA9PT0gVE1YT2JqZWN0VHlwZS5URVhUKSB7XHJcbiAgICAgICAgICAgICAgICBsZXQgdGV4dE5hbWUgPSBcInRleHRcIiArIG9iamVjdC5pZDtcclxuICAgICAgICAgICAgICAgIGFsaXZlTm9kZXNbdGV4dE5hbWVdID0gdHJ1ZTtcclxuXHJcbiAgICAgICAgICAgICAgICBsZXQgdGV4dE5vZGUgPSB0aGlzLm5vZGUuZ2V0Q2hpbGRCeU5hbWUodGV4dE5hbWUpO1xyXG4gICAgICAgICAgICAgICAgaWYgKCF0ZXh0Tm9kZSkge1xyXG4gICAgICAgICAgICAgICAgICAgIHRleHROb2RlID0gbmV3IGNjLk5vZGUoKTtcclxuICAgICAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgICAgICB0ZXh0Tm9kZS5hY3RpdmUgPSBvYmplY3QudmlzaWJsZTtcclxuICAgICAgICAgICAgICAgIHRleHROb2RlLmFuY2hvclggPSAwO1xyXG4gICAgICAgICAgICAgICAgdGV4dE5vZGUuYW5jaG9yWSA9IDE7XHJcbiAgICAgICAgICAgICAgICB0ZXh0Tm9kZS5hbmdsZSA9IC1vYmplY3Qucm90YXRpb247XHJcbiAgICAgICAgICAgICAgICB0ZXh0Tm9kZS54ID0gb2JqZWN0LnggLSBsZWZ0VG9wWDtcclxuICAgICAgICAgICAgICAgIHRleHROb2RlLnkgPSBvYmplY3QueSAtIGxlZnRUb3BZO1xyXG4gICAgICAgICAgICAgICAgdGV4dE5vZGUubmFtZSA9IHRleHROYW1lO1xyXG4gICAgICAgICAgICAgICAgdGV4dE5vZGUucGFyZW50ID0gdGhpcy5ub2RlO1xyXG4gICAgICAgICAgICAgICAgdGV4dE5vZGUuY29sb3IgPSBvYmplY3QuY29sb3I7XHJcbiAgICAgICAgICAgICAgICB0ZXh0Tm9kZS5vcGFjaXR5ID0gdGhpcy5fb3BhY2l0eTtcclxuICAgICAgICAgICAgICAgIHRleHROb2RlLnNldFNpYmxpbmdJbmRleChpKTtcclxuXHJcbiAgICAgICAgICAgICAgICBsZXQgbGFiZWwgPSB0ZXh0Tm9kZS5nZXRDb21wb25lbnQoY2MuTGFiZWwpO1xyXG4gICAgICAgICAgICAgICAgaWYgKCFsYWJlbCkge1xyXG4gICAgICAgICAgICAgICAgICAgIGxhYmVsID0gdGV4dE5vZGUuYWRkQ29tcG9uZW50KGNjLkxhYmVsKTtcclxuICAgICAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgICAgICBsYWJlbC5vdmVyZmxvdyA9IGNjLkxhYmVsLk92ZXJmbG93LlNIUklOSztcclxuICAgICAgICAgICAgICAgIGxhYmVsLmxpbmVIZWlnaHQgPSBvYmplY3QuaGVpZ2h0O1xyXG4gICAgICAgICAgICAgICAgbGFiZWwuc3RyaW5nID0gb2JqZWN0LnRleHQ7XHJcbiAgICAgICAgICAgICAgICBsYWJlbC5ob3Jpem9udGFsQWxpZ24gPSBvYmplY3QuaGFsaWduO1xyXG4gICAgICAgICAgICAgICAgbGFiZWwudmVydGljYWxBbGlnbiA9IG9iamVjdC52YWxpZ247XHJcbiAgICAgICAgICAgICAgICBsYWJlbC5mb250U2l6ZSA9IG9iamVjdC5waXhlbHNpemU7XHJcblxyXG4gICAgICAgICAgICAgICAgdGV4dE5vZGUud2lkdGggPSBvYmplY3Qud2lkdGg7XHJcbiAgICAgICAgICAgICAgICB0ZXh0Tm9kZS5oZWlnaHQgPSBvYmplY3QuaGVpZ2h0O1xyXG4gICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICBpZiAob2JqVHlwZSA9PT0gVE1YT2JqZWN0VHlwZS5JTUFHRSkge1xyXG4gICAgICAgICAgICAgICAgbGV0IGdpZCA9IG9iamVjdC5naWQ7XHJcbiAgICAgICAgICAgICAgICBsZXQgZ3JpZCA9IHRleEdyaWRzWyhnaWQgJiBGTElQUEVEX01BU0spID4+PiAwXTtcclxuICAgICAgICAgICAgICAgIGlmICghZ3JpZCkgY29udGludWU7XHJcbiAgICAgICAgICAgICAgICBsZXQgdGlsZXNldCA9IGdyaWQudGlsZXNldDtcclxuICAgICAgICAgICAgICAgIGxldCBpbWdOYW1lID0gXCJpbWdcIiArIG9iamVjdC5pZDtcclxuICAgICAgICAgICAgICAgIGFsaXZlTm9kZXNbaW1nTmFtZV0gPSB0cnVlO1xyXG4gICAgICAgICAgICAgICAgbGV0IGltZ05vZGUgPSB0aGlzLm5vZGUuZ2V0Q2hpbGRCeU5hbWUoaW1nTmFtZSk7XHJcbiAgICAgICAgICAgICAgICBsZXQgaW1nV2lkdGggPSBvYmplY3Qud2lkdGggfHwgZ3JpZC53aWR0aDtcclxuICAgICAgICAgICAgICAgIGxldCBpbWdIZWlnaHQgPSBvYmplY3QuaGVpZ2h0IHx8IGdyaWQuaGVpZ2h0O1xyXG4gICAgICAgICAgICAgICAgbGV0IHRpbGVPZmZzZXRYID0gdGlsZXNldC50aWxlT2Zmc2V0Lng7XHJcbiAgICAgICAgICAgICAgICBsZXQgdGlsZU9mZnNldFkgPSB0aWxlc2V0LnRpbGVPZmZzZXQueTtcclxuXHJcbiAgICAgICAgICAgICAgICAvLyBEZWxldGUgaW1hZ2Ugbm9kZXMgaW1wbGVtZW50ZWQgYXMgcHJpdmF0ZSBub2Rlc1xyXG4gICAgICAgICAgICAgICAgLy8gVXNlIGNjLk5vZGUgdG8gaW1wbGVtZW50IG5vZGUtbGV2ZWwgcmVxdWlyZW1lbnRzXHJcbiAgICAgICAgICAgICAgICBpZiAoaW1nTm9kZSBpbnN0YW5jZW9mIGNjLlByaXZhdGVOb2RlKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgaW1nTm9kZS5yZW1vdmVGcm9tUGFyZW50KCk7XHJcbiAgICAgICAgICAgICAgICAgICAgaW1nTm9kZS5kZXN0cm95KCk7XHJcbiAgICAgICAgICAgICAgICAgICAgaW1nTm9kZSA9IG51bGw7XHJcbiAgICAgICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAgICAgaWYgKCFpbWdOb2RlKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgaW1nTm9kZSA9IG5ldyBjYy5Ob2RlKCk7XHJcbiAgICAgICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAgICAgaWYgKE9yaWVudGF0aW9uLklTTyA9PSBtYXBJbmZvLm9yaWVudGF0aW9uKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgaW1nTm9kZS5hbmNob3JYID0gMC41ICsgdGlsZU9mZnNldFggLyBpbWdXaWR0aDtcclxuICAgICAgICAgICAgICAgICAgICBpbWdOb2RlLmFuY2hvclkgPSB0aWxlT2Zmc2V0WSAvIGltZ0hlaWdodDtcclxuICAgICAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgICAgaW1nTm9kZS5hbmNob3JYID0gdGlsZU9mZnNldFggLyBpbWdXaWR0aDtcclxuICAgICAgICAgICAgICAgICAgICBpbWdOb2RlLmFuY2hvclkgPSB0aWxlT2Zmc2V0WSAvIGltZ0hlaWdodDtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIGltZ05vZGUuYWN0aXZlID0gb2JqZWN0LnZpc2libGU7XHJcbiAgICAgICAgICAgICAgICBpbWdOb2RlLmFuZ2xlID0gLW9iamVjdC5yb3RhdGlvbjtcclxuICAgICAgICAgICAgICAgIGltZ05vZGUueCA9IG9iamVjdC54IC0gbGVmdFRvcFg7XHJcbiAgICAgICAgICAgICAgICBpbWdOb2RlLnkgPSBvYmplY3QueSAtIGxlZnRUb3BZO1xyXG4gICAgICAgICAgICAgICAgaW1nTm9kZS5uYW1lID0gaW1nTmFtZTtcclxuICAgICAgICAgICAgICAgIGltZ05vZGUucGFyZW50ID0gdGhpcy5ub2RlO1xyXG4gICAgICAgICAgICAgICAgaW1nTm9kZS5vcGFjaXR5ID0gdGhpcy5fb3BhY2l0eTtcclxuICAgICAgICAgICAgICAgIGltZ05vZGUuc2V0U2libGluZ0luZGV4KGkpO1xyXG4gICAgICAgICAgICAgICAgaW1nTm9kZS5fdGlsZWRNYXAgPSB0aWxlZE1hcDtcclxuXHJcblxyXG4gICAgICAgICAgICAgICAgbGV0IHNwID0gaW1nTm9kZS5nZXRDb21wb25lbnQoVG1vU3ByaXRlKTtcclxuICAgICAgICAgICAgICAgIGlmICghc3ApIHtcclxuICAgICAgICAgICAgICAgICAgICBzcCA9IGltZ05vZGUuYWRkQ29tcG9uZW50KFRtb1Nwcml0ZSk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBsZXQgc3BmID0gc3Auc3ByaXRlRnJhbWU7XHJcbiAgICAgICAgICAgICAgICBpZiAoIXNwZikge1xyXG4gICAgICAgICAgICAgICAgICAgIHNwZiA9IG5ldyBjYy5TcHJpdGVGcmFtZSgpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgICAgIGlmICgoZ2lkICYgRkxBR19IT1JJWk9OVEFMKSA+Pj4gMCkge1xyXG4gICAgICAgICAgICAgICAgICAgIHNwZi5zZXRGbGlwWCh0cnVlKTtcclxuICAgICAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgICAgc3BmLnNldEZsaXBYKGZhbHNlKTtcclxuICAgICAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgICAgICBpZiAoKGdpZCAmIEZMQUdfVkVSVElDQUwpID4+PiAwKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgc3BmLnNldEZsaXBZKHRydWUpO1xyXG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICBzcGYuc2V0RmxpcFkoZmFsc2UpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgICAgIGxldCBzb3VyY2VJbWFnZSA9IGdyaWQudGlsZXNldC5zb3VyY2VJbWFnZTtcclxuICAgICAgICAgICAgICAgIHNwZi5zZXRUZXh0dXJlKHNvdXJjZUltYWdlLCBjYy5yZWN0KGdyaWQpKTtcclxuICAgICAgICAgICAgICAgIHNwLnNwcml0ZUZyYW1lID0gc3BmO1xyXG4gICAgICAgICAgICAgICAgc3Auc2V0VmVydHNEaXJ0eSgpO1xyXG5cclxuICAgICAgICAgICAgICAgIC8vIG9iamVjdCBncm91cCBtYXkgaGFzIG5vIHdpZHRoIG9yIGhlaWdodCBpbmZvXHJcbiAgICAgICAgICAgICAgICBpbWdOb2RlLndpZHRoID0gaW1nV2lkdGg7XHJcbiAgICAgICAgICAgICAgICBpbWdOb2RlLmhlaWdodCA9IGltZ0hlaWdodDtcclxuXHJcbiAgICAgICAgICAgICAgICAvLyDmlLbpm4blm77pm4Yg5pu05pawdGV4dHVyZUluZGV4TWFwXHJcbiAgICAgICAgICAgICAgICBpZiAoIXRleHR1cmVJbmRleE1hcC5oYXMoc291cmNlSW1hZ2UpKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgdGV4dHVyZUluZGV4TWFwLnNldChzb3VyY2VJbWFnZSwgb2JqZWN0VGV4dHVyZXMubGVuZ3RoKTtcclxuICAgICAgICAgICAgICAgICAgICBvYmplY3RUZXh0dXJlcy5wdXNoKHNvdXJjZUltYWdlKTtcclxuICAgICAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgICAgICAvLyDorr7nva50ZXh0dXJlSW5kZXhcclxuICAgICAgICAgICAgICAgIGxldCB0ZXh0dXJlSW5kZXggPSB0ZXh0dXJlSW5kZXhNYXAuZ2V0KHNvdXJjZUltYWdlKTtcclxuICAgICAgICAgICAgICAgIHNwLnNldFRleHR1cmVJZHgodGV4dHVyZUluZGV4ICsgMSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgdGhpcy5fb2JqZWN0cyA9IG9iamVjdHM7XHJcblxyXG5cclxuICAgICAgICAvLyBkZXN0cm95IHVzZWxlc3Mgbm9kZVxyXG4gICAgICAgIGxldCBjaGlsZHJlbiA9IHRoaXMubm9kZS5jaGlsZHJlbjtcclxuICAgICAgICBsZXQgdXNlbGVzc0V4cCA9IC9eKD86aW1nfHRleHQpXFxkKyQvO1xyXG4gICAgICAgIGZvciAobGV0IGkgPSAwLCBuID0gY2hpbGRyZW4ubGVuZ3RoOyBpIDwgbjsgaSsrKSB7XHJcbiAgICAgICAgICAgIGxldCBjID0gY2hpbGRyZW5baV07XHJcbiAgICAgICAgICAgIGxldCBjTmFtZSA9IGMuX25hbWU7XHJcbiAgICAgICAgICAgIGxldCBpc1VzZWxlc3MgPSB1c2VsZXNzRXhwLnRlc3QoY05hbWUpO1xyXG4gICAgICAgICAgICBpZiAoaXNVc2VsZXNzICYmICFhbGl2ZU5vZGVzW2NOYW1lXSkgYy5kZXN0cm95KCk7XHJcbiAgICAgICAgfVxyXG5cclxuICAgIH1cclxufSk7XHJcbiJdfQ== //------QC-SOURCE-SPLIT------ diff --git a/temp/quick-scripts/dst/__quick_compile__.js b/temp/quick-scripts/dst/__quick_compile__.js index b109331..fc9958d 100644 --- a/temp/quick-scripts/dst/__quick_compile__.js +++ b/temp/quick-scripts/dst/__quick_compile__.js @@ -1,10 +1,6 @@ (function () { -<<<<<<< HEAD -var scripts = [{"deps":{"./assets/Script/CollisionDetection":5,"./assets/Script/ControlManager":22,"./assets/Script/DynamicAtlasManager":17,"./assets/Script/GameManager":25,"./assets/Script/GameOver":36,"./assets/Script/GameScene":27,"./assets/Script/JiaZai":23,"./assets/Script/Load":21,"./assets/Script/Map":33,"./assets/Script/MapBlock":30,"./assets/Script/NewMode":28,"./assets/Script/NumberToImage":24,"./assets/Script/Pause":26,"./assets/Script/RankManager":32,"./assets/Script/Reduce":35,"./assets/Script/SceneManager":29,"./assets/Script/Wall":40,"./assets/Script/Window":39,"./assets/Script/btnControl":37,"./assets/Script/peizhi":34,"./assets/Script/position":38,"./assets/Script/Barrier":45,"./assets/Script/Sdk/MiniGameManager":1,"./assets/Script/Sdk/MiniGameSdk":42,"./assets/Script/Sdk/DouyinEntranceView":31,"./assets/Script/lq_collide_system/lq_collide_base":7,"./assets/Script/lq_collide_system/lq_collide_config":49,"./assets/Script/lq_collide_system/lq_collide_system":43,"./assets/Script/lq_collide_system/lq_collide":51,"./assets/Script/prop/Boom":46,"./assets/Script/prop/Freeze":47,"./assets/Script/prop/Key":44,"./assets/Script/prop/Lock":41,"./assets/Script/prop/Star":6,"./assets/Script/prop/Adhesive":48,"./assets/animation/NewScript":9,"./assets/effect/融化":11,"./assets/migration/use_v2.1-2.2.1_cc.Toggle_event_1":8,"./assets/migration/use_v2.1-2.2.1_cc.Toggle_event":50,"./assets/Script/Block":53,"./assets/Script/lq_base/data/lq_interface":10,"./assets/Script/lq_base/data/lq_const":54,"./assets/Script/lq_base/util/lq_game_util":2,"./assets/Script/lq_base/util/lq_math_util":55,"./assets/Script/lq_base/util/lq_platform_util":57,"./assets/Script/lq_base/util/lq_pool_util":58,"./assets/Script/lq_base/util/lq_base_util":52,"./assets/Script/lq_base/data/lq_data":56,"./assets/Script/module/Crypto/crypto-js.min":59,"./assets/Script/module/Crypto/HttpUtil":3,"./assets/Script/module/GameStart/GameAppStart":14,"./assets/Script/module/Music/AudioManager":18,"./assets/Script/module/Notification/Notification":12,"./assets/Script/module/RankList/List":15,"./assets/Script/module/RankList/ItemRender":60,"./assets/Script/module/Share/share":20,"./assets/Script/module/Storage/Storage":13,"./assets/Script/module/Tool/GameTool":19,"./assets/Script/module/Config/GameConfig":16,"./tiledmap-optimize-resource/Script/TmoSprite":62,"./tiledmap-optimize-resource/Script/TmoTiledLayer":4,"./tiledmap-optimize-resource/Script/TmoTiledMap":63,"./tiledmap-optimize-resource/Script/TmoAssembler":61,"./tiledmap-optimize-resource/Script/TmoObjectGroup":64},"path":"preview-scripts/__qc_index__.js"},{"deps":{"./MiniGameSdk":42},"path":"preview-scripts/assets/Script/Sdk/MiniGameManager.js"},{"deps":{},"path":"preview-scripts/assets/Script/lq_base/util/lq_game_util.js"},{"deps":{"./crypto-js.min.js":59},"path":"preview-scripts/assets/Script/module/Crypto/HttpUtil.js"},{"deps":{},"path":"preview-scripts/tiledmap-optimize-resource/Script/TmoTiledLayer.js"},{"deps":{},"path":"preview-scripts/assets/Script/CollisionDetection.js"},{"deps":{"../Map":33},"path":"preview-scripts/assets/Script/prop/Star.js"},{"deps":{"./lq_collide":51,"../lq_base/data/lq_const":54},"path":"preview-scripts/assets/Script/lq_collide_system/lq_collide_base.js"},{"deps":{},"path":"preview-scripts/assets/migration/use_v2.1-2.2.1_cc.Toggle_event_1.js"},{"deps":{},"path":"preview-scripts/assets/animation/NewScript.js"},{"deps":{},"path":"preview-scripts/assets/Script/lq_base/data/lq_interface.js"},{"deps":{},"path":"preview-scripts/assets/effect/融化.js"},{"deps":{},"path":"preview-scripts/assets/Script/module/Notification/Notification.js"},{"deps":{},"path":"preview-scripts/assets/Script/module/Storage/Storage.js"},{"deps":{"../Storage/Storage":13,"../Config/GameConfig":16,"../Crypto/HttpUtil":3,"../Music/AudioManager":18,"../Notification/Notification":12,"../Tool/GameTool":19},"path":"preview-scripts/assets/Script/module/GameStart/GameAppStart.js"},{"deps":{"./ItemRender":60},"path":"preview-scripts/assets/Script/module/RankList/List.js"},{"deps":{},"path":"preview-scripts/assets/Script/module/Config/GameConfig.js"},{"deps":{},"path":"preview-scripts/assets/Script/DynamicAtlasManager.js"},{"deps":{},"path":"preview-scripts/assets/Script/module/Music/AudioManager.js"},{"deps":{"../../Sdk/MiniGameSdk":42},"path":"preview-scripts/assets/Script/module/Tool/GameTool.js"},{"deps":{},"path":"preview-scripts/assets/Script/module/Share/share.js"},{"deps":{},"path":"preview-scripts/assets/Script/Load.js"},{"deps":{},"path":"preview-scripts/assets/Script/ControlManager.js"},{"deps":{"./GameManager":25,"./NumberToImage":24,"./Sdk/MiniGameSdk":42,"./lq_collide_system/lq_collide_system":43},"path":"preview-scripts/assets/Script/JiaZai.js"},{"deps":{},"path":"preview-scripts/assets/Script/NumberToImage.js"},{"deps":{"./Sdk/MiniGameSdk":42},"path":"preview-scripts/assets/Script/GameManager.js"},{"deps":{},"path":"preview-scripts/assets/Script/Pause.js"},{"deps":{},"path":"preview-scripts/assets/Script/GameScene.js"},{"deps":{},"path":"preview-scripts/assets/Script/NewMode.js"},{"deps":{"./Map":33,"./Sdk/MiniGameSdk":42},"path":"preview-scripts/assets/Script/SceneManager.js"},{"deps":{},"path":"preview-scripts/assets/Script/MapBlock.js"},{"deps":{"./MiniGameSdk":42},"path":"preview-scripts/assets/Script/Sdk/DouyinEntranceView.js"},{"deps":{"./module/RankList/List":15},"path":"preview-scripts/assets/Script/RankManager.js"},{"deps":{"./GameManager":25,"./NumberToImage":24,"./Sdk/MiniGameSdk":42},"path":"preview-scripts/assets/Script/Map.js"},{"deps":{},"path":"preview-scripts/assets/Script/peizhi.js"},{"deps":{},"path":"preview-scripts/assets/Script/Reduce.js"},{"deps":{},"path":"preview-scripts/assets/Script/GameOver.js"},{"deps":{},"path":"preview-scripts/assets/Script/btnControl.js"},{"deps":{},"path":"preview-scripts/assets/Script/position.js"},{"deps":{},"path":"preview-scripts/assets/Script/Window.js"},{"deps":{"./Map":33},"path":"preview-scripts/assets/Script/Wall.js"},{"deps":{"../NumberToImage":24},"path":"preview-scripts/assets/Script/prop/Lock.js"},{"deps":{},"path":"preview-scripts/assets/Script/Sdk/MiniGameSdk.js"},{"deps":{"../lq_base/data/lq_const":54,"../lq_base/util/lq_math_util":55,"./lq_collide_config":49,"../lq_base/data/lq_data":56},"path":"preview-scripts/assets/Script/lq_collide_system/lq_collide_system.js"},{"deps":{"../Map":33},"path":"preview-scripts/assets/Script/prop/Key.js"},{"deps":{"./Map":33},"path":"preview-scripts/assets/Script/Barrier.js"},{"deps":{"../Map":33,"../NumberToImage":24},"path":"preview-scripts/assets/Script/prop/Boom.js"},{"deps":{"../NumberToImage":24},"path":"preview-scripts/assets/Script/prop/Freeze.js"},{"deps":{},"path":"preview-scripts/assets/Script/prop/Adhesive.js"},{"deps":{},"path":"preview-scripts/assets/Script/lq_collide_system/lq_collide_config.js"},{"deps":{},"path":"preview-scripts/assets/migration/use_v2.1-2.2.1_cc.Toggle_event.js"},{"deps":{"../lq_base/data/lq_const":54,"./lq_collide_config":49,"./lq_collide_system":43,"../lq_base/data/lq_data":56,"./lq_collide_base":7,"../lq_base/util/lq_game_util":2,"../Map":33},"path":"preview-scripts/assets/Script/lq_collide_system/lq_collide.js"},{"deps":{"./lq_platform_util":57,"../data/lq_const":54},"path":"preview-scripts/assets/Script/lq_base/util/lq_base_util.js"},{"deps":{"./lq_collide_system/lq_collide_system":43,"./Map":33},"path":"preview-scripts/assets/Script/Block.js"},{"deps":{},"path":"preview-scripts/assets/Script/lq_base/data/lq_const.js"},{"deps":{},"path":"preview-scripts/assets/Script/lq_base/util/lq_math_util.js"},{"deps":{},"path":"preview-scripts/assets/Script/lq_base/data/lq_data.js"},{"deps":{"../data/lq_const":54},"path":"preview-scripts/assets/Script/lq_base/util/lq_platform_util.js"},{"deps":{},"path":"preview-scripts/assets/Script/lq_base/util/lq_pool_util.js"},{"deps":{},"path":"preview-scripts/assets/Script/module/Crypto/crypto-js.min.js"},{"deps":{},"path":"preview-scripts/assets/Script/module/RankList/ItemRender.js"},{"deps":{},"path":"preview-scripts/tiledmap-optimize-resource/Script/TmoAssembler.js"},{"deps":{"./TmoAssembler":61},"path":"preview-scripts/tiledmap-optimize-resource/Script/TmoSprite.js"},{"deps":{"./TmoTiledLayer":4,"./TmoObjectGroup":64},"path":"preview-scripts/tiledmap-optimize-resource/Script/TmoTiledMap.js"},{"deps":{"./TmoSprite":62},"path":"preview-scripts/tiledmap-optimize-resource/Script/TmoObjectGroup.js"}]; -======= -var scripts = [{"deps":{"./assets/Script/CollisionDetection":6,"./assets/Script/ControlManager":18,"./assets/Script/DynamicAtlasManager":19,"./assets/Script/GameManager":33,"./assets/Script/GameOver":24,"./assets/Script/GameScene":17,"./assets/Script/JiaZai":37,"./assets/Script/Load":25,"./assets/Script/Map":27,"./assets/Script/MapBlock":22,"./assets/Script/NewMode":31,"./assets/Script/NumberToImage":38,"./assets/Script/Pause":34,"./assets/Script/RankManager":23,"./assets/Script/Reduce":28,"./assets/Script/SceneManager":29,"./assets/Script/Wall":39,"./assets/Script/Window":36,"./assets/Script/btnControl":30,"./assets/Script/peizhi":35,"./assets/Script/position":41,"./assets/Script/Barrier":44,"./assets/Script/Sdk/MiniGameManager":43,"./assets/Script/Sdk/MiniGameSdk":1,"./assets/Script/Sdk/DouyinEntranceView":50,"./assets/Script/lq_collide_system/lq_collide_base":11,"./assets/Script/lq_collide_system/lq_collide_config":40,"./assets/Script/lq_collide_system/lq_collide_system":47,"./assets/Script/lq_collide_system/lq_collide":52,"./assets/Script/prop/Boom":58,"./assets/Script/prop/Freeze":45,"./assets/Script/prop/Key":46,"./assets/Script/prop/Lock":10,"./assets/Script/prop/Star":51,"./assets/Script/prop/Adhesive":49,"./assets/animation/NewScript":7,"./assets/effect/融化":8,"./assets/migration/use_v2.1-2.2.1_cc.Toggle_event_1":42,"./assets/migration/use_v2.1-2.2.1_cc.Toggle_event":9,"./assets/Script/Block":48,"./assets/Script/lq_base/data/lq_interface":3,"./assets/Script/lq_base/data/lq_const":64,"./assets/Script/lq_base/util/lq_game_util":54,"./assets/Script/lq_base/util/lq_math_util":12,"./assets/Script/lq_base/util/lq_platform_util":56,"./assets/Script/lq_base/util/lq_pool_util":55,"./assets/Script/lq_base/util/lq_base_util":59,"./assets/Script/lq_base/data/lq_data":53,"./assets/Script/module/Crypto/crypto-js.min":63,"./assets/Script/module/Crypto/HttpUtil":16,"./assets/Script/module/GameStart/GameAppStart":2,"./assets/Script/module/Music/AudioManager":20,"./assets/Script/module/Notification/Notification":13,"./assets/Script/module/RankList/List":57,"./assets/Script/module/RankList/ItemRender":14,"./assets/Script/module/Share/share":32,"./assets/Script/module/Storage/Storage":15,"./assets/Script/module/Tool/GameTool":21,"./assets/Script/module/Config/GameConfig":26,"./assets/shop/script/item":60,"./assets/shop/script/shop":4,"./tiledmap-optimize-resource/Script/TmoSprite":62,"./tiledmap-optimize-resource/Script/TmoTiledLayer":5,"./tiledmap-optimize-resource/Script/TmoTiledMap":66,"./tiledmap-optimize-resource/Script/TmoAssembler":65,"./tiledmap-optimize-resource/Script/TmoObjectGroup":61},"path":"preview-scripts/__qc_index__.js"},{"deps":{},"path":"preview-scripts/assets/Script/Sdk/MiniGameSdk.js"},{"deps":{"../Storage/Storage":15,"../Config/GameConfig":26,"../Crypto/HttpUtil":16,"../Music/AudioManager":20,"../Notification/Notification":13,"../Tool/GameTool":21},"path":"preview-scripts/assets/Script/module/GameStart/GameAppStart.js"},{"deps":{},"path":"preview-scripts/assets/Script/lq_base/data/lq_interface.js"},{"deps":{},"path":"preview-scripts/assets/shop/script/shop.js"},{"deps":{},"path":"preview-scripts/tiledmap-optimize-resource/Script/TmoTiledLayer.js"},{"deps":{},"path":"preview-scripts/assets/Script/CollisionDetection.js"},{"deps":{},"path":"preview-scripts/assets/animation/NewScript.js"},{"deps":{},"path":"preview-scripts/assets/effect/融化.js"},{"deps":{},"path":"preview-scripts/assets/migration/use_v2.1-2.2.1_cc.Toggle_event.js"},{"deps":{"../NumberToImage":38},"path":"preview-scripts/assets/Script/prop/Lock.js"},{"deps":{"./lq_collide":52,"../lq_base/data/lq_const":64},"path":"preview-scripts/assets/Script/lq_collide_system/lq_collide_base.js"},{"deps":{},"path":"preview-scripts/assets/Script/lq_base/util/lq_math_util.js"},{"deps":{},"path":"preview-scripts/assets/Script/module/Notification/Notification.js"},{"deps":{},"path":"preview-scripts/assets/Script/module/RankList/ItemRender.js"},{"deps":{},"path":"preview-scripts/assets/Script/module/Storage/Storage.js"},{"deps":{"./crypto-js.min.js":63},"path":"preview-scripts/assets/Script/module/Crypto/HttpUtil.js"},{"deps":{},"path":"preview-scripts/assets/Script/GameScene.js"},{"deps":{},"path":"preview-scripts/assets/Script/ControlManager.js"},{"deps":{},"path":"preview-scripts/assets/Script/DynamicAtlasManager.js"},{"deps":{},"path":"preview-scripts/assets/Script/module/Music/AudioManager.js"},{"deps":{"../../Sdk/MiniGameSdk":1},"path":"preview-scripts/assets/Script/module/Tool/GameTool.js"},{"deps":{},"path":"preview-scripts/assets/Script/MapBlock.js"},{"deps":{"./module/RankList/List":57},"path":"preview-scripts/assets/Script/RankManager.js"},{"deps":{},"path":"preview-scripts/assets/Script/GameOver.js"},{"deps":{},"path":"preview-scripts/assets/Script/Load.js"},{"deps":{},"path":"preview-scripts/assets/Script/module/Config/GameConfig.js"},{"deps":{"./GameManager":33,"./NumberToImage":38,"./Sdk/MiniGameSdk":1},"path":"preview-scripts/assets/Script/Map.js"},{"deps":{},"path":"preview-scripts/assets/Script/Reduce.js"},{"deps":{"./Map":27,"./Sdk/MiniGameSdk":1},"path":"preview-scripts/assets/Script/SceneManager.js"},{"deps":{},"path":"preview-scripts/assets/Script/btnControl.js"},{"deps":{},"path":"preview-scripts/assets/Script/NewMode.js"},{"deps":{},"path":"preview-scripts/assets/Script/module/Share/share.js"},{"deps":{"./Sdk/MiniGameSdk":1},"path":"preview-scripts/assets/Script/GameManager.js"},{"deps":{},"path":"preview-scripts/assets/Script/Pause.js"},{"deps":{},"path":"preview-scripts/assets/Script/peizhi.js"},{"deps":{},"path":"preview-scripts/assets/Script/Window.js"},{"deps":{"./GameManager":33,"./NumberToImage":38,"./Sdk/MiniGameSdk":1,"./lq_collide_system/lq_collide_system":47},"path":"preview-scripts/assets/Script/JiaZai.js"},{"deps":{},"path":"preview-scripts/assets/Script/NumberToImage.js"},{"deps":{"./Map":27},"path":"preview-scripts/assets/Script/Wall.js"},{"deps":{},"path":"preview-scripts/assets/Script/lq_collide_system/lq_collide_config.js"},{"deps":{},"path":"preview-scripts/assets/Script/position.js"},{"deps":{},"path":"preview-scripts/assets/migration/use_v2.1-2.2.1_cc.Toggle_event_1.js"},{"deps":{"./MiniGameSdk":1},"path":"preview-scripts/assets/Script/Sdk/MiniGameManager.js"},{"deps":{"./Map":27},"path":"preview-scripts/assets/Script/Barrier.js"},{"deps":{"../NumberToImage":38},"path":"preview-scripts/assets/Script/prop/Freeze.js"},{"deps":{"../Map":27},"path":"preview-scripts/assets/Script/prop/Key.js"},{"deps":{"../lq_base/data/lq_const":64,"../lq_base/util/lq_math_util":12,"./lq_collide_config":40,"../lq_base/data/lq_data":53},"path":"preview-scripts/assets/Script/lq_collide_system/lq_collide_system.js"},{"deps":{"./lq_collide_system/lq_collide_system":47,"./Map":27},"path":"preview-scripts/assets/Script/Block.js"},{"deps":{},"path":"preview-scripts/assets/Script/prop/Adhesive.js"},{"deps":{"./MiniGameSdk":1},"path":"preview-scripts/assets/Script/Sdk/DouyinEntranceView.js"},{"deps":{"../Map":27},"path":"preview-scripts/assets/Script/prop/Star.js"},{"deps":{"../lq_base/data/lq_const":64,"./lq_collide_config":40,"./lq_collide_system":47,"../lq_base/data/lq_data":53,"./lq_collide_base":11,"../lq_base/util/lq_game_util":54,"../Map":27},"path":"preview-scripts/assets/Script/lq_collide_system/lq_collide.js"},{"deps":{},"path":"preview-scripts/assets/Script/lq_base/data/lq_data.js"},{"deps":{},"path":"preview-scripts/assets/Script/lq_base/util/lq_game_util.js"},{"deps":{},"path":"preview-scripts/assets/Script/lq_base/util/lq_pool_util.js"},{"deps":{"../data/lq_const":64},"path":"preview-scripts/assets/Script/lq_base/util/lq_platform_util.js"},{"deps":{"./ItemRender":14},"path":"preview-scripts/assets/Script/module/RankList/List.js"},{"deps":{"../Map":27,"../NumberToImage":38},"path":"preview-scripts/assets/Script/prop/Boom.js"},{"deps":{"./lq_platform_util":56,"../data/lq_const":64},"path":"preview-scripts/assets/Script/lq_base/util/lq_base_util.js"},{"deps":{},"path":"preview-scripts/assets/shop/script/item.js"},{"deps":{"./TmoSprite":62},"path":"preview-scripts/tiledmap-optimize-resource/Script/TmoObjectGroup.js"},{"deps":{"./TmoAssembler":65},"path":"preview-scripts/tiledmap-optimize-resource/Script/TmoSprite.js"},{"deps":{},"path":"preview-scripts/assets/Script/module/Crypto/crypto-js.min.js"},{"deps":{},"path":"preview-scripts/assets/Script/lq_base/data/lq_const.js"},{"deps":{},"path":"preview-scripts/tiledmap-optimize-resource/Script/TmoAssembler.js"},{"deps":{"./TmoTiledLayer":5,"./TmoObjectGroup":61},"path":"preview-scripts/tiledmap-optimize-resource/Script/TmoTiledMap.js"}]; ->>>>>>> 0a31a7a5abc2c505bf743aa596e1c765a0405152 +var scripts = [{"deps":{"./assets/Script/lq_collide_system/lq_collide_base":1,"./assets/Script/lq_base/util/lq_math_util":2,"./assets/Script/module/Crypto/HttpUtil":3,"./tiledmap-optimize-resource/Script/TmoTiledLayer":4,"./assets/Script/CollisionDetection":5,"./assets/shop/script/item":6,"./assets/Script/Sdk/MiniGameSdk":7,"./assets/Script/prop/Boom":8,"./assets/effect/融化":9,"./assets/animation/NewScript":10,"./assets/migration/use_v2.1-2.2.1_cc.Toggle_event":11,"./assets/Script/module/RankList/ItemRender":12,"./assets/Script/module/GameStart/GameAppStart":13,"./assets/Script/lq_base/data/lq_const":14,"./assets/Script/module/Music/AudioManager":15,"./assets/Script/module/Notification/Notification":16,"./assets/Script/module/Storage/Storage":17,"./assets/Script/module/Share/share":18,"./assets/Script/module/Tool/GameTool":19,"./assets/Script/GameOver":20,"./assets/Script/Load":21,"./assets/Script/JiaZai":22,"./assets/Script/ControlManager":23,"./assets/Script/GameScene":24,"./assets/Script/GameManager":25,"./assets/Script/module/Config/GameConfig":26,"./assets/Script/DynamicAtlasManager":27,"./assets/Script/MapBlock":28,"./assets/Script/NumberToImage":29,"./assets/Script/SceneManager":30,"./assets/Script/NewMode":31,"./assets/Script/Reduce":32,"./assets/Script/Pause":33,"./assets/Script/RankManager":34,"./assets/Script/Sdk/MiniGameManager":35,"./assets/Script/Map":36,"./assets/Script/Window":37,"./assets/Script/lq_collide_system/lq_collide_config":38,"./assets/Script/Wall":39,"./assets/Script/position":40,"./assets/Script/peizhi":41,"./assets/Script/Sdk/DouyinEntranceView":42,"./assets/Script/btnControl":43,"./assets/Script/Barrier":44,"./assets/Script/prop/Lock":45,"./assets/Script/prop/Freeze":46,"./assets/Script/prop/Adhesive":47,"./assets/Script/prop/Star":48,"./assets/Script/lq_base/util/lq_platform_util":49,"./assets/Script/prop/Key":50,"./assets/Script/lq_collide_system/lq_collide_system":51,"./assets/Script/lq_base/util/lq_game_util":52,"./assets/migration/use_v2.1-2.2.1_cc.Toggle_event_1":53,"./assets/Script/lq_base/data/lq_interface":54,"./assets/Script/lq_base/data/lq_data":55,"./assets/Script/Block":56,"./assets/Script/lq_collide_system/lq_collide":57,"./assets/Script/module/Crypto/crypto-js.min":58,"./tiledmap-optimize-resource/Script/TmoSprite":59,"./assets/shop/script/shop":60,"./assets/Script/lq_base/util/lq_pool_util":61,"./assets/Script/lq_base/util/lq_base_util":62,"./tiledmap-optimize-resource/Script/TmoTiledMap":63,"./assets/Script/module/RankList/List":64,"./tiledmap-optimize-resource/Script/TmoAssembler":65,"./tiledmap-optimize-resource/Script/TmoObjectGroup":66},"path":"preview-scripts/__qc_index__.js"},{"deps":{"./lq_collide":57,"../lq_base/data/lq_const":14},"path":"preview-scripts/assets/Script/lq_collide_system/lq_collide_base.js"},{"deps":{},"path":"preview-scripts/assets/Script/lq_base/util/lq_math_util.js"},{"deps":{"./crypto-js.min.js":58},"path":"preview-scripts/assets/Script/module/Crypto/HttpUtil.js"},{"deps":{},"path":"preview-scripts/tiledmap-optimize-resource/Script/TmoTiledLayer.js"},{"deps":{},"path":"preview-scripts/assets/Script/CollisionDetection.js"},{"deps":{},"path":"preview-scripts/assets/shop/script/item.js"},{"deps":{},"path":"preview-scripts/assets/Script/Sdk/MiniGameSdk.js"},{"deps":{"../Map":36,"../NumberToImage":29},"path":"preview-scripts/assets/Script/prop/Boom.js"},{"deps":{},"path":"preview-scripts/assets/effect/融化.js"},{"deps":{},"path":"preview-scripts/assets/animation/NewScript.js"},{"deps":{},"path":"preview-scripts/assets/migration/use_v2.1-2.2.1_cc.Toggle_event.js"},{"deps":{},"path":"preview-scripts/assets/Script/module/RankList/ItemRender.js"},{"deps":{"../Storage/Storage":17,"../Config/GameConfig":26,"../Crypto/HttpUtil":3,"../Music/AudioManager":15,"../Notification/Notification":16,"../Tool/GameTool":19},"path":"preview-scripts/assets/Script/module/GameStart/GameAppStart.js"},{"deps":{},"path":"preview-scripts/assets/Script/lq_base/data/lq_const.js"},{"deps":{},"path":"preview-scripts/assets/Script/module/Music/AudioManager.js"},{"deps":{},"path":"preview-scripts/assets/Script/module/Notification/Notification.js"},{"deps":{},"path":"preview-scripts/assets/Script/module/Storage/Storage.js"},{"deps":{},"path":"preview-scripts/assets/Script/module/Share/share.js"},{"deps":{"../../Sdk/MiniGameSdk":7},"path":"preview-scripts/assets/Script/module/Tool/GameTool.js"},{"deps":{},"path":"preview-scripts/assets/Script/GameOver.js"},{"deps":{},"path":"preview-scripts/assets/Script/Load.js"},{"deps":{"./GameManager":25,"./NumberToImage":29,"./Sdk/MiniGameSdk":7,"./lq_collide_system/lq_collide_system":51},"path":"preview-scripts/assets/Script/JiaZai.js"},{"deps":{},"path":"preview-scripts/assets/Script/ControlManager.js"},{"deps":{},"path":"preview-scripts/assets/Script/GameScene.js"},{"deps":{"./Sdk/MiniGameSdk":7},"path":"preview-scripts/assets/Script/GameManager.js"},{"deps":{},"path":"preview-scripts/assets/Script/module/Config/GameConfig.js"},{"deps":{},"path":"preview-scripts/assets/Script/DynamicAtlasManager.js"},{"deps":{},"path":"preview-scripts/assets/Script/MapBlock.js"},{"deps":{},"path":"preview-scripts/assets/Script/NumberToImage.js"},{"deps":{"./Map":36,"./Sdk/MiniGameSdk":7},"path":"preview-scripts/assets/Script/SceneManager.js"},{"deps":{},"path":"preview-scripts/assets/Script/NewMode.js"},{"deps":{},"path":"preview-scripts/assets/Script/Reduce.js"},{"deps":{},"path":"preview-scripts/assets/Script/Pause.js"},{"deps":{"./module/RankList/List":64},"path":"preview-scripts/assets/Script/RankManager.js"},{"deps":{"./MiniGameSdk":7},"path":"preview-scripts/assets/Script/Sdk/MiniGameManager.js"},{"deps":{"./GameManager":25,"./NumberToImage":29,"./Sdk/MiniGameSdk":7},"path":"preview-scripts/assets/Script/Map.js"},{"deps":{},"path":"preview-scripts/assets/Script/Window.js"},{"deps":{},"path":"preview-scripts/assets/Script/lq_collide_system/lq_collide_config.js"},{"deps":{"./Map":36},"path":"preview-scripts/assets/Script/Wall.js"},{"deps":{},"path":"preview-scripts/assets/Script/position.js"},{"deps":{},"path":"preview-scripts/assets/Script/peizhi.js"},{"deps":{"./MiniGameSdk":7},"path":"preview-scripts/assets/Script/Sdk/DouyinEntranceView.js"},{"deps":{},"path":"preview-scripts/assets/Script/btnControl.js"},{"deps":{"./Map":36},"path":"preview-scripts/assets/Script/Barrier.js"},{"deps":{"../NumberToImage":29},"path":"preview-scripts/assets/Script/prop/Lock.js"},{"deps":{"../NumberToImage":29},"path":"preview-scripts/assets/Script/prop/Freeze.js"},{"deps":{},"path":"preview-scripts/assets/Script/prop/Adhesive.js"},{"deps":{"../Map":36},"path":"preview-scripts/assets/Script/prop/Star.js"},{"deps":{"../data/lq_const":14},"path":"preview-scripts/assets/Script/lq_base/util/lq_platform_util.js"},{"deps":{"../Map":36},"path":"preview-scripts/assets/Script/prop/Key.js"},{"deps":{"../lq_base/data/lq_const":14,"../lq_base/util/lq_math_util":2,"./lq_collide_config":38,"../lq_base/data/lq_data":55},"path":"preview-scripts/assets/Script/lq_collide_system/lq_collide_system.js"},{"deps":{},"path":"preview-scripts/assets/Script/lq_base/util/lq_game_util.js"},{"deps":{},"path":"preview-scripts/assets/migration/use_v2.1-2.2.1_cc.Toggle_event_1.js"},{"deps":{},"path":"preview-scripts/assets/Script/lq_base/data/lq_interface.js"},{"deps":{},"path":"preview-scripts/assets/Script/lq_base/data/lq_data.js"},{"deps":{"./lq_collide_system/lq_collide_system":51,"./Map":36},"path":"preview-scripts/assets/Script/Block.js"},{"deps":{"../lq_base/data/lq_const":14,"./lq_collide_config":38,"./lq_collide_system":51,"../lq_base/data/lq_data":55,"./lq_collide_base":1,"../lq_base/util/lq_game_util":52,"../Map":36},"path":"preview-scripts/assets/Script/lq_collide_system/lq_collide.js"},{"deps":{},"path":"preview-scripts/assets/Script/module/Crypto/crypto-js.min.js"},{"deps":{"./TmoAssembler":65},"path":"preview-scripts/tiledmap-optimize-resource/Script/TmoSprite.js"},{"deps":{},"path":"preview-scripts/assets/shop/script/shop.js"},{"deps":{},"path":"preview-scripts/assets/Script/lq_base/util/lq_pool_util.js"},{"deps":{"./lq_platform_util":49,"../data/lq_const":14},"path":"preview-scripts/assets/Script/lq_base/util/lq_base_util.js"},{"deps":{"./TmoTiledLayer":4,"./TmoObjectGroup":66},"path":"preview-scripts/tiledmap-optimize-resource/Script/TmoTiledMap.js"},{"deps":{"./ItemRender":12},"path":"preview-scripts/assets/Script/module/RankList/List.js"},{"deps":{},"path":"preview-scripts/tiledmap-optimize-resource/Script/TmoAssembler.js"},{"deps":{"./TmoSprite":59},"path":"preview-scripts/tiledmap-optimize-resource/Script/TmoObjectGroup.js"}]; var entries = ["preview-scripts/__qc_index__.js"]; var bundleScript = 'preview-scripts/__qc_bundle__.js'; diff --git a/temp/quick-scripts/dst/assets/Script/GameManager.js b/temp/quick-scripts/dst/assets/Script/GameManager.js index ac551fb..d86a514 100644 --- a/temp/quick-scripts/dst/assets/Script/GameManager.js +++ b/temp/quick-scripts/dst/assets/Script/GameManager.js @@ -87,7 +87,7 @@ var GameManager = /** @class */ (function (_super) { var path2 = 'prefab/wall'; cc.resources.loadDir(path, cc.Prefab, function (err, assets) { if (err) { - console.error('动态加载 Prefab 失败:', err); + console.log('动态加载 block 失败:', err); cc.director.loadScene("LoadScene"); return; } @@ -99,7 +99,7 @@ var GameManager = /** @class */ (function (_super) { }); cc.resources.loadDir(path2, cc.Prefab, function (err, assets) { if (err) { - console.error('动态加载 Prefab 失败:', err); + console.log('动态加载 wall 失败:', err); cc.director.loadScene("LoadScene"); return; } @@ -109,15 +109,6 @@ var GameManager = /** @class */ (function (_super) { console.log('墙加载成功,共加载了', _this.Wall_Prefab.length, '个墙'); _this.setWallPrefabSort(); }); - // debugger; - // setTimeout(() => { - // cc.director.preloadScene("HomeScene", (err) => { - // if (err) { - // console.error('预加载 HomeScene 场景失败:', err); - // return; - // } - // }); - // }, 1000); // 检测微信小游戏切到后台 if (cc.sys.platform === cc.sys.WECHAT_GAME) { //@ts-ignore @@ -691,8 +682,4 @@ cc._RF.pop(); }); } })(); -<<<<<<< HEAD -//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImFzc2V0c1xcU2NyaXB0XFxHYW1lTWFuYWdlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsb0JBQW9CO0FBQ3BCLHdFQUF3RTtBQUN4RSxtQkFBbUI7QUFDbkIsa0ZBQWtGO0FBQ2xGLDhCQUE4QjtBQUM5QixrRkFBa0Y7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUdsRixpREFBZ0Q7QUFFMUMsSUFBQSxLQUFzQixFQUFFLENBQUMsVUFBVSxFQUFsQyxPQUFPLGFBQUEsRUFBRSxRQUFRLGNBQWlCLENBQUM7QUFHMUM7SUFBeUMsK0JBQVk7SUFBckQ7UUFBQSxxRUEwcEJDO1FBdnBCRyxXQUFLLEdBQWEsSUFBSSxDQUFDO1FBR3ZCLFVBQUksR0FBVyxPQUFPLENBQUM7UUFJdkIsaUJBQVcsR0FBc0IsRUFBRSxDQUFDO1FBR3BDLGlCQUFXLEdBQXNCLEVBQUUsQ0FBQztRQUdwQyxpQkFBVyxHQUEyQixFQUFFLENBQUM7UUFHekMseURBQXlEO1FBQ3pELG1EQUFtRDtRQUVuRCxXQUFLLEdBQVksS0FBSyxDQUFDO1FBQ3ZCLFdBQUssR0FBWSxLQUFLLENBQUM7UUFDdkIsV0FBSyxHQUFZLEtBQUssQ0FBQztRQUN2QixXQUFLLEdBQVksS0FBSyxDQUFDO1FBQ3ZCLFdBQUssR0FBWSxLQUFLLENBQUM7O0lBZ29CM0IsQ0FBQztvQkExcEJvQixXQUFXO0lBK0I1Qix3QkFBd0I7SUFFeEIsNEJBQU0sR0FBTjtRQUFBLGlCQTRFQztRQTFFRyxNQUFNLENBQUMsT0FBTyxFQUFFLENBQUM7UUFDakIsSUFBSSxDQUFDLFVBQVUsR0FBRyxDQUFDLENBQUM7UUFDcEIsSUFBSSxDQUFDLGdCQUFnQixFQUFFLENBQUM7UUFDeEIsRUFBRSxDQUFDLEVBQUUsQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQzVCLEVBQUUsQ0FBQyxFQUFFLENBQUMsVUFBVSxDQUFDLE9BQU8sQ0FBQyxTQUFTLEdBQUcsS0FBSyxD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QU8sRUFBQyxNQUFNLEVBQUMsQ0FBQztvREFDVjtJQUdwQztRQURDLFFBQVEsQ0FBQyxFQUFDLElBQUksRUFBRSxDQUFDLEVBQUUsQ0FBQyxXQUFXLENBQUMsRUFBRSxPQUFPLEVBQUMsTUFBTSxFQUFDLENBQUM7b0RBQ1Y7SUFoQnhCLFdBQVc7UUFEL0IsT0FBTztPQUNhLFdBQVcsQ0EwcEIvQjtJQUFELGtCQUFDO0NBMXBCRCxBQTBwQkMsQ0ExcEJ3QyxFQUFFLENBQUMsU0FBUyxHQTBwQnBEO2tCQTFwQm9CLFdBQVciLCJmaWxlIjoiIiwic291cmNlUm9vdCI6Ii8iLCJzb3VyY2VzQ29udGVudCI6WyIvLyBMZWFybiBUeXBlU2NyaXB0OlxyXG4vLyAgLSBodHRwczovL2RvY3MuY29jb3MuY29tL2NyZWF0b3IvbWFudWFsL2VuL3NjcmlwdGluZy90eXBlc2NyaXB0Lmh0bWxcclxuLy8gTGVhcm4gQXR0cmlidXRlOlxyXG4vLyAgLSBodHRwczovL2RvY3MuY29jb3MuY29tL2NyZWF0b3IvbWFudWFsL2VuL3NjcmlwdGluZy9yZWZlcmVuY2UvYXR0cmlidXRlcy5odG1sXHJcbi8vIExlYXJuIGxpZmUtY3ljbGUgY2FsbGJhY2tzOlxyXG4vLyAgLSBodHRwczovL2RvY3MuY29jb3MuY29tL2NyZWF0b3IvbWFudWFsL2VuL3NjcmlwdGluZy9saWZlLWN5Y2xlLWNhbGxiYWNrcy5odG1sXHJcblxyXG5pbXBvcnQgeyBNaW5pR2FtZU1hbmFnZXIgfSBmcm9tIFwiLi9TZGsvTWluaUdhbWVNYW5hZ2VyXCI7XHJcbmltcG9ydCB7IE1pbmlHYW1lU2RrIH0gZnJvbSBcIi4vU2RrL01pbmlHYW1lU2RrXCI7XHJcblxyXG5jb25zdCB7Y2NjbGFzcywgcHJvcGVydHl9ID0gY2MuX2RlY29yYXRvcjtcclxuXHJcbkBjY2NsYXNzXHJcbmV4cG9ydCBkZWZhdWx0IGNsYXNzIEdhbWVNYW5hZ2VyIGV4dGVuZHMgY2MuQ29tcG9uZW50IHtcclxuXHJcbiAgICBAcHJvcGVydHkoY2MuTGFiZWwpXHJcbiAgICBsYWJlbDogY2MuTGFiZWwgPSBudWxsO1xyXG5cclxuICAgIEBwcm9wZXJ0eVxyXG4gICAgdGV4dDogc3RyaW5nID0gJ2hlbGxvJztcclxuICAgIHN0YXRpYyBfaW5zdGFuY2UgOiBHYW1lTWFuYWdlciA9IG51bGw7XHJcblxyXG4gICAgQHByb3BlcnR5KHt0eXBlOiBbY2MuUHJlZmFiXSwgdG9vbHRpcDpcIuaWueWdl+aVsOe7hFwifSlcclxuICAgIEJsb2NrX0FycmF5IDogQXJyYXk8Y2MuUHJlZmFiPiA9IFtdO1xyXG5cclxuICAgIEBwcm9wZXJ0eSh7dHlwZTogW2NjLlByZWZhYl0sIHRvb2x0aXA6XCLlopnlo4HmlbDnu4RcIn0pXHJcbiAgICBXYWxsX1ByZWZhYiA6IEFycmF5PGNjLlByZWZhYj4gPSBbXTtcclxuXHJcbiAgICBAcHJvcGVydHkoe3R5cGU6IFtjYy5TcHJpdGVBdGxhc10sIHRvb2x0aXA6XCLmlrnlnZfpopzoibJcIn0pXHJcbiAgICBCbG9ja19Db2xvciA6IEFycmF5PGNjLlNwcml0ZUF0bGFzPiA9IFtdO1xyXG5cclxuICAgIHBhcnRpY2xlRWZmZWN0czogY2MuUGFydGljbGVBc3NldFtdO1xyXG4gICAgLy8gQHByb3BlcnR5KHt0eXBlOiBbY2MuUGFydGljbGVTeXN0ZW1dLCB0b29sdGlwOlwi57KS5a2Q5pWw57uEXCJ9KVxyXG4gICAgLy8gcGFydGljbGVFZmZlY3RzIDogQXJyYXk8Y2MuUGFydGljbGVTeXN0ZW0+ID0gW107XHJcblxyXG4gICAgbG9hZDEgOmJvb2xlYW4gPSBmYWxzZTtcclxuICAgIGxvYWQyIDpib29sZWFuID0gZmFsc2U7XHJcbiAgICBsb2FkMyA6Ym9vbGVhbiA9IGZhbHNlO1xyXG4gICAgbG9hZDQgOmJvb2xlYW4gPSBmYWxzZTtcclxuICAgIGxvYWQ1IDpib29sZWFuID0gZmFsc2U7XHJcbiAgICBzY2hlZHVsZUNhbGxiYWNrOiBhbnk7XHJcbiAgICB0aW1lTnVtYmVyOiBudW1iZXI7XHJcblxyXG4gICAgXHJcbiAgICAvLyBMSUZFLUNZQ0xFIENBTExCQUNLUzpcclxuXHJcbiAgICBvbkxvYWQgKCkge1xyXG5cclxuICAgICAgICB3aW5kb3cuaW5pdE1ncigpO1xyXG4gICAgICAgIHRoaXMudGltZU51bWJlciA9IDM7XHJcbiAgICAgICAgdGhpcy5zdGFydFRpbWVDdXREb3duKCk7XHJcbiAgICAgICAgY2MuZnguR2FtZUNvbmZpZy5pbml0KHRydWUpO1xyXG4gICAgICAgIGNjLmZ4LkdhbWVDb25maWcuR01fSU5GTy5nYW1lU3RhdGUgPSBmYWxzZTtcclxuICAgICAgICB0aGlzLnJlYWRNdXNpY0NvbmZpZygpO1xyXG4gICAgICAgIGNvbnNvbGUubG9nKFwi6Z+z5LmQ5byA5YWzXCIsY2MuZnguR2FtZUNvbmZpZy5HTV9JTkZPLm11c2ljT3Blbik7XHJcbiAgICAgICAgY2MuZnguQXVkaW9NYW5hZ2VyLl9pbnN0YW5jZS5wbGF5TXVzaWNHYW1lKCk7XHJcblxyXG4gICAgICAgIHRoaXMubG9hZDEgPSB0aGlzLmxvYWQyID0gdGhpcy5sb2FkMyA9IHRoaXMubG9hZDQgPSB0aGlzLmxvYWQ1ID1mYWxzZTtcclxuICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgICAgICAgdGhpcy5yZWFkVXNlckRhdGEoKTtcclxuICAgICAgICB9LCAyMDApO1xyXG4gXHJcblxyXG4gICAgICAgIGlmIChHYW1lTWFuYWdlci5faW5zdGFuY2UgPT0gbnVsbCkge1xyXG4gICAgICAgICAgICBHYW1lTWFuYWdlci5faW5zdGFuY2UgPSB0aGlzO1xyXG4gICAgICAgICAgICBjYy5nYW1lLmFkZFBlcnNpc3RSb290Tm9kZSh0aGlzLm5vZGUpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgY29uc3QgcGF0aCA9ICdwcmVmYWIvYmxvY2snO1xyXG4gICAgICAgIGNvbnN0IHBhdGgyID0gJ3ByZWZhYi93YWxsJztcclxuICAgICAgICBjYy5yZXNvdXJjZXMubG9hZERpcihwYXRoLCBjYy5QcmVmYWIsIChlcnIsIGFzc2V0czogY2MuUHJlZmFiW10pID0+IHtcclxuICAgICAgICAgICAgaWYgKGVycikge1xyXG4gICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoJ+WKqOaAgeWKoOi9vSBQcmVmYWIg5aSx6LSlOicsIGVycik7XHJcbiAgICAgICAgICAgICAgICBjYy5kaXJlY3Rvci5sb2FkU2NlbmUoXCJMb2FkU2NlbmVcIik7XHJcbiAgICAgICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgLy8g5bCG5Yqg6L2955qEIFByZWZhYiDotYvlgLznu5kgQmxvY2tfQXJyYXlcclxuICAgICAgICAgICAgdGhpcy5CbG9ja19BcnJheSA9IGFzc2V0cztcclxuICAgICAgICAgICAgdGhpcy5zZXRTb3J0KCk7XHJcbiAgICAgICAgICAgIHRoaXMubG9hZDEgPSB0cnVlO1xyXG4gICAgICAgIH0pO1xyXG5cclxuICAgICAgICBjYy5yZXNvdXJjZXMubG9hZERpcihwYXRoMiwgY2MuUHJlZmFiLCAoZXJyLCBhc3NldHM6IGNjLlByZWZhYltdKSA9PiB7XHJcbiAgICAgICAgICAgIGlmIChlcnIpIHtcclxuICAgICAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoJ+WKqOaAgeWKoOi9vSBQcmVmYWIg5aSx6LSlOicsIGVycik7XHJcbiAgICAgICAgICAgICAgICBjYy5kaXJlY3Rvci5sb2FkU2NlbmUoXCJMb2FkU2NlbmVcIik7XHJcbiAgICAgICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgLy8g5bCG5Yqg6L2955qEIFByZWZhYiDotYvlgLznu5kgQmxvY2tfQXJyYXlcclxuICAgICAgICAgICAgdGhpcy5XYWxsX1ByZWZhYiA9IGFzc2V0cztcclxuICAgICAgICAgICAgdGhpcy5sb2FkMiA9IHRydWU7XHJcbiAgICAgICAgICAgIHRoaXMuc2V0V2FsbFByZWZhYlNvcnQoKTtcclxuICAgICAgICB9KTtcclxuXHJcbiAgICAgICAgLy8gZGVidWdnZXI7XHJcblxyXG4gICAgICAgIC8vIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICAgIC8vICAgICBjYy5kaXJlY3Rvci5wcmVsb2FkU2NlbmUoXCJIb21lU2NlbmVcIiwgKGVycikgPT4ge1xyXG4gICAgICAgIC8vICAgICAgICAgaWYgKGVycikge1xyXG4gICAgICAgIC8vICAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoJ+mihOWKoOi9vSBIb21lU2NlbmUg5Zy65pmv5aSx6LSlOicsIGVycik7XHJcbiAgICAgICAgLy8gICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIC8vICAgICAgICAgfVxyXG4gICAgICAgIC8vICAgICB9KTtcclxuICAgICAgICAvLyB9LCAxMDAwKTtcclxuXHJcbiAgICAgICAgICAgICAgICAvLyDmo4DmtYvlvq7kv6HlsI/muLjmiI/liIfliLDlkI7lj7BcclxuICAgICAgICBpZiAoY2Muc3lzLnBsYXRmb3JtID09PSBjYy5zeXMuV0VDSEFUX0dBTUUpIHtcclxuICAgICAgICAgICAgLy9AdHMtaWdub3JlXHJcbiAgICAgICAgICAgIHd4Lm9uSGlkZSgoKSA9PiB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLm9uSGlkZSgpO1xyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgLy8g5qOA5rWL5b6u5L+h5bCP5ri45oiP5Zue5Yiw5YmN5Y+wXHJcbiAgICAgICAgICAgIC8vQHRzLWlnbm9yZVxyXG4gICAgICAgICAgICB3eC5vblNob3coKCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5vblNob3coKTtcclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgfVxyXG5cclxuICAgIH1cclxuXHJcbiAgICBvbkhpZGUgKCkge1xyXG4gICAgICAgIGNjLmF1ZGlvRW5naW5lLnN0b3BNdXNpYygpO1xyXG4gICAgICAgIGNjLmdhbWUucGF1c2UoKTtcclxuICAgIH1cclxuXHJcbiAgICBvblNob3cgKCkge1xyXG4gICAgICAgIGNjLmF1ZGlvRW5naW5lLnJlc3VtZU11c2ljKCk7XHJcbiAgICAgICAgY2MuZ2FtZS5yZXN1bWUoKTtcclxuICAgIH1cclxuXHJcbiAgICBsb2FkUGFydGljbGVFZmZlY3RzKCkge1xyXG4gICAgfVxyXG5cclxuXHJcbiAgICBcclxuXHJcbiAgICBzZXRXYWxsUHJlZmFiU29ydCgpIHtcclxuICAgICAgICBjb25zdCBvcmRlciA9IFsnZG93bicsICdkb3duTGVmdCcsICdkb3duUmlnaHQnLCAnbGVmdCcsJ3JpZ2h0JywndXAnLCd1cExlZnQnLCd1cFJpZ2h0J107XHJcbiAgICAgICAgdGhpcy5XYWxsX1ByZWZhYi5zb3J0KChhLCBiKSA9PiB7XHJcbiAgICAgICAgICAgIGNvbnN0IGluZGV4QSA9IG9yZGVyLmluZGV4T2YoYS5uYW1lKTtcclxuICAgICAgICAgICAgY29uc3QgaW5kZXhCID0gb3JkZXIuaW5kZXhPZihiLm5hbWUpO1xyXG4gICAgICAgICAgICBpZiAoaW5kZXhBID09PSAtMSkgcmV0dXJuIDE7XHJcbiAgICAgICAgICAgIGlmIChpbmRleEIgPT09IC0xKSByZXR1cm4gLTE7XHJcbiAgICAgICAgICAgIHJldHVybiBpbmRleEEgLSBpbmRleEI7XHJcbiAgICAgICAgfSk7XHJcbiAgICAgICAgXHJcbiAgICB9XHJcblxyXG4gICAgc2V0UGFydGljbGVTb3J0KCkge1xyXG4gICAgICAgIGNvbnN0IG9yZGVyID0gWyd0b3AnLCAnYm90JywgJ3JpZycsICdsZWYnXTtcclxuICAgICAgICB0aGlzLnBhcnRpY2xlRWZmZWN0cy5zb3J0KChhLCBiKSA9PiB7XHJcbiAgICAgICAgICAgIGNvbnN0IGluZGV4QSA9IG9yZGVyLmluZGV4T2YoYS5uYW1lLnN1YnN0cigwLDMpKTtcclxuICAgICAgICAgICAgY29uc3QgaW5kZXhCID0gb3JkZXIuaW5kZXhPZihiLm5hbWUuc3Vic3RyKDAsMykpO1xyXG4gICAgICAgICAgICBpZiAoaW5kZXhBID09PSAtMSkgcmV0dXJuIDE7XHJcbiAgICAgICAgICAgIGlmIChpbmRleEIgPT09IC0xKSByZXR1cm4gLTE7XHJcbiAgICAgICAgICAgIHJldHVybiBpbmRleEEgLSBpbmRleEI7XHJcbiAgICAgICAgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgc2V0U29ydCgpe1xyXG4gICAgICAgIHRoaXMuQmxvY2tfQXJyYXkuc29ydCgoYSwgYikgPT4ge1xyXG4gICAgICAgICAgICAvLyDku47lkI3np7DkuK3mj5Dlj5bmlbDlrZfpg6jliIZcclxuICAgICAgICAgICAgY29uc3QgbnVtYmVyQSA9IHBhcnNlSW50KGEubmFtZS5tYXRjaCgvXFxkKy8pPy5bMF0gfHwgJzAnLCAxMCk7XHJcbiAgICAgICAgICAgIGNvbnN0IG51bWJlckIgPSBwYXJzZUludChiLm5hbWUubWF0Y2goL1xcZCsvKT8uWzBdIHx8ICcwJywgMTApO1xyXG4gICAgICAgICAgICByZXR1cm4gbnVtYmVyQSAtIG51bWJlckI7XHJcbiAgICAgICAgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgc3RhcnQgKCkge1xyXG5cclxuICAgIH1cclxuXHJcbiAgICBzdGFydEdhbWUoKXtcclxuICAgICAgICBjb25zb2xlLmxvZyhcIui/m+WFpeWcuuaZr+S5i+WJjV9fX19fX19fX19fX19cIixjYy5meC5HYW1lQ29uZmlnLkdNX0lORk8uZmlyc3QpO1xyXG4gICAgICAgIGNjLmRpcmVjdG9yLmxvYWRTY2VuZShcIkhvbWVTY2VuZVwiKTtcclxuICAgIH1cclxuXHJcbiAgICByZXR1cm5Ib21lKCl7XHJcbiAgICAgICAgY2MudHdlZW4odGhpcy5ub2RlLmdldENoaWxkQnlOYW1lKFwiR2FtZVwiKSlcclxuICAgICAgICAgICAgLnRvKDAuNSwge29wYWNpdHk6IDEwMH0pXHJcbiAgICAgICAgICAgIC5jYWxsKCgpID0+IHtcclxuICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgIC8vIOmihOWKoOi9veaIkOWKn+WQjuWKoOi9veWcuuaZr1xyXG4gICAgICAgICAgICAgICAgY2MuZGlyZWN0b3IubG9hZFNjZW5lKFwiSG9tZVNjZW5lXCIsIChlcnIpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICBpZiAoZXJyKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoJ+WKoOi9vSBIb21lU2NlbmUg5Zy65pmv5aSx6LSlOicsIGVycik7XHJcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgY2MuZGlyZWN0b3IubG9hZFNjZW5lKFwiSG9tZVNjZW5lXCIpO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICB9KVxyXG4gICAgICAgICAgICAuc3RhcnQoKTtcclxuXHJcbiAgICAgICAgICAgIGNjLnR3ZWVuKHRoaXMubm9kZS5nZXRDaGlsZEJ5TmFtZShcIm1hc2tcIikpXHJcbiAgICAgICAgICAgIC50bygwLjUse29wYWNpdHk6IDI1NX0pXHJcbiAgICAgICAgICAgIC5zdGFydCgpO1xyXG5cclxuICAgICAgICAvLyBjYy5sb2FkZXIucmVsZWFzZUFsbCgpO1xyXG4gICAgICAgIC8vIOmihOWKoOi9vSBIb21lU2NlbmUg5Zy65pmvXHJcblxyXG4gICBcclxuICAgIH1cclxuXHJcblxyXG4gICAgcmVhZFVzZXJEYXRhKHJldHJ5Q291bnQgPSAwKXtcclxuICAgICAgICAvL0B0cy1pZ25vcmVcclxuICAgICAgICAgaWYgKHR5cGVvZiB3eCAhPT0gJ3VuZGVmaW5lZCcgJiYgd3ggIT09IG51bGwpIHsgXHJcbiAgICAgICAgICAgICAgICBsZXQgbGV2ZWxJbmZvID0gY2MuZnguU3RvcmFnZU1lc3NhZ2UuZ2V0U3RvcmFnZShcImxldmVsXCIpO1xyXG4gICAgICAgICAgICAgICAgLy/ml6fnmoTor7vlj5bmlbDmja7orr7nva7mlbDmja7mlrnms5Us5Lul5by66IGU572R5Li65Li7XHJcbiAgICAgICAgICAgICAgICBpZihsZXZlbEluZm8gPT0gdW5kZWZpbmVkIHx8IGxldmVsSW5mbyA9PSBcIlwiIHx8IGxldmVsSW5mbyA9PSBudWxsKXtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLm9sZFJlYWREYXRhKHJldHJ5Q291bnQpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgLy/mlrDnmoTor7vlj5bmlbDmja7orr7nva7mlrnms5XvvIzku6XmnKzlnLDkuLrkuLtcclxuICAgICAgICAgICAgICAgIGVsc2V7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5uZXdSZWFkRGF0YSgpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgY29uc29sZS5sb2coXCLljbPlsIbor7vlj5bkvZPlipvlgLxcIik7XHJcbiAgICAgICAgICAgICAgICBjYy5meC5HYW1lVG9vbC5nZXRIZWFsdGgoKGRhdGEpPT57XHJcbiAgICAgICAgICAgICAgICAgICAgY29uc29sZS5sb2coXCLkvZPlipvlgLzlrozmiJDov5vlhaXmuLjmiI9cIik7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5sb2FkNSA9IHRydWU7XHJcbiAgICAgICAgICAgICAgICB9KTtcclxuXHJcbiAgICAgICAgIH1cclxuICAgICAgICAgZWxzZXtcclxuICAgICAgICAgICAgdGhpcy5sb2FkMyA9IHRydWU7XHJcbiAgICAgICAgICAgIHRoaXMubG9hZDQgPSB0cnVlO1xyXG4gICAgICAgICAgICB0aGlzLmxvYWQ1ID0gdHJ1ZTtcclxuICAgICAgICAgICAgY2MuZnguR2FtZVRvb2wuZ2V0SGVhbHRoKG51bGwpO1xyXG4gICAgICAgICB9XHJcbiAgICAgICAgLy8g5a2Y5YKo55So5oi35pWw5o2uXHJcbiAgICB9XHJcblxyXG4gICAgcmVhZE11c2ljQ29uZmlnKCl7XHJcbiAgICAgICAgbGV0IGF1ZGlvSW5mbyA9IGNjLmZ4LlN0b3JhZ2VNZXNzYWdlLmdldFN0b3JhZ2UoXCJtdXNpY1wiKTtcclxuICAgICAgICBpZihhdWRpb0luZm8gPT0gdW5kZWZpbmVkIHx8IGF1ZGlvSW5mbyA9PSBcIlwiIHx8IGF1ZGlvSW5mbyA9PSBudWxsKXtcclxuICAgICAgICAgICAgYXVkaW9JbmZvID0ge1xyXG4gICAgICAgICAgICAgICAgXCJtdXNpY09wZW5cIjogdHJ1ZSwgICAgICAgICAgICAgLy/pn7PkuZBcclxuICAgICAgICAgICAgICAgIFwiZWZmZWN0T3BlblwiOiB0cnVlLCAgICAgICAgICAgIC8v6Z+z5pWIXHJcbiAgICAgICAgICAgICAgICBcInZpYnJhdGVPcGVuXCI6IHRydWUsICAgICAgICAgICAvL+mch+WKqFxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGNjLmZ4LlN0b3JhZ2VNZXNzYWdlLnNldFN0b3JhZ2UoXCJtdXNpY1wiLGF1ZGlvSW5mbyk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2V7XHJcbiAgICAgICAgICAgIGNjLmZ4LkdhbWVDb25maWcuR01fSU5GTy5tdXNpY09wZW4gPSBhdWRpb0luZm8ubXVzaWNPcGVuO1xyXG4gICAgICAgICAgICBjYy5meC5HYW1lQ29uZmlnLkdNX0lORk8uZWZmZWN0T3BlbiA9IGF1ZGlvSW5mby5lZmZlY3RPcGVuO1xyXG4gICAgICAgICAgICBjYy5meC5HYW1lQ29uZmlnLkdNX0lORk8udmlicmF0ZU9wZW4gPSBhdWRpb0luZm8udmlicmF0ZU9wZW47XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG4gICAgXHJcbiAgICAvL+aWsOeUqOaIt++8jOacieacrOWcsOe8k+WtmOivu+WPlumFjee9rlxyXG4gICAgbmV3UmVhZERhdGEoKXtcclxuICAgICAgICBjb25zb2xlLmxvZyhcIuivu+WPluaWsOS/oeaBr1wiKTtcclxuICAgICAgICBsZXQgb3BlbmlkID0gY2MuZnguU3RvcmFnZU1lc3NhZ2UuZ2V0U3RvcmFnZShcIm9wZW5pZFwiKTtcclxuICAgICAgICBpZihvcGVuaWQgPT0gbnVsbCB8fCBvcGVuaWQgPT0gXCJcIiB8fCBvcGVuaWQgPT0gdW5kZWZpbmVkKXtcclxuICAgICAgICAgICAgY29uc29sZS5sb2coXCLmsqHmnIlvcGVuaWRcIik7XHJcbiAgICAgICAgICAgIC8vQHRzLWlnbm9yZVxyXG4gICAgICAgICAgICB3eC5jbG91ZC5jYWxsRnVuY3Rpb24oe1xyXG4gICAgICAgICAgICBuYW1lOiAndXNlckRhdGEnLFxyXG4gICAgICAgICAgICAgICAgZGF0YToge1xyXG4gICAgICAgICAgICAgICAgICAgIGFjdGlvbjogJ3JlYWQnXHJcbiAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgICAgc3VjY2VzczogcmVzID0+IHtcclxuICAgICAgICAgICAgICAgICAgICBjb25zb2xlLmxvZygn6K+75Y+W55So5oi35pWw5o2u5oiQ5YqfJywgcmVzLnJlc3VsdClcclxuICAgICAgICAgICAgICAgICAgICBpZihyZXMucmVzdWx0LmNvZGUgPT0gNDA0ICYmIHJlcy5yZXN1bHQubWVzc2FnZSA9PSBcIuacquaJvuWIsOeUqOaIt+aVsOaNrlwiKXtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgZWxzZSBpZihyZXMucmVzdWx0LmNvZGUgPT0gMjAwKXtcclxuICAgICAgICAgICAgICAgICAgICAgICAgaWYocmVzLnJlc3VsdC5kYXRhKXtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNjLmZ4LkdhbWVDb25maWcuR01fSU5GTy5vcGVuaWQgPSByZXMucmVzdWx0Lm9wZW5pZDtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNjLmZ4LkdhbWVDb25maWcuR01fSU5GTy51c2VybmFtZSA9IHJlcy5yZXN1bHQuZGF0YS51c2VybmFtZTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNjLmZ4LkdhbWVDb25maWcuR01fSU5GTy51c2VyYXZhdGFyID0gcmVzLnJlc3VsdC5kYXRhLnVzZXJhdmF0YXI7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCByZWdpc3Rlcl90aW1lID0gcmVzLnJlc3VsdC5kYXRhLnJlZ2lzdGVyX3RpbWU7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBNaW5pR2FtZVNkay5BUEkuc2h1c2h1X3VzZXJTZXQocmVnaXN0ZXJfdGltZSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYy5meC5TdG9yYWdlTWVzc2FnZS5zZXRTdG9yYWdlKFwib3BlbmlkXCIsY2MuZnguR2FtZUNvbmZpZy5HTV9JTkZPLm9wZW5pZCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgICAgZmFpbDogZXJyID0+IHtcclxuICAgICAgICAgICAgICAgICAgICBjb25zb2xlLmVycm9yKCfor7vlj5bnlKjmiLfmlbDmja7lpLHotKUnLCBlcnIpXHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH0pXHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2V7XHJcbiAgICAgICAgICAgIGlmKG9wZW5pZClcclxuICAgICAgICAgICAgICAgIGNjLmZ4LkdhbWVDb25maWcuR01fSU5GTy5vcGVuaWQgPSBvcGVuaWQ7XHJcbiAgICAgICAgfVxyXG4gICBcclxuXHJcblxyXG4gICAgICAgIC8v562J57qn5L+h5oGvXHJcbiAgICAgICAgY2MuZnguR2FtZVRvb2wuZ2V0VXNlckxldmVsKChkYXRhKSA9PntcclxuICAgICAgICAgICAgY29uc3QgdGltZXN0YW1wID0gRGF0ZS5ub3coKTtcclxuICAgICAgICAgICAgbGV0IGxldmVsSW5mbyA9IGNjLmZ4LlN0b3JhZ2VNZXNzYWdlLmdldFN0b3JhZ2UoXCJsZXZlbFwiKTtcclxuICAgICAgICAgICAgaWYoZGF0YS5yZXN1bHQuY29kZSA9PSA0MDQgJiYgZGF0YS5yZXN1bHQubWVzc2FnZSA9PSBcIuacquaJvuWIsOWFs+WNoeaVsOaNrlwiKXtcclxuICAgICAgICAgICAgICAgIC8vIGNvbnNvbGUubG9nKFwi5rKh5pyJ562J57qn5L+h5oGv77yM5LuO55So5oi35o6l5Y+j5ou/5Yiw5pWw5o2uXCIpO1xyXG4gICAgICAgICAgICAgICAgaWYobGV2ZWxJbmZvLmxldmVsKXtcclxuICAgICAgICAgICAgICAgICAgICBjYy5meC5HYW1lQ29uZmlnLkdNX0lORk8ubGV2ZWwgPSBsZXZlbEluZm8ubGV2ZWw7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB0aGlzLmxvYWQ0ID0gdHJ1ZTtcclxuICAgICAgICAgICAgICAgIGNjLmZ4LkdhbWVUb29sLnNldFVzZXJMZXZlbCgoZGF0YSk9PntcclxuICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICB9IFxyXG4gICAgICAgICAgICBlbHNlIGlmKGRhdGEucmVzdWx0LmNvZGUgPT0gMjAwKXtcclxuICAgICAgICAgICAgICAgIC8vIGNvbnNvbGUubG9nKFwi5pyJ562J57qn5L+h5oGv77yM5LuO5YWz5Y2h5o6l5Y+j5ou/5Yiw5pWw5o2uXCIsZGF0YS5yZXN1bHQuZGF0YSk7XHJcbiAgICAgICAgICAgICAgICAvL+a4uOaIj+WJjeerr+WtmOWCqCDmlrDkuo7mnI3liqHlmajnq68s5Lul5ri45oiP5YmN56uv5L+h5oGv5Li65Li777yM5pS+5pyN5Yqh5Zmo5a2Y5YKoXHJcbiAgICAgICAgICAgICAgICBsZXQgdGVtcCA9IGRhdGEucmVzdWx0LnRpbWVzdGFtcCAtIGxldmVsSW5mby50aW1lc3RhbXA7XHJcbiAgICAgICAgICAgICAgICBjb25zb2xlLmxvZyhcIuetiee6p+aXtumXtOW3rjpcIix0ZW1wKTtcclxuICAgICAgICAgICAgICAgIGlmKChkYXRhLnJlc3VsdC50aW1lc3RhbXAgLSBsZXZlbEluZm8udGltZXN0YW1wKSA8IDEwMDAwKXtcclxuICAgICAgICAgICAgICAgICAgICBpZihsZXZlbEluZm8ubGV2ZWwpe1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zb2xlLmxvZyhcIuS7pea4uOaIj+WJjeerr+etiee6p+S4uuWHhlwiLGRhdGEucmVzdWx0LmRhdGEpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBjYy5meC5HYW1lQ29uZmlnLkdNX0lORk8ubGV2ZWwgPSBsZXZlbEluZm8ubGV2ZWw7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIGNvbnNvbGUubG9nKFwi562J57qn5Li6OlwiLGNjLmZ4LkdhbWVDb25maWcuR01fSU5GTy5sZXZlbCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNjLmZ4LkdhbWVUb29sLnNldFVzZXJMZXZlbCgoZGF0YSk9PntcclxuICAgICAgICAgICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIC8v5pyN5Yqh5Zmo56uv5a2Y5YKo5pe26Ze05paw5LqO5ri45oiP56uv77yM5Lul5pyN5Yqh5Zmo56uv5Li65Li7LOW+gOWJjeerr+WtmOWCqFxyXG4gICAgICAgICAgICAgICAgZWxzZXtcclxuICAgICAgICAgICAgICAgICAgICBjb25zb2xlLmxvZyhcIuS7peacjeWKoeWZqOetiee6p+S4uuWHhlwiLGRhdGEucmVzdWx0LmRhdGEpO1xyXG4gICAgICAgICAgICAgICAgICAgIGNjLmZ4LkdhbWVDb25maWcuR01fSU5GTy5sZXZlbCA9IGRhdGEucmVzdWx0LmRhdGE7IFxyXG4gICAgICAgICAgICAgICAgICAgIGxldmVsSW5mby5sZXZlbCA9IGNjLmZ4LkdhbWVDb25maWcuR01fSU5GTy5sZXZlbDtcclxuICAgICAgICAgICAgICAgICAgICBsZXZlbEluZm8udGltZXN0YW1wID0gdGltZXN0YW1wO1xyXG4gICAgICAgICAgICAgICAgICAgIC8vIGNvbnNvbGUubG9nKFwiMTExMTExMeWtmOWCqOWFs+WNoeaVsOaNrjpcIixjYy5meC5HYW1lQ29uZmlnLkdNX0lORk8ubGV2ZWwpO1xyXG4gICAgICAgICAgICAgICAgICAgIGNjLmZ4LlN0b3JhZ2VNZXNzYWdlLnNldFN0b3JhZ2UoXCJsZXZlbFwiLGxldmVsSW5mbyk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB0aGlzLmxvYWQ0ID0gdHJ1ZTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH0pO1xyXG4gICAgICAgIC8v6YeR5biB5L+h5oGvXHJcbiAgICAgICAgY2MuZnguR2FtZVRvb2wuZ2V0VXNlckNvaW4oKGRhdGEpID0+e1xyXG4gICAgICAgICAgICBjb25zdCB0aW1lc3RhbXAgPSBEYXRlLm5vdygpO1xyXG4gICAgICAgICAgICBsZXQgY29pbkluZm8gPSBjYy5meC5TdG9yYWdlTWVzc2FnZS5nZXRTdG9yYWdlKFwiY29pblwiKTtcclxuICAgICAgICAgICAgaWYoZGF0YS5yZXN1bHQuY29kZSA9PSA0MDQgJiYgZGF0YS5yZXN1bHQubWVzc2FnZSA9PSBcIuacquaJvuWIsOmHkeW4geaVsOaNrlwiKXtcclxuICAgICAgICAgICAgICAgIGlmKGNvaW5JbmZvLmNvaW4pXHJcbiAgICAgICAgICAgICAgICAgICAgY2MuZnguR2FtZUNvbmZpZy5HTV9JTkZPLmNvaW4gPSBjb2luSW5mby5jb2luO1xyXG4gICAgICAgICAgICAgICAgY29uc29sZS5sb2coXCLmsqHmnInph5HluIHkv6Hmga/vvIzku47nlKjmiLfmjqXlj6Pmi7/liLDmlbDmja5cIixjYy5meC5HYW1lQ29uZmlnLkdNX0lORk8uY29pbik7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmxvYWQzID0gdHJ1ZTtcclxuICAgICAgICAgICAgICAgIGNjLmZ4LkdhbWVUb29sLnNldFVzZXJDb2luKChkYXRhKT0+e1xyXG4gICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgIH0gXHJcbiAgICAgICAgICAgIGVsc2UgaWYoZGF0YS5yZXN1bHQuY29kZSA9PSAyMDApe1xyXG4gICAgICAgICAgICAgICAgLy8gY29uc29sZS5sb2coXCLmnInph5HluIHkv6Hmga/vvIzku47ph5HluIHmjqXlj6Pmi7/liLDmlbDmja5cIixkYXRhLnJlc3VsdC5kYXRhKTtcclxuICAgICAgICAgICAgICAgIC8v5ri45oiP5YmN56uv5a2Y5YKoIOaWsOS6juacjeWKoeWZqOerryzku6XmuLjmiI/liY3nq6/kv6Hmga/kuLrkuLvvvIzmlL7mnI3liqHlmajlrZjlgqhcclxuICAgICAgICAgICAgICAgIGxldCB0ZW1wID0gZGF0YS5yZXN1bHQudGltZXN0YW1wIC0gY29pbkluZm8udGltZXN0YW1wO1xyXG4gICAgICAgICAgICAgICAgY29uc29sZS5sb2coXCLph5HluIHml7bpl7Tlt646XCIsdGVtcCk7XHJcbiAgICAgICAgICAgICAgICBpZigoZGF0YS5yZXN1bHQudGltZXN0YW1wIC0gY29pbkluZm8udGltZXN0YW1wKSA8IDEwMDAwKXtcclxuICAgICAgICAgICAgICAgICAgICBjb25zb2xlLmxvZyhcIuS7peWJjeerr+mHkeW5o+S4uuWHhjpcIixjb2luSW5mbyk7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYoY29pbkluZm8uY29pbilcclxuICAgICAgICAgICAgICAgICAgICAgICAgY2MuZnguR2FtZUNvbmZpZy5HTV9JTkZPLmNvaW4gPSBjb2luSW5mby5jb2luO1xyXG4gICAgICAgICAgICAgICAgICAgIGVsc2V7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNjLmZ4LkdhbWVDb25maWcuR01fSU5GTy5jb2luID0gZGF0YS5yZXN1bHQuZGF0YTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgY29pbkluZm8uY29pbiA9IGNjLmZ4LkdhbWVDb25maWcuR01fSU5GTy5jb2luO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBjb2luSW5mby50aW1lc3RhbXAgPSB0aW1lc3RhbXA7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKFwiMTExMTExMTExMTFcIik7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNjLmZ4LlN0b3JhZ2VNZXNzYWdlLnNldFN0b3JhZ2UoXCJjb2luXCIsY29pbkluZm8pO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICBjb25zb2xlLmxvZyhcIuaUueWPmOWQjumHkeW4gTpcIixjYy5meC5HYW1lQ29uZmlnLkdNX0lORk8uY29pbik7XHJcbiAgICAgICAgICAgICAgICAgICAgY2MuZnguR2FtZVRvb2wuc2V0VXNlckNvaW4oKGRhdGEpPT57XHJcbiAgICAgICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAvL+acjeWKoeWZqOerr+WtmOWCqOaXtumXtOaWsOS6jua4uOaIj+err++8jOS7peacjeWKoeWZqOerr+S4uuS4uyzlvoDliY3nq6/lrZjlgqhcclxuICAgICAgICAgICAgICAgIGVsc2V7XHJcbiAgICAgICAgICAgICAgICAgICAgY29uc29sZS5sb2coXCLku6XmnI3liqHlmajph5HluaPkuLrlh4Y6XCIsZGF0YS5yZXN1bHQuZGF0YSk7XHJcbiAgICAgICAgICAgICAgICAgICAgY2MuZnguR2FtZUNvbmZpZy5HTV9JTkZPLmNvaW4gPSBkYXRhLnJlc3VsdC5kYXRhOyBcclxuICAgICAgICAgICAgICAgICAgICBjb2luSW5mby5jb2luID0gY2MuZnguR2FtZUNvbmZpZy5HTV9JTkZPLmNvaW47XHJcbiAgICAgICAgICAgICAgICAgICAgY29pbkluZm8udGltZXN0YW1wID0gdGltZXN0YW1wO1xyXG4gICAgICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKFwiMjIyMjIyMjIyMlwiKTtcclxuICAgICAgICAgICAgICAgICAgICBjYy5meC5TdG9yYWdlTWVzc2FnZS5zZXRTdG9yYWdlKFwiY29pblwiLGNvaW5JbmZvKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIHRoaXMubG9hZDMgPSB0cnVlO1xyXG4gICAgICAgICAgICB9IFxyXG4gICAgICAgIH0pO1xyXG4gICAgICAgIC8v6YGT5YW35L+h5oGvXHJcbiAgICAgICAgY2MuZnguR2FtZVRvb2wuZ2V0VXNlclByb3AoKGRhdGEpID0+e1xyXG4gICAgICAgICAgICBjb25zdCB0aW1lc3RhbXAgPSBEYXRlLm5vdygpO1xyXG4gICAgICAgICAgICBsZXQgcHJvcEluZm8gPSBjYy5meC5TdG9yYWdlTWVzc2FnZS5nZXRTdG9yYWdlKFwicHJvcFwiKTtcclxuICAgICAgICAgICAgaWYoZGF0YS5yZXN1bHQuY29kZSA9PSA0MDQgJiYgZGF0YS5yZXN1bHQubWVzc2FnZSA9PSBcIuacquaJvuWIsOmBk+WFt+aVsOaNrlwiKXtcclxuICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKFwi5rKh5pyJ6YGT5YW35L+h5oGv77yM5LuO55So5oi35o6l5Y+j5ou/5Yiw5pWw5o2uXCIscHJvcEluZm8pO1xyXG4gICAgICAgICAgICAgICAgaWYocHJvcEluZm8uZnJlZXplQW1vdW50ID09IHVuZGVmaW5lZCB8fCBwcm9wSW5mby5oYW1tZXJBbW91bnQgPT0gdW5kZWZpbmVkIHx8IHByb3BJbmZvLm1hZ2ljQW1vdW50ID09IHVuZGVmaW5lZCl7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKFwiMjIyMjIyMumBk+WFt+aVsOaNruW8guW4uFwiKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgY2MuZnguR2FtZUNvbmZpZy5HTV9JTkZPLmZyZWV6ZUFtb3VudCA9IDA7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNjLmZ4LkdhbWVDb25maWcuR01fSU5GTy5oYW1tZXJBbW91bnQgPSAwO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBjYy5meC5HYW1lQ29uZmlnLkdNX0lORk8ubWFnaWNBbW91biA9IDA7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGxldCBwcm9wSW5mb05ldyA9IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiZnJlZXplQW1vdW50XCI6Y2MuZnguR2FtZUNvbmZpZy5HTV9JTkZPLmZyZWV6ZUFtb3VudCxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiaGFtbWVyQW1vdW50XCI6Y2MuZnguR2FtZUNvbmZpZy5HTV9JTkZPLmhhbW1lckFtb3VudCxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwibWFnaWNBbW91bnRcIjpjYy5meC5HYW1lQ29uZmlnLkdNX0lORk8ubWFnaWNBbW91bixcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwidGltZXN0YW1wXCI6dGltZXN0YW1wXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgY29uc29sZS5sb2coXCIxMTExMTEx5LiK5Lyg6YGT5YW35L+h5oGvOlwiLHByb3BJbmZvTmV3KTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgY2MuZnguU3RvcmFnZU1lc3NhZ2Uuc2V0U3RvcmFnZShcInByb3BcIixwcm9wSW5mb05ldyk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBlbHNle1xyXG4gICAgICAgICAgICAgICAgICAgIC8vIGNjLmZ4LkdhbWVDb25maWcuR01fSU5GTy5mcmVlemVBbW91bnQgPSBkYXRhLnJlc3VsdC5kYXRhLmZyZWV6ZTtcclxuICAgICAgICAgICAgICAgICAgICAvLyBjYy5meC5HYW1lQ29uZmlnLkdNX0lORk8uaGFtbWVyQW1vdW50ID0gZGF0YS5yZXN1bHQuZGF0YS5oYW1tZXI7XHJcbiAgICAgICAgICAgICAgICAgICAgLy8gY2MuZnguR2FtZUNvbmZpZy5HTV9JTkZPLm1hZ2ljQW1vdW50ID0gZGF0YS5yZXN1bHQuZGF0YS5tYWdpY193YW5kO1xyXG4gICAgICAgICAgICAgICAgICAgIGNjLmZ4LkdhbWVDb25maWcuR01fSU5GTy5mcmVlemVBbW91bnQgPSBwcm9wSW5mby5mcmVlemVBbW91bnQ7XHJcbiAgICAgICAgICAgICAgICAgICAgY2MuZnguR2FtZUNvbmZpZy5HTV9JTkZPLmhhbW1lckFtb3VudCA9IHByb3BJbmZvLmhhbW1lckFtb3VudDtcclxuICAgICAgICAgICAgICAgICAgICBjYy5meC5HYW1lQ29uZmlnLkdNX0lORk8ubWFnaWNBbW91bnQgPSBwcm9wSW5mby5tYWdpY0Ftb3VudDtcclxuICAgICAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgIC8vIGNjLmZ4LkdhbWVDb25maWcuR01fSU5GTy5mcmVlemVBbW91bnQgPSBwcm9wSW5mby5mcmVlemVBbW91bnQ7XHJcbiAgICAgICAgICAgICAgICAvLyBjYy5meC5HYW1lQ29uZmlnLkdNX0lORk8uaGFtbWVyQW1vdW50ID0gcHJvcEluZm8uaGFtbWVyQW1vdW50O1xyXG4gICAgICAgICAgICAgICAgLy8gY2MuZnguR2FtZUNvbmZpZy5HTV9JTkZPLm1hZ2ljQW1vdW50ID0gcHJvcEluZm8ubWFnaWNBbW91bnQ7XHJcbiAgICAgICAgICAgICAgICBjYy5meC5HYW1lVG9vbC5zZXRVc2VyUHJvcCgwLDAsKGRhdGEpPT57XHJcbiAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgfSBcclxuICAgICAgICAgICAgZWxzZSBpZihkYXRhLnJlc3VsdC5jb2RlID09IDIwMCl7XHJcbiAgICAgICAgICAgICAgICAvLyBjb25zb2xlLmxvZyhcIuacrOWcsOaXtumXtOaIs1wiLHByb3BJbmZvLnRpbWVzdGFtcCxcIuacjeWKoeWZqOaXtumXtOaIs1wiLGRhdGEucmVzdWx0LnRpbWVzdGFtcCk7XHJcbiAgICAgICAgICAgICAgICBpZigoZGF0YS5yZXN1bHQudGltZXN0YW1wIC0gcHJvcEluZm8udGltZXN0YW1wKSA8IDEwMDAwKXtcclxuICAgICAgICAgICAgICAgICAgICBjb25zb2xlLmxvZyhcIuS7peWJjeerr+mBk+WFt+S4uuS4uzpcIixwcm9wSW5mbyk7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYocHJvcEluZm8uZnJlZXplQW1vdW50ID09IHVuZGVmaW5lZCB8fCBwcm9wSW5mby5oYW1tZXJBbW91bnQgPT0gdW5kZWZpbmVkIHx8IHByb3BJbmZvLm1hZ2ljQW1vdW50ID09IHVuZGVmaW5lZCl7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKFwiMTExMTEx6YGT5YW35pWw5o2u5byC5bi4XCIsZGF0YS5yZXN1bHQuZGF0YSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNjLmZ4LkdhbWVDb25maWcuR01fSU5GTy5mcmVlemVBbW91bnQgPSBkYXRhLnJlc3VsdC5kYXRhLmZyZWV6ZTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgY2MuZnguR2FtZUNvbmZpZy5HTV9JTkZPLmhhbW1lckFtb3VudCA9IGRhdGEucmVzdWx0LmRhdGEuaGFtbWVyO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBjYy5meC5HYW1lQ29uZmlnLkdNX0lORk8ubWFnaWNBbW91bnQgPSBkYXRhLnJlc3VsdC5kYXRhLm1hZ2ljX3dhbmQ7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGxldCBwcm9wSW5mb05ldyA9IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiZnJlZXplQW1vdW50XCI6Y2MuZnguR2FtZUNvbmZpZy5HTV9JTkZPLmZyZWV6ZUFtb3VudCxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiaGFtbWVyQW1vdW50XCI6Y2MuZnguR2FtZUNvbmZpZy5HTV9JTkZPLmhhbW1lckFtb3VudCxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwibWFnaWNBbW91bnRcIjpjYy5meC5HYW1lQ29uZmlnLkdNX0lORk8ubWFnaWNBbW91bnQsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBcInRpbWVzdGFtcFwiOnRpbWVzdGFtcFxyXG4gICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKFwiMzMzMzMz5LiK5Lyg6YGT5YW35L+h5oGvOlwiLHByb3BJbmZvTmV3KTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgY2MuZnguU3RvcmFnZU1lc3NhZ2Uuc2V0U3RvcmFnZShcInByb3BcIixwcm9wSW5mb05ldyk7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIGVsc2V7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKFwi6YGT5YW35pWw5o2u5q2j5bi4XCIpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBjYy5meC5HYW1lQ29uZmlnLkdNX0lORk8uZnJlZXplQW1vdW50ID0gcHJvcEluZm8uZnJlZXplQW1vdW50O1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBjYy5meC5HYW1lQ29uZmlnLkdNX0lORk8uaGFtbWVyQW1vdW50ID0gcHJvcEluZm8uaGFtbWVyQW1vdW50O1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBjYy5meC5HYW1lQ29uZmlnLkdNX0lORk8ubWFnaWNBbW91bnQgPSBwcm9wSW5mby5tYWdpY0Ftb3VudDtcclxuICAgICAgICAgICAgICAgICAgICAgICAgY2MuZnguR2FtZVRvb2wuc2V0VXNlclByb3AoMCwwLChkYXRhKT0+e1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBlbHNle1xyXG4gICAgICAgICAgICAgICAgICAgIGNjLmZ4LkdhbWVDb25maWcuR01fSU5GTy5mcmVlemVBbW91bnQgPSBkYXRhLnJlc3VsdC5kYXRhLmZyZWV6ZTtcclxuICAgICAgICAgICAgICAgICAgICBjYy5meC5HYW1lQ29uZmlnLkdNX0lORk8uaGFtbWVyQW1vdW50ID0gZGF0YS5yZXN1bHQuZGF0YS5oYW1tZXI7XHJcbiAgICAgICAgICAgICAgICAgICAgY2MuZnguR2FtZUNvbmZpZy5HTV9JTkZPLm1hZ2ljQW1vdW50ID0gZGF0YS5yZXN1bHQuZGF0YS5tYWdpY193YW5kO1xyXG4gICAgICAgICAgICAgICAgICAgIGxldCBwcm9wSW5mb05ldyA9IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgXCJmcmVlemVBbW91bnRcIjpjYy5meC5HYW1lQ29uZmlnLkdNX0lORk8uZnJlZXplQW1vdW50LFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBcImhhbW1lckFtb3VudFwiOmNjLmZ4LkdhbWVDb25maWcuR01fSU5GTy5oYW1tZXJBbW91bnQsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFwibWFnaWNBbW91bnRcIjpjYy5meC5HYW1lQ29uZmlnLkdNX0lORk8ubWFnaWNBbW91bnQsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFwidGltZXN0YW1wXCI6dGltZXN0YW1wXHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKFwiMjIyMjIyMjLkuIrkvKDpgZPlhbfkv6Hmga86XCIscHJvcEluZm9OZXcsZGF0YS5yZXN1bHQpO1xyXG4gICAgICAgICAgICAgICAgICAgIGNjLmZ4LlN0b3JhZ2VNZXNzYWdlLnNldFN0b3JhZ2UoXCJwcm9wXCIscHJvcEluZm9OZXcpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9IFxyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG4gICAgLy/ml6fnlKjmiLfvvIzml6DmnKzlnLDnvJPlrZjor7vlj5bphY3nva5cclxuICAgIG9sZFJlYWREYXRhKHJldHJ5Q291bnQ6bnVtYmVyKXtcclxuICAgICAgICBjb25zb2xlLmxvZyhcIuivu+WPluaXp+S/oeaBr1wiKTtcclxuICAgICAgICBjb25zdCBNQVhfUkVUUklFUyA9IDE1O1xyXG4gICAgICAgIGNvbnN0IHRpbWVzdGFtcCA9IERhdGUubm93KCk7XHJcbiAgICAgICAgLy8g6K+75Y+W55So5oi35pWw5o2uXHJcbiAgICAgICAgLy9AdHMtaWdub3JlXHJcbiAgICAgICAgd3guY2xvdWQuY2FsbEZ1bmN0aW9uKHtcclxuICAgICAgICBuYW1lOiAndXNlckRhdGEnLFxyXG4gICAgICAgIGRhdGE6IHtcclxuICAgICAgICAgICAgYWN0aW9uOiAncmVhZCdcclxuICAgICAgICB9LFxyXG4gICAgICAgIHN1Y2Nlc3M6IHJlcyA9PiB7ICAgXHJcbiAgICAgICAgICAgIGNvbnNvbGUubG9nKCfor7vlj5bnlKjmiLfmlbDmja7miJDlip8nLCByZXMucmVzdWx0KVxyXG4gICAgICAgICAgICBpZihyZXMucmVzdWx0LmNvZGUgPT0gNDA0ICYmIHJlcy5yZXN1bHQubWVzc2FnZSA9PSBcIuacquaJvuWIsOeUqOaIt+aVsOaNrlwiKXtcclxuICAgICAgICAgICAgICAgIGlmKHJlcy5yZXN1bHQub3BlbmlkKXtcclxuICAgICAgICAgICAgICAgICAgICBjYy5meC5HYW1lQ29uZmlnLkdNX0lORk8ub3BlbmlkID0gcmVzLnJlc3VsdC5vcGVuaWRcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIGNjLmZ4LkdhbWVDb25maWcuR01fSU5GTy5maXJzdCA9IHRydWU7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmxvYWQzID0gdHJ1ZTtcclxuICAgICAgICAgICAgICAgIHRoaXMubG9hZDQgPSB0cnVlO1xyXG4gICAgICAgICAgICAgICAgbGV0IGxldmVsSW5mbyA9IHtcImxldmVsXCI6MCxcInRpbWVzdGFtcFwiOnRpbWVzdGFtcH07XHJcbiAgICAgICAgICAgICAgICBjYy5meC5TdG9yYWdlTWVzc2FnZS5zZXRTdG9yYWdlKFwibGV2ZWxcIixsZXZlbEluZm8pO1xyXG4gICAgICAgICAgICAgICAgbGV0IGNvaW5JbmZvID0ge1wiY29pblwiOjAsXCJ0aW1lc3RhbXBcIjp0aW1lc3RhbXB9O1xyXG4gICAgICAgICAgICAgICAgY29uc29sZS5sb2coXCIzMzMzMzMzMzMzM1wiKTtcclxuICAgICAgICAgICAgICAgIGNjLmZ4LlN0b3JhZ2VNZXNzYWdlLnNldFN0b3JhZ2UoXCJjb2luXCIsY29pbkluZm8pO1xyXG4gICAgICAgICAgICAgICAgbGV0IHByb3BJbmZvID0ge1xyXG4gICAgICAgICAgICAgICAgICAgIFwiZnJlZXplQW1vdW50XCI6MCxcclxuICAgICAgICAgICAgICAgICAgICBcImhhbW1lckFtb3VudFwiOjAsXHJcbiAgICAgICAgICAgICAgICAgICAgXCJtYWdpY0Ftb3VudFwiOjAsXHJcbiAgICAgICAgICAgICAgICAgICAgXCJ0aW1lc3RhbXBcIjp0aW1lc3RhbXAsXHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBjYy5meC5TdG9yYWdlTWVzc2FnZS5zZXRTdG9yYWdlKFwicHJvcFwiLHByb3BJbmZvKTtcclxuXHJcblxyXG4gICAgICAgICAgICAgICAgY2MuZnguR2FtZVRvb2wuc2V0VXNlckluZm8oKGRhdGEpPT57XHJcbiAgICAgICAgICAgICAgICAgICAgaWYoZGF0YS5yZXN1bHQuY29kZSA9PSAyMDApe1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zb2xlLmxvZyhcIuS4iuS8oOeUqOaIt+S/oeaBr+aIkOWKn1wiLGRhdGEpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAvL0B0cy1pZ25vcmVcclxuICAgICAgICAgICAgICAgICAgICAgICAgd3guY2xvdWQuY2FsbEZ1bmN0aW9uKHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6ICd1c2VyRGF0YScsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRhOiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWN0aW9uOiAncmVhZCdcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN1Y2Nlc3M6IHJlcyA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc29sZS5sb2coXCLkuIrkvKDlkI7vvIzor7vlj5bnlKjmiLfkv6Hmga/vvIzkuLrkuIrmiqXms6jlhozml7bpl7RcIilcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZihyZXMucmVzdWx0LmNvZGUgPT0gMjAwKXtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgdGltZSA9IHJlcy5yZXN1bHQuZGF0YS5yZWdpc3Rlcl90aW1lO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBNaW5pR2FtZVNkay5BUEkuc2h1c2h1X3VzZXJTZXQodGltZSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICB9KVxyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICAgICAgY29uc29sZS5sb2coXCLmnI3liqHlmajkuZ/msqHmnInph5HluIHkv6Hmga9cIixjYy5meC5HYW1lQ29uZmlnLkdNX0lORk8uY29pbik7XHJcbiAgICAgICAgICAgICAgICBjYy5meC5HYW1lVG9vbC5zZXRVc2VyQ29pbihjYy5meC5HYW1lQ29uZmlnLkdNX0lORk8uY29pbiwoZGF0YSk9PntcclxuICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICAgICAgY2MuZnguR2FtZVRvb2wuc2V0VXNlckxldmVsKChkYXRhKT0+e1xyXG4gICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICBjYy5meC5HYW1lQ29uZmlnLkdNX0lORk8uZnJlZXplQW1vdW50ID0gMDtcclxuICAgICAgICAgICAgICAgICAgICBjYy5meC5HYW1lQ29uZmlnLkdNX0lORk8uaGFtbWVyQW1vdW50ID0gMDtcclxuICAgICAgICAgICAgICAgICAgICBjYy5meC5HYW1lQ29uZmlnLkdNX0lORk8ubWFnaWNBbW91bnQgPSAwO1xyXG4gICAgICAgICAgICAgICAgICAgIGNjLmZ4LkdhbWVUb29sLnNldFVzZXJQcm9wKDAsMCwoZGF0YSk9PntcclxuICAgICAgICAgICAgICAgICAgICAgICAgaWYoZGF0YS5yZXN1bHQuY29kZSA9PSAyMDApe1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc29sZS5sb2coXCLkuIrkvKDpgZPlhbfkv6Hmga/miJDlip9cIixkYXRhKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICBlbHNle1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgTWluaUdhbWVTZGsuQVBJLnNob3dUb2FzdChcIue9kee7nOW8guW4uO+8jOato+WcqOWKquWKm+WKoOi9vVwiKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMub2xkUmVhZERhdGEoMCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LCAxMDAwKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICAgICAgfSwgMCk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgZWxzZSBpZihyZXMucmVzdWx0LmNvZGUgPT0gMjAwKXtcclxuICAgICAgICAgICAgICAgIGlmKHJlcy5yZXN1bHQuZGF0YSl7XHJcbiAgICAgICAgICAgICAgICAgICAgY2MuZnguR2FtZUNvbmZpZy5HTV9JTkZPLm9wZW5pZCA9IHJlcy5yZXN1bHQub3BlbmlkO1xyXG4gICAgICAgICAgICAgICAgICAgIGNjLmZ4LkdhbWVDb25maWcuR01fSU5GTy5sZXZlbCA9IHJlcy5yZXN1bHQuZGF0YS5sZXZlbDtcclxuICAgICAgICAgICAgICAgICAgICBjYy5meC5HYW1lQ29uZmlnLkdNX0lORk8uY29pbiA9IHJlcy5yZXN1bHQuZGF0YS5jb2luQW1vdW50O1xyXG4gICAgICAgICAgICAgICAgICAgIGNjLmZ4LkdhbWVDb25maWcuR01fSU5GTy5mcmVlemVBbW91bnQgPSByZXMucmVzdWx0LmRhdGEuZnJlZXplQW1vdW50O1xyXG4gICAgICAgICAgICAgICAgICAgIGNjLmZ4LkdhbWVDb25maWcuR01fSU5GTy5oYW1tZXJBbW91bnQgPSByZXMucmVzdWx0LmRhdGEuaGFtbWVyQW1vdW50O1xyXG4gICAgICAgICAgICAgICAgICAgIGNjLmZ4LkdhbWVDb25maWcuR01fSU5GTy5tYWdpY0Ftb3VudCA9IHJlcy5yZXN1bHQuZGF0YS5tYWdpY0Ftb3VudDtcclxuICAgICAgICAgICAgICAgICAgICBjYy5meC5HYW1lQ29uZmlnLkdNX0lORk8udXNlcm5hbWUgPSByZXMucmVzdWx0LmRhdGEudXNlcm5hbWU7XHJcbiAgICAgICAgICAgICAgICAgICAgY2MuZnguR2FtZUNvbmZpZy5HTV9JTkZPLnVzZXJhdmF0YXIgPSByZXMucmVzdWx0LmRhdGEudXNlcmF2YXRhcjtcclxuICAgICAgICAgICAgICAgICAgICBjYy5meC5TdG9yYWdlTWVzc2FnZS5zZXRTdG9yYWdlKFwib3BlbmlkXCIsY2MuZnguR2FtZUNvbmZpZy5HTV9JTkZPLm9wZW5pZCk7XHJcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgcmVnaXN0ZXJfdGltZSA9IHJlcy5yZXN1bHQuZGF0YS5yZWdpc3Rlcl90aW1lO1xyXG4gICAgICAgICAgICAgICAgICAgIE1pbmlHYW1lU2RrLkFQSS5zaHVzaHVfdXNlclNldChyZWdpc3Rlcl90aW1lKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgIGNjLmZ4LkdhbWVUb29sLmdldFVzZXJDb2luKChkYXRhKSA9PntcclxuICAgICAgICAgICAgICAgICAgICAgICAgaWYoZGF0YS5yZXN1bHQuY29kZSA9PSA0MDQgJiYgZGF0YS5yZXN1bHQubWVzc2FnZSA9PSBcIuacquaJvuWIsOmHkeW4geaVsOaNrlwiKXtcclxuICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBjb2luSW5mbyA9IHtcImNvaW5cIjowLFwidGltZXN0YW1wXCI6dGltZXN0YW1wfTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNjLmZ4LkdhbWVDb25maWcuR01fSU5GTy5jb2luID0gMDtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNjLmZ4LlN0b3JhZ2VNZXNzYWdlLnNldFN0b3JhZ2UoXCJjb2luXCIsY29pbkluZm8pO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc29sZS5sb2coXCLmsqHmnInph5HluIHkv6Hmga/vvIzku47nlKjmiLfmjqXlj6Pmi7/liLDmlbDmja5cIixjYy5meC5HYW1lQ29uZmlnLkdNX0lORk8uY29pbik7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYy5meC5HYW1lVG9vbC5zZXRVc2VyQ29pbigoZGF0YSk9PntcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBjb25zb2xlLmxvZyhcIuS4iuS8oFwiLGRhdGEpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMubG9hZDMgPSB0cnVlO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSBpZihkYXRhLnJlc3VsdC5jb2RlID09IDIwMCl7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBjb25zb2xlLmxvZyhcIuaciemHkeW4geS/oeaBr++8jOS7jumHkeW4geaOpeWPo+aLv+WIsOaVsOaNrlwiLGRhdGEucmVzdWx0LmRhdGEpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2MuZnguR2FtZUNvbmZpZy5HTV9JTkZPLmNvaW4gPSBkYXRhLnJlc3VsdC5kYXRhO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGNvaW5JbmZvID0ge1wiY29pblwiOmNjLmZ4LkdhbWVDb25maWcuR01fSU5GTy5jb2luLFwidGltZXN0YW1wXCI6dGltZXN0YW1wfTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKFwi5a2Y5YKo6YeR5biB5L+h5oGvOlwiLGNjLmZ4LkdhbWVDb25maWcuR01fSU5GTy5jb2luKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKFwiNDQ0NDQ0NDQ0NFwiKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNjLmZ4LlN0b3JhZ2VNZXNzYWdlLnNldFN0b3JhZ2UoXCJjb2luXCIsY29pbkluZm8pO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5sb2FkMyA9IHRydWU7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICB9KVxyXG4gICAgICAgICAgICAgICAgfSwgNTAwKTtcclxuXHJcbiAgICAgICAgICAgICAgICBjYy5meC5HYW1lVG9vbC5nZXRVc2VyTGV2ZWwoKGRhdGEpID0+e1xyXG4gICAgICAgICAgICAgICAgICAgIGlmKGRhdGEucmVzdWx0LmNvZGUgPT0gNDA0ICYmIGRhdGEucmVzdWx0Lm1lc3NhZ2UgPT0gXCLmnKrmib7liLDlhbPljaHmlbDmja5cIil7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKFwi5rKh5pyJ562J57qn5L+h5oGv77yM5LuO55So5oi35o6l5Y+j5ou/5Yiw5pWw5o2uXCIpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBsZXQgbGV2ZWxJbmZvID0ge1wibGV2ZWxcIjowLFwidGltZXN0YW1wXCI6dGltZXN0YW1wfTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgLy8gY29uc29sZS5sb2coXCIzMzMzMzPlrZjlgqjlhbPljaHmlbDmja46XCIsbGV2ZWxJbmZvKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgIGNjLmZ4LkdhbWVDb25maWcuR01fSU5GTy5sZXZlbCA9IDA7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNjLmZ4LlN0b3JhZ2VNZXNzYWdlLnNldFN0b3JhZ2UoXCJsZXZlbFwiLGxldmVsSW5mbyk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNjLmZ4LkdhbWVUb29sLnNldFVzZXJMZXZlbCgoZGF0YSk9PntcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKFwi5ou/5Yiw55qE5pWw5o2uXCIsZGF0YSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmxvYWQ0ID0gdHJ1ZTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgICAgICAgfSBcclxuICAgICAgICAgICAgICAgICAgICBlbHNlIGlmKGRhdGEucmVzdWx0LmNvZGUgPT0gMjAwKXtcclxuICAgICAgICAgICAgICAgICAgICAgICAgY29uc29sZS5sb2coXCLmnInnrYnnuqfkv6Hmga/vvIzku47lhbPljaHmjqXlj6Pmi7/liLDmlbDmja5cIixkYXRhLnJlc3VsdC5kYXRhKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgY2MuZnguR2FtZUNvbmZpZy5HTV9JTkZPLmxldmVsID0gZGF0YS5yZXN1bHQuZGF0YTsgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGxldCBsZXZlbEluZm8gPSB7XCJsZXZlbFwiOmNjLmZ4LkdhbWVDb25maWcuR01fSU5GTy5sZXZlbCxcInRpbWVzdGFtcFwiOnRpbWVzdGFtcH07XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIGNvbnNvbGUubG9nKFwiNDQ0NDQ05a2Y5YKo5YWz5Y2h5L+h5oGvOlwiLGxldmVsSW5mbyk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNjLmZ4LlN0b3JhZ2VNZXNzYWdlLnNldFN0b3JhZ2UoXCJsZXZlbFwiLGxldmVsSW5mbyk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMubG9hZDQgPSB0cnVlO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH0pXHJcbiAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICBjYy5meC5HYW1lVG9vbC5nZXRVc2VyUHJvcCgoZGF0YSkgPT57XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmKGRhdGEucmVzdWx0LmNvZGUgPT0gNDA0ICYmIGRhdGEucmVzdWx0Lm1lc3NhZ2UgPT0gXCLmnKrmib7liLDpgZPlhbfmlbDmja5cIil7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zb2xlLmxvZyhcIuayoeaciemBk+WFt+S/oeaBr++8jOS7jueUqOaIt+aOpeWPo+aLv+WIsOaVsOaNrlwiKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNjLmZ4LkdhbWVDb25maWcuR01fSU5GTy5mcmVlemVBbW91bnQgPSAwO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2MuZnguR2FtZUNvbmZpZy5HTV9JTkZPLmhhbW1lckFtb3VudCA9IDA7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYy5meC5HYW1lQ29uZmlnLkdNX0lORk8ubWFnaWNBbW91bnQgPSAwO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IHByb3BJbmZvID0ge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiZnJlZXplQW1vdW50XCI6MCxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcImhhbW1lckFtb3VudFwiOjAsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJtYWdpY0Ftb3VudFwiOjAsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJ0aW1lc3RhbXBcIjp0aW1lc3RhbXAsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zb2xlLmxvZyhcIuS4iuS8oOmBk+WFt+S/oeaBrzpcIixwcm9wSW5mbyk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYy5meC5TdG9yYWdlTWVzc2FnZS5zZXRTdG9yYWdlKFwicHJvcFwiLHByb3BJbmZvKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNjLmZ4LkdhbWVUb29sLnNldFVzZXJQcm9wKDAsMCwoZGF0YSk9PntcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB9IFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBlbHNlIGlmKGRhdGEucmVzdWx0LmNvZGUgPT0gMjAwKXtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKFwi5pyJ6YGT5YW35L+h5oGv77yM5LuO6YGT5YW35o6l5Y+j5ou/5Yiw5pWw5o2uXCIsZGF0YS5yZXN1bHQuZGF0YSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYy5meC5HYW1lQ29uZmlnLkdNX0lORk8uZnJlZXplQW1vdW50ID0gZGF0YS5yZXN1bHQuZGF0YS5mcmVlemUgfHwgMDtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNjLmZ4LkdhbWVDb25maWcuR01fSU5GTy5oYW1tZXJBbW91bnQgPSBkYXRhLnJlc3VsdC5kYXRhLmhhbW1lciB8fCAwO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2MuZnguR2FtZUNvbmZpZy5HTV9JTkZPLm1hZ2ljQW1vdW50ID0gZGF0YS5yZXN1bHQuZGF0YS5tYWdpY193YW5kIHx8IDA7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgcHJvcEluZm8gPSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJmcmVlemVBbW91bnRcIjpjYy5meC5HYW1lQ29uZmlnLkdNX0lORk8uZnJlZXplQW1vdW50LFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiaGFtbWVyQW1vdW50XCI6Y2MuZnguR2FtZUNvbmZpZy5HTV9JTkZPLmhhbW1lckFtb3VudCxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIm1hZ2ljQW1vdW50XCI6Y2MuZnguR2FtZUNvbmZpZy5HTV9JTkZPLm1hZ2ljQW1vdW50LFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwidGltZXN0YW1wXCI6dGltZXN0YW1wLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc29sZS5sb2coXCLkuIrkvKDpgZPlhbfkv6Hmga86XCIscHJvcEluZm8pO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2MuZnguU3RvcmFnZU1lc3NhZ2Uuc2V0U3RvcmFnZShcInByb3BcIixwcm9wSW5mbyk7XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgfSlcclxuICAgICAgICAgICAgICAgIH0sIDApO1xyXG4gICAgXHJcbiAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgfSxcclxuICAgICAgICBmYWlsOiBlcnIgPT4ge1xyXG4gICAgICAgICAgICBjb25zb2xlLmVycm9yKCfor7vlj5bnlKjmiLfmlbDmja7lpLHotKUnLCBlcnIpXHJcbiAgICAgICAgICAgIGlmIChyZXRyeUNvdW50IDwgTUFYX1JFVFJJRVMpIHtcclxuICAgICAgICAgICAgICAgICAgICBjb25zb2xlLmVycm9yKGDor7vlj5bnlKjmiLfmlbDmja7lpLHotKXvvIznrKwgJHtyZXRyeUNvdW50ICsgMX0g5qyh6YeN6K+V77yM6ZSZ6K+v5L+h5oGvOmAsIGVycik7XHJcbiAgICAgICAgICAgICAgICAgICAgLy8g5bu26L+fIDIg56eS5ZCO6YeN6K+VXHJcbiAgICAgICAgICAgICAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMucmVhZFVzZXJEYXRhKHJldHJ5Q291bnQgKyAxKTtcclxuICAgICAgICAgICAgICAgICAgICB9LCAyMDAwKTtcclxuICAgICAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgICAgY29uc29sZS5lcnJvcign6K+75Y+W55So5oi35pWw5o2u5aSx6LSl77yM6L6+5Yiw5pyA5aSn6YeN6K+V5qyh5pWw77yM6YCA5Ye65ri45oiPJywgZXJyKTtcclxuICAgICAgICAgICAgICAgICAgICAvLyDpgIDlh7rmuLjmiI9cclxuICAgICAgICAgICAgICAgICAgICBjYy5nYW1lLmVuZCgpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfSlcclxuICAgIH1cclxuXHJcbiAgICBzZXRVc2VyRGF0YSgpe1xyXG4gICAgICAgIGNjLmZ4LkdhbWVDb25maWcuR2FtZVRvb2woKGRhdGEpPT57XHJcbiAgICAgICAgICAgIGNvbnNvbGUubG9nKFwi5LiK5LygXCIsZGF0YSk7XHJcbiAgICAgICAgfSlcclxuICAgIH1cclxuXHJcbiAgICBzdGFydFRpbWVDdXREb3duKCl7XHJcbiAgICAgICAgdGhpcy5zY2hlZHVsZUNhbGxiYWNrID0gZnVuY3Rpb24oKXtcclxuICAgICAgICAgICAgaWYodGhpcy50aW1lTnVtYmVyIDw9IDApe1xyXG4gICAgICAgICAgICAgICAgdGhpcy5zdG9wVGltZUN1dERvd24oKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBlbHNle1xyXG4gICAgICAgICAgICAgICAgdGhpcy50aW1lTnVtYmVyIC09IDE7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9LmJpbmQodGhpcyk7XHJcbiAgICAgICAgdGhpcy5zY2hlZHVsZSh0aGlzLnNjaGVkdWxlQ2FsbGJhY2ssIDEpO1xyXG4gICAgfVxyXG5cclxuICAgIHN0b3BUaW1lQ3V0RG93bigpe1xyXG4gICAgICAgIGlmKHRoaXMuc2NoZWR1bGVDYWxsYmFjayl7XHJcbiAgICAgICAgICAgIHRoaXMudW5zY2hlZHVsZSh0aGlzLnNjaGVkdWxlQ2FsbGJhY2spO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICB1cGRhdGUgKGR0KSB7XHJcbiAgICAgICAgaWYodGhpcy5sb2FkMSAmJiB0aGlzLmxvYWQyICYmIHRoaXMubG9hZDMgICYmIHRoaXMubG9hZDQgJiYgdGhpcy5sb2FkNSAmJiB0aGlzLnRpbWVOdW1iZXIgPD0gMCl7XHJcbiAgICAgICAgICAgIHRoaXMubG9hZDEgPSB0aGlzLmxvYWQyID0gZmFsc2U7XHJcbiAgICAgICAgICAgIE1pbmlHYW1lU2RrLkFQSS5zaHVzaHVfSW5pdCgpO1xyXG4gICAgICAgICAgICB0aGlzLnN0YXJ0R2FtZSgpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxufVxyXG4iXX0= -======= -//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImFzc2V0c1xcU2NyaXB0XFxHYW1lTWFuYWdlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsb0JBQW9CO0FBQ3BCLHdFQUF3RTtBQUN4RSxtQkFBbUI7QUFDbkIsa0ZBQWtGO0FBQ2xGLDhCQUE4QjtBQUM5QixrRkFBa0Y7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUdsRixpREFBZ0Q7QUFFMUMsSUFBQSxLQUFzQixFQUFFLENBQUMsVUFBVSxFQUFsQyxPQUFPLGFBQUEsRUFBRSxRQUFRLGNBQWlCLENBQUM7QUFHMUM7SUFBeUMsK0JBQVk7SUFBckQ7UUFBQSxxRUF5cEJDO1FBdHBCRyxXQUFLLEdBQWEsSUFBSSxDQUFDO1FBR3ZCLFVBQUksR0FBVyxPQUFPLENBQUM7UUFJdkIsaUJBQVcsR0FBc0IsRUFBRSxDQUFDO1FBR3BDLGlCQUFXLEdBQXNCLEVBQUUsQ0FBQztRQUdwQyxpQkFBVyxHQUEyQixFQUFFLENBQUM7UUFHekMseURBQXlEO1FBQ3pELG1EQUFtRDtRQUVuRCxXQUFLLEdBQVksS0FBSyxDQUFDO1FBQ3ZCLFdBQUssR0FBWSxLQUFLLENBQUM7UUFDdkIsV0FBSyxHQUFZLEtBQUssQ0FBQztRQUN2QixXQUFLLEdBQVksS0FBSyxDQUFDO1FBQ3ZCLFdBQUssR0FBWSxLQUFLLENBQUM7O0lBK25CM0IsQ0FBQztvQkF6cEJvQixXQUFXO0lBK0I1Qix3QkFBd0I7SUFFeEIsNEJBQU0sR0FBTjtRQUFBLGlCQThFQztRQTVFRyxNQUFNLENBQUMsT0FBTyxFQUFFLENBQUM7UUFDakIsSUFBSSxDQUFDLFVBQVUsR0FBRyxDQUFDLENBQUM7UUFDcEIsSUFBSSxDQUFDLGdCQUFnQixFQUFFLENBQUM7UUFDeEIsRUFBRSxDQUFDLEVBQUUsQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQzVCLEVBQUUsQ0FBQyxFQUFFLENBQUMsVUFBVSxDQUFDLE9BQU8sQ0FBQyxTQUFTLEdBQUcsS0FBSyxD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LEdBQUcsS0FBSyxDQUFDO1lBQ2hDLHlCQUFXLENBQUMsR0FBRyxDQUFDLFdBQVcsRUFBRSxDQUFDO1lBQzlCLElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQztTQUNwQjtJQUNMLENBQUM7O0lBanBCTSxxQkFBUyxHQUFpQixJQUFJLENBQUM7SUFKdEM7UUFEQyxRQUFRLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQzs4Q0FDSTtJQUd2QjtRQURDLFFBQVE7NkNBQ2M7SUFJdkI7UUFEQyxRQUFRLENBQUMsRUFBQyxJQUFJLEVBQUUsQ0FBQyxFQUFFLENBQUMsTUFBTSxDQUFDLEVBQUUsT0FBTyxFQUFDLE1BQU0sRUFBQyxDQUFDO29EQUNWO0lBR3BDO1FBREMsUUFBUSxDQUFDLEVBQUMsSUFBSSxFQUFFLENBQUMsRUFBRSxDQUFDLE1BQU0sQ0FBQyxFQUFFLE9BQU8sRUFBQyxNQUFNLEVBQUMsQ0FBQztvREFDVjtJQUdwQztRQURDLFFBQVEsQ0FBQyxFQUFDLElBQUksRUFBRSxDQUFDLEVBQUUsQ0FBQyxXQUFXLENBQUMsRUFBRSxPQUFPLEVBQUMsTUFBTSxFQUFDLENBQUM7b0RBQ1Y7SUFoQnhCLFdBQVc7UUFEL0IsT0FBTztPQUNhLFdBQVcsQ0F5cEIvQjtJQUFELGtCQUFDO0NBenBCRCxBQXlwQkMsQ0F6cEJ3QyxFQUFFLENBQUMsU0FBUyxHQXlwQnBEO2tCQXpwQm9CLFdBQVciLCJmaWxlIjoiIiwic291cmNlUm9vdCI6Ii8iLCJzb3VyY2VzQ29udGVudCI6WyIvLyBMZWFybiBUeXBlU2NyaXB0OlxyXG4vLyAgLSBodHRwczovL2RvY3MuY29jb3MuY29tL2NyZWF0b3IvbWFudWFsL2VuL3NjcmlwdGluZy90eXBlc2NyaXB0Lmh0bWxcclxuLy8gTGVhcm4gQXR0cmlidXRlOlxyXG4vLyAgLSBodHRwczovL2RvY3MuY29jb3MuY29tL2NyZWF0b3IvbWFudWFsL2VuL3NjcmlwdGluZy9yZWZlcmVuY2UvYXR0cmlidXRlcy5odG1sXHJcbi8vIExlYXJuIGxpZmUtY3ljbGUgY2FsbGJhY2tzOlxyXG4vLyAgLSBodHRwczovL2RvY3MuY29jb3MuY29tL2NyZWF0b3IvbWFudWFsL2VuL3NjcmlwdGluZy9saWZlLWN5Y2xlLWNhbGxiYWNrcy5odG1sXHJcblxyXG5pbXBvcnQgeyBNaW5pR2FtZU1hbmFnZXIgfSBmcm9tIFwiLi9TZGsvTWluaUdhbWVNYW5hZ2VyXCI7XHJcbmltcG9ydCB7IE1pbmlHYW1lU2RrIH0gZnJvbSBcIi4vU2RrL01pbmlHYW1lU2RrXCI7XHJcblxyXG5jb25zdCB7Y2NjbGFzcywgcHJvcGVydHl9ID0gY2MuX2RlY29yYXRvcjtcclxuXHJcbkBjY2NsYXNzXHJcbmV4cG9ydCBkZWZhdWx0IGNsYXNzIEdhbWVNYW5hZ2VyIGV4dGVuZHMgY2MuQ29tcG9uZW50IHtcclxuXHJcbiAgICBAcHJvcGVydHkoY2MuTGFiZWwpXHJcbiAgICBsYWJlbDogY2MuTGFiZWwgPSBudWxsO1xyXG5cclxuICAgIEBwcm9wZXJ0eVxyXG4gICAgdGV4dDogc3RyaW5nID0gJ2hlbGxvJztcclxuICAgIHN0YXRpYyBfaW5zdGFuY2UgOiBHYW1lTWFuYWdlciA9IG51bGw7XHJcblxyXG4gICAgQHByb3BlcnR5KHt0eXBlOiBbY2MuUHJlZmFiXSwgdG9vbHRpcDpcIuaWueWdl+aVsOe7hFwifSlcclxuICAgIEJsb2NrX0FycmF5IDogQXJyYXk8Y2MuUHJlZmFiPiA9IFtdO1xyXG5cclxuICAgIEBwcm9wZXJ0eSh7dHlwZTogW2NjLlByZWZhYl0sIHRvb2x0aXA6XCLlopnlo4HmlbDnu4RcIn0pXHJcbiAgICBXYWxsX1ByZWZhYiA6IEFycmF5PGNjLlByZWZhYj4gPSBbXTtcclxuXHJcbiAgICBAcHJvcGVydHkoe3R5cGU6IFtjYy5TcHJpdGVBdGxhc10sIHRvb2x0aXA6XCLmlrnlnZfpopzoibJcIn0pXHJcbiAgICBCbG9ja19Db2xvciA6IEFycmF5PGNjLlNwcml0ZUF0bGFzPiA9IFtdO1xyXG5cclxuICAgIHBhcnRpY2xlRWZmZWN0czogY2MuUGFydGljbGVBc3NldFtdO1xyXG4gICAgLy8gQHByb3BlcnR5KHt0eXBlOiBbY2MuUGFydGljbGVTeXN0ZW1dLCB0b29sdGlwOlwi57KS5a2Q5pWw57uEXCJ9KVxyXG4gICAgLy8gcGFydGljbGVFZmZlY3RzIDogQXJyYXk8Y2MuUGFydGljbGVTeXN0ZW0+ID0gW107XHJcblxyXG4gICAgbG9hZDEgOmJvb2xlYW4gPSBmYWxzZTtcclxuICAgIGxvYWQyIDpib29sZWFuID0gZmFsc2U7XHJcbiAgICBsb2FkMyA6Ym9vbGVhbiA9IGZhbHNlO1xyXG4gICAgbG9hZDQgOmJvb2xlYW4gPSBmYWxzZTtcclxuICAgIGxvYWQ1IDpib29sZWFuID0gZmFsc2U7XHJcbiAgICBzY2hlZHVsZUNhbGxiYWNrOiBhbnk7XHJcbiAgICB0aW1lTnVtYmVyOiBudW1iZXI7XHJcblxyXG4gICAgXHJcbiAgICAvLyBMSUZFLUNZQ0xFIENBTExCQUNLUzpcclxuXHJcbiAgICBvbkxvYWQgKCkge1xyXG5cclxuICAgICAgICB3aW5kb3cuaW5pdE1ncigpO1xyXG4gICAgICAgIHRoaXMudGltZU51bWJlciA9IDM7XHJcbiAgICAgICAgdGhpcy5zdGFydFRpbWVDdXREb3duKCk7XHJcbiAgICAgICAgY2MuZnguR2FtZUNvbmZpZy5pbml0KHRydWUpO1xyXG4gICAgICAgIGNjLmZ4LkdhbWVDb25maWcuR01fSU5GTy5nYW1lU3RhdGUgPSBmYWxzZTtcclxuICAgICAgICB0aGlzLnJlYWRNdXNpY0NvbmZpZygpO1xyXG4gICAgICAgIGNvbnNvbGUubG9nKFwi6Z+z5LmQ5byA5YWzXCIsY2MuZnguR2FtZUNvbmZpZy5HTV9JTkZPLm11c2ljT3Blbik7XHJcbiAgICAgICAgY2MuZnguQXVkaW9NYW5hZ2VyLl9pbnN0YW5jZS5wbGF5TXVzaWNHYW1lKCk7XHJcblxyXG4gICAgICAgIHRoaXMubG9hZDEgPSB0aGlzLmxvYWQyID0gdGhpcy5sb2FkMyA9IHRoaXMubG9hZDQgPSB0aGlzLmxvYWQ1ID1mYWxzZTtcclxuICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgICAgICAgdGhpcy5yZWFkVXNlckRhdGEoKTtcclxuICAgICAgICB9LCAyMDApO1xyXG4gXHJcblxyXG4gICAgICAgIGlmIChHYW1lTWFuYWdlci5faW5zdGFuY2UgPT0gbnVsbCkge1xyXG4gICAgICAgICAgICBHYW1lTWFuYWdlci5faW5zdGFuY2UgPSB0aGlzO1xyXG4gICAgICAgICAgICBjYy5nYW1lLmFkZFBlcnNpc3RSb290Tm9kZSh0aGlzLm5vZGUpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgY29uc3QgcGF0aCA9ICdwcmVmYWIvYmxvY2snO1xyXG4gICAgICAgIGNvbnN0IHBhdGgyID0gJ3ByZWZhYi93YWxsJztcclxuICAgICAgICBjYy5yZXNvdXJjZXMubG9hZERpcihwYXRoLCBjYy5QcmVmYWIsIChlcnIsIGFzc2V0czogY2MuUHJlZmFiW10pID0+IHtcclxuICAgICAgICAgICAgaWYgKGVycikge1xyXG4gICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoJ+WKqOaAgeWKoOi9vSBQcmVmYWIg5aSx6LSlOicsIGVycik7XHJcbiAgICAgICAgICAgICAgICBjYy5kaXJlY3Rvci5sb2FkU2NlbmUoXCJMb2FkU2NlbmVcIik7XHJcbiAgICAgICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgLy8g5bCG5Yqg6L2955qEIFByZWZhYiDotYvlgLznu5kgQmxvY2tfQXJyYXlcclxuICAgICAgICAgICAgdGhpcy5CbG9ja19BcnJheSA9IGFzc2V0cztcclxuICAgICAgICAgICAgY29uc29sZS5sb2coJ+aWueWdl+WKoOi9veaIkOWKn++8jOWFseWKoOi9veS6hicsIHRoaXMuQmxvY2tfQXJyYXkubGVuZ3RoLCAn5Liq5pa55Z2XJyk7XHJcbiAgICAgICAgICAgIHRoaXMuc2V0U29ydCgpO1xyXG4gICAgICAgICAgICB0aGlzLmxvYWQxID0gdHJ1ZTtcclxuICAgICAgICB9KTtcclxuXHJcbiAgICAgICAgY2MucmVzb3VyY2VzLmxvYWREaXIocGF0aDIsIGNjLlByZWZhYiwgKGVyciwgYXNzZXRzOiBjYy5QcmVmYWJbXSkgPT4ge1xyXG4gICAgICAgICAgICBpZiAoZXJyKSB7XHJcbiAgICAgICAgICAgICAgICBjb25zb2xlLmVycm9yKCfliqjmgIHliqDovb0gUHJlZmFiIOWksei0pTonLCBlcnIpO1xyXG4gICAgICAgICAgICAgICAgY2MuZGlyZWN0b3IubG9hZFNjZW5lKFwiTG9hZFNjZW5lXCIpO1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIC8vIOWwhuWKoOi9veeahCBQcmVmYWIg6LWL5YC857uZIEJsb2NrX0FycmF5XHJcbiAgICAgICAgICAgIHRoaXMuV2FsbF9QcmVmYWIgPSBhc3NldHM7XHJcbiAgICAgICAgICAgIHRoaXMubG9hZDIgPSB0cnVlO1xyXG4gICAgICAgICAgICBjb25zb2xlLmxvZygn5aKZ5Yqg6L295oiQ5Yqf77yM5YWx5Yqg6L295LqGJywgdGhpcy5XYWxsX1ByZWZhYi5sZW5ndGgsICfkuKrlopknKTtcclxuICAgICAgICAgICAgdGhpcy5zZXRXYWxsUHJlZmFiU29ydCgpO1xyXG4gICAgICAgIH0pO1xyXG5cclxuICAgICAgICAvLyBkZWJ1Z2dlcjtcclxuXHJcbiAgICAgICAgLy8gc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgICAgLy8gICAgIGNjLmRpcmVjdG9yLnByZWxvYWRTY2VuZShcIkhvbWVTY2VuZVwiLCAoZXJyKSA9PiB7XHJcbiAgICAgICAgLy8gICAgICAgICBpZiAoZXJyKSB7XHJcbiAgICAgICAgLy8gICAgICAgICAgICAgY29uc29sZS5lcnJvcign6aKE5Yqg6L29IEhvbWVTY2VuZSDlnLrmma/lpLHotKU6JywgZXJyKTtcclxuICAgICAgICAvLyAgICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgLy8gICAgICAgICB9XHJcbiAgICAgICAgLy8gICAgIH0pO1xyXG4gICAgICAgIC8vIH0sIDEwMDApO1xyXG5cclxuICAgICAgICAgICAgICAgIC8vIOajgOa1i+W+ruS/oeWwj+a4uOaIj+WIh+WIsOWQjuWPsFxyXG4gICAgICAgIGlmIChjYy5zeXMucGxhdGZvcm0gPT09IGNjLnN5cy5XRUNIQVRfR0FNRSkge1xyXG4gICAgICAgICAgICAvL0B0cy1pZ25vcmVcclxuICAgICAgICAgICAgd3gub25IaWRlKCgpID0+IHtcclxuICAgICAgICAgICAgICAgIHRoaXMub25IaWRlKCk7XHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICAvLyDmo4DmtYvlvq7kv6HlsI/muLjmiI/lm57liLDliY3lj7BcclxuICAgICAgICAgICAgLy9AdHMtaWdub3JlXHJcbiAgICAgICAgICAgIHd4Lm9uU2hvdygoKSA9PiB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLm9uU2hvdygpO1xyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICB9XHJcblxyXG4gICAgfVxyXG5cclxuICAgIG9uSGlkZSAoKSB7XHJcbiAgICAgICAgY2MuYXVkaW9FbmdpbmUuc3RvcE11c2ljKCk7XHJcbiAgICAgICAgY2MuZ2FtZS5wYXVzZSgpO1xyXG4gICAgfVxyXG5cclxuICAgIG9uU2hvdyAoKSB7XHJcbiAgICAgICAgY2MuYXVkaW9FbmdpbmUucmVzdW1lTXVzaWMoKTtcclxuICAgICAgICBjYy5nYW1lLnJlc3VtZSgpO1xyXG4gICAgfVxyXG5cclxuICAgIGxvYWRQYXJ0aWNsZUVmZmVjdHMoKSB7XHJcbiAgICB9XHJcblxyXG5cclxuICAgIFxyXG5cclxuICAgIHNldFdhbGxQcmVmYWJTb3J0KCkge1xyXG4gICAgICAgIGNvbnN0IG9yZGVyID0gWydkb3duJywgJ2Rvd25MZWZ0JywgJ2Rvd25SaWdodCcsICdsZWZ0JywncmlnaHQnLCd1cCcsJ3VwTGVmdCcsJ3VwUmlnaHQnXTtcclxuICAgICAgICB0aGlzLldhbGxfUHJlZmFiLnNvcnQoKGEsIGIpID0+IHtcclxuICAgICAgICAgICAgY29uc3QgaW5kZXhBID0gb3JkZXIuaW5kZXhPZihhLm5hbWUpO1xyXG4gICAgICAgICAgICBjb25zdCBpbmRleEIgPSBvcmRlci5pbmRleE9mKGIubmFtZSk7XHJcbiAgICAgICAgICAgIGlmIChpbmRleEEgPT09IC0xKSByZXR1cm4gMTtcclxuICAgICAgICAgICAgaWYgKGluZGV4QiA9PT0gLTEpIHJldHVybiAtMTtcclxuICAgICAgICAgICAgcmV0dXJuIGluZGV4QSAtIGluZGV4QjtcclxuICAgICAgICB9KTtcclxuICAgICAgICBcclxuICAgIH1cclxuXHJcbiAgICBzZXRQYXJ0aWNsZVNvcnQoKSB7XHJcbiAgICAgICAgY29uc3Qgb3JkZXIgPSBbJ3RvcCcsICdib3QnLCAncmlnJywgJ2xlZiddO1xyXG4gICAgICAgIHRoaXMucGFydGljbGVFZmZlY3RzLnNvcnQoKGEsIGIpID0+IHtcclxuICAgICAgICAgICAgY29uc3QgaW5kZXhBID0gb3JkZXIuaW5kZXhPZihhLm5hbWUuc3Vic3RyKDAsMykpO1xyXG4gICAgICAgICAgICBjb25zdCBpbmRleEIgPSBvcmRlci5pbmRleE9mKGIubmFtZS5zdWJzdHIoMCwzKSk7XHJcbiAgICAgICAgICAgIGlmIChpbmRleEEgPT09IC0xKSByZXR1cm4gMTtcclxuICAgICAgICAgICAgaWYgKGluZGV4QiA9PT0gLTEpIHJldHVybiAtMTtcclxuICAgICAgICAgICAgcmV0dXJuIGluZGV4QSAtIGluZGV4QjtcclxuICAgICAgICB9KTtcclxuICAgIH1cclxuXHJcbiAgICBzZXRTb3J0KCl7XHJcbiAgICAgICAgdGhpcy5CbG9ja19BcnJheS5zb3J0KChhLCBiKSA9PiB7XHJcbiAgICAgICAgICAgIC8vIOS7juWQjeensOS4reaPkOWPluaVsOWtl+mDqOWIhlxyXG4gICAgICAgICAgICBjb25zdCBudW1iZXJBID0gcGFyc2VJbnQoYS5uYW1lLm1hdGNoKC9cXGQrLyk/LlswXSB8fCAnMCcsIDEwKTtcclxuICAgICAgICAgICAgY29uc3QgbnVtYmVyQiA9IHBhcnNlSW50KGIubmFtZS5tYXRjaCgvXFxkKy8pPy5bMF0gfHwgJzAnLCAxMCk7XHJcbiAgICAgICAgICAgIHJldHVybiBudW1iZXJBIC0gbnVtYmVyQjtcclxuICAgICAgICB9KTtcclxuICAgIH1cclxuXHJcbiAgICBzdGFydCAoKSB7XHJcblxyXG4gICAgfVxyXG5cclxuICAgIHN0YXJ0R2FtZSgpe1xyXG4gICAgICAgIGNvbnNvbGUubG9nKFwi6L+b5YWl5Zy65pmv5LmL5YmNX19fX19fX19fX19fX1wiLGNjLmZ4LkdhbWVDb25maWcuR01fSU5GTy5maXJzdCk7XHJcbiAgICAgICAgY2MuZGlyZWN0b3IubG9hZFNjZW5lKFwiSG9tZVNjZW5lXCIpO1xyXG4gICAgfVxyXG5cclxuICAgIHJldHVybkhvbWUoKXtcclxuICAgICAgICBjYy50d2Vlbih0aGlzLm5vZGUuZ2V0Q2hpbGRCeU5hbWUoXCJHYW1lXCIpKVxyXG4gICAgICAgICAgICAudG8oMC41LCB7b3BhY2l0eTogMTAwfSlcclxuICAgICAgICAgICAgLmNhbGwoKCkgPT4ge1xyXG4gICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgLy8g6aKE5Yqg6L295oiQ5Yqf5ZCO5Yqg6L295Zy65pmvXHJcbiAgICAgICAgICAgICAgICBjYy5kaXJlY3Rvci5sb2FkU2NlbmUoXCJIb21lU2NlbmVcIiwgKGVycikgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgIGlmIChlcnIpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgY29uc29sZS5lcnJvcign5Yqg6L29IEhvbWVTY2VuZSDlnLrmma/lpLHotKU6JywgZXJyKTtcclxuICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBjYy5kaXJlY3Rvci5sb2FkU2NlbmUoXCJIb21lU2NlbmVcIik7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgIH0pXHJcbiAgICAgICAgICAgIC5zdGFydCgpO1xyXG5cclxuICAgICAgICAgICAgY2MudHdlZW4odGhpcy5ub2RlLmdldENoaWxkQnlOYW1lKFwibWFza1wiKSlcclxuICAgICAgICAgICAgLnRvKDAuNSx7b3BhY2l0eTogMjU1fSlcclxuICAgICAgICAgICAgLnN0YXJ0KCk7XHJcblxyXG4gICAgICAgIC8vIGNjLmxvYWRlci5yZWxlYXNlQWxsKCk7XHJcbiAgICAgICAgLy8g6aKE5Yqg6L29IEhvbWVTY2VuZSDlnLrmma9cclxuXHJcbiAgIFxyXG4gICAgfVxyXG5cclxuXHJcbiAgICByZWFkVXNlckRhdGEocmV0cnlDb3VudCA9IDApe1xyXG4gICAgICAgIC8vQHRzLWlnbm9yZVxyXG4gICAgICAgICBpZiAodHlwZW9mIHd4ICE9PSAndW5kZWZpbmVkJyAmJiB3eCAhPT0gbnVsbCkgeyBcclxuICAgICAgICAgICAgICAgIGxldCBsZXZlbEluZm8gPSBjYy5meC5TdG9yYWdlTWVzc2FnZS5nZXRTdG9yYWdlKFwibGV2ZWxcIik7XHJcbiAgICAgICAgICAgICAgICAvL+aXp+eahOivu+WPluaVsOaNruiuvue9ruaVsOaNruaWueazlSzku6XlvLrogZTnvZHkuLrkuLtcclxuICAgICAgICAgICAgICAgIGlmKGxldmVsSW5mbyA9PSB1bmRlZmluZWQgfHwgbGV2ZWxJbmZvID09IFwiXCIgfHwgbGV2ZWxJbmZvID09IG51bGwpe1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMub2xkUmVhZERhdGEocmV0cnlDb3VudCk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAvL+aWsOeahOivu+WPluaVsOaNruiuvue9ruaWueazle+8jOS7peacrOWcsOS4uuS4u1xyXG4gICAgICAgICAgICAgICAgZWxzZXtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLm5ld1JlYWREYXRhKCk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBjb25zb2xlLmxvZyhcIuWNs+Wwhuivu+WPluS9k+WKm+WAvFwiKTtcclxuICAgICAgICAgICAgICAgIGNjLmZ4LkdhbWVUb29sLmdldEhlYWx0aCgoZGF0YSk9PntcclxuICAgICAgICAgICAgICAgICAgICBjb25zb2xlLmxvZyhcIuS9k+WKm+WAvOWujOaIkOi/m+WFpea4uOaIj1wiKTtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLmxvYWQ1ID0gdHJ1ZTtcclxuICAgICAgICAgICAgICAgIH0pO1xyXG5cclxuICAgICAgICAgfVxyXG4gICAgICAgICBlbHNle1xyXG4gICAgICAgICAgICB0aGlzLmxvYWQzID0gdHJ1ZTtcclxuICAgICAgICAgICAgdGhpcy5sb2FkNCA9IHRydWU7XHJcbiAgICAgICAgICAgIHRoaXMubG9hZDUgPSB0cnVlO1xyXG4gICAgICAgICAgICBjYy5meC5HYW1lVG9vbC5nZXRIZWFsdGgobnVsbCk7XHJcbiAgICAgICAgIH1cclxuICAgICAgICAvLyDlrZjlgqjnlKjmiLfmlbDmja5cclxuICAgIH1cclxuXHJcbiAgICByZWFkTXVzaWNDb25maWcoKXtcclxuICAgICAgICBsZXQgYXVkaW9JbmZvID0gY2MuZnguU3RvcmFnZU1lc3NhZ2UuZ2V0U3RvcmFnZShcIm11c2ljXCIpO1xyXG4gICAgICAgIGlmKGF1ZGlvSW5mbyA9PSB1bmRlZmluZWQgfHwgYXVkaW9JbmZvID09IFwiXCIgfHwgYXVkaW9JbmZvID09IG51bGwpe1xyXG4gICAgICAgICAgICBhdWRpb0luZm8gPSB7XHJcbiAgICAgICAgICAgICAgICBcIm11c2ljT3BlblwiOiB0cnVlLCAgICAgICAgICAgICAvL+mfs+S5kFxyXG4gICAgICAgICAgICAgICAgXCJlZmZlY3RPcGVuXCI6IHRydWUsICAgICAgICAgICAgLy/pn7PmlYhcclxuICAgICAgICAgICAgICAgIFwidmlicmF0ZU9wZW5cIjogdHJ1ZSwgICAgICAgICAgIC8v6ZyH5YqoXHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgY2MuZnguU3RvcmFnZU1lc3NhZ2Uuc2V0U3RvcmFnZShcIm11c2ljXCIsYXVkaW9JbmZvKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZXtcclxuICAgICAgICAgICAgY2MuZnguR2FtZUNvbmZpZy5HTV9JTkZPLm11c2ljT3BlbiA9IGF1ZGlvSW5mby5tdXNpY09wZW47XHJcbiAgICAgICAgICAgIGNjLmZ4LkdhbWVDb25maWcuR01fSU5GTy5lZmZlY3RPcGVuID0gYXVkaW9JbmZvLmVmZmVjdE9wZW47XHJcbiAgICAgICAgICAgIGNjLmZ4LkdhbWVDb25maWcuR01fSU5GTy52aWJyYXRlT3BlbiA9IGF1ZGlvSW5mby52aWJyYXRlT3BlbjtcclxuICAgICAgICB9XHJcbiAgICB9XHJcbiAgICBcclxuICAgIC8v5paw55So5oi377yM5pyJ5pys5Zyw57yT5a2Y6K+75Y+W6YWN572uXHJcbiAgICBuZXdSZWFkRGF0YSgpe1xyXG4gICAgICAgIGNvbnNvbGUubG9nKFwi6K+75Y+W5paw5L+h5oGvXCIpO1xyXG4gICAgICAgIGxldCBvcGVuaWQgPSBjYy5meC5TdG9yYWdlTWVzc2FnZS5nZXRTdG9yYWdlKFwib3BlbmlkXCIpO1xyXG4gICAgICAgIGlmKG9wZW5pZCA9PSBudWxsIHx8IG9wZW5pZCA9PSBcIlwiIHx8IG9wZW5pZCA9PSB1bmRlZmluZWQpe1xyXG4gICAgICAgICAgICBjb25zb2xlLmxvZyhcIuayoeaciW9wZW5pZFwiKTtcclxuICAgICAgICAgICAgLy9AdHMtaWdub3JlXHJcbiAgICAgICAgICAgIHd4LmNsb3VkLmNhbGxGdW5jdGlvbih7XHJcbiAgICAgICAgICAgIG5hbWU6ICd1c2VyRGF0YScsXHJcbiAgICAgICAgICAgICAgICBkYXRhOiB7XHJcbiAgICAgICAgICAgICAgICAgICAgYWN0aW9uOiAncmVhZCdcclxuICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgICBzdWNjZXNzOiByZXMgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKCfor7vlj5bnlKjmiLfmlbDmja7miJDlip8nLCByZXMucmVzdWx0KVxyXG4gICAgICAgICAgICAgICAgICAgIGlmKHJlcy5yZXN1bHQuY29kZSA9PSA0MDQgJiYgcmVzLnJlc3VsdC5tZXNzYWdlID09IFwi5pyq5om+5Yiw55So5oi35pWw5o2uXCIpe1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICBlbHNlIGlmKHJlcy5yZXN1bHQuY29kZSA9PSAyMDApe1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBpZihyZXMucmVzdWx0LmRhdGEpe1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2MuZnguR2FtZUNvbmZpZy5HTV9JTkZPLm9wZW5pZCA9IHJlcy5yZXN1bHQub3BlbmlkO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2MuZnguR2FtZUNvbmZpZy5HTV9JTkZPLnVzZXJuYW1lID0gcmVzLnJlc3VsdC5kYXRhLnVzZXJuYW1lO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2MuZnguR2FtZUNvbmZpZy5HTV9JTkZPLnVzZXJhdmF0YXIgPSByZXMucmVzdWx0LmRhdGEudXNlcmF2YXRhcjtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHJlZ2lzdGVyX3RpbWUgPSByZXMucmVzdWx0LmRhdGEucmVnaXN0ZXJfdGltZTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1pbmlHYW1lU2RrLkFQSS5zaHVzaHVfdXNlclNldChyZWdpc3Rlcl90aW1lKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNjLmZ4LlN0b3JhZ2VNZXNzYWdlLnNldFN0b3JhZ2UoXCJvcGVuaWRcIixjYy5meC5HYW1lQ29uZmlnLkdNX0lORk8ub3BlbmlkKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgICBmYWlsOiBlcnIgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoJ+ivu+WPlueUqOaIt+aVsOaNruWksei0pScsIGVycilcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfSlcclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZXtcclxuICAgICAgICAgICAgaWYob3BlbmlkKVxyXG4gICAgICAgICAgICAgICAgY2MuZnguR2FtZUNvbmZpZy5HTV9JTkZPLm9wZW5pZCA9IG9wZW5pZDtcclxuICAgICAgICB9XHJcbiAgIFxyXG5cclxuXHJcbiAgICAgICAgLy/nrYnnuqfkv6Hmga9cclxuICAgICAgICBjYy5meC5HYW1lVG9vbC5nZXRVc2VyTGV2ZWwoKGRhdGEpID0+e1xyXG4gICAgICAgICAgICBjb25zdCB0aW1lc3RhbXAgPSBEYXRlLm5vdygpO1xyXG4gICAgICAgICAgICBsZXQgbGV2ZWxJbmZvID0gY2MuZnguU3RvcmFnZU1lc3NhZ2UuZ2V0U3RvcmFnZShcImxldmVsXCIpO1xyXG4gICAgICAgICAgICBpZihkYXRhLnJlc3VsdC5jb2RlID09IDQwNCAmJiBkYXRhLnJlc3VsdC5tZXNzYWdlID09IFwi5pyq5om+5Yiw5YWz5Y2h5pWw5o2uXCIpe1xyXG4gICAgICAgICAgICAgICAgLy8gY29uc29sZS5sb2coXCLmsqHmnInnrYnnuqfkv6Hmga/vvIzku47nlKjmiLfmjqXlj6Pmi7/liLDmlbDmja5cIik7XHJcbiAgICAgICAgICAgICAgICBpZihsZXZlbEluZm8ubGV2ZWwpe1xyXG4gICAgICAgICAgICAgICAgICAgIGNjLmZ4LkdhbWVDb25maWcuR01fSU5GTy5sZXZlbCA9IGxldmVsSW5mby5sZXZlbDtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIHRoaXMubG9hZDQgPSB0cnVlO1xyXG4gICAgICAgICAgICAgICAgY2MuZnguR2FtZVRvb2wuc2V0VXNlckxldmVsKChkYXRhKT0+e1xyXG4gICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgIH0gXHJcbiAgICAgICAgICAgIGVsc2UgaWYoZGF0YS5yZXN1bHQuY29kZSA9PSAyMDApe1xyXG4gICAgICAgICAgICAgICAgLy8gY29uc29sZS5sb2coXCLmnInnrYnnuqfkv6Hmga/vvIzku47lhbPljaHmjqXlj6Pmi7/liLDmlbDmja5cIixkYXRhLnJlc3VsdC5kYXRhKTtcclxuICAgICAgICAgICAgICAgIC8v5ri45oiP5YmN56uv5a2Y5YKoIOaWsOS6juacjeWKoeWZqOerryzku6XmuLjmiI/liY3nq6/kv6Hmga/kuLrkuLvvvIzmlL7mnI3liqHlmajlrZjlgqhcclxuICAgICAgICAgICAgICAgIGxldCB0ZW1wID0gZGF0YS5yZXN1bHQudGltZXN0YW1wIC0gbGV2ZWxJbmZvLnRpbWVzdGFtcDtcclxuICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKFwi562J57qn5pe26Ze05beuOlwiLHRlbXApO1xyXG4gICAgICAgICAgICAgICAgaWYoKGRhdGEucmVzdWx0LnRpbWVzdGFtcCAtIGxldmVsSW5mby50aW1lc3RhbXApIDwgMTAwMDApe1xyXG4gICAgICAgICAgICAgICAgICAgIGlmKGxldmVsSW5mby5sZXZlbCl7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKFwi5Lul5ri45oiP5YmN56uv562J57qn5Li65YeGXCIsZGF0YS5yZXN1bHQuZGF0YSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNjLmZ4LkdhbWVDb25maWcuR01fSU5GTy5sZXZlbCA9IGxldmVsSW5mby5sZXZlbDtcclxuICAgICAgICAgICAgICAgICAgICAgICAgLy8gY29uc29sZS5sb2coXCLnrYnnuqfkuLo6XCIsY2MuZnguR2FtZUNvbmZpZy5HTV9JTkZPLmxldmVsKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgY2MuZnguR2FtZVRvb2wuc2V0VXNlckxldmVsKChkYXRhKT0+e1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgLy/mnI3liqHlmajnq6/lrZjlgqjml7bpl7TmlrDkuo7muLjmiI/nq6/vvIzku6XmnI3liqHlmajnq6/kuLrkuLss5b6A5YmN56uv5a2Y5YKoXHJcbiAgICAgICAgICAgICAgICBlbHNle1xyXG4gICAgICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKFwi5Lul5pyN5Yqh5Zmo562J57qn5Li65YeGXCIsZGF0YS5yZXN1bHQuZGF0YSk7XHJcbiAgICAgICAgICAgICAgICAgICAgY2MuZnguR2FtZUNvbmZpZy5HTV9JTkZPLmxldmVsID0gZGF0YS5yZXN1bHQuZGF0YTsgXHJcbiAgICAgICAgICAgICAgICAgICAgbGV2ZWxJbmZvLmxldmVsID0gY2MuZnguR2FtZUNvbmZpZy5HTV9JTkZPLmxldmVsO1xyXG4gICAgICAgICAgICAgICAgICAgIGxldmVsSW5mby50aW1lc3RhbXAgPSB0aW1lc3RhbXA7XHJcbiAgICAgICAgICAgICAgICAgICAgLy8gY29uc29sZS5sb2coXCIxMTExMTEx5a2Y5YKo5YWz5Y2h5pWw5o2uOlwiLGNjLmZ4LkdhbWVDb25maWcuR01fSU5GTy5sZXZlbCk7XHJcbiAgICAgICAgICAgICAgICAgICAgY2MuZnguU3RvcmFnZU1lc3NhZ2Uuc2V0U3RvcmFnZShcImxldmVsXCIsbGV2ZWxJbmZvKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIHRoaXMubG9hZDQgPSB0cnVlO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfSk7XHJcbiAgICAgICAgLy/ph5HluIHkv6Hmga9cclxuICAgICAgICBjYy5meC5HYW1lVG9vbC5nZXRVc2VyQ29pbigoZGF0YSkgPT57XHJcbiAgICAgICAgICAgIGNvbnN0IHRpbWVzdGFtcCA9IERhdGUubm93KCk7XHJcbiAgICAgICAgICAgIGxldCBjb2luSW5mbyA9IGNjLmZ4LlN0b3JhZ2VNZXNzYWdlLmdldFN0b3JhZ2UoXCJjb2luXCIpO1xyXG4gICAgICAgICAgICBpZihkYXRhLnJlc3VsdC5jb2RlID09IDQwNCAmJiBkYXRhLnJlc3VsdC5tZXNzYWdlID09IFwi5pyq5om+5Yiw6YeR5biB5pWw5o2uXCIpe1xyXG4gICAgICAgICAgICAgICAgaWYoY29pbkluZm8uY29pbilcclxuICAgICAgICAgICAgICAgICAgICBjYy5meC5HYW1lQ29uZmlnLkdNX0lORk8uY29pbiA9IGNvaW5JbmZvLmNvaW47XHJcbiAgICAgICAgICAgICAgICBjb25zb2xlLmxvZyhcIuayoeaciemHkeW4geS/oeaBr++8jOS7jueUqOaIt+aOpeWPo+aLv+WIsOaVsOaNrlwiLGNjLmZ4LkdhbWVDb25maWcuR01fSU5GTy5jb2luKTtcclxuICAgICAgICAgICAgICAgIHRoaXMubG9hZDMgPSB0cnVlO1xyXG4gICAgICAgICAgICAgICAgY2MuZnguR2FtZVRvb2wuc2V0VXNlckNvaW4oKGRhdGEpPT57XHJcbiAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgfSBcclxuICAgICAgICAgICAgZWxzZSBpZihkYXRhLnJlc3VsdC5jb2RlID09IDIwMCl7XHJcbiAgICAgICAgICAgICAgICAvLyBjb25zb2xlLmxvZyhcIuaciemHkeW4geS/oeaBr++8jOS7jumHkeW4geaOpeWPo+aLv+WIsOaVsOaNrlwiLGRhdGEucmVzdWx0LmRhdGEpO1xyXG4gICAgICAgICAgICAgICAgLy/muLjmiI/liY3nq6/lrZjlgqgg5paw5LqO5pyN5Yqh5Zmo56uvLOS7pea4uOaIj+WJjeerr+S/oeaBr+S4uuS4u++8jOaUvuacjeWKoeWZqOWtmOWCqFxyXG4gICAgICAgICAgICAgICAgbGV0IHRlbXAgPSBkYXRhLnJlc3VsdC50aW1lc3RhbXAgLSBjb2luSW5mby50aW1lc3RhbXA7XHJcbiAgICAgICAgICAgICAgICBjb25zb2xlLmxvZyhcIumHkeW4geaXtumXtOW3rjpcIix0ZW1wKTtcclxuICAgICAgICAgICAgICAgIGlmKChkYXRhLnJlc3VsdC50aW1lc3RhbXAgLSBjb2luSW5mby50aW1lc3RhbXApIDwgMTAwMDApe1xyXG4gICAgICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKFwi5Lul5YmN56uv6YeR5bmj5Li65YeGOlwiLGNvaW5JbmZvKTtcclxuICAgICAgICAgICAgICAgICAgICBpZihjb2luSW5mby5jb2luKVxyXG4gICAgICAgICAgICAgICAgICAgICAgICBjYy5meC5HYW1lQ29uZmlnLkdNX0lORk8uY29pbiA9IGNvaW5JbmZvLmNvaW47XHJcbiAgICAgICAgICAgICAgICAgICAgZWxzZXtcclxuICAgICAgICAgICAgICAgICAgICAgICAgY2MuZnguR2FtZUNvbmZpZy5HTV9JTkZPLmNvaW4gPSBkYXRhLnJlc3VsdC5kYXRhO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBjb2luSW5mby5jb2luID0gY2MuZnguR2FtZUNvbmZpZy5HTV9JTkZPLmNvaW47XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvaW5JbmZvLnRpbWVzdGFtcCA9IHRpbWVzdGFtcDtcclxuICAgICAgICAgICAgICAgICAgICAgICAgY29uc29sZS5sb2coXCIxMTExMTExMTExMVwiKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgY2MuZnguU3RvcmFnZU1lc3NhZ2Uuc2V0U3RvcmFnZShcImNvaW5cIixjb2luSW5mbyk7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKFwi5pS55Y+Y5ZCO6YeR5biBOlwiLGNjLmZ4LkdhbWVDb25maWcuR01fSU5GTy5jb2luKTtcclxuICAgICAgICAgICAgICAgICAgICBjYy5meC5HYW1lVG9vbC5zZXRVc2VyQ29pbigoZGF0YSk9PntcclxuICAgICAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIC8v5pyN5Yqh5Zmo56uv5a2Y5YKo5pe26Ze05paw5LqO5ri45oiP56uv77yM5Lul5pyN5Yqh5Zmo56uv5Li65Li7LOW+gOWJjeerr+WtmOWCqFxyXG4gICAgICAgICAgICAgICAgZWxzZXtcclxuICAgICAgICAgICAgICAgICAgICBjb25zb2xlLmxvZyhcIuS7peacjeWKoeWZqOmHkeW5o+S4uuWHhjpcIixkYXRhLnJlc3VsdC5kYXRhKTtcclxuICAgICAgICAgICAgICAgICAgICBjYy5meC5HYW1lQ29uZmlnLkdNX0lORk8uY29pbiA9IGRhdGEucmVzdWx0LmRhdGE7IFxyXG4gICAgICAgICAgICAgICAgICAgIGNvaW5JbmZvLmNvaW4gPSBjYy5meC5HYW1lQ29uZmlnLkdNX0lORk8uY29pbjtcclxuICAgICAgICAgICAgICAgICAgICBjb2luSW5mby50aW1lc3RhbXAgPSB0aW1lc3RhbXA7XHJcbiAgICAgICAgICAgICAgICAgICAgY29uc29sZS5sb2coXCIyMjIyMjIyMjIyXCIpO1xyXG4gICAgICAgICAgICAgICAgICAgIGNjLmZ4LlN0b3JhZ2VNZXNzYWdlLnNldFN0b3JhZ2UoXCJjb2luXCIsY29pbkluZm8pO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgdGhpcy5sb2FkMyA9IHRydWU7XHJcbiAgICAgICAgICAgIH0gXHJcbiAgICAgICAgfSk7XHJcbiAgICAgICAgLy/pgZPlhbfkv6Hmga9cclxuICAgICAgICBjYy5meC5HYW1lVG9vbC5nZXRVc2VyUHJvcCgoZGF0YSkgPT57XHJcbiAgICAgICAgICAgIGNvbnN0IHRpbWVzdGFtcCA9IERhdGUubm93KCk7XHJcbiAgICAgICAgICAgIGxldCBwcm9wSW5mbyA9IGNjLmZ4LlN0b3JhZ2VNZXNzYWdlLmdldFN0b3JhZ2UoXCJwcm9wXCIpO1xyXG4gICAgICAgICAgICBpZihkYXRhLnJlc3VsdC5jb2RlID09IDQwNCAmJiBkYXRhLnJlc3VsdC5tZXNzYWdlID09IFwi5pyq5om+5Yiw6YGT5YW35pWw5o2uXCIpe1xyXG4gICAgICAgICAgICAgICAgY29uc29sZS5sb2coXCLmsqHmnInpgZPlhbfkv6Hmga/vvIzku47nlKjmiLfmjqXlj6Pmi7/liLDmlbDmja5cIixwcm9wSW5mbyk7XHJcbiAgICAgICAgICAgICAgICBpZihwcm9wSW5mby5mcmVlemVBbW91bnQgPT0gdW5kZWZpbmVkIHx8IHByb3BJbmZvLmhhbW1lckFtb3VudCA9PSB1bmRlZmluZWQgfHwgcHJvcEluZm8ubWFnaWNBbW91bnQgPT0gdW5kZWZpbmVkKXtcclxuICAgICAgICAgICAgICAgICAgICAgICAgY29uc29sZS5sb2coXCIyMjIyMjIy6YGT5YW35pWw5o2u5byC5bi4XCIpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBjYy5meC5HYW1lQ29uZmlnLkdNX0lORk8uZnJlZXplQW1vdW50ID0gMDtcclxuICAgICAgICAgICAgICAgICAgICAgICAgY2MuZnguR2FtZUNvbmZpZy5HTV9JTkZPLmhhbW1lckFtb3VudCA9IDA7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNjLmZ4LkdhbWVDb25maWcuR01fSU5GTy5tYWdpY0Ftb3VuID0gMDtcclxuICAgICAgICAgICAgICAgICAgICAgICAgbGV0IHByb3BJbmZvTmV3ID0ge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJmcmVlemVBbW91bnRcIjpjYy5meC5HYW1lQ29uZmlnLkdNX0lORk8uZnJlZXplQW1vdW50LFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJoYW1tZXJBbW91bnRcIjpjYy5meC5HYW1lQ29uZmlnLkdNX0lORk8uaGFtbWVyQW1vdW50LFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJtYWdpY0Ftb3VudFwiOmNjLmZ4LkdhbWVDb25maWcuR01fSU5GTy5tYWdpY0Ftb3VuLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJ0aW1lc3RhbXBcIjp0aW1lc3RhbXBcclxuICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zb2xlLmxvZyhcIjExMTExMTHkuIrkvKDpgZPlhbfkv6Hmga86XCIscHJvcEluZm9OZXcpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBjYy5meC5TdG9yYWdlTWVzc2FnZS5zZXRTdG9yYWdlKFwicHJvcFwiLHByb3BJbmZvTmV3KTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIGVsc2V7XHJcbiAgICAgICAgICAgICAgICAgICAgY2MuZnguR2FtZUNvbmZpZy5HTV9JTkZPLmZyZWV6ZUFtb3VudCA9IGRhdGEucmVzdWx0LmRhdGEuZnJlZXplO1xyXG4gICAgICAgICAgICAgICAgICAgIGNjLmZ4LkdhbWVDb25maWcuR01fSU5GTy5oYW1tZXJBbW91bnQgPSBkYXRhLnJlc3VsdC5kYXRhLmhhbW1lcjtcclxuICAgICAgICAgICAgICAgICAgICBjYy5meC5HYW1lQ29uZmlnLkdNX0lORk8ubWFnaWNBbW91bnQgPSBkYXRhLnJlc3VsdC5kYXRhLm1hZ2ljX3dhbmQ7XHJcbiAgICAgICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICBjYy5meC5HYW1lQ29uZmlnLkdNX0lORk8uZnJlZXplQW1vdW50ID0gcHJvcEluZm8uZnJlZXplQW1vdW50O1xyXG4gICAgICAgICAgICAgICAgY2MuZnguR2FtZUNvbmZpZy5HTV9JTkZPLmhhbW1lckFtb3VudCA9IHByb3BJbmZvLmhhbW1lckFtb3VudDtcclxuICAgICAgICAgICAgICAgIGNjLmZ4LkdhbWVDb25maWcuR01fSU5GTy5tYWdpY0Ftb3VudCA9IHByb3BJbmZvLm1hZ2ljQW1vdW50O1xyXG4gICAgICAgICAgICAgICAgY2MuZnguR2FtZVRvb2wuc2V0VXNlclByb3AoMCwwLChkYXRhKT0+e1xyXG4gICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgIH0gXHJcbiAgICAgICAgICAgIGVsc2UgaWYoZGF0YS5yZXN1bHQuY29kZSA9PSAyMDApe1xyXG4gICAgICAgICAgICAgICAgLy8gY29uc29sZS5sb2coXCLmnKzlnLDml7bpl7TmiLNcIixwcm9wSW5mby50aW1lc3RhbXAsXCLmnI3liqHlmajml7bpl7TmiLNcIixkYXRhLnJlc3VsdC50aW1lc3RhbXApO1xyXG4gICAgICAgICAgICAgICAgaWYoKGRhdGEucmVzdWx0LnRpbWVzdGFtcCAtIHByb3BJbmZvLnRpbWVzdGFtcCkgPCAxMDAwMCl7XHJcbiAgICAgICAgICAgICAgICAgICAgY29uc29sZS5sb2coXCLku6XliY3nq6/pgZPlhbfkuLrkuLs6XCIscHJvcEluZm8pO1xyXG4gICAgICAgICAgICAgICAgICAgIGlmKHByb3BJbmZvLmZyZWV6ZUFtb3VudCA9PSB1bmRlZmluZWQgfHwgcHJvcEluZm8uaGFtbWVyQW1vdW50ID09IHVuZGVmaW5lZCB8fCBwcm9wSW5mby5tYWdpY0Ftb3VudCA9PSB1bmRlZmluZWQpe1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zb2xlLmxvZyhcIjExMTExMemBk+WFt+aVsOaNruW8guW4uFwiLGRhdGEucmVzdWx0LmRhdGEpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBjYy5meC5HYW1lQ29uZmlnLkdNX0lORk8uZnJlZXplQW1vdW50ID0gZGF0YS5yZXN1bHQuZGF0YS5mcmVlemU7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNjLmZ4LkdhbWVDb25maWcuR01fSU5GTy5oYW1tZXJBbW91bnQgPSBkYXRhLnJlc3VsdC5kYXRhLmhhbW1lcjtcclxuICAgICAgICAgICAgICAgICAgICAgICAgY2MuZnguR2FtZUNvbmZpZy5HTV9JTkZPLm1hZ2ljQW1vdW50ID0gZGF0YS5yZXN1bHQuZGF0YS5tYWdpY193YW5kO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBsZXQgcHJvcEluZm9OZXcgPSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBcImZyZWV6ZUFtb3VudFwiOmNjLmZ4LkdhbWVDb25maWcuR01fSU5GTy5mcmVlemVBbW91bnQsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBcImhhbW1lckFtb3VudFwiOmNjLmZ4LkdhbWVDb25maWcuR01fSU5GTy5oYW1tZXJBbW91bnQsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIm1hZ2ljQW1vdW50XCI6Y2MuZnguR2FtZUNvbmZpZy5HTV9JTkZPLm1hZ2ljQW1vdW50LFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJ0aW1lc3RhbXBcIjp0aW1lc3RhbXBcclxuICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zb2xlLmxvZyhcIjMzMzMzM+S4iuS8oOmBk+WFt+S/oeaBrzpcIixwcm9wSW5mb05ldyk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNjLmZ4LlN0b3JhZ2VNZXNzYWdlLnNldFN0b3JhZ2UoXCJwcm9wXCIscHJvcEluZm9OZXcpO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICBlbHNle1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zb2xlLmxvZyhcIumBk+WFt+aVsOaNruato+W4uFwiKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgY2MuZnguR2FtZUNvbmZpZy5HTV9JTkZPLmZyZWV6ZUFtb3VudCA9IHByb3BJbmZvLmZyZWV6ZUFtb3VudDtcclxuICAgICAgICAgICAgICAgICAgICAgICAgY2MuZnguR2FtZUNvbmZpZy5HTV9JTkZPLmhhbW1lckFtb3VudCA9IHByb3BJbmZvLmhhbW1lckFtb3VudDtcclxuICAgICAgICAgICAgICAgICAgICAgICAgY2MuZnguR2FtZUNvbmZpZy5HTV9JTkZPLm1hZ2ljQW1vdW50ID0gcHJvcEluZm8ubWFnaWNBbW91bnQ7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNjLmZ4LkdhbWVUb29sLnNldFVzZXJQcm9wKDAsMCwoZGF0YSk9PntcclxuICAgICAgICAgICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgZWxzZXtcclxuICAgICAgICAgICAgICAgICAgICBjYy5meC5HYW1lQ29uZmlnLkdNX0lORk8uZnJlZXplQW1vdW50ID0gZGF0YS5yZXN1bHQuZGF0YS5mcmVlemU7XHJcbiAgICAgICAgICAgICAgICAgICAgY2MuZnguR2FtZUNvbmZpZy5HTV9JTkZPLmhhbW1lckFtb3VudCA9IGRhdGEucmVzdWx0LmRhdGEuaGFtbWVyO1xyXG4gICAgICAgICAgICAgICAgICAgIGNjLmZ4LkdhbWVDb25maWcuR01fSU5GTy5tYWdpY0Ftb3VudCA9IGRhdGEucmVzdWx0LmRhdGEubWFnaWNfd2FuZDtcclxuICAgICAgICAgICAgICAgICAgICBsZXQgcHJvcEluZm9OZXcgPSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFwiZnJlZXplQW1vdW50XCI6Y2MuZnguR2FtZUNvbmZpZy5HTV9JTkZPLmZyZWV6ZUFtb3VudCxcclxuICAgICAgICAgICAgICAgICAgICAgICAgXCJoYW1tZXJBbW91bnRcIjpjYy5meC5HYW1lQ29uZmlnLkdNX0lORk8uaGFtbWVyQW1vdW50LFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBcIm1hZ2ljQW1vdW50XCI6Y2MuZnguR2FtZUNvbmZpZy5HTV9JTkZPLm1hZ2ljQW1vdW50LFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBcInRpbWVzdGFtcFwiOnRpbWVzdGFtcFxyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICBjb25zb2xlLmxvZyhcIjIyMjIyMjIy5LiK5Lyg6YGT5YW35L+h5oGvOlwiLHByb3BJbmZvTmV3LGRhdGEucmVzdWx0KTtcclxuICAgICAgICAgICAgICAgICAgICBjYy5meC5TdG9yYWdlTWVzc2FnZS5zZXRTdG9yYWdlKFwicHJvcFwiLHByb3BJbmZvTmV3KTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfSBcclxuICAgICAgICB9KTtcclxuICAgIH1cclxuICAgIC8v5pen55So5oi377yM5peg5pys5Zyw57yT5a2Y6K+75Y+W6YWN572uXHJcbiAgICBvbGRSZWFkRGF0YShyZXRyeUNvdW50Om51bWJlcil7XHJcbiAgICAgICAgY29uc29sZS5sb2coXCLor7vlj5bml6fkv6Hmga9cIik7XHJcbiAgICAgICAgY29uc3QgTUFYX1JFVFJJRVMgPSAxNTtcclxuICAgICAgICBjb25zdCB0aW1lc3RhbXAgPSBEYXRlLm5vdygpO1xyXG4gICAgICAgIC8vIOivu+WPlueUqOaIt+aVsOaNrlxyXG4gICAgICAgIC8vQHRzLWlnbm9yZVxyXG4gICAgICAgIHd4LmNsb3VkLmNhbGxGdW5jdGlvbih7XHJcbiAgICAgICAgbmFtZTogJ3VzZXJEYXRhJyxcclxuICAgICAgICBkYXRhOiB7XHJcbiAgICAgICAgICAgIGFjdGlvbjogJ3JlYWQnXHJcbiAgICAgICAgfSxcclxuICAgICAgICBzdWNjZXNzOiByZXMgPT4geyAgIFxyXG4gICAgICAgICAgICBjb25zb2xlLmxvZygn6K+75Y+W55So5oi35pWw5o2u5oiQ5YqfJywgcmVzLnJlc3VsdClcclxuICAgICAgICAgICAgaWYocmVzLnJlc3VsdC5jb2RlID09IDQwNCAmJiByZXMucmVzdWx0Lm1lc3NhZ2UgPT0gXCLmnKrmib7liLDnlKjmiLfmlbDmja5cIil7XHJcbiAgICAgICAgICAgICAgICBpZihyZXMucmVzdWx0Lm9wZW5pZCl7XHJcbiAgICAgICAgICAgICAgICAgICAgY2MuZnguR2FtZUNvbmZpZy5HTV9JTkZPLm9wZW5pZCA9IHJlcy5yZXN1bHQub3BlbmlkXHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBjYy5meC5HYW1lQ29uZmlnLkdNX0lORk8uZmlyc3QgPSB0cnVlO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5sb2FkMyA9IHRydWU7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmxvYWQ0ID0gdHJ1ZTtcclxuICAgICAgICAgICAgICAgIGxldCBsZXZlbEluZm8gPSB7XCJsZXZlbFwiOjAsXCJ0aW1lc3RhbXBcIjp0aW1lc3RhbXB9O1xyXG4gICAgICAgICAgICAgICAgY2MuZnguU3RvcmFnZU1lc3NhZ2Uuc2V0U3RvcmFnZShcImxldmVsXCIsbGV2ZWxJbmZvKTtcclxuICAgICAgICAgICAgICAgIGxldCBjb2luSW5mbyA9IHtcImNvaW5cIjowLFwidGltZXN0YW1wXCI6dGltZXN0YW1wfTtcclxuICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKFwiMzMzMzMzMzMzMzNcIik7XHJcbiAgICAgICAgICAgICAgICBjYy5meC5TdG9yYWdlTWVzc2FnZS5zZXRTdG9yYWdlKFwiY29pblwiLGNvaW5JbmZvKTtcclxuICAgICAgICAgICAgICAgIGxldCBwcm9wSW5mbyA9IHtcclxuICAgICAgICAgICAgICAgICAgICBcImZyZWV6ZUFtb3VudFwiOjAsXHJcbiAgICAgICAgICAgICAgICAgICAgXCJoYW1tZXJBbW91bnRcIjowLFxyXG4gICAgICAgICAgICAgICAgICAgIFwibWFnaWNBbW91bnRcIjowLFxyXG4gICAgICAgICAgICAgICAgICAgIFwidGltZXN0YW1wXCI6dGltZXN0YW1wLFxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgY2MuZnguU3RvcmFnZU1lc3NhZ2Uuc2V0U3RvcmFnZShcInByb3BcIixwcm9wSW5mbyk7XHJcblxyXG5cclxuICAgICAgICAgICAgICAgIGNjLmZ4LkdhbWVUb29sLnNldFVzZXJJbmZvKChkYXRhKT0+e1xyXG4gICAgICAgICAgICAgICAgICAgIGlmKGRhdGEucmVzdWx0LmNvZGUgPT0gMjAwKXtcclxuICAgICAgICAgICAgICAgICAgICAgICAgY29uc29sZS5sb2coXCLkuIrkvKDnlKjmiLfkv6Hmga/miJDlip9cIixkYXRhKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgLy9AdHMtaWdub3JlXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHd4LmNsb3VkLmNhbGxGdW5jdGlvbih7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiAndXNlckRhdGEnLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0YToge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFjdGlvbjogJ3JlYWQnXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LCAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdWNjZXNzOiByZXMgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKFwi5LiK5Lyg5ZCO77yM6K+75Y+W55So5oi35L+h5oGv77yM5Li65LiK5oql5rOo5YaM5pe26Ze0XCIpXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYocmVzLnJlc3VsdC5jb2RlID09IDIwMCl7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHRpbWUgPSByZXMucmVzdWx0LmRhdGEucmVnaXN0ZXJfdGltZTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTWluaUdhbWVTZGsuQVBJLnNodXNodV91c2VyU2V0KHRpbWUpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgfSlcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKFwi5pyN5Yqh5Zmo5Lmf5rKh5pyJ6YeR5biB5L+h5oGvXCIsY2MuZnguR2FtZUNvbmZpZy5HTV9JTkZPLmNvaW4pO1xyXG4gICAgICAgICAgICAgICAgY2MuZnguR2FtZVRvb2wuc2V0VXNlckNvaW4oY2MuZnguR2FtZUNvbmZpZy5HTV9JTkZPLmNvaW4sKGRhdGEpPT57XHJcbiAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgICAgIGNjLmZ4LkdhbWVUb29sLnNldFVzZXJMZXZlbCgoZGF0YSk9PntcclxuICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgY2MuZnguR2FtZUNvbmZpZy5HTV9JTkZPLmZyZWV6ZUFtb3VudCA9IDA7XHJcbiAgICAgICAgICAgICAgICAgICAgY2MuZnguR2FtZUNvbmZpZy5HTV9JTkZPLmhhbW1lckFtb3VudCA9IDA7XHJcbiAgICAgICAgICAgICAgICAgICAgY2MuZnguR2FtZUNvbmZpZy5HTV9JTkZPLm1hZ2ljQW1vdW50ID0gMDtcclxuICAgICAgICAgICAgICAgICAgICBjYy5meC5HYW1lVG9vbC5zZXRVc2VyUHJvcCgwLDAsKGRhdGEpPT57XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmKGRhdGEucmVzdWx0LmNvZGUgPT0gMjAwKXtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKFwi5LiK5Lyg6YGT5YW35L+h5oGv5oiQ5YqfXCIsZGF0YSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgZWxzZXtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1pbmlHYW1lU2RrLkFQSS5zaG93VG9hc3QoXCLnvZHnu5zlvILluLjvvIzmraPlnKjliqrlipvliqDovb1cIik7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLm9sZFJlYWREYXRhKDApO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwgMTAwMCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgICAgIH0sIDApO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGVsc2UgaWYocmVzLnJlc3VsdC5jb2RlID09IDIwMCl7XHJcbiAgICAgICAgICAgICAgICBpZihyZXMucmVzdWx0LmRhdGEpe1xyXG4gICAgICAgICAgICAgICAgICAgIGNjLmZ4LkdhbWVDb25maWcuR01fSU5GTy5vcGVuaWQgPSByZXMucmVzdWx0Lm9wZW5pZDtcclxuICAgICAgICAgICAgICAgICAgICBjYy5meC5HYW1lQ29uZmlnLkdNX0lORk8ubGV2ZWwgPSByZXMucmVzdWx0LmRhdGEubGV2ZWw7XHJcbiAgICAgICAgICAgICAgICAgICAgY2MuZnguR2FtZUNvbmZpZy5HTV9JTkZPLmNvaW4gPSByZXMucmVzdWx0LmRhdGEuY29pbkFtb3VudDtcclxuICAgICAgICAgICAgICAgICAgICBjYy5meC5HYW1lQ29uZmlnLkdNX0lORk8uZnJlZXplQW1vdW50ID0gcmVzLnJlc3VsdC5kYXRhLmZyZWV6ZUFtb3VudDtcclxuICAgICAgICAgICAgICAgICAgICBjYy5meC5HYW1lQ29uZmlnLkdNX0lORk8uaGFtbWVyQW1vdW50ID0gcmVzLnJlc3VsdC5kYXRhLmhhbW1lckFtb3VudDtcclxuICAgICAgICAgICAgICAgICAgICBjYy5meC5HYW1lQ29uZmlnLkdNX0lORk8ubWFnaWNBbW91bnQgPSByZXMucmVzdWx0LmRhdGEubWFnaWNBbW91bnQ7XHJcbiAgICAgICAgICAgICAgICAgICAgY2MuZnguR2FtZUNvbmZpZy5HTV9JTkZPLnVzZXJuYW1lID0gcmVzLnJlc3VsdC5kYXRhLnVzZXJuYW1lO1xyXG4gICAgICAgICAgICAgICAgICAgIGNjLmZ4LkdhbWVDb25maWcuR01fSU5GTy51c2VyYXZhdGFyID0gcmVzLnJlc3VsdC5kYXRhLnVzZXJhdmF0YXI7XHJcbiAgICAgICAgICAgICAgICAgICAgY2MuZnguU3RvcmFnZU1lc3NhZ2Uuc2V0U3RvcmFnZShcIm9wZW5pZFwiLGNjLmZ4LkdhbWVDb25maWcuR01fSU5GTy5vcGVuaWQpO1xyXG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHJlZ2lzdGVyX3RpbWUgPSByZXMucmVzdWx0LmRhdGEucmVnaXN0ZXJfdGltZTtcclxuICAgICAgICAgICAgICAgICAgICBNaW5pR2FtZVNkay5BUEkuc2h1c2h1X3VzZXJTZXQocmVnaXN0ZXJfdGltZSk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICBjYy5meC5HYW1lVG9vbC5nZXRVc2VyQ29pbigoZGF0YSkgPT57XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmKGRhdGEucmVzdWx0LmNvZGUgPT0gNDA0ICYmIGRhdGEucmVzdWx0Lm1lc3NhZ2UgPT0gXCLmnKrmib7liLDph5HluIHmlbDmja5cIil7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgY29pbkluZm8gPSB7XCJjb2luXCI6MCxcInRpbWVzdGFtcFwiOnRpbWVzdGFtcH07XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYy5meC5HYW1lQ29uZmlnLkdNX0lORk8uY29pbiA9IDA7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYy5meC5TdG9yYWdlTWVzc2FnZS5zZXRTdG9yYWdlKFwiY29pblwiLGNvaW5JbmZvKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKFwi5rKh5pyJ6YeR5biB5L+h5oGv77yM5LuO55So5oi35o6l5Y+j5ou/5Yiw5pWw5o2uXCIsY2MuZnguR2FtZUNvbmZpZy5HTV9JTkZPLmNvaW4pO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2MuZnguR2FtZVRvb2wuc2V0VXNlckNvaW4oKGRhdGEpPT57XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gY29uc29sZS5sb2coXCLkuIrkvKBcIixkYXRhKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmxvYWQzID0gdHJ1ZTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgaWYoZGF0YS5yZXN1bHQuY29kZSA9PSAyMDApe1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gY29uc29sZS5sb2coXCLmnInph5HluIHkv6Hmga/vvIzku47ph5HluIHmjqXlj6Pmi7/liLDmlbDmja5cIixkYXRhLnJlc3VsdC5kYXRhKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNjLmZ4LkdhbWVDb25maWcuR01fSU5GTy5jb2luID0gZGF0YS5yZXN1bHQuZGF0YTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBjb2luSW5mbyA9IHtcImNvaW5cIjpjYy5meC5HYW1lQ29uZmlnLkdNX0lORk8uY29pbixcInRpbWVzdGFtcFwiOnRpbWVzdGFtcH07XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zb2xlLmxvZyhcIuWtmOWCqOmHkeW4geS/oeaBrzpcIixjYy5meC5HYW1lQ29uZmlnLkdNX0lORk8uY29pbik7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zb2xlLmxvZyhcIjQ0NDQ0NDQ0NDRcIik7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYy5meC5TdG9yYWdlTWVzc2FnZS5zZXRTdG9yYWdlKFwiY29pblwiLGNvaW5JbmZvKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMubG9hZDMgPSB0cnVlO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgfSlcclxuICAgICAgICAgICAgICAgIH0sIDUwMCk7XHJcblxyXG4gICAgICAgICAgICAgICAgY2MuZnguR2FtZVRvb2wuZ2V0VXNlckxldmVsKChkYXRhKSA9PntcclxuICAgICAgICAgICAgICAgICAgICBpZihkYXRhLnJlc3VsdC5jb2RlID09IDQwNCAmJiBkYXRhLnJlc3VsdC5tZXNzYWdlID09IFwi5pyq5om+5Yiw5YWz5Y2h5pWw5o2uXCIpe1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zb2xlLmxvZyhcIuayoeacieetiee6p+S/oeaBr++8jOS7jueUqOaIt+aOpeWPo+aLv+WIsOaVsOaNrlwiKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGxldmVsSW5mbyA9IHtcImxldmVsXCI6MCxcInRpbWVzdGFtcFwiOnRpbWVzdGFtcH07XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIGNvbnNvbGUubG9nKFwiMzMzMzMz5a2Y5YKo5YWz5Y2h5pWw5o2uOlwiLGxldmVsSW5mbyk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICBjYy5meC5HYW1lQ29uZmlnLkdNX0lORk8ubGV2ZWwgPSAwO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBjYy5meC5TdG9yYWdlTWVzc2FnZS5zZXRTdG9yYWdlKFwibGV2ZWxcIixsZXZlbEluZm8pO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBjYy5meC5HYW1lVG9vbC5zZXRVc2VyTGV2ZWwoKGRhdGEpPT57XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zb2xlLmxvZyhcIuaLv+WIsOeahOaVsOaNrlwiLGRhdGEpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5sb2FkNCA9IHRydWU7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICAgICAgICAgIH0gXHJcbiAgICAgICAgICAgICAgICAgICAgZWxzZSBpZihkYXRhLnJlc3VsdC5jb2RlID09IDIwMCl7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKFwi5pyJ562J57qn5L+h5oGv77yM5LuO5YWz5Y2h5o6l5Y+j5ou/5Yiw5pWw5o2uXCIsZGF0YS5yZXN1bHQuZGF0YSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNjLmZ4LkdhbWVDb25maWcuR01fSU5GTy5sZXZlbCA9IGRhdGEucmVzdWx0LmRhdGE7IFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBsZXQgbGV2ZWxJbmZvID0ge1wibGV2ZWxcIjpjYy5meC5HYW1lQ29uZmlnLkdNX0lORk8ubGV2ZWwsXCJ0aW1lc3RhbXBcIjp0aW1lc3RhbXB9O1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBjb25zb2xlLmxvZyhcIjQ0NDQ0NOWtmOWCqOWFs+WNoeS/oeaBrzpcIixsZXZlbEluZm8pO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBjYy5meC5TdG9yYWdlTWVzc2FnZS5zZXRTdG9yYWdlKFwibGV2ZWxcIixsZXZlbEluZm8pO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmxvYWQ0ID0gdHJ1ZTtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9KVxyXG4gICAgICAgICAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgY2MuZnguR2FtZVRvb2wuZ2V0VXNlclByb3AoKGRhdGEpID0+e1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBpZihkYXRhLnJlc3VsdC5jb2RlID09IDQwNCAmJiBkYXRhLnJlc3VsdC5tZXNzYWdlID09IFwi5pyq5om+5Yiw6YGT5YW35pWw5o2uXCIpe1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc29sZS5sb2coXCLmsqHmnInpgZPlhbfkv6Hmga/vvIzku47nlKjmiLfmjqXlj6Pmi7/liLDmlbDmja5cIik7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYy5meC5HYW1lQ29uZmlnLkdNX0lORk8uZnJlZXplQW1vdW50ID0gMDtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNjLmZ4LkdhbWVDb25maWcuR01fSU5GTy5oYW1tZXJBbW91bnQgPSAwO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2MuZnguR2FtZUNvbmZpZy5HTV9JTkZPLm1hZ2ljQW1vdW50ID0gMDtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBwcm9wSW5mbyA9IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcImZyZWV6ZUFtb3VudFwiOjAsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJoYW1tZXJBbW91bnRcIjowLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwibWFnaWNBbW91bnRcIjowLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwidGltZXN0YW1wXCI6dGltZXN0YW1wLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc29sZS5sb2coXCLkuIrkvKDpgZPlhbfkv6Hmga86XCIscHJvcEluZm8pO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2MuZnguU3RvcmFnZU1lc3NhZ2Uuc2V0U3RvcmFnZShcInByb3BcIixwcm9wSW5mbyk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYy5meC5HYW1lVG9vbC5zZXRVc2VyUHJvcCgwLDAsKGRhdGEpPT57XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgfSBcclxuICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSBpZihkYXRhLnJlc3VsdC5jb2RlID09IDIwMCl7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zb2xlLmxvZyhcIuaciemBk+WFt+S/oeaBr++8jOS7jumBk+WFt+aOpeWPo+aLv+WIsOaVsOaNrlwiLGRhdGEucmVzdWx0LmRhdGEpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2MuZnguR2FtZUNvbmZpZy5HTV9JTkZPLmZyZWV6ZUFtb3VudCA9IGRhdGEucmVzdWx0LmRhdGEuZnJlZXplIHx8IDA7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYy5meC5HYW1lQ29uZmlnLkdNX0lORk8uaGFtbWVyQW1vdW50ID0gZGF0YS5yZXN1bHQuZGF0YS5oYW1tZXIgfHwgMDtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNjLmZ4LkdhbWVDb25maWcuR01fSU5GTy5tYWdpY0Ftb3VudCA9IGRhdGEucmVzdWx0LmRhdGEubWFnaWNfd2FuZCB8fCAwO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IHByb3BJbmZvID0ge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiZnJlZXplQW1vdW50XCI6Y2MuZnguR2FtZUNvbmZpZy5HTV9JTkZPLmZyZWV6ZUFtb3VudCxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcImhhbW1lckFtb3VudFwiOmNjLmZ4LkdhbWVDb25maWcuR01fSU5GTy5oYW1tZXJBbW91bnQsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJtYWdpY0Ftb3VudFwiOmNjLmZ4LkdhbWVDb25maWcuR01fSU5GTy5tYWdpY0Ftb3VudCxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcInRpbWVzdGFtcFwiOnRpbWVzdGFtcCxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKFwi5LiK5Lyg6YGT5YW35L+h5oGvOlwiLHByb3BJbmZvKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNjLmZ4LlN0b3JhZ2VNZXNzYWdlLnNldFN0b3JhZ2UoXCJwcm9wXCIscHJvcEluZm8pO1xyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIH0pXHJcbiAgICAgICAgICAgICAgICB9LCAwKTtcclxuICAgIFxyXG4gICAgICAgICAgICB9XHJcblxyXG4gICAgICAgIH0sXHJcbiAgICAgICAgZmFpbDogZXJyID0+IHtcclxuICAgICAgICAgICAgY29uc29sZS5lcnJvcign6K+75Y+W55So5oi35pWw5o2u5aSx6LSlJywgZXJyKVxyXG4gICAgICAgICAgICBpZiAocmV0cnlDb3VudCA8IE1BWF9SRVRSSUVTKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgY29uc29sZS5lcnJvcihg6K+75Y+W55So5oi35pWw5o2u5aSx6LSl77yM56ysICR7cmV0cnlDb3VudCArIDF9IOasoemHjeivle+8jOmUmeivr+S/oeaBrzpgLCBlcnIpO1xyXG4gICAgICAgICAgICAgICAgICAgIC8vIOW7tui/nyAyIOenkuWQjumHjeivlVxyXG4gICAgICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnJlYWRVc2VyRGF0YShyZXRyeUNvdW50ICsgMSk7XHJcbiAgICAgICAgICAgICAgICAgICAgfSwgMjAwMCk7XHJcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoJ+ivu+WPlueUqOaIt+aVsOaNruWksei0pe+8jOi+vuWIsOacgOWkp+mHjeivleasoeaVsO+8jOmAgOWHuua4uOaIjycsIGVycik7XHJcbiAgICAgICAgICAgICAgICAgICAgLy8g6YCA5Ye65ri45oiPXHJcbiAgICAgICAgICAgICAgICAgICAgY2MuZ2FtZS5lbmQoKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH0pXHJcbiAgICB9XHJcblxyXG4gICAgc2V0VXNlckRhdGEoKXtcclxuICAgICAgICBjYy5meC5HYW1lQ29uZmlnLkdhbWVUb29sKChkYXRhKT0+e1xyXG4gICAgICAgICAgICBjb25zb2xlLmxvZyhcIuS4iuS8oFwiLGRhdGEpO1xyXG4gICAgICAgIH0pXHJcbiAgICB9XHJcblxyXG4gICAgc3RhcnRUaW1lQ3V0RG93bigpe1xyXG4gICAgICAgIHRoaXMuc2NoZWR1bGVDYWxsYmFjayA9IGZ1bmN0aW9uKCl7XHJcbiAgICAgICAgICAgIGlmKHRoaXMudGltZU51bWJlciA8PSAwKXtcclxuICAgICAgICAgICAgICAgIHRoaXMuc3RvcFRpbWVDdXREb3duKCk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgZWxzZXtcclxuICAgICAgICAgICAgICAgIHRoaXMudGltZU51bWJlciAtPSAxO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfS5iaW5kKHRoaXMpO1xyXG4gICAgICAgIHRoaXMuc2NoZWR1bGUodGhpcy5zY2hlZHVsZUNhbGxiYWNrLCAxKTtcclxuICAgIH1cclxuXHJcbiAgICBzdG9wVGltZUN1dERvd24oKXtcclxuICAgICAgICBpZih0aGlzLnNjaGVkdWxlQ2FsbGJhY2spe1xyXG4gICAgICAgICAgICB0aGlzLnVuc2NoZWR1bGUodGhpcy5zY2hlZHVsZUNhbGxiYWNrKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgdXBkYXRlIChkdCkge1xyXG4gICAgICAgIGlmKHRoaXMubG9hZDEgJiYgdGhpcy5sb2FkMiAmJiB0aGlzLmxvYWQzICAmJiB0aGlzLmxvYWQ0ICYmIHRoaXMubG9hZDUgJiYgdGhpcy50aW1lTnVtYmVyIDw9IDApe1xyXG4gICAgICAgICAgICB0aGlzLmxvYWQxID0gdGhpcy5sb2FkMiA9IGZhbHNlO1xyXG4gICAgICAgICAgICBNaW5pR2FtZVNkay5BUEkuc2h1c2h1X0luaXQoKTtcclxuICAgICAgICAgICAgdGhpcy5zdGFydEdhbWUoKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcbn1cclxuIl19 ->>>>>>> 0a31a7a5abc2c505bf743aa596e1c765a0405152 +//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImFzc2V0c1xcU2NyaXB0XFxHYW1lTWFuYWdlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsb0JBQW9CO0FBQ3BCLHdFQUF3RTtBQUN4RSxtQkFBbUI7QUFDbkIsa0ZBQWtGO0FBQ2xGLDhCQUE4QjtBQUM5QixrRkFBa0Y7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUdsRixpREFBZ0Q7QUFFMUMsSUFBQSxLQUF3QixFQUFFLENBQUMsVUFBVSxFQUFuQyxPQUFPLGFBQUEsRUFBRSxRQUFRLGNBQWtCLENBQUM7QUFHNUM7SUFBeUMsK0JBQVk7SUFBckQ7UUFBQSxxRUFpcEJDO1FBOW9CRyxXQUFLLEdBQWEsSUFBSSxDQUFDO1FBR3ZCLFVBQUksR0FBVyxPQUFPLENBQUM7UUFJdkIsaUJBQVcsR0FBcUIsRUFBRSxDQUFDO1FBR25DLGlCQUFXLEdBQXFCLEVBQUUsQ0FBQztRQUduQyxpQkFBVyxHQUEwQixFQUFFLENBQUM7UUFHeEMseURBQXlEO1FBQ3pELG1EQUFtRDtRQUVuRCxXQUFLLEdBQVksS0FBSyxDQUFDO1FBQ3ZCLFdBQUssR0FBWSxLQUFLLENBQUM7UUFDdkIsV0FBSyxHQUFZLEtBQUssQ0FBQztRQUN2QixXQUFLLEdBQVksS0FBSyxDQUFDO1FBQ3ZCLFdBQUssR0FBWSxLQUFLLENBQUM7O0lBdW5CM0IsQ0FBQztvQkFqcEJvQixXQUFXO0lBK0I1Qix3QkFBd0I7SUFFeEIsNEJBQU0sR0FBTjtRQUFBLGlCQW1FQztRQWpFRyxNQUFNLENBQUMsT0FBTyxFQUFFLENBQUM7UUFDakIsSUFBSSxDQUFDLFVBQVUsR0FBRyxDQUFDLENBQUM7UUFDcEIsSUFBSSxDQUFDLGdCQUFnQixFQUFFLENBQUM7UUFDeEIsRUFBRSxDQUFDLEVBQUUsQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQzVCLEVBQUUsQ0FBQyxFQUFFLENBQUMsVUFBVSxDQUFDLE9BQU8sQ0FBQyxTQUFTLEdBQUcsS0FBSyxD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QURDLFFBQVEsQ0FBQyxFQUFFLElBQUksRUFBRSxDQUFDLEVBQUUsQ0FBQyxNQUFNLENBQUMsRUFBRSxPQUFPLEVBQUUsTUFBTSxFQUFFLENBQUM7b0RBQ2Q7SUFHbkM7UUFEQyxRQUFRLENBQUMsRUFBRSxJQUFJLEVBQUUsQ0FBQyxFQUFFLENBQUMsV0FBVyxDQUFDLEVBQUUsT0FBTyxFQUFFLE1BQU0sRUFBRSxDQUFDO29EQUNkO0lBaEJ2QixXQUFXO1FBRC9CLE9BQU87T0FDYSxXQUFXLENBaXBCL0I7SUFBRCxrQkFBQztDQWpwQkQsQUFpcEJDLENBanBCd0MsRUFBRSxDQUFDLFNBQVMsR0FpcEJwRDtrQkFqcEJvQixXQUFXIiwiZmlsZSI6IiIsInNvdXJjZVJvb3QiOiIvIiwic291cmNlc0NvbnRlbnQiOlsiLy8gTGVhcm4gVHlwZVNjcmlwdDpcclxuLy8gIC0gaHR0cHM6Ly9kb2NzLmNvY29zLmNvbS9jcmVhdG9yL21hbnVhbC9lbi9zY3JpcHRpbmcvdHlwZXNjcmlwdC5odG1sXHJcbi8vIExlYXJuIEF0dHJpYnV0ZTpcclxuLy8gIC0gaHR0cHM6Ly9kb2NzLmNvY29zLmNvbS9jcmVhdG9yL21hbnVhbC9lbi9zY3JpcHRpbmcvcmVmZXJlbmNlL2F0dHJpYnV0ZXMuaHRtbFxyXG4vLyBMZWFybiBsaWZlLWN5Y2xlIGNhbGxiYWNrczpcclxuLy8gIC0gaHR0cHM6Ly9kb2NzLmNvY29zLmNvbS9jcmVhdG9yL21hbnVhbC9lbi9zY3JpcHRpbmcvbGlmZS1jeWNsZS1jYWxsYmFja3MuaHRtbFxyXG5cclxuaW1wb3J0IHsgTWluaUdhbWVNYW5hZ2VyIH0gZnJvbSBcIi4vU2RrL01pbmlHYW1lTWFuYWdlclwiO1xyXG5pbXBvcnQgeyBNaW5pR2FtZVNkayB9IGZyb20gXCIuL1Nkay9NaW5pR2FtZVNka1wiO1xyXG5cclxuY29uc3QgeyBjY2NsYXNzLCBwcm9wZXJ0eSB9ID0gY2MuX2RlY29yYXRvcjtcclxuXHJcbkBjY2NsYXNzXHJcbmV4cG9ydCBkZWZhdWx0IGNsYXNzIEdhbWVNYW5hZ2VyIGV4dGVuZHMgY2MuQ29tcG9uZW50IHtcclxuXHJcbiAgICBAcHJvcGVydHkoY2MuTGFiZWwpXHJcbiAgICBsYWJlbDogY2MuTGFiZWwgPSBudWxsO1xyXG5cclxuICAgIEBwcm9wZXJ0eVxyXG4gICAgdGV4dDogc3RyaW5nID0gJ2hlbGxvJztcclxuICAgIHN0YXRpYyBfaW5zdGFuY2U6IEdhbWVNYW5hZ2VyID0gbnVsbDtcclxuXHJcbiAgICBAcHJvcGVydHkoeyB0eXBlOiBbY2MuUHJlZmFiXSwgdG9vbHRpcDogXCLmlrnlnZfmlbDnu4RcIiB9KVxyXG4gICAgQmxvY2tfQXJyYXk6IEFycmF5PGNjLlByZWZhYj4gPSBbXTtcclxuXHJcbiAgICBAcHJvcGVydHkoeyB0eXBlOiBbY2MuUHJlZmFiXSwgdG9vbHRpcDogXCLlopnlo4HmlbDnu4RcIiB9KVxyXG4gICAgV2FsbF9QcmVmYWI6IEFycmF5PGNjLlByZWZhYj4gPSBbXTtcclxuXHJcbiAgICBAcHJvcGVydHkoeyB0eXBlOiBbY2MuU3ByaXRlQXRsYXNdLCB0b29sdGlwOiBcIuaWueWdl+minOiJslwiIH0pXHJcbiAgICBCbG9ja19Db2xvcjogQXJyYXk8Y2MuU3ByaXRlQXRsYXM+ID0gW107XHJcblxyXG4gICAgcGFydGljbGVFZmZlY3RzOiBjYy5QYXJ0aWNsZUFzc2V0W107XHJcbiAgICAvLyBAcHJvcGVydHkoe3R5cGU6IFtjYy5QYXJ0aWNsZVN5c3RlbV0sIHRvb2x0aXA6XCLnspLlrZDmlbDnu4RcIn0pXHJcbiAgICAvLyBwYXJ0aWNsZUVmZmVjdHMgOiBBcnJheTxjYy5QYXJ0aWNsZVN5c3RlbT4gPSBbXTtcclxuXHJcbiAgICBsb2FkMTogYm9vbGVhbiA9IGZhbHNlO1xyXG4gICAgbG9hZDI6IGJvb2xlYW4gPSBmYWxzZTtcclxuICAgIGxvYWQzOiBib29sZWFuID0gZmFsc2U7XHJcbiAgICBsb2FkNDogYm9vbGVhbiA9IGZhbHNlO1xyXG4gICAgbG9hZDU6IGJvb2xlYW4gPSBmYWxzZTtcclxuICAgIHNjaGVkdWxlQ2FsbGJhY2s6IGFueTtcclxuICAgIHRpbWVOdW1iZXI6IG51bWJlcjtcclxuXHJcblxyXG4gICAgLy8gTElGRS1DWUNMRSBDQUxMQkFDS1M6XHJcblxyXG4gICAgb25Mb2FkKCkge1xyXG5cclxuICAgICAgICB3aW5kb3cuaW5pdE1ncigpO1xyXG4gICAgICAgIHRoaXMudGltZU51bWJlciA9IDM7XHJcbiAgICAgICAgdGhpcy5zdGFydFRpbWVDdXREb3duKCk7XHJcbiAgICAgICAgY2MuZnguR2FtZUNvbmZpZy5pbml0KHRydWUpO1xyXG4gICAgICAgIGNjLmZ4LkdhbWVDb25maWcuR01fSU5GTy5nYW1lU3RhdGUgPSBmYWxzZTtcclxuICAgICAgICB0aGlzLnJlYWRNdXNpY0NvbmZpZygpO1xyXG4gICAgICAgIGNvbnNvbGUubG9nKFwi6Z+z5LmQ5byA5YWzXCIsIGNjLmZ4LkdhbWVDb25maWcuR01fSU5GTy5tdXNpY09wZW4pO1xyXG4gICAgICAgIGNjLmZ4LkF1ZGlvTWFuYWdlci5faW5zdGFuY2UucGxheU11c2ljR2FtZSgpO1xyXG5cclxuICAgICAgICB0aGlzLmxvYWQxID0gdGhpcy5sb2FkMiA9IHRoaXMubG9hZDMgPSB0aGlzLmxvYWQ0ID0gdGhpcy5sb2FkNSA9IGZhbHNlO1xyXG4gICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICAgICAgICB0aGlzLnJlYWRVc2VyRGF0YSgpO1xyXG4gICAgICAgIH0sIDIwMCk7XHJcblxyXG5cclxuICAgICAgICBpZiAoR2FtZU1hbmFnZXIuX2luc3RhbmNlID09IG51bGwpIHtcclxuICAgICAgICAgICAgR2FtZU1hbmFnZXIuX2luc3RhbmNlID0gdGhpcztcclxuICAgICAgICAgICAgY2MuZ2FtZS5hZGRQZXJzaXN0Um9vdE5vZGUodGhpcy5ub2RlKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGNvbnN0IHBhdGggPSAncHJlZmFiL2Jsb2NrJztcclxuICAgICAgICBjb25zdCBwYXRoMiA9ICdwcmVmYWIvd2FsbCc7XHJcbiAgICAgICAgY2MucmVzb3VyY2VzLmxvYWREaXIocGF0aCwgY2MuUHJlZmFiLCAoZXJyLCBhc3NldHM6IGNjLlByZWZhYltdKSA9PiB7XHJcbiAgICAgICAgICAgIGlmIChlcnIpIHtcclxuICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKCfliqjmgIHliqDovb0gYmxvY2sg5aSx6LSlOicsIGVycik7XHJcbiAgICAgICAgICAgICAgICBjYy5kaXJlY3Rvci5sb2FkU2NlbmUoXCJMb2FkU2NlbmVcIik7XHJcbiAgICAgICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgLy8g5bCG5Yqg6L2955qEIFByZWZhYiDotYvlgLznu5kgQmxvY2tfQXJyYXlcclxuICAgICAgICAgICAgdGhpcy5CbG9ja19BcnJheSA9IGFzc2V0cztcclxuICAgICAgICAgICAgY29uc29sZS5sb2coJ+aWueWdl+WKoOi9veaIkOWKn++8jOWFseWKoOi9veS6hicsIHRoaXMuQmxvY2tfQXJyYXkubGVuZ3RoLCAn5Liq5pa55Z2XJyk7XHJcbiAgICAgICAgICAgIHRoaXMuc2V0U29ydCgpO1xyXG4gICAgICAgICAgICB0aGlzLmxvYWQxID0gdHJ1ZTtcclxuICAgICAgICB9KTtcclxuXHJcbiAgICAgICAgY2MucmVzb3VyY2VzLmxvYWREaXIocGF0aDIsIGNjLlByZWZhYiwgKGVyciwgYXNzZXRzOiBjYy5QcmVmYWJbXSkgPT4ge1xyXG4gICAgICAgICAgICBpZiAoZXJyKSB7XHJcbiAgICAgICAgICAgICAgICBjb25zb2xlLmxvZygn5Yqo5oCB5Yqg6L29IHdhbGwg5aSx6LSlOicsIGVycik7XHJcbiAgICAgICAgICAgICAgICBjYy5kaXJlY3Rvci5sb2FkU2NlbmUoXCJMb2FkU2NlbmVcIik7XHJcbiAgICAgICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgLy8g5bCG5Yqg6L2955qEIFByZWZhYiDotYvlgLznu5kgQmxvY2tfQXJyYXlcclxuICAgICAgICAgICAgdGhpcy5XYWxsX1ByZWZhYiA9IGFzc2V0cztcclxuICAgICAgICAgICAgdGhpcy5sb2FkMiA9IHRydWU7XHJcbiAgICAgICAgICAgIGNvbnNvbGUubG9nKCflopnliqDovb3miJDlip/vvIzlhbHliqDovb3kuoYnLCB0aGlzLldhbGxfUHJlZmFiLmxlbmd0aCwgJ+S4quWimScpO1xyXG4gICAgICAgICAgICB0aGlzLnNldFdhbGxQcmVmYWJTb3J0KCk7XHJcbiAgICAgICAgfSk7XHJcblxyXG5cclxuICAgICAgICAvLyDmo4DmtYvlvq7kv6HlsI/muLjmiI/liIfliLDlkI7lj7BcclxuICAgICAgICBpZiAoY2Muc3lzLnBsYXRmb3JtID09PSBjYy5zeXMuV0VDSEFUX0dBTUUpIHtcclxuICAgICAgICAgICAgLy9AdHMtaWdub3JlXHJcbiAgICAgICAgICAgIHd4Lm9uSGlkZSgoKSA9PiB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLm9uSGlkZSgpO1xyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgLy8g5qOA5rWL5b6u5L+h5bCP5ri45oiP5Zue5Yiw5YmN5Y+wXHJcbiAgICAgICAgICAgIC8vQHRzLWlnbm9yZVxyXG4gICAgICAgICAgICB3eC5vblNob3coKCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5vblNob3coKTtcclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgfVxyXG5cclxuICAgIH1cclxuXHJcbiAgICBvbkhpZGUoKSB7XHJcbiAgICAgICAgY2MuYXVkaW9FbmdpbmUuc3RvcE11c2ljKCk7XHJcbiAgICAgICAgY2MuZ2FtZS5wYXVzZSgpO1xyXG4gICAgfVxyXG5cclxuICAgIG9uU2hvdygpIHtcclxuICAgICAgICBjYy5hdWRpb0VuZ2luZS5yZXN1bWVNdXNpYygpO1xyXG4gICAgICAgIGNjLmdhbWUucmVzdW1lKCk7XHJcbiAgICB9XHJcblxyXG4gICAgbG9hZFBhcnRpY2xlRWZmZWN0cygpIHtcclxuICAgIH1cclxuXHJcblxyXG5cclxuXHJcbiAgICBzZXRXYWxsUHJlZmFiU29ydCgpIHtcclxuICAgICAgICBjb25zdCBvcmRlciA9IFsnZG93bicsICdkb3duTGVmdCcsICdkb3duUmlnaHQnLCAnbGVmdCcsICdyaWdodCcsICd1cCcsICd1cExlZnQnLCAndXBSaWdodCddO1xyXG4gICAgICAgIHRoaXMuV2FsbF9QcmVmYWIuc29ydCgoYSwgYikgPT4ge1xyXG4gICAgICAgICAgICBjb25zdCBpbmRleEEgPSBvcmRlci5pbmRleE9mKGEubmFtZSk7XHJcbiAgICAgICAgICAgIGNvbnN0IGluZGV4QiA9IG9yZGVyLmluZGV4T2YoYi5uYW1lKTtcclxuICAgICAgICAgICAgaWYgKGluZGV4QSA9PT0gLTEpIHJldHVybiAxO1xyXG4gICAgICAgICAgICBpZiAoaW5kZXhCID09PSAtMSkgcmV0dXJuIC0xO1xyXG4gICAgICAgICAgICByZXR1cm4gaW5kZXhBIC0gaW5kZXhCO1xyXG4gICAgICAgIH0pO1xyXG5cclxuICAgIH1cclxuXHJcbiAgICBzZXRQYXJ0aWNsZVNvcnQoKSB7XHJcbiAgICAgICAgY29uc3Qgb3JkZXIgPSBbJ3RvcCcsICdib3QnLCAncmlnJywgJ2xlZiddO1xyXG4gICAgICAgIHRoaXMucGFydGljbGVFZmZlY3RzLnNvcnQoKGEsIGIpID0+IHtcclxuICAgICAgICAgICAgY29uc3QgaW5kZXhBID0gb3JkZXIuaW5kZXhPZihhLm5hbWUuc3Vic3RyKDAsIDMpKTtcclxuICAgICAgICAgICAgY29uc3QgaW5kZXhCID0gb3JkZXIuaW5kZXhPZihiLm5hbWUuc3Vic3RyKDAsIDMpKTtcclxuICAgICAgICAgICAgaWYgKGluZGV4QSA9PT0gLTEpIHJldHVybiAxO1xyXG4gICAgICAgICAgICBpZiAoaW5kZXhCID09PSAtMSkgcmV0dXJuIC0xO1xyXG4gICAgICAgICAgICByZXR1cm4gaW5kZXhBIC0gaW5kZXhCO1xyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG5cclxuICAgIHNldFNvcnQoKSB7XHJcbiAgICAgICAgdGhpcy5CbG9ja19BcnJheS5zb3J0KChhLCBiKSA9PiB7XHJcbiAgICAgICAgICAgIC8vIOS7juWQjeensOS4reaPkOWPluaVsOWtl+mDqOWIhlxyXG4gICAgICAgICAgICBjb25zdCBudW1iZXJBID0gcGFyc2VJbnQoYS5uYW1lLm1hdGNoKC9cXGQrLyk/LlswXSB8fCAnMCcsIDEwKTtcclxuICAgICAgICAgICAgY29uc3QgbnVtYmVyQiA9IHBhcnNlSW50KGIubmFtZS5tYXRjaCgvXFxkKy8pPy5bMF0gfHwgJzAnLCAxMCk7XHJcbiAgICAgICAgICAgIHJldHVybiBudW1iZXJBIC0gbnVtYmVyQjtcclxuICAgICAgICB9KTtcclxuICAgIH1cclxuXHJcbiAgICBzdGFydCgpIHtcclxuXHJcbiAgICB9XHJcblxyXG4gICAgc3RhcnRHYW1lKCkge1xyXG4gICAgICAgIGNvbnNvbGUubG9nKFwi6L+b5YWl5Zy65pmv5LmL5YmNX19fX19fX19fX19fX1wiLCBjYy5meC5HYW1lQ29uZmlnLkdNX0lORk8uZmlyc3QpO1xyXG4gICAgICAgIGNjLmRpcmVjdG9yLmxvYWRTY2VuZShcIkhvbWVTY2VuZVwiKTtcclxuICAgIH1cclxuXHJcbiAgICByZXR1cm5Ib21lKCkge1xyXG4gICAgICAgIGNjLnR3ZWVuKHRoaXMubm9kZS5nZXRDaGlsZEJ5TmFtZShcIkdhbWVcIikpXHJcbiAgICAgICAgICAgIC50bygwLjUsIHsgb3BhY2l0eTogMTAwIH0pXHJcbiAgICAgICAgICAgIC5jYWxsKCgpID0+IHtcclxuXHJcbiAgICAgICAgICAgICAgICAvLyDpooTliqDovb3miJDlip/lkI7liqDovb3lnLrmma9cclxuICAgICAgICAgICAgICAgIGNjLmRpcmVjdG9yLmxvYWRTY2VuZShcIkhvbWVTY2VuZVwiLCAoZXJyKSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKGVycikge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zb2xlLmVycm9yKCfliqDovb0gSG9tZVNjZW5lIOWcuuaZr+Wksei0pTonLCBlcnIpO1xyXG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNjLmRpcmVjdG9yLmxvYWRTY2VuZShcIkhvbWVTY2VuZVwiKTtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgfSlcclxuICAgICAgICAgICAgLnN0YXJ0KCk7XHJcblxyXG4gICAgICAgIGNjLnR3ZWVuKHRoaXMubm9kZS5nZXRDaGlsZEJ5TmFtZShcIm1hc2tcIikpXHJcbiAgICAgICAgICAgIC50bygwLjUsIHsgb3BhY2l0eTogMjU1IH0pXHJcbiAgICAgICAgICAgIC5zdGFydCgpO1xyXG5cclxuICAgICAgICAvLyBjYy5sb2FkZXIucmVsZWFzZUFsbCgpO1xyXG4gICAgICAgIC8vIOmihOWKoOi9vSBIb21lU2NlbmUg5Zy65pmvXHJcblxyXG5cclxuICAgIH1cclxuXHJcblxyXG4gICAgcmVhZFVzZXJEYXRhKHJldHJ5Q291bnQgPSAwKSB7XHJcbiAgICAgICAgLy9AdHMtaWdub3JlXHJcbiAgICAgICAgaWYgKHR5cGVvZiB3eCAhPT0gJ3VuZGVmaW5lZCcgJiYgd3ggIT09IG51bGwpIHtcclxuICAgICAgICAgICAgbGV0IGxldmVsSW5mbyA9IGNjLmZ4LlN0b3JhZ2VNZXNzYWdlLmdldFN0b3JhZ2UoXCJsZXZlbFwiKTtcclxuICAgICAgICAgICAgLy/ml6fnmoTor7vlj5bmlbDmja7orr7nva7mlbDmja7mlrnms5Us5Lul5by66IGU572R5Li65Li7XHJcbiAgICAgICAgICAgIGlmIChsZXZlbEluZm8gPT0gdW5kZWZpbmVkIHx8IGxldmVsSW5mbyA9PSBcIlwiIHx8IGxldmVsSW5mbyA9PSBudWxsKSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLm9sZFJlYWREYXRhKHJldHJ5Q291bnQpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIC8v5paw55qE6K+75Y+W5pWw5o2u6K6+572u5pa55rOV77yM5Lul5pys5Zyw5Li65Li7XHJcbiAgICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5uZXdSZWFkRGF0YSgpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGNvbnNvbGUubG9nKFwi5Y2z5bCG6K+75Y+W5L2T5Yqb5YC8XCIpO1xyXG4gICAgICAgICAgICBjYy5meC5HYW1lVG9vbC5nZXRIZWFsdGgoKGRhdGEpID0+IHtcclxuICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKFwi5L2T5Yqb5YC85a6M5oiQ6L+b5YWl5ri45oiPXCIpO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5sb2FkNSA9IHRydWU7XHJcbiAgICAgICAgICAgIH0pO1xyXG5cclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgIHRoaXMubG9hZDMgPSB0cnVlO1xyXG4gICAgICAgICAgICB0aGlzLmxvYWQ0ID0gdHJ1ZTtcclxuICAgICAgICAgICAgdGhpcy5sb2FkNSA9IHRydWU7XHJcbiAgICAgICAgICAgIGNjLmZ4LkdhbWVUb29sLmdldEhlYWx0aChudWxsKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgLy8g5a2Y5YKo55So5oi35pWw5o2uXHJcbiAgICB9XHJcblxyXG4gICAgcmVhZE11c2ljQ29uZmlnKCkge1xyXG4gICAgICAgIGxldCBhdWRpb0luZm8gPSBjYy5meC5TdG9yYWdlTWVzc2FnZS5nZXRTdG9yYWdlKFwibXVzaWNcIik7XHJcbiAgICAgICAgaWYgKGF1ZGlvSW5mbyA9PSB1bmRlZmluZWQgfHwgYXVkaW9JbmZvID09IFwiXCIgfHwgYXVkaW9JbmZvID09IG51bGwpIHtcclxuICAgICAgICAgICAgYXVkaW9JbmZvID0ge1xyXG4gICAgICAgICAgICAgICAgXCJtdXNpY09wZW5cIjogdHJ1ZSwgICAgICAgICAgICAgLy/pn7PkuZBcclxuICAgICAgICAgICAgICAgIFwiZWZmZWN0T3BlblwiOiB0cnVlLCAgICAgICAgICAgIC8v6Z+z5pWIXHJcbiAgICAgICAgICAgICAgICBcInZpYnJhdGVPcGVuXCI6IHRydWUsICAgICAgICAgICAvL+mch+WKqFxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGNjLmZ4LlN0b3JhZ2VNZXNzYWdlLnNldFN0b3JhZ2UoXCJtdXNpY1wiLCBhdWRpb0luZm8pO1xyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgY2MuZnguR2FtZUNvbmZpZy5HTV9JTkZPLm11c2ljT3BlbiA9IGF1ZGlvSW5mby5tdXNpY09wZW47XHJcbiAgICAgICAgICAgIGNjLmZ4LkdhbWVDb25maWcuR01fSU5GTy5lZmZlY3RPcGVuID0gYXVkaW9JbmZvLmVmZmVjdE9wZW47XHJcbiAgICAgICAgICAgIGNjLmZ4LkdhbWVDb25maWcuR01fSU5GTy52aWJyYXRlT3BlbiA9IGF1ZGlvSW5mby52aWJyYXRlT3BlbjtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgLy/mlrDnlKjmiLfvvIzmnInmnKzlnLDnvJPlrZjor7vlj5bphY3nva5cclxuICAgIG5ld1JlYWREYXRhKCkge1xyXG4gICAgICAgIGNvbnNvbGUubG9nKFwi6K+75Y+W5paw5L+h5oGvXCIpO1xyXG4gICAgICAgIGxldCBvcGVuaWQgPSBjYy5meC5TdG9yYWdlTWVzc2FnZS5nZXRTdG9yYWdlKFwib3BlbmlkXCIpO1xyXG4gICAgICAgIGlmIChvcGVuaWQgPT0gbnVsbCB8fCBvcGVuaWQgPT0gXCJcIiB8fCBvcGVuaWQgPT0gdW5kZWZpbmVkKSB7XHJcbiAgICAgICAgICAgIGNvbnNvbGUubG9nKFwi5rKh5pyJb3BlbmlkXCIpO1xyXG4gICAgICAgICAgICAvL0B0cy1pZ25vcmVcclxuICAgICAgICAgICAgd3guY2xvdWQuY2FsbEZ1bmN0aW9uKHtcclxuICAgICAgICAgICAgICAgIG5hbWU6ICd1c2VyRGF0YScsXHJcbiAgICAgICAgICAgICAgICBkYXRhOiB7XHJcbiAgICAgICAgICAgICAgICAgICAgYWN0aW9uOiAncmVhZCdcclxuICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgICBzdWNjZXNzOiByZXMgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKCfor7vlj5bnlKjmiLfmlbDmja7miJDlip8nLCByZXMucmVzdWx0KVxyXG4gICAgICAgICAgICAgICAgICAgIGlmIChyZXMucmVzdWx0LmNvZGUgPT0gNDA0ICYmIHJlcy5yZXN1bHQubWVzc2FnZSA9PSBcIuacquaJvuWIsOeUqOaIt+aVsOaNrlwiKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIGVsc2UgaWYgKHJlcy5yZXN1bHQuY29kZSA9PSAyMDApIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHJlcy5yZXN1bHQuZGF0YSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2MuZnguR2FtZUNvbmZpZy5HTV9JTkZPLm9wZW5pZCA9IHJlcy5yZXN1bHQub3BlbmlkO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2MuZnguR2FtZUNvbmZpZy5HTV9JTkZPLnVzZXJuYW1lID0gcmVzLnJlc3VsdC5kYXRhLnVzZXJuYW1lO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2MuZnguR2FtZUNvbmZpZy5HTV9JTkZPLnVzZXJhdmF0YXIgPSByZXMucmVzdWx0LmRhdGEudXNlcmF2YXRhcjtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHJlZ2lzdGVyX3RpbWUgPSByZXMucmVzdWx0LmRhdGEucmVnaXN0ZXJfdGltZTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1pbmlHYW1lU2RrLkFQSS5zaHVzaHVfdXNlclNldChyZWdpc3Rlcl90aW1lKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNjLmZ4LlN0b3JhZ2VNZXNzYWdlLnNldFN0b3JhZ2UoXCJvcGVuaWRcIiwgY2MuZnguR2FtZUNvbmZpZy5HTV9JTkZPLm9wZW5pZCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgICAgZmFpbDogZXJyID0+IHtcclxuICAgICAgICAgICAgICAgICAgICBjb25zb2xlLmVycm9yKCfor7vlj5bnlKjmiLfmlbDmja7lpLHotKUnLCBlcnIpXHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH0pXHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICBpZiAob3BlbmlkKVxyXG4gICAgICAgICAgICAgICAgY2MuZnguR2FtZUNvbmZpZy5HTV9JTkZPLm9wZW5pZCA9IG9wZW5pZDtcclxuICAgICAgICB9XHJcblxyXG5cclxuXHJcbiAgICAgICAgLy/nrYnnuqfkv6Hmga9cclxuICAgICAgICBjYy5meC5HYW1lVG9vbC5nZXRVc2VyTGV2ZWwoKGRhdGEpID0+IHtcclxuICAgICAgICAgICAgY29uc3QgdGltZXN0YW1wID0gRGF0ZS5ub3coKTtcclxuICAgICAgICAgICAgbGV0IGxldmVsSW5mbyA9IGNjLmZ4LlN0b3JhZ2VNZXNzYWdlLmdldFN0b3JhZ2UoXCJsZXZlbFwiKTtcclxuICAgICAgICAgICAgaWYgKGRhdGEucmVzdWx0LmNvZGUgPT0gNDA0ICYmIGRhdGEucmVzdWx0Lm1lc3NhZ2UgPT0gXCLmnKrmib7liLDlhbPljaHmlbDmja5cIikge1xyXG4gICAgICAgICAgICAgICAgLy8gY29uc29sZS5sb2coXCLmsqHmnInnrYnnuqfkv6Hmga/vvIzku47nlKjmiLfmjqXlj6Pmi7/liLDmlbDmja5cIik7XHJcbiAgICAgICAgICAgICAgICBpZiAobGV2ZWxJbmZvLmxldmVsKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgY2MuZnguR2FtZUNvbmZpZy5HTV9JTkZPLmxldmVsID0gbGV2ZWxJbmZvLmxldmVsO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgdGhpcy5sb2FkNCA9IHRydWU7XHJcbiAgICAgICAgICAgICAgICBjYy5meC5HYW1lVG9vbC5zZXRVc2VyTGV2ZWwoKGRhdGEpID0+IHtcclxuICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGVsc2UgaWYgKGRhdGEucmVzdWx0LmNvZGUgPT0gMjAwKSB7XHJcbiAgICAgICAgICAgICAgICAvLyBjb25zb2xlLmxvZyhcIuacieetiee6p+S/oeaBr++8jOS7juWFs+WNoeaOpeWPo+aLv+WIsOaVsOaNrlwiLGRhdGEucmVzdWx0LmRhdGEpO1xyXG4gICAgICAgICAgICAgICAgLy/muLjmiI/liY3nq6/lrZjlgqgg5paw5LqO5pyN5Yqh5Zmo56uvLOS7pea4uOaIj+WJjeerr+S/oeaBr+S4uuS4u++8jOaUvuacjeWKoeWZqOWtmOWCqFxyXG4gICAgICAgICAgICAgICAgbGV0IHRlbXAgPSBkYXRhLnJlc3VsdC50aW1lc3RhbXAgLSBsZXZlbEluZm8udGltZXN0YW1wO1xyXG4gICAgICAgICAgICAgICAgY29uc29sZS5sb2coXCLnrYnnuqfml7bpl7Tlt646XCIsIHRlbXApO1xyXG4gICAgICAgICAgICAgICAgaWYgKChkYXRhLnJlc3VsdC50aW1lc3RhbXAgLSBsZXZlbEluZm8udGltZXN0YW1wKSA8IDEwMDAwKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKGxldmVsSW5mby5sZXZlbCkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zb2xlLmxvZyhcIuS7pea4uOaIj+WJjeerr+etiee6p+S4uuWHhlwiLCBkYXRhLnJlc3VsdC5kYXRhKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgY2MuZnguR2FtZUNvbmZpZy5HTV9JTkZPLmxldmVsID0gbGV2ZWxJbmZvLmxldmVsO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBjb25zb2xlLmxvZyhcIuetiee6p+S4ujpcIixjYy5meC5HYW1lQ29uZmlnLkdNX0lORk8ubGV2ZWwpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBjYy5meC5HYW1lVG9vbC5zZXRVc2VyTGV2ZWwoKGRhdGEpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIC8v5pyN5Yqh5Zmo56uv5a2Y5YKo5pe26Ze05paw5LqO5ri45oiP56uv77yM5Lul5pyN5Yqh5Zmo56uv5Li65Li7LOW+gOWJjeerr+WtmOWCqFxyXG4gICAgICAgICAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgICAgY29uc29sZS5sb2coXCLku6XmnI3liqHlmajnrYnnuqfkuLrlh4ZcIiwgZGF0YS5yZXN1bHQuZGF0YSk7XHJcbiAgICAgICAgICAgICAgICAgICAgY2MuZnguR2FtZUNvbmZpZy5HTV9JTkZPLmxldmVsID0gZGF0YS5yZXN1bHQuZGF0YTtcclxuICAgICAgICAgICAgICAgICAgICBsZXZlbEluZm8ubGV2ZWwgPSBjYy5meC5HYW1lQ29uZmlnLkdNX0lORk8ubGV2ZWw7XHJcbiAgICAgICAgICAgICAgICAgICAgbGV2ZWxJbmZvLnRpbWVzdGFtcCA9IHRpbWVzdGFtcDtcclxuICAgICAgICAgICAgICAgICAgICAvLyBjb25zb2xlLmxvZyhcIjExMTExMTHlrZjlgqjlhbPljaHmlbDmja46XCIsY2MuZnguR2FtZUNvbmZpZy5HTV9JTkZPLmxldmVsKTtcclxuICAgICAgICAgICAgICAgICAgICBjYy5meC5TdG9yYWdlTWVzc2FnZS5zZXRTdG9yYWdlKFwibGV2ZWxcIiwgbGV2ZWxJbmZvKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIHRoaXMubG9hZDQgPSB0cnVlO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfSk7XHJcbiAgICAgICAgLy/ph5HluIHkv6Hmga9cclxuICAgICAgICBjYy5meC5HYW1lVG9vbC5nZXRVc2VyQ29pbigoZGF0YSkgPT4ge1xyXG4gICAgICAgICAgICBjb25zdCB0aW1lc3RhbXAgPSBEYXRlLm5vdygpO1xyXG4gICAgICAgICAgICBsZXQgY29pbkluZm8gPSBjYy5meC5TdG9yYWdlTWVzc2FnZS5nZXRTdG9yYWdlKFwiY29pblwiKTtcclxuICAgICAgICAgICAgaWYgKGRhdGEucmVzdWx0LmNvZGUgPT0gNDA0ICYmIGRhdGEucmVzdWx0Lm1lc3NhZ2UgPT0gXCLmnKrmib7liLDph5HluIHmlbDmja5cIikge1xyXG4gICAgICAgICAgICAgICAgaWYgKGNvaW5JbmZvLmNvaW4pXHJcbiAgICAgICAgICAgICAgICAgICAgY2MuZnguR2FtZUNvbmZpZy5HTV9JTkZPLmNvaW4gPSBjb2luSW5mby5jb2luO1xyXG4gICAgICAgICAgICAgICAgY29uc29sZS5sb2coXCLmsqHmnInph5HluIHkv6Hmga/vvIzku47nlKjmiLfmjqXlj6Pmi7/liLDmlbDmja5cIiwgY2MuZnguR2FtZUNvbmZpZy5HTV9JTkZPLmNvaW4pO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5sb2FkMyA9IHRydWU7XHJcbiAgICAgICAgICAgICAgICBjYy5meC5HYW1lVG9vbC5zZXRVc2VyQ29pbigoZGF0YSkgPT4ge1xyXG4gICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgZWxzZSBpZiAoZGF0YS5yZXN1bHQuY29kZSA9PSAyMDApIHtcclxuICAgICAgICAgICAgICAgIC8vIGNvbnNvbGUubG9nKFwi5pyJ6YeR5biB5L+h5oGv77yM5LuO6YeR5biB5o6l5Y+j5ou/5Yiw5pWw5o2uXCIsZGF0YS5yZXN1bHQuZGF0YSk7XHJcbiAgICAgICAgICAgICAgICAvL+a4uOaIj+WJjeerr+WtmOWCqCDmlrDkuo7mnI3liqHlmajnq68s5Lul5ri45oiP5YmN56uv5L+h5oGv5Li65Li777yM5pS+5pyN5Yqh5Zmo5a2Y5YKoXHJcbiAgICAgICAgICAgICAgICBsZXQgdGVtcCA9IGRhdGEucmVzdWx0LnRpbWVzdGFtcCAtIGNvaW5JbmZvLnRpbWVzdGFtcDtcclxuICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKFwi6YeR5biB5pe26Ze05beuOlwiLCB0ZW1wKTtcclxuICAgICAgICAgICAgICAgIGlmICgoZGF0YS5yZXN1bHQudGltZXN0YW1wIC0gY29pbkluZm8udGltZXN0YW1wKSA8IDEwMDAwKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgY29uc29sZS5sb2coXCLku6XliY3nq6/ph5HluaPkuLrlh4Y6XCIsIGNvaW5JbmZvKTtcclxuICAgICAgICAgICAgICAgICAgICBpZiAoY29pbkluZm8uY29pbilcclxuICAgICAgICAgICAgICAgICAgICAgICAgY2MuZnguR2FtZUNvbmZpZy5HTV9JTkZPLmNvaW4gPSBjb2luSW5mby5jb2luO1xyXG4gICAgICAgICAgICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBjYy5meC5HYW1lQ29uZmlnLkdNX0lORk8uY29pbiA9IGRhdGEucmVzdWx0LmRhdGE7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvaW5JbmZvLmNvaW4gPSBjYy5meC5HYW1lQ29uZmlnLkdNX0lORk8uY29pbjtcclxuICAgICAgICAgICAgICAgICAgICAgICAgY29pbkluZm8udGltZXN0YW1wID0gdGltZXN0YW1wO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zb2xlLmxvZyhcIjExMTExMTExMTExXCIpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBjYy5meC5TdG9yYWdlTWVzc2FnZS5zZXRTdG9yYWdlKFwiY29pblwiLCBjb2luSW5mbyk7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKFwi5pS55Y+Y5ZCO6YeR5biBOlwiLCBjYy5meC5HYW1lQ29uZmlnLkdNX0lORk8uY29pbik7XHJcbiAgICAgICAgICAgICAgICAgICAgY2MuZnguR2FtZVRvb2wuc2V0VXNlckNvaW4oKGRhdGEpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIC8v5pyN5Yqh5Zmo56uv5a2Y5YKo5pe26Ze05paw5LqO5ri45oiP56uv77yM5Lul5pyN5Yqh5Zmo56uv5Li65Li7LOW+gOWJjeerr+WtmOWCqFxyXG4gICAgICAgICAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgICAgY29uc29sZS5sb2coXCLku6XmnI3liqHlmajph5HluaPkuLrlh4Y6XCIsIGRhdGEucmVzdWx0LmRhdGEpO1xyXG4gICAgICAgICAgICAgICAgICAgIGNjLmZ4LkdhbWVDb25maWcuR01fSU5GTy5jb2luID0gZGF0YS5yZXN1bHQuZGF0YTtcclxuICAgICAgICAgICAgICAgICAgICBjb2luSW5mby5jb2luID0gY2MuZnguR2FtZUNvbmZpZy5HTV9JTkZPLmNvaW47XHJcbiAgICAgICAgICAgICAgICAgICAgY29pbkluZm8udGltZXN0YW1wID0gdGltZXN0YW1wO1xyXG4gICAgICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKFwiMjIyMjIyMjIyMlwiKTtcclxuICAgICAgICAgICAgICAgICAgICBjYy5meC5TdG9yYWdlTWVzc2FnZS5zZXRTdG9yYWdlKFwiY29pblwiLCBjb2luSW5mbyk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB0aGlzLmxvYWQzID0gdHJ1ZTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH0pO1xyXG4gICAgICAgIC8v6YGT5YW35L+h5oGvXHJcbiAgICAgICAgY2MuZnguR2FtZVRvb2wuZ2V0VXNlclByb3AoKGRhdGEpID0+IHtcclxuICAgICAgICAgICAgY29uc3QgdGltZXN0YW1wID0gRGF0ZS5ub3coKTtcclxuICAgICAgICAgICAgbGV0IHByb3BJbmZvID0gY2MuZnguU3RvcmFnZU1lc3NhZ2UuZ2V0U3RvcmFnZShcInByb3BcIik7XHJcbiAgICAgICAgICAgIGlmIChkYXRhLnJlc3VsdC5jb2RlID09IDQwNCAmJiBkYXRhLnJlc3VsdC5tZXNzYWdlID09IFwi5pyq5om+5Yiw6YGT5YW35pWw5o2uXCIpIHtcclxuICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKFwi5rKh5pyJ6YGT5YW35L+h5oGv77yM5LuO55So5oi35o6l5Y+j5ou/5Yiw5pWw5o2uXCIsIHByb3BJbmZvKTtcclxuICAgICAgICAgICAgICAgIGlmIChwcm9wSW5mby5mcmVlemVBbW91bnQgPT0gdW5kZWZpbmVkIHx8IHByb3BJbmZvLmhhbW1lckFtb3VudCA9PSB1bmRlZmluZWQgfHwgcHJvcEluZm8ubWFnaWNBbW91bnQgPT0gdW5kZWZpbmVkKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgY29uc29sZS5sb2coXCIyMjIyMjIy6YGT5YW35pWw5o2u5byC5bi4XCIpO1xyXG4gICAgICAgICAgICAgICAgICAgIGNjLmZ4LkdhbWVDb25maWcuR01fSU5GTy5mcmVlemVBbW91bnQgPSAwO1xyXG4gICAgICAgICAgICAgICAgICAgIGNjLmZ4LkdhbWVDb25maWcuR01fSU5GTy5oYW1tZXJBbW91bnQgPSAwO1xyXG4gICAgICAgICAgICAgICAgICAgIGNjLmZ4LkdhbWVDb25maWcuR01fSU5GTy5tYWdpY0Ftb3VuID0gMDtcclxuICAgICAgICAgICAgICAgICAgICBsZXQgcHJvcEluZm9OZXcgPSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFwiZnJlZXplQW1vdW50XCI6IGNjLmZ4LkdhbWVDb25maWcuR01fSU5GTy5mcmVlemVBbW91bnQsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFwiaGFtbWVyQW1vdW50XCI6IGNjLmZ4LkdhbWVDb25maWcuR01fSU5GTy5oYW1tZXJBbW91bnQsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFwibWFnaWNBbW91bnRcIjogY2MuZnguR2FtZUNvbmZpZy5HTV9JTkZPLm1hZ2ljQW1vdW4sXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFwidGltZXN0YW1wXCI6IHRpbWVzdGFtcFxyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICBjb25zb2xlLmxvZyhcIjExMTExMTHkuIrkvKDpgZPlhbfkv6Hmga86XCIsIHByb3BJbmZvTmV3KTtcclxuICAgICAgICAgICAgICAgICAgICBjYy5meC5TdG9yYWdlTWVzc2FnZS5zZXRTdG9yYWdlKFwicHJvcFwiLCBwcm9wSW5mb05ldyk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICAvLyBjYy5meC5HYW1lQ29uZmlnLkdNX0lORk8uZnJlZXplQW1vdW50ID0gZGF0YS5yZXN1bHQuZGF0YS5mcmVlemU7XHJcbiAgICAgICAgICAgICAgICAgICAgLy8gY2MuZnguR2FtZUNvbmZpZy5HTV9JTkZPLmhhbW1lckFtb3VudCA9IGRhdGEucmVzdWx0LmRhdGEuaGFtbWVyO1xyXG4gICAgICAgICAgICAgICAgICAgIC8vIGNjLmZ4LkdhbWVDb25maWcuR01fSU5GTy5tYWdpY0Ftb3VudCA9IGRhdGEucmVzdWx0LmRhdGEubWFnaWNfd2FuZDtcclxuICAgICAgICAgICAgICAgICAgICBjYy5meC5HYW1lQ29uZmlnLkdNX0lORk8uZnJlZXplQW1vdW50ID0gcHJvcEluZm8uZnJlZXplQW1vdW50O1xyXG4gICAgICAgICAgICAgICAgICAgIGNjLmZ4LkdhbWVDb25maWcuR01fSU5GTy5oYW1tZXJBbW91bnQgPSBwcm9wSW5mby5oYW1tZXJBbW91bnQ7XHJcbiAgICAgICAgICAgICAgICAgICAgY2MuZnguR2FtZUNvbmZpZy5HTV9JTkZPLm1hZ2ljQW1vdW50ID0gcHJvcEluZm8ubWFnaWNBbW91bnQ7XHJcbiAgICAgICAgICAgICAgICB9XHJcblxyXG5cclxuICAgICAgICAgICAgICAgIC8vIGNjLmZ4LkdhbWVDb25maWcuR01fSU5GTy5mcmVlemVBbW91bnQgPSBwcm9wSW5mby5mcmVlemVBbW91bnQ7XHJcbiAgICAgICAgICAgICAgICAvLyBjYy5meC5HYW1lQ29uZmlnLkdNX0lORk8uaGFtbWVyQW1vdW50ID0gcHJvcEluZm8uaGFtbWVyQW1vdW50O1xyXG4gICAgICAgICAgICAgICAgLy8gY2MuZnguR2FtZUNvbmZpZy5HTV9JTkZPLm1hZ2ljQW1vdW50ID0gcHJvcEluZm8ubWFnaWNBbW91bnQ7XHJcbiAgICAgICAgICAgICAgICBjYy5meC5HYW1lVG9vbC5zZXRVc2VyUHJvcCgwLCAwLCAoZGF0YSkgPT4ge1xyXG4gICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgZWxzZSBpZiAoZGF0YS5yZXN1bHQuY29kZSA9PSAyMDApIHtcclxuICAgICAgICAgICAgICAgIC8vIGNvbnNvbGUubG9nKFwi5pys5Zyw5pe26Ze05oizXCIscHJvcEluZm8udGltZXN0YW1wLFwi5pyN5Yqh5Zmo5pe26Ze05oizXCIsZGF0YS5yZXN1bHQudGltZXN0YW1wKTtcclxuICAgICAgICAgICAgICAgIGlmICgoZGF0YS5yZXN1bHQudGltZXN0YW1wIC0gcHJvcEluZm8udGltZXN0YW1wKSA8IDEwMDAwKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgY29uc29sZS5sb2coXCLku6XliY3nq6/pgZPlhbfkuLrkuLs6XCIsIHByb3BJbmZvKTtcclxuICAgICAgICAgICAgICAgICAgICBpZiAocHJvcEluZm8uZnJlZXplQW1vdW50ID09IHVuZGVmaW5lZCB8fCBwcm9wSW5mby5oYW1tZXJBbW91bnQgPT0gdW5kZWZpbmVkIHx8IHByb3BJbmZvLm1hZ2ljQW1vdW50ID09IHVuZGVmaW5lZCkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zb2xlLmxvZyhcIjExMTExMemBk+WFt+aVsOaNruW8guW4uFwiLCBkYXRhLnJlc3VsdC5kYXRhKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgY2MuZnguR2FtZUNvbmZpZy5HTV9JTkZPLmZyZWV6ZUFtb3VudCA9IGRhdGEucmVzdWx0LmRhdGEuZnJlZXplO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBjYy5meC5HYW1lQ29uZmlnLkdNX0lORk8uaGFtbWVyQW1vdW50ID0gZGF0YS5yZXN1bHQuZGF0YS5oYW1tZXI7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNjLmZ4LkdhbWVDb25maWcuR01fSU5GTy5tYWdpY0Ftb3VudCA9IGRhdGEucmVzdWx0LmRhdGEubWFnaWNfd2FuZDtcclxuICAgICAgICAgICAgICAgICAgICAgICAgbGV0IHByb3BJbmZvTmV3ID0ge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJmcmVlemVBbW91bnRcIjogY2MuZnguR2FtZUNvbmZpZy5HTV9JTkZPLmZyZWV6ZUFtb3VudCxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiaGFtbWVyQW1vdW50XCI6IGNjLmZ4LkdhbWVDb25maWcuR01fSU5GTy5oYW1tZXJBbW91bnQsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIm1hZ2ljQW1vdW50XCI6IGNjLmZ4LkdhbWVDb25maWcuR01fSU5GTy5tYWdpY0Ftb3VudCxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwidGltZXN0YW1wXCI6IHRpbWVzdGFtcFxyXG4gICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKFwiMzMzMzMz5LiK5Lyg6YGT5YW35L+h5oGvOlwiLCBwcm9wSW5mb05ldyk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNjLmZ4LlN0b3JhZ2VNZXNzYWdlLnNldFN0b3JhZ2UoXCJwcm9wXCIsIHByb3BJbmZvTmV3KTtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKFwi6YGT5YW35pWw5o2u5q2j5bi4XCIpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBjYy5meC5HYW1lQ29uZmlnLkdNX0lORk8uZnJlZXplQW1vdW50ID0gcHJvcEluZm8uZnJlZXplQW1vdW50O1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBjYy5meC5HYW1lQ29uZmlnLkdNX0lORk8uaGFtbWVyQW1vdW50ID0gcHJvcEluZm8uaGFtbWVyQW1vdW50O1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBjYy5meC5HYW1lQ29uZmlnLkdNX0lORk8ubWFnaWNBbW91bnQgPSBwcm9wSW5mby5tYWdpY0Ftb3VudDtcclxuICAgICAgICAgICAgICAgICAgICAgICAgY2MuZnguR2FtZVRvb2wuc2V0VXNlclByb3AoMCwgMCwgKGRhdGEpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgICAgY2MuZnguR2FtZUNvbmZpZy5HTV9JTkZPLmZyZWV6ZUFtb3VudCA9IGRhdGEucmVzdWx0LmRhdGEuZnJlZXplO1xyXG4gICAgICAgICAgICAgICAgICAgIGNjLmZ4LkdhbWVDb25maWcuR01fSU5GTy5oYW1tZXJBbW91bnQgPSBkYXRhLnJlc3VsdC5kYXRhLmhhbW1lcjtcclxuICAgICAgICAgICAgICAgICAgICBjYy5meC5HYW1lQ29uZmlnLkdNX0lORk8ubWFnaWNBbW91bnQgPSBkYXRhLnJlc3VsdC5kYXRhLm1hZ2ljX3dhbmQ7XHJcbiAgICAgICAgICAgICAgICAgICAgbGV0IHByb3BJbmZvTmV3ID0ge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBcImZyZWV6ZUFtb3VudFwiOiBjYy5meC5HYW1lQ29uZmlnLkdNX0lORk8uZnJlZXplQW1vdW50LFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBcImhhbW1lckFtb3VudFwiOiBjYy5meC5HYW1lQ29uZmlnLkdNX0lORk8uaGFtbWVyQW1vdW50LFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBcIm1hZ2ljQW1vdW50XCI6IGNjLmZ4LkdhbWVDb25maWcuR01fSU5GTy5tYWdpY0Ftb3VudCxcclxuICAgICAgICAgICAgICAgICAgICAgICAgXCJ0aW1lc3RhbXBcIjogdGltZXN0YW1wXHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKFwiMjIyMjIyMjLkuIrkvKDpgZPlhbfkv6Hmga86XCIsIHByb3BJbmZvTmV3LCBkYXRhLnJlc3VsdCk7XHJcbiAgICAgICAgICAgICAgICAgICAgY2MuZnguU3RvcmFnZU1lc3NhZ2Uuc2V0U3RvcmFnZShcInByb3BcIiwgcHJvcEluZm9OZXcpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfSk7XHJcbiAgICB9XHJcbiAgICAvL+aXp+eUqOaIt++8jOaXoOacrOWcsOe8k+WtmOivu+WPlumFjee9rlxyXG4gICAgb2xkUmVhZERhdGEocmV0cnlDb3VudDogbnVtYmVyKSB7XHJcbiAgICAgICAgY29uc29sZS5sb2coXCLor7vlj5bml6fkv6Hmga9cIik7XHJcbiAgICAgICAgY29uc3QgTUFYX1JFVFJJRVMgPSAxNTtcclxuICAgICAgICBjb25zdCB0aW1lc3RhbXAgPSBEYXRlLm5vdygpO1xyXG4gICAgICAgIC8vIOivu+WPlueUqOaIt+aVsOaNrlxyXG4gICAgICAgIC8vQHRzLWlnbm9yZVxyXG4gICAgICAgIHd4LmNsb3VkLmNhbGxGdW5jdGlvbih7XHJcbiAgICAgICAgICAgIG5hbWU6ICd1c2VyRGF0YScsXHJcbiAgICAgICAgICAgIGRhdGE6IHtcclxuICAgICAgICAgICAgICAgIGFjdGlvbjogJ3JlYWQnXHJcbiAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgIHN1Y2Nlc3M6IHJlcyA9PiB7XHJcbiAgICAgICAgICAgICAgICBjb25zb2xlLmxvZygn6K+75Y+W55So5oi35pWw5o2u5oiQ5YqfJywgcmVzLnJlc3VsdClcclxuICAgICAgICAgICAgICAgIGlmIChyZXMucmVzdWx0LmNvZGUgPT0gNDA0ICYmIHJlcy5yZXN1bHQubWVzc2FnZSA9PSBcIuacquaJvuWIsOeUqOaIt+aVsOaNrlwiKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKHJlcy5yZXN1bHQub3BlbmlkKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNjLmZ4LkdhbWVDb25maWcuR01fSU5GTy5vcGVuaWQgPSByZXMucmVzdWx0Lm9wZW5pZFxyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICBjYy5meC5HYW1lQ29uZmlnLkdNX0lORk8uZmlyc3QgPSB0cnVlO1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMubG9hZDMgPSB0cnVlO1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMubG9hZDQgPSB0cnVlO1xyXG4gICAgICAgICAgICAgICAgICAgIGxldCBsZXZlbEluZm8gPSB7IFwibGV2ZWxcIjogMCwgXCJ0aW1lc3RhbXBcIjogdGltZXN0YW1wIH07XHJcbiAgICAgICAgICAgICAgICAgICAgY2MuZnguU3RvcmFnZU1lc3NhZ2Uuc2V0U3RvcmFnZShcImxldmVsXCIsIGxldmVsSW5mbyk7XHJcbiAgICAgICAgICAgICAgICAgICAgbGV0IGNvaW5JbmZvID0geyBcImNvaW5cIjogMCwgXCJ0aW1lc3RhbXBcIjogdGltZXN0YW1wIH07XHJcbiAgICAgICAgICAgICAgICAgICAgY29uc29sZS5sb2coXCIzMzMzMzMzMzMzM1wiKTtcclxuICAgICAgICAgICAgICAgICAgICBjYy5meC5TdG9yYWdlTWVzc2FnZS5zZXRTdG9yYWdlKFwiY29pblwiLCBjb2luSW5mbyk7XHJcbiAgICAgICAgICAgICAgICAgICAgbGV0IHByb3BJbmZvID0ge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBcImZyZWV6ZUFtb3VudFwiOiAwLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBcImhhbW1lckFtb3VudFwiOiAwLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBcIm1hZ2ljQW1vdW50XCI6IDAsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFwidGltZXN0YW1wXCI6IHRpbWVzdGFtcCxcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgY2MuZnguU3RvcmFnZU1lc3NhZ2Uuc2V0U3RvcmFnZShcInByb3BcIiwgcHJvcEluZm8pO1xyXG5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgY2MuZnguR2FtZVRvb2wuc2V0VXNlckluZm8oKGRhdGEpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGRhdGEucmVzdWx0LmNvZGUgPT0gMjAwKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zb2xlLmxvZyhcIuS4iuS8oOeUqOaIt+S/oeaBr+aIkOWKn1wiLCBkYXRhKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vQHRzLWlnbm9yZVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgd3guY2xvdWQuY2FsbEZ1bmN0aW9uKHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiAndXNlckRhdGEnLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGE6IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWN0aW9uOiAncmVhZCdcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN1Y2Nlc3M6IHJlcyA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKFwi5LiK5Lyg5ZCO77yM6K+75Y+W55So5oi35L+h5oGv77yM5Li65LiK5oql5rOo5YaM5pe26Ze0XCIpXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChyZXMucmVzdWx0LmNvZGUgPT0gMjAwKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB0aW1lID0gcmVzLnJlc3VsdC5kYXRhLnJlZ2lzdGVyX3RpbWU7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBNaW5pR2FtZVNkay5BUEkuc2h1c2h1X3VzZXJTZXQodGltZSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KVxyXG4gICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgICAgICAgY29uc29sZS5sb2coXCLmnI3liqHlmajkuZ/msqHmnInph5HluIHkv6Hmga9cIiwgY2MuZnguR2FtZUNvbmZpZy5HTV9JTkZPLmNvaW4pO1xyXG4gICAgICAgICAgICAgICAgICAgIGNjLmZ4LkdhbWVUb29sLnNldFVzZXJDb2luKGNjLmZ4LkdhbWVDb25maWcuR01fSU5GTy5jb2luLCAoZGF0YSkgPT4ge1xyXG5cclxuICAgICAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgICAgICAgICBjYy5meC5HYW1lVG9vbC5zZXRVc2VyTGV2ZWwoKGRhdGEpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgY2MuZnguR2FtZUNvbmZpZy5HTV9JTkZPLmZyZWV6ZUFtb3VudCA9IDA7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNjLmZ4LkdhbWVDb25maWcuR01fSU5GTy5oYW1tZXJBbW91bnQgPSAwO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBjYy5meC5HYW1lQ29uZmlnLkdNX0lORk8ubWFnaWNBbW91bnQgPSAwO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBjYy5meC5HYW1lVG9vbC5zZXRVc2VyUHJvcCgwLCAwLCAoZGF0YSkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGRhdGEucmVzdWx0LmNvZGUgPT0gMjAwKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc29sZS5sb2coXCLkuIrkvKDpgZPlhbfkv6Hmga/miJDlip9cIiwgZGF0YSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBNaW5pR2FtZVNkay5BUEkuc2hvd1RvYXN0KFwi572R57uc5byC5bi477yM5q2j5Zyo5Yqq5Yqb5Yqg6L29XCIpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLm9sZFJlYWREYXRhKDApO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sIDEwMDApO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgICAgICAgICB9LCAwKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIGVsc2UgaWYgKHJlcy5yZXN1bHQuY29kZSA9PSAyMDApIHtcclxuICAgICAgICAgICAgICAgICAgICBpZiAocmVzLnJlc3VsdC5kYXRhKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNjLmZ4LkdhbWVDb25maWcuR01fSU5GTy5vcGVuaWQgPSByZXMucmVzdWx0Lm9wZW5pZDtcclxuICAgICAgICAgICAgICAgICAgICAgICAgY2MuZnguR2FtZUNvbmZpZy5HTV9JTkZPLmxldmVsID0gcmVzLnJlc3VsdC5kYXRhLmxldmVsO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBjYy5meC5HYW1lQ29uZmlnLkdNX0lORk8uY29pbiA9IHJlcy5yZXN1bHQuZGF0YS5jb2luQW1vdW50O1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBjYy5meC5HYW1lQ29uZmlnLkdNX0lORk8uZnJlZXplQW1vdW50ID0gcmVzLnJlc3VsdC5kYXRhLmZyZWV6ZUFtb3VudDtcclxuICAgICAgICAgICAgICAgICAgICAgICAgY2MuZnguR2FtZUNvbmZpZy5HTV9JTkZPLmhhbW1lckFtb3VudCA9IHJlcy5yZXN1bHQuZGF0YS5oYW1tZXJBbW91bnQ7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNjLmZ4LkdhbWVDb25maWcuR01fSU5GTy5tYWdpY0Ftb3VudCA9IHJlcy5yZXN1bHQuZGF0YS5tYWdpY0Ftb3VudDtcclxuICAgICAgICAgICAgICAgICAgICAgICAgY2MuZnguR2FtZUNvbmZpZy5HTV9JTkZPLnVzZXJuYW1lID0gcmVzLnJlc3VsdC5kYXRhLnVzZXJuYW1lO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBjYy5meC5HYW1lQ29uZmlnLkdNX0lORk8udXNlcmF2YXRhciA9IHJlcy5yZXN1bHQuZGF0YS51c2VyYXZhdGFyO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBjYy5meC5TdG9yYWdlTWVzc2FnZS5zZXRTdG9yYWdlKFwib3BlbmlkXCIsIGNjLmZ4LkdhbWVDb25maWcuR01fSU5GTy5vcGVuaWQpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCByZWdpc3Rlcl90aW1lID0gcmVzLnJlc3VsdC5kYXRhLnJlZ2lzdGVyX3RpbWU7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIE1pbmlHYW1lU2RrLkFQSS5zaHVzaHVfdXNlclNldChyZWdpc3Rlcl90aW1lKTtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNjLmZ4LkdhbWVUb29sLmdldFVzZXJDb2luKChkYXRhKSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoZGF0YS5yZXN1bHQuY29kZSA9PSA0MDQgJiYgZGF0YS5yZXN1bHQubWVzc2FnZSA9PSBcIuacquaJvuWIsOmHkeW4geaVsOaNrlwiKSB7XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBjb2luSW5mbyA9IHsgXCJjb2luXCI6IDAsIFwidGltZXN0YW1wXCI6IHRpbWVzdGFtcCB9O1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNjLmZ4LkdhbWVDb25maWcuR01fSU5GTy5jb2luID0gMDtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYy5meC5TdG9yYWdlTWVzc2FnZS5zZXRTdG9yYWdlKFwiY29pblwiLCBjb2luSW5mbyk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc29sZS5sb2coXCLmsqHmnInph5HluIHkv6Hmga/vvIzku47nlKjmiLfmjqXlj6Pmi7/liLDmlbDmja5cIiwgY2MuZnguR2FtZUNvbmZpZy5HTV9JTkZPLmNvaW4pO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNjLmZ4LkdhbWVUb29sLnNldFVzZXJDb2luKChkYXRhKSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGNvbnNvbGUubG9nKFwi5LiK5LygXCIsZGF0YSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMubG9hZDMgPSB0cnVlO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSBpZiAoZGF0YS5yZXN1bHQuY29kZSA9PSAyMDApIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBjb25zb2xlLmxvZyhcIuaciemHkeW4geS/oeaBr++8jOS7jumHkeW4geaOpeWPo+aLv+WIsOaVsOaNrlwiLGRhdGEucmVzdWx0LmRhdGEpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNjLmZ4LkdhbWVDb25maWcuR01fSU5GTy5jb2luID0gZGF0YS5yZXN1bHQuZGF0YTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgY29pbkluZm8gPSB7IFwiY29pblwiOiBjYy5meC5HYW1lQ29uZmlnLkdNX0lORk8uY29pbiwgXCJ0aW1lc3RhbXBcIjogdGltZXN0YW1wIH07XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc29sZS5sb2coXCLlrZjlgqjph5HluIHkv6Hmga86XCIsIGNjLmZ4LkdhbWVDb25maWcuR01fSU5GTy5jb2luKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zb2xlLmxvZyhcIjQ0NDQ0NDQ0NDRcIik7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2MuZnguU3RvcmFnZU1lc3NhZ2Uuc2V0U3RvcmFnZShcImNvaW5cIiwgY29pbkluZm8pO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMubG9hZDMgPSB0cnVlO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICB9KVxyXG4gICAgICAgICAgICAgICAgICAgIH0sIDUwMCk7XHJcblxyXG4gICAgICAgICAgICAgICAgICAgIGNjLmZ4LkdhbWVUb29sLmdldFVzZXJMZXZlbCgoZGF0YSkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoZGF0YS5yZXN1bHQuY29kZSA9PSA0MDQgJiYgZGF0YS5yZXN1bHQubWVzc2FnZSA9PSBcIuacquaJvuWIsOWFs+WNoeaVsOaNrlwiKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zb2xlLmxvZyhcIuayoeacieetiee6p+S/oeaBr++8jOS7jueUqOaIt+aOpeWPo+aLv+WIsOaVsOaNrlwiKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBsZXZlbEluZm8gPSB7IFwibGV2ZWxcIjogMCwgXCJ0aW1lc3RhbXBcIjogdGltZXN0YW1wIH07XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBjb25zb2xlLmxvZyhcIjMzMzMzM+WtmOWCqOWFs+WNoeaVsOaNrjpcIixsZXZlbEluZm8pO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2MuZnguR2FtZUNvbmZpZy5HTV9JTkZPLmxldmVsID0gMDtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNjLmZ4LlN0b3JhZ2VNZXNzYWdlLnNldFN0b3JhZ2UoXCJsZXZlbFwiLCBsZXZlbEluZm8pO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2MuZnguR2FtZVRvb2wuc2V0VXNlckxldmVsKChkYXRhKSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc29sZS5sb2coXCLmi7/liLDnmoTmlbDmja5cIiwgZGF0YSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5sb2FkNCA9IHRydWU7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICBlbHNlIGlmIChkYXRhLnJlc3VsdC5jb2RlID09IDIwMCkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc29sZS5sb2coXCLmnInnrYnnuqfkv6Hmga/vvIzku47lhbPljaHmjqXlj6Pmi7/liLDmlbDmja5cIiwgZGF0YS5yZXN1bHQuZGF0YSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYy5meC5HYW1lQ29uZmlnLkdNX0lORk8ubGV2ZWwgPSBkYXRhLnJlc3VsdC5kYXRhO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGxldmVsSW5mbyA9IHsgXCJsZXZlbFwiOiBjYy5meC5HYW1lQ29uZmlnLkdNX0lORk8ubGV2ZWwsIFwidGltZXN0YW1wXCI6IHRpbWVzdGFtcCB9O1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gY29uc29sZS5sb2coXCI0NDQ0NDTlrZjlgqjlhbPljaHkv6Hmga86XCIsbGV2ZWxJbmZvKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNjLmZ4LlN0b3JhZ2VNZXNzYWdlLnNldFN0b3JhZ2UoXCJsZXZlbFwiLCBsZXZlbEluZm8pO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5sb2FkNCA9IHRydWU7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICB9KVxyXG4gICAgICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBjYy5meC5HYW1lVG9vbC5nZXRVc2VyUHJvcCgoZGF0YSkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGRhdGEucmVzdWx0LmNvZGUgPT0gNDA0ICYmIGRhdGEucmVzdWx0Lm1lc3NhZ2UgPT0gXCLmnKrmib7liLDpgZPlhbfmlbDmja5cIikge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKFwi5rKh5pyJ6YGT5YW35L+h5oGv77yM5LuO55So5oi35o6l5Y+j5ou/5Yiw5pWw5o2uXCIpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNjLmZ4LkdhbWVDb25maWcuR01fSU5GTy5mcmVlemVBbW91bnQgPSAwO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNjLmZ4LkdhbWVDb25maWcuR01fSU5GTy5oYW1tZXJBbW91bnQgPSAwO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNjLmZ4LkdhbWVDb25maWcuR01fSU5GTy5tYWdpY0Ftb3VudCA9IDA7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IHByb3BJbmZvID0ge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcImZyZWV6ZUFtb3VudFwiOiAwLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcImhhbW1lckFtb3VudFwiOiAwLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIm1hZ2ljQW1vdW50XCI6IDAsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwidGltZXN0YW1wXCI6IHRpbWVzdGFtcCxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc29sZS5sb2coXCLkuIrkvKDpgZPlhbfkv6Hmga86XCIsIHByb3BJbmZvKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYy5meC5TdG9yYWdlTWVzc2FnZS5zZXRTdG9yYWdlKFwicHJvcFwiLCBwcm9wSW5mbyk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2MuZnguR2FtZVRvb2wuc2V0VXNlclByb3AoMCwgMCwgKGRhdGEpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgaWYgKGRhdGEucmVzdWx0LmNvZGUgPT0gMjAwKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc29sZS5sb2coXCLmnInpgZPlhbfkv6Hmga/vvIzku47pgZPlhbfmjqXlj6Pmi7/liLDmlbDmja5cIiwgZGF0YS5yZXN1bHQuZGF0YSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2MuZnguR2FtZUNvbmZpZy5HTV9JTkZPLmZyZWV6ZUFtb3VudCA9IGRhdGEucmVzdWx0LmRhdGEuZnJlZXplIHx8IDA7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2MuZnguR2FtZUNvbmZpZy5HTV9JTkZPLmhhbW1lckFtb3VudCA9IGRhdGEucmVzdWx0LmRhdGEuaGFtbWVyIHx8IDA7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2MuZnguR2FtZUNvbmZpZy5HTV9JTkZPLm1hZ2ljQW1vdW50ID0gZGF0YS5yZXN1bHQuZGF0YS5tYWdpY193YW5kIHx8IDA7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IHByb3BJbmZvID0ge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcImZyZWV6ZUFtb3VudFwiOiBjYy5meC5HYW1lQ29uZmlnLkdNX0lORk8uZnJlZXplQW1vdW50LFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcImhhbW1lckFtb3VudFwiOiBjYy5meC5HYW1lQ29uZmlnLkdNX0lORk8uaGFtbWVyQW1vdW50LFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIm1hZ2ljQW1vdW50XCI6IGNjLmZ4LkdhbWVDb25maWcuR01fSU5GTy5tYWdpY0Ftb3VudCxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJ0aW1lc3RhbXBcIjogdGltZXN0YW1wLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zb2xlLmxvZyhcIuS4iuS8oOmBk+WFt+S/oeaBrzpcIiwgcHJvcEluZm8pO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNjLmZ4LlN0b3JhZ2VNZXNzYWdlLnNldFN0b3JhZ2UoXCJwcm9wXCIsIHByb3BJbmZvKTtcclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pXHJcbiAgICAgICAgICAgICAgICAgICAgfSwgMCk7XHJcblxyXG4gICAgICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgZmFpbDogZXJyID0+IHtcclxuICAgICAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoJ+ivu+WPlueUqOaIt+aVsOaNruWksei0pScsIGVycilcclxuICAgICAgICAgICAgICAgIGlmIChyZXRyeUNvdW50IDwgTUFYX1JFVFJJRVMpIHtcclxuICAgICAgICAgICAgICAgICAgICBjb25zb2xlLmVycm9yKGDor7vlj5bnlKjmiLfmlbDmja7lpLHotKXvvIznrKwgJHtyZXRyeUNvdW50ICsgMX0g5qyh6YeN6K+V77yM6ZSZ6K+v5L+h5oGvOmAsIGVycik7XHJcbiAgICAgICAgICAgICAgICAgICAgLy8g5bu26L+fIDIg56eS5ZCO6YeN6K+VXHJcbiAgICAgICAgICAgICAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMucmVhZFVzZXJEYXRhKHJldHJ5Q291bnQgKyAxKTtcclxuICAgICAgICAgICAgICAgICAgICB9LCAyMDAwKTtcclxuICAgICAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgICAgY29uc29sZS5lcnJvcign6K+75Y+W55So5oi35pWw5o2u5aSx6LSl77yM6L6+5Yiw5pyA5aSn6YeN6K+V5qyh5pWw77yM6YCA5Ye65ri45oiPJywgZXJyKTtcclxuICAgICAgICAgICAgICAgICAgICAvLyDpgIDlh7rmuLjmiI9cclxuICAgICAgICAgICAgICAgICAgICBjYy5nYW1lLmVuZCgpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfSlcclxuICAgIH1cclxuXHJcbiAgICBzZXRVc2VyRGF0YSgpIHtcclxuICAgICAgICBjYy5meC5HYW1lQ29uZmlnLkdhbWVUb29sKChkYXRhKSA9PiB7XHJcbiAgICAgICAgICAgIGNvbnNvbGUubG9nKFwi5LiK5LygXCIsIGRhdGEpO1xyXG4gICAgICAgIH0pXHJcbiAgICB9XHJcblxyXG4gICAgc3RhcnRUaW1lQ3V0RG93bigpIHtcclxuICAgICAgICB0aGlzLnNjaGVkdWxlQ2FsbGJhY2sgPSBmdW5jdGlvbiAoKSB7XHJcbiAgICAgICAgICAgIGlmICh0aGlzLnRpbWVOdW1iZXIgPD0gMCkge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5zdG9wVGltZUN1dERvd24oKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgICAgIHRoaXMudGltZU51bWJlciAtPSAxO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfS5iaW5kKHRoaXMpO1xyXG4gICAgICAgIHRoaXMuc2NoZWR1bGUodGhpcy5zY2hlZHVsZUNhbGxiYWNrLCAxKTtcclxuICAgIH1cclxuXHJcbiAgICBzdG9wVGltZUN1dERvd24oKSB7XHJcbiAgICAgICAgaWYgKHRoaXMuc2NoZWR1bGVDYWxsYmFjaykge1xyXG4gICAgICAgICAgICB0aGlzLnVuc2NoZWR1bGUodGhpcy5zY2hlZHVsZUNhbGxiYWNrKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgdXBkYXRlKGR0KSB7XHJcbiAgICAgICAgaWYgKHRoaXMubG9hZDEgJiYgdGhpcy5sb2FkMiAmJiB0aGlzLmxvYWQzICYmIHRoaXMubG9hZDQgJiYgdGhpcy5sb2FkNSAmJiB0aGlzLnRpbWVOdW1iZXIgPD0gMCkge1xyXG4gICAgICAgICAgICB0aGlzLmxvYWQxID0gdGhpcy5sb2FkMiA9IGZhbHNlO1xyXG4gICAgICAgICAgICBNaW5pR2FtZVNkay5BUEkuc2h1c2h1X0luaXQoKTtcclxuICAgICAgICAgICAgdGhpcy5zdGFydEdhbWUoKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcbn1cclxuIl19 \ No newline at end of file diff --git a/temp/quick-scripts/dst/assets/Script/Map.js b/temp/quick-scripts/dst/assets/Script/Map.js index f1bbb74..636bb7d 100644 --- a/temp/quick-scripts/dst/assets/Script/Map.js +++ b/temp/quick-scripts/dst/assets/Script/Map.js @@ -156,6 +156,8 @@ var MapConroler = /** @class */ (function (_super) { this.timeLabel = this.node.parent.getChildByName("Top").getChildByName("time"); this.levelLabel = this.node.parent.getChildByName("Top").getChildByName("level"); this.timeNumber = cc.fx.GameConfig.LEVEL_INFO[0].time; + this.count_Time = 0; + this.add_Time = 0; NumberToImage_1.default.getTimeMargin(this.timeNumber, 50, "time_", this.timeLabel); // var timeTemp = cc.fx.GameTool.getTimeMargin(this.timeNumber); // this.timeLabel.string = timeTemp.toString(); @@ -1939,8 +1941,4 @@ cc._RF.pop(); }); } })(); -<<<<<<< HEAD -//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImFzc2V0c1xcU2NyaXB0XFxNYXAudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLG9CQUFvQjtBQUNwQix3RUFBd0U7QUFDeEUsbUJBQW1CO0FBQ25CLGtGQUFrRjtBQUNsRiw4QkFBOEI7QUFDOUIsa0ZBQWtGOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFFbEYsNkNBQXdDO0FBRXhDLGlEQUE0QztBQUM1QyxpREFBZ0Q7QUFFMUMsSUFBQSxLQUFzQixFQUFFLENBQUMsVUFBVSxFQUFsQyxPQUFPLGFBQUEsRUFBRSxRQUFRLGNBQWlCLENBQUM7QUFLMUM7SUFBeUMsK0JBQVk7SUFBckQ7UUFBQSxxRUFpK0RDO1FBNTlERyxpQkFBVyxHQUFzQixFQUFFLENBQUM7UUFHcEMsZ0JBQVUsR0FBc0IsRUFBRSxDQUFDO1FBR25DLG9CQUFjLEdBQWMsSUFBSSxDQUFDO1FBR2pDLGlCQUFXLEdBQTJCLEVBQUUsQ0FBQztRQUl6QyxpQkFBVyxHQUFzQixFQUFFLENBQUM7UUFLcEMsb0JBQWMsR0FBYyxJQUFJLENBQUM7UUFHakMsYUFBTyxHQUFjLElBQUksQ0FBQztRQUUxQixnQkFBVSxHQUFjLElBQUksQ0FBQztRQUU3QixjQUFRLEdBQWMsSUFBSSxDQUFDO1FBRzNCLFVBQUksR0FBWSxJQUFJLENBQUM7UUFHckIsY0FBUSxHQUFhLElBQUksQ0FBQztRQUUxQixpQkFBVyxHQUFhLElBQUksQ0FBQztRQUU3QixnQkFBVSxHQUFhLElBQUksQ0FBQztRQUc1QixlQUFTLEdBQVksSUFBSSxDQUFDO1FBRzFCLGdCQUFVLEdBQVksSUFBSSxDQUFDO1FBRzNCLGdCQUFVLEdBQVksSUFBSSxDQUFDO1FBSTNCLGFBQU8sR0FBWSxJQUFJLENBQUM7UUFFeEIsZUFBUyxHQUFZLElBQUksQ0FBQztRQUMxQixnQkFBVSxHQUFZLElBQUksQ0FBQztRQUUzQixjQUFRLEdBQVcsQ0FBQyxDQUFDO1FBQ3JCLGNBQVEsR0FBVyxDQUFDLENBQUM7UUFDckIsZUFBUyxHQUFXLENBQUMsQ0FBQztRQUN0QixhQUFPLEdBQVcsQ0FBQyxDQUFDO1FBQ3BCLGNBQVEsR0FBVyxDQUFDLENBQUM7UUFVckIsa0JBQVksR0FBVyxJQUFJLENBQUMsQ0FBQSxRQUFRO1FBQ3BDLG1CQUFhLEdBQVksSUFBSSxDQUFDLENBQUEsV0FBVztRQUN6QyxjQUFRLEdBQVksS0FBSyxDQUFDLENBQUEsUUFBUTtRQUNsQyxhQUFPLEdBQVksS0FBSyxDQUFDLENBQUEsUUFBUTtRQUNqQyxlQUFTLEdBQVksS0FBSyxDQUFDLENBQUEsUUFBUTtRQUNuQyxnQkFBVSxHQUFXLENBQUMsQ0FBQyxDQUFDLFlBQVk7UUFDcEMsZ0JBQVUsR0FBVyxDQUFDLENBQUMsQ0FBQyxXQUFXO1FBQ25DLGNBQVEsR0FBVyxDQUFDLENBQUMsQ0FBRyxNQUFNO1FBRTlCLFdBQUssR0FBVyxLQUFLLENBQUMsQ0FBQSxNQUFNO1FBQzVCLFlBQU0sR0FBVyxLQUFLLENBQUMsQ0FBQSxNQUFNOztJQSs0RGpDLENBQUM7b0JBaitEb0IsV0FBVztJQTZGNUIsNEJBQTRCO0lBRTVCLDRCQUFNLEdBQU47UUFBQSxpQkFvQ0M7UUFsQ0csRUFBRSxDQUFDLEVBQUUsQ0FBQyxVQUFVLENBQUMsT0FBTyxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUM7UUFDcEMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxVQUFVLENBQUMsT0FBTyxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUM7UUFDMUMsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLEdBQUcsQ0FBQyxDQUFDO1FBQ3RCLElBQUksQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLFVBQVUsQ0FBQyxDQUFDLE1BQU0sR0FBRyxHQUFHLENBQUM7UUFDbEQsRUFBRSxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsRUFBRSxDQUFDLENBQUM7UUFDekIsRUFBRSxDQUFDLEVBQUUsQ0FBQyxZQUFZLENBQUMsU0FBUyxDQUFDLFVBQVUsQ0FBQyxRQUFRLEVBQUMsSUFBSSxDQUFDLENBQUM7UUFDdkQsSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxjQUFjLENBQUMsWUFBWSxDQUFDLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQztRQUMxRSxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLGNBQWMsQ0FBQyxZQUFZLENBQUMsQ0FBQyxZQUFZLENBQUMsRUFBRSxDQUFDLFFBQVEsQ0FBQyxDQUFDLFlBQVksQ0FBQyxDQUFDLEVBQUMsTUFBTSxFQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ25ILElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsY0FBYyxDQUFDLFlBQVksQ0FBQyxDQUFDLFlBQVksQ0FBQyxFQUFFLENBQUMsUUFBUSxDQUFDLENBQUMsbUJBQW1CLENBQUMsVUFBQyxLQUFLO1lBQzVHLElBQUksS0FBSyxDQUFDLFNBQVMsQ0FBQyxJQUFJLEtBQUssTUFBTSxFQUFFO2dCQUNqQyxlQUFlO2dCQUNmLEtBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsY0FBYyxDQUFDLFlBQVksQ0FBQyxDQUFDLE1BQU0sR0FBRyxLQUFLLENBQUM7YUFDOUU7UUFDTCxDQUFDLENBQUMsQ0FBQztRQUNILElBQUksQ0FBQyxNQUFNLEdBQUcsRUFBRSxDQUFDO1FBQ2pCLElBQUksQ0FBQyxTQUFTLEdBQUcsRUFBRSxDQUFDLENBQUMsSUFBSTtRQUN6QixJQUFJLENBQUMsVUFBVSxHQUFHLEVBQUUsQ0FBQyxDQUFDLElBQUk7UUFDMUIsSUFBSSxDQUFDLFFBQVEsR0FBRyxFQUFFLENBQUMsQ0FBQyxJQUFJO1FBQ3hCLElBQUksQ0FBQyxXQUFXLEdBQUcsRUFBRSxDQUFDLENBQUMsSUFBSTtRQUMzQixJQUFJLENBQUMsT0FBTyxHQUFHLEtBQUssQ0FBQztRQUNyQixJQUFJLENBQUMsUUFBUSxHQUFHLEtBQUssQ0FBQztRQUN0QixJQUFJLENBQUMsU0FBUyxHQUFHLEtBQUssQ0FBQztRQUN2QixJQUFJLENBQUMsWUFBWSxHQUFHLElBQUksQ0FBQztRQUN6QixJQUFJLENBQUMsYUFBYSxHQUFHLElBQUksQ0FBQztRQUMxQixJQUFJLENBQUMsUUFBUSxHQUFHLENBQUMsQ0FBQztRQUNsQixJQUFJLENBQUMsVUFBVSxHQUFHLENBQUMsQ0FBQztRQUNwQixJQUFJLENBQUMsUUFBUSxHQUFHLENBQUMsQ0FBQztRQUVsQixJQUFJLENBQUMsUUFBUSxDQUFDLE1BQU0sR0FBRyxFQUFFLENBQUMsRUFBRSxDQUFDLFVBQVUsQ0FBQyxPQUFPLENBQUMsWUFBWSxDQUFDLFFBQVEsRUFBRSxDQUFDO1FBQ3hFLElBQUksQ0FBQyxXQUFXLENBQUMsTUFBTSxHQUFHLEVBQUUsQ0FBQyxFQUFFLENBQUMsVUFBVSxDQUFDLE9BQU8sQ0FBQyxZQUFZLENBQUMsUUFBUSxFQUFFLENBQUM7UUFDM0UsSUFBSSxDQUFDLFVBQVUsQ0FBQyxNQUFNLEdBQUcsRUFBRSxDQUFDLEVBQUUsQ0FBQyxVQUFVLENBQUMsT0FBTyxDQUFDLFdBQVcsQ0FBQyxRQUFRLEVBQUUsQ0FBQztRQUV6RSx5Q0FBeUM7UUFDekMsYUFBVyxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUM7SUFDakMsQ0FBQztJQUVELDJCQUFLLEdBQUw7UUFDSSxVQUFVLENBQUM7WUFDRixFQUFFLENBQUMsUUFBUSxDQUFDLFlBQVksQ0FBQyxXQUFXLEVBQUUsVUFBQyxHQUFHLEVBQUUsS0FBSztnQkFDbEQsSUFBSSxHQUFHLEVBQUU7b0JBQ0wsT0FBTyxDQUFDLEtBQUssQ0FBQyxvQkFBb0IsRUFBRSxHQUFHLENBQUMsQ0FBQztvQkFDekMsT0FBTztpQkFDVjtZQUNMLENBQUMsQ0FBQyxDQUFDO1FBQ1AsQ0FBQyxFQUFFLElBQUksQ0FBQyxDQUFDO1FBQ1QsOEJBQThCO1FBQzlCLElBQUksQ0FBQyxXQUFXLEdBQUcscUJBQVcsQ0FBQyxTQUFTLENBQUMsV0FBVyxDQUFDO1FBQ3JELElBQUksQ0FBQyxXQUFXLEdBQUcscUJBQVcsQ0FBQyxTQUFTLENBQUMsV0FBVyxDQUFDO1FBQ3JELElBQUksQ0FBQyxXQUFXLEdBQUcscUJBQVcsQ0FBQyxTQUFTLENBQUMsV0FBVyxDQUFDO1FBQ3JELGdFQUFnRTtRQUVoRSxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUM7SUFFbkIsQ0FBQztJQUVELGlDQUFXLEdBQVg7UUFDSSxJQUFHLElBQUksQ0FBQyxTQUFTLElBQUksS0FBSyxFQUFDO1lBQ3ZCLElBQUksQ0FBQyxTQUFTLEdBQUcsSUFBSSxDQUFDO1lBQ3RCLGNBQWM7WUFDZCxPQUFPLENBQUMsR0FBRyxDQUFDLGlCQUFpQixDQUFDLENBQUM7WUFDL0IsRUFBRSxDQUFDLEVBQUUsQ0FBQyxRQUFRLENBQUMsWUFBWSxDQUFDLGFBQWEsQ0FBQyxDQUFDO1lBQzNDLElBQUksQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDO1lBQ3hCLEtBQUksSUFBSSxDQUFDLEdBQUUsQ0FBQyxFQUFFLENBQUMsR0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLE1BQU0sRUFBRSxDQUFDLEVBQUUsRUFBQztnQkFDcEMsSUFBRyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLFlBQVksQ0FBQyxPQUFPLENBQUMsQ0FBQyxJQUFJLElBQUksQ0FBQyxFQUFDO29CQUM5QyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLGNBQWMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxZQUFZLENBQUMsTUFBTSxDQUFDLENBQUMsU0FBUyxFQUFFLENBQUM7aUJBQzFFO2FBQ0o7U0FDSjtJQUNMLENBQUM7SUFFRCw2QkFBTyxHQUFQO1FBQ0ksZ0RBQWdEO1FBQ2hELElBQUksQ0FBQyxTQUFTLEdBQUksSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsY0FBYyxDQUFDLEtBQUssQ0FBQyxDQUFDLGNBQWMsQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUNoRixJQUFJLENBQUMsVUFBVSxHQUFJLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLGNBQWMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxjQUFjLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDbEYsSUFBSSxDQUFDLFVBQVUsR0FBRyxFQUFFLENBQUMsRUFBRSxDQUFDLFVBQVUsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDO1FBRXRELHVCQUFhLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxVQUFVLEVBQUMsRUFBRSxFQUFDLE9BQU8sRUFBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUE7UUFDdEUsZ0VBQWdFO1FBQ2hFLCtDQUErQztRQUMvQyx1QkFBYSxDQUFDLGtCQUFrQixDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxVQUFVLENBQUMsT0FBTyxDQUFDLEtBQUssR0FBQyxDQUFDLENBQUMsRUFBQyxFQUFFLEVBQUMsRUFBRSxFQUFDLFFBQVEsRUFBQyxJQUFJLENBQUMsVUFBVSxFQUFDLEtBQUssQ0FBQyxDQUFBO1FBRXpHLDBCQUEwQjtRQUUxQixJQUFJLENBQUMsUUFBUSxHQUFHLEVBQUUsQ0FBQyxFQUFFLENBQUMsVUFBVSxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDdEQsSUFBSSxDQUFDLFNBQVMsR0FBRyxFQUFFLENBQUMsRUFBRSxDQUFDLFVBQVUsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQ3ZELElBQUksR0FBRyxHQUFHLEVBQUUsQ0FBQyxFQUFFLENBQUMsVUFBVSxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUM7UUFDN0MsSUFBSSxRQUFRLEdBQUcsRUFBRSxDQUFDLEVBQUUsQ0FBQyxVQUFVLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQztRQUV2RCxJQUFJLENBQUMsS0FBSyxHQUFHLEtBQUssQ0FBQztRQUNuQixJQUFJLENBQUMsTUFBTSxHQUFHLEtBQUssQ0FBQztRQUNwQixJQUFJLENBQUMsT0FBTyxHQUFHLENBQUMsQ0FBQztRQUNqQixJQUFJLENBQUMsVUFBVSxFQUFFLENBQUM7UUFDbEIsSUFBSSxDQUFDLE1BQU0sR0FBRyxFQUFFLENBQUM7UUFDakIsSUFBSSxDQUFDLGFBQWEsR0FBRyxFQUFFLENBQUM7UUFDeEIsSUFBSSxDQUFDLE9BQU8sR0FBRyxFQUFFLENBQUM7UUFDbEIsSUFBSSxDQUFDLFFBQVEsR0FBRyxFQUFFLENBQUM7UUFDbkIsSUFBSSxDQUFDLFFBQVEsR0FBRyxFQUFFLENBQUM7UUFDbkIsSUFBSSxDQUFDLFNBQVMsR0FBRyxFQUFFLENBQUM7UUFDcEIsSUFBSSxDQUFDLFVBQVUsR0FBRyxFQUFFLENBQUM7UUFDckIsSUFBSSxDQUFDLGFBQWEsR0FBRyxFQUFFLENBQUM7UUFDeEIsSUFBSSxDQUFDLGFBQWEsR0FBRyxFQUFFLENBQUM7UUFDeEIsSUFBSSxDQUFDLFdBQVcsR0FBRyxFQUFFLENBQUM7UUFDdEIsSUFBSSxDQUFDLFVBQVUsR0FBRyxFQUFFLENBQUM7UUFDckIsSUFBSSxDQUFDLFVBQVUsR0FBRyxDQUFDLENBQUM7UUFDcEIsSUFBSSxDQUFDLFFBQVEsR0FBRyxDQUFDLENBQUM7UUFFbEIsSUFBSSxNQUFNLEdBQUksSUFBSSxDQUFDLFFBQVEsR0FBQyxDQUFDLElBQUUsQ0FBQyxDQUFBLENBQUMsQ0FBQSxDQUFDLENBQUMsSUFBSSxDQUFDLFFBQVEsR0FBQyxDQUFDLENBQUMsR0FBQyxFQUFFLENBQUEsQ0FBQyxDQUFBLENBQUMsQ0FBQyxJQUFJLENBQUMsUUFBUSxHQUFDLENBQUMsQ0FBQyxHQUFDLEVBQUUsQ0FBQztRQUM3RSxJQUFJLE1BQU0sR0FBSSxJQUFJLENBQUMsU0FBUyxHQUFDLENBQUMsSUFBRSxDQUFDLENBQUEsQ0FBQyxDQUFBLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxHQUFDLENBQUMsQ0FBQyxHQUFDLEVBQUUsQ0FBQSxDQUFDLENBQUEsQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLEdBQUMsQ0FBQyxDQUFDLEdBQUMsRUFBRSxDQUFDO1FBQ2hGLHFDQUFxQztRQUNyQyx1Q0FBdUM7UUFFdkMsS0FBSSxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQyxFQUFFLEVBQUM7WUFDbEMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxDQUFDLENBQUMsR0FBRyxFQUFFLENBQUM7WUFFM0IsS0FBSSxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQyxFQUFFLEVBQUM7Z0JBQ25DLElBQUksS0FBSyxHQUFHLEVBQUUsQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxDQUFDO2dCQUNoRCxLQUFLLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLFVBQVUsQ0FBQyxDQUFDO2dCQUNwRCxLQUFLLENBQUMsWUFBWSxDQUFDLFVBQVUsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLENBQUM7Z0JBQ3pDLDJFQUEyRTtnQkFDM0UsS0FBSyxDQUFDLFdBQVcsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLE1BQU0sR0FBRyxDQUFDLEdBQUcsR0FBRyxFQUFFLE1BQU0sR0FBRyxDQUFDLEdBQUcsR0FBRyxDQUFDLENBQUMsQ0FBQTtnQkFDNUQsSUFBRyxRQUFRLElBQUksSUFBSSxFQUFDO29CQUNoQixJQUFHLElBQUksQ0FBQyxXQUFXLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLEVBQUMsUUFBUSxFQUFDLEtBQUssQ0FBQyxFQUFDO3dCQUMzQyxJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztxQkFDbEM7aUJBQ0o7Z0JBQ0QsSUFBRyxHQUFHLElBQUcsSUFBSSxFQUFDO29CQUNWLElBQUcsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxFQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLElBQUksQ0FBQyxRQUFRLEdBQUMsQ0FBQzsyQkFDOUQsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksSUFBSSxDQUFDLFNBQVMsR0FBRyxDQUFDLEVBQUM7d0JBQ2pDLEtBQUssQ0FBQyxPQUFPLEdBQUcsR0FBRyxDQUFDO3dCQUNwQixLQUFLLENBQUMsZUFBZSxDQUFDLEVBQUUsQ0FBQyxNQUFNLENBQUMsQ0FBQzt3QkFDakMsS0FBSyxDQUFDLGlCQUFpQixFQUFFLENBQUM7d0JBQzFCLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO3FCQUM3Qjs7d0JBQ0ksSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7aUJBQ2pDO3FCQUNHO29CQUNBLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksSUFBSSxDQUFDLFFBQVEsR0FBQyxDQUFDOzJCQUMvQixDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxJQUFJLENBQUMsU0FBUyxHQUFHLENBQUMsRUFBQzt3QkFDakMsS0FBSyxDQUFDLE9BQU8sR0FBRyxHQUFHLENBQUM7d0JBQ3BCLEtBQUssQ0FBQyxlQUFlLENBQUMsRUFBRSxDQUFDLE1BQU0sQ0FBQyxDQUFDO3dCQUNqQyxLQUFLLENBQUMsaUJBQWlCLEVBQUUsQ0FBQzt3QkFDMUIsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7cUJBQzdCOzt3QkFDSSxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztpQkFDakM7Z0JBRUQsSUFBSSxDQUFDLGFBQWEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7YUFDckM7U0FDSjtRQUVELElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQztRQUNoQixJQUFJLENBQUMsU0FBUyxFQUFFLENBQUM7SUFFckIsQ0FBQztJQUVELE1BQU07SUFDVixlQUFlO0lBRWYsTUFBTTtJQUNOLGVBQWU7SUFLZiwrQkFBUyxHQUFUO1FBQUEsaUJBMkZDO1FBMUZHLElBQUksVUFBVSxHQUFHLEVBQUUsQ0FBQyxFQUFFLENBQUMsVUFBVSxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUNoRCxVQUFVLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxVQUFVLENBQUMsQ0FBQztRQUV4QyxJQUFJLEtBQUssR0FBRyxDQUFDLENBQUMsQ0FBQyxhQUFhO1FBQzVCLElBQUksZ0JBQWdCLEdBQUcsQ0FBQyxDQUFDLENBQUMsY0FBYztRQUN4QyxJQUFNLGFBQWEsR0FBRyxFQUFFLENBQUMsQ0FBQyxXQUFXO1FBQ3JDLElBQU0sYUFBYSxHQUFHLENBQUMsQ0FBQyxDQUFDLFdBQVc7UUFFcEMsSUFBTSxZQUFZLEdBQUc7WUFDakIsSUFBTSxTQUFTLEdBQUcsV0FBVyxDQUFDLEdBQUcsRUFBRSxDQUFDO29DQUMzQixDQUFDO2dCQUNOLElBQUksU0FBUyxHQUFHLFVBQVUsQ0FBQyxLQUFLLENBQUMsQ0FBQztnQkFDbEMsb0JBQW9CO2dCQUNwQixJQUFNLFdBQVcsR0FBRyxLQUFJLENBQUMsV0FBVyxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUMsQ0FBQztnQkFDdEQsSUFBSSxLQUFLLEdBQUcsRUFBRSxDQUFDLFdBQVcsQ0FBQyxXQUFXLENBQUMsQ0FBQztnQkFDeEMsS0FBSyxDQUFDLE1BQU0sR0FBRyxLQUFJLENBQUMsSUFBSSxDQUFDO2dCQUN6QixLQUFLLENBQUMsV0FBVyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsU0FBUyxDQUFDLFFBQVEsQ0FBQyxDQUFDLEVBQUUsU0FBUyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO2dCQUNyRSxJQUFJLFNBQVMsQ0FBQyxLQUFLLElBQUksRUFBRSxFQUFFO29CQUN2QixLQUFJLENBQUMsUUFBUSxJQUFJLENBQUMsQ0FBQztvQkFDbkIsS0FBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7b0JBQ3hCLElBQUksU0FBUyxDQUFDLElBQUksSUFBSSxDQUFDLEVBQUU7d0JBQ3JCLElBQUksSUFBSSxHQUFHOzRCQUNQLEVBQUUsRUFBRSxTQUFTLENBQUMsRUFBRSxHQUFHLENBQUM7NEJBQ3BCLEtBQUssRUFBRSxTQUFTLENBQUMsS0FBSzs0QkFDdEIsS0FBSyxFQUFFLFNBQVMsQ0FBQyxRQUFROzRCQUN6QixJQUFJLEVBQUUsRUFBRTs0QkFDUixRQUFRLEVBQUUsU0FBUyxDQUFDLFFBQVE7NEJBQzVCLFFBQVEsRUFBRSxTQUFTLENBQUMsS0FBSzt5QkFDNUIsQ0FBQzt3QkFDRixvQkFBb0I7d0JBQ3BCLElBQU0sYUFBYSxHQUFHLEtBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO3dCQUNuRCxJQUFJLE9BQU8sR0FBRyxFQUFFLENBQUMsV0FBVyxDQUFDLGFBQWEsQ0FBQyxDQUFDO3dCQUM1QyxPQUFPLENBQUMsTUFBTSxHQUFHLEtBQUksQ0FBQyxJQUFJLENBQUM7d0JBQzNCLE9BQU8sQ0FBQyxXQUFXLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUMsRUFBRSxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7d0JBRTdELEtBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDO3dCQUMxQixLQUFLLENBQUMsWUFBWSxDQUFDLE9BQU8sQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxPQUFPLENBQUMsQ0FBQzt3QkFDakUsT0FBTyxDQUFDLFlBQVksQ0FBQyxPQUFPLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsS0FBSyxDQUFDLENBQUM7d0JBRTVELEtBQUksQ0FBQyxRQUFRLElBQUksQ0FBQyxDQUFDO3FCQUN0Qjt5QkFBTSxJQUFJLFNBQVMsQ0FBQyxJQUFJLElBQUksQ0FBQyxFQUFFO3dCQUM1QixJQUFHLFNBQVMsQ0FBQyxZQUFZLEdBQUcsQ0FBQyxFQUFDOzRCQUMxQixLQUFLLEVBQUUsQ0FBQzs7eUJBRVg7d0JBQ0QsS0FBSyxFQUFFLENBQUM7d0JBQ1IsSUFBSSxNQUFJLEdBQUcsVUFBVSxDQUFDLEtBQUssQ0FBQyxDQUFDO3dCQUM3QixvQkFBb0I7d0JBQ3BCLElBQU0sYUFBYSxHQUFHLEtBQUksQ0FBQyxXQUFXLENBQUMsTUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO3dCQUNuRCxJQUFJLFNBQU8sR0FBRyxFQUFFLENBQUMsV0FBVyxDQUFDLGFBQWEsQ0FBQyxDQUFDO3dCQUM1QyxTQUFPLENBQUMsTUFBTSxHQUFHLEtBQUksQ0FBQyxJQUFJLENBQUM7d0JBQzNCLFNBQU8sQ0FBQyxXQUFXLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxNQUFJLENBQUMsUUFBUSxDQUFDLENBQUMsRUFBRSxNQUFJLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7d0JBRTdELEtBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLFNBQU8sQ0FBQyxDQUFDO3dCQUMxQixLQUFLLENBQUMsWUFBWSxDQUFDLE9BQU8sQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxTQUFPLEVBQUMsS0FBSyxDQUFDLENBQUM7d0JBQ3ZFLFVBQVUsQ0FBQzs0QkFDUCxTQUFPLENBQUMsWUFBWSxDQUFDLE9BQU8sQ0FBQyxDQUFDLElBQUksQ0FBQyxNQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxLQUFLLEVBQUMsSUFBSSxDQUFDLENBQUM7d0JBQ3JFLENBQUMsRUFBRSxHQUFHLENBQUMsQ0FBQzt3QkFDUixLQUFJLENBQUMsUUFBUSxJQUFJLENBQUMsQ0FBQztxQkFDdEI7eUJBQU07d0JBQ0gsS0FBSyxDQUFDLFlBQVksQ0FBQyxPQUFPLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUM7cUJBQy9DO2lCQUNKO3FCQUNHO29CQUNBLEtBQUssQ0FBQyxZQUFZLENBQUMsU0FBUyxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDO2lCQUNqRDtnQkFDRCxLQUFLLEVBQUUsQ0FBQzs7WUF4RFosS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLGdCQUFnQixJQUFJLEtBQUssR0FBRyxVQUFVLENBQUMsTUFBTSxFQUFFLENBQUMsRUFBRTt3QkFBN0QsQ0FBQzthQXlEVDtZQUNELElBQU0sT0FBTyxHQUFHLFdBQVcsQ0FBQyxHQUFHLEVBQUUsQ0FBQztZQUNsQyxJQUFNLFNBQVMsR0FBRyxPQUFPLEdBQUcsU0FBUyxDQUFDO1lBQ3RDLHVCQUF1QjtZQUN2QixJQUFJLFNBQVMsR0FBRyxFQUFFLEVBQUU7Z0JBQ2hCLGdCQUFnQixHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsZ0JBQWdCLEdBQUcsQ0FBQyxFQUFFLGFBQWEsQ0FBQyxDQUFDO2FBQ3BFO2lCQUFNO2dCQUNILGdCQUFnQixHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsZ0JBQWdCLEdBQUcsQ0FBQyxFQUFFLGFBQWEsQ0FBQyxDQUFDO2FBQ3BFO1lBRUQsb0JBQW9CO1lBQ3BCLElBQUksS0FBSyxHQUFHLFVBQVUsQ0FBQyxNQUFNLEVBQUU7Z0JBQzNCLHNDQUFzQztnQkFDdEMsS0FBSSxDQUFDLFlBQVksQ0FBQztvQkFDZCxZQUFZLEVBQUUsQ0FBQztnQkFDbkIsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO2FBQ1Q7aUJBQU07YUFFTjtRQUNMLENBQUMsQ0FBQztRQUVGLFdBQVc7UUFDWCxZQUFZLEVBQUUsQ0FBQztJQUNuQixDQUFDO0lBQ0QseUJBQXlCO0lBQ3pCLCtCQUFTLEdBQVQsVUFBVSxTQUEyRDtRQUNqRSxPQUFPLFNBQVMsQ0FBQyxJQUFJLENBQUMsVUFBQyxDQUFDLEVBQUUsQ0FBQztZQUN2QiwwQkFBMEI7WUFDMUIsSUFBSSxDQUFDLENBQUMsSUFBSSxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUMsSUFBSSxLQUFLLENBQUMsRUFBRTtnQkFDOUIsT0FBTyxDQUFDLENBQUM7YUFDWjtZQUNELElBQUksQ0FBQyxDQUFDLElBQUksS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDLElBQUksS0FBSyxDQUFDLEVBQUU7Z0JBQzlCLE9BQU8sQ0FBQyxDQUFDLENBQUM7YUFDYjtZQUVELDJCQUEyQjtZQUMzQixJQUFJLENBQUMsQ0FBQyxJQUFJLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQyxJQUFJLEtBQUssQ0FBQyxFQUFFO2dCQUM5QixPQUFPLENBQUMsQ0FBQyxJQUFJLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQzthQUMxQjtZQUNELElBQUksQ0FBQyxDQUFDLElBQUksS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDLElBQUksS0FBSyxDQUFDLEVBQUU7Z0JBQzlCLE9BQU8sQ0FBQyxDQUFDO2FBQ1o7WUFDRCxJQUFJLENBQUMsQ0FBQyxJQUFJLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQyxJQUFJLEtBQUssQ0FBQyxFQUFFO2dCQUM5QixPQUFPLENBQUMsQ0FBQyxDQUFDO2FBQ2I7WUFFRCw2QkFBNkI7WUFDN0IsSUFBSSxDQUFDLENBQUMsS0FBSyxLQUFLLEVBQUUsSUFBSSxDQUFDLENBQUMsS0FBSyxLQUFLLEVBQUUsRUFBRTtnQkFDbEMsT0FBTyxDQUFDLENBQUMsQ0FBQzthQUNiO1lBQ0QsSUFBSSxDQUFDLENBQUMsS0FBSyxLQUFLLEVBQUUsSUFBSSxDQUFDLENBQUMsS0FBSyxLQUFLLEVBQUUsRUFBRTtnQkFDbEMsT0FBTyxDQUFDLENBQUM7YUFDWjtZQUVELGlCQUFpQjtZQUNqQixPQUFPLENBQUMsQ0FBQyxLQUFLLEdBQUcsQ0FBQyxDQUFDLEtBQUssQ0FBQztRQUM3QixDQUFDLENBQUMsQ0FBQztJQUNQLENBQUM7SUFHRCxNQUFNO0lBRU4sOEJBQVEsR0FBUjtRQUFBLGlCQXNDQztRQXJDRyxJQUFJLEtBQUssR0FBRyxDQUFDLENBQUMsQ0FBQyxhQUFhO1FBQzVCLElBQUksZUFBZSxHQUFHLENBQUMsQ0FBQyxDQUFDLGNBQWM7UUFDdkMsSUFBTSxhQUFhLEdBQUcsRUFBRSxDQUFDLENBQUMsV0FBVztRQUNyQyxJQUFNLGFBQWEsR0FBRyxDQUFDLENBQUMsQ0FBQyxXQUFXO1FBRXBDLElBQU0sV0FBVyxHQUFHO1lBQ2hCLElBQU0sU0FBUyxHQUFHLFdBQVcsQ0FBQyxHQUFHLEVBQUUsQ0FBQztZQUNwQyxLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsZUFBZSxJQUFJLEtBQUssR0FBRyxLQUFJLENBQUMsUUFBUSxDQUFDLE1BQU0sRUFBRSxDQUFDLEVBQUUsRUFBRTtnQkFDdEUsSUFBSSxLQUFLLEdBQUcsS0FBSSxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsQ0FBQztnQkFDakMsSUFBSSxHQUFHLEdBQUcsS0FBSSxDQUFDLGVBQWUsQ0FBQyxNQUFNLEVBQUUsRUFBRSxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsWUFBWSxDQUFDLFVBQVUsQ0FBQyxDQUFDLElBQUksRUFBRSxLQUFLLENBQUMsWUFBWSxDQUFDLFVBQVUsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7Z0JBQ3hILElBQUksR0FBRyxJQUFJLElBQUksRUFBRTtvQkFDYixLQUFJLENBQUMsVUFBVSxDQUFDLEdBQUcsRUFBRSxLQUFLLENBQUMsQ0FBQztpQkFDL0I7Z0JBQ0QsS0FBSyxFQUFFLENBQUM7YUFDWDtZQUNELElBQU0sT0FBTyxHQUFHLFdBQVcsQ0FBQyxHQUFHLEVBQUUsQ0FBQztZQUNsQyxJQUFNLFNBQVMsR0FBRyxPQUFPLEdBQUcsU0FBUyxDQUFDO1lBQ3RDLHVCQUF1QjtZQUN2QixJQUFJLFNBQVMsR0FBRyxFQUFFLEVBQUU7Z0JBQ2hCLGVBQWUsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLGVBQWUsR0FBRyxDQUFDLEVBQUUsYUFBYSxDQUFDLENBQUM7YUFDbEU7aUJBQU07Z0JBQ0gsZUFBZSxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsZUFBZSxHQUFHLENBQUMsRUFBRSxhQUFhLENBQUMsQ0FBQzthQUNsRTtZQUVELG9CQUFvQjtZQUNwQixJQUFJLEtBQUssR0FBRyxLQUFJLENBQUMsUUFBUSxDQUFDLE1BQU0sRUFBRTtnQkFDOUIsS0FBSSxDQUFDLFlBQVksQ0FBQztvQkFDZCxXQUFXLEVBQUUsQ0FBQztnQkFDbEIsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO2FBQ1Q7aUJBQU07Z0JBQ0gsbUJBQW1CO2dCQUNuQixLQUFJLENBQUMsaUJBQWlCLEVBQUUsQ0FBQzthQUM1QjtRQUNMLENBQUMsQ0FBQztRQUVGLFdBQVc7UUFDWCxXQUFXLEVBQUUsQ0FBQztJQUNsQixDQUFDO0lBRUQsZUFBZTtJQUVYLHFDQUFlLEdBQWYsVUFBZ0IsSUFBSSxFQUFDLE1BQU07UUFDdkIsSUFBSSxHQUFHLEdBQUcsRUFBRSxDQUFDO1FBQ2IsSUFBSSxNQUFNLEdBQUcsRUFBRSxDQUFDLEVBQUUsQ0FBQyxNQUFNLENBQUMsQ0FBQyxHQUFHLENBQUMsRUFBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDMUMsSUFBSSxNQUFNLEdBQUcsRUFBRSxDQUFDLEVBQUUsQ0FBQyxNQUFNLENBQUMsQ0FBQyxHQUFHLENBQUMsRUFBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDMUMsSUFBSSxNQUFNLEdBQUcsRUFBRSxDQUFDLEVBQUUsQ0FBQyxNQUFNLENBQUMsQ0FBQyxFQUFDLE1BQU0sQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7UUFDMUMsSUFBSSxNQUFNLEdBQUcsRUFBRSxDQUFDLEVBQUUsQ0FBQyxNQUFNLENBQUMsQ0FBQyxFQUFDLE1BQU0sQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7UUFDMUMsSUFBSSxPQUFPLEdBQUcsQ0FBQyxDQUFDO1FBQ2hCLElBQUcsSUFBSSxJQUFJLE1BQU07WUFBRSxPQUFPLEdBQUcsR0FBRyxDQUFDO1FBQ2pDLElBQUcsSUFBSSxJQUFJLE1BQU07WUFBRSxPQUFPLEdBQUcsR0FBRyxDQUFDO1FBRWpDLElBQUcsTUFBTSxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUMsUUFBUSxFQUFDO1lBQ3hCLElBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sSUFBSSxPQUFPLEVBQUU7Z0JBQzFELElBQUcsSUFBSSxJQUFJLE1BQU0sSUFBSSxJQUFJLENBQUMsYUFBYSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsWUFBWSxDQUFDLFVBQVUsQ0FBQyxDQUFDLFNBQVMsSUFBSSxPQUFPLEVBQUM7aUJBRXpHOztvQkFDSSxHQUFHLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDO2FBQzFCO1NBQ0o7UUFDRCxJQUFHLE1BQU0sQ0FBQyxDQUFDLElBQUksQ0FBQyxFQUFDO1lBQ2IsSUFBRyxJQUFJLENBQUMsYUFBYSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxJQUFJLE9BQU8sRUFBQztnQkFDekQsSUFBRyxJQUFJLElBQUksTUFBTSxJQUFJLElBQUksQ0FBQyxhQUFhLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxZQUFZLENBQUMsVUFBVSxDQUFDLENBQUMsU0FBUyxJQUFJLE1BQU0sRUFBQztpQkFFeEc7O29CQUNJLEdBQUcsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUM7YUFDekI7U0FDSjtRQUNELElBQUcsTUFBTSxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUMsU0FBUyxFQUFDO1lBQ3pCLElBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sSUFBSSxPQUFPLEVBQUM7Z0JBQ3pELElBQUcsSUFBSSxJQUFJLE1BQU0sSUFBSSxJQUFJLENBQUMsYUFBYSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsWUFBWSxDQUFDLFVBQVUsQ0FBQyxDQUFDLFNBQVMsSUFBSSxJQUFJLEVBQUM7aUJBRXRHOztvQkFDSSxHQUFHLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO2FBQ3ZCO1NBQ0o7UUFDRCxJQUFHLE1BQU0sQ0FBQyxDQUFDLElBQUksQ0FBQyxFQUFDO1lBQ2IsSUFBRyxJQUFJLENBQUMsYUFBYSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxJQUFJLE9BQU8sRUFBQztnQkFDekQsSUFBRyxJQUFJLElBQUksTUFBTSxJQUFJLElBQUksQ0FBQyxhQUFhLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxZQUFZLENBQUMsVUFBVSxDQUFDLENBQUMsU0FBUyxJQUFJLE1BQU0sRUFBQztpQkFFeEc7O29CQUNJLEdBQUcsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUM7YUFDekI7U0FDSjtRQUNELElBQUcsR0FBRyxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUM7WUFFZCxPQUFPLElBQUksQ0FBQztTQUNmO1FBQ0QsSUFBRyxHQUFHLENBQUMsTUFBTSxJQUFJLENBQUMsRUFBQztZQUNmLElBQUcsSUFBSSxJQUFJLE1BQU07Z0JBQ2IsT0FBTyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUM7O2dCQUVkLE9BQU8sSUFBSSxDQUFDO1NBQ25CO2FBQ0ksSUFBRyxHQUFHLENBQUMsTUFBTSxJQUFJLENBQUMsRUFBQztZQUNwQixPQUFPLEdBQUcsQ0FBQyxDQUFDLENBQUMsR0FBRyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUM7U0FDMUI7SUFDTCxDQUFDO0lBRUQsdUNBQWlCLEdBQWpCO1FBQ0ksU0FBUztRQUNULEtBQUksSUFBSSxDQUFDLEdBQUMsQ0FBQyxFQUFFLENBQUMsR0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLE1BQU0sRUFBRSxDQUFDLEVBQUUsRUFBQztZQUNyQyxJQUFJLEtBQUssR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQzdCLElBQUcsS0FBSyxDQUFDLE9BQU8sSUFBSSxHQUFHLEVBQUM7Z0JBQ3BCLElBQUksR0FBRyxHQUFHLElBQUksQ0FBQyxlQUFlLENBQUMsTUFBTSxFQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLFlBQVksQ0FBQyxVQUFVLENBQUMsQ0FBQyxJQUFJLEVBQUMsS0FBSyxDQUFDLFlBQVksQ0FBQyxVQUFVLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO2dCQUN0SCxJQUFHLEdBQUcsSUFBSSxJQUFJLEVBQUM7b0JBQ1gsSUFBSSxDQUFDLFVBQVUsQ0FBQyxHQUFHLEVBQUMsS0FBSyxFQUFDLEtBQUssQ0FBQyxZQUFZLENBQUMsVUFBVSxDQUFDLENBQUMsSUFBSSxFQUFDLEtBQUssQ0FBQyxZQUFZLENBQUMsVUFBVSxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUM7aUJBQ3RHO2FBQ0o7U0FFSjtJQUVMLENBQUM7SUFFRCxnQ0FBVSxHQUFWLFVBQVcsU0FBUyxFQUFDLElBQUk7UUFDckIsSUFBSSxJQUFJLEdBQUcsSUFBSSxDQUFDO1FBQ2hCLElBQUksQ0FBQyxZQUFZLENBQUMsVUFBVSxDQUFDLENBQUMsWUFBWSxDQUFDLFNBQVMsQ0FBQyxDQUFDO1FBQ3RELFFBQU8sU0FBUyxFQUFDO1lBQ2IsS0FBSyxPQUFPO2dCQUNSLElBQUksQ0FBQyxPQUFPLEdBQUcsR0FBRyxDQUFDO2dCQUNuQixJQUFJLEdBQUcsRUFBRSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7Z0JBQzNDLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO2dCQUMxQixrREFBa0Q7Z0JBQ2xELElBQUksQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQztnQkFDeEIsSUFBSSxDQUFDLFdBQVcsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDLEVBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7Z0JBQ3ZDLElBQUksQ0FBQyxPQUFPLEdBQUcsR0FBRyxDQUFDO2dCQUNuQixJQUFJLENBQUMsY0FBYyxDQUFDLE1BQU0sQ0FBQyxDQUFDLFlBQVksQ0FBQyxNQUFNLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsVUFBVSxDQUFDLENBQUMsSUFBSSxFQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsVUFBVSxDQUFDLENBQUMsSUFBSSxFQUFDLFNBQVMsQ0FBQyxDQUFDO2dCQUM1SSw0R0FBNEc7Z0JBQzVHLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDO2dCQUM5QyxJQUFJLENBQUMsT0FBTyxJQUFJLENBQUMsQ0FBQztnQkFDbEIsSUFBRyxJQUFJLENBQUMsY0FBYyxDQUFDLE1BQU0sQ0FBQyxDQUFDLFlBQVksQ0FBQyxNQUFNLENBQUMsQ0FBQyxPQUFPLElBQUksQ0FBQztvQkFDNUQsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7cUJBQ3hCLElBQUcsSUFBSSxDQUFDLGNBQWMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxZQUFZLENBQUMsTUFBTSxDQUFDLENBQUMsT0FBTyxJQUFJLENBQUM7b0JBQ2pFLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO2dCQUUvQixNQUFNO1lBQ1YsS0FBSyxNQUFNO2dCQUNQLElBQUksQ0FBQyxPQUFPLEdBQUcsR0FBRyxDQUFDO2dCQUNuQixJQUFJLEdBQUcsRUFBRSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7Z0JBQzNDLGtEQUFrRDtnQkFDbEQsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7Z0JBQzNCLElBQUksQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQztnQkFDeEIsSUFBSSxDQUFDLFdBQVcsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDLEVBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7Z0JBQ3ZDLElBQUksQ0FBQyxjQUFjLENBQUMsTUFBTSxDQUFDLENBQUMsWUFBWSxDQUFDLE1BQU0sQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxVQUFVLENBQUMsQ0FBQyxJQUFJLEVBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxVQUFVLENBQUMsQ0FBQyxJQUFJLEVBQUMsU0FBUyxDQUFDLENBQUM7Z0JBQzVJLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDO2dCQUM5Qyw0R0FBNEc7Z0JBQzVHLElBQUksQ0FBQyxPQUFPLElBQUksQ0FBQyxDQUFDO2dCQUNsQixJQUFHLElBQUksQ0FBQyxjQUFjLENBQUMsTUFBTSxDQUFDLENBQUMsWUFBWSxDQUFDLE1BQU0sQ0FBQyxDQUFDLE9BQU8sSUFBSSxDQUFDO29CQUM1RCxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztxQkFDeEIsSUFBRyxJQUFJLENBQUMsY0FBYyxDQUFDLE1BQU0sQ0FBQyxDQUFDLFlBQVksQ0FBQyxNQUFNLENBQUMsQ0FBQyxPQUFPLElBQUksQ0FBQztvQkFDakUsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7Z0JBQy9CLE1BQU07WUFDVixLQUFLLElBQUk7Z0JBQ0wsSUFBSSxDQUFDLE9BQU8sR0FBRyxHQUFHLENBQUM7Z0JBQ25CLElBQUksR0FBRyxFQUFFLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztnQkFFeEMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7Z0JBQzVCLGtEQUFrRDtnQkFDbEQsSUFBSSxDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDO2dCQUN4QixJQUFJLENBQUMsV0FBVyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLENBQUMsRUFBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztnQkFFdkMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxZQUFZLENBQUMsTUFBTSxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksRUFBQyxJQUFJLENBQUMsWUFBWSxDQUFDLFVBQVUsQ0FBQyxDQUFDLElBQUksRUFBQyxJQUFJLENBQUMsWUFBWSxDQUFDLFVBQVUsQ0FBQyxDQUFDLElBQUksRUFBQyxTQUFTLENBQUMsQ0FBQztnQkFDNUksSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUM7Z0JBQzlDLDRHQUE0RztnQkFDNUcsSUFBSSxDQUFDLE9BQU8sSUFBSSxDQUFDLENBQUM7Z0JBQ2xCLElBQUcsSUFBSSxDQUFDLGNBQWMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxZQUFZLENBQUMsTUFBTSxDQUFDLENBQUMsT0FBTyxJQUFJLENBQUM7b0JBQzVELElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO3FCQUN4QixJQUFHLElBQUksQ0FBQyxjQUFjLENBQUMsTUFBTSxDQUFDLENBQUMsWUFBWSxDQUFDLE1BQU0sQ0FBQyxDQUFDLE9BQU8sSUFBSSxDQUFDO29CQUNqRSxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztnQkFDL0IsTUFBTTtZQUNWLEtBQUssTUFBTTtnQkFDUCxJQUFJLENBQUMsT0FBTyxHQUFHLEdBQUcsQ0FBQztnQkFDbkIsSUFBSSxHQUFHLEVBQUUsQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO2dCQUNyQyxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztnQkFDbEMsa0RBQWtEO2dCQUNsRCxJQUFJLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUM7Z0JBQ3hCLElBQUksQ0FBQyxXQUFXLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxFQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO2dCQUN2QyxpREFBaUQ7Z0JBQ2pELElBQUksQ0FBQyxjQUFjLENBQUMsTUFBTSxDQUFDLENBQUMsWUFBWSxDQUFDLE1BQU0sQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxVQUFVLENBQUMsQ0FBQyxJQUFJLEVBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxVQUFVLENBQUMsQ0FBQyxJQUFJLEVBQUMsU0FBUyxDQUFDLENBQUM7Z0JBQzVJLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDO2dCQUM5Qyw0R0FBNEc7Z0JBQzVHLElBQUksQ0FBQyxPQUFPLElBQUksQ0FBQyxDQUFDO2dCQUNsQixJQUFHLElBQUksQ0FBQyxjQUFjLENBQUMsTUFBTSxDQUFDLENBQUMsWUFBWSxDQUFDLE1BQU0sQ0FBQyxDQUFDLE9BQU8sSUFBSSxDQUFDO29CQUM1RCxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztxQkFDeEIsSUFBRyxJQUFJLENBQUMsY0FBYyxDQUFDLE1BQU0sQ0FBQyxDQUFDLFlBQVksQ0FBQyxNQUFNLENBQUMsQ0FBQyxPQUFPLElBQUksQ0FBQztvQkFDakUsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7Z0JBQy9CLE1BQU07WUFDVixLQUFLLFNBQVMsQ0FBRTtZQUFDLEtBQUssU0FBUztnQkFDM0IsSUFBSSxDQUFDLE9BQU8sR0FBRyxHQUFHLENBQUM7Z0JBQ25CLElBQUksR0FBRyxFQUFFLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztnQkFDM0Msa0RBQWtEO2dCQUNsRCxJQUFJLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUM7Z0JBQ3hCLElBQUksQ0FBQyxXQUFXLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxFQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO2dCQUN2QyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLFlBQVksQ0FBQyxNQUFNLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsVUFBVSxDQUFDLENBQUMsSUFBSSxFQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsVUFBVSxDQUFDLENBQUMsSUFBSSxFQUFDLFNBQVMsQ0FBQyxDQUFDO2dCQUNqSSxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLFlBQVksQ0FBQyxNQUFNLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsVUFBVSxDQUFDLENBQUMsSUFBSSxFQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsVUFBVSxDQUFDLENBQUMsSUFBSSxFQUFDLFNBQVMsQ0FBQyxDQUFDO2dCQUNqSSxpR0FBaUc7Z0JBQ2pHLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO2dCQUNuQyxJQUFJLENBQUMsT0FBTyxJQUFJLENBQUMsQ0FBQztnQkFDbEIsaUdBQWlHO2dCQUNqRyxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztnQkFDbkMsSUFBSSxDQUFDLE9BQU8sSUFBSSxDQUFDLENBQUM7Z0JBRWxCLE1BQU07WUFDVixLQUFLLFFBQVEsQ0FBRTtZQUFDLEtBQUssUUFBUTtnQkFDekIsSUFBSSxDQUFDLE9BQU8sR0FBRyxHQUFHLENBQUM7Z0JBQ25CLElBQUksR0FBRyxFQUFFLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztnQkFDM0Msa0RBQWtEO2dCQUNsRCxJQUFJLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUM7Z0JBQ3hCLElBQUksQ0FBQyxXQUFXLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxFQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO2dCQUN2QyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLFlBQVksQ0FBQyxNQUFNLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsVUFBVSxDQUFDLENBQUMsSUFBSSxFQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsVUFBVSxDQUFDLENBQUMsSUFBSSxFQUFDLFNBQVMsQ0FBQyxDQUFDO2dCQUNqSSxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLFlBQVksQ0FBQyxNQUFNLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsVUFBVSxDQUFDLENBQUMsSUFBSSxFQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsVUFBVSxDQUFDLENBQUMsSUFBSSxFQUFDLFNBQVMsQ0FBQyxDQUFDO2dCQUNqSSxpR0FBaUc7Z0JBQ2pHLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO2dCQUNuQyxJQUFJLENBQUMsT0FBTyxJQUFJLENBQUMsQ0FBQztnQkFDbEIsaUdBQWlHO2dCQUNqRyxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztnQkFDbkMsSUFBSSxDQUFDLE9BQU8sSUFBSSxDQUFDLENBQUM7Z0JBRWxCLE1BQU07WUFDVixLQUFLLFdBQVcsQ0FBRTtZQUFDLEtBQUssV0FBVztnQkFDL0IsSUFBSSxDQUFDLE9BQU8sR0FBRyxHQUFHLENBQUM7Z0JBQ25CLElBQUksR0FBRyxFQUFFLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztnQkFDM0Msa0RBQWtEO2dCQUNsRCxJQUFJLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUM7Z0JBQ3hCLElBQUksQ0FBQyxXQUFXLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxFQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO2dCQUN2QyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLFlBQVksQ0FBQyxNQUFNLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsVUFBVSxDQUFDLENBQUMsSUFBSSxFQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsVUFBVSxDQUFDLENBQUMsSUFBSSxFQUFDLFNBQVMsQ0FBQyxDQUFDO2dCQUNqSSxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLFlBQVksQ0FBQyxNQUFNLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsVUFBVSxDQUFDLENBQUMsSUFBSSxFQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsVUFBVSxDQUFDLENBQUMsSUFBSSxFQUFDLFNBQVMsQ0FBQyxDQUFDO2dCQUNqSSxpR0FBaUc7Z0JBQ2pHLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO2dCQUNuQyxJQUFJLENBQUMsT0FBTyxJQUFJLENBQUMsQ0FBQztnQkFDbEIsaUdBQWlHO2dCQUNqRyxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztnQkFDbkMsSUFBSSxDQUFDLE9BQU8sSUFBSSxDQUFDLENBQUM7Z0JBRWxCLE1BQU07WUFDVixLQUFLLFVBQVUsQ0FBRTtZQUFDLEtBQUssVUFBVTtnQkFDN0IsSUFBSSxDQUFDLE9BQU8sR0FBRyxHQUFHLENBQUM7Z0JBQ25CLElBQUksR0FBRyxFQUFFLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztnQkFDM0Msa0RBQWtEO2dCQUNsRCxJQUFJLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUM7Z0JBQ3hCLElBQUksQ0FBQyxXQUFXLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxFQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO2dCQUN2QyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLFlBQVksQ0FBQyxNQUFNLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsVUFBVSxDQUFDLENBQUMsSUFBSSxFQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsVUFBVSxDQUFDLENBQUMsSUFBSSxFQUFDLFNBQVMsQ0FBQyxDQUFDO2dCQUNqSSxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLFlBQVksQ0FBQyxNQUFNLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsVUFBVSxDQUFDLENBQUMsSUFBSSxFQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsVUFBVSxDQUFDLENBQUMsSUFBSSxFQUFDLFNBQVMsQ0FBQyxDQUFDO2dCQUNqSSxpR0FBaUc7Z0JBQ2pHLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO2dCQUNuQyxJQUFJLENBQUMsT0FBTyxJQUFJLENBQUMsQ0FBQztnQkFDbEIsaUdBQWlHO2dCQUNqRyxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztnQkFDbkMsSUFBSSxDQUFDLE9BQU8sSUFBSSxDQUFDLENBQUM7Z0JBRWxCLE1BQU07U0FFYjtRQUdELGdCQUFnQjtRQUNoQixvREFBb0Q7UUFDcEQsSUFBSTtJQUNSLENBQUM7SUFFRCxpQ0FBVyxHQUFYLFVBQVksSUFBSTtRQUNaLElBQUksUUFBUSxHQUFHLEVBQUUsQ0FBQyxFQUFFLENBQUMsVUFBVSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUU3QyxJQUFHLFFBQVEsRUFBQztZQUNSLEtBQUksSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxRQUFRLENBQUMsTUFBTSxFQUFFLENBQUMsRUFBRSxFQUFDO2dCQUNwQyxJQUFHLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLElBQUksSUFBSSxDQUFDLE9BQU8sRUFBQztvQkFDL0IsSUFBSSxDQUFDLFlBQVksQ0FBQyxNQUFNLENBQUMsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxFQUFDLElBQUksRUFBQyxJQUFJLEVBQUMsSUFBSSxDQUFDLENBQUM7b0JBQzNELElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQztpQkFDcEM7YUFDSjtTQUNKO0lBQ0wsQ0FBQztJQUVELGdDQUFVLEdBQVYsVUFBVyxTQUFTLEVBQUMsSUFBSSxFQUFDLElBQUksRUFBQyxJQUFJO1FBQy9CLElBQUksSUFBSSxHQUFHLElBQUksQ0FBQztRQUNoQixJQUFJLEdBQUcsRUFBRSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLENBQUM7UUFDM0MsSUFBSSxDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDO1FBQ3hCLElBQUksQ0FBQyxXQUFXLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxFQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQ3ZDLFFBQU8sU0FBUyxFQUFDO1lBQ2IsS0FBSyxTQUFTLENBQUU7WUFBQyxLQUFLLFNBQVM7Z0JBQzNCLElBQUksQ0FBQyxLQUFLLEdBQUcsQ0FBQyxDQUFDO2dCQUNmLElBQUksQ0FBQyxjQUFjLENBQUMsTUFBTSxDQUFDLENBQUMsS0FBSyxHQUFHLENBQUMsQ0FBQztnQkFFdEMsTUFBTTtZQUNWLEtBQUssUUFBUSxDQUFFO1lBQUMsS0FBSyxRQUFRO2dCQUN6QixJQUFJLENBQUMsS0FBSyxHQUFHLEVBQUUsQ0FBQztnQkFDaEIsSUFBSSxDQUFDLGNBQWMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxLQUFLLEdBQUcsQ0FBQyxFQUFFLENBQUM7Z0JBQ3hDLElBQUksQ0FBQyxjQUFjLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQztnQkFDbkMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLElBQUksR0FBRyxDQUFDO2dCQUNyQyxNQUFNO1lBQ1YsS0FBSyxXQUFXLENBQUU7WUFBQyxLQUFLLFdBQVc7Z0JBQy9CLElBQUksQ0FBQyxLQUFLLEdBQUcsR0FBRyxDQUFDO2dCQUNqQixJQUFJLENBQUMsY0FBYyxDQUFDLE1BQU0sQ0FBQyxDQUFDLEtBQUssR0FBRyxDQUFDLEdBQUcsQ0FBQztnQkFDekMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLElBQUksR0FBRyxDQUFDO2dCQUNyQyxJQUFJLENBQUMsY0FBYyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUM7Z0JBQ25DLE1BQU07WUFDVixLQUFLLFVBQVUsQ0FBRTtZQUFDLEtBQUssVUFBVTtnQkFDN0IsSUFBSSxDQUFDLEtBQUssR0FBRyxHQUFHLENBQUM7Z0JBQ2pCLElBQUksQ0FBQyxjQUFjLENBQUMsTUFBTSxDQUFDLENBQUMsS0FBSyxHQUFHLENBQUMsR0FBRyxDQUFDO2dCQUN6QyxJQUFJLENBQUMsY0FBYyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsSUFBSSxHQUFHLENBQUM7Z0JBQ3JDLElBQUksQ0FBQyxjQUFjLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxJQUFJLEdBQUcsQ0FBQztnQkFDckMsTUFBTTtTQUNiO1FBRUQsNkRBQTZEO1FBQzdELHdDQUF3QztRQUN4QyxJQUFJO1FBQ0osUUFBUTtRQUNSLHdDQUF3QztRQUV4QyxJQUFHLFNBQVMsSUFBSSxJQUFJLElBQUksU0FBUyxJQUFJLFFBQVEsSUFBSSxTQUFTLElBQUksUUFBUSxFQUNyRTtZQUNHLElBQUksQ0FBQyxNQUFNLEdBQUcsR0FBRyxHQUFHLElBQUksR0FBRyxJQUFJLEdBQUMsQ0FBQyxDQUFDO1NBQ3JDO2FBQ0ksSUFBRyxTQUFTLElBQUksU0FBUyxJQUFJLFNBQVMsSUFBSSxTQUFTLElBQUksU0FBUyxJQUFJLFdBQVcsSUFBSSxTQUFTLElBQUksV0FBVyxJQUFJLFNBQVMsSUFBSSxVQUFVLEVBQUM7WUFDeEksSUFBSSxDQUFDLE1BQU0sR0FBRyxFQUFFLEdBQUcsSUFBSSxHQUFHLElBQUksR0FBQyxDQUFDLENBQUM7U0FDaEM7YUFDQSxJQUFJLFNBQVMsSUFBSSxNQUFNLElBQUksU0FBUyxJQUFJLFVBQVUsRUFBQztZQUNwRCxJQUFJLENBQUMsTUFBTSxHQUFHLEVBQUUsR0FBRyxJQUFJLEdBQUcsSUFBSSxHQUFDLENBQUMsQ0FBQztTQUNwQzs7WUFDSSxJQUFJLENBQUMsTUFBTSxHQUFHLEVBQUUsR0FBRyxJQUFJLEdBQUcsSUFBSSxHQUFDLENBQUMsQ0FBQztRQUV0QyxrREFBa0Q7UUFDbEQsdUVBQXVFO1FBQ3ZFLDZFQUE2RTtRQUM3RSxzQ0FBc0M7UUFDdEMsc0JBQXNCO1FBQ3RCLGdGQUFnRjtJQUNwRixDQUFDO0lBRUQsVUFBVTtJQUNWLDRCQUFNLEdBQU4sVUFBTyxLQUFLLEVBQUMsR0FBRztRQUNaLEtBQUksSUFBSSxDQUFDLEdBQUMsQ0FBQyxFQUFFLENBQUMsR0FBQyxHQUFHLENBQUMsTUFBTSxFQUFFLENBQUMsRUFBRSxFQUFDO1lBQzNCLElBQUcsS0FBSyxDQUFDLENBQUMsSUFBSSxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLEtBQUssQ0FBQyxDQUFDLElBQUksR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBQztnQkFDMUMsT0FBTyxLQUFLLENBQUM7YUFDaEI7U0FDSjtRQUNELE9BQU8sSUFBSSxDQUFDO0lBQ2hCLENBQUM7SUFFRCxRQUFRO0lBQ1IsaUNBQVcsR0FBWCxVQUFZLEtBQUssRUFBQyxRQUFRLEVBQUMsS0FBSztRQUM1QixLQUFJLElBQUksQ0FBQyxHQUFDLENBQUMsRUFBRSxDQUFDLEdBQUMsUUFBUSxDQUFDLE1BQU0sRUFBRSxDQUFDLEVBQUUsRUFBQztZQUNoQyxJQUFHLEtBQUssQ0FBQyxDQUFDLElBQUksUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksS0FBSyxDQUFDLENBQUMsSUFBSSxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBQztnQkFDNUQsS0FBSyxDQUFDLGNBQWMsQ0FBQyxVQUFVLENBQUMsQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFDO2dCQUMvQyxLQUFLLENBQUMsY0FBYyxDQUFDLFVBQVUsQ0FBQyxDQUFDLGNBQWMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxZQUFZLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxDQUFDLE1BQU0sR0FBRyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxHQUFDLEVBQUUsQ0FBQztnQkFDOUcsS0FBSyxDQUFDLGNBQWMsQ0FBQyxVQUFVLENBQUMsQ0FBQyxZQUFZLENBQUMsRUFBRSxDQUFDLFdBQVcsQ0FBQyxDQUFDO2dCQUM5RCxLQUFLLENBQUMsY0FBYyxDQUFDLFVBQVUsQ0FBQyxDQUFDLFlBQVksQ0FBQyxFQUFFLENBQUMsV0FBVyxDQUFDLENBQUMsSUFBSSxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsR0FBRyxFQUFDLEdBQUcsQ0FBQyxDQUFDO2dCQUN0RixPQUFPLElBQUksQ0FBQzthQUNmO1NBQ0o7UUFDRCxPQUFPLEtBQUssQ0FBQztJQUNqQixDQUFDO0lBQ0QsTUFBTTtJQUNOLG9DQUFjLEdBQWQsVUFBZSxLQUFLLEVBQUMsSUFBSTtRQUNyQixLQUFLLEdBQUcsS0FBSyxDQUFDLFFBQVEsRUFBRSxDQUFDO1FBQ3pCLEtBQUksSUFBSSxDQUFDLEdBQUMsQ0FBQyxFQUFFLENBQUMsR0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLE1BQU0sRUFBRSxDQUFDLEVBQUUsRUFBQztZQUMxQyxJQUFHLEtBQUssSUFBSSxJQUFJLENBQUMsYUFBYSxDQUFDLENBQUMsQ0FBQyxDQUFDLGNBQWMsQ0FBQyxVQUFVLENBQUMsQ0FBQyxjQUFjLENBQUMsT0FBTyxDQUFDLENBQUMsWUFBWSxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsQ0FBQyxNQUFNLEVBQUM7Z0JBQy9HLElBQUcsSUFBSSxFQUFDO29CQUNKLElBQUksQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDLENBQUMsY0FBYyxDQUFDLFVBQVUsQ0FBQyxDQUFDLE1BQU0sR0FBRyxLQUFLLENBQUM7b0JBQ2hFLElBQUksQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDLENBQUMsY0FBYyxDQUFDLFVBQVUsQ0FBQyxDQUFDLGVBQWUsQ0FBQyxFQUFFLENBQUMsV0FBVyxDQUFDLENBQUM7aUJBQ3BGO3FCQUNHO29CQUNBLElBQUksQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDLENBQUMsY0FBYyxDQUFDLFVBQVUsQ0FBQyxDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUM7b0JBQy9ELElBQUksQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDLENBQUMsY0FBYyxDQUFDLFVBQVUsQ0FBQyxDQUFDLFlBQVksQ0FBQyxFQUFFLENBQUMsV0FBVyxDQUFDLENBQUM7b0JBQzlFLElBQUksQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDLENBQUMsY0FBYyxDQUFDLFVBQVUsQ0FBQyxDQUFDLFlBQVksQ0FBQyxFQUFFLENBQUMsV0FBVyxDQUFDLENBQUMsSUFBSSxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsR0FBRyxFQUFDLEdBQUcsQ0FBQyxDQUFDO2lCQUN6RzthQUNKO1NBRUo7SUFDTCxDQUFDO0lBSUQsU0FBUztJQUNULG9DQUFjLEdBQWQsVUFBZSxFQUFFO1FBQ2IsS0FBSSxJQUFJLENBQUMsR0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsTUFBTSxFQUFFLENBQUMsRUFBRSxFQUFDO1lBQ25DLElBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxZQUFZLENBQUMsT0FBTyxDQUFDLENBQUMsT0FBTyxJQUFJLEVBQUUsRUFBQztnQkFDbEQsT0FBTyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDO2FBQ3pCO1NBQ0o7UUFDRCxPQUFPLElBQUksQ0FBQztJQUNoQixDQUFDO0lBRUQsS0FBSztJQUNMLGlDQUFXLEdBQVgsVUFBWSxFQUFFO1FBQ1YsS0FBSSxJQUFJLENBQUMsR0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsTUFBTSxFQUFFLENBQUMsRUFBRSxFQUFDO1lBQ25DLElBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxZQUFZLENBQUMsT0FBTyxDQUFDLENBQUMsT0FBTyxJQUFJLEVBQUUsRUFBQztnQkFDbEQsT0FBTyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDO2FBQ3pCO1NBQ0o7UUFDRCxPQUFPLElBQUksQ0FBQztJQUNoQixDQUFDO0lBRUQsa0NBQVksR0FBWixVQUFhLEtBQUs7UUFDZCxJQUFJLEtBQUssR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxLQUFLLEdBQUcsR0FBRyxDQUFDLENBQUM7UUFDMUMsSUFBSSxNQUFNLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsTUFBTSxHQUFHLEdBQUcsQ0FBQyxDQUFDO1FBRTVDLElBQUksSUFBSSxHQUFHLEtBQUssQ0FBQztRQUNqQixJQUFJLElBQUksR0FBRyxJQUFJLENBQUMsUUFBUSxHQUFDLENBQUMsQ0FBQztRQUMzQixJQUFJLElBQUksR0FBRyxDQUFDLENBQUM7UUFDYixJQUFJLElBQUksR0FBRyxJQUFJLENBQUMsU0FBUyxHQUFDLENBQUMsR0FBRyxNQUFNLEdBQUcsQ0FBQyxDQUFDO1FBRXpDLElBQUcsS0FBSyxDQUFDLElBQUksSUFBSSxTQUFTLEVBQUM7WUFDdkIsSUFBSSxHQUFHLEtBQUssR0FBQyxDQUFDLENBQUM7WUFDZixJQUFHLElBQUksQ0FBQyxRQUFRLEdBQUcsQ0FBQztnQkFBRSxJQUFJLEdBQUcsSUFBSSxHQUFDLENBQUMsQ0FBQztTQUN2QzthQUNJLElBQUcsS0FBSyxDQUFDLElBQUksSUFBSSxTQUFTLEVBQUM7WUFDNUIsSUFBSSxHQUFHLEtBQUssR0FBQyxDQUFDLENBQUM7WUFDZixJQUFHLElBQUksQ0FBQyxRQUFRLEdBQUcsQ0FBQztnQkFBRSxJQUFJLEdBQUcsSUFBSSxHQUFDLENBQUMsQ0FBQztTQUN2QzthQUVJLElBQUcsS0FBSyxDQUFDLElBQUksSUFBSSxTQUFTLEVBQUM7WUFDNUIsSUFBSSxHQUFHLEtBQUssR0FBQyxDQUFDLENBQUM7WUFDZixJQUFJLEdBQUcsSUFBSSxHQUFDLENBQUMsQ0FBQztTQUNqQjthQUNJLElBQUcsS0FBSyxDQUFDLElBQUksSUFBSSxTQUFTLEVBQUM7WUFDNUIsSUFBSSxHQUFHLEtBQUssR0FBQyxDQUFDLENBQUM7WUFDZixJQUFJLEdBQUcsSUFBSSxHQUFDLENBQUMsQ0FBQztTQUNqQjthQUNJLElBQUcsS0FBSyxDQUFDLElBQUksSUFBSSxTQUFTLEVBQUM7WUFDNUIsSUFBSSxHQUFHLEtBQUssR0FBQyxDQUFDLENBQUM7WUFDZixJQUFJLEdBQUcsSUFBSSxHQUFDLENBQUMsQ0FBQztTQUNqQjthQUNJLElBQUcsS0FBSyxDQUFDLElBQUksSUFBSSxTQUFTLEVBQUM7WUFDNUIsSUFBSSxHQUFHLEtBQUssR0FBQyxDQUFDLENBQUM7WUFDZixJQUFJLEdBQUcsSUFBSSxHQUFDLENBQUMsQ0FBQztTQUNqQjtRQUVELE9BQU8sRUFBQyxJQUFJLEVBQUMsSUFBSSxFQUFDLElBQUksRUFBQyxJQUFJLEVBQUMsSUFBSSxFQUFDLElBQUksRUFBQyxJQUFJLEVBQUMsSUFBSSxFQUFDLENBQUM7SUFDckQsQ0FBQztJQUVELFlBQVk7SUFDWiwrQkFBUyxHQUFULFVBQVUsSUFBSSxFQUFDLE1BQU07UUFDakIsSUFBSSxTQUFTLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUN4QyxJQUFJLElBQUksR0FBRyxTQUFTLENBQUMsSUFBSSxDQUFDO1FBQzFCLElBQUksSUFBSSxHQUFHLFNBQVMsQ0FBQyxJQUFJLENBQUM7UUFDMUIsSUFBSSxJQUFJLEdBQUcsU0FBUyxDQUFDLElBQUksQ0FBQztRQUMxQixJQUFJLElBQUksR0FBRyxTQUFTLENBQUMsSUFBSSxDQUFDO1FBRTFCLElBQUksT0FBTyxHQUFHLEVBQUUsQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxPQUFPLENBQUMsQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLFlBQVksQ0FBQyxPQUFPLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUV0RixXQUFXO1FBRVgsSUFBSSxTQUFTLEdBQUcsRUFBRSxDQUFDO1FBQ25CLEtBQUksSUFBSSxDQUFDLEdBQUMsQ0FBQyxFQUFDLENBQUMsR0FBQyxNQUFNLENBQUMsTUFBTSxFQUFDLENBQUMsRUFBRSxFQUFDO1lBQzVCLFNBQVMsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxPQUFPLENBQUMsQ0FBQyxHQUFHLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsT0FBTyxDQUFDLENBQUMsR0FBRyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztTQUMzRTtRQUVELHNDQUFzQztRQUN0QyxtQ0FBbUM7UUFFbkMsSUFBSSxFQUFFLEdBQUcsQ0FBQyxDQUFDLENBQUM7UUFDWixJQUFJLEVBQUUsR0FBRyxDQUFDLENBQUM7UUFDWCxXQUFXO1FBQ1gsd0JBQXdCO1FBQ3hCLElBQUksU0FBUyxHQUFHLElBQUksQ0FBQyxjQUFjLENBQUMsU0FBUyxFQUFDLElBQUksRUFBQyxJQUFJLENBQUMsQ0FBQztRQUV6RCxjQUFjO1FBQ2QsSUFBSSxPQUFPLENBQUMsQ0FBQyxJQUFJLElBQUksSUFBSSxTQUFTLENBQUMsQ0FBQyxDQUFDLElBQUksSUFBSSxFQUFFO1lBQzNDLHNDQUFzQztZQUN0Qyw4QkFBOEI7WUFDOUIsRUFBRSxJQUFJLENBQUMsQ0FBQztZQUNSLElBQUksU0FBUyxHQUFHLEVBQUUsQ0FBQztZQUNuQixLQUFJLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxFQUFFLEVBQUM7Z0JBQzFDLElBQUksUUFBUSxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsY0FBYyxDQUFDLE1BQU0sQ0FBQyxDQUFDO2dCQUN4RCxJQUFJLE9BQU8sR0FBRyxFQUFFLENBQUMsRUFBRSxDQUFDLFFBQVEsQ0FBQyxZQUFZLENBQUMsTUFBTSxDQUFDLENBQUMsSUFBSSxFQUFDLFFBQVEsQ0FBQyxZQUFZLENBQUMsTUFBTSxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUM7Z0JBQzNGLEtBQUksSUFBSSxHQUFDLEdBQUcsQ0FBQyxFQUFFLEdBQUMsR0FBRyxTQUFTLENBQUMsTUFBTSxFQUFFLEdBQUMsRUFBRSxFQUFDO29CQUNyQyxJQUFHLFNBQVMsQ0FBQyxHQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksT0FBTyxDQUFDLENBQUMsSUFBSSxTQUFTLENBQUMsR0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLE9BQU8sQ0FBQyxDQUFDLEVBQUM7d0JBQ3pELCtFQUErRTt3QkFDL0UsU0FBUyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQztxQkFDNUI7aUJBQ0o7YUFDSjtZQUNELGlDQUFpQztZQUNqQyxJQUFHLFNBQVMsQ0FBQyxNQUFNLElBQUksQ0FBQyxFQUFDO2dCQUNyQixJQUFJLE1BQU0sR0FBRyxJQUFJLENBQUMsY0FBYyxDQUFDLE1BQU0sRUFBQyxJQUFJLENBQUMsWUFBWSxDQUFDLE9BQU8sQ0FBQyxDQUFDLElBQUksRUFBQyxJQUFJLENBQUMsWUFBWSxDQUFDLE9BQU8sQ0FBQyxDQUFDLElBQUksRUFBQyxTQUFTLENBQUMsQ0FBQztnQkFDbkgsSUFBRyxNQUFNLElBQUksSUFBSTtvQkFBRSxNQUFNLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxNQUFNLEVBQUMsU0FBUyxFQUFDLElBQUksQ0FBQyxDQUFDO2dCQUNqRSw4QkFBOEI7Z0JBQzlCLElBQUcsTUFBTSxFQUFDO29CQUVOLElBQUksQ0FBQyxRQUFRLElBQUksQ0FBQyxDQUFDO29CQUNuQixJQUFJLENBQUMsaUJBQWlCLENBQUMsSUFBSSxDQUFDLENBQUM7b0JBQzdCLEVBQUUsR0FBRyxDQUFDLENBQUM7b0JBQ1AsSUFBSSxDQUFDLGNBQWMsQ0FBQyxJQUFJLEVBQUMsRUFBRSxDQUFDLENBQUM7b0JBQzdCLE9BQU8sRUFBRSxDQUFDO2lCQUNiO2FBQ0o7U0FDSjtRQUNELElBQUksT0FBTyxDQUFDLENBQUMsSUFBSSxJQUFJLElBQUksU0FBUyxDQUFDLENBQUMsQ0FBQyxJQUFJLElBQUksRUFBRTtZQUMzQyxzQ0FBc0M7WUFDdEMsOEJBQThCO1lBQzlCLEVBQUUsSUFBSSxDQUFDLENBQUM7WUFDUixJQUFJLFVBQVUsR0FBRyxFQUFFLENBQUM7WUFDcEIsS0FBSSxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLElBQUksQ0FBQyxVQUFVLENBQUMsTUFBTSxFQUFFLENBQUMsRUFBRSxFQUFDO2dCQUMzQyxJQUFJLFNBQVMsR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDLGNBQWMsQ0FBQyxNQUFNLENBQUMsQ0FBQztnQkFDMUQsSUFBSSxPQUFPLEdBQUcsRUFBRSxDQUFDLEVBQUUsQ0FBQyxTQUFTLENBQUMsWUFBWSxDQUFDLE1BQU0sQ0FBQyxDQUFDLElBQUksRUFBQyxTQUFTLENBQUMsWUFBWSxDQUFDLE1BQU0sQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDO2dCQUM3RixLQUFJLElBQUksR0FBQyxHQUFHLENBQUMsRUFBRSxHQUFDLEdBQUcsU0FBUyxDQUFDLE1BQU0sRUFBRSxHQUFDLEVBQUUsRUFBQztvQkFDckMsSUFBRyxTQUFTLENBQUMsR0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLE9BQU8sQ0FBQyxDQUFDLElBQUksU0FBUyxDQUFDLEdBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxPQUFPLENBQUMsQ0FBQyxFQUFDO3dCQUN6RCwrRUFBK0U7d0JBQy9FLFVBQVUsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUM7cUJBQzlCO2lCQUNKO2FBQ0o7WUFFRCxJQUFHLFVBQVUsQ0FBQyxNQUFNLElBQUksQ0FBQyxFQUFDO2dCQUN0QixJQUFJLE1BQU0sR0FBRyxJQUFJLENBQUMsY0FBYyxDQUFDLE9BQU8sRUFBQyxJQUFJLENBQUMsWUFBWSxDQUFDLE9BQU8sQ0FBQyxDQUFDLElBQUksRUFBQyxJQUFJLENBQUMsWUFBWSxDQUFDLE9BQU8sQ0FBQyxDQUFDLElBQUksRUFBQyxTQUFTLENBQUMsQ0FBQztnQkFFcEgsSUFBRyxNQUFNLElBQUksSUFBSTtvQkFBRSxNQUFNLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxNQUFNLEVBQUMsVUFBVSxFQUFDLElBQUksQ0FBQyxDQUFDO2dCQUNsRSw4QkFBOEI7Z0JBQzlCLElBQUcsTUFBTSxFQUFDO29CQUVOLElBQUksQ0FBQyxRQUFRLElBQUksQ0FBQyxDQUFDO29CQUNuQixJQUFJLENBQUMsaUJBQWlCLENBQUMsSUFBSSxDQUFDLENBQUM7b0JBQzdCLEVBQUUsR0FBRyxDQUFDLENBQUM7b0JBQ1AsSUFBSSxDQUFDLGNBQWMsQ0FBQyxJQUFJLEVBQUMsRUFBRSxDQUFDLENBQUM7b0JBQzdCLE9BQU8sRUFBRSxDQUFDO2lCQUNiO2FBQ0o7U0FHSjtRQUNELElBQUksT0FBTyxDQUFDLENBQUMsSUFBSyxJQUFJLElBQUksU0FBUyxDQUFDLENBQUMsQ0FBQyxJQUFJLElBQUksRUFBRTtZQUM1QyxFQUFFLElBQUksQ0FBQyxDQUFDO1lBQ1Isc0NBQXNDO1lBQ3RDLDhCQUE4QjtZQUM5QixJQUFJLFNBQVMsR0FBRyxFQUFFLENBQUM7WUFDbkIsS0FBSSxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsTUFBTSxFQUFFLENBQUMsRUFBRSxFQUFDO2dCQUN6QyxJQUFJLFVBQVUsR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLGNBQWMsQ0FBQyxNQUFNLENBQUMsQ0FBQztnQkFDekQsSUFBSSxPQUFPLEdBQUcsRUFBRSxDQUFDLEVBQUUsQ0FBQyxVQUFVLENBQUMsWUFBWSxDQUFDLE1BQU0sQ0FBQyxDQUFDLElBQUksRUFBQyxVQUFVLENBQUMsWUFBWSxDQUFDLE1BQU0sQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDO2dCQUMvRixLQUFJLElBQUksR0FBQyxHQUFHLENBQUMsRUFBRSxHQUFDLEdBQUcsU0FBUyxDQUFDLE1BQU0sRUFBRSxHQUFDLEVBQUUsRUFBQztvQkFDckMsSUFBSSxNQUFNLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxTQUFTLENBQUMsR0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQTtvQkFDakQsSUFBRyxTQUFTLENBQUMsR0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLE9BQU8sQ0FBQyxDQUFDLElBQUksU0FBUyxDQUFDLEdBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxPQUFPLENBQUMsQ0FBQyxJQUFJLE1BQU0sSUFBSSxJQUFJLENBQUMsWUFBWSxDQUFDLE9BQU8sQ0FBQyxDQUFDLEdBQUcsRUFBQzt3QkFDckcsK0VBQStFO3dCQUMvRSxTQUFTLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDO3FCQUM5QjtpQkFDSjthQUNKO1lBRUQsSUFBRyxTQUFTLENBQUMsTUFBTSxJQUFJLENBQUMsRUFBQztnQkFDckIsSUFBSSxNQUFNLEdBQUcsSUFBSSxDQUFDLGNBQWMsQ0FBQyxNQUFNLEVBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxPQUFPLENBQUMsQ0FBQyxJQUFJLEVBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxPQUFPLENBQUMsQ0FBQyxJQUFJLEVBQUMsU0FBUyxDQUFDLENBQUM7Z0JBQ25ILElBQUcsTUFBTSxJQUFJLElBQUk7b0JBQUUsTUFBTSxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsTUFBTSxFQUFDLFNBQVMsRUFBQyxJQUFJLENBQUMsQ0FBQztnQkFDakUsOEJBQThCO2dCQUM5QixJQUFHLE1BQU0sRUFBQztvQkFFTixJQUFJLENBQUMsUUFBUSxJQUFJLENBQUMsQ0FBQztvQkFDbkIsSUFBSSxDQUFDLGlCQUFpQixDQUFDLElBQUksQ0FBQyxDQUFDO29CQUM3QixFQUFFLEdBQUcsQ0FBQyxDQUFDO29CQUNQLElBQUksQ0FBQyxjQUFjLENBQUMsSUFBSSxFQUFDLEVBQUUsQ0FBQyxDQUFDO29CQUM3QixPQUFPLEVBQUUsQ0FBQztpQkFDYjthQUNKO1NBR0o7UUFDRCxJQUFJLE9BQU8sQ0FBQyxDQUFDLElBQUssSUFBSSxJQUFJLFNBQVMsQ0FBQyxDQUFDLENBQUMsSUFBSSxJQUFJLEVBQUU7WUFDNUMsRUFBRSxJQUFJLENBQUMsQ0FBQztZQUNSLHNDQUFzQztZQUN0Qyw4QkFBOEI7WUFDOUIsSUFBSSxPQUFPLEdBQUcsRUFBRSxDQUFDO1lBQ2pCLEtBQUksSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDLE1BQU0sRUFBRSxDQUFDLEVBQUUsRUFBQztnQkFDNUMsSUFBSSxPQUFPLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxjQUFjLENBQUMsTUFBTSxDQUFDLENBQUM7Z0JBQ3pELElBQUksT0FBTyxHQUFHLEVBQUUsQ0FBQyxFQUFFLENBQUMsT0FBTyxDQUFDLFlBQVksQ0FBQyxNQUFNLENBQUMsQ0FBQyxJQUFJLEVBQUMsT0FBTyxDQUFDLFlBQVksQ0FBQyxNQUFNLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQztnQkFDekYsS0FBSSxJQUFJLEdBQUMsR0FBRyxDQUFDLEVBQUUsR0FBQyxHQUFHLFNBQVMsQ0FBQyxNQUFNLEVBQUUsR0FBQyxFQUFFLEVBQUM7b0JBQ3JDLElBQUksTUFBTSxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsU0FBUyxDQUFDLEdBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUE7b0JBQ2pELElBQUcsU0FBUyxDQUFDLEdBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxPQUFPLENBQUMsQ0FBQyxJQUFJLFNBQVMsQ0FBQyxHQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsT0FBTyxDQUFDLENBQUMsSUFBSSxNQUFNLElBQUksSUFBSSxDQUFDLFlBQVksQ0FBQyxPQUFPLENBQUMsQ0FBQyxHQUFHLEVBQUM7d0JBQ3JHLE9BQU8sQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUM7cUJBQ3pCO2lCQUNKO2FBQ0o7WUFFRCxJQUFHLE9BQU8sQ0FBQyxNQUFNLElBQUksQ0FBQyxFQUFDO2dCQUNuQixJQUFJLE1BQU0sR0FBRyxJQUFJLENBQUMsY0FBYyxDQUFDLElBQUksRUFBQyxJQUFJLENBQUMsWUFBWSxDQUFDLE9BQU8sQ0FBQyxDQUFDLElBQUksRUFBQyxJQUFJLENBQUMsWUFBWSxDQUFDLE9BQU8sQ0FBQyxDQUFDLElBQUksRUFBQyxTQUFTLENBQUMsQ0FBQztnQkFDakgsSUFBRyxNQUFNLElBQUksSUFBSTtvQkFBRSxNQUFNLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxNQUFNLEVBQUMsT0FBTyxFQUFDLElBQUksQ0FBQyxDQUFDO2dCQUMvRCxrQ0FBa0M7Z0JBQ2xDLElBQUcsTUFBTSxFQUFDO29CQUVOLElBQUksQ0FBQyxRQUFRLElBQUksQ0FBQyxDQUFDO29CQUNuQixJQUFJLENBQUMsaUJBQWlCLENBQUMsSUFBSSxDQUFDLENBQUM7b0JBQzdCLEVBQUUsR0FBRyxDQUFDLENBQUM7b0JBQ1AsSUFBSSxDQUFDLGNBQWMsQ0FBQyxJQUFJLEVBQUMsRUFBRSxDQUFDLENBQUM7b0JBQzdCLE9BQU8sRUFBRSxDQUFDO2lCQUNiO2FBQ0o7U0FFSjtRQUNELElBQUcsRUFBRSxJQUFJLENBQUM7WUFBRSxFQUFFLEdBQUcsQ0FBQyxDQUFDLENBQUM7UUFDcEIsdUNBQXVDO1FBQ3ZDLHFDQUFxQztRQUNyQyxPQUFPLEVBQUUsQ0FBQztJQUNkLENBQUM7SUFFRCxpQ0FBVyxHQUFYO1FBQ0ksSUFBRyxJQUFJLENBQUMsUUFBUSxDQUFDLE1BQU0sSUFBSSxDQUFDLEVBQUM7WUFDekIsS0FBSSxJQUFJLENBQUMsR0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsTUFBTSxFQUFFLENBQUMsRUFBRSxFQUFDO2dCQUNyQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLGNBQWMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxZQUFZLENBQUMsTUFBTSxDQUFDLENBQUMsVUFBVSxFQUFFLENBQUM7YUFDN0U7U0FDSjtRQUVELElBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxNQUFNLElBQUcsQ0FBQyxFQUFDO1lBQzFCLEtBQUksSUFBSSxDQUFDLEdBQUMsQ0FBQyxFQUFFLENBQUMsR0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLE1BQU0sRUFBRSxDQUFDLEVBQUUsRUFBQztnQkFDdkMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxjQUFjLENBQUMsTUFBTSxDQUFDLENBQUMsWUFBWSxDQUFDLE1BQU0sQ0FBQyxDQUFDLFlBQVksRUFBRSxDQUFDO2FBQ2pGO1NBQ0o7SUFDTCxDQUFDO0lBRUQsV0FBVztJQUNYLDhCQUFRLEdBQVIsVUFBUyxFQUFFLEVBQUMsU0FBUyxFQUFDLElBQUk7UUFDdEIsS0FBSSxJQUFJLENBQUMsR0FBQyxDQUFDLEVBQUMsQ0FBQyxHQUFDLFNBQVMsQ0FBQyxNQUFNLEVBQUMsQ0FBQyxFQUFFLEVBQUM7WUFDL0IsSUFBRyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsWUFBWSxDQUFDLE1BQU0sQ0FBQyxDQUFDLE9BQU8sSUFBSSxDQUFDLEVBQUM7Z0JBQzlDLE9BQU8sQ0FBQyxHQUFHLENBQUMsVUFBVSxFQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxZQUFZLENBQUMsTUFBTSxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUM7YUFDbEU7WUFDRCxJQUFHLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxZQUFZLENBQUMsTUFBTSxDQUFDLENBQUMsT0FBTyxJQUFJLENBQUMsSUFBSSxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsWUFBWSxDQUFDLE1BQU0sQ0FBQyxDQUFDLElBQUksSUFBSSxLQUFLLEVBQUM7Z0JBQ2pHLEVBQUUsR0FBRyxLQUFLLENBQUM7Z0JBQ1gsTUFBTTthQUNUO1lBQ0QsOEdBQThHO1lBQzlHLElBQUcsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLFlBQVksQ0FBQyxNQUFNLENBQUMsQ0FBQyxLQUFLLElBQUksSUFBSSxDQUFDLFlBQVksQ0FBQyxPQUFPLENBQUMsQ0FBQyxLQUFLLEVBQUM7Z0JBRTNFLEVBQUUsR0FBRyxLQUFLLENBQUM7Z0JBQ1gsTUFBTTthQUNUO1lBQ0QsSUFBRyxJQUFJLENBQUMsWUFBWSxDQUFDLE9BQU8sQ0FBQyxDQUFDLElBQUksSUFBSSxDQUFDLEVBQUM7Z0JBQ3BDLElBQUcsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLFlBQVksQ0FBQyxNQUFNLENBQUMsQ0FBQyxPQUFPLElBQUksQ0FBQyxFQUFDO29CQUM5QyxFQUFFLEdBQUcsS0FBSyxDQUFDO29CQUNYLE1BQU07aUJBQ1Q7YUFDSjtTQUNKO1FBQ0QsSUFBRyxFQUFFLElBQUksSUFBSSxJQUFLLElBQUksQ0FBQyxZQUFZLENBQUMsT0FBTyxDQUFDLENBQUMsSUFBSSxJQUFJLENBQUMsRUFBQztZQUNuRCxLQUFJLElBQUksQ0FBQyxHQUFDLENBQUMsRUFBQyxDQUFDLEdBQUMsU0FBUyxDQUFDLE1BQU0sRUFBQyxDQUFDLEVBQUUsRUFBQztnQkFDL0IsSUFBRyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsWUFBWSxDQUFDLE1BQU0sQ0FBQyxDQUFDLE9BQU8sSUFBSSxDQUFDLElBQUksU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLFlBQVksQ0FBQyxNQUFNLENBQUMsQ0FBQyxTQUFTLENBQUMsTUFBTSxJQUFJLENBQUMsRUFBQztvQkFDekcsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLFlBQVksQ0FBQyxNQUFNLENBQUMsQ0FBQyxZQUFZLEVBQUUsQ0FBQztpQkFDcEQ7YUFDSjtTQUNKO1FBQ0Qsc0NBQXNDO1FBQ3RDLG9DQUFvQztRQUNwQyxPQUFPLEVBQUUsQ0FBQztJQUNkLENBQUM7SUFFRCxrQkFBa0I7SUFDbEIsb0NBQWMsR0FBZCxVQUFlLFNBQVMsRUFBQyxJQUFJLEVBQUMsSUFBSSxFQUFDLE1BQU07UUFDckMsSUFBSSxFQUFFLEdBQUcsSUFBSSxDQUFDO1FBQ2QsSUFBSSxFQUFFLEdBQUcsRUFBRSxDQUFDO1FBQ1osSUFBRyxNQUFNLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBQztZQUNqQixLQUFJLElBQUksQ0FBQyxHQUFDLENBQUMsRUFBRSxDQUFDLEdBQUMsTUFBTSxDQUFDLE1BQU0sRUFBRSxDQUFDLEVBQUUsRUFBQztnQkFDOUIsSUFBSSxHQUFHLEdBQUcsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDO2dCQUNwQixJQUFJLENBQUMsR0FBRyxHQUFHLENBQUMsQ0FBQyxDQUFDO2dCQUNkLElBQUksQ0FBQyxHQUFHLEdBQUcsQ0FBQyxDQUFDLENBQUM7Z0JBQ2QsRUFBRSxHQUFHLElBQUksQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsWUFBWSxDQUFDLFVBQVUsQ0FBQyxDQUFDLFFBQVEsQ0FBQztnQkFDaEUsRUFBRSxHQUFHLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxFQUFFLEVBQUMsU0FBUyxFQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsQ0FBQztnQkFDL0MsSUFBRyxDQUFDLEVBQUUsRUFBQztvQkFDSCx5QkFBeUI7b0JBQ3pCLENBQUMsR0FBRyxPQUFPLENBQUM7b0JBQ1osT0FBTyxFQUFFLENBQUM7aUJBQ2I7YUFDSjtTQUNKO1FBQ0Qsc0NBQXNDO1FBQ3RDLGtDQUFrQztRQUNsQyxPQUFPLEVBQUUsQ0FBQztJQUNkLENBQUM7SUFFRCwwQ0FBMEM7SUFDMUMsd0NBQWtCLEdBQWxCLFVBQW1CLEVBQUUsRUFBQyxTQUFTLEVBQUMsQ0FBQyxFQUFDLENBQUM7UUFDL0IsSUFBSSxFQUFFLEdBQUcsSUFBSSxDQUFDO1FBRWQsSUFBRyxTQUFTLElBQUksTUFBTSxFQUFDO1lBQ25CLElBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQyxDQUFDLEdBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsWUFBWSxDQUFDLFVBQVUsQ0FBQyxDQUFDLFFBQVEsSUFBSSxFQUFFLElBQUksSUFBSSxDQUFDLGFBQWEsQ0FBQyxDQUFDLEdBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsWUFBWSxDQUFDLFVBQVUsQ0FBQyxDQUFDLFFBQVEsSUFBRyxNQUFNO21CQUMzSSxJQUFJLENBQUMsYUFBYSxDQUFDLENBQUMsR0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxZQUFZLENBQUMsVUFBVSxDQUFDLENBQUMsUUFBUSxJQUFJLEVBQUUsRUFBRTtnQkFDbkUsdUJBQXVCO2dCQUN2QixFQUFFLEdBQUcsS0FBSyxDQUFDO2dCQUNYLE9BQU8sRUFBRSxDQUFDO2FBQ2I7WUFDRCxJQUFHLElBQUksQ0FBQyxhQUFhLENBQUMsQ0FBQyxHQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sSUFBSSxHQUFHLEVBQUM7Z0JBQ3pDLEVBQUUsR0FBRyxLQUFLLENBQUM7Z0JBQ1gsT0FBTyxFQUFFLENBQUM7YUFDYjtZQUNELElBQUcsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQyxFQUFDO2dCQUNaLElBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQyxDQUFDLEdBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsWUFBWSxDQUFDLFVBQVUsQ0FBQyxDQUFDLFFBQVEsSUFBSSxFQUFFLElBQUksSUFBSSxDQUFDLGFBQWEsQ0FBQyxDQUFDLEdBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsWUFBWSxDQUFDLFVBQVUsQ0FBQyxDQUFDLFFBQVEsSUFBRyxNQUFNO3VCQUMzSSxJQUFJLENBQUMsYUFBYSxDQUFDLENBQUMsR0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxZQUFZLENBQUMsVUFBVSxDQUFDLENBQUMsUUFBUSxJQUFJLEVBQUUsRUFBRTtvQkFDbkUsdUJBQXVCO29CQUN2QixFQUFFLEdBQUcsS0FBSyxDQUFDO29CQUNYLE9BQU8sRUFBRSxDQUFDO2lCQUNiO2dCQUNELElBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQyxDQUFDLEdBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxJQUFJLEdBQUcsRUFBQztvQkFDekMsRUFBRSxHQUFHLEtBQUssQ0FBQztvQkFDWCxPQUFPLEVBQUUsQ0FBQztpQkFDYjthQUNKO1NBQ0o7YUFDSSxJQUFHLFNBQVMsSUFBSSxPQUFPLEVBQUM7WUFDekIsSUFBRyxJQUFJLENBQUMsYUFBYSxDQUFDLENBQUMsR0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxZQUFZLENBQUMsVUFBVSxDQUFDLENBQUMsUUFBUSxJQUFJLEVBQUUsSUFBSSxJQUFJLENBQUMsYUFBYSxDQUFDLENBQUMsR0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxZQUFZLENBQUMsVUFBVSxDQUFDLENBQUMsUUFBUSxJQUFHLE1BQU07bUJBQzNJLElBQUksQ0FBQyxhQUFhLENBQUMsQ0FBQyxHQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFlBQVksQ0FBQyxVQUFVLENBQUMsQ0FBQyxRQUFRLElBQUksRUFBRSxFQUFFO2dCQUNuRSx1QkFBdUI7Z0JBQ3ZCLEVBQUUsR0FBRyxLQUFLLENBQUM7Z0JBQ1gsT0FBTyxFQUFFLENBQUM7YUFDYjtZQUNELElBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQyxDQUFDLEdBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxJQUFJLEdBQUcsRUFBQztnQkFDekMsRUFBRSxHQUFHLEtBQUssQ0FBQztnQkFDWCxPQUFPLEVBQUUsQ0FBQzthQUNiO1lBQ0QsSUFBRyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBSSxJQUFJLENBQUMsYUFBYSxDQUFDLE1BQU0sR0FBQyxDQUFDLEVBQUM7Z0JBQ3RDLElBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQyxDQUFDLEdBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsWUFBWSxDQUFDLFVBQVUsQ0FBQyxDQUFDLFFBQVEsSUFBSSxFQUFFLElBQUksSUFBSSxDQUFDLGFBQWEsQ0FBQyxDQUFDLEdBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsWUFBWSxDQUFDLFVBQVUsQ0FBQyxDQUFDLFFBQVEsSUFBRyxNQUFNO3VCQUMzSSxJQUFJLENBQUMsYUFBYSxDQUFDLENBQUMsR0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxZQUFZLENBQUMsVUFBVSxDQUFDLENBQUMsUUFBUSxJQUFJLEVBQUUsRUFBRTtvQkFDbkUsdUJBQXVCO29CQUN2QixFQUFFLEdBQUcsS0FBSyxDQUFDO29CQUNYLE9BQU8sRUFBRSxDQUFDO2lCQUNiO2dCQUNELElBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQyxDQUFDLEdBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxJQUFJLEdBQUcsRUFBQztvQkFDekMsRUFBRSxHQUFHLEtBQUssQ0FBQztvQkFDWCxPQUFPLEVBQUUsQ0FBQztpQkFDYjthQUNKO1NBQ0o7UUFDRCxJQUFHLFNBQVMsSUFBSSxJQUFJLEVBQUM7WUFDakIsSUFBRyxJQUFJLENBQUMsYUFBYSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBQyxDQUFDLENBQUMsQ0FBQyxZQUFZLENBQUMsVUFBVSxDQUFDLENBQUMsUUFBUSxJQUFJLEVBQUUsSUFBSSxJQUFJLENBQUMsYUFBYSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBQyxDQUFDLENBQUMsQ0FBQyxZQUFZLENBQUMsVUFBVSxDQUFDLENBQUMsUUFBUSxJQUFHLE1BQU07bUJBQzNJLElBQUksQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFDLENBQUMsQ0FBQyxDQUFDLFlBQVksQ0FBQyxVQUFVLENBQUMsQ0FBQyxRQUFRLElBQUksRUFBRSxFQUFFO2dCQUNuRSx1QkFBdUI7Z0JBQ3ZCLEVBQUUsR0FBRyxLQUFLLENBQUM7Z0JBQ1gsT0FBTyxFQUFFLENBQUM7YUFDYjtZQUNELElBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxJQUFJLEdBQUcsRUFBQztnQkFDekMsRUFBRSxHQUFHLEtBQUssQ0FBQztnQkFDWCxPQUFPLEVBQUUsQ0FBQzthQUNiO1lBQ0QsSUFBRyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBSSxJQUFJLENBQUMsYUFBYSxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sR0FBQyxDQUFDLEVBQUM7Z0JBQ3pDLElBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUMsQ0FBQyxDQUFDLENBQUMsWUFBWSxDQUFDLFVBQVUsQ0FBQyxDQUFDLFFBQVEsSUFBSSxFQUFFLElBQUksSUFBSSxDQUFDLGFBQWEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUMsQ0FBQyxDQUFDLENBQUMsWUFBWSxDQUFDLFVBQVUsQ0FBQyxDQUFDLFFBQVEsSUFBRyxNQUFNO3VCQUMzSSxJQUFJLENBQUMsYUFBYSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBQyxDQUFDLENBQUMsQ0FBQyxZQUFZLENBQUMsVUFBVSxDQUFDLENBQUMsUUFBUSxJQUFJLEVBQUUsRUFBRTtvQkFDbkUsdUJBQXVCO29CQUN2QixFQUFFLEdBQUcsS0FBSyxDQUFDO29CQUNYLE9BQU8sRUFBRSxDQUFDO2lCQUNiO2dCQUNELElBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxJQUFJLEdBQUcsRUFBQztvQkFDekMsRUFBRSxHQUFHLEtBQUssQ0FBQztvQkFDWCxPQUFPLEVBQUUsQ0FBQztpQkFDYjthQUNKO1NBQ0o7UUFDRCxJQUFHLFNBQVMsSUFBSSxNQUFNLEVBQUM7WUFDbkIsSUFBRyxJQUFJLENBQUMsYUFBYSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBQyxDQUFDLENBQUMsQ0FBQyxZQUFZLENBQUMsVUFBVSxDQUFDLENBQUMsUUFBUSxJQUFJLEVBQUUsSUFBSSxJQUFJLENBQUMsYUFBYSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBQyxDQUFDLENBQUMsQ0FBQyxZQUFZLENBQUMsVUFBVSxDQUFDLENBQUMsUUFBUSxJQUFHLE1BQU07bUJBQzNJLElBQUksQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFDLENBQUMsQ0FBQyxDQUFDLFlBQVksQ0FBQyxVQUFVLENBQUMsQ0FBQyxRQUFRLElBQUksRUFBRSxFQUFFO2dCQUNuRSx1QkFBdUI7Z0JBQ3ZCLEVBQUUsR0FBRyxLQUFLLENBQUM7Z0JBQ1gsT0FBTyxFQUFFLENBQUM7YUFDYjtZQUNELElBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxJQUFJLEdBQUcsRUFBQztnQkFDekMsRUFBRSxHQUFHLEtBQUssQ0FBQztnQkFDWCxPQUFPLEVBQUUsQ0FBQzthQUNiO1lBQ0QsSUFBRyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDLEVBQUM7Z0JBQ1osSUFBRyxJQUFJLENBQUMsYUFBYSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBQyxDQUFDLENBQUMsQ0FBQyxZQUFZLENBQUMsVUFBVSxDQUFDLENBQUMsUUFBUSxJQUFJLEVBQUUsSUFBSSxJQUFJLENBQUMsYUFBYSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBQyxDQUFDLENBQUMsQ0FBQyxZQUFZLENBQUMsVUFBVSxDQUFDLENBQUMsUUFBUSxJQUFHLE1BQU07dUJBQzNJLElBQUksQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFDLENBQUMsQ0FBQyxDQUFDLFlBQVksQ0FBQyxVQUFVLENBQUMsQ0FBQyxRQUFRLElBQUksRUFBRSxFQUFFO29CQUNuRSx1QkFBdUI7b0JBQ3ZCLEVBQUUsR0FBRyxLQUFLLENBQUM7b0JBQ1gsT0FBTyxFQUFFLENBQUM7aUJBQ2I7Z0JBQ0QsSUFBRyxJQUFJLENBQUMsYUFBYSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLElBQUksR0FBRyxFQUFDO29CQUN6QyxFQUFFLEdBQUcsS0FBSyxDQUFDO29CQUNYLE9BQU8sRUFBRSxDQUFDO2lCQUNiO2FBQ0o7U0FDSjtRQUNELG9DQUFvQztRQUNwQyxPQUFPLEVBQUUsQ0FBQztJQUNkLENBQUM7SUFFRCxvQ0FBYyxHQUFkLFVBQWUsU0FBUyxFQUFDLElBQUksRUFBQyxJQUFJO1FBQzlCLElBQUksRUFBRSxHQUFHLENBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxDQUFDLENBQUM7UUFDbkMsS0FBSSxJQUFJLENBQUMsR0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFDLFNBQVMsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxFQUFFLEVBQUM7WUFDakMsSUFBRyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksS0FBSyxFQUFDO2dCQUNwQyxJQUFHLElBQUksQ0FBQyxhQUFhLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxJQUFJLEdBQUcsRUFBQztvQkFDbkUsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQztpQkFDaEI7YUFDSjtZQUNELElBQUksRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLEtBQUssRUFBQztnQkFDZixJQUFHLElBQUksQ0FBQyxhQUFhLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxJQUFJLEdBQUcsRUFBQztvQkFDbkUsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQztpQkFDaEI7YUFDSjtZQUNELElBQUcsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLElBQUksRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLEtBQUssRUFBQztnQkFDcEMsSUFBRyxJQUFJLENBQUMsYUFBYSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sSUFBSSxHQUFHLEVBQUM7b0JBQ25FLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUM7aUJBQ2hCO2FBQ0o7WUFDRCxJQUFHLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxLQUFLLEVBQUM7Z0JBQ2QsSUFBRyxJQUFJLENBQUMsYUFBYSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sSUFBSSxHQUFHLEVBQUM7b0JBQ25FLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUM7aUJBQ2hCO2FBQ0o7U0FDSjtRQUNELE9BQU8sRUFBRSxDQUFDO0lBQ2QsQ0FBQztJQUVELCtCQUFTLEdBQVQsVUFBVSxTQUFTO1FBQ2YsSUFBSSxFQUFFLEdBQUcsS0FBSyxDQUFDO1FBQ2YsT0FBTyxFQUFFLENBQUM7SUFDZCxDQUFDO0lBRUQsZ0NBQVUsR0FBVixVQUFXLFNBQVMsRUFBQyxHQUFHO1FBQ3BCLElBQUksRUFBRSxHQUFHLEtBQUssQ0FBQztRQUNmLEtBQUksSUFBSSxDQUFDLEdBQUMsQ0FBQyxFQUFFLENBQUMsR0FBQyxTQUFTLENBQUMsTUFBTSxFQUFFLENBQUMsRUFBRSxFQUFDO1NBRXBDO1FBQ0QsT0FBTyxFQUFFLENBQUM7SUFDZCxDQUFDO0lBRUQsK0JBQVMsR0FBVCxVQUFVLFNBQVM7UUFDZixJQUFJLEVBQUUsR0FBRyxLQUFLLENBQUM7UUFDZixLQUFJLElBQUksQ0FBQyxHQUFDLENBQUMsRUFBRSxDQUFDLEdBQUMsU0FBUyxDQUFDLE1BQU0sRUFBRSxDQUFDLEVBQUUsRUFBQztTQUVwQztRQUNELE9BQU8sRUFBRSxDQUFDO0lBQ2QsQ0FBQztJQUVELDZCQUFPLEdBQVAsVUFBUSxTQUFTLEVBQUMsR0FBRztRQUNqQixJQUFJLEVBQUUsR0FBRyxLQUFLLENBQUM7UUFDZixLQUFJLElBQUksQ0FBQyxHQUFDLENBQUMsRUFBRSxDQUFDLEdBQUMsU0FBUyxDQUFDLE1BQU0sRUFBRSxDQUFDLEVBQUUsRUFBQztTQUVwQztRQUNELE9BQU8sRUFBRSxDQUFDO0lBQ2QsQ0FBQztJQUdELG9CQUFvQjtJQUNwQix1Q0FBaUIsR0FBakIsVUFBa0IsSUFBSTtRQUNsQixJQUFJLFdBQVcsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsVUFBQSxLQUFLO1lBQzdDLElBQUcsS0FBSyxDQUFDLFlBQVksQ0FBQyxPQUFPLENBQUMsRUFBQztnQkFDM0IsSUFBRyxLQUFLLENBQUMsWUFBWSxDQUFDLE9BQU8sQ0FBQyxDQUFDLElBQUksSUFBSSxDQUFDO29CQUNwQyxPQUFPLEtBQUssQ0FBQTthQUNuQjtRQUNMLENBQUMsQ0FBQyxDQUFDO1FBQ0gsSUFBRyxXQUFXLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBQztZQUN0QixLQUFJLElBQUksQ0FBQyxHQUFDLENBQUMsRUFBRSxDQUFDLEdBQUMsV0FBVyxDQUFDLE1BQU0sRUFBRSxDQUFDLEVBQUUsRUFBQztnQkFDbkMsV0FBVyxDQUFDLENBQUMsQ0FBQyxDQUFDLGNBQWMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxZQUFZLENBQUMsUUFBUSxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDO2FBQzVFO1NBQ0o7UUFFRCxJQUFHLElBQUksQ0FBQyxZQUFZLENBQUMsT0FBTyxDQUFDLENBQUMsSUFBSSxJQUFJLENBQUMsSUFBSSxJQUFJLENBQUMsWUFBWSxDQUFDLE9BQU8sQ0FBQyxDQUFDLElBQUksSUFBSSxDQUFDLEVBQUM7WUFDNUUsSUFBSSxTQUFTLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLFVBQUEsS0FBSztnQkFDM0MsSUFBRyxLQUFLLENBQUMsWUFBWSxDQUFDLE9BQU8sQ0FBQyxFQUFDO29CQUMzQixJQUFHLEtBQUssQ0FBQyxZQUFZLENBQUMsT0FBTyxDQUFDLENBQUMsSUFBSSxJQUFJLENBQUM7d0JBQ3BDLE9BQU8sS0FBSyxDQUFBO2lCQUNuQjtZQUNMLENBQUMsQ0FBQyxDQUFDO1lBQ0gsSUFBRyxTQUFTLENBQUMsTUFBTSxHQUFHLENBQUM7Z0JBQ25CLEtBQUksSUFBSSxDQUFDLEdBQUMsQ0FBQyxFQUFFLENBQUMsR0FBQyxTQUFTLENBQUMsTUFBTSxFQUFFLENBQUMsRUFBRSxFQUFDO29CQUNqQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsY0FBYyxDQUFDLE1BQU0sQ0FBQyxDQUFDLFlBQVksQ0FBQyxNQUFNLENBQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQztpQkFDckU7U0FFUjtRQUVELEtBQUksSUFBSSxDQUFDLEdBQUMsQ0FBQyxFQUFDLENBQUMsR0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLE1BQU0sRUFBQyxDQUFDLEVBQUUsRUFBQztZQUNqQyxJQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLElBQUksSUFBSSxFQUFDO2dCQUN0QixJQUFJLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLENBQUM7YUFDM0I7U0FDSjtJQUVMLENBQUM7SUFFRCxXQUFXO0lBQ1gsK0JBQVMsR0FBVDtRQUFBLGlCQTBCQztRQXpCRyxJQUFJLENBQUMsS0FBSyxHQUFHLEtBQUssQ0FBQztRQUNuQixJQUFJLENBQUMsT0FBTyxFQUFFLENBQUM7UUFFZixJQUFJLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDO1FBRW5DLElBQUcsSUFBSSxDQUFDLFFBQVEsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsRUFBQztZQUNyRCxpQkFBaUI7WUFDakIsSUFBSSxDQUFDLE9BQU8sR0FBRyxJQUFJLENBQUM7WUFFcEIsSUFBSSxDQUFDLGVBQWUsRUFBRSxDQUFDO1lBQ3ZCLHlCQUF5QjtZQUN6QixFQUFFLENBQUMsRUFBRSxDQUFDLFFBQVEsQ0FBQyxVQUFVLENBQUMsRUFBRSxDQUFDLENBQUM7WUFDOUIsRUFBRSxDQUFDLEVBQUUsQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxVQUFVLEVBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1lBRXZELElBQUksQ0FBQyxhQUFhLEVBQUUsQ0FBQztZQUNyQixVQUFVLENBQUM7Z0JBQ1AsS0FBSSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLGNBQWMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFDO1lBQ2hFLENBQUMsRUFBRSxHQUFHLENBQUMsQ0FBQztZQUNSLHVCQUF1QjtTQUMxQjthQUNHO1lBQ0EsSUFBRyxJQUFJLENBQUMsUUFBUSxJQUFJLElBQUksRUFBQztnQkFDckIsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsQ0FBQzthQUN4QjtTQUNKO0lBQ0wsQ0FBQztJQUVELG1DQUFhLEdBQWI7UUFDSSxLQUFJLElBQUksQ0FBQyxHQUFDLENBQUMsRUFBRSxDQUFDLEdBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxVQUFVLENBQUMsU0FBUyxDQUFDLE1BQU0sRUFBRSxDQUFDLEVBQUUsRUFBQztZQUNsRCxJQUFHLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxVQUFVLENBQUMsT0FBTyxDQUFDLEtBQUssR0FBQyxDQUFDLENBQUMsSUFBSSxFQUFFLENBQUMsRUFBRSxDQUFDLFVBQVUsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxFQUFDO2dCQUN6RSxJQUFJLENBQUMsUUFBUSxHQUFHLENBQUMsQ0FBQzthQUNyQjtTQUNKO0lBQ0wsQ0FBQztJQUVELDhCQUFRLEdBQVI7UUFDSSxFQUFFLENBQUMsRUFBRSxDQUFDLFlBQVksQ0FBQyxTQUFTLENBQUMsVUFBVSxDQUFDLFdBQVcsRUFBQyxJQUFJLENBQUMsQ0FBQztRQUMxRCxJQUFHLEVBQUUsQ0FBQyxFQUFFLENBQUMsVUFBVSxDQUFDLE9BQU8sQ0FBQyxLQUFLLEdBQUcsR0FBRyxFQUFDO1lBQ3BDLEVBQUUsQ0FBQyxFQUFFLENBQUMsVUFBVSxDQUFDLE9BQU8sQ0FBQyxLQUFLLEdBQUcsR0FBRyxDQUFDO1lBQ3JDLGdDQUFnQztZQUVoQyxJQUFHLElBQUksQ0FBQyxRQUFRLElBQUksQ0FBQyxFQUFDO2dCQUNsQixJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsY0FBYyxDQUFDLEtBQUssQ0FBQyxDQUFDLE1BQU0sR0FBRyxLQUFLLENBQUM7Z0JBQzdELElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLENBQUM7Z0JBQ3BCLEVBQUUsQ0FBQyxFQUFFLENBQUMsVUFBVSxDQUFDLGVBQWUsQ0FBQyxLQUFLLEVBQUMsQ0FBQyxDQUFDLENBQUM7Z0JBQzFDLE9BQU87YUFDVjtZQUNELDBDQUEwQztZQUMxQyxFQUFFLENBQUMsRUFBRSxDQUFDLFlBQVksQ0FBQyxTQUFTLENBQUMsVUFBVSxDQUFDLFFBQVEsRUFBQyxJQUFJLENBQUMsQ0FBQztZQUN2RCxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLGNBQWMsQ0FBQyxZQUFZLENBQUMsQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFDO1lBQzFFLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsY0FBYyxDQUFDLFlBQVksQ0FBQyxDQUFDLFlBQVksQ0FBQyxFQUFFLENBQUMsUUFBUSxDQUFDLENBQUMsWUFBWSxDQUFDLENBQUMsRUFBQyxJQUFJLEVBQUMsS0FBSyxDQUFDLENBQUM7WUFDakgseUhBQXlIO1lBQ3pILDJDQUEyQztZQUMzQywwQkFBMEI7WUFDMUIsc0ZBQXNGO1lBQ3RGLFFBQVE7WUFDUixNQUFNO1lBRU4sRUFBRSxDQUFDLFFBQVEsQ0FBQyxZQUFZLENBQUMsV0FBVyxFQUFFLFVBQUMsR0FBRyxFQUFFLEtBQUs7Z0JBQzdDLElBQUksR0FBRyxFQUFFO29CQUNMLE9BQU8sQ0FBQyxLQUFLLENBQUMsaUJBQWlCLEVBQUUsR0FBRyxDQUFDLENBQUM7b0JBQ3RDLE9BQU87aUJBQ1Y7WUFDTCxDQUFDLENBQUMsQ0FBQztZQUNILFVBQVUsQ0FBQztnQkFDUCxFQUFFLENBQUMsUUFBUSxDQUFDLFNBQVMsQ0FBQyxXQUFXLENBQUMsQ0FBQztZQUN2QyxDQUFDLEVBQUUsSUFBSSxDQUFDLENBQUM7U0FDWjthQUNHO1lBRUEsc0JBQXNCO1lBQ3RCLGdDQUFnQztZQUVoQyxJQUFHLElBQUksQ0FBQyxRQUFRLElBQUksQ0FBQyxFQUFDO2dCQUNsQixJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsY0FBYyxDQUFDLEtBQUssQ0FBQyxDQUFDLE1BQU0sR0FBRyxLQUFLLENBQUM7Z0JBQzdELElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLENBQUM7Z0JBQ3BCLEVBQUUsQ0FBQyxFQUFFLENBQUMsVUFBVSxDQUFDLGVBQWUsQ0FBQyxLQUFLLEVBQUMsQ0FBQyxDQUFDLENBQUM7Z0JBQzFDLE9BQU87YUFDVjtZQUNELEVBQUUsQ0FBQyxFQUFFLENBQUMsWUFBWSxDQUFDLFNBQVMsQ0FBQyxVQUFVLENBQUMsUUFBUSxFQUFDLElBQUksQ0FBQyxDQUFDO1lBQ3ZELElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsY0FBYyxDQUFDLFlBQVksQ0FBQyxDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUM7WUFDMUUsSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxjQUFjLENBQUMsWUFBWSxDQUFDLENBQUMsWUFBWSxDQUFDLEVBQUUsQ0FBQyxRQUFRLENBQUMsQ0FBQyxZQUFZLENBQUMsQ0FBQyxFQUFDLElBQUksRUFBQyxLQUFLLENBQUMsQ0FBQztZQUNqSCx5SEFBeUg7WUFDekgsMkNBQTJDO1lBQzNDLDBCQUEwQjtZQUMxQixzRkFBc0Y7WUFDdEYsUUFBUTtZQUNSLE1BQU07WUFDTixVQUFVLENBQUM7Z0JBQ0gsRUFBRSxDQUFDLEVBQUUsQ0FBQyxVQUFVLENBQUMsZUFBZSxDQUFDLElBQUksRUFBQyxDQUFDLENBQUMsQ0FBQztZQUNqRCxDQUFDLEVBQUUsSUFBSSxDQUFDLENBQUM7WUFFVCw0Q0FBNEM7U0FFL0M7SUFDTCxDQUFDO0lBRUQsZ0NBQVUsR0FBVjtRQUNJLEVBQUUsQ0FBQyxFQUFFLENBQUMsWUFBWSxDQUFDLFNBQVMsQ0FBQyxVQUFVLENBQUMsV0FBVyxFQUFDLElBQUksQ0FBQyxDQUFDO1FBQzFELElBQUcsRUFBRSxDQUFDLEVBQUUsQ0FBQyxVQUFVLENBQUMsT0FBTyxDQUFDLEVBQUUsR0FBRyxDQUFDLEVBQUM7WUFDL0IseUJBQVcsQ0FBQyxHQUFHLENBQUMsU0FBUyxDQUFDLE9BQU8sQ0FBQyxDQUFDO1lBQ25DLE9BQU87U0FDVjtRQUNELElBQUcsQ0FBQyxJQUFJLENBQUMsYUFBYTtZQUFFLE9BQU87UUFFL0IsSUFBSSxDQUFDLGFBQWEsR0FBRyxLQUFLLENBQUM7UUFFM0IsZ0NBQWdDO1FBQ2hDLEVBQUUsQ0FBQyxFQUFFLENBQUMsWUFBWSxDQUFDLFNBQVMsQ0FBQyxVQUFVLENBQUMsUUFBUSxFQUFDLElBQUksQ0FBQyxDQUFDO1FBQ3ZELElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsY0FBYyxDQUFDLFlBQVksQ0FBQyxDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUM7UUFDMUUsSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxjQUFjLENBQUMsWUFBWSxDQUFDLENBQUMsWUFBWSxDQUFDLEVBQUUsQ0FBQyxRQUFRLENBQUMsQ0FBQyxZQUFZLENBQUMsQ0FBQyxFQUFDLElBQUksRUFBQyxLQUFLLENBQUMsQ0FBQztRQUNqSCx5SEFBeUg7UUFDekgsMkNBQTJDO1FBQzNDLDBCQUEwQjtRQUMxQixzRkFBc0Y7UUFDdEYsUUFBUTtRQUNSLE1BQU07UUFDTixVQUFVLENBQUM7WUFDSCxFQUFFLENBQUMsRUFBRSxDQUFDLFVBQVUsQ0FBQyxlQUFlLENBQUMsSUFBSSxFQUFDLENBQUMsQ0FBQyxDQUFDO1FBQ2pELENBQUMsRUFBRSxJQUFJLENBQUMsQ0FBQztRQUNULDRDQUE0QztJQUNoRCxDQUFDO0lBRUQsaUNBQVcsR0FBWDtRQUNJLEVBQUUsQ0FBQyxFQUFFLENBQUMsWUFBWSxDQUFDLFNBQVMsQ0FBQyxVQUFVLENBQUMsV0FBVyxFQUFDLElBQUksQ0FBQyxDQUFDO1FBQzFELElBQUksSUFBSSxHQUFHLEdBQUcsQ0FBQztRQUNmLElBQUcsRUFBRSxDQUFDLEVBQUUsQ0FBQyxVQUFVLENBQUMsT0FBTyxDQUFDLE1BQU0sSUFBSSxDQUFDO1lBQUUsSUFBSSxHQUFHLElBQUksQ0FBQzthQUNoRCxJQUFHLEVBQUUsQ0FBQyxFQUFFLENBQUMsVUFBVSxDQUFDLE9BQU8sQ0FBQyxNQUFNLElBQUksQ0FBQztZQUFFLElBQUksR0FBRyxJQUFJLENBQUM7UUFDMUQsbUVBQW1FO1FBQ25FLElBQUcsRUFBRSxDQUFDLEVBQUUsQ0FBQyxVQUFVLENBQUMsT0FBTyxDQUFDLElBQUksR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxFQUFDO1lBQzlDLHlCQUFXLENBQUMsR0FBRyxDQUFDLFNBQVMsQ0FBQyxZQUFZLENBQUMsQ0FBQztZQUN4QyxPQUFPO1NBQ1Y7YUFDRztZQUNBLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQztTQUN6QjtJQUNMLENBQUM7SUFFRCwrQkFBUyxHQUFULFVBQVUsSUFBSTtRQUNWLE9BQU8sQ0FBQyxHQUFHLENBQUMsU0FBUyxFQUFDLElBQUksQ0FBQyxDQUFDO1FBQzVCLEVBQUUsQ0FBQyxFQUFFLENBQUMsUUFBUSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUNoQyx5QkFBVyxDQUFDLEdBQUcsQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLENBQUM7UUFFbEMsSUFBRyxFQUFFLENBQUMsRUFBRSxDQUFDLFVBQVUsQ0FBQyxPQUFPLENBQUMsTUFBTSxHQUFHLENBQUM7WUFDbEMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxVQUFVLENBQUMsT0FBTyxDQUFDLE1BQU0sSUFBSSxDQUFDLENBQUM7UUFFekMsSUFBSSxDQUFDLFFBQVEsR0FBRyxLQUFLLENBQUM7UUFDdEIsSUFBSSxDQUFDLFVBQVUsR0FBRyxFQUFFLENBQUM7UUFDckIsSUFBSSxDQUFDLFFBQVEsSUFBSSxFQUFFLENBQUM7UUFDcEIsSUFBSSxDQUFDLEtBQUssR0FBRyxLQUFLLENBQUM7UUFDbkIsSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLGNBQWMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxNQUFNLEdBQUcsS0FBSyxDQUFDO1FBQzlELElBQUksQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDO0lBQzVCLENBQUM7SUFJRCw2QkFBTyxHQUFQO1FBQ0ksaUJBQWlCO1FBQ2pCLEVBQUUsQ0FBQyxFQUFFLENBQUMsWUFBWSxDQUFDLFNBQVMsQ0FBQyxVQUFVLENBQUMsV0FBVyxFQUFDLElBQUksQ0FBQyxDQUFDO1FBQzFELElBQUcsQ0FBQyxJQUFJLENBQUMsWUFBWTtZQUFFLE9BQU87UUFDOUIsSUFBSSxDQUFDLFlBQVksR0FBRyxLQUFLLENBQUM7UUFDMUIsSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLGNBQWMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFDO1FBQzdELElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxjQUFjLENBQUMsTUFBTSxDQUFDLENBQUMsY0FBYyxDQUFDLE1BQU0sQ0FBQyxDQUFDLE1BQU0sR0FBRyxLQUFLLENBQUM7UUFDckYsSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLGNBQWMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxjQUFjLENBQUMsTUFBTSxDQUFDLENBQUMsTUFBTSxHQUFHLEtBQUssQ0FBQztRQUNyRixJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsY0FBYyxDQUFDLE1BQU0sQ0FBQyxDQUFDLGNBQWMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxNQUFNLEdBQUcsS0FBSyxDQUFDO1FBQ3JGLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxjQUFjLENBQUMsTUFBTSxDQUFDLENBQUMsY0FBYyxDQUFDLFFBQVEsQ0FBQyxDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUM7UUFDdEYsSUFBSSxJQUFJLEdBQUc7WUFDUCxJQUFJLEVBQUMsSUFBSSxDQUFDLFVBQVU7WUFDcEIsUUFBUSxFQUFDLElBQUksQ0FBQyxRQUFRO1lBQ3RCLE1BQU0sRUFBQyxNQUFNO1NBQ2hCLENBQUE7UUFDRCxFQUFFLENBQUMsRUFBRSxDQUFDLFFBQVEsQ0FBQyxZQUFZLENBQUMsY0FBYyxFQUFDLElBQUksQ0FBQyxDQUFDO1FBQ2pELElBQUcsSUFBSSxDQUFDLFNBQVMsSUFBSSxJQUFJLEVBQUM7WUFDdEIsRUFBRSxDQUFDLEVBQUUsQ0FBQyxRQUFRLENBQUMsYUFBYSxDQUFDLENBQUMsQ0FBQyxFQUFDLFVBQUMsSUFBSTtZQUNyQyxDQUFDLENBQUMsQ0FBQTtTQUNMO1FBQ0QsNENBQTRDO0lBQ2hELENBQUM7SUFFRCxnQ0FBVSxHQUFWO1FBQ0ksRUFBRSxDQUFDLEVBQUUsQ0FBQyxZQUFZLENBQUMsU0FBUyxDQUFDLFVBQVUsQ0FBQyxXQUFXLEVBQUMsSUFBSSxDQUFDLENBQUM7UUFDMUQsSUFBRyxhQUFXLENBQUMsU0FBUyxHQUFHLElBQUksRUFBQztZQUM1QixPQUFPO1NBQ1Y7UUFDRCxzQ0FBc0M7UUFDdEMsZ0NBQWdDO1FBQ2hDLEVBQUUsQ0FBQyxFQUFFLENBQUMsVUFBVSxDQUFDLGVBQWUsQ0FBQyxLQUFLLEVBQUMsQ0FBQyxDQUFDLENBQUM7UUFDMUMsSUFBRyxJQUFJLENBQUMsUUFBUSxJQUFJLENBQUMsRUFBQztZQUNsQixJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsY0FBYyxDQUFDLEtBQUssQ0FBQyxDQUFDLE1BQU0sR0FBRyxLQUFLLENBQUM7WUFDN0QsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUNwQixPQUFPO1NBQ1Y7UUFDRCxFQUFFLENBQUMsRUFBRSxDQUFDLFlBQVksQ0FBQyxTQUFTLENBQUMsVUFBVSxDQUFDLFFBQVEsRUFBQyxJQUFJLENBQUMsQ0FBQztRQUN2RCxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLGNBQWMsQ0FBQyxZQUFZLENBQUMsQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFDO1FBQzFFLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsY0FBYyxDQUFDLFlBQVksQ0FBQyxDQUFDLFlBQVksQ0FBQyxFQUFFLENBQUMsUUFBUSxDQUFDLENBQUMsWUFBWSxDQUFDLENBQUMsRUFBQyxJQUFJLEVBQUMsS0FBSyxDQUFDLENBQUM7UUFDakgsRUFBRSxDQUFDLFFBQVEsQ0FBQyxZQUFZLENBQUMsV0FBVyxFQUFFLFVBQUMsR0FBRyxFQUFFLEtBQUs7WUFDN0MsSUFBSSxHQUFHLEVBQUU7Z0JBQ0wsT0FBTyxDQUFDLEtBQUssQ0FBQyxpQkFBaUIsRUFBRSxHQUFHLENBQUMsQ0FBQztnQkFDdEMsT0FBTzthQUNWO1FBRUwsQ0FBQyxDQUFDLENBQUM7UUFFSCxVQUFVLENBQUM7WUFDUCxFQUFFLENBQUMsUUFBUSxDQUFDLFNBQVMsQ0FBQyxXQUFXLENBQUMsQ0FBQztRQUN2QyxDQUFDLEVBQUUsSUFBSSxDQUFDLENBQUM7SUFDYixDQUFDO0lBRUQsUUFBUTtJQUNSLCtCQUFTLEdBQVQsVUFBVSxJQUFJO1FBQWQsaUJBNkJDO1FBNUJHLElBQUksQ0FBQyxlQUFlLEVBQUUsQ0FBQztRQUN2QixJQUFHLElBQUksQ0FBQyxRQUFRLElBQUcsSUFBSSxJQUFHLElBQUksQ0FBQyxPQUFPLElBQUksSUFBSSxFQUFDO1lBQzNDLE9BQU87U0FDVjtRQUVELElBQUksSUFBSSxHQUFHLENBQUMsQ0FBQztRQUNiLElBQUksQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDO1FBQ3JCLElBQUcsSUFBSSxJQUFJLE1BQU0sRUFBQztZQUNkLElBQUksR0FBRyxJQUFJLENBQUM7U0FDZjtRQUNELFVBQVUsQ0FBQztZQUNILEtBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxjQUFjLENBQUMsTUFBTSxDQUFDLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQztZQUM3RCxLQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsY0FBYyxDQUFDLE1BQU0sQ0FBQyxDQUFDLGNBQWMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFDO1lBQ3BGLEtBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxjQUFjLENBQUMsTUFBTSxDQUFDLENBQUMsY0FBYyxDQUFDLE1BQU0sQ0FBQyxDQUFDLE1BQU0sR0FBRyxLQUFLLENBQUM7WUFDckYsSUFBSSxNQUFNLEdBQUcsS0FBSSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLGNBQWMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxjQUFjLENBQUMsTUFBTSxDQUFDLENBQUMsY0FBYyxDQUFDLFFBQVEsQ0FBQyxDQUFDO1lBQzVHLE1BQU0sQ0FBQyxjQUFjLENBQUMsT0FBTyxDQUFDLENBQUMsTUFBTSxHQUFHLE1BQU0sQ0FBQyxjQUFjLENBQUMsT0FBTyxDQUFDLENBQUMsTUFBTSxHQUFHLE1BQU0sQ0FBQyxjQUFjLENBQUMsT0FBTyxDQUFDLENBQUMsTUFBTSxHQUFFLEtBQUssQ0FBQztZQUM3SCxJQUFHLEVBQUUsQ0FBQyxFQUFFLENBQUMsVUFBVSxDQUFDLE9BQU8sQ0FBQyxNQUFNLElBQUksQ0FBQztnQkFBQyxNQUFNLENBQUMsY0FBYyxDQUFDLE9BQU8sQ0FBQyxDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUM7aUJBQ2hGLElBQUcsRUFBRSxDQUFDLEVBQUUsQ0FBQyxVQUFVLENBQUMsT0FBTyxDQUFDLE1BQU0sSUFBSSxDQUFDO2dCQUFFLE1BQU0sQ0FBQyxjQUFjLENBQUMsT0FBTyxDQUFDLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQztpQkFDdEYsSUFBRyxFQUFFLENBQUMsRUFBRSxDQUFDLFVBQVUsQ0FBQyxPQUFPLENBQUMsTUFBTSxJQUFJLENBQUM7Z0JBQUUsTUFBTSxDQUFDLGNBQWMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFDO1lBQzNGLElBQUcsSUFBSSxFQUFDO2dCQUNKLElBQUcsSUFBSSxJQUFJLE1BQU0sRUFBQztvQkFDZCxLQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsY0FBYyxDQUFDLE1BQU0sQ0FBQyxDQUFDLGNBQWMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxNQUFNLEdBQUcsS0FBSyxDQUFDO29CQUNyRixLQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsY0FBYyxDQUFDLE1BQU0sQ0FBQyxDQUFDLGNBQWMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFDO2lCQUN2RjthQUNKO1FBQ1QsQ0FBQyxFQUFFLElBQUksQ0FBQyxDQUFDO1FBRVQsdUJBQXVCO0lBQzNCLENBQUM7SUFFRCxTQUFTO0lBQ1QsaUNBQVcsR0FBWCxVQUFZLElBQUk7UUFBaEIsaUJBb0JDO1FBbkJHLElBQUksS0FBSyxHQUFHLENBQUMsQ0FBQztRQUNkLElBQU0sZ0JBQWdCLEdBQUcsQ0FBQyxDQUFDLENBQUMsWUFBWTtRQUN4QyxJQUFNLGFBQWEsR0FBRztZQUNsQixJQUFNLFFBQVEsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLEtBQUssR0FBRyxnQkFBZ0IsRUFBRSxLQUFJLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1lBQ3hFLE9BQU8sS0FBSyxHQUFHLFFBQVEsRUFBRSxLQUFLLEVBQUUsRUFBRTtnQkFDOUIsSUFBSSxLQUFJLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxFQUFFO29CQUNwQixLQUFJLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDLE9BQU8sRUFBRSxDQUFDO2lCQUNoQzthQUNKO1lBQ0Qsa0JBQWtCO1lBQ2xCLElBQUksS0FBSyxHQUFHLEtBQUksQ0FBQyxNQUFNLENBQUMsTUFBTSxFQUFFO2dCQUM1QixLQUFJLENBQUMsWUFBWSxDQUFDLGFBQWEsRUFBRSxDQUFDLENBQUMsQ0FBQzthQUN2QztpQkFBTTthQUNOO1FBQ0wsQ0FBQyxDQUFDO1FBQ0YsV0FBVztRQUNYLGFBQWEsRUFBRSxDQUFDO1FBQ2hCLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxjQUFjLENBQUMsU0FBUyxDQUFDLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQztRQUNoRSxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsY0FBYyxDQUFDLFNBQVMsQ0FBQyxDQUFDLFlBQVksQ0FBQyxTQUFTLENBQUMsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDNUYsQ0FBQztJQUdELDhCQUFRLEdBQVIsVUFBUyxLQUFLLEVBQUMsSUFBSTtRQUNmLEtBQUksSUFBSSxDQUFDLEdBQUMsQ0FBQyxFQUFFLENBQUMsR0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLE1BQU0sRUFBQyxDQUFDLEVBQUUsRUFBQztZQUNyQyxJQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsY0FBYyxDQUFDLE1BQU0sQ0FBQyxDQUFDLFlBQVksQ0FBQyxNQUFNLENBQUMsQ0FBQyxLQUFLLElBQUksS0FBSyxFQUFDO2dCQUM1RSxJQUFHLElBQUksRUFBQztvQkFDSixJQUFHLElBQUksSUFBSSxDQUFDLEVBQUM7d0JBQ1QsSUFBSSxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLGNBQWMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxZQUFZLENBQUMsTUFBTSxDQUFDLENBQUMsT0FBTyxJQUFJLENBQUMsRUFBQzs0QkFDM0UsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxjQUFjLENBQUMsTUFBTSxDQUFDLENBQUMsWUFBWSxDQUFDLE1BQU0sQ0FBQyxDQUFDLFFBQVEsRUFBRSxDQUFDO3lCQUM1RTtxQkFDSjs7d0JBQ0ssSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxjQUFjLENBQUMsTUFBTSxDQUFDLENBQUMsWUFBWSxDQUFDLE1BQU0sQ0FBQyxDQUFDLFFBQVEsRUFBRSxDQUFDO2lCQUNsRjs7b0JBQ0ksSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxjQUFjLENBQUMsTUFBTSxDQUFDLENBQUMsWUFBWSxDQUFDLE1BQU0sQ0FBQyxDQUFDLFFBQVEsRUFBRSxDQUFDO2FBQ2pGO1NBQ0o7SUFDTCxDQUFDO0lBRUQsNEJBQU0sR0FBTjtRQUNJLEtBQUksSUFBSSxDQUFDLEdBQUMsQ0FBQyxFQUFFLENBQUMsR0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLE1BQU0sRUFBQyxDQUFDLEVBQUUsRUFBQztZQUNyQyxJQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsY0FBYyxDQUFDLE1BQU0sQ0FBQyxDQUFDLE9BQU8sSUFBSSxDQUFDLEVBQUM7Z0JBQ3JELElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsY0FBYyxDQUFDLE1BQU0sQ0FBQyxDQUFDLFlBQVksQ0FBQyxNQUFNLENBQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQzthQUMxRTtTQUNKO0lBQ0wsQ0FBQztJQUVGLE9BQU87SUFDUCxzQ0FBZ0IsR0FBaEI7UUFDSyxJQUFJLENBQUMsZ0JBQWdCLEdBQUc7WUFDcEIsSUFBRyxJQUFJLENBQUMsS0FBSztnQkFBRSxPQUFPO1lBQ3RCLElBQUcsSUFBSSxDQUFDLFVBQVUsSUFBSSxDQUFDLEVBQUM7Z0JBQ3BCLElBQUksQ0FBQyxlQUFlLEVBQUUsQ0FBQztnQkFDdkIsSUFBSSxRQUFRLEdBQUcsRUFBRSxDQUFDLEVBQUUsQ0FBQyxRQUFRLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQztnQkFDN0QsdUJBQWEsQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLFVBQVUsRUFBQyxFQUFFLEVBQUMsT0FBTyxFQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQTtnQkFDdEUsK0NBQStDO2dCQUMvQyxJQUFHLENBQUMsSUFBSSxDQUFDLEtBQUs7b0JBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsQ0FBQzthQUN6QztpQkFDRztnQkFDQSxJQUFJLENBQUMsVUFBVSxJQUFJLENBQUMsQ0FBQztnQkFDckIsSUFBSSxDQUFDLFVBQVUsSUFBSSxDQUFDLENBQUM7Z0JBQ3JCLElBQUksUUFBUSxHQUFHLEVBQUUsQ0FBQyxFQUFFLENBQUMsUUFBUSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUM7Z0JBQzdELHVCQUFhLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxVQUFVLEVBQUMsRUFBRSxFQUFDLE9BQU8sRUFBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUE7Z0JBQ3RFLCtDQUErQzthQUNsRDtRQUNMLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDYixJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDLENBQUMsQ0FBQztJQUM1QyxDQUFDO0lBQ0QsUUFBUTtJQUNSLHFDQUFlLEdBQWY7UUFDSSxJQUFHLElBQUksQ0FBQyxnQkFBZ0IsRUFBQztZQUNyQixJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDO1NBQzFDO0lBQ0wsQ0FBQztJQUVELFFBQVE7SUFDUixpQ0FBVyxHQUFYO1FBQ0ksSUFBRyxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxjQUFjLENBQUMsS0FBSyxDQUFDLENBQUMsTUFBTSxJQUFJLElBQUksSUFBSSxJQUFJLENBQUMsTUFBTSxJQUFJLElBQUk7ZUFDNUUsSUFBSSxDQUFDLFNBQVMsQ0FBQyxNQUFNLElBQUcsSUFBSSxJQUFJLElBQUksQ0FBQyxVQUFVLElBQUksQ0FBQyxFQUFDO1lBQ3BELE9BQU87U0FDVjtRQUNBLElBQUksU0FBUyxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLGNBQWMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxjQUFjLENBQUMsU0FBUyxDQUFDLENBQUM7UUFDckYsSUFBRyxTQUFTLENBQUMsWUFBWSxDQUFDLFlBQVksQ0FBQyxDQUFDLE1BQU0sRUFBQztZQUMzQyxTQUFTLENBQUMsWUFBWSxDQUFDLFlBQVksQ0FBQyxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsQ0FBQztZQUNyRCxJQUFHLEVBQUUsQ0FBQyxFQUFFLENBQUMsVUFBVSxDQUFDLE9BQU8sQ0FBQyxZQUFZLEdBQUcsQ0FBQyxFQUFDO2dCQUN6QyxJQUFHLEVBQUUsQ0FBQyxFQUFFLENBQUMsVUFBVSxDQUFDLE9BQU8sQ0FBQyxJQUFJLEdBQUcsSUFBSSxFQUFDO29CQUNwQyx5QkFBVyxDQUFDLEdBQUcsQ0FBQyxTQUFTLENBQUMsYUFBYSxDQUFDLENBQUM7b0JBQ3pDLFNBQVMsQ0FBQyxZQUFZLENBQUMsWUFBWSxDQUFDLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDO29CQUNwRCxPQUFPO2lCQUNWO2dCQUNELElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxjQUFjLENBQUMsWUFBWSxDQUFDLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQztnQkFDbkUsSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxZQUFZLENBQUMsY0FBYyxDQUFDLENBQUMsV0FBVyxDQUFDLFFBQVEsQ0FBQyxDQUFDO2FBQ3JGO2lCQUNHO2dCQUNBLElBQUcsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxjQUFjLENBQUMsS0FBSyxDQUFDLENBQUMsTUFBTSxJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssRUFBQztvQkFDN0QsSUFBTSxTQUFTLEdBQUcsSUFBSSxDQUFDLEdBQUcsRUFBRSxDQUFDO29CQUM3QixJQUFJLENBQUMsVUFBVSxDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUM7b0JBRTlCLElBQUksQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDO29CQUNsQixJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxjQUFjLENBQUMsS0FBSyxDQUFDLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQztvQkFDckQsSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsY0FBYyxDQUFDLEtBQUssQ0FBQyxDQUFDLGNBQWMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFDO29CQUUzRSxFQUFFLENBQUMsRUFBRSxDQUFDLFVBQVUsQ0FBQyxPQUFPLENBQUMsWUFBWSxJQUFJLENBQUMsQ0FBQztvQkFDM0MsSUFBRyxFQUFFLENBQUMsRUFBRSxDQUFDLFVBQVUsQ0FBQyxPQUFPLENBQUMsWUFBWSxHQUFHLENBQUM7d0JBQ3hDLEVBQUUsQ0FBQyxFQUFFLENBQUMsVUFBVSxDQUFDLE9BQU8sQ0FBQyxZQUFZLEdBQUcsQ0FBQyxDQUFDO29CQUM5QyxJQUFJLENBQUMsUUFBUSxDQUFDLE1BQU0sR0FBRyxFQUFFLENBQUMsRUFBRSxDQUFDLFVBQVUsQ0FBQyxPQUFPLENBQUMsWUFBWSxDQUFDLFFBQVEsRUFBRSxDQUFDO29CQUN4RSxJQUFJLFFBQVEsR0FBRyxFQUFFLENBQUMsRUFBRSxDQUFDLGNBQWMsQ0FBQyxVQUFVLENBQUMsTUFBTSxDQUFDLENBQUM7b0JBQ3ZELFFBQVEsQ0FBQyxZQUFZLEdBQUcsRUFBRSxDQUFDLEVBQUUsQ0FBQyxVQUFVLENBQUMsT0FBTyxDQUFDLFlBQVksQ0FBQztvQkFDOUQsUUFBUSxDQUFDLFNBQVMsR0FBRyxTQUFTLENBQUM7b0JBQy9CLEVBQUUsQ0FBQyxFQUFFLENBQUMsY0FBYyxDQUFDLFVBQVUsQ0FBQyxNQUFNLEVBQUMsUUFBUSxDQUFDLENBQUM7b0JBQ2pELEVBQUUsQ0FBQyxFQUFFLENBQUMsUUFBUSxDQUFDLFdBQVcsQ0FBQyxJQUFJLEVBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxVQUFVLENBQUMsT0FBTyxDQUFDLFlBQVksRUFBQyxVQUFDLElBQUk7b0JBQzNFLENBQUMsQ0FBQyxDQUFBO29CQUNGLElBQUksSUFBSSxHQUFHO3dCQUNQLEVBQUUsRUFBQyxNQUFNO3dCQUNULEdBQUcsRUFBQyxDQUFDLENBQUM7cUJBQ1QsQ0FBQTtvQkFDRCxFQUFFLENBQUMsRUFBRSxDQUFDLFFBQVEsQ0FBQyxZQUFZLENBQUMsZUFBZSxFQUFDLElBQUksQ0FBQyxDQUFDO2lCQUNyRDs7b0JBQ0kseUJBQVcsQ0FBQyxHQUFHLENBQUMsU0FBUyxDQUFDLGFBQWEsQ0FBQyxDQUFDO2FBQ2pEO1NBQ0o7SUFHTCxDQUFDO0lBRUQsUUFBUTtJQUNSLDZCQUFPLEdBQVA7UUFDSSxJQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLGNBQWMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxNQUFNLEVBQUM7WUFDN0MsSUFBSSxDQUFDLFVBQVUsQ0FBQyxNQUFNLEdBQUcsS0FBSyxDQUFDO1lBQy9CLElBQUksU0FBUyxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLGNBQWMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxjQUFjLENBQUMsU0FBUyxDQUFDLENBQUM7WUFDcEYsU0FBUyxDQUFDLFlBQVksQ0FBQyxZQUFZLENBQUMsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUM7WUFDcEQsSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsY0FBYyxDQUFDLEtBQUssQ0FBQyxDQUFDLE1BQU0sR0FBRyxLQUFLLENBQUM7WUFDdEQsSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsY0FBYyxDQUFDLEtBQUssQ0FBQyxDQUFDLGNBQWMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxNQUFNLEdBQUcsS0FBSyxDQUFDO1lBQzVFLElBQUksQ0FBQyxLQUFLLEdBQUcsS0FBSyxDQUFDO1lBQ25CLDJCQUEyQjtTQUM5QjtJQUNMLENBQUM7SUFFRCxzQ0FBZ0IsR0FBaEIsVUFBaUIsSUFBSTtRQUFyQixpQkFxREM7UUFwREcsSUFBSSxDQUFDLEtBQUssR0FBRyxLQUFLLENBQUM7UUFDbkIsSUFBTSxTQUFTLEdBQUcsSUFBSSxDQUFDLEdBQUcsRUFBRSxDQUFDO1FBQzdCLG9DQUFvQztRQUNwQyxJQUFJLFNBQVMsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxjQUFjLENBQUMsUUFBUSxDQUFDLENBQUMsY0FBYyxDQUFDLFNBQVMsQ0FBQyxDQUFDO1FBQ3BGLElBQUksU0FBUyxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLGNBQWMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxjQUFjLENBQUMsWUFBWSxDQUFDLENBQUM7UUFDdkYsSUFBSSxRQUFRLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsY0FBYyxDQUFDLFFBQVEsQ0FBQyxDQUFDLGNBQWMsQ0FBQyxVQUFVLENBQUMsQ0FBQztRQUNwRixJQUFHLElBQUksSUFBSSxjQUFjO1lBQUUsU0FBUyxDQUFDLFlBQVksQ0FBQyxZQUFZLENBQUMsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUM7YUFDMUUsSUFBRyxJQUFJLElBQUksY0FBYztZQUFFLFNBQVMsQ0FBQyxZQUFZLENBQUMsWUFBWSxDQUFDLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDO2FBQy9FLElBQUcsSUFBSSxJQUFJLGFBQWE7WUFBRSxRQUFRLENBQUMsWUFBWSxDQUFDLFlBQVksQ0FBQyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUNsRixJQUFHLElBQUksSUFBSSxjQUFjLEVBQUM7WUFDdEIsRUFBRSxDQUFDLEVBQUUsQ0FBQyxVQUFVLENBQUMsT0FBTyxDQUFDLFlBQVksSUFBSSxDQUFDLENBQUM7WUFDM0MsSUFBSSxRQUFRLEdBQUcsRUFBRSxDQUFDLEVBQUUsQ0FBQyxjQUFjLENBQUMsVUFBVSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1lBQ3ZELFFBQVEsQ0FBQyxZQUFZLEdBQUcsRUFBRSxDQUFDLEVBQUUsQ0FBQyxVQUFVLENBQUMsT0FBTyxDQUFDLFlBQVksQ0FBQztZQUM5RCxRQUFRLENBQUMsU0FBUyxHQUFHLFNBQVMsQ0FBQztZQUMvQixFQUFFLENBQUMsRUFBRSxDQUFDLGNBQWMsQ0FBQyxVQUFVLENBQUMsTUFBTSxFQUFDLFFBQVEsQ0FBQyxDQUFDO1lBQ2pELElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsWUFBWSxDQUFDLGNBQWMsQ0FBQyxDQUFDLFlBQVksRUFBRSxDQUFDO1lBQzNFLFVBQVUsQ0FBQztnQkFDUCxLQUFJLENBQUMsUUFBUSxDQUFDLE1BQU0sR0FBRyxFQUFFLENBQUMsRUFBRSxDQUFDLFVBQVUsQ0FBQyxPQUFPLENBQUMsWUFBWSxDQUFDLFFBQVEsRUFBRSxDQUFDO2dCQUN4RSx5QkFBVyxDQUFDLEdBQUcsQ0FBQyxTQUFTLENBQUMsWUFBWSxDQUFDLENBQUM7WUFDNUMsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxDQUFDO1NBR1g7YUFDSSxJQUFHLElBQUksSUFBSSxhQUFhLEVBQUM7WUFDMUIsRUFBRSxDQUFDLEVBQUUsQ0FBQyxVQUFVLENBQUMsT0FBTyxDQUFDLFdBQVcsSUFBSSxDQUFDLENBQUM7WUFDMUMsSUFBSSxRQUFRLEdBQUcsRUFBRSxDQUFDLEVBQUUsQ0FBQyxjQUFjLENBQUMsVUFBVSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1lBQ3ZELFFBQVEsQ0FBQyxXQUFXLEdBQUcsRUFBRSxDQUFDLEVBQUUsQ0FBQyxVQUFVLENBQUMsT0FBTyxDQUFDLFdBQVcsQ0FBQztZQUM1RCxRQUFRLENBQUMsU0FBUyxHQUFHLFNBQVMsQ0FBQztZQUMvQixFQUFFLENBQUMsRUFBRSxDQUFDLGNBQWMsQ0FBQyxVQUFVLENBQUMsTUFBTSxFQUFDLFFBQVEsQ0FBQyxDQUFDO1lBQ2pELElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsWUFBWSxDQUFDLGNBQWMsQ0FBQyxDQUFDLFlBQVksRUFBRSxDQUFDO1lBQzNFLFVBQVUsQ0FBQztnQkFDUCx5QkFBVyxDQUFDLEdBQUcsQ0FBQyxTQUFTLENBQUMsVUFBVSxDQUFDLENBQUM7Z0JBQ3RDLEtBQUksQ0FBQyxVQUFVLENBQUMsTUFBTSxHQUFHLEVBQUUsQ0FBQyxFQUFFLENBQUMsVUFBVSxDQUFDLE9BQU8sQ0FBQyxXQUFXLENBQUMsUUFBUSxFQUFFLENBQUM7WUFDN0UsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxDQUFDO1NBRVg7YUFDSSxJQUFHLElBQUksSUFBSSxjQUFjLEVBQUM7WUFDM0IsRUFBRSxDQUFDLEVBQUUsQ0FBQyxVQUFVLENBQUMsT0FBTyxDQUFDLFlBQVksSUFBSSxDQUFDLENBQUM7WUFDM0MsSUFBSSxRQUFRLEdBQUcsRUFBRSxDQUFDLEVBQUUsQ0FBQyxjQUFjLENBQUMsVUFBVSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1lBQ3ZELFFBQVEsQ0FBQyxZQUFZLEdBQUcsRUFBRSxDQUFDLEVBQUUsQ0FBQyxVQUFVLENBQUMsT0FBTyxDQUFDLFlBQVksQ0FBQztZQUM5RCxRQUFRLENBQUMsU0FBUyxHQUFHLFNBQVMsQ0FBQztZQUMvQixFQUFFLENBQUMsRUFBRSxDQUFDLGNBQWMsQ0FBQyxVQUFVLENBQUMsTUFBTSxFQUFDLFFBQVEsQ0FBQyxDQUFDO1lBQ2pELElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsWUFBWSxDQUFDLGNBQWMsQ0FBQyxDQUFDLFlBQVksRUFBRSxDQUFDO1lBQzNFLFVBQVUsQ0FBQztnQkFDUCxLQUFJLENBQUMsV0FBVyxDQUFDLE1BQU0sR0FBRyxFQUFFLENBQUMsRUFBRSxDQUFDLFVBQVUsQ0FBQyxPQUFPLENBQUMsWUFBWSxDQUFDLFFBQVEsRUFBRSxDQUFDO2dCQUMzRSx5QkFBVyxDQUFDLEdBQUcsQ0FBQyxTQUFTLENBQUMsV0FBVyxDQUFDLENBQUM7WUFDM0MsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxDQUFDO1NBRVg7SUFJTCxDQUFDO0lBRUQsUUFBUTtJQUNSLCtCQUFTLEdBQVQ7UUFDSSxJQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLGNBQWMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxNQUFNLElBQUksSUFBSSxJQUFJLElBQUksQ0FBQyxNQUFNLElBQUksSUFBSTtlQUM1RSxJQUFJLENBQUMsU0FBUyxDQUFDLE1BQU0sSUFBRyxJQUFJLElBQUksSUFBSSxDQUFDLFVBQVUsSUFBSSxDQUFDLEVBQUM7WUFDcEQsT0FBTztTQUNWO1FBQ0QsSUFBSSxTQUFTLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsY0FBYyxDQUFDLFFBQVEsQ0FBQyxDQUFDLGNBQWMsQ0FBQyxZQUFZLENBQUMsQ0FBQztRQUN2RixJQUFHLFNBQVMsQ0FBQyxZQUFZLENBQUMsWUFBWSxDQUFDLENBQUMsTUFBTSxFQUFDO1lBQzNDLFNBQVMsQ0FBQyxZQUFZLENBQUMsWUFBWSxDQUFDLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxDQUFDO1lBQ3JELElBQUcsRUFBRSxDQUFDLEVBQUUsQ0FBQyxVQUFVLENBQUMsT0FBTyxDQUFDLFlBQVksR0FBRyxDQUFDLEVBQUM7Z0JBQ3pDLElBQUcsRUFBRSxDQUFDLEVBQUUsQ0FBQyxVQUFVLENBQUMsT0FBTyxDQUFDLElBQUksR0FBRyxJQUFJLEVBQUM7b0JBQ3BDLHlCQUFXLENBQUMsR0FBRyxDQUFDLFNBQVMsQ0FBQyxhQUFhLENBQUMsQ0FBQztvQkFDekMsU0FBUyxDQUFDLFlBQVksQ0FBQyxZQUFZLENBQUMsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUM7b0JBQ3BELE9BQU87aUJBQ1Y7Z0JBQ0MsSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLGNBQWMsQ0FBQyxZQUFZLENBQUMsQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFDO2dCQUNyRSxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLFlBQVksQ0FBQyxjQUFjLENBQUMsQ0FBQyxXQUFXLENBQUMsUUFBUSxDQUFDLENBQUM7YUFDckY7aUJBQ0c7Z0JBQ0EsSUFBRyxDQUFDLElBQUksQ0FBQyxNQUFNLEVBQUM7b0JBQ1osSUFBTSxTQUFTLEdBQUcsSUFBSSxDQUFDLEdBQUcsRUFBRSxDQUFDO29CQUM3QixJQUFJLENBQUMsVUFBVSxDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUM7b0JBRTlCLElBQUksQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFDO29CQUNuQixFQUFFLENBQUMsRUFBRSxDQUFDLFVBQVUsQ0FBQyxPQUFPLENBQUMsWUFBWSxJQUFJLENBQUMsQ0FBQztvQkFDM0MsSUFBRyxFQUFFLENBQUMsRUFBRSxDQUFDLFVBQVUsQ0FBQyxPQUFPLENBQUMsWUFBWSxHQUFHLENBQUM7d0JBQ3hDLEVBQUUsQ0FBQyxFQUFFLENBQUMsVUFBVSxDQUFDLE9BQU8sQ0FBQyxZQUFZLEdBQUcsQ0FBQyxDQUFDO29CQUM5QyxJQUFJLENBQUMsV0FBVyxDQUFDLE1BQU0sR0FBRyxFQUFFLENBQUMsRUFBRSxDQUFDLFVBQVUsQ0FBQyxPQUFPLENBQUMsWUFBWSxDQUFDLFFBQVEsRUFBRSxDQUFDO29CQUMzRSxJQUFJLFFBQVEsR0FBRyxFQUFFLENBQUMsRUFBRSxDQUFDLGNBQWMsQ0FBQyxVQUFVLENBQUMsTUFBTSxDQUFDLENBQUM7b0JBQ3ZELE9BQU8sQ0FBQyxHQUFHLENBQUMsU0FBUyxFQUFDLFFBQVEsQ0FBQyxDQUFDO29CQUNoQyxRQUFRLENBQUMsWUFBWSxHQUFHLEVBQUUsQ0FBQyxFQUFFLENBQUMsVUFBVSxDQUFDLE9BQU8sQ0FBQyxZQUFZLENBQUM7b0JBQzlELFFBQVEsQ0FBQyxTQUFTLEdBQUcsU0FBUyxDQUFDO29CQUMvQixFQUFFLENBQUMsRUFBRSxDQUFDLGNBQWMsQ0FBQyxVQUFVLENBQUMsTUFBTSxFQUFDLFFBQVEsQ0FBQyxDQUFDO29CQUNqRCxFQUFFLENBQUMsRUFBRSxDQUFDLFFBQVEsQ0FBQyxXQUFXLENBQUMsSUFBSSxFQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsVUFBVSxDQUFDLE9BQU8sQ0FBQyxZQUFZLEVBQUMsVUFBQyxJQUFJO29CQUMzRSxDQUFDLENBQUMsQ0FBQTtvQkFDRixJQUFJLElBQUksR0FBRzt3QkFDUCxFQUFFLEVBQUMsTUFBTTt3QkFDVCxHQUFHLEVBQUMsQ0FBQyxDQUFDO3FCQUNULENBQUE7b0JBQ0QsRUFBRSxDQUFDLEVBQUUsQ0FBQyxRQUFRLENBQUMsWUFBWSxDQUFDLGVBQWUsRUFBQyxJQUFJLENBQUMsQ0FBQztpQkFDckQ7O29CQUNJLHlCQUFXLENBQUMsR0FBRyxDQUFDLFNBQVMsQ0FBQyxhQUFhLENBQUMsQ0FBQzthQUNqRDtTQUVKO0lBRUwsQ0FBQztJQUVELDhCQUFRLEdBQVI7UUFDSSxJQUFHLEVBQUUsQ0FBQyxFQUFFLENBQUMsVUFBVSxDQUFDLE9BQU8sQ0FBQyxJQUFJLEdBQUcsSUFBSSxFQUFDO1lBQ3BDLHlCQUFXLENBQUMsR0FBRyxDQUFDLFNBQVMsQ0FBQyxhQUFhLENBQUMsQ0FBQztZQUN6QyxPQUFPO1NBQ1Y7UUFDRCxFQUFFLENBQUMsRUFBRSxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsSUFBSSxFQUFDLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFDLGFBQWEsQ0FBQyxDQUFDLENBQUM7SUFDaEYsQ0FBQztJQUVELCtCQUFTLEdBQVQ7UUFDSSxJQUFHLEVBQUUsQ0FBQyxFQUFFLENBQUMsVUFBVSxDQUFDLE9BQU8sQ0FBQyxJQUFJLEdBQUcsSUFBSSxFQUFDO1lBQ3BDLHlCQUFXLENBQUMsR0FBRyxDQUFDLFNBQVMsQ0FBQyxhQUFhLENBQUMsQ0FBQztZQUN6QyxPQUFPO1NBQ1Y7UUFDRCxFQUFFLENBQUMsRUFBRSxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFDLGNBQWMsQ0FBQyxDQUFDLENBQUM7SUFDbEYsQ0FBQztJQUVELCtCQUFTLEdBQVQ7UUFDSSxJQUFHLEVBQUUsQ0FBQyxFQUFFLENBQUMsVUFBVSxDQUFDLE9BQU8sQ0FBQyxJQUFJLEdBQUcsSUFBSSxFQUFDO1lBQ3BDLHlCQUFXLENBQUMsR0FBRyxDQUFDLFNBQVMsQ0FBQyxhQUFhLENBQUMsQ0FBQztZQUN6QyxPQUFPO1NBQ1Y7UUFDRCxFQUFFLENBQUMsRUFBRSxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsSUFBSSxFQUFDLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFDLGNBQWMsQ0FBQyxDQUFDLENBQUM7SUFDakYsQ0FBQztJQUVELGVBQWU7SUFDZiw4QkFBUSxHQUFSO1FBQUEsaUJBbUlDO1FBbElHLElBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsY0FBYyxDQUFDLEtBQUssQ0FBQyxDQUFDLE1BQU0sSUFBSSxJQUFJLElBQUksSUFBSSxDQUFDLE1BQU0sSUFBSSxJQUFJO2VBQzVFLElBQUksQ0FBQyxTQUFTLENBQUMsTUFBTSxJQUFHLElBQUksSUFBSSxJQUFJLENBQUMsVUFBVSxJQUFJLENBQUMsRUFBQztZQUNwRCxPQUFPO1NBQ1Y7UUFDRCxJQUFJLFFBQVEsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxjQUFjLENBQUMsUUFBUSxDQUFDLENBQUMsY0FBYyxDQUFDLFVBQVUsQ0FBQyxDQUFDO1FBQ3BGLElBQUcsUUFBUSxDQUFDLFlBQVksQ0FBQyxZQUFZLENBQUMsQ0FBQyxNQUFNLEVBQUM7WUFDMUMsUUFBUSxDQUFDLFlBQVksQ0FBQyxZQUFZLENBQUMsQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLENBQUM7WUFDcEQsSUFBRyxFQUFFLENBQUMsRUFBRSxDQUFDLFVBQVUsQ0FBQyxPQUFPLENBQUMsV0FBVyxHQUFHLENBQUMsRUFBQztnQkFDeEMsSUFBRyxFQUFFLENBQUMsRUFBRSxDQUFDLFVBQVUsQ0FBQyxPQUFPLENBQUMsSUFBSSxHQUFHLElBQUksRUFBQztvQkFDcEMseUJBQVcsQ0FBQyxHQUFHLENBQUMsU0FBUyxDQUFDLGFBQWEsQ0FBQyxDQUFDO29CQUN6QyxRQUFRLENBQUMsWUFBWSxDQUFDLFlBQVksQ0FBQyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQztvQkFDbkQsT0FBTztpQkFDVjtnQkFDRCxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsY0FBYyxDQUFDLFlBQVksQ0FBQyxDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUM7Z0JBQ25FLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsWUFBWSxDQUFDLGNBQWMsQ0FBQyxDQUFDLFdBQVcsQ0FBQyxPQUFPLENBQUMsQ0FBQztnQkFDakYsZ0RBQWdEO2FBQ25EO2lCQUNHO2dCQUNBLElBQU0sU0FBUyxHQUFHLElBQUksQ0FBQyxHQUFHLEVBQUUsQ0FBQztnQkFDN0IsSUFBSSxDQUFDLFNBQVMsQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFDO2dCQUM3QixVQUFVLENBQUM7b0JBQ1AsS0FBSSxDQUFDLFNBQVMsQ0FBQyxNQUFNLEdBQUcsS0FBSyxDQUFDO29CQUM5QixRQUFRLENBQUMsWUFBWSxDQUFDLFlBQVksQ0FBQyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQztnQkFDdkQsQ0FBQyxFQUFFLElBQUksQ0FBQyxDQUFDO2dCQUVULEVBQUUsQ0FBQyxFQUFFLENBQUMsVUFBVSxDQUFDLE9BQU8sQ0FBQyxXQUFXLElBQUksQ0FBQyxDQUFDO2dCQUMxQyxJQUFHLEVBQUUsQ0FBQyxFQUFFLENBQUMsVUFBVSxDQUFDLE9BQU8sQ0FBQyxXQUFXLEdBQUcsQ0FBQztvQkFDdkMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxVQUFVLENBQUMsT0FBTyxDQUFDLFdBQVcsR0FBRyxDQUFDLENBQUM7Z0JBQzdDLElBQUksQ0FBQyxVQUFVLENBQUMsTUFBTSxHQUFHLEVBQUUsQ0FBQyxFQUFFLENBQUMsVUFBVSxDQUFDLE9BQU8sQ0FBQyxXQUFXLENBQUMsUUFBUSxFQUFFLENBQUM7Z0JBQ3pFLElBQUksUUFBUSxHQUFHLEVBQUUsQ0FBQyxFQUFFLENBQUMsY0FBYyxDQUFDLFVBQVUsQ0FBQyxNQUFNLENBQUMsQ0FBQztnQkFDdkQsUUFBUSxDQUFDLFdBQVcsR0FBRyxFQUFFLENBQUMsRUFBRSxDQUFDLFVBQVUsQ0FBQyxPQUFPLENBQUMsV0FBVyxDQUFDO2dCQUM1RCxRQUFRLENBQUMsU0FBUyxHQUFHLFNBQVMsQ0FBQztnQkFDL0IsRUFBRSxDQUFDLEVBQUUsQ0FBQyxjQUFjLENBQUMsVUFBVSxDQUFDLE1BQU0sRUFBQyxRQUFRLENBQUMsQ0FBQztnQkFDakQsRUFBRSxDQUFDLEVBQUUsQ0FBQyxRQUFRLENBQUMsV0FBVyxDQUFDLElBQUksRUFBQyxFQUFFLENBQUMsRUFBRSxDQUFDLFVBQVUsQ0FBQyxPQUFPLENBQUMsV0FBVyxFQUFDLFVBQUMsSUFBSTtnQkFDMUUsQ0FBQyxDQUFDLENBQUE7Z0JBQ0YsSUFBSSxJQUFJLEdBQUc7b0JBQ0gsRUFBRSxFQUFDLE1BQU07b0JBQ1QsR0FBRyxFQUFDLENBQUMsQ0FBQztpQkFDVCxDQUFBO2dCQUNMLEVBQUUsQ0FBQyxFQUFFLENBQUMsUUFBUSxDQUFDLFlBQVksQ0FBQyxlQUFlLEVBQUMsSUFBSSxDQUFDLENBQUM7Z0JBQ2xELElBQUksWUFBVSxHQUFHLEVBQUUsQ0FBQztnQkFDcEIscUNBQXFDO2dCQUNyQyxLQUFJLElBQUksQ0FBQyxHQUFFLENBQUMsRUFBRSxDQUFDLEdBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxNQUFNLEVBQUUsQ0FBQyxFQUFFLEVBQUM7b0JBQ3BDLGlFQUFpRTtvQkFDakUsSUFBRyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLFlBQVksQ0FBQyxPQUFPLENBQUMsQ0FBQyxJQUFJLElBQUksQ0FBQyxFQUFDO3dCQUM5QyxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7cUJBQ3hDO3lCQUNJLElBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxZQUFZLENBQUMsT0FBTyxDQUFDLENBQUMsSUFBSSxJQUFJLENBQUMsRUFBQzt3QkFDbkQsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO3FCQUN6Qzt5QkFDSSxJQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsWUFBWSxDQUFDLE9BQU8sQ0FBQyxDQUFDLElBQUksSUFBSSxFQUFFLEVBQUM7d0JBQ3BELElBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxZQUFZLENBQUMsT0FBTyxDQUFDLENBQUMsVUFBVSxDQUFDLElBQUksRUFBQzs0QkFDcEQsWUFBVSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLFlBQVksQ0FBQyxPQUFPLENBQUMsQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLENBQUM7eUJBQ3pFOzs0QkFDSSxZQUFVLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztxQkFDeEM7eUJBQ0c7d0JBQ0EsWUFBVSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7cUJBQ25DO2lCQUNKO2dCQUNELElBQUcsWUFBVSxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUM7b0JBQ3JCLFlBQVUsR0FBRyxFQUFFLENBQUMsRUFBRSxDQUFDLFFBQVEsQ0FBQyxZQUFZLENBQUMsWUFBVSxDQUFDLENBQUM7b0JBQ3JELFlBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxZQUFZLENBQUMsT0FBTyxDQUFDLENBQUMsU0FBUyxFQUFFLENBQUM7b0JBQ2hELElBQUksSUFBSSxHQUFHLENBQUMsQ0FBQztvQkFDYixJQUFHLFlBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxZQUFZLENBQUMsT0FBTyxDQUFDLENBQUMsSUFBSSxJQUFJLENBQUMsSUFBSSxZQUFVLENBQUMsQ0FBQyxDQUFDLENBQUMsWUFBWSxDQUFDLE9BQU8sQ0FBQyxDQUFDLElBQUksSUFBSSxDQUFDLEVBQUM7d0JBQzlGLElBQUksR0FBRyxHQUFHLENBQUM7cUJBQ2Q7b0JBQ0QsSUFBRyxJQUFJLEdBQUcsQ0FBQyxFQUFDO3dCQUNSLFVBQVUsQ0FBQzs0QkFDUCxZQUFVLENBQUMsQ0FBQyxDQUFDLENBQUMsWUFBWSxDQUFDLE9BQU8sQ0FBQyxDQUFDLFNBQVMsRUFBRSxDQUFDO3dCQUNwRCxDQUFDLEVBQUUsSUFBSSxDQUFDLENBQUM7d0JBQ1QsT0FBTztxQkFDVjt5QkFDRzt3QkFDQSxZQUFVLENBQUMsQ0FBQyxDQUFDLENBQUMsWUFBWSxDQUFDLE9BQU8sQ0FBQyxDQUFDLFNBQVMsRUFBRSxDQUFDO3dCQUNoRCxPQUFPO3FCQUNWO2lCQUNKO3FCQUNJLElBQUcsWUFBVSxDQUFDLE1BQU0sSUFBSSxDQUFDLEVBQUM7b0JBQzNCLFlBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxZQUFZLENBQUMsT0FBTyxDQUFDLENBQUMsU0FBUyxFQUFFLENBQUM7b0JBQ2hELElBQUksSUFBSSxHQUFHLENBQUMsQ0FBQztvQkFDYixJQUFHLFlBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxZQUFZLENBQUMsT0FBTyxDQUFDLENBQUMsSUFBSSxJQUFJLENBQUMsSUFBSSxZQUFVLENBQUMsQ0FBQyxDQUFDLENBQUMsWUFBWSxDQUFDLE9BQU8sQ0FBQyxDQUFDLElBQUksSUFBSSxDQUFDLEVBQUM7d0JBQzlGLElBQUksR0FBRyxHQUFHLENBQUM7cUJBQ2Q7b0JBQ0QsVUFBVSxDQUFDO3dCQUNQLElBQUcsS0FBSSxDQUFDLFdBQVcsQ0FBQyxNQUFNLElBQUksQ0FBQyxJQUFJLEtBQUksQ0FBQyxVQUFVLENBQUMsTUFBTSxJQUFJLENBQUMsRUFBQzs0QkFDM0QsK0JBQStCO3lCQUNsQzs2QkFDRzs0QkFDQSxJQUFHLEtBQUksQ0FBQyxVQUFVLENBQUMsTUFBTSxJQUFJLENBQUMsRUFBQztnQ0FDM0IsbUNBQW1DO2dDQUNuQyxLQUFJLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDLFlBQVksQ0FBQyxPQUFPLENBQUMsQ0FBQyxTQUFTLEVBQUUsQ0FBQztnQ0FDckQsT0FBTzs2QkFDVjtpQ0FDSSxJQUFHLEtBQUksQ0FBQyxXQUFXLENBQUMsTUFBTSxJQUFHLENBQUMsRUFBQztnQ0FDaEMsbUNBQW1DO2dDQUNuQyxLQUFJLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxDQUFDLFlBQVksQ0FBQyxPQUFPLENBQUMsQ0FBQyxTQUFTLEVBQUUsQ0FBQztnQ0FDdEQsT0FBTzs2QkFDVjt5QkFDSjtvQkFDTCxDQUFDLEVBQUUsR0FBRyxHQUFDLElBQUksQ0FBQyxDQUFDO2lCQUNoQjtxQkFDRztvQkFDQSxJQUFJLE9BQUssR0FBRyxDQUFDLENBQUM7b0JBQ2QsSUFBRyxJQUFJLENBQUMsVUFBVSxDQUFDLE1BQU0sSUFBRyxDQUFDLEVBQUM7d0JBQzFCLEtBQUksSUFBSSxDQUFDLEdBQUMsQ0FBQyxFQUFFLENBQUMsR0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLE1BQU0sRUFBRSxDQUFDLEVBQUUsRUFBQzs0QkFDdkMsa0NBQWtDOzRCQUNsQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDLFlBQVksQ0FBQyxPQUFPLENBQUMsQ0FBQyxTQUFTLEVBQUUsQ0FBQzs0QkFDckQsT0FBSyxJQUFJLENBQUMsQ0FBQzs0QkFDWCxJQUFHLE9BQUssSUFBSSxDQUFDLEVBQUM7Z0NBQ1YsTUFBTTs2QkFDVDt5QkFDSjtxQkFDSjtvQkFFRCxVQUFVLENBQUM7d0JBQ0gsSUFBRyxPQUFLLElBQUksQ0FBQyxFQUFDOzRCQUNkLEtBQUksSUFBSSxDQUFDLEdBQUMsQ0FBQyxFQUFFLENBQUMsR0FBQyxLQUFJLENBQUMsV0FBVyxDQUFDLE1BQU0sRUFBRSxDQUFDLEVBQUUsRUFBQztnQ0FDeEMsa0NBQWtDO2dDQUNsQyx5REFBeUQ7Z0NBQ3pELE9BQUssSUFBSSxDQUFDLENBQUM7Z0NBQ1gsSUFBRyxPQUFLLElBQUksQ0FBQyxFQUFDO29DQUNWLE1BQU07aUNBQ1Q7NkJBQ0o7eUJBQ0o7b0JBQ0wsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxDQUFDO2lCQUNYO2FBQ0o7U0FDSjtJQUNMLENBQUM7SUFFRCxRQUFRO0lBQ1IsOEJBQVEsR0FBUjtRQUNJLElBQUcsSUFBSSxDQUFDLEtBQUssRUFBQztZQUNWLElBQUksQ0FBQyxLQUFLLEdBQUcsS0FBSyxDQUFDO1NBQ3RCO2FBQ0c7WUFDQSxJQUFJLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQztTQUNyQjtJQUNMLENBQUM7SUFJRCxZQUFZO0lBQ1osZ0NBQVUsR0FBVjtRQUNJLElBQUksS0FBSyxHQUFHLENBQUMsQ0FBQztRQUNkLElBQUcsSUFBSSxDQUFDLFFBQVEsR0FBRyxFQUFFLEVBQUM7WUFDbEIsS0FBSyxHQUFHLEdBQUcsQ0FBQztTQUNmO2FBQ0ksSUFBRyxJQUFJLENBQUMsUUFBUSxHQUFHLEVBQUUsRUFBQztZQUN2QixLQUFLLEdBQUcsSUFBSSxHQUFHLENBQUMsSUFBSSxDQUFDLFFBQVEsR0FBQyxFQUFFLENBQUMsR0FBQyxJQUFJLENBQUM7U0FDMUM7UUFFRCxJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssR0FBRyxHQUFHLEdBQUcsQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxHQUFHLEtBQUssQ0FBQztRQUVwRCxJQUFHLElBQUksQ0FBQyxRQUFRLElBQUksQ0FBQyxJQUFJLElBQUksQ0FBQyxTQUFTLEdBQUcsRUFBRSxFQUFDO1lBQ3pDLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxHQUFHLENBQUMsQ0FBQztTQUN2QjtRQUVELHVCQUF1QjtRQUN2QixFQUFFLENBQUMsRUFBRSxDQUFDLFVBQVUsQ0FBQyxPQUFPLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDO1FBQ2pELHlCQUF5QjtRQUN6QixnQ0FBZ0M7UUFDaEMsdUJBQXVCO0lBQzNCLENBQUM7SUFFRCxVQUFVO0lBQ1Ysb0NBQWMsR0FBZCxVQUFlLEtBQUssRUFBQyxFQUFFO1FBQ25CLElBQUksUUFBUSxHQUFHLEVBQUUsQ0FBQyxXQUFXLENBQUMsYUFBVyxDQUFDLFNBQVMsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUNuRSxRQUFRLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUM7UUFDNUIsUUFBUSxDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUM7UUFDdkIsSUFBSSxLQUFLLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsS0FBSyxHQUFHLEdBQUcsQ0FBQyxDQUFDO1FBQzFDLElBQUksTUFBTSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLE1BQU0sR0FBRyxHQUFHLENBQUMsQ0FBQztRQUM1QyxJQUFJLElBQUksR0FBRyxFQUFFLENBQUM7UUFFZCxJQUFHLEVBQUUsSUFBSSxDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsRUFBQztZQUNsQixJQUFJLENBQUMsR0FBRyxLQUFLLENBQUMsQ0FBQyxHQUFHLEtBQUssQ0FBQyxNQUFNLENBQUM7WUFDL0IsSUFBSSxDQUFDLEdBQUcsS0FBSyxDQUFDLENBQUMsR0FBRyxLQUFLLENBQUMsS0FBSyxHQUFDLENBQUMsQ0FBQztZQUNoQyxJQUFJLEdBQUcsTUFBTSxHQUFHLEtBQUssR0FBRyxHQUFHLEdBQUcsTUFBTSxDQUFDO1lBQ3JDLElBQUcsRUFBRSxJQUFJLENBQUMsRUFBQztnQkFDUCxJQUFJLEdBQUcsTUFBTSxHQUFHLEtBQUssR0FBRyxHQUFHLEdBQUcsTUFBTSxDQUFDO2dCQUNyQyxDQUFDLEdBQUcsS0FBSyxDQUFDLENBQUMsQ0FBQzthQUNmO1lBQ0QsSUFBRyxLQUFLLENBQUMsT0FBTyxJQUFJLEdBQUcsRUFBQztnQkFDcEIsQ0FBQyxHQUFHLEtBQUssQ0FBQyxDQUFDLENBQUM7YUFDZjtpQkFDSSxJQUFHLEtBQUssQ0FBQyxPQUFPLElBQUksSUFBSSxFQUFDO2dCQUMzQixDQUFDLEdBQUcsS0FBSyxDQUFDLENBQUMsR0FBRyxLQUFLLENBQUMsS0FBSyxHQUFDLENBQUMsR0FBRyxHQUFDLElBQUksQ0FBQyxDQUFDO2FBQ3ZDO2lCQUNJLElBQUcsS0FBSyxDQUFDLE9BQU8sSUFBSSxJQUFJLEVBQUM7Z0JBQzFCLENBQUMsR0FBRyxLQUFLLENBQUMsQ0FBQyxHQUFHLEtBQUssQ0FBQyxLQUFLLEdBQUMsQ0FBQyxHQUFHLEdBQUMsSUFBSSxDQUFDLENBQUM7YUFDeEM7WUFDRCxRQUFRLENBQUMsV0FBVyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztTQUM5QjthQUNJLElBQUcsRUFBRSxJQUFJLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxFQUFDO1lBQ3ZCLElBQUksR0FBRyxPQUFPLEdBQUcsTUFBTSxHQUFHLEdBQUcsR0FBRyxLQUFLLENBQUM7WUFDdEMsSUFBSSxDQUFDLEdBQUcsS0FBSyxDQUFDLENBQUMsR0FBRyxLQUFLLENBQUMsS0FBSyxDQUFDO1lBQzlCLElBQUksQ0FBQyxHQUFHLEtBQUssQ0FBQyxDQUFDLEdBQUcsS0FBSyxDQUFDLE1BQU0sR0FBQyxDQUFDLENBQUM7WUFDakMsSUFBRyxLQUFLLENBQUMsT0FBTyxJQUFJLEdBQUcsRUFBQztnQkFDcEIsQ0FBQyxHQUFHLEtBQUssQ0FBQyxDQUFDLEdBQUcsS0FBSyxDQUFDLEtBQUssR0FBQyxDQUFDLENBQUM7YUFDL0I7aUJBQ0ksSUFBRyxLQUFLLENBQUMsT0FBTyxJQUFJLElBQUksRUFBQztnQkFDM0IsQ0FBQyxHQUFHLEtBQUssQ0FBQyxDQUFDLEdBQUcsS0FBSyxDQUFDLEtBQUssR0FBQyxJQUFJLENBQUM7YUFDakM7aUJBQ0ksSUFBRyxLQUFLLENBQUMsT0FBTyxJQUFJLElBQUksRUFBQztnQkFDMUIsQ0FBQyxHQUFHLEtBQUssQ0FBQyxDQUFDLEdBQUcsS0FBSyxDQUFDLEtBQUssR0FBQyxJQUFJLENBQUM7YUFDbEM7WUFDRCxJQUFHLEVBQUUsSUFBSSxDQUFDLEVBQUM7Z0JBQ1AsSUFBSSxHQUFHLFFBQVEsR0FBRyxNQUFNLEdBQUcsR0FBRyxHQUFHLEtBQUssQ0FBQztnQkFDdkMsQ0FBQyxHQUFHLEtBQUssQ0FBQyxDQUFDLENBQUM7Z0JBQ1osSUFBRyxLQUFLLENBQUMsT0FBTyxJQUFJLEdBQUcsRUFBQztvQkFDcEIsQ0FBQyxHQUFHLEtBQUssQ0FBQyxDQUFDLEdBQUcsS0FBSyxDQUFDLEtBQUssR0FBQyxDQUFDLENBQUM7aUJBQy9CO3FCQUNJLElBQUcsS0FBSyxDQUFDLE9BQU8sSUFBSSxJQUFJLEVBQUM7b0JBQzNCLENBQUMsR0FBRyxLQUFLLENBQUMsQ0FBQyxHQUFHLEtBQUssQ0FBQyxLQUFLLEdBQUMsSUFBSSxDQUFDO2lCQUNqQztxQkFDSSxJQUFHLEtBQUssQ0FBQyxPQUFPLElBQUksSUFBSSxFQUFDO29CQUMxQixDQUFDLEdBQUcsS0FBSyxDQUFDLENBQUMsR0FBRyxLQUFLLENBQUMsS0FBSyxHQUFDLElBQUksQ0FBQztpQkFDbEM7YUFDSjtZQUVELFFBQVEsQ0FBQyxXQUFXLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO1NBQzlCO1FBRUQsSUFBSSxZQUFZLEdBQUksUUFBUSxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUNsRCxJQUFJLEtBQUssR0FBRyxLQUFLLENBQUMsWUFBWSxDQUFDLE9BQU8sQ0FBQyxDQUFDLEtBQUssR0FBRyxDQUFDLENBQUM7UUFFbEQsWUFBWSxDQUFDLFlBQVksQ0FBQyxFQUFFLENBQUMsY0FBYyxDQUFDLENBQUMsV0FBVyxHQUFHLFFBQVEsQ0FBQyxZQUFZLENBQUMsUUFBUSxDQUFDLENBQUMsV0FBVyxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQzlHLFlBQVksQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFDO1FBQzNCLFVBQVUsQ0FBQztZQUNQLEVBQUUsQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDO2lCQUNqQixFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUMsT0FBTyxFQUFFLENBQUMsRUFBQyxDQUFDO2lCQUNuQixJQUFJLENBQUM7Z0JBQ0YsUUFBUSxDQUFDLE9BQU8sRUFBRSxDQUFDO1lBQ3ZCLENBQUMsQ0FBQztpQkFDRCxLQUFLLEVBQUUsQ0FBQztRQUNiLENBQUMsRUFBRSxJQUFJLENBQUMsQ0FBQztJQUNiLENBQUM7SUFFRCxvQ0FBYyxHQUFkO1FBQ0ksU0FBUztRQUNULEtBQUksSUFBSSxDQUFDLEdBQUUsQ0FBQyxFQUFHLENBQUMsR0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLE1BQU0sRUFBRSxDQUFDLEVBQUUsRUFBQztZQUNyQyxJQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxJQUFJLENBQUMsRUFBQztnQkFDMUIsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLEVBQUUsQ0FBQztnQkFDekIsSUFBSSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxDQUFDO2FBQzVCO1NBQ0o7SUFDTCxDQUFDO0lBSUQsNEJBQU0sR0FBTixVQUFRLEVBQUU7SUFFVixDQUFDOztJQTM5REQ7UUFEQyxRQUFRLENBQUMsRUFBQyxJQUFJLEVBQUUsQ0FBQyxFQUFFLENBQUMsTUFBTSxDQUFDLEVBQUUsT0FBTyxFQUFDLE1BQU0sRUFBQyxDQUFDO29EQUNWO0lBR3BDO1FBREMsUUFBUSxDQUFDLEVBQUMsSUFBSSxFQUFFLENBQUMsRUFBRSxDQUFDLE1BQU0sQ0FBQyxFQUFFLE9BQU8sRUFBQyxRQUFRLEVBQUMsQ0FBQzttREFDYjtJQUduQztRQURDLFFBQVEsQ0FBQyxFQUFFLENBQUMsTUFBTSxDQUFDO3VEQUNhO0lBR2pDO1FBREMsUUFBUSxDQUFDLEVBQUMsSUFBSSxFQUFFLENBQUMsRUFBRSxDQUFDLFdBQVcsQ0FBQyxFQUFFLE9BQU8sRUFBQyxNQUFNLEVBQUMsQ0FBQztvREFDVjtJQUl6QztRQURDLFFBQVEsQ0FBQyxFQUFDLElBQUksRUFBRSxDQUFDLEVBQUUsQ0FBQyxNQUFNLENBQUMsRUFBRSxPQUFPLEVBQUMsTUFBTSxFQUFDLENBQUM7b0RBQ1Y7SUFLcEM7UUFEQyxRQUFRLENBQUMsRUFBRSxDQUFDLE1BQU0sQ0FBQzt1REFDYTtJQUdqQztRQURDLFFBQVEsQ0FBQyxFQUFFLENBQUMsTUFBTSxDQUFDO2dEQUNNO0lBRTFCO1FBREMsUUFBUSxDQUFDLEVBQUUsQ0FBQyxNQUFNLENBQUM7bURBQ1M7SUFFN0I7UUFEQyxRQUFRLENBQUMsRUFBRSxDQUFDLE1BQU0sQ0FBQztpREFDTztJQUczQjtRQURDLFFBQVEsQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDOzZDQUNHO0lBR3JCO1FBREMsUUFBUSxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUM7aURBQ087SUFFMUI7UUFEQyxRQUFRLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQztvREFDVTtJQUU3QjtRQURDLFFBQVEsQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDO21EQUNTO0lBRzVCO1FBREMsUUFBUSxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUM7a0RBQ1E7SUFHMUI7UUFEQyxRQUFRLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQzttREFDUztJQUczQjtRQURLLFFBQVEsQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDO21EQUNLO0lBSTNCO1FBREMsUUFBUSxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUM7Z0RBQ007SUFyRFAsV0FBVztRQUQvQixPQUFPO09BQ2EsV0FBVyxDQWkrRC9CO0lBQUQsa0JBQUM7Q0FqK0RELEFBaStEQyxDQWorRHdDLEVBQUUsQ0FBQyxTQUFTLEdBaStEcEQ7a0JBaitEb0IsV0FBVyIsImZpbGUiOiIiLCJzb3VyY2VSb290IjoiLyIsInNvdXJjZXNDb250ZW50IjpbIi8vIExlYXJuIFR5cGVTY3JpcHQ6XHJcbi8vICAtIGh0dHBzOi8vZG9jcy5jb2Nvcy5jb20vY3JlYXRvci9tYW51YWwvZW4vc2NyaXB0aW5nL3R5cGVzY3JpcHQuaHRtbFxyXG4vLyBMZWFybiBBdHRyaWJ1dGU6XHJcbi8vICAtIGh0dHBzOi8vZG9jcy5jb2Nvcy5jb20vY3JlYXRvci9tYW51YWwvZW4vc2NyaXB0aW5nL3JlZmVyZW5jZS9hdHRyaWJ1dGVzLmh0bWxcclxuLy8gTGVhcm4gbGlmZS1jeWNsZSBjYWxsYmFja3M6XHJcbi8vICAtIGh0dHBzOi8vZG9jcy5jb2Nvcy5jb20vY3JlYXRvci9tYW51YWwvZW4vc2NyaXB0aW5nL2xpZmUtY3ljbGUtY2FsbGJhY2tzLmh0bWxcclxuXHJcbmltcG9ydCBHYW1lTWFuYWdlciBmcm9tIFwiLi9HYW1lTWFuYWdlclwiO1xyXG5pbXBvcnQgeyBMUUNvbGxpZGUgfSBmcm9tIFwiLi9scV9jb2xsaWRlX3N5c3RlbS9scV9jb2xsaWRlXCI7XHJcbmltcG9ydCBOdW1iZXJUb0ltYWdlIGZyb20gXCIuL051bWJlclRvSW1hZ2VcIjtcclxuaW1wb3J0IHsgTWluaUdhbWVTZGsgfSBmcm9tIFwiLi9TZGsvTWluaUdhbWVTZGtcIjtcclxuXHJcbmNvbnN0IHtjY2NsYXNzLCBwcm9wZXJ0eX0gPSBjYy5fZGVjb3JhdG9yO1xyXG5cclxuXHJcblxyXG5AY2NjbGFzc1xyXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBNYXBDb25yb2xlciBleHRlbmRzIGNjLkNvbXBvbmVudCB7XHJcbiAgICBzdGF0aWMgX2luc3RhbmNlOiBhbnk7XHJcblxyXG5cclxuICAgIEBwcm9wZXJ0eSh7dHlwZTogW2NjLlByZWZhYl0sIHRvb2x0aXA6XCLmlrnlnZfmlbDnu4RcIn0pXHJcbiAgICBCbG9ja19BcnJheSA6IEFycmF5PGNjLlByZWZhYj4gPSBbXTtcclxuXHJcbiAgICBAcHJvcGVydHkoe3R5cGU6IFtjYy5QcmVmYWJdLCB0b29sdGlwOlwi5pa55Z2X6YGT5YW35pWw57uEXCJ9KVxyXG4gICAgQmxvY2tfUHJvcCA6IEFycmF5PGNjLlByZWZhYj4gPSBbXTtcclxuXHJcbiAgICBAcHJvcGVydHkoY2MuUHJlZmFiKVxyXG4gICAgTWFwQmxvY2tQcmVmYWI6IGNjLlByZWZhYiA9IG51bGw7XHJcblxyXG4gICAgQHByb3BlcnR5KHt0eXBlOiBbY2MuU3ByaXRlQXRsYXNdLCB0b29sdGlwOlwi5pa55Z2X6aKc6ImyXCJ9KVxyXG4gICAgQmxvY2tfQ29sb3IgOiBBcnJheTxjYy5TcHJpdGVBdGxhcz4gPSBbXTtcclxuXHJcblxyXG4gICAgQHByb3BlcnR5KHt0eXBlOiBbY2MuUHJlZmFiXSwgdG9vbHRpcDpcIuWimeWjgeaVsOe7hFwifSlcclxuICAgIFdhbGxfUHJlZmFiIDogQXJyYXk8Y2MuUHJlZmFiPiA9IFtdO1xyXG5cclxuICBcclxuXHJcbiAgICBAcHJvcGVydHkoY2MuUHJlZmFiKVxyXG4gICAgd2FsbFR1cm5QcmVmYWI6IGNjLlByZWZhYiA9IG51bGw7XHJcblxyXG4gICAgQHByb3BlcnR5KGNjLkJ1dHRvbilcclxuICAgIHRpbWVCdG46IGNjLkJ1dHRvbiA9IG51bGw7XHJcbiAgICBAcHJvcGVydHkoY2MuQnV0dG9uKVxyXG4gICAgZGVzdHJveUJ0bjogY2MuQnV0dG9uID0gbnVsbDtcclxuICAgIEBwcm9wZXJ0eShjYy5CdXR0b24pXHJcbiAgICBtYWdpY0J0bjogY2MuQnV0dG9uID0gbnVsbDtcclxuXHJcbiAgICBAcHJvcGVydHkoY2MuTm9kZSlcclxuICAgIG1hc2s6IGNjLk5vZGUgPSBudWxsO1xyXG5cclxuICAgIEBwcm9wZXJ0eShjYy5MYWJlbClcclxuICAgIGljZUxhYmVsOiBjYy5MYWJlbCA9IG51bGw7XHJcbiAgICBAcHJvcGVydHkoY2MuTGFiZWwpXHJcbiAgICBoYW1tZXJMYWJlbDogY2MuTGFiZWwgPSBudWxsO1xyXG4gICAgQHByb3BlcnR5KGNjLkxhYmVsKVxyXG4gICAgbWFnaWNMYWJlbDogY2MuTGFiZWwgPSBudWxsO1xyXG5cclxuICAgIEBwcm9wZXJ0eShjYy5Ob2RlKVxyXG4gICAgbWFnaWNNYXNrOiBjYy5Ob2RlID0gbnVsbDtcclxuXHJcbiAgICBAcHJvcGVydHkoY2MuTm9kZSlcclxuICAgIGhhbW1lck1hc2s6IGNjLk5vZGUgPSBudWxsO1xyXG5cclxuICAgICAgICBAcHJvcGVydHkoY2MuTm9kZSlcclxuICAgIGZyZWV6ZU1hc2s6IGNjLk5vZGUgPSBudWxsO1xyXG5cclxuICAgIFxyXG4gICAgQHByb3BlcnR5KGNjLk5vZGUpXHJcbiAgICBjb2luUG9wOiBjYy5Ob2RlID0gbnVsbDtcclxuXHJcbiAgICB0aW1lTGFiZWw6IGNjLk5vZGUgPSBudWxsO1xyXG4gICAgbGV2ZWxMYWJlbDogY2MuTm9kZSA9IG51bGw7XHJcblxyXG4gICAgbmV3X21vZGU6IG51bWJlciA9IDA7XHJcbiAgICBtYXBXaWR0aDogbnVtYmVyID0gMDtcclxuICAgIG1hcEhlaWdodDogbnVtYmVyID0gMDtcclxuICAgIHdhbGxOdW06IG51bWJlciA9IDA7XHJcbiAgICBibG9ja051bTogbnVtYmVyID0gMDtcclxuICAgIG1hcEJsb2Nrc1dhbGw6IGFueTsgICAgICAvL+WcsOWbvueahOaJgOacieW6leWdl1xyXG4gICAgbWFwSW5mbzogYW55OyAgICAgICAvL+WcsOWbvumZpOS6huW6leWdl+eahOWFtuS7luS/oeaBr1xyXG4gICAgYmxvY2tzOiBhbnk7ICAgICAgICAvL+aWueWdl+aVsOe7hFxyXG4gICAgd2FsbEluZm86IGFueTsgICAgICAvL+WimeWjgeaVsOe7hFxyXG4gICAgd2FsbEFycmF5OmFueTsgICAgICAvL1xyXG4gICAgb3BlbldhbGw6IGFueTsgICAgICAvL+W8gOWFs+WimeaVsOe7hFxyXG4gICAgZnJlZXplV2FsbDogYW55OyAgICAvL+WGu+e7k+WimeaVsOe7hFxyXG4gICAgcmlzZUZhbGxCbGNvazphbnk7ICAvL+WNh+mZjeWcsOWdl+aVsOe7hFxyXG4gICAgc2NoZWR1bGVDYWxsYmFjazogYW55Oy8v5YCS6K6h5pe255SoXHJcbiAgICBob21lQ2FuVG91Y2g6Ym9vbGVhbiA9IHRydWU7Ly/mjInpkq7lj6/nlKjnirbmgIFcclxuICAgIGFnYWluQ2FuVG91Y2g6Ym9vbGVhbiA9ICB0cnVlOy8v6YeN546p5oyJ6ZKu5Y+v5Lul55So54q25oCBXHJcbiAgICBnYW1lT3ZlcjogYm9vbGVhbiA9IGZhbHNlOy8v5ri45oiP57uT5p2f54q25oCBXHJcbiAgICBnYW1lV2luOiBib29sZWFuID0gZmFsc2U7Ly/muLjmiI/og5zliKnnirbmgIFcclxuICAgIGdhbWVTdGFydDogYm9vbGVhbiA9IGZhbHNlOy8v5ri45oiP5byA5aeL54q25oCBXHJcbiAgICB0aW1lTnVtYmVyOiBudW1iZXIgPSAwOyAvL+a4uOaIj+aXtumXtCDnlKjkuo7lgJLorqHml7ZcclxuICAgIGNvdW50X1RpbWU6IG51bWJlciA9IDA7IC8v55So5LqO57uf6K6h5oC75ri45oiP5pe26ZW/XHJcbiAgICBhZGRfVGltZTogbnVtYmVyID0gMDsgICAvL+Wkjea0u+aXtumXtFxyXG4gICAgbWFwQmxvY2tBcnJheTogYW55OyAgLy/lnLDlm77nmoTmiYDmnInmoLzlrZDnirbmgIHlrZjlgqhcclxuICAgIHBhdXNlOmJvb2xlYW4gPSBmYWxzZTsvL+aaguWBnOeKtuaAgVxyXG4gICAgaGFtbWVyOmJvb2xlYW4gPSBmYWxzZTsvL+mUpOWtkOeKtuaAgVxyXG4gICAgZnJlZXplQXJyYXk6IGFueTsgLy/lhrvnu5NcclxuICAgIGxvYWNrQXJyYXk6IGFueTsgLy/kuIrplIFcclxuICAgIHBhcnRpY2xlRWZmZWN0czogY2MuUGFydGljbGVBc3NldFtdO1xyXG4gICAgLy8gbGVmdERvb3JzOiBbXTsgLy/lt6bpl6hcclxuICAgIHJpZ2h0RG9vcnM6IGFueTsgLy/lj7Ppl6hcclxuICAgIHRvcERvb3JzOiBhbnk7IC8v5LiK6ZeoXHJcbiAgICBib3R0b21Eb29yczogYW55OyAvL+S4i+mXqFxyXG4gICAgbGVmdERvb3JzOiBhbnk7XHJcblxyXG5cclxuICAgIC8vIG1hcEluZm86IG51bWJlcltdW10gPSBbXTtcclxuXHJcbiAgICBvbkxvYWQgKCkge1xyXG5cclxuICAgICAgICBjYy5meC5HYW1lQ29uZmlnLkdNX0lORk8ucmV2aWV3ID0gMDtcclxuICAgICAgICBjYy5meC5HYW1lQ29uZmlnLkdNX0lORk8uZ2FtZVN0YXRlID0gdHJ1ZTtcclxuICAgICAgICB0aGlzLm1hc2sub3BhY2l0eSA9IDA7XHJcbiAgICAgICAgdGhpcy5ub2RlLmdldENoaWxkQnlOYW1lKFwiQWRoZXNpdmVcIikuekluZGV4ID0gNTAwO1xyXG4gICAgICAgIGNjLmdhbWUuc2V0RnJhbWVSYXRlKDYzKTsgXHJcbiAgICAgICAgY2MuZnguQXVkaW9NYW5hZ2VyLl9pbnN0YW5jZS5wbGF5RWZmZWN0KFwiemh1YW4yXCIsbnVsbCk7XHJcbiAgICAgICAgdGhpcy5ub2RlLnBhcmVudC5wYXJlbnQucGFyZW50LmdldENoaWxkQnlOYW1lKFwiemh1YW5jaGFuZ1wiKS5hY3RpdmUgPSB0cnVlO1xyXG4gICAgICAgIHRoaXMubm9kZS5wYXJlbnQucGFyZW50LnBhcmVudC5nZXRDaGlsZEJ5TmFtZShcInpodWFuY2hhbmdcIikuZ2V0Q29tcG9uZW50KHNwLlNrZWxldG9uKS5zZXRBbmltYXRpb24oMSxcImRvd25cIixmYWxzZSk7XHJcbiAgICAgICAgdGhpcy5ub2RlLnBhcmVudC5wYXJlbnQucGFyZW50LmdldENoaWxkQnlOYW1lKFwiemh1YW5jaGFuZ1wiKS5nZXRDb21wb25lbnQoc3AuU2tlbGV0b24pLnNldENvbXBsZXRlTGlzdGVuZXIoKGVudHJ5KSA9PiB7XHJcbiAgICAgICAgICAgIGlmIChlbnRyeS5hbmltYXRpb24ubmFtZSA9PT0gXCJkb3duXCIpIHtcclxuICAgICAgICAgICAgICAgIC8vIOWKqOeUu+aSreaUvue7k+adn+WQjuaJp+ihjOeahOmAu+i+kVxyXG4gICAgICAgICAgICAgICAgdGhpcy5ub2RlLnBhcmVudC5wYXJlbnQucGFyZW50LmdldENoaWxkQnlOYW1lKFwiemh1YW5jaGFuZ1wiKS5hY3RpdmUgPSBmYWxzZTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH0pO1xyXG4gICAgICAgIHRoaXMuYmxvY2tzID0gW107XHJcbiAgICAgICAgdGhpcy5sZWZ0RG9vcnMgPSBbXTsgLy/lt6bpl6hcclxuICAgICAgICB0aGlzLnJpZ2h0RG9vcnMgPSBbXTsgLy/lj7Ppl6hcclxuICAgICAgICB0aGlzLnRvcERvb3JzID0gW107IC8v5LiK6ZeoXHJcbiAgICAgICAgdGhpcy5ib3R0b21Eb29ycyA9IFtdOyAvL+S4i+mXqFxyXG4gICAgICAgIHRoaXMuZ2FtZVdpbiA9IGZhbHNlO1xyXG4gICAgICAgIHRoaXMuZ2FtZU92ZXIgPSBmYWxzZTtcclxuICAgICAgICB0aGlzLmdhbWVTdGFydCA9IGZhbHNlOyBcclxuICAgICAgICB0aGlzLmhvbWVDYW5Ub3VjaCA9IHRydWU7XHJcbiAgICAgICAgdGhpcy5hZ2FpbkNhblRvdWNoID0gdHJ1ZTtcclxuICAgICAgICB0aGlzLm5ld19tb2RlID0gMDtcclxuICAgICAgICB0aGlzLmNvdW50X1RpbWUgPSAwO1xyXG4gICAgICAgIHRoaXMuYWRkX1RpbWUgPSAwO1xyXG4gXHJcbiAgICAgICAgdGhpcy5pY2VMYWJlbC5zdHJpbmcgPSBjYy5meC5HYW1lQ29uZmlnLkdNX0lORk8uZnJlZXplQW1vdW50LnRvU3RyaW5nKCk7XHJcbiAgICAgICAgdGhpcy5oYW1tZXJMYWJlbC5zdHJpbmcgPSBjYy5meC5HYW1lQ29uZmlnLkdNX0lORk8uaGFtbWVyQW1vdW50LnRvU3RyaW5nKCk7XHJcbiAgICAgICAgdGhpcy5tYWdpY0xhYmVsLnN0cmluZyA9IGNjLmZ4LkdhbWVDb25maWcuR01fSU5GTy5tYWdpY0Ftb3VudC50b1N0cmluZygpO1xyXG4gICBcclxuICAgICAgICAvLyBjYy5nYW1lLmFkZFBlcnNpc3RSb290Tm9kZSh0aGlzLm5vZGUpO1xyXG4gICAgICAgIE1hcENvbnJvbGVyLl9pbnN0YW5jZSA9IHRoaXM7XHJcbiAgICB9IFxyXG5cclxuICAgIHN0YXJ0ICgpIHtcclxuICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgICAgICAgICAgICBjYy5kaXJlY3Rvci5wcmVsb2FkU2NlbmUoXCJIb21lU2NlbmVcIiwgKGVyciwgYXNzZXQpID0+IHtcclxuICAgICAgICAgICAgICAgIGlmIChlcnIpIHtcclxuICAgICAgICAgICAgICAgICAgICBjb25zb2xlLmVycm9yKCfliqjmgIHliqDovb0gSG9tZVNjZW5lIOWksei0pTonLCBlcnIpO1xyXG4gICAgICAgICAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgfSwgMTAwMCk7XHJcbiAgICAgICAgLy8gY29uc29sZS5sb2coXCLov5vlhaVHYW1lU2NlbmVcIik7XHJcbiAgICAgICAgdGhpcy5CbG9ja19BcnJheSA9IEdhbWVNYW5hZ2VyLl9pbnN0YW5jZS5CbG9ja19BcnJheTtcclxuICAgICAgICB0aGlzLldhbGxfUHJlZmFiID0gR2FtZU1hbmFnZXIuX2luc3RhbmNlLldhbGxfUHJlZmFiO1xyXG4gICAgICAgIHRoaXMuQmxvY2tfQ29sb3IgPSBHYW1lTWFuYWdlci5faW5zdGFuY2UuQmxvY2tfQ29sb3I7XHJcbiAgICAgICAgLy8gdGhpcy5wYXJ0aWNsZUVmZmVjdHMgPSBHYW1lTWFuYWdlci5faW5zdGFuY2UucGFydGljbGVFZmZlY3RzO1xyXG4gICAgICAgXHJcbiAgICAgICAgdGhpcy5pbml0TWFwKCk7XHJcbiAgIFxyXG4gICAgfVxyXG5cclxuICAgIHN0YXJ0VXBkYXRlKCl7XHJcbiAgICAgICAgaWYodGhpcy5nYW1lU3RhcnQgPT0gZmFsc2Upe1xyXG4gICAgICAgICAgICB0aGlzLmdhbWVTdGFydCA9IHRydWU7XHJcbiAgICAgICAgICAgIC8v5Y+R6YCB5pWw5pWw5LqL5Lu24oCU4oCU6L+b5YWl5YWz5Y2hXHJcbiAgICAgICAgICAgIGNvbnNvbGUubG9nKFwi5YeG5aSH6L+b5YWl5LiL5LiA5YWzLOWPkemAgeS4i+S4gOWFs+i/m+WFpVwiKTtcclxuICAgICAgICAgICAgY2MuZnguR2FtZVRvb2wuc2h1c2h1X1RyYWNrKFwiZW50ZXJfc3RhZ2VcIik7XHJcbiAgICAgICAgICAgIHRoaXMuc3RhcnRUaW1lQ3V0RG93bigpO1xyXG4gICAgICAgICAgICBmb3IobGV0IGkgPTA7IGk8dGhpcy5ibG9ja3MubGVuZ3RoOyBpKyspe1xyXG4gICAgICAgICAgICAgICAgaWYodGhpcy5ibG9ja3NbaV0uZ2V0Q29tcG9uZW50KFwiQmxvY2tcIikudHlwZSA9PSA2KXtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLmJsb2Nrc1tpXS5nZXRDaGlsZEJ5TmFtZShcImJvb21cIikuZ2V0Q29tcG9uZW50KFwiQm9vbVwiKS5zdGFydEJvb20oKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBpbml0TWFwKCl7XHJcbiAgICAgICAgLy8gdGhpcy5ub2RlLmdldENoaWxkQnlOYW1lKFwiV2FsbFwiKS56SW5kZXggPSAxMDtcclxuICAgICAgICB0aGlzLnRpbWVMYWJlbCA9ICB0aGlzLm5vZGUucGFyZW50LmdldENoaWxkQnlOYW1lKFwiVG9wXCIpLmdldENoaWxkQnlOYW1lKFwidGltZVwiKTtcclxuICAgICAgICB0aGlzLmxldmVsTGFiZWwgPSAgdGhpcy5ub2RlLnBhcmVudC5nZXRDaGlsZEJ5TmFtZShcIlRvcFwiKS5nZXRDaGlsZEJ5TmFtZShcImxldmVsXCIpO1xyXG4gICAgICAgIHRoaXMudGltZU51bWJlciA9IGNjLmZ4LkdhbWVDb25maWcuTEVWRUxfSU5GT1swXS50aW1lO1xyXG5cclxuICAgICAgICBOdW1iZXJUb0ltYWdlLmdldFRpbWVNYXJnaW4odGhpcy50aW1lTnVtYmVyLDUwLFwidGltZV9cIix0aGlzLnRpbWVMYWJlbClcclxuICAgICAgICAvLyB2YXIgdGltZVRlbXAgPSBjYy5meC5HYW1lVG9vbC5nZXRUaW1lTWFyZ2luKHRoaXMudGltZU51bWJlcik7XHJcbiAgICAgICAgLy8gdGhpcy50aW1lTGFiZWwuc3RyaW5nID0gdGltZVRlbXAudG9TdHJpbmcoKTtcclxuICAgICAgICBOdW1iZXJUb0ltYWdlLm51bWJlclRvSW1hZ2VOb2RlcygoY2MuZnguR2FtZUNvbmZpZy5HTV9JTkZPLmxldmVsKzEpLDUwLDIwLFwibGV2ZWxfXCIsdGhpcy5sZXZlbExhYmVsLGZhbHNlKVxyXG4gICAgICAgIFxyXG4gICAgICAgIC8vdGhpcy5zdGFydFRpbWVDdXREb3duKCk7XHJcblxyXG4gICAgICAgIHRoaXMubWFwV2lkdGggPSBjYy5meC5HYW1lQ29uZmlnLkxFVkVMX0lORk9bMF0ubWFwWzBdO1xyXG4gICAgICAgIHRoaXMubWFwSGVpZ2h0ID0gY2MuZnguR2FtZUNvbmZpZy5MRVZFTF9JTkZPWzBdLm1hcFsxXTtcclxuICAgICAgICBsZXQgZ2FwID0gY2MuZnguR2FtZUNvbmZpZy5MRVZFTF9JTkZPWzBdLmdhcDtcclxuICAgICAgICBsZXQgcmlzZWZhbGwgPSBjYy5meC5HYW1lQ29uZmlnLkxFVkVMX0lORk9bMF0ucmlzZWZhbGw7XHJcblxyXG4gICAgICAgIHRoaXMucGF1c2UgPSBmYWxzZTtcclxuICAgICAgICB0aGlzLmhhbW1lciA9IGZhbHNlO1xyXG4gICAgICAgIHRoaXMud2FsbE51bSA9IDA7XHJcbiAgICAgICAgdGhpcy5zZXRNYXBJbmZvKCk7XHJcbiAgICAgICAgdGhpcy5ibG9ja3MgPSBbXTtcclxuICAgICAgICB0aGlzLm1hcEJsb2Nrc1dhbGwgPSBbXTtcclxuICAgICAgICB0aGlzLm1hcEluZm8gPSBbXTtcclxuICAgICAgICB0aGlzLndhbGxJbmZvID0gW107XHJcbiAgICAgICAgdGhpcy5vcGVuV2FsbCA9IFtdO1xyXG4gICAgICAgIHRoaXMud2FsbEFycmF5ID0gW107XHJcbiAgICAgICAgdGhpcy5mcmVlemVXYWxsID0gW107XHJcbiAgICAgICAgdGhpcy5yaXNlRmFsbEJsY29rID0gW107XHJcbiAgICAgICAgdGhpcy5tYXBCbG9ja0FycmF5ID0gW107XHJcbiAgICAgICAgdGhpcy5mcmVlemVBcnJheSA9IFtdO1xyXG4gICAgICAgIHRoaXMubG9hY2tBcnJheSA9IFtdO1xyXG4gICAgICAgIHRoaXMuY291bnRfVGltZSA9IDA7XHJcbiAgICAgICAgdGhpcy5hZGRfVGltZSA9IDA7XHJcbiAgICAgIFxyXG4gICAgICAgIGxldCBzdGFydFggPSAgdGhpcy5tYXBXaWR0aCUyPT0wPy0odGhpcy5tYXBXaWR0aC0xKSo2MDotKHRoaXMubWFwV2lkdGgtMSkqNjA7XHJcbiAgICAgICAgbGV0IHN0YXJ0WSA9ICB0aGlzLm1hcEhlaWdodCUyPT0wPy0odGhpcy5tYXBIZWlnaHQtMSkqNjA6LSh0aGlzLm1hcEhlaWdodC0xKSo2MDtcclxuICAgICAgICAvLyBzdGFydFggPSh0aGlzLm1hcFdpZHRoLTEpKjYwICsgNjA7XHJcbiAgICAgICAgLy8gc3RhcnRZID0tKHRoaXMubWFwSGVpZ2h0LTEpKjYwIC0gNjA7XHJcbiAgICAgICAgXHJcbiAgICAgICAgZm9yKGxldCBpID0gMDsgaSA8IHRoaXMubWFwV2lkdGg7IGkrKyl7XHJcbiAgICAgICAgICAgIHRoaXMubWFwQmxvY2tzV2FsbFtpXSA9IFtdO1xyXG5cclxuICAgICAgICAgICAgZm9yKGxldCBqID0gMDsgaiA8IHRoaXMubWFwSGVpZ2h0OyBqKyspe1xyXG4gICAgICAgICAgICAgICAgbGV0IGJsb2NrID0gY2MuaW5zdGFudGlhdGUodGhpcy5NYXBCbG9ja1ByZWZhYik7XHJcbiAgICAgICAgICAgICAgICBibG9jay5wYXJlbnQgPSB0aGlzLm5vZGUuZ2V0Q2hpbGRCeU5hbWUoXCJtYXBCbG9ja1wiKTtcclxuICAgICAgICAgICAgICAgIGJsb2NrLmdldENvbXBvbmVudChcIk1hcEJsb2NrXCIpLmluaXQoaSxqKTsgICAgXHJcbiAgICAgICAgICAgICAgICAvLyBibG9jay5nZXRDaGlsZEJ5TmFtZShcIm51bVwiKS5nZXRDb21wb25lbnQoY2MuTGFiZWwpLnN0cmluZyA9IGkgKyBcIjpcIiArIGo7XHJcbiAgICAgICAgICAgICAgICBibG9jay5zZXRQb3NpdGlvbihjYy52MihzdGFydFggKyBpICogMTIwLCBzdGFydFkgKyBqICogMTIwKSlcclxuICAgICAgICAgICAgICAgIGlmKHJpc2VmYWxsICE9IG51bGwpe1xyXG4gICAgICAgICAgICAgICAgICAgIGlmKHRoaXMubWFwUmlzZUZhbGwoY2MudjIoaSxqKSxyaXNlZmFsbCxibG9jaykpe1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnJpc2VGYWxsQmxjb2sucHVzaChibG9jayk7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgaWYoZ2FwIT0gbnVsbCl7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYoIXRoaXMubWFwR2FwKGNjLnYyKGksaiksZ2FwKSB8fCBpID09IDAgfHwgaSA9PSB0aGlzLm1hcFdpZHRoLTFcclxuICAgICAgICAgICAgICAgICAgICB8fCBqID09IDAgfHwgaiA9PSB0aGlzLm1hcEhlaWdodCAtIDEpe1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBibG9jay5vcGFjaXR5ID0gMjU0O1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBibG9jay5yZW1vdmVDb21wb25lbnQoY2MuU3ByaXRlKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgYmxvY2sucmVtb3ZlQWxsQ2hpbGRyZW4oKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy53YWxsSW5mby5wdXNoKGJsb2NrKTtcclxuICAgICAgICAgICAgICAgICAgICB9IFxyXG4gICAgICAgICAgICAgICAgICAgIGVsc2UgdGhpcy5tYXBJbmZvLnB1c2goYmxvY2spO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgZWxzZXtcclxuICAgICAgICAgICAgICAgICAgICBpZiggaSA9PSAwIHx8IGkgPT0gdGhpcy5tYXBXaWR0aC0xXHJcbiAgICAgICAgICAgICAgICAgICAgfHwgaiA9PSAwIHx8IGogPT0gdGhpcy5tYXBIZWlnaHQgLSAxKXtcclxuICAgICAgICAgICAgICAgICAgICAgICAgYmxvY2sub3BhY2l0eSA9IDI1NDtcclxuICAgICAgICAgICAgICAgICAgICAgICAgYmxvY2sucmVtb3ZlQ29tcG9uZW50KGNjLlNwcml0ZSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGJsb2NrLnJlbW92ZUFsbENoaWxkcmVuKCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMud2FsbEluZm8ucHVzaChibG9jayk7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIGVsc2UgdGhpcy5tYXBJbmZvLnB1c2goYmxvY2spO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICBcclxuICAgICAgICAgICAgICAgIHRoaXMubWFwQmxvY2tzV2FsbFtpXS5wdXNoKGJsb2NrKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgdGhpcy53YWxsSW5pdCgpO1xyXG4gICAgICAgIHRoaXMuYmxvY2tJbml0KCk7XHJcbiAgICAgXHJcbiAgICB9XHJcblxyXG4gICAgLy/liJvlu7rmlrnlnZdcclxuLy8gLi4uIOW3suacieS7o+eggSAuLi5cclxuXHJcbi8v5Yib5bu65pa55Z2XXHJcbi8vIC4uLiDlt7LmnInku6PnoIEgLi4uXHJcblxyXG5cclxuXHJcblxyXG5ibG9ja0luaXQoKSB7XHJcbiAgICBsZXQgYmxvY2tBcnJheSA9IGNjLmZ4LkdhbWVDb25maWcuQkxPQ0tfSU5GT1swXTtcclxuICAgIGJsb2NrQXJyYXkgPSB0aGlzLnNvcnRCbG9jayhibG9ja0FycmF5KTsgXHJcblxyXG4gICAgbGV0IGluZGV4ID0gMDsgLy8g5b2T5YmN6KaB5Yib5bu655qE5pa55Z2X57Si5byVXHJcbiAgICBsZXQgQkxPQ0tTX1BFUl9GUkFNRSA9IDE7IC8vIOWIneWni+avj+W4p+WIm+W7uueahOaWueWdl+aVsOmHj1xyXG4gICAgY29uc3QgTUFYX1BFUl9GUkFNRSA9IDEwOyAvLyDmr4/luKfmnIDlpKfliJvlu7rmlbDph49cclxuICAgIGNvbnN0IE1JTl9QRVJfRlJBTUUgPSAxOyAvLyDmr4/luKfmnIDlsI/liJvlu7rmlbDph49cclxuXHJcbiAgICBjb25zdCBjcmVhdGVCbG9ja3MgPSAoKSA9PiB7XHJcbiAgICAgICAgY29uc3Qgc3RhcnRUaW1lID0gcGVyZm9ybWFuY2Uubm93KCk7XHJcbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBCTE9DS1NfUEVSX0ZSQU1FICYmIGluZGV4IDwgYmxvY2tBcnJheS5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgICAgICBsZXQgYmxvY2tJbmZvID0gYmxvY2tBcnJheVtpbmRleF07XHJcbiAgICAgICAgICAgIC8vIOe8k+WtmCBCbG9ja19BcnJheSDorr/pl65cclxuICAgICAgICAgICAgY29uc3QgYmxvY2tQcmVmYWIgPSB0aGlzLkJsb2NrX0FycmF5W2Jsb2NrSW5mby5ibG9ja107IFxyXG4gICAgICAgICAgICBsZXQgYmxvY2sgPSBjYy5pbnN0YW50aWF0ZShibG9ja1ByZWZhYik7XHJcbiAgICAgICAgICAgIGJsb2NrLnBhcmVudCA9IHRoaXMubm9kZTtcclxuICAgICAgICAgICAgYmxvY2suc2V0UG9zaXRpb24oY2MudjIoYmxvY2tJbmZvLnBvc2l0aW9uLngsIGJsb2NrSW5mby5wb3NpdGlvbi55KSk7XHJcbiAgICAgICAgICAgIGlmIChibG9ja0luZm8uYmxvY2sgIT0gMjMpIHtcclxuICAgICAgICAgICAgICAgIHRoaXMuYmxvY2tOdW0gKz0gMTtcclxuICAgICAgICAgICAgICAgIHRoaXMuYmxvY2tzLnB1c2goYmxvY2spO1xyXG4gICAgICAgICAgICAgICAgaWYgKGJsb2NrSW5mby50eXBlID09IDEpIHtcclxuICAgICAgICAgICAgICAgICAgICBsZXQgaW5mbyA9IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgaWQ6IGJsb2NrSW5mby5pZCArIDEsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGJsb2NrOiBibG9ja0luZm8uYmxvY2ssXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbG9yOiBibG9ja0luZm8uc3RhY2tpbmcsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU6IDEwLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBwb3NpdGlvbjogYmxvY2tJbmZvLnBvc2l0aW9uLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBzdGFja2luZzogYmxvY2tJbmZvLmNvbG9yXHJcbiAgICAgICAgICAgICAgICAgICAgfTtcclxuICAgICAgICAgICAgICAgICAgICAvLyDnvJPlrZggQmxvY2tfQXJyYXkg6K6/6ZeuXHJcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgYmxvY2tVcFByZWZhYiA9IHRoaXMuQmxvY2tfQXJyYXlbaW5mby5ibG9ja107IFxyXG4gICAgICAgICAgICAgICAgICAgIGxldCBibG9ja1VwID0gY2MuaW5zdGFudGlhdGUoYmxvY2tVcFByZWZhYik7XHJcbiAgICAgICAgICAgICAgICAgICAgYmxvY2tVcC5wYXJlbnQgPSB0aGlzLm5vZGU7XHJcbiAgICAgICAgICAgICAgICAgICAgYmxvY2tVcC5zZXRQb3NpdGlvbihjYy52MihpbmZvLnBvc2l0aW9uLngsIGluZm8ucG9zaXRpb24ueSkpO1xyXG5cclxuICAgICAgICAgICAgICAgICAgICB0aGlzLmJsb2Nrcy5wdXNoKGJsb2NrVXApO1xyXG4gICAgICAgICAgICAgICAgICAgIGJsb2NrLmdldENvbXBvbmVudChcIkJsb2NrXCIpLmluaXQoYmxvY2tJbmZvLCBudWxsLCBudWxsLCBibG9ja1VwKTtcclxuICAgICAgICAgICAgICAgICAgICBibG9ja1VwLmdldENvbXBvbmVudChcIkJsb2NrXCIpLmluaXQoaW5mbywgbnVsbCwgbnVsbCwgYmxvY2spO1xyXG4gICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLmJsb2NrTnVtICs9IDE7XHJcbiAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKGJsb2NrSW5mby50eXBlID09IDkpIHtcclxuICAgICAgICAgICAgICAgICAgICBpZihibG9ja0luZm8uYWRoZXNpdmVUaW1lIDwgMil7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGluZGV4Kys7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICBpbmRleCsrO1xyXG4gICAgICAgICAgICAgICAgICAgIGxldCBpbmZvID0gYmxvY2tBcnJheVtpbmRleF07XHJcbiAgICAgICAgICAgICAgICAgICAgLy8g57yT5a2YIEJsb2NrX0FycmF5IOiuv+mXrlxyXG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGJsb2NrVXBQcmVmYWIgPSB0aGlzLkJsb2NrX0FycmF5W2luZm8uYmxvY2tdOyBcclxuICAgICAgICAgICAgICAgICAgICBsZXQgYmxvY2tVcCA9IGNjLmluc3RhbnRpYXRlKGJsb2NrVXBQcmVmYWIpO1xyXG4gICAgICAgICAgICAgICAgICAgIGJsb2NrVXAucGFyZW50ID0gdGhpcy5ub2RlO1xyXG4gICAgICAgICAgICAgICAgICAgIGJsb2NrVXAuc2V0UG9zaXRpb24oY2MudjIoaW5mby5wb3NpdGlvbi54LCBpbmZvLnBvc2l0aW9uLnkpKTtcclxuXHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5ibG9ja3MucHVzaChibG9ja1VwKTtcclxuICAgICAgICAgICAgICAgICAgICBibG9jay5nZXRDb21wb25lbnQoXCJCbG9ja1wiKS5pbml0KGJsb2NrSW5mbywgbnVsbCwgbnVsbCwgYmxvY2tVcCxmYWxzZSk7XHJcbiAgICAgICAgICAgICAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGJsb2NrVXAuZ2V0Q29tcG9uZW50KFwiQmxvY2tcIikuaW5pdChpbmZvLCBudWxsLCBudWxsLCBibG9jayx0cnVlKTtcclxuICAgICAgICAgICAgICAgICAgICB9LCAxMDApO1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuYmxvY2tOdW0gKz0gMTtcclxuICAgICAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgICAgYmxvY2suZ2V0Q29tcG9uZW50KFwiQmxvY2tcIikuaW5pdChibG9ja0luZm8pO1xyXG4gICAgICAgICAgICAgICAgfSBcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBlbHNle1xyXG4gICAgICAgICAgICAgICAgYmxvY2suZ2V0Q29tcG9uZW50KFwiQmFycmllclwiKS5pbml0KGJsb2NrSW5mbyk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgaW5kZXgrKztcclxuICAgICAgICB9XHJcbiAgICAgICAgY29uc3QgZW5kVGltZSA9IHBlcmZvcm1hbmNlLm5vdygpO1xyXG4gICAgICAgIGNvbnN0IGZyYW1lVGltZSA9IGVuZFRpbWUgLSBzdGFydFRpbWU7XHJcbiAgICAgICAgLy8g5aaC5p6c5b2T5YmN5bin5omn6KGM5pe26Ze06L+H6ZW/77yM5YeP5bCR5q+P5bin5Yib5bu65pWw6YePXHJcbiAgICAgICAgaWYgKGZyYW1lVGltZSA+IDE2KSB7IFxyXG4gICAgICAgICAgICBCTE9DS1NfUEVSX0ZSQU1FID0gTWF0aC5tYXgoQkxPQ0tTX1BFUl9GUkFNRSAtIDEsIE1JTl9QRVJfRlJBTUUpO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIEJMT0NLU19QRVJfRlJBTUUgPSBNYXRoLm1pbihCTE9DS1NfUEVSX0ZSQU1FICsgMSwgTUFYX1BFUl9GUkFNRSk7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICAvLyDlpoLmnpzov5jmnInmlrnlnZfmnKrliJvlu7rvvIzkuIvkuIDluKfnu6fnu63liJvlu7pcclxuICAgICAgICBpZiAoaW5kZXggPCBibG9ja0FycmF5Lmxlbmd0aCkge1xyXG4gICAgICAgICAgICAvLyDkvb/nlKggc2NoZWR1bGVPbmNlIOWcqOS4i+S4gOW4p+aJp+ihjCBjcmVhdGVCbG9ja3NcclxuICAgICAgICAgICAgdGhpcy5zY2hlZHVsZU9uY2UoKCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgY3JlYXRlQmxvY2tzKCk7XHJcbiAgICAgICAgICAgIH0sIDApO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcblxyXG4gICAgICAgIH1cclxuICAgIH07XHJcblxyXG4gICAgLy8g5byA5aeL5YiG5bin5Yib5bu65pa55Z2XXHJcbiAgICBjcmVhdGVCbG9ja3MoKTtcclxufVxyXG4vL+e7meWIm+W7uuaWueWdl+aOkuW6j++8jOeUqOadpemZjeS9jmRyYXdjYWxsIOWQiOaJuVxyXG5zb3J0QmxvY2soYWxsQmxvY2tzOiB7IGNvbG9yOiBudW1iZXI7IGJsb2NrOiBudW1iZXI7IHR5cGU6IG51bWJlciB9W10pIHtcclxuICAgIHJldHVybiBhbGxCbG9ja3Muc29ydCgoYSwgYikgPT4ge1xyXG4gICAgICAgIC8vIOWFiOWkhOeQhiB0eXBlIOS4uiAxIOeahOaDheWGte+8jOWwhuWFtuaUvuWIsOacgOWQjlxyXG4gICAgICAgIGlmIChhLnR5cGUgPT09IDEgJiYgYi50eXBlICE9PSAxKSB7XHJcbiAgICAgICAgICAgIHJldHVybiAxO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAoYS50eXBlICE9PSAxICYmIGIudHlwZSA9PT0gMSkge1xyXG4gICAgICAgICAgICByZXR1cm4gLTE7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICAvLyDlr7kgdHlwZSDkuI3kuLogMCDnmoTlhYPntKDmjIkgdHlwZSDmjpLluo9cclxuICAgICAgICBpZiAoYS50eXBlICE9PSAwICYmIGIudHlwZSAhPT0gMCkge1xyXG4gICAgICAgICAgICByZXR1cm4gYS50eXBlIC0gYi50eXBlO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAoYS50eXBlICE9PSAwICYmIGIudHlwZSA9PT0gMCkge1xyXG4gICAgICAgICAgICByZXR1cm4gMTtcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKGEudHlwZSA9PT0gMCAmJiBiLnR5cGUgIT09IDApIHtcclxuICAgICAgICAgICAgcmV0dXJuIC0xO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgLy8g5YaN5aSE55CGIGJsb2NrIOS4uiAyMyDnmoTmg4XlhrXvvIzlsIblhbbmlL7liLDmnIDliY3pnaJcclxuICAgICAgICBpZiAoYS5ibG9jayA9PT0gMjMgJiYgYi5ibG9jayAhPT0gMjMpIHtcclxuICAgICAgICAgICAgcmV0dXJuIC0xO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAoYS5ibG9jayAhPT0gMjMgJiYgYi5ibG9jayA9PT0gMjMpIHtcclxuICAgICAgICAgICAgcmV0dXJuIDE7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICAvLyDlhbbkvZnmjIkgY29sb3Ig5Y2H5bqP5o6S5YiXXHJcbiAgICAgICAgcmV0dXJuIGEuY29sb3IgLSBiLmNvbG9yO1xyXG4gICAgfSk7XHJcbn1cclxuXHJcblxyXG4vL+WIm+W7uuWimeWjgVxyXG5cclxud2FsbEluaXQoKSB7XHJcbiAgICBsZXQgaW5kZXggPSAwOyAvLyDlvZPliY3opoHliJvlu7rnmoTlopnlo4HntKLlvJVcclxuICAgIGxldCBXQUxMU19QRVJfRlJBTUUgPSAxOyAvLyDliJ3lp4vmr4/luKfliJvlu7rnmoTlopnlo4HmlbDph49cclxuICAgIGNvbnN0IE1BWF9QRVJfRlJBTUUgPSAxMDsgLy8g5q+P5bin5pyA5aSn5Yib5bu65pWw6YePXHJcbiAgICBjb25zdCBNSU5fUEVSX0ZSQU1FID0gMTsgLy8g5q+P5bin5pyA5bCP5Yib5bu65pWw6YePXHJcblxyXG4gICAgY29uc3QgY3JlYXRlV2FsbHMgPSAoKSA9PiB7XHJcbiAgICAgICAgY29uc3Qgc3RhcnRUaW1lID0gcGVyZm9ybWFuY2Uubm93KCk7XHJcbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBXQUxMU19QRVJfRlJBTUUgJiYgaW5kZXggPCB0aGlzLndhbGxJbmZvLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgICAgIGxldCBibG9jayA9IHRoaXMud2FsbEluZm9baW5kZXhdO1xyXG4gICAgICAgICAgICBsZXQgZGlyID0gdGhpcy5nZXRXbGxEaXJhY3Rpb24oXCJ3YWxsXCIsIGNjLnYyKGJsb2NrLmdldENvbXBvbmVudChcIk1hcEJsb2NrXCIpLnBvc1gsIGJsb2NrLmdldENvbXBvbmVudChcIk1hcEJsb2NrXCIpLnBvc1kpKTtcclxuICAgICAgICAgICAgaWYgKGRpciAhPSBudWxsKSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmNyZWF0ZVdhbGwoZGlyLCBibG9jayk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgaW5kZXgrKztcclxuICAgICAgICB9XHJcbiAgICAgICAgY29uc3QgZW5kVGltZSA9IHBlcmZvcm1hbmNlLm5vdygpO1xyXG4gICAgICAgIGNvbnN0IGZyYW1lVGltZSA9IGVuZFRpbWUgLSBzdGFydFRpbWU7XHJcbiAgICAgICAgLy8g5aaC5p6c5b2T5YmN5bin5omn6KGM5pe26Ze06L+H6ZW/77yM5YeP5bCR5q+P5bin5Yib5bu65pWw6YePXHJcbiAgICAgICAgaWYgKGZyYW1lVGltZSA+IDE2KSB7IFxyXG4gICAgICAgICAgICBXQUxMU19QRVJfRlJBTUUgPSBNYXRoLm1heChXQUxMU19QRVJfRlJBTUUgLSAxLCBNSU5fUEVSX0ZSQU1FKTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICBXQUxMU19QRVJfRlJBTUUgPSBNYXRoLm1pbihXQUxMU19QRVJfRlJBTUUgKyAxLCBNQVhfUEVSX0ZSQU1FKTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIC8vIOWmguaenOi/mOacieWimeWjgeacquWIm+W7uu+8jOS4i+S4gOW4p+e7p+e7reWIm+W7ulxyXG4gICAgICAgIGlmIChpbmRleCA8IHRoaXMud2FsbEluZm8ubGVuZ3RoKSB7XHJcbiAgICAgICAgICAgIHRoaXMuc2NoZWR1bGVPbmNlKCgpID0+IHtcclxuICAgICAgICAgICAgICAgIGNyZWF0ZVdhbGxzKCk7XHJcbiAgICAgICAgICAgIH0sIDApO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIC8vIOaJgOacieWimeWjgeWIm+W7uuWujOaIkOWQju+8jOWIm+W7uuaLkOinkuiKgueCuVxyXG4gICAgICAgICAgICB0aGlzLmNyZWF0ZUNvcm5lck5vZGVzKCk7XHJcbiAgICAgICAgfVxyXG4gICAgfTtcclxuXHJcbiAgICAvLyDlvIDlp4vliIbluKfliJvlu7rlopnlo4FcclxuICAgIGNyZWF0ZVdhbGxzKCk7XHJcbn1cclxuXHJcbi8vIC4uLiDlt7LmnInku6PnoIEgLi4uXHJcblxyXG4gICAgZ2V0V2xsRGlyYWN0aW9uKHR5cGUscG9pbnRBKXtcclxuICAgICAgICBsZXQgZGlyID0gW107XHJcbiAgICAgICAgbGV0IHBvaW50QiA9IGNjLnYyKHBvaW50QS54ICsgMSxwb2ludEEueSk7XHJcbiAgICAgICAgbGV0IHBvaW50QyA9IGNjLnYyKHBvaW50QS54IC0gMSxwb2ludEEueSk7XHJcbiAgICAgICAgbGV0IHBvaW50RCA9IGNjLnYyKHBvaW50QS54LHBvaW50QS55ICsgMSk7XHJcbiAgICAgICAgbGV0IHBvaW50RSA9IGNjLnYyKHBvaW50QS54LHBvaW50QS55IC0gMSk7XHJcbiAgICAgICAgbGV0IG9wYWNpdHkgPSAwO1xyXG4gICAgICAgIGlmKHR5cGUgPT0gXCJ3YWxsXCIpIG9wYWNpdHkgPSAyNTU7XHJcbiAgICAgICAgaWYodHlwZSA9PSBcInR1cm5cIikgb3BhY2l0eSA9IDI1MDtcclxuICAgICAgXHJcbiAgICAgICAgaWYocG9pbnRCLnggPCB0aGlzLm1hcFdpZHRoKXtcclxuICAgICAgICAgICAgaWYodGhpcy5tYXBCbG9ja3NXYWxsW3BvaW50Qi54XVtwb2ludEIueV0ub3BhY2l0eSA9PSBvcGFjaXR5ICl7XHJcbiAgICAgICAgICAgICAgICBpZih0eXBlID09IFwidHVyblwiICYmIHRoaXMubWFwQmxvY2tzV2FsbFtwb2ludEIueF1bcG9pbnRCLnldLmdldENvbXBvbmVudChcIk1hcEJsb2NrXCIpLmRpcmVjdGlvbiA9PSBcInJpZ2h0XCIpe1xyXG4gICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBlbHNlIGRpci5wdXNoKFwicmlnaHRcIik7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgaWYocG9pbnRDLnggPj0gMCl7XHJcbiAgICAgICAgICAgIGlmKHRoaXMubWFwQmxvY2tzV2FsbFtwb2ludEMueF1bcG9pbnRDLnldLm9wYWNpdHkgPT0gb3BhY2l0eSl7XHJcbiAgICAgICAgICAgICAgICBpZih0eXBlID09IFwidHVyblwiICYmIHRoaXMubWFwQmxvY2tzV2FsbFtwb2ludEMueF1bcG9pbnRDLnldLmdldENvbXBvbmVudChcIk1hcEJsb2NrXCIpLmRpcmVjdGlvbiA9PSBcImxlZnRcIil7XHJcbiAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgZWxzZSBkaXIucHVzaChcImxlZnRcIik7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgaWYocG9pbnRELnkgPCB0aGlzLm1hcEhlaWdodCl7XHJcbiAgICAgICAgICAgIGlmKHRoaXMubWFwQmxvY2tzV2FsbFtwb2ludEQueF1bcG9pbnRELnldLm9wYWNpdHkgPT0gb3BhY2l0eSl7XHJcbiAgICAgICAgICAgICAgICBpZih0eXBlID09IFwidHVyblwiICYmIHRoaXMubWFwQmxvY2tzV2FsbFtwb2ludEQueF1bcG9pbnRELnldLmdldENvbXBvbmVudChcIk1hcEJsb2NrXCIpLmRpcmVjdGlvbiA9PSBcInVwXCIpe1xyXG4gICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIGVsc2UgZGlyLnB1c2goXCJ1cFwiKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICBpZihwb2ludEUueSA+PSAwKXtcclxuICAgICAgICAgICAgaWYodGhpcy5tYXBCbG9ja3NXYWxsW3BvaW50RS54XVtwb2ludEUueV0ub3BhY2l0eSA9PSBvcGFjaXR5KXtcclxuICAgICAgICAgICAgICAgIGlmKHR5cGUgPT0gXCJ0dXJuXCIgJiYgdGhpcy5tYXBCbG9ja3NXYWxsW3BvaW50RS54XVtwb2ludEUueV0uZ2V0Q29tcG9uZW50KFwiTWFwQmxvY2tcIikuZGlyZWN0aW9uID09IFwiZG93blwiKXtcclxuICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIGVsc2UgZGlyLnB1c2goXCJkb3duXCIpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmKGRpci5sZW5ndGggPiAyKXtcclxuXHJcbiAgICAgICAgICAgIHJldHVybiBudWxsO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZihkaXIubGVuZ3RoID09IDEpe1xyXG4gICAgICAgICAgICBpZih0eXBlID09IFwid2FsbFwiKVxyXG4gICAgICAgICAgICAgICAgcmV0dXJuIGRpclswXTtcclxuICAgICAgICAgICAgZWxzZSBcclxuICAgICAgICAgICAgICAgIHJldHVybiBudWxsO1xyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIGlmKGRpci5sZW5ndGggPT0gMil7XHJcbiAgICAgICAgICAgIHJldHVybiBkaXJbMF0gKyBkaXJbMV07XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIGNyZWF0ZUNvcm5lck5vZGVzKCkge1xyXG4gICAgICAgIC8vIOWumuS5ieaLkOinkuS9jee9rlxyXG4gICAgICAgIGZvcihsZXQgaT0wOyBpPHRoaXMud2FsbEluZm8ubGVuZ3RoOyBpKyspe1xyXG4gICAgICAgICAgICBsZXQgYmxvY2sgPSB0aGlzLndhbGxJbmZvW2ldO1xyXG4gICAgICAgICAgICBpZihibG9jay5vcGFjaXR5ICE9IDI1MCl7XHJcbiAgICAgICAgICAgICAgICBsZXQgZGlyID0gdGhpcy5nZXRXbGxEaXJhY3Rpb24oXCJ0dXJuXCIsY2MudjIoYmxvY2suZ2V0Q29tcG9uZW50KFwiTWFwQmxvY2tcIikucG9zWCxibG9jay5nZXRDb21wb25lbnQoXCJNYXBCbG9ja1wiKS5wb3NZKSk7XHJcbiAgICAgICAgICAgICAgICBpZihkaXIgIT0gbnVsbCl7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5jcmVhdGVUdXJuKGRpcixibG9jayxibG9jay5nZXRDb21wb25lbnQoXCJNYXBCbG9ja1wiKS5wb3NYLGJsb2NrLmdldENvbXBvbmVudChcIk1hcEJsb2NrXCIpLnBvc1kpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcblxyXG4gICAgICAgIH1cclxuXHJcbiAgICB9XHJcblxyXG4gICAgY3JlYXRlV2FsbChkaXJlY3Rpb24sbm9kZSl7XHJcbiAgICAgICAgbGV0IHdhbGwgPSBudWxsO1xyXG4gICAgICAgIG5vZGUuZ2V0Q29tcG9uZW50KFwiTWFwQmxvY2tcIikuc2V0RGlyYWN0aW9uKGRpcmVjdGlvbik7XHJcbiAgICAgICAgc3dpdGNoKGRpcmVjdGlvbil7XHJcbiAgICAgICAgICAgIGNhc2UgXCJyaWdodFwiOlxyXG4gICAgICAgICAgICAgICAgbm9kZS5vcGFjaXR5ID0gMjUwO1xyXG4gICAgICAgICAgICAgICAgd2FsbCA9IGNjLmluc3RhbnRpYXRlKHRoaXMuV2FsbF9QcmVmYWJbNF0pO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5sZWZ0RG9vcnMucHVzaCh3YWxsKTtcclxuICAgICAgICAgICAgICAgIC8vIHdhbGwucGFyZW50ID0gdGhpcy5ub2RlLmdldENoaWxkQnlOYW1lKFwiV2FsbFwiKTtcclxuICAgICAgICAgICAgICAgIHdhbGwucGFyZW50ID0gdGhpcy5ub2RlO1xyXG4gICAgICAgICAgICAgICAgd2FsbC5zZXRQb3NpdGlvbihjYy52Mihub2RlLngsbm9kZS55KSk7XHJcbiAgICAgICAgICAgICAgICBub2RlLm9wYWNpdHkgPSAyNTA7XHJcbiAgICAgICAgICAgICAgICB3YWxsLmdldENoaWxkQnlOYW1lKFwid2FsbFwiKS5nZXRDb21wb25lbnQoXCJXYWxsXCIpLmluaXQobnVsbCxub2RlLmdldENvbXBvbmVudChcIk1hcEJsb2NrXCIpLnBvc1gsbm9kZS5nZXRDb21wb25lbnQoXCJNYXBCbG9ja1wiKS5wb3NZLGRpcmVjdGlvbik7XHJcbiAgICAgICAgICAgICAgICAvL3dhbGwuZ2V0Q2hpbGRCeU5hbWUoXCJ3YWxsXCIpLmdldENoaWxkQnlOYW1lKFwibnVtXCIpLmdldENvbXBvbmVudChjYy5MYWJlbCkuc3RyaW5nID0gdGhpcy53YWxsTnVtLnRvU3RyaW5nKCk7XHJcbiAgICAgICAgICAgICAgICB0aGlzLnNldERvb3JJbmZvKHdhbGwuZ2V0Q2hpbGRCeU5hbWUoXCJ3YWxsXCIpKTtcclxuICAgICAgICAgICAgICAgIHRoaXMud2FsbE51bSArPSAxO1xyXG4gICAgICAgICAgICAgICAgaWYod2FsbC5nZXRDaGlsZEJ5TmFtZShcIndhbGxcIikuZ2V0Q29tcG9uZW50KFwiV2FsbFwiKS5zcGVjaWFsID09IDIpXHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5vcGVuV2FsbC5wdXNoKHdhbGwpO1xyXG4gICAgICAgICAgICAgICAgZWxzZSBpZih3YWxsLmdldENoaWxkQnlOYW1lKFwid2FsbFwiKS5nZXRDb21wb25lbnQoXCJXYWxsXCIpLnNwZWNpYWwgPT0gMykgXHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5mcmVlemVXYWxsLnB1c2god2FsbCk7XHJcbiAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgIGJyZWFrOyBcclxuICAgICAgICAgICAgY2FzZSBcImxlZnRcIjpcclxuICAgICAgICAgICAgICAgIG5vZGUub3BhY2l0eSA9IDI1MDtcclxuICAgICAgICAgICAgICAgIHdhbGwgPSBjYy5pbnN0YW50aWF0ZSh0aGlzLldhbGxfUHJlZmFiWzNdKTtcclxuICAgICAgICAgICAgICAgIC8vIHdhbGwucGFyZW50ID0gdGhpcy5ub2RlLmdldENoaWxkQnlOYW1lKFwiV2FsbFwiKTtcclxuICAgICAgICAgICAgICAgIHRoaXMucmlnaHREb29ycy5wdXNoKHdhbGwpO1xyXG4gICAgICAgICAgICAgICAgd2FsbC5wYXJlbnQgPSB0aGlzLm5vZGU7XHJcbiAgICAgICAgICAgICAgICB3YWxsLnNldFBvc2l0aW9uKGNjLnYyKG5vZGUueCxub2RlLnkpKTtcclxuICAgICAgICAgICAgICAgIHdhbGwuZ2V0Q2hpbGRCeU5hbWUoXCJ3YWxsXCIpLmdldENvbXBvbmVudChcIldhbGxcIikuaW5pdChudWxsLG5vZGUuZ2V0Q29tcG9uZW50KFwiTWFwQmxvY2tcIikucG9zWCxub2RlLmdldENvbXBvbmVudChcIk1hcEJsb2NrXCIpLnBvc1ksZGlyZWN0aW9uKTtcclxuICAgICAgICAgICAgICAgIHRoaXMuc2V0RG9vckluZm8od2FsbC5nZXRDaGlsZEJ5TmFtZShcIndhbGxcIikpO1xyXG4gICAgICAgICAgICAgICAgLy93YWxsLmdldENoaWxkQnlOYW1lKFwid2FsbFwiKS5nZXRDaGlsZEJ5TmFtZShcIm51bVwiKS5nZXRDb21wb25lbnQoY2MuTGFiZWwpLnN0cmluZyA9IHRoaXMud2FsbE51bS50b1N0cmluZygpO1xyXG4gICAgICAgICAgICAgICAgdGhpcy53YWxsTnVtICs9IDE7XHJcbiAgICAgICAgICAgICAgICBpZih3YWxsLmdldENoaWxkQnlOYW1lKFwid2FsbFwiKS5nZXRDb21wb25lbnQoXCJXYWxsXCIpLnNwZWNpYWwgPT0gMilcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLm9wZW5XYWxsLnB1c2god2FsbCk7XHJcbiAgICAgICAgICAgICAgICBlbHNlIGlmKHdhbGwuZ2V0Q2hpbGRCeU5hbWUoXCJ3YWxsXCIpLmdldENvbXBvbmVudChcIldhbGxcIikuc3BlY2lhbCA9PSAzKSBcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLmZyZWV6ZVdhbGwucHVzaCh3YWxsKTtcclxuICAgICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICBjYXNlIFwidXBcIjpcclxuICAgICAgICAgICAgICAgIG5vZGUub3BhY2l0eSA9IDI1MDtcclxuICAgICAgICAgICAgICAgIHdhbGwgPSBjYy5pbnN0YW50aWF0ZSh0aGlzLldhbGxfUHJlZmFiWzVdKTtcclxuICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgdGhpcy50b3BEb29ycy5wdXNoKHdhbGwpO1xyXG4gICAgICAgICAgICAgICAgLy8gd2FsbC5wYXJlbnQgPSB0aGlzLm5vZGUuZ2V0Q2hpbGRCeU5hbWUoXCJXYWxsXCIpO1xyXG4gICAgICAgICAgICAgICAgd2FsbC5wYXJlbnQgPSB0aGlzLm5vZGU7XHJcbiAgICAgICAgICAgICAgICB3YWxsLnNldFBvc2l0aW9uKGNjLnYyKG5vZGUueCxub2RlLnkpKTtcclxuICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgd2FsbC5nZXRDaGlsZEJ5TmFtZShcIndhbGxcIikuZ2V0Q29tcG9uZW50KFwiV2FsbFwiKS5pbml0KG51bGwsbm9kZS5nZXRDb21wb25lbnQoXCJNYXBCbG9ja1wiKS5wb3NYLG5vZGUuZ2V0Q29tcG9uZW50KFwiTWFwQmxvY2tcIikucG9zWSxkaXJlY3Rpb24pO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5zZXREb29ySW5mbyh3YWxsLmdldENoaWxkQnlOYW1lKFwid2FsbFwiKSk7XHJcbiAgICAgICAgICAgICAgICAvL3dhbGwuZ2V0Q2hpbGRCeU5hbWUoXCJ3YWxsXCIpLmdldENoaWxkQnlOYW1lKFwibnVtXCIpLmdldENvbXBvbmVudChjYy5MYWJlbCkuc3RyaW5nID0gdGhpcy53YWxsTnVtLnRvU3RyaW5nKCk7XHJcbiAgICAgICAgICAgICAgICB0aGlzLndhbGxOdW0gKz0gMTtcclxuICAgICAgICAgICAgICAgIGlmKHdhbGwuZ2V0Q2hpbGRCeU5hbWUoXCJ3YWxsXCIpLmdldENvbXBvbmVudChcIldhbGxcIikuc3BlY2lhbCA9PSAyKVxyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMub3BlbldhbGwucHVzaCh3YWxsKTtcclxuICAgICAgICAgICAgICAgIGVsc2UgaWYod2FsbC5nZXRDaGlsZEJ5TmFtZShcIndhbGxcIikuZ2V0Q29tcG9uZW50KFwiV2FsbFwiKS5zcGVjaWFsID09IDMpIFxyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZnJlZXplV2FsbC5wdXNoKHdhbGwpO1xyXG4gICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgIGNhc2UgXCJkb3duXCI6XHJcbiAgICAgICAgICAgICAgICBub2RlLm9wYWNpdHkgPSAyNTA7XHJcbiAgICAgICAgICAgICAgICB3YWxsID0gY2MuaW5zdGFudGlhdGUodGhpcy5XYWxsX1ByZWZhYlswXSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICB0aGlzLmJvdHRvbURvb3JzLnB1c2god2FsbCk7XHJcbiAgICAgICAgICAgICAgICAvLyB3YWxsLnBhcmVudCA9IHRoaXMubm9kZS5nZXRDaGlsZEJ5TmFtZShcIldhbGxcIik7XHJcbiAgICAgICAgICAgICAgICB3YWxsLnBhcmVudCA9IHRoaXMubm9kZTtcclxuICAgICAgICAgICAgICAgIHdhbGwuc2V0UG9zaXRpb24oY2MudjIobm9kZS54LG5vZGUueSkpO1xyXG4gICAgICAgICAgICAgICAgLy8gdGhpcy5zZXREb29ySW5mbyh3YWxsLmdldENoaWxkQnlOYW1lKFwid2FsbFwiKSk7XHJcbiAgICAgICAgICAgICAgICB3YWxsLmdldENoaWxkQnlOYW1lKFwid2FsbFwiKS5nZXRDb21wb25lbnQoXCJXYWxsXCIpLmluaXQobnVsbCxub2RlLmdldENvbXBvbmVudChcIk1hcEJsb2NrXCIpLnBvc1gsbm9kZS5nZXRDb21wb25lbnQoXCJNYXBCbG9ja1wiKS5wb3NZLGRpcmVjdGlvbik7XHJcbiAgICAgICAgICAgICAgICB0aGlzLnNldERvb3JJbmZvKHdhbGwuZ2V0Q2hpbGRCeU5hbWUoXCJ3YWxsXCIpKTtcclxuICAgICAgICAgICAgICAgIC8vd2FsbC5nZXRDaGlsZEJ5TmFtZShcIndhbGxcIikuZ2V0Q2hpbGRCeU5hbWUoXCJudW1cIikuZ2V0Q29tcG9uZW50KGNjLkxhYmVsKS5zdHJpbmcgPSB0aGlzLndhbGxOdW0udG9TdHJpbmcoKTtcclxuICAgICAgICAgICAgICAgIHRoaXMud2FsbE51bSArPSAxO1xyXG4gICAgICAgICAgICAgICAgaWYod2FsbC5nZXRDaGlsZEJ5TmFtZShcIndhbGxcIikuZ2V0Q29tcG9uZW50KFwiV2FsbFwiKS5zcGVjaWFsID09IDIpXHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5vcGVuV2FsbC5wdXNoKHdhbGwpO1xyXG4gICAgICAgICAgICAgICAgZWxzZSBpZih3YWxsLmdldENoaWxkQnlOYW1lKFwid2FsbFwiKS5nZXRDb21wb25lbnQoXCJXYWxsXCIpLnNwZWNpYWwgPT0gMykgXHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5mcmVlemVXYWxsLnB1c2god2FsbCk7XHJcbiAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgY2FzZSBcInVwcmlnaHRcIiA6IGNhc2UgXCJyaWdodHVwXCI6XHJcbiAgICAgICAgICAgICAgICBub2RlLm9wYWNpdHkgPSAyNDk7XHJcbiAgICAgICAgICAgICAgICB3YWxsID0gY2MuaW5zdGFudGlhdGUodGhpcy5XYWxsX1ByZWZhYls3XSk7XHJcbiAgICAgICAgICAgICAgICAvLyB3YWxsLnBhcmVudCA9IHRoaXMubm9kZS5nZXRDaGlsZEJ5TmFtZShcIldhbGxcIik7XHJcbiAgICAgICAgICAgICAgICB3YWxsLnBhcmVudCA9IHRoaXMubm9kZTtcclxuICAgICAgICAgICAgICAgIHdhbGwuc2V0UG9zaXRpb24oY2MudjIobm9kZS54LG5vZGUueSkpO1xyXG4gICAgICAgICAgICAgICAgd2FsbC5jaGlsZHJlblsxXS5nZXRDb21wb25lbnQoXCJXYWxsXCIpLmluaXQobnVsbCxub2RlLmdldENvbXBvbmVudChcIk1hcEJsb2NrXCIpLnBvc1gsbm9kZS5nZXRDb21wb25lbnQoXCJNYXBCbG9ja1wiKS5wb3NZLGRpcmVjdGlvbik7XHJcbiAgICAgICAgICAgICAgICB3YWxsLmNoaWxkcmVuWzJdLmdldENvbXBvbmVudChcIldhbGxcIikuaW5pdChudWxsLG5vZGUuZ2V0Q29tcG9uZW50KFwiTWFwQmxvY2tcIikucG9zWCxub2RlLmdldENvbXBvbmVudChcIk1hcEJsb2NrXCIpLnBvc1ksZGlyZWN0aW9uKTtcclxuICAgICAgICAgICAgICAgIC8vd2FsbC5jaGlsZHJlblswXS5nZXRDaGlsZEJ5TmFtZShcIm51bVwiKS5nZXRDb21wb25lbnQoY2MuTGFiZWwpLnN0cmluZyA9IHRoaXMud2FsbE51bS50b1N0cmluZygpO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5zZXREb29ySW5mbyh3YWxsLmNoaWxkcmVuWzBdKTtcclxuICAgICAgICAgICAgICAgIHRoaXMud2FsbE51bSArPSAxO1xyXG4gICAgICAgICAgICAgICAgLy93YWxsLmNoaWxkcmVuWzFdLmdldENoaWxkQnlOYW1lKFwibnVtXCIpLmdldENvbXBvbmVudChjYy5MYWJlbCkuc3RyaW5nID0gdGhpcy53YWxsTnVtLnRvU3RyaW5nKCk7XHJcbiAgICAgICAgICAgICAgICB0aGlzLnNldERvb3JJbmZvKHdhbGwuY2hpbGRyZW5bMV0pO1xyXG4gICAgICAgICAgICAgICAgdGhpcy53YWxsTnVtICs9IDE7XHJcblxyXG4gICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgIGNhc2UgXCJ1cGxlZnRcIiA6IGNhc2UgXCJsZWZ0dXBcIjpcclxuICAgICAgICAgICAgICAgIG5vZGUub3BhY2l0eSA9IDI0OTtcclxuICAgICAgICAgICAgICAgIHdhbGwgPSBjYy5pbnN0YW50aWF0ZSh0aGlzLldhbGxfUHJlZmFiWzZdKTtcclxuICAgICAgICAgICAgICAgIC8vIHdhbGwucGFyZW50ID0gdGhpcy5ub2RlLmdldENoaWxkQnlOYW1lKFwiV2FsbFwiKTtcclxuICAgICAgICAgICAgICAgIHdhbGwucGFyZW50ID0gdGhpcy5ub2RlO1xyXG4gICAgICAgICAgICAgICAgd2FsbC5zZXRQb3NpdGlvbihjYy52Mihub2RlLngsbm9kZS55KSk7XHJcbiAgICAgICAgICAgICAgICB3YWxsLmNoaWxkcmVuWzFdLmdldENvbXBvbmVudChcIldhbGxcIikuaW5pdChudWxsLG5vZGUuZ2V0Q29tcG9uZW50KFwiTWFwQmxvY2tcIikucG9zWCxub2RlLmdldENvbXBvbmVudChcIk1hcEJsb2NrXCIpLnBvc1ksZGlyZWN0aW9uKTtcclxuICAgICAgICAgICAgICAgIHdhbGwuY2hpbGRyZW5bMl0uZ2V0Q29tcG9uZW50KFwiV2FsbFwiKS5pbml0KG51bGwsbm9kZS5nZXRDb21wb25lbnQoXCJNYXBCbG9ja1wiKS5wb3NYLG5vZGUuZ2V0Q29tcG9uZW50KFwiTWFwQmxvY2tcIikucG9zWSxkaXJlY3Rpb24pO1xyXG4gICAgICAgICAgICAgICAgLy93YWxsLmNoaWxkcmVuWzBdLmdldENoaWxkQnlOYW1lKFwibnVtXCIpLmdldENvbXBvbmVudChjYy5MYWJlbCkuc3RyaW5nID0gdGhpcy53YWxsTnVtLnRvU3RyaW5nKCk7XHJcbiAgICAgICAgICAgICAgICB0aGlzLnNldERvb3JJbmZvKHdhbGwuY2hpbGRyZW5bMF0pO1xyXG4gICAgICAgICAgICAgICAgdGhpcy53YWxsTnVtICs9IDE7XHJcbiAgICAgICAgICAgICAgICAvL3dhbGwuY2hpbGRyZW5bMV0uZ2V0Q2hpbGRCeU5hbWUoXCJudW1cIikuZ2V0Q29tcG9uZW50KGNjLkxhYmVsKS5zdHJpbmcgPSB0aGlzLndhbGxOdW0udG9TdHJpbmcoKTtcclxuICAgICAgICAgICAgICAgIHRoaXMuc2V0RG9vckluZm8od2FsbC5jaGlsZHJlblsxXSk7XHJcbiAgICAgICAgICAgICAgICB0aGlzLndhbGxOdW0gKz0gMTtcclxuXHJcbiAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgY2FzZSBcImRvd25yaWdodFwiIDogY2FzZSBcInJpZ2h0ZG93blwiOlxyXG4gICAgICAgICAgICAgICAgbm9kZS5vcGFjaXR5ID0gMjQ5O1xyXG4gICAgICAgICAgICAgICAgd2FsbCA9IGNjLmluc3RhbnRpYXRlKHRoaXMuV2FsbF9QcmVmYWJbMl0pO1xyXG4gICAgICAgICAgICAgICAgLy8gd2FsbC5wYXJlbnQgPSB0aGlzLm5vZGUuZ2V0Q2hpbGRCeU5hbWUoXCJXYWxsXCIpO1xyXG4gICAgICAgICAgICAgICAgd2FsbC5wYXJlbnQgPSB0aGlzLm5vZGU7XHJcbiAgICAgICAgICAgICAgICB3YWxsLnNldFBvc2l0aW9uKGNjLnYyKG5vZGUueCxub2RlLnkpKTtcclxuICAgICAgICAgICAgICAgIHdhbGwuY2hpbGRyZW5bMV0uZ2V0Q29tcG9uZW50KFwiV2FsbFwiKS5pbml0KG51bGwsbm9kZS5nZXRDb21wb25lbnQoXCJNYXBCbG9ja1wiKS5wb3NYLG5vZGUuZ2V0Q29tcG9uZW50KFwiTWFwQmxvY2tcIikucG9zWSxkaXJlY3Rpb24pO1xyXG4gICAgICAgICAgICAgICAgd2FsbC5jaGlsZHJlblsyXS5nZXRDb21wb25lbnQoXCJXYWxsXCIpLmluaXQobnVsbCxub2RlLmdldENvbXBvbmVudChcIk1hcEJsb2NrXCIpLnBvc1gsbm9kZS5nZXRDb21wb25lbnQoXCJNYXBCbG9ja1wiKS5wb3NZLGRpcmVjdGlvbik7XHJcbiAgICAgICAgICAgICAgICAvL3dhbGwuY2hpbGRyZW5bMF0uZ2V0Q2hpbGRCeU5hbWUoXCJudW1cIikuZ2V0Q29tcG9uZW50KGNjLkxhYmVsKS5zdHJpbmcgPSB0aGlzLndhbGxOdW0udG9TdHJpbmcoKTtcclxuICAgICAgICAgICAgICAgIHRoaXMuc2V0RG9vckluZm8od2FsbC5jaGlsZHJlblswXSk7XHJcbiAgICAgICAgICAgICAgICB0aGlzLndhbGxOdW0gKz0gMTtcclxuICAgICAgICAgICAgICAgIC8vd2FsbC5jaGlsZHJlblsxXS5nZXRDaGlsZEJ5TmFtZShcIm51bVwiKS5nZXRDb21wb25lbnQoY2MuTGFiZWwpLnN0cmluZyA9IHRoaXMud2FsbE51bS50b1N0cmluZygpO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5zZXREb29ySW5mbyh3YWxsLmNoaWxkcmVuWzFdKTtcclxuICAgICAgICAgICAgICAgIHRoaXMud2FsbE51bSArPSAxO1xyXG5cclxuICAgICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICBjYXNlIFwiZG93bmxlZnRcIiA6IGNhc2UgXCJsZWZ0ZG93blwiOlxyXG4gICAgICAgICAgICAgICAgbm9kZS5vcGFjaXR5ID0gMjQ5O1xyXG4gICAgICAgICAgICAgICAgd2FsbCA9IGNjLmluc3RhbnRpYXRlKHRoaXMuV2FsbF9QcmVmYWJbMV0pO1xyXG4gICAgICAgICAgICAgICAgLy8gd2FsbC5wYXJlbnQgPSB0aGlzLm5vZGUuZ2V0Q2hpbGRCeU5hbWUoXCJXYWxsXCIpO1xyXG4gICAgICAgICAgICAgICAgd2FsbC5wYXJlbnQgPSB0aGlzLm5vZGU7XHJcbiAgICAgICAgICAgICAgICB3YWxsLnNldFBvc2l0aW9uKGNjLnYyKG5vZGUueCxub2RlLnkpKTtcclxuICAgICAgICAgICAgICAgIHdhbGwuY2hpbGRyZW5bMV0uZ2V0Q29tcG9uZW50KFwiV2FsbFwiKS5pbml0KG51bGwsbm9kZS5nZXRDb21wb25lbnQoXCJNYXBCbG9ja1wiKS5wb3NYLG5vZGUuZ2V0Q29tcG9uZW50KFwiTWFwQmxvY2tcIikucG9zWSxkaXJlY3Rpb24pO1xyXG4gICAgICAgICAgICAgICAgd2FsbC5jaGlsZHJlblsyXS5nZXRDb21wb25lbnQoXCJXYWxsXCIpLmluaXQobnVsbCxub2RlLmdldENvbXBvbmVudChcIk1hcEJsb2NrXCIpLnBvc1gsbm9kZS5nZXRDb21wb25lbnQoXCJNYXBCbG9ja1wiKS5wb3NZLGRpcmVjdGlvbik7XHJcbiAgICAgICAgICAgICAgICAvL3dhbGwuY2hpbGRyZW5bMF0uZ2V0Q2hpbGRCeU5hbWUoXCJudW1cIikuZ2V0Q29tcG9uZW50KGNjLkxhYmVsKS5zdHJpbmcgPSB0aGlzLndhbGxOdW0udG9TdHJpbmcoKTtcclxuICAgICAgICAgICAgICAgIHRoaXMuc2V0RG9vckluZm8od2FsbC5jaGlsZHJlblswXSk7XHJcbiAgICAgICAgICAgICAgICB0aGlzLndhbGxOdW0gKz0gMTtcclxuICAgICAgICAgICAgICAgIC8vd2FsbC5jaGlsZHJlblsxXS5nZXRDaGlsZEJ5TmFtZShcIm51bVwiKS5nZXRDb21wb25lbnQoY2MuTGFiZWwpLnN0cmluZyA9IHRoaXMud2FsbE51bS50b1N0cmluZygpO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5zZXREb29ySW5mbyh3YWxsLmNoaWxkcmVuWzFdKTtcclxuICAgICAgICAgICAgICAgIHRoaXMud2FsbE51bSArPSAxO1xyXG5cclxuICAgICAgICAgICAgICAgIGJyZWFrO1xyXG5cclxuICAgICAgICB9XHJcblxyXG4gICAgXHJcbiAgICAgICAgLy8gaWYod2FsbFR1cm4pe1xyXG4gICAgICAgIC8vICAgICB3YWxsVHVybi5nZXRDb21wb25lbnQoXCJ3YWxsVHVuclwiKS5pbml0KHdhbGwpO1xyXG4gICAgICAgIC8vIH1cclxuICAgIH1cclxuXHJcbiAgICBzZXREb29ySW5mbyh3YWxsKXtcclxuICAgICAgICBsZXQgZG9vckluZm8gPSBjYy5meC5HYW1lQ29uZmlnLldBTExfSU5GT1swXTtcclxuXHJcbiAgICAgICAgaWYoZG9vckluZm8pe1xyXG4gICAgICAgICAgICBmb3IobGV0IGogPSAwOyBqIDwgZG9vckluZm8ubGVuZ3RoOyBqKyspe1xyXG4gICAgICAgICAgICAgICAgaWYoZG9vckluZm9bal0ubnVtID09IHRoaXMud2FsbE51bSl7XHJcbiAgICAgICAgICAgICAgICAgICAgd2FsbC5nZXRDb21wb25lbnQoXCJXYWxsXCIpLmluaXQoZG9vckluZm9bal0sbnVsbCxudWxsLG51bGwpO1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMud2FsbEFycmF5LnB1c2god2FsbC5wYXJlbnQpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9IFxyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBjcmVhdGVUdXJuKGRpcmVjdGlvbixub2RlLHBvc1gscG9zWSl7XHJcbiAgICAgICAgbGV0IHdhbGwgPSBudWxsO1xyXG4gICAgICAgIHdhbGwgPSBjYy5pbnN0YW50aWF0ZSh0aGlzLndhbGxUdXJuUHJlZmFiKTtcclxuICAgICAgICB3YWxsLnBhcmVudCA9IHRoaXMubm9kZTtcclxuICAgICAgICB3YWxsLnNldFBvc2l0aW9uKGNjLnYyKG5vZGUueCxub2RlLnkpKTtcclxuICAgICAgICBzd2l0Y2goZGlyZWN0aW9uKXtcclxuICAgICAgICAgICAgY2FzZSBcInVwcmlnaHRcIiA6IGNhc2UgXCJyaWdodHVwXCI6XHJcbiAgICAgICAgICAgICAgICB3YWxsLmFuZ2xlID0gMDtcclxuICAgICAgICAgICAgICAgIHdhbGwuZ2V0Q2hpbGRCeU5hbWUoXCJpY29uXCIpLmFuZ2xlID0gMDtcclxuICAgICBcclxuICAgICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICBjYXNlIFwidXBsZWZ0XCIgOiBjYXNlIFwibGVmdHVwXCI6XHJcbiAgICAgICAgICAgICAgICB3YWxsLmFuZ2xlID0gOTA7XHJcbiAgICAgICAgICAgICAgICB3YWxsLmdldENoaWxkQnlOYW1lKFwiaWNvblwiKS5hbmdsZSA9IC05MDtcclxuICAgICAgICAgICAgICAgIHdhbGwuZ2V0Q2hpbGRCeU5hbWUoXCJpY29uXCIpLnkgKz0gNTtcclxuICAgICAgICAgICAgICAgIHdhbGwuZ2V0Q2hpbGRCeU5hbWUoXCJpY29uXCIpLnggLT0gMS4zO1xyXG4gICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgIGNhc2UgXCJkb3ducmlnaHRcIiA6IGNhc2UgXCJyaWdodGRvd25cIjpcclxuICAgICAgICAgICAgICAgIHdhbGwuYW5nbGUgPSAyNzA7XHJcbiAgICAgICAgICAgICAgICB3YWxsLmdldENoaWxkQnlOYW1lKFwiaWNvblwiKS5hbmdsZSA9IC0yNzA7XHJcbiAgICAgICAgICAgICAgICB3YWxsLmdldENoaWxkQnlOYW1lKFwiaWNvblwiKS54ICs9IDIuNTtcclxuICAgICAgICAgICAgICAgIHdhbGwuZ2V0Q2hpbGRCeU5hbWUoXCJpY29uXCIpLnkgKz0gMTtcclxuICAgICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICBjYXNlIFwiZG93bmxlZnRcIiA6IGNhc2UgXCJsZWZ0ZG93blwiOlxyXG4gICAgICAgICAgICAgICAgd2FsbC5hbmdsZSA9IDE4MDtcclxuICAgICAgICAgICAgICAgIHdhbGwuZ2V0Q2hpbGRCeU5hbWUoXCJpY29uXCIpLmFuZ2xlID0gLTE4MDtcclxuICAgICAgICAgICAgICAgIHdhbGwuZ2V0Q2hpbGRCeU5hbWUoXCJpY29uXCIpLnggKz0gNC41O1xyXG4gICAgICAgICAgICAgICAgd2FsbC5nZXRDaGlsZEJ5TmFtZShcImljb25cIikueSArPSAzLjI7XHJcbiAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIC8vIGlmKGRpcmVjdGlvbiA9PSBcInJpZ2h0ZG93blwiIHx8IGRpcmVjdGlvbiA9PSBcImRvd25yaWdodFwiKSB7XHJcbiAgICAgICAgLy8gICAgIHdhbGwuekluZGV4ID0gNTAgKyBwb3NYIC0gcG9zWSozO1xyXG4gICAgICAgIC8vIH1cclxuICAgICAgICAvLyBlbHNlIFxyXG4gICAgICAgIC8vICAgICB3YWxsLnpJbmRleCA9IDUwICsgcG9zWCAtIHBvc1kqMztcclxuXHJcbiAgICAgICAgaWYoZGlyZWN0aW9uID09IFwidXBcIiB8fCBkaXJlY3Rpb24gPT0gXCJsZWZ0dXBcIiB8fCBkaXJlY3Rpb24gPT0gXCJ1cGxlZnRcIlxyXG4gICAgICAgICl7XHJcbiAgICAgICAgICAgIHdhbGwuekluZGV4ID0gMTAwICsgcG9zWCAtIHBvc1kqMztcclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSBpZihkaXJlY3Rpb24gPT0gXCJyaWdodHVwXCIgfHwgZGlyZWN0aW9uID09IFwidXByaWdodFwiIHx8IGRpcmVjdGlvbiA9PSBcInJpZ2h0ZG93blwiIHx8IGRpcmVjdGlvbiA9PSBcImRvd25yaWdodFwiIHx8IGRpcmVjdGlvbiA9PSBcImRvd25sZWZ0XCIpe1xyXG4gICAgICAgICAgICB3YWxsLnpJbmRleCA9IDMwICsgcG9zWCAtIHBvc1kqMztcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIGVsc2UgaWYoIGRpcmVjdGlvbiA9PSBcImxlZnRcIiB8fCBkaXJlY3Rpb24gPT0gXCJsZWZ0ZG93blwiKXtcclxuICAgICAgICAgICAgd2FsbC56SW5kZXggPSA3MCArIHBvc1ggLSBwb3NZKjM7IFxyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIHdhbGwuekluZGV4ID0gNzAgKyBwb3NYIC0gcG9zWSozO1xyXG4gICAgICAgIFxyXG4gICAgICAgIC8vIHdhbGwuZ2V0Q2hpbGRCeU5hbWUoXCJudW1cIikuYW5nbGUgPSAtd2FsbC5hbmdsZTtcclxuICAgICAgICAvL3dhbGwuZ2V0Q2hpbGRCeU5hbWUoXCJudW1cIikuZ2V0Q29tcG9uZW50KGNjLkxhYmVsKS5zdHJpbmcgPSBkaXJlY3Rpb247XHJcbiAgICAgICAgLy93YWxsLmdldENoaWxkQnlOYW1lKFwibnVtXCIpLmdldENvbXBvbmVudChjYy5MYWJlbCkuc3RyaW5nID0gd2FsbC56SW5kZXgrIFwiXCI7XHJcbiAgICAgICAgLy8gY29uc29sZS5sb2cocG9zWCxwb3NZLHdhbGwuekluZGV4KTtcclxuICAgICAgICAvLyB0aGlzLndhbGxOdW0gKz0gIDE7XHJcbiAgICAgICAgLy8gd2FsbC5nZXRDaGlsZEJ5TmFtZShcIm51bVwiKS5nZXRDb21wb25lbnQoY2MuTGFiZWwpLnN0cmluZyA9IHRoaXMud2FsbE51bSArIFwiXCI7XHJcbiAgICB9XHJcblxyXG4gICAgLy/lnLDlm77lupXlnZfnvLrlj6PliKTmlq1cclxuICAgIG1hcEdhcChwb2ludCxnYXApe1xyXG4gICAgICAgIGZvcihsZXQgaT0wOyBpPGdhcC5sZW5ndGg7IGkrKyl7XHJcbiAgICAgICAgICAgIGlmKHBvaW50LnggPT0gZ2FwW2ldLnggJiYgcG9pbnQueSA9PSBnYXBbaV0ueSl7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICAgICAgICAgIH0gXHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgfVxyXG5cclxuICAgIC8v5Y2H6ZmN5Zyw5Z2X5Yik5patXHJcbiAgICBtYXBSaXNlRmFsbChwb2ludCxyaXNlZmFsbCxibG9jayl7XHJcbiAgICAgICAgZm9yKGxldCBpPTA7IGk8cmlzZWZhbGwubGVuZ3RoOyBpKyspe1xyXG4gICAgICAgICAgICBpZihwb2ludC54ID09IHJpc2VmYWxsW2ldLnBvcy54ICYmIHBvaW50LnkgPT0gcmlzZWZhbGxbaV0ucG9zLnkpe1xyXG4gICAgICAgICAgICAgICAgYmxvY2suZ2V0Q2hpbGRCeU5hbWUoXCJyaXNlZmFsbFwiKS5hY3RpdmUgPSB0cnVlO1xyXG4gICAgICAgICAgICAgICAgYmxvY2suZ2V0Q2hpbGRCeU5hbWUoJ3Jpc2VmYWxsJykuZ2V0Q2hpbGRCeU5hbWUoXCJjb2xvclwiKS5nZXRDb21wb25lbnQoY2MuTGFiZWwpLnN0cmluZyA9IHJpc2VmYWxsW2ldLmNvbG9yK1wiXCI7XHJcbiAgICAgICAgICAgICAgICBibG9jay5nZXRDaGlsZEJ5TmFtZSgncmlzZWZhbGwnKS5hZGRDb21wb25lbnQoY2MuQm94Q29sbGlkZXIpO1xyXG4gICAgICAgICAgICAgICAgYmxvY2suZ2V0Q2hpbGRCeU5hbWUoJ3Jpc2VmYWxsJykuZ2V0Q29tcG9uZW50KGNjLkJveENvbGxpZGVyKS5zaXplID0gY2Muc2l6ZSgxMTAsMTEwKTtcclxuICAgICAgICAgICAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgIH1cclxuICAgIC8v5Y2H6ZmN5Zyw5Z2XXHJcbiAgICBjaGFuZ2VSaXNlRmFsbChjb2xvcixkb3duKXtcclxuICAgICAgICBjb2xvciA9IGNvbG9yLnRvU3RyaW5nKCk7XHJcbiAgICAgICAgZm9yKGxldCBpPTA7IGk8dGhpcy5yaXNlRmFsbEJsY29rLmxlbmd0aDsgaSsrKXtcclxuICAgICAgICAgICAgaWYoY29sb3IgPT0gdGhpcy5yaXNlRmFsbEJsY29rW2ldLmdldENoaWxkQnlOYW1lKFwicmlzZWZhbGxcIikuZ2V0Q2hpbGRCeU5hbWUoXCJjb2xvclwiKS5nZXRDb21wb25lbnQoY2MuTGFiZWwpLnN0cmluZyl7XHJcbiAgICAgICAgICAgICAgICBpZihkb3duKXtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLnJpc2VGYWxsQmxjb2tbaV0uZ2V0Q2hpbGRCeU5hbWUoXCJyaXNlZmFsbFwiKS5hY3RpdmUgPSBmYWxzZTtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLnJpc2VGYWxsQmxjb2tbaV0uZ2V0Q2hpbGRCeU5hbWUoJ3Jpc2VmYWxsJykucmVtb3ZlQ29tcG9uZW50KGNjLkJveENvbGxpZGVyKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIGVsc2V7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5yaXNlRmFsbEJsY29rW2ldLmdldENoaWxkQnlOYW1lKFwicmlzZWZhbGxcIikuYWN0aXZlID0gdHJ1ZTtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLnJpc2VGYWxsQmxjb2tbaV0uZ2V0Q2hpbGRCeU5hbWUoJ3Jpc2VmYWxsJykuYWRkQ29tcG9uZW50KGNjLkJveENvbGxpZGVyKTtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLnJpc2VGYWxsQmxjb2tbaV0uZ2V0Q2hpbGRCeU5hbWUoJ3Jpc2VmYWxsJykuZ2V0Q29tcG9uZW50KGNjLkJveENvbGxpZGVyKS5zaXplID0gY2Muc2l6ZSgxMTAsMTEwKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG5cclxuXHJcbiAgICAvL+afpeivouWPoOWKoOW/q2lkXHJcbiAgICBmb3VuZERvd25CbG9jayhpZCl7XHJcbiAgICAgICAgZm9yKGxldCBpPTA7IGk8dGhpcy5ibG9ja3MubGVuZ3RoOyBpKyspe1xyXG4gICAgICAgICAgICBpZih0aGlzLmJsb2Nrc1tpXS5nZXRDb21wb25lbnQoXCJCbG9ja1wiKS5ibG9ja0lkID09IGlkKXtcclxuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmJsb2Nrc1tpXTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gbnVsbDtcclxuICAgIH1cclxuXHJcbiAgICAvL+WIoOmZpOWdl1xyXG4gICAgcmVtb3ZlQmxvY2soaWQpe1xyXG4gICAgICAgIGZvcihsZXQgaT0wOyBpPHRoaXMuYmxvY2tzLmxlbmd0aDsgaSsrKXtcclxuICAgICAgICAgICAgaWYodGhpcy5ibG9ja3NbaV0uZ2V0Q29tcG9uZW50KFwiQmxvY2tcIikuYmxvY2tJZCA9PSBpZCl7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5ibG9ja3NbaV07XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIG51bGw7XHJcbiAgICB9XHJcblxyXG4gICAgZ2V0TWluQW5kTWF4KGJsb2NrKXtcclxuICAgICAgICBsZXQgd2lkdGggPSBNYXRoLmZsb29yKGJsb2NrLndpZHRoIC8gMTIwKTtcclxuICAgICAgICBsZXQgaGVpZ2h0ID0gTWF0aC5mbG9vcihibG9jay5oZWlnaHQgLyAxMjApO1xyXG5cclxuICAgICAgICBsZXQgbWluWCA9IHdpZHRoO1xyXG4gICAgICAgIGxldCBtYXhYID0gdGhpcy5tYXBXaWR0aC0yO1xyXG4gICAgICAgIGxldCBtaW5ZID0gMTtcclxuICAgICAgICBsZXQgbWF4WSA9IHRoaXMubWFwSGVpZ2h0LTIgLSBoZWlnaHQgKyAxO1xyXG5cclxuICAgICAgICBpZihibG9jay5uYW1lID09IFwiYmxvY2sxMFwiKXtcclxuICAgICAgICAgICAgbWluWCA9IHdpZHRoLTE7XHJcbiAgICAgICAgICAgIGlmKHRoaXMubWFwV2lkdGggPiAzKSBtYXhYID0gbWF4WC0xO1xyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIGlmKGJsb2NrLm5hbWUgPT0gXCJibG9jazExXCIpe1xyXG4gICAgICAgICAgICBtaW5YID0gd2lkdGgtMjtcclxuICAgICAgICAgICAgaWYodGhpcy5tYXBXaWR0aCA+IDMpIG1heFggPSBtYXhYLTI7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBlbHNlIGlmKGJsb2NrLm5hbWUgPT0gXCJibG9jazE0XCIpe1xyXG4gICAgICAgICAgICBtaW5YID0gd2lkdGgtMTtcclxuICAgICAgICAgICAgbWF4WCA9IG1heFgtMTtcclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSBpZihibG9jay5uYW1lID09IFwiYmxvY2sxNlwiKXtcclxuICAgICAgICAgICAgbWluWCA9IHdpZHRoLTE7XHJcbiAgICAgICAgICAgIG1heFggPSBtYXhYLTE7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2UgaWYoYmxvY2submFtZSA9PSBcImJsb2NrMThcIil7XHJcbiAgICAgICAgICAgIG1pblggPSB3aWR0aC0xO1xyXG4gICAgICAgICAgICBtYXhYID0gbWF4WC0xO1xyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIGlmKGJsb2NrLm5hbWUgPT0gXCJibG9jazIxXCIpe1xyXG4gICAgICAgICAgICBtaW5YID0gd2lkdGgtMTtcclxuICAgICAgICAgICAgbWF4WCA9IG1heFgtMTtcclxuICAgICAgICB9XHJcbiAgICAgXHJcbiAgICAgICAgcmV0dXJuIHttaW5YOm1pblgsbWF4WDptYXhYLG1pblk6bWluWSxtYXhZOm1heFl9O1xyXG4gICAgfVxyXG5cclxuICAgIC8v5qOA5rWL6JC954K55piv5ZCm5Y+v5Lul5raI6ZmkXHJcbiAgICBjaGVja1Bhc3Mobm9kZSxibG9ja3MpIHtcclxuICAgICAgICBsZXQgbWluQW5kTWF4ID0gdGhpcy5nZXRNaW5BbmRNYXgobm9kZSk7XHJcbiAgICAgICAgbGV0IG1pblggPSBtaW5BbmRNYXgubWluWDtcclxuICAgICAgICBsZXQgbWF4WCA9IG1pbkFuZE1heC5tYXhYO1xyXG4gICAgICAgIGxldCBtaW5ZID0gbWluQW5kTWF4Lm1pblk7XHJcbiAgICAgICAgbGV0IG1heFkgPSBtaW5BbmRNYXgubWF4WTtcclxuXHJcbiAgICAgICAgbGV0IG5vZGVQb3MgPSBjYy52Mihub2RlLmdldENvbXBvbmVudChcIkJsb2NrXCIpLnBvc1gsIG5vZGUuZ2V0Q29tcG9uZW50KFwiQmxvY2tcIikucG9zWSk7XHJcblxyXG4gICAgICAgIC8vIOiOt+WPluWcsOWbvui+ueeVjOS/oeaBr1xyXG5cclxuICAgICAgICBsZXQgYWxsQmxvY2tzID0gW107XHJcbiAgICAgICAgZm9yKGxldCBpPTA7aTxibG9ja3MubGVuZ3RoO2krKyl7XHJcbiAgICAgICAgICAgIGFsbEJsb2Nrcy5wdXNoKGNjLnYyKG5vZGVQb3MueCArIGJsb2Nrc1tpXS54LCBub2RlUG9zLnkgKyBibG9ja3NbaV0ueSkpO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgLy8gY29uc3QgZGF0ZTEgPSBuZXcgRGF0ZSgpLmdldFRpbWUoKTtcclxuICAgICAgICAvLyBjb25zb2xlLmxvZyhcIuWwhuWwj+Wdl+aUvuWFpeaVsOe7hOeahOaXtumXtFwiLGRhdGUxKTtcclxuICAgXHJcbiAgICAgICAgbGV0IGpnID0gLTE7XHJcbiAgICAgICAgbGV0IHB6ID0gMDtcclxuICAgICAgICAvLyDojrflj5bmiYDmnInlopnlo4HoioLngrlcclxuICAgICAgICAvLyBsZXQgd2FsbCA9IHRoaXMubm9kZTtcclxuICAgICAgICBsZXQgZGlyZWN0aW9uID0gdGhpcy5jaGVja0RpcmFjdGlvbihhbGxCbG9ja3MsbWF4WCxtYXhZKTtcclxuXHJcbiAgICAgICAgLy8g5Yik5pat5pa55Z2X5piv5ZCm5Zyo5Zyw5Zu+6L6557yYXHJcbiAgICAgICAgaWYgKG5vZGVQb3MueCA8PSBtaW5YIHx8IGRpcmVjdGlvblswXSA9PSB0cnVlKSB7XHJcbiAgICAgICAgICAgIC8vIGNvbnN0IGRhdGUyID0gbmV3IERhdGUoKS5nZXRUaW1lKCk7XHJcbiAgICAgICAgICAgIC8vIGNvbnNvbGUubG9nKFwi56Kw5Yiw5bem6L6557yYXCIsZGF0ZTIpO1xyXG4gICAgICAgICAgICBweiArPSAxO1xyXG4gICAgICAgICAgICBsZXQgbGVmdFdhbGxzID0gW107XHJcbiAgICAgICAgICAgIGZvcihsZXQgaSA9IDA7IGkgPCB0aGlzLmxlZnREb29ycy5sZW5ndGg7IGkrKyl7XHJcbiAgICAgICAgICAgICAgICBsZXQgd2FsbExlZnQgPSB0aGlzLmxlZnREb29yc1tpXS5nZXRDaGlsZEJ5TmFtZShcIndhbGxcIik7XHJcbiAgICAgICAgICAgICAgICBsZXQgd2FsbFBvcyA9IGNjLnYyKHdhbGxMZWZ0LmdldENvbXBvbmVudChcIldhbGxcIikucG9zWCx3YWxsTGVmdC5nZXRDb21wb25lbnQoXCJXYWxsXCIpLnBvc1kpO1xyXG4gICAgICAgICAgICAgICAgZm9yKGxldCBpID0gMDsgaSA8IGFsbEJsb2Nrcy5sZW5ndGg7IGkrKyl7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYoYWxsQmxvY2tzW2ldLnkgPT0gd2FsbFBvcy55ICYmIGFsbEJsb2Nrc1tpXS54ID4gd2FsbFBvcy54KXtcclxuICAgICAgICAgICAgICAgICAgICAgICAgLy8gY29uc29sZS5sb2coXCJpZDpcIix3YWxsLmdldENoaWxkQnlOYW1lKFwibnVtXCIpLmdldENvbXBvbmVudChjYy5MYWJlbCkuc3RyaW5nKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgbGVmdFdhbGxzLnB1c2god2FsbExlZnQpO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAvLyBjb25zb2xlLmxvZyhcIuW+l+WIsOW3pui+ueWimeWjgeaVsOe7hFwiLGRhdGU2KTtcclxuICAgICAgICAgICAgaWYobGVmdFdhbGxzLmxlbmd0aCAhPSAwKXtcclxuICAgICAgICAgICAgICAgIGxldCByZXN1bHQgPSB0aGlzLmRldGVjdGluZ0Jsb2NrKFwibGVmdFwiLG5vZGUuZ2V0Q29tcG9uZW50KFwiQmxvY2tcIikucG9zWCxub2RlLmdldENvbXBvbmVudChcIkJsb2NrXCIpLnBvc1ksYWxsQmxvY2tzKTtcclxuICAgICAgICAgICAgICAgIGlmKHJlc3VsdCA9PSB0cnVlKSByZXN1bHQgPSB0aGlzLnBhc3NXYWxsKHJlc3VsdCxsZWZ0V2FsbHMsbm9kZSk7XHJcbiAgICAgICAgICAgICAgICAvLyBjb25zb2xlLmxvZyhcIueisOWIsOW3pui+uee8mOe7k+aenDpcIixqZyk7XHJcbiAgICAgICAgICAgICAgICBpZihyZXN1bHQpe1xyXG4gICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLmJsb2NrTnVtIC09IDE7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5zcGVjaWFsX1RyZWF0bWVudChub2RlKTtcclxuICAgICAgICAgICAgICAgICAgICBqZyA9IDI7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5jcmVhdGVQYXJ0aWNsZShub2RlLGpnKTtcclxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gamc7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKG5vZGVQb3MueCA+PSBtYXhYIHx8IGRpcmVjdGlvblsxXSA9PSB0cnVlKSB7XHJcbiAgICAgICAgICAgIC8vIGNvbnN0IGRhdGUzID0gbmV3IERhdGUoKS5nZXRUaW1lKCk7XHJcbiAgICAgICAgICAgIC8vIGNvbnNvbGUubG9nKFwi56Kw5Yiw5Y+z6L6557yYXCIsZGF0ZTMpO1xyXG4gICAgICAgICAgICBweiArPSAxO1xyXG4gICAgICAgICAgICBsZXQgcmlnaHRXYWxscyA9IFtdO1xyXG4gICAgICAgICAgICBmb3IobGV0IGkgPSAwOyBpIDwgdGhpcy5yaWdodERvb3JzLmxlbmd0aDsgaSsrKXtcclxuICAgICAgICAgICAgICAgIGxldCB3YWxsUmlnaHQgPSB0aGlzLnJpZ2h0RG9vcnNbaV0uZ2V0Q2hpbGRCeU5hbWUoXCJ3YWxsXCIpO1xyXG4gICAgICAgICAgICAgICAgbGV0IHdhbGxQb3MgPSBjYy52Mih3YWxsUmlnaHQuZ2V0Q29tcG9uZW50KFwiV2FsbFwiKS5wb3NYLHdhbGxSaWdodC5nZXRDb21wb25lbnQoXCJXYWxsXCIpLnBvc1kpO1xyXG4gICAgICAgICAgICAgICAgZm9yKGxldCBpID0gMDsgaSA8IGFsbEJsb2Nrcy5sZW5ndGg7IGkrKyl7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYoYWxsQmxvY2tzW2ldLnkgPT0gd2FsbFBvcy55ICYmIGFsbEJsb2Nrc1tpXS54IDwgd2FsbFBvcy54KXtcclxuICAgICAgICAgICAgICAgICAgICAgICAgLy8gY29uc29sZS5sb2coXCJpZDpcIix3YWxsLmdldENoaWxkQnlOYW1lKFwibnVtXCIpLmdldENvbXBvbmVudChjYy5MYWJlbCkuc3RyaW5nKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgcmlnaHRXYWxscy5wdXNoKHdhbGxSaWdodCk7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICBpZihyaWdodFdhbGxzLmxlbmd0aCAhPSAwKXtcclxuICAgICAgICAgICAgICAgIGxldCByZXN1bHQgPSB0aGlzLmRldGVjdGluZ0Jsb2NrKFwicmlnaHRcIixub2RlLmdldENvbXBvbmVudChcIkJsb2NrXCIpLnBvc1gsbm9kZS5nZXRDb21wb25lbnQoXCJCbG9ja1wiKS5wb3NZLGFsbEJsb2Nrcyk7XHJcbiAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgaWYocmVzdWx0ID09IHRydWUpIHJlc3VsdCA9IHRoaXMucGFzc1dhbGwocmVzdWx0LHJpZ2h0V2FsbHMsbm9kZSk7XHJcbiAgICAgICAgICAgICAgICAvLyBjb25zb2xlLmxvZyhcIueisOWIsOWPs+i+uee8mOe7k+aenDpcIixqZyk7XHJcbiAgICAgICAgICAgICAgICBpZihyZXN1bHQpe1xyXG4gICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5ibG9ja051bSAtPSAxO1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuc3BlY2lhbF9UcmVhdG1lbnQobm9kZSk7XHJcbiAgICAgICAgICAgICAgICAgICAgamcgPSAzO1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuY3JlYXRlUGFydGljbGUobm9kZSxqZyk7XHJcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGpnO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcblxyXG4gIFxyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAobm9kZVBvcy55ICA8PSBtaW5ZIHx8IGRpcmVjdGlvblsyXSA9PSB0cnVlKSB7XHJcbiAgICAgICAgICAgIHB6ICs9IDE7XHJcbiAgICAgICAgICAgIC8vIGNvbnN0IGRhdGU0ID0gbmV3IERhdGUoKS5nZXRUaW1lKCk7XHJcbiAgICAgICAgICAgIC8vIGNvbnNvbGUubG9nKFwi56Kw5Yiw5LiL6L6557yYXCIsZGF0ZTQpO1xyXG4gICAgICAgICAgICBsZXQgZG93bldhbGxzID0gW107XHJcbiAgICAgICAgICAgIGZvcihsZXQgaSA9IDA7IGkgPCB0aGlzLnRvcERvb3JzLmxlbmd0aDsgaSsrKXtcclxuICAgICAgICAgICAgICAgIGxldCB3YWxsQm90dG9tID0gdGhpcy50b3BEb29yc1tpXS5nZXRDaGlsZEJ5TmFtZShcIndhbGxcIik7XHJcbiAgICAgICAgICAgICAgICBsZXQgd2FsbFBvcyA9IGNjLnYyKHdhbGxCb3R0b20uZ2V0Q29tcG9uZW50KFwiV2FsbFwiKS5wb3NYLHdhbGxCb3R0b20uZ2V0Q29tcG9uZW50KFwiV2FsbFwiKS5wb3NZKTtcclxuICAgICAgICAgICAgICAgIGZvcihsZXQgaSA9IDA7IGkgPCBhbGxCbG9ja3MubGVuZ3RoOyBpKyspe1xyXG4gICAgICAgICAgICAgICAgICAgIGxldCBsdW9jaGEgPSBNYXRoLmFicyhhbGxCbG9ja3NbaV0ueSAtIHdhbGxQb3MueSlcclxuICAgICAgICAgICAgICAgICAgICBpZihhbGxCbG9ja3NbaV0ueCA9PSB3YWxsUG9zLnggJiYgYWxsQmxvY2tzW2ldLnkgPiB3YWxsUG9zLnkgJiYgbHVvY2hhIDw9IG5vZGUuZ2V0Q29tcG9uZW50KFwiQmxvY2tcIikuc2h1KXtcclxuICAgICAgICAgICAgICAgICAgICAgICAgLy8gY29uc29sZS5sb2coXCJpZDpcIix3YWxsLmdldENoaWxkQnlOYW1lKFwibnVtXCIpLmdldENvbXBvbmVudChjYy5MYWJlbCkuc3RyaW5nKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgZG93bldhbGxzLnB1c2god2FsbEJvdHRvbSk7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICBpZihkb3duV2FsbHMubGVuZ3RoICE9IDApe1xyXG4gICAgICAgICAgICAgICAgbGV0IHJlc3VsdCA9IHRoaXMuZGV0ZWN0aW5nQmxvY2soXCJkb3duXCIsbm9kZS5nZXRDb21wb25lbnQoXCJCbG9ja1wiKS5wb3NYLG5vZGUuZ2V0Q29tcG9uZW50KFwiQmxvY2tcIikucG9zWSxhbGxCbG9ja3MpO1xyXG4gICAgICAgICAgICAgICAgaWYocmVzdWx0ID09IHRydWUpIHJlc3VsdCA9IHRoaXMucGFzc1dhbGwocmVzdWx0LGRvd25XYWxscyxub2RlKTtcclxuICAgICAgICAgICAgICAgIC8vIGNvbnNvbGUubG9nKFwi56Kw5Yiw5LiL6L6557yY57uT5p6cOlwiLGpnKTtcclxuICAgICAgICAgICAgICAgIGlmKHJlc3VsdCl7XHJcbiAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLmJsb2NrTnVtIC09IDE7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5zcGVjaWFsX1RyZWF0bWVudChub2RlKTtcclxuICAgICAgICAgICAgICAgICAgICBqZyA9IDE7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5jcmVhdGVQYXJ0aWNsZShub2RlLGpnKTtcclxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gamc7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgXHJcblxyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAobm9kZVBvcy55ICA+PSBtYXhZIHx8IGRpcmVjdGlvblszXSA9PSB0cnVlKSB7XHJcbiAgICAgICAgICAgIHB6ICs9IDE7XHJcbiAgICAgICAgICAgIC8vIGNvbnN0IGRhdGU1ID0gbmV3IERhdGUoKS5nZXRUaW1lKCk7XHJcbiAgICAgICAgICAgIC8vIGNvbnNvbGUubG9nKFwi56Kw5Yiw5LiK6L6557yYXCIsZGF0ZTUpO1xyXG4gICAgICAgICAgICBsZXQgdXBXYWxscyA9IFtdO1xyXG4gICAgICAgICAgICBmb3IobGV0IGkgPSAwOyBpIDwgdGhpcy5ib3R0b21Eb29ycy5sZW5ndGg7IGkrKyl7XHJcbiAgICAgICAgICAgICAgICBsZXQgd2FsbFRvcCA9IHRoaXMuYm90dG9tRG9vcnNbaV0uZ2V0Q2hpbGRCeU5hbWUoXCJ3YWxsXCIpO1xyXG4gICAgICAgICAgICAgICAgbGV0IHdhbGxQb3MgPSBjYy52Mih3YWxsVG9wLmdldENvbXBvbmVudChcIldhbGxcIikucG9zWCx3YWxsVG9wLmdldENvbXBvbmVudChcIldhbGxcIikucG9zWSk7XHJcbiAgICAgICAgICAgICAgICBmb3IobGV0IGkgPSAwOyBpIDwgYWxsQmxvY2tzLmxlbmd0aDsgaSsrKXtcclxuICAgICAgICAgICAgICAgICAgICBsZXQgbHVvY2hhID0gTWF0aC5hYnMoYWxsQmxvY2tzW2ldLnkgLSB3YWxsUG9zLnkpXHJcbiAgICAgICAgICAgICAgICAgICAgaWYoYWxsQmxvY2tzW2ldLnggPT0gd2FsbFBvcy54ICYmIGFsbEJsb2Nrc1tpXS55IDwgd2FsbFBvcy55ICYmIGx1b2NoYSA8PSBub2RlLmdldENvbXBvbmVudChcIkJsb2NrXCIpLnNodSl7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHVwV2FsbHMucHVzaCh3YWxsVG9wKTtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgIGlmKHVwV2FsbHMubGVuZ3RoICE9IDApe1xyXG4gICAgICAgICAgICAgICAgbGV0IHJlc3VsdCA9IHRoaXMuZGV0ZWN0aW5nQmxvY2soXCJ1cFwiLG5vZGUuZ2V0Q29tcG9uZW50KFwiQmxvY2tcIikucG9zWCxub2RlLmdldENvbXBvbmVudChcIkJsb2NrXCIpLnBvc1ksYWxsQmxvY2tzKTtcclxuICAgICAgICAgICAgICAgIGlmKHJlc3VsdCA9PSB0cnVlKSByZXN1bHQgPSB0aGlzLnBhc3NXYWxsKHJlc3VsdCx1cFdhbGxzLG5vZGUpO1xyXG4gICAgICAgICAgICAgICAgLy8gY29uc29sZS5sb2coXCLnorDliLDkuIrovrnnvJjnu5Pmnpw6XCIscmVzdWx0KTtcclxuICAgICAgICAgICAgICAgIGlmKHJlc3VsdCl7XHJcbiAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLmJsb2NrTnVtIC09IDE7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5zcGVjaWFsX1RyZWF0bWVudChub2RlKTtcclxuICAgICAgICAgICAgICAgICAgICBqZyA9IDA7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5jcmVhdGVQYXJ0aWNsZShub2RlLGpnKTtcclxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gamc7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmKHB6ID09IDAgKWpnID0gLTE7XHJcbiAgICAgICAgLy8gY29uc3QgZGF0ZTEwID0gbmV3IERhdGUoKS5nZXRUaW1lKCk7XHJcbiAgICAgICAgLy8gY29uc29sZS5sb2coXCLmiYDmnInmo4DmtYvnu5PmnZ/ogJfml7ZcIixkYXRlMTAsamcpO1xyXG4gICAgICAgIHJldHVybiBqZztcclxuICAgIH1cclxuXHJcbiAgICBjaGFuZ2VTdGF0ZSgpe1xyXG4gICAgICAgIGlmKHRoaXMub3BlbldhbGwubGVuZ3RoICE9IDApe1xyXG4gICAgICAgICAgICBmb3IobGV0IGk9MDsgaTx0aGlzLm9wZW5XYWxsLmxlbmd0aDsgaSsrKXtcclxuICAgICAgICAgICAgICAgIHRoaXMub3BlbldhbGxbaV0uZ2V0Q2hpbGRCeU5hbWUoXCJ3YWxsXCIpLmdldENvbXBvbmVudChcIldhbGxcIikuY2hhbmdlTG9jaygpOyBcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgaWYodGhpcy5mcmVlemVXYWxsLmxlbmd0aCE9IDApe1xyXG4gICAgICAgICAgICBmb3IobGV0IGk9MDsgaTx0aGlzLmZyZWV6ZVdhbGwubGVuZ3RoOyBpKyspe1xyXG4gICAgICAgICAgICAgICAgdGhpcy5mcmVlemVXYWxsW2ldLmdldENoaWxkQnlOYW1lKFwid2FsbFwiKS5nZXRDb21wb25lbnQoXCJXYWxsXCIpLmNoYW5nZUZyZWV6ZSgpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIC8v5qOA5rWL5piv5ZCm5Y+v5Lul6YCa6L+H6ZeoXHJcbiAgICBwYXNzV2FsbChqZyx3YWxsQXJyYXksbm9kZSl7XHJcbiAgICAgICAgZm9yKGxldCBpPTA7aTx3YWxsQXJyYXkubGVuZ3RoO2krKyl7XHJcbiAgICAgICAgICAgIGlmKHdhbGxBcnJheVtpXS5nZXRDb21wb25lbnQoXCJXYWxsXCIpLnNwZWNpYWwgPT0gMil7XHJcbiAgICAgICAgICAgICAgICBjb25zb2xlLmxvZyhcIuWwneivlemAmui/h+W8gOWFs+mXqDpcIix3YWxsQXJyYXlbaV0uZ2V0Q29tcG9uZW50KFwiV2FsbFwiKS5vcGVuKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBpZih3YWxsQXJyYXlbaV0uZ2V0Q29tcG9uZW50KFwiV2FsbFwiKS5zcGVjaWFsID09IDIgJiYgd2FsbEFycmF5W2ldLmdldENvbXBvbmVudChcIldhbGxcIikub3BlbiA9PSBmYWxzZSl7XHJcbiAgICAgICAgICAgICAgICBqZyA9IGZhbHNlO1xyXG4gICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgLy9jb25zb2xlLmxvZyh3YWxsQXJyYXlbaV0uZ2V0Q2hpbGRCeU5hbWUoXCJ3YWxsXCIpLmdldENvbXBvbmVudChcIldhbGxcIikuY29sb3Isbm9kZS5nZXRDb21wb25lbnQoXCJCbG9ja1wiKS5jb2xvcilcclxuICAgICAgICAgICAgaWYod2FsbEFycmF5W2ldLmdldENvbXBvbmVudChcIldhbGxcIikuY29sb3IgIT0gbm9kZS5nZXRDb21wb25lbnQoXCJCbG9ja1wiKS5jb2xvcil7XHJcblxyXG4gICAgICAgICAgICAgICAgamcgPSBmYWxzZTtcclxuICAgICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGlmKG5vZGUuZ2V0Q29tcG9uZW50KFwiQmxvY2tcIikudHlwZSA9PSA1KXtcclxuICAgICAgICAgICAgICAgIGlmKHdhbGxBcnJheVtpXS5nZXRDb21wb25lbnQoXCJXYWxsXCIpLnNwZWNpYWwgIT0gMSl7XHJcbiAgICAgICAgICAgICAgICAgICAgamcgPSBmYWxzZTtcclxuICAgICAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICBpZihqZyA9PSB0cnVlICAmJiBub2RlLmdldENvbXBvbmVudChcIkJsb2NrXCIpLnR5cGUgPT0gNSl7XHJcbiAgICAgICAgICAgIGZvcihsZXQgaj0wO2o8d2FsbEFycmF5Lmxlbmd0aDtqKyspe1xyXG4gICAgICAgICAgICAgICAgaWYod2FsbEFycmF5W2pdLmdldENvbXBvbmVudChcIldhbGxcIikuc3BlY2lhbCA9PSAxICYmIHdhbGxBcnJheVtqXS5nZXRDb21wb25lbnQoXCJXYWxsXCIpLndhbGxfSW5mby5sZW5ndGggIT0gMCl7XHJcbiAgICAgICAgICAgICAgICAgICAgd2FsbEFycmF5W2pdLmdldENvbXBvbmVudChcIldhbGxcIikucGxheVN0YXJEb29yKCk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgLy8gY29uc3QgZGF0ZTggPSBuZXcgRGF0ZSgpLmdldFRpbWUoKTtcclxuICAgICAgICAvLyBjb25zb2xlLmxvZyhcIuajgOa1i+minOiJsuaYr+WQpuiDveWkn+mAmui/h+mXqFwiLGRhdGU4KTtcclxuICAgICAgICByZXR1cm4gamc7XHJcbiAgICB9XHJcblxyXG4gICAgLy/mo4DmtYvmlrnlnZflkozpl6jkuK3pl7TmnInmsqHmnInlpLnmnYLlhbbku5blnZdcclxuICAgIGRldGVjdGluZ0Jsb2NrKGRpcmVjdGlvbixwb3NYLHBvc1ksYmxvY2tzKXtcclxuICAgICAgICBsZXQgamcgPSB0cnVlO1xyXG4gICAgICAgIGxldCBpZCA9IFwiXCI7XHJcbiAgICAgICAgaWYoYmxvY2tzLmxlbmd0aCA+IDApe1xyXG4gICAgICAgICAgICBmb3IobGV0IGk9MDsgaTxibG9ja3MubGVuZ3RoOyBpKyspe1xyXG4gICAgICAgICAgICAgICAgbGV0IHBvcyA9IGJsb2Nrc1tpXTtcclxuICAgICAgICAgICAgICAgIGxldCB4ID0gcG9zLng7XHJcbiAgICAgICAgICAgICAgICBsZXQgeSA9IHBvcy55OyBcclxuICAgICAgICAgICAgICAgIGlkID0gdGhpcy5tYXBCbG9ja3NXYWxsW3hdW3ldLmdldENvbXBvbmVudChcIk1hcEJsb2NrXCIpLmJsb2NrX0lkO1xyXG4gICAgICAgICAgICAgICAgamcgPSB0aGlzLmNoZWNrQWxsRGlyZWN0aW9ucyhpZCxkaXJlY3Rpb24seCx5KTtcclxuICAgICAgICAgICAgICAgIGlmKCFqZyl7XHJcbiAgICAgICAgICAgICAgICAgICAgLy8gY29uc29sZS5sb2coXCLmlrnlkJHmo4DmtYvmsqHov4dcIik7XHJcbiAgICAgICAgICAgICAgICAgICAgaSA9IDEwMDAwMDA7XHJcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGpnO1xyXG4gICAgICAgICAgICAgICAgfSBcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICAvLyBjb25zdCBkYXRlNyA9IG5ldyBEYXRlKCkuZ2V0VGltZSgpO1xyXG4gICAgICAgIC8vIGNvbnNvbGUubG9nKFwi5pa55ZCR5qOA5rWL6YCa6L+HXCIsZGF0ZTcsamcpO1xyXG4gICAgICAgIHJldHVybiBqZztcclxuICAgIH1cclxuXHJcbiAgICAvL+ajgOa1i+eJqeS9k+WQhOaWueWQkeaYr+WQpuacieWIq+eahOeJqeWdl++8jOmYsuatoueisOWIsOWimeWjgeS6huS9huaYr+aYr+WHueWHuOW9oueKtu+8jOWimeS4juWdl+S5i+mXtOaciemYu+aMoeeJqeWdl1xyXG4gICAgY2hlY2tBbGxEaXJlY3Rpb25zKGlkLGRpcmVjdGlvbix4LHkpe1xyXG4gICAgICAgIGxldCBqZyA9IHRydWU7XHJcbiBcclxuICAgICAgICBpZihkaXJlY3Rpb24gPT0gXCJsZWZ0XCIpe1xyXG4gICAgICAgICAgICBpZih0aGlzLm1hcEJsb2Nrc1dhbGxbeC0xXVt5XS5nZXRDb21wb25lbnQoXCJNYXBCbG9ja1wiKS5ibG9ja19JZCAhPSBcIlwiICYmIHRoaXMubWFwQmxvY2tzV2FsbFt4LTFdW3ldLmdldENvbXBvbmVudChcIk1hcEJsb2NrXCIpLmJsb2NrX0lkIT0gXCJXYWxsXCJcclxuICAgICAgICAgICAgJiYgdGhpcy5tYXBCbG9ja3NXYWxsW3gtMV1beV0uZ2V0Q29tcG9uZW50KFwiTWFwQmxvY2tcIikuYmxvY2tfSWQgIT0gaWQgKXtcclxuICAgICAgICAgICAgICAgIC8vIGNvbnNvbGUubG9nKFwi5bem5L6n5pyJ54mp5L2TXCIpXHJcbiAgICAgICAgICAgICAgICBqZyA9IGZhbHNlO1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIGpnO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGlmKHRoaXMubWFwQmxvY2tzV2FsbFt4LTFdW3ldLm9wYWNpdHkgPT0gMjQ5KXtcclxuICAgICAgICAgICAgICAgIGpnID0gZmFsc2U7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gamc7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgaWYoKHggLSAyKSA+PSAwKXtcclxuICAgICAgICAgICAgICAgIGlmKHRoaXMubWFwQmxvY2tzV2FsbFt4LTJdW3ldLmdldENvbXBvbmVudChcIk1hcEJsb2NrXCIpLmJsb2NrX0lkICE9IFwiXCIgJiYgdGhpcy5tYXBCbG9ja3NXYWxsW3gtMl1beV0uZ2V0Q29tcG9uZW50KFwiTWFwQmxvY2tcIikuYmxvY2tfSWQhPSBcIldhbGxcIlxyXG4gICAgICAgICAgICAgICAgJiYgdGhpcy5tYXBCbG9ja3NXYWxsW3gtMl1beV0uZ2V0Q29tcG9uZW50KFwiTWFwQmxvY2tcIikuYmxvY2tfSWQgIT0gaWQgKXtcclxuICAgICAgICAgICAgICAgICAgICAvLyBjb25zb2xlLmxvZyhcIuW3puS+p+acieeJqeS9k1wiKVxyXG4gICAgICAgICAgICAgICAgICAgIGpnID0gZmFsc2U7XHJcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGpnO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgaWYodGhpcy5tYXBCbG9ja3NXYWxsW3gtMl1beV0ub3BhY2l0eSA9PSAyNDkpe1xyXG4gICAgICAgICAgICAgICAgICAgIGpnID0gZmFsc2U7XHJcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGpnO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2UgaWYoZGlyZWN0aW9uID09IFwicmlnaHRcIil7XHJcbiAgICAgICAgICAgIGlmKHRoaXMubWFwQmxvY2tzV2FsbFt4KzFdW3ldLmdldENvbXBvbmVudChcIk1hcEJsb2NrXCIpLmJsb2NrX0lkICE9IFwiXCIgJiYgdGhpcy5tYXBCbG9ja3NXYWxsW3grMV1beV0uZ2V0Q29tcG9uZW50KFwiTWFwQmxvY2tcIikuYmxvY2tfSWQhPSBcIldhbGxcIlxyXG4gICAgICAgICAgICAmJiB0aGlzLm1hcEJsb2Nrc1dhbGxbeCsxXVt5XS5nZXRDb21wb25lbnQoXCJNYXBCbG9ja1wiKS5ibG9ja19JZCAhPSBpZCApe1xyXG4gICAgICAgICAgICAgICAgLy8gY29uc29sZS5sb2coXCLlj7PkvqfmnInniankvZNcIilcclxuICAgICAgICAgICAgICAgIGpnID0gZmFsc2U7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gamc7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgaWYodGhpcy5tYXBCbG9ja3NXYWxsW3grMV1beV0ub3BhY2l0eSA9PSAyNDkpe1xyXG4gICAgICAgICAgICAgICAgamcgPSBmYWxzZTtcclxuICAgICAgICAgICAgICAgIHJldHVybiBqZztcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBpZigoeCArIDIpIDw9IHRoaXMubWFwQmxvY2tzV2FsbC5sZW5ndGgtMSl7XHJcbiAgICAgICAgICAgICAgICBpZih0aGlzLm1hcEJsb2Nrc1dhbGxbeCsyXVt5XS5nZXRDb21wb25lbnQoXCJNYXBCbG9ja1wiKS5ibG9ja19JZCAhPSBcIlwiICYmIHRoaXMubWFwQmxvY2tzV2FsbFt4KzJdW3ldLmdldENvbXBvbmVudChcIk1hcEJsb2NrXCIpLmJsb2NrX0lkIT0gXCJXYWxsXCJcclxuICAgICAgICAgICAgICAgICYmIHRoaXMubWFwQmxvY2tzV2FsbFt4KzJdW3ldLmdldENvbXBvbmVudChcIk1hcEJsb2NrXCIpLmJsb2NrX0lkICE9IGlkICl7XHJcbiAgICAgICAgICAgICAgICAgICAgLy8gY29uc29sZS5sb2coXCLlj7PkvqfmnInniankvZNcIilcclxuICAgICAgICAgICAgICAgICAgICBqZyA9IGZhbHNlO1xyXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBqZztcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIGlmKHRoaXMubWFwQmxvY2tzV2FsbFt4KzJdW3ldLm9wYWNpdHkgPT0gMjQ5KXtcclxuICAgICAgICAgICAgICAgICAgICBqZyA9IGZhbHNlO1xyXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBqZztcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICBpZihkaXJlY3Rpb24gPT0gXCJ1cFwiKXtcclxuICAgICAgICAgICAgaWYodGhpcy5tYXBCbG9ja3NXYWxsW3hdW3krMV0uZ2V0Q29tcG9uZW50KFwiTWFwQmxvY2tcIikuYmxvY2tfSWQgIT0gXCJcIiAmJiB0aGlzLm1hcEJsb2Nrc1dhbGxbeF1beSsxXS5nZXRDb21wb25lbnQoXCJNYXBCbG9ja1wiKS5ibG9ja19JZCE9IFwiV2FsbFwiXHJcbiAgICAgICAgICAgICYmIHRoaXMubWFwQmxvY2tzV2FsbFt4XVt5KzFdLmdldENvbXBvbmVudChcIk1hcEJsb2NrXCIpLmJsb2NrX0lkICE9IGlkICl7XHJcbiAgICAgICAgICAgICAgICAvLyBjb25zb2xlLmxvZyhcIuS4iuS+p+acieeJqeS9k1wiKVxyXG4gICAgICAgICAgICAgICAgamcgPSBmYWxzZTtcclxuICAgICAgICAgICAgICAgIHJldHVybiBqZztcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBpZih0aGlzLm1hcEJsb2Nrc1dhbGxbeF1beSsxXS5vcGFjaXR5ID09IDI0OSl7XHJcbiAgICAgICAgICAgICAgICBqZyA9IGZhbHNlO1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIGpnO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGlmKCh5ICsgMikgPD0gdGhpcy5tYXBCbG9ja3NXYWxsW3hdLmxlbmd0aC0xKXtcclxuICAgICAgICAgICAgICAgIGlmKHRoaXMubWFwQmxvY2tzV2FsbFt4XVt5KzJdLmdldENvbXBvbmVudChcIk1hcEJsb2NrXCIpLmJsb2NrX0lkICE9IFwiXCIgJiYgdGhpcy5tYXBCbG9ja3NXYWxsW3hdW3krMl0uZ2V0Q29tcG9uZW50KFwiTWFwQmxvY2tcIikuYmxvY2tfSWQhPSBcIldhbGxcIlxyXG4gICAgICAgICAgICAgICAgJiYgdGhpcy5tYXBCbG9ja3NXYWxsW3hdW3krMl0uZ2V0Q29tcG9uZW50KFwiTWFwQmxvY2tcIikuYmxvY2tfSWQgIT0gaWQgKXtcclxuICAgICAgICAgICAgICAgICAgICAvLyBjb25zb2xlLmxvZyhcIuS4iuS+p+acieeJqeS9k1wiKVxyXG4gICAgICAgICAgICAgICAgICAgIGpnID0gZmFsc2U7XHJcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGpnO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgaWYodGhpcy5tYXBCbG9ja3NXYWxsW3hdW3krMl0ub3BhY2l0eSA9PSAyNDkpe1xyXG4gICAgICAgICAgICAgICAgICAgIGpnID0gZmFsc2U7XHJcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGpnO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmKGRpcmVjdGlvbiA9PSBcImRvd25cIil7XHJcbiAgICAgICAgICAgIGlmKHRoaXMubWFwQmxvY2tzV2FsbFt4XVt5LTFdLmdldENvbXBvbmVudChcIk1hcEJsb2NrXCIpLmJsb2NrX0lkICE9IFwiXCIgJiYgdGhpcy5tYXBCbG9ja3NXYWxsW3hdW3ktMV0uZ2V0Q29tcG9uZW50KFwiTWFwQmxvY2tcIikuYmxvY2tfSWQhPSBcIldhbGxcIlxyXG4gICAgICAgICAgICAmJiB0aGlzLm1hcEJsb2Nrc1dhbGxbeF1beS0xXS5nZXRDb21wb25lbnQoXCJNYXBCbG9ja1wiKS5ibG9ja19JZCAhPSBpZCApe1xyXG4gICAgICAgICAgICAgICAgLy8gY29uc29sZS5sb2coXCLkuIvkvqfmnInniankvZNcIilcclxuICAgICAgICAgICAgICAgIGpnID0gZmFsc2U7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gamc7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgaWYodGhpcy5tYXBCbG9ja3NXYWxsW3hdW3ktMV0ub3BhY2l0eSA9PSAyNDkpe1xyXG4gICAgICAgICAgICAgICAgamcgPSBmYWxzZTtcclxuICAgICAgICAgICAgICAgIHJldHVybiBqZztcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBpZigoeSAtIDIpID49IDApe1xyXG4gICAgICAgICAgICAgICAgaWYodGhpcy5tYXBCbG9ja3NXYWxsW3hdW3ktMl0uZ2V0Q29tcG9uZW50KFwiTWFwQmxvY2tcIikuYmxvY2tfSWQgIT0gXCJcIiAmJiB0aGlzLm1hcEJsb2Nrc1dhbGxbeF1beS0yXS5nZXRDb21wb25lbnQoXCJNYXBCbG9ja1wiKS5ibG9ja19JZCE9IFwiV2FsbFwiXHJcbiAgICAgICAgICAgICAgICAmJiB0aGlzLm1hcEJsb2Nrc1dhbGxbeF1beS0yXS5nZXRDb21wb25lbnQoXCJNYXBCbG9ja1wiKS5ibG9ja19JZCAhPSBpZCApe1xyXG4gICAgICAgICAgICAgICAgICAgIC8vIGNvbnNvbGUubG9nKFwi5LiL5L6n5pyJ54mp5L2TXCIpXHJcbiAgICAgICAgICAgICAgICAgICAgamcgPSBmYWxzZTtcclxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gamc7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBpZih0aGlzLm1hcEJsb2Nrc1dhbGxbeF1beS0yXS5vcGFjaXR5ID09IDI0OSl7XHJcbiAgICAgICAgICAgICAgICAgICAgamcgPSBmYWxzZTtcclxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gamc7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgLy8gY29uc29sZS5sb2coXCLmo4DmtYvniankvZPlkITmlrnlkJHmmK/lkKbmnInliKvnmoTnianlnZdcIixqZyk7XHJcbiAgICAgICAgcmV0dXJuIGpnO1xyXG4gICAgfVxyXG5cclxuICAgIGNoZWNrRGlyYWN0aW9uKGFsbEJsb2NrcyxtYXhYLG1heFkpe1xyXG4gICAgICAgIGxldCBqZyA9IFtmYWxzZSxmYWxzZSxmYWxzZSxmYWxzZV07XHJcbiAgICAgICAgZm9yKGxldCBpPTA7IGk8YWxsQmxvY2tzLmxlbmd0aDsgaSsrKXtcclxuICAgICAgICAgICAgaWYoYWxsQmxvY2tzW2ldLnggPiAwICYmIGpnWzBdID09IGZhbHNlKXtcclxuICAgICAgICAgICAgICAgIGlmKHRoaXMubWFwQmxvY2tzV2FsbFthbGxCbG9ja3NbaV0ueC0xXVthbGxCbG9ja3NbaV0ueV0ub3BhY2l0eSA9PSAyNTApe1xyXG4gICAgICAgICAgICAgICAgICAgIGpnWzBdID0gdHJ1ZTtcclxuICAgICAgICAgICAgICAgIH0gXHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgaWYoIGpnWzFdID09IGZhbHNlKXtcclxuICAgICAgICAgICAgICAgIGlmKHRoaXMubWFwQmxvY2tzV2FsbFthbGxCbG9ja3NbaV0ueCsxXVthbGxCbG9ja3NbaV0ueV0ub3BhY2l0eSA9PSAyNTApe1xyXG4gICAgICAgICAgICAgICAgICAgIGpnWzFdID0gdHJ1ZTtcclxuICAgICAgICAgICAgICAgIH0gXHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgaWYoYWxsQmxvY2tzW2ldLnkgPiAwICYmIGpnWzJdID09IGZhbHNlKXtcclxuICAgICAgICAgICAgICAgIGlmKHRoaXMubWFwQmxvY2tzV2FsbFthbGxCbG9ja3NbaV0ueF1bYWxsQmxvY2tzW2ldLnktMV0ub3BhY2l0eSA9PSAyNTApe1xyXG4gICAgICAgICAgICAgICAgICAgIGpnWzJdID0gdHJ1ZTtcclxuICAgICAgICAgICAgICAgIH0gXHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgaWYoamdbM10gPT0gZmFsc2Upe1xyXG4gICAgICAgICAgICAgICAgaWYodGhpcy5tYXBCbG9ja3NXYWxsW2FsbEJsb2Nrc1tpXS54XVthbGxCbG9ja3NbaV0ueSsxXS5vcGFjaXR5ID09IDI1MCl7XHJcbiAgICAgICAgICAgICAgICAgICAgamdbM10gPSB0cnVlO1xyXG4gICAgICAgICAgICAgICAgfSBcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gamc7XHJcbiAgICB9XHJcblxyXG4gICAgY2hlY2tMZWZ0KGFsbEJsb2Nrcyl7XHJcbiAgICAgICAgbGV0IGpnID0gZmFsc2U7XHJcbiAgICAgICAgcmV0dXJuIGpnO1xyXG4gICAgfVxyXG5cclxuICAgIGNoZWNrUmlnaHQoYWxsQmxvY2tzLG1heCl7XHJcbiAgICAgICAgbGV0IGpnID0gZmFsc2U7XHJcbiAgICAgICAgZm9yKGxldCBpPTA7IGk8YWxsQmxvY2tzLmxlbmd0aDsgaSsrKXtcclxuXHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiBqZztcclxuICAgIH1cclxuXHJcbiAgICBjaGVja0Rvd24oYWxsQmxvY2tzKXtcclxuICAgICAgICBsZXQgamcgPSBmYWxzZTtcclxuICAgICAgICBmb3IobGV0IGk9MDsgaTxhbGxCbG9ja3MubGVuZ3RoOyBpKyspe1xyXG4gXHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiBqZztcclxuICAgIH1cclxuXHJcbiAgICBjaGVja1VwKGFsbEJsb2NrcyxtYXgpe1xyXG4gICAgICAgIGxldCBqZyA9IGZhbHNlO1xyXG4gICAgICAgIGZvcihsZXQgaT0wOyBpPGFsbEJsb2Nrcy5sZW5ndGg7IGkrKyl7XHJcblxyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gamc7XHJcbiAgICB9XHJcbiAgICBcclxuXHJcbiAgICAvL+eJueauiuWkhOeQhu+8jOaWueWdl+W4pumBk+WFt+aIluiAhemcgOimgea2iOmZpOWGsOWdl1xyXG4gICAgc3BlY2lhbF9UcmVhdG1lbnQobm9kZSl7XHJcbiAgICAgICAgbGV0IGZyZWV6ZUJsb2NrID0gdGhpcy5ub2RlLmNoaWxkcmVuLmZpbHRlcihjaGlsZCA9PiB7XHJcbiAgICAgICAgICAgIGlmKGNoaWxkLmdldENvbXBvbmVudChcIkJsb2NrXCIpKXtcclxuICAgICAgICAgICAgICAgIGlmKGNoaWxkLmdldENvbXBvbmVudChcIkJsb2NrXCIpLnR5cGUgPT0gNClcclxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gY2hpbGRcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH0pO1xyXG4gICAgICAgIGlmKGZyZWV6ZUJsb2NrLmxlbmd0aCA+IDApe1xyXG4gICAgICAgICAgICBmb3IobGV0IGk9MDsgaTxmcmVlemVCbG9jay5sZW5ndGg7IGkrKyl7XHJcbiAgICAgICAgICAgICAgICBmcmVlemVCbG9ja1tpXS5nZXRDaGlsZEJ5TmFtZShcImZyZWV6ZVwiKS5nZXRDb21wb25lbnQoXCJGcmVlemVcIikucmVkdWNlKDEpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBpZihub2RlLmdldENvbXBvbmVudChcIkJsb2NrXCIpLnR5cGUgPT0gMiB8fCBub2RlLmdldENvbXBvbmVudChcIkJsb2NrXCIpLnR5cGUgPT0gNCl7XHJcbiAgICAgICAgICAgIGxldCBsb2NrQmxvY2sgPSB0aGlzLm5vZGUuY2hpbGRyZW4uZmlsdGVyKGNoaWxkID0+IHtcclxuICAgICAgICAgICAgICAgIGlmKGNoaWxkLmdldENvbXBvbmVudChcIkJsb2NrXCIpKXtcclxuICAgICAgICAgICAgICAgICAgICBpZihjaGlsZC5nZXRDb21wb25lbnQoXCJCbG9ja1wiKS50eXBlID09IDMpXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBjaGlsZFxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgaWYobG9ja0Jsb2NrLmxlbmd0aCA+IDApXHJcbiAgICAgICAgICAgICAgICBmb3IobGV0IGk9MDsgaTxsb2NrQmxvY2subGVuZ3RoOyBpKyspe1xyXG4gICAgICAgICAgICAgICAgICAgIGxvY2tCbG9ja1tpXS5nZXRDaGlsZEJ5TmFtZShcImxvY2tcIikuZ2V0Q29tcG9uZW50KFwiTG9ja1wiKS5yZWR1Y2UoKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIFxyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgZm9yKGxldCBpPTA7aTx0aGlzLmJsb2Nrcy5sZW5ndGg7aSsrKXtcclxuICAgICAgICAgICAgaWYodGhpcy5ibG9ja3NbaV0gPT0gbm9kZSl7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmJsb2Nrcy5zcGxpY2UoaSwxKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICBcclxuICAgIH1cclxuXHJcbiAgICAvL+WIpOaWrea4uOaIj+aIkOWKn+S4i+S4gOWFs1xyXG4gICAgbmV4dExldmVsKCl7XHJcbiAgICAgICAgdGhpcy5wYXVzZSA9IGZhbHNlO1xyXG4gICAgICAgIHRoaXMub3BlbkljZSgpO1xyXG5cclxuICAgICAgICB0aGlzLmJsb2NrTnVtID0gdGhpcy5ibG9ja3MubGVuZ3RoO1xyXG4gXHJcbiAgICAgICAgaWYodGhpcy5ibG9ja051bSA9PSAwICYmICF0aGlzLmdhbWVXaW4gJiYgIXRoaXMuZ2FtZU92ZXIpe1xyXG4gICAgICAgICAgICAvLyBhbGVydChcIua4uOaIj+aIkOWKn1wiKTtcclxuICAgICAgICAgICAgdGhpcy5nYW1lV2luID0gdHJ1ZTtcclxuXHJcbiAgICAgICAgICAgIHRoaXMuc3RvcFRpbWVDdXREb3duKCk7XHJcbiAgICAgICAgICAgIC8vIGNvbnNvbGUubG9nKFwi5oiQ5Yqf5raI6Zmk5LiA5LiqXCIpO1xyXG4gICAgICAgICAgICBjYy5meC5HYW1lVG9vbC5jaGFuZ2VDb2luKDQwKTtcclxuICAgICAgICAgICAgY2MuZnguR2FtZVRvb2wuYWRkTGV2ZWwodGhpcy5jb3VudF9UaW1lLHRoaXMuYWRkX1RpbWUpO1xyXG5cclxuICAgICAgICAgICAgdGhpcy5jaGVja19OZXdNb2RlKCk7XHJcbiAgICAgICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5ub2RlLnBhcmVudC5wYXJlbnQuZ2V0Q2hpbGRCeU5hbWUoXCJXaW5cIikuYWN0aXZlID0gdHJ1ZTtcclxuICAgICAgICAgICAgfSwgNjYwKTtcclxuICAgICAgICAgICAgLy8gY29uc29sZS5sb2coXCLmuLjmiI/miJDlip9cIik7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2V7XHJcbiAgICAgICAgICAgIGlmKHRoaXMuZ2FtZU92ZXIgPT0gdHJ1ZSl7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmZhaWxMZXZlbChudWxsKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBjaGVja19OZXdNb2RlKCl7XHJcbiAgICAgICAgZm9yKGxldCBpPTA7IGk8Y2MuZnguR2FtZUNvbmZpZy5ORVdfTEVWRUwubGVuZ3RoOyBpKyspe1xyXG4gICAgICAgICAgICBpZigoY2MuZnguR2FtZUNvbmZpZy5HTV9JTkZPLmxldmVsKzEpID09IGNjLmZ4LkdhbWVDb25maWcuTkVXX0xFVkVMW2ldLmxldmVsKXtcclxuICAgICAgICAgICAgICAgIHRoaXMubmV3X21vZGUgPSAzO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHdpbkxldmVsKCl7XHJcbiAgICAgICAgY2MuZnguQXVkaW9NYW5hZ2VyLl9pbnN0YW5jZS5wbGF5RWZmZWN0KFwiYW5uaXVfQmlnXCIsbnVsbCk7XHJcbiAgICAgICAgaWYoY2MuZnguR2FtZUNvbmZpZy5HTV9JTkZPLmxldmVsID4gMTU2KXtcclxuICAgICAgICAgICAgY2MuZnguR2FtZUNvbmZpZy5HTV9JTkZPLmxldmVsID0gMTU2O1xyXG4gICAgICAgICAgICAvLyBNYXBDb25yb2xlci5faW5zdGFuY2UgPSBudWxsO1xyXG4gICAgXHJcbiAgICAgICAgICAgIGlmKHRoaXMubmV3X21vZGUgPT0gMyl7XHJcbiAgICAgICAgICAgICAgICB0aGlzLm5vZGUucGFyZW50LnBhcmVudC5nZXRDaGlsZEJ5TmFtZShcIldpblwiKS5hY3RpdmUgPSBmYWxzZTtcclxuICAgICAgICAgICAgICAgIHRoaXMub3Blbk5ld01vZGUoMik7XHJcbiAgICAgICAgICAgICAgICBjYy5meC5HYW1lQ29uZmlnLkxFVkVMX0lORk9faW5pdChmYWxzZSwwKTtcclxuICAgICAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAvLyBjYy5meC5HYW1lQ29uZmlnLkxFVkVMX0lORk9faW5pdCh0cnVlKTtcclxuICAgICAgICAgICAgY2MuZnguQXVkaW9NYW5hZ2VyLl9pbnN0YW5jZS5wbGF5RWZmZWN0KFwiemh1YW4xXCIsbnVsbCk7XHJcbiAgICAgICAgICAgIHRoaXMubm9kZS5wYXJlbnQucGFyZW50LnBhcmVudC5nZXRDaGlsZEJ5TmFtZShcInpodWFuY2hhbmdcIikuYWN0aXZlID0gdHJ1ZTtcclxuICAgICAgICAgICAgdGhpcy5ub2RlLnBhcmVudC5wYXJlbnQucGFyZW50LmdldENoaWxkQnlOYW1lKFwiemh1YW5jaGFuZ1wiKS5nZXRDb21wb25lbnQoc3AuU2tlbGV0b24pLnNldEFuaW1hdGlvbigxLFwidXBcIixmYWxzZSk7XHJcbiAgICAgICAgICAgIC8vIHRoaXMubm9kZS5wYXJlbnQucGFyZW50LnBhcmVudC5nZXRDaGlsZEJ5TmFtZShcInpodWFuY2hhbmdcIikuZ2V0Q29tcG9uZW50KHNwLlNrZWxldG9uKS5zZXRDb21wbGV0ZUxpc3RlbmVyKChlbnRyeSkgPT4ge1xyXG4gICAgICAgICAgICAvLyAgICAgaWYgKGVudHJ5LmFuaW1hdGlvbi5uYW1lID09PSBcInVwXCIpIHtcclxuICAgICAgICAgICAgLy8gICAgICAgICAvLyDliqjnlLvmkq3mlL7nu5PmnZ/lkI7miafooYznmoTpgLvovpFcclxuICAgICAgICAgICAgLy8gICAgICAgICB0aGlzLm5vZGUucGFyZW50LnBhcmVudC5wYXJlbnQuZ2V0Q2hpbGRCeU5hbWUoXCJ6aHVhbmNoYW5nXCIpLmFjdGl2ZSA9IGZhbHNlO1xyXG4gICAgICAgICAgICAvLyAgICAgfVxyXG4gICAgICAgICAgICAvLyB9KTtcclxuXHJcbiAgICAgICAgICAgIGNjLmRpcmVjdG9yLnByZWxvYWRTY2VuZShcIkhvbWVTY2VuZVwiLCAoZXJyLCBhc3NldCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgaWYgKGVycikge1xyXG4gICAgICAgICAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoJ+WKqOaAgeWKoOi9vSBQcmVmYWIg5aSx6LSlOicsIGVycik7XHJcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgICAgICAgICAgICBjYy5kaXJlY3Rvci5sb2FkU2NlbmUoXCJIb21lU2NlbmVcIik7XHJcbiAgICAgICAgICAgIH0sIDEyMDApO1xyXG4gICAgICAgIH0gXHJcbiAgICAgICAgZWxzZXtcclxuICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgIC8vIGNvbnNvbGUubG9nKFwi5LiL5LiA5YWzXCIpO1xyXG4gICAgICAgICAgICAvLyBNYXBDb25yb2xlci5faW5zdGFuY2UgPSBudWxsO1xyXG4gICAgICAgICAgICBcclxuICAgICAgICAgICAgaWYodGhpcy5uZXdfbW9kZSA9PSAzKXtcclxuICAgICAgICAgICAgICAgIHRoaXMubm9kZS5wYXJlbnQucGFyZW50LmdldENoaWxkQnlOYW1lKFwiV2luXCIpLmFjdGl2ZSA9IGZhbHNlO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5vcGVuTmV3TW9kZSgyKTtcclxuICAgICAgICAgICAgICAgIGNjLmZ4LkdhbWVDb25maWcuTEVWRUxfSU5GT19pbml0KGZhbHNlLDApO1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGNjLmZ4LkF1ZGlvTWFuYWdlci5faW5zdGFuY2UucGxheUVmZmVjdChcInpodWFuMVwiLG51bGwpO1xyXG4gICAgICAgICAgICB0aGlzLm5vZGUucGFyZW50LnBhcmVudC5wYXJlbnQuZ2V0Q2hpbGRCeU5hbWUoXCJ6aHVhbmNoYW5nXCIpLmFjdGl2ZSA9IHRydWU7XHJcbiAgICAgICAgICAgIHRoaXMubm9kZS5wYXJlbnQucGFyZW50LnBhcmVudC5nZXRDaGlsZEJ5TmFtZShcInpodWFuY2hhbmdcIikuZ2V0Q29tcG9uZW50KHNwLlNrZWxldG9uKS5zZXRBbmltYXRpb24oMSxcInVwXCIsZmFsc2UpO1xyXG4gICAgICAgICAgICAvLyB0aGlzLm5vZGUucGFyZW50LnBhcmVudC5wYXJlbnQuZ2V0Q2hpbGRCeU5hbWUoXCJ6aHVhbmNoYW5nXCIpLmdldENvbXBvbmVudChzcC5Ta2VsZXRvbikuc2V0Q29tcGxldGVMaXN0ZW5lcigoZW50cnkpID0+IHtcclxuICAgICAgICAgICAgLy8gICAgIGlmIChlbnRyeS5hbmltYXRpb24ubmFtZSA9PT0gXCJ1cFwiKSB7XHJcbiAgICAgICAgICAgIC8vICAgICAgICAgLy8g5Yqo55S75pKt5pS+57uT5p2f5ZCO5omn6KGM55qE6YC76L6RXHJcbiAgICAgICAgICAgIC8vICAgICAgICAgdGhpcy5ub2RlLnBhcmVudC5wYXJlbnQucGFyZW50LmdldENoaWxkQnlOYW1lKFwiemh1YW5jaGFuZ1wiKS5hY3RpdmUgPSBmYWxzZTtcclxuICAgICAgICAgICAgLy8gICAgIH1cclxuICAgICAgICAgICAgLy8gfSk7XHJcbiAgICAgICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgIGNjLmZ4LkdhbWVDb25maWcuTEVWRUxfSU5GT19pbml0KHRydWUsMCk7XHJcbiAgICAgICAgICAgIH0sIDEyMDApO1xyXG4gICAgICAgIFxyXG4gICAgICAgICAgICAvLyB0aGlzLm5vZGUucGFyZW50LnBhcmVudC5wYXJlbnQuZGVzdHJveSgpO1xyXG4gICAgICBcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgYWdhaW5MZXZlbCgpe1xyXG4gICAgICAgIGNjLmZ4LkF1ZGlvTWFuYWdlci5faW5zdGFuY2UucGxheUVmZmVjdChcImFubml1X0JpZ1wiLG51bGwpO1xyXG4gICAgICAgIGlmKGNjLmZ4LkdhbWVDb25maWcuR01fSU5GTy5ocCA8IDEpe1xyXG4gICAgICAgICAgICBNaW5pR2FtZVNkay5BUEkuc2hvd1RvYXN0KFwi5L2T5Yqb5YC85LiN6LazXCIpO1xyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfSBcclxuICAgICAgICBpZighdGhpcy5hZ2FpbkNhblRvdWNoKSByZXR1cm47XHJcbiAgICAgICAgXHJcbiAgICAgICAgdGhpcy5hZ2FpbkNhblRvdWNoID0gZmFsc2U7XHJcbiAgICAgICAgXHJcbiAgICAgICAgLy8gTWFwQ29ucm9sZXIuX2luc3RhbmNlID0gbnVsbDtcclxuICAgICAgICBjYy5meC5BdWRpb01hbmFnZXIuX2luc3RhbmNlLnBsYXlFZmZlY3QoXCJ6aHVhbjFcIixudWxsKTtcclxuICAgICAgICB0aGlzLm5vZGUucGFyZW50LnBhcmVudC5wYXJlbnQuZ2V0Q2hpbGRCeU5hbWUoXCJ6aHVhbmNoYW5nXCIpLmFjdGl2ZSA9IHRydWU7XHJcbiAgICAgICAgdGhpcy5ub2RlLnBhcmVudC5wYXJlbnQucGFyZW50LmdldENoaWxkQnlOYW1lKFwiemh1YW5jaGFuZ1wiKS5nZXRDb21wb25lbnQoc3AuU2tlbGV0b24pLnNldEFuaW1hdGlvbigxLFwidXBcIixmYWxzZSk7XHJcbiAgICAgICAgLy8gdGhpcy5ub2RlLnBhcmVudC5wYXJlbnQucGFyZW50LmdldENoaWxkQnlOYW1lKFwiemh1YW5jaGFuZ1wiKS5nZXRDb21wb25lbnQoc3AuU2tlbGV0b24pLnNldENvbXBsZXRlTGlzdGVuZXIoKGVudHJ5KSA9PiB7XHJcbiAgICAgICAgLy8gICAgIGlmIChlbnRyeS5hbmltYXRpb24ubmFtZSA9PT0gXCJ1cFwiKSB7XHJcbiAgICAgICAgLy8gICAgICAgICAvLyDliqjnlLvmkq3mlL7nu5PmnZ/lkI7miafooYznmoTpgLvovpFcclxuICAgICAgICAvLyAgICAgICAgIHRoaXMubm9kZS5wYXJlbnQucGFyZW50LnBhcmVudC5nZXRDaGlsZEJ5TmFtZShcInpodWFuY2hhbmdcIikuYWN0aXZlID0gZmFsc2U7XHJcbiAgICAgICAgLy8gICAgIH1cclxuICAgICAgICAvLyB9KTtcclxuICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgICAgICAgICAgIGNjLmZ4LkdhbWVDb25maWcuTEVWRUxfSU5GT19pbml0KHRydWUsMCk7XHJcbiAgICAgICAgfSwgMTIwMCk7XHJcbiAgICAgICAgLy8gdGhpcy5ub2RlLnBhcmVudC5wYXJlbnQucGFyZW50LmRlc3Ryb3koKTtcclxuICAgIH1cclxuXHJcbiAgICByZXZpZXdMZXZlbCgpe1xyXG4gICAgICAgIGNjLmZ4LkF1ZGlvTWFuYWdlci5faW5zdGFuY2UucGxheUVmZmVjdChcImFubml1X0JpZ1wiLG51bGwpO1xyXG4gICAgICAgIGxldCBjb2luID0gOTAwO1xyXG4gICAgICAgIGlmKGNjLmZ4LkdhbWVDb25maWcuR01fSU5GTy5yZXZpZXcgPT0gMSkgY29pbiA9IDE5MDA7XHJcbiAgICAgICAgZWxzZSBpZihjYy5meC5HYW1lQ29uZmlnLkdNX0lORk8ucmV2aWV3ID09IDIpIGNvaW4gPSAyNTAwO1xyXG4gICAgICAgIC8vIGNvbnNvbGUubG9nKFwi6Ieq6Lqr6YeR5biBOlwiLGNjLmZ4LkdhbWVDb25maWcuR01fSU5GTy5jb2luLFwi5raI6ICX6YeR5biBOlwiLGNvaW4pO1xyXG4gICAgICAgIGlmKGNjLmZ4LkdhbWVDb25maWcuR01fSU5GTy5jb2luIDwgTWF0aC5hYnMoY29pbikpe1xyXG4gICAgICAgICAgICBNaW5pR2FtZVNkay5BUEkuc2hvd1RvYXN0KFwi6YeR5biB5LiN6Laz77yM5peg5rOV5Yqg5pe26Ze0XCIpO1xyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2V7XHJcbiAgICAgICAgICAgIHRoaXMucnVuUmV3aXZlKC1jb2luKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgcnVuUmV3aXZlKGRhdGEpe1xyXG4gICAgICAgIGNvbnNvbGUubG9nKFwi5aSN5rS75Zue6LCD5Ye95pWw5YaFXCIsZGF0YSk7XHJcbiAgICAgICAgY2MuZnguR2FtZVRvb2wuY2hhbmdlQ29pbihkYXRhKTtcclxuICAgICAgICBNaW5pR2FtZVNkay5BUEkuc2hvd1RvYXN0KFwi57un57ut5ri45oiPXCIpO1xyXG4gICBcclxuICAgICAgICBpZihjYy5meC5HYW1lQ29uZmlnLkdNX0lORk8ucmV2aWV3IDwgMilcclxuICAgICAgICAgICAgY2MuZnguR2FtZUNvbmZpZy5HTV9JTkZPLnJldmlldyArPSAxO1xyXG4gICAgICAgIFxyXG4gICAgICAgIHRoaXMuZ2FtZU92ZXIgPSBmYWxzZTtcclxuICAgICAgICB0aGlzLnRpbWVOdW1iZXIgPSAyMTtcclxuICAgICAgICB0aGlzLmFkZF9UaW1lICs9IDIwO1xyXG4gICAgICAgIHRoaXMucGF1c2UgPSBmYWxzZTtcclxuICAgICAgICB0aGlzLm5vZGUucGFyZW50LnBhcmVudC5nZXRDaGlsZEJ5TmFtZShcIkxvc2VcIikuYWN0aXZlID0gZmFsc2U7XHJcbiAgICAgICAgdGhpcy5zdGFydFRpbWVDdXREb3duKCk7XHJcbiAgICB9XHJcblxyXG5cclxuICAgXHJcbiAgICBob21lQnRuKCl7XHJcbiAgICAgICAgLy8gYWxlcnQoXCLmuLjmiI/lpLHotKVcIik7XHJcbiAgICAgICAgY2MuZnguQXVkaW9NYW5hZ2VyLl9pbnN0YW5jZS5wbGF5RWZmZWN0KFwiYW5uaXVfQmlnXCIsbnVsbCk7XHJcbiAgICAgICAgaWYoIXRoaXMuaG9tZUNhblRvdWNoKSByZXR1cm47XHJcbiAgICAgICAgdGhpcy5ob21lQ2FuVG91Y2ggPSBmYWxzZTtcclxuICAgICAgICB0aGlzLm5vZGUucGFyZW50LnBhcmVudC5nZXRDaGlsZEJ5TmFtZShcIkxvc2VcIikuYWN0aXZlID0gdHJ1ZTtcclxuICAgICAgICB0aGlzLm5vZGUucGFyZW50LnBhcmVudC5nZXRDaGlsZEJ5TmFtZShcIkxvc2VcIikuZ2V0Q2hpbGRCeU5hbWUoXCJUaW1lXCIpLmFjdGl2ZSA9IGZhbHNlO1xyXG4gICAgICAgIHRoaXMubm9kZS5wYXJlbnQucGFyZW50LmdldENoaWxkQnlOYW1lKFwiTG9zZVwiKS5nZXRDaGlsZEJ5TmFtZShcIkJvb21cIikuYWN0aXZlID0gZmFsc2U7XHJcbiAgICAgICAgdGhpcy5ub2RlLnBhcmVudC5wYXJlbnQuZ2V0Q2hpbGRCeU5hbWUoXCJMb3NlXCIpLmdldENoaWxkQnlOYW1lKFwiTG9ja1wiKS5hY3RpdmUgPSBmYWxzZTtcclxuICAgICAgICB0aGlzLm5vZGUucGFyZW50LnBhcmVudC5nZXRDaGlsZEJ5TmFtZShcIkxvc2VcIikuZ2V0Q2hpbGRCeU5hbWUoXCJIZWFsdGhcIikuYWN0aXZlID0gdHJ1ZTtcclxuICAgICAgICBsZXQgZGF0YSA9IHtcclxuICAgICAgICAgICAgdGltZTp0aGlzLmNvdW50X1RpbWUsICAgICAgICAgXHJcbiAgICAgICAgICAgIGFkZF9UaW1lOnRoaXMuYWRkX1RpbWUsXHJcbiAgICAgICAgICAgIHJlc3VsdDpcImZhaWxcIlxyXG4gICAgICAgIH1cclxuICAgICAgICBjYy5meC5HYW1lVG9vbC5zaHVzaHVfVHJhY2soXCJmaW5pc2hfc3RhZ2VcIixkYXRhKTtcclxuICAgICAgICBpZih0aGlzLmdhbWVTdGFydCA9PSB0cnVlKXtcclxuICAgICAgICAgICAgY2MuZnguR2FtZVRvb2wuc2V0VXNlckhlYWx0aCgtMSwoZGF0YSk9PntcclxuICAgICAgICAgICAgfSlcclxuICAgICAgICB9XHJcbiAgICAgICAgLy8gdGhpcy5ub2RlLnBhcmVudC5wYXJlbnQucGFyZW50LmRlc3Ryb3koKTtcclxuICAgIH1cclxuXHJcbiAgICByZXR1cm5Ib21lKCl7XHJcbiAgICAgICAgY2MuZnguQXVkaW9NYW5hZ2VyLl9pbnN0YW5jZS5wbGF5RWZmZWN0KFwiYW5uaXVfQmlnXCIsbnVsbCk7XHJcbiAgICAgICAgaWYoTWFwQ29ucm9sZXIuX2luc3RhbmNlID0gbnVsbCl7XHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcbiAgICAgICAgLy8gTWluaUdhbWVTZGsuQVBJLnNob3dUb2FzdChcIuS9k+WKm+WAvOWHj+WwkVwiKTtcclxuICAgICAgICAvLyBNYXBDb25yb2xlci5faW5zdGFuY2UgPSBudWxsO1xyXG4gICAgICAgIGNjLmZ4LkdhbWVDb25maWcuTEVWRUxfSU5GT19pbml0KGZhbHNlLDApO1xyXG4gICAgICAgIGlmKHRoaXMubmV3X21vZGUgPT0gMyl7XHJcbiAgICAgICAgICAgIHRoaXMubm9kZS5wYXJlbnQucGFyZW50LmdldENoaWxkQnlOYW1lKFwiV2luXCIpLmFjdGl2ZSA9IGZhbHNlO1xyXG4gICAgICAgICAgICB0aGlzLm9wZW5OZXdNb2RlKDEpO1xyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGNjLmZ4LkF1ZGlvTWFuYWdlci5faW5zdGFuY2UucGxheUVmZmVjdChcInpodWFuMVwiLG51bGwpO1xyXG4gICAgICAgIHRoaXMubm9kZS5wYXJlbnQucGFyZW50LnBhcmVudC5nZXRDaGlsZEJ5TmFtZShcInpodWFuY2hhbmdcIikuYWN0aXZlID0gdHJ1ZTtcclxuICAgICAgICB0aGlzLm5vZGUucGFyZW50LnBhcmVudC5wYXJlbnQuZ2V0Q2hpbGRCeU5hbWUoXCJ6aHVhbmNoYW5nXCIpLmdldENvbXBvbmVudChzcC5Ta2VsZXRvbikuc2V0QW5pbWF0aW9uKDEsXCJ1cFwiLGZhbHNlKTtcclxuICAgICAgICBjYy5kaXJlY3Rvci5wcmVsb2FkU2NlbmUoXCJIb21lU2NlbmVcIiwgKGVyciwgYXNzZXQpID0+IHtcclxuICAgICAgICAgICAgaWYgKGVycikge1xyXG4gICAgICAgICAgICAgICAgY29uc29sZS5lcnJvcign5Yqo5oCB5Yqg6L29IFByZWZhYiDlpLHotKU6JywgZXJyKTtcclxuICAgICAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBcclxuICAgICAgICB9KTtcclxuXHJcbiAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgICAgICAgIGNjLmRpcmVjdG9yLmxvYWRTY2VuZShcIkhvbWVTY2VuZVwiKTtcclxuICAgICAgICB9LCAxMjAwKTtcclxuICAgIH1cclxuXHJcbiAgICAvL+WIpOaWrea4uOaIj+Wksei0pVxyXG4gICAgZmFpbExldmVsKHR5cGUpe1xyXG4gICAgICAgIHRoaXMuc3RvcFRpbWVDdXREb3duKCk7XHJcbiAgICAgICAgaWYodGhpcy5nYW1lT3Zlcj09IHRydWUgfHx0aGlzLmdhbWVXaW4gPT0gdHJ1ZSl7XHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGxldCB0aW1lID0gMDtcclxuICAgICAgICB0aGlzLmdhbWVPdmVyID0gdHJ1ZTtcclxuICAgICAgICBpZih0eXBlID09IFwiYm9vbVwiKXtcclxuICAgICAgICAgICAgdGltZSA9IDIwMDA7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5ub2RlLnBhcmVudC5wYXJlbnQuZ2V0Q2hpbGRCeU5hbWUoXCJMb3NlXCIpLmFjdGl2ZSA9IHRydWU7XHJcbiAgICAgICAgICAgICAgICB0aGlzLm5vZGUucGFyZW50LnBhcmVudC5nZXRDaGlsZEJ5TmFtZShcIkxvc2VcIikuZ2V0Q2hpbGRCeU5hbWUoXCJUaW1lXCIpLmFjdGl2ZSA9IHRydWU7XHJcbiAgICAgICAgICAgICAgICB0aGlzLm5vZGUucGFyZW50LnBhcmVudC5nZXRDaGlsZEJ5TmFtZShcIkxvc2VcIikuZ2V0Q2hpbGRCeU5hbWUoXCJCb29tXCIpLmFjdGl2ZSA9IGZhbHNlO1xyXG4gICAgICAgICAgICAgICAgbGV0IGJ1eUJ0biA9IHRoaXMubm9kZS5wYXJlbnQucGFyZW50LmdldENoaWxkQnlOYW1lKFwiTG9zZVwiKS5nZXRDaGlsZEJ5TmFtZShcIlRpbWVcIikuZ2V0Q2hpbGRCeU5hbWUoXCJidXlCdG5cIik7XHJcbiAgICAgICAgICAgICAgICBidXlCdG4uZ2V0Q2hpbGRCeU5hbWUoXCJjb2luMVwiKS5hY3RpdmUgPSBidXlCdG4uZ2V0Q2hpbGRCeU5hbWUoXCJjb2luMlwiKS5hY3RpdmUgPSBidXlCdG4uZ2V0Q2hpbGRCeU5hbWUoXCJjb2luM1wiKS5hY3RpdmUgPWZhbHNlOyBcclxuICAgICAgICAgICAgICAgIGlmKGNjLmZ4LkdhbWVDb25maWcuR01fSU5GTy5yZXZpZXcgPT0gMClidXlCdG4uZ2V0Q2hpbGRCeU5hbWUoXCJjb2luMVwiKS5hY3RpdmUgPSB0cnVlO1xyXG4gICAgICAgICAgICAgICAgZWxzZSBpZihjYy5meC5HYW1lQ29uZmlnLkdNX0lORk8ucmV2aWV3ID09IDEpIGJ1eUJ0bi5nZXRDaGlsZEJ5TmFtZShcImNvaW4yXCIpLmFjdGl2ZSA9IHRydWU7XHJcbiAgICAgICAgICAgICAgICBlbHNlIGlmKGNjLmZ4LkdhbWVDb25maWcuR01fSU5GTy5yZXZpZXcgPT0gMikgYnV5QnRuLmdldENoaWxkQnlOYW1lKFwiY29pbjNcIikuYWN0aXZlID0gdHJ1ZTtcclxuICAgICAgICAgICAgICAgIGlmKHR5cGUpe1xyXG4gICAgICAgICAgICAgICAgICAgIGlmKHR5cGUgPT0gXCJib29tXCIpe1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLm5vZGUucGFyZW50LnBhcmVudC5nZXRDaGlsZEJ5TmFtZShcIkxvc2VcIikuZ2V0Q2hpbGRCeU5hbWUoXCJUaW1lXCIpLmFjdGl2ZSA9IGZhbHNlO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLm5vZGUucGFyZW50LnBhcmVudC5nZXRDaGlsZEJ5TmFtZShcIkxvc2VcIikuZ2V0Q2hpbGRCeU5hbWUoXCJCb29tXCIpLmFjdGl2ZSA9IHRydWU7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgIH0sIHRpbWUpO1xyXG4gICAgXHJcbiAgICAgICAgLy8gY29uc29sZS5sb2coXCLmuLjmiI/lpLHotKVcIik7XHJcbiAgICB9XHJcblxyXG4gICAgLy/miZPlvIDmlrDmqKHlvI/lvLnnqpdcclxuICAgIG9wZW5OZXdNb2RlKHR5cGUpe1xyXG4gICAgICAgIGxldCBpbmRleCA9IDA7XHJcbiAgICAgICAgY29uc3QgQkxPQ0tTX1BFUl9GUkFNRSA9IDU7IC8vIOavj+W4p+mUgOavgeeahOaWueWdl+aVsOmHj1xyXG4gICAgICAgIGNvbnN0IGRlc3Ryb3lCbG9ja3MgPSAoKSA9PiB7XHJcbiAgICAgICAgICAgIGNvbnN0IGVuZEluZGV4ID0gTWF0aC5taW4oaW5kZXggKyBCTE9DS1NfUEVSX0ZSQU1FLCB0aGlzLmJsb2Nrcy5sZW5ndGgpO1xyXG4gICAgICAgICAgICBmb3IgKDsgaW5kZXggPCBlbmRJbmRleDsgaW5kZXgrKykge1xyXG4gICAgICAgICAgICAgICAgaWYgKHRoaXMuYmxvY2tzW2luZGV4XSkge1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuYmxvY2tzW2luZGV4XS5kZXN0cm95KCk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgLy8g5aaC5p6c6L+Y5pyJ5pa55Z2X5pyq6ZSA5q+B77yM5LiL5LiA5bin57un57utXHJcbiAgICAgICAgICAgIGlmIChpbmRleCA8IHRoaXMuYmxvY2tzLmxlbmd0aCkge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5zY2hlZHVsZU9uY2UoZGVzdHJveUJsb2NrcywgMCk7XHJcbiAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9O1xyXG4gICAgICAgIC8vIOW8gOWni+WIhuW4p+mUgOavgeaWueWdl1xyXG4gICAgICAgIGRlc3Ryb3lCbG9ja3MoKTtcclxuICAgICAgICB0aGlzLm5vZGUucGFyZW50LnBhcmVudC5nZXRDaGlsZEJ5TmFtZShcIk5ld01vZGVcIikuYWN0aXZlID0gdHJ1ZTtcclxuICAgICAgICB0aGlzLm5vZGUucGFyZW50LnBhcmVudC5nZXRDaGlsZEJ5TmFtZShcIk5ld01vZGVcIikuZ2V0Q29tcG9uZW50KFwiTmV3TW9kZVwiKS5zZXRNb2RlKHR5cGUpO1xyXG4gICAgfVxyXG5cclxuICAgIFxyXG4gICAgZG93bkRvb3IoY29sb3IsdHlwZSl7XHJcbiAgICAgICAgZm9yKGxldCBpPTA7IGk8dGhpcy53YWxsQXJyYXkubGVuZ3RoO2krKyl7XHJcbiAgICAgICAgICAgIGlmKHRoaXMud2FsbEFycmF5W2ldLmdldENoaWxkQnlOYW1lKFwid2FsbFwiKS5nZXRDb21wb25lbnQoXCJXYWxsXCIpLmNvbG9yID09IGNvbG9yKXtcclxuICAgICAgICAgICAgICAgIGlmKHR5cGUpe1xyXG4gICAgICAgICAgICAgICAgICAgIGlmKHR5cGUgPT0gNSl7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmKCB0aGlzLndhbGxBcnJheVtpXS5nZXRDaGlsZEJ5TmFtZShcIndhbGxcIikuZ2V0Q29tcG9uZW50KFwiV2FsbFwiKS5zcGVjaWFsID09IDEpe1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy53YWxsQXJyYXlbaV0uZ2V0Q2hpbGRCeU5hbWUoXCJ3YWxsXCIpLmdldENvbXBvbmVudChcIldhbGxcIikuZG93bkRvb3IoKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICBlbHNlICB0aGlzLndhbGxBcnJheVtpXS5nZXRDaGlsZEJ5TmFtZShcIndhbGxcIikuZ2V0Q29tcG9uZW50KFwiV2FsbFwiKS5kb3duRG9vcigpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgZWxzZSB0aGlzLndhbGxBcnJheVtpXS5nZXRDaGlsZEJ5TmFtZShcIndhbGxcIikuZ2V0Q29tcG9uZW50KFwiV2FsbFwiKS5kb3duRG9vcigpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHVwRG9vcigpe1xyXG4gICAgICAgIGZvcihsZXQgaT0wOyBpPHRoaXMud2FsbEFycmF5Lmxlbmd0aDtpKyspe1xyXG4gICAgICAgICAgICBpZih0aGlzLndhbGxBcnJheVtpXS5nZXRDaGlsZEJ5TmFtZShcIndhbGxcIikub3BhY2l0eSA9PSAwKXtcclxuICAgICAgICAgICAgICAgIHRoaXMud2FsbEFycmF5W2ldLmdldENoaWxkQnlOYW1lKFwid2FsbFwiKS5nZXRDb21wb25lbnQoXCJXYWxsXCIpLnVwRG9vcigpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgLy/lvIDlp4vlgJLorqHml7ZcclxuICAgc3RhcnRUaW1lQ3V0RG93bigpe1xyXG4gICAgICAgIHRoaXMuc2NoZWR1bGVDYWxsYmFjayA9IGZ1bmN0aW9uKCl7XHJcbiAgICAgICAgICAgIGlmKHRoaXMucGF1c2UpIHJldHVybjtcclxuICAgICAgICAgICAgaWYodGhpcy50aW1lTnVtYmVyIDw9IDApe1xyXG4gICAgICAgICAgICAgICAgdGhpcy5zdG9wVGltZUN1dERvd24oKTtcclxuICAgICAgICAgICAgICAgIHZhciB0aW1lVGVtcCA9IGNjLmZ4LkdhbWVUb29sLmdldFRpbWVNYXJnaW4odGhpcy50aW1lTnVtYmVyKTtcclxuICAgICAgICAgICAgICAgIE51bWJlclRvSW1hZ2UuZ2V0VGltZU1hcmdpbih0aGlzLnRpbWVOdW1iZXIsNTAsXCJ0aW1lX1wiLHRoaXMudGltZUxhYmVsKVxyXG4gICAgICAgICAgICAgICAgLy8gdGhpcy50aW1lTGFiZWwuc3RyaW5nID0gdGltZVRlbXAudG9TdHJpbmcoKTtcclxuICAgICAgICAgICAgICAgIGlmKCF0aGlzLnBhdXNlKXRoaXMuZmFpbExldmVsKFwidGltZVwiKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBlbHNle1xyXG4gICAgICAgICAgICAgICAgdGhpcy50aW1lTnVtYmVyIC09IDE7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmNvdW50X1RpbWUgKz0gMTtcclxuICAgICAgICAgICAgICAgIHZhciB0aW1lVGVtcCA9IGNjLmZ4LkdhbWVUb29sLmdldFRpbWVNYXJnaW4odGhpcy50aW1lTnVtYmVyKTtcclxuICAgICAgICAgICAgICAgIE51bWJlclRvSW1hZ2UuZ2V0VGltZU1hcmdpbih0aGlzLnRpbWVOdW1iZXIsNTAsXCJ0aW1lX1wiLHRoaXMudGltZUxhYmVsKVxyXG4gICAgICAgICAgICAgICAgLy8gdGhpcy50aW1lTGFiZWwuc3RyaW5nID0gdGltZVRlbXAudG9TdHJpbmcoKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH0uYmluZCh0aGlzKTtcclxuICAgICAgICB0aGlzLnNjaGVkdWxlKHRoaXMuc2NoZWR1bGVDYWxsYmFjaywgMSk7XHJcbiAgICB9XHJcbiAgICAvLyDlgZzmraLlgJLorqHml7ZcclxuICAgIHN0b3BUaW1lQ3V0RG93bigpe1xyXG4gICAgICAgIGlmKHRoaXMuc2NoZWR1bGVDYWxsYmFjayl7XHJcbiAgICAgICAgICAgIHRoaXMudW5zY2hlZHVsZSh0aGlzLnNjaGVkdWxlQ2FsbGJhY2spO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICAvL+S9v+eUqOaXtumXtOmBk+WFt1xyXG4gICAgdXNlVGltZVByb3AoKXtcclxuICAgICAgICBpZih0aGlzLm5vZGUucGFyZW50LmdldENoaWxkQnlOYW1lKFwiSWNlXCIpLmFjdGl2ZSA9PSB0cnVlIHx8IHRoaXMuaGFtbWVyID09IHRydWUgXHJcbiAgICAgICAgfHwgdGhpcy5tYWdpY01hc2suYWN0aXZlPT0gdHJ1ZSB8fCB0aGlzLnRpbWVOdW1iZXIgPD0gMSl7XHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcbiAgICAgICAgIGxldCBmcmVlemVCdG4gPSB0aGlzLm5vZGUucGFyZW50LmdldENoaWxkQnlOYW1lKFwiQm90dG9tXCIpLmdldENoaWxkQnlOYW1lKFwidGltZUJ0blwiKTtcclxuICAgICAgICBpZihmcmVlemVCdG4uZ2V0Q29tcG9uZW50KFwiYnRuQ29udHJvbFwiKS5fdG91Y2gpe1xyXG4gICAgICAgICAgICBmcmVlemVCdG4uZ2V0Q29tcG9uZW50KFwiYnRuQ29udHJvbFwiKS5zZXRUb3VjaChmYWxzZSk7XHJcbiAgICAgICAgICAgIGlmKGNjLmZ4LkdhbWVDb25maWcuR01fSU5GTy5mcmVlemVBbW91bnQgPCAxKXtcclxuICAgICAgICAgICAgICAgIGlmKGNjLmZ4LkdhbWVDb25maWcuR01fSU5GTy5jb2luIDwgMTUwMCl7XHJcbiAgICAgICAgICAgICAgICAgICAgTWluaUdhbWVTZGsuQVBJLnNob3dUb2FzdChcIumHkeW4geS4jei2s++8jOaXoOazlei0reS5sOmBk+WFt1wiKTtcclxuICAgICAgICAgICAgICAgICAgICBmcmVlemVCdG4uZ2V0Q29tcG9uZW50KFwiYnRuQ29udHJvbFwiKS5zZXRUb3VjaCh0cnVlKTtcclxuICAgICAgICAgICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB0aGlzLm5vZGUucGFyZW50LnBhcmVudC5nZXRDaGlsZEJ5TmFtZShcInByb3BXaW5kb3dcIikuYWN0aXZlID0gdHJ1ZTtcclxuICAgICAgICAgICAgICAgIHRoaXMubm9kZS5wYXJlbnQucGFyZW50LnBhcmVudC5nZXRDb21wb25lbnQoXCJTY2VuZU1hbmFnZXJcIikub3BlblByb3BCdXkoXCJmcmVlemVcIik7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgZWxzZXtcclxuICAgICAgICAgICAgICAgIGlmKCF0aGlzLm5vZGUucGFyZW50LmdldENoaWxkQnlOYW1lKFwiSWNlXCIpLmFjdGl2ZSAmJiAhdGhpcy5wYXVzZSl7XHJcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgdGltZXN0YW1wID0gRGF0ZS5ub3coKTtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLmZyZWV6ZU1hc2suYWN0aXZlID0gdHJ1ZTtcclxuICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLnBhdXNlID0gdHJ1ZTtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLm5vZGUucGFyZW50LmdldENoaWxkQnlOYW1lKFwiSWNlXCIpLmFjdGl2ZSA9IHRydWU7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5ub2RlLnBhcmVudC5nZXRDaGlsZEJ5TmFtZShcIlRvcFwiKS5nZXRDaGlsZEJ5TmFtZShcIkljZVwiKS5hY3RpdmUgPSB0cnVlO1xyXG4gICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICBjYy5meC5HYW1lQ29uZmlnLkdNX0lORk8uZnJlZXplQW1vdW50IC09IDE7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYoY2MuZnguR2FtZUNvbmZpZy5HTV9JTkZPLmZyZWV6ZUFtb3VudCA8IDApICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBjYy5meC5HYW1lQ29uZmlnLkdNX0lORk8uZnJlZXplQW1vdW50ID0gMDtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLmljZUxhYmVsLnN0cmluZyA9IGNjLmZ4LkdhbWVDb25maWcuR01fSU5GTy5mcmVlemVBbW91bnQudG9TdHJpbmcoKTtcclxuICAgICAgICAgICAgICAgICAgICBsZXQgcHJvcEluZm8gPSBjYy5meC5TdG9yYWdlTWVzc2FnZS5nZXRTdG9yYWdlKFwicHJvcFwiKTtcclxuICAgICAgICAgICAgICAgICAgICBwcm9wSW5mby5mcmVlemVBbW91bnQgPSBjYy5meC5HYW1lQ29uZmlnLkdNX0lORk8uZnJlZXplQW1vdW50O1xyXG4gICAgICAgICAgICAgICAgICAgIHByb3BJbmZvLnRpbWVzdGFtcCA9IHRpbWVzdGFtcDtcclxuICAgICAgICAgICAgICAgICAgICBjYy5meC5TdG9yYWdlTWVzc2FnZS5zZXRTdG9yYWdlKFwicHJvcFwiLHByb3BJbmZvKTtcclxuICAgICAgICAgICAgICAgICAgICBjYy5meC5HYW1lVG9vbC5zZXRVc2VyUHJvcCgyMDAxLGNjLmZ4LkdhbWVDb25maWcuR01fSU5GTy5mcmVlemVBbW91bnQsKGRhdGEpPT57XHJcbiAgICAgICAgICAgICAgICAgICAgfSlcclxuICAgICAgICAgICAgICAgICAgICBsZXQgZGF0YSA9IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgaWQ6XCIyMDAxXCIsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIG51bTotMVxyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICBjYy5meC5HYW1lVG9vbC5zaHVzaHVfVHJhY2soXCJyZXNvdXJjZV9jb3N0XCIsZGF0YSk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBlbHNlIE1pbmlHYW1lU2RrLkFQSS5zaG93VG9hc3QoXCLpgZPlhbfkvb/nlKjkuK3vvIzor7fnqI3lkI7lho3or5VcIik7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcblxyXG5cclxuICAgIH1cclxuXHJcbiAgICAvL+ino+W8gOaXtumXtOWGu+e7k1xyXG4gICAgb3BlbkljZSgpe1xyXG4gICAgICAgIGlmKHRoaXMubm9kZS5wYXJlbnQuZ2V0Q2hpbGRCeU5hbWUoXCJJY2VcIikuYWN0aXZlKXtcclxuICAgICAgICAgICAgdGhpcy5mcmVlemVNYXNrLmFjdGl2ZSA9IGZhbHNlO1xyXG4gICAgICAgICAgICBsZXQgZnJlZXplQnRuID0gdGhpcy5ub2RlLnBhcmVudC5nZXRDaGlsZEJ5TmFtZShcIkJvdHRvbVwiKS5nZXRDaGlsZEJ5TmFtZShcInRpbWVCdG5cIik7XHJcbiAgICAgICAgICAgIGZyZWV6ZUJ0bi5nZXRDb21wb25lbnQoXCJidG5Db250cm9sXCIpLnNldFRvdWNoKHRydWUpO1xyXG4gICAgICAgICAgICB0aGlzLm5vZGUucGFyZW50LmdldENoaWxkQnlOYW1lKFwiSWNlXCIpLmFjdGl2ZSA9IGZhbHNlO1xyXG4gICAgICAgICAgICB0aGlzLm5vZGUucGFyZW50LmdldENoaWxkQnlOYW1lKFwiVG9wXCIpLmdldENoaWxkQnlOYW1lKFwiSWNlXCIpLmFjdGl2ZSA9IGZhbHNlO1xyXG4gICAgICAgICAgICB0aGlzLnBhdXNlID0gZmFsc2U7XHJcbiAgICAgICAgICAgIC8vIHRoaXMuc3RhcnRUaW1lQ3V0RG93bigpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuICAgIFxyXG4gICAgaGFuZGxlQnV5U3VjY2VzcyhkYXRhKXtcclxuICAgICAgICB0aGlzLnBhdXNlID0gZmFsc2U7XHJcbiAgICAgICAgY29uc3QgdGltZXN0YW1wID0gRGF0ZS5ub3coKTtcclxuICAgICAgICAvLyBjb25zb2xlLmxvZyhcIuWbnuiwg+WHveaVsOWGhTpcIix0aGlzLnBhdXNlKTtcclxuICAgICAgICBsZXQgZnJlZXplQnRuID0gdGhpcy5ub2RlLnBhcmVudC5nZXRDaGlsZEJ5TmFtZShcIkJvdHRvbVwiKS5nZXRDaGlsZEJ5TmFtZShcInRpbWVCdG5cIik7XHJcbiAgICAgICAgbGV0IGhhbW1lckJ0biA9IHRoaXMubm9kZS5wYXJlbnQuZ2V0Q2hpbGRCeU5hbWUoXCJCb3R0b21cIikuZ2V0Q2hpbGRCeU5hbWUoXCJkZXN0cm95QnRuXCIpO1xyXG4gICAgICAgIGxldCBtYWdpY0J0biA9IHRoaXMubm9kZS5wYXJlbnQuZ2V0Q2hpbGRCeU5hbWUoXCJCb3R0b21cIikuZ2V0Q2hpbGRCeU5hbWUoXCJtYWdpY0J0blwiKTtcclxuICAgICAgICBpZihkYXRhID09IFwiZnJlZXplQW1vdW50XCIpIGZyZWV6ZUJ0bi5nZXRDb21wb25lbnQoXCJidG5Db250cm9sXCIpLnNldFRvdWNoKHRydWUpO1xyXG4gICAgICAgIGVsc2UgaWYoZGF0YSA9PSBcImhhbW1lckFtb3VudFwiKSBoYW1tZXJCdG4uZ2V0Q29tcG9uZW50KFwiYnRuQ29udHJvbFwiKS5zZXRUb3VjaCh0cnVlKTsgXHJcbiAgICAgICAgZWxzZSBpZihkYXRhID09IFwibWFnaWNBbW91bnRcIikgbWFnaWNCdG4uZ2V0Q29tcG9uZW50KFwiYnRuQ29udHJvbFwiKS5zZXRUb3VjaCh0cnVlKTtcclxuICAgICAgICBpZihkYXRhID09IFwiZnJlZXplQW1vdW50XCIpe1xyXG4gICAgICAgICAgICBjYy5meC5HYW1lQ29uZmlnLkdNX0lORk8uZnJlZXplQW1vdW50ICs9IDM7XHJcbiAgICAgICAgICAgIGxldCBwcm9wSW5mbyA9IGNjLmZ4LlN0b3JhZ2VNZXNzYWdlLmdldFN0b3JhZ2UoXCJwcm9wXCIpO1xyXG4gICAgICAgICAgICBwcm9wSW5mby5mcmVlemVBbW91bnQgPSBjYy5meC5HYW1lQ29uZmlnLkdNX0lORk8uZnJlZXplQW1vdW50O1xyXG4gICAgICAgICAgICBwcm9wSW5mby50aW1lc3RhbXAgPSB0aW1lc3RhbXA7XHJcbiAgICAgICAgICAgIGNjLmZ4LlN0b3JhZ2VNZXNzYWdlLnNldFN0b3JhZ2UoXCJwcm9wXCIscHJvcEluZm8pO1xyXG4gICAgICAgICAgICB0aGlzLm5vZGUucGFyZW50LnBhcmVudC5wYXJlbnQuZ2V0Q29tcG9uZW50KFwiU2NlbmVNYW5hZ2VyXCIpLmNsb3NlUHJvcEJ1eSgpO1xyXG4gICAgICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgICAgICAgICAgIHRoaXMuaWNlTGFiZWwuc3RyaW5nID0gY2MuZnguR2FtZUNvbmZpZy5HTV9JTkZPLmZyZWV6ZUFtb3VudC50b1N0cmluZygpO1xyXG4gICAgICAgICAgICAgICAgTWluaUdhbWVTZGsuQVBJLnNob3dUb2FzdChcIui0reS5sOWGu+e7k+aXtumXtOmBk+WFt+aIkOWKn1wiKTtcclxuICAgICAgICAgICAgfSwgMjAwKTtcclxuXHJcbiAgICAgICAgICAgIFxyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIGlmKGRhdGEgPT0gXCJtYWdpY0Ftb3VudFwiKXtcclxuICAgICAgICAgICAgY2MuZnguR2FtZUNvbmZpZy5HTV9JTkZPLm1hZ2ljQW1vdW50ICs9IDM7XHJcbiAgICAgICAgICAgIGxldCBwcm9wSW5mbyA9IGNjLmZ4LlN0b3JhZ2VNZXNzYWdlLmdldFN0b3JhZ2UoXCJwcm9wXCIpO1xyXG4gICAgICAgICAgICBwcm9wSW5mby5tYWdpY0Ftb3VudCA9IGNjLmZ4LkdhbWVDb25maWcuR01fSU5GTy5tYWdpY0Ftb3VudDtcclxuICAgICAgICAgICAgcHJvcEluZm8udGltZXN0YW1wID0gdGltZXN0YW1wO1xyXG4gICAgICAgICAgICBjYy5meC5TdG9yYWdlTWVzc2FnZS5zZXRTdG9yYWdlKFwicHJvcFwiLHByb3BJbmZvKTtcclxuICAgICAgICAgICAgdGhpcy5ub2RlLnBhcmVudC5wYXJlbnQucGFyZW50LmdldENvbXBvbmVudChcIlNjZW5lTWFuYWdlclwiKS5jbG9zZVByb3BCdXkoKTtcclxuICAgICAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgICAgICAgICAgICBNaW5pR2FtZVNkay5BUEkuc2hvd1RvYXN0KFwi6LSt5Lmw6ZSk5a2Q6YGT5YW35oiQ5YqfXCIpO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5tYWdpY0xhYmVsLnN0cmluZyA9IGNjLmZ4LkdhbWVDb25maWcuR01fSU5GTy5tYWdpY0Ftb3VudC50b1N0cmluZygpO1xyXG4gICAgICAgICAgICB9LCAyMDApO1xyXG4gICAgICAgICAgICBcclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSBpZihkYXRhID09IFwiaGFtbWVyQW1vdW50XCIpe1xyXG4gICAgICAgICAgICBjYy5meC5HYW1lQ29uZmlnLkdNX0lORk8uaGFtbWVyQW1vdW50ICs9IDM7XHJcbiAgICAgICAgICAgIGxldCBwcm9wSW5mbyA9IGNjLmZ4LlN0b3JhZ2VNZXNzYWdlLmdldFN0b3JhZ2UoXCJwcm9wXCIpO1xyXG4gICAgICAgICAgICBwcm9wSW5mby5oYW1tZXJBbW91bnQgPSBjYy5meC5HYW1lQ29uZmlnLkdNX0lORk8uaGFtbWVyQW1vdW50O1xyXG4gICAgICAgICAgICBwcm9wSW5mby50aW1lc3RhbXAgPSB0aW1lc3RhbXA7XHJcbiAgICAgICAgICAgIGNjLmZ4LlN0b3JhZ2VNZXNzYWdlLnNldFN0b3JhZ2UoXCJwcm9wXCIscHJvcEluZm8pO1xyXG4gICAgICAgICAgICB0aGlzLm5vZGUucGFyZW50LnBhcmVudC5wYXJlbnQuZ2V0Q29tcG9uZW50KFwiU2NlbmVNYW5hZ2VyXCIpLmNsb3NlUHJvcEJ1eSgpO1xyXG4gICAgICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgICAgICAgICAgIHRoaXMuaGFtbWVyTGFiZWwuc3RyaW5nID0gY2MuZnguR2FtZUNvbmZpZy5HTV9JTkZPLmhhbW1lckFtb3VudC50b1N0cmluZygpO1xyXG4gICAgICAgICAgICAgICAgTWluaUdhbWVTZGsuQVBJLnNob3dUb2FzdChcIui0reS5sOmtlOazleajkumBk+WFt+aIkOWKn1wiKTtcclxuICAgICAgICAgICAgfSwgMjAwKTtcclxuXHJcbiAgICAgICAgfVxyXG4gICAgICAgIFxyXG4gICAgICAgIFxyXG5cclxuICAgIH1cclxuXHJcbiAgICAvL+S9v+eUqOmUpOWtkOmBk+WFt1xyXG4gICAgdXNlSGFtbWVyKCl7XHJcbiAgICAgICAgaWYodGhpcy5ub2RlLnBhcmVudC5nZXRDaGlsZEJ5TmFtZShcIkljZVwiKS5hY3RpdmUgPT0gdHJ1ZSB8fCB0aGlzLmhhbW1lciA9PSB0cnVlIFxyXG4gICAgICAgIHx8IHRoaXMubWFnaWNNYXNrLmFjdGl2ZT09IHRydWUgfHwgdGhpcy50aW1lTnVtYmVyIDw9IDEpe1xyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGxldCBoYW1tZXJCdG4gPSB0aGlzLm5vZGUucGFyZW50LmdldENoaWxkQnlOYW1lKFwiQm90dG9tXCIpLmdldENoaWxkQnlOYW1lKFwiZGVzdHJveUJ0blwiKTtcclxuICAgICAgICBpZihoYW1tZXJCdG4uZ2V0Q29tcG9uZW50KFwiYnRuQ29udHJvbFwiKS5fdG91Y2gpe1xyXG4gICAgICAgICAgICBoYW1tZXJCdG4uZ2V0Q29tcG9uZW50KFwiYnRuQ29udHJvbFwiKS5zZXRUb3VjaChmYWxzZSk7XHJcbiAgICAgICAgICAgIGlmKGNjLmZ4LkdhbWVDb25maWcuR01fSU5GTy5oYW1tZXJBbW91bnQgPCAxKXtcclxuICAgICAgICAgICAgICAgIGlmKGNjLmZ4LkdhbWVDb25maWcuR01fSU5GTy5jb2luIDwgMTUwMCl7XHJcbiAgICAgICAgICAgICAgICAgICAgTWluaUdhbWVTZGsuQVBJLnNob3dUb2FzdChcIumHkeW4geS4jei2s++8jOaXoOazlei0reS5sOmBk+WFt1wiKTtcclxuICAgICAgICAgICAgICAgICAgICBoYW1tZXJCdG4uZ2V0Q29tcG9uZW50KFwiYnRuQ29udHJvbFwiKS5zZXRUb3VjaCh0cnVlKTtcclxuICAgICAgICAgICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgIHRoaXMubm9kZS5wYXJlbnQucGFyZW50LmdldENoaWxkQnlOYW1lKFwicHJvcFdpbmRvd1wiKS5hY3RpdmUgPSB0cnVlO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5ub2RlLnBhcmVudC5wYXJlbnQucGFyZW50LmdldENvbXBvbmVudChcIlNjZW5lTWFuYWdlclwiKS5vcGVuUHJvcEJ1eShcImhhbW1lclwiKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBlbHNle1xyXG4gICAgICAgICAgICAgICAgaWYoIXRoaXMuaGFtbWVyKXtcclxuICAgICAgICAgICAgICAgICAgICBjb25zdCB0aW1lc3RhbXAgPSBEYXRlLm5vdygpO1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuaGFtbWVyTWFzay5hY3RpdmUgPSB0cnVlO1xyXG5cclxuICAgICAgICAgICAgICAgICAgICB0aGlzLmhhbW1lciA9IHRydWU7XHJcbiAgICAgICAgICAgICAgICAgICAgY2MuZnguR2FtZUNvbmZpZy5HTV9JTkZPLmhhbW1lckFtb3VudCAtPSAxO1xyXG4gICAgICAgICAgICAgICAgICAgIGlmKGNjLmZ4LkdhbWVDb25maWcuR01fSU5GTy5oYW1tZXJBbW91bnQgPCAwKSAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgY2MuZnguR2FtZUNvbmZpZy5HTV9JTkZPLmhhbW1lckFtb3VudCA9IDA7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5oYW1tZXJMYWJlbC5zdHJpbmcgPSBjYy5meC5HYW1lQ29uZmlnLkdNX0lORk8uaGFtbWVyQW1vdW50LnRvU3RyaW5nKCk7XHJcbiAgICAgICAgICAgICAgICAgICAgbGV0IHByb3BJbmZvID0gY2MuZnguU3RvcmFnZU1lc3NhZ2UuZ2V0U3RvcmFnZShcInByb3BcIik7XHJcbiAgICAgICAgICAgICAgICAgICAgY29uc29sZS5sb2coXCLplKTlrZDpgZPlhbfkv6Hmga86XCIscHJvcEluZm8pO1xyXG4gICAgICAgICAgICAgICAgICAgIHByb3BJbmZvLmhhbW1lckFtb3VudCA9IGNjLmZ4LkdhbWVDb25maWcuR01fSU5GTy5oYW1tZXJBbW91bnQ7XHJcbiAgICAgICAgICAgICAgICAgICAgcHJvcEluZm8udGltZXN0YW1wID0gdGltZXN0YW1wO1xyXG4gICAgICAgICAgICAgICAgICAgIGNjLmZ4LlN0b3JhZ2VNZXNzYWdlLnNldFN0b3JhZ2UoXCJwcm9wXCIscHJvcEluZm8pO1xyXG4gICAgICAgICAgICAgICAgICAgIGNjLmZ4LkdhbWVUb29sLnNldFVzZXJQcm9wKDIwMDIsY2MuZnguR2FtZUNvbmZpZy5HTV9JTkZPLmhhbW1lckFtb3VudCwoZGF0YSk9PntcclxuICAgICAgICAgICAgICAgICAgICB9KVxyXG4gICAgICAgICAgICAgICAgICAgIGxldCBkYXRhID0ge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBpZDpcIjIwMDJcIixcclxuICAgICAgICAgICAgICAgICAgICAgICAgbnVtOi0xXHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIGNjLmZ4LkdhbWVUb29sLnNodXNodV9UcmFjayhcInJlc291cmNlX2Nvc3RcIixkYXRhKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIGVsc2UgTWluaUdhbWVTZGsuQVBJLnNob3dUb2FzdChcIumBk+WFt+S9v+eUqOS4re+8jOivt+eojeWQjuWGjeivlVwiKTtcclxuICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICB9XHJcblxyXG4gICAgfVxyXG4gXHJcbiAgICBidXlNYWdpYygpe1xyXG4gICAgICAgIGlmKGNjLmZ4LkdhbWVDb25maWcuR01fSU5GTy5jb2luIDwgMTUwMCl7XHJcbiAgICAgICAgICAgIE1pbmlHYW1lU2RrLkFQSS5zaG93VG9hc3QoXCLph5HluIHkuI3otrPvvIzml6Dms5XotK3kubDpgZPlhbdcIik7XHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcbiAgICAgICAgY2MuZnguR2FtZVRvb2wuYnV5UHJvcCgyMDAzLHRoaXMuaGFuZGxlQnV5U3VjY2Vzcy5iaW5kKHRoaXMsXCJtYWdpY0Ftb3VudFwiKSk7XHJcbiAgICB9XHJcblxyXG4gICAgYnV5SGFtbWVyKCl7XHJcbiAgICAgICAgaWYoY2MuZnguR2FtZUNvbmZpZy5HTV9JTkZPLmNvaW4gPCAxNTAwKXtcclxuICAgICAgICAgICAgTWluaUdhbWVTZGsuQVBJLnNob3dUb2FzdChcIumHkeW4geS4jei2s++8jOaXoOazlei0reS5sOmBk+WFt1wiKTtcclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuICAgICAgICBjYy5meC5HYW1lVG9vbC5idXlQcm9wKDIwMDIsIHRoaXMuaGFuZGxlQnV5U3VjY2Vzcy5iaW5kKHRoaXMsXCJoYW1tZXJBbW91bnRcIikpO1xyXG4gICAgfVxyXG5cclxuICAgIGJ1eUZyZWV6ZSgpe1xyXG4gICAgICAgIGlmKGNjLmZ4LkdhbWVDb25maWcuR01fSU5GTy5jb2luIDwgMTUwMCl7XHJcbiAgICAgICAgICAgIE1pbmlHYW1lU2RrLkFQSS5zaG93VG9hc3QoXCLph5HluIHkuI3otrPvvIzml6Dms5XotK3kubDpgZPlhbdcIik7XHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcbiAgICAgICAgY2MuZnguR2FtZVRvb2wuYnV5UHJvcCgyMDAxLHRoaXMuaGFuZGxlQnV5U3VjY2Vzcy5iaW5kKHRoaXMsXCJmcmVlemVBbW91bnRcIikpO1xyXG4gICAgfVxyXG5cclxuICAgIC8v5L2/55So6a2U5rOV5qOS6ZqP5py65raI6Zmk5Lik5Liq5pa55Z2XXHJcbiAgICB1c2VNYWdpYygpe1xyXG4gICAgICAgIGlmKHRoaXMubm9kZS5wYXJlbnQuZ2V0Q2hpbGRCeU5hbWUoXCJJY2VcIikuYWN0aXZlID09IHRydWUgfHwgdGhpcy5oYW1tZXIgPT0gdHJ1ZSBcclxuICAgICAgICB8fCB0aGlzLm1hZ2ljTWFzay5hY3RpdmU9PSB0cnVlIHx8IHRoaXMudGltZU51bWJlciA8PSAxKXtcclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuICAgICAgICBsZXQgbWFnaWNCdG4gPSB0aGlzLm5vZGUucGFyZW50LmdldENoaWxkQnlOYW1lKFwiQm90dG9tXCIpLmdldENoaWxkQnlOYW1lKFwibWFnaWNCdG5cIik7XHJcbiAgICAgICAgaWYobWFnaWNCdG4uZ2V0Q29tcG9uZW50KFwiYnRuQ29udHJvbFwiKS5fdG91Y2gpe1xyXG4gICAgICAgICAgICBtYWdpY0J0bi5nZXRDb21wb25lbnQoXCJidG5Db250cm9sXCIpLnNldFRvdWNoKGZhbHNlKTtcclxuICAgICAgICAgICAgaWYoY2MuZnguR2FtZUNvbmZpZy5HTV9JTkZPLm1hZ2ljQW1vdW50IDwgMSl7XHJcbiAgICAgICAgICAgICAgICBpZihjYy5meC5HYW1lQ29uZmlnLkdNX0lORk8uY29pbiA8IDE1MDApe1xyXG4gICAgICAgICAgICAgICAgICAgIE1pbmlHYW1lU2RrLkFQSS5zaG93VG9hc3QoXCLph5HluIHkuI3otrPvvIzml6Dms5XotK3kubDpgZPlhbdcIik7XHJcbiAgICAgICAgICAgICAgICAgICAgbWFnaWNCdG4uZ2V0Q29tcG9uZW50KFwiYnRuQ29udHJvbFwiKS5zZXRUb3VjaCh0cnVlKTtcclxuICAgICAgICAgICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB0aGlzLm5vZGUucGFyZW50LnBhcmVudC5nZXRDaGlsZEJ5TmFtZShcInByb3BXaW5kb3dcIikuYWN0aXZlID0gdHJ1ZTtcclxuICAgICAgICAgICAgICAgIHRoaXMubm9kZS5wYXJlbnQucGFyZW50LnBhcmVudC5nZXRDb21wb25lbnQoXCJTY2VuZU1hbmFnZXJcIikub3BlblByb3BCdXkoXCJtYWdpY1wiKTtcclxuICAgICAgICAgICAgICAgIC8vIE1pbmlHYW1lU2RrLkFQSS5zaG93VG9hc3QoXCLprZTms5Xmo5LmlbDph4/kuI3otrMs6Ieq5Yqo6LSt5Lmw6a2U5rOV5qOSXCIpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGVsc2V7XHJcbiAgICAgICAgICAgICAgICBjb25zdCB0aW1lc3RhbXAgPSBEYXRlLm5vdygpO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5tYWdpY01hc2suYWN0aXZlID0gdHJ1ZTtcclxuICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMubWFnaWNNYXNrLmFjdGl2ZSA9IGZhbHNlO1xyXG4gICAgICAgICAgICAgICAgICAgIG1hZ2ljQnRuLmdldENvbXBvbmVudChcImJ0bkNvbnRyb2xcIikuc2V0VG91Y2godHJ1ZSk7XHJcbiAgICAgICAgICAgICAgICB9LCAxMDAwKTtcclxuIFxyXG4gICAgICAgICAgICAgICAgY2MuZnguR2FtZUNvbmZpZy5HTV9JTkZPLm1hZ2ljQW1vdW50IC09IDE7XHJcbiAgICAgICAgICAgICAgICBpZihjYy5meC5HYW1lQ29uZmlnLkdNX0lORk8ubWFnaWNBbW91bnQgPCAwKSAgICBcclxuICAgICAgICAgICAgICAgICAgICBjYy5meC5HYW1lQ29uZmlnLkdNX0lORk8ubWFnaWNBbW91bnQgPSAwO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5tYWdpY0xhYmVsLnN0cmluZyA9IGNjLmZ4LkdhbWVDb25maWcuR01fSU5GTy5tYWdpY0Ftb3VudC50b1N0cmluZygpO1xyXG4gICAgICAgICAgICAgICAgbGV0IHByb3BJbmZvID0gY2MuZnguU3RvcmFnZU1lc3NhZ2UuZ2V0U3RvcmFnZShcInByb3BcIik7XHJcbiAgICAgICAgICAgICAgICBwcm9wSW5mby5tYWdpY0Ftb3VudCA9IGNjLmZ4LkdhbWVDb25maWcuR01fSU5GTy5tYWdpY0Ftb3VudDtcclxuICAgICAgICAgICAgICAgIHByb3BJbmZvLnRpbWVzdGFtcCA9IHRpbWVzdGFtcDtcclxuICAgICAgICAgICAgICAgIGNjLmZ4LlN0b3JhZ2VNZXNzYWdlLnNldFN0b3JhZ2UoXCJwcm9wXCIscHJvcEluZm8pO1xyXG4gICAgICAgICAgICAgICAgY2MuZnguR2FtZVRvb2wuc2V0VXNlclByb3AoMjAwMyxjYy5meC5HYW1lQ29uZmlnLkdNX0lORk8ubWFnaWNBbW91bnQsKGRhdGEpPT57XHJcbiAgICAgICAgICAgICAgICB9KVxyXG4gICAgICAgICAgICAgICAgbGV0IGRhdGEgPSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGlkOlwiMjAwM1wiLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBudW06LTFcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBjYy5meC5HYW1lVG9vbC5zaHVzaHVfVHJhY2soXCJyZXNvdXJjZV9jb3N0XCIsZGF0YSk7XHJcbiAgICAgICAgICAgICAgICBsZXQgbm9tYWxBcnJheSA9IFtdO1xyXG4gICAgICAgICAgICAgICAgLy8gdGhpcy5tYWdpY0J0bi5ub2RlLmFjdGl2ZSA9IGZhbHNlO1xyXG4gICAgICAgICAgICAgICAgZm9yKGxldCBpID0wOyBpPHRoaXMuYmxvY2tzLmxlbmd0aDsgaSsrKXtcclxuICAgICAgICAgICAgICAgICAgICAvLyBjb25zb2xlLmxvZyhcIuaWueWdl+exu+Wei1wiLHRoaXMuYmxvY2tzW2ldLmdldENvbXBvbmVudChcIkJsb2NrXCIpLnR5cGUpO1xyXG4gICAgICAgICAgICAgICAgICAgIGlmKHRoaXMuYmxvY2tzW2ldLmdldENvbXBvbmVudChcIkJsb2NrXCIpLnR5cGUgPT0gMyl7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMubG9hY2tBcnJheS5wdXNoKHRoaXMuYmxvY2tzW2ldKTtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgZWxzZSBpZih0aGlzLmJsb2Nrc1tpXS5nZXRDb21wb25lbnQoXCJCbG9ja1wiKS50eXBlID09IDQpe1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmZyZWV6ZUFycmF5LnB1c2godGhpcy5ibG9ja3NbaV0pO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICBlbHNlIGlmKHRoaXMuYmxvY2tzW2ldLmdldENvbXBvbmVudChcIkJsb2NrXCIpLnR5cGUgPT0gMTApe1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBpZih0aGlzLmJsb2Nrc1tpXS5nZXRDb21wb25lbnQoXCJCbG9ja1wiKS5ibG9ja19JbmZvLm5vZGUpe1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9tYWxBcnJheS5wdXNoKHRoaXMuYmxvY2tzW2ldLmdldENvbXBvbmVudChcIkJsb2NrXCIpLmJsb2NrX0luZm8ubm9kZSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSBub21hbEFycmF5LnB1c2godGhpcy5ibG9ja3NbaV0pO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICBlbHNle1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBub21hbEFycmF5LnB1c2godGhpcy5ibG9ja3NbaV0pO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIGlmKG5vbWFsQXJyYXkubGVuZ3RoID4gMSl7XHJcbiAgICAgICAgICAgICAgICAgICAgbm9tYWxBcnJheSA9IGNjLmZ4LkdhbWVUb29sLnNodWZmbGVBcnJheShub21hbEFycmF5KTtcclxuICAgICAgICAgICAgICAgICAgICBub21hbEFycmF5WzBdLmdldENvbXBvbmVudChcIkJsb2NrXCIpLmVsaW1pbmF0ZSgpO1xyXG4gICAgICAgICAgICAgICAgICAgIGxldCB0aW1lID0gMDtcclxuICAgICAgICAgICAgICAgICAgICBpZihub21hbEFycmF5WzBdLmdldENvbXBvbmVudChcIkJsb2NrXCIpLnR5cGUgPT0gMSB8fCBub21hbEFycmF5WzBdLmdldENvbXBvbmVudChcIkJsb2NrXCIpLnR5cGUgPT0gOSl7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHRpbWUgPSAyMDA7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIGlmKHRpbWUgPiAwKXtcclxuICAgICAgICAgICAgICAgICAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBub21hbEFycmF5WzFdLmdldENvbXBvbmVudChcIkJsb2NrXCIpLmVsaW1pbmF0ZSgpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB9LCB0aW1lKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICBlbHNle1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBub21hbEFycmF5WzFdLmdldENvbXBvbmVudChcIkJsb2NrXCIpLmVsaW1pbmF0ZSgpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgZWxzZSBpZihub21hbEFycmF5Lmxlbmd0aCA9PSAxKXtcclxuICAgICAgICAgICAgICAgICAgICBub21hbEFycmF5WzBdLmdldENvbXBvbmVudChcIkJsb2NrXCIpLmVsaW1pbmF0ZSgpO1xyXG4gICAgICAgICAgICAgICAgICAgIGxldCB0aW1lID0gMDtcclxuICAgICAgICAgICAgICAgICAgICBpZihub21hbEFycmF5WzBdLmdldENvbXBvbmVudChcIkJsb2NrXCIpLnR5cGUgPT0gMSB8fCBub21hbEFycmF5WzBdLmdldENvbXBvbmVudChcIkJsb2NrXCIpLnR5cGUgPT0gOSl7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHRpbWUgPSAyMDA7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBpZih0aGlzLmZyZWV6ZUFycmF5Lmxlbmd0aCA9PSAwICYmIHRoaXMubG9hY2tBcnJheS5sZW5ndGggPT0gMCl7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBjb25zb2xlLmxvZyhcIuWPquWJqeS4i+S4gOS4quWdl+mBk+WFt+S9v+eUqOWujOavlVwiKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICBlbHNle1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYodGhpcy5sb2Fja0FycmF5Lmxlbmd0aCAhPSAwKXtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBjb25zb2xlLmxvZyhcIua2iOmZpOS4gOS4quaZrumAmuWdl+WQju+8jOa2iOmZpOS4gOS4quW4pumUgeWdl1wiKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmxvYWNrQXJyYXlbMF0uZ2V0Q29tcG9uZW50KFwiQmxvY2tcIikuZWxpbWluYXRlKCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSBpZih0aGlzLmZyZWV6ZUFycmF5Lmxlbmd0aCE9IDApe1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGNvbnNvbGUubG9nKFwi5raI6Zmk5LiA5Liq5pmu6YCa5Z2X5ZCO77yM5raI6Zmk5LiA5Liq5Ya757uT5Z2XXCIpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuZnJlZXplQXJyYXlbMF0uZ2V0Q29tcG9uZW50KFwiQmxvY2tcIikuZWxpbWluYXRlKCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuOyAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICB9LCAyMDArdGltZSk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBlbHNle1xyXG4gICAgICAgICAgICAgICAgICAgIGxldCBjb3VudCA9IDI7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYodGhpcy5sb2Fja0FycmF5Lmxlbmd0aCE9IDApe1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBmb3IobGV0IGk9MDsgaTx0aGlzLmxvYWNrQXJyYXkubGVuZ3RoOyBpKyspe1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gY29uc29sZS5sb2coXCLmsqHmnInmma7pgJrlv6vvvIzprZTms5XmtojpmaTkuIDkuKrluKbplIHlnZdcIik7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmxvYWNrQXJyYXlbaV0uZ2V0Q29tcG9uZW50KFwiQmxvY2tcIikuZWxpbWluYXRlKCk7IFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY291bnQgLT0gMTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmKGNvdW50ID09IDApe1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOyBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmKGNvdW50ICE9IDApe1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yKGxldCBpPTA7IGk8dGhpcy5mcmVlemVBcnJheS5sZW5ndGg7IGkrKyl7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gY29uc29sZS5sb2coXCLmsqHmnInmma7pgJrlv6vvvIzprZTms5XmtojpmaTkuIDkuKrlhrvnu5PlnZdcIik7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gdGhpcy5mcmVlemVBcnJheVtpXS5nZXRDb21wb25lbnQoXCJCbG9ja1wiKS5lbGltaW5hdGUoKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb3VudCAtPSAxO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmKGNvdW50ID09IDApe1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IFxyXG4gICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgfSwgMTAwKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICAvL+aMieS4i+aaguWBnOaMiemSrlxyXG4gICAgdXNlUGF1c2UoKXtcclxuICAgICAgICBpZih0aGlzLnBhdXNlKXtcclxuICAgICAgICAgICAgdGhpcy5wYXVzZSA9IGZhbHNlO1xyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNle1xyXG4gICAgICAgICAgICB0aGlzLnBhdXNlID0gdHJ1ZTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG5cclxuXHJcbiAgICAvL+agueaNruWFs+WNoeiuvue9ruWcsOWbvuWkp+Wwj1xyXG4gICAgc2V0TWFwSW5mbygpe1xyXG4gICAgICAgIGxldCB3aWR0aCA9IDA7XHJcbiAgICAgICAgaWYodGhpcy5tYXBXaWR0aCA8IDEwKXtcclxuICAgICAgICAgICAgd2lkdGggPSAwLjI7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2UgaWYodGhpcy5tYXBXaWR0aCA8IDE3KXtcclxuICAgICAgICAgICAgd2lkdGggPSAwLjE1IC0gKHRoaXMubWFwV2lkdGgtMTEpKjAuMDE7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICB0aGlzLm5vZGUuc2NhbGUgPSAxLjYgKyAoNiAtIHRoaXMubWFwV2lkdGgpICogd2lkdGg7XHJcblxyXG4gICAgICAgIGlmKHRoaXMubWFwV2lkdGggPT0gOCAmJiB0aGlzLm1hcEhlaWdodCA+IDEzKXtcclxuICAgICAgICAgICAgdGhpcy5ub2RlLnNjYWxlID0gMTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIC8vIHRoaXMubm9kZS5zY2FsZSA9IDE7XHJcbiAgICAgICAgY2MuZnguR2FtZUNvbmZpZy5HTV9JTkZPLnNjYWxlID0gdGhpcy5ub2RlLnNjYWxlO1xyXG4gICAgICAgIC8vIHRoaXMubm9kZS5zY2FsZSA9IDAuNTtcclxuICAgICAgICAvLyBjb25zb2xlLmxvZyh0aGlzLm5vZGUuc2NhbGUpO1xyXG4gICAgICAgIC8vIHRoaXMubm9kZS5zY2FsZSA9IDE7XHJcbiAgICB9XHJcblxyXG4gICAgLy/liJvlu7rpl6jnmoTnspLlrZDnibnmlYhcclxuICAgIGNyZWF0ZVBhcnRpY2xlKGJsb2NrLGpnKXtcclxuICAgICAgICBsZXQgcGFydGljbGUgPSBjYy5pbnN0YW50aWF0ZShNYXBDb25yb2xlci5faW5zdGFuY2UuQmxvY2tfUHJvcFs5XSk7XHJcbiAgICAgICAgcGFydGljbGUucGFyZW50ID0gdGhpcy5ub2RlO1xyXG4gICAgICAgIHBhcnRpY2xlLnpJbmRleCA9IDEwMDA7XHJcbiAgICAgICAgbGV0IHdpZHRoID0gTWF0aC5mbG9vcihibG9jay53aWR0aCAvIDEyMCk7XHJcbiAgICAgICAgbGV0IGhlaWdodCA9IE1hdGguZmxvb3IoYmxvY2suaGVpZ2h0IC8gMTIwKTtcclxuICAgICAgICBsZXQgbmFtZSA9IFwiXCI7XHJcblxyXG4gICAgICAgIGlmKGpnID09IDAgfHwgamcgPT0gMSl7XHJcbiAgICAgICAgICAgIGxldCB5ID0gYmxvY2sueSArIGJsb2NrLmhlaWdodDtcclxuICAgICAgICAgICAgbGV0IHggPSBibG9jay54IC0gYmxvY2sud2lkdGgvMjtcclxuICAgICAgICAgICAgbmFtZSA9IFwidG9wX1wiICsgd2lkdGggKyBcIl9cIiArIGhlaWdodDtcclxuICAgICAgICAgICAgaWYoamcgPT0gMSl7XHJcbiAgICAgICAgICAgICAgICBuYW1lID0gXCJib3RfXCIgKyB3aWR0aCArIFwiX1wiICsgaGVpZ2h0O1xyXG4gICAgICAgICAgICAgICAgeSA9IGJsb2NrLnk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgaWYoYmxvY2suYW5jaG9yWCA9PSAwLjUpe1xyXG4gICAgICAgICAgICAgICAgeCA9IGJsb2NrLng7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgZWxzZSBpZihibG9jay5hbmNob3JYID09IDAuMzMpe1xyXG4gICAgICAgICAgICAgICB4ID0gYmxvY2sueCArIGJsb2NrLndpZHRoKigwLjUtMC4zMyk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgZWxzZSBpZihibG9jay5hbmNob3JYID09IDAuNjYpe1xyXG4gICAgICAgICAgICAgICAgeCA9IGJsb2NrLnggKyBibG9jay53aWR0aCooMC41LTAuNjYpOyBcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBwYXJ0aWNsZS5zZXRQb3NpdGlvbih4LCB5KTsgXHJcbiAgICAgICAgfSBcclxuICAgICAgICBlbHNlIGlmKGpnID09IDIgfHwgamcgPT0gMyl7XHJcbiAgICAgICAgICAgIG5hbWUgPSBcImxlZnRfXCIgKyBoZWlnaHQgKyBcIl9cIiArIHdpZHRoO1xyXG4gICAgICAgICAgICBsZXQgeCA9IGJsb2NrLnggLSBibG9jay53aWR0aDtcclxuICAgICAgICAgICAgbGV0IHkgPSBibG9jay55ICsgYmxvY2suaGVpZ2h0LzI7XHJcbiAgICAgICAgICAgIGlmKGJsb2NrLmFuY2hvclggPT0gMC41KXtcclxuICAgICAgICAgICAgICAgIHggPSBibG9jay54IC0gYmxvY2sud2lkdGgvMjtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBlbHNlIGlmKGJsb2NrLmFuY2hvclggPT0gMC4zMyl7XHJcbiAgICAgICAgICAgICAgIHggPSBibG9jay54IC0gYmxvY2sud2lkdGgqMC4zMztcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBlbHNlIGlmKGJsb2NrLmFuY2hvclggPT0gMC42Nil7XHJcbiAgICAgICAgICAgICAgICB4ID0gYmxvY2sueCArIGJsb2NrLndpZHRoKjAuNjY7IFxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGlmKGpnID09IDMpe1xyXG4gICAgICAgICAgICAgICAgbmFtZSA9IFwicmlnaHRfXCIgKyBoZWlnaHQgKyBcIl9cIiArIHdpZHRoO1xyXG4gICAgICAgICAgICAgICAgeCA9IGJsb2NrLng7XHJcbiAgICAgICAgICAgICAgICBpZihibG9jay5hbmNob3JYID09IDAuNSl7XHJcbiAgICAgICAgICAgICAgICAgICAgeCA9IGJsb2NrLnggKyBibG9jay53aWR0aC8yO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgZWxzZSBpZihibG9jay5hbmNob3JYID09IDAuMzMpe1xyXG4gICAgICAgICAgICAgICAgICAgeCA9IGJsb2NrLnggKyBibG9jay53aWR0aCowLjY2O1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgZWxzZSBpZihibG9jay5hbmNob3JYID09IDAuNjYpe1xyXG4gICAgICAgICAgICAgICAgICAgIHggPSBibG9jay54ICsgYmxvY2sud2lkdGgqMC4zMzsgXHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgIHBhcnRpY2xlLnNldFBvc2l0aW9uKHgsIHkpOyBcclxuICAgICAgICB9IFxyXG5cclxuICAgICAgICBsZXQgcGFydGljbGVOb2RlID0gIHBhcnRpY2xlLmdldENoaWxkQnlOYW1lKG5hbWUpO1xyXG4gICAgICAgIGxldCBjb2xvciA9IGJsb2NrLmdldENvbXBvbmVudChcIkJsb2NrXCIpLmNvbG9yIC0gMTtcclxuXHJcbiAgICAgICAgcGFydGljbGVOb2RlLmdldENvbXBvbmVudChjYy5QYXJ0aWNsZVN5c3RlbSkuc3ByaXRlRnJhbWUgPSBwYXJ0aWNsZS5nZXRDb21wb25lbnQoXCJSZWR1Y2VcIikuQmxvY2tfQ29sb3JbY29sb3JdO1xyXG4gICAgICAgIHBhcnRpY2xlTm9kZS5hY3RpdmUgPSB0cnVlO1xyXG4gICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICAgICAgICBjYy50d2VlbihwYXJ0aWNsZSlcclxuICAgICAgICAgICAgLnRvKDIsIHtvcGFjaXR5OiAwfSlcclxuICAgICAgICAgICAgLmNhbGwoKCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgcGFydGljbGUuZGVzdHJveSgpOyBcclxuICAgICAgICAgICAgfSlcclxuICAgICAgICAgICAgLnN0YXJ0KCk7XHJcbiAgICAgICAgfSwgMTIwMCk7XHJcbiAgICB9XHJcblxyXG4gICAgcmVtb3ZlT25lQmxvY2soKSB7XHJcbiAgICAgICAgLy8g56e76Zmk5omA5pyJ5pa55Z2XXHJcbiAgICAgICAgZm9yKGxldCBpID0wIDsgaTx0aGlzLmJsb2Nrcy5sZW5ndGg7IGkrKyl7XHJcbiAgICAgICAgICAgIGlmKHRoaXMuYmxvY2tzW2ldLm9wYWNpdHkgPT0gMCl7XHJcbiAgICAgICAgICAgICAgICAgdGhpcy5ibG9ja3NbaV0uZGVzdHJveSgpO1xyXG4gICAgICAgICAgICAgICAgIHRoaXMuYmxvY2tzLnNwbGljZShpLDEpO1xyXG4gICAgICAgICAgICB9IFxyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBcclxuXHJcbiAgICB1cGRhdGUgKGR0KSB7XHJcblxyXG4gICAgfVxyXG59XHJcbiJdfQ== -======= -//# sourceMappingURL=data:application/json;charset=utf-8;base64,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QUNqQixJQUFJLENBQUMsVUFBVSxFQUFFLENBQUM7UUFDbEIsSUFBSSxDQUFDLE1BQU0sR0FBRyxFQUFFLENBQUM7UUFDakIsSUFBSSxDQUFDLGFBQWEsR0FBRyxFQUFFLENBQUM7UUFDeEIsSUFBSSxDQUFDLE9BQU8sR0FBRyxFQUFFLENBQUM7UUFDbEIsSUFBSSxDQUFDLFFBQVEsR0FBRyxFQUFFLENBQUM7UUFDbkIsSUFBSSxDQUFDLFFBQVEsR0FBRyxFQUFFLENBQUM7UUFDbkIsSUFBSSxDQUFDLFNBQVMsR0FBRyxFQUFFLENBQUM7UUFDcEIsSUFBSSxDQUFDLFVBQVUsR0FBRyxFQUFFLENBQUM7UUFDckIsSUFBSSxDQUFDLGFBQWEsR0FBRyxFQUFFLENBQUM7UUFDeEIsSUFBSSxDQUFDLGFBQWEsR0FBRyxFQUFFLENBQUM7UUFDeEIsSUFBSSxDQUFDLFdBQVcsR0FBRyxFQUFFLENBQUM7UUFDdEIsSUFBSSxDQUFDLFVBQVUsR0FBRyxFQUFFLENBQUM7UUFHckIsSUFBSSxNQUFNLEdBQUcsSUFBSSxDQUFDLFFBQVEsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFFBQVEsR0FBRyxDQUFDLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsUUFBUSxHQUFHLENBQUMsQ0FBQyxHQUFHLEVBQUUsQ0FBQztRQUM1RixJQUFJLE1BQU0sR0FBRyxJQUFJLENBQUMsU0FBUyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxHQUFHLENBQUMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLEdBQUcsQ0FBQyxDQUFDLEdBQUcsRUFBRSxDQUFDO1FBQy9GLHFDQUFxQztRQUNyQyx1Q0FBdUM7UUFFdkMsS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLElBQUksQ0FBQyxRQUFRLEVBQUUs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S0FBSyxDQUFDO29EQUNVO0lBRTdCO1FBREMsUUFBUSxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUM7bURBQ1M7SUFHNUI7UUFEQyxRQUFRLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQztrREFDUTtJQUcxQjtRQURDLFFBQVEsQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDO21EQUNTO0lBRzNCO1FBREMsUUFBUSxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUM7bURBQ1M7SUFJM0I7UUFEQyxRQUFRLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQztnREFDTTtJQXJEUCxXQUFXO1FBRC9CLE9BQU87T0FDYSxXQUFXLENBbStEL0I7SUFBRCxrQkFBQztDQW4rREQsQUFtK0RDLENBbitEd0MsRUFBRSxDQUFDLFNBQVMsR0FtK0RwRDtrQkFuK0RvQixXQUFXIiwiZmlsZSI6IiIsInNvdXJjZVJvb3QiOiIvIiwic291cmNlc0NvbnRlbnQiOlsiLy8gTGVhcm4gVHlwZVNjcmlwdDpcclxuLy8gIC0gaHR0cHM6Ly9kb2NzLmNvY29zLmNvbS9jcmVhdG9yL21hbnVhbC9lbi9zY3JpcHRpbmcvdHlwZXNjcmlwdC5odG1sXHJcbi8vIExlYXJuIEF0dHJpYnV0ZTpcclxuLy8gIC0gaHR0cHM6Ly9kb2NzLmNvY29zLmNvbS9jcmVhdG9yL21hbnVhbC9lbi9zY3JpcHRpbmcvcmVmZXJlbmNlL2F0dHJpYnV0ZXMuaHRtbFxyXG4vLyBMZWFybiBsaWZlLWN5Y2xlIGNhbGxiYWNrczpcclxuLy8gIC0gaHR0cHM6Ly9kb2NzLmNvY29zLmNvbS9jcmVhdG9yL21hbnVhbC9lbi9zY3JpcHRpbmcvbGlmZS1jeWNsZS1jYWxsYmFja3MuaHRtbFxyXG5cclxuaW1wb3J0IEdhbWVNYW5hZ2VyIGZyb20gXCIuL0dhbWVNYW5hZ2VyXCI7XHJcbmltcG9ydCB7IExRQ29sbGlkZSB9IGZyb20gXCIuL2xxX2NvbGxpZGVfc3lzdGVtL2xxX2NvbGxpZGVcIjtcclxuaW1wb3J0IE51bWJlclRvSW1hZ2UgZnJvbSBcIi4vTnVtYmVyVG9JbWFnZVwiO1xyXG5pbXBvcnQgeyBNaW5pR2FtZVNkayB9IGZyb20gXCIuL1Nkay9NaW5pR2FtZVNka1wiO1xyXG5cclxuY29uc3QgeyBjY2NsYXNzLCBwcm9wZXJ0eSB9ID0gY2MuX2RlY29yYXRvcjtcclxuXHJcblxyXG5cclxuQGNjY2xhc3NcclxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgTWFwQ29ucm9sZXIgZXh0ZW5kcyBjYy5Db21wb25lbnQge1xyXG4gICAgc3RhdGljIF9pbnN0YW5jZTogYW55O1xyXG5cclxuXHJcbiAgICBAcHJvcGVydHkoeyB0eXBlOiBbY2MuUHJlZmFiXSwgdG9vbHRpcDogXCLmlrnlnZfmlbDnu4RcIiB9KVxyXG4gICAgQmxvY2tfQXJyYXk6IEFycmF5PGNjLlByZWZhYj4gPSBbXTtcclxuXHJcbiAgICBAcHJvcGVydHkoeyB0eXBlOiBbY2MuUHJlZmFiXSwgdG9vbHRpcDogXCLmlrnlnZfpgZPlhbfmlbDnu4RcIiB9KVxyXG4gICAgQmxvY2tfUHJvcDogQXJyYXk8Y2MuUHJlZmFiPiA9IFtdO1xyXG5cclxuICAgIEBwcm9wZXJ0eShjYy5QcmVmYWIpXHJcbiAgICBNYXBCbG9ja1ByZWZhYjogY2MuUHJlZmFiID0gbnVsbDtcclxuXHJcbiAgICBAcHJvcGVydHkoeyB0eXBlOiBbY2MuU3ByaXRlQXRsYXNdLCB0b29sdGlwOiBcIuaWueWdl+minOiJslwiIH0pXHJcbiAgICBCbG9ja19Db2xvcjogQXJyYXk8Y2MuU3ByaXRlQXRsYXM+ID0gW107XHJcblxyXG5cclxuICAgIEBwcm9wZXJ0eSh7IHR5cGU6IFtjYy5QcmVmYWJdLCB0b29sdGlwOiBcIuWimeWjgeaVsOe7hFwiIH0pXHJcbiAgICBXYWxsX1ByZWZhYjogQXJyYXk8Y2MuUHJlZmFiPiA9IFtdO1xyXG5cclxuXHJcblxyXG4gICAgQHByb3BlcnR5KGNjLlByZWZhYilcclxuICAgIHdhbGxUdXJuUHJlZmFiOiBjYy5QcmVmYWIgPSBudWxsO1xyXG5cclxuICAgIEBwcm9wZXJ0eShjYy5CdXR0b24pXHJcbiAgICB0aW1lQnRuOiBjYy5CdXR0b24gPSBudWxsO1xyXG4gICAgQHByb3BlcnR5KGNjLkJ1dHRvbilcclxuICAgIGRlc3Ryb3lCdG46IGNjLkJ1dHRvbiA9IG51bGw7XHJcbiAgICBAcHJvcGVydHkoY2MuQnV0dG9uKVxyXG4gICAgbWFnaWNCdG46IGNjLkJ1dHRvbiA9IG51bGw7XHJcblxyXG4gICAgQHByb3BlcnR5KGNjLk5vZGUpXHJcbiAgICBtYXNrOiBjYy5Ob2RlID0gbnVsbDtcclxuXHJcbiAgICBAcHJvcGVydHkoY2MuTGFiZWwpXHJcbiAgICBpY2VMYWJlbDogY2MuTGFiZWwgPSBudWxsO1xyXG4gICAgQHByb3BlcnR5KGNjLkxhYmVsKVxyXG4gICAgaGFtbWVyTGFiZWw6IGNjLkxhYmVsID0gbnVsbDtcclxuICAgIEBwcm9wZXJ0eShjYy5MYWJlbClcclxuICAgIG1hZ2ljTGFiZWw6IGNjLkxhYmVsID0gbnVsbDtcclxuXHJcbiAgICBAcHJvcGVydHkoY2MuTm9kZSlcclxuICAgIG1hZ2ljTWFzazogY2MuTm9kZSA9IG51bGw7XHJcblxyXG4gICAgQHByb3BlcnR5KGNjLk5vZGUpXHJcbiAgICBoYW1tZXJNYXNrOiBjYy5Ob2RlID0gbnVsbDtcclxuXHJcbiAgICBAcHJvcGVydHkoY2MuTm9kZSlcclxuICAgIGZyZWV6ZU1hc2s6IGNjLk5vZGUgPSBudWxsO1xyXG5cclxuXHJcbiAgICBAcHJvcGVydHkoY2MuTm9kZSlcclxuICAgIGNvaW5Qb3A6IGNjLk5vZGUgPSBudWxsO1xyXG5cclxuICAgIHRpbWVMYWJlbDogY2MuTm9kZSA9IG51bGw7XHJcbiAgICBsZXZlbExhYmVsOiBjYy5Ob2RlID0gbnVsbDtcclxuXHJcbiAgICBuZXdfbW9kZTogbnVtYmVyID0gMDtcclxuICAgIG1hcFdpZHRoOiBudW1iZXIgPSAwO1xyXG4gICAgbWFwSGVpZ2h0OiBudW1iZXIgPSAwO1xyXG4gICAgd2FsbE51bTogbnVtYmVyID0gMDtcclxuICAgIGJsb2NrTnVtOiBudW1iZXIgPSAwO1xyXG4gICAgbWFwQmxvY2tzV2FsbDogYW55OyAgICAgIC8v5Zyw5Zu+55qE5omA5pyJ5bqV5Z2XXHJcbiAgICBtYXBJbmZvOiBhbnk7ICAgICAgIC8v5Zyw5Zu+6Zmk5LqG5bqV5Z2X55qE5YW25LuW5L+h5oGvXHJcbiAgICBibG9ja3M6IGFueTsgICAgICAgIC8v5pa55Z2X5pWw57uEXHJcbiAgICB3YWxsSW5mbzogYW55OyAgICAgIC8v5aKZ5aOB5pWw57uEXHJcbiAgICB3YWxsQXJyYXk6IGFueTsgICAgICAvL1xyXG4gICAgb3BlbldhbGw6IGFueTsgICAgICAvL+W8gOWFs+WimeaVsOe7hFxyXG4gICAgZnJlZXplV2FsbDogYW55OyAgICAvL+WGu+e7k+WimeaVsOe7hFxyXG4gICAgcmlzZUZhbGxCbGNvazogYW55OyAgLy/ljYfpmY3lnLDlnZfmlbDnu4RcclxuICAgIHNjaGVkdWxlQ2FsbGJhY2s6IGFueTsvL+WAkuiuoeaXtueUqFxyXG4gICAgaG9tZUNhblRvdWNoOiBib29sZWFuID0gdHJ1ZTsvL+aMiemSruWPr+eUqOeKtuaAgVxyXG4gICAgYWdhaW5DYW5Ub3VjaDogYm9vbGVhbiA9IHRydWU7Ly/ph43njqnmjInpkq7lj6/ku6XnlKjnirbmgIFcclxuICAgIGdhbWVPdmVyOiBib29sZWFuID0gZmFsc2U7Ly/muLjmiI/nu5PmnZ/nirbmgIFcclxuICAgIGdhbWVXaW46IGJvb2xlYW4gPSBmYWxzZTsvL+a4uOaIj+iDnOWIqeeKtuaAgVxyXG4gICAgZ2FtZVN0YXJ0OiBib29sZWFuID0gZmFsc2U7Ly/muLjmiI/lvIDlp4vnirbmgIFcclxuICAgIHRpbWVOdW1iZXI6IG51bWJlciA9IDA7IC8v5ri45oiP5pe26Ze0IOeUqOS6juWAkuiuoeaXtlxyXG4gICAgY291bnRfVGltZTogbnVtYmVyID0gMDsgLy/nlKjkuo7nu5/orqHmgLvmuLjmiI/ml7bplb9cclxuICAgIGFkZF9UaW1lOiBudW1iZXIgPSAwOyAgIC8v5aSN5rS75pe26Ze0XHJcbiAgICBtYXBCbG9ja0FycmF5OiBhbnk7ICAvL+WcsOWbvueahOaJgOacieagvOWtkOeKtuaAgeWtmOWCqFxyXG4gICAgcGF1c2U6IGJvb2xlYW4gPSBmYWxzZTsvL+aaguWBnOeKtuaAgVxyXG4gICAgaGFtbWVyOiBib29sZWFuID0gZmFsc2U7Ly/plKTlrZDnirbmgIFcclxuICAgIGZyZWV6ZUFycmF5OiBhbnk7IC8v5Ya757uTXHJcbiAgICBsb2Fja0FycmF5OiBhbnk7IC8v5LiK6ZSBXHJcbiAgICBwYXJ0aWNsZUVmZmVjdHM6IGNjLlBhcnRpY2xlQXNzZXRbXTtcclxuICAgIC8vIGxlZnREb29yczogW107IC8v5bem6ZeoXHJcbiAgICByaWdodERvb3JzOiBhbnk7IC8v5Y+z6ZeoXHJcbiAgICB0b3BEb29yczogYW55OyAvL+S4iumXqFxyXG4gICAgYm90dG9tRG9vcnM6IGFueTsgLy/kuIvpl6hcclxuICAgIGxlZnREb29yczogYW55O1xyXG5cclxuXHJcbiAgICAvLyBtYXBJbmZvOiBudW1iZXJbXVtdID0gW107XHJcblxyXG4gICAgb25Mb2FkKCkge1xyXG5cclxuICAgICAgICBjYy5meC5HYW1lQ29uZmlnLkdNX0lORk8ucmV2aWV3ID0gMDtcclxuICAgICAgICBjYy5meC5HYW1lQ29uZmlnLkdNX0lORk8uZ2FtZVN0YXRlID0gdHJ1ZTtcclxuICAgICAgICB0aGlzLm1hc2sub3BhY2l0eSA9IDA7XHJcbiAgICAgICAgdGhpcy5ub2RlLmdldENoaWxkQnlOYW1lKFwiQWRoZXNpdmVcIikuekluZGV4ID0gNTAwO1xyXG4gICAgICAgIGNjLmdhbWUuc2V0RnJhbWVSYXRlKDYzKTtcclxuICAgICAgICBjYy5meC5BdWRpb01hbmFnZXIuX2luc3RhbmNlLnBsYXlFZmZlY3QoXCJ6aHVhbjJcIiwgbnVsbCk7XHJcbiAgICAgICAgdGhpcy5ub2RlLnBhcmVudC5wYXJlbnQucGFyZW50LmdldENoaWxkQnlOYW1lKFwiemh1YW5jaGFuZ1wiKS5hY3RpdmUgPSB0cnVlO1xyXG4gICAgICAgIHRoaXMubm9kZS5wYXJlbnQucGFyZW50LnBhcmVudC5nZXRDaGlsZEJ5TmFtZShcInpodWFuY2hhbmdcIikuZ2V0Q29tcG9uZW50KHNwLlNrZWxldG9uKS5zZXRBbmltYXRpb24oMSwgXCJkb3duXCIsIGZhbHNlKTtcclxuICAgICAgICB0aGlzLm5vZGUucGFyZW50LnBhcmVudC5wYXJlbnQuZ2V0Q2hpbGRCeU5hbWUoXCJ6aHVhbmNoYW5nXCIpLmdldENvbXBvbmVudChzcC5Ta2VsZXRvbikuc2V0Q29tcGxldGVMaXN0ZW5lcigoZW50cnkpID0+IHtcclxuICAgICAgICAgICAgaWYgKGVudHJ5LmFuaW1hdGlvbi5uYW1lID09PSBcImRvd25cIikge1xyXG4gICAgICAgICAgICAgICAgLy8g5Yqo55S75pKt5pS+57uT5p2f5ZCO5omn6KGM55qE6YC76L6RXHJcbiAgICAgICAgICAgICAgICB0aGlzLm5vZGUucGFyZW50LnBhcmVudC5wYXJlbnQuZ2V0Q2hpbGRCeU5hbWUoXCJ6aHVhbmNoYW5nXCIpLmFjdGl2ZSA9IGZhbHNlO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfSk7XHJcbiAgICAgICAgdGhpcy5ibG9ja3MgPSBbXTtcclxuICAgICAgICB0aGlzLmxlZnREb29ycyA9IFtdOyAvL+W3pumXqFxyXG4gICAgICAgIHRoaXMucmlnaHREb29ycyA9IFtdOyAvL+WPs+mXqFxyXG4gICAgICAgIHRoaXMudG9wRG9vcnMgPSBbXTsgLy/kuIrpl6hcclxuICAgICAgICB0aGlzLmJvdHRvbURvb3JzID0gW107IC8v5LiL6ZeoXHJcbiAgICAgICAgdGhpcy5nYW1lV2luID0gZmFsc2U7XHJcbiAgICAgICAgdGhpcy5nYW1lT3ZlciA9IGZhbHNlO1xyXG4gICAgICAgIHRoaXMuZ2FtZVN0YXJ0ID0gZmFsc2U7XHJcbiAgICAgICAgdGhpcy5ob21lQ2FuVG91Y2ggPSB0cnVlO1xyXG4gICAgICAgIHRoaXMuYWdhaW5DYW5Ub3VjaCA9IHRydWU7XHJcbiAgICAgICAgdGhpcy5uZXdfbW9kZSA9IDA7XHJcblxyXG4gICAgICAgIHRoaXMuaWNlTGFiZWwuc3RyaW5nID0gY2MuZnguR2FtZUNvbmZpZy5HTV9JTkZPLmZyZWV6ZUFtb3VudC50b1N0cmluZygpO1xyXG4gICAgICAgIHRoaXMuaGFtbWVyTGFiZWwuc3RyaW5nID0gY2MuZnguR2FtZUNvbmZpZy5HTV9JTkZPLmhhbW1lckFtb3VudC50b1N0cmluZygpO1xyXG4gICAgICAgIHRoaXMubWFnaWNMYWJlbC5zdHJpbmcgPSBjYy5meC5HYW1lQ29uZmlnLkdNX0lORk8ubWFnaWNBbW91bnQudG9TdHJpbmcoKTtcclxuXHJcbiAgICAgICAgLy8gY2MuZ2FtZS5hZGRQZXJzaXN0Um9vdE5vZGUodGhpcy5ub2RlKTtcclxuICAgICAgICBNYXBDb25yb2xlci5faW5zdGFuY2UgPSB0aGlzO1xyXG4gICAgfVxyXG5cclxuICAgIHN0YXJ0KCkge1xyXG4gICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICAgICAgICBjYy5kaXJlY3Rvci5wcmVsb2FkU2NlbmUoXCJIb21lU2NlbmVcIiwgKGVyciwgYXNzZXQpID0+IHtcclxuICAgICAgICAgICAgICAgIGlmIChlcnIpIHtcclxuICAgICAgICAgICAgICAgICAgICBjb25zb2xlLmVycm9yKCfliqjmgIHliqDovb0gSG9tZVNjZW5lIOWksei0pTonLCBlcnIpO1xyXG4gICAgICAgICAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgfSwgMTAwMCk7XHJcbiAgICAgICAgLy8gY29uc29sZS5sb2coXCLov5vlhaVHYW1lU2NlbmVcIik7XHJcbiAgICAgICAgdGhpcy5CbG9ja19BcnJheSA9IEdhbWVNYW5hZ2VyLl9pbnN0YW5jZS5CbG9ja19BcnJheTtcclxuICAgICAgICB0aGlzLldhbGxfUHJlZmFiID0gR2FtZU1hbmFnZXIuX2luc3RhbmNlLldhbGxfUHJlZmFiO1xyXG4gICAgICAgIHRoaXMuQmxvY2tfQ29sb3IgPSBHYW1lTWFuYWdlci5faW5zdGFuY2UuQmxvY2tfQ29sb3I7XHJcbiAgICAgICAgLy8gdGhpcy5wYXJ0aWNsZUVmZmVjdHMgPSBHYW1lTWFuYWdlci5faW5zdGFuY2UucGFydGljbGVFZmZlY3RzO1xyXG5cclxuICAgICAgICB0aGlzLmluaXRNYXAoKTtcclxuXHJcbiAgICB9XHJcblxyXG4gICAgc3RhcnRVcGRhdGUoKSB7XHJcbiAgICAgICAgaWYgKHRoaXMuZ2FtZVN0YXJ0ID09IGZhbHNlKSB7XHJcbiAgICAgICAgICAgIHRoaXMuZ2FtZVN0YXJ0ID0gdHJ1ZTtcclxuICAgICAgICAgICAgLy/lj5HpgIHmlbDmlbDkuovku7bigJTigJTov5vlhaXlhbPljaFcclxuICAgICAgICAgICAgY29uc29sZS5sb2coXCLlh4blpIfov5vlhaXkuIvkuIDlhbMs5Y+R6YCB5LiL5LiA5YWz6L+b5YWlXCIpO1xyXG4gICAgICAgICAgICBjYy5meC5HYW1lVG9vbC5zaHVzaHVfVHJhY2soXCJlbnRlcl9zdGFnZVwiKTtcclxuICAgICAgICAgICAgdGhpcy5zdGFydFRpbWVDdXREb3duKCk7XHJcbiAgICAgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdGhpcy5ibG9ja3MubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICAgICAgICAgIGlmICh0aGlzLmJsb2Nrc1tpXS5nZXRDb21wb25lbnQoXCJCbG9ja1wiKS50eXBlID09IDYpIHtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLmJsb2Nrc1tpXS5nZXRDaGlsZEJ5TmFtZShcImJvb21cIikuZ2V0Q29tcG9uZW50KFwiQm9vbVwiKS5zdGFydEJvb20oKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBpbml0TWFwKCkge1xyXG4gICAgICAgIC8vIHRoaXMubm9kZS5nZXRDaGlsZEJ5TmFtZShcIldhbGxcIikuekluZGV4ID0gMTA7XHJcbiAgICAgICAgdGhpcy50aW1lTGFiZWwgPSB0aGlzLm5vZGUucGFyZW50LmdldENoaWxkQnlOYW1lKFwiVG9wXCIpLmdldENoaWxkQnlOYW1lKFwidGltZVwiKTtcclxuICAgICAgICB0aGlzLmxldmVsTGFiZWwgPSB0aGlzLm5vZGUucGFyZW50LmdldENoaWxkQnlOYW1lKFwiVG9wXCIpLmdldENoaWxkQnlOYW1lKFwibGV2ZWxcIik7XHJcbiAgICAgICAgdGhpcy50aW1lTnVtYmVyID0gY2MuZnguR2FtZUNvbmZpZy5MRVZFTF9JTkZPWzBdLnRpbWU7XHJcbiAgICAgICAgdGhpcy5jb3VudF9UaW1lID0gMDtcclxuICAgICAgICB0aGlzLmFkZF9UaW1lID0gMDtcclxuICAgICAgICBOdW1iZXJUb0ltYWdlLmdldFRpbWVNYXJnaW4odGhpcy50aW1lTnVtYmVyLCA1MCwgXCJ0aW1lX1wiLCB0aGlzLnRpbWVMYWJlbClcclxuICAgICAgICAvLyB2YXIgdGltZVRlbXAgPSBjYy5meC5HYW1lVG9vbC5nZXRUaW1lTWFyZ2luKHRoaXMudGltZU51bWJlcik7XHJcbiAgICAgICAgLy8gdGhpcy50aW1lTGFiZWwuc3RyaW5nID0gdGltZVRlbXAudG9TdHJpbmcoKTtcclxuICAgICAgICBOdW1iZXJUb0ltYWdlLm51bWJlclRvSW1hZ2VOb2RlcygoY2MuZnguR2FtZUNvbmZpZy5HTV9JTkZPLmxldmVsICsgMSksIDUwLCAyMCwgXCJsZXZlbF9cIiwgdGhpcy5sZXZlbExhYmVsLCBmYWxzZSlcclxuXHJcbiAgICAgICAgLy90aGlzLnN0YXJ0VGltZUN1dERvd24oKTtcclxuXHJcbiAgICAgICAgdGhpcy5tYXBXaWR0aCA9IGNjLmZ4LkdhbWVDb25maWcuTEVWRUxfSU5GT1swXS5tYXBbMF07XHJcbiAgICAgICAgdGhpcy5tYXBIZWlnaHQgPSBjYy5meC5HYW1lQ29uZmlnLkxFVkVMX0lORk9bMF0ubWFwWzFdO1xyXG4gICAgICAgIGxldCBnYXAgPSBjYy5meC5HYW1lQ29uZmlnLkxFVkVMX0lORk9bMF0uZ2FwO1xyXG4gICAgICAgIGxldCByaXNlZmFsbCA9IGNjLmZ4LkdhbWVDb25maWcuTEVWRUxfSU5GT1swXS5yaXNlZmFsbDtcclxuXHJcbiAgICAgICAgdGhpcy5wYXVzZSA9IGZhbHNlO1xyXG4gICAgICAgIHRoaXMuaGFtbWVyID0gZmFsc2U7XHJcbiAgICAgICAgdGhpcy53YWxsTnVtID0gMDtcclxuICAgICAgICB0aGlzLnNldE1hcEluZm8oKTtcclxuICAgICAgICB0aGlzLmJsb2NrcyA9IFtdO1xyXG4gICAgICAgIHRoaXMubWFwQmxvY2tzV2FsbCA9IFtdO1xyXG4gICAgICAgIHRoaXMubWFwSW5mbyA9IFtdO1xyXG4gICAgICAgIHRoaXMud2FsbEluZm8gPSBbXTtcclxuICAgICAgICB0aGlzLm9wZW5XYWxsID0gW107XHJcbiAgICAgICAgdGhpcy53YWxsQXJyYXkgPSBbXTtcclxuICAgICAgICB0aGlzLmZyZWV6ZVdhbGwgPSBbXTtcclxuICAgICAgICB0aGlzLnJpc2VGYWxsQmxjb2sgPSBbXTtcclxuICAgICAgICB0aGlzLm1hcEJsb2NrQXJyYXkgPSBbXTtcclxuICAgICAgICB0aGlzLmZyZWV6ZUFycmF5ID0gW107XHJcbiAgICAgICAgdGhpcy5sb2Fja0FycmF5ID0gW107XHJcblxyXG5cclxuICAgICAgICBsZXQgc3RhcnRYID0gdGhpcy5tYXBXaWR0aCAlIDIgPT0gMCA/IC0odGhpcy5tYXBXaWR0aCAtIDEpICogNjAgOiAtKHRoaXMubWFwV2lkdGggLSAxKSAqIDYwO1xyXG4gICAgICAgIGxldCBzdGFydFkgPSB0aGlzLm1hcEhlaWdodCAlIDIgPT0gMCA/IC0odGhpcy5tYXBIZWlnaHQgLSAxKSAqIDYwIDogLSh0aGlzLm1hcEhlaWdodCAtIDEpICogNjA7XHJcbiAgICAgICAgLy8gc3RhcnRYID0odGhpcy5tYXBXaWR0aC0xKSo2MCArIDYwO1xyXG4gICAgICAgIC8vIHN0YXJ0WSA9LSh0aGlzLm1hcEhlaWdodC0xKSo2MCAtIDYwO1xyXG5cclxuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRoaXMubWFwV2lkdGg7IGkrKykge1xyXG4gICAgICAgICAgICB0aGlzLm1hcEJsb2Nrc1dhbGxbaV0gPSBbXTtcclxuXHJcbiAgICAgICAgICAgIGZvciAobGV0IGogPSAwOyBqIDwgdGhpcy5tYXBIZWlnaHQ7IGorKykge1xyXG4gICAgICAgICAgICAgICAgbGV0IGJsb2NrID0gY2MuaW5zdGFudGlhdGUodGhpcy5NYXBCbG9ja1ByZWZhYik7XHJcbiAgICAgICAgICAgICAgICBibG9jay5wYXJlbnQgPSB0aGlzLm5vZGUuZ2V0Q2hpbGRCeU5hbWUoXCJtYXBCbG9ja1wiKTtcclxuICAgICAgICAgICAgICAgIGJsb2NrLmdldENvbXBvbmVudChcIk1hcEJsb2NrXCIpLmluaXQoaSwgaik7XHJcbiAgICAgICAgICAgICAgICAvLyBibG9jay5nZXRDaGlsZEJ5TmFtZShcIm51bVwiKS5nZXRDb21wb25lbnQoY2MuTGFiZWwpLnN0cmluZyA9IGkgKyBcIjpcIiArIGo7XHJcbiAgICAgICAgICAgICAgICBibG9jay5zZXRQb3NpdGlvbihjYy52MihzdGFydFggKyBpICogMTIwLCBzdGFydFkgKyBqICogMTIwKSlcclxuICAgICAgICAgICAgICAgIGlmIChyaXNlZmFsbCAhPSBudWxsKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMubWFwUmlzZUZhbGwoY2MudjIoaSwgaiksIHJpc2VmYWxsLCBibG9jaykpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5yaXNlRmFsbEJsY29rLnB1c2goYmxvY2spO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIGlmIChnYXAgIT0gbnVsbCkge1xyXG4gICAgICAgICAgICAgICAgICAgIGlmICghdGhpcy5tYXBHYXAoY2MudjIoaSwgaiksIGdhcCkgfHwgaSA9PSAwIHx8IGkgPT0gdGhpcy5tYXBXaWR0aCAtIDFcclxuICAgICAgICAgICAgICAgICAgICAgICAgfHwgaiA9PSAwIHx8IGogPT0gdGhpcy5tYXBIZWlnaHQgLSAxKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGJsb2NrLm9wYWNpdHkgPSAyNTQ7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGJsb2NrLnJlbW92ZUNvbXBvbmVudChjYy5TcHJpdGUpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBibG9jay5yZW1vdmVBbGxDaGlsZHJlbigpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLndhbGxJbmZvLnB1c2goYmxvY2spO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICBlbHNlIHRoaXMubWFwSW5mby5wdXNoKGJsb2NrKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICAgIGlmIChpID09IDAgfHwgaSA9PSB0aGlzLm1hcFdpZHRoIC0gMVxyXG4gICAgICAgICAgICAgICAgICAgICAgICB8fCBqID09IDAgfHwgaiA9PSB0aGlzLm1hcEhlaWdodCAtIDEpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgYmxvY2sub3BhY2l0eSA9IDI1NDtcclxuICAgICAgICAgICAgICAgICAgICAgICAgYmxvY2sucmVtb3ZlQ29tcG9uZW50KGNjLlNwcml0ZSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGJsb2NrLnJlbW92ZUFsbENoaWxkcmVuKCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMud2FsbEluZm8ucHVzaChibG9jayk7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIGVsc2UgdGhpcy5tYXBJbmZvLnB1c2goYmxvY2spO1xyXG4gICAgICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgICAgIHRoaXMubWFwQmxvY2tzV2FsbFtpXS5wdXNoKGJsb2NrKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgdGhpcy53YWxsSW5pdCgpO1xyXG4gICAgICAgIHRoaXMuYmxvY2tJbml0KCk7XHJcblxyXG4gICAgfVxyXG5cclxuICAgIC8v5Yib5bu65pa55Z2XXHJcbiAgICAvLyAuLi4g5bey5pyJ5Luj56CBIC4uLlxyXG5cclxuICAgIC8v5Yib5bu65pa55Z2XXHJcbiAgICAvLyAuLi4g5bey5pyJ5Luj56CBIC4uLlxyXG5cclxuXHJcblxyXG5cclxuICAgIGJsb2NrSW5pdCgpIHtcclxuICAgICAgICBsZXQgYmxvY2tBcnJheSA9IGNjLmZ4LkdhbWVDb25maWcuQkxPQ0tfSU5GT1swXTtcclxuICAgICAgICBibG9ja0FycmF5ID0gdGhpcy5zb3J0QmxvY2soYmxvY2tBcnJheSk7XHJcbiAgICAgICAgY29uc29sZS5sb2coXCLliJvlu7rmlrnlnZdcIiwgYmxvY2tBcnJheSk7XHJcbiAgICAgICAgbGV0IGluZGV4ID0gMDsgLy8g5b2T5YmN6KaB5Yib5bu655qE5pa55Z2X57Si5byVXHJcbiAgICAgICAgbGV0IEJMT0NLU19QRVJfRlJBTUUgPSAxOyAvLyDliJ3lp4vmr4/luKfliJvlu7rnmoTmlrnlnZfmlbDph49cclxuICAgICAgICBjb25zdCBNQVhfUEVSX0ZSQU1FID0gMTA7IC8vIOavj+W4p+acgOWkp+WIm+W7uuaVsOmHj1xyXG4gICAgICAgIGNvbnN0IE1JTl9QRVJfRlJBTUUgPSAxOyAvLyDmr4/luKfmnIDlsI/liJvlu7rmlbDph49cclxuXHJcbiAgICAgICAgY29uc3QgY3JlYXRlQmxvY2tzID0gKCkgPT4ge1xyXG4gICAgICAgICAgICBjb25zdCBzdGFydFRpbWUgPSBwZXJmb3JtYW5jZS5ub3coKTtcclxuICAgICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBCTE9DS1NfUEVSX0ZSQU1FICYmIGluZGV4IDwgYmxvY2tBcnJheS5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgICAgICAgICAgbGV0IGJsb2NrSW5mbyA9IGJsb2NrQXJyYXlbaW5kZXhdO1xyXG4gICAgICAgICAgICAgICAgLy8g57yT5a2YIEJsb2NrX0FycmF5IOiuv+mXrlxyXG4gICAgICAgICAgICAgICAgY29uc3QgYmxvY2tQcmVmYWIgPSB0aGlzLkJsb2NrX0FycmF5W2Jsb2NrSW5mby5ibG9ja107XHJcbiAgICAgICAgICAgICAgICBsZXQgYmxvY2sgPSBjYy5pbnN0YW50aWF0ZShibG9ja1ByZWZhYik7XHJcbiAgICAgICAgICAgICAgICBibG9jay5wYXJlbnQgPSB0aGlzLm5vZGU7XHJcbiAgICAgICAgICAgICAgICBibG9jay5zZXRQb3NpdGlvbihjYy52MihibG9ja0luZm8ucG9zaXRpb24ueCwgYmxvY2tJbmZvLnBvc2l0aW9uLnkpKTtcclxuICAgICAgICAgICAgICAgIGlmIChibG9ja0luZm8uYmxvY2sgIT0gMjMpIHtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLmJsb2NrTnVtICs9IDE7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5ibG9ja3MucHVzaChibG9jayk7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKGJsb2NrSW5mby50eXBlID09IDEpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGluZm8gPSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZDogYmxvY2tJbmZvLmlkICsgMSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJsb2NrOiBibG9ja0luZm8uYmxvY2ssXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb2xvcjogYmxvY2tJbmZvLnN0YWNraW5nLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZTogMTAsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwb3NpdGlvbjogYmxvY2tJbmZvLnBvc2l0aW9uLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhY2tpbmc6IGJsb2NrSW5mby5jb2xvclxyXG4gICAgICAgICAgICAgICAgICAgICAgICB9O1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyDnvJPlrZggQmxvY2tfQXJyYXkg6K6/6ZeuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGJsb2NrVXBQcmVmYWIgPSB0aGlzLkJsb2NrX0FycmF5W2luZm8uYmxvY2tdO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBsZXQgYmxvY2tVcCA9IGNjLmluc3RhbnRpYXRlKGJsb2NrVXBQcmVmYWIpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBibG9ja1VwLnBhcmVudCA9IHRoaXMubm9kZTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgYmxvY2tVcC5zZXRQb3NpdGlvbihjYy52MihpbmZvLnBvc2l0aW9uLngsIGluZm8ucG9zaXRpb24ueSkpO1xyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5ibG9ja3MucHVzaChibG9ja1VwKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgYmxvY2suZ2V0Q29tcG9uZW50KFwiQmxvY2tcIikuaW5pdChibG9ja0luZm8sIG51bGwsIG51bGwsIGJsb2NrVXApO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBibG9ja1VwLmdldENvbXBvbmVudChcIkJsb2NrXCIpLmluaXQoaW5mbywgbnVsbCwgbnVsbCwgYmxvY2spO1xyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5ibG9ja051bSArPSAxO1xyXG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoYmxvY2tJbmZvLnR5cGUgPT0gOSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoYmxvY2tJbmZvLmFkaGVzaXZlVGltZSA8IDIpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluZGV4Kys7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICBpbmRleCsrO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBsZXQgaW5mbyA9IGJsb2NrQXJyYXlbaW5kZXhdO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyDnvJPlrZggQmxvY2tfQXJyYXkg6K6/6ZeuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGJsb2NrVXBQcmVmYWIgPSB0aGlzLkJsb2NrX0FycmF5W2luZm8uYmxvY2tdO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBsZXQgYmxvY2tVcCA9IGNjLmluc3RhbnRpYXRlKGJsb2NrVXBQcmVmYWIpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBibG9ja1VwLnBhcmVudCA9IHRoaXMubm9kZTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgYmxvY2tVcC5zZXRQb3NpdGlvbihjYy52MihpbmZvLnBvc2l0aW9uLngsIGluZm8ucG9zaXRpb24ueSkpO1xyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5ibG9ja3MucHVzaChibG9ja1VwKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgYmxvY2suZ2V0Q29tcG9uZW50KFwiQmxvY2tcIikuaW5pdChibG9ja0luZm8sIG51bGwsIG51bGwsIGJsb2NrVXAsIGZhbHNlKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBibG9ja1VwLmdldENvbXBvbmVudChcIkJsb2NrXCIpLmluaXQoaW5mbywgbnVsbCwgbnVsbCwgYmxvY2ssIHRydWUpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB9LCAxMDApO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmJsb2NrTnVtICs9IDE7XHJcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgYmxvY2suZ2V0Q29tcG9uZW50KFwiQmxvY2tcIikuaW5pdChibG9ja0luZm8pO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICAgIGJsb2NrLmdldENvbXBvbmVudChcIkJhcnJpZXJcIikuaW5pdChibG9ja0luZm8pO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgaW5kZXgrKztcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBjb25zdCBlbmRUaW1lID0gcGVyZm9ybWFuY2Uubm93KCk7XHJcbiAgICAgICAgICAgIGNvbnN0IGZyYW1lVGltZSA9IGVuZFRpbWUgLSBzdGFydFRpbWU7XHJcbiAgICAgICAgICAgIC8vIOWmguaenOW9k+WJjeW4p+aJp+ihjOaXtumXtOi/h+mVv++8jOWHj+Wwkeavj+W4p+WIm+W7uuaVsOmHj1xyXG4gICAgICAgICAgICBpZiAoZnJhbWVUaW1lID4gMTYpIHtcclxuICAgICAgICAgICAgICAgIEJMT0NLU19QRVJfRlJBTUUgPSBNYXRoLm1heChCTE9DS1NfUEVSX0ZSQU1FIC0gMSwgTUlOX1BFUl9GUkFNRSk7XHJcbiAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICBCTE9DS1NfUEVSX0ZSQU1FID0gTWF0aC5taW4oQkxPQ0tTX1BFUl9GUkFNRSArIDEsIE1BWF9QRVJfRlJBTUUpO1xyXG4gICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAvLyDlpoLmnpzov5jmnInmlrnlnZfmnKrliJvlu7rvvIzkuIvkuIDluKfnu6fnu63liJvlu7pcclxuICAgICAgICAgICAgaWYgKGluZGV4IDwgYmxvY2tBcnJheS5sZW5ndGgpIHtcclxuICAgICAgICAgICAgICAgIC8vIOS9v+eUqCBzY2hlZHVsZU9uY2Ug5Zyo5LiL5LiA5bin5omn6KGMIGNyZWF0ZUJsb2Nrc1xyXG4gICAgICAgICAgICAgICAgdGhpcy5zY2hlZHVsZU9uY2UoKCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgIGNyZWF0ZUJsb2NrcygpO1xyXG4gICAgICAgICAgICAgICAgfSwgMCk7XHJcbiAgICAgICAgICAgIH0gZWxzZSB7XHJcblxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfTtcclxuXHJcbiAgICAgICAgLy8g5byA5aeL5YiG5bin5Yib5bu65pa55Z2XXHJcbiAgICAgICAgY3JlYXRlQmxvY2tzKCk7XHJcbiAgICB9XHJcbiAgICAvL+e7meWIm+W7uuaWueWdl+aOkuW6j++8jOeUqOadpemZjeS9jmRyYXdjYWxsIOWQiOaJuVxyXG4gICAgc29ydEJsb2NrKGFsbEJsb2NrczogeyBjb2xvcjogbnVtYmVyOyBibG9jazogbnVtYmVyOyB0eXBlOiBudW1iZXIgfVtdKSB7XHJcbiAgICAgICAgcmV0dXJuIGFsbEJsb2Nrcy5zb3J0KChhLCBiKSA9PiB7XHJcbiAgICAgICAgICAgIC8vIOWFiOWkhOeQhiB0eXBlIOS4uiAxIOeahOaDheWGte+8jOWwhuWFtuaUvuWIsOacgOWQjlxyXG4gICAgICAgICAgICBpZiAoYS50eXBlID09PSAxICYmIGIudHlwZSAhPT0gMSkge1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIDE7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgaWYgKGEudHlwZSAhPT0gMSAmJiBiLnR5cGUgPT09IDEpIHtcclxuICAgICAgICAgICAgICAgIHJldHVybiAtMTtcclxuICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgLy8g5a+5IHR5cGUg5LiN5Li6IDAg55qE5YWD57Sg5oyJIHR5cGUg5o6S5bqPXHJcbiAgICAgICAgICAgIGlmIChhLnR5cGUgIT09IDAgJiYgYi50eXBlICE9PSAwKSB7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gYS50eXBlIC0gYi50eXBlO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGlmIChhLnR5cGUgIT09IDAgJiYgYi50eXBlID09PSAwKSB7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gMTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBpZiAoYS50eXBlID09PSAwICYmIGIudHlwZSAhPT0gMCkge1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIC0xO1xyXG4gICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAvLyDlho3lpITnkIYgYmxvY2sg5Li6IDIzIOeahOaDheWGte+8jOWwhuWFtuaUvuWIsOacgOWJjemdolxyXG4gICAgICAgICAgICBpZiAoYS5ibG9jayA9PT0gMjMgJiYgYi5ibG9jayAhPT0gMjMpIHtcclxuICAgICAgICAgICAgICAgIHJldHVybiAtMTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBpZiAoYS5ibG9jayAhPT0gMjMgJiYgYi5ibG9jayA9PT0gMjMpIHtcclxuICAgICAgICAgICAgICAgIHJldHVybiAxO1xyXG4gICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAvLyDlhbbkvZnmjIkgY29sb3Ig5Y2H5bqP5o6S5YiXXHJcbiAgICAgICAgICAgIHJldHVybiBhLmNvbG9yIC0gYi5jb2xvcjtcclxuICAgICAgICB9KTtcclxuICAgIH1cclxuXHJcblxyXG4gICAgLy/liJvlu7rlopnlo4FcclxuXHJcbiAgICB3YWxsSW5pdCgpIHtcclxuICAgICAgICBsZXQgaW5kZXggPSAwOyAvLyDlvZPliY3opoHliJvlu7rnmoTlopnlo4HntKLlvJVcclxuICAgICAgICBsZXQgV0FMTFNfUEVSX0ZSQU1FID0gMTsgLy8g5Yid5aeL5q+P5bin5Yib5bu655qE5aKZ5aOB5pWw6YePXHJcbiAgICAgICAgY29uc3QgTUFYX1BFUl9GUkFNRSA9IDEwOyAvLyDmr4/luKfmnIDlpKfliJvlu7rmlbDph49cclxuICAgICAgICBjb25zdCBNSU5fUEVSX0ZSQU1FID0gMTsgLy8g5q+P5bin5pyA5bCP5Yib5bu65pWw6YePXHJcblxyXG4gICAgICAgIGNvbnN0IGNyZWF0ZVdhbGxzID0gKCkgPT4ge1xyXG4gICAgICAgICAgICBjb25zdCBzdGFydFRpbWUgPSBwZXJmb3JtYW5jZS5ub3coKTtcclxuICAgICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBXQUxMU19QRVJfRlJBTUUgJiYgaW5kZXggPCB0aGlzLndhbGxJbmZvLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgICAgICAgICBsZXQgYmxvY2sgPSB0aGlzLndhbGxJbmZvW2luZGV4XTtcclxuICAgICAgICAgICAgICAgIGxldCBkaXIgPSB0aGlzLmdldFdsbERpcmFjdGlvbihcIndhbGxcIiwgY2MudjIoYmxvY2suZ2V0Q29tcG9uZW50KFwiTWFwQmxvY2tcIikucG9zWCwgYmxvY2suZ2V0Q29tcG9uZW50KFwiTWFwQmxvY2tcIikucG9zWSkpO1xyXG4gICAgICAgICAgICAgICAgaWYgKGRpciAhPSBudWxsKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5jcmVhdGVXYWxsKGRpciwgYmxvY2spO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgaW5kZXgrKztcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBjb25zdCBlbmRUaW1lID0gcGVyZm9ybWFuY2Uubm93KCk7XHJcbiAgICAgICAgICAgIGNvbnN0IGZyYW1lVGltZSA9IGVuZFRpbWUgLSBzdGFydFRpbWU7XHJcbiAgICAgICAgICAgIC8vIOWmguaenOW9k+WJjeW4p+aJp+ihjOaXtumXtOi/h+mVv++8jOWHj+Wwkeavj+W4p+WIm+W7uuaVsOmHj1xyXG4gICAgICAgICAgICBpZiAoZnJhbWVUaW1lID4gMTYpIHtcclxuICAgICAgICAgICAgICAgIFdBTExTX1BFUl9GUkFNRSA9IE1hdGgubWF4KFdBTExTX1BFUl9GUkFNRSAtIDEsIE1JTl9QRVJfRlJBTUUpO1xyXG4gICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgV0FMTFNfUEVSX0ZSQU1FID0gTWF0aC5taW4oV0FMTFNfUEVSX0ZSQU1FICsgMSwgTUFYX1BFUl9GUkFNRSk7XHJcbiAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgIC8vIOWmguaenOi/mOacieWimeWjgeacquWIm+W7uu+8jOS4i+S4gOW4p+e7p+e7reWIm+W7ulxyXG4gICAgICAgICAgICBpZiAoaW5kZXggPCB0aGlzLndhbGxJbmZvLmxlbmd0aCkge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5zY2hlZHVsZU9uY2UoKCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgIGNyZWF0ZVdhbGxzKCk7XHJcbiAgICAgICAgICAgICAgICB9LCAwKTtcclxuICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgIC8vIOaJgOacieWimeWjgeWIm+W7uuWujOaIkOWQju+8jOWIm+W7uuaLkOinkuiKgueCuVxyXG4gICAgICAgICAgICAgICAgdGhpcy5jcmVhdGVDb3JuZXJOb2RlcygpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfTtcclxuXHJcbiAgICAgICAgLy8g5byA5aeL5YiG5bin5Yib5bu65aKZ5aOBXHJcbiAgICAgICAgY3JlYXRlV2FsbHMoKTtcclxuICAgIH1cclxuXHJcbiAgICAvLyAuLi4g5bey5pyJ5Luj56CBIC4uLlxyXG5cclxuICAgIGdldFdsbERpcmFjdGlvbih0eXBlLCBwb2ludEEpIHtcclxuICAgICAgICBsZXQgZGlyID0gW107XHJcbiAgICAgICAgbGV0IHBvaW50QiA9IGNjLnYyKHBvaW50QS54ICsgMSwgcG9pbnRBLnkpO1xyXG4gICAgICAgIGxldCBwb2ludEMgPSBjYy52Mihwb2ludEEueCAtIDEsIHBvaW50QS55KTtcclxuICAgICAgICBsZXQgcG9pbnREID0gY2MudjIocG9pbnRBLngsIHBvaW50QS55ICsgMSk7XHJcbiAgICAgICAgbGV0IHBvaW50RSA9IGNjLnYyKHBvaW50QS54LCBwb2ludEEueSAtIDEpO1xyXG4gICAgICAgIGxldCBvcGFjaXR5ID0gMDtcclxuICAgICAgICBpZiAodHlwZSA9PSBcIndhbGxcIikgb3BhY2l0eSA9IDI1NTtcclxuICAgICAgICBpZiAodHlwZSA9PSBcInR1cm5cIikgb3BhY2l0eSA9IDI1MDtcclxuXHJcbiAgICAgICAgaWYgKHBvaW50Qi54IDwgdGhpcy5tYXBXaWR0aCkge1xyXG4gICAgICAgICAgICBpZiAodGhpcy5tYXBCbG9ja3NXYWxsW3BvaW50Qi54XVtwb2ludEIueV0ub3BhY2l0eSA9PSBvcGFjaXR5KSB7XHJcbiAgICAgICAgICAgICAgICBpZiAodHlwZSA9PSBcInR1cm5cIiAmJiB0aGlzLm1hcEJsb2Nrc1dhbGxbcG9pbnRCLnhdW3BvaW50Qi55XS5nZXRDb21wb25lbnQoXCJNYXBCbG9ja1wiKS5kaXJlY3Rpb24gPT0gXCJyaWdodFwiKSB7XHJcblxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgZWxzZSBkaXIucHVzaChcInJpZ2h0XCIpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmIChwb2ludEMueCA+PSAwKSB7XHJcbiAgICAgICAgICAgIGlmICh0aGlzLm1hcEJsb2Nrc1dhbGxbcG9pbnRDLnhdW3BvaW50Qy55XS5vcGFjaXR5ID09IG9wYWNpdHkpIHtcclxuICAgICAgICAgICAgICAgIGlmICh0eXBlID09IFwidHVyblwiICYmIHRoaXMubWFwQmxvY2tzV2FsbFtwb2ludEMueF1bcG9pbnRDLnldLmdldENvbXBvbmVudChcIk1hcEJsb2NrXCIpLmRpcmVjdGlvbiA9PSBcImxlZnRcIikge1xyXG5cclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIGVsc2UgZGlyLnB1c2goXCJsZWZ0XCIpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmIChwb2ludEQueSA8IHRoaXMubWFwSGVpZ2h0KSB7XHJcbiAgICAgICAgICAgIGlmICh0aGlzLm1hcEJsb2Nrc1dhbGxbcG9pbnRELnhdW3BvaW50RC55XS5vcGFjaXR5ID09IG9wYWNpdHkpIHtcclxuICAgICAgICAgICAgICAgIGlmICh0eXBlID09IFwidHVyblwiICYmIHRoaXMubWFwQmxvY2tzV2FsbFtwb2ludEQueF1bcG9pbnRELnldLmdldENvbXBvbmVudChcIk1hcEJsb2NrXCIpLmRpcmVjdGlvbiA9PSBcInVwXCIpIHtcclxuXHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBlbHNlIGRpci5wdXNoKFwidXBcIik7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKHBvaW50RS55ID49IDApIHtcclxuICAgICAgICAgICAgaWYgKHRoaXMubWFwQmxvY2tzV2FsbFtwb2ludEUueF1bcG9pbnRFLnldLm9wYWNpdHkgPT0gb3BhY2l0eSkge1xyXG4gICAgICAgICAgICAgICAgaWYgKHR5cGUgPT0gXCJ0dXJuXCIgJiYgdGhpcy5tYXBCbG9ja3NXYWxsW3BvaW50RS54XVtwb2ludEUueV0uZ2V0Q29tcG9uZW50KFwiTWFwQmxvY2tcIikuZGlyZWN0aW9uID09IFwiZG93blwiKSB7XHJcblxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgZWxzZSBkaXIucHVzaChcImRvd25cIik7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKGRpci5sZW5ndGggPiAyKSB7XHJcblxyXG4gICAgICAgICAgICByZXR1cm4gbnVsbDtcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKGRpci5sZW5ndGggPT0gMSkge1xyXG4gICAgICAgICAgICBpZiAodHlwZSA9PSBcIndhbGxcIilcclxuICAgICAgICAgICAgICAgIHJldHVybiBkaXJbMF07XHJcbiAgICAgICAgICAgIGVsc2VcclxuICAgICAgICAgICAgICAgIHJldHVybiBudWxsO1xyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIGlmIChkaXIubGVuZ3RoID09IDIpIHtcclxuICAgICAgICAgICAgcmV0dXJuIGRpclswXSArIGRpclsxXTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgY3JlYXRlQ29ybmVyTm9kZXMoKSB7XHJcbiAgICAgICAgLy8g5a6a5LmJ5ouQ6KeS5L2N572uXHJcbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0aGlzLndhbGxJbmZvLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgICAgIGxldCBibG9jayA9IHRoaXMud2FsbEluZm9baV07XHJcbiAgICAgICAgICAgIGlmIChibG9jay5vcGFjaXR5ICE9IDI1MCkge1xyXG4gICAgICAgICAgICAgICAgbGV0IGRpciA9IHRoaXMuZ2V0V2xsRGlyYWN0aW9uKFwidHVyblwiLCBjYy52MihibG9jay5nZXRDb21wb25lbnQoXCJNYXBCbG9ja1wiKS5wb3NYLCBibG9jay5nZXRDb21wb25lbnQoXCJNYXBCbG9ja1wiKS5wb3NZKSk7XHJcbiAgICAgICAgICAgICAgICBpZiAoZGlyICE9IG51bGwpIHtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLmNyZWF0ZVR1cm4oZGlyLCBibG9jaywgYmxvY2suZ2V0Q29tcG9uZW50KFwiTWFwQmxvY2tcIikucG9zWCwgYmxvY2suZ2V0Q29tcG9uZW50KFwiTWFwQmxvY2tcIikucG9zWSk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgfVxyXG5cclxuICAgIH1cclxuXHJcbiAgICBjcmVhdGVXYWxsKGRpcmVjdGlvbiwgbm9kZSkge1xyXG4gICAgICAgIGxldCB3YWxsID0gbnVsbDtcclxuICAgICAgICBub2RlLmdldENvbXBvbmVudChcIk1hcEJsb2NrXCIpLnNldERpcmFjdGlvbihkaXJlY3Rpb24pO1xyXG4gICAgICAgIHN3aXRjaCAoZGlyZWN0aW9uKSB7XHJcbiAgICAgICAgICAgIGNhc2UgXCJyaWdodFwiOlxyXG4gICAgICAgICAgICAgICAgbm9kZS5vcGFjaXR5ID0gMjUwO1xyXG4gICAgICAgICAgICAgICAgd2FsbCA9IGNjLmluc3RhbnRpYXRlKHRoaXMuV2FsbF9QcmVmYWJbNF0pO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5sZWZ0RG9vcnMucHVzaCh3YWxsKTtcclxuICAgICAgICAgICAgICAgIC8vIHdhbGwucGFyZW50ID0gdGhpcy5ub2RlLmdldENoaWxkQnlOYW1lKFwiV2FsbFwiKTtcclxuICAgICAgICAgICAgICAgIHdhbGwucGFyZW50ID0gdGhpcy5ub2RlO1xyXG4gICAgICAgICAgICAgICAgd2FsbC5zZXRQb3NpdGlvbihjYy52Mihub2RlLngsIG5vZGUueSkpO1xyXG4gICAgICAgICAgICAgICAgbm9kZS5vcGFjaXR5ID0gMjUwO1xyXG4gICAgICAgICAgICAgICAgd2FsbC5nZXRDaGlsZEJ5TmFtZShcIndhbGxcIikuZ2V0Q29tcG9uZW50KFwiV2FsbFwiKS5pbml0KG51bGwsIG5vZGUuZ2V0Q29tcG9uZW50KFwiTWFwQmxvY2tcIikucG9zWCwgbm9kZS5nZXRDb21wb25lbnQoXCJNYXBCbG9ja1wiKS5wb3NZLCBkaXJlY3Rpb24pO1xyXG4gICAgICAgICAgICAgICAgLy93YWxsLmdldENoaWxkQnlOYW1lKFwid2FsbFwiKS5nZXRDaGlsZEJ5TmFtZShcIm51bVwiKS5nZXRDb21wb25lbnQoY2MuTGFiZWwpLnN0cmluZyA9IHRoaXMud2FsbE51bS50b1N0cmluZygpO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5zZXREb29ySW5mbyh3YWxsLmdldENoaWxkQnlOYW1lKFwid2FsbFwiKSk7XHJcbiAgICAgICAgICAgICAgICB0aGlzLndhbGxOdW0gKz0gMTtcclxuICAgICAgICAgICAgICAgIGlmICh3YWxsLmdldENoaWxkQnlOYW1lKFwid2FsbFwiKS5nZXRDb21wb25lbnQoXCJXYWxsXCIpLnNwZWNpYWwgPT0gMilcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLm9wZW5XYWxsLnB1c2god2FsbCk7XHJcbiAgICAgICAgICAgICAgICBlbHNlIGlmICh3YWxsLmdldENoaWxkQnlOYW1lKFwid2FsbFwiKS5nZXRDb21wb25lbnQoXCJXYWxsXCIpLnNwZWNpYWwgPT0gMylcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLmZyZWV6ZVdhbGwucHVzaCh3YWxsKTtcclxuXHJcbiAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgY2FzZSBcImxlZnRcIjpcclxuICAgICAgICAgICAgICAgIG5vZGUub3BhY2l0eSA9IDI1MDtcclxuICAgICAgICAgICAgICAgIHdhbGwgPSBjYy5pbnN0YW50aWF0ZSh0aGlzLldhbGxfUHJlZmFiWzNdKTtcclxuICAgICAgICAgICAgICAgIC8vIHdhbGwucGFyZW50ID0gdGhpcy5ub2RlLmdldENoaWxkQnlOYW1lKFwiV2FsbFwiKTtcclxuICAgICAgICAgICAgICAgIHRoaXMucmlnaHREb29ycy5wdXNoKHdhbGwpO1xyXG4gICAgICAgICAgICAgICAgd2FsbC5wYXJlbnQgPSB0aGlzLm5vZGU7XHJcbiAgICAgICAgICAgICAgICB3YWxsLnNldFBvc2l0aW9uKGNjLnYyKG5vZGUueCwgbm9kZS55KSk7XHJcbiAgICAgICAgICAgICAgICB3YWxsLmdldENoaWxkQnlOYW1lKFwid2FsbFwiKS5nZXRDb21wb25lbnQoXCJXYWxsXCIpLmluaXQobnVsbCwgbm9kZS5nZXRDb21wb25lbnQoXCJNYXBCbG9ja1wiKS5wb3NYLCBub2RlLmdldENvbXBvbmVudChcIk1hcEJsb2NrXCIpLnBvc1ksIGRpcmVjdGlvbik7XHJcbiAgICAgICAgICAgICAgICB0aGlzLnNldERvb3JJbmZvKHdhbGwuZ2V0Q2hpbGRCeU5hbWUoXCJ3YWxsXCIpKTtcclxuICAgICAgICAgICAgICAgIC8vd2FsbC5nZXRDaGlsZEJ5TmFtZShcIndhbGxcIikuZ2V0Q2hpbGRCeU5hbWUoXCJudW1cIikuZ2V0Q29tcG9uZW50KGNjLkxhYmVsKS5zdHJpbmcgPSB0aGlzLndhbGxOdW0udG9TdHJpbmcoKTtcclxuICAgICAgICAgICAgICAgIHRoaXMud2FsbE51bSArPSAxO1xyXG4gICAgICAgICAgICAgICAgaWYgKHdhbGwuZ2V0Q2hpbGRCeU5hbWUoXCJ3YWxsXCIpLmdldENvbXBvbmVudChcIldhbGxcIikuc3BlY2lhbCA9PSAyKVxyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMub3BlbldhbGwucHVzaCh3YWxsKTtcclxuICAgICAgICAgICAgICAgIGVsc2UgaWYgKHdhbGwuZ2V0Q2hpbGRCeU5hbWUoXCJ3YWxsXCIpLmdldENvbXBvbmVudChcIldhbGxcIikuc3BlY2lhbCA9PSAzKVxyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZnJlZXplV2FsbC5wdXNoKHdhbGwpO1xyXG4gICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgIGNhc2UgXCJ1cFwiOlxyXG4gICAgICAgICAgICAgICAgbm9kZS5vcGFjaXR5ID0gMjUwO1xyXG4gICAgICAgICAgICAgICAgd2FsbCA9IGNjLmluc3RhbnRpYXRlKHRoaXMuV2FsbF9QcmVmYWJbNV0pO1xyXG5cclxuICAgICAgICAgICAgICAgIHRoaXMudG9wRG9vcnMucHVzaCh3YWxsKTtcclxuICAgICAgICAgICAgICAgIC8vIHdhbGwucGFyZW50ID0gdGhpcy5ub2RlLmdldENoaWxkQnlOYW1lKFwiV2FsbFwiKTtcclxuICAgICAgICAgICAgICAgIHdhbGwucGFyZW50ID0gdGhpcy5ub2RlO1xyXG4gICAgICAgICAgICAgICAgd2FsbC5zZXRQb3NpdGlvbihjYy52Mihub2RlLngsIG5vZGUueSkpO1xyXG5cclxuICAgICAgICAgICAgICAgIHdhbGwuZ2V0Q2hpbGRCeU5hbWUoXCJ3YWxsXCIpLmdldENvbXBvbmVudChcIldhbGxcIikuaW5pdChudWxsLCBub2RlLmdldENvbXBvbmVudChcIk1hcEJsb2NrXCIpLnBvc1gsIG5vZGUuZ2V0Q29tcG9uZW50KFwiTWFwQmxvY2tcIikucG9zWSwgZGlyZWN0aW9uKTtcclxuICAgICAgICAgICAgICAgIHRoaXMuc2V0RG9vckluZm8od2FsbC5nZXRDaGlsZEJ5TmFtZShcIndhbGxcIikpO1xyXG4gICAgICAgICAgICAgICAgLy93YWxsLmdldENoaWxkQnlOYW1lKFwid2FsbFwiKS5nZXRDaGlsZEJ5TmFtZShcIm51bVwiKS5nZXRDb21wb25lbnQoY2MuTGFiZWwpLnN0cmluZyA9IHRoaXMud2FsbE51bS50b1N0cmluZygpO1xyXG4gICAgICAgICAgICAgICAgdGhpcy53YWxsTnVtICs9IDE7XHJcbiAgICAgICAgICAgICAgICBpZiAod2FsbC5nZXRDaGlsZEJ5TmFtZShcIndhbGxcIikuZ2V0Q29tcG9uZW50KFwiV2FsbFwiKS5zcGVjaWFsID09IDIpXHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5vcGVuV2FsbC5wdXNoKHdhbGwpO1xyXG4gICAgICAgICAgICAgICAgZWxzZSBpZiAod2FsbC5nZXRDaGlsZEJ5TmFtZShcIndhbGxcIikuZ2V0Q29tcG9uZW50KFwiV2FsbFwiKS5zcGVjaWFsID09IDMpXHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5mcmVlemVXYWxsLnB1c2god2FsbCk7XHJcbiAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgY2FzZSBcImRvd25cIjpcclxuICAgICAgICAgICAgICAgIG5vZGUub3BhY2l0eSA9IDI1MDtcclxuICAgICAgICAgICAgICAgIHdhbGwgPSBjYy5pbnN0YW50aWF0ZSh0aGlzLldhbGxfUHJlZmFiWzBdKTtcclxuICAgICAgICAgICAgICAgIHRoaXMuYm90dG9tRG9vcnMucHVzaCh3YWxsKTtcclxuICAgICAgICAgICAgICAgIC8vIHdhbGwucGFyZW50ID0gdGhpcy5ub2RlLmdldENoaWxkQnlOYW1lKFwiV2FsbFwiKTtcclxuICAgICAgICAgICAgICAgIHdhbGwucGFyZW50ID0gdGhpcy5ub2RlO1xyXG4gICAgICAgICAgICAgICAgd2FsbC5zZXRQb3NpdGlvbihjYy52Mihub2RlLngsIG5vZGUueSkpO1xyXG4gICAgICAgICAgICAgICAgLy8gdGhpcy5zZXREb29ySW5mbyh3YWxsLmdldENoaWxkQnlOYW1lKFwid2FsbFwiKSk7XHJcbiAgICAgICAgICAgICAgICB3YWxsLmdldENoaWxkQnlOYW1lKFwid2FsbFwiKS5nZXRDb21wb25lbnQoXCJXYWxsXCIpLmluaXQobnVsbCwgbm9kZS5nZXRDb21wb25lbnQoXCJNYXBCbG9ja1wiKS5wb3NYLCBub2RlLmdldENvbXBvbmVudChcIk1hcEJsb2NrXCIpLnBvc1ksIGRpcmVjdGlvbik7XHJcbiAgICAgICAgICAgICAgICB0aGlzLnNldERvb3JJbmZvKHdhbGwuZ2V0Q2hpbGRCeU5hbWUoXCJ3YWxsXCIpKTtcclxuICAgICAgICAgICAgICAgIC8vd2FsbC5nZXRDaGlsZEJ5TmFtZShcIndhbGxcIikuZ2V0Q2hpbGRCeU5hbWUoXCJudW1cIikuZ2V0Q29tcG9uZW50KGNjLkxhYmVsKS5zdHJpbmcgPSB0aGlzLndhbGxOdW0udG9TdHJpbmcoKTtcclxuICAgICAgICAgICAgICAgIHRoaXMud2FsbE51bSArPSAxO1xyXG4gICAgICAgICAgICAgICAgaWYgKHdhbGwuZ2V0Q2hpbGRCeU5hbWUoXCJ3YWxsXCIpLmdldENvbXBvbmVudChcIldhbGxcIikuc3BlY2lhbCA9PSAyKVxyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMub3BlbldhbGwucHVzaCh3YWxsKTtcclxuICAgICAgICAgICAgICAgIGVsc2UgaWYgKHdhbGwuZ2V0Q2hpbGRCeU5hbWUoXCJ3YWxsXCIpLmdldENvbXBvbmVudChcIldhbGxcIikuc3BlY2lhbCA9PSAzKVxyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZnJlZXplV2FsbC5wdXNoKHdhbGwpO1xyXG4gICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgIGNhc2UgXCJ1cHJpZ2h0XCI6IGNhc2UgXCJyaWdodHVwXCI6XHJcbiAgICAgICAgICAgICAgICBub2RlLm9wYWNpdHkgPSAyNDk7XHJcbiAgICAgICAgICAgICAgICB3YWxsID0gY2MuaW5zdGFudGlhdGUodGhpcy5XYWxsX1ByZWZhYls3XSk7XHJcbiAgICAgICAgICAgICAgICAvLyB3YWxsLnBhcmVudCA9IHRoaXMubm9kZS5nZXRDaGlsZEJ5TmFtZShcIldhbGxcIik7XHJcbiAgICAgICAgICAgICAgICB3YWxsLnBhcmVudCA9IHRoaXMubm9kZTtcclxuICAgICAgICAgICAgICAgIHdhbGwuc2V0UG9zaXRpb24oY2MudjIobm9kZS54LCBub2RlLnkpKTtcclxuICAgICAgICAgICAgICAgIHdhbGwuY2hpbGRyZW5bMV0uZ2V0Q29tcG9uZW50KFwiV2FsbFwiKS5pbml0KG51bGwsIG5vZGUuZ2V0Q29tcG9uZW50KFwiTWFwQmxvY2tcIikucG9zWCwgbm9kZS5nZXRDb21wb25lbnQoXCJNYXBCbG9ja1wiKS5wb3NZLCBkaXJlY3Rpb24pO1xyXG4gICAgICAgICAgICAgICAgd2FsbC5jaGlsZHJlblsyXS5nZXRDb21wb25lbnQoXCJXYWxsXCIpLmluaXQobnVsbCwgbm9kZS5nZXRDb21wb25lbnQoXCJNYXBCbG9ja1wiKS5wb3NYLCBub2RlLmdldENvbXBvbmVudChcIk1hcEJsb2NrXCIpLnBvc1ksIGRpcmVjdGlvbik7XHJcbiAgICAgICAgICAgICAgICAvL3dhbGwuY2hpbGRyZW5bMF0uZ2V0Q2hpbGRCeU5hbWUoXCJudW1cIikuZ2V0Q29tcG9uZW50KGNjLkxhYmVsKS5zdHJpbmcgPSB0aGlzLndhbGxOdW0udG9TdHJpbmcoKTtcclxuICAgICAgICAgICAgICAgIHRoaXMuc2V0RG9vckluZm8od2FsbC5jaGlsZHJlblswXSk7XHJcbiAgICAgICAgICAgICAgICB0aGlzLndhbGxOdW0gKz0gMTtcclxuICAgICAgICAgICAgICAgIC8vd2FsbC5jaGlsZHJlblsxXS5nZXRDaGlsZEJ5TmFtZShcIm51bVwiKS5nZXRDb21wb25lbnQoY2MuTGFiZWwpLnN0cmluZyA9IHRoaXMud2FsbE51bS50b1N0cmluZygpO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5zZXREb29ySW5mbyh3YWxsLmNoaWxkcmVuWzFdKTtcclxuICAgICAgICAgICAgICAgIHRoaXMud2FsbE51bSArPSAxO1xyXG5cclxuICAgICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICBjYXNlIFwidXBsZWZ0XCI6IGNhc2UgXCJsZWZ0dXBcIjpcclxuICAgICAgICAgICAgICAgIG5vZGUub3BhY2l0eSA9IDI0OTtcclxuICAgICAgICAgICAgICAgIHdhbGwgPSBjYy5pbnN0YW50aWF0ZSh0aGlzLldhbGxfUHJlZmFiWzZdKTtcclxuICAgICAgICAgICAgICAgIC8vIHdhbGwucGFyZW50ID0gdGhpcy5ub2RlLmdldENoaWxkQnlOYW1lKFwiV2FsbFwiKTtcclxuICAgICAgICAgICAgICAgIHdhbGwucGFyZW50ID0gdGhpcy5ub2RlO1xyXG4gICAgICAgICAgICAgICAgd2FsbC5zZXRQb3NpdGlvbihjYy52Mihub2RlLngsIG5vZGUueSkpO1xyXG4gICAgICAgICAgICAgICAgd2FsbC5jaGlsZHJlblsxXS5nZXRDb21wb25lbnQoXCJXYWxsXCIpLmluaXQobnVsbCwgbm9kZS5nZXRDb21wb25lbnQoXCJNYXBCbG9ja1wiKS5wb3NYLCBub2RlLmdldENvbXBvbmVudChcIk1hcEJsb2NrXCIpLnBvc1ksIGRpcmVjdGlvbik7XHJcbiAgICAgICAgICAgICAgICB3YWxsLmNoaWxkcmVuWzJdLmdldENvbXBvbmVudChcIldhbGxcIikuaW5pdChudWxsLCBub2RlLmdldENvbXBvbmVudChcIk1hcEJsb2NrXCIpLnBvc1gsIG5vZGUuZ2V0Q29tcG9uZW50KFwiTWFwQmxvY2tcIikucG9zWSwgZGlyZWN0aW9uKTtcclxuICAgICAgICAgICAgICAgIC8vd2FsbC5jaGlsZHJlblswXS5nZXRDaGlsZEJ5TmFtZShcIm51bVwiKS5nZXRDb21wb25lbnQoY2MuTGFiZWwpLnN0cmluZyA9IHRoaXMud2FsbE51bS50b1N0cmluZygpO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5zZXREb29ySW5mbyh3YWxsLmNoaWxkcmVuWzBdKTtcclxuICAgICAgICAgICAgICAgIHRoaXMud2FsbE51bSArPSAxO1xyXG4gICAgICAgICAgICAgICAgLy93YWxsLmNoaWxkcmVuWzFdLmdldENoaWxkQnlOYW1lKFwibnVtXCIpLmdldENvbXBvbmVudChjYy5MYWJlbCkuc3RyaW5nID0gdGhpcy53YWxsTnVtLnRvU3RyaW5nKCk7XHJcbiAgICAgICAgICAgICAgICB0aGlzLnNldERvb3JJbmZvKHdhbGwuY2hpbGRyZW5bMV0pO1xyXG4gICAgICAgICAgICAgICAgdGhpcy53YWxsTnVtICs9IDE7XHJcblxyXG4gICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgIGNhc2UgXCJkb3ducmlnaHRcIjogY2FzZSBcInJpZ2h0ZG93blwiOlxyXG4gICAgICAgICAgICAgICAgbm9kZS5vcGFjaXR5ID0gMjQ5O1xyXG4gICAgICAgICAgICAgICAgd2FsbCA9IGNjLmluc3RhbnRpYXRlKHRoaXMuV2FsbF9QcmVmYWJbMl0pO1xyXG4gICAgICAgICAgICAgICAgLy8gd2FsbC5wYXJlbnQgPSB0aGlzLm5vZGUuZ2V0Q2hpbGRCeU5hbWUoXCJXYWxsXCIpO1xyXG4gICAgICAgICAgICAgICAgd2FsbC5wYXJlbnQgPSB0aGlzLm5vZGU7XHJcbiAgICAgICAgICAgICAgICB3YWxsLnNldFBvc2l0aW9uKGNjLnYyKG5vZGUueCwgbm9kZS55KSk7XHJcbiAgICAgICAgICAgICAgICB3YWxsLmNoaWxkcmVuWzFdLmdldENvbXBvbmVudChcIldhbGxcIikuaW5pdChudWxsLCBub2RlLmdldENvbXBvbmVudChcIk1hcEJsb2NrXCIpLnBvc1gsIG5vZGUuZ2V0Q29tcG9uZW50KFwiTWFwQmxvY2tcIikucG9zWSwgZGlyZWN0aW9uKTtcclxuICAgICAgICAgICAgICAgIHdhbGwuY2hpbGRyZW5bMl0uZ2V0Q29tcG9uZW50KFwiV2FsbFwiKS5pbml0KG51bGwsIG5vZGUuZ2V0Q29tcG9uZW50KFwiTWFwQmxvY2tcIikucG9zWCwgbm9kZS5nZXRDb21wb25lbnQoXCJNYXBCbG9ja1wiKS5wb3NZLCBkaXJlY3Rpb24pO1xyXG4gICAgICAgICAgICAgICAgLy93YWxsLmNoaWxkcmVuWzBdLmdldENoaWxkQnlOYW1lKFwibnVtXCIpLmdldENvbXBvbmVudChjYy5MYWJlbCkuc3RyaW5nID0gdGhpcy53YWxsTnVtLnRvU3RyaW5nKCk7XHJcbiAgICAgICAgICAgICAgICB0aGlzLnNldERvb3JJbmZvKHdhbGwuY2hpbGRyZW5bMF0pO1xyXG4gICAgICAgICAgICAgICAgdGhpcy53YWxsTnVtICs9IDE7XHJcbiAgICAgICAgICAgICAgICAvL3dhbGwuY2hpbGRyZW5bMV0uZ2V0Q2hpbGRCeU5hbWUoXCJudW1cIikuZ2V0Q29tcG9uZW50KGNjLkxhYmVsKS5zdHJpbmcgPSB0aGlzLndhbGxOdW0udG9TdHJpbmcoKTtcclxuICAgICAgICAgICAgICAgIHRoaXMuc2V0RG9vckluZm8od2FsbC5jaGlsZHJlblsxXSk7XHJcbiAgICAgICAgICAgICAgICB0aGlzLndhbGxOdW0gKz0gMTtcclxuXHJcbiAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgY2FzZSBcImRvd25sZWZ0XCI6IGNhc2UgXCJsZWZ0ZG93blwiOlxyXG4gICAgICAgICAgICAgICAgbm9kZS5vcGFjaXR5ID0gMjQ5O1xyXG4gICAgICAgICAgICAgICAgd2FsbCA9IGNjLmluc3RhbnRpYXRlKHRoaXMuV2FsbF9QcmVmYWJbMV0pO1xyXG4gICAgICAgICAgICAgICAgLy8gd2FsbC5wYXJlbnQgPSB0aGlzLm5vZGUuZ2V0Q2hpbGRCeU5hbWUoXCJXYWxsXCIpO1xyXG4gICAgICAgICAgICAgICAgd2FsbC5wYXJlbnQgPSB0aGlzLm5vZGU7XHJcbiAgICAgICAgICAgICAgICB3YWxsLnNldFBvc2l0aW9uKGNjLnYyKG5vZGUueCwgbm9kZS55KSk7XHJcbiAgICAgICAgICAgICAgICB3YWxsLmNoaWxkcmVuWzFdLmdldENvbXBvbmVudChcIldhbGxcIikuaW5pdChudWxsLCBub2RlLmdldENvbXBvbmVudChcIk1hcEJsb2NrXCIpLnBvc1gsIG5vZGUuZ2V0Q29tcG9uZW50KFwiTWFwQmxvY2tcIikucG9zWSwgZGlyZWN0aW9uKTtcclxuICAgICAgICAgICAgICAgIHdhbGwuY2hpbGRyZW5bMl0uZ2V0Q29tcG9uZW50KFwiV2FsbFwiKS5pbml0KG51bGwsIG5vZGUuZ2V0Q29tcG9uZW50KFwiTWFwQmxvY2tcIikucG9zWCwgbm9kZS5nZXRDb21wb25lbnQoXCJNYXBCbG9ja1wiKS5wb3NZLCBkaXJlY3Rpb24pO1xyXG4gICAgICAgICAgICAgICAgLy93YWxsLmNoaWxkcmVuWzBdLmdldENoaWxkQnlOYW1lKFwibnVtXCIpLmdldENvbXBvbmVudChjYy5MYWJlbCkuc3RyaW5nID0gdGhpcy53YWxsTnVtLnRvU3RyaW5nKCk7XHJcbiAgICAgICAgICAgICAgICB0aGlzLnNldERvb3JJbmZvKHdhbGwuY2hpbGRyZW5bMF0pO1xyXG4gICAgICAgICAgICAgICAgdGhpcy53YWxsTnVtICs9IDE7XHJcbiAgICAgICAgICAgICAgICAvL3dhbGwuY2hpbGRyZW5bMV0uZ2V0Q2hpbGRCeU5hbWUoXCJudW1cIikuZ2V0Q29tcG9uZW50KGNjLkxhYmVsKS5zdHJpbmcgPSB0aGlzLndhbGxOdW0udG9TdHJpbmcoKTtcclxuICAgICAgICAgICAgICAgIHRoaXMuc2V0RG9vckluZm8od2FsbC5jaGlsZHJlblsxXSk7XHJcbiAgICAgICAgICAgICAgICB0aGlzLndhbGxOdW0gKz0gMTtcclxuXHJcbiAgICAgICAgICAgICAgICBicmVhaztcclxuXHJcbiAgICAgICAgfVxyXG5cclxuXHJcbiAgICAgICAgLy8gaWYod2FsbFR1cm4pe1xyXG4gICAgICAgIC8vICAgICB3YWxsVHVybi5nZXRDb21wb25lbnQoXCJ3YWxsVHVuclwiKS5pbml0KHdhbGwpO1xyXG4gICAgICAgIC8vIH1cclxuICAgIH1cclxuXHJcbiAgICBzZXREb29ySW5mbyh3YWxsKSB7XHJcbiAgICAgICAgbGV0IGRvb3JJbmZvID0gY2MuZnguR2FtZUNvbmZpZy5XQUxMX0lORk9bMF07XHJcblxyXG4gICAgICAgIGlmIChkb29ySW5mbykge1xyXG4gICAgICAgICAgICBmb3IgKGxldCBqID0gMDsgaiA8IGRvb3JJbmZvLmxlbmd0aDsgaisrKSB7XHJcbiAgICAgICAgICAgICAgICBpZiAoZG9vckluZm9bal0ubnVtID09IHRoaXMud2FsbE51bSkge1xyXG4gICAgICAgICAgICAgICAgICAgIHdhbGwuZ2V0Q29tcG9uZW50KFwiV2FsbFwiKS5pbml0KGRvb3JJbmZvW2pdLCBudWxsLCBudWxsLCBudWxsKTtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLndhbGxBcnJheS5wdXNoKHdhbGwucGFyZW50KTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBjcmVhdGVUdXJuKGRpcmVjdGlvbiwgbm9kZSwgcG9zWCwgcG9zWSkge1xyXG4gICAgICAgIGxldCB3YWxsID0gbnVsbDtcclxuICAgICAgICB3YWxsID0gY2MuaW5zdGFudGlhdGUodGhpcy53YWxsVHVyblByZWZhYik7XHJcbiAgICAgICAgd2FsbC5wYXJlbnQgPSB0aGlzLm5vZGU7XHJcbiAgICAgICAgd2FsbC5zZXRQb3NpdGlvbihjYy52Mihub2RlLngsIG5vZGUueSkpO1xyXG4gICAgICAgIHN3aXRjaCAoZGlyZWN0aW9uKSB7XHJcbiAgICAgICAgICAgIGNhc2UgXCJ1cHJpZ2h0XCI6IGNhc2UgXCJyaWdodHVwXCI6XHJcbiAgICAgICAgICAgICAgICB3YWxsLmFuZ2xlID0gMDtcclxuICAgICAgICAgICAgICAgIHdhbGwuZ2V0Q2hpbGRCeU5hbWUoXCJpY29uXCIpLmFuZ2xlID0gMDtcclxuXHJcbiAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgY2FzZSBcInVwbGVmdFwiOiBjYXNlIFwibGVmdHVwXCI6XHJcbiAgICAgICAgICAgICAgICB3YWxsLmFuZ2xlID0gOTA7XHJcbiAgICAgICAgICAgICAgICB3YWxsLmdldENoaWxkQnlOYW1lKFwiaWNvblwiKS5hbmdsZSA9IC05MDtcclxuICAgICAgICAgICAgICAgIHdhbGwuZ2V0Q2hpbGRCeU5hbWUoXCJpY29uXCIpLnkgKz0gNTtcclxuICAgICAgICAgICAgICAgIHdhbGwuZ2V0Q2hpbGRCeU5hbWUoXCJpY29uXCIpLnggLT0gMS4zO1xyXG4gICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgIGNhc2UgXCJkb3ducmlnaHRcIjogY2FzZSBcInJpZ2h0ZG93blwiOlxyXG4gICAgICAgICAgICAgICAgd2FsbC5hbmdsZSA9IDI3MDtcclxuICAgICAgICAgICAgICAgIHdhbGwuZ2V0Q2hpbGRCeU5hbWUoXCJpY29uXCIpLmFuZ2xlID0gLTI3MDtcclxuICAgICAgICAgICAgICAgIHdhbGwuZ2V0Q2hpbGRCeU5hbWUoXCJpY29uXCIpLnggKz0gMi41O1xyXG4gICAgICAgICAgICAgICAgd2FsbC5nZXRDaGlsZEJ5TmFtZShcImljb25cIikueSArPSAxO1xyXG4gICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgIGNhc2UgXCJkb3dubGVmdFwiOiBjYXNlIFwibGVmdGRvd25cIjpcclxuICAgICAgICAgICAgICAgIHdhbGwuYW5nbGUgPSAxODA7XHJcbiAgICAgICAgICAgICAgICB3YWxsLmdldENoaWxkQnlOYW1lKFwiaWNvblwiKS5hbmdsZSA9IC0xODA7XHJcbiAgICAgICAgICAgICAgICB3YWxsLmdldENoaWxkQnlOYW1lKFwiaWNvblwiKS54ICs9IDQuNTtcclxuICAgICAgICAgICAgICAgIHdhbGwuZ2V0Q2hpbGRCeU5hbWUoXCJpY29uXCIpLnkgKz0gMy4yO1xyXG4gICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICAvLyBpZihkaXJlY3Rpb24gPT0gXCJyaWdodGRvd25cIiB8fCBkaXJlY3Rpb24gPT0gXCJkb3ducmlnaHRcIikge1xyXG4gICAgICAgIC8vICAgICB3YWxsLnpJbmRleCA9IDUwICsgcG9zWCAtIHBvc1kqMztcclxuICAgICAgICAvLyB9XHJcbiAgICAgICAgLy8gZWxzZSBcclxuICAgICAgICAvLyAgICAgd2FsbC56SW5kZXggPSA1MCArIHBvc1ggLSBwb3NZKjM7XHJcblxyXG4gICAgICAgIGlmIChkaXJlY3Rpb24gPT0gXCJ1cFwiIHx8IGRpcmVjdGlvbiA9PSBcImxlZnR1cFwiIHx8IGRpcmVjdGlvbiA9PSBcInVwbGVmdFwiXHJcbiAgICAgICAgKSB7XHJcbiAgICAgICAgICAgIHdhbGwuekluZGV4ID0gMTAwICsgcG9zWCAtIHBvc1kgKiAzO1xyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIGlmIChkaXJlY3Rpb24gPT0gXCJyaWdodHVwXCIgfHwgZGlyZWN0aW9uID09IFwidXByaWdodFwiIHx8IGRpcmVjdGlvbiA9PSBcInJpZ2h0ZG93blwiIHx8IGRpcmVjdGlvbiA9PSBcImRvd25yaWdodFwiIHx8IGRpcmVjdGlvbiA9PSBcImRvd25sZWZ0XCIpIHtcclxuICAgICAgICAgICAgd2FsbC56SW5kZXggPSAzMCArIHBvc1ggLSBwb3NZICogMztcclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSBpZiAoZGlyZWN0aW9uID09IFwibGVmdFwiIHx8IGRpcmVjdGlvbiA9PSBcImxlZnRkb3duXCIpIHtcclxuICAgICAgICAgICAgd2FsbC56SW5kZXggPSA3MCArIHBvc1ggLSBwb3NZICogMztcclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSB3YWxsLnpJbmRleCA9IDcwICsgcG9zWCAtIHBvc1kgKiAzO1xyXG5cclxuICAgICAgICAvLyB3YWxsLmdldENoaWxkQnlOYW1lKFwibnVtXCIpLmFuZ2xlID0gLXdhbGwuYW5nbGU7XHJcbiAgICAgICAgLy93YWxsLmdldENoaWxkQnlOYW1lKFwibnVtXCIpLmdldENvbXBvbmVudChjYy5MYWJlbCkuc3RyaW5nID0gZGlyZWN0aW9uO1xyXG4gICAgICAgIC8vd2FsbC5nZXRDaGlsZEJ5TmFtZShcIm51bVwiKS5nZXRDb21wb25lbnQoY2MuTGFiZWwpLnN0cmluZyA9IHdhbGwuekluZGV4KyBcIlwiO1xyXG4gICAgICAgIC8vIGNvbnNvbGUubG9nKHBvc1gscG9zWSx3YWxsLnpJbmRleCk7XHJcbiAgICAgICAgLy8gdGhpcy53YWxsTnVtICs9ICAxO1xyXG4gICAgICAgIC8vIHdhbGwuZ2V0Q2hpbGRCeU5hbWUoXCJudW1cIikuZ2V0Q29tcG9uZW50KGNjLkxhYmVsKS5zdHJpbmcgPSB0aGlzLndhbGxOdW0gKyBcIlwiO1xyXG4gICAgfVxyXG5cclxuICAgIC8v5Zyw5Zu+5bqV5Z2X57y65Y+j5Yik5patXHJcbiAgICBtYXBHYXAocG9pbnQsIGdhcCkge1xyXG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgZ2FwLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgICAgIGlmIChwb2ludC54ID09IGdhcFtpXS54ICYmIHBvaW50LnkgPT0gZ2FwW2ldLnkpIHtcclxuICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gdHJ1ZTtcclxuICAgIH1cclxuXHJcbiAgICAvL+WNh+mZjeWcsOWdl+WIpOaWrVxyXG4gICAgbWFwUmlzZUZhbGwocG9pbnQsIHJpc2VmYWxsLCBibG9jaykge1xyXG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgcmlzZWZhbGwubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICAgICAgaWYgKHBvaW50LnggPT0gcmlzZWZhbGxbaV0ucG9zLnggJiYgcG9pbnQueSA9PSByaXNlZmFsbFtpXS5wb3MueSkge1xyXG4gICAgICAgICAgICAgICAgYmxvY2suZ2V0Q2hpbGRCeU5hbWUoXCJyaXNlZmFsbFwiKS5hY3RpdmUgPSB0cnVlO1xyXG4gICAgICAgICAgICAgICAgYmxvY2suZ2V0Q2hpbGRCeU5hbWUoJ3Jpc2VmYWxsJykuZ2V0Q2hpbGRCeU5hbWUoXCJjb2xvclwiKS5nZXRDb21wb25lbnQoY2MuTGFiZWwpLnN0cmluZyA9IHJpc2VmYWxsW2ldLmNvbG9yICsgXCJcIjtcclxuICAgICAgICAgICAgICAgIGJsb2NrLmdldENoaWxkQnlOYW1lKCdyaXNlZmFsbCcpLmFkZENvbXBvbmVudChjYy5Cb3hDb2xsaWRlcik7XHJcbiAgICAgICAgICAgICAgICBibG9jay5nZXRDaGlsZEJ5TmFtZSgncmlzZWZhbGwnKS5nZXRDb21wb25lbnQoY2MuQm94Q29sbGlkZXIpLnNpemUgPSBjYy5zaXplKDExMCwgMTEwKTtcclxuICAgICAgICAgICAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgIH1cclxuICAgIC8v5Y2H6ZmN5Zyw5Z2XXHJcbiAgICBjaGFuZ2VSaXNlRmFsbChjb2xvciwgZG93bikge1xyXG4gICAgICAgIGNvbG9yID0gY29sb3IudG9TdHJpbmcoKTtcclxuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRoaXMucmlzZUZhbGxCbGNvay5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgICAgICBpZiAoY29sb3IgPT0gdGhpcy5yaXNlRmFsbEJsY29rW2ldLmdldENoaWxkQnlOYW1lKFwicmlzZWZhbGxcIikuZ2V0Q2hpbGRCeU5hbWUoXCJjb2xvclwiKS5nZXRDb21wb25lbnQoY2MuTGFiZWwpLnN0cmluZykge1xyXG4gICAgICAgICAgICAgICAgaWYgKGRvd24pIHtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLnJpc2VGYWxsQmxjb2tbaV0uZ2V0Q2hpbGRCeU5hbWUoXCJyaXNlZmFsbFwiKS5hY3RpdmUgPSBmYWxzZTtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLnJpc2VGYWxsQmxjb2tbaV0uZ2V0Q2hpbGRCeU5hbWUoJ3Jpc2VmYWxsJykucmVtb3ZlQ29tcG9uZW50KGNjLkJveENvbGxpZGVyKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMucmlzZUZhbGxCbGNva1tpXS5nZXRDaGlsZEJ5TmFtZShcInJpc2VmYWxsXCIpLmFjdGl2ZSA9IHRydWU7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5yaXNlRmFsbEJsY29rW2ldLmdldENoaWxkQnlOYW1lKCdyaXNlZmFsbCcpLmFkZENvbXBvbmVudChjYy5Cb3hDb2xsaWRlcik7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5yaXNlRmFsbEJsY29rW2ldLmdldENoaWxkQnlOYW1lKCdyaXNlZmFsbCcpLmdldENvbXBvbmVudChjYy5Cb3hDb2xsaWRlcikuc2l6ZSA9IGNjLnNpemUoMTEwLCAxMTApO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcblxyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcblxyXG5cclxuICAgIC8v5p+l6K+i5Y+g5Yqg5b+raWRcclxuICAgIGZvdW5kRG93bkJsb2NrKGlkKSB7XHJcbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0aGlzLmJsb2Nrcy5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgICAgICBpZiAodGhpcy5ibG9ja3NbaV0uZ2V0Q29tcG9uZW50KFwiQmxvY2tcIikuYmxvY2tJZCA9PSBpZCkge1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuYmxvY2tzW2ldO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiBudWxsO1xyXG4gICAgfVxyXG5cclxuICAgIC8v5Yig6Zmk5Z2XXHJcbiAgICByZW1vdmVCbG9jayhpZCkge1xyXG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdGhpcy5ibG9ja3MubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICAgICAgaWYgKHRoaXMuYmxvY2tzW2ldLmdldENvbXBvbmVudChcIkJsb2NrXCIpLmJsb2NrSWQgPT0gaWQpIHtcclxuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmJsb2Nrc1tpXTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gbnVsbDtcclxuICAgIH1cclxuXHJcbiAgICBnZXRNaW5BbmRNYXgoYmxvY2spIHtcclxuICAgICAgICBsZXQgd2lkdGggPSBNYXRoLmZsb29yKGJsb2NrLndpZHRoIC8gMTIwKTtcclxuICAgICAgICBsZXQgaGVpZ2h0ID0gTWF0aC5mbG9vcihibG9jay5oZWlnaHQgLyAxMjApO1xyXG5cclxuICAgICAgICBsZXQgbWluWCA9IHdpZHRoO1xyXG4gICAgICAgIGxldCBtYXhYID0gdGhpcy5tYXBXaWR0aCAtIDI7XHJcbiAgICAgICAgbGV0IG1pblkgPSAxO1xyXG4gICAgICAgIGxldCBtYXhZID0gdGhpcy5tYXBIZWlnaHQgLSAyIC0gaGVpZ2h0ICsgMTtcclxuXHJcbiAgICAgICAgaWYgKGJsb2NrLm5hbWUgPT0gXCJibG9jazEwXCIpIHtcclxuICAgICAgICAgICAgbWluWCA9IHdpZHRoIC0gMTtcclxuICAgICAgICAgICAgaWYgKHRoaXMubWFwV2lkdGggPiAzKSBtYXhYID0gbWF4WCAtIDE7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2UgaWYgKGJsb2NrLm5hbWUgPT0gXCJibG9jazExXCIpIHtcclxuICAgICAgICAgICAgbWluWCA9IHdpZHRoIC0gMjtcclxuICAgICAgICAgICAgaWYgKHRoaXMubWFwV2lkdGggPiAzKSBtYXhYID0gbWF4WCAtIDI7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBlbHNlIGlmIChibG9jay5uYW1lID09IFwiYmxvY2sxNFwiKSB7XHJcbiAgICAgICAgICAgIG1pblggPSB3aWR0aCAtIDE7XHJcbiAgICAgICAgICAgIG1heFggPSBtYXhYIC0gMTtcclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSBpZiAoYmxvY2submFtZSA9PSBcImJsb2NrMTZcIikge1xyXG4gICAgICAgICAgICBtaW5YID0gd2lkdGggLSAxO1xyXG4gICAgICAgICAgICBtYXhYID0gbWF4WCAtIDE7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2UgaWYgKGJsb2NrLm5hbWUgPT0gXCJibG9jazE4XCIpIHtcclxuICAgICAgICAgICAgbWluWCA9IHdpZHRoIC0gMTtcclxuICAgICAgICAgICAgbWF4WCA9IG1heFggLSAxO1xyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIGlmIChibG9jay5uYW1lID09IFwiYmxvY2syMVwiKSB7XHJcbiAgICAgICAgICAgIG1pblggPSB3aWR0aCAtIDE7XHJcbiAgICAgICAgICAgIG1heFggPSBtYXhYIC0gMTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHJldHVybiB7IG1pblg6IG1pblgsIG1heFg6IG1heFgsIG1pblk6IG1pblksIG1heFk6IG1heFkgfTtcclxuICAgIH1cclxuXHJcbiAgICAvL+ajgOa1i+iQveeCueaYr+WQpuWPr+S7pea2iOmZpFxyXG4gICAgY2hlY2tQYXNzKG5vZGUsIGJsb2Nrcykge1xyXG4gICAgICAgIGxldCBtaW5BbmRNYXggPSB0aGlzLmdldE1pbkFuZE1heChub2RlKTtcclxuICAgICAgICBsZXQgbWluWCA9IG1pbkFuZE1heC5taW5YO1xyXG4gICAgICAgIGxldCBtYXhYID0gbWluQW5kTWF4Lm1heFg7XHJcbiAgICAgICAgbGV0IG1pblkgPSBtaW5BbmRNYXgubWluWTtcclxuICAgICAgICBsZXQgbWF4WSA9IG1pbkFuZE1heC5tYXhZO1xyXG5cclxuICAgICAgICBsZXQgbm9kZVBvcyA9IGNjLnYyKG5vZGUuZ2V0Q29tcG9uZW50KFwiQmxvY2tcIikucG9zWCwgbm9kZS5nZXRDb21wb25lbnQoXCJCbG9ja1wiKS5wb3NZKTtcclxuXHJcbiAgICAgICAgLy8g6I635Y+W5Zyw5Zu+6L6555WM5L+h5oGvXHJcblxyXG4gICAgICAgIGxldCBhbGxCbG9ja3MgPSBbXTtcclxuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGJsb2Nrcy5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgICAgICBhbGxCbG9ja3MucHVzaChjYy52Mihub2RlUG9zLnggKyBibG9ja3NbaV0ueCwgbm9kZVBvcy55ICsgYmxvY2tzW2ldLnkpKTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIC8vIGNvbnN0IGRhdGUxID0gbmV3IERhdGUoKS5nZXRUaW1lKCk7XHJcbiAgICAgICAgLy8gY29uc29sZS5sb2coXCLlsIblsI/lnZfmlL7lhaXmlbDnu4TnmoTml7bpl7RcIixkYXRlMSk7XHJcblxyXG4gICAgICAgIGxldCBqZyA9IC0xO1xyXG4gICAgICAgIGxldCBweiA9IDA7XHJcbiAgICAgICAgLy8g6I635Y+W5omA5pyJ5aKZ5aOB6IqC54K5XHJcbiAgICAgICAgLy8gbGV0IHdhbGwgPSB0aGlzLm5vZGU7XHJcbiAgICAgICAgbGV0IGRpcmVjdGlvbiA9IHRoaXMuY2hlY2tEaXJhY3Rpb24oYWxsQmxvY2tzLCBtYXhYLCBtYXhZKTtcclxuXHJcbiAgICAgICAgLy8g5Yik5pat5pa55Z2X5piv5ZCm5Zyo5Zyw5Zu+6L6557yYXHJcbiAgICAgICAgaWYgKG5vZGVQb3MueCA8PSBtaW5YIHx8IGRpcmVjdGlvblswXSA9PSB0cnVlKSB7XHJcbiAgICAgICAgICAgIC8vIGNvbnN0IGRhdGUyID0gbmV3IERhdGUoKS5nZXRUaW1lKCk7XHJcbiAgICAgICAgICAgIC8vIGNvbnNvbGUubG9nKFwi56Kw5Yiw5bem6L6557yYXCIsZGF0ZTIpO1xyXG4gICAgICAgICAgICBweiArPSAxO1xyXG4gICAgICAgICAgICBsZXQgbGVmdFdhbGxzID0gW107XHJcbiAgICAgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdGhpcy5sZWZ0RG9vcnMubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICAgICAgICAgIGxldCB3YWxsTGVmdCA9IHRoaXMubGVmdERvb3JzW2ldLmdldENoaWxkQnlOYW1lKFwid2FsbFwiKTtcclxuICAgICAgICAgICAgICAgIGxldCB3YWxsUG9zID0gY2MudjIod2FsbExlZnQuZ2V0Q29tcG9uZW50KFwiV2FsbFwiKS5wb3NYLCB3YWxsTGVmdC5nZXRDb21wb25lbnQoXCJXYWxsXCIpLnBvc1kpO1xyXG4gICAgICAgICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBhbGxCbG9ja3MubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICAgICAgICAgICAgICBpZiAoYWxsQmxvY2tzW2ldLnkgPT0gd2FsbFBvcy55ICYmIGFsbEJsb2Nrc1tpXS54ID4gd2FsbFBvcy54KSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIGNvbnNvbGUubG9nKFwiaWQ6XCIsd2FsbC5nZXRDaGlsZEJ5TmFtZShcIm51bVwiKS5nZXRDb21wb25lbnQoY2MuTGFiZWwpLnN0cmluZyk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGxlZnRXYWxscy5wdXNoKHdhbGxMZWZ0KTtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgLy8gY29uc29sZS5sb2coXCLlvpfliLDlt6bovrnlopnlo4HmlbDnu4RcIixkYXRlNik7XHJcbiAgICAgICAgICAgIGlmIChsZWZ0V2FsbHMubGVuZ3RoICE9IDApIHtcclxuICAgICAgICAgICAgICAgIGxldCByZXN1bHQgPSB0aGlzLmRldGVjdGluZ0Jsb2NrKFwibGVmdFwiLCBub2RlLmdldENvbXBvbmVudChcIkJsb2NrXCIpLnBvc1gsIG5vZGUuZ2V0Q29tcG9uZW50KFwiQmxvY2tcIikucG9zWSwgYWxsQmxvY2tzKTtcclxuICAgICAgICAgICAgICAgIGlmIChyZXN1bHQgPT0gdHJ1ZSkgcmVzdWx0ID0gdGhpcy5wYXNzV2FsbChyZXN1bHQsIGxlZnRXYWxscywgbm9kZSk7XHJcbiAgICAgICAgICAgICAgICAvLyBjb25zb2xlLmxvZyhcIueisOWIsOW3pui+uee8mOe7k+aenDpcIixqZyk7XHJcbiAgICAgICAgICAgICAgICBpZiAocmVzdWx0KSB7XHJcblxyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuYmxvY2tOdW0gLT0gMTtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLnNwZWNpYWxfVHJlYXRtZW50KG5vZGUpO1xyXG4gICAgICAgICAgICAgICAgICAgIGpnID0gMjtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLmNyZWF0ZVBhcnRpY2xlKG5vZGUsIGpnKTtcclxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gamc7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKG5vZGVQb3MueCA+PSBtYXhYIHx8IGRpcmVjdGlvblsxXSA9PSB0cnVlKSB7XHJcbiAgICAgICAgICAgIC8vIGNvbnN0IGRhdGUzID0gbmV3IERhdGUoKS5nZXRUaW1lKCk7XHJcbiAgICAgICAgICAgIC8vIGNvbnNvbGUubG9nKFwi56Kw5Yiw5Y+z6L6557yYXCIsZGF0ZTMpO1xyXG4gICAgICAgICAgICBweiArPSAxO1xyXG4gICAgICAgICAgICBsZXQgcmlnaHRXYWxscyA9IFtdO1xyXG4gICAgICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRoaXMucmlnaHREb29ycy5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgICAgICAgICAgbGV0IHdhbGxSaWdodCA9IHRoaXMucmlnaHREb29yc1tpXS5nZXRDaGlsZEJ5TmFtZShcIndhbGxcIik7XHJcbiAgICAgICAgICAgICAgICBsZXQgd2FsbFBvcyA9IGNjLnYyKHdhbGxSaWdodC5nZXRDb21wb25lbnQoXCJXYWxsXCIpLnBvc1gsIHdhbGxSaWdodC5nZXRDb21wb25lbnQoXCJXYWxsXCIpLnBvc1kpO1xyXG4gICAgICAgICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBhbGxCbG9ja3MubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICAgICAgICAgICAgICBpZiAoYWxsQmxvY2tzW2ldLnkgPT0gd2FsbFBvcy55ICYmIGFsbEJsb2Nrc1tpXS54IDwgd2FsbFBvcy54KSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIGNvbnNvbGUubG9nKFwiaWQ6XCIsd2FsbC5nZXRDaGlsZEJ5TmFtZShcIm51bVwiKS5nZXRDb21wb25lbnQoY2MuTGFiZWwpLnN0cmluZyk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHJpZ2h0V2FsbHMucHVzaCh3YWxsUmlnaHQpO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgaWYgKHJpZ2h0V2FsbHMubGVuZ3RoICE9IDApIHtcclxuICAgICAgICAgICAgICAgIGxldCByZXN1bHQgPSB0aGlzLmRldGVjdGluZ0Jsb2NrKFwicmlnaHRcIiwgbm9kZS5nZXRDb21wb25lbnQoXCJCbG9ja1wiKS5wb3NYLCBub2RlLmdldENvbXBvbmVudChcIkJsb2NrXCIpLnBvc1ksIGFsbEJsb2Nrcyk7XHJcblxyXG4gICAgICAgICAgICAgICAgaWYgKHJlc3VsdCA9PSB0cnVlKSByZXN1bHQgPSB0aGlzLnBhc3NXYWxsKHJlc3VsdCwgcmlnaHRXYWxscywgbm9kZSk7XHJcbiAgICAgICAgICAgICAgICAvLyBjb25zb2xlLmxvZyhcIueisOWIsOWPs+i+uee8mOe7k+aenDpcIixqZyk7XHJcbiAgICAgICAgICAgICAgICBpZiAocmVzdWx0KSB7XHJcblxyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuYmxvY2tOdW0gLT0gMTtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLnNwZWNpYWxfVHJlYXRtZW50KG5vZGUpO1xyXG4gICAgICAgICAgICAgICAgICAgIGpnID0gMztcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLmNyZWF0ZVBhcnRpY2xlKG5vZGUsIGpnKTtcclxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gamc7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuXHJcblxyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAobm9kZVBvcy55IDw9IG1pblkgfHwgZGlyZWN0aW9uWzJdID09IHRydWUpIHtcclxuICAgICAgICAgICAgcHogKz0gMTtcclxuICAgICAgICAgICAgLy8gY29uc3QgZGF0ZTQgPSBuZXcgRGF0ZSgpLmdldFRpbWUoKTtcclxuICAgICAgICAgICAgLy8gY29uc29sZS5sb2coXCLnorDliLDkuIvovrnnvJhcIixkYXRlNCk7XHJcbiAgICAgICAgICAgIGxldCBkb3duV2FsbHMgPSBbXTtcclxuICAgICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0aGlzLnRvcERvb3JzLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgICAgICAgICBsZXQgd2FsbEJvdHRvbSA9IHRoaXMudG9wRG9vcnNbaV0uZ2V0Q2hpbGRCeU5hbWUoXCJ3YWxsXCIpO1xyXG4gICAgICAgICAgICAgICAgbGV0IHdhbGxQb3MgPSBjYy52Mih3YWxsQm90dG9tLmdldENvbXBvbmVudChcIldhbGxcIikucG9zWCwgd2FsbEJvdHRvbS5nZXRDb21wb25lbnQoXCJXYWxsXCIpLnBvc1kpO1xyXG4gICAgICAgICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBhbGxCbG9ja3MubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICAgICAgICAgICAgICBsZXQgbHVvY2hhID0gTWF0aC5hYnMoYWxsQmxvY2tzW2ldLnkgLSB3YWxsUG9zLnkpXHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKGFsbEJsb2Nrc1tpXS54ID09IHdhbGxQb3MueCAmJiBhbGxCbG9ja3NbaV0ueSA+IHdhbGxQb3MueSAmJiBsdW9jaGEgPD0gbm9kZS5nZXRDb21wb25lbnQoXCJCbG9ja1wiKS5zaHUpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgLy8gY29uc29sZS5sb2coXCJpZDpcIix3YWxsLmdldENoaWxkQnlOYW1lKFwibnVtXCIpLmdldENvbXBvbmVudChjYy5MYWJlbCkuc3RyaW5nKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgZG93bldhbGxzLnB1c2god2FsbEJvdHRvbSk7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICBpZiAoZG93bldhbGxzLmxlbmd0aCAhPSAwKSB7XHJcbiAgICAgICAgICAgICAgICBsZXQgcmVzdWx0ID0gdGhpcy5kZXRlY3RpbmdCbG9jayhcImRvd25cIiwgbm9kZS5nZXRDb21wb25lbnQoXCJCbG9ja1wiKS5wb3NYLCBub2RlLmdldENvbXBvbmVudChcIkJsb2NrXCIpLnBvc1ksIGFsbEJsb2Nrcyk7XHJcbiAgICAgICAgICAgICAgICBpZiAocmVzdWx0ID09IHRydWUpIHJlc3VsdCA9IHRoaXMucGFzc1dhbGwocmVzdWx0LCBkb3duV2FsbHMsIG5vZGUpO1xyXG4gICAgICAgICAgICAgICAgLy8gY29uc29sZS5sb2coXCLnorDliLDkuIvovrnnvJjnu5Pmnpw6XCIsamcpO1xyXG4gICAgICAgICAgICAgICAgaWYgKHJlc3VsdCkge1xyXG5cclxuICAgICAgICAgICAgICAgICAgICB0aGlzLmJsb2NrTnVtIC09IDE7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5zcGVjaWFsX1RyZWF0bWVudChub2RlKTtcclxuICAgICAgICAgICAgICAgICAgICBqZyA9IDE7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5jcmVhdGVQYXJ0aWNsZShub2RlLCBqZyk7XHJcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGpnO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcblxyXG5cclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKG5vZGVQb3MueSA+PSBtYXhZIHx8IGRpcmVjdGlvblszXSA9PSB0cnVlKSB7XHJcbiAgICAgICAgICAgIHB6ICs9IDE7XHJcbiAgICAgICAgICAgIC8vIGNvbnN0IGRhdGU1ID0gbmV3IERhdGUoKS5nZXRUaW1lKCk7XHJcbiAgICAgICAgICAgIC8vIGNvbnNvbGUubG9nKFwi56Kw5Yiw5LiK6L6557yYXCIsZGF0ZTUpO1xyXG4gICAgICAgICAgICBsZXQgdXBXYWxscyA9IFtdO1xyXG4gICAgICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRoaXMuYm90dG9tRG9vcnMubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICAgICAgICAgIGxldCB3YWxsVG9wID0gdGhpcy5ib3R0b21Eb29yc1tpXS5nZXRDaGlsZEJ5TmFtZShcIndhbGxcIik7XHJcbiAgICAgICAgICAgICAgICBsZXQgd2FsbFBvcyA9IGNjLnYyKHdhbGxUb3AuZ2V0Q29tcG9uZW50KFwiV2FsbFwiKS5wb3NYLCB3YWxsVG9wLmdldENvbXBvbmVudChcIldhbGxcIikucG9zWSk7XHJcbiAgICAgICAgICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGFsbEJsb2Nrcy5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgICAgICAgICAgICAgIGxldCBsdW9jaGEgPSBNYXRoLmFicyhhbGxCbG9ja3NbaV0ueSAtIHdhbGxQb3MueSlcclxuICAgICAgICAgICAgICAgICAgICBpZiAoYWxsQmxvY2tzW2ldLnggPT0gd2FsbFBvcy54ICYmIGFsbEJsb2Nrc1tpXS55IDwgd2FsbFBvcy55ICYmIGx1b2NoYSA8PSBub2RlLmdldENvbXBvbmVudChcIkJsb2NrXCIpLnNodSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB1cFdhbGxzLnB1c2god2FsbFRvcCk7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICBpZiAodXBXYWxscy5sZW5ndGggIT0gMCkge1xyXG4gICAgICAgICAgICAgICAgbGV0IHJlc3VsdCA9IHRoaXMuZGV0ZWN0aW5nQmxvY2soXCJ1cFwiLCBub2RlLmdldENvbXBvbmVudChcIkJsb2NrXCIpLnBvc1gsIG5vZGUuZ2V0Q29tcG9uZW50KFwiQmxvY2tcIikucG9zWSwgYWxsQmxvY2tzKTtcclxuICAgICAgICAgICAgICAgIGlmIChyZXN1bHQgPT0gdHJ1ZSkgcmVzdWx0ID0gdGhpcy5wYXNzV2FsbChyZXN1bHQsIHVwV2FsbHMsIG5vZGUpO1xyXG4gICAgICAgICAgICAgICAgLy8gY29uc29sZS5sb2coXCLnorDliLDkuIrovrnnvJjnu5Pmnpw6XCIscmVzdWx0KTtcclxuICAgICAgICAgICAgICAgIGlmIChyZXN1bHQpIHtcclxuXHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5ibG9ja051bSAtPSAxO1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuc3BlY2lhbF9UcmVhdG1lbnQobm9kZSk7XHJcbiAgICAgICAgICAgICAgICAgICAgamcgPSAwO1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuY3JlYXRlUGFydGljbGUobm9kZSwgamcpO1xyXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBqZztcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKHB6ID09IDApIGpnID0gLTE7XHJcbiAgICAgICAgLy8gY29uc3QgZGF0ZTEwID0gbmV3IERhdGUoKS5nZXRUaW1lKCk7XHJcbiAgICAgICAgLy8gY29uc29sZS5sb2coXCLmiYDmnInmo4DmtYvnu5PmnZ/ogJfml7ZcIixkYXRlMTAsamcpO1xyXG4gICAgICAgIHJldHVybiBqZztcclxuICAgIH1cclxuXHJcbiAgICBjaGFuZ2VTdGF0ZSgpIHtcclxuICAgICAgICBpZiAodGhpcy5vcGVuV2FsbC5sZW5ndGggIT0gMCkge1xyXG4gICAgICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRoaXMub3BlbldhbGwubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICAgICAgICAgIHRoaXMub3BlbldhbGxbaV0uZ2V0Q2hpbGRCeU5hbWUoXCJ3YWxsXCIpLmdldENvbXBvbmVudChcIldhbGxcIikuY2hhbmdlTG9jaygpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBpZiAodGhpcy5mcmVlemVXYWxsLmxlbmd0aCAhPSAwKSB7XHJcbiAgICAgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdGhpcy5mcmVlemVXYWxsLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmZyZWV6ZVdhbGxbaV0uZ2V0Q2hpbGRCeU5hbWUoXCJ3YWxsXCIpLmdldENvbXBvbmVudChcIldhbGxcIikuY2hhbmdlRnJlZXplKCk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgLy/mo4DmtYvmmK/lkKblj6/ku6XpgJrov4fpl6hcclxuICAgIHBhc3NXYWxsKGpnLCB3YWxsQXJyYXksIG5vZGUpIHtcclxuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHdhbGxBcnJheS5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgICAgICBpZiAod2FsbEFycmF5W2ldLmdldENvbXBvbmVudChcIldhbGxcIikuc3BlY2lhbCA9PSAyKSB7XHJcbiAgICAgICAgICAgICAgICBjb25zb2xlLmxvZyhcIuWwneivlemAmui/h+W8gOWFs+mXqDpcIiwgd2FsbEFycmF5W2ldLmdldENvbXBvbmVudChcIldhbGxcIikub3Blbik7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgaWYgKHdhbGxBcnJheVtpXS5nZXRDb21wb25lbnQoXCJXYWxsXCIpLnNwZWNpYWwgPT0gMiAmJiB3YWxsQXJyYXlbaV0uZ2V0Q29tcG9uZW50KFwiV2FsbFwiKS5vcGVuID09IGZhbHNlKSB7XHJcbiAgICAgICAgICAgICAgICBqZyA9IGZhbHNlO1xyXG4gICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgLy9jb25zb2xlLmxvZyh3YWxsQXJyYXlbaV0uZ2V0Q2hpbGRCeU5hbWUoXCJ3YWxsXCIpLmdldENvbXBvbmVudChcIldhbGxcIikuY29sb3Isbm9kZS5nZXRDb21wb25lbnQoXCJCbG9ja1wiKS5jb2xvcilcclxuICAgICAgICAgICAgaWYgKHdhbGxBcnJheVtpXS5nZXRDb21wb25lbnQoXCJXYWxsXCIpLmNvbG9yICE9IG5vZGUuZ2V0Q29tcG9uZW50KFwiQmxvY2tcIikuY29sb3IpIHtcclxuXHJcbiAgICAgICAgICAgICAgICBqZyA9IGZhbHNlO1xyXG4gICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgaWYgKG5vZGUuZ2V0Q29tcG9uZW50KFwiQmxvY2tcIikudHlwZSA9PSA1KSB7XHJcbiAgICAgICAgICAgICAgICBpZiAod2FsbEFycmF5W2ldLmdldENvbXBvbmVudChcIldhbGxcIikuc3BlY2lhbCAhPSAxKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgamcgPSBmYWxzZTtcclxuICAgICAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAoamcgPT0gdHJ1ZSAmJiBub2RlLmdldENvbXBvbmVudChcIkJsb2NrXCIpLnR5cGUgPT0gNSkge1xyXG4gICAgICAgICAgICBmb3IgKGxldCBqID0gMDsgaiA8IHdhbGxBcnJheS5sZW5ndGg7IGorKykge1xyXG4gICAgICAgICAgICAgICAgaWYgKHdhbGxBcnJheVtqXS5nZXRDb21wb25lbnQoXCJXYWxsXCIpLnNwZWNpYWwgPT0gMSAmJiB3YWxsQXJyYXlbal0uZ2V0Q29tcG9uZW50KFwiV2FsbFwiKS53YWxsX0luZm8ubGVuZ3RoICE9IDApIHtcclxuICAgICAgICAgICAgICAgICAgICB3YWxsQXJyYXlbal0uZ2V0Q29tcG9uZW50KFwiV2FsbFwiKS5wbGF5U3RhckRvb3IoKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICAvLyBjb25zdCBkYXRlOCA9IG5ldyBEYXRlKCkuZ2V0VGltZSgpO1xyXG4gICAgICAgIC8vIGNvbnNvbGUubG9nKFwi5qOA5rWL6aKc6Imy5piv5ZCm6IO95aSf6YCa6L+H6ZeoXCIsZGF0ZTgpO1xyXG4gICAgICAgIHJldHVybiBqZztcclxuICAgIH1cclxuXHJcbiAgICAvL+ajgOa1i+aWueWdl+WSjOmXqOS4remXtOacieayoeacieWkueadguWFtuS7luWdl1xyXG4gICAgZGV0ZWN0aW5nQmxvY2soZGlyZWN0aW9uLCBwb3NYLCBwb3NZLCBibG9ja3MpIHtcclxuICAgICAgICBsZXQgamcgPSB0cnVlO1xyXG4gICAgICAgIGxldCBpZCA9IFwiXCI7XHJcbiAgICAgICAgaWYgKGJsb2Nrcy5sZW5ndGggPiAwKSB7XHJcbiAgICAgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgYmxvY2tzLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgICAgICAgICBsZXQgcG9zID0gYmxvY2tzW2ldO1xyXG4gICAgICAgICAgICAgICAgbGV0IHggPSBwb3MueDtcclxuICAgICAgICAgICAgICAgIGxldCB5ID0gcG9zLnk7XHJcbiAgICAgICAgICAgICAgICBpZCA9IHRoaXMubWFwQmxvY2tzV2FsbFt4XVt5XS5nZXRDb21wb25lbnQoXCJNYXBCbG9ja1wiKS5ibG9ja19JZDtcclxuICAgICAgICAgICAgICAgIGpnID0gdGhpcy5jaGVja0FsbERpcmVjdGlvbnMoaWQsIGRpcmVjdGlvbiwgeCwgeSk7XHJcbiAgICAgICAgICAgICAgICBpZiAoIWpnKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgLy8gY29uc29sZS5sb2coXCLmlrnlkJHmo4DmtYvmsqHov4dcIik7XHJcbiAgICAgICAgICAgICAgICAgICAgaSA9IDEwMDAwMDA7XHJcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGpnO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIC8vIGNvbnN0IGRhdGU3ID0gbmV3IERhdGUoKS5nZXRUaW1lKCk7XHJcbiAgICAgICAgLy8gY29uc29sZS5sb2coXCLmlrnlkJHmo4DmtYvpgJrov4dcIixkYXRlNyxqZyk7XHJcbiAgICAgICAgcmV0dXJuIGpnO1xyXG4gICAgfVxyXG5cclxuICAgIC8v5qOA5rWL54mp5L2T5ZCE5pa55ZCR5piv5ZCm5pyJ5Yir55qE54mp5Z2X77yM6Ziy5q2i56Kw5Yiw5aKZ5aOB5LqG5L2G5piv5piv5Ye55Ye45b2i54q277yM5aKZ5LiO5Z2X5LmL6Ze05pyJ6Zi75oyh54mp5Z2XXHJcbiAgICBjaGVja0FsbERpcmVjdGlvbnMoaWQsIGRpcmVjdGlvbiwgeCwgeSkge1xyXG4gICAgICAgIGxldCBqZyA9IHRydWU7XHJcblxyXG4gICAgICAgIGlmIChkaXJlY3Rpb24gPT0gXCJsZWZ0XCIpIHtcclxuICAgICAgICAgICAgaWYgKHRoaXMubWFwQmxvY2tzV2FsbFt4IC0gMV1beV0uZ2V0Q29tcG9uZW50KFwiTWFwQmxvY2tcIikuYmxvY2tfSWQgIT0gXCJcIiAmJiB0aGlzLm1hcEJsb2Nrc1dhbGxbeCAtIDFdW3ldLmdldENvbXBvbmVudChcIk1hcEJsb2NrXCIpLmJsb2NrX0lkICE9IFwiV2FsbFwiXHJcbiAgICAgICAgICAgICAgICAmJiB0aGlzLm1hcEJsb2Nrc1dhbGxbeCAtIDFdW3ldLmdldENvbXBvbmVudChcIk1hcEJsb2NrXCIpLmJsb2NrX0lkICE9IGlkKSB7XHJcbiAgICAgICAgICAgICAgICAvLyBjb25zb2xlLmxvZyhcIuW3puS+p+acieeJqeS9k1wiKVxyXG4gICAgICAgICAgICAgICAgamcgPSBmYWxzZTtcclxuICAgICAgICAgICAgICAgIHJldHVybiBqZztcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBpZiAodGhpcy5tYXBCbG9ja3NXYWxsW3ggLSAxXVt5XS5vcGFjaXR5ID09IDI0OSkge1xyXG4gICAgICAgICAgICAgICAgamcgPSBmYWxzZTtcclxuICAgICAgICAgICAgICAgIHJldHVybiBqZztcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBpZiAoKHggLSAyKSA+PSAwKSB7XHJcbiAgICAgICAgICAgICAgICBpZiAodGhpcy5tYXBCbG9ja3NXYWxsW3ggLSAyXVt5XS5nZXRDb21wb25lbnQoXCJNYXBCbG9ja1wiKS5ibG9ja19JZCAhPSBcIlwiICYmIHRoaXMubWFwQmxvY2tzV2FsbFt4IC0gMl1beV0uZ2V0Q29tcG9uZW50KFwiTWFwQmxvY2tcIikuYmxvY2tfSWQgIT0gXCJXYWxsXCJcclxuICAgICAgICAgICAgICAgICAgICAmJiB0aGlzLm1hcEJsb2Nrc1dhbGxbeCAtIDJdW3ldLmdldENvbXBvbmVudChcIk1hcEJsb2NrXCIpLmJsb2NrX0lkICE9IGlkKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgLy8gY29uc29sZS5sb2coXCLlt6bkvqfmnInniankvZNcIilcclxuICAgICAgICAgICAgICAgICAgICBqZyA9IGZhbHNlO1xyXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBqZztcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIGlmICh0aGlzLm1hcEJsb2Nrc1dhbGxbeCAtIDJdW3ldLm9wYWNpdHkgPT0gMjQ5KSB7XHJcbiAgICAgICAgICAgICAgICAgICAgamcgPSBmYWxzZTtcclxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gamc7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSBpZiAoZGlyZWN0aW9uID09IFwicmlnaHRcIikge1xyXG4gICAgICAgICAgICBpZiAodGhpcy5tYXBCbG9ja3NXYWxsW3ggKyAxXVt5XS5nZXRDb21wb25lbnQoXCJNYXBCbG9ja1wiKS5ibG9ja19JZCAhPSBcIlwiICYmIHRoaXMubWFwQmxvY2tzV2FsbFt4ICsgMV1beV0uZ2V0Q29tcG9uZW50KFwiTWFwQmxvY2tcIikuYmxvY2tfSWQgIT0gXCJXYWxsXCJcclxuICAgICAgICAgICAgICAgICYmIHRoaXMubWFwQmxvY2tzV2FsbFt4ICsgMV1beV0uZ2V0Q29tcG9uZW50KFwiTWFwQmxvY2tcIikuYmxvY2tfSWQgIT0gaWQpIHtcclxuICAgICAgICAgICAgICAgIC8vIGNvbnNvbGUubG9nKFwi5Y+z5L6n5pyJ54mp5L2TXCIpXHJcbiAgICAgICAgICAgICAgICBqZyA9IGZhbHNlO1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIGpnO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGlmICh0aGlzLm1hcEJsb2Nrc1dhbGxbeCArIDFdW3ldLm9wYWNpdHkgPT0gMjQ5KSB7XHJcbiAgICAgICAgICAgICAgICBqZyA9IGZhbHNlO1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIGpnO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGlmICgoeCArIDIpIDw9IHRoaXMubWFwQmxvY2tzV2FsbC5sZW5ndGggLSAxKSB7XHJcbiAgICAgICAgICAgICAgICBpZiAodGhpcy5tYXBCbG9ja3NXYWxsW3ggKyAyXVt5XS5nZXRDb21wb25lbnQoXCJNYXBCbG9ja1wiKS5ibG9ja19JZCAhPSBcIlwiICYmIHRoaXMubWFwQmxvY2tzV2FsbFt4ICsgMl1beV0uZ2V0Q29tcG9uZW50KFwiTWFwQmxvY2tcIikuYmxvY2tfSWQgIT0gXCJXYWxsXCJcclxuICAgICAgICAgICAgICAgICAgICAmJiB0aGlzLm1hcEJsb2Nrc1dhbGxbeCArIDJdW3ldLmdldENvbXBvbmVudChcIk1hcEJsb2NrXCIpLmJsb2NrX0lkICE9IGlkKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgLy8gY29uc29sZS5sb2coXCLlj7PkvqfmnInniankvZNcIilcclxuICAgICAgICAgICAgICAgICAgICBqZyA9IGZhbHNlO1xyXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBqZztcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIGlmICh0aGlzLm1hcEJsb2Nrc1dhbGxbeCArIDJdW3ldLm9wYWNpdHkgPT0gMjQ5KSB7XHJcbiAgICAgICAgICAgICAgICAgICAgamcgPSBmYWxzZTtcclxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gamc7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKGRpcmVjdGlvbiA9PSBcInVwXCIpIHtcclxuICAgICAgICAgICAgaWYgKHRoaXMubWFwQmxvY2tzV2FsbFt4XVt5ICsgMV0uZ2V0Q29tcG9uZW50KFwiTWFwQmxvY2tcIikuYmxvY2tfSWQgIT0gXCJcIiAmJiB0aGlzLm1hcEJsb2Nrc1dhbGxbeF1beSArIDFdLmdldENvbXBvbmVudChcIk1hcEJsb2NrXCIpLmJsb2NrX0lkICE9IFwiV2FsbFwiXHJcbiAgICAgICAgICAgICAgICAmJiB0aGlzLm1hcEJsb2Nrc1dhbGxbeF1beSArIDFdLmdldENvbXBvbmVudChcIk1hcEJsb2NrXCIpLmJsb2NrX0lkICE9IGlkKSB7XHJcbiAgICAgICAgICAgICAgICAvLyBjb25zb2xlLmxvZyhcIuS4iuS+p+acieeJqeS9k1wiKVxyXG4gICAgICAgICAgICAgICAgamcgPSBmYWxzZTtcclxuICAgICAgICAgICAgICAgIHJldHVybiBqZztcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBpZiAodGhpcy5tYXBCbG9ja3NXYWxsW3hdW3kgKyAxXS5vcGFjaXR5ID09IDI0OSkge1xyXG4gICAgICAgICAgICAgICAgamcgPSBmYWxzZTtcclxuICAgICAgICAgICAgICAgIHJldHVybiBqZztcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBpZiAoKHkgKyAyKSA8PSB0aGlzLm1hcEJsb2Nrc1dhbGxbeF0ubGVuZ3RoIC0gMSkge1xyXG4gICAgICAgICAgICAgICAgaWYgKHRoaXMubWFwQmxvY2tzV2FsbFt4XVt5ICsgMl0uZ2V0Q29tcG9uZW50KFwiTWFwQmxvY2tcIikuYmxvY2tfSWQgIT0gXCJcIiAmJiB0aGlzLm1hcEJsb2Nrc1dhbGxbeF1beSArIDJdLmdldENvbXBvbmVudChcIk1hcEJsb2NrXCIpLmJsb2NrX0lkICE9IFwiV2FsbFwiXHJcbiAgICAgICAgICAgICAgICAgICAgJiYgdGhpcy5tYXBCbG9ja3NXYWxsW3hdW3kgKyAyXS5nZXRDb21wb25lbnQoXCJNYXBCbG9ja1wiKS5ibG9ja19JZCAhPSBpZCkge1xyXG4gICAgICAgICAgICAgICAgICAgIC8vIGNvbnNvbGUubG9nKFwi5LiK5L6n5pyJ54mp5L2TXCIpXHJcbiAgICAgICAgICAgICAgICAgICAgamcgPSBmYWxzZTtcclxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gamc7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBpZiAodGhpcy5tYXBCbG9ja3NXYWxsW3hdW3kgKyAyXS5vcGFjaXR5ID09IDI0OSkge1xyXG4gICAgICAgICAgICAgICAgICAgIGpnID0gZmFsc2U7XHJcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGpnO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmIChkaXJlY3Rpb24gPT0gXCJkb3duXCIpIHtcclxuICAgICAgICAgICAgaWYgKHRoaXMubWFwQmxvY2tzV2FsbFt4XVt5IC0gMV0uZ2V0Q29tcG9uZW50KFwiTWFwQmxvY2tcIikuYmxvY2tfSWQgIT0gXCJcIiAmJiB0aGlzLm1hcEJsb2Nrc1dhbGxbeF1beSAtIDFdLmdldENvbXBvbmVudChcIk1hcEJsb2NrXCIpLmJsb2NrX0lkICE9IFwiV2FsbFwiXHJcbiAgICAgICAgICAgICAgICAmJiB0aGlzLm1hcEJsb2Nrc1dhbGxbeF1beSAtIDFdLmdldENvbXBvbmVudChcIk1hcEJsb2NrXCIpLmJsb2NrX0lkICE9IGlkKSB7XHJcbiAgICAgICAgICAgICAgICAvLyBjb25zb2xlLmxvZyhcIuS4i+S+p+acieeJqeS9k1wiKVxyXG4gICAgICAgICAgICAgICAgamcgPSBmYWxzZTtcclxuICAgICAgICAgICAgICAgIHJldHVybiBqZztcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBpZiAodGhpcy5tYXBCbG9ja3NXYWxsW3hdW3kgLSAxXS5vcGFjaXR5ID09IDI0OSkge1xyXG4gICAgICAgICAgICAgICAgamcgPSBmYWxzZTtcclxuICAgICAgICAgICAgICAgIHJldHVybiBqZztcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBpZiAoKHkgLSAyKSA+PSAwKSB7XHJcbiAgICAgICAgICAgICAgICBpZiAodGhpcy5tYXBCbG9ja3NXYWxsW3hdW3kgLSAyXS5nZXRDb21wb25lbnQoXCJNYXBCbG9ja1wiKS5ibG9ja19JZCAhPSBcIlwiICYmIHRoaXMubWFwQmxvY2tzV2FsbFt4XVt5IC0gMl0uZ2V0Q29tcG9uZW50KFwiTWFwQmxvY2tcIikuYmxvY2tfSWQgIT0gXCJXYWxsXCJcclxuICAgICAgICAgICAgICAgICAgICAmJiB0aGlzLm1hcEJsb2Nrc1dhbGxbeF1beSAtIDJdLmdldENvbXBvbmVudChcIk1hcEJsb2NrXCIpLmJsb2NrX0lkICE9IGlkKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgLy8gY29uc29sZS5sb2coXCLkuIvkvqfmnInniankvZNcIilcclxuICAgICAgICAgICAgICAgICAgICBqZyA9IGZhbHNlO1xyXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBqZztcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIGlmICh0aGlzLm1hcEJsb2Nrc1dhbGxbeF1beSAtIDJdLm9wYWNpdHkgPT0gMjQ5KSB7XHJcbiAgICAgICAgICAgICAgICAgICAgamcgPSBmYWxzZTtcclxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gamc7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgLy8gY29uc29sZS5sb2coXCLmo4DmtYvniankvZPlkITmlrnlkJHmmK/lkKbmnInliKvnmoTnianlnZdcIixqZyk7XHJcbiAgICAgICAgcmV0dXJuIGpnO1xyXG4gICAgfVxyXG5cclxuICAgIGNoZWNrRGlyYWN0aW9uKGFsbEJsb2NrcywgbWF4WCwgbWF4WSkge1xyXG4gICAgICAgIGxldCBqZyA9IFtmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZV07XHJcbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBhbGxCbG9ja3MubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICAgICAgaWYgKGFsbEJsb2Nrc1tpXS54ID4gMCAmJiBqZ1swXSA9PSBmYWxzZSkge1xyXG4gICAgICAgICAgICAgICAgaWYgKHRoaXMubWFwQmxvY2tzV2FsbFthbGxCbG9ja3NbaV0ueCAtIDFdW2FsbEJsb2Nrc1tpXS55XS5vcGFjaXR5ID09IDI1MCkge1xyXG4gICAgICAgICAgICAgICAgICAgIGpnWzBdID0gdHJ1ZTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBpZiAoamdbMV0gPT0gZmFsc2UpIHtcclxuICAgICAgICAgICAgICAgIGlmICh0aGlzLm1hcEJsb2Nrc1dhbGxbYWxsQmxvY2tzW2ldLnggKyAxXVthbGxCbG9ja3NbaV0ueV0ub3BhY2l0eSA9PSAyNTApIHtcclxuICAgICAgICAgICAgICAgICAgICBqZ1sxXSA9IHRydWU7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgaWYgKGFsbEJsb2Nrc1tpXS55ID4gMCAmJiBqZ1syXSA9PSBmYWxzZSkge1xyXG4gICAgICAgICAgICAgICAgaWYgKHRoaXMubWFwQmxvY2tzV2FsbFthbGxCbG9ja3NbaV0ueF1bYWxsQmxvY2tzW2ldLnkgLSAxXS5vcGFjaXR5ID09IDI1MCkge1xyXG4gICAgICAgICAgICAgICAgICAgIGpnWzJdID0gdHJ1ZTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBpZiAoamdbM10gPT0gZmFsc2UpIHtcclxuICAgICAgICAgICAgICAgIGlmICh0aGlzLm1hcEJsb2Nrc1dhbGxbYWxsQmxvY2tzW2ldLnhdW2FsbEJsb2Nrc1tpXS55ICsgMV0ub3BhY2l0eSA9PSAyNTApIHtcclxuICAgICAgICAgICAgICAgICAgICBqZ1szXSA9IHRydWU7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIGpnO1xyXG4gICAgfVxyXG5cclxuICAgIGNoZWNrTGVmdChhbGxCbG9ja3MpIHtcclxuICAgICAgICBsZXQgamcgPSBmYWxzZTtcclxuICAgICAgICByZXR1cm4gamc7XHJcbiAgICB9XHJcblxyXG4gICAgY2hlY2tSaWdodChhbGxCbG9ja3MsIG1heCkge1xyXG4gICAgICAgIGxldCBqZyA9IGZhbHNlO1xyXG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgYWxsQmxvY2tzLmxlbmd0aDsgaSsrKSB7XHJcblxyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gamc7XHJcbiAgICB9XHJcblxyXG4gICAgY2hlY2tEb3duKGFsbEJsb2Nrcykge1xyXG4gICAgICAgIGxldCBqZyA9IGZhbHNlO1xyXG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgYWxsQmxvY2tzLmxlbmd0aDsgaSsrKSB7XHJcblxyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gamc7XHJcbiAgICB9XHJcblxyXG4gICAgY2hlY2tVcChhbGxCbG9ja3MsIG1heCkge1xyXG4gICAgICAgIGxldCBqZyA9IGZhbHNlO1xyXG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgYWxsQmxvY2tzLmxlbmd0aDsgaSsrKSB7XHJcblxyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gamc7XHJcbiAgICB9XHJcblxyXG5cclxuICAgIC8v54m55q6K5aSE55CG77yM5pa55Z2X5bim6YGT5YW35oiW6ICF6ZyA6KaB5raI6Zmk5Yaw5Z2XXHJcbiAgICBzcGVjaWFsX1RyZWF0bWVudChub2RlKSB7XHJcbiAgICAgICAgbGV0IGZyZWV6ZUJsb2NrID0gdGhpcy5ub2RlLmNoaWxkcmVuLmZpbHRlcihjaGlsZCA9PiB7XHJcbiAgICAgICAgICAgIGlmIChjaGlsZC5nZXRDb21wb25lbnQoXCJCbG9ja1wiKSkge1xyXG4gICAgICAgICAgICAgICAgaWYgKGNoaWxkLmdldENvbXBvbmVudChcIkJsb2NrXCIpLnR5cGUgPT0gNClcclxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gY2hpbGRcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH0pO1xyXG4gICAgICAgIGlmIChmcmVlemVCbG9jay5sZW5ndGggPiAwKSB7XHJcbiAgICAgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgZnJlZXplQmxvY2subGVuZ3RoOyBpKyspIHtcclxuICAgICAgICAgICAgICAgIGZyZWV6ZUJsb2NrW2ldLmdldENoaWxkQnlOYW1lKFwiZnJlZXplXCIpLmdldENvbXBvbmVudChcIkZyZWV6ZVwiKS5yZWR1Y2UoMSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGlmIChub2RlLmdldENvbXBvbmVudChcIkJsb2NrXCIpLnR5cGUgPT0gMiB8fCBub2RlLmdldENvbXBvbmVudChcIkJsb2NrXCIpLnR5cGUgPT0gNCkge1xyXG4gICAgICAgICAgICBsZXQgbG9ja0Jsb2NrID0gdGhpcy5ub2RlLmNoaWxkcmVuLmZpbHRlcihjaGlsZCA9PiB7XHJcbiAgICAgICAgICAgICAgICBpZiAoY2hpbGQuZ2V0Q29tcG9uZW50KFwiQmxvY2tcIikpIHtcclxuICAgICAgICAgICAgICAgICAgICBpZiAoY2hpbGQuZ2V0Q29tcG9uZW50KFwiQmxvY2tcIikudHlwZSA9PSAzKVxyXG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gY2hpbGRcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgIGlmIChsb2NrQmxvY2subGVuZ3RoID4gMClcclxuICAgICAgICAgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgbG9ja0Jsb2NrLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgbG9ja0Jsb2NrW2ldLmdldENoaWxkQnlOYW1lKFwibG9ja1wiKS5nZXRDb21wb25lbnQoXCJMb2NrXCIpLnJlZHVjZSgpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdGhpcy5ibG9ja3MubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICAgICAgaWYgKHRoaXMuYmxvY2tzW2ldID09IG5vZGUpIHtcclxuICAgICAgICAgICAgICAgIHRoaXMuYmxvY2tzLnNwbGljZShpLCAxKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuXHJcbiAgICB9XHJcblxyXG4gICAgLy/liKTmlq3muLjmiI/miJDlip/kuIvkuIDlhbNcclxuICAgIG5leHRMZXZlbCgpIHtcclxuICAgICAgICB0aGlzLnBhdXNlID0gZmFsc2U7XHJcbiAgICAgICAgdGhpcy5vcGVuSWNlKCk7XHJcblxyXG4gICAgICAgIHRoaXMuYmxvY2tOdW0gPSB0aGlzLmJsb2Nrcy5sZW5ndGg7XHJcblxyXG4gICAgICAgIGlmICh0aGlzLmJsb2NrTnVtID09IDAgJiYgIXRoaXMuZ2FtZVdpbiAmJiAhdGhpcy5nYW1lT3Zlcikge1xyXG4gICAgICAgICAgICAvLyBhbGVydChcIua4uOaIj+aIkOWKn1wiKTtcclxuICAgICAgICAgICAgdGhpcy5nYW1lV2luID0gdHJ1ZTtcclxuXHJcbiAgICAgICAgICAgIHRoaXMuc3RvcFRpbWVDdXREb3duKCk7XHJcbiAgICAgICAgICAgIC8vIGNvbnNvbGUubG9nKFwi5oiQ5Yqf5raI6Zmk5LiA5LiqXCIpO1xyXG4gICAgICAgICAgICBjYy5meC5HYW1lVG9vbC5jaGFuZ2VDb2luKDQwKTtcclxuICAgICAgICAgICAgbGV0IHRpbWVEYXRhID0ge1xyXG4gICAgICAgICAgICAgICAgY291bnRfVGltZTogdGhpcy5jb3VudF9UaW1lLFxyXG4gICAgICAgICAgICAgICAgYWRkX1RpbWU6IHRoaXMuYWRkX1RpbWVcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBjYy5meC5HYW1lVG9vbC5hZGRMZXZlbCh0aW1lRGF0YSk7XHJcblxyXG4gICAgICAgICAgICB0aGlzLmNoZWNrX05ld01vZGUoKTtcclxuICAgICAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLm5vZGUucGFyZW50LnBhcmVudC5nZXRDaGlsZEJ5TmFtZShcIldpblwiKS5hY3RpdmUgPSB0cnVlO1xyXG4gICAgICAgICAgICB9LCA2NjApO1xyXG4gICAgICAgICAgICAvLyBjb25zb2xlLmxvZyhcIua4uOaIj+aIkOWKn1wiKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgIGlmICh0aGlzLmdhbWVPdmVyID09IHRydWUpIHtcclxuICAgICAgICAgICAgICAgIHRoaXMuZmFpbExldmVsKG51bGwpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIGNoZWNrX05ld01vZGUoKSB7XHJcbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBjYy5meC5HYW1lQ29uZmlnLk5FV19MRVZFTC5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgICAgICBpZiAoKGNjLmZ4LkdhbWVDb25maWcuR01fSU5GTy5sZXZlbCArIDEpID09IGNjLmZ4LkdhbWVDb25maWcuTkVXX0xFVkVMW2ldLmxldmVsKSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLm5ld19tb2RlID0gMztcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICB3aW5MZXZlbCgpIHtcclxuICAgICAgICBjYy5meC5BdWRpb01hbmFnZXIuX2luc3RhbmNlLnBsYXlFZmZlY3QoXCJhbm5pdV9CaWdcIiwgbnVsbCk7XHJcbiAgICAgICAgaWYgKGNjLmZ4LkdhbWVDb25maWcuR01fSU5GTy5sZXZlbCA+IDE1Nikge1xyXG4gICAgICAgICAgICBjYy5meC5HYW1lQ29uZmlnLkdNX0lORk8ubGV2ZWwgPSAxNTY7XHJcbiAgICAgICAgICAgIE1hcENvbnJvbGVyLl9pbnN0YW5jZSA9IG51bGw7XHJcblxyXG4gICAgICAgICAgICBpZiAodGhpcy5uZXdfbW9kZSA9PSAzKSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLm5vZGUucGFyZW50LnBhcmVudC5nZXRDaGlsZEJ5TmFtZShcIldpblwiKS5hY3RpdmUgPSBmYWxzZTtcclxuICAgICAgICAgICAgICAgIHRoaXMub3Blbk5ld01vZGUoMik7XHJcbiAgICAgICAgICAgICAgICBjYy5meC5HYW1lQ29uZmlnLkxFVkVMX0lORk9faW5pdChmYWxzZSwgMCk7XHJcbiAgICAgICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgLy8gY2MuZnguR2FtZUNvbmZpZy5MRVZFTF9JTkZPX2luaXQodHJ1ZSk7XHJcbiAgICAgICAgICAgIGNjLmZ4LkF1ZGlvTWFuYWdlci5faW5zdGFuY2UucGxheUVmZmVjdChcInpodWFuMVwiLCBudWxsKTtcclxuICAgICAgICAgICAgdGhpcy5ub2RlLnBhcmVudC5wYXJlbnQucGFyZW50LmdldENoaWxkQnlOYW1lKFwiemh1YW5jaGFuZ1wiKS5hY3RpdmUgPSB0cnVlO1xyXG4gICAgICAgICAgICB0aGlzLm5vZGUucGFyZW50LnBhcmVudC5wYXJlbnQuZ2V0Q2hpbGRCeU5hbWUoXCJ6aHVhbmNoYW5nXCIpLmdldENvbXBvbmVudChzcC5Ta2VsZXRvbikuc2V0QW5pbWF0aW9uKDEsIFwidXBcIiwgZmFsc2UpO1xyXG4gICAgICAgICAgICAvLyB0aGlzLm5vZGUucGFyZW50LnBhcmVudC5wYXJlbnQuZ2V0Q2hpbGRCeU5hbWUoXCJ6aHVhbmNoYW5nXCIpLmdldENvbXBvbmVudChzcC5Ta2VsZXRvbikuc2V0Q29tcGxldGVMaXN0ZW5lcigoZW50cnkpID0+IHtcclxuICAgICAgICAgICAgLy8gICAgIGlmIChlbnRyeS5hbmltYXRpb24ubmFtZSA9PT0gXCJ1cFwiKSB7XHJcbiAgICAgICAgICAgIC8vICAgICAgICAgLy8g5Yqo55S75pKt5pS+57uT5p2f5ZCO5omn6KGM55qE6YC76L6RXHJcbiAgICAgICAgICAgIC8vICAgICAgICAgdGhpcy5ub2RlLnBhcmVudC5wYXJlbnQucGFyZW50LmdldENoaWxkQnlOYW1lKFwiemh1YW5jaGFuZ1wiKS5hY3RpdmUgPSBmYWxzZTtcclxuICAgICAgICAgICAgLy8gICAgIH1cclxuICAgICAgICAgICAgLy8gfSk7XHJcblxyXG4gICAgICAgICAgICBjYy5kaXJlY3Rvci5wcmVsb2FkU2NlbmUoXCJIb21lU2NlbmVcIiwgKGVyciwgYXNzZXQpID0+IHtcclxuICAgICAgICAgICAgICAgIGlmIChlcnIpIHtcclxuICAgICAgICAgICAgICAgICAgICBjb25zb2xlLmVycm9yKCfliqjmgIHliqDovb0gUHJlZmFiIOWksei0pTonLCBlcnIpO1xyXG4gICAgICAgICAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgY2MuZGlyZWN0b3IubG9hZFNjZW5lKFwiSG9tZVNjZW5lXCIpO1xyXG4gICAgICAgICAgICB9LCAxMjAwKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSB7XHJcblxyXG4gICAgICAgICAgICAvLyBjb25zb2xlLmxvZyhcIuS4i+S4gOWFs1wiKTtcclxuICAgICAgICAgICAgTWFwQ29ucm9sZXIuX2luc3RhbmNlID0gbnVsbDtcclxuXHJcbiAgICAgICAgICAgIGlmICh0aGlzLm5ld19tb2RlID09IDMpIHtcclxuICAgICAgICAgICAgICAgIHRoaXMubm9kZS5wYXJlbnQucGFyZW50LmdldENoaWxkQnlOYW1lKFwiV2luXCIpLmFjdGl2ZSA9IGZhbHNlO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5vcGVuTmV3TW9kZSgyKTtcclxuICAgICAgICAgICAgICAgIGNjLmZ4LkdhbWVDb25maWcuTEVWRUxfSU5GT19pbml0KGZhbHNlLCAwKTtcclxuICAgICAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBjYy5meC5BdWRpb01hbmFnZXIuX2luc3RhbmNlLnBsYXlFZmZlY3QoXCJ6aHVhbjFcIiwgbnVsbCk7XHJcbiAgICAgICAgICAgIHRoaXMubm9kZS5wYXJlbnQucGFyZW50LnBhcmVudC5nZXRDaGlsZEJ5TmFtZShcInpodWFuY2hhbmdcIikuYWN0aXZlID0gdHJ1ZTtcclxuICAgICAgICAgICAgdGhpcy5ub2RlLnBhcmVudC5wYXJlbnQucGFyZW50LmdldENoaWxkQnlOYW1lKFwiemh1YW5jaGFuZ1wiKS5nZXRDb21wb25lbnQoc3AuU2tlbGV0b24pLnNldEFuaW1hdGlvbigxLCBcInVwXCIsIGZhbHNlKTtcclxuICAgICAgICAgICAgLy8gdGhpcy5ub2RlLnBhcmVudC5wYXJlbnQucGFyZW50LmdldENoaWxkQnlOYW1lKFwiemh1YW5jaGFuZ1wiKS5nZXRDb21wb25lbnQoc3AuU2tlbGV0b24pLnNldENvbXBsZXRlTGlzdGVuZXIoKGVudHJ5KSA9PiB7XHJcbiAgICAgICAgICAgIC8vICAgICBpZiAoZW50cnkuYW5pbWF0aW9uLm5hbWUgPT09IFwidXBcIikge1xyXG4gICAgICAgICAgICAvLyAgICAgICAgIC8vIOWKqOeUu+aSreaUvue7k+adn+WQjuaJp+ihjOeahOmAu+i+kVxyXG4gICAgICAgICAgICAvLyAgICAgICAgIHRoaXMubm9kZS5wYXJlbnQucGFyZW50LnBhcmVudC5nZXRDaGlsZEJ5TmFtZShcInpodWFuY2hhbmdcIikuYWN0aXZlID0gZmFsc2U7XHJcbiAgICAgICAgICAgIC8vICAgICB9XHJcbiAgICAgICAgICAgIC8vIH0pO1xyXG4gICAgICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgICAgICAgICAgIGNjLmZ4LkdhbWVDb25maWcuTEVWRUxfSU5GT19pbml0KHRydWUsIDApO1xyXG4gICAgICAgICAgICB9LCAxMjAwKTtcclxuXHJcbiAgICAgICAgICAgIC8vIHRoaXMubm9kZS5wYXJlbnQucGFyZW50LnBhcmVudC5kZXN0cm95KCk7XHJcblxyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBhZ2FpbkxldmVsKCkge1xyXG4gICAgICAgIGNjLmZ4LkF1ZGlvTWFuYWdlci5faW5zdGFuY2UucGxheUVmZmVjdChcImFubml1X0JpZ1wiLCBudWxsKTtcclxuICAgICAgICBpZiAoY2MuZnguR2FtZUNvbmZpZy5HTV9JTkZPLmhwIDwgMSkge1xyXG4gICAgICAgICAgICBNaW5pR2FtZVNkay5BUEkuc2hvd1RvYXN0KFwi5L2T5Yqb5YC85LiN6LazXCIpO1xyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmICghdGhpcy5hZ2FpbkNhblRvdWNoKSByZXR1cm47XHJcblxyXG4gICAgICAgIHRoaXMuYWdhaW5DYW5Ub3VjaCA9IGZhbHNlO1xyXG5cclxuICAgICAgICBNYXBDb25yb2xlci5faW5zdGFuY2UgPSBudWxsO1xyXG4gICAgICAgIGNjLmZ4LkF1ZGlvTWFuYWdlci5faW5zdGFuY2UucGxheUVmZmVjdChcInpodWFuMVwiLCBudWxsKTtcclxuICAgICAgICB0aGlzLm5vZGUucGFyZW50LnBhcmVudC5wYXJlbnQuZ2V0Q2hpbGRCeU5hbWUoXCJ6aHVhbmNoYW5nXCIpLmFjdGl2ZSA9IHRydWU7XHJcbiAgICAgICAgdGhpcy5ub2RlLnBhcmVudC5wYXJlbnQucGFyZW50LmdldENoaWxkQnlOYW1lKFwiemh1YW5jaGFuZ1wiKS5nZXRDb21wb25lbnQoc3AuU2tlbGV0b24pLnNldEFuaW1hdGlvbigxLCBcInVwXCIsIGZhbHNlKTtcclxuICAgICAgICAvLyB0aGlzLm5vZGUucGFyZW50LnBhcmVudC5wYXJlbnQuZ2V0Q2hpbGRCeU5hbWUoXCJ6aHVhbmNoYW5nXCIpLmdldENvbXBvbmVudChzcC5Ta2VsZXRvbikuc2V0Q29tcGxldGVMaXN0ZW5lcigoZW50cnkpID0+IHtcclxuICAgICAgICAvLyAgICAgaWYgKGVudHJ5LmFuaW1hdGlvbi5uYW1lID09PSBcInVwXCIpIHtcclxuICAgICAgICAvLyAgICAgICAgIC8vIOWKqOeUu+aSreaUvue7k+adn+WQjuaJp+ihjOeahOmAu+i+kVxyXG4gICAgICAgIC8vICAgICAgICAgdGhpcy5ub2RlLnBhcmVudC5wYXJlbnQucGFyZW50LmdldENoaWxkQnlOYW1lKFwiemh1YW5jaGFuZ1wiKS5hY3RpdmUgPSBmYWxzZTtcclxuICAgICAgICAvLyAgICAgfVxyXG4gICAgICAgIC8vIH0pO1xyXG4gICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICAgICAgICBjYy5meC5HYW1lQ29uZmlnLkxFVkVMX0lORk9faW5pdCh0cnVlLCAwKTtcclxuICAgICAgICB9LCAxMjAwKTtcclxuICAgICAgICAvLyB0aGlzLm5vZGUucGFyZW50LnBhcmVudC5wYXJlbnQuZGVzdHJveSgpO1xyXG4gICAgfVxyXG5cclxuICAgIHJldmlld0xldmVsKCkge1xyXG4gICAgICAgIGNjLmZ4LkF1ZGlvTWFuYWdlci5faW5zdGFuY2UucGxheUVmZmVjdChcImFubml1X0JpZ1wiLCBudWxsKTtcclxuICAgICAgICBsZXQgY29pbiA9IDkwMDtcclxuICAgICAgICBpZiAoY2MuZnguR2FtZUNvbmZpZy5HTV9JTkZPLnJldmlldyA9PSAxKSBjb2luID0gMTkwMDtcclxuICAgICAgICBlbHNlIGlmIChjYy5meC5HYW1lQ29uZmlnLkdNX0lORk8ucmV2aWV3ID09IDIpIGNvaW4gPSAyNTAwO1xyXG4gICAgICAgIC8vIGNvbnNvbGUubG9nKFwi6Ieq6Lqr6YeR5biBOlwiLGNjLmZ4LkdhbWVDb25maWcuR01fSU5GTy5jb2luLFwi5raI6ICX6YeR5biBOlwiLGNvaW4pO1xyXG4gICAgICAgIGlmIChjYy5meC5HYW1lQ29uZmlnLkdNX0lORk8uY29pbiA8IE1hdGguYWJzKGNvaW4pKSB7XHJcbiAgICAgICAgICAgIE1pbmlHYW1lU2RrLkFQSS5zaG93VG9hc3QoXCLph5HluIHkuI3otrPvvIzml6Dms5XliqDml7bpl7RcIik7XHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgIHRoaXMucnVuUmV3aXZlKC1jb2luKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgcnVuUmV3aXZlKGRhdGEpIHtcclxuICAgICAgICBjb25zb2xlLmxvZyhcIuWkjea0u+Wbnuiwg+WHveaVsOWGhVwiLCBkYXRhKTtcclxuICAgICAgICBjYy5meC5HYW1lVG9vbC5jaGFuZ2VDb2luKGRhdGEpO1xyXG4gICAgICAgIE1pbmlHYW1lU2RrLkFQSS5zaG93VG9hc3QoXCLnu6fnu63muLjmiI9cIik7XHJcblxyXG4gICAgICAgIGlmIChjYy5meC5HYW1lQ29uZmlnLkdNX0lORk8ucmV2aWV3IDwgMilcclxuICAgICAgICAgICAgY2MuZnguR2FtZUNvbmZpZy5HTV9JTkZPLnJldmlldyArPSAxO1xyXG5cclxuICAgICAgICB0aGlzLmdhbWVPdmVyID0gZmFsc2U7XHJcbiAgICAgICAgdGhpcy50aW1lTnVtYmVyID0gMjE7XHJcbiAgICAgICAgdGhpcy5hZGRfVGltZSArPSAyMDtcclxuICAgICAgICB0aGlzLnBhdXNlID0gZmFsc2U7XHJcbiAgICAgICAgdGhpcy5ub2RlLnBhcmVudC5wYXJlbnQuZ2V0Q2hpbGRCeU5hbWUoXCJMb3NlXCIpLmFjdGl2ZSA9IGZhbHNlO1xyXG4gICAgICAgIHRoaXMuc3RhcnRUaW1lQ3V0RG93bigpO1xyXG4gICAgfVxyXG5cclxuXHJcblxyXG4gICAgaG9tZUJ0bigpIHtcclxuICAgICAgICAvLyBhbGVydChcIua4uOaIj+Wksei0pVwiKTtcclxuICAgICAgICBjYy5meC5BdWRpb01hbmFnZXIuX2luc3RhbmNlLnBsYXlFZmZlY3QoXCJhbm5pdV9CaWdcIiwgbnVsbCk7XHJcbiAgICAgICAgaWYgKCF0aGlzLmhvbWVDYW5Ub3VjaCkgcmV0dXJuO1xyXG4gICAgICAgIHRoaXMuaG9tZUNhblRvdWNoID0gZmFsc2U7XHJcbiAgICAgICAgdGhpcy5ub2RlLnBhcmVudC5wYXJlbnQuZ2V0Q2hpbGRCeU5hbWUoXCJMb3NlXCIpLmFjdGl2ZSA9IHRydWU7XHJcbiAgICAgICAgdGhpcy5ub2RlLnBhcmVudC5wYXJlbnQuZ2V0Q2hpbGRCeU5hbWUoXCJMb3NlXCIpLmdldENoaWxkQnlOYW1lKFwiVGltZVwiKS5hY3RpdmUgPSBmYWxzZTtcclxuICAgICAgICB0aGlzLm5vZGUucGFyZW50LnBhcmVudC5nZXRDaGlsZEJ5TmFtZShcIkxvc2VcIikuZ2V0Q2hpbGRCeU5hbWUoXCJCb29tXCIpLmFjdGl2ZSA9IGZhbHNlO1xyXG4gICAgICAgIHRoaXMubm9kZS5wYXJlbnQucGFyZW50LmdldENoaWxkQnlOYW1lKFwiTG9zZVwiKS5nZXRDaGlsZEJ5TmFtZShcIkxvY2tcIikuYWN0aXZlID0gZmFsc2U7XHJcbiAgICAgICAgdGhpcy5ub2RlLnBhcmVudC5wYXJlbnQuZ2V0Q2hpbGRCeU5hbWUoXCJMb3NlXCIpLmdldENoaWxkQnlOYW1lKFwiSGVhbHRoXCIpLmFjdGl2ZSA9IHRydWU7XHJcbiAgICAgICAgbGV0IGRhdGEgPSB7XHJcbiAgICAgICAgICAgIHRpbWU6IHRoaXMuY291bnRfVGltZSxcclxuICAgICAgICAgICAgYWRkX1RpbWU6IHRoaXMuYWRkX1RpbWUsXHJcbiAgICAgICAgICAgIHJlc3VsdDogXCJmYWlsXCJcclxuICAgICAgICB9XHJcbiAgICAgICAgY2MuZnguR2FtZVRvb2wuc2h1c2h1X1RyYWNrKFwiZmluaXNoX3N0YWdlXCIsIGRhdGEpO1xyXG4gICAgICAgIGlmICh0aGlzLmdhbWVTdGFydCA9PSB0cnVlKSB7XHJcbiAgICAgICAgICAgIGNjLmZ4LkdhbWVUb29sLnNldFVzZXJIZWFsdGgoLTEsIChkYXRhKSA9PiB7XHJcbiAgICAgICAgICAgIH0pXHJcbiAgICAgICAgfVxyXG4gICAgICAgIC8vIHRoaXMubm9kZS5wYXJlbnQucGFyZW50LnBhcmVudC5kZXN0cm95KCk7XHJcbiAgICB9XHJcblxyXG4gICAgcmV0dXJuSG9tZSgpIHtcclxuICAgICAgICBjYy5meC5BdWRpb01hbmFnZXIuX2luc3RhbmNlLnBsYXlFZmZlY3QoXCJhbm5pdV9CaWdcIiwgbnVsbCk7XHJcbiAgICAgICAgaWYgKE1hcENvbnJvbGVyLl9pbnN0YW5jZSA9IG51bGwpIHtcclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuICAgICAgICAvLyBNaW5pR2FtZVNkay5BUEkuc2hvd1RvYXN0KFwi5L2T5Yqb5YC85YeP5bCRXCIpO1xyXG4gICAgICAgIE1hcENvbnJvbGVyLl9pbnN0YW5jZSA9IG51bGw7XHJcbiAgICAgICAgY2MuZnguR2FtZUNvbmZpZy5MRVZFTF9JTkZPX2luaXQoZmFsc2UsIDApO1xyXG4gICAgICAgIGlmICh0aGlzLm5ld19tb2RlID09IDMpIHtcclxuICAgICAgICAgICAgdGhpcy5ub2RlLnBhcmVudC5wYXJlbnQuZ2V0Q2hpbGRCeU5hbWUoXCJXaW5cIikuYWN0aXZlID0gZmFsc2U7XHJcbiAgICAgICAgICAgIHRoaXMub3Blbk5ld01vZGUoMSk7XHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcbiAgICAgICAgY2MuZnguQXVkaW9NYW5hZ2VyLl9pbnN0YW5jZS5wbGF5RWZmZWN0KFwiemh1YW4xXCIsIG51bGwpO1xyXG4gICAgICAgIHRoaXMubm9kZS5wYXJlbnQucGFyZW50LnBhcmVudC5nZXRDaGlsZEJ5TmFtZShcInpodWFuY2hhbmdcIikuYWN0aXZlID0gdHJ1ZTtcclxuICAgICAgICB0aGlzLm5vZGUucGFyZW50LnBhcmVudC5wYXJlbnQuZ2V0Q2hpbGRCeU5hbWUoXCJ6aHVhbmNoYW5nXCIpLmdldENvbXBvbmVudChzcC5Ta2VsZXRvbikuc2V0QW5pbWF0aW9uKDEsIFwidXBcIiwgZmFsc2UpO1xyXG4gICAgICAgIGNjLmRpcmVjdG9yLnByZWxvYWRTY2VuZShcIkhvbWVTY2VuZVwiLCAoZXJyLCBhc3NldCkgPT4ge1xyXG4gICAgICAgICAgICBpZiAoZXJyKSB7XHJcbiAgICAgICAgICAgICAgICBjb25zb2xlLmVycm9yKCfliqjmgIHliqDovb0gUHJlZmFiIOWksei0pTonLCBlcnIpO1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgICAgICB9XHJcblxyXG4gICAgICAgIH0pO1xyXG5cclxuICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgICAgICAgY2MuZGlyZWN0b3IubG9hZFNjZW5lKFwiSG9tZVNjZW5lXCIpO1xyXG4gICAgICAgIH0sIDEyMDApO1xyXG4gICAgfVxyXG5cclxuICAgIC8v5Yik5pat5ri45oiP5aSx6LSlXHJcbiAgICBmYWlsTGV2ZWwodHlwZSkge1xyXG4gICAgICAgIHRoaXMuc3RvcFRpbWVDdXREb3duKCk7XHJcbiAgICAgICAgaWYgKHRoaXMuZ2FtZU92ZXIgPT0gdHJ1ZSB8fCB0aGlzLmdhbWVXaW4gPT0gdHJ1ZSkge1xyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBsZXQgdGltZSA9IDA7XHJcbiAgICAgICAgdGhpcy5nYW1lT3ZlciA9IHRydWU7XHJcbiAgICAgICAgaWYgKHR5cGUgPT0gXCJib29tXCIpIHtcclxuICAgICAgICAgICAgdGltZSA9IDIwMDA7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICAgICAgICB0aGlzLm5vZGUucGFyZW50LnBhcmVudC5nZXRDaGlsZEJ5TmFtZShcIkxvc2VcIikuYWN0aXZlID0gdHJ1ZTtcclxuICAgICAgICAgICAgdGhpcy5ub2RlLnBhcmVudC5wYXJlbnQuZ2V0Q2hpbGRCeU5hbWUoXCJMb3NlXCIpLmdldENoaWxkQnlOYW1lKFwiVGltZVwiKS5hY3RpdmUgPSB0cnVlO1xyXG4gICAgICAgICAgICB0aGlzLm5vZGUucGFyZW50LnBhcmVudC5nZXRDaGlsZEJ5TmFtZShcIkxvc2VcIikuZ2V0Q2hpbGRCeU5hbWUoXCJCb29tXCIpLmFjdGl2ZSA9IGZhbHNlO1xyXG4gICAgICAgICAgICBsZXQgYnV5QnRuID0gdGhpcy5ub2RlLnBhcmVudC5wYXJlbnQuZ2V0Q2hpbGRCeU5hbWUoXCJMb3NlXCIpLmdldENoaWxkQnlOYW1lKFwiVGltZVwiKS5nZXRDaGlsZEJ5TmFtZShcImJ1eUJ0blwiKTtcclxuICAgICAgICAgICAgYnV5QnRuLmdldENoaWxkQnlOYW1lKFwiY29pbjFcIikuYWN0aXZlID0gYnV5QnRuLmdldENoaWxkQnlOYW1lKFwiY29pbjJcIikuYWN0aXZlID0gYnV5QnRuLmdldENoaWxkQnlOYW1lKFwiY29pbjNcIikuYWN0aXZlID0gZmFsc2U7XHJcbiAgICAgICAgICAgIGlmIChjYy5meC5HYW1lQ29uZmlnLkdNX0lORk8ucmV2aWV3ID09IDApIGJ1eUJ0bi5nZXRDaGlsZEJ5TmFtZShcImNvaW4xXCIpLmFjdGl2ZSA9IHRydWU7XHJcbiAgICAgICAgICAgIGVsc2UgaWYgKGNjLmZ4LkdhbWVDb25maWcuR01fSU5GTy5yZXZpZXcgPT0gMSkgYnV5QnRuLmdldENoaWxkQnlOYW1lKFwiY29pbjJcIikuYWN0aXZlID0gdHJ1ZTtcclxuICAgICAgICAgICAgZWxzZSBpZiAoY2MuZnguR2FtZUNvbmZpZy5HTV9JTkZPLnJldmlldyA9PSAyKSBidXlCdG4uZ2V0Q2hpbGRCeU5hbWUoXCJjb2luM1wiKS5hY3RpdmUgPSB0cnVlO1xyXG4gICAgICAgICAgICBpZiAodHlwZSkge1xyXG4gICAgICAgICAgICAgICAgaWYgKHR5cGUgPT0gXCJib29tXCIpIHtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLm5vZGUucGFyZW50LnBhcmVudC5nZXRDaGlsZEJ5TmFtZShcIkxvc2VcIikuZ2V0Q2hpbGRCeU5hbWUoXCJUaW1lXCIpLmFjdGl2ZSA9IGZhbHNlO1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMubm9kZS5wYXJlbnQucGFyZW50LmdldENoaWxkQnlOYW1lKFwiTG9zZVwiKS5nZXRDaGlsZEJ5TmFtZShcIkJvb21cIikuYWN0aXZlID0gdHJ1ZTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH0sIHRpbWUpO1xyXG5cclxuICAgICAgICAvLyBjb25zb2xlLmxvZyhcIua4uOaIj+Wksei0pVwiKTtcclxuICAgIH1cclxuXHJcbiAgICAvL+aJk+W8gOaWsOaooeW8j+W8ueeql1xyXG4gICAgb3Blbk5ld01vZGUodHlwZSkge1xyXG4gICAgICAgIGxldCBpbmRleCA9IDA7XHJcbiAgICAgICAgY29uc3QgQkxPQ0tTX1BFUl9GUkFNRSA9IDU7IC8vIOavj+W4p+mUgOavgeeahOaWueWdl+aVsOmHj1xyXG4gICAgICAgIGNvbnN0IGRlc3Ryb3lCbG9ja3MgPSAoKSA9PiB7XHJcbiAgICAgICAgICAgIGNvbnN0IGVuZEluZGV4ID0gTWF0aC5taW4oaW5kZXggKyBCTE9DS1NfUEVSX0ZSQU1FLCB0aGlzLmJsb2Nrcy5sZW5ndGgpO1xyXG4gICAgICAgICAgICBmb3IgKDsgaW5kZXggPCBlbmRJbmRleDsgaW5kZXgrKykge1xyXG4gICAgICAgICAgICAgICAgaWYgKHRoaXMuYmxvY2tzW2luZGV4XSkge1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuYmxvY2tzW2luZGV4XS5kZXN0cm95KCk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgLy8g5aaC5p6c6L+Y5pyJ5pa55Z2X5pyq6ZSA5q+B77yM5LiL5LiA5bin57un57utXHJcbiAgICAgICAgICAgIGlmIChpbmRleCA8IHRoaXMuYmxvY2tzLmxlbmd0aCkge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5zY2hlZHVsZU9uY2UoZGVzdHJveUJsb2NrcywgMCk7XHJcbiAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9O1xyXG4gICAgICAgIC8vIOW8gOWni+WIhuW4p+mUgOavgeaWueWdl1xyXG4gICAgICAgIGRlc3Ryb3lCbG9ja3MoKTtcclxuICAgICAgICB0aGlzLm5vZGUucGFyZW50LnBhcmVudC5nZXRDaGlsZEJ5TmFtZShcIk5ld01vZGVcIikuYWN0aXZlID0gdHJ1ZTtcclxuICAgICAgICB0aGlzLm5vZGUucGFyZW50LnBhcmVudC5nZXRDaGlsZEJ5TmFtZShcIk5ld01vZGVcIikuZ2V0Q29tcG9uZW50KFwiTmV3TW9kZVwiKS5zZXRNb2RlKHR5cGUpO1xyXG4gICAgfVxyXG5cclxuXHJcbiAgICBkb3duRG9vcihjb2xvciwgdHlwZSkge1xyXG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdGhpcy53YWxsQXJyYXkubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICAgICAgaWYgKHRoaXMud2FsbEFycmF5W2ldLmdldENoaWxkQnlOYW1lKFwid2FsbFwiKS5nZXRDb21wb25lbnQoXCJXYWxsXCIpLmNvbG9yID09IGNvbG9yKSB7XHJcbiAgICAgICAgICAgICAgICBpZiAodHlwZSkge1xyXG4gICAgICAgICAgICAgICAgICAgIGlmICh0eXBlID09IDUpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMud2FsbEFycmF5W2ldLmdldENoaWxkQnlOYW1lKFwid2FsbFwiKS5nZXRDb21wb25lbnQoXCJXYWxsXCIpLnNwZWNpYWwgPT0gMSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy53YWxsQXJyYXlbaV0uZ2V0Q2hpbGRCeU5hbWUoXCJ3YWxsXCIpLmdldENvbXBvbmVudChcIldhbGxcIikuZG93bkRvb3IoKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICBlbHNlIHRoaXMud2FsbEFycmF5W2ldLmdldENoaWxkQnlOYW1lKFwid2FsbFwiKS5nZXRDb21wb25lbnQoXCJXYWxsXCIpLmRvd25Eb29yKCk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBlbHNlIHRoaXMud2FsbEFycmF5W2ldLmdldENoaWxkQnlOYW1lKFwid2FsbFwiKS5nZXRDb21wb25lbnQoXCJXYWxsXCIpLmRvd25Eb29yKCk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgdXBEb29yKCkge1xyXG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdGhpcy53YWxsQXJyYXkubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICAgICAgaWYgKHRoaXMud2FsbEFycmF5W2ldLmdldENoaWxkQnlOYW1lKFwid2FsbFwiKS5vcGFjaXR5ID09IDApIHtcclxuICAgICAgICAgICAgICAgIHRoaXMud2FsbEFycmF5W2ldLmdldENoaWxkQnlOYW1lKFwid2FsbFwiKS5nZXRDb21wb25lbnQoXCJXYWxsXCIpLnVwRG9vcigpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIC8v5byA5aeL5YCS6K6h5pe2XHJcbiAgICBzdGFydFRpbWVDdXREb3duKCkge1xyXG4gICAgICAgIHRoaXMuc2NoZWR1bGVDYWxsYmFjayA9IGZ1bmN0aW9uICgpIHtcclxuICAgICAgICAgICAgaWYgKHRoaXMucGF1c2UpIHJldHVybjtcclxuICAgICAgICAgICAgaWYgKHRoaXMudGltZU51bWJlciA8PSAwKSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLnN0b3BUaW1lQ3V0RG93bigpO1xyXG4gICAgICAgICAgICAgICAgdmFyIHRpbWVUZW1wID0gY2MuZnguR2FtZVRvb2wuZ2V0VGltZU1hcmdpbih0aGlzLnRpbWVOdW1iZXIpO1xyXG4gICAgICAgICAgICAgICAgTnVtYmVyVG9JbWFnZS5nZXRUaW1lTWFyZ2luKHRoaXMudGltZU51bWJlciwgNTAsIFwidGltZV9cIiwgdGhpcy50aW1lTGFiZWwpXHJcbiAgICAgICAgICAgICAgICAvLyB0aGlzLnRpbWVMYWJlbC5zdHJpbmcgPSB0aW1lVGVtcC50b1N0cmluZygpO1xyXG4gICAgICAgICAgICAgICAgaWYgKCF0aGlzLnBhdXNlKSB0aGlzLmZhaWxMZXZlbChcInRpbWVcIik7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLnRpbWVOdW1iZXIgLT0gMTtcclxuICAgICAgICAgICAgICAgIHRoaXMuY291bnRfVGltZSArPSAxO1xyXG4gICAgICAgICAgICAgICAgdmFyIHRpbWVUZW1wID0gY2MuZnguR2FtZVRvb2wuZ2V0VGltZU1hcmdpbih0aGlzLnRpbWVOdW1iZXIpO1xyXG4gICAgICAgICAgICAgICAgTnVtYmVyVG9JbWFnZS5nZXRUaW1lTWFyZ2luKHRoaXMudGltZU51bWJlciwgNTAsIFwidGltZV9cIiwgdGhpcy50aW1lTGFiZWwpXHJcbiAgICAgICAgICAgICAgICAvLyB0aGlzLnRpbWVMYWJlbC5zdHJpbmcgPSB0aW1lVGVtcC50b1N0cmluZygpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfS5iaW5kKHRoaXMpO1xyXG4gICAgICAgIHRoaXMuc2NoZWR1bGUodGhpcy5zY2hlZHVsZUNhbGxiYWNrLCAxKTtcclxuICAgIH1cclxuICAgIC8vIOWBnOatouWAkuiuoeaXtlxyXG4gICAgc3RvcFRpbWVDdXREb3duKCkge1xyXG4gICAgICAgIGlmICh0aGlzLnNjaGVkdWxlQ2FsbGJhY2spIHtcclxuICAgICAgICAgICAgdGhpcy51bnNjaGVkdWxlKHRoaXMuc2NoZWR1bGVDYWxsYmFjayk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIC8v5L2/55So5pe26Ze06YGT5YW3XHJcbiAgICB1c2VUaW1lUHJvcCgpIHtcclxuICAgICAgICBpZiAodGhpcy5ub2RlLnBhcmVudC5nZXRDaGlsZEJ5TmFtZShcIkljZVwiKS5hY3RpdmUgPT0gdHJ1ZSB8fCB0aGlzLmhhbW1lciA9PSB0cnVlXHJcbiAgICAgICAgICAgIHx8IHRoaXMubWFnaWNNYXNrLmFjdGl2ZSA9PSB0cnVlIHx8IHRoaXMudGltZU51bWJlciA8PSAxKSB7XHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcbiAgICAgICAgbGV0IGZyZWV6ZUJ0biA9IHRoaXMubm9kZS5wYXJlbnQuZ2V0Q2hpbGRCeU5hbWUoXCJCb3R0b21cIikuZ2V0Q2hpbGRCeU5hbWUoXCJ0aW1lQnRuXCIpO1xyXG4gICAgICAgIGlmIChmcmVlemVCdG4uZ2V0Q29tcG9uZW50KFwiYnRuQ29udHJvbFwiKS5fdG91Y2gpIHtcclxuICAgICAgICAgICAgZnJlZXplQnRuLmdldENvbXBvbmVudChcImJ0bkNvbnRyb2xcIikuc2V0VG91Y2goZmFsc2UpO1xyXG4gICAgICAgICAgICBpZiAoY2MuZnguR2FtZUNvbmZpZy5HTV9JTkZPLmZyZWV6ZUFtb3VudCA8IDEpIHtcclxuICAgICAgICAgICAgICAgIGlmIChjYy5meC5HYW1lQ29uZmlnLkdNX0lORk8uY29pbiA8IDE1MDApIHtcclxuICAgICAgICAgICAgICAgICAgICBNaW5pR2FtZVNkay5BUEkuc2hvd1RvYXN0KFwi6YeR5biB5LiN6Laz77yM5peg5rOV6LSt5Lmw6YGT5YW3XCIpO1xyXG4gICAgICAgICAgICAgICAgICAgIGZyZWV6ZUJ0bi5nZXRDb21wb25lbnQoXCJidG5Db250cm9sXCIpLnNldFRvdWNoKHRydWUpO1xyXG4gICAgICAgICAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIHRoaXMubm9kZS5wYXJlbnQucGFyZW50LmdldENoaWxkQnlOYW1lKFwicHJvcFdpbmRvd1wiKS5hY3RpdmUgPSB0cnVlO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5ub2RlLnBhcmVudC5wYXJlbnQucGFyZW50LmdldENvbXBvbmVudChcIlNjZW5lTWFuYWdlclwiKS5vcGVuUHJvcEJ1eShcImZyZWV6ZVwiKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgICAgIGlmICghdGhpcy5ub2RlLnBhcmVudC5nZXRDaGlsZEJ5TmFtZShcIkljZVwiKS5hY3RpdmUgJiYgIXRoaXMucGF1c2UpIHtcclxuICAgICAgICAgICAgICAgICAgICBjb25zdCB0aW1lc3RhbXAgPSBEYXRlLm5vdygpO1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZnJlZXplTWFzay5hY3RpdmUgPSB0cnVlO1xyXG5cclxuICAgICAgICAgICAgICAgICAgICB0aGlzLnBhdXNlID0gdHJ1ZTtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLm5vZGUucGFyZW50LmdldENoaWxkQnlOYW1lKFwiSWNlXCIpLmFjdGl2ZSA9IHRydWU7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5ub2RlLnBhcmVudC5nZXRDaGlsZEJ5TmFtZShcIlRvcFwiKS5nZXRDaGlsZEJ5TmFtZShcIkljZVwiKS5hY3RpdmUgPSB0cnVlO1xyXG5cclxuICAgICAgICAgICAgICAgICAgICBjYy5meC5HYW1lQ29uZmlnLkdNX0lORk8uZnJlZXplQW1vdW50IC09IDE7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKGNjLmZ4LkdhbWVDb25maWcuR01fSU5GTy5mcmVlemVBbW91bnQgPCAwKVxyXG4gICAgICAgICAgICAgICAgICAgICAgICBjYy5meC5HYW1lQ29uZmlnLkdNX0lORk8uZnJlZXplQW1vdW50ID0gMDtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLmljZUxhYmVsLnN0cmluZyA9IGNjLmZ4LkdhbWVDb25maWcuR01fSU5GTy5mcmVlemVBbW91bnQudG9TdHJpbmcoKTtcclxuICAgICAgICAgICAgICAgICAgICBsZXQgcHJvcEluZm8gPSBjYy5meC5TdG9yYWdlTWVzc2FnZS5nZXRTdG9yYWdlKFwicHJvcFwiKTtcclxuICAgICAgICAgICAgICAgICAgICBwcm9wSW5mby5mcmVlemVBbW91bnQgPSBjYy5meC5HYW1lQ29uZmlnLkdNX0lORk8uZnJlZXplQW1vdW50O1xyXG4gICAgICAgICAgICAgICAgICAgIHByb3BJbmZvLnRpbWVzdGFtcCA9IHRpbWVzdGFtcDtcclxuICAgICAgICAgICAgICAgICAgICBjYy5meC5TdG9yYWdlTWVzc2FnZS5zZXRTdG9yYWdlKFwicHJvcFwiLCBwcm9wSW5mbyk7XHJcbiAgICAgICAgICAgICAgICAgICAgY2MuZnguR2FtZVRvb2wuc2V0VXNlclByb3AoMjAwMSwgY2MuZnguR2FtZUNvbmZpZy5HTV9JTkZPLmZyZWV6ZUFtb3VudCwgKGRhdGEpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICB9KVxyXG4gICAgICAgICAgICAgICAgICAgIGxldCBkYXRhID0ge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBpZDogXCIyMDAxXCIsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIG51bTogLTFcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgY2MuZnguR2FtZVRvb2wuc2h1c2h1X1RyYWNrKFwicmVzb3VyY2VfY29zdFwiLCBkYXRhKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIGVsc2UgTWluaUdhbWVTZGsuQVBJLnNob3dUb2FzdChcIumBk+WFt+S9v+eUqOS4re+8jOivt+eojeWQjuWGjeivlVwiKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuXHJcblxyXG4gICAgfVxyXG5cclxuICAgIC8v6Kej5byA5pe26Ze05Ya757uTXHJcbiAgICBvcGVuSWNlKCkge1xyXG4gICAgICAgIGlmICh0aGlzLm5vZGUucGFyZW50LmdldENoaWxkQnlOYW1lKFwiSWNlXCIpLmFjdGl2ZSkge1xyXG4gICAgICAgICAgICB0aGlzLmZyZWV6ZU1hc2suYWN0aXZlID0gZmFsc2U7XHJcbiAgICAgICAgICAgIGxldCBmcmVlemVCdG4gPSB0aGlzLm5vZGUucGFyZW50LmdldENoaWxkQnlOYW1lKFwiQm90dG9tXCIpLmdldENoaWxkQnlOYW1lKFwidGltZUJ0blwiKTtcclxuICAgICAgICAgICAgZnJlZXplQnRuLmdldENvbXBvbmVudChcImJ0bkNvbnRyb2xcIikuc2V0VG91Y2godHJ1ZSk7XHJcbiAgICAgICAgICAgIHRoaXMubm9kZS5wYXJlbnQuZ2V0Q2hpbGRCeU5hbWUoXCJJY2VcIikuYWN0aXZlID0gZmFsc2U7XHJcbiAgICAgICAgICAgIHRoaXMubm9kZS5wYXJlbnQuZ2V0Q2hpbGRCeU5hbWUoXCJUb3BcIikuZ2V0Q2hpbGRCeU5hbWUoXCJJY2VcIikuYWN0aXZlID0gZmFsc2U7XHJcbiAgICAgICAgICAgIHRoaXMucGF1c2UgPSBmYWxzZTtcclxuICAgICAgICAgICAgLy8gdGhpcy5zdGFydFRpbWVDdXREb3duKCk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIGhhbmRsZUJ1eVN1Y2Nlc3MoZGF0YSkge1xyXG4gICAgICAgIHRoaXMucGF1c2UgPSBmYWxzZTtcclxuICAgICAgICBjb25zdCB0aW1lc3RhbXAgPSBEYXRlLm5vdygpO1xyXG4gICAgICAgIC8vIGNvbnNvbGUubG9nKFwi5Zue6LCD5Ye95pWw5YaFOlwiLHRoaXMucGF1c2UpO1xyXG4gICAgICAgIGxldCBmcmVlemVCdG4gPSB0aGlzLm5vZGUucGFyZW50LmdldENoaWxkQnlOYW1lKFwiQm90dG9tXCIpLmdldENoaWxkQnlOYW1lKFwidGltZUJ0blwiKTtcclxuICAgICAgICBsZXQgaGFtbWVyQnRuID0gdGhpcy5ub2RlLnBhcmVudC5nZXRDaGlsZEJ5TmFtZShcIkJvdHRvbVwiKS5nZXRDaGlsZEJ5TmFtZShcImRlc3Ryb3lCdG5cIik7XHJcbiAgICAgICAgbGV0IG1hZ2ljQnRuID0gdGhpcy5ub2RlLnBhcmVudC5nZXRDaGlsZEJ5TmFtZShcIkJvdHRvbVwiKS5nZXRDaGlsZEJ5TmFtZShcIm1hZ2ljQnRuXCIpO1xyXG4gICAgICAgIGlmIChkYXRhID09IFwiZnJlZXplQW1vdW50XCIpIGZyZWV6ZUJ0bi5nZXRDb21wb25lbnQoXCJidG5Db250cm9sXCIpLnNldFRvdWNoKHRydWUpO1xyXG4gICAgICAgIGVsc2UgaWYgKGRhdGEgPT0gXCJoYW1tZXJBbW91bnRcIikgaGFtbWVyQnRuLmdldENvbXBvbmVudChcImJ0bkNvbnRyb2xcIikuc2V0VG91Y2godHJ1ZSk7XHJcbiAgICAgICAgZWxzZSBpZiAoZGF0YSA9PSBcIm1hZ2ljQW1vdW50XCIpIG1hZ2ljQnRuLmdldENvbXBvbmVudChcImJ0bkNvbnRyb2xcIikuc2V0VG91Y2godHJ1ZSk7XHJcbiAgICAgICAgaWYgKGRhdGEgPT0gXCJmcmVlemVBbW91bnRcIikge1xyXG4gICAgICAgICAgICBjYy5meC5HYW1lQ29uZmlnLkdNX0lORk8uZnJlZXplQW1vdW50ICs9IDM7XHJcbiAgICAgICAgICAgIGxldCBwcm9wSW5mbyA9IGNjLmZ4LlN0b3JhZ2VNZXNzYWdlLmdldFN0b3JhZ2UoXCJwcm9wXCIpO1xyXG4gICAgICAgICAgICBwcm9wSW5mby5mcmVlemVBbW91bnQgPSBjYy5meC5HYW1lQ29uZmlnLkdNX0lORk8uZnJlZXplQW1vdW50O1xyXG4gICAgICAgICAgICBwcm9wSW5mby50aW1lc3RhbXAgPSB0aW1lc3RhbXA7XHJcbiAgICAgICAgICAgIGNjLmZ4LlN0b3JhZ2VNZXNzYWdlLnNldFN0b3JhZ2UoXCJwcm9wXCIsIHByb3BJbmZvKTtcclxuICAgICAgICAgICAgdGhpcy5ub2RlLnBhcmVudC5wYXJlbnQucGFyZW50LmdldENvbXBvbmVudChcIlNjZW5lTWFuYWdlclwiKS5jbG9zZVByb3BCdXkoKTtcclxuICAgICAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmljZUxhYmVsLnN0cmluZyA9IGNjLmZ4LkdhbWVDb25maWcuR01fSU5GTy5mcmVlemVBbW91bnQudG9TdHJpbmcoKTtcclxuICAgICAgICAgICAgICAgIE1pbmlHYW1lU2RrLkFQSS5zaG93VG9hc3QoXCLotK3kubDlhrvnu5Pml7bpl7TpgZPlhbfmiJDlip9cIik7XHJcbiAgICAgICAgICAgIH0sIDIwMCk7XHJcblxyXG5cclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSBpZiAoZGF0YSA9PSBcIm1hZ2ljQW1vdW50XCIpIHtcclxuICAgICAgICAgICAgY2MuZnguR2FtZUNvbmZpZy5HTV9JTkZPLm1hZ2ljQW1vdW50ICs9IDM7XHJcbiAgICAgICAgICAgIGxldCBwcm9wSW5mbyA9IGNjLmZ4LlN0b3JhZ2VNZXNzYWdlLmdldFN0b3JhZ2UoXCJwcm9wXCIpO1xyXG4gICAgICAgICAgICBwcm9wSW5mby5tYWdpY0Ftb3VudCA9IGNjLmZ4LkdhbWVDb25maWcuR01fSU5GTy5tYWdpY0Ftb3VudDtcclxuICAgICAgICAgICAgcHJvcEluZm8udGltZXN0YW1wID0gdGltZXN0YW1wO1xyXG4gICAgICAgICAgICBjYy5meC5TdG9yYWdlTWVzc2FnZS5zZXRTdG9yYWdlKFwicHJvcFwiLCBwcm9wSW5mbyk7XHJcbiAgICAgICAgICAgIHRoaXMubm9kZS5wYXJlbnQucGFyZW50LnBhcmVudC5nZXRDb21wb25lbnQoXCJTY2VuZU1hbmFnZXJcIikuY2xvc2VQcm9wQnV5KCk7XHJcbiAgICAgICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgTWluaUdhbWVTZGsuQVBJLnNob3dUb2FzdChcIui0reS5sOmUpOWtkOmBk+WFt+aIkOWKn1wiKTtcclxuICAgICAgICAgICAgICAgIHRoaXMubWFnaWNMYWJlbC5zdHJpbmcgPSBjYy5meC5HYW1lQ29uZmlnLkdNX0lORk8ubWFnaWNBbW91bnQudG9TdHJpbmcoKTtcclxuICAgICAgICAgICAgfSwgMjAwKTtcclxuXHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2UgaWYgKGRhdGEgPT0gXCJoYW1tZXJBbW91bnRcIikge1xyXG4gICAgICAgICAgICBjYy5meC5HYW1lQ29uZmlnLkdNX0lORk8uaGFtbWVyQW1vdW50ICs9IDM7XHJcbiAgICAgICAgICAgIGxldCBwcm9wSW5mbyA9IGNjLmZ4LlN0b3JhZ2VNZXNzYWdlLmdldFN0b3JhZ2UoXCJwcm9wXCIpO1xyXG4gICAgICAgICAgICBwcm9wSW5mby5oYW1tZXJBbW91bnQgPSBjYy5meC5HYW1lQ29uZmlnLkdNX0lORk8uaGFtbWVyQW1vdW50O1xyXG4gICAgICAgICAgICBwcm9wSW5mby50aW1lc3RhbXAgPSB0aW1lc3RhbXA7XHJcbiAgICAgICAgICAgIGNjLmZ4LlN0b3JhZ2VNZXNzYWdlLnNldFN0b3JhZ2UoXCJwcm9wXCIsIHByb3BJbmZvKTtcclxuICAgICAgICAgICAgdGhpcy5ub2RlLnBhcmVudC5wYXJlbnQucGFyZW50LmdldENvbXBvbmVudChcIlNjZW5lTWFuYWdlclwiKS5jbG9zZVByb3BCdXkoKTtcclxuICAgICAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmhhbW1lckxhYmVsLnN0cmluZyA9IGNjLmZ4LkdhbWVDb25maWcuR01fSU5GTy5oYW1tZXJBbW91bnQudG9TdHJpbmcoKTtcclxuICAgICAgICAgICAgICAgIE1pbmlHYW1lU2RrLkFQSS5zaG93VG9hc3QoXCLotK3kubDprZTms5Xmo5LpgZPlhbfmiJDlip9cIik7XHJcbiAgICAgICAgICAgIH0sIDIwMCk7XHJcblxyXG4gICAgICAgIH1cclxuXHJcblxyXG5cclxuICAgIH1cclxuXHJcbiAgICAvL+S9v+eUqOmUpOWtkOmBk+WFt1xyXG4gICAgdXNlSGFtbWVyKCkge1xyXG4gICAgICAgIGlmICh0aGlzLm5vZGUucGFyZW50LmdldENoaWxkQnlOYW1lKFwiSWNlXCIpLmFjdGl2ZSA9PSB0cnVlIHx8IHRoaXMuaGFtbWVyID09IHRydWVcclxuICAgICAgICAgICAgfHwgdGhpcy5tYWdpY01hc2suYWN0aXZlID09IHRydWUgfHwgdGhpcy50aW1lTnVtYmVyIDw9IDEpIHtcclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuICAgICAgICBsZXQgaGFtbWVyQnRuID0gdGhpcy5ub2RlLnBhcmVudC5nZXRDaGlsZEJ5TmFtZShcIkJvdHRvbVwiKS5nZXRDaGlsZEJ5TmFtZShcImRlc3Ryb3lCdG5cIik7XHJcbiAgICAgICAgaWYgKGhhbW1lckJ0bi5nZXRDb21wb25lbnQoXCJidG5Db250cm9sXCIpLl90b3VjaCkge1xyXG4gICAgICAgICAgICBoYW1tZXJCdG4uZ2V0Q29tcG9uZW50KFwiYnRuQ29udHJvbFwiKS5zZXRUb3VjaChmYWxzZSk7XHJcbiAgICAgICAgICAgIGlmIChjYy5meC5HYW1lQ29uZmlnLkdNX0lORk8uaGFtbWVyQW1vdW50IDwgMSkge1xyXG4gICAgICAgICAgICAgICAgaWYgKGNjLmZ4LkdhbWVDb25maWcuR01fSU5GTy5jb2luIDwgMTUwMCkge1xyXG4gICAgICAgICAgICAgICAgICAgIE1pbmlHYW1lU2RrLkFQSS5zaG93VG9hc3QoXCLph5HluIHkuI3otrPvvIzml6Dms5XotK3kubDpgZPlhbdcIik7XHJcbiAgICAgICAgICAgICAgICAgICAgaGFtbWVyQnRuLmdldENvbXBvbmVudChcImJ0bkNvbnRyb2xcIikuc2V0VG91Y2godHJ1ZSk7XHJcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgdGhpcy5ub2RlLnBhcmVudC5wYXJlbnQuZ2V0Q2hpbGRCeU5hbWUoXCJwcm9wV2luZG93XCIpLmFjdGl2ZSA9IHRydWU7XHJcbiAgICAgICAgICAgICAgICB0aGlzLm5vZGUucGFyZW50LnBhcmVudC5wYXJlbnQuZ2V0Q29tcG9uZW50KFwiU2NlbmVNYW5hZ2VyXCIpLm9wZW5Qcm9wQnV5KFwiaGFtbWVyXCIpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgaWYgKCF0aGlzLmhhbW1lcikge1xyXG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHRpbWVzdGFtcCA9IERhdGUubm93KCk7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5oYW1tZXJNYXNrLmFjdGl2ZSA9IHRydWU7XHJcblxyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuaGFtbWVyID0gdHJ1ZTtcclxuICAgICAgICAgICAgICAgICAgICBjYy5meC5HYW1lQ29uZmlnLkdNX0lORk8uaGFtbWVyQW1vdW50IC09IDE7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKGNjLmZ4LkdhbWVDb25maWcuR01fSU5GTy5oYW1tZXJBbW91bnQgPCAwKVxyXG4gICAgICAgICAgICAgICAgICAgICAgICBjYy5meC5HYW1lQ29uZmlnLkdNX0lORk8uaGFtbWVyQW1vdW50ID0gMDtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLmhhbW1lckxhYmVsLnN0cmluZyA9IGNjLmZ4LkdhbWVDb25maWcuR01fSU5GTy5oYW1tZXJBbW91bnQudG9TdHJpbmcoKTtcclxuICAgICAgICAgICAgICAgICAgICBsZXQgcHJvcEluZm8gPSBjYy5meC5TdG9yYWdlTWVzc2FnZS5nZXRTdG9yYWdlKFwicHJvcFwiKTtcclxuICAgICAgICAgICAgICAgICAgICBjb25zb2xlLmxvZyhcIumUpOWtkOmBk+WFt+S/oeaBrzpcIiwgcHJvcEluZm8pO1xyXG4gICAgICAgICAgICAgICAgICAgIHByb3BJbmZvLmhhbW1lckFtb3VudCA9IGNjLmZ4LkdhbWVDb25maWcuR01fSU5GTy5oYW1tZXJBbW91bnQ7XHJcbiAgICAgICAgICAgICAgICAgICAgcHJvcEluZm8udGltZXN0YW1wID0gdGltZXN0YW1wO1xyXG4gICAgICAgICAgICAgICAgICAgIGNjLmZ4LlN0b3JhZ2VNZXNzYWdlLnNldFN0b3JhZ2UoXCJwcm9wXCIsIHByb3BJbmZvKTtcclxuICAgICAgICAgICAgICAgICAgICBjYy5meC5HYW1lVG9vbC5zZXRVc2VyUHJvcCgyMDAyLCBjYy5meC5HYW1lQ29uZmlnLkdNX0lORk8uaGFtbWVyQW1vdW50LCAoZGF0YSkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgIH0pXHJcbiAgICAgICAgICAgICAgICAgICAgbGV0IGRhdGEgPSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGlkOiBcIjIwMDJcIixcclxuICAgICAgICAgICAgICAgICAgICAgICAgbnVtOiAtMVxyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICBjYy5meC5HYW1lVG9vbC5zaHVzaHVfVHJhY2soXCJyZXNvdXJjZV9jb3N0XCIsIGRhdGEpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgZWxzZSBNaW5pR2FtZVNkay5BUEkuc2hvd1RvYXN0KFwi6YGT5YW35L2/55So5Lit77yM6K+356iN5ZCO5YaN6K+VXCIpO1xyXG4gICAgICAgICAgICB9XHJcblxyXG4gICAgICAgIH1cclxuXHJcbiAgICB9XHJcblxyXG4gICAgYnV5TWFnaWMoKSB7XHJcbiAgICAgICAgaWYgKGNjLmZ4LkdhbWVDb25maWcuR01fSU5GTy5jb2luIDwgMTUwMCkge1xyXG4gICAgICAgICAgICBNaW5pR2FtZVNkay5BUEkuc2hvd1RvYXN0KFwi6YeR5biB5LiN6Laz77yM5peg5rOV6LSt5Lmw6YGT5YW3XCIpO1xyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGNjLmZ4LkdhbWVUb29sLmJ1eVByb3AoMjAwMywgdGhpcy5oYW5kbGVCdXlTdWNjZXNzLmJpbmQodGhpcywgXCJtYWdpY0Ftb3VudFwiKSk7XHJcbiAgICB9XHJcblxyXG4gICAgYnV5SGFtbWVyKCkge1xyXG4gICAgICAgIGlmIChjYy5meC5HYW1lQ29uZmlnLkdNX0lORk8uY29pbiA8IDE1MDApIHtcclxuICAgICAgICAgICAgTWluaUdhbWVTZGsuQVBJLnNob3dUb2FzdChcIumHkeW4geS4jei2s++8jOaXoOazlei0reS5sOmBk+WFt1wiKTtcclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuICAgICAgICBjYy5meC5HYW1lVG9vbC5idXlQcm9wKDIwMDIsIHRoaXMuaGFuZGxlQnV5U3VjY2Vzcy5iaW5kKHRoaXMsIFwiaGFtbWVyQW1vdW50XCIpKTtcclxuICAgIH1cclxuXHJcbiAgICBidXlGcmVlemUoKSB7XHJcbiAgICAgICAgaWYgKGNjLmZ4LkdhbWVDb25maWcuR01fSU5GTy5jb2luIDwgMTUwMCkge1xyXG4gICAgICAgICAgICBNaW5pR2FtZVNkay5BUEkuc2hvd1RvYXN0KFwi6YeR5biB5LiN6Laz77yM5peg5rOV6LSt5Lmw6YGT5YW3XCIpO1xyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGNjLmZ4LkdhbWVUb29sLmJ1eVByb3AoMjAwMSwgdGhpcy5oYW5kbGVCdXlTdWNjZXNzLmJpbmQodGhpcywgXCJmcmVlemVBbW91bnRcIikpO1xyXG4gICAgfVxyXG5cclxuICAgIC8v5L2/55So6a2U5rOV5qOS6ZqP5py65raI6Zmk5Lik5Liq5pa55Z2XXHJcbiAgICB1c2VNYWdpYygpIHtcclxuICAgICAgICBpZiAodGhpcy5ub2RlLnBhcmVudC5nZXRDaGlsZEJ5TmFtZShcIkljZVwiKS5hY3RpdmUgPT0gdHJ1ZSB8fCB0aGlzLmhhbW1lciA9PSB0cnVlXHJcbiAgICAgICAgICAgIHx8IHRoaXMubWFnaWNNYXNrLmFjdGl2ZSA9PSB0cnVlIHx8IHRoaXMudGltZU51bWJlciA8PSAxKSB7XHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcbiAgICAgICAgbGV0IG1hZ2ljQnRuID0gdGhpcy5ub2RlLnBhcmVudC5nZXRDaGlsZEJ5TmFtZShcIkJvdHRvbVwiKS5nZXRDaGlsZEJ5TmFtZShcIm1hZ2ljQnRuXCIpO1xyXG4gICAgICAgIGlmIChtYWdpY0J0bi5nZXRDb21wb25lbnQoXCJidG5Db250cm9sXCIpLl90b3VjaCkge1xyXG4gICAgICAgICAgICBtYWdpY0J0bi5nZXRDb21wb25lbnQoXCJidG5Db250cm9sXCIpLnNldFRvdWNoKGZhbHNlKTtcclxuICAgICAgICAgICAgaWYgKGNjLmZ4LkdhbWVDb25maWcuR01fSU5GTy5tYWdpY0Ftb3VudCA8IDEpIHtcclxuICAgICAgICAgICAgICAgIGlmIChjYy5meC5HYW1lQ29uZmlnLkdNX0lORk8uY29pbiA8IDE1MDApIHtcclxuICAgICAgICAgICAgICAgICAgICBNaW5pR2FtZVNkay5BUEkuc2hvd1RvYXN0KFwi6YeR5biB5LiN6Laz77yM5peg5rOV6LSt5Lmw6YGT5YW3XCIpO1xyXG4gICAgICAgICAgICAgICAgICAgIG1hZ2ljQnRuLmdldENvbXBvbmVudChcImJ0bkNvbnRyb2xcIikuc2V0VG91Y2godHJ1ZSk7XHJcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgdGhpcy5ub2RlLnBhcmVudC5wYXJlbnQuZ2V0Q2hpbGRCeU5hbWUoXCJwcm9wV2luZG93XCIpLmFjdGl2ZSA9IHRydWU7XHJcbiAgICAgICAgICAgICAgICB0aGlzLm5vZGUucGFyZW50LnBhcmVudC5wYXJlbnQuZ2V0Q29tcG9uZW50KFwiU2NlbmVNYW5hZ2VyXCIpLm9wZW5Qcm9wQnV5KFwibWFnaWNcIik7XHJcbiAgICAgICAgICAgICAgICAvLyBNaW5pR2FtZVNkay5BUEkuc2hvd1RvYXN0KFwi6a2U5rOV5qOS5pWw6YeP5LiN6LazLOiHquWKqOi0reS5sOmtlOazleajklwiKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgICAgIGNvbnN0IHRpbWVzdGFtcCA9IERhdGUubm93KCk7XHJcbiAgICAgICAgICAgICAgICB0aGlzLm1hZ2ljTWFzay5hY3RpdmUgPSB0cnVlO1xyXG4gICAgICAgICAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5tYWdpY01hc2suYWN0aXZlID0gZmFsc2U7XHJcbiAgICAgICAgICAgICAgICAgICAgbWFnaWNCdG4uZ2V0Q29tcG9uZW50KFwiYnRuQ29udHJvbFwiKS5zZXRUb3VjaCh0cnVlKTtcclxuICAgICAgICAgICAgICAgIH0sIDEwMDApO1xyXG5cclxuICAgICAgICAgICAgICAgIGNjLmZ4LkdhbWVDb25maWcuR01fSU5GTy5tYWdpY0Ftb3VudCAtPSAxO1xyXG4gICAgICAgICAgICAgICAgaWYgKGNjLmZ4LkdhbWVDb25maWcuR01fSU5GTy5tYWdpY0Ftb3VudCA8IDApXHJcbiAgICAgICAgICAgICAgICAgICAgY2MuZnguR2FtZUNvbmZpZy5HTV9JTkZPLm1hZ2ljQW1vdW50ID0gMDtcclxuICAgICAgICAgICAgICAgIHRoaXMubWFnaWNMYWJlbC5zdHJpbmcgPSBjYy5meC5HYW1lQ29uZmlnLkdNX0lORk8ubWFnaWNBbW91bnQudG9TdHJpbmcoKTtcclxuICAgICAgICAgICAgICAgIGxldCBwcm9wSW5mbyA9IGNjLmZ4LlN0b3JhZ2VNZXNzYWdlLmdldFN0b3JhZ2UoXCJwcm9wXCIpO1xyXG4gICAgICAgICAgICAgICAgcHJvcEluZm8ubWFnaWNBbW91bnQgPSBjYy5meC5HYW1lQ29uZmlnLkdNX0lORk8ubWFnaWNBbW91bnQ7XHJcbiAgICAgICAgICAgICAgICBwcm9wSW5mby50aW1lc3RhbXAgPSB0aW1lc3RhbXA7XHJcbiAgICAgICAgICAgICAgICBjYy5meC5TdG9yYWdlTWVzc2FnZS5zZXRTdG9yYWdlKFwicHJvcFwiLCBwcm9wSW5mbyk7XHJcbiAgICAgICAgICAgICAgICBjYy5meC5HYW1lVG9vbC5zZXRVc2VyUHJvcCgyMDAzLCBjYy5meC5HYW1lQ29uZmlnLkdNX0lORk8ubWFnaWNBbW91bnQsIChkYXRhKSA9PiB7XHJcbiAgICAgICAgICAgICAgICB9KVxyXG4gICAgICAgICAgICAgICAgbGV0IGRhdGEgPSB7XHJcbiAgICAgICAgICAgICAgICAgICAgaWQ6IFwiMjAwM1wiLFxyXG4gICAgICAgICAgICAgICAgICAgIG51bTogLTFcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIGNjLmZ4LkdhbWVUb29sLnNodXNodV9UcmFjayhcInJlc291cmNlX2Nvc3RcIiwgZGF0YSk7XHJcbiAgICAgICAgICAgICAgICBsZXQgbm9tYWxBcnJheSA9IFtdO1xyXG4gICAgICAgICAgICAgICAgLy8gdGhpcy5tYWdpY0J0bi5ub2RlLmFjdGl2ZSA9IGZhbHNlO1xyXG4gICAgICAgICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0aGlzLmJsb2Nrcy5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgICAgICAgICAgICAgIC8vIGNvbnNvbGUubG9nKFwi5pa55Z2X57G75Z6LXCIsdGhpcy5ibG9ja3NbaV0uZ2V0Q29tcG9uZW50KFwiQmxvY2tcIikudHlwZSk7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMuYmxvY2tzW2ldLmdldENvbXBvbmVudChcIkJsb2NrXCIpLnR5cGUgPT0gMykge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmxvYWNrQXJyYXkucHVzaCh0aGlzLmJsb2Nrc1tpXSk7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIGVsc2UgaWYgKHRoaXMuYmxvY2tzW2ldLmdldENvbXBvbmVudChcIkJsb2NrXCIpLnR5cGUgPT0gNCkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmZyZWV6ZUFycmF5LnB1c2godGhpcy5ibG9ja3NbaV0pO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICBlbHNlIGlmICh0aGlzLmJsb2Nrc1tpXS5nZXRDb21wb25lbnQoXCJCbG9ja1wiKS50eXBlID09IDEwKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLmJsb2Nrc1tpXS5nZXRDb21wb25lbnQoXCJCbG9ja1wiKS5ibG9ja19JbmZvLm5vZGUpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vbWFsQXJyYXkucHVzaCh0aGlzLmJsb2Nrc1tpXS5nZXRDb21wb25lbnQoXCJCbG9ja1wiKS5ibG9ja19JbmZvLm5vZGUpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGVsc2Ugbm9tYWxBcnJheS5wdXNoKHRoaXMuYmxvY2tzW2ldKTtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIG5vbWFsQXJyYXkucHVzaCh0aGlzLmJsb2Nrc1tpXSk7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgaWYgKG5vbWFsQXJyYXkubGVuZ3RoID4gMSkge1xyXG4gICAgICAgICAgICAgICAgICAgIG5vbWFsQXJyYXkgPSBjYy5meC5HYW1lVG9vbC5zaHVmZmxlQXJyYXkobm9tYWxBcnJheSk7XHJcbiAgICAgICAgICAgICAgICAgICAgbm9tYWxBcnJheVswXS5nZXRDb21wb25lbnQoXCJCbG9ja1wiKS5lbGltaW5hdGUoKTtcclxuICAgICAgICAgICAgICAgICAgICBsZXQgdGltZSA9IDA7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKG5vbWFsQXJyYXlbMF0uZ2V0Q29tcG9uZW50KFwiQmxvY2tcIikudHlwZSA9PSAxIHx8IG5vbWFsQXJyYXlbMF0uZ2V0Q29tcG9uZW50KFwiQmxvY2tcIikudHlwZSA9PSA5KSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHRpbWUgPSAyMDA7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIGlmICh0aW1lID4gMCkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vbWFsQXJyYXlbMV0uZ2V0Q29tcG9uZW50KFwiQmxvY2tcIikuZWxpbWluYXRlKCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sIHRpbWUpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBub21hbEFycmF5WzFdLmdldENvbXBvbmVudChcIkJsb2NrXCIpLmVsaW1pbmF0ZSgpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgZWxzZSBpZiAobm9tYWxBcnJheS5sZW5ndGggPT0gMSkge1xyXG4gICAgICAgICAgICAgICAgICAgIG5vbWFsQXJyYXlbMF0uZ2V0Q29tcG9uZW50KFwiQmxvY2tcIikuZWxpbWluYXRlKCk7XHJcbiAgICAgICAgICAgICAgICAgICAgbGV0IHRpbWUgPSAwO1xyXG4gICAgICAgICAgICAgICAgICAgIGlmIChub21hbEFycmF5WzBdLmdldENvbXBvbmVudChcIkJsb2NrXCIpLnR5cGUgPT0gMSB8fCBub21hbEFycmF5WzBdLmdldENvbXBvbmVudChcIkJsb2NrXCIpLnR5cGUgPT0gOSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB0aW1lID0gMjAwO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMuZnJlZXplQXJyYXkubGVuZ3RoID09IDAgJiYgdGhpcy5sb2Fja0FycmF5Lmxlbmd0aCA9PSAwKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBjb25zb2xlLmxvZyhcIuWPquWJqeS4i+S4gOS4quWdl+mBk+WFt+S9v+eUqOWujOavlVwiKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLmxvYWNrQXJyYXkubGVuZ3RoICE9IDApIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBjb25zb2xlLmxvZyhcIua2iOmZpOS4gOS4quaZrumAmuWdl+WQju+8jOa2iOmZpOS4gOS4quW4pumUgeWdl1wiKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmxvYWNrQXJyYXlbMF0uZ2V0Q29tcG9uZW50KFwiQmxvY2tcIikuZWxpbWluYXRlKCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSBpZiAodGhpcy5mcmVlemVBcnJheS5sZW5ndGggIT0gMCkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGNvbnNvbGUubG9nKFwi5raI6Zmk5LiA5Liq5pmu6YCa5Z2X5ZCO77yM5raI6Zmk5LiA5Liq5Ya757uT5Z2XXCIpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuZnJlZXplQXJyYXlbMF0uZ2V0Q29tcG9uZW50KFwiQmxvY2tcIikuZWxpbWluYXRlKCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgfSwgMjAwICsgdGltZSk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICBsZXQgY291bnQgPSAyO1xyXG4gICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLmxvYWNrQXJyYXkubGVuZ3RoICE9IDApIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0aGlzLmxvYWNrQXJyYXkubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGNvbnNvbGUubG9nKFwi5rKh5pyJ5pmu6YCa5b+r77yM6a2U5rOV5raI6Zmk5LiA5Liq5bim6ZSB5Z2XXCIpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5sb2Fja0FycmF5W2ldLmdldENvbXBvbmVudChcIkJsb2NrXCIpLmVsaW1pbmF0ZSgpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY291bnQgLT0gMTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChjb3VudCA9PSAwKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoY291bnQgIT0gMCkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0aGlzLmZyZWV6ZUFycmF5Lmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gY29uc29sZS5sb2coXCLmsqHmnInmma7pgJrlv6vvvIzprZTms5XmtojpmaTkuIDkuKrlhrvnu5PlnZdcIik7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gdGhpcy5mcmVlemVBcnJheVtpXS5nZXRDb21wb25lbnQoXCJCbG9ja1wiKS5lbGltaW5hdGUoKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb3VudCAtPSAxO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChjb3VudCA9PSAwKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIH0sIDEwMCk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgLy/mjInkuIvmmoLlgZzmjInpkq5cclxuICAgIHVzZVBhdXNlKCkge1xyXG4gICAgICAgIGlmICh0aGlzLnBhdXNlKSB7XHJcbiAgICAgICAgICAgIHRoaXMucGF1c2UgPSBmYWxzZTtcclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgIHRoaXMucGF1c2UgPSB0cnVlO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcblxyXG5cclxuICAgIC8v5qC55o2u5YWz5Y2h6K6+572u5Zyw5Zu+5aSn5bCPXHJcbiAgICBzZXRNYXBJbmZvKCkge1xyXG4gICAgICAgIGxldCB3aWR0aCA9IDA7XHJcbiAgICAgICAgaWYgKHRoaXMubWFwV2lkdGggPCAxMCkge1xyXG4gICAgICAgICAgICB3aWR0aCA9IDAuMjtcclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSBpZiAodGhpcy5tYXBXaWR0aCA8IDE3KSB7XHJcbiAgICAgICAgICAgIHdpZHRoID0gMC4xNSAtICh0aGlzLm1hcFdpZHRoIC0gMTEpICogMC4wMTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHRoaXMubm9kZS5zY2FsZSA9IDEuNiArICg2IC0gdGhpcy5tYXBXaWR0aCkgKiB3aWR0aDtcclxuXHJcbiAgICAgICAgaWYgKHRoaXMubWFwV2lkdGggPT0gOCAmJiB0aGlzLm1hcEhlaWdodCA+IDEzKSB7XHJcbiAgICAgICAgICAgIHRoaXMubm9kZS5zY2FsZSA9IDE7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICAvLyB0aGlzLm5vZGUuc2NhbGUgPSAxO1xyXG4gICAgICAgIGNjLmZ4LkdhbWVDb25maWcuR01fSU5GTy5zY2FsZSA9IHRoaXMubm9kZS5zY2FsZTtcclxuICAgICAgICAvLyB0aGlzLm5vZGUuc2NhbGUgPSAwLjU7XHJcbiAgICAgICAgLy8gY29uc29sZS5sb2codGhpcy5ub2RlLnNjYWxlKTtcclxuICAgICAgICAvLyB0aGlzLm5vZGUuc2NhbGUgPSAxO1xyXG4gICAgfVxyXG5cclxuICAgIC8v5Yib5bu66Zeo55qE57KS5a2Q54m55pWIXHJcbiAgICBjcmVhdGVQYXJ0aWNsZShibG9jaywgamcpIHtcclxuICAgICAgICBsZXQgcGFydGljbGUgPSBjYy5pbnN0YW50aWF0ZShNYXBDb25yb2xlci5faW5zdGFuY2UuQmxvY2tfUHJvcFs5XSk7XHJcbiAgICAgICAgcGFydGljbGUucGFyZW50ID0gdGhpcy5ub2RlO1xyXG4gICAgICAgIHBhcnRpY2xlLnpJbmRleCA9IDEwMDA7XHJcbiAgICAgICAgbGV0IHdpZHRoID0gTWF0aC5mbG9vcihibG9jay53aWR0aCAvIDEyMCk7XHJcbiAgICAgICAgbGV0IGhlaWdodCA9IE1hdGguZmxvb3IoYmxvY2suaGVpZ2h0IC8gMTIwKTtcclxuICAgICAgICBsZXQgbmFtZSA9IFwiXCI7XHJcblxyXG4gICAgICAgIGlmIChqZyA9PSAwIHx8IGpnID09IDEpIHtcclxuICAgICAgICAgICAgbGV0IHkgPSBibG9jay55ICsgYmxvY2suaGVpZ2h0O1xyXG4gICAgICAgICAgICBsZXQgeCA9IGJsb2NrLnggLSBibG9jay53aWR0aCAvIDI7XHJcbiAgICAgICAgICAgIG5hbWUgPSBcInRvcF9cIiArIHdpZHRoICsgXCJfXCIgKyBoZWlnaHQ7XHJcbiAgICAgICAgICAgIGlmIChqZyA9PSAxKSB7XHJcbiAgICAgICAgICAgICAgICBuYW1lID0gXCJib3RfXCIgKyB3aWR0aCArIFwiX1wiICsgaGVpZ2h0O1xyXG4gICAgICAgICAgICAgICAgeSA9IGJsb2NrLnk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgaWYgKGJsb2NrLmFuY2hvclggPT0gMC41KSB7XHJcbiAgICAgICAgICAgICAgICB4ID0gYmxvY2sueDtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBlbHNlIGlmIChibG9jay5hbmNob3JYID09IDAuMzMpIHtcclxuICAgICAgICAgICAgICAgIHggPSBibG9jay54ICsgYmxvY2sud2lkdGggKiAoMC41IC0gMC4zMyk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgZWxzZSBpZiAoYmxvY2suYW5jaG9yWCA9PSAwLjY2KSB7XHJcbiAgICAgICAgICAgICAgICB4ID0gYmxvY2sueCArIGJsb2NrLndpZHRoICogKDAuNSAtIDAuNjYpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIHBhcnRpY2xlLnNldFBvc2l0aW9uKHgsIHkpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIGlmIChqZyA9PSAyIHx8IGpnID09IDMpIHtcclxuICAgICAgICAgICAgbmFtZSA9IFwibGVmdF9cIiArIGhlaWdodCArIFwiX1wiICsgd2lkdGg7XHJcbiAgICAgICAgICAgIGxldCB4ID0gYmxvY2sueCAtIGJsb2NrLndpZHRoO1xyXG4gICAgICAgICAgICBsZXQgeSA9IGJsb2NrLnkgKyBibG9jay5oZWlnaHQgLyAyO1xyXG4gICAgICAgICAgICBpZiAoYmxvY2suYW5jaG9yWCA9PSAwLjUpIHtcclxuICAgICAgICAgICAgICAgIHggPSBibG9jay54IC0gYmxvY2sud2lkdGggLyAyO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGVsc2UgaWYgKGJsb2NrLmFuY2hvclggPT0gMC4zMykge1xyXG4gICAgICAgICAgICAgICAgeCA9IGJsb2NrLnggLSBibG9jay53aWR0aCAqIDAuMzM7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgZWxzZSBpZiAoYmxvY2suYW5jaG9yWCA9PSAwLjY2KSB7XHJcbiAgICAgICAgICAgICAgICB4ID0gYmxvY2sueCArIGJsb2NrLndpZHRoICogMC42NjtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBpZiAoamcgPT0gMykge1xyXG4gICAgICAgICAgICAgICAgbmFtZSA9IFwicmlnaHRfXCIgKyBoZWlnaHQgKyBcIl9cIiArIHdpZHRoO1xyXG4gICAgICAgICAgICAgICAgeCA9IGJsb2NrLng7XHJcbiAgICAgICAgICAgICAgICBpZiAoYmxvY2suYW5jaG9yWCA9PSAwLjUpIHtcclxuICAgICAgICAgICAgICAgICAgICB4ID0gYmxvY2sueCArIGJsb2NrLndpZHRoIC8gMjtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIGVsc2UgaWYgKGJsb2NrLmFuY2hvclggPT0gMC4zMykge1xyXG4gICAgICAgICAgICAgICAgICAgIHggPSBibG9jay54ICsgYmxvY2sud2lkdGggKiAwLjY2O1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgZWxzZSBpZiAoYmxvY2suYW5jaG9yWCA9PSAwLjY2KSB7XHJcbiAgICAgICAgICAgICAgICAgICAgeCA9IGJsb2NrLnggKyBibG9jay53aWR0aCAqIDAuMzM7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgIHBhcnRpY2xlLnNldFBvc2l0aW9uKHgsIHkpO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgbGV0IHBhcnRpY2xlTm9kZSA9IHBhcnRpY2xlLmdldENoaWxkQnlOYW1lKG5hbWUpO1xyXG4gICAgICAgIGxldCBjb2xvciA9IGJsb2NrLmdldENvbXBvbmVudChcIkJsb2NrXCIpLmNvbG9yIC0gMTtcclxuXHJcbiAgICAgICAgcGFydGljbGVOb2RlLmdldENvbXBvbmVudChjYy5QYXJ0aWNsZVN5c3RlbSkuc3ByaXRlRnJhbWUgPSBwYXJ0aWNsZS5nZXRDb21wb25lbnQoXCJSZWR1Y2VcIikuQmxvY2tfQ29sb3JbY29sb3JdO1xyXG4gICAgICAgIHBhcnRpY2xlTm9kZS5hY3RpdmUgPSB0cnVlO1xyXG4gICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICAgICAgICBjYy50d2VlbihwYXJ0aWNsZSlcclxuICAgICAgICAgICAgICAgIC50bygyLCB7IG9wYWNpdHk6IDAgfSlcclxuICAgICAgICAgICAgICAgIC5jYWxsKCgpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICBwYXJ0aWNsZS5kZXN0cm95KCk7XHJcbiAgICAgICAgICAgICAgICB9KVxyXG4gICAgICAgICAgICAgICAgLnN0YXJ0KCk7XHJcbiAgICAgICAgfSwgMTIwMCk7XHJcbiAgICB9XHJcblxyXG4gICAgcmVtb3ZlT25lQmxvY2soKSB7XHJcbiAgICAgICAgLy8g56e76Zmk5omA5pyJ5pa55Z2XXHJcbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0aGlzLmJsb2Nrcy5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgICAgICBpZiAodGhpcy5ibG9ja3NbaV0ub3BhY2l0eSA9PSAwKSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmJsb2Nrc1tpXS5kZXN0cm95KCk7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmJsb2Nrcy5zcGxpY2UoaSwgMSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG5cclxuXHJcbiAgICB1cGRhdGUoZHQpIHtcclxuXHJcbiAgICB9XHJcbn1cclxuIl19 ->>>>>>> 0a31a7a5abc2c505bf743aa596e1c765a0405152 +//# sourceMappingURL=data:application/json;charset=utf-8;base64,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QUNuQixJQUFJLENBQUMsTUFBTSxHQUFHLEtBQUssQ0FBQztRQUNwQixJQUFJLENBQUMsT0FBTyxHQUFHLENBQUMsQ0FBQztRQUNqQixJQUFJLENBQUMsVUFBVSxFQUFFLENBQUM7UUFDbEIsSUFBSSxDQUFDLE1BQU0sR0FBRyxFQUFFLENBQUM7UUFDakIsSUFBSSxDQUFDLGFBQWEsR0FBRyxFQUFFLENBQUM7UUFDeEIsSUFBSSxDQUFDLE9BQU8sR0FBRyxFQUFFLENBQUM7UUFDbEIsSUFBSSxDQUFDLFFBQVEsR0FBRyxFQUFFLENBQUM7UUFDbkIsSUFBSSxDQUFDLFFBQVEsR0FBRyxFQUFFLENBQUM7UUFDbkIsSUFBSSxDQUFDLFNBQVMsR0FBRyxFQUFFLENBQUM7UUFDcEIsSUFBSSxDQUFDLFVBQVUsR0FBRyxFQUFFLENBQUM7UUFDckIsSUFBSSxDQUFDLGFBQWEsR0FBRyxFQUFFLENBQUM7UUFDeEIsSUFBSSxDQUFDLGFBQWEsR0FBRyxFQUFFLENBQUM7UUFDeEIsSUFBSSxDQUFDLFdBQVcsR0FBRyxFQUFFLENBQUM7UUFDdEIsSUFBSSxDQUFDLFVBQVUsR0FBRyxFQUFFLENBQUM7UUFDckIsSUFBSSxDQUFDLFVBQVUsR0FBRyxDQUFDLENBQUM7UUFDcEIsSUFBSSxDQUFDLFFBQVEsR0FBRyxDQUFDLENBQUM7UUFHbEIsSUFBSSxNQUFNLEdBQUcsSUFBSSxDQUFDLFFBQVEsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFFBQVEsR0FBRyxDQUFDLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsUUFBUSxHQUFHLENBQUMsQ0FBQyxHQUFHLEVBQUUsQ0FBQztRQUM1RixJQUFJLE1BQU0sR0FBRyxJQUFJLENBQUMsU0FBUyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxHQUFHLENBQUMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FB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QUNVO0lBRTdCO1FBREMsUUFBUSxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUM7bURBQ1M7SUFHNUI7UUFEQyxRQUFRLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQztrREFDUTtJQUcxQjtRQURDLFFBQVEsQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDO21EQUNTO0lBRzNCO1FBREMsUUFBUSxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUM7bURBQ1M7SUFJM0I7UUFEQyxRQUFRLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQztnREFDTTtJQXJEUCxXQUFXO1FBRC9CLE9BQU87T0FDYSxXQUFXLENBcStEL0I7SUFBRCxrQkFBQztDQXIrREQsQUFxK0RDLENBcitEd0MsRUFBRSxDQUFDLFNBQVMsR0FxK0RwRDtrQkFyK0RvQixXQUFXIiwiZmlsZSI6IiIsInNvdXJjZVJvb3QiOiIvIiwic291cmNlc0NvbnRlbnQiOlsiLy8gTGVhcm4gVHlwZVNjcmlwdDpcclxuLy8gIC0gaHR0cHM6Ly9kb2NzLmNvY29zLmNvbS9jcmVhdG9yL21hbnVhbC9lbi9zY3JpcHRpbmcvdHlwZXNjcmlwdC5odG1sXHJcbi8vIExlYXJuIEF0dHJpYnV0ZTpcclxuLy8gIC0gaHR0cHM6Ly9kb2NzLmNvY29zLmNvbS9jcmVhdG9yL21hbnVhbC9lbi9zY3JpcHRpbmcvcmVmZXJlbmNlL2F0dHJpYnV0ZXMuaHRtbFxyXG4vLyBMZWFybiBsaWZlLWN5Y2xlIGNhbGxiYWNrczpcclxuLy8gIC0gaHR0cHM6Ly9kb2NzLmNvY29zLmNvbS9jcmVhdG9yL21hbnVhbC9lbi9zY3JpcHRpbmcvbGlmZS1jeWNsZS1jYWxsYmFja3MuaHRtbFxyXG5cclxuaW1wb3J0IEdhbWVNYW5hZ2VyIGZyb20gXCIuL0dhbWVNYW5hZ2VyXCI7XHJcbmltcG9ydCB7IExRQ29sbGlkZSB9IGZyb20gXCIuL2xxX2NvbGxpZGVfc3lzdGVtL2xxX2NvbGxpZGVcIjtcclxuaW1wb3J0IE51bWJlclRvSW1hZ2UgZnJvbSBcIi4vTnVtYmVyVG9JbWFnZVwiO1xyXG5pbXBvcnQgeyBNaW5pR2FtZVNkayB9IGZyb20gXCIuL1Nkay9NaW5pR2FtZVNka1wiO1xyXG5cclxuY29uc3QgeyBjY2NsYXNzLCBwcm9wZXJ0eSB9ID0gY2MuX2RlY29yYXRvcjtcclxuXHJcblxyXG5cclxuQGNjY2xhc3NcclxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgTWFwQ29ucm9sZXIgZXh0ZW5kcyBjYy5Db21wb25lbnQge1xyXG4gICAgc3RhdGljIF9pbnN0YW5jZTogYW55O1xyXG5cclxuXHJcbiAgICBAcHJvcGVydHkoeyB0eXBlOiBbY2MuUHJlZmFiXSwgdG9vbHRpcDogXCLmlrnlnZfmlbDnu4RcIiB9KVxyXG4gICAgQmxvY2tfQXJyYXk6IEFycmF5PGNjLlByZWZhYj4gPSBbXTtcclxuXHJcbiAgICBAcHJvcGVydHkoeyB0eXBlOiBbY2MuUHJlZmFiXSwgdG9vbHRpcDogXCLmlrnlnZfpgZPlhbfmlbDnu4RcIiB9KVxyXG4gICAgQmxvY2tfUHJvcDogQXJyYXk8Y2MuUHJlZmFiPiA9IFtdO1xyXG5cclxuICAgIEBwcm9wZXJ0eShjYy5QcmVmYWIpXHJcbiAgICBNYXBCbG9ja1ByZWZhYjogY2MuUHJlZmFiID0gbnVsbDtcclxuXHJcbiAgICBAcHJvcGVydHkoeyB0eXBlOiBbY2MuU3ByaXRlQXRsYXNdLCB0b29sdGlwOiBcIuaWueWdl+minOiJslwiIH0pXHJcbiAgICBCbG9ja19Db2xvcjogQXJyYXk8Y2MuU3ByaXRlQXRsYXM+ID0gW107XHJcblxyXG5cclxuICAgIEBwcm9wZXJ0eSh7IHR5cGU6IFtjYy5QcmVmYWJdLCB0b29sdGlwOiBcIuWimeWjgeaVsOe7hFwiIH0pXHJcbiAgICBXYWxsX1ByZWZhYjogQXJyYXk8Y2MuUHJlZmFiPiA9IFtdO1xyXG5cclxuXHJcblxyXG4gICAgQHByb3BlcnR5KGNjLlByZWZhYilcclxuICAgIHdhbGxUdXJuUHJlZmFiOiBjYy5QcmVmYWIgPSBudWxsO1xyXG5cclxuICAgIEBwcm9wZXJ0eShjYy5CdXR0b24pXHJcbiAgICB0aW1lQnRuOiBjYy5CdXR0b24gPSBudWxsO1xyXG4gICAgQHByb3BlcnR5KGNjLkJ1dHRvbilcclxuICAgIGRlc3Ryb3lCdG46IGNjLkJ1dHRvbiA9IG51bGw7XHJcbiAgICBAcHJvcGVydHkoY2MuQnV0dG9uKVxyXG4gICAgbWFnaWNCdG46IGNjLkJ1dHRvbiA9IG51bGw7XHJcblxyXG4gICAgQHByb3BlcnR5KGNjLk5vZGUpXHJcbiAgICBtYXNrOiBjYy5Ob2RlID0gbnVsbDtcclxuXHJcbiAgICBAcHJvcGVydHkoY2MuTGFiZWwpXHJcbiAgICBpY2VMYWJlbDogY2MuTGFiZWwgPSBudWxsO1xyXG4gICAgQHByb3BlcnR5KGNjLkxhYmVsKVxyXG4gICAgaGFtbWVyTGFiZWw6IGNjLkxhYmVsID0gbnVsbDtcclxuICAgIEBwcm9wZXJ0eShjYy5MYWJlbClcclxuICAgIG1hZ2ljTGFiZWw6IGNjLkxhYmVsID0gbnVsbDtcclxuXHJcbiAgICBAcHJvcGVydHkoY2MuTm9kZSlcclxuICAgIG1hZ2ljTWFzazogY2MuTm9kZSA9IG51bGw7XHJcblxyXG4gICAgQHByb3BlcnR5KGNjLk5vZGUpXHJcbiAgICBoYW1tZXJNYXNrOiBjYy5Ob2RlID0gbnVsbDtcclxuXHJcbiAgICBAcHJvcGVydHkoY2MuTm9kZSlcclxuICAgIGZyZWV6ZU1hc2s6IGNjLk5vZGUgPSBudWxsO1xyXG5cclxuXHJcbiAgICBAcHJvcGVydHkoY2MuTm9kZSlcclxuICAgIGNvaW5Qb3A6IGNjLk5vZGUgPSBudWxsO1xyXG5cclxuICAgIHRpbWVMYWJlbDogY2MuTm9kZSA9IG51bGw7XHJcbiAgICBsZXZlbExhYmVsOiBjYy5Ob2RlID0gbnVsbDtcclxuXHJcbiAgICBuZXdfbW9kZTogbnVtYmVyID0gMDtcclxuICAgIG1hcFdpZHRoOiBudW1iZXIgPSAwO1xyXG4gICAgbWFwSGVpZ2h0OiBudW1iZXIgPSAwO1xyXG4gICAgd2FsbE51bTogbnVtYmVyID0gMDtcclxuICAgIGJsb2NrTnVtOiBudW1iZXIgPSAwO1xyXG4gICAgbWFwQmxvY2tzV2FsbDogYW55OyAgICAgIC8v5Zyw5Zu+55qE5omA5pyJ5bqV5Z2XXHJcbiAgICBtYXBJbmZvOiBhbnk7ICAgICAgIC8v5Zyw5Zu+6Zmk5LqG5bqV5Z2X55qE5YW25LuW5L+h5oGvXHJcbiAgICBibG9ja3M6IGFueTsgICAgICAgIC8v5pa55Z2X5pWw57uEXHJcbiAgICB3YWxsSW5mbzogYW55OyAgICAgIC8v5aKZ5aOB5pWw57uEXHJcbiAgICB3YWxsQXJyYXk6IGFueTsgICAgICAvL1xyXG4gICAgb3BlbldhbGw6IGFueTsgICAgICAvL+W8gOWFs+WimeaVsOe7hFxyXG4gICAgZnJlZXplV2FsbDogYW55OyAgICAvL+WGu+e7k+WimeaVsOe7hFxyXG4gICAgcmlzZUZhbGxCbGNvazogYW55OyAgLy/ljYfpmY3lnLDlnZfmlbDnu4RcclxuICAgIHNjaGVkdWxlQ2FsbGJhY2s6IGFueTsvL+WAkuiuoeaXtueUqFxyXG4gICAgaG9tZUNhblRvdWNoOiBib29sZWFuID0gdHJ1ZTsvL+aMiemSruWPr+eUqOeKtuaAgVxyXG4gICAgYWdhaW5DYW5Ub3VjaDogYm9vbGVhbiA9IHRydWU7Ly/ph43njqnmjInpkq7lj6/ku6XnlKjnirbmgIFcclxuICAgIGdhbWVPdmVyOiBib29sZWFuID0gZmFsc2U7Ly/muLjmiI/nu5PmnZ/nirbmgIFcclxuICAgIGdhbWVXaW46IGJvb2xlYW4gPSBmYWxzZTsvL+a4uOaIj+iDnOWIqeeKtuaAgVxyXG4gICAgZ2FtZVN0YXJ0OiBib29sZWFuID0gZmFsc2U7Ly/muLjmiI/lvIDlp4vnirbmgIFcclxuICAgIHRpbWVOdW1iZXI6IG51bWJlciA9IDA7IC8v5ri45oiP5pe26Ze0IOeUqOS6juWAkuiuoeaXtlxyXG4gICAgY291bnRfVGltZTogbnVtYmVyID0gMDsgLy/nlKjkuo7nu5/orqHmgLvmuLjmiI/ml7bplb9cclxuICAgIGFkZF9UaW1lOiBudW1iZXIgPSAwOyAgIC8v5aSN5rS75pe26Ze0XHJcbiAgICBtYXBCbG9ja0FycmF5OiBhbnk7ICAvL+WcsOWbvueahOaJgOacieagvOWtkOeKtuaAgeWtmOWCqFxyXG4gICAgcGF1c2U6IGJvb2xlYW4gPSBmYWxzZTsvL+aaguWBnOeKtuaAgVxyXG4gICAgaGFtbWVyOiBib29sZWFuID0gZmFsc2U7Ly/plKTlrZDnirbmgIFcclxuICAgIGZyZWV6ZUFycmF5OiBhbnk7IC8v5Ya757uTXHJcbiAgICBsb2Fja0FycmF5OiBhbnk7IC8v5LiK6ZSBXHJcbiAgICBwYXJ0aWNsZUVmZmVjdHM6IGNjLlBhcnRpY2xlQXNzZXRbXTtcclxuICAgIC8vIGxlZnREb29yczogW107IC8v5bem6ZeoXHJcbiAgICByaWdodERvb3JzOiBhbnk7IC8v5Y+z6ZeoXHJcbiAgICB0b3BEb29yczogYW55OyAvL+S4iumXqFxyXG4gICAgYm90dG9tRG9vcnM6IGFueTsgLy/kuIvpl6hcclxuICAgIGxlZnREb29yczogYW55O1xyXG5cclxuXHJcbiAgICAvLyBtYXBJbmZvOiBudW1iZXJbXVtdID0gW107XHJcblxyXG4gICAgb25Mb2FkKCkge1xyXG5cclxuICAgICAgICBjYy5meC5HYW1lQ29uZmlnLkdNX0lORk8ucmV2aWV3ID0gMDtcclxuICAgICAgICBjYy5meC5HYW1lQ29uZmlnLkdNX0lORk8uZ2FtZVN0YXRlID0gdHJ1ZTtcclxuICAgICAgICB0aGlzLm1hc2sub3BhY2l0eSA9IDA7XHJcbiAgICAgICAgdGhpcy5ub2RlLmdldENoaWxkQnlOYW1lKFwiQWRoZXNpdmVcIikuekluZGV4ID0gNTAwO1xyXG4gICAgICAgIGNjLmdhbWUuc2V0RnJhbWVSYXRlKDYzKTtcclxuICAgICAgICBjYy5meC5BdWRpb01hbmFnZXIuX2luc3RhbmNlLnBsYXlFZmZlY3QoXCJ6aHVhbjJcIiwgbnVsbCk7XHJcbiAgICAgICAgdGhpcy5ub2RlLnBhcmVudC5wYXJlbnQucGFyZW50LmdldENoaWxkQnlOYW1lKFwiemh1YW5jaGFuZ1wiKS5hY3RpdmUgPSB0cnVlO1xyXG4gICAgICAgIHRoaXMubm9kZS5wYXJlbnQucGFyZW50LnBhcmVudC5nZXRDaGlsZEJ5TmFtZShcInpodWFuY2hhbmdcIikuZ2V0Q29tcG9uZW50KHNwLlNrZWxldG9uKS5zZXRBbmltYXRpb24oMSwgXCJkb3duXCIsIGZhbHNlKTtcclxuICAgICAgICB0aGlzLm5vZGUucGFyZW50LnBhcmVudC5wYXJlbnQuZ2V0Q2hpbGRCeU5hbWUoXCJ6aHVhbmNoYW5nXCIpLmdldENvbXBvbmVudChzcC5Ta2VsZXRvbikuc2V0Q29tcGxldGVMaXN0ZW5lcigoZW50cnkpID0+IHtcclxuICAgICAgICAgICAgaWYgKGVudHJ5LmFuaW1hdGlvbi5uYW1lID09PSBcImRvd25cIikge1xyXG4gICAgICAgICAgICAgICAgLy8g5Yqo55S75pKt5pS+57uT5p2f5ZCO5omn6KGM55qE6YC76L6RXHJcbiAgICAgICAgICAgICAgICB0aGlzLm5vZGUucGFyZW50LnBhcmVudC5wYXJlbnQuZ2V0Q2hpbGRCeU5hbWUoXCJ6aHVhbmNoYW5nXCIpLmFjdGl2ZSA9IGZhbHNlO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfSk7XHJcbiAgICAgICAgdGhpcy5ibG9ja3MgPSBbXTtcclxuICAgICAgICB0aGlzLmxlZnREb29ycyA9IFtdOyAvL+W3pumXqFxyXG4gICAgICAgIHRoaXMucmlnaHREb29ycyA9IFtdOyAvL+WPs+mXqFxyXG4gICAgICAgIHRoaXMudG9wRG9vcnMgPSBbXTsgLy/kuIrpl6hcclxuICAgICAgICB0aGlzLmJvdHRvbURvb3JzID0gW107IC8v5LiL6ZeoXHJcbiAgICAgICAgdGhpcy5nYW1lV2luID0gZmFsc2U7XHJcbiAgICAgICAgdGhpcy5nYW1lT3ZlciA9IGZhbHNlO1xyXG4gICAgICAgIHRoaXMuZ2FtZVN0YXJ0ID0gZmFsc2U7XHJcbiAgICAgICAgdGhpcy5ob21lQ2FuVG91Y2ggPSB0cnVlO1xyXG4gICAgICAgIHRoaXMuYWdhaW5DYW5Ub3VjaCA9IHRydWU7XHJcbiAgICAgICAgdGhpcy5uZXdfbW9kZSA9IDA7XHJcbiAgICAgICAgdGhpcy5jb3VudF9UaW1lID0gMDtcclxuICAgICAgICB0aGlzLmFkZF9UaW1lID0gMDtcclxuXHJcblxyXG4gICAgICAgIHRoaXMuaWNlTGFiZWwuc3RyaW5nID0gY2MuZnguR2FtZUNvbmZpZy5HTV9JTkZPLmZyZWV6ZUFtb3VudC50b1N0cmluZygpO1xyXG4gICAgICAgIHRoaXMuaGFtbWVyTGFiZWwuc3RyaW5nID0gY2MuZnguR2FtZUNvbmZpZy5HTV9JTkZPLmhhbW1lckFtb3VudC50b1N0cmluZygpO1xyXG4gICAgICAgIHRoaXMubWFnaWNMYWJlbC5zdHJpbmcgPSBjYy5meC5HYW1lQ29uZmlnLkdNX0lORk8ubWFnaWNBbW91bnQudG9TdHJpbmcoKTtcclxuXHJcbiAgICAgICAgLy8gY2MuZ2FtZS5hZGRQZXJzaXN0Um9vdE5vZGUodGhpcy5ub2RlKTtcclxuICAgICAgICBNYXBDb25yb2xlci5faW5zdGFuY2UgPSB0aGlzO1xyXG4gICAgfVxyXG5cclxuICAgIHN0YXJ0KCkge1xyXG4gICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICAgICAgICBjYy5kaXJlY3Rvci5wcmVsb2FkU2NlbmUoXCJIb21lU2NlbmVcIiwgKGVyciwgYXNzZXQpID0+IHtcclxuICAgICAgICAgICAgICAgIGlmIChlcnIpIHtcclxuICAgICAgICAgICAgICAgICAgICBjb25zb2xlLmVycm9yKCfliqjmgIHliqDovb0gSG9tZVNjZW5lIOWksei0pTonLCBlcnIpO1xyXG4gICAgICAgICAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgfSwgMTAwMCk7XHJcbiAgICAgICAgLy8gY29uc29sZS5sb2coXCLov5vlhaVHYW1lU2NlbmVcIik7XHJcbiAgICAgICAgdGhpcy5CbG9ja19BcnJheSA9IEdhbWVNYW5hZ2VyLl9pbnN0YW5jZS5CbG9ja19BcnJheTtcclxuICAgICAgICB0aGlzLldhbGxfUHJlZmFiID0gR2FtZU1hbmFnZXIuX2luc3RhbmNlLldhbGxfUHJlZmFiO1xyXG4gICAgICAgIHRoaXMuQmxvY2tfQ29sb3IgPSBHYW1lTWFuYWdlci5faW5zdGFuY2UuQmxvY2tfQ29sb3I7XHJcbiAgICAgICAgLy8gdGhpcy5wYXJ0aWNsZUVmZmVjdHMgPSBHYW1lTWFuYWdlci5faW5zdGFuY2UucGFydGljbGVFZmZlY3RzO1xyXG5cclxuICAgICAgICB0aGlzLmluaXRNYXAoKTtcclxuXHJcbiAgICB9XHJcblxyXG4gICAgc3RhcnRVcGRhdGUoKSB7XHJcbiAgICAgICAgaWYgKHRoaXMuZ2FtZVN0YXJ0ID09IGZhbHNlKSB7XHJcbiAgICAgICAgICAgIHRoaXMuZ2FtZVN0YXJ0ID0gdHJ1ZTtcclxuICAgICAgICAgICAgLy/lj5HpgIHmlbDmlbDkuovku7bigJTigJTov5vlhaXlhbPljaFcclxuICAgICAgICAgICAgY29uc29sZS5sb2coXCLlh4blpIfov5vlhaXkuIvkuIDlhbMs5Y+R6YCB5LiL5LiA5YWz6L+b5YWlXCIpO1xyXG4gICAgICAgICAgICBjYy5meC5HYW1lVG9vbC5zaHVzaHVfVHJhY2soXCJlbnRlcl9zdGFnZVwiKTtcclxuICAgICAgICAgICAgdGhpcy5zdGFydFRpbWVDdXREb3duKCk7XHJcbiAgICAgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdGhpcy5ibG9ja3MubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICAgICAgICAgIGlmICh0aGlzLmJsb2Nrc1tpXS5nZXRDb21wb25lbnQoXCJCbG9ja1wiKS50eXBlID09IDYpIHtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLmJsb2Nrc1tpXS5nZXRDaGlsZEJ5TmFtZShcImJvb21cIikuZ2V0Q29tcG9uZW50KFwiQm9vbVwiKS5zdGFydEJvb20oKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBpbml0TWFwKCkge1xyXG4gICAgICAgIC8vIHRoaXMubm9kZS5nZXRDaGlsZEJ5TmFtZShcIldhbGxcIikuekluZGV4ID0gMTA7XHJcbiAgICAgICAgdGhpcy50aW1lTGFiZWwgPSB0aGlzLm5vZGUucGFyZW50LmdldENoaWxkQnlOYW1lKFwiVG9wXCIpLmdldENoaWxkQnlOYW1lKFwidGltZVwiKTtcclxuICAgICAgICB0aGlzLmxldmVsTGFiZWwgPSB0aGlzLm5vZGUucGFyZW50LmdldENoaWxkQnlOYW1lKFwiVG9wXCIpLmdldENoaWxkQnlOYW1lKFwibGV2ZWxcIik7XHJcbiAgICAgICAgdGhpcy50aW1lTnVtYmVyID0gY2MuZnguR2FtZUNvbmZpZy5MRVZFTF9JTkZPWzBdLnRpbWU7XHJcblxyXG4gICAgICAgIHRoaXMuY291bnRfVGltZSA9IDA7XHJcbiAgICAgICAgdGhpcy5hZGRfVGltZSA9IDA7XHJcbiAgICAgICAgTnVtYmVyVG9JbWFnZS5nZXRUaW1lTWFyZ2luKHRoaXMudGltZU51bWJlciwgNTAsIFwidGltZV9cIiwgdGhpcy50aW1lTGFiZWwpXHJcbiAgICAgICAgLy8gdmFyIHRpbWVUZW1wID0gY2MuZnguR2FtZVRvb2wuZ2V0VGltZU1hcmdpbih0aGlzLnRpbWVOdW1iZXIpO1xyXG4gICAgICAgIC8vIHRoaXMudGltZUxhYmVsLnN0cmluZyA9IHRpbWVUZW1wLnRvU3RyaW5nKCk7XHJcbiAgICAgICAgTnVtYmVyVG9JbWFnZS5udW1iZXJUb0ltYWdlTm9kZXMoKGNjLmZ4LkdhbWVDb25maWcuR01fSU5GTy5sZXZlbCArIDEpLCA1MCwgMjAsIFwibGV2ZWxfXCIsIHRoaXMubGV2ZWxMYWJlbCwgZmFsc2UpXHJcblxyXG4gICAgICAgIC8vdGhpcy5zdGFydFRpbWVDdXREb3duKCk7XHJcblxyXG4gICAgICAgIHRoaXMubWFwV2lkdGggPSBjYy5meC5HYW1lQ29uZmlnLkxFVkVMX0lORk9bMF0ubWFwWzBdO1xyXG4gICAgICAgIHRoaXMubWFwSGVpZ2h0ID0gY2MuZnguR2FtZUNvbmZpZy5MRVZFTF9JTkZPWzBdLm1hcFsxXTtcclxuICAgICAgICBsZXQgZ2FwID0gY2MuZnguR2FtZUNvbmZpZy5MRVZFTF9JTkZPWzBdLmdhcDtcclxuICAgICAgICBsZXQgcmlzZWZhbGwgPSBjYy5meC5HYW1lQ29uZmlnLkxFVkVMX0lORk9bMF0ucmlzZWZhbGw7XHJcblxyXG4gICAgICAgIHRoaXMucGF1c2UgPSBmYWxzZTtcclxuICAgICAgICB0aGlzLmhhbW1lciA9IGZhbHNlO1xyXG4gICAgICAgIHRoaXMud2FsbE51bSA9IDA7XHJcbiAgICAgICAgdGhpcy5zZXRNYXBJbmZvKCk7XHJcbiAgICAgICAgdGhpcy5ibG9ja3MgPSBbXTtcclxuICAgICAgICB0aGlzLm1hcEJsb2Nrc1dhbGwgPSBbXTtcclxuICAgICAgICB0aGlzLm1hcEluZm8gPSBbXTtcclxuICAgICAgICB0aGlzLndhbGxJbmZvID0gW107XHJcbiAgICAgICAgdGhpcy5vcGVuV2FsbCA9IFtdO1xyXG4gICAgICAgIHRoaXMud2FsbEFycmF5ID0gW107XHJcbiAgICAgICAgdGhpcy5mcmVlemVXYWxsID0gW107XHJcbiAgICAgICAgdGhpcy5yaXNlRmFsbEJsY29rID0gW107XHJcbiAgICAgICAgdGhpcy5tYXBCbG9ja0FycmF5ID0gW107XHJcbiAgICAgICAgdGhpcy5mcmVlemVBcnJheSA9IFtdO1xyXG4gICAgICAgIHRoaXMubG9hY2tBcnJheSA9IFtdO1xyXG4gICAgICAgIHRoaXMuY291bnRfVGltZSA9IDA7XHJcbiAgICAgICAgdGhpcy5hZGRfVGltZSA9IDA7XHJcblxyXG5cclxuICAgICAgICBsZXQgc3RhcnRYID0gdGhpcy5tYXBXaWR0aCAlIDIgPT0gMCA/IC0odGhpcy5tYXBXaWR0aCAtIDEpICogNjAgOiAtKHRoaXMubWFwV2lkdGggLSAxKSAqIDYwO1xyXG4gICAgICAgIGxldCBzdGFydFkgPSB0aGlzLm1hcEhlaWdodCAlIDIgPT0gMCA/IC0odGhpcy5tYXBIZWlnaHQgLSAxKSAqIDYwIDogLSh0aGlzLm1hcEhlaWdodCAtIDEpICogNjA7XHJcbiAgICAgICAgLy8gc3RhcnRYID0odGhpcy5tYXBXaWR0aC0xKSo2MCArIDYwO1xyXG4gICAgICAgIC8vIHN0YXJ0WSA9LSh0aGlzLm1hcEhlaWdodC0xKSo2MCAtIDYwO1xyXG5cclxuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRoaXMubWFwV2lkdGg7IGkrKykge1xyXG4gICAgICAgICAgICB0aGlzLm1hcEJsb2Nrc1dhbGxbaV0gPSBbXTtcclxuXHJcbiAgICAgICAgICAgIGZvciAobGV0IGogPSAwOyBqIDwgdGhpcy5tYXBIZWlnaHQ7IGorKykge1xyXG4gICAgICAgICAgICAgICAgbGV0IGJsb2NrID0gY2MuaW5zdGFudGlhdGUodGhpcy5NYXBCbG9ja1ByZWZhYik7XHJcbiAgICAgICAgICAgICAgICBibG9jay5wYXJlbnQgPSB0aGlzLm5vZGUuZ2V0Q2hpbGRCeU5hbWUoXCJtYXBCbG9ja1wiKTtcclxuICAgICAgICAgICAgICAgIGJsb2NrLmdldENvbXBvbmVudChcIk1hcEJsb2NrXCIpLmluaXQoaSwgaik7XHJcbiAgICAgICAgICAgICAgICAvLyBibG9jay5nZXRDaGlsZEJ5TmFtZShcIm51bVwiKS5nZXRDb21wb25lbnQoY2MuTGFiZWwpLnN0cmluZyA9IGkgKyBcIjpcIiArIGo7XHJcbiAgICAgICAgICAgICAgICBibG9jay5zZXRQb3NpdGlvbihjYy52MihzdGFydFggKyBpICogMTIwLCBzdGFydFkgKyBqICogMTIwKSlcclxuICAgICAgICAgICAgICAgIGlmIChyaXNlZmFsbCAhPSBudWxsKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMubWFwUmlzZUZhbGwoY2MudjIoaSwgaiksIHJpc2VmYWxsLCBibG9jaykpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5yaXNlRmFsbEJsY29rLnB1c2goYmxvY2spO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIGlmIChnYXAgIT0gbnVsbCkge1xyXG4gICAgICAgICAgICAgICAgICAgIGlmICghdGhpcy5tYXBHYXAoY2MudjIoaSwgaiksIGdhcCkgfHwgaSA9PSAwIHx8IGkgPT0gdGhpcy5tYXBXaWR0aCAtIDFcclxuICAgICAgICAgICAgICAgICAgICAgICAgfHwgaiA9PSAwIHx8IGogPT0gdGhpcy5tYXBIZWlnaHQgLSAxKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGJsb2NrLm9wYWNpdHkgPSAyNTQ7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGJsb2NrLnJlbW92ZUNvbXBvbmVudChjYy5TcHJpdGUpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBibG9jay5yZW1vdmVBbGxDaGlsZHJlbigpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLndhbGxJbmZvLnB1c2goYmxvY2spO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICBlbHNlIHRoaXMubWFwSW5mby5wdXNoKGJsb2NrKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICAgIGlmIChpID09IDAgfHwgaSA9PSB0aGlzLm1hcFdpZHRoIC0gMVxyXG4gICAgICAgICAgICAgICAgICAgICAgICB8fCBqID09IDAgfHwgaiA9PSB0aGlzLm1hcEhlaWdodCAtIDEpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgYmxvY2sub3BhY2l0eSA9IDI1NDtcclxuICAgICAgICAgICAgICAgICAgICAgICAgYmxvY2sucmVtb3ZlQ29tcG9uZW50KGNjLlNwcml0ZSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGJsb2NrLnJlbW92ZUFsbENoaWxkcmVuKCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMud2FsbEluZm8ucHVzaChibG9jayk7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIGVsc2UgdGhpcy5tYXBJbmZvLnB1c2goYmxvY2spO1xyXG4gICAgICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgICAgIHRoaXMubWFwQmxvY2tzV2FsbFtpXS5wdXNoKGJsb2NrKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgdGhpcy53YWxsSW5pdCgpO1xyXG4gICAgICAgIHRoaXMuYmxvY2tJbml0KCk7XHJcblxyXG4gICAgfVxyXG5cclxuICAgIC8v5Yib5bu65pa55Z2XXHJcbiAgICAvLyAuLi4g5bey5pyJ5Luj56CBIC4uLlxyXG5cclxuICAgIC8v5Yib5bu65pa55Z2XXHJcbiAgICAvLyAuLi4g5bey5pyJ5Luj56CBIC4uLlxyXG5cclxuXHJcblxyXG5cclxuICAgIGJsb2NrSW5pdCgpIHtcclxuICAgICAgICBsZXQgYmxvY2tBcnJheSA9IGNjLmZ4LkdhbWVDb25maWcuQkxPQ0tfSU5GT1swXTtcclxuICAgICAgICBibG9ja0FycmF5ID0gdGhpcy5zb3J0QmxvY2soYmxvY2tBcnJheSk7XHJcbiAgICAgICAgY29uc29sZS5sb2coXCLliJvlu7rmlrnlnZdcIiwgYmxvY2tBcnJheSk7XHJcbiAgICAgICAgbGV0IGluZGV4ID0gMDsgLy8g5b2T5YmN6KaB5Yib5bu655qE5pa55Z2X57Si5byVXHJcbiAgICAgICAgbGV0IEJMT0NLU19QRVJfRlJBTUUgPSAxOyAvLyDliJ3lp4vmr4/luKfliJvlu7rnmoTmlrnlnZfmlbDph49cclxuICAgICAgICBjb25zdCBNQVhfUEVSX0ZSQU1FID0gMTA7IC8vIOavj+W4p+acgOWkp+WIm+W7uuaVsOmHj1xyXG4gICAgICAgIGNvbnN0IE1JTl9QRVJfRlJBTUUgPSAxOyAvLyDmr4/luKfmnIDlsI/liJvlu7rmlbDph49cclxuXHJcbiAgICAgICAgY29uc3QgY3JlYXRlQmxvY2tzID0gKCkgPT4ge1xyXG4gICAgICAgICAgICBjb25zdCBzdGFydFRpbWUgPSBwZXJmb3JtYW5jZS5ub3coKTtcclxuICAgICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBCTE9DS1NfUEVSX0ZSQU1FICYmIGluZGV4IDwgYmxvY2tBcnJheS5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgICAgICAgICAgbGV0IGJsb2NrSW5mbyA9IGJsb2NrQXJyYXlbaW5kZXhdO1xyXG4gICAgICAgICAgICAgICAgLy8g57yT5a2YIEJsb2NrX0FycmF5IOiuv+mXrlxyXG4gICAgICAgICAgICAgICAgY29uc3QgYmxvY2tQcmVmYWIgPSB0aGlzLkJsb2NrX0FycmF5W2Jsb2NrSW5mby5ibG9ja107XHJcbiAgICAgICAgICAgICAgICBsZXQgYmxvY2sgPSBjYy5pbnN0YW50aWF0ZShibG9ja1ByZWZhYik7XHJcbiAgICAgICAgICAgICAgICBibG9jay5wYXJlbnQgPSB0aGlzLm5vZGU7XHJcbiAgICAgICAgICAgICAgICBibG9jay5zZXRQb3NpdGlvbihjYy52MihibG9ja0luZm8ucG9zaXRpb24ueCwgYmxvY2tJbmZvLnBvc2l0aW9uLnkpKTtcclxuICAgICAgICAgICAgICAgIGlmIChibG9ja0luZm8uYmxvY2sgIT0gMjMpIHtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLmJsb2NrTnVtICs9IDE7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5ibG9ja3MucHVzaChibG9jayk7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKGJsb2NrSW5mby50eXBlID09IDEpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGluZm8gPSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZDogYmxvY2tJbmZvLmlkICsgMSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJsb2NrOiBibG9ja0luZm8uYmxvY2ssXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb2xvcjogYmxvY2tJbmZvLnN0YWNraW5nLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZTogMTAsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwb3NpdGlvbjogYmxvY2tJbmZvLnBvc2l0aW9uLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhY2tpbmc6IGJsb2NrSW5mby5jb2xvclxyXG4gICAgICAgICAgICAgICAgICAgICAgICB9O1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyDnvJPlrZggQmxvY2tfQXJyYXkg6K6/6ZeuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGJsb2NrVXBQcmVmYWIgPSB0aGlzLkJsb2NrX0FycmF5W2luZm8uYmxvY2tdO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBsZXQgYmxvY2tVcCA9IGNjLmluc3RhbnRpYXRlKGJsb2NrVXBQcmVmYWIpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBibG9ja1VwLnBhcmVudCA9IHRoaXMubm9kZTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgYmxvY2tVcC5zZXRQb3NpdGlvbihjYy52MihpbmZvLnBvc2l0aW9uLngsIGluZm8ucG9zaXRpb24ueSkpO1xyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5ibG9ja3MucHVzaChibG9ja1VwKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgYmxvY2suZ2V0Q29tcG9uZW50KFwiQmxvY2tcIikuaW5pdChibG9ja0luZm8sIG51bGwsIG51bGwsIGJsb2NrVXApO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBibG9ja1VwLmdldENvbXBvbmVudChcIkJsb2NrXCIpLmluaXQoaW5mbywgbnVsbCwgbnVsbCwgYmxvY2spO1xyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5ibG9ja051bSArPSAxO1xyXG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoYmxvY2tJbmZvLnR5cGUgPT0gOSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoYmxvY2tJbmZvLmFkaGVzaXZlVGltZSA8IDIpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluZGV4Kys7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICBpbmRleCsrO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBsZXQgaW5mbyA9IGJsb2NrQXJyYXlbaW5kZXhdO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyDnvJPlrZggQmxvY2tfQXJyYXkg6K6/6ZeuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGJsb2NrVXBQcmVmYWIgPSB0aGlzLkJsb2NrX0FycmF5W2luZm8uYmxvY2tdO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBsZXQgYmxvY2tVcCA9IGNjLmluc3RhbnRpYXRlKGJsb2NrVXBQcmVmYWIpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBibG9ja1VwLnBhcmVudCA9IHRoaXMubm9kZTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgYmxvY2tVcC5zZXRQb3NpdGlvbihjYy52MihpbmZvLnBvc2l0aW9uLngsIGluZm8ucG9zaXRpb24ueSkpO1xyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5ibG9ja3MucHVzaChibG9ja1VwKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgYmxvY2suZ2V0Q29tcG9uZW50KFwiQmxvY2tcIikuaW5pdChibG9ja0luZm8sIG51bGwsIG51bGwsIGJsb2NrVXAsIGZhbHNlKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBibG9ja1VwLmdldENvbXBvbmVudChcIkJsb2NrXCIpLmluaXQoaW5mbywgbnVsbCwgbnVsbCwgYmxvY2ssIHRydWUpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB9LCAxMDApO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmJsb2NrTnVtICs9IDE7XHJcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgYmxvY2suZ2V0Q29tcG9uZW50KFwiQmxvY2tcIikuaW5pdChibG9ja0luZm8pO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICAgIGJsb2NrLmdldENvbXBvbmVudChcIkJhcnJpZXJcIikuaW5pdChibG9ja0luZm8pO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgaW5kZXgrKztcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBjb25zdCBlbmRUaW1lID0gcGVyZm9ybWFuY2Uubm93KCk7XHJcbiAgICAgICAgICAgIGNvbnN0IGZyYW1lVGltZSA9IGVuZFRpbWUgLSBzdGFydFRpbWU7XHJcbiAgICAgICAgICAgIC8vIOWmguaenOW9k+WJjeW4p+aJp+ihjOaXtumXtOi/h+mVv++8jOWHj+Wwkeavj+W4p+WIm+W7uuaVsOmHj1xyXG4gICAgICAgICAgICBpZiAoZnJhbWVUaW1lID4gMTYpIHtcclxuICAgICAgICAgICAgICAgIEJMT0NLU19QRVJfRlJBTUUgPSBNYXRoLm1heChCTE9DS1NfUEVSX0ZSQU1FIC0gMSwgTUlOX1BFUl9GUkFNRSk7XHJcbiAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICBCTE9DS1NfUEVSX0ZSQU1FID0gTWF0aC5taW4oQkxPQ0tTX1BFUl9GUkFNRSArIDEsIE1BWF9QRVJfRlJBTUUpO1xyXG4gICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAvLyDlpoLmnpzov5jmnInmlrnlnZfmnKrliJvlu7rvvIzkuIvkuIDluKfnu6fnu63liJvlu7pcclxuICAgICAgICAgICAgaWYgKGluZGV4IDwgYmxvY2tBcnJheS5sZW5ndGgpIHtcclxuICAgICAgICAgICAgICAgIC8vIOS9v+eUqCBzY2hlZHVsZU9uY2Ug5Zyo5LiL5LiA5bin5omn6KGMIGNyZWF0ZUJsb2Nrc1xyXG4gICAgICAgICAgICAgICAgdGhpcy5zY2hlZHVsZU9uY2UoKCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgIGNyZWF0ZUJsb2NrcygpO1xyXG4gICAgICAgICAgICAgICAgfSwgMCk7XHJcbiAgICAgICAgICAgIH0gZWxzZSB7XHJcblxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfTtcclxuXHJcbiAgICAgICAgLy8g5byA5aeL5YiG5bin5Yib5bu65pa55Z2XXHJcbiAgICAgICAgY3JlYXRlQmxvY2tzKCk7XHJcbiAgICB9XHJcbiAgICAvL+e7meWIm+W7uuaWueWdl+aOkuW6j++8jOeUqOadpemZjeS9jmRyYXdjYWxsIOWQiOaJuVxyXG4gICAgc29ydEJsb2NrKGFsbEJsb2NrczogeyBjb2xvcjogbnVtYmVyOyBibG9jazogbnVtYmVyOyB0eXBlOiBudW1iZXIgfVtdKSB7XHJcbiAgICAgICAgcmV0dXJuIGFsbEJsb2Nrcy5zb3J0KChhLCBiKSA9PiB7XHJcbiAgICAgICAgICAgIC8vIOWFiOWkhOeQhiB0eXBlIOS4uiAxIOeahOaDheWGte+8jOWwhuWFtuaUvuWIsOacgOWQjlxyXG4gICAgICAgICAgICBpZiAoYS50eXBlID09PSAxICYmIGIudHlwZSAhPT0gMSkge1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIDE7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgaWYgKGEudHlwZSAhPT0gMSAmJiBiLnR5cGUgPT09IDEpIHtcclxuICAgICAgICAgICAgICAgIHJldHVybiAtMTtcclxuICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgLy8g5a+5IHR5cGUg5LiN5Li6IDAg55qE5YWD57Sg5oyJIHR5cGUg5o6S5bqPXHJcbiAgICAgICAgICAgIGlmIChhLnR5cGUgIT09IDAgJiYgYi50eXBlICE9PSAwKSB7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gYS50eXBlIC0gYi50eXBlO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGlmIChhLnR5cGUgIT09IDAgJiYgYi50eXBlID09PSAwKSB7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gMTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBpZiAoYS50eXBlID09PSAwICYmIGIudHlwZSAhPT0gMCkge1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIC0xO1xyXG4gICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAvLyDlho3lpITnkIYgYmxvY2sg5Li6IDIzIOeahOaDheWGte+8jOWwhuWFtuaUvuWIsOacgOWJjemdolxyXG4gICAgICAgICAgICBpZiAoYS5ibG9jayA9PT0gMjMgJiYgYi5ibG9jayAhPT0gMjMpIHtcclxuICAgICAgICAgICAgICAgIHJldHVybiAtMTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBpZiAoYS5ibG9jayAhPT0gMjMgJiYgYi5ibG9jayA9PT0gMjMpIHtcclxuICAgICAgICAgICAgICAgIHJldHVybiAxO1xyXG4gICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAvLyDlhbbkvZnmjIkgY29sb3Ig5Y2H5bqP5o6S5YiXXHJcbiAgICAgICAgICAgIHJldHVybiBhLmNvbG9yIC0gYi5jb2xvcjtcclxuICAgICAgICB9KTtcclxuICAgIH1cclxuXHJcblxyXG4gICAgLy/liJvlu7rlopnlo4FcclxuXHJcbiAgICB3YWxsSW5pdCgpIHtcclxuICAgICAgICBsZXQgaW5kZXggPSAwOyAvLyDlvZPliY3opoHliJvlu7rnmoTlopnlo4HntKLlvJVcclxuICAgICAgICBsZXQgV0FMTFNfUEVSX0ZSQU1FID0gMTsgLy8g5Yid5aeL5q+P5bin5Yib5bu655qE5aKZ5aOB5pWw6YePXHJcbiAgICAgICAgY29uc3QgTUFYX1BFUl9GUkFNRSA9IDEwOyAvLyDmr4/luKfmnIDlpKfliJvlu7rmlbDph49cclxuICAgICAgICBjb25zdCBNSU5fUEVSX0ZSQU1FID0gMTsgLy8g5q+P5bin5pyA5bCP5Yib5bu65pWw6YePXHJcblxyXG4gICAgICAgIGNvbnN0IGNyZWF0ZVdhbGxzID0gKCkgPT4ge1xyXG4gICAgICAgICAgICBjb25zdCBzdGFydFRpbWUgPSBwZXJmb3JtYW5jZS5ub3coKTtcclxuICAgICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBXQUxMU19QRVJfRlJBTUUgJiYgaW5kZXggPCB0aGlzLndhbGxJbmZvLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgICAgICAgICBsZXQgYmxvY2sgPSB0aGlzLndhbGxJbmZvW2luZGV4XTtcclxuICAgICAgICAgICAgICAgIGxldCBkaXIgPSB0aGlzLmdldFdsbERpcmFjdGlvbihcIndhbGxcIiwgY2MudjIoYmxvY2suZ2V0Q29tcG9uZW50KFwiTWFwQmxvY2tcIikucG9zWCwgYmxvY2suZ2V0Q29tcG9uZW50KFwiTWFwQmxvY2tcIikucG9zWSkpO1xyXG4gICAgICAgICAgICAgICAgaWYgKGRpciAhPSBudWxsKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5jcmVhdGVXYWxsKGRpciwgYmxvY2spO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgaW5kZXgrKztcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBjb25zdCBlbmRUaW1lID0gcGVyZm9ybWFuY2Uubm93KCk7XHJcbiAgICAgICAgICAgIGNvbnN0IGZyYW1lVGltZSA9IGVuZFRpbWUgLSBzdGFydFRpbWU7XHJcbiAgICAgICAgICAgIC8vIOWmguaenOW9k+WJjeW4p+aJp+ihjOaXtumXtOi/h+mVv++8jOWHj+Wwkeavj+W4p+WIm+W7uuaVsOmHj1xyXG4gICAgICAgICAgICBpZiAoZnJhbWVUaW1lID4gMTYpIHtcclxuICAgICAgICAgICAgICAgIFdBTExTX1BFUl9GUkFNRSA9IE1hdGgubWF4KFdBTExTX1BFUl9GUkFNRSAtIDEsIE1JTl9QRVJfRlJBTUUpO1xyXG4gICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgV0FMTFNfUEVSX0ZSQU1FID0gTWF0aC5taW4oV0FMTFNfUEVSX0ZSQU1FICsgMSwgTUFYX1BFUl9GUkFNRSk7XHJcbiAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgIC8vIOWmguaenOi/mOacieWimeWjgeacquWIm+W7uu+8jOS4i+S4gOW4p+e7p+e7reWIm+W7ulxyXG4gICAgICAgICAgICBpZiAoaW5kZXggPCB0aGlzLndhbGxJbmZvLmxlbmd0aCkge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5zY2hlZHVsZU9uY2UoKCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgIGNyZWF0ZVdhbGxzKCk7XHJcbiAgICAgICAgICAgICAgICB9LCAwKTtcclxuICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgIC8vIOaJgOacieWimeWjgeWIm+W7uuWujOaIkOWQju+8jOWIm+W7uuaLkOinkuiKgueCuVxyXG4gICAgICAgICAgICAgICAgdGhpcy5jcmVhdGVDb3JuZXJOb2RlcygpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfTtcclxuXHJcbiAgICAgICAgLy8g5byA5aeL5YiG5bin5Yib5bu65aKZ5aOBXHJcbiAgICAgICAgY3JlYXRlV2FsbHMoKTtcclxuICAgIH1cclxuXHJcbiAgICAvLyAuLi4g5bey5pyJ5Luj56CBIC4uLlxyXG5cclxuICAgIGdldFdsbERpcmFjdGlvbih0eXBlLCBwb2ludEEpIHtcclxuICAgICAgICBsZXQgZGlyID0gW107XHJcbiAgICAgICAgbGV0IHBvaW50QiA9IGNjLnYyKHBvaW50QS54ICsgMSwgcG9pbnRBLnkpO1xyXG4gICAgICAgIGxldCBwb2ludEMgPSBjYy52Mihwb2ludEEueCAtIDEsIHBvaW50QS55KTtcclxuICAgICAgICBsZXQgcG9pbnREID0gY2MudjIocG9pbnRBLngsIHBvaW50QS55ICsgMSk7XHJcbiAgICAgICAgbGV0IHBvaW50RSA9IGNjLnYyKHBvaW50QS54LCBwb2ludEEueSAtIDEpO1xyXG4gICAgICAgIGxldCBvcGFjaXR5ID0gMDtcclxuICAgICAgICBpZiAodHlwZSA9PSBcIndhbGxcIikgb3BhY2l0eSA9IDI1NTtcclxuICAgICAgICBpZiAodHlwZSA9PSBcInR1cm5cIikgb3BhY2l0eSA9IDI1MDtcclxuXHJcbiAgICAgICAgaWYgKHBvaW50Qi54IDwgdGhpcy5tYXBXaWR0aCkge1xyXG4gICAgICAgICAgICBpZiAodGhpcy5tYXBCbG9ja3NXYWxsW3BvaW50Qi54XVtwb2ludEIueV0ub3BhY2l0eSA9PSBvcGFjaXR5KSB7XHJcbiAgICAgICAgICAgICAgICBpZiAodHlwZSA9PSBcInR1cm5cIiAmJiB0aGlzLm1hcEJsb2Nrc1dhbGxbcG9pbnRCLnhdW3BvaW50Qi55XS5nZXRDb21wb25lbnQoXCJNYXBCbG9ja1wiKS5kaXJlY3Rpb24gPT0gXCJyaWdodFwiKSB7XHJcblxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgZWxzZSBkaXIucHVzaChcInJpZ2h0XCIpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmIChwb2ludEMueCA+PSAwKSB7XHJcbiAgICAgICAgICAgIGlmICh0aGlzLm1hcEJsb2Nrc1dhbGxbcG9pbnRDLnhdW3BvaW50Qy55XS5vcGFjaXR5ID09IG9wYWNpdHkpIHtcclxuICAgICAgICAgICAgICAgIGlmICh0eXBlID09IFwidHVyblwiICYmIHRoaXMubWFwQmxvY2tzV2FsbFtwb2ludEMueF1bcG9pbnRDLnldLmdldENvbXBvbmVudChcIk1hcEJsb2NrXCIpLmRpcmVjdGlvbiA9PSBcImxlZnRcIikge1xyXG5cclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIGVsc2UgZGlyLnB1c2goXCJsZWZ0XCIpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmIChwb2ludEQueSA8IHRoaXMubWFwSGVpZ2h0KSB7XHJcbiAgICAgICAgICAgIGlmICh0aGlzLm1hcEJsb2Nrc1dhbGxbcG9pbnRELnhdW3BvaW50RC55XS5vcGFjaXR5ID09IG9wYWNpdHkpIHtcclxuICAgICAgICAgICAgICAgIGlmICh0eXBlID09IFwidHVyblwiICYmIHRoaXMubWFwQmxvY2tzV2FsbFtwb2ludEQueF1bcG9pbnRELnldLmdldENvbXBvbmVudChcIk1hcEJsb2NrXCIpLmRpcmVjdGlvbiA9PSBcInVwXCIpIHtcclxuXHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBlbHNlIGRpci5wdXNoKFwidXBcIik7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKHBvaW50RS55ID49IDApIHtcclxuICAgICAgICAgICAgaWYgKHRoaXMubWFwQmxvY2tzV2FsbFtwb2ludEUueF1bcG9pbnRFLnldLm9wYWNpdHkgPT0gb3BhY2l0eSkge1xyXG4gICAgICAgICAgICAgICAgaWYgKHR5cGUgPT0gXCJ0dXJuXCIgJiYgdGhpcy5tYXBCbG9ja3NXYWxsW3BvaW50RS54XVtwb2ludEUueV0uZ2V0Q29tcG9uZW50KFwiTWFwQmxvY2tcIikuZGlyZWN0aW9uID09IFwiZG93blwiKSB7XHJcblxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgZWxzZSBkaXIucHVzaChcImRvd25cIik7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKGRpci5sZW5ndGggPiAyKSB7XHJcblxyXG4gICAgICAgICAgICByZXR1cm4gbnVsbDtcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKGRpci5sZW5ndGggPT0gMSkge1xyXG4gICAgICAgICAgICBpZiAodHlwZSA9PSBcIndhbGxcIilcclxuICAgICAgICAgICAgICAgIHJldHVybiBkaXJbMF07XHJcbiAgICAgICAgICAgIGVsc2VcclxuICAgICAgICAgICAgICAgIHJldHVybiBudWxsO1xyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIGlmIChkaXIubGVuZ3RoID09IDIpIHtcclxuICAgICAgICAgICAgcmV0dXJuIGRpclswXSArIGRpclsxXTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgY3JlYXRlQ29ybmVyTm9kZXMoKSB7XHJcbiAgICAgICAgLy8g5a6a5LmJ5ouQ6KeS5L2N572uXHJcbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0aGlzLndhbGxJbmZvLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgICAgIGxldCBibG9jayA9IHRoaXMud2FsbEluZm9baV07XHJcbiAgICAgICAgICAgIGlmIChibG9jay5vcGFjaXR5ICE9IDI1MCkge1xyXG4gICAgICAgICAgICAgICAgbGV0IGRpciA9IHRoaXMuZ2V0V2xsRGlyYWN0aW9uKFwidHVyblwiLCBjYy52MihibG9jay5nZXRDb21wb25lbnQoXCJNYXBCbG9ja1wiKS5wb3NYLCBibG9jay5nZXRDb21wb25lbnQoXCJNYXBCbG9ja1wiKS5wb3NZKSk7XHJcbiAgICAgICAgICAgICAgICBpZiAoZGlyICE9IG51bGwpIHtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLmNyZWF0ZVR1cm4oZGlyLCBibG9jaywgYmxvY2suZ2V0Q29tcG9uZW50KFwiTWFwQmxvY2tcIikucG9zWCwgYmxvY2suZ2V0Q29tcG9uZW50KFwiTWFwQmxvY2tcIikucG9zWSk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgfVxyXG5cclxuICAgIH1cclxuXHJcbiAgICBjcmVhdGVXYWxsKGRpcmVjdGlvbiwgbm9kZSkge1xyXG4gICAgICAgIGxldCB3YWxsID0gbnVsbDtcclxuICAgICAgICBub2RlLmdldENvbXBvbmVudChcIk1hcEJsb2NrXCIpLnNldERpcmFjdGlvbihkaXJlY3Rpb24pO1xyXG4gICAgICAgIHN3aXRjaCAoZGlyZWN0aW9uKSB7XHJcbiAgICAgICAgICAgIGNhc2UgXCJyaWdodFwiOlxyXG4gICAgICAgICAgICAgICAgbm9kZS5vcGFjaXR5ID0gMjUwO1xyXG4gICAgICAgICAgICAgICAgd2FsbCA9IGNjLmluc3RhbnRpYXRlKHRoaXMuV2FsbF9QcmVmYWJbNF0pO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5sZWZ0RG9vcnMucHVzaCh3YWxsKTtcclxuICAgICAgICAgICAgICAgIC8vIHdhbGwucGFyZW50ID0gdGhpcy5ub2RlLmdldENoaWxkQnlOYW1lKFwiV2FsbFwiKTtcclxuICAgICAgICAgICAgICAgIHdhbGwucGFyZW50ID0gdGhpcy5ub2RlO1xyXG4gICAgICAgICAgICAgICAgd2FsbC5zZXRQb3NpdGlvbihjYy52Mihub2RlLngsIG5vZGUueSkpO1xyXG4gICAgICAgICAgICAgICAgbm9kZS5vcGFjaXR5ID0gMjUwO1xyXG4gICAgICAgICAgICAgICAgd2FsbC5nZXRDaGlsZEJ5TmFtZShcIndhbGxcIikuZ2V0Q29tcG9uZW50KFwiV2FsbFwiKS5pbml0KG51bGwsIG5vZGUuZ2V0Q29tcG9uZW50KFwiTWFwQmxvY2tcIikucG9zWCwgbm9kZS5nZXRDb21wb25lbnQoXCJNYXBCbG9ja1wiKS5wb3NZLCBkaXJlY3Rpb24pO1xyXG4gICAgICAgICAgICAgICAgLy93YWxsLmdldENoaWxkQnlOYW1lKFwid2FsbFwiKS5nZXRDaGlsZEJ5TmFtZShcIm51bVwiKS5nZXRDb21wb25lbnQoY2MuTGFiZWwpLnN0cmluZyA9IHRoaXMud2FsbE51bS50b1N0cmluZygpO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5zZXREb29ySW5mbyh3YWxsLmdldENoaWxkQnlOYW1lKFwid2FsbFwiKSk7XHJcbiAgICAgICAgICAgICAgICB0aGlzLndhbGxOdW0gKz0gMTtcclxuICAgICAgICAgICAgICAgIGlmICh3YWxsLmdldENoaWxkQnlOYW1lKFwid2FsbFwiKS5nZXRDb21wb25lbnQoXCJXYWxsXCIpLnNwZWNpYWwgPT0gMilcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLm9wZW5XYWxsLnB1c2god2FsbCk7XHJcbiAgICAgICAgICAgICAgICBlbHNlIGlmICh3YWxsLmdldENoaWxkQnlOYW1lKFwid2FsbFwiKS5nZXRDb21wb25lbnQoXCJXYWxsXCIpLnNwZWNpYWwgPT0gMylcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLmZyZWV6ZVdhbGwucHVzaCh3YWxsKTtcclxuXHJcbiAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgY2FzZSBcImxlZnRcIjpcclxuICAgICAgICAgICAgICAgIG5vZGUub3BhY2l0eSA9IDI1MDtcclxuICAgICAgICAgICAgICAgIHdhbGwgPSBjYy5pbnN0YW50aWF0ZSh0aGlzLldhbGxfUHJlZmFiWzNdKTtcclxuICAgICAgICAgICAgICAgIC8vIHdhbGwucGFyZW50ID0gdGhpcy5ub2RlLmdldENoaWxkQnlOYW1lKFwiV2FsbFwiKTtcclxuICAgICAgICAgICAgICAgIHRoaXMucmlnaHREb29ycy5wdXNoKHdhbGwpO1xyXG4gICAgICAgICAgICAgICAgd2FsbC5wYXJlbnQgPSB0aGlzLm5vZGU7XHJcbiAgICAgICAgICAgICAgICB3YWxsLnNldFBvc2l0aW9uKGNjLnYyKG5vZGUueCwgbm9kZS55KSk7XHJcbiAgICAgICAgICAgICAgICB3YWxsLmdldENoaWxkQnlOYW1lKFwid2FsbFwiKS5nZXRDb21wb25lbnQoXCJXYWxsXCIpLmluaXQobnVsbCwgbm9kZS5nZXRDb21wb25lbnQoXCJNYXBCbG9ja1wiKS5wb3NYLCBub2RlLmdldENvbXBvbmVudChcIk1hcEJsb2NrXCIpLnBvc1ksIGRpcmVjdGlvbik7XHJcbiAgICAgICAgICAgICAgICB0aGlzLnNldERvb3JJbmZvKHdhbGwuZ2V0Q2hpbGRCeU5hbWUoXCJ3YWxsXCIpKTtcclxuICAgICAgICAgICAgICAgIC8vd2FsbC5nZXRDaGlsZEJ5TmFtZShcIndhbGxcIikuZ2V0Q2hpbGRCeU5hbWUoXCJudW1cIikuZ2V0Q29tcG9uZW50KGNjLkxhYmVsKS5zdHJpbmcgPSB0aGlzLndhbGxOdW0udG9TdHJpbmcoKTtcclxuICAgICAgICAgICAgICAgIHRoaXMud2FsbE51bSArPSAxO1xyXG4gICAgICAgICAgICAgICAgaWYgKHdhbGwuZ2V0Q2hpbGRCeU5hbWUoXCJ3YWxsXCIpLmdldENvbXBvbmVudChcIldhbGxcIikuc3BlY2lhbCA9PSAyKVxyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMub3BlbldhbGwucHVzaCh3YWxsKTtcclxuICAgICAgICAgICAgICAgIGVsc2UgaWYgKHdhbGwuZ2V0Q2hpbGRCeU5hbWUoXCJ3YWxsXCIpLmdldENvbXBvbmVudChcIldhbGxcIikuc3BlY2lhbCA9PSAzKVxyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZnJlZXplV2FsbC5wdXNoKHdhbGwpO1xyXG4gICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgIGNhc2UgXCJ1cFwiOlxyXG4gICAgICAgICAgICAgICAgbm9kZS5vcGFjaXR5ID0gMjUwO1xyXG4gICAgICAgICAgICAgICAgd2FsbCA9IGNjLmluc3RhbnRpYXRlKHRoaXMuV2FsbF9QcmVmYWJbNV0pO1xyXG5cclxuICAgICAgICAgICAgICAgIHRoaXMudG9wRG9vcnMucHVzaCh3YWxsKTtcclxuICAgICAgICAgICAgICAgIC8vIHdhbGwucGFyZW50ID0gdGhpcy5ub2RlLmdldENoaWxkQnlOYW1lKFwiV2FsbFwiKTtcclxuICAgICAgICAgICAgICAgIHdhbGwucGFyZW50ID0gdGhpcy5ub2RlO1xyXG4gICAgICAgICAgICAgICAgd2FsbC5zZXRQb3NpdGlvbihjYy52Mihub2RlLngsIG5vZGUueSkpO1xyXG5cclxuICAgICAgICAgICAgICAgIHdhbGwuZ2V0Q2hpbGRCeU5hbWUoXCJ3YWxsXCIpLmdldENvbXBvbmVudChcIldhbGxcIikuaW5pdChudWxsLCBub2RlLmdldENvbXBvbmVudChcIk1hcEJsb2NrXCIpLnBvc1gsIG5vZGUuZ2V0Q29tcG9uZW50KFwiTWFwQmxvY2tcIikucG9zWSwgZGlyZWN0aW9uKTtcclxuICAgICAgICAgICAgICAgIHRoaXMuc2V0RG9vckluZm8od2FsbC5nZXRDaGlsZEJ5TmFtZShcIndhbGxcIikpO1xyXG4gICAgICAgICAgICAgICAgLy93YWxsLmdldENoaWxkQnlOYW1lKFwid2FsbFwiKS5nZXRDaGlsZEJ5TmFtZShcIm51bVwiKS5nZXRDb21wb25lbnQoY2MuTGFiZWwpLnN0cmluZyA9IHRoaXMud2FsbE51bS50b1N0cmluZygpO1xyXG4gICAgICAgICAgICAgICAgdGhpcy53YWxsTnVtICs9IDE7XHJcbiAgICAgICAgICAgICAgICBpZiAod2FsbC5nZXRDaGlsZEJ5TmFtZShcIndhbGxcIikuZ2V0Q29tcG9uZW50KFwiV2FsbFwiKS5zcGVjaWFsID09IDIpXHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5vcGVuV2FsbC5wdXNoKHdhbGwpO1xyXG4gICAgICAgICAgICAgICAgZWxzZSBpZiAod2FsbC5nZXRDaGlsZEJ5TmFtZShcIndhbGxcIikuZ2V0Q29tcG9uZW50KFwiV2FsbFwiKS5zcGVjaWFsID09IDMpXHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5mcmVlemVXYWxsLnB1c2god2FsbCk7XHJcbiAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgY2FzZSBcImRvd25cIjpcclxuICAgICAgICAgICAgICAgIG5vZGUub3BhY2l0eSA9IDI1MDtcclxuICAgICAgICAgICAgICAgIHdhbGwgPSBjYy5pbnN0YW50aWF0ZSh0aGlzLldhbGxfUHJlZmFiWzBdKTtcclxuICAgICAgICAgICAgICAgIHRoaXMuYm90dG9tRG9vcnMucHVzaCh3YWxsKTtcclxuICAgICAgICAgICAgICAgIC8vIHdhbGwucGFyZW50ID0gdGhpcy5ub2RlLmdldENoaWxkQnlOYW1lKFwiV2FsbFwiKTtcclxuICAgICAgICAgICAgICAgIHdhbGwucGFyZW50ID0gdGhpcy5ub2RlO1xyXG4gICAgICAgICAgICAgICAgd2FsbC5zZXRQb3NpdGlvbihjYy52Mihub2RlLngsIG5vZGUueSkpO1xyXG4gICAgICAgICAgICAgICAgLy8gdGhpcy5zZXREb29ySW5mbyh3YWxsLmdldENoaWxkQnlOYW1lKFwid2FsbFwiKSk7XHJcbiAgICAgICAgICAgICAgICB3YWxsLmdldENoaWxkQnlOYW1lKFwid2FsbFwiKS5nZXRDb21wb25lbnQoXCJXYWxsXCIpLmluaXQobnVsbCwgbm9kZS5nZXRDb21wb25lbnQoXCJNYXBCbG9ja1wiKS5wb3NYLCBub2RlLmdldENvbXBvbmVudChcIk1hcEJsb2NrXCIpLnBvc1ksIGRpcmVjdGlvbik7XHJcbiAgICAgICAgICAgICAgICB0aGlzLnNldERvb3JJbmZvKHdhbGwuZ2V0Q2hpbGRCeU5hbWUoXCJ3YWxsXCIpKTtcclxuICAgICAgICAgICAgICAgIC8vd2FsbC5nZXRDaGlsZEJ5TmFtZShcIndhbGxcIikuZ2V0Q2hpbGRCeU5hbWUoXCJudW1cIikuZ2V0Q29tcG9uZW50KGNjLkxhYmVsKS5zdHJpbmcgPSB0aGlzLndhbGxOdW0udG9TdHJpbmcoKTtcclxuICAgICAgICAgICAgICAgIHRoaXMud2FsbE51bSArPSAxO1xyXG4gICAgICAgICAgICAgICAgaWYgKHdhbGwuZ2V0Q2hpbGRCeU5hbWUoXCJ3YWxsXCIpLmdldENvbXBvbmVudChcIldhbGxcIikuc3BlY2lhbCA9PSAyKVxyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMub3BlbldhbGwucHVzaCh3YWxsKTtcclxuICAgICAgICAgICAgICAgIGVsc2UgaWYgKHdhbGwuZ2V0Q2hpbGRCeU5hbWUoXCJ3YWxsXCIpLmdldENvbXBvbmVudChcIldhbGxcIikuc3BlY2lhbCA9PSAzKVxyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZnJlZXplV2FsbC5wdXNoKHdhbGwpO1xyXG4gICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgIGNhc2UgXCJ1cHJpZ2h0XCI6IGNhc2UgXCJyaWdodHVwXCI6XHJcbiAgICAgICAgICAgICAgICBub2RlLm9wYWNpdHkgPSAyNDk7XHJcbiAgICAgICAgICAgICAgICB3YWxsID0gY2MuaW5zdGFudGlhdGUodGhpcy5XYWxsX1ByZWZhYls3XSk7XHJcbiAgICAgICAgICAgICAgICAvLyB3YWxsLnBhcmVudCA9IHRoaXMubm9kZS5nZXRDaGlsZEJ5TmFtZShcIldhbGxcIik7XHJcbiAgICAgICAgICAgICAgICB3YWxsLnBhcmVudCA9IHRoaXMubm9kZTtcclxuICAgICAgICAgICAgICAgIHdhbGwuc2V0UG9zaXRpb24oY2MudjIobm9kZS54LCBub2RlLnkpKTtcclxuICAgICAgICAgICAgICAgIHdhbGwuY2hpbGRyZW5bMV0uZ2V0Q29tcG9uZW50KFwiV2FsbFwiKS5pbml0KG51bGwsIG5vZGUuZ2V0Q29tcG9uZW50KFwiTWFwQmxvY2tcIikucG9zWCwgbm9kZS5nZXRDb21wb25lbnQoXCJNYXBCbG9ja1wiKS5wb3NZLCBkaXJlY3Rpb24pO1xyXG4gICAgICAgICAgICAgICAgd2FsbC5jaGlsZHJlblsyXS5nZXRDb21wb25lbnQoXCJXYWxsXCIpLmluaXQobnVsbCwgbm9kZS5nZXRDb21wb25lbnQoXCJNYXBCbG9ja1wiKS5wb3NYLCBub2RlLmdldENvbXBvbmVudChcIk1hcEJsb2NrXCIpLnBvc1ksIGRpcmVjdGlvbik7XHJcbiAgICAgICAgICAgICAgICAvL3dhbGwuY2hpbGRyZW5bMF0uZ2V0Q2hpbGRCeU5hbWUoXCJudW1cIikuZ2V0Q29tcG9uZW50KGNjLkxhYmVsKS5zdHJpbmcgPSB0aGlzLndhbGxOdW0udG9TdHJpbmcoKTtcclxuICAgICAgICAgICAgICAgIHRoaXMuc2V0RG9vckluZm8od2FsbC5jaGlsZHJlblswXSk7XHJcbiAgICAgICAgICAgICAgICB0aGlzLndhbGxOdW0gKz0gMTtcclxuICAgICAgICAgICAgICAgIC8vd2FsbC5jaGlsZHJlblsxXS5nZXRDaGlsZEJ5TmFtZShcIm51bVwiKS5nZXRDb21wb25lbnQoY2MuTGFiZWwpLnN0cmluZyA9IHRoaXMud2FsbE51bS50b1N0cmluZygpO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5zZXREb29ySW5mbyh3YWxsLmNoaWxkcmVuWzFdKTtcclxuICAgICAgICAgICAgICAgIHRoaXMud2FsbE51bSArPSAxO1xyXG5cclxuICAgICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICBjYXNlIFwidXBsZWZ0XCI6IGNhc2UgXCJsZWZ0dXBcIjpcclxuICAgICAgICAgICAgICAgIG5vZGUub3BhY2l0eSA9IDI0OTtcclxuICAgICAgICAgICAgICAgIHdhbGwgPSBjYy5pbnN0YW50aWF0ZSh0aGlzLldhbGxfUHJlZmFiWzZdKTtcclxuICAgICAgICAgICAgICAgIC8vIHdhbGwucGFyZW50ID0gdGhpcy5ub2RlLmdldENoaWxkQnlOYW1lKFwiV2FsbFwiKTtcclxuICAgICAgICAgICAgICAgIHdhbGwucGFyZW50ID0gdGhpcy5ub2RlO1xyXG4gICAgICAgICAgICAgICAgd2FsbC5zZXRQb3NpdGlvbihjYy52Mihub2RlLngsIG5vZGUueSkpO1xyXG4gICAgICAgICAgICAgICAgd2FsbC5jaGlsZHJlblsxXS5nZXRDb21wb25lbnQoXCJXYWxsXCIpLmluaXQobnVsbCwgbm9kZS5nZXRDb21wb25lbnQoXCJNYXBCbG9ja1wiKS5wb3NYLCBub2RlLmdldENvbXBvbmVudChcIk1hcEJsb2NrXCIpLnBvc1ksIGRpcmVjdGlvbik7XHJcbiAgICAgICAgICAgICAgICB3YWxsLmNoaWxkcmVuWzJdLmdldENvbXBvbmVudChcIldhbGxcIikuaW5pdChudWxsLCBub2RlLmdldENvbXBvbmVudChcIk1hcEJsb2NrXCIpLnBvc1gsIG5vZGUuZ2V0Q29tcG9uZW50KFwiTWFwQmxvY2tcIikucG9zWSwgZGlyZWN0aW9uKTtcclxuICAgICAgICAgICAgICAgIC8vd2FsbC5jaGlsZHJlblswXS5nZXRDaGlsZEJ5TmFtZShcIm51bVwiKS5nZXRDb21wb25lbnQoY2MuTGFiZWwpLnN0cmluZyA9IHRoaXMud2FsbE51bS50b1N0cmluZygpO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5zZXREb29ySW5mbyh3YWxsLmNoaWxkcmVuWzBdKTtcclxuICAgICAgICAgICAgICAgIHRoaXMud2FsbE51bSArPSAxO1xyXG4gICAgICAgICAgICAgICAgLy93YWxsLmNoaWxkcmVuWzFdLmdldENoaWxkQnlOYW1lKFwibnVtXCIpLmdldENvbXBvbmVudChjYy5MYWJlbCkuc3RyaW5nID0gdGhpcy53YWxsTnVtLnRvU3RyaW5nKCk7XHJcbiAgICAgICAgICAgICAgICB0aGlzLnNldERvb3JJbmZvKHdhbGwuY2hpbGRyZW5bMV0pO1xyXG4gICAgICAgICAgICAgICAgdGhpcy53YWxsTnVtICs9IDE7XHJcblxyXG4gICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgIGNhc2UgXCJkb3ducmlnaHRcIjogY2FzZSBcInJpZ2h0ZG93blwiOlxyXG4gICAgICAgICAgICAgICAgbm9kZS5vcGFjaXR5ID0gMjQ5O1xyXG4gICAgICAgICAgICAgICAgd2FsbCA9IGNjLmluc3RhbnRpYXRlKHRoaXMuV2FsbF9QcmVmYWJbMl0pO1xyXG4gICAgICAgICAgICAgICAgLy8gd2FsbC5wYXJlbnQgPSB0aGlzLm5vZGUuZ2V0Q2hpbGRCeU5hbWUoXCJXYWxsXCIpO1xyXG4gICAgICAgICAgICAgICAgd2FsbC5wYXJlbnQgPSB0aGlzLm5vZGU7XHJcbiAgICAgICAgICAgICAgICB3YWxsLnNldFBvc2l0aW9uKGNjLnYyKG5vZGUueCwgbm9kZS55KSk7XHJcbiAgICAgICAgICAgICAgICB3YWxsLmNoaWxkcmVuWzFdLmdldENvbXBvbmVudChcIldhbGxcIikuaW5pdChudWxsLCBub2RlLmdldENvbXBvbmVudChcIk1hcEJsb2NrXCIpLnBvc1gsIG5vZGUuZ2V0Q29tcG9uZW50KFwiTWFwQmxvY2tcIikucG9zWSwgZGlyZWN0aW9uKTtcclxuICAgICAgICAgICAgICAgIHdhbGwuY2hpbGRyZW5bMl0uZ2V0Q29tcG9uZW50KFwiV2FsbFwiKS5pbml0KG51bGwsIG5vZGUuZ2V0Q29tcG9uZW50KFwiTWFwQmxvY2tcIikucG9zWCwgbm9kZS5nZXRDb21wb25lbnQoXCJNYXBCbG9ja1wiKS5wb3NZLCBkaXJlY3Rpb24pO1xyXG4gICAgICAgICAgICAgICAgLy93YWxsLmNoaWxkcmVuWzBdLmdldENoaWxkQnlOYW1lKFwibnVtXCIpLmdldENvbXBvbmVudChjYy5MYWJlbCkuc3RyaW5nID0gdGhpcy53YWxsTnVtLnRvU3RyaW5nKCk7XHJcbiAgICAgICAgICAgICAgICB0aGlzLnNldERvb3JJbmZvKHdhbGwuY2hpbGRyZW5bMF0pO1xyXG4gICAgICAgICAgICAgICAgdGhpcy53YWxsTnVtICs9IDE7XHJcbiAgICAgICAgICAgICAgICAvL3dhbGwuY2hpbGRyZW5bMV0uZ2V0Q2hpbGRCeU5hbWUoXCJudW1cIikuZ2V0Q29tcG9uZW50KGNjLkxhYmVsKS5zdHJpbmcgPSB0aGlzLndhbGxOdW0udG9TdHJpbmcoKTtcclxuICAgICAgICAgICAgICAgIHRoaXMuc2V0RG9vckluZm8od2FsbC5jaGlsZHJlblsxXSk7XHJcbiAgICAgICAgICAgICAgICB0aGlzLndhbGxOdW0gKz0gMTtcclxuXHJcbiAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgY2FzZSBcImRvd25sZWZ0XCI6IGNhc2UgXCJsZWZ0ZG93blwiOlxyXG4gICAgICAgICAgICAgICAgbm9kZS5vcGFjaXR5ID0gMjQ5O1xyXG4gICAgICAgICAgICAgICAgd2FsbCA9IGNjLmluc3RhbnRpYXRlKHRoaXMuV2FsbF9QcmVmYWJbMV0pO1xyXG4gICAgICAgICAgICAgICAgLy8gd2FsbC5wYXJlbnQgPSB0aGlzLm5vZGUuZ2V0Q2hpbGRCeU5hbWUoXCJXYWxsXCIpO1xyXG4gICAgICAgICAgICAgICAgd2FsbC5wYXJlbnQgPSB0aGlzLm5vZGU7XHJcbiAgICAgICAgICAgICAgICB3YWxsLnNldFBvc2l0aW9uKGNjLnYyKG5vZGUueCwgbm9kZS55KSk7XHJcbiAgICAgICAgICAgICAgICB3YWxsLmNoaWxkcmVuWzFdLmdldENvbXBvbmVudChcIldhbGxcIikuaW5pdChudWxsLCBub2RlLmdldENvbXBvbmVudChcIk1hcEJsb2NrXCIpLnBvc1gsIG5vZGUuZ2V0Q29tcG9uZW50KFwiTWFwQmxvY2tcIikucG9zWSwgZGlyZWN0aW9uKTtcclxuICAgICAgICAgICAgICAgIHdhbGwuY2hpbGRyZW5bMl0uZ2V0Q29tcG9uZW50KFwiV2FsbFwiKS5pbml0KG51bGwsIG5vZGUuZ2V0Q29tcG9uZW50KFwiTWFwQmxvY2tcIikucG9zWCwgbm9kZS5nZXRDb21wb25lbnQoXCJNYXBCbG9ja1wiKS5wb3NZLCBkaXJlY3Rpb24pO1xyXG4gICAgICAgICAgICAgICAgLy93YWxsLmNoaWxkcmVuWzBdLmdldENoaWxkQnlOYW1lKFwibnVtXCIpLmdldENvbXBvbmVudChjYy5MYWJlbCkuc3RyaW5nID0gdGhpcy53YWxsTnVtLnRvU3RyaW5nKCk7XHJcbiAgICAgICAgICAgICAgICB0aGlzLnNldERvb3JJbmZvKHdhbGwuY2hpbGRyZW5bMF0pO1xyXG4gICAgICAgICAgICAgICAgdGhpcy53YWxsTnVtICs9IDE7XHJcbiAgICAgICAgICAgICAgICAvL3dhbGwuY2hpbGRyZW5bMV0uZ2V0Q2hpbGRCeU5hbWUoXCJudW1cIikuZ2V0Q29tcG9uZW50KGNjLkxhYmVsKS5zdHJpbmcgPSB0aGlzLndhbGxOdW0udG9TdHJpbmcoKTtcclxuICAgICAgICAgICAgICAgIHRoaXMuc2V0RG9vckluZm8od2FsbC5jaGlsZHJlblsxXSk7XHJcbiAgICAgICAgICAgICAgICB0aGlzLndhbGxOdW0gKz0gMTtcclxuXHJcbiAgICAgICAgICAgICAgICBicmVhaztcclxuXHJcbiAgICAgICAgfVxyXG5cclxuXHJcbiAgICAgICAgLy8gaWYod2FsbFR1cm4pe1xyXG4gICAgICAgIC8vICAgICB3YWxsVHVybi5nZXRDb21wb25lbnQoXCJ3YWxsVHVuclwiKS5pbml0KHdhbGwpO1xyXG4gICAgICAgIC8vIH1cclxuICAgIH1cclxuXHJcbiAgICBzZXREb29ySW5mbyh3YWxsKSB7XHJcbiAgICAgICAgbGV0IGRvb3JJbmZvID0gY2MuZnguR2FtZUNvbmZpZy5XQUxMX0lORk9bMF07XHJcblxyXG4gICAgICAgIGlmIChkb29ySW5mbykge1xyXG4gICAgICAgICAgICBmb3IgKGxldCBqID0gMDsgaiA8IGRvb3JJbmZvLmxlbmd0aDsgaisrKSB7XHJcbiAgICAgICAgICAgICAgICBpZiAoZG9vckluZm9bal0ubnVtID09IHRoaXMud2FsbE51bSkge1xyXG4gICAgICAgICAgICAgICAgICAgIHdhbGwuZ2V0Q29tcG9uZW50KFwiV2FsbFwiKS5pbml0KGRvb3JJbmZvW2pdLCBudWxsLCBudWxsLCBudWxsKTtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLndhbGxBcnJheS5wdXNoKHdhbGwucGFyZW50KTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBjcmVhdGVUdXJuKGRpcmVjdGlvbiwgbm9kZSwgcG9zWCwgcG9zWSkge1xyXG4gICAgICAgIGxldCB3YWxsID0gbnVsbDtcclxuICAgICAgICB3YWxsID0gY2MuaW5zdGFudGlhdGUodGhpcy53YWxsVHVyblByZWZhYik7XHJcbiAgICAgICAgd2FsbC5wYXJlbnQgPSB0aGlzLm5vZGU7XHJcbiAgICAgICAgd2FsbC5zZXRQb3NpdGlvbihjYy52Mihub2RlLngsIG5vZGUueSkpO1xyXG4gICAgICAgIHN3aXRjaCAoZGlyZWN0aW9uKSB7XHJcbiAgICAgICAgICAgIGNhc2UgXCJ1cHJpZ2h0XCI6IGNhc2UgXCJyaWdodHVwXCI6XHJcbiAgICAgICAgICAgICAgICB3YWxsLmFuZ2xlID0gMDtcclxuICAgICAgICAgICAgICAgIHdhbGwuZ2V0Q2hpbGRCeU5hbWUoXCJpY29uXCIpLmFuZ2xlID0gMDtcclxuXHJcbiAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgY2FzZSBcInVwbGVmdFwiOiBjYXNlIFwibGVmdHVwXCI6XHJcbiAgICAgICAgICAgICAgICB3YWxsLmFuZ2xlID0gOTA7XHJcbiAgICAgICAgICAgICAgICB3YWxsLmdldENoaWxkQnlOYW1lKFwiaWNvblwiKS5hbmdsZSA9IC05MDtcclxuICAgICAgICAgICAgICAgIHdhbGwuZ2V0Q2hpbGRCeU5hbWUoXCJpY29uXCIpLnkgKz0gNTtcclxuICAgICAgICAgICAgICAgIHdhbGwuZ2V0Q2hpbGRCeU5hbWUoXCJpY29uXCIpLnggLT0gMS4zO1xyXG4gICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgIGNhc2UgXCJkb3ducmlnaHRcIjogY2FzZSBcInJpZ2h0ZG93blwiOlxyXG4gICAgICAgICAgICAgICAgd2FsbC5hbmdsZSA9IDI3MDtcclxuICAgICAgICAgICAgICAgIHdhbGwuZ2V0Q2hpbGRCeU5hbWUoXCJpY29uXCIpLmFuZ2xlID0gLTI3MDtcclxuICAgICAgICAgICAgICAgIHdhbGwuZ2V0Q2hpbGRCeU5hbWUoXCJpY29uXCIpLnggKz0gMi41O1xyXG4gICAgICAgICAgICAgICAgd2FsbC5nZXRDaGlsZEJ5TmFtZShcImljb25cIikueSArPSAxO1xyXG4gICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgIGNhc2UgXCJkb3dubGVmdFwiOiBjYXNlIFwibGVmdGRvd25cIjpcclxuICAgICAgICAgICAgICAgIHdhbGwuYW5nbGUgPSAxODA7XHJcbiAgICAgICAgICAgICAgICB3YWxsLmdldENoaWxkQnlOYW1lKFwiaWNvblwiKS5hbmdsZSA9IC0xODA7XHJcbiAgICAgICAgICAgICAgICB3YWxsLmdldENoaWxkQnlOYW1lKFwiaWNvblwiKS54ICs9IDQuNTtcclxuICAgICAgICAgICAgICAgIHdhbGwuZ2V0Q2hpbGRCeU5hbWUoXCJpY29uXCIpLnkgKz0gMy4yO1xyXG4gICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICAvLyBpZihkaXJlY3Rpb24gPT0gXCJyaWdodGRvd25cIiB8fCBkaXJlY3Rpb24gPT0gXCJkb3ducmlnaHRcIikge1xyXG4gICAgICAgIC8vICAgICB3YWxsLnpJbmRleCA9IDUwICsgcG9zWCAtIHBvc1kqMztcclxuICAgICAgICAvLyB9XHJcbiAgICAgICAgLy8gZWxzZSBcclxuICAgICAgICAvLyAgICAgd2FsbC56SW5kZXggPSA1MCArIHBvc1ggLSBwb3NZKjM7XHJcblxyXG4gICAgICAgIGlmIChkaXJlY3Rpb24gPT0gXCJ1cFwiIHx8IGRpcmVjdGlvbiA9PSBcImxlZnR1cFwiIHx8IGRpcmVjdGlvbiA9PSBcInVwbGVmdFwiXHJcbiAgICAgICAgKSB7XHJcbiAgICAgICAgICAgIHdhbGwuekluZGV4ID0gMTAwICsgcG9zWCAtIHBvc1kgKiAzO1xyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIGlmIChkaXJlY3Rpb24gPT0gXCJyaWdodHVwXCIgfHwgZGlyZWN0aW9uID09IFwidXByaWdodFwiIHx8IGRpcmVjdGlvbiA9PSBcInJpZ2h0ZG93blwiIHx8IGRpcmVjdGlvbiA9PSBcImRvd25yaWdodFwiIHx8IGRpcmVjdGlvbiA9PSBcImRvd25sZWZ0XCIpIHtcclxuICAgICAgICAgICAgd2FsbC56SW5kZXggPSAzMCArIHBvc1ggLSBwb3NZICogMztcclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSBpZiAoZGlyZWN0aW9uID09IFwibGVmdFwiIHx8IGRpcmVjdGlvbiA9PSBcImxlZnRkb3duXCIpIHtcclxuICAgICAgICAgICAgd2FsbC56SW5kZXggPSA3MCArIHBvc1ggLSBwb3NZICogMztcclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSB3YWxsLnpJbmRleCA9IDcwICsgcG9zWCAtIHBvc1kgKiAzO1xyXG5cclxuICAgICAgICAvLyB3YWxsLmdldENoaWxkQnlOYW1lKFwibnVtXCIpLmFuZ2xlID0gLXdhbGwuYW5nbGU7XHJcbiAgICAgICAgLy93YWxsLmdldENoaWxkQnlOYW1lKFwibnVtXCIpLmdldENvbXBvbmVudChjYy5MYWJlbCkuc3RyaW5nID0gZGlyZWN0aW9uO1xyXG4gICAgICAgIC8vd2FsbC5nZXRDaGlsZEJ5TmFtZShcIm51bVwiKS5nZXRDb21wb25lbnQoY2MuTGFiZWwpLnN0cmluZyA9IHdhbGwuekluZGV4KyBcIlwiO1xyXG4gICAgICAgIC8vIGNvbnNvbGUubG9nKHBvc1gscG9zWSx3YWxsLnpJbmRleCk7XHJcbiAgICAgICAgLy8gdGhpcy53YWxsTnVtICs9ICAxO1xyXG4gICAgICAgIC8vIHdhbGwuZ2V0Q2hpbGRCeU5hbWUoXCJudW1cIikuZ2V0Q29tcG9uZW50KGNjLkxhYmVsKS5zdHJpbmcgPSB0aGlzLndhbGxOdW0gKyBcIlwiO1xyXG4gICAgfVxyXG5cclxuICAgIC8v5Zyw5Zu+5bqV5Z2X57y65Y+j5Yik5patXHJcbiAgICBtYXBHYXAocG9pbnQsIGdhcCkge1xyXG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgZ2FwLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgICAgIGlmIChwb2ludC54ID09IGdhcFtpXS54ICYmIHBvaW50LnkgPT0gZ2FwW2ldLnkpIHtcclxuICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gdHJ1ZTtcclxuICAgIH1cclxuXHJcbiAgICAvL+WNh+mZjeWcsOWdl+WIpOaWrVxyXG4gICAgbWFwUmlzZUZhbGwocG9pbnQsIHJpc2VmYWxsLCBibG9jaykge1xyXG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgcmlzZWZhbGwubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICAgICAgaWYgKHBvaW50LnggPT0gcmlzZWZhbGxbaV0ucG9zLnggJiYgcG9pbnQueSA9PSByaXNlZmFsbFtpXS5wb3MueSkge1xyXG4gICAgICAgICAgICAgICAgYmxvY2suZ2V0Q2hpbGRCeU5hbWUoXCJyaXNlZmFsbFwiKS5hY3RpdmUgPSB0cnVlO1xyXG4gICAgICAgICAgICAgICAgYmxvY2suZ2V0Q2hpbGRCeU5hbWUoJ3Jpc2VmYWxsJykuZ2V0Q2hpbGRCeU5hbWUoXCJjb2xvclwiKS5nZXRDb21wb25lbnQoY2MuTGFiZWwpLnN0cmluZyA9IHJpc2VmYWxsW2ldLmNvbG9yICsgXCJcIjtcclxuICAgICAgICAgICAgICAgIGJsb2NrLmdldENoaWxkQnlOYW1lKCdyaXNlZmFsbCcpLmFkZENvbXBvbmVudChjYy5Cb3hDb2xsaWRlcik7XHJcbiAgICAgICAgICAgICAgICBibG9jay5nZXRDaGlsZEJ5TmFtZSgncmlzZWZhbGwnKS5nZXRDb21wb25lbnQoY2MuQm94Q29sbGlkZXIpLnNpemUgPSBjYy5zaXplKDExMCwgMTEwKTtcclxuICAgICAgICAgICAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgIH1cclxuICAgIC8v5Y2H6ZmN5Zyw5Z2XXHJcbiAgICBjaGFuZ2VSaXNlRmFsbChjb2xvciwgZG93bikge1xyXG4gICAgICAgIGNvbG9yID0gY29sb3IudG9TdHJpbmcoKTtcclxuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRoaXMucmlzZUZhbGxCbGNvay5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgICAgICBpZiAoY29sb3IgPT0gdGhpcy5yaXNlRmFsbEJsY29rW2ldLmdldENoaWxkQnlOYW1lKFwicmlzZWZhbGxcIikuZ2V0Q2hpbGRCeU5hbWUoXCJjb2xvclwiKS5nZXRDb21wb25lbnQoY2MuTGFiZWwpLnN0cmluZykge1xyXG4gICAgICAgICAgICAgICAgaWYgKGRvd24pIHtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLnJpc2VGYWxsQmxjb2tbaV0uZ2V0Q2hpbGRCeU5hbWUoXCJyaXNlZmFsbFwiKS5hY3RpdmUgPSBmYWxzZTtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLnJpc2VGYWxsQmxjb2tbaV0uZ2V0Q2hpbGRCeU5hbWUoJ3Jpc2VmYWxsJykucmVtb3ZlQ29tcG9uZW50KGNjLkJveENvbGxpZGVyKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMucmlzZUZhbGxCbGNva1tpXS5nZXRDaGlsZEJ5TmFtZShcInJpc2VmYWxsXCIpLmFjdGl2ZSA9IHRydWU7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5yaXNlRmFsbEJsY29rW2ldLmdldENoaWxkQnlOYW1lKCdyaXNlZmFsbCcpLmFkZENvbXBvbmVudChjYy5Cb3hDb2xsaWRlcik7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5yaXNlRmFsbEJsY29rW2ldLmdldENoaWxkQnlOYW1lKCdyaXNlZmFsbCcpLmdldENvbXBvbmVudChjYy5Cb3hDb2xsaWRlcikuc2l6ZSA9IGNjLnNpemUoMTEwLCAxMTApO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcblxyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcblxyXG5cclxuICAgIC8v5p+l6K+i5Y+g5Yqg5b+raWRcclxuICAgIGZvdW5kRG93bkJsb2NrKGlkKSB7XHJcbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0aGlzLmJsb2Nrcy5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgICAgICBpZiAodGhpcy5ibG9ja3NbaV0uZ2V0Q29tcG9uZW50KFwiQmxvY2tcIikuYmxvY2tJZCA9PSBpZCkge1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuYmxvY2tzW2ldO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiBudWxsO1xyXG4gICAgfVxyXG5cclxuICAgIC8v5Yig6Zmk5Z2XXHJcbiAgICByZW1vdmVCbG9jayhpZCkge1xyXG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdGhpcy5ibG9ja3MubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICAgICAgaWYgKHRoaXMuYmxvY2tzW2ldLmdldENvbXBvbmVudChcIkJsb2NrXCIpLmJsb2NrSWQgPT0gaWQpIHtcclxuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmJsb2Nrc1tpXTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gbnVsbDtcclxuICAgIH1cclxuXHJcbiAgICBnZXRNaW5BbmRNYXgoYmxvY2spIHtcclxuICAgICAgICBsZXQgd2lkdGggPSBNYXRoLmZsb29yKGJsb2NrLndpZHRoIC8gMTIwKTtcclxuICAgICAgICBsZXQgaGVpZ2h0ID0gTWF0aC5mbG9vcihibG9jay5oZWlnaHQgLyAxMjApO1xyXG5cclxuICAgICAgICBsZXQgbWluWCA9IHdpZHRoO1xyXG4gICAgICAgIGxldCBtYXhYID0gdGhpcy5tYXBXaWR0aCAtIDI7XHJcbiAgICAgICAgbGV0IG1pblkgPSAxO1xyXG4gICAgICAgIGxldCBtYXhZID0gdGhpcy5tYXBIZWlnaHQgLSAyIC0gaGVpZ2h0ICsgMTtcclxuXHJcbiAgICAgICAgaWYgKGJsb2NrLm5hbWUgPT0gXCJibG9jazEwXCIpIHtcclxuICAgICAgICAgICAgbWluWCA9IHdpZHRoIC0gMTtcclxuICAgICAgICAgICAgaWYgKHRoaXMubWFwV2lkdGggPiAzKSBtYXhYID0gbWF4WCAtIDE7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2UgaWYgKGJsb2NrLm5hbWUgPT0gXCJibG9jazExXCIpIHtcclxuICAgICAgICAgICAgbWluWCA9IHdpZHRoIC0gMjtcclxuICAgICAgICAgICAgaWYgKHRoaXMubWFwV2lkdGggPiAzKSBtYXhYID0gbWF4WCAtIDI7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBlbHNlIGlmIChibG9jay5uYW1lID09IFwiYmxvY2sxNFwiKSB7XHJcbiAgICAgICAgICAgIG1pblggPSB3aWR0aCAtIDE7XHJcbiAgICAgICAgICAgIG1heFggPSBtYXhYIC0gMTtcclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSBpZiAoYmxvY2submFtZSA9PSBcImJsb2NrMTZcIikge1xyXG4gICAgICAgICAgICBtaW5YID0gd2lkdGggLSAxO1xyXG4gICAgICAgICAgICBtYXhYID0gbWF4WCAtIDE7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2UgaWYgKGJsb2NrLm5hbWUgPT0gXCJibG9jazE4XCIpIHtcclxuICAgICAgICAgICAgbWluWCA9IHdpZHRoIC0gMTtcclxuICAgICAgICAgICAgbWF4WCA9IG1heFggLSAxO1xyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIGlmIChibG9jay5uYW1lID09IFwiYmxvY2syMVwiKSB7XHJcbiAgICAgICAgICAgIG1pblggPSB3aWR0aCAtIDE7XHJcbiAgICAgICAgICAgIG1heFggPSBtYXhYIC0gMTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHJldHVybiB7IG1pblg6IG1pblgsIG1heFg6IG1heFgsIG1pblk6IG1pblksIG1heFk6IG1heFkgfTtcclxuICAgIH1cclxuXHJcbiAgICAvL+ajgOa1i+iQveeCueaYr+WQpuWPr+S7pea2iOmZpFxyXG4gICAgY2hlY2tQYXNzKG5vZGUsIGJsb2Nrcykge1xyXG4gICAgICAgIGxldCBtaW5BbmRNYXggPSB0aGlzLmdldE1pbkFuZE1heChub2RlKTtcclxuICAgICAgICBsZXQgbWluWCA9IG1pbkFuZE1heC5taW5YO1xyXG4gICAgICAgIGxldCBtYXhYID0gbWluQW5kTWF4Lm1heFg7XHJcbiAgICAgICAgbGV0IG1pblkgPSBtaW5BbmRNYXgubWluWTtcclxuICAgICAgICBsZXQgbWF4WSA9IG1pbkFuZE1heC5tYXhZO1xyXG5cclxuICAgICAgICBsZXQgbm9kZVBvcyA9IGNjLnYyKG5vZGUuZ2V0Q29tcG9uZW50KFwiQmxvY2tcIikucG9zWCwgbm9kZS5nZXRDb21wb25lbnQoXCJCbG9ja1wiKS5wb3NZKTtcclxuXHJcbiAgICAgICAgLy8g6I635Y+W5Zyw5Zu+6L6555WM5L+h5oGvXHJcblxyXG4gICAgICAgIGxldCBhbGxCbG9ja3MgPSBbXTtcclxuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGJsb2Nrcy5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgICAgICBhbGxCbG9ja3MucHVzaChjYy52Mihub2RlUG9zLnggKyBibG9ja3NbaV0ueCwgbm9kZVBvcy55ICsgYmxvY2tzW2ldLnkpKTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIC8vIGNvbnN0IGRhdGUxID0gbmV3IERhdGUoKS5nZXRUaW1lKCk7XHJcbiAgICAgICAgLy8gY29uc29sZS5sb2coXCLlsIblsI/lnZfmlL7lhaXmlbDnu4TnmoTml7bpl7RcIixkYXRlMSk7XHJcblxyXG4gICAgICAgIGxldCBqZyA9IC0xO1xyXG4gICAgICAgIGxldCBweiA9IDA7XHJcbiAgICAgICAgLy8g6I635Y+W5omA5pyJ5aKZ5aOB6IqC54K5XHJcbiAgICAgICAgLy8gbGV0IHdhbGwgPSB0aGlzLm5vZGU7XHJcbiAgICAgICAgbGV0IGRpcmVjdGlvbiA9IHRoaXMuY2hlY2tEaXJhY3Rpb24oYWxsQmxvY2tzLCBtYXhYLCBtYXhZKTtcclxuXHJcbiAgICAgICAgLy8g5Yik5pat5pa55Z2X5piv5ZCm5Zyo5Zyw5Zu+6L6557yYXHJcbiAgICAgICAgaWYgKG5vZGVQb3MueCA8PSBtaW5YIHx8IGRpcmVjdGlvblswXSA9PSB0cnVlKSB7XHJcbiAgICAgICAgICAgIC8vIGNvbnN0IGRhdGUyID0gbmV3IERhdGUoKS5nZXRUaW1lKCk7XHJcbiAgICAgICAgICAgIC8vIGNvbnNvbGUubG9nKFwi56Kw5Yiw5bem6L6557yYXCIsZGF0ZTIpO1xyXG4gICAgICAgICAgICBweiArPSAxO1xyXG4gICAgICAgICAgICBsZXQgbGVmdFdhbGxzID0gW107XHJcbiAgICAgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdGhpcy5sZWZ0RG9vcnMubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICAgICAgICAgIGxldCB3YWxsTGVmdCA9IHRoaXMubGVmdERvb3JzW2ldLmdldENoaWxkQnlOYW1lKFwid2FsbFwiKTtcclxuICAgICAgICAgICAgICAgIGxldCB3YWxsUG9zID0gY2MudjIod2FsbExlZnQuZ2V0Q29tcG9uZW50KFwiV2FsbFwiKS5wb3NYLCB3YWxsTGVmdC5nZXRDb21wb25lbnQoXCJXYWxsXCIpLnBvc1kpO1xyXG4gICAgICAgICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBhbGxCbG9ja3MubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICAgICAgICAgICAgICBpZiAoYWxsQmxvY2tzW2ldLnkgPT0gd2FsbFBvcy55ICYmIGFsbEJsb2Nrc1tpXS54ID4gd2FsbFBvcy54KSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIGNvbnNvbGUubG9nKFwiaWQ6XCIsd2FsbC5nZXRDaGlsZEJ5TmFtZShcIm51bVwiKS5nZXRDb21wb25lbnQoY2MuTGFiZWwpLnN0cmluZyk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGxlZnRXYWxscy5wdXNoKHdhbGxMZWZ0KTtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgLy8gY29uc29sZS5sb2coXCLlvpfliLDlt6bovrnlopnlo4HmlbDnu4RcIixkYXRlNik7XHJcbiAgICAgICAgICAgIGlmIChsZWZ0V2FsbHMubGVuZ3RoICE9IDApIHtcclxuICAgICAgICAgICAgICAgIGxldCByZXN1bHQgPSB0aGlzLmRldGVjdGluZ0Jsb2NrKFwibGVmdFwiLCBub2RlLmdldENvbXBvbmVudChcIkJsb2NrXCIpLnBvc1gsIG5vZGUuZ2V0Q29tcG9uZW50KFwiQmxvY2tcIikucG9zWSwgYWxsQmxvY2tzKTtcclxuICAgICAgICAgICAgICAgIGlmIChyZXN1bHQgPT0gdHJ1ZSkgcmVzdWx0ID0gdGhpcy5wYXNzV2FsbChyZXN1bHQsIGxlZnRXYWxscywgbm9kZSk7XHJcbiAgICAgICAgICAgICAgICAvLyBjb25zb2xlLmxvZyhcIueisOWIsOW3pui+uee8mOe7k+aenDpcIixqZyk7XHJcbiAgICAgICAgICAgICAgICBpZiAocmVzdWx0KSB7XHJcblxyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuYmxvY2tOdW0gLT0gMTtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLnNwZWNpYWxfVHJlYXRtZW50KG5vZGUpO1xyXG4gICAgICAgICAgICAgICAgICAgIGpnID0gMjtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLmNyZWF0ZVBhcnRpY2xlKG5vZGUsIGpnKTtcclxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gamc7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKG5vZGVQb3MueCA+PSBtYXhYIHx8IGRpcmVjdGlvblsxXSA9PSB0cnVlKSB7XHJcbiAgICAgICAgICAgIC8vIGNvbnN0IGRhdGUzID0gbmV3IERhdGUoKS5nZXRUaW1lKCk7XHJcbiAgICAgICAgICAgIC8vIGNvbnNvbGUubG9nKFwi56Kw5Yiw5Y+z6L6557yYXCIsZGF0ZTMpO1xyXG4gICAgICAgICAgICBweiArPSAxO1xyXG4gICAgICAgICAgICBsZXQgcmlnaHRXYWxscyA9IFtdO1xyXG4gICAgICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRoaXMucmlnaHREb29ycy5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgICAgICAgICAgbGV0IHdhbGxSaWdodCA9IHRoaXMucmlnaHREb29yc1tpXS5nZXRDaGlsZEJ5TmFtZShcIndhbGxcIik7XHJcbiAgICAgICAgICAgICAgICBsZXQgd2FsbFBvcyA9IGNjLnYyKHdhbGxSaWdodC5nZXRDb21wb25lbnQoXCJXYWxsXCIpLnBvc1gsIHdhbGxSaWdodC5nZXRDb21wb25lbnQoXCJXYWxsXCIpLnBvc1kpO1xyXG4gICAgICAgICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBhbGxCbG9ja3MubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICAgICAgICAgICAgICBpZiAoYWxsQmxvY2tzW2ldLnkgPT0gd2FsbFBvcy55ICYmIGFsbEJsb2Nrc1tpXS54IDwgd2FsbFBvcy54KSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIGNvbnNvbGUubG9nKFwiaWQ6XCIsd2FsbC5nZXRDaGlsZEJ5TmFtZShcIm51bVwiKS5nZXRDb21wb25lbnQoY2MuTGFiZWwpLnN0cmluZyk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHJpZ2h0V2FsbHMucHVzaCh3YWxsUmlnaHQpO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgaWYgKHJpZ2h0V2FsbHMubGVuZ3RoICE9IDApIHtcclxuICAgICAgICAgICAgICAgIGxldCByZXN1bHQgPSB0aGlzLmRldGVjdGluZ0Jsb2NrKFwicmlnaHRcIiwgbm9kZS5nZXRDb21wb25lbnQoXCJCbG9ja1wiKS5wb3NYLCBub2RlLmdldENvbXBvbmVudChcIkJsb2NrXCIpLnBvc1ksIGFsbEJsb2Nrcyk7XHJcblxyXG4gICAgICAgICAgICAgICAgaWYgKHJlc3VsdCA9PSB0cnVlKSByZXN1bHQgPSB0aGlzLnBhc3NXYWxsKHJlc3VsdCwgcmlnaHRXYWxscywgbm9kZSk7XHJcbiAgICAgICAgICAgICAgICAvLyBjb25zb2xlLmxvZyhcIueisOWIsOWPs+i+uee8mOe7k+aenDpcIixqZyk7XHJcbiAgICAgICAgICAgICAgICBpZiAocmVzdWx0KSB7XHJcblxyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuYmxvY2tOdW0gLT0gMTtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLnNwZWNpYWxfVHJlYXRtZW50KG5vZGUpO1xyXG4gICAgICAgICAgICAgICAgICAgIGpnID0gMztcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLmNyZWF0ZVBhcnRpY2xlKG5vZGUsIGpnKTtcclxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gamc7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuXHJcblxyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAobm9kZVBvcy55IDw9IG1pblkgfHwgZGlyZWN0aW9uWzJdID09IHRydWUpIHtcclxuICAgICAgICAgICAgcHogKz0gMTtcclxuICAgICAgICAgICAgLy8gY29uc3QgZGF0ZTQgPSBuZXcgRGF0ZSgpLmdldFRpbWUoKTtcclxuICAgICAgICAgICAgLy8gY29uc29sZS5sb2coXCLnorDliLDkuIvovrnnvJhcIixkYXRlNCk7XHJcbiAgICAgICAgICAgIGxldCBkb3duV2FsbHMgPSBbXTtcclxuICAgICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0aGlzLnRvcERvb3JzLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgICAgICAgICBsZXQgd2FsbEJvdHRvbSA9IHRoaXMudG9wRG9vcnNbaV0uZ2V0Q2hpbGRCeU5hbWUoXCJ3YWxsXCIpO1xyXG4gICAgICAgICAgICAgICAgbGV0IHdhbGxQb3MgPSBjYy52Mih3YWxsQm90dG9tLmdldENvbXBvbmVudChcIldhbGxcIikucG9zWCwgd2FsbEJvdHRvbS5nZXRDb21wb25lbnQoXCJXYWxsXCIpLnBvc1kpO1xyXG4gICAgICAgICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBhbGxCbG9ja3MubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICAgICAgICAgICAgICBsZXQgbHVvY2hhID0gTWF0aC5hYnMoYWxsQmxvY2tzW2ldLnkgLSB3YWxsUG9zLnkpXHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKGFsbEJsb2Nrc1tpXS54ID09IHdhbGxQb3MueCAmJiBhbGxCbG9ja3NbaV0ueSA+IHdhbGxQb3MueSAmJiBsdW9jaGEgPD0gbm9kZS5nZXRDb21wb25lbnQoXCJCbG9ja1wiKS5zaHUpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgLy8gY29uc29sZS5sb2coXCJpZDpcIix3YWxsLmdldENoaWxkQnlOYW1lKFwibnVtXCIpLmdldENvbXBvbmVudChjYy5MYWJlbCkuc3RyaW5nKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgZG93bldhbGxzLnB1c2god2FsbEJvdHRvbSk7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICBpZiAoZG93bldhbGxzLmxlbmd0aCAhPSAwKSB7XHJcbiAgICAgICAgICAgICAgICBsZXQgcmVzdWx0ID0gdGhpcy5kZXRlY3RpbmdCbG9jayhcImRvd25cIiwgbm9kZS5nZXRDb21wb25lbnQoXCJCbG9ja1wiKS5wb3NYLCBub2RlLmdldENvbXBvbmVudChcIkJsb2NrXCIpLnBvc1ksIGFsbEJsb2Nrcyk7XHJcbiAgICAgICAgICAgICAgICBpZiAocmVzdWx0ID09IHRydWUpIHJlc3VsdCA9IHRoaXMucGFzc1dhbGwocmVzdWx0LCBkb3duV2FsbHMsIG5vZGUpO1xyXG4gICAgICAgICAgICAgICAgLy8gY29uc29sZS5sb2coXCLnorDliLDkuIvovrnnvJjnu5Pmnpw6XCIsamcpO1xyXG4gICAgICAgICAgICAgICAgaWYgKHJlc3VsdCkge1xyXG5cclxuICAgICAgICAgICAgICAgICAgICB0aGlzLmJsb2NrTnVtIC09IDE7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5zcGVjaWFsX1RyZWF0bWVudChub2RlKTtcclxuICAgICAgICAgICAgICAgICAgICBqZyA9IDE7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5jcmVhdGVQYXJ0aWNsZShub2RlLCBqZyk7XHJcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGpnO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcblxyXG5cclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKG5vZGVQb3MueSA+PSBtYXhZIHx8IGRpcmVjdGlvblszXSA9PSB0cnVlKSB7XHJcbiAgICAgICAgICAgIHB6ICs9IDE7XHJcbiAgICAgICAgICAgIC8vIGNvbnN0IGRhdGU1ID0gbmV3IERhdGUoKS5nZXRUaW1lKCk7XHJcbiAgICAgICAgICAgIC8vIGNvbnNvbGUubG9nKFwi56Kw5Yiw5LiK6L6557yYXCIsZGF0ZTUpO1xyXG4gICAgICAgICAgICBsZXQgdXBXYWxscyA9IFtdO1xyXG4gICAgICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRoaXMuYm90dG9tRG9vcnMubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICAgICAgICAgIGxldCB3YWxsVG9wID0gdGhpcy5ib3R0b21Eb29yc1tpXS5nZXRDaGlsZEJ5TmFtZShcIndhbGxcIik7XHJcbiAgICAgICAgICAgICAgICBsZXQgd2FsbFBvcyA9IGNjLnYyKHdhbGxUb3AuZ2V0Q29tcG9uZW50KFwiV2FsbFwiKS5wb3NYLCB3YWxsVG9wLmdldENvbXBvbmVudChcIldhbGxcIikucG9zWSk7XHJcbiAgICAgICAgICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGFsbEJsb2Nrcy5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgICAgICAgICAgICAgIGxldCBsdW9jaGEgPSBNYXRoLmFicyhhbGxCbG9ja3NbaV0ueSAtIHdhbGxQb3MueSlcclxuICAgICAgICAgICAgICAgICAgICBpZiAoYWxsQmxvY2tzW2ldLnggPT0gd2FsbFBvcy54ICYmIGFsbEJsb2Nrc1tpXS55IDwgd2FsbFBvcy55ICYmIGx1b2NoYSA8PSBub2RlLmdldENvbXBvbmVudChcIkJsb2NrXCIpLnNodSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB1cFdhbGxzLnB1c2god2FsbFRvcCk7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICBpZiAodXBXYWxscy5sZW5ndGggIT0gMCkge1xyXG4gICAgICAgICAgICAgICAgbGV0IHJlc3VsdCA9IHRoaXMuZGV0ZWN0aW5nQmxvY2soXCJ1cFwiLCBub2RlLmdldENvbXBvbmVudChcIkJsb2NrXCIpLnBvc1gsIG5vZGUuZ2V0Q29tcG9uZW50KFwiQmxvY2tcIikucG9zWSwgYWxsQmxvY2tzKTtcclxuICAgICAgICAgICAgICAgIGlmIChyZXN1bHQgPT0gdHJ1ZSkgcmVzdWx0ID0gdGhpcy5wYXNzV2FsbChyZXN1bHQsIHVwV2FsbHMsIG5vZGUpO1xyXG4gICAgICAgICAgICAgICAgLy8gY29uc29sZS5sb2coXCLnorDliLDkuIrovrnnvJjnu5Pmnpw6XCIscmVzdWx0KTtcclxuICAgICAgICAgICAgICAgIGlmIChyZXN1bHQpIHtcclxuXHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5ibG9ja051bSAtPSAxO1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuc3BlY2lhbF9UcmVhdG1lbnQobm9kZSk7XHJcbiAgICAgICAgICAgICAgICAgICAgamcgPSAwO1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuY3JlYXRlUGFydGljbGUobm9kZSwgamcpO1xyXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBqZztcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKHB6ID09IDApIGpnID0gLTE7XHJcbiAgICAgICAgLy8gY29uc3QgZGF0ZTEwID0gbmV3IERhdGUoKS5nZXRUaW1lKCk7XHJcbiAgICAgICAgLy8gY29uc29sZS5sb2coXCLmiYDmnInmo4DmtYvnu5PmnZ/ogJfml7ZcIixkYXRlMTAsamcpO1xyXG4gICAgICAgIHJldHVybiBqZztcclxuICAgIH1cclxuXHJcbiAgICBjaGFuZ2VTdGF0ZSgpIHtcclxuICAgICAgICBpZiAodGhpcy5vcGVuV2FsbC5sZW5ndGggIT0gMCkge1xyXG4gICAgICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRoaXMub3BlbldhbGwubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICAgICAgICAgIHRoaXMub3BlbldhbGxbaV0uZ2V0Q2hpbGRCeU5hbWUoXCJ3YWxsXCIpLmdldENvbXBvbmVudChcIldhbGxcIikuY2hhbmdlTG9jaygpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBpZiAodGhpcy5mcmVlemVXYWxsLmxlbmd0aCAhPSAwKSB7XHJcbiAgICAgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdGhpcy5mcmVlemVXYWxsLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmZyZWV6ZVdhbGxbaV0uZ2V0Q2hpbGRCeU5hbWUoXCJ3YWxsXCIpLmdldENvbXBvbmVudChcIldhbGxcIikuY2hhbmdlRnJlZXplKCk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgLy/mo4DmtYvmmK/lkKblj6/ku6XpgJrov4fpl6hcclxuICAgIHBhc3NXYWxsKGpnLCB3YWxsQXJyYXksIG5vZGUpIHtcclxuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHdhbGxBcnJheS5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgICAgICBpZiAod2FsbEFycmF5W2ldLmdldENvbXBvbmVudChcIldhbGxcIikuc3BlY2lhbCA9PSAyKSB7XHJcbiAgICAgICAgICAgICAgICBjb25zb2xlLmxvZyhcIuWwneivlemAmui/h+W8gOWFs+mXqDpcIiwgd2FsbEFycmF5W2ldLmdldENvbXBvbmVudChcIldhbGxcIikub3Blbik7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgaWYgKHdhbGxBcnJheVtpXS5nZXRDb21wb25lbnQoXCJXYWxsXCIpLnNwZWNpYWwgPT0gMiAmJiB3YWxsQXJyYXlbaV0uZ2V0Q29tcG9uZW50KFwiV2FsbFwiKS5vcGVuID09IGZhbHNlKSB7XHJcbiAgICAgICAgICAgICAgICBqZyA9IGZhbHNlO1xyXG4gICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgLy9jb25zb2xlLmxvZyh3YWxsQXJyYXlbaV0uZ2V0Q2hpbGRCeU5hbWUoXCJ3YWxsXCIpLmdldENvbXBvbmVudChcIldhbGxcIikuY29sb3Isbm9kZS5nZXRDb21wb25lbnQoXCJCbG9ja1wiKS5jb2xvcilcclxuICAgICAgICAgICAgaWYgKHdhbGxBcnJheVtpXS5nZXRDb21wb25lbnQoXCJXYWxsXCIpLmNvbG9yICE9IG5vZGUuZ2V0Q29tcG9uZW50KFwiQmxvY2tcIikuY29sb3IpIHtcclxuXHJcbiAgICAgICAgICAgICAgICBqZyA9IGZhbHNlO1xyXG4gICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgaWYgKG5vZGUuZ2V0Q29tcG9uZW50KFwiQmxvY2tcIikudHlwZSA9PSA1KSB7XHJcbiAgICAgICAgICAgICAgICBpZiAod2FsbEFycmF5W2ldLmdldENvbXBvbmVudChcIldhbGxcIikuc3BlY2lhbCAhPSAxKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgamcgPSBmYWxzZTtcclxuICAgICAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAoamcgPT0gdHJ1ZSAmJiBub2RlLmdldENvbXBvbmVudChcIkJsb2NrXCIpLnR5cGUgPT0gNSkge1xyXG4gICAgICAgICAgICBmb3IgKGxldCBqID0gMDsgaiA8IHdhbGxBcnJheS5sZW5ndGg7IGorKykge1xyXG4gICAgICAgICAgICAgICAgaWYgKHdhbGxBcnJheVtqXS5nZXRDb21wb25lbnQoXCJXYWxsXCIpLnNwZWNpYWwgPT0gMSAmJiB3YWxsQXJyYXlbal0uZ2V0Q29tcG9uZW50KFwiV2FsbFwiKS53YWxsX0luZm8ubGVuZ3RoICE9IDApIHtcclxuICAgICAgICAgICAgICAgICAgICB3YWxsQXJyYXlbal0uZ2V0Q29tcG9uZW50KFwiV2FsbFwiKS5wbGF5U3RhckRvb3IoKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICAvLyBjb25zdCBkYXRlOCA9IG5ldyBEYXRlKCkuZ2V0VGltZSgpO1xyXG4gICAgICAgIC8vIGNvbnNvbGUubG9nKFwi5qOA5rWL6aKc6Imy5piv5ZCm6IO95aSf6YCa6L+H6ZeoXCIsZGF0ZTgpO1xyXG4gICAgICAgIHJldHVybiBqZztcclxuICAgIH1cclxuXHJcbiAgICAvL+ajgOa1i+aWueWdl+WSjOmXqOS4remXtOacieayoeacieWkueadguWFtuS7luWdl1xyXG4gICAgZGV0ZWN0aW5nQmxvY2soZGlyZWN0aW9uLCBwb3NYLCBwb3NZLCBibG9ja3MpIHtcclxuICAgICAgICBsZXQgamcgPSB0cnVlO1xyXG4gICAgICAgIGxldCBpZCA9IFwiXCI7XHJcbiAgICAgICAgaWYgKGJsb2Nrcy5sZW5ndGggPiAwKSB7XHJcbiAgICAgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgYmxvY2tzLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgICAgICAgICBsZXQgcG9zID0gYmxvY2tzW2ldO1xyXG4gICAgICAgICAgICAgICAgbGV0IHggPSBwb3MueDtcclxuICAgICAgICAgICAgICAgIGxldCB5ID0gcG9zLnk7XHJcbiAgICAgICAgICAgICAgICBpZCA9IHRoaXMubWFwQmxvY2tzV2FsbFt4XVt5XS5nZXRDb21wb25lbnQoXCJNYXBCbG9ja1wiKS5ibG9ja19JZDtcclxuICAgICAgICAgICAgICAgIGpnID0gdGhpcy5jaGVja0FsbERpcmVjdGlvbnMoaWQsIGRpcmVjdGlvbiwgeCwgeSk7XHJcbiAgICAgICAgICAgICAgICBpZiAoIWpnKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgLy8gY29uc29sZS5sb2coXCLmlrnlkJHmo4DmtYvmsqHov4dcIik7XHJcbiAgICAgICAgICAgICAgICAgICAgaSA9IDEwMDAwMDA7XHJcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGpnO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIC8vIGNvbnN0IGRhdGU3ID0gbmV3IERhdGUoKS5nZXRUaW1lKCk7XHJcbiAgICAgICAgLy8gY29uc29sZS5sb2coXCLmlrnlkJHmo4DmtYvpgJrov4dcIixkYXRlNyxqZyk7XHJcbiAgICAgICAgcmV0dXJuIGpnO1xyXG4gICAgfVxyXG5cclxuICAgIC8v5qOA5rWL54mp5L2T5ZCE5pa55ZCR5piv5ZCm5pyJ5Yir55qE54mp5Z2X77yM6Ziy5q2i56Kw5Yiw5aKZ5aOB5LqG5L2G5piv5piv5Ye55Ye45b2i54q277yM5aKZ5LiO5Z2X5LmL6Ze05pyJ6Zi75oyh54mp5Z2XXHJcbiAgICBjaGVja0FsbERpcmVjdGlvbnMoaWQsIGRpcmVjdGlvbiwgeCwgeSkge1xyXG4gICAgICAgIGxldCBqZyA9IHRydWU7XHJcblxyXG4gICAgICAgIGlmIChkaXJlY3Rpb24gPT0gXCJsZWZ0XCIpIHtcclxuICAgICAgICAgICAgaWYgKHRoaXMubWFwQmxvY2tzV2FsbFt4IC0gMV1beV0uZ2V0Q29tcG9uZW50KFwiTWFwQmxvY2tcIikuYmxvY2tfSWQgIT0gXCJcIiAmJiB0aGlzLm1hcEJsb2Nrc1dhbGxbeCAtIDFdW3ldLmdldENvbXBvbmVudChcIk1hcEJsb2NrXCIpLmJsb2NrX0lkICE9IFwiV2FsbFwiXHJcbiAgICAgICAgICAgICAgICAmJiB0aGlzLm1hcEJsb2Nrc1dhbGxbeCAtIDFdW3ldLmdldENvbXBvbmVudChcIk1hcEJsb2NrXCIpLmJsb2NrX0lkICE9IGlkKSB7XHJcbiAgICAgICAgICAgICAgICAvLyBjb25zb2xlLmxvZyhcIuW3puS+p+acieeJqeS9k1wiKVxyXG4gICAgICAgICAgICAgICAgamcgPSBmYWxzZTtcclxuICAgICAgICAgICAgICAgIHJldHVybiBqZztcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBpZiAodGhpcy5tYXBCbG9ja3NXYWxsW3ggLSAxXVt5XS5vcGFjaXR5ID09IDI0OSkge1xyXG4gICAgICAgICAgICAgICAgamcgPSBmYWxzZTtcclxuICAgICAgICAgICAgICAgIHJldHVybiBqZztcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBpZiAoKHggLSAyKSA+PSAwKSB7XHJcbiAgICAgICAgICAgICAgICBpZiAodGhpcy5tYXBCbG9ja3NXYWxsW3ggLSAyXVt5XS5nZXRDb21wb25lbnQoXCJNYXBCbG9ja1wiKS5ibG9ja19JZCAhPSBcIlwiICYmIHRoaXMubWFwQmxvY2tzV2FsbFt4IC0gMl1beV0uZ2V0Q29tcG9uZW50KFwiTWFwQmxvY2tcIikuYmxvY2tfSWQgIT0gXCJXYWxsXCJcclxuICAgICAgICAgICAgICAgICAgICAmJiB0aGlzLm1hcEJsb2Nrc1dhbGxbeCAtIDJdW3ldLmdldENvbXBvbmVudChcIk1hcEJsb2NrXCIpLmJsb2NrX0lkICE9IGlkKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgLy8gY29uc29sZS5sb2coXCLlt6bkvqfmnInniankvZNcIilcclxuICAgICAgICAgICAgICAgICAgICBqZyA9IGZhbHNlO1xyXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBqZztcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIGlmICh0aGlzLm1hcEJsb2Nrc1dhbGxbeCAtIDJdW3ldLm9wYWNpdHkgPT0gMjQ5KSB7XHJcbiAgICAgICAgICAgICAgICAgICAgamcgPSBmYWxzZTtcclxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gamc7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSBpZiAoZGlyZWN0aW9uID09IFwicmlnaHRcIikge1xyXG4gICAgICAgICAgICBpZiAodGhpcy5tYXBCbG9ja3NXYWxsW3ggKyAxXVt5XS5nZXRDb21wb25lbnQoXCJNYXBCbG9ja1wiKS5ibG9ja19JZCAhPSBcIlwiICYmIHRoaXMubWFwQmxvY2tzV2FsbFt4ICsgMV1beV0uZ2V0Q29tcG9uZW50KFwiTWFwQmxvY2tcIikuYmxvY2tfSWQgIT0gXCJXYWxsXCJcclxuICAgICAgICAgICAgICAgICYmIHRoaXMubWFwQmxvY2tzV2FsbFt4ICsgMV1beV0uZ2V0Q29tcG9uZW50KFwiTWFwQmxvY2tcIikuYmxvY2tfSWQgIT0gaWQpIHtcclxuICAgICAgICAgICAgICAgIC8vIGNvbnNvbGUubG9nKFwi5Y+z5L6n5pyJ54mp5L2TXCIpXHJcbiAgICAgICAgICAgICAgICBqZyA9IGZhbHNlO1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIGpnO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGlmICh0aGlzLm1hcEJsb2Nrc1dhbGxbeCArIDFdW3ldLm9wYWNpdHkgPT0gMjQ5KSB7XHJcbiAgICAgICAgICAgICAgICBqZyA9IGZhbHNlO1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIGpnO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGlmICgoeCArIDIpIDw9IHRoaXMubWFwQmxvY2tzV2FsbC5sZW5ndGggLSAxKSB7XHJcbiAgICAgICAgICAgICAgICBpZiAodGhpcy5tYXBCbG9ja3NXYWxsW3ggKyAyXVt5XS5nZXRDb21wb25lbnQoXCJNYXBCbG9ja1wiKS5ibG9ja19JZCAhPSBcIlwiICYmIHRoaXMubWFwQmxvY2tzV2FsbFt4ICsgMl1beV0uZ2V0Q29tcG9uZW50KFwiTWFwQmxvY2tcIikuYmxvY2tfSWQgIT0gXCJXYWxsXCJcclxuICAgICAgICAgICAgICAgICAgICAmJiB0aGlzLm1hcEJsb2Nrc1dhbGxbeCArIDJdW3ldLmdldENvbXBvbmVudChcIk1hcEJsb2NrXCIpLmJsb2NrX0lkICE9IGlkKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgLy8gY29uc29sZS5sb2coXCLlj7PkvqfmnInniankvZNcIilcclxuICAgICAgICAgICAgICAgICAgICBqZyA9IGZhbHNlO1xyXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBqZztcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIGlmICh0aGlzLm1hcEJsb2Nrc1dhbGxbeCArIDJdW3ldLm9wYWNpdHkgPT0gMjQ5KSB7XHJcbiAgICAgICAgICAgICAgICAgICAgamcgPSBmYWxzZTtcclxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gamc7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKGRpcmVjdGlvbiA9PSBcInVwXCIpIHtcclxuICAgICAgICAgICAgaWYgKHRoaXMubWFwQmxvY2tzV2FsbFt4XVt5ICsgMV0uZ2V0Q29tcG9uZW50KFwiTWFwQmxvY2tcIikuYmxvY2tfSWQgIT0gXCJcIiAmJiB0aGlzLm1hcEJsb2Nrc1dhbGxbeF1beSArIDFdLmdldENvbXBvbmVudChcIk1hcEJsb2NrXCIpLmJsb2NrX0lkICE9IFwiV2FsbFwiXHJcbiAgICAgICAgICAgICAgICAmJiB0aGlzLm1hcEJsb2Nrc1dhbGxbeF1beSArIDFdLmdldENvbXBvbmVudChcIk1hcEJsb2NrXCIpLmJsb2NrX0lkICE9IGlkKSB7XHJcbiAgICAgICAgICAgICAgICAvLyBjb25zb2xlLmxvZyhcIuS4iuS+p+acieeJqeS9k1wiKVxyXG4gICAgICAgICAgICAgICAgamcgPSBmYWxzZTtcclxuICAgICAgICAgICAgICAgIHJldHVybiBqZztcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBpZiAodGhpcy5tYXBCbG9ja3NXYWxsW3hdW3kgKyAxXS5vcGFjaXR5ID09IDI0OSkge1xyXG4gICAgICAgICAgICAgICAgamcgPSBmYWxzZTtcclxuICAgICAgICAgICAgICAgIHJldHVybiBqZztcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBpZiAoKHkgKyAyKSA8PSB0aGlzLm1hcEJsb2Nrc1dhbGxbeF0ubGVuZ3RoIC0gMSkge1xyXG4gICAgICAgICAgICAgICAgaWYgKHRoaXMubWFwQmxvY2tzV2FsbFt4XVt5ICsgMl0uZ2V0Q29tcG9uZW50KFwiTWFwQmxvY2tcIikuYmxvY2tfSWQgIT0gXCJcIiAmJiB0aGlzLm1hcEJsb2Nrc1dhbGxbeF1beSArIDJdLmdldENvbXBvbmVudChcIk1hcEJsb2NrXCIpLmJsb2NrX0lkICE9IFwiV2FsbFwiXHJcbiAgICAgICAgICAgICAgICAgICAgJiYgdGhpcy5tYXBCbG9ja3NXYWxsW3hdW3kgKyAyXS5nZXRDb21wb25lbnQoXCJNYXBCbG9ja1wiKS5ibG9ja19JZCAhPSBpZCkge1xyXG4gICAgICAgICAgICAgICAgICAgIC8vIGNvbnNvbGUubG9nKFwi5LiK5L6n5pyJ54mp5L2TXCIpXHJcbiAgICAgICAgICAgICAgICAgICAgamcgPSBmYWxzZTtcclxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gamc7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBpZiAodGhpcy5tYXBCbG9ja3NXYWxsW3hdW3kgKyAyXS5vcGFjaXR5ID09IDI0OSkge1xyXG4gICAgICAgICAgICAgICAgICAgIGpnID0gZmFsc2U7XHJcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGpnO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmIChkaXJlY3Rpb24gPT0gXCJkb3duXCIpIHtcclxuICAgICAgICAgICAgaWYgKHRoaXMubWFwQmxvY2tzV2FsbFt4XVt5IC0gMV0uZ2V0Q29tcG9uZW50KFwiTWFwQmxvY2tcIikuYmxvY2tfSWQgIT0gXCJcIiAmJiB0aGlzLm1hcEJsb2Nrc1dhbGxbeF1beSAtIDFdLmdldENvbXBvbmVudChcIk1hcEJsb2NrXCIpLmJsb2NrX0lkICE9IFwiV2FsbFwiXHJcbiAgICAgICAgICAgICAgICAmJiB0aGlzLm1hcEJsb2Nrc1dhbGxbeF1beSAtIDFdLmdldENvbXBvbmVudChcIk1hcEJsb2NrXCIpLmJsb2NrX0lkICE9IGlkKSB7XHJcbiAgICAgICAgICAgICAgICAvLyBjb25zb2xlLmxvZyhcIuS4i+S+p+acieeJqeS9k1wiKVxyXG4gICAgICAgICAgICAgICAgamcgPSBmYWxzZTtcclxuICAgICAgICAgICAgICAgIHJldHVybiBqZztcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBpZiAodGhpcy5tYXBCbG9ja3NXYWxsW3hdW3kgLSAxXS5vcGFjaXR5ID09IDI0OSkge1xyXG4gICAgICAgICAgICAgICAgamcgPSBmYWxzZTtcclxuICAgICAgICAgICAgICAgIHJldHVybiBqZztcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBpZiAoKHkgLSAyKSA+PSAwKSB7XHJcbiAgICAgICAgICAgICAgICBpZiAodGhpcy5tYXBCbG9ja3NXYWxsW3hdW3kgLSAyXS5nZXRDb21wb25lbnQoXCJNYXBCbG9ja1wiKS5ibG9ja19JZCAhPSBcIlwiICYmIHRoaXMubWFwQmxvY2tzV2FsbFt4XVt5IC0gMl0uZ2V0Q29tcG9uZW50KFwiTWFwQmxvY2tcIikuYmxvY2tfSWQgIT0gXCJXYWxsXCJcclxuICAgICAgICAgICAgICAgICAgICAmJiB0aGlzLm1hcEJsb2Nrc1dhbGxbeF1beSAtIDJdLmdldENvbXBvbmVudChcIk1hcEJsb2NrXCIpLmJsb2NrX0lkICE9IGlkKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgLy8gY29uc29sZS5sb2coXCLkuIvkvqfmnInniankvZNcIilcclxuICAgICAgICAgICAgICAgICAgICBqZyA9IGZhbHNlO1xyXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBqZztcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIGlmICh0aGlzLm1hcEJsb2Nrc1dhbGxbeF1beSAtIDJdLm9wYWNpdHkgPT0gMjQ5KSB7XHJcbiAgICAgICAgICAgICAgICAgICAgamcgPSBmYWxzZTtcclxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gamc7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgLy8gY29uc29sZS5sb2coXCLmo4DmtYvniankvZPlkITmlrnlkJHmmK/lkKbmnInliKvnmoTnianlnZdcIixqZyk7XHJcbiAgICAgICAgcmV0dXJuIGpnO1xyXG4gICAgfVxyXG5cclxuICAgIGNoZWNrRGlyYWN0aW9uKGFsbEJsb2NrcywgbWF4WCwgbWF4WSkge1xyXG4gICAgICAgIGxldCBqZyA9IFtmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZV07XHJcbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBhbGxCbG9ja3MubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICAgICAgaWYgKGFsbEJsb2Nrc1tpXS54ID4gMCAmJiBqZ1swXSA9PSBmYWxzZSkge1xyXG4gICAgICAgICAgICAgICAgaWYgKHRoaXMubWFwQmxvY2tzV2FsbFthbGxCbG9ja3NbaV0ueCAtIDFdW2FsbEJsb2Nrc1tpXS55XS5vcGFjaXR5ID09IDI1MCkge1xyXG4gICAgICAgICAgICAgICAgICAgIGpnWzBdID0gdHJ1ZTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBpZiAoamdbMV0gPT0gZmFsc2UpIHtcclxuICAgICAgICAgICAgICAgIGlmICh0aGlzLm1hcEJsb2Nrc1dhbGxbYWxsQmxvY2tzW2ldLnggKyAxXVthbGxCbG9ja3NbaV0ueV0ub3BhY2l0eSA9PSAyNTApIHtcclxuICAgICAgICAgICAgICAgICAgICBqZ1sxXSA9IHRydWU7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgaWYgKGFsbEJsb2Nrc1tpXS55ID4gMCAmJiBqZ1syXSA9PSBmYWxzZSkge1xyXG4gICAgICAgICAgICAgICAgaWYgKHRoaXMubWFwQmxvY2tzV2FsbFthbGxCbG9ja3NbaV0ueF1bYWxsQmxvY2tzW2ldLnkgLSAxXS5vcGFjaXR5ID09IDI1MCkge1xyXG4gICAgICAgICAgICAgICAgICAgIGpnWzJdID0gdHJ1ZTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBpZiAoamdbM10gPT0gZmFsc2UpIHtcclxuICAgICAgICAgICAgICAgIGlmICh0aGlzLm1hcEJsb2Nrc1dhbGxbYWxsQmxvY2tzW2ldLnhdW2FsbEJsb2Nrc1tpXS55ICsgMV0ub3BhY2l0eSA9PSAyNTApIHtcclxuICAgICAgICAgICAgICAgICAgICBqZ1szXSA9IHRydWU7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIGpnO1xyXG4gICAgfVxyXG5cclxuICAgIGNoZWNrTGVmdChhbGxCbG9ja3MpIHtcclxuICAgICAgICBsZXQgamcgPSBmYWxzZTtcclxuICAgICAgICByZXR1cm4gamc7XHJcbiAgICB9XHJcblxyXG4gICAgY2hlY2tSaWdodChhbGxCbG9ja3MsIG1heCkge1xyXG4gICAgICAgIGxldCBqZyA9IGZhbHNlO1xyXG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgYWxsQmxvY2tzLmxlbmd0aDsgaSsrKSB7XHJcblxyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gamc7XHJcbiAgICB9XHJcblxyXG4gICAgY2hlY2tEb3duKGFsbEJsb2Nrcykge1xyXG4gICAgICAgIGxldCBqZyA9IGZhbHNlO1xyXG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgYWxsQmxvY2tzLmxlbmd0aDsgaSsrKSB7XHJcblxyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gamc7XHJcbiAgICB9XHJcblxyXG4gICAgY2hlY2tVcChhbGxCbG9ja3MsIG1heCkge1xyXG4gICAgICAgIGxldCBqZyA9IGZhbHNlO1xyXG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgYWxsQmxvY2tzLmxlbmd0aDsgaSsrKSB7XHJcblxyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gamc7XHJcbiAgICB9XHJcblxyXG5cclxuICAgIC8v54m55q6K5aSE55CG77yM5pa55Z2X5bim6YGT5YW35oiW6ICF6ZyA6KaB5raI6Zmk5Yaw5Z2XXHJcbiAgICBzcGVjaWFsX1RyZWF0bWVudChub2RlKSB7XHJcbiAgICAgICAgbGV0IGZyZWV6ZUJsb2NrID0gdGhpcy5ub2RlLmNoaWxkcmVuLmZpbHRlcihjaGlsZCA9PiB7XHJcbiAgICAgICAgICAgIGlmIChjaGlsZC5nZXRDb21wb25lbnQoXCJCbG9ja1wiKSkge1xyXG4gICAgICAgICAgICAgICAgaWYgKGNoaWxkLmdldENvbXBvbmVudChcIkJsb2NrXCIpLnR5cGUgPT0gNClcclxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gY2hpbGRcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH0pO1xyXG4gICAgICAgIGlmIChmcmVlemVCbG9jay5sZW5ndGggPiAwKSB7XHJcbiAgICAgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgZnJlZXplQmxvY2subGVuZ3RoOyBpKyspIHtcclxuICAgICAgICAgICAgICAgIGZyZWV6ZUJsb2NrW2ldLmdldENoaWxkQnlOYW1lKFwiZnJlZXplXCIpLmdldENvbXBvbmVudChcIkZyZWV6ZVwiKS5yZWR1Y2UoMSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGlmIChub2RlLmdldENvbXBvbmVudChcIkJsb2NrXCIpLnR5cGUgPT0gMiB8fCBub2RlLmdldENvbXBvbmVudChcIkJsb2NrXCIpLnR5cGUgPT0gNCkge1xyXG4gICAgICAgICAgICBsZXQgbG9ja0Jsb2NrID0gdGhpcy5ub2RlLmNoaWxkcmVuLmZpbHRlcihjaGlsZCA9PiB7XHJcbiAgICAgICAgICAgICAgICBpZiAoY2hpbGQuZ2V0Q29tcG9uZW50KFwiQmxvY2tcIikpIHtcclxuICAgICAgICAgICAgICAgICAgICBpZiAoY2hpbGQuZ2V0Q29tcG9uZW50KFwiQmxvY2tcIikudHlwZSA9PSAzKVxyXG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gY2hpbGRcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgIGlmIChsb2NrQmxvY2subGVuZ3RoID4gMClcclxuICAgICAgICAgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgbG9ja0Jsb2NrLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgbG9ja0Jsb2NrW2ldLmdldENoaWxkQnlOYW1lKFwibG9ja1wiKS5nZXRDb21wb25lbnQoXCJMb2NrXCIpLnJlZHVjZSgpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdGhpcy5ibG9ja3MubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICAgICAgaWYgKHRoaXMuYmxvY2tzW2ldID09IG5vZGUpIHtcclxuICAgICAgICAgICAgICAgIHRoaXMuYmxvY2tzLnNwbGljZShpLCAxKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuXHJcbiAgICB9XHJcblxyXG4gICAgLy/liKTmlq3muLjmiI/miJDlip/kuIvkuIDlhbNcclxuICAgIG5leHRMZXZlbCgpIHtcclxuICAgICAgICB0aGlzLnBhdXNlID0gZmFsc2U7XHJcbiAgICAgICAgdGhpcy5vcGVuSWNlKCk7XHJcblxyXG4gICAgICAgIHRoaXMuYmxvY2tOdW0gPSB0aGlzLmJsb2Nrcy5sZW5ndGg7XHJcblxyXG4gICAgICAgIGlmICh0aGlzLmJsb2NrTnVtID09IDAgJiYgIXRoaXMuZ2FtZVdpbiAmJiAhdGhpcy5nYW1lT3Zlcikge1xyXG4gICAgICAgICAgICAvLyBhbGVydChcIua4uOaIj+aIkOWKn1wiKTtcclxuICAgICAgICAgICAgdGhpcy5nYW1lV2luID0gdHJ1ZTtcclxuXHJcbiAgICAgICAgICAgIHRoaXMuc3RvcFRpbWVDdXREb3duKCk7XHJcbiAgICAgICAgICAgIC8vIGNvbnNvbGUubG9nKFwi5oiQ5Yqf5raI6Zmk5LiA5LiqXCIpO1xyXG4gICAgICAgICAgICBjYy5meC5HYW1lVG9vbC5jaGFuZ2VDb2luKDQwKTtcclxuICAgICAgICAgICAgY2MuZnguR2FtZVRvb2wuYWRkTGV2ZWwodGhpcy5jb3VudF9UaW1lLCB0aGlzLmFkZF9UaW1lKTtcclxuXHJcbiAgICAgICAgICAgIHRoaXMuY2hlY2tfTmV3TW9kZSgpO1xyXG4gICAgICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgICAgICAgICAgIHRoaXMubm9kZS5wYXJlbnQucGFyZW50LmdldENoaWxkQnlOYW1lKFwiV2luXCIpLmFjdGl2ZSA9IHRydWU7XHJcbiAgICAgICAgICAgIH0sIDY2MCk7XHJcbiAgICAgICAgICAgIC8vIGNvbnNvbGUubG9nKFwi5ri45oiP5oiQ5YqfXCIpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgaWYgKHRoaXMuZ2FtZU92ZXIgPT0gdHJ1ZSkge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5mYWlsTGV2ZWwobnVsbCk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgY2hlY2tfTmV3TW9kZSgpIHtcclxuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGNjLmZ4LkdhbWVDb25maWcuTkVXX0xFVkVMLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgICAgIGlmICgoY2MuZnguR2FtZUNvbmZpZy5HTV9JTkZPLmxldmVsICsgMSkgPT0gY2MuZnguR2FtZUNvbmZpZy5ORVdfTEVWRUxbaV0ubGV2ZWwpIHtcclxuICAgICAgICAgICAgICAgIHRoaXMubmV3X21vZGUgPSAzO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHdpbkxldmVsKCkge1xyXG4gICAgICAgIGNjLmZ4LkF1ZGlvTWFuYWdlci5faW5zdGFuY2UucGxheUVmZmVjdChcImFubml1X0JpZ1wiLCBudWxsKTtcclxuICAgICAgICBpZiAoY2MuZnguR2FtZUNvbmZpZy5HTV9JTkZPLmxldmVsID4gMTU2KSB7XHJcbiAgICAgICAgICAgIGNjLmZ4LkdhbWVDb25maWcuR01fSU5GTy5sZXZlbCA9IDE1NjtcclxuICAgICAgICAgICAgLy8gTWFwQ29ucm9sZXIuX2luc3RhbmNlID0gbnVsbDtcclxuXHJcbiAgICAgICAgICAgIGlmICh0aGlzLm5ld19tb2RlID09IDMpIHtcclxuICAgICAgICAgICAgICAgIHRoaXMubm9kZS5wYXJlbnQucGFyZW50LmdldENoaWxkQnlOYW1lKFwiV2luXCIpLmFjdGl2ZSA9IGZhbHNlO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5vcGVuTmV3TW9kZSgyKTtcclxuICAgICAgICAgICAgICAgIGNjLmZ4LkdhbWVDb25maWcuTEVWRUxfSU5GT19pbml0KGZhbHNlLCAwKTtcclxuICAgICAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAvLyBjYy5meC5HYW1lQ29uZmlnLkxFVkVMX0lORk9faW5pdCh0cnVlKTtcclxuICAgICAgICAgICAgY2MuZnguQXVkaW9NYW5hZ2VyLl9pbnN0YW5jZS5wbGF5RWZmZWN0KFwiemh1YW4xXCIsIG51bGwpO1xyXG4gICAgICAgICAgICB0aGlzLm5vZGUucGFyZW50LnBhcmVudC5wYXJlbnQuZ2V0Q2hpbGRCeU5hbWUoXCJ6aHVhbmNoYW5nXCIpLmFjdGl2ZSA9IHRydWU7XHJcbiAgICAgICAgICAgIHRoaXMubm9kZS5wYXJlbnQucGFyZW50LnBhcmVudC5nZXRDaGlsZEJ5TmFtZShcInpodWFuY2hhbmdcIikuZ2V0Q29tcG9uZW50KHNwLlNrZWxldG9uKS5zZXRBbmltYXRpb24oMSwgXCJ1cFwiLCBmYWxzZSk7XHJcbiAgICAgICAgICAgIC8vIHRoaXMubm9kZS5wYXJlbnQucGFyZW50LnBhcmVudC5nZXRDaGlsZEJ5TmFtZShcInpodWFuY2hhbmdcIikuZ2V0Q29tcG9uZW50KHNwLlNrZWxldG9uKS5zZXRDb21wbGV0ZUxpc3RlbmVyKChlbnRyeSkgPT4ge1xyXG4gICAgICAgICAgICAvLyAgICAgaWYgKGVudHJ5LmFuaW1hdGlvbi5uYW1lID09PSBcInVwXCIpIHtcclxuICAgICAgICAgICAgLy8gICAgICAgICAvLyDliqjnlLvmkq3mlL7nu5PmnZ/lkI7miafooYznmoTpgLvovpFcclxuICAgICAgICAgICAgLy8gICAgICAgICB0aGlzLm5vZGUucGFyZW50LnBhcmVudC5wYXJlbnQuZ2V0Q2hpbGRCeU5hbWUoXCJ6aHVhbmNoYW5nXCIpLmFjdGl2ZSA9IGZhbHNlO1xyXG4gICAgICAgICAgICAvLyAgICAgfVxyXG4gICAgICAgICAgICAvLyB9KTtcclxuXHJcbiAgICAgICAgICAgIGNjLmRpcmVjdG9yLnByZWxvYWRTY2VuZShcIkhvbWVTY2VuZVwiLCAoZXJyLCBhc3NldCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgaWYgKGVycikge1xyXG4gICAgICAgICAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoJ+WKqOaAgeWKoOi9vSBQcmVmYWIg5aSx6LSlOicsIGVycik7XHJcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgICAgICAgICAgICBjYy5kaXJlY3Rvci5sb2FkU2NlbmUoXCJIb21lU2NlbmVcIik7XHJcbiAgICAgICAgICAgIH0sIDEyMDApO1xyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIHtcclxuXHJcbiAgICAgICAgICAgIC8vIGNvbnNvbGUubG9nKFwi5LiL5LiA5YWzXCIpO1xyXG4gICAgICAgICAgICAvLyBNYXBDb25yb2xlci5faW5zdGFuY2UgPSBudWxsO1xyXG5cclxuICAgICAgICAgICAgaWYgKHRoaXMubmV3X21vZGUgPT0gMykge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5ub2RlLnBhcmVudC5wYXJlbnQuZ2V0Q2hpbGRCeU5hbWUoXCJXaW5cIikuYWN0aXZlID0gZmFsc2U7XHJcbiAgICAgICAgICAgICAgICB0aGlzLm9wZW5OZXdNb2RlKDIpO1xyXG4gICAgICAgICAgICAgICAgY2MuZnguR2FtZUNvbmZpZy5MRVZFTF9JTkZPX2luaXQoZmFsc2UsIDApO1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGNjLmZ4LkF1ZGlvTWFuYWdlci5faW5zdGFuY2UucGxheUVmZmVjdChcInpodWFuMVwiLCBudWxsKTtcclxuICAgICAgICAgICAgdGhpcy5ub2RlLnBhcmVudC5wYXJlbnQucGFyZW50LmdldENoaWxkQnlOYW1lKFwiemh1YW5jaGFuZ1wiKS5hY3RpdmUgPSB0cnVlO1xyXG4gICAgICAgICAgICB0aGlzLm5vZGUucGFyZW50LnBhcmVudC5wYXJlbnQuZ2V0Q2hpbGRCeU5hbWUoXCJ6aHVhbmNoYW5nXCIpLmdldENvbXBvbmVudChzcC5Ta2VsZXRvbikuc2V0QW5pbWF0aW9uKDEsIFwidXBcIiwgZmFsc2UpO1xyXG4gICAgICAgICAgICAvLyB0aGlzLm5vZGUucGFyZW50LnBhcmVudC5wYXJlbnQuZ2V0Q2hpbGRCeU5hbWUoXCJ6aHVhbmNoYW5nXCIpLmdldENvbXBvbmVudChzcC5Ta2VsZXRvbikuc2V0Q29tcGxldGVMaXN0ZW5lcigoZW50cnkpID0+IHtcclxuICAgICAgICAgICAgLy8gICAgIGlmIChlbnRyeS5hbmltYXRpb24ubmFtZSA9PT0gXCJ1cFwiKSB7XHJcbiAgICAgICAgICAgIC8vICAgICAgICAgLy8g5Yqo55S75pKt5pS+57uT5p2f5ZCO5omn6KGM55qE6YC76L6RXHJcbiAgICAgICAgICAgIC8vICAgICAgICAgdGhpcy5ub2RlLnBhcmVudC5wYXJlbnQucGFyZW50LmdldENoaWxkQnlOYW1lKFwiemh1YW5jaGFuZ1wiKS5hY3RpdmUgPSBmYWxzZTtcclxuICAgICAgICAgICAgLy8gICAgIH1cclxuICAgICAgICAgICAgLy8gfSk7XHJcbiAgICAgICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgY2MuZnguR2FtZUNvbmZpZy5MRVZFTF9JTkZPX2luaXQodHJ1ZSwgMCk7XHJcbiAgICAgICAgICAgIH0sIDEyMDApO1xyXG5cclxuICAgICAgICAgICAgLy8gdGhpcy5ub2RlLnBhcmVudC5wYXJlbnQucGFyZW50LmRlc3Ryb3koKTtcclxuXHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIGFnYWluTGV2ZWwoKSB7XHJcbiAgICAgICAgY2MuZnguQXVkaW9NYW5hZ2VyLl9pbnN0YW5jZS5wbGF5RWZmZWN0KFwiYW5uaXVfQmlnXCIsIG51bGwpO1xyXG4gICAgICAgIGlmIChjYy5meC5HYW1lQ29uZmlnLkdNX0lORk8uaHAgPCAxKSB7XHJcbiAgICAgICAgICAgIE1pbmlHYW1lU2RrLkFQSS5zaG93VG9hc3QoXCLkvZPlipvlgLzkuI3otrNcIik7XHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKCF0aGlzLmFnYWluQ2FuVG91Y2gpIHJldHVybjtcclxuXHJcbiAgICAgICAgdGhpcy5hZ2FpbkNhblRvdWNoID0gZmFsc2U7XHJcblxyXG4gICAgICAgIC8vIE1hcENvbnJvbGVyLl9pbnN0YW5jZSA9IG51bGw7XHJcbiAgICAgICAgY2MuZnguQXVkaW9NYW5hZ2VyLl9pbnN0YW5jZS5wbGF5RWZmZWN0KFwiemh1YW4xXCIsIG51bGwpO1xyXG4gICAgICAgIHRoaXMubm9kZS5wYXJlbnQucGFyZW50LnBhcmVudC5nZXRDaGlsZEJ5TmFtZShcInpodWFuY2hhbmdcIikuYWN0aXZlID0gdHJ1ZTtcclxuICAgICAgICB0aGlzLm5vZGUucGFyZW50LnBhcmVudC5wYXJlbnQuZ2V0Q2hpbGRCeU5hbWUoXCJ6aHVhbmNoYW5nXCIpLmdldENvbXBvbmVudChzcC5Ta2VsZXRvbikuc2V0QW5pbWF0aW9uKDEsIFwidXBcIiwgZmFsc2UpO1xyXG4gICAgICAgIC8vIHRoaXMubm9kZS5wYXJlbnQucGFyZW50LnBhcmVudC5nZXRDaGlsZEJ5TmFtZShcInpodWFuY2hhbmdcIikuZ2V0Q29tcG9uZW50KHNwLlNrZWxldG9uKS5zZXRDb21wbGV0ZUxpc3RlbmVyKChlbnRyeSkgPT4ge1xyXG4gICAgICAgIC8vICAgICBpZiAoZW50cnkuYW5pbWF0aW9uLm5hbWUgPT09IFwidXBcIikge1xyXG4gICAgICAgIC8vICAgICAgICAgLy8g5Yqo55S75pKt5pS+57uT5p2f5ZCO5omn6KGM55qE6YC76L6RXHJcbiAgICAgICAgLy8gICAgICAgICB0aGlzLm5vZGUucGFyZW50LnBhcmVudC5wYXJlbnQuZ2V0Q2hpbGRCeU5hbWUoXCJ6aHVhbmNoYW5nXCIpLmFjdGl2ZSA9IGZhbHNlO1xyXG4gICAgICAgIC8vICAgICB9XHJcbiAgICAgICAgLy8gfSk7XHJcbiAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgICAgICAgIGNjLmZ4LkdhbWVDb25maWcuTEVWRUxfSU5GT19pbml0KHRydWUsIDApO1xyXG4gICAgICAgIH0sIDEyMDApO1xyXG4gICAgICAgIC8vIHRoaXMubm9kZS5wYXJlbnQucGFyZW50LnBhcmVudC5kZXN0cm95KCk7XHJcbiAgICB9XHJcblxyXG4gICAgcmV2aWV3TGV2ZWwoKSB7XHJcbiAgICAgICAgY2MuZnguQXVkaW9NYW5hZ2VyLl9pbnN0YW5jZS5wbGF5RWZmZWN0KFwiYW5uaXVfQmlnXCIsIG51bGwpO1xyXG4gICAgICAgIGxldCBjb2luID0gOTAwO1xyXG4gICAgICAgIGlmIChjYy5meC5HYW1lQ29uZmlnLkdNX0lORk8ucmV2aWV3ID09IDEpIGNvaW4gPSAxOTAwO1xyXG4gICAgICAgIGVsc2UgaWYgKGNjLmZ4LkdhbWVDb25maWcuR01fSU5GTy5yZXZpZXcgPT0gMikgY29pbiA9IDI1MDA7XHJcbiAgICAgICAgLy8gY29uc29sZS5sb2coXCLoh6rouqvph5HluIE6XCIsY2MuZnguR2FtZUNvbmZpZy5HTV9JTkZPLmNvaW4sXCLmtojogJfph5HluIE6XCIsY29pbik7XHJcbiAgICAgICAgaWYgKGNjLmZ4LkdhbWVDb25maWcuR01fSU5GTy5jb2luIDwgTWF0aC5hYnMoY29pbikpIHtcclxuICAgICAgICAgICAgTWluaUdhbWVTZGsuQVBJLnNob3dUb2FzdChcIumHkeW4geS4jei2s++8jOaXoOazleWKoOaXtumXtFwiKTtcclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgdGhpcy5ydW5SZXdpdmUoLWNvaW4pO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBydW5SZXdpdmUoZGF0YSkge1xyXG4gICAgICAgIGNvbnNvbGUubG9nKFwi5aSN5rS75Zue6LCD5Ye95pWw5YaFXCIsIGRhdGEpO1xyXG4gICAgICAgIGNjLmZ4LkdhbWVUb29sLmNoYW5nZUNvaW4oZGF0YSk7XHJcbiAgICAgICAgTWluaUdhbWVTZGsuQVBJLnNob3dUb2FzdChcIue7p+e7rea4uOaIj1wiKTtcclxuXHJcbiAgICAgICAgaWYgKGNjLmZ4LkdhbWVDb25maWcuR01fSU5GTy5yZXZpZXcgPCAyKVxyXG4gICAgICAgICAgICBjYy5meC5HYW1lQ29uZmlnLkdNX0lORk8ucmV2aWV3ICs9IDE7XHJcblxyXG4gICAgICAgIHRoaXMuZ2FtZU92ZXIgPSBmYWxzZTtcclxuICAgICAgICB0aGlzLnRpbWVOdW1iZXIgPSAyMTtcclxuICAgICAgICB0aGlzLmFkZF9UaW1lICs9IDIwO1xyXG4gICAgICAgIHRoaXMucGF1c2UgPSBmYWxzZTtcclxuICAgICAgICB0aGlzLm5vZGUucGFyZW50LnBhcmVudC5nZXRDaGlsZEJ5TmFtZShcIkxvc2VcIikuYWN0aXZlID0gZmFsc2U7XHJcbiAgICAgICAgdGhpcy5zdGFydFRpbWVDdXREb3duKCk7XHJcbiAgICB9XHJcblxyXG5cclxuXHJcbiAgICBob21lQnRuKCkge1xyXG4gICAgICAgIC8vIGFsZXJ0KFwi5ri45oiP5aSx6LSlXCIpO1xyXG4gICAgICAgIGNjLmZ4LkF1ZGlvTWFuYWdlci5faW5zdGFuY2UucGxheUVmZmVjdChcImFubml1X0JpZ1wiLCBudWxsKTtcclxuICAgICAgICBpZiAoIXRoaXMuaG9tZUNhblRvdWNoKSByZXR1cm47XHJcbiAgICAgICAgdGhpcy5ob21lQ2FuVG91Y2ggPSBmYWxzZTtcclxuICAgICAgICB0aGlzLm5vZGUucGFyZW50LnBhcmVudC5nZXRDaGlsZEJ5TmFtZShcIkxvc2VcIikuYWN0aXZlID0gdHJ1ZTtcclxuICAgICAgICB0aGlzLm5vZGUucGFyZW50LnBhcmVudC5nZXRDaGlsZEJ5TmFtZShcIkxvc2VcIikuZ2V0Q2hpbGRCeU5hbWUoXCJUaW1lXCIpLmFjdGl2ZSA9IGZhbHNlO1xyXG4gICAgICAgIHRoaXMubm9kZS5wYXJlbnQucGFyZW50LmdldENoaWxkQnlOYW1lKFwiTG9zZVwiKS5nZXRDaGlsZEJ5TmFtZShcIkJvb21cIikuYWN0aXZlID0gZmFsc2U7XHJcbiAgICAgICAgdGhpcy5ub2RlLnBhcmVudC5wYXJlbnQuZ2V0Q2hpbGRCeU5hbWUoXCJMb3NlXCIpLmdldENoaWxkQnlOYW1lKFwiTG9ja1wiKS5hY3RpdmUgPSBmYWxzZTtcclxuICAgICAgICB0aGlzLm5vZGUucGFyZW50LnBhcmVudC5nZXRDaGlsZEJ5TmFtZShcIkxvc2VcIikuZ2V0Q2hpbGRCeU5hbWUoXCJIZWFsdGhcIikuYWN0aXZlID0gdHJ1ZTtcclxuICAgICAgICBsZXQgZGF0YSA9IHtcclxuICAgICAgICAgICAgdGltZTogdGhpcy5jb3VudF9UaW1lLFxyXG4gICAgICAgICAgICBhZGRfVGltZTogdGhpcy5hZGRfVGltZSxcclxuICAgICAgICAgICAgcmVzdWx0OiBcImZhaWxcIlxyXG4gICAgICAgIH1cclxuICAgICAgICBjYy5meC5HYW1lVG9vbC5zaHVzaHVfVHJhY2soXCJmaW5pc2hfc3RhZ2VcIiwgZGF0YSk7XHJcbiAgICAgICAgaWYgKHRoaXMuZ2FtZVN0YXJ0ID09IHRydWUpIHtcclxuICAgICAgICAgICAgY2MuZnguR2FtZVRvb2wuc2V0VXNlckhlYWx0aCgtMSwgKGRhdGEpID0+IHtcclxuICAgICAgICAgICAgfSlcclxuICAgICAgICB9XHJcbiAgICAgICAgLy8gdGhpcy5ub2RlLnBhcmVudC5wYXJlbnQucGFyZW50LmRlc3Ryb3koKTtcclxuICAgIH1cclxuXHJcbiAgICByZXR1cm5Ib21lKCkge1xyXG4gICAgICAgIGNjLmZ4LkF1ZGlvTWFuYWdlci5faW5zdGFuY2UucGxheUVmZmVjdChcImFubml1X0JpZ1wiLCBudWxsKTtcclxuICAgICAgICBpZiAoTWFwQ29ucm9sZXIuX2luc3RhbmNlID0gbnVsbCkge1xyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG4gICAgICAgIC8vIE1pbmlHYW1lU2RrLkFQSS5zaG93VG9hc3QoXCLkvZPlipvlgLzlh4/lsJFcIik7XHJcbiAgICAgICAgLy8gTWFwQ29ucm9sZXIuX2luc3RhbmNlID0gbnVsbDtcclxuICAgICAgICBjYy5meC5HYW1lQ29uZmlnLkxFVkVMX0lORk9faW5pdChmYWxzZSwgMCk7XHJcbiAgICAgICAgaWYgKHRoaXMubmV3X21vZGUgPT0gMykge1xyXG4gICAgICAgICAgICB0aGlzLm5vZGUucGFyZW50LnBhcmVudC5nZXRDaGlsZEJ5TmFtZShcIldpblwiKS5hY3RpdmUgPSBmYWxzZTtcclxuICAgICAgICAgICAgdGhpcy5vcGVuTmV3TW9kZSgxKTtcclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuICAgICAgICBjYy5meC5BdWRpb01hbmFnZXIuX2luc3RhbmNlLnBsYXlFZmZlY3QoXCJ6aHVhbjFcIiwgbnVsbCk7XHJcbiAgICAgICAgdGhpcy5ub2RlLnBhcmVudC5wYXJlbnQucGFyZW50LmdldENoaWxkQnlOYW1lKFwiemh1YW5jaGFuZ1wiKS5hY3RpdmUgPSB0cnVlO1xyXG4gICAgICAgIHRoaXMubm9kZS5wYXJlbnQucGFyZW50LnBhcmVudC5nZXRDaGlsZEJ5TmFtZShcInpodWFuY2hhbmdcIikuZ2V0Q29tcG9uZW50KHNwLlNrZWxldG9uKS5zZXRBbmltYXRpb24oMSwgXCJ1cFwiLCBmYWxzZSk7XHJcbiAgICAgICAgY2MuZGlyZWN0b3IucHJlbG9hZFNjZW5lKFwiSG9tZVNjZW5lXCIsIChlcnIsIGFzc2V0KSA9PiB7XHJcbiAgICAgICAgICAgIGlmIChlcnIpIHtcclxuICAgICAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoJ+WKqOaAgeWKoOi9vSBQcmVmYWIg5aSx6LSlOicsIGVycik7XHJcbiAgICAgICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgfSk7XHJcblxyXG4gICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICAgICAgICBjYy5kaXJlY3Rvci5sb2FkU2NlbmUoXCJIb21lU2NlbmVcIik7XHJcbiAgICAgICAgfSwgMTIwMCk7XHJcbiAgICB9XHJcblxyXG4gICAgLy/liKTmlq3muLjmiI/lpLHotKVcclxuICAgIGZhaWxMZXZlbCh0eXBlKSB7XHJcbiAgICAgICAgdGhpcy5zdG9wVGltZUN1dERvd24oKTtcclxuICAgICAgICBpZiAodGhpcy5nYW1lT3ZlciA9PSB0cnVlIHx8IHRoaXMuZ2FtZVdpbiA9PSB0cnVlKSB7XHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGxldCB0aW1lID0gMDtcclxuICAgICAgICB0aGlzLmdhbWVPdmVyID0gdHJ1ZTtcclxuICAgICAgICBpZiAodHlwZSA9PSBcImJvb21cIikge1xyXG4gICAgICAgICAgICB0aW1lID0gMjAwMDtcclxuICAgICAgICB9XHJcbiAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgICAgICAgIHRoaXMubm9kZS5wYXJlbnQucGFyZW50LmdldENoaWxkQnlOYW1lKFwiTG9zZVwiKS5hY3RpdmUgPSB0cnVlO1xyXG4gICAgICAgICAgICB0aGlzLm5vZGUucGFyZW50LnBhcmVudC5nZXRDaGlsZEJ5TmFtZShcIkxvc2VcIikuZ2V0Q2hpbGRCeU5hbWUoXCJUaW1lXCIpLmFjdGl2ZSA9IHRydWU7XHJcbiAgICAgICAgICAgIHRoaXMubm9kZS5wYXJlbnQucGFyZW50LmdldENoaWxkQnlOYW1lKFwiTG9zZVwiKS5nZXRDaGlsZEJ5TmFtZShcIkJvb21cIikuYWN0aXZlID0gZmFsc2U7XHJcbiAgICAgICAgICAgIGxldCBidXlCdG4gPSB0aGlzLm5vZGUucGFyZW50LnBhcmVudC5nZXRDaGlsZEJ5TmFtZShcIkxvc2VcIikuZ2V0Q2hpbGRCeU5hbWUoXCJUaW1lXCIpLmdldENoaWxkQnlOYW1lKFwiYnV5QnRuXCIpO1xyXG4gICAgICAgICAgICBidXlCdG4uZ2V0Q2hpbGRCeU5hbWUoXCJjb2luMVwiKS5hY3RpdmUgPSBidXlCdG4uZ2V0Q2hpbGRCeU5hbWUoXCJjb2luMlwiKS5hY3RpdmUgPSBidXlCdG4uZ2V0Q2hpbGRCeU5hbWUoXCJjb2luM1wiKS5hY3RpdmUgPSBmYWxzZTtcclxuICAgICAgICAgICAgaWYgKGNjLmZ4LkdhbWVDb25maWcuR01fSU5GTy5yZXZpZXcgPT0gMCkgYnV5QnRuLmdldENoaWxkQnlOYW1lKFwiY29pbjFcIikuYWN0aXZlID0gdHJ1ZTtcclxuICAgICAgICAgICAgZWxzZSBpZiAoY2MuZnguR2FtZUNvbmZpZy5HTV9JTkZPLnJldmlldyA9PSAxKSBidXlCdG4uZ2V0Q2hpbGRCeU5hbWUoXCJjb2luMlwiKS5hY3RpdmUgPSB0cnVlO1xyXG4gICAgICAgICAgICBlbHNlIGlmIChjYy5meC5HYW1lQ29uZmlnLkdNX0lORk8ucmV2aWV3ID09IDIpIGJ1eUJ0bi5nZXRDaGlsZEJ5TmFtZShcImNvaW4zXCIpLmFjdGl2ZSA9IHRydWU7XHJcbiAgICAgICAgICAgIGlmICh0eXBlKSB7XHJcbiAgICAgICAgICAgICAgICBpZiAodHlwZSA9PSBcImJvb21cIikge1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMubm9kZS5wYXJlbnQucGFyZW50LmdldENoaWxkQnlOYW1lKFwiTG9zZVwiKS5nZXRDaGlsZEJ5TmFtZShcIlRpbWVcIikuYWN0aXZlID0gZmFsc2U7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5ub2RlLnBhcmVudC5wYXJlbnQuZ2V0Q2hpbGRCeU5hbWUoXCJMb3NlXCIpLmdldENoaWxkQnlOYW1lKFwiQm9vbVwiKS5hY3RpdmUgPSB0cnVlO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfSwgdGltZSk7XHJcblxyXG4gICAgICAgIC8vIGNvbnNvbGUubG9nKFwi5ri45oiP5aSx6LSlXCIpO1xyXG4gICAgfVxyXG5cclxuICAgIC8v5omT5byA5paw5qih5byP5by556qXXHJcbiAgICBvcGVuTmV3TW9kZSh0eXBlKSB7XHJcbiAgICAgICAgbGV0IGluZGV4ID0gMDtcclxuICAgICAgICBjb25zdCBCTE9DS1NfUEVSX0ZSQU1FID0gNTsgLy8g5q+P5bin6ZSA5q+B55qE5pa55Z2X5pWw6YePXHJcbiAgICAgICAgY29uc3QgZGVzdHJveUJsb2NrcyA9ICgpID0+IHtcclxuICAgICAgICAgICAgY29uc3QgZW5kSW5kZXggPSBNYXRoLm1pbihpbmRleCArIEJMT0NLU19QRVJfRlJBTUUsIHRoaXMuYmxvY2tzLmxlbmd0aCk7XHJcbiAgICAgICAgICAgIGZvciAoOyBpbmRleCA8IGVuZEluZGV4OyBpbmRleCsrKSB7XHJcbiAgICAgICAgICAgICAgICBpZiAodGhpcy5ibG9ja3NbaW5kZXhdKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5ibG9ja3NbaW5kZXhdLmRlc3Ryb3koKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAvLyDlpoLmnpzov5jmnInmlrnlnZfmnKrplIDmr4HvvIzkuIvkuIDluKfnu6fnu61cclxuICAgICAgICAgICAgaWYgKGluZGV4IDwgdGhpcy5ibG9ja3MubGVuZ3RoKSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLnNjaGVkdWxlT25jZShkZXN0cm95QmxvY2tzLCAwKTtcclxuICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH07XHJcbiAgICAgICAgLy8g5byA5aeL5YiG5bin6ZSA5q+B5pa55Z2XXHJcbiAgICAgICAgZGVzdHJveUJsb2NrcygpO1xyXG4gICAgICAgIHRoaXMubm9kZS5wYXJlbnQucGFyZW50LmdldENoaWxkQnlOYW1lKFwiTmV3TW9kZVwiKS5hY3RpdmUgPSB0cnVlO1xyXG4gICAgICAgIHRoaXMubm9kZS5wYXJlbnQucGFyZW50LmdldENoaWxkQnlOYW1lKFwiTmV3TW9kZVwiKS5nZXRDb21wb25lbnQoXCJOZXdNb2RlXCIpLnNldE1vZGUodHlwZSk7XHJcbiAgICB9XHJcblxyXG5cclxuICAgIGRvd25Eb29yKGNvbG9yLCB0eXBlKSB7XHJcbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0aGlzLndhbGxBcnJheS5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgICAgICBpZiAodGhpcy53YWxsQXJyYXlbaV0uZ2V0Q2hpbGRCeU5hbWUoXCJ3YWxsXCIpLmdldENvbXBvbmVudChcIldhbGxcIikuY29sb3IgPT0gY29sb3IpIHtcclxuICAgICAgICAgICAgICAgIGlmICh0eXBlKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKHR5cGUgPT0gNSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy53YWxsQXJyYXlbaV0uZ2V0Q2hpbGRCeU5hbWUoXCJ3YWxsXCIpLmdldENvbXBvbmVudChcIldhbGxcIikuc3BlY2lhbCA9PSAxKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLndhbGxBcnJheVtpXS5nZXRDaGlsZEJ5TmFtZShcIndhbGxcIikuZ2V0Q29tcG9uZW50KFwiV2FsbFwiKS5kb3duRG9vcigpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIGVsc2UgdGhpcy53YWxsQXJyYXlbaV0uZ2V0Q2hpbGRCeU5hbWUoXCJ3YWxsXCIpLmdldENvbXBvbmVudChcIldhbGxcIikuZG93bkRvb3IoKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIGVsc2UgdGhpcy53YWxsQXJyYXlbaV0uZ2V0Q2hpbGRCeU5hbWUoXCJ3YWxsXCIpLmdldENvbXBvbmVudChcIldhbGxcIikuZG93bkRvb3IoKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICB1cERvb3IoKSB7XHJcbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0aGlzLndhbGxBcnJheS5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgICAgICBpZiAodGhpcy53YWxsQXJyYXlbaV0uZ2V0Q2hpbGRCeU5hbWUoXCJ3YWxsXCIpLm9wYWNpdHkgPT0gMCkge1xyXG4gICAgICAgICAgICAgICAgdGhpcy53YWxsQXJyYXlbaV0uZ2V0Q2hpbGRCeU5hbWUoXCJ3YWxsXCIpLmdldENvbXBvbmVudChcIldhbGxcIikudXBEb29yKCk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgLy/lvIDlp4vlgJLorqHml7ZcclxuICAgIHN0YXJ0VGltZUN1dERvd24oKSB7XHJcbiAgICAgICAgdGhpcy5zY2hlZHVsZUNhbGxiYWNrID0gZnVuY3Rpb24gKCkge1xyXG4gICAgICAgICAgICBpZiAodGhpcy5wYXVzZSkgcmV0dXJuO1xyXG4gICAgICAgICAgICBpZiAodGhpcy50aW1lTnVtYmVyIDw9IDApIHtcclxuICAgICAgICAgICAgICAgIHRoaXMuc3RvcFRpbWVDdXREb3duKCk7XHJcbiAgICAgICAgICAgICAgICB2YXIgdGltZVRlbXAgPSBjYy5meC5HYW1lVG9vbC5nZXRUaW1lTWFyZ2luKHRoaXMudGltZU51bWJlcik7XHJcbiAgICAgICAgICAgICAgICBOdW1iZXJUb0ltYWdlLmdldFRpbWVNYXJnaW4odGhpcy50aW1lTnVtYmVyLCA1MCwgXCJ0aW1lX1wiLCB0aGlzLnRpbWVMYWJlbClcclxuICAgICAgICAgICAgICAgIC8vIHRoaXMudGltZUxhYmVsLnN0cmluZyA9IHRpbWVUZW1wLnRvU3RyaW5nKCk7XHJcbiAgICAgICAgICAgICAgICBpZiAoIXRoaXMucGF1c2UpIHRoaXMuZmFpbExldmVsKFwidGltZVwiKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgICAgIHRoaXMudGltZU51bWJlciAtPSAxO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5jb3VudF9UaW1lICs9IDE7XHJcbiAgICAgICAgICAgICAgICB2YXIgdGltZVRlbXAgPSBjYy5meC5HYW1lVG9vbC5nZXRUaW1lTWFyZ2luKHRoaXMudGltZU51bWJlcik7XHJcbiAgICAgICAgICAgICAgICBOdW1iZXJUb0ltYWdlLmdldFRpbWVNYXJnaW4odGhpcy50aW1lTnVtYmVyLCA1MCwgXCJ0aW1lX1wiLCB0aGlzLnRpbWVMYWJlbClcclxuICAgICAgICAgICAgICAgIC8vIHRoaXMudGltZUxhYmVsLnN0cmluZyA9IHRpbWVUZW1wLnRvU3RyaW5nKCk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9LmJpbmQodGhpcyk7XHJcbiAgICAgICAgdGhpcy5zY2hlZHVsZSh0aGlzLnNjaGVkdWxlQ2FsbGJhY2ssIDEpO1xyXG4gICAgfVxyXG4gICAgLy8g5YGc5q2i5YCS6K6h5pe2XHJcbiAgICBzdG9wVGltZUN1dERvd24oKSB7XHJcbiAgICAgICAgaWYgKHRoaXMuc2NoZWR1bGVDYWxsYmFjaykge1xyXG4gICAgICAgICAgICB0aGlzLnVuc2NoZWR1bGUodGhpcy5zY2hlZHVsZUNhbGxiYWNrKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgLy/kvb/nlKjml7bpl7TpgZPlhbdcclxuICAgIHVzZVRpbWVQcm9wKCkge1xyXG4gICAgICAgIGlmICh0aGlzLm5vZGUucGFyZW50LmdldENoaWxkQnlOYW1lKFwiSWNlXCIpLmFjdGl2ZSA9PSB0cnVlIHx8IHRoaXMuaGFtbWVyID09IHRydWVcclxuICAgICAgICAgICAgfHwgdGhpcy5tYWdpY01hc2suYWN0aXZlID09IHRydWUgfHwgdGhpcy50aW1lTnVtYmVyIDw9IDEpIHtcclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuICAgICAgICBsZXQgZnJlZXplQnRuID0gdGhpcy5ub2RlLnBhcmVudC5nZXRDaGlsZEJ5TmFtZShcIkJvdHRvbVwiKS5nZXRDaGlsZEJ5TmFtZShcInRpbWVCdG5cIik7XHJcbiAgICAgICAgaWYgKGZyZWV6ZUJ0bi5nZXRDb21wb25lbnQoXCJidG5Db250cm9sXCIpLl90b3VjaCkge1xyXG4gICAgICAgICAgICBmcmVlemVCdG4uZ2V0Q29tcG9uZW50KFwiYnRuQ29udHJvbFwiKS5zZXRUb3VjaChmYWxzZSk7XHJcbiAgICAgICAgICAgIGlmIChjYy5meC5HYW1lQ29uZmlnLkdNX0lORk8uZnJlZXplQW1vdW50IDwgMSkge1xyXG4gICAgICAgICAgICAgICAgaWYgKGNjLmZ4LkdhbWVDb25maWcuR01fSU5GTy5jb2luIDwgMTUwMCkge1xyXG4gICAgICAgICAgICAgICAgICAgIE1pbmlHYW1lU2RrLkFQSS5zaG93VG9hc3QoXCLph5HluIHkuI3otrPvvIzml6Dms5XotK3kubDpgZPlhbdcIik7XHJcbiAgICAgICAgICAgICAgICAgICAgZnJlZXplQnRuLmdldENvbXBvbmVudChcImJ0bkNvbnRyb2xcIikuc2V0VG91Y2godHJ1ZSk7XHJcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgdGhpcy5ub2RlLnBhcmVudC5wYXJlbnQuZ2V0Q2hpbGRCeU5hbWUoXCJwcm9wV2luZG93XCIpLmFjdGl2ZSA9IHRydWU7XHJcbiAgICAgICAgICAgICAgICB0aGlzLm5vZGUucGFyZW50LnBhcmVudC5wYXJlbnQuZ2V0Q29tcG9uZW50KFwiU2NlbmVNYW5hZ2VyXCIpLm9wZW5Qcm9wQnV5KFwiZnJlZXplXCIpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgaWYgKCF0aGlzLm5vZGUucGFyZW50LmdldENoaWxkQnlOYW1lKFwiSWNlXCIpLmFjdGl2ZSAmJiAhdGhpcy5wYXVzZSkge1xyXG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHRpbWVzdGFtcCA9IERhdGUubm93KCk7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5mcmVlemVNYXNrLmFjdGl2ZSA9IHRydWU7XHJcblxyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMucGF1c2UgPSB0cnVlO1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMubm9kZS5wYXJlbnQuZ2V0Q2hpbGRCeU5hbWUoXCJJY2VcIikuYWN0aXZlID0gdHJ1ZTtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLm5vZGUucGFyZW50LmdldENoaWxkQnlOYW1lKFwiVG9wXCIpLmdldENoaWxkQnlOYW1lKFwiSWNlXCIpLmFjdGl2ZSA9IHRydWU7XHJcblxyXG4gICAgICAgICAgICAgICAgICAgIGNjLmZ4LkdhbWVDb25maWcuR01fSU5GTy5mcmVlemVBbW91bnQgLT0gMTtcclxuICAgICAgICAgICAgICAgICAgICBpZiAoY2MuZnguR2FtZUNvbmZpZy5HTV9JTkZPLmZyZWV6ZUFtb3VudCA8IDApXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNjLmZ4LkdhbWVDb25maWcuR01fSU5GTy5mcmVlemVBbW91bnQgPSAwO1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuaWNlTGFiZWwuc3RyaW5nID0gY2MuZnguR2FtZUNvbmZpZy5HTV9JTkZPLmZyZWV6ZUFtb3VudC50b1N0cmluZygpO1xyXG4gICAgICAgICAgICAgICAgICAgIGxldCBwcm9wSW5mbyA9IGNjLmZ4LlN0b3JhZ2VNZXNzYWdlLmdldFN0b3JhZ2UoXCJwcm9wXCIpO1xyXG4gICAgICAgICAgICAgICAgICAgIHByb3BJbmZvLmZyZWV6ZUFtb3VudCA9IGNjLmZ4LkdhbWVDb25maWcuR01fSU5GTy5mcmVlemVBbW91bnQ7XHJcbiAgICAgICAgICAgICAgICAgICAgcHJvcEluZm8udGltZXN0YW1wID0gdGltZXN0YW1wO1xyXG4gICAgICAgICAgICAgICAgICAgIGNjLmZ4LlN0b3JhZ2VNZXNzYWdlLnNldFN0b3JhZ2UoXCJwcm9wXCIsIHByb3BJbmZvKTtcclxuICAgICAgICAgICAgICAgICAgICBjYy5meC5HYW1lVG9vbC5zZXRVc2VyUHJvcCgyMDAxLCBjYy5meC5HYW1lQ29uZmlnLkdNX0lORk8uZnJlZXplQW1vdW50LCAoZGF0YSkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgIH0pXHJcbiAgICAgICAgICAgICAgICAgICAgbGV0IGRhdGEgPSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGlkOiBcIjIwMDFcIixcclxuICAgICAgICAgICAgICAgICAgICAgICAgbnVtOiAtMVxyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICBjYy5meC5HYW1lVG9vbC5zaHVzaHVfVHJhY2soXCJyZXNvdXJjZV9jb3N0XCIsIGRhdGEpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgZWxzZSBNaW5pR2FtZVNkay5BUEkuc2hvd1RvYXN0KFwi6YGT5YW35L2/55So5Lit77yM6K+356iN5ZCO5YaN6K+VXCIpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG5cclxuXHJcbiAgICB9XHJcblxyXG4gICAgLy/op6PlvIDml7bpl7Tlhrvnu5NcclxuICAgIG9wZW5JY2UoKSB7XHJcbiAgICAgICAgaWYgKHRoaXMubm9kZS5wYXJlbnQuZ2V0Q2hpbGRCeU5hbWUoXCJJY2VcIikuYWN0aXZlKSB7XHJcbiAgICAgICAgICAgIHRoaXMuZnJlZXplTWFzay5hY3RpdmUgPSBmYWxzZTtcclxuICAgICAgICAgICAgbGV0IGZyZWV6ZUJ0biA9IHRoaXMubm9kZS5wYXJlbnQuZ2V0Q2hpbGRCeU5hbWUoXCJCb3R0b21cIikuZ2V0Q2hpbGRCeU5hbWUoXCJ0aW1lQnRuXCIpO1xyXG4gICAgICAgICAgICBmcmVlemVCdG4uZ2V0Q29tcG9uZW50KFwiYnRuQ29udHJvbFwiKS5zZXRUb3VjaCh0cnVlKTtcclxuICAgICAgICAgICAgdGhpcy5ub2RlLnBhcmVudC5nZXRDaGlsZEJ5TmFtZShcIkljZVwiKS5hY3RpdmUgPSBmYWxzZTtcclxuICAgICAgICAgICAgdGhpcy5ub2RlLnBhcmVudC5nZXRDaGlsZEJ5TmFtZShcIlRvcFwiKS5nZXRDaGlsZEJ5TmFtZShcIkljZVwiKS5hY3RpdmUgPSBmYWxzZTtcclxuICAgICAgICAgICAgdGhpcy5wYXVzZSA9IGZhbHNlO1xyXG4gICAgICAgICAgICAvLyB0aGlzLnN0YXJ0VGltZUN1dERvd24oKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgaGFuZGxlQnV5U3VjY2VzcyhkYXRhKSB7XHJcbiAgICAgICAgdGhpcy5wYXVzZSA9IGZhbHNlO1xyXG4gICAgICAgIGNvbnN0IHRpbWVzdGFtcCA9IERhdGUubm93KCk7XHJcbiAgICAgICAgLy8gY29uc29sZS5sb2coXCLlm57osIPlh73mlbDlhoU6XCIsdGhpcy5wYXVzZSk7XHJcbiAgICAgICAgbGV0IGZyZWV6ZUJ0biA9IHRoaXMubm9kZS5wYXJlbnQuZ2V0Q2hpbGRCeU5hbWUoXCJCb3R0b21cIikuZ2V0Q2hpbGRCeU5hbWUoXCJ0aW1lQnRuXCIpO1xyXG4gICAgICAgIGxldCBoYW1tZXJCdG4gPSB0aGlzLm5vZGUucGFyZW50LmdldENoaWxkQnlOYW1lKFwiQm90dG9tXCIpLmdldENoaWxkQnlOYW1lKFwiZGVzdHJveUJ0blwiKTtcclxuICAgICAgICBsZXQgbWFnaWNCdG4gPSB0aGlzLm5vZGUucGFyZW50LmdldENoaWxkQnlOYW1lKFwiQm90dG9tXCIpLmdldENoaWxkQnlOYW1lKFwibWFnaWNCdG5cIik7XHJcbiAgICAgICAgaWYgKGRhdGEgPT0gXCJmcmVlemVBbW91bnRcIikgZnJlZXplQnRuLmdldENvbXBvbmVudChcImJ0bkNvbnRyb2xcIikuc2V0VG91Y2godHJ1ZSk7XHJcbiAgICAgICAgZWxzZSBpZiAoZGF0YSA9PSBcImhhbW1lckFtb3VudFwiKSBoYW1tZXJCdG4uZ2V0Q29tcG9uZW50KFwiYnRuQ29udHJvbFwiKS5zZXRUb3VjaCh0cnVlKTtcclxuICAgICAgICBlbHNlIGlmIChkYXRhID09IFwibWFnaWNBbW91bnRcIikgbWFnaWNCdG4uZ2V0Q29tcG9uZW50KFwiYnRuQ29udHJvbFwiKS5zZXRUb3VjaCh0cnVlKTtcclxuICAgICAgICBpZiAoZGF0YSA9PSBcImZyZWV6ZUFtb3VudFwiKSB7XHJcbiAgICAgICAgICAgIGNjLmZ4LkdhbWVDb25maWcuR01fSU5GTy5mcmVlemVBbW91bnQgKz0gMztcclxuICAgICAgICAgICAgbGV0IHByb3BJbmZvID0gY2MuZnguU3RvcmFnZU1lc3NhZ2UuZ2V0U3RvcmFnZShcInByb3BcIik7XHJcbiAgICAgICAgICAgIHByb3BJbmZvLmZyZWV6ZUFtb3VudCA9IGNjLmZ4LkdhbWVDb25maWcuR01fSU5GTy5mcmVlemVBbW91bnQ7XHJcbiAgICAgICAgICAgIHByb3BJbmZvLnRpbWVzdGFtcCA9IHRpbWVzdGFtcDtcclxuICAgICAgICAgICAgY2MuZnguU3RvcmFnZU1lc3NhZ2Uuc2V0U3RvcmFnZShcInByb3BcIiwgcHJvcEluZm8pO1xyXG4gICAgICAgICAgICB0aGlzLm5vZGUucGFyZW50LnBhcmVudC5wYXJlbnQuZ2V0Q29tcG9uZW50KFwiU2NlbmVNYW5hZ2VyXCIpLmNsb3NlUHJvcEJ1eSgpO1xyXG4gICAgICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgICAgICAgICAgIHRoaXMuaWNlTGFiZWwuc3RyaW5nID0gY2MuZnguR2FtZUNvbmZpZy5HTV9JTkZPLmZyZWV6ZUFtb3VudC50b1N0cmluZygpO1xyXG4gICAgICAgICAgICAgICAgTWluaUdhbWVTZGsuQVBJLnNob3dUb2FzdChcIui0reS5sOWGu+e7k+aXtumXtOmBk+WFt+aIkOWKn1wiKTtcclxuICAgICAgICAgICAgfSwgMjAwKTtcclxuXHJcblxyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIGlmIChkYXRhID09IFwibWFnaWNBbW91bnRcIikge1xyXG4gICAgICAgICAgICBjYy5meC5HYW1lQ29uZmlnLkdNX0lORk8ubWFnaWNBbW91bnQgKz0gMztcclxuICAgICAgICAgICAgbGV0IHByb3BJbmZvID0gY2MuZnguU3RvcmFnZU1lc3NhZ2UuZ2V0U3RvcmFnZShcInByb3BcIik7XHJcbiAgICAgICAgICAgIHByb3BJbmZvLm1hZ2ljQW1vdW50ID0gY2MuZnguR2FtZUNvbmZpZy5HTV9JTkZPLm1hZ2ljQW1vdW50O1xyXG4gICAgICAgICAgICBwcm9wSW5mby50aW1lc3RhbXAgPSB0aW1lc3RhbXA7XHJcbiAgICAgICAgICAgIGNjLmZ4LlN0b3JhZ2VNZXNzYWdlLnNldFN0b3JhZ2UoXCJwcm9wXCIsIHByb3BJbmZvKTtcclxuICAgICAgICAgICAgdGhpcy5ub2RlLnBhcmVudC5wYXJlbnQucGFyZW50LmdldENvbXBvbmVudChcIlNjZW5lTWFuYWdlclwiKS5jbG9zZVByb3BCdXkoKTtcclxuICAgICAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgICAgICAgICAgICBNaW5pR2FtZVNkay5BUEkuc2hvd1RvYXN0KFwi6LSt5Lmw6ZSk5a2Q6YGT5YW35oiQ5YqfXCIpO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5tYWdpY0xhYmVsLnN0cmluZyA9IGNjLmZ4LkdhbWVDb25maWcuR01fSU5GTy5tYWdpY0Ftb3VudC50b1N0cmluZygpO1xyXG4gICAgICAgICAgICB9LCAyMDApO1xyXG5cclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSBpZiAoZGF0YSA9PSBcImhhbW1lckFtb3VudFwiKSB7XHJcbiAgICAgICAgICAgIGNjLmZ4LkdhbWVDb25maWcuR01fSU5GTy5oYW1tZXJBbW91bnQgKz0gMztcclxuICAgICAgICAgICAgbGV0IHByb3BJbmZvID0gY2MuZnguU3RvcmFnZU1lc3NhZ2UuZ2V0U3RvcmFnZShcInByb3BcIik7XHJcbiAgICAgICAgICAgIHByb3BJbmZvLmhhbW1lckFtb3VudCA9IGNjLmZ4LkdhbWVDb25maWcuR01fSU5GTy5oYW1tZXJBbW91bnQ7XHJcbiAgICAgICAgICAgIHByb3BJbmZvLnRpbWVzdGFtcCA9IHRpbWVzdGFtcDtcclxuICAgICAgICAgICAgY2MuZnguU3RvcmFnZU1lc3NhZ2Uuc2V0U3RvcmFnZShcInByb3BcIiwgcHJvcEluZm8pO1xyXG4gICAgICAgICAgICB0aGlzLm5vZGUucGFyZW50LnBhcmVudC5wYXJlbnQuZ2V0Q29tcG9uZW50KFwiU2NlbmVNYW5hZ2VyXCIpLmNsb3NlUHJvcEJ1eSgpO1xyXG4gICAgICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgICAgICAgICAgIHRoaXMuaGFtbWVyTGFiZWwuc3RyaW5nID0gY2MuZnguR2FtZUNvbmZpZy5HTV9JTkZPLmhhbW1lckFtb3VudC50b1N0cmluZygpO1xyXG4gICAgICAgICAgICAgICAgTWluaUdhbWVTZGsuQVBJLnNob3dUb2FzdChcIui0reS5sOmtlOazleajkumBk+WFt+aIkOWKn1wiKTtcclxuICAgICAgICAgICAgfSwgMjAwKTtcclxuXHJcbiAgICAgICAgfVxyXG5cclxuXHJcblxyXG4gICAgfVxyXG5cclxuICAgIC8v5L2/55So6ZSk5a2Q6YGT5YW3XHJcbiAgICB1c2VIYW1tZXIoKSB7XHJcbiAgICAgICAgaWYgKHRoaXMubm9kZS5wYXJlbnQuZ2V0Q2hpbGRCeU5hbWUoXCJJY2VcIikuYWN0aXZlID09IHRydWUgfHwgdGhpcy5oYW1tZXIgPT0gdHJ1ZVxyXG4gICAgICAgICAgICB8fCB0aGlzLm1hZ2ljTWFzay5hY3RpdmUgPT0gdHJ1ZSB8fCB0aGlzLnRpbWVOdW1iZXIgPD0gMSkge1xyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGxldCBoYW1tZXJCdG4gPSB0aGlzLm5vZGUucGFyZW50LmdldENoaWxkQnlOYW1lKFwiQm90dG9tXCIpLmdldENoaWxkQnlOYW1lKFwiZGVzdHJveUJ0blwiKTtcclxuICAgICAgICBpZiAoaGFtbWVyQnRuLmdldENvbXBvbmVudChcImJ0bkNvbnRyb2xcIikuX3RvdWNoKSB7XHJcbiAgICAgICAgICAgIGhhbW1lckJ0bi5nZXRDb21wb25lbnQoXCJidG5Db250cm9sXCIpLnNldFRvdWNoKGZhbHNlKTtcclxuICAgICAgICAgICAgaWYgKGNjLmZ4LkdhbWVDb25maWcuR01fSU5GTy5oYW1tZXJBbW91bnQgPCAxKSB7XHJcbiAgICAgICAgICAgICAgICBpZiAoY2MuZnguR2FtZUNvbmZpZy5HTV9JTkZPLmNvaW4gPCAxNTAwKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgTWluaUdhbWVTZGsuQVBJLnNob3dUb2FzdChcIumHkeW4geS4jei2s++8jOaXoOazlei0reS5sOmBk+WFt1wiKTtcclxuICAgICAgICAgICAgICAgICAgICBoYW1tZXJCdG4uZ2V0Q29tcG9uZW50KFwiYnRuQ29udHJvbFwiKS5zZXRUb3VjaCh0cnVlKTtcclxuICAgICAgICAgICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB0aGlzLm5vZGUucGFyZW50LnBhcmVudC5nZXRDaGlsZEJ5TmFtZShcInByb3BXaW5kb3dcIikuYWN0aXZlID0gdHJ1ZTtcclxuICAgICAgICAgICAgICAgIHRoaXMubm9kZS5wYXJlbnQucGFyZW50LnBhcmVudC5nZXRDb21wb25lbnQoXCJTY2VuZU1hbmFnZXJcIikub3BlblByb3BCdXkoXCJoYW1tZXJcIik7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgICAgICBpZiAoIXRoaXMuaGFtbWVyKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgdGltZXN0YW1wID0gRGF0ZS5ub3coKTtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLmhhbW1lck1hc2suYWN0aXZlID0gdHJ1ZTtcclxuXHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5oYW1tZXIgPSB0cnVlO1xyXG4gICAgICAgICAgICAgICAgICAgIGNjLmZ4LkdhbWVDb25maWcuR01fSU5GTy5oYW1tZXJBbW91bnQgLT0gMTtcclxuICAgICAgICAgICAgICAgICAgICBpZiAoY2MuZnguR2FtZUNvbmZpZy5HTV9JTkZPLmhhbW1lckFtb3VudCA8IDApXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNjLmZ4LkdhbWVDb25maWcuR01fSU5GTy5oYW1tZXJBbW91bnQgPSAwO1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuaGFtbWVyTGFiZWwuc3RyaW5nID0gY2MuZnguR2FtZUNvbmZpZy5HTV9JTkZPLmhhbW1lckFtb3VudC50b1N0cmluZygpO1xyXG4gICAgICAgICAgICAgICAgICAgIGxldCBwcm9wSW5mbyA9IGNjLmZ4LlN0b3JhZ2VNZXNzYWdlLmdldFN0b3JhZ2UoXCJwcm9wXCIpO1xyXG4gICAgICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKFwi6ZSk5a2Q6YGT5YW35L+h5oGvOlwiLCBwcm9wSW5mbyk7XHJcbiAgICAgICAgICAgICAgICAgICAgcHJvcEluZm8uaGFtbWVyQW1vdW50ID0gY2MuZnguR2FtZUNvbmZpZy5HTV9JTkZPLmhhbW1lckFtb3VudDtcclxuICAgICAgICAgICAgICAgICAgICBwcm9wSW5mby50aW1lc3RhbXAgPSB0aW1lc3RhbXA7XHJcbiAgICAgICAgICAgICAgICAgICAgY2MuZnguU3RvcmFnZU1lc3NhZ2Uuc2V0U3RvcmFnZShcInByb3BcIiwgcHJvcEluZm8pO1xyXG4gICAgICAgICAgICAgICAgICAgIGNjLmZ4LkdhbWVUb29sLnNldFVzZXJQcm9wKDIwMDIsIGNjLmZ4LkdhbWVDb25maWcuR01fSU5GTy5oYW1tZXJBbW91bnQsIChkYXRhKSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgfSlcclxuICAgICAgICAgICAgICAgICAgICBsZXQgZGF0YSA9IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgaWQ6IFwiMjAwMlwiLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBudW06IC0xXHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIGNjLmZ4LkdhbWVUb29sLnNodXNodV9UcmFjayhcInJlc291cmNlX2Nvc3RcIiwgZGF0YSk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBlbHNlIE1pbmlHYW1lU2RrLkFQSS5zaG93VG9hc3QoXCLpgZPlhbfkvb/nlKjkuK3vvIzor7fnqI3lkI7lho3or5VcIik7XHJcbiAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgfVxyXG5cclxuICAgIH1cclxuXHJcbiAgICBidXlNYWdpYygpIHtcclxuICAgICAgICBpZiAoY2MuZnguR2FtZUNvbmZpZy5HTV9JTkZPLmNvaW4gPCAxNTAwKSB7XHJcbiAgICAgICAgICAgIE1pbmlHYW1lU2RrLkFQSS5zaG93VG9hc3QoXCLph5HluIHkuI3otrPvvIzml6Dms5XotK3kubDpgZPlhbdcIik7XHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcbiAgICAgICAgY2MuZnguR2FtZVRvb2wuYnV5UHJvcCgyMDAzLCB0aGlzLmhhbmRsZUJ1eVN1Y2Nlc3MuYmluZCh0aGlzLCBcIm1hZ2ljQW1vdW50XCIpKTtcclxuICAgIH1cclxuXHJcbiAgICBidXlIYW1tZXIoKSB7XHJcbiAgICAgICAgaWYgKGNjLmZ4LkdhbWVDb25maWcuR01fSU5GTy5jb2luIDwgMTUwMCkge1xyXG4gICAgICAgICAgICBNaW5pR2FtZVNkay5BUEkuc2hvd1RvYXN0KFwi6YeR5biB5LiN6Laz77yM5peg5rOV6LSt5Lmw6YGT5YW3XCIpO1xyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGNjLmZ4LkdhbWVUb29sLmJ1eVByb3AoMjAwMiwgdGhpcy5oYW5kbGVCdXlTdWNjZXNzLmJpbmQodGhpcywgXCJoYW1tZXJBbW91bnRcIikpO1xyXG4gICAgfVxyXG5cclxuICAgIGJ1eUZyZWV6ZSgpIHtcclxuICAgICAgICBpZiAoY2MuZnguR2FtZUNvbmZpZy5HTV9JTkZPLmNvaW4gPCAxNTAwKSB7XHJcbiAgICAgICAgICAgIE1pbmlHYW1lU2RrLkFQSS5zaG93VG9hc3QoXCLph5HluIHkuI3otrPvvIzml6Dms5XotK3kubDpgZPlhbdcIik7XHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcbiAgICAgICAgY2MuZnguR2FtZVRvb2wuYnV5UHJvcCgyMDAxLCB0aGlzLmhhbmRsZUJ1eVN1Y2Nlc3MuYmluZCh0aGlzLCBcImZyZWV6ZUFtb3VudFwiKSk7XHJcbiAgICB9XHJcblxyXG4gICAgLy/kvb/nlKjprZTms5Xmo5Lpmo/mnLrmtojpmaTkuKTkuKrmlrnlnZdcclxuICAgIHVzZU1hZ2ljKCkge1xyXG4gICAgICAgIGlmICh0aGlzLm5vZGUucGFyZW50LmdldENoaWxkQnlOYW1lKFwiSWNlXCIpLmFjdGl2ZSA9PSB0cnVlIHx8IHRoaXMuaGFtbWVyID09IHRydWVcclxuICAgICAgICAgICAgfHwgdGhpcy5tYWdpY01hc2suYWN0aXZlID09IHRydWUgfHwgdGhpcy50aW1lTnVtYmVyIDw9IDEpIHtcclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuICAgICAgICBsZXQgbWFnaWNCdG4gPSB0aGlzLm5vZGUucGFyZW50LmdldENoaWxkQnlOYW1lKFwiQm90dG9tXCIpLmdldENoaWxkQnlOYW1lKFwibWFnaWNCdG5cIik7XHJcbiAgICAgICAgaWYgKG1hZ2ljQnRuLmdldENvbXBvbmVudChcImJ0bkNvbnRyb2xcIikuX3RvdWNoKSB7XHJcbiAgICAgICAgICAgIG1hZ2ljQnRuLmdldENvbXBvbmVudChcImJ0bkNvbnRyb2xcIikuc2V0VG91Y2goZmFsc2UpO1xyXG4gICAgICAgICAgICBpZiAoY2MuZnguR2FtZUNvbmZpZy5HTV9JTkZPLm1hZ2ljQW1vdW50IDwgMSkge1xyXG4gICAgICAgICAgICAgICAgaWYgKGNjLmZ4LkdhbWVDb25maWcuR01fSU5GTy5jb2luIDwgMTUwMCkge1xyXG4gICAgICAgICAgICAgICAgICAgIE1pbmlHYW1lU2RrLkFQSS5zaG93VG9hc3QoXCLph5HluIHkuI3otrPvvIzml6Dms5XotK3kubDpgZPlhbdcIik7XHJcbiAgICAgICAgICAgICAgICAgICAgbWFnaWNCdG4uZ2V0Q29tcG9uZW50KFwiYnRuQ29udHJvbFwiKS5zZXRUb3VjaCh0cnVlKTtcclxuICAgICAgICAgICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB0aGlzLm5vZGUucGFyZW50LnBhcmVudC5nZXRDaGlsZEJ5TmFtZShcInByb3BXaW5kb3dcIikuYWN0aXZlID0gdHJ1ZTtcclxuICAgICAgICAgICAgICAgIHRoaXMubm9kZS5wYXJlbnQucGFyZW50LnBhcmVudC5nZXRDb21wb25lbnQoXCJTY2VuZU1hbmFnZXJcIikub3BlblByb3BCdXkoXCJtYWdpY1wiKTtcclxuICAgICAgICAgICAgICAgIC8vIE1pbmlHYW1lU2RrLkFQSS5zaG93VG9hc3QoXCLprZTms5Xmo5LmlbDph4/kuI3otrMs6Ieq5Yqo6LSt5Lmw6a2U5rOV5qOSXCIpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgY29uc3QgdGltZXN0YW1wID0gRGF0ZS5ub3coKTtcclxuICAgICAgICAgICAgICAgIHRoaXMubWFnaWNNYXNrLmFjdGl2ZSA9IHRydWU7XHJcbiAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLm1hZ2ljTWFzay5hY3RpdmUgPSBmYWxzZTtcclxuICAgICAgICAgICAgICAgICAgICBtYWdpY0J0bi5nZXRDb21wb25lbnQoXCJidG5Db250cm9sXCIpLnNldFRvdWNoKHRydWUpO1xyXG4gICAgICAgICAgICAgICAgfSwgMTAwMCk7XHJcblxyXG4gICAgICAgICAgICAgICAgY2MuZnguR2FtZUNvbmZpZy5HTV9JTkZPLm1hZ2ljQW1vdW50IC09IDE7XHJcbiAgICAgICAgICAgICAgICBpZiAoY2MuZnguR2FtZUNvbmZpZy5HTV9JTkZPLm1hZ2ljQW1vdW50IDwgMClcclxuICAgICAgICAgICAgICAgICAgICBjYy5meC5HYW1lQ29uZmlnLkdNX0lORk8ubWFnaWNBbW91bnQgPSAwO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5tYWdpY0xhYmVsLnN0cmluZyA9IGNjLmZ4LkdhbWVDb25maWcuR01fSU5GTy5tYWdpY0Ftb3VudC50b1N0cmluZygpO1xyXG4gICAgICAgICAgICAgICAgbGV0IHByb3BJbmZvID0gY2MuZnguU3RvcmFnZU1lc3NhZ2UuZ2V0U3RvcmFnZShcInByb3BcIik7XHJcbiAgICAgICAgICAgICAgICBwcm9wSW5mby5tYWdpY0Ftb3VudCA9IGNjLmZ4LkdhbWVDb25maWcuR01fSU5GTy5tYWdpY0Ftb3VudDtcclxuICAgICAgICAgICAgICAgIHByb3BJbmZvLnRpbWVzdGFtcCA9IHRpbWVzdGFtcDtcclxuICAgICAgICAgICAgICAgIGNjLmZ4LlN0b3JhZ2VNZXNzYWdlLnNldFN0b3JhZ2UoXCJwcm9wXCIsIHByb3BJbmZvKTtcclxuICAgICAgICAgICAgICAgIGNjLmZ4LkdhbWVUb29sLnNldFVzZXJQcm9wKDIwMDMsIGNjLmZ4LkdhbWVDb25maWcuR01fSU5GTy5tYWdpY0Ftb3VudCwgKGRhdGEpID0+IHtcclxuICAgICAgICAgICAgICAgIH0pXHJcbiAgICAgICAgICAgICAgICBsZXQgZGF0YSA9IHtcclxuICAgICAgICAgICAgICAgICAgICBpZDogXCIyMDAzXCIsXHJcbiAgICAgICAgICAgICAgICAgICAgbnVtOiAtMVxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgY2MuZnguR2FtZVRvb2wuc2h1c2h1X1RyYWNrKFwicmVzb3VyY2VfY29zdFwiLCBkYXRhKTtcclxuICAgICAgICAgICAgICAgIGxldCBub21hbEFycmF5ID0gW107XHJcbiAgICAgICAgICAgICAgICAvLyB0aGlzLm1hZ2ljQnRuLm5vZGUuYWN0aXZlID0gZmFsc2U7XHJcbiAgICAgICAgICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRoaXMuYmxvY2tzLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgLy8gY29uc29sZS5sb2coXCLmlrnlnZfnsbvlnotcIix0aGlzLmJsb2Nrc1tpXS5nZXRDb21wb25lbnQoXCJCbG9ja1wiKS50eXBlKTtcclxuICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy5ibG9ja3NbaV0uZ2V0Q29tcG9uZW50KFwiQmxvY2tcIikudHlwZSA9PSAzKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMubG9hY2tBcnJheS5wdXNoKHRoaXMuYmxvY2tzW2ldKTtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgZWxzZSBpZiAodGhpcy5ibG9ja3NbaV0uZ2V0Q29tcG9uZW50KFwiQmxvY2tcIikudHlwZSA9PSA0KSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuZnJlZXplQXJyYXkucHVzaCh0aGlzLmJsb2Nrc1tpXSk7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIGVsc2UgaWYgKHRoaXMuYmxvY2tzW2ldLmdldENvbXBvbmVudChcIkJsb2NrXCIpLnR5cGUgPT0gMTApIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMuYmxvY2tzW2ldLmdldENvbXBvbmVudChcIkJsb2NrXCIpLmJsb2NrX0luZm8ubm9kZSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9tYWxBcnJheS5wdXNoKHRoaXMuYmxvY2tzW2ldLmdldENvbXBvbmVudChcIkJsb2NrXCIpLmJsb2NrX0luZm8ubm9kZSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSBub21hbEFycmF5LnB1c2godGhpcy5ibG9ja3NbaV0pO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgbm9tYWxBcnJheS5wdXNoKHRoaXMuYmxvY2tzW2ldKTtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBpZiAobm9tYWxBcnJheS5sZW5ndGggPiAxKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgbm9tYWxBcnJheSA9IGNjLmZ4LkdhbWVUb29sLnNodWZmbGVBcnJheShub21hbEFycmF5KTtcclxuICAgICAgICAgICAgICAgICAgICBub21hbEFycmF5WzBdLmdldENvbXBvbmVudChcIkJsb2NrXCIpLmVsaW1pbmF0ZSgpO1xyXG4gICAgICAgICAgICAgICAgICAgIGxldCB0aW1lID0gMDtcclxuICAgICAgICAgICAgICAgICAgICBpZiAobm9tYWxBcnJheVswXS5nZXRDb21wb25lbnQoXCJCbG9ja1wiKS50eXBlID09IDEgfHwgbm9tYWxBcnJheVswXS5nZXRDb21wb25lbnQoXCJCbG9ja1wiKS50eXBlID09IDkpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgdGltZSA9IDIwMDtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKHRpbWUgPiAwKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9tYWxBcnJheVsxXS5nZXRDb21wb25lbnQoXCJCbG9ja1wiKS5lbGltaW5hdGUoKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgfSwgdGltZSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIG5vbWFsQXJyYXlbMV0uZ2V0Q29tcG9uZW50KFwiQmxvY2tcIikuZWxpbWluYXRlKCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBlbHNlIGlmIChub21hbEFycmF5Lmxlbmd0aCA9PSAxKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgbm9tYWxBcnJheVswXS5nZXRDb21wb25lbnQoXCJCbG9ja1wiKS5lbGltaW5hdGUoKTtcclxuICAgICAgICAgICAgICAgICAgICBsZXQgdGltZSA9IDA7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKG5vbWFsQXJyYXlbMF0uZ2V0Q29tcG9uZW50KFwiQmxvY2tcIikudHlwZSA9PSAxIHx8IG5vbWFsQXJyYXlbMF0uZ2V0Q29tcG9uZW50KFwiQmxvY2tcIikudHlwZSA9PSA5KSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHRpbWUgPSAyMDA7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy5mcmVlemVBcnJheS5sZW5ndGggPT0gMCAmJiB0aGlzLmxvYWNrQXJyYXkubGVuZ3RoID09IDApIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGNvbnNvbGUubG9nKFwi5Y+q5Ymp5LiL5LiA5Liq5Z2X6YGT5YW35L2/55So5a6M5q+VXCIpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMubG9hY2tBcnJheS5sZW5ndGggIT0gMCkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGNvbnNvbGUubG9nKFwi5raI6Zmk5LiA5Liq5pmu6YCa5Z2X5ZCO77yM5raI6Zmk5LiA5Liq5bim6ZSB5Z2XXCIpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMubG9hY2tBcnJheVswXS5nZXRDb21wb25lbnQoXCJCbG9ja1wiKS5lbGltaW5hdGUoKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlIGlmICh0aGlzLmZyZWV6ZUFycmF5Lmxlbmd0aCAhPSAwKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gY29uc29sZS5sb2coXCLmtojpmaTkuIDkuKrmma7pgJrlnZflkI7vvIzmtojpmaTkuIDkuKrlhrvnu5PlnZdcIik7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5mcmVlemVBcnJheVswXS5nZXRDb21wb25lbnQoXCJCbG9ja1wiKS5lbGltaW5hdGUoKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICB9LCAyMDAgKyB0aW1lKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICAgIGxldCBjb3VudCA9IDI7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMubG9hY2tBcnJheS5sZW5ndGggIT0gMCkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRoaXMubG9hY2tBcnJheS5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gY29uc29sZS5sb2coXCLmsqHmnInmma7pgJrlv6vvvIzprZTms5XmtojpmaTkuIDkuKrluKbplIHlnZdcIik7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmxvYWNrQXJyYXlbaV0uZ2V0Q29tcG9uZW50KFwiQmxvY2tcIikuZWxpbWluYXRlKCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb3VudCAtPSAxO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGNvdW50ID09IDApIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChjb3VudCAhPSAwKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRoaXMuZnJlZXplQXJyYXkubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBjb25zb2xlLmxvZyhcIuayoeacieaZrumAmuW/q++8jOmtlOazlea2iOmZpOS4gOS4quWGu+e7k+Wdl1wiKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyB0aGlzLmZyZWV6ZUFycmF5W2ldLmdldENvbXBvbmVudChcIkJsb2NrXCIpLmVsaW1pbmF0ZSgpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvdW50IC09IDE7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGNvdW50ID09IDApIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgfSwgMTAwKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICAvL+aMieS4i+aaguWBnOaMiemSrlxyXG4gICAgdXNlUGF1c2UoKSB7XHJcbiAgICAgICAgaWYgKHRoaXMucGF1c2UpIHtcclxuICAgICAgICAgICAgdGhpcy5wYXVzZSA9IGZhbHNlO1xyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgdGhpcy5wYXVzZSA9IHRydWU7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuXHJcblxyXG4gICAgLy/moLnmja7lhbPljaHorr7nva7lnLDlm77lpKflsI9cclxuICAgIHNldE1hcEluZm8oKSB7XHJcbiAgICAgICAgbGV0IHdpZHRoID0gMDtcclxuICAgICAgICBpZiAodGhpcy5tYXBXaWR0aCA8IDEwKSB7XHJcbiAgICAgICAgICAgIHdpZHRoID0gMC4yO1xyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIGlmICh0aGlzLm1hcFdpZHRoIDwgMTcpIHtcclxuICAgICAgICAgICAgd2lkdGggPSAwLjE1IC0gKHRoaXMubWFwV2lkdGggLSAxMSkgKiAwLjAxO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgdGhpcy5ub2RlLnNjYWxlID0gMS42ICsgKDYgLSB0aGlzLm1hcFdpZHRoKSAqIHdpZHRoO1xyXG5cclxuICAgICAgICBpZiAodGhpcy5tYXBXaWR0aCA9PSA4ICYmIHRoaXMubWFwSGVpZ2h0ID4gMTMpIHtcclxuICAgICAgICAgICAgdGhpcy5ub2RlLnNjYWxlID0gMTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIC8vIHRoaXMubm9kZS5zY2FsZSA9IDE7XHJcbiAgICAgICAgY2MuZnguR2FtZUNvbmZpZy5HTV9JTkZPLnNjYWxlID0gdGhpcy5ub2RlLnNjYWxlO1xyXG4gICAgICAgIC8vIHRoaXMubm9kZS5zY2FsZSA9IDAuNTtcclxuICAgICAgICAvLyBjb25zb2xlLmxvZyh0aGlzLm5vZGUuc2NhbGUpO1xyXG4gICAgICAgIC8vIHRoaXMubm9kZS5zY2FsZSA9IDE7XHJcbiAgICB9XHJcblxyXG4gICAgLy/liJvlu7rpl6jnmoTnspLlrZDnibnmlYhcclxuICAgIGNyZWF0ZVBhcnRpY2xlKGJsb2NrLCBqZykge1xyXG4gICAgICAgIGxldCBwYXJ0aWNsZSA9IGNjLmluc3RhbnRpYXRlKE1hcENvbnJvbGVyLl9pbnN0YW5jZS5CbG9ja19Qcm9wWzldKTtcclxuICAgICAgICBwYXJ0aWNsZS5wYXJlbnQgPSB0aGlzLm5vZGU7XHJcbiAgICAgICAgcGFydGljbGUuekluZGV4ID0gMTAwMDtcclxuICAgICAgICBsZXQgd2lkdGggPSBNYXRoLmZsb29yKGJsb2NrLndpZHRoIC8gMTIwKTtcclxuICAgICAgICBsZXQgaGVpZ2h0ID0gTWF0aC5mbG9vcihibG9jay5oZWlnaHQgLyAxMjApO1xyXG4gICAgICAgIGxldCBuYW1lID0gXCJcIjtcclxuXHJcbiAgICAgICAgaWYgKGpnID09IDAgfHwgamcgPT0gMSkge1xyXG4gICAgICAgICAgICBsZXQgeSA9IGJsb2NrLnkgKyBibG9jay5oZWlnaHQ7XHJcbiAgICAgICAgICAgIGxldCB4ID0gYmxvY2sueCAtIGJsb2NrLndpZHRoIC8gMjtcclxuICAgICAgICAgICAgbmFtZSA9IFwidG9wX1wiICsgd2lkdGggKyBcIl9cIiArIGhlaWdodDtcclxuICAgICAgICAgICAgaWYgKGpnID09IDEpIHtcclxuICAgICAgICAgICAgICAgIG5hbWUgPSBcImJvdF9cIiArIHdpZHRoICsgXCJfXCIgKyBoZWlnaHQ7XHJcbiAgICAgICAgICAgICAgICB5ID0gYmxvY2sueTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBpZiAoYmxvY2suYW5jaG9yWCA9PSAwLjUpIHtcclxuICAgICAgICAgICAgICAgIHggPSBibG9jay54O1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGVsc2UgaWYgKGJsb2NrLmFuY2hvclggPT0gMC4zMykge1xyXG4gICAgICAgICAgICAgICAgeCA9IGJsb2NrLnggKyBibG9jay53aWR0aCAqICgwLjUgLSAwLjMzKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBlbHNlIGlmIChibG9jay5hbmNob3JYID09IDAuNjYpIHtcclxuICAgICAgICAgICAgICAgIHggPSBibG9jay54ICsgYmxvY2sud2lkdGggKiAoMC41IC0gMC42Nik7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgcGFydGljbGUuc2V0UG9zaXRpb24oeCwgeSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2UgaWYgKGpnID09IDIgfHwgamcgPT0gMykge1xyXG4gICAgICAgICAgICBuYW1lID0gXCJsZWZ0X1wiICsgaGVpZ2h0ICsgXCJfXCIgKyB3aWR0aDtcclxuICAgICAgICAgICAgbGV0IHggPSBibG9jay54IC0gYmxvY2sud2lkdGg7XHJcbiAgICAgICAgICAgIGxldCB5ID0gYmxvY2sueSArIGJsb2NrLmhlaWdodCAvIDI7XHJcbiAgICAgICAgICAgIGlmIChibG9jay5hbmNob3JYID09IDAuNSkge1xyXG4gICAgICAgICAgICAgICAgeCA9IGJsb2NrLnggLSBibG9jay53aWR0aCAvIDI7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgZWxzZSBpZiAoYmxvY2suYW5jaG9yWCA9PSAwLjMzKSB7XHJcbiAgICAgICAgICAgICAgICB4ID0gYmxvY2sueCAtIGJsb2NrLndpZHRoICogMC4zMztcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBlbHNlIGlmIChibG9jay5hbmNob3JYID09IDAuNjYpIHtcclxuICAgICAgICAgICAgICAgIHggPSBibG9jay54ICsgYmxvY2sud2lkdGggKiAwLjY2O1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGlmIChqZyA9PSAzKSB7XHJcbiAgICAgICAgICAgICAgICBuYW1lID0gXCJyaWdodF9cIiArIGhlaWdodCArIFwiX1wiICsgd2lkdGg7XHJcbiAgICAgICAgICAgICAgICB4ID0gYmxvY2sueDtcclxuICAgICAgICAgICAgICAgIGlmIChibG9jay5hbmNob3JYID09IDAuNSkge1xyXG4gICAgICAgICAgICAgICAgICAgIHggPSBibG9jay54ICsgYmxvY2sud2lkdGggLyAyO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgZWxzZSBpZiAoYmxvY2suYW5jaG9yWCA9PSAwLjMzKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgeCA9IGJsb2NrLnggKyBibG9jay53aWR0aCAqIDAuNjY7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBlbHNlIGlmIChibG9jay5hbmNob3JYID09IDAuNjYpIHtcclxuICAgICAgICAgICAgICAgICAgICB4ID0gYmxvY2sueCArIGJsb2NrLndpZHRoICogMC4zMztcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgcGFydGljbGUuc2V0UG9zaXRpb24oeCwgeSk7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBsZXQgcGFydGljbGVOb2RlID0gcGFydGljbGUuZ2V0Q2hpbGRCeU5hbWUobmFtZSk7XHJcbiAgICAgICAgbGV0IGNvbG9yID0gYmxvY2suZ2V0Q29tcG9uZW50KFwiQmxvY2tcIikuY29sb3IgLSAxO1xyXG5cclxuICAgICAgICBwYXJ0aWNsZU5vZGUuZ2V0Q29tcG9uZW50KGNjLlBhcnRpY2xlU3lzdGVtKS5zcHJpdGVGcmFtZSA9IHBhcnRpY2xlLmdldENvbXBvbmVudChcIlJlZHVjZVwiKS5CbG9ja19Db2xvcltjb2xvcl07XHJcbiAgICAgICAgcGFydGljbGVOb2RlLmFjdGl2ZSA9IHRydWU7XHJcbiAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgICAgICAgIGNjLnR3ZWVuKHBhcnRpY2xlKVxyXG4gICAgICAgICAgICAgICAgLnRvKDIsIHsgb3BhY2l0eTogMCB9KVxyXG4gICAgICAgICAgICAgICAgLmNhbGwoKCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgIHBhcnRpY2xlLmRlc3Ryb3koKTtcclxuICAgICAgICAgICAgICAgIH0pXHJcbiAgICAgICAgICAgICAgICAuc3RhcnQoKTtcclxuICAgICAgICB9LCAxMjAwKTtcclxuICAgIH1cclxuXHJcbiAgICByZW1vdmVPbmVCbG9jaygpIHtcclxuICAgICAgICAvLyDnp7vpmaTmiYDmnInmlrnlnZdcclxuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRoaXMuYmxvY2tzLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgICAgIGlmICh0aGlzLmJsb2Nrc1tpXS5vcGFjaXR5ID09IDApIHtcclxuICAgICAgICAgICAgICAgIHRoaXMuYmxvY2tzW2ldLmRlc3Ryb3koKTtcclxuICAgICAgICAgICAgICAgIHRoaXMuYmxvY2tzLnNwbGljZShpLCAxKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcblxyXG5cclxuICAgIHVwZGF0ZShkdCkge1xyXG5cclxuICAgIH1cclxufVxyXG4iXX0= \ No newline at end of file diff --git a/temp/quick-scripts/dst/assets/Script/SceneManager.js b/temp/quick-scripts/dst/assets/Script/SceneManager.js index 2970ec0..a68cdcd 100644 --- a/temp/quick-scripts/dst/assets/Script/SceneManager.js +++ b/temp/quick-scripts/dst/assets/Script/SceneManager.js @@ -327,8 +327,4 @@ cc._RF.pop(); }); } })(); -<<<<<<< HEAD -//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImFzc2V0c1xcU2NyaXB0XFxTY2VuZU1hbmFnZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLG9CQUFvQjtBQUNwQix3RUFBd0U7QUFDeEUsbUJBQW1CO0FBQ25CLGtGQUFrRjtBQUNsRiw4QkFBOEI7QUFDOUIsa0ZBQWtGOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFFbEYsNkJBQWdDO0FBQ2hDLGlEQUFnRDtBQUUxQyxJQUFBLEtBQXNCLEVBQUUsQ0FBQyxVQUFVLEVBQWxDLE9BQU8sYUFBQSxFQUFFLFFBQVEsY0FBaUIsQ0FBQztBQUcxQztJQUEwQyxnQ0FBWTtJQUF0RDtRQUFBLHFFQXVRQztRQXBRRyxXQUFLLEdBQWEsSUFBSSxDQUFDO1FBR3ZCLFVBQUksR0FBVyxPQUFPLENBQUM7UUFHdkIsWUFBTSxHQUFZLElBQUksQ0FBQztRQUd2QixZQUFNLEdBQVksSUFBSSxDQUFDO1FBR3ZCLGdCQUFVLEdBQVksSUFBSSxDQUFDO1FBRzNCLFdBQUssR0FBWSxJQUFJLENBQUM7UUFJdEIsaUJBQVcsR0FBc0IsRUFBRSxDQUFDO1FBR3BDLGlCQUFXLEdBQXNCLEVBQUUsQ0FBQztRQUdwQyx5REFBeUQ7UUFDekQsbURBQW1EO1FBRW5ELFdBQUssR0FBWSxLQUFLLENBQUM7UUFDdkIsV0FBSyxHQUFZLEtBQUssQ0FBQztRQUN2QixXQUFLLEdBQVksS0FBSyxDQUFDO1FBQ3ZCLGFBQU8sR0FBVyxFQUFFLENBQUM7O0lBcU96QixDQUFDO0lBak9HLHdCQUF3QjtJQUV4Qiw2QkFBTSxHQUFOO1FBQ0ksRUFBRSxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsRUFBRSxDQUFDLENBQUM7UUFDekIsSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDO1FBRWhCLFVBQVUsQ0FBQztZQUNQLEVBQUUsQ0FBQyxRQUFRLENBQUMsWUFBWSxDQUFDLFdBQVcsRUFBRSxVQUFDLEdBQUc7Z0JBQ3RDLElBQUksR0FBRyxFQUFFO29CQUNMLDZDQUE2Qztv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Q0F2UXlDLEVBQUUsQ0FBQyxTQUFTLEdBdVFyRDtrQkF2UW9CLFlBQVkiLCJmaWxlIjoiIiwic291cmNlUm9vdCI6Ii8iLCJzb3VyY2VzQ29udGVudCI6WyIvLyBMZWFybiBUeXBlU2NyaXB0OlxyXG4vLyAgLSBodHRwczovL2RvY3MuY29jb3MuY29tL2NyZWF0b3IvbWFudWFsL2VuL3NjcmlwdGluZy90eXBlc2NyaXB0Lmh0bWxcclxuLy8gTGVhcm4gQXR0cmlidXRlOlxyXG4vLyAgLSBodHRwczovL2RvY3MuY29jb3MuY29tL2NyZWF0b3IvbWFudWFsL2VuL3NjcmlwdGluZy9yZWZlcmVuY2UvYXR0cmlidXRlcy5odG1sXHJcbi8vIExlYXJuIGxpZmUtY3ljbGUgY2FsbGJhY2tzOlxyXG4vLyAgLSBodHRwczovL2RvY3MuY29jb3MuY29tL2NyZWF0b3IvbWFudWFsL2VuL3NjcmlwdGluZy9saWZlLWN5Y2xlLWNhbGxiYWNrcy5odG1sXHJcblxyXG5pbXBvcnQgTWFwQ29ucm9sZXIgZnJvbSBcIi4vTWFwXCI7XHJcbmltcG9ydCB7IE1pbmlHYW1lU2RrIH0gZnJvbSBcIi4vU2RrL01pbmlHYW1lU2RrXCI7XHJcblxyXG5jb25zdCB7Y2NjbGFzcywgcHJvcGVydHl9ID0gY2MuX2RlY29yYXRvcjtcclxuXHJcbkBjY2NsYXNzXHJcbmV4cG9ydCBkZWZhdWx0IGNsYXNzIFNjZW5lTWFuYWdlciBleHRlbmRzIGNjLkNvbXBvbmVudCB7XHJcblxyXG4gICAgQHByb3BlcnR5KGNjLkxhYmVsKVxyXG4gICAgbGFiZWw6IGNjLkxhYmVsID0gbnVsbDtcclxuXHJcbiAgICBAcHJvcGVydHlcclxuICAgIHRleHQ6IHN0cmluZyA9ICdoZWxsbyc7XHJcblxyXG4gICAgQHByb3BlcnR5KGNjLk5vZGUpXHJcbiAgICBmcmVlemU6IGNjLk5vZGUgPSBudWxsO1xyXG5cclxuICAgIEBwcm9wZXJ0eShjYy5Ob2RlKVxyXG4gICAgaGFtbWVyOiBjYy5Ob2RlID0gbnVsbDtcclxuXHJcbiAgICBAcHJvcGVydHkoY2MuTm9kZSlcclxuICAgIG1hZ2ljX3dhbmQ6IGNjLk5vZGUgPSBudWxsO1xyXG5cclxuICAgIEBwcm9wZXJ0eShjYy5Ob2RlKVxyXG4gICAgcGF1c2U6IGNjLk5vZGUgPSBudWxsO1xyXG5cclxuXHJcbiAgICBAcHJvcGVydHkoe3R5cGU6IFtjYy5QcmVmYWJdLCB0b29sdGlwOlwi5pa55Z2X5pWw57uEXCJ9KVxyXG4gICAgQmxvY2tfQXJyYXkgOiBBcnJheTxjYy5QcmVmYWI+ID0gW107XHJcblxyXG4gICAgQHByb3BlcnR5KHt0eXBlOiBbY2MuUHJlZmFiXSwgdG9vbHRpcDpcIuWimeWjgeaVsOe7hFwifSlcclxuICAgIFdhbGxfUHJlZmFiIDogQXJyYXk8Y2MuUHJlZmFiPiA9IFtdO1xyXG5cclxuICAgIHBhcnRpY2xlRWZmZWN0czogY2MuUGFydGljbGVBc3NldFtdO1xyXG4gICAgLy8gQHByb3BlcnR5KHt0eXBlOiBbY2MuUGFydGljbGVTeXN0ZW1dLCB0b29sdGlwOlwi57KS5a2Q5pWw57uEXCJ9KVxyXG4gICAgLy8gcGFydGljbGVFZmZlY3RzIDogQXJyYXk8Y2MuUGFydGljbGVTeXN0ZW0+ID0gW107XHJcblxyXG4gICAgbG9hZDEgOmJvb2xlYW4gPSBmYWxzZTtcclxuICAgIGxvYWQyIDpib29sZWFuID0gZmFsc2U7XHJcbiAgICBsb2FkMyA6Ym9vbGVhbiA9IGZhbHNlO1xyXG4gICAgYnRuTmFtZTogc3RyaW5nID0gJyc7XHJcbiAgICBjYWxsQmFjazogYW55O1xyXG5cclxuICAgIFxyXG4gICAgLy8gTElGRS1DWUNMRSBDQUxMQkFDS1M6XHJcblxyXG4gICAgb25Mb2FkICgpIHtcclxuICAgICAgICBjYy5nYW1lLnNldEZyYW1lUmF0ZSg2Myk7IFxyXG4gICAgICAgIHRoaXMuY2hhbmdlQmcoKTtcclxuXHJcbiAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgICAgICAgIGNjLmRpcmVjdG9yLnByZWxvYWRTY2VuZShcIkhvbWVTY2VuZVwiLCAoZXJyKSA9PiB7XHJcbiAgICAgICAgICAgICAgICBpZiAoZXJyKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgLy8gY29uc29sZS5lcnJvcign6aKE5Yqg6L29IEhvbWVTY2VuZSDlnLrmma/lpLHotKU6JywgZXJyKTtcclxuICAgICAgICAgICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAvLyBjb25zb2xlLmxvZygn5oiQ5Yqf6aKE5Yqg6L29IEhvbWVTY2VuZSDlnLrmma8nKTtcclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgfSwgMTAwMCk7XHJcbiAgICAgICAgXHJcbiAgICB9XHJcbiAgICBcclxuICAgIGNoYW5nZUJnKCl7XHJcbiAgICAgICAgbGV0IG51bWJlciA9IE1hdGguZmxvb3IoTWF0aC5yYW5kb20oKSAqIDgpICsgMTtcclxuICAgICAgICBjb25zdCBwYXRoID0gJ2JnL2JnJyArIG51bWJlcjtcclxuICAgICAgICBjYy5yZXNvdXJjZXMubG9hZChwYXRoLCBjYy5TcHJpdGVGcmFtZSwgKGVyciwgc3ByaXRlRnJhbWU6IGNjLlNwcml0ZUZyYW1lKSA9PiB7XHJcbiAgICAgICAgICAgIGlmIChlcnIpIHtcclxuICAgICAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoJ+WKqOaAgeWKoOi9veiDjOaZr+WbvuWksei0pTonLCBlcnIpO1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgICAgICB9IFxyXG4gICAgICAgICAgICB0aGlzLm5vZGUuZ2V0Q2hpbGRCeU5hbWUoXCJHYW1lXCIpLmdldENoaWxkQnlOYW1lKFwiYmdcIikuZ2V0Q29tcG9uZW50KGNjLlNwcml0ZSkuc3ByaXRlRnJhbWUgPSBzcHJpdGVGcmFtZTtcclxuICAgICAgICB9KVxyXG4gICAgfVxyXG5cclxuICAgIGxvYWRQYXJ0aWNsZUVmZmVjdHMoKSB7XHJcbiAgICAgICAgY29uc3QgcGF0aCA9ICdQYXJ0aWNsZSc7XHJcbiAgICAgICAgY2MucmVzb3VyY2VzLmxvYWREaXIocGF0aCwgY2MuUGFydGljbGVBc3NldCwgKGVyciwgYXNzZXRzOiBjYy5QYXJ0aWNsZUFzc2V0W10pID0+IHtcclxuICAgICAgICAgICAgaWYgKGVycikge1xyXG4gICAgICAgICAgICAgICAgY29uc29sZS5lcnJvcign5Yqo5oCB5Yqg6L2957KS5a2Q54m55pWI5aSx6LSlOicsIGVycik7XHJcbiAgICAgICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgIHRoaXMucGFydGljbGVFZmZlY3RzID0gYXNzZXRzO1xyXG4gICAgICAgICAgICB0aGlzLnNldFBhcnRpY2xlU29ydCgpO1xyXG4gICAgICAgICAgICB0aGlzLmxvYWQzID0gdHJ1ZTtcclxuICAgICAgICAgICAgLy9jb25zb2xlLmxvZygn57KS5a2Q54m55pWI5Yqg6L295oiQ5Yqf77yM5YWx5Yqg6L295LqGJywgdGhpcy5wYXJ0aWNsZUVmZmVjdHMubGVuZ3RoLCAn5Liq57KS5a2Q54m55pWIJyk7XHJcbiAgICAgICAgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgc2V0V2FsbFByZWZhYlNvcnQoKSB7XHJcbiAgICAgICAgY29uc3Qgb3JkZXIgPSBbJ2Rvd24nLCAnZG93bkxlZnQnLCAnZG93blJpZ2h0JywgJ2xlZnQnLCdyaWdodCcsJ3VwJywndXBMZWZ0JywndXBSaWdodCddO1xyXG4gICAgICAgIHRoaXMuV2FsbF9QcmVmYWIuc29ydCgoYSwgYikgPT4ge1xyXG4gICAgICAgICAgICBjb25zdCBpbmRleEEgPSBvcmRlci5pbmRleE9mKGEubmFtZSk7XHJcbiAgICAgICAgICAgIGNvbnN0IGluZGV4QiA9IG9yZGVyLmluZGV4T2YoYi5uYW1lKTtcclxuICAgICAgICAgICAgaWYgKGluZGV4QSA9PT0gLTEpIHJldHVybiAxO1xyXG4gICAgICAgICAgICBpZiAoaW5kZXhCID09PSAtMSkgcmV0dXJuIC0xO1xyXG4gICAgICAgICAgICByZXR1cm4gaW5kZXhBIC0gaW5kZXhCO1xyXG4gICAgICAgIH0pO1xyXG4gICAgICAgIFxyXG4gICAgfVxyXG5cclxuICAgIHNldFBhcnRpY2xlU29ydCgpIHtcclxuICAgICAgICBjb25zdCBvcmRlciA9IFsndG9wJywgJ2JvdCcsICdyaWcnLCAnbGVmJ107XHJcbiAgICAgICAgdGhpcy5wYXJ0aWNsZUVmZmVjdHMuc29ydCgoYSwgYikgPT4ge1xyXG4gICAgICAgICAgICAvLyBjb25zb2xlLmxvZyhhLm5hbWUuc3Vic3RyKDAsMyksYi5uYW1lLnN1YnN0cigwLDMpKTtcclxuICAgICAgICAgICAgY29uc3QgaW5kZXhBID0gb3JkZXIuaW5kZXhPZihhLm5hbWUuc3Vic3RyKDAsMykpO1xyXG4gICAgICAgICAgICBjb25zdCBpbmRleEIgPSBvcmRlci5pbmRleE9mKGIubmFtZS5zdWJzdHIoMCwzKSk7XHJcbiAgICAgICAgICAgIGlmIChpbmRleEEgPT09IC0xKSByZXR1cm4gMTtcclxuICAgICAgICAgICAgaWYgKGluZGV4QiA9PT0gLTEpIHJldHVybiAtMTtcclxuICAgICAgICAgICAgcmV0dXJuIGluZGV4QSAtIGluZGV4QjtcclxuICAgICAgICB9KTtcclxuICAgIH1cclxuXHJcbiAgICBzZXRTb3J0KCl7XHJcbiAgICAgICAgdGhpcy5CbG9ja19BcnJheS5zb3J0KChhLCBiKSA9PiB7XHJcbiAgICAgICAgICAgIC8vIOS7juWQjeensOS4reaPkOWPluaVsOWtl+mDqOWIhlxyXG4gICAgICAgICAgICBjb25zdCBudW1iZXJBID0gcGFyc2VJbnQoYS5uYW1lLm1hdGNoKC9cXGQrLyk/LlswXSB8fCAnMCcsIDEwKTtcclxuICAgICAgICAgICAgY29uc3QgbnVtYmVyQiA9IHBhcnNlSW50KGIubmFtZS5tYXRjaCgvXFxkKy8pPy5bMF0gfHwgJzAnLCAxMCk7XHJcbiAgICAgICAgICAgIHJldHVybiBudW1iZXJBIC0gbnVtYmVyQjtcclxuICAgICAgICB9KTtcclxuICAgIH1cclxuXHJcbiAgICBzdGFydCAoKSB7XHJcblxyXG4gICAgfVxyXG5cclxuICAgIHN0YXJ0R2FtZSgpe1xyXG4gICAgICAgIGNjLmRpcmVjdG9yLmxvYWRTY2VuZShcIkhvbWVTY2VuZVwiLCAoZXJyKSA9PiB7XHJcbiAgICAgICAgICAgIGlmIChlcnIpIHtcclxuICAgICAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoJ+WKoOi9vSBIb21lU2NlbmUg5Zy65pmv5aSx6LSlOicsIGVycik7XHJcbiAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAvLyBjb25zb2xlLmxvZygn5oiQ5Yqf5YiH5o2i5YiwIEhvbWVTY2VuZSDlnLrmma8nKTtcclxuICAgICAgICAgICAgICAgIGNjLmRpcmVjdG9yLmxvYWRTY2VuZShcIkhvbWVTY2VuZVwiKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH0pO1xyXG5cclxuICAgIH1cclxuXHJcbiAgICByZXR1cm5Ib21lKCl7XHJcbiAgICAgICAgaWYodGhpcy5ub2RlLmdldENoaWxkQnlOYW1lKFwiUGF1c2VcIikuZ2V0Q2hpbGRCeU5hbWUoXCJidG5cIikuZ2V0Q29tcG9uZW50KFwiYnRuQ29udHJvbFwiKS5fdG91Y2gpe1xyXG4gICAgICAgICAgICBpZihNYXBDb25yb2xlci5faW5zdGFuY2UuZ2FtZVN0YXJ0ID09IHRydWUpe1xyXG4gICAgICAgICAgICAgICAgTWluaUdhbWVTZGsuQVBJLnNob3dUb2FzdChcIuS9k+WKm+WAvOWHj+WwkVwiKTtcclxuICAgICAgICAgICAgICAgIGNjLmZ4LkdhbWVUb29sLnNldFVzZXJIZWFsdGgoLTEsKGRhdGEpPT57XHJcbiAgICAgICAgICAgICAgICB9KVxyXG4gICAgICAgICAgICAgICAgaWYoTWFwQ29ucm9sZXIuX2luc3RhbmNlLmNvdW50X1RpbWUpe1xyXG4gICAgICAgICAgICAgICAgICAgIGxldCBjb3VudF9UaW1lID0gTWFwQ29ucm9sZXIuX2luc3RhbmNlLmNvdW50X1RpbWU7XHJcbiAgICAgICAgICAgICAgICAgICAgbGV0IGFkZF9UaW1lID0gTWFwQ29ucm9sZXIuX2luc3RhbmNlLmFkZF9UaW1lO1xyXG4gICAgICAgICAgICAgICAgICAgIGxldCBkYXRhID0ge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB0aW1lOmNvdW50X1RpbWUsICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGFkZF9UaW1lOmFkZF9UaW1lLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICByZXN1bHQ6XCJnaXZlX3VwXCJcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgY2MuZnguR2FtZVRvb2wuc2h1c2h1X1RyYWNrKFwiZmluaXNoX3N0YWdlXCIsZGF0YSk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgdGhpcy5ub2RlLmdldENoaWxkQnlOYW1lKFwiUGF1c2VcIikuZ2V0Q2hpbGRCeU5hbWUoXCJidG5cIikuZ2V0Q29tcG9uZW50KFwiYnRuQ29udHJvbFwiKS5zZXRUb3VjaChmYWxzZSk7XHJcbiAgICAgICAgICAgIGNjLmZ4LkF1ZGlvTWFuYWdlci5faW5zdGFuY2UucGxheUVmZmVjdChcInpodWFuMVwiLG51bGwpO1xyXG4gICAgICAgICAgICB0aGlzLm5vZGUuZ2V0Q2hpbGRCeU5hbWUoXCJ6aHVhbmNoYW5nXCIpLmFjdGl2ZSA9IHRydWU7XHJcbiAgICAgICAgICAgIHRoaXMubm9kZS5nZXRDaGlsZEJ5TmFtZShcInpodWFuY2hhbmdcIikuZ2V0Q29tcG9uZW50KHNwLlNrZWxldG9uKS5zZXRBbmltYXRpb24oMSxcInVwXCIsZmFsc2UpO1xyXG4gICAgICAgICAgICBjYy5kaXJlY3Rvci5wcmVsb2FkU2NlbmUoXCJIb21lU2NlbmVcIiwgKGVyciwgYXNzZXQpID0+IHtcclxuICAgICAgICAgICAgICAgIGlmIChlcnIpIHtcclxuICAgICAgICAgICAgICAgICAgICBjb25zb2xlLmVycm9yKCfliqjmgIHliqDovb0gUHJlZmFiIOWksei0pTonLCBlcnIpO1xyXG4gICAgICAgICAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICBcclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgY2MuZGlyZWN0b3IubG9hZFNjZW5lKFwiSG9tZVNjZW5lXCIpO1xyXG4gICAgICAgICAgICB9LCAxMjAwKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG5cclxuICAgIGRlc3Ryb3lOb2Rlc0luRnJhbWVzKG5vZGVzOiBjYy5Ob2RlW10sIGNhbGxiYWNrOiAoKSA9PiB2b2lkKSB7XHJcbiAgICAgICAgY29uc3QgQkFUQ0hfU0laRSA9IDEwOyAvLyDmr4/luKfplIDmr4HnmoToioLngrnmlbDph49cclxuICAgICAgICBsZXQgaW5kZXggPSAwO1xyXG5cclxuICAgICAgICBjb25zdCBkZXN0cm95QmF0Y2ggPSAoKSA9PiB7XHJcbiAgICAgICAgICAgIGxldCBjb3VudCA9IDA7XHJcbiAgICAgICAgICAgIHdoaWxlIChpbmRleCA8IG5vZGVzLmxlbmd0aCAmJiBjb3VudCA8IEJBVENIX1NJWkUpIHtcclxuICAgICAgICAgICAgICAgIGNvbnN0IG5vZGUgPSBub2Rlc1tpbmRleF07XHJcbiAgICAgICAgICAgICAgICBpZiAobm9kZSkge1xyXG5cclxuICAgICAgICAgICAgICAgICAgICBub2RlLmFjdGl2ZSA9IGZhbHNlO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgaW5kZXgrKztcclxuICAgICAgICAgICAgICAgIGNvdW50Kys7XHJcbiAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgIGlmIChpbmRleCA8IG5vZGVzLmxlbmd0aCkge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5zY2hlZHVsZU9uY2UoZGVzdHJveUJhdGNoLCA2KTtcclxuICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgIGNhbGxiYWNrKCk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9O1xyXG5cclxuICAgICAgICBkZXN0cm95QmF0Y2goKTtcclxuICAgIH1cclxuXHJcbiAgICAvLyDmlLnov5vlkI7nmoTliIfmjaLlnLrmma/mlrnms5VcclxuICAgIHN3aXRjaFRvRW1wdHlTY2VuZSgpIHtcclxuICAgICAgICBjb25zdCBhbGxOb2RlcyA9IGNjLmRpcmVjdG9yLmdldFNjZW5lKCkuY2hpbGRyZW47XHJcbiAgICAgICAgdGhpcy5kZXN0cm95Tm9kZXNJbkZyYW1lcyhhbGxOb2RlcywgKCkgPT4ge1xyXG4gICAgICAgICAgICBjYy5kaXJlY3Rvci5sb2FkU2NlbmUoXCJIb21lU2NlbmVcIik7XHJcbiAgICAgICAgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgb3BlblBhdXNlKCl7XHJcbiAgICAgICAgY2MuZnguQXVkaW9NYW5hZ2VyLl9pbnN0YW5jZS5wbGF5RWZmZWN0KFwiYW5uaXVfbGl0dGxlXCIsbnVsbCk7XHJcbiAgICAgICAgaWYodGhpcy5wYXVzZS5nZXRDb21wb25lbnQoXCJidG5Db250cm9sXCIpLl90b3VjaCl7XHJcbiAgICAgICAgICAgIHRoaXMucGF1c2UuZ2V0Q29tcG9uZW50KFwiYnRuQ29udHJvbFwiKS5zZXRUb3VjaChmYWxzZSk7XHJcbiAgICAgICAgICAgIHRoaXMubm9kZS5nZXRDaGlsZEJ5TmFtZShcIlBhdXNlXCIpLmFjdGl2ZSA9IHRydWU7XHJcbiAgICAgICAgICAgIE1hcENvbnJvbGVyLl9pbnN0YW5jZS5wYXVzZSA9IHRydWU7XHJcbiAgICAgICAgfVxyXG5cclxuICAgIH1cclxuXHJcbiAgICBjbG9zZVBhdXNlKCl7XHJcbiAgICAgICAgY2MuZnguQXVkaW9NYW5hZ2VyLl9pbnN0YW5jZS5wbGF5RWZmZWN0KFwiYW5uaXVfbGl0dGxlXCIsbnVsbCk7XHJcbiAgICAgICAgdGhpcy5wYXVzZS5nZXRDb21wb25lbnQoXCJidG5Db250cm9sXCIpLnNldFRvdWNoKHRydWUpO1xyXG4gICAgICAgIHRoaXMubm9kZS5nZXRDaGlsZEJ5TmFtZShcIlBhdXNlXCIpLmFjdGl2ZSA9IGZhbHNlOyBcclxuICAgICAgICBpZihNYXBDb25yb2xlci5faW5zdGFuY2Uubm9kZS5wYXJlbnQuZ2V0Q2hpbGRCeU5hbWUoXCJJY2VcIikuYWN0aXZlID09IGZhbHNlKXtcclxuICAgICAgICAgICAgTWFwQ29ucm9sZXIuX2luc3RhbmNlLnBhdXNlID0gZmFsc2U7XHJcbiAgICAgICAgfSBcclxuICAgIH1cclxuXHJcbiAgICBvcGVuUHJvcEJ1eShuYW1lKXtcclxuICAgICAgICBNYXBDb25yb2xlci5faW5zdGFuY2UucGF1c2UgPSB0cnVlO1xyXG4gICAgICAgIHRoaXMuYnRuTmFtZSA9IG5hbWU7XHJcbiAgICAgICAgbGV0IHByb3BXaW5kb3cgPSB0aGlzLm5vZGUuZ2V0Q2hpbGRCeU5hbWUoXCJHYW1lXCIpLmdldENoaWxkQnlOYW1lKFwicHJvcFdpbmRvd1wiKTtcclxuICAgICAgICBwcm9wV2luZG93LmFjdGl2ZSA9IHRydWU7XHJcbiAgICAgICAgcHJvcFdpbmRvdy5nZXRDaGlsZEJ5TmFtZShcImZyZWV6ZVwiKS5hY3RpdmUgPSBmYWxzZTtcclxuICAgICAgICBwcm9wV2luZG93LmdldENoaWxkQnlOYW1lKFwiaGFtbWVyXCIpLmFjdGl2ZSA9IGZhbHNlO1xyXG4gICAgICAgIHByb3BXaW5kb3cuZ2V0Q2hpbGRCeU5hbWUoXCJtYWdpY1wiKS5hY3RpdmUgPSBmYWxzZTtcclxuICAgICAgICBwcm9wV2luZG93LmdldENoaWxkQnlOYW1lKFwiYnV5X0J0blwiKS5nZXRDb21wb25lbnQoXCJidG5Db250cm9sXCIpLnNldFRvdWNoKHRydWUpO1xyXG4gICAgICAgIHByb3BXaW5kb3cuZ2V0Q2hpbGRCeU5hbWUobmFtZSkuYWN0aXZlID0gdHJ1ZTtcclxuICAgIH1cclxuXHJcbiAgICBjbGlja0J0bigpe1xyXG4gICAgICAgIGNjLmZ4LkF1ZGlvTWFuYWdlci5faW5zdGFuY2UucGxheUVmZmVjdChcImFubml1X0JpZ1wiLG51bGwpO1xyXG4gICAgICAgIGxldCBwcm9wV2luZG93ID0gdGhpcy5ub2RlLmdldENoaWxkQnlOYW1lKFwiR2FtZVwiKS5nZXRDaGlsZEJ5TmFtZShcInByb3BXaW5kb3dcIik7XHJcbiAgICAgICAgaWYocHJvcFdpbmRvdy5nZXRDaGlsZEJ5TmFtZShcImJ1eV9CdG5cIikuZ2V0Q29tcG9uZW50KFwiYnRuQ29udHJvbFwiKS5fdG91Y2gpe1xyXG4gICAgICAgICAgICAgIHByb3BXaW5kb3cuZ2V0Q2hpbGRCeU5hbWUoXCJidXlfQnRuXCIpLmdldENvbXBvbmVudChcImJ0bkNvbnRyb2xcIikuc2V0VG91Y2goZmFsc2UpO1xyXG4gICAgICAgICAgICAgIGlmKHRoaXMuYnRuTmFtZSA9PSBcImZyZWV6ZVwiKVxyXG4gICAgICAgICAgICAgICAgTWFwQ29ucm9sZXIuX2luc3RhbmNlLmJ1eUZyZWV6ZSgpO1xyXG4gICAgICAgICAgICAgIGVsc2UgaWYodGhpcy5idG5OYW1lID09IFwiaGFtbWVyXCIpXHJcbiAgICAgICAgICAgICAgICBNYXBDb25yb2xlci5faW5zdGFuY2UuYnV5SGFtbWVyKCk7XHJcbiAgICAgICAgICAgICAgZWxzZSBpZih0aGlzLmJ0bk5hbWUgPT0gXCJtYWdpY1wiKVxyXG4gICAgICAgICAgICAgICAgTWFwQ29ucm9sZXIuX2luc3RhbmNlLmJ1eU1hZ2ljKCk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuXHJcblxyXG4gICAgY2xvc2VQcm9wQnV5KCl7XHJcbiAgICAgICAgTWFwQ29ucm9sZXIuX2luc3RhbmNlLnBhdXNlID0gZmFsc2U7XHJcbiAgICAgICAgbGV0IGZyZWV6ZUJ0biA9IE1hcENvbnJvbGVyLl9pbnN0YW5jZS5ub2RlLnBhcmVudC5nZXRDaGlsZEJ5TmFtZShcIkJvdHRvbVwiKS5nZXRDaGlsZEJ5TmFtZShcInRpbWVCdG5cIik7XHJcbiAgICAgICAgbGV0IGhhbW1lckJ0biA9IE1hcENvbnJvbGVyLl9pbnN0YW5jZS5ub2RlLnBhcmVudC5nZXRDaGlsZEJ5TmFtZShcIkJvdHRvbVwiKS5nZXRDaGlsZEJ5TmFtZShcImRlc3Ryb3lCdG5cIik7XHJcbiAgICAgICAgbGV0IG1hZ2ljQnRuID0gTWFwQ29ucm9sZXIuX2luc3RhbmNlLm5vZGUucGFyZW50LmdldENoaWxkQnlOYW1lKFwiQm90dG9tXCIpLmdldENoaWxkQnlOYW1lKFwibWFnaWNCdG5cIik7XHJcbiAgICAgICAgaWYodGhpcy5idG5OYW1lID09IFwiZnJlZXplXCIpIGZyZWV6ZUJ0bi5nZXRDb21wb25lbnQoXCJidG5Db250cm9sXCIpLnNldFRvdWNoKHRydWUpO1xyXG4gICAgICAgIGVsc2UgaWYodGhpcy5idG5OYW1lID09IFwiaGFtbWVyXCIpIGhhbW1lckJ0bi5nZXRDb21wb25lbnQoXCJidG5Db250cm9sXCIpLnNldFRvdWNoKHRydWUpOyBcclxuICAgICAgICBlbHNlIGlmKHRoaXMuYnRuTmFtZSA9PSBcIm1hZ2ljXCIpIG1hZ2ljQnRuLmdldENvbXBvbmVudChcImJ0bkNvbnRyb2xcIikuc2V0VG91Y2godHJ1ZSk7XHJcblxyXG4gICAgICAgIHRoaXMubm9kZS5nZXRDaGlsZEJ5TmFtZShcIkdhbWVcIikuZ2V0Q2hpbGRCeU5hbWUoXCJwcm9wV2luZG93XCIpLmFjdGl2ZSA9IGZhbHNlO1xyXG4gICAgfVxyXG5cclxuICAgIHVwZGF0ZSAoZHQpIHtcclxuXHJcbiAgICB9XHJcbn1cclxuIl19 -======= -//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImFzc2V0c1xcU2NyaXB0XFxTY2VuZU1hbmFnZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLG9CQUFvQjtBQUNwQix3RUFBd0U7QUFDeEUsbUJBQW1CO0FBQ25CLGtGQUFrRjtBQUNsRiw4QkFBOEI7QUFDOUIsa0ZBQWtGOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFFbEYsNkJBQWdDO0FBQ2hDLGlEQUFnRDtBQUUxQyxJQUFBLEtBQXdCLEVBQUUsQ0FBQyxVQUFVLEVBQW5DLE9BQU8sYUFBQSxFQUFFLFFBQVEsY0FBa0IsQ0FBQztBQUc1QztJQUEwQyxnQ0FBWTtJQUF0RDtRQUFBLHFFQW1SQztRQWhSRyxXQUFLLEdBQWEsSUFBSSxDQUFDO1FBR3ZCLFVBQUksR0FBVyxPQUFPLENBQUM7UUFHdkIsWUFBTSxHQUFZLElBQUksQ0FBQztRQUd2QixZQUFNLEdBQVksSUFBSSxDQUFDO1FBR3ZCLGdCQUFVLEdBQVksSUFBSSxDQUFDO1FBRzNCLFdBQUssR0FBWSxJQUFJLENBQUM7UUFJdEIsaUJBQVcsR0FBcUIsRUFBRSxDQUFDO1FBR25DLGlCQUFXLEdBQXFCLEVBQUUsQ0FBQztRQUduQyx5REFBeUQ7UUFDekQsbURBQW1EO1FBRW5ELFdBQUssR0FBWSxLQUFLLENBQUM7UUFDdkIsV0FBSyxHQUFZLEtBQUssQ0FBQztRQUN2QixXQUFLLEdBQVksS0FBSyxDQUFDO1FBQ3ZCLGFBQU8sR0FBVyxFQUFFLENBQUM7O0lBaVB6QixDQUFDO0lBN09HLHdCQUF3QjtJQUV4Qiw2QkFBTSxHQUFOO1FBQ0ksRUFBRSxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsRUFBRSxDQUFDLENBQUM7UUFDekIsSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDO1FBRWhCLFVBQVUsQ0FBQztZQUNQLEVBQUUsQ0FBQyxRQUFRLENBQUMsWUFBWSxDQUFDLFdBQVcsRUFBRSxVQUFDLEdBQUc7Z0JBQ3RDLElBQUksR0FBRyxFQUFFO29CQUNMLDZDQUE2Qztv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QUFRLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQztnREFDSztJQUd2QjtRQURDLFFBQVEsQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDO2dEQUNLO0lBR3ZCO1FBREMsUUFBUSxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUM7b0RBQ1M7SUFHM0I7UUFEQyxRQUFRLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQzsrQ0FDSTtJQUl0QjtRQURDLFFBQVEsQ0FBQyxFQUFFLElBQUksRUFBRSxDQUFDLEVBQUUsQ0FBQyxNQUFNLENBQUMsRUFBRSxPQUFPLEVBQUUsTUFBTSxFQUFFLENBQUM7cURBQ2Q7SUFHbkM7UUFEQyxRQUFRLENBQUMsRUFBRSxJQUFJLEVBQUUsQ0FBQyxFQUFFLENBQUMsTUFBTSxDQUFDLEVBQUUsT0FBTyxFQUFFLE1BQU0sRUFBRSxDQUFDO3FEQUNkO0lBekJsQixZQUFZO1FBRGhDLE9BQU87T0FDYSxZQUFZLENBbVJoQztJQUFELG1CQUFDO0NBblJELEFBbVJDLENBblJ5QyxFQUFFLENBQUMsU0FBUyxHQW1SckQ7a0JBblJvQixZQUFZIiwiZmlsZSI6IiIsInNvdXJjZVJvb3QiOiIvIiwic291cmNlc0NvbnRlbnQiOlsiLy8gTGVhcm4gVHlwZVNjcmlwdDpcclxuLy8gIC0gaHR0cHM6Ly9kb2NzLmNvY29zLmNvbS9jcmVhdG9yL21hbnVhbC9lbi9zY3JpcHRpbmcvdHlwZXNjcmlwdC5odG1sXHJcbi8vIExlYXJuIEF0dHJpYnV0ZTpcclxuLy8gIC0gaHR0cHM6Ly9kb2NzLmNvY29zLmNvbS9jcmVhdG9yL21hbnVhbC9lbi9zY3JpcHRpbmcvcmVmZXJlbmNlL2F0dHJpYnV0ZXMuaHRtbFxyXG4vLyBMZWFybiBsaWZlLWN5Y2xlIGNhbGxiYWNrczpcclxuLy8gIC0gaHR0cHM6Ly9kb2NzLmNvY29zLmNvbS9jcmVhdG9yL21hbnVhbC9lbi9zY3JpcHRpbmcvbGlmZS1jeWNsZS1jYWxsYmFja3MuaHRtbFxyXG5cclxuaW1wb3J0IE1hcENvbnJvbGVyIGZyb20gXCIuL01hcFwiO1xyXG5pbXBvcnQgeyBNaW5pR2FtZVNkayB9IGZyb20gXCIuL1Nkay9NaW5pR2FtZVNka1wiO1xyXG5cclxuY29uc3QgeyBjY2NsYXNzLCBwcm9wZXJ0eSB9ID0gY2MuX2RlY29yYXRvcjtcclxuXHJcbkBjY2NsYXNzXHJcbmV4cG9ydCBkZWZhdWx0IGNsYXNzIFNjZW5lTWFuYWdlciBleHRlbmRzIGNjLkNvbXBvbmVudCB7XHJcblxyXG4gICAgQHByb3BlcnR5KGNjLkxhYmVsKVxyXG4gICAgbGFiZWw6IGNjLkxhYmVsID0gbnVsbDtcclxuXHJcbiAgICBAcHJvcGVydHlcclxuICAgIHRleHQ6IHN0cmluZyA9ICdoZWxsbyc7XHJcblxyXG4gICAgQHByb3BlcnR5KGNjLk5vZGUpXHJcbiAgICBmcmVlemU6IGNjLk5vZGUgPSBudWxsO1xyXG5cclxuICAgIEBwcm9wZXJ0eShjYy5Ob2RlKVxyXG4gICAgaGFtbWVyOiBjYy5Ob2RlID0gbnVsbDtcclxuXHJcbiAgICBAcHJvcGVydHkoY2MuTm9kZSlcclxuICAgIG1hZ2ljX3dhbmQ6IGNjLk5vZGUgPSBudWxsO1xyXG5cclxuICAgIEBwcm9wZXJ0eShjYy5Ob2RlKVxyXG4gICAgcGF1c2U6IGNjLk5vZGUgPSBudWxsO1xyXG5cclxuXHJcbiAgICBAcHJvcGVydHkoeyB0eXBlOiBbY2MuUHJlZmFiXSwgdG9vbHRpcDogXCLmlrnlnZfmlbDnu4RcIiB9KVxyXG4gICAgQmxvY2tfQXJyYXk6IEFycmF5PGNjLlByZWZhYj4gPSBbXTtcclxuXHJcbiAgICBAcHJvcGVydHkoeyB0eXBlOiBbY2MuUHJlZmFiXSwgdG9vbHRpcDogXCLlopnlo4HmlbDnu4RcIiB9KVxyXG4gICAgV2FsbF9QcmVmYWI6IEFycmF5PGNjLlByZWZhYj4gPSBbXTtcclxuXHJcbiAgICBwYXJ0aWNsZUVmZmVjdHM6IGNjLlBhcnRpY2xlQXNzZXRbXTtcclxuICAgIC8vIEBwcm9wZXJ0eSh7dHlwZTogW2NjLlBhcnRpY2xlU3lzdGVtXSwgdG9vbHRpcDpcIueykuWtkOaVsOe7hFwifSlcclxuICAgIC8vIHBhcnRpY2xlRWZmZWN0cyA6IEFycmF5PGNjLlBhcnRpY2xlU3lzdGVtPiA9IFtdO1xyXG5cclxuICAgIGxvYWQxOiBib29sZWFuID0gZmFsc2U7XHJcbiAgICBsb2FkMjogYm9vbGVhbiA9IGZhbHNlO1xyXG4gICAgbG9hZDM6IGJvb2xlYW4gPSBmYWxzZTtcclxuICAgIGJ0bk5hbWU6IHN0cmluZyA9ICcnO1xyXG4gICAgY2FsbEJhY2s6IGFueTtcclxuXHJcblxyXG4gICAgLy8gTElGRS1DWUNMRSBDQUxMQkFDS1M6XHJcblxyXG4gICAgb25Mb2FkKCkge1xyXG4gICAgICAgIGNjLmdhbWUuc2V0RnJhbWVSYXRlKDYzKTtcclxuICAgICAgICB0aGlzLmNoYW5nZUJnKCk7XHJcblxyXG4gICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICAgICAgICBjYy5kaXJlY3Rvci5wcmVsb2FkU2NlbmUoXCJIb21lU2NlbmVcIiwgKGVycikgPT4ge1xyXG4gICAgICAgICAgICAgICAgaWYgKGVycikge1xyXG4gICAgICAgICAgICAgICAgICAgIC8vIGNvbnNvbGUuZXJyb3IoJ+mihOWKoOi9vSBIb21lU2NlbmUg5Zy65pmv5aSx6LSlOicsIGVycik7XHJcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgLy8gY29uc29sZS5sb2coJ+aIkOWKn+mihOWKoOi9vSBIb21lU2NlbmUg5Zy65pmvJyk7XHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgIH0sIDEwMDApO1xyXG5cclxuICAgIH1cclxuXHJcbiAgICBjaGFuZ2VCZygpIHtcclxuICAgICAgICBsZXQgbnVtYmVyID0gTWF0aC5mbG9vcihNYXRoLnJhbmRvbSgpICogOCkgKyAxO1xyXG4gICAgICAgIGNvbnN0IHBhdGggPSAnYmcvYmcnICsgbnVtYmVyO1xyXG4gICAgICAgIGNjLnJlc291cmNlcy5sb2FkKHBhdGgsIGNjLlNwcml0ZUZyYW1lLCAoZXJyLCBzcHJpdGVGcmFtZTogY2MuU3ByaXRlRnJhbWUpID0+IHtcclxuICAgICAgICAgICAgaWYgKGVycikge1xyXG4gICAgICAgICAgICAgICAgY29uc29sZS5lcnJvcign5Yqo5oCB5Yqg6L296IOM5pmv5Zu+5aSx6LSlOicsIGVycik7XHJcbiAgICAgICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgdGhpcy5ub2RlLmdldENoaWxkQnlOYW1lKFwiR2FtZVwiKS5nZXRDaGlsZEJ5TmFtZShcImJnXCIpLmdldENvbXBvbmVudChjYy5TcHJpdGUpLnNwcml0ZUZyYW1lID0gc3ByaXRlRnJhbWU7XHJcbiAgICAgICAgfSlcclxuICAgIH1cclxuXHJcbiAgICBsb2FkUGFydGljbGVFZmZlY3RzKCkge1xyXG4gICAgICAgIGNvbnN0IHBhdGggPSAnUGFydGljbGUnO1xyXG4gICAgICAgIGNjLnJlc291cmNlcy5sb2FkRGlyKHBhdGgsIGNjLlBhcnRpY2xlQXNzZXQsIChlcnIsIGFzc2V0czogY2MuUGFydGljbGVBc3NldFtdKSA9PiB7XHJcbiAgICAgICAgICAgIGlmIChlcnIpIHtcclxuICAgICAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoJ+WKqOaAgeWKoOi9veeykuWtkOeJueaViOWksei0pTonLCBlcnIpO1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICB0aGlzLnBhcnRpY2xlRWZmZWN0cyA9IGFzc2V0cztcclxuICAgICAgICAgICAgdGhpcy5zZXRQYXJ0aWNsZVNvcnQoKTtcclxuICAgICAgICAgICAgdGhpcy5sb2FkMyA9IHRydWU7XHJcbiAgICAgICAgICAgIC8vY29uc29sZS5sb2coJ+eykuWtkOeJueaViOWKoOi9veaIkOWKn++8jOWFseWKoOi9veS6hicsIHRoaXMucGFydGljbGVFZmZlY3RzLmxlbmd0aCwgJ+S4queykuWtkOeJueaViCcpO1xyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG5cclxuICAgIHNldFdhbGxQcmVmYWJTb3J0KCkge1xyXG4gICAgICAgIGNvbnN0IG9yZGVyID0gWydkb3duJywgJ2Rvd25MZWZ0JywgJ2Rvd25SaWdodCcsICdsZWZ0JywgJ3JpZ2h0JywgJ3VwJywgJ3VwTGVmdCcsICd1cFJpZ2h0J107XHJcbiAgICAgICAgdGhpcy5XYWxsX1ByZWZhYi5zb3J0KChhLCBiKSA9PiB7XHJcbiAgICAgICAgICAgIGNvbnN0IGluZGV4QSA9IG9yZGVyLmluZGV4T2YoYS5uYW1lKTtcclxuICAgICAgICAgICAgY29uc3QgaW5kZXhCID0gb3JkZXIuaW5kZXhPZihiLm5hbWUpO1xyXG4gICAgICAgICAgICBpZiAoaW5kZXhBID09PSAtMSkgcmV0dXJuIDE7XHJcbiAgICAgICAgICAgIGlmIChpbmRleEIgPT09IC0xKSByZXR1cm4gLTE7XHJcbiAgICAgICAgICAgIHJldHVybiBpbmRleEEgLSBpbmRleEI7XHJcbiAgICAgICAgfSk7XHJcblxyXG4gICAgfVxyXG5cclxuICAgIHNldFBhcnRpY2xlU29ydCgpIHtcclxuICAgICAgICBjb25zdCBvcmRlciA9IFsndG9wJywgJ2JvdCcsICdyaWcnLCAnbGVmJ107XHJcbiAgICAgICAgdGhpcy5wYXJ0aWNsZUVmZmVjdHMuc29ydCgoYSwgYikgPT4ge1xyXG4gICAgICAgICAgICAvLyBjb25zb2xlLmxvZyhhLm5hbWUuc3Vic3RyKDAsMyksYi5uYW1lLnN1YnN0cigwLDMpKTtcclxuICAgICAgICAgICAgY29uc3QgaW5kZXhBID0gb3JkZXIuaW5kZXhPZihhLm5hbWUuc3Vic3RyKDAsIDMpKTtcclxuICAgICAgICAgICAgY29uc3QgaW5kZXhCID0gb3JkZXIuaW5kZXhPZihiLm5hbWUuc3Vic3RyKDAsIDMpKTtcclxuICAgICAgICAgICAgaWYgKGluZGV4QSA9PT0gLTEpIHJldHVybiAxO1xyXG4gICAgICAgICAgICBpZiAoaW5kZXhCID09PSAtMSkgcmV0dXJuIC0xO1xyXG4gICAgICAgICAgICByZXR1cm4gaW5kZXhBIC0gaW5kZXhCO1xyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG5cclxuICAgIHNldFNvcnQoKSB7XHJcbiAgICAgICAgdGhpcy5CbG9ja19BcnJheS5zb3J0KChhLCBiKSA9PiB7XHJcbiAgICAgICAgICAgIC8vIOS7juWQjeensOS4reaPkOWPluaVsOWtl+mDqOWIhlxyXG4gICAgICAgICAgICBjb25zdCBudW1iZXJBID0gcGFyc2VJbnQoYS5uYW1lLm1hdGNoKC9cXGQrLyk/LlswXSB8fCAnMCcsIDEwKTtcclxuICAgICAgICAgICAgY29uc3QgbnVtYmVyQiA9IHBhcnNlSW50KGIubmFtZS5tYXRjaCgvXFxkKy8pPy5bMF0gfHwgJzAnLCAxMCk7XHJcbiAgICAgICAgICAgIHJldHVybiBudW1iZXJBIC0gbnVtYmVyQjtcclxuICAgICAgICB9KTtcclxuICAgIH1cclxuXHJcbiAgICBzdGFydCgpIHtcclxuXHJcbiAgICB9XHJcblxyXG4gICAgc3RhcnRHYW1lKCkge1xyXG4gICAgICAgIGNjLmRpcmVjdG9yLmxvYWRTY2VuZShcIkhvbWVTY2VuZVwiLCAoZXJyKSA9PiB7XHJcbiAgICAgICAgICAgIGlmIChlcnIpIHtcclxuICAgICAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoJ+WKoOi9vSBIb21lU2NlbmUg5Zy65pmv5aSx6LSlOicsIGVycik7XHJcbiAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAvLyBjb25zb2xlLmxvZygn5oiQ5Yqf5YiH5o2i5YiwIEhvbWVTY2VuZSDlnLrmma8nKTtcclxuICAgICAgICAgICAgICAgIGNjLmRpcmVjdG9yLmxvYWRTY2VuZShcIkhvbWVTY2VuZVwiKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH0pO1xyXG5cclxuICAgIH1cclxuXHJcbiAgICByZXR1cm5Ib21lKCkge1xyXG4gICAgICAgIGlmICh0aGlzLm5vZGUuZ2V0Q2hpbGRCeU5hbWUoXCJQYXVzZVwiKS5nZXRDaGlsZEJ5TmFtZShcImJ0blwiKS5nZXRDb21wb25lbnQoXCJidG5Db250cm9sXCIpLl90b3VjaCkge1xyXG4gICAgICAgICAgICBpZiAoTWFwQ29ucm9sZXIuX2luc3RhbmNlLmdhbWVTdGFydCA9PSB0cnVlKSB7XHJcbiAgICAgICAgICAgICAgICBNaW5pR2FtZVNkay5BUEkuc2hvd1RvYXN0KFwi5L2T5Yqb5YC85YeP5bCRXCIpO1xyXG4gICAgICAgICAgICAgICAgY2MuZnguR2FtZVRvb2wuc2V0VXNlckhlYWx0aCgtMSwgKGRhdGEpID0+IHtcclxuICAgICAgICAgICAgICAgIH0pXHJcbiAgICAgICAgICAgICAgICBsZXQgZGF0YSA9IHtcclxuICAgICAgICAgICAgICAgICAgICB0aW1lOiBNYXBDb25yb2xlci5faW5zdGFuY2UuY291bnRfVGltZSxcclxuICAgICAgICAgICAgICAgICAgICBhZGRfVGltZTogTWFwQ29ucm9sZXIuX2luc3RhbmNlLmFkZF9UaW1lLFxyXG4gICAgICAgICAgICAgICAgICAgIHJlc3VsdDogXCJnaXZlX3VwXCJcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIGNjLmZ4LkdhbWVUb29sLnNodXNodV9UcmFjayhcImZpbmlzaF9zdGFnZVwiLCBkYXRhKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB0aGlzLm5vZGUuZ2V0Q2hpbGRCeU5hbWUoXCJQYXVzZVwiKS5nZXRDaGlsZEJ5TmFtZShcImJ0blwiKS5nZXRDb21wb25lbnQoXCJidG5Db250cm9sXCIpLnNldFRvdWNoKGZhbHNlKTtcclxuICAgICAgICAgICAgY2MuZnguQXVkaW9NYW5hZ2VyLl9pbnN0YW5jZS5wbGF5RWZmZWN0KFwiemh1YW4xXCIsIG51bGwpO1xyXG4gICAgICAgICAgICB0aGlzLm5vZGUuZ2V0Q2hpbGRCeU5hbWUoXCJ6aHVhbmNoYW5nXCIpLmFjdGl2ZSA9IHRydWU7XHJcbiAgICAgICAgICAgIHRoaXMubm9kZS5nZXRDaGlsZEJ5TmFtZShcInpodWFuY2hhbmdcIikuZ2V0Q29tcG9uZW50KHNwLlNrZWxldG9uKS5zZXRBbmltYXRpb24oMSwgXCJ1cFwiLCBmYWxzZSk7XHJcbiAgICAgICAgICAgIGNjLmRpcmVjdG9yLnByZWxvYWRTY2VuZShcIkhvbWVTY2VuZVwiLCAoZXJyLCBhc3NldCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgaWYgKGVycikge1xyXG4gICAgICAgICAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoJ+WKqOaAgeWKoOi9vSBQcmVmYWIg5aSx6LSlOicsIGVycik7XHJcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgY2MuZGlyZWN0b3IubG9hZFNjZW5lKFwiSG9tZVNjZW5lXCIpO1xyXG4gICAgICAgICAgICB9LCAxMjAwKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG5cclxuICAgIGRlc3Ryb3lOb2Rlc0luRnJhbWVzKG5vZGVzOiBjYy5Ob2RlW10sIGNhbGxiYWNrOiAoKSA9PiB2b2lkKSB7XHJcbiAgICAgICAgY29uc3QgQkFUQ0hfU0laRSA9IDEwOyAvLyDmr4/luKfplIDmr4HnmoToioLngrnmlbDph49cclxuICAgICAgICBsZXQgaW5kZXggPSAwO1xyXG5cclxuICAgICAgICBjb25zdCBkZXN0cm95QmF0Y2ggPSAoKSA9PiB7XHJcbiAgICAgICAgICAgIGxldCBjb3VudCA9IDA7XHJcbiAgICAgICAgICAgIHdoaWxlIChpbmRleCA8IG5vZGVzLmxlbmd0aCAmJiBjb3VudCA8IEJBVENIX1NJWkUpIHtcclxuICAgICAgICAgICAgICAgIGNvbnN0IG5vZGUgPSBub2Rlc1tpbmRleF07XHJcbiAgICAgICAgICAgICAgICBpZiAobm9kZSkge1xyXG5cclxuICAgICAgICAgICAgICAgICAgICBub2RlLmFjdGl2ZSA9IGZhbHNlO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgaW5kZXgrKztcclxuICAgICAgICAgICAgICAgIGNvdW50Kys7XHJcbiAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgIGlmIChpbmRleCA8IG5vZGVzLmxlbmd0aCkge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5zY2hlZHVsZU9uY2UoZGVzdHJveUJhdGNoLCA2KTtcclxuICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgIGNhbGxiYWNrKCk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9O1xyXG5cclxuICAgICAgICBkZXN0cm95QmF0Y2goKTtcclxuICAgIH1cclxuXHJcbiAgICAvLyDmlLnov5vlkI7nmoTliIfmjaLlnLrmma/mlrnms5VcclxuICAgIHN3aXRjaFRvRW1wdHlTY2VuZSgpIHtcclxuICAgICAgICBjb25zdCBhbGxOb2RlcyA9IGNjLmRpcmVjdG9yLmdldFNjZW5lKCkuY2hpbGRyZW47XHJcbiAgICAgICAgdGhpcy5kZXN0cm95Tm9kZXNJbkZyYW1lcyhhbGxOb2RlcywgKCkgPT4ge1xyXG4gICAgICAgICAgICBjYy5kaXJlY3Rvci5sb2FkU2NlbmUoXCJIb21lU2NlbmVcIik7XHJcbiAgICAgICAgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgb3BlblBhdXNlKCkge1xyXG4gICAgICAgIGNjLmZ4LkF1ZGlvTWFuYWdlci5faW5zdGFuY2UucGxheUVmZmVjdChcImFubml1X2xpdHRsZVwiLCBudWxsKTtcclxuICAgICAgICBpZiAodGhpcy5wYXVzZS5nZXRDb21wb25lbnQoXCJidG5Db250cm9sXCIpLl90b3VjaCkge1xyXG4gICAgICAgICAgICB0aGlzLnBhdXNlLmdldENvbXBvbmVudChcImJ0bkNvbnRyb2xcIikuc2V0VG91Y2goZmFsc2UpO1xyXG4gICAgICAgICAgICB0aGlzLm5vZGUuZ2V0Q2hpbGRCeU5hbWUoXCJQYXVzZVwiKS5hY3RpdmUgPSB0cnVlO1xyXG4gICAgICAgICAgICBNYXBDb25yb2xlci5faW5zdGFuY2UucGF1c2UgPSB0cnVlO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICB9XHJcblxyXG4gICAgY2xvc2VQYXVzZSgpIHtcclxuICAgICAgICBjYy5meC5BdWRpb01hbmFnZXIuX2luc3RhbmNlLnBsYXlFZmZlY3QoXCJhbm5pdV9saXR0bGVcIiwgbnVsbCk7XHJcbiAgICAgICAgdGhpcy5wYXVzZS5nZXRDb21wb25lbnQoXCJidG5Db250cm9sXCIpLnNldFRvdWNoKHRydWUpO1xyXG4gICAgICAgIHRoaXMubm9kZS5nZXRDaGlsZEJ5TmFtZShcIlBhdXNlXCIpLmFjdGl2ZSA9IGZhbHNlO1xyXG4gICAgICAgIGlmIChNYXBDb25yb2xlci5faW5zdGFuY2Uubm9kZS5wYXJlbnQuZ2V0Q2hpbGRCeU5hbWUoXCJJY2VcIikuYWN0aXZlID09IGZhbHNlKSB7XHJcbiAgICAgICAgICAgIE1hcENvbnJvbGVyLl9pbnN0YW5jZS5wYXVzZSA9IGZhbHNlO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBvcGVuUHJvcEJ1eShuYW1lKSB7XHJcbiAgICAgICAgTWFwQ29ucm9sZXIuX2luc3RhbmNlLnBhdXNlID0gdHJ1ZTtcclxuICAgICAgICB0aGlzLmJ0bk5hbWUgPSBuYW1lO1xyXG4gICAgICAgIGxldCBwcm9wV2luZG93ID0gdGhpcy5ub2RlLmdldENoaWxkQnlOYW1lKFwiR2FtZVwiKS5nZXRDaGlsZEJ5TmFtZShcInByb3BXaW5kb3dcIik7XHJcbiAgICAgICAgcHJvcFdpbmRvdy5hY3RpdmUgPSB0cnVlO1xyXG4gICAgICAgIHByb3BXaW5kb3cuZ2V0Q2hpbGRCeU5hbWUoXCJmcmVlemVcIikuYWN0aXZlID0gZmFsc2U7XHJcbiAgICAgICAgcHJvcFdpbmRvdy5nZXRDaGlsZEJ5TmFtZShcImhhbW1lclwiKS5hY3RpdmUgPSBmYWxzZTtcclxuICAgICAgICBwcm9wV2luZG93LmdldENoaWxkQnlOYW1lKFwibWFnaWNcIikuYWN0aXZlID0gZmFsc2U7XHJcbiAgICAgICAgcHJvcFdpbmRvdy5nZXRDaGlsZEJ5TmFtZShcImJ1eV9CdG5cIikuZ2V0Q29tcG9uZW50KFwiYnRuQ29udHJvbFwiKS5zZXRUb3VjaCh0cnVlKTtcclxuICAgICAgICBwcm9wV2luZG93LmdldENoaWxkQnlOYW1lKG5hbWUpLmFjdGl2ZSA9IHRydWU7XHJcbiAgICB9XHJcblxyXG4gICAgY2xpY2tCdG4oKSB7XHJcbiAgICAgICAgY2MuZnguQXVkaW9NYW5hZ2VyLl9pbnN0YW5jZS5wbGF5RWZmZWN0KFwiYW5uaXVfQmlnXCIsIG51bGwpO1xyXG4gICAgICAgIGxldCBwcm9wV2luZG93ID0gdGhpcy5ub2RlLmdldENoaWxkQnlOYW1lKFwiR2FtZVwiKS5nZXRDaGlsZEJ5TmFtZShcInByb3BXaW5kb3dcIik7XHJcbiAgICAgICAgaWYgKHByb3BXaW5kb3cuZ2V0Q2hpbGRCeU5hbWUoXCJidXlfQnRuXCIpLmdldENvbXBvbmVudChcImJ0bkNvbnRyb2xcIikuX3RvdWNoKSB7XHJcbiAgICAgICAgICAgIHByb3BXaW5kb3cuZ2V0Q2hpbGRCeU5hbWUoXCJidXlfQnRuXCIpLmdldENvbXBvbmVudChcImJ0bkNvbnRyb2xcIikuc2V0VG91Y2goZmFsc2UpO1xyXG4gICAgICAgICAgICBpZiAodGhpcy5idG5OYW1lID09IFwiZnJlZXplXCIpXHJcbiAgICAgICAgICAgICAgICBNYXBDb25yb2xlci5faW5zdGFuY2UuYnV5RnJlZXplKCk7XHJcbiAgICAgICAgICAgIGVsc2UgaWYgKHRoaXMuYnRuTmFtZSA9PSBcImhhbW1lclwiKVxyXG4gICAgICAgICAgICAgICAgTWFwQ29ucm9sZXIuX2luc3RhbmNlLmJ1eUhhbW1lcigpO1xyXG4gICAgICAgICAgICBlbHNlIGlmICh0aGlzLmJ0bk5hbWUgPT0gXCJtYWdpY1wiKVxyXG4gICAgICAgICAgICAgICAgTWFwQ29ucm9sZXIuX2luc3RhbmNlLmJ1eU1hZ2ljKCk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG4gICAgLy/miZPlvIDllYblupdcclxuICAgIG9wZW5TaG9wKCkge1xyXG4gICAgICAgIC8vIOWKoOi9vSBzaG9wICBidW5kbGVcclxuICAgICAgICBjYy5hc3NldE1hbmFnZXIubG9hZEJ1bmRsZSgnc2hvcCcsIChlcnI6IEVycm9yLCBidW5kbGU6IGNjLkFzc2V0TWFuYWdlci5CdW5kbGUpID0+IHtcclxuICAgICAgICAgICAgYnVuZGxlLmxvYWQoJ3ByZWZhYi9zaG9wJywgY2MuUHJlZmFiLCAoZXJyOiBFcnJvciwgcHJlZmFiOiBjYy5QcmVmYWIpID0+IHtcclxuICAgICAgICAgICAgICAgIGlmIChlcnIpIHtcclxuICAgICAgICAgICAgICAgICAgICBjYy5lcnJvcihlcnIubWVzc2FnZSB8fCBlcnIpO1xyXG4gICAgICAgICAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIGlmIChwcmVmYWIpIHtcclxuICAgICAgICAgICAgICAgICAgICBjb25zdCBzaG9wTm9kZSA9IGNjLmluc3RhbnRpYXRlKHByZWZhYik7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5ub2RlLmFkZENoaWxkKHNob3BOb2RlKTtcclxuICAgICAgICAgICAgICAgICAgICBjb25zb2xlLmxvZyhcInNob3BOb2RlIHBhcmVudDpcIiwgc2hvcE5vZGUucGFyZW50KTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgfSk7XHJcbiAgICB9XHJcblxyXG5cclxuICAgIGNsb3NlUHJvcEJ1eSgpIHtcclxuICAgICAgICBNYXBDb25yb2xlci5faW5zdGFuY2UucGF1c2UgPSBmYWxzZTtcclxuICAgICAgICBsZXQgZnJlZXplQnRuID0gTWFwQ29ucm9sZXIuX2luc3RhbmNlLm5vZGUucGFyZW50LmdldENoaWxkQnlOYW1lKFwiQm90dG9tXCIpLmdldENoaWxkQnlOYW1lKFwidGltZUJ0blwiKTtcclxuICAgICAgICBsZXQgaGFtbWVyQnRuID0gTWFwQ29ucm9sZXIuX2luc3RhbmNlLm5vZGUucGFyZW50LmdldENoaWxkQnlOYW1lKFwiQm90dG9tXCIpLmdldENoaWxkQnlOYW1lKFwiZGVzdHJveUJ0blwiKTtcclxuICAgICAgICBsZXQgbWFnaWNCdG4gPSBNYXBDb25yb2xlci5faW5zdGFuY2Uubm9kZS5wYXJlbnQuZ2V0Q2hpbGRCeU5hbWUoXCJCb3R0b21cIikuZ2V0Q2hpbGRCeU5hbWUoXCJtYWdpY0J0blwiKTtcclxuICAgICAgICBpZiAodGhpcy5idG5OYW1lID09IFwiZnJlZXplXCIpIGZyZWV6ZUJ0bi5nZXRDb21wb25lbnQoXCJidG5Db250cm9sXCIpLnNldFRvdWNoKHRydWUpO1xyXG4gICAgICAgIGVsc2UgaWYgKHRoaXMuYnRuTmFtZSA9PSBcImhhbW1lclwiKSBoYW1tZXJCdG4uZ2V0Q29tcG9uZW50KFwiYnRuQ29udHJvbFwiKS5zZXRUb3VjaCh0cnVlKTtcclxuICAgICAgICBlbHNlIGlmICh0aGlzLmJ0bk5hbWUgPT0gXCJtYWdpY1wiKSBtYWdpY0J0bi5nZXRDb21wb25lbnQoXCJidG5Db250cm9sXCIpLnNldFRvdWNoKHRydWUpO1xyXG5cclxuICAgICAgICB0aGlzLm5vZGUuZ2V0Q2hpbGRCeU5hbWUoXCJHYW1lXCIpLmdldENoaWxkQnlOYW1lKFwicHJvcFdpbmRvd1wiKS5hY3RpdmUgPSBmYWxzZTtcclxuICAgIH1cclxuXHJcbiAgICB1cGRhdGUoZHQpIHtcclxuXHJcbiAgICB9XHJcbn1cclxuIl19 ->>>>>>> 0a31a7a5abc2c505bf743aa596e1c765a0405152 +//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImFzc2V0c1xcU2NyaXB0XFxTY2VuZU1hbmFnZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLG9CQUFvQjtBQUNwQix3RUFBd0U7QUFDeEUsbUJBQW1CO0FBQ25CLGtGQUFrRjtBQUNsRiw4QkFBOEI7QUFDOUIsa0ZBQWtGOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFFbEYsNkJBQWdDO0FBQ2hDLGlEQUFnRDtBQUUxQyxJQUFBLEtBQXdCLEVBQUUsQ0FBQyxVQUFVLEVBQW5DLE9BQU8sYUFBQSxFQUFFLFFBQVEsY0FBa0IsQ0FBQztBQUc1QztJQUEwQyxnQ0FBWTtJQUF0RDtRQUFBLHFFQWdTQztRQTdSRyxXQUFLLEdBQWEsSUFBSSxDQUFDO1FBR3ZCLFVBQUksR0FBVyxPQUFPLENBQUM7UUFHdkIsWUFBTSxHQUFZLElBQUksQ0FBQztRQUd2QixZQUFNLEdBQVksSUFBSSxDQUFDO1FBR3ZCLGdCQUFVLEdBQVksSUFBSSxDQUFDO1FBRzNCLFdBQUssR0FBWSxJQUFJLENBQUM7UUFJdEIsaUJBQVcsR0FBcUIsRUFBRSxDQUFDO1FBR25DLGlCQUFXLEdBQXFCLEVBQUUsQ0FBQztRQUduQyx5REFBeUQ7UUFDekQsbURBQW1EO1FBRW5ELFdBQUssR0FBWSxLQUFLLENBQUM7UUFDdkIsV0FBSyxHQUFZLEtBQUssQ0FBQztRQUN2QixXQUFLLEdBQVksS0FBSyxDQUFDO1FBQ3ZCLGFBQU8sR0FBVyxFQUFFLENBQUM7O0lBOFB6QixDQUFDO0lBMVBHLHdCQUF3QjtJQUV4Qiw2QkFBTSxHQUFOO1FBQ0ksRUFBRSxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsRUFBRSxDQUFDLENBQUM7UUFDekIsSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDO1FBRWhCLFVBQVUsQ0FBQztZQUNQLEVBQUUsQ0FBQyxRQUFRLENBQUMsWUFBWSxDQUFDLFdBQVcsRUFBRSxVQUFDLEdBQUc7Z0JBQ3RDLElBQUksR0FBRyxFQUFFO29CQUNMLDZDQUE2Qztv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QkFBTSxHQUFOLFVBQU8sRUFBRTtJQUVULENBQUM7SUE1UkQ7UUFEQyxRQUFRLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQzsrQ0FDSTtJQUd2QjtRQURDLFFBQVE7OENBQ2M7SUFHdkI7UUFEQyxRQUFRLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQztnREFDSztJQUd2QjtRQURDLFFBQVEsQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDO2dEQUNLO0lBR3ZCO1FBREMsUUFBUSxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUM7b0RBQ1M7SUFHM0I7UUFEQyxRQUFRLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQzsrQ0FDSTtJQUl0QjtRQURDLFFBQVEsQ0FBQyxFQUFFLElBQUksRUFBRSxDQUFDLEVBQUUsQ0FBQyxNQUFNLENBQUMsRUFBRSxPQUFPLEVBQUUsTUFBTSxFQUFFLENBQUM7cURBQ2Q7SUFHbkM7UUFEQyxRQUFRLENBQUMsRUFBRSxJQUFJLEVBQUUsQ0FBQyxFQUFFLENBQUMsTUFBTSxDQUFDLEVBQUUsT0FBTyxFQUFFLE1BQU0sRUFBRSxDQUFDO3FEQUNkO0lBekJsQixZQUFZO1FBRGhDLE9BQU87T0FDYSxZQUFZLENBZ1NoQztJQUFELG1CQUFDO0NBaFNELEFBZ1NDLENBaFN5QyxFQUFFLENBQUMsU0FBUyxHQWdTckQ7a0JBaFNvQixZQUFZIiwiZmlsZSI6IiIsInNvdXJjZVJvb3QiOiIvIiwic291cmNlc0NvbnRlbnQiOlsiLy8gTGVhcm4gVHlwZVNjcmlwdDpcclxuLy8gIC0gaHR0cHM6Ly9kb2NzLmNvY29zLmNvbS9jcmVhdG9yL21hbnVhbC9lbi9zY3JpcHRpbmcvdHlwZXNjcmlwdC5odG1sXHJcbi8vIExlYXJuIEF0dHJpYnV0ZTpcclxuLy8gIC0gaHR0cHM6Ly9kb2NzLmNvY29zLmNvbS9jcmVhdG9yL21hbnVhbC9lbi9zY3JpcHRpbmcvcmVmZXJlbmNlL2F0dHJpYnV0ZXMuaHRtbFxyXG4vLyBMZWFybiBsaWZlLWN5Y2xlIGNhbGxiYWNrczpcclxuLy8gIC0gaHR0cHM6Ly9kb2NzLmNvY29zLmNvbS9jcmVhdG9yL21hbnVhbC9lbi9zY3JpcHRpbmcvbGlmZS1jeWNsZS1jYWxsYmFja3MuaHRtbFxyXG5cclxuaW1wb3J0IE1hcENvbnJvbGVyIGZyb20gXCIuL01hcFwiO1xyXG5pbXBvcnQgeyBNaW5pR2FtZVNkayB9IGZyb20gXCIuL1Nkay9NaW5pR2FtZVNka1wiO1xyXG5cclxuY29uc3QgeyBjY2NsYXNzLCBwcm9wZXJ0eSB9ID0gY2MuX2RlY29yYXRvcjtcclxuXHJcbkBjY2NsYXNzXHJcbmV4cG9ydCBkZWZhdWx0IGNsYXNzIFNjZW5lTWFuYWdlciBleHRlbmRzIGNjLkNvbXBvbmVudCB7XHJcblxyXG4gICAgQHByb3BlcnR5KGNjLkxhYmVsKVxyXG4gICAgbGFiZWw6IGNjLkxhYmVsID0gbnVsbDtcclxuXHJcbiAgICBAcHJvcGVydHlcclxuICAgIHRleHQ6IHN0cmluZyA9ICdoZWxsbyc7XHJcblxyXG4gICAgQHByb3BlcnR5KGNjLk5vZGUpXHJcbiAgICBmcmVlemU6IGNjLk5vZGUgPSBudWxsO1xyXG5cclxuICAgIEBwcm9wZXJ0eShjYy5Ob2RlKVxyXG4gICAgaGFtbWVyOiBjYy5Ob2RlID0gbnVsbDtcclxuXHJcbiAgICBAcHJvcGVydHkoY2MuTm9kZSlcclxuICAgIG1hZ2ljX3dhbmQ6IGNjLk5vZGUgPSBudWxsO1xyXG5cclxuICAgIEBwcm9wZXJ0eShjYy5Ob2RlKVxyXG4gICAgcGF1c2U6IGNjLk5vZGUgPSBudWxsO1xyXG5cclxuXHJcbiAgICBAcHJvcGVydHkoeyB0eXBlOiBbY2MuUHJlZmFiXSwgdG9vbHRpcDogXCLmlrnlnZfmlbDnu4RcIiB9KVxyXG4gICAgQmxvY2tfQXJyYXk6IEFycmF5PGNjLlByZWZhYj4gPSBbXTtcclxuXHJcbiAgICBAcHJvcGVydHkoeyB0eXBlOiBbY2MuUHJlZmFiXSwgdG9vbHRpcDogXCLlopnlo4HmlbDnu4RcIiB9KVxyXG4gICAgV2FsbF9QcmVmYWI6IEFycmF5PGNjLlByZWZhYj4gPSBbXTtcclxuXHJcbiAgICBwYXJ0aWNsZUVmZmVjdHM6IGNjLlBhcnRpY2xlQXNzZXRbXTtcclxuICAgIC8vIEBwcm9wZXJ0eSh7dHlwZTogW2NjLlBhcnRpY2xlU3lzdGVtXSwgdG9vbHRpcDpcIueykuWtkOaVsOe7hFwifSlcclxuICAgIC8vIHBhcnRpY2xlRWZmZWN0cyA6IEFycmF5PGNjLlBhcnRpY2xlU3lzdGVtPiA9IFtdO1xyXG5cclxuICAgIGxvYWQxOiBib29sZWFuID0gZmFsc2U7XHJcbiAgICBsb2FkMjogYm9vbGVhbiA9IGZhbHNlO1xyXG4gICAgbG9hZDM6IGJvb2xlYW4gPSBmYWxzZTtcclxuICAgIGJ0bk5hbWU6IHN0cmluZyA9ICcnO1xyXG4gICAgY2FsbEJhY2s6IGFueTtcclxuXHJcblxyXG4gICAgLy8gTElGRS1DWUNMRSBDQUxMQkFDS1M6XHJcblxyXG4gICAgb25Mb2FkKCkge1xyXG4gICAgICAgIGNjLmdhbWUuc2V0RnJhbWVSYXRlKDYzKTtcclxuICAgICAgICB0aGlzLmNoYW5nZUJnKCk7XHJcblxyXG4gICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICAgICAgICBjYy5kaXJlY3Rvci5wcmVsb2FkU2NlbmUoXCJIb21lU2NlbmVcIiwgKGVycikgPT4ge1xyXG4gICAgICAgICAgICAgICAgaWYgKGVycikge1xyXG4gICAgICAgICAgICAgICAgICAgIC8vIGNvbnNvbGUuZXJyb3IoJ+mihOWKoOi9vSBIb21lU2NlbmUg5Zy65pmv5aSx6LSlOicsIGVycik7XHJcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgLy8gY29uc29sZS5sb2coJ+aIkOWKn+mihOWKoOi9vSBIb21lU2NlbmUg5Zy65pmvJyk7XHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgIH0sIDEwMDApO1xyXG5cclxuICAgIH1cclxuXHJcbiAgICBjaGFuZ2VCZygpIHtcclxuICAgICAgICBsZXQgbnVtYmVyID0gTWF0aC5mbG9vcihNYXRoLnJhbmRvbSgpICogOCkgKyAxO1xyXG4gICAgICAgIGNvbnN0IHBhdGggPSAnYmcvYmcnICsgbnVtYmVyO1xyXG4gICAgICAgIGNjLnJlc291cmNlcy5sb2FkKHBhdGgsIGNjLlNwcml0ZUZyYW1lLCAoZXJyLCBzcHJpdGVGcmFtZTogY2MuU3ByaXRlRnJhbWUpID0+IHtcclxuICAgICAgICAgICAgaWYgKGVycikge1xyXG4gICAgICAgICAgICAgICAgY29uc29sZS5lcnJvcign5Yqo5oCB5Yqg6L296IOM5pmv5Zu+5aSx6LSlOicsIGVycik7XHJcbiAgICAgICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgdGhpcy5ub2RlLmdldENoaWxkQnlOYW1lKFwiR2FtZVwiKS5nZXRDaGlsZEJ5TmFtZShcImJnXCIpLmdldENvbXBvbmVudChjYy5TcHJpdGUpLnNwcml0ZUZyYW1lID0gc3ByaXRlRnJhbWU7XHJcbiAgICAgICAgfSlcclxuICAgIH1cclxuXHJcbiAgICBsb2FkUGFydGljbGVFZmZlY3RzKCkge1xyXG4gICAgICAgIGNvbnN0IHBhdGggPSAnUGFydGljbGUnO1xyXG4gICAgICAgIGNjLnJlc291cmNlcy5sb2FkRGlyKHBhdGgsIGNjLlBhcnRpY2xlQXNzZXQsIChlcnIsIGFzc2V0czogY2MuUGFydGljbGVBc3NldFtdKSA9PiB7XHJcbiAgICAgICAgICAgIGlmIChlcnIpIHtcclxuICAgICAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoJ+WKqOaAgeWKoOi9veeykuWtkOeJueaViOWksei0pTonLCBlcnIpO1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICB0aGlzLnBhcnRpY2xlRWZmZWN0cyA9IGFzc2V0cztcclxuICAgICAgICAgICAgdGhpcy5zZXRQYXJ0aWNsZVNvcnQoKTtcclxuICAgICAgICAgICAgdGhpcy5sb2FkMyA9IHRydWU7XHJcbiAgICAgICAgICAgIC8vY29uc29sZS5sb2coJ+eykuWtkOeJueaViOWKoOi9veaIkOWKn++8jOWFseWKoOi9veS6hicsIHRoaXMucGFydGljbGVFZmZlY3RzLmxlbmd0aCwgJ+S4queykuWtkOeJueaViCcpO1xyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG5cclxuICAgIHNldFdhbGxQcmVmYWJTb3J0KCkge1xyXG4gICAgICAgIGNvbnN0IG9yZGVyID0gWydkb3duJywgJ2Rvd25MZWZ0JywgJ2Rvd25SaWdodCcsICdsZWZ0JywgJ3JpZ2h0JywgJ3VwJywgJ3VwTGVmdCcsICd1cFJpZ2h0J107XHJcbiAgICAgICAgdGhpcy5XYWxsX1ByZWZhYi5zb3J0KChhLCBiKSA9PiB7XHJcbiAgICAgICAgICAgIGNvbnN0IGluZGV4QSA9IG9yZGVyLmluZGV4T2YoYS5uYW1lKTtcclxuICAgICAgICAgICAgY29uc3QgaW5kZXhCID0gb3JkZXIuaW5kZXhPZihiLm5hbWUpO1xyXG4gICAgICAgICAgICBpZiAoaW5kZXhBID09PSAtMSkgcmV0dXJuIDE7XHJcbiAgICAgICAgICAgIGlmIChpbmRleEIgPT09IC0xKSByZXR1cm4gLTE7XHJcbiAgICAgICAgICAgIHJldHVybiBpbmRleEEgLSBpbmRleEI7XHJcbiAgICAgICAgfSk7XHJcblxyXG4gICAgfVxyXG5cclxuICAgIHNldFBhcnRpY2xlU29ydCgpIHtcclxuICAgICAgICBjb25zdCBvcmRlciA9IFsndG9wJywgJ2JvdCcsICdyaWcnLCAnbGVmJ107XHJcbiAgICAgICAgdGhpcy5wYXJ0aWNsZUVmZmVjdHMuc29ydCgoYSwgYikgPT4ge1xyXG4gICAgICAgICAgICAvLyBjb25zb2xlLmxvZyhhLm5hbWUuc3Vic3RyKDAsMyksYi5uYW1lLnN1YnN0cigwLDMpKTtcclxuICAgICAgICAgICAgY29uc3QgaW5kZXhBID0gb3JkZXIuaW5kZXhPZihhLm5hbWUuc3Vic3RyKDAsIDMpKTtcclxuICAgICAgICAgICAgY29uc3QgaW5kZXhCID0gb3JkZXIuaW5kZXhPZihiLm5hbWUuc3Vic3RyKDAsIDMpKTtcclxuICAgICAgICAgICAgaWYgKGluZGV4QSA9PT0gLTEpIHJldHVybiAxO1xyXG4gICAgICAgICAgICBpZiAoaW5kZXhCID09PSAtMSkgcmV0dXJuIC0xO1xyXG4gICAgICAgICAgICByZXR1cm4gaW5kZXhBIC0gaW5kZXhCO1xyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG5cclxuICAgIHNldFNvcnQoKSB7XHJcbiAgICAgICAgdGhpcy5CbG9ja19BcnJheS5zb3J0KChhLCBiKSA9PiB7XHJcbiAgICAgICAgICAgIC8vIOS7juWQjeensOS4reaPkOWPluaVsOWtl+mDqOWIhlxyXG4gICAgICAgICAgICBjb25zdCBudW1iZXJBID0gcGFyc2VJbnQoYS5uYW1lLm1hdGNoKC9cXGQrLyk/LlswXSB8fCAnMCcsIDEwKTtcclxuICAgICAgICAgICAgY29uc3QgbnVtYmVyQiA9IHBhcnNlSW50KGIubmFtZS5tYXRjaCgvXFxkKy8pPy5bMF0gfHwgJzAnLCAxMCk7XHJcbiAgICAgICAgICAgIHJldHVybiBudW1iZXJBIC0gbnVtYmVyQjtcclxuICAgICAgICB9KTtcclxuICAgIH1cclxuXHJcbiAgICBzdGFydCgpIHtcclxuXHJcbiAgICB9XHJcblxyXG4gICAgc3RhcnRHYW1lKCkge1xyXG4gICAgICAgIGNjLmRpcmVjdG9yLmxvYWRTY2VuZShcIkhvbWVTY2VuZVwiLCAoZXJyKSA9PiB7XHJcbiAgICAgICAgICAgIGlmIChlcnIpIHtcclxuICAgICAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoJ+WKoOi9vSBIb21lU2NlbmUg5Zy65pmv5aSx6LSlOicsIGVycik7XHJcbiAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAvLyBjb25zb2xlLmxvZygn5oiQ5Yqf5YiH5o2i5YiwIEhvbWVTY2VuZSDlnLrmma8nKTtcclxuICAgICAgICAgICAgICAgIGNjLmRpcmVjdG9yLmxvYWRTY2VuZShcIkhvbWVTY2VuZVwiKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH0pO1xyXG5cclxuICAgIH1cclxuXHJcbiAgICByZXR1cm5Ib21lKCkge1xyXG4gICAgICAgIGlmICh0aGlzLm5vZGUuZ2V0Q2hpbGRCeU5hbWUoXCJQYXVzZVwiKS5nZXRDaGlsZEJ5TmFtZShcImJ0blwiKS5nZXRDb21wb25lbnQoXCJidG5Db250cm9sXCIpLl90b3VjaCkge1xyXG4gICAgICAgICAgICBpZiAoTWFwQ29ucm9sZXIuX2luc3RhbmNlLmdhbWVTdGFydCA9PSB0cnVlKSB7XHJcbiAgICAgICAgICAgICAgICBNaW5pR2FtZVNkay5BUEkuc2hvd1RvYXN0KFwi5L2T5Yqb5YC85YeP5bCRXCIpO1xyXG4gICAgICAgICAgICAgICAgY2MuZnguR2FtZVRvb2wuc2V0VXNlckhlYWx0aCgtMSwgKGRhdGEpID0+IHtcclxuICAgICAgICAgICAgICAgIH0pXHJcbjw8PDw8PDwgSEVBRFxyXG4gICAgICAgICAgICAgICAgaWYoTWFwQ29ucm9sZXIuX2luc3RhbmNlLmNvdW50X1RpbWUpe1xyXG4gICAgICAgICAgICAgICAgICAgIGxldCBjb3VudF9UaW1lID0gTWFwQ29ucm9sZXIuX2luc3RhbmNlLmNvdW50X1RpbWU7XHJcbiAgICAgICAgICAgICAgICAgICAgbGV0IGFkZF9UaW1lID0gTWFwQ29ucm9sZXIuX2luc3RhbmNlLmFkZF9UaW1lO1xyXG4gICAgICAgICAgICAgICAgICAgIGxldCBkYXRhID0ge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB0aW1lOmNvdW50X1RpbWUsICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGFkZF9UaW1lOmFkZF9UaW1lLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICByZXN1bHQ6XCJnaXZlX3VwXCJcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgY2MuZnguR2FtZVRvb2wuc2h1c2h1X1RyYWNrKFwiZmluaXNoX3N0YWdlXCIsZGF0YSk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbj09PT09PT1cclxuICAgICAgICAgICAgICAgIGxldCBkYXRhID0ge1xyXG4gICAgICAgICAgICAgICAgICAgIHRpbWU6IE1hcENvbnJvbGVyLl9pbnN0YW5jZS5jb3VudF9UaW1lLFxyXG4gICAgICAgICAgICAgICAgICAgIGFkZF9UaW1lOiBNYXBDb25yb2xlci5faW5zdGFuY2UuYWRkX1RpbWUsXHJcbiAgICAgICAgICAgICAgICAgICAgcmVzdWx0OiBcImdpdmVfdXBcIlxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgY2MuZnguR2FtZVRvb2wuc2h1c2h1X1RyYWNrKFwiZmluaXNoX3N0YWdlXCIsIGRhdGEpO1xyXG4+Pj4+Pj4+IDBhMzFhN2E1YWJjMmM1MDViZjc0M2FhNTk2ZTFjNzY1YTA0MDUxNTJcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB0aGlzLm5vZGUuZ2V0Q2hpbGRCeU5hbWUoXCJQYXVzZVwiKS5nZXRDaGlsZEJ5TmFtZShcImJ0blwiKS5nZXRDb21wb25lbnQoXCJidG5Db250cm9sXCIpLnNldFRvdWNoKGZhbHNlKTtcclxuICAgICAgICAgICAgY2MuZnguQXVkaW9NYW5hZ2VyLl9pbnN0YW5jZS5wbGF5RWZmZWN0KFwiemh1YW4xXCIsIG51bGwpO1xyXG4gICAgICAgICAgICB0aGlzLm5vZGUuZ2V0Q2hpbGRCeU5hbWUoXCJ6aHVhbmNoYW5nXCIpLmFjdGl2ZSA9IHRydWU7XHJcbiAgICAgICAgICAgIHRoaXMubm9kZS5nZXRDaGlsZEJ5TmFtZShcInpodWFuY2hhbmdcIikuZ2V0Q29tcG9uZW50KHNwLlNrZWxldG9uKS5zZXRBbmltYXRpb24oMSwgXCJ1cFwiLCBmYWxzZSk7XHJcbiAgICAgICAgICAgIGNjLmRpcmVjdG9yLnByZWxvYWRTY2VuZShcIkhvbWVTY2VuZVwiLCAoZXJyLCBhc3NldCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgaWYgKGVycikge1xyXG4gICAgICAgICAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoJ+WKqOaAgeWKoOi9vSBQcmVmYWIg5aSx6LSlOicsIGVycik7XHJcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgY2MuZGlyZWN0b3IubG9hZFNjZW5lKFwiSG9tZVNjZW5lXCIpO1xyXG4gICAgICAgICAgICB9LCAxMjAwKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG5cclxuICAgIGRlc3Ryb3lOb2Rlc0luRnJhbWVzKG5vZGVzOiBjYy5Ob2RlW10sIGNhbGxiYWNrOiAoKSA9PiB2b2lkKSB7XHJcbiAgICAgICAgY29uc3QgQkFUQ0hfU0laRSA9IDEwOyAvLyDmr4/luKfplIDmr4HnmoToioLngrnmlbDph49cclxuICAgICAgICBsZXQgaW5kZXggPSAwO1xyXG5cclxuICAgICAgICBjb25zdCBkZXN0cm95QmF0Y2ggPSAoKSA9PiB7XHJcbiAgICAgICAgICAgIGxldCBjb3VudCA9IDA7XHJcbiAgICAgICAgICAgIHdoaWxlIChpbmRleCA8IG5vZGVzLmxlbmd0aCAmJiBjb3VudCA8IEJBVENIX1NJWkUpIHtcclxuICAgICAgICAgICAgICAgIGNvbnN0IG5vZGUgPSBub2Rlc1tpbmRleF07XHJcbiAgICAgICAgICAgICAgICBpZiAobm9kZSkge1xyXG5cclxuICAgICAgICAgICAgICAgICAgICBub2RlLmFjdGl2ZSA9IGZhbHNlO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgaW5kZXgrKztcclxuICAgICAgICAgICAgICAgIGNvdW50Kys7XHJcbiAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgIGlmIChpbmRleCA8IG5vZGVzLmxlbmd0aCkge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5zY2hlZHVsZU9uY2UoZGVzdHJveUJhdGNoLCA2KTtcclxuICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgIGNhbGxiYWNrKCk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9O1xyXG5cclxuICAgICAgICBkZXN0cm95QmF0Y2goKTtcclxuICAgIH1cclxuXHJcbiAgICAvLyDmlLnov5vlkI7nmoTliIfmjaLlnLrmma/mlrnms5VcclxuICAgIHN3aXRjaFRvRW1wdHlTY2VuZSgpIHtcclxuICAgICAgICBjb25zdCBhbGxOb2RlcyA9IGNjLmRpcmVjdG9yLmdldFNjZW5lKCkuY2hpbGRyZW47XHJcbiAgICAgICAgdGhpcy5kZXN0cm95Tm9kZXNJbkZyYW1lcyhhbGxOb2RlcywgKCkgPT4ge1xyXG4gICAgICAgICAgICBjYy5kaXJlY3Rvci5sb2FkU2NlbmUoXCJIb21lU2NlbmVcIik7XHJcbiAgICAgICAgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgb3BlblBhdXNlKCkge1xyXG4gICAgICAgIGNjLmZ4LkF1ZGlvTWFuYWdlci5faW5zdGFuY2UucGxheUVmZmVjdChcImFubml1X2xpdHRsZVwiLCBudWxsKTtcclxuICAgICAgICBpZiAodGhpcy5wYXVzZS5nZXRDb21wb25lbnQoXCJidG5Db250cm9sXCIpLl90b3VjaCkge1xyXG4gICAgICAgICAgICB0aGlzLnBhdXNlLmdldENvbXBvbmVudChcImJ0bkNvbnRyb2xcIikuc2V0VG91Y2goZmFsc2UpO1xyXG4gICAgICAgICAgICB0aGlzLm5vZGUuZ2V0Q2hpbGRCeU5hbWUoXCJQYXVzZVwiKS5hY3RpdmUgPSB0cnVlO1xyXG4gICAgICAgICAgICBNYXBDb25yb2xlci5faW5zdGFuY2UucGF1c2UgPSB0cnVlO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICB9XHJcblxyXG4gICAgY2xvc2VQYXVzZSgpIHtcclxuICAgICAgICBjYy5meC5BdWRpb01hbmFnZXIuX2luc3RhbmNlLnBsYXlFZmZlY3QoXCJhbm5pdV9saXR0bGVcIiwgbnVsbCk7XHJcbiAgICAgICAgdGhpcy5wYXVzZS5nZXRDb21wb25lbnQoXCJidG5Db250cm9sXCIpLnNldFRvdWNoKHRydWUpO1xyXG4gICAgICAgIHRoaXMubm9kZS5nZXRDaGlsZEJ5TmFtZShcIlBhdXNlXCIpLmFjdGl2ZSA9IGZhbHNlO1xyXG4gICAgICAgIGlmIChNYXBDb25yb2xlci5faW5zdGFuY2Uubm9kZS5wYXJlbnQuZ2V0Q2hpbGRCeU5hbWUoXCJJY2VcIikuYWN0aXZlID09IGZhbHNlKSB7XHJcbiAgICAgICAgICAgIE1hcENvbnJvbGVyLl9pbnN0YW5jZS5wYXVzZSA9IGZhbHNlO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBvcGVuUHJvcEJ1eShuYW1lKSB7XHJcbiAgICAgICAgTWFwQ29ucm9sZXIuX2luc3RhbmNlLnBhdXNlID0gdHJ1ZTtcclxuICAgICAgICB0aGlzLmJ0bk5hbWUgPSBuYW1lO1xyXG4gICAgICAgIGxldCBwcm9wV2luZG93ID0gdGhpcy5ub2RlLmdldENoaWxkQnlOYW1lKFwiR2FtZVwiKS5nZXRDaGlsZEJ5TmFtZShcInByb3BXaW5kb3dcIik7XHJcbiAgICAgICAgcHJvcFdpbmRvdy5hY3RpdmUgPSB0cnVlO1xyXG4gICAgICAgIHByb3BXaW5kb3cuZ2V0Q2hpbGRCeU5hbWUoXCJmcmVlemVcIikuYWN0aXZlID0gZmFsc2U7XHJcbiAgICAgICAgcHJvcFdpbmRvdy5nZXRDaGlsZEJ5TmFtZShcImhhbW1lclwiKS5hY3RpdmUgPSBmYWxzZTtcclxuICAgICAgICBwcm9wV2luZG93LmdldENoaWxkQnlOYW1lKFwibWFnaWNcIikuYWN0aXZlID0gZmFsc2U7XHJcbiAgICAgICAgcHJvcFdpbmRvdy5nZXRDaGlsZEJ5TmFtZShcImJ1eV9CdG5cIikuZ2V0Q29tcG9uZW50KFwiYnRuQ29udHJvbFwiKS5zZXRUb3VjaCh0cnVlKTtcclxuICAgICAgICBwcm9wV2luZG93LmdldENoaWxkQnlOYW1lKG5hbWUpLmFjdGl2ZSA9IHRydWU7XHJcbiAgICB9XHJcblxyXG4gICAgY2xpY2tCdG4oKSB7XHJcbiAgICAgICAgY2MuZnguQXVkaW9NYW5hZ2VyLl9pbnN0YW5jZS5wbGF5RWZmZWN0KFwiYW5uaXVfQmlnXCIsIG51bGwpO1xyXG4gICAgICAgIGxldCBwcm9wV2luZG93ID0gdGhpcy5ub2RlLmdldENoaWxkQnlOYW1lKFwiR2FtZVwiKS5nZXRDaGlsZEJ5TmFtZShcInByb3BXaW5kb3dcIik7XHJcbiAgICAgICAgaWYgKHByb3BXaW5kb3cuZ2V0Q2hpbGRCeU5hbWUoXCJidXlfQnRuXCIpLmdldENvbXBvbmVudChcImJ0bkNvbnRyb2xcIikuX3RvdWNoKSB7XHJcbiAgICAgICAgICAgIHByb3BXaW5kb3cuZ2V0Q2hpbGRCeU5hbWUoXCJidXlfQnRuXCIpLmdldENvbXBvbmVudChcImJ0bkNvbnRyb2xcIikuc2V0VG91Y2goZmFsc2UpO1xyXG4gICAgICAgICAgICBpZiAodGhpcy5idG5OYW1lID09IFwiZnJlZXplXCIpXHJcbiAgICAgICAgICAgICAgICBNYXBDb25yb2xlci5faW5zdGFuY2UuYnV5RnJlZXplKCk7XHJcbiAgICAgICAgICAgIGVsc2UgaWYgKHRoaXMuYnRuTmFtZSA9PSBcImhhbW1lclwiKVxyXG4gICAgICAgICAgICAgICAgTWFwQ29ucm9sZXIuX2luc3RhbmNlLmJ1eUhhbW1lcigpO1xyXG4gICAgICAgICAgICBlbHNlIGlmICh0aGlzLmJ0bk5hbWUgPT0gXCJtYWdpY1wiKVxyXG4gICAgICAgICAgICAgICAgTWFwQ29ucm9sZXIuX2luc3RhbmNlLmJ1eU1hZ2ljKCk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG4gICAgLy/miZPlvIDllYblupdcclxuICAgIG9wZW5TaG9wKCkge1xyXG4gICAgICAgIC8vIOWKoOi9vSBzaG9wICBidW5kbGVcclxuICAgICAgICBjYy5hc3NldE1hbmFnZXIubG9hZEJ1bmRsZSgnc2hvcCcsIChlcnI6IEVycm9yLCBidW5kbGU6IGNjLkFzc2V0TWFuYWdlci5CdW5kbGUpID0+IHtcclxuICAgICAgICAgICAgYnVuZGxlLmxvYWQoJ3ByZWZhYi9zaG9wJywgY2MuUHJlZmFiLCAoZXJyOiBFcnJvciwgcHJlZmFiOiBjYy5QcmVmYWIpID0+IHtcclxuICAgICAgICAgICAgICAgIGlmIChlcnIpIHtcclxuICAgICAgICAgICAgICAgICAgICBjYy5lcnJvcihlcnIubWVzc2FnZSB8fCBlcnIpO1xyXG4gICAgICAgICAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIGlmIChwcmVmYWIpIHtcclxuICAgICAgICAgICAgICAgICAgICBjb25zdCBzaG9wTm9kZSA9IGNjLmluc3RhbnRpYXRlKHByZWZhYik7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5ub2RlLmFkZENoaWxkKHNob3BOb2RlKTtcclxuICAgICAgICAgICAgICAgICAgICBjb25zb2xlLmxvZyhcInNob3BOb2RlIHBhcmVudDpcIiwgc2hvcE5vZGUucGFyZW50KTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgfSk7XHJcbiAgICB9XHJcblxyXG5cclxuICAgIGNsb3NlUHJvcEJ1eSgpIHtcclxuICAgICAgICBNYXBDb25yb2xlci5faW5zdGFuY2UucGF1c2UgPSBmYWxzZTtcclxuICAgICAgICBsZXQgZnJlZXplQnRuID0gTWFwQ29ucm9sZXIuX2luc3RhbmNlLm5vZGUucGFyZW50LmdldENoaWxkQnlOYW1lKFwiQm90dG9tXCIpLmdldENoaWxkQnlOYW1lKFwidGltZUJ0blwiKTtcclxuICAgICAgICBsZXQgaGFtbWVyQnRuID0gTWFwQ29ucm9sZXIuX2luc3RhbmNlLm5vZGUucGFyZW50LmdldENoaWxkQnlOYW1lKFwiQm90dG9tXCIpLmdldENoaWxkQnlOYW1lKFwiZGVzdHJveUJ0blwiKTtcclxuICAgICAgICBsZXQgbWFnaWNCdG4gPSBNYXBDb25yb2xlci5faW5zdGFuY2Uubm9kZS5wYXJlbnQuZ2V0Q2hpbGRCeU5hbWUoXCJCb3R0b21cIikuZ2V0Q2hpbGRCeU5hbWUoXCJtYWdpY0J0blwiKTtcclxuICAgICAgICBpZiAodGhpcy5idG5OYW1lID09IFwiZnJlZXplXCIpIGZyZWV6ZUJ0bi5nZXRDb21wb25lbnQoXCJidG5Db250cm9sXCIpLnNldFRvdWNoKHRydWUpO1xyXG4gICAgICAgIGVsc2UgaWYgKHRoaXMuYnRuTmFtZSA9PSBcImhhbW1lclwiKSBoYW1tZXJCdG4uZ2V0Q29tcG9uZW50KFwiYnRuQ29udHJvbFwiKS5zZXRUb3VjaCh0cnVlKTtcclxuICAgICAgICBlbHNlIGlmICh0aGlzLmJ0bk5hbWUgPT0gXCJtYWdpY1wiKSBtYWdpY0J0bi5nZXRDb21wb25lbnQoXCJidG5Db250cm9sXCIpLnNldFRvdWNoKHRydWUpO1xyXG5cclxuICAgICAgICB0aGlzLm5vZGUuZ2V0Q2hpbGRCeU5hbWUoXCJHYW1lXCIpLmdldENoaWxkQnlOYW1lKFwicHJvcFdpbmRvd1wiKS5hY3RpdmUgPSBmYWxzZTtcclxuICAgIH1cclxuXHJcbiAgICB1cGRhdGUoZHQpIHtcclxuXHJcbiAgICB9XHJcbn1cclxuIl19 \ No newline at end of file diff --git a/temp/quick-scripts/dst/assets/Script/module/Crypto/crypto-js.min.js b/temp/quick-scripts/dst/assets/Script/module/Crypto/crypto-js.min.js index afce80e..263c1b2 100644 --- a/temp/quick-scripts/dst/assets/Script/module/Crypto/crypto-js.min.js +++ b/temp/quick-scripts/dst/assets/Script/module/Crypto/crypto-js.min.js @@ -9,2067 +9,2067 @@ 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, 'e64e1qXyT9CV6s0gDQdj/ed', 'crypto-js.min'); -// Script/module/Crypto/crypto-js.min.js - -"use strict"; - -!function (t, r) { - "object" == typeof exports ? module.exports = exports = r() : "function" == typeof define && define.amd ? define([], r) : t.CryptoJS = r(); -}(void 0, function () { - var t = t || function (t, r) { - var e = Object.create || function () { - function t() {} - return function (r) { - var e; - return t.prototype = r, e = new t(), t.prototype = null, e; - }; - }(), - i = {}, - n = i.lib = {}, - o = n.Base = function () { - return { - extend: function extend(t) { - var r = e(this); - return t && r.mixIn(t), r.hasOwnProperty("init") && this.init !== r.init || (r.init = function () { - r.$super.init.apply(this, arguments); - }), r.init.prototype = r, r.$super = this, r; - }, - create: function create() { - var t = this.extend(); - return t.init.apply(t, arguments), t; - }, - init: function init() {}, - mixIn: function mixIn(t) { - for (var r in t) t.hasOwnProperty(r) && (this[r] = t[r]); - t.hasOwnProperty("toString") && (this.toString = t.toString); - }, - clone: function clone() { - return this.init.prototype.extend(this); - } - }; - }(), - s = n.WordArray = o.extend({ - init: function init(t, e) { - t = this.words = t || [], e != r ? this.sigBytes = e : this.sigBytes = 4 * t.length; - }, - toString: function toString(t) { - return (t || c).stringify(this); - }, - concat: function concat(t) { - var r = this.words, - e = t.words, - i = this.sigBytes, - n = t.sigBytes; - if (this.clamp(), i % 4) for (var o = 0; o < n; o++) { - var s = e[o >>> 2] >>> 24 - o % 4 * 8 & 255; - r[i + o >>> 2] |= s << 24 - (i + o) % 4 * 8; - } else for (var o = 0; o < n; o += 4) r[i + o >>> 2] = e[o >>> 2]; - return this.sigBytes += n, this; - }, - clamp: function clamp() { - var r = this.words, - e = this.sigBytes; - r[e >>> 2] &= 4294967295 << 32 - e % 4 * 8, r.length = t.ceil(e / 4); - }, - clone: function clone() { - var t = o.clone.call(this); - return t.words = this.words.slice(0), t; - }, - random: function random(r) { - for (var e, i = [], n = function n(r) { - var r = r, - e = 987654321, - i = 4294967295; - return function () { - e = 36969 * (65535 & e) + (e >> 16) & i, r = 18e3 * (65535 & r) + (r >> 16) & i; - var n = (e << 16) + r & i; - return n /= 4294967296, n += .5, n * (t.random() > .5 ? 1 : -1); - }; - }, o = 0; o < r; o += 4) { - var a = n(4294967296 * (e || t.random())); - e = 987654071 * a(), i.push(4294967296 * a() | 0); - } - return new s.init(i, r); - } - }), - a = i.enc = {}, - c = a.Hex = { - stringify: function stringify(t) { - for (var r = t.words, e = t.sigBytes, i = [], n = 0; n < e; n++) { - var o = r[n >>> 2] >>> 24 - n % 4 * 8 & 255; - i.push((o >>> 4).toString(16)), i.push((15 & o).toString(16)); - } - return i.join(""); - }, - parse: function parse(t) { - for (var r = t.length, e = [], i = 0; i < r; i += 2) e[i >>> 3] |= parseInt(t.substr(i, 2), 16) << 24 - i % 8 * 4; - return new s.init(e, r / 2); - } - }, - h = a.Latin1 = { - stringify: function stringify(t) { - for (var r = t.words, e = t.sigBytes, i = [], n = 0; n < e; n++) { - var o = r[n >>> 2] >>> 24 - n % 4 * 8 & 255; - i.push(String.fromCharCode(o)); - } - return i.join(""); - }, - parse: function parse(t) { - for (var r = t.length, e = [], i = 0; i < r; i++) e[i >>> 2] |= (255 & t.charCodeAt(i)) << 24 - i % 4 * 8; - return new s.init(e, r); - } - }, - l = a.Utf8 = { - stringify: function stringify(t) { - try { - return decodeURIComponent(escape(h.stringify(t))); - } catch (t) { - throw new Error("Malformed UTF-8 data"); - } - }, - parse: function parse(t) { - return h.parse(unescape(encodeURIComponent(t))); - } - }, - f = n.BufferedBlockAlgorithm = o.extend({ - reset: function reset() { - this._data = new s.init(), this._nDataBytes = 0; - }, - _append: function _append(t) { - "string" == typeof t && (t = l.parse(t)), this._data.concat(t), this._nDataBytes += t.sigBytes; - }, - _process: function _process(r) { - var e = this._data, - i = e.words, - n = e.sigBytes, - o = this.blockSize, - a = 4 * o, - c = n / a; - c = r ? t.ceil(c) : t.max((0 | c) - this._minBufferSize, 0); - var h = c * o, - l = t.min(4 * h, n); - if (h) { - for (var f = 0; f < h; f += o) this._doProcessBlock(i, f); - var u = i.splice(0, h); - e.sigBytes -= l; - } - return new s.init(u, l); - }, - clone: function clone() { - var t = o.clone.call(this); - return t._data = this._data.clone(), t; - }, - _minBufferSize: 0 - }), - u = (n.Hasher = f.extend({ - cfg: o.extend(), - init: function init(t) { - this.cfg = this.cfg.extend(t), this.reset(); - }, - reset: function reset() { - f.reset.call(this), this._doReset(); - }, - update: function update(t) { - return this._append(t), this._process(), this; - }, - finalize: function finalize(t) { - t && this._append(t); - var r = this._doFinalize(); - return r; - }, - blockSize: 16, - _createHelper: function _createHelper(t) { - return function (r, e) { - return new t.init(e).finalize(r); - }; - }, - _createHmacHelper: function _createHmacHelper(t) { - return function (r, e) { - return new u.HMAC.init(t, e).finalize(r); - }; - } - }), i.algo = {}); - return i; - }(Math); - return function () { - function r(t, r, e) { - for (var i = [], o = 0, s = 0; s < r; s++) if (s % 4) { - var a = e[t.charCodeAt(s - 1)] << s % 4 * 2, - c = e[t.charCodeAt(s)] >>> 6 - s % 4 * 2; - i[o >>> 2] |= (a | c) << 24 - o % 4 * 8, o++; - } - return n.create(i, o); - } - var e = t, - i = e.lib, - n = i.WordArray, - o = e.enc; - o.Base64 = { - stringify: function stringify(t) { - var r = t.words, - e = t.sigBytes, - i = this._map; - t.clamp(); - for (var n = [], o = 0; o < e; o += 3) for (var s = r[o >>> 2] >>> 24 - o % 4 * 8 & 255, a = r[o + 1 >>> 2] >>> 24 - (o + 1) % 4 * 8 & 255, c = r[o + 2 >>> 2] >>> 24 - (o + 2) % 4 * 8 & 255, h = s << 16 | a << 8 | c, l = 0; l < 4 && o + .75 * l < e; l++) n.push(i.charAt(h >>> 6 * (3 - l) & 63)); - var f = i.charAt(64); - if (f) for (; n.length % 4;) n.push(f); - return n.join(""); - }, - parse: function parse(t) { - var e = t.length, - i = this._map, - n = this._reverseMap; - if (!n) { - n = this._reverseMap = []; - for (var o = 0; o < i.length; o++) n[i.charCodeAt(o)] = o; - } - var s = i.charAt(64); - if (s) { - var a = t.indexOf(s); - a !== -1 && (e = a); - } - return r(t, e, n); - }, - _map: "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=" - }; - }(), function (r) { - function e(t, r, e, i, n, o, s) { - var a = t + (r & e | ~r & i) + n + s; - return (a << o | a >>> 32 - o) + r; - } - function i(t, r, e, i, n, o, s) { - var a = t + (r & i | e & ~i) + n + s; - return (a << o | a >>> 32 - o) + r; - } - function n(t, r, e, i, n, o, s) { - var a = t + (r ^ e ^ i) + n + s; - return (a << o | a >>> 32 - o) + r; - } - function o(t, r, e, i, n, o, s) { - var a = t + (e ^ (r | ~i)) + n + s; - return (a << o | a >>> 32 - o) + r; - } - var s = t, - a = s.lib, - c = a.WordArray, - h = a.Hasher, - l = s.algo, - f = []; - !function () { - for (var t = 0; t < 64; t++) f[t] = 4294967296 * r.abs(r.sin(t + 1)) | 0; - }(); - var u = l.MD5 = h.extend({ - _doReset: function _doReset() { - this._hash = new c.init([1732584193, 4023233417, 2562383102, 271733878]); - }, - _doProcessBlock: function _doProcessBlock(t, r) { - for (var s = 0; s < 16; s++) { - var a = r + s, - c = t[a]; - t[a] = 16711935 & (c << 8 | c >>> 24) | 4278255360 & (c << 24 | c >>> 8); - } - var h = this._hash.words, - l = t[r + 0], - u = t[r + 1], - d = t[r + 2], - v = t[r + 3], - p = t[r + 4], - _ = t[r + 5], - y = t[r + 6], - g = t[r + 7], - B = t[r + 8], - w = t[r + 9], - k = t[r + 10], - S = t[r + 11], - m = t[r + 12], - x = t[r + 13], - b = t[r + 14], - H = t[r + 15], - z = h[0], - A = h[1], - C = h[2], - D = h[3]; - z = e(z, A, C, D, l, 7, f[0]), D = e(D, z, A, C, u, 12, f[1]), C = e(C, D, z, A, d, 17, f[2]), A = e(A, C, D, z, v, 22, f[3]), z = e(z, A, C, D, p, 7, f[4]), D = e(D, z, A, C, _, 12, f[5]), C = e(C, D, z, A, y, 17, f[6]), A = e(A, C, D, z, g, 22, f[7]), z = e(z, A, C, D, B, 7, f[8]), D = e(D, z, A, C, w, 12, f[9]), C = e(C, D, z, A, k, 17, f[10]), A = e(A, C, D, z, S, 22, f[11]), z = e(z, A, C, D, m, 7, f[12]), D = e(D, z, A, C, x, 12, f[13]), C = e(C, D, z, A, b, 17, f[14]), A = e(A, C, D, z, H, 22, f[15]), z = i(z, A, C, D, u, 5, f[16]), D = i(D, z, A, C, y, 9, f[17]), C = i(C, D, z, A, S, 14, f[18]), A = i(A, C, D, z, l, 20, f[19]), z = i(z, A, C, D, _, 5, f[20]), D = i(D, z, A, C, k, 9, f[21]), C = i(C, D, z, A, H, 14, f[22]), A = i(A, C, D, z, p, 20, f[23]), z = i(z, A, C, D, w, 5, f[24]), D = i(D, z, A, C, b, 9, f[25]), C = i(C, D, z, A, v, 14, f[26]), A = i(A, C, D, z, B, 20, f[27]), z = i(z, A, C, D, x, 5, f[28]), D = i(D, z, A, C, d, 9, f[29]), C = i(C, D, z, A, g, 14, f[30]), A = i(A, C, D, z, m, 20, f[31]), z = n(z, A, C, D, _, 4, f[32]), D = n(D, z, A, C, B, 11, f[33]), C = n(C, D, z, A, S, 16, f[34]), A = n(A, C, D, z, b, 23, f[35]), z = n(z, A, C, D, u, 4, f[36]), D = n(D, z, A, C, p, 11, f[37]), C = n(C, D, z, A, g, 16, f[38]), A = n(A, C, D, z, k, 23, f[39]), z = n(z, A, C, D, x, 4, f[40]), D = n(D, z, A, C, l, 11, f[41]), C = n(C, D, z, A, v, 16, f[42]), A = n(A, C, D, z, y, 23, f[43]), z = n(z, A, C, D, w, 4, f[44]), D = n(D, z, A, C, m, 11, f[45]), C = n(C, D, z, A, H, 16, f[46]), A = n(A, C, D, z, d, 23, f[47]), z = o(z, A, C, D, l, 6, f[48]), D = o(D, z, A, C, g, 10, f[49]), C = o(C, D, z, A, b, 15, f[50]), A = o(A, C, D, z, _, 21, f[51]), z = o(z, A, C, D, m, 6, f[52]), D = o(D, z, A, C, v, 10, f[53]), C = o(C, D, z, A, k, 15, f[54]), A = o(A, C, D, z, u, 21, f[55]), z = o(z, A, C, D, B, 6, f[56]), D = o(D, z, A, C, H, 10, f[57]), C = o(C, D, z, A, y, 15, f[58]), A = o(A, C, D, z, x, 21, f[59]), z = o(z, A, C, D, p, 6, f[60]), D = o(D, z, A, C, S, 10, f[61]), C = o(C, D, z, A, d, 15, f[62]), A = o(A, C, D, z, w, 21, f[63]), h[0] = h[0] + z | 0, h[1] = h[1] + A | 0, h[2] = h[2] + C | 0, h[3] = h[3] + D | 0; - }, - _doFinalize: function _doFinalize() { - var t = this._data, - e = t.words, - i = 8 * this._nDataBytes, - n = 8 * t.sigBytes; - e[n >>> 5] |= 128 << 24 - n % 32; - var o = r.floor(i / 4294967296), - s = i; - e[(n + 64 >>> 9 << 4) + 15] = 16711935 & (o << 8 | o >>> 24) | 4278255360 & (o << 24 | o >>> 8), e[(n + 64 >>> 9 << 4) + 14] = 16711935 & (s << 8 | s >>> 24) | 4278255360 & (s << 24 | s >>> 8), t.sigBytes = 4 * (e.length + 1), this._process(); - for (var a = this._hash, c = a.words, h = 0; h < 4; h++) { - var l = c[h]; - c[h] = 16711935 & (l << 8 | l >>> 24) | 4278255360 & (l << 24 | l >>> 8); - } - return a; - }, - clone: function clone() { - var t = h.clone.call(this); - return t._hash = this._hash.clone(), t; - } - }); - s.MD5 = h._createHelper(u), s.HmacMD5 = h._createHmacHelper(u); - }(Math), function () { - var r = t, - e = r.lib, - i = e.WordArray, - n = e.Hasher, - o = r.algo, - s = [], - a = o.SHA1 = n.extend({ - _doReset: function _doReset() { - this._hash = new i.init([1732584193, 4023233417, 2562383102, 271733878, 3285377520]); - }, - _doProcessBlock: function _doProcessBlock(t, r) { - for (var e = this._hash.words, i = e[0], n = e[1], o = e[2], a = e[3], c = e[4], h = 0; h < 80; h++) { - if (h < 16) s[h] = 0 | t[r + h];else { - var l = s[h - 3] ^ s[h - 8] ^ s[h - 14] ^ s[h - 16]; - s[h] = l << 1 | l >>> 31; - } - var f = (i << 5 | i >>> 27) + c + s[h]; - f += h < 20 ? (n & o | ~n & a) + 1518500249 : h < 40 ? (n ^ o ^ a) + 1859775393 : h < 60 ? (n & o | n & a | o & a) - 1894007588 : (n ^ o ^ a) - 899497514, c = a, a = o, o = n << 30 | n >>> 2, n = i, i = f; - } - e[0] = e[0] + i | 0, e[1] = e[1] + n | 0, e[2] = e[2] + o | 0, e[3] = e[3] + a | 0, e[4] = e[4] + c | 0; - }, - _doFinalize: function _doFinalize() { - var t = this._data, - r = t.words, - e = 8 * this._nDataBytes, - i = 8 * t.sigBytes; - return r[i >>> 5] |= 128 << 24 - i % 32, r[(i + 64 >>> 9 << 4) + 14] = Math.floor(e / 4294967296), r[(i + 64 >>> 9 << 4) + 15] = e, t.sigBytes = 4 * r.length, this._process(), this._hash; - }, - clone: function clone() { - var t = n.clone.call(this); - return t._hash = this._hash.clone(), t; - } - }); - r.SHA1 = n._createHelper(a), r.HmacSHA1 = n._createHmacHelper(a); - }(), function (r) { - var e = t, - i = e.lib, - n = i.WordArray, - o = i.Hasher, - s = e.algo, - a = [], - c = []; - !function () { - function t(t) { - for (var e = r.sqrt(t), i = 2; i <= e; i++) if (!(t % i)) return !1; - return !0; - } - function e(t) { - return 4294967296 * (t - (0 | t)) | 0; - } - for (var i = 2, n = 0; n < 64;) t(i) && (n < 8 && (a[n] = e(r.pow(i, .5))), c[n] = e(r.pow(i, 1 / 3)), n++), i++; - }(); - var h = [], - l = s.SHA256 = o.extend({ - _doReset: function _doReset() { - this._hash = new n.init(a.slice(0)); - }, - _doProcessBlock: function _doProcessBlock(t, r) { - for (var e = this._hash.words, i = e[0], n = e[1], o = e[2], s = e[3], a = e[4], l = e[5], f = e[6], u = e[7], d = 0; d < 64; d++) { - if (d < 16) h[d] = 0 | t[r + d];else { - var v = h[d - 15], - p = (v << 25 | v >>> 7) ^ (v << 14 | v >>> 18) ^ v >>> 3, - _ = h[d - 2], - y = (_ << 15 | _ >>> 17) ^ (_ << 13 | _ >>> 19) ^ _ >>> 10; - h[d] = p + h[d - 7] + y + h[d - 16]; - } - var g = a & l ^ ~a & f, - B = i & n ^ i & o ^ n & o, - w = (i << 30 | i >>> 2) ^ (i << 19 | i >>> 13) ^ (i << 10 | i >>> 22), - k = (a << 26 | a >>> 6) ^ (a << 21 | a >>> 11) ^ (a << 7 | a >>> 25), - S = u + k + g + c[d] + h[d], - m = w + B; - u = f, f = l, l = a, a = s + S | 0, s = o, o = n, n = i, i = S + m | 0; - } - e[0] = e[0] + i | 0, e[1] = e[1] + n | 0, e[2] = e[2] + o | 0, e[3] = e[3] + s | 0, e[4] = e[4] + a | 0, e[5] = e[5] + l | 0, e[6] = e[6] + f | 0, e[7] = e[7] + u | 0; - }, - _doFinalize: function _doFinalize() { - var t = this._data, - e = t.words, - i = 8 * this._nDataBytes, - n = 8 * t.sigBytes; - return e[n >>> 5] |= 128 << 24 - n % 32, e[(n + 64 >>> 9 << 4) + 14] = r.floor(i / 4294967296), e[(n + 64 >>> 9 << 4) + 15] = i, t.sigBytes = 4 * e.length, this._process(), this._hash; - }, - clone: function clone() { - var t = o.clone.call(this); - return t._hash = this._hash.clone(), t; - } - }); - e.SHA256 = o._createHelper(l), e.HmacSHA256 = o._createHmacHelper(l); - }(Math), function () { - function r(t) { - return t << 8 & 4278255360 | t >>> 8 & 16711935; - } - var e = t, - i = e.lib, - n = i.WordArray, - o = e.enc; - o.Utf16 = o.Utf16BE = { - stringify: function stringify(t) { - for (var r = t.words, e = t.sigBytes, i = [], n = 0; n < e; n += 2) { - var o = r[n >>> 2] >>> 16 - n % 4 * 8 & 65535; - i.push(String.fromCharCode(o)); - } - return i.join(""); - }, - parse: function parse(t) { - for (var r = t.length, e = [], i = 0; i < r; i++) e[i >>> 1] |= t.charCodeAt(i) << 16 - i % 2 * 16; - return n.create(e, 2 * r); - } - }; - o.Utf16LE = { - stringify: function stringify(t) { - for (var e = t.words, i = t.sigBytes, n = [], o = 0; o < i; o += 2) { - var s = r(e[o >>> 2] >>> 16 - o % 4 * 8 & 65535); - n.push(String.fromCharCode(s)); - } - return n.join(""); - }, - parse: function parse(t) { - for (var e = t.length, i = [], o = 0; o < e; o++) i[o >>> 1] |= r(t.charCodeAt(o) << 16 - o % 2 * 16); - return n.create(i, 2 * e); - } - }; - }(), function () { - if ("function" == typeof ArrayBuffer) { - var r = t, - e = r.lib, - i = e.WordArray, - n = i.init, - o = i.init = function (t) { - if (t instanceof ArrayBuffer && (t = new Uint8Array(t)), (t instanceof Int8Array || "undefined" != typeof Uint8ClampedArray && t instanceof Uint8ClampedArray || t instanceof Int16Array || t instanceof Uint16Array || t instanceof Int32Array || t instanceof Uint32Array || t instanceof Float32Array || t instanceof Float64Array) && (t = new Uint8Array(t.buffer, t.byteOffset, t.byteLength)), t instanceof Uint8Array) { - for (var r = t.byteLength, e = [], i = 0; i < r; i++) e[i >>> 2] |= t[i] << 24 - i % 4 * 8; - n.call(this, e, r); - } else n.apply(this, arguments); - }; - o.prototype = i; - } - }(), function (r) { - function e(t, r, e) { - return t ^ r ^ e; - } - function i(t, r, e) { - return t & r | ~t & e; - } - function n(t, r, e) { - return (t | ~r) ^ e; - } - function o(t, r, e) { - return t & e | r & ~e; - } - function s(t, r, e) { - return t ^ (r | ~e); - } - function a(t, r) { - return t << r | t >>> 32 - r; - } - var c = t, - h = c.lib, - l = h.WordArray, - f = h.Hasher, - u = c.algo, - d = l.create([0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 7, 4, 13, 1, 10, 6, 15, 3, 12, 0, 9, 5, 2, 14, 11, 8, 3, 10, 14, 4, 9, 15, 8, 1, 2, 7, 0, 6, 13, 11, 5, 12, 1, 9, 11, 10, 0, 8, 12, 4, 13, 3, 7, 15, 14, 5, 6, 2, 4, 0, 5, 9, 7, 12, 2, 10, 14, 1, 3, 8, 11, 6, 15, 13]), - v = l.create([5, 14, 7, 0, 9, 2, 11, 4, 13, 6, 15, 8, 1, 10, 3, 12, 6, 11, 3, 7, 0, 13, 5, 10, 14, 15, 8, 12, 4, 9, 1, 2, 15, 5, 1, 3, 7, 14, 6, 9, 11, 8, 12, 2, 10, 0, 4, 13, 8, 6, 4, 1, 3, 11, 15, 0, 5, 12, 2, 13, 9, 7, 10, 14, 12, 15, 10, 4, 1, 5, 8, 7, 6, 2, 13, 14, 0, 3, 9, 11]), - p = l.create([11, 14, 15, 12, 5, 8, 7, 9, 11, 13, 14, 15, 6, 7, 9, 8, 7, 6, 8, 13, 11, 9, 7, 15, 7, 12, 15, 9, 11, 7, 13, 12, 11, 13, 6, 7, 14, 9, 13, 15, 14, 8, 13, 6, 5, 12, 7, 5, 11, 12, 14, 15, 14, 15, 9, 8, 9, 14, 5, 6, 8, 6, 5, 12, 9, 15, 5, 11, 6, 8, 13, 12, 5, 12, 13, 14, 11, 8, 5, 6]), - _ = l.create([8, 9, 9, 11, 13, 15, 15, 5, 7, 7, 8, 11, 14, 14, 12, 6, 9, 13, 15, 7, 12, 8, 9, 11, 7, 7, 12, 7, 6, 15, 13, 11, 9, 7, 15, 11, 8, 6, 6, 14, 12, 13, 5, 14, 13, 13, 7, 5, 15, 5, 8, 11, 14, 14, 6, 14, 6, 9, 12, 9, 12, 5, 15, 8, 8, 5, 12, 9, 12, 5, 14, 6, 8, 13, 6, 5, 15, 13, 11, 11]), - y = l.create([0, 1518500249, 1859775393, 2400959708, 2840853838]), - g = l.create([1352829926, 1548603684, 1836072691, 2053994217, 0]), - B = u.RIPEMD160 = f.extend({ - _doReset: function _doReset() { - this._hash = l.create([1732584193, 4023233417, 2562383102, 271733878, 3285377520]); - }, - _doProcessBlock: function _doProcessBlock(t, r) { - for (var c = 0; c < 16; c++) { - var h = r + c, - l = t[h]; - t[h] = 16711935 & (l << 8 | l >>> 24) | 4278255360 & (l << 24 | l >>> 8); - } - var f, - u, - B, - w, - k, - S, - m, - x, - b, - H, - z = this._hash.words, - A = y.words, - C = g.words, - D = d.words, - R = v.words, - E = p.words, - M = _.words; - S = f = z[0], m = u = z[1], x = B = z[2], b = w = z[3], H = k = z[4]; - for (var F, c = 0; c < 80; c += 1) F = f + t[r + D[c]] | 0, F += c < 16 ? e(u, B, w) + A[0] : c < 32 ? i(u, B, w) + A[1] : c < 48 ? n(u, B, w) + A[2] : c < 64 ? o(u, B, w) + A[3] : s(u, B, w) + A[4], F |= 0, F = a(F, E[c]), F = F + k | 0, f = k, k = w, w = a(B, 10), B = u, u = F, F = S + t[r + R[c]] | 0, F += c < 16 ? s(m, x, b) + C[0] : c < 32 ? o(m, x, b) + C[1] : c < 48 ? n(m, x, b) + C[2] : c < 64 ? i(m, x, b) + C[3] : e(m, x, b) + C[4], F |= 0, F = a(F, M[c]), F = F + H | 0, S = H, H = b, b = a(x, 10), x = m, m = F; - F = z[1] + B + b | 0, z[1] = z[2] + w + H | 0, z[2] = z[3] + k + S | 0, z[3] = z[4] + f + m | 0, z[4] = z[0] + u + x | 0, z[0] = F; - }, - _doFinalize: function _doFinalize() { - var t = this._data, - r = t.words, - e = 8 * this._nDataBytes, - i = 8 * t.sigBytes; - r[i >>> 5] |= 128 << 24 - i % 32, r[(i + 64 >>> 9 << 4) + 14] = 16711935 & (e << 8 | e >>> 24) | 4278255360 & (e << 24 | e >>> 8), t.sigBytes = 4 * (r.length + 1), this._process(); - for (var n = this._hash, o = n.words, s = 0; s < 5; s++) { - var a = o[s]; - o[s] = 16711935 & (a << 8 | a >>> 24) | 4278255360 & (a << 24 | a >>> 8); - } - return n; - }, - clone: function clone() { - var t = f.clone.call(this); - return t._hash = this._hash.clone(), t; - } - }); - c.RIPEMD160 = f._createHelper(B), c.HmacRIPEMD160 = f._createHmacHelper(B); - }(Math), function () { - var r = t, - e = r.lib, - i = e.Base, - n = r.enc, - o = n.Utf8, - s = r.algo; - s.HMAC = i.extend({ - init: function init(t, r) { - t = this._hasher = new t.init(), "string" == typeof r && (r = o.parse(r)); - var e = t.blockSize, - i = 4 * e; - r.sigBytes > i && (r = t.finalize(r)), r.clamp(); - for (var n = this._oKey = r.clone(), s = this._iKey = r.clone(), a = n.words, c = s.words, h = 0; h < e; h++) a[h] ^= 1549556828, c[h] ^= 909522486; - n.sigBytes = s.sigBytes = i, this.reset(); - }, - reset: function reset() { - var t = this._hasher; - t.reset(), t.update(this._iKey); - }, - update: function update(t) { - return this._hasher.update(t), this; - }, - finalize: function finalize(t) { - var r = this._hasher, - e = r.finalize(t); - r.reset(); - var i = r.finalize(this._oKey.clone().concat(e)); - return i; - } - }); - }(), function () { - var r = t, - e = r.lib, - i = e.Base, - n = e.WordArray, - o = r.algo, - s = o.SHA1, - a = o.HMAC, - c = o.PBKDF2 = i.extend({ - cfg: i.extend({ - keySize: 4, - hasher: s, - iterations: 1 - }), - init: function init(t) { - this.cfg = this.cfg.extend(t); - }, - compute: function compute(t, r) { - for (var e = this.cfg, i = a.create(e.hasher, t), o = n.create(), s = n.create([1]), c = o.words, h = s.words, l = e.keySize, f = e.iterations; c.length < l;) { - var u = i.update(r).finalize(s); - i.reset(); - for (var d = u.words, v = d.length, p = u, _ = 1; _ < f; _++) { - p = i.finalize(p), i.reset(); - for (var y = p.words, g = 0; g < v; g++) d[g] ^= y[g]; - } - o.concat(u), h[0]++; - } - return o.sigBytes = 4 * l, o; - } - }); - r.PBKDF2 = function (t, r, e) { - return c.create(e).compute(t, r); - }; - }(), function () { - var r = t, - e = r.lib, - i = e.Base, - n = e.WordArray, - o = r.algo, - s = o.MD5, - a = o.EvpKDF = i.extend({ - cfg: i.extend({ - keySize: 4, - hasher: s, - iterations: 1 - }), - init: function init(t) { - this.cfg = this.cfg.extend(t); - }, - compute: function compute(t, r) { - for (var e = this.cfg, i = e.hasher.create(), o = n.create(), s = o.words, a = e.keySize, c = e.iterations; s.length < a;) { - h && i.update(h); - var h = i.update(t).finalize(r); - i.reset(); - for (var l = 1; l < c; l++) h = i.finalize(h), i.reset(); - o.concat(h); - } - return o.sigBytes = 4 * a, o; - } - }); - r.EvpKDF = function (t, r, e) { - return a.create(e).compute(t, r); - }; - }(), function () { - var r = t, - e = r.lib, - i = e.WordArray, - n = r.algo, - o = n.SHA256, - s = n.SHA224 = o.extend({ - _doReset: function _doReset() { - this._hash = new i.init([3238371032, 914150663, 812702999, 4144912697, 4290775857, 1750603025, 1694076839, 3204075428]); - }, - _doFinalize: function _doFinalize() { - var t = o._doFinalize.call(this); - return t.sigBytes -= 4, t; - } - }); - r.SHA224 = o._createHelper(s), r.HmacSHA224 = o._createHmacHelper(s); - }(), function (r) { - var e = t, - i = e.lib, - n = i.Base, - o = i.WordArray, - s = e.x64 = {}; - s.Word = n.extend({ - init: function init(t, r) { - this.high = t, this.low = r; - } - }), s.WordArray = n.extend({ - init: function init(t, e) { - t = this.words = t || [], e != r ? this.sigBytes = e : this.sigBytes = 8 * t.length; - }, - toX32: function toX32() { - for (var t = this.words, r = t.length, e = [], i = 0; i < r; i++) { - var n = t[i]; - e.push(n.high), e.push(n.low); - } - return o.create(e, this.sigBytes); - }, - clone: function clone() { - for (var t = n.clone.call(this), r = t.words = this.words.slice(0), e = r.length, i = 0; i < e; i++) r[i] = r[i].clone(); - return t; - } - }); - }(), function (r) { - var e = t, - i = e.lib, - n = i.WordArray, - o = i.Hasher, - s = e.x64, - a = s.Word, - c = e.algo, - h = [], - l = [], - f = []; - !function () { - for (var t = 1, r = 0, e = 0; e < 24; e++) { - h[t + 5 * r] = (e + 1) * (e + 2) / 2 % 64; - var i = r % 5, - n = (2 * t + 3 * r) % 5; - t = i, r = n; - } - for (var t = 0; t < 5; t++) for (var r = 0; r < 5; r++) l[t + 5 * r] = r + (2 * t + 3 * r) % 5 * 5; - for (var o = 1, s = 0; s < 24; s++) { - for (var c = 0, u = 0, d = 0; d < 7; d++) { - if (1 & o) { - var v = (1 << d) - 1; - v < 32 ? u ^= 1 << v : c ^= 1 << v - 32; - } - 128 & o ? o = o << 1 ^ 113 : o <<= 1; - } - f[s] = a.create(c, u); - } - }(); - var u = []; - !function () { - for (var t = 0; t < 25; t++) u[t] = a.create(); - }(); - var d = c.SHA3 = o.extend({ - cfg: o.cfg.extend({ - outputLength: 512 - }), - _doReset: function _doReset() { - for (var t = this._state = [], r = 0; r < 25; r++) t[r] = new a.init(); - this.blockSize = (1600 - 2 * this.cfg.outputLength) / 32; - }, - _doProcessBlock: function _doProcessBlock(t, r) { - for (var e = this._state, i = this.blockSize / 2, n = 0; n < i; n++) { - var o = t[r + 2 * n], - s = t[r + 2 * n + 1]; - o = 16711935 & (o << 8 | o >>> 24) | 4278255360 & (o << 24 | o >>> 8), s = 16711935 & (s << 8 | s >>> 24) | 4278255360 & (s << 24 | s >>> 8); - var a = e[n]; - a.high ^= s, a.low ^= o; - } - for (var c = 0; c < 24; c++) { - for (var d = 0; d < 5; d++) { - for (var v = 0, p = 0, _ = 0; _ < 5; _++) { - var a = e[d + 5 * _]; - v ^= a.high, p ^= a.low; - } - var y = u[d]; - y.high = v, y.low = p; - } - for (var d = 0; d < 5; d++) for (var g = u[(d + 4) % 5], B = u[(d + 1) % 5], w = B.high, k = B.low, v = g.high ^ (w << 1 | k >>> 31), p = g.low ^ (k << 1 | w >>> 31), _ = 0; _ < 5; _++) { - var a = e[d + 5 * _]; - a.high ^= v, a.low ^= p; - } - for (var S = 1; S < 25; S++) { - var a = e[S], - m = a.high, - x = a.low, - b = h[S]; - if (b < 32) var v = m << b | x >>> 32 - b, - p = x << b | m >>> 32 - b;else var v = x << b - 32 | m >>> 64 - b, - p = m << b - 32 | x >>> 64 - b; - var H = u[l[S]]; - H.high = v, H.low = p; - } - var z = u[0], - A = e[0]; - z.high = A.high, z.low = A.low; - for (var d = 0; d < 5; d++) for (var _ = 0; _ < 5; _++) { - var S = d + 5 * _, - a = e[S], - C = u[S], - D = u[(d + 1) % 5 + 5 * _], - R = u[(d + 2) % 5 + 5 * _]; - a.high = C.high ^ ~D.high & R.high, a.low = C.low ^ ~D.low & R.low; - } - var a = e[0], - E = f[c]; - a.high ^= E.high, a.low ^= E.low; - } - }, - _doFinalize: function _doFinalize() { - var t = this._data, - e = t.words, - i = (8 * this._nDataBytes, 8 * t.sigBytes), - o = 32 * this.blockSize; - e[i >>> 5] |= 1 << 24 - i % 32, e[(r.ceil((i + 1) / o) * o >>> 5) - 1] |= 128, t.sigBytes = 4 * e.length, this._process(); - for (var s = this._state, a = this.cfg.outputLength / 8, c = a / 8, h = [], l = 0; l < c; l++) { - var f = s[l], - u = f.high, - d = f.low; - u = 16711935 & (u << 8 | u >>> 24) | 4278255360 & (u << 24 | u >>> 8), d = 16711935 & (d << 8 | d >>> 24) | 4278255360 & (d << 24 | d >>> 8), h.push(d), h.push(u); - } - return new n.init(h, a); - }, - clone: function clone() { - for (var t = o.clone.call(this), r = t._state = this._state.slice(0), e = 0; e < 25; e++) r[e] = r[e].clone(); - return t; - } - }); - e.SHA3 = o._createHelper(d), e.HmacSHA3 = o._createHmacHelper(d); - }(Math), function () { - function r() { - return s.create.apply(s, arguments); - } - var e = t, - i = e.lib, - n = i.Hasher, - o = e.x64, - s = o.Word, - a = o.WordArray, - c = e.algo, - h = [r(1116352408, 3609767458), r(1899447441, 602891725), r(3049323471, 3964484399), r(3921009573, 2173295548), r(961987163, 4081628472), r(1508970993, 3053834265), r(2453635748, 2937671579), r(2870763221, 3664609560), r(3624381080, 2734883394), r(310598401, 1164996542), r(607225278, 1323610764), r(1426881987, 3590304994), r(1925078388, 4068182383), r(2162078206, 991336113), r(2614888103, 633803317), r(3248222580, 3479774868), r(3835390401, 2666613458), r(4022224774, 944711139), r(264347078, 2341262773), r(604807628, 2007800933), r(770255983, 1495990901), r(1249150122, 1856431235), r(1555081692, 3175218132), r(1996064986, 2198950837), r(2554220882, 3999719339), r(2821834349, 766784016), r(2952996808, 2566594879), r(3210313671, 3203337956), r(3336571891, 1034457026), r(3584528711, 2466948901), r(113926993, 3758326383), r(338241895, 168717936), r(666307205, 1188179964), r(773529912, 1546045734), r(1294757372, 1522805485), r(1396182291, 2643833823), r(1695183700, 2343527390), r(1986661051, 1014477480), r(2177026350, 1206759142), r(2456956037, 344077627), r(2730485921, 1290863460), r(2820302411, 3158454273), r(3259730800, 3505952657), r(3345764771, 106217008), r(3516065817, 3606008344), r(3600352804, 1432725776), r(4094571909, 1467031594), r(275423344, 851169720), r(430227734, 3100823752), r(506948616, 1363258195), r(659060556, 3750685593), r(883997877, 3785050280), r(958139571, 3318307427), r(1322822218, 3812723403), r(1537002063, 2003034995), r(1747873779, 3602036899), r(1955562222, 1575990012), r(2024104815, 1125592928), r(2227730452, 2716904306), r(2361852424, 442776044), r(2428436474, 593698344), r(2756734187, 3733110249), r(3204031479, 2999351573), r(3329325298, 3815920427), r(3391569614, 3928383900), r(3515267271, 566280711), r(3940187606, 3454069534), r(4118630271, 4000239992), r(116418474, 1914138554), r(174292421, 2731055270), r(289380356, 3203993006), r(460393269, 320620315), r(685471733, 587496836), r(852142971, 1086792851), r(1017036298, 365543100), r(1126000580, 2618297676), r(1288033470, 3409855158), r(1501505948, 4234509866), r(1607167915, 987167468), r(1816402316, 1246189591)], - l = []; - !function () { - for (var t = 0; t < 80; t++) l[t] = r(); - }(); - var f = c.SHA512 = n.extend({ - _doReset: function _doReset() { - this._hash = new a.init([new s.init(1779033703, 4089235720), new s.init(3144134277, 2227873595), new s.init(1013904242, 4271175723), new s.init(2773480762, 1595750129), new s.init(1359893119, 2917565137), new s.init(2600822924, 725511199), new s.init(528734635, 4215389547), new s.init(1541459225, 327033209)]); - }, - _doProcessBlock: function _doProcessBlock(t, r) { - for (var e = this._hash.words, i = e[0], n = e[1], o = e[2], s = e[3], a = e[4], c = e[5], f = e[6], u = e[7], d = i.high, v = i.low, p = n.high, _ = n.low, y = o.high, g = o.low, B = s.high, w = s.low, k = a.high, S = a.low, m = c.high, x = c.low, b = f.high, H = f.low, z = u.high, A = u.low, C = d, D = v, R = p, E = _, M = y, F = g, P = B, W = w, O = k, U = S, I = m, K = x, X = b, L = H, j = z, N = A, T = 0; T < 80; T++) { - var Z = l[T]; - if (T < 16) var q = Z.high = 0 | t[r + 2 * T], - G = Z.low = 0 | t[r + 2 * T + 1];else { - var J = l[T - 15], - $ = J.high, - Q = J.low, - V = ($ >>> 1 | Q << 31) ^ ($ >>> 8 | Q << 24) ^ $ >>> 7, - Y = (Q >>> 1 | $ << 31) ^ (Q >>> 8 | $ << 24) ^ (Q >>> 7 | $ << 25), - tt = l[T - 2], - rt = tt.high, - et = tt.low, - it = (rt >>> 19 | et << 13) ^ (rt << 3 | et >>> 29) ^ rt >>> 6, - nt = (et >>> 19 | rt << 13) ^ (et << 3 | rt >>> 29) ^ (et >>> 6 | rt << 26), - ot = l[T - 7], - st = ot.high, - at = ot.low, - ct = l[T - 16], - ht = ct.high, - lt = ct.low, - G = Y + at, - q = V + st + (G >>> 0 < Y >>> 0 ? 1 : 0), - G = G + nt, - q = q + it + (G >>> 0 < nt >>> 0 ? 1 : 0), - G = G + lt, - q = q + ht + (G >>> 0 < lt >>> 0 ? 1 : 0); - Z.high = q, Z.low = G; - } - var ft = O & I ^ ~O & X, - ut = U & K ^ ~U & L, - dt = C & R ^ C & M ^ R & M, - vt = D & E ^ D & F ^ E & F, - pt = (C >>> 28 | D << 4) ^ (C << 30 | D >>> 2) ^ (C << 25 | D >>> 7), - _t = (D >>> 28 | C << 4) ^ (D << 30 | C >>> 2) ^ (D << 25 | C >>> 7), - yt = (O >>> 14 | U << 18) ^ (O >>> 18 | U << 14) ^ (O << 23 | U >>> 9), - gt = (U >>> 14 | O << 18) ^ (U >>> 18 | O << 14) ^ (U << 23 | O >>> 9), - Bt = h[T], - wt = Bt.high, - kt = Bt.low, - St = N + gt, - mt = j + yt + (St >>> 0 < N >>> 0 ? 1 : 0), - St = St + ut, - mt = mt + ft + (St >>> 0 < ut >>> 0 ? 1 : 0), - St = St + kt, - mt = mt + wt + (St >>> 0 < kt >>> 0 ? 1 : 0), - St = St + G, - mt = mt + q + (St >>> 0 < G >>> 0 ? 1 : 0), - xt = _t + vt, - bt = pt + dt + (xt >>> 0 < _t >>> 0 ? 1 : 0); - j = X, N = L, X = I, L = K, I = O, K = U, U = W + St | 0, O = P + mt + (U >>> 0 < W >>> 0 ? 1 : 0) | 0, P = M, W = F, M = R, F = E, R = C, E = D, D = St + xt | 0, C = mt + bt + (D >>> 0 < St >>> 0 ? 1 : 0) | 0; - } - v = i.low = v + D, i.high = d + C + (v >>> 0 < D >>> 0 ? 1 : 0), _ = n.low = _ + E, n.high = p + R + (_ >>> 0 < E >>> 0 ? 1 : 0), g = o.low = g + F, o.high = y + M + (g >>> 0 < F >>> 0 ? 1 : 0), w = s.low = w + W, s.high = B + P + (w >>> 0 < W >>> 0 ? 1 : 0), S = a.low = S + U, a.high = k + O + (S >>> 0 < U >>> 0 ? 1 : 0), x = c.low = x + K, c.high = m + I + (x >>> 0 < K >>> 0 ? 1 : 0), H = f.low = H + L, f.high = b + X + (H >>> 0 < L >>> 0 ? 1 : 0), A = u.low = A + N, u.high = z + j + (A >>> 0 < N >>> 0 ? 1 : 0); - }, - _doFinalize: function _doFinalize() { - var t = this._data, - r = t.words, - e = 8 * this._nDataBytes, - i = 8 * t.sigBytes; - r[i >>> 5] |= 128 << 24 - i % 32, r[(i + 128 >>> 10 << 5) + 30] = Math.floor(e / 4294967296), r[(i + 128 >>> 10 << 5) + 31] = e, t.sigBytes = 4 * r.length, this._process(); - var n = this._hash.toX32(); - return n; - }, - clone: function clone() { - var t = n.clone.call(this); - return t._hash = this._hash.clone(), t; - }, - blockSize: 32 - }); - e.SHA512 = n._createHelper(f), e.HmacSHA512 = n._createHmacHelper(f); - }(), function () { - var r = t, - e = r.x64, - i = e.Word, - n = e.WordArray, - o = r.algo, - s = o.SHA512, - a = o.SHA384 = s.extend({ - _doReset: function _doReset() { - this._hash = new n.init([new i.init(3418070365, 3238371032), new i.init(1654270250, 914150663), new i.init(2438529370, 812702999), new i.init(355462360, 4144912697), new i.init(1731405415, 4290775857), new i.init(2394180231, 1750603025), new i.init(3675008525, 1694076839), new i.init(1203062813, 3204075428)]); - }, - _doFinalize: function _doFinalize() { - var t = s._doFinalize.call(this); - return t.sigBytes -= 16, t; - } - }); - r.SHA384 = s._createHelper(a), r.HmacSHA384 = s._createHmacHelper(a); - }(), t.lib.Cipher || function (r) { - var e = t, - i = e.lib, - n = i.Base, - o = i.WordArray, - s = i.BufferedBlockAlgorithm, - a = e.enc, - c = (a.Utf8, a.Base64), - h = e.algo, - l = h.EvpKDF, - f = i.Cipher = s.extend({ - cfg: n.extend(), - createEncryptor: function createEncryptor(t, r) { - return this.create(this._ENC_XFORM_MODE, t, r); - }, - createDecryptor: function createDecryptor(t, r) { - return this.create(this._DEC_XFORM_MODE, t, r); - }, - init: function init(t, r, e) { - this.cfg = this.cfg.extend(e), this._xformMode = t, this._key = r, this.reset(); - }, - reset: function reset() { - s.reset.call(this), this._doReset(); - }, - process: function process(t) { - return this._append(t), this._process(); - }, - finalize: function finalize(t) { - t && this._append(t); - var r = this._doFinalize(); - return r; - }, - keySize: 4, - ivSize: 4, - _ENC_XFORM_MODE: 1, - _DEC_XFORM_MODE: 2, - _createHelper: function () { - function t(t) { - return "string" == typeof t ? m : w; - } - return function (r) { - return { - encrypt: function encrypt(e, i, n) { - return t(i).encrypt(r, e, i, n); - }, - decrypt: function decrypt(e, i, n) { - return t(i).decrypt(r, e, i, n); - } - }; - }; - }() - }), - u = (i.StreamCipher = f.extend({ - _doFinalize: function _doFinalize() { - var t = this._process(!0); - return t; - }, - blockSize: 1 - }), e.mode = {}), - d = i.BlockCipherMode = n.extend({ - createEncryptor: function createEncryptor(t, r) { - return this.Encryptor.create(t, r); - }, - createDecryptor: function createDecryptor(t, r) { - return this.Decryptor.create(t, r); - }, - init: function init(t, r) { - this._cipher = t, this._iv = r; - } - }), - v = u.CBC = function () { - function t(t, e, i) { - var n = this._iv; - if (n) { - var o = n; - this._iv = r; - } else var o = this._prevBlock; - for (var s = 0; s < i; s++) t[e + s] ^= o[s]; - } - var e = d.extend(); - return e.Encryptor = e.extend({ - processBlock: function processBlock(r, e) { - var i = this._cipher, - n = i.blockSize; - t.call(this, r, e, n), i.encryptBlock(r, e), this._prevBlock = r.slice(e, e + n); - } - }), e.Decryptor = e.extend({ - processBlock: function processBlock(r, e) { - var i = this._cipher, - n = i.blockSize, - o = r.slice(e, e + n); - i.decryptBlock(r, e), t.call(this, r, e, n), this._prevBlock = o; - } - }), e; - }(), - p = e.pad = {}, - _ = p.Pkcs7 = { - pad: function pad(t, r) { - for (var e = 4 * r, i = e - t.sigBytes % e, n = i << 24 | i << 16 | i << 8 | i, s = [], a = 0; a < i; a += 4) s.push(n); - var c = o.create(s, i); - t.concat(c); - }, - unpad: function unpad(t) { - var r = 255 & t.words[t.sigBytes - 1 >>> 2]; - t.sigBytes -= r; - } - }, - y = (i.BlockCipher = f.extend({ - cfg: f.cfg.extend({ - mode: v, - padding: _ - }), - reset: function reset() { - f.reset.call(this); - var t = this.cfg, - r = t.iv, - e = t.mode; - if (this._xformMode == this._ENC_XFORM_MODE) var i = e.createEncryptor;else { - var i = e.createDecryptor; - this._minBufferSize = 1; - } - this._mode && this._mode.__creator == i ? this._mode.init(this, r && r.words) : (this._mode = i.call(e, this, r && r.words), this._mode.__creator = i); - }, - _doProcessBlock: function _doProcessBlock(t, r) { - this._mode.processBlock(t, r); - }, - _doFinalize: function _doFinalize() { - var t = this.cfg.padding; - if (this._xformMode == this._ENC_XFORM_MODE) { - t.pad(this._data, this.blockSize); - var r = this._process(!0); - } else { - var r = this._process(!0); - t.unpad(r); - } - return r; - }, - blockSize: 4 - }), i.CipherParams = n.extend({ - init: function init(t) { - this.mixIn(t); - }, - toString: function toString(t) { - return (t || this.formatter).stringify(this); - } - })), - g = e.format = {}, - B = g.OpenSSL = { - stringify: function stringify(t) { - var r = t.ciphertext, - e = t.salt; - if (e) var i = o.create([1398893684, 1701076831]).concat(e).concat(r);else var i = r; - return i.toString(c); - }, - parse: function parse(t) { - var r = c.parse(t), - e = r.words; - if (1398893684 == e[0] && 1701076831 == e[1]) { - var i = o.create(e.slice(2, 4)); - e.splice(0, 4), r.sigBytes -= 16; - } - return y.create({ - ciphertext: r, - salt: i - }); - } - }, - w = i.SerializableCipher = n.extend({ - cfg: n.extend({ - format: B - }), - encrypt: function encrypt(t, r, e, i) { - i = this.cfg.extend(i); - var n = t.createEncryptor(e, i), - o = n.finalize(r), - s = n.cfg; - return y.create({ - ciphertext: o, - key: e, - iv: s.iv, - algorithm: t, - mode: s.mode, - padding: s.padding, - blockSize: t.blockSize, - formatter: i.format - }); - }, - decrypt: function decrypt(t, r, e, i) { - i = this.cfg.extend(i), r = this._parse(r, i.format); - var n = t.createDecryptor(e, i).finalize(r.ciphertext); - return n; - }, - _parse: function _parse(t, r) { - return "string" == typeof t ? r.parse(t, this) : t; - } - }), - k = e.kdf = {}, - S = k.OpenSSL = { - execute: function execute(t, r, e, i) { - i || (i = o.random(8)); - var n = l.create({ - keySize: r + e - }).compute(t, i), - s = o.create(n.words.slice(r), 4 * e); - return n.sigBytes = 4 * r, y.create({ - key: n, - iv: s, - salt: i - }); - } - }, - m = i.PasswordBasedCipher = w.extend({ - cfg: w.cfg.extend({ - kdf: S - }), - encrypt: function encrypt(t, r, e, i) { - i = this.cfg.extend(i); - var n = i.kdf.execute(e, t.keySize, t.ivSize); - i.iv = n.iv; - var o = w.encrypt.call(this, t, r, n.key, i); - return o.mixIn(n), o; - }, - decrypt: function decrypt(t, r, e, i) { - i = this.cfg.extend(i), r = this._parse(r, i.format); - var n = i.kdf.execute(e, t.keySize, t.ivSize, r.salt); - i.iv = n.iv; - var o = w.decrypt.call(this, t, r, n.key, i); - return o; - } - }); - }(), t.mode.CFB = function () { - function r(t, r, e, i) { - var n = this._iv; - if (n) { - var o = n.slice(0); - this._iv = void 0; - } else var o = this._prevBlock; - i.encryptBlock(o, 0); - for (var s = 0; s < e; s++) t[r + s] ^= o[s]; - } - var e = t.lib.BlockCipherMode.extend(); - return e.Encryptor = e.extend({ - processBlock: function processBlock(t, e) { - var i = this._cipher, - n = i.blockSize; - r.call(this, t, e, n, i), this._prevBlock = t.slice(e, e + n); - } - }), e.Decryptor = e.extend({ - processBlock: function processBlock(t, e) { - var i = this._cipher, - n = i.blockSize, - o = t.slice(e, e + n); - r.call(this, t, e, n, i), this._prevBlock = o; - } - }), e; - }(), t.mode.ECB = function () { - var r = t.lib.BlockCipherMode.extend(); - return r.Encryptor = r.extend({ - processBlock: function processBlock(t, r) { - this._cipher.encryptBlock(t, r); - } - }), r.Decryptor = r.extend({ - processBlock: function processBlock(t, r) { - this._cipher.decryptBlock(t, r); - } - }), r; - }(), t.pad.AnsiX923 = { - pad: function pad(t, r) { - var e = t.sigBytes, - i = 4 * r, - n = i - e % i, - o = e + n - 1; - t.clamp(), t.words[o >>> 2] |= n << 24 - o % 4 * 8, t.sigBytes += n; - }, - unpad: function unpad(t) { - var r = 255 & t.words[t.sigBytes - 1 >>> 2]; - t.sigBytes -= r; - } - }, t.pad.Iso10126 = { - pad: function pad(r, e) { - var i = 4 * e, - n = i - r.sigBytes % i; - r.concat(t.lib.WordArray.random(n - 1)).concat(t.lib.WordArray.create([n << 24], 1)); - }, - unpad: function unpad(t) { - var r = 255 & t.words[t.sigBytes - 1 >>> 2]; - t.sigBytes -= r; - } - }, t.pad.Iso97971 = { - pad: function pad(r, e) { - r.concat(t.lib.WordArray.create([2147483648], 1)), t.pad.ZeroPadding.pad(r, e); - }, - unpad: function unpad(r) { - t.pad.ZeroPadding.unpad(r), r.sigBytes--; - } - }, t.mode.OFB = function () { - var r = t.lib.BlockCipherMode.extend(), - e = r.Encryptor = r.extend({ - processBlock: function processBlock(t, r) { - var e = this._cipher, - i = e.blockSize, - n = this._iv, - o = this._keystream; - n && (o = this._keystream = n.slice(0), this._iv = void 0), e.encryptBlock(o, 0); - for (var s = 0; s < i; s++) t[r + s] ^= o[s]; - } - }); - return r.Decryptor = e, r; - }(), t.pad.NoPadding = { - pad: function pad() {}, - unpad: function unpad() {} - }, function (r) { - var e = t, - i = e.lib, - n = i.CipherParams, - o = e.enc, - s = o.Hex, - a = e.format; - a.Hex = { - stringify: function stringify(t) { - return t.ciphertext.toString(s); - }, - parse: function parse(t) { - var r = s.parse(t); - return n.create({ - ciphertext: r - }); - } - }; - }(), function () { - var r = t, - e = r.lib, - i = e.BlockCipher, - n = r.algo, - o = [], - s = [], - a = [], - c = [], - h = [], - l = [], - f = [], - u = [], - d = [], - v = []; - !function () { - for (var t = [], r = 0; r < 256; r++) r < 128 ? t[r] = r << 1 : t[r] = r << 1 ^ 283; - for (var e = 0, i = 0, r = 0; r < 256; r++) { - var n = i ^ i << 1 ^ i << 2 ^ i << 3 ^ i << 4; - n = n >>> 8 ^ 255 & n ^ 99, o[e] = n, s[n] = e; - var p = t[e], - _ = t[p], - y = t[_], - g = 257 * t[n] ^ 16843008 * n; - a[e] = g << 24 | g >>> 8, c[e] = g << 16 | g >>> 16, h[e] = g << 8 | g >>> 24, l[e] = g; - var g = 16843009 * y ^ 65537 * _ ^ 257 * p ^ 16843008 * e; - f[n] = g << 24 | g >>> 8, u[n] = g << 16 | g >>> 16, d[n] = g << 8 | g >>> 24, v[n] = g, e ? (e = p ^ t[t[t[y ^ p]]], i ^= t[t[i]]) : e = i = 1; - } - }(); - var p = [0, 1, 2, 4, 8, 16, 32, 64, 128, 27, 54], - _ = n.AES = i.extend({ - _doReset: function _doReset() { - if (!this._nRounds || this._keyPriorReset !== this._key) { - for (var t = this._keyPriorReset = this._key, r = t.words, e = t.sigBytes / 4, i = this._nRounds = e + 6, n = 4 * (i + 1), s = this._keySchedule = [], a = 0; a < n; a++) if (a < e) s[a] = r[a];else { - var c = s[a - 1]; - a % e ? e > 6 && a % e == 4 && (c = o[c >>> 24] << 24 | o[c >>> 16 & 255] << 16 | o[c >>> 8 & 255] << 8 | o[255 & c]) : (c = c << 8 | c >>> 24, c = o[c >>> 24] << 24 | o[c >>> 16 & 255] << 16 | o[c >>> 8 & 255] << 8 | o[255 & c], c ^= p[a / e | 0] << 24), s[a] = s[a - e] ^ c; - } - for (var h = this._invKeySchedule = [], l = 0; l < n; l++) { - var a = n - l; - if (l % 4) var c = s[a];else var c = s[a - 4]; - l < 4 || a <= 4 ? h[l] = c : h[l] = f[o[c >>> 24]] ^ u[o[c >>> 16 & 255]] ^ d[o[c >>> 8 & 255]] ^ v[o[255 & c]]; - } - } - }, - encryptBlock: function encryptBlock(t, r) { - this._doCryptBlock(t, r, this._keySchedule, a, c, h, l, o); - }, - decryptBlock: function decryptBlock(t, r) { - var e = t[r + 1]; - t[r + 1] = t[r + 3], t[r + 3] = e, this._doCryptBlock(t, r, this._invKeySchedule, f, u, d, v, s); - var e = t[r + 1]; - t[r + 1] = t[r + 3], t[r + 3] = e; - }, - _doCryptBlock: function _doCryptBlock(t, r, e, i, n, o, s, a) { - for (var c = this._nRounds, h = t[r] ^ e[0], l = t[r + 1] ^ e[1], f = t[r + 2] ^ e[2], u = t[r + 3] ^ e[3], d = 4, v = 1; v < c; v++) { - var p = i[h >>> 24] ^ n[l >>> 16 & 255] ^ o[f >>> 8 & 255] ^ s[255 & u] ^ e[d++], - _ = i[l >>> 24] ^ n[f >>> 16 & 255] ^ o[u >>> 8 & 255] ^ s[255 & h] ^ e[d++], - y = i[f >>> 24] ^ n[u >>> 16 & 255] ^ o[h >>> 8 & 255] ^ s[255 & l] ^ e[d++], - g = i[u >>> 24] ^ n[h >>> 16 & 255] ^ o[l >>> 8 & 255] ^ s[255 & f] ^ e[d++]; - h = p, l = _, f = y, u = g; - } - var p = (a[h >>> 24] << 24 | a[l >>> 16 & 255] << 16 | a[f >>> 8 & 255] << 8 | a[255 & u]) ^ e[d++], - _ = (a[l >>> 24] << 24 | a[f >>> 16 & 255] << 16 | a[u >>> 8 & 255] << 8 | a[255 & h]) ^ e[d++], - y = (a[f >>> 24] << 24 | a[u >>> 16 & 255] << 16 | a[h >>> 8 & 255] << 8 | a[255 & l]) ^ e[d++], - g = (a[u >>> 24] << 24 | a[h >>> 16 & 255] << 16 | a[l >>> 8 & 255] << 8 | a[255 & f]) ^ e[d++]; - t[r] = p, t[r + 1] = _, t[r + 2] = y, t[r + 3] = g; - }, - keySize: 8 - }); - r.AES = i._createHelper(_); - }(), function () { - function r(t, r) { - var e = (this._lBlock >>> t ^ this._rBlock) & r; - this._rBlock ^= e, this._lBlock ^= e << t; - } - function e(t, r) { - var e = (this._rBlock >>> t ^ this._lBlock) & r; - this._lBlock ^= e, this._rBlock ^= e << t; - } - var i = t, - n = i.lib, - o = n.WordArray, - s = n.BlockCipher, - a = i.algo, - c = [57, 49, 41, 33, 25, 17, 9, 1, 58, 50, 42, 34, 26, 18, 10, 2, 59, 51, 43, 35, 27, 19, 11, 3, 60, 52, 44, 36, 63, 55, 47, 39, 31, 23, 15, 7, 62, 54, 46, 38, 30, 22, 14, 6, 61, 53, 45, 37, 29, 21, 13, 5, 28, 20, 12, 4], - h = [14, 17, 11, 24, 1, 5, 3, 28, 15, 6, 21, 10, 23, 19, 12, 4, 26, 8, 16, 7, 27, 20, 13, 2, 41, 52, 31, 37, 47, 55, 30, 40, 51, 45, 33, 48, 44, 49, 39, 56, 34, 53, 46, 42, 50, 36, 29, 32], - l = [1, 2, 4, 6, 8, 10, 12, 14, 15, 17, 19, 21, 23, 25, 27, 28], - f = [{ - 0: 8421888, - 268435456: 32768, - 536870912: 8421378, - 805306368: 2, - 1073741824: 512, - 1342177280: 8421890, - 1610612736: 8389122, - 1879048192: 8388608, - 2147483648: 514, - 2415919104: 8389120, - 2684354560: 33280, - 2952790016: 8421376, - 3221225472: 32770, - 3489660928: 8388610, - 3758096384: 0, - 4026531840: 33282, - 134217728: 0, - 402653184: 8421890, - 671088640: 33282, - 939524096: 32768, - 1207959552: 8421888, - 1476395008: 512, - 1744830464: 8421378, - 2013265920: 2, - 2281701376: 8389120, - 2550136832: 33280, - 2818572288: 8421376, - 3087007744: 8389122, - 3355443200: 8388610, - 3623878656: 32770, - 3892314112: 514, - 4160749568: 8388608, - 1: 32768, - 268435457: 2, - 536870913: 8421888, - 805306369: 8388608, - 1073741825: 8421378, - 1342177281: 33280, - 1610612737: 512, - 1879048193: 8389122, - 2147483649: 8421890, - 2415919105: 8421376, - 2684354561: 8388610, - 2952790017: 33282, - 3221225473: 514, - 3489660929: 8389120, - 3758096385: 32770, - 4026531841: 0, - 134217729: 8421890, - 402653185: 8421376, - 671088641: 8388608, - 939524097: 512, - 1207959553: 32768, - 1476395009: 8388610, - 1744830465: 2, - 2013265921: 33282, - 2281701377: 32770, - 2550136833: 8389122, - 2818572289: 514, - 3087007745: 8421888, - 3355443201: 8389120, - 3623878657: 0, - 3892314113: 33280, - 4160749569: 8421378 - }, { - 0: 1074282512, - 16777216: 16384, - 33554432: 524288, - 50331648: 1074266128, - 67108864: 1073741840, - 83886080: 1074282496, - 100663296: 1073758208, - 117440512: 16, - 134217728: 540672, - 150994944: 1073758224, - 167772160: 1073741824, - 184549376: 540688, - 201326592: 524304, - 218103808: 0, - 234881024: 16400, - 251658240: 1074266112, - 8388608: 1073758208, - 25165824: 540688, - 41943040: 16, - 58720256: 1073758224, - 75497472: 1074282512, - 92274688: 1073741824, - 109051904: 524288, - 125829120: 1074266128, - 142606336: 524304, - 159383552: 0, - 176160768: 16384, - 192937984: 1074266112, - 209715200: 1073741840, - 226492416: 540672, - 243269632: 1074282496, - 260046848: 16400, - 268435456: 0, - 285212672: 1074266128, - 301989888: 1073758224, - 318767104: 1074282496, - 335544320: 1074266112, - 352321536: 16, - 369098752: 540688, - 385875968: 16384, - 402653184: 16400, - 419430400: 524288, - 436207616: 524304, - 452984832: 1073741840, - 469762048: 540672, - 486539264: 1073758208, - 503316480: 1073741824, - 520093696: 1074282512, - 276824064: 540688, - 293601280: 524288, - 310378496: 1074266112, - 327155712: 16384, - 343932928: 1073758208, - 360710144: 1074282512, - 377487360: 16, - 394264576: 1073741824, - 411041792: 1074282496, - 427819008: 1073741840, - 444596224: 1073758224, - 461373440: 524304, - 478150656: 0, - 494927872: 16400, - 511705088: 1074266128, - 528482304: 540672 - }, { - 0: 260, - 1048576: 0, - 2097152: 67109120, - 3145728: 65796, - 4194304: 65540, - 5242880: 67108868, - 6291456: 67174660, - 7340032: 67174400, - 8388608: 67108864, - 9437184: 67174656, - 10485760: 65792, - 11534336: 67174404, - 12582912: 67109124, - 13631488: 65536, - 14680064: 4, - 15728640: 256, - 524288: 67174656, - 1572864: 67174404, - 2621440: 0, - 3670016: 67109120, - 4718592: 67108868, - 5767168: 65536, - 6815744: 65540, - 7864320: 260, - 8912896: 4, - 9961472: 256, - 11010048: 67174400, - 12058624: 65796, - 13107200: 65792, - 14155776: 67109124, - 15204352: 67174660, - 16252928: 67108864, - 16777216: 67174656, - 17825792: 65540, - 18874368: 65536, - 19922944: 67109120, - 20971520: 256, - 22020096: 67174660, - 23068672: 67108868, - 24117248: 0, - 25165824: 67109124, - 26214400: 67108864, - 27262976: 4, - 28311552: 65792, - 29360128: 67174400, - 30408704: 260, - 31457280: 65796, - 32505856: 67174404, - 17301504: 67108864, - 18350080: 260, - 19398656: 67174656, - 20447232: 0, - 21495808: 65540, - 22544384: 67109120, - 23592960: 256, - 24641536: 67174404, - 25690112: 65536, - 26738688: 67174660, - 27787264: 65796, - 28835840: 67108868, - 29884416: 67109124, - 30932992: 67174400, - 31981568: 4, - 33030144: 65792 - }, { - 0: 2151682048, - 65536: 2147487808, - 131072: 4198464, - 196608: 2151677952, - 262144: 0, - 327680: 4198400, - 393216: 2147483712, - 458752: 4194368, - 524288: 2147483648, - 589824: 4194304, - 655360: 64, - 720896: 2147487744, - 786432: 2151678016, - 851968: 4160, - 917504: 4096, - 983040: 2151682112, - 32768: 2147487808, - 98304: 64, - 163840: 2151678016, - 229376: 2147487744, - 294912: 4198400, - 360448: 2151682112, - 425984: 0, - 491520: 2151677952, - 557056: 4096, - 622592: 2151682048, - 688128: 4194304, - 753664: 4160, - 819200: 2147483648, - 884736: 4194368, - 950272: 4198464, - 1015808: 2147483712, - 1048576: 4194368, - 1114112: 4198400, - 1179648: 2147483712, - 1245184: 0, - 1310720: 4160, - 1376256: 2151678016, - 1441792: 2151682048, - 1507328: 2147487808, - 1572864: 2151682112, - 1638400: 2147483648, - 1703936: 2151677952, - 1769472: 4198464, - 1835008: 2147487744, - 1900544: 4194304, - 1966080: 64, - 2031616: 4096, - 1081344: 2151677952, - 1146880: 2151682112, - 1212416: 0, - 1277952: 4198400, - 1343488: 4194368, - 1409024: 2147483648, - 1474560: 2147487808, - 1540096: 64, - 1605632: 2147483712, - 1671168: 4096, - 1736704: 2147487744, - 1802240: 2151678016, - 1867776: 4160, - 1933312: 2151682048, - 1998848: 4194304, - 2064384: 4198464 - }, { - 0: 128, - 4096: 17039360, - 8192: 262144, - 12288: 536870912, - 16384: 537133184, - 20480: 16777344, - 24576: 553648256, - 28672: 262272, - 32768: 16777216, - 36864: 537133056, - 40960: 536871040, - 45056: 553910400, - 49152: 553910272, - 53248: 0, - 57344: 17039488, - 61440: 553648128, - 2048: 17039488, - 6144: 553648256, - 10240: 128, - 14336: 17039360, - 18432: 262144, - 22528: 537133184, - 26624: 553910272, - 30720: 536870912, - 34816: 537133056, - 38912: 0, - 43008: 553910400, - 47104: 16777344, - 51200: 536871040, - 55296: 553648128, - 59392: 16777216, - 63488: 262272, - 65536: 262144, - 69632: 128, - 73728: 536870912, - 77824: 553648256, - 81920: 16777344, - 86016: 553910272, - 90112: 537133184, - 94208: 16777216, - 98304: 553910400, - 102400: 553648128, - 106496: 17039360, - 110592: 537133056, - 114688: 262272, - 118784: 536871040, - 122880: 0, - 126976: 17039488, - 67584: 553648256, - 71680: 16777216, - 75776: 17039360, - 79872: 537133184, - 83968: 536870912, - 88064: 17039488, - 92160: 128, - 96256: 553910272, - 100352: 262272, - 104448: 553910400, - 108544: 0, - 112640: 553648128, - 116736: 16777344, - 120832: 262144, - 124928: 537133056, - 129024: 536871040 - }, { - 0: 268435464, - 256: 8192, - 512: 270532608, - 768: 270540808, - 1024: 268443648, - 1280: 2097152, - 1536: 2097160, - 1792: 268435456, - 2048: 0, - 2304: 268443656, - 2560: 2105344, - 2816: 8, - 3072: 270532616, - 3328: 2105352, - 3584: 8200, - 3840: 270540800, - 128: 270532608, - 384: 270540808, - 640: 8, - 896: 2097152, - 1152: 2105352, - 1408: 268435464, - 1664: 268443648, - 1920: 8200, - 2176: 2097160, - 2432: 8192, - 2688: 268443656, - 2944: 270532616, - 3200: 0, - 3456: 270540800, - 3712: 2105344, - 3968: 268435456, - 4096: 268443648, - 4352: 270532616, - 4608: 270540808, - 4864: 8200, - 5120: 2097152, - 5376: 268435456, - 5632: 268435464, - 5888: 2105344, - 6144: 2105352, - 6400: 0, - 6656: 8, - 6912: 270532608, - 7168: 8192, - 7424: 268443656, - 7680: 270540800, - 7936: 2097160, - 4224: 8, - 4480: 2105344, - 4736: 2097152, - 4992: 268435464, - 5248: 268443648, - 5504: 8200, - 5760: 270540808, - 6016: 270532608, - 6272: 270540800, - 6528: 270532616, - 6784: 8192, - 7040: 2105352, - 7296: 2097160, - 7552: 0, - 7808: 268435456, - 8064: 268443656 - }, { - 0: 1048576, - 16: 33555457, - 32: 1024, - 48: 1049601, - 64: 34604033, - 80: 0, - 96: 1, - 112: 34603009, - 128: 33555456, - 144: 1048577, - 160: 33554433, - 176: 34604032, - 192: 34603008, - 208: 1025, - 224: 1049600, - 240: 33554432, - 8: 34603009, - 24: 0, - 40: 33555457, - 56: 34604032, - 72: 1048576, - 88: 33554433, - 104: 33554432, - 120: 1025, - 136: 1049601, - 152: 33555456, - 168: 34603008, - 184: 1048577, - 200: 1024, - 216: 34604033, - 232: 1, - 248: 1049600, - 256: 33554432, - 272: 1048576, - 288: 33555457, - 304: 34603009, - 320: 1048577, - 336: 33555456, - 352: 34604032, - 368: 1049601, - 384: 1025, - 400: 34604033, - 416: 1049600, - 432: 1, - 448: 0, - 464: 34603008, - 480: 33554433, - 496: 1024, - 264: 1049600, - 280: 33555457, - 296: 34603009, - 312: 1, - 328: 33554432, - 344: 1048576, - 360: 1025, - 376: 34604032, - 392: 33554433, - 408: 34603008, - 424: 0, - 440: 34604033, - 456: 1049601, - 472: 1024, - 488: 33555456, - 504: 1048577 - }, { - 0: 134219808, - 1: 131072, - 2: 134217728, - 3: 32, - 4: 131104, - 5: 134350880, - 6: 134350848, - 7: 2048, - 8: 134348800, - 9: 134219776, - 10: 133120, - 11: 134348832, - 12: 2080, - 13: 0, - 14: 134217760, - 15: 133152, - 2147483648: 2048, - 2147483649: 134350880, - 2147483650: 134219808, - 2147483651: 134217728, - 2147483652: 134348800, - 2147483653: 133120, - 2147483654: 133152, - 2147483655: 32, - 2147483656: 134217760, - 2147483657: 2080, - 2147483658: 131104, - 2147483659: 134350848, - 2147483660: 0, - 2147483661: 134348832, - 2147483662: 134219776, - 2147483663: 131072, - 16: 133152, - 17: 134350848, - 18: 32, - 19: 2048, - 20: 134219776, - 21: 134217760, - 22: 134348832, - 23: 131072, - 24: 0, - 25: 131104, - 26: 134348800, - 27: 134219808, - 28: 134350880, - 29: 133120, - 30: 2080, - 31: 134217728, - 2147483664: 131072, - 2147483665: 2048, - 2147483666: 134348832, - 2147483667: 133152, - 2147483668: 32, - 2147483669: 134348800, - 2147483670: 134217728, - 2147483671: 134219808, - 2147483672: 134350880, - 2147483673: 134217760, - 2147483674: 134219776, - 2147483675: 0, - 2147483676: 133120, - 2147483677: 2080, - 2147483678: 131104, - 2147483679: 134350848 - }], - u = [4160749569, 528482304, 33030144, 2064384, 129024, 8064, 504, 2147483679], - d = a.DES = s.extend({ - _doReset: function _doReset() { - for (var t = this._key, r = t.words, e = [], i = 0; i < 56; i++) { - var n = c[i] - 1; - e[i] = r[n >>> 5] >>> 31 - n % 32 & 1; - } - for (var o = this._subKeys = [], s = 0; s < 16; s++) { - for (var a = o[s] = [], f = l[s], i = 0; i < 24; i++) a[i / 6 | 0] |= e[(h[i] - 1 + f) % 28] << 31 - i % 6, a[4 + (i / 6 | 0)] |= e[28 + (h[i + 24] - 1 + f) % 28] << 31 - i % 6; - a[0] = a[0] << 1 | a[0] >>> 31; - for (var i = 1; i < 7; i++) a[i] = a[i] >>> 4 * (i - 1) + 3; - a[7] = a[7] << 5 | a[7] >>> 27; - } - for (var u = this._invSubKeys = [], i = 0; i < 16; i++) u[i] = o[15 - i]; - }, - encryptBlock: function encryptBlock(t, r) { - this._doCryptBlock(t, r, this._subKeys); - }, - decryptBlock: function decryptBlock(t, r) { - this._doCryptBlock(t, r, this._invSubKeys); - }, - _doCryptBlock: function _doCryptBlock(t, i, n) { - this._lBlock = t[i], this._rBlock = t[i + 1], r.call(this, 4, 252645135), r.call(this, 16, 65535), e.call(this, 2, 858993459), e.call(this, 8, 16711935), r.call(this, 1, 1431655765); - for (var o = 0; o < 16; o++) { - for (var s = n[o], a = this._lBlock, c = this._rBlock, h = 0, l = 0; l < 8; l++) h |= f[l][((c ^ s[l]) & u[l]) >>> 0]; - this._lBlock = c, this._rBlock = a ^ h; - } - var d = this._lBlock; - this._lBlock = this._rBlock, this._rBlock = d, r.call(this, 1, 1431655765), e.call(this, 8, 16711935), e.call(this, 2, 858993459), r.call(this, 16, 65535), r.call(this, 4, 252645135), t[i] = this._lBlock, t[i + 1] = this._rBlock; - }, - keySize: 2, - ivSize: 2, - blockSize: 2 - }); - i.DES = s._createHelper(d); - var v = a.TripleDES = s.extend({ - _doReset: function _doReset() { - var t = this._key, - r = t.words; - this._des1 = d.createEncryptor(o.create(r.slice(0, 2))), this._des2 = d.createEncryptor(o.create(r.slice(2, 4))), this._des3 = d.createEncryptor(o.create(r.slice(4, 6))); - }, - encryptBlock: function encryptBlock(t, r) { - this._des1.encryptBlock(t, r), this._des2.decryptBlock(t, r), this._des3.encryptBlock(t, r); - }, - decryptBlock: function decryptBlock(t, r) { - this._des3.decryptBlock(t, r), this._des2.encryptBlock(t, r), this._des1.decryptBlock(t, r); - }, - keySize: 6, - ivSize: 2, - blockSize: 2 - }); - i.TripleDES = s._createHelper(v); - }(), function () { - function r() { - for (var t = this._S, r = this._i, e = this._j, i = 0, n = 0; n < 4; n++) { - r = (r + 1) % 256, e = (e + t[r]) % 256; - var o = t[r]; - t[r] = t[e], t[e] = o, i |= t[(t[r] + t[e]) % 256] << 24 - 8 * n; - } - return this._i = r, this._j = e, i; - } - var e = t, - i = e.lib, - n = i.StreamCipher, - o = e.algo, - s = o.RC4 = n.extend({ - _doReset: function _doReset() { - for (var t = this._key, r = t.words, e = t.sigBytes, i = this._S = [], n = 0; n < 256; n++) i[n] = n; - for (var n = 0, o = 0; n < 256; n++) { - var s = n % e, - a = r[s >>> 2] >>> 24 - s % 4 * 8 & 255; - o = (o + i[n] + a) % 256; - var c = i[n]; - i[n] = i[o], i[o] = c; - } - this._i = this._j = 0; - }, - _doProcessBlock: function _doProcessBlock(t, e) { - t[e] ^= r.call(this); - }, - keySize: 8, - ivSize: 0 - }); - e.RC4 = n._createHelper(s); - var a = o.RC4Drop = s.extend({ - cfg: s.cfg.extend({ - drop: 192 - }), - _doReset: function _doReset() { - s._doReset.call(this); - for (var t = this.cfg.drop; t > 0; t--) r.call(this); - } - }); - e.RC4Drop = n._createHelper(a); - }(), t.mode.CTRGladman = function () { - function r(t) { - if (255 === (t >> 24 & 255)) { - var r = t >> 16 & 255, - e = t >> 8 & 255, - i = 255 & t; - 255 === r ? (r = 0, 255 === e ? (e = 0, 255 === i ? i = 0 : ++i) : ++e) : ++r, t = 0, t += r << 16, t += e << 8, t += i; - } else t += 1 << 24; - return t; - } - function e(t) { - return 0 === (t[0] = r(t[0])) && (t[1] = r(t[1])), t; - } - var i = t.lib.BlockCipherMode.extend(), - n = i.Encryptor = i.extend({ - processBlock: function processBlock(t, r) { - var i = this._cipher, - n = i.blockSize, - o = this._iv, - s = this._counter; - o && (s = this._counter = o.slice(0), this._iv = void 0), e(s); - var a = s.slice(0); - i.encryptBlock(a, 0); - for (var c = 0; c < n; c++) t[r + c] ^= a[c]; - } - }); - return i.Decryptor = n, i; - }(), function () { - function r() { - for (var t = this._X, r = this._C, e = 0; e < 8; e++) a[e] = r[e]; - r[0] = r[0] + 1295307597 + this._b | 0, r[1] = r[1] + 3545052371 + (r[0] >>> 0 < a[0] >>> 0 ? 1 : 0) | 0, r[2] = r[2] + 886263092 + (r[1] >>> 0 < a[1] >>> 0 ? 1 : 0) | 0, r[3] = r[3] + 1295307597 + (r[2] >>> 0 < a[2] >>> 0 ? 1 : 0) | 0, r[4] = r[4] + 3545052371 + (r[3] >>> 0 < a[3] >>> 0 ? 1 : 0) | 0, r[5] = r[5] + 886263092 + (r[4] >>> 0 < a[4] >>> 0 ? 1 : 0) | 0, r[6] = r[6] + 1295307597 + (r[5] >>> 0 < a[5] >>> 0 ? 1 : 0) | 0, r[7] = r[7] + 3545052371 + (r[6] >>> 0 < a[6] >>> 0 ? 1 : 0) | 0, this._b = r[7] >>> 0 < a[7] >>> 0 ? 1 : 0; - for (var e = 0; e < 8; e++) { - var i = t[e] + r[e], - n = 65535 & i, - o = i >>> 16, - s = ((n * n >>> 17) + n * o >>> 15) + o * o, - h = ((4294901760 & i) * i | 0) + ((65535 & i) * i | 0); - c[e] = s ^ h; - } - t[0] = c[0] + (c[7] << 16 | c[7] >>> 16) + (c[6] << 16 | c[6] >>> 16) | 0, t[1] = c[1] + (c[0] << 8 | c[0] >>> 24) + c[7] | 0, t[2] = c[2] + (c[1] << 16 | c[1] >>> 16) + (c[0] << 16 | c[0] >>> 16) | 0, t[3] = c[3] + (c[2] << 8 | c[2] >>> 24) + c[1] | 0, t[4] = c[4] + (c[3] << 16 | c[3] >>> 16) + (c[2] << 16 | c[2] >>> 16) | 0, t[5] = c[5] + (c[4] << 8 | c[4] >>> 24) + c[3] | 0, t[6] = c[6] + (c[5] << 16 | c[5] >>> 16) + (c[4] << 16 | c[4] >>> 16) | 0, t[7] = c[7] + (c[6] << 8 | c[6] >>> 24) + c[5] | 0; - } - var e = t, - i = e.lib, - n = i.StreamCipher, - o = e.algo, - s = [], - a = [], - c = [], - h = o.Rabbit = n.extend({ - _doReset: function _doReset() { - for (var t = this._key.words, e = this.cfg.iv, i = 0; i < 4; i++) t[i] = 16711935 & (t[i] << 8 | t[i] >>> 24) | 4278255360 & (t[i] << 24 | t[i] >>> 8); - var n = this._X = [t[0], t[3] << 16 | t[2] >>> 16, t[1], t[0] << 16 | t[3] >>> 16, t[2], t[1] << 16 | t[0] >>> 16, t[3], t[2] << 16 | t[1] >>> 16], - o = this._C = [t[2] << 16 | t[2] >>> 16, 4294901760 & t[0] | 65535 & t[1], t[3] << 16 | t[3] >>> 16, 4294901760 & t[1] | 65535 & t[2], t[0] << 16 | t[0] >>> 16, 4294901760 & t[2] | 65535 & t[3], t[1] << 16 | t[1] >>> 16, 4294901760 & t[3] | 65535 & t[0]]; - this._b = 0; - for (var i = 0; i < 4; i++) r.call(this); - for (var i = 0; i < 8; i++) o[i] ^= n[i + 4 & 7]; - if (e) { - var s = e.words, - a = s[0], - c = s[1], - h = 16711935 & (a << 8 | a >>> 24) | 4278255360 & (a << 24 | a >>> 8), - l = 16711935 & (c << 8 | c >>> 24) | 4278255360 & (c << 24 | c >>> 8), - f = h >>> 16 | 4294901760 & l, - u = l << 16 | 65535 & h; - o[0] ^= h, o[1] ^= f, o[2] ^= l, o[3] ^= u, o[4] ^= h, o[5] ^= f, o[6] ^= l, o[7] ^= u; - for (var i = 0; i < 4; i++) r.call(this); - } - }, - _doProcessBlock: function _doProcessBlock(t, e) { - var i = this._X; - r.call(this), s[0] = i[0] ^ i[5] >>> 16 ^ i[3] << 16, s[1] = i[2] ^ i[7] >>> 16 ^ i[5] << 16, s[2] = i[4] ^ i[1] >>> 16 ^ i[7] << 16, s[3] = i[6] ^ i[3] >>> 16 ^ i[1] << 16; - for (var n = 0; n < 4; n++) s[n] = 16711935 & (s[n] << 8 | s[n] >>> 24) | 4278255360 & (s[n] << 24 | s[n] >>> 8), t[e + n] ^= s[n]; - }, - blockSize: 4, - ivSize: 2 - }); - e.Rabbit = n._createHelper(h); - }(), t.mode.CTR = function () { - var r = t.lib.BlockCipherMode.extend(), - e = r.Encryptor = r.extend({ - processBlock: function processBlock(t, r) { - var e = this._cipher, - i = e.blockSize, - n = this._iv, - o = this._counter; - n && (o = this._counter = n.slice(0), this._iv = void 0); - var s = o.slice(0); - e.encryptBlock(s, 0), o[i - 1] = o[i - 1] + 1 | 0; - for (var a = 0; a < i; a++) t[r + a] ^= s[a]; - } - }); - return r.Decryptor = e, r; - }(), function () { - function r() { - for (var t = this._X, r = this._C, e = 0; e < 8; e++) a[e] = r[e]; - r[0] = r[0] + 1295307597 + this._b | 0, r[1] = r[1] + 3545052371 + (r[0] >>> 0 < a[0] >>> 0 ? 1 : 0) | 0, r[2] = r[2] + 886263092 + (r[1] >>> 0 < a[1] >>> 0 ? 1 : 0) | 0, r[3] = r[3] + 1295307597 + (r[2] >>> 0 < a[2] >>> 0 ? 1 : 0) | 0, r[4] = r[4] + 3545052371 + (r[3] >>> 0 < a[3] >>> 0 ? 1 : 0) | 0, r[5] = r[5] + 886263092 + (r[4] >>> 0 < a[4] >>> 0 ? 1 : 0) | 0, r[6] = r[6] + 1295307597 + (r[5] >>> 0 < a[5] >>> 0 ? 1 : 0) | 0, r[7] = r[7] + 3545052371 + (r[6] >>> 0 < a[6] >>> 0 ? 1 : 0) | 0, this._b = r[7] >>> 0 < a[7] >>> 0 ? 1 : 0; - for (var e = 0; e < 8; e++) { - var i = t[e] + r[e], - n = 65535 & i, - o = i >>> 16, - s = ((n * n >>> 17) + n * o >>> 15) + o * o, - h = ((4294901760 & i) * i | 0) + ((65535 & i) * i | 0); - c[e] = s ^ h; - } - t[0] = c[0] + (c[7] << 16 | c[7] >>> 16) + (c[6] << 16 | c[6] >>> 16) | 0, t[1] = c[1] + (c[0] << 8 | c[0] >>> 24) + c[7] | 0, t[2] = c[2] + (c[1] << 16 | c[1] >>> 16) + (c[0] << 16 | c[0] >>> 16) | 0, t[3] = c[3] + (c[2] << 8 | c[2] >>> 24) + c[1] | 0, t[4] = c[4] + (c[3] << 16 | c[3] >>> 16) + (c[2] << 16 | c[2] >>> 16) | 0, t[5] = c[5] + (c[4] << 8 | c[4] >>> 24) + c[3] | 0, t[6] = c[6] + (c[5] << 16 | c[5] >>> 16) + (c[4] << 16 | c[4] >>> 16) | 0, t[7] = c[7] + (c[6] << 8 | c[6] >>> 24) + c[5] | 0; - } - var e = t, - i = e.lib, - n = i.StreamCipher, - o = e.algo, - s = [], - a = [], - c = [], - h = o.RabbitLegacy = n.extend({ - _doReset: function _doReset() { - var t = this._key.words, - e = this.cfg.iv, - i = this._X = [t[0], t[3] << 16 | t[2] >>> 16, t[1], t[0] << 16 | t[3] >>> 16, t[2], t[1] << 16 | t[0] >>> 16, t[3], t[2] << 16 | t[1] >>> 16], - n = this._C = [t[2] << 16 | t[2] >>> 16, 4294901760 & t[0] | 65535 & t[1], t[3] << 16 | t[3] >>> 16, 4294901760 & t[1] | 65535 & t[2], t[0] << 16 | t[0] >>> 16, 4294901760 & t[2] | 65535 & t[3], t[1] << 16 | t[1] >>> 16, 4294901760 & t[3] | 65535 & t[0]]; - this._b = 0; - for (var o = 0; o < 4; o++) r.call(this); - for (var o = 0; o < 8; o++) n[o] ^= i[o + 4 & 7]; - if (e) { - var s = e.words, - a = s[0], - c = s[1], - h = 16711935 & (a << 8 | a >>> 24) | 4278255360 & (a << 24 | a >>> 8), - l = 16711935 & (c << 8 | c >>> 24) | 4278255360 & (c << 24 | c >>> 8), - f = h >>> 16 | 4294901760 & l, - u = l << 16 | 65535 & h; - n[0] ^= h, n[1] ^= f, n[2] ^= l, n[3] ^= u, n[4] ^= h, n[5] ^= f, n[6] ^= l, n[7] ^= u; - for (var o = 0; o < 4; o++) r.call(this); - } - }, - _doProcessBlock: function _doProcessBlock(t, e) { - var i = this._X; - r.call(this), s[0] = i[0] ^ i[5] >>> 16 ^ i[3] << 16, s[1] = i[2] ^ i[7] >>> 16 ^ i[5] << 16, s[2] = i[4] ^ i[1] >>> 16 ^ i[7] << 16, s[3] = i[6] ^ i[3] >>> 16 ^ i[1] << 16; - for (var n = 0; n < 4; n++) s[n] = 16711935 & (s[n] << 8 | s[n] >>> 24) | 4278255360 & (s[n] << 24 | s[n] >>> 8), t[e + n] ^= s[n]; - }, - blockSize: 4, - ivSize: 2 - }); - e.RabbitLegacy = n._createHelper(h); - }(), t.pad.ZeroPadding = { - pad: function pad(t, r) { - var e = 4 * r; - t.clamp(), t.sigBytes += e - (t.sigBytes % e || e); - }, - unpad: function unpad(t) { - for (var r = t.words, e = t.sigBytes - 1; !(r[e >>> 2] >>> 24 - e % 4 * 8 & 255);) e--; - t.sigBytes = e + 1; - } - }, t; -}); - + if (!nodeEnv) {__quick_compile_project__.registerModule(__filename, module);}"use strict"; +cc._RF.push(module, 'e64e1qXyT9CV6s0gDQdj/ed', 'crypto-js.min'); +// Script/module/Crypto/crypto-js.min.js + +"use strict"; + +!function (t, r) { + "object" == typeof exports ? module.exports = exports = r() : "function" == typeof define && define.amd ? define([], r) : t.CryptoJS = r(); +}(void 0, function () { + var t = t || function (t, r) { + var e = Object.create || function () { + function t() {} + return function (r) { + var e; + return t.prototype = r, e = new t(), t.prototype = null, e; + }; + }(), + i = {}, + n = i.lib = {}, + o = n.Base = function () { + return { + extend: function extend(t) { + var r = e(this); + return t && r.mixIn(t), r.hasOwnProperty("init") && this.init !== r.init || (r.init = function () { + r.$super.init.apply(this, arguments); + }), r.init.prototype = r, r.$super = this, r; + }, + create: function create() { + var t = this.extend(); + return t.init.apply(t, arguments), t; + }, + init: function init() {}, + mixIn: function mixIn(t) { + for (var r in t) t.hasOwnProperty(r) && (this[r] = t[r]); + t.hasOwnProperty("toString") && (this.toString = t.toString); + }, + clone: function clone() { + return this.init.prototype.extend(this); + } + }; + }(), + s = n.WordArray = o.extend({ + init: function init(t, e) { + t = this.words = t || [], e != r ? this.sigBytes = e : this.sigBytes = 4 * t.length; + }, + toString: function toString(t) { + return (t || c).stringify(this); + }, + concat: function concat(t) { + var r = this.words, + e = t.words, + i = this.sigBytes, + n = t.sigBytes; + if (this.clamp(), i % 4) for (var o = 0; o < n; o++) { + var s = e[o >>> 2] >>> 24 - o % 4 * 8 & 255; + r[i + o >>> 2] |= s << 24 - (i + o) % 4 * 8; + } else for (var o = 0; o < n; o += 4) r[i + o >>> 2] = e[o >>> 2]; + return this.sigBytes += n, this; + }, + clamp: function clamp() { + var r = this.words, + e = this.sigBytes; + r[e >>> 2] &= 4294967295 << 32 - e % 4 * 8, r.length = t.ceil(e / 4); + }, + clone: function clone() { + var t = o.clone.call(this); + return t.words = this.words.slice(0), t; + }, + random: function random(r) { + for (var e, i = [], n = function n(r) { + var r = r, + e = 987654321, + i = 4294967295; + return function () { + e = 36969 * (65535 & e) + (e >> 16) & i, r = 18e3 * (65535 & r) + (r >> 16) & i; + var n = (e << 16) + r & i; + return n /= 4294967296, n += .5, n * (t.random() > .5 ? 1 : -1); + }; + }, o = 0; o < r; o += 4) { + var a = n(4294967296 * (e || t.random())); + e = 987654071 * a(), i.push(4294967296 * a() | 0); + } + return new s.init(i, r); + } + }), + a = i.enc = {}, + c = a.Hex = { + stringify: function stringify(t) { + for (var r = t.words, e = t.sigBytes, i = [], n = 0; n < e; n++) { + var o = r[n >>> 2] >>> 24 - n % 4 * 8 & 255; + i.push((o >>> 4).toString(16)), i.push((15 & o).toString(16)); + } + return i.join(""); + }, + parse: function parse(t) { + for (var r = t.length, e = [], i = 0; i < r; i += 2) e[i >>> 3] |= parseInt(t.substr(i, 2), 16) << 24 - i % 8 * 4; + return new s.init(e, r / 2); + } + }, + h = a.Latin1 = { + stringify: function stringify(t) { + for (var r = t.words, e = t.sigBytes, i = [], n = 0; n < e; n++) { + var o = r[n >>> 2] >>> 24 - n % 4 * 8 & 255; + i.push(String.fromCharCode(o)); + } + return i.join(""); + }, + parse: function parse(t) { + for (var r = t.length, e = [], i = 0; i < r; i++) e[i >>> 2] |= (255 & t.charCodeAt(i)) << 24 - i % 4 * 8; + return new s.init(e, r); + } + }, + l = a.Utf8 = { + stringify: function stringify(t) { + try { + return decodeURIComponent(escape(h.stringify(t))); + } catch (t) { + throw new Error("Malformed UTF-8 data"); + } + }, + parse: function parse(t) { + return h.parse(unescape(encodeURIComponent(t))); + } + }, + f = n.BufferedBlockAlgorithm = o.extend({ + reset: function reset() { + this._data = new s.init(), this._nDataBytes = 0; + }, + _append: function _append(t) { + "string" == typeof t && (t = l.parse(t)), this._data.concat(t), this._nDataBytes += t.sigBytes; + }, + _process: function _process(r) { + var e = this._data, + i = e.words, + n = e.sigBytes, + o = this.blockSize, + a = 4 * o, + c = n / a; + c = r ? t.ceil(c) : t.max((0 | c) - this._minBufferSize, 0); + var h = c * o, + l = t.min(4 * h, n); + if (h) { + for (var f = 0; f < h; f += o) this._doProcessBlock(i, f); + var u = i.splice(0, h); + e.sigBytes -= l; + } + return new s.init(u, l); + }, + clone: function clone() { + var t = o.clone.call(this); + return t._data = this._data.clone(), t; + }, + _minBufferSize: 0 + }), + u = (n.Hasher = f.extend({ + cfg: o.extend(), + init: function init(t) { + this.cfg = this.cfg.extend(t), this.reset(); + }, + reset: function reset() { + f.reset.call(this), this._doReset(); + }, + update: function update(t) { + return this._append(t), this._process(), this; + }, + finalize: function finalize(t) { + t && this._append(t); + var r = this._doFinalize(); + return r; + }, + blockSize: 16, + _createHelper: function _createHelper(t) { + return function (r, e) { + return new t.init(e).finalize(r); + }; + }, + _createHmacHelper: function _createHmacHelper(t) { + return function (r, e) { + return new u.HMAC.init(t, e).finalize(r); + }; + } + }), i.algo = {}); + return i; + }(Math); + return function () { + function r(t, r, e) { + for (var i = [], o = 0, s = 0; s < r; s++) if (s % 4) { + var a = e[t.charCodeAt(s - 1)] << s % 4 * 2, + c = e[t.charCodeAt(s)] >>> 6 - s % 4 * 2; + i[o >>> 2] |= (a | c) << 24 - o % 4 * 8, o++; + } + return n.create(i, o); + } + var e = t, + i = e.lib, + n = i.WordArray, + o = e.enc; + o.Base64 = { + stringify: function stringify(t) { + var r = t.words, + e = t.sigBytes, + i = this._map; + t.clamp(); + for (var n = [], o = 0; o < e; o += 3) for (var s = r[o >>> 2] >>> 24 - o % 4 * 8 & 255, a = r[o + 1 >>> 2] >>> 24 - (o + 1) % 4 * 8 & 255, c = r[o + 2 >>> 2] >>> 24 - (o + 2) % 4 * 8 & 255, h = s << 16 | a << 8 | c, l = 0; l < 4 && o + .75 * l < e; l++) n.push(i.charAt(h >>> 6 * (3 - l) & 63)); + var f = i.charAt(64); + if (f) for (; n.length % 4;) n.push(f); + return n.join(""); + }, + parse: function parse(t) { + var e = t.length, + i = this._map, + n = this._reverseMap; + if (!n) { + n = this._reverseMap = []; + for (var o = 0; o < i.length; o++) n[i.charCodeAt(o)] = o; + } + var s = i.charAt(64); + if (s) { + var a = t.indexOf(s); + a !== -1 && (e = a); + } + return r(t, e, n); + }, + _map: "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=" + }; + }(), function (r) { + function e(t, r, e, i, n, o, s) { + var a = t + (r & e | ~r & i) + n + s; + return (a << o | a >>> 32 - o) + r; + } + function i(t, r, e, i, n, o, s) { + var a = t + (r & i | e & ~i) + n + s; + return (a << o | a >>> 32 - o) + r; + } + function n(t, r, e, i, n, o, s) { + var a = t + (r ^ e ^ i) + n + s; + return (a << o | a >>> 32 - o) + r; + } + function o(t, r, e, i, n, o, s) { + var a = t + (e ^ (r | ~i)) + n + s; + return (a << o | a >>> 32 - o) + r; + } + var s = t, + a = s.lib, + c = a.WordArray, + h = a.Hasher, + l = s.algo, + f = []; + !function () { + for (var t = 0; t < 64; t++) f[t] = 4294967296 * r.abs(r.sin(t + 1)) | 0; + }(); + var u = l.MD5 = h.extend({ + _doReset: function _doReset() { + this._hash = new c.init([1732584193, 4023233417, 2562383102, 271733878]); + }, + _doProcessBlock: function _doProcessBlock(t, r) { + for (var s = 0; s < 16; s++) { + var a = r + s, + c = t[a]; + t[a] = 16711935 & (c << 8 | c >>> 24) | 4278255360 & (c << 24 | c >>> 8); + } + var h = this._hash.words, + l = t[r + 0], + u = t[r + 1], + d = t[r + 2], + v = t[r + 3], + p = t[r + 4], + _ = t[r + 5], + y = t[r + 6], + g = t[r + 7], + B = t[r + 8], + w = t[r + 9], + k = t[r + 10], + S = t[r + 11], + m = t[r + 12], + x = t[r + 13], + b = t[r + 14], + H = t[r + 15], + z = h[0], + A = h[1], + C = h[2], + D = h[3]; + z = e(z, A, C, D, l, 7, f[0]), D = e(D, z, A, C, u, 12, f[1]), C = e(C, D, z, A, d, 17, f[2]), A = e(A, C, D, z, v, 22, f[3]), z = e(z, A, C, D, p, 7, f[4]), D = e(D, z, A, C, _, 12, f[5]), C = e(C, D, z, A, y, 17, f[6]), A = e(A, C, D, z, g, 22, f[7]), z = e(z, A, C, D, B, 7, f[8]), D = e(D, z, A, C, w, 12, f[9]), C = e(C, D, z, A, k, 17, f[10]), A = e(A, C, D, z, S, 22, f[11]), z = e(z, A, C, D, m, 7, f[12]), D = e(D, z, A, C, x, 12, f[13]), C = e(C, D, z, A, b, 17, f[14]), A = e(A, C, D, z, H, 22, f[15]), z = i(z, A, C, D, u, 5, f[16]), D = i(D, z, A, C, y, 9, f[17]), C = i(C, D, z, A, S, 14, f[18]), A = i(A, C, D, z, l, 20, f[19]), z = i(z, A, C, D, _, 5, f[20]), D = i(D, z, A, C, k, 9, f[21]), C = i(C, D, z, A, H, 14, f[22]), A = i(A, C, D, z, p, 20, f[23]), z = i(z, A, C, D, w, 5, f[24]), D = i(D, z, A, C, b, 9, f[25]), C = i(C, D, z, A, v, 14, f[26]), A = i(A, C, D, z, B, 20, f[27]), z = i(z, A, C, D, x, 5, f[28]), D = i(D, z, A, C, d, 9, f[29]), C = i(C, D, z, A, g, 14, f[30]), A = i(A, C, D, z, m, 20, f[31]), z = n(z, A, C, D, _, 4, f[32]), D = n(D, z, A, C, B, 11, f[33]), C = n(C, D, z, A, S, 16, f[34]), A = n(A, C, D, z, b, 23, f[35]), z = n(z, A, C, D, u, 4, f[36]), D = n(D, z, A, C, p, 11, f[37]), C = n(C, D, z, A, g, 16, f[38]), A = n(A, C, D, z, k, 23, f[39]), z = n(z, A, C, D, x, 4, f[40]), D = n(D, z, A, C, l, 11, f[41]), C = n(C, D, z, A, v, 16, f[42]), A = n(A, C, D, z, y, 23, f[43]), z = n(z, A, C, D, w, 4, f[44]), D = n(D, z, A, C, m, 11, f[45]), C = n(C, D, z, A, H, 16, f[46]), A = n(A, C, D, z, d, 23, f[47]), z = o(z, A, C, D, l, 6, f[48]), D = o(D, z, A, C, g, 10, f[49]), C = o(C, D, z, A, b, 15, f[50]), A = o(A, C, D, z, _, 21, f[51]), z = o(z, A, C, D, m, 6, f[52]), D = o(D, z, A, C, v, 10, f[53]), C = o(C, D, z, A, k, 15, f[54]), A = o(A, C, D, z, u, 21, f[55]), z = o(z, A, C, D, B, 6, f[56]), D = o(D, z, A, C, H, 10, f[57]), C = o(C, D, z, A, y, 15, f[58]), A = o(A, C, D, z, x, 21, f[59]), z = o(z, A, C, D, p, 6, f[60]), D = o(D, z, A, C, S, 10, f[61]), C = o(C, D, z, A, d, 15, f[62]), A = o(A, C, D, z, w, 21, f[63]), h[0] = h[0] + z | 0, h[1] = h[1] + A | 0, h[2] = h[2] + C | 0, h[3] = h[3] + D | 0; + }, + _doFinalize: function _doFinalize() { + var t = this._data, + e = t.words, + i = 8 * this._nDataBytes, + n = 8 * t.sigBytes; + e[n >>> 5] |= 128 << 24 - n % 32; + var o = r.floor(i / 4294967296), + s = i; + e[(n + 64 >>> 9 << 4) + 15] = 16711935 & (o << 8 | o >>> 24) | 4278255360 & (o << 24 | o >>> 8), e[(n + 64 >>> 9 << 4) + 14] = 16711935 & (s << 8 | s >>> 24) | 4278255360 & (s << 24 | s >>> 8), t.sigBytes = 4 * (e.length + 1), this._process(); + for (var a = this._hash, c = a.words, h = 0; h < 4; h++) { + var l = c[h]; + c[h] = 16711935 & (l << 8 | l >>> 24) | 4278255360 & (l << 24 | l >>> 8); + } + return a; + }, + clone: function clone() { + var t = h.clone.call(this); + return t._hash = this._hash.clone(), t; + } + }); + s.MD5 = h._createHelper(u), s.HmacMD5 = h._createHmacHelper(u); + }(Math), function () { + var r = t, + e = r.lib, + i = e.WordArray, + n = e.Hasher, + o = r.algo, + s = [], + a = o.SHA1 = n.extend({ + _doReset: function _doReset() { + this._hash = new i.init([1732584193, 4023233417, 2562383102, 271733878, 3285377520]); + }, + _doProcessBlock: function _doProcessBlock(t, r) { + for (var e = this._hash.words, i = e[0], n = e[1], o = e[2], a = e[3], c = e[4], h = 0; h < 80; h++) { + if (h < 16) s[h] = 0 | t[r + h];else { + var l = s[h - 3] ^ s[h - 8] ^ s[h - 14] ^ s[h - 16]; + s[h] = l << 1 | l >>> 31; + } + var f = (i << 5 | i >>> 27) + c + s[h]; + f += h < 20 ? (n & o | ~n & a) + 1518500249 : h < 40 ? (n ^ o ^ a) + 1859775393 : h < 60 ? (n & o | n & a | o & a) - 1894007588 : (n ^ o ^ a) - 899497514, c = a, a = o, o = n << 30 | n >>> 2, n = i, i = f; + } + e[0] = e[0] + i | 0, e[1] = e[1] + n | 0, e[2] = e[2] + o | 0, e[3] = e[3] + a | 0, e[4] = e[4] + c | 0; + }, + _doFinalize: function _doFinalize() { + var t = this._data, + r = t.words, + e = 8 * this._nDataBytes, + i = 8 * t.sigBytes; + return r[i >>> 5] |= 128 << 24 - i % 32, r[(i + 64 >>> 9 << 4) + 14] = Math.floor(e / 4294967296), r[(i + 64 >>> 9 << 4) + 15] = e, t.sigBytes = 4 * r.length, this._process(), this._hash; + }, + clone: function clone() { + var t = n.clone.call(this); + return t._hash = this._hash.clone(), t; + } + }); + r.SHA1 = n._createHelper(a), r.HmacSHA1 = n._createHmacHelper(a); + }(), function (r) { + var e = t, + i = e.lib, + n = i.WordArray, + o = i.Hasher, + s = e.algo, + a = [], + c = []; + !function () { + function t(t) { + for (var e = r.sqrt(t), i = 2; i <= e; i++) if (!(t % i)) return !1; + return !0; + } + function e(t) { + return 4294967296 * (t - (0 | t)) | 0; + } + for (var i = 2, n = 0; n < 64;) t(i) && (n < 8 && (a[n] = e(r.pow(i, .5))), c[n] = e(r.pow(i, 1 / 3)), n++), i++; + }(); + var h = [], + l = s.SHA256 = o.extend({ + _doReset: function _doReset() { + this._hash = new n.init(a.slice(0)); + }, + _doProcessBlock: function _doProcessBlock(t, r) { + for (var e = this._hash.words, i = e[0], n = e[1], o = e[2], s = e[3], a = e[4], l = e[5], f = e[6], u = e[7], d = 0; d < 64; d++) { + if (d < 16) h[d] = 0 | t[r + d];else { + var v = h[d - 15], + p = (v << 25 | v >>> 7) ^ (v << 14 | v >>> 18) ^ v >>> 3, + _ = h[d - 2], + y = (_ << 15 | _ >>> 17) ^ (_ << 13 | _ >>> 19) ^ _ >>> 10; + h[d] = p + h[d - 7] + y + h[d - 16]; + } + var g = a & l ^ ~a & f, + B = i & n ^ i & o ^ n & o, + w = (i << 30 | i >>> 2) ^ (i << 19 | i >>> 13) ^ (i << 10 | i >>> 22), + k = (a << 26 | a >>> 6) ^ (a << 21 | a >>> 11) ^ (a << 7 | a >>> 25), + S = u + k + g + c[d] + h[d], + m = w + B; + u = f, f = l, l = a, a = s + S | 0, s = o, o = n, n = i, i = S + m | 0; + } + e[0] = e[0] + i | 0, e[1] = e[1] + n | 0, e[2] = e[2] + o | 0, e[3] = e[3] + s | 0, e[4] = e[4] + a | 0, e[5] = e[5] + l | 0, e[6] = e[6] + f | 0, e[7] = e[7] + u | 0; + }, + _doFinalize: function _doFinalize() { + var t = this._data, + e = t.words, + i = 8 * this._nDataBytes, + n = 8 * t.sigBytes; + return e[n >>> 5] |= 128 << 24 - n % 32, e[(n + 64 >>> 9 << 4) + 14] = r.floor(i / 4294967296), e[(n + 64 >>> 9 << 4) + 15] = i, t.sigBytes = 4 * e.length, this._process(), this._hash; + }, + clone: function clone() { + var t = o.clone.call(this); + return t._hash = this._hash.clone(), t; + } + }); + e.SHA256 = o._createHelper(l), e.HmacSHA256 = o._createHmacHelper(l); + }(Math), function () { + function r(t) { + return t << 8 & 4278255360 | t >>> 8 & 16711935; + } + var e = t, + i = e.lib, + n = i.WordArray, + o = e.enc; + o.Utf16 = o.Utf16BE = { + stringify: function stringify(t) { + for (var r = t.words, e = t.sigBytes, i = [], n = 0; n < e; n += 2) { + var o = r[n >>> 2] >>> 16 - n % 4 * 8 & 65535; + i.push(String.fromCharCode(o)); + } + return i.join(""); + }, + parse: function parse(t) { + for (var r = t.length, e = [], i = 0; i < r; i++) e[i >>> 1] |= t.charCodeAt(i) << 16 - i % 2 * 16; + return n.create(e, 2 * r); + } + }; + o.Utf16LE = { + stringify: function stringify(t) { + for (var e = t.words, i = t.sigBytes, n = [], o = 0; o < i; o += 2) { + var s = r(e[o >>> 2] >>> 16 - o % 4 * 8 & 65535); + n.push(String.fromCharCode(s)); + } + return n.join(""); + }, + parse: function parse(t) { + for (var e = t.length, i = [], o = 0; o < e; o++) i[o >>> 1] |= r(t.charCodeAt(o) << 16 - o % 2 * 16); + return n.create(i, 2 * e); + } + }; + }(), function () { + if ("function" == typeof ArrayBuffer) { + var r = t, + e = r.lib, + i = e.WordArray, + n = i.init, + o = i.init = function (t) { + if (t instanceof ArrayBuffer && (t = new Uint8Array(t)), (t instanceof Int8Array || "undefined" != typeof Uint8ClampedArray && t instanceof Uint8ClampedArray || t instanceof Int16Array || t instanceof Uint16Array || t instanceof Int32Array || t instanceof Uint32Array || t instanceof Float32Array || t instanceof Float64Array) && (t = new Uint8Array(t.buffer, t.byteOffset, t.byteLength)), t instanceof Uint8Array) { + for (var r = t.byteLength, e = [], i = 0; i < r; i++) e[i >>> 2] |= t[i] << 24 - i % 4 * 8; + n.call(this, e, r); + } else n.apply(this, arguments); + }; + o.prototype = i; + } + }(), function (r) { + function e(t, r, e) { + return t ^ r ^ e; + } + function i(t, r, e) { + return t & r | ~t & e; + } + function n(t, r, e) { + return (t | ~r) ^ e; + } + function o(t, r, e) { + return t & e | r & ~e; + } + function s(t, r, e) { + return t ^ (r | ~e); + } + function a(t, r) { + return t << r | t >>> 32 - r; + } + var c = t, + h = c.lib, + l = h.WordArray, + f = h.Hasher, + u = c.algo, + d = l.create([0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 7, 4, 13, 1, 10, 6, 15, 3, 12, 0, 9, 5, 2, 14, 11, 8, 3, 10, 14, 4, 9, 15, 8, 1, 2, 7, 0, 6, 13, 11, 5, 12, 1, 9, 11, 10, 0, 8, 12, 4, 13, 3, 7, 15, 14, 5, 6, 2, 4, 0, 5, 9, 7, 12, 2, 10, 14, 1, 3, 8, 11, 6, 15, 13]), + v = l.create([5, 14, 7, 0, 9, 2, 11, 4, 13, 6, 15, 8, 1, 10, 3, 12, 6, 11, 3, 7, 0, 13, 5, 10, 14, 15, 8, 12, 4, 9, 1, 2, 15, 5, 1, 3, 7, 14, 6, 9, 11, 8, 12, 2, 10, 0, 4, 13, 8, 6, 4, 1, 3, 11, 15, 0, 5, 12, 2, 13, 9, 7, 10, 14, 12, 15, 10, 4, 1, 5, 8, 7, 6, 2, 13, 14, 0, 3, 9, 11]), + p = l.create([11, 14, 15, 12, 5, 8, 7, 9, 11, 13, 14, 15, 6, 7, 9, 8, 7, 6, 8, 13, 11, 9, 7, 15, 7, 12, 15, 9, 11, 7, 13, 12, 11, 13, 6, 7, 14, 9, 13, 15, 14, 8, 13, 6, 5, 12, 7, 5, 11, 12, 14, 15, 14, 15, 9, 8, 9, 14, 5, 6, 8, 6, 5, 12, 9, 15, 5, 11, 6, 8, 13, 12, 5, 12, 13, 14, 11, 8, 5, 6]), + _ = l.create([8, 9, 9, 11, 13, 15, 15, 5, 7, 7, 8, 11, 14, 14, 12, 6, 9, 13, 15, 7, 12, 8, 9, 11, 7, 7, 12, 7, 6, 15, 13, 11, 9, 7, 15, 11, 8, 6, 6, 14, 12, 13, 5, 14, 13, 13, 7, 5, 15, 5, 8, 11, 14, 14, 6, 14, 6, 9, 12, 9, 12, 5, 15, 8, 8, 5, 12, 9, 12, 5, 14, 6, 8, 13, 6, 5, 15, 13, 11, 11]), + y = l.create([0, 1518500249, 1859775393, 2400959708, 2840853838]), + g = l.create([1352829926, 1548603684, 1836072691, 2053994217, 0]), + B = u.RIPEMD160 = f.extend({ + _doReset: function _doReset() { + this._hash = l.create([1732584193, 4023233417, 2562383102, 271733878, 3285377520]); + }, + _doProcessBlock: function _doProcessBlock(t, r) { + for (var c = 0; c < 16; c++) { + var h = r + c, + l = t[h]; + t[h] = 16711935 & (l << 8 | l >>> 24) | 4278255360 & (l << 24 | l >>> 8); + } + var f, + u, + B, + w, + k, + S, + m, + x, + b, + H, + z = this._hash.words, + A = y.words, + C = g.words, + D = d.words, + R = v.words, + E = p.words, + M = _.words; + S = f = z[0], m = u = z[1], x = B = z[2], b = w = z[3], H = k = z[4]; + for (var F, c = 0; c < 80; c += 1) F = f + t[r + D[c]] | 0, F += c < 16 ? e(u, B, w) + A[0] : c < 32 ? i(u, B, w) + A[1] : c < 48 ? n(u, B, w) + A[2] : c < 64 ? o(u, B, w) + A[3] : s(u, B, w) + A[4], F |= 0, F = a(F, E[c]), F = F + k | 0, f = k, k = w, w = a(B, 10), B = u, u = F, F = S + t[r + R[c]] | 0, F += c < 16 ? s(m, x, b) + C[0] : c < 32 ? o(m, x, b) + C[1] : c < 48 ? n(m, x, b) + C[2] : c < 64 ? i(m, x, b) + C[3] : e(m, x, b) + C[4], F |= 0, F = a(F, M[c]), F = F + H | 0, S = H, H = b, b = a(x, 10), x = m, m = F; + F = z[1] + B + b | 0, z[1] = z[2] + w + H | 0, z[2] = z[3] + k + S | 0, z[3] = z[4] + f + m | 0, z[4] = z[0] + u + x | 0, z[0] = F; + }, + _doFinalize: function _doFinalize() { + var t = this._data, + r = t.words, + e = 8 * this._nDataBytes, + i = 8 * t.sigBytes; + r[i >>> 5] |= 128 << 24 - i % 32, r[(i + 64 >>> 9 << 4) + 14] = 16711935 & (e << 8 | e >>> 24) | 4278255360 & (e << 24 | e >>> 8), t.sigBytes = 4 * (r.length + 1), this._process(); + for (var n = this._hash, o = n.words, s = 0; s < 5; s++) { + var a = o[s]; + o[s] = 16711935 & (a << 8 | a >>> 24) | 4278255360 & (a << 24 | a >>> 8); + } + return n; + }, + clone: function clone() { + var t = f.clone.call(this); + return t._hash = this._hash.clone(), t; + } + }); + c.RIPEMD160 = f._createHelper(B), c.HmacRIPEMD160 = f._createHmacHelper(B); + }(Math), function () { + var r = t, + e = r.lib, + i = e.Base, + n = r.enc, + o = n.Utf8, + s = r.algo; + s.HMAC = i.extend({ + init: function init(t, r) { + t = this._hasher = new t.init(), "string" == typeof r && (r = o.parse(r)); + var e = t.blockSize, + i = 4 * e; + r.sigBytes > i && (r = t.finalize(r)), r.clamp(); + for (var n = this._oKey = r.clone(), s = this._iKey = r.clone(), a = n.words, c = s.words, h = 0; h < e; h++) a[h] ^= 1549556828, c[h] ^= 909522486; + n.sigBytes = s.sigBytes = i, this.reset(); + }, + reset: function reset() { + var t = this._hasher; + t.reset(), t.update(this._iKey); + }, + update: function update(t) { + return this._hasher.update(t), this; + }, + finalize: function finalize(t) { + var r = this._hasher, + e = r.finalize(t); + r.reset(); + var i = r.finalize(this._oKey.clone().concat(e)); + return i; + } + }); + }(), function () { + var r = t, + e = r.lib, + i = e.Base, + n = e.WordArray, + o = r.algo, + s = o.SHA1, + a = o.HMAC, + c = o.PBKDF2 = i.extend({ + cfg: i.extend({ + keySize: 4, + hasher: s, + iterations: 1 + }), + init: function init(t) { + this.cfg = this.cfg.extend(t); + }, + compute: function compute(t, r) { + for (var e = this.cfg, i = a.create(e.hasher, t), o = n.create(), s = n.create([1]), c = o.words, h = s.words, l = e.keySize, f = e.iterations; c.length < l;) { + var u = i.update(r).finalize(s); + i.reset(); + for (var d = u.words, v = d.length, p = u, _ = 1; _ < f; _++) { + p = i.finalize(p), i.reset(); + for (var y = p.words, g = 0; g < v; g++) d[g] ^= y[g]; + } + o.concat(u), h[0]++; + } + return o.sigBytes = 4 * l, o; + } + }); + r.PBKDF2 = function (t, r, e) { + return c.create(e).compute(t, r); + }; + }(), function () { + var r = t, + e = r.lib, + i = e.Base, + n = e.WordArray, + o = r.algo, + s = o.MD5, + a = o.EvpKDF = i.extend({ + cfg: i.extend({ + keySize: 4, + hasher: s, + iterations: 1 + }), + init: function init(t) { + this.cfg = this.cfg.extend(t); + }, + compute: function compute(t, r) { + for (var e = this.cfg, i = e.hasher.create(), o = n.create(), s = o.words, a = e.keySize, c = e.iterations; s.length < a;) { + h && i.update(h); + var h = i.update(t).finalize(r); + i.reset(); + for (var l = 1; l < c; l++) h = i.finalize(h), i.reset(); + o.concat(h); + } + return o.sigBytes = 4 * a, o; + } + }); + r.EvpKDF = function (t, r, e) { + return a.create(e).compute(t, r); + }; + }(), function () { + var r = t, + e = r.lib, + i = e.WordArray, + n = r.algo, + o = n.SHA256, + s = n.SHA224 = o.extend({ + _doReset: function _doReset() { + this._hash = new i.init([3238371032, 914150663, 812702999, 4144912697, 4290775857, 1750603025, 1694076839, 3204075428]); + }, + _doFinalize: function _doFinalize() { + var t = o._doFinalize.call(this); + return t.sigBytes -= 4, t; + } + }); + r.SHA224 = o._createHelper(s), r.HmacSHA224 = o._createHmacHelper(s); + }(), function (r) { + var e = t, + i = e.lib, + n = i.Base, + o = i.WordArray, + s = e.x64 = {}; + s.Word = n.extend({ + init: function init(t, r) { + this.high = t, this.low = r; + } + }), s.WordArray = n.extend({ + init: function init(t, e) { + t = this.words = t || [], e != r ? this.sigBytes = e : this.sigBytes = 8 * t.length; + }, + toX32: function toX32() { + for (var t = this.words, r = t.length, e = [], i = 0; i < r; i++) { + var n = t[i]; + e.push(n.high), e.push(n.low); + } + return o.create(e, this.sigBytes); + }, + clone: function clone() { + for (var t = n.clone.call(this), r = t.words = this.words.slice(0), e = r.length, i = 0; i < e; i++) r[i] = r[i].clone(); + return t; + } + }); + }(), function (r) { + var e = t, + i = e.lib, + n = i.WordArray, + o = i.Hasher, + s = e.x64, + a = s.Word, + c = e.algo, + h = [], + l = [], + f = []; + !function () { + for (var t = 1, r = 0, e = 0; e < 24; e++) { + h[t + 5 * r] = (e + 1) * (e + 2) / 2 % 64; + var i = r % 5, + n = (2 * t + 3 * r) % 5; + t = i, r = n; + } + for (var t = 0; t < 5; t++) for (var r = 0; r < 5; r++) l[t + 5 * r] = r + (2 * t + 3 * r) % 5 * 5; + for (var o = 1, s = 0; s < 24; s++) { + for (var c = 0, u = 0, d = 0; d < 7; d++) { + if (1 & o) { + var v = (1 << d) - 1; + v < 32 ? u ^= 1 << v : c ^= 1 << v - 32; + } + 128 & o ? o = o << 1 ^ 113 : o <<= 1; + } + f[s] = a.create(c, u); + } + }(); + var u = []; + !function () { + for (var t = 0; t < 25; t++) u[t] = a.create(); + }(); + var d = c.SHA3 = o.extend({ + cfg: o.cfg.extend({ + outputLength: 512 + }), + _doReset: function _doReset() { + for (var t = this._state = [], r = 0; r < 25; r++) t[r] = new a.init(); + this.blockSize = (1600 - 2 * this.cfg.outputLength) / 32; + }, + _doProcessBlock: function _doProcessBlock(t, r) { + for (var e = this._state, i = this.blockSize / 2, n = 0; n < i; n++) { + var o = t[r + 2 * n], + s = t[r + 2 * n + 1]; + o = 16711935 & (o << 8 | o >>> 24) | 4278255360 & (o << 24 | o >>> 8), s = 16711935 & (s << 8 | s >>> 24) | 4278255360 & (s << 24 | s >>> 8); + var a = e[n]; + a.high ^= s, a.low ^= o; + } + for (var c = 0; c < 24; c++) { + for (var d = 0; d < 5; d++) { + for (var v = 0, p = 0, _ = 0; _ < 5; _++) { + var a = e[d + 5 * _]; + v ^= a.high, p ^= a.low; + } + var y = u[d]; + y.high = v, y.low = p; + } + for (var d = 0; d < 5; d++) for (var g = u[(d + 4) % 5], B = u[(d + 1) % 5], w = B.high, k = B.low, v = g.high ^ (w << 1 | k >>> 31), p = g.low ^ (k << 1 | w >>> 31), _ = 0; _ < 5; _++) { + var a = e[d + 5 * _]; + a.high ^= v, a.low ^= p; + } + for (var S = 1; S < 25; S++) { + var a = e[S], + m = a.high, + x = a.low, + b = h[S]; + if (b < 32) var v = m << b | x >>> 32 - b, + p = x << b | m >>> 32 - b;else var v = x << b - 32 | m >>> 64 - b, + p = m << b - 32 | x >>> 64 - b; + var H = u[l[S]]; + H.high = v, H.low = p; + } + var z = u[0], + A = e[0]; + z.high = A.high, z.low = A.low; + for (var d = 0; d < 5; d++) for (var _ = 0; _ < 5; _++) { + var S = d + 5 * _, + a = e[S], + C = u[S], + D = u[(d + 1) % 5 + 5 * _], + R = u[(d + 2) % 5 + 5 * _]; + a.high = C.high ^ ~D.high & R.high, a.low = C.low ^ ~D.low & R.low; + } + var a = e[0], + E = f[c]; + a.high ^= E.high, a.low ^= E.low; + } + }, + _doFinalize: function _doFinalize() { + var t = this._data, + e = t.words, + i = (8 * this._nDataBytes, 8 * t.sigBytes), + o = 32 * this.blockSize; + e[i >>> 5] |= 1 << 24 - i % 32, e[(r.ceil((i + 1) / o) * o >>> 5) - 1] |= 128, t.sigBytes = 4 * e.length, this._process(); + for (var s = this._state, a = this.cfg.outputLength / 8, c = a / 8, h = [], l = 0; l < c; l++) { + var f = s[l], + u = f.high, + d = f.low; + u = 16711935 & (u << 8 | u >>> 24) | 4278255360 & (u << 24 | u >>> 8), d = 16711935 & (d << 8 | d >>> 24) | 4278255360 & (d << 24 | d >>> 8), h.push(d), h.push(u); + } + return new n.init(h, a); + }, + clone: function clone() { + for (var t = o.clone.call(this), r = t._state = this._state.slice(0), e = 0; e < 25; e++) r[e] = r[e].clone(); + return t; + } + }); + e.SHA3 = o._createHelper(d), e.HmacSHA3 = o._createHmacHelper(d); + }(Math), function () { + function r() { + return s.create.apply(s, arguments); + } + var e = t, + i = e.lib, + n = i.Hasher, + o = e.x64, + s = o.Word, + a = o.WordArray, + c = e.algo, + h = [r(1116352408, 3609767458), r(1899447441, 602891725), r(3049323471, 3964484399), r(3921009573, 2173295548), r(961987163, 4081628472), r(1508970993, 3053834265), r(2453635748, 2937671579), r(2870763221, 3664609560), r(3624381080, 2734883394), r(310598401, 1164996542), r(607225278, 1323610764), r(1426881987, 3590304994), r(1925078388, 4068182383), r(2162078206, 991336113), r(2614888103, 633803317), r(3248222580, 3479774868), r(3835390401, 2666613458), r(4022224774, 944711139), r(264347078, 2341262773), r(604807628, 2007800933), r(770255983, 1495990901), r(1249150122, 1856431235), r(1555081692, 3175218132), r(1996064986, 2198950837), r(2554220882, 3999719339), r(2821834349, 766784016), r(2952996808, 2566594879), r(3210313671, 3203337956), r(3336571891, 1034457026), r(3584528711, 2466948901), r(113926993, 3758326383), r(338241895, 168717936), r(666307205, 1188179964), r(773529912, 1546045734), r(1294757372, 1522805485), r(1396182291, 2643833823), r(1695183700, 2343527390), r(1986661051, 1014477480), r(2177026350, 1206759142), r(2456956037, 344077627), r(2730485921, 1290863460), r(2820302411, 3158454273), r(3259730800, 3505952657), r(3345764771, 106217008), r(3516065817, 3606008344), r(3600352804, 1432725776), r(4094571909, 1467031594), r(275423344, 851169720), r(430227734, 3100823752), r(506948616, 1363258195), r(659060556, 3750685593), r(883997877, 3785050280), r(958139571, 3318307427), r(1322822218, 3812723403), r(1537002063, 2003034995), r(1747873779, 3602036899), r(1955562222, 1575990012), r(2024104815, 1125592928), r(2227730452, 2716904306), r(2361852424, 442776044), r(2428436474, 593698344), r(2756734187, 3733110249), r(3204031479, 2999351573), r(3329325298, 3815920427), r(3391569614, 3928383900), r(3515267271, 566280711), r(3940187606, 3454069534), r(4118630271, 4000239992), r(116418474, 1914138554), r(174292421, 2731055270), r(289380356, 3203993006), r(460393269, 320620315), r(685471733, 587496836), r(852142971, 1086792851), r(1017036298, 365543100), r(1126000580, 2618297676), r(1288033470, 3409855158), r(1501505948, 4234509866), r(1607167915, 987167468), r(1816402316, 1246189591)], + l = []; + !function () { + for (var t = 0; t < 80; t++) l[t] = r(); + }(); + var f = c.SHA512 = n.extend({ + _doReset: function _doReset() { + this._hash = new a.init([new s.init(1779033703, 4089235720), new s.init(3144134277, 2227873595), new s.init(1013904242, 4271175723), new s.init(2773480762, 1595750129), new s.init(1359893119, 2917565137), new s.init(2600822924, 725511199), new s.init(528734635, 4215389547), new s.init(1541459225, 327033209)]); + }, + _doProcessBlock: function _doProcessBlock(t, r) { + for (var e = this._hash.words, i = e[0], n = e[1], o = e[2], s = e[3], a = e[4], c = e[5], f = e[6], u = e[7], d = i.high, v = i.low, p = n.high, _ = n.low, y = o.high, g = o.low, B = s.high, w = s.low, k = a.high, S = a.low, m = c.high, x = c.low, b = f.high, H = f.low, z = u.high, A = u.low, C = d, D = v, R = p, E = _, M = y, F = g, P = B, W = w, O = k, U = S, I = m, K = x, X = b, L = H, j = z, N = A, T = 0; T < 80; T++) { + var Z = l[T]; + if (T < 16) var q = Z.high = 0 | t[r + 2 * T], + G = Z.low = 0 | t[r + 2 * T + 1];else { + var J = l[T - 15], + $ = J.high, + Q = J.low, + V = ($ >>> 1 | Q << 31) ^ ($ >>> 8 | Q << 24) ^ $ >>> 7, + Y = (Q >>> 1 | $ << 31) ^ (Q >>> 8 | $ << 24) ^ (Q >>> 7 | $ << 25), + tt = l[T - 2], + rt = tt.high, + et = tt.low, + it = (rt >>> 19 | et << 13) ^ (rt << 3 | et >>> 29) ^ rt >>> 6, + nt = (et >>> 19 | rt << 13) ^ (et << 3 | rt >>> 29) ^ (et >>> 6 | rt << 26), + ot = l[T - 7], + st = ot.high, + at = ot.low, + ct = l[T - 16], + ht = ct.high, + lt = ct.low, + G = Y + at, + q = V + st + (G >>> 0 < Y >>> 0 ? 1 : 0), + G = G + nt, + q = q + it + (G >>> 0 < nt >>> 0 ? 1 : 0), + G = G + lt, + q = q + ht + (G >>> 0 < lt >>> 0 ? 1 : 0); + Z.high = q, Z.low = G; + } + var ft = O & I ^ ~O & X, + ut = U & K ^ ~U & L, + dt = C & R ^ C & M ^ R & M, + vt = D & E ^ D & F ^ E & F, + pt = (C >>> 28 | D << 4) ^ (C << 30 | D >>> 2) ^ (C << 25 | D >>> 7), + _t = (D >>> 28 | C << 4) ^ (D << 30 | C >>> 2) ^ (D << 25 | C >>> 7), + yt = (O >>> 14 | U << 18) ^ (O >>> 18 | U << 14) ^ (O << 23 | U >>> 9), + gt = (U >>> 14 | O << 18) ^ (U >>> 18 | O << 14) ^ (U << 23 | O >>> 9), + Bt = h[T], + wt = Bt.high, + kt = Bt.low, + St = N + gt, + mt = j + yt + (St >>> 0 < N >>> 0 ? 1 : 0), + St = St + ut, + mt = mt + ft + (St >>> 0 < ut >>> 0 ? 1 : 0), + St = St + kt, + mt = mt + wt + (St >>> 0 < kt >>> 0 ? 1 : 0), + St = St + G, + mt = mt + q + (St >>> 0 < G >>> 0 ? 1 : 0), + xt = _t + vt, + bt = pt + dt + (xt >>> 0 < _t >>> 0 ? 1 : 0); + j = X, N = L, X = I, L = K, I = O, K = U, U = W + St | 0, O = P + mt + (U >>> 0 < W >>> 0 ? 1 : 0) | 0, P = M, W = F, M = R, F = E, R = C, E = D, D = St + xt | 0, C = mt + bt + (D >>> 0 < St >>> 0 ? 1 : 0) | 0; + } + v = i.low = v + D, i.high = d + C + (v >>> 0 < D >>> 0 ? 1 : 0), _ = n.low = _ + E, n.high = p + R + (_ >>> 0 < E >>> 0 ? 1 : 0), g = o.low = g + F, o.high = y + M + (g >>> 0 < F >>> 0 ? 1 : 0), w = s.low = w + W, s.high = B + P + (w >>> 0 < W >>> 0 ? 1 : 0), S = a.low = S + U, a.high = k + O + (S >>> 0 < U >>> 0 ? 1 : 0), x = c.low = x + K, c.high = m + I + (x >>> 0 < K >>> 0 ? 1 : 0), H = f.low = H + L, f.high = b + X + (H >>> 0 < L >>> 0 ? 1 : 0), A = u.low = A + N, u.high = z + j + (A >>> 0 < N >>> 0 ? 1 : 0); + }, + _doFinalize: function _doFinalize() { + var t = this._data, + r = t.words, + e = 8 * this._nDataBytes, + i = 8 * t.sigBytes; + r[i >>> 5] |= 128 << 24 - i % 32, r[(i + 128 >>> 10 << 5) + 30] = Math.floor(e / 4294967296), r[(i + 128 >>> 10 << 5) + 31] = e, t.sigBytes = 4 * r.length, this._process(); + var n = this._hash.toX32(); + return n; + }, + clone: function clone() { + var t = n.clone.call(this); + return t._hash = this._hash.clone(), t; + }, + blockSize: 32 + }); + e.SHA512 = n._createHelper(f), e.HmacSHA512 = n._createHmacHelper(f); + }(), function () { + var r = t, + e = r.x64, + i = e.Word, + n = e.WordArray, + o = r.algo, + s = o.SHA512, + a = o.SHA384 = s.extend({ + _doReset: function _doReset() { + this._hash = new n.init([new i.init(3418070365, 3238371032), new i.init(1654270250, 914150663), new i.init(2438529370, 812702999), new i.init(355462360, 4144912697), new i.init(1731405415, 4290775857), new i.init(2394180231, 1750603025), new i.init(3675008525, 1694076839), new i.init(1203062813, 3204075428)]); + }, + _doFinalize: function _doFinalize() { + var t = s._doFinalize.call(this); + return t.sigBytes -= 16, t; + } + }); + r.SHA384 = s._createHelper(a), r.HmacSHA384 = s._createHmacHelper(a); + }(), t.lib.Cipher || function (r) { + var e = t, + i = e.lib, + n = i.Base, + o = i.WordArray, + s = i.BufferedBlockAlgorithm, + a = e.enc, + c = (a.Utf8, a.Base64), + h = e.algo, + l = h.EvpKDF, + f = i.Cipher = s.extend({ + cfg: n.extend(), + createEncryptor: function createEncryptor(t, r) { + return this.create(this._ENC_XFORM_MODE, t, r); + }, + createDecryptor: function createDecryptor(t, r) { + return this.create(this._DEC_XFORM_MODE, t, r); + }, + init: function init(t, r, e) { + this.cfg = this.cfg.extend(e), this._xformMode = t, this._key = r, this.reset(); + }, + reset: function reset() { + s.reset.call(this), this._doReset(); + }, + process: function process(t) { + return this._append(t), this._process(); + }, + finalize: function finalize(t) { + t && this._append(t); + var r = this._doFinalize(); + return r; + }, + keySize: 4, + ivSize: 4, + _ENC_XFORM_MODE: 1, + _DEC_XFORM_MODE: 2, + _createHelper: function () { + function t(t) { + return "string" == typeof t ? m : w; + } + return function (r) { + return { + encrypt: function encrypt(e, i, n) { + return t(i).encrypt(r, e, i, n); + }, + decrypt: function decrypt(e, i, n) { + return t(i).decrypt(r, e, i, n); + } + }; + }; + }() + }), + u = (i.StreamCipher = f.extend({ + _doFinalize: function _doFinalize() { + var t = this._process(!0); + return t; + }, + blockSize: 1 + }), e.mode = {}), + d = i.BlockCipherMode = n.extend({ + createEncryptor: function createEncryptor(t, r) { + return this.Encryptor.create(t, r); + }, + createDecryptor: function createDecryptor(t, r) { + return this.Decryptor.create(t, r); + }, + init: function init(t, r) { + this._cipher = t, this._iv = r; + } + }), + v = u.CBC = function () { + function t(t, e, i) { + var n = this._iv; + if (n) { + var o = n; + this._iv = r; + } else var o = this._prevBlock; + for (var s = 0; s < i; s++) t[e + s] ^= o[s]; + } + var e = d.extend(); + return e.Encryptor = e.extend({ + processBlock: function processBlock(r, e) { + var i = this._cipher, + n = i.blockSize; + t.call(this, r, e, n), i.encryptBlock(r, e), this._prevBlock = r.slice(e, e + n); + } + }), e.Decryptor = e.extend({ + processBlock: function processBlock(r, e) { + var i = this._cipher, + n = i.blockSize, + o = r.slice(e, e + n); + i.decryptBlock(r, e), t.call(this, r, e, n), this._prevBlock = o; + } + }), e; + }(), + p = e.pad = {}, + _ = p.Pkcs7 = { + pad: function pad(t, r) { + for (var e = 4 * r, i = e - t.sigBytes % e, n = i << 24 | i << 16 | i << 8 | i, s = [], a = 0; a < i; a += 4) s.push(n); + var c = o.create(s, i); + t.concat(c); + }, + unpad: function unpad(t) { + var r = 255 & t.words[t.sigBytes - 1 >>> 2]; + t.sigBytes -= r; + } + }, + y = (i.BlockCipher = f.extend({ + cfg: f.cfg.extend({ + mode: v, + padding: _ + }), + reset: function reset() { + f.reset.call(this); + var t = this.cfg, + r = t.iv, + e = t.mode; + if (this._xformMode == this._ENC_XFORM_MODE) var i = e.createEncryptor;else { + var i = e.createDecryptor; + this._minBufferSize = 1; + } + this._mode && this._mode.__creator == i ? this._mode.init(this, r && r.words) : (this._mode = i.call(e, this, r && r.words), this._mode.__creator = i); + }, + _doProcessBlock: function _doProcessBlock(t, r) { + this._mode.processBlock(t, r); + }, + _doFinalize: function _doFinalize() { + var t = this.cfg.padding; + if (this._xformMode == this._ENC_XFORM_MODE) { + t.pad(this._data, this.blockSize); + var r = this._process(!0); + } else { + var r = this._process(!0); + t.unpad(r); + } + return r; + }, + blockSize: 4 + }), i.CipherParams = n.extend({ + init: function init(t) { + this.mixIn(t); + }, + toString: function toString(t) { + return (t || this.formatter).stringify(this); + } + })), + g = e.format = {}, + B = g.OpenSSL = { + stringify: function stringify(t) { + var r = t.ciphertext, + e = t.salt; + if (e) var i = o.create([1398893684, 1701076831]).concat(e).concat(r);else var i = r; + return i.toString(c); + }, + parse: function parse(t) { + var r = c.parse(t), + e = r.words; + if (1398893684 == e[0] && 1701076831 == e[1]) { + var i = o.create(e.slice(2, 4)); + e.splice(0, 4), r.sigBytes -= 16; + } + return y.create({ + ciphertext: r, + salt: i + }); + } + }, + w = i.SerializableCipher = n.extend({ + cfg: n.extend({ + format: B + }), + encrypt: function encrypt(t, r, e, i) { + i = this.cfg.extend(i); + var n = t.createEncryptor(e, i), + o = n.finalize(r), + s = n.cfg; + return y.create({ + ciphertext: o, + key: e, + iv: s.iv, + algorithm: t, + mode: s.mode, + padding: s.padding, + blockSize: t.blockSize, + formatter: i.format + }); + }, + decrypt: function decrypt(t, r, e, i) { + i = this.cfg.extend(i), r = this._parse(r, i.format); + var n = t.createDecryptor(e, i).finalize(r.ciphertext); + return n; + }, + _parse: function _parse(t, r) { + return "string" == typeof t ? r.parse(t, this) : t; + } + }), + k = e.kdf = {}, + S = k.OpenSSL = { + execute: function execute(t, r, e, i) { + i || (i = o.random(8)); + var n = l.create({ + keySize: r + e + }).compute(t, i), + s = o.create(n.words.slice(r), 4 * e); + return n.sigBytes = 4 * r, y.create({ + key: n, + iv: s, + salt: i + }); + } + }, + m = i.PasswordBasedCipher = w.extend({ + cfg: w.cfg.extend({ + kdf: S + }), + encrypt: function encrypt(t, r, e, i) { + i = this.cfg.extend(i); + var n = i.kdf.execute(e, t.keySize, t.ivSize); + i.iv = n.iv; + var o = w.encrypt.call(this, t, r, n.key, i); + return o.mixIn(n), o; + }, + decrypt: function decrypt(t, r, e, i) { + i = this.cfg.extend(i), r = this._parse(r, i.format); + var n = i.kdf.execute(e, t.keySize, t.ivSize, r.salt); + i.iv = n.iv; + var o = w.decrypt.call(this, t, r, n.key, i); + return o; + } + }); + }(), t.mode.CFB = function () { + function r(t, r, e, i) { + var n = this._iv; + if (n) { + var o = n.slice(0); + this._iv = void 0; + } else var o = this._prevBlock; + i.encryptBlock(o, 0); + for (var s = 0; s < e; s++) t[r + s] ^= o[s]; + } + var e = t.lib.BlockCipherMode.extend(); + return e.Encryptor = e.extend({ + processBlock: function processBlock(t, e) { + var i = this._cipher, + n = i.blockSize; + r.call(this, t, e, n, i), this._prevBlock = t.slice(e, e + n); + } + }), e.Decryptor = e.extend({ + processBlock: function processBlock(t, e) { + var i = this._cipher, + n = i.blockSize, + o = t.slice(e, e + n); + r.call(this, t, e, n, i), this._prevBlock = o; + } + }), e; + }(), t.mode.ECB = function () { + var r = t.lib.BlockCipherMode.extend(); + return r.Encryptor = r.extend({ + processBlock: function processBlock(t, r) { + this._cipher.encryptBlock(t, r); + } + }), r.Decryptor = r.extend({ + processBlock: function processBlock(t, r) { + this._cipher.decryptBlock(t, r); + } + }), r; + }(), t.pad.AnsiX923 = { + pad: function pad(t, r) { + var e = t.sigBytes, + i = 4 * r, + n = i - e % i, + o = e + n - 1; + t.clamp(), t.words[o >>> 2] |= n << 24 - o % 4 * 8, t.sigBytes += n; + }, + unpad: function unpad(t) { + var r = 255 & t.words[t.sigBytes - 1 >>> 2]; + t.sigBytes -= r; + } + }, t.pad.Iso10126 = { + pad: function pad(r, e) { + var i = 4 * e, + n = i - r.sigBytes % i; + r.concat(t.lib.WordArray.random(n - 1)).concat(t.lib.WordArray.create([n << 24], 1)); + }, + unpad: function unpad(t) { + var r = 255 & t.words[t.sigBytes - 1 >>> 2]; + t.sigBytes -= r; + } + }, t.pad.Iso97971 = { + pad: function pad(r, e) { + r.concat(t.lib.WordArray.create([2147483648], 1)), t.pad.ZeroPadding.pad(r, e); + }, + unpad: function unpad(r) { + t.pad.ZeroPadding.unpad(r), r.sigBytes--; + } + }, t.mode.OFB = function () { + var r = t.lib.BlockCipherMode.extend(), + e = r.Encryptor = r.extend({ + processBlock: function processBlock(t, r) { + var e = this._cipher, + i = e.blockSize, + n = this._iv, + o = this._keystream; + n && (o = this._keystream = n.slice(0), this._iv = void 0), e.encryptBlock(o, 0); + for (var s = 0; s < i; s++) t[r + s] ^= o[s]; + } + }); + return r.Decryptor = e, r; + }(), t.pad.NoPadding = { + pad: function pad() {}, + unpad: function unpad() {} + }, function (r) { + var e = t, + i = e.lib, + n = i.CipherParams, + o = e.enc, + s = o.Hex, + a = e.format; + a.Hex = { + stringify: function stringify(t) { + return t.ciphertext.toString(s); + }, + parse: function parse(t) { + var r = s.parse(t); + return n.create({ + ciphertext: r + }); + } + }; + }(), function () { + var r = t, + e = r.lib, + i = e.BlockCipher, + n = r.algo, + o = [], + s = [], + a = [], + c = [], + h = [], + l = [], + f = [], + u = [], + d = [], + v = []; + !function () { + for (var t = [], r = 0; r < 256; r++) r < 128 ? t[r] = r << 1 : t[r] = r << 1 ^ 283; + for (var e = 0, i = 0, r = 0; r < 256; r++) { + var n = i ^ i << 1 ^ i << 2 ^ i << 3 ^ i << 4; + n = n >>> 8 ^ 255 & n ^ 99, o[e] = n, s[n] = e; + var p = t[e], + _ = t[p], + y = t[_], + g = 257 * t[n] ^ 16843008 * n; + a[e] = g << 24 | g >>> 8, c[e] = g << 16 | g >>> 16, h[e] = g << 8 | g >>> 24, l[e] = g; + var g = 16843009 * y ^ 65537 * _ ^ 257 * p ^ 16843008 * e; + f[n] = g << 24 | g >>> 8, u[n] = g << 16 | g >>> 16, d[n] = g << 8 | g >>> 24, v[n] = g, e ? (e = p ^ t[t[t[y ^ p]]], i ^= t[t[i]]) : e = i = 1; + } + }(); + var p = [0, 1, 2, 4, 8, 16, 32, 64, 128, 27, 54], + _ = n.AES = i.extend({ + _doReset: function _doReset() { + if (!this._nRounds || this._keyPriorReset !== this._key) { + for (var t = this._keyPriorReset = this._key, r = t.words, e = t.sigBytes / 4, i = this._nRounds = e + 6, n = 4 * (i + 1), s = this._keySchedule = [], a = 0; a < n; a++) if (a < e) s[a] = r[a];else { + var c = s[a - 1]; + a % e ? e > 6 && a % e == 4 && (c = o[c >>> 24] << 24 | o[c >>> 16 & 255] << 16 | o[c >>> 8 & 255] << 8 | o[255 & c]) : (c = c << 8 | c >>> 24, c = o[c >>> 24] << 24 | o[c >>> 16 & 255] << 16 | o[c >>> 8 & 255] << 8 | o[255 & c], c ^= p[a / e | 0] << 24), s[a] = s[a - e] ^ c; + } + for (var h = this._invKeySchedule = [], l = 0; l < n; l++) { + var a = n - l; + if (l % 4) var c = s[a];else var c = s[a - 4]; + l < 4 || a <= 4 ? h[l] = c : h[l] = f[o[c >>> 24]] ^ u[o[c >>> 16 & 255]] ^ d[o[c >>> 8 & 255]] ^ v[o[255 & c]]; + } + } + }, + encryptBlock: function encryptBlock(t, r) { + this._doCryptBlock(t, r, this._keySchedule, a, c, h, l, o); + }, + decryptBlock: function decryptBlock(t, r) { + var e = t[r + 1]; + t[r + 1] = t[r + 3], t[r + 3] = e, this._doCryptBlock(t, r, this._invKeySchedule, f, u, d, v, s); + var e = t[r + 1]; + t[r + 1] = t[r + 3], t[r + 3] = e; + }, + _doCryptBlock: function _doCryptBlock(t, r, e, i, n, o, s, a) { + for (var c = this._nRounds, h = t[r] ^ e[0], l = t[r + 1] ^ e[1], f = t[r + 2] ^ e[2], u = t[r + 3] ^ e[3], d = 4, v = 1; v < c; v++) { + var p = i[h >>> 24] ^ n[l >>> 16 & 255] ^ o[f >>> 8 & 255] ^ s[255 & u] ^ e[d++], + _ = i[l >>> 24] ^ n[f >>> 16 & 255] ^ o[u >>> 8 & 255] ^ s[255 & h] ^ e[d++], + y = i[f >>> 24] ^ n[u >>> 16 & 255] ^ o[h >>> 8 & 255] ^ s[255 & l] ^ e[d++], + g = i[u >>> 24] ^ n[h >>> 16 & 255] ^ o[l >>> 8 & 255] ^ s[255 & f] ^ e[d++]; + h = p, l = _, f = y, u = g; + } + var p = (a[h >>> 24] << 24 | a[l >>> 16 & 255] << 16 | a[f >>> 8 & 255] << 8 | a[255 & u]) ^ e[d++], + _ = (a[l >>> 24] << 24 | a[f >>> 16 & 255] << 16 | a[u >>> 8 & 255] << 8 | a[255 & h]) ^ e[d++], + y = (a[f >>> 24] << 24 | a[u >>> 16 & 255] << 16 | a[h >>> 8 & 255] << 8 | a[255 & l]) ^ e[d++], + g = (a[u >>> 24] << 24 | a[h >>> 16 & 255] << 16 | a[l >>> 8 & 255] << 8 | a[255 & f]) ^ e[d++]; + t[r] = p, t[r + 1] = _, t[r + 2] = y, t[r + 3] = g; + }, + keySize: 8 + }); + r.AES = i._createHelper(_); + }(), function () { + function r(t, r) { + var e = (this._lBlock >>> t ^ this._rBlock) & r; + this._rBlock ^= e, this._lBlock ^= e << t; + } + function e(t, r) { + var e = (this._rBlock >>> t ^ this._lBlock) & r; + this._lBlock ^= e, this._rBlock ^= e << t; + } + var i = t, + n = i.lib, + o = n.WordArray, + s = n.BlockCipher, + a = i.algo, + c = [57, 49, 41, 33, 25, 17, 9, 1, 58, 50, 42, 34, 26, 18, 10, 2, 59, 51, 43, 35, 27, 19, 11, 3, 60, 52, 44, 36, 63, 55, 47, 39, 31, 23, 15, 7, 62, 54, 46, 38, 30, 22, 14, 6, 61, 53, 45, 37, 29, 21, 13, 5, 28, 20, 12, 4], + h = [14, 17, 11, 24, 1, 5, 3, 28, 15, 6, 21, 10, 23, 19, 12, 4, 26, 8, 16, 7, 27, 20, 13, 2, 41, 52, 31, 37, 47, 55, 30, 40, 51, 45, 33, 48, 44, 49, 39, 56, 34, 53, 46, 42, 50, 36, 29, 32], + l = [1, 2, 4, 6, 8, 10, 12, 14, 15, 17, 19, 21, 23, 25, 27, 28], + f = [{ + 0: 8421888, + 268435456: 32768, + 536870912: 8421378, + 805306368: 2, + 1073741824: 512, + 1342177280: 8421890, + 1610612736: 8389122, + 1879048192: 8388608, + 2147483648: 514, + 2415919104: 8389120, + 2684354560: 33280, + 2952790016: 8421376, + 3221225472: 32770, + 3489660928: 8388610, + 3758096384: 0, + 4026531840: 33282, + 134217728: 0, + 402653184: 8421890, + 671088640: 33282, + 939524096: 32768, + 1207959552: 8421888, + 1476395008: 512, + 1744830464: 8421378, + 2013265920: 2, + 2281701376: 8389120, + 2550136832: 33280, + 2818572288: 8421376, + 3087007744: 8389122, + 3355443200: 8388610, + 3623878656: 32770, + 3892314112: 514, + 4160749568: 8388608, + 1: 32768, + 268435457: 2, + 536870913: 8421888, + 805306369: 8388608, + 1073741825: 8421378, + 1342177281: 33280, + 1610612737: 512, + 1879048193: 8389122, + 2147483649: 8421890, + 2415919105: 8421376, + 2684354561: 8388610, + 2952790017: 33282, + 3221225473: 514, + 3489660929: 8389120, + 3758096385: 32770, + 4026531841: 0, + 134217729: 8421890, + 402653185: 8421376, + 671088641: 8388608, + 939524097: 512, + 1207959553: 32768, + 1476395009: 8388610, + 1744830465: 2, + 2013265921: 33282, + 2281701377: 32770, + 2550136833: 8389122, + 2818572289: 514, + 3087007745: 8421888, + 3355443201: 8389120, + 3623878657: 0, + 3892314113: 33280, + 4160749569: 8421378 + }, { + 0: 1074282512, + 16777216: 16384, + 33554432: 524288, + 50331648: 1074266128, + 67108864: 1073741840, + 83886080: 1074282496, + 100663296: 1073758208, + 117440512: 16, + 134217728: 540672, + 150994944: 1073758224, + 167772160: 1073741824, + 184549376: 540688, + 201326592: 524304, + 218103808: 0, + 234881024: 16400, + 251658240: 1074266112, + 8388608: 1073758208, + 25165824: 540688, + 41943040: 16, + 58720256: 1073758224, + 75497472: 1074282512, + 92274688: 1073741824, + 109051904: 524288, + 125829120: 1074266128, + 142606336: 524304, + 159383552: 0, + 176160768: 16384, + 192937984: 1074266112, + 209715200: 1073741840, + 226492416: 540672, + 243269632: 1074282496, + 260046848: 16400, + 268435456: 0, + 285212672: 1074266128, + 301989888: 1073758224, + 318767104: 1074282496, + 335544320: 1074266112, + 352321536: 16, + 369098752: 540688, + 385875968: 16384, + 402653184: 16400, + 419430400: 524288, + 436207616: 524304, + 452984832: 1073741840, + 469762048: 540672, + 486539264: 1073758208, + 503316480: 1073741824, + 520093696: 1074282512, + 276824064: 540688, + 293601280: 524288, + 310378496: 1074266112, + 327155712: 16384, + 343932928: 1073758208, + 360710144: 1074282512, + 377487360: 16, + 394264576: 1073741824, + 411041792: 1074282496, + 427819008: 1073741840, + 444596224: 1073758224, + 461373440: 524304, + 478150656: 0, + 494927872: 16400, + 511705088: 1074266128, + 528482304: 540672 + }, { + 0: 260, + 1048576: 0, + 2097152: 67109120, + 3145728: 65796, + 4194304: 65540, + 5242880: 67108868, + 6291456: 67174660, + 7340032: 67174400, + 8388608: 67108864, + 9437184: 67174656, + 10485760: 65792, + 11534336: 67174404, + 12582912: 67109124, + 13631488: 65536, + 14680064: 4, + 15728640: 256, + 524288: 67174656, + 1572864: 67174404, + 2621440: 0, + 3670016: 67109120, + 4718592: 67108868, + 5767168: 65536, + 6815744: 65540, + 7864320: 260, + 8912896: 4, + 9961472: 256, + 11010048: 67174400, + 12058624: 65796, + 13107200: 65792, + 14155776: 67109124, + 15204352: 67174660, + 16252928: 67108864, + 16777216: 67174656, + 17825792: 65540, + 18874368: 65536, + 19922944: 67109120, + 20971520: 256, + 22020096: 67174660, + 23068672: 67108868, + 24117248: 0, + 25165824: 67109124, + 26214400: 67108864, + 27262976: 4, + 28311552: 65792, + 29360128: 67174400, + 30408704: 260, + 31457280: 65796, + 32505856: 67174404, + 17301504: 67108864, + 18350080: 260, + 19398656: 67174656, + 20447232: 0, + 21495808: 65540, + 22544384: 67109120, + 23592960: 256, + 24641536: 67174404, + 25690112: 65536, + 26738688: 67174660, + 27787264: 65796, + 28835840: 67108868, + 29884416: 67109124, + 30932992: 67174400, + 31981568: 4, + 33030144: 65792 + }, { + 0: 2151682048, + 65536: 2147487808, + 131072: 4198464, + 196608: 2151677952, + 262144: 0, + 327680: 4198400, + 393216: 2147483712, + 458752: 4194368, + 524288: 2147483648, + 589824: 4194304, + 655360: 64, + 720896: 2147487744, + 786432: 2151678016, + 851968: 4160, + 917504: 4096, + 983040: 2151682112, + 32768: 2147487808, + 98304: 64, + 163840: 2151678016, + 229376: 2147487744, + 294912: 4198400, + 360448: 2151682112, + 425984: 0, + 491520: 2151677952, + 557056: 4096, + 622592: 2151682048, + 688128: 4194304, + 753664: 4160, + 819200: 2147483648, + 884736: 4194368, + 950272: 4198464, + 1015808: 2147483712, + 1048576: 4194368, + 1114112: 4198400, + 1179648: 2147483712, + 1245184: 0, + 1310720: 4160, + 1376256: 2151678016, + 1441792: 2151682048, + 1507328: 2147487808, + 1572864: 2151682112, + 1638400: 2147483648, + 1703936: 2151677952, + 1769472: 4198464, + 1835008: 2147487744, + 1900544: 4194304, + 1966080: 64, + 2031616: 4096, + 1081344: 2151677952, + 1146880: 2151682112, + 1212416: 0, + 1277952: 4198400, + 1343488: 4194368, + 1409024: 2147483648, + 1474560: 2147487808, + 1540096: 64, + 1605632: 2147483712, + 1671168: 4096, + 1736704: 2147487744, + 1802240: 2151678016, + 1867776: 4160, + 1933312: 2151682048, + 1998848: 4194304, + 2064384: 4198464 + }, { + 0: 128, + 4096: 17039360, + 8192: 262144, + 12288: 536870912, + 16384: 537133184, + 20480: 16777344, + 24576: 553648256, + 28672: 262272, + 32768: 16777216, + 36864: 537133056, + 40960: 536871040, + 45056: 553910400, + 49152: 553910272, + 53248: 0, + 57344: 17039488, + 61440: 553648128, + 2048: 17039488, + 6144: 553648256, + 10240: 128, + 14336: 17039360, + 18432: 262144, + 22528: 537133184, + 26624: 553910272, + 30720: 536870912, + 34816: 537133056, + 38912: 0, + 43008: 553910400, + 47104: 16777344, + 51200: 536871040, + 55296: 553648128, + 59392: 16777216, + 63488: 262272, + 65536: 262144, + 69632: 128, + 73728: 536870912, + 77824: 553648256, + 81920: 16777344, + 86016: 553910272, + 90112: 537133184, + 94208: 16777216, + 98304: 553910400, + 102400: 553648128, + 106496: 17039360, + 110592: 537133056, + 114688: 262272, + 118784: 536871040, + 122880: 0, + 126976: 17039488, + 67584: 553648256, + 71680: 16777216, + 75776: 17039360, + 79872: 537133184, + 83968: 536870912, + 88064: 17039488, + 92160: 128, + 96256: 553910272, + 100352: 262272, + 104448: 553910400, + 108544: 0, + 112640: 553648128, + 116736: 16777344, + 120832: 262144, + 124928: 537133056, + 129024: 536871040 + }, { + 0: 268435464, + 256: 8192, + 512: 270532608, + 768: 270540808, + 1024: 268443648, + 1280: 2097152, + 1536: 2097160, + 1792: 268435456, + 2048: 0, + 2304: 268443656, + 2560: 2105344, + 2816: 8, + 3072: 270532616, + 3328: 2105352, + 3584: 8200, + 3840: 270540800, + 128: 270532608, + 384: 270540808, + 640: 8, + 896: 2097152, + 1152: 2105352, + 1408: 268435464, + 1664: 268443648, + 1920: 8200, + 2176: 2097160, + 2432: 8192, + 2688: 268443656, + 2944: 270532616, + 3200: 0, + 3456: 270540800, + 3712: 2105344, + 3968: 268435456, + 4096: 268443648, + 4352: 270532616, + 4608: 270540808, + 4864: 8200, + 5120: 2097152, + 5376: 268435456, + 5632: 268435464, + 5888: 2105344, + 6144: 2105352, + 6400: 0, + 6656: 8, + 6912: 270532608, + 7168: 8192, + 7424: 268443656, + 7680: 270540800, + 7936: 2097160, + 4224: 8, + 4480: 2105344, + 4736: 2097152, + 4992: 268435464, + 5248: 268443648, + 5504: 8200, + 5760: 270540808, + 6016: 270532608, + 6272: 270540800, + 6528: 270532616, + 6784: 8192, + 7040: 2105352, + 7296: 2097160, + 7552: 0, + 7808: 268435456, + 8064: 268443656 + }, { + 0: 1048576, + 16: 33555457, + 32: 1024, + 48: 1049601, + 64: 34604033, + 80: 0, + 96: 1, + 112: 34603009, + 128: 33555456, + 144: 1048577, + 160: 33554433, + 176: 34604032, + 192: 34603008, + 208: 1025, + 224: 1049600, + 240: 33554432, + 8: 34603009, + 24: 0, + 40: 33555457, + 56: 34604032, + 72: 1048576, + 88: 33554433, + 104: 33554432, + 120: 1025, + 136: 1049601, + 152: 33555456, + 168: 34603008, + 184: 1048577, + 200: 1024, + 216: 34604033, + 232: 1, + 248: 1049600, + 256: 33554432, + 272: 1048576, + 288: 33555457, + 304: 34603009, + 320: 1048577, + 336: 33555456, + 352: 34604032, + 368: 1049601, + 384: 1025, + 400: 34604033, + 416: 1049600, + 432: 1, + 448: 0, + 464: 34603008, + 480: 33554433, + 496: 1024, + 264: 1049600, + 280: 33555457, + 296: 34603009, + 312: 1, + 328: 33554432, + 344: 1048576, + 360: 1025, + 376: 34604032, + 392: 33554433, + 408: 34603008, + 424: 0, + 440: 34604033, + 456: 1049601, + 472: 1024, + 488: 33555456, + 504: 1048577 + }, { + 0: 134219808, + 1: 131072, + 2: 134217728, + 3: 32, + 4: 131104, + 5: 134350880, + 6: 134350848, + 7: 2048, + 8: 134348800, + 9: 134219776, + 10: 133120, + 11: 134348832, + 12: 2080, + 13: 0, + 14: 134217760, + 15: 133152, + 2147483648: 2048, + 2147483649: 134350880, + 2147483650: 134219808, + 2147483651: 134217728, + 2147483652: 134348800, + 2147483653: 133120, + 2147483654: 133152, + 2147483655: 32, + 2147483656: 134217760, + 2147483657: 2080, + 2147483658: 131104, + 2147483659: 134350848, + 2147483660: 0, + 2147483661: 134348832, + 2147483662: 134219776, + 2147483663: 131072, + 16: 133152, + 17: 134350848, + 18: 32, + 19: 2048, + 20: 134219776, + 21: 134217760, + 22: 134348832, + 23: 131072, + 24: 0, + 25: 131104, + 26: 134348800, + 27: 134219808, + 28: 134350880, + 29: 133120, + 30: 2080, + 31: 134217728, + 2147483664: 131072, + 2147483665: 2048, + 2147483666: 134348832, + 2147483667: 133152, + 2147483668: 32, + 2147483669: 134348800, + 2147483670: 134217728, + 2147483671: 134219808, + 2147483672: 134350880, + 2147483673: 134217760, + 2147483674: 134219776, + 2147483675: 0, + 2147483676: 133120, + 2147483677: 2080, + 2147483678: 131104, + 2147483679: 134350848 + }], + u = [4160749569, 528482304, 33030144, 2064384, 129024, 8064, 504, 2147483679], + d = a.DES = s.extend({ + _doReset: function _doReset() { + for (var t = this._key, r = t.words, e = [], i = 0; i < 56; i++) { + var n = c[i] - 1; + e[i] = r[n >>> 5] >>> 31 - n % 32 & 1; + } + for (var o = this._subKeys = [], s = 0; s < 16; s++) { + for (var a = o[s] = [], f = l[s], i = 0; i < 24; i++) a[i / 6 | 0] |= e[(h[i] - 1 + f) % 28] << 31 - i % 6, a[4 + (i / 6 | 0)] |= e[28 + (h[i + 24] - 1 + f) % 28] << 31 - i % 6; + a[0] = a[0] << 1 | a[0] >>> 31; + for (var i = 1; i < 7; i++) a[i] = a[i] >>> 4 * (i - 1) + 3; + a[7] = a[7] << 5 | a[7] >>> 27; + } + for (var u = this._invSubKeys = [], i = 0; i < 16; i++) u[i] = o[15 - i]; + }, + encryptBlock: function encryptBlock(t, r) { + this._doCryptBlock(t, r, this._subKeys); + }, + decryptBlock: function decryptBlock(t, r) { + this._doCryptBlock(t, r, this._invSubKeys); + }, + _doCryptBlock: function _doCryptBlock(t, i, n) { + this._lBlock = t[i], this._rBlock = t[i + 1], r.call(this, 4, 252645135), r.call(this, 16, 65535), e.call(this, 2, 858993459), e.call(this, 8, 16711935), r.call(this, 1, 1431655765); + for (var o = 0; o < 16; o++) { + for (var s = n[o], a = this._lBlock, c = this._rBlock, h = 0, l = 0; l < 8; l++) h |= f[l][((c ^ s[l]) & u[l]) >>> 0]; + this._lBlock = c, this._rBlock = a ^ h; + } + var d = this._lBlock; + this._lBlock = this._rBlock, this._rBlock = d, r.call(this, 1, 1431655765), e.call(this, 8, 16711935), e.call(this, 2, 858993459), r.call(this, 16, 65535), r.call(this, 4, 252645135), t[i] = this._lBlock, t[i + 1] = this._rBlock; + }, + keySize: 2, + ivSize: 2, + blockSize: 2 + }); + i.DES = s._createHelper(d); + var v = a.TripleDES = s.extend({ + _doReset: function _doReset() { + var t = this._key, + r = t.words; + this._des1 = d.createEncryptor(o.create(r.slice(0, 2))), this._des2 = d.createEncryptor(o.create(r.slice(2, 4))), this._des3 = d.createEncryptor(o.create(r.slice(4, 6))); + }, + encryptBlock: function encryptBlock(t, r) { + this._des1.encryptBlock(t, r), this._des2.decryptBlock(t, r), this._des3.encryptBlock(t, r); + }, + decryptBlock: function decryptBlock(t, r) { + this._des3.decryptBlock(t, r), this._des2.encryptBlock(t, r), this._des1.decryptBlock(t, r); + }, + keySize: 6, + ivSize: 2, + blockSize: 2 + }); + i.TripleDES = s._createHelper(v); + }(), function () { + function r() { + for (var t = this._S, r = this._i, e = this._j, i = 0, n = 0; n < 4; n++) { + r = (r + 1) % 256, e = (e + t[r]) % 256; + var o = t[r]; + t[r] = t[e], t[e] = o, i |= t[(t[r] + t[e]) % 256] << 24 - 8 * n; + } + return this._i = r, this._j = e, i; + } + var e = t, + i = e.lib, + n = i.StreamCipher, + o = e.algo, + s = o.RC4 = n.extend({ + _doReset: function _doReset() { + for (var t = this._key, r = t.words, e = t.sigBytes, i = this._S = [], n = 0; n < 256; n++) i[n] = n; + for (var n = 0, o = 0; n < 256; n++) { + var s = n % e, + a = r[s >>> 2] >>> 24 - s % 4 * 8 & 255; + o = (o + i[n] + a) % 256; + var c = i[n]; + i[n] = i[o], i[o] = c; + } + this._i = this._j = 0; + }, + _doProcessBlock: function _doProcessBlock(t, e) { + t[e] ^= r.call(this); + }, + keySize: 8, + ivSize: 0 + }); + e.RC4 = n._createHelper(s); + var a = o.RC4Drop = s.extend({ + cfg: s.cfg.extend({ + drop: 192 + }), + _doReset: function _doReset() { + s._doReset.call(this); + for (var t = this.cfg.drop; t > 0; t--) r.call(this); + } + }); + e.RC4Drop = n._createHelper(a); + }(), t.mode.CTRGladman = function () { + function r(t) { + if (255 === (t >> 24 & 255)) { + var r = t >> 16 & 255, + e = t >> 8 & 255, + i = 255 & t; + 255 === r ? (r = 0, 255 === e ? (e = 0, 255 === i ? i = 0 : ++i) : ++e) : ++r, t = 0, t += r << 16, t += e << 8, t += i; + } else t += 1 << 24; + return t; + } + function e(t) { + return 0 === (t[0] = r(t[0])) && (t[1] = r(t[1])), t; + } + var i = t.lib.BlockCipherMode.extend(), + n = i.Encryptor = i.extend({ + processBlock: function processBlock(t, r) { + var i = this._cipher, + n = i.blockSize, + o = this._iv, + s = this._counter; + o && (s = this._counter = o.slice(0), this._iv = void 0), e(s); + var a = s.slice(0); + i.encryptBlock(a, 0); + for (var c = 0; c < n; c++) t[r + c] ^= a[c]; + } + }); + return i.Decryptor = n, i; + }(), function () { + function r() { + for (var t = this._X, r = this._C, e = 0; e < 8; e++) a[e] = r[e]; + r[0] = r[0] + 1295307597 + this._b | 0, r[1] = r[1] + 3545052371 + (r[0] >>> 0 < a[0] >>> 0 ? 1 : 0) | 0, r[2] = r[2] + 886263092 + (r[1] >>> 0 < a[1] >>> 0 ? 1 : 0) | 0, r[3] = r[3] + 1295307597 + (r[2] >>> 0 < a[2] >>> 0 ? 1 : 0) | 0, r[4] = r[4] + 3545052371 + (r[3] >>> 0 < a[3] >>> 0 ? 1 : 0) | 0, r[5] = r[5] + 886263092 + (r[4] >>> 0 < a[4] >>> 0 ? 1 : 0) | 0, r[6] = r[6] + 1295307597 + (r[5] >>> 0 < a[5] >>> 0 ? 1 : 0) | 0, r[7] = r[7] + 3545052371 + (r[6] >>> 0 < a[6] >>> 0 ? 1 : 0) | 0, this._b = r[7] >>> 0 < a[7] >>> 0 ? 1 : 0; + for (var e = 0; e < 8; e++) { + var i = t[e] + r[e], + n = 65535 & i, + o = i >>> 16, + s = ((n * n >>> 17) + n * o >>> 15) + o * o, + h = ((4294901760 & i) * i | 0) + ((65535 & i) * i | 0); + c[e] = s ^ h; + } + t[0] = c[0] + (c[7] << 16 | c[7] >>> 16) + (c[6] << 16 | c[6] >>> 16) | 0, t[1] = c[1] + (c[0] << 8 | c[0] >>> 24) + c[7] | 0, t[2] = c[2] + (c[1] << 16 | c[1] >>> 16) + (c[0] << 16 | c[0] >>> 16) | 0, t[3] = c[3] + (c[2] << 8 | c[2] >>> 24) + c[1] | 0, t[4] = c[4] + (c[3] << 16 | c[3] >>> 16) + (c[2] << 16 | c[2] >>> 16) | 0, t[5] = c[5] + (c[4] << 8 | c[4] >>> 24) + c[3] | 0, t[6] = c[6] + (c[5] << 16 | c[5] >>> 16) + (c[4] << 16 | c[4] >>> 16) | 0, t[7] = c[7] + (c[6] << 8 | c[6] >>> 24) + c[5] | 0; + } + var e = t, + i = e.lib, + n = i.StreamCipher, + o = e.algo, + s = [], + a = [], + c = [], + h = o.Rabbit = n.extend({ + _doReset: function _doReset() { + for (var t = this._key.words, e = this.cfg.iv, i = 0; i < 4; i++) t[i] = 16711935 & (t[i] << 8 | t[i] >>> 24) | 4278255360 & (t[i] << 24 | t[i] >>> 8); + var n = this._X = [t[0], t[3] << 16 | t[2] >>> 16, t[1], t[0] << 16 | t[3] >>> 16, t[2], t[1] << 16 | t[0] >>> 16, t[3], t[2] << 16 | t[1] >>> 16], + o = this._C = [t[2] << 16 | t[2] >>> 16, 4294901760 & t[0] | 65535 & t[1], t[3] << 16 | t[3] >>> 16, 4294901760 & t[1] | 65535 & t[2], t[0] << 16 | t[0] >>> 16, 4294901760 & t[2] | 65535 & t[3], t[1] << 16 | t[1] >>> 16, 4294901760 & t[3] | 65535 & t[0]]; + this._b = 0; + for (var i = 0; i < 4; i++) r.call(this); + for (var i = 0; i < 8; i++) o[i] ^= n[i + 4 & 7]; + if (e) { + var s = e.words, + a = s[0], + c = s[1], + h = 16711935 & (a << 8 | a >>> 24) | 4278255360 & (a << 24 | a >>> 8), + l = 16711935 & (c << 8 | c >>> 24) | 4278255360 & (c << 24 | c >>> 8), + f = h >>> 16 | 4294901760 & l, + u = l << 16 | 65535 & h; + o[0] ^= h, o[1] ^= f, o[2] ^= l, o[3] ^= u, o[4] ^= h, o[5] ^= f, o[6] ^= l, o[7] ^= u; + for (var i = 0; i < 4; i++) r.call(this); + } + }, + _doProcessBlock: function _doProcessBlock(t, e) { + var i = this._X; + r.call(this), s[0] = i[0] ^ i[5] >>> 16 ^ i[3] << 16, s[1] = i[2] ^ i[7] >>> 16 ^ i[5] << 16, s[2] = i[4] ^ i[1] >>> 16 ^ i[7] << 16, s[3] = i[6] ^ i[3] >>> 16 ^ i[1] << 16; + for (var n = 0; n < 4; n++) s[n] = 16711935 & (s[n] << 8 | s[n] >>> 24) | 4278255360 & (s[n] << 24 | s[n] >>> 8), t[e + n] ^= s[n]; + }, + blockSize: 4, + ivSize: 2 + }); + e.Rabbit = n._createHelper(h); + }(), t.mode.CTR = function () { + var r = t.lib.BlockCipherMode.extend(), + e = r.Encryptor = r.extend({ + processBlock: function processBlock(t, r) { + var e = this._cipher, + i = e.blockSize, + n = this._iv, + o = this._counter; + n && (o = this._counter = n.slice(0), this._iv = void 0); + var s = o.slice(0); + e.encryptBlock(s, 0), o[i - 1] = o[i - 1] + 1 | 0; + for (var a = 0; a < i; a++) t[r + a] ^= s[a]; + } + }); + return r.Decryptor = e, r; + }(), function () { + function r() { + for (var t = this._X, r = this._C, e = 0; e < 8; e++) a[e] = r[e]; + r[0] = r[0] + 1295307597 + this._b | 0, r[1] = r[1] + 3545052371 + (r[0] >>> 0 < a[0] >>> 0 ? 1 : 0) | 0, r[2] = r[2] + 886263092 + (r[1] >>> 0 < a[1] >>> 0 ? 1 : 0) | 0, r[3] = r[3] + 1295307597 + (r[2] >>> 0 < a[2] >>> 0 ? 1 : 0) | 0, r[4] = r[4] + 3545052371 + (r[3] >>> 0 < a[3] >>> 0 ? 1 : 0) | 0, r[5] = r[5] + 886263092 + (r[4] >>> 0 < a[4] >>> 0 ? 1 : 0) | 0, r[6] = r[6] + 1295307597 + (r[5] >>> 0 < a[5] >>> 0 ? 1 : 0) | 0, r[7] = r[7] + 3545052371 + (r[6] >>> 0 < a[6] >>> 0 ? 1 : 0) | 0, this._b = r[7] >>> 0 < a[7] >>> 0 ? 1 : 0; + for (var e = 0; e < 8; e++) { + var i = t[e] + r[e], + n = 65535 & i, + o = i >>> 16, + s = ((n * n >>> 17) + n * o >>> 15) + o * o, + h = ((4294901760 & i) * i | 0) + ((65535 & i) * i | 0); + c[e] = s ^ h; + } + t[0] = c[0] + (c[7] << 16 | c[7] >>> 16) + (c[6] << 16 | c[6] >>> 16) | 0, t[1] = c[1] + (c[0] << 8 | c[0] >>> 24) + c[7] | 0, t[2] = c[2] + (c[1] << 16 | c[1] >>> 16) + (c[0] << 16 | c[0] >>> 16) | 0, t[3] = c[3] + (c[2] << 8 | c[2] >>> 24) + c[1] | 0, t[4] = c[4] + (c[3] << 16 | c[3] >>> 16) + (c[2] << 16 | c[2] >>> 16) | 0, t[5] = c[5] + (c[4] << 8 | c[4] >>> 24) + c[3] | 0, t[6] = c[6] + (c[5] << 16 | c[5] >>> 16) + (c[4] << 16 | c[4] >>> 16) | 0, t[7] = c[7] + (c[6] << 8 | c[6] >>> 24) + c[5] | 0; + } + var e = t, + i = e.lib, + n = i.StreamCipher, + o = e.algo, + s = [], + a = [], + c = [], + h = o.RabbitLegacy = n.extend({ + _doReset: function _doReset() { + var t = this._key.words, + e = this.cfg.iv, + i = this._X = [t[0], t[3] << 16 | t[2] >>> 16, t[1], t[0] << 16 | t[3] >>> 16, t[2], t[1] << 16 | t[0] >>> 16, t[3], t[2] << 16 | t[1] >>> 16], + n = this._C = [t[2] << 16 | t[2] >>> 16, 4294901760 & t[0] | 65535 & t[1], t[3] << 16 | t[3] >>> 16, 4294901760 & t[1] | 65535 & t[2], t[0] << 16 | t[0] >>> 16, 4294901760 & t[2] | 65535 & t[3], t[1] << 16 | t[1] >>> 16, 4294901760 & t[3] | 65535 & t[0]]; + this._b = 0; + for (var o = 0; o < 4; o++) r.call(this); + for (var o = 0; o < 8; o++) n[o] ^= i[o + 4 & 7]; + if (e) { + var s = e.words, + a = s[0], + c = s[1], + h = 16711935 & (a << 8 | a >>> 24) | 4278255360 & (a << 24 | a >>> 8), + l = 16711935 & (c << 8 | c >>> 24) | 4278255360 & (c << 24 | c >>> 8), + f = h >>> 16 | 4294901760 & l, + u = l << 16 | 65535 & h; + n[0] ^= h, n[1] ^= f, n[2] ^= l, n[3] ^= u, n[4] ^= h, n[5] ^= f, n[6] ^= l, n[7] ^= u; + for (var o = 0; o < 4; o++) r.call(this); + } + }, + _doProcessBlock: function _doProcessBlock(t, e) { + var i = this._X; + r.call(this), s[0] = i[0] ^ i[5] >>> 16 ^ i[3] << 16, s[1] = i[2] ^ i[7] >>> 16 ^ i[5] << 16, s[2] = i[4] ^ i[1] >>> 16 ^ i[7] << 16, s[3] = i[6] ^ i[3] >>> 16 ^ i[1] << 16; + for (var n = 0; n < 4; n++) s[n] = 16711935 & (s[n] << 8 | s[n] >>> 24) | 4278255360 & (s[n] << 24 | s[n] >>> 8), t[e + n] ^= s[n]; + }, + blockSize: 4, + ivSize: 2 + }); + e.RabbitLegacy = n._createHelper(h); + }(), t.pad.ZeroPadding = { + pad: function pad(t, r) { + var e = 4 * r; + t.clamp(), t.sigBytes += e - (t.sigBytes % e || e); + }, + unpad: function unpad(t) { + for (var r = t.words, e = t.sigBytes - 1; !(r[e >>> 2] >>> 24 - e % 4 * 8 & 255);) e--; + t.sigBytes = e + 1; + } + }, t; +}); + cc._RF.pop(); //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImFzc2V0c1xcU2NyaXB0XFxtb2R1bGVcXENyeXB0b1xcY3J5cHRvLWpzLm1pbi5qcyJdLCJuYW1lcyI6WyJ0IiwiciIsImV4cG9ydHMiLCJtb2R1bGUiLCJkZWZpbmUiLCJhbWQiLCJDcnlwdG9KUyIsImUiLCJPYmplY3QiLCJjcmVhdGUiLCJwcm90b3R5cGUiLCJpIiwibiIsImxpYiIsIm8iLCJCYXNlIiwiZXh0ZW5kIiwibWl4SW4iLCJoYXNPd25Qcm9wZXJ0eSIsImluaXQiLCIkc3VwZXIiLCJhcHBseSIsImFyZ3VtZW50cyIsInRvU3RyaW5nIiwiY2xvbmUiLCJzIiwiV29yZEFycmF5Iiwid29yZHMiLCJzaWdCeXRlcyIsImxlbmd0aCIsImMiLCJzdHJpbmdpZnkiLCJjb25jYXQiLCJjbGFtcCIsImNlaWwiLCJjYWxsIiwic2xpY2UiLCJyYW5kb20iLCJhIiwicHVzaCIsImVuYyIsIkhleCIsImpvaW4iLCJwYXJzZSIsInBhcnNlSW50Iiwic3Vic3RyIiwiaCIsIkxhdGluMSIsIlN0cmluZyIsImZyb21DaGFyQ29kZSIsImNoYXJDb2RlQXQiLCJsIiwiVXRmOCIsImRlY29kZVVSSUNvbXBvbmVudCIsImVzY2FwZSIsIkVycm9yIiwidW5lc2NhcGUiLCJlbmNvZGVVUklDb21wb25lbnQiLCJmIiwiQnVmZmVyZWRCbG9ja0FsZ29yaXRobSIsInJlc2V0IiwiX2RhdGEiLCJfbkRhdGFCeXRlcyIsIl9hcHBlbmQiLCJfcHJvY2VzcyIsImJsb2NrU2l6ZSIsIm1heCIsIl9taW5CdWZmZXJTaXplIiwibWluIiwiX2RvUHJvY2Vzc0Jsb2NrIiwidSIsInNwbGljZSIsIkhhc2hlciIsImNmZyIsIl9kb1Jlc2V0IiwidXBkYXRlIiwiZmluYWxpemUiLCJfZG9GaW5hbGl6ZSIsIl9jcmVhdGVIZWxwZXIiLCJfY3JlYXRlSG1hY0hlbHBlciIsIkhNQUMiLCJhbGdvIiwiTWF0aCIsIkJhc2U2NCIsIl9tYXAiLCJjaGFyQXQiLCJfcmV2ZXJzZU1hcCIsImluZGV4T2YiLCJhYnMiLCJzaW4iLCJNRDUiLCJfaGFzaCIsImQiLCJ2IiwicCIsIl8iLCJ5IiwiZyIsIkIiLCJ3IiwiayIsIlMiLCJtIiwieCIsImIiLCJIIiwieiIsIkEiLCJDIiwiRCIsImZsb29yIiwiSG1hY01ENSIsIlNIQTEiLCJIbWFjU0hBMSIsInNxcnQiLCJwb3ciLCJTSEEyNTYiLCJIbWFjU0hBMjU2IiwiVXRmMTYiLCJVdGYxNkJFIiwiVXRmMTZMRSIsIkFycmF5QnVmZmVyIiwiVWludDhBcnJheSIsIkludDhBcnJheSIsIlVpbnQ4Q2xhbXBlZEFycmF5IiwiSW50MTZBcnJheSIsIlVpbnQxNkFycmF5IiwiSW50MzJBcnJheSIsIlVpbnQzMkFycmF5IiwiRmxvYXQzMkFycmF5IiwiRmxvYXQ2NEFycmF5IiwiYnVmZmVyIiwiYnl0ZU9mZnNldCIsImJ5dGVMZW5ndGgiLCJSSVBFTUQxNjAiLCJSIiwiRSIsIk0iLCJGIiwiSG1hY1JJUEVNRDE2MCIsIl9oYXNoZXIiLCJfb0tleSIsIl9pS2V5IiwiUEJLREYyIiwia2V5U2l6ZSIsImhhc2hlciIsIml0ZXJhdGlvbnMiLCJjb21wdXRlIiwiRXZwS0RGIiwiU0hBMjI0IiwiSG1hY1NIQTIyNCIsIng2NCIsIldvcmQiLCJoaWdoIiwibG93IiwidG9YMzIiLCJTSEEzIiwib3V0cHV0TGVuZ3RoIiwiX3N0YXRlIiwiSG1hY1NIQTMiLCJTSEE1MTIiLCJQIiwiVyIsIk8iLCJVIiwiSSIsIksiLCJYIiwiTCIsImoiLCJOIiwiVCIsIloiLCJxIiwiRyIsIkoiLCIkIiwiUSIsIlYiLCJZIiwidHQiLCJydCIsImV0IiwiaXQiLCJudCIsIm90Iiwic3QiLCJhdCIsImN0IiwiaHQiLCJsdCIsImZ0IiwidXQiLCJkdCIsInZ0IiwicHQiLCJfdCIsInl0IiwiZ3QiLCJCdCIsInd0Iiwia3QiLCJTdCIsIm10IiwieHQiLCJidCIsIkhtYWNTSEE1MTIiLCJTSEEzODQiLCJIbWFjU0hBMzg0IiwiQ2lwaGVyIiwiY3JlYXRlRW5jcnlwdG9yIiwiX0VOQ19YRk9STV9NT0RFIiwiY3JlYXRlRGVjcnlwdG9yIiwiX0RFQ19YRk9STV9NT0RFIiwiX3hmb3JtTW9kZSIsIl9rZXkiLCJwcm9jZXNzIiwiaXZTaXplIiwiZW5jcnlwdCIsImRlY3J5cHQiLCJTdHJlYW1DaXBoZXIiLCJtb2RlIiwiQmxvY2tDaXBoZXJNb2RlIiwiRW5jcnlwdG9yIiwiRGVjcnlwdG9yIiwiX2NpcGhlciIsIl9pdiIsIkNCQyIsIl9wcmV2QmxvY2siLCJwcm9jZXNzQmxvY2siLCJlbmNyeXB0QmxvY2siLCJkZWNyeXB0QmxvY2siLCJwYWQiLCJQa2NzNyIsInVucGFkIiwiQmxvY2tDaXBoZXIiLCJwYWRkaW5nIiwiaXYiLCJfbW9kZSIsIl9fY3JlYXRvciIsIkNpcGhlclBhcmFtcyIsImZvcm1hdHRlciIsImZvcm1hdCIsIk9wZW5TU0wiLCJjaXBoZXJ0ZXh0Iiwic2FsdCIsIlNlcmlhbGl6YWJsZUNpcGhlciIsImtleSIsImFsZ29yaXRobSIsIl9wYXJzZSIsImtkZiIsImV4ZWN1dGUiLCJQYXNzd29yZEJhc2VkQ2lwaGVyIiwiQ0ZCIiwiRUNCIiwiQW5zaVg5MjMiLCJJc28xMDEyNiIsIklzbzk3OTcxIiwiWmVyb1BhZGRpbmciLCJPRkIiLCJfa2V5c3RyZWFtIiwiTm9QYWRkaW5nIiwiQUVTIiwiX25Sb3VuZHMiLCJfa2V5UHJpb3JSZXNldCIsIl9rZXlTY2hlZHVsZSIsIl9pbnZLZXlTY2hlZHVsZSIsIl9kb0NyeXB0QmxvY2siLCJfbEJsb2NrIiwiX3JCbG9jayIsIkRFUyIsIl9zdWJLZXlzIiwiX2ludlN1YktleXMiLCJUcmlwbGVERVMiLCJfZGVzMSIsIl9kZXMyIiwiX2RlczMiLCJfUyIsIl9pIiwiX2oiLCJSQzQiLCJSQzREcm9wIiwiZHJvcCIsIkNUUkdsYWRtYW4iLCJfY291bnRlciIsIl9YIiwiX0MiLCJfYiIsIlJhYmJpdCIsIkNUUiIsIlJhYmJpdExlZ2FjeSJdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQUEsQ0FBQyxVQUFTQSxDQUFDLEVBQUNDLENBQUMsRUFBQztFQUFDLFFBQVEsSUFBRSxPQUFPQyxPQUFPLEdBQUNDLE1BQU0sQ0FBQ0QsT0FBTyxHQUFDQSxPQUFPLEdBQUNELENBQUMsRUFBRSxHQUFDLFVBQVUsSUFBRSxPQUFPRyxNQUFNLElBQUVBLE1BQU0sQ0FBQ0MsR0FBRyxHQUFDRCxNQUFNLENBQUMsRUFBRSxFQUFDSCxDQUFDLENBQUMsR0FBQ0QsQ0FBQyxDQUFDTSxRQUFRLEdBQUNMLENBQUMsRUFBRTtBQUFBLENBQUMsU0FBTSxZQUFVO0VBQUMsSUFBSUQsQ0FBQyxHQUFDQSxDQUFDLElBQUUsVUFBU0EsQ0FBQyxFQUFDQyxDQUFDLEVBQUM7SUFBQyxJQUFJTSxDQUFDLEdBQUNDLE1BQU0sQ0FBQ0MsTUFBTSxJQUFFLFlBQVU7UUFBQyxTQUFTVCxDQUFDQSxDQUFBLEVBQUUsQ0FBQztRQUFDLE9BQU8sVUFBU0MsQ0FBQyxFQUFDO1VBQUMsSUFBSU0sQ0FBQztVQUFDLE9BQU9QLENBQUMsQ0FBQ1UsU0FBUyxHQUFDVCxDQUFDLEVBQUNNLENBQUMsR0FBQyxJQUFJUCxDQUFDLElBQUNBLENBQUMsQ0FBQ1UsU0FBUyxHQUFDLElBQUksRUFBQ0gsQ0FBQztRQUFBLENBQUM7TUFBQSxDQUFDLEVBQUU7TUFBQ0ksQ0FBQyxHQUFDLENBQUMsQ0FBQztNQUFDQyxDQUFDLEdBQUNELENBQUMsQ0FBQ0UsR0FBRyxHQUFDLENBQUMsQ0FBQztNQUFDQyxDQUFDLEdBQUNGLENBQUMsQ0FBQ0csSUFBSSxHQUFDLFlBQVU7UUFBQyxPQUFNO1VBQUNDLE1BQU0sRUFBQyxTQUFBQSxPQUFTaEIsQ0FBQyxFQUFDO1lBQUMsSUFBSUMsQ0FBQyxHQUFDTSxDQUFDLENBQUMsSUFBSSxDQUFDO1lBQUMsT0FBT1AsQ0FBQyxJQUFFQyxDQUFDLENBQUNnQixLQUFLLENBQUNqQixDQUFDLENBQUMsRUFBQ0MsQ0FBQyxDQUFDaUIsY0FBYyxDQUFDLE1BQU0sQ0FBQyxJQUFFLElBQUksQ0FBQ0MsSUFBSSxLQUFHbEIsQ0FBQyxDQUFDa0IsSUFBSSxLQUFHbEIsQ0FBQyxDQUFDa0IsSUFBSSxHQUFDLFlBQVU7Y0FBQ2xCLENBQUMsQ0FBQ21CLE1BQU0sQ0FBQ0QsSUFBSSxDQUFDRSxLQUFLLENBQUMsSUFBSSxFQUFDQyxTQUFTLENBQUM7WUFBQSxDQUFDLENBQUMsRUFBQ3JCLENBQUMsQ0FBQ2tCLElBQUksQ0FBQ1QsU0FBUyxHQUFDVCxDQUFDLEVBQUNBLENBQUMsQ0FBQ21CLE1BQU0sR0FBQyxJQUFJLEVBQUNuQixDQUFDO1VBQUEsQ0FBQztVQUFDUSxNQUFNLEVBQUMsU0FBQUEsT0FBQSxFQUFVO1lBQUMsSUFBSVQsQ0FBQyxHQUFDLElBQUksQ0FBQ2dCLE1BQU0sRUFBRTtZQUFDLE9BQU9oQixDQUFDLENBQUNtQixJQUFJLENBQUNFLEtBQUssQ0FBQ3JCLENBQUMsRUFBQ3NCLFNBQVMsQ0FBQyxFQUFDdEIsQ0FBQztVQUFBLENBQUM7VUFBQ21CLElBQUksRUFBQyxTQUFBQSxLQUFBLEVBQVUsQ0FBQyxDQUFDO1VBQUNGLEtBQUssRUFBQyxTQUFBQSxNQUFTakIsQ0FBQyxFQUFDO1lBQUMsS0FBSSxJQUFJQyxDQUFDLElBQUlELENBQUMsRUFBQ0EsQ0FBQyxDQUFDa0IsY0FBYyxDQUFDakIsQ0FBQyxDQUFDLEtBQUcsSUFBSSxDQUFDQSxDQUFDLENBQUMsR0FBQ0QsQ0FBQyxDQUFDQyxDQUFDLENBQUMsQ0FBQztZQUFDRCxDQUFDLENBQUNrQixjQUFjLENBQUMsVUFBVSxDQUFDLEtBQUcsSUFBSSxDQUFDSyxRQUFRLEdBQUN2QixDQUFDLENBQUN1QixRQUFRLENBQUM7VUFBQSxDQUFDO1VBQUNDLEtBQUssRUFBQyxTQUFBQSxNQUFBLEVBQVU7WUFBQyxPQUFPLElBQUksQ0FBQ0wsSUFBSSxDQUFDVCxTQUFTLENBQUNNLE1BQU0sQ0FBQyxJQUFJLENBQUM7VUFBQTtRQUFDLENBQUM7TUFBQSxDQUFDLEVBQUU7TUFBQ1MsQ0FBQyxHQUFDYixDQUFDLENBQUNjLFNBQVMsR0FBQ1osQ0FBQyxDQUFDRSxNQUFNLENBQUM7UUFBQ0csSUFBSSxFQUFDLFNBQUFBLEtBQVNuQixDQUFDLEVBQUNPLENBQUMsRUFBQztVQUFDUCxDQUFDLEdBQUMsSUFBSSxDQUFDMkIsS0FBSyxHQUFDM0IsQ0FBQyxJQUFFLEVBQUUsRUFBQ08sQ0FBQyxJQUFFTixDQUFDLEdBQUMsSUFBSSxDQUFDMkIsUUFBUSxHQUFDckIsQ0FBQyxHQUFDLElBQUksQ0FBQ3FCLFFBQVEsR0FBQyxDQUFDLEdBQUM1QixDQUFDLENBQUM2QixNQUFNO1FBQUEsQ0FBQztRQUFDTixRQUFRLEVBQUMsU0FBQUEsU0FBU3ZCLENBQUMsRUFBQztVQUFDLE9BQU0sQ0FBQ0EsQ0FBQyxJQUFFOEIsQ0FBQyxFQUFFQyxTQUFTLENBQUMsSUFBSSxDQUFDO1FBQUEsQ0FBQztRQUFDQyxNQUFNLEVBQUMsU0FBQUEsT0FBU2hDLENBQUMsRUFBQztVQUFDLElBQUlDLENBQUMsR0FBQyxJQUFJLENBQUMwQixLQUFLO1lBQUNwQixDQUFDLEdBQUNQLENBQUMsQ0FBQzJCLEtBQUs7WUFBQ2hCLENBQUMsR0FBQyxJQUFJLENBQUNpQixRQUFRO1lBQUNoQixDQUFDLEdBQUNaLENBQUMsQ0FBQzRCLFFBQVE7VUFBQyxJQUFHLElBQUksQ0FBQ0ssS0FBSyxFQUFFLEVBQUN0QixDQUFDLEdBQUMsQ0FBQyxFQUFDLEtBQUksSUFBSUcsQ0FBQyxHQUFDLENBQUMsRUFBQ0EsQ0FBQyxHQUFDRixDQUFDLEVBQUNFLENBQUMsRUFBRSxFQUFDO1lBQUMsSUFBSVcsQ0FBQyxHQUFDbEIsQ0FBQyxDQUFDTyxDQUFDLEtBQUcsQ0FBQyxDQUFDLEtBQUcsRUFBRSxHQUFDQSxDQUFDLEdBQUMsQ0FBQyxHQUFDLENBQUMsR0FBQyxHQUFHO1lBQUNiLENBQUMsQ0FBQ1UsQ0FBQyxHQUFDRyxDQUFDLEtBQUcsQ0FBQyxDQUFDLElBQUVXLENBQUMsSUFBRSxFQUFFLEdBQUMsQ0FBQ2QsQ0FBQyxHQUFDRyxDQUFDLElBQUUsQ0FBQyxHQUFDLENBQUM7VUFBQSxDQUFDLE1BQUssS0FBSSxJQUFJQSxDQUFDLEdBQUMsQ0FBQyxFQUFDQSxDQUFDLEdBQUNGLENBQUMsRUFBQ0UsQ0FBQyxJQUFFLENBQUMsRUFBQ2IsQ0FBQyxDQUFDVSxDQUFDLEdBQUNHLENBQUMsS0FBRyxDQUFDLENBQUMsR0FBQ1AsQ0FBQyxDQUFDTyxDQUFDLEtBQUcsQ0FBQyxDQUFDO1VBQUMsT0FBTyxJQUFJLENBQUNjLFFBQVEsSUFBRWhCLENBQUMsRUFBQyxJQUFJO1FBQUEsQ0FBQztRQUFDcUIsS0FBSyxFQUFDLFNBQUFBLE1BQUEsRUFBVTtVQUFDLElBQUloQyxDQUFDLEdBQUMsSUFBSSxDQUFDMEIsS0FBSztZQUFDcEIsQ0FBQyxHQUFDLElBQUksQ0FBQ3FCLFFBQVE7VUFBQzNCLENBQUMsQ0FBQ00sQ0FBQyxLQUFHLENBQUMsQ0FBQyxJQUFFLFVBQVUsSUFBRSxFQUFFLEdBQUNBLENBQUMsR0FBQyxDQUFDLEdBQUMsQ0FBQyxFQUFDTixDQUFDLENBQUM0QixNQUFNLEdBQUM3QixDQUFDLENBQUNrQyxJQUFJLENBQUMzQixDQUFDLEdBQUMsQ0FBQyxDQUFDO1FBQUEsQ0FBQztRQUFDaUIsS0FBSyxFQUFDLFNBQUFBLE1BQUEsRUFBVTtVQUFDLElBQUl4QixDQUFDLEdBQUNjLENBQUMsQ0FBQ1UsS0FBSyxDQUFDVyxJQUFJLENBQUMsSUFBSSxDQUFDO1VBQUMsT0FBT25DLENBQUMsQ0FBQzJCLEtBQUssR0FBQyxJQUFJLENBQUNBLEtBQUssQ0FBQ1MsS0FBSyxDQUFDLENBQUMsQ0FBQyxFQUFDcEMsQ0FBQztRQUFBLENBQUM7UUFBQ3FDLE1BQU0sRUFBQyxTQUFBQSxPQUFTcEMsQ0FBQyxFQUFDO1VBQUMsS0FBSSxJQUFJTSxDQUFDLEVBQUNJLENBQUMsR0FBQyxFQUFFLEVBQUNDLENBQUMsR0FBQyxTQUFGQSxDQUFDQSxDQUFVWCxDQUFDLEVBQUM7Y0FBQyxJQUFJQSxDQUFDLEdBQUNBLENBQUM7Z0JBQUNNLENBQUMsR0FBQyxTQUFTO2dCQUFDSSxDQUFDLEdBQUMsVUFBVTtjQUFDLE9BQU8sWUFBVTtnQkFBQ0osQ0FBQyxHQUFDLEtBQUssSUFBRSxLQUFLLEdBQUNBLENBQUMsQ0FBQyxJQUFFQSxDQUFDLElBQUUsRUFBRSxDQUFDLEdBQUNJLENBQUMsRUFBQ1YsQ0FBQyxHQUFDLElBQUksSUFBRSxLQUFLLEdBQUNBLENBQUMsQ0FBQyxJQUFFQSxDQUFDLElBQUUsRUFBRSxDQUFDLEdBQUNVLENBQUM7Z0JBQUMsSUFBSUMsQ0FBQyxHQUFDLENBQUNMLENBQUMsSUFBRSxFQUFFLElBQUVOLENBQUMsR0FBQ1UsQ0FBQztnQkFBQyxPQUFPQyxDQUFDLElBQUUsVUFBVSxFQUFDQSxDQUFDLElBQUUsRUFBRSxFQUFDQSxDQUFDLElBQUVaLENBQUMsQ0FBQ3FDLE1BQU0sRUFBRSxHQUFDLEVBQUUsR0FBQyxDQUFDLEdBQUMsQ0FBQyxDQUFDLENBQUM7Y0FBQSxDQUFDO1lBQUEsQ0FBQyxFQUFDdkIsQ0FBQyxHQUFDLENBQUMsRUFBQ0EsQ0FBQyxHQUFDYixDQUFDLEVBQUNhLENBQUMsSUFBRSxDQUFDLEVBQUM7WUFBQyxJQUFJd0IsQ0FBQyxHQUFDMUIsQ0FBQyxDQUFDLFVBQVUsSUFBRUwsQ0FBQyxJQUFFUCxDQUFDLENBQUNxQyxNQUFNLEVBQUUsQ0FBQyxDQUFDO1lBQUM5QixDQUFDLEdBQUMsU0FBUyxHQUFDK0IsQ0FBQyxFQUFFLEVBQUMzQixDQUFDLENBQUM0QixJQUFJLENBQUMsVUFBVSxHQUFDRCxDQUFDLEVBQUUsR0FBQyxDQUFDLENBQUM7VUFBQTtVQUFDLE9BQU8sSUFBSWIsQ0FBQyxDQUFDTixJQUFJLENBQUNSLENBQUMsRUFBQ1YsQ0FBQyxDQUFDO1FBQUE7TUFBQyxDQUFDLENBQUM7TUFBQ3FDLENBQUMsR0FBQzNCLENBQUMsQ0FBQzZCLEdBQUcsR0FBQyxDQUFDLENBQUM7TUFBQ1YsQ0FBQyxHQUFDUSxDQUFDLENBQUNHLEdBQUcsR0FBQztRQUFDVixTQUFTLEVBQUMsU0FBQUEsVUFBUy9CLENBQUMsRUFBQztVQUFDLEtBQUksSUFBSUMsQ0FBQyxHQUFDRCxDQUFDLENBQUMyQixLQUFLLEVBQUNwQixDQUFDLEdBQUNQLENBQUMsQ0FBQzRCLFFBQVEsRUFBQ2pCLENBQUMsR0FBQyxFQUFFLEVBQUNDLENBQUMsR0FBQyxDQUFDLEVBQUNBLENBQUMsR0FBQ0wsQ0FBQyxFQUFDSyxDQUFDLEVBQUUsRUFBQztZQUFDLElBQUlFLENBQUMsR0FBQ2IsQ0FBQyxDQUFDVyxDQUFDLEtBQUcsQ0FBQyxDQUFDLEtBQUcsRUFBRSxHQUFDQSxDQUFDLEdBQUMsQ0FBQyxHQUFDLENBQUMsR0FBQyxHQUFHO1lBQUNELENBQUMsQ0FBQzRCLElBQUksQ0FBQyxDQUFDekIsQ0FBQyxLQUFHLENBQUMsRUFBRVMsUUFBUSxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUNaLENBQUMsQ0FBQzRCLElBQUksQ0FBQyxDQUFDLEVBQUUsR0FBQ3pCLENBQUMsRUFBRVMsUUFBUSxDQUFDLEVBQUUsQ0FBQyxDQUFDO1VBQUE7VUFBQyxPQUFPWixDQUFDLENBQUMrQixJQUFJLENBQUMsRUFBRSxDQUFDO1FBQUEsQ0FBQztRQUFDQyxLQUFLLEVBQUMsU0FBQUEsTUFBUzNDLENBQUMsRUFBQztVQUFDLEtBQUksSUFBSUMsQ0FBQyxHQUFDRCxDQUFDLENBQUM2QixNQUFNLEVBQUN0QixDQUFDLEdBQUMsRUFBRSxFQUFDSSxDQUFDLEdBQUMsQ0FBQyxFQUFDQSxDQUFDLEdBQUNWLENBQUMsRUFBQ1UsQ0FBQyxJQUFFLENBQUMsRUFBQ0osQ0FBQyxDQUFDSSxDQUFDLEtBQUcsQ0FBQyxDQUFDLElBQUVpQyxRQUFRLENBQUM1QyxDQUFDLENBQUM2QyxNQUFNLENBQUNsQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLEVBQUMsRUFBRSxDQUFDLElBQUUsRUFBRSxHQUFDQSxDQUFDLEdBQUMsQ0FBQyxHQUFDLENBQUM7VUFBQyxPQUFPLElBQUljLENBQUMsQ0FBQ04sSUFBSSxDQUFDWixDQUFDLEVBQUNOLENBQUMsR0FBQyxDQUFDLENBQUM7UUFBQTtNQUFDLENBQUM7TUFBQzZDLENBQUMsR0FBQ1IsQ0FBQyxDQUFDUyxNQUFNLEdBQUM7UUFBQ2hCLFNBQVMsRUFBQyxTQUFBQSxVQUFTL0IsQ0FBQyxFQUFDO1VBQUMsS0FBSSxJQUFJQyxDQUFDLEdBQUNELENBQUMsQ0FBQzJCLEtBQUssRUFBQ3BCLENBQUMsR0FBQ1AsQ0FBQyxDQUFDNEIsUUFBUSxFQUFDakIsQ0FBQyxHQUFDLEVBQUUsRUFBQ0MsQ0FBQyxHQUFDLENBQUMsRUFBQ0EsQ0FBQyxHQUFDTCxDQUFDLEVBQUNLLENBQUMsRUFBRSxFQUFDO1lBQUMsSUFBSUUsQ0FBQyxHQUFDYixDQUFDLENBQUNXLENBQUMsS0FBRyxDQUFDLENBQUMsS0FBRyxFQUFFLEdBQUNBLENBQUMsR0FBQyxDQUFDLEdBQUMsQ0FBQyxHQUFDLEdBQUc7WUFBQ0QsQ0FBQyxDQUFDNEIsSUFBSSxDQUFDUyxNQUFNLENBQUNDLFlBQVksQ0FBQ25DLENBQUMsQ0FBQyxDQUFDO1VBQUE7VUFBQyxPQUFPSCxDQUFDLENBQUMrQixJQUFJLENBQUMsRUFBRSxDQUFDO1FBQUEsQ0FBQztRQUFDQyxLQUFLLEVBQUMsU0FBQUEsTUFBUzNDLENBQUMsRUFBQztVQUFDLEtBQUksSUFBSUMsQ0FBQyxHQUFDRCxDQUFDLENBQUM2QixNQUFNLEVBQUN0QixDQUFDLEdBQUMsRUFBRSxFQUFDSSxDQUFDLEdBQUMsQ0FBQyxFQUFDQSxDQUFDLEdBQUNWLENBQUMsRUFBQ1UsQ0FBQyxFQUFFLEVBQUNKLENBQUMsQ0FBQ0ksQ0FBQyxLQUFHLENBQUMsQ0FBQyxJQUFFLENBQUMsR0FBRyxHQUFDWCxDQUFDLENBQUNrRCxVQUFVLENBQUN2QyxDQUFDLENBQUMsS0FBRyxFQUFFLEdBQUNBLENBQUMsR0FBQyxDQUFDLEdBQUMsQ0FBQztVQUFDLE9BQU8sSUFBSWMsQ0FBQyxDQUFDTixJQUFJLENBQUNaLENBQUMsRUFBQ04sQ0FBQyxDQUFDO1FBQUE7TUFBQyxDQUFDO01BQUNrRCxDQUFDLEdBQUNiLENBQUMsQ0FBQ2MsSUFBSSxHQUFDO1FBQUNyQixTQUFTLEVBQUMsU0FBQUEsVUFBUy9CLENBQUMsRUFBQztVQUFDLElBQUc7WUFBQyxPQUFPcUQsa0JBQWtCLENBQUNDLE1BQU0sQ0FBQ1IsQ0FBQyxDQUFDZixTQUFTLENBQUMvQixDQUFDLENBQUMsQ0FBQyxDQUFDO1VBQUEsQ0FBQyxRQUFNQSxDQUFDLEVBQUM7WUFBQyxNQUFNLElBQUl1RCxLQUFLLENBQUMsc0JBQXNCLENBQUM7VUFBQTtRQUFDLENBQUM7UUFBQ1osS0FBSyxFQUFDLFNBQUFBLE1BQVMzQyxDQUFDLEVBQUM7VUFBQyxPQUFPOEMsQ0FBQyxDQUFDSCxLQUFLLENBQUNhLFFBQVEsQ0FBQ0Msa0JBQWtCLENBQUN6RCxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQUE7TUFBQyxDQUFDO01BQUMwRCxDQUFDLEdBQUM5QyxDQUFDLENBQUMrQyxzQkFBc0IsR0FBQzdDLENBQUMsQ0FBQ0UsTUFBTSxDQUFDO1FBQUM0QyxLQUFLLEVBQUMsU0FBQUEsTUFBQSxFQUFVO1VBQUMsSUFBSSxDQUFDQyxLQUFLLEdBQUMsSUFBSXBDLENBQUMsQ0FBQ04sSUFBSSxJQUFDLElBQUksQ0FBQzJDLFdBQVcsR0FBQyxDQUFDO1FBQUEsQ0FBQztRQUFDQyxPQUFPLEVBQUMsU0FBQUEsUUFBUy9ELENBQUMsRUFBQztVQUFDLFFBQVEsSUFBRSxPQUFPQSxDQUFDLEtBQUdBLENBQUMsR0FBQ21ELENBQUMsQ0FBQ1IsS0FBSyxDQUFDM0MsQ0FBQyxDQUFDLENBQUMsRUFBQyxJQUFJLENBQUM2RCxLQUFLLENBQUM3QixNQUFNLENBQUNoQyxDQUFDLENBQUMsRUFBQyxJQUFJLENBQUM4RCxXQUFXLElBQUU5RCxDQUFDLENBQUM0QixRQUFRO1FBQUEsQ0FBQztRQUFDb0MsUUFBUSxFQUFDLFNBQUFBLFNBQVMvRCxDQUFDLEVBQUM7VUFBQyxJQUFJTSxDQUFDLEdBQUMsSUFBSSxDQUFDc0QsS0FBSztZQUFDbEQsQ0FBQyxHQUFDSixDQUFDLENBQUNvQixLQUFLO1lBQUNmLENBQUMsR0FBQ0wsQ0FBQyxDQUFDcUIsUUFBUTtZQUFDZCxDQUFDLEdBQUMsSUFBSSxDQUFDbUQsU0FBUztZQUFDM0IsQ0FBQyxHQUFDLENBQUMsR0FBQ3hCLENBQUM7WUFBQ2dCLENBQUMsR0FBQ2xCLENBQUMsR0FBQzBCLENBQUM7VUFBQ1IsQ0FBQyxHQUFDN0IsQ0FBQyxHQUFDRCxDQUFDLENBQUNrQyxJQUFJLENBQUNKLENBQUMsQ0FBQyxHQUFDOUIsQ0FBQyxDQUFDa0UsR0FBRyxDQUFDLENBQUMsQ0FBQyxHQUFDcEMsQ0FBQyxJQUFFLElBQUksQ0FBQ3FDLGNBQWMsRUFBQyxDQUFDLENBQUM7VUFBQyxJQUFJckIsQ0FBQyxHQUFDaEIsQ0FBQyxHQUFDaEIsQ0FBQztZQUFDcUMsQ0FBQyxHQUFDbkQsQ0FBQyxDQUFDb0UsR0FBRyxDQUFDLENBQUMsR0FBQ3RCLENBQUMsRUFBQ2xDLENBQUMsQ0FBQztVQUFDLElBQUdrQyxDQUFDLEVBQUM7WUFBQyxLQUFJLElBQUlZLENBQUMsR0FBQyxDQUFDLEVBQUNBLENBQUMsR0FBQ1osQ0FBQyxFQUFDWSxDQUFDLElBQUU1QyxDQUFDLEVBQUMsSUFBSSxDQUFDdUQsZUFBZSxDQUFDMUQsQ0FBQyxFQUFDK0MsQ0FBQyxDQUFDO1lBQUMsSUFBSVksQ0FBQyxHQUFDM0QsQ0FBQyxDQUFDNEQsTUFBTSxDQUFDLENBQUMsRUFBQ3pCLENBQUMsQ0FBQztZQUFDdkMsQ0FBQyxDQUFDcUIsUUFBUSxJQUFFdUIsQ0FBQztVQUFBO1VBQUMsT0FBTyxJQUFJMUIsQ0FBQyxDQUFDTixJQUFJLENBQUNtRCxDQUFDLEVBQUNuQixDQUFDLENBQUM7UUFBQSxDQUFDO1FBQUMzQixLQUFLLEVBQUMsU0FBQUEsTUFBQSxFQUFVO1VBQUMsSUFBSXhCLENBQUMsR0FBQ2MsQ0FBQyxDQUFDVSxLQUFLLENBQUNXLElBQUksQ0FBQyxJQUFJLENBQUM7VUFBQyxPQUFPbkMsQ0FBQyxDQUFDNkQsS0FBSyxHQUFDLElBQUksQ0FBQ0EsS0FBSyxDQUFDckMsS0FBSyxFQUFFLEVBQUN4QixDQUFDO1FBQUEsQ0FBQztRQUFDbUUsY0FBYyxFQUFDO01BQUMsQ0FBQyxDQUFDO01BQUNHLENBQUMsSUFBRTFELENBQUMsQ0FBQzRELE1BQU0sR0FBQ2QsQ0FBQyxDQUFDMUMsTUFBTSxDQUFDO1FBQUN5RCxHQUFHLEVBQUMzRCxDQUFDLENBQUNFLE1BQU0sRUFBRTtRQUFDRyxJQUFJLEVBQUMsU0FBQUEsS0FBU25CLENBQUMsRUFBQztVQUFDLElBQUksQ0FBQ3lFLEdBQUcsR0FBQyxJQUFJLENBQUNBLEdBQUcsQ0FBQ3pELE1BQU0sQ0FBQ2hCLENBQUMsQ0FBQyxFQUFDLElBQUksQ0FBQzRELEtBQUssRUFBRTtRQUFBLENBQUM7UUFBQ0EsS0FBSyxFQUFDLFNBQUFBLE1BQUEsRUFBVTtVQUFDRixDQUFDLENBQUNFLEtBQUssQ0FBQ3pCLElBQUksQ0FBQyxJQUFJLENBQUMsRUFBQyxJQUFJLENBQUN1QyxRQUFRLEVBQUU7UUFBQSxDQUFDO1FBQUNDLE1BQU0sRUFBQyxTQUFBQSxPQUFTM0UsQ0FBQyxFQUFDO1VBQUMsT0FBTyxJQUFJLENBQUMrRCxPQUFPLENBQUMvRCxDQUFDLENBQUMsRUFBQyxJQUFJLENBQUNnRSxRQUFRLEVBQUUsRUFBQyxJQUFJO1FBQUEsQ0FBQztRQUFDWSxRQUFRLEVBQUMsU0FBQUEsU0FBUzVFLENBQUMsRUFBQztVQUFDQSxDQUFDLElBQUUsSUFBSSxDQUFDK0QsT0FBTyxDQUFDL0QsQ0FBQyxDQUFDO1VBQUMsSUFBSUMsQ0FBQyxHQUFDLElBQUksQ0FBQzRFLFdBQVcsRUFBRTtVQUFDLE9BQU81RSxDQUFDO1FBQUEsQ0FBQztRQUFDZ0UsU0FBUyxFQUFDLEVBQUU7UUFBQ2EsYUFBYSxFQUFDLFNBQUFBLGNBQVM5RSxDQUFDLEVBQUM7VUFBQyxPQUFPLFVBQVNDLENBQUMsRUFBQ00sQ0FBQyxFQUFDO1lBQUMsT0FBTyxJQUFJUCxDQUFDLENBQUNtQixJQUFJLENBQUNaLENBQUMsQ0FBQyxDQUFDcUUsUUFBUSxDQUFDM0UsQ0FBQyxDQUFDO1VBQUEsQ0FBQztRQUFBLENBQUM7UUFBQzhFLGlCQUFpQixFQUFDLFNBQUFBLGtCQUFTL0UsQ0FBQyxFQUFDO1VBQUMsT0FBTyxVQUFTQyxDQUFDLEVBQUNNLENBQUMsRUFBQztZQUFDLE9BQU8sSUFBSStELENBQUMsQ0FBQ1UsSUFBSSxDQUFDN0QsSUFBSSxDQUFDbkIsQ0FBQyxFQUFDTyxDQUFDLENBQUMsQ0FBQ3FFLFFBQVEsQ0FBQzNFLENBQUMsQ0FBQztVQUFBLENBQUM7UUFBQTtNQUFDLENBQUMsQ0FBQyxFQUFDVSxDQUFDLENBQUNzRSxJQUFJLEdBQUMsQ0FBQyxDQUFDLENBQUM7SUFBQyxPQUFPdEUsQ0FBQztFQUFBLENBQUMsQ0FBQ3VFLElBQUksQ0FBQztFQUFDLE9BQU8sWUFBVTtJQUFDLFNBQVNqRixDQUFDQSxDQUFDRCxDQUFDLEVBQUNDLENBQUMsRUFBQ00sQ0FBQyxFQUFDO01BQUMsS0FBSSxJQUFJSSxDQUFDLEdBQUMsRUFBRSxFQUFDRyxDQUFDLEdBQUMsQ0FBQyxFQUFDVyxDQUFDLEdBQUMsQ0FBQyxFQUFDQSxDQUFDLEdBQUN4QixDQUFDLEVBQUN3QixDQUFDLEVBQUUsRUFBQyxJQUFHQSxDQUFDLEdBQUMsQ0FBQyxFQUFDO1FBQUMsSUFBSWEsQ0FBQyxHQUFDL0IsQ0FBQyxDQUFDUCxDQUFDLENBQUNrRCxVQUFVLENBQUN6QixDQUFDLEdBQUMsQ0FBQyxDQUFDLENBQUMsSUFBRUEsQ0FBQyxHQUFDLENBQUMsR0FBQyxDQUFDO1VBQUNLLENBQUMsR0FBQ3ZCLENBQUMsQ0FBQ1AsQ0FBQyxDQUFDa0QsVUFBVSxDQUFDekIsQ0FBQyxDQUFDLENBQUMsS0FBRyxDQUFDLEdBQUNBLENBQUMsR0FBQyxDQUFDLEdBQUMsQ0FBQztRQUFDZCxDQUFDLENBQUNHLENBQUMsS0FBRyxDQUFDLENBQUMsSUFBRSxDQUFDd0IsQ0FBQyxHQUFDUixDQUFDLEtBQUcsRUFBRSxHQUFDaEIsQ0FBQyxHQUFDLENBQUMsR0FBQyxDQUFDLEVBQUNBLENBQUMsRUFBRTtNQUFBO01BQUMsT0FBT0YsQ0FBQyxDQUFDSCxNQUFNLENBQUNFLENBQUMsRUFBQ0csQ0FBQyxDQUFDO0lBQUE7SUFBQyxJQUFJUCxDQUFDLEdBQUNQLENBQUM7TUFBQ1csQ0FBQyxHQUFDSixDQUFDLENBQUNNLEdBQUc7TUFBQ0QsQ0FBQyxHQUFDRCxDQUFDLENBQUNlLFNBQVM7TUFBQ1osQ0FBQyxHQUFDUCxDQUFDLENBQUNpQyxHQUFHO0lBQUMxQixDQUFDLENBQUNxRSxNQUFNLEdBQUM7TUFBQ3BELFNBQVMsRUFBQyxTQUFBQSxVQUFTL0IsQ0FBQyxFQUFDO1FBQUMsSUFBSUMsQ0FBQyxHQUFDRCxDQUFDLENBQUMyQixLQUFLO1VBQUNwQixDQUFDLEdBQUNQLENBQUMsQ0FBQzRCLFFBQVE7VUFBQ2pCLENBQUMsR0FBQyxJQUFJLENBQUN5RSxJQUFJO1FBQUNwRixDQUFDLENBQUNpQyxLQUFLLEVBQUU7UUFBQyxLQUFJLElBQUlyQixDQUFDLEdBQUMsRUFBRSxFQUFDRSxDQUFDLEdBQUMsQ0FBQyxFQUFDQSxDQUFDLEdBQUNQLENBQUMsRUFBQ08sQ0FBQyxJQUFFLENBQUMsRUFBQyxLQUFJLElBQUlXLENBQUMsR0FBQ3hCLENBQUMsQ0FBQ2EsQ0FBQyxLQUFHLENBQUMsQ0FBQyxLQUFHLEVBQUUsR0FBQ0EsQ0FBQyxHQUFDLENBQUMsR0FBQyxDQUFDLEdBQUMsR0FBRyxFQUFDd0IsQ0FBQyxHQUFDckMsQ0FBQyxDQUFDYSxDQUFDLEdBQUMsQ0FBQyxLQUFHLENBQUMsQ0FBQyxLQUFHLEVBQUUsR0FBQyxDQUFDQSxDQUFDLEdBQUMsQ0FBQyxJQUFFLENBQUMsR0FBQyxDQUFDLEdBQUMsR0FBRyxFQUFDZ0IsQ0FBQyxHQUFDN0IsQ0FBQyxDQUFDYSxDQUFDLEdBQUMsQ0FBQyxLQUFHLENBQUMsQ0FBQyxLQUFHLEVBQUUsR0FBQyxDQUFDQSxDQUFDLEdBQUMsQ0FBQyxJQUFFLENBQUMsR0FBQyxDQUFDLEdBQUMsR0FBRyxFQUFDZ0MsQ0FBQyxHQUFDckIsQ0FBQyxJQUFFLEVBQUUsR0FBQ2EsQ0FBQyxJQUFFLENBQUMsR0FBQ1IsQ0FBQyxFQUFDcUIsQ0FBQyxHQUFDLENBQUMsRUFBQ0EsQ0FBQyxHQUFDLENBQUMsSUFBRXJDLENBQUMsR0FBQyxHQUFHLEdBQUNxQyxDQUFDLEdBQUM1QyxDQUFDLEVBQUM0QyxDQUFDLEVBQUUsRUFBQ3ZDLENBQUMsQ0FBQzJCLElBQUksQ0FBQzVCLENBQUMsQ0FBQzBFLE1BQU0sQ0FBQ3ZDLENBQUMsS0FBRyxDQUFDLElBQUUsQ0FBQyxHQUFDSyxDQUFDLENBQUMsR0FBQyxFQUFFLENBQUMsQ0FBQztRQUFDLElBQUlPLENBQUMsR0FBQy9DLENBQUMsQ0FBQzBFLE1BQU0sQ0FBQyxFQUFFLENBQUM7UUFBQyxJQUFHM0IsQ0FBQyxFQUFDLE9BQUs5QyxDQUFDLENBQUNpQixNQUFNLEdBQUMsQ0FBQyxHQUFFakIsQ0FBQyxDQUFDMkIsSUFBSSxDQUFDbUIsQ0FBQyxDQUFDO1FBQUMsT0FBTzlDLENBQUMsQ0FBQzhCLElBQUksQ0FBQyxFQUFFLENBQUM7TUFBQSxDQUFDO01BQUNDLEtBQUssRUFBQyxTQUFBQSxNQUFTM0MsQ0FBQyxFQUFDO1FBQUMsSUFBSU8sQ0FBQyxHQUFDUCxDQUFDLENBQUM2QixNQUFNO1VBQUNsQixDQUFDLEdBQUMsSUFBSSxDQUFDeUUsSUFBSTtVQUFDeEUsQ0FBQyxHQUFDLElBQUksQ0FBQzBFLFdBQVc7UUFBQyxJQUFHLENBQUMxRSxDQUFDLEVBQUM7VUFBQ0EsQ0FBQyxHQUFDLElBQUksQ0FBQzBFLFdBQVcsR0FBQyxFQUFFO1VBQUMsS0FBSSxJQUFJeEUsQ0FBQyxHQUFDLENBQUMsRUFBQ0EsQ0FBQyxHQUFDSCxDQUFDLENBQUNrQixNQUFNLEVBQUNmLENBQUMsRUFBRSxFQUFDRixDQUFDLENBQUNELENBQUMsQ0FBQ3VDLFVBQVUsQ0FBQ3BDLENBQUMsQ0FBQyxDQUFDLEdBQUNBLENBQUM7UUFBQTtRQUFDLElBQUlXLENBQUMsR0FBQ2QsQ0FBQyxDQUFDMEUsTUFBTSxDQUFDLEVBQUUsQ0FBQztRQUFDLElBQUc1RCxDQUFDLEVBQUM7VUFBQyxJQUFJYSxDQUFDLEdBQUN0QyxDQUFDLENBQUN1RixPQUFPLENBQUM5RCxDQUFDLENBQUM7VUFBQ2EsQ0FBQyxLQUFHLENBQUMsQ0FBQyxLQUFHL0IsQ0FBQyxHQUFDK0IsQ0FBQyxDQUFDO1FBQUE7UUFBQyxPQUFPckMsQ0FBQyxDQUFDRCxDQUFDLEVBQUNPLENBQUMsRUFBQ0ssQ0FBQyxDQUFDO01BQUEsQ0FBQztNQUFDd0UsSUFBSSxFQUFDO0lBQW1FLENBQUM7RUFBQSxDQUFDLEVBQUUsRUFBQyxVQUFTbkYsQ0FBQyxFQUFDO0lBQUMsU0FBU00sQ0FBQ0EsQ0FBQ1AsQ0FBQyxFQUFDQyxDQUFDLEVBQUNNLENBQUMsRUFBQ0ksQ0FBQyxFQUFDQyxDQUFDLEVBQUNFLENBQUMsRUFBQ1csQ0FBQyxFQUFDO01BQUMsSUFBSWEsQ0FBQyxHQUFDdEMsQ0FBQyxJQUFFQyxDQUFDLEdBQUNNLENBQUMsR0FBQyxDQUFDTixDQUFDLEdBQUNVLENBQUMsQ0FBQyxHQUFDQyxDQUFDLEdBQUNhLENBQUM7TUFBQyxPQUFNLENBQUNhLENBQUMsSUFBRXhCLENBQUMsR0FBQ3dCLENBQUMsS0FBRyxFQUFFLEdBQUN4QixDQUFDLElBQUViLENBQUM7SUFBQTtJQUFDLFNBQVNVLENBQUNBLENBQUNYLENBQUMsRUFBQ0MsQ0FBQyxFQUFDTSxDQUFDLEVBQUNJLENBQUMsRUFBQ0MsQ0FBQyxFQUFDRSxDQUFDLEVBQUNXLENBQUMsRUFBQztNQUFDLElBQUlhLENBQUMsR0FBQ3RDLENBQUMsSUFBRUMsQ0FBQyxHQUFDVSxDQUFDLEdBQUNKLENBQUMsR0FBQyxDQUFDSSxDQUFDLENBQUMsR0FBQ0MsQ0FBQyxHQUFDYSxDQUFDO01BQUMsT0FBTSxDQUFDYSxDQUFDLElBQUV4QixDQUFDLEdBQUN3QixDQUFDLEtBQUcsRUFBRSxHQUFDeEIsQ0FBQyxJQUFFYixDQUFDO0lBQUE7SUFBQyxTQUFTVyxDQUFDQSxDQUFDWixDQUFDLEVBQUNDLENBQUMsRUFBQ00sQ0FBQyxFQUFDSSxDQUFDLEVBQUNDLENBQUMsRUFBQ0UsQ0FBQyxFQUFDVyxDQUFDLEVBQUM7TUFBQyxJQUFJYSxDQUFDLEdBQUN0QyxDQUFDLElBQUVDLENBQUMsR0FBQ00sQ0FBQyxHQUFDSSxDQUFDLENBQUMsR0FBQ0MsQ0FBQyxHQUFDYSxDQUFDO01BQUMsT0FBTSxDQUFDYSxDQUFDLElBQUV4QixDQUFDLEdBQUN3QixDQUFDLEtBQUcsRUFBRSxHQUFDeEIsQ0FBQyxJQUFFYixDQUFDO0lBQUE7SUFBQyxTQUFTYSxDQUFDQSxDQUFDZCxDQUFDLEVBQUNDLENBQUMsRUFBQ00sQ0FBQyxFQUFDSSxDQUFDLEVBQUNDLENBQUMsRUFBQ0UsQ0FBQyxFQUFDVyxDQUFDLEVBQUM7TUFBQyxJQUFJYSxDQUFDLEdBQUN0QyxDQUFDLElBQUVPLENBQUMsSUFBRU4sQ0FBQyxHQUFDLENBQUNVLENBQUMsQ0FBQyxDQUFDLEdBQUNDLENBQUMsR0FBQ2EsQ0FBQztNQUFDLE9BQU0sQ0FBQ2EsQ0FBQyxJQUFFeEIsQ0FBQyxHQUFDd0IsQ0FBQyxLQUFHLEVBQUUsR0FBQ3hCLENBQUMsSUFBRWIsQ0FBQztJQUFBO0lBQUMsSUFBSXdCLENBQUMsR0FBQ3pCLENBQUM7TUFBQ3NDLENBQUMsR0FBQ2IsQ0FBQyxDQUFDWixHQUFHO01BQUNpQixDQUFDLEdBQUNRLENBQUMsQ0FBQ1osU0FBUztNQUFDb0IsQ0FBQyxHQUFDUixDQUFDLENBQUNrQyxNQUFNO01BQUNyQixDQUFDLEdBQUMxQixDQUFDLENBQUN3RCxJQUFJO01BQUN2QixDQUFDLEdBQUMsRUFBRTtJQUFDLENBQUMsWUFBVTtNQUFDLEtBQUksSUFBSTFELENBQUMsR0FBQyxDQUFDLEVBQUNBLENBQUMsR0FBQyxFQUFFLEVBQUNBLENBQUMsRUFBRSxFQUFDMEQsQ0FBQyxDQUFDMUQsQ0FBQyxDQUFDLEdBQUMsVUFBVSxHQUFDQyxDQUFDLENBQUN1RixHQUFHLENBQUN2RixDQUFDLENBQUN3RixHQUFHLENBQUN6RixDQUFDLEdBQUMsQ0FBQyxDQUFDLENBQUMsR0FBQyxDQUFDO0lBQUEsQ0FBQyxFQUFFO0lBQUMsSUFBSXNFLENBQUMsR0FBQ25CLENBQUMsQ0FBQ3VDLEdBQUcsR0FBQzVDLENBQUMsQ0FBQzlCLE1BQU0sQ0FBQztNQUFDMEQsUUFBUSxFQUFDLFNBQUFBLFNBQUEsRUFBVTtRQUFDLElBQUksQ0FBQ2lCLEtBQUssR0FBQyxJQUFJN0QsQ0FBQyxDQUFDWCxJQUFJLENBQUMsQ0FBQyxVQUFVLEVBQUMsVUFBVSxFQUFDLFVBQVUsRUFBQyxTQUFTLENBQUMsQ0FBQztNQUFBLENBQUM7TUFBQ2tELGVBQWUsRUFBQyxTQUFBQSxnQkFBU3JFLENBQUMsRUFBQ0MsQ0FBQyxFQUFDO1FBQUMsS0FBSSxJQUFJd0IsQ0FBQyxHQUFDLENBQUMsRUFBQ0EsQ0FBQyxHQUFDLEVBQUUsRUFBQ0EsQ0FBQyxFQUFFLEVBQUM7VUFBQyxJQUFJYSxDQUFDLEdBQUNyQyxDQUFDLEdBQUN3QixDQUFDO1lBQUNLLENBQUMsR0FBQzlCLENBQUMsQ0FBQ3NDLENBQUMsQ0FBQztVQUFDdEMsQ0FBQyxDQUFDc0MsQ0FBQyxDQUFDLEdBQUMsUUFBUSxJQUFFUixDQUFDLElBQUUsQ0FBQyxHQUFDQSxDQUFDLEtBQUcsRUFBRSxDQUFDLEdBQUMsVUFBVSxJQUFFQSxDQUFDLElBQUUsRUFBRSxHQUFDQSxDQUFDLEtBQUcsQ0FBQyxDQUFDO1FBQUE7UUFBQyxJQUFJZ0IsQ0FBQyxHQUFDLElBQUksQ0FBQzZDLEtBQUssQ0FBQ2hFLEtBQUs7VUFBQ3dCLENBQUMsR0FBQ25ELENBQUMsQ0FBQ0MsQ0FBQyxHQUFDLENBQUMsQ0FBQztVQUFDcUUsQ0FBQyxHQUFDdEUsQ0FBQyxDQUFDQyxDQUFDLEdBQUMsQ0FBQyxDQUFDO1VBQUMyRixDQUFDLEdBQUM1RixDQUFDLENBQUNDLENBQUMsR0FBQyxDQUFDLENBQUM7VUFBQzRGLENBQUMsR0FBQzdGLENBQUMsQ0FBQ0MsQ0FBQyxHQUFDLENBQUMsQ0FBQztVQUFDNkYsQ0FBQyxHQUFDOUYsQ0FBQyxDQUFDQyxDQUFDLEdBQUMsQ0FBQyxDQUFDO1VBQUM4RixDQUFDLEdBQUMvRixDQUFDLENBQUNDLENBQUMsR0FBQyxDQUFDLENBQUM7VUFBQytGLENBQUMsR0FBQ2hHLENBQUMsQ0FBQ0MsQ0FBQyxHQUFDLENBQUMsQ0FBQztVQUFDZ0csQ0FBQyxHQUFDakcsQ0FBQyxDQUFDQyxDQUFDLEdBQUMsQ0FBQyxDQUFDO1VBQUNpRyxDQUFDLEdBQUNsRyxDQUFDLENBQUNDLENBQUMsR0FBQyxDQUFDLENBQUM7VUFBQ2tHLENBQUMsR0FBQ25HLENBQUMsQ0FBQ0MsQ0FBQyxHQUFDLENBQUMsQ0FBQztVQUFDbUcsQ0FBQyxHQUFDcEcsQ0FBQyxDQUFDQyxDQUFDLEdBQUMsRUFBRSxDQUFDO1VBQUNvRyxDQUFDLEdBQUNyRyxDQUFDLENBQUNDLENBQUMsR0FBQyxFQUFFLENBQUM7VUFBQ3FHLENBQUMsR0FBQ3RHLENBQUMsQ0FBQ0MsQ0FBQyxHQUFDLEVBQUUsQ0FBQztVQUFDc0csQ0FBQyxHQUFDdkcsQ0FBQyxDQUFDQyxDQUFDLEdBQUMsRUFBRSxDQUFDO1VBQUN1RyxDQUFDLEdBQUN4RyxDQUFDLENBQUNDLENBQUMsR0FBQyxFQUFFLENBQUM7VUFBQ3dHLENBQUMsR0FBQ3pHLENBQUMsQ0FBQ0MsQ0FBQyxHQUFDLEVBQUUsQ0FBQztVQUFDeUcsQ0FBQyxHQUFDNUQsQ0FBQyxDQUFDLENBQUMsQ0FBQztVQUFDNkQsQ0FBQyxHQUFDN0QsQ0FBQyxDQUFDLENBQUMsQ0FBQztVQUFDOEQsQ0FBQyxHQUFDOUQsQ0FBQyxDQUFDLENBQUMsQ0FBQztVQUFDK0QsQ0FBQyxHQUFDL0QsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUFDNEQsQ0FBQyxHQUFDbkcsQ0FBQyxDQUFDbUcsQ0FBQyxFQUFDQyxDQUFDLEVBQUNDLENBQUMsRUFBQ0MsQ0FBQyxFQUFDMUQsQ0FBQyxFQUFDLENBQUMsRUFBQ08sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUNtRCxDQUFDLEdBQUN0RyxDQUFDLENBQUNzRyxDQUFDLEVBQUNILENBQUMsRUFBQ0MsQ0FBQyxFQUFDQyxDQUFDLEVBQUN0QyxDQUFDLEVBQUMsRUFBRSxFQUFDWixDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBQ2tELENBQUMsR0FBQ3JHLENBQUMsQ0FBQ3FHLENBQUMsRUFBQ0MsQ0FBQyxFQUFDSCxDQUFDLEVBQUNDLENBQUMsRUFBQ2YsQ0FBQyxFQUFDLEVBQUUsRUFBQ2xDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFDaUQsQ0FBQyxHQUFDcEcsQ0FBQyxDQUFDb0csQ0FBQyxFQUFDQyxDQUFDLEVBQUNDLENBQUMsRUFBQ0gsQ0FBQyxFQUFDYixDQUFDLEVBQUMsRUFBRSxFQUFDbkMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUNnRCxDQUFDLEdBQUNuRyxDQUFDLENBQUNtRyxDQUFDLEVBQUNDLENBQUMsRUFBQ0MsQ0FBQyxFQUFDQyxDQUFDLEVBQUNmLENBQUMsRUFBQyxDQUFDLEVBQUNwQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBQ21ELENBQUMsR0FBQ3RHLENBQUMsQ0FBQ3NHLENBQUMsRUFBQ0gsQ0FBQyxFQUFDQyxDQUFDLEVBQUNDLENBQUMsRUFBQ2IsQ0FBQyxFQUFDLEVBQUUsRUFBQ3JDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFDa0QsQ0FBQyxHQUFDckcsQ0FBQyxDQUFDcUcsQ0FBQyxFQUFDQyxDQUFDLEVBQUNILENBQUMsRUFBQ0MsQ0FBQyxFQUFDWCxDQUFDLEVBQUMsRUFBRSxFQUFDdEMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUNpRCxDQUFDLEdBQUNwRyxDQUFDLENBQUNvRyxDQUFDLEVBQUNDLENBQUMsRUFBQ0MsQ0FBQyxFQUFDSCxDQUFDLEVBQUNULENBQUMsRUFBQyxFQUFFLEVBQUN2QyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBQ2dELENBQUMsR0FBQ25HLENBQUMsQ0FBQ21HLENBQUMsRUFBQ0MsQ0FBQyxFQUFDQyxDQUFDLEVBQUNDLENBQUMsRUFBQ1gsQ0FBQyxFQUFDLENBQUMsRUFBQ3hDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFDbUQsQ0FBQyxHQUFDdEcsQ0FBQyxDQUFDc0csQ0FBQyxFQUFDSCxDQUFDLEVBQUNDLENBQUMsRUFBQ0MsQ0FBQyxFQUFDVCxDQUFDLEVBQUMsRUFBRSxFQUFDekMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUNrRCxDQUFDLEdBQUNyRyxDQUFDLENBQUNxRyxDQUFDLEVBQUNDLENBQUMsRUFBQ0gsQ0FBQyxFQUFDQyxDQUFDLEVBQUNQLENBQUMsRUFBQyxFQUFFLEVBQUMxQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBQ2lELENBQUMsR0FBQ3BHLENBQUMsQ0FBQ29HLENBQUMsRUFBQ0MsQ0FBQyxFQUFDQyxDQUFDLEVBQUNILENBQUMsRUFBQ0wsQ0FBQyxFQUFDLEVBQUUsRUFBQzNDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFDZ0QsQ0FBQyxHQUFDbkcsQ0FBQyxDQUFDbUcsQ0FBQyxFQUFDQyxDQUFDLEVBQUNDLENBQUMsRUFBQ0MsQ0FBQyxFQUFDUCxDQUFDLEVBQUMsQ0FBQyxFQUFDNUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUNtRCxDQUFDLEdBQUN0RyxDQUFDLENBQUNzRyxDQUFDLEVBQUNILENBQUMsRUFBQ0MsQ0FBQyxFQUFDQyxDQUFDLEVBQUNMLENBQUMsRUFBQyxFQUFFLEVBQUM3QyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBQ2tELENBQUMsR0FBQ3JHLENBQUMsQ0FBQ3FHLENBQUMsRUFBQ0MsQ0FBQyxFQUFDSCxDQUFDLEVBQUNDLENBQUMsRUFBQ0gsQ0FBQyxFQUFDLEVBQUUsRUFBQzlDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFDaUQsQ0FBQyxHQUFDcEcsQ0FBQyxDQUFDb0csQ0FBQyxFQUFDQyxDQUFDLEVBQUNDLENBQUMsRUFBQ0gsQ0FBQyxFQUFDRCxDQUFDLEVBQUMsRUFBRSxFQUFDL0MsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUNnRCxDQUFDLEdBQUMvRixDQUFDLENBQUMrRixDQUFDLEVBQUNDLENBQUMsRUFBQ0MsQ0FBQyxFQUFDQyxDQUFDLEVBQUN2QyxDQUFDLEVBQUMsQ0FBQyxFQUFDWixDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBQ21ELENBQUMsR0FBQ2xHLENBQUMsQ0FBQ2tHLENBQUMsRUFBQ0gsQ0FBQyxFQUFDQyxDQUFDLEVBQUNDLENBQUMsRUFBQ1osQ0FBQyxFQUFDLENBQUMsRUFBQ3RDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFDa0QsQ0FBQyxHQUFDakcsQ0FBQyxDQUFDaUcsQ0FBQyxFQUFDQyxDQUFDLEVBQUNILENBQUMsRUFBQ0MsQ0FBQyxFQUFDTixDQUFDLEVBQUMsRUFBRSxFQUFDM0MsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUNpRCxDQUFDLEdBQUNoRyxDQUFDLENBQUNnRyxDQUFDLEVBQUNDLENBQUMsRUFBQ0MsQ0FBQyxFQUFDSCxDQUFDLEVBQUN2RCxDQUFDLEVBQUMsRUFBRSxFQUFDTyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBQ2dELENBQUMsR0FBQy9GLENBQUMsQ0FBQytGLENBQUMsRUFBQ0MsQ0FBQyxFQUFDQyxDQUFDLEVBQUNDLENBQUMsRUFBQ2QsQ0FBQyxFQUFDLENBQUMsRUFBQ3JDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFDbUQsQ0FBQyxHQUFDbEcsQ0FBQyxDQUFDa0csQ0FBQyxFQUFDSCxDQUFDLEVBQUNDLENBQUMsRUFBQ0MsQ0FBQyxFQUFDUixDQUFDLEVBQUMsQ0FBQyxFQUFDMUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUNrRCxDQUFDLEdBQUNqRyxDQUFDLENBQUNpRyxDQUFDLEVBQUNDLENBQUMsRUFBQ0gsQ0FBQyxFQUFDQyxDQUFDLEVBQUNGLENBQUMsRUFBQyxFQUFFLEVBQUMvQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBQ2lELENBQUMsR0FBQ2hHLENBQUMsQ0FBQ2dHLENBQUMsRUFBQ0MsQ0FBQyxFQUFDQyxDQUFDLEVBQUNILENBQUMsRUFBQ1osQ0FBQyxFQUFDLEVBQUUsRUFBQ3BDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFDZ0QsQ0FBQyxHQUFDL0YsQ0FBQyxDQUFDK0YsQ0FBQyxFQUFDQyxDQUFDLEVBQUNDLENBQUMsRUFBQ0MsQ0FBQyxFQUFDVixDQUFDLEVBQUMsQ0FBQyxFQUFDekMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUNtRCxDQUFDLEdBQUNsRyxDQUFDLENBQUNrRyxDQUFDLEVBQUNILENBQUMsRUFBQ0MsQ0FBQyxFQUFDQyxDQUFDLEVBQUNKLENBQUMsRUFBQyxDQUFDLEVBQUM5QyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBQ2tELENBQUMsR0FBQ2pHLENBQUMsQ0FBQ2lHLENBQUMsRUFBQ0MsQ0FBQyxFQUFDSCxDQUFDLEVBQUNDLENBQUMsRUFBQ2QsQ0FBQyxFQUFDLEVBQUUsRUFBQ25DLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFDaUQsQ0FBQyxHQUFDaEcsQ0FBQyxDQUFDZ0csQ0FBQyxFQUFDQyxDQUFDLEVBQUNDLENBQUMsRUFBQ0gsQ0FBQyxFQUFDUixDQUFDLEVBQUMsRUFBRSxFQUFDeEMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUNnRCxDQUFDLEdBQUMvRixDQUFDLENBQUMrRixDQUFDLEVBQUNDLENBQUMsRUFBQ0MsQ0FBQyxFQUFDQyxDQUFDLEVBQUNOLENBQUMsRUFBQyxDQUFDLEVBQUM3QyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBQ21ELENBQUMsR0FBQ2xHLENBQUMsQ0FBQ2tHLENBQUMsRUFBQ0gsQ0FBQyxFQUFDQyxDQUFDLEVBQUNDLENBQUMsRUFBQ2hCLENBQUMsRUFBQyxDQUFDLEVBQUNsQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBQ2tELENBQUMsR0FBQ2pHLENBQUMsQ0FBQ2lHLENBQUMsRUFBQ0MsQ0FBQyxFQUFDSCxDQUFDLEVBQUNDLENBQUMsRUFBQ1YsQ0FBQyxFQUFDLEVBQUUsRUFBQ3ZDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFDaUQsQ0FBQyxHQUFDaEcsQ0FBQyxDQUFDZ0csQ0FBQyxFQUFDQyxDQUFDLEVBQUNDLENBQUMsRUFBQ0gsQ0FBQyxFQUFDSixDQUFDLEVBQUMsRUFBRSxFQUFDNUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUNnRCxDQUFDLEdBQUM5RixDQUFDLENBQUM4RixDQUFDLEVBQUNDLENBQUMsRUFBQ0MsQ0FBQyxFQUFDQyxDQUFDLEVBQUNkLENBQUMsRUFBQyxDQUFDLEVBQUNyQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBQ21ELENBQUMsR0FBQ2pHLENBQUMsQ0FBQ2lHLENBQUMsRUFBQ0gsQ0FBQyxFQUFDQyxDQUFDLEVBQUNDLENBQUMsRUFBQ1YsQ0FBQyxFQUFDLEVBQUUsRUFBQ3hDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFDa0QsQ0FBQyxHQUFDaEcsQ0FBQyxDQUFDZ0csQ0FBQyxFQUFDQyxDQUFDLEVBQUNILENBQUMsRUFBQ0MsQ0FBQyxFQUFDTixDQUFDLEVBQUMsRUFBRSxFQUFDM0MsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUNpRCxDQUFDLEdBQUMvRixDQUFDLENBQUMrRixDQUFDLEVBQUNDLENBQUMsRUFBQ0MsQ0FBQyxFQUFDSCxDQUFDLEVBQUNGLENBQUMsRUFBQyxFQUFFLEVBQUM5QyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBQ2dELENBQUMsR0FBQzlGLENBQUMsQ0FBQzhGLENBQUMsRUFBQ0MsQ0FBQyxFQUFDQyxDQUFDLEVBQUNDLENBQUMsRUFBQ3ZDLENBQUMsRUFBQyxDQUFDLEVBQUNaLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFDbUQsQ0FBQyxHQUFDakcsQ0FBQyxDQUFDaUcsQ0FBQyxFQUFDSCxDQUFDLEVBQUNDLENBQUMsRUFBQ0MsQ0FBQyxFQUFDZCxDQUFDLEVBQUMsRUFBRSxFQUFDcEMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUNrRCxDQUFDLEdBQUNoRyxDQUFDLENBQUNnRyxDQUFDLEVBQUNDLENBQUMsRUFBQ0gsQ0FBQyxFQUFDQyxDQUFDLEVBQUNWLENBQUMsRUFBQyxFQUFFLEVBQUN2QyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBQ2lELENBQUMsR0FBQy9GLENBQUMsQ0FBQytGLENBQUMsRUFBQ0MsQ0FBQyxFQUFDQyxDQUFDLEVBQUNILENBQUMsRUFBQ04sQ0FBQyxFQUFDLEVBQUUsRUFBQzFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFDZ0QsQ0FBQyxHQUFDOUYsQ0FBQyxDQUFDOEYsQ0FBQyxFQUFDQyxDQUFDLEVBQUNDLENBQUMsRUFBQ0MsQ0FBQyxFQUFDTixDQUFDLEVBQUMsQ0FBQyxFQUFDN0MsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUNtRCxDQUFDLEdBQUNqRyxDQUFDLENBQUNpRyxDQUFDLEVBQUNILENBQUMsRUFBQ0MsQ0FBQyxFQUFDQyxDQUFDLEVBQUN6RCxDQUFDLEVBQUMsRUFBRSxFQUFDTyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBQ2tELENBQUMsR0FBQ2hHLENBQUMsQ0FBQ2dHLENBQUMsRUFBQ0MsQ0FBQyxFQUFDSCxDQUFDLEVBQUNDLENBQUMsRUFBQ2QsQ0FBQyxFQUFDLEVBQUUsRUFBQ25DLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFDaUQsQ0FBQyxHQUFDL0YsQ0FBQyxDQUFDK0YsQ0FBQyxFQUFDQyxDQUFDLEVBQUNDLENBQUMsRUFBQ0gsQ0FBQyxFQUFDVixDQUFDLEVBQUMsRUFBRSxFQUFDdEMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUNnRCxDQUFDLEdBQUM5RixDQUFDLENBQUM4RixDQUFDLEVBQUNDLENBQUMsRUFBQ0MsQ0FBQyxFQUFDQyxDQUFDLEVBQUNWLENBQUMsRUFBQyxDQUFDLEVBQUN6QyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBQ21ELENBQUMsR0FBQ2pHLENBQUMsQ0FBQ2lHLENBQUMsRUFBQ0gsQ0FBQyxFQUFDQyxDQUFDLEVBQUNDLENBQUMsRUFBQ04sQ0FBQyxFQUFDLEVBQUUsRUFBQzVDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFDa0QsQ0FBQyxHQUFDaEcsQ0FBQyxDQUFDZ0csQ0FBQyxFQUFDQyxDQUFDLEVBQUNILENBQUMsRUFBQ0MsQ0FBQyxFQUFDRixDQUFDLEVBQUMsRUFBRSxFQUFDL0MsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUNpRCxDQUFDLEdBQUMvRixDQUFDLENBQUMrRixDQUFDLEVBQUNDLENBQUMsRUFBQ0MsQ0FBQyxFQUFDSCxDQUFDLEVBQUNkLENBQUMsRUFBQyxFQUFFLEVBQUNsQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBQ2dELENBQUMsR0FBQzVGLENBQUMsQ0FBQzRGLENBQUMsRUFBQ0MsQ0FBQyxFQUFDQyxDQUFDLEVBQUNDLENBQUMsRUFBQzFELENBQUMsRUFBQyxDQUFDLEVBQUNPLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFDbUQsQ0FBQyxHQUFDL0YsQ0FBQyxDQUFDK0YsQ0FBQyxFQUFDSCxDQUFDLEVBQUNDLENBQUMsRUFBQ0MsQ0FBQyxFQUFDWCxDQUFDLEVBQUMsRUFBRSxFQUFDdkMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUNrRCxDQUFDLEdBQUM5RixDQUFDLENBQUM4RixDQUFDLEVBQUNDLENBQUMsRUFBQ0gsQ0FBQyxFQUFDQyxDQUFDLEVBQUNILENBQUMsRUFBQyxFQUFFLEVBQUM5QyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBQ2lELENBQUMsR0FBQzdGLENBQUMsQ0FBQzZGLENBQUMsRUFBQ0MsQ0FBQyxFQUFDQyxDQUFDLEVBQUNILENBQUMsRUFBQ1gsQ0FBQyxFQUFDLEVBQUUsRUFBQ3JDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFDZ0QsQ0FBQyxHQUFDNUYsQ0FBQyxDQUFDNEYsQ0FBQyxFQUFDQyxDQUFDLEVBQUNDLENBQUMsRUFBQ0MsQ0FBQyxFQUFDUCxDQUFDLEVBQUMsQ0FBQyxFQUFDNUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUNtRCxDQUFDLEdBQUMvRixDQUFDLENBQUMrRixDQUFDLEVBQUNILENBQUMsRUFBQ0MsQ0FBQyxFQUFDQyxDQUFDLEVBQUNmLENBQUMsRUFBQyxFQUFFLEVBQUNuQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBQ2tELENBQUMsR0FBQzlGLENBQUMsQ0FBQzhGLENBQUMsRUFBQ0MsQ0FBQyxFQUFDSCxDQUFDLEVBQUNDLENBQUMsRUFBQ1AsQ0FBQyxFQUFDLEVBQUUsRUFBQzFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFDaUQsQ0FBQyxHQUFDN0YsQ0FBQyxDQUFDNkYsQ0FBQyxFQUFDQyxDQUFDLEVBQUNDLENBQUMsRUFBQ0gsQ0FBQyxFQUFDcEMsQ0FBQyxFQUFDLEVBQUUsRUFBQ1osQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUNnRCxDQUFDLEdBQUM1RixDQUFDLENBQUM0RixDQUFDLEVBQUNDLENBQUMsRUFBQ0MsQ0FBQyxFQUFDQyxDQUFDLEVBQUNYLENBQUMsRUFBQyxDQUFDLEVBQUN4QyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBQ21ELENBQUMsR0FBQy9GLENBQUMsQ0FBQytGLENBQUMsRUFBQ0gsQ0FBQyxFQUFDQyxDQUFDLEVBQUNDLENBQUMsRUFBQ0gsQ0FBQyxFQUFDLEVBQUUsRUFBQy9DLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFDa0QsQ0FBQyxHQUFDOUYsQ0FBQyxDQUFDOEYsQ0FBQyxFQUFDQyxDQUFDLEVBQUNILENBQUMsRUFBQ0MsQ0FBQyxFQUFDWCxDQUFDLEVBQUMsRUFBRSxFQUFDdEMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUNpRCxDQUFDLEdBQUM3RixDQUFDLENBQUM2RixDQUFDLEVBQUNDLENBQUMsRUFBQ0MsQ0FBQyxFQUFDSCxDQUFDLEVBQUNILENBQUMsRUFBQyxFQUFFLEVBQUM3QyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBQ2dELENBQUMsR0FBQzVGLENBQUMsQ0FBQzRGLENBQUMsRUFBQ0MsQ0FBQyxFQUFDQyxDQUFDLEVBQUNDLENBQUMsRUFBQ2YsQ0FBQyxFQUFDLENBQUMsRUFBQ3BDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFDbUQsQ0FBQyxHQUFDL0YsQ0FBQyxDQUFDK0YsQ0FBQyxFQUFDSCxDQUFDLEVBQUNDLENBQUMsRUFBQ0MsQ0FBQyxFQUFDUCxDQUFDLEVBQUMsRUFBRSxFQUFDM0MsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUNrRCxDQUFDLEdBQUM5RixDQUFDLENBQUM4RixDQUFDLEVBQUNDLENBQUMsRUFBQ0gsQ0FBQyxFQUFDQyxDQUFDLEVBQUNmLENBQUMsRUFBQyxFQUFFLEVBQUNsQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBQ2lELENBQUMsR0FBQzdGLENBQUMsQ0FBQzZGLENBQUMsRUFBQ0MsQ0FBQyxFQUFDQyxDQUFDLEVBQUNILENBQUMsRUFBQ1AsQ0FBQyxFQUFDLEVBQUUsRUFBQ3pDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFDWixDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUNBLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBQzRELENBQUMsR0FBQyxDQUFDLEVBQUM1RCxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUNBLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBQzZELENBQUMsR0FBQyxDQUFDLEVBQUM3RCxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUNBLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBQzhELENBQUMsR0FBQyxDQUFDLEVBQUM5RCxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUNBLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBQytELENBQUMsR0FBQyxDQUFDO01BQUEsQ0FBQztNQUFDaEMsV0FBVyxFQUFDLFNBQUFBLFlBQUEsRUFBVTtRQUFDLElBQUk3RSxDQUFDLEdBQUMsSUFBSSxDQUFDNkQsS0FBSztVQUFDdEQsQ0FBQyxHQUFDUCxDQUFDLENBQUMyQixLQUFLO1VBQUNoQixDQUFDLEdBQUMsQ0FBQyxHQUFDLElBQUksQ0FBQ21ELFdBQVc7VUFBQ2xELENBQUMsR0FBQyxDQUFDLEdBQUNaLENBQUMsQ0FBQzRCLFFBQVE7UUFBQ3JCLENBQUMsQ0FBQ0ssQ0FBQyxLQUFHLENBQUMsQ0FBQyxJQUFFLEdBQUcsSUFBRSxFQUFFLEdBQUNBLENBQUMsR0FBQyxFQUFFO1FBQUMsSUFBSUUsQ0FBQyxHQUFDYixDQUFDLENBQUM2RyxLQUFLLENBQUNuRyxDQUFDLEdBQUMsVUFBVSxDQUFDO1VBQUNjLENBQUMsR0FBQ2QsQ0FBQztRQUFDSixDQUFDLENBQUMsQ0FBQ0ssQ0FBQyxHQUFDLEVBQUUsS0FBRyxDQUFDLElBQUUsQ0FBQyxJQUFFLEVBQUUsQ0FBQyxHQUFDLFFBQVEsSUFBRUUsQ0FBQyxJQUFFLENBQUMsR0FBQ0EsQ0FBQyxLQUFHLEVBQUUsQ0FBQyxHQUFDLFVBQVUsSUFBRUEsQ0FBQyxJQUFFLEVBQUUsR0FBQ0EsQ0FBQyxLQUFHLENBQUMsQ0FBQyxFQUFDUCxDQUFDLENBQUMsQ0FBQ0ssQ0FBQyxHQUFDLEVBQUUsS0FBRyxDQUFDLElBQUUsQ0FBQyxJQUFFLEVBQUUsQ0FBQyxHQUFDLFFBQVEsSUFBRWEsQ0FBQyxJQUFFLENBQUMsR0FBQ0EsQ0FBQyxLQUFHLEVBQUUsQ0FBQyxHQUFDLFVBQVUsSUFBRUEsQ0FBQyxJQUFFLEVBQUUsR0FBQ0EsQ0FBQyxLQUFHLENBQUMsQ0FBQyxFQUFDekIsQ0FBQyxDQUFDNEIsUUFBUSxHQUFDLENBQUMsSUFBRXJCLENBQUMsQ0FBQ3NCLE1BQU0sR0FBQyxDQUFDLENBQUMsRUFBQyxJQUFJLENBQUNtQyxRQUFRLEVBQUU7UUFBQyxLQUFJLElBQUkxQixDQUFDLEdBQUMsSUFBSSxDQUFDcUQsS0FBSyxFQUFDN0QsQ0FBQyxHQUFDUSxDQUFDLENBQUNYLEtBQUssRUFBQ21CLENBQUMsR0FBQyxDQUFDLEVBQUNBLENBQUMsR0FBQyxDQUFDLEVBQUNBLENBQUMsRUFBRSxFQUFDO1VBQUMsSUFBSUssQ0FBQyxHQUFDckIsQ0FBQyxDQUFDZ0IsQ0FBQyxDQUFDO1VBQUNoQixDQUFDLENBQUNnQixDQUFDLENBQUMsR0FBQyxRQUFRLElBQUVLLENBQUMsSUFBRSxDQUFDLEdBQUNBLENBQUMsS0FBRyxFQUFFLENBQUMsR0FBQyxVQUFVLElBQUVBLENBQUMsSUFBRSxFQUFFLEdBQUNBLENBQUMsS0FBRyxDQUFDLENBQUM7UUFBQTtRQUFDLE9BQU9iLENBQUM7TUFBQSxDQUFDO01BQUNkLEtBQUssRUFBQyxTQUFBQSxNQUFBLEVBQVU7UUFBQyxJQUFJeEIsQ0FBQyxHQUFDOEMsQ0FBQyxDQUFDdEIsS0FBSyxDQUFDVyxJQUFJLENBQUMsSUFBSSxDQUFDO1FBQUMsT0FBT25DLENBQUMsQ0FBQzJGLEtBQUssR0FBQyxJQUFJLENBQUNBLEtBQUssQ0FBQ25FLEtBQUssRUFBRSxFQUFDeEIsQ0FBQztNQUFBO0lBQUMsQ0FBQyxDQUFDO0lBQUN5QixDQUFDLENBQUNpRSxHQUFHLEdBQUM1QyxDQUFDLENBQUNnQyxhQUFhLENBQUNSLENBQUMsQ0FBQyxFQUFDN0MsQ0FBQyxDQUFDc0YsT0FBTyxHQUFDakUsQ0FBQyxDQUFDaUMsaUJBQWlCLENBQUNULENBQUMsQ0FBQztFQUFBLENBQUMsQ0FBQ1ksSUFBSSxDQUFDLEVBQUMsWUFBVTtJQUFDLElBQUlqRixDQUFDLEdBQUNELENBQUM7TUFBQ08sQ0FBQyxHQUFDTixDQUFDLENBQUNZLEdBQUc7TUFBQ0YsQ0FBQyxHQUFDSixDQUFDLENBQUNtQixTQUFTO01BQUNkLENBQUMsR0FBQ0wsQ0FBQyxDQUFDaUUsTUFBTTtNQUFDMUQsQ0FBQyxHQUFDYixDQUFDLENBQUNnRixJQUFJO01BQUN4RCxDQUFDLEdBQUMsRUFBRTtNQUFDYSxDQUFDLEdBQUN4QixDQUFDLENBQUNrRyxJQUFJLEdBQUNwRyxDQUFDLENBQUNJLE1BQU0sQ0FBQztRQUFDMEQsUUFBUSxFQUFDLFNBQUFBLFNBQUEsRUFBVTtVQUFDLElBQUksQ0FBQ2lCLEtBQUssR0FBQyxJQUFJaEYsQ0FBQyxDQUFDUSxJQUFJLENBQUMsQ0FBQyxVQUFVLEVBQUMsVUFBVSxFQUFDLFVBQVUsRUFBQyxTQUFTLEVBQUMsVUFBVSxDQUFDLENBQUM7UUFBQSxDQUFDO1FBQUNrRCxlQUFlLEVBQUMsU0FBQUEsZ0JBQVNyRSxDQUFDLEVBQUNDLENBQUMsRUFBQztVQUFDLEtBQUksSUFBSU0sQ0FBQyxHQUFDLElBQUksQ0FBQ29GLEtBQUssQ0FBQ2hFLEtBQUssRUFBQ2hCLENBQUMsR0FBQ0osQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFDSyxDQUFDLEdBQUNMLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBQ08sQ0FBQyxHQUFDUCxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUMrQixDQUFDLEdBQUMvQixDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUN1QixDQUFDLEdBQUN2QixDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUN1QyxDQUFDLEdBQUMsQ0FBQyxFQUFDQSxDQUFDLEdBQUMsRUFBRSxFQUFDQSxDQUFDLEVBQUUsRUFBQztZQUFDLElBQUdBLENBQUMsR0FBQyxFQUFFLEVBQUNyQixDQUFDLENBQUNxQixDQUFDLENBQUMsR0FBQyxDQUFDLEdBQUM5QyxDQUFDLENBQUNDLENBQUMsR0FBQzZDLENBQUMsQ0FBQyxDQUFDLEtBQUk7Y0FBQyxJQUFJSyxDQUFDLEdBQUMxQixDQUFDLENBQUNxQixDQUFDLEdBQUMsQ0FBQyxDQUFDLEdBQUNyQixDQUFDLENBQUNxQixDQUFDLEdBQUMsQ0FBQyxDQUFDLEdBQUNyQixDQUFDLENBQUNxQixDQUFDLEdBQUMsRUFBRSxDQUFDLEdBQUNyQixDQUFDLENBQUNxQixDQUFDLEdBQUMsRUFBRSxDQUFDO2NBQUNyQixDQUFDLENBQUNxQixDQUFDLENBQUMsR0FBQ0ssQ0FBQyxJQUFFLENBQUMsR0FBQ0EsQ0FBQyxLQUFHLEVBQUU7WUFBQTtZQUFDLElBQUlPLENBQUMsR0FBQyxDQUFDL0MsQ0FBQyxJQUFFLENBQUMsR0FBQ0EsQ0FBQyxLQUFHLEVBQUUsSUFBRW1CLENBQUMsR0FBQ0wsQ0FBQyxDQUFDcUIsQ0FBQyxDQUFDO1lBQUNZLENBQUMsSUFBRVosQ0FBQyxHQUFDLEVBQUUsR0FBQyxDQUFDbEMsQ0FBQyxHQUFDRSxDQUFDLEdBQUMsQ0FBQ0YsQ0FBQyxHQUFDMEIsQ0FBQyxJQUFFLFVBQVUsR0FBQ1EsQ0FBQyxHQUFDLEVBQUUsR0FBQyxDQUFDbEMsQ0FBQyxHQUFDRSxDQUFDLEdBQUN3QixDQUFDLElBQUUsVUFBVSxHQUFDUSxDQUFDLEdBQUMsRUFBRSxHQUFDLENBQUNsQyxDQUFDLEdBQUNFLENBQUMsR0FBQ0YsQ0FBQyxHQUFDMEIsQ0FBQyxHQUFDeEIsQ0FBQyxHQUFDd0IsQ0FBQyxJQUFFLFVBQVUsR0FBQyxDQUFDMUIsQ0FBQyxHQUFDRSxDQUFDLEdBQUN3QixDQUFDLElBQUUsU0FBUyxFQUFDUixDQUFDLEdBQUNRLENBQUMsRUFBQ0EsQ0FBQyxHQUFDeEIsQ0FBQyxFQUFDQSxDQUFDLEdBQUNGLENBQUMsSUFBRSxFQUFFLEdBQUNBLENBQUMsS0FBRyxDQUFDLEVBQUNBLENBQUMsR0FBQ0QsQ0FBQyxFQUFDQSxDQUFDLEdBQUMrQyxDQUFDO1VBQUE7VUFBQ25ELENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBQ0EsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFDSSxDQUFDLEdBQUMsQ0FBQyxFQUFDSixDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUNBLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBQ0ssQ0FBQyxHQUFDLENBQUMsRUFBQ0wsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFDQSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUNPLENBQUMsR0FBQyxDQUFDLEVBQUNQLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBQ0EsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFDK0IsQ0FBQyxHQUFDLENBQUMsRUFBQy9CLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBQ0EsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFDdUIsQ0FBQyxHQUFDLENBQUM7UUFBQSxDQUFDO1FBQUMrQyxXQUFXLEVBQUMsU0FBQUEsWUFBQSxFQUFVO1VBQUMsSUFBSTdFLENBQUMsR0FBQyxJQUFJLENBQUM2RCxLQUFLO1lBQUM1RCxDQUFDLEdBQUNELENBQUMsQ0FBQzJCLEtBQUs7WUFBQ3BCLENBQUMsR0FBQyxDQUFDLEdBQUMsSUFBSSxDQUFDdUQsV0FBVztZQUFDbkQsQ0FBQyxHQUFDLENBQUMsR0FBQ1gsQ0FBQyxDQUFDNEIsUUFBUTtVQUFDLE9BQU8zQixDQUFDLENBQUNVLENBQUMsS0FBRyxDQUFDLENBQUMsSUFBRSxHQUFHLElBQUUsRUFBRSxHQUFDQSxDQUFDLEdBQUMsRUFBRSxFQUFDVixDQUFDLENBQUMsQ0FBQ1UsQ0FBQyxHQUFDLEVBQUUsS0FBRyxDQUFDLElBQUUsQ0FBQyxJQUFFLEVBQUUsQ0FBQyxHQUFDdUUsSUFBSSxDQUFDNEIsS0FBSyxDQUFDdkcsQ0FBQyxHQUFDLFVBQVUsQ0FBQyxFQUFDTixDQUFDLENBQUMsQ0FBQ1UsQ0FBQyxHQUFDLEVBQUUsS0FBRyxDQUFDLElBQUUsQ0FBQyxJQUFFLEVBQUUsQ0FBQyxHQUFDSixDQUFDLEVBQUNQLENBQUMsQ0FBQzRCLFFBQVEsR0FBQyxDQUFDLEdBQUMzQixDQUFDLENBQUM0QixNQUFNLEVBQUMsSUFBSSxDQUFDbUMsUUFBUSxFQUFFLEVBQUMsSUFBSSxDQUFDMkIsS0FBSztRQUFBLENBQUM7UUFBQ25FLEtBQUssRUFBQyxTQUFBQSxNQUFBLEVBQVU7VUFBQyxJQUFJeEIsQ0FBQyxHQUFDWSxDQUFDLENBQUNZLEtBQUssQ0FBQ1csSUFBSSxDQUFDLElBQUksQ0FBQztVQUFDLE9BQU9uQyxDQUFDLENBQUMyRixLQUFLLEdBQUMsSUFBSSxDQUFDQSxLQUFLLENBQUNuRSxLQUFLLEVBQUUsRUFBQ3hCLENBQUM7UUFBQTtNQUFDLENBQUMsQ0FBQztJQUFDQyxDQUFDLENBQUMrRyxJQUFJLEdBQUNwRyxDQUFDLENBQUNrRSxhQUFhLENBQUN4QyxDQUFDLENBQUMsRUFBQ3JDLENBQUMsQ0FBQ2dILFFBQVEsR0FBQ3JHLENBQUMsQ0FBQ21FLGlCQUFpQixDQUFDekMsQ0FBQyxDQUFDO0VBQUEsQ0FBQyxFQUFFLEVBQUMsVUFBU3JDLENBQUMsRUFBQztJQUFDLElBQUlNLENBQUMsR0FBQ1AsQ0FBQztNQUFDVyxDQUFDLEdBQUNKLENBQUMsQ0FBQ00sR0FBRztNQUFDRCxDQUFDLEdBQUNELENBQUMsQ0FBQ2UsU0FBUztNQUFDWixDQUFDLEdBQUNILENBQUMsQ0FBQzZELE1BQU07TUFBQy9DLENBQUMsR0FBQ2xCLENBQUMsQ0FBQzBFLElBQUk7TUFBQzNDLENBQUMsR0FBQyxFQUFFO01BQUNSLENBQUMsR0FBQyxFQUFFO0lBQUMsQ0FBQyxZQUFVO01BQUMsU0FBUzlCLENBQUNBLENBQUNBLENBQUMsRUFBQztRQUFDLEtBQUksSUFBSU8sQ0FBQyxHQUFDTixDQUFDLENBQUNpSCxJQUFJLENBQUNsSCxDQUFDLENBQUMsRUFBQ1csQ0FBQyxHQUFDLENBQUMsRUFBQ0EsQ0FBQyxJQUFFSixDQUFDLEVBQUNJLENBQUMsRUFBRSxFQUFDLElBQUcsRUFBRVgsQ0FBQyxHQUFDVyxDQUFDLENBQUMsRUFBQyxPQUFNLENBQUMsQ0FBQztRQUFDLE9BQU0sQ0FBQyxDQUFDO01BQUE7TUFBQyxTQUFTSixDQUFDQSxDQUFDUCxDQUFDLEVBQUM7UUFBQyxPQUFPLFVBQVUsSUFBRUEsQ0FBQyxJQUFFLENBQUMsR0FBQ0EsQ0FBQyxDQUFDLENBQUMsR0FBQyxDQUFDO01BQUE7TUFBQyxLQUFJLElBQUlXLENBQUMsR0FBQyxDQUFDLEVBQUNDLENBQUMsR0FBQyxDQUFDLEVBQUNBLENBQUMsR0FBQyxFQUFFLEdBQUVaLENBQUMsQ0FBQ1csQ0FBQyxDQUFDLEtBQUdDLENBQUMsR0FBQyxDQUFDLEtBQUcwQixDQUFDLENBQUMxQixDQUFDLENBQUMsR0FBQ0wsQ0FBQyxDQUFDTixDQUFDLENBQUNrSCxHQUFHLENBQUN4RyxDQUFDLEVBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFDbUIsQ0FBQyxDQUFDbEIsQ0FBQyxDQUFDLEdBQUNMLENBQUMsQ0FBQ04sQ0FBQyxDQUFDa0gsR0FBRyxDQUFDeEcsQ0FBQyxFQUFDLENBQUMsR0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFDQyxDQUFDLEVBQUUsQ0FBQyxFQUFDRCxDQUFDLEVBQUU7SUFBQSxDQUFDLEVBQUU7SUFBQyxJQUFJbUMsQ0FBQyxHQUFDLEVBQUU7TUFBQ0ssQ0FBQyxHQUFDMUIsQ0FBQyxDQUFDMkYsTUFBTSxHQUFDdEcsQ0FBQyxDQUFDRSxNQUFNLENBQUM7UUFBQzBELFFBQVEsRUFBQyxTQUFBQSxTQUFBLEVBQVU7VUFBQyxJQUFJLENBQUNpQixLQUFLLEdBQUMsSUFBSS9FLENBQUMsQ0FBQ08sSUFBSSxDQUFDbUIsQ0FBQyxDQUFDRixLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFBQSxDQUFDO1FBQUNpQyxlQUFlLEVBQUMsU0FBQUEsZ0JBQVNyRSxDQUFDLEVBQUNDLENBQUMsRUFBQztVQUFDLEtBQUksSUFBSU0sQ0FBQyxHQUFDLElBQUksQ0FBQ29GLEtBQUssQ0FBQ2hFLEtBQUssRUFBQ2hCLENBQUMsR0FBQ0osQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFDSyxDQUFDLEdBQUNMLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBQ08sQ0FBQyxHQUFDUCxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUNrQixDQUFDLEdBQUNsQixDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUMrQixDQUFDLEdBQUMvQixDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUM0QyxDQUFDLEdBQUM1QyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUNtRCxDQUFDLEdBQUNuRCxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUMrRCxDQUFDLEdBQUMvRCxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUNxRixDQUFDLEdBQUMsQ0FBQyxFQUFDQSxDQUFDLEdBQUMsRUFBRSxFQUFDQSxDQUFDLEVBQUUsRUFBQztZQUFDLElBQUdBLENBQUMsR0FBQyxFQUFFLEVBQUM5QyxDQUFDLENBQUM4QyxDQUFDLENBQUMsR0FBQyxDQUFDLEdBQUM1RixDQUFDLENBQUNDLENBQUMsR0FBQzJGLENBQUMsQ0FBQyxDQUFDLEtBQUk7Y0FBQyxJQUFJQyxDQUFDLEdBQUMvQyxDQUFDLENBQUM4QyxDQUFDLEdBQUMsRUFBRSxDQUFDO2dCQUFDRSxDQUFDLEdBQUMsQ0FBQ0QsQ0FBQyxJQUFFLEVBQUUsR0FBQ0EsQ0FBQyxLQUFHLENBQUMsS0FBR0EsQ0FBQyxJQUFFLEVBQUUsR0FBQ0EsQ0FBQyxLQUFHLEVBQUUsQ0FBQyxHQUFDQSxDQUFDLEtBQUcsQ0FBQztnQkFBQ0UsQ0FBQyxHQUFDakQsQ0FBQyxDQUFDOEMsQ0FBQyxHQUFDLENBQUMsQ0FBQztnQkFBQ0ksQ0FBQyxHQUFDLENBQUNELENBQUMsSUFBRSxFQUFFLEdBQUNBLENBQUMsS0FBRyxFQUFFLEtBQUdBLENBQUMsSUFBRSxFQUFFLEdBQUNBLENBQUMsS0FBRyxFQUFFLENBQUMsR0FBQ0EsQ0FBQyxLQUFHLEVBQUU7Y0FBQ2pELENBQUMsQ0FBQzhDLENBQUMsQ0FBQyxHQUFDRSxDQUFDLEdBQUNoRCxDQUFDLENBQUM4QyxDQUFDLEdBQUMsQ0FBQyxDQUFDLEdBQUNJLENBQUMsR0FBQ2xELENBQUMsQ0FBQzhDLENBQUMsR0FBQyxFQUFFLENBQUM7WUFBQTtZQUFDLElBQUlLLENBQUMsR0FBQzNELENBQUMsR0FBQ2EsQ0FBQyxHQUFDLENBQUNiLENBQUMsR0FBQ29CLENBQUM7Y0FBQ3dDLENBQUMsR0FBQ3ZGLENBQUMsR0FBQ0MsQ0FBQyxHQUFDRCxDQUFDLEdBQUNHLENBQUMsR0FBQ0YsQ0FBQyxHQUFDRSxDQUFDO2NBQUNxRixDQUFDLEdBQUMsQ0FBQ3hGLENBQUMsSUFBRSxFQUFFLEdBQUNBLENBQUMsS0FBRyxDQUFDLEtBQUdBLENBQUMsSUFBRSxFQUFFLEdBQUNBLENBQUMsS0FBRyxFQUFFLENBQUMsSUFBRUEsQ0FBQyxJQUFFLEVBQUUsR0FBQ0EsQ0FBQyxLQUFHLEVBQUUsQ0FBQztjQUFDeUYsQ0FBQyxHQUFDLENBQUM5RCxDQUFDLElBQUUsRUFBRSxHQUFDQSxDQUFDLEtBQUcsQ0FBQyxLQUFHQSxDQUFDLElBQUUsRUFBRSxHQUFDQSxDQUFDLEtBQUcsRUFBRSxDQUFDLElBQUVBLENBQUMsSUFBRSxDQUFDLEdBQUNBLENBQUMsS0FBRyxFQUFFLENBQUM7Y0FBQytELENBQUMsR0FBQy9CLENBQUMsR0FBQzhCLENBQUMsR0FBQ0gsQ0FBQyxHQUFDbkUsQ0FBQyxDQUFDOEQsQ0FBQyxDQUFDLEdBQUM5QyxDQUFDLENBQUM4QyxDQUFDLENBQUM7Y0FBQ1UsQ0FBQyxHQUFDSCxDQUFDLEdBQUNELENBQUM7WUFBQzVCLENBQUMsR0FBQ1osQ0FBQyxFQUFDQSxDQUFDLEdBQUNQLENBQUMsRUFBQ0EsQ0FBQyxHQUFDYixDQUFDLEVBQUNBLENBQUMsR0FBQ2IsQ0FBQyxHQUFDNEUsQ0FBQyxHQUFDLENBQUMsRUFBQzVFLENBQUMsR0FBQ1gsQ0FBQyxFQUFDQSxDQUFDLEdBQUNGLENBQUMsRUFBQ0EsQ0FBQyxHQUFDRCxDQUFDLEVBQUNBLENBQUMsR0FBQzBGLENBQUMsR0FBQ0MsQ0FBQyxHQUFDLENBQUM7VUFBQTtVQUFDL0YsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFDQSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUNJLENBQUMsR0FBQyxDQUFDLEVBQUNKLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBQ0EsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFDSyxDQUFDLEdBQUMsQ0FBQyxFQUFDTCxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUNBLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBQ08sQ0FBQyxHQUFDLENBQUMsRUFBQ1AsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFDQSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUNrQixDQUFDLEdBQUMsQ0FBQyxFQUFDbEIsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFDQSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUMrQixDQUFDLEdBQUMsQ0FBQyxFQUFDL0IsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFDQSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUM0QyxDQUFDLEdBQUMsQ0FBQyxFQUFDNUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFDQSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUNtRCxDQUFDLEdBQUMsQ0FBQyxFQUFDbkQsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFDQSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUMrRCxDQUFDLEdBQUMsQ0FBQztRQUFBLENBQUM7UUFBQ08sV0FBVyxFQUFDLFNBQUFBLFlBQUEsRUFBVTtVQUFDLElBQUk3RSxDQUFDLEdBQUMsSUFBSSxDQUFDNkQsS0FBSztZQUFDdEQsQ0FBQyxHQUFDUCxDQUFDLENBQUMyQixLQUFLO1lBQUNoQixDQUFDLEdBQUMsQ0FBQyxHQUFDLElBQUksQ0FBQ21ELFdBQVc7WUFBQ2xELENBQUMsR0FBQyxDQUFDLEdBQUNaLENBQUMsQ0FBQzRCLFFBQVE7VUFBQyxPQUFPckIsQ0FBQyxDQUFDSyxDQUFDLEtBQUcsQ0FBQyxDQUFDLElBQUUsR0FBRyxJQUFFLEVBQUUsR0FBQ0EsQ0FBQyxHQUFDLEVBQUUsRUFBQ0wsQ0FBQyxDQUFDLENBQUNLLENBQUMsR0FBQyxFQUFFLEtBQUcsQ0FBQyxJQUFFLENBQUMsSUFBRSxFQUFFLENBQUMsR0FBQ1gsQ0FBQyxDQUFDNkcsS0FBSyxDQUFDbkcsQ0FBQyxHQUFDLFVBQVUsQ0FBQyxFQUFDSixDQUFDLENBQUMsQ0FBQ0ssQ0FBQyxHQUFDLEVBQUUsS0FBRyxDQUFDLElBQUUsQ0FBQyxJQUFFLEVBQUUsQ0FBQyxHQUFDRCxDQUFDLEVBQUNYLENBQUMsQ0FBQzRCLFFBQVEsR0FBQyxDQUFDLEdBQUNyQixDQUFDLENBQUNzQixNQUFNLEVBQUMsSUFBSSxDQUFDbUMsUUFBUSxFQUFFLEVBQUMsSUFBSSxDQUFDMkIsS0FBSztRQUFBLENBQUM7UUFBQ25FLEtBQUssRUFBQyxTQUFBQSxNQUFBLEVBQVU7VUFBQyxJQUFJeEIsQ0FBQyxHQUFDYyxDQUFDLENBQUNVLEtBQUssQ0FBQ1csSUFBSSxDQUFDLElBQUksQ0FBQztVQUFDLE9BQU9uQyxDQUFDLENBQUMyRixLQUFLLEdBQUMsSUFBSSxDQUFDQSxLQUFLLENBQUNuRSxLQUFLLEVBQUUsRUFBQ3hCLENBQUM7UUFBQTtNQUFDLENBQUMsQ0FBQztJQUFDTyxDQUFDLENBQUM2RyxNQUFNLEdBQUN0RyxDQUFDLENBQUNnRSxhQUFhLENBQUMzQixDQUFDLENBQUMsRUFBQzVDLENBQUMsQ0FBQzhHLFVBQVUsR0FBQ3ZHLENBQUMsQ0FBQ2lFLGlCQUFpQixDQUFDNUIsQ0FBQyxDQUFDO0VBQUEsQ0FBQyxDQUFDK0IsSUFBSSxDQUFDLEVBQUMsWUFBVTtJQUFDLFNBQVNqRixDQUFDQSxDQUFDRCxDQUFDLEVBQUM7TUFBQyxPQUFPQSxDQUFDLElBQUUsQ0FBQyxHQUFDLFVBQVUsR0FBQ0EsQ0FBQyxLQUFHLENBQUMsR0FBQyxRQUFRO0lBQUE7SUFBQyxJQUFJTyxDQUFDLEdBQUNQLENBQUM7TUFBQ1csQ0FBQyxHQUFDSixDQUFDLENBQUNNLEdBQUc7TUFBQ0QsQ0FBQyxHQUFDRCxDQUFDLENBQUNlLFNBQVM7TUFBQ1osQ0FBQyxHQUFDUCxDQUFDLENBQUNpQyxHQUFHO0lBQUMxQixDQUFDLENBQUN3RyxLQUFLLEdBQUN4RyxDQUFDLENBQUN5RyxPQUFPLEdBQUM7TUFBQ3hGLFNBQVMsRUFBQyxTQUFBQSxVQUFTL0IsQ0FBQyxFQUFDO1FBQUMsS0FBSSxJQUFJQyxDQUFDLEdBQUNELENBQUMsQ0FBQzJCLEtBQUssRUFBQ3BCLENBQUMsR0FBQ1AsQ0FBQyxDQUFDNEIsUUFBUSxFQUFDakIsQ0FBQyxHQUFDLEVBQUUsRUFBQ0MsQ0FBQyxHQUFDLENBQUMsRUFBQ0EsQ0FBQyxHQUFDTCxDQUFDLEVBQUNLLENBQUMsSUFBRSxDQUFDLEVBQUM7VUFBQyxJQUFJRSxDQUFDLEdBQUNiLENBQUMsQ0FBQ1csQ0FBQyxLQUFHLENBQUMsQ0FBQyxLQUFHLEVBQUUsR0FBQ0EsQ0FBQyxHQUFDLENBQUMsR0FBQyxDQUFDLEdBQUMsS0FBSztVQUFDRCxDQUFDLENBQUM0QixJQUFJLENBQUNTLE1BQU0sQ0FBQ0MsWUFBWSxDQUFDbkMsQ0FBQyxDQUFDLENBQUM7UUFBQTtRQUFDLE9BQU9ILENBQUMsQ0FBQytCLElBQUksQ0FBQyxFQUFFLENBQUM7TUFBQSxDQUFDO01BQUNDLEtBQUssRUFBQyxTQUFBQSxNQUFTM0MsQ0FBQyxFQUFDO1FBQUMsS0FBSSxJQUFJQyxDQUFDLEdBQUNELENBQUMsQ0FBQzZCLE1BQU0sRUFBQ3RCLENBQUMsR0FBQyxFQUFFLEVBQUNJLENBQUMsR0FBQyxDQUFDLEVBQUNBLENBQUMsR0FBQ1YsQ0FBQyxFQUFDVSxDQUFDLEVBQUUsRUFBQ0osQ0FBQyxDQUFDSSxDQUFDLEtBQUcsQ0FBQyxDQUFDLElBQUVYLENBQUMsQ0FBQ2tELFVBQVUsQ0FBQ3ZDLENBQUMsQ0FBQyxJQUFFLEVBQUUsR0FBQ0EsQ0FBQyxHQUFDLENBQUMsR0FBQyxFQUFFO1FBQUMsT0FBT0MsQ0FBQyxDQUFDSCxNQUFNLENBQUNGLENBQUMsRUFBQyxDQUFDLEdBQUNOLENBQUMsQ0FBQztNQUFBO0lBQUMsQ0FBQztJQUFDYSxDQUFDLENBQUMwRyxPQUFPLEdBQUM7TUFBQ3pGLFNBQVMsRUFBQyxTQUFBQSxVQUFTL0IsQ0FBQyxFQUFDO1FBQUMsS0FBSSxJQUFJTyxDQUFDLEdBQUNQLENBQUMsQ0FBQzJCLEtBQUssRUFBQ2hCLENBQUMsR0FBQ1gsQ0FBQyxDQUFDNEIsUUFBUSxFQUFDaEIsQ0FBQyxHQUFDLEVBQUUsRUFBQ0UsQ0FBQyxHQUFDLENBQUMsRUFBQ0EsQ0FBQyxHQUFDSCxDQUFDLEVBQUNHLENBQUMsSUFBRSxDQUFDLEVBQUM7VUFBQyxJQUFJVyxDQUFDLEdBQUN4QixDQUFDLENBQUNNLENBQUMsQ0FBQ08sQ0FBQyxLQUFHLENBQUMsQ0FBQyxLQUFHLEVBQUUsR0FBQ0EsQ0FBQyxHQUFDLENBQUMsR0FBQyxDQUFDLEdBQUMsS0FBSyxDQUFDO1VBQUNGLENBQUMsQ0FBQzJCLElBQUksQ0FBQ1MsTUFBTSxDQUFDQyxZQUFZLENBQUN4QixDQUFDLENBQUMsQ0FBQztRQUFBO1FBQUMsT0FBT2IsQ0FBQyxDQUFDOEIsSUFBSSxDQUFDLEVBQUUsQ0FBQztNQUFBLENBQUM7TUFBQ0MsS0FBSyxFQUFDLFNBQUFBLE1BQVMzQyxDQUFDLEVBQUM7UUFBQyxLQUFJLElBQUlPLENBQUMsR0FBQ1AsQ0FBQyxDQUFDNkIsTUFBTSxFQUFDbEIsQ0FBQyxHQUFDLEVBQUUsRUFBQ0csQ0FBQyxHQUFDLENBQUMsRUFBQ0EsQ0FBQyxHQUFDUCxDQUFDLEVBQUNPLENBQUMsRUFBRSxFQUFDSCxDQUFDLENBQUNHLENBQUMsS0FBRyxDQUFDLENBQUMsSUFBRWIsQ0FBQyxDQUFDRCxDQUFDLENBQUNrRCxVQUFVLENBQUNwQyxDQUFDLENBQUMsSUFBRSxFQUFFLEdBQUNBLENBQUMsR0FBQyxDQUFDLEdBQUMsRUFBRSxDQUFDO1FBQUMsT0FBT0YsQ0FBQyxDQUFDSCxNQUFNLENBQUNFLENBQUMsRUFBQyxDQUFDLEdBQUNKLENBQUMsQ0FBQztNQUFBO0lBQUMsQ0FBQztFQUFBLENBQUMsRUFBRSxFQUFDLFlBQVU7SUFBQyxJQUFHLFVBQVUsSUFBRSxPQUFPa0gsV0FBVyxFQUFDO01BQUMsSUFBSXhILENBQUMsR0FBQ0QsQ0FBQztRQUFDTyxDQUFDLEdBQUNOLENBQUMsQ0FBQ1ksR0FBRztRQUFDRixDQUFDLEdBQUNKLENBQUMsQ0FBQ21CLFNBQVM7UUFBQ2QsQ0FBQyxHQUFDRCxDQUFDLENBQUNRLElBQUk7UUFBQ0wsQ0FBQyxHQUFDSCxDQUFDLENBQUNRLElBQUksR0FBQyxVQUFTbkIsQ0FBQyxFQUFDO1VBQUMsSUFBR0EsQ0FBQyxZQUFZeUgsV0FBVyxLQUFHekgsQ0FBQyxHQUFDLElBQUkwSCxVQUFVLENBQUMxSCxDQUFDLENBQUMsQ0FBQyxFQUFDLENBQUNBLENBQUMsWUFBWTJILFNBQVMsSUFBRSxXQUFXLElBQUUsT0FBT0MsaUJBQWlCLElBQUU1SCxDQUFDLFlBQVk0SCxpQkFBaUIsSUFBRTVILENBQUMsWUFBWTZILFVBQVUsSUFBRTdILENBQUMsWUFBWThILFdBQVcsSUFBRTlILENBQUMsWUFBWStILFVBQVUsSUFBRS9ILENBQUMsWUFBWWdJLFdBQVcsSUFBRWhJLENBQUMsWUFBWWlJLFlBQVksSUFBRWpJLENBQUMsWUFBWWtJLFlBQVksTUFBSWxJLENBQUMsR0FBQyxJQUFJMEgsVUFBVSxDQUFDMUgsQ0FBQyxDQUFDbUksTUFBTSxFQUFDbkksQ0FBQyxDQUFDb0ksVUFBVSxFQUFDcEksQ0FBQyxDQUFDcUksVUFBVSxDQUFDLENBQUMsRUFBQ3JJLENBQUMsWUFBWTBILFVBQVUsRUFBQztZQUFDLEtBQUksSUFBSXpILENBQUMsR0FBQ0QsQ0FBQyxDQUFDcUksVUFBVSxFQUFDOUgsQ0FBQyxHQUFDLEVBQUUsRUFBQ0ksQ0FBQyxHQUFDLENBQUMsRUFBQ0EsQ0FBQyxHQUFDVixDQUFDLEVBQUNVLENBQUMsRUFBRSxFQUFDSixDQUFDLENBQUNJLENBQUMsS0FBRyxDQUFDLENBQUMsSUFBRVgsQ0FBQyxDQUFDVyxDQUFDLENBQUMsSUFBRSxFQUFFLEdBQUNBLENBQUMsR0FBQyxDQUFDLEdBQUMsQ0FBQztZQUFDQyxDQUFDLENBQUN1QixJQUFJLENBQUMsSUFBSSxFQUFDNUIsQ0FBQyxFQUFDTixDQUFDLENBQUM7VUFBQSxDQUFDLE1BQUtXLENBQUMsQ0FBQ1MsS0FBSyxDQUFDLElBQUksRUFBQ0MsU0FBUyxDQUFDO1FBQUEsQ0FBQztNQUFDUixDQUFDLENBQUNKLFNBQVMsR0FBQ0MsQ0FBQztJQUFBO0VBQUMsQ0FBQyxFQUFFLEVBQUMsVUFBU1YsQ0FBQyxFQUFDO0lBQUMsU0FBU00sQ0FBQ0EsQ0FBQ1AsQ0FBQyxFQUFDQyxDQUFDLEVBQUNNLENBQUMsRUFBQztNQUFDLE9BQU9QLENBQUMsR0FBQ0MsQ0FBQyxHQUFDTSxDQUFDO0lBQUE7SUFBQyxTQUFTSSxDQUFDQSxDQUFDWCxDQUFDLEVBQUNDLENBQUMsRUFBQ00sQ0FBQyxFQUFDO01BQUMsT0FBT1AsQ0FBQyxHQUFDQyxDQUFDLEdBQUMsQ0FBQ0QsQ0FBQyxHQUFDTyxDQUFDO0lBQUE7SUFBQyxTQUFTSyxDQUFDQSxDQUFDWixDQUFDLEVBQUNDLENBQUMsRUFBQ00sQ0FBQyxFQUFDO01BQUMsT0FBTSxDQUFDUCxDQUFDLEdBQUMsQ0FBQ0MsQ0FBQyxJQUFFTSxDQUFDO0lBQUE7SUFBQyxTQUFTTyxDQUFDQSxDQUFDZCxDQUFDLEVBQUNDLENBQUMsRUFBQ00sQ0FBQyxFQUFDO01BQUMsT0FBT1AsQ0FBQyxHQUFDTyxDQUFDLEdBQUNOLENBQUMsR0FBQyxDQUFDTSxDQUFDO0lBQUE7SUFBQyxTQUFTa0IsQ0FBQ0EsQ0FBQ3pCLENBQUMsRUFBQ0MsQ0FBQyxFQUFDTSxDQUFDLEVBQUM7TUFBQyxPQUFPUCxDQUFDLElBQUVDLENBQUMsR0FBQyxDQUFDTSxDQUFDLENBQUM7SUFBQTtJQUFDLFNBQVMrQixDQUFDQSxDQUFDdEMsQ0FBQyxFQUFDQyxDQUFDLEVBQUM7TUFBQyxPQUFPRCxDQUFDLElBQUVDLENBQUMsR0FBQ0QsQ0FBQyxLQUFHLEVBQUUsR0FBQ0MsQ0FBQztJQUFBO0lBQUMsSUFBSTZCLENBQUMsR0FBQzlCLENBQUM7TUFBQzhDLENBQUMsR0FBQ2hCLENBQUMsQ0FBQ2pCLEdBQUc7TUFBQ3NDLENBQUMsR0FBQ0wsQ0FBQyxDQUFDcEIsU0FBUztNQUFDZ0MsQ0FBQyxHQUFDWixDQUFDLENBQUMwQixNQUFNO01BQUNGLENBQUMsR0FBQ3hDLENBQUMsQ0FBQ21ELElBQUk7TUFBQ1csQ0FBQyxHQUFDekMsQ0FBQyxDQUFDMUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLEVBQUUsRUFBQyxFQUFFLEVBQUMsRUFBRSxFQUFDLEVBQUUsRUFBQyxFQUFFLEVBQUMsRUFBRSxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsRUFBRSxFQUFDLENBQUMsRUFBQyxFQUFFLEVBQUMsQ0FBQyxFQUFDLEVBQUUsRUFBQyxDQUFDLEVBQUMsRUFBRSxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxFQUFFLEVBQUMsRUFBRSxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsRUFBRSxFQUFDLEVBQUUsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLEVBQUUsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxFQUFFLEVBQUMsRUFBRSxFQUFDLENBQUMsRUFBQyxFQUFFLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxFQUFFLEVBQUMsRUFBRSxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsRUFBRSxFQUFDLENBQUMsRUFBQyxFQUFFLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxFQUFFLEVBQUMsRUFBRSxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsRUFBRSxFQUFDLENBQUMsRUFBQyxFQUFFLEVBQUMsRUFBRSxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLEVBQUUsRUFBQyxDQUFDLEVBQUMsRUFBRSxFQUFDLEVBQUUsQ0FBQyxDQUFDO01BQUNvRixDQUFDLEdBQUMxQyxDQUFDLENBQUMxQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUMsRUFBRSxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxFQUFFLEVBQUMsQ0FBQyxFQUFDLEVBQUUsRUFBQyxDQUFDLEVBQUMsRUFBRSxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsRUFBRSxFQUFDLENBQUMsRUFBQyxFQUFFLEVBQUMsQ0FBQyxFQUFDLEVBQUUsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxFQUFFLEVBQUMsQ0FBQyxFQUFDLEVBQUUsRUFBQyxFQUFFLEVBQUMsRUFBRSxFQUFDLENBQUMsRUFBQyxFQUFFLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLEVBQUUsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsRUFBRSxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsRUFBRSxFQUFDLENBQUMsRUFBQyxFQUFFLEVBQUMsQ0FBQyxFQUFDLEVBQUUsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLEVBQUUsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLEVBQUUsRUFBQyxFQUFFLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxFQUFFLEVBQUMsQ0FBQyxFQUFDLEVBQUUsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLEVBQUUsRUFBQyxFQUFFLEVBQUMsRUFBRSxFQUFDLEVBQUUsRUFBQyxFQUFFLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLEVBQUUsRUFBQyxFQUFFLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsRUFBRSxDQUFDLENBQUM7TUFBQ3FGLENBQUMsR0FBQzNDLENBQUMsQ0FBQzFDLE1BQU0sQ0FBQyxDQUFDLEVBQUUsRUFBQyxFQUFFLEVBQUMsRUFBRSxFQUFDLEVBQUUsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsRUFBRSxFQUFDLEVBQUUsRUFBQyxFQUFFLEVBQUMsRUFBRSxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxFQUFFLEVBQUMsRUFBRSxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsRUFBRSxFQUFDLENBQUMsRUFBQyxFQUFFLEVBQUMsRUFBRSxFQUFDLENBQUMsRUFBQyxFQUFFLEVBQUMsQ0FBQyxFQUFDLEVBQUUsRUFBQyxFQUFFLEVBQUMsRUFBRSxFQUFDLEVBQUUsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLEVBQUUsRUFBQyxDQUFDLEVBQUMsRUFBRSxFQUFDLEVBQUUsRUFBQyxFQUFFLEVBQUMsQ0FBQyxFQUFDLEVBQUUsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLEVBQUUsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLEVBQUUsRUFBQyxFQUFFLEVBQUMsRUFBRSxFQUFDLEVBQUUsRUFBQyxFQUFFLEVBQUMsRUFBRSxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLEVBQUUsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLEVBQUUsRUFBQyxDQUFDLEVBQUMsRUFBRSxFQUFDLENBQUMsRUFBQyxFQUFFLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxFQUFFLEVBQUMsRUFBRSxFQUFDLENBQUMsRUFBQyxFQUFFLEVBQUMsRUFBRSxFQUFDLEVBQUUsRUFBQyxFQUFFLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsQ0FBQztNQUFDc0YsQ0FBQyxHQUFDNUMsQ0FBQyxDQUFDMUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsRUFBRSxFQUFDLEVBQUUsRUFBQyxFQUFFLEVBQUMsRUFBRSxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxFQUFFLEVBQUMsRUFBRSxFQUFDLEVBQUUsRUFBQyxFQUFFLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxFQUFFLEVBQUMsRUFBRSxFQUFDLENBQUMsRUFBQyxFQUFFLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxFQUFFLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxFQUFFLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxFQUFFLEVBQUMsRUFBRSxFQUFDLEVBQUUsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLEVBQUUsRUFBQyxFQUFFLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsRUFBRSxFQUFDLEVBQUUsRUFBQyxFQUFFLEVBQUMsQ0FBQyxFQUFDLEVBQUUsRUFBQyxFQUFFLEVBQUMsRUFBRSxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsRUFBRSxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsRUFBRSxFQUFDLEVBQUUsRUFBQyxFQUFFLEVBQUMsQ0FBQyxFQUFDLEVBQUUsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLEVBQUUsRUFBQyxDQUFDLEVBQUMsRUFBRSxFQUFDLENBQUMsRUFBQyxFQUFFLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsRUFBRSxFQUFDLENBQUMsRUFBQyxFQUFFLEVBQUMsQ0FBQyxFQUFDLEVBQUUsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLEVBQUUsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLEVBQUUsRUFBQyxFQUFFLEVBQUMsRUFBRSxFQUFDLEVBQUUsQ0FBQyxDQUFDO01BQUN1RixDQUFDLEdBQUM3QyxDQUFDLENBQUMxQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUMsVUFBVSxFQUFDLFVBQVUs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QUMsR0FBQ1AsQ0FBQztNQUFDVyxDQUFDLEdBQUNKLENBQUMsQ0FBQ00sR0FBRztNQUFDRCxDQUFDLEdBQUNELENBQUMsQ0FBQzZELE1BQU07TUFBQzFELENBQUMsR0FBQ1AsQ0FBQyxDQUFDZ0osR0FBRztNQUFDOUgsQ0FBQyxHQUFDWCxDQUFDLENBQUMwSSxJQUFJO01BQUNsSCxDQUFDLEdBQUN4QixDQUFDLENBQUNZLFNBQVM7TUFBQ0ksQ0FBQyxHQUFDdkIsQ0FBQyxDQUFDMEUsSUFBSTtNQUFDbkMsQ0FBQyxHQUFDLENBQUM3QyxDQUFDLENBQUMsVUFBVSxFQUFDLFVBQVUsQ0FBQyxFQUFDQSxDQUFDLENBQUMsVUFBVSxFQUFDLFNBQVMsQ0FBQyxFQUFDQSxDQUFDLENBQUMsVUFBVSxFQUFDLFVBQVUsQ0FBQyxFQUFDQSxDQUFDLENBQUMsVUFBVSxFQUFDLFVBQVUsQ0FBQyxFQUFDQSxDQUFDLENBQUMsU0FBUyxFQUFDLFVBQVUsQ0FBQyxFQUFDQSxDQUFDLENBQUMsVUFBVSxFQUFDLFVBQVUsQ0FBQyxFQUFDQSxDQUFDLENBQUMsVUFBVSxFQUFDLFVBQVUsQ0FBQyxFQUFDQSxDQUFDLENBQUMsVUFBVSxFQUFDLFVBQVUsQ0FBQyxFQUFDQSxDQUFDLENBQUMsVUFBVSxFQUFDLFVBQVUsQ0FBQyxFQUFDQSxDQUFDLENBQUMsU0FBUyxFQUFDLFVBQVUsQ0FBQyxFQUFDQSxDQUFDLENBQUMsU0FBUyxFQUFDLFVBQVUsQ0FBQyxFQUFDQSxDQUFDLENBQUMsVUFBVSxFQUFDLFVBQVUsQ0FBQyxFQUFDQSxDQUFDLENBQUMsVUFBVSxFQUFDLFVBQVUsQ0FBQyxFQUFDQSxDQUFDLENBQUMsVUFBVSxFQUFDLFNBQVMsQ0FBQyxFQUFDQSxDQUFDLENBQUMsVUFBVSxFQUFDLFNBQVMsQ0FBQyxFQUFDQSxDQUFDLENBQUMsVUFBVSxFQUFDLFVBQVUsQ0FBQyxFQUFDQSxDQUFDLENBQUMsVUFBVSxFQUFDLFVBQVUsQ0FBQyxFQUFDQSxDQUFDLENBQUMsVUFBVSxFQUFDLFNBQVMsQ0FBQyxFQUFDQSxDQUFDLENBQUMsU0FBUyxFQUFDLFVBQVUsQ0FBQyxFQUFDQSxDQUFDLENBQUMsU0FBUyxFQUFDLFVBQVUsQ0FBQyxFQUFDQSxDQUFDLENBQUMsU0FBUyxFQUFDLFVBQVUsQ0FBQyxFQUFDQSxDQUFDLENBQUMsVUFBVSxFQUFDLFVBQVUsQ0FBQyxFQUFDQSxDQUFDLENBQUMsVUFBVSxFQUFDLFVBQVUsQ0FBQyxFQUFDQSxDQUFDLENBQUMsVUFBVSxFQUFDLFVBQVUsQ0FBQyxFQUFDQSxDQUFDLENBQUMsVUFBVSxFQUFDLFVBQVUsQ0FBQyxFQUFDQSxDQUFDLENBQUMsVUFBVSxFQUFDLFNBQVMsQ0FBQyxFQUFDQSxDQUFDLENBQUMsVUFBVSxFQUFDLFVBQVUsQ0FBQyxFQUFDQSxDQUFDLENBQUMsVUFBVSxFQUFDLFVBQVUsQ0FBQyxFQUFDQSxDQUFDLENBQUMsVUFBVSxFQUFDLFVBQVUsQ0FBQyxFQUFDQSxDQUFDLENBQUMsVUFBVSxFQUFDLFVBQVUsQ0FBQyxFQUFDQSxDQUFDLENBQUMsU0FBUyxFQUFDLFVBQVUsQ0FBQyxFQUFDQSxDQUFDLENBQUMsU0FBUyxFQUFDLFNBQVMsQ0FBQyxFQUFDQSxDQUFDLENBQUMsU0FBUyxFQUFDLFVBQVUsQ0FBQyxFQUFDQSxDQUFDLENBQUMsU0FBUyxFQUFDLFVBQVUsQ0FBQyxFQUFDQSxDQUFDLENBQUMsVUFBVSxFQUFDLFVBQVUsQ0FBQyxFQUFDQSxDQUFDLENBQUMsVUFBVSxFQUFDLFVBQVUsQ0FBQyxFQUFDQSxDQUFDLENBQUMsVUFBVSxFQUFDLFVBQVUsQ0FBQyxFQUFDQSxDQUFDLENBQUMsVUFBVSxFQUFDLFVBQVUsQ0FBQyxFQUFDQSxDQUFDLENBQUMsVUFBVSxFQUFDLFVBQVUsQ0FBQyxFQUFDQSxDQUFDLENBQUMsVUFBVSxFQUFDLFNBQVMsQ0FBQyxFQUFDQSxDQUFDLENBQUMsVUFBVSxFQUFDLFVBQVUsQ0FBQyxFQUFDQSxDQUFDLENBQUMsVUFBVSxFQUFDLFVBQVUsQ0FBQyxFQUFDQSxDQUFDLENBQUMsVUFBVSxFQUFDLFVBQVUsQ0FBQyxFQUFDQSxDQUFDLENBQUMsVUFBVSxFQUFDLFNBQVMsQ0FBQyxFQUFDQSxDQUFDLENBQUMsVUFBVSxFQUFDLFVBQVUsQ0FBQyxFQUFDQSxDQUFDLENBQUMsVUFBVSxFQUFDLFVBQVUsQ0FBQyxFQUFDQSxDQUFDLENBQUMsVUFBVSxFQUFDLFVBQVUsQ0FBQyxFQUFDQSxDQUFDLENBQUMsU0FBUyxFQUFDLFNBQVMsQ0FBQyxFQUFDQSxDQUFDLENBQUMsU0FBUyxFQUFDLFVBQVUsQ0FBQyxFQUFDQSxDQUFDLENBQUMsU0FBUyxFQUFDLFVBQVUsQ0FBQyxFQUFDQSxDQUFDLENBQUMsU0FBUyxFQUFDLFVBQVUsQ0FBQyxFQUFDQSxDQUFDLENBQUMsU0FBUyxFQUFDLFVBQVUsQ0FBQyxFQUFDQSxDQUFDLENBQUMsU0FBUyxFQUFDLFVBQVUsQ0FBQyxFQUFDQSxDQUFDLENBQUMsVUFBVSxFQUFDLFVBQVUsQ0FBQyxFQUFDQSxDQUFDLENBQUMsVUFBVSxFQUFDLFVBQVUsQ0FBQyxFQUFDQSxDQUFDLENBQUMsVUFBVSxFQUFDLFVBQVUsQ0FBQyxFQUFDQSxDQUFDLENBQUMsVUFBVSxFQUFDLFVBQVUsQ0FBQyxFQUFDQSxDQUFDLENBQUMsVUFBVSxFQUFDLFVBQVUsQ0FBQyxFQUFDQSxDQUFDLENBQUMsVUFBVSxFQUFDLFVBQVUsQ0FBQyxFQUFDQSxDQUFDLENBQUMsVUFBVSxFQUFDLFNBQVMsQ0FBQyxFQUFDQSxDQUFDLENBQUMsVUFBVSxFQUFDLFNBQVMsQ0FBQyxFQUFDQSxDQUFDLENBQUMsVUFBVSxFQUFDLFVBQVUsQ0FBQyxFQUFDQSxDQUFDLENBQUMsVUFBVSxFQUFDLFVBQVUsQ0FBQyxFQUFDQSxDQUFDLENBQUMsVUFBVSxFQUFDLFVBQVUsQ0FBQyxFQUFDQSxDQUFDLENBQUMsVUFBVSxFQUFDLFVBQVUsQ0FBQyxFQUFDQSxDQUFDLENBQUMsVUFBVSxFQUFDLFNBQVMsQ0FBQyxFQUFDQSxDQUFDLENBQUMsVUFBVSxFQUFDLFVBQVUsQ0FBQyxFQUFDQSxDQUFDLENBQUMsVUFBVSxFQUFDLFVBQVUsQ0FBQyxFQUFDQSxDQUFDLENBQUMsU0FBUyxFQUFDLFVBQVUsQ0FBQyxFQUFDQSxDQUFDLENBQUMsU0FBUyxFQUFDLFVBQVUsQ0FBQyxFQUFDQSxDQUFDLENBQUMsU0FBUyxFQUFDLFVBQVUsQ0FBQyxFQUFDQSxDQUFDLENBQUMsU0FBUyxFQUFDLFNBQVMsQ0FBQyxFQUFDQSxDQUFDLENBQUMsU0FBUyxFQUFDLFNBQVMsQ0FBQyxFQUFDQSxDQUFDLENBQUMsU0FBUyxFQUFDLFVBQVUsQ0FBQyxFQUFDQSxDQUFDLENBQUMsVUFBVSxFQUFDLFNBQVMsQ0FBQyxFQUFDQSxDQUFDLENBQUMsVUFBVSxFQUFDLFVBQVUsQ0FBQyxFQUFDQSxDQUFDLENBQUMsVUFBVSxFQUFDLFVBQVUsQ0FBQyxFQUFDQSxDQUFDLENBQUMsVUFBVSxFQUFDLFVBQVUsQ0FBQyxFQUFDQSxDQUFDLENBQUMsVUFBVSxFQUFDLFNBQVMsQ0FBQyxFQUFDQSxDQUFDLENBQUMsVUFBVSxFQUFDLFVBQVUsQ0FBQyxDQUFDO01BQUNrRCxDQUFDLEdBQUMsRUFBRTtJQUFDLENBQUMsWUFBVTtNQUFDLEtBQUksSUFBSW5ELENBQUMsR0FBQyxDQUFDLEVBQUNBLENBQUMsR0FBQyxFQUFFLEVBQUNBLENBQUMsRUFBRSxFQUFDbUQsQ0FBQyxDQUFDbkQsQ0FBQyxDQUFDLEdBQUNDLENBQUMsRUFBRTtJQUFBLENBQUMsRUFBRTtJQUFDLElBQUl5RCxDQUFDLEdBQUM1QixDQUFDLENBQUNrSSxNQUFNLEdBQUNwSixDQUFDLENBQUNJLE1BQU0sQ0FBQztNQUFDMEQsUUFBUSxFQUFDLFNBQUFBLFNBQUEsRUFBVTtRQUFDLElBQUksQ0FBQ2lCLEtBQUssR0FBQyxJQUFJckQsQ0FBQyxDQUFDbkIsSUFBSSxDQUFDLENBQUMsSUFBSU0sQ0FBQyxDQUFDTixJQUFJLENBQUMsVUFBVSxFQUFDLFVBQVUsQ0FBQyxFQUFDLElBQUlNLENBQUMsQ0FBQ04sSUFBSSxDQUFDLFVBQVUsRUFBQyxVQUFVLENBQUMsRUFBQyxJQUFJTSxDQUFDLENBQUNOLElBQUksQ0FBQyxVQUFVLEVBQUMsVUFBVSxDQUFDLEVBQUMsSUFBSU0sQ0FBQyxDQUFDTixJQUFJLENBQUMsVUFBVSxFQUFDLFVBQVUsQ0FBQyxFQUFDLElBQUlNLENBQUMsQ0FBQ04sSUFBSSxDQUFDLFVBQVUsRUFBQyxVQUFVLENBQUMsRUFBQyxJQUFJTSxDQUFDLENBQUNOLElBQUksQ0FBQyxVQUFVLEVBQUMsU0FBUyxDQUFDLEVBQUMsSUFBSU0sQ0FBQyxDQUFDTixJQUFJLENBQUMsU0FBUyxFQUFDLFVBQVUsQ0FBQyxFQUFDLElBQUlNLENBQUMsQ0FBQ04sSUFBSSxDQUFDLFVBQVUsRUFBQyxTQUFTLENBQUMsQ0FBQyxDQUFDO01BQUEsQ0FBQztNQUFDa0QsZUFBZSxFQUFDLFNBQUFBLGdCQUFTckUsQ0FBQyxFQUFDQyxDQUFDLEVBQUM7UUFBQyxLQUFJLElBQUlNLENBQUMsR0FBQyxJQUFJLENBQUNvRixLQUFLLENBQUNoRSxLQUFLLEVBQUNoQixDQUFDLEdBQUNKLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBQ0ssQ0FBQyxHQUFDTCxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUNPLENBQUMsR0FBQ1AsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFDa0IsQ0FBQyxHQUFDbEIsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFDK0IsQ0FBQyxHQUFDL0IsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFDdUIsQ0FBQyxHQUFDdkIsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFDbUQsQ0FBQyxHQUFDbkQsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFDK0QsQ0FBQyxHQUFDL0QsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFDcUYsQ0FBQyxHQUFDakYsQ0FBQyxDQUFDOEksSUFBSSxFQUFDNUQsQ0FBQyxHQUFDbEYsQ0FBQyxDQUFDK0ksR0FBRyxFQUFDNUQsQ0FBQyxHQUFDbEYsQ0FBQyxDQUFDNkksSUFBSSxFQUFDMUQsQ0FBQyxHQUFDbkYsQ0FBQyxDQUFDOEksR0FBRyxFQUFDMUQsQ0FBQyxHQUFDbEYsQ0FBQyxDQUFDMkksSUFBSSxFQUFDeEQsQ0FBQyxHQUFDbkYsQ0FBQyxDQUFDNEksR0FBRyxFQUFDeEQsQ0FBQyxHQUFDekUsQ0FBQyxDQUFDZ0ksSUFBSSxFQUFDdEQsQ0FBQyxHQUFDMUUsQ0FBQyxDQUFDaUksR0FBRyxFQUFDdEQsQ0FBQyxHQUFDOUQsQ0FBQyxDQUFDbUgsSUFBSSxFQUFDcEQsQ0FBQyxHQUFDL0QsQ0FBQyxDQUFDb0gsR0FBRyxFQUFDcEQsQ0FBQyxHQUFDeEUsQ0FBQyxDQUFDMkgsSUFBSSxFQUFDbEQsQ0FBQyxHQUFDekUsQ0FBQyxDQUFDNEgsR0FBRyxFQUFDbEQsQ0FBQyxHQUFDOUMsQ0FBQyxDQUFDK0YsSUFBSSxFQUFDaEQsQ0FBQyxHQUFDL0MsQ0FBQyxDQUFDZ0csR0FBRyxFQUFDaEQsQ0FBQyxHQUFDcEMsQ0FBQyxDQUFDbUYsSUFBSSxFQUFDOUMsQ0FBQyxHQUFDckMsQ0FBQyxDQUFDb0YsR0FBRyxFQUFDOUMsQ0FBQyxHQUFDaEIsQ0FBQyxFQUFDaUIsQ0FBQyxHQUFDaEIsQ0FBQyxFQUFDMEMsQ0FBQyxHQUFDekMsQ0FBQyxFQUFDMEMsQ0FBQyxHQUFDekMsQ0FBQyxFQUFDMEMsQ0FBQyxHQUFDekMsQ0FBQyxFQUFDMEMsQ0FBQyxHQUFDekMsQ0FBQyxFQUFDZ0UsQ0FBQyxHQUFDL0QsQ0FBQyxFQUFDZ0UsQ0FBQyxHQUFDL0QsQ0FBQyxFQUFDZ0UsQ0FBQyxHQUFDL0QsQ0FBQyxFQUFDZ0UsQ0FBQyxHQUFDL0QsQ0FBQyxFQUFDZ0UsQ0FBQyxHQUFDL0QsQ0FBQyxFQUFDZ0UsQ0FBQyxHQUFDL0QsQ0FBQyxFQUFDZ0UsQ0FBQyxHQUFDL0QsQ0FBQyxFQUFDZ0UsQ0FBQyxHQUFDL0QsQ0FBQyxFQUFDZ0UsQ0FBQyxHQUFDL0QsQ0FBQyxFQUFDZ0UsQ0FBQyxHQUFDL0QsQ0FBQyxFQUFDZ0UsQ0FBQyxHQUFDLENBQUMsRUFBQ0EsQ0FBQyxHQUFDLEVBQUUsRUFBQ0EsQ0FBQyxFQUFFLEVBQUM7VUFBQyxJQUFJQyxDQUFDLEdBQUN6SCxDQUFDLENBQUN3SCxDQUFDLENBQUM7VUFBQyxJQUFHQSxDQUFDLEdBQUMsRUFBRSxFQUFDLElBQUlFLENBQUMsR0FBQ0QsQ0FBQyxDQUFDbkIsSUFBSSxHQUFDLENBQUMsR0FBQ3pKLENBQUMsQ0FBQ0MsQ0FBQyxHQUFDLENBQUMsR0FBQzBLLENBQUMsQ0FBQztZQUFDRyxDQUFDLEdBQUNGLENBQUMsQ0FBQ2xCLEdBQUcsR0FBQyxDQUFDLEdBQUMxSixDQUFDLENBQUNDLENBQUMsR0FBQyxDQUFDLEdBQUMwSyxDQUFDLEdBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSTtZQUFDLElBQUlJLENBQUMsR0FBQzVILENBQUMsQ0FBQ3dILENBQUMsR0FBQyxFQUFFLENBQUM7Y0FBQ0ssQ0FBQyxHQUFDRCxDQUFDLENBQUN0QixJQUFJO2NBQUN3QixDQUFDLEdBQUNGLENBQUMsQ0FBQ3JCLEdBQUc7Y0FBQ3dCLENBQUMsR0FBQyxDQUFDRixDQUFDLEtBQUcsQ0FBQyxHQUFDQyxDQUFDLElBQUUsRUFBRSxLQUFHRCxDQUFDLEtBQUcsQ0FBQyxHQUFDQyxDQUFDLElBQUUsRUFBRSxDQUFDLEdBQUNELENBQUMsS0FBRyxDQUFDO2NBQUNHLENBQUMsR0FBQyxDQUFDRixDQUFDLEtBQUcsQ0FBQyxHQUFDRCxDQUFDLElBQUUsRUFBRSxLQUFHQyxDQUFDLEtBQUcsQ0FBQyxHQUFDRCxDQUFDLElBQUUsRUFBRSxDQUFDLElBQUVDLENBQUMsS0FBRyxDQUFDLEdBQUNELENBQUMsSUFBRSxFQUFFLENBQUM7Y0FBQ0ksRUFBRSxHQUFDakksQ0FBQyxDQUFDd0gsQ0FBQyxHQUFDLENBQUMsQ0FBQztjQUFDVSxFQUFFLEdBQUNELEVBQUUsQ0FBQzNCLElBQUk7Y0FBQzZCLEVBQUUsR0FBQ0YsRUFBRSxDQUFDMUIsR0FBRztjQUFDNkIsRUFBRSxHQUFDLENBQUNGLEVBQUUsS0FBRyxFQUFFLEdBQUNDLEVBQUUsSUFBRSxFQUFFLEtBQUdELEVBQUUsSUFBRSxDQUFDLEdBQUNDLEVBQUUsS0FBRyxFQUFFLENBQUMsR0FBQ0QsRUFBRSxLQUFHLENBQUM7Y0FBQ0csRUFBRSxHQUFDLENBQUNGLEVBQUUsS0FBRyxFQUFFLEdBQUNELEVBQUUsSUFBRSxFQUFFLEtBQUdDLEVBQUUsSUFBRSxDQUFDLEdBQUNELEVBQUUsS0FBRyxFQUFFLENBQUMsSUFBRUMsRUFBRSxLQUFHLENBQUMsR0FBQ0QsRUFBRSxJQUFFLEVBQUUsQ0FBQztjQUFDSSxFQUFFLEdBQUN0SSxDQUFDLENBQUN3SCxDQUFDLEdBQUMsQ0FBQyxDQUFDO2NBQUNlLEVBQUUsR0FBQ0QsRUFBRSxDQUFDaEMsSUFBSTtjQUFDa0MsRUFBRSxHQUFDRixFQUFFLENBQUMvQixHQUFHO2NBQUNrQyxFQUFFLEdBQUN6SSxDQUFDLENBQUN3SCxDQUFDLEdBQUMsRUFBRSxDQUFDO2NBQUNrQixFQUFFLEdBQUNELEVBQUUsQ0FBQ25DLElBQUk7Y0FBQ3FDLEVBQUUsR0FBQ0YsRUFBRSxDQUFDbEMsR0FBRztjQUFDb0IsQ0FBQyxHQUFDSyxDQUFDLEdBQUNRLEVBQUU7Y0FBQ2QsQ0FBQyxHQUFDSyxDQUFDLEdBQUNRLEVBQUUsSUFBRVosQ0FBQyxLQUFHLENBQUMsR0FBQ0ssQ0FBQyxLQUFHLENBQUMsR0FBQyxDQUFDLEdBQUMsQ0FBQyxDQUFDO2NBQUNMLENBQUMsR0FBQ0EsQ0FBQyxHQUFDVSxFQUFFO2NBQUNYLENBQUMsR0FBQ0EsQ0FBQyxHQUFDVSxFQUFFLElBQUVULENBQUMsS0FBRyxDQUFDLEdBQUNVLEVBQUUsS0FBRyxDQUFDLEdBQUMsQ0FBQyxHQUFDLENBQUMsQ0FBQztjQUFDVixDQUFDLEdBQUNBLENBQUMsR0FBQ2dCLEVBQUU7Y0FBQ2pCLENBQUMsR0FBQ0EsQ0FBQyxHQUFDZ0IsRUFBRSxJQUFFZixDQUFDLEtBQUcsQ0FBQyxHQUFDZ0IsRUFBRSxLQUFHLENBQUMsR0FBQyxDQUFDLEdBQUMsQ0FBQyxDQUFDO1lBQUNsQixDQUFDLENBQUNuQixJQUFJLEdBQUNvQixDQUFDLEVBQUNELENBQUMsQ0FBQ2xCLEdBQUcsR0FBQ29CLENBQUM7VUFBQTtVQUFDLElBQUlpQixFQUFFLEdBQUM1QixDQUFDLEdBQUNFLENBQUMsR0FBQyxDQUFDRixDQUFDLEdBQUNJLENBQUM7WUFBQ3lCLEVBQUUsR0FBQzVCLENBQUMsR0FBQ0UsQ0FBQyxHQUFDLENBQUNGLENBQUMsR0FBQ0ksQ0FBQztZQUFDeUIsRUFBRSxHQUFDckYsQ0FBQyxHQUFDMkIsQ0FBQyxHQUFDM0IsQ0FBQyxHQUFDNkIsQ0FBQyxHQUFDRixDQUFDLEdBQUNFLENBQUM7WUFBQ3lELEVBQUUsR0FBQ3JGLENBQUMsR0FBQzJCLENBQUMsR0FBQzNCLENBQUMsR0FBQzZCLENBQUMsR0FBQ0YsQ0FBQyxHQUFDRSxDQUFDO1lBQUN5RCxFQUFFLEdBQUMsQ0FBQ3ZGLENBQUMsS0FBRyxFQUFFLEdBQUNDLENBQUMsSUFBRSxDQUFDLEtBQUdELENBQUMsSUFBRSxFQUFFLEdBQUNDLENBQUMsS0FBRyxDQUFDLENBQUMsSUFBRUQsQ0FBQyxJQUFFLEVBQUUsR0FBQ0MsQ0FBQyxLQUFHLENBQUMsQ0FBQztZQUFDdUYsRUFBRSxHQUFDLENBQUN2RixDQUFDLEtBQUcsRUFBRSxHQUFDRCxDQUFDLElBQUUsQ0FBQyxLQUFHQyxDQUFDLElBQUUsRUFBRSxHQUFDRCxDQUFDLEtBQUcsQ0FBQyxDQUFDLElBQUVDLENBQUMsSUFBRSxFQUFFLEdBQUNELENBQUMsS0FBRyxDQUFDLENBQUM7WUFBQ3lGLEVBQUUsR0FBQyxDQUFDbEMsQ0FBQyxLQUFHLEVBQUUsR0FBQ0MsQ0FBQyxJQUFFLEVBQUUsS0FBR0QsQ0FBQyxLQUFHLEVBQUUsR0FBQ0MsQ0FBQyxJQUFFLEVBQUUsQ0FBQyxJQUFFRCxDQUFDLElBQUUsRUFBRSxHQUFDQyxDQUFDLEtBQUcsQ0FBQyxDQUFDO1lBQUNrQyxFQUFFLEdBQUMsQ0FBQ2xDLENBQUMsS0FBRyxFQUFFLEdBQUNELENBQUMsSUFBRSxFQUFFLEtBQUdDLENBQUMsS0FBRyxFQUFFLEdBQUNELENBQUMsSUFBRSxFQUFFLENBQUMsSUFBRUMsQ0FBQyxJQUFFLEVBQUUsR0FBQ0QsQ0FBQyxLQUFHLENBQUMsQ0FBQztZQUFDb0MsRUFBRSxHQUFDekosQ0FBQyxDQUFDNkgsQ0FBQyxDQUFDO1lBQUM2QixFQUFFLEdBQUNELEVBQUUsQ0FBQzlDLElBQUk7WUFBQ2dELEVBQUUsR0FBQ0YsRUFBRSxDQUFDN0MsR0FBRztZQUFDZ0QsRUFBRSxHQUFDaEMsQ0FBQyxHQUFDNEIsRUFBRTtZQUFDSyxFQUFFLEdBQUNsQyxDQUFDLEdBQUM0QixFQUFFLElBQUVLLEVBQUUsS0FBRyxDQUFDLEdBQUNoQyxDQUFDLEtBQUcsQ0FBQyxHQUFDLENBQUMsR0FBQyxDQUFDLENBQUM7WUFBQ2dDLEVBQUUsR0FBQ0EsRUFBRSxHQUFDVixFQUFFO1lBQUNXLEVBQUUsR0FBQ0EsRUFBRSxHQUFDWixFQUFFLElBQUVXLEVBQUUsS0FBRyxDQUFDLEdBQUNWLEVBQUUsS0FBRyxDQUFDLEdBQUMsQ0FBQyxHQUFDLENBQUMsQ0FBQztZQUFDVSxFQUFFLEdBQUNBLEVBQUUsR0FBQ0QsRUFBRTtZQUFDRSxFQUFFLEdBQUNBLEVBQUUsR0FBQ0gsRUFBRSxJQUFFRSxFQUFFLEtBQUcsQ0FBQyxHQUFDRCxFQUFFLEtBQUcsQ0FBQyxHQUFDLENBQUMsR0FBQyxDQUFDLENBQUM7WUFBQ0MsRUFBRSxHQUFDQSxFQUFFLEdBQUM1QixDQUFDO1lBQUM2QixFQUFFLEdBQUNBLEVBQUUsR0FBQzlCLENBQUMsSUFBRTZCLEVBQUUsS0FBRyxDQUFDLEdBQUM1QixDQUFDLEtBQUcsQ0FBQyxHQUFDLENBQUMsR0FBQyxDQUFDLENBQUM7WUFBQzhCLEVBQUUsR0FBQ1IsRUFBRSxHQUFDRixFQUFFO1lBQUNXLEVBQUUsR0FBQ1YsRUFBRSxHQUFDRixFQUFFLElBQUVXLEVBQUUsS0FBRyxDQUFDLEdBQUNSLEVBQUUsS0FBRyxDQUFDLEdBQUMsQ0FBQyxHQUFDLENBQUMsQ0FBQztVQUFDM0IsQ0FBQyxHQUFDRixDQUFDLEVBQUNHLENBQUMsR0FBQ0YsQ0FBQyxFQUFDRCxDQUFDLEdBQUNGLENBQUMsRUFBQ0csQ0FBQyxHQUFDRixDQUFDLEVBQUNELENBQUMsR0FBQ0YsQ0FBQyxFQUFDRyxDQUFDLEdBQUNGLENBQUMsRUFBQ0EsQ0FBQyxHQUFDRixDQUFDLEdBQUN3QyxFQUFFLEdBQUMsQ0FBQyxFQUFDdkMsQ0FBQyxHQUFDRixDQUFDLEdBQUMwQyxFQUFFLElBQUV2QyxDQUFDLEtBQUcsQ0FBQyxHQUFDRixDQUFDLEtBQUcsQ0FBQyxHQUFDLENBQUMsR0FBQyxDQUFDLENBQUMsR0FBQyxDQUFDLEVBQUNELENBQUMsR0FBQ3hCLENBQUMsRUFBQ3lCLENBQUMsR0FBQ3hCLENBQUMsRUFBQ0QsQ0FBQyxHQUFDRixDQUFDLEVBQUNHLENBQUMsR0FBQ0YsQ0FBQyxFQUFDRCxDQUFDLEdBQUMzQixDQUFDLEVBQUM0QixDQUFDLEdBQUMzQixDQUFDLEVBQUNBLENBQUMsR0FBQzZGLEVBQUUsR0FBQ0UsRUFBRSxHQUFDLENBQUMsRUFBQ2hHLENBQUMsR0FBQytGLEVBQUUsR0FBQ0UsRUFBRSxJQUFFaEcsQ0FBQyxLQUFHLENBQUMsR0FBQzZGLEVBQUUsS0FBRyxDQUFDLEdBQUMsQ0FBQyxHQUFDLENBQUMsQ0FBQyxHQUFDLENBQUM7UUFBQTtRQUFDN0csQ0FBQyxHQUFDbEYsQ0FBQyxDQUFDK0ksR0FBRyxHQUFDN0QsQ0FBQyxHQUFDZ0IsQ0FBQyxFQUFDbEcsQ0FBQyxDQUFDOEksSUFBSSxHQUFDN0QsQ0FBQyxHQUFDZ0IsQ0FBQyxJQUFFZixDQUFDLEtBQUcsQ0FBQyxHQUFDZ0IsQ0FBQyxLQUFHLENBQUMsR0FBQyxDQUFDLEdBQUMsQ0FBQyxDQUFDLEVBQUNkLENBQUMsR0FBQ25GLENBQUMsQ0FBQzhJLEdBQUcsR0FBQzNELENBQUMsR0FBQ3lDLENBQUMsRUFBQzVILENBQUMsQ0FBQzZJLElBQUksR0FBQzNELENBQUMsR0FBQ3lDLENBQUMsSUFBRXhDLENBQUMsS0FBRyxDQUFDLEdBQUN5QyxDQUFDLEtBQUcsQ0FBQyxHQUFDLENBQUMsR0FBQyxDQUFDLENBQUMsRUFBQ3ZDLENBQUMsR0FBQ25GLENBQUMsQ0FBQzRJLEdBQUcsR0FBQ3pELENBQUMsR0FBQ3lDLENBQUMsRUFBQzVILENBQUMsQ0FBQzJJLElBQUksR0FBQ3pELENBQUMsR0FBQ3lDLENBQUMsSUFBRXhDLENBQUMsS0FBRyxDQUFDLEdBQUN5QyxDQUFDLEtBQUcsQ0FBQyxHQUFDLENBQUMsR0FBQyxDQUFDLENBQUMsRUFBQ3ZDLENBQUMsR0FBQzFFLENBQUMsQ0FBQ2lJLEdBQUcsR0FBQ3ZELENBQUMsR0FBQytELENBQUMsRUFBQ3pJLENBQUMsQ0FBQ2dJLElBQUksR0FBQ3ZELENBQUMsR0FBQytELENBQUMsSUFBRTlELENBQUMsS0FBRyxDQUFDLEdBQUMrRCxDQUFDLEtBQUcsQ0FBQyxHQUFDLENBQUMsR0FBQyxDQUFDLENBQUMsRUFBQzdELENBQUMsR0FBQy9ELENBQUMsQ0FBQ29ILEdBQUcsR0FBQ3JELENBQUMsR0FBQytELENBQUMsRUFBQzlILENBQUMsQ0FBQ21ILElBQUksR0FBQ3JELENBQUMsR0FBQytELENBQUMsSUFBRTlELENBQUMsS0FBRyxDQUFDLEdBQUMrRCxDQUFDLEtBQUcsQ0FBQyxHQUFDLENBQUMsR0FBQyxDQUFDLENBQUMsRUFBQzdELENBQUMsR0FBQ3pFLENBQUMsQ0FBQzRILEdBQUcsR0FBQ25ELENBQUMsR0FBQytELENBQUMsRUFBQ3hJLENBQUMsQ0FBQzJILElBQUksR0FBQ25ELENBQUMsR0FBQytELENBQUMsSUFBRTlELENBQUMsS0FBRyxDQUFDLEdBQUMrRCxDQUFDLEtBQUcsQ0FBQyxHQUFDLENBQUMsR0FBQyxDQUFDLENBQUMsRUFBQzdELENBQUMsR0FBQy9DLENBQUMsQ0FBQ2dHLEdBQUcsR0FBQ2pELENBQUMsR0FBQytELENBQUMsRUFBQzlHLENBQUMsQ0FBQytGLElBQUksR0FBQ2pELENBQUMsR0FBQytELENBQUMsSUFBRTlELENBQUMsS0FBRyxDQUFDLEdBQUMrRCxDQUFDLEtBQUcsQ0FBQyxHQUFDLENBQUMsR0FBQyxDQUFDLENBQUMsRUFBQzdELENBQUMsR0FBQ3JDLENBQUMsQ0FBQ29GLEdBQUcsR0FBQy9DLENBQUMsR0FBQytELENBQUMsRUFBQ3BHLENBQUMsQ0FBQ21GLElBQUksR0FBQy9DLENBQUMsR0FBQytELENBQUMsSUFBRTlELENBQUMsS0FBRyxDQUFDLEdBQUMrRCxDQUFDLEtBQUcs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QUFDLEVBQUUsRUFBQyxFQUFFLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxFQUFFLEVBQUMsRUFBRSxFQUFDLEVBQUUsRUFBQyxFQUFFLEVBQUMsRUFBRSxFQUFDLEVBQUUsRUFBQyxFQUFFLEVBQUMsQ0FBQyxFQUFDLEVBQUUsRUFBQyxFQUFFLEVBQUMsRUFBRSxFQUFDLEVBQUUsRUFBQyxFQUFFLEVBQUMsRUFBRSxFQUFDLEVBQUUsRUFBQyxDQUFDLEVBQUMsRUFBRSxFQUFDLEVBQUUsRUFBQyxFQUFFLEVBQUMsRUFBRSxFQUFDLEVBQUUsRUFBQyxFQUFFLEVBQUMsRUFBRSxFQUFDLEVBQUUsRUFBQyxFQUFFLEVBQUMsRUFBRSxFQUFDLEVBQUUsRUFBQyxDQUFDLEVBQUMsRUFBRSxFQUFDLEVBQUUsRUFBQyxFQUFFLEVBQUMsRUFBRSxFQUFDLEVBQUUsRUFBQyxFQUFFLEVBQUMsRUFBRSxFQUFDLENBQUMsRUFBQyxFQUFFLEVBQUMsRUFBRSxFQUFDLEVBQUUsRUFBQyxFQUFFLEVBQUMsRUFBRSxFQUFDLEVBQUUsRUFBQyxFQUFFLEVBQUMsQ0FBQyxFQUFDLEVBQUUsRUFBQyxFQUFFLEVBQUMsRUFBRSxFQUFDLENBQUMsQ0FBQztNQUFDZ0IsQ0FBQyxHQUFDLENBQUMsRUFBRSxFQUFDLEVBQUUsRUFBQyxFQUFFLEVBQUMsRUFBRSxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLEVBQUUsRUFBQyxFQUFFLEVBQUMsQ0FBQyxFQUFDLEVBQUUsRUFBQyxFQUFFLEVBQUMsRUFBRSxFQUFDLEVBQUUsRUFBQyxFQUFFLEVBQUMsQ0FBQyxFQUFDLEVBQUUsRUFBQyxDQUFDLEVBQUMsRUFBRSxFQUFDLENBQUMsRUFBQyxFQUFFLEVBQUMsRUFBRSxFQUFDLEVBQUUsRUFBQyxDQUFDLEVBQUMsRUFBRSxFQUFDLEVBQUUsRUFBQyxFQUFFLEVBQUMsRUFBRSxFQUFDLEVBQUUsRUFBQyxFQUFFLEVBQUMsRUFBRSxFQUFDLEVBQUUsRUFBQyxFQUFFLEVBQUMsRUFBRSxFQUFDLEVBQUUsRUFBQyxFQUFFLEVBQUMsRUFBRSxFQUFDLEVBQUUsRUFBQyxFQUFFLEVBQUMsRUFBRSxFQUFDLEVBQUUsRUFBQyxFQUFFLEVBQUMsRUFBRSxFQUFDLEVBQUUsRUFBQyxFQUFFLEVBQUMsRUFBRSxFQUFDLEVBQUUsRUFBQyxFQUFFLENBQUM7TUFBQ0ssQ0FBQyxHQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxFQUFFLEVBQUMsRUFBRSxFQUFDLEVBQUUsRUFBQyxFQUFFLEVBQUMsRUFBRSxFQUFDLEVBQUUsRUFBQyxFQUFFLEVBQUMsRUFBRSxFQUFDLEVBQUUsRUFBQyxFQUFFLEVBQUMsRUFBRSxDQUFDO01BQUNPLENBQUMsR0FBQyxDQUFDO1FBQUMsQ0FBQyxFQUFDLE9BQU87UUFBQyxTQUFTLEVBQUMsS0FBSztRQUFDLFNBQVMsRUFBQyxPQUFPO1FBQUMsU0FBUyxFQUFDLENBQUM7UUFBQyxVQUFVLEVBQUMsR0FBRztRQUFDLFVBQVUsRUFBQyxPQUFPO1FBQUMsVUFBVSxFQUFDLE9BQU87UUFBQyxVQUFVLEVBQUMsT0FBTztRQUFDLFVBQVUsRUFBQyxHQUFHO1FBQUMsVUFBVSxFQUFDLE9BQU87UUFBQyxVQUFVLEVBQUMsS0FBSztRQUFDLFVBQVUsRUFBQyxPQUFPO1FBQUMsVUFBVSxFQUFDLEtBQUs7UUFBQyxVQUFVLEVBQUMsT0FBTztRQUFDLFVBQVUsRUFBQyxDQUFDO1FBQUMsVUFBVSxFQUFDLEtBQUs7UUFBQyxTQUFTLEVBQUMsQ0FBQztRQUFDLFNBQVMsRUFBQyxPQUFPO1FBQUMsU0FBUyxFQUFDLEtBQUs7UUFBQyxTQUFTLEVBQUMsS0FBSztRQUFDLFVBQVUsRUFBQyxPQUFPO1FBQUMsVUFBVSxFQUFDLEdBQUc7UUFBQyxVQUFVLEVBQUMsT0FBTztRQUFDLFVBQVUsRUFBQyxDQUFDO1FBQUMsVUFBVSxFQUFDLE9BQU87UUFBQyxVQUFVLEVBQUMsS0FBSztRQUFDLFVBQVUsRUFBQyxPQUFPO1FBQUMsVUFBVSxFQUFDLE9BQU87UUFBQyxVQUFVLEVBQUMsT0FBTztRQUFDLFVBQVUsRUFBQyxLQUFLO1FBQUMsVUFBVSxFQUFDLEdBQUc7UUFBQyxVQUFVLEVBQUMsT0FBTztRQUFDLENBQUMsRUFBQyxLQUFLO1FBQUMsU0FBUyxFQUFDLENBQUM7UUFBQyxTQUFTLEVBQUMsT0FBTztRQUFDLFNBQVMsRUFBQyxPQUFPO1FBQUMsVUFBVSxFQUFDLE9BQU87UUFBQyxVQUFVLEVBQUMsS0FBSztRQUFDLFVBQVUsRUFBQyxHQUFHO1FBQUMsVUFBVSxFQUFDLE9BQU87UUFBQyxVQUFVLEVBQUMsT0FBTztRQUFDLFVBQVUsRUFBQyxPQUFPO1FBQUMsVUFBVSxFQUFDLE9BQU87UUFBQyxVQUFVLEVBQUMsS0FBSztRQUFDLFVBQVUsRUFBQyxHQUFHO1FBQUMsVUFBVSxFQUFDLE9BQU87UUFBQyxVQUFVLEVBQUMsS0FBSztRQUFDLFVBQVUsRUFBQyxDQUFDO1FBQUMsU0FBUyxFQUFDLE9BQU87UUFBQyxTQUFTLEVBQUMsT0FBTztRQUFDLFNBQVMsRUFBQyxPQUFPO1FBQUMsU0FBUyxFQUFDLEdBQUc7UUFBQyxVQUFVLEVBQUMsS0FBSztRQUFDLFVBQVUsRUFBQyxPQUFPO1FBQUMsVUFBVSxFQUFDLENBQUM7UUFBQyxVQUFVLEVBQUMsS0FBSztRQUFDLFVBQVUsRUFBQyxLQUFLO1FBQUMsVUFBVSxFQUFDLE9BQU87UUFBQyxVQUFVLEVBQUMsR0FBRztRQUFDLFVBQVUsRUFBQyxPQUFPO1FBQUMsVUFBVSxFQUFDLE9BQU87UUFBQyxVQUFVLEVBQUMsQ0FBQztRQUFDLFVBQVUsRUFBQyxLQUFLO1FBQUMsVUFBVSxFQUFDO01BQU8sQ0FBQyxFQUFDO1FBQUMsQ0FBQyxFQUFDLFVBQVU7UUFBQyxRQUFRLEVBQUMsS0FBSztRQUFDLFFBQVEsRUFBQyxNQUFNO1FBQUMsUUFBUSxFQUFDLFVBQVU7UUFBQyxRQUFRLEVBQUMsVUFBVTtRQUFDLFFBQVEsRUFBQyxVQUFVO1FBQUMsU0FBUyxFQUFDLFVBQVU7UUFBQyxTQUFTLEVBQUMsRUFBRTtRQUFDLFNBQVMsRUFBQyxNQUFNO1FBQUMsU0FBUyxFQUFDLFVBQVU7UUFBQyxTQUFTLEVBQUMsVUFBVTtRQUFDLFNBQVMsRUFBQyxNQUFNO1FBQUMsU0FBUyxFQUFDLE1BQU07UUFBQyxTQUFTLEVBQUMsQ0FBQztRQUFDLFNBQVMsRUFBQyxLQUFLO1FBQUMsU0FBUyxFQUFDLFVBQVU7UUFBQyxPQUFPLEVBQUMsVUFBVTtRQUFDLFFBQVEsRUFBQyxNQUFNO1FBQUMsUUFBUSxFQUFDLEVBQUU7UUFBQyxRQUFRLEVBQUMsVUFBVTtRQUFDLFFBQVEsRUFBQyxVQUFVO1FBQUMsUUFBUSxFQUFDLFVBQVU7UUFBQyxTQUFTLEVBQUMsTUFBTTtRQUFDLFNBQVMsRUFBQyxVQUFVO1FBQUMsU0FBUyxFQUFDLE1BQU07UUFBQyxTQUFTLEVBQUMsQ0FBQztRQUFDLFNBQVMsRUFBQyxLQUFLO1FBQUMsU0FBUyxFQUFDLFVBQVU7UUFBQyxTQUFTLEVBQUMsVUFBVTtRQUFDLFNBQVMsRUFBQyxNQUFNO1FBQUMsU0FBUyxFQUFDLFVBQVU7UUFBQyxTQUFTLEVBQUMsS0FBSztRQUFDLFNBQVMsRUFBQyxDQUFDO1FBQUMsU0FBUyxFQUFDLFVBQVU7UUFBQyxTQUFTLEVBQUMsVUFBVTtRQUFDLFNBQVMsRUFBQyxVQUFVO1FBQUMsU0FBUyxFQUFDLFVBQVU7UUFBQyxTQUFTLEVBQUMsRUFBRTtRQUFDLFNBQVMsRUFBQyxNQUFNO1FBQUMsU0FBUyxFQUFDLEtBQUs7UUFBQyxTQUFTLEVBQUMsS0FBSztRQUFDLFNBQVMsRUFBQyxNQUFNO1FBQUMsU0FBUyxFQUFDLE1BQU07UUFBQyxTQUFTLEVBQUMsVUFBVTtRQUFDLFNBQVMsRUFBQyxNQUFNO1FBQUMsU0FBUyxFQUFDLFVBQVU7UUFBQyxTQUFTLEVBQUMsVUFBVTtRQUFDLFNBQVMsRUFBQyxVQUFVO1FBQUMsU0FBUyxFQUFDLE1BQU07UUFBQyxTQUFTLEVBQUMsTUFBTTtRQUFDLFNBQVMsRUFBQyxVQUFVO1FBQUMsU0FBUyxFQUFDLEtBQUs7UUFBQyxTQUFTLEVBQUMsVUFBVTtRQUFDLFNBQVMsRUFBQyxVQUFVO1FBQUMsU0FBUyxFQUFDLEVBQUU7UUFBQyxTQUFTLEVBQUMsVUFBVTtRQUFDLFNBQVMsRUFBQyxVQUFVO1FBQUMsU0FBUyxFQUFDLFVBQVU7UUFBQyxTQUFTLEVBQUMsVUFBVTtRQUFDLFNBQVMsRUFBQyxNQUFNO1FBQUMsU0FBUyxFQUFDLENBQUM7UUFBQyxTQUFTLEVBQUMsS0FBSztRQUFDLFNBQVMsRUFBQyxVQUFVO1FBQUMsU0FBUyxFQUFDO01BQU0sQ0FBQyxFQUFDO1FBQUMsQ0FBQyxFQUFDLEdBQUc7UUFBQyxPQUFPLEVBQUMsQ0FBQztRQUFDLE9BQU8sRUFBQyxRQUFRO1FBQUMsT0FBTyxFQUFDLEtBQUs7UUFBQyxPQUFPLEVBQUMsS0FBSztRQUFDLE9BQU8sRUFBQyxRQUFRO1FBQUMsT0FBTyxFQUFDLFFBQVE7UUFBQyxPQUFPLEVBQUMsUUFBUTtRQUFDLE9BQU8sRUFBQyxRQUFRO1FBQUMsT0FBTyxFQUFDLFFBQVE7UUFBQyxRQUFRLEVBQUMsS0FBSztRQUFDLFFBQVEsRUFBQyxRQUFRO1FBQUMsUUFBUSxFQUFDLFFBQVE7UUFBQyxRQUFRLEVBQUMsS0FBSztRQUFDLFFBQVEsRUFBQyxDQUFDO1FBQUMsUUFBUSxFQUFDLEdBQUc7UUFBQyxNQUFNLEVBQUMsUUFBUTtRQUFDLE9BQU8sRUFBQyxRQUFRO1FBQUMsT0FBTyxFQUFDLENBQUM7UUFBQyxPQUFPLEVBQUMsUUFBUTtRQUFDLE9BQU8sRUFBQyxRQUFRO1FBQUMsT0FBTyxFQUFDLEtBQUs7UUFBQyxPQUFPLEVBQUMsS0FBSztRQUFDLE9BQU8sRUFBQyxHQUFHO1FBQUMsT0FBTyxFQUFDLENBQUM7UUFBQyxPQUFPLEVBQUMsR0FBRztRQUFDLFFBQVEsRUFBQyxRQUFRO1FBQUMsUUFBUSxFQUFDLEtBQUs7UUFBQyxRQUFRLEVBQUMsS0FBSztRQUFDLFFBQVEsRUFBQyxRQUFRO1FBQUMsUUFBUSxFQUFDLFFBQVE7UUFBQyxRQUFRLEVBQUMsUUFBUTtRQUFDLFFBQVEsRUFBQyxRQUFRO1FBQUMsUUFBUSxFQUFDLEtBQUs7UUFBQyxRQUFRLEVBQUMsS0FBSztRQUFDLFFBQVEsRUFBQyxRQUFRO1FBQUMsUUFBUSxFQUFDLEdBQUc7UUFBQyxRQUFRLEVBQUMsUUFBUTtRQUFDLFFBQVEsRUFBQyxRQUFRO1FBQUMsUUFBUSxFQUFDLENBQUM7UUFBQyxRQUFRLEVBQUMsUUFBUTtRQUFDLFFBQVEsRUFBQyxRQUFRO1FBQUMsUUFBUSxFQUFDLENBQUM7UUFBQyxRQUFRLEVBQUMsS0FBSztRQUFDLFFBQVEsRUFBQyxRQUFRO1FBQUMsUUFBUSxFQUFDLEdBQUc7UUFBQyxRQUFRLEVBQUMsS0FBSztRQUFDLFFBQVEsRUFBQyxRQUFRO1FBQUMsUUFBUSxFQUFDLFFBQVE7UUFBQyxRQUFRLEVBQUMsR0FBRztRQUFDLFFBQVEsRUFBQyxRQUFRO1FBQUMsUUFBUSxFQUFDLENBQUM7UUFBQyxRQUFRLEVBQUMsS0FBSztRQUFDLFFBQVEsRUFBQyxRQUFRO1FBQUMsUUFBUSxFQUFDLEdBQUc7UUFBQyxRQUFRLEVBQUMsUUFBUTtRQUFDLFFBQVEsRUFBQyxLQUFLO1FBQUMsUUFBUSxFQUFDLFFBQVE7UUFBQyxRQUFRLEVBQUMsS0FBSztRQUFDLFFBQVEsRUFBQyxRQUFRO1FBQUMsUUFBUSxFQUFDLFFBQVE7UUFBQyxRQUFRLEVBQUMsUUFBUTtRQUFDLFFBQVEsRUFBQyxDQUFDO1FBQUMsUUFBUSxFQUFDO01BQUssQ0FBQyxFQUFDO1FBQUMsQ0FBQyxFQUFDLFVBQVU7UUFBQyxLQUFLLEVBQUMsVUFBVTtRQUFDLE1BQU0sRUFBQyxPQUFPO1FBQUMsTUFBTSxFQUFDLFVBQVU7UUFBQyxNQUFNLEVBQUMsQ0FBQztRQUFDLE1BQU0sRUFBQyxPQUFPO1FBQUMsTUFBTSxFQUFDLFVBQVU7UUFBQyxNQUFNLEVBQUMsT0FBTztRQUFDLE1BQU0sRUFBQyxVQUFVO1FBQUMsTUFBTSxFQUFDLE9BQU87UUFBQyxNQUFNLEVBQUMsRUFBRTtRQUFDLE1BQU0sRUFBQyxVQUFVO1FBQUMsTUFBTSxFQUFDLFVBQVU7UUFBQyxNQUFNLEVBQUMsSUFBSTtRQUFDLE1BQU0sRUFBQyxJQUFJO1FBQUMsTUFBTSxFQUFDLFVBQVU7UUFBQyxLQUFLLEVBQUMsVUFBVTtRQUFDLEtBQUssRUFBQyxFQUFFO1FBQUMsTUFBTSxFQUFDLFVBQVU7UUFBQyxNQUFNLEVBQUMsVUFBVTtRQUFDLE1BQU0sRUFBQyxPQUFPO1FBQUMsTUFBTSxFQUFDLFVBQVU7UUFBQyxNQUFNLEVBQUMsQ0FBQztRQUFDLE1BQU0sRUFBQyxVQUFVO1FBQUMsTUFBTSxFQUFDLElBQUk7UUFBQyxNQUFNLEVBQUMsVUFBVTtRQUFDLE1BQU0sRUFBQyxPQUFPO1FBQUMsTUFBTSxFQUFDLElBQUk7UUFBQyxNQUFNLEVBQUMsVUFBVTtRQUFDLE1BQU0sRUFBQyxPQUFPO1FBQUMsTUFBTSxFQUFDLE9BQU87UUFBQyxPQUFPLEVBQUMsVUFBVTtRQUFDLE9BQU8sRUFBQyxPQUFPO1FBQUMsT0FBTyxFQUFDLE9BQU87UUFBQyxPQUFPLEVBQUMsVUFBVTtRQUFDLE9BQU8sRUFBQyxDQUFDO1FBQUMsT0FBTyxFQUFDLElBQUk7UUFBQyxPQUFPLEVBQUMsVUFBVTtRQUFDLE9BQU8sRUFBQyxVQUFVO1FBQUMsT0FBTyxFQUFDLFVBQVU7UUFBQyxPQUFPLEVBQUMsVUFBVTtRQUFDLE9BQU8sRUFBQyxVQUFVO1FBQUMsT0FBTyxFQUFDLFVBQVU7UUFBQyxPQUFPLEVBQUMsT0FBTztRQUFDLE9BQU8sRUFBQyxVQUFVO1FBQUMsT0FBTyxFQUFDLE9BQU87UUFBQyxPQUFPLEVBQUMsRUFBRTtRQUFDLE9BQU8sRUFBQyxJQUFJO1FBQUMsT0FBTyxFQUFDLFVBQVU7UUFBQyxPQUFPLEVBQUMsVUFBVTtRQUFDLE9BQU8sRUFBQyxDQUFDO1FBQUMsT0FBTyxFQUFDLE9BQU87UUFBQyxPQUFPLEVBQUMsT0FBTztRQUFDLE9BQU8sRUFBQyxVQUFVO1FBQUMsT0FBTyxFQUFDLFVBQVU7UUFBQyxPQUFPLEVBQUMsRUFBRTtRQUFDLE9BQU8sRUFBQyxVQUFVO1FBQUMsT0FBTyxFQUFDLElBQUk7UUFBQyxPQUFPLEVBQUMsVUFBVTtRQUFDLE9BQU8sRUFBQyxVQUFVO1FBQUMsT0FBTyxFQUFDLElBQUk7UUFBQyxPQUFPLEVBQUMsVUFBVTtRQUFDLE9BQU8sRUFBQyxPQUFPO1FBQUMsT0FBTyxFQUFDO01BQU8sQ0FBQyxFQUFDO1FBQUMsQ0FBQyxFQUFDLEdBQUc7UUFBQyxJQUFJLEVBQUMsUUFBUTtRQUFDLElBQUksRUFBQyxNQUFNO1FBQUMsS0FBSyxFQUFDLFNBQVM7UUFBQyxLQUFLLEVBQUMsU0FBUztRQUFDLEtBQUssRUFBQyxRQUFRO1FBQUMsS0FBSyxFQUFDLFNBQVM7UUFBQyxLQUFLLEVBQUMsTUFBTTtRQUFDLEtBQUssRUFBQyxRQUFRO1FBQUMsS0FBSyxFQUFDLFNBQVM7UUFBQyxLQUFLLEVBQUMsU0FBUztRQUFDLEtBQUssRUFBQyxTQUFTO1FBQUMsS0FBSyxFQUFDLFNBQVM7UUFBQyxLQUFLLEVBQUMsQ0FBQztRQUFDLEtBQUssRUFBQyxRQUFRO1FBQUMsS0FBSyxFQUFDLFNBQVM7UUFBQyxJQUFJLEVBQUMsUUFBUTtRQUFDLElBQUksRUFBQyxTQUFTO1FBQUMsS0FBSyxFQUFDLEdBQUc7UUFBQyxLQUFLLEVBQUMsUUFBUTtRQUFDLEtBQUssRUFBQyxNQUFNO1FBQUMsS0FBSyxFQUFDLFNBQVM7UUFBQyxLQUFLLEVBQUMsU0FBUztRQUFDLEtBQUssRUFBQyxTQUFTO1FBQUMsS0FBSyxFQUFDLFNBQVM7UUFBQyxLQUFLLEVBQUMsQ0FBQztRQUFDLEtBQUssRUFBQyxTQUFTO1FBQUMsS0FBSyxFQUFDLFFBQVE7UUFBQyxLQUFLLEVBQUMsU0FBUztRQUFDLEtBQUssRUFBQyxTQUFTO1FBQUMsS0FBSyxFQUFDLFFBQVE7UUFBQyxLQUFLLEVBQUMsTUFBTTtRQUFDLEtBQUssRUFBQyxNQUFNO1FBQUMsS0FBSyxFQUFDLEdBQUc7UUFBQyxLQUFLLEVBQUMsU0FBUztRQUFDLEtBQUssRUFBQyxTQUFTO1FBQUMsS0FBSyxFQUFDLFFBQVE7UUFBQyxLQUFLLEVBQUMsU0FBUztRQUFDLEtBQUssRUFBQyxTQUFTO1FBQUMsS0FBSyxFQUFDLFFBQVE7UUFBQyxLQUFLLEVBQUMsU0FBUztRQUFDLE1BQU0sRUFBQyxTQUFTO1FBQUMsTUFBTSxFQUFDLFFBQVE7UUFBQyxNQUFNLEVBQUMsU0FBUztRQUFDLE1BQU0sRUFBQyxNQUFNO1FBQUMsTUFBTSxFQUFDLFNBQVM7UUFBQyxNQUFNLEVBQUMsQ0FBQztRQUFDLE1BQU0sRUFBQyxRQUFRO1FBQUMsS0FBSyxFQUFDLFNBQVM7UUFBQyxLQUFLLEVBQUMsUUFBUTtRQUFDLEtBQUssRUFBQyxRQUFRO1FBQUMsS0FBSyxFQUFDLFNBQVM7UUFBQyxLQUFLLEVBQUMsU0FBUztRQUFDLEtBQUssRUFBQyxRQUFRO1FBQUMsS0FBSyxFQUFDLEdBQUc7UUFBQyxLQUFLLEVBQUMsU0FBUztRQUFDLE1BQU0sRUFBQyxNQUFNO1FBQUMsTUFBTSxFQUFDLFNBQVM7UUFBQyxNQUFNLEVBQUMsQ0FBQztRQUFDLE1BQU0sRUFBQyxTQUFTO1FBQUMsTUFBTSxFQUFDLFFBQVE7UUFBQyxNQUFNLEVBQUMsTUFBTTtRQUFDLE1BQU0sRUFBQyxTQUFTO1FBQUMsTUFBTSxFQUFDO01BQVMsQ0FBQyxFQUFDO1FBQUMsQ0FBQyxFQUFDLFNBQVM7UUFBQyxHQUFHLEVBQUMsSUFBSTtRQUFDLEdBQUcsRUFBQyxTQUFTO1FBQUMsR0FBRyxFQUFDLFNBQVM7UUFBQyxJQUFJLEVBQUMsU0FBUztRQUFDLElBQUksRUFBQyxPQUFPO1FBQUMsSUFBSSxFQUFDLE9BQU87UUFBQyxJQUFJLEVBQUMsU0FBUztRQUFDLElBQUksRUFBQyxDQUFDO1FBQUMsSUFBSSxFQUFDLFNBQVM7UUFBQyxJQUFJLEVBQUMsT0FBTztRQUFDLElBQUksRUFBQyxDQUFDO1FBQUMsSUFBSSxFQUFDLFNBQVM7UUFBQyxJQUFJLEVBQUMsT0FBTztRQUFDLElBQUksRUFBQyxJQUFJO1FBQUMsSUFBSSxFQUFDLFNBQVM7UUFBQyxHQUFHLEVBQUMsU0FBUztRQUFDLEdBQUcsRUFBQyxTQUFTO1FBQUMsR0FBRyxFQUFDLENBQUM7UUFBQyxHQUFHLEVBQUMsT0FBTztRQUFDLElBQUksRUFBQyxPQUFPO1FBQUMsSUFBSSxFQUFDLFNBQVM7UUFBQyxJQUFJLEVBQUMsU0FBUztRQUFDLElBQUksRUFBQyxJQUFJO1FBQUMsSUFBSSxFQUFDLE9BQU87UUFBQyxJQUFJLEVBQUMsSUFBSTtRQUFDLElBQUksRUFBQyxTQUFTO1FBQUMsSUFBSSxFQUFDLFNBQVM7UUFBQyxJQUFJLEVBQUMsQ0FBQztRQUFDLElBQUksRUFBQyxTQUFTO1FBQUMsSUFBSSxFQUFDLE9BQU87UUFBQyxJQUFJLEVBQUMsU0FBUztRQUFDLElBQUksRUFBQyxTQUFTO1FBQUMsSUFBSSxFQUFDLFNBQVM7UUFBQyxJQUFJLEVBQUMsU0FBUztRQUFDLElBQUksRUFBQyxJQUFJO1FBQUMsSUFBSSxFQUFDLE9BQU87UUFBQyxJQUFJLEVBQUMsU0FBUztRQUFDLElBQUksRUFBQyxTQUFTO1FBQUMsSUFBSSxFQUFDLE9BQU87UUFBQyxJQUFJLEVBQUMsT0FBTztRQUFDLElBQUksRUFBQyxDQUFDO1FBQUMsSUFBSSxFQUFDLENBQUM7UUFBQyxJQUFJLEVBQUMsU0FBUztRQUFDLElBQUksRUFBQyxJQUFJO1FBQUMsSUFBSSxFQUFDLFNBQVM7UUFBQyxJQUFJLEVBQUMsU0FBUztRQUFDLElBQUksRUFBQyxPQUFPO1FBQUMsSUFBSSxFQUFDLENBQUM7UUFBQyxJQUFJLEVBQUMsT0FBTztRQUFDLElBQUksRUFBQyxPQUFPO1FBQUMsSUFBSSxFQUFDLFNBQVM7UUFBQyxJQUFJLEVBQUMsU0FBUztRQUFDLElBQUksRUFBQyxJQUFJO1FBQUMsSUFBSSxFQUFDLFNBQVM7UUFBQyxJQUFJLEVBQUMsU0FBUztRQUFDLElBQUksRUFBQyxTQUFTO1FBQUMsSUFBSSxFQUFDLFNBQVM7UUFBQyxJQUFJLEVBQUMsSUFBSTtRQUFDLElBQUksRUFBQyxPQUFPO1FBQUMsSUFBSSxFQUFDLE9BQU87UUFBQyxJQUFJLEVBQUMsQ0FBQztRQUFDLElBQUksRUFBQyxTQUFTO1FBQUMsSUFBSSxFQUFDO01BQVMsQ0FBQyxFQUFDO1FBQUMsQ0FBQyxFQUFDLE9BQU87UUFBQyxFQUFFLEVBQUMsUUFBUTtRQUFDLEVBQUUsRUFBQyxJQUFJO1FBQUMsRUFBRSxFQUFDLE9BQU87UUFBQyxFQUFFLEVBQUMsUUFBUTtRQUFDLEVBQUUsRUFBQyxDQUFDO1FBQUMsRUFBRSxFQUFDLENBQUM7UUFBQyxHQUFHLEVBQUMsUUFBUTtRQUFDLEdBQUcsRUFBQyxRQUFRO1FBQUMsR0FBRyxFQUFDLE9BQU87UUFBQyxHQUFHLEVBQUMsUUFBUTtRQUFDLEdBQUcsRUFBQyxRQUFRO1FBQUMsR0FBRyxFQUFDLFFBQVE7UUFBQyxHQUFHLEVBQUMsSUFBSTtRQUFDLEdBQUcsRUFBQyxPQUFPO1FBQUMsR0FBRyxFQUFDLFFBQVE7UUFBQyxDQUFDLEVBQUMsUUFBUTtRQUFDLEVBQUUsRUFBQyxDQUFDO1FBQUMsRUFBRSxFQUFDLFFBQVE7UUFBQyxFQUFFLEVBQUMsUUFBUTtRQUFDLEVBQUUsRUFBQyxPQUFPO1FBQUMsRUFBRSxFQUFDLFFBQVE7UUFBQyxHQUFHLEVBQUMsUUFBUTtRQUFDLEdBQUcsRUFBQyxJQUFJO1FBQUMsR0FBRyxFQUFDLE9BQU87UUFBQyxHQUFHLEVBQUMsUUFBUTtRQUFDLEdBQUcsRUFBQyxRQUFRO1FBQUMsR0FBRyxFQUFDLE9BQU87UUFBQyxHQUFHLEVBQUMsSUFBSTtRQUFDLEdBQUcsRUFBQyxRQUFRO1FBQUMsR0FBRyxFQUFDLENBQUM7UUFBQyxHQUFHLEVBQUMsT0FBTztRQUFDLEdBQUcsRUFBQyxRQUFRO1FBQUMsR0FBRyxFQUFDLE9BQU87UUFBQyxHQUFHLEVBQUMsUUFBUTtRQUFDLEdBQUcsRUFBQyxRQUFRO1FBQUMsR0FBRyxFQUFDLE9BQU87UUFBQyxHQUFHLEVBQUMsUUFBUTtRQUFDLEdBQUcsRUFBQyxRQUFRO1FBQUMsR0FBRyxFQUFDLE9BQU87UUFBQyxHQUFHLEVBQUMsSUFBSTtRQUFDLEdBQUcsRUFBQyxRQUFRO1FBQUMsR0FBRyxFQUFDLE9BQU87UUFBQyxHQUFHLEVBQUMsQ0FBQztRQUFDLEdBQUcsRUFBQyxDQUFDO1FBQUMsR0FBRyxFQUFDLFFBQVE7UUFBQyxHQUFHLEVBQUMsUUFBUTtRQUFDLEdBQUcsRUFBQyxJQUFJO1FBQUMsR0FBRyxFQUFDLE9BQU87UUFBQyxHQUFHLEVBQUMsUUFBUTtRQUFDLEdBQUcsRUFBQyxRQUFRO1FBQUMsR0FBRyxFQUFDLENBQUM7UUFBQyxHQUFHLEVBQUMsUUFBUTtRQUFDLEdBQUcsRUFBQyxPQUFPO1FBQUMsR0FBRyxFQUFDLElBQUk7UUFBQyxHQUFHLEVBQUMsUUFBUTtRQUFDLEdBQUcsRUFBQyxRQUFRO1FBQUMsR0FBRyxFQUFDLFFBQVE7UUFBQyxHQUFHLEVBQUMsQ0FBQztRQUFDLEdBQUcsRUFBQyxRQUFRO1FBQUMsR0FBRyxFQUFDLE9BQU87UUFBQyxHQUFHLEVBQUMsSUFBSTtRQUFDLEdBQUcsRUFBQyxRQUFRO1FBQUMsR0FBRyxFQUFDO01BQU8sQ0FBQyxFQUFDO1FBQUMsQ0FBQyxFQUFDLFNBQVM7UUFBQyxDQUFDLEVBQUMsTUFBTTtRQUFDLENBQUMsRUFBQyxTQUFTO1FBQUMsQ0FBQyxFQUFDLEVBQUU7UUFBQyxDQUFDLEVBQUMsTUFBTTtRQUFDLENBQUMsRUFBQyxTQUFTO1FBQUMsQ0FBQyxFQUFDLFNBQVM7UUFBQyxDQUFDLEVBQUMsSUFBSTtRQUFDLENBQUMsRUFBQyxTQUFTO1FBQUMsQ0FBQyxFQUFDLFNBQVM7UUFBQyxFQUFFLEVBQUMsTUFBTTtRQUFDLEVBQUUsRUFBQyxTQUFTO1FBQUMsRUFBRSxFQUFDLElBQUk7UUFBQyxFQUFFLEVBQUMsQ0FBQztRQUFDLEVBQUUsRUFBQyxTQUFTO1FBQUMsRUFBRSxFQUFDLE1BQU07UUFBQyxVQUFVLEVBQUMsSUFBSTtRQUFDLFVBQVUsRUFBQyxTQUFTO1FBQUMsVUFBVSxFQUFDLFNBQVM7UUFBQyxVQUFVLEVBQUMsU0FBUztRQUFDLFVBQVUsRUFBQyxTQUFTO1FBQUMsVUFBVSxFQUFDLE1BQU07UUFBQyxVQUFVLEVBQUMsTUFBTTtRQUFDLFVBQVUsRUFBQyxFQUFFO1FBQUMsVUFBVSxFQUFDLFNBQVM7UUFBQyxVQUFVLEVBQUMsSUFBSTtRQUFDLFVBQVUsRUFBQyxNQUFNO1FBQUMsVUFBVSxFQUFDLFNBQVM7UUFBQyxVQUFVLEVBQUMsQ0FBQztRQUFDLFVBQVUsRUFBQyxTQUFTO1FBQUMsVUFBVSxFQUFDLFNBQVM7UUFBQyxVQUFVLEVBQUMsTUFBTTtRQUFDLEVBQUUsRUFBQyxNQUFNO1FBQUMsRUFBRSxFQUFDLFNBQVM7UUFBQyxFQUFFLEVBQUMsRUFBRTtRQUFDLEVBQUUsRUFBQyxJQUFJO1FBQUMsRUFBRSxFQUFDLFNBQVM7UUFBQyxFQUFFLEVBQUMsU0FBUztRQUFDLEVBQUUsRUFBQyxTQUFTO1FBQUMsRUFBRSxFQUFDLE1BQU07UUFBQyxFQUFFLEVBQUMsQ0FBQztRQUFDLEVBQUUsRUFBQyxNQUFNO1FBQUMsRUFBRSxFQUFDLFNBQVM7UUFBQyxFQUFFLEVBQUMsU0FBUztRQUFDLEVBQUUsRUFBQyxTQUFTO1FBQUMsRUFBRSxFQUFDLE1BQU07UUFBQyxFQUFFLEVBQUMsSUFBSTtRQUFDLEVBQUUsRUFBQyxTQUFTO1FBQUMsVUFBVSxFQUFDLE1BQU07UUFBQyxVQUFVLEVBQUMsSUFBSTtRQUFDLFVBQVUsRUFBQyxTQUFTO1FBQUMsVUFBVSxFQUFDLE1BQU07UUFBQyxVQUFVLEVBQUMsRUFBRTtRQUFDLFVBQVUsRUFBQyxTQUFTO1FBQUMsVUFBVSxFQUFDLFNBQVM7UUFBQyxVQUFVLEVBQUMsU0FBUztRQUFDLFVBQVUsRUFBQyxTQUFTO1FBQUMsVUFBVSxFQUFDLFNBQVM7UUFBQyxVQUFVLEVBQUMsU0FBUztRQUFDLFVBQVUsRUFBQyxDQUFDO1FBQUMsVUFBVSxFQUFDLE1BQU07UUFBQyxVQUFVLEVBQUMsSUFBSTtRQUFDLFVBQVUsRUFBQyxNQUFNO1FBQUMsVUFBVSxFQUFDO01BQVMsQ0FBQyxDQUFDO01BQUNZLENBQUMsR0FBQyxDQUFDLFVBQVUsRUFBQyxTQUFTLEVBQUMsUUFBUSxFQUFDLE9BQU8sRUFBQyxNQUFNLEVBQUMsSUFBSSxFQUFDLEdBQUcsRUFBQyxVQUFVLENBQUM7TUFBQ3NCLENBQUMsR0FBQ3RELENBQUMsQ0FBQ3dPLEdBQUcsR0FBQ3JQLENBQUMsQ0FBQ1QsTUFBTSxDQUFDO1FBQUMwRCxRQUFRLEVBQUMsU0FBQUEsU0FBQSxFQUFVO1VBQUMsS0FBSSxJQUFJMUUsQ0FBQyxHQUFDLElBQUksQ0FBQ3VOLElBQUksRUFBQ3ROLENBQUMsR0FBQ0QsQ0FBQyxDQUFDMkIsS0FBSyxFQUFDcEIsQ0FBQyxHQUFDLEVBQUUsRUFBQ0ksQ0FBQyxHQUFDLENBQUMsRUFBQ0EsQ0FBQyxHQUFDLEVBQUUsRUFBQ0EsQ0FBQyxFQUFFLEVBQUM7WUFBQyxJQUFJQyxDQUFDLEdBQUNrQixDQUFDLENBQUNuQixDQUFDLENBQUMsR0FBQyxDQUFDO1lBQUNKLENBQUMsQ0FBQ0ksQ0FBQyxDQUFDLEdBQUNWLENBQUMsQ0FBQ1csQ0FBQyxLQUFHLENBQUMsQ0FBQyxLQUFHLEVBQUUsR0FBQ0EsQ0FBQyxHQUFDLEVBQUUsR0FBQyxDQUFDO1VBQUE7VUFBQyxLQUFJLElBQUlFLENBQUMsR0FBQyxJQUFJLENBQUNpUSxRQUFRLEdBQUMsRUFBRSxFQUFDdFAsQ0FBQyxHQUFDLENBQUMsRUFBQ0EsQ0FBQyxHQUFDLEVBQUUsRUFBQ0EsQ0FBQyxFQUFFLEVBQUM7WUFBQyxLQUFJLElBQUlhLENBQUMsR0FBQ3hCLENBQUMsQ0FBQ1csQ0FBQyxDQUFDLEdBQUMsRUFBRSxFQUFDaUMsQ0FBQyxHQUFDUCxDQUFDLENBQUMxQixDQUFDLENBQUMsRUFBQ2QsQ0FBQyxHQUFDLENBQUMsRUFBQ0EsQ0FBQyxHQUFDLEVBQUUsRUFBQ0EsQ0FBQyxFQUFFLEVBQUMyQixDQUFDLENBQUMzQixDQUFDLEdBQUMsQ0FBQyxHQUFDLENBQUMsQ0FBQyxJQUFFSixDQUFDLENBQUMsQ0FBQ3VDLENBQUMsQ0FBQ25DLENBQUMsQ0FBQyxHQUFDLENBQUMsR0FBQytDLENBQUMsSUFBRSxFQUFFLENBQUMsSUFBRSxFQUFFLEdBQUMvQyxDQUFDLEdBQUMsQ0FBQyxFQUFDMkIsQ0FBQyxDQUFDLENBQUMsSUFBRTNCLENBQUMsR0FBQyxDQUFDLEdBQUMsQ0FBQyxDQUFDLENBQUMsSUFBRUosQ0FBQyxDQUFDLEVBQUUsR0FBQyxDQUFDdUMsQ0FBQyxDQUFDbkMsQ0FBQyxHQUFDLEVBQUUsQ0FBQyxHQUFDLENBQUMsR0FBQytDLENBQUMsSUFBRSxFQUFFLENBQUMsSUFBRSxFQUFFLEdBQUMvQyxDQUFDLEdBQUMsQ0FBQztZQUFDMkIsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFDQSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUUsQ0FBQyxHQUFDQSxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUcsRUFBRTtZQUFDLEtBQUksSUFBSTNCLENBQUMsR0FBQyxDQUFDLEVBQUNBLENBQUMsR0FBQyxDQUFDLEVBQUNBLENBQUMsRUFBRSxFQUFDMkIsQ0FBQyxDQUFDM0IsQ0FBQyxDQUFDLEdBQUMyQixDQUFDLENBQUMzQixDQUFDLENBQUMsS0FBRyxDQUFDLElBQUVBLENBQUMsR0FBQyxDQUFDLENBQUMsR0FBQyxDQUFDO1lBQUMyQixDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUNBLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBRSxDQUFDLEdBQUNBLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBRyxFQUFFO1VBQUE7VUFBQyxLQUFJLElBQUlnQyxDQUFDLEdBQUMsSUFBSSxDQUFDME0sV0FBVyxHQUFDLEVBQUUsRUFBQ3JRLENBQUMsR0FBQyxDQUFDLEVBQUNBLENBQUMsR0FBQyxFQUFFLEVBQUNBLENBQUMsRUFBRSxFQUFDMkQsQ0FBQyxDQUFDM0QsQ0FBQyxDQUFDLEdBQUNHLENBQUMsQ0FBQyxFQUFFLEdBQUNILENBQUMsQ0FBQztRQUFBLENBQUM7UUFBQzJOLFlBQVksRUFBQyxTQUFBQSxhQUFTdE8sQ0FBQyxFQUFDQyxDQUFDLEVBQUM7VUFBQyxJQUFJLENBQUMwUSxhQUFhLENBQUMzUSxDQUFDLEVBQUNDLENBQUMsRUFBQyxJQUFJLENBQUM4USxRQUFRLENBQUM7UUFBQSxDQUFDO1FBQUN4QyxZQUFZLEVBQUMsU0FBQUEsYUFBU3ZPLENBQUMsRUFBQ0MsQ0FBQyxFQUFDO1VBQUMsSUFBSSxDQUFDMFEsYUFBYSxDQUFDM1EsQ0FBQyxFQUFDQyxDQUFDLEVBQUMsSUFBSSxDQUFDK1EsV0FBVyxDQUFDO1FBQUEsQ0FBQztRQUFDTCxhQUFhLEVBQUMsU0FBQUEsY0FBUzNRLENBQUMsRUFBQ1csQ0FBQyxFQUFDQyxDQUFDLEVBQUM7VUFBQyxJQUFJLENBQUNnUSxPQUFPLEdBQUM1USxDQUFDLENBQUNXLENBQUMsQ0FBQyxFQUFDLElBQUksQ0FBQ2tRLE9BQU8sR0FBQzdRLENBQUMsQ0FBQ1csQ0FBQyxHQUFDLENBQUMsQ0FBQyxFQUFDVixDQUFDLENBQUNrQyxJQUFJLENBQUMsSUFBSSxFQUFDLENBQUMsRUFBQyxTQUFTLENBQUMsRUFBQ2xDLENBQUMsQ0FBQ2tDLElBQUksQ0FBQyxJQUFJLEVBQUMsRUFBRSxFQUFDLEtBQUssQ0FBQyxFQUFDNUIsQ0FBQyxDQUFDNEIsSUFBSSxDQUFDLElBQUksRUFBQyxDQUFDLEVBQUMsU0FBUyxDQUFDLEVBQUM1QixDQUFDLENBQUM0QixJQUFJLENBQUMsSUFBSSxFQUFDLENBQUMsRUFBQyxRQUFRLENBQUMsRUFBQ2xDLENBQUMsQ0FBQ2tDLElBQUksQ0FBQyxJQUFJLEVBQUMsQ0FBQyxFQUFDLFVBQVUsQ0FBQztVQUFDLEtBQUksSUFBSXJCLENBQUMsR0FBQyxDQUFDLEVBQUNBLENBQUMsR0FBQyxFQUFFLEVBQUNBLENBQUMsRUFBRSxFQUFDO1lBQUMsS0FBSSxJQUFJVyxDQUFDLEdBQUNiLENBQUMsQ0FBQ0UsQ0FBQyxDQUFDLEVBQUN3QixDQUFDLEdBQUMsSUFBSSxDQUFDc08sT0FBTyxFQUFDOU8sQ0FBQyxHQUFDLElBQUksQ0FBQytPLE9BQU8sRUFBQy9OLENBQUMsR0FBQyxDQUFDLEVBQUNLLENBQUMsR0FBQyxDQUFDLEVBQUNBLENBQUMsR0FBQyxDQUFDLEVBQUNBLENBQUMsRUFBRSxFQUFDTCxDQUFDLElBQUVZLENBQUMsQ0FBQ1AsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDckIsQ0FBQyxHQUFDTCxDQUFDLENBQUMwQixDQUFDLENBQUMsSUFBRW1CLENBQUMsQ0FBQ25CLENBQUMsQ0FBQyxNQUFJLENBQUMsQ0FBQztZQUFDLElBQUksQ0FBQ3lOLE9BQU8sR0FBQzlPLENBQUMsRUFBQyxJQUFJLENBQUMrTyxPQUFPLEdBQUN2TyxDQUFDLEdBQUNRLENBQUM7VUFBQTtVQUFDLElBQUk4QyxDQUFDLEdBQUMsSUFBSSxDQUFDZ0wsT0FBTztVQUFDLElBQUksQ0FBQ0EsT0FBTyxHQUFDLElBQUksQ0FBQ0MsT0FBTyxFQUFDLElBQUksQ0FBQ0EsT0FBTyxHQUFDakwsQ0FBQyxFQUFDM0YsQ0FBQyxDQUFDa0MsSUFBSSxDQUFDLElBQUksRUFBQyxDQUFDLEVBQUMsVUFBVSxDQUFDLEVBQUM1QixDQUFDLENBQUM0QixJQUFJLENBQUMsSUFBSSxFQUFDLENBQUMsRUFBQyxRQUFRLENBQUMsRUFBQzVCLENBQUMsQ0FBQzRCLElBQUksQ0FBQyxJQUFJLEVBQUMsQ0FBQyxFQUFDLFNBQVMsQ0FBQyxFQUFDbEMsQ0FBQyxDQUFDa0MsSUFBSSxDQUFDLElBQUksRUFBQyxFQUFFLEVBQUMsS0FBSyxDQUFDLEVBQUNsQyxDQUFDLENBQUNrQyxJQUFJLENBQUMsSUFBSSxFQUFDLENBQUMsRUFBQyxTQUFTLENBQUMsRUFBQ25DLENBQUMsQ0FBQ1csQ0FBQyxDQUFDLEdBQUMsSUFBSSxDQUFDaVEsT0FBTyxFQUFDNVEsQ0FBQyxDQUFDVyxDQUFDLEdBQUMsQ0FBQyxDQUFDLEdBQUMsSUFBSSxDQUFDa1EsT0FBTztRQUFBLENBQUM7UUFBQzdILE9BQU8sRUFBQyxDQUFDO1FBQUN5RSxNQUFNLEVBQUMsQ0FBQztRQUFDeEosU0FBUyxFQUFDO01BQUMsQ0FBQyxDQUFDO0lBQUN0RCxDQUFDLENBQUNtUSxHQUFHLEdBQUNyUCxDQUFDLENBQUNxRCxhQUFhLENBQUNjLENBQUMsQ0FBQztJQUFDLElBQUlDLENBQUMsR0FBQ3ZELENBQUMsQ0FBQzJPLFNBQVMsR0FBQ3hQLENBQUMsQ0FBQ1QsTUFBTSxDQUFDO01BQUMwRCxRQUFRLEVBQUMsU0FBQUEsU0FBQSxFQUFVO1FBQUMsSUFBSTFFLENBQUMsR0FBQyxJQUFJLENBQUN1TixJQUFJO1VBQUN0TixDQUFDLEdBQUNELENBQUMsQ0FBQzJCLEtBQUs7UUFBQyxJQUFJLENBQUN1UCxLQUFLLEdBQUN0TCxDQUFDLENBQUNzSCxlQUFlLENBQUNwTSxDQUFDLENBQUNMLE1BQU0sQ0FBQ1IsQ0FBQyxDQUFDbUMsS0FBSyxDQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUMsSUFBSSxDQUFDK08sS0FBSyxHQUFDdkwsQ0FBQyxDQUFDc0gsZUFBZSxDQUFDcE0sQ0FBQyxDQUFDTCxNQUFNLENBQUNSLENBQUMsQ0FBQ21DLEtBQUssQ0FBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFDLElBQUksQ0FBQ2dQLEtBQUssR0FBQ3hMLENBQUMsQ0FBQ3NILGVBQWUsQ0FBQ3BNLENBQUMsQ0FBQ0wsTUFBTSxDQUFDUixDQUFDLENBQUNtQyxLQUFLLENBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7TUFBQSxDQUFDO01BQUNrTSxZQUFZLEVBQUMsU0FBQUEsYUFBU3RPLENBQUMsRUFBQ0MsQ0FBQyxFQUFDO1FBQUMsSUFBSSxDQUFDaVIsS0FBSyxDQUFDNUMsWUFBWSxDQUFDdE8sQ0FBQyxFQUFDQyxDQUFDLENBQUMsRUFBQyxJQUFJLENBQUNrUixLQUFLLENBQUM1QyxZQUFZLENBQUN2TyxDQUFDLEVBQUNDLENBQUMsQ0FBQyxFQUFDLElBQUksQ0FBQ21SLEtBQUssQ0FBQzlDLFlBQVksQ0FBQ3RPLENBQUMsRUFBQ0MsQ0FBQyxDQUFDO01BQUEsQ0FBQztNQUFDc08sWUFBWSxFQUFDLFNBQUFBLGFBQVN2TyxDQUFDLEVBQUNDLENBQUMsRUFBQztRQUFDLElBQUksQ0FBQ21SLEtBQUssQ0FBQzdDLFlBQVksQ0FBQ3ZPLENBQUMsRUFBQ0MsQ0FBQyxDQUFDLEVBQUMsSUFBSSxDQUFDa1IsS0FBSyxDQUFDN0MsWUFBWSxDQUFDdE8sQ0FBQyxFQUFDQyxDQUFDLENBQUMsRUFBQyxJQUFJLENBQUNpUixLQUFLLENBQUMzQyxZQUFZLENBQUN2TyxDQUFDLEVBQUNDLENBQUMsQ0FBQztNQUFBLENBQUM7TUFBQytJLE9BQU8sRUFBQyxDQUFDO01BQUN5RSxNQUFNLEVBQUMsQ0FBQztNQUFDeEosU0FBUyxFQUFDO0lBQUMsQ0FBQyxDQUFDO0lBQUN0RCxDQUFDLENBQUNzUSxTQUFTLEdBQUN4UCxDQUFDLENBQUNxRCxhQUFhLENBQUNlLENBQUMsQ0FBQztFQUFBLENBQUMsRUFBRSxFQUFDLFlBQVU7SUFBQyxTQUFTNUYsQ0FBQ0EsQ0FBQSxFQUFFO01BQUMsS0FBSSxJQUFJRCxDQUFDLEdBQUMsSUFBSSxDQUFDcVIsRUFBRSxFQUFDcFIsQ0FBQyxHQUFDLElBQUksQ0FBQ3FSLEVBQUUsRUFBQy9RLENBQUMsR0FBQyxJQUFJLENBQUNnUixFQUFFLEVBQUM1USxDQUFDLEdBQUMsQ0FBQyxFQUFDQyxDQUFDLEdBQUMsQ0FBQyxFQUFDQSxDQUFDLEdBQUMsQ0FBQyxFQUFDQSxDQUFDLEVBQUUsRUFBQztRQUFDWCxDQUFDLEdBQUMsQ0FBQ0EsQ0FBQyxHQUFDLENBQUMsSUFBRSxHQUFHLEVBQUNNLENBQUMsR0FBQyxDQUFDQSxDQUFDLEdBQUNQLENBQUMsQ0FBQ0MsQ0FBQyxDQUFDLElBQUUsR0FBRztRQUFDLElBQUlhLENBQUMsR0FBQ2QsQ0FBQyxDQUFDQyxDQUFDLENBQUM7UUFBQ0QsQ0FBQyxDQUFDQyxDQUFDLENBQUMsR0FBQ0QsQ0FBQyxDQUFDTyxDQUFDLENBQUMsRUFBQ1AsQ0FBQyxDQUFDTyxDQUFDLENBQUMsR0FBQ08sQ0FBQyxFQUFDSCxDQUFDLElBQUVYLENBQUMsQ0FBQyxDQUFDQSxDQUFDLENBQUNDLENBQUMsQ0FBQyxHQUFDRCxDQUFDLENBQUNPLENBQUMsQ0FBQyxJQUFFLEdBQUcsQ0FBQyxJQUFFLEVBQUUsR0FBQyxDQUFDLEdBQUNLLENBQUM7TUFBQTtNQUFDLE9BQU8sSUFBSSxDQUFDMFEsRUFBRSxHQUFDclIsQ0FBQyxFQUFDLElBQUksQ0FBQ3NSLEVBQUUsR0FBQ2hSLENBQUMsRUFBQ0ksQ0FBQztJQUFBO0lBQUMsSUFBSUosQ0FBQyxHQUFDUCxDQUFDO01BQUNXLENBQUMsR0FBQ0osQ0FBQyxDQUFDTSxHQUFHO01BQUNELENBQUMsR0FBQ0QsQ0FBQyxDQUFDaU4sWUFBWTtNQUFDOU0sQ0FBQyxHQUFDUCxDQUFDLENBQUMwRSxJQUFJO01BQUN4RCxDQUFDLEdBQUNYLENBQUMsQ0FBQzBRLEdBQUcsR0FBQzVRLENBQUMsQ0FBQ0ksTUFBTSxDQUFDO1FBQUMwRCxRQUFRLEVBQUMsU0FBQUEsU0FBQSxFQUFVO1VBQUMsS0FBSSxJQUFJMUUsQ0FBQyxHQUFDLElBQUksQ0FBQ3VOLElBQUksRUFBQ3ROLENBQUMsR0FBQ0QsQ0FBQyxDQUFDMkIsS0FBSyxFQUFDcEIsQ0FBQyxHQUFDUCxDQUFDLENBQUM0QixRQUFRLEVBQUNqQixDQUFDLEdBQUMsSUFBSSxDQUFDMFEsRUFBRSxHQUFDLEVBQUUsRUFBQ3pRLENBQUMsR0FBQyxDQUFDLEVBQUNBLENBQUMsR0FBQyxHQUFHLEVBQUNBLENBQUMsRUFBRSxFQUFDRCxDQUFDLENBQUNDLENBQUMsQ0FBQyxHQUFDQSxDQUFDO1VBQUMsS0FBSSxJQUFJQSxDQUFDLEdBQUMsQ0FBQyxFQUFDRSxDQUFDLEdBQUMsQ0FBQyxFQUFDRixDQUFDLEdBQUMsR0FBRyxFQUFDQSxDQUFDLEVBQUUsRUFBQztZQUFDLElBQUlhLENBQUMsR0FBQ2IsQ0FBQyxHQUFDTCxDQUFDO2NBQUMrQixDQUFDLEdBQUNyQyxDQUFDLENBQUN3QixDQUFDLEtBQUcsQ0FBQyxDQUFDLEtBQUcsRUFBRSxHQUFDQSxDQUFDLEdBQUMsQ0FBQyxHQUFDLENBQUMsR0FBQyxHQUFHO1lBQUNYLENBQUMsR0FBQyxDQUFDQSxDQUFDLEdBQUNILENBQUMsQ0FBQ0MsQ0FBQyxDQUFDLEdBQUMwQixDQUFDLElBQUUsR0FBRztZQUFDLElBQUlSLENBQUMsR0FBQ25CLENBQUMsQ0FBQ0MsQ0FBQyxDQUFDO1lBQUNELENBQUMsQ0FBQ0MsQ0FBQyxDQUFDLEdBQUNELENBQUMsQ0FBQ0csQ0FBQyxDQUFDLEVBQUNILENBQUMsQ0FBQ0csQ0FBQyxDQUFDLEdBQUNnQixDQUFDO1VBQUE7VUFBQyxJQUFJLENBQUN3UCxFQUFFLEdBQUMsSUFBSSxDQUFDQyxFQUFFLEdBQUMsQ0FBQztRQUFBLENBQUM7UUFBQ2xOLGVBQWUsRUFBQyxTQUFBQSxnQkFBU3JFLENBQUMsRUFBQ08sQ0FBQyxFQUFDO1VBQUNQLENBQUMsQ0FBQ08sQ0FBQyxDQUFDLElBQUVOLENBQUMsQ0FBQ2tDLElBQUksQ0FBQyxJQUFJLENBQUM7UUFBQSxDQUFDO1FBQUM2RyxPQUFPLEVBQUMsQ0FBQztRQUFDeUUsTUFBTSxFQUFDO01BQUMsQ0FBQyxDQUFDO0lBQUNsTixDQUFDLENBQUNpUixHQUFHLEdBQUM1USxDQUFDLENBQUNrRSxhQUFhLENBQUNyRCxDQUFDLENBQUM7SUFBQyxJQUFJYSxDQUFDLEdBQUN4QixDQUFDLENBQUMyUSxPQUFPLEdBQUNoUSxDQUFDLENBQUNULE1BQU0sQ0FBQztNQUFDeUQsR0FBRyxFQUFDaEQsQ0FBQyxDQUFDZ0QsR0FBRyxDQUFDekQsTUFBTSxDQUFDO1FBQUMwUSxJQUFJLEVBQUM7TUFBRyxDQUFDLENBQUM7TUFBQ2hOLFFBQVEsRUFBQyxTQUFBQSxTQUFBLEVBQVU7UUFBQ2pELENBQUMsQ0FBQ2lELFFBQVEsQ0FBQ3ZDLElBQUksQ0FBQyxJQUFJLENBQUM7UUFBQyxLQUFJLElBQUluQyxDQUFDLEdBQUMsSUFBSSxDQUFDeUUsR0FBRyxDQUFDaU4sSUFBSSxFQUFDMVIsQ0FBQyxHQUFDLENBQUMsRUFBQ0EsQ0FBQyxFQUFFLEVBQUNDLENBQUMsQ0FBQ2tDLElBQUksQ0FBQyxJQUFJLENBQUM7TUFBQTtJQUFDLENBQUMsQ0FBQztJQUFDNUIsQ0FBQyxDQUFDa1IsT0FBTyxHQUFDN1EsQ0FBQyxDQUFDa0UsYUFBYSxDQUFDeEMsQ0FBQyxDQUFDO0VBQUEsQ0FBQyxFQUFFLEVBQUN0QyxDQUFDLENBQUM2TixJQUFJLENBQUM4RCxVQUFVLEdBQUMsWUFBVTtJQUFDLFNBQVMxUixDQUFDQSxDQUFDRCxDQUFDLEVBQUM7TUFBQyxJQUFHLEdBQUcsTUFBSUEsQ0FBQyxJQUFFLEVBQUUsR0FBQyxHQUFHLENBQUMsRUFBQztRQUFDLElBQUlDLENBQUMsR0FBQ0QsQ0FBQyxJQUFFLEVBQUUsR0FBQyxHQUFHO1VBQUNPLENBQUMsR0FBQ1AsQ0FBQyxJQUFFLENBQUMsR0FBQyxHQUFHO1VBQUNXLENBQUMsR0FBQyxHQUFHLEdBQUNYLENBQUM7UUFBQyxHQUFHLEtBQUdDLENBQUMsSUFBRUEsQ0FBQyxHQUFDLENBQUMsRUFBQyxHQUFHLEtBQUdNLENBQUMsSUFBRUEsQ0FBQyxHQUFDLENBQUMsRUFBQyxHQUFHLEtBQUdJLENBQUMsR0FBQ0EsQ0FBQyxHQUFDLENBQUMsR0FBQyxFQUFFQSxDQUFDLElBQUUsRUFBRUosQ0FBQyxJQUFFLEVBQUVOLENBQUMsRUFBQ0QsQ0FBQyxHQUFDLENBQUMsRUFBQ0EsQ0FBQyxJQUFFQyxDQUFDLElBQUUsRUFBRSxFQUFDRCxDQUFDLElBQUVPLENBQUMsSUFBRSxDQUFDLEVBQUNQLENBQUMsSUFBRVcsQ0FBQztNQUFBLENBQUMsTUFBS1gsQ0FBQyxJQUFFLENBQUMsSUFBRSxFQUFFO01BQUMsT0FBT0EsQ0FBQztJQUFBO0lBQUMsU0FBU08sQ0FBQ0EsQ0FBQ1AsQ0FBQyxFQUFDO01BQUMsT0FBTyxDQUFDLE1BQUlBLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBQ0MsQ0FBQyxDQUFDRCxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFHQSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUNDLENBQUMsQ0FBQ0QsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBQ0EsQ0FBQztJQUFBO0lBQUMsSUFBSVcsQ0FBQyxHQUFDWCxDQUFDLENBQUNhLEdBQUcsQ0FBQ2lOLGVBQWUsQ0FBQzlNLE1BQU0sRUFBRTtNQUFDSixDQUFDLEdBQUNELENBQUMsQ0FBQ29OLFNBQVMsR0FBQ3BOLENBQUMsQ0FBQ0ssTUFBTSxDQUFDO1FBQUNxTixZQUFZLEVBQUMsU0FBQUEsYUFBU3JPLENBQUMsRUFBQ0MsQ0FBQyxFQUFDO1VBQUMsSUFBSVUsQ0FBQyxHQUFDLElBQUksQ0FBQ3NOLE9BQU87WUFBQ3JOLENBQUMsR0FBQ0QsQ0FBQyxDQUFDc0QsU0FBUztZQUFDbkQsQ0FBQyxHQUFDLElBQUksQ0FBQ29OLEdBQUc7WUFBQ3pNLENBQUMsR0FBQyxJQUFJLENBQUNtUSxRQUFRO1VBQUM5USxDQUFDLEtBQUdXLENBQUMsR0FBQyxJQUFJLENBQUNtUSxRQUFRLEdBQUM5USxDQUFDLENBQUNzQixLQUFLLENBQUMsQ0FBQyxDQUFDLEVBQUMsSUFBSSxDQUFDOEwsR0FBRyxHQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUMzTixDQUFDLENBQUNrQixDQUFDLENBQUM7VUFBQyxJQUFJYSxDQUFDLEdBQUNiLENBQUMsQ0FBQ1csS0FBSyxDQUFDLENBQUMsQ0FBQztVQUFDekIsQ0FBQyxDQUFDMk4sWUFBWSxDQUFDaE0sQ0FBQyxFQUFDLENBQUMsQ0FBQztVQUFDLEtBQUksSUFBSVIsQ0FBQyxHQUFDLENBQUMsRUFBQ0EsQ0FBQyxHQUFDbEIsQ0FBQyxFQUFDa0IsQ0FBQyxFQUFFLEVBQUM5QixDQUFDLENBQUNDLENBQUMsR0FBQzZCLENBQUMsQ0FBQyxJQUFFUSxDQUFDLENBQUNSLENBQUMsQ0FBQztRQUFBO01BQUMsQ0FBQyxDQUFDO0lBQUMsT0FBT25CLENBQUMsQ0FBQ3FOLFNBQVMsR0FBQ3BOLENBQUMsRUFBQ0QsQ0FBQztFQUFBLENBQUMsRUFBRSxFQUFDLFlBQVU7SUFBQyxTQUFTVixDQUFDQSxDQUFBLEVBQUU7TUFBQyxLQUFJLElBQUlELENBQUMsR0FBQyxJQUFJLENBQUM2UixFQUFFLEVBQUM1UixDQUFDLEdBQUMsSUFBSSxDQUFDNlIsRUFBRSxFQUFDdlIsQ0FBQyxHQUFDLENBQUMsRUFBQ0EsQ0FBQyxHQUFDLENBQUMsRUFBQ0EsQ0FBQyxFQUFFLEVBQUMrQixDQUFDLENBQUMvQixDQUFDLENBQUMsR0FBQ04sQ0FBQyxDQUFDTSxDQUFDLENBQUM7TUFBQ04sQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFDQSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUMsVUFBVSxHQUFDLElBQUksQ0FBQzhSLEVBQUUsR0FBQyxDQUFDLEVBQUM5UixDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUNBLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBQyxVQUFVLElBQUVBLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBRyxDQUFDLEdBQUNxQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUcsQ0FBQyxHQUFDLENBQUMsR0FBQyxDQUFDLENBQUMsR0FBQyxDQUFDLEVBQUNyQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUNBLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBQyxTQUFTLElBQUVBLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBRyxDQUFDLEdBQUNxQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUcsQ0FBQyxHQUFDLENBQUMsR0FBQyxDQUFDLENBQUMsR0FBQyxDQUFDLEVBQUNyQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUNBLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBQyxVQUFVLElBQUVBLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBRyxDQUFDLEdBQUNxQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUcsQ0FBQyxHQUFDLENBQUMsR0FBQyxDQUFDLENBQUMsR0FBQyxDQUFDLEVBQUNyQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUNBLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBQyxVQUFVLElBQUVBLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBRyxDQUFDLEdBQUNxQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUcsQ0FBQyxHQUFDLENBQUMsR0FBQyxDQUFDLENBQUMsR0FBQyxDQUFDLEVBQUNyQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUNBLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBQyxTQUFTLElBQUVBLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBRyxDQUFDLEdBQUNxQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUcsQ0FBQyxHQUFDLENBQUMsR0FBQyxDQUFDLENBQUMsR0FBQyxDQUFDLEVBQUNyQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUNBLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBQyxVQUFVLElBQUVBLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBRyxDQUFDLEdBQUNxQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUcsQ0FBQyxHQUFDLENBQUMsR0FBQyxDQUFDLENBQUMsR0FBQyxDQUFDLEVBQUNyQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUNBLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBQyxVQUFVLElBQUVBLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBRyxDQUFDLEdBQUNxQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUcsQ0FBQyxHQUFDLENBQUMsR0FBQyxDQUFDLENBQUMsR0FBQyxDQUFDLEVBQUMsSUFBSSxDQUFDeVAsRUFBRSxHQUFDOVIsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFHLENBQUMsR0FBQ3FDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBRyxDQUFDLEdBQUMsQ0FBQyxHQUFDLENBQUM7TUFBQyxLQUFJLElBQUkvQixDQUFDLEdBQUMsQ0FBQyxFQUFDQSxDQUFDLEdBQUMsQ0FBQyxFQUFDQSxDQUFDLEVBQUUsRUFBQztRQUFDLElBQUlJLENBQUMsR0FBQ1gsQ0FBQyxDQUFDTyxDQUFDLENBQUMsR0FBQ04sQ0FBQyxDQUFDTSxDQUFDLENBQUM7VUFBQ0ssQ0FBQyxHQUFDLEtBQUssR0FBQ0QsQ0FBQztVQUFDRyxDQUFDLEdBQUNILENBQUMsS0FBRyxFQUFFO1VBQUNjLENBQUMsR0FBQyxDQUFDLENBQUNiLENBQUMsR0FBQ0EsQ0FBQyxLQUFHLEVBQUUsSUFBRUEsQ0FBQyxHQUFDRSxDQUFDLEtBQUcsRUFBRSxJQUFFQSxDQUFDLEdBQUNBLENBQUM7VUFBQ2dDLENBQUMsR0FBQyxDQUFDLENBQUMsVUFBVSxHQUFDbkMsQ0FBQyxJQUFFQSxDQUFDLEdBQUMsQ0FBQyxLQUFHLENBQUMsS0FBSyxHQUFDQSxDQUFDLElBQUVBLENBQUMsR0FBQyxDQUFDLENBQUM7UUFBQ21CLENBQUMsQ0FBQ3ZCLENBQUMsQ0FBQyxHQUFDa0IsQ0FBQyxHQUFDcUIsQ0FBQztNQUFBO01BQUM5QyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUM4QixDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUVBLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBRSxFQUFFLEdBQUNBLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBRyxFQUFFLENBQUMsSUFBRUEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFFLEVBQUUsR0FBQ0EsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFHLEVBQUUsQ0FBQyxHQUFDLENBQUMsRUFBQzlCLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBQzhCLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBRUEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFFLENBQUMsR0FBQ0EsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFHLEVBQUUsQ0FBQyxHQUFDQSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUMsQ0FBQyxFQUFDOUIsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFDOEIsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFFQSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUUsRUFBRSxHQUFDQSxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUcsRUFBRSxDQUFDLElBQUVBLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBRSxFQUFFLEdBQUNBLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBRyxFQUFFLENBQUMsR0FBQyxDQUFDLEVBQUM5QixDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUM4QixDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUVBLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBRSxDQUFDLEdBQUNBLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBRyxFQUFFLENBQUMsR0FBQ0EsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFDLENBQUMsRUFBQzlCLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBQzhCLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBRUEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFFLEVBQUUsR0FBQ0EsQ0FBQyxD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QUFFLEdBQUMsQ0FBQzlSLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBRSxFQUFFLEdBQUNBLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBRyxFQUFFLEVBQUMsVUFBVSxHQUFDQSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUMsS0FBSyxHQUFDQSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUNBLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBRSxFQUFFLEdBQUNBLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBRyxFQUFFLEVBQUMsVUFBVSxHQUFDQSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUMsS0FBSyxHQUFDQSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUNBLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBRSxFQUFFLEdBQUNBLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBRyxFQUFFLEVBQUMsVUFBVSxHQUFDQSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUMsS0FBSyxHQUFDQSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUNBLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBRSxFQUFFLEdBQUNBLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBRyxFQUFFLEVBQUMsVUFBVSxHQUFDQSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUMsS0FBSyxHQUFDQSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7VUFBQyxJQUFJLENBQUMrUixFQUFFLEdBQUMsQ0FBQztVQUFDLEtBQUksSUFBSXBSLENBQUMsR0FBQyxDQUFDLEVBQUNBLENBQUMsR0FBQyxDQUFDLEVBQUNBLENBQUMsRUFBRSxFQUFDVixDQUFDLENBQUNrQyxJQUFJLENBQUMsSUFBSSxDQUFDO1VBQUMsS0FBSSxJQUFJeEIsQ0FBQyxHQUFDLENBQUMsRUFBQ0EsQ0FBQyxHQUFDLENBQUMsRUFBQ0EsQ0FBQyxFQUFFLEVBQUNHLENBQUMsQ0FBQ0gsQ0FBQyxDQUFDLElBQUVDLENBQUMsQ0FBQ0QsQ0FBQyxHQUFDLENBQUMsR0FBQyxDQUFDLENBQUM7VUFBQyxJQUFHSixDQUFDLEVBQUM7WUFBQyxJQUFJa0IsQ0FBQyxHQUFDbEIsQ0FBQyxDQUFDb0IsS0FBSztjQUFDVyxDQUFDLEdBQUNiLENBQUMsQ0FBQyxDQUFDLENBQUM7Y0FBQ0ssQ0FBQyxHQUFDTCxDQUFDLENBQUMsQ0FBQyxDQUFDO2NBQUNxQixDQUFDLEdBQUMsUUFBUSxJQUFFUixDQUFDLElBQUUsQ0FBQyxHQUFDQSxDQUFDLEtBQUcsRUFBRSxDQUFDLEdBQUMsVUFBVSxJQUFFQSxDQUFDLElBQUUsRUFBRSxHQUFDQSxDQUFDLEtBQUcsQ0FBQyxDQUFDO2NBQUNhLENBQUMsR0FBQyxRQUFRLElBQUVyQixDQUFDLElBQUUsQ0FBQyxHQUFDQSxDQUFDLEtBQUcsRUFBRSxDQUFDLEdBQUMsVUFBVSxJQUFFQSxDQUFDLElBQUUsRUFBRSxHQUFDQSxDQUFDLEtBQUcsQ0FBQyxDQUFDO2NBQUM0QixDQUFDLEdBQUNaLENBQUMsS0FBRyxFQUFFLEdBQUMsVUFBVSxHQUFDSyxDQUFDO2NBQUNtQixDQUFDLEdBQUNuQixDQUFDLElBQUUsRUFBRSxHQUFDLEtBQUssR0FBQ0wsQ0FBQztZQUFDaEMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFFZ0MsQ0FBQyxFQUFDaEMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFFNEMsQ0FBQyxFQUFDNUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFFcUMsQ0FBQyxFQUFDckMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFFd0QsQ0FBQyxFQUFDeEQsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFFZ0MsQ0FBQyxFQUFDaEMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFFNEMsQ0FBQyxFQUFDNUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFFcUMsQ0FBQyxFQUFDckMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFFd0QsQ0FBQztZQUFDLEtBQUksSUFBSTNELENBQUMsR0FBQyxDQUFDLEVBQUNBLENBQUMsR0FBQyxDQUFDLEVBQUNBLENBQUMsRUFBRSxFQUFDVixDQUFDLENBQUNrQyxJQUFJLENBQUMsSUFBSSxDQUFDO1VBQUE7UUFBQyxDQUFDO1FBQUNrQyxlQUFlLEVBQUMsU0FBQUEsZ0JBQVNyRSxDQUFDLEVBQUNPLENBQUMsRUFBQztVQUFDLElBQUlJLENBQUMsR0FBQyxJQUFJLENBQUNrUixFQUFFO1VBQUM1UixDQUFDLENBQUNrQyxJQUFJLENBQUMsSUFBSSxDQUFDLEVBQUNWLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBQ2QsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFDQSxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUcsRUFBRSxHQUFDQSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUUsRUFBRSxFQUFDYyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUNkLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBQ0EsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFHLEVBQUUsR0FBQ0EsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFFLEVBQUUsRUFBQ2MsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFDZCxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUNBLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBRyxFQUFFLEdBQUNBLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBRSxFQUFFLEVBQUNjLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBQ2QsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFDQSxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUcsRUFBRSxHQUFDQSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUUsRUFBRTtVQUFDLEtBQUksSUFBSUMsQ0FBQyxHQUFDLENBQUMsRUFBQ0EsQ0FBQyxHQUFDLENBQUMsRUFBQ0EsQ0FBQyxFQUFFLEVBQUNhLENBQUMsQ0FBQ2IsQ0FBQyxDQUFDLEdBQUMsUUFBUSxJQUFFYSxDQUFDLENBQUNiLENBQUMsQ0FBQyxJQUFFLENBQUMsR0FBQ2EsQ0FBQyxDQUFDYixDQUFDLENBQUMsS0FBRyxFQUFFLENBQUMsR0FBQyxVQUFVLElBQUVhLENBQUMsQ0FBQ2IsQ0FBQyxDQUFDLElBQUUsRUFBRSxHQUFDYSxDQUFDLENBQUNiLENBQUMsQ0FBQyxLQUFHLENBQUMsQ0FB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ckMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFDQSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUMsVUFBVSxJQUFFQSxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUcsQ0FBQyxHQUFDcUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFHLENBQUMsR0FBQyxDQUFDLEdBQUMsQ0FBQyxDQUFDLEdBQUMsQ0FBQyxFQUFDckMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFDQSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUMsVUFBVSxJQUFFQSxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUcsQ0FBQyxHQUFDcUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFHLENBQUMsR0FBQyxDQUFDLEdBQUMsQ0FBQyxDQUFDLEdBQUMsQ0FBQyxFQUFDckMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFDQSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUMsU0FBUyxJQUFFQSxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUcsQ0FBQyxHQUFDcUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFHLENBQUMsR0FBQyxDQUFDLEdBQUMsQ0FBQyxDQUFDLEdBQUMsQ0FBQyxFQUFDckMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFDQSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUMsVUFBVSxJQUFFQSxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUcsQ0FBQyxHQUFDcUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFHLENBQUMsR0FBQyxDQUFDLEdBQUMsQ0FBQyxDQUFDLEdBQUMsQ0FBQyxFQUFDckMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFDQSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUMsVUFBVSxJQUFFQSxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUcsQ0FBQyxHQUFDcUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFHLENBQUMsR0FBQyxDQUFDLEdBQUMsQ0FBQyxDQUFDLEdBQUMsQ0FBQyxFQUFDLElBQUksQ0FBQ3lQLEVBQUUsR0FBQzlSLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBRyxDQUFDLEdBQUNxQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUcsQ0FBQyxHQUFDLENBQUMsR0FBQyxDQUFDO01BQUMsS0FBSSxJQUFJL0IsQ0FBQyxHQUFDLENBQUMsRUFBQ0EsQ0FBQyxHQUFDLENBQUMsRUFBQ0EsQ0FBQyxFQUFFLEVBQUM7UUFBQyxJQUFJSSxDQUFDLEdBQUNYLENBQUMsQ0FBQ08sQ0FBQyxDQUFDLEdBQUNOLENBQUMsQ0FBQ00sQ0FBQyxDQUFDO1VBQUNLLENBQUMsR0FBQyxLQUFLLEdBQUNELENBQUM7VUFBQ0csQ0FBQyxHQUFDSCxDQUFDLEtBQUcsRUFBRTtVQUFDYyxDQUFDLEdBQUMsQ0FBQyxDQUFDYixDQUFDLEdBQUNBLENBQUMsS0FBRyxFQUFFLElBQUVBLENBQUMsR0FBQ0UsQ0FBQyxLQUFHLEVBQUUsSUFBRUEsQ0FBQyxHQUFDQSxDQUFDO1VBQUNnQyxDQUFDLEdBQUMsQ0FBQyxDQUFDLFVBQVUsR0FBQ25DLENBQUMsSUFBRUEsQ0FBQyxHQUFDLENBQUMsS0FBRyxDQUFDLEtBQUssR0FBQ0EsQ0FBQyxJQUFFQSxDQUFDLEdBQUMsQ0FBQyxDQUFDO1FBQUNtQixDQUFDLENBQUN2QixDQUFDLENBQUMsR0FBQ2tCLENBQUMsR0FBQ3FCLENBQUM7TUFBQTtNQUFDOUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFDOEIsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFFQSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUUsRUFBRSxHQUFDQSxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUcsRUFBRSxDQUFDLElBQUVBLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBRSxFQUFFLEdBQUNBLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBRyxFQUFFLENBQUMsR0FBQyxDQUFDLEVBQUM5QixDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUM4QixDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUVBLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBRSxDQUFDLEdBQUNBLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBRyxFQUFFLENBQUMsR0FBQ0EsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFDLENBQUMsRUFBQzlCLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBQzhCLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBRUEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFFLEVBQUUsR0FBQ0EsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFHLEVBQUUsQ0FBQyxJQUFFQSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUUsRUFBRSxHQUFDQSxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUcsRUFBRSxDQUFDLEdBQUMsQ0FBQyxFQUFDOUIsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFDOEIsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFFQSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUUsQ0FBQyxHQUFDQSxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUcsRUFBRSxDQUFDLEdBQUNBLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBQyxDQUFDLEVBQUM5QixDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUM4QixDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUVBLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBRSxFQUFFLEdBQUNBLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBRyxFQUFFLENBQUMsSUFBRUEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFFLEVBQUUsR0FBQ0EsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFHLEVBQUUsQ0FBQyxHQUFDLENBQUMsRUFBQzlCLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBQzhCLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBRUEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFFLENBQUMsR0FBQ0EsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFHLEVBQUUsQ0FBQyxHQUFDQSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUMsQ0FBQyxFQUFDOUIsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFDOEIsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFFQSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUUsRUFBRSxHQUFDQSxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUcsRUFBRSxDQUFDLElBQUVBLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBRSxFQUFFLEdBQUNBLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBRyxFQUFFLENBQUMsR0FBQyxDQUFDLEVBQUM5QixDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUM4QixDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUVBLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBRSxDQUFDLEdBQUNBLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBRyxFQUFFLENBQUMsR0FBQ0EsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFDLENBQUM7SUFBQTtJQUFDLElBQUl2QixDQUFDLEdBQUNQLENBQUM7TUFBQ1csQ0FBQyxHQUFDSixDQUFDLENBQUNNLEdBQUc7TUFBQ0QsQ0FBQyxHQUFDRCxDQUFDLENBQUNpTixZQUFZO01BQUM5TSxDQUFDLEdBQUNQLENBQUMsQ0FBQzBFLElBQUk7TUFBQ3hELENBQUMsR0FBQyxFQUFFO01BQUNhLENBQUMsR0FBQyxFQUFFO01BQUNSLENBQUMsR0FBQyxFQUFFO01BQUNnQixDQUFDLEdBQUNoQyxDQUFDLENBQUNvUixZQUFZLEdBQUN0UixDQUFDLENBQUNJLE1BQU0sQ0FBQztRQUFDMEQsUUFBUSxFQUFDLFNBQUFBLFNBQUEsRUFBVTtVQUFDLElBQUkxRSxDQUFDLEdBQUMsSUFBSSxDQUFDdU4sSUFBSSxDQUFDNUwsS0FBSztZQUFDcEIsQ0FBQyxHQUFDLElBQUksQ0FBQ2tFLEdBQUcsQ0FBQ29LLEVBQUU7WUFBQ2xPLENBQUMsR0FBQyxJQUFJLENBQUNrUixFQUFFLEdBQUMsQ0FBQzdSLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBQ0EsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFFLEVBQUUsR0FBQ0EsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFHLEVBQUUsRUFBQ0EsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFDQSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUUsRUFBRSxHQUFDQSxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUcsRUFBRSxFQUFDQSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUNBLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBRSxFQUFFLEdBQUNBLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBRyxFQUFFLEVBQUNBLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBQ0EsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFFLEVBQUUsR0FBQ0EsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFHLEVBQUUsQ0FBQztZQUFDWSxDQUFDLEdBQUMsSUFBSSxDQUFDa1IsRUFBRSxHQUFDLENBQUM5UixDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUUsRUFBRSxHQUFDQSxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUcsRUFBRSxFQUFDLFVBQVUsR0FBQ0EsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFDLEtBQUssR0FBQ0EsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFDQSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUUsRUFBRSxHQUFDQSxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUcsRUFBRSxFQUFDLFVBQVUsR0FBQ0EsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFDLEtBQUssR0FBQ0EsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFDQSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUUsRUFBRSxHQUFDQSxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUcsRUFBRSxFQUFDLFVBQVUsR0FBQ0EsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFDLEtBQUssR0FBQ0EsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFDQSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUUsRUFBRSxHQUFDQSxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUcsRUFBRSxFQUFDLFVBQVUsR0FBQ0EsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFDLEtBQUssR0FBQ0EsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1VBQUMsSUFBSSxDQUFDK1IsRUFBRSxHQUFDLENBQUM7VUFBQyxLQUFJLElBQUlqUixDQUFD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QUUsR0FBQ0EsQ0FBQyxHQUFDLENBQUMsR0FBQyxDQUFDLEdBQUMsR0FBRyxDQUFDLEdBQUVBLENBQUMsRUFBRTtNQUFDUCxDQUFDLENBQUM0QixRQUFRLEdBQUNyQixDQUFDLEdBQUMsQ0FBQztJQUFBO0VBQUMsQ0FBQyxFQUFDUCxDQUFDO0FBQUEsQ0FBQyxDQUFDO0FBQ25oZiIsInNvdXJjZVJvb3QiOiIvIiwic291cmNlc0NvbnRlbnQiOlsiIWZ1bmN0aW9uKHQscil7XCJvYmplY3RcIj09dHlwZW9mIGV4cG9ydHM/bW9kdWxlLmV4cG9ydHM9ZXhwb3J0cz1yKCk6XCJmdW5jdGlvblwiPT10eXBlb2YgZGVmaW5lJiZkZWZpbmUuYW1kP2RlZmluZShbXSxyKTp0LkNyeXB0b0pTPXIoKX0odGhpcyxmdW5jdGlvbigpe3ZhciB0PXR8fGZ1bmN0aW9uKHQscil7dmFyIGU9T2JqZWN0LmNyZWF0ZXx8ZnVuY3Rpb24oKXtmdW5jdGlvbiB0KCl7fXJldHVybiBmdW5jdGlvbihyKXt2YXIgZTtyZXR1cm4gdC5wcm90b3R5cGU9cixlPW5ldyB0LHQucHJvdG90eXBlPW51bGwsZX19KCksaT17fSxuPWkubGliPXt9LG89bi5CYXNlPWZ1bmN0aW9uKCl7cmV0dXJue2V4dGVuZDpmdW5jdGlvbih0KXt2YXIgcj1lKHRoaXMpO3JldHVybiB0JiZyLm1peEluKHQpLHIuaGFzT3duUHJvcGVydHkoXCJpbml0XCIpJiZ0aGlzLmluaXQhPT1yLmluaXR8fChyLmluaXQ9ZnVuY3Rpb24oKXtyLiRzdXBlci5pbml0LmFwcGx5KHRoaXMsYXJndW1lbnRzKX0pLHIuaW5pdC5wcm90b3R5cGU9cixyLiRzdXBlcj10aGlzLHJ9LGNyZWF0ZTpmdW5jdGlvbigpe3ZhciB0PXRoaXMuZXh0ZW5kKCk7cmV0dXJuIHQuaW5pdC5hcHBseSh0LGFyZ3VtZW50cyksdH0saW5pdDpmdW5jdGlvbigpe30sbWl4SW46ZnVuY3Rpb24odCl7Zm9yKHZhciByIGluIHQpdC5oYXNPd25Qcm9wZXJ0eShyKSYmKHRoaXNbcl09dFtyXSk7dC5oYXNPd25Qcm9wZXJ0eShcInRvU3RyaW5nXCIpJiYodGhpcy50b1N0cmluZz10LnRvU3RyaW5nKX0sY2xvbmU6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5pbml0LnByb3RvdHlwZS5leHRlbmQodGhpcyl9fX0oKSxzPW4uV29yZEFycmF5PW8uZXh0ZW5kKHtpbml0OmZ1bmN0aW9uKHQsZSl7dD10aGlzLndvcmRzPXR8fFtdLGUhPXI/dGhpcy5zaWdCeXRlcz1lOnRoaXMuc2lnQnl0ZXM9NCp0Lmxlbmd0aH0sdG9TdHJpbmc6ZnVuY3Rpb24odCl7cmV0dXJuKHR8fGMpLnN0cmluZ2lmeSh0aGlzKX0sY29uY2F0OmZ1bmN0aW9uKHQpe3ZhciByPXRoaXMud29yZHMsZT10LndvcmRzLGk9dGhpcy5zaWdCeXRlcyxuPXQuc2lnQnl0ZXM7aWYodGhpcy5jbGFtcCgpLGklNClmb3IodmFyIG89MDtvPG47bysrKXt2YXIgcz1lW28+Pj4yXT4+PjI0LW8lNCo4JjI1NTtyW2krbz4+PjJdfD1zPDwyNC0oaStvKSU0Kjh9ZWxzZSBmb3IodmFyIG89MDtvPG47bys9NClyW2krbz4+PjJdPWVbbz4+PjJdO3JldHVybiB0aGlzLnNpZ0J5dGVzKz1uLHRoaXN9LGNsYW1wOmZ1bmN0aW9uKCl7dmFyIHI9dGhpcy53b3JkcyxlPXRoaXMuc2lnQnl0ZXM7cltlPj4+Ml0mPTQyOTQ5NjcyOTU8PDMyLWUlNCo4LHIubGVuZ3RoPXQuY2VpbChlLzQpfSxjbG9uZTpmdW5jdGlvbigpe3ZhciB0PW8uY2xvbmUuY2FsbCh0aGlzKTtyZXR1cm4gdC53b3Jkcz10aGlzLndvcmRzLnNsaWNlKDApLHR9LHJhbmRvbTpmdW5jdGlvbihyKXtmb3IodmFyIGUsaT1bXSxuPWZ1bmN0aW9uKHIpe3ZhciByPXIsZT05ODc2NTQzMjEsaT00Mjk0OTY3Mjk1O3JldHVybiBmdW5jdGlvbigpe2U9MzY5NjkqKDY1NTM1JmUpKyhlPj4xNikmaSxyPTE4ZTMqKDY1NTM1JnIpKyhyPj4xNikmaTt2YXIgbj0oZTw8MTYpK3ImaTtyZXR1cm4gbi89NDI5NDk2NzI5NixuKz0uNSxuKih0LnJhbmRvbSgpPi41PzE6LTEpfX0sbz0wO288cjtvKz00KXt2YXIgYT1uKDQyOTQ5NjcyOTYqKGV8fHQucmFuZG9tKCkpKTtlPTk4NzY1NDA3MSphKCksaS5wdXNoKDQyOTQ5NjcyOTYqYSgpfDApfXJldHVybiBuZXcgcy5pbml0KGkscil9fSksYT1pLmVuYz17fSxjPWEuSGV4PXtzdHJpbmdpZnk6ZnVuY3Rpb24odCl7Zm9yKHZhciByPXQud29yZHMsZT10LnNpZ0J5dGVzLGk9W10sbj0wO248ZTtuKyspe3ZhciBvPXJbbj4+PjJdPj4+MjQtbiU0KjgmMjU1O2kucHVzaCgobz4+PjQpLnRvU3RyaW5nKDE2KSksaS5wdXNoKCgxNSZvKS50b1N0cmluZygxNikpfXJldHVybiBpLmpvaW4oXCJcIil9LHBhcnNlOmZ1bmN0aW9uKHQpe2Zvcih2YXIgcj10Lmxlbmd0aCxlPVtdLGk9MDtpPHI7aSs9MillW2k+Pj4zXXw9cGFyc2VJbnQodC5zdWJzdHIoaSwyKSwxNik8PDI0LWklOCo0O3JldHVybiBuZXcgcy5pbml0KGUsci8yKX19LGg9YS5MYXRpbjE9e3N0cmluZ2lmeTpmdW5jdGlvbih0KXtmb3IodmFyIHI9dC53b3JkcyxlPXQuc2lnQnl0ZXMsaT1bXSxuPTA7bjxlO24rKyl7dmFyIG89cltuPj4+Ml0+Pj4yNC1uJTQqOCYyNTU7aS5wdXNoKFN0cmluZy5mcm9tQ2hhckNvZGUobykpfXJldHVybiBpLmpvaW4oXCJcIil9LHBhcnNlOmZ1bmN0aW9uKHQpe2Zvcih2YXIgcj10Lmxlbmd0aCxlPVtdLGk9MDtpPHI7aSsrKWVbaT4+PjJdfD0oMjU1JnQuY2hhckNvZGVBdChpKSk8PDI0LWklNCo4O3JldHVybiBuZXcgcy5pbml0KGUscil9fSxsPWEuVXRmOD17c3RyaW5naWZ5OmZ1bmN0aW9uKHQpe3RyeXtyZXR1cm4gZGVjb2RlVVJJQ29tcG9uZW50KGVzY2FwZShoLnN0cmluZ2lmeSh0KSkpfWNhdGNoKHQpe3Rocm93IG5ldyBFcnJvcihcIk1hbGZvcm1lZCBVVEYtOCBkYXRhXCIpfX0scGFyc2U6ZnVuY3Rpb24odCl7cmV0dXJuIGgucGFyc2UodW5lc2NhcGUoZW5jb2RlVVJJQ29tcG9uZW50KHQpKSl9fSxmPW4uQnVmZmVyZWRCbG9ja0FsZ29yaXRobT1vLmV4dGVuZCh7cmVzZXQ6ZnVuY3Rpb24oKXt0aGlzLl9kYXRhPW5ldyBzLmluaXQsdGhpcy5fbkRhdGFCeXRlcz0wfSxfYXBwZW5kOmZ1bmN0aW9uKHQpe1wic3RyaW5nXCI9PXR5cGVvZiB0JiYodD1sLnBhcnNlKHQpKSx0aGlzLl9kYXRhLmNvbmNhdCh0KSx0aGlzLl9uRGF0YUJ5dGVzKz10LnNpZ0J5dGVzfSxfcHJvY2VzczpmdW5jdGlvbihyKXt2YXIgZT10aGlzLl9kYXRhLGk9ZS53b3JkcyxuPWUuc2lnQnl0ZXMsbz10aGlzLmJsb2NrU2l6ZSxhPTQqbyxjPW4vYTtjPXI/dC5jZWlsKGMpOnQubWF4KCgwfGMpLXRoaXMuX21pbkJ1ZmZlclNpemUsMCk7dmFyIGg9YypvLGw9dC5taW4oNCpoLG4pO2lmKGgpe2Zvcih2YXIgZj0wO2Y8aDtmKz1vKXRoaXMuX2RvUHJvY2Vzc0Jsb2NrKGksZik7dmFyIHU9aS5zcGxpY2UoMCxoKTtlLnNpZ0J5dGVzLT1sfXJldHVybiBuZXcgcy5pbml0KHUsbCl9LGNsb25lOmZ1bmN0aW9uKCl7dmFyIHQ9by5jbG9uZS5jYWxsKHRoaXMpO3JldHVybiB0Ll9kYXRhPXRoaXMuX2RhdGEuY2xvbmUoKSx0fSxfbWluQnVmZmVyU2l6ZTowfSksdT0obi5IYXNoZXI9Zi5leHRlbmQoe2NmZzpvLmV4dGVuZCgpLGluaXQ6ZnVuY3Rpb24odCl7dGhpcy5jZmc9dGhpcy5jZmcuZXh0ZW5kKHQpLHRoaXMucmVzZXQoKX0scmVzZXQ6ZnVuY3Rpb24oKXtmLnJlc2V0LmNhbGwodGhpcyksdGhpcy5fZG9SZXNldCgpfSx1cGRhdGU6ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuX2FwcGVuZCh0KSx0aGlzLl9wcm9jZXNzKCksdGhpc30sZmluYWxpemU6ZnVuY3Rpb24odCl7dCYmdGhpcy5fYXBwZW5kKHQpO3ZhciByPXRoaXMuX2RvRmluYWxpemUoKTtyZXR1cm4gcn0sYmxvY2tTaXplOjE2LF9jcmVhdGVIZWxwZXI6ZnVuY3Rpb24odCl7cmV0dXJuIGZ1bmN0aW9uKHIsZSl7cmV0dXJuIG5ldyB0LmluaXQoZSkuZmluYWxpemUocil9fSxfY3JlYXRlSG1hY0hlbHBlcjpmdW5jdGlvbih0KXtyZXR1cm4gZnVuY3Rpb24ocixlKXtyZXR1cm4gbmV3IHUuSE1BQy5pbml0KHQsZSkuZmluYWxpemUocil9fX0pLGkuYWxnbz17fSk7cmV0dXJuIGl9KE1hdGgpO3JldHVybiBmdW5jdGlvbigpe2Z1bmN0aW9uIHIodCxyLGUpe2Zvcih2YXIgaT1bXSxvPTAscz0wO3M8cjtzKyspaWYocyU0KXt2YXIgYT1lW3QuY2hhckNvZGVBdChzLTEpXTw8cyU0KjIsYz1lW3QuY2hhckNvZGVBdChzKV0+Pj42LXMlNCoyO2lbbz4+PjJdfD0oYXxjKTw8MjQtbyU0KjgsbysrfXJldHVybiBuLmNyZWF0ZShpLG8pfXZhciBlPXQsaT1lLmxpYixuPWkuV29yZEFycmF5LG89ZS5lbmM7by5CYXNlNjQ9e3N0cmluZ2lmeTpmdW5jdGlvbih0KXt2YXIgcj10LndvcmRzLGU9dC5zaWdCeXRlcyxpPXRoaXMuX21hcDt0LmNsYW1wKCk7Zm9yKHZhciBuPVtdLG89MDtvPGU7bys9Mylmb3IodmFyIHM9cltvPj4+Ml0+Pj4yNC1vJTQqOCYyNTUsYT1yW28rMT4+PjJdPj4+MjQtKG8rMSklNCo4JjI1NSxjPXJbbysyPj4+Ml0+Pj4yNC0obysyKSU0KjgmMjU1LGg9czw8MTZ8YTw8OHxjLGw9MDtsPDQmJm8rLjc1Kmw8ZTtsKyspbi5wdXNoKGkuY2hhckF0KGg+Pj42KigzLWwpJjYzKSk7dmFyIGY9aS5jaGFyQXQoNjQpO2lmKGYpZm9yKDtuLmxlbmd0aCU0OyluLnB1c2goZik7cmV0dXJuIG4uam9pbihcIlwiKX0scGFyc2U6ZnVuY3Rpb24odCl7dmFyIGU9dC5sZW5ndGgsaT10aGlzLl9tYXAsbj10aGlzLl9yZXZlcnNlTWFwO2lmKCFuKXtuPXRoaXMuX3JldmVyc2VNYXA9W107Zm9yKHZhciBvPTA7bzxpLmxlbmd0aDtvKyspbltpLmNoYXJDb2RlQXQobyldPW99dmFyIHM9aS5jaGFyQXQoNjQpO2lmKHMpe3ZhciBhPXQuaW5kZXhPZihzKTthIT09LTEmJihlPWEpfXJldHVybiByKHQsZSxuKX0sX21hcDpcIkFCQ0RFRkdISUpLTE1OT1BRUlNUVVZXWFlaYWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXowMTIzNDU2Nzg5Ky89XCJ9fSgpLGZ1bmN0aW9uKHIpe2Z1bmN0aW9uIGUodCxyLGUsaSxuLG8scyl7dmFyIGE9dCsociZlfH5yJmkpK24rcztyZXR1cm4oYTw8b3xhPj4+MzItbykrcn1mdW5jdGlvbiBpKHQscixlLGksbixvLHMpe3ZhciBhPXQrKHImaXxlJn5pKStuK3M7cmV0dXJuKGE8PG98YT4+PjMyLW8pK3J9ZnVuY3Rpb24gbih0LHIsZSxpLG4sbyxzKXt2YXIgYT10KyhyXmVeaSkrbitzO3JldHVybihhPDxvfGE+Pj4zMi1vKStyfWZ1bmN0aW9uIG8odCxyLGUsaSxuLG8scyl7dmFyIGE9dCsoZV4ocnx+aSkpK24rcztyZXR1cm4oYTw8b3xhPj4+MzItbykrcn12YXIgcz10LGE9cy5saWIsYz1hLldvcmRBcnJheSxoPWEuSGFzaGVyLGw9cy5hbGdvLGY9W107IWZ1bmN0aW9uKCl7Zm9yKHZhciB0PTA7dDw2NDt0KyspZlt0XT00Mjk0OTY3Mjk2KnIuYWJzKHIuc2luKHQrMSkpfDB9KCk7dmFyIHU9bC5NRDU9aC5leHRlbmQoe19kb1Jlc2V0OmZ1bmN0aW9uKCl7dGhpcy5faGFzaD1uZXcgYy5pbml0KFsxNzMyNTg0MTkzLDQwMjMyMzM0MTcsMjU2MjM4MzEwMiwyNzE3MzM4NzhdKX0sX2RvUHJvY2Vzc0Jsb2NrOmZ1bmN0aW9uKHQscil7Zm9yKHZhciBzPTA7czwxNjtzKyspe3ZhciBhPXIrcyxjPXRbYV07dFthXT0xNjcxMTkzNSYoYzw8OHxjPj4+MjQpfDQyNzgyNTUzNjAmKGM8PDI0fGM+Pj44KX12YXIgaD10aGlzLl9oYXNoLndvcmRzLGw9dFtyKzBdLHU9dFtyKzFdLGQ9dFtyKzJdLHY9dFtyKzNdLHA9dFtyKzRdLF89dFtyKzVdLHk9dFtyKzZdLGc9dFtyKzddLEI9dFtyKzhdLHc9dFtyKzldLGs9dFtyKzEwXSxTPXRbcisxMV0sbT10W3IrMTJdLHg9dFtyKzEzXSxiPXRbcisxNF0sSD10W3IrMTVdLHo9aFswXSxBPWhbMV0sQz1oWzJdLEQ9aFszXTt6PWUoeixBLEMsRCxsLDcsZlswXSksRD1lKEQseixBLEMsdSwxMixmWzFdKSxDPWUoQyxELHosQSxkLDE3LGZbMl0pLEE9ZShBLEMsRCx6LHYsMjIsZlszXSksej1lKHosQSxDLEQscCw3LGZbNF0pLEQ9ZShELHosQSxDLF8sMTIsZls1XSksQz1lKEMsRCx6LEEseSwxNyxmWzZdKSxBPWUoQSxDLEQseixnLDIyLGZbN10pLHo9ZSh6LEEsQyxELEIsNyxmWzhdKSxEPWUoRCx6LEEsQyx3LDEyLGZbOV0pLEM9ZShDLEQseixBLGssMTcsZlsxMF0pLEE9ZShBLEMsRCx6LFMsMjIsZlsxMV0pLHo9ZSh6LEEsQyxELG0sNyxmWzEyXSksRD1lKEQseixBLEMseCwxMixmWzEzXSksQz1lKEMsRCx6LEEsYiwxNyxmWzE0XSksQT1lKEEsQyxELHosSCwyMixmWzE1XSksej1pKHosQSxDLEQsdSw1LGZbMTZdKSxEPWkoRCx6LEEsQyx5LDksZlsxN10pLEM9aShDLEQseixBLFMsMTQsZlsxOF0pLEE9aShBLEMsRCx6LGwsMjAsZlsxOV0pLHo9aSh6LEEsQyxELF8sNSxmWzIwXSksRD1pKEQseixBLEMsayw5LGZbMjFdKSxDPWkoQyxELHosQSxILDE0LGZbMjJdKSxBPWkoQSxDLEQseixwLDIwLGZbMjNdKSx6PWkoeixBLEMsRCx3LDUsZlsyNF0pLEQ9aShELHosQSxDLGIsOSxmWzI1XSksQz1pKEMsRCx6LEEsdiwxNCxmWzI2XSksQT1pKEEsQyxELHosQiwyMCxmWzI3XSksej1pKHosQSxDLEQseCw1LGZbMjhdKSxEPWkoRCx6LEEsQyxkLDksZlsyOV0pLEM9aShDLEQseixBLGcsMTQsZlszMF0pLEE9aShBLEMsRCx6LG0sMjAsZlszMV0pLHo9bih6LEEsQyxELF8sNCxmWzMyXSksRD1uKEQseixBLEMsQiwxMSxmWzMzXSksQz1uKEMsRCx6LEEsUywxNixmWzM0XSksQT1uKEEsQyxELHosYiwyMyxmWzM1XSksej1uKHosQSxDLEQsdSw0LGZbMzZdKSxEPW4oRCx6LEEsQyxwLDExLGZbMzddKSxDPW4oQyxELHosQSxnLDE2LGZbMzhdKSxBPW4oQSxDLEQseixrLDIzLGZbMzldKSx6PW4oeixBLEMsRCx4LDQsZls0MF0pLEQ9bihELHosQSxDLGwsMTEsZls0MV0pLEM9bihDLEQseixBLHYsMTYsZls0Ml0pLEE9bihBLEMsRCx6LHksMjMsZls0M10pLHo9bih6LEEsQyxELHcsNCxmWzQ0XSksRD1uKEQseixBLEMsbSwxMSxmWzQ1XSksQz1uKEMsRCx6LEEsSCwxNixmWzQ2XSksQT1uKEEsQyxELHosZCwyMyxmWzQ3XSksej1vKHosQSxDLEQsbCw2LGZbNDhdKSxEPW8oRCx6LEEsQyxnLDEwLGZbNDldKSxDPW8oQyxELHosQSxiLDE1LGZbNTBdKSxBPW8oQSxDLEQseixfLDIxLGZbNTFdKSx6PW8oeixBLEMsRCxtLDYsZls1Ml0pLEQ9byhELHosQSxDLHYsMTAsZls1M10pLEM9byhDLEQseixBLGssMTUsZls1NF0pLEE9byhBLEMsRCx6LHUsMjEsZls1NV0pLHo9byh6LEEsQyxELEIsNixmWzU2XSksRD1vKEQseixBLEMsSCwxMCxmWzU3XSksQz1vKEMsRCx6LEEseSwxNSxmWzU4XSksQT1vKEEsQyxELHoseCwyMSxmWzU5XSksej1vKHosQSxDLEQscCw2LGZbNjBdKSxEPW8oRCx6LEEsQyxTLDEwLGZbNjFdKSxDPW8oQyxELHosQSxkLDE1LGZbNjJdKSxBPW8oQSxDLEQseix3LDIxLGZbNjNdKSxoWzBdPWhbMF0renwwLGhbMV09aFsxXStBfDAsaFsyXT1oWzJdK0N8MCxoWzNdPWhbM10rRHwwfSxfZG9GaW5hbGl6ZTpmdW5jdGlvbigpe3ZhciB0PXRoaXMuX2RhdGEsZT10LndvcmRzLGk9OCp0aGlzLl9uRGF0YUJ5dGVzLG49OCp0LnNpZ0J5dGVzO2Vbbj4+PjVdfD0xMjg8PDI0LW4lMzI7dmFyIG89ci5mbG9vcihpLzQyOTQ5NjcyOTYpLHM9aTtlWyhuKzY0Pj4+OTw8NCkrMTVdPTE2NzExOTM1JihvPDw4fG8+Pj4yNCl8NDI3ODI1NTM2MCYobzw8MjR8bz4+PjgpLGVbKG4rNjQ+Pj45PDw0KSsxNF09MTY3MTE5MzUmKHM8PDh8cz4+PjI0KXw0Mjc4MjU1MzYwJihzPDwyNHxzPj4+OCksdC5zaWdCeXRlcz00KihlLmxlbmd0aCsxKSx0aGlzLl9wcm9jZXNzKCk7Zm9yKHZhciBhPXRoaXMuX2hhc2gsYz1hLndvcmRzLGg9MDtoPDQ7aCsrKXt2YXIgbD1jW2hdO2NbaF09MTY3MTE5MzUmKGw8PDh8bD4+PjI0KXw0Mjc4MjU1MzYwJihsPDwyNHxsPj4+OCl9cmV0dXJuIGF9LGNsb25lOmZ1bmN0aW9uKCl7dmFyIHQ9aC5jbG9uZS5jYWxsKHRoaXMpO3JldHVybiB0Ll9oYXNoPXRoaXMuX2hhc2guY2xvbmUoKSx0fX0pO3MuTUQ1PWguX2NyZWF0ZUhlbHBlcih1KSxzLkhtYWNNRDU9aC5fY3JlYXRlSG1hY0hlbHBlcih1KX0oTWF0aCksZnVuY3Rpb24oKXt2YXIgcj10LGU9ci5saWIsaT1lLldvcmRBcnJheSxuPWUuSGFzaGVyLG89ci5hbGdvLHM9W10sYT1vLlNIQTE9bi5leHRlbmQoe19kb1Jlc2V0OmZ1bmN0aW9uKCl7dGhpcy5faGFzaD1uZXcgaS5pbml0KFsxNzMyNTg0MTkzLDQwMjMyMzM0MTcsMjU2MjM4MzEwMiwyNzE3MzM4NzgsMzI4NTM3NzUyMF0pfSxfZG9Qcm9jZXNzQmxvY2s6ZnVuY3Rpb24odCxyKXtmb3IodmFyIGU9dGhpcy5faGFzaC53b3JkcyxpPWVbMF0sbj1lWzFdLG89ZVsyXSxhPWVbM10sYz1lWzRdLGg9MDtoPDgwO2grKyl7aWYoaDwxNilzW2hdPTB8dFtyK2hdO2Vsc2V7dmFyIGw9c1toLTNdXnNbaC04XV5zW2gtMTRdXnNbaC0xNl07c1toXT1sPDwxfGw+Pj4zMX12YXIgZj0oaTw8NXxpPj4+MjcpK2Mrc1toXTtmKz1oPDIwPyhuJm98fm4mYSkrMTUxODUwMDI0OTpoPDQwPyhuXm9eYSkrMTg1OTc3NTM5MzpoPDYwPyhuJm98biZhfG8mYSktMTg5NDAwNzU4ODoobl5vXmEpLTg5OTQ5NzUxNCxjPWEsYT1vLG89bjw8MzB8bj4+PjIsbj1pLGk9Zn1lWzBdPWVbMF0raXwwLGVbMV09ZVsxXStufDAsZVsyXT1lWzJdK298MCxlWzNdPWVbM10rYXwwLGVbNF09ZVs0XStjfDB9LF9kb0ZpbmFsaXplOmZ1bmN0aW9uKCl7dmFyIHQ9dGhpcy5fZGF0YSxyPXQud29yZHMsZT04KnRoaXMuX25EYXRhQnl0ZXMsaT04KnQuc2lnQnl0ZXM7cmV0dXJuIHJbaT4+PjVdfD0xMjg8PDI0LWklMzIsclsoaSs2ND4+Pjk8PDQpKzE0XT1NYXRoLmZsb29yKGUvNDI5NDk2NzI5NiksclsoaSs2ND4+Pjk8PDQpKzE1XT1lLHQuc2lnQnl0ZXM9NCpyLmxlbmd0aCx0aGlzLl9wcm9jZXNzKCksdGhpcy5faGFzaH0sY2xvbmU6ZnVuY3Rpb24oKXt2YXIgdD1uLmNsb25lLmNhbGwodGhpcyk7cmV0dXJuIHQuX2hhc2g9dGhpcy5faGFzaC5jbG9uZSgpLHR9fSk7ci5TSEExPW4uX2NyZWF0ZUhlbHBlcihhKSxyLkhtYWNTSEExPW4uX2NyZWF0ZUhtYWNIZWxwZXIoYSl9KCksZnVuY3Rpb24ocil7dmFyIGU9dCxpPWUubGliLG49aS5Xb3JkQXJyYXksbz1pLkhhc2hlcixzPWUuYWxnbyxhPVtdLGM9W107IWZ1bmN0aW9uKCl7ZnVuY3Rpb24gdCh0KXtmb3IodmFyIGU9ci5zcXJ0KHQpLGk9MjtpPD1lO2krKylpZighKHQlaSkpcmV0dXJuITE7cmV0dXJuITB9ZnVuY3Rpb24gZSh0KXtyZXR1cm4gNDI5NDk2NzI5NioodC0oMHx0KSl8MH1mb3IodmFyIGk9MixuPTA7bjw2NDspdChpKSYmKG48OCYmKGFbbl09ZShyLnBvdyhpLC41KSkpLGNbbl09ZShyLnBvdyhpLDEvMykpLG4rKyksaSsrfSgpO3ZhciBoPVtdLGw9cy5TSEEyNTY9by5leHRlbmQoe19kb1Jlc2V0OmZ1bmN0aW9uKCl7dGhpcy5faGFzaD1uZXcgbi5pbml0KGEuc2xpY2UoMCkpfSxfZG9Qcm9jZXNzQmxvY2s6ZnVuY3Rpb24odCxyKXtmb3IodmFyIGU9dGhpcy5faGFzaC53b3JkcyxpPWVbMF0sbj1lWzFdLG89ZVsyXSxzPWVbM10sYT1lWzRdLGw9ZVs1XSxmPWVbNl0sdT1lWzddLGQ9MDtkPDY0O2QrKyl7aWYoZDwxNiloW2RdPTB8dFtyK2RdO2Vsc2V7dmFyIHY9aFtkLTE1XSxwPSh2PDwyNXx2Pj4+NyleKHY8PDE0fHY+Pj4xOCledj4+PjMsXz1oW2QtMl0seT0oXzw8MTV8Xz4+PjE3KV4oXzw8MTN8Xz4+PjE5KV5fPj4+MTA7aFtkXT1wK2hbZC03XSt5K2hbZC0xNl19dmFyIGc9YSZsXn5hJmYsQj1pJm5eaSZvXm4mbyx3PShpPDwzMHxpPj4+MileKGk8PDE5fGk+Pj4xMyleKGk8PDEwfGk+Pj4yMiksaz0oYTw8MjZ8YT4+PjYpXihhPDwyMXxhPj4+MTEpXihhPDw3fGE+Pj4yNSksUz11K2srZytjW2RdK2hbZF0sbT13K0I7dT1mLGY9bCxsPWEsYT1zK1N8MCxzPW8sbz1uLG49aSxpPVMrbXwwfWVbMF09ZVswXStpfDAsZVsxXT1lWzFdK258MCxlWzJdPWVbMl0rb3wwLGVbM109ZVszXStzfDAsZVs0XT1lWzRdK2F8MCxlWzVdPWVbNV0rbHwwLGVbNl09ZVs2XStmfDAsZVs3XT1lWzddK3V8MH0sX2RvRmluYWxpemU6ZnVuY3Rpb24oKXt2YXIgdD10aGlzLl9kYXRhLGU9dC53b3JkcyxpPTgqdGhpcy5fbkRhdGFCeXRlcyxuPTgqdC5zaWdCeXRlcztyZXR1cm4gZVtuPj4+NV18PTEyODw8MjQtbiUzMixlWyhuKzY0Pj4+OTw8NCkrMTRdPXIuZmxvb3IoaS80Mjk0OTY3Mjk2KSxlWyhuKzY0Pj4+OTw8NCkrMTVdPWksdC5zaWdCeXRlcz00KmUubGVuZ3RoLHRoaXMuX3Byb2Nlc3MoKSx0aGlzLl9oYXNofSxjbG9uZTpmdW5jdGlvbigpe3ZhciB0PW8uY2xvbmUuY2FsbCh0aGlzKTtyZXR1cm4gdC5faGFzaD10aGlzLl9oYXNoLmNsb25lKCksdH19KTtlLlNIQTI1Nj1vLl9jcmVhdGVIZWxwZXIobCksZS5IbWFjU0hBMjU2PW8uX2NyZWF0ZUhtYWNIZWxwZXIobCl9KE1hdGgpLGZ1bmN0aW9uKCl7ZnVuY3Rpb24gcih0KXtyZXR1cm4gdDw8OCY0Mjc4MjU1MzYwfHQ+Pj44JjE2NzExOTM1fXZhciBlPXQsaT1lLmxpYixuPWkuV29yZEFycmF5LG89ZS5lbmM7by5VdGYxNj1vLlV0ZjE2QkU9e3N0cmluZ2lmeTpmdW5jdGlvbih0KXtmb3IodmFyIHI9dC53b3JkcyxlPXQuc2lnQnl0ZXMsaT1bXSxuPTA7bjxlO24rPTIpe3ZhciBvPXJbbj4+PjJdPj4+MTYtbiU0KjgmNjU1MzU7aS5wdXNoKFN0cmluZy5mcm9tQ2hhckNvZGUobykpfXJldHVybiBpLmpvaW4oXCJcIil9LHBhcnNlOmZ1bmN0aW9uKHQpe2Zvcih2YXIgcj10Lmxlbmd0aCxlPVtdLGk9MDtpPHI7aSsrKWVbaT4+PjFdfD10LmNoYXJDb2RlQXQoaSk8PDE2LWklMioxNjtyZXR1cm4gbi5jcmVhdGUoZSwyKnIpfX07by5VdGYxNkxFPXtzdHJpbmdpZnk6ZnVuY3Rpb24odCl7Zm9yKHZhciBlPXQud29yZHMsaT10LnNpZ0J5dGVzLG49W10sbz0wO288aTtvKz0yKXt2YXIgcz1yKGVbbz4+PjJdPj4+MTYtbyU0KjgmNjU1MzUpO24ucHVzaChTdHJpbmcuZnJvbUNoYXJDb2RlKHMpKX1yZXR1cm4gbi5qb2luKFwiXCIpfSxwYXJzZTpmdW5jdGlvbih0KXtmb3IodmFyIGU9dC5sZW5ndGgsaT1bXSxvPTA7bzxlO28rKylpW28+Pj4xXXw9cih0LmNoYXJDb2RlQXQobyk8PDE2LW8lMioxNik7cmV0dXJuIG4uY3JlYXRlKGksMiplKX19fSgpLGZ1bmN0aW9uKCl7aWYoXCJmdW5jdGlvblwiPT10eXBlb2YgQXJyYXlCdWZmZXIpe3ZhciByPXQsZT1yLmxpYixpPWUuV29yZEFycmF5LG49aS5pbml0LG89aS5pbml0PWZ1bmN0aW9uKHQpe2lmKHQgaW5zdGFuY2VvZiBBcnJheUJ1ZmZlciYmKHQ9bmV3IFVpbnQ4QXJyYXkodCkpLCh0IGluc3RhbmNlb2YgSW50OEFycmF5fHxcInVuZGVmaW5lZFwiIT10eXBlb2YgVWludDhDbGFtcGVkQXJyYXkmJnQgaW5zdGFuY2VvZiBVaW50OENsYW1wZWRBcnJheXx8dCBpbnN0YW5jZW9mIEludDE2QXJyYXl8fHQgaW5zdGFuY2VvZiBVaW50MTZBcnJheXx8dCBpbnN0YW5jZW9mIEludDMyQXJyYXl8fHQgaW5zdGFuY2VvZiBVaW50MzJBcnJheXx8dCBpbnN0YW5jZW9mIEZsb2F0MzJBcnJheXx8dCBpbnN0YW5jZW9mIEZsb2F0NjRBcnJheSkmJih0PW5ldyBVaW50OEFycmF5KHQuYnVmZmVyLHQuYnl0ZU9mZnNldCx0LmJ5dGVMZW5ndGgpKSx0IGluc3RhbmNlb2YgVWludDhBcnJheSl7Zm9yKHZhciByPXQuYnl0ZUxlbmd0aCxlPVtdLGk9MDtpPHI7aSsrKWVbaT4+PjJdfD10W2ldPDwyNC1pJTQqODtuLmNhbGwodGhpcyxlLHIpfWVsc2Ugbi5hcHBseSh0aGlzLGFyZ3VtZW50cyl9O28ucHJvdG90eXBlPWl9fSgpLGZ1bmN0aW9uKHIpe2Z1bmN0aW9uIGUodCxyLGUpe3JldHVybiB0XnJeZX1mdW5jdGlvbiBpKHQscixlKXtyZXR1cm4gdCZyfH50JmV9ZnVuY3Rpb24gbih0LHIsZSl7cmV0dXJuKHR8fnIpXmV9ZnVuY3Rpb24gbyh0LHIsZSl7cmV0dXJuIHQmZXxyJn5lfWZ1bmN0aW9uIHModCxyLGUpe3JldHVybiB0XihyfH5lKX1mdW5jdGlvbiBhKHQscil7cmV0dXJuIHQ8PHJ8dD4+PjMyLXJ9dmFyIGM9dCxoPWMubGliLGw9aC5Xb3JkQXJyYXksZj1oLkhhc2hlcix1PWMuYWxnbyxkPWwuY3JlYXRlKFswLDEsMiwzLDQsNSw2LDcsOCw5LDEwLDExLDEyLDEzLDE0LDE1LDcsNCwxMywxLDEwLDYsMTUsMywxMiwwLDksNSwyLDE0LDExLDgsMywxMCwxNCw0LDksMTUsOCwxLDIsNywwLDYsMTMsMTEsNSwxMiwxLDksMTEsMTAsMCw4LDEyLDQsMTMsMyw3LDE1LDE0LDUsNiwyLDQsMCw1LDksNywxMiwyLDEwLDE0LDEsMyw4LDExLDYsMTUsMTNdKSx2PWwuY3JlYXRlKFs1LDE0LDcsMCw5LDIsMTEsNCwxMyw2LDE1LDgsMSwxMCwzLDEyLDYsMTEsMyw3LDAsMTMsNSwxMCwxNCwxNSw4LDEyLDQsOSwxLDIsMTUsNSwxLDMsNywxNCw2LDksMTEsOCwxMiwyLDEwLDAsNCwxMyw4LDYsNCwxLDMsMTEsMTUsMCw1LDEyLDIsMTMsOSw3LDEwLDE0LDEyLDE1LDEwLDQsMSw1LDgsNyw2LDIsMTMsMTQsMCwzLDksMTFdKSxwPWwuY3JlYXRlKFsxMSwxNCwxNSwxMiw1LDgsNyw5LDExLDEzLDE0LDE1LDYsNyw5LDgsNyw2LDgsMTMsMTEsOSw3LDE1LDcsMTIsMTUsOSwxMSw3LDEzLDEyLDExLDEzLDYsNywxNCw5LDEzLDE1LDE0LDgsMTMsNiw1LDEyLDcsNSwxMSwxMiwxNCwxNSwxNCwxNSw5LDgsOSwxNCw1LDYsOCw2LDUsMTIsOSwxNSw1LDExLDYsOCwxMywxMiw1LDEyLDEzLDE0LDExLDgsNSw2XSksXz1sLmNyZWF0ZShbOCw5LDksMTEsMTMsMTUsMTUsNSw3LDcsOCwxMSwxNCwxNCwxMiw2LDksMTMsMTUsNywxMiw4LDksMTEsNyw3LDEyLDcsNiwxNSwxMywxMSw5LDcsMTUsMTEsOCw2LDYsMTQsMTIsMTMsNSwxNCwxMywxMyw3LDUsMTUsNSw4LDExLDE0LDE0LDYsMTQsNiw5LDEyLDksMTIsNSwxNSw4LDgsNSwxMiw5LDEyLDUsMTQsNiw4LDEzLDYsNSwxNSwxMywxMSwxMV0pLHk9bC5jcmVhdGUoWzAsMTUxODUwMDI0OSwxODU5Nzc1MzkzLDI0MDA5NTk3MDgsMjg0MDg1MzgzOF0pLGc9bC5jcmVhdGUoWzEzNTI4Mjk5MjYsMTU0ODYwMzY4NCwxODM2MDcyNjkxLDIwNTM5OTQyMTcsMF0pLEI9dS5SSVBFTUQxNjA9Zi5leHRlbmQoe19kb1Jlc2V0OmZ1bmN0aW9uKCl7dGhpcy5faGFzaD1sLmNyZWF0ZShbMTczMjU4NDE5Myw0MDIzMjMzNDE3LDI1NjIzODMxMDIsMjcxNzMzODc4LDMyODUzNzc1MjBdKX0sX2RvUHJvY2Vzc0Jsb2NrOmZ1bmN0aW9uKHQscil7Zm9yKHZhciBjPTA7YzwxNjtjKyspe3ZhciBoPXIrYyxsPXRbaF07dFtoXT0xNjcxMTkzNSYobDw8OHxsPj4+MjQpfDQyNzgyNTUzNjAmKGw8PDI0fGw+Pj44KX12YXIgZix1LEIsdyxrLFMsbSx4LGIsSCx6PXRoaXMuX2hhc2gud29yZHMsQT15LndvcmRzLEM9Zy53b3JkcyxEPWQud29yZHMsUj12LndvcmRzLEU9cC53b3JkcyxNPV8ud29yZHM7Uz1mPXpbMF0sbT11PXpbMV0seD1CPXpbMl0sYj13PXpbM10sSD1rPXpbNF07Zm9yKHZhciBGLGM9MDtjPDgwO2MrPTEpRj1mK3RbcitEW2NdXXwwLEYrPWM8MTY/ZSh1LEIsdykrQVswXTpjPDMyP2kodSxCLHcpK0FbMV06Yzw0OD9uKHUsQix3KStBWzJdOmM8NjQ/byh1LEIsdykrQVszXTpzKHUsQix3KStBWzRdLEZ8PTAsRj1hKEYsRVtjXSksRj1GK2t8MCxmPWssaz13LHc9YShCLDEwKSxCPXUsdT1GLEY9Uyt0W3IrUltjXV18MCxGKz1jPDE2P3MobSx4LGIpK0NbMF06YzwzMj9vKG0seCxiKStDWzFdOmM8NDg/bihtLHgsYikrQ1syXTpjPDY0P2kobSx4LGIpK0NbM106ZShtLHgsYikrQ1s0XSxGfD0wLEY9YShGLE1bY10pLEY9RitIfDAsUz1ILEg9YixiPWEoeCwxMCkseD1tLG09RjtGPXpbMV0rQitifDAselsxXT16WzJdK3crSHwwLHpbMl09elszXStrK1N8MCx6WzNdPXpbNF0rZittfDAsels0XT16WzBdK3UreHwwLHpbMF09Rn0sX2RvRmluYWxpemU6ZnVuY3Rpb24oKXt2YXIgdD10aGlzLl9kYXRhLHI9dC53b3JkcyxlPTgqdGhpcy5fbkRhdGFCeXRlcyxpPTgqdC5zaWdCeXRlcztyW2k+Pj41XXw9MTI4PDwyNC1pJTMyLHJbKGkrNjQ+Pj45PDw0KSsxNF09MTY3MTE5MzUmKGU8PDh8ZT4+PjI0KXw0Mjc4MjU1MzYwJihlPDwyNHxlPj4+OCksdC5zaWdCeXRlcz00KihyLmxlbmd0aCsxKSx0aGlzLl9wcm9jZXNzKCk7Zm9yKHZhciBuPXRoaXMuX2hhc2gsbz1uLndvcmRzLHM9MDtzPDU7cysrKXt2YXIgYT1vW3NdO29bc109MTY3MTE5MzUmKGE8PDh8YT4+PjI0KXw0Mjc4MjU1MzYwJihhPDwyNHxhPj4+OCl9cmV0dXJuIG59LGNsb25lOmZ1bmN0aW9uKCl7dmFyIHQ9Zi5jbG9uZS5jYWxsKHRoaXMpO3JldHVybiB0Ll9oYXNoPXRoaXMuX2hhc2guY2xvbmUoKSx0fX0pO2MuUklQRU1EMTYwPWYuX2NyZWF0ZUhlbHBlcihCKSxjLkhtYWNSSVBFTUQxNjA9Zi5fY3JlYXRlSG1hY0hlbHBlcihCKX0oTWF0aCksZnVuY3Rpb24oKXt2YXIgcj10LGU9ci5saWIsaT1lLkJhc2Usbj1yLmVuYyxvPW4uVXRmOCxzPXIuYWxnbztzLkhNQUM9aS5leHRlbmQoe2luaXQ6ZnVuY3Rpb24odCxyKXt0PXRoaXMuX2hhc2hlcj1uZXcgdC5pbml0LFwic3RyaW5nXCI9PXR5cGVvZiByJiYocj1vLnBhcnNlKHIpKTt2YXIgZT10LmJsb2NrU2l6ZSxpPTQqZTtyLnNpZ0J5dGVzPmkmJihyPXQuZmluYWxpemUocikpLHIuY2xhbXAoKTtmb3IodmFyIG49dGhpcy5fb0tleT1yLmNsb25lKCkscz10aGlzLl9pS2V5PXIuY2xvbmUoKSxhPW4ud29yZHMsYz1zLndvcmRzLGg9MDtoPGU7aCsrKWFbaF1ePTE1NDk1NTY4MjgsY1toXV49OTA5NTIyNDg2O24uc2lnQnl0ZXM9cy5zaWdCeXRlcz1pLHRoaXMucmVzZXQoKX0scmVzZXQ6ZnVuY3Rpb24oKXt2YXIgdD10aGlzLl9oYXNoZXI7dC5yZXNldCgpLHQudXBkYXRlKHRoaXMuX2lLZXkpfSx1cGRhdGU6ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuX2hhc2hlci51cGRhdGUodCksdGhpc30sZmluYWxpemU6ZnVuY3Rpb24odCl7dmFyIHI9dGhpcy5faGFzaGVyLGU9ci5maW5hbGl6ZSh0KTtyLnJlc2V0KCk7dmFyIGk9ci5maW5hbGl6ZSh0aGlzLl9vS2V5LmNsb25lKCkuY29uY2F0KGUpKTtyZXR1cm4gaX19KX0oKSxmdW5jdGlvbigpe3ZhciByPXQsZT1yLmxpYixpPWUuQmFzZSxuPWUuV29yZEFycmF5LG89ci5hbGdvLHM9by5TSEExLGE9by5ITUFDLGM9by5QQktERjI9aS5leHRlbmQoe2NmZzppLmV4dGVuZCh7a2V5U2l6ZTo0LGhhc2hlcjpzLGl0ZXJhdGlvbnM6MX0pLGluaXQ6ZnVuY3Rpb24odCl7dGhpcy5jZmc9dGhpcy5jZmcuZXh0ZW5kKHQpfSxjb21wdXRlOmZ1bmN0aW9uKHQscil7Zm9yKHZhciBlPXRoaXMuY2ZnLGk9YS5jcmVhdGUoZS5oYXNoZXIsdCksbz1uLmNyZWF0ZSgpLHM9bi5jcmVhdGUoWzFdKSxjPW8ud29yZHMsaD1zLndvcmRzLGw9ZS5rZXlTaXplLGY9ZS5pdGVyYXRpb25zO2MubGVuZ3RoPGw7KXt2YXIgdT1pLnVwZGF0ZShyKS5maW5hbGl6ZShzKTtpLnJlc2V0KCk7Zm9yKHZhciBkPXUud29yZHMsdj1kLmxlbmd0aCxwPXUsXz0xO188ZjtfKyspe3A9aS5maW5hbGl6ZShwKSxpLnJlc2V0KCk7Zm9yKHZhciB5PXAud29yZHMsZz0wO2c8djtnKyspZFtnXV49eVtnXX1vLmNvbmNhdCh1KSxoWzBdKyt9cmV0dXJuIG8uc2lnQnl0ZXM9NCpsLG99fSk7ci5QQktERjI9ZnVuY3Rpb24odCxyLGUpe3JldHVybiBjLmNyZWF0ZShlKS5jb21wdXRlKHQscil9fSgpLGZ1bmN0aW9uKCl7dmFyIHI9dCxlPXIubGliLGk9ZS5CYXNlLG49ZS5Xb3JkQXJyYXksbz1yLmFsZ28scz1vLk1ENSxhPW8uRXZwS0RGPWkuZXh0ZW5kKHtjZmc6aS5leHRlbmQoe2tleVNpemU6NCxoYXNoZXI6cyxpdGVyYXRpb25zOjF9KSxpbml0OmZ1bmN0aW9uKHQpe3RoaXMuY2ZnPXRoaXMuY2ZnLmV4dGVuZCh0KX0sY29tcHV0ZTpmdW5jdGlvbih0LHIpe2Zvcih2YXIgZT10aGlzLmNmZyxpPWUuaGFzaGVyLmNyZWF0ZSgpLG89bi5jcmVhdGUoKSxzPW8ud29yZHMsYT1lLmtleVNpemUsYz1lLml0ZXJhdGlvbnM7cy5sZW5ndGg8YTspe2gmJmkudXBkYXRlKGgpO3ZhciBoPWkudXBkYXRlKHQpLmZpbmFsaXplKHIpO2kucmVzZXQoKTtmb3IodmFyIGw9MTtsPGM7bCsrKWg9aS5maW5hbGl6ZShoKSxpLnJlc2V0KCk7by5jb25jYXQoaCl9cmV0dXJuIG8uc2lnQnl0ZXM9NCphLG99fSk7ci5FdnBLREY9ZnVuY3Rpb24odCxyLGUpe3JldHVybiBhLmNyZWF0ZShlKS5jb21wdXRlKHQscil9fSgpLGZ1bmN0aW9uKCl7dmFyIHI9dCxlPXIubGliLGk9ZS5Xb3JkQXJyYXksbj1yLmFsZ28sbz1uLlNIQTI1NixzPW4uU0hBMjI0PW8uZXh0ZW5kKHtfZG9SZXNldDpmdW5jdGlvbigpe3RoaXMuX2hhc2g9bmV3IGkuaW5pdChbMzIzODM3MTAzMiw5MTQxNTA2NjMsODEyNzAyOTk5LDQxNDQ5MTI2OTcsNDI5MDc3NTg1NywxNzUwNjAzMDI1LDE2OTQwNzY4MzksMzIwNDA3NTQyOF0pfSxfZG9GaW5hbGl6ZTpmdW5jdGlvbigpe3ZhciB0PW8uX2RvRmluYWxpemUuY2FsbCh0aGlzKTtyZXR1cm4gdC5zaWdCeXRlcy09NCx0fX0pO3IuU0hBMjI0PW8uX2NyZWF0ZUhlbHBlcihzKSxyLkhtYWNTSEEyMjQ9by5fY3JlYXRlSG1hY0hlbHBlcihzKX0oKSxmdW5jdGlvbihyKXt2YXIgZT10LGk9ZS5saWIsbj1pLkJhc2Usbz1pLldvcmRBcnJheSxzPWUueDY0PXt9O3MuV29yZD1uLmV4dGVuZCh7aW5pdDpmdW5jdGlvbih0LHIpe3RoaXMuaGlnaD10LHRoaXMubG93PXJ9fSkscy5Xb3JkQXJyYXk9bi5leHRlbmQoe2luaXQ6ZnVuY3Rpb24odCxlKXt0PXRoaXMud29yZHM9dHx8W10sZSE9cj90aGlzLnNpZ0J5dGVzPWU6dGhpcy5zaWdCeXRlcz04KnQubGVuZ3RofSx0b1gzMjpmdW5jdGlvbigpe2Zvcih2YXIgdD10aGlzLndvcmRzLHI9dC5sZW5ndGgsZT1bXSxpPTA7aTxyO2krKyl7dmFyIG49dFtpXTtlLnB1c2gobi5oaWdoKSxlLnB1c2gobi5sb3cpfXJldHVybiBvLmNyZWF0ZShlLHRoaXMuc2lnQnl0ZXMpfSxjbG9uZTpmdW5jdGlvbigpe2Zvcih2YXIgdD1uLmNsb25lLmNhbGwodGhpcykscj10LndvcmRzPXRoaXMud29yZHMuc2xpY2UoMCksZT1yLmxlbmd0aCxpPTA7aTxlO2krKylyW2ldPXJbaV0uY2xvbmUoKTtyZXR1cm4gdH19KX0oKSxmdW5jdGlvbihyKXt2YXIgZT10LGk9ZS5saWIsbj1pLldvcmRBcnJheSxvPWkuSGFzaGVyLHM9ZS54NjQsYT1zLldvcmQsYz1lLmFsZ28saD1bXSxsPVtdLGY9W107IWZ1bmN0aW9uKCl7Zm9yKHZhciB0PTEscj0wLGU9MDtlPDI0O2UrKyl7aFt0KzUqcl09KGUrMSkqKGUrMikvMiU2NDt2YXIgaT1yJTUsbj0oMip0KzMqciklNTt0PWkscj1ufWZvcih2YXIgdD0wO3Q8NTt0KyspZm9yKHZhciByPTA7cjw1O3IrKylsW3QrNSpyXT1yKygyKnQrMypyKSU1KjU7Zm9yKHZhciBvPTEscz0wO3M8MjQ7cysrKXtmb3IodmFyIGM9MCx1PTAsZD0wO2Q8NztkKyspe2lmKDEmbyl7dmFyIHY9KDE8PGQpLTE7djwzMj91Xj0xPDx2OmNePTE8PHYtMzJ9MTI4Jm8/bz1vPDwxXjExMzpvPDw9MX1mW3NdPWEuY3JlYXRlKGMsdSl9fSgpO3ZhciB1PVtdOyFmdW5jdGlvbigpe2Zvcih2YXIgdD0wO3Q8MjU7dCsrKXVbdF09YS5jcmVhdGUoKX0oKTt2YXIgZD1jLlNIQTM9by5leHRlbmQoe2NmZzpvLmNmZy5leHRlbmQoe291dHB1dExlbmd0aDo1MTJ9KSxfZG9SZXNldDpmdW5jdGlvbigpe2Zvcih2YXIgdD10aGlzLl9zdGF0ZT1bXSxyPTA7cjwyNTtyKyspdFtyXT1uZXcgYS5pbml0O3RoaXMuYmxvY2tTaXplPSgxNjAwLTIqdGhpcy5jZmcub3V0cHV0TGVuZ3RoKS8zMn0sX2RvUHJvY2Vzc0Jsb2NrOmZ1bmN0aW9uKHQscil7Zm9yKHZhciBlPXRoaXMuX3N0YXRlLGk9dGhpcy5ibG9ja1NpemUvMixuPTA7bjxpO24rKyl7dmFyIG89dFtyKzIqbl0scz10W3IrMipuKzFdO289MTY3MTE5MzUmKG88PDh8bz4+PjI0KXw0Mjc4MjU1MzYwJihvPDwyNHxvPj4+OCkscz0xNjcxMTkzNSYoczw8OHxzPj4+MjQpfDQyNzgyNTUzNjAmKHM8PDI0fHM+Pj44KTt2YXIgYT1lW25dO2EuaGlnaF49cyxhLmxvd149b31mb3IodmFyIGM9MDtjPDI0O2MrKyl7Zm9yKHZhciBkPTA7ZDw1O2QrKyl7Zm9yKHZhciB2PTAscD0wLF89MDtfPDU7XysrKXt2YXIgYT1lW2QrNSpfXTt2Xj1hLmhpZ2gscF49YS5sb3d9dmFyIHk9dVtkXTt5LmhpZ2g9dix5Lmxvdz1wfWZvcih2YXIgZD0wO2Q8NTtkKyspZm9yKHZhciBnPXVbKGQrNCklNV0sQj11WyhkKzEpJTVdLHc9Qi5oaWdoLGs9Qi5sb3csdj1nLmhpZ2heKHc8PDF8az4+PjMxKSxwPWcubG93XihrPDwxfHc+Pj4zMSksXz0wO188NTtfKyspe3ZhciBhPWVbZCs1Kl9dO2EuaGlnaF49dixhLmxvd149cH1mb3IodmFyIFM9MTtTPDI1O1MrKyl7dmFyIGE9ZVtTXSxtPWEuaGlnaCx4PWEubG93LGI9aFtTXTtpZihiPDMyKXZhciB2PW08PGJ8eD4+PjMyLWIscD14PDxifG0+Pj4zMi1iO2Vsc2UgdmFyIHY9eDw8Yi0zMnxtPj4+NjQtYixwPW08PGItMzJ8eD4+PjY0LWI7dmFyIEg9dVtsW1NdXTtILmhpZ2g9dixILmxvdz1wfXZhciB6PXVbMF0sQT1lWzBdO3ouaGlnaD1BLmhpZ2gsei5sb3c9QS5sb3c7Zm9yKHZhciBkPTA7ZDw1O2QrKylmb3IodmFyIF89MDtfPDU7XysrKXt2YXIgUz1kKzUqXyxhPWVbU10sQz11W1NdLEQ9dVsoZCsxKSU1KzUqX10sUj11WyhkKzIpJTUrNSpfXTthLmhpZ2g9Qy5oaWdoXn5ELmhpZ2gmUi5oaWdoLGEubG93PUMubG93Xn5ELmxvdyZSLmxvd312YXIgYT1lWzBdLEU9ZltjXTthLmhpZ2hePUUuaGlnaCxhLmxvd149RS5sb3d9fSxfZG9GaW5hbGl6ZTpmdW5jdGlvbigpe3ZhciB0PXRoaXMuX2RhdGEsZT10LndvcmRzLGk9KDgqdGhpcy5fbkRhdGFCeXRlcyw4KnQuc2lnQnl0ZXMpLG89MzIqdGhpcy5ibG9ja1NpemU7ZVtpPj4+NV18PTE8PDI0LWklMzIsZVsoci5jZWlsKChpKzEpL28pKm8+Pj41KS0xXXw9MTI4LHQuc2lnQnl0ZXM9NCplLmxlbmd0aCx0aGlzLl9wcm9jZXNzKCk7Zm9yKHZhciBzPXRoaXMuX3N0YXRlLGE9dGhpcy5jZmcub3V0cHV0TGVuZ3RoLzgsYz1hLzgsaD1bXSxsPTA7bDxjO2wrKyl7dmFyIGY9c1tsXSx1PWYuaGlnaCxkPWYubG93O3U9MTY3MTE5MzUmKHU8PDh8dT4+PjI0KXw0Mjc4MjU1MzYwJih1PDwyNHx1Pj4+OCksZD0xNjcxMTkzNSYoZDw8OHxkPj4+MjQpfDQyNzgyNTUzNjAmKGQ8PDI0fGQ+Pj44KSxoLnB1c2goZCksaC5wdXNoKHUpfXJldHVybiBuZXcgbi5pbml0KGgsYSl9LGNsb25lOmZ1bmN0aW9uKCl7Zm9yKHZhciB0PW8uY2xvbmUuY2FsbCh0aGlzKSxyPXQuX3N0YXRlPXRoaXMuX3N0YXRlLnNsaWNlKDApLGU9MDtlPDI1O2UrKylyW2VdPXJbZV0uY2xvbmUoKTtyZXR1cm4gdH19KTtlLlNIQTM9by5fY3JlYXRlSGVscGVyKGQpLGUuSG1hY1NIQTM9by5fY3JlYXRlSG1hY0hlbHBlcihkKX0oTWF0aCksZnVuY3Rpb24oKXtmdW5jdGlvbiByKCl7cmV0dXJuIHMuY3JlYXRlLmFwcGx5KHMsYXJndW1lbnRzKX12YXIgZT10LGk9ZS5saWIsbj1pLkhhc2hlcixvPWUueDY0LHM9by5Xb3JkLGE9by5Xb3JkQXJyYXksYz1lLmFsZ28saD1bcigxMTE2MzUyNDA4LDM2MDk3Njc0NTgpLHIoMTg5OTQ0NzQ0MSw2MDI4OTE3MjUpLHIoMzA0OTMyMzQ3MSwzOTY0NDg0Mzk5KSxyKDM5MjEwMDk1NzMsMjE3MzI5NTU0OCkscig5NjE5ODcxNjMsNDA4MTYyODQ3MikscigxNTA4OTcwOTkzLDMwNTM4MzQyNjUpLHIoMjQ1MzYzNTc0OCwyOTM3NjcxNTc5KSxyKDI4NzA3NjMyMjEsMzY2NDYwOTU2MCkscigzNjI0MzgxMDgwLDI3MzQ4ODMzOTQpLHIoMzEwNTk4NDAxLDExNjQ5OTY1NDIpLHIoNjA3MjI1Mjc4LDEzMjM2MTA3NjQpLHIoMTQyNjg4MTk4NywzNTkwMzA0OTk0KSxyKDE5MjUwNzgzODgsNDA2ODE4MjM4MykscigyMTYyMDc4MjA2LDk5MTMzNjExMykscigyNjE0ODg4MTAzLDYzMzgwMzMxNykscigzMjQ4MjIyNTgwLDM0Nzk3NzQ4NjgpLHIoMzgzNTM5MDQwMSwyNjY2NjEzNDU4KSxyKDQwMjIyMjQ3NzQsOTQ0NzExMTM5KSxyKDI2NDM0NzA3OCwyMzQxMjYyNzczKSxyKDYwNDgwNzYyOCwyMDA3ODAwOTMzKSxyKDc3MDI1NTk4MywxNDk1OTkwOTAxKSxyKDEyNDkxNTAxMjIsMTg1NjQzMTIzNSkscigxNTU1MDgxNjkyLDMxNzUyMTgxMzIpLHIoMTk5NjA2NDk4NiwyMTk4OTUwODM3KSxyKDI1NTQyMjA4ODIsMzk5OTcxOTMzOSkscigyODIxODM0MzQ5LDc2Njc4NDAxNikscigyOTUyOTk2ODA4LDI1NjY1OTQ4NzkpLHIoMzIxMDMxMzY3MSwzMjAzMzM3OTU2KSxyKDMzMzY1NzE4OTEsMTAzNDQ1NzAyNikscigzNTg0NTI4NzExLDI0NjY5NDg5MDEpLHIoMTEzOTI2OTkzLDM3NTgzMjYzODMpLHIoMzM4MjQxODk1LDE2ODcxNzkzNikscig2NjYzMDcyMDUsMTE4ODE3OTk2NCkscig3NzM1Mjk5MTIsMTU0NjA0NTczNCkscigxMjk0NzU3MzcyLDE1MjI4MDU0ODUpLHIoMTM5NjE4MjI5MSwyNjQzODMzODIzKSxyKDE2OTUxODM3MDAsMjM0MzUyNzM5MCkscigxOTg2NjYxMDUxLDEwMTQ0Nzc0ODApLHIoMjE3NzAyNjM1MCwxMjA2NzU5MTQyKSxyKDI0NTY5NTYwMzcsMzQ0MDc3NjI3KSxyKDI3MzA0ODU5MjEsMTI5MDg2MzQ2MCkscigyODIwMzAyNDExLDMxNTg0NTQyNzMpLHIoMzI1OTczMDgwMCwzNTA1OTUyNjU3KSxyKDMzNDU3NjQ3NzEsMTA2MjE3MDA4KSxyKDM1MTYwNjU4MTcsMzYwNjAwODM0NCkscigzNjAwMzUyODA0LDE0MzI3MjU3NzYpLHIoNDA5NDU3MTkwOSwxNDY3MDMxNTk0KSxyKDI3NTQyMzM0NCw4NTExNjk3MjApLHIoNDMwMjI3NzM0LDMxMDA4MjM3NTIpLHIoNTA2OTQ4NjE2LDEzNjMyNTgxOTUpLHIoNjU5MDYwNTU2LDM3NTA2ODU1OTMpLHIoODgzOTk3ODc3LDM3ODUwNTAyODApLHIoOTU4MTM5NTcxLDMzMTgzMDc0MjcpLHIoMTMyMjgyMjIxOCwzODEyNzIzNDAzKSxyKDE1MzcwMDIwNjMsMjAwMzAzNDk5NSkscigxNzQ3ODczNzc5LDM2MDIwMzY4OTkpLHIoMTk1NTU2MjIyMiwxNTc1OTkwMDEyKSxyKDIwMjQxMDQ4MTUsMTEyNTU5MjkyOCkscigyMjI3NzMwNDUyLDI3MTY5MDQzMDYpLHIoMjM2MTg1MjQyNCw0NDI3NzYwNDQpLHIoMjQyODQzNjQ3NCw1OTM2OTgzNDQpLHIoMjc1NjczNDE4NywzNzMzMTEwMjQ5KSxyKDMyMDQwMzE0NzksMjk5OTM1MTU3MykscigzMzI5MzI1Mjk4LDM4MTU5MjA0MjcpLHIoMzM5MTU2OTYxNCwzOTI4MzgzOTAwKSxyKDM1MTUyNjcyNzEsNTY2MjgwNzExKSxyKDM5NDAxODc2MDYsMzQ1NDA2OTUzNCkscig0MTE4NjMwMjcxLDQwMDAyMzk5OTIpLHIoMTE2NDE4NDc0LDE5MTQxMzg1NTQpLHIoMTc0MjkyNDIxLDI3MzEwNTUyNzApLHIoMjg5MzgwMzU2LDMyMDM5OTMwMDYpLHIoNDYwMzkzMjY5LDMyMDYyMDMxNSkscig2ODU0NzE3MzMsNTg3NDk2ODM2KSxyKDg1MjE0Mjk3MSwxMDg2NzkyODUxKSxyKDEwMTcwMzYyOTgsMzY1NTQzMTAwKSxyKDExMjYwMDA1ODAsMjYxODI5NzY3NikscigxMjg4MDMzNDcwLDM0MDk4NTUxNTgpLHIoMTUwMTUwNTk0OCw0MjM0NTA5ODY2KSxyKDE2MDcxNjc5MTUsOTg3MTY3NDY4KSxyKDE4MTY0MDIzMTYsMTI0NjE4OTU5MSldLGw9W107IWZ1bmN0aW9uKCl7Zm9yKHZhciB0PTA7dDw4MDt0KyspbFt0XT1yKCl9KCk7dmFyIGY9Yy5TSEE1MTI9bi5leHRlbmQoe19kb1Jlc2V0OmZ1bmN0aW9uKCl7dGhpcy5faGFzaD1uZXcgYS5pbml0KFtuZXcgcy5pbml0KDE3NzkwMzM3MDMsNDA4OTIzNTcyMCksbmV3IHMuaW5pdCgzMTQ0MTM0Mjc3LDIyMjc4NzM1OTUpLG5ldyBzLmluaXQoMTAxMzkwNDI0Miw0MjcxMTc1NzIzKSxuZXcgcy5pbml0KDI3NzM0ODA3NjIsMTU5NTc1MDEyOSksbmV3IHMuaW5pdCgxMzU5ODkzMTE5LDI5MTc1NjUxMzcpLG5ldyBzLmluaXQoMjYwMDgyMjkyNCw3MjU1MTExOTkpLG5ldyBzLmluaXQoNTI4NzM0NjM1LDQyMTUzODk1NDcpLG5ldyBzLmluaXQoMTU0MTQ1OTIyNSwzMjcwMzMyMDkpXSl9LF9kb1Byb2Nlc3NCbG9jazpmdW5jdGlvbih0LHIpe2Zvcih2YXIgZT10aGlzLl9oYXNoLndvcmRzLGk9ZVswXSxuPWVbMV0sbz1lWzJdLHM9ZVszXSxhPWVbNF0sYz1lWzVdLGY9ZVs2XSx1PWVbN10sZD1pLmhpZ2gsdj1pLmxvdyxwPW4uaGlnaCxfPW4ubG93LHk9by5oaWdoLGc9by5sb3csQj1zLmhpZ2gsdz1zLmxvdyxrPWEuaGlnaCxTPWEubG93LG09Yy5oaWdoLHg9Yy5sb3csYj1mLmhpZ2gsSD1mLmxvdyx6PXUuaGlnaCxBPXUubG93LEM9ZCxEPXYsUj1wLEU9XyxNPXksRj1nLFA9QixXPXcsTz1rLFU9UyxJPW0sSz14LFg9YixMPUgsaj16LE49QSxUPTA7VDw4MDtUKyspe3ZhciBaPWxbVF07aWYoVDwxNil2YXIgcT1aLmhpZ2g9MHx0W3IrMipUXSxHPVoubG93PTB8dFtyKzIqVCsxXTtlbHNle3ZhciBKPWxbVC0xNV0sJD1KLmhpZ2gsUT1KLmxvdyxWPSgkPj4+MXxRPDwzMSleKCQ+Pj44fFE8PDI0KV4kPj4+NyxZPShRPj4+MXwkPDwzMSleKFE+Pj44fCQ8PDI0KV4oUT4+Pjd8JDw8MjUpLHR0PWxbVC0yXSxydD10dC5oaWdoLGV0PXR0LmxvdyxpdD0ocnQ+Pj4xOXxldDw8MTMpXihydDw8M3xldD4+PjI5KV5ydD4+PjYsbnQ9KGV0Pj4+MTl8cnQ8PDEzKV4oZXQ8PDN8cnQ+Pj4yOSleKGV0Pj4+NnxydDw8MjYpLG90PWxbVC03XSxzdD1vdC5oaWdoLGF0PW90LmxvdyxjdD1sW1QtMTZdLGh0PWN0LmhpZ2gsbHQ9Y3QubG93LEc9WSthdCxxPVYrc3QrKEc+Pj4wPFk+Pj4wPzE6MCksRz1HK250LHE9cStpdCsoRz4+PjA8bnQ+Pj4wPzE6MCksRz1HK2x0LHE9cStodCsoRz4+PjA8bHQ+Pj4wPzE6MCk7Wi5oaWdoPXEsWi5sb3c9R312YXIgZnQ9TyZJXn5PJlgsdXQ9VSZLXn5VJkwsZHQ9QyZSXkMmTV5SJk0sdnQ9RCZFXkQmRl5FJkYscHQ9KEM+Pj4yOHxEPDw0KV4oQzw8MzB8RD4+PjIpXihDPDwyNXxEPj4+NyksX3Q9KEQ+Pj4yOHxDPDw0KV4oRDw8MzB8Qz4+PjIpXihEPDwyNXxDPj4+NykseXQ9KE8+Pj4xNHxVPDwxOCleKE8+Pj4xOHxVPDwxNCleKE88PDIzfFU+Pj45KSxndD0oVT4+PjE0fE88PDE4KV4oVT4+PjE4fE88PDE0KV4oVTw8MjN8Tz4+PjkpLEJ0PWhbVF0sd3Q9QnQuaGlnaCxrdD1CdC5sb3csU3Q9TitndCxtdD1qK3l0KyhTdD4+PjA8Tj4+PjA/MTowKSxTdD1TdCt1dCxtdD1tdCtmdCsoU3Q+Pj4wPHV0Pj4+MD8xOjApLFN0PVN0K2t0LG10PW10K3d0KyhTdD4+PjA8a3Q+Pj4wPzE6MCksU3Q9U3QrRyxtdD1tdCtxKyhTdD4+PjA8Rz4+PjA/MTowKSx4dD1fdCt2dCxidD1wdCtkdCsoeHQ+Pj4wPF90Pj4+MD8xOjApO2o9WCxOPUwsWD1JLEw9SyxJPU8sSz1VLFU9VytTdHwwLE89UCttdCsoVT4+PjA8Vz4+PjA/MTowKXwwLFA9TSxXPUYsTT1SLEY9RSxSPUMsRT1ELEQ9U3QreHR8MCxDPW10K2J0KyhEPj4+MDxTdD4+PjA/MTowKXwwfXY9aS5sb3c9ditELGkuaGlnaD1kK0MrKHY+Pj4wPEQ+Pj4wPzE6MCksXz1uLmxvdz1fK0Usbi5oaWdoPXArUisoXz4+PjA8RT4+PjA/MTowKSxnPW8ubG93PWcrRixvLmhpZ2g9eStNKyhnPj4+MDxGPj4+MD8xOjApLHc9cy5sb3c9dytXLHMuaGlnaD1CK1ArKHc+Pj4wPFc+Pj4wPzE6MCksUz1hLmxvdz1TK1UsYS5oaWdoPWsrTysoUz4+PjA8VT4+PjA/MTowKSx4PWMubG93PXgrSyxjLmhpZ2g9bStJKyh4Pj4+MDxLPj4+MD8xOjApLEg9Zi5sb3c9SCtMLGYuaGlnaD1iK1grKEg+Pj4wPEw+Pj4wPzE6MCksQT11Lmxvdz1BK04sdS5oaWdoPXoraisoQT4+PjA8Tj4+PjA/MTowKX0sX2RvRmluYWxpemU6ZnVuY3Rpb24oKXt2YXIgdD10aGlzLl9kYXRhLHI9dC53b3JkcyxlPTgqdGhpcy5fbkRhdGFCeXRlcyxpPTgqdC5zaWdCeXRlcztyW2k+Pj41XXw9MTI4PDwyNC1pJTMyLHJbKGkrMTI4Pj4+MTA8PDUpKzMwXT1NYXRoLmZsb29yKGUvNDI5NDk2NzI5NiksclsoaSsxMjg+Pj4xMDw8NSkrMzFdPWUsdC5zaWdCeXRlcz00KnIubGVuZ3RoLHRoaXMuX3Byb2Nlc3MoKTt2YXIgbj10aGlzLl9oYXNoLnRvWDMyKCk7cmV0dXJuIG59LGNsb25lOmZ1bmN0aW9uKCl7dmFyIHQ9bi5jbG9uZS5jYWxsKHRoaXMpO3JldHVybiB0Ll9oYXNoPXRoaXMuX2hhc2guY2xvbmUoKSx0fSxibG9ja1NpemU6MzJ9KTtlLlNIQTUxMj1uLl9jcmVhdGVIZWxwZXIoZiksZS5IbWFjU0hBNTEyPW4uX2NyZWF0ZUhtYWNIZWxwZXIoZil9KCksZnVuY3Rpb24oKXt2YXIgcj10LGU9ci54NjQsaT1lLldvcmQsbj1lLldvcmRBcnJheSxvPXIuYWxnbyxzPW8uU0hBNTEyLGE9by5TSEEzODQ9cy5leHRlbmQoe19kb1Jlc2V0OmZ1bmN0aW9uKCl7dGhpcy5faGFzaD1uZXcgbi5pbml0KFtuZXcgaS5pbml0KDM0MTgwNzAzNjUsMzIzODM3MTAzMiksbmV3IGkuaW5pdCgxNjU0MjcwMjUwLDkxNDE1MDY2MyksbmV3IGkuaW5pdCgyNDM4NTI5MzcwLDgxMjcwMjk5OSksbmV3IGkuaW5pdCgzNTU0NjIzNjAsNDE0NDkxMjY5NyksbmV3IGkuaW5pdCgxNzMxNDA1NDE1LDQyOTA3NzU4NTcpLG5ldyBpLmluaXQoMjM5NDE4MDIzMSwxNzUwNjAzMDI1KSxuZXcgaS5pbml0KDM2NzUwMDg1MjUsMTY5NDA3NjgzOSksbmV3IGkuaW5pdCgxMjAzMDYyODEzLDMyMDQwNzU0MjgpXSl9LF9kb0ZpbmFsaXplOmZ1bmN0aW9uKCl7dmFyIHQ9cy5fZG9GaW5hbGl6ZS5jYWxsKHRoaXMpO3JldHVybiB0LnNpZ0J5dGVzLT0xNix0fX0pO3IuU0hBMzg0PXMuX2NyZWF0ZUhlbHBlcihhKSxyLkhtYWNTSEEzODQ9cy5fY3JlYXRlSG1hY0hlbHBlcihhKX0oKSx0LmxpYi5DaXBoZXJ8fGZ1bmN0aW9uKHIpe3ZhciBlPXQsaT1lLmxpYixuPWkuQmFzZSxvPWkuV29yZEFycmF5LHM9aS5CdWZmZXJlZEJsb2NrQWxnb3JpdGhtLGE9ZS5lbmMsYz0oYS5VdGY4LGEuQmFzZTY0KSxoPWUuYWxnbyxsPWguRXZwS0RGLGY9aS5DaXBoZXI9cy5leHRlbmQoe2NmZzpuLmV4dGVuZCgpLGNyZWF0ZUVuY3J5cHRvcjpmdW5jdGlvbih0LHIpe3JldHVybiB0aGlzLmNyZWF0ZSh0aGlzLl9FTkNfWEZPUk1fTU9ERSx0LHIpfSxjcmVhdGVEZWNyeXB0b3I6ZnVuY3Rpb24odCxyKXtyZXR1cm4gdGhpcy5jcmVhdGUodGhpcy5fREVDX1hGT1JNX01PREUsdCxyKX0saW5pdDpmdW5jdGlvbih0LHIsZSl7dGhpcy5jZmc9dGhpcy5jZmcuZXh0ZW5kKGUpLHRoaXMuX3hmb3JtTW9kZT10LHRoaXMuX2tleT1yLHRoaXMucmVzZXQoKX0scmVzZXQ6ZnVuY3Rpb24oKXtzLnJlc2V0LmNhbGwodGhpcyksdGhpcy5fZG9SZXNldCgpfSxwcm9jZXNzOmZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLl9hcHBlbmQodCksdGhpcy5fcHJvY2VzcygpfSxmaW5hbGl6ZTpmdW5jdGlvbih0KXt0JiZ0aGlzLl9hcHBlbmQodCk7dmFyIHI9dGhpcy5fZG9GaW5hbGl6ZSgpO3JldHVybiByfSxrZXlTaXplOjQsaXZTaXplOjQsX0VOQ19YRk9STV9NT0RFOjEsX0RFQ19YRk9STV9NT0RFOjIsX2NyZWF0ZUhlbHBlcjpmdW5jdGlvbigpe2Z1bmN0aW9uIHQodCl7cmV0dXJuXCJzdHJpbmdcIj09dHlwZW9mIHQ/bTp3fXJldHVybiBmdW5jdGlvbihyKXtyZXR1cm57ZW5jcnlwdDpmdW5jdGlvbihlLGksbil7cmV0dXJuIHQoaSkuZW5jcnlwdChyLGUsaSxuKX0sZGVjcnlwdDpmdW5jdGlvbihlLGksbil7cmV0dXJuIHQoaSkuZGVjcnlwdChyLGUsaSxuKX19fX0oKX0pLHU9KGkuU3RyZWFtQ2lwaGVyPWYuZXh0ZW5kKHtfZG9GaW5hbGl6ZTpmdW5jdGlvbigpe3ZhciB0PXRoaXMuX3Byb2Nlc3MoITApO3JldHVybiB0fSxibG9ja1NpemU6MX0pLGUubW9kZT17fSksZD1pLkJsb2NrQ2lwaGVyTW9kZT1uLmV4dGVuZCh7Y3JlYXRlRW5jcnlwdG9yOmZ1bmN0aW9uKHQscil7cmV0dXJuIHRoaXMuRW5jcnlwdG9yLmNyZWF0ZSh0LHIpfSxjcmVhdGVEZWNyeXB0b3I6ZnVuY3Rpb24odCxyKXtyZXR1cm4gdGhpcy5EZWNyeXB0b3IuY3JlYXRlKHQscil9LGluaXQ6ZnVuY3Rpb24odCxyKXt0aGlzLl9jaXBoZXI9dCx0aGlzLl9pdj1yfX0pLHY9dS5DQkM9ZnVuY3Rpb24oKXtmdW5jdGlvbiB0KHQsZSxpKXt2YXIgbj10aGlzLl9pdjtpZihuKXt2YXIgbz1uO3RoaXMuX2l2PXJ9ZWxzZSB2YXIgbz10aGlzLl9wcmV2QmxvY2s7Zm9yKHZhciBzPTA7czxpO3MrKyl0W2Urc11ePW9bc119dmFyIGU9ZC5leHRlbmQoKTtyZXR1cm4gZS5FbmNyeXB0b3I9ZS5leHRlbmQoe3Byb2Nlc3NCbG9jazpmdW5jdGlvbihyLGUpe3ZhciBpPXRoaXMuX2NpcGhlcixuPWkuYmxvY2tTaXplO3QuY2FsbCh0aGlzLHIsZSxuKSxpLmVuY3J5cHRCbG9jayhyLGUpLHRoaXMuX3ByZXZCbG9jaz1yLnNsaWNlKGUsZStuKX19KSxlLkRlY3J5cHRvcj1lLmV4dGVuZCh7cHJvY2Vzc0Jsb2NrOmZ1bmN0aW9uKHIsZSl7dmFyIGk9dGhpcy5fY2lwaGVyLG49aS5ibG9ja1NpemUsbz1yLnNsaWNlKGUsZStuKTtpLmRlY3J5cHRCbG9jayhyLGUpLHQuY2FsbCh0aGlzLHIsZSxuKSx0aGlzLl9wcmV2QmxvY2s9b319KSxlfSgpLHA9ZS5wYWQ9e30sXz1wLlBrY3M3PXtwYWQ6ZnVuY3Rpb24odCxyKXtmb3IodmFyIGU9NCpyLGk9ZS10LnNpZ0J5dGVzJWUsbj1pPDwyNHxpPDwxNnxpPDw4fGkscz1bXSxhPTA7YTxpO2ErPTQpcy5wdXNoKG4pO3ZhciBjPW8uY3JlYXRlKHMsaSk7dC5jb25jYXQoYyl9LHVucGFkOmZ1bmN0aW9uKHQpe3ZhciByPTI1NSZ0LndvcmRzW3Quc2lnQnl0ZXMtMT4+PjJdO3Quc2lnQnl0ZXMtPXJ9fSx5PShpLkJsb2NrQ2lwaGVyPWYuZXh0ZW5kKHtjZmc6Zi5jZmcuZXh0ZW5kKHttb2RlOnYscGFkZGluZzpffSkscmVzZXQ6ZnVuY3Rpb24oKXtmLnJlc2V0LmNhbGwodGhpcyk7dmFyIHQ9dGhpcy5jZmcscj10Lml2LGU9dC5tb2RlO2lmKHRoaXMuX3hmb3JtTW9kZT09dGhpcy5fRU5DX1hGT1JNX01PREUpdmFyIGk9ZS5jcmVhdGVFbmNyeXB0b3I7ZWxzZXt2YXIgaT1lLmNyZWF0ZURlY3J5cHRvcjt0aGlzLl9taW5CdWZmZXJTaXplPTF9dGhpcy5fbW9kZSYmdGhpcy5fbW9kZS5fX2NyZWF0b3I9PWk/dGhpcy5fbW9kZS5pbml0KHRoaXMsciYmci53b3Jkcyk6KHRoaXMuX21vZGU9aS5jYWxsKGUsdGhpcyxyJiZyLndvcmRzKSx0aGlzLl9tb2RlLl9fY3JlYXRvcj1pKX0sX2RvUHJvY2Vzc0Jsb2NrOmZ1bmN0aW9uKHQscil7dGhpcy5fbW9kZS5wcm9jZXNzQmxvY2sodCxyKX0sX2RvRmluYWxpemU6ZnVuY3Rpb24oKXt2YXIgdD10aGlzLmNmZy5wYWRkaW5nO2lmKHRoaXMuX3hmb3JtTW9kZT09dGhpcy5fRU5DX1hGT1JNX01PREUpe3QucGFkKHRoaXMuX2RhdGEsdGhpcy5ibG9ja1NpemUpO3ZhciByPXRoaXMuX3Byb2Nlc3MoITApfWVsc2V7dmFyIHI9dGhpcy5fcHJvY2VzcyghMCk7dC51bnBhZChyKX1yZXR1cm4gcn0sYmxvY2tTaXplOjR9KSxpLkNpcGhlclBhcmFtcz1uLmV4dGVuZCh7aW5pdDpmdW5jdGlvbih0KXt0aGlzLm1peEluKHQpfSx0b1N0cmluZzpmdW5jdGlvbih0KXtyZXR1cm4odHx8dGhpcy5mb3JtYXR0ZXIpLnN0cmluZ2lmeSh0aGlzKX19KSksZz1lLmZvcm1hdD17fSxCPWcuT3BlblNTTD17c3RyaW5naWZ5OmZ1bmN0aW9uKHQpe3ZhciByPXQuY2lwaGVydGV4dCxlPXQuc2FsdDtpZihlKXZhciBpPW8uY3JlYXRlKFsxMzk4ODkzNjg0LDE3MDEwNzY4MzFdKS5jb25jYXQoZSkuY29uY2F0KHIpO2Vsc2UgdmFyIGk9cjtyZXR1cm4gaS50b1N0cmluZyhjKX0scGFyc2U6ZnVuY3Rpb24odCl7dmFyIHI9Yy5wYXJzZSh0KSxlPXIud29yZHM7aWYoMTM5ODg5MzY4ND09ZVswXSYmMTcwMTA3NjgzMT09ZVsxXSl7dmFyIGk9by5jcmVhdGUoZS5zbGljZSgyLDQpKTtlLnNwbGljZSgwLDQpLHIuc2lnQnl0ZXMtPTE2fXJldHVybiB5LmNyZWF0ZSh7Y2lwaGVydGV4dDpyLHNhbHQ6aX0pfX0sdz1pLlNlcmlhbGl6YWJsZUNpcGhlcj1uLmV4dGVuZCh7Y2ZnOm4uZXh0ZW5kKHtmb3JtYXQ6Qn0pLGVuY3J5cHQ6ZnVuY3Rpb24odCxyLGUsaSl7aT10aGlzLmNmZy5leHRlbmQoaSk7dmFyIG49dC5jcmVhdGVFbmNyeXB0b3IoZSxpKSxvPW4uZmluYWxpemUocikscz1uLmNmZztyZXR1cm4geS5jcmVhdGUoe2NpcGhlcnRleHQ6byxrZXk6ZSxpdjpzLml2LGFsZ29yaXRobTp0LG1vZGU6cy5tb2RlLHBhZGRpbmc6cy5wYWRkaW5nLGJsb2NrU2l6ZTp0LmJsb2NrU2l6ZSxmb3JtYXR0ZXI6aS5mb3JtYXR9KX0sZGVjcnlwdDpmdW5jdGlvbih0LHIsZSxpKXtpPXRoaXMuY2ZnLmV4dGVuZChpKSxyPXRoaXMuX3BhcnNlKHIsaS5mb3JtYXQpO3ZhciBuPXQuY3JlYXRlRGVjcnlwdG9yKGUsaSkuZmluYWxpemUoci5jaXBoZXJ0ZXh0KTtyZXR1cm4gbn0sX3BhcnNlOmZ1bmN0aW9uKHQscil7cmV0dXJuXCJzdHJpbmdcIj09dHlwZW9mIHQ/ci5wYXJzZSh0LHRoaXMpOnR9fSksaz1lLmtkZj17fSxTPWsuT3BlblNTTD17ZXhlY3V0ZTpmdW5jdGlvbih0LHIsZSxpKXtpfHwoaT1vLnJhbmRvbSg4KSk7dmFyIG49bC5jcmVhdGUoe2tleVNpemU6citlfSkuY29tcHV0ZSh0LGkpLHM9by5jcmVhdGUobi53b3Jkcy5zbGljZShyKSw0KmUpO3JldHVybiBuLnNpZ0J5dGVzPTQqcix5LmNyZWF0ZSh7a2V5Om4saXY6cyxzYWx0Oml9KX19LG09aS5QYXNzd29yZEJhc2VkQ2lwaGVyPXcuZXh0ZW5kKHtjZmc6dy5jZmcuZXh0ZW5kKHtrZGY6U30pLGVuY3J5cHQ6ZnVuY3Rpb24odCxyLGUsaSl7aT10aGlzLmNmZy5leHRlbmQoaSk7dmFyIG49aS5rZGYuZXhlY3V0ZShlLHQua2V5U2l6ZSx0Lml2U2l6ZSk7aS5pdj1uLml2O3ZhciBvPXcuZW5jcnlwdC5jYWxsKHRoaXMsdCxyLG4ua2V5LGkpO3JldHVybiBvLm1peEluKG4pLG99LGRlY3J5cHQ6ZnVuY3Rpb24odCxyLGUsaSl7aT10aGlzLmNmZy5leHRlbmQoaSkscj10aGlzLl9wYXJzZShyLGkuZm9ybWF0KTt2YXIgbj1pLmtkZi5leGVjdXRlKGUsdC5rZXlTaXplLHQuaXZTaXplLHIuc2FsdCk7aS5pdj1uLml2O3ZhciBvPXcuZGVjcnlwdC5jYWxsKHRoaXMsdCxyLG4ua2V5LGkpO3JldHVybiBvfX0pfSgpLHQubW9kZS5DRkI9ZnVuY3Rpb24oKXtmdW5jdGlvbiByKHQscixlLGkpe3ZhciBuPXRoaXMuX2l2O2lmKG4pe3ZhciBvPW4uc2xpY2UoMCk7dGhpcy5faXY9dm9pZCAwfWVsc2UgdmFyIG89dGhpcy5fcHJldkJsb2NrO2kuZW5jcnlwdEJsb2NrKG8sMCk7Zm9yKHZhciBzPTA7czxlO3MrKyl0W3Irc11ePW9bc119dmFyIGU9dC5saWIuQmxvY2tDaXBoZXJNb2RlLmV4dGVuZCgpO3JldHVybiBlLkVuY3J5cHRvcj1lLmV4dGVuZCh7cHJvY2Vzc0Jsb2NrOmZ1bmN0aW9uKHQsZSl7dmFyIGk9dGhpcy5fY2lwaGVyLG49aS5ibG9ja1NpemU7ci5jYWxsKHRoaXMsdCxlLG4saSksdGhpcy5fcHJldkJsb2NrPXQuc2xpY2UoZSxlK24pfX0pLGUuRGVjcnlwdG9yPWUuZXh0ZW5kKHtwcm9jZXNzQmxvY2s6ZnVuY3Rpb24odCxlKXt2YXIgaT10aGlzLl9jaXBoZXIsbj1pLmJsb2NrU2l6ZSxvPXQuc2xpY2UoZSxlK24pO3IuY2FsbCh0aGlzLHQsZSxuLGkpLHRoaXMuX3ByZXZCbG9jaz1vfX0pLGV9KCksdC5tb2RlLkVDQj1mdW5jdGlvbigpe3ZhciByPXQubGliLkJsb2NrQ2lwaGVyTW9kZS5leHRlbmQoKTtyZXR1cm4gci5FbmNyeXB0b3I9ci5leHRlbmQoe3Byb2Nlc3NCbG9jazpmdW5jdGlvbih0LHIpe3RoaXMuX2NpcGhlci5lbmNyeXB0QmxvY2sodCxyKX19KSxyLkRlY3J5cHRvcj1yLmV4dGVuZCh7cHJvY2Vzc0Jsb2NrOmZ1bmN0aW9uKHQscil7dGhpcy5fY2lwaGVyLmRlY3J5cHRCbG9jayh0LHIpfX0pLHJ9KCksdC5wYWQuQW5zaVg5MjM9e3BhZDpmdW5jdGlvbih0LHIpe3ZhciBlPXQuc2lnQnl0ZXMsaT00KnIsbj1pLWUlaSxvPWUrbi0xO3QuY2xhbXAoKSx0LndvcmRzW28+Pj4yXXw9bjw8MjQtbyU0KjgsdC5zaWdCeXRlcys9bn0sdW5wYWQ6ZnVuY3Rpb24odCl7dmFyIHI9MjU1JnQud29yZHNbdC5zaWdCeXRlcy0xPj4+Ml07dC5zaWdCeXRlcy09cn19LHQucGFkLklzbzEwMTI2PXtwYWQ6ZnVuY3Rpb24ocixlKXt2YXIgaT00KmUsbj1pLXIuc2lnQnl0ZXMlaTtyLmNvbmNhdCh0LmxpYi5Xb3JkQXJyYXkucmFuZG9tKG4tMSkpLmNvbmNhdCh0LmxpYi5Xb3JkQXJyYXkuY3JlYXRlKFtuPDwyNF0sMSkpfSx1bnBhZDpmdW5jdGlvbih0KXt2YXIgcj0yNTUmdC53b3Jkc1t0LnNpZ0J5dGVzLTE+Pj4yXTt0LnNpZ0J5dGVzLT1yfX0sdC5wYWQuSXNvOTc5NzE9e3BhZDpmdW5jdGlvbihyLGUpe3IuY29uY2F0KHQubGliLldvcmRBcnJheS5jcmVhdGUoWzIxNDc0ODM2NDhdLDEpKSx0LnBhZC5aZXJvUGFkZGluZy5wYWQocixlKX0sdW5wYWQ6ZnVuY3Rpb24ocil7dC5wYWQuWmVyb1BhZGRpbmcudW5wYWQociksci5zaWdCeXRlcy0tfX0sdC5tb2RlLk9GQj1mdW5jdGlvbigpe3ZhciByPXQubGliLkJsb2NrQ2lwaGVyTW9kZS5leHRlbmQoKSxlPXIuRW5jcnlwdG9yPXIuZXh0ZW5kKHtwcm9jZXNzQmxvY2s6ZnVuY3Rpb24odCxyKXt2YXIgZT10aGlzLl9jaXBoZXIsaT1lLmJsb2NrU2l6ZSxuPXRoaXMuX2l2LG89dGhpcy5fa2V5c3RyZWFtO24mJihvPXRoaXMuX2tleXN0cmVhbT1uLnNsaWNlKDApLHRoaXMuX2l2PXZvaWQgMCksZS5lbmNyeXB0QmxvY2sobywwKTtmb3IodmFyIHM9MDtzPGk7cysrKXRbcitzXV49b1tzXX19KTtyZXR1cm4gci5EZWNyeXB0b3I9ZSxyfSgpLHQucGFkLk5vUGFkZGluZz17cGFkOmZ1bmN0aW9uKCl7fSx1bnBhZDpmdW5jdGlvbigpe319LGZ1bmN0aW9uKHIpe3ZhciBlPXQsaT1lLmxpYixuPWkuQ2lwaGVyUGFyYW1zLG89ZS5lbmMscz1vLkhleCxhPWUuZm9ybWF0O2EuSGV4PXtzdHJpbmdpZnk6ZnVuY3Rpb24odCl7cmV0dXJuIHQuY2lwaGVydGV4dC50b1N0cmluZyhzKX0scGFyc2U6ZnVuY3Rpb24odCl7dmFyIHI9cy5wYXJzZSh0KTtyZXR1cm4gbi5jcmVhdGUoe2NpcGhlcnRleHQ6cn0pfX19KCksZnVuY3Rpb24oKXt2YXIgcj10LGU9ci5saWIsaT1lLkJsb2NrQ2lwaGVyLG49ci5hbGdvLG89W10scz1bXSxhPVtdLGM9W10saD1bXSxsPVtdLGY9W10sdT1bXSxkPVtdLHY9W107IWZ1bmN0aW9uKCl7Zm9yKHZhciB0PVtdLHI9MDtyPDI1NjtyKyspcjwxMjg/dFtyXT1yPDwxOnRbcl09cjw8MV4yODM7Zm9yKHZhciBlPTAsaT0wLHI9MDtyPDI1NjtyKyspe3ZhciBuPWleaTw8MV5pPDwyXmk8PDNeaTw8NDtuPW4+Pj44XjI1NSZuXjk5LG9bZV09bixzW25dPWU7dmFyIHA9dFtlXSxfPXRbcF0seT10W19dLGc9MjU3KnRbbl1eMTY4NDMwMDgqbjthW2VdPWc8PDI0fGc+Pj44LGNbZV09Zzw8MTZ8Zz4+PjE2LGhbZV09Zzw8OHxnPj4+MjQsbFtlXT1nO3ZhciBnPTE2ODQzMDA5KnleNjU1MzcqX14yNTcqcF4xNjg0MzAwOCplO2Zbbl09Zzw8MjR8Zz4+PjgsdVtuXT1nPDwxNnxnPj4+MTYsZFtuXT1nPDw4fGc+Pj4yNCx2W25dPWcsZT8oZT1wXnRbdFt0W3lecF1dXSxpXj10W3RbaV1dKTplPWk9MX19KCk7dmFyIHA9WzAsMSwyLDQsOCwxNiwzMiw2NCwxMjgsMjcsNTRdLF89bi5BRVM9aS5leHRlbmQoe19kb1Jlc2V0OmZ1bmN0aW9uKCl7aWYoIXRoaXMuX25Sb3VuZHN8fHRoaXMuX2tleVByaW9yUmVzZXQhPT10aGlzLl9rZXkpe2Zvcih2YXIgdD10aGlzLl9rZXlQcmlvclJlc2V0PXRoaXMuX2tleSxyPXQud29yZHMsZT10LnNpZ0J5dGVzLzQsaT10aGlzLl9uUm91bmRzPWUrNixuPTQqKGkrMSkscz10aGlzLl9rZXlTY2hlZHVsZT1bXSxhPTA7YTxuO2ErKylpZihhPGUpc1thXT1yW2FdO2Vsc2V7dmFyIGM9c1thLTFdO2ElZT9lPjYmJmElZT09NCYmKGM9b1tjPj4+MjRdPDwyNHxvW2M+Pj4xNiYyNTVdPDwxNnxvW2M+Pj44JjI1NV08PDh8b1syNTUmY10pOihjPWM8PDh8Yz4+PjI0LGM9b1tjPj4+MjRdPDwyNHxvW2M+Pj4xNiYyNTVdPDwxNnxvW2M+Pj44JjI1NV08PDh8b1syNTUmY10sY149cFthL2V8MF08PDI0KSxzW2FdPXNbYS1lXV5jfWZvcih2YXIgaD10aGlzLl9pbnZLZXlTY2hlZHVsZT1bXSxsPTA7bDxuO2wrKyl7dmFyIGE9bi1sO2lmKGwlNCl2YXIgYz1zW2FdO2Vsc2UgdmFyIGM9c1thLTRdO2w8NHx8YTw9ND9oW2xdPWM6aFtsXT1mW29bYz4+PjI0XV1edVtvW2M+Pj4xNiYyNTVdXV5kW29bYz4+PjgmMjU1XV1edltvWzI1NSZjXV19fX0sZW5jcnlwdEJsb2NrOmZ1bmN0aW9uKHQscil7dGhpcy5fZG9DcnlwdEJsb2NrKHQscix0aGlzLl9rZXlTY2hlZHVsZSxhLGMsaCxsLG8pfSxkZWNyeXB0QmxvY2s6ZnVuY3Rpb24odCxyKXt2YXIgZT10W3IrMV07dFtyKzFdPXRbciszXSx0W3IrM109ZSx0aGlzLl9kb0NyeXB0QmxvY2sodCxyLHRoaXMuX2ludktleVNjaGVkdWxlLGYsdSxkLHYscyk7dmFyIGU9dFtyKzFdO3RbcisxXT10W3IrM10sdFtyKzNdPWV9LF9kb0NyeXB0QmxvY2s6ZnVuY3Rpb24odCxyLGUsaSxuLG8scyxhKXtmb3IodmFyIGM9dGhpcy5fblJvdW5kcyxoPXRbcl1eZVswXSxsPXRbcisxXV5lWzFdLGY9dFtyKzJdXmVbMl0sdT10W3IrM11eZVszXSxkPTQsdj0xO3Y8Yzt2Kyspe3ZhciBwPWlbaD4+PjI0XV5uW2w+Pj4xNiYyNTVdXm9bZj4+PjgmMjU1XV5zWzI1NSZ1XV5lW2QrK10sXz1pW2w+Pj4yNF1ebltmPj4+MTYmMjU1XV5vW3U+Pj44JjI1NV1ec1syNTUmaF1eZVtkKytdLHk9aVtmPj4+MjRdXm5bdT4+PjE2JjI1NV1eb1toPj4+OCYyNTVdXnNbMjU1JmxdXmVbZCsrXSxnPWlbdT4+PjI0XV5uW2g+Pj4xNiYyNTVdXm9bbD4+PjgmMjU1XV5zWzI1NSZmXV5lW2QrK107aD1wLGw9XyxmPXksdT1nfXZhciBwPShhW2g+Pj4yNF08PDI0fGFbbD4+PjE2JjI1NV08PDE2fGFbZj4+PjgmMjU1XTw8OHxhWzI1NSZ1XSleZVtkKytdLF89KGFbbD4+PjI0XTw8MjR8YVtmPj4+MTYmMjU1XTw8MTZ8YVt1Pj4+OCYyNTVdPDw4fGFbMjU1JmhdKV5lW2QrK10seT0oYVtmPj4+MjRdPDwyNHxhW3U+Pj4xNiYyNTVdPDwxNnxhW2g+Pj44JjI1NV08PDh8YVsyNTUmbF0pXmVbZCsrXSxnPShhW3U+Pj4yNF08PDI0fGFbaD4+PjE2JjI1NV08PDE2fGFbbD4+PjgmMjU1XTw8OHxhWzI1NSZmXSleZVtkKytdO3Rbcl09cCx0W3IrMV09Xyx0W3IrMl09eSx0W3IrM109Z30sa2V5U2l6ZTo4fSk7ci5BRVM9aS5fY3JlYXRlSGVscGVyKF8pfSgpLGZ1bmN0aW9uKCl7ZnVuY3Rpb24gcih0LHIpe3ZhciBlPSh0aGlzLl9sQmxvY2s+Pj50XnRoaXMuX3JCbG9jaykmcjt0aGlzLl9yQmxvY2tePWUsdGhpcy5fbEJsb2NrXj1lPDx0fWZ1bmN0aW9uIGUodCxyKXt2YXIgZT0odGhpcy5fckJsb2NrPj4+dF50aGlzLl9sQmxvY2spJnI7dGhpcy5fbEJsb2NrXj1lLHRoaXMuX3JCbG9ja149ZTw8dDtcclxufXZhciBpPXQsbj1pLmxpYixvPW4uV29yZEFycmF5LHM9bi5CbG9ja0NpcGhlcixhPWkuYWxnbyxjPVs1Nyw0OSw0MSwzMywyNSwxNyw5LDEsNTgsNTAsNDIsMzQsMjYsMTgsMTAsMiw1OSw1MSw0MywzNSwyNywxOSwxMSwzLDYwLDUyLDQ0LDM2LDYzLDU1LDQ3LDM5LDMxLDIzLDE1LDcsNjIsNTQsNDYsMzgsMzAsMjIsMTQsNiw2MSw1Myw0NSwzNywyOSwyMSwxMyw1LDI4LDIwLDEyLDRdLGg9WzE0LDE3LDExLDI0LDEsNSwzLDI4LDE1LDYsMjEsMTAsMjMsMTksMTIsNCwyNiw4LDE2LDcsMjcsMjAsMTMsMiw0MSw1MiwzMSwzNyw0Nyw1NSwzMCw0MCw1MSw0NSwzMyw0OCw0NCw0OSwzOSw1NiwzNCw1Myw0Niw0Miw1MCwzNiwyOSwzMl0sbD1bMSwyLDQsNiw4LDEwLDEyLDE0LDE1LDE3LDE5LDIxLDIzLDI1LDI3LDI4XSxmPVt7MDo4NDIxODg4LDI2ODQzNTQ1NjozMjc2OCw1MzY4NzA5MTI6ODQyMTM3OCw4MDUzMDYzNjg6MiwxMDczNzQxODI0OjUxMiwxMzQyMTc3MjgwOjg0MjE4OTAsMTYxMDYxMjczNjo4Mzg5MTIyLDE4NzkwNDgxOTI6ODM4ODYwOCwyMTQ3NDgzNjQ4OjUxNCwyNDE1OTE5MTA0OjgzODkxMjAsMjY4NDM1NDU2MDozMzI4MCwyOTUyNzkwMDE2Ojg0MjEzNzYsMzIyMTIyNTQ3MjozMjc3MCwzNDg5NjYwOTI4OjgzODg2MTAsMzc1ODA5NjM4NDowLDQwMjY1MzE4NDA6MzMyODIsMTM0MjE3NzI4OjAsNDAyNjUzMTg0Ojg0MjE4OTAsNjcxMDg4NjQwOjMzMjgyLDkzOTUyNDA5NjozMjc2OCwxMjA3OTU5NTUyOjg0MjE4ODgsMTQ3NjM5NTAwODo1MTIsMTc0NDgzMDQ2NDo4NDIxMzc4LDIwMTMyNjU5MjA6MiwyMjgxNzAxMzc2OjgzODkxMjAsMjU1MDEzNjgzMjozMzI4MCwyODE4NTcyMjg4Ojg0MjEzNzYsMzA4NzAwNzc0NDo4Mzg5MTIyLDMzNTU0NDMyMDA6ODM4ODYxMCwzNjIzODc4NjU2OjMyNzcwLDM4OTIzMTQxMTI6NTE0LDQxNjA3NDk1Njg6ODM4ODYwOCwxOjMyNzY4LDI2ODQzNTQ1NzoyLDUzNjg3MDkxMzo4NDIxODg4LDgwNTMwNjM2OTo4Mzg4NjA4LDEwNzM3NDE4MjU6ODQyMTM3OCwxMzQyMTc3MjgxOjMzMjgwLDE2MTA2MTI3Mzc6NTEyLDE4NzkwNDgxOTM6ODM4OTEyMiwyMTQ3NDgzNjQ5Ojg0MjE4OTAsMjQxNTkxOTEwNTo4NDIxMzc2LDI2ODQzNTQ1NjE6ODM4ODYxMCwyOTUyNzkwMDE3OjMzMjgyLDMyMjEyMjU0NzM6NTE0LDM0ODk2NjA5Mjk6ODM4OTEyMCwzNzU4MDk2Mzg1OjMyNzcwLDQwMjY1MzE4NDE6MCwxMzQyMTc3Mjk6ODQyMTg5MCw0MDI2NTMxODU6ODQyMTM3Niw2NzEwODg2NDE6ODM4ODYwOCw5Mzk1MjQwOTc6NTEyLDEyMDc5NTk1NTM6MzI3NjgsMTQ3NjM5NTAwOTo4Mzg4NjEwLDE3NDQ4MzA0NjU6MiwyMDEzMjY1OTIxOjMzMjgyLDIyODE3MDEzNzc6MzI3NzAsMjU1MDEzNjgzMzo4Mzg5MTIyLDI4MTg1NzIyODk6NTE0LDMwODcwMDc3NDU6ODQyMTg4OCwzMzU1NDQzMjAxOjgzODkxMjAsMzYyMzg3ODY1NzowLDM4OTIzMTQxMTM6MzMyODAsNDE2MDc0OTU2OTo4NDIxMzc4fSx7MDoxMDc0MjgyNTEyLDE2Nzc3MjE2OjE2Mzg0LDMzNTU0NDMyOjUyNDI4OCw1MDMzMTY0ODoxMDc0MjY2MTI4LDY3MTA4ODY0OjEwNzM3NDE4NDAsODM4ODYwODA6MTA3NDI4MjQ5NiwxMDA2NjMyOTY6MTA3Mzc1ODIwOCwxMTc0NDA1MTI6MTYsMTM0MjE3NzI4OjU0MDY3MiwxNTA5OTQ5NDQ6MTA3Mzc1ODIyNCwxNjc3NzIxNjA6MTA3Mzc0MTgyNCwxODQ1NDkzNzY6NTQwNjg4LDIwMTMyNjU5Mjo1MjQzMDQsMjE4MTAzODA4OjAsMjM0ODgxMDI0OjE2NDAwLDI1MTY1ODI0MDoxMDc0MjY2MTEyLDgzODg2MDg6MTA3Mzc1ODIwOCwyNTE2NTgyNDo1NDA2ODgsNDE5NDMwNDA6MTYsNTg3MjAyNTY6MTA3Mzc1ODIyNCw3NTQ5NzQ3MjoxMDc0MjgyNTEyLDkyMjc0Njg4OjEwNzM3NDE4MjQsMTA5MDUxOTA0OjUyNDI4OCwxMjU4MjkxMjA6MTA3NDI2NjEyOCwxNDI2MDYzMzY6NTI0MzA0LDE1OTM4MzU1MjowLDE3NjE2MDc2ODoxNjM4NCwxOTI5Mzc5ODQ6MTA3NDI2NjExMiwyMDk3MTUyMDA6MTA3Mzc0MTg0MCwyMjY0OTI0MTY6NTQwNjcyLDI0MzI2OTYzMjoxMDc0MjgyNDk2LDI2MDA0Njg0ODoxNjQwMCwyNjg0MzU0NTY6MCwyODUyMTI2NzI6MTA3NDI2NjEyOCwzMDE5ODk4ODg6MTA3Mzc1ODIyNCwzMTg3NjcxMDQ6MTA3NDI4MjQ5NiwzMzU1NDQzMjA6MTA3NDI2NjExMiwzNTIzMjE1MzY6MTYsMzY5MDk4NzUyOjU0MDY4OCwzODU4NzU5Njg6MTYzODQsNDAyNjUzMTg0OjE2NDAwLDQxOTQzMDQwMDo1MjQyODgsNDM2MjA3NjE2OjUyNDMwNCw0NTI5ODQ4MzI6MTA3Mzc0MTg0MCw0Njk3NjIwNDg6NTQwNjcyLDQ4NjUzOTI2NDoxMDczNzU4MjA4LDUwMzMxNjQ4MDoxMDczNzQxODI0LDUyMDA5MzY5NjoxMDc0MjgyNTEyLDI3NjgyNDA2NDo1NDA2ODgsMjkzNjAxMjgwOjUyNDI4OCwzMTAzNzg0OTY6MTA3NDI2NjExMiwzMjcxNTU3MTI6MTYzODQsMzQzOTMyOTI4OjEwNzM3NTgyMDgsMzYwNzEwMTQ0OjEwNzQyODI1MTIsMzc3NDg3MzYwOjE2LDM5NDI2NDU3NjoxMDczNzQxODI0LDQxMTA0MTc5MjoxMDc0MjgyNDk2LDQyNzgxOTAwODoxMDczNzQxODQwLDQ0NDU5NjIyNDoxMDczNzU4MjI0LDQ2MTM3MzQ0MDo1MjQzMDQsNDc4MTUwNjU2OjAsNDk0OTI3ODcyOjE2NDAwLDUxMTcwNTA4ODoxMDc0MjY2MTI4LDUyODQ4MjMwNDo1NDA2NzJ9LHswOjI2MCwxMDQ4NTc2OjAsMjA5NzE1Mjo2NzEwOTEyMCwzMTQ1NzI4OjY1Nzk2LDQxOTQzMDQ6NjU1NDAsNTI0Mjg4MDo2NzEwODg2OCw2MjkxNDU2OjY3MTc0NjYwLDczNDAwMzI6NjcxNzQ0MDAsODM4ODYwODo2NzEwODg2NCw5NDM3MTg0OjY3MTc0NjU2LDEwNDg1NzYwOjY1NzkyLDExNTM0MzM2OjY3MTc0NDA0LDEyNTgyOTEyOjY3MTA5MTI0LDEzNjMxNDg4OjY1NTM2LDE0NjgwMDY0OjQsMTU3Mjg2NDA6MjU2LDUyNDI4ODo2NzE3NDY1NiwxNTcyODY0OjY3MTc0NDA0LDI2MjE0NDA6MCwzNjcwMDE2OjY3MTA5MTIwLDQ3MTg1OTI6NjcxMDg4NjgsNTc2NzE2ODo2NTUzNiw2ODE1NzQ0OjY1NTQwLDc4NjQzMjA6MjYwLDg5MTI4OTY6NCw5OTYxNDcyOjI1NiwxMTAxMDA0ODo2NzE3NDQwMCwxMjA1ODYyNDo2NTc5NiwxMzEwNzIwMDo2NTc5MiwxNDE1NTc3Njo2NzEwOTEyNCwxNTIwNDM1Mjo2NzE3NDY2MCwxNjI1MjkyODo2NzEwODg2NCwxNjc3NzIxNjo2NzE3NDY1NiwxNzgyNTc5Mjo2NTU0MCwxODg3NDM2ODo2NTUzNiwxOTkyMjk0NDo2NzEwOTEyMCwyMDk3MTUyMDoyNTYsMjIwMjAwOTY6NjcxNzQ2NjAsMjMwNjg2NzI6NjcxMDg4NjgsMjQxMTcyNDg6MCwyNTE2NTgyNDo2NzEwOTEyNCwyNjIxNDQwMDo2NzEwODg2NCwyNzI2Mjk3Njo0LDI4MzExNTUyOjY1NzkyLDI5MzYwMTI4OjY3MTc0NDAwLDMwNDA4NzA0OjI2MCwzMTQ1NzI4MDo2NTc5NiwzMjUwNTg1Njo2NzE3NDQwNCwxNzMwMTUwNDo2NzEwODg2NCwxODM1MDA4MDoyNjAsMTkzOTg2NTY6NjcxNzQ2NTYsMjA0NDcyMzI6MCwyMTQ5NTgwODo2NTU0MCwyMjU0NDM4NDo2NzEwOTEyMCwyMzU5Mjk2MDoyNTYsMjQ2NDE1MzY6NjcxNzQ0MDQsMjU2OTAxMTI6NjU1MzYsMjY3Mzg2ODg6NjcxNzQ2NjAsMjc3ODcyNjQ6NjU3OTYsMjg4MzU4NDA6NjcxMDg4NjgsMjk4ODQ0MTY6NjcxMDkxMjQsMzA5MzI5OTI6NjcxNzQ0MDAsMzE5ODE1Njg6NCwzMzAzMDE0NDo2NTc5Mn0sezA6MjE1MTY4MjA0OCw2NTUzNjoyMTQ3NDg3ODA4LDEzMTA3Mjo0MTk4NDY0LDE5NjYwODoyMTUxNjc3OTUyLDI2MjE0NDowLDMyNzY4MDo0MTk4NDAwLDM5MzIxNjoyMTQ3NDgzNzEyLDQ1ODc1Mjo0MTk0MzY4LDUyNDI4ODoyMTQ3NDgzNjQ4LDU4OTgyNDo0MTk0MzA0LDY1NTM2MDo2NCw3MjA4OTY6MjE0NzQ4Nzc0NCw3ODY0MzI6MjE1MTY3ODAxNiw4NTE5Njg6NDE2MCw5MTc1MDQ6NDA5Niw5ODMwNDA6MjE1MTY4MjExMiwzMjc2ODoyMTQ3NDg3ODA4LDk4MzA0OjY0LDE2Mzg0MDoyMTUxNjc4MDE2LDIyOTM3NjoyMTQ3NDg3NzQ0LDI5NDkxMjo0MTk4NDAwLDM2MDQ0ODoyMTUxNjgyMTEyLDQyNTk4NDowLDQ5MTUyMDoyMTUxNjc3OTUyLDU1NzA1Njo0MDk2LDYyMjU5MjoyMTUxNjgyMDQ4LDY4ODEyODo0MTk0MzA0LDc1MzY2NDo0MTYwLDgxOTIwMDoyMTQ3NDgzNjQ4LDg4NDczNjo0MTk0MzY4LDk1MDI3Mjo0MTk4NDY0LDEwMTU4MDg6MjE0NzQ4MzcxMiwxMDQ4NTc2OjQxOTQzNjgsMTExNDExMjo0MTk4NDAwLDExNzk2NDg6MjE0NzQ4MzcxMiwxMjQ1MTg0OjAsMTMxMDcyMDo0MTYwLDEzNzYyNTY6MjE1MTY3ODAxNiwxNDQxNzkyOjIxNTE2ODIwNDgsMTUwNzMyODoyMTQ3NDg3ODA4LDE1NzI4NjQ6MjE1MTY4MjExMiwxNjM4NDAwOjIxNDc0ODM2NDgsMTcwMzkzNjoyMTUxNjc3OTUyLDE3Njk0NzI6NDE5ODQ2NCwxODM1MDA4OjIxNDc0ODc3NDQsMTkwMDU0NDo0MTk0MzA0LDE5NjYwODA6NjQsMjAzMTYxNjo0MDk2LDEwODEzNDQ6MjE1MTY3Nzk1MiwxMTQ2ODgwOjIxNTE2ODIxMTIsMTIxMjQxNjowLDEyNzc5NTI6NDE5ODQwMCwxMzQzNDg4OjQxOTQzNjgsMTQwOTAyNDoyMTQ3NDgzNjQ4LDE0NzQ1NjA6MjE0NzQ4NzgwOCwxNTQwMDk2OjY0LDE2MDU2MzI6MjE0NzQ4MzcxMiwxNjcxMTY4OjQwOTYsMTczNjcwNDoyMTQ3NDg3NzQ0LDE4MDIyNDA6MjE1MTY3ODAxNiwxODY3Nzc2OjQxNjAsMTkzMzMxMjoyMTUxNjgyMDQ4LDE5OTg4NDg6NDE5NDMwNCwyMDY0Mzg0OjQxOTg0NjR9LHswOjEyOCw0MDk2OjE3MDM5MzYwLDgxOTI6MjYyMTQ0LDEyMjg4OjUzNjg3MDkxMiwxNjM4NDo1MzcxMzMxODQsMjA0ODA6MTY3NzczNDQsMjQ1NzY6NTUzNjQ4MjU2LDI4NjcyOjI2MjI3MiwzMjc2ODoxNjc3NzIxNiwzNjg2NDo1MzcxMzMwNTYsNDA5NjA6NTM2ODcxMDQwLDQ1MDU2OjU1MzkxMDQwMCw0OTE1Mjo1NTM5MTAyNzIsNTMyNDg6MCw1NzM0NDoxNzAzOTQ4OCw2MTQ0MDo1NTM2NDgxMjgsMjA0ODoxNzAzOTQ4OCw2MTQ0OjU1MzY0ODI1NiwxMDI0MDoxMjgsMTQzMzY6MTcwMzkzNjAsMTg0MzI6MjYyMTQ0LDIyNTI4OjUzNzEzMzE4NCwyNjYyNDo1NTM5MTAyNzIsMzA3MjA6NTM2ODcwOTEyLDM0ODE2OjUzNzEzMzA1NiwzODkxMjowLDQzMDA4OjU1MzkxMDQwMCw0NzEwNDoxNjc3NzM0NCw1MTIwMDo1MzY4NzEwNDAsNTUyOTY6NTUzNjQ4MTI4LDU5MzkyOjE2Nzc3MjE2LDYzNDg4OjI2MjI3Miw2NTUzNjoyNjIxNDQsNjk2MzI6MTI4LDczNzI4OjUzNjg3MDkxMiw3NzgyNDo1NTM2NDgyNTYsODE5MjA6MTY3NzczNDQsODYwMTY6NTUzOTEwMjcyLDkwMTEyOjUzNzEzMzE4NCw5NDIwODoxNjc3NzIxNiw5ODMwNDo1NTM5MTA0MDAsMTAyNDAwOjU1MzY0ODEyOCwxMDY0OTY6MTcwMzkzNjAsMTEwNTkyOjUzNzEzMzA1NiwxMTQ2ODg6MjYyMjcyLDExODc4NDo1MzY4NzEwNDAsMTIyODgwOjAsMTI2OTc2OjE3MDM5NDg4LDY3NTg0OjU1MzY0ODI1Niw3MTY4MDoxNjc3NzIxNiw3NTc3NjoxNzAzOTM2MCw3OTg3Mjo1MzcxMzMxODQsODM5Njg6NTM2ODcwOTEyLDg4MDY0OjE3MDM5NDg4LDkyMTYwOjEyOCw5NjI1Njo1NTM5MTAyNzIsMTAwMzUyOjI2MjI3MiwxMDQ0NDg6NTUzOTEwNDAwLDEwODU0NDowLDExMjY0MDo1NTM2NDgxMjgsMTE2NzM2OjE2Nzc3MzQ0LDEyMDgzMjoyNjIxNDQsMTI0OTI4OjUzNzEzMzA1NiwxMjkwMjQ6NTM2ODcxMDQwfSx7MDoyNjg0MzU0NjQsMjU2OjgxOTIsNTEyOjI3MDUzMjYwOCw3Njg6MjcwNTQwODA4LDEwMjQ6MjY4NDQzNjQ4LDEyODA6MjA5NzE1MiwxNTM2OjIwOTcxNjAsMTc5MjoyNjg0MzU0NTYsMjA0ODowLDIzMDQ6MjY4NDQzNjU2LDI1NjA6MjEwNTM0NCwyODE2OjgsMzA3MjoyNzA1MzI2MTYsMzMyODoyMTA1MzUyLDM1ODQ6ODIwMCwzODQwOjI3MDU0MDgwMCwxMjg6MjcwNTMyNjA4LDM4NDoyNzA1NDA4MDgsNjQwOjgsODk2OjIwOTcxNTIsMTE1MjoyMTA1MzUyLDE0MDg6MjY4NDM1NDY0LDE2NjQ6MjY4NDQzNjQ4LDE5MjA6ODIwMCwyMTc2OjIwOTcxNjAsMjQzMjo4MTkyLDI2ODg6MjY4NDQzNjU2LDI5NDQ6MjcwNTMyNjE2LDMyMDA6MCwzNDU2OjI3MDU0MDgwMCwzNzEyOjIxMDUzNDQsMzk2ODoyNjg0MzU0NTYsNDA5NjoyNjg0NDM2NDgsNDM1MjoyNzA1MzI2MTYsNDYwODoyNzA1NDA4MDgsNDg2NDo4MjAwLDUxMjA6MjA5NzE1Miw1Mzc2OjI2ODQzNTQ1Niw1NjMyOjI2ODQzNTQ2NCw1ODg4OjIxMDUzNDQsNjE0NDoyMTA1MzUyLDY0MDA6MCw2NjU2OjgsNjkxMjoyNzA1MzI2MDgsNzE2ODo4MTkyLDc0MjQ6MjY4NDQzNjU2LDc2ODA6MjcwNTQwODAwLDc5MzY6MjA5NzE2MCw0MjI0OjgsNDQ4MDoyMTA1MzQ0LDQ3MzY6MjA5NzE1Miw0OTkyOjI2ODQzNTQ2NCw1MjQ4OjI2ODQ0MzY0OCw1NTA0OjgyMDAsNTc2MDoyNzA1NDA4MDgsNjAxNjoyNzA1MzI2MDgsNjI3MjoyNzA1NDA4MDAsNjUyODoyNzA1MzI2MTYsNjc4NDo4MTkyLDcwNDA6MjEwNTM1Miw3Mjk2OjIwOTcxNjAsNzU1MjowLDc4MDg6MjY4NDM1NDU2LDgwNjQ6MjY4NDQzNjU2fSx7MDoxMDQ4NTc2LDE2OjMzNTU1NDU3LDMyOjEwMjQsNDg6MTA0OTYwMSw2NDozNDYwNDAzMyw4MDowLDk2OjEsMTEyOjM0NjAzMDA5LDEyODozMzU1NTQ1NiwxNDQ6MTA0ODU3NywxNjA6MzM1NTQ0MzMsMTc2OjM0NjA0MDMyLDE5MjozNDYwMzAwOCwyMDg6MTAyNSwyMjQ6MTA0OTYwMCwyNDA6MzM1NTQ0MzIsODozNDYwMzAwOSwyNDowLDQwOjMzNTU1NDU3LDU2OjM0NjA0MDMyLDcyOjEwNDg1NzYsODg6MzM1NTQ0MzMsMTA0OjMzNTU0NDMyLDEyMDoxMDI1LDEzNjoxMDQ5NjAxLDE1MjozMzU1NTQ1NiwxNjg6MzQ2MDMwMDgsMTg0OjEwNDg1NzcsMjAwOjEwMjQsMjE2OjM0NjA0MDMzLDIzMjoxLDI0ODoxMDQ5NjAwLDI1NjozMzU1NDQzMiwyNzI6MTA0ODU3NiwyODg6MzM1NTU0NTcsMzA0OjM0NjAzMDA5LDMyMDoxMDQ4NTc3LDMzNjozMzU1NTQ1NiwzNTI6MzQ2MDQwMzIsMzY4OjEwNDk2MDEsMzg0OjEwMjUsNDAwOjM0NjA0MDMzLDQxNjoxMDQ5NjAwLDQzMjoxLDQ0ODowLDQ2NDozNDYwMzAwOCw0ODA6MzM1NTQ0MzMsNDk2OjEwMjQsMjY0OjEwNDk2MDAsMjgwOjMzNTU1NDU3LDI5NjozNDYwMzAwOSwzMTI6MSwzMjg6MzM1NTQ0MzIsMzQ0OjEwNDg1NzYsMzYwOjEwMjUsMzc2OjM0NjA0MDMyLDM5MjozMzU1NDQzMyw0MDg6MzQ2MDMwMDgsNDI0OjAsNDQwOjM0NjA0MDMzLDQ1NjoxMDQ5NjAxLDQ3MjoxMDI0LDQ4ODozMzU1NTQ1Niw1MDQ6MTA0ODU3N30sezA6MTM0MjE5ODA4LDE6MTMxMDcyLDI6MTM0MjE3NzI4LDM6MzIsNDoxMzExMDQsNToxMzQzNTA4ODAsNjoxMzQzNTA4NDgsNzoyMDQ4LDg6MTM0MzQ4ODAwLDk6MTM0MjE5Nzc2LDEwOjEzMzEyMCwxMToxMzQzNDg4MzIsMTI6MjA4MCwxMzowLDE0OjEzNDIxNzc2MCwxNToxMzMxNTIsMjE0NzQ4MzY0ODoyMDQ4LDIxNDc0ODM2NDk6MTM0MzUwODgwLDIxNDc0ODM2NTA6MTM0MjE5ODA4LDIxNDc0ODM2NTE6MTM0MjE3NzI4LDIxNDc0ODM2NTI6MTM0MzQ4ODAwLDIxNDc0ODM2NTM6MTMzMTIwLDIxNDc0ODM2NTQ6MTMzMTUyLDIxNDc0ODM2NTU6MzIsMjE0NzQ4MzY1NjoxMzQyMTc3NjAsMjE0NzQ4MzY1NzoyMDgwLDIxNDc0ODM2NTg6MTMxMTA0LDIxNDc0ODM2NTk6MTM0MzUwODQ4LDIxNDc0ODM2NjA6MCwyMTQ3NDgzNjYxOjEzNDM0ODgzMiwyMTQ3NDgzNjYyOjEzNDIxOTc3NiwyMTQ3NDgzNjYzOjEzMTA3MiwxNjoxMzMxNTIsMTc6MTM0MzUwODQ4LDE4OjMyLDE5OjIwNDgsMjA6MTM0MjE5Nzc2LDIxOjEzNDIxNzc2MCwyMjoxMzQzNDg4MzIsMjM6MTMxMDcyLDI0OjAsMjU6MTMxMTA0LDI2OjEzNDM0ODgwMCwyNzoxMzQyMTk4MDgsMjg6MTM0MzUwODgwLDI5OjEzMzEyMCwzMDoyMDgwLDMxOjEzNDIxNzcyOCwyMTQ3NDgzNjY0OjEzMTA3MiwyMTQ3NDgzNjY1OjIwNDgsMjE0NzQ4MzY2NjoxMzQzNDg4MzIsMjE0NzQ4MzY2NzoxMzMxNTIsMjE0NzQ4MzY2ODozMiwyMTQ3NDgzNjY5OjEzNDM0ODgwMCwyMTQ3NDgzNjcwOjEzNDIxNzcyOCwyMTQ3NDgzNjcxOjEzNDIxOTgwOCwyMTQ3NDgzNjcyOjEzNDM1MDg4MCwyMTQ3NDgzNjczOjEzNDIxNzc2MCwyMTQ3NDgzNjc0OjEzNDIxOTc3NiwyMTQ3NDgzNjc1OjAsMjE0NzQ4MzY3NjoxMzMxMjAsMjE0NzQ4MzY3NzoyMDgwLDIxNDc0ODM2Nzg6MTMxMTA0LDIxNDc0ODM2Nzk6MTM0MzUwODQ4fV0sdT1bNDE2MDc0OTU2OSw1Mjg0ODIzMDQsMzMwMzAxNDQsMjA2NDM4NCwxMjkwMjQsODA2NCw1MDQsMjE0NzQ4MzY3OV0sZD1hLkRFUz1zLmV4dGVuZCh7X2RvUmVzZXQ6ZnVuY3Rpb24oKXtmb3IodmFyIHQ9dGhpcy5fa2V5LHI9dC53b3JkcyxlPVtdLGk9MDtpPDU2O2krKyl7dmFyIG49Y1tpXS0xO2VbaV09cltuPj4+NV0+Pj4zMS1uJTMyJjF9Zm9yKHZhciBvPXRoaXMuX3N1YktleXM9W10scz0wO3M8MTY7cysrKXtmb3IodmFyIGE9b1tzXT1bXSxmPWxbc10saT0wO2k8MjQ7aSsrKWFbaS82fDBdfD1lWyhoW2ldLTErZiklMjhdPDwzMS1pJTYsYVs0KyhpLzZ8MCldfD1lWzI4KyhoW2krMjRdLTErZiklMjhdPDwzMS1pJTY7YVswXT1hWzBdPDwxfGFbMF0+Pj4zMTtmb3IodmFyIGk9MTtpPDc7aSsrKWFbaV09YVtpXT4+PjQqKGktMSkrMzthWzddPWFbN108PDV8YVs3XT4+PjI3fWZvcih2YXIgdT10aGlzLl9pbnZTdWJLZXlzPVtdLGk9MDtpPDE2O2krKyl1W2ldPW9bMTUtaV19LGVuY3J5cHRCbG9jazpmdW5jdGlvbih0LHIpe3RoaXMuX2RvQ3J5cHRCbG9jayh0LHIsdGhpcy5fc3ViS2V5cyl9LGRlY3J5cHRCbG9jazpmdW5jdGlvbih0LHIpe3RoaXMuX2RvQ3J5cHRCbG9jayh0LHIsdGhpcy5faW52U3ViS2V5cyl9LF9kb0NyeXB0QmxvY2s6ZnVuY3Rpb24odCxpLG4pe3RoaXMuX2xCbG9jaz10W2ldLHRoaXMuX3JCbG9jaz10W2krMV0sci5jYWxsKHRoaXMsNCwyNTI2NDUxMzUpLHIuY2FsbCh0aGlzLDE2LDY1NTM1KSxlLmNhbGwodGhpcywyLDg1ODk5MzQ1OSksZS5jYWxsKHRoaXMsOCwxNjcxMTkzNSksci5jYWxsKHRoaXMsMSwxNDMxNjU1NzY1KTtmb3IodmFyIG89MDtvPDE2O28rKyl7Zm9yKHZhciBzPW5bb10sYT10aGlzLl9sQmxvY2ssYz10aGlzLl9yQmxvY2ssaD0wLGw9MDtsPDg7bCsrKWh8PWZbbF1bKChjXnNbbF0pJnVbbF0pPj4+MF07dGhpcy5fbEJsb2NrPWMsdGhpcy5fckJsb2NrPWFeaH12YXIgZD10aGlzLl9sQmxvY2s7dGhpcy5fbEJsb2NrPXRoaXMuX3JCbG9jayx0aGlzLl9yQmxvY2s9ZCxyLmNhbGwodGhpcywxLDE0MzE2NTU3NjUpLGUuY2FsbCh0aGlzLDgsMTY3MTE5MzUpLGUuY2FsbCh0aGlzLDIsODU4OTkzNDU5KSxyLmNhbGwodGhpcywxNiw2NTUzNSksci5jYWxsKHRoaXMsNCwyNTI2NDUxMzUpLHRbaV09dGhpcy5fbEJsb2NrLHRbaSsxXT10aGlzLl9yQmxvY2t9LGtleVNpemU6MixpdlNpemU6MixibG9ja1NpemU6Mn0pO2kuREVTPXMuX2NyZWF0ZUhlbHBlcihkKTt2YXIgdj1hLlRyaXBsZURFUz1zLmV4dGVuZCh7X2RvUmVzZXQ6ZnVuY3Rpb24oKXt2YXIgdD10aGlzLl9rZXkscj10LndvcmRzO3RoaXMuX2RlczE9ZC5jcmVhdGVFbmNyeXB0b3Ioby5jcmVhdGUoci5zbGljZSgwLDIpKSksdGhpcy5fZGVzMj1kLmNyZWF0ZUVuY3J5cHRvcihvLmNyZWF0ZShyLnNsaWNlKDIsNCkpKSx0aGlzLl9kZXMzPWQuY3JlYXRlRW5jcnlwdG9yKG8uY3JlYXRlKHIuc2xpY2UoNCw2KSkpfSxlbmNyeXB0QmxvY2s6ZnVuY3Rpb24odCxyKXt0aGlzLl9kZXMxLmVuY3J5cHRCbG9jayh0LHIpLHRoaXMuX2RlczIuZGVjcnlwdEJsb2NrKHQsciksdGhpcy5fZGVzMy5lbmNyeXB0QmxvY2sodCxyKX0sZGVjcnlwdEJsb2NrOmZ1bmN0aW9uKHQscil7dGhpcy5fZGVzMy5kZWNyeXB0QmxvY2sodCxyKSx0aGlzLl9kZXMyLmVuY3J5cHRCbG9jayh0LHIpLHRoaXMuX2RlczEuZGVjcnlwdEJsb2NrKHQscil9LGtleVNpemU6NixpdlNpemU6MixibG9ja1NpemU6Mn0pO2kuVHJpcGxlREVTPXMuX2NyZWF0ZUhlbHBlcih2KX0oKSxmdW5jdGlvbigpe2Z1bmN0aW9uIHIoKXtmb3IodmFyIHQ9dGhpcy5fUyxyPXRoaXMuX2ksZT10aGlzLl9qLGk9MCxuPTA7bjw0O24rKyl7cj0ocisxKSUyNTYsZT0oZSt0W3JdKSUyNTY7dmFyIG89dFtyXTt0W3JdPXRbZV0sdFtlXT1vLGl8PXRbKHRbcl0rdFtlXSklMjU2XTw8MjQtOCpufXJldHVybiB0aGlzLl9pPXIsdGhpcy5faj1lLGl9dmFyIGU9dCxpPWUubGliLG49aS5TdHJlYW1DaXBoZXIsbz1lLmFsZ28scz1vLlJDND1uLmV4dGVuZCh7X2RvUmVzZXQ6ZnVuY3Rpb24oKXtmb3IodmFyIHQ9dGhpcy5fa2V5LHI9dC53b3JkcyxlPXQuc2lnQnl0ZXMsaT10aGlzLl9TPVtdLG49MDtuPDI1NjtuKyspaVtuXT1uO2Zvcih2YXIgbj0wLG89MDtuPDI1NjtuKyspe3ZhciBzPW4lZSxhPXJbcz4+PjJdPj4+MjQtcyU0KjgmMjU1O289KG8raVtuXSthKSUyNTY7dmFyIGM9aVtuXTtpW25dPWlbb10saVtvXT1jfXRoaXMuX2k9dGhpcy5faj0wfSxfZG9Qcm9jZXNzQmxvY2s6ZnVuY3Rpb24odCxlKXt0W2VdXj1yLmNhbGwodGhpcyl9LGtleVNpemU6OCxpdlNpemU6MH0pO2UuUkM0PW4uX2NyZWF0ZUhlbHBlcihzKTt2YXIgYT1vLlJDNERyb3A9cy5leHRlbmQoe2NmZzpzLmNmZy5leHRlbmQoe2Ryb3A6MTkyfSksX2RvUmVzZXQ6ZnVuY3Rpb24oKXtzLl9kb1Jlc2V0LmNhbGwodGhpcyk7Zm9yKHZhciB0PXRoaXMuY2ZnLmRyb3A7dD4wO3QtLSlyLmNhbGwodGhpcyl9fSk7ZS5SQzREcm9wPW4uX2NyZWF0ZUhlbHBlcihhKX0oKSx0Lm1vZGUuQ1RSR2xhZG1hbj1mdW5jdGlvbigpe2Z1bmN0aW9uIHIodCl7aWYoMjU1PT09KHQ+PjI0JjI1NSkpe3ZhciByPXQ+PjE2JjI1NSxlPXQ+PjgmMjU1LGk9MjU1JnQ7MjU1PT09cj8ocj0wLDI1NT09PWU/KGU9MCwyNTU9PT1pP2k9MDorK2kpOisrZSk6KytyLHQ9MCx0Kz1yPDwxNix0Kz1lPDw4LHQrPWl9ZWxzZSB0Kz0xPDwyNDtyZXR1cm4gdH1mdW5jdGlvbiBlKHQpe3JldHVybiAwPT09KHRbMF09cih0WzBdKSkmJih0WzFdPXIodFsxXSkpLHR9dmFyIGk9dC5saWIuQmxvY2tDaXBoZXJNb2RlLmV4dGVuZCgpLG49aS5FbmNyeXB0b3I9aS5leHRlbmQoe3Byb2Nlc3NCbG9jazpmdW5jdGlvbih0LHIpe3ZhciBpPXRoaXMuX2NpcGhlcixuPWkuYmxvY2tTaXplLG89dGhpcy5faXYscz10aGlzLl9jb3VudGVyO28mJihzPXRoaXMuX2NvdW50ZXI9by5zbGljZSgwKSx0aGlzLl9pdj12b2lkIDApLGUocyk7dmFyIGE9cy5zbGljZSgwKTtpLmVuY3J5cHRCbG9jayhhLDApO2Zvcih2YXIgYz0wO2M8bjtjKyspdFtyK2NdXj1hW2NdfX0pO3JldHVybiBpLkRlY3J5cHRvcj1uLGl9KCksZnVuY3Rpb24oKXtmdW5jdGlvbiByKCl7Zm9yKHZhciB0PXRoaXMuX1gscj10aGlzLl9DLGU9MDtlPDg7ZSsrKWFbZV09cltlXTtyWzBdPXJbMF0rMTI5NTMwNzU5Nyt0aGlzLl9ifDAsclsxXT1yWzFdKzM1NDUwNTIzNzErKHJbMF0+Pj4wPGFbMF0+Pj4wPzE6MCl8MCxyWzJdPXJbMl0rODg2MjYzMDkyKyhyWzFdPj4+MDxhWzFdPj4+MD8xOjApfDAsclszXT1yWzNdKzEyOTUzMDc1OTcrKHJbMl0+Pj4wPGFbMl0+Pj4wPzE6MCl8MCxyWzRdPXJbNF0rMzU0NTA1MjM3MSsoclszXT4+PjA8YVszXT4+PjA/MTowKXwwLHJbNV09cls1XSs4ODYyNjMwOTIrKHJbNF0+Pj4wPGFbNF0+Pj4wPzE6MCl8MCxyWzZdPXJbNl0rMTI5NTMwNzU5Nysocls1XT4+PjA8YVs1XT4+PjA/MTowKXwwLHJbN109cls3XSszNTQ1MDUyMzcxKyhyWzZdPj4+MDxhWzZdPj4+MD8xOjApfDAsdGhpcy5fYj1yWzddPj4+MDxhWzddPj4+MD8xOjA7Zm9yKHZhciBlPTA7ZTw4O2UrKyl7dmFyIGk9dFtlXStyW2VdLG49NjU1MzUmaSxvPWk+Pj4xNixzPSgobipuPj4+MTcpK24qbz4+PjE1KStvKm8saD0oKDQyOTQ5MDE3NjAmaSkqaXwwKSsoKDY1NTM1JmkpKml8MCk7Y1tlXT1zXmh9dFswXT1jWzBdKyhjWzddPDwxNnxjWzddPj4+MTYpKyhjWzZdPDwxNnxjWzZdPj4+MTYpfDAsdFsxXT1jWzFdKyhjWzBdPDw4fGNbMF0+Pj4yNCkrY1s3XXwwLHRbMl09Y1syXSsoY1sxXTw8MTZ8Y1sxXT4+PjE2KSsoY1swXTw8MTZ8Y1swXT4+PjE2KXwwLHRbM109Y1szXSsoY1syXTw8OHxjWzJdPj4+MjQpK2NbMV18MCx0WzRdPWNbNF0rKGNbM108PDE2fGNbM10+Pj4xNikrKGNbMl08PDE2fGNbMl0+Pj4xNil8MCx0WzVdPWNbNV0rKGNbNF08PDh8Y1s0XT4+PjI0KStjWzNdfDAsdFs2XT1jWzZdKyhjWzVdPDwxNnxjWzVdPj4+MTYpKyhjWzRdPDwxNnxjWzRdPj4+MTYpfDAsdFs3XT1jWzddKyhjWzZdPDw4fGNbNl0+Pj4yNCkrY1s1XXwwfXZhciBlPXQsaT1lLmxpYixuPWkuU3RyZWFtQ2lwaGVyLG89ZS5hbGdvLHM9W10sYT1bXSxjPVtdLGg9by5SYWJiaXQ9bi5leHRlbmQoe19kb1Jlc2V0OmZ1bmN0aW9uKCl7Zm9yKHZhciB0PXRoaXMuX2tleS53b3JkcyxlPXRoaXMuY2ZnLml2LGk9MDtpPDQ7aSsrKXRbaV09MTY3MTE5MzUmKHRbaV08PDh8dFtpXT4+PjI0KXw0Mjc4MjU1MzYwJih0W2ldPDwyNHx0W2ldPj4+OCk7dmFyIG49dGhpcy5fWD1bdFswXSx0WzNdPDwxNnx0WzJdPj4+MTYsdFsxXSx0WzBdPDwxNnx0WzNdPj4+MTYsdFsyXSx0WzFdPDwxNnx0WzBdPj4+MTYsdFszXSx0WzJdPDwxNnx0WzFdPj4+MTZdLG89dGhpcy5fQz1bdFsyXTw8MTZ8dFsyXT4+PjE2LDQyOTQ5MDE3NjAmdFswXXw2NTUzNSZ0WzFdLHRbM108PDE2fHRbM10+Pj4xNiw0Mjk0OTAxNzYwJnRbMV18NjU1MzUmdFsyXSx0WzBdPDwxNnx0WzBdPj4+MTYsNDI5NDkwMTc2MCZ0WzJdfDY1NTM1JnRbM10sdFsxXTw8MTZ8dFsxXT4+PjE2LDQyOTQ5MDE3NjAmdFszXXw2NTUzNSZ0WzBdXTt0aGlzLl9iPTA7Zm9yKHZhciBpPTA7aTw0O2krKylyLmNhbGwodGhpcyk7Zm9yKHZhciBpPTA7aTw4O2krKylvW2ldXj1uW2krNCY3XTtpZihlKXt2YXIgcz1lLndvcmRzLGE9c1swXSxjPXNbMV0saD0xNjcxMTkzNSYoYTw8OHxhPj4+MjQpfDQyNzgyNTUzNjAmKGE8PDI0fGE+Pj44KSxsPTE2NzExOTM1JihjPDw4fGM+Pj4yNCl8NDI3ODI1NTM2MCYoYzw8MjR8Yz4+PjgpLGY9aD4+PjE2fDQyOTQ5MDE3NjAmbCx1PWw8PDE2fDY1NTM1Jmg7b1swXV49aCxvWzFdXj1mLG9bMl1ePWwsb1szXV49dSxvWzRdXj1oLG9bNV1ePWYsb1s2XV49bCxvWzddXj11O2Zvcih2YXIgaT0wO2k8NDtpKyspci5jYWxsKHRoaXMpfX0sX2RvUHJvY2Vzc0Jsb2NrOmZ1bmN0aW9uKHQsZSl7dmFyIGk9dGhpcy5fWDtyLmNhbGwodGhpcyksc1swXT1pWzBdXmlbNV0+Pj4xNl5pWzNdPDwxNixzWzFdPWlbMl1eaVs3XT4+PjE2XmlbNV08PDE2LHNbMl09aVs0XV5pWzFdPj4+MTZeaVs3XTw8MTYsc1szXT1pWzZdXmlbM10+Pj4xNl5pWzFdPDwxNjtmb3IodmFyIG49MDtuPDQ7bisrKXNbbl09MTY3MTE5MzUmKHNbbl08PDh8c1tuXT4+PjI0KXw0Mjc4MjU1MzYwJihzW25dPDwyNHxzW25dPj4+OCksdFtlK25dXj1zW25dfSxibG9ja1NpemU6NCxpdlNpemU6Mn0pO2UuUmFiYml0PW4uX2NyZWF0ZUhlbHBlcihoKX0oKSx0Lm1vZGUuQ1RSPWZ1bmN0aW9uKCl7dmFyIHI9dC5saWIuQmxvY2tDaXBoZXJNb2RlLmV4dGVuZCgpLGU9ci5FbmNyeXB0b3I9ci5leHRlbmQoe3Byb2Nlc3NCbG9jazpmdW5jdGlvbih0LHIpe3ZhciBlPXRoaXMuX2NpcGhlcixpPWUuYmxvY2tTaXplLG49dGhpcy5faXYsbz10aGlzLl9jb3VudGVyO24mJihvPXRoaXMuX2NvdW50ZXI9bi5zbGljZSgwKSx0aGlzLl9pdj12b2lkIDApO3ZhciBzPW8uc2xpY2UoMCk7ZS5lbmNyeXB0QmxvY2socywwKSxvW2ktMV09b1tpLTFdKzF8MDtmb3IodmFyIGE9MDthPGk7YSsrKXRbcithXV49c1thXX19KTtyZXR1cm4gci5EZWNyeXB0b3I9ZSxyfSgpLGZ1bmN0aW9uKCl7ZnVuY3Rpb24gcigpe2Zvcih2YXIgdD10aGlzLl9YLHI9dGhpcy5fQyxlPTA7ZTw4O2UrKylhW2VdPXJbZV07clswXT1yWzBdKzEyOTUzMDc1OTcrdGhpcy5fYnwwLHJbMV09clsxXSszNTQ1MDUyMzcxKyhyWzBdPj4+MDxhWzBdPj4+MD8xOjApfDAsclsyXT1yWzJdKzg4NjI2MzA5MisoclsxXT4+PjA8YVsxXT4+PjA/MTowKXwwLHJbM109clszXSsxMjk1MzA3NTk3KyhyWzJdPj4+MDxhWzJdPj4+MD8xOjApfDAscls0XT1yWzRdKzM1NDUwNTIzNzErKHJbM10+Pj4wPGFbM10+Pj4wPzE6MCl8MCxyWzVdPXJbNV0rODg2MjYzMDkyKyhyWzRdPj4+MDxhWzRdPj4+MD8xOjApfDAscls2XT1yWzZdKzEyOTUzMDc1OTcrKHJbNV0+Pj4wPGFbNV0+Pj4wPzE6MCl8MCxyWzddPXJbN10rMzU0NTA1MjM3MSsocls2XT4+PjA8YVs2XT4+PjA/MTowKXwwLHRoaXMuX2I9cls3XT4+PjA8YVs3XT4+PjA/MTowO2Zvcih2YXIgZT0wO2U8ODtlKyspe3ZhciBpPXRbZV0rcltlXSxuPTY1NTM1Jmksbz1pPj4+MTYscz0oKG4qbj4+PjE3KStuKm8+Pj4xNSkrbypvLGg9KCg0Mjk0OTAxNzYwJmkpKml8MCkrKCg2NTUzNSZpKSppfDApO2NbZV09c15ofXRbMF09Y1swXSsoY1s3XTw8MTZ8Y1s3XT4+PjE2KSsoY1s2XTw8MTZ8Y1s2XT4+PjE2KXwwLHRbMV09Y1sxXSsoY1swXTw8OHxjWzBdPj4+MjQpK2NbN118MCx0WzJdPWNbMl0rKGNbMV08PDE2fGNbMV0+Pj4xNikrKGNbMF08PDE2fGNbMF0+Pj4xNil8MCx0WzNdPWNbM10rKGNbMl08PDh8Y1syXT4+PjI0KStjWzFdfDAsdFs0XT1jWzRdKyhjWzNdPDwxNnxjWzNdPj4+MTYpKyhjWzJdPDwxNnxjWzJdPj4+MTYpfDAsdFs1XT1jWzVdKyhjWzRdPDw4fGNbNF0+Pj4yNCkrY1szXXwwLHRbNl09Y1s2XSsoY1s1XTw8MTZ8Y1s1XT4+PjE2KSsoY1s0XTw8MTZ8Y1s0XT4+PjE2KXwwLHRbN109Y1s3XSsoY1s2XTw8OHxjWzZdPj4+MjQpK2NbNV18MH12YXIgZT10LGk9ZS5saWIsbj1pLlN0cmVhbUNpcGhlcixvPWUuYWxnbyxzPVtdLGE9W10sYz1bXSxoPW8uUmFiYml0TGVnYWN5PW4uZXh0ZW5kKHtfZG9SZXNldDpmdW5jdGlvbigpe3ZhciB0PXRoaXMuX2tleS53b3JkcyxlPXRoaXMuY2ZnLml2LGk9dGhpcy5fWD1bdFswXSx0WzNdPDwxNnx0WzJdPj4+MTYsdFsxXSx0WzBdPDwxNnx0WzNdPj4+MTYsdFsyXSx0WzFdPDwxNnx0WzBdPj4+MTYsdFszXSx0WzJdPDwxNnx0WzFdPj4+MTZdLG49dGhpcy5fQz1bdFsyXTw8MTZ8dFsyXT4+PjE2LDQyOTQ5MDE3NjAmdFswXXw2NTUzNSZ0WzFdLHRbM108PDE2fHRbM10+Pj4xNiw0Mjk0OTAxNzYwJnRbMV18NjU1MzUmdFsyXSx0WzBdPDwxNnx0WzBdPj4+MTYsNDI5NDkwMTc2MCZ0WzJdfDY1NTM1JnRbM10sdFsxXTw8MTZ8dFsxXT4+PjE2LDQyOTQ5MDE3NjAmdFszXXw2NTUzNSZ0WzBdXTt0aGlzLl9iPTA7Zm9yKHZhciBvPTA7bzw0O28rKylyLmNhbGwodGhpcyk7Zm9yKHZhciBvPTA7bzw4O28rKyluW29dXj1pW28rNCY3XTtpZihlKXt2YXIgcz1lLndvcmRzLGE9c1swXSxjPXNbMV0saD0xNjcxMTkzNSYoYTw8OHxhPj4+MjQpfDQyNzgyNTUzNjAmKGE8PDI0fGE+Pj44KSxsPTE2NzExOTM1JihjPDw4fGM+Pj4yNCl8NDI3ODI1NTM2MCYoYzw8MjR8Yz4+PjgpLGY9aD4+PjE2fDQyOTQ5MDE3NjAmbCx1PWw8PDE2fDY1NTM1Jmg7blswXV49aCxuWzFdXj1mLG5bMl1ePWwsblszXV49dSxuWzRdXj1oLG5bNV1ePWYsbls2XV49bCxuWzddXj11O2Zvcih2YXIgbz0wO288NDtvKyspci5jYWxsKHRoaXMpfX0sX2RvUHJvY2Vzc0Jsb2NrOmZ1bmN0aW9uKHQsZSl7dmFyIGk9dGhpcy5fWDtyLmNhbGwodGhpcyksc1swXT1pWzBdXmlbNV0+Pj4xNl5pWzNdPDwxNixzWzFdPWlbMl1eaVs3XT4+PjE2XmlbNV08PDE2LHNbMl09aVs0XV5pWzFdPj4+MTZeaVs3XTw8MTYsc1szXT1pWzZdXmlbM10+Pj4xNl5pWzFdPDwxNjtmb3IodmFyIG49MDtuPDQ7bisrKXNbbl09MTY3MTE5MzUmKHNbbl08PDh8c1tuXT4+PjI0KXw0Mjc4MjU1MzYwJihzW25dPDwyNHxzW25dPj4+OCksdFtlK25dXj1zW25dfSxibG9ja1NpemU6NCxpdlNpemU6Mn0pO2UuUmFiYml0TGVnYWN5PW4uX2NyZWF0ZUhlbHBlcihoKX0oKSx0LnBhZC5aZXJvUGFkZGluZz17cGFkOmZ1bmN0aW9uKHQscil7dmFyIGU9NCpyO3QuY2xhbXAoKSx0LnNpZ0J5dGVzKz1lLSh0LnNpZ0J5dGVzJWV8fGUpfSx1bnBhZDpmdW5jdGlvbih0KXtmb3IodmFyIHI9dC53b3JkcyxlPXQuc2lnQnl0ZXMtMTshKHJbZT4+PjJdPj4+MjQtZSU0KjgmMjU1KTspZS0tO3Quc2lnQnl0ZXM9ZSsxfX0sdH0pO1xyXG4vLyMgc291cmNlTWFwcGluZ1VSTD1jcnlwdG8tanMubWluLmpzLm1hcCJdfQ== } diff --git a/temp/quick-scripts/dst/assets/shop/script/item.js b/temp/quick-scripts/dst/assets/shop/script/item.js index bea457a..be8811f 100644 --- a/temp/quick-scripts/dst/assets/shop/script/item.js +++ b/temp/quick-scripts/dst/assets/shop/script/item.js @@ -82,4 +82,4 @@ cc._RF.pop(); }); } })(); -//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImFzc2V0c1xcc2hvcFxcc2NyaXB0XFxpdGVtLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUVNLElBQUEsS0FBd0IsRUFBRSxDQUFDLFVBQVUsRUFBbkMsT0FBTyxhQUFBLEVBQUUsUUFBUSxjQUFrQixDQUFDO0FBRzVDO0lBQXNDLDRCQUFZO0lBQWxEO1FBQUEscUVBMkJDO1FBeEJHLFdBQUssR0FBYSxJQUFJLENBQUM7UUFHdkIsVUFBSSxHQUFXLE9BQU8sQ0FBQzs7UUFvQnZCLGlCQUFpQjtJQUNyQixDQUFDO0lBcEJHLHdCQUF3QjtJQUV4QixlQUFlO0lBRWYsd0JBQUssR0FBTDtJQUVBLENBQUM7SUFFRCxRQUFRO0lBQ1IsMEJBQU8sR0FBUCxVQUFRLFFBQVE7UUFDWiw0Q0FBNEM7UUFDNUMsZ0RBQWdEO1FBQ2hELGNBQWM7UUFDZCxJQUFJO1FBQ0oseUVBQXlFO1FBQ3pFLDZCQUE2QjtRQUM3Qix5Q0FBeUM7SUFDN0MsQ0FBQztJQXJCRDtRQURDLFFBQVEsQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDOzJDQUNJO0lBR3ZCO1FBREMsUUFBUTswQ0FDYztJQU5OLFFBQVE7UUFENUIsT0FBTztPQUNhLFFBQVEsQ0EyQjVCO0lBQUQsZUFBQztDQTNCRCxBQTJCQyxDQTNCcUMsRUFBRSxDQUFDLFNBQVMsR0EyQmpEO2tCQTNCb0IsUUFBUSIsImZpbGUiOiIiLCJzb3VyY2VSb290IjoiLyIsInNvdXJjZXNDb250ZW50IjpbIlxuXG5jb25zdCB7IGNjY2xhc3MsIHByb3BlcnR5IH0gPSBjYy5fZGVjb3JhdG9yO1xuXG5AY2NjbGFzc1xuZXhwb3J0IGRlZmF1bHQgY2xhc3MgTmV3Q2xhc3MgZXh0ZW5kcyBjYy5Db21wb25lbnQge1xuXG4gICAgQHByb3BlcnR5KGNjLkxhYmVsKVxuICAgIGxhYmVsOiBjYy5MYWJlbCA9IG51bGw7XG5cbiAgICBAcHJvcGVydHlcbiAgICB0ZXh0OiBzdHJpbmcgPSAnaGVsbG8nO1xuICAgIC8vIExJRkUtQ1lDTEUgQ0FMTEJBQ0tTOlxuXG4gICAgLy8gb25Mb2FkICgpIHt9XG5cbiAgICBzdGFydCgpIHtcblxuICAgIH1cblxuICAgIC8v6LSt5Lmw5ZWG5ZOB6YGT5YW3XG4gICAgYnV5UHJvcChwcm9wTmFtZSkge1xuICAgICAgICAvLyBpZihjYy5meC5HYW1lQ29uZmlnLkdNX0lORk8uY29pbiA8IDE1MDApe1xuICAgICAgICAvLyAgICAgTWluaUdhbWVTZGsuQVBJLnNob3dUb2FzdChcIumHkeW4geS4jei2s++8jOaXoOazlei0reS5sOmBk+WFt1wiKTtcbiAgICAgICAgLy8gICAgIHJldHVybjtcbiAgICAgICAgLy8gfVxuICAgICAgICAvLyBsZXQgcHJvcFdpbmRvdyA9IHRoaXMubm9kZS5wYXJlbnQucGFyZW50LmdldENoaWxkQnlOYW1lKFwicHJvcFdpbmRvd1wiKTtcbiAgICAgICAgLy8gcHJvcFdpbmRvdy5hY3RpdmUgPSBmYWxzZTtcbiAgICAgICAgLy8gY2MuZnguR2FtZUNvbmZpZy5HTV9JTkZPLmNvaW4gLT0gMTUwMDtcbiAgICB9XG5cbiAgICAvLyB1cGRhdGUgKGR0KSB7fVxufVxuIl19 \ No newline at end of file +//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImFzc2V0c1xcc2hvcFxcc2NyaXB0XFxpdGVtLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUVNLElBQUEsS0FBd0IsRUFBRSxDQUFDLFVBQVUsRUFBbkMsT0FBTyxhQUFBLEVBQUUsUUFBUSxjQUFrQixDQUFDO0FBRzVDO0lBQXNDLDRCQUFZO0lBQWxEO1FBQUEscUVBMkJDO1FBeEJHLFdBQUssR0FBYSxJQUFJLENBQUM7UUFHdkIsVUFBSSxHQUFXLE9BQU8sQ0FBQzs7UUFvQnZCLGlCQUFpQjtJQUNyQixDQUFDO0lBcEJHLHdCQUF3QjtJQUV4QixlQUFlO0lBRWYsd0JBQUssR0FBTDtJQUVBLENBQUM7SUFFRCxRQUFRO0lBQ1IsMEJBQU8sR0FBUCxVQUFRLFFBQVE7UUFDWiw0Q0FBNEM7UUFDNUMsZ0RBQWdEO1FBQ2hELGNBQWM7UUFDZCxJQUFJO1FBQ0oseUVBQXlFO1FBQ3pFLDZCQUE2QjtRQUM3Qix5Q0FBeUM7SUFDN0MsQ0FBQztJQXJCRDtRQURDLFFBQVEsQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDOzJDQUNJO0lBR3ZCO1FBREMsUUFBUTswQ0FDYztJQU5OLFFBQVE7UUFENUIsT0FBTztPQUNhLFFBQVEsQ0EyQjVCO0lBQUQsZUFBQztDQTNCRCxBQTJCQyxDQTNCcUMsRUFBRSxDQUFDLFNBQVMsR0EyQmpEO2tCQTNCb0IsUUFBUSIsImZpbGUiOiIiLCJzb3VyY2VSb290IjoiLyIsInNvdXJjZXNDb250ZW50IjpbIlxyXG5cclxuY29uc3QgeyBjY2NsYXNzLCBwcm9wZXJ0eSB9ID0gY2MuX2RlY29yYXRvcjtcclxuXHJcbkBjY2NsYXNzXHJcbmV4cG9ydCBkZWZhdWx0IGNsYXNzIE5ld0NsYXNzIGV4dGVuZHMgY2MuQ29tcG9uZW50IHtcclxuXHJcbiAgICBAcHJvcGVydHkoY2MuTGFiZWwpXHJcbiAgICBsYWJlbDogY2MuTGFiZWwgPSBudWxsO1xyXG5cclxuICAgIEBwcm9wZXJ0eVxyXG4gICAgdGV4dDogc3RyaW5nID0gJ2hlbGxvJztcclxuICAgIC8vIExJRkUtQ1lDTEUgQ0FMTEJBQ0tTOlxyXG5cclxuICAgIC8vIG9uTG9hZCAoKSB7fVxyXG5cclxuICAgIHN0YXJ0KCkge1xyXG5cclxuICAgIH1cclxuXHJcbiAgICAvL+i0reS5sOWVhuWTgemBk+WFt1xyXG4gICAgYnV5UHJvcChwcm9wTmFtZSkge1xyXG4gICAgICAgIC8vIGlmKGNjLmZ4LkdhbWVDb25maWcuR01fSU5GTy5jb2luIDwgMTUwMCl7XHJcbiAgICAgICAgLy8gICAgIE1pbmlHYW1lU2RrLkFQSS5zaG93VG9hc3QoXCLph5HluIHkuI3otrPvvIzml6Dms5XotK3kubDpgZPlhbdcIik7XHJcbiAgICAgICAgLy8gICAgIHJldHVybjtcclxuICAgICAgICAvLyB9XHJcbiAgICAgICAgLy8gbGV0IHByb3BXaW5kb3cgPSB0aGlzLm5vZGUucGFyZW50LnBhcmVudC5nZXRDaGlsZEJ5TmFtZShcInByb3BXaW5kb3dcIik7XHJcbiAgICAgICAgLy8gcHJvcFdpbmRvdy5hY3RpdmUgPSBmYWxzZTtcclxuICAgICAgICAvLyBjYy5meC5HYW1lQ29uZmlnLkdNX0lORk8uY29pbiAtPSAxNTAwO1xyXG4gICAgfVxyXG5cclxuICAgIC8vIHVwZGF0ZSAoZHQpIHt9XHJcbn1cclxuIl19 \ No newline at end of file diff --git a/temp/quick-scripts/dst/assets/shop/script/shop.js b/temp/quick-scripts/dst/assets/shop/script/shop.js index c8e16d1..526074e 100644 --- a/temp/quick-scripts/dst/assets/shop/script/shop.js +++ b/temp/quick-scripts/dst/assets/shop/script/shop.js @@ -108,4 +108,4 @@ cc._RF.pop(); }); } })(); -//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImFzc2V0c1xcc2hvcFxcc2NyaXB0XFxzaG9wLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUVNLElBQUEsS0FBd0IsRUFBRSxDQUFDLFVBQVUsRUFBbkMsT0FBTyxhQUFBLEVBQUUsUUFBUSxjQUFrQixDQUFDO0FBRzVDO0lBQXNDLDRCQUFZO0lBQWxEO1FBQUEscUVBa0RDO1FBakRHLE1BQU07UUFFTixVQUFJLEdBQVksSUFBSSxDQUFDO1FBQ3JCLE1BQU07UUFFTixjQUFRLEdBQVksSUFBSSxDQUFDOztRQTJDekIsaUJBQWlCO0lBQ3JCLENBQUM7SUEzQ0csZUFBZTtJQUVmLHdCQUFLLEdBQUw7UUFDSSxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUM7SUFDcEIsQ0FBQztJQUNELFFBQVE7SUFDUiwyQkFBUSxHQUFSO1FBQ0ksU0FBUztRQUNULElBQU0sUUFBUSxHQUFHO1lBQ2IsRUFBRSxVQUFVLEVBQUUsYUFBYSxFQUFFLElBQUksRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFLEdBQUcsRUFBRSxLQUFLLEVBQUUsU0FBUyxFQUFFO1lBQ3pFLEVBQUUsVUFBVSxFQUFFLGFBQWEsRUFBRSxJQUFJLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUUsS0FBSyxFQUFFLEVBQUUsRUFBRTtZQUNuRSxFQUFFLFVBQVUsRUFBRSxhQUFhLEVBQUUsSUFBSSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUsSUFBSSxFQUFFLEtBQUssRUFBRSxFQUFFLEVBQUU7WUFDbkUsRUFBRSxVQUFVLEVBQUUsYUFBYSxFQUFFLElBQUksRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsRUFBRSxFQUFFO1lBQ3BFLEVBQUUsVUFBVSxFQUFFLGFBQWEsRUFBRSxJQUFJLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEVBQUUsRUFBRTtZQUNwRSxFQUFFLFVBQVUsRUFBRSxhQUFhLEVBQUUsSUFBSSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxFQUFFLEVBQUU7WUFDcEUsRUFBRSxVQUFVLEVBQUUsMkJBQTJCLEVBQUUsSUFBSSxFQUFFLFVBQVUsRUFBRSxLQUFLLEVBQUUsSUFBSSxFQUFFLEtBQUssRUFBRSxRQUFRLEVBQUU7WUFDM0YsRUFBRSxVQUFVLEVBQUUsMkJBQTJCLEVBQUUsSUFBSSxFQUFFLFVBQVUsRUFBRSxLQUFLLEVBQUUsSUFBSSxFQUFFLEtBQUssRUFBRSxFQUFFLEVBQUU7U0FDeEYsQ0FBQztRQUNGLEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLE1BQU0sRUFBRSxDQUFDLEVBQUUsRUFBRTtZQUM5RCxJQUFNLFVBQVUsR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsWUFBWSxDQUFDLEVBQUUsQ0FBQyxNQUFNLENBQUMsQ0FBQztZQUNqRixJQUFNLEtBQUssR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsWUFBWSxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsQ0FBQztZQUMzRSxJQUFNLEtBQUssR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsWUFBWSxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsQ0FBQztZQUMzRSxJQUFNLE9BQU8sR0FBRyxRQUFRLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO1lBQ2hDLElBQUksVUFBVSxJQUFJLE9BQU8sRUFBRTtnQkFDdkIsdURBQXVEO2FBQzFEO1lBQ0QsSUFBSSxLQUFLLElBQUksT0FBTyxFQUFFO2dCQUNsQixLQUFLLENBQUMsTUFBTSxHQUFHLENBQUMsT0FBTyxDQUFDLEtBQUssR0FBRyxHQUFHLENBQUMsQ0FBQyxRQUFRLEVBQUUsR0FBRyxHQUFHLENBQUM7YUFDekQ7WUFDRCxJQUFJLEtBQUssSUFBSSxPQUFPLEVBQUU7Z0JBQ2xCLEtBQUssQ0FBQyxNQUFNLEdBQUcsT0FBTyxDQUFDLElBQUksQ0FBQzthQUMvQjtTQUNKO0lBQ0wsQ0FBQztJQUdELFFBQVE7SUFDUiw0QkFBUyxHQUFUO1FBQ0ksT0FBTztRQUNQLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUM7SUFDeEIsQ0FBQztJQTVDRDtRQURDLFFBQVEsQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDOzBDQUNHO0lBR3JCO1FBREMsUUFBUSxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUM7OENBQ087SUFOUixRQUFRO1FBRDVCLE9BQU87T0FDYSxRQUFRLENBa0Q1QjtJQUFELGVBQUM7Q0FsREQsQUFrREMsQ0FsRHFDLEVBQUUsQ0FBQyxTQUFTLEdBa0RqRDtrQkFsRG9CLFFBQVEiLCJmaWxlIjoiIiwic291cmNlUm9vdCI6Ii8iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgTGlzdCBmcm9tIFwiLi4vLi4vU2NyaXB0L21vZHVsZS9SYW5rTGlzdC9MaXN0XCI7XG5cbmNvbnN0IHsgY2NjbGFzcywgcHJvcGVydHkgfSA9IGNjLl9kZWNvcmF0b3I7XG5cbkBjY2NsYXNzXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBOZXdDbGFzcyBleHRlbmRzIGNjLkNvbXBvbmVudCB7XG4gICAgLy/llYblupfnlYzpnaJcbiAgICBAcHJvcGVydHkoY2MuTm9kZSlcbiAgICBzaG9wOiBjYy5Ob2RlID0gbnVsbDtcbiAgICAvL+WVhuWTgeWIl+ihqFxuICAgIEBwcm9wZXJ0eShjYy5Ob2RlKVxuICAgIGl0ZW1MaXN0OiBjYy5Ob2RlID0gbnVsbDtcbiAgICAvLyBvbkxvYWQgKCkge31cblxuICAgIHN0YXJ0KCkge1xuICAgICAgICB0aGlzLm9wZW5TaG9wKCk7XG4gICAgfVxuICAgIC8v5omT5byA5ZWG5bqX55WM6Z2iXG4gICAgb3BlblNob3AoKSB7XG4gICAgICAgIC8vIOWVhuWTgeaVsOaNruaVsOe7hFxuICAgICAgICBjb25zdCBwcm9kdWN0cyA9IFtcbiAgICAgICAgICAgIHsgcHJvZHVjdF9pZDogXCJnb2xkX3BhY2tfMVwiLCBuYW1lOiBcIumHkeW4geWMhTFcIiwgcHJpY2U6IDYwMCwgdGl0bGU6IFwiM3gy5YWt5qGj6YeR5biBXCIgfSxcbiAgICAgICAgICAgIHsgcHJvZHVjdF9pZDogXCJnb2xkX3BhY2tfMlwiLCBuYW1lOiBcIumHkeW4geWMhTJcIiwgcHJpY2U6IDM2MDAsIHRpdGxlOiBcIlwiIH0sXG4gICAgICAgICAgICB7IHByb2R1Y3RfaWQ6IFwiZ29sZF9wYWNrXzNcIiwgbmFtZTogXCLph5HluIHljIUzXCIsIHByaWNlOiA2ODAwLCB0aXRsZTogXCJcIiB9LFxuICAgICAgICAgICAgeyBwcm9kdWN0X2lkOiBcImdvbGRfcGFja180XCIsIG5hbWU6IFwi6YeR5biB5YyFNFwiLCBwcmljZTogMTI4MDAsIHRpdGxlOiBcIlwiIH0sXG4gICAgICAgICAgICB7IHByb2R1Y3RfaWQ6IFwiZ29sZF9wYWNrXzVcIiwgbmFtZTogXCLph5HluIHljIU1XCIsIHByaWNlOiAzMjgwMCwgdGl0bGU6IFwiXCIgfSxcbiAgICAgICAgICAgIHsgcHJvZHVjdF9pZDogXCJnb2xkX3BhY2tfNlwiLCBuYW1lOiBcIumHkeW4geWMhTZcIiwgcHJpY2U6IDY0ODAwLCB0aXRsZTogXCJcIiB9LFxuICAgICAgICAgICAgeyBwcm9kdWN0X2lkOiBcInVubGltaXRlZF9oZWFsdGhfYnVuZGxlXzFcIiwgbmFtZTogXCLml6DpmZDkvZPlipvnu4TlkIjljIUxXCIsIHByaWNlOiAxODAwLCB0aXRsZTogXCIz5Liq5qiq54mI56S85YyFXCIgfSxcbiAgICAgICAgICAgIHsgcHJvZHVjdF9pZDogXCJ1bmxpbWl0ZWRfaGVhbHRoX2J1bmRsZV8yXCIsIG5hbWU6IFwi5peg6ZmQ5L2T5Yqb57uE5ZCI5YyFMlwiLCBwcmljZTogNjYwMCwgdGl0bGU6IFwiXCIgfVxuICAgICAgICBdO1xuICAgICAgICBmb3IgKGxldCBpID0gMTsgaSA8PSA4ICYmIGkgPCB0aGlzLml0ZW1MaXN0LmNoaWxkcmVuLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICBjb25zdCBzcHJpdGVDb21wID0gdGhpcy5pdGVtTGlzdC5jaGlsZHJlbltpXS5jaGlsZHJlblswXS5nZXRDb21wb25lbnQoY2MuU3ByaXRlKTtcbiAgICAgICAgICAgIGNvbnN0IHByaWNlID0gdGhpcy5pdGVtTGlzdC5jaGlsZHJlbltpXS5jaGlsZHJlblsxXS5nZXRDb21wb25lbnQoY2MuTGFiZWwpO1xuICAgICAgICAgICAgY29uc3QgdGl0bGUgPSB0aGlzLml0ZW1MaXN0LmNoaWxkcmVuW2ldLmNoaWxkcmVuWzJdLmdldENvbXBvbmVudChjYy5MYWJlbCk7XG4gICAgICAgICAgICBjb25zdCBwcm9kdWN0ID0gcHJvZHVjdHNbaSAtIDFdO1xuICAgICAgICAgICAgaWYgKHNwcml0ZUNvbXAgJiYgcHJvZHVjdCkge1xuICAgICAgICAgICAgICAgIC8vIFRPRE86IOagueaNriBwcm9kdWN0X2lkIOaIliBuYW1lIOiuvue9riBzcHJpdGVDb21wLnNwcml0ZUZyYW1lXG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAocHJpY2UgJiYgcHJvZHVjdCkge1xuICAgICAgICAgICAgICAgIHByaWNlLnN0cmluZyA9IChwcm9kdWN0LnByaWNlIC8gMTAwKS50b1N0cmluZygpICsgXCLlhYNcIjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmICh0aXRsZSAmJiBwcm9kdWN0KSB7XG4gICAgICAgICAgICAgICAgdGl0bGUuc3RyaW5nID0gcHJvZHVjdC5uYW1lO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG5cbiAgICAvL+WFs+mXreWVhuW6l+eVjOmdolxuICAgIGNsb3NlU2hvcCgpIHtcbiAgICAgICAgLy/plIDmr4HpooTliLbkvZNcbiAgICAgICAgdGhpcy5zaG9wLmRlc3Ryb3koKTtcbiAgICB9XG5cbiAgICAvLyB1cGRhdGUgKGR0KSB7fVxufVxuIl19 \ No newline at end of file +//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImFzc2V0c1xcc2hvcFxcc2NyaXB0XFxzaG9wLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUVNLElBQUEsS0FBd0IsRUFBRSxDQUFDLFVBQVUsRUFBbkMsT0FBTyxhQUFBLEVBQUUsUUFBUSxjQUFrQixDQUFDO0FBRzVDO0lBQXNDLDRCQUFZO0lBQWxEO1FBQUEscUVBa0RDO1FBakRHLE1BQU07UUFFTixVQUFJLEdBQVksSUFBSSxDQUFDO1FBQ3JCLE1BQU07UUFFTixjQUFRLEdBQVksSUFBSSxDQUFDOztRQTJDekIsaUJBQWlCO0lBQ3JCLENBQUM7SUEzQ0csZUFBZTtJQUVmLHdCQUFLLEdBQUw7UUFDSSxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUM7SUFDcEIsQ0FBQztJQUNELFFBQVE7SUFDUiwyQkFBUSxHQUFSO1FBQ0ksU0FBUztRQUNULElBQU0sUUFBUSxHQUFHO1lBQ2IsRUFBRSxVQUFVLEVBQUUsYUFBYSxFQUFFLElBQUksRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFLEdBQUcsRUFBRSxLQUFLLEVBQUUsU0FBUyxFQUFFO1lBQ3pFLEVBQUUsVUFBVSxFQUFFLGFBQWEsRUFBRSxJQUFJLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUUsS0FBSyxFQUFFLEVBQUUsRUFBRTtZQUNuRSxFQUFFLFVBQVUsRUFBRSxhQUFhLEVBQUUsSUFBSSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUsSUFBSSxFQUFFLEtBQUssRUFBRSxFQUFFLEVBQUU7WUFDbkUsRUFBRSxVQUFVLEVBQUUsYUFBYSxFQUFFLElBQUksRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsRUFBRSxFQUFFO1lBQ3BFLEVBQUUsVUFBVSxFQUFFLGFBQWEsRUFBRSxJQUFJLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEVBQUUsRUFBRTtZQUNwRSxFQUFFLFVBQVUsRUFBRSxhQUFhLEVBQUUsSUFBSSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxFQUFFLEVBQUU7WUFDcEUsRUFBRSxVQUFVLEVBQUUsMkJBQTJCLEVBQUUsSUFBSSxFQUFFLFVBQVUsRUFBRSxLQUFLLEVBQUUsSUFBSSxFQUFFLEtBQUssRUFBRSxRQUFRLEVBQUU7WUFDM0YsRUFBRSxVQUFVLEVBQUUsMkJBQTJCLEVBQUUsSUFBSSxFQUFFLFVBQVUsRUFBRSxLQUFLLEVBQUUsSUFBSSxFQUFFLEtBQUssRUFBRSxFQUFFLEVBQUU7U0FDeEYsQ0FBQztRQUNGLEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLE1BQU0sRUFBRSxDQUFDLEVBQUUsRUFBRTtZQUM5RCxJQUFNLFVBQVUsR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsWUFBWSxDQUFDLEVBQUUsQ0FBQyxNQUFNLENBQUMsQ0FBQztZQUNqRixJQUFNLEtBQUssR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsWUFBWSxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsQ0FBQztZQUMzRSxJQUFNLEtBQUssR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsWUFBWSxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsQ0FBQztZQUMzRSxJQUFNLE9BQU8sR0FBRyxRQUFRLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO1lBQ2hDLElBQUksVUFBVSxJQUFJLE9BQU8sRUFBRTtnQkFDdkIsdURBQXVEO2FBQzFEO1lBQ0QsSUFBSSxLQUFLLElBQUksT0FBTyxFQUFFO2dCQUNsQixLQUFLLENBQUMsTUFBTSxHQUFHLENBQUMsT0FBTyxDQUFDLEtBQUssR0FBRyxHQUFHLENBQUMsQ0FBQyxRQUFRLEVBQUUsR0FBRyxHQUFHLENBQUM7YUFDekQ7WUFDRCxJQUFJLEtBQUssSUFBSSxPQUFPLEVBQUU7Z0JBQ2xCLEtBQUssQ0FBQyxNQUFNLEdBQUcsT0FBTyxDQUFDLElBQUksQ0FBQzthQUMvQjtTQUNKO0lBQ0wsQ0FBQztJQUdELFFBQVE7SUFDUiw0QkFBUyxHQUFUO1FBQ0ksT0FBTztRQUNQLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUM7SUFDeEIsQ0FBQztJQTVDRDtRQURDLFFBQVEsQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDOzBDQUNHO0lBR3JCO1FBREMsUUFBUSxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUM7OENBQ087SUFOUixRQUFRO1FBRDVCLE9BQU87T0FDYSxRQUFRLENBa0Q1QjtJQUFELGVBQUM7Q0FsREQsQUFrREMsQ0FsRHFDLEVBQUUsQ0FBQyxTQUFTLEdBa0RqRDtrQkFsRG9CLFFBQVEiLCJmaWxlIjoiIiwic291cmNlUm9vdCI6Ii8iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgTGlzdCBmcm9tIFwiLi4vLi4vU2NyaXB0L21vZHVsZS9SYW5rTGlzdC9MaXN0XCI7XHJcblxyXG5jb25zdCB7IGNjY2xhc3MsIHByb3BlcnR5IH0gPSBjYy5fZGVjb3JhdG9yO1xyXG5cclxuQGNjY2xhc3NcclxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgTmV3Q2xhc3MgZXh0ZW5kcyBjYy5Db21wb25lbnQge1xyXG4gICAgLy/llYblupfnlYzpnaJcclxuICAgIEBwcm9wZXJ0eShjYy5Ob2RlKVxyXG4gICAgc2hvcDogY2MuTm9kZSA9IG51bGw7XHJcbiAgICAvL+WVhuWTgeWIl+ihqFxyXG4gICAgQHByb3BlcnR5KGNjLk5vZGUpXHJcbiAgICBpdGVtTGlzdDogY2MuTm9kZSA9IG51bGw7XHJcbiAgICAvLyBvbkxvYWQgKCkge31cclxuXHJcbiAgICBzdGFydCgpIHtcclxuICAgICAgICB0aGlzLm9wZW5TaG9wKCk7XHJcbiAgICB9XHJcbiAgICAvL+aJk+W8gOWVhuW6l+eVjOmdolxyXG4gICAgb3BlblNob3AoKSB7XHJcbiAgICAgICAgLy8g5ZWG5ZOB5pWw5o2u5pWw57uEXHJcbiAgICAgICAgY29uc3QgcHJvZHVjdHMgPSBbXHJcbiAgICAgICAgICAgIHsgcHJvZHVjdF9pZDogXCJnb2xkX3BhY2tfMVwiLCBuYW1lOiBcIumHkeW4geWMhTFcIiwgcHJpY2U6IDYwMCwgdGl0bGU6IFwiM3gy5YWt5qGj6YeR5biBXCIgfSxcclxuICAgICAgICAgICAgeyBwcm9kdWN0X2lkOiBcImdvbGRfcGFja18yXCIsIG5hbWU6IFwi6YeR5biB5YyFMlwiLCBwcmljZTogMzYwMCwgdGl0bGU6IFwiXCIgfSxcclxuICAgICAgICAgICAgeyBwcm9kdWN0X2lkOiBcImdvbGRfcGFja18zXCIsIG5hbWU6IFwi6YeR5biB5YyFM1wiLCBwcmljZTogNjgwMCwgdGl0bGU6IFwiXCIgfSxcclxuICAgICAgICAgICAgeyBwcm9kdWN0X2lkOiBcImdvbGRfcGFja180XCIsIG5hbWU6IFwi6YeR5biB5YyFNFwiLCBwcmljZTogMTI4MDAsIHRpdGxlOiBcIlwiIH0sXHJcbiAgICAgICAgICAgIHsgcHJvZHVjdF9pZDogXCJnb2xkX3BhY2tfNVwiLCBuYW1lOiBcIumHkeW4geWMhTVcIiwgcHJpY2U6IDMyODAwLCB0aXRsZTogXCJcIiB9LFxyXG4gICAgICAgICAgICB7IHByb2R1Y3RfaWQ6IFwiZ29sZF9wYWNrXzZcIiwgbmFtZTogXCLph5HluIHljIU2XCIsIHByaWNlOiA2NDgwMCwgdGl0bGU6IFwiXCIgfSxcclxuICAgICAgICAgICAgeyBwcm9kdWN0X2lkOiBcInVubGltaXRlZF9oZWFsdGhfYnVuZGxlXzFcIiwgbmFtZTogXCLml6DpmZDkvZPlipvnu4TlkIjljIUxXCIsIHByaWNlOiAxODAwLCB0aXRsZTogXCIz5Liq5qiq54mI56S85YyFXCIgfSxcclxuICAgICAgICAgICAgeyBwcm9kdWN0X2lkOiBcInVubGltaXRlZF9oZWFsdGhfYnVuZGxlXzJcIiwgbmFtZTogXCLml6DpmZDkvZPlipvnu4TlkIjljIUyXCIsIHByaWNlOiA2NjAwLCB0aXRsZTogXCJcIiB9XHJcbiAgICAgICAgXTtcclxuICAgICAgICBmb3IgKGxldCBpID0gMTsgaSA8PSA4ICYmIGkgPCB0aGlzLml0ZW1MaXN0LmNoaWxkcmVuLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgICAgIGNvbnN0IHNwcml0ZUNvbXAgPSB0aGlzLml0ZW1MaXN0LmNoaWxkcmVuW2ldLmNoaWxkcmVuWzBdLmdldENvbXBvbmVudChjYy5TcHJpdGUpO1xyXG4gICAgICAgICAgICBjb25zdCBwcmljZSA9IHRoaXMuaXRlbUxpc3QuY2hpbGRyZW5baV0uY2hpbGRyZW5bMV0uZ2V0Q29tcG9uZW50KGNjLkxhYmVsKTtcclxuICAgICAgICAgICAgY29uc3QgdGl0bGUgPSB0aGlzLml0ZW1MaXN0LmNoaWxkcmVuW2ldLmNoaWxkcmVuWzJdLmdldENvbXBvbmVudChjYy5MYWJlbCk7XHJcbiAgICAgICAgICAgIGNvbnN0IHByb2R1Y3QgPSBwcm9kdWN0c1tpIC0gMV07XHJcbiAgICAgICAgICAgIGlmIChzcHJpdGVDb21wICYmIHByb2R1Y3QpIHtcclxuICAgICAgICAgICAgICAgIC8vIFRPRE86IOagueaNriBwcm9kdWN0X2lkIOaIliBuYW1lIOiuvue9riBzcHJpdGVDb21wLnNwcml0ZUZyYW1lXHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgaWYgKHByaWNlICYmIHByb2R1Y3QpIHtcclxuICAgICAgICAgICAgICAgIHByaWNlLnN0cmluZyA9IChwcm9kdWN0LnByaWNlIC8gMTAwKS50b1N0cmluZygpICsgXCLlhYNcIjtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBpZiAodGl0bGUgJiYgcHJvZHVjdCkge1xyXG4gICAgICAgICAgICAgICAgdGl0bGUuc3RyaW5nID0gcHJvZHVjdC5uYW1lO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuXHJcbiAgICAvL+WFs+mXreWVhuW6l+eVjOmdolxyXG4gICAgY2xvc2VTaG9wKCkge1xyXG4gICAgICAgIC8v6ZSA5q+B6aKE5Yi25L2TXHJcbiAgICAgICAgdGhpcy5zaG9wLmRlc3Ryb3koKTtcclxuICAgIH1cclxuXHJcbiAgICAvLyB1cGRhdGUgKGR0KSB7fVxyXG59XHJcbiJdfQ== \ No newline at end of file diff --git a/temp/quick-scripts/src/assets/Script/GameManager.js b/temp/quick-scripts/src/assets/Script/GameManager.js index 699782e..ab4b5f8 100644 --- a/temp/quick-scripts/src/assets/Script/GameManager.js +++ b/temp/quick-scripts/src/assets/Script/GameManager.js @@ -76,7 +76,7 @@ var GameManager = /** @class */ (function (_super) { var path2 = 'prefab/wall'; cc.resources.loadDir(path, cc.Prefab, function (err, assets) { if (err) { - console.error('动态加载 Prefab 失败:', err); + console.log('动态加载 block 失败:', err); cc.director.loadScene("LoadScene"); return; } @@ -88,7 +88,7 @@ var GameManager = /** @class */ (function (_super) { }); cc.resources.loadDir(path2, cc.Prefab, function (err, assets) { if (err) { - console.error('动态加载 Prefab 失败:', err); + console.log('动态加载 wall 失败:', err); cc.director.loadScene("LoadScene"); return; } @@ -98,15 +98,6 @@ var GameManager = /** @class */ (function (_super) { console.log('墙加载成功,共加载了', _this.Wall_Prefab.length, '个墙'); _this.setWallPrefabSort(); }); - // debugger; - // setTimeout(() => { - // cc.director.preloadScene("HomeScene", (err) => { - // if (err) { - // console.error('预加载 HomeScene 场景失败:', err); - // return; - // } - // }); - // }, 1000); // 检测微信小游戏切到后台 if (cc.sys.platform === cc.sys.WECHAT_GAME) { //@ts-ignore diff --git a/temp/quick-scripts/src/assets/Script/GameManager.js.map b/temp/quick-scripts/src/assets/Script/GameManager.js.map index 7ae4554..14edc38 100644 --- a/temp/quick-scripts/src/assets/Script/GameManager.js.map +++ b/temp/quick-scripts/src/assets/Script/GameManager.js.map @@ -1,5 +1 @@ -<<<<<<< HEAD -{"version":3,"sources":["assets\\Script\\GameManager.ts"],"names":[],"mappings":";;;;;AAAA,oBAAoB;AACpB,wEAAwE;AACxE,mBAAmB;AACnB,kFAAkF;AAClF,8BAA8B;AAC9B,kFAAkF;;;;;;;;;;;;;;;;;;;;;AAGlF,iDAAgD;AAE1C,IAAA,KAAsB,EAAE,CAAC,UAAU,EAAlC,OAAO,aAAA,EAAE,QAAQ,cAAiB,CAAC;AAG1C;IAAyC,+BAAY;IAArD;QAAA,qEA0pBC;QAvpBG,WAAK,GAAa,IAAI,CAAC;QAGvB,UAAI,GAAW,OAAO,CAAC;QAIvB,iBAAW,GAAsB,EAAE,CAAC;QAGpC,iBAAW,GAAsB,EAAE,CAAC;QAGpC,iBAAW,GAA2B,EAAE,CAAC;QAGzC,yDAAyD;QACzD,mDAAmD;QAEnD,WAAK,GAAY,KAAK,CAAC;QACvB,WAAK,GAAY,KAAK,CAAC;QACvB,WAAK,GAAY,KAAK,CAAC;QACvB,WAAK,GAAY,KAAK,CAAC;QACvB,WAAK,GAAY,KAAK,CAAC;;IAgoB3B,CAAC;oBA1pBoB,WAAW;IA+B5B,wBAAwB;IAExB,4BAAM,GAAN;QAAA,iBA4EC;QA1EG,MAAM,CAAC,OAAO,EAAE,CAAC;QACjB,IAAI,CAAC,UAAU,GAAG,CAAC,CAAC;QACpB,IAAI,CAAC,gBAAgB,EAAE,CAAC;QACxB,EAAE,CAAC,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC5B,EAAE,CAAC,EAAE,CAAC,UAAU,CAAC,OAAO,CAAC,SAAS,GAAG,KAAK,CAAC;QAC3C,IAAI,CAAC,eAAe,EAAE,CAAC;QACvB,OAAO,CAAC,GAAG,CAAC,MAAM,EAAC,EAAE,CAAC,EAAE,CAAC,UAAU,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;QACvD,EAAE,CAAC,EAAE,CAAC,YAAY,CAAC,SAAS,CAAC,aAAa,EAAE,CAAC;QAE7C,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,GAAE,KAAK,CAAC;QACtE,UAAU,CAAC;YACP,KAAI,CAAC,YAAY,EAAE,CAAC;QACxB,CAAC,EAAE,GAAG,CAAC,CAAC;QAGR,IAAI,aAAW,CAAC,SAAS,IAAI,IAAI,EAAE;YAC/B,aAAW,CAAC,SAAS,GAAG,IAAI,CAAC;YAC7B,EAAE,CAAC,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;SACzC;aACI;YACD,OAAO;SACV;QAED,IAAM,IAAI,GAAG,cAAc,CAAC;QAC5B,IAAM,KAAK,GAAG,aAAa,CAAC;QAC5B,EAAE,CAAC,SAAS,CAAC,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC,MAAM,EAAE,UAAC,GAAG,EAAE,MAAmB;YAC3D,IAAI,GAAG,EAAE;gBAEL,OAAO,CAAC,KAAK,CAAC,iBAAiB,EAAE,GAAG,CAAC,CAAC;gBACtC,EAAE,CAAC,QAAQ,CAAC,SAAS,CAAC,WAAW,CAAC,CAAC;gBACnC,OAAO;aACV;YACD,8BAA8B;YAC9B,KAAI,CAAC,WAAW,GAAG,MAAM,CAAC;YAC1B,KAAI,CAAC,OAAO,EAAE,CAAC;YACf,KAAI,CAAC,KAAK,GAAG,IAAI,CAAC;QACtB,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,SAAS,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,MAAM,EAAE,UAAC,GAAG,EAAE,MAAmB;YAC5D,IAAI,GAAG,EAAE;gBACL,OAAO,CAAC,KAAK,CAAC,iBAAiB,EAAE,GAAG,CAAC,CAAC;gBACtC,EAAE,CAAC,QAAQ,CAAC,SAAS,CAAC,WAAW,CAAC,CAAC;gBACnC,OAAO;aACV;YACD,8BAA8B;YAC9B,KAAI,CAAC,WAAW,GAAG,MAAM,CAAC;YAC1B,KAAI,CAAC,KAAK,GAAG,IAAI,CAAC;YAClB,KAAI,CAAC,iBAAiB,EAAE,CAAC;QAC7B,CAAC,CAAC,CAAC;QAEH,YAAY;QAEZ,qBAAqB;QACrB,uDAAuD;QACvD,qBAAqB;QACrB,yDAAyD;QACzD,sBAAsB;QACtB,YAAY;QACZ,UAAU;QACV,YAAY;QAEJ,cAAc;QACtB,IAAI,EAAE,CAAC,GAAG,CAAC,QAAQ,KAAK,EAAE,CAAC,GAAG,CAAC,WAAW,EAAE;YACxC,YAAY;YACZ,EAAE,CAAC,MAAM,CAAC;gBACN,KAAI,CAAC,MAAM,EAAE,CAAC;YAClB,CAAC,CAAC,CAAC;YACH,cAAc;YACd,YAAY;YACZ,EAAE,CAAC,MAAM,CAAC;gBACN,KAAI,CAAC,MAAM,EAAE,CAAC;YAClB,CAAC,CAAC,CAAC;SACN;IAEL,CAAC;IAED,4BAAM,GAAN;QACI,EAAE,CAAC,WAAW,CAAC,SAAS,EAAE,CAAC;QAC3B,EAAE,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC;IACpB,CAAC;IAED,4BAAM,GAAN;QACI,EAAE,CAAC,WAAW,CAAC,WAAW,EAAE,CAAC;QAC7B,EAAE,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC;IACrB,CAAC;IAED,yCAAmB,GAAnB;IACA,CAAC;IAKD,uCAAiB,GAAjB;QACI,IAAM,KAAK,GAAG,CAAC,MAAM,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,EAAC,OAAO,EAAC,IAAI,EAAC,QAAQ,EAAC,SAAS,CAAC,CAAC;QACxF,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,UAAC,CAAC,EAAE,CAAC;YACvB,IAAM,MAAM,GAAG,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;YACrC,IAAM,MAAM,GAAG,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;YACrC,IAAI,MAAM,KAAK,CAAC,CAAC;gBAAE,OAAO,CAAC,CAAC;YAC5B,IAAI,MAAM,KAAK,CAAC,CAAC;gBAAE,OAAO,CAAC,CAAC,CAAC;YAC7B,OAAO,MAAM,GAAG,MAAM,CAAC;QAC3B,CAAC,CAAC,CAAC;IAEP,CAAC;IAED,qCAAe,GAAf;QACI,IAAM,KAAK,GAAG,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC;QAC3C,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,UAAC,CAAC,EAAE,CAAC;YAC3B,IAAM,MAAM,GAAG,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,EAAC,CAAC,CAAC,CAAC,CAAC;YACjD,IAAM,MAAM,GAAG,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,EAAC,CAAC,CAAC,CAAC,CAAC;YACjD,IAAI,MAAM,KAAK,CAAC,CAAC;gBAAE,OAAO,CAAC,CAAC;YAC5B,IAAI,MAAM,KAAK,CAAC,CAAC;gBAAE,OAAO,CAAC,CAAC,CAAC;YAC7B,OAAO,MAAM,GAAG,MAAM,CAAC;QAC3B,CAAC,CAAC,CAAC;IACP,CAAC;IAED,6BAAO,GAAP;QACI,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,UAAC,CAAC,EAAE,CAAC;;YACvB,aAAa;YACb,IAAM,OAAO,GAAG,QAAQ,CAAC,OAAA,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,0CAAG,CAAC,MAAK,GAAG,EAAE,EAAE,CAAC,CAAC;YAC9D,IAAM,OAAO,GAAG,QAAQ,CAAC,OAAA,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,0CAAG,CAAC,MAAK,GAAG,EAAE,EAAE,CAAC,CAAC;YAC9D,OAAO,OAAO,GAAG,OAAO,CAAC;QAC7B,CAAC,CAAC,CAAC;IACP,CAAC;IAED,2BAAK,GAAL;IAEA,CAAC;IAED,+BAAS,GAAT;QACI,OAAO,CAAC,GAAG,CAAC,qBAAqB,EAAC,EAAE,CAAC,EAAE,CAAC,UAAU,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;QAClE,EAAE,CAAC,QAAQ,CAAC,SAAS,CAAC,WAAW,CAAC,CAAC;IACvC,CAAC;IAED,gCAAU,GAAV;QACI,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC;aACrC,EAAE,CAAC,GAAG,EAAE,EAAC,OAAO,EAAE,GAAG,EAAC,CAAC;aACvB,IAAI,CAAC;YAEF,aAAa;YACb,EAAE,CAAC,QAAQ,CAAC,SAAS,CAAC,WAAW,EAAE,UAAC,GAAG;gBACnC,IAAI,GAAG,EAAE;oBACL,OAAO,CAAC,KAAK,CAAC,oBAAoB,EAAE,GAAG,CAAC,CAAC;iBAC5C;qBAAM;oBACH,EAAE,CAAC,QAAQ,CAAC,SAAS,CAAC,WAAW,CAAC,CAAC;iBACtC;YACL,CAAC,CAAC,CAAC;QACP,CAAC,CAAC;aACD,KAAK,EAAE,CAAC;QAET,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC;aACzC,EAAE,CAAC,GAAG,EAAC,EAAC,OAAO,EAAE,GAAG,EAAC,CAAC;aACtB,KAAK,EAAE,CAAC;QAEb,0BAA0B;QAC1B,mBAAmB;IAGvB,CAAC;IAGD,kCAAY,GAAZ,UAAa,UAAc;QAA3B,iBA0BC;QA1BY,2BAAA,EAAA,cAAc;QACvB,YAAY;QACX,IAAI,OAAO,EAAE,KAAK,WAAW,IAAI,EAAE,KAAK,IAAI,EAAE;YACvC,IAAI,SAAS,GAAG,EAAE,CAAC,EAAE,CAAC,cAAc,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC;YACzD,qBAAqB;YACrB,IAAG,SAAS,IAAI,SAAS,IAAI,SAAS,IAAI,EAAE,IAAI,SAAS,IAAI,IAAI,EAAC;gBAC9D,IAAI,CAAC,WAAW,CAAC,UAAU,CAAC,CAAC;aAChC;YACD,kBAAkB;iBACd;gBACA,IAAI,CAAC,WAAW,EAAE,CAAC;aACtB;YACD,OAAO,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;YACvB,EAAE,CAAC,EAAE,CAAC,QAAQ,CAAC,SAAS,CAAC,UAAC,IAAI;gBAC1B,OAAO,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;gBACzB,KAAI,CAAC,KAAK,GAAG,IAAI,CAAC;YACtB,CAAC,CAAC,CAAC;SAET;aACG;YACD,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC;YAClB,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC;YAClB,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC;YAClB,EAAE,CAAC,EAAE,CAAC,QAAQ,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;SACjC;QACF,SAAS;IACb,CAAC;IAED,qCAAe,GAAf;QACI,IAAI,SAAS,GAAG,EAAE,CAAC,EAAE,CAAC,cAAc,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC;QACzD,IAAG,SAAS,IAAI,SAAS,IAAI,SAAS,IAAI,EAAE,IAAI,SAAS,IAAI,IAAI,EAAC;YAC9D,SAAS,GAAG;gBACR,WAAW,EAAE,IAAI;gBACjB,YAAY,EAAE,IAAI;gBAClB,aAAa,EAAE,IAAI;aACtB,CAAA;YACD,EAAE,CAAC,EAAE,CAAC,cAAc,CAAC,UAAU,CAAC,OAAO,EAAC,SAAS,CAAC,CAAC;SACtD;aACG;YACA,EAAE,CAAC,EAAE,CAAC,UAAU,CAAC,OAAO,CAAC,SAAS,GAAG,SAAS,CAAC,SAAS,CAAC;YACzD,EAAE,CAAC,EAAE,CAAC,UAAU,CAAC,OAAO,CAAC,UAAU,GAAG,SAAS,CAAC,UAAU,CAAC;YAC3D,EAAE,CAAC,EAAE,CAAC,UAAU,CAAC,OAAO,CAAC,WAAW,GAAG,SAAS,CAAC,WAAW,CAAC;SAChE;IACL,CAAC;IAED,eAAe;IACf,iCAAW,GAAX;QAAA,iBAwMC;QAvMG,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;QACrB,IAAI,MAAM,GAAG,EAAE,CAAC,EAAE,CAAC,cAAc,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC;QACvD,IAAG,MAAM,IAAI,IAAI,IAAI,MAAM,IAAI,EAAE,IAAI,MAAM,IAAI,SAAS,EAAC;YACrD,OAAO,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;YACxB,YAAY;YACZ,EAAE,CAAC,KAAK,CAAC,YAAY,CAAC;gBACtB,IAAI,EAAE,UAAU;gBACZ,IAAI,EAAE;oBACF,MAAM,EAAE,MAAM;iBACjB;gBACD,OAAO,EAAE,UAAA,GAAG;oBACR,OAAO,CAAC,GAAG,CAAC,UAAU,EAAE,GAAG,CAAC,MAAM,CAAC,CAAA;oBACnC,IAAG,GAAG,CAAC,MAAM,CAAC,IAAI,IAAI,GAAG,IAAI,GAAG,CAAC,MAAM,CAAC,OAAO,IAAI,SAAS,EAAC;qBAC5D;yBACI,IAAG,GAAG,CAAC,MAAM,CAAC,IAAI,IAAI,GAAG,EAAC;wBAC3B,IAAG,GAAG,CAAC,MAAM,CAAC,IAAI,EAAC;4BACf,EAAE,CAAC,EAAE,CAAC,UAAU,CAAC,OAAO,CAAC,MAAM,GAAG,GAAG,CAAC,MAAM,CAAC,MAAM,CAAC;4BACpD,EAAE,CAAC,EAAE,CAAC,UAAU,CAAC,OAAO,CAAC,QAAQ,GAAG,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC;4BAC7D,EAAE,CAAC,EAAE,CAAC,UAAU,CAAC,OAAO,CAAC,UAAU,GAAG,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC;4BACjE,IAAM,aAAa,GAAG,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,aAAa,CAAC;4BACpD,yBAAW,CAAC,GAAG,CAAC,cAAc,CAAC,aAAa,CAAC,CAAC;4BAC9C,EAAE,CAAC,EAAE,CAAC,cAAc,CAAC,UAAU,CAAC,QAAQ,EAAC,EAAE,CAAC,EAAE,CAAC,UAAU,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;yBAC7E;qBACJ;gBACL,CAAC;gBACD,IAAI,EAAE,UAAA,GAAG;oBACL,OAAO,CAAC,KAAK,CAAC,UAAU,EAAE,GAAG,CAAC,CAAA;gBAClC,CAAC;aACJ,CAAC,CAAA;SACL;aACG;YACA,IAAG,MAAM;gBACL,EAAE,CAAC,EAAE,CAAC,UAAU,CAAC,OAAO,CAAC,MAAM,GAAG,MAAM,CAAC;SAChD;QAID,MAAM;QACN,EAAE,CAAC,EAAE,CAAC,QAAQ,CAAC,YAAY,CAAC,UAAC,IAAI;YAC7B,IAAM,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;YAC7B,IAAI,SAAS,GAAG,EAAE,CAAC,EAAE,CAAC,cAAc,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC;YACzD,IAAG,IAAI,CAAC,MAAM,CAAC,IAAI,IAAI,GAAG,IAAI,IAAI,CAAC,MAAM,CAAC,OAAO,IAAI,SAAS,EAAC;gBAC3D,mCAAmC;gBACnC,IAAG,SAAS,CAAC,KAAK,EAAC;oBACf,EAAE,CAAC,EAAE,CAAC,UAAU,CAAC,OAAO,CAAC,KAAK,GAAG,SAAS,CAAC,KAAK,CAAC;iBACpD;gBACD,KAAI,CAAC,KAAK,GAAG,IAAI,CAAC;gBAClB,EAAE,CAAC,EAAE,CAAC,QAAQ,CAAC,YAAY,CAAC,UAAC,IAAI;gBACjC,CAAC,CAAC,CAAC;aACN;iBACI,IAAG,IAAI,CAAC,MAAM,CAAC,IAAI,IAAI,GAAG,EAAC;gBAC5B,mDAAmD;gBACnD,gCAAgC;gBAChC,IAAI,IAAI,GAAG,IAAI,CAAC,MAAM,CAAC,SAAS,GAAG,SAAS,CAAC,SAAS,CAAC;gBACvD,OAAO,CAAC,GAAG,CAAC,QAAQ,EAAC,IAAI,CAAC,CAAC;gBAC3B,IAAG,CAAC,IAAI,CAAC,MAAM,CAAC,SAAS,GAAG,SAAS,CAAC,SAAS,CAAC,GAAG,KAAK,EAAC;oBACrD,IAAG,SAAS,CAAC,KAAK,EAAC;wBACf,OAAO,CAAC,GAAG,CAAC,WAAW,EAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;wBAC1C,EAAE,CAAC,EAAE,CAAC,UAAU,CAAC,OAAO,CAAC,KAAK,GAAG,SAAS,CAAC,KAAK,CAAC;wBACjD,sDAAsD;wBACtD,EAAE,CAAC,EAAE,CAAC,QAAQ,CAAC,YAAY,CAAC,UAAC,IAAI;wBACjC,CAAC,CAAC,CAAC;qBACN;iBAEJ;gBACD,6BAA6B;qBACzB;oBACA,OAAO,CAAC,GAAG,CAAC,UAAU,EAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;oBACzC,EAAE,CAAC,EAAE,CAAC,UAAU,CAAC,OAAO,CAAC,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC;oBAClD,SAAS,CAAC,KAAK,GAAG,EAAE,CAAC,EAAE,CAAC,UAAU,CAAC,OAAO,CAAC,KAAK,CAAC;oBACjD,SAAS,CAAC,SAAS,GAAG,SAAS,CAAC;oBAChC,gEAAgE;oBAChE,EAAE,CAAC,EAAE,CAAC,cAAc,CAAC,UAAU,CAAC,OAAO,EAAC,SAAS,CAAC,CAAC;iBACtD;gBACD,KAAI,CAAC,KAAK,GAAG,IAAI,CAAC;aACrB;QACL,CAAC,CAAC,CAAC;QACH,MAAM;QACN,EAAE,CAAC,EAAE,CAAC,QAAQ,CAAC,WAAW,CAAC,UAAC,IAAI;YAC5B,IAAM,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;YAC7B,IAAI,QAAQ,GAAG,EAAE,CAAC,EAAE,CAAC,cAAc,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;YACvD,IAAG,IAAI,CAAC,MAAM,CAAC,IAAI,IAAI,GAAG,IAAI,IAAI,CAAC,MAAM,CAAC,OAAO,IAAI,SAAS,EAAC;gBAC3D,IAAG,QAAQ,CAAC,IAAI;oBACZ,EAAE,CAAC,EAAE,CAAC,UAAU,CAAC,OAAO,CAAC,IAAI,GAAG,QAAQ,CAAC,IAAI,CAAC;gBAClD,OAAO,CAAC,GAAG,CAAC,kBAAkB,EAAC,EAAE,CAAC,EAAE,CAAC,UAAU,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;gBAC9D,KAAI,CAAC,KAAK,GAAG,IAAI,CAAC;gBAClB,EAAE,CAAC,EAAE,CAAC,QAAQ,CAAC,WAAW,CAAC,UAAC,IAAI;gBAChC,CAAC,CAAC,CAAC;aACN;iBACI,IAAG,IAAI,CAAC,MAAM,CAAC,IAAI,IAAI,GAAG,EAAC;gBAC5B,mDAAmD;gBACnD,gCAAgC;gBAChC,IAAI,IAAI,GAAG,IAAI,CAAC,MAAM,CAAC,SAAS,GAAG,QAAQ,CAAC,SAAS,CAAC;gBACtD,OAAO,CAAC,GAAG,CAAC,QAAQ,EAAC,IAAI,CAAC,CAAC;gBAC3B,IAAG,CAAC,IAAI,CAAC,MAAM,CAAC,SAAS,GAAG,QAAQ,CAAC,SAAS,CAAC,GAAG,KAAK,EAAC;oBACpD,OAAO,CAAC,GAAG,CAAC,UAAU,EAAC,QAAQ,CAAC,CAAC;oBACjC,IAAG,QAAQ,CAAC,IAAI;wBACZ,EAAE,CAAC,EAAE,CAAC,UAAU,CAAC,OAAO,CAAC,IAAI,GAAG,QAAQ,CAAC,IAAI,CAAC;yBAC9C;wBACA,EAAE,CAAC,EAAE,CAAC,UAAU,CAAC,OAAO,CAAC,IAAI,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC;wBACjD,QAAQ,CAAC,IAAI,GAAG,EAAE,CAAC,EAAE,CAAC,UAAU,CAAC,OAAO,CAAC,IAAI,CAAC;wBAC9C,QAAQ,CAAC,SAAS,GAAG,SAAS,CAAC;wBAC/B,OAAO,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC;wBAC3B,EAAE,CAAC,EAAE,CAAC,cAAc,CAAC,UAAU,CAAC,MAAM,EAAC,QAAQ,CAAC,CAAC;qBACpD;oBACD,OAAO,CAAC,GAAG,CAAC,QAAQ,EAAC,EAAE,CAAC,EAAE,CAAC,UAAU,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;oBACpD,EAAE,CAAC,EAAE,CAAC,QAAQ,CAAC,WAAW,CAAC,UAAC,IAAI;oBAChC,CAAC,CAAC,CAAC;iBACN;gBACD,6BAA6B;qBACzB;oBACA,OAAO,CAAC,GAAG,CAAC,WAAW,EAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;oBAC1C,EAAE,CAAC,EAAE,CAAC,UAAU,CAAC,OAAO,CAAC,IAAI,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC;oBACjD,QAAQ,CAAC,IAAI,GAAG,EAAE,CAAC,EAAE,CAAC,UAAU,CAAC,OAAO,CAAC,IAAI,CAAC;oBAC9C,QAAQ,CAAC,SAAS,GAAG,SAAS,CAAC;oBAC/B,OAAO,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC;oBAC1B,EAAE,CAAC,EAAE,CAAC,cAAc,CAAC,UAAU,CAAC,MAAM,EAAC,QAAQ,CAAC,CAAC;iBACpD;gBACD,KAAI,CAAC,KAAK,GAAG,IAAI,CAAC;aACrB;QACL,CAAC,CAAC,CAAC;QACH,MAAM;QACN,EAAE,CAAC,EAAE,CAAC,QAAQ,CAAC,WAAW,CAAC,UAAC,IAAI;YAC5B,IAAM,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;YAC7B,IAAI,QAAQ,GAAG,EAAE,CAAC,EAAE,CAAC,cAAc,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;YACvD,IAAG,IAAI,CAAC,MAAM,CAAC,IAAI,IAAI,GAAG,IAAI,IAAI,CAAC,MAAM,CAAC,OAAO,IAAI,SAAS,EAAC;gBAC3D,OAAO,CAAC,GAAG,CAAC,kBAAkB,EAAC,QAAQ,CAAC,CAAC;gBACzC,IAAG,QAAQ,CAAC,YAAY,IAAI,SAAS,IAAI,QAAQ,CAAC,YAAY,IAAI,SAAS,IAAI,QAAQ,CAAC,WAAW,IAAI,SAAS,EAAC;oBACzG,OAAO,CAAC,GAAG,CAAC,eAAe,CAAC,CAAC;oBAC7B,EAAE,CAAC,EAAE,CAAC,UAAU,CAAC,OAAO,CAAC,YAAY,GAAG,CAAC,CAAC;oBAC1C,EAAE,CAAC,EAAE,CAAC,UAAU,CAAC,OAAO,CAAC,YAAY,GAAG,CAAC,CAAC;oBAC1C,EAAE,CAAC,EAAE,CAAC,UAAU,CAAC,OAAO,CAAC,UAAU,GAAG,CAAC,CAAC;oBACxC,IAAI,WAAW,GAAG;wBACd,cAAc,EAAC,EAAE,CAAC,EAAE,CAAC,UAAU,CAAC,OAAO,CAAC,YAAY;wBACpD,cAAc,EAAC,EAAE,CAAC,EAAE,CAAC,UAAU,CAAC,OAAO,CAAC,YAAY;wBACpD,aAAa,EAAC,EAAE,CAAC,EAAE,CAAC,UAAU,CAAC,OAAO,CAAC,UAAU;wBACjD,WAAW,EAAC,SAAS;qBACxB,CAAA;oBACD,OAAO,CAAC,GAAG,CAAC,gBAAgB,EAAC,WAAW,CAAC,CAAC;oBAC1C,EAAE,CAAC,EAAE,CAAC,cAAc,CAAC,UAAU,CAAC,MAAM,EAAC,WAAW,CAAC,CAAC;iBAC3D;qBACG;oBACA,mEAAmE;oBACnE,mEAAmE;oBACnE,sEAAsE;oBACtE,EAAE,CAAC,EAAE,CAAC,UAAU,CAAC,OAAO,CAAC,YAAY,GAAG,QAAQ,CAAC,YAAY,CAAC;oBAC9D,EAAE,CAAC,EAAE,CAAC,UAAU,CAAC,OAAO,CAAC,YAAY,GAAG,QAAQ,CAAC,YAAY,CAAC;oBAC9D,EAAE,CAAC,EAAE,CAAC,UAAU,CAAC,OAAO,CAAC,WAAW,GAAG,QAAQ,CAAC,WAAW,CAAC;iBAC/D;gBAGD,iEAAiE;gBACjE,iEAAiE;gBACjE,+DAA+D;gBAC/D,EAAE,CAAC,EAAE,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC,EAAC,CAAC,EAAC,UAAC,IAAI;gBACpC,CAAC,CAAC,CAAC;aACN;iBACI,IAAG,IAAI,CAAC,MAAM,CAAC,IAAI,IAAI,GAAG,EAAC;gBAC5B,0EAA0E;gBAC1E,IAAG,CAAC,IAAI,CAAC,MAAM,CAAC,SAAS,GAAG,QAAQ,CAAC,SAAS,CAAC,GAAG,KAAK,EAAC;oBACpD,OAAO,CAAC,GAAG,CAAC,UAAU,EAAC,QAAQ,CAAC,CAAC;oBACjC,IAAG,QAAQ,CAAC,YAAY,IAAI,SAAS,IAAI,QAAQ,CAAC,YAAY,IAAI,SAAS,IAAI,QAAQ,CAAC,WAAW,IAAI,SAAS,EAAC;wBAC7G,OAAO,CAAC,GAAG,CAAC,cAAc,EAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;wBAC7C,EAAE,CAAC,EAAE,CAAC,UAAU,CAAC,OAAO,CAAC,YAAY,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC;wBAChE,EAAE,CAAC,EAAE,CAAC,UAAU,CAAC,OAAO,CAAC,YAAY,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC;wBAChE,EAAE,CAAC,EAAE,CAAC,UAAU,CAAC,OAAO,CAAC,WAAW,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC;wBACnE,IAAI,WAAW,GAAG;4BACd,cAAc,EAAC,EAAE,CAAC,EAAE,CAAC,UAAU,CAAC,OAAO,CAAC,YAAY;4BACpD,cAAc,EAAC,EAAE,CAAC,EAAE,CAAC,UAAU,CAAC,OAAO,CAAC,YAAY;4BACpD,aAAa,EAAC,EAAE,CAAC,EAAE,CAAC,UAAU,CAAC,OAAO,CAAC,WAAW;4BAClD,WAAW,EAAC,SAAS;yBACxB,CAAA;wBACD,OAAO,CAAC,GAAG,CAAC,eAAe,EAAC,WAAW,CAAC,CAAC;wBACzC,EAAE,CAAC,EAAE,CAAC,cAAc,CAAC,UAAU,CAAC,MAAM,EAAC,WAAW,CAAC,CAAC;qBACvD;yBACG;wBACA,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;wBACtB,EAAE,CAAC,EAAE,CAAC,UAAU,CAAC,OAAO,CAAC,YAAY,GAAG,QAAQ,CAAC,YAAY,CAAC;wBAC9D,EAAE,CAAC,EAAE,CAAC,UAAU,CAAC,OAAO,CAAC,YAAY,GAAG,QAAQ,CAAC,YAAY,CAAC;wBAC9D,EAAE,CAAC,EAAE,CAAC,UAAU,CAAC,OAAO,CAAC,WAAW,GAAG,QAAQ,CAAC,WAAW,CAAC;wBAC5D,EAAE,CAAC,EAAE,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC,EAAC,CAAC,EAAC,UAAC,IAAI;wBACpC,CAAC,CAAC,CAAC;qBACN;iBACJ;qBACG;oBACA,EAAE,CAAC,EAAE,CAAC,UAAU,CAAC,OAAO,CAAC,YAAY,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC;oBAChE,EAAE,CAAC,EAAE,CAAC,UAAU,CAAC,OAAO,CAAC,YAAY,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC;oBAChE,EAAE,CAAC,EAAE,CAAC,UAAU,CAAC,OAAO,CAAC,WAAW,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC;oBACnE,IAAI,WAAW,GAAG;wBACd,cAAc,EAAC,EAAE,CAAC,EAAE,CAAC,UAAU,CAAC,OAAO,CAAC,YAAY;wBACpD,cAAc,EAAC,EAAE,CAAC,EAAE,CAAC,UAAU,CAAC,OAAO,CAAC,YAAY;wBACpD,aAAa,EAAC,EAAE,CAAC,EAAE,CAAC,UAAU,CAAC,OAAO,CAAC,WAAW;wBAClD,WAAW,EAAC,SAAS;qBACxB,CAAA;oBACD,OAAO,CAAC,GAAG,CAAC,iBAAiB,EAAC,WAAW,EAAC,IAAI,CAAC,MAAM,CAAC,CAAC;oBACvD,EAAE,CAAC,EAAE,CAAC,cAAc,CAAC,UAAU,CAAC,MAAM,EAAC,WAAW,CAAC,CAAC;iBACvD;aACJ;QACL,CAAC,CAAC,CAAC;IACP,CAAC;IACD,eAAe;IACf,iCAAW,GAAX,UAAY,UAAiB;QAA7B,iBA8LC;QA7LG,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;QACrB,IAAM,WAAW,GAAG,EAAE,CAAC;QACvB,IAAM,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QAC7B,SAAS;QACT,YAAY;QACZ,EAAE,CAAC,KAAK,CAAC,YAAY,CAAC;YACtB,IAAI,EAAE,UAAU;YAChB,IAAI,EAAE;gBACF,MAAM,EAAE,MAAM;aACjB;YACD,OAAO,EAAE,UAAA,GAAG;gBACR,OAAO,CAAC,GAAG,CAAC,UAAU,EAAE,GAAG,CAAC,MAAM,CAAC,CAAA;gBACnC,IAAG,GAAG,CAAC,MAAM,CAAC,IAAI,IAAI,GAAG,IAAI,GAAG,CAAC,MAAM,CAAC,OAAO,IAAI,SAAS,EAAC;oBACzD,IAAG,GAAG,CAAC,MAAM,CAAC,MAAM,EAAC;wBACjB,EAAE,CAAC,EAAE,CAAC,UAAU,CAAC,OAAO,CAAC,MAAM,GAAG,GAAG,CAAC,MAAM,CAAC,MAAM,CAAA;qBACtD;oBACD,EAAE,CAAC,EAAE,CAAC,UAAU,CAAC,OAAO,CAAC,KAAK,GAAG,IAAI,CAAC;oBACtC,KAAI,CAAC,KAAK,GAAG,IAAI,CAAC;oBAClB,KAAI,CAAC,KAAK,GAAG,IAAI,CAAC;oBAClB,IAAI,SAAS,GAAG,EAAC,OAAO,EAAC,CAAC,EAAC,WAAW,EAAC,SAAS,EAAC,CAAC;oBAClD,EAAE,CAAC,EAAE,CAAC,cAAc,CAAC,UAAU,CAAC,OAAO,EAAC,SAAS,CAAC,CAAC;oBACnD,IAAI,QAAQ,GAAG,EAAC,MAAM,EAAC,CAAC,EAAC,WAAW,EAAC,SAAS,EAAC,CAAC;oBAChD,OAAO,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC;oBAC3B,EAAE,CAAC,EAAE,CAAC,cAAc,CAAC,UAAU,CAAC,MAAM,EAAC,QAAQ,CAAC,CAAC;oBACjD,IAAI,QAAQ,GAAG;wBACX,cAAc,EAAC,CAAC;wBAChB,cAAc,EAAC,CAAC;wBAChB,aAAa,EAAC,CAAC;wBACf,WAAW,EAAC,SAAS;qBACxB,CAAA;oBACD,EAAE,CAAC,EAAE,CAAC,cAAc,CAAC,UAAU,CAAC,MAAM,EAAC,QAAQ,CAAC,CAAC;oBAGjD,EAAE,CAAC,EAAE,CAAC,QAAQ,CAAC,WAAW,CAAC,UAAC,IAAI;wBAC5B,IAAG,IAAI,CAAC,MAAM,CAAC,IAAI,IAAI,GAAG,EAAC;4BACvB,OAAO,CAAC,GAAG,CAAC,UAAU,EAAC,IAAI,CAAC,CAAC;4BAC7B,YAAY;4BACZ,EAAE,CAAC,KAAK,CAAC,YAAY,CAAC;gCAClB,IAAI,EAAE,UAAU;gCAChB,IAAI,EAAE;oCACF,MAAM,EAAE,MAAM;iCACjB;gCACD,OAAO,EAAE,UAAA,GAAG;oCACR,OAAO,CAAC,GAAG,CAAC,oBAAoB,CAAC,CAAA;oCACjC,IAAG,GAAG,CAAC,MAAM,CAAC,IAAI,IAAI,GAAG,EAAC;wCACtB,IAAM,IAAI,GAAG,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,aAAa,CAAC;wCAC3C,yBAAW,CAAC,GAAG,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC;qCACxC;gCACL,CAAC;6BACJ,CAAC,CAAA;yBACL;oBACL,CAAC,CAAC,CAAC;oBACH,OAAO,CAAC,GAAG,CAAC,YAAY,EAAC,EAAE,CAAC,EAAE,CAAC,UAAU,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;oBACxD,EAAE,CAAC,EAAE,CAAC,QAAQ,CAAC,WAAW,CAAC,EAAE,CAAC,EAAE,CAAC,UAAU,CAAC,OAAO,CAAC,IAAI,EAAC,UAAC,IAAI;oBAE9D,CAAC,CAAC,CAAC;oBACH,EAAE,CAAC,EAAE,CAAC,QAAQ,CAAC,YAAY,CAAC,UAAC,IAAI;oBACjC,CAAC,CAAC,CAAC;oBACH,UAAU,CAAC;wBACP,EAAE,CAAC,EAAE,CAAC,UAAU,CAAC,OAAO,CAAC,YAAY,GAAG,CAAC,CAAC;wBAC1C,EAAE,CAAC,EAAE,CAAC,UAAU,CAAC,OAAO,CAAC,YAAY,GAAG,CAAC,CAAC;wBAC1C,EAAE,CAAC,EAAE,CAAC,UAAU,CAAC,OAAO,CAAC,WAAW,GAAG,CAAC,CAAC;wBACzC,EAAE,CAAC,EAAE,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC,EAAC,CAAC,EAAC,UAAC,IAAI;4BAChC,IAAG,IAAI,CAAC,MAAM,CAAC,IAAI,IAAI,GAAG,EAAC;gCACvB,OAAO,CAAC,GAAG,CAAC,UAAU,EAAC,IAAI,CAAC,CAAC;6BAChC;iCACG;gCACA,yBAAW,CAAC,GAAG,CAAC,SAAS,CAAC,aAAa,CAAC,CAAC;gCACzC,UAAU,CAAC;oCACP,KAAI,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;gCACxB,CAAC,EAAE,IAAI,CAAC,CAAC;6BACZ;wBACL,CAAC,CAAC,CAAC;oBACP,CAAC,EAAE,CAAC,CAAC,CAAC;iBACT;qBACI,IAAG,GAAG,CAAC,MAAM,CAAC,IAAI,IAAI,GAAG,EAAC;oBAC3B,IAAG,GAAG,CAAC,MAAM,CAAC,IAAI,EAAC;wBACf,EAAE,CAAC,EAAE,CAAC,UAAU,CAAC,OAAO,CAAC,MAAM,GAAG,GAAG,CAAC,MAAM,CAAC,MAAM,CAAC;wBACpD,EAAE,CAAC,EAAE,CAAC,UAAU,CAAC,OAAO,CAAC,KAAK,GAAG,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC;wBACvD,EAAE,CAAC,EAAE,CAAC,UAAU,CAAC,OAAO,CAAC,IAAI,GAAG,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC;wBAC3D,EAAE,CAAC,EAAE,CAAC,UAAU,CAAC,OAAO,CAAC,YAAY,GAAG,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,YAAY,CAAC;wBACrE,EAAE,CAAC,EAAE,CAAC,UAAU,CAAC,OAAO,CAAC,YAAY,GAAG,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,YAAY,CAAC;wBACrE,EAAE,CAAC,EAAE,CAAC,UAAU,CAAC,OAAO,CAAC,WAAW,GAAG,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC;wBACnE,EAAE,CAAC,EAAE,CAAC,UAAU,CAAC,OAAO,CAAC,QAAQ,GAAG,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC;wBAC7D,EAAE,CAAC,EAAE,CAAC,UAAU,CAAC,OAAO,CAAC,UAAU,GAAG,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC;wBACjE,EAAE,CAAC,EAAE,CAAC,cAAc,CAAC,UAAU,CAAC,QAAQ,EAAC,EAAE,CAAC,EAAE,CAAC,UAAU,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;wBAC1E,IAAM,aAAa,GAAG,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,aAAa,CAAC;wBACpD,yBAAW,CAAC,GAAG,CAAC,cAAc,CAAC,aAAa,CAAC,CAAC;qBACjD;oBACD,UAAU,CAAC;wBACP,EAAE,CAAC,EAAE,CAAC,QAAQ,CAAC,WAAW,CAAC,UAAC,IAAI;4BAC5B,IAAG,IAAI,CAAC,MAAM,CAAC,IAAI,IAAI,GAAG,IAAI,IAAI,CAAC,MAAM,CAAC,OAAO,IAAI,SAAS,EAAC;gCAE3D,IAAI,QAAQ,GAAG,EAAC,MAAM,EAAC,CAAC,EAAC,WAAW,EAAC,SAAS,EAAC,CAAC;gCAChD,EAAE,CAAC,EAAE,CAAC,UAAU,CAAC,OAAO,CAAC,IAAI,GAAG,CAAC,CAAC;gCAClC,EAAE,CAAC,EAAE,CAAC,cAAc,CAAC,UAAU,CAAC,MAAM,EAAC,QAAQ,CAAC,CAAC;gCACjD,OAAO,CAAC,GAAG,CAAC,kBAAkB,EAAC,EAAE,CAAC,EAAE,CAAC,UAAU,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;gCAC9D,EAAE,CAAC,EAAE,CAAC,QAAQ,CAAC,WAAW,CAAC,UAAC,IAAI;oCAC5B,0BAA0B;oCAC1B,KAAI,CAAC,KAAK,GAAG,IAAI,CAAC;gCACtB,CAAC,CAAC,CAAC;6BACN;iCACI,IAAG,IAAI,CAAC,MAAM,CAAC,IAAI,IAAI,GAAG,EAAC;gCAC5B,mDAAmD;gCACnD,EAAE,CAAC,EAAE,CAAC,UAAU,CAAC,OAAO,CAAC,IAAI,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC;gCACjD,IAAI,QAAQ,GAAG,EAAC,MAAM,EAAC,EAAE,CAAC,EAAE,CAAC,UAAU,CAAC,OAAO,CAAC,IAAI,EAAC,WAAW,EAAC,SAAS,EAAC,CAAC;gCAC5E,OAAO,CAAC,GAAG,CAAC,SAAS,EAAC,EAAE,CAAC,EAAE,CAAC,UAAU,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;gCACrD,OAAO,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC;gCAC1B,EAAE,CAAC,EAAE,CAAC,cAAc,CAAC,UAAU,CAAC,MAAM,EAAC,QAAQ,CAAC,CAAC;gCACjD,KAAI,CAAC,KAAK,GAAG,IAAI,CAAC;6BACrB;wBACL,CAAC,CAAC,CAAA;oBACN,CAAC,EAAE,GAAG,CAAC,CAAC;oBAER,EAAE,CAAC,EAAE,CAAC,QAAQ,CAAC,YAAY,CAAC,UAAC,IAAI;wBAC7B,IAAG,IAAI,CAAC,MAAM,CAAC,IAAI,IAAI,GAAG,IAAI,IAAI,CAAC,MAAM,CAAC,OAAO,IAAI,SAAS,EAAC;4BAC3D,OAAO,CAAC,GAAG,CAAC,kBAAkB,CAAC,CAAC;4BAChC,IAAI,SAAS,GAAG,EAAC,OAAO,EAAC,CAAC,EAAC,WAAW,EAAC,SAAS,EAAC,CAAC;4BAClD,0CAA0C;4BACzC,EAAE,CAAC,EAAE,CAAC,UAAU,CAAC,OAAO,CAAC,KAAK,GAAG,CAAC,CAAC;4BACpC,EAAE,CAAC,EAAE,CAAC,cAAc,CAAC,UAAU,CAAC,OAAO,EAAC,SAAS,CAAC,CAAC;4BACnD,EAAE,CAAC,EAAE,CAAC,QAAQ,CAAC,YAAY,CAAC,UAAC,IAAI;gCAC7B,OAAO,CAAC,GAAG,CAAC,OAAO,EAAC,IAAI,CAAC,CAAC;gCAC1B,KAAI,CAAC,KAAK,GAAG,IAAI,CAAC;4BACtB,CAAC,CAAC,CAAC;yBACN;6BACI,IAAG,IAAI,CAAC,MAAM,CAAC,IAAI,IAAI,GAAG,EAAC;4BAC5B,OAAO,CAAC,GAAG,CAAC,iBAAiB,EAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;4BAChD,EAAE,CAAC,EAAE,CAAC,UAAU,CAAC,OAAO,CAAC,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC;4BAClD,IAAI,SAAS,GAAG,EAAC,OAAO,EAAC,EAAE,CAAC,EAAE,CAAC,UAAU,CAAC,OAAO,CAAC,KAAK,EAAC,WAAW,EAAC,SAAS,EAAC,CAAC;4BAC/E,0CAA0C;4BAC1C,EAAE,CAAC,EAAE,CAAC,cAAc,CAAC,UAAU,CAAC,OAAO,EAAC,SAAS,CAAC,CAAC;4BACnD,KAAI,CAAC,KAAK,GAAG,IAAI,CAAC;yBACrB;oBACL,CAAC,CAAC,CAAA;oBACF,UAAU,CAAC;wBACP,EAAE,CAAC,EAAE,CAAC,QAAQ,CAAC,WAAW,CAAC,UAAC,IAAI;4BAC5B,IAAG,IAAI,CAAC,MAAM,CAAC,IAAI,IAAI,GAAG,IAAI,IAAI,CAAC,MAAM,CAAC,OAAO,IAAI,SAAS,EAAC;gCAC3D,OAAO,CAAC,GAAG,CAAC,kBAAkB,CAAC,CAAC;gCAChC,EAAE,CAAC,EAAE,CAAC,UAAU,CAAC,OAAO,CAAC,YAAY,GAAG,CAAC,CAAC;gCAC1C,EAAE,CAAC,EAAE,CAAC,UAAU,CAAC,OAAO,CAAC,YAAY,GAAG,CAAC,CAAC;gCAC1C,EAAE,CAAC,EAAE,CAAC,UAAU,CAAC,OAAO,CAAC,WAAW,GAAG,CAAC,CAAC;gCACzC,IAAI,QAAQ,GAAG;oCACX,cAAc,EAAC,CAAC;oCAChB,cAAc,EAAC,CAAC;oCAChB,aAAa,EAAC,CAAC;oCACf,WAAW,EAAC,SAAS;iCACxB,CAAA;gCACD,OAAO,CAAC,GAAG,CAAC,SAAS,EAAC,QAAQ,CAAC,CAAC;gCAChC,EAAE,CAAC,EAAE,CAAC,cAAc,CAAC,UAAU,CAAC,MAAM,EAAC,QAAQ,CAAC,CAAC;gCACjD,EAAE,CAAC,EAAE,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC,EAAC,CAAC,EAAC,UAAC,IAAI;gCACpC,CAAC,CAAC,CAAC;6BACN;iCACI,IAAG,IAAI,CAAC,MAAM,CAAC,IAAI,IAAI,GAAG,EAAC;gCAC5B,OAAO,CAAC,GAAG,CAAC,iBAAiB,EAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;gCAChD,EAAE,CAAC,EAAE,CAAC,UAAU,CAAC,OAAO,CAAC,YAAY,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,IAAI,CAAC,CAAC;gCACrE,EAAE,CAAC,EAAE,CAAC,UAAU,CAAC,OAAO,CAAC,YAAY,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,IAAI,CAAC,CAAC;gCACrE,EAAE,CAAC,EAAE,CAAC,UAAU,CAAC,OAAO,CAAC,WAAW,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,UAAU,IAAI,CAAC,CAAC;gCACxE,IAAI,QAAQ,GAAG;oCACX,cAAc,EAAC,EAAE,CAAC,EAAE,CAAC,UAAU,CAAC,OAAO,CAAC,YAAY;oCACpD,cAAc,EAAC,EAAE,CAAC,EAAE,CAAC,UAAU,CAAC,OAAO,CAAC,YAAY;oCACpD,aAAa,EAAC,EAAE,CAAC,EAAE,CAAC,UAAU,CAAC,OAAO,CAAC,WAAW;oCAClD,WAAW,EAAC,SAAS;iCACxB,CAAA;gCACD,OAAO,CAAC,GAAG,CAAC,SAAS,EAAC,QAAQ,CAAC,CAAC;gCAChC,EAAE,CAAC,EAAE,CAAC,cAAc,CAAC,UAAU,CAAC,MAAM,EAAC,QAAQ,CAAC,CAAC;6BAEpD;wBACL,CAAC,CAAC,CAAA;oBACN,CAAC,EAAE,CAAC,CAAC,CAAC;iBAET;YAEL,CAAC;YACD,IAAI,EAAE,UAAA,GAAG;gBACL,OAAO,CAAC,KAAK,CAAC,UAAU,EAAE,GAAG,CAAC,CAAA;gBAC9B,IAAI,UAAU,GAAG,WAAW,EAAE;oBACtB,OAAO,CAAC,KAAK,CAAC,mEAAc,UAAU,GAAG,CAAC,wDAAY,EAAE,GAAG,CAAC,CAAC;oBAC7D,YAAY;oBACZ,UAAU,CAAC;wBACP,KAAI,CAAC,YAAY,CAAC,UAAU,GAAG,CAAC,CAAC,CAAC;oBACtC,CAAC,EAAE,IAAI,CAAC,CAAC;iBACZ;qBAAM;oBACH,OAAO,CAAC,KAAK,CAAC,wBAAwB,EAAE,GAAG,CAAC,CAAC;oBAC7C,OAAO;oBACP,EAAE,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC;iBACjB;YACL,CAAC;SACJ,CAAC,CAAA;IACN,CAAC;IAED,iCAAW,GAAX;QACI,EAAE,CAAC,EAAE,CAAC,UAAU,CAAC,QAAQ,CAAC,UAAC,IAAI;YAC3B,OAAO,CAAC,GAAG,CAAC,IAAI,EAAC,IAAI,CAAC,CAAC;QAC3B,CAAC,CAAC,CAAA;IACN,CAAC;IAED,sCAAgB,GAAhB;QACI,IAAI,CAAC,gBAAgB,GAAG;YACpB,IAAG,IAAI,CAAC,UAAU,IAAI,CAAC,EAAC;gBACpB,IAAI,CAAC,eAAe,EAAE,CAAC;aAC1B;iBACG;gBACA,IAAI,CAAC,UAAU,IAAI,CAAC,CAAC;aACxB;QACL,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACb,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,gBAAgB,EAAE,CAAC,CAAC,CAAC;IAC5C,CAAC;IAED,qCAAe,GAAf;QACI,IAAG,IAAI,CAAC,gBAAgB,EAAC;YACrB,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC;SAC1C;IACL,CAAC;IAED,4BAAM,GAAN,UAAQ,EAAE;QACN,IAAG,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,KAAK,IAAK,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,UAAU,IAAI,CAAC,EAAC;YAC3F,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;YAChC,yBAAW,CAAC,GAAG,CAAC,WAAW,EAAE,CAAC;YAC9B,IAAI,CAAC,SAAS,EAAE,CAAC;SACpB;IACL,CAAC;;IAlpBM,qBAAS,GAAiB,IAAI,CAAC;IAJtC;QADC,QAAQ,CAAC,EAAE,CAAC,KAAK,CAAC;8CACI;IAGvB;QADC,QAAQ;6CACc;IAIvB;QADC,QAAQ,CAAC,EAAC,IAAI,EAAE,CAAC,EAAE,CAAC,MAAM,CAAC,EAAE,OAAO,EAAC,MAAM,EAAC,CAAC;oDACV;IAGpC;QADC,QAAQ,CAAC,EAAC,IAAI,EAAE,CAAC,EAAE,CAAC,MAAM,CAAC,EAAE,OAAO,EAAC,MAAM,EAAC,CAAC;oDACV;IAGpC;QADC,QAAQ,CAAC,EAAC,IAAI,EAAE,CAAC,EAAE,CAAC,WAAW,CAAC,EAAE,OAAO,EAAC,MAAM,EAAC,CAAC;oDACV;IAhBxB,WAAW;QAD/B,OAAO;OACa,WAAW,CA0pB/B;IAAD,kBAAC;CA1pBD,AA0pBC,CA1pBwC,EAAE,CAAC,SAAS,GA0pBpD;kBA1pBoB,WAAW","file":"","sourceRoot":"/","sourcesContent":["// Learn TypeScript:\r\n// - https://docs.cocos.com/creator/manual/en/scripting/typescript.html\r\n// Learn Attribute:\r\n// - https://docs.cocos.com/creator/manual/en/scripting/reference/attributes.html\r\n// Learn life-cycle callbacks:\r\n// - https://docs.cocos.com/creator/manual/en/scripting/life-cycle-callbacks.html\r\n\r\nimport { MiniGameManager } from \"./Sdk/MiniGameManager\";\r\nimport { MiniGameSdk } from \"./Sdk/MiniGameSdk\";\r\n\r\nconst {ccclass, property} = cc._decorator;\r\n\r\n@ccclass\r\nexport default class GameManager extends cc.Component {\r\n\r\n @property(cc.Label)\r\n label: cc.Label = null;\r\n\r\n @property\r\n text: string = 'hello';\r\n static _instance : GameManager = null;\r\n\r\n @property({type: [cc.Prefab], tooltip:\"方块数组\"})\r\n Block_Array : Array = [];\r\n\r\n @property({type: [cc.Prefab], tooltip:\"墙壁数组\"})\r\n Wall_Prefab : Array = [];\r\n\r\n @property({type: [cc.SpriteAtlas], tooltip:\"方块颜色\"})\r\n Block_Color : Array = [];\r\n\r\n particleEffects: cc.ParticleAsset[];\r\n // @property({type: [cc.ParticleSystem], tooltip:\"粒子数组\"})\r\n // particleEffects : Array = [];\r\n\r\n load1 :boolean = false;\r\n load2 :boolean = false;\r\n load3 :boolean = false;\r\n load4 :boolean = false;\r\n load5 :boolean = false;\r\n scheduleCallback: any;\r\n timeNumber: number;\r\n\r\n \r\n // LIFE-CYCLE CALLBACKS:\r\n\r\n onLoad () {\r\n\r\n window.initMgr();\r\n this.timeNumber = 3;\r\n this.startTimeCutDown();\r\n cc.fx.GameConfig.init(true);\r\n cc.fx.GameConfig.GM_INFO.gameState = false;\r\n this.readMusicConfig();\r\n console.log(\"音乐开关\",cc.fx.GameConfig.GM_INFO.musicOpen);\r\n cc.fx.AudioManager._instance.playMusicGame();\r\n\r\n this.load1 = this.load2 = this.load3 = this.load4 = this.load5 =false;\r\n setTimeout(() => {\r\n this.readUserData();\r\n }, 200);\r\n \r\n\r\n if (GameManager._instance == null) {\r\n GameManager._instance = this;\r\n cc.game.addPersistRootNode(this.node);\r\n }\r\n else {\r\n return;\r\n }\r\n\r\n const path = 'prefab/block';\r\n const path2 = 'prefab/wall';\r\n cc.resources.loadDir(path, cc.Prefab, (err, assets: cc.Prefab[]) => {\r\n if (err) {\r\n \r\n console.error('动态加载 Prefab 失败:', err);\r\n cc.director.loadScene(\"LoadScene\");\r\n return;\r\n }\r\n // 将加载的 Prefab 赋值给 Block_Array\r\n this.Block_Array = assets;\r\n this.setSort();\r\n this.load1 = true;\r\n });\r\n\r\n cc.resources.loadDir(path2, cc.Prefab, (err, assets: cc.Prefab[]) => {\r\n if (err) {\r\n console.error('动态加载 Prefab 失败:', err);\r\n cc.director.loadScene(\"LoadScene\");\r\n return;\r\n }\r\n // 将加载的 Prefab 赋值给 Block_Array\r\n this.Wall_Prefab = assets;\r\n this.load2 = true;\r\n this.setWallPrefabSort();\r\n });\r\n\r\n // debugger;\r\n\r\n // setTimeout(() => {\r\n // cc.director.preloadScene(\"HomeScene\", (err) => {\r\n // if (err) {\r\n // console.error('预加载 HomeScene 场景失败:', err);\r\n // return;\r\n // }\r\n // });\r\n // }, 1000);\r\n\r\n // 检测微信小游戏切到后台\r\n if (cc.sys.platform === cc.sys.WECHAT_GAME) {\r\n //@ts-ignore\r\n wx.onHide(() => {\r\n this.onHide();\r\n });\r\n // 检测微信小游戏回到前台\r\n //@ts-ignore\r\n wx.onShow(() => {\r\n this.onShow();\r\n });\r\n }\r\n\r\n }\r\n\r\n onHide () {\r\n cc.audioEngine.stopMusic();\r\n cc.game.pause();\r\n }\r\n\r\n onShow () {\r\n cc.audioEngine.resumeMusic();\r\n cc.game.resume();\r\n }\r\n\r\n loadParticleEffects() {\r\n }\r\n\r\n\r\n \r\n\r\n setWallPrefabSort() {\r\n const order = ['down', 'downLeft', 'downRight', 'left','right','up','upLeft','upRight'];\r\n this.Wall_Prefab.sort((a, b) => {\r\n const indexA = order.indexOf(a.name);\r\n const indexB = order.indexOf(b.name);\r\n if (indexA === -1) return 1;\r\n if (indexB === -1) return -1;\r\n return indexA - indexB;\r\n });\r\n \r\n }\r\n\r\n setParticleSort() {\r\n const order = ['top', 'bot', 'rig', 'lef'];\r\n this.particleEffects.sort((a, b) => {\r\n const indexA = order.indexOf(a.name.substr(0,3));\r\n const indexB = order.indexOf(b.name.substr(0,3));\r\n if (indexA === -1) return 1;\r\n if (indexB === -1) return -1;\r\n return indexA - indexB;\r\n });\r\n }\r\n\r\n setSort(){\r\n this.Block_Array.sort((a, b) => {\r\n // 从名称中提取数字部分\r\n const numberA = parseInt(a.name.match(/\\d+/)?.[0] || '0', 10);\r\n const numberB = parseInt(b.name.match(/\\d+/)?.[0] || '0', 10);\r\n return numberA - numberB;\r\n });\r\n }\r\n\r\n start () {\r\n\r\n }\r\n\r\n startGame(){\r\n console.log(\"进入场景之前_____________\",cc.fx.GameConfig.GM_INFO.first);\r\n cc.director.loadScene(\"HomeScene\");\r\n }\r\n\r\n returnHome(){\r\n cc.tween(this.node.getChildByName(\"Game\"))\r\n .to(0.5, {opacity: 100})\r\n .call(() => {\r\n \r\n // 预加载成功后加载场景\r\n cc.director.loadScene(\"HomeScene\", (err) => {\r\n if (err) {\r\n console.error('加载 HomeScene 场景失败:', err);\r\n } else {\r\n cc.director.loadScene(\"HomeScene\");\r\n }\r\n });\r\n })\r\n .start();\r\n\r\n cc.tween(this.node.getChildByName(\"mask\"))\r\n .to(0.5,{opacity: 255})\r\n .start();\r\n\r\n // cc.loader.releaseAll();\r\n // 预加载 HomeScene 场景\r\n\r\n \r\n }\r\n\r\n\r\n readUserData(retryCount = 0){\r\n //@ts-ignore\r\n if (typeof wx !== 'undefined' && wx !== null) { \r\n let levelInfo = cc.fx.StorageMessage.getStorage(\"level\");\r\n //旧的读取数据设置数据方法,以强联网为主\r\n if(levelInfo == undefined || levelInfo == \"\" || levelInfo == null){\r\n this.oldReadData(retryCount);\r\n }\r\n //新的读取数据设置方法,以本地为主\r\n else{\r\n this.newReadData();\r\n }\r\n console.log(\"即将读取体力值\");\r\n cc.fx.GameTool.getHealth((data)=>{\r\n console.log(\"体力值完成进入游戏\");\r\n this.load5 = true;\r\n });\r\n\r\n }\r\n else{\r\n this.load3 = true;\r\n this.load4 = true;\r\n this.load5 = true;\r\n cc.fx.GameTool.getHealth(null);\r\n }\r\n // 存储用户数据\r\n }\r\n\r\n readMusicConfig(){\r\n let audioInfo = cc.fx.StorageMessage.getStorage(\"music\");\r\n if(audioInfo == undefined || audioInfo == \"\" || audioInfo == null){\r\n audioInfo = {\r\n \"musicOpen\": true, //音乐\r\n \"effectOpen\": true, //音效\r\n \"vibrateOpen\": true, //震动\r\n }\r\n cc.fx.StorageMessage.setStorage(\"music\",audioInfo);\r\n }\r\n else{\r\n cc.fx.GameConfig.GM_INFO.musicOpen = audioInfo.musicOpen;\r\n cc.fx.GameConfig.GM_INFO.effectOpen = audioInfo.effectOpen;\r\n cc.fx.GameConfig.GM_INFO.vibrateOpen = audioInfo.vibrateOpen;\r\n }\r\n }\r\n \r\n //新用户,有本地缓存读取配置\r\n newReadData(){\r\n console.log(\"读取新信息\");\r\n let openid = cc.fx.StorageMessage.getStorage(\"openid\");\r\n if(openid == null || openid == \"\" || openid == undefined){\r\n console.log(\"没有openid\");\r\n //@ts-ignore\r\n wx.cloud.callFunction({\r\n name: 'userData',\r\n data: {\r\n action: 'read'\r\n },\r\n success: res => {\r\n console.log('读取用户数据成功', res.result)\r\n if(res.result.code == 404 && res.result.message == \"未找到用户数据\"){\r\n }\r\n else if(res.result.code == 200){\r\n if(res.result.data){\r\n cc.fx.GameConfig.GM_INFO.openid = res.result.openid;\r\n cc.fx.GameConfig.GM_INFO.username = res.result.data.username;\r\n cc.fx.GameConfig.GM_INFO.useravatar = res.result.data.useravatar;\r\n const register_time = res.result.data.register_time;\r\n MiniGameSdk.API.shushu_userSet(register_time);\r\n cc.fx.StorageMessage.setStorage(\"openid\",cc.fx.GameConfig.GM_INFO.openid);\r\n }\r\n }\r\n },\r\n fail: err => {\r\n console.error('读取用户数据失败', err)\r\n }\r\n })\r\n }\r\n else{\r\n if(openid)\r\n cc.fx.GameConfig.GM_INFO.openid = openid;\r\n }\r\n \r\n\r\n\r\n //等级信息\r\n cc.fx.GameTool.getUserLevel((data) =>{\r\n const timestamp = Date.now();\r\n let levelInfo = cc.fx.StorageMessage.getStorage(\"level\");\r\n if(data.result.code == 404 && data.result.message == \"未找到关卡数据\"){\r\n // console.log(\"没有等级信息,从用户接口拿到数据\");\r\n if(levelInfo.level){\r\n cc.fx.GameConfig.GM_INFO.level = levelInfo.level;\r\n }\r\n this.load4 = true;\r\n cc.fx.GameTool.setUserLevel((data)=>{\r\n });\r\n } \r\n else if(data.result.code == 200){\r\n // console.log(\"有等级信息,从关卡接口拿到数据\",data.result.data);\r\n //游戏前端存储 新于服务器端,以游戏前端信息为主,放服务器存储\r\n let temp = data.result.timestamp - levelInfo.timestamp;\r\n console.log(\"等级时间差:\",temp);\r\n if((data.result.timestamp - levelInfo.timestamp) < 10000){\r\n if(levelInfo.level){\r\n console.log(\"以游戏前端等级为准\",data.result.data);\r\n cc.fx.GameConfig.GM_INFO.level = levelInfo.level;\r\n // console.log(\"等级为:\",cc.fx.GameConfig.GM_INFO.level);\r\n cc.fx.GameTool.setUserLevel((data)=>{\r\n });\r\n }\r\n\r\n }\r\n //服务器端存储时间新于游戏端,以服务器端为主,往前端存储\r\n else{\r\n console.log(\"以服务器等级为准\",data.result.data);\r\n cc.fx.GameConfig.GM_INFO.level = data.result.data; \r\n levelInfo.level = cc.fx.GameConfig.GM_INFO.level;\r\n levelInfo.timestamp = timestamp;\r\n // console.log(\"1111111存储关卡数据:\",cc.fx.GameConfig.GM_INFO.level);\r\n cc.fx.StorageMessage.setStorage(\"level\",levelInfo);\r\n }\r\n this.load4 = true;\r\n }\r\n });\r\n //金币信息\r\n cc.fx.GameTool.getUserCoin((data) =>{\r\n const timestamp = Date.now();\r\n let coinInfo = cc.fx.StorageMessage.getStorage(\"coin\");\r\n if(data.result.code == 404 && data.result.message == \"未找到金币数据\"){\r\n if(coinInfo.coin)\r\n cc.fx.GameConfig.GM_INFO.coin = coinInfo.coin;\r\n console.log(\"没有金币信息,从用户接口拿到数据\",cc.fx.GameConfig.GM_INFO.coin);\r\n this.load3 = true;\r\n cc.fx.GameTool.setUserCoin((data)=>{\r\n });\r\n } \r\n else if(data.result.code == 200){\r\n // console.log(\"有金币信息,从金币接口拿到数据\",data.result.data);\r\n //游戏前端存储 新于服务器端,以游戏前端信息为主,放服务器存储\r\n let temp = data.result.timestamp - coinInfo.timestamp;\r\n console.log(\"金币时间差:\",temp);\r\n if((data.result.timestamp - coinInfo.timestamp) < 10000){\r\n console.log(\"以前端金幣为准:\",coinInfo);\r\n if(coinInfo.coin)\r\n cc.fx.GameConfig.GM_INFO.coin = coinInfo.coin;\r\n else{\r\n cc.fx.GameConfig.GM_INFO.coin = data.result.data;\r\n coinInfo.coin = cc.fx.GameConfig.GM_INFO.coin;\r\n coinInfo.timestamp = timestamp;\r\n console.log(\"11111111111\");\r\n cc.fx.StorageMessage.setStorage(\"coin\",coinInfo);\r\n }\r\n console.log(\"改变后金币:\",cc.fx.GameConfig.GM_INFO.coin);\r\n cc.fx.GameTool.setUserCoin((data)=>{\r\n });\r\n }\r\n //服务器端存储时间新于游戏端,以服务器端为主,往前端存储\r\n else{\r\n console.log(\"以服务器金幣为准:\",data.result.data);\r\n cc.fx.GameConfig.GM_INFO.coin = data.result.data; \r\n coinInfo.coin = cc.fx.GameConfig.GM_INFO.coin;\r\n coinInfo.timestamp = timestamp;\r\n console.log(\"2222222222\");\r\n cc.fx.StorageMessage.setStorage(\"coin\",coinInfo);\r\n }\r\n this.load3 = true;\r\n } \r\n });\r\n //道具信息\r\n cc.fx.GameTool.getUserProp((data) =>{\r\n const timestamp = Date.now();\r\n let propInfo = cc.fx.StorageMessage.getStorage(\"prop\");\r\n if(data.result.code == 404 && data.result.message == \"未找到道具数据\"){\r\n console.log(\"没有道具信息,从用户接口拿到数据\",propInfo);\r\n if(propInfo.freezeAmount == undefined || propInfo.hammerAmount == undefined || propInfo.magicAmount == undefined){\r\n console.log(\"2222222道具数据异常\");\r\n cc.fx.GameConfig.GM_INFO.freezeAmount = 0;\r\n cc.fx.GameConfig.GM_INFO.hammerAmount = 0;\r\n cc.fx.GameConfig.GM_INFO.magicAmoun = 0;\r\n let propInfoNew = {\r\n \"freezeAmount\":cc.fx.GameConfig.GM_INFO.freezeAmount,\r\n \"hammerAmount\":cc.fx.GameConfig.GM_INFO.hammerAmount,\r\n \"magicAmount\":cc.fx.GameConfig.GM_INFO.magicAmoun,\r\n \"timestamp\":timestamp\r\n }\r\n console.log(\"1111111上传道具信息:\",propInfoNew);\r\n cc.fx.StorageMessage.setStorage(\"prop\",propInfoNew);\r\n }\r\n else{\r\n // cc.fx.GameConfig.GM_INFO.freezeAmount = data.result.data.freeze;\r\n // cc.fx.GameConfig.GM_INFO.hammerAmount = data.result.data.hammer;\r\n // cc.fx.GameConfig.GM_INFO.magicAmount = data.result.data.magic_wand;\r\n cc.fx.GameConfig.GM_INFO.freezeAmount = propInfo.freezeAmount;\r\n cc.fx.GameConfig.GM_INFO.hammerAmount = propInfo.hammerAmount;\r\n cc.fx.GameConfig.GM_INFO.magicAmount = propInfo.magicAmount;\r\n }\r\n\r\n \r\n // cc.fx.GameConfig.GM_INFO.freezeAmount = propInfo.freezeAmount;\r\n // cc.fx.GameConfig.GM_INFO.hammerAmount = propInfo.hammerAmount;\r\n // cc.fx.GameConfig.GM_INFO.magicAmount = propInfo.magicAmount;\r\n cc.fx.GameTool.setUserProp(0,0,(data)=>{\r\n });\r\n } \r\n else if(data.result.code == 200){\r\n // console.log(\"本地时间戳\",propInfo.timestamp,\"服务器时间戳\",data.result.timestamp);\r\n if((data.result.timestamp - propInfo.timestamp) < 10000){\r\n console.log(\"以前端道具为主:\",propInfo);\r\n if(propInfo.freezeAmount == undefined || propInfo.hammerAmount == undefined || propInfo.magicAmount == undefined){\r\n console.log(\"111111道具数据异常\",data.result.data);\r\n cc.fx.GameConfig.GM_INFO.freezeAmount = data.result.data.freeze;\r\n cc.fx.GameConfig.GM_INFO.hammerAmount = data.result.data.hammer;\r\n cc.fx.GameConfig.GM_INFO.magicAmount = data.result.data.magic_wand;\r\n let propInfoNew = {\r\n \"freezeAmount\":cc.fx.GameConfig.GM_INFO.freezeAmount,\r\n \"hammerAmount\":cc.fx.GameConfig.GM_INFO.hammerAmount,\r\n \"magicAmount\":cc.fx.GameConfig.GM_INFO.magicAmount,\r\n \"timestamp\":timestamp\r\n }\r\n console.log(\"333333上传道具信息:\",propInfoNew);\r\n cc.fx.StorageMessage.setStorage(\"prop\",propInfoNew);\r\n }\r\n else{\r\n console.log(\"道具数据正常\");\r\n cc.fx.GameConfig.GM_INFO.freezeAmount = propInfo.freezeAmount;\r\n cc.fx.GameConfig.GM_INFO.hammerAmount = propInfo.hammerAmount;\r\n cc.fx.GameConfig.GM_INFO.magicAmount = propInfo.magicAmount;\r\n cc.fx.GameTool.setUserProp(0,0,(data)=>{\r\n });\r\n }\r\n }\r\n else{\r\n cc.fx.GameConfig.GM_INFO.freezeAmount = data.result.data.freeze;\r\n cc.fx.GameConfig.GM_INFO.hammerAmount = data.result.data.hammer;\r\n cc.fx.GameConfig.GM_INFO.magicAmount = data.result.data.magic_wand;\r\n let propInfoNew = {\r\n \"freezeAmount\":cc.fx.GameConfig.GM_INFO.freezeAmount,\r\n \"hammerAmount\":cc.fx.GameConfig.GM_INFO.hammerAmount,\r\n \"magicAmount\":cc.fx.GameConfig.GM_INFO.magicAmount,\r\n \"timestamp\":timestamp\r\n }\r\n console.log(\"22222222上传道具信息:\",propInfoNew,data.result);\r\n cc.fx.StorageMessage.setStorage(\"prop\",propInfoNew);\r\n }\r\n } \r\n });\r\n }\r\n //旧用户,无本地缓存读取配置\r\n oldReadData(retryCount:number){\r\n console.log(\"读取旧信息\");\r\n const MAX_RETRIES = 15;\r\n const timestamp = Date.now();\r\n // 读取用户数据\r\n //@ts-ignore\r\n wx.cloud.callFunction({\r\n name: 'userData',\r\n data: {\r\n action: 'read'\r\n },\r\n success: res => { \r\n console.log('读取用户数据成功', res.result)\r\n if(res.result.code == 404 && res.result.message == \"未找到用户数据\"){\r\n if(res.result.openid){\r\n cc.fx.GameConfig.GM_INFO.openid = res.result.openid\r\n }\r\n cc.fx.GameConfig.GM_INFO.first = true;\r\n this.load3 = true;\r\n this.load4 = true;\r\n let levelInfo = {\"level\":0,\"timestamp\":timestamp};\r\n cc.fx.StorageMessage.setStorage(\"level\",levelInfo);\r\n let coinInfo = {\"coin\":0,\"timestamp\":timestamp};\r\n console.log(\"33333333333\");\r\n cc.fx.StorageMessage.setStorage(\"coin\",coinInfo);\r\n let propInfo = {\r\n \"freezeAmount\":0,\r\n \"hammerAmount\":0,\r\n \"magicAmount\":0,\r\n \"timestamp\":timestamp,\r\n }\r\n cc.fx.StorageMessage.setStorage(\"prop\",propInfo);\r\n\r\n\r\n cc.fx.GameTool.setUserInfo((data)=>{\r\n if(data.result.code == 200){\r\n console.log(\"上传用户信息成功\",data);\r\n //@ts-ignore\r\n wx.cloud.callFunction({\r\n name: 'userData',\r\n data: {\r\n action: 'read'\r\n }, \r\n success: res => {\r\n console.log(\"上传后,读取用户信息,为上报注册时间\")\r\n if(res.result.code == 200){\r\n const time = res.result.data.register_time;\r\n MiniGameSdk.API.shushu_userSet(time);\r\n }\r\n }\r\n })\r\n }\r\n });\r\n console.log(\"服务器也没有金币信息\",cc.fx.GameConfig.GM_INFO.coin);\r\n cc.fx.GameTool.setUserCoin(cc.fx.GameConfig.GM_INFO.coin,(data)=>{\r\n \r\n });\r\n cc.fx.GameTool.setUserLevel((data)=>{\r\n });\r\n setTimeout(() => {\r\n cc.fx.GameConfig.GM_INFO.freezeAmount = 0;\r\n cc.fx.GameConfig.GM_INFO.hammerAmount = 0;\r\n cc.fx.GameConfig.GM_INFO.magicAmount = 0;\r\n cc.fx.GameTool.setUserProp(0,0,(data)=>{\r\n if(data.result.code == 200){\r\n console.log(\"上传道具信息成功\",data);\r\n }\r\n else{\r\n MiniGameSdk.API.showToast(\"网络异常,正在努力加载\");\r\n setTimeout(() => {\r\n this.oldReadData(0);\r\n }, 1000);\r\n }\r\n });\r\n }, 0);\r\n }\r\n else if(res.result.code == 200){\r\n if(res.result.data){\r\n cc.fx.GameConfig.GM_INFO.openid = res.result.openid;\r\n cc.fx.GameConfig.GM_INFO.level = res.result.data.level;\r\n cc.fx.GameConfig.GM_INFO.coin = res.result.data.coinAmount;\r\n cc.fx.GameConfig.GM_INFO.freezeAmount = res.result.data.freezeAmount;\r\n cc.fx.GameConfig.GM_INFO.hammerAmount = res.result.data.hammerAmount;\r\n cc.fx.GameConfig.GM_INFO.magicAmount = res.result.data.magicAmount;\r\n cc.fx.GameConfig.GM_INFO.username = res.result.data.username;\r\n cc.fx.GameConfig.GM_INFO.useravatar = res.result.data.useravatar;\r\n cc.fx.StorageMessage.setStorage(\"openid\",cc.fx.GameConfig.GM_INFO.openid);\r\n const register_time = res.result.data.register_time;\r\n MiniGameSdk.API.shushu_userSet(register_time);\r\n }\r\n setTimeout(() => {\r\n cc.fx.GameTool.getUserCoin((data) =>{\r\n if(data.result.code == 404 && data.result.message == \"未找到金币数据\"){\r\n \r\n let coinInfo = {\"coin\":0,\"timestamp\":timestamp};\r\n cc.fx.GameConfig.GM_INFO.coin = 0;\r\n cc.fx.StorageMessage.setStorage(\"coin\",coinInfo);\r\n console.log(\"没有金币信息,从用户接口拿到数据\",cc.fx.GameConfig.GM_INFO.coin);\r\n cc.fx.GameTool.setUserCoin((data)=>{\r\n // console.log(\"上传\",data);\r\n this.load3 = true;\r\n });\r\n }\r\n else if(data.result.code == 200){\r\n // console.log(\"有金币信息,从金币接口拿到数据\",data.result.data);\r\n cc.fx.GameConfig.GM_INFO.coin = data.result.data;\r\n let coinInfo = {\"coin\":cc.fx.GameConfig.GM_INFO.coin,\"timestamp\":timestamp};\r\n console.log(\"存储金币信息:\",cc.fx.GameConfig.GM_INFO.coin);\r\n console.log(\"4444444444\");\r\n cc.fx.StorageMessage.setStorage(\"coin\",coinInfo);\r\n this.load3 = true;\r\n }\r\n })\r\n }, 500);\r\n\r\n cc.fx.GameTool.getUserLevel((data) =>{\r\n if(data.result.code == 404 && data.result.message == \"未找到关卡数据\"){\r\n console.log(\"没有等级信息,从用户接口拿到数据\");\r\n let levelInfo = {\"level\":0,\"timestamp\":timestamp};\r\n // console.log(\"333333存储关卡数据:\",levelInfo);\r\n cc.fx.GameConfig.GM_INFO.level = 0;\r\n cc.fx.StorageMessage.setStorage(\"level\",levelInfo);\r\n cc.fx.GameTool.setUserLevel((data)=>{\r\n console.log(\"拿到的数据\",data);\r\n this.load4 = true;\r\n });\r\n } \r\n else if(data.result.code == 200){\r\n console.log(\"有等级信息,从关卡接口拿到数据\",data.result.data);\r\n cc.fx.GameConfig.GM_INFO.level = data.result.data; \r\n let levelInfo = {\"level\":cc.fx.GameConfig.GM_INFO.level,\"timestamp\":timestamp};\r\n // console.log(\"444444存储关卡信息:\",levelInfo);\r\n cc.fx.StorageMessage.setStorage(\"level\",levelInfo);\r\n this.load4 = true;\r\n }\r\n })\r\n setTimeout(() => {\r\n cc.fx.GameTool.getUserProp((data) =>{\r\n if(data.result.code == 404 && data.result.message == \"未找到道具数据\"){\r\n console.log(\"没有道具信息,从用户接口拿到数据\");\r\n cc.fx.GameConfig.GM_INFO.freezeAmount = 0;\r\n cc.fx.GameConfig.GM_INFO.hammerAmount = 0;\r\n cc.fx.GameConfig.GM_INFO.magicAmount = 0;\r\n let propInfo = {\r\n \"freezeAmount\":0,\r\n \"hammerAmount\":0,\r\n \"magicAmount\":0,\r\n \"timestamp\":timestamp,\r\n }\r\n console.log(\"上传道具信息:\",propInfo);\r\n cc.fx.StorageMessage.setStorage(\"prop\",propInfo);\r\n cc.fx.GameTool.setUserProp(0,0,(data)=>{\r\n });\r\n } \r\n else if(data.result.code == 200){\r\n console.log(\"有道具信息,从道具接口拿到数据\",data.result.data);\r\n cc.fx.GameConfig.GM_INFO.freezeAmount = data.result.data.freeze || 0;\r\n cc.fx.GameConfig.GM_INFO.hammerAmount = data.result.data.hammer || 0;\r\n cc.fx.GameConfig.GM_INFO.magicAmount = data.result.data.magic_wand || 0;\r\n let propInfo = {\r\n \"freezeAmount\":cc.fx.GameConfig.GM_INFO.freezeAmount,\r\n \"hammerAmount\":cc.fx.GameConfig.GM_INFO.hammerAmount,\r\n \"magicAmount\":cc.fx.GameConfig.GM_INFO.magicAmount,\r\n \"timestamp\":timestamp,\r\n }\r\n console.log(\"上传道具信息:\",propInfo);\r\n cc.fx.StorageMessage.setStorage(\"prop\",propInfo);\r\n\r\n }\r\n })\r\n }, 0);\r\n \r\n }\r\n\r\n },\r\n fail: err => {\r\n console.error('读取用户数据失败', err)\r\n if (retryCount < MAX_RETRIES) {\r\n console.error(`读取用户数据失败,第 ${retryCount + 1} 次重试,错误信息:`, err);\r\n // 延迟 2 秒后重试\r\n setTimeout(() => {\r\n this.readUserData(retryCount + 1);\r\n }, 2000);\r\n } else {\r\n console.error('读取用户数据失败,达到最大重试次数,退出游戏', err);\r\n // 退出游戏\r\n cc.game.end();\r\n }\r\n }\r\n })\r\n }\r\n\r\n setUserData(){\r\n cc.fx.GameConfig.GameTool((data)=>{\r\n console.log(\"上传\",data);\r\n })\r\n }\r\n\r\n startTimeCutDown(){\r\n this.scheduleCallback = function(){\r\n if(this.timeNumber <= 0){\r\n this.stopTimeCutDown();\r\n }\r\n else{\r\n this.timeNumber -= 1;\r\n }\r\n }.bind(this);\r\n this.schedule(this.scheduleCallback, 1);\r\n }\r\n\r\n stopTimeCutDown(){\r\n if(this.scheduleCallback){\r\n this.unschedule(this.scheduleCallback);\r\n }\r\n }\r\n\r\n update (dt) {\r\n if(this.load1 && this.load2 && this.load3 && this.load4 && this.load5 && this.timeNumber <= 0){\r\n this.load1 = this.load2 = false;\r\n MiniGameSdk.API.shushu_Init();\r\n this.startGame();\r\n }\r\n }\r\n}\r\n"]} -======= -{"version":3,"sources":["assets\\Script\\GameManager.ts"],"names":[],"mappings":";;;;;AAAA,oBAAoB;AACpB,wEAAwE;AACxE,mBAAmB;AACnB,kFAAkF;AAClF,8BAA8B;AAC9B,kFAAkF;;;;;;;;;;;;;;;;;;;;;AAGlF,iDAAgD;AAE1C,IAAA,KAAsB,EAAE,CAAC,UAAU,EAAlC,OAAO,aAAA,EAAE,QAAQ,cAAiB,CAAC;AAG1C;IAAyC,+BAAY;IAArD;QAAA,qEAypBC;QAtpBG,WAAK,GAAa,IAAI,CAAC;QAGvB,UAAI,GAAW,OAAO,CAAC;QAIvB,iBAAW,GAAsB,EAAE,CAAC;QAGpC,iBAAW,GAAsB,EAAE,CAAC;QAGpC,iBAAW,GAA2B,EAAE,CAAC;QAGzC,yDAAyD;QACzD,mDAAmD;QAEnD,WAAK,GAAY,KAAK,CAAC;QACvB,WAAK,GAAY,KAAK,CAAC;QACvB,WAAK,GAAY,KAAK,CAAC;QACvB,WAAK,GAAY,KAAK,CAAC;QACvB,WAAK,GAAY,KAAK,CAAC;;IA+nB3B,CAAC;oBAzpBoB,WAAW;IA+B5B,wBAAwB;IAExB,4BAAM,GAAN;QAAA,iBA8EC;QA5EG,MAAM,CAAC,OAAO,EAAE,CAAC;QACjB,IAAI,CAAC,UAAU,GAAG,CAAC,CAAC;QACpB,IAAI,CAAC,gBAAgB,EAAE,CAAC;QACxB,EAAE,CAAC,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC5B,EAAE,CAAC,EAAE,CAAC,UAAU,CAAC,OAAO,CAAC,SAAS,GAAG,KAAK,CAAC;QAC3C,IAAI,CAAC,eAAe,EAAE,CAAC;QACvB,OAAO,CAAC,GAAG,CAAC,MAAM,EAAC,EAAE,CAAC,EAAE,CAAC,UAAU,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;QACvD,EAAE,CAAC,EAAE,CAAC,YAAY,CAAC,SAAS,CAAC,aAAa,EAAE,CAAC;QAE7C,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,GAAE,KAAK,CAAC;QACtE,UAAU,CAAC;YACP,KAAI,CAAC,YAAY,EAAE,CAAC;QACxB,CAAC,EAAE,GAAG,CAAC,CAAC;QAGR,IAAI,aAAW,CAAC,SAAS,IAAI,IAAI,EAAE;YAC/B,aAAW,CAAC,SAAS,GAAG,IAAI,CAAC;YAC7B,EAAE,CAAC,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;SACzC;aACI;YACD,OAAO;SACV;QAED,IAAM,IAAI,GAAG,cAAc,CAAC;QAC5B,IAAM,KAAK,GAAG,aAAa,CAAC;QAC5B,EAAE,CAAC,SAAS,CAAC,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC,MAAM,EAAE,UAAC,GAAG,EAAE,MAAmB;YAC3D,IAAI,GAAG,EAAE;gBAEL,OAAO,CAAC,KAAK,CAAC,iBAAiB,EAAE,GAAG,CAAC,CAAC;gBACtC,EAAE,CAAC,QAAQ,CAAC,SAAS,CAAC,WAAW,CAAC,CAAC;gBACnC,OAAO;aACV;YACD,8BAA8B;YAC9B,KAAI,CAAC,WAAW,GAAG,MAAM,CAAC;YAC1B,OAAO,CAAC,GAAG,CAAC,aAAa,EAAE,KAAI,CAAC,WAAW,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;YAC3D,KAAI,CAAC,OAAO,EAAE,CAAC;YACf,KAAI,CAAC,KAAK,GAAG,IAAI,CAAC;QACtB,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,SAAS,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,MAAM,EAAE,UAAC,GAAG,EAAE,MAAmB;YAC5D,IAAI,GAAG,EAAE;gBACL,OAAO,CAAC,KAAK,CAAC,iBAAiB,EAAE,GAAG,CAAC,CAAC;gBACtC,EAAE,CAAC,QAAQ,CAAC,SAAS,CAAC,WAAW,CAAC,CAAC;gBACnC,OAAO;aACV;YACD,8BAA8B;YAC9B,KAAI,CAAC,WAAW,GAAG,MAAM,CAAC;YAC1B,KAAI,CAAC,KAAK,GAAG,IAAI,CAAC;YAClB,OAAO,CAAC,GAAG,CAAC,YAAY,EAAE,KAAI,CAAC,WAAW,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;YACzD,KAAI,CAAC,iBAAiB,EAAE,CAAC;QAC7B,CAAC,CAAC,CAAC;QAEH,YAAY;QAEZ,qBAAqB;QACrB,uDAAuD;QACvD,qBAAqB;QACrB,yDAAyD;QACzD,sBAAsB;QACtB,YAAY;QACZ,UAAU;QACV,YAAY;QAEJ,cAAc;QACtB,IAAI,EAAE,CAAC,GAAG,CAAC,QAAQ,KAAK,EAAE,CAAC,GAAG,CAAC,WAAW,EAAE;YACxC,YAAY;YACZ,EAAE,CAAC,MAAM,CAAC;gBACN,KAAI,CAAC,MAAM,EAAE,CAAC;YAClB,CAAC,CAAC,CAAC;YACH,cAAc;YACd,YAAY;YACZ,EAAE,CAAC,MAAM,CAAC;gBACN,KAAI,CAAC,MAAM,EAAE,CAAC;YAClB,CAAC,CAAC,CAAC;SACN;IAEL,CAAC;IAED,4BAAM,GAAN;QACI,EAAE,CAAC,WAAW,CAAC,SAAS,EAAE,CAAC;QAC3B,EAAE,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC;IACpB,CAAC;IAED,4BAAM,GAAN;QACI,EAAE,CAAC,WAAW,CAAC,WAAW,EAAE,CAAC;QAC7B,EAAE,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC;IACrB,CAAC;IAED,yCAAmB,GAAnB;IACA,CAAC;IAKD,uCAAiB,GAAjB;QACI,IAAM,KAAK,GAAG,CAAC,MAAM,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,EAAC,OAAO,EAAC,IAAI,EAAC,QAAQ,EAAC,SAAS,CAAC,CAAC;QACxF,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,UAAC,CAAC,EAAE,CAAC;YACvB,IAAM,MAAM,GAAG,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;YACrC,IAAM,MAAM,GAAG,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;YACrC,IAAI,MAAM,KAAK,CAAC,CAAC;gBAAE,OAAO,CAAC,CAAC;YAC5B,IAAI,MAAM,KAAK,CAAC,CAAC;gBAAE,OAAO,CAAC,CAAC,CAAC;YAC7B,OAAO,MAAM,GAAG,MAAM,CAAC;QAC3B,CAAC,CAAC,CAAC;IAEP,CAAC;IAED,qCAAe,GAAf;QACI,IAAM,KAAK,GAAG,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC;QAC3C,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,UAAC,CAAC,EAAE,CAAC;YAC3B,IAAM,MAAM,GAAG,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,EAAC,CAAC,CAAC,CAAC,CAAC;YACjD,IAAM,MAAM,GAAG,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,EAAC,CAAC,CAAC,CAAC,CAAC;YACjD,IAAI,MAAM,KAAK,CAAC,CAAC;gBAAE,OAAO,CAAC,CAAC;YAC5B,IAAI,MAAM,KAAK,CAAC,CAAC;gBAAE,OAAO,CAAC,CAAC,CAAC;YAC7B,OAAO,MAAM,GAAG,MAAM,CAAC;QAC3B,CAAC,CAAC,CAAC;IACP,CAAC;IAED,6BAAO,GAAP;QACI,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,UAAC,CAAC,EAAE,CAAC;;YACvB,aAAa;YACb,IAAM,OAAO,GAAG,QAAQ,CAAC,OAAA,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,0CAAG,CAAC,MAAK,GAAG,EAAE,EAAE,CAAC,CAAC;YAC9D,IAAM,OAAO,GAAG,QAAQ,CAAC,OAAA,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,0CAAG,CAAC,MAAK,GAAG,EAAE,EAAE,CAAC,CAAC;YAC9D,OAAO,OAAO,GAAG,OAAO,CAAC;QAC7B,CAAC,CAAC,CAAC;IACP,CAAC;IAED,2BAAK,GAAL;IAEA,CAAC;IAED,+BAAS,GAAT;QACI,OAAO,CAAC,GAAG,CAAC,qBAAqB,EAAC,EAAE,CAAC,EAAE,CAAC,UAAU,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;QAClE,EAAE,CAAC,QAAQ,CAAC,SAAS,CAAC,WAAW,CAAC,CAAC;IACvC,CAAC;IAED,gCAAU,GAAV;QACI,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC;aACrC,EAAE,CAAC,GAAG,EAAE,EAAC,OAAO,EAAE,GAAG,EAAC,CAAC;aACvB,IAAI,CAAC;YAEF,aAAa;YACb,EAAE,CAAC,QAAQ,CAAC,SAAS,CAAC,WAAW,EAAE,UAAC,GAAG;gBACnC,IAAI,GAAG,EAAE;oBACL,OAAO,CAAC,KAAK,CAAC,oBAAoB,EAAE,GAAG,CAAC,CAAC;iBAC5C;qBAAM;oBACH,EAAE,CAAC,QAAQ,CAAC,SAAS,CAAC,WAAW,CAAC,CAAC;iBACtC;YACL,CAAC,CAAC,CAAC;QACP,CAAC,CAAC;aACD,KAAK,EAAE,CAAC;QAET,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC;aACzC,EAAE,CAAC,GAAG,EAAC,EAAC,OAAO,EAAE,GAAG,EAAC,CAAC;aACtB,KAAK,EAAE,CAAC;QAEb,0BAA0B;QAC1B,mBAAmB;IAGvB,CAAC;IAGD,kCAAY,GAAZ,UAAa,UAAc;QAA3B,iBA0BC;QA1BY,2BAAA,EAAA,cAAc;QACvB,YAAY;QACX,IAAI,OAAO,EAAE,KAAK,WAAW,IAAI,EAAE,KAAK,IAAI,EAAE;YACvC,IAAI,SAAS,GAAG,EAAE,CAAC,EAAE,CAAC,cAAc,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC;YACzD,qBAAqB;YACrB,IAAG,SAAS,IAAI,SAAS,IAAI,SAAS,IAAI,EAAE,IAAI,SAAS,IAAI,IAAI,EAAC;gBAC9D,IAAI,CAAC,WAAW,CAAC,UAAU,CAAC,CAAC;aAChC;YACD,kBAAkB;iBACd;gBACA,IAAI,CAAC,WAAW,EAAE,CAAC;aACtB;YACD,OAAO,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;YACvB,EAAE,CAAC,EAAE,CAAC,QAAQ,CAAC,SAAS,CAAC,UAAC,IAAI;gBAC1B,OAAO,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;gBACzB,KAAI,CAAC,KAAK,GAAG,IAAI,CAAC;YACtB,CAAC,CAAC,CAAC;SAET;aACG;YACD,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC;YAClB,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC;YAClB,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC;YAClB,EAAE,CAAC,EAAE,CAAC,QAAQ,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;SACjC;QACF,SAAS;IACb,CAAC;IAED,qCAAe,GAAf;QACI,IAAI,SAAS,GAAG,EAAE,CAAC,EAAE,CAAC,cAAc,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC;QACzD,IAAG,SAAS,IAAI,SAAS,IAAI,SAAS,IAAI,EAAE,IAAI,SAAS,IAAI,IAAI,EAAC;YAC9D,SAAS,GAAG;gBACR,WAAW,EAAE,IAAI;gBACjB,YAAY,EAAE,IAAI;gBAClB,aAAa,EAAE,IAAI;aACtB,CAAA;YACD,EAAE,CAAC,EAAE,CAAC,cAAc,CAAC,UAAU,CAAC,OAAO,EAAC,SAAS,CAAC,CAAC;SACtD;aACG;YACA,EAAE,CAAC,EAAE,CAAC,UAAU,CAAC,OAAO,CAAC,SAAS,GAAG,SAAS,CAAC,SAAS,CAAC;YACzD,EAAE,CAAC,EAAE,CAAC,UAAU,CAAC,OAAO,CAAC,UAAU,GAAG,SAAS,CAAC,UAAU,CAAC;YAC3D,EAAE,CAAC,EAAE,CAAC,UAAU,CAAC,OAAO,CAAC,WAAW,GAAG,SAAS,CAAC,WAAW,CAAC;SAChE;IACL,CAAC;IAED,eAAe;IACf,iCAAW,GAAX;QAAA,iBAqMC;QApMG,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;QACrB,IAAI,MAAM,GAAG,EAAE,CAAC,EAAE,CAAC,cAAc,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC;QACvD,IAAG,MAAM,IAAI,IAAI,IAAI,MAAM,IAAI,EAAE,IAAI,MAAM,IAAI,SAAS,EAAC;YACrD,OAAO,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;YACxB,YAAY;YACZ,EAAE,CAAC,KAAK,CAAC,YAAY,CAAC;gBACtB,IAAI,EAAE,UAAU;gBACZ,IAAI,EAAE;oBACF,MAAM,EAAE,MAAM;iBACjB;gBACD,OAAO,EAAE,UAAA,GAAG;oBACR,OAAO,CAAC,GAAG,CAAC,UAAU,EAAE,GAAG,CAAC,MAAM,CAAC,CAAA;oBACnC,IAAG,GAAG,CAAC,MAAM,CAAC,IAAI,IAAI,GAAG,IAAI,GAAG,CAAC,MAAM,CAAC,OAAO,IAAI,SAAS,EAAC;qBAC5D;yBACI,IAAG,GAAG,CAAC,MAAM,CAAC,IAAI,IAAI,GAAG,EAAC;wBAC3B,IAAG,GAAG,CAAC,MAAM,CAAC,IAAI,EAAC;4BACf,EAAE,CAAC,EAAE,CAAC,UAAU,CAAC,OAAO,CAAC,MAAM,GAAG,GAAG,CAAC,MAAM,CAAC,MAAM,CAAC;4BACpD,EAAE,CAAC,EAAE,CAAC,UAAU,CAAC,OAAO,CAAC,QAAQ,GAAG,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC;4BAC7D,EAAE,CAAC,EAAE,CAAC,UAAU,CAAC,OAAO,CAAC,UAAU,GAAG,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC;4BACjE,IAAM,aAAa,GAAG,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,aAAa,CAAC;4BACpD,yBAAW,CAAC,GAAG,CAAC,cAAc,CAAC,aAAa,CAAC,CAAC;4BAC9C,EAAE,CAAC,EAAE,CAAC,cAAc,CAAC,UAAU,CAAC,QAAQ,EAAC,EAAE,CAAC,EAAE,CAAC,UAAU,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;yBAC7E;qBACJ;gBACL,CAAC;gBACD,IAAI,EAAE,UAAA,GAAG;oBACL,OAAO,CAAC,KAAK,CAAC,UAAU,EAAE,GAAG,CAAC,CAAA;gBAClC,CAAC;aACJ,CAAC,CAAA;SACL;aACG;YACA,IAAG,MAAM;gBACL,EAAE,CAAC,EAAE,CAAC,UAAU,CAAC,OAAO,CAAC,MAAM,GAAG,MAAM,CAAC;SAChD;QAID,MAAM;QACN,EAAE,CAAC,EAAE,CAAC,QAAQ,CAAC,YAAY,CAAC,UAAC,IAAI;YAC7B,IAAM,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;YAC7B,IAAI,SAAS,GAAG,EAAE,CAAC,EAAE,CAAC,cAAc,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC;YACzD,IAAG,IAAI,CAAC,MAAM,CAAC,IAAI,IAAI,GAAG,IAAI,IAAI,CAAC,MAAM,CAAC,OAAO,IAAI,SAAS,EAAC;gBAC3D,mCAAmC;gBACnC,IAAG,SAAS,CAAC,KAAK,EAAC;oBACf,EAAE,CAAC,EAAE,CAAC,UAAU,CAAC,OAAO,CAAC,KAAK,GAAG,SAAS,CAAC,KAAK,CAAC;iBACpD;gBACD,KAAI,CAAC,KAAK,GAAG,IAAI,CAAC;gBAClB,EAAE,CAAC,EAAE,CAAC,QAAQ,CAAC,YAAY,CAAC,UAAC,IAAI;gBACjC,CAAC,CAAC,CAAC;aACN;iBACI,IAAG,IAAI,CAAC,MAAM,CAAC,IAAI,IAAI,GAAG,EAAC;gBAC5B,mDAAmD;gBACnD,gCAAgC;gBAChC,IAAI,IAAI,GAAG,IAAI,CAAC,MAAM,CAAC,SAAS,GAAG,SAAS,CAAC,SAAS,CAAC;gBACvD,OAAO,CAAC,GAAG,CAAC,QAAQ,EAAC,IAAI,CAAC,CAAC;gBAC3B,IAAG,CAAC,IAAI,CAAC,MAAM,CAAC,SAAS,GAAG,SAAS,CAAC,SAAS,CAAC,GAAG,KAAK,EAAC;oBACrD,IAAG,SAAS,CAAC,KAAK,EAAC;wBACf,OAAO,CAAC,GAAG,CAAC,WAAW,EAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;wBAC1C,EAAE,CAAC,EAAE,CAAC,UAAU,CAAC,OAAO,CAAC,KAAK,GAAG,SAAS,CAAC,KAAK,CAAC;wBACjD,sDAAsD;wBACtD,EAAE,CAAC,EAAE,CAAC,QAAQ,CAAC,YAAY,CAAC,UAAC,IAAI;wBACjC,CAAC,CAAC,CAAC;qBACN;iBAEJ;gBACD,6BAA6B;qBACzB;oBACA,OAAO,CAAC,GAAG,CAAC,UAAU,EAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;oBACzC,EAAE,CAAC,EAAE,CAAC,UAAU,CAAC,OAAO,CAAC,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC;oBAClD,SAAS,CAAC,KAAK,GAAG,EAAE,CAAC,EAAE,CAAC,UAAU,CAAC,OAAO,CAAC,KAAK,CAAC;oBACjD,SAAS,CAAC,SAAS,GAAG,SAAS,CAAC;oBAChC,gEAAgE;oBAChE,EAAE,CAAC,EAAE,CAAC,cAAc,CAAC,UAAU,CAAC,OAAO,EAAC,SAAS,CAAC,CAAC;iBACtD;gBACD,KAAI,CAAC,KAAK,GAAG,IAAI,CAAC;aACrB;QACL,CAAC,CAAC,CAAC;QACH,MAAM;QACN,EAAE,CAAC,EAAE,CAAC,QAAQ,CAAC,WAAW,CAAC,UAAC,IAAI;YAC5B,IAAM,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;YAC7B,IAAI,QAAQ,GAAG,EAAE,CAAC,EAAE,CAAC,cAAc,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;YACvD,IAAG,IAAI,CAAC,MAAM,CAAC,IAAI,IAAI,GAAG,IAAI,IAAI,CAAC,MAAM,CAAC,OAAO,IAAI,SAAS,EAAC;gBAC3D,IAAG,QAAQ,CAAC,IAAI;oBACZ,EAAE,CAAC,EAAE,CAAC,UAAU,CAAC,OAAO,CAAC,IAAI,GAAG,QAAQ,CAAC,IAAI,CAAC;gBAClD,OAAO,CAAC,GAAG,CAAC,kBAAkB,EAAC,EAAE,CAAC,EAAE,CAAC,UAAU,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;gBAC9D,KAAI,CAAC,KAAK,GAAG,IAAI,CAAC;gBAClB,EAAE,CAAC,EAAE,CAAC,QAAQ,CAAC,WAAW,CAAC,UAAC,IAAI;gBAChC,CAAC,CAAC,CAAC;aACN;iBACI,IAAG,IAAI,CAAC,MAAM,CAAC,IAAI,IAAI,GAAG,EAAC;gBAC5B,mDAAmD;gBACnD,gCAAgC;gBAChC,IAAI,IAAI,GAAG,IAAI,CAAC,MAAM,CAAC,SAAS,GAAG,QAAQ,CAAC,SAAS,CAAC;gBACtD,OAAO,CAAC,GAAG,CAAC,QAAQ,EAAC,IAAI,CAAC,CAAC;gBAC3B,IAAG,CAAC,IAAI,CAAC,MAAM,CAAC,SAAS,GAAG,QAAQ,CAAC,SAAS,CAAC,GAAG,KAAK,EAAC;oBACpD,OAAO,CAAC,GAAG,CAAC,UAAU,EAAC,QAAQ,CAAC,CAAC;oBACjC,IAAG,QAAQ,CAAC,IAAI;wBACZ,EAAE,CAAC,EAAE,CAAC,UAAU,CAAC,OAAO,CAAC,IAAI,GAAG,QAAQ,CAAC,IAAI,CAAC;yBAC9C;wBACA,EAAE,CAAC,EAAE,CAAC,UAAU,CAAC,OAAO,CAAC,IAAI,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC;wBACjD,QAAQ,CAAC,IAAI,GAAG,EAAE,CAAC,EAAE,CAAC,UAAU,CAAC,OAAO,CAAC,IAAI,CAAC;wBAC9C,QAAQ,CAAC,SAAS,GAAG,SAAS,CAAC;wBAC/B,OAAO,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC;wBAC3B,EAAE,CAAC,EAAE,CAAC,cAAc,CAAC,UAAU,CAAC,MAAM,EAAC,QAAQ,CAAC,CAAC;qBACpD;oBACD,OAAO,CAAC,GAAG,CAAC,QAAQ,EAAC,EAAE,CAAC,EAAE,CAAC,UAAU,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;oBACpD,EAAE,CAAC,EAAE,CAAC,QAAQ,CAAC,WAAW,CAAC,UAAC,IAAI;oBAChC,CAAC,CAAC,CAAC;iBACN;gBACD,6BAA6B;qBACzB;oBACA,OAAO,CAAC,GAAG,CAAC,WAAW,EAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;oBAC1C,EAAE,CAAC,EAAE,CAAC,UAAU,CAAC,OAAO,CAAC,IAAI,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC;oBACjD,QAAQ,CAAC,IAAI,GAAG,EAAE,CAAC,EAAE,CAAC,UAAU,CAAC,OAAO,CAAC,IAAI,CAAC;oBAC9C,QAAQ,CAAC,SAAS,GAAG,SAAS,CAAC;oBAC/B,OAAO,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC;oBAC1B,EAAE,CAAC,EAAE,CAAC,cAAc,CAAC,UAAU,CAAC,MAAM,EAAC,QAAQ,CAAC,CAAC;iBACpD;gBACD,KAAI,CAAC,KAAK,GAAG,IAAI,CAAC;aACrB;QACL,CAAC,CAAC,CAAC;QACH,MAAM;QACN,EAAE,CAAC,EAAE,CAAC,QAAQ,CAAC,WAAW,CAAC,UAAC,IAAI;YAC5B,IAAM,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;YAC7B,IAAI,QAAQ,GAAG,EAAE,CAAC,EAAE,CAAC,cAAc,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;YACvD,IAAG,IAAI,CAAC,MAAM,CAAC,IAAI,IAAI,GAAG,IAAI,IAAI,CAAC,MAAM,CAAC,OAAO,IAAI,SAAS,EAAC;gBAC3D,OAAO,CAAC,GAAG,CAAC,kBAAkB,EAAC,QAAQ,CAAC,CAAC;gBACzC,IAAG,QAAQ,CAAC,YAAY,IAAI,SAAS,IAAI,QAAQ,CAAC,YAAY,IAAI,SAAS,IAAI,QAAQ,CAAC,WAAW,IAAI,SAAS,EAAC;oBACzG,OAAO,CAAC,GAAG,CAAC,eAAe,CAAC,CAAC;oBAC7B,EAAE,CAAC,EAAE,CAAC,UAAU,CAAC,OAAO,CAAC,YAAY,GAAG,CAAC,CAAC;oBAC1C,EAAE,CAAC,EAAE,CAAC,UAAU,CAAC,OAAO,CAAC,YAAY,GAAG,CAAC,CAAC;oBAC1C,EAAE,CAAC,EAAE,CAAC,UAAU,CAAC,OAAO,CAAC,UAAU,GAAG,CAAC,CAAC;oBACxC,IAAI,WAAW,GAAG;wBACd,cAAc,EAAC,EAAE,CAAC,EAAE,CAAC,UAAU,CAAC,OAAO,CAAC,YAAY;wBACpD,cAAc,EAAC,EAAE,CAAC,EAAE,CAAC,UAAU,CAAC,OAAO,CAAC,YAAY;wBACpD,aAAa,EAAC,EAAE,CAAC,EAAE,CAAC,UAAU,CAAC,OAAO,CAAC,UAAU;wBACjD,WAAW,EAAC,SAAS;qBACxB,CAAA;oBACD,OAAO,CAAC,GAAG,CAAC,gBAAgB,EAAC,WAAW,CAAC,CAAC;oBAC1C,EAAE,CAAC,EAAE,CAAC,cAAc,CAAC,UAAU,CAAC,MAAM,EAAC,WAAW,CAAC,CAAC;iBAC3D;qBACG;oBACA,EAAE,CAAC,EAAE,CAAC,UAAU,CAAC,OAAO,CAAC,YAAY,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC;oBAChE,EAAE,CAAC,EAAE,CAAC,UAAU,CAAC,OAAO,CAAC,YAAY,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC;oBAChE,EAAE,CAAC,EAAE,CAAC,UAAU,CAAC,OAAO,CAAC,WAAW,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC;iBACtE;gBAGD,EAAE,CAAC,EAAE,CAAC,UAAU,CAAC,OAAO,CAAC,YAAY,GAAG,QAAQ,CAAC,YAAY,CAAC;gBAC9D,EAAE,CAAC,EAAE,CAAC,UAAU,CAAC,OAAO,CAAC,YAAY,GAAG,QAAQ,CAAC,YAAY,CAAC;gBAC9D,EAAE,CAAC,EAAE,CAAC,UAAU,CAAC,OAAO,CAAC,WAAW,GAAG,QAAQ,CAAC,WAAW,CAAC;gBAC5D,EAAE,CAAC,EAAE,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC,EAAC,CAAC,EAAC,UAAC,IAAI;gBACpC,CAAC,CAAC,CAAC;aACN;iBACI,IAAG,IAAI,CAAC,MAAM,CAAC,IAAI,IAAI,GAAG,EAAC;gBAC5B,0EAA0E;gBAC1E,IAAG,CAAC,IAAI,CAAC,MAAM,CAAC,SAAS,GAAG,QAAQ,CAAC,SAAS,CAAC,GAAG,KAAK,EAAC;oBACpD,OAAO,CAAC,GAAG,CAAC,UAAU,EAAC,QAAQ,CAAC,CAAC;oBACjC,IAAG,QAAQ,CAAC,YAAY,IAAI,SAAS,IAAI,QAAQ,CAAC,YAAY,IAAI,SAAS,IAAI,QAAQ,CAAC,WAAW,IAAI,SAAS,EAAC;wBAC7G,OAAO,CAAC,GAAG,CAAC,cAAc,EAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;wBAC7C,EAAE,CAAC,EAAE,CAAC,UAAU,CAAC,OAAO,CAAC,YAAY,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC;wBAChE,EAAE,CAAC,EAAE,CAAC,UAAU,CAAC,OAAO,CAAC,YAAY,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC;wBAChE,EAAE,CAAC,EAAE,CAAC,UAAU,CAAC,OAAO,CAAC,WAAW,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC;wBACnE,IAAI,WAAW,GAAG;4BACd,cAAc,EAAC,EAAE,CAAC,EAAE,CAAC,UAAU,CAAC,OAAO,CAAC,YAAY;4BACpD,cAAc,EAAC,EAAE,CAAC,EAAE,CAAC,UAAU,CAAC,OAAO,CAAC,YAAY;4BACpD,aAAa,EAAC,EAAE,CAAC,EAAE,CAAC,UAAU,CAAC,OAAO,CAAC,WAAW;4BAClD,WAAW,EAAC,SAAS;yBACxB,CAAA;wBACD,OAAO,CAAC,GAAG,CAAC,eAAe,EAAC,WAAW,CAAC,CAAC;wBACzC,EAAE,CAAC,EAAE,CAAC,cAAc,CAAC,UAAU,CAAC,MAAM,EAAC,WAAW,CAAC,CAAC;qBACvD;yBACG;wBACA,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;wBACtB,EAAE,CAAC,EAAE,CAAC,UAAU,CAAC,OAAO,CAAC,YAAY,GAAG,QAAQ,CAAC,YAAY,CAAC;wBAC9D,EAAE,CAAC,EAAE,CAAC,UAAU,CAAC,OAAO,CAAC,YAAY,GAAG,QAAQ,CAAC,YAAY,CAAC;wBAC9D,EAAE,CAAC,EAAE,CAAC,UAAU,CAAC,OAAO,CAAC,WAAW,GAAG,QAAQ,CAAC,WAAW,CAAC;wBAC5D,EAAE,CAAC,EAAE,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC,EAAC,CAAC,EAAC,UAAC,IAAI;wBACpC,CAAC,CAAC,CAAC;qBACN;iBACJ;qBACG;oBACA,EAAE,CAAC,EAAE,CAAC,UAAU,CAAC,OAAO,CAAC,YAAY,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC;oBAChE,EAAE,CAAC,EAAE,CAAC,UAAU,CAAC,OAAO,CAAC,YAAY,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC;oBAChE,EAAE,CAAC,EAAE,CAAC,UAAU,CAAC,OAAO,CAAC,WAAW,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC;oBACnE,IAAI,WAAW,GAAG;wBACd,cAAc,EAAC,EAAE,CAAC,EAAE,CAAC,UAAU,CAAC,OAAO,CAAC,YAAY;wBACpD,cAAc,EAAC,EAAE,CAAC,EAAE,CAAC,UAAU,CAAC,OAAO,CAAC,YAAY;wBACpD,aAAa,EAAC,EAAE,CAAC,EAAE,CAAC,UAAU,CAAC,OAAO,CAAC,WAAW;wBAClD,WAAW,EAAC,SAAS;qBACxB,CAAA;oBACD,OAAO,CAAC,GAAG,CAAC,iBAAiB,EAAC,WAAW,EAAC,IAAI,CAAC,MAAM,CAAC,CAAC;oBACvD,EAAE,CAAC,EAAE,CAAC,cAAc,CAAC,UAAU,CAAC,MAAM,EAAC,WAAW,CAAC,CAAC;iBACvD;aACJ;QACL,CAAC,CAAC,CAAC;IACP,CAAC;IACD,eAAe;IACf,iCAAW,GAAX,UAAY,UAAiB;QAA7B,iBA8LC;QA7LG,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;QACrB,IAAM,WAAW,GAAG,EAAE,CAAC;QACvB,IAAM,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QAC7B,SAAS;QACT,YAAY;QACZ,EAAE,CAAC,KAAK,CAAC,YAAY,CAAC;YACtB,IAAI,EAAE,UAAU;YAChB,IAAI,EAAE;gBACF,MAAM,EAAE,MAAM;aACjB;YACD,OAAO,EAAE,UAAA,GAAG;gBACR,OAAO,CAAC,GAAG,CAAC,UAAU,EAAE,GAAG,CAAC,MAAM,CAAC,CAAA;gBACnC,IAAG,GAAG,CAAC,MAAM,CAAC,IAAI,IAAI,GAAG,IAAI,GAAG,CAAC,MAAM,CAAC,OAAO,IAAI,SAAS,EAAC;oBACzD,IAAG,GAAG,CAAC,MAAM,CAAC,MAAM,EAAC;wBACjB,EAAE,CAAC,EAAE,CAAC,UAAU,CAAC,OAAO,CAAC,MAAM,GAAG,GAAG,CAAC,MAAM,CAAC,MAAM,CAAA;qBACtD;oBACD,EAAE,CAAC,EAAE,CAAC,UAAU,CAAC,OAAO,CAAC,KAAK,GAAG,IAAI,CAAC;oBACtC,KAAI,CAAC,KAAK,GAAG,IAAI,CAAC;oBAClB,KAAI,CAAC,KAAK,GAAG,IAAI,CAAC;oBAClB,IAAI,SAAS,GAAG,EAAC,OAAO,EAAC,CAAC,EAAC,WAAW,EAAC,SAAS,EAAC,CAAC;oBAClD,EAAE,CAAC,EAAE,CAAC,cAAc,CAAC,UAAU,CAAC,OAAO,EAAC,SAAS,CAAC,CAAC;oBACnD,IAAI,QAAQ,GAAG,EAAC,MAAM,EAAC,CAAC,EAAC,WAAW,EAAC,SAAS,EAAC,CAAC;oBAChD,OAAO,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC;oBAC3B,EAAE,CAAC,EAAE,CAAC,cAAc,CAAC,UAAU,CAAC,MAAM,EAAC,QAAQ,CAAC,CAAC;oBACjD,IAAI,QAAQ,GAAG;wBACX,cAAc,EAAC,CAAC;wBAChB,cAAc,EAAC,CAAC;wBAChB,aAAa,EAAC,CAAC;wBACf,WAAW,EAAC,SAAS;qBACxB,CAAA;oBACD,EAAE,CAAC,EAAE,CAAC,cAAc,CAAC,UAAU,CAAC,MAAM,EAAC,QAAQ,CAAC,CAAC;oBAGjD,EAAE,CAAC,EAAE,CAAC,QAAQ,CAAC,WAAW,CAAC,UAAC,IAAI;wBAC5B,IAAG,IAAI,CAAC,MAAM,CAAC,IAAI,IAAI,GAAG,EAAC;4BACvB,OAAO,CAAC,GAAG,CAAC,UAAU,EAAC,IAAI,CAAC,CAAC;4BAC7B,YAAY;4BACZ,EAAE,CAAC,KAAK,CAAC,YAAY,CAAC;gCAClB,IAAI,EAAE,UAAU;gCAChB,IAAI,EAAE;oCACF,MAAM,EAAE,MAAM;iCACjB;gCACD,OAAO,EAAE,UAAA,GAAG;oCACR,OAAO,CAAC,GAAG,CAAC,oBAAoB,CAAC,CAAA;oCACjC,IAAG,GAAG,CAAC,MAAM,CAAC,IAAI,IAAI,GAAG,EAAC;wCACtB,IAAM,IAAI,GAAG,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,aAAa,CAAC;wCAC3C,yBAAW,CAAC,GAAG,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC;qCACxC;gCACL,CAAC;6BACJ,CAAC,CAAA;yBACL;oBACL,CAAC,CAAC,CAAC;oBACH,OAAO,CAAC,GAAG,CAAC,YAAY,EAAC,EAAE,CAAC,EAAE,CAAC,UAAU,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;oBACxD,EAAE,CAAC,EAAE,CAAC,QAAQ,CAAC,WAAW,CAAC,EAAE,CAAC,EAAE,CAAC,UAAU,CAAC,OAAO,CAAC,IAAI,EAAC,UAAC,IAAI;oBAE9D,CAAC,CAAC,CAAC;oBACH,EAAE,CAAC,EAAE,CAAC,QAAQ,CAAC,YAAY,CAAC,UAAC,IAAI;oBACjC,CAAC,CAAC,CAAC;oBACH,UAAU,CAAC;wBACP,EAAE,CAAC,EAAE,CAAC,UAAU,CAAC,OAAO,CAAC,YAAY,GAAG,CAAC,CAAC;wBAC1C,EAAE,CAAC,EAAE,CAAC,UAAU,CAAC,OAAO,CAAC,YAAY,GAAG,CAAC,CAAC;wBAC1C,EAAE,CAAC,EAAE,CAAC,UAAU,CAAC,OAAO,CAAC,WAAW,GAAG,CAAC,CAAC;wBACzC,EAAE,CAAC,EAAE,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC,EAAC,CAAC,EAAC,UAAC,IAAI;4BAChC,IAAG,IAAI,CAAC,MAAM,CAAC,IAAI,IAAI,GAAG,EAAC;gCACvB,OAAO,CAAC,GAAG,CAAC,UAAU,EAAC,IAAI,CAAC,CAAC;6BAChC;iCACG;gCACA,yBAAW,CAAC,GAAG,CAAC,SAAS,CAAC,aAAa,CAAC,CAAC;gCACzC,UAAU,CAAC;oCACP,KAAI,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;gCACxB,CAAC,EAAE,IAAI,CAAC,CAAC;6BACZ;wBACL,CAAC,CAAC,CAAC;oBACP,CAAC,EAAE,CAAC,CAAC,CAAC;iBACT;qBACI,IAAG,GAAG,CAAC,MAAM,CAAC,IAAI,IAAI,GAAG,EAAC;oBAC3B,IAAG,GAAG,CAAC,MAAM,CAAC,IAAI,EAAC;wBACf,EAAE,CAAC,EAAE,CAAC,UAAU,CAAC,OAAO,CAAC,MAAM,GAAG,GAAG,CAAC,MAAM,CAAC,MAAM,CAAC;wBACpD,EAAE,CAAC,EAAE,CAAC,UAAU,CAAC,OAAO,CAAC,KAAK,GAAG,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC;wBACvD,EAAE,CAAC,EAAE,CAAC,UAAU,CAAC,OAAO,CAAC,IAAI,GAAG,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC;wBAC3D,EAAE,CAAC,EAAE,CAAC,UAAU,CAAC,OAAO,CAAC,YAAY,GAAG,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,YAAY,CAAC;wBACrE,EAAE,CAAC,EAAE,CAAC,UAAU,CAAC,OAAO,CAAC,YAAY,GAAG,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,YAAY,CAAC;wBACrE,EAAE,CAAC,EAAE,CAAC,UAAU,CAAC,OAAO,CAAC,WAAW,GAAG,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC;wBACnE,EAAE,CAAC,EAAE,CAAC,UAAU,CAAC,OAAO,CAAC,QAAQ,GAAG,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC;wBAC7D,EAAE,CAAC,EAAE,CAAC,UAAU,CAAC,OAAO,CAAC,UAAU,GAAG,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC;wBACjE,EAAE,CAAC,EAAE,CAAC,cAAc,CAAC,UAAU,CAAC,QAAQ,EAAC,EAAE,CAAC,EAAE,CAAC,UAAU,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;wBAC1E,IAAM,aAAa,GAAG,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,aAAa,CAAC;wBACpD,yBAAW,CAAC,GAAG,CAAC,cAAc,CAAC,aAAa,CAAC,CAAC;qBACjD;oBACD,UAAU,CAAC;wBACP,EAAE,CAAC,EAAE,CAAC,QAAQ,CAAC,WAAW,CAAC,UAAC,IAAI;4BAC5B,IAAG,IAAI,CAAC,MAAM,CAAC,IAAI,IAAI,GAAG,IAAI,IAAI,CAAC,MAAM,CAAC,OAAO,IAAI,SAAS,EAAC;gCAE3D,IAAI,QAAQ,GAAG,EAAC,MAAM,EAAC,CAAC,EAAC,WAAW,EAAC,SAAS,EAAC,CAAC;gCAChD,EAAE,CAAC,EAAE,CAAC,UAAU,CAAC,OAAO,CAAC,IAAI,GAAG,CAAC,CAAC;gCAClC,EAAE,CAAC,EAAE,CAAC,cAAc,CAAC,UAAU,CAAC,MAAM,EAAC,QAAQ,CAAC,CAAC;gCACjD,OAAO,CAAC,GAAG,CAAC,kBAAkB,EAAC,EAAE,CAAC,EAAE,CAAC,UAAU,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;gCAC9D,EAAE,CAAC,EAAE,CAAC,QAAQ,CAAC,WAAW,CAAC,UAAC,IAAI;oCAC5B,0BAA0B;oCAC1B,KAAI,CAAC,KAAK,GAAG,IAAI,CAAC;gCACtB,CAAC,CAAC,CAAC;6BACN;iCACI,IAAG,IAAI,CAAC,MAAM,CAAC,IAAI,IAAI,GAAG,EAAC;gCAC5B,mDAAmD;gCACnD,EAAE,CAAC,EAAE,CAAC,UAAU,CAAC,OAAO,CAAC,IAAI,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC;gCACjD,IAAI,QAAQ,GAAG,EAAC,MAAM,EAAC,EAAE,CAAC,EAAE,CAAC,UAAU,CAAC,OAAO,CAAC,IAAI,EAAC,WAAW,EAAC,SAAS,EAAC,CAAC;gCAC5E,OAAO,CAAC,GAAG,CAAC,SAAS,EAAC,EAAE,CAAC,EAAE,CAAC,UAAU,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;gCACrD,OAAO,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC;gCAC1B,EAAE,CAAC,EAAE,CAAC,cAAc,CAAC,UAAU,CAAC,MAAM,EAAC,QAAQ,CAAC,CAAC;gCACjD,KAAI,CAAC,KAAK,GAAG,IAAI,CAAC;6BACrB;wBACL,CAAC,CAAC,CAAA;oBACN,CAAC,EAAE,GAAG,CAAC,CAAC;oBAER,EAAE,CAAC,EAAE,CAAC,QAAQ,CAAC,YAAY,CAAC,UAAC,IAAI;wBAC7B,IAAG,IAAI,CAAC,MAAM,CAAC,IAAI,IAAI,GAAG,IAAI,IAAI,CAAC,MAAM,CAAC,OAAO,IAAI,SAAS,EAAC;4BAC3D,OAAO,CAAC,GAAG,CAAC,kBAAkB,CAAC,CAAC;4BAChC,IAAI,SAAS,GAAG,EAAC,OAAO,EAAC,CAAC,EAAC,WAAW,EAAC,SAAS,EAAC,CAAC;4BAClD,0CAA0C;4BACzC,EAAE,CAAC,EAAE,CAAC,UAAU,CAAC,OAAO,CAAC,KAAK,GAAG,CAAC,CAAC;4BACpC,EAAE,CAAC,EAAE,CAAC,cAAc,CAAC,UAAU,CAAC,OAAO,EAAC,SAAS,CAAC,CAAC;4BACnD,EAAE,CAAC,EAAE,CAAC,QAAQ,CAAC,YAAY,CAAC,UAAC,IAAI;gCAC7B,OAAO,CAAC,GAAG,CAAC,OAAO,EAAC,IAAI,CAAC,CAAC;gCAC1B,KAAI,CAAC,KAAK,GAAG,IAAI,CAAC;4BACtB,CAAC,CAAC,CAAC;yBACN;6BACI,IAAG,IAAI,CAAC,MAAM,CAAC,IAAI,IAAI,GAAG,EAAC;4BAC5B,OAAO,CAAC,GAAG,CAAC,iBAAiB,EAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;4BAChD,EAAE,CAAC,EAAE,CAAC,UAAU,CAAC,OAAO,CAAC,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC;4BAClD,IAAI,SAAS,GAAG,EAAC,OAAO,EAAC,EAAE,CAAC,EAAE,CAAC,UAAU,CAAC,OAAO,CAAC,KAAK,EAAC,WAAW,EAAC,SAAS,EAAC,CAAC;4BAC/E,0CAA0C;4BAC1C,EAAE,CAAC,EAAE,CAAC,cAAc,CAAC,UAAU,CAAC,OAAO,EAAC,SAAS,CAAC,CAAC;4BACnD,KAAI,CAAC,KAAK,GAAG,IAAI,CAAC;yBACrB;oBACL,CAAC,CAAC,CAAA;oBACF,UAAU,CAAC;wBACP,EAAE,CAAC,EAAE,CAAC,QAAQ,CAAC,WAAW,CAAC,UAAC,IAAI;4BAC5B,IAAG,IAAI,CAAC,MAAM,CAAC,IAAI,IAAI,GAAG,IAAI,IAAI,CAAC,MAAM,CAAC,OAAO,IAAI,SAAS,EAAC;gCAC3D,OAAO,CAAC,GAAG,CAAC,kBAAkB,CAAC,CAAC;gCAChC,EAAE,CAAC,EAAE,CAAC,UAAU,CAAC,OAAO,CAAC,YAAY,GAAG,CAAC,CAAC;gCAC1C,EAAE,CAAC,EAAE,CAAC,UAAU,CAAC,OAAO,CAAC,YAAY,GAAG,CAAC,CAAC;gCAC1C,EAAE,CAAC,EAAE,CAAC,UAAU,CAAC,OAAO,CAAC,WAAW,GAAG,CAAC,CAAC;gCACzC,IAAI,QAAQ,GAAG;oCACX,cAAc,EAAC,CAAC;oCAChB,cAAc,EAAC,CAAC;oCAChB,aAAa,EAAC,CAAC;oCACf,WAAW,EAAC,SAAS;iCACxB,CAAA;gCACD,OAAO,CAAC,GAAG,CAAC,SAAS,EAAC,QAAQ,CAAC,CAAC;gCAChC,EAAE,CAAC,EAAE,CAAC,cAAc,CAAC,UAAU,CAAC,MAAM,EAAC,QAAQ,CAAC,CAAC;gCACjD,EAAE,CAAC,EAAE,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC,EAAC,CAAC,EAAC,UAAC,IAAI;gCACpC,CAAC,CAAC,CAAC;6BACN;iCACI,IAAG,IAAI,CAAC,MAAM,CAAC,IAAI,IAAI,GAAG,EAAC;gCAC5B,OAAO,CAAC,GAAG,CAAC,iBAAiB,EAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;gCAChD,EAAE,CAAC,EAAE,CAAC,UAAU,CAAC,OAAO,CAAC,YAAY,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,IAAI,CAAC,CAAC;gCACrE,EAAE,CAAC,EAAE,CAAC,UAAU,CAAC,OAAO,CAAC,YAAY,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,IAAI,CAAC,CAAC;gCACrE,EAAE,CAAC,EAAE,CAAC,UAAU,CAAC,OAAO,CAAC,WAAW,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,UAAU,IAAI,CAAC,CAAC;gCACxE,IAAI,QAAQ,GAAG;oCACX,cAAc,EAAC,EAAE,CAAC,EAAE,CAAC,UAAU,CAAC,OAAO,CAAC,YAAY;oCACpD,cAAc,EAAC,EAAE,CAAC,EAAE,CAAC,UAAU,CAAC,OAAO,CAAC,YAAY;oCACpD,aAAa,EAAC,EAAE,CAAC,EAAE,CAAC,UAAU,CAAC,OAAO,CAAC,WAAW;oCAClD,WAAW,EAAC,SAAS;iCACxB,CAAA;gCACD,OAAO,CAAC,GAAG,CAAC,SAAS,EAAC,QAAQ,CAAC,CAAC;gCAChC,EAAE,CAAC,EAAE,CAAC,cAAc,CAAC,UAAU,CAAC,MAAM,EAAC,QAAQ,CAAC,CAAC;6BAEpD;wBACL,CAAC,CAAC,CAAA;oBACN,CAAC,EAAE,CAAC,CAAC,CAAC;iBAET;YAEL,CAAC;YACD,IAAI,EAAE,UAAA,GAAG;gBACL,OAAO,CAAC,KAAK,CAAC,UAAU,EAAE,GAAG,CAAC,CAAA;gBAC9B,IAAI,UAAU,GAAG,WAAW,EAAE;oBACtB,OAAO,CAAC,KAAK,CAAC,mEAAc,UAAU,GAAG,CAAC,wDAAY,EAAE,GAAG,CAAC,CAAC;oBAC7D,YAAY;oBACZ,UAAU,CAAC;wBACP,KAAI,CAAC,YAAY,CAAC,UAAU,GAAG,CAAC,CAAC,CAAC;oBACtC,CAAC,EAAE,IAAI,CAAC,CAAC;iBACZ;qBAAM;oBACH,OAAO,CAAC,KAAK,CAAC,wBAAwB,EAAE,GAAG,CAAC,CAAC;oBAC7C,OAAO;oBACP,EAAE,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC;iBACjB;YACL,CAAC;SACJ,CAAC,CAAA;IACN,CAAC;IAED,iCAAW,GAAX;QACI,EAAE,CAAC,EAAE,CAAC,UAAU,CAAC,QAAQ,CAAC,UAAC,IAAI;YAC3B,OAAO,CAAC,GAAG,CAAC,IAAI,EAAC,IAAI,CAAC,CAAC;QAC3B,CAAC,CAAC,CAAA;IACN,CAAC;IAED,sCAAgB,GAAhB;QACI,IAAI,CAAC,gBAAgB,GAAG;YACpB,IAAG,IAAI,CAAC,UAAU,IAAI,CAAC,EAAC;gBACpB,IAAI,CAAC,eAAe,EAAE,CAAC;aAC1B;iBACG;gBACA,IAAI,CAAC,UAAU,IAAI,CAAC,CAAC;aACxB;QACL,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACb,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,gBAAgB,EAAE,CAAC,CAAC,CAAC;IAC5C,CAAC;IAED,qCAAe,GAAf;QACI,IAAG,IAAI,CAAC,gBAAgB,EAAC;YACrB,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC;SAC1C;IACL,CAAC;IAED,4BAAM,GAAN,UAAQ,EAAE;QACN,IAAG,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,KAAK,IAAK,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,UAAU,IAAI,CAAC,EAAC;YAC3F,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;YAChC,yBAAW,CAAC,GAAG,CAAC,WAAW,EAAE,CAAC;YAC9B,IAAI,CAAC,SAAS,EAAE,CAAC;SACpB;IACL,CAAC;;IAjpBM,qBAAS,GAAiB,IAAI,CAAC;IAJtC;QADC,QAAQ,CAAC,EAAE,CAAC,KAAK,CAAC;8CACI;IAGvB;QADC,QAAQ;6CACc;IAIvB;QADC,QAAQ,CAAC,EAAC,IAAI,EAAE,CAAC,EAAE,CAAC,MAAM,CAAC,EAAE,OAAO,EAAC,MAAM,EAAC,CAAC;oDACV;IAGpC;QADC,QAAQ,CAAC,EAAC,IAAI,EAAE,CAAC,EAAE,CAAC,MAAM,CAAC,EAAE,OAAO,EAAC,MAAM,EAAC,CAAC;oDACV;IAGpC;QADC,QAAQ,CAAC,EAAC,IAAI,EAAE,CAAC,EAAE,CAAC,WAAW,CAAC,EAAE,OAAO,EAAC,MAAM,EAAC,CAAC;oDACV;IAhBxB,WAAW;QAD/B,OAAO;OACa,WAAW,CAypB/B;IAAD,kBAAC;CAzpBD,AAypBC,CAzpBwC,EAAE,CAAC,SAAS,GAypBpD;kBAzpBoB,WAAW","file":"","sourceRoot":"/","sourcesContent":["// Learn TypeScript:\r\n// - https://docs.cocos.com/creator/manual/en/scripting/typescript.html\r\n// Learn Attribute:\r\n// - https://docs.cocos.com/creator/manual/en/scripting/reference/attributes.html\r\n// Learn life-cycle callbacks:\r\n// - https://docs.cocos.com/creator/manual/en/scripting/life-cycle-callbacks.html\r\n\r\nimport { MiniGameManager } from \"./Sdk/MiniGameManager\";\r\nimport { MiniGameSdk } from \"./Sdk/MiniGameSdk\";\r\n\r\nconst {ccclass, property} = cc._decorator;\r\n\r\n@ccclass\r\nexport default class GameManager extends cc.Component {\r\n\r\n @property(cc.Label)\r\n label: cc.Label = null;\r\n\r\n @property\r\n text: string = 'hello';\r\n static _instance : GameManager = null;\r\n\r\n @property({type: [cc.Prefab], tooltip:\"方块数组\"})\r\n Block_Array : Array = [];\r\n\r\n @property({type: [cc.Prefab], tooltip:\"墙壁数组\"})\r\n Wall_Prefab : Array = [];\r\n\r\n @property({type: [cc.SpriteAtlas], tooltip:\"方块颜色\"})\r\n Block_Color : Array = [];\r\n\r\n particleEffects: cc.ParticleAsset[];\r\n // @property({type: [cc.ParticleSystem], tooltip:\"粒子数组\"})\r\n // particleEffects : Array = [];\r\n\r\n load1 :boolean = false;\r\n load2 :boolean = false;\r\n load3 :boolean = false;\r\n load4 :boolean = false;\r\n load5 :boolean = false;\r\n scheduleCallback: any;\r\n timeNumber: number;\r\n\r\n \r\n // LIFE-CYCLE CALLBACKS:\r\n\r\n onLoad () {\r\n\r\n window.initMgr();\r\n this.timeNumber = 3;\r\n this.startTimeCutDown();\r\n cc.fx.GameConfig.init(true);\r\n cc.fx.GameConfig.GM_INFO.gameState = false;\r\n this.readMusicConfig();\r\n console.log(\"音乐开关\",cc.fx.GameConfig.GM_INFO.musicOpen);\r\n cc.fx.AudioManager._instance.playMusicGame();\r\n\r\n this.load1 = this.load2 = this.load3 = this.load4 = this.load5 =false;\r\n setTimeout(() => {\r\n this.readUserData();\r\n }, 200);\r\n \r\n\r\n if (GameManager._instance == null) {\r\n GameManager._instance = this;\r\n cc.game.addPersistRootNode(this.node);\r\n }\r\n else {\r\n return;\r\n }\r\n\r\n const path = 'prefab/block';\r\n const path2 = 'prefab/wall';\r\n cc.resources.loadDir(path, cc.Prefab, (err, assets: cc.Prefab[]) => {\r\n if (err) {\r\n \r\n console.error('动态加载 Prefab 失败:', err);\r\n cc.director.loadScene(\"LoadScene\");\r\n return;\r\n }\r\n // 将加载的 Prefab 赋值给 Block_Array\r\n this.Block_Array = assets;\r\n console.log('方块加载成功,共加载了', this.Block_Array.length, '个方块');\r\n this.setSort();\r\n this.load1 = true;\r\n });\r\n\r\n cc.resources.loadDir(path2, cc.Prefab, (err, assets: cc.Prefab[]) => {\r\n if (err) {\r\n console.error('动态加载 Prefab 失败:', err);\r\n cc.director.loadScene(\"LoadScene\");\r\n return;\r\n }\r\n // 将加载的 Prefab 赋值给 Block_Array\r\n this.Wall_Prefab = assets;\r\n this.load2 = true;\r\n console.log('墙加载成功,共加载了', this.Wall_Prefab.length, '个墙');\r\n this.setWallPrefabSort();\r\n });\r\n\r\n // debugger;\r\n\r\n // setTimeout(() => {\r\n // cc.director.preloadScene(\"HomeScene\", (err) => {\r\n // if (err) {\r\n // console.error('预加载 HomeScene 场景失败:', err);\r\n // return;\r\n // }\r\n // });\r\n // }, 1000);\r\n\r\n // 检测微信小游戏切到后台\r\n if (cc.sys.platform === cc.sys.WECHAT_GAME) {\r\n //@ts-ignore\r\n wx.onHide(() => {\r\n this.onHide();\r\n });\r\n // 检测微信小游戏回到前台\r\n //@ts-ignore\r\n wx.onShow(() => {\r\n this.onShow();\r\n });\r\n }\r\n\r\n }\r\n\r\n onHide () {\r\n cc.audioEngine.stopMusic();\r\n cc.game.pause();\r\n }\r\n\r\n onShow () {\r\n cc.audioEngine.resumeMusic();\r\n cc.game.resume();\r\n }\r\n\r\n loadParticleEffects() {\r\n }\r\n\r\n\r\n \r\n\r\n setWallPrefabSort() {\r\n const order = ['down', 'downLeft', 'downRight', 'left','right','up','upLeft','upRight'];\r\n this.Wall_Prefab.sort((a, b) => {\r\n const indexA = order.indexOf(a.name);\r\n const indexB = order.indexOf(b.name);\r\n if (indexA === -1) return 1;\r\n if (indexB === -1) return -1;\r\n return indexA - indexB;\r\n });\r\n \r\n }\r\n\r\n setParticleSort() {\r\n const order = ['top', 'bot', 'rig', 'lef'];\r\n this.particleEffects.sort((a, b) => {\r\n const indexA = order.indexOf(a.name.substr(0,3));\r\n const indexB = order.indexOf(b.name.substr(0,3));\r\n if (indexA === -1) return 1;\r\n if (indexB === -1) return -1;\r\n return indexA - indexB;\r\n });\r\n }\r\n\r\n setSort(){\r\n this.Block_Array.sort((a, b) => {\r\n // 从名称中提取数字部分\r\n const numberA = parseInt(a.name.match(/\\d+/)?.[0] || '0', 10);\r\n const numberB = parseInt(b.name.match(/\\d+/)?.[0] || '0', 10);\r\n return numberA - numberB;\r\n });\r\n }\r\n\r\n start () {\r\n\r\n }\r\n\r\n startGame(){\r\n console.log(\"进入场景之前_____________\",cc.fx.GameConfig.GM_INFO.first);\r\n cc.director.loadScene(\"HomeScene\");\r\n }\r\n\r\n returnHome(){\r\n cc.tween(this.node.getChildByName(\"Game\"))\r\n .to(0.5, {opacity: 100})\r\n .call(() => {\r\n \r\n // 预加载成功后加载场景\r\n cc.director.loadScene(\"HomeScene\", (err) => {\r\n if (err) {\r\n console.error('加载 HomeScene 场景失败:', err);\r\n } else {\r\n cc.director.loadScene(\"HomeScene\");\r\n }\r\n });\r\n })\r\n .start();\r\n\r\n cc.tween(this.node.getChildByName(\"mask\"))\r\n .to(0.5,{opacity: 255})\r\n .start();\r\n\r\n // cc.loader.releaseAll();\r\n // 预加载 HomeScene 场景\r\n\r\n \r\n }\r\n\r\n\r\n readUserData(retryCount = 0){\r\n //@ts-ignore\r\n if (typeof wx !== 'undefined' && wx !== null) { \r\n let levelInfo = cc.fx.StorageMessage.getStorage(\"level\");\r\n //旧的读取数据设置数据方法,以强联网为主\r\n if(levelInfo == undefined || levelInfo == \"\" || levelInfo == null){\r\n this.oldReadData(retryCount);\r\n }\r\n //新的读取数据设置方法,以本地为主\r\n else{\r\n this.newReadData();\r\n }\r\n console.log(\"即将读取体力值\");\r\n cc.fx.GameTool.getHealth((data)=>{\r\n console.log(\"体力值完成进入游戏\");\r\n this.load5 = true;\r\n });\r\n\r\n }\r\n else{\r\n this.load3 = true;\r\n this.load4 = true;\r\n this.load5 = true;\r\n cc.fx.GameTool.getHealth(null);\r\n }\r\n // 存储用户数据\r\n }\r\n\r\n readMusicConfig(){\r\n let audioInfo = cc.fx.StorageMessage.getStorage(\"music\");\r\n if(audioInfo == undefined || audioInfo == \"\" || audioInfo == null){\r\n audioInfo = {\r\n \"musicOpen\": true, //音乐\r\n \"effectOpen\": true, //音效\r\n \"vibrateOpen\": true, //震动\r\n }\r\n cc.fx.StorageMessage.setStorage(\"music\",audioInfo);\r\n }\r\n else{\r\n cc.fx.GameConfig.GM_INFO.musicOpen = audioInfo.musicOpen;\r\n cc.fx.GameConfig.GM_INFO.effectOpen = audioInfo.effectOpen;\r\n cc.fx.GameConfig.GM_INFO.vibrateOpen = audioInfo.vibrateOpen;\r\n }\r\n }\r\n \r\n //新用户,有本地缓存读取配置\r\n newReadData(){\r\n console.log(\"读取新信息\");\r\n let openid = cc.fx.StorageMessage.getStorage(\"openid\");\r\n if(openid == null || openid == \"\" || openid == undefined){\r\n console.log(\"没有openid\");\r\n //@ts-ignore\r\n wx.cloud.callFunction({\r\n name: 'userData',\r\n data: {\r\n action: 'read'\r\n },\r\n success: res => {\r\n console.log('读取用户数据成功', res.result)\r\n if(res.result.code == 404 && res.result.message == \"未找到用户数据\"){\r\n }\r\n else if(res.result.code == 200){\r\n if(res.result.data){\r\n cc.fx.GameConfig.GM_INFO.openid = res.result.openid;\r\n cc.fx.GameConfig.GM_INFO.username = res.result.data.username;\r\n cc.fx.GameConfig.GM_INFO.useravatar = res.result.data.useravatar;\r\n const register_time = res.result.data.register_time;\r\n MiniGameSdk.API.shushu_userSet(register_time);\r\n cc.fx.StorageMessage.setStorage(\"openid\",cc.fx.GameConfig.GM_INFO.openid);\r\n }\r\n }\r\n },\r\n fail: err => {\r\n console.error('读取用户数据失败', err)\r\n }\r\n })\r\n }\r\n else{\r\n if(openid)\r\n cc.fx.GameConfig.GM_INFO.openid = openid;\r\n }\r\n \r\n\r\n\r\n //等级信息\r\n cc.fx.GameTool.getUserLevel((data) =>{\r\n const timestamp = Date.now();\r\n let levelInfo = cc.fx.StorageMessage.getStorage(\"level\");\r\n if(data.result.code == 404 && data.result.message == \"未找到关卡数据\"){\r\n // console.log(\"没有等级信息,从用户接口拿到数据\");\r\n if(levelInfo.level){\r\n cc.fx.GameConfig.GM_INFO.level = levelInfo.level;\r\n }\r\n this.load4 = true;\r\n cc.fx.GameTool.setUserLevel((data)=>{\r\n });\r\n } \r\n else if(data.result.code == 200){\r\n // console.log(\"有等级信息,从关卡接口拿到数据\",data.result.data);\r\n //游戏前端存储 新于服务器端,以游戏前端信息为主,放服务器存储\r\n let temp = data.result.timestamp - levelInfo.timestamp;\r\n console.log(\"等级时间差:\",temp);\r\n if((data.result.timestamp - levelInfo.timestamp) < 10000){\r\n if(levelInfo.level){\r\n console.log(\"以游戏前端等级为准\",data.result.data);\r\n cc.fx.GameConfig.GM_INFO.level = levelInfo.level;\r\n // console.log(\"等级为:\",cc.fx.GameConfig.GM_INFO.level);\r\n cc.fx.GameTool.setUserLevel((data)=>{\r\n });\r\n }\r\n\r\n }\r\n //服务器端存储时间新于游戏端,以服务器端为主,往前端存储\r\n else{\r\n console.log(\"以服务器等级为准\",data.result.data);\r\n cc.fx.GameConfig.GM_INFO.level = data.result.data; \r\n levelInfo.level = cc.fx.GameConfig.GM_INFO.level;\r\n levelInfo.timestamp = timestamp;\r\n // console.log(\"1111111存储关卡数据:\",cc.fx.GameConfig.GM_INFO.level);\r\n cc.fx.StorageMessage.setStorage(\"level\",levelInfo);\r\n }\r\n this.load4 = true;\r\n }\r\n });\r\n //金币信息\r\n cc.fx.GameTool.getUserCoin((data) =>{\r\n const timestamp = Date.now();\r\n let coinInfo = cc.fx.StorageMessage.getStorage(\"coin\");\r\n if(data.result.code == 404 && data.result.message == \"未找到金币数据\"){\r\n if(coinInfo.coin)\r\n cc.fx.GameConfig.GM_INFO.coin = coinInfo.coin;\r\n console.log(\"没有金币信息,从用户接口拿到数据\",cc.fx.GameConfig.GM_INFO.coin);\r\n this.load3 = true;\r\n cc.fx.GameTool.setUserCoin((data)=>{\r\n });\r\n } \r\n else if(data.result.code == 200){\r\n // console.log(\"有金币信息,从金币接口拿到数据\",data.result.data);\r\n //游戏前端存储 新于服务器端,以游戏前端信息为主,放服务器存储\r\n let temp = data.result.timestamp - coinInfo.timestamp;\r\n console.log(\"金币时间差:\",temp);\r\n if((data.result.timestamp - coinInfo.timestamp) < 10000){\r\n console.log(\"以前端金幣为准:\",coinInfo);\r\n if(coinInfo.coin)\r\n cc.fx.GameConfig.GM_INFO.coin = coinInfo.coin;\r\n else{\r\n cc.fx.GameConfig.GM_INFO.coin = data.result.data;\r\n coinInfo.coin = cc.fx.GameConfig.GM_INFO.coin;\r\n coinInfo.timestamp = timestamp;\r\n console.log(\"11111111111\");\r\n cc.fx.StorageMessage.setStorage(\"coin\",coinInfo);\r\n }\r\n console.log(\"改变后金币:\",cc.fx.GameConfig.GM_INFO.coin);\r\n cc.fx.GameTool.setUserCoin((data)=>{\r\n });\r\n }\r\n //服务器端存储时间新于游戏端,以服务器端为主,往前端存储\r\n else{\r\n console.log(\"以服务器金幣为准:\",data.result.data);\r\n cc.fx.GameConfig.GM_INFO.coin = data.result.data; \r\n coinInfo.coin = cc.fx.GameConfig.GM_INFO.coin;\r\n coinInfo.timestamp = timestamp;\r\n console.log(\"2222222222\");\r\n cc.fx.StorageMessage.setStorage(\"coin\",coinInfo);\r\n }\r\n this.load3 = true;\r\n } \r\n });\r\n //道具信息\r\n cc.fx.GameTool.getUserProp((data) =>{\r\n const timestamp = Date.now();\r\n let propInfo = cc.fx.StorageMessage.getStorage(\"prop\");\r\n if(data.result.code == 404 && data.result.message == \"未找到道具数据\"){\r\n console.log(\"没有道具信息,从用户接口拿到数据\",propInfo);\r\n if(propInfo.freezeAmount == undefined || propInfo.hammerAmount == undefined || propInfo.magicAmount == undefined){\r\n console.log(\"2222222道具数据异常\");\r\n cc.fx.GameConfig.GM_INFO.freezeAmount = 0;\r\n cc.fx.GameConfig.GM_INFO.hammerAmount = 0;\r\n cc.fx.GameConfig.GM_INFO.magicAmoun = 0;\r\n let propInfoNew = {\r\n \"freezeAmount\":cc.fx.GameConfig.GM_INFO.freezeAmount,\r\n \"hammerAmount\":cc.fx.GameConfig.GM_INFO.hammerAmount,\r\n \"magicAmount\":cc.fx.GameConfig.GM_INFO.magicAmoun,\r\n \"timestamp\":timestamp\r\n }\r\n console.log(\"1111111上传道具信息:\",propInfoNew);\r\n cc.fx.StorageMessage.setStorage(\"prop\",propInfoNew);\r\n }\r\n else{\r\n cc.fx.GameConfig.GM_INFO.freezeAmount = data.result.data.freeze;\r\n cc.fx.GameConfig.GM_INFO.hammerAmount = data.result.data.hammer;\r\n cc.fx.GameConfig.GM_INFO.magicAmount = data.result.data.magic_wand;\r\n }\r\n\r\n \r\n cc.fx.GameConfig.GM_INFO.freezeAmount = propInfo.freezeAmount;\r\n cc.fx.GameConfig.GM_INFO.hammerAmount = propInfo.hammerAmount;\r\n cc.fx.GameConfig.GM_INFO.magicAmount = propInfo.magicAmount;\r\n cc.fx.GameTool.setUserProp(0,0,(data)=>{\r\n });\r\n } \r\n else if(data.result.code == 200){\r\n // console.log(\"本地时间戳\",propInfo.timestamp,\"服务器时间戳\",data.result.timestamp);\r\n if((data.result.timestamp - propInfo.timestamp) < 10000){\r\n console.log(\"以前端道具为主:\",propInfo);\r\n if(propInfo.freezeAmount == undefined || propInfo.hammerAmount == undefined || propInfo.magicAmount == undefined){\r\n console.log(\"111111道具数据异常\",data.result.data);\r\n cc.fx.GameConfig.GM_INFO.freezeAmount = data.result.data.freeze;\r\n cc.fx.GameConfig.GM_INFO.hammerAmount = data.result.data.hammer;\r\n cc.fx.GameConfig.GM_INFO.magicAmount = data.result.data.magic_wand;\r\n let propInfoNew = {\r\n \"freezeAmount\":cc.fx.GameConfig.GM_INFO.freezeAmount,\r\n \"hammerAmount\":cc.fx.GameConfig.GM_INFO.hammerAmount,\r\n \"magicAmount\":cc.fx.GameConfig.GM_INFO.magicAmount,\r\n \"timestamp\":timestamp\r\n }\r\n console.log(\"333333上传道具信息:\",propInfoNew);\r\n cc.fx.StorageMessage.setStorage(\"prop\",propInfoNew);\r\n }\r\n else{\r\n console.log(\"道具数据正常\");\r\n cc.fx.GameConfig.GM_INFO.freezeAmount = propInfo.freezeAmount;\r\n cc.fx.GameConfig.GM_INFO.hammerAmount = propInfo.hammerAmount;\r\n cc.fx.GameConfig.GM_INFO.magicAmount = propInfo.magicAmount;\r\n cc.fx.GameTool.setUserProp(0,0,(data)=>{\r\n });\r\n }\r\n }\r\n else{\r\n cc.fx.GameConfig.GM_INFO.freezeAmount = data.result.data.freeze;\r\n cc.fx.GameConfig.GM_INFO.hammerAmount = data.result.data.hammer;\r\n cc.fx.GameConfig.GM_INFO.magicAmount = data.result.data.magic_wand;\r\n let propInfoNew = {\r\n \"freezeAmount\":cc.fx.GameConfig.GM_INFO.freezeAmount,\r\n \"hammerAmount\":cc.fx.GameConfig.GM_INFO.hammerAmount,\r\n \"magicAmount\":cc.fx.GameConfig.GM_INFO.magicAmount,\r\n \"timestamp\":timestamp\r\n }\r\n console.log(\"22222222上传道具信息:\",propInfoNew,data.result);\r\n cc.fx.StorageMessage.setStorage(\"prop\",propInfoNew);\r\n }\r\n } \r\n });\r\n }\r\n //旧用户,无本地缓存读取配置\r\n oldReadData(retryCount:number){\r\n console.log(\"读取旧信息\");\r\n const MAX_RETRIES = 15;\r\n const timestamp = Date.now();\r\n // 读取用户数据\r\n //@ts-ignore\r\n wx.cloud.callFunction({\r\n name: 'userData',\r\n data: {\r\n action: 'read'\r\n },\r\n success: res => { \r\n console.log('读取用户数据成功', res.result)\r\n if(res.result.code == 404 && res.result.message == \"未找到用户数据\"){\r\n if(res.result.openid){\r\n cc.fx.GameConfig.GM_INFO.openid = res.result.openid\r\n }\r\n cc.fx.GameConfig.GM_INFO.first = true;\r\n this.load3 = true;\r\n this.load4 = true;\r\n let levelInfo = {\"level\":0,\"timestamp\":timestamp};\r\n cc.fx.StorageMessage.setStorage(\"level\",levelInfo);\r\n let coinInfo = {\"coin\":0,\"timestamp\":timestamp};\r\n console.log(\"33333333333\");\r\n cc.fx.StorageMessage.setStorage(\"coin\",coinInfo);\r\n let propInfo = {\r\n \"freezeAmount\":0,\r\n \"hammerAmount\":0,\r\n \"magicAmount\":0,\r\n \"timestamp\":timestamp,\r\n }\r\n cc.fx.StorageMessage.setStorage(\"prop\",propInfo);\r\n\r\n\r\n cc.fx.GameTool.setUserInfo((data)=>{\r\n if(data.result.code == 200){\r\n console.log(\"上传用户信息成功\",data);\r\n //@ts-ignore\r\n wx.cloud.callFunction({\r\n name: 'userData',\r\n data: {\r\n action: 'read'\r\n }, \r\n success: res => {\r\n console.log(\"上传后,读取用户信息,为上报注册时间\")\r\n if(res.result.code == 200){\r\n const time = res.result.data.register_time;\r\n MiniGameSdk.API.shushu_userSet(time);\r\n }\r\n }\r\n })\r\n }\r\n });\r\n console.log(\"服务器也没有金币信息\",cc.fx.GameConfig.GM_INFO.coin);\r\n cc.fx.GameTool.setUserCoin(cc.fx.GameConfig.GM_INFO.coin,(data)=>{\r\n \r\n });\r\n cc.fx.GameTool.setUserLevel((data)=>{\r\n });\r\n setTimeout(() => {\r\n cc.fx.GameConfig.GM_INFO.freezeAmount = 0;\r\n cc.fx.GameConfig.GM_INFO.hammerAmount = 0;\r\n cc.fx.GameConfig.GM_INFO.magicAmount = 0;\r\n cc.fx.GameTool.setUserProp(0,0,(data)=>{\r\n if(data.result.code == 200){\r\n console.log(\"上传道具信息成功\",data);\r\n }\r\n else{\r\n MiniGameSdk.API.showToast(\"网络异常,正在努力加载\");\r\n setTimeout(() => {\r\n this.oldReadData(0);\r\n }, 1000);\r\n }\r\n });\r\n }, 0);\r\n }\r\n else if(res.result.code == 200){\r\n if(res.result.data){\r\n cc.fx.GameConfig.GM_INFO.openid = res.result.openid;\r\n cc.fx.GameConfig.GM_INFO.level = res.result.data.level;\r\n cc.fx.GameConfig.GM_INFO.coin = res.result.data.coinAmount;\r\n cc.fx.GameConfig.GM_INFO.freezeAmount = res.result.data.freezeAmount;\r\n cc.fx.GameConfig.GM_INFO.hammerAmount = res.result.data.hammerAmount;\r\n cc.fx.GameConfig.GM_INFO.magicAmount = res.result.data.magicAmount;\r\n cc.fx.GameConfig.GM_INFO.username = res.result.data.username;\r\n cc.fx.GameConfig.GM_INFO.useravatar = res.result.data.useravatar;\r\n cc.fx.StorageMessage.setStorage(\"openid\",cc.fx.GameConfig.GM_INFO.openid);\r\n const register_time = res.result.data.register_time;\r\n MiniGameSdk.API.shushu_userSet(register_time);\r\n }\r\n setTimeout(() => {\r\n cc.fx.GameTool.getUserCoin((data) =>{\r\n if(data.result.code == 404 && data.result.message == \"未找到金币数据\"){\r\n \r\n let coinInfo = {\"coin\":0,\"timestamp\":timestamp};\r\n cc.fx.GameConfig.GM_INFO.coin = 0;\r\n cc.fx.StorageMessage.setStorage(\"coin\",coinInfo);\r\n console.log(\"没有金币信息,从用户接口拿到数据\",cc.fx.GameConfig.GM_INFO.coin);\r\n cc.fx.GameTool.setUserCoin((data)=>{\r\n // console.log(\"上传\",data);\r\n this.load3 = true;\r\n });\r\n }\r\n else if(data.result.code == 200){\r\n // console.log(\"有金币信息,从金币接口拿到数据\",data.result.data);\r\n cc.fx.GameConfig.GM_INFO.coin = data.result.data;\r\n let coinInfo = {\"coin\":cc.fx.GameConfig.GM_INFO.coin,\"timestamp\":timestamp};\r\n console.log(\"存储金币信息:\",cc.fx.GameConfig.GM_INFO.coin);\r\n console.log(\"4444444444\");\r\n cc.fx.StorageMessage.setStorage(\"coin\",coinInfo);\r\n this.load3 = true;\r\n }\r\n })\r\n }, 500);\r\n\r\n cc.fx.GameTool.getUserLevel((data) =>{\r\n if(data.result.code == 404 && data.result.message == \"未找到关卡数据\"){\r\n console.log(\"没有等级信息,从用户接口拿到数据\");\r\n let levelInfo = {\"level\":0,\"timestamp\":timestamp};\r\n // console.log(\"333333存储关卡数据:\",levelInfo);\r\n cc.fx.GameConfig.GM_INFO.level = 0;\r\n cc.fx.StorageMessage.setStorage(\"level\",levelInfo);\r\n cc.fx.GameTool.setUserLevel((data)=>{\r\n console.log(\"拿到的数据\",data);\r\n this.load4 = true;\r\n });\r\n } \r\n else if(data.result.code == 200){\r\n console.log(\"有等级信息,从关卡接口拿到数据\",data.result.data);\r\n cc.fx.GameConfig.GM_INFO.level = data.result.data; \r\n let levelInfo = {\"level\":cc.fx.GameConfig.GM_INFO.level,\"timestamp\":timestamp};\r\n // console.log(\"444444存储关卡信息:\",levelInfo);\r\n cc.fx.StorageMessage.setStorage(\"level\",levelInfo);\r\n this.load4 = true;\r\n }\r\n })\r\n setTimeout(() => {\r\n cc.fx.GameTool.getUserProp((data) =>{\r\n if(data.result.code == 404 && data.result.message == \"未找到道具数据\"){\r\n console.log(\"没有道具信息,从用户接口拿到数据\");\r\n cc.fx.GameConfig.GM_INFO.freezeAmount = 0;\r\n cc.fx.GameConfig.GM_INFO.hammerAmount = 0;\r\n cc.fx.GameConfig.GM_INFO.magicAmount = 0;\r\n let propInfo = {\r\n \"freezeAmount\":0,\r\n \"hammerAmount\":0,\r\n \"magicAmount\":0,\r\n \"timestamp\":timestamp,\r\n }\r\n console.log(\"上传道具信息:\",propInfo);\r\n cc.fx.StorageMessage.setStorage(\"prop\",propInfo);\r\n cc.fx.GameTool.setUserProp(0,0,(data)=>{\r\n });\r\n } \r\n else if(data.result.code == 200){\r\n console.log(\"有道具信息,从道具接口拿到数据\",data.result.data);\r\n cc.fx.GameConfig.GM_INFO.freezeAmount = data.result.data.freeze || 0;\r\n cc.fx.GameConfig.GM_INFO.hammerAmount = data.result.data.hammer || 0;\r\n cc.fx.GameConfig.GM_INFO.magicAmount = data.result.data.magic_wand || 0;\r\n let propInfo = {\r\n \"freezeAmount\":cc.fx.GameConfig.GM_INFO.freezeAmount,\r\n \"hammerAmount\":cc.fx.GameConfig.GM_INFO.hammerAmount,\r\n \"magicAmount\":cc.fx.GameConfig.GM_INFO.magicAmount,\r\n \"timestamp\":timestamp,\r\n }\r\n console.log(\"上传道具信息:\",propInfo);\r\n cc.fx.StorageMessage.setStorage(\"prop\",propInfo);\r\n\r\n }\r\n })\r\n }, 0);\r\n \r\n }\r\n\r\n },\r\n fail: err => {\r\n console.error('读取用户数据失败', err)\r\n if (retryCount < MAX_RETRIES) {\r\n console.error(`读取用户数据失败,第 ${retryCount + 1} 次重试,错误信息:`, err);\r\n // 延迟 2 秒后重试\r\n setTimeout(() => {\r\n this.readUserData(retryCount + 1);\r\n }, 2000);\r\n } else {\r\n console.error('读取用户数据失败,达到最大重试次数,退出游戏', err);\r\n // 退出游戏\r\n cc.game.end();\r\n }\r\n }\r\n })\r\n }\r\n\r\n setUserData(){\r\n cc.fx.GameConfig.GameTool((data)=>{\r\n console.log(\"上传\",data);\r\n })\r\n }\r\n\r\n startTimeCutDown(){\r\n this.scheduleCallback = function(){\r\n if(this.timeNumber <= 0){\r\n this.stopTimeCutDown();\r\n }\r\n else{\r\n this.timeNumber -= 1;\r\n }\r\n }.bind(this);\r\n this.schedule(this.scheduleCallback, 1);\r\n }\r\n\r\n stopTimeCutDown(){\r\n if(this.scheduleCallback){\r\n this.unschedule(this.scheduleCallback);\r\n }\r\n }\r\n\r\n update (dt) {\r\n if(this.load1 && this.load2 && this.load3 && this.load4 && this.load5 && this.timeNumber <= 0){\r\n this.load1 = this.load2 = false;\r\n MiniGameSdk.API.shushu_Init();\r\n this.startGame();\r\n }\r\n }\r\n}\r\n"]} ->>>>>>> 0a31a7a5abc2c505bf743aa596e1c765a0405152 +{"version":3,"sources":["assets\\Script\\GameManager.ts"],"names":[],"mappings":"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","file":"","sourceRoot":"/","sourcesContent":["// Learn TypeScript:\r\n// - https://docs.cocos.com/creator/manual/en/scripting/typescript.html\r\n// Learn Attribute:\r\n// - https://docs.cocos.com/creator/manual/en/scripting/reference/attributes.html\r\n// Learn life-cycle callbacks:\r\n// - https://docs.cocos.com/creator/manual/en/scripting/life-cycle-callbacks.html\r\n\r\nimport { MiniGameManager } from \"./Sdk/MiniGameManager\";\r\nimport { MiniGameSdk } from \"./Sdk/MiniGameSdk\";\r\n\r\nconst { ccclass, property } = cc._decorator;\r\n\r\n@ccclass\r\nexport default class GameManager extends cc.Component {\r\n\r\n @property(cc.Label)\r\n label: cc.Label = null;\r\n\r\n @property\r\n text: string = 'hello';\r\n static _instance: GameManager = null;\r\n\r\n @property({ type: [cc.Prefab], tooltip: \"方块数组\" })\r\n Block_Array: Array = [];\r\n\r\n @property({ type: [cc.Prefab], tooltip: \"墙壁数组\" })\r\n Wall_Prefab: Array = [];\r\n\r\n @property({ type: [cc.SpriteAtlas], tooltip: \"方块颜色\" })\r\n Block_Color: Array = [];\r\n\r\n particleEffects: cc.ParticleAsset[];\r\n // @property({type: [cc.ParticleSystem], tooltip:\"粒子数组\"})\r\n // particleEffects : Array = [];\r\n\r\n load1: boolean = false;\r\n load2: boolean = false;\r\n load3: boolean = false;\r\n load4: boolean = false;\r\n load5: boolean = false;\r\n scheduleCallback: any;\r\n timeNumber: number;\r\n\r\n\r\n // LIFE-CYCLE CALLBACKS:\r\n\r\n onLoad() {\r\n\r\n window.initMgr();\r\n this.timeNumber = 3;\r\n this.startTimeCutDown();\r\n cc.fx.GameConfig.init(true);\r\n cc.fx.GameConfig.GM_INFO.gameState = false;\r\n this.readMusicConfig();\r\n console.log(\"音乐开关\", cc.fx.GameConfig.GM_INFO.musicOpen);\r\n cc.fx.AudioManager._instance.playMusicGame();\r\n\r\n this.load1 = this.load2 = this.load3 = this.load4 = this.load5 = false;\r\n setTimeout(() => {\r\n this.readUserData();\r\n }, 200);\r\n\r\n\r\n if (GameManager._instance == null) {\r\n GameManager._instance = this;\r\n cc.game.addPersistRootNode(this.node);\r\n }\r\n else {\r\n return;\r\n }\r\n\r\n const path = 'prefab/block';\r\n const path2 = 'prefab/wall';\r\n cc.resources.loadDir(path, cc.Prefab, (err, assets: cc.Prefab[]) => {\r\n if (err) {\r\n console.log('动态加载 block 失败:', err);\r\n cc.director.loadScene(\"LoadScene\");\r\n return;\r\n }\r\n // 将加载的 Prefab 赋值给 Block_Array\r\n this.Block_Array = assets;\r\n console.log('方块加载成功,共加载了', this.Block_Array.length, '个方块');\r\n this.setSort();\r\n this.load1 = true;\r\n });\r\n\r\n cc.resources.loadDir(path2, cc.Prefab, (err, assets: cc.Prefab[]) => {\r\n if (err) {\r\n console.log('动态加载 wall 失败:', err);\r\n cc.director.loadScene(\"LoadScene\");\r\n return;\r\n }\r\n // 将加载的 Prefab 赋值给 Block_Array\r\n this.Wall_Prefab = assets;\r\n this.load2 = true;\r\n console.log('墙加载成功,共加载了', this.Wall_Prefab.length, '个墙');\r\n this.setWallPrefabSort();\r\n });\r\n\r\n\r\n // 检测微信小游戏切到后台\r\n if (cc.sys.platform === cc.sys.WECHAT_GAME) {\r\n //@ts-ignore\r\n wx.onHide(() => {\r\n this.onHide();\r\n });\r\n // 检测微信小游戏回到前台\r\n //@ts-ignore\r\n wx.onShow(() => {\r\n this.onShow();\r\n });\r\n }\r\n\r\n }\r\n\r\n onHide() {\r\n cc.audioEngine.stopMusic();\r\n cc.game.pause();\r\n }\r\n\r\n onShow() {\r\n cc.audioEngine.resumeMusic();\r\n cc.game.resume();\r\n }\r\n\r\n loadParticleEffects() {\r\n }\r\n\r\n\r\n\r\n\r\n setWallPrefabSort() {\r\n const order = ['down', 'downLeft', 'downRight', 'left', 'right', 'up', 'upLeft', 'upRight'];\r\n this.Wall_Prefab.sort((a, b) => {\r\n const indexA = order.indexOf(a.name);\r\n const indexB = order.indexOf(b.name);\r\n if (indexA === -1) return 1;\r\n if (indexB === -1) return -1;\r\n return indexA - indexB;\r\n });\r\n\r\n }\r\n\r\n setParticleSort() {\r\n const order = ['top', 'bot', 'rig', 'lef'];\r\n this.particleEffects.sort((a, b) => {\r\n const indexA = order.indexOf(a.name.substr(0, 3));\r\n const indexB = order.indexOf(b.name.substr(0, 3));\r\n if (indexA === -1) return 1;\r\n if (indexB === -1) return -1;\r\n return indexA - indexB;\r\n });\r\n }\r\n\r\n setSort() {\r\n this.Block_Array.sort((a, b) => {\r\n // 从名称中提取数字部分\r\n const numberA = parseInt(a.name.match(/\\d+/)?.[0] || '0', 10);\r\n const numberB = parseInt(b.name.match(/\\d+/)?.[0] || '0', 10);\r\n return numberA - numberB;\r\n });\r\n }\r\n\r\n start() {\r\n\r\n }\r\n\r\n startGame() {\r\n console.log(\"进入场景之前_____________\", cc.fx.GameConfig.GM_INFO.first);\r\n cc.director.loadScene(\"HomeScene\");\r\n }\r\n\r\n returnHome() {\r\n cc.tween(this.node.getChildByName(\"Game\"))\r\n .to(0.5, { opacity: 100 })\r\n .call(() => {\r\n\r\n // 预加载成功后加载场景\r\n cc.director.loadScene(\"HomeScene\", (err) => {\r\n if (err) {\r\n console.error('加载 HomeScene 场景失败:', err);\r\n } else {\r\n cc.director.loadScene(\"HomeScene\");\r\n }\r\n });\r\n })\r\n .start();\r\n\r\n cc.tween(this.node.getChildByName(\"mask\"))\r\n .to(0.5, { opacity: 255 })\r\n .start();\r\n\r\n // cc.loader.releaseAll();\r\n // 预加载 HomeScene 场景\r\n\r\n\r\n }\r\n\r\n\r\n readUserData(retryCount = 0) {\r\n //@ts-ignore\r\n if (typeof wx !== 'undefined' && wx !== null) {\r\n let levelInfo = cc.fx.StorageMessage.getStorage(\"level\");\r\n //旧的读取数据设置数据方法,以强联网为主\r\n if (levelInfo == undefined || levelInfo == \"\" || levelInfo == null) {\r\n this.oldReadData(retryCount);\r\n }\r\n //新的读取数据设置方法,以本地为主\r\n else {\r\n this.newReadData();\r\n }\r\n console.log(\"即将读取体力值\");\r\n cc.fx.GameTool.getHealth((data) => {\r\n console.log(\"体力值完成进入游戏\");\r\n this.load5 = true;\r\n });\r\n\r\n }\r\n else {\r\n this.load3 = true;\r\n this.load4 = true;\r\n this.load5 = true;\r\n cc.fx.GameTool.getHealth(null);\r\n }\r\n // 存储用户数据\r\n }\r\n\r\n readMusicConfig() {\r\n let audioInfo = cc.fx.StorageMessage.getStorage(\"music\");\r\n if (audioInfo == undefined || audioInfo == \"\" || audioInfo == null) {\r\n audioInfo = {\r\n \"musicOpen\": true, //音乐\r\n \"effectOpen\": true, //音效\r\n \"vibrateOpen\": true, //震动\r\n }\r\n cc.fx.StorageMessage.setStorage(\"music\", audioInfo);\r\n }\r\n else {\r\n cc.fx.GameConfig.GM_INFO.musicOpen = audioInfo.musicOpen;\r\n cc.fx.GameConfig.GM_INFO.effectOpen = audioInfo.effectOpen;\r\n cc.fx.GameConfig.GM_INFO.vibrateOpen = audioInfo.vibrateOpen;\r\n }\r\n }\r\n\r\n //新用户,有本地缓存读取配置\r\n newReadData() {\r\n console.log(\"读取新信息\");\r\n let openid = cc.fx.StorageMessage.getStorage(\"openid\");\r\n if (openid == null || openid == \"\" || openid == undefined) {\r\n console.log(\"没有openid\");\r\n //@ts-ignore\r\n wx.cloud.callFunction({\r\n name: 'userData',\r\n data: {\r\n action: 'read'\r\n },\r\n success: res => {\r\n console.log('读取用户数据成功', res.result)\r\n if (res.result.code == 404 && res.result.message == \"未找到用户数据\") {\r\n }\r\n else if (res.result.code == 200) {\r\n if (res.result.data) {\r\n cc.fx.GameConfig.GM_INFO.openid = res.result.openid;\r\n cc.fx.GameConfig.GM_INFO.username = res.result.data.username;\r\n cc.fx.GameConfig.GM_INFO.useravatar = res.result.data.useravatar;\r\n const register_time = res.result.data.register_time;\r\n MiniGameSdk.API.shushu_userSet(register_time);\r\n cc.fx.StorageMessage.setStorage(\"openid\", cc.fx.GameConfig.GM_INFO.openid);\r\n }\r\n }\r\n },\r\n fail: err => {\r\n console.error('读取用户数据失败', err)\r\n }\r\n })\r\n }\r\n else {\r\n if (openid)\r\n cc.fx.GameConfig.GM_INFO.openid = openid;\r\n }\r\n\r\n\r\n\r\n //等级信息\r\n cc.fx.GameTool.getUserLevel((data) => {\r\n const timestamp = Date.now();\r\n let levelInfo = cc.fx.StorageMessage.getStorage(\"level\");\r\n if (data.result.code == 404 && data.result.message == \"未找到关卡数据\") {\r\n // console.log(\"没有等级信息,从用户接口拿到数据\");\r\n if (levelInfo.level) {\r\n cc.fx.GameConfig.GM_INFO.level = levelInfo.level;\r\n }\r\n this.load4 = true;\r\n cc.fx.GameTool.setUserLevel((data) => {\r\n });\r\n }\r\n else if (data.result.code == 200) {\r\n // console.log(\"有等级信息,从关卡接口拿到数据\",data.result.data);\r\n //游戏前端存储 新于服务器端,以游戏前端信息为主,放服务器存储\r\n let temp = data.result.timestamp - levelInfo.timestamp;\r\n console.log(\"等级时间差:\", temp);\r\n if ((data.result.timestamp - levelInfo.timestamp) < 10000) {\r\n if (levelInfo.level) {\r\n console.log(\"以游戏前端等级为准\", data.result.data);\r\n cc.fx.GameConfig.GM_INFO.level = levelInfo.level;\r\n // console.log(\"等级为:\",cc.fx.GameConfig.GM_INFO.level);\r\n cc.fx.GameTool.setUserLevel((data) => {\r\n });\r\n }\r\n\r\n }\r\n //服务器端存储时间新于游戏端,以服务器端为主,往前端存储\r\n else {\r\n console.log(\"以服务器等级为准\", data.result.data);\r\n cc.fx.GameConfig.GM_INFO.level = data.result.data;\r\n levelInfo.level = cc.fx.GameConfig.GM_INFO.level;\r\n levelInfo.timestamp = timestamp;\r\n // console.log(\"1111111存储关卡数据:\",cc.fx.GameConfig.GM_INFO.level);\r\n cc.fx.StorageMessage.setStorage(\"level\", levelInfo);\r\n }\r\n this.load4 = true;\r\n }\r\n });\r\n //金币信息\r\n cc.fx.GameTool.getUserCoin((data) => {\r\n const timestamp = Date.now();\r\n let coinInfo = cc.fx.StorageMessage.getStorage(\"coin\");\r\n if (data.result.code == 404 && data.result.message == \"未找到金币数据\") {\r\n if (coinInfo.coin)\r\n cc.fx.GameConfig.GM_INFO.coin = coinInfo.coin;\r\n console.log(\"没有金币信息,从用户接口拿到数据\", cc.fx.GameConfig.GM_INFO.coin);\r\n this.load3 = true;\r\n cc.fx.GameTool.setUserCoin((data) => {\r\n });\r\n }\r\n else if (data.result.code == 200) {\r\n // console.log(\"有金币信息,从金币接口拿到数据\",data.result.data);\r\n //游戏前端存储 新于服务器端,以游戏前端信息为主,放服务器存储\r\n let temp = data.result.timestamp - coinInfo.timestamp;\r\n console.log(\"金币时间差:\", temp);\r\n if ((data.result.timestamp - coinInfo.timestamp) < 10000) {\r\n console.log(\"以前端金幣为准:\", coinInfo);\r\n if (coinInfo.coin)\r\n cc.fx.GameConfig.GM_INFO.coin = coinInfo.coin;\r\n else {\r\n cc.fx.GameConfig.GM_INFO.coin = data.result.data;\r\n coinInfo.coin = cc.fx.GameConfig.GM_INFO.coin;\r\n coinInfo.timestamp = timestamp;\r\n console.log(\"11111111111\");\r\n cc.fx.StorageMessage.setStorage(\"coin\", coinInfo);\r\n }\r\n console.log(\"改变后金币:\", cc.fx.GameConfig.GM_INFO.coin);\r\n cc.fx.GameTool.setUserCoin((data) => {\r\n });\r\n }\r\n //服务器端存储时间新于游戏端,以服务器端为主,往前端存储\r\n else {\r\n console.log(\"以服务器金幣为准:\", data.result.data);\r\n cc.fx.GameConfig.GM_INFO.coin = data.result.data;\r\n coinInfo.coin = cc.fx.GameConfig.GM_INFO.coin;\r\n coinInfo.timestamp = timestamp;\r\n console.log(\"2222222222\");\r\n cc.fx.StorageMessage.setStorage(\"coin\", coinInfo);\r\n }\r\n this.load3 = true;\r\n }\r\n });\r\n //道具信息\r\n cc.fx.GameTool.getUserProp((data) => {\r\n const timestamp = Date.now();\r\n let propInfo = cc.fx.StorageMessage.getStorage(\"prop\");\r\n if (data.result.code == 404 && data.result.message == \"未找到道具数据\") {\r\n console.log(\"没有道具信息,从用户接口拿到数据\", propInfo);\r\n if (propInfo.freezeAmount == undefined || propInfo.hammerAmount == undefined || propInfo.magicAmount == undefined) {\r\n console.log(\"2222222道具数据异常\");\r\n cc.fx.GameConfig.GM_INFO.freezeAmount = 0;\r\n cc.fx.GameConfig.GM_INFO.hammerAmount = 0;\r\n cc.fx.GameConfig.GM_INFO.magicAmoun = 0;\r\n let propInfoNew = {\r\n \"freezeAmount\": cc.fx.GameConfig.GM_INFO.freezeAmount,\r\n \"hammerAmount\": cc.fx.GameConfig.GM_INFO.hammerAmount,\r\n \"magicAmount\": cc.fx.GameConfig.GM_INFO.magicAmoun,\r\n \"timestamp\": timestamp\r\n }\r\n console.log(\"1111111上传道具信息:\", propInfoNew);\r\n cc.fx.StorageMessage.setStorage(\"prop\", propInfoNew);\r\n }\r\n else {\r\n // cc.fx.GameConfig.GM_INFO.freezeAmount = data.result.data.freeze;\r\n // cc.fx.GameConfig.GM_INFO.hammerAmount = data.result.data.hammer;\r\n // cc.fx.GameConfig.GM_INFO.magicAmount = data.result.data.magic_wand;\r\n cc.fx.GameConfig.GM_INFO.freezeAmount = propInfo.freezeAmount;\r\n cc.fx.GameConfig.GM_INFO.hammerAmount = propInfo.hammerAmount;\r\n cc.fx.GameConfig.GM_INFO.magicAmount = propInfo.magicAmount;\r\n }\r\n\r\n\r\n // cc.fx.GameConfig.GM_INFO.freezeAmount = propInfo.freezeAmount;\r\n // cc.fx.GameConfig.GM_INFO.hammerAmount = propInfo.hammerAmount;\r\n // cc.fx.GameConfig.GM_INFO.magicAmount = propInfo.magicAmount;\r\n cc.fx.GameTool.setUserProp(0, 0, (data) => {\r\n });\r\n }\r\n else if (data.result.code == 200) {\r\n // console.log(\"本地时间戳\",propInfo.timestamp,\"服务器时间戳\",data.result.timestamp);\r\n if ((data.result.timestamp - propInfo.timestamp) < 10000) {\r\n console.log(\"以前端道具为主:\", propInfo);\r\n if (propInfo.freezeAmount == undefined || propInfo.hammerAmount == undefined || propInfo.magicAmount == undefined) {\r\n console.log(\"111111道具数据异常\", data.result.data);\r\n cc.fx.GameConfig.GM_INFO.freezeAmount = data.result.data.freeze;\r\n cc.fx.GameConfig.GM_INFO.hammerAmount = data.result.data.hammer;\r\n cc.fx.GameConfig.GM_INFO.magicAmount = data.result.data.magic_wand;\r\n let propInfoNew = {\r\n \"freezeAmount\": cc.fx.GameConfig.GM_INFO.freezeAmount,\r\n \"hammerAmount\": cc.fx.GameConfig.GM_INFO.hammerAmount,\r\n \"magicAmount\": cc.fx.GameConfig.GM_INFO.magicAmount,\r\n \"timestamp\": timestamp\r\n }\r\n console.log(\"333333上传道具信息:\", propInfoNew);\r\n cc.fx.StorageMessage.setStorage(\"prop\", propInfoNew);\r\n }\r\n else {\r\n console.log(\"道具数据正常\");\r\n cc.fx.GameConfig.GM_INFO.freezeAmount = propInfo.freezeAmount;\r\n cc.fx.GameConfig.GM_INFO.hammerAmount = propInfo.hammerAmount;\r\n cc.fx.GameConfig.GM_INFO.magicAmount = propInfo.magicAmount;\r\n cc.fx.GameTool.setUserProp(0, 0, (data) => {\r\n });\r\n }\r\n }\r\n else {\r\n cc.fx.GameConfig.GM_INFO.freezeAmount = data.result.data.freeze;\r\n cc.fx.GameConfig.GM_INFO.hammerAmount = data.result.data.hammer;\r\n cc.fx.GameConfig.GM_INFO.magicAmount = data.result.data.magic_wand;\r\n let propInfoNew = {\r\n \"freezeAmount\": cc.fx.GameConfig.GM_INFO.freezeAmount,\r\n \"hammerAmount\": cc.fx.GameConfig.GM_INFO.hammerAmount,\r\n \"magicAmount\": cc.fx.GameConfig.GM_INFO.magicAmount,\r\n \"timestamp\": timestamp\r\n }\r\n console.log(\"22222222上传道具信息:\", propInfoNew, data.result);\r\n cc.fx.StorageMessage.setStorage(\"prop\", propInfoNew);\r\n }\r\n }\r\n });\r\n }\r\n //旧用户,无本地缓存读取配置\r\n oldReadData(retryCount: number) {\r\n console.log(\"读取旧信息\");\r\n const MAX_RETRIES = 15;\r\n const timestamp = Date.now();\r\n // 读取用户数据\r\n //@ts-ignore\r\n wx.cloud.callFunction({\r\n name: 'userData',\r\n data: {\r\n action: 'read'\r\n },\r\n success: res => {\r\n console.log('读取用户数据成功', res.result)\r\n if (res.result.code == 404 && res.result.message == \"未找到用户数据\") {\r\n if (res.result.openid) {\r\n cc.fx.GameConfig.GM_INFO.openid = res.result.openid\r\n }\r\n cc.fx.GameConfig.GM_INFO.first = true;\r\n this.load3 = true;\r\n this.load4 = true;\r\n let levelInfo = { \"level\": 0, \"timestamp\": timestamp };\r\n cc.fx.StorageMessage.setStorage(\"level\", levelInfo);\r\n let coinInfo = { \"coin\": 0, \"timestamp\": timestamp };\r\n console.log(\"33333333333\");\r\n cc.fx.StorageMessage.setStorage(\"coin\", coinInfo);\r\n let propInfo = {\r\n \"freezeAmount\": 0,\r\n \"hammerAmount\": 0,\r\n \"magicAmount\": 0,\r\n \"timestamp\": timestamp,\r\n }\r\n cc.fx.StorageMessage.setStorage(\"prop\", propInfo);\r\n\r\n\r\n cc.fx.GameTool.setUserInfo((data) => {\r\n if (data.result.code == 200) {\r\n console.log(\"上传用户信息成功\", data);\r\n //@ts-ignore\r\n wx.cloud.callFunction({\r\n name: 'userData',\r\n data: {\r\n action: 'read'\r\n },\r\n success: res => {\r\n console.log(\"上传后,读取用户信息,为上报注册时间\")\r\n if (res.result.code == 200) {\r\n const time = res.result.data.register_time;\r\n MiniGameSdk.API.shushu_userSet(time);\r\n }\r\n }\r\n })\r\n }\r\n });\r\n console.log(\"服务器也没有金币信息\", cc.fx.GameConfig.GM_INFO.coin);\r\n cc.fx.GameTool.setUserCoin(cc.fx.GameConfig.GM_INFO.coin, (data) => {\r\n\r\n });\r\n cc.fx.GameTool.setUserLevel((data) => {\r\n });\r\n setTimeout(() => {\r\n cc.fx.GameConfig.GM_INFO.freezeAmount = 0;\r\n cc.fx.GameConfig.GM_INFO.hammerAmount = 0;\r\n cc.fx.GameConfig.GM_INFO.magicAmount = 0;\r\n cc.fx.GameTool.setUserProp(0, 0, (data) => {\r\n if (data.result.code == 200) {\r\n console.log(\"上传道具信息成功\", data);\r\n }\r\n else {\r\n MiniGameSdk.API.showToast(\"网络异常,正在努力加载\");\r\n setTimeout(() => {\r\n this.oldReadData(0);\r\n }, 1000);\r\n }\r\n });\r\n }, 0);\r\n }\r\n else if (res.result.code == 200) {\r\n if (res.result.data) {\r\n cc.fx.GameConfig.GM_INFO.openid = res.result.openid;\r\n cc.fx.GameConfig.GM_INFO.level = res.result.data.level;\r\n cc.fx.GameConfig.GM_INFO.coin = res.result.data.coinAmount;\r\n cc.fx.GameConfig.GM_INFO.freezeAmount = res.result.data.freezeAmount;\r\n cc.fx.GameConfig.GM_INFO.hammerAmount = res.result.data.hammerAmount;\r\n cc.fx.GameConfig.GM_INFO.magicAmount = res.result.data.magicAmount;\r\n cc.fx.GameConfig.GM_INFO.username = res.result.data.username;\r\n cc.fx.GameConfig.GM_INFO.useravatar = res.result.data.useravatar;\r\n cc.fx.StorageMessage.setStorage(\"openid\", cc.fx.GameConfig.GM_INFO.openid);\r\n const register_time = res.result.data.register_time;\r\n MiniGameSdk.API.shushu_userSet(register_time);\r\n }\r\n setTimeout(() => {\r\n cc.fx.GameTool.getUserCoin((data) => {\r\n if (data.result.code == 404 && data.result.message == \"未找到金币数据\") {\r\n\r\n let coinInfo = { \"coin\": 0, \"timestamp\": timestamp };\r\n cc.fx.GameConfig.GM_INFO.coin = 0;\r\n cc.fx.StorageMessage.setStorage(\"coin\", coinInfo);\r\n console.log(\"没有金币信息,从用户接口拿到数据\", cc.fx.GameConfig.GM_INFO.coin);\r\n cc.fx.GameTool.setUserCoin((data) => {\r\n // console.log(\"上传\",data);\r\n this.load3 = true;\r\n });\r\n }\r\n else if (data.result.code == 200) {\r\n // console.log(\"有金币信息,从金币接口拿到数据\",data.result.data);\r\n cc.fx.GameConfig.GM_INFO.coin = data.result.data;\r\n let coinInfo = { \"coin\": cc.fx.GameConfig.GM_INFO.coin, \"timestamp\": timestamp };\r\n console.log(\"存储金币信息:\", cc.fx.GameConfig.GM_INFO.coin);\r\n console.log(\"4444444444\");\r\n cc.fx.StorageMessage.setStorage(\"coin\", coinInfo);\r\n this.load3 = true;\r\n }\r\n })\r\n }, 500);\r\n\r\n cc.fx.GameTool.getUserLevel((data) => {\r\n if (data.result.code == 404 && data.result.message == \"未找到关卡数据\") {\r\n console.log(\"没有等级信息,从用户接口拿到数据\");\r\n let levelInfo = { \"level\": 0, \"timestamp\": timestamp };\r\n // console.log(\"333333存储关卡数据:\",levelInfo);\r\n cc.fx.GameConfig.GM_INFO.level = 0;\r\n cc.fx.StorageMessage.setStorage(\"level\", levelInfo);\r\n cc.fx.GameTool.setUserLevel((data) => {\r\n console.log(\"拿到的数据\", data);\r\n this.load4 = true;\r\n });\r\n }\r\n else if (data.result.code == 200) {\r\n console.log(\"有等级信息,从关卡接口拿到数据\", data.result.data);\r\n cc.fx.GameConfig.GM_INFO.level = data.result.data;\r\n let levelInfo = { \"level\": cc.fx.GameConfig.GM_INFO.level, \"timestamp\": timestamp };\r\n // console.log(\"444444存储关卡信息:\",levelInfo);\r\n cc.fx.StorageMessage.setStorage(\"level\", levelInfo);\r\n this.load4 = true;\r\n }\r\n })\r\n setTimeout(() => {\r\n cc.fx.GameTool.getUserProp((data) => {\r\n if (data.result.code == 404 && data.result.message == \"未找到道具数据\") {\r\n console.log(\"没有道具信息,从用户接口拿到数据\");\r\n cc.fx.GameConfig.GM_INFO.freezeAmount = 0;\r\n cc.fx.GameConfig.GM_INFO.hammerAmount = 0;\r\n cc.fx.GameConfig.GM_INFO.magicAmount = 0;\r\n let propInfo = {\r\n \"freezeAmount\": 0,\r\n \"hammerAmount\": 0,\r\n \"magicAmount\": 0,\r\n \"timestamp\": timestamp,\r\n }\r\n console.log(\"上传道具信息:\", propInfo);\r\n cc.fx.StorageMessage.setStorage(\"prop\", propInfo);\r\n cc.fx.GameTool.setUserProp(0, 0, (data) => {\r\n });\r\n }\r\n else if (data.result.code == 200) {\r\n console.log(\"有道具信息,从道具接口拿到数据\", data.result.data);\r\n cc.fx.GameConfig.GM_INFO.freezeAmount = data.result.data.freeze || 0;\r\n cc.fx.GameConfig.GM_INFO.hammerAmount = data.result.data.hammer || 0;\r\n cc.fx.GameConfig.GM_INFO.magicAmount = data.result.data.magic_wand || 0;\r\n let propInfo = {\r\n \"freezeAmount\": cc.fx.GameConfig.GM_INFO.freezeAmount,\r\n \"hammerAmount\": cc.fx.GameConfig.GM_INFO.hammerAmount,\r\n \"magicAmount\": cc.fx.GameConfig.GM_INFO.magicAmount,\r\n \"timestamp\": timestamp,\r\n }\r\n console.log(\"上传道具信息:\", propInfo);\r\n cc.fx.StorageMessage.setStorage(\"prop\", propInfo);\r\n\r\n }\r\n })\r\n }, 0);\r\n\r\n }\r\n\r\n },\r\n fail: err => {\r\n console.error('读取用户数据失败', err)\r\n if (retryCount < MAX_RETRIES) {\r\n console.error(`读取用户数据失败,第 ${retryCount + 1} 次重试,错误信息:`, err);\r\n // 延迟 2 秒后重试\r\n setTimeout(() => {\r\n this.readUserData(retryCount + 1);\r\n }, 2000);\r\n } else {\r\n console.error('读取用户数据失败,达到最大重试次数,退出游戏', err);\r\n // 退出游戏\r\n cc.game.end();\r\n }\r\n }\r\n })\r\n }\r\n\r\n setUserData() {\r\n cc.fx.GameConfig.GameTool((data) => {\r\n console.log(\"上传\", data);\r\n })\r\n }\r\n\r\n startTimeCutDown() {\r\n this.scheduleCallback = function () {\r\n if (this.timeNumber <= 0) {\r\n this.stopTimeCutDown();\r\n }\r\n else {\r\n this.timeNumber -= 1;\r\n }\r\n }.bind(this);\r\n this.schedule(this.scheduleCallback, 1);\r\n }\r\n\r\n stopTimeCutDown() {\r\n if (this.scheduleCallback) {\r\n this.unschedule(this.scheduleCallback);\r\n }\r\n }\r\n\r\n update(dt) {\r\n if (this.load1 && this.load2 && this.load3 && this.load4 && this.load5 && this.timeNumber <= 0) {\r\n this.load1 = this.load2 = false;\r\n MiniGameSdk.API.shushu_Init();\r\n this.startGame();\r\n }\r\n }\r\n}\r\n"]} \ No newline at end of file diff --git a/temp/quick-scripts/src/assets/Script/Map.js b/temp/quick-scripts/src/assets/Script/Map.js index 5a213f6..bc7e672 100644 --- a/temp/quick-scripts/src/assets/Script/Map.js +++ b/temp/quick-scripts/src/assets/Script/Map.js @@ -145,6 +145,8 @@ var MapConroler = /** @class */ (function (_super) { this.timeLabel = this.node.parent.getChildByName("Top").getChildByName("time"); this.levelLabel = this.node.parent.getChildByName("Top").getChildByName("level"); this.timeNumber = cc.fx.GameConfig.LEVEL_INFO[0].time; + this.count_Time = 0; + this.add_Time = 0; NumberToImage_1.default.getTimeMargin(this.timeNumber, 50, "time_", this.timeLabel); // var timeTemp = cc.fx.GameTool.getTimeMargin(this.timeNumber); // this.timeLabel.string = timeTemp.toString(); diff --git a/temp/quick-scripts/src/assets/Script/Map.js.map b/temp/quick-scripts/src/assets/Script/Map.js.map index 3b91ec7..37fdef4 100644 --- a/temp/quick-scripts/src/assets/Script/Map.js.map +++ b/temp/quick-scripts/src/assets/Script/Map.js.map @@ -1,5 +1 @@ -<<<<<<< HEAD -{"version":3,"sources":["assets\\Script\\Map.ts"],"names":[],"mappings":";;;;;AAAA,oBAAoB;AACpB,wEAAwE;AACxE,mBAAmB;AACnB,kFAAkF;AAClF,8BAA8B;AAC9B,kFAAkF;;;;;;;;;;;;;;;;;;;;;AAElF,6CAAwC;AAExC,iDAA4C;AAC5C,iDAAgD;AAE1C,IAAA,KAAsB,EAAE,CAAC,UAAU,EAAlC,OAAO,aAAA,EAAE,QAAQ,cAAiB,CAAC;AAK1C;IAAyC,+BAAY;IAArD;QAAA,qEAi+DC;QA59DG,iBAAW,GAAsB,EAAE,CAAC;QAGpC,gBAAU,GAAsB,EAAE,CAAC;QAGnC,oBAAc,GAAc,IAAI,CAAC;QAGjC,iBAAW,GAA2B,EAAE,CAAC;QAIzC,iBAAW,GAAsB,EAAE,CAAC;QAKpC,oBAAc,GAAc,IAAI,CAAC;QAGjC,aAAO,GAAc,IAAI,CAAC;QAE1B,gBAAU,GAAc,IAAI,CAAC;QAE7B,cAAQ,GAAc,IAAI,CAAC;QAG3B,UAAI,GAAY,IAAI,CAAC;QAGrB,cAAQ,GAAa,IAAI,CAAC;QAE1B,iBAAW,GAAa,IAAI,CAAC;QAE7B,gBAAU,GAAa,IAAI,CAAC;QAG5B,eAAS,GAAY,IAAI,CAAC;QAG1B,gBAAU,GAAY,IAAI,CAAC;QAG3B,gBAAU,GAAY,IAAI,CAAC;QAI3B,aAAO,GAAY,IAAI,CAAC;QAExB,eAAS,GAAY,IAAI,CAAC;QAC1B,gBAAU,GAAY,IAAI,CAAC;QAE3B,cAAQ,GAAW,CAAC,CAAC;QACrB,cAAQ,GAAW,CAAC,CAAC;QACrB,eAAS,GAAW,CAAC,CAAC;QACtB,aAAO,GAAW,CAAC,CAAC;QACpB,cAAQ,GAAW,CAAC,CAAC;QAUrB,kBAAY,GAAW,IAAI,CAAC,CAAA,QAAQ;QACpC,mBAAa,GAAY,IAAI,CAAC,CAAA,WAAW;QACzC,cAAQ,GAAY,KAAK,CAAC,CAAA,QAAQ;QAClC,aAAO,GAAY,KAAK,CAAC,CAAA,QAAQ;QACjC,eAAS,GAAY,KAAK,CAAC,CAAA,QAAQ;QACnC,cAAQ,GAAW,CAAC,CAAC,CAAG,MAAM;QAE9B,WAAK,GAAW,KAAK,CAAC,CAAA,MAAM;QAC5B,YAAM,GAAW,KAAK,CAAC,CAAA,MAAM;;IAi5DjC,CAAC;oBAj+DoB,WAAW;IA6F5B,4BAA4B;IAE5B,4BAAM,GAAN;QAAA,iBAoCC;QAlCG,EAAE,CAAC,EAAE,CAAC,UAAU,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC;QACpC,EAAE,CAAC,EAAE,CAAC,UAAU,CAAC,OAAO,CAAC,SAAS,GAAG,IAAI,CAAC;QAC1C,IAAI,CAAC,IAAI,CAAC,OAAO,GAAG,CAAC,CAAC;QACtB,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,UAAU,CAAC,CAAC,MAAM,GAAG,GAAG,CAAC;QAClD,EAAE,CAAC,IAAI,CAAC,YAAY,CAAC,EAAE,CAAC,CAAC;QACzB,EAAE,CAAC,EAAE,CAAC,YAAY,CAAC,SAAS,CAAC,UAAU,CAAC,QAAQ,EAAC,IAAI,CAAC,CAAC;QACvD,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,cAAc,CAAC,YAAY,CAAC,CAAC,MAAM,GAAG,IAAI,CAAC;QAC1E,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,cAAc,CAAC,YAAY,CAAC,CAAC,YAAY,CAAC,EAAE,CAAC,QAAQ,CAAC,CAAC,YAAY,CAAC,CAAC,EAAC,MAAM,EAAC,KAAK,CAAC,CAAC;QACnH,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,cAAc,CAAC,YAAY,CAAC,CAAC,YAAY,CAAC,EAAE,CAAC,QAAQ,CAAC,CAAC,mBAAmB,CAAC,UAAC,KAAK;YAC5G,IAAI,KAAK,CAAC,SAAS,CAAC,IAAI,KAAK,MAAM,EAAE;gBACjC,eAAe;gBACf,KAAI,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,cAAc,CAAC,YAAY,CAAC,CAAC,MAAM,GAAG,KAAK,CAAC;aAC9E;QACL,CAAC,CAAC,CAAC;QACH,IAAI,CAAC,MAAM,GAAG,EAAE,CAAC;QACjB,IAAI,CAAC,SAAS,GAAG,EAAE,CAAC,CAAC,IAAI;QACzB,IAAI,CAAC,UAAU,GAAG,EAAE,CAAC,CAAC,IAAI;QAC1B,IAAI,CAAC,QAAQ,GAAG,EAAE,CAAC,CAAC,IAAI;QACxB,IAAI,CAAC,WAAW,GAAG,EAAE,CAAC,CAAC,IAAI;QAC3B,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC;QACrB,IAAI,CAAC,QAAQ,GAAG,KAAK,CAAC;QACtB,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC;QACvB,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC;QACzB,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC;QAC1B,IAAI,CAAC,QAAQ,GAAG,CAAC,CAAC;QAClB,IAAI,CAAC,UAAU,GAAG,CAAC,CAAC;QACpB,IAAI,CAAC,QAAQ,GAAG,CAAC,CAAC;QAElB,IAAI,CAAC,QAAQ,CAAC,MAAM,GAAG,EAAE,CAAC,EAAE,CAAC,UAAU,CAAC,OAAO,CAAC,YAAY,CAAC,QAAQ,EAAE,CAAC;QACxE,IAAI,CAAC,WAAW,CAAC,MAAM,GAAG,EAAE,CAAC,EAAE,CAAC,UAAU,CAAC,OAAO,CAAC,YAAY,CAAC,QAAQ,EAAE,CAAC;QAC3E,IAAI,CAAC,UAAU,CAAC,MAAM,GAAG,EAAE,CAAC,EAAE,CAAC,UAAU,CAAC,OAAO,CAAC,WAAW,CAAC,QAAQ,EAAE,CAAC;QAEzE,yCAAyC;QACzC,aAAW,CAAC,SAAS,GAAG,IAAI,CAAC;IACjC,CAAC;IAED,2BAAK,GAAL;QACI,UAAU,CAAC;YACF,EAAE,CAAC,QAAQ,CAAC,YAAY,CAAC,WAAW,EAAE,UAAC,GAAG,EAAE,KAAK;gBAClD,IAAI,GAAG,EAAE;oBACL,OAAO,CAAC,KAAK,CAAC,oBAAoB,EAAE,GAAG,CAAC,CAAC;oBACzC,OAAO;iBACV;YACL,CAAC,CAAC,CAAC;QACP,CAAC,EAAE,IAAI,CAAC,CAAC;QACT,8BAA8B;QAC9B,IAAI,CAAC,WAAW,GAAG,qBAAW,CAAC,SAAS,CAAC,WAAW,CAAC;QACrD,IAAI,CAAC,WAAW,GAAG,qBAAW,CAAC,SAAS,CAAC,WAAW,CAAC;QACrD,IAAI,CAAC,WAAW,GAAG,qBAAW,CAAC,SAAS,CAAC,WAAW,CAAC;QACrD,gEAAgE;QAEhE,IAAI,CAAC,OAAO,EAAE,CAAC;IAEnB,CAAC;IAED,iCAAW,GAAX;QACI,IAAG,IAAI,CAAC,SAAS,IAAI,KAAK,EAAC;YACvB,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;YACtB,cAAc;YACd,OAAO,CAAC,GAAG,CAAC,iBAAiB,CAAC,CAAC;YAC/B,EAAE,CAAC,EAAE,CAAC,QAAQ,CAAC,YAAY,CAAC,aAAa,CAAC,CAAC;YAC3C,IAAI,CAAC,gBAAgB,EAAE,CAAC;YACxB,KAAI,IAAI,CAAC,GAAE,CAAC,EAAE,CAAC,GAAC,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,EAAE,EAAC;gBACpC,IAAG,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC,IAAI,IAAI,CAAC,EAAC;oBAC9C,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC,SAAS,EAAE,CAAC;iBAC1E;aACJ;SACJ;IACL,CAAC;IAED,6BAAO,GAAP;QACI,gDAAgD;QAChD,IAAI,CAAC,SAAS,GAAI,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC;QAChF,IAAI,CAAC,UAAU,GAAI,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC;QAClF,IAAI,CAAC,UAAU,GAAG,EAAE,CAAC,EAAE,CAAC,UAAU,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;QACtD,IAAI,CAAC,UAAU,GAAG,CAAC,CAAC;QACpB,IAAI,CAAC,QAAQ,GAAG,CAAC,CAAC;QAClB,uBAAa,CAAC,aAAa,CAAC,IAAI,CAAC,UAAU,EAAC,EAAE,EAAC,OAAO,EAAC,IAAI,CAAC,SAAS,CAAC,CAAA;QACtE,gEAAgE;QAChE,+CAA+C;QAC/C,uBAAa,CAAC,kBAAkB,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,UAAU,CAAC,OAAO,CAAC,KAAK,GAAC,CAAC,CAAC,EAAC,EAAE,EAAC,EAAE,EAAC,QAAQ,EAAC,IAAI,CAAC,UAAU,EAAC,KAAK,CAAC,CAAA;QAEzG,0BAA0B;QAE1B,IAAI,CAAC,QAAQ,GAAG,EAAE,CAAC,EAAE,CAAC,UAAU,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;QACtD,IAAI,CAAC,SAAS,GAAG,EAAE,CAAC,EAAE,CAAC,UAAU,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;QACvD,IAAI,GAAG,GAAG,EAAE,CAAC,EAAE,CAAC,UAAU,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC;QAC7C,IAAI,QAAQ,GAAG,EAAE,CAAC,EAAE,CAAC,UAAU,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC;QAEvD,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;QACnB,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC;QACpB,IAAI,CAAC,OAAO,GAAG,CAAC,CAAC;QACjB,IAAI,CAAC,UAAU,EAAE,CAAC;QAClB,IAAI,CAAC,MAAM,GAAG,EAAE,CAAC;QACjB,IAAI,CAAC,aAAa,GAAG,EAAE,CAAC;QACxB,IAAI,CAAC,OAAO,GAAG,EAAE,CAAC;QAClB,IAAI,CAAC,QAAQ,GAAG,EAAE,CAAC;QACnB,IAAI,CAAC,QAAQ,GAAG,EAAE,CAAC;QACnB,IAAI,CAAC,SAAS,GAAG,EAAE,CAAC;QACpB,IAAI,CAAC,UAAU,GAAG,EAAE,CAAC;QACrB,IAAI,CAAC,aAAa,GAAG,EAAE,CAAC;QACxB,IAAI,CAAC,aAAa,GAAG,EAAE,CAAC;QACxB,IAAI,CAAC,WAAW,GAAG,EAAE,CAAC;QACtB,IAAI,CAAC,UAAU,GAAG,EAAE,CAAC;QAGrB,IAAI,MAAM,GAAI,IAAI,CAAC,QAAQ,GAAC,CAAC,IAAE,CAAC,CAAA,CAAC,CAAA,CAAC,CAAC,IAAI,CAAC,QAAQ,GAAC,CAAC,CAAC,GAAC,EAAE,CAAA,CAAC,CAAA,CAAC,CAAC,IAAI,CAAC,QAAQ,GAAC,CAAC,CAAC,GAAC,EAAE,CAAC;QAC7E,IAAI,MAAM,GAAI,IAAI,CAAC,SAAS,GAAC,CAAC,IAAE,CAAC,CAAA,CAAC,CAAA,CAAC,CAAC,IAAI,CAAC,SAAS,GAAC,CAAC,CAAC,GAAC,EAAE,CAAA,CAAC,CAAA,CAAC,CAAC,IAAI,CAAC,SAAS,GAAC,CAAC,CAAC,GAAC,EAAE,CAAC;QAChF,qCAAqC;QACrC,uCAAuC;QAEvC,KAAI,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,QAAQ,EAAE,CAAC,EAAE,EAAC;YAClC,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC;YAE3B,KAAI,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,SAAS,EAAE,CAAC,EAAE,EAAC;gBACnC,IAAI,KAAK,GAAG,EAAE,CAAC,WAAW,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;gBAChD,KAAK,CAAC,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,UAAU,CAAC,CAAC;gBACpD,KAAK,CAAC,YAAY,CAAC,UAAU,CAAC,CAAC,IAAI,CAAC,CAAC,EAAC,CAAC,CAAC,CAAC;gBACzC,2EAA2E;gBAC3E,KAAK,CAAC,WAAW,CAAC,EAAE,CAAC,EAAE,CAAC,MAAM,GAAG,CAAC,GAAG,GAAG,EAAE,MAAM,GAAG,CAAC,GAAG,GAAG,CAAC,CAAC,CAAA;gBAC5D,IAAG,QAAQ,IAAI,IAAI,EAAC;oBAChB,IAAG,IAAI,CAAC,WAAW,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAC,CAAC,CAAC,EAAC,QAAQ,EAAC,KAAK,CAAC,EAAC;wBAC3C,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;qBAClC;iBACJ;gBACD,IAAG,GAAG,IAAG,IAAI,EAAC;oBACV,IAAG,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAC,CAAC,CAAC,EAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,QAAQ,GAAC,CAAC;2BAC9D,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,SAAS,GAAG,CAAC,EAAC;wBACjC,KAAK,CAAC,OAAO,GAAG,GAAG,CAAC;wBACpB,KAAK,CAAC,eAAe,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC;wBACjC,KAAK,CAAC,iBAAiB,EAAE,CAAC;wBAC1B,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;qBAC7B;;wBACI,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;iBACjC;qBACG;oBACA,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,QAAQ,GAAC,CAAC;2BAC/B,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,SAAS,GAAG,CAAC,EAAC;wBACjC,KAAK,CAAC,OAAO,GAAG,GAAG,CAAC;wBACpB,KAAK,CAAC,eAAe,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC;wBACjC,KAAK,CAAC,iBAAiB,EAAE,CAAC;wBAC1B,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;qBAC7B;;wBACI,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;iBACjC;gBAED,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;aACrC;SACJ;QAED,IAAI,CAAC,QAAQ,EAAE,CAAC;QAChB,IAAI,CAAC,SAAS,EAAE,CAAC;IAErB,CAAC;IAED,MAAM;IACV,eAAe;IAEf,MAAM;IACN,eAAe;IAKf,+BAAS,GAAT;QAAA,iBA2FC;QA1FG,IAAI,UAAU,GAAG,EAAE,CAAC,EAAE,CAAC,UAAU,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;QAChD,UAAU,GAAG,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC;QAExC,IAAI,KAAK,GAAG,CAAC,CAAC,CAAC,aAAa;QAC5B,IAAI,gBAAgB,GAAG,CAAC,CAAC,CAAC,cAAc;QACxC,IAAM,aAAa,GAAG,EAAE,CAAC,CAAC,WAAW;QACrC,IAAM,aAAa,GAAG,CAAC,CAAC,CAAC,WAAW;QAEpC,IAAM,YAAY,GAAG;YACjB,IAAM,SAAS,GAAG,WAAW,CAAC,GAAG,EAAE,CAAC;oCAC3B,CAAC;gBACN,IAAI,SAAS,GAAG,UAAU,CAAC,KAAK,CAAC,CAAC;gBAClC,oBAAoB;gBACpB,IAAM,WAAW,GAAG,KAAI,CAAC,WAAW,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;gBACtD,IAAI,KAAK,GAAG,EAAE,CAAC,WAAW,CAAC,WAAW,CAAC,CAAC;gBACxC,KAAK,CAAC,MAAM,GAAG,KAAI,CAAC,IAAI,CAAC;gBACzB,KAAK,CAAC,WAAW,CAAC,EAAE,CAAC,EAAE,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC,EAAE,SAAS,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;gBACrE,IAAI,SAAS,CAAC,KAAK,IAAI,EAAE,EAAE;oBACvB,KAAI,CAAC,QAAQ,IAAI,CAAC,CAAC;oBACnB,KAAI,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;oBACxB,IAAI,SAAS,CAAC,IAAI,IAAI,CAAC,EAAE;wBACrB,IAAI,IAAI,GAAG;4BACP,EAAE,EAAE,SAAS,CAAC,EAAE,GAAG,CAAC;4BACpB,KAAK,EAAE,SAAS,CAAC,KAAK;4BACtB,KAAK,EAAE,SAAS,CAAC,QAAQ;4BACzB,IAAI,EAAE,EAAE;4BACR,QAAQ,EAAE,SAAS,CAAC,QAAQ;4BAC5B,QAAQ,EAAE,SAAS,CAAC,KAAK;yBAC5B,CAAC;wBACF,oBAAoB;wBACpB,IAAM,aAAa,GAAG,KAAI,CAAC,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;wBACnD,IAAI,OAAO,GAAG,EAAE,CAAC,WAAW,CAAC,aAAa,CAAC,CAAC;wBAC5C,OAAO,CAAC,MAAM,GAAG,KAAI,CAAC,IAAI,CAAC;wBAC3B,OAAO,CAAC,WAAW,CAAC,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;wBAE7D,KAAI,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;wBAC1B,KAAK,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC;wBACjE,OAAO,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,CAAC,CAAC;wBAE5D,KAAI,CAAC,QAAQ,IAAI,CAAC,CAAC;qBACtB;yBAAM,IAAI,SAAS,CAAC,IAAI,IAAI,CAAC,EAAE;wBAC5B,IAAG,SAAS,CAAC,YAAY,GAAG,CAAC,EAAC;4BAC1B,KAAK,EAAE,CAAC;;yBAEX;wBACD,KAAK,EAAE,CAAC;wBACR,IAAI,MAAI,GAAG,UAAU,CAAC,KAAK,CAAC,CAAC;wBAC7B,oBAAoB;wBACpB,IAAM,aAAa,GAAG,KAAI,CAAC,WAAW,CAAC,MAAI,CAAC,KAAK,CAAC,CAAC;wBACnD,IAAI,SAAO,GAAG,EAAE,CAAC,WAAW,CAAC,aAAa,CAAC,CAAC;wBAC5C,SAAO,CAAC,MAAM,GAAG,KAAI,CAAC,IAAI,CAAC;wBAC3B,SAAO,CAAC,WAAW,CAAC,EAAE,CAAC,EAAE,CAAC,MAAI,CAAC,QAAQ,CAAC,CAAC,EAAE,MAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;wBAE7D,KAAI,CAAC,MAAM,CAAC,IAAI,CAAC,SAAO,CAAC,CAAC;wBAC1B,KAAK,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,EAAE,IAAI,EAAE,SAAO,EAAC,KAAK,CAAC,CAAC;wBACvE,UAAU,CAAC;4BACP,SAAO,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,MAAI,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAC,IAAI,CAAC,CAAC;wBACrE,CAAC,EAAE,GAAG,CAAC,CAAC;wBACR,KAAI,CAAC,QAAQ,IAAI,CAAC,CAAC;qBACtB;yBAAM;wBACH,KAAK,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;qBAC/C;iBACJ;qBACG;oBACA,KAAK,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;iBACjD;gBACD,KAAK,EAAE,CAAC;;YAxDZ,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,gBAAgB,IAAI,KAAK,GAAG,UAAU,CAAC,MAAM,EAAE,CAAC,EAAE;wBAA7D,CAAC;aAyDT;YACD,IAAM,OAAO,GAAG,WAAW,CAAC,GAAG,EAAE,CAAC;YAClC,IAAM,SAAS,GAAG,OAAO,GAAG,SAAS,CAAC;YACtC,uBAAuB;YACvB,IAAI,SAAS,GAAG,EAAE,EAAE;gBAChB,gBAAgB,GAAG,IAAI,CAAC,GAAG,CAAC,gBAAgB,GAAG,CAAC,EAAE,aAAa,CAAC,CAAC;aACpE;iBAAM;gBACH,gBAAgB,GAAG,IAAI,CAAC,GAAG,CAAC,gBAAgB,GAAG,CAAC,EAAE,aAAa,CAAC,CAAC;aACpE;YAED,oBAAoB;YACpB,IAAI,KAAK,GAAG,UAAU,CAAC,MAAM,EAAE;gBAC3B,sCAAsC;gBACtC,KAAI,CAAC,YAAY,CAAC;oBACd,YAAY,EAAE,CAAC;gBACnB,CAAC,EAAE,CAAC,CAAC,CAAC;aACT;iBAAM;aAEN;QACL,CAAC,CAAC;QAEF,WAAW;QACX,YAAY,EAAE,CAAC;IACnB,CAAC;IACD,yBAAyB;IACzB,+BAAS,GAAT,UAAU,SAA2D;QACjE,OAAO,SAAS,CAAC,IAAI,CAAC,UAAC,CAAC,EAAE,CAAC;YACvB,0BAA0B;YAC1B,IAAI,CAAC,CAAC,IAAI,KAAK,CAAC,IAAI,CAAC,CAAC,IAAI,KAAK,CAAC,EAAE;gBAC9B,OAAO,CAAC,CAAC;aACZ;YACD,IAAI,CAAC,CAAC,IAAI,KAAK,CAAC,IAAI,CAAC,CAAC,IAAI,KAAK,CAAC,EAAE;gBAC9B,OAAO,CAAC,CAAC,CAAC;aACb;YAED,2BAA2B;YAC3B,IAAI,CAAC,CAAC,IAAI,KAAK,CAAC,IAAI,CAAC,CAAC,IAAI,KAAK,CAAC,EAAE;gBAC9B,OAAO,CAAC,CAAC,IAAI,GAAG,CAAC,CAAC,IAAI,CAAC;aAC1B;YACD,IAAI,CAAC,CAAC,IAAI,KAAK,CAAC,IAAI,CAAC,CAAC,IAAI,KAAK,CAAC,EAAE;gBAC9B,OAAO,CAAC,CAAC;aACZ;YACD,IAAI,CAAC,CAAC,IAAI,KAAK,CAAC,IAAI,CAAC,CAAC,IAAI,KAAK,CAAC,EAAE;gBAC9B,OAAO,CAAC,CAAC,CAAC;aACb;YAED,6BAA6B;YAC7B,IAAI,CAAC,CAAC,KAAK,KAAK,EAAE,IAAI,CAAC,CAAC,KAAK,KAAK,EAAE,EAAE;gBAClC,OAAO,CAAC,CAAC,CAAC;aACb;YACD,IAAI,CAAC,CAAC,KAAK,KAAK,EAAE,IAAI,CAAC,CAAC,KAAK,KAAK,EAAE,EAAE;gBAClC,OAAO,CAAC,CAAC;aACZ;YAED,iBAAiB;YACjB,OAAO,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,KAAK,CAAC;QAC7B,CAAC,CAAC,CAAC;IACP,CAAC;IAGD,MAAM;IAEN,8BAAQ,GAAR;QAAA,iBAsCC;QArCG,IAAI,KAAK,GAAG,CAAC,CAAC,CAAC,aAAa;QAC5B,IAAI,eAAe,GAAG,CAAC,CAAC,CAAC,cAAc;QACvC,IAAM,aAAa,GAAG,EAAE,CAAC,CAAC,WAAW;QACrC,IAAM,aAAa,GAAG,CAAC,CAAC,CAAC,WAAW;QAEpC,IAAM,WAAW,GAAG;YAChB,IAAM,SAAS,GAAG,WAAW,CAAC,GAAG,EAAE,CAAC;YACpC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,eAAe,IAAI,KAAK,GAAG,KAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;gBACtE,IAAI,KAAK,GAAG,KAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;gBACjC,IAAI,GAAG,GAAG,KAAI,CAAC,eAAe,CAAC,MAAM,EAAE,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC,YAAY,CAAC,UAAU,CAAC,CAAC,IAAI,EAAE,KAAK,CAAC,YAAY,CAAC,UAAU,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;gBACxH,IAAI,GAAG,IAAI,IAAI,EAAE;oBACb,KAAI,CAAC,UAAU,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;iBAC/B;gBACD,KAAK,EAAE,CAAC;aACX;YACD,IAAM,OAAO,GAAG,WAAW,CAAC,GAAG,EAAE,CAAC;YAClC,IAAM,SAAS,GAAG,OAAO,GAAG,SAAS,CAAC;YACtC,uBAAuB;YACvB,IAAI,SAAS,GAAG,EAAE,EAAE;gBAChB,eAAe,GAAG,IAAI,CAAC,GAAG,CAAC,eAAe,GAAG,CAAC,EAAE,aAAa,CAAC,CAAC;aAClE;iBAAM;gBACH,eAAe,GAAG,IAAI,CAAC,GAAG,CAAC,eAAe,GAAG,CAAC,EAAE,aAAa,CAAC,CAAC;aAClE;YAED,oBAAoB;YACpB,IAAI,KAAK,GAAG,KAAI,CAAC,QAAQ,CAAC,MAAM,EAAE;gBAC9B,KAAI,CAAC,YAAY,CAAC;oBACd,WAAW,EAAE,CAAC;gBAClB,CAAC,EAAE,CAAC,CAAC,CAAC;aACT;iBAAM;gBACH,mBAAmB;gBACnB,KAAI,CAAC,iBAAiB,EAAE,CAAC;aAC5B;QACL,CAAC,CAAC;QAEF,WAAW;QACX,WAAW,EAAE,CAAC;IAClB,CAAC;IAED,eAAe;IAEX,qCAAe,GAAf,UAAgB,IAAI,EAAC,MAAM;QACvB,IAAI,GAAG,GAAG,EAAE,CAAC;QACb,IAAI,MAAM,GAAG,EAAE,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,EAAC,MAAM,CAAC,CAAC,CAAC,CAAC;QAC1C,IAAI,MAAM,GAAG,EAAE,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,EAAC,MAAM,CAAC,CAAC,CAAC,CAAC;QAC1C,IAAI,MAAM,GAAG,EAAE,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,EAAC,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;QAC1C,IAAI,MAAM,GAAG,EAAE,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,EAAC,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;QAC1C,IAAI,OAAO,GAAG,CAAC,CAAC;QAChB,IAAG,IAAI,IAAI,MAAM;YAAE,OAAO,GAAG,GAAG,CAAC;QACjC,IAAG,IAAI,IAAI,MAAM;YAAE,OAAO,GAAG,GAAG,CAAC;QAEjC,IAAG,MAAM,CAAC,CAAC,GAAG,IAAI,CAAC,QAAQ,EAAC;YACxB,IAAG,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,IAAI,OAAO,EAAE;gBAC1D,IAAG,IAAI,IAAI,MAAM,IAAI,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,UAAU,CAAC,CAAC,SAAS,IAAI,OAAO,EAAC;iBAEzG;;oBACI,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;aAC1B;SACJ;QACD,IAAG,MAAM,CAAC,CAAC,IAAI,CAAC,EAAC;YACb,IAAG,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,IAAI,OAAO,EAAC;gBACzD,IAAG,IAAI,IAAI,MAAM,IAAI,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,UAAU,CAAC,CAAC,SAAS,IAAI,MAAM,EAAC;iBAExG;;oBACI,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;aACzB;SACJ;QACD,IAAG,MAAM,CAAC,CAAC,GAAG,IAAI,CAAC,SAAS,EAAC;YACzB,IAAG,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,IAAI,OAAO,EAAC;gBACzD,IAAG,IAAI,IAAI,MAAM,IAAI,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,UAAU,CAAC,CAAC,SAAS,IAAI,IAAI,EAAC;iBAEtG;;oBACI,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;aACvB;SACJ;QACD,IAAG,MAAM,CAAC,CAAC,IAAI,CAAC,EAAC;YACb,IAAG,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,IAAI,OAAO,EAAC;gBACzD,IAAG,IAAI,IAAI,MAAM,IAAI,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,UAAU,CAAC,CAAC,SAAS,IAAI,MAAM,EAAC;iBAExG;;oBACI,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;aACzB;SACJ;QACD,IAAG,GAAG,CAAC,MAAM,GAAG,CAAC,EAAC;YAEd,OAAO,IAAI,CAAC;SACf;QACD,IAAG,GAAG,CAAC,MAAM,IAAI,CAAC,EAAC;YACf,IAAG,IAAI,IAAI,MAAM;gBACb,OAAO,GAAG,CAAC,CAAC,CAAC,CAAC;;gBAEd,OAAO,IAAI,CAAC;SACnB;aACI,IAAG,GAAG,CAAC,MAAM,IAAI,CAAC,EAAC;YACpB,OAAO,GAAG,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC;SAC1B;IACL,CAAC;IAED,uCAAiB,GAAjB;QACI,SAAS;QACT,KAAI,IAAI,CAAC,GAAC,CAAC,EAAE,CAAC,GAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC,EAAE,EAAC;YACrC,IAAI,KAAK,GAAG,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;YAC7B,IAAG,KAAK,CAAC,OAAO,IAAI,GAAG,EAAC;gBACpB,IAAI,GAAG,GAAG,IAAI,CAAC,eAAe,CAAC,MAAM,EAAC,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC,YAAY,CAAC,UAAU,CAAC,CAAC,IAAI,EAAC,KAAK,CAAC,YAAY,CAAC,UAAU,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;gBACtH,IAAG,GAAG,IAAI,IAAI,EAAC;oBACX,IAAI,CAAC,UAAU,CAAC,GAAG,EAAC,KAAK,EAAC,KAAK,CAAC,YAAY,CAAC,UAAU,CAAC,CAAC,IAAI,EAAC,KAAK,CAAC,YAAY,CAAC,UAAU,CAAC,CAAC,IAAI,CAAC,CAAC;iBACtG;aACJ;SAEJ;IAEL,CAAC;IAED,gCAAU,GAAV,UAAW,SAAS,EAAC,IAAI;QACrB,IAAI,IAAI,GAAG,IAAI,CAAC;QAChB,IAAI,CAAC,YAAY,CAAC,UAAU,CAAC,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC;QACtD,QAAO,SAAS,EAAC;YACb,KAAK,OAAO;gBACR,IAAI,CAAC,OAAO,GAAG,GAAG,CAAC;gBACnB,IAAI,GAAG,EAAE,CAAC,WAAW,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC;gBAC3C,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;gBAC1B,kDAAkD;gBAClD,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC;gBACxB,IAAI,CAAC,WAAW,CAAC,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,EAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;gBACvC,IAAI,CAAC,OAAO,GAAG,GAAG,CAAC;gBACnB,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,IAAI,EAAC,IAAI,CAAC,YAAY,CAAC,UAAU,CAAC,CAAC,IAAI,EAAC,IAAI,CAAC,YAAY,CAAC,UAAU,CAAC,CAAC,IAAI,EAAC,SAAS,CAAC,CAAC;gBAC5I,4GAA4G;gBAC5G,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC,CAAC;gBAC9C,IAAI,CAAC,OAAO,IAAI,CAAC,CAAC;gBAClB,IAAG,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC,OAAO,IAAI,CAAC;oBAC5D,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;qBACxB,IAAG,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC,OAAO,IAAI,CAAC;oBACjE,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;gBAE/B,MAAM;YACV,KAAK,MAAM;gBACP,IAAI,CAAC,OAAO,GAAG,GAAG,CAAC;gBACnB,IAAI,GAAG,EAAE,CAAC,WAAW,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC;gBAC3C,kDAAkD;gBAClD,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;gBAC3B,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC;gBACxB,IAAI,CAAC,WAAW,CAAC,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,EAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;gBACvC,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,IAAI,EAAC,IAAI,CAAC,YAAY,CAAC,UAAU,CAAC,CAAC,IAAI,EAAC,IAAI,CAAC,YAAY,CAAC,UAAU,CAAC,CAAC,IAAI,EAAC,SAAS,CAAC,CAAC;gBAC5I,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC,CAAC;gBAC9C,4GAA4G;gBAC5G,IAAI,CAAC,OAAO,IAAI,CAAC,CAAC;gBAClB,IAAG,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC,OAAO,IAAI,CAAC;oBAC5D,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;qBACxB,IAAG,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC,OAAO,IAAI,CAAC;oBACjE,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;gBAC/B,MAAM;YACV,KAAK,IAAI;gBACL,IAAI,CAAC,OAAO,GAAG,GAAG,CAAC;gBACnB,IAAI,GAAG,EAAE,CAAC,WAAW,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC;gBAExC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;gBAC5B,kDAAkD;gBAClD,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC;gBACxB,IAAI,CAAC,WAAW,CAAC,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,EAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;gBAEvC,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,IAAI,EAAC,IAAI,CAAC,YAAY,CAAC,UAAU,CAAC,CAAC,IAAI,EAAC,IAAI,CAAC,YAAY,CAAC,UAAU,CAAC,CAAC,IAAI,EAAC,SAAS,CAAC,CAAC;gBAC5I,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC,CAAC;gBAC9C,4GAA4G;gBAC5G,IAAI,CAAC,OAAO,IAAI,CAAC,CAAC;gBAClB,IAAG,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC,OAAO,IAAI,CAAC;oBAC5D,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;qBACxB,IAAG,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC,OAAO,IAAI,CAAC;oBACjE,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;gBAC/B,MAAM;YACV,KAAK,MAAM;gBACP,IAAI,CAAC,OAAO,GAAG,GAAG,CAAC;gBACnB,IAAI,GAAG,EAAE,CAAC,WAAW,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC;gBACrC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;gBAClC,kDAAkD;gBAClD,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC;gBACxB,IAAI,CAAC,WAAW,CAAC,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,EAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;gBACvC,iDAAiD;gBACjD,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,IAAI,EAAC,IAAI,CAAC,YAAY,CAAC,UAAU,CAAC,CAAC,IAAI,EAAC,IAAI,CAAC,YAAY,CAAC,UAAU,CAAC,CAAC,IAAI,EAAC,SAAS,CAAC,CAAC;gBAC5I,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC,CAAC;gBAC9C,4GAA4G;gBAC5G,IAAI,CAAC,OAAO,IAAI,CAAC,CAAC;gBAClB,IAAG,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC,OAAO,IAAI,CAAC;oBAC5D,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;qBACxB,IAAG,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC,OAAO,IAAI,CAAC;oBACjE,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;gBAC/B,MAAM;YACV,KAAK,SAAS,CAAE;YAAC,KAAK,SAAS;gBAC3B,IAAI,CAAC,OAAO,GAAG,GAAG,CAAC;gBACnB,IAAI,GAAG,EAAE,CAAC,WAAW,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC;gBAC3C,kDAAkD;gBAClD,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC;gBACxB,IAAI,CAAC,WAAW,CAAC,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,EAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;gBACvC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,IAAI,EAAC,IAAI,CAAC,YAAY,CAAC,UAAU,CAAC,CAAC,IAAI,EAAC,IAAI,CAAC,YAAY,CAAC,UAAU,CAAC,CAAC,IAAI,EAAC,SAAS,CAAC,CAAC;gBACjI,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,IAAI,EAAC,IAAI,CAAC,YAAY,CAAC,UAAU,CAAC,CAAC,IAAI,EAAC,IAAI,CAAC,YAAY,CAAC,UAAU,CAAC,CAAC,IAAI,EAAC,SAAS,CAAC,CAAC;gBACjI,iGAAiG;gBACjG,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;gBACnC,IAAI,CAAC,OAAO,IAAI,CAAC,CAAC;gBAClB,iGAAiG;gBACjG,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;gBACnC,IAAI,CAAC,OAAO,IAAI,CAAC,CAAC;gBAElB,MAAM;YACV,KAAK,QAAQ,CAAE;YAAC,KAAK,QAAQ;gBACzB,IAAI,CAAC,OAAO,GAAG,GAAG,CAAC;gBACnB,IAAI,GAAG,EAAE,CAAC,WAAW,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC;gBAC3C,kDAAkD;gBAClD,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC;gBACxB,IAAI,CAAC,WAAW,CAAC,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,EAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;gBACvC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,IAAI,EAAC,IAAI,CAAC,YAAY,CAAC,UAAU,CAAC,CAAC,IAAI,EAAC,IAAI,CAAC,YAAY,CAAC,UAAU,CAAC,CAAC,IAAI,EAAC,SAAS,CAAC,CAAC;gBACjI,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,IAAI,EAAC,IAAI,CAAC,YAAY,CAAC,UAAU,CAAC,CAAC,IAAI,EAAC,IAAI,CAAC,YAAY,CAAC,UAAU,CAAC,CAAC,IAAI,EAAC,SAAS,CAAC,CAAC;gBACjI,iGAAiG;gBACjG,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;gBACnC,IAAI,CAAC,OAAO,IAAI,CAAC,CAAC;gBAClB,iGAAiG;gBACjG,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;gBACnC,IAAI,CAAC,OAAO,IAAI,CAAC,CAAC;gBAElB,MAAM;YACV,KAAK,WAAW,CAAE;YAAC,KAAK,WAAW;gBAC/B,IAAI,CAAC,OAAO,GAAG,GAAG,CAAC;gBACnB,IAAI,GAAG,EAAE,CAAC,WAAW,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC;gBAC3C,kDAAkD;gBAClD,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC;gBACxB,IAAI,CAAC,WAAW,CAAC,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,EAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;gBACvC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,IAAI,EAAC,IAAI,CAAC,YAAY,CAAC,UAAU,CAAC,CAAC,IAAI,EAAC,IAAI,CAAC,YAAY,CAAC,UAAU,CAAC,CAAC,IAAI,EAAC,SAAS,CAAC,CAAC;gBACjI,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,IAAI,EAAC,IAAI,CAAC,YAAY,CAAC,UAAU,CAAC,CAAC,IAAI,EAAC,IAAI,CAAC,YAAY,CAAC,UAAU,CAAC,CAAC,IAAI,EAAC,SAAS,CAAC,CAAC;gBACjI,iGAAiG;gBACjG,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;gBACnC,IAAI,CAAC,OAAO,IAAI,CAAC,CAAC;gBAClB,iGAAiG;gBACjG,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;gBACnC,IAAI,CAAC,OAAO,IAAI,CAAC,CAAC;gBAElB,MAAM;YACV,KAAK,UAAU,CAAE;YAAC,KAAK,UAAU;gBAC7B,IAAI,CAAC,OAAO,GAAG,GAAG,CAAC;gBACnB,IAAI,GAAG,EAAE,CAAC,WAAW,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC;gBAC3C,kDAAkD;gBAClD,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC;gBACxB,IAAI,CAAC,WAAW,CAAC,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,EAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;gBACvC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,IAAI,EAAC,IAAI,CAAC,YAAY,CAAC,UAAU,CAAC,CAAC,IAAI,EAAC,IAAI,CAAC,YAAY,CAAC,UAAU,CAAC,CAAC,IAAI,EAAC,SAAS,CAAC,CAAC;gBACjI,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,IAAI,EAAC,IAAI,CAAC,YAAY,CAAC,UAAU,CAAC,CAAC,IAAI,EAAC,IAAI,CAAC,YAAY,CAAC,UAAU,CAAC,CAAC,IAAI,EAAC,SAAS,CAAC,CAAC;gBACjI,iGAAiG;gBACjG,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;gBACnC,IAAI,CAAC,OAAO,IAAI,CAAC,CAAC;gBAClB,iGAAiG;gBACjG,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;gBACnC,IAAI,CAAC,OAAO,IAAI,CAAC,CAAC;gBAElB,MAAM;SAEb;QAGD,gBAAgB;QAChB,oDAAoD;QACpD,IAAI;IACR,CAAC;IAED,iCAAW,GAAX,UAAY,IAAI;QACZ,IAAI,QAAQ,GAAG,EAAE,CAAC,EAAE,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;QAE7C,IAAG,QAAQ,EAAC;YACR,KAAI,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,QAAQ,CAAC,MAAM,EAAE,CAAC,EAAE,EAAC;gBACpC,IAAG,QAAQ,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,IAAI,CAAC,OAAO,EAAC;oBAC/B,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,CAAC,CAAC;oBAC3D,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;iBACpC;aACJ;SACJ;IACL,CAAC;IAED,gCAAU,GAAV,UAAW,SAAS,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI;QAC/B,IAAI,IAAI,GAAG,IAAI,CAAC;QAChB,IAAI,GAAG,EAAE,CAAC,WAAW,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;QAC3C,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC;QACxB,IAAI,CAAC,WAAW,CAAC,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,EAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;QACvC,QAAO,SAAS,EAAC;YACb,KAAK,SAAS,CAAE;YAAC,KAAK,SAAS;gBAC3B,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC;gBACf,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC;gBAEtC,MAAM;YACV,KAAK,QAAQ,CAAE;YAAC,KAAK,QAAQ;gBACzB,IAAI,CAAC,KAAK,GAAG,EAAE,CAAC;gBAChB,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC,KAAK,GAAG,CAAC,EAAE,CAAC;gBACxC,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;gBACnC,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,GAAG,CAAC;gBACrC,MAAM;YACV,KAAK,WAAW,CAAE;YAAC,KAAK,WAAW;gBAC/B,IAAI,CAAC,KAAK,GAAG,GAAG,CAAC;gBACjB,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC,KAAK,GAAG,CAAC,GAAG,CAAC;gBACzC,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,GAAG,CAAC;gBACrC,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;gBACnC,MAAM;YACV,KAAK,UAAU,CAAE;YAAC,KAAK,UAAU;gBAC7B,IAAI,CAAC,KAAK,GAAG,GAAG,CAAC;gBACjB,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC,KAAK,GAAG,CAAC,GAAG,CAAC;gBACzC,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,GAAG,CAAC;gBACrC,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,GAAG,CAAC;gBACrC,MAAM;SACb;QAED,6DAA6D;QAC7D,wCAAwC;QACxC,IAAI;QACJ,QAAQ;QACR,wCAAwC;QAExC,IAAG,SAAS,IAAI,IAAI,IAAI,SAAS,IAAI,QAAQ,IAAI,SAAS,IAAI,QAAQ,EACrE;YACG,IAAI,CAAC,MAAM,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,GAAC,CAAC,CAAC;SACrC;aACI,IAAG,SAAS,IAAI,SAAS,IAAI,SAAS,IAAI,SAAS,IAAI,SAAS,IAAI,WAAW,IAAI,SAAS,IAAI,WAAW,IAAI,SAAS,IAAI,UAAU,EAAC;YACxI,IAAI,CAAC,MAAM,GAAG,EAAE,GAAG,IAAI,GAAG,IAAI,GAAC,CAAC,CAAC;SAChC;aACA,IAAI,SAAS,IAAI,MAAM,IAAI,SAAS,IAAI,UAAU,EAAC;YACpD,IAAI,CAAC,MAAM,GAAG,EAAE,GAAG,IAAI,GAAG,IAAI,GAAC,CAAC,CAAC;SACpC;;YACI,IAAI,CAAC,MAAM,GAAG,EAAE,GAAG,IAAI,GAAG,IAAI,GAAC,CAAC,CAAC;QAEtC,kDAAkD;QAClD,uEAAuE;QACvE,6EAA6E;QAC7E,sCAAsC;QACtC,sBAAsB;QACtB,gFAAgF;IACpF,CAAC;IAED,UAAU;IACV,4BAAM,GAAN,UAAO,KAAK,EAAC,GAAG;QACZ,KAAI,IAAI,CAAC,GAAC,CAAC,EAAE,CAAC,GAAC,GAAG,CAAC,MAAM,EAAE,CAAC,EAAE,EAAC;YAC3B,IAAG,KAAK,CAAC,CAAC,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,EAAC;gBAC1C,OAAO,KAAK,CAAC;aAChB;SACJ;QACD,OAAO,IAAI,CAAC;IAChB,CAAC;IAED,QAAQ;IACR,iCAAW,GAAX,UAAY,KAAK,EAAC,QAAQ,EAAC,KAAK;QAC5B,KAAI,IAAI,CAAC,GAAC,CAAC,EAAE,CAAC,GAAC,QAAQ,CAAC,MAAM,EAAE,CAAC,EAAE,EAAC;YAChC,IAAG,KAAK,CAAC,CAAC,IAAI,QAAQ,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,IAAI,QAAQ,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAC;gBAC5D,KAAK,CAAC,cAAc,CAAC,UAAU,CAAC,CAAC,MAAM,GAAG,IAAI,CAAC;gBAC/C,KAAK,CAAC,cAAc,CAAC,UAAU,CAAC,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC,YAAY,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,MAAM,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC,KAAK,GAAC,EAAE,CAAC;gBAC9G,KAAK,CAAC,cAAc,CAAC,UAAU,CAAC,CAAC,YAAY,CAAC,EAAE,CAAC,WAAW,CAAC,CAAC;gBAC9D,KAAK,CAAC,cAAc,CAAC,UAAU,CAAC,CAAC,YAAY,CAAC,EAAE,CAAC,WAAW,CAAC,CAAC,IAAI,GAAG,EAAE,CAAC,IAAI,CAAC,GAAG,EAAC,GAAG,CAAC,CAAC;gBACtF,OAAO,IAAI,CAAC;aACf;SACJ;QACD,OAAO,KAAK,CAAC;IACjB,CAAC;IACD,MAAM;IACN,oCAAc,GAAd,UAAe,KAAK,EAAC,IAAI;QACrB,KAAK,GAAG,KAAK,CAAC,QAAQ,EAAE,CAAC;QACzB,KAAI,IAAI,CAAC,GAAC,CAAC,EAAE,CAAC,GAAC,IAAI,CAAC,aAAa,CAAC,MAAM,EAAE,CAAC,EAAE,EAAC;YAC1C,IAAG,KAAK,IAAI,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,cAAc,CAAC,UAAU,CAAC,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC,YAAY,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,MAAM,EAAC;gBAC/G,IAAG,IAAI,EAAC;oBACJ,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,cAAc,CAAC,UAAU,CAAC,CAAC,MAAM,GAAG,KAAK,CAAC;oBAChE,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,cAAc,CAAC,UAAU,CAAC,CAAC,eAAe,CAAC,EAAE,CAAC,WAAW,CAAC,CAAC;iBACpF;qBACG;oBACA,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,cAAc,CAAC,UAAU,CAAC,CAAC,MAAM,GAAG,IAAI,CAAC;oBAC/D,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,cAAc,CAAC,UAAU,CAAC,CAAC,YAAY,CAAC,EAAE,CAAC,WAAW,CAAC,CAAC;oBAC9E,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,cAAc,CAAC,UAAU,CAAC,CAAC,YAAY,CAAC,EAAE,CAAC,WAAW,CAAC,CAAC,IAAI,GAAG,EAAE,CAAC,IAAI,CAAC,GAAG,EAAC,GAAG,CAAC,CAAC;iBACzG;aACJ;SAEJ;IACL,CAAC;IAID,SAAS;IACT,oCAAc,GAAd,UAAe,EAAE;QACb,KAAI,IAAI,CAAC,GAAC,CAAC,EAAE,CAAC,GAAC,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,EAAE,EAAC;YACnC,IAAG,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC,OAAO,IAAI,EAAE,EAAC;gBAClD,OAAO,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;aACzB;SACJ;QACD,OAAO,IAAI,CAAC;IAChB,CAAC;IAED,KAAK;IACL,iCAAW,GAAX,UAAY,EAAE;QACV,KAAI,IAAI,CAAC,GAAC,CAAC,EAAE,CAAC,GAAC,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,EAAE,EAAC;YACnC,IAAG,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC,OAAO,IAAI,EAAE,EAAC;gBAClD,OAAO,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;aACzB;SACJ;QACD,OAAO,IAAI,CAAC;IAChB,CAAC;IAED,kCAAY,GAAZ,UAAa,KAAK;QACd,IAAI,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,GAAG,GAAG,CAAC,CAAC;QAC1C,IAAI,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,MAAM,GAAG,GAAG,CAAC,CAAC;QAE5C,IAAI,IAAI,GAAG,KAAK,CAAC;QACjB,IAAI,IAAI,GAAG,IAAI,CAAC,QAAQ,GAAC,CAAC,CAAC;QAC3B,IAAI,IAAI,GAAG,CAAC,CAAC;QACb,IAAI,IAAI,GAAG,IAAI,CAAC,SAAS,GAAC,CAAC,GAAG,MAAM,GAAG,CAAC,CAAC;QAEzC,IAAG,KAAK,CAAC,IAAI,IAAI,SAAS,EAAC;YACvB,IAAI,GAAG,KAAK,GAAC,CAAC,CAAC;YACf,IAAG,IAAI,CAAC,QAAQ,GAAG,CAAC;gBAAE,IAAI,GAAG,IAAI,GAAC,CAAC,CAAC;SACvC;aACI,IAAG,KAAK,CAAC,IAAI,IAAI,SAAS,EAAC;YAC5B,IAAI,GAAG,KAAK,GAAC,CAAC,CAAC;YACf,IAAG,IAAI,CAAC,QAAQ,GAAG,CAAC;gBAAE,IAAI,GAAG,IAAI,GAAC,CAAC,CAAC;SACvC;aAEI,IAAG,KAAK,CAAC,IAAI,IAAI,SAAS,EAAC;YAC5B,IAAI,GAAG,KAAK,GAAC,CAAC,CAAC;YACf,IAAI,GAAG,IAAI,GAAC,CAAC,CAAC;SACjB;aACI,IAAG,KAAK,CAAC,IAAI,IAAI,SAAS,EAAC;YAC5B,IAAI,GAAG,KAAK,GAAC,CAAC,CAAC;YACf,IAAI,GAAG,IAAI,GAAC,CAAC,CAAC;SACjB;aACI,IAAG,KAAK,CAAC,IAAI,IAAI,SAAS,EAAC;YAC5B,IAAI,GAAG,KAAK,GAAC,CAAC,CAAC;YACf,IAAI,GAAG,IAAI,GAAC,CAAC,CAAC;SACjB;aACI,IAAG,KAAK,CAAC,IAAI,IAAI,SAAS,EAAC;YAC5B,IAAI,GAAG,KAAK,GAAC,CAAC,CAAC;YACf,IAAI,GAAG,IAAI,GAAC,CAAC,CAAC;SACjB;QAED,OAAO,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,CAAC;IACrD,CAAC;IAED,YAAY;IACZ,+BAAS,GAAT,UAAU,IAAI,EAAC,MAAM;QACjB,IAAI,SAAS,GAAG,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC;QACxC,IAAI,IAAI,GAAG,SAAS,CAAC,IAAI,CAAC;QAC1B,IAAI,IAAI,GAAG,SAAS,CAAC,IAAI,CAAC;QAC1B,IAAI,IAAI,GAAG,SAAS,CAAC,IAAI,CAAC;QAC1B,IAAI,IAAI,GAAG,SAAS,CAAC,IAAI,CAAC;QAE1B,IAAI,OAAO,GAAG,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,CAAC;QAEtF,WAAW;QAEX,IAAI,SAAS,GAAG,EAAE,CAAC;QACnB,KAAI,IAAI,CAAC,GAAC,CAAC,EAAC,CAAC,GAAC,MAAM,CAAC,MAAM,EAAC,CAAC,EAAE,EAAC;YAC5B,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC,OAAO,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;SAC3E;QAED,sCAAsC;QACtC,mCAAmC;QAEnC,IAAI,EAAE,GAAG,CAAC,CAAC,CAAC;QACZ,IAAI,EAAE,GAAG,CAAC,CAAC;QACX,WAAW;QACX,wBAAwB;QACxB,IAAI,SAAS,GAAG,IAAI,CAAC,cAAc,CAAC,SAAS,EAAC,IAAI,EAAC,IAAI,CAAC,CAAC;QAEzD,cAAc;QACd,IAAI,OAAO,CAAC,CAAC,IAAI,IAAI,IAAI,SAAS,CAAC,CAAC,CAAC,IAAI,IAAI,EAAE;YAC3C,sCAAsC;YACtC,8BAA8B;YAC9B,EAAE,IAAI,CAAC,CAAC;YACR,IAAI,SAAS,GAAG,EAAE,CAAC;YACnB,KAAI,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,CAAC,EAAE,EAAC;gBAC1C,IAAI,QAAQ,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC;gBACxD,IAAI,OAAO,GAAG,EAAE,CAAC,EAAE,CAAC,QAAQ,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC,IAAI,EAAC,QAAQ,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC;gBAC3F,KAAI,IAAI,GAAC,GAAG,CAAC,EAAE,GAAC,GAAG,SAAS,CAAC,MAAM,EAAE,GAAC,EAAE,EAAC;oBACrC,IAAG,SAAS,CAAC,GAAC,CAAC,CAAC,CAAC,IAAI,OAAO,CAAC,CAAC,IAAI,SAAS,CAAC,GAAC,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,EAAC;wBACzD,+EAA+E;wBAC/E,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;qBAC5B;iBACJ;aACJ;YACD,iCAAiC;YACjC,IAAG,SAAS,CAAC,MAAM,IAAI,CAAC,EAAC;gBACrB,IAAI,MAAM,GAAG,IAAI,CAAC,cAAc,CAAC,MAAM,EAAC,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC,IAAI,EAAC,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC,IAAI,EAAC,SAAS,CAAC,CAAC;gBACnH,IAAG,MAAM,IAAI,IAAI;oBAAE,MAAM,GAAG,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAC,SAAS,EAAC,IAAI,CAAC,CAAC;gBACjE,8BAA8B;gBAC9B,IAAG,MAAM,EAAC;oBAEN,IAAI,CAAC,QAAQ,IAAI,CAAC,CAAC;oBACnB,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,CAAC;oBAC7B,EAAE,GAAG,CAAC,CAAC;oBACP,IAAI,CAAC,cAAc,CAAC,IAAI,EAAC,EAAE,CAAC,CAAC;oBAC7B,OAAO,EAAE,CAAC;iBACb;aACJ;SACJ;QACD,IAAI,OAAO,CAAC,CAAC,IAAI,IAAI,IAAI,SAAS,CAAC,CAAC,CAAC,IAAI,IAAI,EAAE;YAC3C,sCAAsC;YACtC,8BAA8B;YAC9B,EAAE,IAAI,CAAC,CAAC;YACR,IAAI,UAAU,GAAG,EAAE,CAAC;YACpB,KAAI,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,UAAU,CAAC,MAAM,EAAE,CAAC,EAAE,EAAC;gBAC3C,IAAI,SAAS,GAAG,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC;gBAC1D,IAAI,OAAO,GAAG,EAAE,CAAC,EAAE,CAAC,SAAS,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC,IAAI,EAAC,SAAS,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC;gBAC7F,KAAI,IAAI,GAAC,GAAG,CAAC,EAAE,GAAC,GAAG,SAAS,CAAC,MAAM,EAAE,GAAC,EAAE,EAAC;oBACrC,IAAG,SAAS,CAAC,GAAC,CAAC,CAAC,CAAC,IAAI,OAAO,CAAC,CAAC,IAAI,SAAS,CAAC,GAAC,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,EAAC;wBACzD,+EAA+E;wBAC/E,UAAU,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;qBAC9B;iBACJ;aACJ;YAED,IAAG,UAAU,CAAC,MAAM,IAAI,CAAC,EAAC;gBACtB,IAAI,MAAM,GAAG,IAAI,CAAC,cAAc,CAAC,OAAO,EAAC,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC,IAAI,EAAC,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC,IAAI,EAAC,SAAS,CAAC,CAAC;gBAEpH,IAAG,MAAM,IAAI,IAAI;oBAAE,MAAM,GAAG,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAC,UAAU,EAAC,IAAI,CAAC,CAAC;gBAClE,8BAA8B;gBAC9B,IAAG,MAAM,EAAC;oBAEN,IAAI,CAAC,QAAQ,IAAI,CAAC,CAAC;oBACnB,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,CAAC;oBAC7B,EAAE,GAAG,CAAC,CAAC;oBACP,IAAI,CAAC,cAAc,CAAC,IAAI,EAAC,EAAE,CAAC,CAAC;oBAC7B,OAAO,EAAE,CAAC;iBACb;aACJ;SAGJ;QACD,IAAI,OAAO,CAAC,CAAC,IAAK,IAAI,IAAI,SAAS,CAAC,CAAC,CAAC,IAAI,IAAI,EAAE;YAC5C,EAAE,IAAI,CAAC,CAAC;YACR,sCAAsC;YACtC,8BAA8B;YAC9B,IAAI,SAAS,GAAG,EAAE,CAAC;YACnB,KAAI,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC,EAAE,EAAC;gBACzC,IAAI,UAAU,GAAG,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC;gBACzD,IAAI,OAAO,GAAG,EAAE,CAAC,EAAE,CAAC,UAAU,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC,IAAI,EAAC,UAAU,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC;gBAC/F,KAAI,IAAI,GAAC,GAAG,CAAC,EAAE,GAAC,GAAG,SAAS,CAAC,MAAM,EAAE,GAAC,EAAE,EAAC;oBACrC,IAAI,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC,GAAC,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,CAAA;oBACjD,IAAG,SAAS,CAAC,GAAC,CAAC,CAAC,CAAC,IAAI,OAAO,CAAC,CAAC,IAAI,SAAS,CAAC,GAAC,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,IAAI,MAAM,IAAI,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC,GAAG,EAAC;wBACrG,+EAA+E;wBAC/E,SAAS,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;qBAC9B;iBACJ;aACJ;YAED,IAAG,SAAS,CAAC,MAAM,IAAI,CAAC,EAAC;gBACrB,IAAI,MAAM,GAAG,IAAI,CAAC,cAAc,CAAC,MAAM,EAAC,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC,IAAI,EAAC,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC,IAAI,EAAC,SAAS,CAAC,CAAC;gBACnH,IAAG,MAAM,IAAI,IAAI;oBAAE,MAAM,GAAG,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAC,SAAS,EAAC,IAAI,CAAC,CAAC;gBACjE,8BAA8B;gBAC9B,IAAG,MAAM,EAAC;oBAEN,IAAI,CAAC,QAAQ,IAAI,CAAC,CAAC;oBACnB,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,CAAC;oBAC7B,EAAE,GAAG,CAAC,CAAC;oBACP,IAAI,CAAC,cAAc,CAAC,IAAI,EAAC,EAAE,CAAC,CAAC;oBAC7B,OAAO,EAAE,CAAC;iBACb;aACJ;SAGJ;QACD,IAAI,OAAO,CAAC,CAAC,IAAK,IAAI,IAAI,SAAS,CAAC,CAAC,CAAC,IAAI,IAAI,EAAE;YAC5C,EAAE,IAAI,CAAC,CAAC;YACR,sCAAsC;YACtC,8BAA8B;YAC9B,IAAI,OAAO,GAAG,EAAE,CAAC;YACjB,KAAI,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,WAAW,CAAC,MAAM,EAAE,CAAC,EAAE,EAAC;gBAC5C,IAAI,OAAO,GAAG,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC;gBACzD,IAAI,OAAO,GAAG,EAAE,CAAC,EAAE,CAAC,OAAO,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC,IAAI,EAAC,OAAO,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC;gBACzF,KAAI,IAAI,GAAC,GAAG,CAAC,EAAE,GAAC,GAAG,SAAS,CAAC,MAAM,EAAE,GAAC,EAAE,EAAC;oBACrC,IAAI,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC,GAAC,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,CAAA;oBACjD,IAAG,SAAS,CAAC,GAAC,CAAC,CAAC,CAAC,IAAI,OAAO,CAAC,CAAC,IAAI,SAAS,CAAC,GAAC,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,IAAI,MAAM,IAAI,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC,GAAG,EAAC;wBACrG,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;qBACzB;iBACJ;aACJ;YAED,IAAG,OAAO,CAAC,MAAM,IAAI,CAAC,EAAC;gBACnB,IAAI,MAAM,GAAG,IAAI,CAAC,cAAc,CAAC,IAAI,EAAC,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC,IAAI,EAAC,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC,IAAI,EAAC,SAAS,CAAC,CAAC;gBACjH,IAAG,MAAM,IAAI,IAAI;oBAAE,MAAM,GAAG,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAC,OAAO,EAAC,IAAI,CAAC,CAAC;gBAC/D,kCAAkC;gBAClC,IAAG,MAAM,EAAC;oBAEN,IAAI,CAAC,QAAQ,IAAI,CAAC,CAAC;oBACnB,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,CAAC;oBAC7B,EAAE,GAAG,CAAC,CAAC;oBACP,IAAI,CAAC,cAAc,CAAC,IAAI,EAAC,EAAE,CAAC,CAAC;oBAC7B,OAAO,EAAE,CAAC;iBACb;aACJ;SAEJ;QACD,IAAG,EAAE,IAAI,CAAC;YAAE,EAAE,GAAG,CAAC,CAAC,CAAC;QACpB,uCAAuC;QACvC,qCAAqC;QACrC,OAAO,EAAE,CAAC;IACd,CAAC;IAED,iCAAW,GAAX;QACI,IAAG,IAAI,CAAC,QAAQ,CAAC,MAAM,IAAI,CAAC,EAAC;YACzB,KAAI,IAAI,CAAC,GAAC,CAAC,EAAE,CAAC,GAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC,EAAE,EAAC;gBACrC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC,UAAU,EAAE,CAAC;aAC7E;SACJ;QAED,IAAG,IAAI,CAAC,UAAU,CAAC,MAAM,IAAG,CAAC,EAAC;YAC1B,KAAI,IAAI,CAAC,GAAC,CAAC,EAAE,CAAC,GAAC,IAAI,CAAC,UAAU,CAAC,MAAM,EAAE,CAAC,EAAE,EAAC;gBACvC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC,YAAY,EAAE,CAAC;aACjF;SACJ;IACL,CAAC;IAED,WAAW;IACX,8BAAQ,GAAR,UAAS,EAAE,EAAC,SAAS,EAAC,IAAI;QACtB,KAAI,IAAI,CAAC,GAAC,CAAC,EAAC,CAAC,GAAC,SAAS,CAAC,MAAM,EAAC,CAAC,EAAE,EAAC;YAC/B,IAAG,SAAS,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC,OAAO,IAAI,CAAC,EAAC;gBAC9C,OAAO,CAAC,GAAG,CAAC,UAAU,EAAC,SAAS,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC;aAClE;YACD,IAAG,SAAS,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC,OAAO,IAAI,CAAC,IAAI,SAAS,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC,IAAI,IAAI,KAAK,EAAC;gBACjG,EAAE,GAAG,KAAK,CAAC;gBACX,MAAM;aACT;YACD,8GAA8G;YAC9G,IAAG,SAAS,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC,KAAK,IAAI,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC,KAAK,EAAC;gBAE3E,EAAE,GAAG,KAAK,CAAC;gBACX,MAAM;aACT;YACD,IAAG,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC,IAAI,IAAI,CAAC,EAAC;gBACpC,IAAG,SAAS,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC,OAAO,IAAI,CAAC,EAAC;oBAC9C,EAAE,GAAG,KAAK,CAAC;oBACX,MAAM;iBACT;aACJ;SACJ;QACD,IAAG,EAAE,IAAI,IAAI,IAAK,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC,IAAI,IAAI,CAAC,EAAC;YACnD,KAAI,IAAI,CAAC,GAAC,CAAC,EAAC,CAAC,GAAC,SAAS,CAAC,MAAM,EAAC,CAAC,EAAE,EAAC;gBAC/B,IAAG,SAAS,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC,OAAO,IAAI,CAAC,IAAI,SAAS,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC,SAAS,CAAC,MAAM,IAAI,CAAC,EAAC;oBACzG,SAAS,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC,YAAY,EAAE,CAAC;iBACpD;aACJ;SACJ;QACD,sCAAsC;QACtC,oCAAoC;QACpC,OAAO,EAAE,CAAC;IACd,CAAC;IAED,kBAAkB;IAClB,oCAAc,GAAd,UAAe,SAAS,EAAC,IAAI,EAAC,IAAI,EAAC,MAAM;QACrC,IAAI,EAAE,GAAG,IAAI,CAAC;QACd,IAAI,EAAE,GAAG,EAAE,CAAC;QACZ,IAAG,MAAM,CAAC,MAAM,GAAG,CAAC,EAAC;YACjB,KAAI,IAAI,CAAC,GAAC,CAAC,EAAE,CAAC,GAAC,MAAM,CAAC,MAAM,EAAE,CAAC,EAAE,EAAC;gBAC9B,IAAI,GAAG,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;gBACpB,IAAI,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC;gBACd,IAAI,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC;gBACd,EAAE,GAAG,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,UAAU,CAAC,CAAC,QAAQ,CAAC;gBAChE,EAAE,GAAG,IAAI,CAAC,kBAAkB,CAAC,EAAE,EAAC,SAAS,EAAC,CAAC,EAAC,CAAC,CAAC,CAAC;gBAC/C,IAAG,CAAC,EAAE,EAAC;oBACH,yBAAyB;oBACzB,CAAC,GAAG,OAAO,CAAC;oBACZ,OAAO,EAAE,CAAC;iBACb;aACJ;SACJ;QACD,sCAAsC;QACtC,kCAAkC;QAClC,OAAO,EAAE,CAAC;IACd,CAAC;IAED,0CAA0C;IAC1C,wCAAkB,GAAlB,UAAmB,EAAE,EAAC,SAAS,EAAC,CAAC,EAAC,CAAC;QAC/B,IAAI,EAAE,GAAG,IAAI,CAAC;QAEd,IAAG,SAAS,IAAI,MAAM,EAAC;YACnB,IAAG,IAAI,CAAC,aAAa,CAAC,CAAC,GAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,UAAU,CAAC,CAAC,QAAQ,IAAI,EAAE,IAAI,IAAI,CAAC,aAAa,CAAC,CAAC,GAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,UAAU,CAAC,CAAC,QAAQ,IAAG,MAAM;mBAC3I,IAAI,CAAC,aAAa,CAAC,CAAC,GAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,UAAU,CAAC,CAAC,QAAQ,IAAI,EAAE,EAAE;gBACnE,uBAAuB;gBACvB,EAAE,GAAG,KAAK,CAAC;gBACX,OAAO,EAAE,CAAC;aACb;YACD,IAAG,IAAI,CAAC,aAAa,CAAC,CAAC,GAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,IAAI,GAAG,EAAC;gBACzC,EAAE,GAAG,KAAK,CAAC;gBACX,OAAO,EAAE,CAAC;aACb;YACD,IAAG,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAC;gBACZ,IAAG,IAAI,CAAC,aAAa,CAAC,CAAC,GAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,UAAU,CAAC,CAAC,QAAQ,IAAI,EAAE,IAAI,IAAI,CAAC,aAAa,CAAC,CAAC,GAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,UAAU,CAAC,CAAC,QAAQ,IAAG,MAAM;uBAC3I,IAAI,CAAC,aAAa,CAAC,CAAC,GAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,UAAU,CAAC,CAAC,QAAQ,IAAI,EAAE,EAAE;oBACnE,uBAAuB;oBACvB,EAAE,GAAG,KAAK,CAAC;oBACX,OAAO,EAAE,CAAC;iBACb;gBACD,IAAG,IAAI,CAAC,aAAa,CAAC,CAAC,GAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,IAAI,GAAG,EAAC;oBACzC,EAAE,GAAG,KAAK,CAAC;oBACX,OAAO,EAAE,CAAC;iBACb;aACJ;SACJ;aACI,IAAG,SAAS,IAAI,OAAO,EAAC;YACzB,IAAG,IAAI,CAAC,aAAa,CAAC,CAAC,GAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,UAAU,CAAC,CAAC,QAAQ,IAAI,EAAE,IAAI,IAAI,CAAC,aAAa,CAAC,CAAC,GAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,UAAU,CAAC,CAAC,QAAQ,IAAG,MAAM;mBAC3I,IAAI,CAAC,aAAa,CAAC,CAAC,GAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,UAAU,CAAC,CAAC,QAAQ,IAAI,EAAE,EAAE;gBACnE,uBAAuB;gBACvB,EAAE,GAAG,KAAK,CAAC;gBACX,OAAO,EAAE,CAAC;aACb;YACD,IAAG,IAAI,CAAC,aAAa,CAAC,CAAC,GAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,IAAI,GAAG,EAAC;gBACzC,EAAE,GAAG,KAAK,CAAC;gBACX,OAAO,EAAE,CAAC;aACb;YACD,IAAG,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,IAAI,CAAC,aAAa,CAAC,MAAM,GAAC,CAAC,EAAC;gBACtC,IAAG,IAAI,CAAC,aAAa,CAAC,CAAC,GAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,UAAU,CAAC,CAAC,QAAQ,IAAI,EAAE,IAAI,IAAI,CAAC,aAAa,CAAC,CAAC,GAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,UAAU,CAAC,CAAC,QAAQ,IAAG,MAAM;uBAC3I,IAAI,CAAC,aAAa,CAAC,CAAC,GAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,UAAU,CAAC,CAAC,QAAQ,IAAI,EAAE,EAAE;oBACnE,uBAAuB;oBACvB,EAAE,GAAG,KAAK,CAAC;oBACX,OAAO,EAAE,CAAC;iBACb;gBACD,IAAG,IAAI,CAAC,aAAa,CAAC,CAAC,GAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,IAAI,GAAG,EAAC;oBACzC,EAAE,GAAG,KAAK,CAAC;oBACX,OAAO,EAAE,CAAC;iBACb;aACJ;SACJ;QACD,IAAG,SAAS,IAAI,IAAI,EAAC;YACjB,IAAG,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,GAAC,CAAC,CAAC,CAAC,YAAY,CAAC,UAAU,CAAC,CAAC,QAAQ,IAAI,EAAE,IAAI,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,GAAC,CAAC,CAAC,CAAC,YAAY,CAAC,UAAU,CAAC,CAAC,QAAQ,IAAG,MAAM;mBAC3I,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,GAAC,CAAC,CAAC,CAAC,YAAY,CAAC,UAAU,CAAC,CAAC,QAAQ,IAAI,EAAE,EAAE;gBACnE,uBAAuB;gBACvB,EAAE,GAAG,KAAK,CAAC;gBACX,OAAO,EAAE,CAAC;aACb;YACD,IAAG,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,GAAC,CAAC,CAAC,CAAC,OAAO,IAAI,GAAG,EAAC;gBACzC,EAAE,GAAG,KAAK,CAAC;gBACX,OAAO,EAAE,CAAC;aACb;YACD,IAAG,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,MAAM,GAAC,CAAC,EAAC;gBACzC,IAAG,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,GAAC,CAAC,CAAC,CAAC,YAAY,CAAC,UAAU,CAAC,CAAC,QAAQ,IAAI,EAAE,IAAI,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,GAAC,CAAC,CAAC,CAAC,YAAY,CAAC,UAAU,CAAC,CAAC,QAAQ,IAAG,MAAM;uBAC3I,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,GAAC,CAAC,CAAC,CAAC,YAAY,CAAC,UAAU,CAAC,CAAC,QAAQ,IAAI,EAAE,EAAE;oBACnE,uBAAuB;oBACvB,EAAE,GAAG,KAAK,CAAC;oBACX,OAAO,EAAE,CAAC;iBACb;gBACD,IAAG,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,GAAC,CAAC,CAAC,CAAC,OAAO,IAAI,GAAG,EAAC;oBACzC,EAAE,GAAG,KAAK,CAAC;oBACX,OAAO,EAAE,CAAC;iBACb;aACJ;SACJ;QACD,IAAG,SAAS,IAAI,MAAM,EAAC;YACnB,IAAG,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,GAAC,CAAC,CAAC,CAAC,YAAY,CAAC,UAAU,CAAC,CAAC,QAAQ,IAAI,EAAE,IAAI,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,GAAC,CAAC,CAAC,CAAC,YAAY,CAAC,UAAU,CAAC,CAAC,QAAQ,IAAG,MAAM;mBAC3I,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,GAAC,CAAC,CAAC,CAAC,YAAY,CAAC,UAAU,CAAC,CAAC,QAAQ,IAAI,EAAE,EAAE;gBACnE,uBAAuB;gBACvB,EAAE,GAAG,KAAK,CAAC;gBACX,OAAO,EAAE,CAAC;aACb;YACD,IAAG,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,GAAC,CAAC,CAAC,CAAC,OAAO,IAAI,GAAG,EAAC;gBACzC,EAAE,GAAG,KAAK,CAAC;gBACX,OAAO,EAAE,CAAC;aACb;YACD,IAAG,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAC;gBACZ,IAAG,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,GAAC,CAAC,CAAC,CAAC,YAAY,CAAC,UAAU,CAAC,CAAC,QAAQ,IAAI,EAAE,IAAI,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,GAAC,CAAC,CAAC,CAAC,YAAY,CAAC,UAAU,CAAC,CAAC,QAAQ,IAAG,MAAM;uBAC3I,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,GAAC,CAAC,CAAC,CAAC,YAAY,CAAC,UAAU,CAAC,CAAC,QAAQ,IAAI,EAAE,EAAE;oBACnE,uBAAuB;oBACvB,EAAE,GAAG,KAAK,CAAC;oBACX,OAAO,EAAE,CAAC;iBACb;gBACD,IAAG,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,GAAC,CAAC,CAAC,CAAC,OAAO,IAAI,GAAG,EAAC;oBACzC,EAAE,GAAG,KAAK,CAAC;oBACX,OAAO,EAAE,CAAC;iBACb;aACJ;SACJ;QACD,oCAAoC;QACpC,OAAO,EAAE,CAAC;IACd,CAAC;IAED,oCAAc,GAAd,UAAe,SAAS,EAAC,IAAI,EAAC,IAAI;QAC9B,IAAI,EAAE,GAAG,CAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,CAAC,CAAC;QACnC,KAAI,IAAI,CAAC,GAAC,CAAC,EAAE,CAAC,GAAC,SAAS,CAAC,MAAM,EAAE,CAAC,EAAE,EAAC;YACjC,IAAG,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,EAAC;gBACpC,IAAG,IAAI,CAAC,aAAa,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,GAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,IAAI,GAAG,EAAC;oBACnE,EAAE,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC;iBAChB;aACJ;YACD,IAAI,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,EAAC;gBACf,IAAG,IAAI,CAAC,aAAa,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,GAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,IAAI,GAAG,EAAC;oBACnE,EAAE,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC;iBAChB;aACJ;YACD,IAAG,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,EAAC;gBACpC,IAAG,IAAI,CAAC,aAAa,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,GAAC,CAAC,CAAC,CAAC,OAAO,IAAI,GAAG,EAAC;oBACnE,EAAE,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC;iBAChB;aACJ;YACD,IAAG,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,EAAC;gBACd,IAAG,IAAI,CAAC,aAAa,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,GAAC,CAAC,CAAC,CAAC,OAAO,IAAI,GAAG,EAAC;oBACnE,EAAE,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC;iBAChB;aACJ;SACJ;QACD,OAAO,EAAE,CAAC;IACd,CAAC;IAED,+BAAS,GAAT,UAAU,SAAS;QACf,IAAI,EAAE,GAAG,KAAK,CAAC;QACf,OAAO,EAAE,CAAC;IACd,CAAC;IAED,gCAAU,GAAV,UAAW,SAAS,EAAC,GAAG;QACpB,IAAI,EAAE,GAAG,KAAK,CAAC;QACf,KAAI,IAAI,CAAC,GAAC,CAAC,EAAE,CAAC,GAAC,SAAS,CAAC,MAAM,EAAE,CAAC,EAAE,EAAC;SAEpC;QACD,OAAO,EAAE,CAAC;IACd,CAAC;IAED,+BAAS,GAAT,UAAU,SAAS;QACf,IAAI,EAAE,GAAG,KAAK,CAAC;QACf,KAAI,IAAI,CAAC,GAAC,CAAC,EAAE,CAAC,GAAC,SAAS,CAAC,MAAM,EAAE,CAAC,EAAE,EAAC;SAEpC;QACD,OAAO,EAAE,CAAC;IACd,CAAC;IAED,6BAAO,GAAP,UAAQ,SAAS,EAAC,GAAG;QACjB,IAAI,EAAE,GAAG,KAAK,CAAC;QACf,KAAI,IAAI,CAAC,GAAC,CAAC,EAAE,CAAC,GAAC,SAAS,CAAC,MAAM,EAAE,CAAC,EAAE,EAAC;SAEpC;QACD,OAAO,EAAE,CAAC;IACd,CAAC;IAGD,oBAAoB;IACpB,uCAAiB,GAAjB,UAAkB,IAAI;QAClB,IAAI,WAAW,GAAG,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,UAAA,KAAK;YAC7C,IAAG,KAAK,CAAC,YAAY,CAAC,OAAO,CAAC,EAAC;gBAC3B,IAAG,KAAK,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC,IAAI,IAAI,CAAC;oBACpC,OAAO,KAAK,CAAA;aACnB;QACL,CAAC,CAAC,CAAC;QACH,IAAG,WAAW,CAAC,MAAM,GAAG,CAAC,EAAC;YACtB,KAAI,IAAI,CAAC,GAAC,CAAC,EAAE,CAAC,GAAC,WAAW,CAAC,MAAM,EAAE,CAAC,EAAE,EAAC;gBACnC,WAAW,CAAC,CAAC,CAAC,CAAC,cAAc,CAAC,QAAQ,CAAC,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;aAC5E;SACJ;QAED,IAAG,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC,IAAI,IAAI,CAAC,IAAI,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC,IAAI,IAAI,CAAC,EAAC;YAC5E,IAAI,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,UAAA,KAAK;gBAC3C,IAAG,KAAK,CAAC,YAAY,CAAC,OAAO,CAAC,EAAC;oBAC3B,IAAG,KAAK,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC,IAAI,IAAI,CAAC;wBACpC,OAAO,KAAK,CAAA;iBACnB;YACL,CAAC,CAAC,CAAC;YACH,IAAG,SAAS,CAAC,MAAM,GAAG,CAAC;gBACnB,KAAI,IAAI,CAAC,GAAC,CAAC,EAAE,CAAC,GAAC,SAAS,CAAC,MAAM,EAAE,CAAC,EAAE,EAAC;oBACjC,SAAS,CAAC,CAAC,CAAC,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC,MAAM,EAAE,CAAC;iBACrE;SAER;QAED,KAAI,IAAI,CAAC,GAAC,CAAC,EAAC,CAAC,GAAC,IAAI,CAAC,MAAM,CAAC,MAAM,EAAC,CAAC,EAAE,EAAC;YACjC,IAAG,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,IAAI,EAAC;gBACtB,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,EAAC,CAAC,CAAC,CAAC;aAC3B;SACJ;IAEL,CAAC;IAED,WAAW;IACX,+BAAS,GAAT;QAAA,iBA0BC;QAzBG,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;QACnB,IAAI,CAAC,OAAO,EAAE,CAAC;QAEf,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC;QAEnC,IAAG,IAAI,CAAC,QAAQ,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAC;YACrD,iBAAiB;YACjB,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;YAEpB,IAAI,CAAC,eAAe,EAAE,CAAC;YACvB,yBAAyB;YACzB,EAAE,CAAC,EAAE,CAAC,QAAQ,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC;YAC9B,EAAE,CAAC,EAAE,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,UAAU,EAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;YAEvD,IAAI,CAAC,aAAa,EAAE,CAAC;YACrB,UAAU,CAAC;gBACP,KAAI,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC,MAAM,GAAG,IAAI,CAAC;YAChE,CAAC,EAAE,GAAG,CAAC,CAAC;YACR,uBAAuB;SAC1B;aACG;YACA,IAAG,IAAI,CAAC,QAAQ,IAAI,IAAI,EAAC;gBACrB,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;aACxB;SACJ;IACL,CAAC;IAED,mCAAa,GAAb;QACI,KAAI,IAAI,CAAC,GAAC,CAAC,EAAE,CAAC,GAAC,EAAE,CAAC,EAAE,CAAC,UAAU,CAAC,SAAS,CAAC,MAAM,EAAE,CAAC,EAAE,EAAC;YAClD,IAAG,CAAC,EAAE,CAAC,EAAE,CAAC,UAAU,CAAC,OAAO,CAAC,KAAK,GAAC,CAAC,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,KAAK,EAAC;gBACzE,IAAI,CAAC,QAAQ,GAAG,CAAC,CAAC;aACrB;SACJ;IACL,CAAC;IAED,8BAAQ,GAAR;QACI,EAAE,CAAC,EAAE,CAAC,YAAY,CAAC,SAAS,CAAC,UAAU,CAAC,WAAW,EAAC,IAAI,CAAC,CAAC;QAC1D,IAAG,EAAE,CAAC,EAAE,CAAC,UAAU,CAAC,OAAO,CAAC,KAAK,GAAG,GAAG,EAAC;YACpC,EAAE,CAAC,EAAE,CAAC,UAAU,CAAC,OAAO,CAAC,KAAK,GAAG,GAAG,CAAC;YACrC,aAAW,CAAC,SAAS,GAAG,IAAI,CAAC;YAE7B,IAAG,IAAI,CAAC,QAAQ,IAAI,CAAC,EAAC;gBAClB,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC,MAAM,GAAG,KAAK,CAAC;gBAC7D,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;gBACpB,EAAE,CAAC,EAAE,CAAC,UAAU,CAAC,eAAe,CAAC,KAAK,EAAC,CAAC,CAAC,CAAC;gBAC1C,OAAO;aACV;YACD,0CAA0C;YAC1C,EAAE,CAAC,EAAE,CAAC,YAAY,CAAC,SAAS,CAAC,UAAU,CAAC,QAAQ,EAAC,IAAI,CAAC,CAAC;YACvD,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,cAAc,CAAC,YAAY,CAAC,CAAC,MAAM,GAAG,IAAI,CAAC;YAC1E,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,cAAc,CAAC,YAAY,CAAC,CAAC,YAAY,CAAC,EAAE,CAAC,QAAQ,CAAC,CAAC,YAAY,CAAC,CAAC,EAAC,IAAI,EAAC,KAAK,CAAC,CAAC;YACjH,yHAAyH;YACzH,2CAA2C;YAC3C,0BAA0B;YAC1B,sFAAsF;YACtF,QAAQ;YACR,MAAM;YAEN,EAAE,CAAC,QAAQ,CAAC,YAAY,CAAC,WAAW,EAAE,UAAC,GAAG,EAAE,KAAK;gBAC7C,IAAI,GAAG,EAAE;oBACL,OAAO,CAAC,KAAK,CAAC,iBAAiB,EAAE,GAAG,CAAC,CAAC;oBACtC,OAAO;iBACV;YACL,CAAC,CAAC,CAAC;YACH,UAAU,CAAC;gBACP,EAAE,CAAC,QAAQ,CAAC,SAAS,CAAC,WAAW,CAAC,CAAC;YACvC,CAAC,EAAE,IAAI,CAAC,CAAC;SACZ;aACG;YAEA,sBAAsB;YACtB,aAAW,CAAC,SAAS,GAAG,IAAI,CAAC;YAE7B,IAAG,IAAI,CAAC,QAAQ,IAAI,CAAC,EAAC;gBAClB,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC,MAAM,GAAG,KAAK,CAAC;gBAC7D,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;gBACpB,EAAE,CAAC,EAAE,CAAC,UAAU,CAAC,eAAe,CAAC,KAAK,EAAC,CAAC,CAAC,CAAC;gBAC1C,OAAO;aACV;YACD,EAAE,CAAC,EAAE,CAAC,YAAY,CAAC,SAAS,CAAC,UAAU,CAAC,QAAQ,EAAC,IAAI,CAAC,CAAC;YACvD,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,cAAc,CAAC,YAAY,CAAC,CAAC,MAAM,GAAG,IAAI,CAAC;YAC1E,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,cAAc,CAAC,YAAY,CAAC,CAAC,YAAY,CAAC,EAAE,CAAC,QAAQ,CAAC,CAAC,YAAY,CAAC,CAAC,EAAC,IAAI,EAAC,KAAK,CAAC,CAAC;YACjH,yHAAyH;YACzH,2CAA2C;YAC3C,0BAA0B;YAC1B,sFAAsF;YACtF,QAAQ;YACR,MAAM;YACN,UAAU,CAAC;gBACH,EAAE,CAAC,EAAE,CAAC,UAAU,CAAC,eAAe,CAAC,IAAI,EAAC,CAAC,CAAC,CAAC;YACjD,CAAC,EAAE,IAAI,CAAC,CAAC;YAET,4CAA4C;SAE/C;IACL,CAAC;IAED,gCAAU,GAAV;QACI,EAAE,CAAC,EAAE,CAAC,YAAY,CAAC,SAAS,CAAC,UAAU,CAAC,WAAW,EAAC,IAAI,CAAC,CAAC;QAC1D,IAAG,EAAE,CAAC,EAAE,CAAC,UAAU,CAAC,OAAO,CAAC,EAAE,GAAG,CAAC,EAAC;YAC/B,yBAAW,CAAC,GAAG,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC;YACnC,OAAO;SACV;QACD,IAAG,CAAC,IAAI,CAAC,aAAa;YAAE,OAAO;QAE/B,IAAI,CAAC,aAAa,GAAG,KAAK,CAAC;QAE3B,aAAW,CAAC,SAAS,GAAG,IAAI,CAAC;QAC7B,EAAE,CAAC,EAAE,CAAC,YAAY,CAAC,SAAS,CAAC,UAAU,CAAC,QAAQ,EAAC,IAAI,CAAC,CAAC;QACvD,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,cAAc,CAAC,YAAY,CAAC,CAAC,MAAM,GAAG,IAAI,CAAC;QAC1E,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,cAAc,CAAC,YAAY,CAAC,CAAC,YAAY,CAAC,EAAE,CAAC,QAAQ,CAAC,CAAC,YAAY,CAAC,CAAC,EAAC,IAAI,EAAC,KAAK,CAAC,CAAC;QACjH,yHAAyH;QACzH,2CAA2C;QAC3C,0BAA0B;QAC1B,sFAAsF;QACtF,QAAQ;QACR,MAAM;QACN,UAAU,CAAC;YACH,EAAE,CAAC,EAAE,CAAC,UAAU,CAAC,eAAe,CAAC,IAAI,EAAC,CAAC,CAAC,CAAC;QACjD,CAAC,EAAE,IAAI,CAAC,CAAC;QACT,4CAA4C;IAChD,CAAC;IAED,iCAAW,GAAX;QACI,EAAE,CAAC,EAAE,CAAC,YAAY,CAAC,SAAS,CAAC,UAAU,CAAC,WAAW,EAAC,IAAI,CAAC,CAAC;QAC1D,IAAI,IAAI,GAAG,GAAG,CAAC;QACf,IAAG,EAAE,CAAC,EAAE,CAAC,UAAU,CAAC,OAAO,CAAC,MAAM,IAAI,CAAC;YAAE,IAAI,GAAG,IAAI,CAAC;aAChD,IAAG,EAAE,CAAC,EAAE,CAAC,UAAU,CAAC,OAAO,CAAC,MAAM,IAAI,CAAC;YAAE,IAAI,GAAG,IAAI,CAAC;QAC1D,mEAAmE;QACnE,IAAG,EAAE,CAAC,EAAE,CAAC,UAAU,CAAC,OAAO,CAAC,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,EAAC;YAC9C,yBAAW,CAAC,GAAG,CAAC,SAAS,CAAC,YAAY,CAAC,CAAC;YACxC,OAAO;SACV;aACG;YACA,IAAI,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,CAAC;SACzB;IACL,CAAC;IAED,+BAAS,GAAT,UAAU,IAAI;QACV,OAAO,CAAC,GAAG,CAAC,SAAS,EAAC,IAAI,CAAC,CAAC;QAC5B,EAAE,CAAC,EAAE,CAAC,QAAQ,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;QAChC,yBAAW,CAAC,GAAG,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;QAElC,IAAG,EAAE,CAAC,EAAE,CAAC,UAAU,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC;YAClC,EAAE,CAAC,EAAE,CAAC,UAAU,CAAC,OAAO,CAAC,MAAM,IAAI,CAAC,CAAC;QAEzC,IAAI,CAAC,QAAQ,GAAG,KAAK,CAAC;QACtB,IAAI,CAAC,UAAU,GAAG,EAAE,CAAC;QACrB,IAAI,CAAC,QAAQ,IAAI,EAAE,CAAC;QACpB,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;QACnB,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC,MAAM,GAAG,KAAK,CAAC;QAC9D,IAAI,CAAC,gBAAgB,EAAE,CAAC;IAC5B,CAAC;IAID,6BAAO,GAAP;QACI,iBAAiB;QACjB,EAAE,CAAC,EAAE,CAAC,YAAY,CAAC,SAAS,CAAC,UAAU,CAAC,WAAW,EAAC,IAAI,CAAC,CAAC;QAC1D,IAAG,CAAC,IAAI,CAAC,YAAY;YAAE,OAAO;QAC9B,IAAI,CAAC,YAAY,GAAG,KAAK,CAAC;QAC1B,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC,MAAM,GAAG,IAAI,CAAC;QAC7D,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC,MAAM,GAAG,KAAK,CAAC;QACrF,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC,MAAM,GAAG,KAAK,CAAC;QACrF,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC,MAAM,GAAG,KAAK,CAAC;QACrF,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC,cAAc,CAAC,QAAQ,CAAC,CAAC,MAAM,GAAG,IAAI,CAAC;QACtF,IAAI,IAAI,GAAG;YACP,IAAI,EAAC,IAAI,CAAC,UAAU;YACpB,QAAQ,EAAC,IAAI,CAAC,QAAQ;YACtB,MAAM,EAAC,MAAM;SAChB,CAAA;QACD,EAAE,CAAC,EAAE,CAAC,QAAQ,CAAC,YAAY,CAAC,cAAc,EAAC,IAAI,CAAC,CAAC;QACjD,IAAG,IAAI,CAAC,SAAS,IAAI,IAAI,EAAC;YACtB,EAAE,CAAC,EAAE,CAAC,QAAQ,CAAC,aAAa,CAAC,CAAC,CAAC,EAAC,UAAC,IAAI;YACrC,CAAC,CAAC,CAAA;SACL;QACD,4CAA4C;IAChD,CAAC;IAED,gCAAU,GAAV;QACI,EAAE,CAAC,EAAE,CAAC,YAAY,CAAC,SAAS,CAAC,UAAU,CAAC,WAAW,EAAC,IAAI,CAAC,CAAC;QAC1D,IAAG,aAAW,CAAC,SAAS,GAAG,IAAI,EAAC;YAC5B,OAAO;SACV;QACD,sCAAsC;QACtC,aAAW,CAAC,SAAS,GAAG,IAAI,CAAC;QAC7B,EAAE,CAAC,EAAE,CAAC,UAAU,CAAC,eAAe,CAAC,KAAK,EAAC,CAAC,CAAC,CAAC;QAC1C,IAAG,IAAI,CAAC,QAAQ,IAAI,CAAC,EAAC;YAClB,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC,MAAM,GAAG,KAAK,CAAC;YAC7D,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;YACpB,OAAO;SACV;QACD,EAAE,CAAC,EAAE,CAAC,YAAY,CAAC,SAAS,CAAC,UAAU,CAAC,QAAQ,EAAC,IAAI,CAAC,CAAC;QACvD,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,cAAc,CAAC,YAAY,CAAC,CAAC,MAAM,GAAG,IAAI,CAAC;QAC1E,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,cAAc,CAAC,YAAY,CAAC,CAAC,YAAY,CAAC,EAAE,CAAC,QAAQ,CAAC,CAAC,YAAY,CAAC,CAAC,EAAC,IAAI,EAAC,KAAK,CAAC,CAAC;QACjH,EAAE,CAAC,QAAQ,CAAC,YAAY,CAAC,WAAW,EAAE,UAAC,GAAG,EAAE,KAAK;YAC7C,IAAI,GAAG,EAAE;gBACL,OAAO,CAAC,KAAK,CAAC,iBAAiB,EAAE,GAAG,CAAC,CAAC;gBACtC,OAAO;aACV;QAEL,CAAC,CAAC,CAAC;QAEH,UAAU,CAAC;YACP,EAAE,CAAC,QAAQ,CAAC,SAAS,CAAC,WAAW,CAAC,CAAC;QACvC,CAAC,EAAE,IAAI,CAAC,CAAC;IACb,CAAC;IAED,QAAQ;IACR,+BAAS,GAAT,UAAU,IAAI;QAAd,iBA6BC;QA5BG,IAAI,CAAC,eAAe,EAAE,CAAC;QACvB,IAAG,IAAI,CAAC,QAAQ,IAAG,IAAI,IAAG,IAAI,CAAC,OAAO,IAAI,IAAI,EAAC;YAC3C,OAAO;SACV;QAED,IAAI,IAAI,GAAG,CAAC,CAAC;QACb,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC;QACrB,IAAG,IAAI,IAAI,MAAM,EAAC;YACd,IAAI,GAAG,IAAI,CAAC;SACf;QACD,UAAU,CAAC;YACH,KAAI,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC,MAAM,GAAG,IAAI,CAAC;YAC7D,KAAI,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC,MAAM,GAAG,IAAI,CAAC;YACpF,KAAI,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC,MAAM,GAAG,KAAK,CAAC;YACrF,IAAI,MAAM,GAAG,KAAI,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC,cAAc,CAAC,QAAQ,CAAC,CAAC;YAC5G,MAAM,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC,MAAM,GAAG,MAAM,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC,MAAM,GAAG,MAAM,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC,MAAM,GAAE,KAAK,CAAC;YAC7H,IAAG,EAAE,CAAC,EAAE,CAAC,UAAU,CAAC,OAAO,CAAC,MAAM,IAAI,CAAC;gBAAC,MAAM,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC,MAAM,GAAG,IAAI,CAAC;iBAChF,IAAG,EAAE,CAAC,EAAE,CAAC,UAAU,CAAC,OAAO,CAAC,MAAM,IAAI,CAAC;gBAAE,MAAM,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC,MAAM,GAAG,IAAI,CAAC;iBACtF,IAAG,EAAE,CAAC,EAAE,CAAC,UAAU,CAAC,OAAO,CAAC,MAAM,IAAI,CAAC;gBAAE,MAAM,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC,MAAM,GAAG,IAAI,CAAC;YAC3F,IAAG,IAAI,EAAC;gBACJ,IAAG,IAAI,IAAI,MAAM,EAAC;oBACd,KAAI,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC,MAAM,GAAG,KAAK,CAAC;oBACrF,KAAI,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC,MAAM,GAAG,IAAI,CAAC;iBACvF;aACJ;QACT,CAAC,EAAE,IAAI,CAAC,CAAC;QAET,uBAAuB;IAC3B,CAAC;IAED,SAAS;IACT,iCAAW,GAAX,UAAY,IAAI;QAAhB,iBAoBC;QAnBG,IAAI,KAAK,GAAG,CAAC,CAAC;QACd,IAAM,gBAAgB,GAAG,CAAC,CAAC,CAAC,YAAY;QACxC,IAAM,aAAa,GAAG;YAClB,IAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,GAAG,gBAAgB,EAAE,KAAI,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;YACxE,OAAO,KAAK,GAAG,QAAQ,EAAE,KAAK,EAAE,EAAE;gBAC9B,IAAI,KAAI,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE;oBACpB,KAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,OAAO,EAAE,CAAC;iBAChC;aACJ;YACD,kBAAkB;YAClB,IAAI,KAAK,GAAG,KAAI,CAAC,MAAM,CAAC,MAAM,EAAE;gBAC5B,KAAI,CAAC,YAAY,CAAC,aAAa,EAAE,CAAC,CAAC,CAAC;aACvC;iBAAM;aACN;QACL,CAAC,CAAC;QACF,WAAW;QACX,aAAa,EAAE,CAAC;QAChB,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,cAAc,CAAC,SAAS,CAAC,CAAC,MAAM,GAAG,IAAI,CAAC;QAChE,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,cAAc,CAAC,SAAS,CAAC,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;IAC5F,CAAC;IAGD,8BAAQ,GAAR,UAAS,KAAK,EAAC,IAAI;QACf,KAAI,IAAI,CAAC,GAAC,CAAC,EAAE,CAAC,GAAC,IAAI,CAAC,SAAS,CAAC,MAAM,EAAC,CAAC,EAAE,EAAC;YACrC,IAAG,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC,KAAK,IAAI,KAAK,EAAC;gBAC5E,IAAG,IAAI,EAAC;oBACJ,IAAG,IAAI,IAAI,CAAC,EAAC;wBACT,IAAI,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC,OAAO,IAAI,CAAC,EAAC;4BAC3E,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC,QAAQ,EAAE,CAAC;yBAC5E;qBACJ;;wBACK,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC,QAAQ,EAAE,CAAC;iBAClF;;oBACI,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC,QAAQ,EAAE,CAAC;aACjF;SACJ;IACL,CAAC;IAED,4BAAM,GAAN;QACI,KAAI,IAAI,CAAC,GAAC,CAAC,EAAE,CAAC,GAAC,IAAI,CAAC,SAAS,CAAC,MAAM,EAAC,CAAC,EAAE,EAAC;YACrC,IAAG,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC,OAAO,IAAI,CAAC,EAAC;gBACrD,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC,MAAM,EAAE,CAAC;aAC1E;SACJ;IACL,CAAC;IAEF,OAAO;IACP,sCAAgB,GAAhB;QACK,IAAI,CAAC,gBAAgB,GAAG;YACpB,IAAG,IAAI,CAAC,KAAK;gBAAE,OAAO;YACtB,IAAG,IAAI,CAAC,UAAU,IAAI,CAAC,EAAC;gBACpB,IAAI,CAAC,eAAe,EAAE,CAAC;gBACvB,IAAI,QAAQ,GAAG,EAAE,CAAC,EAAE,CAAC,QAAQ,CAAC,aAAa,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;gBAC7D,uBAAa,CAAC,aAAa,CAAC,IAAI,CAAC,UAAU,EAAC,EAAE,EAAC,OAAO,EAAC,IAAI,CAAC,SAAS,CAAC,CAAA;gBACtE,+CAA+C;gBAC/C,IAAG,CAAC,IAAI,CAAC,KAAK;oBAAC,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;aACzC;iBACG;gBACA,IAAI,CAAC,UAAU,IAAI,CAAC,CAAC;gBACrB,IAAI,CAAC,UAAU,IAAI,CAAC,CAAC;gBACrB,IAAI,QAAQ,GAAG,EAAE,CAAC,EAAE,CAAC,QAAQ,CAAC,aAAa,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;gBAC7D,uBAAa,CAAC,aAAa,CAAC,IAAI,CAAC,UAAU,EAAC,EAAE,EAAC,OAAO,EAAC,IAAI,CAAC,SAAS,CAAC,CAAA;gBACtE,+CAA+C;aAClD;QACL,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACb,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,gBAAgB,EAAE,CAAC,CAAC,CAAC;IAC5C,CAAC;IACD,QAAQ;IACR,qCAAe,GAAf;QACI,IAAG,IAAI,CAAC,gBAAgB,EAAC;YACrB,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC;SAC1C;IACL,CAAC;IAED,QAAQ;IACR,iCAAW,GAAX;QACI,IAAG,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC,MAAM,IAAI,IAAI,IAAI,IAAI,CAAC,MAAM,IAAI,IAAI;eAC5E,IAAI,CAAC,SAAS,CAAC,MAAM,IAAG,IAAI,IAAI,IAAI,CAAC,UAAU,IAAI,CAAC,EAAC;YACpD,OAAO;SACV;QACA,IAAI,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,cAAc,CAAC,QAAQ,CAAC,CAAC,cAAc,CAAC,SAAS,CAAC,CAAC;QACrF,IAAG,SAAS,CAAC,YAAY,CAAC,YAAY,CAAC,CAAC,MAAM,EAAC;YAC3C,SAAS,CAAC,YAAY,CAAC,YAAY,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;YACrD,IAAG,EAAE,CAAC,EAAE,CAAC,UAAU,CAAC,OAAO,CAAC,YAAY,GAAG,CAAC,EAAC;gBACzC,IAAG,EAAE,CAAC,EAAE,CAAC,UAAU,CAAC,OAAO,CAAC,IAAI,GAAG,IAAI,EAAC;oBACpC,yBAAW,CAAC,GAAG,CAAC,SAAS,CAAC,aAAa,CAAC,CAAC;oBACzC,SAAS,CAAC,YAAY,CAAC,YAAY,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;oBACpD,OAAO;iBACV;gBACD,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,cAAc,CAAC,YAAY,CAAC,CAAC,MAAM,GAAG,IAAI,CAAC;gBACnE,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,YAAY,CAAC,cAAc,CAAC,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC;aACrF;iBACG;gBACA,IAAG,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC,MAAM,IAAI,CAAC,IAAI,CAAC,KAAK,EAAC;oBAC7D,IAAM,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;oBAC7B,IAAI,CAAC,UAAU,CAAC,MAAM,GAAG,IAAI,CAAC;oBAE9B,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC;oBAClB,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC,MAAM,GAAG,IAAI,CAAC;oBACrD,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC,MAAM,GAAG,IAAI,CAAC;oBAE3E,EAAE,CAAC,EAAE,CAAC,UAAU,CAAC,OAAO,CAAC,YAAY,IAAI,CAAC,CAAC;oBAC3C,IAAG,EAAE,CAAC,EAAE,CAAC,UAAU,CAAC,OAAO,CAAC,YAAY,GAAG,CAAC;wBACxC,EAAE,CAAC,EAAE,CAAC,UAAU,CAAC,OAAO,CAAC,YAAY,GAAG,CAAC,CAAC;oBAC9C,IAAI,CAAC,QAAQ,CAAC,MAAM,GAAG,EAAE,CAAC,EAAE,CAAC,UAAU,CAAC,OAAO,CAAC,YAAY,CAAC,QAAQ,EAAE,CAAC;oBACxE,IAAI,QAAQ,GAAG,EAAE,CAAC,EAAE,CAAC,cAAc,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;oBACvD,QAAQ,CAAC,YAAY,GAAG,EAAE,CAAC,EAAE,CAAC,UAAU,CAAC,OAAO,CAAC,YAAY,CAAC;oBAC9D,QAAQ,CAAC,SAAS,GAAG,SAAS,CAAC;oBAC/B,EAAE,CAAC,EAAE,CAAC,cAAc,CAAC,UAAU,CAAC,MAAM,EAAC,QAAQ,CAAC,CAAC;oBACjD,EAAE,CAAC,EAAE,CAAC,QAAQ,CAAC,WAAW,CAAC,IAAI,EAAC,EAAE,CAAC,EAAE,CAAC,UAAU,CAAC,OAAO,CAAC,YAAY,EAAC,UAAC,IAAI;oBAC3E,CAAC,CAAC,CAAA;oBACF,IAAI,IAAI,GAAG;wBACP,EAAE,EAAC,MAAM;wBACT,GAAG,EAAC,CAAC,CAAC;qBACT,CAAA;oBACD,EAAE,CAAC,EAAE,CAAC,QAAQ,CAAC,YAAY,CAAC,eAAe,EAAC,IAAI,CAAC,CAAC;iBACrD;;oBACI,yBAAW,CAAC,GAAG,CAAC,SAAS,CAAC,aAAa,CAAC,CAAC;aACjD;SACJ;IAGL,CAAC;IAED,QAAQ;IACR,6BAAO,GAAP;QACI,IAAG,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC,MAAM,EAAC;YAC7C,IAAI,CAAC,UAAU,CAAC,MAAM,GAAG,KAAK,CAAC;YAC/B,IAAI,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,cAAc,CAAC,QAAQ,CAAC,CAAC,cAAc,CAAC,SAAS,CAAC,CAAC;YACpF,SAAS,CAAC,YAAY,CAAC,YAAY,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;YACpD,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC,MAAM,GAAG,KAAK,CAAC;YACtD,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC,MAAM,GAAG,KAAK,CAAC;YAC5E,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;YACnB,2BAA2B;SAC9B;IACL,CAAC;IAED,sCAAgB,GAAhB,UAAiB,IAAI;QAArB,iBAqDC;QApDG,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;QACnB,IAAM,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QAC7B,oCAAoC;QACpC,IAAI,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,cAAc,CAAC,QAAQ,CAAC,CAAC,cAAc,CAAC,SAAS,CAAC,CAAC;QACpF,IAAI,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,cAAc,CAAC,QAAQ,CAAC,CAAC,cAAc,CAAC,YAAY,CAAC,CAAC;QACvF,IAAI,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,cAAc,CAAC,QAAQ,CAAC,CAAC,cAAc,CAAC,UAAU,CAAC,CAAC;QACpF,IAAG,IAAI,IAAI,cAAc;YAAE,SAAS,CAAC,YAAY,CAAC,YAAY,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;aAC1E,IAAG,IAAI,IAAI,cAAc;YAAE,SAAS,CAAC,YAAY,CAAC,YAAY,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;aAC/E,IAAG,IAAI,IAAI,aAAa;YAAE,QAAQ,CAAC,YAAY,CAAC,YAAY,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;QAClF,IAAG,IAAI,IAAI,cAAc,EAAC;YACtB,EAAE,CAAC,EAAE,CAAC,UAAU,CAAC,OAAO,CAAC,YAAY,IAAI,CAAC,CAAC;YAC3C,IAAI,QAAQ,GAAG,EAAE,CAAC,EAAE,CAAC,cAAc,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;YACvD,QAAQ,CAAC,YAAY,GAAG,EAAE,CAAC,EAAE,CAAC,UAAU,CAAC,OAAO,CAAC,YAAY,CAAC;YAC9D,QAAQ,CAAC,SAAS,GAAG,SAAS,CAAC;YAC/B,EAAE,CAAC,EAAE,CAAC,cAAc,CAAC,UAAU,CAAC,MAAM,EAAC,QAAQ,CAAC,CAAC;YACjD,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,YAAY,CAAC,cAAc,CAAC,CAAC,YAAY,EAAE,CAAC;YAC3E,UAAU,CAAC;gBACP,KAAI,CAAC,QAAQ,CAAC,MAAM,GAAG,EAAE,CAAC,EAAE,CAAC,UAAU,CAAC,OAAO,CAAC,YAAY,CAAC,QAAQ,EAAE,CAAC;gBACxE,yBAAW,CAAC,GAAG,CAAC,SAAS,CAAC,YAAY,CAAC,CAAC;YAC5C,CAAC,EAAE,GAAG,CAAC,CAAC;SAGX;aACI,IAAG,IAAI,IAAI,aAAa,EAAC;YAC1B,EAAE,CAAC,EAAE,CAAC,UAAU,CAAC,OAAO,CAAC,WAAW,IAAI,CAAC,CAAC;YAC1C,IAAI,QAAQ,GAAG,EAAE,CAAC,EAAE,CAAC,cAAc,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;YACvD,QAAQ,CAAC,WAAW,GAAG,EAAE,CAAC,EAAE,CAAC,UAAU,CAAC,OAAO,CAAC,WAAW,CAAC;YAC5D,QAAQ,CAAC,SAAS,GAAG,SAAS,CAAC;YAC/B,EAAE,CAAC,EAAE,CAAC,cAAc,CAAC,UAAU,CAAC,MAAM,EAAC,QAAQ,CAAC,CAAC;YACjD,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,YAAY,CAAC,cAAc,CAAC,CAAC,YAAY,EAAE,CAAC;YAC3E,UAAU,CAAC;gBACP,yBAAW,CAAC,GAAG,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC;gBACtC,KAAI,CAAC,UAAU,CAAC,MAAM,GAAG,EAAE,CAAC,EAAE,CAAC,UAAU,CAAC,OAAO,CAAC,WAAW,CAAC,QAAQ,EAAE,CAAC;YAC7E,CAAC,EAAE,GAAG,CAAC,CAAC;SAEX;aACI,IAAG,IAAI,IAAI,cAAc,EAAC;YAC3B,EAAE,CAAC,EAAE,CAAC,UAAU,CAAC,OAAO,CAAC,YAAY,IAAI,CAAC,CAAC;YAC3C,IAAI,QAAQ,GAAG,EAAE,CAAC,EAAE,CAAC,cAAc,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;YACvD,QAAQ,CAAC,YAAY,GAAG,EAAE,CAAC,EAAE,CAAC,UAAU,CAAC,OAAO,CAAC,YAAY,CAAC;YAC9D,QAAQ,CAAC,SAAS,GAAG,SAAS,CAAC;YAC/B,EAAE,CAAC,EAAE,CAAC,cAAc,CAAC,UAAU,CAAC,MAAM,EAAC,QAAQ,CAAC,CAAC;YACjD,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,YAAY,CAAC,cAAc,CAAC,CAAC,YAAY,EAAE,CAAC;YAC3E,UAAU,CAAC;gBACP,KAAI,CAAC,WAAW,CAAC,MAAM,GAAG,EAAE,CAAC,EAAE,CAAC,UAAU,CAAC,OAAO,CAAC,YAAY,CAAC,QAAQ,EAAE,CAAC;gBAC3E,yBAAW,CAAC,GAAG,CAAC,SAAS,CAAC,WAAW,CAAC,CAAC;YAC3C,CAAC,EAAE,GAAG,CAAC,CAAC;SAEX;IAIL,CAAC;IAED,QAAQ;IACR,+BAAS,GAAT;QACI,IAAG,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC,MAAM,IAAI,IAAI,IAAI,IAAI,CAAC,MAAM,IAAI,IAAI;eAC5E,IAAI,CAAC,SAAS,CAAC,MAAM,IAAG,IAAI,IAAI,IAAI,CAAC,UAAU,IAAI,CAAC,EAAC;YACpD,OAAO;SACV;QACD,IAAI,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,cAAc,CAAC,QAAQ,CAAC,CAAC,cAAc,CAAC,YAAY,CAAC,CAAC;QACvF,IAAG,SAAS,CAAC,YAAY,CAAC,YAAY,CAAC,CAAC,MAAM,EAAC;YAC3C,SAAS,CAAC,YAAY,CAAC,YAAY,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;YACrD,IAAG,EAAE,CAAC,EAAE,CAAC,UAAU,CAAC,OAAO,CAAC,YAAY,GAAG,CAAC,EAAC;gBACzC,IAAG,EAAE,CAAC,EAAE,CAAC,UAAU,CAAC,OAAO,CAAC,IAAI,GAAG,IAAI,EAAC;oBACpC,yBAAW,CAAC,GAAG,CAAC,SAAS,CAAC,aAAa,CAAC,CAAC;oBACzC,SAAS,CAAC,YAAY,CAAC,YAAY,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;oBACpD,OAAO;iBACV;gBACC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,cAAc,CAAC,YAAY,CAAC,CAAC,MAAM,GAAG,IAAI,CAAC;gBACrE,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,YAAY,CAAC,cAAc,CAAC,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC;aACrF;iBACG;gBACA,IAAG,CAAC,IAAI,CAAC,MAAM,EAAC;oBACZ,IAAM,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;oBAC7B,IAAI,CAAC,UAAU,CAAC,MAAM,GAAG,IAAI,CAAC;oBAE9B,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC;oBACnB,EAAE,CAAC,EAAE,CAAC,UAAU,CAAC,OAAO,CAAC,YAAY,IAAI,CAAC,CAAC;oBAC3C,IAAG,EAAE,CAAC,EAAE,CAAC,UAAU,CAAC,OAAO,CAAC,YAAY,GAAG,CAAC;wBACxC,EAAE,CAAC,EAAE,CAAC,UAAU,CAAC,OAAO,CAAC,YAAY,GAAG,CAAC,CAAC;oBAC9C,IAAI,CAAC,WAAW,CAAC,MAAM,GAAG,EAAE,CAAC,EAAE,CAAC,UAAU,CAAC,OAAO,CAAC,YAAY,CAAC,QAAQ,EAAE,CAAC;oBAC3E,IAAI,QAAQ,GAAG,EAAE,CAAC,EAAE,CAAC,cAAc,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;oBACvD,OAAO,CAAC,GAAG,CAAC,SAAS,EAAC,QAAQ,CAAC,CAAC;oBAChC,QAAQ,CAAC,YAAY,GAAG,EAAE,CAAC,EAAE,CAAC,UAAU,CAAC,OAAO,CAAC,YAAY,CAAC;oBAC9D,QAAQ,CAAC,SAAS,GAAG,SAAS,CAAC;oBAC/B,EAAE,CAAC,EAAE,CAAC,cAAc,CAAC,UAAU,CAAC,MAAM,EAAC,QAAQ,CAAC,CAAC;oBACjD,EAAE,CAAC,EAAE,CAAC,QAAQ,CAAC,WAAW,CAAC,IAAI,EAAC,EAAE,CAAC,EAAE,CAAC,UAAU,CAAC,OAAO,CAAC,YAAY,EAAC,UAAC,IAAI;oBAC3E,CAAC,CAAC,CAAA;oBACF,IAAI,IAAI,GAAG;wBACP,EAAE,EAAC,MAAM;wBACT,GAAG,EAAC,CAAC,CAAC;qBACT,CAAA;oBACD,EAAE,CAAC,EAAE,CAAC,QAAQ,CAAC,YAAY,CAAC,eAAe,EAAC,IAAI,CAAC,CAAC;iBACrD;;oBACI,yBAAW,CAAC,GAAG,CAAC,SAAS,CAAC,aAAa,CAAC,CAAC;aACjD;SAEJ;IAEL,CAAC;IAED,8BAAQ,GAAR;QACI,IAAG,EAAE,CAAC,EAAE,CAAC,UAAU,CAAC,OAAO,CAAC,IAAI,GAAG,IAAI,EAAC;YACpC,yBAAW,CAAC,GAAG,CAAC,SAAS,CAAC,aAAa,CAAC,CAAC;YACzC,OAAO;SACV;QACD,EAAE,CAAC,EAAE,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,EAAC,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,IAAI,EAAC,aAAa,CAAC,CAAC,CAAC;IAChF,CAAC;IAED,+BAAS,GAAT;QACI,IAAG,EAAE,CAAC,EAAE,CAAC,UAAU,CAAC,OAAO,CAAC,IAAI,GAAG,IAAI,EAAC;YACpC,yBAAW,CAAC,GAAG,CAAC,SAAS,CAAC,aAAa,CAAC,CAAC;YACzC,OAAO;SACV;QACD,EAAE,CAAC,EAAE,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,EAAE,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,IAAI,EAAC,cAAc,CAAC,CAAC,CAAC;IAClF,CAAC;IAED,+BAAS,GAAT;QACI,IAAG,EAAE,CAAC,EAAE,CAAC,UAAU,CAAC,OAAO,CAAC,IAAI,GAAG,IAAI,EAAC;YACpC,yBAAW,CAAC,GAAG,CAAC,SAAS,CAAC,aAAa,CAAC,CAAC;YACzC,OAAO;SACV;QACD,EAAE,CAAC,EAAE,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,EAAC,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,IAAI,EAAC,cAAc,CAAC,CAAC,CAAC;IACjF,CAAC;IAED,eAAe;IACf,8BAAQ,GAAR;QAAA,iBAmIC;QAlIG,IAAG,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC,MAAM,IAAI,IAAI,IAAI,IAAI,CAAC,MAAM,IAAI,IAAI;eAC5E,IAAI,CAAC,SAAS,CAAC,MAAM,IAAG,IAAI,IAAI,IAAI,CAAC,UAAU,IAAI,CAAC,EAAC;YACpD,OAAO;SACV;QACD,IAAI,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,cAAc,CAAC,QAAQ,CAAC,CAAC,cAAc,CAAC,UAAU,CAAC,CAAC;QACpF,IAAG,QAAQ,CAAC,YAAY,CAAC,YAAY,CAAC,CAAC,MAAM,EAAC;YAC1C,QAAQ,CAAC,YAAY,CAAC,YAAY,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;YACpD,IAAG,EAAE,CAAC,EAAE,CAAC,UAAU,CAAC,OAAO,CAAC,WAAW,GAAG,CAAC,EAAC;gBACxC,IAAG,EAAE,CAAC,EAAE,CAAC,UAAU,CAAC,OAAO,CAAC,IAAI,GAAG,IAAI,EAAC;oBACpC,yBAAW,CAAC,GAAG,CAAC,SAAS,CAAC,aAAa,CAAC,CAAC;oBACzC,QAAQ,CAAC,YAAY,CAAC,YAAY,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;oBACnD,OAAO;iBACV;gBACD,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,cAAc,CAAC,YAAY,CAAC,CAAC,MAAM,GAAG,IAAI,CAAC;gBACnE,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,YAAY,CAAC,cAAc,CAAC,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;gBACjF,gDAAgD;aACnD;iBACG;gBACA,IAAM,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;gBAC7B,IAAI,CAAC,SAAS,CAAC,MAAM,GAAG,IAAI,CAAC;gBAC7B,UAAU,CAAC;oBACP,KAAI,CAAC,SAAS,CAAC,MAAM,GAAG,KAAK,CAAC;oBAC9B,QAAQ,CAAC,YAAY,CAAC,YAAY,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;gBACvD,CAAC,EAAE,IAAI,CAAC,CAAC;gBAET,EAAE,CAAC,EAAE,CAAC,UAAU,CAAC,OAAO,CAAC,WAAW,IAAI,CAAC,CAAC;gBAC1C,IAAG,EAAE,CAAC,EAAE,CAAC,UAAU,CAAC,OAAO,CAAC,WAAW,GAAG,CAAC;oBACvC,EAAE,CAAC,EAAE,CAAC,UAAU,CAAC,OAAO,CAAC,WAAW,GAAG,CAAC,CAAC;gBAC7C,IAAI,CAAC,UAAU,CAAC,MAAM,GAAG,EAAE,CAAC,EAAE,CAAC,UAAU,CAAC,OAAO,CAAC,WAAW,CAAC,QAAQ,EAAE,CAAC;gBACzE,IAAI,QAAQ,GAAG,EAAE,CAAC,EAAE,CAAC,cAAc,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;gBACvD,QAAQ,CAAC,WAAW,GAAG,EAAE,CAAC,EAAE,CAAC,UAAU,CAAC,OAAO,CAAC,WAAW,CAAC;gBAC5D,QAAQ,CAAC,SAAS,GAAG,SAAS,CAAC;gBAC/B,EAAE,CAAC,EAAE,CAAC,cAAc,CAAC,UAAU,CAAC,MAAM,EAAC,QAAQ,CAAC,CAAC;gBACjD,EAAE,CAAC,EAAE,CAAC,QAAQ,CAAC,WAAW,CAAC,IAAI,EAAC,EAAE,CAAC,EAAE,CAAC,UAAU,CAAC,OAAO,CAAC,WAAW,EAAC,UAAC,IAAI;gBAC1E,CAAC,CAAC,CAAA;gBACF,IAAI,IAAI,GAAG;oBACH,EAAE,EAAC,MAAM;oBACT,GAAG,EAAC,CAAC,CAAC;iBACT,CAAA;gBACL,EAAE,CAAC,EAAE,CAAC,QAAQ,CAAC,YAAY,CAAC,eAAe,EAAC,IAAI,CAAC,CAAC;gBAClD,IAAI,YAAU,GAAG,EAAE,CAAC;gBACpB,qCAAqC;gBACrC,KAAI,IAAI,CAAC,GAAE,CAAC,EAAE,CAAC,GAAC,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,EAAE,EAAC;oBACpC,iEAAiE;oBACjE,IAAG,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC,IAAI,IAAI,CAAC,EAAC;wBAC9C,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;qBACxC;yBACI,IAAG,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC,IAAI,IAAI,CAAC,EAAC;wBACnD,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;qBACzC;yBACI,IAAG,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC,IAAI,IAAI,EAAE,EAAC;wBACpD,IAAG,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC,UAAU,CAAC,IAAI,EAAC;4BACpD,YAAU,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;yBACzE;;4BACI,YAAU,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;qBACxC;yBACG;wBACA,YAAU,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;qBACnC;iBACJ;gBACD,IAAG,YAAU,CAAC,MAAM,GAAG,CAAC,EAAC;oBACrB,YAAU,GAAG,EAAE,CAAC,EAAE,CAAC,QAAQ,CAAC,YAAY,CAAC,YAAU,CAAC,CAAC;oBACrD,YAAU,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC,SAAS,EAAE,CAAC;oBAChD,IAAI,IAAI,GAAG,CAAC,CAAC;oBACb,IAAG,YAAU,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC,IAAI,IAAI,CAAC,IAAI,YAAU,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC,IAAI,IAAI,CAAC,EAAC;wBAC9F,IAAI,GAAG,GAAG,CAAC;qBACd;oBACD,IAAG,IAAI,GAAG,CAAC,EAAC;wBACR,UAAU,CAAC;4BACP,YAAU,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC,SAAS,EAAE,CAAC;wBACpD,CAAC,EAAE,IAAI,CAAC,CAAC;wBACT,OAAO;qBACV;yBACG;wBACA,YAAU,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC,SAAS,EAAE,CAAC;wBAChD,OAAO;qBACV;iBACJ;qBACI,IAAG,YAAU,CAAC,MAAM,IAAI,CAAC,EAAC;oBAC3B,YAAU,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC,SAAS,EAAE,CAAC;oBAChD,IAAI,IAAI,GAAG,CAAC,CAAC;oBACb,IAAG,YAAU,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC,IAAI,IAAI,CAAC,IAAI,YAAU,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC,IAAI,IAAI,CAAC,EAAC;wBAC9F,IAAI,GAAG,GAAG,CAAC;qBACd;oBACD,UAAU,CAAC;wBACP,IAAG,KAAI,CAAC,WAAW,CAAC,MAAM,IAAI,CAAC,IAAI,KAAI,CAAC,UAAU,CAAC,MAAM,IAAI,CAAC,EAAC;4BAC3D,+BAA+B;yBAClC;6BACG;4BACA,IAAG,KAAI,CAAC,UAAU,CAAC,MAAM,IAAI,CAAC,EAAC;gCAC3B,mCAAmC;gCACnC,KAAI,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC,SAAS,EAAE,CAAC;gCACrD,OAAO;6BACV;iCACI,IAAG,KAAI,CAAC,WAAW,CAAC,MAAM,IAAG,CAAC,EAAC;gCAChC,mCAAmC;gCACnC,KAAI,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC,SAAS,EAAE,CAAC;gCACtD,OAAO;6BACV;yBACJ;oBACL,CAAC,EAAE,GAAG,GAAC,IAAI,CAAC,CAAC;iBAChB;qBACG;oBACA,IAAI,OAAK,GAAG,CAAC,CAAC;oBACd,IAAG,IAAI,CAAC,UAAU,CAAC,MAAM,IAAG,CAAC,EAAC;wBAC1B,KAAI,IAAI,CAAC,GAAC,CAAC,EAAE,CAAC,GAAC,IAAI,CAAC,UAAU,CAAC,MAAM,EAAE,CAAC,EAAE,EAAC;4BACvC,kCAAkC;4BAClC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC,SAAS,EAAE,CAAC;4BACrD,OAAK,IAAI,CAAC,CAAC;4BACX,IAAG,OAAK,IAAI,CAAC,EAAC;gCACV,MAAM;6BACT;yBACJ;qBACJ;oBAED,UAAU,CAAC;wBACH,IAAG,OAAK,IAAI,CAAC,EAAC;4BACd,KAAI,IAAI,CAAC,GAAC,CAAC,EAAE,CAAC,GAAC,KAAI,CAAC,WAAW,CAAC,MAAM,EAAE,CAAC,EAAE,EAAC;gCACxC,kCAAkC;gCAClC,yDAAyD;gCACzD,OAAK,IAAI,CAAC,CAAC;gCACX,IAAG,OAAK,IAAI,CAAC,EAAC;oCACV,MAAM;iCACT;6BACJ;yBACJ;oBACL,CAAC,EAAE,GAAG,CAAC,CAAC;iBACX;aACJ;SACJ;IACL,CAAC;IAED,QAAQ;IACR,8BAAQ,GAAR;QACI,IAAG,IAAI,CAAC,KAAK,EAAC;YACV,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;SACtB;aACG;YACA,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC;SACrB;IACL,CAAC;IAID,YAAY;IACZ,gCAAU,GAAV;QACI,IAAI,KAAK,GAAG,CAAC,CAAC;QACd,IAAG,IAAI,CAAC,QAAQ,GAAG,EAAE,EAAC;YAClB,KAAK,GAAG,GAAG,CAAC;SACf;aACI,IAAG,IAAI,CAAC,QAAQ,GAAG,EAAE,EAAC;YACvB,KAAK,GAAG,IAAI,GAAG,CAAC,IAAI,CAAC,QAAQ,GAAC,EAAE,CAAC,GAAC,IAAI,CAAC;SAC1C;QAED,IAAI,CAAC,IAAI,CAAC,KAAK,GAAG,GAAG,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,KAAK,CAAC;QAEpD,IAAG,IAAI,CAAC,QAAQ,IAAI,CAAC,IAAI,IAAI,CAAC,SAAS,GAAG,EAAE,EAAC;YACzC,IAAI,CAAC,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC;SACvB;QAED,uBAAuB;QACvB,EAAE,CAAC,EAAE,CAAC,UAAU,CAAC,OAAO,CAAC,KAAK,GAAG,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC;QACjD,yBAAyB;QACzB,gCAAgC;QAChC,uBAAuB;IAC3B,CAAC;IAED,UAAU;IACV,oCAAc,GAAd,UAAe,KAAK,EAAC,EAAE;QACnB,IAAI,QAAQ,GAAG,EAAE,CAAC,WAAW,CAAC,aAAW,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC;QACnE,QAAQ,CAAC,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC;QAC5B,QAAQ,CAAC,MAAM,GAAG,IAAI,CAAC;QACvB,IAAI,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,GAAG,GAAG,CAAC,CAAC;QAC1C,IAAI,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,MAAM,GAAG,GAAG,CAAC,CAAC;QAC5C,IAAI,IAAI,GAAG,EAAE,CAAC;QAEd,IAAG,EAAE,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,EAAC;YAClB,IAAI,CAAC,GAAG,KAAK,CAAC,CAAC,GAAG,KAAK,CAAC,MAAM,CAAC;YAC/B,IAAI,CAAC,GAAG,KAAK,CAAC,CAAC,GAAG,KAAK,CAAC,KAAK,GAAC,CAAC,CAAC;YAChC,IAAI,GAAG,MAAM,GAAG,KAAK,GAAG,GAAG,GAAG,MAAM,CAAC;YACrC,IAAG,EAAE,IAAI,CAAC,EAAC;gBACP,IAAI,GAAG,MAAM,GAAG,KAAK,GAAG,GAAG,GAAG,MAAM,CAAC;gBACrC,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC;aACf;YACD,IAAG,KAAK,CAAC,OAAO,IAAI,GAAG,EAAC;gBACpB,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC;aACf;iBACI,IAAG,KAAK,CAAC,OAAO,IAAI,IAAI,EAAC;gBAC3B,CAAC,GAAG,KAAK,CAAC,CAAC,GAAG,KAAK,CAAC,KAAK,GAAC,CAAC,GAAG,GAAC,IAAI,CAAC,CAAC;aACvC;iBACI,IAAG,KAAK,CAAC,OAAO,IAAI,IAAI,EAAC;gBAC1B,CAAC,GAAG,KAAK,CAAC,CAAC,GAAG,KAAK,CAAC,KAAK,GAAC,CAAC,GAAG,GAAC,IAAI,CAAC,CAAC;aACxC;YACD,QAAQ,CAAC,WAAW,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;SAC9B;aACI,IAAG,EAAE,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,EAAC;YACvB,IAAI,GAAG,OAAO,GAAG,MAAM,GAAG,GAAG,GAAG,KAAK,CAAC;YACtC,IAAI,CAAC,GAAG,KAAK,CAAC,CAAC,GAAG,KAAK,CAAC,KAAK,CAAC;YAC9B,IAAI,CAAC,GAAG,KAAK,CAAC,CAAC,GAAG,KAAK,CAAC,MAAM,GAAC,CAAC,CAAC;YACjC,IAAG,KAAK,CAAC,OAAO,IAAI,GAAG,EAAC;gBACpB,CAAC,GAAG,KAAK,CAAC,CAAC,GAAG,KAAK,CAAC,KAAK,GAAC,CAAC,CAAC;aAC/B;iBACI,IAAG,KAAK,CAAC,OAAO,IAAI,IAAI,EAAC;gBAC3B,CAAC,GAAG,KAAK,CAAC,CAAC,GAAG,KAAK,CAAC,KAAK,GAAC,IAAI,CAAC;aACjC;iBACI,IAAG,KAAK,CAAC,OAAO,IAAI,IAAI,EAAC;gBAC1B,CAAC,GAAG,KAAK,CAAC,CAAC,GAAG,KAAK,CAAC,KAAK,GAAC,IAAI,CAAC;aAClC;YACD,IAAG,EAAE,IAAI,CAAC,EAAC;gBACP,IAAI,GAAG,QAAQ,GAAG,MAAM,GAAG,GAAG,GAAG,KAAK,CAAC;gBACvC,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC;gBACZ,IAAG,KAAK,CAAC,OAAO,IAAI,GAAG,EAAC;oBACpB,CAAC,GAAG,KAAK,CAAC,CAAC,GAAG,KAAK,CAAC,KAAK,GAAC,CAAC,CAAC;iBAC/B;qBACI,IAAG,KAAK,CAAC,OAAO,IAAI,IAAI,EAAC;oBAC3B,CAAC,GAAG,KAAK,CAAC,CAAC,GAAG,KAAK,CAAC,KAAK,GAAC,IAAI,CAAC;iBACjC;qBACI,IAAG,KAAK,CAAC,OAAO,IAAI,IAAI,EAAC;oBAC1B,CAAC,GAAG,KAAK,CAAC,CAAC,GAAG,KAAK,CAAC,KAAK,GAAC,IAAI,CAAC;iBAClC;aACJ;YAED,QAAQ,CAAC,WAAW,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;SAC9B;QAED,IAAI,YAAY,GAAI,QAAQ,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC;QAClD,IAAI,KAAK,GAAG,KAAK,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC;QAElD,YAAY,CAAC,YAAY,CAAC,EAAE,CAAC,cAAc,CAAC,CAAC,WAAW,GAAG,QAAQ,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;QAC9G,YAAY,CAAC,MAAM,GAAG,IAAI,CAAC;QAC3B,UAAU,CAAC;YACP,EAAE,CAAC,KAAK,CAAC,QAAQ,CAAC;iBACjB,EAAE,CAAC,CAAC,EAAE,EAAC,OAAO,EAAE,CAAC,EAAC,CAAC;iBACnB,IAAI,CAAC;gBACF,QAAQ,CAAC,OAAO,EAAE,CAAC;YACvB,CAAC,CAAC;iBACD,KAAK,EAAE,CAAC;QACb,CAAC,EAAE,IAAI,CAAC,CAAC;IACb,CAAC;IAED,oCAAc,GAAd;QACI,SAAS;QACT,KAAI,IAAI,CAAC,GAAE,CAAC,EAAG,CAAC,GAAC,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,EAAE,EAAC;YACrC,IAAG,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,IAAI,CAAC,EAAC;gBAC1B,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC;gBACzB,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,EAAC,CAAC,CAAC,CAAC;aAC5B;SACJ;IACL,CAAC;IAID,4BAAM,GAAN,UAAQ,EAAE;IAEV,CAAC;;IA39DD;QADC,QAAQ,CAAC,EAAC,IAAI,EAAE,CAAC,EAAE,CAAC,MAAM,CAAC,EAAE,OAAO,EAAC,MAAM,EAAC,CAAC;oDACV;IAGpC;QADC,QAAQ,CAAC,EAAC,IAAI,EAAE,CAAC,EAAE,CAAC,MAAM,CAAC,EAAE,OAAO,EAAC,QAAQ,EAAC,CAAC;mDACb;IAGnC;QADC,QAAQ,CAAC,EAAE,CAAC,MAAM,CAAC;uDACa;IAGjC;QADC,QAAQ,CAAC,EAAC,IAAI,EAAE,CAAC,EAAE,CAAC,WAAW,CAAC,EAAE,OAAO,EAAC,MAAM,EAAC,CAAC;oDACV;IAIzC;QADC,QAAQ,CAAC,EAAC,IAAI,EAAE,CAAC,EAAE,CAAC,MAAM,CAAC,EAAE,OAAO,EAAC,MAAM,EAAC,CAAC;oDACV;IAKpC;QADC,QAAQ,CAAC,EAAE,CAAC,MAAM,CAAC;uDACa;IAGjC;QADC,QAAQ,CAAC,EAAE,CAAC,MAAM,CAAC;gDACM;IAE1B;QADC,QAAQ,CAAC,EAAE,CAAC,MAAM,CAAC;mDACS;IAE7B;QADC,QAAQ,CAAC,EAAE,CAAC,MAAM,CAAC;iDACO;IAG3B;QADC,QAAQ,CAAC,EAAE,CAAC,IAAI,CAAC;6CACG;IAGrB;QADC,QAAQ,CAAC,EAAE,CAAC,KAAK,CAAC;iDACO;IAE1B;QADC,QAAQ,CAAC,EAAE,CAAC,KAAK,CAAC;oDACU;IAE7B;QADC,QAAQ,CAAC,EAAE,CAAC,KAAK,CAAC;mDACS;IAG5B;QADC,QAAQ,CAAC,EAAE,CAAC,IAAI,CAAC;kDACQ;IAG1B;QADC,QAAQ,CAAC,EAAE,CAAC,IAAI,CAAC;mDACS;IAG3B;QADK,QAAQ,CAAC,EAAE,CAAC,IAAI,CAAC;mDACK;IAI3B;QADC,QAAQ,CAAC,EAAE,CAAC,IAAI,CAAC;gDACM;IArDP,WAAW;QAD/B,OAAO;OACa,WAAW,CAi+D/B;IAAD,kBAAC;CAj+DD,AAi+DC,CAj+DwC,EAAE,CAAC,SAAS,GAi+DpD;kBAj+DoB,WAAW","file":"","sourceRoot":"/","sourcesContent":["// Learn TypeScript:\r\n// - https://docs.cocos.com/creator/manual/en/scripting/typescript.html\r\n// Learn Attribute:\r\n// - https://docs.cocos.com/creator/manual/en/scripting/reference/attributes.html\r\n// Learn life-cycle callbacks:\r\n// - https://docs.cocos.com/creator/manual/en/scripting/life-cycle-callbacks.html\r\n\r\nimport GameManager from \"./GameManager\";\r\nimport { LQCollide } from \"./lq_collide_system/lq_collide\";\r\nimport NumberToImage from \"./NumberToImage\";\r\nimport { MiniGameSdk } from \"./Sdk/MiniGameSdk\";\r\n\r\nconst {ccclass, property} = cc._decorator;\r\n\r\n\r\n\r\n@ccclass\r\nexport default class MapConroler extends cc.Component {\r\n static _instance: any;\r\n\r\n\r\n @property({type: [cc.Prefab], tooltip:\"方块数组\"})\r\n Block_Array : Array = [];\r\n\r\n @property({type: [cc.Prefab], tooltip:\"方块道具数组\"})\r\n Block_Prop : Array = [];\r\n\r\n @property(cc.Prefab)\r\n MapBlockPrefab: cc.Prefab = null;\r\n\r\n @property({type: [cc.SpriteAtlas], tooltip:\"方块颜色\"})\r\n Block_Color : Array = [];\r\n\r\n\r\n @property({type: [cc.Prefab], tooltip:\"墙壁数组\"})\r\n Wall_Prefab : Array = [];\r\n\r\n \r\n\r\n @property(cc.Prefab)\r\n wallTurnPrefab: cc.Prefab = null;\r\n\r\n @property(cc.Button)\r\n timeBtn: cc.Button = null;\r\n @property(cc.Button)\r\n destroyBtn: cc.Button = null;\r\n @property(cc.Button)\r\n magicBtn: cc.Button = null;\r\n\r\n @property(cc.Node)\r\n mask: cc.Node = null;\r\n\r\n @property(cc.Label)\r\n iceLabel: cc.Label = null;\r\n @property(cc.Label)\r\n hammerLabel: cc.Label = null;\r\n @property(cc.Label)\r\n magicLabel: cc.Label = null;\r\n\r\n @property(cc.Node)\r\n magicMask: cc.Node = null;\r\n\r\n @property(cc.Node)\r\n hammerMask: cc.Node = null;\r\n\r\n @property(cc.Node)\r\n freezeMask: cc.Node = null;\r\n\r\n \r\n @property(cc.Node)\r\n coinPop: cc.Node = null;\r\n\r\n timeLabel: cc.Node = null;\r\n levelLabel: cc.Node = null;\r\n\r\n new_mode: number = 0;\r\n mapWidth: number = 0;\r\n mapHeight: number = 0;\r\n wallNum: number = 0;\r\n blockNum: number = 0;\r\n mapBlocksWall: any; //地图的所有底块\r\n mapInfo: any; //地图除了底块的其他信息\r\n blocks: any; //方块数组\r\n wallInfo: any; //墙壁数组\r\n wallArray:any; //\r\n openWall: any; //开关墙数组\r\n freezeWall: any; //冻结墙数组\r\n riseFallBlcok:any; //升降地块数组\r\n scheduleCallback: any;//倒计时用\r\n homeCanTouch:boolean = true;//按钮可用状态\r\n againCanTouch:boolean = true;//重玩按钮可以用状态\r\n gameOver: boolean = false;//游戏结束状态\r\n gameWin: boolean = false;//游戏胜利状态\r\n gameStart: boolean = false;//游戏开始状态\r\n add_Time: number = 0; //复活时间\r\n mapBlockArray: any; //地图的所有格子状态存储\r\n pause:boolean = false;//暂停状态\r\n hammer:boolean = false;//锤子状态\r\n freezeArray: any; //冻结\r\n loackArray: any; //上锁\r\n particleEffects: cc.ParticleAsset[];\r\n // leftDoors: []; //左门\r\n rightDoors: any; //右门\r\n topDoors: any; //上门\r\n bottomDoors: any; //下门\r\n leftDoors: any;\r\n timeNumber : 0; //游戏时间 用于倒计时\r\n count_Time : 0; //用于统计总游戏时长\r\n\r\n\r\n // mapInfo: number[][] = [];\r\n\r\n onLoad () {\r\n\r\n cc.fx.GameConfig.GM_INFO.review = 0;\r\n cc.fx.GameConfig.GM_INFO.gameState = true;\r\n this.mask.opacity = 0;\r\n this.node.getChildByName(\"Adhesive\").zIndex = 500;\r\n cc.game.setFrameRate(63); \r\n cc.fx.AudioManager._instance.playEffect(\"zhuan2\",null);\r\n this.node.parent.parent.parent.getChildByName(\"zhuanchang\").active = true;\r\n this.node.parent.parent.parent.getChildByName(\"zhuanchang\").getComponent(sp.Skeleton).setAnimation(1,\"down\",false);\r\n this.node.parent.parent.parent.getChildByName(\"zhuanchang\").getComponent(sp.Skeleton).setCompleteListener((entry) => {\r\n if (entry.animation.name === \"down\") {\r\n // 动画播放结束后执行的逻辑\r\n this.node.parent.parent.parent.getChildByName(\"zhuanchang\").active = false;\r\n }\r\n });\r\n this.blocks = [];\r\n this.leftDoors = []; //左门\r\n this.rightDoors = []; //右门\r\n this.topDoors = []; //上门\r\n this.bottomDoors = []; //下门\r\n this.gameWin = false;\r\n this.gameOver = false;\r\n this.gameStart = false; \r\n this.homeCanTouch = true;\r\n this.againCanTouch = true;\r\n this.new_mode = 0;\r\n this.count_Time = 0;\r\n this.add_Time = 0;\r\n \r\n this.iceLabel.string = cc.fx.GameConfig.GM_INFO.freezeAmount.toString();\r\n this.hammerLabel.string = cc.fx.GameConfig.GM_INFO.hammerAmount.toString();\r\n this.magicLabel.string = cc.fx.GameConfig.GM_INFO.magicAmount.toString();\r\n \r\n // cc.game.addPersistRootNode(this.node);\r\n MapConroler._instance = this;\r\n } \r\n\r\n start () {\r\n setTimeout(() => {\r\n cc.director.preloadScene(\"HomeScene\", (err, asset) => {\r\n if (err) {\r\n console.error('动态加载 HomeScene 失败:', err);\r\n return;\r\n }\r\n });\r\n }, 1000);\r\n // console.log(\"进入GameScene\");\r\n this.Block_Array = GameManager._instance.Block_Array;\r\n this.Wall_Prefab = GameManager._instance.Wall_Prefab;\r\n this.Block_Color = GameManager._instance.Block_Color;\r\n // this.particleEffects = GameManager._instance.particleEffects;\r\n \r\n this.initMap();\r\n \r\n }\r\n\r\n startUpdate(){\r\n if(this.gameStart == false){\r\n this.gameStart = true;\r\n //发送数数事件——进入关卡\r\n console.log(\"准备进入下一关,发送下一关进入\");\r\n cc.fx.GameTool.shushu_Track(\"enter_stage\");\r\n this.startTimeCutDown();\r\n for(let i =0; i {\r\n const startTime = performance.now();\r\n for (let i = 0; i < BLOCKS_PER_FRAME && index < blockArray.length; i++) {\r\n let blockInfo = blockArray[index];\r\n // 缓存 Block_Array 访问\r\n const blockPrefab = this.Block_Array[blockInfo.block]; \r\n let block = cc.instantiate(blockPrefab);\r\n block.parent = this.node;\r\n block.setPosition(cc.v2(blockInfo.position.x, blockInfo.position.y));\r\n if (blockInfo.block != 23) {\r\n this.blockNum += 1;\r\n this.blocks.push(block);\r\n if (blockInfo.type == 1) {\r\n let info = {\r\n id: blockInfo.id + 1,\r\n block: blockInfo.block,\r\n color: blockInfo.stacking,\r\n type: 10,\r\n position: blockInfo.position,\r\n stacking: blockInfo.color\r\n };\r\n // 缓存 Block_Array 访问\r\n const blockUpPrefab = this.Block_Array[info.block]; \r\n let blockUp = cc.instantiate(blockUpPrefab);\r\n blockUp.parent = this.node;\r\n blockUp.setPosition(cc.v2(info.position.x, info.position.y));\r\n\r\n this.blocks.push(blockUp);\r\n block.getComponent(\"Block\").init(blockInfo, null, null, blockUp);\r\n blockUp.getComponent(\"Block\").init(info, null, null, block);\r\n \r\n this.blockNum += 1;\r\n } else if (blockInfo.type == 9) {\r\n if(blockInfo.adhesiveTime < 2){\r\n index++;\r\n continue;\r\n }\r\n index++;\r\n let info = blockArray[index];\r\n // 缓存 Block_Array 访问\r\n const blockUpPrefab = this.Block_Array[info.block]; \r\n let blockUp = cc.instantiate(blockUpPrefab);\r\n blockUp.parent = this.node;\r\n blockUp.setPosition(cc.v2(info.position.x, info.position.y));\r\n\r\n this.blocks.push(blockUp);\r\n block.getComponent(\"Block\").init(blockInfo, null, null, blockUp,false);\r\n setTimeout(() => {\r\n blockUp.getComponent(\"Block\").init(info, null, null, block,true);\r\n }, 100);\r\n this.blockNum += 1;\r\n } else {\r\n block.getComponent(\"Block\").init(blockInfo);\r\n } \r\n }\r\n else{\r\n block.getComponent(\"Barrier\").init(blockInfo);\r\n }\r\n index++;\r\n }\r\n const endTime = performance.now();\r\n const frameTime = endTime - startTime;\r\n // 如果当前帧执行时间过长,减少每帧创建数量\r\n if (frameTime > 16) { \r\n BLOCKS_PER_FRAME = Math.max(BLOCKS_PER_FRAME - 1, MIN_PER_FRAME);\r\n } else {\r\n BLOCKS_PER_FRAME = Math.min(BLOCKS_PER_FRAME + 1, MAX_PER_FRAME);\r\n }\r\n\r\n // 如果还有方块未创建,下一帧继续创建\r\n if (index < blockArray.length) {\r\n // 使用 scheduleOnce 在下一帧执行 createBlocks\r\n this.scheduleOnce(() => {\r\n createBlocks();\r\n }, 0);\r\n } else {\r\n\r\n }\r\n };\r\n\r\n // 开始分帧创建方块\r\n createBlocks();\r\n}\r\n//给创建方块排序,用来降低drawcall 合批\r\nsortBlock(allBlocks: { color: number; block: number; type: number }[]) {\r\n return allBlocks.sort((a, b) => {\r\n // 先处理 type 为 1 的情况,将其放到最后\r\n if (a.type === 1 && b.type !== 1) {\r\n return 1;\r\n }\r\n if (a.type !== 1 && b.type === 1) {\r\n return -1;\r\n }\r\n\r\n // 对 type 不为 0 的元素按 type 排序\r\n if (a.type !== 0 && b.type !== 0) {\r\n return a.type - b.type;\r\n }\r\n if (a.type !== 0 && b.type === 0) {\r\n return 1;\r\n }\r\n if (a.type === 0 && b.type !== 0) {\r\n return -1;\r\n }\r\n\r\n // 再处理 block 为 23 的情况,将其放到最前面\r\n if (a.block === 23 && b.block !== 23) {\r\n return -1;\r\n }\r\n if (a.block !== 23 && b.block === 23) {\r\n return 1;\r\n }\r\n\r\n // 其余按 color 升序排列\r\n return a.color - b.color;\r\n });\r\n}\r\n\r\n\r\n//创建墙壁\r\n\r\nwallInit() {\r\n let index = 0; // 当前要创建的墙壁索引\r\n let WALLS_PER_FRAME = 1; // 初始每帧创建的墙壁数量\r\n const MAX_PER_FRAME = 10; // 每帧最大创建数量\r\n const MIN_PER_FRAME = 1; // 每帧最小创建数量\r\n\r\n const createWalls = () => {\r\n const startTime = performance.now();\r\n for (let i = 0; i < WALLS_PER_FRAME && index < this.wallInfo.length; i++) {\r\n let block = this.wallInfo[index];\r\n let dir = this.getWllDiraction(\"wall\", cc.v2(block.getComponent(\"MapBlock\").posX, block.getComponent(\"MapBlock\").posY));\r\n if (dir != null) {\r\n this.createWall(dir, block);\r\n }\r\n index++;\r\n }\r\n const endTime = performance.now();\r\n const frameTime = endTime - startTime;\r\n // 如果当前帧执行时间过长,减少每帧创建数量\r\n if (frameTime > 16) { \r\n WALLS_PER_FRAME = Math.max(WALLS_PER_FRAME - 1, MIN_PER_FRAME);\r\n } else {\r\n WALLS_PER_FRAME = Math.min(WALLS_PER_FRAME + 1, MAX_PER_FRAME);\r\n }\r\n\r\n // 如果还有墙壁未创建,下一帧继续创建\r\n if (index < this.wallInfo.length) {\r\n this.scheduleOnce(() => {\r\n createWalls();\r\n }, 0);\r\n } else {\r\n // 所有墙壁创建完成后,创建拐角节点\r\n this.createCornerNodes();\r\n }\r\n };\r\n\r\n // 开始分帧创建墙壁\r\n createWalls();\r\n}\r\n\r\n// ... 已有代码 ...\r\n\r\n getWllDiraction(type,pointA){\r\n let dir = [];\r\n let pointB = cc.v2(pointA.x + 1,pointA.y);\r\n let pointC = cc.v2(pointA.x - 1,pointA.y);\r\n let pointD = cc.v2(pointA.x,pointA.y + 1);\r\n let pointE = cc.v2(pointA.x,pointA.y - 1);\r\n let opacity = 0;\r\n if(type == \"wall\") opacity = 255;\r\n if(type == \"turn\") opacity = 250;\r\n \r\n if(pointB.x < this.mapWidth){\r\n if(this.mapBlocksWall[pointB.x][pointB.y].opacity == opacity ){\r\n if(type == \"turn\" && this.mapBlocksWall[pointB.x][pointB.y].getComponent(\"MapBlock\").direction == \"right\"){\r\n \r\n }\r\n else dir.push(\"right\");\r\n }\r\n }\r\n if(pointC.x >= 0){\r\n if(this.mapBlocksWall[pointC.x][pointC.y].opacity == opacity){\r\n if(type == \"turn\" && this.mapBlocksWall[pointC.x][pointC.y].getComponent(\"MapBlock\").direction == \"left\"){\r\n \r\n }\r\n else dir.push(\"left\");\r\n }\r\n }\r\n if(pointD.y < this.mapHeight){\r\n if(this.mapBlocksWall[pointD.x][pointD.y].opacity == opacity){\r\n if(type == \"turn\" && this.mapBlocksWall[pointD.x][pointD.y].getComponent(\"MapBlock\").direction == \"up\"){\r\n \r\n }\r\n else dir.push(\"up\");\r\n }\r\n }\r\n if(pointE.y >= 0){\r\n if(this.mapBlocksWall[pointE.x][pointE.y].opacity == opacity){\r\n if(type == \"turn\" && this.mapBlocksWall[pointE.x][pointE.y].getComponent(\"MapBlock\").direction == \"down\"){\r\n \r\n }\r\n else dir.push(\"down\");\r\n }\r\n }\r\n if(dir.length > 2){\r\n\r\n return null;\r\n }\r\n if(dir.length == 1){\r\n if(type == \"wall\")\r\n return dir[0];\r\n else \r\n return null;\r\n }\r\n else if(dir.length == 2){\r\n return dir[0] + dir[1];\r\n }\r\n }\r\n\r\n createCornerNodes() {\r\n // 定义拐角位置\r\n for(let i=0; i 3) maxX = maxX-1;\r\n }\r\n else if(block.name == \"block11\"){\r\n minX = width-2;\r\n if(this.mapWidth > 3) maxX = maxX-2;\r\n }\r\n\r\n else if(block.name == \"block14\"){\r\n minX = width-1;\r\n maxX = maxX-1;\r\n }\r\n else if(block.name == \"block16\"){\r\n minX = width-1;\r\n maxX = maxX-1;\r\n }\r\n else if(block.name == \"block18\"){\r\n minX = width-1;\r\n maxX = maxX-1;\r\n }\r\n else if(block.name == \"block21\"){\r\n minX = width-1;\r\n maxX = maxX-1;\r\n }\r\n \r\n return {minX:minX,maxX:maxX,minY:minY,maxY:maxY};\r\n }\r\n\r\n //检测落点是否可以消除\r\n checkPass(node,blocks) {\r\n let minAndMax = this.getMinAndMax(node);\r\n let minX = minAndMax.minX;\r\n let maxX = minAndMax.maxX;\r\n let minY = minAndMax.minY;\r\n let maxY = minAndMax.maxY;\r\n\r\n let nodePos = cc.v2(node.getComponent(\"Block\").posX, node.getComponent(\"Block\").posY);\r\n\r\n // 获取地图边界信息\r\n\r\n let allBlocks = [];\r\n for(let i=0;i wallPos.x){\r\n // console.log(\"id:\",wall.getChildByName(\"num\").getComponent(cc.Label).string);\r\n leftWalls.push(wallLeft);\r\n }\r\n }\r\n }\r\n // console.log(\"得到左边墙壁数组\",date6);\r\n if(leftWalls.length != 0){\r\n let result = this.detectingBlock(\"left\",node.getComponent(\"Block\").posX,node.getComponent(\"Block\").posY,allBlocks);\r\n if(result == true) result = this.passWall(result,leftWalls,node);\r\n // console.log(\"碰到左边缘结果:\",jg);\r\n if(result){\r\n \r\n this.blockNum -= 1;\r\n this.special_Treatment(node);\r\n jg = 2;\r\n this.createParticle(node,jg);\r\n return jg;\r\n }\r\n }\r\n }\r\n if (nodePos.x >= maxX || direction[1] == true) {\r\n // const date3 = new Date().getTime();\r\n // console.log(\"碰到右边缘\",date3);\r\n pz += 1;\r\n let rightWalls = [];\r\n for(let i = 0; i < this.rightDoors.length; i++){\r\n let wallRight = this.rightDoors[i].getChildByName(\"wall\");\r\n let wallPos = cc.v2(wallRight.getComponent(\"Wall\").posX,wallRight.getComponent(\"Wall\").posY);\r\n for(let i = 0; i < allBlocks.length; i++){\r\n if(allBlocks[i].y == wallPos.y && allBlocks[i].x < wallPos.x){\r\n // console.log(\"id:\",wall.getChildByName(\"num\").getComponent(cc.Label).string);\r\n rightWalls.push(wallRight);\r\n }\r\n }\r\n }\r\n\r\n if(rightWalls.length != 0){\r\n let result = this.detectingBlock(\"right\",node.getComponent(\"Block\").posX,node.getComponent(\"Block\").posY,allBlocks);\r\n \r\n if(result == true) result = this.passWall(result,rightWalls,node);\r\n // console.log(\"碰到右边缘结果:\",jg);\r\n if(result){\r\n \r\n this.blockNum -= 1;\r\n this.special_Treatment(node);\r\n jg = 3;\r\n this.createParticle(node,jg);\r\n return jg;\r\n }\r\n }\r\n\r\n \r\n }\r\n if (nodePos.y <= minY || direction[2] == true) {\r\n pz += 1;\r\n // const date4 = new Date().getTime();\r\n // console.log(\"碰到下边缘\",date4);\r\n let downWalls = [];\r\n for(let i = 0; i < this.topDoors.length; i++){\r\n let wallBottom = this.topDoors[i].getChildByName(\"wall\");\r\n let wallPos = cc.v2(wallBottom.getComponent(\"Wall\").posX,wallBottom.getComponent(\"Wall\").posY);\r\n for(let i = 0; i < allBlocks.length; i++){\r\n let luocha = Math.abs(allBlocks[i].y - wallPos.y)\r\n if(allBlocks[i].x == wallPos.x && allBlocks[i].y > wallPos.y && luocha <= node.getComponent(\"Block\").shu){\r\n // console.log(\"id:\",wall.getChildByName(\"num\").getComponent(cc.Label).string);\r\n downWalls.push(wallBottom);\r\n }\r\n }\r\n }\r\n\r\n if(downWalls.length != 0){\r\n let result = this.detectingBlock(\"down\",node.getComponent(\"Block\").posX,node.getComponent(\"Block\").posY,allBlocks);\r\n if(result == true) result = this.passWall(result,downWalls,node);\r\n // console.log(\"碰到下边缘结果:\",jg);\r\n if(result){\r\n \r\n this.blockNum -= 1;\r\n this.special_Treatment(node);\r\n jg = 1;\r\n this.createParticle(node,jg);\r\n return jg;\r\n }\r\n }\r\n \r\n\r\n }\r\n if (nodePos.y >= maxY || direction[3] == true) {\r\n pz += 1;\r\n // const date5 = new Date().getTime();\r\n // console.log(\"碰到上边缘\",date5);\r\n let upWalls = [];\r\n for(let i = 0; i < this.bottomDoors.length; i++){\r\n let wallTop = this.bottomDoors[i].getChildByName(\"wall\");\r\n let wallPos = cc.v2(wallTop.getComponent(\"Wall\").posX,wallTop.getComponent(\"Wall\").posY);\r\n for(let i = 0; i < allBlocks.length; i++){\r\n let luocha = Math.abs(allBlocks[i].y - wallPos.y)\r\n if(allBlocks[i].x == wallPos.x && allBlocks[i].y < wallPos.y && luocha <= node.getComponent(\"Block\").shu){\r\n upWalls.push(wallTop);\r\n }\r\n }\r\n }\r\n\r\n if(upWalls.length != 0){\r\n let result = this.detectingBlock(\"up\",node.getComponent(\"Block\").posX,node.getComponent(\"Block\").posY,allBlocks);\r\n if(result == true) result = this.passWall(result,upWalls,node);\r\n // console.log(\"碰到上边缘结果:\",result);\r\n if(result){\r\n \r\n this.blockNum -= 1;\r\n this.special_Treatment(node);\r\n jg = 0;\r\n this.createParticle(node,jg);\r\n return jg;\r\n }\r\n }\r\n\r\n }\r\n if(pz == 0 )jg = -1;\r\n // const date10 = new Date().getTime();\r\n // console.log(\"所有检测结束耗时\",date10,jg);\r\n return jg;\r\n }\r\n\r\n changeState(){\r\n if(this.openWall.length != 0){\r\n for(let i=0; i 0){\r\n for(let i=0; i= 0){\r\n if(this.mapBlocksWall[x-2][y].getComponent(\"MapBlock\").block_Id != \"\" && this.mapBlocksWall[x-2][y].getComponent(\"MapBlock\").block_Id!= \"Wall\"\r\n && this.mapBlocksWall[x-2][y].getComponent(\"MapBlock\").block_Id != id ){\r\n // console.log(\"左侧有物体\")\r\n jg = false;\r\n return jg;\r\n }\r\n if(this.mapBlocksWall[x-2][y].opacity == 249){\r\n jg = false;\r\n return jg;\r\n }\r\n }\r\n }\r\n else if(direction == \"right\"){\r\n if(this.mapBlocksWall[x+1][y].getComponent(\"MapBlock\").block_Id != \"\" && this.mapBlocksWall[x+1][y].getComponent(\"MapBlock\").block_Id!= \"Wall\"\r\n && this.mapBlocksWall[x+1][y].getComponent(\"MapBlock\").block_Id != id ){\r\n // console.log(\"右侧有物体\")\r\n jg = false;\r\n return jg;\r\n }\r\n if(this.mapBlocksWall[x+1][y].opacity == 249){\r\n jg = false;\r\n return jg;\r\n }\r\n if((x + 2) <= this.mapBlocksWall.length-1){\r\n if(this.mapBlocksWall[x+2][y].getComponent(\"MapBlock\").block_Id != \"\" && this.mapBlocksWall[x+2][y].getComponent(\"MapBlock\").block_Id!= \"Wall\"\r\n && this.mapBlocksWall[x+2][y].getComponent(\"MapBlock\").block_Id != id ){\r\n // console.log(\"右侧有物体\")\r\n jg = false;\r\n return jg;\r\n }\r\n if(this.mapBlocksWall[x+2][y].opacity == 249){\r\n jg = false;\r\n return jg;\r\n }\r\n }\r\n }\r\n if(direction == \"up\"){\r\n if(this.mapBlocksWall[x][y+1].getComponent(\"MapBlock\").block_Id != \"\" && this.mapBlocksWall[x][y+1].getComponent(\"MapBlock\").block_Id!= \"Wall\"\r\n && this.mapBlocksWall[x][y+1].getComponent(\"MapBlock\").block_Id != id ){\r\n // console.log(\"上侧有物体\")\r\n jg = false;\r\n return jg;\r\n }\r\n if(this.mapBlocksWall[x][y+1].opacity == 249){\r\n jg = false;\r\n return jg;\r\n }\r\n if((y + 2) <= this.mapBlocksWall[x].length-1){\r\n if(this.mapBlocksWall[x][y+2].getComponent(\"MapBlock\").block_Id != \"\" && this.mapBlocksWall[x][y+2].getComponent(\"MapBlock\").block_Id!= \"Wall\"\r\n && this.mapBlocksWall[x][y+2].getComponent(\"MapBlock\").block_Id != id ){\r\n // console.log(\"上侧有物体\")\r\n jg = false;\r\n return jg;\r\n }\r\n if(this.mapBlocksWall[x][y+2].opacity == 249){\r\n jg = false;\r\n return jg;\r\n }\r\n }\r\n }\r\n if(direction == \"down\"){\r\n if(this.mapBlocksWall[x][y-1].getComponent(\"MapBlock\").block_Id != \"\" && this.mapBlocksWall[x][y-1].getComponent(\"MapBlock\").block_Id!= \"Wall\"\r\n && this.mapBlocksWall[x][y-1].getComponent(\"MapBlock\").block_Id != id ){\r\n // console.log(\"下侧有物体\")\r\n jg = false;\r\n return jg;\r\n }\r\n if(this.mapBlocksWall[x][y-1].opacity == 249){\r\n jg = false;\r\n return jg;\r\n }\r\n if((y - 2) >= 0){\r\n if(this.mapBlocksWall[x][y-2].getComponent(\"MapBlock\").block_Id != \"\" && this.mapBlocksWall[x][y-2].getComponent(\"MapBlock\").block_Id!= \"Wall\"\r\n && this.mapBlocksWall[x][y-2].getComponent(\"MapBlock\").block_Id != id ){\r\n // console.log(\"下侧有物体\")\r\n jg = false;\r\n return jg;\r\n }\r\n if(this.mapBlocksWall[x][y-2].opacity == 249){\r\n jg = false;\r\n return jg;\r\n }\r\n }\r\n }\r\n // console.log(\"检测物体各方向是否有别的物块\",jg);\r\n return jg;\r\n }\r\n\r\n checkDiraction(allBlocks,maxX,maxY){\r\n let jg = [false,false,false,false];\r\n for(let i=0; i 0 && jg[0] == false){\r\n if(this.mapBlocksWall[allBlocks[i].x-1][allBlocks[i].y].opacity == 250){\r\n jg[0] = true;\r\n } \r\n }\r\n if( jg[1] == false){\r\n if(this.mapBlocksWall[allBlocks[i].x+1][allBlocks[i].y].opacity == 250){\r\n jg[1] = true;\r\n } \r\n }\r\n if(allBlocks[i].y > 0 && jg[2] == false){\r\n if(this.mapBlocksWall[allBlocks[i].x][allBlocks[i].y-1].opacity == 250){\r\n jg[2] = true;\r\n } \r\n }\r\n if(jg[3] == false){\r\n if(this.mapBlocksWall[allBlocks[i].x][allBlocks[i].y+1].opacity == 250){\r\n jg[3] = true;\r\n } \r\n }\r\n }\r\n return jg;\r\n }\r\n\r\n checkLeft(allBlocks){\r\n let jg = false;\r\n return jg;\r\n }\r\n\r\n checkRight(allBlocks,max){\r\n let jg = false;\r\n for(let i=0; i {\r\n if(child.getComponent(\"Block\")){\r\n if(child.getComponent(\"Block\").type == 4)\r\n return child\r\n }\r\n });\r\n if(freezeBlock.length > 0){\r\n for(let i=0; i {\r\n if(child.getComponent(\"Block\")){\r\n if(child.getComponent(\"Block\").type == 3)\r\n return child\r\n }\r\n });\r\n if(lockBlock.length > 0)\r\n for(let i=0; i {\r\n this.node.parent.parent.getChildByName(\"Win\").active = true;\r\n }, 660);\r\n // console.log(\"游戏成功\");\r\n }\r\n else{\r\n if(this.gameOver == true){\r\n this.failLevel(null);\r\n }\r\n }\r\n }\r\n\r\n check_NewMode(){\r\n for(let i=0; i 156){\r\n cc.fx.GameConfig.GM_INFO.level = 156;\r\n MapConroler._instance = null;\r\n \r\n if(this.new_mode == 3){\r\n this.node.parent.parent.getChildByName(\"Win\").active = false;\r\n this.openNewMode(2);\r\n cc.fx.GameConfig.LEVEL_INFO_init(false,0);\r\n return;\r\n }\r\n // cc.fx.GameConfig.LEVEL_INFO_init(true);\r\n cc.fx.AudioManager._instance.playEffect(\"zhuan1\",null);\r\n this.node.parent.parent.parent.getChildByName(\"zhuanchang\").active = true;\r\n this.node.parent.parent.parent.getChildByName(\"zhuanchang\").getComponent(sp.Skeleton).setAnimation(1,\"up\",false);\r\n // this.node.parent.parent.parent.getChildByName(\"zhuanchang\").getComponent(sp.Skeleton).setCompleteListener((entry) => {\r\n // if (entry.animation.name === \"up\") {\r\n // // 动画播放结束后执行的逻辑\r\n // this.node.parent.parent.parent.getChildByName(\"zhuanchang\").active = false;\r\n // }\r\n // });\r\n\r\n cc.director.preloadScene(\"HomeScene\", (err, asset) => {\r\n if (err) {\r\n console.error('动态加载 Prefab 失败:', err);\r\n return;\r\n }\r\n });\r\n setTimeout(() => {\r\n cc.director.loadScene(\"HomeScene\");\r\n }, 1200);\r\n } \r\n else{\r\n \r\n // console.log(\"下一关\");\r\n MapConroler._instance = null;\r\n \r\n if(this.new_mode == 3){\r\n this.node.parent.parent.getChildByName(\"Win\").active = false;\r\n this.openNewMode(2);\r\n cc.fx.GameConfig.LEVEL_INFO_init(false,0);\r\n return;\r\n }\r\n cc.fx.AudioManager._instance.playEffect(\"zhuan1\",null);\r\n this.node.parent.parent.parent.getChildByName(\"zhuanchang\").active = true;\r\n this.node.parent.parent.parent.getChildByName(\"zhuanchang\").getComponent(sp.Skeleton).setAnimation(1,\"up\",false);\r\n // this.node.parent.parent.parent.getChildByName(\"zhuanchang\").getComponent(sp.Skeleton).setCompleteListener((entry) => {\r\n // if (entry.animation.name === \"up\") {\r\n // // 动画播放结束后执行的逻辑\r\n // this.node.parent.parent.parent.getChildByName(\"zhuanchang\").active = false;\r\n // }\r\n // });\r\n setTimeout(() => {\r\n cc.fx.GameConfig.LEVEL_INFO_init(true,0);\r\n }, 1200);\r\n \r\n // this.node.parent.parent.parent.destroy();\r\n \r\n }\r\n }\r\n\r\n againLevel(){\r\n cc.fx.AudioManager._instance.playEffect(\"anniu_Big\",null);\r\n if(cc.fx.GameConfig.GM_INFO.hp < 1){\r\n MiniGameSdk.API.showToast(\"体力值不足\");\r\n return;\r\n } \r\n if(!this.againCanTouch) return;\r\n \r\n this.againCanTouch = false;\r\n \r\n MapConroler._instance = null;\r\n cc.fx.AudioManager._instance.playEffect(\"zhuan1\",null);\r\n this.node.parent.parent.parent.getChildByName(\"zhuanchang\").active = true;\r\n this.node.parent.parent.parent.getChildByName(\"zhuanchang\").getComponent(sp.Skeleton).setAnimation(1,\"up\",false);\r\n // this.node.parent.parent.parent.getChildByName(\"zhuanchang\").getComponent(sp.Skeleton).setCompleteListener((entry) => {\r\n // if (entry.animation.name === \"up\") {\r\n // // 动画播放结束后执行的逻辑\r\n // this.node.parent.parent.parent.getChildByName(\"zhuanchang\").active = false;\r\n // }\r\n // });\r\n setTimeout(() => {\r\n cc.fx.GameConfig.LEVEL_INFO_init(true,0);\r\n }, 1200);\r\n // this.node.parent.parent.parent.destroy();\r\n }\r\n\r\n reviewLevel(){\r\n cc.fx.AudioManager._instance.playEffect(\"anniu_Big\",null);\r\n let coin = 900;\r\n if(cc.fx.GameConfig.GM_INFO.review == 1) coin = 1900;\r\n else if(cc.fx.GameConfig.GM_INFO.review == 2) coin = 2500;\r\n // console.log(\"自身金币:\",cc.fx.GameConfig.GM_INFO.coin,\"消耗金币:\",coin);\r\n if(cc.fx.GameConfig.GM_INFO.coin < Math.abs(coin)){\r\n MiniGameSdk.API.showToast(\"金币不足,无法加时间\");\r\n return;\r\n }\r\n else{\r\n this.runRewive(-coin);\r\n }\r\n }\r\n\r\n runRewive(data){\r\n console.log(\"复活回调函数内\",data);\r\n cc.fx.GameTool.changeCoin(data);\r\n MiniGameSdk.API.showToast(\"继续游戏\");\r\n \r\n if(cc.fx.GameConfig.GM_INFO.review < 2)\r\n cc.fx.GameConfig.GM_INFO.review += 1;\r\n \r\n this.gameOver = false;\r\n this.timeNumber = 21;\r\n this.add_Time += 20;\r\n this.pause = false;\r\n this.node.parent.parent.getChildByName(\"Lose\").active = false;\r\n this.startTimeCutDown();\r\n }\r\n\r\n\r\n \r\n homeBtn(){\r\n // alert(\"游戏失败\");\r\n cc.fx.AudioManager._instance.playEffect(\"anniu_Big\",null);\r\n if(!this.homeCanTouch) return;\r\n this.homeCanTouch = false;\r\n this.node.parent.parent.getChildByName(\"Lose\").active = true;\r\n this.node.parent.parent.getChildByName(\"Lose\").getChildByName(\"Time\").active = false;\r\n this.node.parent.parent.getChildByName(\"Lose\").getChildByName(\"Boom\").active = false;\r\n this.node.parent.parent.getChildByName(\"Lose\").getChildByName(\"Lock\").active = false;\r\n this.node.parent.parent.getChildByName(\"Lose\").getChildByName(\"Health\").active = true;\r\n let data = {\r\n time:this.count_Time, \r\n add_Time:this.add_Time,\r\n result:\"fail\"\r\n }\r\n cc.fx.GameTool.shushu_Track(\"finish_stage\",data);\r\n if(this.gameStart == true){\r\n cc.fx.GameTool.setUserHealth(-1,(data)=>{\r\n })\r\n }\r\n // this.node.parent.parent.parent.destroy();\r\n }\r\n\r\n returnHome(){\r\n cc.fx.AudioManager._instance.playEffect(\"anniu_Big\",null);\r\n if(MapConroler._instance = null){\r\n return;\r\n }\r\n // MiniGameSdk.API.showToast(\"体力值减少\");\r\n MapConroler._instance = null;\r\n cc.fx.GameConfig.LEVEL_INFO_init(false,0);\r\n if(this.new_mode == 3){\r\n this.node.parent.parent.getChildByName(\"Win\").active = false;\r\n this.openNewMode(1);\r\n return;\r\n }\r\n cc.fx.AudioManager._instance.playEffect(\"zhuan1\",null);\r\n this.node.parent.parent.parent.getChildByName(\"zhuanchang\").active = true;\r\n this.node.parent.parent.parent.getChildByName(\"zhuanchang\").getComponent(sp.Skeleton).setAnimation(1,\"up\",false);\r\n cc.director.preloadScene(\"HomeScene\", (err, asset) => {\r\n if (err) {\r\n console.error('动态加载 Prefab 失败:', err);\r\n return;\r\n }\r\n \r\n });\r\n\r\n setTimeout(() => {\r\n cc.director.loadScene(\"HomeScene\");\r\n }, 1200);\r\n }\r\n\r\n //判断游戏失败\r\n failLevel(type){\r\n this.stopTimeCutDown();\r\n if(this.gameOver== true ||this.gameWin == true){\r\n return;\r\n }\r\n\r\n let time = 0;\r\n this.gameOver = true;\r\n if(type == \"boom\"){\r\n time = 2000;\r\n }\r\n setTimeout(() => {\r\n this.node.parent.parent.getChildByName(\"Lose\").active = true;\r\n this.node.parent.parent.getChildByName(\"Lose\").getChildByName(\"Time\").active = true;\r\n this.node.parent.parent.getChildByName(\"Lose\").getChildByName(\"Boom\").active = false;\r\n let buyBtn = this.node.parent.parent.getChildByName(\"Lose\").getChildByName(\"Time\").getChildByName(\"buyBtn\");\r\n buyBtn.getChildByName(\"coin1\").active = buyBtn.getChildByName(\"coin2\").active = buyBtn.getChildByName(\"coin3\").active =false; \r\n if(cc.fx.GameConfig.GM_INFO.review == 0)buyBtn.getChildByName(\"coin1\").active = true;\r\n else if(cc.fx.GameConfig.GM_INFO.review == 1) buyBtn.getChildByName(\"coin2\").active = true;\r\n else if(cc.fx.GameConfig.GM_INFO.review == 2) buyBtn.getChildByName(\"coin3\").active = true;\r\n if(type){\r\n if(type == \"boom\"){\r\n this.node.parent.parent.getChildByName(\"Lose\").getChildByName(\"Time\").active = false;\r\n this.node.parent.parent.getChildByName(\"Lose\").getChildByName(\"Boom\").active = true;\r\n }\r\n }\r\n }, time);\r\n \r\n // console.log(\"游戏失败\");\r\n }\r\n\r\n //打开新模式弹窗\r\n openNewMode(type){\r\n let index = 0;\r\n const BLOCKS_PER_FRAME = 5; // 每帧销毁的方块数量\r\n const destroyBlocks = () => {\r\n const endIndex = Math.min(index + BLOCKS_PER_FRAME, this.blocks.length);\r\n for (; index < endIndex; index++) {\r\n if (this.blocks[index]) {\r\n this.blocks[index].destroy();\r\n }\r\n }\r\n // 如果还有方块未销毁,下一帧继续\r\n if (index < this.blocks.length) {\r\n this.scheduleOnce(destroyBlocks, 0);\r\n } else {\r\n }\r\n };\r\n // 开始分帧销毁方块\r\n destroyBlocks();\r\n this.node.parent.parent.getChildByName(\"NewMode\").active = true;\r\n this.node.parent.parent.getChildByName(\"NewMode\").getComponent(\"NewMode\").setMode(type);\r\n }\r\n\r\n \r\n downDoor(color,type){\r\n for(let i=0; i{\r\n })\r\n let data = {\r\n id:\"2001\",\r\n num:-1\r\n }\r\n cc.fx.GameTool.shushu_Track(\"resource_cost\",data);\r\n }\r\n else MiniGameSdk.API.showToast(\"道具使用中,请稍后再试\");\r\n }\r\n }\r\n\r\n\r\n }\r\n\r\n //解开时间冻结\r\n openIce(){\r\n if(this.node.parent.getChildByName(\"Ice\").active){\r\n this.freezeMask.active = false;\r\n let freezeBtn = this.node.parent.getChildByName(\"Bottom\").getChildByName(\"timeBtn\");\r\n freezeBtn.getComponent(\"btnControl\").setTouch(true);\r\n this.node.parent.getChildByName(\"Ice\").active = false;\r\n this.node.parent.getChildByName(\"Top\").getChildByName(\"Ice\").active = false;\r\n this.pause = false;\r\n // this.startTimeCutDown();\r\n }\r\n }\r\n \r\n handleBuySuccess(data){\r\n this.pause = false;\r\n const timestamp = Date.now();\r\n // console.log(\"回调函数内:\",this.pause);\r\n let freezeBtn = this.node.parent.getChildByName(\"Bottom\").getChildByName(\"timeBtn\");\r\n let hammerBtn = this.node.parent.getChildByName(\"Bottom\").getChildByName(\"destroyBtn\");\r\n let magicBtn = this.node.parent.getChildByName(\"Bottom\").getChildByName(\"magicBtn\");\r\n if(data == \"freezeAmount\") freezeBtn.getComponent(\"btnControl\").setTouch(true);\r\n else if(data == \"hammerAmount\") hammerBtn.getComponent(\"btnControl\").setTouch(true); \r\n else if(data == \"magicAmount\") magicBtn.getComponent(\"btnControl\").setTouch(true);\r\n if(data == \"freezeAmount\"){\r\n cc.fx.GameConfig.GM_INFO.freezeAmount += 3;\r\n let propInfo = cc.fx.StorageMessage.getStorage(\"prop\");\r\n propInfo.freezeAmount = cc.fx.GameConfig.GM_INFO.freezeAmount;\r\n propInfo.timestamp = timestamp;\r\n cc.fx.StorageMessage.setStorage(\"prop\",propInfo);\r\n this.node.parent.parent.parent.getComponent(\"SceneManager\").closePropBuy();\r\n setTimeout(() => {\r\n this.iceLabel.string = cc.fx.GameConfig.GM_INFO.freezeAmount.toString();\r\n MiniGameSdk.API.showToast(\"购买冻结时间道具成功\");\r\n }, 200);\r\n\r\n \r\n }\r\n else if(data == \"magicAmount\"){\r\n cc.fx.GameConfig.GM_INFO.magicAmount += 3;\r\n let propInfo = cc.fx.StorageMessage.getStorage(\"prop\");\r\n propInfo.magicAmount = cc.fx.GameConfig.GM_INFO.magicAmount;\r\n propInfo.timestamp = timestamp;\r\n cc.fx.StorageMessage.setStorage(\"prop\",propInfo);\r\n this.node.parent.parent.parent.getComponent(\"SceneManager\").closePropBuy();\r\n setTimeout(() => {\r\n MiniGameSdk.API.showToast(\"购买锤子道具成功\");\r\n this.magicLabel.string = cc.fx.GameConfig.GM_INFO.magicAmount.toString();\r\n }, 200);\r\n \r\n }\r\n else if(data == \"hammerAmount\"){\r\n cc.fx.GameConfig.GM_INFO.hammerAmount += 3;\r\n let propInfo = cc.fx.StorageMessage.getStorage(\"prop\");\r\n propInfo.hammerAmount = cc.fx.GameConfig.GM_INFO.hammerAmount;\r\n propInfo.timestamp = timestamp;\r\n cc.fx.StorageMessage.setStorage(\"prop\",propInfo);\r\n this.node.parent.parent.parent.getComponent(\"SceneManager\").closePropBuy();\r\n setTimeout(() => {\r\n this.hammerLabel.string = cc.fx.GameConfig.GM_INFO.hammerAmount.toString();\r\n MiniGameSdk.API.showToast(\"购买魔法棒道具成功\");\r\n }, 200);\r\n\r\n }\r\n \r\n \r\n\r\n }\r\n\r\n //使用锤子道具\r\n useHammer(){\r\n if(this.node.parent.getChildByName(\"Ice\").active == true || this.hammer == true \r\n || this.magicMask.active== true || this.timeNumber <= 1){\r\n return;\r\n }\r\n let hammerBtn = this.node.parent.getChildByName(\"Bottom\").getChildByName(\"destroyBtn\");\r\n if(hammerBtn.getComponent(\"btnControl\")._touch){\r\n hammerBtn.getComponent(\"btnControl\").setTouch(false);\r\n if(cc.fx.GameConfig.GM_INFO.hammerAmount < 1){\r\n if(cc.fx.GameConfig.GM_INFO.coin < 1500){\r\n MiniGameSdk.API.showToast(\"金币不足,无法购买道具\");\r\n hammerBtn.getComponent(\"btnControl\").setTouch(true);\r\n return;\r\n }\r\n this.node.parent.parent.getChildByName(\"propWindow\").active = true;\r\n this.node.parent.parent.parent.getComponent(\"SceneManager\").openPropBuy(\"hammer\");\r\n }\r\n else{\r\n if(!this.hammer){\r\n const timestamp = Date.now();\r\n this.hammerMask.active = true;\r\n\r\n this.hammer = true;\r\n cc.fx.GameConfig.GM_INFO.hammerAmount -= 1;\r\n if(cc.fx.GameConfig.GM_INFO.hammerAmount < 0) \r\n cc.fx.GameConfig.GM_INFO.hammerAmount = 0;\r\n this.hammerLabel.string = cc.fx.GameConfig.GM_INFO.hammerAmount.toString();\r\n let propInfo = cc.fx.StorageMessage.getStorage(\"prop\");\r\n console.log(\"锤子道具信息:\",propInfo);\r\n propInfo.hammerAmount = cc.fx.GameConfig.GM_INFO.hammerAmount;\r\n propInfo.timestamp = timestamp;\r\n cc.fx.StorageMessage.setStorage(\"prop\",propInfo);\r\n cc.fx.GameTool.setUserProp(2002,cc.fx.GameConfig.GM_INFO.hammerAmount,(data)=>{\r\n })\r\n let data = {\r\n id:\"2002\",\r\n num:-1\r\n }\r\n cc.fx.GameTool.shushu_Track(\"resource_cost\",data);\r\n }\r\n else MiniGameSdk.API.showToast(\"道具使用中,请稍后再试\");\r\n }\r\n\r\n }\r\n\r\n }\r\n \r\n buyMagic(){\r\n if(cc.fx.GameConfig.GM_INFO.coin < 1500){\r\n MiniGameSdk.API.showToast(\"金币不足,无法购买道具\");\r\n return;\r\n }\r\n cc.fx.GameTool.buyProp(2003,this.handleBuySuccess.bind(this,\"magicAmount\"));\r\n }\r\n\r\n buyHammer(){\r\n if(cc.fx.GameConfig.GM_INFO.coin < 1500){\r\n MiniGameSdk.API.showToast(\"金币不足,无法购买道具\");\r\n return;\r\n }\r\n cc.fx.GameTool.buyProp(2002, this.handleBuySuccess.bind(this,\"hammerAmount\"));\r\n }\r\n\r\n buyFreeze(){\r\n if(cc.fx.GameConfig.GM_INFO.coin < 1500){\r\n MiniGameSdk.API.showToast(\"金币不足,无法购买道具\");\r\n return;\r\n }\r\n cc.fx.GameTool.buyProp(2001,this.handleBuySuccess.bind(this,\"freezeAmount\"));\r\n }\r\n\r\n //使用魔法棒随机消除两个方块\r\n useMagic(){\r\n if(this.node.parent.getChildByName(\"Ice\").active == true || this.hammer == true \r\n || this.magicMask.active== true || this.timeNumber <= 1){\r\n return;\r\n }\r\n let magicBtn = this.node.parent.getChildByName(\"Bottom\").getChildByName(\"magicBtn\");\r\n if(magicBtn.getComponent(\"btnControl\")._touch){\r\n magicBtn.getComponent(\"btnControl\").setTouch(false);\r\n if(cc.fx.GameConfig.GM_INFO.magicAmount < 1){\r\n if(cc.fx.GameConfig.GM_INFO.coin < 1500){\r\n MiniGameSdk.API.showToast(\"金币不足,无法购买道具\");\r\n magicBtn.getComponent(\"btnControl\").setTouch(true);\r\n return;\r\n }\r\n this.node.parent.parent.getChildByName(\"propWindow\").active = true;\r\n this.node.parent.parent.parent.getComponent(\"SceneManager\").openPropBuy(\"magic\");\r\n // MiniGameSdk.API.showToast(\"魔法棒数量不足,自动购买魔法棒\");\r\n }\r\n else{\r\n const timestamp = Date.now();\r\n this.magicMask.active = true;\r\n setTimeout(() => {\r\n this.magicMask.active = false;\r\n magicBtn.getComponent(\"btnControl\").setTouch(true);\r\n }, 1000);\r\n \r\n cc.fx.GameConfig.GM_INFO.magicAmount -= 1;\r\n if(cc.fx.GameConfig.GM_INFO.magicAmount < 0) \r\n cc.fx.GameConfig.GM_INFO.magicAmount = 0;\r\n this.magicLabel.string = cc.fx.GameConfig.GM_INFO.magicAmount.toString();\r\n let propInfo = cc.fx.StorageMessage.getStorage(\"prop\");\r\n propInfo.magicAmount = cc.fx.GameConfig.GM_INFO.magicAmount;\r\n propInfo.timestamp = timestamp;\r\n cc.fx.StorageMessage.setStorage(\"prop\",propInfo);\r\n cc.fx.GameTool.setUserProp(2003,cc.fx.GameConfig.GM_INFO.magicAmount,(data)=>{\r\n })\r\n let data = {\r\n id:\"2003\",\r\n num:-1\r\n }\r\n cc.fx.GameTool.shushu_Track(\"resource_cost\",data);\r\n let nomalArray = [];\r\n // this.magicBtn.node.active = false;\r\n for(let i =0; i 1){\r\n nomalArray = cc.fx.GameTool.shuffleArray(nomalArray);\r\n nomalArray[0].getComponent(\"Block\").eliminate();\r\n let time = 0;\r\n if(nomalArray[0].getComponent(\"Block\").type == 1 || nomalArray[0].getComponent(\"Block\").type == 9){\r\n time = 200;\r\n }\r\n if(time > 0){\r\n setTimeout(() => {\r\n nomalArray[1].getComponent(\"Block\").eliminate();\r\n }, time);\r\n return;\r\n }\r\n else{\r\n nomalArray[1].getComponent(\"Block\").eliminate();\r\n return;\r\n }\r\n }\r\n else if(nomalArray.length == 1){\r\n nomalArray[0].getComponent(\"Block\").eliminate();\r\n let time = 0;\r\n if(nomalArray[0].getComponent(\"Block\").type == 1 || nomalArray[0].getComponent(\"Block\").type == 9){\r\n time = 200;\r\n }\r\n setTimeout(() => {\r\n if(this.freezeArray.length == 0 && this.loackArray.length == 0){\r\n // console.log(\"只剩下一个块道具使用完毕\");\r\n }\r\n else{\r\n if(this.loackArray.length != 0){\r\n // console.log(\"消除一个普通块后,消除一个带锁块\");\r\n this.loackArray[0].getComponent(\"Block\").eliminate();\r\n return;\r\n }\r\n else if(this.freezeArray.length!= 0){\r\n // console.log(\"消除一个普通块后,消除一个冻结块\");\r\n this.freezeArray[0].getComponent(\"Block\").eliminate();\r\n return; \r\n }\r\n }\r\n }, 200+time);\r\n }\r\n else{\r\n let count = 2;\r\n if(this.loackArray.length!= 0){\r\n for(let i=0; i {\r\n if(count != 0){\r\n for(let i=0; i 13){\r\n this.node.scale = 1;\r\n }\r\n\r\n // this.node.scale = 1;\r\n cc.fx.GameConfig.GM_INFO.scale = this.node.scale;\r\n // this.node.scale = 0.5;\r\n // console.log(this.node.scale);\r\n // this.node.scale = 1;\r\n }\r\n\r\n //创建门的粒子特效\r\n createParticle(block,jg){\r\n let particle = cc.instantiate(MapConroler._instance.Block_Prop[9]);\r\n particle.parent = this.node;\r\n particle.zIndex = 1000;\r\n let width = Math.floor(block.width / 120);\r\n let height = Math.floor(block.height / 120);\r\n let name = \"\";\r\n\r\n if(jg == 0 || jg == 1){\r\n let y = block.y + block.height;\r\n let x = block.x - block.width/2;\r\n name = \"top_\" + width + \"_\" + height;\r\n if(jg == 1){\r\n name = \"bot_\" + width + \"_\" + height;\r\n y = block.y;\r\n }\r\n if(block.anchorX == 0.5){\r\n x = block.x;\r\n }\r\n else if(block.anchorX == 0.33){\r\n x = block.x + block.width*(0.5-0.33);\r\n }\r\n else if(block.anchorX == 0.66){\r\n x = block.x + block.width*(0.5-0.66); \r\n }\r\n particle.setPosition(x, y); \r\n } \r\n else if(jg == 2 || jg == 3){\r\n name = \"left_\" + height + \"_\" + width;\r\n let x = block.x - block.width;\r\n let y = block.y + block.height/2;\r\n if(block.anchorX == 0.5){\r\n x = block.x - block.width/2;\r\n }\r\n else if(block.anchorX == 0.33){\r\n x = block.x - block.width*0.33;\r\n }\r\n else if(block.anchorX == 0.66){\r\n x = block.x + block.width*0.66; \r\n }\r\n if(jg == 3){\r\n name = \"right_\" + height + \"_\" + width;\r\n x = block.x;\r\n if(block.anchorX == 0.5){\r\n x = block.x + block.width/2;\r\n }\r\n else if(block.anchorX == 0.33){\r\n x = block.x + block.width*0.66;\r\n }\r\n else if(block.anchorX == 0.66){\r\n x = block.x + block.width*0.33; \r\n }\r\n }\r\n\r\n particle.setPosition(x, y); \r\n } \r\n\r\n let particleNode = particle.getChildByName(name);\r\n let color = block.getComponent(\"Block\").color - 1;\r\n\r\n particleNode.getComponent(cc.ParticleSystem).spriteFrame = particle.getComponent(\"Reduce\").Block_Color[color];\r\n particleNode.active = true;\r\n setTimeout(() => {\r\n cc.tween(particle)\r\n .to(2, {opacity: 0})\r\n .call(() => {\r\n particle.destroy(); \r\n })\r\n .start();\r\n }, 1200);\r\n }\r\n\r\n removeOneBlock() {\r\n // 移除所有方块\r\n for(let i =0 ; i = [];\r\n\r\n @property({ type: [cc.Prefab], tooltip: \"方块道具数组\" })\r\n Block_Prop: Array = [];\r\n\r\n @property(cc.Prefab)\r\n MapBlockPrefab: cc.Prefab = null;\r\n\r\n @property({ type: [cc.SpriteAtlas], tooltip: \"方块颜色\" })\r\n Block_Color: Array = [];\r\n\r\n\r\n @property({ type: [cc.Prefab], tooltip: \"墙壁数组\" })\r\n Wall_Prefab: Array = [];\r\n\r\n\r\n\r\n @property(cc.Prefab)\r\n wallTurnPrefab: cc.Prefab = null;\r\n\r\n @property(cc.Button)\r\n timeBtn: cc.Button = null;\r\n @property(cc.Button)\r\n destroyBtn: cc.Button = null;\r\n @property(cc.Button)\r\n magicBtn: cc.Button = null;\r\n\r\n @property(cc.Node)\r\n mask: cc.Node = null;\r\n\r\n @property(cc.Label)\r\n iceLabel: cc.Label = null;\r\n @property(cc.Label)\r\n hammerLabel: cc.Label = null;\r\n @property(cc.Label)\r\n magicLabel: cc.Label = null;\r\n\r\n @property(cc.Node)\r\n magicMask: cc.Node = null;\r\n\r\n @property(cc.Node)\r\n hammerMask: cc.Node = null;\r\n\r\n @property(cc.Node)\r\n freezeMask: cc.Node = null;\r\n\r\n\r\n @property(cc.Node)\r\n coinPop: cc.Node = null;\r\n\r\n timeLabel: cc.Node = null;\r\n levelLabel: cc.Node = null;\r\n\r\n new_mode: number = 0;\r\n mapWidth: number = 0;\r\n mapHeight: number = 0;\r\n wallNum: number = 0;\r\n blockNum: number = 0;\r\n mapBlocksWall: any; //地图的所有底块\r\n mapInfo: any; //地图除了底块的其他信息\r\n blocks: any; //方块数组\r\n wallInfo: any; //墙壁数组\r\n wallArray: any; //\r\n openWall: any; //开关墙数组\r\n freezeWall: any; //冻结墙数组\r\n riseFallBlcok: any; //升降地块数组\r\n scheduleCallback: any;//倒计时用\r\n homeCanTouch: boolean = true;//按钮可用状态\r\n againCanTouch: boolean = true;//重玩按钮可以用状态\r\n gameOver: boolean = false;//游戏结束状态\r\n gameWin: boolean = false;//游戏胜利状态\r\n gameStart: boolean = false;//游戏开始状态\r\n timeNumber: number = 0; //游戏时间 用于倒计时\r\n count_Time: number = 0; //用于统计总游戏时长\r\n add_Time: number = 0; //复活时间\r\n mapBlockArray: any; //地图的所有格子状态存储\r\n pause: boolean = false;//暂停状态\r\n hammer: boolean = false;//锤子状态\r\n freezeArray: any; //冻结\r\n loackArray: any; //上锁\r\n particleEffects: cc.ParticleAsset[];\r\n // leftDoors: []; //左门\r\n rightDoors: any; //右门\r\n topDoors: any; //上门\r\n bottomDoors: any; //下门\r\n leftDoors: any;\r\n\r\n\r\n // mapInfo: number[][] = [];\r\n\r\n onLoad() {\r\n\r\n cc.fx.GameConfig.GM_INFO.review = 0;\r\n cc.fx.GameConfig.GM_INFO.gameState = true;\r\n this.mask.opacity = 0;\r\n this.node.getChildByName(\"Adhesive\").zIndex = 500;\r\n cc.game.setFrameRate(63);\r\n cc.fx.AudioManager._instance.playEffect(\"zhuan2\", null);\r\n this.node.parent.parent.parent.getChildByName(\"zhuanchang\").active = true;\r\n this.node.parent.parent.parent.getChildByName(\"zhuanchang\").getComponent(sp.Skeleton).setAnimation(1, \"down\", false);\r\n this.node.parent.parent.parent.getChildByName(\"zhuanchang\").getComponent(sp.Skeleton).setCompleteListener((entry) => {\r\n if (entry.animation.name === \"down\") {\r\n // 动画播放结束后执行的逻辑\r\n this.node.parent.parent.parent.getChildByName(\"zhuanchang\").active = false;\r\n }\r\n });\r\n this.blocks = [];\r\n this.leftDoors = []; //左门\r\n this.rightDoors = []; //右门\r\n this.topDoors = []; //上门\r\n this.bottomDoors = []; //下门\r\n this.gameWin = false;\r\n this.gameOver = false;\r\n this.gameStart = false;\r\n this.homeCanTouch = true;\r\n this.againCanTouch = true;\r\n this.new_mode = 0;\r\n\r\n this.iceLabel.string = cc.fx.GameConfig.GM_INFO.freezeAmount.toString();\r\n this.hammerLabel.string = cc.fx.GameConfig.GM_INFO.hammerAmount.toString();\r\n this.magicLabel.string = cc.fx.GameConfig.GM_INFO.magicAmount.toString();\r\n\r\n // cc.game.addPersistRootNode(this.node);\r\n MapConroler._instance = this;\r\n }\r\n\r\n start() {\r\n setTimeout(() => {\r\n cc.director.preloadScene(\"HomeScene\", (err, asset) => {\r\n if (err) {\r\n console.error('动态加载 HomeScene 失败:', err);\r\n return;\r\n }\r\n });\r\n }, 1000);\r\n // console.log(\"进入GameScene\");\r\n this.Block_Array = GameManager._instance.Block_Array;\r\n this.Wall_Prefab = GameManager._instance.Wall_Prefab;\r\n this.Block_Color = GameManager._instance.Block_Color;\r\n // this.particleEffects = GameManager._instance.particleEffects;\r\n\r\n this.initMap();\r\n\r\n }\r\n\r\n startUpdate() {\r\n if (this.gameStart == false) {\r\n this.gameStart = true;\r\n //发送数数事件——进入关卡\r\n console.log(\"准备进入下一关,发送下一关进入\");\r\n cc.fx.GameTool.shushu_Track(\"enter_stage\");\r\n this.startTimeCutDown();\r\n for (let i = 0; i < this.blocks.length; i++) {\r\n if (this.blocks[i].getComponent(\"Block\").type == 6) {\r\n this.blocks[i].getChildByName(\"boom\").getComponent(\"Boom\").startBoom();\r\n }\r\n }\r\n }\r\n }\r\n\r\n initMap() {\r\n // this.node.getChildByName(\"Wall\").zIndex = 10;\r\n this.timeLabel = this.node.parent.getChildByName(\"Top\").getChildByName(\"time\");\r\n this.levelLabel = this.node.parent.getChildByName(\"Top\").getChildByName(\"level\");\r\n this.timeNumber = cc.fx.GameConfig.LEVEL_INFO[0].time;\r\n this.count_Time = 0;\r\n this.add_Time = 0;\r\n NumberToImage.getTimeMargin(this.timeNumber, 50, \"time_\", this.timeLabel)\r\n // var timeTemp = cc.fx.GameTool.getTimeMargin(this.timeNumber);\r\n // this.timeLabel.string = timeTemp.toString();\r\n NumberToImage.numberToImageNodes((cc.fx.GameConfig.GM_INFO.level + 1), 50, 20, \"level_\", this.levelLabel, false)\r\n\r\n //this.startTimeCutDown();\r\n\r\n this.mapWidth = cc.fx.GameConfig.LEVEL_INFO[0].map[0];\r\n this.mapHeight = cc.fx.GameConfig.LEVEL_INFO[0].map[1];\r\n let gap = cc.fx.GameConfig.LEVEL_INFO[0].gap;\r\n let risefall = cc.fx.GameConfig.LEVEL_INFO[0].risefall;\r\n\r\n this.pause = false;\r\n this.hammer = false;\r\n this.wallNum = 0;\r\n this.setMapInfo();\r\n this.blocks = [];\r\n this.mapBlocksWall = [];\r\n this.mapInfo = [];\r\n this.wallInfo = [];\r\n this.openWall = [];\r\n this.wallArray = [];\r\n this.freezeWall = [];\r\n this.riseFallBlcok = [];\r\n this.mapBlockArray = [];\r\n this.freezeArray = [];\r\n this.loackArray = [];\r\n\r\n\r\n let startX = this.mapWidth % 2 == 0 ? -(this.mapWidth - 1) * 60 : -(this.mapWidth - 1) * 60;\r\n let startY = this.mapHeight % 2 == 0 ? -(this.mapHeight - 1) * 60 : -(this.mapHeight - 1) * 60;\r\n // startX =(this.mapWidth-1)*60 + 60;\r\n // startY =-(this.mapHeight-1)*60 - 60;\r\n\r\n for (let i = 0; i < this.mapWidth; i++) {\r\n this.mapBlocksWall[i] = [];\r\n\r\n for (let j = 0; j < this.mapHeight; j++) {\r\n let block = cc.instantiate(this.MapBlockPrefab);\r\n block.parent = this.node.getChildByName(\"mapBlock\");\r\n block.getComponent(\"MapBlock\").init(i, j);\r\n // block.getChildByName(\"num\").getComponent(cc.Label).string = i + \":\" + j;\r\n block.setPosition(cc.v2(startX + i * 120, startY + j * 120))\r\n if (risefall != null) {\r\n if (this.mapRiseFall(cc.v2(i, j), risefall, block)) {\r\n this.riseFallBlcok.push(block);\r\n }\r\n }\r\n if (gap != null) {\r\n if (!this.mapGap(cc.v2(i, j), gap) || i == 0 || i == this.mapWidth - 1\r\n || j == 0 || j == this.mapHeight - 1) {\r\n block.opacity = 254;\r\n block.removeComponent(cc.Sprite);\r\n block.removeAllChildren();\r\n this.wallInfo.push(block);\r\n }\r\n else this.mapInfo.push(block);\r\n }\r\n else {\r\n if (i == 0 || i == this.mapWidth - 1\r\n || j == 0 || j == this.mapHeight - 1) {\r\n block.opacity = 254;\r\n block.removeComponent(cc.Sprite);\r\n block.removeAllChildren();\r\n this.wallInfo.push(block);\r\n }\r\n else this.mapInfo.push(block);\r\n }\r\n\r\n this.mapBlocksWall[i].push(block);\r\n }\r\n }\r\n\r\n this.wallInit();\r\n this.blockInit();\r\n\r\n }\r\n\r\n //创建方块\r\n // ... 已有代码 ...\r\n\r\n //创建方块\r\n // ... 已有代码 ...\r\n\r\n\r\n\r\n\r\n blockInit() {\r\n let blockArray = cc.fx.GameConfig.BLOCK_INFO[0];\r\n blockArray = this.sortBlock(blockArray);\r\n console.log(\"创建方块\", blockArray);\r\n let index = 0; // 当前要创建的方块索引\r\n let BLOCKS_PER_FRAME = 1; // 初始每帧创建的方块数量\r\n const MAX_PER_FRAME = 10; // 每帧最大创建数量\r\n const MIN_PER_FRAME = 1; // 每帧最小创建数量\r\n\r\n const createBlocks = () => {\r\n const startTime = performance.now();\r\n for (let i = 0; i < BLOCKS_PER_FRAME && index < blockArray.length; i++) {\r\n let blockInfo = blockArray[index];\r\n // 缓存 Block_Array 访问\r\n const blockPrefab = this.Block_Array[blockInfo.block];\r\n let block = cc.instantiate(blockPrefab);\r\n block.parent = this.node;\r\n block.setPosition(cc.v2(blockInfo.position.x, blockInfo.position.y));\r\n if (blockInfo.block != 23) {\r\n this.blockNum += 1;\r\n this.blocks.push(block);\r\n if (blockInfo.type == 1) {\r\n let info = {\r\n id: blockInfo.id + 1,\r\n block: blockInfo.block,\r\n color: blockInfo.stacking,\r\n type: 10,\r\n position: blockInfo.position,\r\n stacking: blockInfo.color\r\n };\r\n // 缓存 Block_Array 访问\r\n const blockUpPrefab = this.Block_Array[info.block];\r\n let blockUp = cc.instantiate(blockUpPrefab);\r\n blockUp.parent = this.node;\r\n blockUp.setPosition(cc.v2(info.position.x, info.position.y));\r\n\r\n this.blocks.push(blockUp);\r\n block.getComponent(\"Block\").init(blockInfo, null, null, blockUp);\r\n blockUp.getComponent(\"Block\").init(info, null, null, block);\r\n\r\n this.blockNum += 1;\r\n } else if (blockInfo.type == 9) {\r\n if (blockInfo.adhesiveTime < 2) {\r\n index++;\r\n continue;\r\n }\r\n index++;\r\n let info = blockArray[index];\r\n // 缓存 Block_Array 访问\r\n const blockUpPrefab = this.Block_Array[info.block];\r\n let blockUp = cc.instantiate(blockUpPrefab);\r\n blockUp.parent = this.node;\r\n blockUp.setPosition(cc.v2(info.position.x, info.position.y));\r\n\r\n this.blocks.push(blockUp);\r\n block.getComponent(\"Block\").init(blockInfo, null, null, blockUp, false);\r\n setTimeout(() => {\r\n blockUp.getComponent(\"Block\").init(info, null, null, block, true);\r\n }, 100);\r\n this.blockNum += 1;\r\n } else {\r\n block.getComponent(\"Block\").init(blockInfo);\r\n }\r\n }\r\n else {\r\n block.getComponent(\"Barrier\").init(blockInfo);\r\n }\r\n index++;\r\n }\r\n const endTime = performance.now();\r\n const frameTime = endTime - startTime;\r\n // 如果当前帧执行时间过长,减少每帧创建数量\r\n if (frameTime > 16) {\r\n BLOCKS_PER_FRAME = Math.max(BLOCKS_PER_FRAME - 1, MIN_PER_FRAME);\r\n } else {\r\n BLOCKS_PER_FRAME = Math.min(BLOCKS_PER_FRAME + 1, MAX_PER_FRAME);\r\n }\r\n\r\n // 如果还有方块未创建,下一帧继续创建\r\n if (index < blockArray.length) {\r\n // 使用 scheduleOnce 在下一帧执行 createBlocks\r\n this.scheduleOnce(() => {\r\n createBlocks();\r\n }, 0);\r\n } else {\r\n\r\n }\r\n };\r\n\r\n // 开始分帧创建方块\r\n createBlocks();\r\n }\r\n //给创建方块排序,用来降低drawcall 合批\r\n sortBlock(allBlocks: { color: number; block: number; type: number }[]) {\r\n return allBlocks.sort((a, b) => {\r\n // 先处理 type 为 1 的情况,将其放到最后\r\n if (a.type === 1 && b.type !== 1) {\r\n return 1;\r\n }\r\n if (a.type !== 1 && b.type === 1) {\r\n return -1;\r\n }\r\n\r\n // 对 type 不为 0 的元素按 type 排序\r\n if (a.type !== 0 && b.type !== 0) {\r\n return a.type - b.type;\r\n }\r\n if (a.type !== 0 && b.type === 0) {\r\n return 1;\r\n }\r\n if (a.type === 0 && b.type !== 0) {\r\n return -1;\r\n }\r\n\r\n // 再处理 block 为 23 的情况,将其放到最前面\r\n if (a.block === 23 && b.block !== 23) {\r\n return -1;\r\n }\r\n if (a.block !== 23 && b.block === 23) {\r\n return 1;\r\n }\r\n\r\n // 其余按 color 升序排列\r\n return a.color - b.color;\r\n });\r\n }\r\n\r\n\r\n //创建墙壁\r\n\r\n wallInit() {\r\n let index = 0; // 当前要创建的墙壁索引\r\n let WALLS_PER_FRAME = 1; // 初始每帧创建的墙壁数量\r\n const MAX_PER_FRAME = 10; // 每帧最大创建数量\r\n const MIN_PER_FRAME = 1; // 每帧最小创建数量\r\n\r\n const createWalls = () => {\r\n const startTime = performance.now();\r\n for (let i = 0; i < WALLS_PER_FRAME && index < this.wallInfo.length; i++) {\r\n let block = this.wallInfo[index];\r\n let dir = this.getWllDiraction(\"wall\", cc.v2(block.getComponent(\"MapBlock\").posX, block.getComponent(\"MapBlock\").posY));\r\n if (dir != null) {\r\n this.createWall(dir, block);\r\n }\r\n index++;\r\n }\r\n const endTime = performance.now();\r\n const frameTime = endTime - startTime;\r\n // 如果当前帧执行时间过长,减少每帧创建数量\r\n if (frameTime > 16) {\r\n WALLS_PER_FRAME = Math.max(WALLS_PER_FRAME - 1, MIN_PER_FRAME);\r\n } else {\r\n WALLS_PER_FRAME = Math.min(WALLS_PER_FRAME + 1, MAX_PER_FRAME);\r\n }\r\n\r\n // 如果还有墙壁未创建,下一帧继续创建\r\n if (index < this.wallInfo.length) {\r\n this.scheduleOnce(() => {\r\n createWalls();\r\n }, 0);\r\n } else {\r\n // 所有墙壁创建完成后,创建拐角节点\r\n this.createCornerNodes();\r\n }\r\n };\r\n\r\n // 开始分帧创建墙壁\r\n createWalls();\r\n }\r\n\r\n // ... 已有代码 ...\r\n\r\n getWllDiraction(type, pointA) {\r\n let dir = [];\r\n let pointB = cc.v2(pointA.x + 1, pointA.y);\r\n let pointC = cc.v2(pointA.x - 1, pointA.y);\r\n let pointD = cc.v2(pointA.x, pointA.y + 1);\r\n let pointE = cc.v2(pointA.x, pointA.y - 1);\r\n let opacity = 0;\r\n if (type == \"wall\") opacity = 255;\r\n if (type == \"turn\") opacity = 250;\r\n\r\n if (pointB.x < this.mapWidth) {\r\n if (this.mapBlocksWall[pointB.x][pointB.y].opacity == opacity) {\r\n if (type == \"turn\" && this.mapBlocksWall[pointB.x][pointB.y].getComponent(\"MapBlock\").direction == \"right\") {\r\n\r\n }\r\n else dir.push(\"right\");\r\n }\r\n }\r\n if (pointC.x >= 0) {\r\n if (this.mapBlocksWall[pointC.x][pointC.y].opacity == opacity) {\r\n if (type == \"turn\" && this.mapBlocksWall[pointC.x][pointC.y].getComponent(\"MapBlock\").direction == \"left\") {\r\n\r\n }\r\n else dir.push(\"left\");\r\n }\r\n }\r\n if (pointD.y < this.mapHeight) {\r\n if (this.mapBlocksWall[pointD.x][pointD.y].opacity == opacity) {\r\n if (type == \"turn\" && this.mapBlocksWall[pointD.x][pointD.y].getComponent(\"MapBlock\").direction == \"up\") {\r\n\r\n }\r\n else dir.push(\"up\");\r\n }\r\n }\r\n if (pointE.y >= 0) {\r\n if (this.mapBlocksWall[pointE.x][pointE.y].opacity == opacity) {\r\n if (type == \"turn\" && this.mapBlocksWall[pointE.x][pointE.y].getComponent(\"MapBlock\").direction == \"down\") {\r\n\r\n }\r\n else dir.push(\"down\");\r\n }\r\n }\r\n if (dir.length > 2) {\r\n\r\n return null;\r\n }\r\n if (dir.length == 1) {\r\n if (type == \"wall\")\r\n return dir[0];\r\n else\r\n return null;\r\n }\r\n else if (dir.length == 2) {\r\n return dir[0] + dir[1];\r\n }\r\n }\r\n\r\n createCornerNodes() {\r\n // 定义拐角位置\r\n for (let i = 0; i < this.wallInfo.length; i++) {\r\n let block = this.wallInfo[i];\r\n if (block.opacity != 250) {\r\n let dir = this.getWllDiraction(\"turn\", cc.v2(block.getComponent(\"MapBlock\").posX, block.getComponent(\"MapBlock\").posY));\r\n if (dir != null) {\r\n this.createTurn(dir, block, block.getComponent(\"MapBlock\").posX, block.getComponent(\"MapBlock\").posY);\r\n }\r\n }\r\n\r\n }\r\n\r\n }\r\n\r\n createWall(direction, node) {\r\n let wall = null;\r\n node.getComponent(\"MapBlock\").setDiraction(direction);\r\n switch (direction) {\r\n case \"right\":\r\n node.opacity = 250;\r\n wall = cc.instantiate(this.Wall_Prefab[4]);\r\n this.leftDoors.push(wall);\r\n // wall.parent = this.node.getChildByName(\"Wall\");\r\n wall.parent = this.node;\r\n wall.setPosition(cc.v2(node.x, node.y));\r\n node.opacity = 250;\r\n wall.getChildByName(\"wall\").getComponent(\"Wall\").init(null, node.getComponent(\"MapBlock\").posX, node.getComponent(\"MapBlock\").posY, direction);\r\n //wall.getChildByName(\"wall\").getChildByName(\"num\").getComponent(cc.Label).string = this.wallNum.toString();\r\n this.setDoorInfo(wall.getChildByName(\"wall\"));\r\n this.wallNum += 1;\r\n if (wall.getChildByName(\"wall\").getComponent(\"Wall\").special == 2)\r\n this.openWall.push(wall);\r\n else if (wall.getChildByName(\"wall\").getComponent(\"Wall\").special == 3)\r\n this.freezeWall.push(wall);\r\n\r\n break;\r\n case \"left\":\r\n node.opacity = 250;\r\n wall = cc.instantiate(this.Wall_Prefab[3]);\r\n // wall.parent = this.node.getChildByName(\"Wall\");\r\n this.rightDoors.push(wall);\r\n wall.parent = this.node;\r\n wall.setPosition(cc.v2(node.x, node.y));\r\n wall.getChildByName(\"wall\").getComponent(\"Wall\").init(null, node.getComponent(\"MapBlock\").posX, node.getComponent(\"MapBlock\").posY, direction);\r\n this.setDoorInfo(wall.getChildByName(\"wall\"));\r\n //wall.getChildByName(\"wall\").getChildByName(\"num\").getComponent(cc.Label).string = this.wallNum.toString();\r\n this.wallNum += 1;\r\n if (wall.getChildByName(\"wall\").getComponent(\"Wall\").special == 2)\r\n this.openWall.push(wall);\r\n else if (wall.getChildByName(\"wall\").getComponent(\"Wall\").special == 3)\r\n this.freezeWall.push(wall);\r\n break;\r\n case \"up\":\r\n node.opacity = 250;\r\n wall = cc.instantiate(this.Wall_Prefab[5]);\r\n\r\n this.topDoors.push(wall);\r\n // wall.parent = this.node.getChildByName(\"Wall\");\r\n wall.parent = this.node;\r\n wall.setPosition(cc.v2(node.x, node.y));\r\n\r\n wall.getChildByName(\"wall\").getComponent(\"Wall\").init(null, node.getComponent(\"MapBlock\").posX, node.getComponent(\"MapBlock\").posY, direction);\r\n this.setDoorInfo(wall.getChildByName(\"wall\"));\r\n //wall.getChildByName(\"wall\").getChildByName(\"num\").getComponent(cc.Label).string = this.wallNum.toString();\r\n this.wallNum += 1;\r\n if (wall.getChildByName(\"wall\").getComponent(\"Wall\").special == 2)\r\n this.openWall.push(wall);\r\n else if (wall.getChildByName(\"wall\").getComponent(\"Wall\").special == 3)\r\n this.freezeWall.push(wall);\r\n break;\r\n case \"down\":\r\n node.opacity = 250;\r\n wall = cc.instantiate(this.Wall_Prefab[0]);\r\n this.bottomDoors.push(wall);\r\n // wall.parent = this.node.getChildByName(\"Wall\");\r\n wall.parent = this.node;\r\n wall.setPosition(cc.v2(node.x, node.y));\r\n // this.setDoorInfo(wall.getChildByName(\"wall\"));\r\n wall.getChildByName(\"wall\").getComponent(\"Wall\").init(null, node.getComponent(\"MapBlock\").posX, node.getComponent(\"MapBlock\").posY, direction);\r\n this.setDoorInfo(wall.getChildByName(\"wall\"));\r\n //wall.getChildByName(\"wall\").getChildByName(\"num\").getComponent(cc.Label).string = this.wallNum.toString();\r\n this.wallNum += 1;\r\n if (wall.getChildByName(\"wall\").getComponent(\"Wall\").special == 2)\r\n this.openWall.push(wall);\r\n else if (wall.getChildByName(\"wall\").getComponent(\"Wall\").special == 3)\r\n this.freezeWall.push(wall);\r\n break;\r\n case \"upright\": case \"rightup\":\r\n node.opacity = 249;\r\n wall = cc.instantiate(this.Wall_Prefab[7]);\r\n // wall.parent = this.node.getChildByName(\"Wall\");\r\n wall.parent = this.node;\r\n wall.setPosition(cc.v2(node.x, node.y));\r\n wall.children[1].getComponent(\"Wall\").init(null, node.getComponent(\"MapBlock\").posX, node.getComponent(\"MapBlock\").posY, direction);\r\n wall.children[2].getComponent(\"Wall\").init(null, node.getComponent(\"MapBlock\").posX, node.getComponent(\"MapBlock\").posY, direction);\r\n //wall.children[0].getChildByName(\"num\").getComponent(cc.Label).string = this.wallNum.toString();\r\n this.setDoorInfo(wall.children[0]);\r\n this.wallNum += 1;\r\n //wall.children[1].getChildByName(\"num\").getComponent(cc.Label).string = this.wallNum.toString();\r\n this.setDoorInfo(wall.children[1]);\r\n this.wallNum += 1;\r\n\r\n break;\r\n case \"upleft\": case \"leftup\":\r\n node.opacity = 249;\r\n wall = cc.instantiate(this.Wall_Prefab[6]);\r\n // wall.parent = this.node.getChildByName(\"Wall\");\r\n wall.parent = this.node;\r\n wall.setPosition(cc.v2(node.x, node.y));\r\n wall.children[1].getComponent(\"Wall\").init(null, node.getComponent(\"MapBlock\").posX, node.getComponent(\"MapBlock\").posY, direction);\r\n wall.children[2].getComponent(\"Wall\").init(null, node.getComponent(\"MapBlock\").posX, node.getComponent(\"MapBlock\").posY, direction);\r\n //wall.children[0].getChildByName(\"num\").getComponent(cc.Label).string = this.wallNum.toString();\r\n this.setDoorInfo(wall.children[0]);\r\n this.wallNum += 1;\r\n //wall.children[1].getChildByName(\"num\").getComponent(cc.Label).string = this.wallNum.toString();\r\n this.setDoorInfo(wall.children[1]);\r\n this.wallNum += 1;\r\n\r\n break;\r\n case \"downright\": case \"rightdown\":\r\n node.opacity = 249;\r\n wall = cc.instantiate(this.Wall_Prefab[2]);\r\n // wall.parent = this.node.getChildByName(\"Wall\");\r\n wall.parent = this.node;\r\n wall.setPosition(cc.v2(node.x, node.y));\r\n wall.children[1].getComponent(\"Wall\").init(null, node.getComponent(\"MapBlock\").posX, node.getComponent(\"MapBlock\").posY, direction);\r\n wall.children[2].getComponent(\"Wall\").init(null, node.getComponent(\"MapBlock\").posX, node.getComponent(\"MapBlock\").posY, direction);\r\n //wall.children[0].getChildByName(\"num\").getComponent(cc.Label).string = this.wallNum.toString();\r\n this.setDoorInfo(wall.children[0]);\r\n this.wallNum += 1;\r\n //wall.children[1].getChildByName(\"num\").getComponent(cc.Label).string = this.wallNum.toString();\r\n this.setDoorInfo(wall.children[1]);\r\n this.wallNum += 1;\r\n\r\n break;\r\n case \"downleft\": case \"leftdown\":\r\n node.opacity = 249;\r\n wall = cc.instantiate(this.Wall_Prefab[1]);\r\n // wall.parent = this.node.getChildByName(\"Wall\");\r\n wall.parent = this.node;\r\n wall.setPosition(cc.v2(node.x, node.y));\r\n wall.children[1].getComponent(\"Wall\").init(null, node.getComponent(\"MapBlock\").posX, node.getComponent(\"MapBlock\").posY, direction);\r\n wall.children[2].getComponent(\"Wall\").init(null, node.getComponent(\"MapBlock\").posX, node.getComponent(\"MapBlock\").posY, direction);\r\n //wall.children[0].getChildByName(\"num\").getComponent(cc.Label).string = this.wallNum.toString();\r\n this.setDoorInfo(wall.children[0]);\r\n this.wallNum += 1;\r\n //wall.children[1].getChildByName(\"num\").getComponent(cc.Label).string = this.wallNum.toString();\r\n this.setDoorInfo(wall.children[1]);\r\n this.wallNum += 1;\r\n\r\n break;\r\n\r\n }\r\n\r\n\r\n // if(wallTurn){\r\n // wallTurn.getComponent(\"wallTunr\").init(wall);\r\n // }\r\n }\r\n\r\n setDoorInfo(wall) {\r\n let doorInfo = cc.fx.GameConfig.WALL_INFO[0];\r\n\r\n if (doorInfo) {\r\n for (let j = 0; j < doorInfo.length; j++) {\r\n if (doorInfo[j].num == this.wallNum) {\r\n wall.getComponent(\"Wall\").init(doorInfo[j], null, null, null);\r\n this.wallArray.push(wall.parent);\r\n }\r\n }\r\n }\r\n }\r\n\r\n createTurn(direction, node, posX, posY) {\r\n let wall = null;\r\n wall = cc.instantiate(this.wallTurnPrefab);\r\n wall.parent = this.node;\r\n wall.setPosition(cc.v2(node.x, node.y));\r\n switch (direction) {\r\n case \"upright\": case \"rightup\":\r\n wall.angle = 0;\r\n wall.getChildByName(\"icon\").angle = 0;\r\n\r\n break;\r\n case \"upleft\": case \"leftup\":\r\n wall.angle = 90;\r\n wall.getChildByName(\"icon\").angle = -90;\r\n wall.getChildByName(\"icon\").y += 5;\r\n wall.getChildByName(\"icon\").x -= 1.3;\r\n break;\r\n case \"downright\": case \"rightdown\":\r\n wall.angle = 270;\r\n wall.getChildByName(\"icon\").angle = -270;\r\n wall.getChildByName(\"icon\").x += 2.5;\r\n wall.getChildByName(\"icon\").y += 1;\r\n break;\r\n case \"downleft\": case \"leftdown\":\r\n wall.angle = 180;\r\n wall.getChildByName(\"icon\").angle = -180;\r\n wall.getChildByName(\"icon\").x += 4.5;\r\n wall.getChildByName(\"icon\").y += 3.2;\r\n break;\r\n }\r\n\r\n // if(direction == \"rightdown\" || direction == \"downright\") {\r\n // wall.zIndex = 50 + posX - posY*3;\r\n // }\r\n // else \r\n // wall.zIndex = 50 + posX - posY*3;\r\n\r\n if (direction == \"up\" || direction == \"leftup\" || direction == \"upleft\"\r\n ) {\r\n wall.zIndex = 100 + posX - posY * 3;\r\n }\r\n else if (direction == \"rightup\" || direction == \"upright\" || direction == \"rightdown\" || direction == \"downright\" || direction == \"downleft\") {\r\n wall.zIndex = 30 + posX - posY * 3;\r\n }\r\n else if (direction == \"left\" || direction == \"leftdown\") {\r\n wall.zIndex = 70 + posX - posY * 3;\r\n }\r\n else wall.zIndex = 70 + posX - posY * 3;\r\n\r\n // wall.getChildByName(\"num\").angle = -wall.angle;\r\n //wall.getChildByName(\"num\").getComponent(cc.Label).string = direction;\r\n //wall.getChildByName(\"num\").getComponent(cc.Label).string = wall.zIndex+ \"\";\r\n // console.log(posX,posY,wall.zIndex);\r\n // this.wallNum += 1;\r\n // wall.getChildByName(\"num\").getComponent(cc.Label).string = this.wallNum + \"\";\r\n }\r\n\r\n //地图底块缺口判断\r\n mapGap(point, gap) {\r\n for (let i = 0; i < gap.length; i++) {\r\n if (point.x == gap[i].x && point.y == gap[i].y) {\r\n return false;\r\n }\r\n }\r\n return true;\r\n }\r\n\r\n //升降地块判断\r\n mapRiseFall(point, risefall, block) {\r\n for (let i = 0; i < risefall.length; i++) {\r\n if (point.x == risefall[i].pos.x && point.y == risefall[i].pos.y) {\r\n block.getChildByName(\"risefall\").active = true;\r\n block.getChildByName('risefall').getChildByName(\"color\").getComponent(cc.Label).string = risefall[i].color + \"\";\r\n block.getChildByName('risefall').addComponent(cc.BoxCollider);\r\n block.getChildByName('risefall').getComponent(cc.BoxCollider).size = cc.size(110, 110);\r\n return true;\r\n }\r\n }\r\n return false;\r\n }\r\n //升降地块\r\n changeRiseFall(color, down) {\r\n color = color.toString();\r\n for (let i = 0; i < this.riseFallBlcok.length; i++) {\r\n if (color == this.riseFallBlcok[i].getChildByName(\"risefall\").getChildByName(\"color\").getComponent(cc.Label).string) {\r\n if (down) {\r\n this.riseFallBlcok[i].getChildByName(\"risefall\").active = false;\r\n this.riseFallBlcok[i].getChildByName('risefall').removeComponent(cc.BoxCollider);\r\n }\r\n else {\r\n this.riseFallBlcok[i].getChildByName(\"risefall\").active = true;\r\n this.riseFallBlcok[i].getChildByName('risefall').addComponent(cc.BoxCollider);\r\n this.riseFallBlcok[i].getChildByName('risefall').getComponent(cc.BoxCollider).size = cc.size(110, 110);\r\n }\r\n }\r\n\r\n }\r\n }\r\n\r\n\r\n\r\n //查询叠加快id\r\n foundDownBlock(id) {\r\n for (let i = 0; i < this.blocks.length; i++) {\r\n if (this.blocks[i].getComponent(\"Block\").blockId == id) {\r\n return this.blocks[i];\r\n }\r\n }\r\n return null;\r\n }\r\n\r\n //删除块\r\n removeBlock(id) {\r\n for (let i = 0; i < this.blocks.length; i++) {\r\n if (this.blocks[i].getComponent(\"Block\").blockId == id) {\r\n return this.blocks[i];\r\n }\r\n }\r\n return null;\r\n }\r\n\r\n getMinAndMax(block) {\r\n let width = Math.floor(block.width / 120);\r\n let height = Math.floor(block.height / 120);\r\n\r\n let minX = width;\r\n let maxX = this.mapWidth - 2;\r\n let minY = 1;\r\n let maxY = this.mapHeight - 2 - height + 1;\r\n\r\n if (block.name == \"block10\") {\r\n minX = width - 1;\r\n if (this.mapWidth > 3) maxX = maxX - 1;\r\n }\r\n else if (block.name == \"block11\") {\r\n minX = width - 2;\r\n if (this.mapWidth > 3) maxX = maxX - 2;\r\n }\r\n\r\n else if (block.name == \"block14\") {\r\n minX = width - 1;\r\n maxX = maxX - 1;\r\n }\r\n else if (block.name == \"block16\") {\r\n minX = width - 1;\r\n maxX = maxX - 1;\r\n }\r\n else if (block.name == \"block18\") {\r\n minX = width - 1;\r\n maxX = maxX - 1;\r\n }\r\n else if (block.name == \"block21\") {\r\n minX = width - 1;\r\n maxX = maxX - 1;\r\n }\r\n\r\n return { minX: minX, maxX: maxX, minY: minY, maxY: maxY };\r\n }\r\n\r\n //检测落点是否可以消除\r\n checkPass(node, blocks) {\r\n let minAndMax = this.getMinAndMax(node);\r\n let minX = minAndMax.minX;\r\n let maxX = minAndMax.maxX;\r\n let minY = minAndMax.minY;\r\n let maxY = minAndMax.maxY;\r\n\r\n let nodePos = cc.v2(node.getComponent(\"Block\").posX, node.getComponent(\"Block\").posY);\r\n\r\n // 获取地图边界信息\r\n\r\n let allBlocks = [];\r\n for (let i = 0; i < blocks.length; i++) {\r\n allBlocks.push(cc.v2(nodePos.x + blocks[i].x, nodePos.y + blocks[i].y));\r\n }\r\n\r\n // const date1 = new Date().getTime();\r\n // console.log(\"将小块放入数组的时间\",date1);\r\n\r\n let jg = -1;\r\n let pz = 0;\r\n // 获取所有墙壁节点\r\n // let wall = this.node;\r\n let direction = this.checkDiraction(allBlocks, maxX, maxY);\r\n\r\n // 判断方块是否在地图边缘\r\n if (nodePos.x <= minX || direction[0] == true) {\r\n // const date2 = new Date().getTime();\r\n // console.log(\"碰到左边缘\",date2);\r\n pz += 1;\r\n let leftWalls = [];\r\n for (let i = 0; i < this.leftDoors.length; i++) {\r\n let wallLeft = this.leftDoors[i].getChildByName(\"wall\");\r\n let wallPos = cc.v2(wallLeft.getComponent(\"Wall\").posX, wallLeft.getComponent(\"Wall\").posY);\r\n for (let i = 0; i < allBlocks.length; i++) {\r\n if (allBlocks[i].y == wallPos.y && allBlocks[i].x > wallPos.x) {\r\n // console.log(\"id:\",wall.getChildByName(\"num\").getComponent(cc.Label).string);\r\n leftWalls.push(wallLeft);\r\n }\r\n }\r\n }\r\n // console.log(\"得到左边墙壁数组\",date6);\r\n if (leftWalls.length != 0) {\r\n let result = this.detectingBlock(\"left\", node.getComponent(\"Block\").posX, node.getComponent(\"Block\").posY, allBlocks);\r\n if (result == true) result = this.passWall(result, leftWalls, node);\r\n // console.log(\"碰到左边缘结果:\",jg);\r\n if (result) {\r\n\r\n this.blockNum -= 1;\r\n this.special_Treatment(node);\r\n jg = 2;\r\n this.createParticle(node, jg);\r\n return jg;\r\n }\r\n }\r\n }\r\n if (nodePos.x >= maxX || direction[1] == true) {\r\n // const date3 = new Date().getTime();\r\n // console.log(\"碰到右边缘\",date3);\r\n pz += 1;\r\n let rightWalls = [];\r\n for (let i = 0; i < this.rightDoors.length; i++) {\r\n let wallRight = this.rightDoors[i].getChildByName(\"wall\");\r\n let wallPos = cc.v2(wallRight.getComponent(\"Wall\").posX, wallRight.getComponent(\"Wall\").posY);\r\n for (let i = 0; i < allBlocks.length; i++) {\r\n if (allBlocks[i].y == wallPos.y && allBlocks[i].x < wallPos.x) {\r\n // console.log(\"id:\",wall.getChildByName(\"num\").getComponent(cc.Label).string);\r\n rightWalls.push(wallRight);\r\n }\r\n }\r\n }\r\n\r\n if (rightWalls.length != 0) {\r\n let result = this.detectingBlock(\"right\", node.getComponent(\"Block\").posX, node.getComponent(\"Block\").posY, allBlocks);\r\n\r\n if (result == true) result = this.passWall(result, rightWalls, node);\r\n // console.log(\"碰到右边缘结果:\",jg);\r\n if (result) {\r\n\r\n this.blockNum -= 1;\r\n this.special_Treatment(node);\r\n jg = 3;\r\n this.createParticle(node, jg);\r\n return jg;\r\n }\r\n }\r\n\r\n\r\n }\r\n if (nodePos.y <= minY || direction[2] == true) {\r\n pz += 1;\r\n // const date4 = new Date().getTime();\r\n // console.log(\"碰到下边缘\",date4);\r\n let downWalls = [];\r\n for (let i = 0; i < this.topDoors.length; i++) {\r\n let wallBottom = this.topDoors[i].getChildByName(\"wall\");\r\n let wallPos = cc.v2(wallBottom.getComponent(\"Wall\").posX, wallBottom.getComponent(\"Wall\").posY);\r\n for (let i = 0; i < allBlocks.length; i++) {\r\n let luocha = Math.abs(allBlocks[i].y - wallPos.y)\r\n if (allBlocks[i].x == wallPos.x && allBlocks[i].y > wallPos.y && luocha <= node.getComponent(\"Block\").shu) {\r\n // console.log(\"id:\",wall.getChildByName(\"num\").getComponent(cc.Label).string);\r\n downWalls.push(wallBottom);\r\n }\r\n }\r\n }\r\n\r\n if (downWalls.length != 0) {\r\n let result = this.detectingBlock(\"down\", node.getComponent(\"Block\").posX, node.getComponent(\"Block\").posY, allBlocks);\r\n if (result == true) result = this.passWall(result, downWalls, node);\r\n // console.log(\"碰到下边缘结果:\",jg);\r\n if (result) {\r\n\r\n this.blockNum -= 1;\r\n this.special_Treatment(node);\r\n jg = 1;\r\n this.createParticle(node, jg);\r\n return jg;\r\n }\r\n }\r\n\r\n\r\n }\r\n if (nodePos.y >= maxY || direction[3] == true) {\r\n pz += 1;\r\n // const date5 = new Date().getTime();\r\n // console.log(\"碰到上边缘\",date5);\r\n let upWalls = [];\r\n for (let i = 0; i < this.bottomDoors.length; i++) {\r\n let wallTop = this.bottomDoors[i].getChildByName(\"wall\");\r\n let wallPos = cc.v2(wallTop.getComponent(\"Wall\").posX, wallTop.getComponent(\"Wall\").posY);\r\n for (let i = 0; i < allBlocks.length; i++) {\r\n let luocha = Math.abs(allBlocks[i].y - wallPos.y)\r\n if (allBlocks[i].x == wallPos.x && allBlocks[i].y < wallPos.y && luocha <= node.getComponent(\"Block\").shu) {\r\n upWalls.push(wallTop);\r\n }\r\n }\r\n }\r\n\r\n if (upWalls.length != 0) {\r\n let result = this.detectingBlock(\"up\", node.getComponent(\"Block\").posX, node.getComponent(\"Block\").posY, allBlocks);\r\n if (result == true) result = this.passWall(result, upWalls, node);\r\n // console.log(\"碰到上边缘结果:\",result);\r\n if (result) {\r\n\r\n this.blockNum -= 1;\r\n this.special_Treatment(node);\r\n jg = 0;\r\n this.createParticle(node, jg);\r\n return jg;\r\n }\r\n }\r\n\r\n }\r\n if (pz == 0) jg = -1;\r\n // const date10 = new Date().getTime();\r\n // console.log(\"所有检测结束耗时\",date10,jg);\r\n return jg;\r\n }\r\n\r\n changeState() {\r\n if (this.openWall.length != 0) {\r\n for (let i = 0; i < this.openWall.length; i++) {\r\n this.openWall[i].getChildByName(\"wall\").getComponent(\"Wall\").changeLock();\r\n }\r\n }\r\n\r\n if (this.freezeWall.length != 0) {\r\n for (let i = 0; i < this.freezeWall.length; i++) {\r\n this.freezeWall[i].getChildByName(\"wall\").getComponent(\"Wall\").changeFreeze();\r\n }\r\n }\r\n }\r\n\r\n //检测是否可以通过门\r\n passWall(jg, wallArray, node) {\r\n for (let i = 0; i < wallArray.length; i++) {\r\n if (wallArray[i].getComponent(\"Wall\").special == 2) {\r\n console.log(\"尝试通过开关门:\", wallArray[i].getComponent(\"Wall\").open);\r\n }\r\n if (wallArray[i].getComponent(\"Wall\").special == 2 && wallArray[i].getComponent(\"Wall\").open == false) {\r\n jg = false;\r\n break;\r\n }\r\n //console.log(wallArray[i].getChildByName(\"wall\").getComponent(\"Wall\").color,node.getComponent(\"Block\").color)\r\n if (wallArray[i].getComponent(\"Wall\").color != node.getComponent(\"Block\").color) {\r\n\r\n jg = false;\r\n break;\r\n }\r\n if (node.getComponent(\"Block\").type == 5) {\r\n if (wallArray[i].getComponent(\"Wall\").special != 1) {\r\n jg = false;\r\n break;\r\n }\r\n }\r\n }\r\n if (jg == true && node.getComponent(\"Block\").type == 5) {\r\n for (let j = 0; j < wallArray.length; j++) {\r\n if (wallArray[j].getComponent(\"Wall\").special == 1 && wallArray[j].getComponent(\"Wall\").wall_Info.length != 0) {\r\n wallArray[j].getComponent(\"Wall\").playStarDoor();\r\n }\r\n }\r\n }\r\n // const date8 = new Date().getTime();\r\n // console.log(\"检测颜色是否能够通过门\",date8);\r\n return jg;\r\n }\r\n\r\n //检测方块和门中间有没有夹杂其他块\r\n detectingBlock(direction, posX, posY, blocks) {\r\n let jg = true;\r\n let id = \"\";\r\n if (blocks.length > 0) {\r\n for (let i = 0; i < blocks.length; i++) {\r\n let pos = blocks[i];\r\n let x = pos.x;\r\n let y = pos.y;\r\n id = this.mapBlocksWall[x][y].getComponent(\"MapBlock\").block_Id;\r\n jg = this.checkAllDirections(id, direction, x, y);\r\n if (!jg) {\r\n // console.log(\"方向检测没过\");\r\n i = 1000000;\r\n return jg;\r\n }\r\n }\r\n }\r\n // const date7 = new Date().getTime();\r\n // console.log(\"方向检测通过\",date7,jg);\r\n return jg;\r\n }\r\n\r\n //检测物体各方向是否有别的物块,防止碰到墙壁了但是是凹凸形状,墙与块之间有阻挡物块\r\n checkAllDirections(id, direction, x, y) {\r\n let jg = true;\r\n\r\n if (direction == \"left\") {\r\n if (this.mapBlocksWall[x - 1][y].getComponent(\"MapBlock\").block_Id != \"\" && this.mapBlocksWall[x - 1][y].getComponent(\"MapBlock\").block_Id != \"Wall\"\r\n && this.mapBlocksWall[x - 1][y].getComponent(\"MapBlock\").block_Id != id) {\r\n // console.log(\"左侧有物体\")\r\n jg = false;\r\n return jg;\r\n }\r\n if (this.mapBlocksWall[x - 1][y].opacity == 249) {\r\n jg = false;\r\n return jg;\r\n }\r\n if ((x - 2) >= 0) {\r\n if (this.mapBlocksWall[x - 2][y].getComponent(\"MapBlock\").block_Id != \"\" && this.mapBlocksWall[x - 2][y].getComponent(\"MapBlock\").block_Id != \"Wall\"\r\n && this.mapBlocksWall[x - 2][y].getComponent(\"MapBlock\").block_Id != id) {\r\n // console.log(\"左侧有物体\")\r\n jg = false;\r\n return jg;\r\n }\r\n if (this.mapBlocksWall[x - 2][y].opacity == 249) {\r\n jg = false;\r\n return jg;\r\n }\r\n }\r\n }\r\n else if (direction == \"right\") {\r\n if (this.mapBlocksWall[x + 1][y].getComponent(\"MapBlock\").block_Id != \"\" && this.mapBlocksWall[x + 1][y].getComponent(\"MapBlock\").block_Id != \"Wall\"\r\n && this.mapBlocksWall[x + 1][y].getComponent(\"MapBlock\").block_Id != id) {\r\n // console.log(\"右侧有物体\")\r\n jg = false;\r\n return jg;\r\n }\r\n if (this.mapBlocksWall[x + 1][y].opacity == 249) {\r\n jg = false;\r\n return jg;\r\n }\r\n if ((x + 2) <= this.mapBlocksWall.length - 1) {\r\n if (this.mapBlocksWall[x + 2][y].getComponent(\"MapBlock\").block_Id != \"\" && this.mapBlocksWall[x + 2][y].getComponent(\"MapBlock\").block_Id != \"Wall\"\r\n && this.mapBlocksWall[x + 2][y].getComponent(\"MapBlock\").block_Id != id) {\r\n // console.log(\"右侧有物体\")\r\n jg = false;\r\n return jg;\r\n }\r\n if (this.mapBlocksWall[x + 2][y].opacity == 249) {\r\n jg = false;\r\n return jg;\r\n }\r\n }\r\n }\r\n if (direction == \"up\") {\r\n if (this.mapBlocksWall[x][y + 1].getComponent(\"MapBlock\").block_Id != \"\" && this.mapBlocksWall[x][y + 1].getComponent(\"MapBlock\").block_Id != \"Wall\"\r\n && this.mapBlocksWall[x][y + 1].getComponent(\"MapBlock\").block_Id != id) {\r\n // console.log(\"上侧有物体\")\r\n jg = false;\r\n return jg;\r\n }\r\n if (this.mapBlocksWall[x][y + 1].opacity == 249) {\r\n jg = false;\r\n return jg;\r\n }\r\n if ((y + 2) <= this.mapBlocksWall[x].length - 1) {\r\n if (this.mapBlocksWall[x][y + 2].getComponent(\"MapBlock\").block_Id != \"\" && this.mapBlocksWall[x][y + 2].getComponent(\"MapBlock\").block_Id != \"Wall\"\r\n && this.mapBlocksWall[x][y + 2].getComponent(\"MapBlock\").block_Id != id) {\r\n // console.log(\"上侧有物体\")\r\n jg = false;\r\n return jg;\r\n }\r\n if (this.mapBlocksWall[x][y + 2].opacity == 249) {\r\n jg = false;\r\n return jg;\r\n }\r\n }\r\n }\r\n if (direction == \"down\") {\r\n if (this.mapBlocksWall[x][y - 1].getComponent(\"MapBlock\").block_Id != \"\" && this.mapBlocksWall[x][y - 1].getComponent(\"MapBlock\").block_Id != \"Wall\"\r\n && this.mapBlocksWall[x][y - 1].getComponent(\"MapBlock\").block_Id != id) {\r\n // console.log(\"下侧有物体\")\r\n jg = false;\r\n return jg;\r\n }\r\n if (this.mapBlocksWall[x][y - 1].opacity == 249) {\r\n jg = false;\r\n return jg;\r\n }\r\n if ((y - 2) >= 0) {\r\n if (this.mapBlocksWall[x][y - 2].getComponent(\"MapBlock\").block_Id != \"\" && this.mapBlocksWall[x][y - 2].getComponent(\"MapBlock\").block_Id != \"Wall\"\r\n && this.mapBlocksWall[x][y - 2].getComponent(\"MapBlock\").block_Id != id) {\r\n // console.log(\"下侧有物体\")\r\n jg = false;\r\n return jg;\r\n }\r\n if (this.mapBlocksWall[x][y - 2].opacity == 249) {\r\n jg = false;\r\n return jg;\r\n }\r\n }\r\n }\r\n // console.log(\"检测物体各方向是否有别的物块\",jg);\r\n return jg;\r\n }\r\n\r\n checkDiraction(allBlocks, maxX, maxY) {\r\n let jg = [false, false, false, false];\r\n for (let i = 0; i < allBlocks.length; i++) {\r\n if (allBlocks[i].x > 0 && jg[0] == false) {\r\n if (this.mapBlocksWall[allBlocks[i].x - 1][allBlocks[i].y].opacity == 250) {\r\n jg[0] = true;\r\n }\r\n }\r\n if (jg[1] == false) {\r\n if (this.mapBlocksWall[allBlocks[i].x + 1][allBlocks[i].y].opacity == 250) {\r\n jg[1] = true;\r\n }\r\n }\r\n if (allBlocks[i].y > 0 && jg[2] == false) {\r\n if (this.mapBlocksWall[allBlocks[i].x][allBlocks[i].y - 1].opacity == 250) {\r\n jg[2] = true;\r\n }\r\n }\r\n if (jg[3] == false) {\r\n if (this.mapBlocksWall[allBlocks[i].x][allBlocks[i].y + 1].opacity == 250) {\r\n jg[3] = true;\r\n }\r\n }\r\n }\r\n return jg;\r\n }\r\n\r\n checkLeft(allBlocks) {\r\n let jg = false;\r\n return jg;\r\n }\r\n\r\n checkRight(allBlocks, max) {\r\n let jg = false;\r\n for (let i = 0; i < allBlocks.length; i++) {\r\n\r\n }\r\n return jg;\r\n }\r\n\r\n checkDown(allBlocks) {\r\n let jg = false;\r\n for (let i = 0; i < allBlocks.length; i++) {\r\n\r\n }\r\n return jg;\r\n }\r\n\r\n checkUp(allBlocks, max) {\r\n let jg = false;\r\n for (let i = 0; i < allBlocks.length; i++) {\r\n\r\n }\r\n return jg;\r\n }\r\n\r\n\r\n //特殊处理,方块带道具或者需要消除冰块\r\n special_Treatment(node) {\r\n let freezeBlock = this.node.children.filter(child => {\r\n if (child.getComponent(\"Block\")) {\r\n if (child.getComponent(\"Block\").type == 4)\r\n return child\r\n }\r\n });\r\n if (freezeBlock.length > 0) {\r\n for (let i = 0; i < freezeBlock.length; i++) {\r\n freezeBlock[i].getChildByName(\"freeze\").getComponent(\"Freeze\").reduce(1);\r\n }\r\n }\r\n\r\n if (node.getComponent(\"Block\").type == 2 || node.getComponent(\"Block\").type == 4) {\r\n let lockBlock = this.node.children.filter(child => {\r\n if (child.getComponent(\"Block\")) {\r\n if (child.getComponent(\"Block\").type == 3)\r\n return child\r\n }\r\n });\r\n if (lockBlock.length > 0)\r\n for (let i = 0; i < lockBlock.length; i++) {\r\n lockBlock[i].getChildByName(\"lock\").getComponent(\"Lock\").reduce();\r\n }\r\n\r\n }\r\n\r\n for (let i = 0; i < this.blocks.length; i++) {\r\n if (this.blocks[i] == node) {\r\n this.blocks.splice(i, 1);\r\n }\r\n }\r\n\r\n }\r\n\r\n //判断游戏成功下一关\r\n nextLevel() {\r\n this.pause = false;\r\n this.openIce();\r\n\r\n this.blockNum = this.blocks.length;\r\n\r\n if (this.blockNum == 0 && !this.gameWin && !this.gameOver) {\r\n // alert(\"游戏成功\");\r\n this.gameWin = true;\r\n\r\n this.stopTimeCutDown();\r\n // console.log(\"成功消除一个\");\r\n cc.fx.GameTool.changeCoin(40);\r\n let timeData = {\r\n count_Time: this.count_Time,\r\n add_Time: this.add_Time\r\n }\r\n cc.fx.GameTool.addLevel(timeData);\r\n\r\n this.check_NewMode();\r\n setTimeout(() => {\r\n this.node.parent.parent.getChildByName(\"Win\").active = true;\r\n }, 660);\r\n // console.log(\"游戏成功\");\r\n }\r\n else {\r\n if (this.gameOver == true) {\r\n this.failLevel(null);\r\n }\r\n }\r\n }\r\n\r\n check_NewMode() {\r\n for (let i = 0; i < cc.fx.GameConfig.NEW_LEVEL.length; i++) {\r\n if ((cc.fx.GameConfig.GM_INFO.level + 1) == cc.fx.GameConfig.NEW_LEVEL[i].level) {\r\n this.new_mode = 3;\r\n }\r\n }\r\n }\r\n\r\n winLevel() {\r\n cc.fx.AudioManager._instance.playEffect(\"anniu_Big\", null);\r\n if (cc.fx.GameConfig.GM_INFO.level > 156) {\r\n cc.fx.GameConfig.GM_INFO.level = 156;\r\n MapConroler._instance = null;\r\n\r\n if (this.new_mode == 3) {\r\n this.node.parent.parent.getChildByName(\"Win\").active = false;\r\n this.openNewMode(2);\r\n cc.fx.GameConfig.LEVEL_INFO_init(false, 0);\r\n return;\r\n }\r\n // cc.fx.GameConfig.LEVEL_INFO_init(true);\r\n cc.fx.AudioManager._instance.playEffect(\"zhuan1\", null);\r\n this.node.parent.parent.parent.getChildByName(\"zhuanchang\").active = true;\r\n this.node.parent.parent.parent.getChildByName(\"zhuanchang\").getComponent(sp.Skeleton).setAnimation(1, \"up\", false);\r\n // this.node.parent.parent.parent.getChildByName(\"zhuanchang\").getComponent(sp.Skeleton).setCompleteListener((entry) => {\r\n // if (entry.animation.name === \"up\") {\r\n // // 动画播放结束后执行的逻辑\r\n // this.node.parent.parent.parent.getChildByName(\"zhuanchang\").active = false;\r\n // }\r\n // });\r\n\r\n cc.director.preloadScene(\"HomeScene\", (err, asset) => {\r\n if (err) {\r\n console.error('动态加载 Prefab 失败:', err);\r\n return;\r\n }\r\n });\r\n setTimeout(() => {\r\n cc.director.loadScene(\"HomeScene\");\r\n }, 1200);\r\n }\r\n else {\r\n\r\n // console.log(\"下一关\");\r\n MapConroler._instance = null;\r\n\r\n if (this.new_mode == 3) {\r\n this.node.parent.parent.getChildByName(\"Win\").active = false;\r\n this.openNewMode(2);\r\n cc.fx.GameConfig.LEVEL_INFO_init(false, 0);\r\n return;\r\n }\r\n cc.fx.AudioManager._instance.playEffect(\"zhuan1\", null);\r\n this.node.parent.parent.parent.getChildByName(\"zhuanchang\").active = true;\r\n this.node.parent.parent.parent.getChildByName(\"zhuanchang\").getComponent(sp.Skeleton).setAnimation(1, \"up\", false);\r\n // this.node.parent.parent.parent.getChildByName(\"zhuanchang\").getComponent(sp.Skeleton).setCompleteListener((entry) => {\r\n // if (entry.animation.name === \"up\") {\r\n // // 动画播放结束后执行的逻辑\r\n // this.node.parent.parent.parent.getChildByName(\"zhuanchang\").active = false;\r\n // }\r\n // });\r\n setTimeout(() => {\r\n cc.fx.GameConfig.LEVEL_INFO_init(true, 0);\r\n }, 1200);\r\n\r\n // this.node.parent.parent.parent.destroy();\r\n\r\n }\r\n }\r\n\r\n againLevel() {\r\n cc.fx.AudioManager._instance.playEffect(\"anniu_Big\", null);\r\n if (cc.fx.GameConfig.GM_INFO.hp < 1) {\r\n MiniGameSdk.API.showToast(\"体力值不足\");\r\n return;\r\n }\r\n if (!this.againCanTouch) return;\r\n\r\n this.againCanTouch = false;\r\n\r\n MapConroler._instance = null;\r\n cc.fx.AudioManager._instance.playEffect(\"zhuan1\", null);\r\n this.node.parent.parent.parent.getChildByName(\"zhuanchang\").active = true;\r\n this.node.parent.parent.parent.getChildByName(\"zhuanchang\").getComponent(sp.Skeleton).setAnimation(1, \"up\", false);\r\n // this.node.parent.parent.parent.getChildByName(\"zhuanchang\").getComponent(sp.Skeleton).setCompleteListener((entry) => {\r\n // if (entry.animation.name === \"up\") {\r\n // // 动画播放结束后执行的逻辑\r\n // this.node.parent.parent.parent.getChildByName(\"zhuanchang\").active = false;\r\n // }\r\n // });\r\n setTimeout(() => {\r\n cc.fx.GameConfig.LEVEL_INFO_init(true, 0);\r\n }, 1200);\r\n // this.node.parent.parent.parent.destroy();\r\n }\r\n\r\n reviewLevel() {\r\n cc.fx.AudioManager._instance.playEffect(\"anniu_Big\", null);\r\n let coin = 900;\r\n if (cc.fx.GameConfig.GM_INFO.review == 1) coin = 1900;\r\n else if (cc.fx.GameConfig.GM_INFO.review == 2) coin = 2500;\r\n // console.log(\"自身金币:\",cc.fx.GameConfig.GM_INFO.coin,\"消耗金币:\",coin);\r\n if (cc.fx.GameConfig.GM_INFO.coin < Math.abs(coin)) {\r\n MiniGameSdk.API.showToast(\"金币不足,无法加时间\");\r\n return;\r\n }\r\n else {\r\n this.runRewive(-coin);\r\n }\r\n }\r\n\r\n runRewive(data) {\r\n console.log(\"复活回调函数内\", data);\r\n cc.fx.GameTool.changeCoin(data);\r\n MiniGameSdk.API.showToast(\"继续游戏\");\r\n\r\n if (cc.fx.GameConfig.GM_INFO.review < 2)\r\n cc.fx.GameConfig.GM_INFO.review += 1;\r\n\r\n this.gameOver = false;\r\n this.timeNumber = 21;\r\n this.add_Time += 20;\r\n this.pause = false;\r\n this.node.parent.parent.getChildByName(\"Lose\").active = false;\r\n this.startTimeCutDown();\r\n }\r\n\r\n\r\n\r\n homeBtn() {\r\n // alert(\"游戏失败\");\r\n cc.fx.AudioManager._instance.playEffect(\"anniu_Big\", null);\r\n if (!this.homeCanTouch) return;\r\n this.homeCanTouch = false;\r\n this.node.parent.parent.getChildByName(\"Lose\").active = true;\r\n this.node.parent.parent.getChildByName(\"Lose\").getChildByName(\"Time\").active = false;\r\n this.node.parent.parent.getChildByName(\"Lose\").getChildByName(\"Boom\").active = false;\r\n this.node.parent.parent.getChildByName(\"Lose\").getChildByName(\"Lock\").active = false;\r\n this.node.parent.parent.getChildByName(\"Lose\").getChildByName(\"Health\").active = true;\r\n let data = {\r\n time: this.count_Time,\r\n add_Time: this.add_Time,\r\n result: \"fail\"\r\n }\r\n cc.fx.GameTool.shushu_Track(\"finish_stage\", data);\r\n if (this.gameStart == true) {\r\n cc.fx.GameTool.setUserHealth(-1, (data) => {\r\n })\r\n }\r\n // this.node.parent.parent.parent.destroy();\r\n }\r\n\r\n returnHome() {\r\n cc.fx.AudioManager._instance.playEffect(\"anniu_Big\", null);\r\n if (MapConroler._instance = null) {\r\n return;\r\n }\r\n // MiniGameSdk.API.showToast(\"体力值减少\");\r\n MapConroler._instance = null;\r\n cc.fx.GameConfig.LEVEL_INFO_init(false, 0);\r\n if (this.new_mode == 3) {\r\n this.node.parent.parent.getChildByName(\"Win\").active = false;\r\n this.openNewMode(1);\r\n return;\r\n }\r\n cc.fx.AudioManager._instance.playEffect(\"zhuan1\", null);\r\n this.node.parent.parent.parent.getChildByName(\"zhuanchang\").active = true;\r\n this.node.parent.parent.parent.getChildByName(\"zhuanchang\").getComponent(sp.Skeleton).setAnimation(1, \"up\", false);\r\n cc.director.preloadScene(\"HomeScene\", (err, asset) => {\r\n if (err) {\r\n console.error('动态加载 Prefab 失败:', err);\r\n return;\r\n }\r\n\r\n });\r\n\r\n setTimeout(() => {\r\n cc.director.loadScene(\"HomeScene\");\r\n }, 1200);\r\n }\r\n\r\n //判断游戏失败\r\n failLevel(type) {\r\n this.stopTimeCutDown();\r\n if (this.gameOver == true || this.gameWin == true) {\r\n return;\r\n }\r\n\r\n let time = 0;\r\n this.gameOver = true;\r\n if (type == \"boom\") {\r\n time = 2000;\r\n }\r\n setTimeout(() => {\r\n this.node.parent.parent.getChildByName(\"Lose\").active = true;\r\n this.node.parent.parent.getChildByName(\"Lose\").getChildByName(\"Time\").active = true;\r\n this.node.parent.parent.getChildByName(\"Lose\").getChildByName(\"Boom\").active = false;\r\n let buyBtn = this.node.parent.parent.getChildByName(\"Lose\").getChildByName(\"Time\").getChildByName(\"buyBtn\");\r\n buyBtn.getChildByName(\"coin1\").active = buyBtn.getChildByName(\"coin2\").active = buyBtn.getChildByName(\"coin3\").active = false;\r\n if (cc.fx.GameConfig.GM_INFO.review == 0) buyBtn.getChildByName(\"coin1\").active = true;\r\n else if (cc.fx.GameConfig.GM_INFO.review == 1) buyBtn.getChildByName(\"coin2\").active = true;\r\n else if (cc.fx.GameConfig.GM_INFO.review == 2) buyBtn.getChildByName(\"coin3\").active = true;\r\n if (type) {\r\n if (type == \"boom\") {\r\n this.node.parent.parent.getChildByName(\"Lose\").getChildByName(\"Time\").active = false;\r\n this.node.parent.parent.getChildByName(\"Lose\").getChildByName(\"Boom\").active = true;\r\n }\r\n }\r\n }, time);\r\n\r\n // console.log(\"游戏失败\");\r\n }\r\n\r\n //打开新模式弹窗\r\n openNewMode(type) {\r\n let index = 0;\r\n const BLOCKS_PER_FRAME = 5; // 每帧销毁的方块数量\r\n const destroyBlocks = () => {\r\n const endIndex = Math.min(index + BLOCKS_PER_FRAME, this.blocks.length);\r\n for (; index < endIndex; index++) {\r\n if (this.blocks[index]) {\r\n this.blocks[index].destroy();\r\n }\r\n }\r\n // 如果还有方块未销毁,下一帧继续\r\n if (index < this.blocks.length) {\r\n this.scheduleOnce(destroyBlocks, 0);\r\n } else {\r\n }\r\n };\r\n // 开始分帧销毁方块\r\n destroyBlocks();\r\n this.node.parent.parent.getChildByName(\"NewMode\").active = true;\r\n this.node.parent.parent.getChildByName(\"NewMode\").getComponent(\"NewMode\").setMode(type);\r\n }\r\n\r\n\r\n downDoor(color, type) {\r\n for (let i = 0; i < this.wallArray.length; i++) {\r\n if (this.wallArray[i].getChildByName(\"wall\").getComponent(\"Wall\").color == color) {\r\n if (type) {\r\n if (type == 5) {\r\n if (this.wallArray[i].getChildByName(\"wall\").getComponent(\"Wall\").special == 1) {\r\n this.wallArray[i].getChildByName(\"wall\").getComponent(\"Wall\").downDoor();\r\n }\r\n }\r\n else this.wallArray[i].getChildByName(\"wall\").getComponent(\"Wall\").downDoor();\r\n }\r\n else this.wallArray[i].getChildByName(\"wall\").getComponent(\"Wall\").downDoor();\r\n }\r\n }\r\n }\r\n\r\n upDoor() {\r\n for (let i = 0; i < this.wallArray.length; i++) {\r\n if (this.wallArray[i].getChildByName(\"wall\").opacity == 0) {\r\n this.wallArray[i].getChildByName(\"wall\").getComponent(\"Wall\").upDoor();\r\n }\r\n }\r\n }\r\n\r\n //开始倒计时\r\n startTimeCutDown() {\r\n this.scheduleCallback = function () {\r\n if (this.pause) return;\r\n if (this.timeNumber <= 0) {\r\n this.stopTimeCutDown();\r\n var timeTemp = cc.fx.GameTool.getTimeMargin(this.timeNumber);\r\n NumberToImage.getTimeMargin(this.timeNumber, 50, \"time_\", this.timeLabel)\r\n // this.timeLabel.string = timeTemp.toString();\r\n if (!this.pause) this.failLevel(\"time\");\r\n }\r\n else {\r\n this.timeNumber -= 1;\r\n this.count_Time += 1;\r\n var timeTemp = cc.fx.GameTool.getTimeMargin(this.timeNumber);\r\n NumberToImage.getTimeMargin(this.timeNumber, 50, \"time_\", this.timeLabel)\r\n // this.timeLabel.string = timeTemp.toString();\r\n }\r\n }.bind(this);\r\n this.schedule(this.scheduleCallback, 1);\r\n }\r\n // 停止倒计时\r\n stopTimeCutDown() {\r\n if (this.scheduleCallback) {\r\n this.unschedule(this.scheduleCallback);\r\n }\r\n }\r\n\r\n //使用时间道具\r\n useTimeProp() {\r\n if (this.node.parent.getChildByName(\"Ice\").active == true || this.hammer == true\r\n || this.magicMask.active == true || this.timeNumber <= 1) {\r\n return;\r\n }\r\n let freezeBtn = this.node.parent.getChildByName(\"Bottom\").getChildByName(\"timeBtn\");\r\n if (freezeBtn.getComponent(\"btnControl\")._touch) {\r\n freezeBtn.getComponent(\"btnControl\").setTouch(false);\r\n if (cc.fx.GameConfig.GM_INFO.freezeAmount < 1) {\r\n if (cc.fx.GameConfig.GM_INFO.coin < 1500) {\r\n MiniGameSdk.API.showToast(\"金币不足,无法购买道具\");\r\n freezeBtn.getComponent(\"btnControl\").setTouch(true);\r\n return;\r\n }\r\n this.node.parent.parent.getChildByName(\"propWindow\").active = true;\r\n this.node.parent.parent.parent.getComponent(\"SceneManager\").openPropBuy(\"freeze\");\r\n }\r\n else {\r\n if (!this.node.parent.getChildByName(\"Ice\").active && !this.pause) {\r\n const timestamp = Date.now();\r\n this.freezeMask.active = true;\r\n\r\n this.pause = true;\r\n this.node.parent.getChildByName(\"Ice\").active = true;\r\n this.node.parent.getChildByName(\"Top\").getChildByName(\"Ice\").active = true;\r\n\r\n cc.fx.GameConfig.GM_INFO.freezeAmount -= 1;\r\n if (cc.fx.GameConfig.GM_INFO.freezeAmount < 0)\r\n cc.fx.GameConfig.GM_INFO.freezeAmount = 0;\r\n this.iceLabel.string = cc.fx.GameConfig.GM_INFO.freezeAmount.toString();\r\n let propInfo = cc.fx.StorageMessage.getStorage(\"prop\");\r\n propInfo.freezeAmount = cc.fx.GameConfig.GM_INFO.freezeAmount;\r\n propInfo.timestamp = timestamp;\r\n cc.fx.StorageMessage.setStorage(\"prop\", propInfo);\r\n cc.fx.GameTool.setUserProp(2001, cc.fx.GameConfig.GM_INFO.freezeAmount, (data) => {\r\n })\r\n let data = {\r\n id: \"2001\",\r\n num: -1\r\n }\r\n cc.fx.GameTool.shushu_Track(\"resource_cost\", data);\r\n }\r\n else MiniGameSdk.API.showToast(\"道具使用中,请稍后再试\");\r\n }\r\n }\r\n\r\n\r\n }\r\n\r\n //解开时间冻结\r\n openIce() {\r\n if (this.node.parent.getChildByName(\"Ice\").active) {\r\n this.freezeMask.active = false;\r\n let freezeBtn = this.node.parent.getChildByName(\"Bottom\").getChildByName(\"timeBtn\");\r\n freezeBtn.getComponent(\"btnControl\").setTouch(true);\r\n this.node.parent.getChildByName(\"Ice\").active = false;\r\n this.node.parent.getChildByName(\"Top\").getChildByName(\"Ice\").active = false;\r\n this.pause = false;\r\n // this.startTimeCutDown();\r\n }\r\n }\r\n\r\n handleBuySuccess(data) {\r\n this.pause = false;\r\n const timestamp = Date.now();\r\n // console.log(\"回调函数内:\",this.pause);\r\n let freezeBtn = this.node.parent.getChildByName(\"Bottom\").getChildByName(\"timeBtn\");\r\n let hammerBtn = this.node.parent.getChildByName(\"Bottom\").getChildByName(\"destroyBtn\");\r\n let magicBtn = this.node.parent.getChildByName(\"Bottom\").getChildByName(\"magicBtn\");\r\n if (data == \"freezeAmount\") freezeBtn.getComponent(\"btnControl\").setTouch(true);\r\n else if (data == \"hammerAmount\") hammerBtn.getComponent(\"btnControl\").setTouch(true);\r\n else if (data == \"magicAmount\") magicBtn.getComponent(\"btnControl\").setTouch(true);\r\n if (data == \"freezeAmount\") {\r\n cc.fx.GameConfig.GM_INFO.freezeAmount += 3;\r\n let propInfo = cc.fx.StorageMessage.getStorage(\"prop\");\r\n propInfo.freezeAmount = cc.fx.GameConfig.GM_INFO.freezeAmount;\r\n propInfo.timestamp = timestamp;\r\n cc.fx.StorageMessage.setStorage(\"prop\", propInfo);\r\n this.node.parent.parent.parent.getComponent(\"SceneManager\").closePropBuy();\r\n setTimeout(() => {\r\n this.iceLabel.string = cc.fx.GameConfig.GM_INFO.freezeAmount.toString();\r\n MiniGameSdk.API.showToast(\"购买冻结时间道具成功\");\r\n }, 200);\r\n\r\n\r\n }\r\n else if (data == \"magicAmount\") {\r\n cc.fx.GameConfig.GM_INFO.magicAmount += 3;\r\n let propInfo = cc.fx.StorageMessage.getStorage(\"prop\");\r\n propInfo.magicAmount = cc.fx.GameConfig.GM_INFO.magicAmount;\r\n propInfo.timestamp = timestamp;\r\n cc.fx.StorageMessage.setStorage(\"prop\", propInfo);\r\n this.node.parent.parent.parent.getComponent(\"SceneManager\").closePropBuy();\r\n setTimeout(() => {\r\n MiniGameSdk.API.showToast(\"购买锤子道具成功\");\r\n this.magicLabel.string = cc.fx.GameConfig.GM_INFO.magicAmount.toString();\r\n }, 200);\r\n\r\n }\r\n else if (data == \"hammerAmount\") {\r\n cc.fx.GameConfig.GM_INFO.hammerAmount += 3;\r\n let propInfo = cc.fx.StorageMessage.getStorage(\"prop\");\r\n propInfo.hammerAmount = cc.fx.GameConfig.GM_INFO.hammerAmount;\r\n propInfo.timestamp = timestamp;\r\n cc.fx.StorageMessage.setStorage(\"prop\", propInfo);\r\n this.node.parent.parent.parent.getComponent(\"SceneManager\").closePropBuy();\r\n setTimeout(() => {\r\n this.hammerLabel.string = cc.fx.GameConfig.GM_INFO.hammerAmount.toString();\r\n MiniGameSdk.API.showToast(\"购买魔法棒道具成功\");\r\n }, 200);\r\n\r\n }\r\n\r\n\r\n\r\n }\r\n\r\n //使用锤子道具\r\n useHammer() {\r\n if (this.node.parent.getChildByName(\"Ice\").active == true || this.hammer == true\r\n || this.magicMask.active == true || this.timeNumber <= 1) {\r\n return;\r\n }\r\n let hammerBtn = this.node.parent.getChildByName(\"Bottom\").getChildByName(\"destroyBtn\");\r\n if (hammerBtn.getComponent(\"btnControl\")._touch) {\r\n hammerBtn.getComponent(\"btnControl\").setTouch(false);\r\n if (cc.fx.GameConfig.GM_INFO.hammerAmount < 1) {\r\n if (cc.fx.GameConfig.GM_INFO.coin < 1500) {\r\n MiniGameSdk.API.showToast(\"金币不足,无法购买道具\");\r\n hammerBtn.getComponent(\"btnControl\").setTouch(true);\r\n return;\r\n }\r\n this.node.parent.parent.getChildByName(\"propWindow\").active = true;\r\n this.node.parent.parent.parent.getComponent(\"SceneManager\").openPropBuy(\"hammer\");\r\n }\r\n else {\r\n if (!this.hammer) {\r\n const timestamp = Date.now();\r\n this.hammerMask.active = true;\r\n\r\n this.hammer = true;\r\n cc.fx.GameConfig.GM_INFO.hammerAmount -= 1;\r\n if (cc.fx.GameConfig.GM_INFO.hammerAmount < 0)\r\n cc.fx.GameConfig.GM_INFO.hammerAmount = 0;\r\n this.hammerLabel.string = cc.fx.GameConfig.GM_INFO.hammerAmount.toString();\r\n let propInfo = cc.fx.StorageMessage.getStorage(\"prop\");\r\n console.log(\"锤子道具信息:\", propInfo);\r\n propInfo.hammerAmount = cc.fx.GameConfig.GM_INFO.hammerAmount;\r\n propInfo.timestamp = timestamp;\r\n cc.fx.StorageMessage.setStorage(\"prop\", propInfo);\r\n cc.fx.GameTool.setUserProp(2002, cc.fx.GameConfig.GM_INFO.hammerAmount, (data) => {\r\n })\r\n let data = {\r\n id: \"2002\",\r\n num: -1\r\n }\r\n cc.fx.GameTool.shushu_Track(\"resource_cost\", data);\r\n }\r\n else MiniGameSdk.API.showToast(\"道具使用中,请稍后再试\");\r\n }\r\n\r\n }\r\n\r\n }\r\n\r\n buyMagic() {\r\n if (cc.fx.GameConfig.GM_INFO.coin < 1500) {\r\n MiniGameSdk.API.showToast(\"金币不足,无法购买道具\");\r\n return;\r\n }\r\n cc.fx.GameTool.buyProp(2003, this.handleBuySuccess.bind(this, \"magicAmount\"));\r\n }\r\n\r\n buyHammer() {\r\n if (cc.fx.GameConfig.GM_INFO.coin < 1500) {\r\n MiniGameSdk.API.showToast(\"金币不足,无法购买道具\");\r\n return;\r\n }\r\n cc.fx.GameTool.buyProp(2002, this.handleBuySuccess.bind(this, \"hammerAmount\"));\r\n }\r\n\r\n buyFreeze() {\r\n if (cc.fx.GameConfig.GM_INFO.coin < 1500) {\r\n MiniGameSdk.API.showToast(\"金币不足,无法购买道具\");\r\n return;\r\n }\r\n cc.fx.GameTool.buyProp(2001, this.handleBuySuccess.bind(this, \"freezeAmount\"));\r\n }\r\n\r\n //使用魔法棒随机消除两个方块\r\n useMagic() {\r\n if (this.node.parent.getChildByName(\"Ice\").active == true || this.hammer == true\r\n || this.magicMask.active == true || this.timeNumber <= 1) {\r\n return;\r\n }\r\n let magicBtn = this.node.parent.getChildByName(\"Bottom\").getChildByName(\"magicBtn\");\r\n if (magicBtn.getComponent(\"btnControl\")._touch) {\r\n magicBtn.getComponent(\"btnControl\").setTouch(false);\r\n if (cc.fx.GameConfig.GM_INFO.magicAmount < 1) {\r\n if (cc.fx.GameConfig.GM_INFO.coin < 1500) {\r\n MiniGameSdk.API.showToast(\"金币不足,无法购买道具\");\r\n magicBtn.getComponent(\"btnControl\").setTouch(true);\r\n return;\r\n }\r\n this.node.parent.parent.getChildByName(\"propWindow\").active = true;\r\n this.node.parent.parent.parent.getComponent(\"SceneManager\").openPropBuy(\"magic\");\r\n // MiniGameSdk.API.showToast(\"魔法棒数量不足,自动购买魔法棒\");\r\n }\r\n else {\r\n const timestamp = Date.now();\r\n this.magicMask.active = true;\r\n setTimeout(() => {\r\n this.magicMask.active = false;\r\n magicBtn.getComponent(\"btnControl\").setTouch(true);\r\n }, 1000);\r\n\r\n cc.fx.GameConfig.GM_INFO.magicAmount -= 1;\r\n if (cc.fx.GameConfig.GM_INFO.magicAmount < 0)\r\n cc.fx.GameConfig.GM_INFO.magicAmount = 0;\r\n this.magicLabel.string = cc.fx.GameConfig.GM_INFO.magicAmount.toString();\r\n let propInfo = cc.fx.StorageMessage.getStorage(\"prop\");\r\n propInfo.magicAmount = cc.fx.GameConfig.GM_INFO.magicAmount;\r\n propInfo.timestamp = timestamp;\r\n cc.fx.StorageMessage.setStorage(\"prop\", propInfo);\r\n cc.fx.GameTool.setUserProp(2003, cc.fx.GameConfig.GM_INFO.magicAmount, (data) => {\r\n })\r\n let data = {\r\n id: \"2003\",\r\n num: -1\r\n }\r\n cc.fx.GameTool.shushu_Track(\"resource_cost\", data);\r\n let nomalArray = [];\r\n // this.magicBtn.node.active = false;\r\n for (let i = 0; i < this.blocks.length; i++) {\r\n // console.log(\"方块类型\",this.blocks[i].getComponent(\"Block\").type);\r\n if (this.blocks[i].getComponent(\"Block\").type == 3) {\r\n this.loackArray.push(this.blocks[i]);\r\n }\r\n else if (this.blocks[i].getComponent(\"Block\").type == 4) {\r\n this.freezeArray.push(this.blocks[i]);\r\n }\r\n else if (this.blocks[i].getComponent(\"Block\").type == 10) {\r\n if (this.blocks[i].getComponent(\"Block\").block_Info.node) {\r\n nomalArray.push(this.blocks[i].getComponent(\"Block\").block_Info.node);\r\n }\r\n else nomalArray.push(this.blocks[i]);\r\n }\r\n else {\r\n nomalArray.push(this.blocks[i]);\r\n }\r\n }\r\n if (nomalArray.length > 1) {\r\n nomalArray = cc.fx.GameTool.shuffleArray(nomalArray);\r\n nomalArray[0].getComponent(\"Block\").eliminate();\r\n let time = 0;\r\n if (nomalArray[0].getComponent(\"Block\").type == 1 || nomalArray[0].getComponent(\"Block\").type == 9) {\r\n time = 200;\r\n }\r\n if (time > 0) {\r\n setTimeout(() => {\r\n nomalArray[1].getComponent(\"Block\").eliminate();\r\n }, time);\r\n return;\r\n }\r\n else {\r\n nomalArray[1].getComponent(\"Block\").eliminate();\r\n return;\r\n }\r\n }\r\n else if (nomalArray.length == 1) {\r\n nomalArray[0].getComponent(\"Block\").eliminate();\r\n let time = 0;\r\n if (nomalArray[0].getComponent(\"Block\").type == 1 || nomalArray[0].getComponent(\"Block\").type == 9) {\r\n time = 200;\r\n }\r\n setTimeout(() => {\r\n if (this.freezeArray.length == 0 && this.loackArray.length == 0) {\r\n // console.log(\"只剩下一个块道具使用完毕\");\r\n }\r\n else {\r\n if (this.loackArray.length != 0) {\r\n // console.log(\"消除一个普通块后,消除一个带锁块\");\r\n this.loackArray[0].getComponent(\"Block\").eliminate();\r\n return;\r\n }\r\n else if (this.freezeArray.length != 0) {\r\n // console.log(\"消除一个普通块后,消除一个冻结块\");\r\n this.freezeArray[0].getComponent(\"Block\").eliminate();\r\n return;\r\n }\r\n }\r\n }, 200 + time);\r\n }\r\n else {\r\n let count = 2;\r\n if (this.loackArray.length != 0) {\r\n for (let i = 0; i < this.loackArray.length; i++) {\r\n // console.log(\"没有普通快,魔法消除一个带锁块\");\r\n this.loackArray[i].getComponent(\"Block\").eliminate();\r\n count -= 1;\r\n if (count == 0) {\r\n break;\r\n }\r\n }\r\n }\r\n\r\n setTimeout(() => {\r\n if (count != 0) {\r\n for (let i = 0; i < this.freezeArray.length; i++) {\r\n // console.log(\"没有普通快,魔法消除一个冻结块\");\r\n // this.freezeArray[i].getComponent(\"Block\").eliminate();\r\n count -= 1;\r\n if (count == 0) {\r\n break;\r\n }\r\n }\r\n }\r\n }, 100);\r\n }\r\n }\r\n }\r\n }\r\n\r\n //按下暂停按钮\r\n usePause() {\r\n if (this.pause) {\r\n this.pause = false;\r\n }\r\n else {\r\n this.pause = true;\r\n }\r\n }\r\n\r\n\r\n\r\n //根据关卡设置地图大小\r\n setMapInfo() {\r\n let width = 0;\r\n if (this.mapWidth < 10) {\r\n width = 0.2;\r\n }\r\n else if (this.mapWidth < 17) {\r\n width = 0.15 - (this.mapWidth - 11) * 0.01;\r\n }\r\n\r\n this.node.scale = 1.6 + (6 - this.mapWidth) * width;\r\n\r\n if (this.mapWidth == 8 && this.mapHeight > 13) {\r\n this.node.scale = 1;\r\n }\r\n\r\n // this.node.scale = 1;\r\n cc.fx.GameConfig.GM_INFO.scale = this.node.scale;\r\n // this.node.scale = 0.5;\r\n // console.log(this.node.scale);\r\n // this.node.scale = 1;\r\n }\r\n\r\n //创建门的粒子特效\r\n createParticle(block, jg) {\r\n let particle = cc.instantiate(MapConroler._instance.Block_Prop[9]);\r\n particle.parent = this.node;\r\n particle.zIndex = 1000;\r\n let width = Math.floor(block.width / 120);\r\n let height = Math.floor(block.height / 120);\r\n let name = \"\";\r\n\r\n if (jg == 0 || jg == 1) {\r\n let y = block.y + block.height;\r\n let x = block.x - block.width / 2;\r\n name = \"top_\" + width + \"_\" + height;\r\n if (jg == 1) {\r\n name = \"bot_\" + width + \"_\" + height;\r\n y = block.y;\r\n }\r\n if (block.anchorX == 0.5) {\r\n x = block.x;\r\n }\r\n else if (block.anchorX == 0.33) {\r\n x = block.x + block.width * (0.5 - 0.33);\r\n }\r\n else if (block.anchorX == 0.66) {\r\n x = block.x + block.width * (0.5 - 0.66);\r\n }\r\n particle.setPosition(x, y);\r\n }\r\n else if (jg == 2 || jg == 3) {\r\n name = \"left_\" + height + \"_\" + width;\r\n let x = block.x - block.width;\r\n let y = block.y + block.height / 2;\r\n if (block.anchorX == 0.5) {\r\n x = block.x - block.width / 2;\r\n }\r\n else if (block.anchorX == 0.33) {\r\n x = block.x - block.width * 0.33;\r\n }\r\n else if (block.anchorX == 0.66) {\r\n x = block.x + block.width * 0.66;\r\n }\r\n if (jg == 3) {\r\n name = \"right_\" + height + \"_\" + width;\r\n x = block.x;\r\n if (block.anchorX == 0.5) {\r\n x = block.x + block.width / 2;\r\n }\r\n else if (block.anchorX == 0.33) {\r\n x = block.x + block.width * 0.66;\r\n }\r\n else if (block.anchorX == 0.66) {\r\n x = block.x + block.width * 0.33;\r\n }\r\n }\r\n\r\n particle.setPosition(x, y);\r\n }\r\n\r\n let particleNode = particle.getChildByName(name);\r\n let color = block.getComponent(\"Block\").color - 1;\r\n\r\n particleNode.getComponent(cc.ParticleSystem).spriteFrame = particle.getComponent(\"Reduce\").Block_Color[color];\r\n particleNode.active = true;\r\n setTimeout(() => {\r\n cc.tween(particle)\r\n .to(2, { opacity: 0 })\r\n .call(() => {\r\n particle.destroy();\r\n })\r\n .start();\r\n }, 1200);\r\n }\r\n\r\n removeOneBlock() {\r\n // 移除所有方块\r\n for (let i = 0; i < this.blocks.length; i++) {\r\n if (this.blocks[i].opacity == 0) {\r\n this.blocks[i].destroy();\r\n this.blocks.splice(i, 1);\r\n }\r\n }\r\n }\r\n\r\n\r\n\r\n update(dt) {\r\n\r\n }\r\n}\r\n"]} ->>>>>>> 0a31a7a5abc2c505bf743aa596e1c765a0405152 +{"version":3,"sources":["assets\\Script\\Map.ts"],"names":[],"mappings":"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","file":"","sourceRoot":"/","sourcesContent":["// Learn TypeScript:\r\n// - https://docs.cocos.com/creator/manual/en/scripting/typescript.html\r\n// Learn Attribute:\r\n// - https://docs.cocos.com/creator/manual/en/scripting/reference/attributes.html\r\n// Learn life-cycle callbacks:\r\n// - https://docs.cocos.com/creator/manual/en/scripting/life-cycle-callbacks.html\r\n\r\nimport GameManager from \"./GameManager\";\r\nimport { LQCollide } from \"./lq_collide_system/lq_collide\";\r\nimport NumberToImage from \"./NumberToImage\";\r\nimport { MiniGameSdk } from \"./Sdk/MiniGameSdk\";\r\n\r\nconst { ccclass, property } = cc._decorator;\r\n\r\n\r\n\r\n@ccclass\r\nexport default class MapConroler extends cc.Component {\r\n static _instance: any;\r\n\r\n\r\n @property({ type: [cc.Prefab], tooltip: \"方块数组\" })\r\n Block_Array: Array = [];\r\n\r\n @property({ type: [cc.Prefab], tooltip: \"方块道具数组\" })\r\n Block_Prop: Array = [];\r\n\r\n @property(cc.Prefab)\r\n MapBlockPrefab: cc.Prefab = null;\r\n\r\n @property({ type: [cc.SpriteAtlas], tooltip: \"方块颜色\" })\r\n Block_Color: Array = [];\r\n\r\n\r\n @property({ type: [cc.Prefab], tooltip: \"墙壁数组\" })\r\n Wall_Prefab: Array = [];\r\n\r\n\r\n\r\n @property(cc.Prefab)\r\n wallTurnPrefab: cc.Prefab = null;\r\n\r\n @property(cc.Button)\r\n timeBtn: cc.Button = null;\r\n @property(cc.Button)\r\n destroyBtn: cc.Button = null;\r\n @property(cc.Button)\r\n magicBtn: cc.Button = null;\r\n\r\n @property(cc.Node)\r\n mask: cc.Node = null;\r\n\r\n @property(cc.Label)\r\n iceLabel: cc.Label = null;\r\n @property(cc.Label)\r\n hammerLabel: cc.Label = null;\r\n @property(cc.Label)\r\n magicLabel: cc.Label = null;\r\n\r\n @property(cc.Node)\r\n magicMask: cc.Node = null;\r\n\r\n @property(cc.Node)\r\n hammerMask: cc.Node = null;\r\n\r\n @property(cc.Node)\r\n freezeMask: cc.Node = null;\r\n\r\n\r\n @property(cc.Node)\r\n coinPop: cc.Node = null;\r\n\r\n timeLabel: cc.Node = null;\r\n levelLabel: cc.Node = null;\r\n\r\n new_mode: number = 0;\r\n mapWidth: number = 0;\r\n mapHeight: number = 0;\r\n wallNum: number = 0;\r\n blockNum: number = 0;\r\n mapBlocksWall: any; //地图的所有底块\r\n mapInfo: any; //地图除了底块的其他信息\r\n blocks: any; //方块数组\r\n wallInfo: any; //墙壁数组\r\n wallArray: any; //\r\n openWall: any; //开关墙数组\r\n freezeWall: any; //冻结墙数组\r\n riseFallBlcok: any; //升降地块数组\r\n scheduleCallback: any;//倒计时用\r\n homeCanTouch: boolean = true;//按钮可用状态\r\n againCanTouch: boolean = true;//重玩按钮可以用状态\r\n gameOver: boolean = false;//游戏结束状态\r\n gameWin: boolean = false;//游戏胜利状态\r\n gameStart: boolean = false;//游戏开始状态\r\n timeNumber: number = 0; //游戏时间 用于倒计时\r\n count_Time: number = 0; //用于统计总游戏时长\r\n add_Time: number = 0; //复活时间\r\n mapBlockArray: any; //地图的所有格子状态存储\r\n pause: boolean = false;//暂停状态\r\n hammer: boolean = false;//锤子状态\r\n freezeArray: any; //冻结\r\n loackArray: any; //上锁\r\n particleEffects: cc.ParticleAsset[];\r\n // leftDoors: []; //左门\r\n rightDoors: any; //右门\r\n topDoors: any; //上门\r\n bottomDoors: any; //下门\r\n leftDoors: any;\r\n\r\n\r\n // mapInfo: number[][] = [];\r\n\r\n onLoad() {\r\n\r\n cc.fx.GameConfig.GM_INFO.review = 0;\r\n cc.fx.GameConfig.GM_INFO.gameState = true;\r\n this.mask.opacity = 0;\r\n this.node.getChildByName(\"Adhesive\").zIndex = 500;\r\n cc.game.setFrameRate(63);\r\n cc.fx.AudioManager._instance.playEffect(\"zhuan2\", null);\r\n this.node.parent.parent.parent.getChildByName(\"zhuanchang\").active = true;\r\n this.node.parent.parent.parent.getChildByName(\"zhuanchang\").getComponent(sp.Skeleton).setAnimation(1, \"down\", false);\r\n this.node.parent.parent.parent.getChildByName(\"zhuanchang\").getComponent(sp.Skeleton).setCompleteListener((entry) => {\r\n if (entry.animation.name === \"down\") {\r\n // 动画播放结束后执行的逻辑\r\n this.node.parent.parent.parent.getChildByName(\"zhuanchang\").active = false;\r\n }\r\n });\r\n this.blocks = [];\r\n this.leftDoors = []; //左门\r\n this.rightDoors = []; //右门\r\n this.topDoors = []; //上门\r\n this.bottomDoors = []; //下门\r\n this.gameWin = false;\r\n this.gameOver = false;\r\n this.gameStart = false;\r\n this.homeCanTouch = true;\r\n this.againCanTouch = true;\r\n this.new_mode = 0;\r\n this.count_Time = 0;\r\n this.add_Time = 0;\r\n\r\n\r\n this.iceLabel.string = cc.fx.GameConfig.GM_INFO.freezeAmount.toString();\r\n this.hammerLabel.string = cc.fx.GameConfig.GM_INFO.hammerAmount.toString();\r\n this.magicLabel.string = cc.fx.GameConfig.GM_INFO.magicAmount.toString();\r\n\r\n // cc.game.addPersistRootNode(this.node);\r\n MapConroler._instance = this;\r\n }\r\n\r\n start() {\r\n setTimeout(() => {\r\n cc.director.preloadScene(\"HomeScene\", (err, asset) => {\r\n if (err) {\r\n console.error('动态加载 HomeScene 失败:', err);\r\n return;\r\n }\r\n });\r\n }, 1000);\r\n // console.log(\"进入GameScene\");\r\n this.Block_Array = GameManager._instance.Block_Array;\r\n this.Wall_Prefab = GameManager._instance.Wall_Prefab;\r\n this.Block_Color = GameManager._instance.Block_Color;\r\n // this.particleEffects = GameManager._instance.particleEffects;\r\n\r\n this.initMap();\r\n\r\n }\r\n\r\n startUpdate() {\r\n if (this.gameStart == false) {\r\n this.gameStart = true;\r\n //发送数数事件——进入关卡\r\n console.log(\"准备进入下一关,发送下一关进入\");\r\n cc.fx.GameTool.shushu_Track(\"enter_stage\");\r\n this.startTimeCutDown();\r\n for (let i = 0; i < this.blocks.length; i++) {\r\n if (this.blocks[i].getComponent(\"Block\").type == 6) {\r\n this.blocks[i].getChildByName(\"boom\").getComponent(\"Boom\").startBoom();\r\n }\r\n }\r\n }\r\n }\r\n\r\n initMap() {\r\n // this.node.getChildByName(\"Wall\").zIndex = 10;\r\n this.timeLabel = this.node.parent.getChildByName(\"Top\").getChildByName(\"time\");\r\n this.levelLabel = this.node.parent.getChildByName(\"Top\").getChildByName(\"level\");\r\n this.timeNumber = cc.fx.GameConfig.LEVEL_INFO[0].time;\r\n\r\n this.count_Time = 0;\r\n this.add_Time = 0;\r\n NumberToImage.getTimeMargin(this.timeNumber, 50, \"time_\", this.timeLabel)\r\n // var timeTemp = cc.fx.GameTool.getTimeMargin(this.timeNumber);\r\n // this.timeLabel.string = timeTemp.toString();\r\n NumberToImage.numberToImageNodes((cc.fx.GameConfig.GM_INFO.level + 1), 50, 20, \"level_\", this.levelLabel, false)\r\n\r\n //this.startTimeCutDown();\r\n\r\n this.mapWidth = cc.fx.GameConfig.LEVEL_INFO[0].map[0];\r\n this.mapHeight = cc.fx.GameConfig.LEVEL_INFO[0].map[1];\r\n let gap = cc.fx.GameConfig.LEVEL_INFO[0].gap;\r\n let risefall = cc.fx.GameConfig.LEVEL_INFO[0].risefall;\r\n\r\n this.pause = false;\r\n this.hammer = false;\r\n this.wallNum = 0;\r\n this.setMapInfo();\r\n this.blocks = [];\r\n this.mapBlocksWall = [];\r\n this.mapInfo = [];\r\n this.wallInfo = [];\r\n this.openWall = [];\r\n this.wallArray = [];\r\n this.freezeWall = [];\r\n this.riseFallBlcok = [];\r\n this.mapBlockArray = [];\r\n this.freezeArray = [];\r\n this.loackArray = [];\r\n this.count_Time = 0;\r\n this.add_Time = 0;\r\n\r\n\r\n let startX = this.mapWidth % 2 == 0 ? -(this.mapWidth - 1) * 60 : -(this.mapWidth - 1) * 60;\r\n let startY = this.mapHeight % 2 == 0 ? -(this.mapHeight - 1) * 60 : -(this.mapHeight - 1) * 60;\r\n // startX =(this.mapWidth-1)*60 + 60;\r\n // startY =-(this.mapHeight-1)*60 - 60;\r\n\r\n for (let i = 0; i < this.mapWidth; i++) {\r\n this.mapBlocksWall[i] = [];\r\n\r\n for (let j = 0; j < this.mapHeight; j++) {\r\n let block = cc.instantiate(this.MapBlockPrefab);\r\n block.parent = this.node.getChildByName(\"mapBlock\");\r\n block.getComponent(\"MapBlock\").init(i, j);\r\n // block.getChildByName(\"num\").getComponent(cc.Label).string = i + \":\" + j;\r\n block.setPosition(cc.v2(startX + i * 120, startY + j * 120))\r\n if (risefall != null) {\r\n if (this.mapRiseFall(cc.v2(i, j), risefall, block)) {\r\n this.riseFallBlcok.push(block);\r\n }\r\n }\r\n if (gap != null) {\r\n if (!this.mapGap(cc.v2(i, j), gap) || i == 0 || i == this.mapWidth - 1\r\n || j == 0 || j == this.mapHeight - 1) {\r\n block.opacity = 254;\r\n block.removeComponent(cc.Sprite);\r\n block.removeAllChildren();\r\n this.wallInfo.push(block);\r\n }\r\n else this.mapInfo.push(block);\r\n }\r\n else {\r\n if (i == 0 || i == this.mapWidth - 1\r\n || j == 0 || j == this.mapHeight - 1) {\r\n block.opacity = 254;\r\n block.removeComponent(cc.Sprite);\r\n block.removeAllChildren();\r\n this.wallInfo.push(block);\r\n }\r\n else this.mapInfo.push(block);\r\n }\r\n\r\n this.mapBlocksWall[i].push(block);\r\n }\r\n }\r\n\r\n this.wallInit();\r\n this.blockInit();\r\n\r\n }\r\n\r\n //创建方块\r\n // ... 已有代码 ...\r\n\r\n //创建方块\r\n // ... 已有代码 ...\r\n\r\n\r\n\r\n\r\n blockInit() {\r\n let blockArray = cc.fx.GameConfig.BLOCK_INFO[0];\r\n blockArray = this.sortBlock(blockArray);\r\n console.log(\"创建方块\", blockArray);\r\n let index = 0; // 当前要创建的方块索引\r\n let BLOCKS_PER_FRAME = 1; // 初始每帧创建的方块数量\r\n const MAX_PER_FRAME = 10; // 每帧最大创建数量\r\n const MIN_PER_FRAME = 1; // 每帧最小创建数量\r\n\r\n const createBlocks = () => {\r\n const startTime = performance.now();\r\n for (let i = 0; i < BLOCKS_PER_FRAME && index < blockArray.length; i++) {\r\n let blockInfo = blockArray[index];\r\n // 缓存 Block_Array 访问\r\n const blockPrefab = this.Block_Array[blockInfo.block];\r\n let block = cc.instantiate(blockPrefab);\r\n block.parent = this.node;\r\n block.setPosition(cc.v2(blockInfo.position.x, blockInfo.position.y));\r\n if (blockInfo.block != 23) {\r\n this.blockNum += 1;\r\n this.blocks.push(block);\r\n if (blockInfo.type == 1) {\r\n let info = {\r\n id: blockInfo.id + 1,\r\n block: blockInfo.block,\r\n color: blockInfo.stacking,\r\n type: 10,\r\n position: blockInfo.position,\r\n stacking: blockInfo.color\r\n };\r\n // 缓存 Block_Array 访问\r\n const blockUpPrefab = this.Block_Array[info.block];\r\n let blockUp = cc.instantiate(blockUpPrefab);\r\n blockUp.parent = this.node;\r\n blockUp.setPosition(cc.v2(info.position.x, info.position.y));\r\n\r\n this.blocks.push(blockUp);\r\n block.getComponent(\"Block\").init(blockInfo, null, null, blockUp);\r\n blockUp.getComponent(\"Block\").init(info, null, null, block);\r\n\r\n this.blockNum += 1;\r\n } else if (blockInfo.type == 9) {\r\n if (blockInfo.adhesiveTime < 2) {\r\n index++;\r\n continue;\r\n }\r\n index++;\r\n let info = blockArray[index];\r\n // 缓存 Block_Array 访问\r\n const blockUpPrefab = this.Block_Array[info.block];\r\n let blockUp = cc.instantiate(blockUpPrefab);\r\n blockUp.parent = this.node;\r\n blockUp.setPosition(cc.v2(info.position.x, info.position.y));\r\n\r\n this.blocks.push(blockUp);\r\n block.getComponent(\"Block\").init(blockInfo, null, null, blockUp, false);\r\n setTimeout(() => {\r\n blockUp.getComponent(\"Block\").init(info, null, null, block, true);\r\n }, 100);\r\n this.blockNum += 1;\r\n } else {\r\n block.getComponent(\"Block\").init(blockInfo);\r\n }\r\n }\r\n else {\r\n block.getComponent(\"Barrier\").init(blockInfo);\r\n }\r\n index++;\r\n }\r\n const endTime = performance.now();\r\n const frameTime = endTime - startTime;\r\n // 如果当前帧执行时间过长,减少每帧创建数量\r\n if (frameTime > 16) {\r\n BLOCKS_PER_FRAME = Math.max(BLOCKS_PER_FRAME - 1, MIN_PER_FRAME);\r\n } else {\r\n BLOCKS_PER_FRAME = Math.min(BLOCKS_PER_FRAME + 1, MAX_PER_FRAME);\r\n }\r\n\r\n // 如果还有方块未创建,下一帧继续创建\r\n if (index < blockArray.length) {\r\n // 使用 scheduleOnce 在下一帧执行 createBlocks\r\n this.scheduleOnce(() => {\r\n createBlocks();\r\n }, 0);\r\n } else {\r\n\r\n }\r\n };\r\n\r\n // 开始分帧创建方块\r\n createBlocks();\r\n }\r\n //给创建方块排序,用来降低drawcall 合批\r\n sortBlock(allBlocks: { color: number; block: number; type: number }[]) {\r\n return allBlocks.sort((a, b) => {\r\n // 先处理 type 为 1 的情况,将其放到最后\r\n if (a.type === 1 && b.type !== 1) {\r\n return 1;\r\n }\r\n if (a.type !== 1 && b.type === 1) {\r\n return -1;\r\n }\r\n\r\n // 对 type 不为 0 的元素按 type 排序\r\n if (a.type !== 0 && b.type !== 0) {\r\n return a.type - b.type;\r\n }\r\n if (a.type !== 0 && b.type === 0) {\r\n return 1;\r\n }\r\n if (a.type === 0 && b.type !== 0) {\r\n return -1;\r\n }\r\n\r\n // 再处理 block 为 23 的情况,将其放到最前面\r\n if (a.block === 23 && b.block !== 23) {\r\n return -1;\r\n }\r\n if (a.block !== 23 && b.block === 23) {\r\n return 1;\r\n }\r\n\r\n // 其余按 color 升序排列\r\n return a.color - b.color;\r\n });\r\n }\r\n\r\n\r\n //创建墙壁\r\n\r\n wallInit() {\r\n let index = 0; // 当前要创建的墙壁索引\r\n let WALLS_PER_FRAME = 1; // 初始每帧创建的墙壁数量\r\n const MAX_PER_FRAME = 10; // 每帧最大创建数量\r\n const MIN_PER_FRAME = 1; // 每帧最小创建数量\r\n\r\n const createWalls = () => {\r\n const startTime = performance.now();\r\n for (let i = 0; i < WALLS_PER_FRAME && index < this.wallInfo.length; i++) {\r\n let block = this.wallInfo[index];\r\n let dir = this.getWllDiraction(\"wall\", cc.v2(block.getComponent(\"MapBlock\").posX, block.getComponent(\"MapBlock\").posY));\r\n if (dir != null) {\r\n this.createWall(dir, block);\r\n }\r\n index++;\r\n }\r\n const endTime = performance.now();\r\n const frameTime = endTime - startTime;\r\n // 如果当前帧执行时间过长,减少每帧创建数量\r\n if (frameTime > 16) {\r\n WALLS_PER_FRAME = Math.max(WALLS_PER_FRAME - 1, MIN_PER_FRAME);\r\n } else {\r\n WALLS_PER_FRAME = Math.min(WALLS_PER_FRAME + 1, MAX_PER_FRAME);\r\n }\r\n\r\n // 如果还有墙壁未创建,下一帧继续创建\r\n if (index < this.wallInfo.length) {\r\n this.scheduleOnce(() => {\r\n createWalls();\r\n }, 0);\r\n } else {\r\n // 所有墙壁创建完成后,创建拐角节点\r\n this.createCornerNodes();\r\n }\r\n };\r\n\r\n // 开始分帧创建墙壁\r\n createWalls();\r\n }\r\n\r\n // ... 已有代码 ...\r\n\r\n getWllDiraction(type, pointA) {\r\n let dir = [];\r\n let pointB = cc.v2(pointA.x + 1, pointA.y);\r\n let pointC = cc.v2(pointA.x - 1, pointA.y);\r\n let pointD = cc.v2(pointA.x, pointA.y + 1);\r\n let pointE = cc.v2(pointA.x, pointA.y - 1);\r\n let opacity = 0;\r\n if (type == \"wall\") opacity = 255;\r\n if (type == \"turn\") opacity = 250;\r\n\r\n if (pointB.x < this.mapWidth) {\r\n if (this.mapBlocksWall[pointB.x][pointB.y].opacity == opacity) {\r\n if (type == \"turn\" && this.mapBlocksWall[pointB.x][pointB.y].getComponent(\"MapBlock\").direction == \"right\") {\r\n\r\n }\r\n else dir.push(\"right\");\r\n }\r\n }\r\n if (pointC.x >= 0) {\r\n if (this.mapBlocksWall[pointC.x][pointC.y].opacity == opacity) {\r\n if (type == \"turn\" && this.mapBlocksWall[pointC.x][pointC.y].getComponent(\"MapBlock\").direction == \"left\") {\r\n\r\n }\r\n else dir.push(\"left\");\r\n }\r\n }\r\n if (pointD.y < this.mapHeight) {\r\n if (this.mapBlocksWall[pointD.x][pointD.y].opacity == opacity) {\r\n if (type == \"turn\" && this.mapBlocksWall[pointD.x][pointD.y].getComponent(\"MapBlock\").direction == \"up\") {\r\n\r\n }\r\n else dir.push(\"up\");\r\n }\r\n }\r\n if (pointE.y >= 0) {\r\n if (this.mapBlocksWall[pointE.x][pointE.y].opacity == opacity) {\r\n if (type == \"turn\" && this.mapBlocksWall[pointE.x][pointE.y].getComponent(\"MapBlock\").direction == \"down\") {\r\n\r\n }\r\n else dir.push(\"down\");\r\n }\r\n }\r\n if (dir.length > 2) {\r\n\r\n return null;\r\n }\r\n if (dir.length == 1) {\r\n if (type == \"wall\")\r\n return dir[0];\r\n else\r\n return null;\r\n }\r\n else if (dir.length == 2) {\r\n return dir[0] + dir[1];\r\n }\r\n }\r\n\r\n createCornerNodes() {\r\n // 定义拐角位置\r\n for (let i = 0; i < this.wallInfo.length; i++) {\r\n let block = this.wallInfo[i];\r\n if (block.opacity != 250) {\r\n let dir = this.getWllDiraction(\"turn\", cc.v2(block.getComponent(\"MapBlock\").posX, block.getComponent(\"MapBlock\").posY));\r\n if (dir != null) {\r\n this.createTurn(dir, block, block.getComponent(\"MapBlock\").posX, block.getComponent(\"MapBlock\").posY);\r\n }\r\n }\r\n\r\n }\r\n\r\n }\r\n\r\n createWall(direction, node) {\r\n let wall = null;\r\n node.getComponent(\"MapBlock\").setDiraction(direction);\r\n switch (direction) {\r\n case \"right\":\r\n node.opacity = 250;\r\n wall = cc.instantiate(this.Wall_Prefab[4]);\r\n this.leftDoors.push(wall);\r\n // wall.parent = this.node.getChildByName(\"Wall\");\r\n wall.parent = this.node;\r\n wall.setPosition(cc.v2(node.x, node.y));\r\n node.opacity = 250;\r\n wall.getChildByName(\"wall\").getComponent(\"Wall\").init(null, node.getComponent(\"MapBlock\").posX, node.getComponent(\"MapBlock\").posY, direction);\r\n //wall.getChildByName(\"wall\").getChildByName(\"num\").getComponent(cc.Label).string = this.wallNum.toString();\r\n this.setDoorInfo(wall.getChildByName(\"wall\"));\r\n this.wallNum += 1;\r\n if (wall.getChildByName(\"wall\").getComponent(\"Wall\").special == 2)\r\n this.openWall.push(wall);\r\n else if (wall.getChildByName(\"wall\").getComponent(\"Wall\").special == 3)\r\n this.freezeWall.push(wall);\r\n\r\n break;\r\n case \"left\":\r\n node.opacity = 250;\r\n wall = cc.instantiate(this.Wall_Prefab[3]);\r\n // wall.parent = this.node.getChildByName(\"Wall\");\r\n this.rightDoors.push(wall);\r\n wall.parent = this.node;\r\n wall.setPosition(cc.v2(node.x, node.y));\r\n wall.getChildByName(\"wall\").getComponent(\"Wall\").init(null, node.getComponent(\"MapBlock\").posX, node.getComponent(\"MapBlock\").posY, direction);\r\n this.setDoorInfo(wall.getChildByName(\"wall\"));\r\n //wall.getChildByName(\"wall\").getChildByName(\"num\").getComponent(cc.Label).string = this.wallNum.toString();\r\n this.wallNum += 1;\r\n if (wall.getChildByName(\"wall\").getComponent(\"Wall\").special == 2)\r\n this.openWall.push(wall);\r\n else if (wall.getChildByName(\"wall\").getComponent(\"Wall\").special == 3)\r\n this.freezeWall.push(wall);\r\n break;\r\n case \"up\":\r\n node.opacity = 250;\r\n wall = cc.instantiate(this.Wall_Prefab[5]);\r\n\r\n this.topDoors.push(wall);\r\n // wall.parent = this.node.getChildByName(\"Wall\");\r\n wall.parent = this.node;\r\n wall.setPosition(cc.v2(node.x, node.y));\r\n\r\n wall.getChildByName(\"wall\").getComponent(\"Wall\").init(null, node.getComponent(\"MapBlock\").posX, node.getComponent(\"MapBlock\").posY, direction);\r\n this.setDoorInfo(wall.getChildByName(\"wall\"));\r\n //wall.getChildByName(\"wall\").getChildByName(\"num\").getComponent(cc.Label).string = this.wallNum.toString();\r\n this.wallNum += 1;\r\n if (wall.getChildByName(\"wall\").getComponent(\"Wall\").special == 2)\r\n this.openWall.push(wall);\r\n else if (wall.getChildByName(\"wall\").getComponent(\"Wall\").special == 3)\r\n this.freezeWall.push(wall);\r\n break;\r\n case \"down\":\r\n node.opacity = 250;\r\n wall = cc.instantiate(this.Wall_Prefab[0]);\r\n this.bottomDoors.push(wall);\r\n // wall.parent = this.node.getChildByName(\"Wall\");\r\n wall.parent = this.node;\r\n wall.setPosition(cc.v2(node.x, node.y));\r\n // this.setDoorInfo(wall.getChildByName(\"wall\"));\r\n wall.getChildByName(\"wall\").getComponent(\"Wall\").init(null, node.getComponent(\"MapBlock\").posX, node.getComponent(\"MapBlock\").posY, direction);\r\n this.setDoorInfo(wall.getChildByName(\"wall\"));\r\n //wall.getChildByName(\"wall\").getChildByName(\"num\").getComponent(cc.Label).string = this.wallNum.toString();\r\n this.wallNum += 1;\r\n if (wall.getChildByName(\"wall\").getComponent(\"Wall\").special == 2)\r\n this.openWall.push(wall);\r\n else if (wall.getChildByName(\"wall\").getComponent(\"Wall\").special == 3)\r\n this.freezeWall.push(wall);\r\n break;\r\n case \"upright\": case \"rightup\":\r\n node.opacity = 249;\r\n wall = cc.instantiate(this.Wall_Prefab[7]);\r\n // wall.parent = this.node.getChildByName(\"Wall\");\r\n wall.parent = this.node;\r\n wall.setPosition(cc.v2(node.x, node.y));\r\n wall.children[1].getComponent(\"Wall\").init(null, node.getComponent(\"MapBlock\").posX, node.getComponent(\"MapBlock\").posY, direction);\r\n wall.children[2].getComponent(\"Wall\").init(null, node.getComponent(\"MapBlock\").posX, node.getComponent(\"MapBlock\").posY, direction);\r\n //wall.children[0].getChildByName(\"num\").getComponent(cc.Label).string = this.wallNum.toString();\r\n this.setDoorInfo(wall.children[0]);\r\n this.wallNum += 1;\r\n //wall.children[1].getChildByName(\"num\").getComponent(cc.Label).string = this.wallNum.toString();\r\n this.setDoorInfo(wall.children[1]);\r\n this.wallNum += 1;\r\n\r\n break;\r\n case \"upleft\": case \"leftup\":\r\n node.opacity = 249;\r\n wall = cc.instantiate(this.Wall_Prefab[6]);\r\n // wall.parent = this.node.getChildByName(\"Wall\");\r\n wall.parent = this.node;\r\n wall.setPosition(cc.v2(node.x, node.y));\r\n wall.children[1].getComponent(\"Wall\").init(null, node.getComponent(\"MapBlock\").posX, node.getComponent(\"MapBlock\").posY, direction);\r\n wall.children[2].getComponent(\"Wall\").init(null, node.getComponent(\"MapBlock\").posX, node.getComponent(\"MapBlock\").posY, direction);\r\n //wall.children[0].getChildByName(\"num\").getComponent(cc.Label).string = this.wallNum.toString();\r\n this.setDoorInfo(wall.children[0]);\r\n this.wallNum += 1;\r\n //wall.children[1].getChildByName(\"num\").getComponent(cc.Label).string = this.wallNum.toString();\r\n this.setDoorInfo(wall.children[1]);\r\n this.wallNum += 1;\r\n\r\n break;\r\n case \"downright\": case \"rightdown\":\r\n node.opacity = 249;\r\n wall = cc.instantiate(this.Wall_Prefab[2]);\r\n // wall.parent = this.node.getChildByName(\"Wall\");\r\n wall.parent = this.node;\r\n wall.setPosition(cc.v2(node.x, node.y));\r\n wall.children[1].getComponent(\"Wall\").init(null, node.getComponent(\"MapBlock\").posX, node.getComponent(\"MapBlock\").posY, direction);\r\n wall.children[2].getComponent(\"Wall\").init(null, node.getComponent(\"MapBlock\").posX, node.getComponent(\"MapBlock\").posY, direction);\r\n //wall.children[0].getChildByName(\"num\").getComponent(cc.Label).string = this.wallNum.toString();\r\n this.setDoorInfo(wall.children[0]);\r\n this.wallNum += 1;\r\n //wall.children[1].getChildByName(\"num\").getComponent(cc.Label).string = this.wallNum.toString();\r\n this.setDoorInfo(wall.children[1]);\r\n this.wallNum += 1;\r\n\r\n break;\r\n case \"downleft\": case \"leftdown\":\r\n node.opacity = 249;\r\n wall = cc.instantiate(this.Wall_Prefab[1]);\r\n // wall.parent = this.node.getChildByName(\"Wall\");\r\n wall.parent = this.node;\r\n wall.setPosition(cc.v2(node.x, node.y));\r\n wall.children[1].getComponent(\"Wall\").init(null, node.getComponent(\"MapBlock\").posX, node.getComponent(\"MapBlock\").posY, direction);\r\n wall.children[2].getComponent(\"Wall\").init(null, node.getComponent(\"MapBlock\").posX, node.getComponent(\"MapBlock\").posY, direction);\r\n //wall.children[0].getChildByName(\"num\").getComponent(cc.Label).string = this.wallNum.toString();\r\n this.setDoorInfo(wall.children[0]);\r\n this.wallNum += 1;\r\n //wall.children[1].getChildByName(\"num\").getComponent(cc.Label).string = this.wallNum.toString();\r\n this.setDoorInfo(wall.children[1]);\r\n this.wallNum += 1;\r\n\r\n break;\r\n\r\n }\r\n\r\n\r\n // if(wallTurn){\r\n // wallTurn.getComponent(\"wallTunr\").init(wall);\r\n // }\r\n }\r\n\r\n setDoorInfo(wall) {\r\n let doorInfo = cc.fx.GameConfig.WALL_INFO[0];\r\n\r\n if (doorInfo) {\r\n for (let j = 0; j < doorInfo.length; j++) {\r\n if (doorInfo[j].num == this.wallNum) {\r\n wall.getComponent(\"Wall\").init(doorInfo[j], null, null, null);\r\n this.wallArray.push(wall.parent);\r\n }\r\n }\r\n }\r\n }\r\n\r\n createTurn(direction, node, posX, posY) {\r\n let wall = null;\r\n wall = cc.instantiate(this.wallTurnPrefab);\r\n wall.parent = this.node;\r\n wall.setPosition(cc.v2(node.x, node.y));\r\n switch (direction) {\r\n case \"upright\": case \"rightup\":\r\n wall.angle = 0;\r\n wall.getChildByName(\"icon\").angle = 0;\r\n\r\n break;\r\n case \"upleft\": case \"leftup\":\r\n wall.angle = 90;\r\n wall.getChildByName(\"icon\").angle = -90;\r\n wall.getChildByName(\"icon\").y += 5;\r\n wall.getChildByName(\"icon\").x -= 1.3;\r\n break;\r\n case \"downright\": case \"rightdown\":\r\n wall.angle = 270;\r\n wall.getChildByName(\"icon\").angle = -270;\r\n wall.getChildByName(\"icon\").x += 2.5;\r\n wall.getChildByName(\"icon\").y += 1;\r\n break;\r\n case \"downleft\": case \"leftdown\":\r\n wall.angle = 180;\r\n wall.getChildByName(\"icon\").angle = -180;\r\n wall.getChildByName(\"icon\").x += 4.5;\r\n wall.getChildByName(\"icon\").y += 3.2;\r\n break;\r\n }\r\n\r\n // if(direction == \"rightdown\" || direction == \"downright\") {\r\n // wall.zIndex = 50 + posX - posY*3;\r\n // }\r\n // else \r\n // wall.zIndex = 50 + posX - posY*3;\r\n\r\n if (direction == \"up\" || direction == \"leftup\" || direction == \"upleft\"\r\n ) {\r\n wall.zIndex = 100 + posX - posY * 3;\r\n }\r\n else if (direction == \"rightup\" || direction == \"upright\" || direction == \"rightdown\" || direction == \"downright\" || direction == \"downleft\") {\r\n wall.zIndex = 30 + posX - posY * 3;\r\n }\r\n else if (direction == \"left\" || direction == \"leftdown\") {\r\n wall.zIndex = 70 + posX - posY * 3;\r\n }\r\n else wall.zIndex = 70 + posX - posY * 3;\r\n\r\n // wall.getChildByName(\"num\").angle = -wall.angle;\r\n //wall.getChildByName(\"num\").getComponent(cc.Label).string = direction;\r\n //wall.getChildByName(\"num\").getComponent(cc.Label).string = wall.zIndex+ \"\";\r\n // console.log(posX,posY,wall.zIndex);\r\n // this.wallNum += 1;\r\n // wall.getChildByName(\"num\").getComponent(cc.Label).string = this.wallNum + \"\";\r\n }\r\n\r\n //地图底块缺口判断\r\n mapGap(point, gap) {\r\n for (let i = 0; i < gap.length; i++) {\r\n if (point.x == gap[i].x && point.y == gap[i].y) {\r\n return false;\r\n }\r\n }\r\n return true;\r\n }\r\n\r\n //升降地块判断\r\n mapRiseFall(point, risefall, block) {\r\n for (let i = 0; i < risefall.length; i++) {\r\n if (point.x == risefall[i].pos.x && point.y == risefall[i].pos.y) {\r\n block.getChildByName(\"risefall\").active = true;\r\n block.getChildByName('risefall').getChildByName(\"color\").getComponent(cc.Label).string = risefall[i].color + \"\";\r\n block.getChildByName('risefall').addComponent(cc.BoxCollider);\r\n block.getChildByName('risefall').getComponent(cc.BoxCollider).size = cc.size(110, 110);\r\n return true;\r\n }\r\n }\r\n return false;\r\n }\r\n //升降地块\r\n changeRiseFall(color, down) {\r\n color = color.toString();\r\n for (let i = 0; i < this.riseFallBlcok.length; i++) {\r\n if (color == this.riseFallBlcok[i].getChildByName(\"risefall\").getChildByName(\"color\").getComponent(cc.Label).string) {\r\n if (down) {\r\n this.riseFallBlcok[i].getChildByName(\"risefall\").active = false;\r\n this.riseFallBlcok[i].getChildByName('risefall').removeComponent(cc.BoxCollider);\r\n }\r\n else {\r\n this.riseFallBlcok[i].getChildByName(\"risefall\").active = true;\r\n this.riseFallBlcok[i].getChildByName('risefall').addComponent(cc.BoxCollider);\r\n this.riseFallBlcok[i].getChildByName('risefall').getComponent(cc.BoxCollider).size = cc.size(110, 110);\r\n }\r\n }\r\n\r\n }\r\n }\r\n\r\n\r\n\r\n //查询叠加快id\r\n foundDownBlock(id) {\r\n for (let i = 0; i < this.blocks.length; i++) {\r\n if (this.blocks[i].getComponent(\"Block\").blockId == id) {\r\n return this.blocks[i];\r\n }\r\n }\r\n return null;\r\n }\r\n\r\n //删除块\r\n removeBlock(id) {\r\n for (let i = 0; i < this.blocks.length; i++) {\r\n if (this.blocks[i].getComponent(\"Block\").blockId == id) {\r\n return this.blocks[i];\r\n }\r\n }\r\n return null;\r\n }\r\n\r\n getMinAndMax(block) {\r\n let width = Math.floor(block.width / 120);\r\n let height = Math.floor(block.height / 120);\r\n\r\n let minX = width;\r\n let maxX = this.mapWidth - 2;\r\n let minY = 1;\r\n let maxY = this.mapHeight - 2 - height + 1;\r\n\r\n if (block.name == \"block10\") {\r\n minX = width - 1;\r\n if (this.mapWidth > 3) maxX = maxX - 1;\r\n }\r\n else if (block.name == \"block11\") {\r\n minX = width - 2;\r\n if (this.mapWidth > 3) maxX = maxX - 2;\r\n }\r\n\r\n else if (block.name == \"block14\") {\r\n minX = width - 1;\r\n maxX = maxX - 1;\r\n }\r\n else if (block.name == \"block16\") {\r\n minX = width - 1;\r\n maxX = maxX - 1;\r\n }\r\n else if (block.name == \"block18\") {\r\n minX = width - 1;\r\n maxX = maxX - 1;\r\n }\r\n else if (block.name == \"block21\") {\r\n minX = width - 1;\r\n maxX = maxX - 1;\r\n }\r\n\r\n return { minX: minX, maxX: maxX, minY: minY, maxY: maxY };\r\n }\r\n\r\n //检测落点是否可以消除\r\n checkPass(node, blocks) {\r\n let minAndMax = this.getMinAndMax(node);\r\n let minX = minAndMax.minX;\r\n let maxX = minAndMax.maxX;\r\n let minY = minAndMax.minY;\r\n let maxY = minAndMax.maxY;\r\n\r\n let nodePos = cc.v2(node.getComponent(\"Block\").posX, node.getComponent(\"Block\").posY);\r\n\r\n // 获取地图边界信息\r\n\r\n let allBlocks = [];\r\n for (let i = 0; i < blocks.length; i++) {\r\n allBlocks.push(cc.v2(nodePos.x + blocks[i].x, nodePos.y + blocks[i].y));\r\n }\r\n\r\n // const date1 = new Date().getTime();\r\n // console.log(\"将小块放入数组的时间\",date1);\r\n\r\n let jg = -1;\r\n let pz = 0;\r\n // 获取所有墙壁节点\r\n // let wall = this.node;\r\n let direction = this.checkDiraction(allBlocks, maxX, maxY);\r\n\r\n // 判断方块是否在地图边缘\r\n if (nodePos.x <= minX || direction[0] == true) {\r\n // const date2 = new Date().getTime();\r\n // console.log(\"碰到左边缘\",date2);\r\n pz += 1;\r\n let leftWalls = [];\r\n for (let i = 0; i < this.leftDoors.length; i++) {\r\n let wallLeft = this.leftDoors[i].getChildByName(\"wall\");\r\n let wallPos = cc.v2(wallLeft.getComponent(\"Wall\").posX, wallLeft.getComponent(\"Wall\").posY);\r\n for (let i = 0; i < allBlocks.length; i++) {\r\n if (allBlocks[i].y == wallPos.y && allBlocks[i].x > wallPos.x) {\r\n // console.log(\"id:\",wall.getChildByName(\"num\").getComponent(cc.Label).string);\r\n leftWalls.push(wallLeft);\r\n }\r\n }\r\n }\r\n // console.log(\"得到左边墙壁数组\",date6);\r\n if (leftWalls.length != 0) {\r\n let result = this.detectingBlock(\"left\", node.getComponent(\"Block\").posX, node.getComponent(\"Block\").posY, allBlocks);\r\n if (result == true) result = this.passWall(result, leftWalls, node);\r\n // console.log(\"碰到左边缘结果:\",jg);\r\n if (result) {\r\n\r\n this.blockNum -= 1;\r\n this.special_Treatment(node);\r\n jg = 2;\r\n this.createParticle(node, jg);\r\n return jg;\r\n }\r\n }\r\n }\r\n if (nodePos.x >= maxX || direction[1] == true) {\r\n // const date3 = new Date().getTime();\r\n // console.log(\"碰到右边缘\",date3);\r\n pz += 1;\r\n let rightWalls = [];\r\n for (let i = 0; i < this.rightDoors.length; i++) {\r\n let wallRight = this.rightDoors[i].getChildByName(\"wall\");\r\n let wallPos = cc.v2(wallRight.getComponent(\"Wall\").posX, wallRight.getComponent(\"Wall\").posY);\r\n for (let i = 0; i < allBlocks.length; i++) {\r\n if (allBlocks[i].y == wallPos.y && allBlocks[i].x < wallPos.x) {\r\n // console.log(\"id:\",wall.getChildByName(\"num\").getComponent(cc.Label).string);\r\n rightWalls.push(wallRight);\r\n }\r\n }\r\n }\r\n\r\n if (rightWalls.length != 0) {\r\n let result = this.detectingBlock(\"right\", node.getComponent(\"Block\").posX, node.getComponent(\"Block\").posY, allBlocks);\r\n\r\n if (result == true) result = this.passWall(result, rightWalls, node);\r\n // console.log(\"碰到右边缘结果:\",jg);\r\n if (result) {\r\n\r\n this.blockNum -= 1;\r\n this.special_Treatment(node);\r\n jg = 3;\r\n this.createParticle(node, jg);\r\n return jg;\r\n }\r\n }\r\n\r\n\r\n }\r\n if (nodePos.y <= minY || direction[2] == true) {\r\n pz += 1;\r\n // const date4 = new Date().getTime();\r\n // console.log(\"碰到下边缘\",date4);\r\n let downWalls = [];\r\n for (let i = 0; i < this.topDoors.length; i++) {\r\n let wallBottom = this.topDoors[i].getChildByName(\"wall\");\r\n let wallPos = cc.v2(wallBottom.getComponent(\"Wall\").posX, wallBottom.getComponent(\"Wall\").posY);\r\n for (let i = 0; i < allBlocks.length; i++) {\r\n let luocha = Math.abs(allBlocks[i].y - wallPos.y)\r\n if (allBlocks[i].x == wallPos.x && allBlocks[i].y > wallPos.y && luocha <= node.getComponent(\"Block\").shu) {\r\n // console.log(\"id:\",wall.getChildByName(\"num\").getComponent(cc.Label).string);\r\n downWalls.push(wallBottom);\r\n }\r\n }\r\n }\r\n\r\n if (downWalls.length != 0) {\r\n let result = this.detectingBlock(\"down\", node.getComponent(\"Block\").posX, node.getComponent(\"Block\").posY, allBlocks);\r\n if (result == true) result = this.passWall(result, downWalls, node);\r\n // console.log(\"碰到下边缘结果:\",jg);\r\n if (result) {\r\n\r\n this.blockNum -= 1;\r\n this.special_Treatment(node);\r\n jg = 1;\r\n this.createParticle(node, jg);\r\n return jg;\r\n }\r\n }\r\n\r\n\r\n }\r\n if (nodePos.y >= maxY || direction[3] == true) {\r\n pz += 1;\r\n // const date5 = new Date().getTime();\r\n // console.log(\"碰到上边缘\",date5);\r\n let upWalls = [];\r\n for (let i = 0; i < this.bottomDoors.length; i++) {\r\n let wallTop = this.bottomDoors[i].getChildByName(\"wall\");\r\n let wallPos = cc.v2(wallTop.getComponent(\"Wall\").posX, wallTop.getComponent(\"Wall\").posY);\r\n for (let i = 0; i < allBlocks.length; i++) {\r\n let luocha = Math.abs(allBlocks[i].y - wallPos.y)\r\n if (allBlocks[i].x == wallPos.x && allBlocks[i].y < wallPos.y && luocha <= node.getComponent(\"Block\").shu) {\r\n upWalls.push(wallTop);\r\n }\r\n }\r\n }\r\n\r\n if (upWalls.length != 0) {\r\n let result = this.detectingBlock(\"up\", node.getComponent(\"Block\").posX, node.getComponent(\"Block\").posY, allBlocks);\r\n if (result == true) result = this.passWall(result, upWalls, node);\r\n // console.log(\"碰到上边缘结果:\",result);\r\n if (result) {\r\n\r\n this.blockNum -= 1;\r\n this.special_Treatment(node);\r\n jg = 0;\r\n this.createParticle(node, jg);\r\n return jg;\r\n }\r\n }\r\n\r\n }\r\n if (pz == 0) jg = -1;\r\n // const date10 = new Date().getTime();\r\n // console.log(\"所有检测结束耗时\",date10,jg);\r\n return jg;\r\n }\r\n\r\n changeState() {\r\n if (this.openWall.length != 0) {\r\n for (let i = 0; i < this.openWall.length; i++) {\r\n this.openWall[i].getChildByName(\"wall\").getComponent(\"Wall\").changeLock();\r\n }\r\n }\r\n\r\n if (this.freezeWall.length != 0) {\r\n for (let i = 0; i < this.freezeWall.length; i++) {\r\n this.freezeWall[i].getChildByName(\"wall\").getComponent(\"Wall\").changeFreeze();\r\n }\r\n }\r\n }\r\n\r\n //检测是否可以通过门\r\n passWall(jg, wallArray, node) {\r\n for (let i = 0; i < wallArray.length; i++) {\r\n if (wallArray[i].getComponent(\"Wall\").special == 2) {\r\n console.log(\"尝试通过开关门:\", wallArray[i].getComponent(\"Wall\").open);\r\n }\r\n if (wallArray[i].getComponent(\"Wall\").special == 2 && wallArray[i].getComponent(\"Wall\").open == false) {\r\n jg = false;\r\n break;\r\n }\r\n //console.log(wallArray[i].getChildByName(\"wall\").getComponent(\"Wall\").color,node.getComponent(\"Block\").color)\r\n if (wallArray[i].getComponent(\"Wall\").color != node.getComponent(\"Block\").color) {\r\n\r\n jg = false;\r\n break;\r\n }\r\n if (node.getComponent(\"Block\").type == 5) {\r\n if (wallArray[i].getComponent(\"Wall\").special != 1) {\r\n jg = false;\r\n break;\r\n }\r\n }\r\n }\r\n if (jg == true && node.getComponent(\"Block\").type == 5) {\r\n for (let j = 0; j < wallArray.length; j++) {\r\n if (wallArray[j].getComponent(\"Wall\").special == 1 && wallArray[j].getComponent(\"Wall\").wall_Info.length != 0) {\r\n wallArray[j].getComponent(\"Wall\").playStarDoor();\r\n }\r\n }\r\n }\r\n // const date8 = new Date().getTime();\r\n // console.log(\"检测颜色是否能够通过门\",date8);\r\n return jg;\r\n }\r\n\r\n //检测方块和门中间有没有夹杂其他块\r\n detectingBlock(direction, posX, posY, blocks) {\r\n let jg = true;\r\n let id = \"\";\r\n if (blocks.length > 0) {\r\n for (let i = 0; i < blocks.length; i++) {\r\n let pos = blocks[i];\r\n let x = pos.x;\r\n let y = pos.y;\r\n id = this.mapBlocksWall[x][y].getComponent(\"MapBlock\").block_Id;\r\n jg = this.checkAllDirections(id, direction, x, y);\r\n if (!jg) {\r\n // console.log(\"方向检测没过\");\r\n i = 1000000;\r\n return jg;\r\n }\r\n }\r\n }\r\n // const date7 = new Date().getTime();\r\n // console.log(\"方向检测通过\",date7,jg);\r\n return jg;\r\n }\r\n\r\n //检测物体各方向是否有别的物块,防止碰到墙壁了但是是凹凸形状,墙与块之间有阻挡物块\r\n checkAllDirections(id, direction, x, y) {\r\n let jg = true;\r\n\r\n if (direction == \"left\") {\r\n if (this.mapBlocksWall[x - 1][y].getComponent(\"MapBlock\").block_Id != \"\" && this.mapBlocksWall[x - 1][y].getComponent(\"MapBlock\").block_Id != \"Wall\"\r\n && this.mapBlocksWall[x - 1][y].getComponent(\"MapBlock\").block_Id != id) {\r\n // console.log(\"左侧有物体\")\r\n jg = false;\r\n return jg;\r\n }\r\n if (this.mapBlocksWall[x - 1][y].opacity == 249) {\r\n jg = false;\r\n return jg;\r\n }\r\n if ((x - 2) >= 0) {\r\n if (this.mapBlocksWall[x - 2][y].getComponent(\"MapBlock\").block_Id != \"\" && this.mapBlocksWall[x - 2][y].getComponent(\"MapBlock\").block_Id != \"Wall\"\r\n && this.mapBlocksWall[x - 2][y].getComponent(\"MapBlock\").block_Id != id) {\r\n // console.log(\"左侧有物体\")\r\n jg = false;\r\n return jg;\r\n }\r\n if (this.mapBlocksWall[x - 2][y].opacity == 249) {\r\n jg = false;\r\n return jg;\r\n }\r\n }\r\n }\r\n else if (direction == \"right\") {\r\n if (this.mapBlocksWall[x + 1][y].getComponent(\"MapBlock\").block_Id != \"\" && this.mapBlocksWall[x + 1][y].getComponent(\"MapBlock\").block_Id != \"Wall\"\r\n && this.mapBlocksWall[x + 1][y].getComponent(\"MapBlock\").block_Id != id) {\r\n // console.log(\"右侧有物体\")\r\n jg = false;\r\n return jg;\r\n }\r\n if (this.mapBlocksWall[x + 1][y].opacity == 249) {\r\n jg = false;\r\n return jg;\r\n }\r\n if ((x + 2) <= this.mapBlocksWall.length - 1) {\r\n if (this.mapBlocksWall[x + 2][y].getComponent(\"MapBlock\").block_Id != \"\" && this.mapBlocksWall[x + 2][y].getComponent(\"MapBlock\").block_Id != \"Wall\"\r\n && this.mapBlocksWall[x + 2][y].getComponent(\"MapBlock\").block_Id != id) {\r\n // console.log(\"右侧有物体\")\r\n jg = false;\r\n return jg;\r\n }\r\n if (this.mapBlocksWall[x + 2][y].opacity == 249) {\r\n jg = false;\r\n return jg;\r\n }\r\n }\r\n }\r\n if (direction == \"up\") {\r\n if (this.mapBlocksWall[x][y + 1].getComponent(\"MapBlock\").block_Id != \"\" && this.mapBlocksWall[x][y + 1].getComponent(\"MapBlock\").block_Id != \"Wall\"\r\n && this.mapBlocksWall[x][y + 1].getComponent(\"MapBlock\").block_Id != id) {\r\n // console.log(\"上侧有物体\")\r\n jg = false;\r\n return jg;\r\n }\r\n if (this.mapBlocksWall[x][y + 1].opacity == 249) {\r\n jg = false;\r\n return jg;\r\n }\r\n if ((y + 2) <= this.mapBlocksWall[x].length - 1) {\r\n if (this.mapBlocksWall[x][y + 2].getComponent(\"MapBlock\").block_Id != \"\" && this.mapBlocksWall[x][y + 2].getComponent(\"MapBlock\").block_Id != \"Wall\"\r\n && this.mapBlocksWall[x][y + 2].getComponent(\"MapBlock\").block_Id != id) {\r\n // console.log(\"上侧有物体\")\r\n jg = false;\r\n return jg;\r\n }\r\n if (this.mapBlocksWall[x][y + 2].opacity == 249) {\r\n jg = false;\r\n return jg;\r\n }\r\n }\r\n }\r\n if (direction == \"down\") {\r\n if (this.mapBlocksWall[x][y - 1].getComponent(\"MapBlock\").block_Id != \"\" && this.mapBlocksWall[x][y - 1].getComponent(\"MapBlock\").block_Id != \"Wall\"\r\n && this.mapBlocksWall[x][y - 1].getComponent(\"MapBlock\").block_Id != id) {\r\n // console.log(\"下侧有物体\")\r\n jg = false;\r\n return jg;\r\n }\r\n if (this.mapBlocksWall[x][y - 1].opacity == 249) {\r\n jg = false;\r\n return jg;\r\n }\r\n if ((y - 2) >= 0) {\r\n if (this.mapBlocksWall[x][y - 2].getComponent(\"MapBlock\").block_Id != \"\" && this.mapBlocksWall[x][y - 2].getComponent(\"MapBlock\").block_Id != \"Wall\"\r\n && this.mapBlocksWall[x][y - 2].getComponent(\"MapBlock\").block_Id != id) {\r\n // console.log(\"下侧有物体\")\r\n jg = false;\r\n return jg;\r\n }\r\n if (this.mapBlocksWall[x][y - 2].opacity == 249) {\r\n jg = false;\r\n return jg;\r\n }\r\n }\r\n }\r\n // console.log(\"检测物体各方向是否有别的物块\",jg);\r\n return jg;\r\n }\r\n\r\n checkDiraction(allBlocks, maxX, maxY) {\r\n let jg = [false, false, false, false];\r\n for (let i = 0; i < allBlocks.length; i++) {\r\n if (allBlocks[i].x > 0 && jg[0] == false) {\r\n if (this.mapBlocksWall[allBlocks[i].x - 1][allBlocks[i].y].opacity == 250) {\r\n jg[0] = true;\r\n }\r\n }\r\n if (jg[1] == false) {\r\n if (this.mapBlocksWall[allBlocks[i].x + 1][allBlocks[i].y].opacity == 250) {\r\n jg[1] = true;\r\n }\r\n }\r\n if (allBlocks[i].y > 0 && jg[2] == false) {\r\n if (this.mapBlocksWall[allBlocks[i].x][allBlocks[i].y - 1].opacity == 250) {\r\n jg[2] = true;\r\n }\r\n }\r\n if (jg[3] == false) {\r\n if (this.mapBlocksWall[allBlocks[i].x][allBlocks[i].y + 1].opacity == 250) {\r\n jg[3] = true;\r\n }\r\n }\r\n }\r\n return jg;\r\n }\r\n\r\n checkLeft(allBlocks) {\r\n let jg = false;\r\n return jg;\r\n }\r\n\r\n checkRight(allBlocks, max) {\r\n let jg = false;\r\n for (let i = 0; i < allBlocks.length; i++) {\r\n\r\n }\r\n return jg;\r\n }\r\n\r\n checkDown(allBlocks) {\r\n let jg = false;\r\n for (let i = 0; i < allBlocks.length; i++) {\r\n\r\n }\r\n return jg;\r\n }\r\n\r\n checkUp(allBlocks, max) {\r\n let jg = false;\r\n for (let i = 0; i < allBlocks.length; i++) {\r\n\r\n }\r\n return jg;\r\n }\r\n\r\n\r\n //特殊处理,方块带道具或者需要消除冰块\r\n special_Treatment(node) {\r\n let freezeBlock = this.node.children.filter(child => {\r\n if (child.getComponent(\"Block\")) {\r\n if (child.getComponent(\"Block\").type == 4)\r\n return child\r\n }\r\n });\r\n if (freezeBlock.length > 0) {\r\n for (let i = 0; i < freezeBlock.length; i++) {\r\n freezeBlock[i].getChildByName(\"freeze\").getComponent(\"Freeze\").reduce(1);\r\n }\r\n }\r\n\r\n if (node.getComponent(\"Block\").type == 2 || node.getComponent(\"Block\").type == 4) {\r\n let lockBlock = this.node.children.filter(child => {\r\n if (child.getComponent(\"Block\")) {\r\n if (child.getComponent(\"Block\").type == 3)\r\n return child\r\n }\r\n });\r\n if (lockBlock.length > 0)\r\n for (let i = 0; i < lockBlock.length; i++) {\r\n lockBlock[i].getChildByName(\"lock\").getComponent(\"Lock\").reduce();\r\n }\r\n\r\n }\r\n\r\n for (let i = 0; i < this.blocks.length; i++) {\r\n if (this.blocks[i] == node) {\r\n this.blocks.splice(i, 1);\r\n }\r\n }\r\n\r\n }\r\n\r\n //判断游戏成功下一关\r\n nextLevel() {\r\n this.pause = false;\r\n this.openIce();\r\n\r\n this.blockNum = this.blocks.length;\r\n\r\n if (this.blockNum == 0 && !this.gameWin && !this.gameOver) {\r\n // alert(\"游戏成功\");\r\n this.gameWin = true;\r\n\r\n this.stopTimeCutDown();\r\n // console.log(\"成功消除一个\");\r\n cc.fx.GameTool.changeCoin(40);\r\n cc.fx.GameTool.addLevel(this.count_Time, this.add_Time);\r\n\r\n this.check_NewMode();\r\n setTimeout(() => {\r\n this.node.parent.parent.getChildByName(\"Win\").active = true;\r\n }, 660);\r\n // console.log(\"游戏成功\");\r\n }\r\n else {\r\n if (this.gameOver == true) {\r\n this.failLevel(null);\r\n }\r\n }\r\n }\r\n\r\n check_NewMode() {\r\n for (let i = 0; i < cc.fx.GameConfig.NEW_LEVEL.length; i++) {\r\n if ((cc.fx.GameConfig.GM_INFO.level + 1) == cc.fx.GameConfig.NEW_LEVEL[i].level) {\r\n this.new_mode = 3;\r\n }\r\n }\r\n }\r\n\r\n winLevel() {\r\n cc.fx.AudioManager._instance.playEffect(\"anniu_Big\", null);\r\n if (cc.fx.GameConfig.GM_INFO.level > 156) {\r\n cc.fx.GameConfig.GM_INFO.level = 156;\r\n // MapConroler._instance = null;\r\n\r\n if (this.new_mode == 3) {\r\n this.node.parent.parent.getChildByName(\"Win\").active = false;\r\n this.openNewMode(2);\r\n cc.fx.GameConfig.LEVEL_INFO_init(false, 0);\r\n return;\r\n }\r\n // cc.fx.GameConfig.LEVEL_INFO_init(true);\r\n cc.fx.AudioManager._instance.playEffect(\"zhuan1\", null);\r\n this.node.parent.parent.parent.getChildByName(\"zhuanchang\").active = true;\r\n this.node.parent.parent.parent.getChildByName(\"zhuanchang\").getComponent(sp.Skeleton).setAnimation(1, \"up\", false);\r\n // this.node.parent.parent.parent.getChildByName(\"zhuanchang\").getComponent(sp.Skeleton).setCompleteListener((entry) => {\r\n // if (entry.animation.name === \"up\") {\r\n // // 动画播放结束后执行的逻辑\r\n // this.node.parent.parent.parent.getChildByName(\"zhuanchang\").active = false;\r\n // }\r\n // });\r\n\r\n cc.director.preloadScene(\"HomeScene\", (err, asset) => {\r\n if (err) {\r\n console.error('动态加载 Prefab 失败:', err);\r\n return;\r\n }\r\n });\r\n setTimeout(() => {\r\n cc.director.loadScene(\"HomeScene\");\r\n }, 1200);\r\n }\r\n else {\r\n\r\n // console.log(\"下一关\");\r\n // MapConroler._instance = null;\r\n\r\n if (this.new_mode == 3) {\r\n this.node.parent.parent.getChildByName(\"Win\").active = false;\r\n this.openNewMode(2);\r\n cc.fx.GameConfig.LEVEL_INFO_init(false, 0);\r\n return;\r\n }\r\n cc.fx.AudioManager._instance.playEffect(\"zhuan1\", null);\r\n this.node.parent.parent.parent.getChildByName(\"zhuanchang\").active = true;\r\n this.node.parent.parent.parent.getChildByName(\"zhuanchang\").getComponent(sp.Skeleton).setAnimation(1, \"up\", false);\r\n // this.node.parent.parent.parent.getChildByName(\"zhuanchang\").getComponent(sp.Skeleton).setCompleteListener((entry) => {\r\n // if (entry.animation.name === \"up\") {\r\n // // 动画播放结束后执行的逻辑\r\n // this.node.parent.parent.parent.getChildByName(\"zhuanchang\").active = false;\r\n // }\r\n // });\r\n setTimeout(() => {\r\n cc.fx.GameConfig.LEVEL_INFO_init(true, 0);\r\n }, 1200);\r\n\r\n // this.node.parent.parent.parent.destroy();\r\n\r\n }\r\n }\r\n\r\n againLevel() {\r\n cc.fx.AudioManager._instance.playEffect(\"anniu_Big\", null);\r\n if (cc.fx.GameConfig.GM_INFO.hp < 1) {\r\n MiniGameSdk.API.showToast(\"体力值不足\");\r\n return;\r\n }\r\n if (!this.againCanTouch) return;\r\n\r\n this.againCanTouch = false;\r\n\r\n // MapConroler._instance = null;\r\n cc.fx.AudioManager._instance.playEffect(\"zhuan1\", null);\r\n this.node.parent.parent.parent.getChildByName(\"zhuanchang\").active = true;\r\n this.node.parent.parent.parent.getChildByName(\"zhuanchang\").getComponent(sp.Skeleton).setAnimation(1, \"up\", false);\r\n // this.node.parent.parent.parent.getChildByName(\"zhuanchang\").getComponent(sp.Skeleton).setCompleteListener((entry) => {\r\n // if (entry.animation.name === \"up\") {\r\n // // 动画播放结束后执行的逻辑\r\n // this.node.parent.parent.parent.getChildByName(\"zhuanchang\").active = false;\r\n // }\r\n // });\r\n setTimeout(() => {\r\n cc.fx.GameConfig.LEVEL_INFO_init(true, 0);\r\n }, 1200);\r\n // this.node.parent.parent.parent.destroy();\r\n }\r\n\r\n reviewLevel() {\r\n cc.fx.AudioManager._instance.playEffect(\"anniu_Big\", null);\r\n let coin = 900;\r\n if (cc.fx.GameConfig.GM_INFO.review == 1) coin = 1900;\r\n else if (cc.fx.GameConfig.GM_INFO.review == 2) coin = 2500;\r\n // console.log(\"自身金币:\",cc.fx.GameConfig.GM_INFO.coin,\"消耗金币:\",coin);\r\n if (cc.fx.GameConfig.GM_INFO.coin < Math.abs(coin)) {\r\n MiniGameSdk.API.showToast(\"金币不足,无法加时间\");\r\n return;\r\n }\r\n else {\r\n this.runRewive(-coin);\r\n }\r\n }\r\n\r\n runRewive(data) {\r\n console.log(\"复活回调函数内\", data);\r\n cc.fx.GameTool.changeCoin(data);\r\n MiniGameSdk.API.showToast(\"继续游戏\");\r\n\r\n if (cc.fx.GameConfig.GM_INFO.review < 2)\r\n cc.fx.GameConfig.GM_INFO.review += 1;\r\n\r\n this.gameOver = false;\r\n this.timeNumber = 21;\r\n this.add_Time += 20;\r\n this.pause = false;\r\n this.node.parent.parent.getChildByName(\"Lose\").active = false;\r\n this.startTimeCutDown();\r\n }\r\n\r\n\r\n\r\n homeBtn() {\r\n // alert(\"游戏失败\");\r\n cc.fx.AudioManager._instance.playEffect(\"anniu_Big\", null);\r\n if (!this.homeCanTouch) return;\r\n this.homeCanTouch = false;\r\n this.node.parent.parent.getChildByName(\"Lose\").active = true;\r\n this.node.parent.parent.getChildByName(\"Lose\").getChildByName(\"Time\").active = false;\r\n this.node.parent.parent.getChildByName(\"Lose\").getChildByName(\"Boom\").active = false;\r\n this.node.parent.parent.getChildByName(\"Lose\").getChildByName(\"Lock\").active = false;\r\n this.node.parent.parent.getChildByName(\"Lose\").getChildByName(\"Health\").active = true;\r\n let data = {\r\n time: this.count_Time,\r\n add_Time: this.add_Time,\r\n result: \"fail\"\r\n }\r\n cc.fx.GameTool.shushu_Track(\"finish_stage\", data);\r\n if (this.gameStart == true) {\r\n cc.fx.GameTool.setUserHealth(-1, (data) => {\r\n })\r\n }\r\n // this.node.parent.parent.parent.destroy();\r\n }\r\n\r\n returnHome() {\r\n cc.fx.AudioManager._instance.playEffect(\"anniu_Big\", null);\r\n if (MapConroler._instance = null) {\r\n return;\r\n }\r\n // MiniGameSdk.API.showToast(\"体力值减少\");\r\n // MapConroler._instance = null;\r\n cc.fx.GameConfig.LEVEL_INFO_init(false, 0);\r\n if (this.new_mode == 3) {\r\n this.node.parent.parent.getChildByName(\"Win\").active = false;\r\n this.openNewMode(1);\r\n return;\r\n }\r\n cc.fx.AudioManager._instance.playEffect(\"zhuan1\", null);\r\n this.node.parent.parent.parent.getChildByName(\"zhuanchang\").active = true;\r\n this.node.parent.parent.parent.getChildByName(\"zhuanchang\").getComponent(sp.Skeleton).setAnimation(1, \"up\", false);\r\n cc.director.preloadScene(\"HomeScene\", (err, asset) => {\r\n if (err) {\r\n console.error('动态加载 Prefab 失败:', err);\r\n return;\r\n }\r\n\r\n });\r\n\r\n setTimeout(() => {\r\n cc.director.loadScene(\"HomeScene\");\r\n }, 1200);\r\n }\r\n\r\n //判断游戏失败\r\n failLevel(type) {\r\n this.stopTimeCutDown();\r\n if (this.gameOver == true || this.gameWin == true) {\r\n return;\r\n }\r\n\r\n let time = 0;\r\n this.gameOver = true;\r\n if (type == \"boom\") {\r\n time = 2000;\r\n }\r\n setTimeout(() => {\r\n this.node.parent.parent.getChildByName(\"Lose\").active = true;\r\n this.node.parent.parent.getChildByName(\"Lose\").getChildByName(\"Time\").active = true;\r\n this.node.parent.parent.getChildByName(\"Lose\").getChildByName(\"Boom\").active = false;\r\n let buyBtn = this.node.parent.parent.getChildByName(\"Lose\").getChildByName(\"Time\").getChildByName(\"buyBtn\");\r\n buyBtn.getChildByName(\"coin1\").active = buyBtn.getChildByName(\"coin2\").active = buyBtn.getChildByName(\"coin3\").active = false;\r\n if (cc.fx.GameConfig.GM_INFO.review == 0) buyBtn.getChildByName(\"coin1\").active = true;\r\n else if (cc.fx.GameConfig.GM_INFO.review == 1) buyBtn.getChildByName(\"coin2\").active = true;\r\n else if (cc.fx.GameConfig.GM_INFO.review == 2) buyBtn.getChildByName(\"coin3\").active = true;\r\n if (type) {\r\n if (type == \"boom\") {\r\n this.node.parent.parent.getChildByName(\"Lose\").getChildByName(\"Time\").active = false;\r\n this.node.parent.parent.getChildByName(\"Lose\").getChildByName(\"Boom\").active = true;\r\n }\r\n }\r\n }, time);\r\n\r\n // console.log(\"游戏失败\");\r\n }\r\n\r\n //打开新模式弹窗\r\n openNewMode(type) {\r\n let index = 0;\r\n const BLOCKS_PER_FRAME = 5; // 每帧销毁的方块数量\r\n const destroyBlocks = () => {\r\n const endIndex = Math.min(index + BLOCKS_PER_FRAME, this.blocks.length);\r\n for (; index < endIndex; index++) {\r\n if (this.blocks[index]) {\r\n this.blocks[index].destroy();\r\n }\r\n }\r\n // 如果还有方块未销毁,下一帧继续\r\n if (index < this.blocks.length) {\r\n this.scheduleOnce(destroyBlocks, 0);\r\n } else {\r\n }\r\n };\r\n // 开始分帧销毁方块\r\n destroyBlocks();\r\n this.node.parent.parent.getChildByName(\"NewMode\").active = true;\r\n this.node.parent.parent.getChildByName(\"NewMode\").getComponent(\"NewMode\").setMode(type);\r\n }\r\n\r\n\r\n downDoor(color, type) {\r\n for (let i = 0; i < this.wallArray.length; i++) {\r\n if (this.wallArray[i].getChildByName(\"wall\").getComponent(\"Wall\").color == color) {\r\n if (type) {\r\n if (type == 5) {\r\n if (this.wallArray[i].getChildByName(\"wall\").getComponent(\"Wall\").special == 1) {\r\n this.wallArray[i].getChildByName(\"wall\").getComponent(\"Wall\").downDoor();\r\n }\r\n }\r\n else this.wallArray[i].getChildByName(\"wall\").getComponent(\"Wall\").downDoor();\r\n }\r\n else this.wallArray[i].getChildByName(\"wall\").getComponent(\"Wall\").downDoor();\r\n }\r\n }\r\n }\r\n\r\n upDoor() {\r\n for (let i = 0; i < this.wallArray.length; i++) {\r\n if (this.wallArray[i].getChildByName(\"wall\").opacity == 0) {\r\n this.wallArray[i].getChildByName(\"wall\").getComponent(\"Wall\").upDoor();\r\n }\r\n }\r\n }\r\n\r\n //开始倒计时\r\n startTimeCutDown() {\r\n this.scheduleCallback = function () {\r\n if (this.pause) return;\r\n if (this.timeNumber <= 0) {\r\n this.stopTimeCutDown();\r\n var timeTemp = cc.fx.GameTool.getTimeMargin(this.timeNumber);\r\n NumberToImage.getTimeMargin(this.timeNumber, 50, \"time_\", this.timeLabel)\r\n // this.timeLabel.string = timeTemp.toString();\r\n if (!this.pause) this.failLevel(\"time\");\r\n }\r\n else {\r\n this.timeNumber -= 1;\r\n this.count_Time += 1;\r\n var timeTemp = cc.fx.GameTool.getTimeMargin(this.timeNumber);\r\n NumberToImage.getTimeMargin(this.timeNumber, 50, \"time_\", this.timeLabel)\r\n // this.timeLabel.string = timeTemp.toString();\r\n }\r\n }.bind(this);\r\n this.schedule(this.scheduleCallback, 1);\r\n }\r\n // 停止倒计时\r\n stopTimeCutDown() {\r\n if (this.scheduleCallback) {\r\n this.unschedule(this.scheduleCallback);\r\n }\r\n }\r\n\r\n //使用时间道具\r\n useTimeProp() {\r\n if (this.node.parent.getChildByName(\"Ice\").active == true || this.hammer == true\r\n || this.magicMask.active == true || this.timeNumber <= 1) {\r\n return;\r\n }\r\n let freezeBtn = this.node.parent.getChildByName(\"Bottom\").getChildByName(\"timeBtn\");\r\n if (freezeBtn.getComponent(\"btnControl\")._touch) {\r\n freezeBtn.getComponent(\"btnControl\").setTouch(false);\r\n if (cc.fx.GameConfig.GM_INFO.freezeAmount < 1) {\r\n if (cc.fx.GameConfig.GM_INFO.coin < 1500) {\r\n MiniGameSdk.API.showToast(\"金币不足,无法购买道具\");\r\n freezeBtn.getComponent(\"btnControl\").setTouch(true);\r\n return;\r\n }\r\n this.node.parent.parent.getChildByName(\"propWindow\").active = true;\r\n this.node.parent.parent.parent.getComponent(\"SceneManager\").openPropBuy(\"freeze\");\r\n }\r\n else {\r\n if (!this.node.parent.getChildByName(\"Ice\").active && !this.pause) {\r\n const timestamp = Date.now();\r\n this.freezeMask.active = true;\r\n\r\n this.pause = true;\r\n this.node.parent.getChildByName(\"Ice\").active = true;\r\n this.node.parent.getChildByName(\"Top\").getChildByName(\"Ice\").active = true;\r\n\r\n cc.fx.GameConfig.GM_INFO.freezeAmount -= 1;\r\n if (cc.fx.GameConfig.GM_INFO.freezeAmount < 0)\r\n cc.fx.GameConfig.GM_INFO.freezeAmount = 0;\r\n this.iceLabel.string = cc.fx.GameConfig.GM_INFO.freezeAmount.toString();\r\n let propInfo = cc.fx.StorageMessage.getStorage(\"prop\");\r\n propInfo.freezeAmount = cc.fx.GameConfig.GM_INFO.freezeAmount;\r\n propInfo.timestamp = timestamp;\r\n cc.fx.StorageMessage.setStorage(\"prop\", propInfo);\r\n cc.fx.GameTool.setUserProp(2001, cc.fx.GameConfig.GM_INFO.freezeAmount, (data) => {\r\n })\r\n let data = {\r\n id: \"2001\",\r\n num: -1\r\n }\r\n cc.fx.GameTool.shushu_Track(\"resource_cost\", data);\r\n }\r\n else MiniGameSdk.API.showToast(\"道具使用中,请稍后再试\");\r\n }\r\n }\r\n\r\n\r\n }\r\n\r\n //解开时间冻结\r\n openIce() {\r\n if (this.node.parent.getChildByName(\"Ice\").active) {\r\n this.freezeMask.active = false;\r\n let freezeBtn = this.node.parent.getChildByName(\"Bottom\").getChildByName(\"timeBtn\");\r\n freezeBtn.getComponent(\"btnControl\").setTouch(true);\r\n this.node.parent.getChildByName(\"Ice\").active = false;\r\n this.node.parent.getChildByName(\"Top\").getChildByName(\"Ice\").active = false;\r\n this.pause = false;\r\n // this.startTimeCutDown();\r\n }\r\n }\r\n\r\n handleBuySuccess(data) {\r\n this.pause = false;\r\n const timestamp = Date.now();\r\n // console.log(\"回调函数内:\",this.pause);\r\n let freezeBtn = this.node.parent.getChildByName(\"Bottom\").getChildByName(\"timeBtn\");\r\n let hammerBtn = this.node.parent.getChildByName(\"Bottom\").getChildByName(\"destroyBtn\");\r\n let magicBtn = this.node.parent.getChildByName(\"Bottom\").getChildByName(\"magicBtn\");\r\n if (data == \"freezeAmount\") freezeBtn.getComponent(\"btnControl\").setTouch(true);\r\n else if (data == \"hammerAmount\") hammerBtn.getComponent(\"btnControl\").setTouch(true);\r\n else if (data == \"magicAmount\") magicBtn.getComponent(\"btnControl\").setTouch(true);\r\n if (data == \"freezeAmount\") {\r\n cc.fx.GameConfig.GM_INFO.freezeAmount += 3;\r\n let propInfo = cc.fx.StorageMessage.getStorage(\"prop\");\r\n propInfo.freezeAmount = cc.fx.GameConfig.GM_INFO.freezeAmount;\r\n propInfo.timestamp = timestamp;\r\n cc.fx.StorageMessage.setStorage(\"prop\", propInfo);\r\n this.node.parent.parent.parent.getComponent(\"SceneManager\").closePropBuy();\r\n setTimeout(() => {\r\n this.iceLabel.string = cc.fx.GameConfig.GM_INFO.freezeAmount.toString();\r\n MiniGameSdk.API.showToast(\"购买冻结时间道具成功\");\r\n }, 200);\r\n\r\n\r\n }\r\n else if (data == \"magicAmount\") {\r\n cc.fx.GameConfig.GM_INFO.magicAmount += 3;\r\n let propInfo = cc.fx.StorageMessage.getStorage(\"prop\");\r\n propInfo.magicAmount = cc.fx.GameConfig.GM_INFO.magicAmount;\r\n propInfo.timestamp = timestamp;\r\n cc.fx.StorageMessage.setStorage(\"prop\", propInfo);\r\n this.node.parent.parent.parent.getComponent(\"SceneManager\").closePropBuy();\r\n setTimeout(() => {\r\n MiniGameSdk.API.showToast(\"购买锤子道具成功\");\r\n this.magicLabel.string = cc.fx.GameConfig.GM_INFO.magicAmount.toString();\r\n }, 200);\r\n\r\n }\r\n else if (data == \"hammerAmount\") {\r\n cc.fx.GameConfig.GM_INFO.hammerAmount += 3;\r\n let propInfo = cc.fx.StorageMessage.getStorage(\"prop\");\r\n propInfo.hammerAmount = cc.fx.GameConfig.GM_INFO.hammerAmount;\r\n propInfo.timestamp = timestamp;\r\n cc.fx.StorageMessage.setStorage(\"prop\", propInfo);\r\n this.node.parent.parent.parent.getComponent(\"SceneManager\").closePropBuy();\r\n setTimeout(() => {\r\n this.hammerLabel.string = cc.fx.GameConfig.GM_INFO.hammerAmount.toString();\r\n MiniGameSdk.API.showToast(\"购买魔法棒道具成功\");\r\n }, 200);\r\n\r\n }\r\n\r\n\r\n\r\n }\r\n\r\n //使用锤子道具\r\n useHammer() {\r\n if (this.node.parent.getChildByName(\"Ice\").active == true || this.hammer == true\r\n || this.magicMask.active == true || this.timeNumber <= 1) {\r\n return;\r\n }\r\n let hammerBtn = this.node.parent.getChildByName(\"Bottom\").getChildByName(\"destroyBtn\");\r\n if (hammerBtn.getComponent(\"btnControl\")._touch) {\r\n hammerBtn.getComponent(\"btnControl\").setTouch(false);\r\n if (cc.fx.GameConfig.GM_INFO.hammerAmount < 1) {\r\n if (cc.fx.GameConfig.GM_INFO.coin < 1500) {\r\n MiniGameSdk.API.showToast(\"金币不足,无法购买道具\");\r\n hammerBtn.getComponent(\"btnControl\").setTouch(true);\r\n return;\r\n }\r\n this.node.parent.parent.getChildByName(\"propWindow\").active = true;\r\n this.node.parent.parent.parent.getComponent(\"SceneManager\").openPropBuy(\"hammer\");\r\n }\r\n else {\r\n if (!this.hammer) {\r\n const timestamp = Date.now();\r\n this.hammerMask.active = true;\r\n\r\n this.hammer = true;\r\n cc.fx.GameConfig.GM_INFO.hammerAmount -= 1;\r\n if (cc.fx.GameConfig.GM_INFO.hammerAmount < 0)\r\n cc.fx.GameConfig.GM_INFO.hammerAmount = 0;\r\n this.hammerLabel.string = cc.fx.GameConfig.GM_INFO.hammerAmount.toString();\r\n let propInfo = cc.fx.StorageMessage.getStorage(\"prop\");\r\n console.log(\"锤子道具信息:\", propInfo);\r\n propInfo.hammerAmount = cc.fx.GameConfig.GM_INFO.hammerAmount;\r\n propInfo.timestamp = timestamp;\r\n cc.fx.StorageMessage.setStorage(\"prop\", propInfo);\r\n cc.fx.GameTool.setUserProp(2002, cc.fx.GameConfig.GM_INFO.hammerAmount, (data) => {\r\n })\r\n let data = {\r\n id: \"2002\",\r\n num: -1\r\n }\r\n cc.fx.GameTool.shushu_Track(\"resource_cost\", data);\r\n }\r\n else MiniGameSdk.API.showToast(\"道具使用中,请稍后再试\");\r\n }\r\n\r\n }\r\n\r\n }\r\n\r\n buyMagic() {\r\n if (cc.fx.GameConfig.GM_INFO.coin < 1500) {\r\n MiniGameSdk.API.showToast(\"金币不足,无法购买道具\");\r\n return;\r\n }\r\n cc.fx.GameTool.buyProp(2003, this.handleBuySuccess.bind(this, \"magicAmount\"));\r\n }\r\n\r\n buyHammer() {\r\n if (cc.fx.GameConfig.GM_INFO.coin < 1500) {\r\n MiniGameSdk.API.showToast(\"金币不足,无法购买道具\");\r\n return;\r\n }\r\n cc.fx.GameTool.buyProp(2002, this.handleBuySuccess.bind(this, \"hammerAmount\"));\r\n }\r\n\r\n buyFreeze() {\r\n if (cc.fx.GameConfig.GM_INFO.coin < 1500) {\r\n MiniGameSdk.API.showToast(\"金币不足,无法购买道具\");\r\n return;\r\n }\r\n cc.fx.GameTool.buyProp(2001, this.handleBuySuccess.bind(this, \"freezeAmount\"));\r\n }\r\n\r\n //使用魔法棒随机消除两个方块\r\n useMagic() {\r\n if (this.node.parent.getChildByName(\"Ice\").active == true || this.hammer == true\r\n || this.magicMask.active == true || this.timeNumber <= 1) {\r\n return;\r\n }\r\n let magicBtn = this.node.parent.getChildByName(\"Bottom\").getChildByName(\"magicBtn\");\r\n if (magicBtn.getComponent(\"btnControl\")._touch) {\r\n magicBtn.getComponent(\"btnControl\").setTouch(false);\r\n if (cc.fx.GameConfig.GM_INFO.magicAmount < 1) {\r\n if (cc.fx.GameConfig.GM_INFO.coin < 1500) {\r\n MiniGameSdk.API.showToast(\"金币不足,无法购买道具\");\r\n magicBtn.getComponent(\"btnControl\").setTouch(true);\r\n return;\r\n }\r\n this.node.parent.parent.getChildByName(\"propWindow\").active = true;\r\n this.node.parent.parent.parent.getComponent(\"SceneManager\").openPropBuy(\"magic\");\r\n // MiniGameSdk.API.showToast(\"魔法棒数量不足,自动购买魔法棒\");\r\n }\r\n else {\r\n const timestamp = Date.now();\r\n this.magicMask.active = true;\r\n setTimeout(() => {\r\n this.magicMask.active = false;\r\n magicBtn.getComponent(\"btnControl\").setTouch(true);\r\n }, 1000);\r\n\r\n cc.fx.GameConfig.GM_INFO.magicAmount -= 1;\r\n if (cc.fx.GameConfig.GM_INFO.magicAmount < 0)\r\n cc.fx.GameConfig.GM_INFO.magicAmount = 0;\r\n this.magicLabel.string = cc.fx.GameConfig.GM_INFO.magicAmount.toString();\r\n let propInfo = cc.fx.StorageMessage.getStorage(\"prop\");\r\n propInfo.magicAmount = cc.fx.GameConfig.GM_INFO.magicAmount;\r\n propInfo.timestamp = timestamp;\r\n cc.fx.StorageMessage.setStorage(\"prop\", propInfo);\r\n cc.fx.GameTool.setUserProp(2003, cc.fx.GameConfig.GM_INFO.magicAmount, (data) => {\r\n })\r\n let data = {\r\n id: \"2003\",\r\n num: -1\r\n }\r\n cc.fx.GameTool.shushu_Track(\"resource_cost\", data);\r\n let nomalArray = [];\r\n // this.magicBtn.node.active = false;\r\n for (let i = 0; i < this.blocks.length; i++) {\r\n // console.log(\"方块类型\",this.blocks[i].getComponent(\"Block\").type);\r\n if (this.blocks[i].getComponent(\"Block\").type == 3) {\r\n this.loackArray.push(this.blocks[i]);\r\n }\r\n else if (this.blocks[i].getComponent(\"Block\").type == 4) {\r\n this.freezeArray.push(this.blocks[i]);\r\n }\r\n else if (this.blocks[i].getComponent(\"Block\").type == 10) {\r\n if (this.blocks[i].getComponent(\"Block\").block_Info.node) {\r\n nomalArray.push(this.blocks[i].getComponent(\"Block\").block_Info.node);\r\n }\r\n else nomalArray.push(this.blocks[i]);\r\n }\r\n else {\r\n nomalArray.push(this.blocks[i]);\r\n }\r\n }\r\n if (nomalArray.length > 1) {\r\n nomalArray = cc.fx.GameTool.shuffleArray(nomalArray);\r\n nomalArray[0].getComponent(\"Block\").eliminate();\r\n let time = 0;\r\n if (nomalArray[0].getComponent(\"Block\").type == 1 || nomalArray[0].getComponent(\"Block\").type == 9) {\r\n time = 200;\r\n }\r\n if (time > 0) {\r\n setTimeout(() => {\r\n nomalArray[1].getComponent(\"Block\").eliminate();\r\n }, time);\r\n return;\r\n }\r\n else {\r\n nomalArray[1].getComponent(\"Block\").eliminate();\r\n return;\r\n }\r\n }\r\n else if (nomalArray.length == 1) {\r\n nomalArray[0].getComponent(\"Block\").eliminate();\r\n let time = 0;\r\n if (nomalArray[0].getComponent(\"Block\").type == 1 || nomalArray[0].getComponent(\"Block\").type == 9) {\r\n time = 200;\r\n }\r\n setTimeout(() => {\r\n if (this.freezeArray.length == 0 && this.loackArray.length == 0) {\r\n // console.log(\"只剩下一个块道具使用完毕\");\r\n }\r\n else {\r\n if (this.loackArray.length != 0) {\r\n // console.log(\"消除一个普通块后,消除一个带锁块\");\r\n this.loackArray[0].getComponent(\"Block\").eliminate();\r\n return;\r\n }\r\n else if (this.freezeArray.length != 0) {\r\n // console.log(\"消除一个普通块后,消除一个冻结块\");\r\n this.freezeArray[0].getComponent(\"Block\").eliminate();\r\n return;\r\n }\r\n }\r\n }, 200 + time);\r\n }\r\n else {\r\n let count = 2;\r\n if (this.loackArray.length != 0) {\r\n for (let i = 0; i < this.loackArray.length; i++) {\r\n // console.log(\"没有普通快,魔法消除一个带锁块\");\r\n this.loackArray[i].getComponent(\"Block\").eliminate();\r\n count -= 1;\r\n if (count == 0) {\r\n break;\r\n }\r\n }\r\n }\r\n\r\n setTimeout(() => {\r\n if (count != 0) {\r\n for (let i = 0; i < this.freezeArray.length; i++) {\r\n // console.log(\"没有普通快,魔法消除一个冻结块\");\r\n // this.freezeArray[i].getComponent(\"Block\").eliminate();\r\n count -= 1;\r\n if (count == 0) {\r\n break;\r\n }\r\n }\r\n }\r\n }, 100);\r\n }\r\n }\r\n }\r\n }\r\n\r\n //按下暂停按钮\r\n usePause() {\r\n if (this.pause) {\r\n this.pause = false;\r\n }\r\n else {\r\n this.pause = true;\r\n }\r\n }\r\n\r\n\r\n\r\n //根据关卡设置地图大小\r\n setMapInfo() {\r\n let width = 0;\r\n if (this.mapWidth < 10) {\r\n width = 0.2;\r\n }\r\n else if (this.mapWidth < 17) {\r\n width = 0.15 - (this.mapWidth - 11) * 0.01;\r\n }\r\n\r\n this.node.scale = 1.6 + (6 - this.mapWidth) * width;\r\n\r\n if (this.mapWidth == 8 && this.mapHeight > 13) {\r\n this.node.scale = 1;\r\n }\r\n\r\n // this.node.scale = 1;\r\n cc.fx.GameConfig.GM_INFO.scale = this.node.scale;\r\n // this.node.scale = 0.5;\r\n // console.log(this.node.scale);\r\n // this.node.scale = 1;\r\n }\r\n\r\n //创建门的粒子特效\r\n createParticle(block, jg) {\r\n let particle = cc.instantiate(MapConroler._instance.Block_Prop[9]);\r\n particle.parent = this.node;\r\n particle.zIndex = 1000;\r\n let width = Math.floor(block.width / 120);\r\n let height = Math.floor(block.height / 120);\r\n let name = \"\";\r\n\r\n if (jg == 0 || jg == 1) {\r\n let y = block.y + block.height;\r\n let x = block.x - block.width / 2;\r\n name = \"top_\" + width + \"_\" + height;\r\n if (jg == 1) {\r\n name = \"bot_\" + width + \"_\" + height;\r\n y = block.y;\r\n }\r\n if (block.anchorX == 0.5) {\r\n x = block.x;\r\n }\r\n else if (block.anchorX == 0.33) {\r\n x = block.x + block.width * (0.5 - 0.33);\r\n }\r\n else if (block.anchorX == 0.66) {\r\n x = block.x + block.width * (0.5 - 0.66);\r\n }\r\n particle.setPosition(x, y);\r\n }\r\n else if (jg == 2 || jg == 3) {\r\n name = \"left_\" + height + \"_\" + width;\r\n let x = block.x - block.width;\r\n let y = block.y + block.height / 2;\r\n if (block.anchorX == 0.5) {\r\n x = block.x - block.width / 2;\r\n }\r\n else if (block.anchorX == 0.33) {\r\n x = block.x - block.width * 0.33;\r\n }\r\n else if (block.anchorX == 0.66) {\r\n x = block.x + block.width * 0.66;\r\n }\r\n if (jg == 3) {\r\n name = \"right_\" + height + \"_\" + width;\r\n x = block.x;\r\n if (block.anchorX == 0.5) {\r\n x = block.x + block.width / 2;\r\n }\r\n else if (block.anchorX == 0.33) {\r\n x = block.x + block.width * 0.66;\r\n }\r\n else if (block.anchorX == 0.66) {\r\n x = block.x + block.width * 0.33;\r\n }\r\n }\r\n\r\n particle.setPosition(x, y);\r\n }\r\n\r\n let particleNode = particle.getChildByName(name);\r\n let color = block.getComponent(\"Block\").color - 1;\r\n\r\n particleNode.getComponent(cc.ParticleSystem).spriteFrame = particle.getComponent(\"Reduce\").Block_Color[color];\r\n particleNode.active = true;\r\n setTimeout(() => {\r\n cc.tween(particle)\r\n .to(2, { opacity: 0 })\r\n .call(() => {\r\n particle.destroy();\r\n })\r\n .start();\r\n }, 1200);\r\n }\r\n\r\n removeOneBlock() {\r\n // 移除所有方块\r\n for (let i = 0; i < this.blocks.length; i++) {\r\n if (this.blocks[i].opacity == 0) {\r\n this.blocks[i].destroy();\r\n this.blocks.splice(i, 1);\r\n }\r\n }\r\n }\r\n\r\n\r\n\r\n update(dt) {\r\n\r\n }\r\n}\r\n"]} \ No newline at end of file diff --git a/temp/quick-scripts/src/assets/Script/SceneManager.js.map b/temp/quick-scripts/src/assets/Script/SceneManager.js.map index 63d071b..bce9e8f 100644 --- a/temp/quick-scripts/src/assets/Script/SceneManager.js.map +++ b/temp/quick-scripts/src/assets/Script/SceneManager.js.map @@ -1 +1 @@ -{"version":3,"sources":["assets\\Script\\SceneManager.ts"],"names":[],"mappings":";;;;;AAAA,oBAAoB;AACpB,wEAAwE;AACxE,mBAAmB;AACnB,kFAAkF;AAClF,8BAA8B;AAC9B,kFAAkF;;;;;;;;;;;;;;;;;;;;;AAElF,6BAAgC;AAChC,iDAAgD;AAE1C,IAAA,KAAwB,EAAE,CAAC,UAAU,EAAnC,OAAO,aAAA,EAAE,QAAQ,cAAkB,CAAC;AAG5C;IAA0C,gCAAY;IAAtD;QAAA,qEAmRC;QAhRG,WAAK,GAAa,IAAI,CAAC;QAGvB,UAAI,GAAW,OAAO,CAAC;QAGvB,YAAM,GAAY,IAAI,CAAC;QAGvB,YAAM,GAAY,IAAI,CAAC;QAGvB,gBAAU,GAAY,IAAI,CAAC;QAG3B,WAAK,GAAY,IAAI,CAAC;QAItB,iBAAW,GAAqB,EAAE,CAAC;QAGnC,iBAAW,GAAqB,EAAE,CAAC;QAGnC,yDAAyD;QACzD,mDAAmD;QAEnD,WAAK,GAAY,KAAK,CAAC;QACvB,WAAK,GAAY,KAAK,CAAC;QACvB,WAAK,GAAY,KAAK,CAAC;QACvB,aAAO,GAAW,EAAE,CAAC;;IAiPzB,CAAC;IA7OG,wBAAwB;IAExB,6BAAM,GAAN;QACI,EAAE,CAAC,IAAI,CAAC,YAAY,CAAC,EAAE,CAAC,CAAC;QACzB,IAAI,CAAC,QAAQ,EAAE,CAAC;QAEhB,UAAU,CAAC;YACP,EAAE,CAAC,QAAQ,CAAC,YAAY,CAAC,WAAW,EAAE,UAAC,GAAG;gBACtC,IAAI,GAAG,EAAE;oBACL,6CAA6C;oBAC7C,OAAO;iBACV;gBACD,qCAAqC;YACzC,CAAC,CAAC,CAAC;QACP,CAAC,EAAE,IAAI,CAAC,CAAC;IAEb,CAAC;IAED,+BAAQ,GAAR;QAAA,iBAUC;QATG,IAAI,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC;QAC/C,IAAM,IAAI,GAAG,OAAO,GAAG,MAAM,CAAC;QAC9B,EAAE,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,EAAE,EAAE,CAAC,WAAW,EAAE,UAAC,GAAG,EAAE,WAA2B;YACrE,IAAI,GAAG,EAAE;gBACL,OAAO,CAAC,KAAK,CAAC,YAAY,EAAE,GAAG,CAAC,CAAC;gBACjC,OAAO;aACV;YACD,KAAI,CAAC,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC,YAAY,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,WAAW,GAAG,WAAW,CAAC;QAC5G,CAAC,CAAC,CAAA;IACN,CAAC;IAED,0CAAmB,GAAnB;QAAA,iBAaC;QAZG,IAAM,IAAI,GAAG,UAAU,CAAC;QACxB,EAAE,CAAC,SAAS,CAAC,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC,aAAa,EAAE,UAAC,GAAG,EAAE,MAA0B;YACzE,IAAI,GAAG,EAAE;gBACL,OAAO,CAAC,KAAK,CAAC,aAAa,EAAE,GAAG,CAAC,CAAC;gBAClC,OAAO;aACV;YAED,KAAI,CAAC,eAAe,GAAG,MAAM,CAAC;YAC9B,KAAI,CAAC,eAAe,EAAE,CAAC;YACvB,KAAI,CAAC,KAAK,GAAG,IAAI,CAAC;YAClB,qEAAqE;QACzE,CAAC,CAAC,CAAC;IACP,CAAC;IAED,wCAAiB,GAAjB;QACI,IAAM,KAAK,GAAG,CAAC,MAAM,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,SAAS,CAAC,CAAC;QAC5F,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,UAAC,CAAC,EAAE,CAAC;YACvB,IAAM,MAAM,GAAG,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;YACrC,IAAM,MAAM,GAAG,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;YACrC,IAAI,MAAM,KAAK,CAAC,CAAC;gBAAE,OAAO,CAAC,CAAC;YAC5B,IAAI,MAAM,KAAK,CAAC,CAAC;gBAAE,OAAO,CAAC,CAAC,CAAC;YAC7B,OAAO,MAAM,GAAG,MAAM,CAAC;QAC3B,CAAC,CAAC,CAAC;IAEP,CAAC;IAED,sCAAe,GAAf;QACI,IAAM,KAAK,GAAG,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC;QAC3C,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,UAAC,CAAC,EAAE,CAAC;YAC3B,sDAAsD;YACtD,IAAM,MAAM,GAAG,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;YAClD,IAAM,MAAM,GAAG,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;YAClD,IAAI,MAAM,KAAK,CAAC,CAAC;gBAAE,OAAO,CAAC,CAAC;YAC5B,IAAI,MAAM,KAAK,CAAC,CAAC;gBAAE,OAAO,CAAC,CAAC,CAAC;YAC7B,OAAO,MAAM,GAAG,MAAM,CAAC;QAC3B,CAAC,CAAC,CAAC;IACP,CAAC;IAED,8BAAO,GAAP;QACI,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,UAAC,CAAC,EAAE,CAAC;;YACvB,aAAa;YACb,IAAM,OAAO,GAAG,QAAQ,CAAC,OAAA,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,0CAAG,CAAC,MAAK,GAAG,EAAE,EAAE,CAAC,CAAC;YAC9D,IAAM,OAAO,GAAG,QAAQ,CAAC,OAAA,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,0CAAG,CAAC,MAAK,GAAG,EAAE,EAAE,CAAC,CAAC;YAC9D,OAAO,OAAO,GAAG,OAAO,CAAC;QAC7B,CAAC,CAAC,CAAC;IACP,CAAC;IAED,4BAAK,GAAL;IAEA,CAAC;IAED,gCAAS,GAAT;QACI,EAAE,CAAC,QAAQ,CAAC,SAAS,CAAC,WAAW,EAAE,UAAC,GAAG;YACnC,IAAI,GAAG,EAAE;gBACL,OAAO,CAAC,KAAK,CAAC,oBAAoB,EAAE,GAAG,CAAC,CAAC;aAC5C;iBAAM;gBACH,qCAAqC;gBACrC,EAAE,CAAC,QAAQ,CAAC,SAAS,CAAC,WAAW,CAAC,CAAC;aACtC;QACL,CAAC,CAAC,CAAC;IAEP,CAAC;IAED,iCAAU,GAAV;QACI,IAAI,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC,YAAY,CAAC,YAAY,CAAC,CAAC,MAAM,EAAE;YAC3F,IAAI,aAAW,CAAC,SAAS,CAAC,SAAS,IAAI,IAAI,EAAE;gBACzC,yBAAW,CAAC,GAAG,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC;gBACnC,EAAE,CAAC,EAAE,CAAC,QAAQ,CAAC,aAAa,CAAC,CAAC,CAAC,EAAE,UAAC,IAAI;gBACtC,CAAC,CAAC,CAAA;gBACF,IAAI,IAAI,GAAG;oBACP,IAAI,EAAE,aAAW,CAAC,SAAS,CAAC,UAAU;oBACtC,QAAQ,EAAE,aAAW,CAAC,SAAS,CAAC,QAAQ;oBACxC,MAAM,EAAE,SAAS;iBACpB,CAAA;gBACD,EAAE,CAAC,EAAE,CAAC,QAAQ,CAAC,YAAY,CAAC,cAAc,EAAE,IAAI,CAAC,CAAC;aACrD;YACD,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC,YAAY,CAAC,YAAY,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;YACnG,EAAE,CAAC,EAAE,CAAC,YAAY,CAAC,SAAS,CAAC,UAAU,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;YACxD,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,YAAY,CAAC,CAAC,MAAM,GAAG,IAAI,CAAC;YACrD,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,YAAY,CAAC,CAAC,YAAY,CAAC,EAAE,CAAC,QAAQ,CAAC,CAAC,YAAY,CAAC,CAAC,EAAE,IAAI,EAAE,KAAK,CAAC,CAAC;YAC9F,EAAE,CAAC,QAAQ,CAAC,YAAY,CAAC,WAAW,EAAE,UAAC,GAAG,EAAE,KAAK;gBAC7C,IAAI,GAAG,EAAE;oBACL,OAAO,CAAC,KAAK,CAAC,iBAAiB,EAAE,GAAG,CAAC,CAAC;oBACtC,OAAO;iBACV;YAEL,CAAC,CAAC,CAAC;YACH,UAAU,CAAC;gBACP,EAAE,CAAC,QAAQ,CAAC,SAAS,CAAC,WAAW,CAAC,CAAC;YACvC,CAAC,EAAE,IAAI,CAAC,CAAC;SACZ;IACL,CAAC;IAGD,2CAAoB,GAApB,UAAqB,KAAgB,EAAE,QAAoB;QAA3D,iBAwBC;QAvBG,IAAM,UAAU,GAAG,EAAE,CAAC,CAAC,YAAY;QACnC,IAAI,KAAK,GAAG,CAAC,CAAC;QAEd,IAAM,YAAY,GAAG;YACjB,IAAI,KAAK,GAAG,CAAC,CAAC;YACd,OAAO,KAAK,GAAG,KAAK,CAAC,MAAM,IAAI,KAAK,GAAG,UAAU,EAAE;gBAC/C,IAAM,IAAI,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC;gBAC1B,IAAI,IAAI,EAAE;oBAEN,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC;iBACvB;gBACD,KAAK,EAAE,CAAC;gBACR,KAAK,EAAE,CAAC;aACX;YAED,IAAI,KAAK,GAAG,KAAK,CAAC,MAAM,EAAE;gBACtB,KAAI,CAAC,YAAY,CAAC,YAAY,EAAE,CAAC,CAAC,CAAC;aACtC;iBAAM;gBACH,QAAQ,EAAE,CAAC;aACd;QACL,CAAC,CAAC;QAEF,YAAY,EAAE,CAAC;IACnB,CAAC;IAED,aAAa;IACb,yCAAkB,GAAlB;QACI,IAAM,QAAQ,GAAG,EAAE,CAAC,QAAQ,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC;QACjD,IAAI,CAAC,oBAAoB,CAAC,QAAQ,EAAE;YAChC,EAAE,CAAC,QAAQ,CAAC,SAAS,CAAC,WAAW,CAAC,CAAC;QACvC,CAAC,CAAC,CAAC;IACP,CAAC;IAED,gCAAS,GAAT;QACI,EAAE,CAAC,EAAE,CAAC,YAAY,CAAC,SAAS,CAAC,UAAU,CAAC,cAAc,EAAE,IAAI,CAAC,CAAC;QAC9D,IAAI,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,YAAY,CAAC,CAAC,MAAM,EAAE;YAC9C,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,YAAY,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;YACtD,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC,MAAM,GAAG,IAAI,CAAC;YAChD,aAAW,CAAC,SAAS,CAAC,KAAK,GAAG,IAAI,CAAC;SACtC;IAEL,CAAC;IAED,iCAAU,GAAV;QACI,EAAE,CAAC,EAAE,CAAC,YAAY,CAAC,SAAS,CAAC,UAAU,CAAC,cAAc,EAAE,IAAI,CAAC,CAAC;QAC9D,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,YAAY,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;QACrD,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC,MAAM,GAAG,KAAK,CAAC;QACjD,IAAI,aAAW,CAAC,SAAS,CAAC,IAAI,CAAC,MAAM,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC,MAAM,IAAI,KAAK,EAAE;YACzE,aAAW,CAAC,SAAS,CAAC,KAAK,GAAG,KAAK,CAAC;SACvC;IACL,CAAC;IAED,kCAAW,GAAX,UAAY,IAAI;QACZ,aAAW,CAAC,SAAS,CAAC,KAAK,GAAG,IAAI,CAAC;QACnC,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;QACpB,IAAI,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC,cAAc,CAAC,YAAY,CAAC,CAAC;QAC/E,UAAU,CAAC,MAAM,GAAG,IAAI,CAAC;QACzB,UAAU,CAAC,cAAc,CAAC,QAAQ,CAAC,CAAC,MAAM,GAAG,KAAK,CAAC;QACnD,UAAU,CAAC,cAAc,CAAC,QAAQ,CAAC,CAAC,MAAM,GAAG,KAAK,CAAC;QACnD,UAAU,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC,MAAM,GAAG,KAAK,CAAC;QAClD,UAAU,CAAC,cAAc,CAAC,SAAS,CAAC,CAAC,YAAY,CAAC,YAAY,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;QAC/E,UAAU,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC,MAAM,GAAG,IAAI,CAAC;IAClD,CAAC;IAED,+BAAQ,GAAR;QACI,EAAE,CAAC,EAAE,CAAC,YAAY,CAAC,SAAS,CAAC,UAAU,CAAC,WAAW,EAAE,IAAI,CAAC,CAAC;QAC3D,IAAI,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC,cAAc,CAAC,YAAY,CAAC,CAAC;QAC/E,IAAI,UAAU,CAAC,cAAc,CAAC,SAAS,CAAC,CAAC,YAAY,CAAC,YAAY,CAAC,CAAC,MAAM,EAAE;YACxE,UAAU,CAAC,cAAc,CAAC,SAAS,CAAC,CAAC,YAAY,CAAC,YAAY,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;YAChF,IAAI,IAAI,CAAC,OAAO,IAAI,QAAQ;gBACxB,aAAW,CAAC,SAAS,CAAC,SAAS,EAAE,CAAC;iBACjC,IAAI,IAAI,CAAC,OAAO,IAAI,QAAQ;gBAC7B,aAAW,CAAC,SAAS,CAAC,SAAS,EAAE,CAAC;iBACjC,IAAI,IAAI,CAAC,OAAO,IAAI,OAAO;gBAC5B,aAAW,CAAC,SAAS,CAAC,QAAQ,EAAE,CAAC;SACxC;IACL,CAAC;IACD,MAAM;IACN,+BAAQ,GAAR;QAAA,iBAeC;QAdG,kBAAkB;QAClB,EAAE,CAAC,YAAY,CAAC,UAAU,CAAC,MAAM,EAAE,UAAC,GAAU,EAAE,MAA8B;YAC1E,MAAM,CAAC,IAAI,CAAC,aAAa,EAAE,EAAE,CAAC,MAAM,EAAE,UAAC,GAAU,EAAE,MAAiB;gBAChE,IAAI,GAAG,EAAE;oBACL,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,OAAO,IAAI,GAAG,CAAC,CAAC;oBAC7B,OAAO;iBACV;gBACD,IAAI,MAAM,EAAE;oBACR,IAAM,QAAQ,GAAG,EAAE,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;oBACxC,KAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;oBAC7B,OAAO,CAAC,GAAG,CAAC,kBAAkB,EAAE,QAAQ,CAAC,MAAM,CAAC,CAAC;iBACpD;YACL,CAAC,CAAC,CAAC;QACP,CAAC,CAAC,CAAC;IACP,CAAC;IAGD,mCAAY,GAAZ;QACI,aAAW,CAAC,SAAS,CAAC,KAAK,GAAG,KAAK,CAAC;QACpC,IAAI,SAAS,GAAG,aAAW,CAAC,SAAS,CAAC,IAAI,CAAC,MAAM,CAAC,cAAc,CAAC,QAAQ,CAAC,CAAC,cAAc,CAAC,SAAS,CAAC,CAAC;QACrG,IAAI,SAAS,GAAG,aAAW,CAAC,SAAS,CAAC,IAAI,CAAC,MAAM,CAAC,cAAc,CAAC,QAAQ,CAAC,CAAC,cAAc,CAAC,YAAY,CAAC,CAAC;QACxG,IAAI,QAAQ,GAAG,aAAW,CAAC,SAAS,CAAC,IAAI,CAAC,MAAM,CAAC,cAAc,CAAC,QAAQ,CAAC,CAAC,cAAc,CAAC,UAAU,CAAC,CAAC;QACrG,IAAI,IAAI,CAAC,OAAO,IAAI,QAAQ;YAAE,SAAS,CAAC,YAAY,CAAC,YAAY,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;aAC7E,IAAI,IAAI,CAAC,OAAO,IAAI,QAAQ;YAAE,SAAS,CAAC,YAAY,CAAC,YAAY,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;aAClF,IAAI,IAAI,CAAC,OAAO,IAAI,OAAO;YAAE,QAAQ,CAAC,YAAY,CAAC,YAAY,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;QAErF,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC,cAAc,CAAC,YAAY,CAAC,CAAC,MAAM,GAAG,KAAK,CAAC;IACjF,CAAC;IAED,6BAAM,GAAN,UAAO,EAAE;IAET,CAAC;IA/QD;QADC,QAAQ,CAAC,EAAE,CAAC,KAAK,CAAC;+CACI;IAGvB;QADC,QAAQ;8CACc;IAGvB;QADC,QAAQ,CAAC,EAAE,CAAC,IAAI,CAAC;gDACK;IAGvB;QADC,QAAQ,CAAC,EAAE,CAAC,IAAI,CAAC;gDACK;IAGvB;QADC,QAAQ,CAAC,EAAE,CAAC,IAAI,CAAC;oDACS;IAG3B;QADC,QAAQ,CAAC,EAAE,CAAC,IAAI,CAAC;+CACI;IAItB;QADC,QAAQ,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC,MAAM,CAAC,EAAE,OAAO,EAAE,MAAM,EAAE,CAAC;qDACd;IAGnC;QADC,QAAQ,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC,MAAM,CAAC,EAAE,OAAO,EAAE,MAAM,EAAE,CAAC;qDACd;IAzBlB,YAAY;QADhC,OAAO;OACa,YAAY,CAmRhC;IAAD,mBAAC;CAnRD,AAmRC,CAnRyC,EAAE,CAAC,SAAS,GAmRrD;kBAnRoB,YAAY","file":"","sourceRoot":"/","sourcesContent":["// Learn TypeScript:\r\n// - https://docs.cocos.com/creator/manual/en/scripting/typescript.html\r\n// Learn Attribute:\r\n// - https://docs.cocos.com/creator/manual/en/scripting/reference/attributes.html\r\n// Learn life-cycle callbacks:\r\n// - https://docs.cocos.com/creator/manual/en/scripting/life-cycle-callbacks.html\r\n\r\nimport MapConroler from \"./Map\";\r\nimport { MiniGameSdk } from \"./Sdk/MiniGameSdk\";\r\n\r\nconst { ccclass, property } = cc._decorator;\r\n\r\n@ccclass\r\nexport default class SceneManager extends cc.Component {\r\n\r\n @property(cc.Label)\r\n label: cc.Label = null;\r\n\r\n @property\r\n text: string = 'hello';\r\n\r\n @property(cc.Node)\r\n freeze: cc.Node = null;\r\n\r\n @property(cc.Node)\r\n hammer: cc.Node = null;\r\n\r\n @property(cc.Node)\r\n magic_wand: cc.Node = null;\r\n\r\n @property(cc.Node)\r\n pause: cc.Node = null;\r\n\r\n\r\n @property({ type: [cc.Prefab], tooltip: \"方块数组\" })\r\n Block_Array: Array = [];\r\n\r\n @property({ type: [cc.Prefab], tooltip: \"墙壁数组\" })\r\n Wall_Prefab: Array = [];\r\n\r\n particleEffects: cc.ParticleAsset[];\r\n // @property({type: [cc.ParticleSystem], tooltip:\"粒子数组\"})\r\n // particleEffects : Array = [];\r\n\r\n load1: boolean = false;\r\n load2: boolean = false;\r\n load3: boolean = false;\r\n btnName: string = '';\r\n callBack: any;\r\n\r\n\r\n // LIFE-CYCLE CALLBACKS:\r\n\r\n onLoad() {\r\n cc.game.setFrameRate(63);\r\n this.changeBg();\r\n\r\n setTimeout(() => {\r\n cc.director.preloadScene(\"HomeScene\", (err) => {\r\n if (err) {\r\n // console.error('预加载 HomeScene 场景失败:', err);\r\n return;\r\n }\r\n // console.log('成功预加载 HomeScene 场景');\r\n });\r\n }, 1000);\r\n\r\n }\r\n\r\n changeBg() {\r\n let number = Math.floor(Math.random() * 8) + 1;\r\n const path = 'bg/bg' + number;\r\n cc.resources.load(path, cc.SpriteFrame, (err, spriteFrame: cc.SpriteFrame) => {\r\n if (err) {\r\n console.error('动态加载背景图失败:', err);\r\n return;\r\n }\r\n this.node.getChildByName(\"Game\").getChildByName(\"bg\").getComponent(cc.Sprite).spriteFrame = spriteFrame;\r\n })\r\n }\r\n\r\n loadParticleEffects() {\r\n const path = 'Particle';\r\n cc.resources.loadDir(path, cc.ParticleAsset, (err, assets: cc.ParticleAsset[]) => {\r\n if (err) {\r\n console.error('动态加载粒子特效失败:', err);\r\n return;\r\n }\r\n\r\n this.particleEffects = assets;\r\n this.setParticleSort();\r\n this.load3 = true;\r\n //console.log('粒子特效加载成功,共加载了', this.particleEffects.length, '个粒子特效');\r\n });\r\n }\r\n\r\n setWallPrefabSort() {\r\n const order = ['down', 'downLeft', 'downRight', 'left', 'right', 'up', 'upLeft', 'upRight'];\r\n this.Wall_Prefab.sort((a, b) => {\r\n const indexA = order.indexOf(a.name);\r\n const indexB = order.indexOf(b.name);\r\n if (indexA === -1) return 1;\r\n if (indexB === -1) return -1;\r\n return indexA - indexB;\r\n });\r\n\r\n }\r\n\r\n setParticleSort() {\r\n const order = ['top', 'bot', 'rig', 'lef'];\r\n this.particleEffects.sort((a, b) => {\r\n // console.log(a.name.substr(0,3),b.name.substr(0,3));\r\n const indexA = order.indexOf(a.name.substr(0, 3));\r\n const indexB = order.indexOf(b.name.substr(0, 3));\r\n if (indexA === -1) return 1;\r\n if (indexB === -1) return -1;\r\n return indexA - indexB;\r\n });\r\n }\r\n\r\n setSort() {\r\n this.Block_Array.sort((a, b) => {\r\n // 从名称中提取数字部分\r\n const numberA = parseInt(a.name.match(/\\d+/)?.[0] || '0', 10);\r\n const numberB = parseInt(b.name.match(/\\d+/)?.[0] || '0', 10);\r\n return numberA - numberB;\r\n });\r\n }\r\n\r\n start() {\r\n\r\n }\r\n\r\n startGame() {\r\n cc.director.loadScene(\"HomeScene\", (err) => {\r\n if (err) {\r\n console.error('加载 HomeScene 场景失败:', err);\r\n } else {\r\n // console.log('成功切换到 HomeScene 场景');\r\n cc.director.loadScene(\"HomeScene\");\r\n }\r\n });\r\n\r\n }\r\n\r\n returnHome() {\r\n if (this.node.getChildByName(\"Pause\").getChildByName(\"btn\").getComponent(\"btnControl\")._touch) {\r\n if (MapConroler._instance.gameStart == true) {\r\n MiniGameSdk.API.showToast(\"体力值减少\");\r\n cc.fx.GameTool.setUserHealth(-1, (data) => {\r\n })\r\n let data = {\r\n time: MapConroler._instance.count_Time,\r\n add_Time: MapConroler._instance.add_Time,\r\n result: \"give_up\"\r\n }\r\n cc.fx.GameTool.shushu_Track(\"finish_stage\", data);\r\n }\r\n this.node.getChildByName(\"Pause\").getChildByName(\"btn\").getComponent(\"btnControl\").setTouch(false);\r\n cc.fx.AudioManager._instance.playEffect(\"zhuan1\", null);\r\n this.node.getChildByName(\"zhuanchang\").active = true;\r\n this.node.getChildByName(\"zhuanchang\").getComponent(sp.Skeleton).setAnimation(1, \"up\", false);\r\n cc.director.preloadScene(\"HomeScene\", (err, asset) => {\r\n if (err) {\r\n console.error('动态加载 Prefab 失败:', err);\r\n return;\r\n }\r\n\r\n });\r\n setTimeout(() => {\r\n cc.director.loadScene(\"HomeScene\");\r\n }, 1200);\r\n }\r\n }\r\n\r\n\r\n destroyNodesInFrames(nodes: cc.Node[], callback: () => void) {\r\n const BATCH_SIZE = 10; // 每帧销毁的节点数量\r\n let index = 0;\r\n\r\n const destroyBatch = () => {\r\n let count = 0;\r\n while (index < nodes.length && count < BATCH_SIZE) {\r\n const node = nodes[index];\r\n if (node) {\r\n\r\n node.active = false;\r\n }\r\n index++;\r\n count++;\r\n }\r\n\r\n if (index < nodes.length) {\r\n this.scheduleOnce(destroyBatch, 6);\r\n } else {\r\n callback();\r\n }\r\n };\r\n\r\n destroyBatch();\r\n }\r\n\r\n // 改进后的切换场景方法\r\n switchToEmptyScene() {\r\n const allNodes = cc.director.getScene().children;\r\n this.destroyNodesInFrames(allNodes, () => {\r\n cc.director.loadScene(\"HomeScene\");\r\n });\r\n }\r\n\r\n openPause() {\r\n cc.fx.AudioManager._instance.playEffect(\"anniu_little\", null);\r\n if (this.pause.getComponent(\"btnControl\")._touch) {\r\n this.pause.getComponent(\"btnControl\").setTouch(false);\r\n this.node.getChildByName(\"Pause\").active = true;\r\n MapConroler._instance.pause = true;\r\n }\r\n\r\n }\r\n\r\n closePause() {\r\n cc.fx.AudioManager._instance.playEffect(\"anniu_little\", null);\r\n this.pause.getComponent(\"btnControl\").setTouch(true);\r\n this.node.getChildByName(\"Pause\").active = false;\r\n if (MapConroler._instance.node.parent.getChildByName(\"Ice\").active == false) {\r\n MapConroler._instance.pause = false;\r\n }\r\n }\r\n\r\n openPropBuy(name) {\r\n MapConroler._instance.pause = true;\r\n this.btnName = name;\r\n let propWindow = this.node.getChildByName(\"Game\").getChildByName(\"propWindow\");\r\n propWindow.active = true;\r\n propWindow.getChildByName(\"freeze\").active = false;\r\n propWindow.getChildByName(\"hammer\").active = false;\r\n propWindow.getChildByName(\"magic\").active = false;\r\n propWindow.getChildByName(\"buy_Btn\").getComponent(\"btnControl\").setTouch(true);\r\n propWindow.getChildByName(name).active = true;\r\n }\r\n\r\n clickBtn() {\r\n cc.fx.AudioManager._instance.playEffect(\"anniu_Big\", null);\r\n let propWindow = this.node.getChildByName(\"Game\").getChildByName(\"propWindow\");\r\n if (propWindow.getChildByName(\"buy_Btn\").getComponent(\"btnControl\")._touch) {\r\n propWindow.getChildByName(\"buy_Btn\").getComponent(\"btnControl\").setTouch(false);\r\n if (this.btnName == \"freeze\")\r\n MapConroler._instance.buyFreeze();\r\n else if (this.btnName == \"hammer\")\r\n MapConroler._instance.buyHammer();\r\n else if (this.btnName == \"magic\")\r\n MapConroler._instance.buyMagic();\r\n }\r\n }\r\n //打开商店\r\n openShop() {\r\n // 加载 shop bundle\r\n cc.assetManager.loadBundle('shop', (err: Error, bundle: cc.AssetManager.Bundle) => {\r\n bundle.load('prefab/shop', cc.Prefab, (err: Error, prefab: cc.Prefab) => {\r\n if (err) {\r\n cc.error(err.message || err);\r\n return;\r\n }\r\n if (prefab) {\r\n const shopNode = cc.instantiate(prefab);\r\n this.node.addChild(shopNode);\r\n console.log(\"shopNode parent:\", shopNode.parent);\r\n }\r\n });\r\n });\r\n }\r\n\r\n\r\n closePropBuy() {\r\n MapConroler._instance.pause = false;\r\n let freezeBtn = MapConroler._instance.node.parent.getChildByName(\"Bottom\").getChildByName(\"timeBtn\");\r\n let hammerBtn = MapConroler._instance.node.parent.getChildByName(\"Bottom\").getChildByName(\"destroyBtn\");\r\n let magicBtn = MapConroler._instance.node.parent.getChildByName(\"Bottom\").getChildByName(\"magicBtn\");\r\n if (this.btnName == \"freeze\") freezeBtn.getComponent(\"btnControl\").setTouch(true);\r\n else if (this.btnName == \"hammer\") hammerBtn.getComponent(\"btnControl\").setTouch(true);\r\n else if (this.btnName == \"magic\") magicBtn.getComponent(\"btnControl\").setTouch(true);\r\n\r\n this.node.getChildByName(\"Game\").getChildByName(\"propWindow\").active = false;\r\n }\r\n\r\n update(dt) {\r\n\r\n }\r\n}\r\n"]} \ No newline at end of file +{"version":3,"sources":["assets\\Script\\SceneManager.ts"],"names":[],"mappings":"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","file":"","sourceRoot":"/","sourcesContent":["// Learn TypeScript:\r\n// - https://docs.cocos.com/creator/manual/en/scripting/typescript.html\r\n// Learn Attribute:\r\n// - https://docs.cocos.com/creator/manual/en/scripting/reference/attributes.html\r\n// Learn life-cycle callbacks:\r\n// - https://docs.cocos.com/creator/manual/en/scripting/life-cycle-callbacks.html\r\n\r\nimport MapConroler from \"./Map\";\r\nimport { MiniGameSdk } from \"./Sdk/MiniGameSdk\";\r\n\r\nconst { ccclass, property } = cc._decorator;\r\n\r\n@ccclass\r\nexport default class SceneManager extends cc.Component {\r\n\r\n @property(cc.Label)\r\n label: cc.Label = null;\r\n\r\n @property\r\n text: string = 'hello';\r\n\r\n @property(cc.Node)\r\n freeze: cc.Node = null;\r\n\r\n @property(cc.Node)\r\n hammer: cc.Node = null;\r\n\r\n @property(cc.Node)\r\n magic_wand: cc.Node = null;\r\n\r\n @property(cc.Node)\r\n pause: cc.Node = null;\r\n\r\n\r\n @property({ type: [cc.Prefab], tooltip: \"方块数组\" })\r\n Block_Array: Array = [];\r\n\r\n @property({ type: [cc.Prefab], tooltip: \"墙壁数组\" })\r\n Wall_Prefab: Array = [];\r\n\r\n particleEffects: cc.ParticleAsset[];\r\n // @property({type: [cc.ParticleSystem], tooltip:\"粒子数组\"})\r\n // particleEffects : Array = [];\r\n\r\n load1: boolean = false;\r\n load2: boolean = false;\r\n load3: boolean = false;\r\n btnName: string = '';\r\n callBack: any;\r\n\r\n\r\n // LIFE-CYCLE CALLBACKS:\r\n\r\n onLoad() {\r\n cc.game.setFrameRate(63);\r\n this.changeBg();\r\n\r\n setTimeout(() => {\r\n cc.director.preloadScene(\"HomeScene\", (err) => {\r\n if (err) {\r\n // console.error('预加载 HomeScene 场景失败:', err);\r\n return;\r\n }\r\n // console.log('成功预加载 HomeScene 场景');\r\n });\r\n }, 1000);\r\n\r\n }\r\n\r\n changeBg() {\r\n let number = Math.floor(Math.random() * 8) + 1;\r\n const path = 'bg/bg' + number;\r\n cc.resources.load(path, cc.SpriteFrame, (err, spriteFrame: cc.SpriteFrame) => {\r\n if (err) {\r\n console.error('动态加载背景图失败:', err);\r\n return;\r\n }\r\n this.node.getChildByName(\"Game\").getChildByName(\"bg\").getComponent(cc.Sprite).spriteFrame = spriteFrame;\r\n })\r\n }\r\n\r\n loadParticleEffects() {\r\n const path = 'Particle';\r\n cc.resources.loadDir(path, cc.ParticleAsset, (err, assets: cc.ParticleAsset[]) => {\r\n if (err) {\r\n console.error('动态加载粒子特效失败:', err);\r\n return;\r\n }\r\n\r\n this.particleEffects = assets;\r\n this.setParticleSort();\r\n this.load3 = true;\r\n //console.log('粒子特效加载成功,共加载了', this.particleEffects.length, '个粒子特效');\r\n });\r\n }\r\n\r\n setWallPrefabSort() {\r\n const order = ['down', 'downLeft', 'downRight', 'left', 'right', 'up', 'upLeft', 'upRight'];\r\n this.Wall_Prefab.sort((a, b) => {\r\n const indexA = order.indexOf(a.name);\r\n const indexB = order.indexOf(b.name);\r\n if (indexA === -1) return 1;\r\n if (indexB === -1) return -1;\r\n return indexA - indexB;\r\n });\r\n\r\n }\r\n\r\n setParticleSort() {\r\n const order = ['top', 'bot', 'rig', 'lef'];\r\n this.particleEffects.sort((a, b) => {\r\n // console.log(a.name.substr(0,3),b.name.substr(0,3));\r\n const indexA = order.indexOf(a.name.substr(0, 3));\r\n const indexB = order.indexOf(b.name.substr(0, 3));\r\n if (indexA === -1) return 1;\r\n if (indexB === -1) return -1;\r\n return indexA - indexB;\r\n });\r\n }\r\n\r\n setSort() {\r\n this.Block_Array.sort((a, b) => {\r\n // 从名称中提取数字部分\r\n const numberA = parseInt(a.name.match(/\\d+/)?.[0] || '0', 10);\r\n const numberB = parseInt(b.name.match(/\\d+/)?.[0] || '0', 10);\r\n return numberA - numberB;\r\n });\r\n }\r\n\r\n start() {\r\n\r\n }\r\n\r\n startGame() {\r\n cc.director.loadScene(\"HomeScene\", (err) => {\r\n if (err) {\r\n console.error('加载 HomeScene 场景失败:', err);\r\n } else {\r\n // console.log('成功切换到 HomeScene 场景');\r\n cc.director.loadScene(\"HomeScene\");\r\n }\r\n });\r\n\r\n }\r\n\r\n returnHome() {\r\n if (this.node.getChildByName(\"Pause\").getChildByName(\"btn\").getComponent(\"btnControl\")._touch) {\r\n if (MapConroler._instance.gameStart == true) {\r\n MiniGameSdk.API.showToast(\"体力值减少\");\r\n cc.fx.GameTool.setUserHealth(-1, (data) => {\r\n })\r\n<<<<<<< HEAD\r\n if(MapConroler._instance.count_Time){\r\n let count_Time = MapConroler._instance.count_Time;\r\n let add_Time = MapConroler._instance.add_Time;\r\n let data = {\r\n time:count_Time, \r\n add_Time:add_Time,\r\n result:\"give_up\"\r\n }\r\n cc.fx.GameTool.shushu_Track(\"finish_stage\",data);\r\n }\r\n=======\r\n let data = {\r\n time: MapConroler._instance.count_Time,\r\n add_Time: MapConroler._instance.add_Time,\r\n result: \"give_up\"\r\n }\r\n cc.fx.GameTool.shushu_Track(\"finish_stage\", data);\r\n>>>>>>> 0a31a7a5abc2c505bf743aa596e1c765a0405152\r\n }\r\n this.node.getChildByName(\"Pause\").getChildByName(\"btn\").getComponent(\"btnControl\").setTouch(false);\r\n cc.fx.AudioManager._instance.playEffect(\"zhuan1\", null);\r\n this.node.getChildByName(\"zhuanchang\").active = true;\r\n this.node.getChildByName(\"zhuanchang\").getComponent(sp.Skeleton).setAnimation(1, \"up\", false);\r\n cc.director.preloadScene(\"HomeScene\", (err, asset) => {\r\n if (err) {\r\n console.error('动态加载 Prefab 失败:', err);\r\n return;\r\n }\r\n\r\n });\r\n setTimeout(() => {\r\n cc.director.loadScene(\"HomeScene\");\r\n }, 1200);\r\n }\r\n }\r\n\r\n\r\n destroyNodesInFrames(nodes: cc.Node[], callback: () => void) {\r\n const BATCH_SIZE = 10; // 每帧销毁的节点数量\r\n let index = 0;\r\n\r\n const destroyBatch = () => {\r\n let count = 0;\r\n while (index < nodes.length && count < BATCH_SIZE) {\r\n const node = nodes[index];\r\n if (node) {\r\n\r\n node.active = false;\r\n }\r\n index++;\r\n count++;\r\n }\r\n\r\n if (index < nodes.length) {\r\n this.scheduleOnce(destroyBatch, 6);\r\n } else {\r\n callback();\r\n }\r\n };\r\n\r\n destroyBatch();\r\n }\r\n\r\n // 改进后的切换场景方法\r\n switchToEmptyScene() {\r\n const allNodes = cc.director.getScene().children;\r\n this.destroyNodesInFrames(allNodes, () => {\r\n cc.director.loadScene(\"HomeScene\");\r\n });\r\n }\r\n\r\n openPause() {\r\n cc.fx.AudioManager._instance.playEffect(\"anniu_little\", null);\r\n if (this.pause.getComponent(\"btnControl\")._touch) {\r\n this.pause.getComponent(\"btnControl\").setTouch(false);\r\n this.node.getChildByName(\"Pause\").active = true;\r\n MapConroler._instance.pause = true;\r\n }\r\n\r\n }\r\n\r\n closePause() {\r\n cc.fx.AudioManager._instance.playEffect(\"anniu_little\", null);\r\n this.pause.getComponent(\"btnControl\").setTouch(true);\r\n this.node.getChildByName(\"Pause\").active = false;\r\n if (MapConroler._instance.node.parent.getChildByName(\"Ice\").active == false) {\r\n MapConroler._instance.pause = false;\r\n }\r\n }\r\n\r\n openPropBuy(name) {\r\n MapConroler._instance.pause = true;\r\n this.btnName = name;\r\n let propWindow = this.node.getChildByName(\"Game\").getChildByName(\"propWindow\");\r\n propWindow.active = true;\r\n propWindow.getChildByName(\"freeze\").active = false;\r\n propWindow.getChildByName(\"hammer\").active = false;\r\n propWindow.getChildByName(\"magic\").active = false;\r\n propWindow.getChildByName(\"buy_Btn\").getComponent(\"btnControl\").setTouch(true);\r\n propWindow.getChildByName(name).active = true;\r\n }\r\n\r\n clickBtn() {\r\n cc.fx.AudioManager._instance.playEffect(\"anniu_Big\", null);\r\n let propWindow = this.node.getChildByName(\"Game\").getChildByName(\"propWindow\");\r\n if (propWindow.getChildByName(\"buy_Btn\").getComponent(\"btnControl\")._touch) {\r\n propWindow.getChildByName(\"buy_Btn\").getComponent(\"btnControl\").setTouch(false);\r\n if (this.btnName == \"freeze\")\r\n MapConroler._instance.buyFreeze();\r\n else if (this.btnName == \"hammer\")\r\n MapConroler._instance.buyHammer();\r\n else if (this.btnName == \"magic\")\r\n MapConroler._instance.buyMagic();\r\n }\r\n }\r\n //打开商店\r\n openShop() {\r\n // 加载 shop bundle\r\n cc.assetManager.loadBundle('shop', (err: Error, bundle: cc.AssetManager.Bundle) => {\r\n bundle.load('prefab/shop', cc.Prefab, (err: Error, prefab: cc.Prefab) => {\r\n if (err) {\r\n cc.error(err.message || err);\r\n return;\r\n }\r\n if (prefab) {\r\n const shopNode = cc.instantiate(prefab);\r\n this.node.addChild(shopNode);\r\n console.log(\"shopNode parent:\", shopNode.parent);\r\n }\r\n });\r\n });\r\n }\r\n\r\n\r\n closePropBuy() {\r\n MapConroler._instance.pause = false;\r\n let freezeBtn = MapConroler._instance.node.parent.getChildByName(\"Bottom\").getChildByName(\"timeBtn\");\r\n let hammerBtn = MapConroler._instance.node.parent.getChildByName(\"Bottom\").getChildByName(\"destroyBtn\");\r\n let magicBtn = MapConroler._instance.node.parent.getChildByName(\"Bottom\").getChildByName(\"magicBtn\");\r\n if (this.btnName == \"freeze\") freezeBtn.getComponent(\"btnControl\").setTouch(true);\r\n else if (this.btnName == \"hammer\") hammerBtn.getComponent(\"btnControl\").setTouch(true);\r\n else if (this.btnName == \"magic\") magicBtn.getComponent(\"btnControl\").setTouch(true);\r\n\r\n this.node.getChildByName(\"Game\").getChildByName(\"propWindow\").active = false;\r\n }\r\n\r\n update(dt) {\r\n\r\n }\r\n}\r\n"]} \ No newline at end of file diff --git a/temp/quick-scripts/src/assets/shop/script/item.js.map b/temp/quick-scripts/src/assets/shop/script/item.js.map index 42d5b3f..ffa4cec 100644 --- a/temp/quick-scripts/src/assets/shop/script/item.js.map +++ b/temp/quick-scripts/src/assets/shop/script/item.js.map @@ -1 +1 @@ -{"version":3,"sources":["assets\\shop\\script\\item.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;AAEM,IAAA,KAAwB,EAAE,CAAC,UAAU,EAAnC,OAAO,aAAA,EAAE,QAAQ,cAAkB,CAAC;AAG5C;IAAsC,4BAAY;IAAlD;QAAA,qEA2BC;QAxBG,WAAK,GAAa,IAAI,CAAC;QAGvB,UAAI,GAAW,OAAO,CAAC;;QAoBvB,iBAAiB;IACrB,CAAC;IApBG,wBAAwB;IAExB,eAAe;IAEf,wBAAK,GAAL;IAEA,CAAC;IAED,QAAQ;IACR,0BAAO,GAAP,UAAQ,QAAQ;QACZ,4CAA4C;QAC5C,gDAAgD;QAChD,cAAc;QACd,IAAI;QACJ,yEAAyE;QACzE,6BAA6B;QAC7B,yCAAyC;IAC7C,CAAC;IArBD;QADC,QAAQ,CAAC,EAAE,CAAC,KAAK,CAAC;2CACI;IAGvB;QADC,QAAQ;0CACc;IANN,QAAQ;QAD5B,OAAO;OACa,QAAQ,CA2B5B;IAAD,eAAC;CA3BD,AA2BC,CA3BqC,EAAE,CAAC,SAAS,GA2BjD;kBA3BoB,QAAQ","file":"","sourceRoot":"/","sourcesContent":["\n\nconst { ccclass, property } = cc._decorator;\n\n@ccclass\nexport default class NewClass extends cc.Component {\n\n @property(cc.Label)\n label: cc.Label = null;\n\n @property\n text: string = 'hello';\n // LIFE-CYCLE CALLBACKS:\n\n // onLoad () {}\n\n start() {\n\n }\n\n //购买商品道具\n buyProp(propName) {\n // if(cc.fx.GameConfig.GM_INFO.coin < 1500){\n // MiniGameSdk.API.showToast(\"金币不足,无法购买道具\");\n // return;\n // }\n // let propWindow = this.node.parent.parent.getChildByName(\"propWindow\");\n // propWindow.active = false;\n // cc.fx.GameConfig.GM_INFO.coin -= 1500;\n }\n\n // update (dt) {}\n}\n"]} \ No newline at end of file +{"version":3,"sources":["assets\\shop\\script\\item.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;AAEM,IAAA,KAAwB,EAAE,CAAC,UAAU,EAAnC,OAAO,aAAA,EAAE,QAAQ,cAAkB,CAAC;AAG5C;IAAsC,4BAAY;IAAlD;QAAA,qEA2BC;QAxBG,WAAK,GAAa,IAAI,CAAC;QAGvB,UAAI,GAAW,OAAO,CAAC;;QAoBvB,iBAAiB;IACrB,CAAC;IApBG,wBAAwB;IAExB,eAAe;IAEf,wBAAK,GAAL;IAEA,CAAC;IAED,QAAQ;IACR,0BAAO,GAAP,UAAQ,QAAQ;QACZ,4CAA4C;QAC5C,gDAAgD;QAChD,cAAc;QACd,IAAI;QACJ,yEAAyE;QACzE,6BAA6B;QAC7B,yCAAyC;IAC7C,CAAC;IArBD;QADC,QAAQ,CAAC,EAAE,CAAC,KAAK,CAAC;2CACI;IAGvB;QADC,QAAQ;0CACc;IANN,QAAQ;QAD5B,OAAO;OACa,QAAQ,CA2B5B;IAAD,eAAC;CA3BD,AA2BC,CA3BqC,EAAE,CAAC,SAAS,GA2BjD;kBA3BoB,QAAQ","file":"","sourceRoot":"/","sourcesContent":["\r\n\r\nconst { ccclass, property } = cc._decorator;\r\n\r\n@ccclass\r\nexport default class NewClass extends cc.Component {\r\n\r\n @property(cc.Label)\r\n label: cc.Label = null;\r\n\r\n @property\r\n text: string = 'hello';\r\n // LIFE-CYCLE CALLBACKS:\r\n\r\n // onLoad () {}\r\n\r\n start() {\r\n\r\n }\r\n\r\n //购买商品道具\r\n buyProp(propName) {\r\n // if(cc.fx.GameConfig.GM_INFO.coin < 1500){\r\n // MiniGameSdk.API.showToast(\"金币不足,无法购买道具\");\r\n // return;\r\n // }\r\n // let propWindow = this.node.parent.parent.getChildByName(\"propWindow\");\r\n // propWindow.active = false;\r\n // cc.fx.GameConfig.GM_INFO.coin -= 1500;\r\n }\r\n\r\n // update (dt) {}\r\n}\r\n"]} \ No newline at end of file diff --git a/temp/quick-scripts/src/assets/shop/script/shop.js.map b/temp/quick-scripts/src/assets/shop/script/shop.js.map index 0e61fc5..8a9f08a 100644 --- a/temp/quick-scripts/src/assets/shop/script/shop.js.map +++ b/temp/quick-scripts/src/assets/shop/script/shop.js.map @@ -1 +1 @@ -{"version":3,"sources":["assets\\shop\\script\\shop.ts"],"names":[],"mappings":"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","file":"","sourceRoot":"/","sourcesContent":["import List from \"../../Script/module/RankList/List\";\n\nconst { ccclass, property } = cc._decorator;\n\n@ccclass\nexport default class NewClass extends cc.Component {\n //商店界面\n @property(cc.Node)\n shop: cc.Node = null;\n //商品列表\n @property(cc.Node)\n itemList: cc.Node = null;\n // onLoad () {}\n\n start() {\n this.openShop();\n }\n //打开商店界面\n openShop() {\n // 商品数据数组\n const products = [\n { product_id: \"gold_pack_1\", name: \"金币包1\", price: 600, title: \"3x2六档金币\" },\n { product_id: \"gold_pack_2\", name: \"金币包2\", price: 3600, title: \"\" },\n { product_id: \"gold_pack_3\", name: \"金币包3\", price: 6800, title: \"\" },\n { product_id: \"gold_pack_4\", name: \"金币包4\", price: 12800, title: \"\" },\n { product_id: \"gold_pack_5\", name: \"金币包5\", price: 32800, title: \"\" },\n { product_id: \"gold_pack_6\", name: \"金币包6\", price: 64800, title: \"\" },\n { product_id: \"unlimited_health_bundle_1\", name: \"无限体力组合包1\", price: 1800, title: \"3个横版礼包\" },\n { product_id: \"unlimited_health_bundle_2\", name: \"无限体力组合包2\", price: 6600, title: \"\" }\n ];\n for (let i = 1; i <= 8 && i < this.itemList.children.length; i++) {\n const spriteComp = this.itemList.children[i].children[0].getComponent(cc.Sprite);\n const price = this.itemList.children[i].children[1].getComponent(cc.Label);\n const title = this.itemList.children[i].children[2].getComponent(cc.Label);\n const product = products[i - 1];\n if (spriteComp && product) {\n // TODO: 根据 product_id 或 name 设置 spriteComp.spriteFrame\n }\n if (price && product) {\n price.string = (product.price / 100).toString() + \"元\";\n }\n if (title && product) {\n title.string = product.name;\n }\n }\n }\n\n\n //关闭商店界面\n closeShop() {\n //销毁预制体\n this.shop.destroy();\n }\n\n // update (dt) {}\n}\n"]} \ No newline at end of file +{"version":3,"sources":["assets\\shop\\script\\shop.ts"],"names":[],"mappings":"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","file":"","sourceRoot":"/","sourcesContent":["import List from \"../../Script/module/RankList/List\";\r\n\r\nconst { ccclass, property } = cc._decorator;\r\n\r\n@ccclass\r\nexport default class NewClass extends cc.Component {\r\n //商店界面\r\n @property(cc.Node)\r\n shop: cc.Node = null;\r\n //商品列表\r\n @property(cc.Node)\r\n itemList: cc.Node = null;\r\n // onLoad () {}\r\n\r\n start() {\r\n this.openShop();\r\n }\r\n //打开商店界面\r\n openShop() {\r\n // 商品数据数组\r\n const products = [\r\n { product_id: \"gold_pack_1\", name: \"金币包1\", price: 600, title: \"3x2六档金币\" },\r\n { product_id: \"gold_pack_2\", name: \"金币包2\", price: 3600, title: \"\" },\r\n { product_id: \"gold_pack_3\", name: \"金币包3\", price: 6800, title: \"\" },\r\n { product_id: \"gold_pack_4\", name: \"金币包4\", price: 12800, title: \"\" },\r\n { product_id: \"gold_pack_5\", name: \"金币包5\", price: 32800, title: \"\" },\r\n { product_id: \"gold_pack_6\", name: \"金币包6\", price: 64800, title: \"\" },\r\n { product_id: \"unlimited_health_bundle_1\", name: \"无限体力组合包1\", price: 1800, title: \"3个横版礼包\" },\r\n { product_id: \"unlimited_health_bundle_2\", name: \"无限体力组合包2\", price: 6600, title: \"\" }\r\n ];\r\n for (let i = 1; i <= 8 && i < this.itemList.children.length; i++) {\r\n const spriteComp = this.itemList.children[i].children[0].getComponent(cc.Sprite);\r\n const price = this.itemList.children[i].children[1].getComponent(cc.Label);\r\n const title = this.itemList.children[i].children[2].getComponent(cc.Label);\r\n const product = products[i - 1];\r\n if (spriteComp && product) {\r\n // TODO: 根据 product_id 或 name 设置 spriteComp.spriteFrame\r\n }\r\n if (price && product) {\r\n price.string = (product.price / 100).toString() + \"元\";\r\n }\r\n if (title && product) {\r\n title.string = product.name;\r\n }\r\n }\r\n }\r\n\r\n\r\n //关闭商店界面\r\n closeShop() {\r\n //销毁预制体\r\n this.shop.destroy();\r\n }\r\n\r\n // update (dt) {}\r\n}\r\n"]} \ No newline at end of file diff --git a/temp/startup.json b/temp/startup.json index aa47424..088307f 100644 --- a/temp/startup.json +++ b/temp/startup.json @@ -1,5 +1 @@ -<<<<<<< HEAD -{"pid":28072} -======= -{"pid":40856} ->>>>>>> 0a31a7a5abc2c505bf743aa596e1c765a0405152 +{"pid":20800}